ZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2JpdF9yZWZlcmVuY2UgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19iaXRfcmVmZXJlbmNlCmluZGV4IGMyMDhhZjIuLjRmZDFkMmYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2JpdF9yZWZlcmVuY2UKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fYml0X3JlZmVyZW5jZQpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fYnNkX2xvY2FsZV9kZWZhdWx0cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fYnNkX2xvY2FsZV9kZWZhdWx0cy5oCmluZGV4IGNiYzQwN2QuLjJhY2UyYTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2JzZF9sb2NhbGVfZGVmYXVsdHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19ic2RfbG9jYWxlX2RlZmF1bHRzLmgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBfX2JzZF9sb2NhbGVfZGVmYXVsdHMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLyBUaGUgQlNEcyBoYXZlIGxvdHMgb2YgKl9sIGZ1bmN0aW9ucy4gIFdlIGRvbid0IHdhbnQgdG8gZGVmaW5lIHRob3NlIHN5bWJvbHMKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2JzZF9sb2NhbGVfZmFsbGJhY2tzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19ic2RfbG9jYWxlX2ZhbGxiYWNrcy5oCmluZGV4IDMwOTdiMDEuLmE4MDdmZTAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2JzZF9sb2NhbGVfZmFsbGJhY2tzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fYnNkX2xvY2FsZV9mYWxsYmFja3MuaApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIF9fYnNkX2xvY2FsZV9mYWxsYmFja3MuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vIFRoZSBCU0RzIGhhdmUgbG90cyBvZiAqX2wgZnVuY3Rpb25zLiAgVGhpcyBmaWxlIHByb3ZpZGVzIHJlaW1wbGVtZW50YXRpb25zCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19jb25maWcgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19jb25maWcKaW5kZXggYmFiYWJiYy4uM2NhNjYxNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fY29uZmlnCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2NvbmZpZwpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gX19jb25maWcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMzMsNyArMzIsNyBAQAogIyAgZGVmaW5lIF9HTlVDX1ZFUl9ORVcgMAogI2VuZGlmCiAKLSNkZWZpbmUgX0xJQkNQUF9WRVJTSU9OIDgwMDAKKyNkZWZpbmUgX0xJQkNQUF9WRVJTSU9OIDkwMDAKIAogI2lmbmRlZiBfTElCQ1BQX0FCSV9WRVJTSU9OCiAjICBkZWZpbmUgX0xJQkNQUF9BQklfVkVSU0lPTiAxCkBAIC05NSw2ICs5NCw4IEBACiAvLyBVc2UgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGludGVnZXIgdHlwZSB0byByZXByZXNlbnQgdGhlIGluZGV4IG9mIHRoZSB2YXJpYW50LgogLy8gUHJldmlvdXNseSBsaWJjKysgdXNlZCAidW5zaWduZWQgaW50IiBleGNsdXNpdmx5LgogIyAgZGVmaW5lIF9MSUJDUFBfQUJJX1ZBUklBTlRfSU5ERVhfVFlQRV9PUFRJTUlaQVRJT04KKy8vIFVuc3RhYmxlIGF0dGVtcHQgdG8gcHJvdmlkZSBhIG1vcmUgb3B0aW1pemVkIHN0ZDo6ZnVuY3Rpb24KKyMgIGRlZmluZSBfTElCQ1BQX0FCSV9PUFRJTUlaRURfRlVOQ1RJT04KICNlbGlmIF9MSUJDUFBfQUJJX1ZFUlNJT04gPT0gMQogIyAgaWYgIWRlZmluZWQoX0xJQkNQUF9PQkpFQ1RfRk9STUFUX0NPRkYpCiAvLyBFbmFibGUgY29tcGlsaW5nIGNvcGllcyBvZiBub3cgaW5saW5lIG1ldGhvZHMgaW50byB0aGUgZHlsaWIgdG8gc3VwcG9ydApAQCAtMTE5LDcgKzEyMCw5IEBACiAjZGVmaW5lIF9MSUJDUFBfQ09OQ0FUMShfTElCQ1BQX1gsX0xJQkNQUF9ZKSBfTElCQ1BQX1gjI19MSUJDUFBfWQogI2RlZmluZSBfTElCQ1BQX0NPTkNBVChfTElCQ1BQX1gsX0xJQkNQUF9ZKSBfTElCQ1BQX0NPTkNBVDEoX0xJQkNQUF9YLF9MSUJDUFBfWSkKIAotI2RlZmluZSBfTElCQ1BQX05BTUVTUEFDRSBfTElCQ1BQX0NPTkNBVChfXyxfTElCQ1BQX0FCSV9WRVJTSU9OKQorI2lmbmRlZiBfTElCQ1BQX0FCSV9OQU1FU1BBQ0UKKyMgZGVmaW5lIF9MSUJDUFBfQUJJX05BTUVTUEFDRSBfTElCQ1BQX0NPTkNBVChfXyxfTElCQ1BQX0FCSV9WRVJTSU9OKQorI2VuZGlmCiAKICNpZiBfX2NwbHVzcGx1cyA8IDIwMTEwM0wKICNkZWZpbmUgX0xJQkNQUF9DWFgwM19MQU5HCkBAIC0zNDksNiArMzUyLDE4IEBACiAjICBlbmRpZiAvLyBfX2xpbnV4X18KICNlbmRpZgogCisjaWZuZGVmIF9MSUJDUFBfQ1hYMDNfTEFORworIyBkZWZpbmUgX0xJQkNQUF9BTElHTk9GKF9UcCkgYWxpZ25vZihfVHApCisjZWxpZiBkZWZpbmVkKF9MSUJDUFBfQ09NUElMRVJfQ0xBTkcpCisjIGRlZmluZSBfTElCQ1BQX0FMSUdOT0YoX1RwKSBfQWxpZ25vZihfVHApCisjZWxzZQorLy8gVGhpcyBkZWZpbml0aW9uIGlzIHBvdGVudGlhbGx5IGJ1Z2d5LCBidXQgaXQncyBvbmx5IHRha2VuIHdpdGggR0NDIGluIEMrKzAzLAorLy8gd2hpY2ggd2UgYmFyZWx5IHN1cHBvcnQgYW55d2F5LiBTZWUgbGx2bS5vcmcvUFIzOTcxMworIyBkZWZpbmUgX0xJQkNQUF9BTElHTk9GKF9UcCkgX19hbGlnbm9mKF9UcCkKKyNlbmRpZgorCisjZGVmaW5lIF9MSUJDUFBfUFJFRkVSUkVEX0FMSUdOT0YoX1RwKSBfX2FsaWdub2YoX1RwKQorCiAjaWYgZGVmaW5lZChfTElCQ1BQX0NPTVBJTEVSX0NMQU5HKQogCiAvLyBfTElCQ1BQX0FMVEVSTkFURV9TVFJJTkdfTEFZT1VUIGlzIGFuIG9sZCBuYW1lIGZvcgpAQCAtMzYzLDcgKzM3OCw3IEBACiAjICBkZWZpbmUgX0FMSUdOQVNfVFlQRSh4KSBhbGlnbmFzKHgpCiAjICBkZWZpbmUgX0FMSUdOQVMoeCkgYWxpZ25hcyh4KQogI2Vsc2UKLSMgIGRlZmluZSBfQUxJR05BU19UWVBFKHgpIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKF9fYWxpZ25vZih4KSkpKQorIyAgZGVmaW5lIF9BTElHTkFTX1RZUEUoeCkgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oX0xJQkNQUF9BTElHTk9GKHgpKSkpCiAjICBkZWZpbmUgX0FMSUdOQVMoeCkgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oeCkpKQogI2VuZGlmCiAKQEAgLTQ2MywxNiArNDc4LDYgQEAKICNkZWZpbmUgX0xJQkNQUF9JU19MSVRFUkFMKFQpIF9faXNfbGl0ZXJhbChUKQogI2VuZGlmCiAKLS8vIElubGluZSBuYW1lc3BhY2VzIGFyZSBhdmFpbGFibGUgaW4gQ2xhbmcgcmVnYXJkbGVzcyBvZiBDKysgZGlhbGVjdC4KLSNkZWZpbmUgX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfU1REIG5hbWVzcGFjZSBzdGQge2lubGluZSBuYW1lc3BhY2UgX0xJQkNQUF9OQU1FU1BBQ0UgewotI2RlZmluZSBfTElCQ1BQX0VORF9OQU1FU1BBQ0VfU1REICB9IH0KLSNkZWZpbmUgX1ZTVEQgc3RkOjpfTElCQ1BQX05BTUVTUEFDRQotCi1uYW1lc3BhY2Ugc3RkIHsKLSAgaW5saW5lIG5hbWVzcGFjZSBfTElCQ1BQX05BTUVTUEFDRSB7Ci0gIH0KLX0KLQogI2lmICFkZWZpbmVkKF9MSUJDUFBfSEFTX05PX0FTQU4pICYmICFfX2hhc19mZWF0dXJlKGFkZHJlc3Nfc2FuaXRpemVyKQogI2RlZmluZSBfTElCQ1BQX0hBU19OT19BU0FOCiAjZW5kaWYKQEAgLTQ5MiwxMCArNDk3LDE1IEBACiAKICNkZWZpbmUgX0xJQkNQUF9BTFdBWVNfSU5MSU5FIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpCiAKKy8vIE5vIGFwcGxlIGNvbXBpbGVycyBzdXBwb3J0ICIiZCBhbmQgIiJ5IGF0IHRoaXMgdGltZS4KKyNpZiBfTElCQ1BQX0NMQU5HX1ZFUiA8IDgwMCB8fCBkZWZpbmVkKF9fYXBwbGVfYnVpbGRfdmVyc2lvbl9fKQorI2RlZmluZQlfTElCQ1BQX0hBU19OT19DWFgyMF9DSFJPTk9fTElURVJBTFMKKyNlbmRpZgorCiAjZWxpZiBkZWZpbmVkKF9MSUJDUFBfQ09NUElMRVJfR0NDKQogCiAjZGVmaW5lIF9BTElHTkFTKHgpIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKHgpKSkKLSNkZWZpbmUgX0FMSUdOQVNfVFlQRSh4KSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyhfX2FsaWdub2YoeCkpKSkKKyNkZWZpbmUgX0FMSUdOQVNfVFlQRSh4KSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyhfTElCQ1BQX0FMSUdOT0YoeCkpKSkKIAogI2RlZmluZSBfTElCQ1BQX05PUkVUVVJOIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSkKIApAQCAtNTYyLDE1ICs1NzIsNiBAQAogCiAjZW5kaWYgIC8vIF9fR1hYX0VYUEVSSU1FTlRBTF9DWFgwWF9fCiAKLSNkZWZpbmUgX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfU1REIG5hbWVzcGFjZSBzdGQgeyBpbmxpbmUgbmFtZXNwYWNlIF9MSUJDUFBfTkFNRVNQQUNFIHsKLSNkZWZpbmUgX0xJQkNQUF9FTkRfTkFNRVNQQUNFX1NURCAgfSB9Ci0jZGVmaW5lIF9WU1REIHN0ZDo6X0xJQkNQUF9OQU1FU1BBQ0UKLQotbmFtZXNwYWNlIHN0ZCB7Ci0gIGlubGluZSBuYW1lc3BhY2UgX0xJQkNQUF9OQU1FU1BBQ0UgewotICB9Ci19Ci0KICNpZiAhZGVmaW5lZChfTElCQ1BQX0hBU19OT19BU0FOKSAmJiAhZGVmaW5lZChfX1NBTklUSVpFX0FERFJFU1NfXykKICNkZWZpbmUgX0xJQkNQUF9IQVNfTk9fQVNBTgogI2VuZGlmCkBAIC02MDYsMTMgKzYwNyw2IEBACiAjZGVmaW5lIF9BTElHTkFTX1RZUEUoeCkgYWxpZ25hcyh4KQogI2RlZmluZSBfTElCQ1BQX0hBU19OT19WQVJJQURJQ1MKIAotI2RlZmluZSBfTElCQ1BQX0JFR0lOX05BTUVTUEFDRV9TVEQgbmFtZXNwYWNlIHN0ZCB7Ci0jZGVmaW5lIF9MSUJDUFBfRU5EX05BTUVTUEFDRV9TVEQgIH0KLSNkZWZpbmUgX1ZTVEQgc3RkCi0KLW5hbWVzcGFjZSBzdGQgewotfQotCiAjZGVmaW5lIF9MSUJDUFBfV0VBSwogCiAjZGVmaW5lIF9MSUJDUFBfSEFTX05PX0FTQU4KQEAgLTYyNCw3ICs2MTgsNyBAQAogI2VsaWYgZGVmaW5lZChfTElCQ1BQX0NPTVBJTEVSX0lCTSkKIAogI2RlZmluZSBfQUxJR05BUyh4KSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0jZGVmaW5lIF9BTElHTkFTX1RZUEUoeCkgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oX19hbGlnbm9mKHgpKSkpCisjZGVmaW5lIF9BTElHTkFTX1RZUEUoeCkgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oX0xJQkNQUF9BTElHTk9GKHgpKSkpCiAjZGVmaW5lIF9BVFRSSUJVVEUoeCkgX19hdHRyaWJ1dGVfXygoeCkpCiAjZGVmaW5lIF9MSUJDUFBfTk9SRVRVUk4gX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKQogCkBAIC02NDAsMTUgKzYzNCw2IEBACiAjZGVmaW5lIF9fTVVMVElMT0NBTEVfQVBJCiAjZW5kaWYKIAotI2RlZmluZSBfTElCQ1BQX0JFR0lOX05BTUVTUEFDRV9TVEQgbmFtZXNwYWNlIHN0ZCB7aW5saW5lIG5hbWVzcGFjZSBfTElCQ1BQX05BTUVTUEFDRSB7Ci0jZGVmaW5lIF9MSUJDUFBfRU5EX05BTUVTUEFDRV9TVEQgIH0gfQotI2RlZmluZSBfVlNURCBzdGQ6Ol9MSUJDUFBfTkFNRVNQQUNFCi0KLW5hbWVzcGFjZSBzdGQgewotICBpbmxpbmUgbmFtZXNwYWNlIF9MSUJDUFBfTkFNRVNQQUNFIHsKLSAgfQotfQotCiAjZGVmaW5lIF9MSUJDUFBfSEFTX05PX0FTQU4KIAogI2RlZmluZSBfTElCQ1BQX0FMV0FZU19JTkxJTkUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkKQEAgLTY1NywyMCArNjQyLDYgQEAKIAogI2VuZGlmIC8vIF9MSUJDUFBfQ09NUElMRVJfW0NMQU5HfEdDQ3xNU1ZDfElCTV0KIAotI2lmIF9MSUJDUFBfU1REX1ZFUiA+PSAxNwotI2RlZmluZSBfTElCQ1BQX0JFR0lOX05BTUVTUEFDRV9GSUxFU1lTVEVNIFwKLSAgX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfU1REIGlubGluZSBuYW1lc3BhY2UgX19mcyB7IG5hbWVzcGFjZSBmaWxlc3lzdGVtIHsKLSNlbHNlCi0jZGVmaW5lIF9MSUJDUFBfQkVHSU5fTkFNRVNQQUNFX0ZJTEVTWVNURU0gXAotICBfTElCQ1BQX0JFR0lOX05BTUVTUEFDRV9TVEQgbmFtZXNwYWNlIF9fZnMgeyBuYW1lc3BhY2UgZmlsZXN5c3RlbSB7Ci0jZW5kaWYKLQotI2RlZmluZSBfTElCQ1BQX0VORF9OQU1FU1BBQ0VfRklMRVNZU1RFTSBcCi0gIF9MSUJDUFBfRU5EX05BTUVTUEFDRV9TVEQgfSB9Ci0KLSNkZWZpbmUgX1ZTVERfRlMgX1ZTVEQ6Ol9fZnM6OmZpbGVzeXN0ZW0KLQotCiAjaWYgZGVmaW5lZChfTElCQ1BQX09CSkVDVF9GT1JNQVRfQ09GRikKIAogI2lmZGVmIF9ETEwKQEAgLTY4NCwyMSArNjU1LDIzIEBACiAjICBkZWZpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfVFlQRV9WSVMKICMgIGRlZmluZSBfTElCQ1BQX0NMQVNTX1RFTVBMQVRFX0lOU1RBTlRJQVRJT05fVklTCiAjICBkZWZpbmUgX0xJQkNQUF9PVkVSUklEQUJMRV9GVU5DX1ZJUworIyAgZGVmaW5lIF9MSUJDUFBfRVhQT1JURURfRlJPTV9BQkkKICNlbGlmIGRlZmluZWQoX0xJQkNQUF9CVUlMRElOR19MSUJSQVJZKQogIyAgZGVmaW5lIF9MSUJDUFBfRExMX1ZJUyBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKICMgIGRlZmluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9UWVBFX1ZJUwogIyAgZGVmaW5lIF9MSUJDUFBfQ0xBU1NfVEVNUExBVEVfSU5TVEFOVElBVElPTl9WSVMgX0xJQkNQUF9ETExfVklTCiAjICBkZWZpbmUgX0xJQkNQUF9PVkVSUklEQUJMRV9GVU5DX1ZJUyBfTElCQ1BQX0RMTF9WSVMKKyMgIGRlZmluZSBfTElCQ1BQX0VYUE9SVEVEX0ZST01fQUJJIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQogI2Vsc2UKICMgIGRlZmluZSBfTElCQ1BQX0RMTF9WSVMgX19kZWNsc3BlYyhkbGxpbXBvcnQpCiAjICBkZWZpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfVFlQRV9WSVMgX0xJQkNQUF9ETExfVklTCiAjICBkZWZpbmUgX0xJQkNQUF9DTEFTU19URU1QTEFURV9JTlNUQU5USUFUSU9OX1ZJUwogIyAgZGVmaW5lIF9MSUJDUFBfT1ZFUlJJREFCTEVfRlVOQ19WSVMKKyMgIGRlZmluZSBfTElCQ1BQX0VYUE9SVEVEX0ZST01fQUJJIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VuZGlmCiAKICNkZWZpbmUgX0xJQkNQUF9UWVBFX1ZJUyAgICAgICAgICAgIF9MSUJDUFBfRExMX1ZJUwogI2RlZmluZSBfTElCQ1BQX0ZVTkNfVklTICAgICAgICAgICAgX0xJQkNQUF9ETExfVklTCi0jZGVmaW5lIF9MSUJDUFBfRVhURVJOX1ZJUyAgICAgICAgICBfTElCQ1BQX0RMTF9WSVMKICNkZWZpbmUgX0xJQkNQUF9FWENFUFRJT05fQUJJICAgICAgIF9MSUJDUFBfRExMX1ZJUwogI2RlZmluZSBfTElCQ1BQX0hJRERFTgogI2RlZmluZSBfTElCQ1BQX01FVEhPRF9URU1QTEFURV9JTVBMSUNJVF9JTlNUQU5USUFUSU9OX1ZJUwpAQCAtNzUyLDggKzcyNSwxMiBAQAogIyAgZW5kaWYKICNlbmRpZgogCi0jaWZuZGVmIF9MSUJDUFBfRVhURVJOX1ZJUwotI2RlZmluZSBfTElCQ1BQX0VYVEVSTl9WSVMKKyNpZm5kZWYgX0xJQkNQUF9FWFBPUlRFRF9GUk9NX0FCSQorIyAgaWYgIWRlZmluZWQoX0xJQkNQUF9ESVNBQkxFX1ZJU0lCSUxJVFlfQU5OT1RBVElPTlMpCisjICAgIGRlZmluZSBfTElCQ1BQX0VYUE9SVEVEX0ZST01fQUJJIF9fYXR0cmlidXRlX18oKF9fdmlzaWJpbGl0eV9fKCJkZWZhdWx0IikpKQorIyAgZWxzZQorIyAgICBkZWZpbmUgX0xJQkNQUF9FWFBPUlRFRF9GUk9NX0FCSQorIyAgZW5kaWYKICNlbmRpZgogCiAjaWZuZGVmIF9MSUJDUFBfT1ZFUlJJREFCTEVfRlVOQ19WSVMKQEAgLTc5NCw2ICs3NzEsMTUgQEAKICMgIGRlZmluZSBfTElCQ1BQX0lOVEVSTkFMX0xJTktBR0UgX0xJQkNQUF9BTFdBWVNfSU5MSU5FCiAjZW5kaWYKIAorI2lmIF9faGFzX2F0dHJpYnV0ZShleGNsdWRlX2Zyb21fZXhwbGljaXRfaW5zdGFudGlhdGlvbikKKyMgIGRlZmluZSBfTElCQ1BQX0VYQ0xVREVfRlJPTV9FWFBMSUNJVF9JTlNUQU5USUFUSU9OIF9fYXR0cmlidXRlX18gKChfX2V4Y2x1ZGVfZnJvbV9leHBsaWNpdF9pbnN0YW50aWF0aW9uX18pKQorI2Vsc2UKKyAgIC8vIFRyeSB0byBhcHByb3hpbWF0ZSB0aGUgZWZmZWN0IG9mIGV4Y2x1ZGVfZnJvbV9leHBsaWNpdF9pbnN0YW50aWF0aW9uCisgICAvLyAod2hpY2ggaXMgdGhhdCBlbnRpdGllcyBhcmUgbm90IGFzc3VtZWQgdG8gYmUgcHJvdmlkZWQgYnkgZXhwbGljaXQKKyAgIC8vIHRlbXBsYXRlIGluc3RhbnRpdGF0aW9ucyBpbiB0aGUgZHlsaWIpIGJ5IGFsd2F5cyBpbmxpbmluZyB0aG9zZSBlbnRpdGllcy4KKyMgIGRlZmluZSBfTElCQ1BQX0VYQ0xVREVfRlJPTV9FWFBMSUNJVF9JTlNUQU5USUFUSU9OIF9MSUJDUFBfQUxXQVlTX0lOTElORQorI2VuZGlmCisKICNpZm5kZWYgX0xJQkNQUF9ISURFX0ZST01fQUJJX1BFUl9UVQogIyAgaWZuZGVmIF9MSUJDUFBfSElERV9GUk9NX0FCSV9QRVJfVFVfQllfREVGQVVMVAogIyAgICBkZWZpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX1BFUl9UVSAwCkBAIC04MDYsNyArNzkyLDcgQEAKICMgIGlmIF9MSUJDUFBfSElERV9GUk9NX0FCSV9QRVJfVFUKICMgICAgZGVmaW5lIF9MSUJDUFBfSElERV9GUk9NX0FCSSBfTElCQ1BQX0hJRERFTiBfTElCQ1BQX0lOVEVSTkFMX0xJTktBR0UKICMgIGVsc2UKLSMgICAgZGVmaW5lIF9MSUJDUFBfSElERV9GUk9NX0FCSSBfTElCQ1BQX0hJRERFTiBfTElCQ1BQX0FMV0FZU19JTkxJTkUKKyMgICAgZGVmaW5lIF9MSUJDUFBfSElERV9GUk9NX0FCSSBfTElCQ1BQX0hJRERFTiBfTElCQ1BQX0VYQ0xVREVfRlJPTV9FWFBMSUNJVF9JTlNUQU5USUFUSU9OCiAjICBlbmRpZgogI2VuZGlmCiAKQEAgLTgyMiw3ICs4MDgsMjUgQEAKIAogLy8gSnVzdCBzbyB3ZSBjYW4gbWlncmF0ZSB0byB0aGUgbmV3IG1hY3JvcyBncmFkdWFsbHkuCiAjZGVmaW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgX0xJQkNQUF9ISURFX0ZST01fQUJJCi0jZGVmaW5lIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFX0lOTElORV9WSVNJQklMSVRZIF9MSUJDUFBfSElERV9GUk9NX0FCSV9BRlRFUl9WMQorCisvLyBJbmxpbmUgbmFtZXNwYWNlcyBhcmUgYXZhaWxhYmxlIGluIENsYW5nL0dDQy9NU1ZDIHJlZ2FyZGxlc3Mgb2YgQysrIGRpYWxlY3QuCisjZGVmaW5lIF9MSUJDUFBfQkVHSU5fTkFNRVNQQUNFX1NURCBuYW1lc3BhY2Ugc3RkIHsgaW5saW5lIG5hbWVzcGFjZSBfTElCQ1BQX0FCSV9OQU1FU1BBQ0UgeworI2RlZmluZSBfTElCQ1BQX0VORF9OQU1FU1BBQ0VfU1REICB9IH0KKyNkZWZpbmUgX1ZTVEQgc3RkOjpfTElCQ1BQX0FCSV9OQU1FU1BBQ0UKK19MSUJDUFBfQkVHSU5fTkFNRVNQQUNFX1NURCBfTElCQ1BQX0VORF9OQU1FU1BBQ0VfU1RECisKKyNpZiBfTElCQ1BQX1NURF9WRVIgPj0gMTcKKyNkZWZpbmUgX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfRklMRVNZU1RFTSBcCisgIF9MSUJDUFBfQkVHSU5fTkFNRVNQQUNFX1NURCBpbmxpbmUgbmFtZXNwYWNlIF9fZnMgeyBuYW1lc3BhY2UgZmlsZXN5c3RlbSB7CisjZWxzZQorI2RlZmluZSBfTElCQ1BQX0JFR0lOX05BTUVTUEFDRV9GSUxFU1lTVEVNIFwKKyAgX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfU1REIG5hbWVzcGFjZSBfX2ZzIHsgbmFtZXNwYWNlIGZpbGVzeXN0ZW0geworI2VuZGlmCisKKyNkZWZpbmUgX0xJQkNQUF9FTkRfTkFNRVNQQUNFX0ZJTEVTWVNURU0gXAorICBfTElCQ1BQX0VORF9OQU1FU1BBQ0VfU1REIH0gfQorCisjZGVmaW5lIF9WU1REX0ZTIF9WU1REOjpfX2ZzOjpmaWxlc3lzdGVtCiAKICNpZm5kZWYgX0xJQkNQUF9QUkVGRVJSRURfT1ZFUkxPQUQKICMgIGlmIF9faGFzX2F0dHJpYnV0ZShfX2VuYWJsZV9pZl9fKQpAQCAtOTgxLDEwICs5ODUsMTggQEAKICNkZWZpbmUgX0RFQ0xBUkVfQzk5X0xEQkxfTUFUSCAxCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoX0xJQkNQUF9BQklfTUlDUk9TT0ZUKSAmJiAhZGVmaW5lZChfTElCQ1BQX05PX1ZDUlVOVElNRSkKKyMgIGRlZmluZSBfTElCQ1BQX0RFRkVSX05FV19UT19WQ1JVTlRJTUUKKyNlbmRpZgorCiAvLyBJZiB3ZSBhcmUgZ2V0dGluZyBvcGVyYXRvciBuZXcgZnJvbSB0aGUgTVNWQyBDUlQsIHRoZW4gYWxsb2NhdGlvbiBvdmVybG9hZHMKIC8vIGZvciBhbGlnbl92YWxfdCB3ZXJlIGFkZGVkIGluIDE5LjEyLCBha2EgVlMgMjAxNyB2ZXJzaW9uIDE1LjMuCiAjaWYgZGVmaW5lZChfTElCQ1BQX01TVkNSVCkgJiYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPCAxOTEyCi0jZGVmaW5lIF9MSUJDUFBfSEFTX05PX0FMSUdORURfQUxMT0NBVElPTgorIyAgZGVmaW5lIF9MSUJDUFBfSEFTX05PX0xJQlJBUllfQUxJR05FRF9BTExPQ0FUSU9OCisjZWxpZiBkZWZpbmVkKF9MSUJDUFBfREVGRVJfTkVXX1RPX1ZDUlVOVElNRSkgJiYgIWRlZmluZWQoX19jcHBfYWxpZ25lZF9uZXcpCisgICAvLyBXZSdyZSBkZWZlcmluZyB0byBNaWNyb3NvZnQncyBTVEwgdG8gcHJvdmlkZSBhbGlnbmVkIG5ldyBldCBhbC4gV2UgZG9uJ3QKKyAgIC8vIGhhdmUgaXQgdW5sZXNzIHRoZSBsYW5ndWFnZSBmZWF0dXJlIHRlc3QgbWFjcm8gaXMgZGVmaW5lZC4KKyMgIGRlZmluZSBfTElCQ1BQX0hBU19OT19MSUJSQVJZX0FMSUdORURfQUxMT0NBVElPTgogI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykKQEAgLTk5MiwxNiArMTAwNCwxMSBAQAogICAgICAgZGVmaW5lZChfX0VOVklST05NRU5UX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEX18pCiAjICAgIGRlZmluZSBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIF9fRU5WSVJPTk1FTlRfTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRURfXwogIyAgZW5kaWYKLSMgIGlmIGRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkKLSMgICAgaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwNjAKLSMgICAgICBkZWZpbmUgX0xJQkNQUF9IQVNfTk9fQUxJR05FRF9BTExPQ0FUSU9OCi0jICAgIGVuZGlmCi0jICBlbmRpZgogI2VuZGlmIC8vIGRlZmluZWQoX19BUFBMRV9fKQogCiAjaWYgIWRlZmluZWQoX0xJQkNQUF9IQVNfTk9fQUxJR05FRF9BTExPQ0FUSU9OKSAmJiBcCi0gICAgIWRlZmluZWQoX0xJQkNQUF9CVUlMRElOR19MSUJSQVJZKSAmJiBcCi0gICAgKCFkZWZpbmVkKF9fY3BwX2FsaWduZWRfbmV3KSB8fCBfX2NwcF9hbGlnbmVkX25ldyA8IDIwMTYwNikKKyAgICAoZGVmaW5lZChfTElCQ1BQX0hBU19OT19MSUJSQVJZX0FMSUdORURfQUxMT0NBVElPTikgfHwgXAorICAgICghZGVmaW5lZChfX2NwcF9hbGlnbmVkX25ldykgfHwgX19jcHBfYWxpZ25lZF9uZXcgPCAyMDE2MDYpKQogIyAgZGVmaW5lIF9MSUJDUFBfSEFTX05PX0FMSUdORURfQUxMT0NBVElPTgogI2VuZGlmCiAKQEAgLTEwMTMsNiArMTAyMCwxMCBAQAogI2RlZmluZSBfTElCQ1BQX1dDVFlQRV9JU19NQVNLCiAjZW5kaWYKIAorI2lmIF9MSUJDUFBfU1REX1ZFUiA8PSAxNyB8fCAhZGVmaW5lZChfX2NwcF9jaGFyOF90KQorI2RlZmluZSBfTElCQ1BQX05PX0hBU19DSEFSOF9UCisjZW5kaWYKKwogLy8gRGVwcmVjYXRpb24gbWFjcm9zLgogLy8gRGVwcmVjYXRpb25zIHdhcm5pbmdzIGFyZSBvbmx5IGVuYWJsZWQgd2hlbiBfTElCQ1BQX0VOQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUyBpcyBkZWZpbmVkLgogI2lmIGRlZmluZWQoX0xJQkNQUF9FTkFCTEVfREVQUkVDQVRJT05fV0FSTklOR1MpCkBAIC0xMTQ5LDYgKzExNjAsNyBAQAogICAgICAgZGVmaW5lZChfX0Z1Y2hzaWFfXykgfHwgXAogICAgICAgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBcCiAgICAgICBkZWZpbmVkKF9fbGludXhfXykgfHwgXAorICAgICAgZGVmaW5lZChfX0dOVV9fKSB8fCBcCiAgICAgICBkZWZpbmVkKF9fQVBQTEVfXykgfHwgXAogICAgICAgZGVmaW5lZChfX0Nsb3VkQUJJX18pIHx8IFwKICAgICAgIGRlZmluZWQoX19zdW5fXykgfHwgXApAQCAtMTI1NCw4ICsxMjY2LDEyIEBACiAjICBkZWZpbmUgX0xJQkNQUF9ESUFHTk9TRV9FUlJPUiguLi4pCiAjZW5kaWYKIAotI2lmIF9faGFzX2F0dHJpYnV0ZShmYWxsdGhvdWdoKSB8fCBfR05VQ19WRVIgPj0gNzAwCiAvLyBVc2UgYSBmdW5jdGlvbiBsaWtlIG1hY3JvIHRvIGltcGx5IHRoYXQgaXQgbXVzdCBiZSBmb2xsb3dlZCBieSBhIHNlbWljb2xvbgorI2lmIF9fY3BsdXNwbHVzID4gMjAxNDAyTCAmJiBfX2hhc19jcHBfYXR0cmlidXRlKGZhbGx0aHJvdWdoKQorIyAgZGVmaW5lIF9MSUJDUFBfRkFMTFRIUk9VR0goKSBbW2ZhbGx0aHJvdWdoXV0KKyNlbGlmIF9faGFzX2NwcF9hdHRyaWJ1dGUoY2xhbmc6OmZhbGx0aHJvdWdoKQorIyAgZGVmaW5lIF9MSUJDUFBfRkFMTFRIUk9VR0goKSBbW2NsYW5nOjpmYWxsdGhyb3VnaF1dCisjZWxpZiBfX2hhc19hdHRyaWJ1dGUoZmFsbHRob3VnaCkgfHwgX0dOVUNfVkVSID49IDcwMAogIyAgZGVmaW5lIF9MSUJDUFBfRkFMTFRIUk9VR0goKSBfX2F0dHJpYnV0ZV9fKChfX2ZhbGx0aHJvdWdoX18pKQogI2Vsc2UKICMgIGRlZmluZSBfTElCQ1BQX0ZBTExUSFJPVUdIKCkgKCh2b2lkKTApCkBAIC0xMzA5LDkgKzEzMjUsMTUgQEAKICAgICAgX19hdHRyaWJ1dGVfXygoYXZhaWxhYmlsaXR5KGlvcyxzdHJpY3QsaW50cm9kdWNlZD0xMC4wKSkpICAgICAgICAgICAgICAgICBcCiAgICAgIF9fYXR0cmlidXRlX18oKGF2YWlsYWJpbGl0eSh0dm9zLHN0cmljdCxpbnRyb2R1Y2VkPTEwLjApKSkgICAgICAgICAgICAgICAgXAogICAgICBfX2F0dHJpYnV0ZV9fKChhdmFpbGFiaWxpdHkod2F0Y2hvcyxzdHJpY3QsaW50cm9kdWNlZD0zLjApKSkKLSMgIGRlZmluZSBfTElCQ1BQX0FWQUlMQUJJTElUWV9CQURfT1BUSU9OQUxfQUNDRVNTIF9fYXR0cmlidXRlX18oKHVuYXZhaWxhYmxlKSkKLSMgIGRlZmluZSBfTElCQ1BQX0FWQUlMQUJJTElUWV9CQURfQVJSQVlfTEVOR1RIIF9fYXR0cmlidXRlX18oKHVuYXZhaWxhYmxlKSkKLSMgIGRlZmluZSBfTElCQ1BQX0FWQUlMQUJJTElUWV9CQURfQU5ZX0NBU1QgX19hdHRyaWJ1dGVfXygodW5hdmFpbGFibGUpKQorIyAgZGVmaW5lIF9MSUJDUFBfQVZBSUxBQklMSVRZX0JBRF9PUFRJT05BTF9BQ0NFU1MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgX19hdHRyaWJ1dGVfXygoYXZhaWxhYmlsaXR5KG1hY29zeCxzdHJpY3QsaW50cm9kdWNlZD0xMC4xNCkpKSAgICAgICAgICAgICBcCisgICAgIF9fYXR0cmlidXRlX18oKGF2YWlsYWJpbGl0eShpb3Msc3RyaWN0LGludHJvZHVjZWQ9MTIuMCkpKSAgICAgICAgICAgICAgICAgXAorICAgICBfX2F0dHJpYnV0ZV9fKChhdmFpbGFiaWxpdHkodHZvcyxzdHJpY3QsaW50cm9kdWNlZD0xMi4wKSkpICAgICAgICAgICAgICAgIFwKKyAgICAgX19hdHRyaWJ1dGVfXygoYXZhaWxhYmlsaXR5KHdhdGNob3Msc3RyaWN0LGludHJvZHVjZWQ9NS4wKSkpCisjICBkZWZpbmUgX0xJQkNQUF9BVkFJTEFCSUxJVFlfQkFEX1ZBUklBTlRfQUNDRVNTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBfTElCQ1BQX0FWQUlMQUJJTElUWV9CQURfT1BUSU9OQUxfQUNDRVNTCisjICBkZWZpbmUgX0xJQkNQUF9BVkFJTEFCSUxJVFlfQkFEX0FOWV9DQVNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBfTElCQ1BQX0FWQUlMQUJJTElUWV9CQURfT1BUSU9OQUxfQUNDRVNTCiAjICBkZWZpbmUgX0xJQkNQUF9BVkFJTEFCSUxJVFlfVU5DQVVHSFRfRVhDRVBUSU9OUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICBfX2F0dHJpYnV0ZV9fKChhdmFpbGFiaWxpdHkobWFjb3N4LHN0cmljdCxpbnRyb2R1Y2VkPTEwLjEyKSkpICAgICAgICAgICAgIFwKICAgICAgX19hdHRyaWJ1dGVfXygoYXZhaWxhYmlsaXR5KGlvcyxzdHJpY3QsaW50cm9kdWNlZD0xMC4wKSkpICAgICAgICAgICAgICAgICBcCkBAIC0xMzM1LDggKzEzNTcsOCBAQAogICAgICBfX2F0dHJpYnV0ZV9fKChhdmFpbGFiaWxpdHkoaW9zLHN0cmljdCxpbnRyb2R1Y2VkPTcuMCkpKQogI2Vsc2UKICMgIGRlZmluZSBfTElCQ1BQX0FWQUlMQUJJTElUWV9TSEFSRURfTVVURVgKKyMgIGRlZmluZSBfTElCQ1BQX0FWQUlMQUJJTElUWV9CQURfVkFSSUFOVF9BQ0NFU1MKICMgIGRlZmluZSBfTElCQ1BQX0FWQUlMQUJJTElUWV9CQURfT1BUSU9OQUxfQUNDRVNTCi0jICBkZWZpbmUgX0xJQkNQUF9BVkFJTEFCSUxJVFlfQkFEX0FSUkFZX0xFTkdUSAogIyAgZGVmaW5lIF9MSUJDUFBfQVZBSUxBQklMSVRZX0JBRF9BTllfQ0FTVAogIyAgZGVmaW5lIF9MSUJDUFBfQVZBSUxBQklMSVRZX1VOQ0FVR0hUX0VYQ0VQVElPTlMKICMgIGRlZmluZSBfTElCQ1BQX0FWQUlMQUJJTElUWV9TSVpFRF9ORVdfREVMRVRFCkBAIC0xMzQ4LDI2ICsxMzcwLDMwIEBACiAKIC8vIERlZmluZSBhdmFpbGFiaWxpdHkgdGhhdCBkZXBlbmRzIG9uIF9MSUJDUFBfTk9fRVhDRVBUSU9OUy4KICNpZmRlZiBfTElCQ1BQX05PX0VYQ0VQVElPTlMKLSMgIGRlZmluZSBfTElCQ1BQX0FWQUlMQUJJTElUWV9EWU5BUlJBWQogIyAgZGVmaW5lIF9MSUJDUFBfQVZBSUxBQklMSVRZX0ZVVFVSRQogIyAgZGVmaW5lIF9MSUJDUFBfQVZBSUxBQklMSVRZX1RIUk9XX0JBRF9BTllfQ0FTVAorIyAgZGVmaW5lIF9MSUJDUFBfQVZBSUxBQklMSVRZX1RIUk9XX0JBRF9PUFRJT05BTF9BQ0NFU1MKKyMgIGRlZmluZSBfTElCQ1BQX0FWQUlMQUJJTElUWV9USFJPV19CQURfVkFSSUFOVF9BQ0NFU1MKICNlbHNlCi0jICBkZWZpbmUgX0xJQkNQUF9BVkFJTEFCSUxJVFlfRFlOQVJSQVkgX0xJQkNQUF9BVkFJTEFCSUxJVFlfQkFEX0FSUkFZX0xFTkdUSAotIyAgZGVmaW5lIF9MSUJDUFBfQVZBSUxBQklMSVRZX0ZVVFVSRSBfTElCQ1BQX0FWQUlMQUJJTElUWV9GVVRVUkVfRVJST1IKLSMgIGRlZmluZSBfTElCQ1BQX0FWQUlMQUJJTElUWV9USFJPV19CQURfQU5ZX0NBU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIF9MSUJDUFBfQVZBSUxBQklMSVRZX0JBRF9BTllfQ0FTVAorIyAgZGVmaW5lIF9MSUJDUFBfQVZBSUxBQklMSVRZX0ZVVFVSRSAgICAgICAgICAgICAgICAgICAgX0xJQkNQUF9BVkFJTEFCSUxJVFlfRlVUVVJFX0VSUk9SCisjICBkZWZpbmUgX0xJQkNQUF9BVkFJTEFCSUxJVFlfVEhST1dfQkFEX0FOWV9DQVNUICAgICAgICBfTElCQ1BQX0FWQUlMQUJJTElUWV9CQURfQU5ZX0NBU1QKKyMgIGRlZmluZSBfTElCQ1BQX0FWQUlMQUJJTElUWV9USFJPV19CQURfT1BUSU9OQUxfQUNDRVNTIF9MSUJDUFBfQVZBSUxBQklMSVRZX0JBRF9PUFRJT05BTF9BQ0NFU1MKKyMgIGRlZmluZSBfTElCQ1BQX0FWQUlMQUJJTElUWV9USFJPV19CQURfVkFSSUFOVF9BQ0NFU1MgIF9MSUJDUFBfQVZBSUxBQklMSVRZX0JBRF9WQVJJQU5UX0FDQ0VTUwogI2VuZGlmCiAKLS8vIEF2YWlsYWJpbGl0eSBvZiBzdHJlYW0gQVBJIGluIHRoZSBkeWxpYiBnb3QgZHJvcHBlZCBhbmQgcmUtYWRkZWQuICBUaGUKLS8vIGV4dGVybiB0ZW1wbGF0ZSBzaG91bGQgZWZmZWN0aXZlbHkgYmUgYXZhaWxhYmxlIGF0OgotLy8gICAgYXZhaWxhYmlsaXR5KG1hY29zeCxpbnRyb2R1Y2VkPTEwLjkpCi0vLyAgICBhdmFpbGFiaWxpdHkoaW9zLGludHJvZHVjZWQ9Ny4wKQotI2lmIGRlZmluZWQoX0xJQkNQUF9VU0VfQVZBSUxBQklMSVRZX0FQUExFKSAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy8vIFRoZSBzdHJlYW0gQVBJIHdhcyBkcm9wcGVkIGFuZCByZS1hZGRlZCBpbiB0aGUgZHlsaWIgc2hpcHBlZCBvbiBtYWNPUworLy8gYW5kIGlPUy4gV2UgY2FuIG9ubHkgYXNzdW1lIHRoZSBkeWxpYiB0byBwcm92aWRlIHRoZXNlIGRlZmluaXRpb25zIGZvcgorLy8gbWFjb3N4ID49IDEwLjkgYW5kIGlvcyA+PSA3LjAuIE90aGVyd2lzZSwgdGhlIGRlZmluaXRpb25zIGFyZSBhdmFpbGFibGUKKy8vIGZyb20gdGhlIGhlYWRlcnMsIGJ1dCBub3QgZnJvbSB0aGUgZHlsaWIuIEV4cGxpY2l0IGluc3RhbnRpYXRpb24KKy8vIGRlY2xhcmF0aW9ucyBmb3Igc3RyZWFtcyBleGlzdCBjb25kaXRpb25hbGx5IHRvIHRoaXM7IGlmIHdlIHByb3ZpZGUKKy8vIGFuIGV4cGxpY2l0IGluc3RhbnRpYXRpb24gZGVjbGFyYXRpb24gYW5kIHdlIHRyeSB0byBkZXBsb3kgdG8gYSBkeWxpYgorLy8gdGhhdCBkb2VzIG5vdCBwcm92aWRlIHRob3NlIHN5bWJvbHMsIHdlJ2xsIGdldCBhIGxvYWQtdGltZSBlcnJvci4KKyNpZiAhZGVmaW5lZChfTElCQ1BQX0JVSUxESU5HX0xJQlJBUlkpICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgKChkZWZpbmVkKF9fRU5WSVJPTk1FTlRfTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRURfXykgJiYgICAgICAgICAgICAgICAgXAogICAgICAgX19FTlZJUk9OTUVOVF9NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRF9fIDwgMTA5MCkgfHwgICAgICAgICAgICAgICAgIFwKICAgICAgKGRlZmluZWQoX19FTlZJUk9OTUVOVF9JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRURfXykgJiYgICAgICAgICAgICAgICBcCiAgICAgICBfX0VOVklST05NRU5UX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRF9fIDwgNzAwMDApKQotI2RlZmluZSBfTElCQ1BQX0FWQUlMQUJJTElUWV9OT19TVFJFQU1TX0VYVEVSTl9URU1QTEFURQorIyAgZGVmaW5lIF9MSUJDUFBfRE9fTk9UX0FTU1VNRV9TVFJFQU1TX0VYUExJQ0lUX0lOU1RBTlRJQVRJT05fSU5fRFlMSUIKICNlbmRpZgogCiAjaWYgZGVmaW5lZChfTElCQ1BQX0NPTVBJTEVSX0lCTSkKQEAgLTE0MTAsNiArMTQzNiw4IEBACiAjICBlbmRpZiAvLyBkZWZpbmVkKF9MSUJDUFBfQUJJX01JQ1JPU09GVCkgJiYgIWRlZmluZWQoX0xJQkNQUF9CVUlMRElOR19MSUJSQVJZKQogI2VuZGlmIC8vIF9MSUJDUFBfTk9fQVVUT19MSU5LCiAKKyNkZWZpbmUgX0xJQkNQUF9VTlVTRURfVkFSKHgpICgodm9pZCkoeCkpCisKICNlbmRpZiAvLyBfX2NwbHVzcGx1cwogCiAjZW5kaWYgLy8gX0xJQkNQUF9DT05GSUcKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2N4eGFiaV9jb25maWcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2N4eGFiaV9jb25maWcuaAppbmRleCA0NmY1OTE0Li5jNWU2ZTg5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19jeHhhYmlfY29uZmlnLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fY3h4YWJpX2NvbmZpZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBfX2N4eGFiaV9jb25maWcuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fZGVidWcgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19kZWJ1ZwppbmRleCBkMDFiYWNkLi42Y2NiNzJjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19kZWJ1ZworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19kZWJ1ZwpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gX19kZWJ1ZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNzQsNyArNzMsNyBAQAogCiAvLy8gX19saWJjcHBfZGVidWdfZnVuY3Rpb24gLSBUaGUgaGFuZGxlciBmdW5jdGlvbiBjYWxsZWQgd2hlbiBhIF9MSUJDUFBfQVNTRVJUCiAvLy8gICAgZmFpbHMuCi1leHRlcm4gX0xJQkNQUF9FWFRFUk5fVklTIF9fbGliY3BwX2RlYnVnX2Z1bmN0aW9uX3R5cGUgX19saWJjcHBfZGVidWdfZnVuY3Rpb247CitleHRlcm4gX0xJQkNQUF9FWFBPUlRFRF9GUk9NX0FCSSBfX2xpYmNwcF9kZWJ1Z19mdW5jdGlvbl90eXBlIF9fbGliY3BwX2RlYnVnX2Z1bmN0aW9uOwogCiAvLy8gX19saWJjcHBfYWJvcnRfZGVidWdfZnVuY3Rpb24gLSBBIGRlYnVnIGhhbmRsZXIgdGhhdCBhYm9ydHMgd2hlbiBjYWxsZWQuCiBfTElCQ1BQX05PUkVUVVJOIF9MSUJDUFBfRlVOQ19WSVMKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2VycmMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19lcnJjCmluZGV4IGQwZjAwYjcuLmE4YWQyOWYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2VycmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fZXJyYwpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIF9fZXJyYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fZnVuY3Rpb25hbF8wMyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2Z1bmN0aW9uYWxfMDMKaW5kZXggMGEzYmZiYS4uYTkwY2JiNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fZnVuY3Rpb25hbF8wMworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19mdW5jdGlvbmFsXzAzCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19mdW5jdGlvbmFsX2Jhc2UgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19mdW5jdGlvbmFsX2Jhc2UKaW5kZXggMTg4Nzk3NC4uOGRhODMyNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fZnVuY3Rpb25hbF9iYXNlCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2Z1bmN0aW9uYWxfYmFzZQpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNTYyLDcgKzU2MSw3IEBACiBzdHJ1Y3QgX0xJQkNQUF9URU1QTEFURV9WSVMgYWxsb2NhdG9yX2FyZ190IHsgfTsKIAogI2lmIGRlZmluZWQoX0xJQkNQUF9DWFgwM19MQU5HKSB8fCBkZWZpbmVkKF9MSUJDUFBfQlVJTERJTkdfTElCUkFSWSkKLWV4dGVybiBjb25zdCBhbGxvY2F0b3JfYXJnX3QgYWxsb2NhdG9yX2FyZzsKK2V4dGVybiBfTElCQ1BQX0VYUE9SVEVEX0ZST01fQUJJIGNvbnN0IGFsbG9jYXRvcl9hcmdfdCBhbGxvY2F0b3JfYXJnOwogI2Vsc2UKIC8qIF9MSUJDUFBfSU5MSU5FX1ZBUiAqLyBjb25zdGV4cHIgYWxsb2NhdG9yX2FyZ190IGFsbG9jYXRvcl9hcmcgPSBhbGxvY2F0b3JfYXJnX3QoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fZnVuY3Rpb25hbF9iYXNlXzAzIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fZnVuY3Rpb25hbF9iYXNlXzAzCmluZGV4IDg0MDdkY2YuLmU2ZGFjOTAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2Z1bmN0aW9uYWxfYmFzZV8wMworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19mdW5jdGlvbmFsX2Jhc2VfMDMKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2hhc2hfdGFibGUgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19oYXNoX3RhYmxlCmluZGV4IGM3N2RlOTYuLjQ0MDlkNmQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2hhc2hfdGFibGUKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19faGFzaF90YWJsZQpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMzUsMTUgKzM0LDYgQEAKIHRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVHA+CiBzdHJ1Y3QgX19oYXNoX3ZhbHVlX3R5cGU7CiAKLXRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfQ3AsIGNsYXNzIF9IYXNoLAotICAgICAgICAgIGJvb2wgPSAgaXNfZW1wdHk8X0hhc2g+Ojp2YWx1ZSAmJiAhX19saWJjcHBfaXNfZmluYWw8X0hhc2g+Ojp2YWx1ZT4KLWNsYXNzIF9fdW5vcmRlcmVkX21hcF9oYXNoZXI7Ci0KLXRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfQ3AsIGNsYXNzIF9QcmVkLAotICAgICAgICAgIGJvb2wgPSBpc19lbXB0eTxfUHJlZD46OnZhbHVlICYmICFfX2xpYmNwcF9pc19maW5hbDxfUHJlZD46OnZhbHVlCi0gICAgICAgICA+Ci1jbGFzcyBfX3Vub3JkZXJlZF9tYXBfZXF1YWw7Ci0KICNpZm5kZWYgX0xJQkNQUF9DWFgwM19MQU5HCiB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgogc3RydWN0IF9faXNfaGFzaF92YWx1ZV90eXBlX2ltcCA6IGZhbHNlX3R5cGUge307CkBAIC00MTgsNyArNDA4LDcgQEAKICAgICAgICAgX0xJQkNQUF9ERUJVR19NT0RFKF9fZ2V0X2RiKCktPl9faW5zZXJ0X2kodGhpcykpOwogICAgIH0KIAotICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgCisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIF9faGFzaF9jb25zdF9pdGVyYXRvcihjb25zdCBfX25vbl9jb25zdF9pdGVyYXRvciYgX194KSBfTk9FWENFUFQKICAgICAgICAgOiBfX25vZGVfKF9feC5fX25vZGVfKQogICAgIHsKQEAgLTg3MSwzNSArODYxLDMyIEBACiB9OwogI2VuZGlmCiAKK3RlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfSGFzaCwgY2xhc3MgX0VxdWFsPgorc3RydWN0IF9fZW5mb3JjZV91bm9yZGVyZWRfY29udGFpbmVyX3JlcXVpcmVtZW50cyB7CiAjaWZuZGVmIF9MSUJDUFBfQ1hYMDNfTEFORwotdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9IYXNoLCBjbGFzcyBfRXF1YWwsIGNsYXNzIF9BbGxvYz4KLXN0cnVjdCBfX2RpYWdub3NlX2hhc2hfdGFibGVfaGVscGVyIHsKLSAgc3RhdGljIGNvbnN0ZXhwciBib29sIF9fdHJpZ2dlcl9kaWFnbm9zdGljcygpCi0gICAgX0xJQkNQUF9ESUFHTk9TRV9XQVJOSU5HKF9fY2hlY2tfaGFzaF9yZXF1aXJlbWVudHM8X0tleSwgX0hhc2g+Ojp2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICYmICFfX2ludm9rYWJsZTxfSGFzaCBjb25zdCYsIF9LZXkgY29uc3QmPjo6dmFsdWUsCi0gICAgICAidGhlIHNwZWNpZmllZCBoYXNoIGZ1bmN0b3IgZG9lcyBub3QgcHJvdmlkZSBhIGNvbnN0IGNhbGwgb3BlcmF0b3IiKQotICAgIF9MSUJDUFBfRElBR05PU0VfV0FSTklORyhpc19jb3B5X2NvbnN0cnVjdGlibGU8X0VxdWFsPjo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIV9faW52b2thYmxlPF9FcXVhbCBjb25zdCYsIF9LZXkgY29uc3QmLCBfS2V5IGNvbnN0Jj46OnZhbHVlLAotICAgICAgInRoZSBzcGVjaWZpZWQgY29tcGFyYXRvciB0eXBlIGRvZXMgbm90IHByb3ZpZGUgYSBjb25zdCBjYWxsIG9wZXJhdG9yIikKLSAgewogICAgIHN0YXRpY19hc3NlcnQoX19jaGVja19oYXNoX3JlcXVpcmVtZW50czxfS2V5LCBfSGFzaD46OnZhbHVlLAotICAgICAgInRoZSBzcGVjaWZpZWQgaGFzaCBkb2VzIG5vdCBtZWV0IHRoZSBIYXNoIHJlcXVpcmVtZW50cyIpOworICAgICJ0aGUgc3BlY2lmaWVkIGhhc2ggZG9lcyBub3QgbWVldCB0aGUgSGFzaCByZXF1aXJlbWVudHMiKTsKICAgICBzdGF0aWNfYXNzZXJ0KGlzX2NvcHlfY29uc3RydWN0aWJsZTxfRXF1YWw+Ojp2YWx1ZSwKLSAgICAgICJ0aGUgc3BlY2lmaWVkIGNvbXBhcmF0b3IgaXMgcmVxdWlyZWQgdG8gYmUgY29weSBjb25zdHJ1Y3RpYmxlIik7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KKyAgICAidGhlIHNwZWNpZmllZCBjb21wYXJhdG9yIGlzIHJlcXVpcmVkIHRvIGJlIGNvcHkgY29uc3RydWN0aWJsZSIpOworI2VuZGlmCisgICAgdHlwZWRlZiBpbnQgdHlwZTsKIH07CiAKLXRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9IYXNoLCBjbGFzcyBfRXF1YWwsIGNsYXNzIF9BbGxvYz4KLXN0cnVjdCBfX2RpYWdub3NlX2hhc2hfdGFibGVfaGVscGVyPAotICBfX2hhc2hfdmFsdWVfdHlwZTxfS2V5LCBfVmFsdWU+LAotICBfX3Vub3JkZXJlZF9tYXBfaGFzaGVyPF9LZXksIF9faGFzaF92YWx1ZV90eXBlPF9LZXksIF9WYWx1ZT4sIF9IYXNoPiwKLSAgX191bm9yZGVyZWRfbWFwX2VxdWFsPF9LZXksIF9faGFzaF92YWx1ZV90eXBlPF9LZXksIF9WYWx1ZT4sIF9FcXVhbD4sCi0gIF9BbGxvYz4KLTogX19kaWFnbm9zZV9oYXNoX3RhYmxlX2hlbHBlcjxfS2V5LCBfSGFzaCwgX0VxdWFsLCBfQWxsb2M+Ci17Ci19OwotI2VuZGlmIC8vIF9MSUJDUFBfQ1hYMDNfTEFORwordGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9IYXNoLCBjbGFzcyBfRXF1YWw+CisjaWZuZGVmIF9MSUJDUFBfQ1hYMDNfTEFORworICAgIF9MSUJDUFBfRElBR05PU0VfV0FSTklORyghX19pbnZva2FibGU8X0VxdWFsIGNvbnN0JiwgX0tleSBjb25zdCYsIF9LZXkgY29uc3QmPjo6dmFsdWUsCisgICAgInRoZSBzcGVjaWZpZWQgY29tcGFyYXRvciB0eXBlIGRvZXMgbm90IHByb3ZpZGUgYSBjb25zdCBjYWxsIG9wZXJhdG9yIikKKyAgICBfTElCQ1BQX0RJQUdOT1NFX1dBUk5JTkcoIV9faW52b2thYmxlPF9IYXNoIGNvbnN0JiwgX0tleSBjb25zdCY+Ojp2YWx1ZSwKKyAgICAidGhlIHNwZWNpZmllZCBoYXNoIGZ1bmN0b3IgZG9lcyBub3QgcHJvdmlkZSBhIGNvbnN0IGNhbGwgb3BlcmF0b3IiKQorI2VuZGlmCit0eXBlbmFtZSBfX2VuZm9yY2VfdW5vcmRlcmVkX2NvbnRhaW5lcl9yZXF1aXJlbWVudHM8X0tleSwgX0hhc2gsIF9FcXVhbD46OnR5cGUKK19fZGlhZ25vc2VfdW5vcmRlcmVkX2NvbnRhaW5lcl9yZXF1aXJlbWVudHMoaW50KTsKKworLy8gVGhpcyBkdW1teSBvdmVybG9hZCBpcyB1c2VkIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHdvbid0IGVtaXQgYSBzcHVyaW91cworLy8gIm5vIG1hdGNoaW5nIGZ1bmN0aW9uIGZvciBjYWxsIHRvIF9fZGlhZ25vc2VfdW5vcmRlcmVkX3h4eCIgZGlhZ25vc3RpYworLy8gd2hlbiB0aGUgb3ZlcmxvYWQgYWJvdmUgY2F1c2VzIGEgaGFyZCBlcnJvci4KK3RlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfSGFzaCwgY2xhc3MgX0VxdWFsPgoraW50IF9fZGlhZ25vc2VfdW5vcmRlcmVkX2NvbnRhaW5lcl9yZXF1aXJlbWVudHModm9pZCopOwogCiB0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfSGFzaCwgY2xhc3MgX0VxdWFsLCBjbGFzcyBfQWxsb2M+CiBjbGFzcyBfX2hhc2hfdGFibGUKQEAgLTk2MywxMCArOTUwLDYgQEAKICAgICB0eXBlZGVmIGFsbG9jYXRvcl90cmFpdHM8X19wb2ludGVyX2FsbG9jYXRvcj4gICAgICAgICAgX19wb2ludGVyX2FsbG9jX3RyYWl0czsKICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fYnVja2V0X2xpc3RfZGVsZXRlcjo6cG9pbnRlciAgICAgICBfX25vZGVfcG9pbnRlcl9wb2ludGVyOwogCi0jaWZuZGVmIF9MSUJDUFBfQ1hYMDNfTEFORwotICAgIHN0YXRpY19hc3NlcnQoX19kaWFnbm9zZV9oYXNoX3RhYmxlX2hlbHBlcjxfVHAsIF9IYXNoLCBfRXF1YWwsIF9BbGxvYz46Ol9fdHJpZ2dlcl9kaWFnbm9zdGljcygpLCAiIik7Ci0jZW5kaWYKLQogICAgIC8vIC0tLSBNZW1iZXIgZGF0YSBiZWdpbiAtLS0KICAgICBfX2J1Y2tldF9saXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2J1Y2tldF9saXN0XzsKICAgICBfX2NvbXByZXNzZWRfcGFpcjxfX2ZpcnN0X25vZGUsIF9fbm9kZV9hbGxvY2F0b3I+ICAgICBfX3AxXzsKQEAgLTEwNTgsOCArMTA0MSwyNiBAQAogICAgICAgICApOwogICAgIH0KIAorcHJpdmF0ZToKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgX19uZXh0X3BvaW50ZXIgX19ub2RlX2luc2VydF9tdWx0aV9wcmVwYXJlKHNpemVfdCBfX2NwX2hhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUmIF9fY3BfdmFsKTsKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBfX25vZGVfaW5zZXJ0X211bHRpX3BlcmZvcm0oX19ub2RlX3BvaW50ZXIgX19jcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX25leHRfcG9pbnRlciBfX3BuKSBfTk9FWENFUFQ7CisKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgX19uZXh0X3BvaW50ZXIgX19ub2RlX2luc2VydF91bmlxdWVfcHJlcGFyZShzaXplX3QgX19uZF9oYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZSYgX19uZF92YWwpOworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB2b2lkIF9fbm9kZV9pbnNlcnRfdW5pcXVlX3BlcmZvcm0oX19ub2RlX3BvaW50ZXIgX19wdHIpIF9OT0VYQ0VQVDsKKworcHVibGljOgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBfX25vZGVfaW5zZXJ0X3VuaXF1ZShfX25vZGVfcG9pbnRlciBfX25kKTsKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgaXRlcmF0b3IgICAgICAgICAgICAgX19ub2RlX2luc2VydF9tdWx0aShfX25vZGVfcG9pbnRlciBfX25kKTsKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgaXRlcmF0b3IgICAgICAgICAgICAgX19ub2RlX2luc2VydF9tdWx0aShjb25zdF9pdGVyYXRvciBfX3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX25vZGVfcG9pbnRlciBfX25kKTsKIApAQCAtMTE3MCw2ICsxMTcxLDkgQEAKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgaXRlcmF0b3IgX19ub2RlX2hhbmRsZV9pbnNlcnRfdW5pcXVlKGNvbnN0X2l0ZXJhdG9yIF9faGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX05vZGVIYW5kbGUmJiBfX25oKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1RhYmxlPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB2b2lkIF9fbm9kZV9oYW5kbGVfbWVyZ2VfdW5pcXVlKF9UYWJsZSYgX19zb3VyY2UpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIF9Ob2RlSGFuZGxlPgogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKQEAgLTExNzcsNiArMTE4MSw5IEBACiAgICAgdGVtcGxhdGUgPGNsYXNzIF9Ob2RlSGFuZGxlPgogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICBpdGVyYXRvciBfX25vZGVfaGFuZGxlX2luc2VydF9tdWx0aShjb25zdF9pdGVyYXRvciBfX2hpbnQsIF9Ob2RlSGFuZGxlJiYgX19uaCk7CisgICAgdGVtcGxhdGUgPGNsYXNzIF9UYWJsZT4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBfX25vZGVfaGFuZGxlX21lcmdlX211bHRpKF9UYWJsZSYgX19zb3VyY2UpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIF9Ob2RlSGFuZGxlPgogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKQEAgLTE4NDksNzMgKzE4NTYsMTEyIEBACiAgICAgfQogfQogCisKKy8vIFByZXBhcmUgdGhlIGNvbnRhaW5lciBmb3IgYW4gaW5zZXJ0aW9uIG9mIHRoZSB2YWx1ZSBfX3ZhbHVlIHdpdGggdGhlIGhhc2gKKy8vIF9faGFzaC4gVGhpcyBkb2VzIGEgbG9va3VwIGludG8gdGhlIGNvbnRhaW5lciB0byBzZWUgaWYgX192YWx1ZSBpcyBhbHJlYWR5CisvLyBwcmVzZW50LCBhbmQgcGVyZm9ybXMgYSByZWhhc2ggaWYgbmVjZXNzYXJ5LiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUKKy8vIGV4aXN0aW5nIGVsZW1lbnQgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2UgbnVsbHB0ci4KKy8vCisvLyBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIGZvcndhcmQgZXhjZXB0aW9ucyBpZiBrZXlfZXEoKSB0aHJvd3MsIGFuZCBuZXZlcgorLy8gbXV0YXRlcyBfX3ZhbHVlIG9yIGFjdHVhbGx5IGluc2VydHMgaW50byB0aGUgbWFwLgogdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0hhc2gsIGNsYXNzIF9FcXVhbCwgY2xhc3MgX0FsbG9jPgotcGFpcjx0eXBlbmFtZSBfX2hhc2hfdGFibGU8X1RwLCBfSGFzaCwgX0VxdWFsLCBfQWxsb2M+OjppdGVyYXRvciwgYm9vbD4KLV9faGFzaF90YWJsZTxfVHAsIF9IYXNoLCBfRXF1YWwsIF9BbGxvYz46Ol9fbm9kZV9pbnNlcnRfdW5pcXVlKF9fbm9kZV9wb2ludGVyIF9fbmQpCitfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCit0eXBlbmFtZSBfX2hhc2hfdGFibGU8X1RwLCBfSGFzaCwgX0VxdWFsLCBfQWxsb2M+OjpfX25leHRfcG9pbnRlcgorX19oYXNoX3RhYmxlPF9UcCwgX0hhc2gsIF9FcXVhbCwgX0FsbG9jPjo6X19ub2RlX2luc2VydF91bmlxdWVfcHJlcGFyZSgKKyAgICBzaXplX3QgX19oYXNoLCB2YWx1ZV90eXBlJiBfX3ZhbHVlKQogewotICAgIF9fbmQtPl9faGFzaF8gPSBoYXNoX2Z1bmN0aW9uKCkoX19uZC0+X192YWx1ZV8pOwogICAgIHNpemVfdHlwZSBfX2JjID0gYnVja2V0X2NvdW50KCk7Ci0gICAgYm9vbCBfX2luc2VydGVkID0gZmFsc2U7Ci0gICAgX19uZXh0X3BvaW50ZXIgX19uZHB0cjsKLSAgICBzaXplX3QgX19jaGFzaDsKKwogICAgIGlmIChfX2JjICE9IDApCiAgICAgewotICAgICAgICBfX2NoYXNoID0gX19jb25zdHJhaW5faGFzaChfX25kLT5fX2hhc2hfLCBfX2JjKTsKLSAgICAgICAgX19uZHB0ciA9IF9fYnVja2V0X2xpc3RfW19fY2hhc2hdOworICAgICAgICBzaXplX3QgX19jaGFzaCA9IF9fY29uc3RyYWluX2hhc2goX19oYXNoLCBfX2JjKTsKKyAgICAgICAgX19uZXh0X3BvaW50ZXIgX19uZHB0ciA9IF9fYnVja2V0X2xpc3RfW19fY2hhc2hdOwogICAgICAgICBpZiAoX19uZHB0ciAhPSBudWxscHRyKQogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKF9fbmRwdHIgPSBfX25kcHRyLT5fX25leHRfOyBfX25kcHRyICE9IG51bGxwdHIgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3RyYWluX2hhc2goX19uZHB0ci0+X19oYXNoKCksIF9fYmMpID09IF9fY2hhc2g7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbmRwdHIgPSBfX25kcHRyLT5fX25leHRfKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChrZXlfZXEoKShfX25kcHRyLT5fX3VwY2FzdCgpLT5fX3ZhbHVlXywgX19uZC0+X192YWx1ZV8pKQotICAgICAgICAgICAgICAgICAgICBnb3RvIF9fZG9uZTsKKyAgICAgICAgICAgICAgICBpZiAoa2V5X2VxKCkoX19uZHB0ci0+X191cGNhc3QoKS0+X192YWx1ZV8sIF9fdmFsdWUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gX19uZHB0cjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICBpZiAoc2l6ZSgpKzEgPiBfX2JjICogbWF4X2xvYWRfZmFjdG9yKCkgfHwgX19iYyA9PSAwKQogICAgIHsKLSAgICAgICAgaWYgKHNpemUoKSsxID4gX19iYyAqIG1heF9sb2FkX2ZhY3RvcigpIHx8IF9fYmMgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmVoYXNoKF9WU1REOjptYXg8c2l6ZV90eXBlPigyICogX19iYyArICFfX2lzX2hhc2hfcG93ZXIyKF9fYmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlKGNlaWwoZmxvYXQoc2l6ZSgpICsgMSkgLyBtYXhfbG9hZF9mYWN0b3IoKSkpKSk7Ci0gICAgICAgICAgICBfX2JjID0gYnVja2V0X2NvdW50KCk7Ci0gICAgICAgICAgICBfX2NoYXNoID0gX19jb25zdHJhaW5faGFzaChfX25kLT5fX2hhc2hfLCBfX2JjKTsKLSAgICAgICAgfQotICAgICAgICAvLyBpbnNlcnRfYWZ0ZXIgX19idWNrZXRfbGlzdF9bX19jaGFzaF0sIG9yIF9fZmlyc3Rfbm9kZSBpZiBidWNrZXQgaXMgbnVsbAotICAgICAgICBfX25leHRfcG9pbnRlciBfX3BuID0gX19idWNrZXRfbGlzdF9bX19jaGFzaF07Ci0gICAgICAgIGlmIChfX3BuID09IG51bGxwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIF9fcG4gPV9fcDFfLmZpcnN0KCkuX19wdHIoKTsKLSAgICAgICAgICAgIF9fbmQtPl9fbmV4dF8gPSBfX3BuLT5fX25leHRfOwotICAgICAgICAgICAgX19wbi0+X19uZXh0XyA9IF9fbmQtPl9fcHRyKCk7Ci0gICAgICAgICAgICAvLyBmaXggdXAgX19idWNrZXRfbGlzdF8KLSAgICAgICAgICAgIF9fYnVja2V0X2xpc3RfW19fY2hhc2hdID0gX19wbjsKLSAgICAgICAgICAgIGlmIChfX25kLT5fX25leHRfICE9IG51bGxwdHIpCi0gICAgICAgICAgICAgICAgX19idWNrZXRfbGlzdF9bX19jb25zdHJhaW5faGFzaChfX25kLT5fX25leHRfLT5fX2hhc2goKSwgX19iYyldID0gX19uZC0+X19wdHIoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIF9fbmQtPl9fbmV4dF8gPSBfX3BuLT5fX25leHRfOwotICAgICAgICAgICAgX19wbi0+X19uZXh0XyA9IF9fbmQtPl9fcHRyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgX19uZHB0ciA9IF9fbmQtPl9fcHRyKCk7Ci0gICAgICAgIC8vIGluY3JlbWVudCBzaXplCi0gICAgICAgICsrc2l6ZSgpOwotICAgICAgICBfX2luc2VydGVkID0gdHJ1ZTsKKyAgICAgICAgcmVoYXNoKF9WU1REOjptYXg8c2l6ZV90eXBlPigyICogX19iYyArICFfX2lzX2hhc2hfcG93ZXIyKF9fYmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZShjZWlsKGZsb2F0KHNpemUoKSArIDEpIC8gbWF4X2xvYWRfZmFjdG9yKCkpKSkpOwogICAgIH0KLV9fZG9uZToKLSNpZiBfTElCQ1BQX0RFQlVHX0xFVkVMID49IDIKLSAgICByZXR1cm4gcGFpcjxpdGVyYXRvciwgYm9vbD4oaXRlcmF0b3IoX19uZHB0ciwgdGhpcyksIF9faW5zZXJ0ZWQpOwotI2Vsc2UKLSAgICByZXR1cm4gcGFpcjxpdGVyYXRvciwgYm9vbD4oaXRlcmF0b3IoX19uZHB0ciksIF9faW5zZXJ0ZWQpOwotI2VuZGlmCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKKy8vIEluc2VydCB0aGUgbm9kZSBfX25kIGludG8gdGhlIGNvbnRhaW5lciBieSBwdXNoaW5nIGl0IGludG8gdGhlIHJpZ2h0IGJ1Y2tldCwKKy8vIGFuZCB1cGRhdGluZyBzaXplKCkuIEFzc3VtZXMgdGhhdCBfX25kLT5fX2hhc2ggaXMgdXAtdG8tZGF0ZSwgYW5kIHRoYXQKKy8vIHJlaGFzaGluZyBoYXMgYWxyZWFkeSBvY2N1cnJlZCBhbmQgdGhhdCBubyBlbGVtZW50IHdpdGggdGhlIHNhbWUga2V5IGV4aXN0cworLy8gaW4gdGhlIG1hcC4KK3RlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9IYXNoLCBjbGFzcyBfRXF1YWwsIGNsYXNzIF9BbGxvYz4KK19MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK3ZvaWQKK19faGFzaF90YWJsZTxfVHAsIF9IYXNoLCBfRXF1YWwsIF9BbGxvYz46Ol9fbm9kZV9pbnNlcnRfdW5pcXVlX3BlcmZvcm0oCisgICAgX19ub2RlX3BvaW50ZXIgX19uZCkgX05PRVhDRVBUCit7CisgICAgc2l6ZV90eXBlIF9fYmMgPSBidWNrZXRfY291bnQoKTsKKyAgICBzaXplX3QgX19jaGFzaCA9IF9fY29uc3RyYWluX2hhc2goX19uZC0+X19oYXNoKCksIF9fYmMpOworICAgIC8vIGluc2VydF9hZnRlciBfX2J1Y2tldF9saXN0X1tfX2NoYXNoXSwgb3IgX19maXJzdF9ub2RlIGlmIGJ1Y2tldCBpcyBudWxsCisgICAgX19uZXh0X3BvaW50ZXIgX19wbiA9IF9fYnVja2V0X2xpc3RfW19fY2hhc2hdOworICAgIGlmIChfX3BuID09IG51bGxwdHIpCisgICAgeworICAgICAgICBfX3BuID1fX3AxXy5maXJzdCgpLl9fcHRyKCk7CisgICAgICAgIF9fbmQtPl9fbmV4dF8gPSBfX3BuLT5fX25leHRfOworICAgICAgICBfX3BuLT5fX25leHRfID0gX19uZC0+X19wdHIoKTsKKyAgICAgICAgLy8gZml4IHVwIF9fYnVja2V0X2xpc3RfCisgICAgICAgIF9fYnVja2V0X2xpc3RfW19fY2hhc2hdID0gX19wbjsKKyAgICAgICAgaWYgKF9fbmQtPl9fbmV4dF8gIT0gbnVsbHB0cikKKyAgICAgICAgICAgIF9fYnVja2V0X2xpc3RfW19fY29uc3RyYWluX2hhc2goX19uZC0+X19uZXh0Xy0+X19oYXNoKCksIF9fYmMpXSA9IF9fbmQtPl9fcHRyKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIF9fbmQtPl9fbmV4dF8gPSBfX3BuLT5fX25leHRfOworICAgICAgICBfX3BuLT5fX25leHRfID0gX19uZC0+X19wdHIoKTsKKyAgICB9CisgICAgKytzaXplKCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9IYXNoLCBjbGFzcyBfRXF1YWwsIGNsYXNzIF9BbGxvYz4KLXR5cGVuYW1lIF9faGFzaF90YWJsZTxfVHAsIF9IYXNoLCBfRXF1YWwsIF9BbGxvYz46Oml0ZXJhdG9yCi1fX2hhc2hfdGFibGU8X1RwLCBfSGFzaCwgX0VxdWFsLCBfQWxsb2M+OjpfX25vZGVfaW5zZXJ0X211bHRpKF9fbm9kZV9wb2ludGVyIF9fY3ApCitwYWlyPHR5cGVuYW1lIF9faGFzaF90YWJsZTxfVHAsIF9IYXNoLCBfRXF1YWwsIF9BbGxvYz46Oml0ZXJhdG9yLCBib29sPgorX19oYXNoX3RhYmxlPF9UcCwgX0hhc2gsIF9FcXVhbCwgX0FsbG9jPjo6X19ub2RlX2luc2VydF91bmlxdWUoX19ub2RlX3BvaW50ZXIgX19uZCkKIHsKLSAgICBfX2NwLT5fX2hhc2hfID0gaGFzaF9mdW5jdGlvbigpKF9fY3AtPl9fdmFsdWVfKTsKKyAgICBfX25kLT5fX2hhc2hfID0gaGFzaF9mdW5jdGlvbigpKF9fbmQtPl9fdmFsdWVfKTsKKyAgICBfX25leHRfcG9pbnRlciBfX2V4aXN0aW5nX25vZGUgPQorICAgICAgICBfX25vZGVfaW5zZXJ0X3VuaXF1ZV9wcmVwYXJlKF9fbmQtPl9faGFzaCgpLCBfX25kLT5fX3ZhbHVlXyk7CisKKyAgICAvLyBJbnNlcnQgdGhlIG5vZGUsIHVubGVzcyBpdCBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgY29udGFpbmVyLgorICAgIGJvb2wgX19pbnNlcnRlZCA9IGZhbHNlOworICAgIGlmIChfX2V4aXN0aW5nX25vZGUgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIF9fbm9kZV9pbnNlcnRfdW5pcXVlX3BlcmZvcm0oX19uZCk7CisgICAgICAgIF9fZXhpc3Rpbmdfbm9kZSA9IF9fbmQtPl9fcHRyKCk7CisgICAgICAgIF9faW5zZXJ0ZWQgPSB0cnVlOworICAgIH0KKyNpZiBfTElCQ1BQX0RFQlVHX0xFVkVMID49IDIKKyAgICByZXR1cm4gcGFpcjxpdGVyYXRvciwgYm9vbD4oaXRlcmF0b3IoX19leGlzdGluZ19ub2RlLCB0aGlzKSwgX19pbnNlcnRlZCk7CisjZWxzZQorICAgIHJldHVybiBwYWlyPGl0ZXJhdG9yLCBib29sPihpdGVyYXRvcihfX2V4aXN0aW5nX25vZGUpLCBfX2luc2VydGVkKTsKKyNlbmRpZgorfQorCisvLyBQcmVwYXJlIHRoZSBjb250YWluZXIgZm9yIGFuIGluc2VydGlvbiBvZiB0aGUgdmFsdWUgX19jcF92YWwgd2l0aCB0aGUgaGFzaAorLy8gX19jcF9oYXNoLiBUaGlzIGRvZXMgYSBsb29rdXAgaW50byB0aGUgY29udGFpbmVyIHRvIHNlZSBpZiBfX2NwX3ZhbHVlIGlzCisvLyBhbHJlYWR5IHByZXNlbnQsIGFuZCBwZXJmb3JtcyBhIHJlaGFzaCBpZiBuZWNlc3NhcnkuIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZQorLy8gbGFzdCBvY2N1cmFuY2Ugb2YgX19jcF92YWwgaW4gdGhlIG1hcC4KKy8vCisvLyBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2VzIGZvcndhcmQgZXhjZXB0aW9ucyBpZiBrZXlfZXEoKSB0aHJvd3MsIGFuZCBuZXZlcgorLy8gbXV0YXRlcyBfX3ZhbHVlIG9yIGFjdHVhbGx5IGluc2VydHMgaW50byB0aGUgbWFwLgordGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0hhc2gsIGNsYXNzIF9FcXVhbCwgY2xhc3MgX0FsbG9jPgordHlwZW5hbWUgX19oYXNoX3RhYmxlPF9UcCwgX0hhc2gsIF9FcXVhbCwgX0FsbG9jPjo6X19uZXh0X3BvaW50ZXIKK19faGFzaF90YWJsZTxfVHAsIF9IYXNoLCBfRXF1YWwsIF9BbGxvYz46Ol9fbm9kZV9pbnNlcnRfbXVsdGlfcHJlcGFyZSgKKyAgICBzaXplX3QgX19jcF9oYXNoLCB2YWx1ZV90eXBlJiBfX2NwX3ZhbCkKK3sKICAgICBzaXplX3R5cGUgX19iYyA9IGJ1Y2tldF9jb3VudCgpOwogICAgIGlmIChzaXplKCkrMSA+IF9fYmMgKiBtYXhfbG9hZF9mYWN0b3IoKSB8fCBfX2JjID09IDApCiAgICAgewpAQCAtMTkyMyw4ICsxOTY5LDQ0IEBACiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZShjZWlsKGZsb2F0KHNpemUoKSArIDEpIC8gbWF4X2xvYWRfZmFjdG9yKCkpKSkpOwogICAgICAgICBfX2JjID0gYnVja2V0X2NvdW50KCk7CiAgICAgfQotICAgIHNpemVfdCBfX2NoYXNoID0gX19jb25zdHJhaW5faGFzaChfX2NwLT5fX2hhc2hfLCBfX2JjKTsKKyAgICBzaXplX3QgX19jaGFzaCA9IF9fY29uc3RyYWluX2hhc2goX19jcF9oYXNoLCBfX2JjKTsKICAgICBfX25leHRfcG9pbnRlciBfX3BuID0gX19idWNrZXRfbGlzdF9bX19jaGFzaF07CisgICAgaWYgKF9fcG4gIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIGZvciAoYm9vbCBfX2ZvdW5kID0gZmFsc2U7IF9fcG4tPl9fbmV4dF8gIT0gbnVsbHB0ciAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0cmFpbl9oYXNoKF9fcG4tPl9fbmV4dF8tPl9faGFzaCgpLCBfX2JjKSA9PSBfX2NoYXNoOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3BuID0gX19wbi0+X19uZXh0XykKKyAgICAgICAgeworICAgICAgICAgICAgLy8gICAgICBfX2ZvdW5kICAgIGtleV9lcSgpICAgICBhY3Rpb24KKyAgICAgICAgICAgIC8vICAgICAgZmFsc2UgICAgICAgZmFsc2UgICAgICAgbG9vcAorICAgICAgICAgICAgLy8gICAgICB0cnVlICAgICAgICB0cnVlICAgICAgICBsb29wCisgICAgICAgICAgICAvLyAgICAgIGZhbHNlICAgICAgIHRydWUgICAgICAgIHNldCBfX2ZvdW5kIHRvIHRydWUKKyAgICAgICAgICAgIC8vICAgICAgdHJ1ZSAgICAgICAgZmFsc2UgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIChfX2ZvdW5kICE9IChfX3BuLT5fX25leHRfLT5fX2hhc2goKSA9PSBfX2NwX2hhc2ggJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlfZXEoKShfX3BuLT5fX25leHRfLT5fX3VwY2FzdCgpLT5fX3ZhbHVlXywgX19jcF92YWwpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIV9fZm91bmQpCisgICAgICAgICAgICAgICAgICAgIF9fZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIF9fcG47Cit9CisKKy8vIEluc2VydCB0aGUgbm9kZSBfX2NwIGludG8gdGhlIGNvbnRhaW5lciBhZnRlciBfX3BuICh3aGljaCBpcyB0aGUgbGFzdCBub2RlIGluCisvLyB0aGUgYnVja2V0IHRoYXQgY29tcGFyZXMgZXF1YWwgdG8gX19jcCkuIFJlaGFzaGluZywgYW5kIGNoZWNraW5nIGZvcgorLy8gdW5pcXVlbmVzcyBoYXMgYWxyZWFkeSBiZWVuIHBlcmZvcm1lZCAoaW4gX19ub2RlX2luc2VydF9tdWx0aV9wcmVwYXJlKSwgc28KKy8vIGFsbCB3ZSBuZWVkIHRvIGRvIGlzIHVwZGF0ZSB0aGUgYnVja2V0IGFuZCBzaXplKCkuIEFzc3VtZXMgdGhhdCBfX2NwLT5fX2hhc2gKKy8vIGlzIHVwLXRvLWRhdGUuCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfSGFzaCwgY2xhc3MgX0VxdWFsLCBjbGFzcyBfQWxsb2M+Cit2b2lkCitfX2hhc2hfdGFibGU8X1RwLCBfSGFzaCwgX0VxdWFsLCBfQWxsb2M+OjpfX25vZGVfaW5zZXJ0X211bHRpX3BlcmZvcm0oCisgICAgX19ub2RlX3BvaW50ZXIgX19jcCwgX19uZXh0X3BvaW50ZXIgX19wbikgX05PRVhDRVBUCit7CisgICAgc2l6ZV90eXBlIF9fYmMgPSBidWNrZXRfY291bnQoKTsKKyAgICBzaXplX3QgX19jaGFzaCA9IF9fY29uc3RyYWluX2hhc2goX19jcC0+X19oYXNoXywgX19iYyk7CiAgICAgaWYgKF9fcG4gPT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIF9fcG4gPV9fcDFfLmZpcnN0KCkuX19wdHIoKTsKQEAgLTE5MzgsMjQgKzIwMjAsNiBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBmb3IgKGJvb2wgX19mb3VuZCA9IGZhbHNlOyBfX3BuLT5fX25leHRfICE9IG51bGxwdHIgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdHJhaW5faGFzaChfX3BuLT5fX25leHRfLT5fX2hhc2goKSwgX19iYykgPT0gX19jaGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19wbiA9IF9fcG4tPl9fbmV4dF8pCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vICAgICAgX19mb3VuZCAgICBrZXlfZXEoKSAgICAgYWN0aW9uCi0gICAgICAgICAgICAvLyAgICAgIGZhbHNlICAgICAgIGZhbHNlICAgICAgIGxvb3AKLSAgICAgICAgICAgIC8vICAgICAgdHJ1ZSAgICAgICAgdHJ1ZSAgICAgICAgbG9vcAotICAgICAgICAgICAgLy8gICAgICBmYWxzZSAgICAgICB0cnVlICAgICAgICBzZXQgX19mb3VuZCB0byB0cnVlCi0gICAgICAgICAgICAvLyAgICAgIHRydWUgICAgICAgIGZhbHNlICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiAoX19mb3VuZCAhPSAoX19wbi0+X19uZXh0Xy0+X19oYXNoKCkgPT0gX19jcC0+X19oYXNoXyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleV9lcSgpKF9fcG4tPl9fbmV4dF8tPl9fdXBjYXN0KCktPl9fdmFsdWVfLCBfX2NwLT5fX3ZhbHVlXykpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghX19mb3VuZCkKLSAgICAgICAgICAgICAgICAgICAgX19mb3VuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgICAgICBfX2NwLT5fX25leHRfID0gX19wbi0+X19uZXh0XzsKICAgICAgICAgX19wbi0+X19uZXh0XyA9IF9fY3AtPl9fcHRyKCk7CiAgICAgICAgIGlmIChfX2NwLT5fX25leHRfICE9IG51bGxwdHIpCkBAIC0xOTY2LDYgKzIwMzAsMTcgQEAKICAgICAgICAgfQogICAgIH0KICAgICArK3NpemUoKTsKK30KKworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfSGFzaCwgY2xhc3MgX0VxdWFsLCBjbGFzcyBfQWxsb2M+Cit0eXBlbmFtZSBfX2hhc2hfdGFibGU8X1RwLCBfSGFzaCwgX0VxdWFsLCBfQWxsb2M+OjppdGVyYXRvcgorX19oYXNoX3RhYmxlPF9UcCwgX0hhc2gsIF9FcXVhbCwgX0FsbG9jPjo6X19ub2RlX2luc2VydF9tdWx0aShfX25vZGVfcG9pbnRlciBfX2NwKQoreworICAgIF9fY3AtPl9faGFzaF8gPSBoYXNoX2Z1bmN0aW9uKCkoX19jcC0+X192YWx1ZV8pOworICAgIF9fbmV4dF9wb2ludGVyIF9fcG4gPSBfX25vZGVfaW5zZXJ0X211bHRpX3ByZXBhcmUoX19jcC0+X19oYXNoKCksIF9fY3AtPl9fdmFsdWVfKTsKKyAgICBfX25vZGVfaW5zZXJ0X211bHRpX3BlcmZvcm0oX19jcCwgX19wbik7CisKICNpZiBfTElCQ1BQX0RFQlVHX0xFVkVMID49IDIKICAgICByZXR1cm4gaXRlcmF0b3IoX19jcC0+X19wdHIoKSwgdGhpcyk7CiAjZWxzZQpAQCAtMjIxNyw2ICsyMjkyLDMyIEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9IYXNoLCBjbGFzcyBfRXF1YWwsIGNsYXNzIF9BbGxvYz4KK3RlbXBsYXRlIDxjbGFzcyBfVGFibGU+CitfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCit2b2lkCitfX2hhc2hfdGFibGU8X1RwLCBfSGFzaCwgX0VxdWFsLCBfQWxsb2M+OjpfX25vZGVfaGFuZGxlX21lcmdlX3VuaXF1ZSgKKyAgICBfVGFibGUmIF9fc291cmNlKQoreworICAgIHN0YXRpY19hc3NlcnQoaXNfc2FtZTxfX25vZGUsIHR5cGVuYW1lIF9UYWJsZTo6X19ub2RlPjo6dmFsdWUsICIiKTsKKworICAgIGZvciAodHlwZW5hbWUgX1RhYmxlOjppdGVyYXRvciBfX2l0ID0gX19zb3VyY2UuYmVnaW4oKTsKKyAgICAgICAgIF9faXQgIT0gX19zb3VyY2UuZW5kKCk7KQorICAgIHsKKyAgICAgICAgX19ub2RlX3BvaW50ZXIgX19zcmNfcHRyID0gX19pdC5fX25vZGVfLT5fX3VwY2FzdCgpOworICAgICAgICBzaXplX3QgX19oYXNoID0gaGFzaF9mdW5jdGlvbigpKF9fc3JjX3B0ci0+X192YWx1ZV8pOworICAgICAgICBfX25leHRfcG9pbnRlciBfX2V4aXN0aW5nX25vZGUgPQorICAgICAgICAgICAgX19ub2RlX2luc2VydF91bmlxdWVfcHJlcGFyZShfX2hhc2gsIF9fc3JjX3B0ci0+X192YWx1ZV8pOworICAgICAgICBhdXRvIF9fcHJldl9pdGVyID0gX19pdCsrOworICAgICAgICBpZiAoX19leGlzdGluZ19ub2RlID09IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgICh2b2lkKV9fc291cmNlLnJlbW92ZShfX3ByZXZfaXRlcikucmVsZWFzZSgpOworICAgICAgICAgICAgX19zcmNfcHRyLT5fX2hhc2hfID0gX19oYXNoOworICAgICAgICAgICAgX19ub2RlX2luc2VydF91bmlxdWVfcGVyZm9ybShfX3NyY19wdHIpOworICAgICAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfSGFzaCwgY2xhc3MgX0VxdWFsLCBjbGFzcyBfQWxsb2M+CiB0ZW1wbGF0ZSA8Y2xhc3MgX05vZGVIYW5kbGU+CiBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiB0eXBlbmFtZSBfX2hhc2hfdGFibGU8X1RwLCBfSGFzaCwgX0VxdWFsLCBfQWxsb2M+OjppdGVyYXRvcgpAQCAtMjI0NCwxMSArMjM0NSwzMyBAQAogICAgIHJldHVybiBfX3Jlc3VsdDsKIH0KIAordGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0hhc2gsIGNsYXNzIF9FcXVhbCwgY2xhc3MgX0FsbG9jPgordGVtcGxhdGUgPGNsYXNzIF9UYWJsZT4KK19MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK3ZvaWQKK19faGFzaF90YWJsZTxfVHAsIF9IYXNoLCBfRXF1YWwsIF9BbGxvYz46Ol9fbm9kZV9oYW5kbGVfbWVyZ2VfbXVsdGkoCisgICAgX1RhYmxlJiBfX3NvdXJjZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KGlzX3NhbWU8dHlwZW5hbWUgX1RhYmxlOjpfX25vZGUsIF9fbm9kZT46OnZhbHVlLCAiIik7CisKKyAgICBmb3IgKHR5cGVuYW1lIF9UYWJsZTo6aXRlcmF0b3IgX19pdCA9IF9fc291cmNlLmJlZ2luKCk7CisgICAgICAgICBfX2l0ICE9IF9fc291cmNlLmVuZCgpOykKKyAgICB7CisgICAgICAgIF9fbm9kZV9wb2ludGVyIF9fc3JjX3B0ciA9IF9faXQuX19ub2RlXy0+X191cGNhc3QoKTsKKyAgICAgICAgc2l6ZV90IF9fc3JjX2hhc2ggPSBoYXNoX2Z1bmN0aW9uKCkoX19zcmNfcHRyLT5fX3ZhbHVlXyk7CisgICAgICAgIF9fbmV4dF9wb2ludGVyIF9fcG4gPQorICAgICAgICAgICAgX19ub2RlX2luc2VydF9tdWx0aV9wcmVwYXJlKF9fc3JjX2hhc2gsIF9fc3JjX3B0ci0+X192YWx1ZV8pOworICAgICAgICAodm9pZClfX3NvdXJjZS5yZW1vdmUoX19pdCsrKS5yZWxlYXNlKCk7CisgICAgICAgIF9fc3JjX3B0ci0+X19oYXNoXyA9IF9fc3JjX2hhc2g7CisgICAgICAgIF9fbm9kZV9pbnNlcnRfbXVsdGlfcGVyZm9ybShfX3NyY19wdHIsIF9fcG4pOworICAgIH0KK30KICNlbmRpZiAgLy8gX0xJQkNQUF9TVERfVkVSID4gMTQKIAogdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0hhc2gsIGNsYXNzIF9FcXVhbCwgY2xhc3MgX0FsbG9jPgogdm9pZAogX19oYXNoX3RhYmxlPF9UcCwgX0hhc2gsIF9FcXVhbCwgX0FsbG9jPjo6cmVoYXNoKHNpemVfdHlwZSBfX24pCitfTElCQ1BQX0RJU0FCTEVfVUJTQU5fVU5TSUdORURfSU5URUdFUl9DSEVDSwogewogICAgIGlmIChfX24gPT0gMSkKICAgICAgICAgX19uID0gMjsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2xpYmNwcF92ZXJzaW9uIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fbGliY3BwX3ZlcnNpb24KaW5kZXggZTAwMmIzNi4uZDU4YzU1YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fbGliY3BwX3ZlcnNpb24KKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fbGliY3BwX3ZlcnNpb24KQEAgLTEgKzEgQEAKLTgwMDAKKzkwMDAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2xvY2FsZSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX2xvY2FsZQppbmRleCBmNDNlN2I0Li5kMWQ2NmY5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19sb2NhbGUKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fbG9jYWxlCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xMjU1LDEzICsxMjU0LDEzIEBACiB9OwogCiB0ZW1wbGF0ZSA8Pgotc3RydWN0IF9fbmFycm93X3RvX3V0Zjg8MTY+CitzdHJ1Y3QgX0xJQkNQUF9URU1QTEFURV9WSVMgX19uYXJyb3dfdG9fdXRmODwxNj4KICAgICA6IHB1YmxpYyBjb2RlY3Z0PGNoYXIxNl90LCBjaGFyLCBtYnN0YXRlX3Q+CiB7CiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIF9fbmFycm93X3RvX3V0ZjgoKSA6IGNvZGVjdnQ8Y2hhcjE2X3QsIGNoYXIsIG1ic3RhdGVfdD4oMSkge30KIAotICAgIH5fX25hcnJvd190b191dGY4KCk7CisgICAgX0xJQkNQUF9FWFBPUlRFRF9GUk9NX0FCSSB+X19uYXJyb3dfdG9fdXRmOCgpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIF9PdXRwdXRJdGVyYXRvciwgY2xhc3MgX0NoYXJUPgogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKQEAgLTEyODksMTMgKzEyODgsMTMgQEAKIH07CiAKIHRlbXBsYXRlIDw+Ci1zdHJ1Y3QgX19uYXJyb3dfdG9fdXRmODwzMj4KK3N0cnVjdCBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBfX25hcnJvd190b191dGY4PDMyPgogICAgIDogcHVibGljIGNvZGVjdnQ8Y2hhcjMyX3QsIGNoYXIsIG1ic3RhdGVfdD4KIHsKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgX19uYXJyb3dfdG9fdXRmOCgpIDogY29kZWN2dDxjaGFyMzJfdCwgY2hhciwgbWJzdGF0ZV90PigxKSB7fQogCi0gICAgfl9fbmFycm93X3RvX3V0ZjgoKTsKKyAgICBfTElCQ1BQX0VYUE9SVEVEX0ZST01fQUJJIH5fX25hcnJvd190b191dGY4KCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX091dHB1dEl0ZXJhdG9yLCBjbGFzcyBfQ2hhclQ+CiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQpAQCAtMTM0NSwxMyArMTM0NCwxMyBAQAogfTsKIAogdGVtcGxhdGUgPD4KLXN0cnVjdCBfX3dpZGVuX2Zyb21fdXRmODwxNj4KK3N0cnVjdCBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBfX3dpZGVuX2Zyb21fdXRmODwxNj4KICAgICA6IHB1YmxpYyBjb2RlY3Z0PGNoYXIxNl90LCBjaGFyLCBtYnN0YXRlX3Q+CiB7CiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIF9fd2lkZW5fZnJvbV91dGY4KCkgOiBjb2RlY3Z0PGNoYXIxNl90LCBjaGFyLCBtYnN0YXRlX3Q+KDEpIHt9CiAKLSAgICB+X193aWRlbl9mcm9tX3V0ZjgoKTsKKyAgICBfTElCQ1BQX0VYUE9SVEVEX0ZST01fQUJJIH5fX3dpZGVuX2Zyb21fdXRmOCgpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIF9PdXRwdXRJdGVyYXRvcj4KICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCkBAIC0xMzc5LDEzICsxMzc4LDEzIEBACiB9OwogCiB0ZW1wbGF0ZSA8Pgotc3RydWN0IF9fd2lkZW5fZnJvbV91dGY4PDMyPgorc3RydWN0IF9MSUJDUFBfVEVNUExBVEVfVklTIF9fd2lkZW5fZnJvbV91dGY4PDMyPgogICAgIDogcHVibGljIGNvZGVjdnQ8Y2hhcjMyX3QsIGNoYXIsIG1ic3RhdGVfdD4KIHsKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgX193aWRlbl9mcm9tX3V0ZjgoKSA6IGNvZGVjdnQ8Y2hhcjMyX3QsIGNoYXIsIG1ic3RhdGVfdD4oMSkge30KIAotICAgIH5fX3dpZGVuX2Zyb21fdXRmOCgpOworICAgIF9MSUJDUFBfRVhQT1JURURfRlJPTV9BQkkgfl9fd2lkZW5fZnJvbV91dGY4KCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX091dHB1dEl0ZXJhdG9yPgogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX211dGV4X2Jhc2UgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19tdXRleF9iYXNlCmluZGV4IDQ2NTljYTkuLjAwOGJlOTUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX211dGV4X2Jhc2UKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fbXV0ZXhfYmFzZQpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNzYsOSArNzUsOSBAQAogCiAjaWYgZGVmaW5lZChfTElCQ1BQX0NYWDAzX0xBTkcpIHx8IGRlZmluZWQoX0xJQkNQUF9CVUlMRElOR19MSUJSQVJZKQogCi1leHRlcm4gY29uc3QgZGVmZXJfbG9ja190ICBkZWZlcl9sb2NrOwotZXh0ZXJuIGNvbnN0IHRyeV90b19sb2NrX3QgdHJ5X3RvX2xvY2s7Ci1leHRlcm4gY29uc3QgYWRvcHRfbG9ja190ICBhZG9wdF9sb2NrOworZXh0ZXJuIF9MSUJDUFBfRVhQT1JURURfRlJPTV9BQkkgY29uc3QgZGVmZXJfbG9ja190ICBkZWZlcl9sb2NrOworZXh0ZXJuIF9MSUJDUFBfRVhQT1JURURfRlJPTV9BQkkgY29uc3QgdHJ5X3RvX2xvY2tfdCB0cnlfdG9fbG9jazsKK2V4dGVybiBfTElCQ1BQX0VYUE9SVEVEX0ZST01fQUJJIGNvbnN0IGFkb3B0X2xvY2tfdCAgYWRvcHRfbG9jazsKIAogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fbm9kZV9oYW5kbGUgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19ub2RlX2hhbmRsZQppbmRleCA1NjdmOGIwLi43ZjNiZDlkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19ub2RlX2hhbmRsZQorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19ub2RlX2hhbmRsZQpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMjYsOSArMjUsNiBAQAogCiAjaWYgX0xJQkNQUF9TVERfVkVSID4gMTQKIAotLy8gRklYTUU6IFVuY29tbWVudCB0aGlzIHdoZW4gd2Ugc3VwcG9ydCB0aGUgJ21lcmdlJyBmdW5jdGlvbmFsaXR5LgotLy8gI2RlZmluZSBfX2NwcF9saWJfbm9kZV9leHRyYWN0IDIwMTYwNkwKLQogLy8gU3BlY2lhbGl6ZWQgaW4gX190cmVlICYgX19oYXNoX3RhYmxlIGZvciB0aGVpciBfTm9kZVR5cGUuCiB0ZW1wbGF0ZSA8Y2xhc3MgX05vZGVUeXBlLCBjbGFzcyBfQWxsb2M+CiBzdHJ1Y3QgX19nZW5lcmljX2NvbnRhaW5lcl9ub2RlX2Rlc3RydWN0b3I7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19udWxscHRyIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fbnVsbHB0cgppbmRleCBhYTNiNGQyLi40NTUyOWE3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19udWxscHRyCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX251bGxwdHIKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIF9fbnVsbHB0ciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX3Nzb19hbGxvY2F0b3IgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19zc29fYWxsb2NhdG9yCmluZGV4IDQwMDI3MzYuLjM5MzAxMjggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX3Nzb19hbGxvY2F0b3IKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fc3NvX2FsbG9jYXRvcgpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNTUsMTQgKzU0LDE0IEBACiAgICAgICAgICAgICBfX2FsbG9jYXRlZF8gPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIChwb2ludGVyKSZidWZfOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxwb2ludGVyPihfVlNURDo6X19saWJjcHBfYWxsb2NhdGUoX19uICogc2l6ZW9mKF9UcCksIF9fYWxpZ25vZihfVHApKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxwb2ludGVyPihfVlNURDo6X19saWJjcHBfYWxsb2NhdGUoX19uICogc2l6ZW9mKF9UcCksIF9MSUJDUFBfQUxJR05PRihfVHApKSk7CiAgICAgfQotICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgdm9pZCBkZWFsbG9jYXRlKHBvaW50ZXIgX19wLCBzaXplX3R5cGUpCisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSB2b2lkIGRlYWxsb2NhdGUocG9pbnRlciBfX3AsIHNpemVfdHlwZSBfX24pCiAgICAgewogICAgICAgICBpZiAoX19wID09IChwb2ludGVyKSZidWZfKQogICAgICAgICAgICAgX19hbGxvY2F0ZWRfID0gZmFsc2U7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9kZWFsbG9jYXRlKF9fcCwgX19hbGlnbm9mKF9UcCkpOworICAgICAgICAgICAgX1ZTVEQ6Ol9fbGliY3BwX2RlYWxsb2NhdGUoX19wLCBfX24gKiBzaXplb2YoX1RwKSwgX0xJQkNQUF9BTElHTk9GKF9UcCkpOwogICAgIH0KICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHRocm93KCkge3JldHVybiBzaXplX3R5cGUofjApIC8gc2l6ZW9mKF9UcCk7fQogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19zdGRfc3RyZWFtIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fc3RkX3N0cmVhbQppbmRleCBkYjkwNzk1Li41YTlhNDcwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19zdGRfc3RyZWFtCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX3N0ZF9zdHJlYW0KQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX3N0cmluZyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX3N0cmluZwppbmRleCA0NGM1NTk4Li5hODhiOTc2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX19zdHJpbmcKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fc3RyaW5nCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIF9fc3RyaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC00Nyw2ICs0Niw3IEBACiAKIHRlbXBsYXRlIDw+IHN0cnVjdCBjaGFyX3RyYWl0czxjaGFyPjsKIHRlbXBsYXRlIDw+IHN0cnVjdCBjaGFyX3RyYWl0czx3Y2hhcl90PjsKK3RlbXBsYXRlIDw+IHN0cnVjdCBjaGFyX3RyYWl0czxjaGFyOF90PjsgIC8vIGMrKzIwCiAKIH0gIC8vIHN0ZAogCkBAIC0zODksNiArMzg5LDEwMiBAQAogfQogCiAKKyNpZm5kZWYgX0xJQkNQUF9OT19IQVNfQ0hBUjhfVAorCit0ZW1wbGF0ZSA8Pgorc3RydWN0IF9MSUJDUFBfVEVNUExBVEVfVklTIGNoYXJfdHJhaXRzPGNoYXI4X3Q+Cit7CisgICAgdHlwZWRlZiBjaGFyOF90ICAgICAgICBjaGFyX3R5cGU7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgICBpbnRfdHlwZTsKKyAgICB0eXBlZGVmIHN0cmVhbW9mZiAgICAgIG9mZl90eXBlOworICAgIHR5cGVkZWYgdThzdHJlYW1wb3MgICAgcG9zX3R5cGU7CisgICAgdHlwZWRlZiBtYnN0YXRlX3QgICAgICBzdGF0ZV90eXBlOworCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgdm9pZCBhc3NpZ24oY2hhcl90eXBlJiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpIG5vZXhjZXB0CisgICAgICAgIHtfX2MxID0gX19jMjt9CisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgYm9vbCBlcShjaGFyX3R5cGUgX19jMSwgY2hhcl90eXBlIF9fYzIpIG5vZXhjZXB0CisgICAgICAgIHtyZXR1cm4gX19jMSA9PSBfX2MyO30KKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIGx0KGNoYXJfdHlwZSBfX2MxLCBjaGFyX3R5cGUgX19jMikgbm9leGNlcHQKKyAgICAgICAge3JldHVybiBfX2MxIDwgX19jMjt9CisKKyAgICBzdGF0aWMgY29uc3RleHByCisgICAgaW50ICAgICAgICAgICAgICBjb21wYXJlKGNvbnN0IGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzaXplX3QgX19uKSBfTk9FWENFUFQ7CisKKyAgICBzdGF0aWMgY29uc3RleHByCisgICAgc2l6ZV90ICAgICAgICAgICBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBfX3MpIF9OT0VYQ0VQVDsKKyAKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHN0YXRpYyBjb25zdGV4cHIKKyAgICBjb25zdCBjaGFyX3R5cGUqIGZpbmQoY29uc3QgY2hhcl90eXBlKiBfX3MsIHNpemVfdCBfX24sIGNvbnN0IGNoYXJfdHlwZSYgX19hKSBfTk9FWENFUFQ7CisgCisgICAgc3RhdGljIGNoYXJfdHlwZSogICAgICAgbW92ZShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikgX05PRVhDRVBUCisgICAgICAgIHtyZXR1cm4gX19uID09IDAgPyBfX3MxIDogKGNoYXJfdHlwZSopIG1lbW1vdmUoX19zMSwgX19zMiwgX19uKTt9CisgCisgICAgc3RhdGljIGNoYXJfdHlwZSogICAgICAgY29weShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikgX05PRVhDRVBUCisgICAgICAgeworICAgICAgICAgICAgX0xJQkNQUF9BU1NFUlQoX19zMiA8IF9fczEgfHwgX19zMiA+PSBfX3MxK19fbiwgImNoYXJfdHJhaXRzOjpjb3B5IG92ZXJsYXBwZWQgcmFuZ2UiKTsKKyAgICAgICAgICAgIHJldHVybiBfX24gPT0gMCA/IF9fczEgOiAoY2hhcl90eXBlKiltZW1jcHkoX19zMSwgX19zMiwgX19uKTsKKyAgICAgICB9CisgCisgICAgc3RhdGljIGNoYXJfdHlwZSogICAgICAgYXNzaWduKGNoYXJfdHlwZSogX19zLCBzaXplX3QgX19uLCBjaGFyX3R5cGUgX19hKSBfTk9FWENFUFQKKyAgICAgICAge3JldHVybiBfX24gPT0gMCA/IF9fcyA6IChjaGFyX3R5cGUqKW1lbXNldChfX3MsIHRvX2ludF90eXBlKF9fYSksIF9fbik7fQorCisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgaW50X3R5cGUgIG5vdF9lb2YoaW50X3R5cGUgX19jKSBub2V4Y2VwdAorICAgICAgICB7cmV0dXJuIGVxX2ludF90eXBlKF9fYywgZW9mKCkpID8gfmVvZigpIDogX19jO30KKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBjaGFyX3R5cGUgdG9fY2hhcl90eXBlKGludF90eXBlIF9fYykgbm9leGNlcHQKKyAgICAgICAge3JldHVybiBjaGFyX3R5cGUoX19jKTt9CisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgaW50X3R5cGUgdG9faW50X3R5cGUoY2hhcl90eXBlIF9fYykgbm9leGNlcHQKKyAgICAgICAge3JldHVybiBpbnRfdHlwZShfX2MpO30KKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBib29sIGVxX2ludF90eXBlKGludF90eXBlIF9fYzEsIGludF90eXBlIF9fYzIpIG5vZXhjZXB0CisgICAgICAgIHtyZXR1cm4gX19jMSA9PSBfX2MyO30KKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBpbnRfdHlwZSBlb2YoKSBub2V4Y2VwdAorICAgICAgICB7cmV0dXJuIGludF90eXBlKEVPRik7fQorfTsKKworLy8gVE9ETyB1c2UgJ19fYnVpbHRpbl9zdHJsZW4nIGlmIGl0IGV2ZXIgc3VwcG9ydHMgY2hhcjhfdCA/PworaW5saW5lIGNvbnN0ZXhwcgorc2l6ZV90CitjaGFyX3RyYWl0czxjaGFyOF90Pjo6bGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogX19zKSBfTk9FWENFUFQKK3sKKyAgICBzaXplX3QgX19sZW4gPSAwOworICAgIGZvciAoOyAhZXEoKl9fcywgY2hhcl90eXBlKDApKTsgKytfX3MpCisgICAgICAgICsrX19sZW47CisgICAgcmV0dXJuIF9fbGVuOworfQorCitpbmxpbmUgY29uc3RleHByCitpbnQKK2NoYXJfdHJhaXRzPGNoYXI4X3Q+Ojpjb21wYXJlKGNvbnN0IGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzaXplX3QgX19uKSBfTk9FWENFUFQKK3sKKyNpZiBfX2hhc19mZWF0dXJlKGN4eF9jb25zdGV4cHJfc3RyaW5nX2J1aWx0aW5zKQorICAgIHJldHVybiBfX2J1aWx0aW5fbWVtY21wKF9fczEsIF9fczIsIF9fbik7CisjZWxzZQorICAgIGZvciAoOyBfX247IC0tX19uLCArK19fczEsICsrX19zMikKKyAgICB7CisgICAgICAgIGlmIChsdCgqX19zMSwgKl9fczIpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAobHQoKl9fczIsICpfX3MxKSkKKyAgICAgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCisvLyBUT0RPIHVzZSAnX19idWlsdGluX2NoYXJfbWVtY2hyJyBpZiBpdCBldmVyIHN1cHBvcnRzIGNoYXI4X3QgPz8KK2lubGluZSBjb25zdGV4cHIKK2NvbnN0IGNoYXI4X3QqCitjaGFyX3RyYWl0czxjaGFyOF90Pjo6ZmluZChjb25zdCBjaGFyX3R5cGUqIF9fcywgc2l6ZV90IF9fbiwgY29uc3QgY2hhcl90eXBlJiBfX2EpIF9OT0VYQ0VQVAoreworICAgIGZvciAoOyBfX247IC0tX19uKQorICAgIHsKKyAgICAgICAgaWYgKGVxKCpfX3MsIF9fYSkpCisgICAgICAgICAgICByZXR1cm4gX19zOworICAgICAgICArK19fczsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAvLyAjX0xJQkNQUF9OT19IQVNfQ0hBUjhfVAorCiAjaWZuZGVmIF9MSUJDUFBfSEFTX05PX1VOSUNPREVfQ0hBUlMKIAogdGVtcGxhdGUgPD4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX3RocmVhZGluZ19zdXBwb3J0IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fdGhyZWFkaW5nX3N1cHBvcnQKaW5kZXggMjAyNDkwMC4uYmFhMTIyMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fdGhyZWFkaW5nX3N1cHBvcnQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fdGhyZWFkaW5nX3N1cHBvcnQKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX3RyZWUgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX190cmVlCmluZGV4IDNiMzU4NmMuLjlmMDkzMWUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX3RyZWUKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fdHJlZQpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMjcsNiArMjYsMTMgQEAKIAogX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfU1RECiAKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pIC8vIGdjYy5nbnUub3JnL1BSMzc4MDQKK3RlbXBsYXRlIDxjbGFzcywgY2xhc3MsIGNsYXNzLCBjbGFzcz4gY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgbWFwOwordGVtcGxhdGUgPGNsYXNzLCBjbGFzcywgY2xhc3MsIGNsYXNzPiBjbGFzcyBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBtdWx0aW1hcDsKK3RlbXBsYXRlIDxjbGFzcywgY2xhc3MsIGNsYXNzPiBjbGFzcyBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBzZXQ7Cit0ZW1wbGF0ZSA8Y2xhc3MsIGNsYXNzLCBjbGFzcz4gY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgbXVsdGlzZXQ7CisjZW5kaWYKKwogdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvY2F0b3I+IGNsYXNzIF9fdHJlZTsKIHRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Ob2RlUHRyLCBjbGFzcyBfRGlmZlR5cGU+CiAgICAgY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgX190cmVlX2l0ZXJhdG9yOwpAQCAtNDAsMTAgKzQ2LDYgQEAKIHRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWU+CiBzdHJ1Y3QgX192YWx1ZV90eXBlOwogCi10ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX0NQLCBjbGFzcyBfQ29tcGFyZSwKLSAgICBib29sID0gaXNfZW1wdHk8X0NvbXBhcmU+Ojp2YWx1ZSAmJiAhX19saWJjcHBfaXNfZmluYWw8X0NvbXBhcmU+Ojp2YWx1ZT4KLWNsYXNzIF9fbWFwX3ZhbHVlX2NvbXBhcmU7Ci0KIHRlbXBsYXRlIDxjbGFzcyBfQWxsb2NhdG9yPiBjbGFzcyBfX21hcF9ub2RlX2Rlc3RydWN0b3I7CiB0ZW1wbGF0ZSA8Y2xhc3MgX1RyZWVJdGVyYXRvcj4gY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgX19tYXBfaXRlcmF0b3I7CiB0ZW1wbGF0ZSA8Y2xhc3MgX1RyZWVJdGVyYXRvcj4gY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgX19tYXBfY29uc3RfaXRlcmF0b3I7CkBAIC05NjYsMjQgKzk2OCwxMiBAQAogCiB9OwogCit0ZW1wbGF0ZTxjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlPgogI2lmbmRlZiBfTElCQ1BQX0NYWDAzX0xBTkcKLXRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2NhdG9yPgotc3RydWN0IF9fZGlhZ25vc2VfdHJlZV9oZWxwZXIgewotICBzdGF0aWMgY29uc3RleHByIGJvb2wgX190cmlnZ2VyX2RpYWdub3N0aWNzKCkKLSAgICAgIF9MSUJDUFBfRElBR05PU0VfV0FSTklORyghX19pbnZva2FibGU8X0NvbXBhcmUgY29uc3QmLCBfVHAgY29uc3QmLCBfVHAgY29uc3QmPjo6dmFsdWUsCi0gICAgICAgICAgICAidGhlIHNwZWNpZmllZCBjb21wYXJhdG9yIHR5cGUgZG9lcyBub3QgcHJvdmlkZSBhIGNvbnN0IGNhbGwgb3BlcmF0b3IiKQotICB7IHJldHVybiB0cnVlOyB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbHVlLCBjbGFzcyBfS2V5Q29tcCwgY2xhc3MgX0FsbG9jPgotc3RydWN0IF9fZGlhZ25vc2VfdHJlZV9oZWxwZXI8Ci0gICAgX192YWx1ZV90eXBlPF9LZXksIF9WYWx1ZT4sCi0gICAgX19tYXBfdmFsdWVfY29tcGFyZTxfS2V5LCBfX3ZhbHVlX3R5cGU8X0tleSwgX1ZhbHVlPiwgX0tleUNvbXA+LAotICAgIF9BbGxvYwotPiA6IF9fZGlhZ25vc2VfdHJlZV9oZWxwZXI8X0tleSwgX0tleUNvbXAsIF9BbGxvYz4KLXsKLX07Ci0jZW5kaWYgLy8gIV9MSUJDUFBfQ1hYMDNfTEFORworICAgIF9MSUJDUFBfRElBR05PU0VfV0FSTklORyghc3RkOjpfX2ludm9rYWJsZTxfQ29tcGFyZSBjb25zdCYsIF9UcCBjb25zdCYsIF9UcCBjb25zdCY+Ojp2YWx1ZSwKKyAgICAgICAgInRoZSBzcGVjaWZpZWQgY29tcGFyYXRvciB0eXBlIGRvZXMgbm90IHByb3ZpZGUgYSBjb25zdCBjYWxsIG9wZXJhdG9yIikKKyNlbmRpZgoraW50IF9fZGlhZ25vc2Vfbm9uX2NvbnN0X2NvbXBhcmF0b3IoKTsKIAogdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvY2F0b3I+CiBjbGFzcyBfX3RyZWUKQEAgLTEzNDEsMTUgKzEzMzEsMjAgQEAKIAogI2VuZGlmIC8vICFfTElCQ1BQX0NYWDAzX0xBTkcKIAorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICBwYWlyPGl0ZXJhdG9yLCBib29sPiBfX25vZGVfaW5zZXJ0X3VuaXF1ZShfX25vZGVfcG9pbnRlciBfX25kKTsKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgaXRlcmF0b3IgICAgICAgICAgICAgX19ub2RlX2luc2VydF91bmlxdWUoY29uc3RfaXRlcmF0b3IgX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbm9kZV9wb2ludGVyIF9fbmQpOwogCisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIGl0ZXJhdG9yIF9fbm9kZV9pbnNlcnRfbXVsdGkoX19ub2RlX3BvaW50ZXIgX19uZCk7CisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIGl0ZXJhdG9yIF9fbm9kZV9pbnNlcnRfbXVsdGkoY29uc3RfaXRlcmF0b3IgX19wLCBfX25vZGVfcG9pbnRlciBfX25kKTsKIAogCi0gICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBpdGVyYXRvciBfX3JlbW92ZV9ub2RlX3BvaW50ZXIoX19ub2RlX3BvaW50ZXIpOworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgaXRlcmF0b3IKKyAgICBfX3JlbW92ZV9ub2RlX3BvaW50ZXIoX19ub2RlX3BvaW50ZXIpIF9OT0VYQ0VQVDsKIAogI2lmIF9MSUJDUFBfU1REX1ZFUiA+IDE0CiAgICAgdGVtcGxhdGUgPGNsYXNzIF9Ob2RlSGFuZGxlLCBjbGFzcyBfSW5zZXJ0UmV0dXJuVHlwZT4KQEAgLTEzNTgsNiArMTM1Myw5IEBACiAgICAgdGVtcGxhdGUgPGNsYXNzIF9Ob2RlSGFuZGxlPgogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICBpdGVyYXRvciBfX25vZGVfaGFuZGxlX2luc2VydF91bmlxdWUoY29uc3RfaXRlcmF0b3IsIF9Ob2RlSGFuZGxlJiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBfVHJlZT4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBfX25vZGVfaGFuZGxlX21lcmdlX3VuaXF1ZShfVHJlZSYgX19zb3VyY2UpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIF9Ob2RlSGFuZGxlPgogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKQEAgLTEzNjUsNiArMTM2Myw5IEBACiAgICAgdGVtcGxhdGUgPGNsYXNzIF9Ob2RlSGFuZGxlPgogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICBpdGVyYXRvciBfX25vZGVfaGFuZGxlX2luc2VydF9tdWx0aShjb25zdF9pdGVyYXRvciwgX05vZGVIYW5kbGUmJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIF9UcmVlPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB2b2lkIF9fbm9kZV9oYW5kbGVfbWVyZ2VfbXVsdGkoX1RyZWUmIF9fc291cmNlKTsKIAogCiAgICAgdGVtcGxhdGUgPGNsYXNzIF9Ob2RlSGFuZGxlPgpAQCAtMTM4NCw3ICsxMzg1LDcgQEAKIAogICAgIHZvaWQgX19pbnNlcnRfbm9kZV9hdChfX3BhcmVudF9wb2ludGVyICAgICBfX3BhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX19ub2RlX2Jhc2VfcG9pbnRlciYgX19jaGlsZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgX19ub2RlX2Jhc2VfcG9pbnRlciBfX25ld19ub2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgX19ub2RlX2Jhc2VfcG9pbnRlciBfX25ld19ub2RlKSBfTk9FWENFUFQ7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0tleT4KICAgICAgICAgaXRlcmF0b3IgZmluZChjb25zdCBfS2V5JiBfX3YpOwpAQCAtMTg0NCwxMCArMTg0NSw2IEBACiB7CiAgICAgc3RhdGljX2Fzc2VydCgoaXNfY29weV9jb25zdHJ1Y3RpYmxlPHZhbHVlX2NvbXBhcmU+Ojp2YWx1ZSksCiAgICAgICAgICAgICAgICAgICJDb21wYXJhdG9yIG11c3QgYmUgY29weS1jb25zdHJ1Y3RpYmxlLiIpOwotI2lmbmRlZiBfTElCQ1BQX0NYWDAzX0xBTkcKLSAgICBzdGF0aWNfYXNzZXJ0KChfX2RpYWdub3NlX3RyZWVfaGVscGVyPF9UcCwgX0NvbXBhcmUsIF9BbGxvY2F0b3I+OjoKLSAgICAgICAgICAgICAgICAgICAgIF9fdHJpZ2dlcl9kaWFnbm9zdGljcygpKSwgIiIpOwotI2VuZGlmCiAgIGRlc3Ryb3koX19yb290KCkpOwogfQogCkBAIC0yMTI5LDEwICsyMTI2LDkgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvY2F0b3I+Ci12b2lkCi1fX3RyZWU8X1RwLCBfQ29tcGFyZSwgX0FsbG9jYXRvcj46Ol9faW5zZXJ0X25vZGVfYXQoX19wYXJlbnRfcG9pbnRlciAgICAgX19wYXJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19ub2RlX2Jhc2VfcG9pbnRlciYgX19jaGlsZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX25vZGVfYmFzZV9wb2ludGVyICBfX25ld19ub2RlKQordm9pZCBfX3RyZWU8X1RwLCBfQ29tcGFyZSwgX0FsbG9jYXRvcj46Ol9faW5zZXJ0X25vZGVfYXQoCisgICAgX19wYXJlbnRfcG9pbnRlciBfX3BhcmVudCwgX19ub2RlX2Jhc2VfcG9pbnRlciYgX19jaGlsZCwKKyAgICBfX25vZGVfYmFzZV9wb2ludGVyIF9fbmV3X25vZGUpIF9OT0VYQ0VQVAogewogICAgIF9fbmV3X25vZGUtPl9fbGVmdF8gICA9IG51bGxwdHI7CiAgICAgX19uZXdfbm9kZS0+X19yaWdodF8gID0gbnVsbHB0cjsKQEAgLTIzODQsNyArMjM4MCw3IEBACiAKIHRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2NhdG9yPgogdHlwZW5hbWUgX190cmVlPF9UcCwgX0NvbXBhcmUsIF9BbGxvY2F0b3I+OjppdGVyYXRvcgotX190cmVlPF9UcCwgX0NvbXBhcmUsIF9BbGxvY2F0b3I+OjpfX3JlbW92ZV9ub2RlX3BvaW50ZXIoX19ub2RlX3BvaW50ZXIgX19wdHIpCitfX3RyZWU8X1RwLCBfQ29tcGFyZSwgX0FsbG9jYXRvcj46Ol9fcmVtb3ZlX25vZGVfcG9pbnRlcihfX25vZGVfcG9pbnRlciBfX3B0cikgX05PRVhDRVBUCiB7CiAgICAgaXRlcmF0b3IgX19yKF9fcHRyKTsKICAgICArK19fcjsKQEAgLTI0NzIsNiArMjQ2OCwzMCBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jYXRvcj4KK3RlbXBsYXRlIDxjbGFzcyBfVHJlZT4KK19MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK3ZvaWQKK19fdHJlZTxfVHAsIF9Db21wYXJlLCBfQWxsb2NhdG9yPjo6X19ub2RlX2hhbmRsZV9tZXJnZV91bmlxdWUoX1RyZWUmIF9fc291cmNlKQoreworICAgIHN0YXRpY19hc3NlcnQoaXNfc2FtZTx0eXBlbmFtZSBfVHJlZTo6X19ub2RlX3BvaW50ZXIsIF9fbm9kZV9wb2ludGVyPjo6dmFsdWUsICIiKTsKKworICAgIGZvciAodHlwZW5hbWUgX1RyZWU6Oml0ZXJhdG9yIF9faSA9IF9fc291cmNlLmJlZ2luKCk7CisgICAgICAgICBfX2kgIT0gX19zb3VyY2UuZW5kKCk7KQorICAgIHsKKyAgICAgICAgX19ub2RlX3BvaW50ZXIgX19zcmNfcHRyID0gX19pLl9fZ2V0X25wKCk7CisgICAgICAgIF9fcGFyZW50X3BvaW50ZXIgX19wYXJlbnQ7CisgICAgICAgIF9fbm9kZV9iYXNlX3BvaW50ZXImIF9fY2hpbGQgPQorICAgICAgICAgICAgX19maW5kX2VxdWFsKF9fcGFyZW50LCBfTm9kZVR5cGVzOjpfX2dldF9rZXkoX19zcmNfcHRyLT5fX3ZhbHVlXykpOworICAgICAgICArK19faTsKKyAgICAgICAgaWYgKF9fY2hpbGQgIT0gbnVsbHB0cikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBfX3NvdXJjZS5fX3JlbW92ZV9ub2RlX3BvaW50ZXIoX19zcmNfcHRyKTsKKyAgICAgICAgX19pbnNlcnRfbm9kZV9hdChfX3BhcmVudCwgX19jaGlsZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxfX25vZGVfYmFzZV9wb2ludGVyPihfX3NyY19wdHIpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2NhdG9yPgogdGVtcGxhdGUgPGNsYXNzIF9Ob2RlSGFuZGxlPgogX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogdHlwZW5hbWUgX190cmVlPF9UcCwgX0NvbXBhcmUsIF9BbGxvY2F0b3I+OjppdGVyYXRvcgpAQCAtMjUwNyw2ICsyNTI3LDI4IEBACiAgICAgcmV0dXJuIGl0ZXJhdG9yKF9fcHRyKTsKIH0KIAordGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvY2F0b3I+Cit0ZW1wbGF0ZSA8Y2xhc3MgX1RyZWU+CitfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCit2b2lkCitfX3RyZWU8X1RwLCBfQ29tcGFyZSwgX0FsbG9jYXRvcj46Ol9fbm9kZV9oYW5kbGVfbWVyZ2VfbXVsdGkoX1RyZWUmIF9fc291cmNlKQoreworICAgIHN0YXRpY19hc3NlcnQoaXNfc2FtZTx0eXBlbmFtZSBfVHJlZTo6X19ub2RlX3BvaW50ZXIsIF9fbm9kZV9wb2ludGVyPjo6dmFsdWUsICIiKTsKKworICAgIGZvciAodHlwZW5hbWUgX1RyZWU6Oml0ZXJhdG9yIF9faSA9IF9fc291cmNlLmJlZ2luKCk7CisgICAgICAgICBfX2kgIT0gX19zb3VyY2UuZW5kKCk7KQorICAgIHsKKyAgICAgICAgX19ub2RlX3BvaW50ZXIgX19zcmNfcHRyID0gX19pLl9fZ2V0X25wKCk7CisgICAgICAgIF9fcGFyZW50X3BvaW50ZXIgX19wYXJlbnQ7CisgICAgICAgIF9fbm9kZV9iYXNlX3BvaW50ZXImIF9fY2hpbGQgPSBfX2ZpbmRfbGVhZl9oaWdoKAorICAgICAgICAgICAgX19wYXJlbnQsIF9Ob2RlVHlwZXM6Ol9fZ2V0X2tleShfX3NyY19wdHItPl9fdmFsdWVfKSk7CisgICAgICAgICsrX19pOworICAgICAgICBfX3NvdXJjZS5fX3JlbW92ZV9ub2RlX3BvaW50ZXIoX19zcmNfcHRyKTsKKyAgICAgICAgX19pbnNlcnRfbm9kZV9hdChfX3BhcmVudCwgX19jaGlsZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxfX25vZGVfYmFzZV9wb2ludGVyPihfX3NyY19wdHIpKTsKKyAgICB9Cit9CisKICNlbmRpZiAgLy8gX0xJQkNQUF9TVERfVkVSID4gMTQKIAogdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvY2F0b3I+CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX190dXBsZSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX3R1cGxlCmluZGV4IDY5ZDZlZTkuLjg5MTM0YjUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX3R1cGxlCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX3R1cGxlCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0yMiwzNiArMjEsMzYgQEAKIAogX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfU1RECiAKLXRlbXBsYXRlIDxjbGFzcyBfVHA+IGNsYXNzIF9MSUJDUFBfVEVNUExBVEVfVklTIHR1cGxlX3NpemU7Cit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPiBzdHJ1Y3QgX0xJQkNQUF9URU1QTEFURV9WSVMgdHVwbGVfc2l6ZTsKIAogI2lmICFkZWZpbmVkKF9MSUJDUFBfQ1hYMDNfTEFORykKIHRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzLi4uPgogdXNpbmcgX19lbmFibGVfaWZfdHVwbGVfc2l6ZV9pbXAgPSBfVHA7CiAKIHRlbXBsYXRlIDxjbGFzcyBfVHA+Ci1jbGFzcyBfTElCQ1BQX1RFTVBMQVRFX1ZJUyB0dXBsZV9zaXplPF9fZW5hYmxlX2lmX3R1cGxlX3NpemVfaW1wPAorc3RydWN0IF9MSUJDUFBfVEVNUExBVEVfVklTIHR1cGxlX3NpemU8X19lbmFibGVfaWZfdHVwbGVfc2l6ZV9pbXA8CiAgICAgY29uc3QgX1RwLAogICAgIHR5cGVuYW1lIGVuYWJsZV9pZjwhaXNfdm9sYXRpbGU8X1RwPjo6dmFsdWU+Ojp0eXBlLAogICAgIGludGVncmFsX2NvbnN0YW50PHNpemVfdCwgc2l6ZW9mKHR1cGxlX3NpemU8X1RwPik+Pj4KICAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIHR1cGxlX3NpemU8X1RwPjo6dmFsdWU+IHt9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgotY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgdHVwbGVfc2l6ZTxfX2VuYWJsZV9pZl90dXBsZV9zaXplX2ltcDwKK3N0cnVjdCBfTElCQ1BQX1RFTVBMQVRFX1ZJUyB0dXBsZV9zaXplPF9fZW5hYmxlX2lmX3R1cGxlX3NpemVfaW1wPAogICAgIHZvbGF0aWxlIF9UcCwKICAgICB0eXBlbmFtZSBlbmFibGVfaWY8IWlzX2NvbnN0PF9UcD46OnZhbHVlPjo6dHlwZSwKICAgICBpbnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIHNpemVvZih0dXBsZV9zaXplPF9UcD4pPj4+CiAgICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCB0dXBsZV9zaXplPF9UcD46OnZhbHVlPiB7fTsKIAogdGVtcGxhdGUgPGNsYXNzIF9UcD4KLWNsYXNzIF9MSUJDUFBfVEVNUExBVEVfVklTIHR1cGxlX3NpemU8X19lbmFibGVfaWZfdHVwbGVfc2l6ZV9pbXA8CitzdHJ1Y3QgX0xJQkNQUF9URU1QTEFURV9WSVMgdHVwbGVfc2l6ZTxfX2VuYWJsZV9pZl90dXBsZV9zaXplX2ltcDwKICAgICBjb25zdCB2b2xhdGlsZSBfVHAsCiAgICAgaW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCBzaXplb2YodHVwbGVfc2l6ZTxfVHA+KT4+PgogICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PHNpemVfdCwgdHVwbGVfc2l6ZTxfVHA+Ojp2YWx1ZT4ge307CiAKICNlbHNlCi10ZW1wbGF0ZSA8Y2xhc3MgX1RwPiBjbGFzcyBfTElCQ1BQX1RFTVBMQVRFX1ZJUyB0dXBsZV9zaXplPGNvbnN0IF9UcD4gOiBwdWJsaWMgdHVwbGVfc2l6ZTxfVHA+IHt9OwotdGVtcGxhdGUgPGNsYXNzIF9UcD4gY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgdHVwbGVfc2l6ZTx2b2xhdGlsZSBfVHA+IDogcHVibGljIHR1cGxlX3NpemU8X1RwPiB7fTsKLXRlbXBsYXRlIDxjbGFzcyBfVHA+IGNsYXNzIF9MSUJDUFBfVEVNUExBVEVfVklTIHR1cGxlX3NpemU8Y29uc3Qgdm9sYXRpbGUgX1RwPiA6IHB1YmxpYyB0dXBsZV9zaXplPF9UcD4ge307Cit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPiBzdHJ1Y3QgX0xJQkNQUF9URU1QTEFURV9WSVMgdHVwbGVfc2l6ZTxjb25zdCBfVHA+IDogcHVibGljIHR1cGxlX3NpemU8X1RwPiB7fTsKK3RlbXBsYXRlIDxjbGFzcyBfVHA+IHN0cnVjdCBfTElCQ1BQX1RFTVBMQVRFX1ZJUyB0dXBsZV9zaXplPHZvbGF0aWxlIF9UcD4gOiBwdWJsaWMgdHVwbGVfc2l6ZTxfVHA+IHt9OwordGVtcGxhdGUgPGNsYXNzIF9UcD4gc3RydWN0IF9MSUJDUFBfVEVNUExBVEVfVklTIHR1cGxlX3NpemU8Y29uc3Qgdm9sYXRpbGUgX1RwPiA6IHB1YmxpYyB0dXBsZV9zaXplPF9UcD4ge307CiAjZW5kaWYKIAogdGVtcGxhdGUgPHNpemVfdCBfSXAsIGNsYXNzIF9UcD4gY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgdHVwbGVfZWxlbWVudDsKQEAgLTE2NSw3ICsxNjQsNyBAQAogdGVtcGxhdGUgPGNsYXNzLi4uIF9UcD4gc3RydWN0IF9fdHVwbGVfbGlrZTx0dXBsZTxfVHAuLi4+ID4gOiB0cnVlX3R5cGUge307CiAKIHRlbXBsYXRlIDxjbGFzcyAuLi5fVHA+Ci1jbGFzcyBfTElCQ1BQX1RFTVBMQVRFX1ZJUyB0dXBsZV9zaXplPHR1cGxlPF9UcC4uLj4gPgorc3RydWN0IF9MSUJDUFBfVEVNUExBVEVfVklTIHR1cGxlX3NpemU8dHVwbGU8X1RwLi4uPiA+CiAgICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8c2l6ZV90LCBzaXplb2YuLi4oX1RwKT4KIHsKIH07CkBAIC0yOTEsNyArMjkwLDcgQEAKIAogCiB0ZW1wbGF0ZSA8Y2xhc3MgLi4uX1RwPgotY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgdHVwbGVfc2l6ZTxfX3R1cGxlX3R5cGVzPF9UcC4uLj4gPgorc3RydWN0IF9MSUJDUFBfVEVNUExBVEVfVklTIHR1cGxlX3NpemU8X190dXBsZV90eXBlczxfVHAuLi4+ID4KICAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIHNpemVvZi4uLihfVHApPgogewogfTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX3VuZGVmX21hY3JvcyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9fX3VuZGVmX21hY3JvcwppbmRleCA2MGFiMWRiLi40OTIzZWU2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvX191bmRlZl9tYWNyb3MKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL19fdW5kZWZfbWFjcm9zCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBfX3VuZGVmX21hY3JvcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvYWxnb3JpdGhtIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2FsZ29yaXRobQppbmRleCA5Y2U2YWEwLi43ZGE3NTNhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvYWxnb3JpdGhtCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9hbGdvcml0aG0KQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYWxnb3JpdGhtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTc1MCw2ICs3NDksMzIgQEAKICAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgX1QxJiBfX3gsIGNvbnN0IF9UMiYgX195KSB7cmV0dXJuIF9fcF8oX195LCBfX3gpO30KIH07CiAKKy8vIFBlcmZvcm0gZGl2aXNpb24gYnkgdHdvIHF1aWNrbHkgZm9yIHBvc2l0aXZlIGludGVnZXJzIChsbHZtLm9yZy9QUjM5MTI5KQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgX0ludGVncmFsPgorX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBfTElCQ1BQX0NPTlNURVhQUgordHlwZW5hbWUgZW5hYmxlX2lmCis8CisgICAgaXNfaW50ZWdyYWw8X0ludGVncmFsPjo6dmFsdWUsCisgICAgX0ludGVncmFsCis+Ojp0eXBlCitfX2hhbGZfcG9zaXRpdmUoX0ludGVncmFsIF9fdmFsdWUpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9JbnRlZ3JhbD4oc3RhdGljX2Nhc3Q8dHlwZW5hbWUgbWFrZV91bnNpZ25lZDxfSW50ZWdyYWw+Ojp0eXBlPihfX3ZhbHVlKSAvIDIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgX1RwPgorX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBfTElCQ1BQX0NPTlNURVhQUgordHlwZW5hbWUgZW5hYmxlX2lmCis8CisgICAgIWlzX2ludGVncmFsPF9UcD46OnZhbHVlLAorICAgIF9UcAorPjo6dHlwZQorX19oYWxmX3Bvc2l0aXZlKF9UcCBfX3ZhbHVlKQoreworICAgIHJldHVybiBfX3ZhbHVlIC8gMjsKK30KKwogI2lmZGVmIF9MSUJDUFBfREVCVUcKIAogdGVtcGxhdGUgPGNsYXNzIF9Db21wYXJlPgpAQCAtMTU4NSw2ICsxNjEwLDE4IEBACiAgICAgcmV0dXJuIF9faS5iYXNlKCk7CiB9CiAKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBfTElCQ1BQX0NPTlNURVhQUl9JRl9OT0RFQlVHCit0eXBlbmFtZSBlbmFibGVfaWYKKzwKKyAgICBpc190cml2aWFsbHlfY29weV9hc3NpZ25hYmxlPF9UcD46OnZhbHVlLAorICAgIGNvbnN0IF9UcCoKKz46OnR5cGUKK19fdW53cmFwX2l0ZXIoX193cmFwX2l0ZXI8Y29uc3QgX1RwKj4gX19pKQoreworICAgIHJldHVybiBfX2kuYmFzZSgpOworfQorCiAjZWxzZQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpAQCAtMjk2NCw3ICszMDAxLDcgQEAKICAgICB7CiAgICAgICAgIF9EcCBfX3VpZDsKICAgICAgICAgX19yc19kZWZhdWx0IF9fZyA9IF9fcnNfZ2V0KCk7Ci0gICAgICAgIGZvciAoLS1fX2xhc3QsIC0tX19kOyBfX2ZpcnN0IDwgX19sYXN0OyArK19fZmlyc3QsIC0tX19kKQorICAgICAgICBmb3IgKC0tX19sYXN0LCAodm9pZCkgLS1fX2Q7IF9fZmlyc3QgPCBfX2xhc3Q7ICsrX19maXJzdCwgKHZvaWQpIC0tX19kKQogICAgICAgICB7CiAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGUgX19pID0gX191aWQoX19nLCBfUHAoMCwgX19kKSk7CiAgICAgICAgICAgICBpZiAoX19pICE9IGRpZmZlcmVuY2VfdHlwZSgwKSkKQEAgLTI5ODYsNyArMzAyMyw3IEBACiAgICAgZGlmZmVyZW5jZV90eXBlIF9fZCA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgICAgaWYgKF9fZCA+IDEpCiAgICAgewotICAgICAgICBmb3IgKC0tX19sYXN0OyBfX2ZpcnN0IDwgX19sYXN0OyArK19fZmlyc3QsIC0tX19kKQorICAgICAgICBmb3IgKC0tX19sYXN0OyBfX2ZpcnN0IDwgX19sYXN0OyArK19fZmlyc3QsICh2b2lkKSAtLV9fZCkKICAgICAgICAgewogICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlIF9faSA9IF9fcmFuZChfX2QpOwogICAgICAgICAgICAgaWYgKF9faSAhPSBkaWZmZXJlbmNlX3R5cGUoMCkpCkBAIC0zMjAyLDcgKzMyMzksNyBAQAogICAgIGRpZmZlcmVuY2VfdHlwZSBfX2xlbiA9IF9WU1REOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpOwogICAgIHdoaWxlIChfX2xlbiAhPSAwKQogICAgIHsKLSAgICAgICAgZGlmZmVyZW5jZV90eXBlIF9fbDIgPSBfX2xlbiAvIDI7CisgICAgICAgIGRpZmZlcmVuY2VfdHlwZSBfX2wyID0gX1ZTVEQ6Ol9faGFsZl9wb3NpdGl2ZShfX2xlbik7CiAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19tID0gX19maXJzdDsKICAgICAgICAgX1ZTVEQ6OmFkdmFuY2UoX19tLCBfX2wyKTsKICAgICAgICAgaWYgKF9fcHJlZCgqX19tKSkKQEAgLTM2MTEsNiArMzY0OCw3IEBACiAvLyBzdGFibGUsIDQtMTAgY29tcGFyZXMsIDAtOSBzd2FwcwogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CitfTElCQ1BQX0hJRERFTgogdW5zaWduZWQKIF9fc29ydDUoX0ZvcndhcmRJdGVyYXRvciBfX3gxLCBfRm9yd2FyZEl0ZXJhdG9yIF9feDIsIF9Gb3J3YXJkSXRlcmF0b3IgX194MywKICAgICAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX194NCwgX0ZvcndhcmRJdGVyYXRvciBfX3g1LCBfQ29tcGFyZSBfX2MpCkBAIC00MDY5LDcgKzQxMDcsNyBAQAogICAgIGRpZmZlcmVuY2VfdHlwZSBfX2xlbiA9IF9WU1REOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpOwogICAgIHdoaWxlIChfX2xlbiAhPSAwKQogICAgIHsKLSAgICAgICAgZGlmZmVyZW5jZV90eXBlIF9fbDIgPSBfX2xlbiAvIDI7CisgICAgICAgIGRpZmZlcmVuY2VfdHlwZSBfX2wyID0gX1ZTVEQ6Ol9faGFsZl9wb3NpdGl2ZShfX2xlbik7CiAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19tID0gX19maXJzdDsKICAgICAgICAgX1ZTVEQ6OmFkdmFuY2UoX19tLCBfX2wyKTsKICAgICAgICAgaWYgKF9fY29tcCgqX19tLCBfX3ZhbHVlXykpCkBAIC00MDg4LDE0ICs0MTI2LDggQEAKIF9Gb3J3YXJkSXRlcmF0b3IKIGxvd2VyX2JvdW5kKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsIGNvbnN0IF9UcCYgX192YWx1ZV8sIF9Db21wYXJlIF9fY29tcCkKIHsKLSNpZmRlZiBfTElCQ1BQX0RFQlVHCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfbHZhbHVlX3JlZmVyZW5jZTxfX2RlYnVnX2xlc3M8X0NvbXBhcmU+ID46OnR5cGUgX0NvbXBfcmVmOwotICAgIF9fZGVidWdfbGVzczxfQ29tcGFyZT4gX19jKF9fY29tcCk7Ci0gICAgcmV0dXJuIF9fbG93ZXJfYm91bmQ8X0NvbXBfcmVmPihfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsdWVfLCBfX2MpOwotI2Vsc2UgIC8vIF9MSUJDUFBfREVCVUcKICAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9sdmFsdWVfcmVmZXJlbmNlPF9Db21wYXJlPjo6dHlwZSBfQ29tcF9yZWY7CiAgICAgcmV0dXJuIF9fbG93ZXJfYm91bmQ8X0NvbXBfcmVmPihfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsdWVfLCBfX2NvbXApOwotI2VuZGlmICAvLyBfTElCQ1BQX0RFQlVHCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXJhdG9yLCBjbGFzcyBfVHA+CkBAIC00MTE3LDcgKzQxNDksNyBAQAogICAgIGRpZmZlcmVuY2VfdHlwZSBfX2xlbiA9IF9WU1REOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpOwogICAgIHdoaWxlIChfX2xlbiAhPSAwKQogICAgIHsKLSAgICAgICAgZGlmZmVyZW5jZV90eXBlIF9fbDIgPSBfX2xlbiAvIDI7CisgICAgICAgIGRpZmZlcmVuY2VfdHlwZSBfX2wyID0gX1ZTVEQ6Ol9faGFsZl9wb3NpdGl2ZShfX2xlbik7CiAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19tID0gX19maXJzdDsKICAgICAgICAgX1ZTVEQ6OmFkdmFuY2UoX19tLCBfX2wyKTsKICAgICAgICAgaWYgKF9fY29tcChfX3ZhbHVlXywgKl9fbSkpCkBAIC00MTM2LDE0ICs0MTY4LDggQEAKIF9Gb3J3YXJkSXRlcmF0b3IKIHVwcGVyX2JvdW5kKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsIGNvbnN0IF9UcCYgX192YWx1ZV8sIF9Db21wYXJlIF9fY29tcCkKIHsKLSNpZmRlZiBfTElCQ1BQX0RFQlVHCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfbHZhbHVlX3JlZmVyZW5jZTxfX2RlYnVnX2xlc3M8X0NvbXBhcmU+ID46OnR5cGUgX0NvbXBfcmVmOwotICAgIF9fZGVidWdfbGVzczxfQ29tcGFyZT4gX19jKF9fY29tcCk7Ci0gICAgcmV0dXJuIF9fdXBwZXJfYm91bmQ8X0NvbXBfcmVmPihfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsdWVfLCBfX2MpOwotI2Vsc2UgIC8vIF9MSUJDUFBfREVCVUcKICAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9sdmFsdWVfcmVmZXJlbmNlPF9Db21wYXJlPjo6dHlwZSBfQ29tcF9yZWY7CiAgICAgcmV0dXJuIF9fdXBwZXJfYm91bmQ8X0NvbXBfcmVmPihfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsdWVfLCBfX2NvbXApOwotI2VuZGlmICAvLyBfTElCQ1BQX0RFQlVHCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXJhdG9yLCBjbGFzcyBfVHA+CkBAIC00MTY1LDcgKzQxOTEsNyBAQAogICAgIGRpZmZlcmVuY2VfdHlwZSBfX2xlbiA9IF9WU1REOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpOwogICAgIHdoaWxlIChfX2xlbiAhPSAwKQogICAgIHsKLSAgICAgICAgZGlmZmVyZW5jZV90eXBlIF9fbDIgPSBfX2xlbiAvIDI7CisgICAgICAgIGRpZmZlcmVuY2VfdHlwZSBfX2wyID0gX1ZTVEQ6Ol9faGFsZl9wb3NpdGl2ZShfX2xlbik7CiAgICAgICAgIF9Gb3J3YXJkSXRlcmF0b3IgX19tID0gX19maXJzdDsKICAgICAgICAgX1ZTVEQ6OmFkdmFuY2UoX19tLCBfX2wyKTsKICAgICAgICAgaWYgKF9fY29tcCgqX19tLCBfX3ZhbHVlXykpCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvYW55IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2FueQppbmRleCBlMjk0NWJkLi5mMzUxOGMzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvYW55CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9hbnkKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGFueSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTk0LDcgKzkzLDcgQEAKICNlbmRpZgogCiBuYW1lc3BhY2Ugc3RkIHsKLWNsYXNzIF9MSUJDUFBfRVhDRVBUSU9OX0FCSSBiYWRfYW55X2Nhc3QgOiBwdWJsaWMgYmFkX2Nhc3QKK2NsYXNzIF9MSUJDUFBfRVhDRVBUSU9OX0FCSSBfTElCQ1BQX0FWQUlMQUJJTElUWV9CQURfQU5ZX0NBU1QgYmFkX2FueV9jYXN0IDogcHVibGljIGJhZF9jYXN0CiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3QgX05PRVhDRVBUOwpAQCAtMTA2LDYgKzEwNSw3IEBACiAjaWYgX0xJQkNQUF9TVERfVkVSID4gMTQKIAogX0xJQkNQUF9OT1JFVFVSTiBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorX0xJQkNQUF9BVkFJTEFCSUxJVFlfVEhST1dfQkFEX0FOWV9DQVNUCiB2b2lkIF9fdGhyb3dfYmFkX2FueV9jYXN0KCkKIHsKICNpZm5kZWYgX0xJQkNQUF9OT19FWENFUFRJT05TCkBAIC01NzcsNiArNTc3LDcgQEAKIAogdGVtcGxhdGUgPGNsYXNzIF9WYWx1ZVR5cGU+CiBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorX0xJQkNQUF9BVkFJTEFCSUxJVFlfVEhST1dfQkFEX0FOWV9DQVNUCiBfVmFsdWVUeXBlIGFueV9jYXN0KGFueSBjb25zdCAmIF9fdikKIHsKICAgICB1c2luZyBfUmF3VmFsdWVUeXBlID0gX191bmN2cmVmX3Q8X1ZhbHVlVHlwZT47CkBAIC01OTEsNiArNTkyLDcgQEAKIAogdGVtcGxhdGUgPGNsYXNzIF9WYWx1ZVR5cGU+CiBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorX0xJQkNQUF9BVkFJTEFCSUxJVFlfVEhST1dfQkFEX0FOWV9DQVNUCiBfVmFsdWVUeXBlIGFueV9jYXN0KGFueSAmIF9fdikKIHsKICAgICB1c2luZyBfUmF3VmFsdWVUeXBlID0gX191bmN2cmVmX3Q8X1ZhbHVlVHlwZT47CkBAIC02MDUsNiArNjA3LDcgQEAKIAogdGVtcGxhdGUgPGNsYXNzIF9WYWx1ZVR5cGU+CiBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorX0xJQkNQUF9BVkFJTEFCSUxJVFlfVEhST1dfQkFEX0FOWV9DQVNUCiBfVmFsdWVUeXBlIGFueV9jYXN0KGFueSAmJiBfX3YpCiB7CiAgICAgdXNpbmcgX1Jhd1ZhbHVlVHlwZSA9IF9fdW5jdnJlZl90PF9WYWx1ZVR5cGU+OwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2FycmF5IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2FycmF5CmluZGV4IDhmNGUxMTEuLjA1YzRiNjUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9hcnJheQorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvYXJyYXkKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBhcnJheSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTkxLDcgKzkwLDcgQEAKIHRlbXBsYXRlIDxjbGFzcyBULCBzaXplX3QgTiA+CiAgIHZvaWQgc3dhcChhcnJheTxULE4+JiB4LCBhcnJheTxULE4+JiB5KSBub2V4Y2VwdChub2V4Y2VwdCh4LnN3YXAoeSkpKTsgLy8gQysrMTcKIAotdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIHR1cGxlX3NpemU7Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHR1cGxlX3NpemU7CiB0ZW1wbGF0ZSA8c2l6ZV90IEksIGNsYXNzIFQ+IGNsYXNzIHR1cGxlX2VsZW1lbnQ7CiB0ZW1wbGF0ZSA8Y2xhc3MgVCwgc2l6ZV90IE4+IHN0cnVjdCB0dXBsZV9zaXplPGFycmF5PFQsIE4+PjsKIHRlbXBsYXRlIDxzaXplX3QgSSwgY2xhc3MgVCwgc2l6ZV90IE4+IHN0cnVjdCB0dXBsZV9lbGVtZW50PEksIGFycmF5PFQsIE4+PjsKQEAgLTQzMCw3ICs0MjksNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBzaXplX3QgX1NpemU+Ci1jbGFzcyBfTElCQ1BQX1RFTVBMQVRFX1ZJUyB0dXBsZV9zaXplPGFycmF5PF9UcCwgX1NpemU+ID4KK3N0cnVjdCBfTElCQ1BQX1RFTVBMQVRFX1ZJUyB0dXBsZV9zaXplPGFycmF5PF9UcCwgX1NpemU+ID4KICAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIF9TaXplPiB7fTsKIAogdGVtcGxhdGUgPHNpemVfdCBfSXAsIGNsYXNzIF9UcCwgc2l6ZV90IF9TaXplPgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2F0b21pYyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9hdG9taWMKaW5kZXggZDM3ZTdiNC4uNjAwNTdmMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2F0b21pYworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvYXRvbWljCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBhdG9taWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvYml0IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2JpdAppbmRleCBkYjM4MTJlLi5hMmNhM2JjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvYml0CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9iaXQKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGJpdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvYml0c2V0IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2JpdHNldAppbmRleCA2ZTI4NTk2Li45ZmI5MWU5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvYml0c2V0CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9iaXRzZXQKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBiaXRzZXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTk5MSw3ICs5OTAsNyBAQAogc2l6ZV90CiBiaXRzZXQ8X1NpemU+Ojpjb3VudCgpIGNvbnN0IF9OT0VYQ0VQVAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KF9WU1REOjpjb3VudChiYXNlOjpfX21ha2VfaXRlcigwKSwgYmFzZTo6X19tYWtlX2l0ZXIoX1NpemUpLCB0cnVlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oX19jb3VudF9ib29sX3RydWUoYmFzZTo6X19tYWtlX2l0ZXIoMCksIF9TaXplKSk7CiB9CiAKIHRlbXBsYXRlIDxzaXplX3QgX1NpemU+CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2Fzc2VydCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jYXNzZXJ0CmluZGV4IDM3NzU5OTAuLjI1YTBhNzQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jYXNzZXJ0CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jYXNzZXJ0CkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNhc3NlcnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2NvbXBsZXggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2NvbXBsZXgKaW5kZXggNmVkMTE2NC4uMGQyZTBmNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2Njb21wbGV4CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jY29tcGxleApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2NvbXBsZXggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NjdHlwZSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jY3R5cGUKaW5kZXggN2ZjODEzNC4uNTVmYzllYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NjdHlwZQorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2N0eXBlCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2N0eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2Vycm5vIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NlcnJubwppbmRleCBiYWIxM2I4Li5hOTI2OGEyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2Vycm5vCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jZXJybm8KQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2Vycm5vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jZmVudiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jZmVudgppbmRleCA0ZmM2MzA0Li42Y2Q5MWRiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2ZlbnYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NmZW52CkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2ZlbnYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2Zsb2F0IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NmbG9hdAppbmRleCAwYWJlODRiLi5kYTIyYzZmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2Zsb2F0CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jZmxvYXQKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNmbG9hdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jaGFyY29udiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jaGFyY29udgppbmRleCA3Y2I3OTBlLi5lYzliYWE4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2hhcmNvbnYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NoYXJjb252CkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjaGFyY29udiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC04Nyw4ICs4NiwxNiBAQAogI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgogI2VuZGlmCiAKK19MSUJDUFBfUFVTSF9NQUNST1MKKyNpbmNsdWRlIDxfX3VuZGVmX21hY3Jvcz4KKwogX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfU1RECiAKK25hbWVzcGFjZSBfX2l0b2EgeworX0xJQkNQUF9GVU5DX1ZJUyBjaGFyKiBfX3U2NHRvYSh1aW50NjRfdCBfX3ZhbHVlLCBjaGFyKiBfX2J1ZmZlcik7CitfTElCQ1BQX0ZVTkNfVklTIGNoYXIqIF9fdTMydG9hKHVpbnQzMl90IF9fdmFsdWUsIGNoYXIqIF9fYnVmZmVyKTsKK30KKwogI2lmIF9MSUJDUFBfU1REX1ZFUiA+IDExCiAKIGVudW0gY2xhc3MgX0xJQkNQUF9FTlVNX1ZJUyBjaGFyc19mb3JtYXQKQEAgLTE0Nyw5ICsxNTQsNiBAQAogICAgIFVJTlQzMl9DKDEwMDAwMDAwMDApLAogfTsKIAotX0xJQkNQUF9GVU5DX1ZJUyBjaGFyKiBfX3U2NHRvYSh1aW50NjRfdCBfX3ZhbHVlLCBjaGFyKiBfX2J1ZmZlcik7Ci1fTElCQ1BQX0ZVTkNfVklTIGNoYXIqIF9fdTMydG9hKHVpbnQzMl90IF9fdmFsdWUsIGNoYXIqIF9fYnVmZmVyKTsKLQogdGVtcGxhdGUgPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgPSB2b2lkPgogc3RydWN0IF9MSUJDUFBfSElEREVOIF9fdHJhaXRzX2Jhc2UKIHsKQEAgLTYwNyw0ICs2MTEsNiBAQAogCiBfTElCQ1BQX0VORF9OQU1FU1BBQ0VfU1RECiAKK19MSUJDUFBfUE9QX01BQ1JPUworCiAjZW5kaWYgIC8vIF9MSUJDUFBfQ0hBUkNPTlYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jaHJvbm8gYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2hyb25vCmluZGV4IDA2OTExMDEuLmEwMDM3NTEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jaHJvbm8KKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2Nocm9ubwpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNocm9ubyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMzMsOSArMzIsOSBAQAogc3RydWN0IGR1cmF0aW9uX3ZhbHVlcwogewogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgUmVwIHplcm8oKTsKLSAgICBzdGF0aWMgY29uc3RleHByIFJlcCBtYXgoKTsKLSAgICBzdGF0aWMgY29uc3RleHByIFJlcCBtaW4oKTsKKyAgICBzdGF0aWMgY29uc3RleHByIFJlcCB6ZXJvKCk7IC8vIG5vZXhjZXB0IGluIEMrKzIwCisgICAgc3RhdGljIGNvbnN0ZXhwciBSZXAgbWF4KCk7ICAvLyBub2V4Y2VwdCBpbiBDKysyMAorICAgIHN0YXRpYyBjb25zdGV4cHIgUmVwIG1pbigpOyAgLy8gbm9leGNlcHQgaW4gQysrMjAKIH07CiAKIC8vIGR1cmF0aW9uCkBAIC05Miw5ICs5MSw5IEBACiAKICAgICAvLyBzcGVjaWFsIHZhbHVlcwogCi0gICAgc3RhdGljIGNvbnN0ZXhwciBkdXJhdGlvbiB6ZXJvKCk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBkdXJhdGlvbiBtaW4oKTsKLSAgICBzdGF0aWMgY29uc3RleHByIGR1cmF0aW9uIG1heCgpOworICAgIHN0YXRpYyBjb25zdGV4cHIgZHVyYXRpb24gemVybygpOyAvLyBub2V4Y2VwdCBpbiBDKysyMAorICAgIHN0YXRpYyBjb25zdGV4cHIgZHVyYXRpb24gbWluKCk7ICAvLyBub2V4Y2VwdCBpbiBDKysyMAorICAgIHN0YXRpYyBjb25zdGV4cHIgZHVyYXRpb24gbWF4KCk7ICAvLyBub2V4Y2VwdCBpbiBDKysyMAogfTsKIAogdHlwZWRlZiBkdXJhdGlvbjxsb25nIGxvbmcsICAgICAgICAgbmFubz4gbmFub3NlY29uZHM7CkBAIC0xMzQsOCArMTMzLDggQEAKIAogICAgIC8vIHNwZWNpYWwgdmFsdWVzCiAKLSAgICBzdGF0aWMgY29uc3RleHByIHRpbWVfcG9pbnQgbWluKCk7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB0aW1lX3BvaW50IG1heCgpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdGltZV9wb2ludCBtaW4oKTsgIC8vIG5vZXhjZXB0IGluIEMrKzIwCisgICAgc3RhdGljIGNvbnN0ZXhwciB0aW1lX3BvaW50IG1heCgpOyAgLy8gbm9leGNlcHQgaW4gQysrMjAKIH07CiAKIH0gLy8gY2hyb25vCkBAIC03NDgsNiArNzQ3LDcgQEAKICAgICBwYXJzZShjb25zdCBiYXNpY19zdHJpbmc8Y2hhclQsIHRyYWl0cywgQWxsb2M+JiBmb3JtYXQsIFBhcnNhYmxlJiB0cCwKICAgICAgICAgICBiYXNpY19zdHJpbmc8Y2hhclQsIHRyYWl0cywgQWxsb2M+JiBhYmJyZXYsIG1pbnV0ZXMmIG9mZnNldCk7CiAKKy8vIGNhbGVuZHJpY2FsIGNvbnN0YW50cwogaW5saW5lIGNvbnN0ZXhwciBsYXN0X3NwZWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0e307ICAgICAgIC8vIEMrKzIwCiBpbmxpbmUgY29uc3RleHByIGNocm9ubzo6d2Vla2RheSAgICAgICAgICAgICAgICAgICAgICAgIFN1bmRheXswfTsgICAgLy8gQysrMjAKIGlubGluZSBjb25zdGV4cHIgY2hyb25vOjp3ZWVrZGF5ICAgICAgICAgICAgICAgICAgICAgICAgTW9uZGF5ezF9OyAgICAvLyBDKysyMApAQCAtODA3LDYgKzgwNywxMSBAQAogX0xJQkNQUF9QVVNIX01BQ1JPUwogI2luY2x1ZGUgPF9fdW5kZWZfbWFjcm9zPgogCisjaWZuZGVmIF9MSUJDUFBfQ1hYMDNfTEFORworX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfRklMRVNZU1RFTQorc3RydWN0IF9GaWxlc3lzdGVtQ2xvY2s7CitfTElCQ1BQX0VORF9OQU1FU1BBQ0VfRklMRVNZU1RFTQorI2VuZGlmIC8vICFfTElCQ1BQX0NYWDAzX0xBTkcKIAogX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfU1RECiAKQEAgLTkyMyw5ICs5MjgsOSBAQAogc3RydWN0IF9MSUJDUFBfVEVNUExBVEVfVklTIGR1cmF0aW9uX3ZhbHVlcwogewogcHVibGljOgotICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIF9SZXAgemVybygpIHtyZXR1cm4gX1JlcCgwKTt9Ci0gICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgX1JlcCBtYXgoKSAge3JldHVybiBudW1lcmljX2xpbWl0czxfUmVwPjo6bWF4KCk7fQotICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIF9SZXAgbWluKCkgIHtyZXR1cm4gbnVtZXJpY19saW1pdHM8X1JlcD46Omxvd2VzdCgpO30KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiBfUmVwIHplcm8oKSBfTk9FWENFUFQge3JldHVybiBfUmVwKDApO30KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiBfUmVwIG1heCgpICBfTk9FWENFUFQge3JldHVybiBudW1lcmljX2xpbWl0czxfUmVwPjo6bWF4KCk7fQorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIF9SZXAgbWluKCkgIF9OT0VYQ0VQVCB7cmV0dXJuIG51bWVyaWNfbGltaXRzPF9SZXA+Ojpsb3dlc3QoKTt9CiB9OwogCiAjaWYgX0xJQkNQUF9TVERfVkVSID4gMTQKQEAgLTEwODAsOSArMTA4NSw5IEBACiAKICAgICAvLyBzcGVjaWFsIHZhbHVlcwogCi0gICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgZHVyYXRpb24gemVybygpIHtyZXR1cm4gZHVyYXRpb24oZHVyYXRpb25fdmFsdWVzPHJlcD46Onplcm8oKSk7fQotICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIGR1cmF0aW9uIG1pbigpICB7cmV0dXJuIGR1cmF0aW9uKGR1cmF0aW9uX3ZhbHVlczxyZXA+OjptaW4oKSk7fQotICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIGR1cmF0aW9uIG1heCgpICB7cmV0dXJuIGR1cmF0aW9uKGR1cmF0aW9uX3ZhbHVlczxyZXA+OjptYXgoKSk7fQorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIGR1cmF0aW9uIHplcm8oKSBfTk9FWENFUFQge3JldHVybiBkdXJhdGlvbihkdXJhdGlvbl92YWx1ZXM8cmVwPjo6emVybygpKTt9CisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgZHVyYXRpb24gbWluKCkgIF9OT0VYQ0VQVCB7cmV0dXJuIGR1cmF0aW9uKGR1cmF0aW9uX3ZhbHVlczxyZXA+OjptaW4oKSk7fQorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIGR1cmF0aW9uIG1heCgpICBfTk9FWENFUFQge3JldHVybiBkdXJhdGlvbihkdXJhdGlvbl92YWx1ZXM8cmVwPjo6bWF4KCkpO30KIH07CiAKIHR5cGVkZWYgZHVyYXRpb248bG9uZyBsb25nLCAgICAgICAgIG5hbm8+IG5hbm9zZWNvbmRzOwpAQCAtMTA5MSw3ICsxMDk2LDEyIEBACiB0eXBlZGVmIGR1cmF0aW9uPGxvbmcgbG9uZyAgICAgICAgICAgICAgPiBzZWNvbmRzOwogdHlwZWRlZiBkdXJhdGlvbjwgICAgIGxvbmcsIHJhdGlvPCAgNjA+ID4gbWludXRlczsKIHR5cGVkZWYgZHVyYXRpb248ICAgICBsb25nLCByYXRpbzwzNjAwPiA+IGhvdXJzOwotCisjaWYgX0xJQkNQUF9TVERfVkVSID4gMTcKK3R5cGVkZWYgZHVyYXRpb248ICAgICBpbnQsIHJhdGlvX211bHRpcGx5PHJhdGlvPDI0PiwgaG91cnM6OnBlcmlvZD4+ICAgICAgICAgZGF5czsKK3R5cGVkZWYgZHVyYXRpb248ICAgICBpbnQsIHJhdGlvX211bHRpcGx5PHJhdGlvPDc+LCAgIGRheXM6OnBlcmlvZD4+ICAgICAgICAgd2Vla3M7Cit0eXBlZGVmIGR1cmF0aW9uPCAgICAgaW50LCByYXRpb19tdWx0aXBseTxyYXRpbzwxNDYwOTcsIDQwMD4sIGRheXM6OnBlcmlvZD4+IHllYXJzOwordHlwZWRlZiBkdXJhdGlvbjwgICAgIGludCwgcmF0aW9fZGl2aWRlPHllYXJzOjpwZXJpb2QsIHJhdGlvPDEyPj4+ICAgICAgICAgICBtb250aHM7CisjZW5kaWYKIC8vIER1cmF0aW9uID09CiAKIHRlbXBsYXRlIDxjbGFzcyBfTGhzRHVyYXRpb24sIGNsYXNzIF9SaHNEdXJhdGlvbj4KQEAgLTEzNjMsOCArMTM3Myw4IEBACiAKICAgICAvLyBzcGVjaWFsIHZhbHVlcwogCi0gICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgdGltZV9wb2ludCBtaW4oKSB7cmV0dXJuIHRpbWVfcG9pbnQoZHVyYXRpb246Om1pbigpKTt9Ci0gICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgdGltZV9wb2ludCBtYXgoKSB7cmV0dXJuIHRpbWVfcG9pbnQoZHVyYXRpb246Om1heCgpKTt9CisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgdGltZV9wb2ludCBtaW4oKSBfTk9FWENFUFQge3JldHVybiB0aW1lX3BvaW50KGR1cmF0aW9uOjptaW4oKSk7fQorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIHRpbWVfcG9pbnQgbWF4KCkgX05PRVhDRVBUIHtyZXR1cm4gdGltZV9wb2ludChkdXJhdGlvbjo6bWF4KCkpO30KIH07CiAKIH0gLy8gY2hyb25vCkBAIC0xNTc0LDYgKzE1ODQsMTE1MiBAQAogdHlwZWRlZiBzeXN0ZW1fY2xvY2sgaGlnaF9yZXNvbHV0aW9uX2Nsb2NrOwogI2VuZGlmCiAKKyNpZiBfTElCQ1BQX1NURF9WRVIgPiAxNworLy8gW3RpbWUuY2xvY2suZmlsZV0sIHR5cGUgZmlsZV9jbG9jawordXNpbmcgZmlsZV9jbG9jayA9IF9WU1REX0ZTOjpfRmlsZXN5c3RlbUNsb2NrOworCit0ZW1wbGF0ZTxjbGFzcyBfRHVyYXRpb24+Cit1c2luZyBmaWxlX3RpbWUgPSB0aW1lX3BvaW50PGZpbGVfY2xvY2ssIF9EdXJhdGlvbj47CisKKwordGVtcGxhdGUgPGNsYXNzIF9EdXJhdGlvbj4KK3VzaW5nIHN5c190aW1lICAgID0gdGltZV9wb2ludDxzeXN0ZW1fY2xvY2ssIF9EdXJhdGlvbj47Cit1c2luZyBzeXNfc2Vjb25kcyA9IHN5c190aW1lPHNlY29uZHM+OwordXNpbmcgc3lzX2RheXMgICAgPSBzeXNfdGltZTxkYXlzPjsKKworc3RydWN0IGxvY2FsX3Qge307Cit0ZW1wbGF0ZTxjbGFzcyBEdXJhdGlvbj4KK3VzaW5nIGxvY2FsX3RpbWUgID0gdGltZV9wb2ludDxsb2NhbF90LCBEdXJhdGlvbj47Cit1c2luZyBsb2NhbF9zZWNvbmRzID0gbG9jYWxfdGltZTxzZWNvbmRzPjsKK3VzaW5nIGxvY2FsX2RheXMgICAgPSBsb2NhbF90aW1lPGRheXM+OworCisKK3N0cnVjdCBfTElCQ1BQX1RZUEVfVklTIGxhc3Rfc3BlYyB7IGV4cGxpY2l0IGxhc3Rfc3BlYygpID0gZGVmYXVsdDsgfTsKKworY2xhc3MgX0xJQkNQUF9UWVBFX1ZJUyBkYXkgeworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBjaGFyIF9fZDsKK3B1YmxpYzoKKyAgICBkYXkoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgaW5saW5lIGNvbnN0ZXhwciBkYXkodW5zaWduZWQgX192YWwpIG5vZXhjZXB0IDogX19kKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9fdmFsKSkge30KKyAgICBpbmxpbmUgY29uc3RleHByIGRheSYgb3BlcmF0b3IrKygpICAgIG5vZXhjZXB0IHsgKytfX2Q7IHJldHVybiAqdGhpczsgfQorICAgIGlubGluZSBjb25zdGV4cHIgZGF5ICBvcGVyYXRvcisrKGludCkgbm9leGNlcHQgeyBkYXkgX190bXAgPSAqdGhpczsgKysoKnRoaXMpOyByZXR1cm4gX190bXA7IH0KKyAgICBpbmxpbmUgY29uc3RleHByIGRheSYgb3BlcmF0b3ItLSgpICAgIG5vZXhjZXB0IHsgLS1fX2Q7IHJldHVybiAqdGhpczsgfQorICAgIGlubGluZSBjb25zdGV4cHIgZGF5ICBvcGVyYXRvci0tKGludCkgbm9leGNlcHQgeyBkYXkgX190bXAgPSAqdGhpczsgLS0oKnRoaXMpOyByZXR1cm4gX190bXA7IH0KKyAgICAgICAgICAgY29uc3RleHByIGRheSYgb3BlcmF0b3IrPShjb25zdCBkYXlzJiBfX2RkKSBub2V4Y2VwdDsKKyAgICAgICAgICAgY29uc3RleHByIGRheSYgb3BlcmF0b3ItPShjb25zdCBkYXlzJiBfX2RkKSBub2V4Y2VwdDsKKyAgICBleHBsaWNpdCBpbmxpbmUgY29uc3RleHByIG9wZXJhdG9yIHVuc2lnbmVkKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19kOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciBib29sIG9rKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19kID49IDEgJiYgX19kIDw9IDMxOyB9CisgIH07CisKKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcj09KGNvbnN0IGRheSYgX19saHMsIGNvbnN0IGRheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oX19saHMpID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihfX3Jocyk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvciE9KGNvbnN0IGRheSYgX19saHMsIGNvbnN0IGRheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fbGhzID09IF9fcmhzKTsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPCAoY29uc3QgZGF5JiBfX2xocywgY29uc3QgZGF5JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihfX2xocykgPCAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KF9fcmhzKTsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPiAoY29uc3QgZGF5JiBfX2xocywgY29uc3QgZGF5JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fcmhzIDwgX19saHM7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcjw9KGNvbnN0IGRheSYgX19saHMsIGNvbnN0IGRheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fcmhzIDwgX19saHMpO30KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcj49KGNvbnN0IGRheSYgX19saHMsIGNvbnN0IGRheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fbGhzIDwgX19yaHMpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK2RheSBvcGVyYXRvcisgKGNvbnN0IGRheSYgX19saHMsIGNvbnN0IGRheXMmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gZGF5KHN0YXRpY19jYXN0PHVuc2lnbmVkPihfX2xocykgKyBfX3Jocy5jb3VudCgpKTsgfQorCitpbmxpbmUgY29uc3RleHByCitkYXkgb3BlcmF0b3IrIChjb25zdCBkYXlzJiBfX2xocywgY29uc3QgZGF5JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fcmhzICsgX19saHM7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorZGF5IG9wZXJhdG9yLSAoY29uc3QgZGF5JiBfX2xocywgY29uc3QgZGF5cyYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX2xocyArIC1fX3JoczsgfQorCitpbmxpbmUgY29uc3RleHByCitkYXlzIG9wZXJhdG9yLShjb25zdCBkYXkmIF9fbGhzLCBjb25zdCBkYXkmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gZGF5cyhzdGF0aWNfY2FzdDxpbnQ+KHN0YXRpY19jYXN0PHVuc2lnbmVkPihfX2xocykpIC0KKyAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oX19yaHMpKSk7IH0KKworaW5saW5lIGNvbnN0ZXhwciBkYXkmIGRheTo6b3BlcmF0b3IrPShjb25zdCBkYXlzJiBfX2RkKSBub2V4Y2VwdAoreyAqdGhpcyA9ICp0aGlzICsgX19kZDsgcmV0dXJuICp0aGlzOyB9CisKK2lubGluZSBjb25zdGV4cHIgZGF5JiBkYXk6Om9wZXJhdG9yLT0oY29uc3QgZGF5cyYgX19kZCkgbm9leGNlcHQKK3sgKnRoaXMgPSAqdGhpcyAtIF9fZGQ7IHJldHVybiAqdGhpczsgfQorCisKK2NsYXNzIF9MSUJDUFBfVFlQRV9WSVMgbW9udGggeworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBjaGFyIF9fbTsKK3B1YmxpYzoKKyAgICBtb250aCgpID0gZGVmYXVsdDsKKyAgICBleHBsaWNpdCBpbmxpbmUgY29uc3RleHByIG1vbnRoKHVuc2lnbmVkIF9fdmFsKSBub2V4Y2VwdCA6IF9fbShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihfX3ZhbCkpIHt9CisgICAgaW5saW5lIGNvbnN0ZXhwciBtb250aCYgb3BlcmF0b3IrKygpICAgIG5vZXhjZXB0IHsgKytfX207IHJldHVybiAqdGhpczsgfQorICAgIGlubGluZSBjb25zdGV4cHIgbW9udGggIG9wZXJhdG9yKysoaW50KSBub2V4Y2VwdCB7IG1vbnRoIF9fdG1wID0gKnRoaXM7ICsrKCp0aGlzKTsgcmV0dXJuIF9fdG1wOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciBtb250aCYgb3BlcmF0b3ItLSgpICAgIG5vZXhjZXB0IHsgLS1fX207IHJldHVybiAqdGhpczsgfQorICAgIGlubGluZSBjb25zdGV4cHIgbW9udGggIG9wZXJhdG9yLS0oaW50KSBub2V4Y2VwdCB7IG1vbnRoIF9fdG1wID0gKnRoaXM7IC0tKCp0aGlzKTsgcmV0dXJuIF9fdG1wOyB9CisgICAgICAgICAgIGNvbnN0ZXhwciBtb250aCYgb3BlcmF0b3IrPShjb25zdCBtb250aHMmIF9fbTEpIG5vZXhjZXB0OworICAgICAgICAgICBjb25zdGV4cHIgbW9udGgmIG9wZXJhdG9yLT0oY29uc3QgbW9udGhzJiBfX20xKSBub2V4Y2VwdDsKKyAgICBleHBsaWNpdCBpbmxpbmUgY29uc3RleHByIG9wZXJhdG9yIHVuc2lnbmVkKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19tOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciBib29sIG9rKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19tID49IDEgJiYgX19tIDw9IDEyOyB9Cit9OworCisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCBtb250aCYgX19saHMsIGNvbnN0IG1vbnRoJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihfX2xocykgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KF9fcmhzKTsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yIT0oY29uc3QgbW9udGgmIF9fbGhzLCBjb25zdCBtb250aCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fbGhzID09IF9fcmhzKTsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPCAoY29uc3QgbW9udGgmIF9fbGhzLCBjb25zdCBtb250aCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oX19saHMpICA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihfX3Jocyk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcj4gKGNvbnN0IG1vbnRoJiBfX2xocywgY29uc3QgbW9udGgmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19yaHMgPCBfX2xoczsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPD0oY29uc3QgbW9udGgmIF9fbGhzLCBjb25zdCBtb250aCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fcmhzIDwgX19saHMpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3I+PShjb25zdCBtb250aCYgX19saHMsIGNvbnN0IG1vbnRoJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuICEoX19saHMgPCBfX3Jocyk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorbW9udGggb3BlcmF0b3IrIChjb25zdCBtb250aCYgX19saHMsIGNvbnN0IG1vbnRocyYgX19yaHMpIG5vZXhjZXB0Cit7CisgICAgYXV0byBjb25zdCBfX211ID0gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oX19saHMpKSArIChfX3Jocy5jb3VudCgpIC0gMSk7CisgICAgYXV0byBjb25zdCBfX3lyID0gKF9fbXUgPj0gMCA/IF9fbXUgOiBfX211IC0gMTEpIC8gMTI7CisgICAgcmV0dXJuIG1vbnRoe3N0YXRpY19jYXN0PHVuc2lnbmVkPihfX211IC0gX195ciAqIDEyICsgMSl9OworfQorCitpbmxpbmUgY29uc3RleHByCittb250aCBvcGVyYXRvcisgKGNvbnN0IG1vbnRocyYgX19saHMsIGNvbnN0IG1vbnRoJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fcmhzICsgX19saHM7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorbW9udGggb3BlcmF0b3ItIChjb25zdCBtb250aCYgX19saHMsIGNvbnN0IG1vbnRocyYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX2xocyArIC1fX3JoczsgfQorCitpbmxpbmUgY29uc3RleHByCittb250aHMgb3BlcmF0b3ItKGNvbnN0IG1vbnRoJiBfX2xocywgY29uc3QgbW9udGgmIF9fcmhzKSBub2V4Y2VwdAoreworICAgIGF1dG8gY29uc3QgX19kbSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihfX2xocykgLSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oX19yaHMpOworICAgIHJldHVybiBtb250aHMoX19kbSA8PSAxMSA/IF9fZG0gOiBfX2RtICsgMTIpOworfQorCitpbmxpbmUgY29uc3RleHByIG1vbnRoJiBtb250aDo6b3BlcmF0b3IrPShjb25zdCBtb250aHMmIF9fZG0pIG5vZXhjZXB0Cit7ICp0aGlzID0gKnRoaXMgKyBfX2RtOyByZXR1cm4gKnRoaXM7IH0KKworaW5saW5lIGNvbnN0ZXhwciBtb250aCYgbW9udGg6Om9wZXJhdG9yLT0oY29uc3QgbW9udGhzJiBfX2RtKSBub2V4Y2VwdAoreyAqdGhpcyA9ICp0aGlzIC0gX19kbTsgcmV0dXJuICp0aGlzOyB9CisKKworY2xhc3MgX0xJQkNQUF9UWVBFX1ZJUyB5ZWFyIHsKK3ByaXZhdGU6CisgICAgc2hvcnQgX195OworcHVibGljOgorICAgIHllYXIoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgaW5saW5lIGNvbnN0ZXhwciB5ZWFyKGludCBfX3ZhbCkgbm9leGNlcHQgOiBfX3koc3RhdGljX2Nhc3Q8c2hvcnQ+KF9fdmFsKSkge30KKworICAgIGlubGluZSBjb25zdGV4cHIgeWVhciYgb3BlcmF0b3IrKygpICAgIG5vZXhjZXB0IHsgKytfX3k7IHJldHVybiAqdGhpczsgfQorICAgIGlubGluZSBjb25zdGV4cHIgeWVhciAgb3BlcmF0b3IrKyhpbnQpIG5vZXhjZXB0IHsgeWVhciBfX3RtcCA9ICp0aGlzOyArKygqdGhpcyk7IHJldHVybiBfX3RtcDsgfQorICAgIGlubGluZSBjb25zdGV4cHIgeWVhciYgb3BlcmF0b3ItLSgpICAgIG5vZXhjZXB0IHsgLS1fX3k7IHJldHVybiAqdGhpczsgfQorICAgIGlubGluZSBjb25zdGV4cHIgeWVhciAgb3BlcmF0b3ItLShpbnQpIG5vZXhjZXB0IHsgeWVhciBfX3RtcCA9ICp0aGlzOyAtLSgqdGhpcyk7IHJldHVybiBfX3RtcDsgfQorICAgICAgICAgICBjb25zdGV4cHIgeWVhciYgb3BlcmF0b3IrPShjb25zdCB5ZWFycyYgX19keSkgbm9leGNlcHQ7CisgICAgICAgICAgIGNvbnN0ZXhwciB5ZWFyJiBvcGVyYXRvci09KGNvbnN0IHllYXJzJiBfX2R5KSBub2V4Y2VwdDsKKyAgICBpbmxpbmUgY29uc3RleHByIHllYXIgb3BlcmF0b3IrKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gKnRoaXM7IH0KKyAgICBpbmxpbmUgY29uc3RleHByIHllYXIgb3BlcmF0b3ItKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4geWVhcnstX195fTsgfQorCisgICAgaW5saW5lIGNvbnN0ZXhwciBib29sIGlzX2xlYXAoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3kgJSA0ID09IDAgJiYgKF9feSAlIDEwMCAhPSAwIHx8IF9feSAlIDQwMCA9PSAwKTsgfQorICAgIGV4cGxpY2l0IGlubGluZSBjb25zdGV4cHIgb3BlcmF0b3IgaW50KCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX195OyB9CisgICAgICAgICAgIGNvbnN0ZXhwciBib29sIG9rKCkgY29uc3Qgbm9leGNlcHQ7CisgICAgc3RhdGljIGlubGluZSBjb25zdGV4cHIgeWVhciBtaW4oKSBub2V4Y2VwdCB7IHJldHVybiB5ZWFyey0zMjc2N307IH0KKyAgICBzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciB5ZWFyIG1heCgpIG5vZXhjZXB0IHsgcmV0dXJuIHllYXJ7IDMyNzY3fTsgfQorfTsKKworCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPT0oY29uc3QgeWVhciYgX19saHMsIGNvbnN0IHllYXImIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihfX2xocykgPT0gc3RhdGljX2Nhc3Q8aW50PihfX3Jocyk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvciE9KGNvbnN0IHllYXImIF9fbGhzLCBjb25zdCB5ZWFyJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuICEoX19saHMgPT0gX19yaHMpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3I8IChjb25zdCB5ZWFyJiBfX2xocywgY29uc3QgeWVhciYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KF9fbGhzKSAgPCBzdGF0aWNfY2FzdDxpbnQ+KF9fcmhzKTsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPiAoY29uc3QgeWVhciYgX19saHMsIGNvbnN0IHllYXImIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19yaHMgPCBfX2xoczsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPD0oY29uc3QgeWVhciYgX19saHMsIGNvbnN0IHllYXImIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gIShfX3JocyA8IF9fbGhzKTsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPj0oY29uc3QgeWVhciYgX19saHMsIGNvbnN0IHllYXImIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gIShfX2xocyA8IF9fcmhzKTsgfQorCitpbmxpbmUgY29uc3RleHByCit5ZWFyIG9wZXJhdG9yKyAoY29uc3QgeWVhciYgX19saHMsIGNvbnN0IHllYXJzJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIHllYXIoc3RhdGljX2Nhc3Q8aW50PihfX2xocykgKyBfX3Jocy5jb3VudCgpKTsgfQorCitpbmxpbmUgY29uc3RleHByCit5ZWFyIG9wZXJhdG9yKyAoY29uc3QgeWVhcnMmIF9fbGhzLCBjb25zdCB5ZWFyJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fcmhzICsgX19saHM7IH0KKworaW5saW5lIGNvbnN0ZXhwcgoreWVhciBvcGVyYXRvci0gKGNvbnN0IHllYXImIF9fbGhzLCBjb25zdCB5ZWFycyYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX2xocyArIC1fX3JoczsgfQorCitpbmxpbmUgY29uc3RleHByCit5ZWFycyBvcGVyYXRvci0oY29uc3QgeWVhciYgX19saHMsIGNvbnN0IHllYXImIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4geWVhcnN7c3RhdGljX2Nhc3Q8aW50PihfX2xocykgLSBzdGF0aWNfY2FzdDxpbnQ+KF9fcmhzKX07IH0KKworCitpbmxpbmUgY29uc3RleHByIHllYXImIHllYXI6Om9wZXJhdG9yKz0oY29uc3QgeWVhcnMmIF9fZHkpIG5vZXhjZXB0Cit7ICp0aGlzID0gKnRoaXMgKyBfX2R5OyByZXR1cm4gKnRoaXM7IH0KKworaW5saW5lIGNvbnN0ZXhwciB5ZWFyJiB5ZWFyOjpvcGVyYXRvci09KGNvbnN0IHllYXJzJiBfX2R5KSBub2V4Y2VwdAoreyAqdGhpcyA9ICp0aGlzIC0gX19keTsgcmV0dXJuICp0aGlzOyB9CisKK2lubGluZSBjb25zdGV4cHIgYm9vbCB5ZWFyOjpvaygpIGNvbnN0IG5vZXhjZXB0Cit7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KG1pbigpKSA8PSBfX3kgJiYgX195IDw9IHN0YXRpY19jYXN0PGludD4obWF4KCkpOyB9CisKK2NsYXNzIF9MSUJDUFBfVFlQRV9WSVMgd2Vla2RheV9pbmRleGVkOworY2xhc3MgX0xJQkNQUF9UWVBFX1ZJUyB3ZWVrZGF5X2xhc3Q7CisKK2NsYXNzIF9MSUJDUFBfVFlQRV9WSVMgd2Vla2RheSB7Citwcml2YXRlOgorICAgIHVuc2lnbmVkIGNoYXIgX193ZDsKK3B1YmxpYzoKKyAgd2Vla2RheSgpID0gZGVmYXVsdDsKKyAgaW5saW5lIGV4cGxpY2l0IGNvbnN0ZXhwciB3ZWVrZGF5KHVuc2lnbmVkIF9fdmFsKSBub2V4Y2VwdCA6IF9fd2Qoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oX192YWwpKSB7fQorICBpbmxpbmUgY29uc3RleHByICAgICAgICAgIHdlZWtkYXkoY29uc3Qgc3lzX2RheXMmIF9fc3lzZCkgbm9leGNlcHQKKyAgICAgICAgICA6IF9fd2QoX193ZWVrZGF5X2Zyb21fZGF5cyhfX3N5c2QudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpKSB7fQorICBpbmxpbmUgZXhwbGljaXQgY29uc3RleHByIHdlZWtkYXkoY29uc3QgbG9jYWxfZGF5cyYgX19sb2NkKSBub2V4Y2VwdAorICAgICAgICAgIDogX193ZChfX3dlZWtkYXlfZnJvbV9kYXlzKF9fbG9jZC50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSkpIHt9CisKKyAgaW5saW5lIGNvbnN0ZXhwciB3ZWVrZGF5JiBvcGVyYXRvcisrKCkgICAgbm9leGNlcHQgeyBfX3dkID0gKF9fd2QgPT0gNiA/IDAgOiBfX3dkICsgMSk7IHJldHVybiAqdGhpczsgfQorICBpbmxpbmUgY29uc3RleHByIHdlZWtkYXkgIG9wZXJhdG9yKysoaW50KSBub2V4Y2VwdCB7IHdlZWtkYXkgX190bXAgPSAqdGhpczsgKysoKnRoaXMpOyByZXR1cm4gX190bXA7IH0KKyAgaW5saW5lIGNvbnN0ZXhwciB3ZWVrZGF5JiBvcGVyYXRvci0tKCkgICAgbm9leGNlcHQgeyBfX3dkID0gKF9fd2QgPT0gMCA/IDYgOiBfX3dkIC0gMSk7IHJldHVybiAqdGhpczsgfQorICBpbmxpbmUgY29uc3RleHByIHdlZWtkYXkgIG9wZXJhdG9yLS0oaW50KSBub2V4Y2VwdCB7IHdlZWtkYXkgX190bXAgPSAqdGhpczsgLS0oKnRoaXMpOyByZXR1cm4gX190bXA7IH0KKyAgICAgICAgIGNvbnN0ZXhwciB3ZWVrZGF5JiBvcGVyYXRvcis9KGNvbnN0IGRheXMmIF9fZGQpIG5vZXhjZXB0OworICAgICAgICAgY29uc3RleHByIHdlZWtkYXkmIG9wZXJhdG9yLT0oY29uc3QgZGF5cyYgX19kZCkgbm9leGNlcHQ7CisgIGlubGluZSBleHBsaWNpdCBjb25zdGV4cHIgb3BlcmF0b3IgdW5zaWduZWQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3dkOyB9CisgIGlubGluZSBjb25zdGV4cHIgYm9vbCBvaygpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fd2QgPD0gNjsgfQorICAgICAgICAgY29uc3RleHByIHdlZWtkYXlfaW5kZXhlZCBvcGVyYXRvcltdKHVuc2lnbmVkIF9faW5kZXgpIGNvbnN0IG5vZXhjZXB0OworICAgICAgICAgY29uc3RleHByIHdlZWtkYXlfbGFzdCAgICBvcGVyYXRvcltdKGxhc3Rfc3BlYykgY29uc3Qgbm9leGNlcHQ7CisKKyAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjaGFyIF9fd2Vla2RheV9mcm9tX2RheXMoaW50IF9fZGF5cykgbm9leGNlcHQ7Cit9OworCisKKy8vIGh0dHBzOi8vaG93YXJkaGlubmFudC5naXRodWIuaW8vZGF0ZV9hbGdvcml0aG1zLmh0bWwjd2Vla2RheV9mcm9tX2RheXMKK2lubGluZSBjb25zdGV4cHIKK3Vuc2lnbmVkIGNoYXIgd2Vla2RheTo6X193ZWVrZGF5X2Zyb21fZGF5cyhpbnQgX19kYXlzKSBub2V4Y2VwdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigKKyAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KF9fZGF5cyA+PSAtNCA/IChfX2RheXMrNCkgJSA3IDogKF9fZGF5cys1KSAlIDcgKyA2KQorICAgICAgICAgICApOworfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPT0oY29uc3Qgd2Vla2RheSYgX19saHMsIGNvbnN0IHdlZWtkYXkmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KF9fbGhzKSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oX19yaHMpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCB3ZWVrZGF5JiBfX2xocywgY29uc3Qgd2Vla2RheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fbGhzID09IF9fcmhzKTsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPCAoY29uc3Qgd2Vla2RheSYgX19saHMsIGNvbnN0IHdlZWtkYXkmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KF9fbGhzKSA8ICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oX19yaHMpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3I+IChjb25zdCB3ZWVrZGF5JiBfX2xocywgY29uc3Qgd2Vla2RheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX3JocyA8IF9fbGhzOyB9CisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3I8PShjb25zdCB3ZWVrZGF5JiBfX2xocywgY29uc3Qgd2Vla2RheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fcmhzIDwgX19saHMpO30KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcj49KGNvbnN0IHdlZWtkYXkmIF9fbGhzLCBjb25zdCB3ZWVrZGF5JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuICEoX19saHMgPCBfX3Jocyk7IH0KKworY29uc3RleHByIHdlZWtkYXkgb3BlcmF0b3IrKGNvbnN0IHdlZWtkYXkmIF9fbGhzLCBjb25zdCBkYXlzJiBfX3Jocykgbm9leGNlcHQKK3sKKyAgICBhdXRvIGNvbnN0IF9fbXUgPSBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHN0YXRpY19jYXN0PHVuc2lnbmVkPihfX2xocykpICsgX19yaHMuY291bnQoKTsKKyAgICBhdXRvIGNvbnN0IF9feXIgPSAoX19tdSA+PSAwID8gX19tdSA6IF9fbXUgLSA2KSAvIDc7CisgICAgcmV0dXJuIHdlZWtkYXl7c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KF9fbXUgLSBfX3lyICogNyl9OworfQorCitjb25zdGV4cHIgd2Vla2RheSBvcGVyYXRvcisoY29uc3QgZGF5cyYgX19saHMsIGNvbnN0IHdlZWtkYXkmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19yaHMgKyBfX2xoczsgfQorCitjb25zdGV4cHIgd2Vla2RheSBvcGVyYXRvci0oY29uc3Qgd2Vla2RheSYgX19saHMsIGNvbnN0IGRheXMmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19saHMgKyAtX19yaHM7IH0KKworY29uc3RleHByIGRheXMgb3BlcmF0b3ItKGNvbnN0IHdlZWtkYXkmIF9fbGhzLCBjb25zdCB3ZWVrZGF5JiBfX3Jocykgbm9leGNlcHQKK3sKKyAgICBjb25zdCBpbnQgX193ZHUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oX19saHMpIC0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KF9fcmhzKTsKKyAgICBjb25zdCBpbnQgX193ayA9IChfX3dkdSA+PSAwID8gX193ZHUgOiBfX3dkdS02KSAvIDc7CisgICAgcmV0dXJuIGRheXN7X193ZHUgLSBfX3drICogN307Cit9CisKK2lubGluZSBjb25zdGV4cHIgd2Vla2RheSYgd2Vla2RheTo6b3BlcmF0b3IrPShjb25zdCBkYXlzJiBfX2RkKSBub2V4Y2VwdAoreyAqdGhpcyA9ICp0aGlzICsgX19kZDsgcmV0dXJuICp0aGlzOyB9CisKK2lubGluZSBjb25zdGV4cHIgd2Vla2RheSYgd2Vla2RheTo6b3BlcmF0b3ItPShjb25zdCBkYXlzJiBfX2RkKSBub2V4Y2VwdAoreyAqdGhpcyA9ICp0aGlzIC0gX19kZDsgcmV0dXJuICp0aGlzOyB9CisKKworY2xhc3MgX0xJQkNQUF9UWVBFX1ZJUyB3ZWVrZGF5X2luZGV4ZWQgeworcHJpdmF0ZToKKyAgICBfVlNURDo6Y2hyb25vOjp3ZWVrZGF5IF9fd2Q7CisgICAgdW5zaWduZWQgY2hhciAgICAgICAgICBfX2lkeDsKK3B1YmxpYzoKKyAgICB3ZWVrZGF5X2luZGV4ZWQoKSA9IGRlZmF1bHQ7CisgICAgaW5saW5lIGNvbnN0ZXhwciB3ZWVrZGF5X2luZGV4ZWQoY29uc3QgX1ZTVEQ6OmNocm9ubzo6d2Vla2RheSYgX193ZHZhbCwgdW5zaWduZWQgX19pZHh2YWwpIG5vZXhjZXB0CisgICAgICAgIDogX193ZHtfX3dkdmFsfSwgX19pZHgoX19pZHh2YWwpIHt9CisgICAgaW5saW5lIGNvbnN0ZXhwciBfVlNURDo6Y2hyb25vOjp3ZWVrZGF5IHdlZWtkYXkoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3dkOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciB1bnNpZ25lZCAgICAgICAgICAgICAgICAgaW5kZXgoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX2lkeDsgfQorICAgIGlubGluZSBjb25zdGV4cHIgYm9vbCBvaygpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fd2Qub2soKSAmJiBfX2lkeCA+PSAxICYmIF9faWR4IDw9IDU7IH0KK307CisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCB3ZWVrZGF5X2luZGV4ZWQmIF9fbGhzLCBjb25zdCB3ZWVrZGF5X2luZGV4ZWQmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19saHMud2Vla2RheSgpID09IF9fcmhzLndlZWtkYXkoKSAmJiBfX2xocy5pbmRleCgpID09IF9fcmhzLmluZGV4KCk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvciE9KGNvbnN0IHdlZWtkYXlfaW5kZXhlZCYgX19saHMsIGNvbnN0IHdlZWtkYXlfaW5kZXhlZCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fbGhzID09IF9fcmhzKTsgfQorCisKK2NsYXNzIF9MSUJDUFBfVFlQRV9WSVMgd2Vla2RheV9sYXN0IHsKK3ByaXZhdGU6CisgICAgX1ZTVEQ6OmNocm9ubzo6d2Vla2RheSBfX3dkOworcHVibGljOgorICAgIGV4cGxpY2l0IGNvbnN0ZXhwciB3ZWVrZGF5X2xhc3QoY29uc3QgX1ZTVEQ6OmNocm9ubzo6d2Vla2RheSYgX192YWwpIG5vZXhjZXB0CisgICAgICAgIDogX193ZHtfX3ZhbH0ge30KKyAgICBjb25zdGV4cHIgX1ZTVEQ6OmNocm9ubzo6d2Vla2RheSB3ZWVrZGF5KCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX193ZDsgfQorICAgIGNvbnN0ZXhwciBib29sIG9rKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX193ZC5vaygpOyB9Cit9OworCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPT0oY29uc3Qgd2Vla2RheV9sYXN0JiBfX2xocywgY29uc3Qgd2Vla2RheV9sYXN0JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fbGhzLndlZWtkYXkoKSA9PSBfX3Jocy53ZWVrZGF5KCk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvciE9KGNvbnN0IHdlZWtkYXlfbGFzdCYgX19saHMsIGNvbnN0IHdlZWtkYXlfbGFzdCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fbGhzID09IF9fcmhzKTsgfQorCitpbmxpbmUgY29uc3RleHByCit3ZWVrZGF5X2luZGV4ZWQgd2Vla2RheTo6b3BlcmF0b3JbXSh1bnNpZ25lZCBfX2luZGV4KSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiB3ZWVrZGF5X2luZGV4ZWR7KnRoaXMsIF9faW5kZXh9OyB9CisKK2lubGluZSBjb25zdGV4cHIgCit3ZWVrZGF5X2xhc3QgICAgd2Vla2RheTo6b3BlcmF0b3JbXShsYXN0X3NwZWMpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIHdlZWtkYXlfbGFzdHsqdGhpc307IH0KKworCitpbmxpbmUgY29uc3RleHByIGxhc3Rfc3BlYyBsYXN0e307CitpbmxpbmUgY29uc3RleHByIHdlZWtkYXkgICBTdW5kYXl7MH07CitpbmxpbmUgY29uc3RleHByIHdlZWtkYXkgICBNb25kYXl7MX07CitpbmxpbmUgY29uc3RleHByIHdlZWtkYXkgICBUdWVzZGF5ezJ9OworaW5saW5lIGNvbnN0ZXhwciB3ZWVrZGF5ICAgV2VkbmVzZGF5ezN9OworaW5saW5lIGNvbnN0ZXhwciB3ZWVrZGF5ICAgVGh1cnNkYXl7NH07CitpbmxpbmUgY29uc3RleHByIHdlZWtkYXkgICBGcmlkYXl7NX07CitpbmxpbmUgY29uc3RleHByIHdlZWtkYXkgICBTYXR1cmRheXs2fTsKKworaW5saW5lIGNvbnN0ZXhwciBtb250aCBKYW51YXJ5ezF9OworaW5saW5lIGNvbnN0ZXhwciBtb250aCBGZWJydWFyeXsyfTsKK2lubGluZSBjb25zdGV4cHIgbW9udGggTWFyY2h7M307CitpbmxpbmUgY29uc3RleHByIG1vbnRoIEFwcmlsezR9OworaW5saW5lIGNvbnN0ZXhwciBtb250aCBNYXl7NX07CitpbmxpbmUgY29uc3RleHByIG1vbnRoIEp1bmV7Nn07CitpbmxpbmUgY29uc3RleHByIG1vbnRoIEp1bHl7N307CitpbmxpbmUgY29uc3RleHByIG1vbnRoIEF1Z3VzdHs4fTsKK2lubGluZSBjb25zdGV4cHIgbW9udGggU2VwdGVtYmVyezl9OworaW5saW5lIGNvbnN0ZXhwciBtb250aCBPY3RvYmVyezEwfTsKK2lubGluZSBjb25zdGV4cHIgbW9udGggTm92ZW1iZXJ7MTF9OworaW5saW5lIGNvbnN0ZXhwciBtb250aCBEZWNlbWJlcnsxMn07CisKKworY2xhc3MgX0xJQkNQUF9UWVBFX1ZJUyBtb250aF9kYXkgeworcHJpdmF0ZToKKyAgIGNocm9ubzo6bW9udGggX19tOworICAgY2hyb25vOjpkYXkgICBfX2Q7CitwdWJsaWM6CisgICAgbW9udGhfZGF5KCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciBtb250aF9kYXkoY29uc3QgY2hyb25vOjptb250aCYgX19tdmFsLCBjb25zdCBjaHJvbm86OmRheSYgX19kdmFsKSBub2V4Y2VwdAorICAgICAgICA6IF9fbXtfX212YWx9LCBfX2R7X19kdmFsfSB7fQorICAgIGlubGluZSBjb25zdGV4cHIgY2hyb25vOjptb250aCBtb250aCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fbTsgfQorICAgIGlubGluZSBjb25zdGV4cHIgY2hyb25vOjpkYXkgICBkYXkoKSAgIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fZDsgfQorICAgIGNvbnN0ZXhwciBib29sIG9rKCkgY29uc3Qgbm9leGNlcHQ7Cit9OworCitpbmxpbmUgY29uc3RleHByCitib29sIG1vbnRoX2RheTo6b2soKSBjb25zdCBub2V4Y2VwdAoreworICAgIGlmICghX19tLm9rKCkpIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCB1bnNpZ25lZCBfX2R2YWwgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oX19kKTsKKyAgICBpZiAoX19kdmFsIDwgMSB8fCBfX2R2YWwgPiAzMSkgcmV0dXJuIGZhbHNlOworICAgIGlmIChfX2R2YWwgPD0gMjkpIHJldHVybiB0cnVlOworLy8gIE5vdyB3ZSd2ZSBnb3QgZWl0aGVyIDMwIG9yIDMxCisgICAgY29uc3QgdW5zaWduZWQgX19tdmFsID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KF9fbSk7CisgICAgaWYgKF9fbXZhbCA9PSAyKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKF9fbXZhbCA9PSA0IHx8IF9fbXZhbCA9PSA2IHx8IF9fbXZhbCA9PSA5IHx8IF9fbXZhbCA9PSAxMSkKKyAgICAgICAgcmV0dXJuIF9fZHZhbCA9PSAzMDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcj09KGNvbnN0IG1vbnRoX2RheSYgX19saHMsIGNvbnN0IG1vbnRoX2RheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX2xocy5tb250aCgpID09IF9fcmhzLm1vbnRoKCkgJiYgX19saHMuZGF5KCkgPT0gX19yaHMuZGF5KCk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvciE9KGNvbnN0IG1vbnRoX2RheSYgX19saHMsIGNvbnN0IG1vbnRoX2RheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fbGhzID09IF9fcmhzKTsgfQorCitpbmxpbmUgY29uc3RleHByCittb250aF9kYXkgb3BlcmF0b3IvKGNvbnN0IG1vbnRoJiBfX2xocywgY29uc3QgZGF5JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIG1vbnRoX2RheXtfX2xocywgX19yaHN9OyB9CisKK2NvbnN0ZXhwcgorbW9udGhfZGF5IG9wZXJhdG9yLyhjb25zdCBkYXkmIF9fbGhzLCBjb25zdCBtb250aCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX3JocyAvIF9fbGhzOyB9CisKK2lubGluZSBjb25zdGV4cHIKK21vbnRoX2RheSBvcGVyYXRvci8oY29uc3QgbW9udGgmIF9fbGhzLCBpbnQgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX2xocyAvIGRheShfX3Jocyk7IH0KKworY29uc3RleHByCittb250aF9kYXkgb3BlcmF0b3IvKGludCBfX2xocywgY29uc3QgZGF5JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIG1vbnRoKF9fbGhzKSAvIF9fcmhzOyB9CisKK2NvbnN0ZXhwcgorbW9udGhfZGF5IG9wZXJhdG9yLyhjb25zdCBkYXkmIF9fbGhzLCBpbnQgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBtb250aChfX3JocykgLyBfX2xoczsgfQorCisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3I8IChjb25zdCBtb250aF9kYXkmIF9fbGhzLCBjb25zdCBtb250aF9kYXkmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19saHMubW9udGgoKSAhPSBfX3Jocy5tb250aCgpID8gX19saHMubW9udGgoKSA8IF9fcmhzLm1vbnRoKCkgOiBfX2xocy5kYXkoKSA8IF9fcmhzLmRheSgpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3I+IChjb25zdCBtb250aF9kYXkmIF9fbGhzLCBjb25zdCBtb250aF9kYXkmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19yaHMgPCBfX2xoczsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPD0oY29uc3QgbW9udGhfZGF5JiBfX2xocywgY29uc3QgbW9udGhfZGF5JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuICEoX19yaHMgPCBfX2xocyk7fQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPj0oY29uc3QgbW9udGhfZGF5JiBfX2xocywgY29uc3QgbW9udGhfZGF5JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuICEoX19saHMgPCBfX3Jocyk7IH0KKworCisKK2NsYXNzIF9MSUJDUFBfVFlQRV9WSVMgbW9udGhfZGF5X2xhc3QgeworcHJpdmF0ZToKKyAgICBjaHJvbm86Om1vbnRoIF9fbTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBjb25zdGV4cHIgbW9udGhfZGF5X2xhc3QoY29uc3QgY2hyb25vOjptb250aCYgX192YWwpIG5vZXhjZXB0CisgICAgICAgIDogX19te19fdmFsfSB7fQorICAgIGlubGluZSBjb25zdGV4cHIgY2hyb25vOjptb250aCBtb250aCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fbTsgfQorICAgIGlubGluZSBjb25zdGV4cHIgYm9vbCBvaygpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fbS5vaygpOyB9Cit9OworCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPT0oY29uc3QgbW9udGhfZGF5X2xhc3QmIF9fbGhzLCBjb25zdCBtb250aF9kYXlfbGFzdCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX2xocy5tb250aCgpID09IF9fcmhzLm1vbnRoKCk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvciE9KGNvbnN0IG1vbnRoX2RheV9sYXN0JiBfX2xocywgY29uc3QgbW9udGhfZGF5X2xhc3QmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gIShfX2xocyA9PSBfX3Jocyk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcjwgKGNvbnN0IG1vbnRoX2RheV9sYXN0JiBfX2xocywgY29uc3QgbW9udGhfZGF5X2xhc3QmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19saHMubW9udGgoKSA8IF9fcmhzLm1vbnRoKCk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcj4gKGNvbnN0IG1vbnRoX2RheV9sYXN0JiBfX2xocywgY29uc3QgbW9udGhfZGF5X2xhc3QmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19yaHMgPCBfX2xoczsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPD0oY29uc3QgbW9udGhfZGF5X2xhc3QmIF9fbGhzLCBjb25zdCBtb250aF9kYXlfbGFzdCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fcmhzIDwgX19saHMpO30KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcj49KGNvbnN0IG1vbnRoX2RheV9sYXN0JiBfX2xocywgY29uc3QgbW9udGhfZGF5X2xhc3QmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gIShfX2xocyA8IF9fcmhzKTsgfQorCitpbmxpbmUgY29uc3RleHByCittb250aF9kYXlfbGFzdCBvcGVyYXRvci8oY29uc3QgbW9udGgmIF9fbGhzLCBsYXN0X3NwZWMpIG5vZXhjZXB0Cit7IHJldHVybiBtb250aF9kYXlfbGFzdHtfX2xoc307IH0KKworaW5saW5lIGNvbnN0ZXhwcgorbW9udGhfZGF5X2xhc3Qgb3BlcmF0b3IvKGxhc3Rfc3BlYywgY29uc3QgbW9udGgmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gbW9udGhfZGF5X2xhc3R7X19yaHN9OyB9CisKK2lubGluZSBjb25zdGV4cHIKK21vbnRoX2RheV9sYXN0IG9wZXJhdG9yLyhpbnQgX19saHMsIGxhc3Rfc3BlYykgbm9leGNlcHQKK3sgcmV0dXJuIG1vbnRoX2RheV9sYXN0e21vbnRoKF9fbGhzKX07IH0KKworaW5saW5lIGNvbnN0ZXhwcgorbW9udGhfZGF5X2xhc3Qgb3BlcmF0b3IvKGxhc3Rfc3BlYywgaW50IF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gbW9udGhfZGF5X2xhc3R7bW9udGgoX19yaHMpfTsgfQorCisKK2NsYXNzIF9MSUJDUFBfVFlQRV9WSVMgbW9udGhfd2Vla2RheSB7Citwcml2YXRlOgorICAgIGNocm9ubzo6bW9udGggX19tOworICAgIGNocm9ubzo6d2Vla2RheV9pbmRleGVkIF9fd2RpOworcHVibGljOgorICAgIG1vbnRoX3dlZWtkYXkoKSA9IGRlZmF1bHQ7CisgICAgY29uc3RleHByIG1vbnRoX3dlZWtkYXkoY29uc3QgY2hyb25vOjptb250aCYgX19tdmFsLCBjb25zdCBjaHJvbm86OndlZWtkYXlfaW5kZXhlZCYgX193ZGl2YWwpIG5vZXhjZXB0CisgICAgICAgIDogX19te19fbXZhbH0sIF9fd2Rpe19fd2RpdmFsfSB7fQorICAgIGlubGluZSBjb25zdGV4cHIgY2hyb25vOjptb250aCAgICAgICAgICAgICAgICAgICAgIG1vbnRoKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19tOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciBjaHJvbm86OndlZWtkYXlfaW5kZXhlZCB3ZWVrZGF5X2luZGV4ZWQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3dkaTsgfQorICAgIGlubGluZSBjb25zdGV4cHIgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19tLm9rKCkgJiYgX193ZGkub2soKTsgfQorfTsKKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcj09KGNvbnN0IG1vbnRoX3dlZWtkYXkmIF9fbGhzLCBjb25zdCBtb250aF93ZWVrZGF5JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fbGhzLm1vbnRoKCkgPT0gX19yaHMubW9udGgoKSAmJiBfX2xocy53ZWVrZGF5X2luZGV4ZWQoKSA9PSBfX3Jocy53ZWVrZGF5X2luZGV4ZWQoKTsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yIT0oY29uc3QgbW9udGhfd2Vla2RheSYgX19saHMsIGNvbnN0IG1vbnRoX3dlZWtkYXkmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gIShfX2xocyA9PSBfX3Jocyk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorbW9udGhfd2Vla2RheSBvcGVyYXRvci8oY29uc3QgbW9udGgmIF9fbGhzLCBjb25zdCB3ZWVrZGF5X2luZGV4ZWQmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gbW9udGhfd2Vla2RheXtfX2xocywgX19yaHN9OyB9CisKK2lubGluZSBjb25zdGV4cHIKK21vbnRoX3dlZWtkYXkgb3BlcmF0b3IvKGludCBfX2xocywgY29uc3Qgd2Vla2RheV9pbmRleGVkJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIG1vbnRoX3dlZWtkYXl7bW9udGgoX19saHMpLCBfX3Joc307IH0KKworaW5saW5lIGNvbnN0ZXhwcgorbW9udGhfd2Vla2RheSBvcGVyYXRvci8oY29uc3Qgd2Vla2RheV9pbmRleGVkJiBfX2xocywgY29uc3QgbW9udGgmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gbW9udGhfd2Vla2RheXtfX3JocywgX19saHN9OyB9CisKK2lubGluZSBjb25zdGV4cHIKK21vbnRoX3dlZWtkYXkgb3BlcmF0b3IvKGNvbnN0IHdlZWtkYXlfaW5kZXhlZCYgX19saHMsIGludCBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIG1vbnRoX3dlZWtkYXl7bW9udGgoX19yaHMpLCBfX2xoc307IH0KKworCitjbGFzcyBfTElCQ1BQX1RZUEVfVklTIG1vbnRoX3dlZWtkYXlfbGFzdCB7CisgICAgY2hyb25vOjptb250aCAgICAgICAgX19tOworICAgIGNocm9ubzo6d2Vla2RheV9sYXN0IF9fd2RsOworICBwdWJsaWM6CisgICAgY29uc3RleHByIG1vbnRoX3dlZWtkYXlfbGFzdChjb25zdCBjaHJvbm86Om1vbnRoJiBfX212YWwsIGNvbnN0IGNocm9ubzo6d2Vla2RheV9sYXN0JiBfX3dkbHZhbCkgbm9leGNlcHQKKyAgICAgICAgOiBfX217X19tdmFsfSwgX193ZGx7X193ZGx2YWx9IHt9CisgICAgaW5saW5lIGNvbnN0ZXhwciBjaHJvbm86Om1vbnRoICAgICAgICAgICAgICAgbW9udGgoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX207IH0KKyAgICBpbmxpbmUgY29uc3RleHByIGNocm9ubzo6d2Vla2RheV9sYXN0IHdlZWtkYXlfbGFzdCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fd2RsOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgb2soKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX20ub2soKSAmJiBfX3dkbC5vaygpOyB9Cit9OworCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPT0oY29uc3QgbW9udGhfd2Vla2RheV9sYXN0JiBfX2xocywgY29uc3QgbW9udGhfd2Vla2RheV9sYXN0JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fbGhzLm1vbnRoKCkgPT0gX19yaHMubW9udGgoKSAmJiBfX2xocy53ZWVrZGF5X2xhc3QoKSA9PSBfX3Jocy53ZWVrZGF5X2xhc3QoKTsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yIT0oY29uc3QgbW9udGhfd2Vla2RheV9sYXN0JiBfX2xocywgY29uc3QgbW9udGhfd2Vla2RheV9sYXN0JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuICEoX19saHMgPT0gX19yaHMpOyB9CisKKworaW5saW5lIGNvbnN0ZXhwcgorbW9udGhfd2Vla2RheV9sYXN0IG9wZXJhdG9yLyhjb25zdCBtb250aCYgX19saHMsIGNvbnN0IHdlZWtkYXlfbGFzdCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBtb250aF93ZWVrZGF5X2xhc3R7X19saHMsIF9fcmhzfTsgfQorCitpbmxpbmUgY29uc3RleHByCittb250aF93ZWVrZGF5X2xhc3Qgb3BlcmF0b3IvKGludCBfX2xocywgY29uc3Qgd2Vla2RheV9sYXN0JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIG1vbnRoX3dlZWtkYXlfbGFzdHttb250aChfX2xocyksIF9fcmhzfTsgfQorCitpbmxpbmUgY29uc3RleHByCittb250aF93ZWVrZGF5X2xhc3Qgb3BlcmF0b3IvKGNvbnN0IHdlZWtkYXlfbGFzdCYgX19saHMsIGNvbnN0IG1vbnRoJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIG1vbnRoX3dlZWtkYXlfbGFzdHtfX3JocywgX19saHN9OyB9CisKK2lubGluZSBjb25zdGV4cHIKK21vbnRoX3dlZWtkYXlfbGFzdCBvcGVyYXRvci8oY29uc3Qgd2Vla2RheV9sYXN0JiBfX2xocywgaW50IF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gbW9udGhfd2Vla2RheV9sYXN0e21vbnRoKF9fcmhzKSwgX19saHN9OyB9CisKKworY2xhc3MgX0xJQkNQUF9UWVBFX1ZJUyB5ZWFyX21vbnRoIHsKKyAgICBjaHJvbm86OnllYXIgIF9feTsKKyAgICBjaHJvbm86Om1vbnRoIF9fbTsKK3B1YmxpYzoKKyAgICB5ZWFyX21vbnRoKCkgPSBkZWZhdWx0OworICAgIGNvbnN0ZXhwciB5ZWFyX21vbnRoKGNvbnN0IGNocm9ubzo6eWVhciYgX195dmFsLCBjb25zdCBjaHJvbm86Om1vbnRoJiBfX212YWwpIG5vZXhjZXB0CisgICAgICAgIDogX195e19feXZhbH0sIF9fbXtfX212YWx9IHt9CisgICAgaW5saW5lIGNvbnN0ZXhwciBjaHJvbm86OnllYXIgIHllYXIoKSAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX195OyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciBjaHJvbm86Om1vbnRoIG1vbnRoKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19tOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciB5ZWFyX21vbnRoJiBvcGVyYXRvcis9KGNvbnN0IG1vbnRocyYgX19kbSkgbm9leGNlcHQgeyB0aGlzLT5fX20gKz0gX19kbTsgcmV0dXJuICp0aGlzOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciB5ZWFyX21vbnRoJiBvcGVyYXRvci09KGNvbnN0IG1vbnRocyYgX19kbSkgbm9leGNlcHQgeyB0aGlzLT5fX20gLT0gX19kbTsgcmV0dXJuICp0aGlzOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciB5ZWFyX21vbnRoJiBvcGVyYXRvcis9KGNvbnN0IHllYXJzJiBfX2R5KSAgbm9leGNlcHQgeyB0aGlzLT5fX3kgKz0gX19keTsgcmV0dXJuICp0aGlzOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciB5ZWFyX21vbnRoJiBvcGVyYXRvci09KGNvbnN0IHllYXJzJiBfX2R5KSAgbm9leGNlcHQgeyB0aGlzLT5fX3kgLT0gX19keTsgcmV0dXJuICp0aGlzOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciBib29sIG9rKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX195Lm9rKCkgJiYgX19tLm9rKCk7IH0KK307CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGggb3BlcmF0b3IvKGNvbnN0IHllYXImIF9feSwgY29uc3QgbW9udGgmIF9fbSkgbm9leGNlcHQgeyByZXR1cm4geWVhcl9tb250aHtfX3ksIF9fbX07IH0KKworaW5saW5lIGNvbnN0ZXhwcgoreWVhcl9tb250aCBvcGVyYXRvci8oY29uc3QgeWVhciYgX195LCBpbnQgX19tKSBub2V4Y2VwdCB7IHJldHVybiB5ZWFyX21vbnRoe19feSwgbW9udGgoX19tKX07IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcj09KGNvbnN0IHllYXJfbW9udGgmIF9fbGhzLCBjb25zdCB5ZWFyX21vbnRoJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fbGhzLnllYXIoKSA9PSBfX3Jocy55ZWFyKCkgJiYgX19saHMubW9udGgoKSA9PSBfX3Jocy5tb250aCgpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3IhPShjb25zdCB5ZWFyX21vbnRoJiBfX2xocywgY29uc3QgeWVhcl9tb250aCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fbGhzID09IF9fcmhzKTsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPCAoY29uc3QgeWVhcl9tb250aCYgX19saHMsIGNvbnN0IHllYXJfbW9udGgmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19saHMueWVhcigpICE9IF9fcmhzLnllYXIoKSA/IF9fbGhzLnllYXIoKSA8IF9fcmhzLnllYXIoKSA6IF9fbGhzLm1vbnRoKCkgPCBfX3Jocy5tb250aCgpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3I+IChjb25zdCB5ZWFyX21vbnRoJiBfX2xocywgY29uc3QgeWVhcl9tb250aCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX3JocyA8IF9fbGhzOyB9CisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3I8PShjb25zdCB5ZWFyX21vbnRoJiBfX2xocywgY29uc3QgeWVhcl9tb250aCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fcmhzIDwgX19saHMpO30KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcj49KGNvbnN0IHllYXJfbW9udGgmIF9fbGhzLCBjb25zdCB5ZWFyX21vbnRoJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuICEoX19saHMgPCBfX3Jocyk7IH0KKworY29uc3RleHByIHllYXJfbW9udGggb3BlcmF0b3IrKGNvbnN0IHllYXJfbW9udGgmIF9fbGhzLCBjb25zdCBtb250aHMmIF9fcmhzKSBub2V4Y2VwdAoreworICAgIGludCBfX2RtaSA9IHN0YXRpY19jYXN0PGludD4oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KF9fbGhzLm1vbnRoKCkpKSAtIDEgKyBfX3Jocy5jb3VudCgpOworICAgIGNvbnN0IGludCBfX2R5ID0gKF9fZG1pID49IDAgPyBfX2RtaSA6IF9fZG1pLTExKSAvIDEyOworICAgIF9fZG1pID0gX19kbWkgLSBfX2R5ICogMTIgKyAxOworICAgIHJldHVybiAoX19saHMueWVhcigpICsgeWVhcnMoX19keSkpIC8gbW9udGgoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KF9fZG1pKSk7Cit9CisKK2NvbnN0ZXhwciB5ZWFyX21vbnRoIG9wZXJhdG9yKyhjb25zdCBtb250aHMmIF9fbGhzLCBjb25zdCB5ZWFyX21vbnRoJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fcmhzICsgX19saHM7IH0KKworY29uc3RleHByIHllYXJfbW9udGggb3BlcmF0b3IrKGNvbnN0IHllYXJfbW9udGgmIF9fbGhzLCBjb25zdCB5ZWFycyYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAoX19saHMueWVhcigpICsgX19yaHMpIC8gX19saHMubW9udGgoKTsgfQorCitjb25zdGV4cHIgeWVhcl9tb250aCBvcGVyYXRvcisoY29uc3QgeWVhcnMmIF9fbGhzLCBjb25zdCB5ZWFyX21vbnRoJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fcmhzICsgX19saHM7IH0KKworY29uc3RleHByIG1vbnRocyAgICAgb3BlcmF0b3ItKGNvbnN0IHllYXJfbW9udGgmIF9fbGhzLCBjb25zdCB5ZWFyX21vbnRoJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIChfX2xocy55ZWFyKCkgLSBfX3Jocy55ZWFyKCkpICsgbW9udGhzKHN0YXRpY19jYXN0PHVuc2lnbmVkPihfX2xocy5tb250aCgpKSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkPihfX3Jocy5tb250aCgpKSk7IH0KKworY29uc3RleHByIHllYXJfbW9udGggb3BlcmF0b3ItKGNvbnN0IHllYXJfbW9udGgmIF9fbGhzLCBjb25zdCBtb250aHMmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19saHMgKyAtX19yaHM7IH0KKworY29uc3RleHByIHllYXJfbW9udGggb3BlcmF0b3ItKGNvbnN0IHllYXJfbW9udGgmIF9fbGhzLCBjb25zdCB5ZWFycyYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX2xocyArIC1fX3JoczsgfQorCitjbGFzcyB5ZWFyX21vbnRoX2RheV9sYXN0OworCitjbGFzcyBfTElCQ1BQX1RZUEVfVklTIHllYXJfbW9udGhfZGF5IHsKK3ByaXZhdGU6CisgICAgY2hyb25vOjp5ZWFyICBfX3k7CisgICAgY2hyb25vOjptb250aCBfX207CisgICAgY2hyb25vOjpkYXkgICBfX2Q7CitwdWJsaWM6CisgICAgIHllYXJfbW9udGhfZGF5KCkgPSBkZWZhdWx0OworICAgICBpbmxpbmUgY29uc3RleHByIHllYXJfbW9udGhfZGF5KAorICAgICAgICAgICAgY29uc3QgY2hyb25vOjp5ZWFyJiBfX3l2YWwsIGNvbnN0IGNocm9ubzo6bW9udGgmIF9fbXZhbCwgY29uc3QgY2hyb25vOjpkYXkmIF9fZHZhbCkgbm9leGNlcHQKKyAgICAgICAgICAgIDogX195e19feXZhbH0sIF9fbXtfX212YWx9LCBfX2R7X19kdmFsfSB7fSAgCisgICAgICAgICAgICBjb25zdGV4cHIgeWVhcl9tb250aF9kYXkoY29uc3QgeWVhcl9tb250aF9kYXlfbGFzdCYgX195bWRsKSBub2V4Y2VwdDsKKyAgICAgaW5saW5lIGNvbnN0ZXhwciB5ZWFyX21vbnRoX2RheShjb25zdCBzeXNfZGF5cyYgX19zeXNkKSBub2V4Y2VwdAorICAgICAgICAgICAgOiB5ZWFyX21vbnRoX2RheShfX2Zyb21fZGF5cyhfX3N5c2QudGltZV9zaW5jZV9lcG9jaCgpKSkge30KKyAgICAgaW5saW5lIGV4cGxpY2l0IGNvbnN0ZXhwciB5ZWFyX21vbnRoX2RheShjb25zdCBsb2NhbF9kYXlzJiBfX2xvY2QpIG5vZXhjZXB0CisgICAgICAgICAgICA6IHllYXJfbW9udGhfZGF5KF9fZnJvbV9kYXlzKF9fbG9jZC50aW1lX3NpbmNlX2Vwb2NoKCkpKSB7fQorCisgICAgICAgICAgICBjb25zdGV4cHIgeWVhcl9tb250aF9kYXkmIG9wZXJhdG9yKz0oY29uc3QgbW9udGhzJiBfX2RtKSBub2V4Y2VwdDsKKyAgICAgICAgICAgIGNvbnN0ZXhwciB5ZWFyX21vbnRoX2RheSYgb3BlcmF0b3ItPShjb25zdCBtb250aHMmIF9fZG0pIG5vZXhjZXB0OworICAgICAgICAgICAgY29uc3RleHByIHllYXJfbW9udGhfZGF5JiBvcGVyYXRvcis9KGNvbnN0IHllYXJzJiBfX2R5KSAgbm9leGNlcHQ7CisgICAgICAgICAgICBjb25zdGV4cHIgeWVhcl9tb250aF9kYXkmIG9wZXJhdG9yLT0oY29uc3QgeWVhcnMmIF9fZHkpICBub2V4Y2VwdDsKKworICAgICBpbmxpbmUgY29uc3RleHByIGNocm9ubzo6eWVhciAgIHllYXIoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3k7IH0KKyAgICAgaW5saW5lIGNvbnN0ZXhwciBjaHJvbm86Om1vbnRoIG1vbnRoKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19tOyB9CisgICAgIGlubGluZSBjb25zdGV4cHIgY2hyb25vOjpkYXkgICAgIGRheSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fZDsgfQorICAgICBpbmxpbmUgY29uc3RleHByIG9wZXJhdG9yICAgc3lzX2RheXMoKSBjb25zdCBub2V4Y2VwdCAgICAgICAgICB7IHJldHVybiAgIHN5c19kYXlze19fdG9fZGF5cygpfTsgfQorICAgICBpbmxpbmUgZXhwbGljaXQgY29uc3RleHByIG9wZXJhdG9yIGxvY2FsX2RheXMoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBsb2NhbF9kYXlze19fdG9fZGF5cygpfTsgfQorCisgICAgICAgICAgICBjb25zdGV4cHIgYm9vbCAgICAgICAgICAgICBvaygpIGNvbnN0IG5vZXhjZXB0OworCisgICAgIHN0YXRpYyBjb25zdGV4cHIgeWVhcl9tb250aF9kYXkgX19mcm9tX2RheXMoZGF5cyBfX2QpIG5vZXhjZXB0OworICAgICBjb25zdGV4cHIgZGF5cyBfX3RvX2RheXMoKSBjb25zdCBub2V4Y2VwdDsKK307CisKKworLy8gaHR0cHM6Ly9ob3dhcmRoaW5uYW50LmdpdGh1Yi5pby9kYXRlX2FsZ29yaXRobXMuaHRtbCNjaXZpbF9mcm9tX2RheXMKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfZGF5Cit5ZWFyX21vbnRoX2RheTo6X19mcm9tX2RheXMoZGF5cyBfX2QpIG5vZXhjZXB0Cit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6ZGlnaXRzID49IDE4LCAiIik7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46OmRpZ2l0cyA+PSAyMCAgICAgLCAiIik7CisgICAgY29uc3QgaW50ICAgICAgX196ID0gX19kLmNvdW50KCkgKyA3MTk0Njg7CisgICAgY29uc3QgaW50ICAgICAgX19lcmEgPSAoX196ID49IDAgPyBfX3ogOiBfX3ogLSAxNDYwOTYpIC8gMTQ2MDk3OworICAgIGNvbnN0IHVuc2lnbmVkIF9fZG9lID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KF9feiAtIF9fZXJhICogMTQ2MDk3KTsgICAgICAgICAgICAgIC8vIFswLCAxNDYwOTZdCisgICAgY29uc3QgdW5zaWduZWQgX195b2UgPSAoX19kb2UgLSBfX2RvZS8xNDYwICsgX19kb2UvMzY1MjQgLSBfX2RvZS8xNDYwOTYpIC8gMzY1OyAgLy8gWzAsIDM5OV0KKyAgICBjb25zdCBpbnQgICAgICBfX3lyID0gc3RhdGljX2Nhc3Q8aW50PihfX3lvZSkgKyBfX2VyYSAqIDQwMDsKKyAgICBjb25zdCB1bnNpZ25lZCBfX2RveSA9IF9fZG9lIC0gKDM2NSAqIF9feW9lICsgX195b2UvNCAtIF9feW9lLzEwMCk7ICAgICAgICAgICAgICAvLyBbMCwgMzY1XQorICAgIGNvbnN0IHVuc2lnbmVkIF9fbXAgPSAoNSAqIF9fZG95ICsgMikvMTUzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFswLCAxMV0KKyAgICBjb25zdCB1bnNpZ25lZCBfX2R5ID0gX19kb3kgLSAoMTUzICogX19tcCArIDIpLzUgKyAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBbMSwgMzFdCisgICAgY29uc3QgdW5zaWduZWQgX19tdGggPSBfX21wICsgKF9fbXAgPCAxMCA/IDMgOiAtOSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWzEsIDEyXQorICAgIHJldHVybiB5ZWFyX21vbnRoX2RheXtjaHJvbm86OnllYXJ7X195ciArIChfX210aCA8PSAyKX0sIGNocm9ubzo6bW9udGh7X19tdGh9LCBjaHJvbm86OmRheXtfX2R5fX07Cit9CisKKy8vIGh0dHBzOi8vaG93YXJkaGlubmFudC5naXRodWIuaW8vZGF0ZV9hbGdvcml0aG1zLmh0bWwjZGF5c19mcm9tX2NpdmlsCitpbmxpbmUgY29uc3RleHByIGRheXMgeWVhcl9tb250aF9kYXk6Ol9fdG9fZGF5cygpIGNvbnN0IG5vZXhjZXB0Cit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6ZGlnaXRzID49IDE4LCAiIik7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6Om51bWVyaWNfbGltaXRzPGludD46OmRpZ2l0cyA+PSAyMCAgICAgLCAiIik7CisKKyAgICBjb25zdCBpbnQgICAgICBfX3lyICA9IHN0YXRpY19jYXN0PGludD4oX195KSAtIChfX20gPD0gRmVicnVhcnkpOworICAgIGNvbnN0IHVuc2lnbmVkIF9fbXRoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KF9fbSk7CisgICAgY29uc3QgdW5zaWduZWQgX19keSAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oX19kKTsKKworICAgIGNvbnN0IGludCAgICAgIF9fZXJhID0gKF9feXIgPj0gMCA/IF9feXIgOiBfX3lyIC0gMzk5KSAvIDQwMDsKKyAgICBjb25zdCB1bnNpZ25lZCBfX3lvZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihfX3lyIC0gX19lcmEgKiA0MDApOyAgICAgICAgICAgICAgICAvLyBbMCwgMzk5XQorICAgIGNvbnN0IHVuc2lnbmVkIF9fZG95ID0gKDE1MyAqIChfX210aCArIChfX210aCA+IDIgPyAtMyA6IDkpKSArIDIpIC8gNSArIF9fZHktMTsgIC8vIFswLCAzNjVdCisgICAgY29uc3QgdW5zaWduZWQgX19kb2UgPSBfX3lvZSAqIDM2NSArIF9feW9lLzQgLSBfX3lvZS8xMDAgKyBfX2RveTsgICAgICAgICAgICAgICAgLy8gWzAsIDE0NjA5Nl0KKyAgICByZXR1cm4gZGF5c3tfX2VyYSAqIDE0NjA5NyArIHN0YXRpY19jYXN0PGludD4oX19kb2UpIC0gNzE5NDY4fTsKK30KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcj09KGNvbnN0IHllYXJfbW9udGhfZGF5JiBfX2xocywgY29uc3QgeWVhcl9tb250aF9kYXkmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19saHMueWVhcigpID09IF9fcmhzLnllYXIoKSAmJiBfX2xocy5tb250aCgpID09IF9fcmhzLm1vbnRoKCkgJiYgX19saHMuZGF5KCkgPT0gX19yaHMuZGF5KCk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvciE9KGNvbnN0IHllYXJfbW9udGhfZGF5JiBfX2xocywgY29uc3QgeWVhcl9tb250aF9kYXkmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gIShfX2xocyA9PSBfX3Jocyk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcjwgKGNvbnN0IHllYXJfbW9udGhfZGF5JiBfX2xocywgY29uc3QgeWVhcl9tb250aF9kYXkmIF9fcmhzKSBub2V4Y2VwdAoreworICAgIGlmIChfX2xocy55ZWFyKCkgPCBfX3Jocy55ZWFyKCkpIHJldHVybiB0cnVlOworICAgIGlmIChfX2xocy55ZWFyKCkgPiBfX3Jocy55ZWFyKCkpIHJldHVybiBmYWxzZTsKKyAgICBpZiAoX19saHMubW9udGgoKSA8IF9fcmhzLm1vbnRoKCkpIHJldHVybiB0cnVlOworICAgIGlmIChfX2xocy5tb250aCgpID4gX19yaHMubW9udGgoKSkgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBfX2xocy5kYXkoKSA8IF9fcmhzLmRheSgpOworfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPiAoY29uc3QgeWVhcl9tb250aF9kYXkmIF9fbGhzLCBjb25zdCB5ZWFyX21vbnRoX2RheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX3JocyA8IF9fbGhzOyB9CisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3I8PShjb25zdCB5ZWFyX21vbnRoX2RheSYgX19saHMsIGNvbnN0IHllYXJfbW9udGhfZGF5JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuICEoX19yaHMgPCBfX2xocyk7fQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPj0oY29uc3QgeWVhcl9tb250aF9kYXkmIF9fbGhzLCBjb25zdCB5ZWFyX21vbnRoX2RheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fbGhzIDwgX19yaHMpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfZGF5IG9wZXJhdG9yLyhjb25zdCB5ZWFyX21vbnRoJiBfX2xocywgY29uc3QgZGF5JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIHllYXJfbW9udGhfZGF5e19fbGhzLnllYXIoKSwgX19saHMubW9udGgoKSwgX19yaHN9OyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfZGF5IG9wZXJhdG9yLyhjb25zdCB5ZWFyX21vbnRoJiBfX2xocywgaW50IF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19saHMgLyBkYXkoX19yaHMpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfZGF5IG9wZXJhdG9yLyhjb25zdCB5ZWFyJiBfX2xocywgY29uc3QgbW9udGhfZGF5JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fbGhzIC8gX19yaHMubW9udGgoKSAvIF9fcmhzLmRheSgpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfZGF5IG9wZXJhdG9yLyhpbnQgX19saHMsIGNvbnN0IG1vbnRoX2RheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiB5ZWFyKF9fbGhzKSAvIF9fcmhzOyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfZGF5IG9wZXJhdG9yLyhjb25zdCBtb250aF9kYXkmIF9fbGhzLCBjb25zdCB5ZWFyJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fcmhzIC8gX19saHM7IH0KKworaW5saW5lIGNvbnN0ZXhwcgoreWVhcl9tb250aF9kYXkgb3BlcmF0b3IvKGNvbnN0IG1vbnRoX2RheSYgX19saHMsIGludCBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIHllYXIoX19yaHMpIC8gX19saHM7IH0KKworCitpbmxpbmUgY29uc3RleHByCit5ZWFyX21vbnRoX2RheSBvcGVyYXRvcisoY29uc3QgeWVhcl9tb250aF9kYXkmIF9fbGhzLCBjb25zdCBtb250aHMmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gKF9fbGhzLnllYXIoKS9fX2xocy5tb250aCgpICsgX19yaHMpL19fbGhzLmRheSgpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfZGF5IG9wZXJhdG9yKyhjb25zdCBtb250aHMmIF9fbGhzLCBjb25zdCB5ZWFyX21vbnRoX2RheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX3JocyArIF9fbGhzOyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfZGF5IG9wZXJhdG9yLShjb25zdCB5ZWFyX21vbnRoX2RheSYgX19saHMsIGNvbnN0IG1vbnRocyYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX2xocyArIC1fX3JoczsgfQorCitpbmxpbmUgY29uc3RleHByCit5ZWFyX21vbnRoX2RheSBvcGVyYXRvcisoY29uc3QgeWVhcl9tb250aF9kYXkmIF9fbGhzLCBjb25zdCB5ZWFycyYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAoX19saHMueWVhcigpICsgX19yaHMpIC8gX19saHMubW9udGgoKSAvIF9fbGhzLmRheSgpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfZGF5IG9wZXJhdG9yKyhjb25zdCB5ZWFycyYgX19saHMsIGNvbnN0IHllYXJfbW9udGhfZGF5JiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fcmhzICsgX19saHM7IH0KKworaW5saW5lIGNvbnN0ZXhwcgoreWVhcl9tb250aF9kYXkgb3BlcmF0b3ItKGNvbnN0IHllYXJfbW9udGhfZGF5JiBfX2xocywgY29uc3QgeWVhcnMmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19saHMgKyAtX19yaHM7IH0KKworaW5saW5lIGNvbnN0ZXhwciB5ZWFyX21vbnRoX2RheSYgeWVhcl9tb250aF9kYXk6Om9wZXJhdG9yKz0oY29uc3QgbW9udGhzJiBfX2RtKSBub2V4Y2VwdCB7ICp0aGlzID0gKnRoaXMgKyBfX2RtOyByZXR1cm4gKnRoaXM7IH0KK2lubGluZSBjb25zdGV4cHIgeWVhcl9tb250aF9kYXkmIHllYXJfbW9udGhfZGF5OjpvcGVyYXRvci09KGNvbnN0IG1vbnRocyYgX19kbSkgbm9leGNlcHQgeyAqdGhpcyA9ICp0aGlzIC0gX19kbTsgcmV0dXJuICp0aGlzOyB9CitpbmxpbmUgY29uc3RleHByIHllYXJfbW9udGhfZGF5JiB5ZWFyX21vbnRoX2RheTo6b3BlcmF0b3IrPShjb25zdCB5ZWFycyYgX19keSkgIG5vZXhjZXB0IHsgKnRoaXMgPSAqdGhpcyArIF9fZHk7IHJldHVybiAqdGhpczsgfQoraW5saW5lIGNvbnN0ZXhwciB5ZWFyX21vbnRoX2RheSYgeWVhcl9tb250aF9kYXk6Om9wZXJhdG9yLT0oY29uc3QgeWVhcnMmIF9fZHkpICBub2V4Y2VwdCB7ICp0aGlzID0gKnRoaXMgLSBfX2R5OyByZXR1cm4gKnRoaXM7IH0KKworY2xhc3MgX0xJQkNQUF9UWVBFX1ZJUyB5ZWFyX21vbnRoX2RheV9sYXN0IHsKK3ByaXZhdGU6CisgICAgY2hyb25vOjp5ZWFyICAgICAgICAgICBfX3k7CisgICAgY2hyb25vOjptb250aF9kYXlfbGFzdCBfX21kbDsKK3B1YmxpYzoKKyAgICAgY29uc3RleHByIHllYXJfbW9udGhfZGF5X2xhc3QoY29uc3QgeWVhciYgX195dmFsLCBjb25zdCBtb250aF9kYXlfbGFzdCYgX19tZGx2YWwpIG5vZXhjZXB0CisgICAgICAgIDogX195e19feXZhbH0sIF9fbWRse19fbWRsdmFsfSB7fQorCisgICAgIGNvbnN0ZXhwciB5ZWFyX21vbnRoX2RheV9sYXN0JiBvcGVyYXRvcis9KGNvbnN0IG1vbnRocyYgX19tKSBub2V4Y2VwdDsKKyAgICAgY29uc3RleHByIHllYXJfbW9udGhfZGF5X2xhc3QmIG9wZXJhdG9yLT0oY29uc3QgbW9udGhzJiBfX20pIG5vZXhjZXB0OworICAgICBjb25zdGV4cHIgeWVhcl9tb250aF9kYXlfbGFzdCYgb3BlcmF0b3IrPShjb25zdCB5ZWFycyYgX195KSAgbm9leGNlcHQ7CisgICAgIGNvbnN0ZXhwciB5ZWFyX21vbnRoX2RheV9sYXN0JiBvcGVyYXRvci09KGNvbnN0IHllYXJzJiBfX3kpICBub2V4Y2VwdDsKKworICAgICBpbmxpbmUgY29uc3RleHByIGNocm9ubzo6eWVhciAgICAgICAgICAgICAgICAgICAgIHllYXIoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3k7IH0KKyAgICAgaW5saW5lIGNvbnN0ZXhwciBjaHJvbm86Om1vbnRoICAgICAgICAgICAgICAgICAgIG1vbnRoKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19tZGwubW9udGgoKTsgfQorICAgICBpbmxpbmUgY29uc3RleHByIGNocm9ubzo6bW9udGhfZGF5X2xhc3QgbW9udGhfZGF5X2xhc3QoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX21kbDsgfQorICAgICAgICAgICAgY29uc3RleHByIGNocm9ubzo6ZGF5ICAgICAgICAgICAgICAgICAgICAgICBkYXkoKSBjb25zdCBub2V4Y2VwdDsKKyAgICAgaW5saW5lIGNvbnN0ZXhwciBvcGVyYXRvciAgICAgICAgICAgICAgICAgICAgIHN5c19kYXlzKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gICBzeXNfZGF5c3t5ZWFyKCkvbW9udGgoKS9kYXkoKX07IH0KKyAgICAgaW5saW5lIGV4cGxpY2l0IGNvbnN0ZXhwciBvcGVyYXRvciAgICAgICAgICBsb2NhbF9kYXlzKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gbG9jYWxfZGF5c3t5ZWFyKCkvbW9udGgoKS9kYXkoKX07IH0KKyAgICAgaW5saW5lIGNvbnN0ZXhwciBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX195Lm9rKCkgJiYgX19tZGwub2soKTsgfQorfTsKKworaW5saW5lIGNvbnN0ZXhwcgorY2hyb25vOjpkYXkgeWVhcl9tb250aF9kYXlfbGFzdDo6ZGF5KCkgY29uc3Qgbm9leGNlcHQKK3sKKyAgICBjb25zdGV4cHIgY2hyb25vOjpkYXkgX19kW10gPQorICAgIHsKKyAgICAgICAgY2hyb25vOjpkYXkoMzEpLCBjaHJvbm86OmRheSgyOCksIGNocm9ubzo6ZGF5KDMxKSwKKyAgICAgICAgY2hyb25vOjpkYXkoMzApLCBjaHJvbm86OmRheSgzMSksIGNocm9ubzo6ZGF5KDMwKSwKKyAgICAgICAgY2hyb25vOjpkYXkoMzEpLCBjaHJvbm86OmRheSgzMSksIGNocm9ubzo6ZGF5KDMwKSwKKyAgICAgICAgY2hyb25vOjpkYXkoMzEpLCBjaHJvbm86OmRheSgzMCksIGNocm9ubzo6ZGF5KDMxKQorICAgIH07CisgICAgcmV0dXJuIG1vbnRoKCkgIT0gRmVicnVhcnkgfHwgIV9feS5pc19sZWFwKCkgPworICAgICAgICBfX2Rbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1vbnRoKCkpIC0gMV0gOiBjaHJvbm86OmRheXsyOX07Cit9CisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCB5ZWFyX21vbnRoX2RheV9sYXN0JiBfX2xocywgY29uc3QgeWVhcl9tb250aF9kYXlfbGFzdCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX2xocy55ZWFyKCkgPT0gX19yaHMueWVhcigpICYmIF9fbGhzLm1vbnRoX2RheV9sYXN0KCkgPT0gX19yaHMubW9udGhfZGF5X2xhc3QoKTsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yIT0oY29uc3QgeWVhcl9tb250aF9kYXlfbGFzdCYgX19saHMsIGNvbnN0IHllYXJfbW9udGhfZGF5X2xhc3QmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gIShfX2xocyA9PSBfX3Jocyk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcjwgKGNvbnN0IHllYXJfbW9udGhfZGF5X2xhc3QmIF9fbGhzLCBjb25zdCB5ZWFyX21vbnRoX2RheV9sYXN0JiBfX3Jocykgbm9leGNlcHQKK3sKKyAgICBpZiAoX19saHMueWVhcigpIDwgX19yaHMueWVhcigpKSByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoX19saHMueWVhcigpID4gX19yaHMueWVhcigpKSByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIF9fbGhzLm1vbnRoX2RheV9sYXN0KCkgPCBfX3Jocy5tb250aF9kYXlfbGFzdCgpOworfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPiAoY29uc3QgeWVhcl9tb250aF9kYXlfbGFzdCYgX19saHMsIGNvbnN0IHllYXJfbW9udGhfZGF5X2xhc3QmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19yaHMgPCBfX2xoczsgfQorCitpbmxpbmUgY29uc3RleHByCitib29sIG9wZXJhdG9yPD0oY29uc3QgeWVhcl9tb250aF9kYXlfbGFzdCYgX19saHMsIGNvbnN0IHllYXJfbW9udGhfZGF5X2xhc3QmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gIShfX3JocyA8IF9fbGhzKTt9CisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3I+PShjb25zdCB5ZWFyX21vbnRoX2RheV9sYXN0JiBfX2xocywgY29uc3QgeWVhcl9tb250aF9kYXlfbGFzdCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fbGhzIDwgX19yaHMpOyB9CisKK2lubGluZSBjb25zdGV4cHIgeWVhcl9tb250aF9kYXlfbGFzdCBvcGVyYXRvci8oY29uc3QgeWVhcl9tb250aCYgX19saHMsIGxhc3Rfc3BlYykgbm9leGNlcHQKK3sgcmV0dXJuIHllYXJfbW9udGhfZGF5X2xhc3R7X19saHMueWVhcigpLCBtb250aF9kYXlfbGFzdHtfX2xocy5tb250aCgpfX07IH0KKworaW5saW5lIGNvbnN0ZXhwciB5ZWFyX21vbnRoX2RheV9sYXN0IG9wZXJhdG9yLyhjb25zdCB5ZWFyJiBfX2xocywgY29uc3QgbW9udGhfZGF5X2xhc3QmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4geWVhcl9tb250aF9kYXlfbGFzdHtfX2xocywgX19yaHN9OyB9CisKK2lubGluZSBjb25zdGV4cHIgeWVhcl9tb250aF9kYXlfbGFzdCBvcGVyYXRvci8oaW50IF9fbGhzLCBjb25zdCBtb250aF9kYXlfbGFzdCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiB5ZWFyX21vbnRoX2RheV9sYXN0e3llYXJ7X19saHN9LCBfX3Joc307IH0KKworaW5saW5lIGNvbnN0ZXhwciB5ZWFyX21vbnRoX2RheV9sYXN0IG9wZXJhdG9yLyhjb25zdCBtb250aF9kYXlfbGFzdCYgX19saHMsIGNvbnN0IHllYXImIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19yaHMgLyBfX2xoczsgfQorCitpbmxpbmUgY29uc3RleHByIHllYXJfbW9udGhfZGF5X2xhc3Qgb3BlcmF0b3IvKGNvbnN0IG1vbnRoX2RheV9sYXN0JiBfX2xocywgaW50IF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4geWVhcntfX3Joc30gLyBfX2xoczsgfQorCisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfZGF5X2xhc3Qgb3BlcmF0b3IrKGNvbnN0IHllYXJfbW9udGhfZGF5X2xhc3QmIF9fbGhzLCBjb25zdCBtb250aHMmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gKF9fbGhzLnllYXIoKSAvIF9fbGhzLm1vbnRoKCkgKyBfX3JocykgLyBsYXN0OyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfZGF5X2xhc3Qgb3BlcmF0b3IrKGNvbnN0IG1vbnRocyYgX19saHMsIGNvbnN0IHllYXJfbW9udGhfZGF5X2xhc3QmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19yaHMgKyBfX2xoczsgfQorCitpbmxpbmUgY29uc3RleHByCit5ZWFyX21vbnRoX2RheV9sYXN0IG9wZXJhdG9yLShjb25zdCB5ZWFyX21vbnRoX2RheV9sYXN0JiBfX2xocywgY29uc3QgbW9udGhzJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fbGhzICsgKC1fX3Jocyk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgoreWVhcl9tb250aF9kYXlfbGFzdCBvcGVyYXRvcisoY29uc3QgeWVhcl9tb250aF9kYXlfbGFzdCYgX19saHMsIGNvbnN0IHllYXJzJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIHllYXJfbW9udGhfZGF5X2xhc3R7X19saHMueWVhcigpICsgX19yaHMsIF9fbGhzLm1vbnRoX2RheV9sYXN0KCl9OyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfZGF5X2xhc3Qgb3BlcmF0b3IrKGNvbnN0IHllYXJzJiBfX2xocywgY29uc3QgeWVhcl9tb250aF9kYXlfbGFzdCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX3JocyArIF9fbGhzOyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfZGF5X2xhc3Qgb3BlcmF0b3ItKGNvbnN0IHllYXJfbW9udGhfZGF5X2xhc3QmIF9fbGhzLCBjb25zdCB5ZWFycyYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX2xocyArICgtX19yaHMpOyB9CisKK2lubGluZSBjb25zdGV4cHIgeWVhcl9tb250aF9kYXlfbGFzdCYgeWVhcl9tb250aF9kYXlfbGFzdDo6b3BlcmF0b3IrPShjb25zdCBtb250aHMmIF9fZG0pIG5vZXhjZXB0IHsgKnRoaXMgPSAqdGhpcyArIF9fZG07IHJldHVybiAqdGhpczsgfQoraW5saW5lIGNvbnN0ZXhwciB5ZWFyX21vbnRoX2RheV9sYXN0JiB5ZWFyX21vbnRoX2RheV9sYXN0OjpvcGVyYXRvci09KGNvbnN0IG1vbnRocyYgX19kbSkgbm9leGNlcHQgeyAqdGhpcyA9ICp0aGlzIC0gX19kbTsgcmV0dXJuICp0aGlzOyB9CitpbmxpbmUgY29uc3RleHByIHllYXJfbW9udGhfZGF5X2xhc3QmIHllYXJfbW9udGhfZGF5X2xhc3Q6Om9wZXJhdG9yKz0oY29uc3QgeWVhcnMmIF9fZHkpICBub2V4Y2VwdCB7ICp0aGlzID0gKnRoaXMgKyBfX2R5OyByZXR1cm4gKnRoaXM7IH0KK2lubGluZSBjb25zdGV4cHIgeWVhcl9tb250aF9kYXlfbGFzdCYgeWVhcl9tb250aF9kYXlfbGFzdDo6b3BlcmF0b3ItPShjb25zdCB5ZWFycyYgX19keSkgIG5vZXhjZXB0IHsgKnRoaXMgPSAqdGhpcyAtIF9fZHk7IHJldHVybiAqdGhpczsgfQorCitpbmxpbmUgY29uc3RleHByIHllYXJfbW9udGhfZGF5Ojp5ZWFyX21vbnRoX2RheShjb25zdCB5ZWFyX21vbnRoX2RheV9sYXN0JiBfX3ltZGwpIG5vZXhjZXB0CisgICAgOiBfX3l7X195bWRsLnllYXIoKX0sIF9fbXtfX3ltZGwubW9udGgoKX0sIF9fZHtfX3ltZGwuZGF5KCl9IHt9ICAKKworaW5saW5lIGNvbnN0ZXhwciBib29sIHllYXJfbW9udGhfZGF5OjpvaygpIGNvbnN0IG5vZXhjZXB0Cit7CisgICAgaWYgKCFfX3kub2soKSB8fCAhX19tLm9rKCkpIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY2hyb25vOjpkYXl7MX0gPD0gX19kICYmIF9fZCA8PSAoX195IC8gX19tIC8gbGFzdCkuZGF5KCk7Cit9CisKK2NsYXNzIF9MSUJDUFBfVFlQRV9WSVMgeWVhcl9tb250aF93ZWVrZGF5IHsKKyAgICBjaHJvbm86OnllYXIgICAgICAgICAgICBfX3k7CisgICAgY2hyb25vOjptb250aCAgICAgICAgICAgX19tOworICAgIGNocm9ubzo6d2Vla2RheV9pbmRleGVkIF9fd2RpOworcHVibGljOgorICAgIHllYXJfbW9udGhfd2Vla2RheSgpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgeWVhcl9tb250aF93ZWVrZGF5KGNvbnN0IGNocm9ubzo6eWVhciYgX195dmFsLCBjb25zdCBjaHJvbm86Om1vbnRoJiBfX212YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hyb25vOjp3ZWVrZGF5X2luZGV4ZWQmIF9fd2RpdmFsKSBub2V4Y2VwdAorICAgICAgICA6IF9feXtfX3l2YWx9LCBfX217X19tdmFsfSwgX193ZGl7X193ZGl2YWx9IHt9CisgICAgY29uc3RleHByIHllYXJfbW9udGhfd2Vla2RheShjb25zdCBzeXNfZGF5cyYgX19zeXNkKSBub2V4Y2VwdAorICAgICAgICAgICAgOiB5ZWFyX21vbnRoX3dlZWtkYXkoX19mcm9tX2RheXMoX19zeXNkLnRpbWVfc2luY2VfZXBvY2goKSkpIHt9CisgICAgaW5saW5lIGV4cGxpY2l0IGNvbnN0ZXhwciB5ZWFyX21vbnRoX3dlZWtkYXkoY29uc3QgbG9jYWxfZGF5cyYgX19sb2NkKSBub2V4Y2VwdAorICAgICAgICAgICAgOiB5ZWFyX21vbnRoX3dlZWtkYXkoX19mcm9tX2RheXMoX19sb2NkLnRpbWVfc2luY2VfZXBvY2goKSkpIHt9CisgICAgY29uc3RleHByIHllYXJfbW9udGhfd2Vla2RheSYgb3BlcmF0b3IrPShjb25zdCBtb250aHMmIG0pIG5vZXhjZXB0OworICAgIGNvbnN0ZXhwciB5ZWFyX21vbnRoX3dlZWtkYXkmIG9wZXJhdG9yLT0oY29uc3QgbW9udGhzJiBtKSBub2V4Y2VwdDsKKyAgICBjb25zdGV4cHIgeWVhcl9tb250aF93ZWVrZGF5JiBvcGVyYXRvcis9KGNvbnN0IHllYXJzJiB5KSAgbm9leGNlcHQ7CisgICAgY29uc3RleHByIHllYXJfbW9udGhfd2Vla2RheSYgb3BlcmF0b3ItPShjb25zdCB5ZWFycyYgeSkgIG5vZXhjZXB0OworCisgICAgaW5saW5lIGNvbnN0ZXhwciBjaHJvbm86OnllYXIgICAgICAgICAgICAgICAgICAgICAgIHllYXIoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3k7IH0KKyAgICBpbmxpbmUgY29uc3RleHByIGNocm9ubzo6bW9udGggICAgICAgICAgICAgICAgICAgICBtb250aCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fbTsgfQorICAgIGlubGluZSBjb25zdGV4cHIgY2hyb25vOjp3ZWVrZGF5ICAgICAgICAgICAgICAgICB3ZWVrZGF5KCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX193ZGkud2Vla2RheSgpOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3dkaS5pbmRleCgpOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciBjaHJvbm86OndlZWtkYXlfaW5kZXhlZCB3ZWVrZGF5X2luZGV4ZWQoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3dkaTsgfQorCisgICAgaW5saW5lIGNvbnN0ZXhwciAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3Igc3lzX2RheXMoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiAgIHN5c19kYXlze19fdG9fZGF5cygpfTsgfQorICAgIGlubGluZSBleHBsaWNpdCBjb25zdGV4cHIgb3BlcmF0b3IgICAgICAgICAgICBsb2NhbF9kYXlzKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gbG9jYWxfZGF5c3tfX3RvX2RheXMoKX07IH0KKyAgICBpbmxpbmUgY29uc3RleHByIGJvb2wgb2soKSBjb25zdCBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgaWYgKCFfX3kub2soKSB8fCAhX19tLm9rKCkgfHwgIV9fd2RpLm9rKCkpIHJldHVybiBmYWxzZTsKKyAgICAvLyAgVE9ETzogbWFrZSBzdXJlIGl0J3MgYSB2YWxpZCBkYXRlCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIgeWVhcl9tb250aF93ZWVrZGF5IF9fZnJvbV9kYXlzKGRheXMgX19kKSBub2V4Y2VwdDsKKyAgICBjb25zdGV4cHIgZGF5cyBfX3RvX2RheXMoKSBjb25zdCBub2V4Y2VwdDsKK307CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfd2Vla2RheSB5ZWFyX21vbnRoX3dlZWtkYXk6Ol9fZnJvbV9kYXlzKGRheXMgX19kKSBub2V4Y2VwdAoreworICAgIGNvbnN0IHN5c19kYXlzICAgICAgX19zeXNke19fZH07CisgICAgY29uc3QgY2hyb25vOjp3ZWVrZGF5IF9fd2QgPSBjaHJvbm86OndlZWtkYXkoX19zeXNkKTsKKyAgICBjb25zdCB5ZWFyX21vbnRoX2RheSBfX3ltZCA9IHllYXJfbW9udGhfZGF5KF9fc3lzZCk7CisgICAgcmV0dXJuIHllYXJfbW9udGhfd2Vla2RheXtfX3ltZC55ZWFyKCksIF9feW1kLm1vbnRoKCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX193ZFsoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KF9feW1kLmRheSgpKS0xKS83KzFdfTsKK30KKworaW5saW5lIGNvbnN0ZXhwcgorZGF5cyB5ZWFyX21vbnRoX3dlZWtkYXk6Ol9fdG9fZGF5cygpIGNvbnN0IG5vZXhjZXB0Cit7CisgICAgY29uc3Qgc3lzX2RheXMgX19zeXNkID0gc3lzX2RheXMoX195L19fbS8xKTsKKyAgICByZXR1cm4gKF9fc3lzZCArIChfX3dkaS53ZWVrZGF5KCkgLSBjaHJvbm86OndlZWtkYXkoX19zeXNkKSArIGRheXN7KF9fd2RpLmluZGV4KCktMSkqN30pKQorICAgICAgICAgICAgICAgIC50aW1lX3NpbmNlX2Vwb2NoKCk7Cit9CisKK2lubGluZSBjb25zdGV4cHIKK2Jvb2wgb3BlcmF0b3I9PShjb25zdCB5ZWFyX21vbnRoX3dlZWtkYXkmIF9fbGhzLCBjb25zdCB5ZWFyX21vbnRoX3dlZWtkYXkmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19saHMueWVhcigpID09IF9fcmhzLnllYXIoKSAmJiBfX2xocy5tb250aCgpID09IF9fcmhzLm1vbnRoKCkgJiYgX19saHMud2Vla2RheV9pbmRleGVkKCkgPT0gX19yaHMud2Vla2RheV9pbmRleGVkKCk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvciE9KGNvbnN0IHllYXJfbW9udGhfd2Vla2RheSYgX19saHMsIGNvbnN0IHllYXJfbW9udGhfd2Vla2RheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAhKF9fbGhzID09IF9fcmhzKTsgfQorCitpbmxpbmUgY29uc3RleHByCit5ZWFyX21vbnRoX3dlZWtkYXkgb3BlcmF0b3IvKGNvbnN0IHllYXJfbW9udGgmIF9fbGhzLCBjb25zdCB3ZWVrZGF5X2luZGV4ZWQmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4geWVhcl9tb250aF93ZWVrZGF5e19fbGhzLnllYXIoKSwgX19saHMubW9udGgoKSwgX19yaHN9OyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfd2Vla2RheSBvcGVyYXRvci8oY29uc3QgeWVhciYgX19saHMsIGNvbnN0IG1vbnRoX3dlZWtkYXkmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4geWVhcl9tb250aF93ZWVrZGF5e19fbGhzLCBfX3Jocy5tb250aCgpLCBfX3Jocy53ZWVrZGF5X2luZGV4ZWQoKX07IH0KKworaW5saW5lIGNvbnN0ZXhwcgoreWVhcl9tb250aF93ZWVrZGF5IG9wZXJhdG9yLyhpbnQgX19saHMsIGNvbnN0IG1vbnRoX3dlZWtkYXkmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4geWVhcihfX2xocykgLyBfX3JoczsgfQorCitpbmxpbmUgY29uc3RleHByCit5ZWFyX21vbnRoX3dlZWtkYXkgb3BlcmF0b3IvKGNvbnN0IG1vbnRoX3dlZWtkYXkmIF9fbGhzLCBjb25zdCB5ZWFyJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fcmhzIC8gX19saHM7IH0KKworaW5saW5lIGNvbnN0ZXhwcgoreWVhcl9tb250aF93ZWVrZGF5IG9wZXJhdG9yLyhjb25zdCBtb250aF93ZWVrZGF5JiBfX2xocywgaW50IF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4geWVhcihfX3JocykgLyBfX2xoczsgfQorCisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfd2Vla2RheSBvcGVyYXRvcisoY29uc3QgeWVhcl9tb250aF93ZWVrZGF5JiBfX2xocywgY29uc3QgbW9udGhzJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIChfX2xocy55ZWFyKCkgLyBfX2xocy5tb250aCgpICsgX19yaHMpIC8gX19saHMud2Vla2RheV9pbmRleGVkKCk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgoreWVhcl9tb250aF93ZWVrZGF5IG9wZXJhdG9yKyhjb25zdCBtb250aHMmIF9fbGhzLCBjb25zdCB5ZWFyX21vbnRoX3dlZWtkYXkmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19yaHMgKyBfX2xoczsgfQorCitpbmxpbmUgY29uc3RleHByCit5ZWFyX21vbnRoX3dlZWtkYXkgb3BlcmF0b3ItKGNvbnN0IHllYXJfbW9udGhfd2Vla2RheSYgX19saHMsIGNvbnN0IG1vbnRocyYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX2xocyArICgtX19yaHMpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfd2Vla2RheSBvcGVyYXRvcisoY29uc3QgeWVhcl9tb250aF93ZWVrZGF5JiBfX2xocywgY29uc3QgeWVhcnMmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4geWVhcl9tb250aF93ZWVrZGF5e19fbGhzLnllYXIoKSArIF9fcmhzLCBfX2xocy5tb250aCgpLCBfX2xocy53ZWVrZGF5X2luZGV4ZWQoKX07IH0KKworaW5saW5lIGNvbnN0ZXhwcgoreWVhcl9tb250aF93ZWVrZGF5IG9wZXJhdG9yKyhjb25zdCB5ZWFycyYgX19saHMsIGNvbnN0IHllYXJfbW9udGhfd2Vla2RheSYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX3JocyArIF9fbGhzOyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfd2Vla2RheSBvcGVyYXRvci0oY29uc3QgeWVhcl9tb250aF93ZWVrZGF5JiBfX2xocywgY29uc3QgeWVhcnMmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19saHMgKyAoLV9fcmhzKTsgfQorCisKK2lubGluZSBjb25zdGV4cHIgeWVhcl9tb250aF93ZWVrZGF5JiB5ZWFyX21vbnRoX3dlZWtkYXk6Om9wZXJhdG9yKz0oY29uc3QgbW9udGhzJiBfX2RtKSBub2V4Y2VwdCB7ICp0aGlzID0gKnRoaXMgKyBfX2RtOyByZXR1cm4gKnRoaXM7IH0KK2lubGluZSBjb25zdGV4cHIgeWVhcl9tb250aF93ZWVrZGF5JiB5ZWFyX21vbnRoX3dlZWtkYXk6Om9wZXJhdG9yLT0oY29uc3QgbW9udGhzJiBfX2RtKSBub2V4Y2VwdCB7ICp0aGlzID0gKnRoaXMgLSBfX2RtOyByZXR1cm4gKnRoaXM7IH0KK2lubGluZSBjb25zdGV4cHIgeWVhcl9tb250aF93ZWVrZGF5JiB5ZWFyX21vbnRoX3dlZWtkYXk6Om9wZXJhdG9yKz0oY29uc3QgeWVhcnMmIF9fZHkpICBub2V4Y2VwdCB7ICp0aGlzID0gKnRoaXMgKyBfX2R5OyByZXR1cm4gKnRoaXM7IH0KK2lubGluZSBjb25zdGV4cHIgeWVhcl9tb250aF93ZWVrZGF5JiB5ZWFyX21vbnRoX3dlZWtkYXk6Om9wZXJhdG9yLT0oY29uc3QgeWVhcnMmIF9fZHkpICBub2V4Y2VwdCB7ICp0aGlzID0gKnRoaXMgLSBfX2R5OyByZXR1cm4gKnRoaXM7IH0KKworY2xhc3MgX0xJQkNQUF9UWVBFX1ZJUyB5ZWFyX21vbnRoX3dlZWtkYXlfbGFzdCB7Citwcml2YXRlOgorICAgIGNocm9ubzo6eWVhciAgICAgICAgIF9feTsKKyAgICBjaHJvbm86Om1vbnRoICAgICAgICBfX207CisgICAgY2hyb25vOjp3ZWVrZGF5X2xhc3QgX193ZGw7CitwdWJsaWM6CisgICAgY29uc3RleHByIHllYXJfbW9udGhfd2Vla2RheV9sYXN0KGNvbnN0IGNocm9ubzo6eWVhciYgX195dmFsLCBjb25zdCBjaHJvbm86Om1vbnRoJiBfX212YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNocm9ubzo6d2Vla2RheV9sYXN0JiBfX3dkbHZhbCkgbm9leGNlcHQKKyAgICAgICAgICAgICAgICA6IF9feXtfX3l2YWx9LCBfX217X19tdmFsfSwgX193ZGx7X193ZGx2YWx9IHt9CisgICAgY29uc3RleHByIHllYXJfbW9udGhfd2Vla2RheV9sYXN0JiBvcGVyYXRvcis9KGNvbnN0IG1vbnRocyYgX19kbSkgbm9leGNlcHQ7CisgICAgY29uc3RleHByIHllYXJfbW9udGhfd2Vla2RheV9sYXN0JiBvcGVyYXRvci09KGNvbnN0IG1vbnRocyYgX19kbSkgbm9leGNlcHQ7CisgICAgY29uc3RleHByIHllYXJfbW9udGhfd2Vla2RheV9sYXN0JiBvcGVyYXRvcis9KGNvbnN0IHllYXJzJiBfX2R5KSAgbm9leGNlcHQ7CisgICAgY29uc3RleHByIHllYXJfbW9udGhfd2Vla2RheV9sYXN0JiBvcGVyYXRvci09KGNvbnN0IHllYXJzJiBfX2R5KSAgbm9leGNlcHQ7CisKKyAgICBpbmxpbmUgY29uc3RleHByIGNocm9ubzo6eWVhciAgICAgICAgICAgICAgICAgeWVhcigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9feTsgfQorICAgIGlubGluZSBjb25zdGV4cHIgY2hyb25vOjptb250aCAgICAgICAgICAgICAgIG1vbnRoKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19tOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciBjaHJvbm86OndlZWtkYXkgICAgICAgICAgIHdlZWtkYXkoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3dkbC53ZWVrZGF5KCk7IH0KKyAgICBpbmxpbmUgY29uc3RleHByIGNocm9ubzo6d2Vla2RheV9sYXN0IHdlZWtkYXlfbGFzdCgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fd2RsOyB9CisgICAgaW5saW5lIGNvbnN0ZXhwciBvcGVyYXRvciAgICAgICAgICAgICAgICAgc3lzX2RheXMoKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiAgIHN5c19kYXlze19fdG9fZGF5cygpfTsgfQorICAgIGlubGluZSBleHBsaWNpdCBjb25zdGV4cHIgb3BlcmF0b3IgICAgICBsb2NhbF9kYXlzKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gbG9jYWxfZGF5c3tfX3RvX2RheXMoKX07IH0KKyAgICBpbmxpbmUgY29uc3RleHByIGJvb2wgb2soKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3kub2soKSAmJiBfX20ub2soKSAmJiBfX3dkbC5vaygpOyB9CisgICAgCisgICAgY29uc3RleHByIGRheXMgX190b19kYXlzKCkgY29uc3Qgbm9leGNlcHQ7CisgICAgCit9OworCitpbmxpbmUgY29uc3RleHByCitkYXlzIHllYXJfbW9udGhfd2Vla2RheV9sYXN0OjpfX3RvX2RheXMoKSBjb25zdCBub2V4Y2VwdAoreworICAgIGNvbnN0IHN5c19kYXlzIF9fbGFzdCA9IHN5c19kYXlze19feS9fX20vbGFzdH07CisgICAgcmV0dXJuIChfX2xhc3QgLSAoY2hyb25vOjp3ZWVrZGF5e19fbGFzdH0gLSBfX3dkbC53ZWVrZGF5KCkpKS50aW1lX3NpbmNlX2Vwb2NoKCk7CisKK30KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvcj09KGNvbnN0IHllYXJfbW9udGhfd2Vla2RheV9sYXN0JiBfX2xocywgY29uc3QgeWVhcl9tb250aF93ZWVrZGF5X2xhc3QmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19saHMueWVhcigpID09IF9fcmhzLnllYXIoKSAmJiBfX2xocy5tb250aCgpID09IF9fcmhzLm1vbnRoKCkgJiYgX19saHMud2Vla2RheV9sYXN0KCkgPT0gX19yaHMud2Vla2RheV9sYXN0KCk7IH0KKworaW5saW5lIGNvbnN0ZXhwcgorYm9vbCBvcGVyYXRvciE9KGNvbnN0IHllYXJfbW9udGhfd2Vla2RheV9sYXN0JiBfX2xocywgY29uc3QgeWVhcl9tb250aF93ZWVrZGF5X2xhc3QmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gIShfX2xocyA9PSBfX3Jocyk7IH0KKworCitpbmxpbmUgY29uc3RleHByCit5ZWFyX21vbnRoX3dlZWtkYXlfbGFzdCBvcGVyYXRvci8oY29uc3QgeWVhcl9tb250aCYgX19saHMsIGNvbnN0IHdlZWtkYXlfbGFzdCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiB5ZWFyX21vbnRoX3dlZWtkYXlfbGFzdHtfX2xocy55ZWFyKCksIF9fbGhzLm1vbnRoKCksIF9fcmhzfTsgfQorCitpbmxpbmUgY29uc3RleHByCit5ZWFyX21vbnRoX3dlZWtkYXlfbGFzdCBvcGVyYXRvci8oY29uc3QgeWVhciYgX19saHMsIGNvbnN0IG1vbnRoX3dlZWtkYXlfbGFzdCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiB5ZWFyX21vbnRoX3dlZWtkYXlfbGFzdHtfX2xocywgX19yaHMubW9udGgoKSwgX19yaHMud2Vla2RheV9sYXN0KCl9OyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfd2Vla2RheV9sYXN0IG9wZXJhdG9yLyhpbnQgX19saHMsIGNvbnN0IG1vbnRoX3dlZWtkYXlfbGFzdCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiB5ZWFyKF9fbGhzKSAvIF9fcmhzOyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfd2Vla2RheV9sYXN0IG9wZXJhdG9yLyhjb25zdCBtb250aF93ZWVrZGF5X2xhc3QmIF9fbGhzLCBjb25zdCB5ZWFyJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIF9fcmhzIC8gX19saHM7IH0KKworaW5saW5lIGNvbnN0ZXhwcgoreWVhcl9tb250aF93ZWVrZGF5X2xhc3Qgb3BlcmF0b3IvKGNvbnN0IG1vbnRoX3dlZWtkYXlfbGFzdCYgX19saHMsIGludCBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIHllYXIoX19yaHMpIC8gX19saHM7IH0gIAorCisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfd2Vla2RheV9sYXN0IG9wZXJhdG9yKyhjb25zdCB5ZWFyX21vbnRoX3dlZWtkYXlfbGFzdCYgX19saHMsIGNvbnN0IG1vbnRocyYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiAoX19saHMueWVhcigpIC8gX19saHMubW9udGgoKSArIF9fcmhzKSAvIF9fbGhzLndlZWtkYXlfbGFzdCgpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfd2Vla2RheV9sYXN0IG9wZXJhdG9yKyhjb25zdCBtb250aHMmIF9fbGhzLCBjb25zdCB5ZWFyX21vbnRoX3dlZWtkYXlfbGFzdCYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX3JocyArIF9fbGhzOyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfd2Vla2RheV9sYXN0IG9wZXJhdG9yLShjb25zdCB5ZWFyX21vbnRoX3dlZWtkYXlfbGFzdCYgX19saHMsIGNvbnN0IG1vbnRocyYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX2xocyArICgtX19yaHMpOyB9CisKK2lubGluZSBjb25zdGV4cHIKK3llYXJfbW9udGhfd2Vla2RheV9sYXN0IG9wZXJhdG9yKyhjb25zdCB5ZWFyX21vbnRoX3dlZWtkYXlfbGFzdCYgX19saHMsIGNvbnN0IHllYXJzJiBfX3Jocykgbm9leGNlcHQKK3sgcmV0dXJuIHllYXJfbW9udGhfd2Vla2RheV9sYXN0e19fbGhzLnllYXIoKSArIF9fcmhzLCBfX2xocy5tb250aCgpLCBfX2xocy53ZWVrZGF5X2xhc3QoKX07IH0KKworaW5saW5lIGNvbnN0ZXhwcgoreWVhcl9tb250aF93ZWVrZGF5X2xhc3Qgb3BlcmF0b3IrKGNvbnN0IHllYXJzJiBfX2xocywgY29uc3QgeWVhcl9tb250aF93ZWVrZGF5X2xhc3QmIF9fcmhzKSBub2V4Y2VwdAoreyByZXR1cm4gX19yaHMgKyBfX2xoczsgfQorCitpbmxpbmUgY29uc3RleHByCit5ZWFyX21vbnRoX3dlZWtkYXlfbGFzdCBvcGVyYXRvci0oY29uc3QgeWVhcl9tb250aF93ZWVrZGF5X2xhc3QmIF9fbGhzLCBjb25zdCB5ZWFycyYgX19yaHMpIG5vZXhjZXB0Cit7IHJldHVybiBfX2xocyArICgtX19yaHMpOyB9CisKK2lubGluZSBjb25zdGV4cHIgeWVhcl9tb250aF93ZWVrZGF5X2xhc3QmIHllYXJfbW9udGhfd2Vla2RheV9sYXN0OjpvcGVyYXRvcis9KGNvbnN0IG1vbnRocyYgX19kbSkgbm9leGNlcHQgeyAqdGhpcyA9ICp0aGlzICsgX19kbTsgcmV0dXJuICp0aGlzOyB9CitpbmxpbmUgY29uc3RleHByIHllYXJfbW9udGhfd2Vla2RheV9sYXN0JiB5ZWFyX21vbnRoX3dlZWtkYXlfbGFzdDo6b3BlcmF0b3ItPShjb25zdCBtb250aHMmIF9fZG0pIG5vZXhjZXB0IHsgKnRoaXMgPSAqdGhpcyAtIF9fZG07IHJldHVybiAqdGhpczsgfQoraW5saW5lIGNvbnN0ZXhwciB5ZWFyX21vbnRoX3dlZWtkYXlfbGFzdCYgeWVhcl9tb250aF93ZWVrZGF5X2xhc3Q6Om9wZXJhdG9yKz0oY29uc3QgeWVhcnMmIF9fZHkpICBub2V4Y2VwdCB7ICp0aGlzID0gKnRoaXMgKyBfX2R5OyByZXR1cm4gKnRoaXM7IH0KK2lubGluZSBjb25zdGV4cHIgeWVhcl9tb250aF93ZWVrZGF5X2xhc3QmIHllYXJfbW9udGhfd2Vla2RheV9sYXN0OjpvcGVyYXRvci09KGNvbnN0IHllYXJzJiBfX2R5KSAgbm9leGNlcHQgeyAqdGhpcyA9ICp0aGlzIC0gX19keTsgcmV0dXJuICp0aGlzOyB9CisKKyNlbmRpZiAvLyBfTElCQ1BQX1NURF9WRVIgPiAxNwogfSAvLyBjaHJvbm8KIAogI2lmIF9MSUJDUFBfU1REX1ZFUiA+IDExCkBAIC0xNjQ4LDYgKzI4MDQsMTcgQEAKICAgICAgICAgcmV0dXJuIGNocm9ubzo6ZHVyYXRpb248bG9uZyBkb3VibGUsIG5hbm8+IChfX25zKTsKICAgICB9CiAKKyNpZiBfTElCQ1BQX1NURF9WRVIgPiAxNyAmJiAhZGVmaW5lZChfTElCQ1BQX0hBU19OT19DWFgyMF9DSFJPTk9fTElURVJBTFMpCisgICAgY29uc3RleHByIGNocm9ubzo6ZGF5IG9wZXJhdG9yICIiZCh1bnNpZ25lZCBsb25nIGxvbmcgX19kKSBub2V4Y2VwdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGNocm9ubzo6ZGF5KHN0YXRpY19jYXN0PHVuc2lnbmVkPihfX2QpKTsKKyAgICB9CisgCisgICAgY29uc3RleHByIGNocm9ubzo6eWVhciBvcGVyYXRvciAiInkodW5zaWduZWQgbG9uZyBsb25nIF9feSkgbm9leGNlcHQKKyAgICB7CisgICAgICAgIHJldHVybiBjaHJvbm86OnllYXIoc3RhdGljX2Nhc3Q8aW50PihfX3kpKTsKKyAgICB9CisjZW5kaWYKIH19CiAKIG5hbWVzcGFjZSBjaHJvbm8geyAvLyBob2lzdCB0aGUgbGl0ZXJhbHMgaW50byBuYW1lc3BhY2Ugc3RkOjpjaHJvbm8KQEAgLTE2NTgsNiArMjgyNSw0MCBAQAogCiBfTElCQ1BQX0VORF9OQU1FU1BBQ0VfU1RECiAKKyNpZm5kZWYgX0xJQkNQUF9DWFgwM19MQU5HCitfTElCQ1BQX0JFR0lOX05BTUVTUEFDRV9GSUxFU1lTVEVNCitzdHJ1Y3QgX0ZpbGVzeXN0ZW1DbG9jayB7CisjaWYgIWRlZmluZWQoX0xJQkNQUF9IQVNfTk9fSU5UMTI4KQorICB0eXBlZGVmIF9faW50MTI4X3QgcmVwOworICB0eXBlZGVmIG5hbm8gcGVyaW9kOworI2Vsc2UKKyAgdHlwZWRlZiBsb25nIGxvbmcgcmVwOworICB0eXBlZGVmIG5hbm8gcGVyaW9kOworI2VuZGlmCisKKyAgdHlwZWRlZiBjaHJvbm86OmR1cmF0aW9uPHJlcCwgcGVyaW9kPiBkdXJhdGlvbjsKKyAgdHlwZWRlZiBjaHJvbm86OnRpbWVfcG9pbnQ8X0ZpbGVzeXN0ZW1DbG9jaz4gdGltZV9wb2ludDsKKworICBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFJfQUZURVJfQ1hYMTEgY29uc3QgYm9vbCBpc19zdGVhZHkgPSBmYWxzZTsKKworICBfTElCQ1BQX0ZVTkNfVklTIHN0YXRpYyB0aW1lX3BvaW50IG5vdygpIG5vZXhjZXB0OworCisgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgc3RhdGljIHRpbWVfdCB0b190aW1lX3QoY29uc3QgdGltZV9wb2ludCYgX190KSBub2V4Y2VwdCB7CisgICAgICB0eXBlZGVmIGNocm9ubzo6ZHVyYXRpb248cmVwPiBfX3NlY3M7CisgICAgICByZXR1cm4gdGltZV90KAorICAgICAgICAgIGNocm9ubzo6ZHVyYXRpb25fY2FzdDxfX3NlY3M+KF9fdC50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCkpOworICB9CisKKyAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICBzdGF0aWMgdGltZV9wb2ludCBmcm9tX3RpbWVfdCh0aW1lX3QgX190KSBub2V4Y2VwdCB7CisgICAgICB0eXBlZGVmIGNocm9ubzo6ZHVyYXRpb248cmVwPiBfX3NlY3M7CisgICAgICByZXR1cm4gdGltZV9wb2ludChfX3NlY3MoX190KSk7CisgIH0KK307CitfTElCQ1BQX0VORF9OQU1FU1BBQ0VfRklMRVNZU1RFTQorI2VuZGlmIC8vICFfTElCQ1BQX0NYWDAzX0xBTkcKKwogX0xJQkNQUF9QT1BfTUFDUk9TCiAKICNlbmRpZiAgLy8gX0xJQkNQUF9DSFJPTk8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jaW50dHlwZXMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2ludHR5cGVzCmluZGV4IDNmNjFiMDYuLjU1YWY4NWMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jaW50dHlwZXMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NpbnR0eXBlcwpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2ludHR5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2Npc282NDYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2lzbzY0NgppbmRleCBiMmVmYzcyLi4xNzJmMTY3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2lzbzY0NgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2lzbzY0NgpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2lzbzY0NiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NsaW1pdHMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2xpbWl0cwppbmRleCA4MWZmZWNkLi40M2ViMmQzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2xpbWl0cworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2xpbWl0cwpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2xpbWl0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2Nsb2NhbGUgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2xvY2FsZQppbmRleCAwNWZhOWM2Li5iZmY0ZTkyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2xvY2FsZQorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY2xvY2FsZQpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY2xvY2FsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NtYXRoIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NtYXRoCmluZGV4IGY1ZjYyYWQuLjNhZjlmNTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jbWF0aAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY21hdGgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjbWF0aCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jb2RlY3Z0IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NvZGVjdnQKaW5kZXggNWViOWQxNS4uNWVhNDExZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NvZGVjdnQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NvZGVjdnQKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY29kZWN2dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jb21wYXJlIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NvbXBhcmUKaW5kZXggMDdmODhmMC4uZTA1MjU3YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NvbXBhcmUKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NvbXBhcmUKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY29tcGFyZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jb21wbGV4IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NvbXBsZXgKaW5kZXggOGNmNmE5NC4uZmY3MDJiNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NvbXBsZXgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NvbXBsZXgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNvbXBsZXggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jb21wbGV4LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY29tcGxleC5oCmluZGV4IGMyMzU5NjYuLmI3ODczM2IgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jb21wbGV4LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NvbXBsZXguaApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY29tcGxleC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NvbmRpdGlvbl92YXJpYWJsZSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jb25kaXRpb25fdmFyaWFibGUKaW5kZXggYzQ1YTMyNi4uOGM3MzM0NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NvbmRpdGlvbl92YXJpYWJsZQorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY29uZGl0aW9uX3ZhcmlhYmxlCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY29uZGl0aW9uX3ZhcmlhYmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3NldGptcCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc2V0am1wCmluZGV4IDU4YTljNzMuLmVkOTRiNTAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc2V0am1wCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc2V0am1wCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjc2V0am1wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3NpZ25hbCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc2lnbmFsCmluZGV4IDk3MjgyNjYuLjk5YWJkMDIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc2lnbmFsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc2lnbmFsCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjc2lnbmFsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3N0ZGFyZyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc3RkYXJnCmluZGV4IGM4YjY5OTkuLmU4MTQ3ZDQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc3RkYXJnCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc3RkYXJnCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjc3RkYXJnIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3N0ZGJvb2wgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3N0ZGJvb2wKaW5kZXggMmM3NjRhNi4uZmFkNDcxNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NzdGRib29sCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc3RkYm9vbApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY3N0ZGJvb2wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NzdGRkZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3N0ZGRlZgppbmRleCBiNGM0MmIxLi5iZDYyZDZkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3N0ZGRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3N0ZGRlZgpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY3N0ZGRlZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NzdGRpbnQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3N0ZGludAppbmRleCA3YTE4N2QzLi5mNzJmYTA2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3N0ZGludAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3N0ZGludApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY3N0ZGludCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NzdGRpbyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc3RkaW8KaW5kZXggMDBiOTg5Zi4uNjc1NTY5MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2NzdGRpbworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3N0ZGlvCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY3N0ZGlvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3N0ZGxpYiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc3RkbGliCmluZGV4IDAwYzYwNGUuLjY4YjNkZWQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc3RkbGliCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc3RkbGliCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjc3RkbGliIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3N0cmluZyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc3RyaW5nCmluZGV4IGQ1NTA2OTUuLjhiYzk2YTAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc3RyaW5nCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jc3RyaW5nCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjc3RyaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3RnbWF0aCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jdGdtYXRoCmluZGV4IDUzNWViN2QuLmJhMWVlZWEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jdGdtYXRoCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jdGdtYXRoCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGN0Z21hdGggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3RpbWUgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3RpbWUKaW5kZXggODI2NGZlMy4uY2I4NDc0ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2N0aW1lCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jdGltZQpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGN0aW1lIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2N0eXBlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3R5cGUuaAppbmRleCBlOTdmZjNjLi5kY2M3OTM1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3R5cGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3R5cGUuaApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGN0eXBlLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2N3Y2hhciBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jd2NoYXIKaW5kZXggZDI2OGU4Yi4uNDUxYzYyMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2N3Y2hhcgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3djaGFyCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjd2NoYXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3djdHlwZSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jd2N0eXBlCmluZGV4IDI1YjI0ODkuLjU3NWZkNTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jd2N0eXBlCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jd2N0eXBlCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjd2N0eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3h4YWJpLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvY3h4YWJpLmgKaW5kZXggMjU5NjU2MC4uMmMyZDA3MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2N4eGFiaS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9jeHhhYmkuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGN4eGFiaS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTE2MCw4ICsxNTksOCBAQAogZXh0ZXJuIF9MSUJDWFhBQklfRlVOQ19WSVMgYm9vbCBfX2N4YV91bmNhdWdodF9leGNlcHRpb24oKSB0aHJvdygpOwogZXh0ZXJuIF9MSUJDWFhBQklfRlVOQ19WSVMgdW5zaWduZWQgaW50IF9fY3hhX3VuY2F1Z2h0X2V4Y2VwdGlvbnMoKSB0aHJvdygpOwogCi0jaWZkZWYgX19saW51eF9fCi0vLyBMaW51eCBUTFMgc3VwcG9ydC4gTm90IHlldCBhbiBvZmZpY2lhbCBwYXJ0IG9mIHRoZSBJdGFuaXVtIEFCSS4KKyNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX0Z1Y2hzaWFfXykKKy8vIExpbnV4IGFuZCBGdWNoc2lhIFRMUyBzdXBwb3J0LiBOb3QgeWV0IGFuIG9mZmljaWFsIHBhcnQgb2YgdGhlIEl0YW5pdW0gQUJJLgogLy8gaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9nbGliYy93aWtpL0Rlc3RydWN0b3IlMjBzdXBwb3J0JTIwZm9yJTIwdGhyZWFkX2xvY2FsJTIwdmFyaWFibGVzCiBleHRlcm4gX0xJQkNYWEFCSV9GVU5DX1ZJUyBpbnQgX19jeGFfdGhyZWFkX2F0ZXhpdCh2b2lkICgqKSh2b2lkICopLCB2b2lkICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICopIHRocm93KCk7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZGVxdWUgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZGVxdWUKaW5kZXggNDE0YzdhOC4uNjBhMTEzMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2RlcXVlCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9kZXF1ZQpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGRlcXVlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTUwLDYgKzE0OSwxMSBAQAogICAgIHZvaWQgc3dhcChkZXF1ZTxULEFsbG9jYXRvcj4mIHgsIGRlcXVlPFQsQWxsb2NhdG9yPiYgeSkKICAgICAgICAgIG5vZXhjZXB0KG5vZXhjZXB0KHguc3dhcCh5KSkpOwogCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBVPgorICAgIHZvaWQgZXJhc2UoZGVxdWU8VCwgQWxsb2NhdG9yPiYgYywgY29uc3QgVSYgdmFsdWUpOyAgICAgICAvLyBDKysyMAordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgUHJlZGljYXRlPgorICAgIHZvaWQgZXJhc2VfaWYoZGVxdWU8VCwgQWxsb2NhdG9yPiYgYywgUHJlZGljYXRlIHByZWQpOyAgICAvLyBDKysyMAorCiB9ICAvLyBzdGQKIAogKi8KQEAgLTk4Nyw3ICs5OTEsNyBAQAogI2lmIF9MSUJDUFBfU1REX1ZFUiA+PSAxNAogICAgICAgICBfTk9FWENFUFQ7CiAjZWxzZQotICAgICAgICBfTk9FWENFUFRfKCFfX2FsbG9jX3RyYWl0czo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwOjp2YWx1ZSB8fCAKKyAgICAgICAgX05PRVhDRVBUXyghX19hbGxvY190cmFpdHM6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcDo6dmFsdWUgfHwKICAgICAgICAgICAgICAgICAgICAgX19pc19ub3Rocm93X3N3YXBwYWJsZTxhbGxvY2F0b3JfdHlwZT46OnZhbHVlKTsKICNlbmRpZgogcHJvdGVjdGVkOgpAQCAtMTE1Niw3ICsxMTYwLDcgQEAKICNpZiBfTElCQ1BQX1NURF9WRVIgPj0gMTQKICAgICAgICAgX05PRVhDRVBUCiAjZWxzZQotICAgICAgICBfTk9FWENFUFRfKCFfX2FsbG9jX3RyYWl0czo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwOjp2YWx1ZSB8fCAKKyAgICAgICAgX05PRVhDRVBUXyghX19hbGxvY190cmFpdHM6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcDo6dmFsdWUgfHwKICAgICAgICAgICAgICAgICAgICAgX19pc19ub3Rocm93X3N3YXBwYWJsZTxhbGxvY2F0b3JfdHlwZT46OnZhbHVlKQogI2VuZGlmCiB7CkBAIC0yMzQyLDcgKzIzNDYsNyBAQAogICAgICAgICAgICAgICAgIF9EcChfX2EsIF9fYmFzZTo6X19ibG9ja19zaXplKSk7CiAgICAgICAgIF9fYnVmLnB1c2hfYmFjayhfX2hvbGQuZ2V0KCkpOwogICAgICAgICBfX2hvbGQucmVsZWFzZSgpOwotICAgIAorCiAgICAgICAgIGZvciAodHlwZW5hbWUgX19iYXNlOjpfX21hcF9wb2ludGVyIF9faSA9IF9fYmFzZTo6X19tYXBfLmJlZ2luKCk7CiAgICAgICAgICAgICAgICAgX19pICE9IF9fYmFzZTo6X19tYXBfLmVuZCgpOyArK19faSkKICAgICAgICAgICAgIF9fYnVmLnB1c2hfYmFjaygqX19pKTsKQEAgLTI2MDQsNiArMjYwOCw3IEBACiB2b2lkCiBkZXF1ZTxfVHAsIF9BbGxvY2F0b3I+Ojpwb3BfYmFjaygpCiB7CisgICAgX0xJQkNQUF9BU1NFUlQoIWVtcHR5KCksICJkZXF1ZTo6cG9wX2JhY2sgY2FsbGVkIGZvciBlbXB0eSBkZXF1ZSIpOwogICAgIGFsbG9jYXRvcl90eXBlJiBfX2EgPSBfX2Jhc2U6Ol9fYWxsb2MoKTsKICAgICBzaXplX3R5cGUgX19wID0gX19iYXNlOjpzaXplKCkgKyBfX2Jhc2U6Ol9fc3RhcnRfIC0gMTsKICAgICBfX2FsbG9jX3RyYWl0czo6ZGVzdHJveShfX2EsIF9fdG9fcmF3X3BvaW50ZXIoKihfX2Jhc2U6Ol9fbWFwXy5iZWdpbigpICsKQEAgLTI4NTQsNyArMjg1OSw3IEBACiAjaWYgX0xJQkNQUF9TVERfVkVSID49IDE0CiAgICAgICAgIF9OT0VYQ0VQVAogI2Vsc2UKLSAgICAgICAgX05PRVhDRVBUXyghX19hbGxvY190cmFpdHM6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcDo6dmFsdWUgfHwgCisgICAgICAgIF9OT0VYQ0VQVF8oIV9fYWxsb2NfdHJhaXRzOjpwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXA6OnZhbHVlIHx8CiAgICAgICAgICAgICAgICAgICAgIF9faXNfbm90aHJvd19zd2FwcGFibGU8YWxsb2NhdG9yX3R5cGU+Ojp2YWx1ZSkKICNlbmRpZgogewpAQCAtMjkyNyw2ICsyOTMyLDE5IEBACiAgICAgX194LnN3YXAoX195KTsKIH0KIAorI2lmIF9MSUJDUFBfU1REX1ZFUiA+IDE3Cit0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2NhdG9yLCBjbGFzcyBfVXA+CitpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQordm9pZCBlcmFzZShkZXF1ZTxfVHAsIF9BbGxvY2F0b3I+JiBfX2MsIGNvbnN0IF9VcCYgX192KQoreyBfX2MuZXJhc2UoX1ZTVEQ6OnJlbW92ZShfX2MuYmVnaW4oKSwgX19jLmVuZCgpLCBfX3YpLCBfX2MuZW5kKCkpOyB9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvY2F0b3IsIGNsYXNzIF9QcmVkaWNhdGU+CitpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQordm9pZCBlcmFzZV9pZihkZXF1ZTxfVHAsIF9BbGxvY2F0b3I+JiBfX2MsIF9QcmVkaWNhdGUgX19wcmVkKQoreyBfX2MuZXJhc2UoX1ZTVEQ6OnJlbW92ZV9pZihfX2MuYmVnaW4oKSwgX19jLmVuZCgpLCBfX3ByZWQpLCBfX2MuZW5kKCkpOyB9CisjZW5kaWYKKworCiBfTElCQ1BQX0VORF9OQU1FU1BBQ0VfU1RECiAKIF9MSUJDUFBfUE9QX01BQ1JPUwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2Vycm5vLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXJybm8uaAppbmRleCBlZTY0MjkxLi40NDczMTllIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXJybm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXJybm8uaApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBlcnJuby5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4Y2VwdGlvbiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leGNlcHRpb24KaW5kZXggN2ZkOTI3OS4uNjNkOGFkMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4Y2VwdGlvbgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhjZXB0aW9uCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGV4Y2VwdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xNjQsNyArMTYzLDcgQEAKIH07CiAKIHRlbXBsYXRlPGNsYXNzIF9FcD4KLWV4Y2VwdGlvbl9wdHIKK19MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgZXhjZXB0aW9uX3B0cgogbWFrZV9leGNlcHRpb25fcHRyKF9FcCBfX2UpIF9OT0VYQ0VQVAogewogI2lmbmRlZiBfTElCQ1BQX05PX0VYQ0VQVElPTlMKQEAgLTIyMyw3ICsyMjIsNyBAQAogdGVtcGxhdGUgPGNsYXNzIF9FPiB2b2lkICpfX0dldEV4Y2VwdGlvbkluZm8oX0UpOwogCiB0ZW1wbGF0ZTxjbGFzcyBfRXA+Ci1leGNlcHRpb25fcHRyCitfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGV4Y2VwdGlvbl9wdHIKIG1ha2VfZXhjZXB0aW9uX3B0cihfRXAgX19lKSBfTk9FWENFUFQKIHsKICAgcmV0dXJuIF9fY29weV9leGNlcHRpb25fcHRyKF9WU1REOjphZGRyZXNzb2YoX19lKSwgX19HZXRFeGNlcHRpb25JbmZvKF9fZSkpOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9fX2NvbmZpZyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvX19jb25maWcKaW5kZXggYzZmMTc3Ni4uZDM2NjdiNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9fX2NvbmZpZworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL19fY29uZmlnCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBfX2NvbmZpZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL19fbWVtb3J5IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9fX21lbW9yeQppbmRleCAyMjlmZWE2Li40Y2Y4OTc4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL19fbWVtb3J5CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvX19tZW1vcnkKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvYWxnb3JpdGhtIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9hbGdvcml0aG0KaW5kZXggZWIzYmFkNi4uNzlmZDdiMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9hbGdvcml0aG0KKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9hbGdvcml0aG0KQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYWxnb3JpdGhtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvYW55IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9hbnkKaW5kZXggMWRjZGQwZi4uYzgwNTBlMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9hbnkKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9hbnkKQEAgLTEsMTEgKzEsMjAgQEAKIC8vIC0qLSBDKysgLSotCi0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBhbnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGFueSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKyNpZm5kZWYgX0xJQkNQUF9FWFBFUklNRU5UQUxfQU5ZCisjZGVmaW5lIF9MSUJDUFBfRVhQRVJJTUVOVEFMX0FOWQogCi0jZXJyb3IgIjxleHBlcmltZW50YWwvYW55PiBoYXMgYmVlbiByZW1vdmVkLiBVc2UgPGFueT4gaW5zdGVhZC4iCisjaW5jbHVkZSA8X19jb25maWc+CisKKyNpZmRlZiBfTElCQ1BQX1dBUk5JTkcKK19MSUJDUFBfV0FSTklORygiPGV4cGVyaW1lbnRhbC9hbnk+IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSA8YW55PiBpbnN0ZWFkLiIpCisjZWxzZQorIyB3YXJuaW5nICI8ZXhwZXJpbWVudGFsL2FueT4gaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIDxhbnk+IGluc3RlYWQuIgorI2VuZGlmCisKKyNlbmRpZiAvLyBfTElCQ1BQX0VYUEVSSU1FTlRBTF9BTlkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvY2hyb25vIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9jaHJvbm8KaW5kZXggNTkxY2Y3MS4uZjNjZWFhZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9jaHJvbm8KKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9jaHJvbm8KQEAgLTEsMTEgKzEsMjAgQEAKIC8vIC0qLSBDKysgLSotCi0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjaHJvbm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBjaHJvbm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisjaWZuZGVmIF9MSUJDUFBfRVhQRVJJTUVOVEFMX0NIUk9OTworI2RlZmluZSBfTElCQ1BQX0VYUEVSSU1FTlRBTF9DSFJPTk8KIAotI2Vycm9yICI8ZXhwZXJpbWVudGFsL2Nocm9ubz4gaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIDxjaHJvbm8+IGluc3RlYWQuIgorI2luY2x1ZGUgPF9fY29uZmlnPgorCisjaWZkZWYgX0xJQkNQUF9XQVJOSU5HCitfTElCQ1BQX1dBUk5JTkcoIjxleHBlcmltZW50YWwvY2hyb25vPiBoYXMgYmVlbiByZW1vdmVkLiBVc2UgPGNocm9ubz4gaW5zdGVhZC4iKQorI2Vsc2UKKyMgd2FybmluZyAiPGV4cGVyaW1lbnRhbC9jaHJvbm8+IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSA8Y2hyb25vPiBpbnN0ZWFkLiIKKyNlbmRpZgorCisjZW5kaWYgLy8gX0xJQkNQUF9FWFBFUklNRU5UQUxfQ0hST05PCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL2Nvcm91dGluZSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvY29yb3V0aW5lCmluZGV4IDFlYjIyNGEuLjEzZTMyNjIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvY29yb3V0aW5lCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvY29yb3V0aW5lCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGNvcm91dGluZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTIxNCw3ICsyMTMsNyBAQAogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICBfUHJvbWlzZSYgcHJvbWlzZSgpIGNvbnN0IHsKICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxfUHJvbWlzZSo+KAotICAgICAgICAgICAgX19idWlsdGluX2Nvcm9fcHJvbWlzZSh0aGlzLT5fX2hhbmRsZV8sIF9fYWxpZ25vZihfUHJvbWlzZSksIGZhbHNlKSk7CisgICAgICAgICAgICBfX2J1aWx0aW5fY29yb19wcm9taXNlKHRoaXMtPl9faGFuZGxlXywgX0xJQkNQUF9BTElHTk9GKF9Qcm9taXNlKSwgZmFsc2UpKTsKICAgICB9CiAKIHB1YmxpYzoKQEAgLTI1NCw3ICsyNTMsNyBAQAogICAgICAgICBjb3JvdXRpbmVfaGFuZGxlIF9fdG1wOwogICAgICAgICBfX3RtcC5fX2hhbmRsZV8gPSBfX2J1aWx0aW5fY29yb19wcm9taXNlKAogICAgICAgICAgICAgX1ZTVEQ6OmFkZHJlc3NvZihjb25zdF9jYXN0PF9SYXdQcm9taXNlJj4oX19wcm9taXNlKSksCi0gICAgICAgICAgICAgX19hbGlnbm9mKF9Qcm9taXNlKSwgdHJ1ZSk7CisgICAgICAgICAgICAgX0xJQkNQUF9BTElHTk9GKF9Qcm9taXNlKSwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiBfX3RtcDsKICAgICB9CiB9OwpAQCAtMjcyLDcgKzI3MSw3IEBACiAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgX1Byb21pc2UmIHByb21pc2UoKSBjb25zdCB7CiAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxfUHJvbWlzZSo+KAotICAgICAgX19idWlsdGluX2Nvcm9fcHJvbWlzZSh0aGlzLT5fX2hhbmRsZV8sIF9fYWxpZ25vZihfUHJvbWlzZSksIGZhbHNlKSk7CisgICAgICBfX2J1aWx0aW5fY29yb19wcm9taXNlKHRoaXMtPl9faGFuZGxlXywgX0xJQkNQUF9BTElHTk9GKF9Qcm9taXNlKSwgZmFsc2UpKTsKICAgfQogCiAgIF9MSUJDUFBfQ09OU1RFWFBSIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCBfTk9FWENFUFQgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9kZXF1ZSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvZGVxdWUKaW5kZXggZjg0OTU3NC4uNzNjMjc4NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9kZXF1ZQorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL2RlcXVlCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBkZXF1ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL2R5bmFycmF5IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9keW5hcnJheQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYwYzg3Yy4uMDAwMDAwMAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL2R5bmFycmF5CisrKyAvZGV2L251bGwKQEAgLTEsMzA1ICswLDAgQEAKLS8vIC0qLSBDKysgLSotCi0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGR5bmFycmF5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KLS8vCi0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotCi0jaWZuZGVmIF9MSUJDUFBfRFlOQVJSQVkKLSNkZWZpbmUgX0xJQkNQUF9EWU5BUlJBWQotCi0vKgotICAgIGR5bmFycmF5IHN5bm9wc2lzCi0KLW5hbWVzcGFjZSBzdGQgeyBuYW1lc3BhY2UgZXhwZXJpbWVudGFsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotY2xhc3MgZHluYXJyYXkKLXsKLSAgICAvLyB0eXBlczoKLSAgICB0eXBlZGVmICAgICAgIFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmICAgICAgIFQmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgY29uc3QgVCYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9yZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiAgICAgICBUKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiBjb25zdCBUKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiAgICAgICBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkICAgICAgICAgIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgICAgICAgaW1wbGVtZW50YXRpb24tZGVmaW5lZCAgICAgICAgICBjb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+ICAgICAgICAgICAgcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+ICAgICAgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHNpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgcHRyZGlmZl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0KLXB1YmxpYzoKLSAgICAvLyBjb25zdHJ1Y3QvY29weS9kZXN0cm95OgotICAgIGV4cGxpY2l0IGR5bmFycmF5KHNpemVfdHlwZSBjKTsKLSAgICBkeW5hcnJheShzaXplX3R5cGUgYywgY29uc3QgVCYgdik7Ci0gICAgZHluYXJyYXkoY29uc3QgZHluYXJyYXkmIGQpOwotICAgIGR5bmFycmF5KGluaXRpYWxpemVyX2xpc3Q8VD4pOwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jPgotICAgICAgZHluYXJyYXkoYWxsb2NhdG9yX2FyZ190LCBjb25zdCBBbGxvYyYgYSwgc2l6ZV90eXBlIGMsIGNvbnN0IEFsbG9jJiBhbGxvYyk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jPgotICAgICAgZHluYXJyYXkoYWxsb2NhdG9yX2FyZ190LCBjb25zdCBBbGxvYyYgYSwgc2l6ZV90eXBlIGMsIGNvbnN0IFQmIHYsIGNvbnN0IEFsbG9jJiBhbGxvYyk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jPgotICAgICAgZHluYXJyYXkoYWxsb2NhdG9yX2FyZ190LCBjb25zdCBBbGxvYyYgYSwgY29uc3QgZHluYXJyYXkmIGQsIGNvbnN0IEFsbG9jJiBhbGxvYyk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIEFsbG9jPgotICAgICAgZHluYXJyYXkoYWxsb2NhdG9yX2FyZ190LCBjb25zdCBBbGxvYyYgYSwgaW5pdGlhbGl6ZXJfbGlzdDxUPiwgY29uc3QgQWxsb2MmIGFsbG9jKTsKLSAgICBkeW5hcnJheSYgb3BlcmF0b3I9KGNvbnN0IGR5bmFycmF5JikgPSBkZWxldGU7Ci0gICAgfmR5bmFycmF5KCk7Ci0KLSAgICAvLyBpdGVyYXRvcnM6Ci0gICAgaXRlcmF0b3IgICAgICAgYmVnaW4oKSAgICAgICAgbm9leGNlcHQ7Ci0gICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSAgY29uc3Qgbm9leGNlcHQ7Ci0gICAgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3Qgbm9leGNlcHQ7Ci0gICAgaXRlcmF0b3IgICAgICAgZW5kKCkgICAgICAgICAgbm9leGNlcHQ7Ci0gICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgICAgY29uc3Qgbm9leGNlcHQ7Ci0gICAgY29uc3RfaXRlcmF0b3IgY2VuZCgpICAgY29uc3Qgbm9leGNlcHQ7Ci0KLSAgICByZXZlcnNlX2l0ZXJhdG9yICAgICAgIHJiZWdpbigpICAgICAgICBub2V4Y2VwdDsKLSAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpICBjb25zdCBub2V4Y2VwdDsKLSAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyYmVnaW4oKSBjb25zdCBub2V4Y2VwdDsKLSAgICByZXZlcnNlX2l0ZXJhdG9yICAgICAgIHJlbmQoKSAgICAgICAgICBub2V4Y2VwdDsKLSAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSAgICBjb25zdCBub2V4Y2VwdDsKLSAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyZW5kKCkgICBjb25zdCBub2V4Y2VwdDsKLQotICAgIC8vIGNhcGFjaXR5OgotICAgIHNpemVfdHlwZSBzaXplKCkgICAgIGNvbnN0IG5vZXhjZXB0OwotICAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IG5vZXhjZXB0OwotICAgIGJvb2wgICAgICBlbXB0eSgpICAgIGNvbnN0IG5vZXhjZXB0OwotCi0gICAgLy8gZWxlbWVudCBhY2Nlc3M6Ci0gICAgcmVmZXJlbmNlICAgICAgIG9wZXJhdG9yW10oc2l6ZV90eXBlIG4pOwotICAgIGNvbnN0X3JlZmVyZW5jZSBvcGVyYXRvcltdKHNpemVfdHlwZSBuKSBjb25zdDsKLQotICAgIHJlZmVyZW5jZSAgICAgICBmcm9udCgpOwotICAgIGNvbnN0X3JlZmVyZW5jZSBmcm9udCgpIGNvbnN0OwotICAgIHJlZmVyZW5jZSAgICAgICBiYWNrKCk7Ci0gICAgY29uc3RfcmVmZXJlbmNlIGJhY2soKSAgY29uc3Q7Ci0KLSAgICBjb25zdF9yZWZlcmVuY2UgYXQoc2l6ZV90eXBlIG4pIGNvbnN0OwotICAgIHJlZmVyZW5jZSAgICAgICBhdChzaXplX3R5cGUgbik7Ci0KLSAgICAvLyBkYXRhIGFjY2VzczoKLSAgICBUKiAgICAgICBkYXRhKCkgICAgICAgbm9leGNlcHQ7Ci0gICAgY29uc3QgVCogZGF0YSgpIGNvbnN0IG5vZXhjZXB0OwotCi0gICAgLy8gbXV0YXRpbmcgbWVtYmVyIGZ1bmN0aW9uczoKLSAgICB2b2lkIGZpbGwoY29uc3QgVCYgdik7Ci19OwotCi19fSAgLy8gc3RkOjpleHBlcmltZW50YWwKLQotKi8KLSNpbmNsdWRlIDxfX2NvbmZpZz4KLSNpZiBfTElCQ1BQX1NURF9WRVIgPiAxMQotCi0jaW5jbHVkZSA8X19mdW5jdGlvbmFsX2Jhc2U+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+Ci0jaW5jbHVkZSA8bmV3PgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotI2lmICFkZWZpbmVkKF9MSUJDUFBfSEFTX05PX1BSQUdNQV9TWVNURU1fSEVBREVSKQotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0KLV9MSUJDUFBfUFVTSF9NQUNST1MKLSNpbmNsdWRlIDxfX3VuZGVmX21hY3Jvcz4KLQotbmFtZXNwYWNlIHN0ZCB7IG5hbWVzcGFjZSBleHBlcmltZW50YWwgeyBpbmxpbmUgbmFtZXNwYWNlIF9fYXJyYXlfZXh0ZW5zaW9uc192MSB7Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHA+Ci1zdHJ1Y3QgX0xJQkNQUF9URU1QTEFURV9WSVMgX0xJQkNQUF9BVkFJTEFCSUxJVFlfRFlOQVJSQVkgZHluYXJyYXkKLXsKLXB1YmxpYzoKLSAgICAvLyB0eXBlczoKLSAgICB0eXBlZGVmIGR5bmFycmF5IF9fc2VsZjsKLSAgICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICBjb25zdF9yZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSogICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUqICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqICAgICAgICAgICAgICAgICAgICAgY29uc3RfcG9pbnRlcjsKLSAgICB0eXBlZGVmIHNpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgcHRyZGlmZl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+ICAgICAgIHJldmVyc2VfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Ci0KLXByaXZhdGU6Ci0gICAgc2l6ZV90ICAgICAgICAgICAgICAgICAgX19zaXplXzsKLSAgICB2YWx1ZV90eXBlICogICAgICAgICAgICBfX2Jhc2VfOwotICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgZHluYXJyYXkgKCkgbm9leGNlcHQgOiAgX19zaXplXygwKSwgX19iYXNlXyhudWxscHRyKSB7fQotICAgIAotICAgIHN0YXRpYyBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIHZhbHVlX3R5cGUqIF9fYWxsb2NhdGUoc2l6ZV90IF9fY291bnQpIHsKLSAgICAgICAgaWYgKG51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC8gc2l6ZW9mICh2YWx1ZV90eXBlKSA8PSBfX2NvdW50KQotICAgICAgICAgICAgX190aHJvd19iYWRfYXJyYXlfbGVuZ3RoKCk7Ci0KLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHZhbHVlX3R5cGUgKj4oCi0gICAgICAgICAgICBfVlNURDo6X19saWJjcHBfYWxsb2NhdGUoc2l6ZW9mKHZhbHVlX3R5cGUpICogX19jb3VudCwgX19hbGlnbm9mKHZhbHVlX3R5cGUpKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgdm9pZCBfX2RlYWxsb2NhdGVfdmFsdWUodmFsdWVfdHlwZSogX19wdHIgKSBub2V4Y2VwdCB7Ci0gICAgICAgIF9WU1REOjpfX2xpYmNwcF9kZWFsbG9jYXRlKHN0YXRpY19jYXN0PHZvaWQgKj4oX19wdHIpLCBfX2FsaWdub2YodmFsdWVfdHlwZSkpOwotICAgIH0KLQotcHVibGljOgotCi0gICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIGV4cGxpY2l0IGR5bmFycmF5KHNpemVfdHlwZSBfX2MpOwotICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICBkeW5hcnJheShzaXplX3R5cGUgX19jLCBjb25zdCB2YWx1ZV90eXBlJiBfX3YpOwotICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICBkeW5hcnJheShjb25zdCBkeW5hcnJheSYgX19kKTsKLSAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgZHluYXJyYXkoaW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPik7Ci0KLS8vICBXZSdyZSBub3QgaW1wbGVtZW50aW5nIHRoZXNlIHJpZ2h0IG5vdy4KLS8vICBVcGRhdGVkIHdpdGggdGhlIHJlc29sdXRpb24gb2YgTFdHIGlzc3VlICMyMjU1Ci0vLyAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIF9BbGxvYz4KLS8vICAgICAgIGR5bmFycmF5KGFsbG9jYXRvcl9hcmdfdCwgY29uc3QgX0FsbG9jJiBfX2FsbG9jLCBzaXplX3R5cGUgX19jKTsKLS8vICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX0FsbG9jPgotLy8gICAgICAgZHluYXJyYXkoYWxsb2NhdG9yX2FyZ190LCBjb25zdCBfQWxsb2MmIF9fYWxsb2MsIHNpemVfdHlwZSBfX2MsIGNvbnN0IHZhbHVlX3R5cGUmIF9fdik7Ci0vLyAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIF9BbGxvYz4KLS8vICAgICAgIGR5bmFycmF5KGFsbG9jYXRvcl9hcmdfdCwgY29uc3QgX0FsbG9jJiBfX2FsbG9jLCBjb25zdCBkeW5hcnJheSYgX19kKTsKLS8vICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX0FsbG9jPgotLy8gICAgICAgZHluYXJyYXkoYWxsb2NhdG9yX2FyZ190LCBjb25zdCBfQWxsb2MmIF9fYWxsb2MsIGluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4pOwotCi0gICAgZHluYXJyYXkmIG9wZXJhdG9yPShjb25zdCBkeW5hcnJheSYpID0gZGVsZXRlOwotICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICB+ZHluYXJyYXkoKTsKLQotICAgIC8vIGl0ZXJhdG9yczoKLSAgICBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBpdGVyYXRvciAgICAgICBiZWdpbigpICAgICAgICBub2V4Y2VwdCB7IHJldHVybiBpdGVyYXRvcihkYXRhKCkpOyB9Ci0gICAgaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IoZGF0YSgpKTsgfQotICAgIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0X2l0ZXJhdG9yIGNiZWdpbigpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKGRhdGEoKSk7IH0KLSAgICBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBpdGVyYXRvciAgICAgICBlbmQoKSAgICAgICAgICBub2V4Y2VwdCB7IHJldHVybiBpdGVyYXRvcihkYXRhKCkgKyBfX3NpemVfKTsgfQotICAgIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0X2l0ZXJhdG9yIGVuZCgpICAgIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKGRhdGEoKSArIF9fc2l6ZV8pOyB9Ci0gICAgaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RfaXRlcmF0b3IgY2VuZCgpICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IoZGF0YSgpICsgX19zaXplXyk7IH0KLQotICAgIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHJldmVyc2VfaXRlcmF0b3IgICAgICAgcmJlZ2luKCkgICAgICAgIG5vZXhjZXB0IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9Ci0gICAgaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihlbmQoKSk7IH0KLSAgICBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIGNyYmVnaW4oKSBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQotICAgIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHJldmVyc2VfaXRlcmF0b3IgICAgICAgcmVuZCgpICAgICAgICAgIG5vZXhjZXB0IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KLSAgICBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJlbmQoKSAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKGJlZ2luKCkpOyB9Ci0gICAgaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjcmVuZCgpICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQotCi0gICAgLy8gY2FwYWNpdHk6Ci0gICAgaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc2l6ZV90eXBlIHNpemUoKSAgICAgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19zaXplXzsgfQotICAgIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IG5vZXhjZXB0IHsgcmV0dXJuIF9fc2l6ZV87IH0KLSAgICBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBib29sICAgICAgZW1wdHkoKSAgICBjb25zdCBub2V4Y2VwdCB7IHJldHVybiBfX3NpemVfID09IDA7IH0KLQotICAgIC8vIGVsZW1lbnQgYWNjZXNzOgotICAgIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHJlZmVyZW5jZSAgICAgICBvcGVyYXRvcltdKHNpemVfdHlwZSBfX24pICAgICAgIHsgcmV0dXJuIGRhdGEoKVtfX25dOyB9Ci0gICAgaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIF9fbikgY29uc3QgeyByZXR1cm4gZGF0YSgpW19fbl07IH0KLQotICAgIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHJlZmVyZW5jZSAgICAgICBmcm9udCgpICAgICAgIHsgcmV0dXJuIGRhdGEoKVswXTsgfQotICAgIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0X3JlZmVyZW5jZSBmcm9udCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEoKVswXTsgfQotICAgIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHJlZmVyZW5jZSAgICAgICBiYWNrKCkgICAgICAgIHsgcmV0dXJuIGRhdGEoKVtfX3NpemVfLTFdOyB9Ci0gICAgaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3RfcmVmZXJlbmNlIGJhY2soKSAgY29uc3QgeyByZXR1cm4gZGF0YSgpW19fc2l6ZV8tMV07IH0KLQotICAgIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0X3JlZmVyZW5jZSBhdChzaXplX3R5cGUgX19uKSBjb25zdDsKLSAgICBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSByZWZlcmVuY2UgICAgICAgYXQoc2l6ZV90eXBlIF9fbik7Ci0KLSAgICAvLyBkYXRhIGFjY2VzczoKLSAgICBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBfVHAqICAgICAgIGRhdGEoKSAgICAgICBub2V4Y2VwdCB7IHJldHVybiBfX2Jhc2VfOyB9Ci0gICAgaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY29uc3QgX1RwKiBkYXRhKCkgY29uc3Qgbm9leGNlcHQgeyByZXR1cm4gX19iYXNlXzsgfQotCi0gICAgLy8gbXV0YXRpbmcgbWVtYmVyIGZ1bmN0aW9uczoKLSAgICBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSB2b2lkIGZpbGwoY29uc3QgdmFsdWVfdHlwZSYgX192KSB7IGZpbGxfbihiZWdpbigpLCBfX3NpemVfLCBfX3YpOyB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgX1RwPgotaW5saW5lCi1keW5hcnJheTxfVHA+OjpkeW5hcnJheShzaXplX3R5cGUgX19jKSA6IGR5bmFycmF5ICgpCi17Ci0gICAgX19iYXNlXyA9IF9fYWxsb2NhdGUgKF9fYyk7Ci0gICAgdmFsdWVfdHlwZSAqX19kYXRhID0gZGF0YSAoKTsKLSAgICBmb3IgKCBfX3NpemVfID0gMDsgX19zaXplXyA8IF9fYzsgKytfX3NpemVfLCArK19fZGF0YSApCi0gICAgICAgIDo6bmV3IChfX2RhdGEpIHZhbHVlX3R5cGU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHA+Ci1pbmxpbmUKLWR5bmFycmF5PF9UcD46OmR5bmFycmF5KHNpemVfdHlwZSBfX2MsIGNvbnN0IHZhbHVlX3R5cGUmIF9fdikgOiBkeW5hcnJheSAoKQotewotICAgIF9fYmFzZV8gPSBfX2FsbG9jYXRlIChfX2MpOwotICAgIHZhbHVlX3R5cGUgKl9fZGF0YSA9IGRhdGEgKCk7Ci0gICAgZm9yICggX19zaXplXyA9IDA7IF9fc2l6ZV8gPCBfX2M7ICsrX19zaXplXywgKytfX2RhdGEgKQotICAgICAgICA6Om5ldyAoX19kYXRhKSB2YWx1ZV90eXBlIChfX3YpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgX1RwPgotaW5saW5lCi1keW5hcnJheTxfVHA+OjpkeW5hcnJheShpbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IF9faWwpIDogZHluYXJyYXkgKCkKLXsKLSAgICBzaXplX3Qgc3ogPSBfX2lsLnNpemUoKTsKLSAgICBfX2Jhc2VfID0gX19hbGxvY2F0ZSAoc3opOwotICAgIHZhbHVlX3R5cGUgKl9fZGF0YSA9IGRhdGEgKCk7Ci0gICAgYXV0byBzcmMgPSBfX2lsLmJlZ2luKCk7Ci0gICAgZm9yICggX19zaXplXyA9IDA7IF9fc2l6ZV8gPCBzejsgKytfX3NpemVfLCArK19fZGF0YSwgKytzcmMgKQotICAgICAgICA6Om5ldyAoX19kYXRhKSB2YWx1ZV90eXBlICgqc3JjKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIF9UcD4KLWlubGluZQotZHluYXJyYXk8X1RwPjo6ZHluYXJyYXkoY29uc3QgZHluYXJyYXkmIF9fZCkgOiBkeW5hcnJheSAoKQotewotICAgIHNpemVfdCBzeiA9IF9fZC5zaXplKCk7Ci0gICAgX19iYXNlXyA9IF9fYWxsb2NhdGUgKHN6KTsKLSAgICB2YWx1ZV90eXBlICpfX2RhdGEgPSBkYXRhICgpOwotICAgIGF1dG8gc3JjID0gX19kLmJlZ2luKCk7Ci0gICAgZm9yICggX19zaXplXyA9IDA7IF9fc2l6ZV8gPCBzejsgKytfX3NpemVfLCArK19fZGF0YSwgKytzcmMgKQotICAgICAgICA6Om5ldyAoX19kYXRhKSB2YWx1ZV90eXBlICgqc3JjKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIF9UcD4KLWlubGluZQotZHluYXJyYXk8X1RwPjo6fmR5bmFycmF5KCkKLXsgCi0gICAgdmFsdWVfdHlwZSAqX19kYXRhID0gZGF0YSAoKSArIF9fc2l6ZV87Ci0gICAgZm9yICggc2l6ZV90IGkgPSAwOyBpIDwgX19zaXplXzsgKytpICkKLSAgICAgICAgKC0tX19kYXRhKS0+dmFsdWVfdHlwZTo6fnZhbHVlX3R5cGUoKTsKLSAgICBfX2RlYWxsb2NhdGVfdmFsdWUoIF9fYmFzZV8gKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIF9UcD4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi10eXBlbmFtZSBkeW5hcnJheTxfVHA+OjpyZWZlcmVuY2UKLWR5bmFycmF5PF9UcD46OmF0KHNpemVfdHlwZSBfX24pCi17Ci0gICAgaWYgKF9fbiA+PSBfX3NpemVfKQotICAgICAgICBfX3Rocm93X291dF9vZl9yYW5nZSgiZHluYXJyYXk6OmF0Iik7Ci0KLSAgICByZXR1cm4gZGF0YSgpW19fbl07Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHA+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotdHlwZW5hbWUgZHluYXJyYXk8X1RwPjo6Y29uc3RfcmVmZXJlbmNlCi1keW5hcnJheTxfVHA+OjphdChzaXplX3R5cGUgX19uKSBjb25zdAotewotICAgIGlmIChfX24gPj0gX19zaXplXykKLSAgICAgICAgX190aHJvd19vdXRfb2ZfcmFuZ2UoImR5bmFycmF5OjphdCIpOwotCi0gICAgcmV0dXJuIGRhdGEoKVtfX25dOwotfQotCi19fX0KLQotCi1fTElCQ1BQX0JFR0lOX05BTUVTUEFDRV9TVEQKLXRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvYz4KLXN0cnVjdCBfTElCQ1BQX1RFTVBMQVRFX1ZJUyB1c2VzX2FsbG9jYXRvcjxzdGQ6OmV4cGVyaW1lbnRhbDo6ZHluYXJyYXk8X1RwPiwgX0FsbG9jPiA6IHRydWVfdHlwZSB7fTsKLV9MSUJDUFBfRU5EX05BTUVTUEFDRV9TVEQKLQotX0xJQkNQUF9QT1BfTUFDUk9TCi0KLSNlbmRpZiAgLy8gaWYgX0xJQkNQUF9TVERfVkVSID4gMTEgCi0jZW5kaWYgIC8vIF9MSUJDUFBfRFlOQVJSQVkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvZmlsZXN5c3RlbSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvZmlsZXN5c3RlbQppbmRleCAyOGQ4ZGNmLi5kMmU2MjM3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL2ZpbGVzeXN0ZW0KKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9maWxlc3lzdGVtCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBmaWxlc3lzdGVtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogI2lmbmRlZiBfTElCQ1BQX0VYUEVSSU1FTlRBTF9GSUxFU1lTVEVNCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL2ZvcndhcmRfbGlzdCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvZm9yd2FyZF9saXN0CmluZGV4IDU1ZTE5NWYuLjkzZjZkZWIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvZm9yd2FyZF9saXN0CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvZm9yd2FyZF9saXN0CkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBmb3J3YXJkX2xpc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL2Z1bmN0aW9uYWwgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL2Z1bmN0aW9uYWwKaW5kZXggZjYzZGZiMC4uOGM1NWY0ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9mdW5jdGlvbmFsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvZnVuY3Rpb25hbApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBmdW5jdGlvbmFsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9pdGVyYXRvciBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvaXRlcmF0b3IKaW5kZXggZWE2NzJlOS4uNmE2ZTUxZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9pdGVyYXRvcgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL2l0ZXJhdG9yCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGl0ZXJhdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL2xpc3QgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL2xpc3QKaW5kZXggMTY3OGVlMy4uYWRjNjRhOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9saXN0CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvbGlzdApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbGlzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL21hcCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvbWFwCmluZGV4IGNmZjJjNWUuLjk2NWQ3NTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvbWFwCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvbWFwCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIG1hcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL21lbW9yeV9yZXNvdXJjZSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvbWVtb3J5X3Jlc291cmNlCmluZGV4IDIyMWNlNWIuLmY5OTlmYjkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvbWVtb3J5X3Jlc291cmNlCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvbWVtb3J5X3Jlc291cmNlCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBtZW1vcnlfcmVzb3VyY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC05OCw3ICs5Nyw3IEBACiAvLyA4LjUsIG1lbW9yeS5yZXNvdXJjZQogY2xhc3MgX0xJQkNQUF9UWVBFX1ZJUyBtZW1vcnlfcmVzb3VyY2UKIHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IF9fbWF4X2FsaWduID0gYWxpZ25vZihtYXhfYWxpZ25fdCk7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBfX21heF9hbGlnbiA9IF9MSUJDUFBfQUxJR05PRihtYXhfYWxpZ25fdCk7CiAKIC8vIDguNS4yLCBtZW1vcnkucmVzb3VyY2UucHVibGljCiBwdWJsaWM6CkBAIC0xOTAsNyArMTg5LDcgQEAKICAgICAgICAgICAgICAgICAiICduJyBleGNlZWRzIG1heGltdW0gc3VwcG9ydGVkIHNpemUiKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8X1ZhbHVlVHlwZSo+KAotICAgICAgICAgICAgX19yZXNfLT5hbGxvY2F0ZShfX24gKiBzaXplb2YoX1ZhbHVlVHlwZSksIGFsaWdub2YoX1ZhbHVlVHlwZSkpCisgICAgICAgICAgICBfX3Jlc18tPmFsbG9jYXRlKF9fbiAqIHNpemVvZihfVmFsdWVUeXBlKSwgX0xJQkNQUF9BTElHTk9GKF9WYWx1ZVR5cGUpKQogICAgICAgICApOwogICAgIH0KIApAQCAtMTk4LDcgKzE5Nyw3IEBACiAgICAgdm9pZCBkZWFsbG9jYXRlKF9WYWx1ZVR5cGUgKiBfX3AsIHNpemVfdCBfX24pIF9OT0VYQ0VQVCB7CiAgICAgICAgIF9MSUJDUFBfQVNTRVJUKF9fbiA8PSBfX21heF9zaXplKCksCiAgICAgICAgICAgICAgICAgICAgICAgICJkZWFsbG9jYXRlIGNhbGxlZCBmb3Igc2l6ZSB3aGljaCBleGNlZWRzIG1heF9zaXplKCkiKTsKLSAgICAgICAgX19yZXNfLT5kZWFsbG9jYXRlKF9fcCwgX19uICogc2l6ZW9mKF9WYWx1ZVR5cGUpLCBhbGlnbm9mKF9WYWx1ZVR5cGUpKTsKKyAgICAgICAgX19yZXNfLT5kZWFsbG9jYXRlKF9fcCwgX19uICogc2l6ZW9mKF9WYWx1ZVR5cGUpLCBfTElCQ1BQX0FMSUdOT0YoX1ZhbHVlVHlwZSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIC4uLl9Ucz4KQEAgLTM0NSw3ICszNDQsNyBAQAogICAgICAgICAgICAgICAgJiYgaXNfc2FtZTx0eXBlbmFtZSBfQ1RyYWl0czo6cG9pbnRlciwgY2hhcio+Ojp2YWx1ZQogICAgICAgICAgICAgICAgJiYgaXNfc2FtZTx0eXBlbmFtZSBfQ1RyYWl0czo6dm9pZF9wb2ludGVyLCB2b2lkKj46OnZhbHVlLCAiIik7CiAKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IF9NYXhBbGlnbiA9IGFsaWdub2YobWF4X2FsaWduX3QpOworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgX01heEFsaWduID0gX0xJQkNQUF9BTElHTk9GKG1heF9hbGlnbl90KTsKIAogICAgIHVzaW5nIF9BbGxvYyA9IHR5cGVuYW1lIF9DVHJhaXRzOjp0ZW1wbGF0ZSByZWJpbmRfYWxsb2M8CiAgICAgICAgICAgICB0eXBlbmFtZSBhbGlnbmVkX3N0b3JhZ2U8X01heEFsaWduLCBfTWF4QWxpZ24+Ojp0eXBlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL251bWVyaWMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL251bWVyaWMKaW5kZXggMTRhNjY0MC4uNGVhMTMwNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9udW1lcmljCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvbnVtZXJpYwpAQCAtMSwxMSArMSwyMCBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIG51bWVyaWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisjaWZuZGVmIF9MSUJDUFBfRVhQRVJJTUVOVEFMX05VTUVSSUMKKyNkZWZpbmUgX0xJQkNQUF9FWFBFUklNRU5UQUxfTlVNRVJJQwogCi0jZXJyb3IgIjxleHBlcmltZW50YWwvbnVtZXJpYz4gaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIDxudW1lcmljPiBpbnN0ZWFkLiIKKyNpbmNsdWRlIDxfX2NvbmZpZz4KKworI2lmZGVmIF9MSUJDUFBfV0FSTklORworX0xJQkNQUF9XQVJOSU5HKCI8ZXhwZXJpbWVudGFsL251bWVyaWM+IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSA8bnVtZXJpYz4gaW5zdGVhZC4iKQorI2Vsc2UKKyMgd2FybmluZyAiPGV4cGVyaW1lbnRhbC9udW1lcmljPiBoYXMgYmVlbiByZW1vdmVkLiBVc2UgPG51bWVyaWM+IGluc3RlYWQuIgorI2VuZGlmCisKKyNlbmRpZiAvLyBfTElCQ1BQX0VYUEVSSU1FTlRBTF9OVU1FUklDCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL29wdGlvbmFsIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9vcHRpb25hbAppbmRleCBkNjhjZWZkLi4xNzQ5Y2Q2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL29wdGlvbmFsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvb3B0aW9uYWwKQEAgLTEsMTEgKzEsMjAgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIG9wdGlvbmFsIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworI2lmbmRlZiBfTElCQ1BQX0VYUEVSSU1FTlRBTF9PUFRJT05BTAorI2RlZmluZSBfTElCQ1BQX0VYUEVSSU1FTlRBTF9PUFRJT05BTAogCi0jZXJyb3IgIjxleHBlcmltZW50YWwvb3B0aW9uYWw+IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSA8b3B0aW9uYWw+IGluc3RlYWQuIgorI2luY2x1ZGUgPF9fY29uZmlnPgorCisjaWZkZWYgX0xJQkNQUF9XQVJOSU5HCitfTElCQ1BQX1dBUk5JTkcoIjxleHBlcmltZW50YWwvb3B0aW9uYWw+IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSA8b3B0aW9uYWw+IGluc3RlYWQuIikKKyNlbHNlCisjIHdhcm5pbmcgIjxleHBlcmltZW50YWwvb3B0aW9uYWw+IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSA8b3B0aW9uYWw+IGluc3RlYWQuIgorI2VuZGlmCisKKyNlbmRpZiAvLyBfTElCQ1BQX0VYUEVSSU1FTlRBTF9PUFRJT05BTApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9wcm9wYWdhdGVfY29uc3QgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3Byb3BhZ2F0ZV9jb25zdAppbmRleCAxODg1NDg1Li4wOTJiMDEzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3Byb3BhZ2F0ZV9jb25zdAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3Byb3BhZ2F0ZV9jb25zdApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gcHJvcGFnYXRlX2NvbnN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9yYXRpbyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvcmF0aW8KaW5kZXggOWMyYmYyZS4uNGNkNGZhMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9yYXRpbworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3JhdGlvCkBAIC0xLDExICsxLDIwIEBACiAvLyAtKi0gQysrIC0qLQotLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gcmF0aW8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gcmF0aW8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisjaWZuZGVmIF9MSUJDUFBfRVhQRVJJTUVOVEFMX1JBVElPCisjZGVmaW5lIF9MSUJDUFBfRVhQRVJJTUVOVEFMX1JBVElPCiAKLSNlcnJvciAiPGV4cGVyaW1lbnRhbC9yYXRpbz4gaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIDxyYXRpbz4gaW5zdGVhZC4iCisjaW5jbHVkZSA8X19jb25maWc+CisKKyNpZmRlZiBfTElCQ1BQX1dBUk5JTkcKK19MSUJDUFBfV0FSTklORygiPGV4cGVyaW1lbnRhbC9yYXRpbz4gaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIDxyYXRpbz4gaW5zdGVhZC4iKQorI2Vsc2UKKyMgd2FybmluZyAiPGV4cGVyaW1lbnRhbC9yYXRpbz4gaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIDxyYXRpbz4gaW5zdGVhZC4iCisjZW5kaWYKKworI2VuZGlmIC8vIF9MSUJDUFBfRVhQRVJJTUVOVEFMX1JBVElPCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3JlZ2V4IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9yZWdleAppbmRleCBkMzg4OTFjLi4xNzE5M2NmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3JlZ2V4CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvcmVnZXgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gcmVnZXggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvc2V0IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9zZXQKaW5kZXggMjBjZjZkNC4uNTJmNGRmMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9zZXQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9zZXQKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGxpc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9zaW1kIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9zaW1kCmluZGV4IDY1ODA0NDMuLjM5YWMzNWUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvc2ltZAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3NpbWQKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzaW1kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAjaWZuZGVmIF9MSUJDUFBfRVhQRVJJTUVOVEFMX1NJTUQKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvc3RyaW5nIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9zdHJpbmcKaW5kZXggOGI4NTQ1MS4uMjY0ZmY5MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9zdHJpbmcKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9zdHJpbmcKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN0cmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9zdHJpbmdfdmlldyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvc3RyaW5nX3ZpZXcKaW5kZXggZjEzYmZmNS4uNGI1OWU2ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9zdHJpbmdfdmlldworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3N0cmluZ192aWV3CkBAIC0xLDExICsxLDIwIEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3RyaW5nX3ZpZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKyNpZm5kZWYgX0xJQkNQUF9FWFBFUklNRU5UQUxfU1RSSU5HX1ZJRVcKKyNkZWZpbmUgX0xJQkNQUF9FWFBFUklNRU5UQUxfU1RSSU5HX1ZJRVcKIAotI2Vycm9yICI8ZXhwZXJpbWVudGFsL3N0cmluZ192aWV3PiBoYXMgYmVlbiByZW1vdmVkLiBVc2UgPHN0cmluZ192aWV3PiBpbnN0ZWFkLiIKKyNpbmNsdWRlIDxfX2NvbmZpZz4KKworI2lmZGVmIF9MSUJDUFBfV0FSTklORworX0xJQkNQUF9XQVJOSU5HKCI8ZXhwZXJpbWVudGFsL3N0cmluZ192aWV3PiBoYXMgYmVlbiByZW1vdmVkLiBVc2UgPHN0cmluZ192aWV3PiBpbnN0ZWFkLiIpCisjZWxzZQorIyB3YXJuaW5nICI8ZXhwZXJpbWVudGFsL3N0cmluZ192aWV3PiBoYXMgYmVlbiByZW1vdmVkLiBVc2UgPHN0cmluZ192aWV3PiBpbnN0ZWFkLiIKKyNlbmRpZgorCisjZW5kaWYgLy8gX0xJQkNQUF9FWFBFUklNRU5UQUxfU1RSSU5HX1ZJRVcKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvc3lzdGVtX2Vycm9yIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9zeXN0ZW1fZXJyb3IKaW5kZXggNzkzNzM1Ny4uMDk0ZTZkMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9zeXN0ZW1fZXJyb3IKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC9zeXN0ZW1fZXJyb3IKQEAgLTEsMTEgKzEsMjAgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN5c3RlbV9lcnJvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworI2lmbmRlZiBfTElCQ1BQX0VYUEVSSU1FTlRBTF9TWVNURU1fRVJST1IKKyNkZWZpbmUgX0xJQkNQUF9FWFBFUklNRU5UQUxfU1lTVEVNX0VSUk9SCiAKLSNlcnJvciAiPGV4cGVyaW1lbnRhbC9zeXN0ZW1fZXJyb3I+IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSA8c3lzdGVtX2Vycm9yPiBpbnN0ZWFkLiIKKyNpbmNsdWRlIDxfX2NvbmZpZz4KKworI2lmZGVmIF9MSUJDUFBfV0FSTklORworX0xJQkNQUF9XQVJOSU5HKCI8ZXhwZXJpbWVudGFsL3N5c3RlbV9lcnJvcj4gaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIDxzeXN0ZW1fZXJyb3I+IGluc3RlYWQuIikKKyNlbHNlCisjIHdhcm5pbmcgIjxleHBlcmltZW50YWwvc3lzdGVtX2Vycm9yPiBoYXMgYmVlbiByZW1vdmVkLiBVc2UgPHN5c3RlbV9lcnJvcj4gaW5zdGVhZC4iCisjZW5kaWYKKworI2VuZGlmIC8vIF9MSUJDUFBfRVhQRVJJTUVOVEFMX1NZU1RFTV9FUlJPUgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC90dXBsZSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvdHVwbGUKaW5kZXggMWYzN2E2Mi4uODI3ZWYzNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC90dXBsZQorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3R1cGxlCkBAIC0xLDExICsxLDIwIEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0dXBsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKyNpZm5kZWYgX0xJQkNQUF9FWFBFUklNRU5UQUxfVFVQTEUKKyNkZWZpbmUgX0xJQkNQUF9FWFBFUklNRU5UQUxfVFVQTEUKIAotI2Vycm9yICI8ZXhwZXJpbWVudGFsL3R1cGxlPiBoYXMgYmVlbiByZW1vdmVkLiBVc2UgPHR1cGxlPiBpbnN0ZWFkLiIKKyNpbmNsdWRlIDxfX2NvbmZpZz4KKworI2lmZGVmIF9MSUJDUFBfV0FSTklORworX0xJQkNQUF9XQVJOSU5HKCI8ZXhwZXJpbWVudGFsL3R1cGxlPiBoYXMgYmVlbiByZW1vdmVkLiBVc2UgPHR1cGxlPiBpbnN0ZWFkLiIpCisjZWxzZQorIyB3YXJuaW5nICI8ZXhwZXJpbWVudGFsL3R1cGxlPiBoYXMgYmVlbiByZW1vdmVkLiBVc2UgPHR1cGxlPiBpbnN0ZWFkLiIKKyNlbmRpZgorCisjZW5kaWYgLy8gX0xJQkNQUF9FWFBFUklNRU5UQUxfVFVQTEUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvdHlwZV90cmFpdHMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3R5cGVfdHJhaXRzCmluZGV4IGFmZTQ5MTUuLjMxMjdjMGUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvdHlwZV90cmFpdHMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC90eXBlX3RyYWl0cwpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0eXBlX3RyYWl0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC91bm9yZGVyZWRfbWFwIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC91bm9yZGVyZWRfbWFwCmluZGV4IDFmOTk4YzIuLmVjYTljZWEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvdW5vcmRlcmVkX21hcAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3Vub3JkZXJlZF9tYXAKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB1bm9yZGVyZWRfbWFwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvdW5vcmRlcmVkX3NldCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvdW5vcmRlcmVkX3NldAppbmRleCBkMDBhODM3Li4zMjM4NjhmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3Vub3JkZXJlZF9zZXQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC91bm9yZGVyZWRfc2V0CkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdW5vcmRlcmVkX3NldCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3V0aWxpdHkgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3V0aWxpdHkKaW5kZXggOGVmZmE3MS4uMGJjYTBmNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4cGVyaW1lbnRhbC91dGlsaXR5CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvdXRpbGl0eQpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB1dGlsaXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXhwZXJpbWVudGFsL3ZlY3RvciBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvdmVjdG9yCmluZGV4IGJkMTA0OTIuLjliODEwMTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvdmVjdG9yCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHBlcmltZW50YWwvdmVjdG9yCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB2ZWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4dC9fX2hhc2ggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXh0L19faGFzaAppbmRleCAzMThjYjFmLi45OGE5NTQ0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXh0L19faGFzaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXh0L19faGFzaApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGhhc2hfc2V0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHQvaGFzaF9tYXAgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXh0L2hhc2hfbWFwCmluZGV4IDk5OGU4ZjYuLmQwNmE5ZTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHQvaGFzaF9tYXAKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4dC9oYXNoX21hcApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBoYXNoX21hcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4dC9oYXNoX3NldCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9leHQvaGFzaF9zZXQKaW5kZXggMzhmODFlZC4uMjFlNjY4NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2V4dC9oYXNoX3NldAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZXh0L2hhc2hfc2V0CkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gaGFzaF9zZXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2ZlbnYuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9mZW52LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NlZGU0YgotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9mZW52LmgKQEAgLTAsMCArMSwxMTUgQEAKKy8vIC0qLSBDKysgLSotCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbWF0aC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIF9MSUJDUFBfRkVOVl9ICisjZGVmaW5lIF9MSUJDUFBfRkVOVl9ICisKKworLyoKKyAgICBmZW52Lmggc3lub3BzaXMKKworVGhpcyBlbnRpcmUgaGVhZGVyIGlzIEM5OSAvIEMrKzBYCisKK01hY3JvczoKKworICAgIEZFX0RJVkJZWkVSTworICAgIEZFX0lORVhBQ1QKKyAgICBGRV9JTlZBTElECisgICAgRkVfT1ZFUkZMT1cKKyAgICBGRV9VTkRFUkZMT1cKKyAgICBGRV9BTExfRVhDRVBUCisgICAgRkVfRE9XTldBUkQKKyAgICBGRV9UT05FQVJFU1QKKyAgICBGRV9UT1dBUkRaRVJPCisgICAgRkVfVVBXQVJECisgICAgRkVfREZMX0VOVgorCitUeXBlczoKKworICAgIGZlbnZfdAorICAgIGZleGNlcHRfdAorCitpbnQgZmVjbGVhcmV4Y2VwdChpbnQgZXhjZXB0cyk7CitpbnQgZmVnZXRleGNlcHRmbGFnKGZleGNlcHRfdCogZmxhZ3AsIGludCBleGNlcHRzKTsKK2ludCBmZXJhaXNlZXhjZXB0KGludCBleGNlcHRzKTsKK2ludCBmZXNldGV4Y2VwdGZsYWcoY29uc3QgZmV4Y2VwdF90KiBmbGFncCwgaW50IGV4Y2VwdHMpOworaW50IGZldGVzdGV4Y2VwdChpbnQgZXhjZXB0cyk7CitpbnQgZmVnZXRyb3VuZCgpOworaW50IGZlc2V0cm91bmQoaW50IHJvdW5kKTsKK2ludCBmZWdldGVudihmZW52X3QqIGVudnApOworaW50IGZlaG9sZGV4Y2VwdChmZW52X3QqIGVudnApOworaW50IGZlc2V0ZW52KGNvbnN0IGZlbnZfdCogZW52cCk7CitpbnQgZmV1cGRhdGVlbnYoY29uc3QgZmVudl90KiBlbnZwKTsKKworCisqLworCisjaW5jbHVkZSA8X19jb25maWc+CisjaW5jbHVkZV9uZXh0IDxmZW52Lmg+CisKKyNpZiAhZGVmaW5lZChfTElCQ1BQX0hBU19OT19QUkFHTUFfU1lTVEVNX0hFQURFUikKKyNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKKworZXh0ZXJuICJDKysiIHsKKworI2lmZGVmIGZlY2xlYXJleGNlcHQKKyN1bmRlZiBmZWNsZWFyZXhjZXB0CisjZW5kaWYKKworI2lmZGVmIGZlZ2V0ZXhjZXB0ZmxhZworI3VuZGVmIGZlZ2V0ZXhjZXB0ZmxhZworI2VuZGlmCisKKworI2lmZGVmIGZlcmFpc2VleGNlcHQKKyN1bmRlZiBmZXJhaXNlZXhjZXB0CisjZW5kaWYKKworI2lmZGVmIGZlc2V0ZXhjZXB0ZmxhZworI3VuZGVmIGZlc2V0ZXhjZXB0ZmxhZworI2VuZGlmCisKKworI2lmZGVmIGZldGVzdGV4Y2VwdAorI3VuZGVmIGZldGVzdGV4Y2VwdAorI2VuZGlmCisKKyNpZmRlZiBmZWdldHJvdW5kCisjdW5kZWYgZmVnZXRyb3VuZAorI2VuZGlmCisKKyNpZmRlZiBmZXNldHJvdW5kCisjdW5kZWYgZmVzZXRyb3VuZAorI2VuZGlmCisKKyNpZmRlZiBmZWdldGVudgorI3VuZGVmIGZlZ2V0ZW52CisjZW5kaWYKKworI2lmZGVmIGZlaG9sZGV4Y2VwdAorI3VuZGVmIGZlaG9sZGV4Y2VwdAorI2VuZGlmCisKKworI2lmZGVmIGZlc2V0ZW52CisjdW5kZWYgZmVzZXRlbnYKKyNlbmRpZgorCisjaWZkZWYgZmV1cGRhdGVlbnYKKyN1bmRlZiBmZXVwZGF0ZWVudgorI2VuZGlmCisKK30gLy8gZXh0ZXJuICJDKysiCisKKyNlbmRpZiAvLyBkZWZpbmVkKF9fY3BsdXNwbHVzKQorCisjZW5kaWYgLy8gX0xJQkNQUF9GRU5WX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9maWxlc3lzdGVtIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2ZpbGVzeXN0ZW0KaW5kZXggMzM5YmIyNS4uN2ExNTFkOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2ZpbGVzeXN0ZW0KKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2ZpbGVzeXN0ZW0KQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGZpbGVzeXN0ZW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAjaWZuZGVmIF9MSUJDUFBfRklMRVNZU1RFTQpAQCAtMjU5LDM2ICsyNTgsNiBAQAogCiBfTElCQ1BQX0JFR0lOX05BTUVTUEFDRV9GSUxFU1lTVEVNCiAKLXN0cnVjdCBfRmlsZXN5c3RlbUNsb2NrIHsKLSNpZiAhZGVmaW5lZChfTElCQ1BQX0hBU19OT19JTlQxMjgpCi0gIHR5cGVkZWYgX19pbnQxMjhfdCByZXA7Ci0gIHR5cGVkZWYgbmFubyBwZXJpb2Q7Ci0jZWxzZQotICB0eXBlZGVmIGxvbmcgbG9uZyByZXA7Ci0gIHR5cGVkZWYgbmFubyBwZXJpb2Q7Ci0jZW5kaWYKLQotICB0eXBlZGVmIGNocm9ubzo6ZHVyYXRpb248cmVwLCBwZXJpb2Q+IGR1cmF0aW9uOwotICB0eXBlZGVmIGNocm9ubzo6dGltZV9wb2ludDxfRmlsZXN5c3RlbUNsb2NrPiB0aW1lX3BvaW50OwotCi0gIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUl9BRlRFUl9DWFgxMSBjb25zdCBib29sIGlzX3N0ZWFkeSA9IGZhbHNlOwotCi0gIF9MSUJDUFBfRlVOQ19WSVMgc3RhdGljIHRpbWVfcG9pbnQgbm93KCkgbm9leGNlcHQ7Ci0KLSAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICBzdGF0aWMgdGltZV90IHRvX3RpbWVfdChjb25zdCB0aW1lX3BvaW50JiBfX3QpIG5vZXhjZXB0IHsKLSAgICB0eXBlZGVmIGNocm9ubzo6ZHVyYXRpb248cmVwPiBfX3NlY3M7Ci0gICAgcmV0dXJuIHRpbWVfdCgKLSAgICAgICAgY2hyb25vOjpkdXJhdGlvbl9jYXN0PF9fc2Vjcz4oX190LnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKSk7Ci0gIH0KLQotICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gIHN0YXRpYyB0aW1lX3BvaW50IGZyb21fdGltZV90KHRpbWVfdCBfX3QpIG5vZXhjZXB0IHsKLSAgICB0eXBlZGVmIGNocm9ubzo6ZHVyYXRpb248cmVwPiBfX3NlY3M7Ci0gICAgcmV0dXJuIHRpbWVfcG9pbnQoX19zZWNzKF9fdCkpOwotICB9Ci19OwotCiB0eXBlZGVmIGNocm9ubzo6dGltZV9wb2ludDxfRmlsZXN5c3RlbUNsb2NrPiBmaWxlX3RpbWVfdHlwZTsKIAogc3RydWN0IF9MSUJDUFBfVFlQRV9WSVMgc3BhY2VfaW5mbyB7CkBAIC0xMTgxLDYgKzExNTAsMzEgQEAKICAgICByZXR1cm4gX19pczsKICAgfQogCisgIGZyaWVuZCBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXRoJiBfX2xocywgY29uc3QgcGF0aCYgX19yaHMpIG5vZXhjZXB0IHsKKyAgICByZXR1cm4gX19saHMuY29tcGFyZShfX3JocykgPT0gMDsKKyAgfQorICBmcmllbmQgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBib29sIG9wZXJhdG9yIT0oY29uc3QgcGF0aCYgX19saHMsIGNvbnN0IHBhdGgmIF9fcmhzKSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIF9fbGhzLmNvbXBhcmUoX19yaHMpICE9IDA7CisgIH0KKyAgZnJpZW5kIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgYm9vbCBvcGVyYXRvcjwoY29uc3QgcGF0aCYgX19saHMsIGNvbnN0IHBhdGgmIF9fcmhzKSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIF9fbGhzLmNvbXBhcmUoX19yaHMpIDwgMDsKKyAgfQorICBmcmllbmQgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBib29sIG9wZXJhdG9yPD0oY29uc3QgcGF0aCYgX19saHMsIGNvbnN0IHBhdGgmIF9fcmhzKSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIF9fbGhzLmNvbXBhcmUoX19yaHMpIDw9IDA7CisgIH0KKyAgZnJpZW5kIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgYm9vbCBvcGVyYXRvcj4oY29uc3QgcGF0aCYgX19saHMsIGNvbnN0IHBhdGgmIF9fcmhzKSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIF9fbGhzLmNvbXBhcmUoX19yaHMpID4gMDsKKyAgfQorICBmcmllbmQgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBib29sIG9wZXJhdG9yPj0oY29uc3QgcGF0aCYgX19saHMsIGNvbnN0IHBhdGgmIF9fcmhzKSBub2V4Y2VwdCB7CisgICAgcmV0dXJuIF9fbGhzLmNvbXBhcmUoX19yaHMpID49IDA7CisgIH0KKworICBmcmllbmQgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBwYXRoIG9wZXJhdG9yLyhjb25zdCBwYXRoJiBfX2xocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aCYgX19yaHMpIHsKKyAgICBwYXRoIF9fcmVzdWx0KF9fbGhzKTsKKyAgICBfX3Jlc3VsdCAvPSBfX3JoczsKKyAgICByZXR1cm4gX19yZXN1bHQ7CisgIH0KIHByaXZhdGU6CiAgIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHBhdGgmCiAgIF9fYXNzaWduX3ZpZXcoX19zdHJpbmdfdmlldyBjb25zdCYgX19zKSBub2V4Y2VwdCB7CkBAIC0xMTk3LDQzICsxMTkxLDYgQEAKIF9MSUJDUFBfRlVOQ19WSVMKIHNpemVfdCBoYXNoX3ZhbHVlKGNvbnN0IHBhdGgmIF9fcCkgbm9leGNlcHQ7CiAKLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwYXRoJiBfX2xocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoJiBfX3Jocykgbm9leGNlcHQgewotICByZXR1cm4gX19saHMuY29tcGFyZShfX3JocykgPT0gMDsKLX0KLQotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHBhdGgmIF9fbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGgmIF9fcmhzKSBub2V4Y2VwdCB7Ci0gIHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSAhPSAwOwotfQotCi1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBib29sIG9wZXJhdG9yPChjb25zdCBwYXRoJiBfX2xocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGgmIF9fcmhzKSBub2V4Y2VwdCB7Ci0gIHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA8IDA7Ci19Ci0KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGJvb2wgb3BlcmF0b3I8PShjb25zdCBwYXRoJiBfX2xocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoJiBfX3Jocykgbm9leGNlcHQgewotICByZXR1cm4gX19saHMuY29tcGFyZShfX3JocykgPD0gMDsKLX0KLQotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgYm9vbCBvcGVyYXRvcj4oY29uc3QgcGF0aCYgX19saHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoJiBfX3Jocykgbm9leGNlcHQgewotICByZXR1cm4gX19saHMuY29tcGFyZShfX3JocykgPiAwOwotfQotCi1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBib29sIG9wZXJhdG9yPj0oY29uc3QgcGF0aCYgX19saHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aCYgX19yaHMpIG5vZXhjZXB0IHsKLSAgcmV0dXJuIF9fbGhzLmNvbXBhcmUoX19yaHMpID49IDA7Ci19Ci0KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHBhdGggb3BlcmF0b3IvKGNvbnN0IHBhdGgmIF9fbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0aCYgX19yaHMpIHsKLSAgcGF0aCBfX3Jlc3VsdChfX2xocyk7Ci0gIF9fcmVzdWx0IC89IF9fcmhzOwotICByZXR1cm4gX19yZXN1bHQ7Ci19Ci0KIHRlbXBsYXRlIDxjbGFzcyBfU291cmNlPgogX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIHR5cGVuYW1lIGVuYWJsZV9pZjxfX2lzX3BhdGhhYmxlPF9Tb3VyY2U+Ojp2YWx1ZSwgcGF0aD46OnR5cGUKQEAgLTEzOTAsNyArMTM0Nyw2IEBACiAgICAgcmV0dXJuIF9fc3RvcmFnZV8tPl9fd2hhdF8uY19zdHIoKTsKICAgfQogCi0gIF9MSUJDUFBfRlVOQ19WSVMKICAgdm9pZCBfX2NyZWF0ZV93aGF0KGludCBfX251bV9wYXRocyk7CiAKIHByaXZhdGU6CkBAIC0xNDA4LDEzICsxMzY0LDExIEBACiB0ZW1wbGF0ZSA8Y2xhc3MuLi4gX0FyZ3M+CiBfTElCQ1BQX05PUkVUVVJOIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAjaWZuZGVmIF9MSUJDUFBfTk9fRVhDRVBUSU9OUwotICAgIHZvaWQKLSAgICBfX3Rocm93X2ZpbGVzeXN0ZW1fZXJyb3IoX0FyZ3MmJi4uLiBfX2FyZ3MpIHsKK3ZvaWQgX190aHJvd19maWxlc3lzdGVtX2Vycm9yKF9BcmdzJiYuLi4gX19hcmdzKSB7CiAgIHRocm93IGZpbGVzeXN0ZW1fZXJyb3Ioc3RkOjpmb3J3YXJkPF9BcmdzPihfX2FyZ3MpLi4uKTsKIH0KICNlbHNlCi0gICAgdm9pZAotICAgIF9fdGhyb3dfZmlsZXN5c3RlbV9lcnJvcihfQXJncyYmLi4uKSB7Cit2b2lkIF9fdGhyb3dfZmlsZXN5c3RlbV9lcnJvcihfQXJncyYmLi4uKSB7CiAgIF9WU1REOjphYm9ydCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZmxvYXQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9mbG9hdC5oCmluZGV4IDc1OWFjOGUuLjVjMWUxZGIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9mbG9hdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9mbG9hdC5oCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBmbG9hdC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZm9yd2FyZF9saXN0IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2ZvcndhcmRfbGlzdAppbmRleCBmOWE3MWYwLi5iYmVhNzFlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZm9yd2FyZF9saXN0CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9mb3J3YXJkX2xpc3QKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZm9yd2FyZF9saXN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTE2Nyw2ICsxNjYsMTEgQEAKICAgICB2b2lkIHN3YXAoZm9yd2FyZF9saXN0PFQsIEFsbG9jYXRvcj4mIHgsIGZvcndhcmRfbGlzdDxULCBBbGxvY2F0b3I+JiB5KQogICAgICAgICAgbm9leGNlcHQobm9leGNlcHQoeC5zd2FwKHkpKSk7CiAKK3RlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIFU+CisgICAgdm9pZCBlcmFzZShmb3J3YXJkX2xpc3Q8VCwgQWxsb2NhdG9yPiYgYywgY29uc3QgVSYgdmFsdWUpOyAgICAgICAvLyBDKysyMAordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgUHJlZGljYXRlPgorICAgIHZvaWQgZXJhc2VfaWYoZm9yd2FyZF9saXN0PFQsIEFsbG9jYXRvcj4mIGMsIFByZWRpY2F0ZSBwcmVkKTsgICAgLy8gQysrMjAKKwogfSAgLy8gc3RkCiAKICovCkBAIC0xNzQ0LDYgKzE3NDgsMTggQEAKICAgICBfX3guc3dhcChfX3kpOwogfQogCisjaWYgX0xJQkNQUF9TVERfVkVSID4gMTcKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvY2F0b3IsIGNsYXNzIF9QcmVkaWNhdGU+CitpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQordm9pZCBlcmFzZV9pZihmb3J3YXJkX2xpc3Q8X1RwLCBfQWxsb2NhdG9yPiYgX19jLCBfUHJlZGljYXRlIF9fcHJlZCkKK3sgX19jLnJlbW92ZV9pZihfX3ByZWQpOyB9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvY2F0b3IsIGNsYXNzIF9VcD4KK2lubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCit2b2lkIGVyYXNlKGZvcndhcmRfbGlzdDxfVHAsIF9BbGxvY2F0b3I+JiBfX2MsIGNvbnN0IF9VcCYgX192KQoreyBfVlNURDo6ZXJhc2VfaWYoX19jLCBbJl0oYXV0byYgX19lbGVtKSB7IHJldHVybiBfX2VsZW0gPT0gX192OyB9KTsgfQorI2VuZGlmCisKIF9MSUJDUFBfRU5EX05BTUVTUEFDRV9TVEQKIAogX0xJQkNQUF9QT1BfTUFDUk9TCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZnN0cmVhbSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9mc3RyZWFtCmluZGV4IDMzMmI0NzQuLjE5MDJjZTkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9mc3RyZWFtCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9mc3RyZWFtCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZnN0cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC03MDIsNiArNzAxLDcgQEAKICAgICAgICAgICAgIF9fZmlsZV8gPSAwOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBfX3J0ID0gMDsKKyAgICAgICAgc2V0YnVmKDAsIDApOwogICAgIH0KICAgICByZXR1cm4gX19ydDsKIH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9mdW5jdGlvbmFsIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2Z1bmN0aW9uYWwKaW5kZXggNjFjODdiMC4uZGVmOGE3NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2Z1bmN0aW9uYWwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2Z1bmN0aW9uYWwKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGZ1bmN0aW9uYWwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTY4LDYgKzY3LDExIEBACiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gdm9pZCBjcmVmKGNvbnN0IFQmJiB0KSA9IGRlbGV0ZTsKIHRlbXBsYXRlIDxjbGFzcyBUPiByZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBUPiBjcmVmKHJlZmVyZW5jZV93cmFwcGVyPFQ+IHQpIG5vZXhjZXB0OwogCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHVud3JhcF9yZWZlcmVuY2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2luY2UgQysrMjAKK3RlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgdW53cmFwX3JlZl9kZWNheSA6IHVud3JhcF9yZWZlcmVuY2U8ZGVjYXlfdDxUPj4geyB9OyAgICAvLyBzaW5jZSBDKysyMAordGVtcGxhdGUgPGNsYXNzIFQ+IHVzaW5nIHVud3JhcF9yZWZlcmVuY2VfdCA9IHR5cGVuYW1lIHVud3JhcF9yZWZlcmVuY2U8VD46OnR5cGU7IC8vIHNpbmNlIEMrKzIwCit0ZW1wbGF0ZSA8Y2xhc3MgVD4gdXNpbmcgdW53cmFwX3JlZl9kZWNheV90ID0gdHlwZW5hbWUgdW53cmFwX3JlZl9kZWNheTxUPjo6dHlwZTsgLy8gc2luY2UgQysrMjAKKwogdGVtcGxhdGUgPGNsYXNzIFQ+IC8vIDxjbGFzcyBUPXZvaWQ+IGluIEMrKzE0CiBzdHJ1Y3QgcGx1cyA6IGJpbmFyeV9mdW5jdGlvbjxULCBULCBUPgogewpAQCAtMTQ2OCw2ICsxNDcyLDgyIEBACiAKIG5hbWVzcGFjZSBfX2Z1bmN0aW9uIHsKIAorLy8gX19hbGxvY19mdW5jIGhvbGRzIGEgZnVuY3RvciBhbmQgYW4gYWxsb2NhdG9yLgorCit0ZW1wbGF0ZSA8Y2xhc3MgX0ZwLCBjbGFzcyBfQXAsIGNsYXNzIF9GQj4gY2xhc3MgX19hbGxvY19mdW5jOworCit0ZW1wbGF0ZSA8Y2xhc3MgX0ZwLCBjbGFzcyBfQXAsIGNsYXNzIF9ScCwgY2xhc3MuLi4gX0FyZ1R5cGVzPgorY2xhc3MgX19hbGxvY19mdW5jPF9GcCwgX0FwLCBfUnAoX0FyZ1R5cGVzLi4uKT4KK3sKKyAgICBfX2NvbXByZXNzZWRfcGFpcjxfRnAsIF9BcD4gX19mXzsKKworICBwdWJsaWM6CisgICAgdHlwZWRlZiBfRnAgX1RhcmdldDsKKyAgICB0eXBlZGVmIF9BcCBfQWxsb2M7CisKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3QgX1RhcmdldCYgX190YXJnZXQoKSBjb25zdCB7IHJldHVybiBfX2ZfLmZpcnN0KCk7IH0KKworICAgIC8vIFdJTjMyIEFQSXMgbWF5IGRlZmluZSBfX2FsbG9jYXRvciwgc28gdXNlIF9fZ2V0X2FsbG9jYXRvciBpbnN0ZWFkLgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBjb25zdCBfQWxsb2MmIF9fZ2V0X2FsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIF9fZl8uc2Vjb25kKCk7IH0KKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBleHBsaWNpdCBfX2FsbG9jX2Z1bmMoX1RhcmdldCYmIF9fZikKKyAgICAgICAgOiBfX2ZfKHBpZWNld2lzZV9jb25zdHJ1Y3QsIF9WU1REOjpmb3J3YXJkX2FzX3R1cGxlKF9WU1REOjptb3ZlKF9fZikpLAorICAgICAgICAgICAgICAgX1ZTVEQ6OmZvcndhcmRfYXNfdHVwbGUoKSkKKyAgICB7CisgICAgfQorCisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGV4cGxpY2l0IF9fYWxsb2NfZnVuYyhjb25zdCBfVGFyZ2V0JiBfX2YsIGNvbnN0IF9BbGxvYyYgX19hKQorICAgICAgICA6IF9fZl8ocGllY2V3aXNlX2NvbnN0cnVjdCwgX1ZTVEQ6OmZvcndhcmRfYXNfdHVwbGUoX19mKSwKKyAgICAgICAgICAgICAgIF9WU1REOjpmb3J3YXJkX2FzX3R1cGxlKF9fYSkpCisgICAgeworICAgIH0KKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBleHBsaWNpdCBfX2FsbG9jX2Z1bmMoY29uc3QgX1RhcmdldCYgX19mLCBfQWxsb2MmJiBfX2EpCisgICAgICAgIDogX19mXyhwaWVjZXdpc2VfY29uc3RydWN0LCBfVlNURDo6Zm9yd2FyZF9hc190dXBsZShfX2YpLAorICAgICAgICAgICAgICAgX1ZTVEQ6OmZvcndhcmRfYXNfdHVwbGUoX1ZTVEQ6Om1vdmUoX19hKSkpCisgICAgeworICAgIH0KKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBleHBsaWNpdCBfX2FsbG9jX2Z1bmMoX1RhcmdldCYmIF9fZiwgX0FsbG9jJiYgX19hKQorICAgICAgICA6IF9fZl8ocGllY2V3aXNlX2NvbnN0cnVjdCwgX1ZTVEQ6OmZvcndhcmRfYXNfdHVwbGUoX1ZTVEQ6Om1vdmUoX19mKSksCisgICAgICAgICAgICAgICBfVlNURDo6Zm9yd2FyZF9hc190dXBsZShfVlNURDo6bW92ZShfX2EpKSkKKyAgICB7CisgICAgfQorCisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIF9ScCBvcGVyYXRvcigpKF9BcmdUeXBlcyYmLi4uIF9fYXJnKQorICAgIHsKKyAgICAgICAgdHlwZWRlZiBfX2ludm9rZV92b2lkX3JldHVybl93cmFwcGVyPF9ScD4gX0ludm9rZXI7CisgICAgICAgIHJldHVybiBfSW52b2tlcjo6X19jYWxsKF9fZl8uZmlyc3QoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ZTVEQ6OmZvcndhcmQ8X0FyZ1R5cGVzPihfX2FyZykuLi4pOworICAgIH0KKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBfX2FsbG9jX2Z1bmMqIF9fY2xvbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgdHlwZWRlZiBhbGxvY2F0b3JfdHJhaXRzPF9BbGxvYz4gX19hbGxvY190cmFpdHM7CisgICAgICAgIHR5cGVkZWYKKyAgICAgICAgICAgIHR5cGVuYW1lIF9fcmViaW5kX2FsbG9jX2hlbHBlcjxfX2FsbG9jX3RyYWl0cywgX19hbGxvY19mdW5jPjo6dHlwZQorICAgICAgICAgICAgICAgIF9BQTsKKyAgICAgICAgX0FBIF9fYShfX2ZfLnNlY29uZCgpKTsKKyAgICAgICAgdHlwZWRlZiBfX2FsbG9jYXRvcl9kZXN0cnVjdG9yPF9BQT4gX0RwOworICAgICAgICB1bmlxdWVfcHRyPF9fYWxsb2NfZnVuYywgX0RwPiBfX2hvbGQoX19hLmFsbG9jYXRlKDEpLCBfRHAoX19hLCAxKSk7CisgICAgICAgIDo6bmV3ICgodm9pZCopX19ob2xkLmdldCgpKSBfX2FsbG9jX2Z1bmMoX19mXy5maXJzdCgpLCBfQWxsb2MoX19hKSk7CisgICAgICAgIHJldHVybiBfX2hvbGQucmVsZWFzZSgpOworICAgIH0KKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB2b2lkIGRlc3Ryb3koKSBfTk9FWENFUFQgeyBfX2ZfLn5fX2NvbXByZXNzZWRfcGFpcjxfVGFyZ2V0LCBfQWxsb2M+KCk7IH0KK307CisKKy8vIF9fYmFzZSBwcm92aWRlcyBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgZm9yIGNvcHlhYmxlIGZ1bmN0b3JzLgorCiB0ZW1wbGF0ZTxjbGFzcyBfRnA+IGNsYXNzIF9fYmFzZTsKIAogdGVtcGxhdGU8Y2xhc3MgX1JwLCBjbGFzcyAuLi5fQXJnVHlwZXM+CkBAIC0xNDg5LDM3ICsxNTY5LDM3IEBACiAjZW5kaWYgIC8vIF9MSUJDUFBfTk9fUlRUSQogfTsKIAorLy8gX19mdW5jIGltcGxlbWVudHMgX19iYXNlIGZvciBhIGdpdmVuIGZ1bmN0b3IgdHlwZS4KKwogdGVtcGxhdGU8Y2xhc3MgX0ZELCBjbGFzcyBfQWxsb2MsIGNsYXNzIF9GQj4gY2xhc3MgX19mdW5jOwogCiB0ZW1wbGF0ZTxjbGFzcyBfRnAsIGNsYXNzIF9BbGxvYywgY2xhc3MgX1JwLCBjbGFzcyAuLi5fQXJnVHlwZXM+CiBjbGFzcyBfX2Z1bmM8X0ZwLCBfQWxsb2MsIF9ScChfQXJnVHlwZXMuLi4pPgogICAgIDogcHVibGljICBfX2Jhc2U8X1JwKF9BcmdUeXBlcy4uLik+CiB7Ci0gICAgX19jb21wcmVzc2VkX3BhaXI8X0ZwLCBfQWxsb2M+IF9fZl87CisgICAgX19hbGxvY19mdW5jPF9GcCwgX0FsbG9jLCBfUnAoX0FyZ1R5cGVzLi4uKT4gX19mXzsKIHB1YmxpYzoKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgZXhwbGljaXQgX19mdW5jKF9GcCYmIF9fZikKLSAgICAgICAgOiBfX2ZfKHBpZWNld2lzZV9jb25zdHJ1Y3QsIF9WU1REOjpmb3J3YXJkX2FzX3R1cGxlKF9WU1REOjptb3ZlKF9fZikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ZTVEQ6OmZvcndhcmRfYXNfdHVwbGUoKSkge30KKyAgICAgICAgOiBfX2ZfKF9WU1REOjptb3ZlKF9fZikpIHt9CisKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgZXhwbGljaXQgX19mdW5jKGNvbnN0IF9GcCYgX19mLCBjb25zdCBfQWxsb2MmIF9fYSkKLSAgICAgICAgOiBfX2ZfKHBpZWNld2lzZV9jb25zdHJ1Y3QsIF9WU1REOjpmb3J3YXJkX2FzX3R1cGxlKF9fZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVlNURDo6Zm9yd2FyZF9hc190dXBsZShfX2EpKSB7fQorICAgICAgICA6IF9fZl8oX19mLCBfX2EpIHt9CiAKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgZXhwbGljaXQgX19mdW5jKGNvbnN0IF9GcCYgX19mLCBfQWxsb2MmJiBfX2EpCi0gICAgICAgIDogX19mXyhwaWVjZXdpc2VfY29uc3RydWN0LCBfVlNURDo6Zm9yd2FyZF9hc190dXBsZShfX2YpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ZTVEQ6OmZvcndhcmRfYXNfdHVwbGUoX1ZTVEQ6Om1vdmUoX19hKSkpIHt9CisgICAgICAgIDogX19mXyhfX2YsIF9WU1REOjptb3ZlKF9fYSkpIHt9CiAKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgZXhwbGljaXQgX19mdW5jKF9GcCYmIF9fZiwgX0FsbG9jJiYgX19hKQotICAgICAgICA6IF9fZl8ocGllY2V3aXNlX2NvbnN0cnVjdCwgX1ZTVEQ6OmZvcndhcmRfYXNfdHVwbGUoX1ZTVEQ6Om1vdmUoX19mKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVlNURDo6Zm9yd2FyZF9hc190dXBsZShfVlNURDo6bW92ZShfX2EpKSkge30KKyAgICAgICAgOiBfX2ZfKF9WU1REOjptb3ZlKF9fZiksIF9WU1REOjptb3ZlKF9fYSkpIHt9CisKICAgICB2aXJ0dWFsIF9fYmFzZTxfUnAoX0FyZ1R5cGVzLi4uKT4qIF9fY2xvbmUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgX19jbG9uZShfX2Jhc2U8X1JwKF9BcmdUeXBlcy4uLik+KikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBfTk9FWENFUFQ7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lfZGVhbGxvY2F0ZSgpIF9OT0VYQ0VQVDsKLSAgICB2aXJ0dWFsIF9ScCBvcGVyYXRvcigpKF9BcmdUeXBlcyYmIC4uLiBfX2FyZyk7CisgICAgdmlydHVhbCBfUnAgb3BlcmF0b3IoKShfQXJnVHlwZXMmJi4uLiBfX2FyZyk7CiAjaWZuZGVmIF9MSUJDUFBfTk9fUlRUSQogICAgIHZpcnR1YWwgY29uc3Qgdm9pZCogdGFyZ2V0KGNvbnN0IHR5cGVfaW5mbyYpIGNvbnN0IF9OT0VYQ0VQVDsKICAgICB2aXJ0dWFsIGNvbnN0IHN0ZDo6dHlwZV9pbmZvJiB0YXJnZXRfdHlwZSgpIGNvbnN0IF9OT0VYQ0VQVDsKQEAgLTE1MzIsMTAgKzE2MTIsMTAgQEAKIHsKICAgICB0eXBlZGVmIGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPiBfX2FsbG9jX3RyYWl0czsKICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fcmViaW5kX2FsbG9jX2hlbHBlcjxfX2FsbG9jX3RyYWl0cywgX19mdW5jPjo6dHlwZSBfQXA7Ci0gICAgX0FwIF9fYShfX2ZfLnNlY29uZCgpKTsKKyAgICBfQXAgX19hKF9fZl8uX19nZXRfYWxsb2NhdG9yKCkpOwogICAgIHR5cGVkZWYgX19hbGxvY2F0b3JfZGVzdHJ1Y3RvcjxfQXA+IF9EcDsKICAgICB1bmlxdWVfcHRyPF9fZnVuYywgX0RwPiBfX2hvbGQoX19hLmFsbG9jYXRlKDEpLCBfRHAoX19hLCAxKSk7Ci0gICAgOjpuZXcgKF9faG9sZC5nZXQoKSkgX19mdW5jKF9fZl8uZmlyc3QoKSwgX0FsbG9jKF9fYSkpOworICAgIDo6bmV3ICgodm9pZCopX19ob2xkLmdldCgpKSBfX2Z1bmMoX19mXy5fX3RhcmdldCgpLCBfQWxsb2MoX19hKSk7CiAgICAgcmV0dXJuIF9faG9sZC5yZWxlYXNlKCk7CiB9CiAKQEAgLTE1NDMsMTQgKzE2MjMsMTQgQEAKIHZvaWQKIF9fZnVuYzxfRnAsIF9BbGxvYywgX1JwKF9BcmdUeXBlcy4uLik+OjpfX2Nsb25lKF9fYmFzZTxfUnAoX0FyZ1R5cGVzLi4uKT4qIF9fcCkgY29uc3QKIHsKLSAgICA6Om5ldyAoX19wKSBfX2Z1bmMoX19mXy5maXJzdCgpLCBfX2ZfLnNlY29uZCgpKTsKKyAgICA6Om5ldyAoX19wKSBfX2Z1bmMoX19mXy5fX3RhcmdldCgpLCBfX2ZfLl9fZ2V0X2FsbG9jYXRvcigpKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgX0ZwLCBjbGFzcyBfQWxsb2MsIGNsYXNzIF9ScCwgY2xhc3MgLi4uX0FyZ1R5cGVzPgogdm9pZAogX19mdW5jPF9GcCwgX0FsbG9jLCBfUnAoX0FyZ1R5cGVzLi4uKT46OmRlc3Ryb3koKSBfTk9FWENFUFQKIHsKLSAgICBfX2ZfLn5fX2NvbXByZXNzZWRfcGFpcjxfRnAsIF9BbGxvYz4oKTsKKyAgICBfX2ZfLmRlc3Ryb3koKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgX0ZwLCBjbGFzcyBfQWxsb2MsIGNsYXNzIF9ScCwgY2xhc3MgLi4uX0FyZ1R5cGVzPgpAQCAtMTU1OSw4ICsxNjM5LDggQEAKIHsKICAgICB0eXBlZGVmIGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPiBfX2FsbG9jX3RyYWl0czsKICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fcmViaW5kX2FsbG9jX2hlbHBlcjxfX2FsbG9jX3RyYWl0cywgX19mdW5jPjo6dHlwZSBfQXA7Ci0gICAgX0FwIF9fYShfX2ZfLnNlY29uZCgpKTsKLSAgICBfX2ZfLn5fX2NvbXByZXNzZWRfcGFpcjxfRnAsIF9BbGxvYz4oKTsKKyAgICBfQXAgX19hKF9fZl8uX19nZXRfYWxsb2NhdG9yKCkpOworICAgIF9fZl8uZGVzdHJveSgpOwogICAgIF9fYS5kZWFsbG9jYXRlKHRoaXMsIDEpOwogfQogCkBAIC0xNTY4LDggKzE2NDgsNyBAQAogX1JwCiBfX2Z1bmM8X0ZwLCBfQWxsb2MsIF9ScChfQXJnVHlwZXMuLi4pPjo6b3BlcmF0b3IoKShfQXJnVHlwZXMmJiAuLi4gX19hcmcpCiB7Ci0gICAgdHlwZWRlZiBfX2ludm9rZV92b2lkX3JldHVybl93cmFwcGVyPF9ScD4gX0ludm9rZXI7Ci0gICAgcmV0dXJuIF9JbnZva2VyOjpfX2NhbGwoX19mXy5maXJzdCgpLCBfVlNURDo6Zm9yd2FyZDxfQXJnVHlwZXM+KF9fYXJnKS4uLik7CisgICAgcmV0dXJuIF9fZl8oX1ZTVEQ6OmZvcndhcmQ8X0FyZ1R5cGVzPihfX2FyZykuLi4pOwogfQogCiAjaWZuZGVmIF9MSUJDUFBfTk9fUlRUSQpAQCAtMTU3OSw3ICsxNjU4LDcgQEAKIF9fZnVuYzxfRnAsIF9BbGxvYywgX1JwKF9BcmdUeXBlcy4uLik+Ojp0YXJnZXQoY29uc3QgdHlwZV9pbmZvJiBfX3RpKSBjb25zdCBfTk9FWENFUFQKIHsKICAgICBpZiAoX190aSA9PSB0eXBlaWQoX0ZwKSkKLSAgICAgICAgcmV0dXJuICZfX2ZfLmZpcnN0KCk7CisgICAgICAgIHJldHVybiAmX19mXy5fX3RhcmdldCgpOwogICAgIHJldHVybiAoY29uc3Qgdm9pZCopMDsKIH0KIApAQCAtMTU5Miw2ICsxNjcxLDQ5MyBAQAogCiAjZW5kaWYgIC8vIF9MSUJDUFBfTk9fUlRUSQogCisvLyBfX3ZhbHVlX2Z1bmMgY3JlYXRlcyBhIHZhbHVlLXR5cGUgZnJvbSBhIF9fZnVuYy4KKwordGVtcGxhdGUgPGNsYXNzIF9GcD4gY2xhc3MgX192YWx1ZV9mdW5jOworCit0ZW1wbGF0ZSA8Y2xhc3MgX1JwLCBjbGFzcy4uLiBfQXJnVHlwZXM+IGNsYXNzIF9fdmFsdWVfZnVuYzxfUnAoX0FyZ1R5cGVzLi4uKT4KK3sKKyAgICB0eXBlbmFtZSBhbGlnbmVkX3N0b3JhZ2U8MyAqIHNpemVvZih2b2lkKik+Ojp0eXBlIF9fYnVmXzsKKworICAgIHR5cGVkZWYgX19iYXNlPF9ScChfQXJnVHlwZXMuLi4pPiBfX2Z1bmM7CisgICAgX19mdW5jKiBfX2ZfOworCisgICAgX0xJQkNQUF9OT19DRkkgc3RhdGljIF9fZnVuYyogX19hc19iYXNlKHZvaWQqIHApCisgICAgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxfX2Z1bmMqPihwKTsKKyAgICB9CisKKyAgcHVibGljOgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBfX3ZhbHVlX2Z1bmMoKSBfTk9FWENFUFQgOiBfX2ZfKDApIHt9CisKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0ZwLCBjbGFzcyBfQWxsb2M+CisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBfX3ZhbHVlX2Z1bmMoX0ZwJiYgX19mLCBjb25zdCBfQWxsb2MgX19hKQorICAgICAgICA6IF9fZl8oMCkKKyAgICB7CisgICAgICAgIHR5cGVkZWYgYWxsb2NhdG9yX3RyYWl0czxfQWxsb2M+IF9fYWxsb2NfdHJhaXRzOworICAgICAgICB0eXBlZGVmIF9fZnVuY3Rpb246Ol9fZnVuYzxfRnAsIF9BbGxvYywgX1JwKF9BcmdUeXBlcy4uLik+IF9GdW47CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19yZWJpbmRfYWxsb2NfaGVscGVyPF9fYWxsb2NfdHJhaXRzLCBfRnVuPjo6dHlwZQorICAgICAgICAgICAgX0Z1bkFsbG9jOworCisgICAgICAgIGlmIChfX2Z1bmN0aW9uOjpfX25vdF9udWxsKF9fZikpCisgICAgICAgIHsKKyAgICAgICAgICAgIF9GdW5BbGxvYyBfX2FmKF9fYSk7CisgICAgICAgICAgICBpZiAoc2l6ZW9mKF9GdW4pIDw9IHNpemVvZihfX2J1Zl8pICYmCisgICAgICAgICAgICAgICAgaXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8X0ZwPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICBpc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZTxfRnVuQWxsb2M+Ojp2YWx1ZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBfX2ZfID0KKyAgICAgICAgICAgICAgICAgICAgOjpuZXcgKCh2b2lkKikmX19idWZfKSBfRnVuKF9WU1REOjptb3ZlKF9fZiksIF9BbGxvYyhfX2FmKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdHlwZWRlZiBfX2FsbG9jYXRvcl9kZXN0cnVjdG9yPF9GdW5BbGxvYz4gX0RwOworICAgICAgICAgICAgICAgIHVuaXF1ZV9wdHI8X19mdW5jLCBfRHA+IF9faG9sZChfX2FmLmFsbG9jYXRlKDEpLCBfRHAoX19hZiwgMSkpOworICAgICAgICAgICAgICAgIDo6bmV3ICgodm9pZCopX19ob2xkLmdldCgpKSBfRnVuKF9WU1REOjptb3ZlKF9fZiksIF9BbGxvYyhfX2EpKTsKKyAgICAgICAgICAgICAgICBfX2ZfID0gX19ob2xkLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBfX3ZhbHVlX2Z1bmMoY29uc3QgX192YWx1ZV9mdW5jJiBfX2YpCisgICAgeworICAgICAgICBpZiAoX19mLl9fZl8gPT0gMCkKKyAgICAgICAgICAgIF9fZl8gPSAwOworICAgICAgICBlbHNlIGlmICgodm9pZCopX19mLl9fZl8gPT0gJl9fZi5fX2J1Zl8pCisgICAgICAgIHsKKyAgICAgICAgICAgIF9fZl8gPSBfX2FzX2Jhc2UoJl9fYnVmXyk7CisgICAgICAgICAgICBfX2YuX19mXy0+X19jbG9uZShfX2ZfKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBfX2ZfID0gX19mLl9fZl8tPl9fY2xvbmUoKTsKKyAgICB9CisKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgX192YWx1ZV9mdW5jKF9fdmFsdWVfZnVuYyYmIF9fZikgX05PRVhDRVBUCisgICAgeworICAgICAgICBpZiAoX19mLl9fZl8gPT0gMCkKKyAgICAgICAgICAgIF9fZl8gPSAwOworICAgICAgICBlbHNlIGlmICgodm9pZCopX19mLl9fZl8gPT0gJl9fZi5fX2J1Zl8pCisgICAgICAgIHsKKyAgICAgICAgICAgIF9fZl8gPSBfX2FzX2Jhc2UoJl9fYnVmXyk7CisgICAgICAgICAgICBfX2YuX19mXy0+X19jbG9uZShfX2ZfKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIF9fZl8gPSBfX2YuX19mXzsKKyAgICAgICAgICAgIF9fZi5fX2ZfID0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB+X192YWx1ZV9mdW5jKCkKKyAgICB7CisgICAgICAgIGlmICgodm9pZCopX19mXyA9PSAmX19idWZfKQorICAgICAgICAgICAgX19mXy0+ZGVzdHJveSgpOworICAgICAgICBlbHNlIGlmIChfX2ZfKQorICAgICAgICAgICAgX19mXy0+ZGVzdHJveV9kZWFsbG9jYXRlKCk7CisgICAgfQorCisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIF9fdmFsdWVfZnVuYyYgb3BlcmF0b3I9KF9fdmFsdWVfZnVuYyYmIF9fZikKKyAgICB7CisgICAgICAgICp0aGlzID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKF9fZi5fX2ZfID09IDApCisgICAgICAgICAgICBfX2ZfID0gMDsKKyAgICAgICAgZWxzZSBpZiAoKHZvaWQqKV9fZi5fX2ZfID09ICZfX2YuX19idWZfKQorICAgICAgICB7CisgICAgICAgICAgICBfX2ZfID0gX19hc19iYXNlKCZfX2J1Zl8pOworICAgICAgICAgICAgX19mLl9fZl8tPl9fY2xvbmUoX19mXyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBfX2ZfID0gX19mLl9fZl87CisgICAgICAgICAgICBfX2YuX19mXyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBfX3ZhbHVlX2Z1bmMmIG9wZXJhdG9yPShudWxscHRyX3QpCisgICAgeworICAgICAgICBfX2Z1bmMqIF9fZiA9IF9fZl87CisgICAgICAgIF9fZl8gPSAwOworICAgICAgICBpZiAoKHZvaWQqKV9fZiA9PSAmX19idWZfKQorICAgICAgICAgICAgX19mLT5kZXN0cm95KCk7CisgICAgICAgIGVsc2UgaWYgKF9fZikKKyAgICAgICAgICAgIF9fZi0+ZGVzdHJveV9kZWFsbG9jYXRlKCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgX1JwIG9wZXJhdG9yKCkoX0FyZ1R5cGVzJiYuLi4gX19hcmdzKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKF9fZl8gPT0gMCkKKyAgICAgICAgICAgIF9fdGhyb3dfYmFkX2Z1bmN0aW9uX2NhbGwoKTsKKyAgICAgICAgcmV0dXJuICgqX19mXykoX1ZTVEQ6OmZvcndhcmQ8X0FyZ1R5cGVzPihfX2FyZ3MpLi4uKTsKKyAgICB9CisKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBzd2FwKF9fdmFsdWVfZnVuYyYgX19mKSBfTk9FWENFUFQKKyAgICB7CisgICAgICAgIGlmICgmX19mID09IHRoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICgodm9pZCopX19mXyA9PSAmX19idWZfICYmICh2b2lkKilfX2YuX19mXyA9PSAmX19mLl9fYnVmXykKKyAgICAgICAgeworICAgICAgICAgICAgdHlwZW5hbWUgYWxpZ25lZF9zdG9yYWdlPHNpemVvZihfX2J1Zl8pPjo6dHlwZSBfX3RlbXBidWY7CisgICAgICAgICAgICBfX2Z1bmMqIF9fdCA9IF9fYXNfYmFzZSgmX190ZW1wYnVmKTsKKyAgICAgICAgICAgIF9fZl8tPl9fY2xvbmUoX190KTsKKyAgICAgICAgICAgIF9fZl8tPmRlc3Ryb3koKTsKKyAgICAgICAgICAgIF9fZl8gPSAwOworICAgICAgICAgICAgX19mLl9fZl8tPl9fY2xvbmUoX19hc19iYXNlKCZfX2J1Zl8pKTsKKyAgICAgICAgICAgIF9fZi5fX2ZfLT5kZXN0cm95KCk7CisgICAgICAgICAgICBfX2YuX19mXyA9IDA7CisgICAgICAgICAgICBfX2ZfID0gX19hc19iYXNlKCZfX2J1Zl8pOworICAgICAgICAgICAgX190LT5fX2Nsb25lKF9fYXNfYmFzZSgmX19mLl9fYnVmXykpOworICAgICAgICAgICAgX190LT5kZXN0cm95KCk7CisgICAgICAgICAgICBfX2YuX19mXyA9IF9fYXNfYmFzZSgmX19mLl9fYnVmXyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoKHZvaWQqKV9fZl8gPT0gJl9fYnVmXykKKyAgICAgICAgeworICAgICAgICAgICAgX19mXy0+X19jbG9uZShfX2FzX2Jhc2UoJl9fZi5fX2J1Zl8pKTsKKyAgICAgICAgICAgIF9fZl8tPmRlc3Ryb3koKTsKKyAgICAgICAgICAgIF9fZl8gPSBfX2YuX19mXzsKKyAgICAgICAgICAgIF9fZi5fX2ZfID0gX19hc19iYXNlKCZfX2YuX19idWZfKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgodm9pZCopX19mLl9fZl8gPT0gJl9fZi5fX2J1Zl8pCisgICAgICAgIHsKKyAgICAgICAgICAgIF9fZi5fX2ZfLT5fX2Nsb25lKF9fYXNfYmFzZSgmX19idWZfKSk7CisgICAgICAgICAgICBfX2YuX19mXy0+ZGVzdHJveSgpOworICAgICAgICAgICAgX19mLl9fZl8gPSBfX2ZfOworICAgICAgICAgICAgX19mXyA9IF9fYXNfYmFzZSgmX19idWZfKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBfVlNURDo6c3dhcChfX2ZfLCBfX2YuX19mXyk7CisgICAgfQorCisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIF9MSUJDUFBfRVhQTElDSVQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IF9OT0VYQ0VQVCB7IHJldHVybiBfX2ZfICE9IDA7IH0KKworI2lmbmRlZiBfTElCQ1BQX05PX1JUVEkKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3Qgc3RkOjp0eXBlX2luZm8mIHRhcmdldF90eXBlKCkgY29uc3QgX05PRVhDRVBUCisgICAgeworICAgICAgICBpZiAoX19mXyA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVpZCh2b2lkKTsKKyAgICAgICAgcmV0dXJuIF9fZl8tPnRhcmdldF90eXBlKCk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIF9UcD4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0IF9UcCogdGFyZ2V0KCkgY29uc3QgX05PRVhDRVBUCisgICAgeworICAgICAgICBpZiAoX19mXyA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAoY29uc3QgX1RwKilfX2ZfLT50YXJnZXQodHlwZWlkKF9UcCkpOworICAgIH0KKyNlbmRpZiAvLyBfTElCQ1BQX05PX1JUVEkKK307CisKKy8vIFN0b3JhZ2UgZm9yIGEgZnVuY3RvciBvYmplY3QsIHRvIGJlIHVzZWQgd2l0aCBfX3BvbGljeSB0byBtYW5hZ2UgY29weSBhbmQKKy8vIGRlc3RydWN0aW9uLgordW5pb24gX19wb2xpY3lfc3RvcmFnZQoreworICAgIG11dGFibGUgY2hhciBfX3NtYWxsW3NpemVvZih2b2lkKikgKiAyXTsKKyAgICB2b2lkKiBfX2xhcmdlOworfTsKKworLy8gVHJ1ZSBpZiBfRnVuIGNhbiBzYWZlbHkgYmUgaGVsZCBpbiBfX3BvbGljeV9zdG9yYWdlLl9fc21hbGwuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgX0Z1bj4KK3N0cnVjdCBfX3VzZV9zbWFsbF9zdG9yYWdlCisgICAgOiBwdWJsaWMgX1ZTVEQ6OmludGVncmFsX2NvbnN0YW50PAorICAgICAgICAgIGJvb2wsIHNpemVvZihfRnVuKSA8PSBzaXplb2YoX19wb2xpY3lfc3RvcmFnZSkgJiYKKyAgICAgICAgICAgICAgICAgICAgX0xJQkNQUF9BTElHTk9GKF9GdW4pIDw9IF9MSUJDUFBfQUxJR05PRihfX3BvbGljeV9zdG9yYWdlKSAmJgorICAgICAgICAgICAgICAgICAgICBfVlNURDo6aXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZTxfRnVuPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgX1ZTVEQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8X0Z1bj46OnZhbHVlPiB7fTsKKworLy8gUG9saWN5IGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0byBjb3B5LCBkZXN0cm95LCBhbmQgbW92ZSB0aGUKKy8vIHVuZGVybHlpbmcgZnVuY3Rvci4gWW91IGNhbiB0aGluayBvZiBpdCBhcyBhIHZ0YWJsZSBvZiBzb3J0cy4KK3N0cnVjdCBfX3BvbGljeQoreworICAgIC8vIFVzZWQgdG8gY29weSBvciBkZXN0cm95IF9fbGFyZ2UgdmFsdWVzLiBudWxsIGZvciB0cml2aWFsIG9iamVjdHMuCisgICAgdm9pZCogKCpjb25zdCBfX2Nsb25lKShjb25zdCB2b2lkKik7CisgICAgdm9pZCAoKmNvbnN0IF9fZGVzdHJveSkodm9pZCopOworCisgICAgLy8gVHJ1ZSBpZiB0aGlzIGlzIHRoZSBudWxsIHBvbGljeSAobm8gdmFsdWUpLgorICAgIGNvbnN0IGJvb2wgX19pc19udWxsOworCisgICAgLy8gVGhlIHRhcmdldCB0eXBlLiBNYXkgYmUgbnVsbCBpZiBSVFRJIGlzIGRpc2FibGVkLgorICAgIGNvbnN0IHN0ZDo6dHlwZV9pbmZvKiBjb25zdCBfX3R5cGVfaW5mbzsKKworICAgIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGEgc3RhdGljIHBvbGljeSBvYmplY3Qgc3VpdGFibGUgZm9yIHRoZSBmdW5jdG9yCisgICAgLy8gdHlwZS4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX0Z1bj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHN0YXRpYyBjb25zdCBfX3BvbGljeSogX19jcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIF9fY2hvb3NlX3BvbGljeTxfRnVuPihfX3VzZV9zbWFsbF9zdG9yYWdlPF9GdW4+KCkpOworICAgIH0KKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBzdGF0aWMgY29uc3QgX19wb2xpY3kqIF9fY3JlYXRlX2VtcHR5KCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBfTElCQ1BQX0NPTlNURVhQUiBfX3BvbGljeSBfX3BvbGljeV8gPSB7bnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLAorI2lmbmRlZiBfTElCQ1BQX05PX1JUVEkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwZWlkKHZvaWQpCisjZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIKKyNlbmRpZgorICAgICAgICB9OworICAgICAgICByZXR1cm4gJl9fcG9saWN5XzsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX0Z1bj4gc3RhdGljIHZvaWQqIF9fbGFyZ2VfY2xvbmUoY29uc3Qgdm9pZCogX19zKQorICAgIHsKKyAgICAgICAgY29uc3QgX0Z1biogX19mID0gc3RhdGljX2Nhc3Q8Y29uc3QgX0Z1bio+KF9fcyk7CisgICAgICAgIHJldHVybiBfX2YtPl9fY2xvbmUoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX0Z1bj4gc3RhdGljIHZvaWQgX19sYXJnZV9kZXN0cm95KHZvaWQqIF9fcykKKyAgICB7CisgICAgICAgIHR5cGVkZWYgYWxsb2NhdG9yX3RyYWl0czx0eXBlbmFtZSBfRnVuOjpfQWxsb2M+IF9fYWxsb2NfdHJhaXRzOworICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fcmViaW5kX2FsbG9jX2hlbHBlcjxfX2FsbG9jX3RyYWl0cywgX0Z1bj46OnR5cGUKKyAgICAgICAgICAgIF9GdW5BbGxvYzsKKyAgICAgICAgX0Z1biogX19mID0gc3RhdGljX2Nhc3Q8X0Z1bio+KF9fcyk7CisgICAgICAgIF9GdW5BbGxvYyBfX2EoX19mLT5fX2dldF9hbGxvY2F0b3IoKSk7CisgICAgICAgIF9fZi0+ZGVzdHJveSgpOworICAgICAgICBfX2EuZGVhbGxvY2F0ZShfX2YsIDEpOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfRnVuPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3RhdGljIGNvbnN0IF9fcG9saWN5KgorICAgICAgICBfX2Nob29zZV9wb2xpY3koLyogaXNfc21hbGwgPSAqLyBmYWxzZV90eXBlKQorICAgIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IF9MSUJDUFBfQ09OU1RFWFBSIF9fcG9saWN5IF9fcG9saWN5XyA9IHsKKyAgICAgICAgICAgICZfX2xhcmdlX2Nsb25lPF9GdW4+LCAmX19sYXJnZV9kZXN0cm95PF9GdW4+LCBmYWxzZSwKKyNpZm5kZWYgX0xJQkNQUF9OT19SVFRJCisgICAgICAgICAgICAmdHlwZWlkKHR5cGVuYW1lIF9GdW46Ol9UYXJnZXQpCisjZWxzZQorICAgICAgICAgICAgbnVsbHB0cgorI2VuZGlmCisgICAgICAgIH07CisgICAgICAgIHJldHVybiAmX19wb2xpY3lfOworICAgIH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfRnVuPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3RhdGljIGNvbnN0IF9fcG9saWN5KgorICAgICAgICBfX2Nob29zZV9wb2xpY3koLyogaXNfc21hbGwgPSAqLyB0cnVlX3R5cGUpCisgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgX0xJQkNQUF9DT05TVEVYUFIgX19wb2xpY3kgX19wb2xpY3lfID0geworICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgZmFsc2UsCisjaWZuZGVmIF9MSUJDUFBfTk9fUlRUSQorICAgICAgICAgICAgJnR5cGVpZCh0eXBlbmFtZSBfRnVuOjpfVGFyZ2V0KQorI2Vsc2UKKyAgICAgICAgICAgIG51bGxwdHIKKyNlbmRpZgorICAgICAgICB9OworICAgICAgICByZXR1cm4gJl9fcG9saWN5XzsKKyAgICB9Cit9OworCisvLyBVc2VkIHRvIGNob29zZSBiZXR3ZWVuIHBlcmZlY3QgZm9yd2FyZGluZyBvciBwYXNzLWJ5LXZhbHVlLiBQYXNzLWJ5LXZhbHVlIGlzCisvLyBmYXN0ZXIgZm9yIHR5cGVzIHRoYXQgY2FuIGJlIHBhc3NlZCBpbiByZWdpc3RlcnMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgX1RwPgordXNpbmcgX19mYXN0X2ZvcndhcmQgPQorICAgIHR5cGVuYW1lIF9WU1REOjpjb25kaXRpb25hbDxfVlNURDo6aXNfc2NhbGFyPF9UcD46OnZhbHVlLCBfVHAsIF9UcCYmPjo6dHlwZTsKKworLy8gX19wb2xpY3lfaW52b2tlciBjYWxscyBhbiBpbnN0YW5jZSBvZiBfX2FsbG9jX2Z1bmMgaGVsZCBpbiBfX3BvbGljeV9zdG9yYWdlLgorCit0ZW1wbGF0ZSA8Y2xhc3MgX0ZwPiBzdHJ1Y3QgX19wb2xpY3lfaW52b2tlcjsKKwordGVtcGxhdGUgPGNsYXNzIF9ScCwgY2xhc3MuLi4gX0FyZ1R5cGVzPgorc3RydWN0IF9fcG9saWN5X2ludm9rZXI8X1JwKF9BcmdUeXBlcy4uLik+Cit7CisgICAgdHlwZWRlZiBfUnAgKCpfX0NhbGwpKGNvbnN0IF9fcG9saWN5X3N0b3JhZ2UqLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Zhc3RfZm9yd2FyZDxfQXJnVHlwZXM+Li4uKTsKKworICAgIF9fQ2FsbCBfX2NhbGxfOworCisgICAgLy8gQ3JlYXRlcyBhbiBpbnZva2VyIHRoYXQgdGhyb3dzIGJhZF9mdW5jdGlvbl9jYWxsLgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBfX3BvbGljeV9pbnZva2VyKCkgOiBfX2NhbGxfKCZfX2NhbGxfZW1wdHkpIHt9CisKKyAgICAvLyBDcmVhdGVzIGFuIGludm9rZXIgdGhhdCBjYWxscyB0aGUgZ2l2ZW4gaW5zdGFuY2Ugb2YgX19mdW5jLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBfRnVuPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3RhdGljIF9fcG9saWN5X2ludm9rZXIgX19jcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIF9fcG9saWN5X2ludm9rZXIoJl9fY2FsbF9pbXBsPF9GdW4+KTsKKyAgICB9CisKKyAgcHJpdmF0ZToKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgZXhwbGljaXQgX19wb2xpY3lfaW52b2tlcihfX0NhbGwgX19jKSA6IF9fY2FsbF8oX19jKSB7fQorCisgICAgc3RhdGljIF9ScCBfX2NhbGxfZW1wdHkoY29uc3QgX19wb2xpY3lfc3RvcmFnZSosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mYXN0X2ZvcndhcmQ8X0FyZ1R5cGVzPi4uLikKKyAgICB7CisgICAgICAgIF9fdGhyb3dfYmFkX2Z1bmN0aW9uX2NhbGwoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgX0Z1bj4KKyAgICBzdGF0aWMgX1JwIF9fY2FsbF9pbXBsKGNvbnN0IF9fcG9saWN5X3N0b3JhZ2UqIF9fYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mYXN0X2ZvcndhcmQ8X0FyZ1R5cGVzPi4uLiBfX2FyZ3MpCisgICAgeworICAgICAgICBfRnVuKiBfX2YgPSByZWludGVycHJldF9jYXN0PF9GdW4qPihfX3VzZV9zbWFsbF9zdG9yYWdlPF9GdW4+Ojp2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAmX19idWYtPl9fc21hbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX19idWYtPl9fbGFyZ2UpOworICAgICAgICByZXR1cm4gKCpfX2YpKF9WU1REOjpmb3J3YXJkPF9BcmdUeXBlcz4oX19hcmdzKS4uLik7CisgICAgfQorfTsKKworLy8gX19wb2xpY3lfZnVuYyB1c2VzIGEgX19wb2xpY3kgYW5kIF9fcG9saWN5X2ludm9rZXIgdG8gY3JlYXRlIGEgdHlwZS1lcmFzZWQsCisvLyBjb3B5YWJsZSBmdW5jdG9yLgorCit0ZW1wbGF0ZSA8Y2xhc3MgX0ZwPiBjbGFzcyBfX3BvbGljeV9mdW5jOworCit0ZW1wbGF0ZSA8Y2xhc3MgX1JwLCBjbGFzcy4uLiBfQXJnVHlwZXM+IGNsYXNzIF9fcG9saWN5X2Z1bmM8X1JwKF9BcmdUeXBlcy4uLik+Cit7CisgICAgLy8gSW5saW5lIHN0b3JhZ2UgZm9yIHNtYWxsIG9iamVjdHMuCisgICAgX19wb2xpY3lfc3RvcmFnZSBfX2J1Zl87CisKKyAgICAvLyBDYWxscyB0aGUgdmFsdWUgc3RvcmVkIGluIF9fYnVmXy4gVGhpcyBjb3VsZCB0ZWNobmljYWxseSBiZSBwYXJ0IG9mCisgICAgLy8gcG9saWN5LCBidXQgc3RvcmluZyBpdCBoZXJlIGVsaW1pbmF0ZXMgYSBsZXZlbCBvZiBpbmRpcmVjdGlvbiBpbnNpZGUKKyAgICAvLyBvcGVyYXRvcigpLgorICAgIHR5cGVkZWYgX19mdW5jdGlvbjo6X19wb2xpY3lfaW52b2tlcjxfUnAoX0FyZ1R5cGVzLi4uKT4gX19pbnZva2VyOworICAgIF9faW52b2tlciBfX2ludm9rZXJfOworCisgICAgLy8gVGhlIHBvbGljeSB0aGF0IGRlc2NyaWJlcyBob3cgdG8gbW92ZSAvIGNvcHkgLyBkZXN0cm95IF9fYnVmXy4gTmV2ZXIKKyAgICAvLyBudWxsLCBldmVuIGlmIHRoZSBmdW5jdGlvbiBpcyBlbXB0eS4KKyAgICBjb25zdCBfX3BvbGljeSogX19wb2xpY3lfOworCisgIHB1YmxpYzoKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgX19wb2xpY3lfZnVuYygpIDogX19wb2xpY3lfKF9fcG9saWN5OjpfX2NyZWF0ZV9lbXB0eSgpKSB7fQorCisgICAgdGVtcGxhdGUgPGNsYXNzIF9GcCwgY2xhc3MgX0FsbG9jPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgX19wb2xpY3lfZnVuYyhfRnAmJiBfX2YsIGNvbnN0IF9BbGxvYyYgX19hKQorICAgICAgICA6IF9fcG9saWN5XyhfX3BvbGljeTo6X19jcmVhdGVfZW1wdHkoKSkKKyAgICB7CisgICAgICAgIHR5cGVkZWYgX19hbGxvY19mdW5jPF9GcCwgX0FsbG9jLCBfUnAoX0FyZ1R5cGVzLi4uKT4gX0Z1bjsKKyAgICAgICAgdHlwZWRlZiBhbGxvY2F0b3JfdHJhaXRzPF9BbGxvYz4gX19hbGxvY190cmFpdHM7CisgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19yZWJpbmRfYWxsb2NfaGVscGVyPF9fYWxsb2NfdHJhaXRzLCBfRnVuPjo6dHlwZQorICAgICAgICAgICAgX0Z1bkFsbG9jOworCisgICAgICAgIGlmIChfX2Z1bmN0aW9uOjpfX25vdF9udWxsKF9fZikpCisgICAgICAgIHsKKyAgICAgICAgICAgIF9faW52b2tlcl8gPSBfX2ludm9rZXI6OnRlbXBsYXRlIF9fY3JlYXRlPF9GdW4+KCk7CisgICAgICAgICAgICBfX3BvbGljeV8gPSBfX3BvbGljeTo6X19jcmVhdGU8X0Z1bj4oKTsKKworICAgICAgICAgICAgX0Z1bkFsbG9jIF9fYWYoX19hKTsKKyAgICAgICAgICAgIGlmIChfX3VzZV9zbWFsbF9zdG9yYWdlPF9GdW4+KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgOjpuZXcgKCh2b2lkKikmX19idWZfLl9fc21hbGwpCisgICAgICAgICAgICAgICAgICAgIF9GdW4oX1ZTVEQ6Om1vdmUoX19mKSwgX0FsbG9jKF9fYWYpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0eXBlZGVmIF9fYWxsb2NhdG9yX2Rlc3RydWN0b3I8X0Z1bkFsbG9jPiBfRHA7CisgICAgICAgICAgICAgICAgdW5pcXVlX3B0cjxfRnVuLCBfRHA+IF9faG9sZChfX2FmLmFsbG9jYXRlKDEpLCBfRHAoX19hZiwgMSkpOworICAgICAgICAgICAgICAgIDo6bmV3ICgodm9pZCopX19ob2xkLmdldCgpKQorICAgICAgICAgICAgICAgICAgICBfRnVuKF9WU1REOjptb3ZlKF9fZiksIF9BbGxvYyhfX2FmKSk7CisgICAgICAgICAgICAgICAgX19idWZfLl9fbGFyZ2UgPSBfX2hvbGQucmVsZWFzZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIF9fcG9saWN5X2Z1bmMoY29uc3QgX19wb2xpY3lfZnVuYyYgX19mKQorICAgICAgICA6IF9fYnVmXyhfX2YuX19idWZfKSwgX19pbnZva2VyXyhfX2YuX19pbnZva2VyXyksCisgICAgICAgICAgX19wb2xpY3lfKF9fZi5fX3BvbGljeV8pCisgICAgeworICAgICAgICBpZiAoX19wb2xpY3lfLT5fX2Nsb25lKQorICAgICAgICAgICAgX19idWZfLl9fbGFyZ2UgPSBfX3BvbGljeV8tPl9fY2xvbmUoX19mLl9fYnVmXy5fX2xhcmdlKTsKKyAgICB9CisKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgX19wb2xpY3lfZnVuYyhfX3BvbGljeV9mdW5jJiYgX19mKQorICAgICAgICA6IF9fYnVmXyhfX2YuX19idWZfKSwgX19pbnZva2VyXyhfX2YuX19pbnZva2VyXyksCisgICAgICAgICAgX19wb2xpY3lfKF9fZi5fX3BvbGljeV8pCisgICAgeworICAgICAgICBpZiAoX19wb2xpY3lfLT5fX2Rlc3Ryb3kpCisgICAgICAgIHsKKyAgICAgICAgICAgIF9fZi5fX3BvbGljeV8gPSBfX3BvbGljeTo6X19jcmVhdGVfZW1wdHkoKTsKKyAgICAgICAgICAgIF9fZi5fX2ludm9rZXJfID0gX19pbnZva2VyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgfl9fcG9saWN5X2Z1bmMoKQorICAgIHsKKyAgICAgICAgaWYgKF9fcG9saWN5Xy0+X19kZXN0cm95KQorICAgICAgICAgICAgX19wb2xpY3lfLT5fX2Rlc3Ryb3koX19idWZfLl9fbGFyZ2UpOworICAgIH0KKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBfX3BvbGljeV9mdW5jJiBvcGVyYXRvcj0oX19wb2xpY3lfZnVuYyYmIF9fZikKKyAgICB7CisgICAgICAgICp0aGlzID0gbnVsbHB0cjsKKyAgICAgICAgX19idWZfID0gX19mLl9fYnVmXzsKKyAgICAgICAgX19pbnZva2VyXyA9IF9fZi5fX2ludm9rZXJfOworICAgICAgICBfX3BvbGljeV8gPSBfX2YuX19wb2xpY3lfOworICAgICAgICBfX2YuX19wb2xpY3lfID0gX19wb2xpY3k6Ol9fY3JlYXRlX2VtcHR5KCk7CisgICAgICAgIF9fZi5fX2ludm9rZXJfID0gX19pbnZva2VyKCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgX19wb2xpY3lfZnVuYyYgb3BlcmF0b3I9KG51bGxwdHJfdCkKKyAgICB7CisgICAgICAgIGNvbnN0IF9fcG9saWN5KiBfX3AgPSBfX3BvbGljeV87CisgICAgICAgIF9fcG9saWN5XyA9IF9fcG9saWN5OjpfX2NyZWF0ZV9lbXB0eSgpOworICAgICAgICBfX2ludm9rZXJfID0gX19pbnZva2VyKCk7CisgICAgICAgIGlmIChfX3AtPl9fZGVzdHJveSkKKyAgICAgICAgICAgIF9fcC0+X19kZXN0cm95KF9fYnVmXy5fX2xhcmdlKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBfUnAgb3BlcmF0b3IoKShfQXJnVHlwZXMmJi4uLiBfX2FyZ3MpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gX19pbnZva2VyXy5fX2NhbGxfKF9WU1REOjphZGRyZXNzb2YoX19idWZfKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVlNURDo6Zm9yd2FyZDxfQXJnVHlwZXM+KF9fYXJncykuLi4pOworICAgIH0KKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB2b2lkIHN3YXAoX19wb2xpY3lfZnVuYyYgX19mKQorICAgIHsKKyAgICAgICAgX1ZTVEQ6OnN3YXAoX19pbnZva2VyXywgX19mLl9faW52b2tlcl8pOworICAgICAgICBfVlNURDo6c3dhcChfX3BvbGljeV8sIF9fZi5fX3BvbGljeV8pOworICAgICAgICBfVlNURDo6c3dhcChfX2J1Zl8sIF9fZi5fX2J1Zl8pOworICAgIH0KKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgX05PRVhDRVBUCisgICAgeworICAgICAgICByZXR1cm4gIV9fcG9saWN5Xy0+X19pc19udWxsOworICAgIH0KKworI2lmbmRlZiBfTElCQ1BQX05PX1JUVEkKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgY29uc3Qgc3RkOjp0eXBlX2luZm8mIHRhcmdldF90eXBlKCkgY29uc3QgX05PRVhDRVBUCisgICAgeworICAgICAgICByZXR1cm4gKl9fcG9saWN5Xy0+X190eXBlX2luZm87CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIF9UcD4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIGNvbnN0IF9UcCogdGFyZ2V0KCkgY29uc3QgX05PRVhDRVBUCisgICAgeworICAgICAgICBpZiAoX19wb2xpY3lfLT5fX2lzX251bGwgfHwgdHlwZWlkKF9UcCkgIT0gKl9fcG9saWN5Xy0+X190eXBlX2luZm8pCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgaWYgKF9fcG9saWN5Xy0+X19jbG9uZSkgLy8gT3V0IG9mIGxpbmUgc3RvcmFnZS4KKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IF9UcCo+KF9fYnVmXy5fX2xhcmdlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgX1RwKj4oJl9fYnVmXy5fX3NtYWxsKTsKKyAgICB9CisjZW5kaWYgLy8gX0xJQkNQUF9OT19SVFRJCit9OworCiB9ICAvLyBfX2Z1bmN0aW9uCiAKIHRlbXBsYXRlPGNsYXNzIF9ScCwgY2xhc3MgLi4uX0FyZ1R5cGVzPgpAQCAtMTU5OSwxMyArMjE2NSwxMyBAQAogICAgIDogcHVibGljIF9fZnVuY3Rpb246Ol9fbWF5YmVfZGVyaXZlX2Zyb21fdW5hcnlfZnVuY3Rpb248X1JwKF9BcmdUeXBlcy4uLik+LAogICAgICAgcHVibGljIF9fZnVuY3Rpb246Ol9fbWF5YmVfZGVyaXZlX2Zyb21fYmluYXJ5X2Z1bmN0aW9uPF9ScChfQXJnVHlwZXMuLi4pPgogewotICAgIHR5cGVkZWYgX19mdW5jdGlvbjo6X19iYXNlPF9ScChfQXJnVHlwZXMuLi4pPiBfX2Jhc2U7Ci0gICAgdHlwZW5hbWUgYWxpZ25lZF9zdG9yYWdlPDMqc2l6ZW9mKHZvaWQqKT46OnR5cGUgX19idWZfOwotICAgIF9fYmFzZSogX19mXzsKKyNpZm5kZWYgX0xJQkNQUF9BQklfT1BUSU1JWkVEX0ZVTkNUSU9OCisgICAgdHlwZWRlZiBfX2Z1bmN0aW9uOjpfX3ZhbHVlX2Z1bmM8X1JwKF9BcmdUeXBlcy4uLik+IF9fZnVuYzsKKyNlbHNlCisgICAgdHlwZWRlZiBfX2Z1bmN0aW9uOjpfX3BvbGljeV9mdW5jPF9ScChfQXJnVHlwZXMuLi4pPiBfX2Z1bmM7CisjZW5kaWYKIAotICAgIF9MSUJDUFBfTk9fQ0ZJIHN0YXRpYyBfX2Jhc2UgKl9fYXNfYmFzZSh2b2lkICpwKSB7Ci0gICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxfX2Jhc2UqPihwKTsKLSAgICB9CisgICAgX19mdW5jIF9fZl87CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0ZwLCBib29sID0gX19sYXp5X2FuZDwKICAgICAgICAgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgIWlzX3NhbWU8X191bmN2cmVmX3Q8X0ZwPiwgZnVuY3Rpb24+Ojp2YWx1ZT4sCkBAIC0xNjMyLDkgKzIxOTgsOSBAQAogCiAgICAgLy8gY29uc3RydWN0L2NvcHkvZGVzdHJveToKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgZnVuY3Rpb24oKSBfTk9FWENFUFQgOiBfX2ZfKDApIHt9CisgICAgZnVuY3Rpb24oKSBfTk9FWENFUFQgeyB9CiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIGZ1bmN0aW9uKG51bGxwdHJfdCkgX05PRVhDRVBUIDogX19mXygwKSB7fQorICAgIGZ1bmN0aW9uKG51bGxwdHJfdCkgX05PRVhDRVBUIHt9CiAgICAgZnVuY3Rpb24oY29uc3QgZnVuY3Rpb24mKTsKICAgICBmdW5jdGlvbihmdW5jdGlvbiYmKSBfTk9FWENFUFQ7CiAgICAgdGVtcGxhdGU8Y2xhc3MgX0ZwLCBjbGFzcyA9IF9FbmFibGVJZkNhbGxhYmxlPF9GcD4+CkBAIC0xNjQzLDEwICsyMjA5LDEwIEBACiAjaWYgX0xJQkNQUF9TVERfVkVSIDw9IDE0CiAgICAgdGVtcGxhdGU8Y2xhc3MgX0FsbG9jPgogICAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgICAgZnVuY3Rpb24oYWxsb2NhdG9yX2FyZ190LCBjb25zdCBfQWxsb2MmKSBfTk9FWENFUFQgOiBfX2ZfKDApIHt9CisgICAgICBmdW5jdGlvbihhbGxvY2F0b3JfYXJnX3QsIGNvbnN0IF9BbGxvYyYpIF9OT0VYQ0VQVCB7fQogICAgIHRlbXBsYXRlPGNsYXNzIF9BbGxvYz4KICAgICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSAgICAgIGZ1bmN0aW9uKGFsbG9jYXRvcl9hcmdfdCwgY29uc3QgX0FsbG9jJiwgbnVsbHB0cl90KSBfTk9FWENFUFQgOiBfX2ZfKDApIHt9CisgICAgICBmdW5jdGlvbihhbGxvY2F0b3JfYXJnX3QsIGNvbnN0IF9BbGxvYyYsIG51bGxwdHJfdCkgX05PRVhDRVBUIHt9CiAgICAgdGVtcGxhdGU8Y2xhc3MgX0FsbG9jPgogICAgICAgZnVuY3Rpb24oYWxsb2NhdG9yX2FyZ190LCBjb25zdCBfQWxsb2MmLCBjb25zdCBmdW5jdGlvbiYpOwogICAgIHRlbXBsYXRlPGNsYXNzIF9BbGxvYz4KQEAgLTE2NzUsNyArMjI0MSw5IEBACiAKICAgICAvLyBmdW5jdGlvbiBjYXBhY2l0eToKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgICAgIF9MSUJDUFBfRVhQTElDSVQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IF9OT0VYQ0VQVCB7cmV0dXJuIF9fZl87fQorICAgIF9MSUJDUFBfRVhQTElDSVQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IF9OT0VYQ0VQVCB7CisgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oX19mXyk7CisgICAgfQogCiAgICAgLy8gZGVsZXRlZCBvdmVybG9hZHMgY2xvc2UgcG9zc2libGUgaG9sZSBpbiB0aGUgdHlwZSBzeXN0ZW0KICAgICB0ZW1wbGF0ZTxjbGFzcyBfUjIsIGNsYXNzLi4uIF9BcmdUeXBlczI+CkBAIC0xNjk1LDEyNSArMjI2MywzOCBAQAogfTsKIAogdGVtcGxhdGU8Y2xhc3MgX1JwLCBjbGFzcyAuLi5fQXJnVHlwZXM+Ci1mdW5jdGlvbjxfUnAoX0FyZ1R5cGVzLi4uKT46OmZ1bmN0aW9uKGNvbnN0IGZ1bmN0aW9uJiBfX2YpCi17Ci0gICAgaWYgKF9fZi5fX2ZfID09IDApCi0gICAgICAgIF9fZl8gPSAwOwotICAgIGVsc2UgaWYgKCh2b2lkICopX19mLl9fZl8gPT0gJl9fZi5fX2J1Zl8pCi0gICAgewotICAgICAgICBfX2ZfID0gX19hc19iYXNlKCZfX2J1Zl8pOwotICAgICAgICBfX2YuX19mXy0+X19jbG9uZShfX2ZfKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICBfX2ZfID0gX19mLl9fZl8tPl9fY2xvbmUoKTsKLX0KK2Z1bmN0aW9uPF9ScChfQXJnVHlwZXMuLi4pPjo6ZnVuY3Rpb24oY29uc3QgZnVuY3Rpb24mIF9fZikgOiBfX2ZfKF9fZi5fX2ZfKSB7fQogCiAjaWYgX0xJQkNQUF9TVERfVkVSIDw9IDE0CiB0ZW1wbGF0ZTxjbGFzcyBfUnAsIGNsYXNzIC4uLl9BcmdUeXBlcz4KIHRlbXBsYXRlIDxjbGFzcyBfQWxsb2M+CiBmdW5jdGlvbjxfUnAoX0FyZ1R5cGVzLi4uKT46OmZ1bmN0aW9uKGFsbG9jYXRvcl9hcmdfdCwgY29uc3QgX0FsbG9jJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmdW5jdGlvbiYgX19mKQotewotICAgIGlmIChfX2YuX19mXyA9PSAwKQotICAgICAgICBfX2ZfID0gMDsKLSAgICBlbHNlIGlmICgodm9pZCAqKV9fZi5fX2ZfID09ICZfX2YuX19idWZfKQotICAgIHsKLSAgICAgICAgX19mXyA9IF9fYXNfYmFzZSgmX19idWZfKTsKLSAgICAgICAgX19mLl9fZl8tPl9fY2xvbmUoX19mXyk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgX19mXyA9IF9fZi5fX2ZfLT5fX2Nsb25lKCk7Ci19CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZnVuY3Rpb24mIF9fZikgOiBfX2ZfKF9fZi5fX2ZfKSB7fQogI2VuZGlmCiAKLXRlbXBsYXRlPGNsYXNzIF9ScCwgY2xhc3MgLi4uX0FyZ1R5cGVzPgordGVtcGxhdGUgPGNsYXNzIF9ScCwgY2xhc3MuLi4gX0FyZ1R5cGVzPgogZnVuY3Rpb248X1JwKF9BcmdUeXBlcy4uLik+OjpmdW5jdGlvbihmdW5jdGlvbiYmIF9fZikgX05PRVhDRVBUCi17Ci0gICAgaWYgKF9fZi5fX2ZfID09IDApCi0gICAgICAgIF9fZl8gPSAwOwotICAgIGVsc2UgaWYgKCh2b2lkICopX19mLl9fZl8gPT0gJl9fZi5fX2J1Zl8pCi0gICAgewotICAgICAgICBfX2ZfID0gX19hc19iYXNlKCZfX2J1Zl8pOwotICAgICAgICBfX2YuX19mXy0+X19jbG9uZShfX2ZfKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgX19mXyA9IF9fZi5fX2ZfOwotICAgICAgICBfX2YuX19mXyA9IDA7Ci0gICAgfQotfQorICAgIDogX19mXyhfVlNURDo6bW92ZShfX2YuX19mXykpIHt9CiAKICNpZiBfTElCQ1BQX1NURF9WRVIgPD0gMTQKIHRlbXBsYXRlPGNsYXNzIF9ScCwgY2xhc3MgLi4uX0FyZ1R5cGVzPgogdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4KIGZ1bmN0aW9uPF9ScChfQXJnVHlwZXMuLi4pPjo6ZnVuY3Rpb24oYWxsb2NhdG9yX2FyZ190LCBjb25zdCBfQWxsb2MmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uJiYgX19mKQotewotICAgIGlmIChfX2YuX19mXyA9PSAwKQotICAgICAgICBfX2ZfID0gMDsKLSAgICBlbHNlIGlmICgodm9pZCAqKV9fZi5fX2ZfID09ICZfX2YuX19idWZfKQotICAgIHsKLSAgICAgICAgX19mXyA9IF9fYXNfYmFzZSgmX19idWZfKTsKLSAgICAgICAgX19mLl9fZl8tPl9fY2xvbmUoX19mXyk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIF9fZl8gPSBfX2YuX19mXzsKLSAgICAgICAgX19mLl9fZl8gPSAwOwotICAgIH0KLX0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24mJiBfX2YpCisgICAgOiBfX2ZfKF9WU1REOjptb3ZlKF9fZi5fX2ZfKSkge30KICNlbmRpZgogCi10ZW1wbGF0ZTxjbGFzcyBfUnAsIGNsYXNzIC4uLl9BcmdUeXBlcz4KK3RlbXBsYXRlIDxjbGFzcyBfUnAsIGNsYXNzLi4uIF9BcmdUeXBlcz4KIHRlbXBsYXRlIDxjbGFzcyBfRnAsIGNsYXNzPgogZnVuY3Rpb248X1JwKF9BcmdUeXBlcy4uLik+OjpmdW5jdGlvbihfRnAgX19mKQotICAgIDogX19mXygwKQotewotICAgIGlmIChfX2Z1bmN0aW9uOjpfX25vdF9udWxsKF9fZikpCi0gICAgewotICAgICAgICB0eXBlZGVmIF9fZnVuY3Rpb246Ol9fZnVuYzxfRnAsIGFsbG9jYXRvcjxfRnA+LCBfUnAoX0FyZ1R5cGVzLi4uKT4gX0ZGOwotICAgICAgICBpZiAoc2l6ZW9mKF9GRikgPD0gc2l6ZW9mKF9fYnVmXykgJiYgaXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8X0ZwPjo6dmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIF9fZl8gPSA6Om5ldygodm9pZCopJl9fYnVmXykgX0ZGKF9WU1REOjptb3ZlKF9fZikpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBhbGxvY2F0b3I8X0ZGPiBfQXA7Ci0gICAgICAgICAgICBfQXAgX19hOwotICAgICAgICAgICAgdHlwZWRlZiBfX2FsbG9jYXRvcl9kZXN0cnVjdG9yPF9BcD4gX0RwOwotICAgICAgICAgICAgdW5pcXVlX3B0cjxfX2Jhc2UsIF9EcD4gX19ob2xkKF9fYS5hbGxvY2F0ZSgxKSwgX0RwKF9fYSwgMSkpOwotICAgICAgICAgICAgOjpuZXcgKF9faG9sZC5nZXQoKSkgX0ZGKF9WU1REOjptb3ZlKF9fZiksIGFsbG9jYXRvcjxfRnA+KF9fYSkpOwotICAgICAgICAgICAgX19mXyA9IF9faG9sZC5yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19CisgICAgOiBfX2ZfKF9WU1REOjptb3ZlKF9fZiksIGFsbG9jYXRvcjxfRnA+KCkpIHt9CiAKICNpZiBfTElCQ1BQX1NURF9WRVIgPD0gMTQKLXRlbXBsYXRlPGNsYXNzIF9ScCwgY2xhc3MgLi4uX0FyZ1R5cGVzPgordGVtcGxhdGUgPGNsYXNzIF9ScCwgY2xhc3MuLi4gX0FyZ1R5cGVzPgogdGVtcGxhdGUgPGNsYXNzIF9GcCwgY2xhc3MgX0FsbG9jLCBjbGFzcz4KLWZ1bmN0aW9uPF9ScChfQXJnVHlwZXMuLi4pPjo6ZnVuY3Rpb24oYWxsb2NhdG9yX2FyZ190LCBjb25zdCBfQWxsb2MmIF9fYTAsIF9GcCBfX2YpCi0gICAgOiBfX2ZfKDApCi17Ci0gICAgdHlwZWRlZiBhbGxvY2F0b3JfdHJhaXRzPF9BbGxvYz4gX19hbGxvY190cmFpdHM7Ci0gICAgaWYgKF9fZnVuY3Rpb246Ol9fbm90X251bGwoX19mKSkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgX19mdW5jdGlvbjo6X19mdW5jPF9GcCwgX0FsbG9jLCBfUnAoX0FyZ1R5cGVzLi4uKT4gX0ZGOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fcmViaW5kX2FsbG9jX2hlbHBlcjxfX2FsbG9jX3RyYWl0cywgX0ZGPjo6dHlwZSBfQXA7Ci0gICAgICAgIF9BcCBfX2EoX19hMCk7Ci0gICAgICAgIGlmIChzaXplb2YoX0ZGKSA8PSBzaXplb2YoX19idWZfKSAmJgotICAgICAgICAgICAgaXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8X0ZwPjo6dmFsdWUgJiYgaXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8X0FwPjo6dmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIF9fZl8gPSA6Om5ldygodm9pZCopJl9fYnVmXykgX0ZGKF9WU1REOjptb3ZlKF9fZiksIF9BbGxvYyhfX2EpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgX19hbGxvY2F0b3JfZGVzdHJ1Y3RvcjxfQXA+IF9EcDsKLSAgICAgICAgICAgIHVuaXF1ZV9wdHI8X19iYXNlLCBfRHA+IF9faG9sZChfX2EuYWxsb2NhdGUoMSksIF9EcChfX2EsIDEpKTsKLSAgICAgICAgICAgIDo6bmV3IChfX2hvbGQuZ2V0KCkpIF9GRihfVlNURDo6bW92ZShfX2YpLCBfQWxsb2MoX19hKSk7Ci0gICAgICAgICAgICBfX2ZfID0gX19ob2xkLnJlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLX0KK2Z1bmN0aW9uPF9ScChfQXJnVHlwZXMuLi4pPjo6ZnVuY3Rpb24oYWxsb2NhdG9yX2FyZ190LCBjb25zdCBfQWxsb2MmIF9fYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0ZwIF9fZikKKyAgICA6IF9fZl8oX1ZTVEQ6Om1vdmUoX19mKSwgX19hKSB7fQogI2VuZGlmCiAKIHRlbXBsYXRlPGNsYXNzIF9ScCwgY2xhc3MgLi4uX0FyZ1R5cGVzPgpAQCAtMTgyOCwxOSArMjMwOSw3IEBACiBmdW5jdGlvbjxfUnAoX0FyZ1R5cGVzLi4uKT4mCiBmdW5jdGlvbjxfUnAoX0FyZ1R5cGVzLi4uKT46Om9wZXJhdG9yPShmdW5jdGlvbiYmIF9fZikgX05PRVhDRVBUCiB7Ci0gICAgKnRoaXMgPSBudWxscHRyOwotICAgIGlmIChfX2YuX19mXyA9PSAwKQotICAgICAgICBfX2ZfID0gMDsKLSAgICBlbHNlIGlmICgodm9pZCAqKV9fZi5fX2ZfID09ICZfX2YuX19idWZfKQotICAgIHsKLSAgICAgICAgX19mXyA9IF9fYXNfYmFzZSgmX19idWZfKTsKLSAgICAgICAgX19mLl9fZl8tPl9fY2xvbmUoX19mXyk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIF9fZl8gPSBfX2YuX19mXzsKLSAgICAgICAgX19mLl9fZl8gPSAwOwotICAgIH0KKyAgICBfX2ZfID0gc3RkOjptb3ZlKF9fZi5fX2ZfKTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTE4NDgsMTIgKzIzMTcsNyBAQAogZnVuY3Rpb248X1JwKF9BcmdUeXBlcy4uLik+JgogZnVuY3Rpb248X1JwKF9BcmdUeXBlcy4uLik+OjpvcGVyYXRvcj0obnVsbHB0cl90KSBfTk9FWENFUFQKIHsKLSAgICBfX2Jhc2UqIF9fdCA9IF9fZl87Ci0gICAgX19mXyA9IDA7Ci0gICAgaWYgKCh2b2lkICopX190ID09ICZfX2J1Zl8pCi0gICAgICAgIF9fdC0+ZGVzdHJveSgpOwotICAgIGVsc2UgaWYgKF9fdCkKLSAgICAgICAgX190LT5kZXN0cm95X2RlYWxsb2NhdGUoKTsKKyAgICBfX2ZfID0gbnVsbHB0cjsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTE4NjcsNjAgKzIzMzEsMjAgQEAKIH0KIAogdGVtcGxhdGU8Y2xhc3MgX1JwLCBjbGFzcyAuLi5fQXJnVHlwZXM+Ci1mdW5jdGlvbjxfUnAoX0FyZ1R5cGVzLi4uKT46On5mdW5jdGlvbigpCi17Ci0gICAgaWYgKCh2b2lkICopX19mXyA9PSAmX19idWZfKQotICAgICAgICBfX2ZfLT5kZXN0cm95KCk7Ci0gICAgZWxzZSBpZiAoX19mXykKLSAgICAgICAgX19mXy0+ZGVzdHJveV9kZWFsbG9jYXRlKCk7Ci19CitmdW5jdGlvbjxfUnAoX0FyZ1R5cGVzLi4uKT46On5mdW5jdGlvbigpIHt9CiAKIHRlbXBsYXRlPGNsYXNzIF9ScCwgY2xhc3MgLi4uX0FyZ1R5cGVzPgogdm9pZAogZnVuY3Rpb248X1JwKF9BcmdUeXBlcy4uLik+Ojpzd2FwKGZ1bmN0aW9uJiBfX2YpIF9OT0VYQ0VQVAogewotICAgIGlmIChfVlNURDo6YWRkcmVzc29mKF9fZikgPT0gdGhpcykKLSAgICAgIHJldHVybjsKLSAgICBpZiAoKHZvaWQgKilfX2ZfID09ICZfX2J1Zl8gJiYgKHZvaWQgKilfX2YuX19mXyA9PSAmX19mLl9fYnVmXykKLSAgICB7Ci0gICAgICAgIHR5cGVuYW1lIGFsaWduZWRfc3RvcmFnZTxzaXplb2YoX19idWZfKT46OnR5cGUgX190ZW1wYnVmOwotICAgICAgICBfX2Jhc2UqIF9fdCA9IF9fYXNfYmFzZSgmX190ZW1wYnVmKTsKLSAgICAgICAgX19mXy0+X19jbG9uZShfX3QpOwotICAgICAgICBfX2ZfLT5kZXN0cm95KCk7Ci0gICAgICAgIF9fZl8gPSAwOwotICAgICAgICBfX2YuX19mXy0+X19jbG9uZShfX2FzX2Jhc2UoJl9fYnVmXykpOwotICAgICAgICBfX2YuX19mXy0+ZGVzdHJveSgpOwotICAgICAgICBfX2YuX19mXyA9IDA7Ci0gICAgICAgIF9fZl8gPSBfX2FzX2Jhc2UoJl9fYnVmXyk7Ci0gICAgICAgIF9fdC0+X19jbG9uZShfX2FzX2Jhc2UoJl9fZi5fX2J1Zl8pKTsKLSAgICAgICAgX190LT5kZXN0cm95KCk7Ci0gICAgICAgIF9fZi5fX2ZfID0gX19hc19iYXNlKCZfX2YuX19idWZfKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoKHZvaWQgKilfX2ZfID09ICZfX2J1Zl8pCi0gICAgewotICAgICAgICBfX2ZfLT5fX2Nsb25lKF9fYXNfYmFzZSgmX19mLl9fYnVmXykpOwotICAgICAgICBfX2ZfLT5kZXN0cm95KCk7Ci0gICAgICAgIF9fZl8gPSBfX2YuX19mXzsKLSAgICAgICAgX19mLl9fZl8gPSBfX2FzX2Jhc2UoJl9fZi5fX2J1Zl8pOwotICAgIH0KLSAgICBlbHNlIGlmICgodm9pZCAqKV9fZi5fX2ZfID09ICZfX2YuX19idWZfKQotICAgIHsKLSAgICAgICAgX19mLl9fZl8tPl9fY2xvbmUoX19hc19iYXNlKCZfX2J1Zl8pKTsKLSAgICAgICAgX19mLl9fZl8tPmRlc3Ryb3koKTsKLSAgICAgICAgX19mLl9fZl8gPSBfX2ZfOwotICAgICAgICBfX2ZfID0gX19hc19iYXNlKCZfX2J1Zl8pOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIF9WU1REOjpzd2FwKF9fZl8sIF9fZi5fX2ZfKTsKKyAgICBfX2ZfLnN3YXAoX19mLl9fZl8pOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBfUnAsIGNsYXNzIC4uLl9BcmdUeXBlcz4KIF9ScAogZnVuY3Rpb248X1JwKF9BcmdUeXBlcy4uLik+OjpvcGVyYXRvcigpKF9BcmdUeXBlcy4uLiBfX2FyZykgY29uc3QKIHsKLSAgICBpZiAoX19mXyA9PSAwKQotICAgICAgICBfX3Rocm93X2JhZF9mdW5jdGlvbl9jYWxsKCk7Ci0gICAgcmV0dXJuICgqX19mXykoX1ZTVEQ6OmZvcndhcmQ8X0FyZ1R5cGVzPihfX2FyZykuLi4pOworICAgIHJldHVybiBfX2ZfKF9WU1REOjpmb3J3YXJkPF9BcmdUeXBlcz4oX19hcmcpLi4uKTsKIH0KIAogI2lmbmRlZiBfTElCQ1BQX05PX1JUVEkKQEAgLTE5MjksOSArMjM1Myw3IEBACiBjb25zdCBzdGQ6OnR5cGVfaW5mbyYKIGZ1bmN0aW9uPF9ScChfQXJnVHlwZXMuLi4pPjo6dGFyZ2V0X3R5cGUoKSBjb25zdCBfTk9FWENFUFQKIHsKLSAgICBpZiAoX19mXyA9PSAwKQotICAgICAgICByZXR1cm4gdHlwZWlkKHZvaWQpOwotICAgIHJldHVybiBfX2ZfLT50YXJnZXRfdHlwZSgpOworICAgIHJldHVybiBfX2ZfLnRhcmdldF90eXBlKCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIF9ScCwgY2xhc3MgLi4uX0FyZ1R5cGVzPgpAQCAtMTkzOSw5ICsyMzYxLDcgQEAKIF9UcCoKIGZ1bmN0aW9uPF9ScChfQXJnVHlwZXMuLi4pPjo6dGFyZ2V0KCkgX05PRVhDRVBUCiB7Ci0gICAgaWYgKF9fZl8gPT0gMCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIChfVHAqKSBjb25zdF9jYXN0PHZvaWQgKj4oX19mXy0+dGFyZ2V0KHR5cGVpZChfVHApKSk7CisgICAgcmV0dXJuIChfVHAqKShfX2ZfLnRlbXBsYXRlIHRhcmdldDxfVHA+KCkpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBfUnAsIGNsYXNzIC4uLl9BcmdUeXBlcz4KQEAgLTE5NDksOSArMjM2OSw3IEBACiBjb25zdCBfVHAqCiBmdW5jdGlvbjxfUnAoX0FyZ1R5cGVzLi4uKT46OnRhcmdldCgpIGNvbnN0IF9OT0VYQ0VQVAogewotICAgIGlmIChfX2ZfID09IDApCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiAoY29uc3QgX1RwKilfX2ZfLT50YXJnZXQodHlwZWlkKF9UcCkpOworICAgIHJldHVybiBfX2ZfLnRlbXBsYXRlIHRhcmdldDxfVHA+KCk7CiB9CiAKICNlbmRpZiAgLy8gX0xJQkNQUF9OT19SVFRJCkBAIC0yNTI3LDYgKzI5NDUsMjYgQEAKIAogI2VuZGlmIC8vIF9MSUJDUFBfU1REX1ZFUiA+IDE0CiAKKyNpZiBfTElCQ1BQX1NURF9WRVIgPiAxNwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK3VzaW5nIHVud3JhcF9yZWZlcmVuY2VfdCA9IHR5cGVuYW1lIHVud3JhcF9yZWZlcmVuY2U8X1RwPjo6dHlwZTsKKwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK3VzaW5nIHVud3JhcF9yZWZfZGVjYXlfdCA9IHR5cGVuYW1lIHVud3JhcF9yZWZfZGVjYXk8X1RwPjo6dHlwZTsKKyNlbmRpZiAvLyA+IEMrKzE3CisKK3RlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyLCBjbGFzcyBfUHJlZGljYXRlPgoraW5saW5lIHZvaWQgX19saWJjcHBfZXJhc2VfaWZfY29udGFpbmVyKCBfQ29udGFpbmVyJiBfX2MsIF9QcmVkaWNhdGUgX19wcmVkKQoreworCWZvciAodHlwZW5hbWUgX0NvbnRhaW5lcjo6aXRlcmF0b3IgX19pdGVyID0gX19jLmJlZ2luKCksIF9fbGFzdCA9IF9fYy5lbmQoKTsgX19pdGVyICE9IF9fbGFzdDspCisJeworCQlpZiAoX19wcmVkKCpfX2l0ZXIpKQorCQkJX19pdGVyID0gX19jLmVyYXNlKF9faXRlcik7CisJCWVsc2UKKwkJCSsrX19pdGVyOworCX0KK30KKwogX0xJQkNQUF9FTkRfTkFNRVNQQUNFX1NURAogCiAjZW5kaWYgIC8vIF9MSUJDUFBfRlVOQ1RJT05BTApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2Z1dHVyZSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9mdXR1cmUKaW5kZXggYjNmZmM3ZS4uNTBiZGQyZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2Z1dHVyZQorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvZnV0dXJlCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBmdXR1cmUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvaW5pdGlhbGl6ZXJfbGlzdCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9pbml0aWFsaXplcl9saXN0CmluZGV4IGI5MzQ2MzcuLjZjNDQ5M2IgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9pbml0aWFsaXplcl9saXN0CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9pbml0aWFsaXplcl9saXN0CkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGluaXRpYWxpemVyX2xpc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvaW50dHlwZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9pbnR0eXBlcy5oCmluZGV4IDA1OGY1NGIuLjBmMWQ0ZjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9pbnR0eXBlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9pbnR0eXBlcy5oCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBpbnR0eXBlcy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvaW9tYW5pcCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9pb21hbmlwCmluZGV4IDM2YzExMTYuLjgyYjc2MDMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9pb21hbmlwCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9pb21hbmlwCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBpb21hbmlwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvaW9zIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2lvcwppbmRleCAwNDBiMmQ0Li45NmU4NGViIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvaW9zCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9pb3MKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBpb3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTQyNiw2ICs0MjUsMTYgQEAKICAgICB2aXJ0dWFsIH5mYWlsdXJlKCkgdGhyb3coKTsKIH07CiAKK19MSUJDUFBfTk9SRVRVUk4gaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK3ZvaWQgX190aHJvd19mYWlsdXJlKGNoYXIgY29uc3QqIF9fbXNnKSB7CisjaWZuZGVmIF9MSUJDUFBfTk9fRVhDRVBUSU9OUworICAgIHRocm93IGlvc19iYXNlOjpmYWlsdXJlKF9fbXNnKTsKKyNlbHNlCisgICAgKCh2b2lkKV9fbXNnKTsKKyAgICBfVlNURDo6YWJvcnQoKTsKKyNlbmRpZgorfQorCiBjbGFzcyBfTElCQ1BQX1RZUEVfVklTIGlvc19iYXNlOjpJbml0CiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvaW9zZndkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2lvc2Z3ZAppbmRleCBkNDM4NDg1Li4wZmZlNzVmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvaW9zZndkCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9pb3Nmd2QKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGlvc2Z3ZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTE4LDYgKzE3LDEyIEBACiB7CiAKIHRlbXBsYXRlPGNsYXNzIGNoYXJUPiBzdHJ1Y3QgY2hhcl90cmFpdHM7Cit0ZW1wbGF0ZTw+ICAgICAgICAgICAgc3RydWN0IGNoYXJfdHJhaXRzPGNoYXI+OwordGVtcGxhdGU8PiAgICAgICAgICAgIHN0cnVjdCBjaGFyX3RyYWl0czxjaGFyOF90PjsgIC8vIEMrKzIwCit0ZW1wbGF0ZTw+ICAgICAgICAgICAgc3RydWN0IGNoYXJfdHJhaXRzPGNoYXIxNl90PjsKK3RlbXBsYXRlPD4gICAgICAgICAgICBzdHJ1Y3QgY2hhcl90cmFpdHM8Y2hhcjMyX3Q+OwordGVtcGxhdGU8PiAgICAgICAgICAgIHN0cnVjdCBjaGFyX3RyYWl0czx3Y2hhcl90PjsKKwogdGVtcGxhdGU8Y2xhc3MgVD4gICAgIGNsYXNzIGFsbG9jYXRvcjsKIAogY2xhc3MgaW9zX2Jhc2U7CkBAIC05OCw2ICsxMDMsMTQgQEAKIGNsYXNzIF9MSUJDUFBfVFlQRV9WSVMgaW9zX2Jhc2U7CiAKIHRlbXBsYXRlPGNsYXNzIF9DaGFyVD4gIHN0cnVjdCBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBjaGFyX3RyYWl0czsKK3RlbXBsYXRlPD4gc3RydWN0IGNoYXJfdHJhaXRzPGNoYXI+OworI2lmbmRlZiBfTElCQ1BQX05PX0hBU19DSEFSOF9UCit0ZW1wbGF0ZTw+IHN0cnVjdCBjaGFyX3RyYWl0czxjaGFyOF90PjsKKyNlbmRpZgordGVtcGxhdGU8PiBzdHJ1Y3QgY2hhcl90cmFpdHM8Y2hhcjE2X3Q+OwordGVtcGxhdGU8PiBzdHJ1Y3QgY2hhcl90cmFpdHM8Y2hhcjMyX3Q+OwordGVtcGxhdGU8PiBzdHJ1Y3QgY2hhcl90cmFpdHM8d2NoYXJfdD47CisKIHRlbXBsYXRlPGNsYXNzIF9UcD4gICAgIGNsYXNzIF9MSUJDUFBfVEVNUExBVEVfVklTIGFsbG9jYXRvcjsKIAogdGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgpAQCAtMTc1LDYgKzE4OCw5IEBACiB0ZW1wbGF0ZSA8Y2xhc3MgX1N0YXRlPiAgICAgICAgICAgICBjbGFzcyBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBmcG9zOwogdHlwZWRlZiBmcG9zPG1ic3RhdGVfdD4gICAgc3RyZWFtcG9zOwogdHlwZWRlZiBmcG9zPG1ic3RhdGVfdD4gICAgd3N0cmVhbXBvczsKKyNpZm5kZWYgX0xJQkNQUF9OT19IQVNfQ0hBUjhfVAordHlwZWRlZiBmcG9zPG1ic3RhdGVfdD4gICAgdThzdHJlYW1wb3M7CisjZW5kaWYKICNpZm5kZWYgX0xJQkNQUF9IQVNfTk9fVU5JQ09ERV9DSEFSUwogdHlwZWRlZiBmcG9zPG1ic3RhdGVfdD4gICAgdTE2c3RyZWFtcG9zOwogdHlwZWRlZiBmcG9zPG1ic3RhdGVfdD4gICAgdTMyc3RyZWFtcG9zOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2lvc3RyZWFtIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2lvc3RyZWFtCmluZGV4IDEzNmE4NDkuLjU5NTYyMGIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9pb3N0cmVhbQorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvaW9zdHJlYW0KQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGlvc3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9pc3RyZWFtIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2lzdHJlYW0KaW5kZXggNzFjMTYyYi4uYmVkZDczOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2lzdHJlYW0KKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2lzdHJlYW0KQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGlzdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTE2MCw2ICsxNTksNyBAQAogKi8KIAogI2luY2x1ZGUgPF9fY29uZmlnPgorI2luY2x1ZGUgPHZlcnNpb24+CiAjaW5jbHVkZSA8b3N0cmVhbT4KIAogI2lmICFkZWZpbmVkKF9MSUJDUFBfSEFTX05PX1BSQUdNQV9TWVNURU1fSEVBREVSKQpAQCAtMTg2LDcgKzE4Niw3IEBACiAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6b2ZmX3R5cGUgb2ZmX3R5cGU7CiAKICAgICAvLyAyNy43LjEuMS4xIENvbnN0cnVjdG9yL2Rlc3RydWN0b3I6Ci0gICAgaW5saW5lIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFX0lOTElORV9WSVNJQklMSVRZCisgICAgaW5saW5lIF9MSUJDUFBfSElERV9GUk9NX0FCSV9BRlRFUl9WMQogICAgIGV4cGxpY2l0IGJhc2ljX2lzdHJlYW0oYmFzaWNfc3RyZWFtYnVmPGNoYXJfdHlwZSwgdHJhaXRzX3R5cGU+KiBfX3NiKSA6IF9fZ2NfKDApCiAgICAgeyB0aGlzLT5pbml0KF9fc2IpOyB9CiAgICAgdmlydHVhbCB+YmFzaWNfaXN0cmVhbSgpOwpAQCAtMjAwLDcgKzIwMCw3IEBACiAgICAgYmFzaWNfaXN0cmVhbSYgb3BlcmF0b3I9KGJhc2ljX2lzdHJlYW0mJiBfX3Jocyk7CiAjZW5kaWYKIAotICAgIGlubGluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9JTkxJTkVfVklTSUJJTElUWQorICAgIGlubGluZSBfTElCQ1BQX0hJREVfRlJPTV9BQklfQUZURVJfVjEKICAgICB2b2lkIHN3YXAoYmFzaWNfaXN0cmVhbSYgX19yaHMpIHsKICAgICAgIF9WU1REOjpzd2FwKF9fZ2NfLCBfX3Jocy5fX2djXyk7CiAgICAgICBiYXNpY19pb3M8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT46OnN3YXAoX19yaHMpOwpAQCAtMjE2LDE2ICsyMTYsMTYgQEAKICAgICBjbGFzcyBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBzZW50cnk7CiAKICAgICAvLyAyNy43LjEuMiBGb3JtYXR0ZWQgaW5wdXQ6Ci0gICAgaW5saW5lIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFX0lOTElORV9WSVNJQklMSVRZCisgICAgaW5saW5lIF9MSUJDUFBfSElERV9GUk9NX0FCSV9BRlRFUl9WMQogICAgIGJhc2ljX2lzdHJlYW0mIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbSYgKCpfX3BmKShiYXNpY19pc3RyZWFtJikpCiAgICAgeyByZXR1cm4gX19wZigqdGhpcyk7IH0KIAotICAgIGlubGluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9JTkxJTkVfVklTSUJJTElUWQorICAgIGlubGluZSBfTElCQ1BQX0hJREVfRlJPTV9BQklfQUZURVJfVjEKICAgICBiYXNpY19pc3RyZWFtJiBvcGVyYXRvcj4+KGJhc2ljX2lvczxjaGFyX3R5cGUsIHRyYWl0c190eXBlPiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqX19wZikoYmFzaWNfaW9zPGNoYXJfdHlwZSwgdHJhaXRzX3R5cGU+JikpCiAgICAgeyBfX3BmKCp0aGlzKTsgcmV0dXJuICp0aGlzOyB9CiAKLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgYmFzaWNfaXN0cmVhbSYgb3BlcmF0b3I+Pihpb3NfYmFzZSYgKCpfX3BmKShpb3NfYmFzZSYpKQogICAgIHsgX19wZigqdGhpcyk7IHJldHVybiAqdGhpczsgfQogCkBAIC0yNDksNyArMjQ5LDcgQEAKICAgICBzdHJlYW1zaXplIGdjb3VudCgpIGNvbnN0IHtyZXR1cm4gX19nY187fQogICAgIGludF90eXBlIGdldCgpOwogCi0gICAgaW5saW5lIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFX0lOTElORV9WSVNJQklMSVRZCisgICAgaW5saW5lIF9MSUJDUFBfSElERV9GUk9NX0FCSV9BRlRFUl9WMQogICAgIGJhc2ljX2lzdHJlYW0mIGdldChjaGFyX3R5cGUmIF9fYykgewogICAgICAgaW50X3R5cGUgX19jaCA9IGdldCgpOwogICAgICAgaWYgKF9fY2ggIT0gdHJhaXRzX3R5cGU6OmVvZigpKQpAQCAtMjU3LDE5ICsyNTcsMTkgQEAKICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgYmFzaWNfaXN0cmVhbSYgZ2V0KGNoYXJfdHlwZSogX19zLCBzdHJlYW1zaXplIF9fbikKICAgICB7IHJldHVybiBnZXQoX19zLCBfX24sIHRoaXMtPndpZGVuKCdcbicpKTsgfQogCiAgICAgYmFzaWNfaXN0cmVhbSYgZ2V0KGNoYXJfdHlwZSogX19zLCBzdHJlYW1zaXplIF9fbiwgY2hhcl90eXBlIF9fZGxtKTsKIAotICAgIGlubGluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9JTkxJTkVfVklTSUJJTElUWQorICAgIGlubGluZSBfTElCQ1BQX0hJREVfRlJPTV9BQklfQUZURVJfVjEKICAgICBiYXNpY19pc3RyZWFtJiBnZXQoYmFzaWNfc3RyZWFtYnVmPGNoYXJfdHlwZSwgdHJhaXRzX3R5cGU+JiBfX3NiKQogICAgIHsgcmV0dXJuIGdldChfX3NiLCB0aGlzLT53aWRlbignXG4nKSk7IH0KIAogICAgIGJhc2ljX2lzdHJlYW0mIGdldChiYXNpY19zdHJlYW1idWY8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT4mIF9fc2IsIGNoYXJfdHlwZSBfX2RsbSk7CiAKLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgYmFzaWNfaXN0cmVhbSYgZ2V0bGluZShjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24pCiAgICAgeyByZXR1cm4gZ2V0bGluZShfX3MsIF9fbiwgdGhpcy0+d2lkZW4oJ1xuJykpOyB9CiAKQEAgLTUxNyw4ICs1MTcsOSBAQAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHM+CitfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCi1vcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywgX0NoYXJUKiBfX3MpCitfX2lucHV0X2Nfc3RyaW5nKGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywgX0NoYXJUKiBfX3AsIHNpemVfdCBfX24pCiB7CiAjaWZuZGVmIF9MSUJDUFBfTk9fRVhDRVBUSU9OUwogICAgIHRyeQpAQCAtNTI3LDEzICs1MjgsMTAgQEAKICAgICAgICAgdHlwZW5hbWUgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjpzZW50cnkgX19zZW4oX19pcyk7CiAgICAgICAgIGlmIChfX3NlbikKICAgICAgICAgewotICAgICAgICAgICAgc3RyZWFtc2l6ZSBfX24gPSBfX2lzLndpZHRoKCk7Ci0gICAgICAgICAgICBpZiAoX19uIDw9IDApCi0gICAgICAgICAgICAgICAgX19uID0gbnVtZXJpY19saW1pdHM8c3RyZWFtc2l6ZT46Om1heCgpIC8gc2l6ZW9mKF9DaGFyVCkgLSAxOwotICAgICAgICAgICAgc3RyZWFtc2l6ZSBfX2MgPSAwOworICAgICAgICAgICAgYXV0byBfX3MgPSBfX3A7CiAgICAgICAgICAgICBjb25zdCBjdHlwZTxfQ2hhclQ+JiBfX2N0ID0gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2lzLmdldGxvYygpKTsKICAgICAgICAgICAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omdvb2RiaXQ7Ci0gICAgICAgICAgICB3aGlsZSAoX19jIDwgX19uLTEpCisgICAgICAgICAgICB3aGlsZSAoX19zICE9IF9fcCArIChfX24tMSkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX1RyYWl0czo6aW50X3R5cGUgX19pID0gX19pcy5yZGJ1ZigpLT5zZ2V0YygpOwogICAgICAgICAgICAgICAgIGlmIChfVHJhaXRzOjplcV9pbnRfdHlwZShfX2ksIF9UcmFpdHM6OmVvZigpKSkKQEAgLTU0NSwxMiArNTQzLDExIEBACiAgICAgICAgICAgICAgICAgaWYgKF9fY3QuaXMoX19jdC5zcGFjZSwgX19jaCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICpfX3MrKyA9IF9fY2g7Ci0gICAgICAgICAgICAgICAgKytfX2M7CiAgICAgICAgICAgICAgICAgIF9faXMucmRidWYoKS0+c2J1bXBjKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAqX19zID0gX0NoYXJUKCk7CiAgICAgICAgICAgICBfX2lzLndpZHRoKDApOwotICAgICAgICAgICAgaWYgKF9fYyA9PSAwKQorICAgICAgICAgICAgaWYgKF9fcyA9PSBfX3ApCiAgICAgICAgICAgICAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKICAgICAgICAgICAgIF9faXMuc2V0c3RhdGUoX19lcnIpOwogICAgICAgICB9CkBAIC01NjQsNiArNTYxLDQ4IEBACiAgICAgcmV0dXJuIF9faXM7CiB9CiAKKyNpZiBfTElCQ1BQX1NURF9WRVIgPiAxNworCit0ZW1wbGF0ZTxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIHNpemVfdCBfTnA+CitpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgorb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsIF9DaGFyVCAoJl9fYnVmKVtfTnBdKQoreworICAgIGF1dG8gX19uID0gX05wOworICAgIGlmIChfX2lzLndpZHRoKCkgPiAwKQorICAgICAgICBfX24gPSBfVlNURDo6bWluKHNpemVfdChfX2lzLndpZHRoKCkpLCBfTnApOworICAgIHJldHVybiBfVlNURDo6X19pbnB1dF9jX3N0cmluZyhfX2lzLCBfX2J1ZiwgX19uKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgX1RyYWl0cywgc2l6ZV90IF9OcD4KK2lubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitiYXNpY19pc3RyZWFtPGNoYXIsIF9UcmFpdHM+Jgorb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPGNoYXIsIF9UcmFpdHM+JiBfX2lzLCB1bnNpZ25lZCBjaGFyICgmX19idWYpW19OcF0pCit7CisgICAgcmV0dXJuIF9faXMgPj4gKGNoYXIoJilbX05wXSlfX2J1ZjsKK30KKwordGVtcGxhdGU8Y2xhc3MgX1RyYWl0cywgc2l6ZV90IF9OcD4KK2lubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitiYXNpY19pc3RyZWFtPGNoYXIsIF9UcmFpdHM+Jgorb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPGNoYXIsIF9UcmFpdHM+JiBfX2lzLCBzaWduZWQgY2hhciAoJl9fYnVmKVtfTnBdKQoreworICAgIHJldHVybiBfX2lzID4+IChjaGFyKCYpW19OcF0pX19idWY7Cit9CisKKyNlbHNlCisKK3RlbXBsYXRlPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cz4KK2lubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCitvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywgX0NoYXJUKiBfX3MpCit7CisgICAgc3RyZWFtc2l6ZSBfX24gPSBfX2lzLndpZHRoKCk7CisgICAgaWYgKF9fbiA8PSAwKQorICAgICAgICBfX24gPSBudW1lcmljX2xpbWl0czxzdHJlYW1zaXplPjo6bWF4KCkgLyBzaXplb2YoX0NoYXJUKSAtIDE7CisgICAgcmV0dXJuIF9WU1REOjpfX2lucHV0X2Nfc3RyaW5nKF9faXMsIF9fcywgc2l6ZV90KF9fbikpOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBfVHJhaXRzPgogaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKIGJhc2ljX2lzdHJlYW08Y2hhciwgX1RyYWl0cz4mCkBAIC01ODAsNiArNjE5LDggQEAKICAgICByZXR1cm4gX19pcyA+PiAoY2hhciopX19zOwogfQogCisjZW5kaWYgIC8vIF9MSUJDUFBfU1REX1ZFUiA+IDE3CisKIHRlbXBsYXRlPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cz4KIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lzLCBfQ2hhclQmIF9fYykKQEAgLTEyMzgsNyArMTI3OSw3IEBACiAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6b2ZmX3R5cGUgb2ZmX3R5cGU7CiAKICAgICAvLyBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yCi0gICAgaW5saW5lIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFX0lOTElORV9WSVNJQklMSVRZCisgICAgaW5saW5lIF9MSUJDUFBfSElERV9GUk9NX0FCSV9BRlRFUl9WMQogICAgIGV4cGxpY2l0IGJhc2ljX2lvc3RyZWFtKGJhc2ljX3N0cmVhbWJ1ZjxjaGFyX3R5cGUsIHRyYWl0c190eXBlPiogX19zYikKICAgICAgIDogYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+KF9fc2IpCiAgICAge30KQEAgLTEyNTMsNyArMTI5NCw3IEBACiAgICAgaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICBiYXNpY19pb3N0cmVhbSYgb3BlcmF0b3I9KGJhc2ljX2lvc3RyZWFtJiYgX19yaHMpOwogI2VuZGlmCi0gICAgaW5saW5lIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFX0lOTElORV9WSVNJQklMSVRZCisgICAgaW5saW5lIF9MSUJDUFBfSElERV9GUk9NX0FCSV9BRlRFUl9WMQogICAgIHZvaWQgc3dhcChiYXNpY19pb3N0cmVhbSYgX19yaHMpCiAgICAgeyBiYXNpY19pc3RyZWFtPGNoYXJfdHlwZSwgdHJhaXRzX3R5cGU+Ojpzd2FwKF9fcmhzKTsgfQogcHVibGljOgpAQCAtMTQ2Myw3ICsxNTA0LDcgQEAKICAgICByZXR1cm4gX19pczsKIH0KIAotI2lmbmRlZiBfTElCQ1BQX0FWQUlMQUJJTElUWV9OT19TVFJFQU1TX0VYVEVSTl9URU1QTEFURQorI2lmbmRlZiBfTElCQ1BQX0RPX05PVF9BU1NVTUVfU1RSRUFNU19FWFBMSUNJVF9JTlNUQU5USUFUSU9OX0lOX0RZTElCCiBfTElCQ1BQX0VYVEVSTl9URU1QTEFURShjbGFzcyBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9UWVBFX1ZJUyBiYXNpY19pc3RyZWFtPGNoYXI+KQogX0xJQkNQUF9FWFRFUk5fVEVNUExBVEUoY2xhc3MgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfVFlQRV9WSVMgYmFzaWNfaXN0cmVhbTx3Y2hhcl90PikKIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFKGNsYXNzIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFX1RZUEVfVklTIGJhc2ljX2lvc3RyZWFtPGNoYXI+KQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2l0ZXJhdG9yIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2l0ZXJhdG9yCmluZGV4IGFlZDA1MjUuLjI0MmYxODggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9pdGVyYXRvcgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvaXRlcmF0b3IKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gaXRlcmF0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTQzOCw2ICs0MzcsMjMgQEAKIHN0cnVjdCBfTElCQ1BQX1RFTVBMQVRFX1ZJUyByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyB7fTsKIAogdGVtcGxhdGUgPGNsYXNzIF9UcD4KK3N0cnVjdCBfX2hhc19pdGVyYXRvcl90eXBlZGVmcworeworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgX190d28ge2NoYXIgX19seDsgY2hhciBfX2x4eDt9OworICAgIHRlbXBsYXRlIDxjbGFzcyBfVXA+IHN0YXRpYyBfX3R3byBfX3Rlc3QoLi4uKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1VwPiBzdGF0aWMgY2hhciBfX3Rlc3QodHlwZW5hbWUgc3RkOjpfX3ZvaWRfdDx0eXBlbmFtZSBfVXA6Oml0ZXJhdG9yX2NhdGVnb3J5Pjo6dHlwZSogPSAwLAorICAgIAkJCQkJCQkJCQl0eXBlbmFtZSBzdGQ6Ol9fdm9pZF90PHR5cGVuYW1lIF9VcDo6ZGlmZmVyZW5jZV90eXBlPjo6dHlwZSogPSAwLAorICAgIAkJCQkJCQkJCQl0eXBlbmFtZSBzdGQ6Ol9fdm9pZF90PHR5cGVuYW1lIF9VcDo6dmFsdWVfdHlwZT46OnR5cGUqID0gMCwKKyAgICAJCQkJCQkJCQkJdHlwZW5hbWUgc3RkOjpfX3ZvaWRfdDx0eXBlbmFtZSBfVXA6OnJlZmVyZW5jZT46OnR5cGUqID0gMCwKKyAgICAJCQkJCQkJCQkJdHlwZW5hbWUgc3RkOjpfX3ZvaWRfdDx0eXBlbmFtZSBfVXA6OnBvaW50ZXI+Ojp0eXBlKiA9IDAKKyAgICAJCQkJCQkJCQkJKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHNpemVvZihfX3Rlc3Q8X1RwPigwLDAsMCwwLDApKSA9PSAxOworfTsKKworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgogc3RydWN0IF9faGFzX2l0ZXJhdG9yX2NhdGVnb3J5CiB7CiBwcml2YXRlOgpAQCAtNDc5LDcgKzQ5NSw3IEBACiAKIHRlbXBsYXRlIDxjbGFzcyBfSXRlcj4KIHN0cnVjdCBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBpdGVyYXRvcl90cmFpdHMKLSAgICA6IF9faXRlcmF0b3JfdHJhaXRzPF9JdGVyLCBfX2hhc19pdGVyYXRvcl9jYXRlZ29yeTxfSXRlcj46OnZhbHVlPiB7fTsKKyAgICA6IF9faXRlcmF0b3JfdHJhaXRzPF9JdGVyLCBfX2hhc19pdGVyYXRvcl90eXBlZGVmczxfSXRlcj46OnZhbHVlPiB7fTsKIAogdGVtcGxhdGU8Y2xhc3MgX1RwPgogc3RydWN0IF9MSUJDUFBfVEVNUExBVEVfVklTIGl0ZXJhdG9yX3RyYWl0czxfVHAqPgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2xpbWl0cyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9saW1pdHMKaW5kZXggZjUzMDUwNy4uODJjMWVhMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2xpbWl0cworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbGltaXRzCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbGltaXRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC04Miw2ICs4MSw3IEBACiB0ZW1wbGF0ZTw+IGNsYXNzIG51bWVyaWNfbGltaXRzPGN2IHNpZ25lZCBjaGFyPjsKIHRlbXBsYXRlPD4gY2xhc3MgbnVtZXJpY19saW1pdHM8Y3YgdW5zaWduZWQgY2hhcj47CiB0ZW1wbGF0ZTw+IGNsYXNzIG51bWVyaWNfbGltaXRzPGN2IHdjaGFyX3Q+OwordGVtcGxhdGU8PiBjbGFzcyBudW1lcmljX2xpbWl0czxjdiBjaGFyOF90PjsgLy8gQysrMjAKIHRlbXBsYXRlPD4gY2xhc3MgbnVtZXJpY19saW1pdHM8Y3YgY2hhcjE2X3Q+OwogdGVtcGxhdGU8PiBjbGFzcyBudW1lcmljX2xpbWl0czxjdiBjaGFyMzJfdD47CiAKQEAgLTExOCw2ICsxMTgsNyBAQAogCiBfTElCQ1BQX1BVU0hfTUFDUk9TCiAjaW5jbHVkZSA8X191bmRlZl9tYWNyb3M+CisjaW5jbHVkZSA8dmVyc2lvbj4KIAogCiBfTElCQ1BQX0JFR0lOX05BTUVTUEFDRV9TVEQKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9saW1pdHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9saW1pdHMuaAppbmRleCAxODY3YjEwLi40YTIxMmY4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbGltaXRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2xpbWl0cy5oCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBsaW1pdHMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbGlzdCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9saXN0CmluZGV4IDhmMGUxZGIuLjJhZmUyYTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9saXN0CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9saXN0CkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbGlzdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xNjksNiArMTY4LDExIEBACiAgICAgdm9pZCBzd2FwKGxpc3Q8VCxBbGxvYz4mIHgsIGxpc3Q8VCxBbGxvYz4mIHkpCiAgICAgICAgICBub2V4Y2VwdChub2V4Y2VwdCh4LnN3YXAoeSkpKTsKIAordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgVT4KKyAgICB2b2lkIGVyYXNlKGxpc3Q8VCwgQWxsb2NhdG9yPiYgYywgY29uc3QgVSYgdmFsdWUpOyAgICAgICAvLyBDKysyMAordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgUHJlZGljYXRlPgorICAgIHZvaWQgZXJhc2VfaWYobGlzdDxULCBBbGxvY2F0b3I+JiBjLCBQcmVkaWNhdGUgcHJlZCk7ICAgIC8vIEMrKzIwCisKIH0gIC8vIHN0ZAogCiAqLwpAQCAtMTE3MCw3ICsxMTc0LDcgQEAKICAgICBiYXNlOjpfX2VuZF8uX19uZXh0XyA9IF9fZjsKIH0KIAotLy8gTGluayBpbiBub2RlcyBbX19mLCBfX2xdIGF0IHRoZSBmcm9udCBvZiB0aGUgbGlzdAorLy8gTGluayBpbiBub2RlcyBbX19mLCBfX2xdIGF0IHRoZSBiYWNrIG9mIHRoZSBsaXN0CiB0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CiBpbmxpbmUKIHZvaWQKQEAgLTI0NTAsNiArMjQ1NCwxOCBAQAogICAgIF9feC5zd2FwKF9feSk7CiB9CiAKKyNpZiBfTElCQ1BQX1NURF9WRVIgPiAxNwordGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jYXRvciwgY2xhc3MgX1ByZWRpY2F0ZT4KK2lubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCit2b2lkIGVyYXNlX2lmKGxpc3Q8X1RwLCBfQWxsb2NhdG9yPiYgX19jLCBfUHJlZGljYXRlIF9fcHJlZCkKK3sgX19jLnJlbW92ZV9pZihfX3ByZWQpOyB9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvY2F0b3IsIGNsYXNzIF9VcD4KK2lubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCit2b2lkIGVyYXNlKGxpc3Q8X1RwLCBfQWxsb2NhdG9yPiYgX19jLCBjb25zdCBfVXAmIF9fdikKK3sgX1ZTVEQ6OmVyYXNlX2lmKF9fYywgWyZdKGF1dG8mIF9fZWxlbSkgeyByZXR1cm4gX19lbGVtID09IF9fdjsgfSk7IH0KKyNlbmRpZgorCiBfTElCQ1BQX0VORF9OQU1FU1BBQ0VfU1RECiAKIF9MSUJDUFBfUE9QX01BQ1JPUwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2xvY2FsZSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9sb2NhbGUKaW5kZXggZTI0MDc5OS4uYzNjMDVlYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2xvY2FsZQorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbG9jYWxlCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGxvY2FsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xODcsNiArMTg2LDcgQEAKICNpbmNsdWRlIDxzdHJlYW1idWY+CiAjaW5jbHVkZSA8aXRlcmF0b3I+CiAjaW5jbHVkZSA8bGltaXRzPgorI2luY2x1ZGUgPHZlcnNpb24+CiAjaWZuZGVmIF9fQVBQTEVfXwogI2luY2x1ZGUgPGNzdGRhcmc+CiAjZW5kaWYKQEAgLTU0Niw3ICs1NDYsNyBAQAogICAgICAgICBfX2V4cCA9ICdQJzsKICAgICBlbHNlIGlmICgoX194ICYgMHg1RikgPT0gX19leHApCiAgICAgewotICAgICAgICBfX2V4cCB8PSAweDgwOworICAgICAgICBfX2V4cCB8PSAoY2hhcikgMHg4MDsKICAgICAgICAgaWYgKF9faW5fdW5pdHMpCiAgICAgICAgIHsKICAgICAgICAgICAgIF9faW5fdW5pdHMgPSBmYWxzZTsKQEAgLTcyNyw3ICs3MjcsNyBAQAogbnVtX2dldDxfQ2hhclQsIF9JbnB1dEl0ZXJhdG9yPjo6aWQ7CiAKIHRlbXBsYXRlIDxjbGFzcyBfVHA+Ci1fVHAKK19MSUJDUFBfSElEREVOIF9UcAogX19udW1fZ2V0X3NpZ25lZF9pbnRlZ3JhbChjb25zdCBjaGFyKiBfX2EsIGNvbnN0IGNoYXIqIF9fYV9lbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgaW50IF9fYmFzZSkKIHsKQEAgLTc2Miw3ICs3NjIsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgotX1RwCitfTElCQ1BQX0hJRERFTiBfVHAKIF9fbnVtX2dldF91bnNpZ25lZF9pbnRlZ3JhbChjb25zdCBjaGFyKiBfX2EsIGNvbnN0IGNoYXIqIF9fYV9lbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBpbnQgX19iYXNlKQogewpAQCAtMjQwOCw2ICsyNDA4LDIzIEBACiAgICAgc3RyaW5nX3R5cGUgX19hbmFseXplKGNoYXIgX19mbXQsIGNvbnN0IGN0eXBlPF9DaGFyVD4mKTsKIH07CiAKKyNkZWZpbmUgX0xJQkNQUF9USU1FX0dFVF9TVE9SQUdFX0VYUExJQ0lUX0lOU1RBTlRJQVRJT04oX0NoYXJUKSBcCit0ZW1wbGF0ZSA8PiBfTElCQ1BQX0ZVTkNfVklTIHRpbWVfYmFzZTo6ZGF0ZW9yZGVyIF9fdGltZV9nZXRfc3RvcmFnZTxfQ2hhclQ+OjpfX2RvX2RhdGVfb3JkZXIoKSBjb25zdDsgXAordGVtcGxhdGUgPD4gX0xJQkNQUF9GVU5DX1ZJUyBfX3RpbWVfZ2V0X3N0b3JhZ2U8X0NoYXJUPjo6X190aW1lX2dldF9zdG9yYWdlKGNvbnN0IGNoYXIqKTsgXAordGVtcGxhdGUgPD4gX0xJQkNQUF9GVU5DX1ZJUyBfX3RpbWVfZ2V0X3N0b3JhZ2U8X0NoYXJUPjo6X190aW1lX2dldF9zdG9yYWdlKGNvbnN0IHN0cmluZyYpOyBcCit0ZW1wbGF0ZSA8PiBfTElCQ1BQX0ZVTkNfVklTIHZvaWQgX190aW1lX2dldF9zdG9yYWdlPF9DaGFyVD46OmluaXQoY29uc3QgY3R5cGU8X0NoYXJUPiYpOyBcCit0ZW1wbGF0ZSA8PiBfTElCQ1BQX0ZVTkNfVklTIF9fdGltZV9nZXRfc3RvcmFnZTxfQ2hhclQ+OjpzdHJpbmdfdHlwZSBfX3RpbWVfZ2V0X3N0b3JhZ2U8X0NoYXJUPjo6X19hbmFseXplKGNoYXIsIGNvbnN0IGN0eXBlPF9DaGFyVD4mKTsgXAorZXh0ZXJuIHRlbXBsYXRlIF9MSUJDUFBfRlVOQ19WSVMgdGltZV9iYXNlOjpkYXRlb3JkZXIgX190aW1lX2dldF9zdG9yYWdlPF9DaGFyVD46Ol9fZG9fZGF0ZV9vcmRlcigpIGNvbnN0OyBcCitleHRlcm4gdGVtcGxhdGUgX0xJQkNQUF9GVU5DX1ZJUyBfX3RpbWVfZ2V0X3N0b3JhZ2U8X0NoYXJUPjo6X190aW1lX2dldF9zdG9yYWdlKGNvbnN0IGNoYXIqKTsgXAorZXh0ZXJuIHRlbXBsYXRlIF9MSUJDUFBfRlVOQ19WSVMgX190aW1lX2dldF9zdG9yYWdlPF9DaGFyVD46Ol9fdGltZV9nZXRfc3RvcmFnZShjb25zdCBzdHJpbmcmKTsgXAorZXh0ZXJuIHRlbXBsYXRlIF9MSUJDUFBfRlVOQ19WSVMgdm9pZCBfX3RpbWVfZ2V0X3N0b3JhZ2U8X0NoYXJUPjo6aW5pdChjb25zdCBjdHlwZTxfQ2hhclQ+Jik7IFwKK2V4dGVybiB0ZW1wbGF0ZSBfTElCQ1BQX0ZVTkNfVklTIF9fdGltZV9nZXRfc3RvcmFnZTxfQ2hhclQ+OjpzdHJpbmdfdHlwZSBfX3RpbWVfZ2V0X3N0b3JhZ2U8X0NoYXJUPjo6X19hbmFseXplKGNoYXIsIGNvbnN0IGN0eXBlPF9DaGFyVD4mKTsgXAorLyoqLworCitfTElCQ1BQX1RJTUVfR0VUX1NUT1JBR0VfRVhQTElDSVRfSU5TVEFOVElBVElPTihjaGFyKQorX0xJQkNQUF9USU1FX0dFVF9TVE9SQUdFX0VYUExJQ0lUX0lOU1RBTlRJQVRJT04od2NoYXJfdCkKKyN1bmRlZiBfTElCQ1BQX1RJTUVfR0VUX1NUT1JBR0VfRVhQTElDSVRfSU5TVEFOVElBVElPTgorCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfSW5wdXRJdGVyYXRvciA9IGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+CiBjbGFzcyBfTElCQ1BQX1RFTVBMQVRFX1ZJUyB0aW1lX2dldF9ieW5hbWUKICAgICA6IHB1YmxpYyB0aW1lX2dldDxfQ2hhclQsIF9JbnB1dEl0ZXJhdG9yPiwKQEAgLTM1NTAsNiArMzU2Nyw3IEBACiAgICAgICAgIF9fY2F0ID0gc3RhdGljX2Nhc3Q8Y2F0YWxvZz4oKHN0YXRpY19jYXN0PHNpemVfdD4oX19jYXQpID4+IDEpKTsKICAgICByZXR1cm4gX19jYXQ7CiAjZWxzZSAvLyAhX0xJQkNQUF9IQVNfQ0FUT1BFTgorICAgIF9MSUJDUFBfVU5VU0VEX1ZBUihfX25tKTsKICAgICByZXR1cm4gLTE7CiAjZW5kaWYgLy8gX0xJQkNQUF9IQVNfQ0FUT1BFTgogfQpAQCAtMzU3Myw2ICszNTkxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19uLCBfX24gKyBzdHJsZW4oX19uKSk7CiAgICAgcmV0dXJuIF9fdzsKICNlbHNlIC8vICFfTElCQ1BQX0hBU19DQVRPUEVOCisgICAgX0xJQkNQUF9VTlVTRURfVkFSKF9fYyk7CisgICAgX0xJQkNQUF9VTlVTRURfVkFSKF9fc2V0KTsKKyAgICBfTElCQ1BQX1VOVVNFRF9WQVIoX19tc2dpZCk7CiAgICAgcmV0dXJuIF9fZGZsdDsKICNlbmRpZiAvLyBfTElCQ1BQX0hBU19DQVRPUEVOCiB9CkBAIC0zNTg2LDYgKzM2MDcsOCBAQAogICAgICAgICBfX2MgPDw9IDE7CiAgICAgbmxfY2F0ZCBfX2NhdCA9IChubF9jYXRkKV9fYzsKICAgICBjYXRjbG9zZShfX2NhdCk7CisjZWxzZSAvLyAhX0xJQkNQUF9IQVNfQ0FUT1BFTgorICAgIF9MSUJDUFBfVU5VU0VEX1ZBUihfX2MpOwogI2VuZGlmIC8vIF9MSUJDUFBfSEFTX0NBVE9QRU4KIH0KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2xvY2FsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL2xvY2FsZS5oCmluZGV4IGNhZDdiOGIuLmEyMWVlMzggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9sb2NhbGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbG9jYWxlLmgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBsb2NhbGUuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9tYXAgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbWFwCmluZGV4IGNmZDgyODAuLmUyMWRkNWEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9tYXAKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL21hcApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBtYXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTY3LDYgKzE2NiwxNSBAQAogICAgIGl0ZXJhdG9yICBlcmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCk7CiAgICAgdm9pZCBjbGVhcigpIG5vZXhjZXB0OwogCisgICAgdGVtcGxhdGU8Y2xhc3MgQzI+CisgICAgICB2b2lkIG1lcmdlKG1hcDxLZXksIFQsIEMyLCBBbGxvY2F0b3I+JiBzb3VyY2UpOyAgICAgICAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgQzI+CisgICAgICB2b2lkIG1lcmdlKG1hcDxLZXksIFQsIEMyLCBBbGxvY2F0b3I+JiYgc291cmNlKTsgICAgICAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgQzI+CisgICAgICB2b2lkIG1lcmdlKG11bHRpbWFwPEtleSwgVCwgQzIsIEFsbG9jYXRvcj4mIHNvdXJjZSk7ICAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgQzI+CisgICAgICB2b2lkIG1lcmdlKG11bHRpbWFwPEtleSwgVCwgQzIsIEFsbG9jYXRvcj4mJiBzb3VyY2UpOyAgIC8vIEMrKzE3CisKICAgICB2b2lkIHN3YXAobWFwJiBtKQogICAgICAgICBub2V4Y2VwdChhbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcl90eXBlPjo6aXNfYWx3YXlzX2VxdWFsOjp2YWx1ZSAmJgogICAgICAgICAgICAgaXNfbm90aHJvd19zd2FwcGFibGU8a2V5X2NvbXBhcmU+Ojp2YWx1ZSk7IC8vIEMrKzE3CkBAIC0yNDUsNiArMjUzLDEwIEBACiBzd2FwKG1hcDxLZXksIFQsIENvbXBhcmUsIEFsbG9jYXRvcj4mIHgsIG1hcDxLZXksIFQsIENvbXBhcmUsIEFsbG9jYXRvcj4mIHkpCiAgICAgbm9leGNlcHQobm9leGNlcHQoeC5zd2FwKHkpKSk7CiAKK3RlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIFQsIGNsYXNzIENvbXBhcmUsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgUHJlZGljYXRlPgorICB2b2lkIGVyYXNlX2lmKG1hcDxLZXksIFQsIENvbXBhcmUsIEFsbG9jYXRvcj4mIGMsIFByZWRpY2F0ZSBwcmVkKTsgIC8vIEMrKzIwCisKKwogdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVCwgY2xhc3MgQ29tcGFyZSA9IGxlc3M8S2V5PiwKICAgICAgICAgICBjbGFzcyBBbGxvY2F0b3IgPSBhbGxvY2F0b3I8cGFpcjxjb25zdCBLZXksIFQ+Pj4KIGNsYXNzIG11bHRpbWFwCkBAIC0zNjgsNiArMzgwLDE1IEBACiAgICAgaXRlcmF0b3IgIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KTsKICAgICB2b2lkIGNsZWFyKCkgbm9leGNlcHQ7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBDMj4KKyAgICAgIHZvaWQgbWVyZ2UobXVsdGltYXA8S2V5LCBULCBDMiwgQWxsb2NhdG9yPiYgc291cmNlKTsgICAgLy8gQysrMTcKKyAgICB0ZW1wbGF0ZTxjbGFzcyBDMj4KKyAgICAgIHZvaWQgbWVyZ2UobXVsdGltYXA8S2V5LCBULCBDMiwgQWxsb2NhdG9yPiYmIHNvdXJjZSk7ICAgLy8gQysrMTcKKyAgICB0ZW1wbGF0ZTxjbGFzcyBDMj4KKyAgICAgIHZvaWQgbWVyZ2UobWFwPEtleSwgVCwgQzIsIEFsbG9jYXRvcj4mIHNvdXJjZSk7ICAgICAgICAgLy8gQysrMTcKKyAgICB0ZW1wbGF0ZTxjbGFzcyBDMj4KKyAgICAgIHZvaWQgbWVyZ2UobWFwPEtleSwgVCwgQzIsIEFsbG9jYXRvcj4mJiBzb3VyY2UpOyAgICAgICAgLy8gQysrMTcKKwogICAgIHZvaWQgc3dhcChtdWx0aW1hcCYgbSkKICAgICAgICAgbm9leGNlcHQoYWxsb2NhdG9yX3RyYWl0czxhbGxvY2F0b3JfdHlwZT46OmlzX2Fsd2F5c19lcXVhbDo6dmFsdWUgJiYKICAgICAgICAgICAgIGlzX25vdGhyb3dfc3dhcHBhYmxlPGtleV9jb21wYXJlPjo6dmFsdWUpOyAvLyBDKysxNwpAQCAtNDQ3LDYgKzQ2OCw5IEBACiAgICAgIG11bHRpbWFwPEtleSwgVCwgQ29tcGFyZSwgQWxsb2NhdG9yPiYgeSkKICAgICBub2V4Y2VwdChub2V4Y2VwdCh4LnN3YXAoeSkpKTsKIAordGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVCwgY2xhc3MgQ29tcGFyZSwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBQcmVkaWNhdGU+CisgIHZvaWQgZXJhc2VfaWYobXVsdGltYXA8S2V5LCBULCBDb21wYXJlLCBBbGxvY2F0b3I+JiBjLCBQcmVkaWNhdGUgcHJlZCk7ICAvLyBDKysyMAorCiB9ICAvLyBzdGQKIAogKi8KQEAgLTQ2OCw3ICs0OTIsOCBAQAogCiBfTElCQ1BQX0JFR0lOX05BTUVTUEFDRV9TVEQKIAotdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9DUCwgY2xhc3MgX0NvbXBhcmUsIGJvb2wgX0lzU21hbGw+Cit0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX0NQLCBjbGFzcyBfQ29tcGFyZSwKKyAgICAgICAgICBib29sID0gaXNfZW1wdHk8X0NvbXBhcmU+Ojp2YWx1ZSAmJiAhX19saWJjcHBfaXNfZmluYWw8X0NvbXBhcmU+Ojp2YWx1ZT4KIGNsYXNzIF9fbWFwX3ZhbHVlX2NvbXBhcmUKICAgICA6IHByaXZhdGUgX0NvbXBhcmUKIHsKQEAgLTg4Miw2ICs5MDcsNyBAQAogICAgIHR5cGVkZWYgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7CiAgICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlJiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3JlZmVyZW5jZTsKIAorICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKF9fZGlhZ25vc2Vfbm9uX2NvbnN0X2NvbXBhcmF0b3I8X0tleSwgX0NvbXBhcmU+KCkpLCAiIik7CiAgICAgc3RhdGljX2Fzc2VydCgoaXNfc2FtZTx0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6dmFsdWVfdHlwZSwgdmFsdWVfdHlwZT46OnZhbHVlKSwKICAgICAgICAgICAgICAgICAgICJBbGxvY2F0b3I6OnZhbHVlX3R5cGUgbXVzdCBiZSBzYW1lIHR5cGUgYXMgdmFsdWVfdHlwZSIpOwogCkBAIC05MjYsNiArOTUyLDExIEBACiAgICAgdHlwZWRlZiBfX2luc2VydF9yZXR1cm5fdHlwZTxpdGVyYXRvciwgbm9kZV90eXBlPiBpbnNlcnRfcmV0dXJuX3R5cGU7CiAjZW5kaWYKIAorICAgIHRlbXBsYXRlIDxjbGFzcyBfS2V5MiwgY2xhc3MgX1ZhbHVlMiwgY2xhc3MgX0NvbXAyLCBjbGFzcyBfQWxsb2MyPgorICAgICAgICBmcmllbmQgY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgbWFwOworICAgIHRlbXBsYXRlIDxjbGFzcyBfS2V5MiwgY2xhc3MgX1ZhbHVlMiwgY2xhc3MgX0NvbXAyLCBjbGFzcyBfQWxsb2MyPgorICAgICAgICBmcmllbmQgY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgbXVsdGltYXA7CisKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgbWFwKCkKICAgICAgICAgX05PRVhDRVBUXygKQEAgLTEzMDAsNiArMTMzMSwzOCBAQAogICAgIHsKICAgICAgICAgcmV0dXJuIF9fdHJlZV8udGVtcGxhdGUgX19ub2RlX2hhbmRsZV9leHRyYWN0PG5vZGVfdHlwZT4oX19pdC5fX2lfKTsKICAgICB9CisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db21wYXJlMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZShtYXA8a2V5X3R5cGUsIG1hcHBlZF90eXBlLCBfQ29tcGFyZTIsIGFsbG9jYXRvcl90eXBlPiYgX19zb3VyY2UpCisgICAgeworICAgICAgICBfTElCQ1BQX0FTU0VSVChfX3NvdXJjZS5nZXRfYWxsb2NhdG9yKCkgPT0gZ2V0X2FsbG9jYXRvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAibWVyZ2luZyBjb250YWluZXIgd2l0aCBpbmNvbXBhdGlibGUgYWxsb2NhdG9yIik7CisgICAgICAgIF9fdHJlZV8uX19ub2RlX2hhbmRsZV9tZXJnZV91bmlxdWUoX19zb3VyY2UuX190cmVlXyk7CisgICAgfQorICAgIHRlbXBsYXRlIDxjbGFzcyBfQ29tcGFyZTI+CisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIHZvaWQgbWVyZ2UobWFwPGtleV90eXBlLCBtYXBwZWRfdHlwZSwgX0NvbXBhcmUyLCBhbGxvY2F0b3JfdHlwZT4mJiBfX3NvdXJjZSkKKyAgICB7CisgICAgICAgIF9MSUJDUFBfQVNTRVJUKF9fc291cmNlLmdldF9hbGxvY2F0b3IoKSA9PSBnZXRfYWxsb2NhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICJtZXJnaW5nIGNvbnRhaW5lciB3aXRoIGluY29tcGF0aWJsZSBhbGxvY2F0b3IiKTsKKyAgICAgICAgX190cmVlXy5fX25vZGVfaGFuZGxlX21lcmdlX3VuaXF1ZShfX3NvdXJjZS5fX3RyZWVfKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db21wYXJlMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZShtdWx0aW1hcDxrZXlfdHlwZSwgbWFwcGVkX3R5cGUsIF9Db21wYXJlMiwgYWxsb2NhdG9yX3R5cGU+JiBfX3NvdXJjZSkKKyAgICB7CisgICAgICAgIF9MSUJDUFBfQVNTRVJUKF9fc291cmNlLmdldF9hbGxvY2F0b3IoKSA9PSBnZXRfYWxsb2NhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICJtZXJnaW5nIGNvbnRhaW5lciB3aXRoIGluY29tcGF0aWJsZSBhbGxvY2F0b3IiKTsKKyAgICAgICAgX190cmVlXy5fX25vZGVfaGFuZGxlX21lcmdlX3VuaXF1ZShfX3NvdXJjZS5fX3RyZWVfKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db21wYXJlMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZShtdWx0aW1hcDxrZXlfdHlwZSwgbWFwcGVkX3R5cGUsIF9Db21wYXJlMiwgYWxsb2NhdG9yX3R5cGU+JiYgX19zb3VyY2UpCisgICAgeworICAgICAgICBfTElCQ1BQX0FTU0VSVChfX3NvdXJjZS5nZXRfYWxsb2NhdG9yKCkgPT0gZ2V0X2FsbG9jYXRvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAibWVyZ2luZyBjb250YWluZXIgd2l0aCBpbmNvbXBhdGlibGUgYWxsb2NhdG9yIik7CisgICAgICAgIF9fdHJlZV8uX19ub2RlX2hhbmRsZV9tZXJnZV91bmlxdWUoX19zb3VyY2UuX190cmVlXyk7CisgICAgfQogI2VuZGlmCiAKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCkBAIC0xNDcyLDEwICsxNTM1LDggQEAKIHsKICAgICBfX3BhcmVudF9wb2ludGVyIF9fcGFyZW50OwogICAgIF9fbm9kZV9iYXNlX3BvaW50ZXImIF9fY2hpbGQgPSBfX3RyZWVfLl9fZmluZF9lcXVhbChfX3BhcmVudCwgX19rKTsKLSNpZm5kZWYgX0xJQkNQUF9OT19FWENFUFRJT05TCiAgICAgaWYgKF9fY2hpbGQgPT0gbnVsbHB0cikKLSAgICAgICAgdGhyb3cgb3V0X29mX3JhbmdlKCJtYXA6OmF0OiAga2V5IG5vdCBmb3VuZCIpOwotI2VuZGlmICAvLyBfTElCQ1BQX05PX0VYQ0VQVElPTlMKKyAgICAgICAgX190aHJvd19vdXRfb2ZfcmFuZ2UoIm1hcDo6YXQ6ICBrZXkgbm90IGZvdW5kIik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PF9fbm9kZV9wb2ludGVyPihfX2NoaWxkKS0+X192YWx1ZV8uX19nZXRfdmFsdWUoKS5zZWNvbmQ7CiB9CiAKQEAgLTE0ODUsMTAgKzE1NDYsOCBAQAogewogICAgIF9fcGFyZW50X3BvaW50ZXIgX19wYXJlbnQ7CiAgICAgX19ub2RlX2Jhc2VfcG9pbnRlciBfX2NoaWxkID0gX190cmVlXy5fX2ZpbmRfZXF1YWwoX19wYXJlbnQsIF9fayk7Ci0jaWZuZGVmIF9MSUJDUFBfTk9fRVhDRVBUSU9OUwogICAgIGlmIChfX2NoaWxkID09IG51bGxwdHIpCi0gICAgICAgIHRocm93IG91dF9vZl9yYW5nZSgibWFwOjphdDogIGtleSBub3QgZm91bmQiKTsKLSNlbmRpZiAgLy8gX0xJQkNQUF9OT19FWENFUFRJT05TCisgICAgICAgIF9fdGhyb3dfb3V0X29mX3JhbmdlKCJtYXA6OmF0OiAga2V5IG5vdCBmb3VuZCIpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxfX25vZGVfcG9pbnRlcj4oX19jaGlsZCktPl9fdmFsdWVfLl9fZ2V0X3ZhbHVlKCkuc2Vjb25kOwogfQogCkBAIC0xNTU3LDYgKzE2MTYsMTQgQEAKICAgICBfX3guc3dhcChfX3kpOwogfQogCisjaWYgX0xJQkNQUF9TVERfVkVSID4gMTcKK3RlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2NhdG9yLCBjbGFzcyBfUHJlZGljYXRlPgoraW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK3ZvaWQgZXJhc2VfaWYobWFwPF9LZXksIF9UcCwgX0NvbXBhcmUsIF9BbGxvY2F0b3I+JiBfX2MsIF9QcmVkaWNhdGUgX19wcmVkKQoreyBfX2xpYmNwcF9lcmFzZV9pZl9jb250YWluZXIoX19jLCBfX3ByZWQpOyB9CisjZW5kaWYKKworCiB0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZSA9IGxlc3M8X0tleT4sCiAgICAgICAgICAgY2xhc3MgX0FsbG9jYXRvciA9IGFsbG9jYXRvcjxwYWlyPGNvbnN0IF9LZXksIF9UcD4gPiA+CiBjbGFzcyBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBtdWx0aW1hcApAQCAtMTU3MSw2ICsxNjM4LDcgQEAKICAgICB0eXBlZGVmIHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwogICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9yZWZlcmVuY2U7CiAKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihfX2RpYWdub3NlX25vbl9jb25zdF9jb21wYXJhdG9yPF9LZXksIF9Db21wYXJlPigpKSwgIiIpOwogICAgIHN0YXRpY19hc3NlcnQoKGlzX3NhbWU8dHlwZW5hbWUgYWxsb2NhdG9yX3R5cGU6OnZhbHVlX3R5cGUsIHZhbHVlX3R5cGU+Ojp2YWx1ZSksCiAgICAgICAgICAgICAgICAgICAiQWxsb2NhdG9yOjp2YWx1ZV90eXBlIG11c3QgYmUgc2FtZSB0eXBlIGFzIHZhbHVlX3R5cGUiKTsKIApAQCAtMTYxNSw2ICsxNjgzLDExIEBACiAgICAgdHlwZWRlZiBfX21hcF9ub2RlX2hhbmRsZTx0eXBlbmFtZSBfX2Jhc2U6Ol9fbm9kZSwgYWxsb2NhdG9yX3R5cGU+IG5vZGVfdHlwZTsKICNlbmRpZgogCisgICAgdGVtcGxhdGUgPGNsYXNzIF9LZXkyLCBjbGFzcyBfVmFsdWUyLCBjbGFzcyBfQ29tcDIsIGNsYXNzIF9BbGxvYzI+CisgICAgICAgIGZyaWVuZCBjbGFzcyBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBtYXA7CisgICAgdGVtcGxhdGUgPGNsYXNzIF9LZXkyLCBjbGFzcyBfVmFsdWUyLCBjbGFzcyBfQ29tcDIsIGNsYXNzIF9BbGxvYzI+CisgICAgICAgIGZyaWVuZCBjbGFzcyBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBtdWx0aW1hcDsKKwogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICBtdWx0aW1hcCgpCiAgICAgICAgIF9OT0VYQ0VQVF8oCkBAIC0xODgyLDYgKzE5NTUsMzggQEAKICAgICAgICAgcmV0dXJuIF9fdHJlZV8udGVtcGxhdGUgX19ub2RlX2hhbmRsZV9leHRyYWN0PG5vZGVfdHlwZT4oCiAgICAgICAgICAgICBfX2l0Ll9faV8pOwogICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NvbXBhcmUyPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB2b2lkIG1lcmdlKG11bHRpbWFwPGtleV90eXBlLCBtYXBwZWRfdHlwZSwgX0NvbXBhcmUyLCBhbGxvY2F0b3JfdHlwZT4mIF9fc291cmNlKQorICAgIHsKKyAgICAgICAgX0xJQkNQUF9BU1NFUlQoX19zb3VyY2UuZ2V0X2FsbG9jYXRvcigpID09IGdldF9hbGxvY2F0b3IoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIm1lcmdpbmcgY29udGFpbmVyIHdpdGggaW5jb21wYXRpYmxlIGFsbG9jYXRvciIpOworICAgICAgICByZXR1cm4gX190cmVlXy5fX25vZGVfaGFuZGxlX21lcmdlX211bHRpKF9fc291cmNlLl9fdHJlZV8pOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NvbXBhcmUyPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB2b2lkIG1lcmdlKG11bHRpbWFwPGtleV90eXBlLCBtYXBwZWRfdHlwZSwgX0NvbXBhcmUyLCBhbGxvY2F0b3JfdHlwZT4mJiBfX3NvdXJjZSkKKyAgICB7CisgICAgICAgIF9MSUJDUFBfQVNTRVJUKF9fc291cmNlLmdldF9hbGxvY2F0b3IoKSA9PSBnZXRfYWxsb2NhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICJtZXJnaW5nIGNvbnRhaW5lciB3aXRoIGluY29tcGF0aWJsZSBhbGxvY2F0b3IiKTsKKyAgICAgICAgcmV0dXJuIF9fdHJlZV8uX19ub2RlX2hhbmRsZV9tZXJnZV9tdWx0aShfX3NvdXJjZS5fX3RyZWVfKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db21wYXJlMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZShtYXA8a2V5X3R5cGUsIG1hcHBlZF90eXBlLCBfQ29tcGFyZTIsIGFsbG9jYXRvcl90eXBlPiYgX19zb3VyY2UpCisgICAgeworICAgICAgICBfTElCQ1BQX0FTU0VSVChfX3NvdXJjZS5nZXRfYWxsb2NhdG9yKCkgPT0gZ2V0X2FsbG9jYXRvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAibWVyZ2luZyBjb250YWluZXIgd2l0aCBpbmNvbXBhdGlibGUgYWxsb2NhdG9yIik7CisgICAgICAgIHJldHVybiBfX3RyZWVfLl9fbm9kZV9oYW5kbGVfbWVyZ2VfbXVsdGkoX19zb3VyY2UuX190cmVlXyk7CisgICAgfQorICAgIHRlbXBsYXRlIDxjbGFzcyBfQ29tcGFyZTI+CisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIHZvaWQgbWVyZ2UobWFwPGtleV90eXBlLCBtYXBwZWRfdHlwZSwgX0NvbXBhcmUyLCBhbGxvY2F0b3JfdHlwZT4mJiBfX3NvdXJjZSkKKyAgICB7CisgICAgICAgIF9MSUJDUFBfQVNTRVJUKF9fc291cmNlLmdldF9hbGxvY2F0b3IoKSA9PSBnZXRfYWxsb2NhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICJtZXJnaW5nIGNvbnRhaW5lciB3aXRoIGluY29tcGF0aWJsZSBhbGxvY2F0b3IiKTsKKyAgICAgICAgcmV0dXJuIF9fdHJlZV8uX19ub2RlX2hhbmRsZV9tZXJnZV9tdWx0aShfX3NvdXJjZS5fX3RyZWVfKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKQEAgLTIwNTYsNiArMjE2MSwxMyBAQAogICAgIF9feC5zd2FwKF9feSk7CiB9CiAKKyNpZiBfTElCQ1BQX1NURF9WRVIgPiAxNwordGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvY2F0b3IsIGNsYXNzIF9QcmVkaWNhdGU+CitpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQordm9pZCBlcmFzZV9pZihtdWx0aW1hcDxfS2V5LCBfVHAsIF9Db21wYXJlLCBfQWxsb2NhdG9yPiYgX19jLCBfUHJlZGljYXRlIF9fcHJlZCkKK3sgX19saWJjcHBfZXJhc2VfaWZfY29udGFpbmVyKF9fYywgX19wcmVkKTsgfQorI2VuZGlmCisKIF9MSUJDUFBfRU5EX05BTUVTUEFDRV9TVEQKIAogI2VuZGlmICAvLyBfTElCQ1BQX01BUApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL21hdGguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9tYXRoLmgKaW5kZXggM2NjNzJhYS4uNmY5YTc2YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL21hdGguaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbWF0aC5oCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbWF0aC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbWVtb3J5IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL21lbW9yeQppbmRleCA2ZTI5MmE1Li4zMzk4NjI5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbWVtb3J5CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9tZW1vcnkKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbWVtb3J5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTQzLDcgKzQyLDcgQEAKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBVPiB1c2luZyByZWJpbmQgPSBVKjsKIAotICAgIHN0YXRpYyBwb2ludGVyIHBvaW50ZXJfdG8oPGRldGFpbHM+KSBub2V4Y2VwdDsKKyAgICBzdGF0aWMgcG9pbnRlciBwb2ludGVyX3RvKDxkZXRhaWxzPikgbm9leGNlcHQ7IC8vIGNvbnN0ZXhwciBpbiBDKysyMAogfTsKIAogdGVtcGxhdGUgPGNsYXNzIFQ+IGNvbnN0ZXhwciBUKiB0b19hZGRyZXNzKFQqIHApIG5vZXhjZXB0OyAvLyBDKysyMApAQCAtOTg0LDcgKzk4Myw3IEBACiBwcml2YXRlOgogICAgIHN0cnVjdCBfX25hdCB7fTsKIHB1YmxpYzoKLSAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBfTElCQ1BQX0NPTlNURVhQUl9BRlRFUl9DWFgxNwogICAgIHN0YXRpYyBwb2ludGVyIHBvaW50ZXJfdG8odHlwZW5hbWUgY29uZGl0aW9uYWw8aXNfdm9pZDxlbGVtZW50X3R5cGU+Ojp2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19uYXQsIGVsZW1lbnRfdHlwZT46OnR5cGUmIF9fcikgX05PRVhDRVBUCiAgICAgICAgIHtyZXR1cm4gX1ZTVEQ6OmFkZHJlc3NvZihfX3IpO30KQEAgLTE0NjAsMjkgKzE0NTksMjEgQEAKIAogI2Vsc2UgIC8vIF9MSUJDUFBfQ1hYMDNfTEFORwogCi0jaWZuZGVmIF9MSUJDUFBfSEFTX05PX1ZBUklBRElDUwordGVtcGxhdGUgPGNsYXNzIF9BbGxvYywgY2xhc3MgX1BvaW50ZXIsIGNsYXNzIF9UcCwgY2xhc3MgPSB2b2lkPgorc3RydWN0IF9faGFzX2NvbnN0cnVjdCA6IHN0ZDo6ZmFsc2VfdHlwZSB7fTsKIAotdGVtcGxhdGUgPGNsYXNzIF9BbGxvYywgY2xhc3MgX1BvaW50ZXIsIGNsYXNzIC4uLl9BcmdzPgotc3RydWN0IF9faGFzX2NvbnN0cnVjdAotICAgIDogZmFsc2VfdHlwZQotewotfTsKK3RlbXBsYXRlIDxjbGFzcyBfQWxsb2MsIGNsYXNzIF9Qb2ludGVyLCBjbGFzcyBfVHA+CitzdHJ1Y3QgX19oYXNfY29uc3RydWN0PF9BbGxvYywgX1BvaW50ZXIsIF9UcCwgdHlwZW5hbWUgX192b2lkX3Q8CisgICAgZGVjbHR5cGUoX1ZTVEQ6OmRlY2x2YWw8X0FsbG9jPigpLmNvbnN0cnVjdChfVlNURDo6ZGVjbHZhbDxfUG9pbnRlcj4oKSwgX1ZTVEQ6OmRlY2x2YWw8X1RwPigpKSkKKz46OnR5cGU+IDogc3RkOjp0cnVlX3R5cGUge307CiAKLSNlbHNlICAvLyBfTElCQ1BQX0hBU19OT19WQVJJQURJQ1MKLQotdGVtcGxhdGUgPGNsYXNzIF9BbGxvYywgY2xhc3MgX1BvaW50ZXIsIGNsYXNzIF9BcmdzPgotc3RydWN0IF9faGFzX2NvbnN0cnVjdAotICAgIDogZmFsc2VfdHlwZQotewotfTsKLQotI2VuZGlmICAvLyBfTElCQ1BQX0hBU19OT19WQVJJQURJQ1MKK3RlbXBsYXRlIDxjbGFzcyBfQWxsb2MsIGNsYXNzIF9Qb2ludGVyLCBjbGFzcyA9IHZvaWQ+CitzdHJ1Y3QgX19oYXNfZGVzdHJveSA6IGZhbHNlX3R5cGUge307CiAKIHRlbXBsYXRlIDxjbGFzcyBfQWxsb2MsIGNsYXNzIF9Qb2ludGVyPgotc3RydWN0IF9faGFzX2Rlc3Ryb3kKLSAgICA6IGZhbHNlX3R5cGUKLXsKLX07CitzdHJ1Y3QgX19oYXNfZGVzdHJveTxfQWxsb2MsIF9Qb2ludGVyLCB0eXBlbmFtZSBfX3ZvaWRfdDwKKyAgICBkZWNsdHlwZShfVlNURDo6ZGVjbHZhbDxfQWxsb2M+KCkuZGVzdHJveShfVlNURDo6ZGVjbHZhbDxfUG9pbnRlcj4oKSkpCis+Ojp0eXBlPiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0FsbG9jPgogc3RydWN0IF9faGFzX21heF9zaXplCkBAIC0xNTEwLDYgKzE1MDEsMTIgQEAKICAgICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvYzo6ZGlmZmVyZW5jZV90eXBlIHR5cGU7CiB9OwogCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorc3RydWN0IF9faXNfZGVmYXVsdF9hbGxvY2F0b3IgOiBmYWxzZV90eXBlIHt9OworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorc3RydWN0IF9faXNfZGVmYXVsdF9hbGxvY2F0b3I8X1ZTVEQ6OmFsbG9jYXRvcjxfVHA+ID4gOiB0cnVlX3R5cGUge307CisKIHRlbXBsYXRlIDxjbGFzcyBfQWxsb2M+CiBzdHJ1Y3QgX0xJQkNQUF9URU1QTEFURV9WSVMgYWxsb2NhdG9yX3RyYWl0cwogewpAQCAtMTU3MSw5ICsxNTY4LDEwIEBACiAgICAgICAgICAgICB9CiAgICAgdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0EwPgogICAgICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChhbGxvY2F0b3JfdHlwZSYsIF9UcCogX19wLCBjb25zdCBfQTAmIF9fYTApCisgICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChhbGxvY2F0b3JfdHlwZSYgX19hLCBfVHAqIF9fcCwgY29uc3QgX0EwJiBfX2EwKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIDo6bmV3ICgodm9pZCopX19wKSBfVHAoX19hMCk7CisgICAgICAgICAgICAgICAgX19jb25zdHJ1Y3QoX19oYXNfY29uc3RydWN0PGFsbG9jYXRvcl90eXBlLCBfVHAqLCBjb25zdCBfQTAmPigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYSwgX19wLCBfX2EwKTsKICAgICAgICAgICAgIH0KICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQTAsIGNsYXNzIF9BMT4KICAgICAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQpAQCAtMTYxMyw3ICsxNjExLDcgQEAKICAgICAgICAgdm9pZAogICAgICAgICBfX2NvbnN0cnVjdF9mb3J3YXJkKGFsbG9jYXRvcl90eXBlJiBfX2EsIF9QdHIgX19iZWdpbjEsIF9QdHIgX19lbmQxLCBfUHRyJiBfX2JlZ2luMikKICAgICAgICAgewotICAgICAgICAgICAgZm9yICg7IF9fYmVnaW4xICE9IF9fZW5kMTsgKytfX2JlZ2luMSwgKytfX2JlZ2luMikKKyAgICAgICAgICAgIGZvciAoOyBfX2JlZ2luMSAhPSBfX2VuZDE7ICsrX19iZWdpbjEsICh2b2lkKSArK19fYmVnaW4yKQogICAgICAgICAgICAgICAgIGNvbnN0cnVjdChfX2EsIF9WU1REOjpfX3RvX3Jhd19wb2ludGVyKF9fYmVnaW4yKSwgX1ZTVEQ6Om1vdmVfaWZfbm9leGNlcHQoKl9fYmVnaW4xKSk7CiAgICAgICAgIH0KIApAQCAtMTYyMiw3ICsxNjIwLDcgQEAKICAgICAgICAgc3RhdGljCiAgICAgICAgIHR5cGVuYW1lIGVuYWJsZV9pZgogICAgICAgICA8Ci0gICAgICAgICAgICAoaXNfc2FtZTxhbGxvY2F0b3JfdHlwZSwgYWxsb2NhdG9yPF9UcD4gPjo6dmFsdWUKKyAgICAgICAgICAgIChfX2lzX2RlZmF1bHRfYWxsb2NhdG9yPGFsbG9jYXRvcl90eXBlPjo6dmFsdWUKICAgICAgICAgICAgICAgICB8fCAhX19oYXNfY29uc3RydWN0PGFsbG9jYXRvcl90eXBlLCBfVHAqLCBfVHA+Ojp2YWx1ZSkgJiYKICAgICAgICAgICAgICBpc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPF9UcD46OnZhbHVlLAogICAgICAgICAgICAgdm9pZApAQCAtMTY0NywyMyArMTY0NSwyNSBAQAogICAgICAgICAgICAgICAgIGNvbnN0cnVjdChfX2EsIF9WU1REOjpfX3RvX3Jhd19wb2ludGVyKF9fYmVnaW4yKSwgKl9fYmVnaW4xKTsKICAgICAgICAgfQogCi0gICAgdGVtcGxhdGUgPGNsYXNzIF9UcD4KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1NvdXJjZVRwLCBjbGFzcyBfRGVzdFRwLAorICAgICAgICAgICAgICBjbGFzcyBfUmF3U291cmNlVHAgPSB0eXBlbmFtZSByZW1vdmVfY29uc3Q8X1NvdXJjZVRwPjo6dHlwZSwKKyAgICAgICAgICAgICAgY2xhc3MgX1Jhd0Rlc3RUcCA9IHR5cGVuYW1lIHJlbW92ZV9jb25zdDxfRGVzdFRwPjo6dHlwZT4KICAgICAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgICAgICBzdGF0aWMKICAgICAgICAgdHlwZW5hbWUgZW5hYmxlX2lmCiAgICAgICAgIDwKLSAgICAgICAgICAgIChpc19zYW1lPGFsbG9jYXRvcl90eXBlLCBhbGxvY2F0b3I8X1RwPiA+Ojp2YWx1ZQotICAgICAgICAgICAgICAgIHx8ICFfX2hhc19jb25zdHJ1Y3Q8YWxsb2NhdG9yX3R5cGUsIF9UcCosIF9UcD46OnZhbHVlKSAmJgotICAgICAgICAgICAgIGlzX3RyaXZpYWxseV9tb3ZlX2NvbnN0cnVjdGlibGU8X1RwPjo6dmFsdWUsCisgICAgICAgICAgICBpc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPF9EZXN0VHA+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgaXNfc2FtZTxfUmF3U291cmNlVHAsIF9SYXdEZXN0VHA+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgKF9faXNfZGVmYXVsdF9hbGxvY2F0b3I8YWxsb2NhdG9yX3R5cGU+Ojp2YWx1ZSB8fAorICAgICAgICAgICAgICFfX2hhc19jb25zdHJ1Y3Q8YWxsb2NhdG9yX3R5cGUsIF9EZXN0VHAqLCBfU291cmNlVHAmPjo6dmFsdWUpLAogICAgICAgICAgICAgdm9pZAogICAgICAgICA+Ojp0eXBlCi0gICAgICAgIF9fY29uc3RydWN0X3JhbmdlX2ZvcndhcmQoYWxsb2NhdG9yX3R5cGUmLCBfVHAqIF9fYmVnaW4xLCBfVHAqIF9fZW5kMSwgX1RwKiYgX19iZWdpbjIpCisgICAgICAgIF9fY29uc3RydWN0X3JhbmdlX2ZvcndhcmQoYWxsb2NhdG9yX3R5cGUmLCBfU291cmNlVHAqIF9fYmVnaW4xLCBfU291cmNlVHAqIF9fZW5kMSwgX0Rlc3RUcComIF9fYmVnaW4yKQogICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jb25zdDxfVHA+Ojp0eXBlIF9WcDsKICAgICAgICAgICAgIHB0cmRpZmZfdCBfTnAgPSBfX2VuZDEgLSBfX2JlZ2luMTsKICAgICAgICAgICAgIGlmIChfTnAgPiAwKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIF9WU1REOjptZW1jcHkoY29uc3RfY2FzdDxfVnAqPihfX2JlZ2luMiksIF9fYmVnaW4xLCBfTnAgKiBzaXplb2YoX1RwKSk7CisgICAgICAgICAgICAgICAgX1ZTVEQ6Om1lbWNweShjb25zdF9jYXN0PF9SYXdEZXN0VHAqPihfX2JlZ2luMiksIF9fYmVnaW4xLCBfTnAgKiBzaXplb2YoX0Rlc3RUcCkpOwogICAgICAgICAgICAgICAgIF9fYmVnaW4yICs9IF9OcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTY4Niw3ICsxNjg2LDcgQEAKICAgICAgICAgc3RhdGljCiAgICAgICAgIHR5cGVuYW1lIGVuYWJsZV9pZgogICAgICAgICA8Ci0gICAgICAgICAgICAoaXNfc2FtZTxhbGxvY2F0b3JfdHlwZSwgYWxsb2NhdG9yPF9UcD4gPjo6dmFsdWUKKyAgICAgICAgICAgIChfX2lzX2RlZmF1bHRfYWxsb2NhdG9yPGFsbG9jYXRvcl90eXBlPjo6dmFsdWUKICAgICAgICAgICAgICAgICB8fCAhX19oYXNfY29uc3RydWN0PGFsbG9jYXRvcl90eXBlLCBfVHAqLCBfVHA+Ojp2YWx1ZSkgJiYKICAgICAgICAgICAgICBpc190cml2aWFsbHlfbW92ZV9jb25zdHJ1Y3RpYmxlPF9UcD46OnZhbHVlLAogICAgICAgICAgICAgdm9pZApAQCAtMTcyMSw2ICsxNzIxLDE5IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgOjpuZXcgKCh2b2lkKilfX3ApIF9UcChfVlNURDo6Zm9yd2FyZDxfQXJncz4oX19hcmdzKS4uLik7CiAgICAgICAgICAgICB9CisjZWxzZSAgLy8gX0xJQkNQUF9IQVNfTk9fVkFSSUFESUNTCisgICAgdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0EwPgorICAgICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgICAgIHN0YXRpYyB2b2lkIF9fY29uc3RydWN0KHRydWVfdHlwZSwgYWxsb2NhdG9yX3R5cGUmIF9fYSwgX1RwKiBfX3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9BMCYgX19hMCkKKyAgICAgICAgICAgIHtfX2EuY29uc3RydWN0KF9fcCwgX19hMCk7fQorICAgIHRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BMD4KKyAgICAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgICAgICBzdGF0aWMgdm9pZCBfX2NvbnN0cnVjdChmYWxzZV90eXBlLCBhbGxvY2F0b3JfdHlwZSYsIF9UcCogX19wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfQTAmIF9fYTApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgOjpuZXcgKCh2b2lkKilfX3ApIF9UcChfX2EwKTsKKyAgICAgICAgICAgIH0KICNlbmRpZiAgLy8gX0xJQkNQUF9IQVNfTk9fVkFSSUFESUNTCiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpAQCAtMTc5NywxMCArMTgxMCwxMCBAQAogICAgICAgICBpZiAoX19uID4gbWF4X3NpemUoKSkKICAgICAgICAgICAgIF9fdGhyb3dfbGVuZ3RoX2Vycm9yKCJhbGxvY2F0b3I8VD46OmFsbG9jYXRlKHNpemVfdCBuKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgJ24nIGV4Y2VlZHMgbWF4aW11bSBzdXBwb3J0ZWQgc2l6ZSIpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cG9pbnRlcj4oX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZihfVHApLCBfX2FsaWdub2YoX1RwKSkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cG9pbnRlcj4oX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZihfVHApLCBfTElCQ1BQX0FMSUdOT0YoX1RwKSkpOwogICAgICAgICB9Ci0gICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSB2b2lkIGRlYWxsb2NhdGUocG9pbnRlciBfX3AsIHNpemVfdHlwZSkgX05PRVhDRVBUCi0gICAgICAgIHtfVlNURDo6X19saWJjcHBfZGVhbGxvY2F0ZSgodm9pZCopX19wLCBfX2FsaWdub2YoX1RwKSk7fQorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgdm9pZCBkZWFsbG9jYXRlKHBvaW50ZXIgX19wLCBzaXplX3R5cGUgX19uKSBfTk9FWENFUFQKKyAgICAgICAge19WU1REOjpfX2xpYmNwcF9kZWFsbG9jYXRlKCh2b2lkKilfX3AsIF9fbiAqIHNpemVvZihfVHApLCBfTElCQ1BQX0FMSUdOT0YoX1RwKSk7fQogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgX05PRVhDRVBUCiAgICAgICAgIHtyZXR1cm4gc2l6ZV90eXBlKH4wKSAvIHNpemVvZihfVHApO30KICNpZiAhZGVmaW5lZChfTElCQ1BQX0hBU19OT19SVkFMVUVfUkVGRVJFTkNFUykgJiYgIWRlZmluZWQoX0xJQkNQUF9IQVNfTk9fVkFSSUFESUNTKQpAQCAtMTg5OCwxMCArMTkxMSwxMCBAQAogICAgICAgICBpZiAoX19uID4gbWF4X3NpemUoKSkKICAgICAgICAgICAgIF9fdGhyb3dfbGVuZ3RoX2Vycm9yKCJhbGxvY2F0b3I8Y29uc3QgVD46OmFsbG9jYXRlKHNpemVfdCBuKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgJ24nIGV4Y2VlZHMgbWF4aW11bSBzdXBwb3J0ZWQgc2l6ZSIpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cG9pbnRlcj4oX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZihfVHApLCBfX2FsaWdub2YoX1RwKSkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8cG9pbnRlcj4oX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZihfVHApLCBfTElCQ1BQX0FMSUdOT0YoX1RwKSkpOwogICAgIH0KLSAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHZvaWQgZGVhbGxvY2F0ZShwb2ludGVyIF9fcCwgc2l6ZV90eXBlKSBfTk9FWENFUFQKLSAgICAgICAge19WU1REOjpfX2xpYmNwcF9kZWFsbG9jYXRlKCh2b2lkKikgY29uc3RfY2FzdDxfVHAgKj4oX19wKSwgX19hbGlnbm9mKF9UcCkpO30KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHZvaWQgZGVhbGxvY2F0ZShwb2ludGVyIF9fcCwgc2l6ZV90eXBlIF9fbikgX05PRVhDRVBUCisgICAgICAgIHtfVlNURDo6X19saWJjcHBfZGVhbGxvY2F0ZSgodm9pZCopIGNvbnN0X2Nhc3Q8X1RwICo+KF9fcCksIF9fbiAqIHNpemVvZihfVHApLCBfTElCQ1BQX0FMSUdOT0YoX1RwKSk7fQogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgX05PRVhDRVBUCiAgICAgICAgIHtyZXR1cm4gc2l6ZV90eXBlKH4wKSAvIHNpemVvZihfVHApO30KICNpZiAhZGVmaW5lZChfTElCQ1BQX0hBU19OT19SVkFMVUVfUkVGRVJFTkNFUykgJiYgIWRlZmluZWQoX0xJQkNQUF9IQVNfTk9fVkFSSUFESUNTKQpAQCAtMjAxNyw3ICsyMDMwLDcgQEAKICAgICB3aGlsZSAoX19uID4gMCkKICAgICB7CiAjaWYgIWRlZmluZWQoX0xJQkNQUF9IQVNfTk9fQUxJR05FRF9BTExPQ0FUSU9OKQotICAgIGlmIChfX2lzX292ZXJhbGlnbmVkX2Zvcl9uZXcoX19hbGlnbm9mKF9UcCkpKQorICAgIGlmIChfX2lzX292ZXJhbGlnbmVkX2Zvcl9uZXcoX0xJQkNQUF9BTElHTk9GKF9UcCkpKQogICAgICAgICB7CiAgICAgICAgICAgICBzdGQ6OmFsaWduX3ZhbF90IF9fYWwgPQogICAgICAgICAgICAgICAgIHN0ZDo6YWxpZ25fdmFsX3Qoc3RkOjphbGlnbm1lbnRfb2Y8X1RwPjo6dmFsdWUpOwpAQCAtMjAyOCw3ICsyMDQxLDcgQEAKICAgICAgICAgICAgICAgICBfX24gKiBzaXplb2YoX1RwKSwgbm90aHJvdykpOwogICAgICAgICB9CiAjZWxzZQotICAgIGlmIChfX2lzX292ZXJhbGlnbmVkX2Zvcl9uZXcoX19hbGlnbm9mKF9UcCkpKQorICAgIGlmIChfX2lzX292ZXJhbGlnbmVkX2Zvcl9uZXcoX0xJQkNQUF9BTElHTk9GKF9UcCkpKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBTaW5jZSBhbGlnbmVkIG9wZXJhdG9yIG5ldyBpcyB1bmF2YWlsYWJsZSwgcmV0dXJuIGFuIGVtcHR5CiAgICAgICAgICAgICAvLyBidWZmZXIgcmF0aGVyIHRoYW4gb25lIHdpdGggaW52YWxpZCBhbGlnbm1lbnQuCkBAIC0yMDUyLDcgKzIwNjUsNyBAQAogaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKIHZvaWQgcmV0dXJuX3RlbXBvcmFyeV9idWZmZXIoX1RwKiBfX3ApIF9OT0VYQ0VQVAogewotICBfVlNURDo6X19saWJjcHBfZGVhbGxvY2F0ZSgodm9pZCopX19wLCBfX2FsaWdub2YoX1RwKSk7CisgIF9WU1REOjpfX2xpYmNwcF9kZWFsbG9jYXRlX3Vuc2l6ZWQoKHZvaWQqKV9fcCwgX0xJQkNQUF9BTElHTk9GKF9UcCkpOwogfQogCiAjaWYgX0xJQkNQUF9TVERfVkVSIDw9IDE0IHx8IGRlZmluZWQoX0xJQkNQUF9FTkFCTEVfQ1hYMTdfUkVNT1ZFRF9BVVRPX1BUUikKQEAgLTU2MjgsNyArNTY0MSw3IEBACiBzdHJ1Y3QgX190ZW1wX3ZhbHVlIHsKICAgICB0eXBlZGVmIGFsbG9jYXRvcl90cmFpdHM8X0FsbG9jPiBfVHJhaXRzOwogCi0gICAgdHlwZW5hbWUgYWxpZ25lZF9zdG9yYWdlPHNpemVvZihfVHApLCBhbGlnbm9mKF9UcCk+Ojp0eXBlIF9fdjsKKyAgICB0eXBlbmFtZSBhbGlnbmVkX3N0b3JhZ2U8c2l6ZW9mKF9UcCksIF9MSUJDUFBfQUxJR05PRihfVHApPjo6dHlwZSBfX3Y7CiAgICAgX0FsbG9jICZfX2E7CiAKICAgICBfVHAgKl9fYWRkcigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8X1RwICo+KGFkZHJlc3NvZihfX3YpKTsgfQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL21vZHVsZS5tb2R1bGVtYXAgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbW9kdWxlLm1vZHVsZW1hcAppbmRleCA2ODFjODBiLi5iYmZlOTBlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbW9kdWxlLm1vZHVsZW1hcAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbW9kdWxlLm1vZHVsZW1hcApAQCAtMjQsNyArMjQsMTAgQEAKICAgICAgIGhlYWRlciAiZXJybm8uaCIKICAgICAgIGV4cG9ydCAqCiAgICAgfQotICAgIC8vIDxmZW52Lmg+IHByb3ZpZGVkIGJ5IEMgbGlicmFyeS4KKyAgICBtb2R1bGUgZmVudl9oIHsKKyAgICAgIGhlYWRlciAiZmVudi5oIgorICAgICAgZXhwb3J0ICoKKyAgICB9CiAgICAgLy8gPGZsb2F0Lmg+IHByb3ZpZGVkIGJ5IGNvbXBpbGVyIG9yIEMgbGlicmFyeS4KICAgICBtb2R1bGUgaW50dHlwZXNfaCB7CiAgICAgICBoZWFkZXIgImludHR5cGVzLmgiCkBAIC01MjQsMTAgKzUyNyw2IEBACiAgICAgICBoZWFkZXIgImV4cGVyaW1lbnRhbC9kZXF1ZSIKICAgICAgIGV4cG9ydCAqCiAgICAgfQotICAgIG1vZHVsZSBkeW5hcnJheSB7Ci0gICAgICBoZWFkZXIgImV4cGVyaW1lbnRhbC9keW5hcnJheSIKLSAgICAgIGV4cG9ydCAqCi0gICAgfQogICAgIG1vZHVsZSBmaWxlc3lzdGVtIHsKICAgICAgIGhlYWRlciAiZXhwZXJpbWVudGFsL2ZpbGVzeXN0ZW0iCiAgICAgICBleHBvcnQgKgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL211dGV4IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL211dGV4CmluZGV4IDZkMmRlMmIuLjk4YmQ1ODEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9tdXRleAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbXV0ZXgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIG11dGV4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9uZXcgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbmV3CmluZGV4IDdjMzA3NmMuLmI1ZThmYjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9uZXcKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL25ldwpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBuZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMjcsMTIgKzI2LDYgQEAKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQoKSBjb25zdCBub2V4Y2VwdDsKIH07CiAKLWNsYXNzIGJhZF9hcnJheV9sZW5ndGggOiBwdWJsaWMgYmFkX2FsbG9jIC8vIEZJWE1FOiBOb3QgcGFydCBvZiBDKysKLXsKLXB1YmxpYzoKLSAgICBiYWRfYXJyYXlfbGVuZ3RoKCkgbm9leGNlcHQ7Ci19OwotCiBjbGFzcyBiYWRfYXJyYXlfbmV3X2xlbmd0aCA6IHB1YmxpYyBiYWRfYWxsb2MgLy8gQysrMTQKIHsKIHB1YmxpYzoKQEAgLTEwNCwxNiArOTcsMjMgQEAKICNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKICNlbmRpZgogCi0jaWYgIShkZWZpbmVkKF9MSUJDUFBfQlVJTERJTkdfTElCUkFSWSkgfHwgX0xJQkNQUF9TVERfVkVSID49IDE0IHx8IFwKLSAgICAoZGVmaW5lZChfX2NwcF9zaXplZF9kZWFsbG9jYXRpb24pICYmIF9fY3BwX3NpemVkX2RlYWxsb2NhdGlvbiA+PSAyMDEzMDkpKQorI2lmICFkZWZpbmVkKF9fY3BwX3NpemVkX2RlYWxsb2NhdGlvbikgfHwgX19jcHBfc2l6ZWRfZGVhbGxvY2F0aW9uICA8IDIwMTMwOUwKKyNkZWZpbmUgX0xJQkNQUF9IQVNfTk9fTEFOR1VBR0VfU0laRURfREVBTExPQ0FUSU9OCisjZW5kaWYKKworI2lmICFkZWZpbmVkKF9MSUJDUFBfQlVJTERJTkdfTElCUkFSWSkgJiYgX0xJQkNQUF9TVERfVkVSIDwgMTQgJiYgXAorICAgIGRlZmluZWQoX0xJQkNQUF9IQVNfTk9fTEFOR1VBR0VfU0laRURfREVBTExPQ0FUSU9OKQorIyBkZWZpbmUgX0xJQkNQUF9IQVNfTk9fTElCUkFSWV9TSVpFRF9ERUFMTE9DQVRJT04KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfTElCQ1BQX0hBU19OT19MSUJSQVJZX1NJWkVEX0RFQUxMT0NBVElPTikgfHwgXAorICAgIGRlZmluZWQoX0xJQkNQUF9IQVNfTk9fTEFOR1VBR0VfU0laRURfREVBTExPQ0FUSU9OKQogIyBkZWZpbmUgX0xJQkNQUF9IQVNfTk9fU0laRURfREVBTExPQ0FUSU9OCiAjZW5kaWYKIAogI2lmICFfX2hhc19idWlsdGluKF9fYnVpbHRpbl9vcGVyYXRvcl9uZXcpIHx8IFwKLSAgIF9faGFzX2J1aWx0aW4oX19idWlsdGluX29wZXJhdG9yX25ldykgPCAyMDE4MDJMIHx8IFwKLSAgIGRlZmluZWQoX0xJQkNQUF9IQVNfTk9fQUxJR05FRF9BTExPQ0FUSU9OKSB8fCBcCi0gICAhZGVmaW5lZChfX2NwcF9hbGlnbmVkX25ldykgfHwgX19jcHBfYWxpZ25lZF9uZXcgPCAyMDE2MDYKLSNkZWZpbmUgX0xJQkNQUF9IQVNfTk9fQlVJTFRJTl9BTElHTkVEX09QRVJBVE9SX05FV19ERUxFVEUKKyAgIF9faGFzX2J1aWx0aW4oX19idWlsdGluX29wZXJhdG9yX25ldykgPCAyMDE4MDJMCisjZGVmaW5lIF9MSUJDUFBfSEFTX05PX0JVSUxUSU5fT1ZFUkxPQURFRF9PUEVSQVRPUl9ORVdfREVMRVRFCiAjZW5kaWYKIAogbmFtZXNwYWNlIHN0ZCAgLy8gcHVycG9zZWZ1bGx5IG5vdCB1c2luZyB2ZXJzaW9uaW5nIG5hbWVzcGFjZQpAQCAtMTQ5LDMzICsxNDksMTQgQEAKIAogX0xJQkNQUF9OT1JFVFVSTiBfTElCQ1BQX0ZVTkNfVklTIHZvaWQgX190aHJvd19iYWRfYWxsb2MoKTsgIC8vIG5vdCBpbiBDKysgc3BlYwogCi0jaWYgZGVmaW5lZChfTElCQ1BQX0JVSUxESU5HX0xJQlJBUlkpIHx8IChfTElCQ1BQX1NURF9WRVIgPiAxMSkKLQotY2xhc3MgX0xJQkNQUF9FWENFUFRJT05fQUJJIF9MSUJDUFBfQVZBSUxBQklMSVRZX0JBRF9BUlJBWV9MRU5HVEgKLSAgICBiYWRfYXJyYXlfbGVuZ3RoIDogcHVibGljIGJhZF9hbGxvYyB7Ci1wdWJsaWM6Ci0gICAgYmFkX2FycmF5X2xlbmd0aCgpIF9OT0VYQ0VQVDsKLSAgICB2aXJ0dWFsIH5iYWRfYXJyYXlfbGVuZ3RoKCkgX05PRVhDRVBUOwotICAgIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IF9OT0VYQ0VQVDsKLX07Ci0KLSNkZWZpbmUgX0xJQkNQUF9CQURfQVJSQVlfTEVOR1RIX0RFRklORUQKLQotI2VuZGlmICAvLyBkZWZpbmVkKF9MSUJDUFBfQlVJTERJTkdfTElCUkFSWSkgfHwgKF9MSUJDUFBfU1REX1ZFUiA+IDExKQotCi0jaWYgIWRlZmluZWQoX0xJQkNQUF9BQklfTUlDUk9TT0ZUKSB8fCBkZWZpbmVkKF9MSUJDUFBfTk9fVkNSVU5USU1FKQotI2lmICFkZWZpbmVkKF9MSUJDUFBfSEFTX05PX0FMSUdORURfQUxMT0NBVElPTikgfHwgX0xJQkNQUF9TVERfVkVSID4gMTQKKyNpZiAhZGVmaW5lZChfTElCQ1BQX0hBU19OT19MSUJSQVJZX0FMSUdORURfQUxMT0NBVElPTikgJiYgXAorICAgICFkZWZpbmVkKF9MSUJDUFBfREVGRVJfTkVXX1RPX1ZDUlVOVElNRSkKICNpZm5kZWYgX0xJQkNQUF9DWFgwM19MQU5HCiBlbnVtIGNsYXNzIF9MSUJDUFBfRU5VTV9WSVMgYWxpZ25fdmFsX3QgOiBzaXplX3QgeyB9OwogI2Vsc2UKIGVudW0gYWxpZ25fdmFsX3QgeyBfX3plcm8gPSAwLCBfX21heCA9IChzaXplX3QpLTEgfTsKICNlbmRpZgogI2VuZGlmCi0jZWxpZiAhZGVmaW5lZChfX2NwcF9hbGlnbmVkX25ldykKLS8vIFdlJ3JlIGRlZmVyaW5nIHRvIE1pY3Jvc29mdCdzIFNUTCB0byBwcm92aWRlIGFsaWduZWQgbmV3IGV0IGFsLiBXZSBkb24ndAotLy8gaGF2ZSBpdCB1bmxlc3MgdGhlIGxhbmd1YWdlIGZlYXR1cmUgdGVzdCBtYWNybyBpcyBkZWZpbmVkLgotI2RlZmluZSBfTElCQ1BQX0hBU19OT19BTElHTkVEX0FMTE9DQVRJT04KLSNlbmRpZgogCiB9ICAvLyBzdGQKIApAQCAtMTg1LDEzICsxNjYsMTMgQEAKICNkZWZpbmUgX1RIUk9XX0JBRF9BTExPQwogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChfTElCQ1BQX0FCSV9NSUNST1NPRlQpIHx8IGRlZmluZWQoX0xJQkNQUF9OT19WQ1JVTlRJTUUpCisjaWYgIWRlZmluZWQoX0xJQkNQUF9ERUZFUl9ORVdfVE9fVkNSVU5USU1FKQogCiBfTElCQ1BQX05PRElTQ0FSRF9BRlRFUl9DWFgxNyBfTElCQ1BQX09WRVJSSURBQkxFX0ZVTkNfVklTIHZvaWQqIG9wZXJhdG9yIG5ldyhzdGQ6OnNpemVfdCBfX3N6KSBfVEhST1dfQkFEX0FMTE9DOwogX0xJQkNQUF9OT0RJU0NBUkRfQUZURVJfQ1hYMTcgX0xJQkNQUF9PVkVSUklEQUJMRV9GVU5DX1ZJUyB2b2lkKiBvcGVyYXRvciBuZXcoc3RkOjpzaXplX3QgX19zeiwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSBfTk9FWENFUFQgX05PQUxJQVM7CiBfTElCQ1BQX09WRVJSSURBQkxFX0ZVTkNfVklTIHZvaWQgIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBfX3ApIF9OT0VYQ0VQVDsKIF9MSUJDUFBfT1ZFUlJJREFCTEVfRlVOQ19WSVMgdm9pZCAgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIF9fcCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSBfTk9FWENFUFQ7Ci0jaWZuZGVmIF9MSUJDUFBfSEFTX05PX1NJWkVEX0RFQUxMT0NBVElPTgorI2lmbmRlZiBfTElCQ1BQX0hBU19OT19MSUJSQVJZX1NJWkVEX0RFQUxMT0NBVElPTgogX0xJQkNQUF9PVkVSUklEQUJMRV9GVU5DX1ZJUyBfTElCQ1BQX0FWQUlMQUJJTElUWV9TSVpFRF9ORVdfREVMRVRFIHZvaWQgIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBfX3AsIHN0ZDo6c2l6ZV90IF9fc3opIF9OT0VYQ0VQVDsKICNlbmRpZgogCkBAIC0xOTksMTYgKzE4MCwxNiBAQAogX0xJQkNQUF9OT0RJU0NBUkRfQUZURVJfQ1hYMTcgX0xJQkNQUF9PVkVSUklEQUJMRV9GVU5DX1ZJUyB2b2lkKiBvcGVyYXRvciBuZXdbXShzdGQ6OnNpemVfdCBfX3N6LCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpIF9OT0VYQ0VQVCBfTk9BTElBUzsKIF9MSUJDUFBfT1ZFUlJJREFCTEVfRlVOQ19WSVMgdm9pZCAgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogX19wKSBfTk9FWENFUFQ7CiBfTElCQ1BQX09WRVJSSURBQkxFX0ZVTkNfVklTIHZvaWQgIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIF9fcCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSBfTk9FWENFUFQ7Ci0jaWZuZGVmIF9MSUJDUFBfSEFTX05PX1NJWkVEX0RFQUxMT0NBVElPTgorI2lmbmRlZiBfTElCQ1BQX0hBU19OT19MSUJSQVJZX1NJWkVEX0RFQUxMT0NBVElPTgogX0xJQkNQUF9PVkVSUklEQUJMRV9GVU5DX1ZJUyBfTElCQ1BQX0FWQUlMQUJJTElUWV9TSVpFRF9ORVdfREVMRVRFIHZvaWQgIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIF9fcCwgc3RkOjpzaXplX3QgX19zeikgX05PRVhDRVBUOwogI2VuZGlmCiAKLSNpZm5kZWYgX0xJQkNQUF9IQVNfTk9fQUxJR05FRF9BTExPQ0FUSU9OCisjaWZuZGVmIF9MSUJDUFBfSEFTX05PX0xJQlJBUllfQUxJR05FRF9BTExPQ0FUSU9OCiBfTElCQ1BQX05PRElTQ0FSRF9BRlRFUl9DWFgxNyBfTElCQ1BQX09WRVJSSURBQkxFX0ZVTkNfVklTIHZvaWQqIG9wZXJhdG9yIG5ldyhzdGQ6OnNpemVfdCBfX3N6LCBzdGQ6OmFsaWduX3ZhbF90KSBfVEhST1dfQkFEX0FMTE9DOwogX0xJQkNQUF9OT0RJU0NBUkRfQUZURVJfQ1hYMTcgX0xJQkNQUF9PVkVSUklEQUJMRV9GVU5DX1ZJUyB2b2lkKiBvcGVyYXRvciBuZXcoc3RkOjpzaXplX3QgX19zeiwgc3RkOjphbGlnbl92YWxfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSBfTk9FWENFUFQgX05PQUxJQVM7CiBfTElCQ1BQX09WRVJSSURBQkxFX0ZVTkNfVklTIHZvaWQgIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBfX3AsIHN0ZDo6YWxpZ25fdmFsX3QpIF9OT0VYQ0VQVDsKIF9MSUJDUFBfT1ZFUlJJREFCTEVfRlVOQ19WSVMgdm9pZCAgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIF9fcCwgc3RkOjphbGlnbl92YWxfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSBfTk9FWENFUFQ7Ci0jaWZuZGVmIF9MSUJDUFBfSEFTX05PX1NJWkVEX0RFQUxMT0NBVElPTgorI2lmbmRlZiBfTElCQ1BQX0hBU19OT19MSUJSQVJZX1NJWkVEX0RFQUxMT0NBVElPTgogX0xJQkNQUF9PVkVSUklEQUJMRV9GVU5DX1ZJUyBfTElCQ1BQX0FWQUlMQUJJTElUWV9TSVpFRF9ORVdfREVMRVRFIHZvaWQgIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiBfX3AsIHN0ZDo6c2l6ZV90IF9fc3osIHN0ZDo6YWxpZ25fdmFsX3QpIF9OT0VYQ0VQVDsKICNlbmRpZgogCkBAIC0yMTYsNyArMTk3LDcgQEAKIF9MSUJDUFBfTk9ESVNDQVJEX0FGVEVSX0NYWDE3IF9MSUJDUFBfT1ZFUlJJREFCTEVfRlVOQ19WSVMgdm9pZCogb3BlcmF0b3IgbmV3W10oc3RkOjpzaXplX3QgX19zeiwgc3RkOjphbGlnbl92YWxfdCwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSBfTk9FWENFUFQgX05PQUxJQVM7CiBfTElCQ1BQX09WRVJSSURBQkxFX0ZVTkNfVklTIHZvaWQgIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqIF9fcCwgc3RkOjphbGlnbl92YWxfdCkgX05PRVhDRVBUOwogX0xJQkNQUF9PVkVSUklEQUJMRV9GVU5DX1ZJUyB2b2lkICBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBfX3AsIHN0ZDo6YWxpZ25fdmFsX3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgX05PRVhDRVBUOwotI2lmbmRlZiBfTElCQ1BQX0hBU19OT19TSVpFRF9ERUFMTE9DQVRJT04KKyNpZm5kZWYgX0xJQkNQUF9IQVNfTk9fTElCUkFSWV9TSVpFRF9ERUFMTE9DQVRJT04KIF9MSUJDUFBfT1ZFUlJJREFCTEVfRlVOQ19WSVMgX0xJQkNQUF9BVkFJTEFCSUxJVFlfU0laRURfTkVXX0RFTEVURSB2b2lkICBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiBfX3AsIHN0ZDo6c2l6ZV90IF9fc3osIHN0ZDo6YWxpZ25fdmFsX3QpIF9OT0VYQ0VQVDsKICNlbmRpZgogI2VuZGlmCkBAIC0yMjYsNyArMjA3LDcgQEAKIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHZvaWQgIG9wZXJhdG9yIGRlbGV0ZSAgKHZvaWQqLCB2b2lkKikgX05PRVhDRVBUIHt9CiBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSB2b2lkICBvcGVyYXRvciBkZWxldGVbXSh2b2lkKiwgdm9pZCopIF9OT0VYQ0VQVCB7fQogCi0jZW5kaWYgLy8gIV9MSUJDUFBfQUJJX01JQ1JPU09GVCB8fCBfTElCQ1BQX05PX1ZDUlVOVElNRQorI2VuZGlmIC8vICFfTElCQ1BQX0RFRkVSX05FV19UT19WQ1JVTlRJTUUKIAogX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfU1RECiAKQEAgLTI0Miw3ICsyMjMsNyBAQAogI2lmbmRlZiBfTElCQ1BQX0hBU19OT19BTElHTkVEX0FMTE9DQVRJT04KICAgaWYgKF9faXNfb3ZlcmFsaWduZWRfZm9yX25ldyhfX2FsaWduKSkgewogICAgIGNvbnN0IGFsaWduX3ZhbF90IF9fYWxpZ25fdmFsID0gc3RhdGljX2Nhc3Q8YWxpZ25fdmFsX3Q+KF9fYWxpZ24pOwotIyBpZmRlZiBfTElCQ1BQX0hBU19OT19CVUlMVElOX0FMSUdORURfT1BFUkFUT1JfTkVXX0RFTEVURQorIyBpZmRlZiBfTElCQ1BQX0hBU19OT19CVUlMVElOX09WRVJMT0FERURfT1BFUkFUT1JfTkVXX0RFTEVURQogICAgIHJldHVybiA6Om9wZXJhdG9yIG5ldyhfX3NpemUsIF9fYWxpZ25fdmFsKTsKICMgZWxzZQogICAgIHJldHVybiBfX2J1aWx0aW5fb3BlcmF0b3JfbmV3KF9fc2l6ZSwgX19hbGlnbl92YWwpOwpAQCAtMjU4LDQwICsyMzksOTUgQEAKICNlbmRpZgogfQogCi1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSB2b2lkIF9fbGliY3BwX2RlYWxsb2NhdGUodm9pZCogX19wdHIsIHNpemVfdCBfX2FsaWduKSB7Ci0jaWZuZGVmIF9MSUJDUFBfSEFTX05PX0FMSUdORURfQUxMT0NBVElPTgotICBpZiAoX19pc19vdmVyYWxpZ25lZF9mb3JfbmV3KF9fYWxpZ24pKSB7Ci0gICAgY29uc3QgYWxpZ25fdmFsX3QgX19hbGlnbl92YWwgPSBzdGF0aWNfY2FzdDxhbGlnbl92YWxfdD4oX19hbGlnbik7Ci0jIGlmZGVmIF9MSUJDUFBfSEFTX05PX0JVSUxUSU5fQUxJR05FRF9PUEVSQVRPUl9ORVdfREVMRVRFCi0gICAgcmV0dXJuIDo6b3BlcmF0b3IgZGVsZXRlKF9fcHRyLCBfX2FsaWduX3ZhbCk7Ci0jIGVsc2UKLSAgICByZXR1cm4gX19idWlsdGluX29wZXJhdG9yX2RlbGV0ZShfX3B0ciwgX19hbGlnbl92YWwpOwotIyBlbmRpZgorc3RydWN0IF9EZWFsbG9jYXRlQ2FsbGVyIHsKKyAgc3RhdGljIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgIHZvaWQgX19kb19kZWFsbG9jYXRlX2hhbmRsZV9zaXplX2FsaWduKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplLCBzaXplX3QgX19hbGlnbikgeworI2lmIGRlZmluZWQoX0xJQkNQUF9IQVNfTk9fQUxJR05FRF9BTExPQ0FUSU9OKQorICAgICgodm9pZClfX2FsaWduKTsKKyAgICByZXR1cm4gX19kb19kZWFsbG9jYXRlX2hhbmRsZV9zaXplKF9fcHRyLCBfX3NpemUpOworI2Vsc2UKKyAgICBpZiAoX19pc19vdmVyYWxpZ25lZF9mb3JfbmV3KF9fYWxpZ24pKSB7CisgICAgICBjb25zdCBhbGlnbl92YWxfdCBfX2FsaWduX3ZhbCA9IHN0YXRpY19jYXN0PGFsaWduX3ZhbF90PihfX2FsaWduKTsKKyAgICAgIHJldHVybiBfX2RvX2RlYWxsb2NhdGVfaGFuZGxlX3NpemUoX19wdHIsIF9fc2l6ZSwgX19hbGlnbl92YWwpOworICAgIH0gZWxzZSB7CisgICAgICByZXR1cm4gX19kb19kZWFsbG9jYXRlX2hhbmRsZV9zaXplKF9fcHRyLCBfX3NpemUpOworICAgIH0KKyNlbmRpZgogICB9CisKKyAgc3RhdGljIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgIHZvaWQgX19kb19kZWFsbG9jYXRlX2hhbmRsZV9hbGlnbih2b2lkICpfX3B0ciwgc2l6ZV90IF9fYWxpZ24pIHsKKyNpZiBkZWZpbmVkKF9MSUJDUFBfSEFTX05PX0FMSUdORURfQUxMT0NBVElPTikKKyAgICAoKHZvaWQpX19hbGlnbik7CisgICAgcmV0dXJuIF9fZG9fY2FsbChfX3B0cik7CiAjZWxzZQotICAoKHZvaWQpX19hbGlnbik7CisgICAgaWYgKF9faXNfb3ZlcmFsaWduZWRfZm9yX25ldyhfX2FsaWduKSkgeworICAgICAgY29uc3QgYWxpZ25fdmFsX3QgX19hbGlnbl92YWwgPSBzdGF0aWNfY2FzdDxhbGlnbl92YWxfdD4oX19hbGlnbik7CisgICAgICByZXR1cm4gX19kb19jYWxsKF9fcHRyLCBfX2FsaWduX3ZhbCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBfX2RvX2NhbGwoX19wdHIpOworICAgIH0KICNlbmRpZgorICB9CisKKyBwcml2YXRlOgorICBzdGF0aWMgaW5saW5lIHZvaWQgX19kb19kZWFsbG9jYXRlX2hhbmRsZV9zaXplKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplKSB7CisjaWZkZWYgX0xJQkNQUF9IQVNfTk9fU0laRURfREVBTExPQ0FUSU9OCisgICAgKCh2b2lkKV9fc2l6ZSk7CisgICAgcmV0dXJuIF9fZG9fY2FsbChfX3B0cik7CisjZWxzZQorICAgIHJldHVybiBfX2RvX2NhbGwoX19wdHIsIF9fc2l6ZSk7CisjZW5kaWYKKyAgfQorCisjaWZuZGVmIF9MSUJDUFBfSEFTX05PX0FMSUdORURfQUxMT0NBVElPTgorICBzdGF0aWMgaW5saW5lIHZvaWQgX19kb19kZWFsbG9jYXRlX2hhbmRsZV9zaXplKHZvaWQgKl9fcHRyLCBzaXplX3QgX19zaXplLCBhbGlnbl92YWxfdCBfX2FsaWduKSB7CisjaWZkZWYgX0xJQkNQUF9IQVNfTk9fU0laRURfREVBTExPQ0FUSU9OCisgICAgKCh2b2lkKV9fc2l6ZSk7CisgICAgcmV0dXJuIF9fZG9fY2FsbChfX3B0ciwgX19hbGlnbik7CisjZWxzZQorICAgIHJldHVybiBfX2RvX2NhbGwoX19wdHIsIF9fc2l6ZSwgX19hbGlnbik7CisjZW5kaWYKKyAgfQorI2VuZGlmCisKK3ByaXZhdGU6CisgIHRlbXBsYXRlIDxjbGFzcyBfQTEsIGNsYXNzIF9BMj4KKyAgc3RhdGljIGlubGluZSB2b2lkIF9fZG9fY2FsbCh2b2lkICpfX3B0ciwgX0ExIF9fYTEsIF9BMiBfX2EyKSB7CisjaWYgZGVmaW5lZChfTElCQ1BQX0hBU19OT19CVUlMVElOX09QRVJBVE9SX05FV19ERUxFVEUpIHx8IFwKKyAgICBkZWZpbmVkKF9MSUJDUFBfSEFTX05PX0JVSUxUSU5fT1ZFUkxPQURFRF9PUEVSQVRPUl9ORVdfREVMRVRFKQorICAgIHJldHVybiA6Om9wZXJhdG9yIGRlbGV0ZShfX3B0ciwgX19hMSwgX19hMik7CisjZWxzZQorICAgIHJldHVybiBfX2J1aWx0aW5fb3BlcmF0b3JfZGVsZXRlKF9fcHRyLCBfX2ExLCBfX2EyKTsKKyNlbmRpZgorICB9CisKKyAgdGVtcGxhdGUgPGNsYXNzIF9BMT4KKyAgc3RhdGljIGlubGluZSB2b2lkIF9fZG9fY2FsbCh2b2lkICpfX3B0ciwgX0ExIF9fYTEpIHsKKyNpZiBkZWZpbmVkKF9MSUJDUFBfSEFTX05PX0JVSUxUSU5fT1BFUkFUT1JfTkVXX0RFTEVURSkgfHwgXAorICAgIGRlZmluZWQoX0xJQkNQUF9IQVNfTk9fQlVJTFRJTl9PVkVSTE9BREVEX09QRVJBVE9SX05FV19ERUxFVEUpCisgICAgcmV0dXJuIDo6b3BlcmF0b3IgZGVsZXRlKF9fcHRyLCBfX2ExKTsKKyNlbHNlCisgICAgcmV0dXJuIF9fYnVpbHRpbl9vcGVyYXRvcl9kZWxldGUoX19wdHIsIF9fYTEpOworI2VuZGlmCisgIH0KKworICBzdGF0aWMgaW5saW5lIHZvaWQgX19kb19jYWxsKHZvaWQgKl9fcHRyKSB7CiAjaWZkZWYgX0xJQkNQUF9IQVNfTk9fQlVJTFRJTl9PUEVSQVRPUl9ORVdfREVMRVRFCi0gIHJldHVybiA6Om9wZXJhdG9yIGRlbGV0ZShfX3B0cik7CisgICAgcmV0dXJuIDo6b3BlcmF0b3IgZGVsZXRlKF9fcHRyKTsKICNlbHNlCi0gIHJldHVybiBfX2J1aWx0aW5fb3BlcmF0b3JfZGVsZXRlKF9fcHRyKTsKKyAgICByZXR1cm4gX19idWlsdGluX29wZXJhdG9yX2RlbGV0ZShfX3B0cik7CiAjZW5kaWYKKyAgfQorfTsKKworaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgdm9pZCBfX2xpYmNwcF9kZWFsbG9jYXRlKHZvaWQqIF9fcHRyLCBzaXplX3QgX19zaXplLCBzaXplX3QgX19hbGlnbikgeworICBfRGVhbGxvY2F0ZUNhbGxlcjo6X19kb19kZWFsbG9jYXRlX2hhbmRsZV9zaXplX2FsaWduKF9fcHRyLCBfX3NpemUsIF9fYWxpZ24pOwogfQogCi0jaWZkZWYgX0xJQkNQUF9CQURfQVJSQVlfTEVOR1RIX0RFRklORUQKLV9MSUJDUFBfTk9SRVRVUk4gaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKLSNpZm5kZWYgX0xJQkNQUF9OT19FWENFUFRJT05TCi1fTElCQ1BQX0FWQUlMQUJJTElUWV9CQURfQVJSQVlfTEVOR1RICi0jZW5kaWYKLXZvaWQgX190aHJvd19iYWRfYXJyYXlfbGVuZ3RoKCkKLXsKLSNpZm5kZWYgX0xJQkNQUF9OT19FWENFUFRJT05TCi0gICAgdGhyb3cgYmFkX2FycmF5X2xlbmd0aCgpOwotI2Vsc2UKLSAgICBfVlNURDo6YWJvcnQoKTsKLSNlbmRpZgoraW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgdm9pZCBfX2xpYmNwcF9kZWFsbG9jYXRlX3Vuc2l6ZWQodm9pZCogX19wdHIsIHNpemVfdCBfX2FsaWduKSB7CisgIF9EZWFsbG9jYXRlQ2FsbGVyOjpfX2RvX2RlYWxsb2NhdGVfaGFuZGxlX2FsaWduKF9fcHRyLCBfX2FsaWduKTsKIH0KLSNlbmRpZgogCiB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgogX0xJQkNQUF9OT0RJU0NBUkRfQUZURVJfQ1hYMTcgaW5saW5lCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvbnVtZXJpYyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9udW1lcmljCmluZGV4IDRlNjgyMzkuLjk5NDE3NzAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9udW1lcmljCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9udW1lcmljCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbnVtZXJpYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvb3B0aW9uYWwgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvb3B0aW9uYWwKaW5kZXggOWVmMGFhYy4uYmU1ODRiMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL29wdGlvbmFsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9vcHRpb25hbApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBvcHRpb25hbCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTA1LDggKzEwNCw4IEBACiAKICAgICAvLyAyMy42LjMuMywgYXNzaWdubWVudAogICAgIG9wdGlvbmFsICZvcGVyYXRvcj0obnVsbG9wdF90KSBub2V4Y2VwdDsKLSAgICBvcHRpb25hbCAmb3BlcmF0b3I9KGNvbnN0IG9wdGlvbmFsICYpOwotICAgIG9wdGlvbmFsICZvcGVyYXRvcj0ob3B0aW9uYWwgJiYpIG5vZXhjZXB0KHNlZSBiZWxvdyApOworICAgIG9wdGlvbmFsICZvcGVyYXRvcj0oY29uc3Qgb3B0aW9uYWwgJik7ICAgICAgICAgICAgICAgIC8vIGNvbnN0ZXhwciBpbiBDKysyMAorICAgIG9wdGlvbmFsICZvcGVyYXRvcj0ob3B0aW9uYWwgJiYpIG5vZXhjZXB0KHNlZSBiZWxvdyk7IC8vIGNvbnN0ZXhwciBpbiBDKysyMAogICAgIHRlbXBsYXRlIDxjbGFzcyBVID0gVD4gb3B0aW9uYWwgJm9wZXJhdG9yPShVICYmKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gb3B0aW9uYWwgJm9wZXJhdG9yPShjb25zdCBvcHRpb25hbDxVPiAmKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gb3B0aW9uYWwgJm9wZXJhdG9yPShvcHRpb25hbDxVPiAmJik7CkBAIC0xNjksNyArMTY4LDcgQEAKIG5hbWVzcGFjZSBzdGQgIC8vIHB1cnBvc2VmdWxseSBub3QgdXNpbmcgdmVyc2lvbmluZyBuYW1lc3BhY2UKIHsKIAotY2xhc3MgX0xJQkNQUF9FWENFUFRJT05fQUJJIGJhZF9vcHRpb25hbF9hY2Nlc3MKK2NsYXNzIF9MSUJDUFBfRVhDRVBUSU9OX0FCSSBfTElCQ1BQX0FWQUlMQUJJTElUWV9CQURfT1BUSU9OQUxfQUNDRVNTIGJhZF9vcHRpb25hbF9hY2Nlc3MKICAgICA6IHB1YmxpYyBleGNlcHRpb24KIHsKIHB1YmxpYzoKQEAgLTE4Niw2ICsxODUsNyBAQAogCiBfTElCQ1BQX05PUkVUVVJOCiBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorX0xJQkNQUF9BVkFJTEFCSUxJVFlfVEhST1dfQkFEX09QVElPTkFMX0FDQ0VTUwogdm9pZCBfX3Rocm93X2JhZF9vcHRpb25hbF9hY2Nlc3MoKSB7CiAjaWZuZGVmIF9MSUJDUFBfTk9fRVhDRVBUSU9OUwogICAgICAgICB0aHJvdyBiYWRfb3B0aW9uYWxfYWNjZXNzKCk7CkBAIC05MzMsNiArOTMzLDcgQEAKICAgICB1c2luZyBfX2Jhc2U6Ol9fZ2V0OwogCiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIF9MSUJDUFBfQVZBSUxBQklMSVRZX1RIUk9XX0JBRF9PUFRJT05BTF9BQ0NFU1MKICAgICBjb25zdGV4cHIgdmFsdWVfdHlwZSBjb25zdCYgdmFsdWUoKSBjb25zdCYKICAgICB7CiAgICAgICAgIGlmICghdGhpcy0+aGFzX3ZhbHVlKCkpCkBAIC05NDEsNiArOTQyLDcgQEAKICAgICB9CiAKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgX0xJQkNQUF9BVkFJTEFCSUxJVFlfVEhST1dfQkFEX09QVElPTkFMX0FDQ0VTUwogICAgIGNvbnN0ZXhwciB2YWx1ZV90eXBlJiB2YWx1ZSgpICYKICAgICB7CiAgICAgICAgIGlmICghdGhpcy0+aGFzX3ZhbHVlKCkpCkBAIC05NDksNiArOTUxLDcgQEAKICAgICB9CiAKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgX0xJQkNQUF9BVkFJTEFCSUxJVFlfVEhST1dfQkFEX09QVElPTkFMX0FDQ0VTUwogICAgIGNvbnN0ZXhwciB2YWx1ZV90eXBlJiYgdmFsdWUoKSAmJgogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLT5oYXNfdmFsdWUoKSkKQEAgLTk1Nyw2ICs5NjAsNyBAQAogICAgIH0KIAogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBfTElCQ1BQX0FWQUlMQUJJTElUWV9USFJPV19CQURfT1BUSU9OQUxfQUNDRVNTCiAgICAgY29uc3RleHByIHZhbHVlX3R5cGUgY29uc3QmJiB2YWx1ZSgpIGNvbnN0JiYKICAgICB7CiAgICAgICAgIGlmICghdGhpcy0+aGFzX3ZhbHVlKCkpCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvb3N0cmVhbSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9vc3RyZWFtCmluZGV4IDU0MDRlMGQuLmIyMGFjMzQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9vc3RyZWFtCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9vc3RyZWFtCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIG9zdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xNDAsNiArMTM5LDcgQEAKICNpbmNsdWRlIDxsb2NhbGU+CiAjaW5jbHVkZSA8aXRlcmF0b3I+CiAjaW5jbHVkZSA8Yml0c2V0PgorI2luY2x1ZGUgPHZlcnNpb24+CiAKICNpZiAhZGVmaW5lZChfTElCQ1BQX0hBU19OT19QUkFHTUFfU1lTVEVNX0hFQURFUikKICNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKQEAgLTE2MCw3ICsxNjAsNyBAQAogICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6Om9mZl90eXBlIG9mZl90eXBlOwogCiAgICAgLy8gMjcuNy4yLjIgQ29uc3RydWN0b3IvZGVzdHJ1Y3RvcjoKLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgZXhwbGljaXQgYmFzaWNfb3N0cmVhbShiYXNpY19zdHJlYW1idWY8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT4qIF9fc2IpCiAgICAgeyB0aGlzLT5pbml0KF9fc2IpOyB9CiAgICAgdmlydHVhbCB+YmFzaWNfb3N0cmVhbSgpOwpAQCAtMTczLDcgKzE3Myw3IEBACiAgICAgaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICBiYXNpY19vc3RyZWFtJiBvcGVyYXRvcj0oYmFzaWNfb3N0cmVhbSYmIF9fcmhzKTsKICNlbmRpZgotICAgIGlubGluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9JTkxJTkVfVklTSUJJTElUWQorICAgIGlubGluZSBfTElCQ1BQX0hJREVfRlJPTV9BQklfQUZURVJfVjEKICAgICB2b2lkIHN3YXAoYmFzaWNfb3N0cmVhbSYgX19yaHMpCiAgICAgeyBiYXNpY19pb3M8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT46OnN3YXAoX19yaHMpOyB9CiAKQEAgLTE5MCwxNiArMTkwLDE2IEBACiAgICAgY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgc2VudHJ5OwogCiAgICAgLy8gMjcuNy4yLjYgRm9ybWF0dGVkIG91dHB1dDoKLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgYmFzaWNfb3N0cmVhbSYgb3BlcmF0b3I8PChiYXNpY19vc3RyZWFtJiAoKl9fcGYpKGJhc2ljX29zdHJlYW0mKSkKICAgICB7IHJldHVybiBfX3BmKCp0aGlzKTsgfQogCi0gICAgaW5saW5lIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFX0lOTElORV9WSVNJQklMSVRZCisgICAgaW5saW5lIF9MSUJDUFBfSElERV9GUk9NX0FCSV9BRlRFUl9WMQogICAgIGJhc2ljX29zdHJlYW0mIG9wZXJhdG9yPDwoYmFzaWNfaW9zPGNoYXJfdHlwZSwgdHJhaXRzX3R5cGU+JgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpfX3BmKShiYXNpY19pb3M8Y2hhcl90eXBlLHRyYWl0c190eXBlPiYpKQogICAgIHsgX19wZigqdGhpcyk7IHJldHVybiAqdGhpczsgfQogCi0gICAgaW5saW5lIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFX0lOTElORV9WSVNJQklMSVRZCisgICAgaW5saW5lIF9MSUJDUFBfSElERV9GUk9NX0FCSV9BRlRFUl9WMQogICAgIGJhc2ljX29zdHJlYW0mIG9wZXJhdG9yPDwoaW9zX2Jhc2UmICgqX19wZikoaW9zX2Jhc2UmKSkKICAgICB7IF9fcGYoKnRoaXMpOyByZXR1cm4gKnRoaXM7IH0KIApAQCAtMjI0LDExICsyMjQsMTEgQEAKICAgICBiYXNpY19vc3RyZWFtJiBmbHVzaCgpOwogCiAgICAgLy8gMjcuNy4yLjUgc2Vla3M6Ci0gICAgaW5saW5lIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFX0lOTElORV9WSVNJQklMSVRZCisgICAgaW5saW5lIF9MSUJDUFBfSElERV9GUk9NX0FCSV9BRlRFUl9WMQogICAgIHBvc190eXBlIHRlbGxwKCk7Ci0gICAgaW5saW5lIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFX0lOTElORV9WSVNJQklMSVRZCisgICAgaW5saW5lIF9MSUJDUFBfSElERV9GUk9NX0FCSV9BRlRFUl9WMQogICAgIGJhc2ljX29zdHJlYW0mIHNlZWtwKHBvc190eXBlIF9fcG9zKTsKLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgYmFzaWNfb3N0cmVhbSYgc2Vla3Aob2ZmX3R5cGUgX19vZmYsIGlvc19iYXNlOjpzZWVrZGlyIF9fZGlyKTsKIAogcHJvdGVjdGVkOgpAQCAtMTA5Miw3ICsxMDkyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fb3MuZ2V0bG9jKCkpLndpZGVuKCcxJykpOwogfQogCi0jaWZuZGVmIF9MSUJDUFBfQVZBSUxBQklMSVRZX05PX1NUUkVBTVNfRVhURVJOX1RFTVBMQVRFCisjaWZuZGVmIF9MSUJDUFBfRE9fTk9UX0FTU1VNRV9TVFJFQU1TX0VYUExJQ0lUX0lOU1RBTlRJQVRJT05fSU5fRFlMSUIKIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFKGNsYXNzIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFX1RZUEVfVklTIGJhc2ljX29zdHJlYW08Y2hhcj4pCiBfTElCQ1BQX0VYVEVSTl9URU1QTEFURShjbGFzcyBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9UWVBFX1ZJUyBiYXNpY19vc3RyZWFtPHdjaGFyX3Q+KQogI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvcXVldWUgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvcXVldWUKaW5kZXggNDY3N2U1Mi4uNTViZTgwMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3F1ZXVlCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9xdWV1ZQpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gcXVldWUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3JhbmRvbSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9yYW5kb20KaW5kZXggNzI0YmQwZi4uYTczMjM5NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3JhbmRvbQorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvcmFuZG9tCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSByYW5kb20gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvcmF0aW8gYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvcmF0aW8KaW5kZXggN2VlNWVjMi4uZmE3YTRiYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3JhdGlvCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9yYXRpbwpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHJhdGlvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3JlZ2V4IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3JlZ2V4CmluZGV4IDE4NTg1MDAuLmMzODFiNTEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9yZWdleAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvcmVnZXgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHJlZ2V4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTk5MCw2ICs5ODksMTAgQEAKIAogI2lmIGRlZmluZWQoX19taXBzX18pICYmIGRlZmluZWQoX19HTElCQ19fKQogICAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgX19yZWdleF93b3JkID0gc3RhdGljX2Nhc3Q8Y2hhcl9jbGFzc190eXBlPihfSVNiaXQoMTUpKTsKKyNlbGlmIGRlZmluZWQoX19OZXRCU0RfXykKKyAgICAvLyBOZXRCU0QgZGVmaW5lcyBjbGFzc2VzIHVwIHRvIDB4MjAwMAorICAgIC8vIHNlZSBzeXMvY3R5cGVfYml0cy5oLCBfQ1RZUEVfUQorICAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgX19yZWdleF93b3JkID0gMHg4MDAwOwogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIF9fcmVnZXhfd29yZCA9IDB4ODA7CiAjZW5kaWYKQEAgLTYxMzYsNyArNjEzOSw3IEBACiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7cmV0dXJuICBfX21hdGNoXzt9CiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0ICB7cmV0dXJuICZfX21hdGNoXzt9CisgICAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgIHtyZXR1cm4gX1ZTVEQ6OmFkZHJlc3NvZihfX21hdGNoXyk7fQogCiAgICAgcmVnZXhfaXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCkBAIC02MTYwLDcgKzYxNjMsNyBAQAogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4X3R5cGUmIF9fcmUsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIF9fbSkKICAgICA6IF9fYmVnaW5fKF9fYSksCiAgICAgICBfX2VuZF8oX19iKSwKLSAgICAgIF9fcHJlZ2V4XygmX19yZSksCisgICAgICBfX3ByZWdleF8oX1ZTVEQ6OmFkZHJlc3NvZihfX3JlKSksCiAgICAgICBfX2ZsYWdzXyhfX20pCiB7CiAgICAgX1ZTVEQ6OnJlZ2V4X3NlYXJjaChfX2JlZ2luXywgX19lbmRfLCBfX21hdGNoXywgKl9fcHJlZ2V4XywgX19mbGFnc18pOwpAQCAtNjQwMSw3ICs2NDA0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgX19tKQogICAgIDogX19wb3NpdGlvbl8oX19hLCBfX2IsIF9fcmUsIF9fbSksCiAgICAgICBfX25fKDApLAotICAgICAgX19zdWJzXyhfX3N1Ym1hdGNoZXMsIF9fc3VibWF0Y2hlcyArIF9OcCkKKyAgICAgIF9fc3Vic18oYmVnaW4oX19zdWJtYXRjaGVzKSwgZW5kKF9fc3VibWF0Y2hlcykpCiB7CiAgICAgX19pbml0KF9fYSwgX19iKTsKIH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zY29wZWRfYWxsb2NhdG9yIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3Njb3BlZF9hbGxvY2F0b3IKaW5kZXggYmRiYjAxMy4uMjM3Y2Q0MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3Njb3BlZF9hbGxvY2F0b3IKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3Njb3BlZF9hbGxvY2F0b3IKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc2NvcGVkX2FsbG9jYXRvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zZXQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc2V0CmluZGV4IGYyY2U2ZWEuLjE3ODM3MjIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zZXQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3NldApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHNldCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTI4LDYgKzEyNywxNSBAQAogICAgIGl0ZXJhdG9yICBlcmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCk7CiAgICAgdm9pZCBjbGVhcigpIG5vZXhjZXB0OwogCisgICAgdGVtcGxhdGU8Y2xhc3MgQzI+CisgICAgICB2b2lkIG1lcmdlKHNldDxLZXksIEMyLCBBbGxvY2F0b3I+JiBzb3VyY2UpOyAgICAgICAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgQzI+CisgICAgICB2b2lkIG1lcmdlKHNldDxLZXksIEMyLCBBbGxvY2F0b3I+JiYgc291cmNlKTsgICAgICAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgQzI+CisgICAgICB2b2lkIG1lcmdlKG11bHRpc2V0PEtleSwgQzIsIEFsbG9jYXRvcj4mIHNvdXJjZSk7ICAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgQzI+CisgICAgICB2b2lkIG1lcmdlKG11bHRpc2V0PEtleSwgQzIsIEFsbG9jYXRvcj4mJiBzb3VyY2UpOyAgIC8vIEMrKzE3CisKICAgICB2b2lkIHN3YXAoc2V0JiBzKQogICAgICAgICBub2V4Y2VwdCgKICAgICAgICAgICAgIF9faXNfbm90aHJvd19zd2FwcGFibGU8a2V5X2NvbXBhcmU+Ojp2YWx1ZSAmJgpAQCAtMjA3LDYgKzIxNSw5IEBACiBzd2FwKHNldDxLZXksIENvbXBhcmUsIEFsbG9jYXRvcj4mIHgsIHNldDxLZXksIENvbXBhcmUsIEFsbG9jYXRvcj4mIHkpCiAgICAgbm9leGNlcHQobm9leGNlcHQoeC5zd2FwKHkpKSk7CiAKK3RlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIENvbXBhcmUsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgUHJlZGljYXRlPgorICB2b2lkIGVyYXNlX2lmKHNldDxLZXksIENvbXBhcmUsIEFsbG9jYXRvcj4mIGMsIFByZWRpY2F0ZSBwcmVkKTsgIC8vIEMrKzIwCisKIHRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIENvbXBhcmUgPSBsZXNzPEtleT4sCiAgICAgICAgICAgY2xhc3MgQWxsb2NhdG9yID0gYWxsb2NhdG9yPEtleT4+CiBjbGFzcyBtdWx0aXNldApAQCAtMzE2LDYgKzMyNywxNSBAQAogICAgIGl0ZXJhdG9yICBlcmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCk7CiAgICAgdm9pZCBjbGVhcigpIG5vZXhjZXB0OwogCisgICAgdGVtcGxhdGU8Y2xhc3MgQzI+CisgICAgICB2b2lkIG1lcmdlKG11bHRpc2V0PEtleSwgQzIsIEFsbG9jYXRvcj4mIHNvdXJjZSk7ICAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgQzI+CisgICAgICB2b2lkIG1lcmdlKG11bHRpc2V0PEtleSwgQzIsIEFsbG9jYXRvcj4mJiBzb3VyY2UpOyAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgQzI+CisgICAgICB2b2lkIG1lcmdlKHNldDxLZXksIEMyLCBBbGxvY2F0b3I+JiBzb3VyY2UpOyAgICAgICAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgQzI+CisgICAgICB2b2lkIG1lcmdlKHNldDxLZXksIEMyLCBBbGxvY2F0b3I+JiYgc291cmNlKTsgICAgICAgIC8vIEMrKzE3CisKICAgICB2b2lkIHN3YXAobXVsdGlzZXQmIHMpCiAgICAgICAgIG5vZXhjZXB0KAogICAgICAgICAgICAgX19pc19ub3Rocm93X3N3YXBwYWJsZTxrZXlfY29tcGFyZT46OnZhbHVlICYmCkBAIC0zOTQsNiArNDE0LDkgQEAKIHN3YXAobXVsdGlzZXQ8S2V5LCBDb21wYXJlLCBBbGxvY2F0b3I+JiB4LCBtdWx0aXNldDxLZXksIENvbXBhcmUsIEFsbG9jYXRvcj4mIHkpCiAgICAgbm9leGNlcHQobm9leGNlcHQoeC5zd2FwKHkpKSk7CiAKK3RlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIENvbXBhcmUsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgUHJlZGljYXRlPgorICB2b2lkIGVyYXNlX2lmKG11bHRpc2V0PEtleSwgQ29tcGFyZSwgQWxsb2NhdG9yPiYgYywgUHJlZGljYXRlIHByZWQpOyAgLy8gQysrMjAKKwogfSAgLy8gc3RkCiAKICovCkBAIC00MTAsNiArNDMzLDkgQEAKIAogX0xJQkNQUF9CRUdJTl9OQU1FU1BBQ0VfU1RECiAKK3RlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jYXRvcj4KK2NsYXNzIG11bHRpc2V0OworCiB0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX0NvbXBhcmUgPSBsZXNzPF9LZXk+LAogICAgICAgICAgIGNsYXNzIF9BbGxvY2F0b3IgPSBhbGxvY2F0b3I8X0tleT4gPgogY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgc2V0CkBAIC00MjQsNiArNDUwLDcgQEAKICAgICB0eXBlZGVmIHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwogICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9yZWZlcmVuY2U7CiAKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihfX2RpYWdub3NlX25vbl9jb25zdF9jb21wYXJhdG9yPF9LZXksIF9Db21wYXJlPigpKSwgIiIpOwogICAgIHN0YXRpY19hc3NlcnQoKGlzX3NhbWU8dHlwZW5hbWUgYWxsb2NhdG9yX3R5cGU6OnZhbHVlX3R5cGUsIHZhbHVlX3R5cGU+Ojp2YWx1ZSksCiAgICAgICAgICAgICAgICAgICAiQWxsb2NhdG9yOjp2YWx1ZV90eXBlIG11c3QgYmUgc2FtZSB0eXBlIGFzIHZhbHVlX3R5cGUiKTsKIApAQCAtNDQ5LDYgKzQ3NiwxMSBAQAogICAgIHR5cGVkZWYgX19pbnNlcnRfcmV0dXJuX3R5cGU8aXRlcmF0b3IsIG5vZGVfdHlwZT4gaW5zZXJ0X3JldHVybl90eXBlOwogI2VuZGlmCiAKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0tleTIsIGNsYXNzIF9Db21wYXJlMiwgY2xhc3MgX0FsbG9jMj4KKyAgICAgICAgZnJpZW5kIGNsYXNzIF9MSUJDUFBfVEVNUExBVEVfVklTIHNldDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0tleTIsIGNsYXNzIF9Db21wYXJlMiwgY2xhc3MgX0FsbG9jMj4KKyAgICAgICAgZnJpZW5kIGNsYXNzIF9MSUJDUFBfVEVNUExBVEVfVklTIG11bHRpc2V0OworCiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIHNldCgpCiAgICAgICAgIF9OT0VYQ0VQVF8oCkBAIC00ODcsNyArNTE5LDcgQEAKIAogI2lmIF9MSUJDUFBfU1REX1ZFUiA+IDExCiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KLSAgICAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSAKKyAgICAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgICAgICBzZXQoX0lucHV0SXRlcmF0b3IgX19mLCBfSW5wdXRJdGVyYXRvciBfX2wsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpCiAgICAgICAgICAgICA6IHNldChfX2YsIF9fbCwga2V5X2NvbXBhcmUoKSwgX19hKSB7fQogI2VuZGlmCkBAIC01NDMsNyArNTc1LDcgQEAKICAgICAgICAgfQogCiAjaWYgX0xJQkNQUF9TVERfVkVSID4gMTEKLSAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIAorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICBzZXQoaW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBfX2lsLCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hKQogICAgICAgICA6IHNldChfX2lsLCBrZXlfY29tcGFyZSgpLCBfX2EpIHt9CiAjZW5kaWYKQEAgLTY4MSw2ICs3MTMsMzggQEAKICAgICB7CiAgICAgICAgIHJldHVybiBfX3RyZWVfLnRlbXBsYXRlIF9fbm9kZV9oYW5kbGVfZXh0cmFjdDxub2RlX3R5cGU+KF9faXQpOwogICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NvbXBhcmUyPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB2b2lkIG1lcmdlKHNldDxrZXlfdHlwZSwgX0NvbXBhcmUyLCBhbGxvY2F0b3JfdHlwZT4mIF9fc291cmNlKQorICAgIHsKKyAgICAgICAgX0xJQkNQUF9BU1NFUlQoX19zb3VyY2UuZ2V0X2FsbG9jYXRvcigpID09IGdldF9hbGxvY2F0b3IoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIm1lcmdpbmcgY29udGFpbmVyIHdpdGggaW5jb21wYXRpYmxlIGFsbG9jYXRvciIpOworICAgICAgICBfX3RyZWVfLl9fbm9kZV9oYW5kbGVfbWVyZ2VfdW5pcXVlKF9fc291cmNlLl9fdHJlZV8pOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NvbXBhcmUyPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB2b2lkIG1lcmdlKHNldDxrZXlfdHlwZSwgX0NvbXBhcmUyLCBhbGxvY2F0b3JfdHlwZT4mJiBfX3NvdXJjZSkKKyAgICB7CisgICAgICAgIF9MSUJDUFBfQVNTRVJUKF9fc291cmNlLmdldF9hbGxvY2F0b3IoKSA9PSBnZXRfYWxsb2NhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICJtZXJnaW5nIGNvbnRhaW5lciB3aXRoIGluY29tcGF0aWJsZSBhbGxvY2F0b3IiKTsKKyAgICAgICAgX190cmVlXy5fX25vZGVfaGFuZGxlX21lcmdlX3VuaXF1ZShfX3NvdXJjZS5fX3RyZWVfKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db21wYXJlMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZShtdWx0aXNldDxrZXlfdHlwZSwgX0NvbXBhcmUyLCBhbGxvY2F0b3JfdHlwZT4mIF9fc291cmNlKQorICAgIHsKKyAgICAgICAgX0xJQkNQUF9BU1NFUlQoX19zb3VyY2UuZ2V0X2FsbG9jYXRvcigpID09IGdldF9hbGxvY2F0b3IoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIm1lcmdpbmcgY29udGFpbmVyIHdpdGggaW5jb21wYXRpYmxlIGFsbG9jYXRvciIpOworICAgICAgICBfX3RyZWVfLl9fbm9kZV9oYW5kbGVfbWVyZ2VfdW5pcXVlKF9fc291cmNlLl9fdHJlZV8pOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NvbXBhcmUyPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB2b2lkIG1lcmdlKG11bHRpc2V0PGtleV90eXBlLCBfQ29tcGFyZTIsIGFsbG9jYXRvcl90eXBlPiYmIF9fc291cmNlKQorICAgIHsKKyAgICAgICAgX0xJQkNQUF9BU1NFUlQoX19zb3VyY2UuZ2V0X2FsbG9jYXRvcigpID09IGdldF9hbGxvY2F0b3IoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIm1lcmdpbmcgY29udGFpbmVyIHdpdGggaW5jb21wYXRpYmxlIGFsbG9jYXRvciIpOworICAgICAgICBfX3RyZWVfLl9fbm9kZV9oYW5kbGVfbWVyZ2VfdW5pcXVlKF9fc291cmNlLl9fdHJlZV8pOworICAgIH0KICNlbmRpZgogCiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQpAQCAtODUzLDYgKzkxNywxMyBAQAogICAgIF9feC5zd2FwKF9feSk7CiB9CiAKKyNpZiBfTElCQ1BQX1NURF9WRVIgPiAxNwordGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2NhdG9yLCBjbGFzcyBfUHJlZGljYXRlPgoraW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK3ZvaWQgZXJhc2VfaWYoc2V0PF9LZXksIF9Db21wYXJlLCBfQWxsb2NhdG9yPiYgX19jLCBfUHJlZGljYXRlIF9fcHJlZCkKK3sgX19saWJjcHBfZXJhc2VfaWZfY29udGFpbmVyKF9fYywgX19wcmVkKTsgfQorI2VuZGlmCisKIHRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfQ29tcGFyZSA9IGxlc3M8X0tleT4sCiAgICAgICAgICAgY2xhc3MgX0FsbG9jYXRvciA9IGFsbG9jYXRvcjxfS2V5PiA+CiBjbGFzcyBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBtdWx0aXNldApAQCAtODY3LDYgKzkzOCw3IEBACiAgICAgdHlwZWRlZiB2YWx1ZV90eXBlJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKICAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfcmVmZXJlbmNlOwogCisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoX19kaWFnbm9zZV9ub25fY29uc3RfY29tcGFyYXRvcjxfS2V5LCBfQ29tcGFyZT4oKSksICIiKTsKICAgICBzdGF0aWNfYXNzZXJ0KChpc19zYW1lPHR5cGVuYW1lIGFsbG9jYXRvcl90eXBlOjp2YWx1ZV90eXBlLCB2YWx1ZV90eXBlPjo6dmFsdWUpLAogICAgICAgICAgICAgICAgICAgIkFsbG9jYXRvcjo6dmFsdWVfdHlwZSBtdXN0IGJlIHNhbWUgdHlwZSBhcyB2YWx1ZV90eXBlIik7CiAKQEAgLTg5MSw2ICs5NjMsMTEgQEAKICAgICB0eXBlZGVmIF9fc2V0X25vZGVfaGFuZGxlPHR5cGVuYW1lIF9fYmFzZTo6X19ub2RlLCBhbGxvY2F0b3JfdHlwZT4gbm9kZV90eXBlOwogI2VuZGlmCiAKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0tleTIsIGNsYXNzIF9Db21wYXJlMiwgY2xhc3MgX0FsbG9jMj4KKyAgICAgICAgZnJpZW5kIGNsYXNzIF9MSUJDUFBfVEVNUExBVEVfVklTIHNldDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0tleTIsIGNsYXNzIF9Db21wYXJlMiwgY2xhc3MgX0FsbG9jMj4KKyAgICAgICAgZnJpZW5kIGNsYXNzIF9MSUJDUFBfVEVNUExBVEVfVklTIG11bHRpc2V0OworCiAgICAgLy8gY29uc3RydWN0L2NvcHkvZGVzdHJveToKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgbXVsdGlzZXQoKQpAQCAtOTIxLDcgKzk5OCw3IEBACiAKICNpZiBfTElCQ1BQX1NURF9WRVIgPiAxMQogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+Ci0gICAgICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgCisgICAgICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICAgICAgbXVsdGlzZXQoX0lucHV0SXRlcmF0b3IgX19mLCBfSW5wdXRJdGVyYXRvciBfX2wsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpCiAgICAgICAgICAgICA6IG11bHRpc2V0KF9fZiwgX19sLCBrZXlfY29tcGFyZSgpLCBfX2EpIHt9CiAjZW5kaWYKQEAgLTk4NSw3ICsxMDYyLDcgQEAKICAgICAgICAgfQogCiAjaWYgX0xJQkNQUF9TVERfVkVSID4gMTEKLSAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIAorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICBtdWx0aXNldChpbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IF9faWwsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpCiAgICAgICAgIDogbXVsdGlzZXQoX19pbCwga2V5X2NvbXBhcmUoKSwgX19hKSB7fQogI2VuZGlmCkBAIC0xMTIyLDYgKzExOTksMzggQEAKICAgICB7CiAgICAgICAgIHJldHVybiBfX3RyZWVfLnRlbXBsYXRlIF9fbm9kZV9oYW5kbGVfZXh0cmFjdDxub2RlX3R5cGU+KF9faXQpOwogICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NvbXBhcmUyPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB2b2lkIG1lcmdlKG11bHRpc2V0PGtleV90eXBlLCBfQ29tcGFyZTIsIGFsbG9jYXRvcl90eXBlPiYgX19zb3VyY2UpCisgICAgeworICAgICAgICBfTElCQ1BQX0FTU0VSVChfX3NvdXJjZS5nZXRfYWxsb2NhdG9yKCkgPT0gZ2V0X2FsbG9jYXRvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAibWVyZ2luZyBjb250YWluZXIgd2l0aCBpbmNvbXBhdGlibGUgYWxsb2NhdG9yIik7CisgICAgICAgIF9fdHJlZV8uX19ub2RlX2hhbmRsZV9tZXJnZV9tdWx0aShfX3NvdXJjZS5fX3RyZWVfKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPGNsYXNzIF9Db21wYXJlMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZShtdWx0aXNldDxrZXlfdHlwZSwgX0NvbXBhcmUyLCBhbGxvY2F0b3JfdHlwZT4mJiBfX3NvdXJjZSkKKyAgICB7CisgICAgICAgIF9MSUJDUFBfQVNTRVJUKF9fc291cmNlLmdldF9hbGxvY2F0b3IoKSA9PSBnZXRfYWxsb2NhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICJtZXJnaW5nIGNvbnRhaW5lciB3aXRoIGluY29tcGF0aWJsZSBhbGxvY2F0b3IiKTsKKyAgICAgICAgX190cmVlXy5fX25vZGVfaGFuZGxlX21lcmdlX211bHRpKF9fc291cmNlLl9fdHJlZV8pOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0NvbXBhcmUyPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB2b2lkIG1lcmdlKHNldDxrZXlfdHlwZSwgX0NvbXBhcmUyLCBhbGxvY2F0b3JfdHlwZT4mIF9fc291cmNlKQorICAgIHsKKyAgICAgICAgX0xJQkNQUF9BU1NFUlQoX19zb3VyY2UuZ2V0X2FsbG9jYXRvcigpID09IGdldF9hbGxvY2F0b3IoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIm1lcmdpbmcgY29udGFpbmVyIHdpdGggaW5jb21wYXRpYmxlIGFsbG9jYXRvciIpOworICAgICAgICBfX3RyZWVfLl9fbm9kZV9oYW5kbGVfbWVyZ2VfbXVsdGkoX19zb3VyY2UuX190cmVlXyk7CisgICAgfQorICAgIHRlbXBsYXRlIDxjbGFzcyBfQ29tcGFyZTI+CisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIHZvaWQgbWVyZ2Uoc2V0PGtleV90eXBlLCBfQ29tcGFyZTIsIGFsbG9jYXRvcl90eXBlPiYmIF9fc291cmNlKQorICAgIHsKKyAgICAgICAgX0xJQkNQUF9BU1NFUlQoX19zb3VyY2UuZ2V0X2FsbG9jYXRvcigpID09IGdldF9hbGxvY2F0b3IoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIm1lcmdpbmcgY29udGFpbmVyIHdpdGggaW5jb21wYXRpYmxlIGFsbG9jYXRvciIpOworICAgICAgICBfX3RyZWVfLl9fbm9kZV9oYW5kbGVfbWVyZ2VfbXVsdGkoX19zb3VyY2UuX190cmVlXyk7CisgICAgfQogI2VuZGlmCiAKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCkBAIC0xMjk1LDYgKzE0MDQsMTMgQEAKICAgICBfX3guc3dhcChfX3kpOwogfQogCisjaWYgX0xJQkNQUF9TVERfVkVSID4gMTcKK3RlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jYXRvciwgY2xhc3MgX1ByZWRpY2F0ZT4KK2lubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCit2b2lkIGVyYXNlX2lmKG11bHRpc2V0PF9LZXksIF9Db21wYXJlLCBfQWxsb2NhdG9yPiYgX19jLCBfUHJlZGljYXRlIF9fcHJlZCkKK3sgX19saWJjcHBfZXJhc2VfaWZfY29udGFpbmVyKF9fYywgX19wcmVkKTsgfQorI2VuZGlmCisKIF9MSUJDUFBfRU5EX05BTUVTUEFDRV9TVEQKIAogI2VuZGlmICAvLyBfTElCQ1BQX1NFVApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3NldGptcC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3NldGptcC5oCmluZGV4IDQ2NGI0YTUuLmYzMGE4ZDQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zZXRqbXAuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc2V0am1wLmgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHNldGptcC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zaGFyZWRfbXV0ZXggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc2hhcmVkX211dGV4CmluZGV4IGZiZGUwY2YuLmZjYWZkOGMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zaGFyZWRfbXV0ZXgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3NoYXJlZF9tdXRleApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc2hhcmVkX211dGV4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTQ0LDcgKzE0Myw4IEBACiAKIF9MSUJDUFBfQkVHSU5fTkFNRVNQQUNFX1NURAogCi1zdHJ1Y3QgX0xJQkNQUF9UWVBFX1ZJUyBfTElCQ1BQX0FWQUlMQUJJTElUWV9TSEFSRURfTVVURVggX19zaGFyZWRfbXV0ZXhfYmFzZQorc3RydWN0IF9MSUJDUFBfVFlQRV9WSVMgX0xJQkNQUF9BVkFJTEFCSUxJVFlfU0hBUkVEX01VVEVYIF9MSUJDUFBfVEhSRUFEX1NBRkVUWV9BTk5PVEFUSU9OKGNhcGFiaWxpdHkoInNoYXJlZF9tdXRleCIpKQorX19zaGFyZWRfbXV0ZXhfYmFzZQogewogICAgIG11dGV4ICAgICAgICAgICAgICAgX19tdXRfOwogICAgIGNvbmRpdGlvbl92YXJpYWJsZSAgX19nYXRlMV87CkBAIC0xNjEsMTQgKzE2MSwxNCBAQAogICAgIF9fc2hhcmVkX211dGV4X2Jhc2UmIG9wZXJhdG9yPShjb25zdCBfX3NoYXJlZF9tdXRleF9iYXNlJikgPSBkZWxldGU7CiAKICAgICAvLyBFeGNsdXNpdmUgb3duZXJzaGlwCi0gICAgdm9pZCBsb2NrKCk7IC8vIGJsb2NraW5nCi0gICAgYm9vbCB0cnlfbG9jaygpOwotICAgIHZvaWQgdW5sb2NrKCk7CisgICAgdm9pZCBsb2NrKCkgX0xJQkNQUF9USFJFQURfU0FGRVRZX0FOTk9UQVRJT04oYWNxdWlyZV9jYXBhYmlsaXR5KCkpOyAvLyBibG9ja2luZworICAgIGJvb2wgdHJ5X2xvY2soKSBfTElCQ1BQX1RIUkVBRF9TQUZFVFlfQU5OT1RBVElPTih0cnlfYWNxdWlyZV9jYXBhYmlsaXR5KHRydWUpKTsKKyAgICB2b2lkIHVubG9jaygpIF9MSUJDUFBfVEhSRUFEX1NBRkVUWV9BTk5PVEFUSU9OKHJlbGVhc2VfY2FwYWJpbGl0eSgpKTsKIAogICAgIC8vIFNoYXJlZCBvd25lcnNoaXAKLSAgICB2b2lkIGxvY2tfc2hhcmVkKCk7IC8vIGJsb2NraW5nCi0gICAgYm9vbCB0cnlfbG9ja19zaGFyZWQoKTsKLSAgICB2b2lkIHVubG9ja19zaGFyZWQoKTsKKyAgICB2b2lkIGxvY2tfc2hhcmVkKCkgX0xJQkNQUF9USFJFQURfU0FGRVRZX0FOTk9UQVRJT04oYWNxdWlyZV9zaGFyZWRfY2FwYWJpbGl0eSgpKTsgLy8gYmxvY2tpbmcKKyAgICBib29sIHRyeV9sb2NrX3NoYXJlZCgpIF9MSUJDUFBfVEhSRUFEX1NBRkVUWV9BTk5PVEFUSU9OKHRyeV9hY3F1aXJlX3NoYXJlZF9jYXBhYmlsaXR5KHRydWUpKTsKKyAgICB2b2lkIHVubG9ja19zaGFyZWQoKSBfTElCQ1BQX1RIUkVBRF9TQUZFVFlfQU5OT1RBVElPTihyZWxlYXNlX3NoYXJlZF9jYXBhYmlsaXR5KCkpOwogCiAvLyAgICAgdHlwZWRlZiBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIG5hdGl2ZV9oYW5kbGVfdHlwZTsgLy8gU2VlIDMwLjIuMwogLy8gICAgIG5hdGl2ZV9oYW5kbGVfdHlwZSBuYXRpdmVfaGFuZGxlKCk7IC8vIFNlZSAzMC4yLjMKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zcGFuIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3NwYW4KaW5kZXggZWE3YWVjYi4uNzc0ZjY5OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3NwYW4KKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3NwYW4KQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHNwYW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0yMywyMCArMjIsNiBAQAogdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnRUeXBlLCBwdHJkaWZmX3QgRXh0ZW50ID0gZHluYW1pY19leHRlbnQ+CiAgICAgY2xhc3Mgc3BhbjsKIAotLy8gW3NwYW4uY29tcGFyaXNvbl0sIHNwYW4gY29tcGFyaXNvbiBvcGVyYXRvcnMKLXRlbXBsYXRlIDxjbGFzcyBULCBwdHJkaWZmX3QgWCwgY2xhc3MgVSwgcHRyZGlmZl90IFk+Ci0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShzcGFuPFQsIFg+IGwsIHNwYW48VSwgWT4gcik7Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgcHRyZGlmZl90IFgsIGNsYXNzIFUsIHB0cmRpZmZfdCBZPgotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oc3BhbjxULCBYPiBsLCBzcGFuPFUsIFk+IHIpOwotdGVtcGxhdGUgPGNsYXNzIFQsIHB0cmRpZmZfdCBYLCBjbGFzcyBVLCBwdHJkaWZmX3QgWT4KLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjwoc3BhbjxULCBYPiBsLCBzcGFuPFUsIFk+IHIpOwotdGVtcGxhdGUgPGNsYXNzIFQsIHB0cmRpZmZfdCBYLCBjbGFzcyBVLCBwdHJkaWZmX3QgWT4KLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcjw9KHNwYW48VCwgWD4gbCwgc3BhbjxVLCBZPiByKTsKLXRlbXBsYXRlIDxjbGFzcyBULCBwdHJkaWZmX3QgWCwgY2xhc3MgVSwgcHRyZGlmZl90IFk+Ci0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+KHNwYW48VCwgWD4gbCwgc3BhbjxVLCBZPiByKTsKLXRlbXBsYXRlIDxjbGFzcyBULCBwdHJkaWZmX3QgWCwgY2xhc3MgVSwgcHRyZGlmZl90IFk+Ci0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShzcGFuPFQsIFg+IGwsIHNwYW48VSwgWT4gcik7Ci0KIC8vIFtzcGFuLm9iamVjdHJlcF0sIHZpZXdzIG9mIG9iamVjdCByZXByZXNlbnRhdGlvbgogdGVtcGxhdGUgPGNsYXNzIEVsZW1lbnRUeXBlLCBwdHJkaWZmX3QgRXh0ZW50PgogICAgIHNwYW48Y29uc3QgYnl0ZSwgKChFeHRlbnQgPT0gZHluYW1pY19leHRlbnQpID8gZHluYW1pY19leHRlbnQgOgpAQCAtNTM5LDM2ICs1MjQsNiBAQAogICAgIGluZGV4X3R5cGUgX19zaXplOwogfTsKIAotdGVtcGxhdGUgPGNsYXNzIF9UcDEsIHB0cmRpZmZfdCBfRXh0ZW50MSwgY2xhc3MgX1RwMiwgcHRyZGlmZl90IF9FeHRlbnQyPgotICAgIGNvbnN0ZXhwciBib29sCi0gICAgb3BlcmF0b3I9PShjb25zdCBzcGFuPF9UcDEsIF9FeHRlbnQxPiYgX19saHMsIGNvbnN0IHNwYW48X1RwMiwgX0V4dGVudDI+JiBfX3JocykKLSAgICB7IHJldHVybiBlcXVhbChfX2xocy5iZWdpbigpLCBfX2xocy5lbmQoKSwgX19yaHMuYmVnaW4oKSwgX19yaHMuZW5kKCkpOyB9Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHAxLCBwdHJkaWZmX3QgX0V4dGVudDEsIGNsYXNzIF9UcDIsIHB0cmRpZmZfdCBfRXh0ZW50Mj4KLSAgICBjb25zdGV4cHIgYm9vbAotICAgIG9wZXJhdG9yIT0oY29uc3Qgc3BhbjxfVHAxLCBfRXh0ZW50MT4mIF9fbGhzLCBjb25zdCBzcGFuPF9UcDIsIF9FeHRlbnQyPiYgX19yaHMpCi0gICAgeyByZXR1cm4gIShfX3JocyA9PSBfX2xocyk7IH0KLQotdGVtcGxhdGUgPGNsYXNzIF9UcDEsIHB0cmRpZmZfdCBfRXh0ZW50MSwgY2xhc3MgX1RwMiwgcHRyZGlmZl90IF9FeHRlbnQyPgotICAgIGNvbnN0ZXhwciBib29sCi0gICAgb3BlcmF0b3I8IChjb25zdCBzcGFuPF9UcDEsIF9FeHRlbnQxPiYgX19saHMsIGNvbnN0IHNwYW48X1RwMiwgX0V4dGVudDI+JiBfX3JocykKLSAgICB7IHJldHVybiBsZXhpY29ncmFwaGljYWxfY29tcGFyZSAoX19saHMuYmVnaW4oKSwgX19saHMuZW5kKCksIF9fcmhzLmJlZ2luKCksIF9fcmhzLmVuZCgpKTsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgX1RwMSwgcHRyZGlmZl90IF9FeHRlbnQxLCBjbGFzcyBfVHAyLCBwdHJkaWZmX3QgX0V4dGVudDI+Ci0gICAgY29uc3RleHByIGJvb2wKLSAgICBvcGVyYXRvcjw9KGNvbnN0IHNwYW48X1RwMSwgX0V4dGVudDE+JiBfX2xocywgY29uc3Qgc3BhbjxfVHAyLCBfRXh0ZW50Mj4mIF9fcmhzKQotICAgIHsgcmV0dXJuICEoX19yaHMgPCBfX2xocyk7IH0KLQotdGVtcGxhdGUgPGNsYXNzIF9UcDEsIHB0cmRpZmZfdCBfRXh0ZW50MSwgY2xhc3MgX1RwMiwgcHRyZGlmZl90IF9FeHRlbnQyPgotICAgIGNvbnN0ZXhwciBib29sCi0gICAgb3BlcmF0b3I+IChjb25zdCBzcGFuPF9UcDEsIF9FeHRlbnQxPiYgX19saHMsIGNvbnN0IHNwYW48X1RwMiwgX0V4dGVudDI+JiBfX3JocykKLSAgICB7IHJldHVybiBfX3JocyA8IF9fbGhzOyB9Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHAxLCBwdHJkaWZmX3QgX0V4dGVudDEsIGNsYXNzIF9UcDIsIHB0cmRpZmZfdCBfRXh0ZW50Mj4KLSAgICBjb25zdGV4cHIgYm9vbAotICAgIG9wZXJhdG9yPj0oY29uc3Qgc3BhbjxfVHAxLCBfRXh0ZW50MT4mIF9fbGhzLCBjb25zdCBzcGFuPF9UcDIsIF9FeHRlbnQyPiYgX19yaHMpCi0gICAgeyByZXR1cm4gIShfX2xocyA8IF9fcmhzKTsgfQotCiAvLyAgYXNfYnl0ZXMgJiBhc193cml0ZWFibGVfYnl0ZXMKIHRlbXBsYXRlIDxjbGFzcyBfVHAsIHB0cmRpZmZfdCBfRXh0ZW50PgogICAgIGF1dG8gYXNfYnl0ZXMoc3BhbjxfVHAsIF9FeHRlbnQ+IF9fcykgbm9leGNlcHQKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zc3RyZWFtIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3NzdHJlYW0KaW5kZXggOWMzZWUxMy4uMTRjOTE5NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3NzdHJlYW0KKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3NzdHJlYW0KQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHNzdHJlYW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTU1OSw3ICs1NTgsNyBAQAogICAgICAgICAgICAgY2hhcl90eXBlKiBfX3AgPSBjb25zdF9jYXN0PGNoYXJfdHlwZSo+KF9fc3RyXy5kYXRhKCkpOwogICAgICAgICAgICAgdGhpcy0+c2V0ZyhfX3AsIF9fcCArIF9fbmlucCwgX19obV8pOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzLT5zcHV0YyhfX2MpOworICAgICAgICByZXR1cm4gdGhpcy0+c3B1dGModHJhaXRzX3R5cGU6OnRvX2NoYXJfdHlwZShfX2MpKTsKICAgICB9CiAgICAgcmV0dXJuIHRyYWl0c190eXBlOjpub3RfZW9mKF9fYyk7CiB9CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3RhY2sgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3RhY2sKaW5kZXggMmIzZjhhZS4uYjUwY2E1YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0YWNrCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdGFjawpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN0YWNrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0ZGJvb2wuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdGRib29sLmgKaW5kZXggODZhMTI3Zi4uODFhN2NiMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0ZGJvb2wuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3RkYm9vbC5oCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdGRib29sLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogI2lmbmRlZiBfTElCQ1BQX1NUREJPT0xfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0ZGRlZi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0ZGRlZi5oCmluZGV4IGY2NTA2NWQuLjY0OTdkY2QgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdGRkZWYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3RkZGVmLmgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN0ZGRlZi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdGRleGNlcHQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3RkZXhjZXB0CmluZGV4IDNlYzc5MzQuLjZlZGE2MTkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdGRleGNlcHQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0ZGV4Y2VwdApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3RkZXhjZXB0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0ZGludC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0ZGludC5oCmluZGV4IDQ2OGY2Y2QuLmM4OTIyOTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdGRpbnQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3RkaW50LmgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdGRpbnQuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdGRpby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0ZGlvLmgKaW5kZXggNzdhMzE0Yi4uZTA4ZTZiYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0ZGlvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0ZGlvLmgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdGRpby5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdGRsaWIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdGRsaWIuaAppbmRleCBmMTFjNWU3Li4yMDg3NTQ0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3RkbGliLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0ZGxpYi5oCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdGRsaWIuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3RyZWFtYnVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0cmVhbWJ1ZgppbmRleCAzN2E2NTMyLi40OGMwN2Q1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3RyZWFtYnVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdHJlYW1idWYKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdHJlYW1idWYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTEzOCw3ICsxMzcsNyBAQAogICAgIHZpcnR1YWwgfmJhc2ljX3N0cmVhbWJ1ZigpOwogCiAgICAgLy8gMjcuNi4yLjIuMSBsb2NhbGVzOgotICAgIGlubGluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9JTkxJTkVfVklTSUJJTElUWQorICAgIGlubGluZSBfTElCQ1BQX0hJREVfRlJPTV9BQklfQUZURVJfVjEKICAgICBsb2NhbGUgcHViaW1idWUoY29uc3QgbG9jYWxlJiBfX2xvYykgewogICAgICAgICBpbWJ1ZShfX2xvYyk7CiAgICAgICAgIGxvY2FsZSBfX3IgPSBfX2xvY187CkBAIC0xNDYsNzAgKzE0NSw3MCBAQAogICAgICAgICByZXR1cm4gX19yOwogICAgIH0KIAotICAgIGlubGluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9JTkxJTkVfVklTSUJJTElUWQorICAgIGlubGluZSBfTElCQ1BQX0hJREVfRlJPTV9BQklfQUZURVJfVjEKICAgICBsb2NhbGUgZ2V0bG9jKCkgY29uc3QgeyByZXR1cm4gX19sb2NfOyB9CiAKICAgICAvLyAyNy42LjIuMi4yIGJ1ZmZlciBhbmQgcG9zaXRpb25pbmc6Ci0gICAgaW5saW5lIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFX0lOTElORV9WSVNJQklMSVRZCisgICAgaW5saW5lIF9MSUJDUFBfSElERV9GUk9NX0FCSV9BRlRFUl9WMQogICAgIGJhc2ljX3N0cmVhbWJ1ZiogcHVic2V0YnVmKGNoYXJfdHlwZSogX19zLCBzdHJlYW1zaXplIF9fbikKICAgICB7IHJldHVybiBzZXRidWYoX19zLCBfX24pOyB9CiAKLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgcG9zX3R5cGUgcHVic2Vla29mZihvZmZfdHlwZSBfX29mZiwgaW9zX2Jhc2U6OnNlZWtkaXIgX193YXksCiAgICAgICAgICAgICAgICAgICAgICAgICBpb3NfYmFzZTo6b3Blbm1vZGUgX193aGljaCA9IGlvc19iYXNlOjppbiB8IGlvc19iYXNlOjpvdXQpCiAgICAgeyByZXR1cm4gc2Vla29mZihfX29mZiwgX193YXksIF9fd2hpY2gpOyB9CiAKLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgcG9zX3R5cGUgcHVic2Vla3Bvcyhwb3NfdHlwZSBfX3NwLAogICAgICAgICAgICAgICAgICAgICAgICAgaW9zX2Jhc2U6Om9wZW5tb2RlIF9fd2hpY2ggPSBpb3NfYmFzZTo6aW4gfCBpb3NfYmFzZTo6b3V0KQogICAgIHsgcmV0dXJuIHNlZWtwb3MoX19zcCwgX193aGljaCk7IH0KIAotICAgIGlubGluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9JTkxJTkVfVklTSUJJTElUWQorICAgIGlubGluZSBfTElCQ1BQX0hJREVfRlJPTV9BQklfQUZURVJfVjEKICAgICBpbnQgcHVic3luYygpIHsgcmV0dXJuIHN5bmMoKTsgfQogCiAgICAgLy8gR2V0IGFuZCBwdXQgYXJlYXM6CiAgICAgLy8gMjcuNi4yLjIuMyBHZXQgYXJlYToKLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgc3RyZWFtc2l6ZSBpbl9hdmFpbCgpIHsKICAgICAgICAgaWYgKF9fbmlucF8gPCBfX2VpbnBfKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHN0cmVhbXNpemU+KF9fZWlucF8gLSBfX25pbnBfKTsKICAgICAgICAgcmV0dXJuIHNob3dtYW55YygpOwogICAgIH0KIAotICAgIGlubGluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9JTkxJTkVfVklTSUJJTElUWQorICAgIGlubGluZSBfTElCQ1BQX0hJREVfRlJPTV9BQklfQUZURVJfVjEKICAgICBpbnRfdHlwZSBzbmV4dGMoKSB7CiAgICAgICAgIGlmIChzYnVtcGMoKSA9PSB0cmFpdHNfdHlwZTo6ZW9mKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJhaXRzX3R5cGU6OmVvZigpOwogICAgICAgICByZXR1cm4gc2dldGMoKTsKICAgICB9CiAKLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgaW50X3R5cGUgc2J1bXBjKCkgewogICAgICAgICBpZiAoX19uaW5wXyA9PSBfX2VpbnBfKQogICAgICAgICAgICAgcmV0dXJuIHVmbG93KCk7CiAgICAgICAgIHJldHVybiB0cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoKl9fbmlucF8rKyk7CiAgICAgfQogCi0gICAgaW5saW5lIF9MSUJDUFBfRVhURVJOX1RFTVBMQVRFX0lOTElORV9WSVNJQklMSVRZCisgICAgaW5saW5lIF9MSUJDUFBfSElERV9GUk9NX0FCSV9BRlRFUl9WMQogICAgIGludF90eXBlIHNnZXRjKCkgewogICAgICAgICBpZiAoX19uaW5wXyA9PSBfX2VpbnBfKQogICAgICAgICAgICAgcmV0dXJuIHVuZGVyZmxvdygpOwogICAgICAgICByZXR1cm4gdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKCpfX25pbnBfKTsKICAgICB9CiAKLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgc3RyZWFtc2l6ZSBzZ2V0bihjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24pCiAgICAgeyByZXR1cm4geHNnZXRuKF9fcywgX19uKTsgfQogCiAgICAgLy8gMjcuNi4yLjIuNCBQdXRiYWNrOgotICAgIGlubGluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9JTkxJTkVfVklTSUJJTElUWQorICAgIGlubGluZSBfTElCQ1BQX0hJREVfRlJPTV9BQklfQUZURVJfVjEKICAgICBpbnRfdHlwZSBzcHV0YmFja2MoY2hhcl90eXBlIF9fYykgewogICAgICAgICBpZiAoX19iaW5wXyA9PSBfX25pbnBfIHx8ICF0cmFpdHNfdHlwZTo6ZXEoX19jLCBfX25pbnBfWy0xXSkpCiAgICAgICAgICAgICByZXR1cm4gcGJhY2tmYWlsKHRyYWl0c190eXBlOjp0b19pbnRfdHlwZShfX2MpKTsKICAgICAgICAgcmV0dXJuIHRyYWl0c190eXBlOjp0b19pbnRfdHlwZSgqLS1fX25pbnBfKTsKICAgICB9CiAKLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgaW50X3R5cGUgc3VuZ2V0YygpIHsKICAgICAgICAgaWYgKF9fYmlucF8gPT0gX19uaW5wXykKICAgICAgICAgICByZXR1cm4gcGJhY2tmYWlsKCk7CkBAIC0yMTcsNyArMjE2LDcgQEAKICAgICB9CiAKICAgICAvLyAyNy42LjIuMi41IFB1dCBhcmVhOgotICAgIGlubGluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9JTkxJTkVfVklTSUJJTElUWQorICAgIGlubGluZSBfTElCQ1BQX0hJREVfRlJPTV9BQklfQUZURVJfVjEKICAgICBpbnRfdHlwZSBzcHV0YyhjaGFyX3R5cGUgX19jKSB7CiAgICAgICAgIGlmIChfX25vdXRfID09IF9fZW91dF8pCiAgICAgICAgICAgICByZXR1cm4gb3ZlcmZsb3codHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKF9fYykpOwpAQCAtMjI1LDcgKzIyNCw3IEBACiAgICAgICAgIHJldHVybiB0cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoX19jKTsKICAgICB9CiAKLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgc3RyZWFtc2l6ZSBzcHV0bihjb25zdCBjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24pCiAgICAgeyByZXR1cm4geHNwdXRuKF9fcywgX19uKTsgfQogCkBAIC0yNDAsMTAgKzIzOSwxMCBAQAogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY2hhcl90eXBlKiBncHRyKCkgIGNvbnN0IHtyZXR1cm4gX19uaW5wXzt9CiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjaGFyX3R5cGUqIGVncHRyKCkgY29uc3Qge3JldHVybiBfX2VpbnBfO30KIAotICAgIGlubGluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9JTkxJTkVfVklTSUJJTElUWQorICAgIGlubGluZSBfTElCQ1BQX0hJREVfRlJPTV9BQklfQUZURVJfVjEKICAgICB2b2lkIGdidW1wKGludCBfX24pIHsgX19uaW5wXyArPSBfX247IH0KIAotICAgIGlubGluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9JTkxJTkVfVklTSUJJTElUWQorICAgIGlubGluZSBfTElCQ1BQX0hJREVfRlJPTV9BQklfQUZURVJfVjEKICAgICB2b2lkIHNldGcoY2hhcl90eXBlKiBfX2diZWcsIGNoYXJfdHlwZSogX19nbmV4dCwgY2hhcl90eXBlKiBfX2dlbmQpIHsKICAgICAgICAgX19iaW5wXyA9IF9fZ2JlZzsKICAgICAgICAgX19uaW5wXyA9IF9fZ25leHQ7CkBAIC0yNTUsMTMgKzI1NCwxMyBAQAogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgY2hhcl90eXBlKiBwcHRyKCkgIGNvbnN0IHtyZXR1cm4gX19ub3V0Xzt9CiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBjaGFyX3R5cGUqIGVwcHRyKCkgY29uc3Qge3JldHVybiBfX2VvdXRfO30KIAotICAgIGlubGluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9JTkxJTkVfVklTSUJJTElUWQorICAgIGlubGluZSBfTElCQ1BQX0hJREVfRlJPTV9BQklfQUZURVJfVjEKICAgICB2b2lkIHBidW1wKGludCBfX24pIHsgX19ub3V0XyArPSBfX247IH0KIAogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICB2b2lkIF9fcGJ1bXAoc3RyZWFtc2l6ZSBfX24pIHsgX19ub3V0XyArPSBfX247IH0KIAotICAgIGlubGluZSBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9JTkxJTkVfVklTSUJJTElUWQorICAgIGlubGluZSBfTElCQ1BQX0hJREVfRlJPTV9BQklfQUZURVJfVjEKICAgICB2b2lkIHNldHAoY2hhcl90eXBlKiBfX3BiZWcsIGNoYXJfdHlwZSogX19wZW5kKSB7CiAgICAgICAgIF9fYm91dF8gPSBfX25vdXRfID0gX19wYmVnOwogICAgICAgICBfX2VvdXRfID0gX19wZW5kOwpAQCAtNDg2LDcgKzQ4NSw3IEBACiAgICAgcmV0dXJuIHRyYWl0c190eXBlOjplb2YoKTsKIH0KIAotI2lmbmRlZiBfTElCQ1BQX0FWQUlMQUJJTElUWV9OT19TVFJFQU1TX0VYVEVSTl9URU1QTEFURQorI2lmbmRlZiBfTElCQ1BQX0RPX05PVF9BU1NVTUVfU1RSRUFNU19FWFBMSUNJVF9JTlNUQU5USUFUSU9OX0lOX0RZTElCCiBfTElCQ1BQX0VYVEVSTl9URU1QTEFURShjbGFzcyBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9UWVBFX1ZJUyBiYXNpY19zdHJlYW1idWY8Y2hhcj4pCiBfTElCQ1BQX0VYVEVSTl9URU1QTEFURShjbGFzcyBfTElCQ1BQX0VYVEVSTl9URU1QTEFURV9UWVBFX1ZJUyBiYXNpY19zdHJlYW1idWY8d2NoYXJfdD4pCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdHJpbmcgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3RyaW5nCmluZGV4IGM3OTE2NGMuLmU2ZDE2MTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdHJpbmcKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0cmluZwpAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3RyaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNDM3LDYgKzQzNiwxMSBAQAogYmFzaWNfaXN0cmVhbTxjaGFyVCwgdHJhaXRzPiYKIGdldGxpbmUoYmFzaWNfaXN0cmVhbTxjaGFyVCwgdHJhaXRzPiYgaXMsIGJhc2ljX3N0cmluZzxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzdHIpOwogCit0ZW1wbGF0ZTxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIFU+Cit2b2lkIGVyYXNlKGJhc2ljX3N0cmluZzxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBjLCBjb25zdCBVJiB2YWx1ZSk7IC8vIEMrKzIwCit0ZW1wbGF0ZTxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIFByZWRpY2F0ZT4KK3ZvaWQgZXJhc2VfaWYoYmFzaWNfc3RyaW5nPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIGMsIFByZWRpY2F0ZSBwcmVkKTsgLy8gQysrMjAKKwogdHlwZWRlZiBiYXNpY19zdHJpbmc8Y2hhcj4gICAgc3RyaW5nOwogdHlwZWRlZiBiYXNpY19zdHJpbmc8d2NoYXJfdD4gd3N0cmluZzsKIHR5cGVkZWYgYmFzaWNfc3RyaW5nPGNoYXIxNl90PiB1MTZzdHJpbmc7CkBAIC01ODAsNiArNTg0LDcgQEAKIG9wZXJhdG9yKyhfQ2hhclQgX194LCBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULF9UcmFpdHMsX0FsbG9jYXRvcj4mIF9feSk7CiAKIHRlbXBsYXRlPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KK2lubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPgogb3BlcmF0b3IrKGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+JiBfX3gsIGNvbnN0IF9DaGFyVCogX195KTsKIApAQCAtODA3LDcgKzgxMiw5IEBACiAgICAgYmFzaWNfc3RyaW5nKGJhc2ljX3N0cmluZyYmIF9fc3RyLCBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hKTsKICNlbmRpZiAgLy8gX0xJQkNQUF9DWFgwM19MQU5HCiAKKyNpZm5kZWYgX0xJQkNQUF9IQVNfTk9fREVEVUNUSU9OX0dVSURFUwogICAgIHRlbXBsYXRlIDxjbGFzcyA9IHR5cGVuYW1lIGVuYWJsZV9pZjxfX2lzX2FsbG9jYXRvcjxfQWxsb2NhdG9yPjo6dmFsdWUsIG51bGxwdHJfdD46OnR5cGU+CisjZW5kaWYKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgYmFzaWNfc3RyaW5nKGNvbnN0IF9DaGFyVCogX19zKSB7CiAgICAgICBfTElCQ1BQX0FTU0VSVChfX3MgIT0gbnVsbHB0ciwgImJhc2ljX3N0cmluZyhjb25zdCBjaGFyKikgZGV0ZWN0ZWQgbnVsbHB0ciIpOwpAQCAtODE3LDcgKzgyNCw5IEBACiAjICAgZW5kaWYKICAgICB9CiAKKyNpZm5kZWYgX0xJQkNQUF9IQVNfTk9fREVEVUNUSU9OX0dVSURFUwogICAgIHRlbXBsYXRlIDxjbGFzcyA9IHR5cGVuYW1lIGVuYWJsZV9pZjxfX2lzX2FsbG9jYXRvcjxfQWxsb2NhdG9yPjo6dmFsdWUsIG51bGxwdHJfdD46OnR5cGU+CisjZW5kaWYKICAgICAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgICAgICBiYXNpY19zdHJpbmcoY29uc3QgX0NoYXJUKiBfX3MsIGNvbnN0IF9BbGxvY2F0b3ImIF9fYSk7CiAKQEAgLTgyOCw3ICs4MzcsOSBAQAogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICBiYXNpY19zdHJpbmcoc2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYyk7CiAKKyNpZm5kZWYgX0xJQkNQUF9IQVNfTk9fREVEVUNUSU9OX0dVSURFUwogICAgIHRlbXBsYXRlIDxjbGFzcyA9IHR5cGVuYW1lIGVuYWJsZV9pZjxfX2lzX2FsbG9jYXRvcjxfQWxsb2NhdG9yPjo6dmFsdWUsIG51bGxwdHJfdD46OnR5cGU+CisjZW5kaWYKICAgICAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgICAgICBiYXNpY19zdHJpbmcoc2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYywgY29uc3QgX0FsbG9jYXRvciYgX19hKTsKIApAQCAtOTQ5LDcgKzk2MCwxMSBAQAogICAgIHZvaWQgcmVzaXplKHNpemVfdHlwZSBfX24sIHZhbHVlX3R5cGUgX19jKTsKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHZvaWQgcmVzaXplKHNpemVfdHlwZSBfX24pIHtyZXNpemUoX19uLCB2YWx1ZV90eXBlKCkpO30KIAotICAgIHZvaWQgcmVzZXJ2ZShzaXplX3R5cGUgX19yZXNfYXJnID0gMCk7CisgICAgdm9pZCByZXNlcnZlKHNpemVfdHlwZSBfX3Jlc19hcmcpOworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgdm9pZCBfX3Jlc2l6ZV9kZWZhdWx0X2luaXQoc2l6ZV90eXBlIF9fbik7CisKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCByZXNlcnZlKCkgX05PRVhDRVBUIHtyZXNlcnZlKDApO30KICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgdm9pZCBzaHJpbmtfdG9fZml0KCkgX05PRVhDRVBUIHtyZXNlcnZlKCk7fQogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKQEAgLTEwMDMsNiArMTAxOCwxMCBAQAogICAgIGJhc2ljX3N0cmluZyYgYXBwZW5kKGNvbnN0IHZhbHVlX3R5cGUqIF9fcywgc2l6ZV90eXBlIF9fbik7CiAgICAgYmFzaWNfc3RyaW5nJiBhcHBlbmQoY29uc3QgdmFsdWVfdHlwZSogX19zKTsKICAgICBiYXNpY19zdHJpbmcmIGFwcGVuZChzaXplX3R5cGUgX19uLCB2YWx1ZV90eXBlIF9fYyk7CisKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBfX2FwcGVuZF9kZWZhdWx0X2luaXQoc2l6ZV90eXBlIF9fbik7CisKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4KICAgICBfTElCQ1BQX01FVEhPRF9URU1QTEFURV9JTVBMSUNJVF9JTlNUQU5USUFUSU9OX1ZJUwogICAgIGJhc2ljX3N0cmluZyYgX19hcHBlbmRfZm9yd2FyZF91bnNhZmUoX0ZvcndhcmRJdGVyYXRvciwgX0ZvcndhcmRJdGVyYXRvcik7CkBAIC0xNjY1LDcgKzE2ODQsNyBAQAogCiAgICAgICAgICAgICAgICAgICAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiB2b2lkCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6X19pbnZhbGlkYXRlX2FsbF9pdGVyYXRvcnMoKQogewpAQCAtMTY3NSw3ICsxNjk0LDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIHZvaWQKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpfX2ludmFsaWRhdGVfaXRlcmF0b3JzX3Bhc3Qoc2l6ZV90eXBlCiAjaWYgX0xJQkNQUF9ERUJVR19MRVZFTCA+PSAyCkBAIC0xNzA1LDcgKzE3MjQsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmJhc2ljX3N0cmluZygpCiAgICAgX05PRVhDRVBUXyhpc19ub3Rocm93X2RlZmF1bHRfY29uc3RydWN0aWJsZTxhbGxvY2F0b3JfdHlwZT46OnZhbHVlKQogewpAQCAtMTcxNiw3ICsxNzM1LDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpiYXNpY19zdHJpbmcoY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSkKICNpZiBfTElCQ1BQX1NURF9WRVIgPD0gMTQKICAgICAgICAgX05PRVhDRVBUXyhpc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZTxhbGxvY2F0b3JfdHlwZT46OnZhbHVlKQpAQCAtMTc4MSw3ICsxODAwLDkgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KKyNpZm5kZWYgX0xJQkNQUF9IQVNfTk9fREVEVUNUSU9OX0dVSURFUwogdGVtcGxhdGUgPGNsYXNzPgorI2VuZGlmCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6YmFzaWNfc3RyaW5nKGNvbnN0IF9DaGFyVCogX19zLCBjb25zdCBfQWxsb2NhdG9yJiBfX2EpCiAgICAgOiBfX3JfKF9fc2Vjb25kX3RhZygpLCBfX2EpCiB7CkBAIC0xNzkzLDcgKzE4MTQsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmJhc2ljX3N0cmluZyhjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbikKIHsKICAgICBfTElCQ1BQX0FTU0VSVChfX24gPT0gMCB8fCBfX3MgIT0gbnVsbHB0ciwgImJhc2ljX3N0cmluZyhjb25zdCBjaGFyKiwgbikgZGV0ZWN0ZWQgbnVsbHB0ciIpOwpAQCAtMTgwNCw3ICsxODI1LDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpiYXNpY19zdHJpbmcoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24sIGNvbnN0IF9BbGxvY2F0b3ImIF9fYSkKICAgICA6IF9fcl8oX19zZWNvbmRfdGFnKCksIF9fYSkKIHsKQEAgLTE4NDUsNyArMTg2Niw3IEBACiAjaWZuZGVmIF9MSUJDUFBfQ1hYMDNfTEFORwogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmJhc2ljX3N0cmluZyhiYXNpY19zdHJpbmcmJiBfX3N0cikKICNpZiBfTElCQ1BQX1NURF9WRVIgPD0gMTQKICAgICAgICAgX05PRVhDRVBUXyhpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxhbGxvY2F0b3JfdHlwZT46OnZhbHVlKQpAQCAtMTg2Myw3ICsxODg0LDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpiYXNpY19zdHJpbmcoYmFzaWNfc3RyaW5nJiYgX19zdHIsIGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpCiAgICAgOiBfX3JfKF9fc2Vjb25kX3RhZygpLCBfX2EpCiB7CkBAIC0xOTA4LDcgKzE5MjksNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmJhc2ljX3N0cmluZyhzaXplX3R5cGUgX19uLCBfQ2hhclQgX19jKQogewogICAgIF9faW5pdChfX24sIF9fYyk7CkBAIC0xOTE4LDcgKzE5MzksOSBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgorI2lmbmRlZiBfTElCQ1BQX0hBU19OT19ERURVQ1RJT05fR1VJREVTCiB0ZW1wbGF0ZSA8Y2xhc3M+CisjZW5kaWYKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpiYXNpY19zdHJpbmcoc2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYywgY29uc3QgX0FsbG9jYXRvciYgX19hKQogICAgIDogX19yXyhfX3NlY29uZF90YWcoKSwgX19hKQogewpAQCAtMTk0NCw3ICsxOTY3LDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpiYXNpY19zdHJpbmcoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfQWxsb2NhdG9yJiBfX2EpCiAgICAgOiBfX3JfKF9fc2Vjb25kX3RhZygpLCBfX2EpCkBAIC0yMDU1LDcgKzIwNzgsNyBAQAogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgogdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6YmFzaWNfc3RyaW5nKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkKIHsKICAgICBfX2luaXQoX19maXJzdCwgX19sYXN0KTsKQEAgLTIwNjYsNyArMjA4OSw3IEBACiAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+CiB0ZW1wbGF0ZTxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpiYXNpY19zdHJpbmcoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hKQogICAgIDogX19yXyhfX3NlY29uZF90YWcoKSwgX19hKQpAQCAtMjA4MCw3ICsyMTAzLDcgQEAKICNpZm5kZWYgX0xJQkNQUF9DWFgwM19MQU5HCiAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6YmFzaWNfc3RyaW5nKAogICAgIGluaXRpYWxpemVyX2xpc3Q8X0NoYXJUPiBfX2lsKQogewpAQCAtMjA5MSw3ICsyMTE0LDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIAogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmJhc2ljX3N0cmluZygKICAgICBpbml0aWFsaXplcl9saXN0PF9DaGFyVD4gX19pbCwgY29uc3QgX0FsbG9jYXRvciYgX19hKQpAQCAtMjI1NSw3ICsyMjc4LDcgQEAKICNpZm5kZWYgX0xJQkNQUF9DWFgwM19MQU5HCiAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiB2b2lkCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6X19tb3ZlX2Fzc2lnbihiYXNpY19zdHJpbmcmIF9fc3RyLCBmYWxzZV90eXBlKQogICAgIF9OT0VYQ0VQVF8oX19hbGxvY190cmFpdHM6OmlzX2Fsd2F5c19lcXVhbDo6dmFsdWUpCkBAIC0yMjY3LDcgKzIyOTAsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogdm9pZAogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46Ol9fbW92ZV9hc3NpZ24oYmFzaWNfc3RyaW5nJiBfX3N0ciwgdHJ1ZV90eXBlKQogI2lmIF9MSUJDUFBfU1REX1ZFUiA+IDE0CkBAIC0yMjgzLDcgKzIzMDYsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj4mCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6b3BlcmF0b3I9KGJhc2ljX3N0cmluZyYmIF9fc3RyKQogICAgIF9OT0VYQ0VQVF8oKF9fbm9leGNlcHRfbW92ZV9hc3NpZ25fY29udGFpbmVyPF9BbGxvY2F0b3IsIF9fYWxsb2NfdHJhaXRzPjo6dmFsdWUpKQpAQCAtMjQxNyw2ICsyNDQwLDIzIEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+CitpbmxpbmUgdm9pZAorYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46Ol9fYXBwZW5kX2RlZmF1bHRfaW5pdChzaXplX3R5cGUgX19uKQoreworICAgIGlmIChfX24pCisgICAgeworICAgICAgICBzaXplX3R5cGUgX19jYXAgPSBjYXBhY2l0eSgpOworICAgICAgICBzaXplX3R5cGUgX19zeiA9IHNpemUoKTsKKyAgICAgICAgaWYgKF9fY2FwIC0gX19zeiA8IF9fbikKKyAgICAgICAgICAgIF9fZ3Jvd19ieShfX2NhcCwgX19zeiArIF9fbiAtIF9fY2FwLCBfX3N6LCBfX3N6LCAwKTsKKyAgICAgICAgcG9pbnRlciBfX3AgPSBfX2dldF9wb2ludGVyKCk7CisgICAgICAgIF9fc3ogKz0gX19uOworICAgICAgICBfX3NldF9zaXplKF9fc3opOworICAgICAgICB0cmFpdHNfdHlwZTo6YXNzaWduKF9fcFtfX3N6XSwgdmFsdWVfdHlwZSgpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+CiB2b2lkCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6cHVzaF9iYWNrKHZhbHVlX3R5cGUgX19jKQogewpAQCAtMjUwMCw3ICsyNTQwLDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+JgogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmFwcGVuZChjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKQogewpAQCAtMjY3Nyw3ICsyNzE3LDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+JgogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46Omluc2VydChzaXplX3R5cGUgX19wb3MxLCBjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKQogewpAQCAtMjc0Nyw3ICsyNzg3LDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjppdGVyYXRvcgogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46Omluc2VydChjb25zdF9pdGVyYXRvciBfX3Bvcywgc2l6ZV90eXBlIF9fbiwgdmFsdWVfdHlwZSBfX2MpCiB7CkBAIC0yODY3LDcgKzI5MDcsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj4mCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6cmVwbGFjZShzaXplX3R5cGUgX19wb3MxLCBzaXplX3R5cGUgX19uMSwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cikKIHsKQEAgLTI5MTEsNyArMjk1MSw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPiYKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpyZXBsYWNlKGNvbnN0X2l0ZXJhdG9yIF9faTEsIGNvbnN0X2l0ZXJhdG9yIF9faTIsIGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIpCiB7CkBAIC0yOTIwLDcgKzI5NjAsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj4mCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6cmVwbGFjZShjb25zdF9pdGVyYXRvciBfX2kxLCBjb25zdF9pdGVyYXRvciBfX2kyLCBjb25zdCB2YWx1ZV90eXBlKiBfX3MsIHNpemVfdHlwZSBfX24pCiB7CkBAIC0yOTI4LDcgKzI5NjgsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj4mCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6cmVwbGFjZShjb25zdF9pdGVyYXRvciBfX2kxLCBjb25zdF9pdGVyYXRvciBfX2kyLCBjb25zdCB2YWx1ZV90eXBlKiBfX3MpCiB7CkBAIC0yOTM2LDcgKzI5NzYsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj4mCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6cmVwbGFjZShjb25zdF9pdGVyYXRvciBfX2kxLCBjb25zdF9pdGVyYXRvciBfX2kyLCBzaXplX3R5cGUgX19uLCB2YWx1ZV90eXBlIF9fYykKIHsKQEAgLTI5NjgsNyArMzAwOCw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6aXRlcmF0b3IKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjplcmFzZShjb25zdF9pdGVyYXRvciBfX3BvcykKIHsKQEAgLTI5ODYsNyArMzAyNiw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6aXRlcmF0b3IKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjplcmFzZShjb25zdF9pdGVyYXRvciBfX2ZpcnN0LCBjb25zdF9pdGVyYXRvciBfX2xhc3QpCiB7CkBAIC0zMDAzLDcgKzMwNDMsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogdm9pZAogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OnBvcF9iYWNrKCkKIHsKQEAgLTMwMjUsNyArMzA2NSw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiB2b2lkCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6Y2xlYXIoKSBfTk9FWENFUFQKIHsKQEAgLTMwNDMsNyArMzA4Myw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiB2b2lkCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6X19lcmFzZV90b19lbmQoc2l6ZV90eXBlIF9fcG9zKQogewpAQCAtMzA3Miw3ICszMTEyLDE4IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lIHZvaWQKK2Jhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpfX3Jlc2l6ZV9kZWZhdWx0X2luaXQoc2l6ZV90eXBlIF9fbikKK3sKKyAgICBzaXplX3R5cGUgX19zeiA9IHNpemUoKTsKKyAgICBpZiAoX19uID4gX19zeikgeworICAgICAgIF9fYXBwZW5kX2RlZmF1bHRfaW5pdChfX24gLSBfX3N6KTsKKyAgICB9IGVsc2UKKyAgICAgICAgX19lcmFzZV90b19lbmQoX19uKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KK2lubGluZQogdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OnNpemVfdHlwZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46Om1heF9zaXplKCkgY29uc3QgX05PRVhDRVBUCiB7CkBAIC0zMTQ4LDcgKzMxOTksNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmNvbnN0X3JlZmVyZW5jZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46Om9wZXJhdG9yW10oc2l6ZV90eXBlIF9fcG9zKSBjb25zdCBfTk9FWENFUFQKIHsKQEAgLTMxNTcsNyArMzIwOCw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6cmVmZXJlbmNlCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6b3BlcmF0b3JbXShzaXplX3R5cGUgX19wb3MpIF9OT0VYQ0VQVAogewpAQCAtMzE4NCw3ICszMjM1LDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpyZWZlcmVuY2UKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+Ojpmcm9udCgpCiB7CkBAIC0zMTkzLDcgKzMyNDQsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmNvbnN0X3JlZmVyZW5jZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmZyb250KCkgY29uc3QKIHsKQEAgLTMyMDIsNyArMzI1Myw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6cmVmZXJlbmNlCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6YmFjaygpCiB7CkBAIC0zMjExLDcgKzMyNjIsNyBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmNvbnN0X3JlZmVyZW5jZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmJhY2soKSBjb25zdAogewpAQCAtMzIzMiw3ICszMjgzLDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+CiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6c3Vic3RyKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QKIHsKQEAgLTMyNDAsNyArMzI5MSw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiB2b2lkCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6c3dhcChiYXNpY19zdHJpbmcmIF9fc3RyKQogI2lmIF9MSUJDUFBfU1REX1ZFUiA+PSAxNApAQCAtMzI4OCw3ICszMzM5LDcgQEAKIH0KIAogdGVtcGxhdGU8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OnNpemVfdHlwZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmZpbmQoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSBfX3BvcykgY29uc3QgX05PRVhDRVBUCkBAIC0zMzEzLDcgKzMzNjQsNyBAQAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6c2l6ZV90eXBlCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6ZmluZChjb25zdCB2YWx1ZV90eXBlKiBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgX19wb3MpIGNvbnN0IF9OT0VYQ0VQVApAQCAtMzM0Niw3ICszMzk3LDcgQEAKIH0KIAogdGVtcGxhdGU8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OnNpemVfdHlwZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OnJmaW5kKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIF9fcG9zKSBjb25zdCBfTk9FWENFUFQKQEAgLTMzNzEsNyArMzQyMiw3IEBACiB9CiAKIHRlbXBsYXRlPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpzaXplX3R5cGUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpyZmluZChjb25zdCB2YWx1ZV90eXBlKiBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIF9fcG9zKSBjb25zdCBfTk9FWENFUFQKQEAgLTM0MDQsNyArMzQ1NSw3IEBACiB9CiAKIHRlbXBsYXRlPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpzaXplX3R5cGUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpmaW5kX2ZpcnN0X29mKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgX19wb3MpIGNvbnN0IF9OT0VYQ0VQVApAQCAtMzQyOSw3ICszNDgwLDcgQEAKIH0KIAogdGVtcGxhdGU8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OnNpemVfdHlwZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmZpbmRfZmlyc3Rfb2YoY29uc3QgdmFsdWVfdHlwZSogX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIF9fcG9zKSBjb25zdCBfTk9FWENFUFQKQEAgLTM0NDAsNyArMzQ5MSw3IEBACiB9CiAKIHRlbXBsYXRlPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpzaXplX3R5cGUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpmaW5kX2ZpcnN0X29mKHZhbHVlX3R5cGUgX19jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIF9fcG9zKSBjb25zdCBfTk9FWENFUFQKQEAgLTM0NjIsNyArMzUxMyw3IEBACiB9CiAKIHRlbXBsYXRlPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpzaXplX3R5cGUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpmaW5kX2xhc3Rfb2YoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIF9fcG9zKSBjb25zdCBfTk9FWENFUFQKQEAgLTM0ODcsNyArMzUzOCw3IEBACiB9CiAKIHRlbXBsYXRlPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpzaXplX3R5cGUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpmaW5kX2xhc3Rfb2YoY29uc3QgdmFsdWVfdHlwZSogX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgX19wb3MpIGNvbnN0IF9OT0VYQ0VQVApAQCAtMzQ5OCw3ICszNTQ5LDcgQEAKIH0KIAogdGVtcGxhdGU8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OnNpemVfdHlwZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmZpbmRfbGFzdF9vZih2YWx1ZV90eXBlIF9fYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIF9fcG9zKSBjb25zdCBfTk9FWENFUFQKQEAgLTM1MjAsNyArMzU3MSw3IEBACiB9CiAKIHRlbXBsYXRlPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpzaXplX3R5cGUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpmaW5kX2ZpcnN0X25vdF9vZihjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSBfX3BvcykgY29uc3QgX05PRVhDRVBUCkBAIC0zNTQ1LDcgKzM1OTYsNyBAQAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6c2l6ZV90eXBlCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6ZmluZF9maXJzdF9ub3Rfb2YoY29uc3QgdmFsdWVfdHlwZSogX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSBfX3BvcykgY29uc3QgX05PRVhDRVBUCkBAIC0zNTU2LDcgKzM2MDcsNyBAQAogfQogCiB0ZW1wbGF0ZTxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6c2l6ZV90eXBlCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6ZmluZF9maXJzdF9ub3Rfb2YodmFsdWVfdHlwZSBfX2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIF9fcG9zKSBjb25zdCBfTk9FWENFUFQKQEAgLTM1NzksNyArMzYzMCw3IEBACiB9CiAKIHRlbXBsYXRlPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpzaXplX3R5cGUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpmaW5kX2xhc3Rfbm90X29mKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGUgX19wb3MpIGNvbnN0IF9OT0VYQ0VQVApAQCAtMzYwNCw3ICszNjU1LDcgQEAKIH0KIAogdGVtcGxhdGU8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OnNpemVfdHlwZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmZpbmRfbGFzdF9ub3Rfb2YoY29uc3QgdmFsdWVfdHlwZSogX19zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIF9fcG9zKSBjb25zdCBfTk9FWENFUFQKQEAgLTM2MTUsNyArMzY2Niw3IEBACiB9CiAKIHRlbXBsYXRlPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpzaXplX3R5cGUKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpmaW5kX2xhc3Rfbm90X29mKHZhbHVlX3R5cGUgX19jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlIF9fcG9zKSBjb25zdCBfTk9FWENFUFQKQEAgLTM2NTAsNyArMzcwMSw3IEBACiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiBpbnQKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+Ojpjb21wYXJlKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIpIGNvbnN0IF9OT0VYQ0VQVAogewpAQCAtMzY5Niw3ICszNzQ3LDcgQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KLWlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitpbmxpbmUKIGludAogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj46OmNvbXBhcmUoc2l6ZV90eXBlIF9fcG9zMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZSBfX24xLApAQCAtMzc1NCw3ICszODA1LDcgQEAKIC8vIF9faW52YXJpYW50cwogCiB0ZW1wbGF0ZTxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+Ci1pbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQoraW5saW5lCiBib29sCiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPjo6X19pbnZhcmlhbnRzKCkgY29uc3QKIHsKQEAgLTM3NzIsNyArMzgyMyw3IEBACiAvLyBfX2NsZWFyX2FuZF9zaHJpbmsKIAogdGVtcGxhdGU8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yPgotaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK2lubGluZQogdm9pZCAKIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvY2F0b3I+OjpfX2NsZWFyX2FuZF9zaHJpbmsoKSBfTk9FWENFUFQKIHsKQEAgLTQwMjYsNiArNDA3Nyw3IEBACiB9CiAKIHRlbXBsYXRlPGNsYXNzIF9DaGFyVCwgY2xhc3MgX1RyYWl0cywgY2xhc3MgX0FsbG9jYXRvcj4KK2lubGluZQogYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj4KIG9wZXJhdG9yKyhjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPiYgX19saHMsIGNvbnN0IF9DaGFyVCogX19yaHMpCiB7CkBAIC00MTIyLDExICs0MTc0LDEzIEBACiAgICAgX19saHMuc3dhcChfX3Jocyk7CiB9CiAKLSNpZm5kZWYgX0xJQkNQUF9IQVNfTk9fVU5JQ09ERV9DSEFSUworI2lmbmRlZiBfTElCQ1BQX05PX0hBU19DSEFSOF9UCit0eXBlZGVmIGJhc2ljX3N0cmluZzxjaGFyOF90PiB1OHN0cmluZzsKKyNlbmRpZgogCisjaWZuZGVmIF9MSUJDUFBfSEFTX05PX1VOSUNPREVfQ0hBUlMKIHR5cGVkZWYgYmFzaWNfc3RyaW5nPGNoYXIxNl90PiB1MTZzdHJpbmc7CiB0eXBlZGVmIGJhc2ljX3N0cmluZzxjaGFyMzJfdD4gdTMyc3RyaW5nOwotCiAjZW5kaWYgIC8vIF9MSUJDUFBfSEFTX05PX1VOSUNPREVfQ0hBUlMKIAogX0xJQkNQUF9GVU5DX1ZJUyBpbnQgICAgICAgICAgICAgICAgc3RvaSAgKGNvbnN0IHN0cmluZyYgX19zdHIsIHNpemVfdCogX19pZHggPSAwLCBpbnQgX19iYXNlID0gMTApOwpAQCAtNDIyNiw2ICs0MjgwLDE4IEBACiAKICNlbmRpZiAgLy8gX0xJQkNQUF9DWFgwM19MQU5HCiAKKyNpZiBfTElCQ1BQX1NURF9WRVIgPiAxNwordGVtcGxhdGU8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yLCBjbGFzcyBfVXA+CitpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQordm9pZCBlcmFzZShiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2NhdG9yPiYgX19zdHIsIGNvbnN0IF9VcCYgX192KQoreyBfX3N0ci5lcmFzZShfVlNURDo6cmVtb3ZlKF9fc3RyLmJlZ2luKCksIF9fc3RyLmVuZCgpLCBfX3YpLCBfX3N0ci5lbmQoKSk7IH0KKwordGVtcGxhdGU8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzLCBjbGFzcyBfQWxsb2NhdG9yLCBjbGFzcyBfUHJlZGljYXRlPgoraW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK3ZvaWQgZXJhc2VfaWYoYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jYXRvcj4mIF9fc3RyLCBfUHJlZGljYXRlIF9fcHJlZCkKK3sgX19zdHIuZXJhc2UoX1ZTVEQ6OnJlbW92ZV9pZihfX3N0ci5iZWdpbigpLCBfX3N0ci5lbmQoKSwgX19wcmVkKSwgX19zdHIuZW5kKCkpOyB9CisjZW5kaWYKKwogI2lmIF9MSUJDUFBfREVCVUdfTEVWRUwgPj0gMgogCiB0ZW1wbGF0ZTxjbGFzcyBfQ2hhclQsIGNsYXNzIF9UcmFpdHMsIGNsYXNzIF9BbGxvY2F0b3I+CkBAIC00MjgzLDYgKzQzNDksMTQgQEAKICAgICAgICAgcmV0dXJuIGJhc2ljX3N0cmluZzx3Y2hhcl90PiAoX19zdHIsIF9fbGVuKTsKICAgICB9CiAKKyNpZm5kZWYgX0xJQkNQUF9OT19IQVNfQ0hBUjhfVAorICAgIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgYmFzaWNfc3RyaW5nPGNoYXI4X3Q+IG9wZXJhdG9yICIiIHMoY29uc3QgY2hhcjhfdCAqX19zdHIsIHNpemVfdCBfX2xlbikgX05PRVhDRVBUCisgICAgeworICAgICAgICByZXR1cm4gYmFzaWNfc3RyaW5nPGNoYXI4X3Q+IChfX3N0ciwgX19sZW4pOworICAgIH0KKyNlbmRpZgorCiAgICAgaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICBiYXNpY19zdHJpbmc8Y2hhcjE2X3Q+IG9wZXJhdG9yICIiIHMoIGNvbnN0IGNoYXIxNl90ICpfX3N0ciwgc2l6ZV90IF9fbGVuICkKICAgICB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3RyaW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3RyaW5nLmgKaW5kZXggYTFjZTU2Yy4uZTA5MjUxZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0cmluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdHJpbmcuaApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3RyaW5nLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0cmluZ192aWV3IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0cmluZ192aWV3CmluZGV4IDU1ZGNlNzIuLjc5NTY1YzIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdHJpbmdfdmlldworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3RyaW5nX3ZpZXcKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN0cmluZ192aWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTc2OSw2ICs3NjgsOSBAQAogfQogCiB0eXBlZGVmIGJhc2ljX3N0cmluZ192aWV3PGNoYXI+ICAgICBzdHJpbmdfdmlldzsKKyNpZm5kZWYgX0xJQkNQUF9OT19IQVNfQ0hBUjhfVAordHlwZWRlZiBiYXNpY19zdHJpbmdfdmlldzxjaGFyOF90PiAgdThzdHJpbmdfdmlldzsKKyNlbmRpZgogdHlwZWRlZiBiYXNpY19zdHJpbmdfdmlldzxjaGFyMTZfdD4gdTE2c3RyaW5nX3ZpZXc7CiB0eXBlZGVmIGJhc2ljX3N0cmluZ192aWV3PGNoYXIzMl90PiB1MzJzdHJpbmdfdmlldzsKIHR5cGVkZWYgYmFzaWNfc3RyaW5nX3ZpZXc8d2NoYXJfdD4gIHdzdHJpbmdfdmlldzsKQEAgLTc3OCwxNyArNzgwLDEyIEBACiBzdHJ1Y3QgX0xJQkNQUF9URU1QTEFURV9WSVMgaGFzaDxiYXNpY19zdHJpbmdfdmlldzxfQ2hhclQsIF9UcmFpdHM+ID4KICAgICA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxiYXNpY19zdHJpbmdfdmlldzxfQ2hhclQsIF9UcmFpdHM+LCBzaXplX3Q+CiB7Ci0gICAgc2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgYmFzaWNfc3RyaW5nX3ZpZXc8X0NoYXJULCBfVHJhaXRzPiBfX3ZhbCkgY29uc3QgX05PRVhDRVBUOworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBzaXplX3Qgb3BlcmF0b3IoKShjb25zdCBiYXNpY19zdHJpbmdfdmlldzxfQ2hhclQsIF9UcmFpdHM+IF9fdmFsKSBjb25zdCBfTk9FWENFUFQgeworICAgICAgICByZXR1cm4gX19kb19zdHJpbmdfaGFzaChfX3ZhbC5kYXRhKCksIF9fdmFsLmRhdGEoKSArIF9fdmFsLnNpemUoKSk7CisgICAgfQogfTsKIAotdGVtcGxhdGU8Y2xhc3MgX0NoYXJULCBjbGFzcyBfVHJhaXRzPgotc2l6ZV90Ci1oYXNoPGJhc2ljX3N0cmluZ192aWV3PF9DaGFyVCwgX1RyYWl0cz4gPjo6b3BlcmF0b3IoKSgKLSAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nX3ZpZXc8X0NoYXJULCBfVHJhaXRzPiBfX3ZhbCkgY29uc3QgX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIF9fZG9fc3RyaW5nX2hhc2goX192YWwuZGF0YSgpLCBfX3ZhbC5kYXRhKCkgKyBfX3ZhbC5zaXplKCkpOwotfQotCiAKICNpZiBfTElCQ1BQX1NURF9WRVIgPiAxMSAKIGlubGluZSBuYW1lc3BhY2UgbGl0ZXJhbHMKQEAgLTgwNyw2ICs4MDQsMTQgQEAKICAgICAgICAgcmV0dXJuIGJhc2ljX3N0cmluZ192aWV3PHdjaGFyX3Q+IChfX3N0ciwgX19sZW4pOwogICAgIH0KIAorI2lmbmRlZiBfTElCQ1BQX05PX0hBU19DSEFSOF9UCisgICAgaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgX0xJQkNQUF9DT05TVEVYUFIKKyAgICBiYXNpY19zdHJpbmdfdmlldzxjaGFyOF90PiBvcGVyYXRvciAiIiBzdihjb25zdCBjaGFyOF90ICpfX3N0ciwgc2l6ZV90IF9fbGVuKSBfTk9FWENFUFQKKyAgICB7CisgICAgICAgIHJldHVybiBiYXNpY19zdHJpbmdfdmlldzxjaGFyOF90PiAoX19zdHIsIF9fbGVuKTsKKyAgICB9CisjZW5kaWYKKwogICAgIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIF9MSUJDUFBfQ09OU1RFWFBSCiAgICAgYmFzaWNfc3RyaW5nX3ZpZXc8Y2hhcjE2X3Q+IG9wZXJhdG9yICIiIHN2KGNvbnN0IGNoYXIxNl90ICpfX3N0ciwgc2l6ZV90IF9fbGVuKSBfTk9FWENFUFQKICAgICB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3Ryc3RyZWFtIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N0cnN0cmVhbQppbmRleCBiMDBiOWQ4Li4zMTk5OWJiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3Ryc3RyZWFtCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdHJzdHJlYW0KQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN0cnN0cmVhbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L2FuZHJvaWQvbG9jYWxlX2Jpb25pYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvYW5kcm9pZC9sb2NhbGVfYmlvbmljLmgKaW5kZXggNTBmY2Y1Yy4uNWIxNjA3MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvYW5kcm9pZC9sb2NhbGVfYmlvbmljLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvYW5kcm9pZC9sb2NhbGVfYmlvbmljLmgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLSBzdXBwb3J0L2FuZHJvaWQvbG9jYWxlX2Jpb25pYy5oIC0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L2Z1Y2hzaWEveGxvY2FsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvZnVjaHNpYS94bG9jYWxlLmgKaW5kZXggMWRlMmZjYS4uYjg2Y2U5ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvZnVjaHNpYS94bG9jYWxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvZnVjaHNpYS94bG9jYWxlLmgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLSBzdXBwb3J0L2Z1Y2hzaWEveGxvY2FsZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L2libS9saW1pdHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L2libS9saW1pdHMuaAppbmRleCBlZmRiMzU5Li5kMWM1OWYwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC9pYm0vbGltaXRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvaWJtL2xpbWl0cy5oCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdXBwb3J0L2libS9saW1pdHMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC9pYm0vbG9jYWxlX21nbXRfYWl4LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC9pYm0vbG9jYWxlX21nbXRfYWl4LmgKaW5kZXggZTNiN2E3OC4uZTQ1MmRjMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvaWJtL2xvY2FsZV9tZ210X2FpeC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L2libS9sb2NhbGVfbWdtdF9haXguaApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tIHN1cHBvcnQvaWJtL2xvY2FsZV9tZ210X2FpeC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvaWJtL3N1cHBvcnQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L2libS9zdXBwb3J0LmgKaW5kZXggMGFiZmE3Zi4uMDU2OWNiZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvaWJtL3N1cHBvcnQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC9pYm0vc3VwcG9ydC5oCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHN1cHBvcnQvaWJtL3N1cHBvcnQuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvaWJtL3hsb2NhbGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L2libS94bG9jYWxlLmgKaW5kZXggZjM5YzBiYS4uOWYwNTIyYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvaWJtL3hsb2NhbGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC9pYm0veGxvY2FsZS5oCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdXBwb3J0L2libS94bG9jYWxlLmggLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L211c2wveGxvY2FsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvbXVzbC94bG9jYWxlLmgKaW5kZXggM2UzMWM5OS4uNzIyZDEzZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvbXVzbC94bG9jYWxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvbXVzbC94bG9jYWxlLmgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLSBzdXBwb3J0L211c2wveGxvY2FsZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLyBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGV4dGVuZGVkIGxvY2FsZSBmdW5jdGlvbnMgdGhhdCBhcmUgY3VycmVudGx5CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC9uZXdsaWIveGxvY2FsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvbmV3bGliL3hsb2NhbGUuaAppbmRleCAwOWY5ZTM5Li4yNWZhNzk4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC9uZXdsaWIveGxvY2FsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L25ld2xpYi94bG9jYWxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC9zb2xhcmlzL2Zsb2F0aW5ncG9pbnQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L3NvbGFyaXMvZmxvYXRpbmdwb2ludC5oCmluZGV4IDk5OWQxNDQuLjVmMTYyOGYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L3NvbGFyaXMvZmxvYXRpbmdwb2ludC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L3NvbGFyaXMvZmxvYXRpbmdwb2ludC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvc29sYXJpcy93Y2hhci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvc29sYXJpcy93Y2hhci5oCmluZGV4IDBlOGU2NjAuLjlkYzlhYzMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L3NvbGFyaXMvd2NoYXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC9zb2xhcmlzL3djaGFyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC9zb2xhcmlzL3hsb2NhbGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L3NvbGFyaXMveGxvY2FsZS5oCmluZGV4IGUyMGVmN2EuLjA1MTMxZjAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L3NvbGFyaXMveGxvY2FsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L3NvbGFyaXMveGxvY2FsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvd2luMzIvbGltaXRzX21zdmNfd2luMzIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L3dpbjMyL2xpbWl0c19tc3ZjX3dpbjMyLmgKaW5kZXggMWFiMmUwYi4uN2JiODM1NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQvd2luMzIvbGltaXRzX21zdmNfd2luMzIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC93aW4zMi9saW1pdHNfbXN2Y193aW4zMi5oCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLSBzdXBwb3J0L3dpbjMyL2xpbWl0c19tc3ZjX3dpbjMyLmggLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC93aW4zMi9sb2NhbGVfd2luMzIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L3dpbjMyL2xvY2FsZV93aW4zMi5oCmluZGV4IGM3YzZkNzguLjBkMDNkODMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L3dpbjMyL2xvY2FsZV93aW4zMi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L3dpbjMyL2xvY2FsZV93aW4zMi5oCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBzdXBwb3J0L3dpbjMyL2xvY2FsZV93aW4zMi5oIC0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC94bG9jYWxlL19fbm9wX2xvY2FsZV9tZ210LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC94bG9jYWxlL19fbm9wX2xvY2FsZV9tZ210LmgKaW5kZXggMGQzZjIzYS4uZjMzZDM4OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQveGxvY2FsZS9fX25vcF9sb2NhbGVfbWdtdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L3hsb2NhbGUvX19ub3BfbG9jYWxlX21nbXQuaApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0gIHN1cHBvcnQveGxvY2FsZS9fX25vcF9sb2NhbGVfbWdtdC5oIC0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQveGxvY2FsZS9fX3Bvc2l4X2xfZmFsbGJhY2suaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L3hsb2NhbGUvX19wb3NpeF9sX2ZhbGxiYWNrLmgKaW5kZXggYjlhMDkzOS4uZjNkZjZjNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQveGxvY2FsZS9fX3Bvc2l4X2xfZmFsbGJhY2suaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3VwcG9ydC94bG9jYWxlL19fcG9zaXhfbF9mYWxsYmFjay5oCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLSBzdXBwb3J0L3hsb2NhbGUvX19wb3NpeF9sX2ZhbGxiYWNrLmggLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gVGhlc2UgYXJlIHJlaW1wbGVtZW50YXRpb25zIG9mIHNvbWUgZXh0ZW5kZWQgbG9jYWxlIGZ1bmN0aW9ucyAoICpfbCApIHRoYXQKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zdXBwb3J0L3hsb2NhbGUvX19zdHJ0b251bV9mYWxsYmFjay5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQveGxvY2FsZS9fX3N0cnRvbnVtX2ZhbGxiYWNrLmgKaW5kZXggNTBiNGRiMy4uZGYzODU5OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQveGxvY2FsZS9fX3N0cnRvbnVtX2ZhbGxiYWNrLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N1cHBvcnQveGxvY2FsZS9fX3N0cnRvbnVtX2ZhbGxiYWNrLmgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0gc3VwcG9ydC94bG9jYWxlL19fc3RydG9udW1fZmFsbGJhY2suaCAtLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLyBUaGVzZSBhcmUgcmVpbXBsZW1lbnRhdGlvbnMgb2Ygc29tZSBleHRlbmRlZCBsb2NhbGUgZnVuY3Rpb25zICggKl9sICkgdGhhdApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N5c3RlbV9lcnJvciBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS9zeXN0ZW1fZXJyb3IKaW5kZXggNmUyYzgzOC4uMDVlZjA3OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3N5c3RlbV9lcnJvcgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvc3lzdGVtX2Vycm9yCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3lzdGVtX2Vycm9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvdGdtYXRoLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvdGdtYXRoLmgKaW5kZXggYWJhODc0OS4uMmRjMWY3NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3RnbWF0aC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS90Z21hdGguaApAQCAtMSwxMCArMSw5IEBACiAvLyAtKi0gQysrIC0qLQogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0Z21hdGguaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3RocmVhZCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS90aHJlYWQKaW5kZXggMDYyOWQ3MC4uZGYwNmZmNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3RocmVhZAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvdGhyZWFkCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0aHJlYWQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xNTEsNyArMTUwLDcgQEAKICAgICBfX3RocmVhZF9zcGVjaWZpY19wdHIoY29uc3QgX190aHJlYWRfc3BlY2lmaWNfcHRyJik7CiAgICAgX190aHJlYWRfc3BlY2lmaWNfcHRyJiBvcGVyYXRvcj0oY29uc3QgX190aHJlYWRfc3BlY2lmaWNfcHRyJik7CiAKLSAgICBzdGF0aWMgdm9pZCBfTElCQ1BQX1RMU19ERVNUUlVDVE9SX0NDIF9fYXRfdGhyZWFkX2V4aXQodm9pZCopOworICAgIF9MSUJDUFBfSElEREVOIHN0YXRpYyB2b2lkIF9MSUJDUFBfVExTX0RFU1RSVUNUT1JfQ0MgX19hdF90aHJlYWRfZXhpdCh2b2lkKik7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIF9UcCogcG9pbnRlcjsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS90dXBsZSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS90dXBsZQppbmRleCBmYjU0MjhlLi5mN2U3ZWUxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvdHVwbGUKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3R1cGxlCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0dXBsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC02NSw3ICs2NCw3IEBACiAgICAgdGVtcGxhdGUgPGNsYXNzIFUxLCBjbGFzcyBVMj4KICAgICAgICAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCBwYWlyPFUxLCBVMj4mKTsgLy8gaWZmIHNpemVvZi4uLihUKSA9PSAyCiAgICAgdGVtcGxhdGUgPGNsYXNzIFUxLCBjbGFzcyBVMj4KLSAgICAgICAgdHVwbGUmIG9wZXJhdG9yPShwYWlyPFUxLCBVMj4mJik7IC8vaWZmc2l6ZW9mLi4uKFQpID09IDIKKyAgICAgICAgdHVwbGUmIG9wZXJhdG9yPShwYWlyPFUxLCBVMj4mJik7IC8vIGlmZiBzaXplb2YuLi4oVCkgPT0gMgogCiAgICAgdm9pZCBzd2FwKHR1cGxlJikgbm9leGNlcHQoQU5EKHN3YXAoZGVjbHZhbDxUJj4oKSwgZGVjbHZhbDxUJj4oKSkuLi4pKTsKIH07CkBAIC04NCw4ICs4Myw4IEBACiAgIGNvbnN0ZXhwciBUIG1ha2VfZnJvbV90dXBsZShUdXBsZSYmIHQpOyAvLyBDKysxNwogCiAvLyAyMC40LjEuNCwgdHVwbGUgaGVscGVyIGNsYXNzZXM6Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgdHVwbGVfc2l6ZTsgLy8gdW5kZWZpbmVkCi10ZW1wbGF0ZSA8Y2xhc3MuLi4gVD4gY2xhc3MgdHVwbGVfc2l6ZTx0dXBsZTxULi4uPj47Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHR1cGxlX3NpemU7IC8vIHVuZGVmaW5lZAordGVtcGxhdGUgPGNsYXNzLi4uIFQ+IHN0cnVjdCB0dXBsZV9zaXplPHR1cGxlPFQuLi4+PjsKIHRlbXBsYXRlIDxjbGFzcyBUPgogIGlubGluZSBjb25zdGV4cHIgc2l6ZV90IHR1cGxlX3NpemVfdiA9IHR1cGxlX3NpemU8VD46OnZhbHVlOyAvLyBDKysxNwogdGVtcGxhdGUgPHNpemVfdCBJLCBjbGFzcyBUPiBjbGFzcyB0dXBsZV9lbGVtZW50OyAvLyB1bmRlZmluZWQKQEAgLTEwNzgsMzAgKzEwNzcsMTIgQEAKICAgX0xJQkNQUF9JTkxJTkVfVkFSIGNvbnN0ZXhwciBfX2lnbm9yZV90PHVuc2lnbmVkIGNoYXI+IGlnbm9yZSA9IF9faWdub3JlX3Q8dW5zaWduZWQgY2hhcj4oKTsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIF9UcD4KLXN0cnVjdCBfX21ha2VfdHVwbGVfcmV0dXJuX2ltcGwKLXsKLSAgICB0eXBlZGVmIF9UcCB0eXBlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIF9UcD4KLXN0cnVjdCBfX21ha2VfdHVwbGVfcmV0dXJuX2ltcGw8cmVmZXJlbmNlX3dyYXBwZXI8X1RwPiA+Ci17Ci0gICAgdHlwZWRlZiBfVHAmIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgX1RwPgotc3RydWN0IF9fbWFrZV90dXBsZV9yZXR1cm4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIF9fbWFrZV90dXBsZV9yZXR1cm5faW1wbDx0eXBlbmFtZSBkZWNheTxfVHA+Ojp0eXBlPjo6dHlwZSB0eXBlOwotfTsKLQogdGVtcGxhdGUgPGNsYXNzLi4uIF9UcD4KIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIF9MSUJDUFBfQ09OU1RFWFBSX0FGVEVSX0NYWDExCi10dXBsZTx0eXBlbmFtZSBfX21ha2VfdHVwbGVfcmV0dXJuPF9UcD46OnR5cGUuLi4+Cit0dXBsZTx0eXBlbmFtZSBfX3Vud3JhcF9yZWZfZGVjYXk8X1RwPjo6dHlwZS4uLj4KIG1ha2VfdHVwbGUoX1RwJiYuLi4gX190KQogewotICAgIHJldHVybiB0dXBsZTx0eXBlbmFtZSBfX21ha2VfdHVwbGVfcmV0dXJuPF9UcD46OnR5cGUuLi4+KF9WU1REOjpmb3J3YXJkPF9UcD4oX190KS4uLik7CisgICAgcmV0dXJuIHR1cGxlPHR5cGVuYW1lIF9fdW53cmFwX3JlZl9kZWNheTxfVHA+Ojp0eXBlLi4uPihfVlNURDo6Zm9yd2FyZDxfVHA+KF9fdCkuLi4pOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MuLi4gX1RwPgpAQCAtMTEzOSw2ICsxMTIwLDcgQEAKIGJvb2wKIG9wZXJhdG9yPT0oY29uc3QgdHVwbGU8X1RwLi4uPiYgX194LCBjb25zdCB0dXBsZTxfVXAuLi4+JiBfX3kpCiB7CisgICAgc3RhdGljX2Fzc2VydCAoc2l6ZW9mLi4uKF9UcCkgPT0gc2l6ZW9mLi4uKF9VcCksICJDYW4ndCBjb21wYXJlIHR1cGxlcyBvZiBkaWZmZXJlbnQgc2l6ZXMiKTsKICAgICByZXR1cm4gX190dXBsZV9lcXVhbDxzaXplb2YuLi4oX1RwKT4oKShfX3gsIF9feSk7CiB9CiAKQEAgLTExODIsNiArMTE2NCw3IEBACiBib29sCiBvcGVyYXRvcjwoY29uc3QgdHVwbGU8X1RwLi4uPiYgX194LCBjb25zdCB0dXBsZTxfVXAuLi4+JiBfX3kpCiB7CisgICAgc3RhdGljX2Fzc2VydCAoc2l6ZW9mLi4uKF9UcCkgPT0gc2l6ZW9mLi4uKF9VcCksICJDYW4ndCBjb21wYXJlIHR1cGxlcyBvZiBkaWZmZXJlbnQgc2l6ZXMiKTsKICAgICByZXR1cm4gX190dXBsZV9sZXNzPHNpemVvZi4uLihfVHApPigpKF9feCwgX195KTsKIH0KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3R5cGVfdHJhaXRzIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3R5cGVfdHJhaXRzCmluZGV4IDdmZjY3YmYuLjM3YjdjYTEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS90eXBlX3RyYWl0cworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvdHlwZV90cmFpdHMKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHR5cGVfdHJhaXRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTcwOSw2ICs3MDgsOSBAQAogdGVtcGxhdGUgPD4gICAgICAgICAgc3RydWN0IF9fbGliY3BwX2lzX2ludGVncmFsPHNpZ25lZCBjaGFyPiAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwogdGVtcGxhdGUgPD4gICAgICAgICAgc3RydWN0IF9fbGliY3BwX2lzX2ludGVncmFsPHVuc2lnbmVkIGNoYXI+ICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwogdGVtcGxhdGUgPD4gICAgICAgICAgc3RydWN0IF9fbGliY3BwX2lzX2ludGVncmFsPHdjaGFyX3Q+ICAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OworI2lmbmRlZiBfTElCQ1BQX05PX0hBU19DSEFSOF9UCit0ZW1wbGF0ZSA8PiAgICAgICAgICBzdHJ1Y3QgX19saWJjcHBfaXNfaW50ZWdyYWw8Y2hhcjhfdD4gICAgICAgICAgICA6IHB1YmxpYyB0cnVlX3R5cGUge307CisjZW5kaWYKICNpZm5kZWYgX0xJQkNQUF9IQVNfTk9fVU5JQ09ERV9DSEFSUwogdGVtcGxhdGUgPD4gICAgICAgICAgc3RydWN0IF9fbGliY3BwX2lzX2ludGVncmFsPGNoYXIxNl90PiAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwogdGVtcGxhdGUgPD4gICAgICAgICAgc3RydWN0IF9fbGliY3BwX2lzX2ludGVncmFsPGNoYXIzMl90PiAgICAgICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwpAQCAtNzM4LDEyICs3NDAsNiBAQAogLy8gaXNfZmxvYXRpbmdfcG9pbnQKIAogdGVtcGxhdGUgPGNsYXNzIF9UcD4gc3RydWN0IF9fbGliY3BwX2lzX2Zsb2F0aW5nX3BvaW50ICAgICAgICAgICAgICA6IHB1YmxpYyBmYWxzZV90eXBlIHt9OwotI2lmZGVmIF9fY2xhbmdfXwotdGVtcGxhdGUgPD4gICAgICAgICAgc3RydWN0IF9fbGliY3BwX2lzX2Zsb2F0aW5nX3BvaW50PF9fZnAxNj4gICAgICA6IHB1YmxpYyB0cnVlX3R5cGUge307Ci0jZW5kaWYKLSNpZmRlZiBfX0ZMVDE2X01BTlRfRElHX18KLXRlbXBsYXRlIDw+ICAgICAgICAgIHN0cnVjdCBfX2xpYmNwcF9pc19mbG9hdGluZ19wb2ludDxfRmxvYXQxNj4gICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwotI2VuZGlmCiB0ZW1wbGF0ZSA8PiAgICAgICAgICBzdHJ1Y3QgX19saWJjcHBfaXNfZmxvYXRpbmdfcG9pbnQ8ZmxvYXQ+ICAgICAgIDogcHVibGljIHRydWVfdHlwZSB7fTsKIHRlbXBsYXRlIDw+ICAgICAgICAgIHN0cnVjdCBfX2xpYmNwcF9pc19mbG9hdGluZ19wb2ludDxkb3VibGU+ICAgICAgOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwogdGVtcGxhdGUgPD4gICAgICAgICAgc3RydWN0IF9fbGliY3BwX2lzX2Zsb2F0aW5nX3BvaW50PGxvbmcgZG91YmxlPiA6IHB1YmxpYyB0cnVlX3R5cGUge307CkBAIC0xNjU1LDcgKzE2NTEsNyBAQAogLy8gYWxpZ25tZW50X29mCiAKIHRlbXBsYXRlIDxjbGFzcyBfVHA+IHN0cnVjdCBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBhbGlnbm1lbnRfb2YKLSAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIF9fYWxpZ25vZl9fKF9UcCk+IHt9OworICAgIDogcHVibGljIGludGVncmFsX2NvbnN0YW50PHNpemVfdCwgX0xJQkNQUF9BTElHTk9GKF9UcCk+IHt9OwogCiAjaWYgX0xJQkNQUF9TVERfVkVSID4gMTQgJiYgIWRlZmluZWQoX0xJQkNQUF9IQVNfTk9fVkFSSUFCTEVfVEVNUExBVEVTKQogdGVtcGxhdGUgPGNsYXNzIF9UcD4KQEAgLTE2ODUsNyArMTY4MSw3IEBACiB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgogc3RydWN0IF9fYWxpZ25fdHlwZQogewotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgdmFsdWUgPSBhbGlnbm1lbnRfb2Y8X1RwPjo6dmFsdWU7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCB2YWx1ZSA9IF9MSUJDUFBfUFJFRkVSUkVEX0FMSUdOT0YoX1RwKTsKICAgICB0eXBlZGVmIF9UcCB0eXBlOwogfTsKIApAQCAtMTgxOCw4ICsxODE0LDggQEAKIHRlbXBsYXRlIDxzaXplX3QgX0xlbiwgY2xhc3MgX1R5cGUwLCBjbGFzcyAuLi5fVHlwZXM+CiBzdHJ1Y3QgYWxpZ25lZF91bmlvbgogewotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYWxpZ25tZW50X3ZhbHVlID0gX19zdGF0aWNfbWF4PF9fYWxpZ25vZl9fKF9UeXBlMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hbGlnbm9mX18oX1R5cGVzKS4uLj46OnZhbHVlOworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYWxpZ25tZW50X3ZhbHVlID0gX19zdGF0aWNfbWF4PF9MSUJDUFBfUFJFRkVSUkVEX0FMSUdOT0YoX1R5cGUwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfTElCQ1BQX1BSRUZFUlJFRF9BTElHTk9GKF9UeXBlcykuLi4+Ojp2YWx1ZTsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IF9fbGVuID0gX19zdGF0aWNfbWF4PF9MZW4sIHNpemVvZihfVHlwZTApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKF9UeXBlcykuLi4+Ojp2YWx1ZTsKICAgICB0eXBlZGVmIHR5cGVuYW1lIGFsaWduZWRfc3RvcmFnZTxfX2xlbiwgYWxpZ25tZW50X3ZhbHVlPjo6dHlwZSB0eXBlOwpAQCAtNDM2NCwyOCArNDM2MCwzMSBAQAogI3VuZGVmIF9MSUJDUFBfSU5WT0tFX1JFVFVSTgogCiAvLyBfX2ludm9rYWJsZQotCiB0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX0ZwLCBjbGFzcyAuLi5fQXJncz4KIHN0cnVjdCBfX2ludm9rYWJsZV9yCiB7Ci0gICAgLy8gRklYTUU6IENoZWNrIHRoYXQgX1JldCwgX0ZwLCBhbmQgX0FyZ3MuLi4gYXJlIGFsbCBjb21wbGV0ZSB0eXBlcywgY3Ygdm9pZCwKLSAgICAvLyBvciBpbmNvbXBsZXRlIGFycmF5IHR5cGVzIGFzIHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZC4KLSAgICB1c2luZyBfUmVzdWx0ID0gZGVjbHR5cGUoCi0gICAgICAgIF9WU1REOjpfX2ludm9rZShfVlNURDo6ZGVjbHZhbDxfRnA+KCksIF9WU1REOjpkZWNsdmFsPF9BcmdzPigpLi4uKSk7CisgIHRlbXBsYXRlIDxjbGFzcyBfWEZwLCBjbGFzcyAuLi5fWEFyZ3M+CisgIHN0YXRpYyBhdXRvIF9fdHJ5X2NhbGwoaW50KSAtPiBkZWNsdHlwZSgKKyAgICBfVlNURDo6X19pbnZva2UoX1ZTVEQ6OmRlY2x2YWw8X1hGcD4oKSwgX1ZTVEQ6OmRlY2x2YWw8X1hBcmdzPigpLi4uKSk7CisgIHRlbXBsYXRlIDxjbGFzcyBfWEZwLCBjbGFzcyAuLi5fWEFyZ3M+CisgIHN0YXRpYyBfX25hdCBfX3RyeV9jYWxsKC4uLik7CiAKLSAgICB1c2luZyB0eXBlID0KLSAgICAgICAgdHlwZW5hbWUgY29uZGl0aW9uYWw8Ci0gICAgICAgICAgICAhaXNfc2FtZTxfUmVzdWx0LCBfX25hdD46OnZhbHVlLAotICAgICAgICAgICAgdHlwZW5hbWUgY29uZGl0aW9uYWw8Ci0gICAgICAgICAgICAgICAgaXNfdm9pZDxfUmV0Pjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgdHJ1ZV90eXBlLAotICAgICAgICAgICAgICAgIGlzX2NvbnZlcnRpYmxlPF9SZXN1bHQsIF9SZXQ+Ci0gICAgICAgICAgICA+Ojp0eXBlLAotICAgICAgICAgICAgZmFsc2VfdHlwZQotICAgICAgICA+Ojp0eXBlOwotICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHlwZTo6dmFsdWU7CisgIC8vIEZJWE1FOiBDaGVjayB0aGF0IF9SZXQsIF9GcCwgYW5kIF9BcmdzLi4uIGFyZSBhbGwgY29tcGxldGUgdHlwZXMsIGN2IHZvaWQsCisgIC8vIG9yIGluY29tcGxldGUgYXJyYXkgdHlwZXMgYXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkLgorICB1c2luZyBfUmVzdWx0ID0gZGVjbHR5cGUoX190cnlfY2FsbDxfRnAsIF9BcmdzLi4uPigwKSk7CisKKyAgdXNpbmcgdHlwZSA9CisgIHR5cGVuYW1lIGNvbmRpdGlvbmFsPAorICAgICAgIWlzX3NhbWU8X1Jlc3VsdCwgX19uYXQ+Ojp2YWx1ZSwKKyAgICAgIHR5cGVuYW1lIGNvbmRpdGlvbmFsPAorICAgICAgICAgIGlzX3ZvaWQ8X1JldD46OnZhbHVlLAorICAgICAgICAgIHRydWVfdHlwZSwKKyAgICAgICAgICBpc19jb252ZXJ0aWJsZTxfUmVzdWx0LCBfUmV0PgorICAgICAgPjo6dHlwZSwKKyAgICAgIGZhbHNlX3R5cGUKKyAgPjo6dHlwZTsKKyAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0eXBlOjp2YWx1ZTsKIH07Ci0KIHRlbXBsYXRlIDxjbGFzcyBfRnAsIGNsYXNzIC4uLl9BcmdzPgogdXNpbmcgX19pbnZva2FibGUgPSBfX2ludm9rYWJsZV9yPHZvaWQsIF9GcCwgX0FyZ3MuLi4+OwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvdHlwZWluZGV4IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3R5cGVpbmRleAppbmRleCAwNTY1Y2E5Li5iZmYxZTY1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvdHlwZWluZGV4CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS90eXBlaW5kZXgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdHlwZWluZGV4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS90eXBlaW5mbyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS90eXBlaW5mbwppbmRleCA5MmYxZTIyLi41YmNiNmIyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvdHlwZWluZm8KKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3R5cGVpbmZvCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHR5cGVpbmZvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC03Myw1OSArNzIsMzEgQEAKICNpbmNsdWRlIDx2Y3J1bnRpbWVfdHlwZWluZm8uaD4KICNlbHNlCiAKLSNpZiAhZGVmaW5lZChfTElCQ1BQX0FCSV9NSUNST1NPRlQpCi0jaWYgZGVmaW5lZChfTElCQ1BQX05PTlVOSVFVRV9SVFRJX0JJVCkKLSNkZWZpbmUgX0xJQkNQUF9IQVNfTk9OVU5JUVVFX1RZUEVJTkZPCi0jZWxzZQotI2RlZmluZSBfTElCQ1BQX0hBU19VTklRVUVfVFlQRUlORk8KLSNlbmRpZgorI2lmIGRlZmluZWQoX0xJQkNQUF9OT05VTklRVUVfUlRUSV9CSVQpICYmICFkZWZpbmVkKF9MSUJDUFBfQUJJX01JQ1JPU09GVCkKKyMgICBkZWZpbmUgX0xJQkNQUF9IQVNfTk9OVU5JUVVFX1RZUEVJTkZPCiAjZW5kaWYKIAogbmFtZXNwYWNlIHN0ZCAgLy8gcHVycG9zZWZ1bGx5IG5vdCB1c2luZyB2ZXJzaW9uaW5nIG5hbWVzcGFjZQogewogCisjaWYgZGVmaW5lZChfTElCQ1BQX0FCSV9NSUNST1NPRlQpCisKIGNsYXNzIF9MSUJDUFBfRVhDRVBUSU9OX0FCSSB0eXBlX2luZm8KIHsKICAgICB0eXBlX2luZm8mIG9wZXJhdG9yPShjb25zdCB0eXBlX2luZm8mKTsKICAgICB0eXBlX2luZm8oY29uc3QgdHlwZV9pbmZvJik7CiAKLSNpZiBkZWZpbmVkKF9MSUJDUFBfSEFTX05PTlVOSVFVRV9UWVBFSU5GTykKLSAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgaW50IF9fY29tcGFyZV9ub251bmlxdWVfbmFtZXMoY29uc3QgdHlwZV9pbmZvICZfX2FyZykgY29uc3QgX05PRVhDRVBUCi0gICAgeyByZXR1cm4gX19idWlsdGluX3N0cmNtcChuYW1lKCksIF9fYXJnLm5hbWUoKSk7IH0KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfTElCQ1BQX0FCSV9NSUNST1NPRlQpCiAgICAgbXV0YWJsZSBzdHJ1Y3QgewogICAgICAgY29uc3QgY2hhciAqX191bmRlY29yYXRlZF9uYW1lOwogICAgICAgY29uc3QgY2hhciBfX2RlY29yYXRlZF9uYW1lWzFdOwogICAgIH0gX19kYXRhOwogCiAgICAgaW50IF9fY29tcGFyZShjb25zdCB0eXBlX2luZm8gJl9fcmhzKSBjb25zdCBfTk9FWENFUFQ7Ci0jZW5kaWYgLy8gX0xJQkNQUF9BQklfTUlDUk9TT0ZUCi0KLXByb3RlY3RlZDoKLSNpZiAhZGVmaW5lZChfTElCQ1BQX0FCSV9NSUNST1NPRlQpCi0jaWYgZGVmaW5lZChfTElCQ1BQX0hBU19OT05VTklRVUVfVFlQRUlORk8pCi0gICAgLy8gQSBjb25zdCBjaGFyKiB3aXRoIHRoZSBub24tdW5pcXVlIFJUVEkgYml0IHBvc3NpYmx5IHNldC4KLSAgICB1aW50cHRyX3QgX190eXBlX25hbWU7Ci0KLSAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCi0gICAgZXhwbGljaXQgdHlwZV9pbmZvKGNvbnN0IGNoYXIqIF9fbikKLSAgICAgIDogX190eXBlX25hbWUocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KF9fbikpIHt9Ci0jZWxzZQotICAgIGNvbnN0IGNoYXIgKl9fdHlwZV9uYW1lOwotCi0gICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQotICAgIGV4cGxpY2l0IHR5cGVfaW5mbyhjb25zdCBjaGFyKiBfX24pIDogX190eXBlX25hbWUoX19uKSB7fQotI2VuZGlmCi0jZW5kaWYgLy8gISBfTElCQ1BQX0FCSV9NSUNST1NPRlQKIAogcHVibGljOgogICAgIF9MSUJDUFBfQVZBSUxBQklMSVRZX1RZUEVJTkZPX1ZUQUJMRQogICAgIHZpcnR1YWwgfnR5cGVfaW5mbygpOwogCi0jaWYgZGVmaW5lZChfTElCQ1BQX0FCSV9NSUNST1NPRlQpCiAgICAgY29uc3QgY2hhciAqbmFtZSgpIGNvbnN0IF9OT0VYQ0VQVDsKIAogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKQEAgLTEzOSw4ICsxMTAsNDggQEAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgdHlwZV9pbmZvJiBfX2FyZykgY29uc3QgX05PRVhDRVBUIHsKICAgICAgIHJldHVybiBfX2NvbXBhcmUoX19hcmcpID09IDA7CiAgICAgfQotI2Vsc2UKLSNpZiBkZWZpbmVkKF9MSUJDUFBfSEFTX05PTlVOSVFVRV9UWVBFSU5GTykKKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgdHlwZV9pbmZvJiBfX2FyZykgY29uc3QgX05PRVhDRVBUCisgICAgeyByZXR1cm4gIW9wZXJhdG9yPT0oX19hcmcpOyB9Cit9OworCisjZWxpZiBkZWZpbmVkKF9MSUJDUFBfSEFTX05PTlVOSVFVRV9UWVBFSU5GTykKKworLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiB0eXBlX2luZm8gZG9lcyBub3QgYXNzdW1lIGFsd2F5cyBhIHVuaXF1ZSBjb3B5IG9mCisvLyB0aGUgUlRUSSBmb3IgYSBnaXZlbiB0eXBlIGluc2lkZSBhIHByb2dyYW0uIEl0IHBhY2tzIHRoZSBwb2ludGVyIHRvIHRoZQorLy8gdHlwZSBuYW1lIGludG8gYSB1aW50cHRyX3QgYW5kIHJlc2VydmVzIHRoZSBoaWdoIGJpdCBvZiB0aGF0IHBvaW50ZXIgKHdoaWNoCisvLyBpcyBhc3N1bWVkIHRvIGJlIGZyZWUgZm9yIHVzZSB1bmRlciB0aGUgQUJJIGluIHVzZSkgdG8gcmVwcmVzZW50IHdoZXRoZXIKKy8vIHRoYXQgc3BlY2lmaWMgY29weSBvZiB0aGUgUlRUSSBjYW4gYmUgYXNzdW1lZCB1bmlxdWUgaW5zaWRlIHRoZSBwcm9ncmFtLgorLy8gVG8gaW1wbGVtZW50IGVxdWFsaXR5LWNvbXBhcmlzb24gb2YgdHlwZV9pbmZvcywgd2UgY2hlY2sgd2hldGhlciBCT1RICisvLyB0eXBlX2luZm9zIGFyZSBndWFyYW50ZWVkIHVuaXF1ZSwgYW5kIGlmIHNvLCB3ZSBzaW1wbHkgY29tcGFyZSB0aGUgYWRkcmVzc2VzCisvLyBvZiB0aGVpciB0eXBlIG5hbWVzIGluc3RlYWQgb2YgZG9pbmcgYSBkZWVwIHN0cmluZyBjb21wYXJpc29uLCB3aGljaCBpcworLy8gZmFzdGVyLiBJZiBhdCBsZWFzdCBvbmUgb2YgdGhlIHR5cGVfaW5mb3MgY2FuJ3QgZ3VhcmFudGVlIHVuaXF1ZW5lc3MsIHdlCisvLyBoYXZlIG5vIGNob2ljZSBidXQgdG8gZmFsbCBiYWNrIHRvIGEgZGVlcCBzdHJpbmcgY29tcGFyaXNvbi4KKy8vCisvLyBOb3RlIHRoYXQgdGhlIGNvbXBpbGVyIGlzIHRoZSBvbmUgc2V0dGluZyAob3IgdW5zZXR0aW5nKSB0aGUgaGlnaCBiaXQgb2YKKy8vIHRoZSBwb2ludGVyIHdoZW4gaXQgY29uc3RydWN0cyB0aGUgdHlwZV9pbmZvLCBkZXBlbmRpbmcgb24gd2hldGhlciBpdCBjYW4KKy8vIGd1YXJhbnRlZSB1bmlxdWVuZXNzIGZvciB0aGF0IHNwZWNpZmljIHR5cGVfaW5mby4KK2NsYXNzIF9MSUJDUFBfRVhDRVBUSU9OX0FCSSB0eXBlX2luZm8KK3sKKyAgICB0eXBlX2luZm8mIG9wZXJhdG9yPShjb25zdCB0eXBlX2luZm8mKTsKKyAgICB0eXBlX2luZm8oY29uc3QgdHlwZV9pbmZvJik7CisKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgaW50IF9fY29tcGFyZV9ub251bmlxdWVfbmFtZXMoY29uc3QgdHlwZV9pbmZvICZfX2FyZykgY29uc3QgX05PRVhDRVBUCisgICAgeyByZXR1cm4gX19idWlsdGluX3N0cmNtcChuYW1lKCksIF9fYXJnLm5hbWUoKSk7IH0KKworcHJvdGVjdGVkOgorICAgIHVpbnRwdHJfdCBfX3R5cGVfbmFtZTsKKworICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBleHBsaWNpdCB0eXBlX2luZm8oY29uc3QgY2hhciogX19uKQorICAgICAgOiBfX3R5cGVfbmFtZShyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oX19uKSkge30KKworcHVibGljOgorICAgIF9MSUJDUFBfQVZBSUxBQklMSVRZX1RZUEVJTkZPX1ZUQUJMRQorICAgIHZpcnR1YWwgfnR5cGVfaW5mbygpOworCiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCBfTk9FWENFUFQKICAgICB7CkBAIC0xNzksNyArMTkwLDM1IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgIHJldHVybiBfX2NvbXBhcmVfbm9udW5pcXVlX25hbWVzKF9fYXJnKSA9PSAwOwogICAgIH0KLSNlbHNlCisKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHR5cGVfaW5mbyYgX19hcmcpIGNvbnN0IF9OT0VYQ0VQVAorICAgIHsgcmV0dXJuICFvcGVyYXRvcj09KF9fYXJnKTsgfQorfTsKKworI2Vsc2UgLy8gIV9MSUJDUFBfQUJJX01JQ1JPU09GVCAmJiAhX0xJQkNQUF9IQVNfTk9OVU5JUVVFX1RZUEVJTkZPCisKKy8vIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgdHlwZV9pbmZvIGFzc3VtZXMgYSB1bmlxdWUgY29weSBvZiB0aGUgUlRUSSBmb3IgYQorLy8gZ2l2ZW4gdHlwZSBpbnNpZGUgYSBwcm9ncmFtLiBUaGlzIGlzIGEgdmFsaWQgYXNzdW1wdGlvbiB3aGVuIGFiaWRpbmcgdG8KKy8vIEl0YW5pdW0gQUJJIChodHRwOi8vaXRhbml1bS1jeHgtYWJpLmdpdGh1Yi5pby9jeHgtYWJpL2FiaS5odG1sI3Z0YWJsZS1jb21wb25lbnRzKS4KKy8vIFVuZGVyIHRoaXMgYXNzdW1wdGlvbiwgd2UgY2FuIGFsd2F5cyBjb21wYXJlIHRoZSBhZGRyZXNzZXMgb2YgdGhlIHR5cGUgbmFtZXMKKy8vIHRvIGltcGxlbWVudCBlcXVhbGl0eS1jb21wYXJpc29uIG9mIHR5cGVfaW5mb3MgaW5zdGVhZCBvZiBoYXZpbmcgdG8gcGVyZm9ybQorLy8gYSBkZWVwIHN0cmluZyBjb21wYXJpc29uLgorY2xhc3MgX0xJQkNQUF9FWENFUFRJT05fQUJJIHR5cGVfaW5mbworeworICAgIHR5cGVfaW5mbyYgb3BlcmF0b3I9KGNvbnN0IHR5cGVfaW5mbyYpOworICAgIHR5cGVfaW5mbyhjb25zdCB0eXBlX2luZm8mKTsKKworcHJvdGVjdGVkOgorICAgIGNvbnN0IGNoYXIgKl9fdHlwZV9uYW1lOworCisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIGV4cGxpY2l0IHR5cGVfaW5mbyhjb25zdCBjaGFyKiBfX24pIDogX190eXBlX25hbWUoX19uKSB7fQorCitwdWJsaWM6CisgICAgX0xJQkNQUF9BVkFJTEFCSUxJVFlfVFlQRUlORk9fVlRBQkxFCisgICAgdmlydHVhbCB+dHlwZV9pbmZvKCk7CisKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IF9OT0VYQ0VQVAogICAgIHsgcmV0dXJuIF9fdHlwZV9uYW1lOyB9CkBAIC0xOTUsMTQgKzIzNCwxNCBAQAogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgdHlwZV9pbmZvJiBfX2FyZykgY29uc3QgX05PRVhDRVBUCiAgICAgeyByZXR1cm4gX190eXBlX25hbWUgPT0gX19hcmcuX190eXBlX25hbWU7IH0KLSNlbmRpZgotI2VuZGlmIC8vIF9MSUJDUFBfQUJJX01JQ1JPU09GVAogCiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCB0eXBlX2luZm8mIF9fYXJnKSBjb25zdCBfTk9FWENFUFQKICAgICB7IHJldHVybiAhb3BlcmF0b3I9PShfX2FyZyk7IH0KIH07CiAKKyNlbmRpZgorCiBjbGFzcyBfTElCQ1BQX0VYQ0VQVElPTl9BQkkgYmFkX2Nhc3QKICAgICA6IHB1YmxpYyBleGNlcHRpb24KIHsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS91bm9yZGVyZWRfbWFwIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3Vub3JkZXJlZF9tYXAKaW5kZXggZmMzY2ZiNi4uN2FlOTgwNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3Vub3JkZXJlZF9tYXAKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3Vub3JkZXJlZF9tYXAKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdW5vcmRlcmVkX21hcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTE1Myw2ICsxNTIsMTUgQEAKICAgICBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCk7CiAgICAgdm9pZCBjbGVhcigpIG5vZXhjZXB0OwogCisgICAgdGVtcGxhdGU8Y2xhc3MgSDIsIGNsYXNzIFAyPgorICAgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfbWFwPEtleSwgVCwgSDIsIFAyLCBBbGxvY2F0b3I+JiBzb3VyY2UpOyAgICAgICAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgSDIsIGNsYXNzIFAyPgorICAgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfbWFwPEtleSwgVCwgSDIsIFAyLCBBbGxvY2F0b3I+JiYgc291cmNlKTsgICAgICAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgSDIsIGNsYXNzIFAyPgorICAgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfbXVsdGltYXA8S2V5LCBULCBIMiwgUDIsIEFsbG9jYXRvcj4mIHNvdXJjZSk7ICAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgSDIsIGNsYXNzIFAyPgorICAgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfbXVsdGltYXA8S2V5LCBULCBIMiwgUDIsIEFsbG9jYXRvcj4mJiBzb3VyY2UpOyAgIC8vIEMrKzE3CisKICAgICB2b2lkIHN3YXAodW5vcmRlcmVkX21hcCYpCiAgICAgICAgIG5vZXhjZXB0KAogICAgICAgICAgICAgKCFhbGxvY2F0b3JfdHlwZTo6cHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwOjp2YWx1ZSB8fApAQCAtMzI1LDYgKzMzMywxNSBAQAogICAgIGl0ZXJhdG9yIGVyYXNlKGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KTsKICAgICB2b2lkIGNsZWFyKCkgbm9leGNlcHQ7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBIMiwgY2xhc3MgUDI+CisgICAgICB2b2lkIG1lcmdlKHVub3JkZXJlZF9tdWx0aW1hcDxLZXksIFQsIEgyLCBQMiwgQWxsb2NhdG9yPiYgc291cmNlKTsgICAgLy8gQysrMTcKKyAgICB0ZW1wbGF0ZTxjbGFzcyBIMiwgY2xhc3MgUDI+CisgICAgICB2b2lkIG1lcmdlKHVub3JkZXJlZF9tdWx0aW1hcDxLZXksIFQsIEgyLCBQMiwgQWxsb2NhdG9yPiYmIHNvdXJjZSk7ICAgLy8gQysrMTcKKyAgICB0ZW1wbGF0ZTxjbGFzcyBIMiwgY2xhc3MgUDI+CisgICAgICB2b2lkIG1lcmdlKHVub3JkZXJlZF9tYXA8S2V5LCBULCBIMiwgUDIsIEFsbG9jYXRvcj4mIHNvdXJjZSk7ICAgICAgICAgLy8gQysrMTcKKyAgICB0ZW1wbGF0ZTxjbGFzcyBIMiwgY2xhc3MgUDI+CisgICAgICB2b2lkIG1lcmdlKHVub3JkZXJlZF9tYXA8S2V5LCBULCBIMiwgUDIsIEFsbG9jYXRvcj4mJiBzb3VyY2UpOyAgICAgICAgLy8gQysrMTcKKwogICAgIHZvaWQgc3dhcCh1bm9yZGVyZWRfbXVsdGltYXAmKQogICAgICAgICBub2V4Y2VwdCgKICAgICAgICAgICAgICghYWxsb2NhdG9yX3R5cGU6OnByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcDo6dmFsdWUgfHwKQEAgLTM2Niw2ICszODMsMTIgQEAKICAgICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpbWFwPEtleSwgVCwgSGFzaCwgUHJlZCwgQWxsb2M+JiB5KQogICAgICAgICAgICAgICBub2V4Y2VwdChub2V4Y2VwdCh4LnN3YXAoeSkpKTsKIAordGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEEsIGNsYXNzIFByZWRpY2F0ZT4KKyAgICB2b2lkIGVyYXNlX2lmKHVub3JkZXJlZF9zZXQ8SywgVCwgSCwgUCwgQT4mIGMsIFByZWRpY2F0ZSBwcmVkKTsgICAgICAgLy8gQysrMjAKKwordGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEEsIGNsYXNzIFByZWRpY2F0ZT4KKyAgICB2b2lkIGVyYXNlX2lmKHVub3JkZXJlZF9tdWx0aXNldDxLLCBULCBILCBQLCBBPiYgYywgUHJlZGljYXRlIHByZWQpOyAgLy8gQysrMjAKKwogdGVtcGxhdGUgPGNsYXNzIEtleSwgY2xhc3MgVCwgY2xhc3MgSGFzaCwgY2xhc3MgUHJlZCwgY2xhc3MgQWxsb2M+CiAgICAgYm9vbAogICAgIG9wZXJhdG9yPT0oY29uc3QgdW5vcmRlcmVkX211bHRpbWFwPEtleSwgVCwgSGFzaCwgUHJlZCwgQWxsb2M+JiB4LApAQCAtMzk2LDcgKzQxOSw4IEBACiAKIF9MSUJDUFBfQkVHSU5fTkFNRVNQQUNFX1NURAogCi10ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX0NwLCBjbGFzcyBfSGFzaCwgYm9vbCBfSXNFbXB0eT4KK3RlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfQ3AsIGNsYXNzIF9IYXNoLAorICAgICAgICAgIGJvb2wgPSBpc19lbXB0eTxfSGFzaD46OnZhbHVlICYmICFfX2xpYmNwcF9pc19maW5hbDxfSGFzaD46OnZhbHVlPgogY2xhc3MgX191bm9yZGVyZWRfbWFwX2hhc2hlcgogICAgIDogcHJpdmF0ZSBfSGFzaAogewpAQCAtNDY0LDcgKzQ4OCw4IEBACiAgICAgX194LnN3YXAoX195KTsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9DcCwgY2xhc3MgX1ByZWQsIGJvb2wgX0lzRW1wdHk+Cit0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX0NwLCBjbGFzcyBfUHJlZCwKKyAgICAgICAgICBib29sID0gaXNfZW1wdHk8X1ByZWQ+Ojp2YWx1ZSAmJiAhX19saWJjcHBfaXNfZmluYWw8X1ByZWQ+Ojp2YWx1ZT4KIGNsYXNzIF9fdW5vcmRlcmVkX21hcF9lcXVhbAogICAgIDogcHJpdmF0ZSBfUHJlZAogewpAQCAtODA4LDYgKzgzMyw5IEBACiAgICAgdGVtcGxhdGUgPGNsYXNzPiBmcmllbmQgY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgX19oYXNoX2NvbnN0X2xvY2FsX2l0ZXJhdG9yOwogfTsKIAordGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9UcCwgY2xhc3MgX0hhc2gsIGNsYXNzIF9QcmVkLCBjbGFzcyBfQWxsb2M+CitjbGFzcyB1bm9yZGVyZWRfbXVsdGltYXA7CisKIHRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVHAsIGNsYXNzIF9IYXNoID0gaGFzaDxfS2V5PiwgY2xhc3MgX1ByZWQgPSBlcXVhbF90bzxfS2V5PiwKICAgICAgICAgICBjbGFzcyBfQWxsb2MgPSBhbGxvY2F0b3I8cGFpcjxjb25zdCBfS2V5LCBfVHA+ID4gPgogY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgdW5vcmRlcmVkX21hcApAQCAtODI0LDYgKzg1Miw3IEBACiAgICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3JlZmVyZW5jZTsKICAgICBzdGF0aWNfYXNzZXJ0KChpc19zYW1lPHZhbHVlX3R5cGUsIHR5cGVuYW1lIGFsbG9jYXRvcl90eXBlOjp2YWx1ZV90eXBlPjo6dmFsdWUpLAogICAgICAgICAgICAgICAgICAgIkludmFsaWQgYWxsb2NhdG9yOjp2YWx1ZV90eXBlIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoX19kaWFnbm9zZV91bm9yZGVyZWRfY29udGFpbmVyX3JlcXVpcmVtZW50czxfS2V5LCBfSGFzaCwgX1ByZWQ+KDApKSwgIiIpOwogCiBwcml2YXRlOgogICAgIHR5cGVkZWYgX19oYXNoX3ZhbHVlX3R5cGU8a2V5X3R5cGUsIG1hcHBlZF90eXBlPiAgICAgICAgICAgICAgICAgX192YWx1ZV90eXBlOwpAQCAtODY1LDYgKzg5NCwxMSBAQAogICAgIHR5cGVkZWYgX19pbnNlcnRfcmV0dXJuX3R5cGU8aXRlcmF0b3IsIG5vZGVfdHlwZT4gaW5zZXJ0X3JldHVybl90eXBlOwogI2VuZGlmCiAKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0tleTIsIGNsYXNzIF9UcDIsIGNsYXNzIF9IYXNoMiwgY2xhc3MgX1ByZWQyLCBjbGFzcyBfQWxsb2MyPgorICAgICAgICBmcmllbmQgY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgdW5vcmRlcmVkX21hcDsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0tleTIsIGNsYXNzIF9UcDIsIGNsYXNzIF9IYXNoMiwgY2xhc3MgX1ByZWQyLCBjbGFzcyBfQWxsb2MyPgorICAgICAgICBmcmllbmQgY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgdW5vcmRlcmVkX211bHRpbWFwOworCiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIHVub3JkZXJlZF9tYXAoKQogICAgICAgICBfTk9FWENFUFRfKGlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9fdGFibGU+Ojp2YWx1ZSkKQEAgLTExODgsNiArMTIyMiwzOSBAQAogICAgICAgICByZXR1cm4gX190YWJsZV8udGVtcGxhdGUgX19ub2RlX2hhbmRsZV9leHRyYWN0PG5vZGVfdHlwZT4oCiAgICAgICAgICAgICBfX2l0Ll9faV8pOwogICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBfSDIsIGNsYXNzIF9QMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfbWFwPGtleV90eXBlLCBtYXBwZWRfdHlwZSwgX0gyLCBfUDIsIGFsbG9jYXRvcl90eXBlPiYgX19zb3VyY2UpCisgICAgeworICAgICAgICBfTElCQ1BQX0FTU0VSVChfX3NvdXJjZS5nZXRfYWxsb2NhdG9yKCkgPT0gZ2V0X2FsbG9jYXRvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAibWVyZ2luZyBjb250YWluZXIgd2l0aCBpbmNvbXBhdGlibGUgYWxsb2NhdG9yIik7CisgICAgICAgIHJldHVybiBfX3RhYmxlXy5fX25vZGVfaGFuZGxlX21lcmdlX3VuaXF1ZShfX3NvdXJjZS5fX3RhYmxlXyk7CisgICAgfQorICAgIHRlbXBsYXRlIDxjbGFzcyBfSDIsIGNsYXNzIF9QMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfbWFwPGtleV90eXBlLCBtYXBwZWRfdHlwZSwgX0gyLCBfUDIsIGFsbG9jYXRvcl90eXBlPiYmIF9fc291cmNlKQorICAgIHsKKyAgICAgICAgX0xJQkNQUF9BU1NFUlQoX19zb3VyY2UuZ2V0X2FsbG9jYXRvcigpID09IGdldF9hbGxvY2F0b3IoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIm1lcmdpbmcgY29udGFpbmVyIHdpdGggaW5jb21wYXRpYmxlIGFsbG9jYXRvciIpOworICAgICAgICByZXR1cm4gX190YWJsZV8uX19ub2RlX2hhbmRsZV9tZXJnZV91bmlxdWUoX19zb3VyY2UuX190YWJsZV8pOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0gyLCBjbGFzcyBfUDI+CisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIHZvaWQgbWVyZ2UodW5vcmRlcmVkX211bHRpbWFwPGtleV90eXBlLCBtYXBwZWRfdHlwZSwgX0gyLCBfUDIsIGFsbG9jYXRvcl90eXBlPiYgX19zb3VyY2UpCisgICAgeworICAgICAgICBfTElCQ1BQX0FTU0VSVChfX3NvdXJjZS5nZXRfYWxsb2NhdG9yKCkgPT0gZ2V0X2FsbG9jYXRvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAibWVyZ2luZyBjb250YWluZXIgd2l0aCBpbmNvbXBhdGlibGUgYWxsb2NhdG9yIik7CisgICAgICAgIHJldHVybiBfX3RhYmxlXy5fX25vZGVfaGFuZGxlX21lcmdlX3VuaXF1ZShfX3NvdXJjZS5fX3RhYmxlXyk7CisgICAgfQorICAgIHRlbXBsYXRlIDxjbGFzcyBfSDIsIGNsYXNzIF9QMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfbXVsdGltYXA8a2V5X3R5cGUsIG1hcHBlZF90eXBlLCBfSDIsIF9QMiwgYWxsb2NhdG9yX3R5cGU+JiYgX19zb3VyY2UpCisgICAgeworICAgICAgICBfTElCQ1BQX0FTU0VSVChfX3NvdXJjZS5nZXRfYWxsb2NhdG9yKCkgPT0gZ2V0X2FsbG9jYXRvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAibWVyZ2luZyBjb250YWluZXIgd2l0aCBpbmNvbXBhdGlibGUgYWxsb2NhdG9yIik7CisgICAgICAgIHJldHVybiBfX3RhYmxlXy5fX25vZGVfaGFuZGxlX21lcmdlX3VuaXF1ZShfX3NvdXJjZS5fX3RhYmxlXyk7CisgICAgfQogI2VuZGlmCiAKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCkBAIC0xNTM1LDEwICsxNjAyLDggQEAKIHVub3JkZXJlZF9tYXA8X0tleSwgX1RwLCBfSGFzaCwgX1ByZWQsIF9BbGxvYz46OmF0KGNvbnN0IGtleV90eXBlJiBfX2spCiB7CiAgICAgaXRlcmF0b3IgX19pID0gZmluZChfX2spOwotI2lmbmRlZiBfTElCQ1BQX05PX0VYQ0VQVElPTlMKICAgICBpZiAoX19pID09IGVuZCgpKQotICAgICAgICB0aHJvdyBvdXRfb2ZfcmFuZ2UoInVub3JkZXJlZF9tYXA6OmF0OiBrZXkgbm90IGZvdW5kIik7Ci0jZW5kaWYgIC8vIF9MSUJDUFBfTk9fRVhDRVBUSU9OUworICAgICAgICBfX3Rocm93X291dF9vZl9yYW5nZSgidW5vcmRlcmVkX21hcDo6YXQ6IGtleSBub3QgZm91bmQiKTsKICAgICByZXR1cm4gX19pLT5zZWNvbmQ7CiB9CiAKQEAgLTE1NDcsMTAgKzE2MTIsOCBAQAogdW5vcmRlcmVkX21hcDxfS2V5LCBfVHAsIF9IYXNoLCBfUHJlZCwgX0FsbG9jPjo6YXQoY29uc3Qga2V5X3R5cGUmIF9faykgY29uc3QKIHsKICAgICBjb25zdF9pdGVyYXRvciBfX2kgPSBmaW5kKF9fayk7Ci0jaWZuZGVmIF9MSUJDUFBfTk9fRVhDRVBUSU9OUwogICAgIGlmIChfX2kgPT0gZW5kKCkpCi0gICAgICAgIHRocm93IG91dF9vZl9yYW5nZSgidW5vcmRlcmVkX21hcDo6YXQ6IGtleSBub3QgZm91bmQiKTsKLSNlbmRpZiAgLy8gX0xJQkNQUF9OT19FWENFUFRJT05TCisgICAgICAgIF9fdGhyb3dfb3V0X29mX3JhbmdlKCJ1bm9yZGVyZWRfbWFwOjphdDoga2V5IG5vdCBmb3VuZCIpOwogICAgIHJldHVybiBfX2ktPnNlY29uZDsKIH0KIApAQCAtMTU2NCw2ICsxNjI3LDEzIEBACiAgICAgX194LnN3YXAoX195KTsKIH0KIAorI2lmIF9MSUJDUFBfU1REX1ZFUiA+IDE3Cit0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1RwLCBjbGFzcyBfSGFzaCwgY2xhc3MgX1ByZWQsIGNsYXNzIF9BbGxvYywgY2xhc3MgX1ByZWRpY2F0ZT4KK2lubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCit2b2lkIGVyYXNlX2lmKHVub3JkZXJlZF9tYXA8X0tleSwgX1RwLCBfSGFzaCwgX1ByZWQsIF9BbGxvYz4mIF9fYywgX1ByZWRpY2F0ZSBfX3ByZWQpCit7IF9fbGliY3BwX2VyYXNlX2lmX2NvbnRhaW5lcihfX2MsIF9fcHJlZCk7IH0KKyNlbmRpZgorCiB0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1RwLCBjbGFzcyBfSGFzaCwgY2xhc3MgX1ByZWQsIGNsYXNzIF9BbGxvYz4KIGJvb2wKIG9wZXJhdG9yPT0oY29uc3QgdW5vcmRlcmVkX21hcDxfS2V5LCBfVHAsIF9IYXNoLCBfUHJlZCwgX0FsbG9jPiYgX194LApAQCAtMTYwOCw2ICsxNjc4LDcgQEAKICAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfcmVmZXJlbmNlOwogICAgIHN0YXRpY19hc3NlcnQoKGlzX3NhbWU8dmFsdWVfdHlwZSwgdHlwZW5hbWUgYWxsb2NhdG9yX3R5cGU6OnZhbHVlX3R5cGU+Ojp2YWx1ZSksCiAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBhbGxvY2F0b3I6OnZhbHVlX3R5cGUiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihfX2RpYWdub3NlX3Vub3JkZXJlZF9jb250YWluZXJfcmVxdWlyZW1lbnRzPF9LZXksIF9IYXNoLCBfUHJlZD4oMCkpLCAiIik7CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBfX2hhc2hfdmFsdWVfdHlwZTxrZXlfdHlwZSwgbWFwcGVkX3R5cGU+ICAgICAgICAgICAgICAgICBfX3ZhbHVlX3R5cGU7CkBAIC0xNjQ2LDYgKzE3MTcsMTEgQEAKICAgICB0eXBlZGVmIF9fbWFwX25vZGVfaGFuZGxlPF9fbm9kZSwgYWxsb2NhdG9yX3R5cGU+IG5vZGVfdHlwZTsKICNlbmRpZgogCisgICAgdGVtcGxhdGUgPGNsYXNzIF9LZXkyLCBjbGFzcyBfVHAyLCBjbGFzcyBfSGFzaDIsIGNsYXNzIF9QcmVkMiwgY2xhc3MgX0FsbG9jMj4KKyAgICAgICAgZnJpZW5kIGNsYXNzIF9MSUJDUFBfVEVNUExBVEVfVklTIHVub3JkZXJlZF9tYXA7CisgICAgdGVtcGxhdGUgPGNsYXNzIF9LZXkyLCBjbGFzcyBfVHAyLCBjbGFzcyBfSGFzaDIsIGNsYXNzIF9QcmVkMiwgY2xhc3MgX0FsbG9jMj4KKyAgICAgICAgZnJpZW5kIGNsYXNzIF9MSUJDUFBfVEVNUExBVEVfVklTIHVub3JkZXJlZF9tdWx0aW1hcDsKKwogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKICAgICB1bm9yZGVyZWRfbXVsdGltYXAoKQogICAgICAgICBfTk9FWENFUFRfKGlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9fdGFibGU+Ojp2YWx1ZSkKQEAgLTE4NDcsNiArMTkyMywzOSBAQAogICAgICAgICByZXR1cm4gX190YWJsZV8udGVtcGxhdGUgX19ub2RlX2hhbmRsZV9leHRyYWN0PG5vZGVfdHlwZT4oCiAgICAgICAgICAgICBfX2l0Ll9faV8pOwogICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBfSDIsIGNsYXNzIF9QMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfbXVsdGltYXA8a2V5X3R5cGUsIG1hcHBlZF90eXBlLCBfSDIsIF9QMiwgYWxsb2NhdG9yX3R5cGU+JiBfX3NvdXJjZSkKKyAgICB7CisgICAgICAgIF9MSUJDUFBfQVNTRVJUKF9fc291cmNlLmdldF9hbGxvY2F0b3IoKSA9PSBnZXRfYWxsb2NhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICJtZXJnaW5nIGNvbnRhaW5lciB3aXRoIGluY29tcGF0aWJsZSBhbGxvY2F0b3IiKTsKKyAgICAgICAgcmV0dXJuIF9fdGFibGVfLl9fbm9kZV9oYW5kbGVfbWVyZ2VfbXVsdGkoX19zb3VyY2UuX190YWJsZV8pOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0gyLCBjbGFzcyBfUDI+CisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIHZvaWQgbWVyZ2UodW5vcmRlcmVkX211bHRpbWFwPGtleV90eXBlLCBtYXBwZWRfdHlwZSwgX0gyLCBfUDIsIGFsbG9jYXRvcl90eXBlPiYmIF9fc291cmNlKQorICAgIHsKKyAgICAgICAgX0xJQkNQUF9BU1NFUlQoX19zb3VyY2UuZ2V0X2FsbG9jYXRvcigpID09IGdldF9hbGxvY2F0b3IoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIm1lcmdpbmcgY29udGFpbmVyIHdpdGggaW5jb21wYXRpYmxlIGFsbG9jYXRvciIpOworICAgICAgICByZXR1cm4gX190YWJsZV8uX19ub2RlX2hhbmRsZV9tZXJnZV9tdWx0aShfX3NvdXJjZS5fX3RhYmxlXyk7CisgICAgfQorICAgIHRlbXBsYXRlIDxjbGFzcyBfSDIsIGNsYXNzIF9QMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfbWFwPGtleV90eXBlLCBtYXBwZWRfdHlwZSwgX0gyLCBfUDIsIGFsbG9jYXRvcl90eXBlPiYgX19zb3VyY2UpCisgICAgeworICAgICAgICBfTElCQ1BQX0FTU0VSVChfX3NvdXJjZS5nZXRfYWxsb2NhdG9yKCkgPT0gZ2V0X2FsbG9jYXRvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAibWVyZ2luZyBjb250YWluZXIgd2l0aCBpbmNvbXBhdGlibGUgYWxsb2NhdG9yIik7CisgICAgICAgIHJldHVybiBfX3RhYmxlXy5fX25vZGVfaGFuZGxlX21lcmdlX211bHRpKF9fc291cmNlLl9fdGFibGVfKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPGNsYXNzIF9IMiwgY2xhc3MgX1AyPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB2b2lkIG1lcmdlKHVub3JkZXJlZF9tYXA8a2V5X3R5cGUsIG1hcHBlZF90eXBlLCBfSDIsIF9QMiwgYWxsb2NhdG9yX3R5cGU+JiYgX19zb3VyY2UpCisgICAgeworICAgICAgICBfTElCQ1BQX0FTU0VSVChfX3NvdXJjZS5nZXRfYWxsb2NhdG9yKCkgPT0gZ2V0X2FsbG9jYXRvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAibWVyZ2luZyBjb250YWluZXIgd2l0aCBpbmNvbXBhdGlibGUgYWxsb2NhdG9yIik7CisgICAgICAgIHJldHVybiBfX3RhYmxlXy5fX25vZGVfaGFuZGxlX21lcmdlX211bHRpKF9fc291cmNlLl9fdGFibGVfKTsKKyAgICB9CiAjZW5kaWYKIAogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKQEAgLTIxNDIsNiArMjI1MSwxMyBAQAogICAgIF9feC5zd2FwKF9feSk7CiB9CiAKKyNpZiBfTElCQ1BQX1NURF9WRVIgPiAxNwordGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9UcCwgY2xhc3MgX0hhc2gsIGNsYXNzIF9QcmVkLCBjbGFzcyBfQWxsb2MsIGNsYXNzIF9QcmVkaWNhdGU+CitpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQordm9pZCBlcmFzZV9pZih1bm9yZGVyZWRfbXVsdGltYXA8X0tleSwgX1RwLCBfSGFzaCwgX1ByZWQsIF9BbGxvYz4mIF9fYywgX1ByZWRpY2F0ZSBfX3ByZWQpCit7IF9fbGliY3BwX2VyYXNlX2lmX2NvbnRhaW5lcihfX2MsIF9fcHJlZCk7IH0KKyNlbmRpZgorCiB0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1RwLCBjbGFzcyBfSGFzaCwgY2xhc3MgX1ByZWQsIGNsYXNzIF9BbGxvYz4KIGJvb2wKIG9wZXJhdG9yPT0oY29uc3QgdW5vcmRlcmVkX211bHRpbWFwPF9LZXksIF9UcCwgX0hhc2gsIF9QcmVkLCBfQWxsb2M+JiBfX3gsCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvdW5vcmRlcmVkX3NldCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS91bm9yZGVyZWRfc2V0CmluZGV4IGEyMTlmYTYuLjRjZmFhODYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS91bm9yZGVyZWRfc2V0CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS91bm9yZGVyZWRfc2V0CkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHVub3JkZXJlZF9zZXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xMjcsNiArMTI2LDE1IEBACiAgICAgaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIGxhc3QpOwogICAgIHZvaWQgY2xlYXIoKSBub2V4Y2VwdDsKIAorICAgIHRlbXBsYXRlPGNsYXNzIEgyLCBjbGFzcyBQMj4KKyAgICAgIHZvaWQgbWVyZ2UodW5vcmRlcmVkX3NldDxLZXksIEgyLCBQMiwgQWxsb2NhdG9yPiYgc291cmNlKTsgICAgICAgICAvLyBDKysxNworICAgIHRlbXBsYXRlPGNsYXNzIEgyLCBjbGFzcyBQMj4KKyAgICAgIHZvaWQgbWVyZ2UodW5vcmRlcmVkX3NldDxLZXksIEgyLCBQMiwgQWxsb2NhdG9yPiYmIHNvdXJjZSk7ICAgICAgICAvLyBDKysxNworICAgIHRlbXBsYXRlPGNsYXNzIEgyLCBjbGFzcyBQMj4KKyAgICAgIHZvaWQgbWVyZ2UodW5vcmRlcmVkX211bHRpc2V0PEtleSwgSDIsIFAyLCBBbGxvY2F0b3I+JiBzb3VyY2UpOyAgICAvLyBDKysxNworICAgIHRlbXBsYXRlPGNsYXNzIEgyLCBjbGFzcyBQMj4KKyAgICAgIHZvaWQgbWVyZ2UodW5vcmRlcmVkX211bHRpc2V0PEtleSwgSDIsIFAyLCBBbGxvY2F0b3I+JiYgc291cmNlKTsgICAvLyBDKysxNworCiAgICAgdm9pZCBzd2FwKHVub3JkZXJlZF9zZXQmKQogICAgICAgIG5vZXhjZXB0KGFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPjo6aXNfYWx3YXlzX2VxdWFsOjp2YWx1ZSAmJgogICAgICAgICAgICAgICAgICBub2V4Y2VwdChzd2FwKGRlY2x2YWw8aGFzaGVyJj4oKSwgZGVjbHZhbDxoYXNoZXImPigpKSkgJiYKQEAgLTI4Miw2ICsyOTAsMTUgQEAKICAgICBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCk7CiAgICAgdm9pZCBjbGVhcigpIG5vZXhjZXB0OwogCisgICAgdGVtcGxhdGU8Y2xhc3MgSDIsIGNsYXNzIFAyPgorICAgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfbXVsdGlzZXQ8S2V5LCBIMiwgUDIsIEFsbG9jYXRvcj4mIHNvdXJjZSk7ICAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgSDIsIGNsYXNzIFAyPgorICAgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfbXVsdGlzZXQ8S2V5LCBIMiwgUDIsIEFsbG9jYXRvcj4mJiBzb3VyY2UpOyAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgSDIsIGNsYXNzIFAyPgorICAgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfc2V0PEtleSwgSDIsIFAyLCBBbGxvY2F0b3I+JiBzb3VyY2UpOyAgICAgICAgIC8vIEMrKzE3CisgICAgdGVtcGxhdGU8Y2xhc3MgSDIsIGNsYXNzIFAyPgorICAgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfc2V0PEtleSwgSDIsIFAyLCBBbGxvY2F0b3I+JiYgc291cmNlKTsgICAgICAgIC8vIEMrKzE3CisKICAgICB2b2lkIHN3YXAodW5vcmRlcmVkX211bHRpc2V0JikKICAgICAgICBub2V4Y2VwdChhbGxvY2F0b3JfdHJhaXRzPEFsbG9jYXRvcj46OmlzX2Fsd2F5c19lcXVhbDo6dmFsdWUgJiYKICAgICAgICAgICAgICAgICAgbm9leGNlcHQoc3dhcChkZWNsdmFsPGhhc2hlciY+KCksIGRlY2x2YWw8aGFzaGVyJj4oKSkpICYmCkBAIC0zMjEsNiArMzM4LDEzIEBACiAgICAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxWYWx1ZSwgSGFzaCwgUHJlZCwgQWxsb2M+JiB5KQogICAgICAgICAgICAgICBub2V4Y2VwdChub2V4Y2VwdCh4LnN3YXAoeSkpKTsKIAordGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEEsIGNsYXNzIFByZWRpY2F0ZT4KKyAgICB2b2lkIGVyYXNlX2lmKHVub3JkZXJlZF9zZXQ8SywgVCwgSCwgUCwgQT4mIGMsIFByZWRpY2F0ZSBwcmVkKTsgICAgICAgLy8gQysrMjAKKwordGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEEsIGNsYXNzIFByZWRpY2F0ZT4KKyAgICB2b2lkIGVyYXNlX2lmKHVub3JkZXJlZF9tdWx0aXNldDxLLCBULCBILCBQLCBBPiYgYywgUHJlZGljYXRlIHByZWQpOyAgLy8gQysrMjAKKworCiB0ZW1wbGF0ZSA8Y2xhc3MgVmFsdWUsIGNsYXNzIEhhc2gsIGNsYXNzIFByZWQsIGNsYXNzIEFsbG9jPgogICAgIGJvb2wKICAgICBvcGVyYXRvcj09KGNvbnN0IHVub3JkZXJlZF9tdWx0aXNldDxWYWx1ZSwgSGFzaCwgUHJlZCwgQWxsb2M+JiB4LApAQCAtMzQ4LDYgKzM3Miw5IEBACiAKIF9MSUJDUFBfQkVHSU5fTkFNRVNQQUNFX1NURAogCit0ZW1wbGF0ZSA8Y2xhc3MgX1ZhbHVlLCBjbGFzcyBfSGFzaCwgY2xhc3MgX1ByZWQsIGNsYXNzIF9BbGxvYz4KK2NsYXNzIHVub3JkZXJlZF9tdWx0aXNldDsKKwogdGVtcGxhdGUgPGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0hhc2ggPSBoYXNoPF9WYWx1ZT4sIGNsYXNzIF9QcmVkID0gZXF1YWxfdG88X1ZhbHVlPiwKICAgICAgICAgICBjbGFzcyBfQWxsb2MgPSBhbGxvY2F0b3I8X1ZhbHVlPiA+CiBjbGFzcyBfTElCQ1BQX1RFTVBMQVRFX1ZJUyB1bm9yZGVyZWRfc2V0CkBAIC0zNjMsNiArMzkwLDcgQEAKICAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfcmVmZXJlbmNlOwogICAgIHN0YXRpY19hc3NlcnQoKGlzX3NhbWU8dmFsdWVfdHlwZSwgdHlwZW5hbWUgYWxsb2NhdG9yX3R5cGU6OnZhbHVlX3R5cGU+Ojp2YWx1ZSksCiAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBhbGxvY2F0b3I6OnZhbHVlX3R5cGUiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihfX2RpYWdub3NlX3Vub3JkZXJlZF9jb250YWluZXJfcmVxdWlyZW1lbnRzPF9WYWx1ZSwgX0hhc2gsIF9QcmVkPigwKSksICIiKTsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIF9faGFzaF90YWJsZTx2YWx1ZV90eXBlLCBoYXNoZXIsIGtleV9lcXVhbCwgYWxsb2NhdG9yX3R5cGU+IF9fdGFibGU7CkBAIC0zODUsNiArNDEzLDExIEBACiAgICAgdHlwZWRlZiBfX2luc2VydF9yZXR1cm5fdHlwZTxpdGVyYXRvciwgbm9kZV90eXBlPiBpbnNlcnRfcmV0dXJuX3R5cGU7CiAjZW5kaWYKIAorICAgIHRlbXBsYXRlIDxjbGFzcyBfVmFsdWUyLCBjbGFzcyBfSGFzaDIsIGNsYXNzIF9QcmVkMiwgY2xhc3MgX0FsbG9jMj4KKyAgICAgICAgZnJpZW5kIGNsYXNzIF9MSUJDUFBfVEVNUExBVEVfVklTIHVub3JkZXJlZF9zZXQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIF9WYWx1ZTIsIGNsYXNzIF9IYXNoMiwgY2xhc3MgX1ByZWQyLCBjbGFzcyBfQWxsb2MyPgorICAgICAgICBmcmllbmQgY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgdW5vcmRlcmVkX211bHRpc2V0OworCiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIHVub3JkZXJlZF9zZXQoKQogICAgICAgICBfTk9FWENFUFRfKGlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPF9fdGFibGU+Ojp2YWx1ZSkKQEAgLTU5MCw2ICs2MjMsMzkgQEAKICAgICB7CiAgICAgICAgIHJldHVybiBfX3RhYmxlXy50ZW1wbGF0ZSBfX25vZGVfaGFuZGxlX2V4dHJhY3Q8bm9kZV90eXBlPihfX2l0KTsKICAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBfSDIsIGNsYXNzIF9QMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfc2V0PGtleV90eXBlLCBfSDIsIF9QMiwgYWxsb2NhdG9yX3R5cGU+JiBfX3NvdXJjZSkKKyAgICB7CisgICAgICAgIF9MSUJDUFBfQVNTRVJUKF9fc291cmNlLmdldF9hbGxvY2F0b3IoKSA9PSBnZXRfYWxsb2NhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICJtZXJnaW5nIGNvbnRhaW5lciB3aXRoIGluY29tcGF0aWJsZSBhbGxvY2F0b3IiKTsKKyAgICAgICAgX190YWJsZV8uX19ub2RlX2hhbmRsZV9tZXJnZV91bmlxdWUoX19zb3VyY2UuX190YWJsZV8pOworICAgIH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBfSDIsIGNsYXNzIF9QMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfc2V0PGtleV90eXBlLCBfSDIsIF9QMiwgYWxsb2NhdG9yX3R5cGU+JiYgX19zb3VyY2UpCisgICAgeworICAgICAgICBfTElCQ1BQX0FTU0VSVChfX3NvdXJjZS5nZXRfYWxsb2NhdG9yKCkgPT0gZ2V0X2FsbG9jYXRvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAibWVyZ2luZyBjb250YWluZXIgd2l0aCBpbmNvbXBhdGlibGUgYWxsb2NhdG9yIik7CisgICAgICAgIF9fdGFibGVfLl9fbm9kZV9oYW5kbGVfbWVyZ2VfdW5pcXVlKF9fc291cmNlLl9fdGFibGVfKTsKKyAgICB9CisgICAgdGVtcGxhdGU8Y2xhc3MgX0gyLCBjbGFzcyBfUDI+CisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIHZvaWQgbWVyZ2UodW5vcmRlcmVkX211bHRpc2V0PGtleV90eXBlLCBfSDIsIF9QMiwgYWxsb2NhdG9yX3R5cGU+JiBfX3NvdXJjZSkKKyAgICB7CisgICAgICAgIF9MSUJDUFBfQVNTRVJUKF9fc291cmNlLmdldF9hbGxvY2F0b3IoKSA9PSBnZXRfYWxsb2NhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICJtZXJnaW5nIGNvbnRhaW5lciB3aXRoIGluY29tcGF0aWJsZSBhbGxvY2F0b3IiKTsKKyAgICAgICAgX190YWJsZV8uX19ub2RlX2hhbmRsZV9tZXJnZV91bmlxdWUoX19zb3VyY2UuX190YWJsZV8pOworICAgIH0KKyAgICB0ZW1wbGF0ZTxjbGFzcyBfSDIsIGNsYXNzIF9QMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfbXVsdGlzZXQ8a2V5X3R5cGUsIF9IMiwgX1AyLCBhbGxvY2F0b3JfdHlwZT4mJiBfX3NvdXJjZSkKKyAgICB7CisgICAgICAgIF9MSUJDUFBfQVNTRVJUKF9fc291cmNlLmdldF9hbGxvY2F0b3IoKSA9PSBnZXRfYWxsb2NhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICJtZXJnaW5nIGNvbnRhaW5lciB3aXRoIGluY29tcGF0aWJsZSBhbGxvY2F0b3IiKTsKKyAgICAgICAgX190YWJsZV8uX19ub2RlX2hhbmRsZV9tZXJnZV91bmlxdWUoX19zb3VyY2UuX190YWJsZV8pOworICAgIH0KICNlbmRpZgogCiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQpAQCAtODc0LDYgKzk0MCwxMyBAQAogICAgIF9feC5zd2FwKF9feSk7CiB9CiAKKyNpZiBfTElCQ1BQX1NURF9WRVIgPiAxNwordGVtcGxhdGUgPGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0hhc2gsIGNsYXNzIF9QcmVkLCBjbGFzcyBfQWxsb2MsIGNsYXNzIF9QcmVkaWNhdGU+CitpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQordm9pZCBlcmFzZV9pZih1bm9yZGVyZWRfc2V0PF9WYWx1ZSwgX0hhc2gsIF9QcmVkLCBfQWxsb2M+JiBfX2MsIF9QcmVkaWNhdGUgX19wcmVkKQoreyBfX2xpYmNwcF9lcmFzZV9pZl9jb250YWluZXIoX19jLCBfX3ByZWQpOyB9CisjZW5kaWYKKwogdGVtcGxhdGUgPGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0hhc2gsIGNsYXNzIF9QcmVkLCBjbGFzcyBfQWxsb2M+CiBib29sCiBvcGVyYXRvcj09KGNvbnN0IHVub3JkZXJlZF9zZXQ8X1ZhbHVlLCBfSGFzaCwgX1ByZWQsIF9BbGxvYz4mIF9feCwKQEAgLTkxNyw2ICs5OTAsNyBAQAogICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9yZWZlcmVuY2U7CiAgICAgc3RhdGljX2Fzc2VydCgoaXNfc2FtZTx2YWx1ZV90eXBlLCB0eXBlbmFtZSBhbGxvY2F0b3JfdHlwZTo6dmFsdWVfdHlwZT46OnZhbHVlKSwKICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGFsbG9jYXRvcjo6dmFsdWVfdHlwZSIpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKF9fZGlhZ25vc2VfdW5vcmRlcmVkX2NvbnRhaW5lcl9yZXF1aXJlbWVudHM8X1ZhbHVlLCBfSGFzaCwgX1ByZWQ+KDApKSwgIiIpOwogCiBwcml2YXRlOgogICAgIHR5cGVkZWYgX19oYXNoX3RhYmxlPHZhbHVlX3R5cGUsIGhhc2hlciwga2V5X2VxdWFsLCBhbGxvY2F0b3JfdHlwZT4gX190YWJsZTsKQEAgLTkzOCw2ICsxMDEyLDExIEBACiAgICAgdHlwZWRlZiBfX3NldF9ub2RlX2hhbmRsZTx0eXBlbmFtZSBfX3RhYmxlOjpfX25vZGUsIGFsbG9jYXRvcl90eXBlPiBub2RlX3R5cGU7CiAjZW5kaWYKIAorICAgIHRlbXBsYXRlIDxjbGFzcyBfVmFsdWUyLCBjbGFzcyBfSGFzaDIsIGNsYXNzIF9QcmVkMiwgY2xhc3MgX0FsbG9jMj4KKyAgICAgICAgZnJpZW5kIGNsYXNzIF9MSUJDUFBfVEVNUExBVEVfVklTIHVub3JkZXJlZF9zZXQ7CisgICAgdGVtcGxhdGUgPGNsYXNzIF9WYWx1ZTIsIGNsYXNzIF9IYXNoMiwgY2xhc3MgX1ByZWQyLCBjbGFzcyBfQWxsb2MyPgorICAgICAgICBmcmllbmQgY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgdW5vcmRlcmVkX211bHRpc2V0OworCiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIHVub3JkZXJlZF9tdWx0aXNldCgpCiAgICAgICAgIF9OT0VYQ0VQVF8oaXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdGlibGU8X190YWJsZT46OnZhbHVlKQpAQCAtMTEwMiw2ICsxMTgxLDM5IEBACiAgICAgewogICAgICAgICByZXR1cm4gX190YWJsZV8udGVtcGxhdGUgX19ub2RlX2hhbmRsZV9leHRyYWN0PG5vZGVfdHlwZT4oX19rZXkpOwogICAgIH0KKworICAgIHRlbXBsYXRlIDxjbGFzcyBfSDIsIGNsYXNzIF9QMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfbXVsdGlzZXQ8a2V5X3R5cGUsIF9IMiwgX1AyLCBhbGxvY2F0b3JfdHlwZT4mIF9fc291cmNlKQorICAgIHsKKyAgICAgICAgX0xJQkNQUF9BU1NFUlQoX19zb3VyY2UuZ2V0X2FsbG9jYXRvcigpID09IGdldF9hbGxvY2F0b3IoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIm1lcmdpbmcgY29udGFpbmVyIHdpdGggaW5jb21wYXRpYmxlIGFsbG9jYXRvciIpOworICAgICAgICByZXR1cm4gX190YWJsZV8uX19ub2RlX2hhbmRsZV9tZXJnZV9tdWx0aShfX3NvdXJjZS5fX3RhYmxlXyk7CisgICAgfQorICAgIHRlbXBsYXRlIDxjbGFzcyBfSDIsIGNsYXNzIF9QMj4KKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBtZXJnZSh1bm9yZGVyZWRfbXVsdGlzZXQ8a2V5X3R5cGUsIF9IMiwgX1AyLCBhbGxvY2F0b3JfdHlwZT4mJiBfX3NvdXJjZSkKKyAgICB7CisgICAgICAgIF9MSUJDUFBfQVNTRVJUKF9fc291cmNlLmdldF9hbGxvY2F0b3IoKSA9PSBnZXRfYWxsb2NhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICJtZXJnaW5nIGNvbnRhaW5lciB3aXRoIGluY29tcGF0aWJsZSBhbGxvY2F0b3IiKTsKKyAgICAgICAgcmV0dXJuIF9fdGFibGVfLl9fbm9kZV9oYW5kbGVfbWVyZ2VfbXVsdGkoX19zb3VyY2UuX190YWJsZV8pOworICAgIH0KKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgX0gyLCBjbGFzcyBfUDI+CisgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorICAgIHZvaWQgbWVyZ2UodW5vcmRlcmVkX3NldDxrZXlfdHlwZSwgX0gyLCBfUDIsIGFsbG9jYXRvcl90eXBlPiYgX19zb3VyY2UpCisgICAgeworICAgICAgICBfTElCQ1BQX0FTU0VSVChfX3NvdXJjZS5nZXRfYWxsb2NhdG9yKCkgPT0gZ2V0X2FsbG9jYXRvcigpLAorICAgICAgICAgICAgICAgICAgICAgICAibWVyZ2luZyBjb250YWluZXIgd2l0aCBpbmNvbXBhdGlibGUgYWxsb2NhdG9yIik7CisgICAgICAgIHJldHVybiBfX3RhYmxlXy5fX25vZGVfaGFuZGxlX21lcmdlX211bHRpKF9fc291cmNlLl9fdGFibGVfKTsKKyAgICB9CisgICAgdGVtcGxhdGUgPGNsYXNzIF9IMiwgY2xhc3MgX1AyPgorICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICB2b2lkIG1lcmdlKHVub3JkZXJlZF9zZXQ8a2V5X3R5cGUsIF9IMiwgX1AyLCBhbGxvY2F0b3JfdHlwZT4mJiBfX3NvdXJjZSkKKyAgICB7CisgICAgICAgIF9MSUJDUFBfQVNTRVJUKF9fc291cmNlLmdldF9hbGxvY2F0b3IoKSA9PSBnZXRfYWxsb2NhdG9yKCksCisgICAgICAgICAgICAgICAgICAgICAgICJtZXJnaW5nIGNvbnRhaW5lciB3aXRoIGluY29tcGF0aWJsZSBhbGxvY2F0b3IiKTsKKyAgICAgICAgcmV0dXJuIF9fdGFibGVfLl9fbm9kZV9oYW5kbGVfbWVyZ2VfbXVsdGkoX19zb3VyY2UuX190YWJsZV8pOworICAgIH0KICNlbmRpZgogCiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQpAQCAtMTM5OCw2ICsxNTEwLDEzIEBACiAgICAgX194LnN3YXAoX195KTsKIH0KIAorI2lmIF9MSUJDUFBfU1REX1ZFUiA+IDE3Cit0ZW1wbGF0ZSA8Y2xhc3MgX1ZhbHVlLCBjbGFzcyBfSGFzaCwgY2xhc3MgX1ByZWQsIGNsYXNzIF9BbGxvYywgY2xhc3MgX1ByZWRpY2F0ZT4KK2lubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCit2b2lkIGVyYXNlX2lmKHVub3JkZXJlZF9tdWx0aXNldDxfVmFsdWUsIF9IYXNoLCBfUHJlZCwgX0FsbG9jPiYgX19jLCBfUHJlZGljYXRlIF9fcHJlZCkKK3sgX19saWJjcHBfZXJhc2VfaWZfY29udGFpbmVyKF9fYywgX19wcmVkKTsgfQorI2VuZGlmCisKIHRlbXBsYXRlIDxjbGFzcyBfVmFsdWUsIGNsYXNzIF9IYXNoLCBjbGFzcyBfUHJlZCwgY2xhc3MgX0FsbG9jPgogYm9vbAogb3BlcmF0b3I9PShjb25zdCB1bm9yZGVyZWRfbXVsdGlzZXQ8X1ZhbHVlLCBfSGFzaCwgX1ByZWQsIF9BbGxvYz4mIF9feCwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS91dGlsaXR5IGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3V0aWxpdHkKaW5kZXggNTM4ODU4NS4uNzcwZDE2MCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3V0aWxpdHkKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3V0aWxpdHkKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdXRpbGl0eSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTEwMyw3ICsxMDIsNyBAQAogc3RydWN0IHBpZWNld2lzZV9jb25zdHJ1Y3RfdCB7IH07CiBpbmxpbmUgY29uc3RleHByIHBpZWNld2lzZV9jb25zdHJ1Y3RfdCBwaWVjZXdpc2VfY29uc3RydWN0ID0gcGllY2V3aXNlX2NvbnN0cnVjdF90KCk7CiAKLXRlbXBsYXRlIDxjbGFzcyBUPiBjbGFzcyB0dXBsZV9zaXplOwordGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCB0dXBsZV9zaXplOwogdGVtcGxhdGUgPHNpemVfdCBJLCBjbGFzcyBUPiBjbGFzcyB0dXBsZV9lbGVtZW50OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPiBzdHJ1Y3QgdHVwbGVfc2l6ZTxwYWlyPFQxLCBUMj4gPjsKQEAgLTI5NywxMiArMjk2LDEzIEBACiAKIHN0cnVjdCBfTElCQ1BQX1RFTVBMQVRFX1ZJUyBwaWVjZXdpc2VfY29uc3RydWN0X3QgeyB9OwogI2lmIGRlZmluZWQoX0xJQkNQUF9DWFgwM19MQU5HKSB8fCBkZWZpbmVkKF9MSUJDUFBfQlVJTERJTkdfTElCUkFSWSkKLWV4dGVybiBjb25zdCBwaWVjZXdpc2VfY29uc3RydWN0X3QgcGllY2V3aXNlX2NvbnN0cnVjdDsvLyA9IHBpZWNld2lzZV9jb25zdHJ1Y3RfdCgpOworZXh0ZXJuIF9MSUJDUFBfRVhQT1JURURfRlJPTV9BQkkgY29uc3QgcGllY2V3aXNlX2NvbnN0cnVjdF90IHBpZWNld2lzZV9jb25zdHJ1Y3Q7Ly8gPSBwaWVjZXdpc2VfY29uc3RydWN0X3QoKTsKICNlbHNlCiAvKiBfTElCQ1BQX0lOTElORV9WQVIgKi8gY29uc3RleHByIHBpZWNld2lzZV9jb25zdHJ1Y3RfdCBwaWVjZXdpc2VfY29uc3RydWN0ID0gcGllY2V3aXNlX2NvbnN0cnVjdF90KCk7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoX0xJQkNQUF9ERVBSRUNBVEVEX0FCSV9ESVNBQkxFX1BBSVJfVFJJVklBTF9DT1BZX0NUT1IpCit0ZW1wbGF0ZSA8Y2xhc3MsIGNsYXNzPgogc3RydWN0IF9fbm9uX3RyaXZpYWxseV9jb3B5YWJsZV9iYXNlIHsKICAgX0xJQkNQUF9DT05TVEVYUFIgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICBfX25vbl90cml2aWFsbHlfY29weWFibGVfYmFzZSgpIF9OT0VYQ0VQVCB7fQpAQCAtMzE0LDcgKzMxNCw3IEBACiB0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CiBzdHJ1Y3QgX0xJQkNQUF9URU1QTEFURV9WSVMgcGFpcgogI2lmIGRlZmluZWQoX0xJQkNQUF9ERVBSRUNBVEVEX0FCSV9ESVNBQkxFX1BBSVJfVFJJVklBTF9DT1BZX0NUT1IpCi06IHByaXZhdGUgX19ub25fdHJpdmlhbGx5X2NvcHlhYmxlX2Jhc2UKKzogcHJpdmF0ZSBfX25vbl90cml2aWFsbHlfY29weWFibGVfYmFzZTxfVDEsIF9UMj4KICNlbmRpZgogewogICAgIHR5cGVkZWYgX1QxIGZpcnN0X3R5cGU7CkBAIC00MDksMTMgKzQwOSwxNyBAQAogICAgICAgICAgICAgX0NoZWNrQXJnc0RlcDxfRHVtbXk+Ojp0ZW1wbGF0ZSBfX2VuYWJsZV9kZWZhdWx0PF9UMSwgX1QyPigpCiAgICAgPiA9IGZhbHNlPgogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgX0xJQkNQUF9DT05TVEVYUFIKLSAgICBwYWlyKCkgOiBmaXJzdCgpLCBzZWNvbmQoKSB7fQorICAgIHBhaXIoKSBfTk9FWENFUFRfKGlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPGZpcnN0X3R5cGU+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgICAgICAgIGlzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RpYmxlPHNlY29uZF90eXBlPjo6dmFsdWUpCisgICAgICAgIDogZmlyc3QoKSwgc2Vjb25kKCkge30KIAogICAgIHRlbXBsYXRlIDxib29sIF9EdW1teSA9IHRydWUsIF9FbmFibGVCPAogICAgICAgICAgICAgIF9DaGVja0FyZ3NEZXA8X0R1bW15Pjo6dGVtcGxhdGUgX19lbmFibGVfZXhwbGljaXQ8X1QxIGNvbnN0JiwgX1QyIGNvbnN0Jj4oKQogICAgID4gPSBmYWxzZT4KICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIF9MSUJDUFBfQ09OU1RFWFBSX0FGVEVSX0NYWDExCiAgICAgZXhwbGljaXQgcGFpcihfVDEgY29uc3QmIF9fdDEsIF9UMiBjb25zdCYgX190MikKKyAgICAgICAgX05PRVhDRVBUXyhpc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZTxmaXJzdF90eXBlPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICBpc19ub3Rocm93X2NvcHlfY29uc3RydWN0aWJsZTxzZWNvbmRfdHlwZT46OnZhbHVlKQogICAgICAgICA6IGZpcnN0KF9fdDEpLCBzZWNvbmQoX190Mikge30KIAogICAgIHRlbXBsYXRlPGJvb2wgX0R1bW15ID0gdHJ1ZSwgX0VuYWJsZUI8CkBAIC00MjMsNiArNDI3LDggQEAKICAgICA+ID0gZmFsc2U+CiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBfTElCQ1BQX0NPTlNURVhQUl9BRlRFUl9DWFgxMQogICAgIHBhaXIoX1QxIGNvbnN0JiBfX3QxLCBfVDIgY29uc3QmIF9fdDIpCisgICAgICAgIF9OT0VYQ0VQVF8oaXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8Zmlyc3RfdHlwZT46OnZhbHVlICYmCisgICAgICAgICAgICAgICAgICAgaXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdGlibGU8c2Vjb25kX3R5cGU+Ojp2YWx1ZSkKICAgICAgICAgOiBmaXJzdChfX3QxKSwgc2Vjb25kKF9fdDIpIHt9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBfVTEsIGNsYXNzIF9VMiwgX0VuYWJsZUI8CkBAIC00MzAsNiArNDM2LDggQEAKICAgICA+ID0gZmFsc2U+CiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBfTElCQ1BQX0NPTlNURVhQUl9BRlRFUl9DWFgxMQogICAgIGV4cGxpY2l0IHBhaXIoX1UxJiYgX191MSwgX1UyJiYgX191MikKKyAgICAgICAgX05PRVhDRVBUXygoaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPGZpcnN0X3R5cGUsIF9VMT46OnZhbHVlICYmCisgICAgICAgICAgICAgICAgICAgIGlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxzZWNvbmRfdHlwZSwgX1UyPjo6dmFsdWUpKQogICAgICAgICA6IGZpcnN0KF9WU1REOjpmb3J3YXJkPF9VMT4oX191MSkpLCBzZWNvbmQoX1ZTVEQ6OmZvcndhcmQ8X1UyPihfX3UyKSkge30KIAogICAgIHRlbXBsYXRlPGNsYXNzIF9VMSwgY2xhc3MgX1UyLCBfRW5hYmxlQjwKQEAgLTQzNyw2ICs0NDUsOCBAQAogICAgID4gPSBmYWxzZT4KICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIF9MSUJDUFBfQ09OU1RFWFBSX0FGVEVSX0NYWDExCiAgICAgcGFpcihfVTEmJiBfX3UxLCBfVTImJiBfX3UyKQorICAgICAgICBfTk9FWENFUFRfKChpc19ub3Rocm93X2NvbnN0cnVjdGlibGU8Zmlyc3RfdHlwZSwgX1UxPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPHNlY29uZF90eXBlLCBfVTI+Ojp2YWx1ZSkpCiAgICAgICAgIDogZmlyc3QoX1ZTVEQ6OmZvcndhcmQ8X1UxPihfX3UxKSksIHNlY29uZChfVlNURDo6Zm9yd2FyZDxfVTI+KF9fdTIpKSB7fQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgX1UxLCBjbGFzcyBfVTIsIF9FbmFibGVCPApAQCAtNDQ0LDYgKzQ1NCw4IEBACiAgICAgPiA9IGZhbHNlPgogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgX0xJQkNQUF9DT05TVEVYUFJfQUZURVJfQ1hYMTEKICAgICBleHBsaWNpdCBwYWlyKHBhaXI8X1UxLCBfVTI+IGNvbnN0JiBfX3ApCisgICAgICAgIF9OT0VYQ0VQVF8oKGlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxmaXJzdF90eXBlLCBfVTEgY29uc3QmPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPHNlY29uZF90eXBlLCBfVTIgY29uc3QmPjo6dmFsdWUpKQogICAgICAgICA6IGZpcnN0KF9fcC5maXJzdCksIHNlY29uZChfX3Auc2Vjb25kKSB7fQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgX1UxLCBjbGFzcyBfVTIsIF9FbmFibGVCPApAQCAtNDUxLDYgKzQ2Myw4IEBACiAgICAgPiA9IGZhbHNlPgogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgX0xJQkNQUF9DT05TVEVYUFJfQUZURVJfQ1hYMTEKICAgICBwYWlyKHBhaXI8X1UxLCBfVTI+IGNvbnN0JiBfX3ApCisgICAgICAgIF9OT0VYQ0VQVF8oKGlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxmaXJzdF90eXBlLCBfVTEgY29uc3QmPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPHNlY29uZF90eXBlLCBfVTIgY29uc3QmPjo6dmFsdWUpKQogICAgICAgICA6IGZpcnN0KF9fcC5maXJzdCksIHNlY29uZChfX3Auc2Vjb25kKSB7fQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgX1UxLCBjbGFzcyBfVTIsIF9FbmFibGVCPApAQCAtNDU4LDYgKzQ3Miw4IEBACiAgICAgPiA9IGZhbHNlPgogICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgX0xJQkNQUF9DT05TVEVYUFJfQUZURVJfQ1hYMTEKICAgICBleHBsaWNpdCBwYWlyKHBhaXI8X1UxLCBfVTI+JiZfX3ApCisgICAgICAgIF9OT0VYQ0VQVF8oKGlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxmaXJzdF90eXBlLCBfVTEmJj46OnZhbHVlICYmCisgICAgICAgICAgICAgICAgICAgIGlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxzZWNvbmRfdHlwZSwgX1UyJiY+Ojp2YWx1ZSkpCiAgICAgICAgIDogZmlyc3QoX1ZTVEQ6OmZvcndhcmQ8X1UxPihfX3AuZmlyc3QpKSwgc2Vjb25kKF9WU1REOjpmb3J3YXJkPF9VMj4oX19wLnNlY29uZCkpIHt9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBfVTEsIGNsYXNzIF9VMiwgX0VuYWJsZUI8CkBAIC00NjUsNiArNDgxLDggQEAKICAgICA+ID0gZmFsc2U+CiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWSBfTElCQ1BQX0NPTlNURVhQUl9BRlRFUl9DWFgxMQogICAgIHBhaXIocGFpcjxfVTEsIF9VMj4mJiBfX3ApCisgICAgICAgIF9OT0VYQ0VQVF8oKGlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxmaXJzdF90eXBlLCBfVTEmJj46OnZhbHVlICYmCisgICAgICAgICAgICAgICAgICAgIGlzX25vdGhyb3dfY29uc3RydWN0aWJsZTxzZWNvbmRfdHlwZSwgX1UyJiY+Ojp2YWx1ZSkpCiAgICAgICAgIDogZmlyc3QoX1ZTVEQ6OmZvcndhcmQ8X1UxPihfX3AuZmlyc3QpKSwgc2Vjb25kKF9WU1REOjpmb3J3YXJkPF9VMj4oX19wLnNlY29uZCkpIHt9CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBfVHVwbGUsIF9FbmFibGVCPApAQCAtNDg3LDYgKzUwNSw4IEBACiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIHBhaXIocGllY2V3aXNlX2NvbnN0cnVjdF90IF9fcGMsCiAgICAgICAgICB0dXBsZTxfQXJnczEuLi4+IF9fZmlyc3RfYXJncywgdHVwbGU8X0FyZ3MyLi4uPiBfX3NlY29uZF9hcmdzKQorICAgICAgICBfTk9FWENFUFRfKChpc19ub3Rocm93X2NvbnN0cnVjdGlibGU8Zmlyc3RfdHlwZSwgX0FyZ3MxLi4uPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgaXNfbm90aHJvd19jb25zdHJ1Y3RpYmxlPHNlY29uZF90eXBlLCBfQXJnczIuLi4+Ojp2YWx1ZSkpCiAgICAgICAgIDogcGFpcihfX3BjLCBfX2ZpcnN0X2FyZ3MsIF9fc2Vjb25kX2FyZ3MsCiAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX19tYWtlX3R1cGxlX2luZGljZXM8c2l6ZW9mLi4uKF9BcmdzMSk+Ojp0eXBlKCksCiAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX19tYWtlX3R1cGxlX2luZGljZXM8c2l6ZW9mLi4uKF9BcmdzMikgPjo6dHlwZSgpKSB7fQpAQCAtNjE2LDMyICs2MzYsMzcgQEAKICAgICBfX3guc3dhcChfX3kpOwogfQogCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorc3RydWN0IF9fdW53cmFwX3JlZmVyZW5jZSB7IHR5cGVkZWYgX1RwIHR5cGU7IH07CisKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgX191bndyYXBfcmVmZXJlbmNlPHJlZmVyZW5jZV93cmFwcGVyPF9UcD4gPiB7IHR5cGVkZWYgX1RwJiB0eXBlOyB9OworCisjaWYgX0xJQkNQUF9TVERfVkVSID4gMTcKK3RlbXBsYXRlIDxjbGFzcyBfVHA+CitzdHJ1Y3QgdW53cmFwX3JlZmVyZW5jZSA6IF9fdW53cmFwX3JlZmVyZW5jZTxfVHA+IHsgfTsKKwordGVtcGxhdGUgPGNsYXNzIF9UcD4KK3N0cnVjdCB1bndyYXBfcmVmX2RlY2F5IDogdW53cmFwX3JlZmVyZW5jZTx0eXBlbmFtZSBkZWNheTxfVHA+Ojp0eXBlPiB7IH07CisjZW5kaWYgLy8gPiBDKysxNworCit0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgorc3RydWN0IF9fdW53cmFwX3JlZl9kZWNheQorI2lmIF9MSUJDUFBfU1REX1ZFUiA+IDE3CisgICAgOiB1bndyYXBfcmVmX2RlY2F5PF9UcD4KKyNlbHNlCisgICAgOiBfX3Vud3JhcF9yZWZlcmVuY2U8dHlwZW5hbWUgZGVjYXk8X1RwPjo6dHlwZT4KKyNlbmRpZgoreyB9OworCiAjaWZuZGVmIF9MSUJDUFBfQ1hYMDNfTEFORwogCi10ZW1wbGF0ZSA8Y2xhc3MgX1RwPgotc3RydWN0IF9fbWFrZV9wYWlyX3JldHVybl9pbXBsCi17Ci0gICAgdHlwZWRlZiBfVHAgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHA+Ci1zdHJ1Y3QgX19tYWtlX3BhaXJfcmV0dXJuX2ltcGw8cmVmZXJlbmNlX3dyYXBwZXI8X1RwPj4KLXsKLSAgICB0eXBlZGVmIF9UcCYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBfVHA+Ci1zdHJ1Y3QgX19tYWtlX3BhaXJfcmV0dXJuCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBfX21ha2VfcGFpcl9yZXR1cm5faW1wbDx0eXBlbmFtZSBkZWNheTxfVHA+Ojp0eXBlPjo6dHlwZSB0eXBlOwotfTsKLQogdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgogaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgX0xJQkNQUF9DT05TVEVYUFJfQUZURVJfQ1hYMTEKLXBhaXI8dHlwZW5hbWUgX19tYWtlX3BhaXJfcmV0dXJuPF9UMT46OnR5cGUsIHR5cGVuYW1lIF9fbWFrZV9wYWlyX3JldHVybjxfVDI+Ojp0eXBlPgorcGFpcjx0eXBlbmFtZSBfX3Vud3JhcF9yZWZfZGVjYXk8X1QxPjo6dHlwZSwgdHlwZW5hbWUgX191bndyYXBfcmVmX2RlY2F5PF9UMj46OnR5cGU+CiBtYWtlX3BhaXIoX1QxJiYgX190MSwgX1QyJiYgX190MikKIHsKLSAgICByZXR1cm4gcGFpcjx0eXBlbmFtZSBfX21ha2VfcGFpcl9yZXR1cm48X1QxPjo6dHlwZSwgdHlwZW5hbWUgX19tYWtlX3BhaXJfcmV0dXJuPF9UMj46OnR5cGU+CisgICAgcmV0dXJuIHBhaXI8dHlwZW5hbWUgX191bndyYXBfcmVmX2RlY2F5PF9UMT46OnR5cGUsIHR5cGVuYW1lIF9fdW53cmFwX3JlZl9kZWNheTxfVDI+Ojp0eXBlPgogICAgICAgICAgICAgICAgKF9WU1REOjpmb3J3YXJkPF9UMT4oX190MSksIF9WU1REOjpmb3J3YXJkPF9UMj4oX190MikpOwogfQogCkBAIC02NTgsNyArNjgzLDcgQEAKICNlbmRpZiAgLy8gX0xJQkNQUF9DWFgwM19MQU5HCiAKIHRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KLSAgY2xhc3MgX0xJQkNQUF9URU1QTEFURV9WSVMgdHVwbGVfc2l6ZTxwYWlyPF9UMSwgX1QyPiA+CisgIHN0cnVjdCBfTElCQ1BQX1RFTVBMQVRFX1ZJUyB0dXBsZV9zaXplPHBhaXI8X1QxLCBfVDI+ID4KICAgICA6IHB1YmxpYyBpbnRlZ3JhbF9jb25zdGFudDxzaXplX3QsIDI+IHt9OwogCiB0ZW1wbGF0ZSA8c2l6ZV90IF9JcCwgY2xhc3MgX1QxLCBjbGFzcyBfVDI+CkBAIC05ODksOCArMTAxNCwxMCBAQAogICAgIHsKICAgICBjYXNlIDM6CiAgICAgICAgIF9faCBePSBfX2RhdGFbMl0gPDwgMTY7CisgICAgICAgIF9MSUJDUFBfRkFMTFRIUk9VR0goKTsKICAgICBjYXNlIDI6CiAgICAgICAgIF9faCBePSBfX2RhdGFbMV0gPDwgODsKKyAgICAgICAgX0xJQkNQUF9GQUxMVEhST1VHSCgpOwogICAgIGNhc2UgMToKICAgICAgICAgX19oIF49IF9fZGF0YVswXTsKICAgICAgICAgX19oICo9IF9fbTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS92YWxhcnJheSBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS92YWxhcnJheQppbmRleCA4ZDM4OTJhLi5jOWNhMDhjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvdmFsYXJyYXkKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3ZhbGFycmF5CkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHZhbGFycmF5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC04MDMsNyArODAyLDcgQEAKICAgICAvLyBjb25zdHJ1Y3QvZGVzdHJveToKICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCiAgICAgdmFsYXJyYXkoKSA6IF9fYmVnaW5fKDApLCBfX2VuZF8oMCkge30KLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgZXhwbGljaXQgdmFsYXJyYXkoc2l6ZV90IF9fbik7CiAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQogICAgIHZhbGFycmF5KGNvbnN0IHZhbHVlX3R5cGUmIF9feCwgc2l6ZV90IF9fbik7CkBAIC04MTgsNyArODE3LDcgQEAKICAgICB2YWxhcnJheShjb25zdCBnc2xpY2VfYXJyYXk8dmFsdWVfdHlwZT4mIF9fZ2EpOwogICAgIHZhbGFycmF5KGNvbnN0IG1hc2tfYXJyYXk8dmFsdWVfdHlwZT4mIF9fbWEpOwogICAgIHZhbGFycmF5KGNvbnN0IGluZGlyZWN0X2FycmF5PHZhbHVlX3R5cGU+JiBfX2lhKTsKLSAgICBpbmxpbmUgX0xJQkNQUF9FWFRFUk5fVEVNUExBVEVfSU5MSU5FX1ZJU0lCSUxJVFkKKyAgICBpbmxpbmUgX0xJQkNQUF9ISURFX0ZST01fQUJJX0FGVEVSX1YxCiAgICAgfnZhbGFycmF5KCk7CiAKICAgICAvLyBhc3NpZ25tZW50OgpAQCAtMTA1NCw3ICsxMDUzLDggQEAKICAgICBjb25zdCBfVXAqCiAgICAgZW5kKGNvbnN0IHZhbGFycmF5PF9VcD4mIF9fdik7CiAKLSAgICB2b2lkIF9fY2xlYXIoKTsKKyAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCisgICAgdm9pZCBfX2NsZWFyKHNpemVfdCBfX2NhcGFjaXR5KTsKICAgICB2YWxhcnJheSYgX19hc3NpZ25fcmFuZ2UoY29uc3QgdmFsdWVfdHlwZSogX19mLCBjb25zdCB2YWx1ZV90eXBlKiBfX2wpOwogfTsKIApAQCAtMjczOSw3ICsyNzM5LDcgQEAKICAgICAgICAgX19yLl9fYmVnaW5fID0KICAgICAgICAgICAgIF9fci5fX2VuZF8gPQogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHJlc3VsdF90eXBlKj4oCi0gICAgICAgICAgICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX24gKiBzaXplb2YocmVzdWx0X3R5cGUpLCBfX2FsaWdub2YocmVzdWx0X3R5cGUpKSk7CisgICAgICAgICAgICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX24gKiBzaXplb2YocmVzdWx0X3R5cGUpLCBfTElCQ1BQX0FMSUdOT0YocmVzdWx0X3R5cGUpKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSAhPSBfX247ICsrX19yLl9fZW5kXywgKytfX2kpCiAgICAgICAgICAgICA6Om5ldyAoX19yLl9fZW5kXykgcmVzdWx0X3R5cGUoX19leHByX1tfX2ldKTsKICAgICB9CkBAIC0yNzU3LDE4ICsyNzU3LDE4IEBACiAgICAgaWYgKF9fbikKICAgICB7CiAgICAgICAgIF9fYmVnaW5fID0gX19lbmRfID0gc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZSo+KAotICAgICAgICAgICAgX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZih2YWx1ZV90eXBlKSwgX19hbGlnbm9mKHZhbHVlX3R5cGUpKSk7CisgICAgICAgICAgICBfVlNURDo6X19saWJjcHBfYWxsb2NhdGUoX19uICogc2l6ZW9mKHZhbHVlX3R5cGUpLCBfTElCQ1BQX0FMSUdOT0YodmFsdWVfdHlwZSkpKTsKICNpZm5kZWYgX0xJQkNQUF9OT19FWENFUFRJT05TCiAgICAgICAgIHRyeQogICAgICAgICB7CiAjZW5kaWYgIC8vIF9MSUJDUFBfTk9fRVhDRVBUSU9OUwotICAgICAgICAgICAgZm9yICg7IF9fbjsgLS1fX24sICsrX19lbmRfKQorICAgICAgICAgICAgZm9yIChzaXplX3QgX19uX2xlZnQgPSBfX247IF9fbl9sZWZ0OyAtLV9fbl9sZWZ0LCArK19fZW5kXykKICAgICAgICAgICAgICAgICA6Om5ldyAoX19lbmRfKSB2YWx1ZV90eXBlKCk7CiAjaWZuZGVmIF9MSUJDUFBfTk9fRVhDRVBUSU9OUwogICAgICAgICB9CiAgICAgICAgIGNhdGNoICguLi4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIF9fY2xlYXIoKTsKKyAgICAgICAgICAgIF9fY2xlYXIoX19uKTsKICAgICAgICAgICAgIHRocm93OwogICAgICAgICB9CiAjZW5kaWYgIC8vIF9MSUJDUFBfTk9fRVhDRVBUSU9OUwpAQCAtMjc5MiwxOCArMjc5MiwxOCBAQAogICAgIGlmIChfX24pCiAgICAgewogICAgICAgICBfX2JlZ2luXyA9IF9fZW5kXyA9IHN0YXRpY19jYXN0PHZhbHVlX3R5cGUqPigKLSAgICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX24gKiBzaXplb2YodmFsdWVfdHlwZSksIF9fYWxpZ25vZih2YWx1ZV90eXBlKSkpOworICAgICAgICAgICAgX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZih2YWx1ZV90eXBlKSwgX0xJQkNQUF9BTElHTk9GKHZhbHVlX3R5cGUpKSk7CiAjaWZuZGVmIF9MSUJDUFBfTk9fRVhDRVBUSU9OUwogICAgICAgICB0cnkKICAgICAgICAgewogI2VuZGlmICAvLyBfTElCQ1BQX05PX0VYQ0VQVElPTlMKLSAgICAgICAgICAgIGZvciAoOyBfX247ICsrX19lbmRfLCArK19fcCwgLS1fX24pCisgICAgICAgICAgICBmb3IgKHNpemVfdCBfX25fbGVmdCA9IF9fbjsgX19uX2xlZnQ7ICsrX19lbmRfLCArK19fcCwgLS1fX25fbGVmdCkKICAgICAgICAgICAgICAgICA6Om5ldyAoX19lbmRfKSB2YWx1ZV90eXBlKCpfX3ApOwogI2lmbmRlZiBfTElCQ1BQX05PX0VYQ0VQVElPTlMKICAgICAgICAgfQogICAgICAgICBjYXRjaCAoLi4uKQogICAgICAgICB7Ci0gICAgICAgICAgICBfX2NsZWFyKCk7CisgICAgICAgICAgICBfX2NsZWFyKF9fbik7CiAgICAgICAgICAgICB0aHJvdzsKICAgICAgICAgfQogI2VuZGlmICAvLyBfTElCQ1BQX05PX0VYQ0VQVElPTlMKQEAgLTI4MTgsNyArMjgxOCw3IEBACiAgICAgaWYgKF9fdi5zaXplKCkpCiAgICAgewogICAgICAgICBfX2JlZ2luXyA9IF9fZW5kXyA9IHN0YXRpY19jYXN0PHZhbHVlX3R5cGUqPigKLSAgICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX3Yuc2l6ZSgpICogc2l6ZW9mKHZhbHVlX3R5cGUpLCBfX2FsaWdub2YodmFsdWVfdHlwZSkpKTsKKyAgICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX3Yuc2l6ZSgpICogc2l6ZW9mKHZhbHVlX3R5cGUpLCBfTElCQ1BQX0FMSUdOT0YodmFsdWVfdHlwZSkpKTsKICNpZm5kZWYgX0xJQkNQUF9OT19FWENFUFRJT05TCiAgICAgICAgIHRyeQogICAgICAgICB7CkBAIC0yODI5LDcgKzI4MjksNyBAQAogICAgICAgICB9CiAgICAgICAgIGNhdGNoICguLi4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIF9fY2xlYXIoKTsKKyAgICAgICAgICAgIF9fY2xlYXIoX192LnNpemUoKSk7CiAgICAgICAgICAgICB0aHJvdzsKICAgICAgICAgfQogI2VuZGlmICAvLyBfTElCQ1BQX05PX0VYQ0VQVElPTlMKQEAgLTI4NTIsMjIgKzI4NTIsMjMgQEAKICAgICA6IF9fYmVnaW5fKDApLAogICAgICAgX19lbmRfKDApCiB7Ci0gICAgc2l6ZV90IF9fbiA9IF9faWwuc2l6ZSgpOworICAgIGNvbnN0IHNpemVfdCBfX24gPSBfX2lsLnNpemUoKTsKICAgICBpZiAoX19uKQogICAgIHsKICAgICAgICAgX19iZWdpbl8gPSBfX2VuZF8gPSBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlKj4oCi1fVlNURDo6X19saWJjcHBfYWxsb2NhdGUoX19uICogc2l6ZW9mKHZhbHVlX3R5cGUpLCBfX2FsaWdub2YodmFsdWVfdHlwZSkpKTsKK19WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX24gKiBzaXplb2YodmFsdWVfdHlwZSksIF9MSUJDUFBfQUxJR05PRih2YWx1ZV90eXBlKSkpOwogI2lmbmRlZiBfTElCQ1BQX05PX0VYQ0VQVElPTlMKICAgICAgICAgdHJ5CiAgICAgICAgIHsKICNlbmRpZiAgLy8gX0xJQkNQUF9OT19FWENFUFRJT05TCi0gICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlX3R5cGUqIF9fcCA9IF9faWwuYmVnaW4oKTsgX19uOyArK19fZW5kXywgKytfX3AsIC0tX19uKQorICAgICAgICAgICAgc2l6ZV90IF9fbl9sZWZ0ID0gX19uOworICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZV90eXBlKiBfX3AgPSBfX2lsLmJlZ2luKCk7IF9fbl9sZWZ0OyArK19fZW5kXywgKytfX3AsIC0tX19uX2xlZnQpCiAgICAgICAgICAgICAgICAgOjpuZXcgKF9fZW5kXykgdmFsdWVfdHlwZSgqX19wKTsKICNpZm5kZWYgX0xJQkNQUF9OT19FWENFUFRJT05TCiAgICAgICAgIH0KICAgICAgICAgY2F0Y2ggKC4uLikKICAgICAgICAgewotICAgICAgICAgICAgX19jbGVhcigpOworICAgICAgICAgICAgX19jbGVhcihfX24pOwogICAgICAgICAgICAgdGhyb3c7CiAgICAgICAgIH0KICNlbmRpZiAgLy8gX0xJQkNQUF9OT19FWENFUFRJT05TCkBAIC0yODgxLDIyICsyODgyLDIzIEBACiAgICAgOiBfX2JlZ2luXygwKSwKICAgICAgIF9fZW5kXygwKQogewotICAgIHNpemVfdCBfX24gPSBfX3NhLl9fc2l6ZV87CisgICAgY29uc3Qgc2l6ZV90IF9fbiA9IF9fc2EuX19zaXplXzsKICAgICBpZiAoX19uKQogICAgIHsKICAgICAgICAgX19iZWdpbl8gPSBfX2VuZF8gPSBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlKj4oCi0gICAgICAgICAgX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZih2YWx1ZV90eXBlKSwgX19hbGlnbm9mKHZhbHVlX3R5cGUpKSk7CisgICAgICAgICAgX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZih2YWx1ZV90eXBlKSwgX0xJQkNQUF9BTElHTk9GKHZhbHVlX3R5cGUpKSk7CiAjaWZuZGVmIF9MSUJDUFBfTk9fRVhDRVBUSU9OUwogICAgICAgICB0cnkKICAgICAgICAgewogI2VuZGlmICAvLyBfTElCQ1BQX05PX0VYQ0VQVElPTlMKLSAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWVfdHlwZSogX19wID0gX19zYS5fX3ZwXzsgX19uOyArK19fZW5kXywgX19wICs9IF9fc2EuX19zdHJpZGVfLCAtLV9fbikKKyAgICAgICAgICAgIHNpemVfdCBfX25fbGVmdCA9IF9fbjsKKyAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWVfdHlwZSogX19wID0gX19zYS5fX3ZwXzsgX19uX2xlZnQ7ICsrX19lbmRfLCBfX3AgKz0gX19zYS5fX3N0cmlkZV8sIC0tX19uX2xlZnQpCiAgICAgICAgICAgICAgICAgOjpuZXcgKF9fZW5kXykgdmFsdWVfdHlwZSgqX19wKTsKICNpZm5kZWYgX0xJQkNQUF9OT19FWENFUFRJT05TCiAgICAgICAgIH0KICAgICAgICAgY2F0Y2ggKC4uLikKICAgICAgICAgewotICAgICAgICAgICAgX19jbGVhcigpOworICAgICAgICAgICAgX19jbGVhcihfX24pOwogICAgICAgICAgICAgdGhyb3c7CiAgICAgICAgIH0KICNlbmRpZiAgLy8gX0xJQkNQUF9OT19FWENFUFRJT05TCkBAIC0yOTA4LDExICsyOTEwLDExIEBACiAgICAgOiBfX2JlZ2luXygwKSwKICAgICAgIF9fZW5kXygwKQogewotICAgIHNpemVfdCBfX24gPSBfX2dhLl9fMWRfLnNpemUoKTsKKyAgICBjb25zdCBzaXplX3QgX19uID0gX19nYS5fXzFkXy5zaXplKCk7CiAgICAgaWYgKF9fbikKICAgICB7CiAgICAgICAgIF9fYmVnaW5fID0gX19lbmRfID0gc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZSo+KAotICAgICAgICAgICBfVlNURDo6X19saWJjcHBfYWxsb2NhdGUoX19uICogc2l6ZW9mKHZhbHVlX3R5cGUpLCBfX2FsaWdub2YodmFsdWVfdHlwZSkpKTsKKyAgICAgICAgICAgX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZih2YWx1ZV90eXBlKSwgX0xJQkNQUF9BTElHTk9GKHZhbHVlX3R5cGUpKSk7CiAjaWZuZGVmIF9MSUJDUFBfTk9fRVhDRVBUSU9OUwogICAgICAgICB0cnkKICAgICAgICAgewpAQCAtMjkyNiw3ICsyOTI4LDcgQEAKICAgICAgICAgfQogICAgICAgICBjYXRjaCAoLi4uKQogICAgICAgICB7Ci0gICAgICAgICAgICBfX2NsZWFyKCk7CisgICAgICAgICAgICBfX2NsZWFyKF9fbik7CiAgICAgICAgICAgICB0aHJvdzsKICAgICAgICAgfQogI2VuZGlmICAvLyBfTElCQ1BQX05PX0VYQ0VQVElPTlMKQEAgLTI5MzgsMTEgKzI5NDAsMTEgQEAKICAgICA6IF9fYmVnaW5fKDApLAogICAgICAgX19lbmRfKDApCiB7Ci0gICAgc2l6ZV90IF9fbiA9IF9fbWEuX18xZF8uc2l6ZSgpOworICAgIGNvbnN0IHNpemVfdCBfX24gPSBfX21hLl9fMWRfLnNpemUoKTsKICAgICBpZiAoX19uKQogICAgIHsKICAgICAgICAgX19iZWdpbl8gPSBfX2VuZF8gPSBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlKj4oCi0gICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX24gKiBzaXplb2YodmFsdWVfdHlwZSksIF9fYWxpZ25vZih2YWx1ZV90eXBlKSkpOworICAgICAgICAgICBfVlNURDo6X19saWJjcHBfYWxsb2NhdGUoX19uICogc2l6ZW9mKHZhbHVlX3R5cGUpLCBfTElCQ1BQX0FMSUdOT0YodmFsdWVfdHlwZSkpKTsKICNpZm5kZWYgX0xJQkNQUF9OT19FWENFUFRJT05TCiAgICAgICAgIHRyeQogICAgICAgICB7CkBAIC0yOTU2LDcgKzI5NTgsNyBAQAogICAgICAgICB9CiAgICAgICAgIGNhdGNoICguLi4pCiAgICAgICAgIHsKLSAgICAgICAgICAgIF9fY2xlYXIoKTsKKyAgICAgICAgICAgIF9fY2xlYXIoX19uKTsKICAgICAgICAgICAgIHRocm93OwogICAgICAgICB9CiAjZW5kaWYgIC8vIF9MSUJDUFBfTk9fRVhDRVBUSU9OUwpAQCAtMjk2OCwxMSArMjk3MCwxMSBAQAogICAgIDogX19iZWdpbl8oMCksCiAgICAgICBfX2VuZF8oMCkKIHsKLSAgICBzaXplX3QgX19uID0gX19pYS5fXzFkXy5zaXplKCk7CisgICAgY29uc3Qgc2l6ZV90IF9fbiA9IF9faWEuX18xZF8uc2l6ZSgpOwogICAgIGlmIChfX24pCiAgICAgewogICAgICAgICBfX2JlZ2luXyA9IF9fZW5kXyA9IHN0YXRpY19jYXN0PHZhbHVlX3R5cGUqPigKLSAgICAgICAgICAgX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZih2YWx1ZV90eXBlKSwgX19hbGlnbm9mKHZhbHVlX3R5cGUpKSk7CisgICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX24gKiBzaXplb2YodmFsdWVfdHlwZSksIF9MSUJDUFBfQUxJR05PRih2YWx1ZV90eXBlKSkpOwogI2lmbmRlZiBfTElCQ1BQX05PX0VYQ0VQVElPTlMKICAgICAgICAgdHJ5CiAgICAgICAgIHsKQEAgLTI5ODYsNyArMjk4OCw3IEBACiAgICAgICAgIH0KICAgICAgICAgY2F0Y2ggKC4uLikKICAgICAgICAgewotICAgICAgICAgICAgX19jbGVhcigpOworICAgICAgICAgICAgX19jbGVhcihfX24pOwogICAgICAgICAgICAgdGhyb3c7CiAgICAgICAgIH0KICNlbmRpZiAgLy8gX0xJQkNQUF9OT19FWENFUFRJT05TCkBAIC0yOTk3LDcgKzI5OTksNyBAQAogaW5saW5lCiB2YWxhcnJheTxfVHA+Ojp+dmFsYXJyYXkoKQogewotICAgIF9fY2xlYXIoKTsKKyAgICBfX2NsZWFyKHNpemUoKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBfVHA+CkBAIC0zMDA3LDkgKzMwMDksOSBAQAogICAgIHNpemVfdCBfX24gPSBfX2wgLSBfX2Y7CiAgICAgaWYgKHNpemUoKSAhPSBfX24pCiAgICAgewotICAgICAgICBfX2NsZWFyKCk7CisgICAgICAgIF9fY2xlYXIoc2l6ZSgpKTsKICAgICAgICAgX19iZWdpbl8gPSBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlKj4oCi0gICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX24gKiBzaXplb2YodmFsdWVfdHlwZSksIF9fYWxpZ25vZih2YWx1ZV90eXBlKSkpOworICAgICAgICAgICBfVlNURDo6X19saWJjcHBfYWxsb2NhdGUoX19uICogc2l6ZW9mKHZhbHVlX3R5cGUpLCBfTElCQ1BQX0FMSUdOT0YodmFsdWVfdHlwZSkpKTsKICAgICAgICAgX19lbmRfID0gX19iZWdpbl8gKyBfX247CiAgICAgICAgIF9WU1REOjp1bmluaXRpYWxpemVkX2NvcHkoX19mLCBfX2wsIF9fYmVnaW5fKTsKICAgICB9IGVsc2UgewpAQCAtMzAzNCw3ICszMDM2LDcgQEAKIHZhbGFycmF5PF9UcD4mCiB2YWxhcnJheTxfVHA+OjpvcGVyYXRvcj0odmFsYXJyYXkmJiBfX3YpIF9OT0VYQ0VQVAogewotICAgIF9fY2xlYXIoKTsKKyAgICBfX2NsZWFyKHNpemUoKSk7CiAgICAgX19iZWdpbl8gPSBfX3YuX19iZWdpbl87CiAgICAgX19lbmRfID0gX192Ll9fZW5kXzsKICAgICBfX3YuX19iZWdpbl8gPSBudWxscHRyOwpAQCAtMzI2NSw3ICszMjY3LDcgQEAKICAgICAgICAgX19yLl9fYmVnaW5fID0KICAgICAgICAgICAgIF9fci5fX2VuZF8gPQogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHZhbHVlX3R5cGUqPigKLSAgICAgICAgICAgX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZih2YWx1ZV90eXBlKSwgX19hbGlnbm9mKHZhbHVlX3R5cGUpKSk7CisgICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX24gKiBzaXplb2YodmFsdWVfdHlwZSksIF9MSUJDUFBfQUxJR05PRih2YWx1ZV90eXBlKSkpOwogICAgICAgICBmb3IgKGNvbnN0IHZhbHVlX3R5cGUqIF9fcCA9IF9fYmVnaW5fOyBfX247ICsrX19yLl9fZW5kXywgKytfX3AsIC0tX19uKQogICAgICAgICAgICAgOjpuZXcgKF9fci5fX2VuZF8pIHZhbHVlX3R5cGUoKypfX3ApOwogICAgIH0KQEAgLTMyODMsNyArMzI4NSw3IEBACiAgICAgICAgIF9fci5fX2JlZ2luXyA9CiAgICAgICAgICAgICBfX3IuX19lbmRfID0KICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlKj4oCi0gICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX24gKiBzaXplb2YodmFsdWVfdHlwZSksIF9fYWxpZ25vZih2YWx1ZV90eXBlKSkpOworICAgICAgICAgICBfVlNURDo6X19saWJjcHBfYWxsb2NhdGUoX19uICogc2l6ZW9mKHZhbHVlX3R5cGUpLCBfTElCQ1BQX0FMSUdOT0YodmFsdWVfdHlwZSkpKTsKICAgICAgICAgZm9yIChjb25zdCB2YWx1ZV90eXBlKiBfX3AgPSBfX2JlZ2luXzsgX19uOyArK19fci5fX2VuZF8sICsrX19wLCAtLV9fbikKICAgICAgICAgICAgIDo6bmV3IChfX3IuX19lbmRfKSB2YWx1ZV90eXBlKC0qX19wKTsKICAgICB9CkBAIC0zMzAxLDcgKzMzMDMsNyBAQAogICAgICAgICBfX3IuX19iZWdpbl8gPQogICAgICAgICAgICAgX19yLl9fZW5kXyA9CiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZSo+KAotICAgICAgICAgICBfVlNURDo6X19saWJjcHBfYWxsb2NhdGUoX19uICogc2l6ZW9mKHZhbHVlX3R5cGUpLCBfX2FsaWdub2YodmFsdWVfdHlwZSkpKTsKKyAgICAgICAgICAgX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZih2YWx1ZV90eXBlKSwgX0xJQkNQUF9BTElHTk9GKHZhbHVlX3R5cGUpKSk7CiAgICAgICAgIGZvciAoY29uc3QgdmFsdWVfdHlwZSogX19wID0gX19iZWdpbl87IF9fbjsgKytfX3IuX19lbmRfLCArK19fcCwgLS1fX24pCiAgICAgICAgICAgICA6Om5ldyAoX19yLl9fZW5kXykgdmFsdWVfdHlwZSh+Kl9fcCk7CiAgICAgfQpAQCAtMzMxOCw3ICszMzIwLDcgQEAKICAgICB7CiAgICAgICAgIF9fci5fX2JlZ2luXyA9CiAgICAgICAgICAgICBfX3IuX19lbmRfID0KLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxib29sKj4oX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZihib29sKSwgX19hbGlnbm9mKGJvb2wpKSk7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Ym9vbCo+KF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX24gKiBzaXplb2YoYm9vbCksIF9MSUJDUFBfQUxJR05PRihib29sKSkpOwogICAgICAgICBmb3IgKGNvbnN0IHZhbHVlX3R5cGUqIF9fcCA9IF9fYmVnaW5fOyBfX247ICsrX19yLl9fZW5kXywgKytfX3AsIC0tX19uKQogICAgICAgICAgICAgOjpuZXcgKF9fci5fX2VuZF8pIGJvb2woISpfX3ApOwogICAgIH0KQEAgLTM2MzksNyArMzY0MSw3IEBACiAgICAgICAgIF9fci5fX2JlZ2luXyA9CiAgICAgICAgICAgICBfX3IuX19lbmRfID0KICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlKj4oCi0gICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX24gKiBzaXplb2YodmFsdWVfdHlwZSksIF9fYWxpZ25vZih2YWx1ZV90eXBlKSkpOworICAgICAgICAgICBfVlNURDo6X19saWJjcHBfYWxsb2NhdGUoX19uICogc2l6ZW9mKHZhbHVlX3R5cGUpLCBfTElCQ1BQX0FMSUdOT0YodmFsdWVfdHlwZSkpKTsKICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSogX19zYjsKICAgICAgICAgdmFsdWVfdHlwZSogX190YjsKICAgICAgICAgdmFsdWVfdHlwZSogX190ZTsKQEAgLTM2NzgsNyArMzY4MCw3IEBACiAgICAgICAgIF9fci5fX2JlZ2luXyA9CiAgICAgICAgICAgICBfX3IuX19lbmRfID0KICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlKj4oCi0gICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX24gKiBzaXplb2YodmFsdWVfdHlwZSksIF9fYWxpZ25vZih2YWx1ZV90eXBlKSkpOworICAgICAgICAgICBfVlNURDo6X19saWJjcHBfYWxsb2NhdGUoX19uICogc2l6ZW9mKHZhbHVlX3R5cGUpLCBfTElCQ1BQX0FMSUdOT0YodmFsdWVfdHlwZSkpKTsKICAgICAgICAgX19pICU9IHN0YXRpY19jYXN0PGludD4oX19uKTsKICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSogX19tID0gX19pID49IDAgPyBfX2JlZ2luXyArIF9faSA6IF9fZW5kXyArIF9faTsKICAgICAgICAgZm9yIChjb25zdCB2YWx1ZV90eXBlKiBfX3MgPSBfX207IF9fcyAhPSBfX2VuZF87ICsrX19yLl9fZW5kXywgKytfX3MpCkBAIC0zNzAwLDcgKzM3MDIsNyBAQAogICAgICAgICBfX3IuX19iZWdpbl8gPQogICAgICAgICAgICAgX19yLl9fZW5kXyA9CiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZSo+KAotICAgICAgICAgICBfVlNURDo6X19saWJjcHBfYWxsb2NhdGUoX19uICogc2l6ZW9mKHZhbHVlX3R5cGUpLCBfX2FsaWdub2YodmFsdWVfdHlwZSkpKTsKKyAgICAgICAgICAgX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZih2YWx1ZV90eXBlKSwgX0xJQkNQUF9BTElHTk9GKHZhbHVlX3R5cGUpKSk7CiAgICAgICAgIGZvciAoY29uc3QgdmFsdWVfdHlwZSogX19wID0gX19iZWdpbl87IF9fbjsgKytfX3IuX19lbmRfLCArK19fcCwgLS1fX24pCiAgICAgICAgICAgICA6Om5ldyAoX19yLl9fZW5kXykgdmFsdWVfdHlwZShfX2YoKl9fcCkpOwogICAgIH0KQEAgLTM3MTgsNyArMzcyMCw3IEBACiAgICAgICAgIF9fci5fX2JlZ2luXyA9CiAgICAgICAgICAgICBfX3IuX19lbmRfID0KICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2YWx1ZV90eXBlKj4oCi0gICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX24gKiBzaXplb2YodmFsdWVfdHlwZSksIF9fYWxpZ25vZih2YWx1ZV90eXBlKSkpOworICAgICAgICAgICBfVlNURDo6X19saWJjcHBfYWxsb2NhdGUoX19uICogc2l6ZW9mKHZhbHVlX3R5cGUpLCBfTElCQ1BQX0FMSUdOT0YodmFsdWVfdHlwZSkpKTsKICAgICAgICAgZm9yIChjb25zdCB2YWx1ZV90eXBlKiBfX3AgPSBfX2JlZ2luXzsgX19uOyArK19fci5fX2VuZF8sICsrX19wLCAtLV9fbikKICAgICAgICAgICAgIDo6bmV3IChfX3IuX19lbmRfKSB2YWx1ZV90eXBlKF9fZigqX19wKSk7CiAgICAgfQpAQCAtMzcyNiwzOCArMzcyOCwzOCBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgotdm9pZAotdmFsYXJyYXk8X1RwPjo6X19jbGVhcigpCitpbmxpbmUKK3ZvaWQgdmFsYXJyYXk8X1RwPjo6X19jbGVhcihzaXplX3QgX19jYXBhY2l0eSkKIHsKLSAgICBpZiAoX19iZWdpbl8gIT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIHdoaWxlIChfX2VuZF8gIT0gX19iZWdpbl8pCi0gICAgICAgICAgICAoLS1fX2VuZF8pLT5+dmFsdWVfdHlwZSgpOwotICAgICAgICBfVlNURDo6X19saWJjcHBfZGVhbGxvY2F0ZShfX2JlZ2luXywgX19hbGlnbm9mKHZhbHVlX3R5cGUpKTsKLSAgICAgICAgX19iZWdpbl8gPSBfX2VuZF8gPSBudWxscHRyOwotICAgIH0KKyAgaWYgKF9fYmVnaW5fICE9IG51bGxwdHIpCisgIHsKKyAgICB3aGlsZSAoX19lbmRfICE9IF9fYmVnaW5fKQorICAgICAgKC0tX19lbmRfKS0+fnZhbHVlX3R5cGUoKTsKKyAgICBfVlNURDo6X19saWJjcHBfZGVhbGxvY2F0ZShfX2JlZ2luXywgX19jYXBhY2l0eSAqIHNpemVvZih2YWx1ZV90eXBlKSwgX0xJQkNQUF9BTElHTk9GKHZhbHVlX3R5cGUpKTsKKyAgICBfX2JlZ2luXyA9IF9fZW5kXyA9IG51bGxwdHI7CisgIH0KIH0KIAogdGVtcGxhdGUgPGNsYXNzIF9UcD4KIHZvaWQKIHZhbGFycmF5PF9UcD46OnJlc2l6ZShzaXplX3QgX19uLCB2YWx1ZV90eXBlIF9feCkKIHsKLSAgICBfX2NsZWFyKCk7CisgICAgX19jbGVhcihzaXplKCkpOwogICAgIGlmIChfX24pCiAgICAgewogICAgICAgICBfX2JlZ2luXyA9IF9fZW5kXyA9IHN0YXRpY19jYXN0PHZhbHVlX3R5cGUqPigKLSAgICAgICAgICAgX1ZTVEQ6Ol9fbGliY3BwX2FsbG9jYXRlKF9fbiAqIHNpemVvZih2YWx1ZV90eXBlKSwgX19hbGlnbm9mKHZhbHVlX3R5cGUpKSk7CisgICAgICAgICAgIF9WU1REOjpfX2xpYmNwcF9hbGxvY2F0ZShfX24gKiBzaXplb2YodmFsdWVfdHlwZSksIF9MSUJDUFBfQUxJR05PRih2YWx1ZV90eXBlKSkpOwogI2lmbmRlZiBfTElCQ1BQX05PX0VYQ0VQVElPTlMKICAgICAgICAgdHJ5CiAgICAgICAgIHsKICNlbmRpZiAgLy8gX0xJQkNQUF9OT19FWENFUFRJT05TCi0gICAgICAgICAgICBmb3IgKDsgX19uOyAtLV9fbiwgKytfX2VuZF8pCisgICAgICAgICAgICBmb3IgKHNpemVfdCBfX25fbGVmdCA9IF9fbjsgX19uX2xlZnQ7IC0tX19uX2xlZnQsICsrX19lbmRfKQogICAgICAgICAgICAgICAgIDo6bmV3IChfX2VuZF8pIHZhbHVlX3R5cGUoX194KTsKICNpZm5kZWYgX0xJQkNQUF9OT19FWENFUFRJT05TCiAgICAgICAgIH0KICAgICAgICAgY2F0Y2ggKC4uLikKICAgICAgICAgewotICAgICAgICAgICAgX19jbGVhcigpOworICAgICAgICAgICAgX19jbGVhcihfX24pOwogICAgICAgICAgICAgdGhyb3c7CiAgICAgICAgIH0KICNlbmRpZiAgLy8gX0xJQkNQUF9OT19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvdmFyaWFudCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS92YXJpYW50CmluZGV4IGY5NTA1YmYuLjVkMDcyMmIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS92YXJpYW50CisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS92YXJpYW50CkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB2YXJpYW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0yMyw4ICsyMiw4IEBACiAKICAgICAvLyAyMC43LjIuMSwgY29uc3RydWN0b3JzCiAgICAgY29uc3RleHByIHZhcmlhbnQoKSBub2V4Y2VwdChzZWUgYmVsb3cpOwotICAgIHZhcmlhbnQoY29uc3QgdmFyaWFudCYpOwotICAgIHZhcmlhbnQodmFyaWFudCYmKSBub2V4Y2VwdChzZWUgYmVsb3cpOworICAgIHZhcmlhbnQoY29uc3QgdmFyaWFudCYpOyAgICAgICAgICAgICAgICAvLyBjb25zdGV4cHIgaW4gQysrMjAKKyAgICB2YXJpYW50KHZhcmlhbnQmJikgbm9leGNlcHQoc2VlIGJlbG93KTsgLy8gY29uc3RleHByIGluIEMrKzIwCiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY29uc3RleHByIHZhcmlhbnQoVCYmKSBub2V4Y2VwdChzZWUgYmVsb3cpOwogCkBAIC00Niw4ICs0NSw4IEBACiAgICAgfnZhcmlhbnQoKTsKIAogICAgIC8vIDIwLjcuMi4zLCBhc3NpZ25tZW50Ci0gICAgdmFyaWFudCYgb3BlcmF0b3I9KGNvbnN0IHZhcmlhbnQmKTsKLSAgICB2YXJpYW50JiBvcGVyYXRvcj0odmFyaWFudCYmKSBub2V4Y2VwdChzZWUgYmVsb3cpOworICAgIHZhcmlhbnQmIG9wZXJhdG9yPShjb25zdCB2YXJpYW50Jik7ICAgICAgICAgICAgICAgIC8vIGNvbnN0ZXhwciBpbiBDKysyMAorICAgIHZhcmlhbnQmIG9wZXJhdG9yPSh2YXJpYW50JiYpIG5vZXhjZXB0KHNlZSBiZWxvdyk7IC8vIGNvbnN0ZXhwciBpbiBDKysyMAogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IHZhcmlhbnQmIG9wZXJhdG9yPShUJiYpIG5vZXhjZXB0KHNlZSBiZWxvdyk7CiAKQEAgLTIxOSw3ICsyMTgsNyBAQAogCiBuYW1lc3BhY2Ugc3RkIHsgLy8gZXhwbGljaXRseSBub3QgdXNpbmcgdmVyc2lvbmluZyBuYW1lc3BhY2UKIAotY2xhc3MgX0xJQkNQUF9FWENFUFRJT05fQUJJIGJhZF92YXJpYW50X2FjY2VzcyA6IHB1YmxpYyBleGNlcHRpb24geworY2xhc3MgX0xJQkNQUF9FWENFUFRJT05fQUJJIF9MSUJDUFBfQVZBSUxBQklMSVRZX0JBRF9WQVJJQU5UX0FDQ0VTUyBiYWRfdmFyaWFudF9hY2Nlc3MgOiBwdWJsaWMgZXhjZXB0aW9uIHsKIHB1YmxpYzoKICAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29uc3QgX05PRVhDRVBUOwogfTsKQEAgLTIzMiw2ICsyMzEsNyBAQAogCiBfTElCQ1BQX05PUkVUVVJOCiBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorX0xJQkNQUF9BVkFJTEFCSUxJVFlfVEhST1dfQkFEX1ZBUklBTlRfQUNDRVNTCiB2b2lkIF9fdGhyb3dfYmFkX3ZhcmlhbnRfYWNjZXNzKCkgewogI2lmbmRlZiBfTElCQ1BQX05PX0VYQ0VQVElPTlMKICAgICAgICAgdGhyb3cgYmFkX3ZhcmlhbnRfYWNjZXNzKCk7CkBAIC0xMDY1LDcgKzEwNjUsNyBAQAogI2lmbmRlZiBfTElCQ1BQX05PX0VYQ0VQVElPTlMKICAgICAgIC8vIEVYVEVOU0lPTjogV2hlbiB0aGUgbW92ZSBjb25zdHJ1Y3Rpb24gb2YgYF9fbGhzYCBpbnRvIGBfX3Joc2AgdGhyb3dzCiAgICAgICAvLyBhbmQgYF9fdG1wYCBpcyBub3Rocm93IG1vdmUgY29uc3RydWN0aWJsZSB0aGVuIHdlIG1vdmUgYF9fdG1wYCBiYWNrCi0gICAgICAvLyBpbnRvIGBfX3Joc2AgYW5kIHByb3ZpZGUgdGhlIHN0cm9uZyBleGNlcHRpb24gc2FmZXR5IGd1YXJlbnRlZS4KKyAgICAgIC8vIGludG8gYF9fcmhzYCBhbmQgcHJvdmlkZSB0aGUgc3Ryb25nIGV4Y2VwdGlvbiBzYWZldHkgZ3VhcmFudGVlLgogICAgICAgdHJ5IHsKICAgICAgICAgdGhpcy0+X19nZW5lcmljX2NvbnN0cnVjdCgqX19yaHMsIF9WU1REOjptb3ZlKCpfX2xocykpOwogICAgICAgfSBjYXRjaCAoLi4uKSB7CkBAIC0xMzIxLDYgKzEzMjEsNyBAQAogCiB0ZW1wbGF0ZSA8c2l6ZV90IF9JcCwgY2xhc3MgX1ZwPgogaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK19MSUJDUFBfQVZBSUxBQklMSVRZX1RIUk9XX0JBRF9WQVJJQU5UX0FDQ0VTUwogY29uc3RleHByIGF1dG8mJiBfX2dlbmVyaWNfZ2V0KF9WcCYmIF9fdikgewogICB1c2luZyBfX3ZhcmlhbnRfZGV0YWlsOjpfX2FjY2Vzczo6X192YXJpYW50OwogICBpZiAoIV9faG9sZHNfYWx0ZXJuYXRpdmU8X0lwPihfX3YpKSB7CkBAIC0xMzMxLDYgKzEzMzIsNyBAQAogCiB0ZW1wbGF0ZSA8c2l6ZV90IF9JcCwgY2xhc3MuLi4gX1R5cGVzPgogaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK19MSUJDUFBfQVZBSUxBQklMSVRZX1RIUk9XX0JBRF9WQVJJQU5UX0FDQ0VTUwogY29uc3RleHByIHZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxfSXAsIHZhcmlhbnQ8X1R5cGVzLi4uPj4mIGdldCgKICAgICB2YXJpYW50PF9UeXBlcy4uLj4mIF9fdikgewogICBzdGF0aWNfYXNzZXJ0KF9JcCA8IHNpemVvZi4uLihfVHlwZXMpKTsKQEAgLTEzNDAsNiArMTM0Miw3IEBACiAKIHRlbXBsYXRlIDxzaXplX3QgX0lwLCBjbGFzcy4uLiBfVHlwZXM+CiBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorX0xJQkNQUF9BVkFJTEFCSUxJVFlfVEhST1dfQkFEX1ZBUklBTlRfQUNDRVNTCiBjb25zdGV4cHIgdmFyaWFudF9hbHRlcm5hdGl2ZV90PF9JcCwgdmFyaWFudDxfVHlwZXMuLi4+PiYmIGdldCgKICAgICB2YXJpYW50PF9UeXBlcy4uLj4mJiBfX3YpIHsKICAgc3RhdGljX2Fzc2VydChfSXAgPCBzaXplb2YuLi4oX1R5cGVzKSk7CkBAIC0xMzQ5LDYgKzEzNTIsNyBAQAogCiB0ZW1wbGF0ZSA8c2l6ZV90IF9JcCwgY2xhc3MuLi4gX1R5cGVzPgogaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK19MSUJDUFBfQVZBSUxBQklMSVRZX1RIUk9XX0JBRF9WQVJJQU5UX0FDQ0VTUwogY29uc3RleHByIGNvbnN0IHZhcmlhbnRfYWx0ZXJuYXRpdmVfdDxfSXAsIHZhcmlhbnQ8X1R5cGVzLi4uPj4mIGdldCgKICAgICBjb25zdCB2YXJpYW50PF9UeXBlcy4uLj4mIF9fdikgewogICBzdGF0aWNfYXNzZXJ0KF9JcCA8IHNpemVvZi4uLihfVHlwZXMpKTsKQEAgLTEzNTgsNiArMTM2Miw3IEBACiAKIHRlbXBsYXRlIDxzaXplX3QgX0lwLCBjbGFzcy4uLiBfVHlwZXM+CiBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorX0xJQkNQUF9BVkFJTEFCSUxJVFlfVEhST1dfQkFEX1ZBUklBTlRfQUNDRVNTCiBjb25zdGV4cHIgY29uc3QgdmFyaWFudF9hbHRlcm5hdGl2ZV90PF9JcCwgdmFyaWFudDxfVHlwZXMuLi4+PiYmIGdldCgKICAgICBjb25zdCB2YXJpYW50PF9UeXBlcy4uLj4mJiBfX3YpIHsKICAgc3RhdGljX2Fzc2VydChfSXAgPCBzaXplb2YuLi4oX1R5cGVzKSk7CkBAIC0xMzY3LDYgKzEzNzIsNyBAQAogCiB0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcy4uLiBfVHlwZXM+CiBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorX0xJQkNQUF9BVkFJTEFCSUxJVFlfVEhST1dfQkFEX1ZBUklBTlRfQUNDRVNTCiBjb25zdGV4cHIgX1RwJiBnZXQodmFyaWFudDxfVHlwZXMuLi4+JiBfX3YpIHsKICAgc3RhdGljX2Fzc2VydCghaXNfdm9pZF92PF9UcD4pOwogICByZXR1cm4gX1ZTVEQ6OmdldDxfX2ZpbmRfZXhhY3RseV9vbmVfdDxfVHAsIF9UeXBlcy4uLj46OnZhbHVlPihfX3YpOwpAQCAtMTM3NCw2ICsxMzgwLDcgQEAKIAogdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MuLi4gX1R5cGVzPgogaW5saW5lIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkKK19MSUJDUFBfQVZBSUxBQklMSVRZX1RIUk9XX0JBRF9WQVJJQU5UX0FDQ0VTUwogY29uc3RleHByIF9UcCYmIGdldCh2YXJpYW50PF9UeXBlcy4uLj4mJiBfX3YpIHsKICAgc3RhdGljX2Fzc2VydCghaXNfdm9pZF92PF9UcD4pOwogICByZXR1cm4gX1ZTVEQ6OmdldDxfX2ZpbmRfZXhhY3RseV9vbmVfdDxfVHAsIF9UeXBlcy4uLj46OnZhbHVlPigKQEAgLTEzODIsNiArMTM4OSw3IEBACiAKIHRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzLi4uIF9UeXBlcz4KIGlubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCitfTElCQ1BQX0FWQUlMQUJJTElUWV9USFJPV19CQURfVkFSSUFOVF9BQ0NFU1MKIGNvbnN0ZXhwciBjb25zdCBfVHAmIGdldChjb25zdCB2YXJpYW50PF9UeXBlcy4uLj4mIF9fdikgewogICBzdGF0aWNfYXNzZXJ0KCFpc192b2lkX3Y8X1RwPik7CiAgIHJldHVybiBfVlNURDo6Z2V0PF9fZmluZF9leGFjdGx5X29uZV90PF9UcCwgX1R5cGVzLi4uPjo6dmFsdWU+KF9fdik7CkBAIC0xMzg5LDYgKzEzOTcsNyBAQAogCiB0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcy4uLiBfVHlwZXM+CiBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorX0xJQkNQUF9BVkFJTEFCSUxJVFlfVEhST1dfQkFEX1ZBUklBTlRfQUNDRVNTCiBjb25zdGV4cHIgY29uc3QgX1RwJiYgZ2V0KGNvbnN0IHZhcmlhbnQ8X1R5cGVzLi4uPiYmIF9fdikgewogICBzdGF0aWNfYXNzZXJ0KCFpc192b2lkX3Y8X1RwPik7CiAgIHJldHVybiBfVlNURDo6Z2V0PF9fZmluZF9leGFjdGx5X29uZV90PF9UcCwgX1R5cGVzLi4uPjo6dmFsdWU+KApAQCAtMTUyMSw2ICsxNTMwLDcgQEAKIAogdGVtcGxhdGUgPGNsYXNzIF9WaXNpdG9yLCBjbGFzcy4uLiBfVnM+CiBpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQorX0xJQkNQUF9BVkFJTEFCSUxJVFlfVEhST1dfQkFEX1ZBUklBTlRfQUNDRVNTCiBjb25zdGV4cHIgZGVjbHR5cGUoYXV0bykgdmlzaXQoX1Zpc2l0b3ImJiBfX3Zpc2l0b3IsIF9WcyYmLi4uIF9fdnMpIHsKICAgdXNpbmcgX192YXJpYW50X2RldGFpbDo6X192aXNpdGF0aW9uOjpfX3ZhcmlhbnQ7CiAgIGJvb2wgX19yZXN1bHRzW10gPSB7X192cy52YWx1ZWxlc3NfYnlfZXhjZXB0aW9uKCkuLi59OwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3ZlY3RvciBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS92ZWN0b3IKaW5kZXggZGU3ZGUwOS4uNzlkMTc2NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3ZlY3RvcgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvdmVjdG9yCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB2ZWN0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0yNjEsNiArMjYwLDExIEBACiB2b2lkIHN3YXAodmVjdG9yPFQsQWxsb2NhdG9yPiYgeCwgdmVjdG9yPFQsQWxsb2NhdG9yPiYgeSkKICAgICBub2V4Y2VwdChub2V4Y2VwdCh4LnN3YXAoeSkpKTsKIAordGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgVT4KKyAgICB2b2lkIGVyYXNlKHZlY3RvcjxULCBBbGxvY2F0b3I+JiBjLCBjb25zdCBVJiB2YWx1ZSk7ICAgICAgIC8vIEMrKzIwCit0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBQcmVkaWNhdGU+CisgICAgdm9pZCBlcmFzZV9pZih2ZWN0b3I8VCwgQWxsb2NhdG9yPiYgYywgUHJlZGljYXRlIHByZWQpOyAgICAvLyBDKysyMAorCiB9ICAvLyBzdGQKIAogKi8KQEAgLTI2MDYsNiArMjYxMCwxMyBAQAogewogICAgIHNpemVfdHlwZSBfX29sZF9zaXplID0gdGhpcy0+X19zaXplXzsKICAgICB0aGlzLT5fX3NpemVfICs9IF9fbjsKKyAgICBpZiAoX19vbGRfc2l6ZSA9PSAwIHx8ICgoX19vbGRfc2l6ZSAtIDEpIC8gX19iaXRzX3Blcl93b3JkKSAhPSAoKHRoaXMtPl9fc2l6ZV8gLSAxKSAvIF9fYml0c19wZXJfd29yZCkpCisgICAgeworICAgICAgICBpZiAodGhpcy0+X19zaXplXyA8PSBfX2JpdHNfcGVyX3dvcmQpCisgICAgICAgICAgICB0aGlzLT5fX2JlZ2luX1swXSA9IF9fc3RvcmFnZV90eXBlKDApOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLT5fX2JlZ2luX1sodGhpcy0+X19zaXplXyAtIDEpIC8gX19iaXRzX3Blcl93b3JkXSA9IF9fc3RvcmFnZV90eXBlKDApOworICAgIH0KICAgICBfVlNURDo6ZmlsbF9uKF9fbWFrZV9pdGVyKF9fb2xkX3NpemUpLCBfX24sIF9feCk7CiB9CiAKQEAgLTI2MjAsNiArMjYzMSwxMyBAQAogewogICAgIHNpemVfdHlwZSBfX29sZF9zaXplID0gdGhpcy0+X19zaXplXzsKICAgICB0aGlzLT5fX3NpemVfICs9IF9WU1REOjpkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QpOworICAgIGlmIChfX29sZF9zaXplID09IDAgfHwgKChfX29sZF9zaXplIC0gMSkgLyBfX2JpdHNfcGVyX3dvcmQpICE9ICgodGhpcy0+X19zaXplXyAtIDEpIC8gX19iaXRzX3Blcl93b3JkKSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLT5fX3NpemVfIDw9IF9fYml0c19wZXJfd29yZCkKKyAgICAgICAgICAgIHRoaXMtPl9fYmVnaW5fWzBdID0gX19zdG9yYWdlX3R5cGUoMCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMtPl9fYmVnaW5fWyh0aGlzLT5fX3NpemVfIC0gMSkgLyBfX2JpdHNfcGVyX3dvcmRdID0gX19zdG9yYWdlX3R5cGUoMCk7CisgICAgfQogICAgIF9WU1REOjpjb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19tYWtlX2l0ZXIoX19vbGRfc2l6ZSkpOwogfQogCkBAIC0zMzk0LDYgKzM0MTIsMTggQEAKICAgICBfX3guc3dhcChfX3kpOwogfQogCisjaWYgX0xJQkNQUF9TVERfVkVSID4gMTcKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvY2F0b3IsIGNsYXNzIF9VcD4KK2lubGluZSBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZCit2b2lkIGVyYXNlKHZlY3RvcjxfVHAsIF9BbGxvY2F0b3I+JiBfX2MsIGNvbnN0IF9VcCYgX192KQoreyBfX2MuZXJhc2UoX1ZTVEQ6OnJlbW92ZShfX2MuYmVnaW4oKSwgX19jLmVuZCgpLCBfX3YpLCBfX2MuZW5kKCkpOyB9CisKK3RlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9BbGxvY2F0b3IsIGNsYXNzIF9QcmVkaWNhdGU+CitpbmxpbmUgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElUWQordm9pZCBlcmFzZV9pZih2ZWN0b3I8X1RwLCBfQWxsb2NhdG9yPiYgX19jLCBfUHJlZGljYXRlIF9fcHJlZCkKK3sgX19jLmVyYXNlKF9WU1REOjpyZW1vdmVfaWYoX19jLmJlZ2luKCksIF9fYy5lbmQoKSwgX19wcmVkKSwgX19jLmVuZCgpKTsgfQorI2VuZGlmCisKIF9MSUJDUFBfRU5EX05BTUVTUEFDRV9TVEQKIAogX0xJQkNQUF9QT1BfTUFDUk9TCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvdmVyc2lvbiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS92ZXJzaW9uCmluZGV4IDgwYzI3OTcuLjEwMzdlZTUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS92ZXJzaW9uCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS92ZXJzaW9uCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB2ZXJzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xMiw4NiArMTEsMTA1IEBACiAjZGVmaW5lIF9MSUJDUFBfVkVSU0lPTkgKIAogLyoKLSAgICB2ZXJzaW9uIHN5bm9wc2lzCisgIHZlcnNpb24gc3lub3BzaXMKIAotICAgIFRhYmxlIDM1IOKAlCBTdGFuZGFyZCBsaWJyYXJ5IGZlYXR1cmUtdGVzdCBtYWNyb3MKLU1hY3JvIG5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICBIZWFkZXJzCi1fX2NwcF9saWJfYWRkcmVzc29mX2NvbnN0ZXhwciAgICAgICAgICAgICAgIDIwMTYwM0wgPG1lbW9yeT4KLV9fY3BwX2xpYl9hbGxvY2F0b3JfdHJhaXRzX2lzX2Fsd2F5c19lcXVhbCAgMjAxNDExTCA8bWVtb3J5PiA8c2NvcGVkX2FsbG9jYXRvcj4gPHN0cmluZz4gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlcXVlPiA8Zm9yd2FyZF9saXN0PiA8bGlzdD4gPHZlY3Rvcj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWFwPiA8c2V0PiA8dW5vcmRlcmVkX21hcD4gPHVub3JkZXJlZF9zZXQ+Ci1fX2NwcF9saWJfYW55ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwNkwgPGFueT4KLV9fY3BwX2xpYl9hcHBseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjAzTCA8dHVwbGU+Ci1fX2NwcF9saWJfYXJyYXlfY29uc3RleHByICAgICAgICAgICAgICAgICAgIDIwMTYwM0wgPGl0ZXJhdG9yPiA8YXJyYXk+Ci1fX2NwcF9saWJfYXNfY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTUxMEwgPHV0aWxpdHk+Ci1fX2NwcF9saWJfYXRvbWljX2lzX2Fsd2F5c19sb2NrX2ZyZWUgICAgICAgIDIwMTYwM0wgPGF0b21pYz4KLV9fY3BwX2xpYl9hdG9taWNfcmVmICAgICAgICAgICAgICAgICAgICAgICAgMjAxODA2TCA8YXRvbWljPgotX19jcHBfbGliX2JpdF9jYXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE4MDZMIDxiaXQ+Ci1fX2NwcF9saWJfYm9vbF9jb25zdGFudCAgICAgICAgICAgICAgICAgICAgIDIwMTUwNUwgPHR5cGVfdHJhaXRzPgotX19jcHBfbGliX2JveWVyX21vb3JlX3NlYXJjaGVyICAgICAgICAgICAgICAyMDE2MDNMIDxmdW5jdGlvbmFsPgotX19jcHBfbGliX2J5dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDNMIDxjc3RkZGVmPgotX19jcHBfbGliX2Nocm9ubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MTFMIDxjaHJvbm8+Ci1fX2NwcF9saWJfY2xhbXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwM0wgPGFsZ29yaXRobT4KLV9fY3BwX2xpYl9jb21wbGV4X3VkbHMgICAgICAgICAgICAgICAgICAgICAgMjAxMzA5TCA8Y29tcGxleD4KLV9fY3BwX2xpYl9jb25jZXB0cyAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxODA2TCA8Y29uY2VwdHM+Ci1fX2NwcF9saWJfY29uc3RleHByX3N3YXBfYWxnb3JpdGhtcyAgICAgICAgIDIwMTgwNkwgPGFsZ29yaXRobT4KLV9fY3BwX2xpYl9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyAgICAgICAgICAgMjAxNjAzTCA8bWVtb3J5PgotX19jcHBfbGliX2V4Y2hhbmdlX2Z1bmN0aW9uICAgICAgICAgICAgICAgICAyMDEzMDRMIDx1dGlsaXR5PgotX19jcHBfbGliX2V4ZWN1dGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDNMIDxleGVjdXRpb24+Ci1fX2NwcF9saWJfZmlsZXN5c3RlbSAgICAgICAgICAgICAgICAgICAgICAgIDIwMTcwM0wgPGZpbGVzeXN0ZW0+Ci1fX2NwcF9saWJfZ2NkX2xjbSAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwNkwgPG51bWVyaWM+Ci1fX2NwcF9saWJfZ2VuZXJpY19hc3NvY2lhdGl2ZV9sb29rdXAgICAgICAgIDIwMTMwNEwgPG1hcD4gPHNldD4KLV9fY3BwX2xpYl9oYXJkd2FyZV9pbnRlcmZlcmVuY2Vfc2l6ZSAgICAgICAgMjAxNzAzTCA8bmV3PgotX19jcHBfbGliX2hhc191bmlxdWVfb2JqZWN0X3JlcHJlc2VudGF0aW9ucyAyMDE2MDZMIDx0eXBlX3RyYWl0cz4KLV9fY3BwX2xpYl9oeXBvdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjAzTCA8Y21hdGg+Ci1fX2NwcF9saWJfaW5jb21wbGV0ZV9jb250YWluZXJfZWxlbWVudHMgICAgIDIwMTUwNUwgPGZvcndhcmRfbGlzdD4gPGxpc3Q+IDx2ZWN0b3I+Ci1fX2NwcF9saWJfaW50ZWdlcl9zZXF1ZW5jZSAgICAgICAgICAgICAgICAgIDIwMTMwNEwgPHV0aWxpdHk+Ci1fX2NwcF9saWJfaW50ZWdyYWxfY29uc3RhbnRfY2FsbGFibGUgICAgICAgIDIwMTMwNEwgPHR5cGVfdHJhaXRzPgotX19jcHBfbGliX2ludm9rZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE0MTFMIDxmdW5jdGlvbmFsPgotX19jcHBfbGliX2lzX2FnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAyMDE3MDNMIDx0eXBlX3RyYWl0cz4KLV9fY3BwX2xpYl9pc19maW5hbCAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNDAyTCA8dHlwZV90cmFpdHM+Ci1fX2NwcF9saWJfaXNfaW52b2NhYmxlICAgICAgICAgICAgICAgICAgICAgIDIwMTcwM0wgPHR5cGVfdHJhaXRzPgotX19jcHBfbGliX2lzX251bGxfcG9pbnRlciAgICAgICAgICAgICAgICAgICAyMDEzMDlMIDx0eXBlX3RyYWl0cz4KLV9fY3BwX2xpYl9pc19zd2FwcGFibGUgICAgICAgICAgICAgICAgICAgICAgMjAxNjAzTCA8dHlwZV90cmFpdHM+Ci1fX2NwcF9saWJfbGF1bmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwNkwgPG5ldz4KLV9fY3BwX2xpYl9saXN0X3JlbW92ZV9yZXR1cm5fdHlwZSAgICAgICAgICAgMjAxODA2TCA8Zm9yd2FyZF9saXN0PiA8bGlzdD4KLV9fY3BwX2xpYl9sb2dpY2FsX3RyYWl0cyAgICAgICAgICAgICAgICAgICAgMjAxNTEwTCA8dHlwZV90cmFpdHM+Ci1fX2NwcF9saWJfbWFrZV9mcm9tX3R1cGxlICAgICAgICAgICAgICAgICAgIDIwMTYwNkwgPHR1cGxlPgotX19jcHBfbGliX21ha2VfcmV2ZXJzZV9pdGVyYXRvciAgICAgICAgICAgICAyMDE0MDJMIDxpdGVyYXRvcj4KLV9fY3BwX2xpYl9tYWtlX3VuaXF1ZSAgICAgICAgICAgICAgICAgICAgICAgMjAxMzA0TCA8bWVtb3J5PgotX19jcHBfbGliX21hcF90cnlfZW1wbGFjZSAgICAgICAgICAgICAgICAgICAyMDE0MTFMIDxtYXA+Ci1fX2NwcF9saWJfbWF0aF9zcGVjaWFsX2Z1bmN0aW9ucyAgICAgICAgICAgIDIwMTYwM0wgPGNtYXRoPgotX19jcHBfbGliX21lbW9yeV9yZXNvdXJjZSAgICAgICAgICAgICAgICAgICAyMDE2MDNMIDxtZW1vcnlfcmVzb3VyY2U+Ci1fX2NwcF9saWJfbm9kZV9leHRyYWN0ICAgICAgICAgICAgICAgICAgICAgIDIwMTYwNkwgPG1hcD4gPHNldD4gPHVub3JkZXJlZF9tYXA+IDx1bm9yZGVyZWRfc2V0PgotX19jcHBfbGliX25vbm1lbWJlcl9jb250YWluZXJfYWNjZXNzICAgICAgICAyMDE0MTFMIDxpdGVyYXRvcj4gPGFycmF5PiA8ZGVxdWU+IDxmb3J3YXJkX2xpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3Q+IDxtYXA+IDxyZWdleD4gPHNldD4gPHN0cmluZz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dW5vcmRlcmVkX21hcD4gPHVub3JkZXJlZF9zZXQ+IDx2ZWN0b3I+Ci1fX2NwcF9saWJfbm90X2ZuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwM0wgPGZ1bmN0aW9uYWw+Ci1fX2NwcF9saWJfbnVsbF9pdGVyYXRvcnMgICAgICAgICAgICAgICAgICAgIDIwMTMwNEwgPGl0ZXJhdG9yPgotX19jcHBfbGliX29wdGlvbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDZMIDxvcHRpb25hbD4KLV9fY3BwX2xpYl9wYXJhbGxlbF9hbGdvcml0aG0gICAgICAgICAgICAgICAgMjAxNjAzTCA8YWxnb3JpdGhtPiA8bnVtZXJpYz4KLV9fY3BwX2xpYl9xdW90ZWRfc3RyaW5nX2lvICAgICAgICAgICAgICAgICAgMjAxMzA0TCA8aW9tYW5pcD4KLV9fY3BwX2xpYl9yYXdfbWVtb3J5X2FsZ29yaXRobXMgICAgICAgICAgICAgMjAxNjA2TCA8bWVtb3J5PgotX19jcHBfbGliX3Jlc3VsdF9vZl9zZmluYWUgICAgICAgICAgICAgICAgICAyMDEyMTBMIDxmdW5jdGlvbmFsPiA8dHlwZV90cmFpdHM+Ci1fX2NwcF9saWJfcm9idXN0X25vbm1vZGlmeWluZ19zZXFfb3BzICAgICAgIDIwMTMwNEwgPGFsZ29yaXRobT4KLV9fY3BwX2xpYl9zYW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjAzTCA8YWxnb3JpdGhtPgotX19jcHBfbGliX3Njb3BlZF9sb2NrICAgICAgICAgICAgICAgICAgICAgICAyMDE3MDNMIDxtdXRleD4KLV9fY3BwX2xpYl9zaGFyZWRfbXV0ZXggICAgICAgICAgICAgICAgICAgICAgMjAxNTA1TCA8c2hhcmVkX211dGV4PgotX19jcHBfbGliX3NoYXJlZF9wdHJfYXJyYXlzICAgICAgICAgICAgICAgICAyMDE2MTFMIDxtZW1vcnk+Ci1fX2NwcF9saWJfc2hhcmVkX3B0cl93ZWFrX3R5cGUgICAgICAgICAgICAgIDIwMTYwNkwgPG1lbW9yeT4KLV9fY3BwX2xpYl9zaGFyZWRfdGltZWRfbXV0ZXggICAgICAgICAgICAgICAgMjAxNDAyTCA8c2hhcmVkX211dGV4PgotX19jcHBfbGliX3N0cmluZ191ZGxzICAgICAgICAgICAgICAgICAgICAgICAyMDEzMDRMIDxzdHJpbmc+Ci1fX2NwcF9saWJfc3RyaW5nX3ZpZXcgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwNkwgPHN0cmluZz4gPHN0cmluZ192aWV3PgotX19jcHBfbGliX3RvX2NoYXJzICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MTFMIDx1dGlsaXR5PgotX19jcHBfbGliX3RyYW5zZm9ybWF0aW9uX3RyYWl0X2FsaWFzZXMgICAgICAyMDEzMDRMIDx0eXBlX3RyYWl0cz4KLV9fY3BwX2xpYl90cmFuc3BhcmVudF9vcGVyYXRvcnMgICAgICAgICAgICAgMjAxNTEwTCA8bWVtb3J5PiA8ZnVuY3Rpb25hbD4KLV9fY3BwX2xpYl90dXBsZV9lbGVtZW50X3QgICAgICAgICAgICAgICAgICAgMjAxNDAyTCA8dHVwbGU+Ci1fX2NwcF9saWJfdHVwbGVzX2J5X3R5cGUgICAgICAgICAgICAgICAgICAgIDIwMTMwNEwgPHV0aWxpdHk+IDx0dXBsZT4KLV9fY3BwX2xpYl90eXBlX3RyYWl0X3ZhcmlhYmxlX3RlbXBsYXRlcyAgICAgMjAxNTEwTCA8dHlwZV90cmFpdHM+Ci1fX2NwcF9saWJfdW5jYXVnaHRfZXhjZXB0aW9ucyAgICAgICAgICAgICAgIDIwMTQxMUwgPGV4Y2VwdGlvbj4KLV9fY3BwX2xpYl91bm9yZGVyZWRfbWFwX3RyeV9lbXBsYWNlICAgICAgICAgMjAxNDExTCA8dW5vcmRlcmVkX21hcD4KLV9fY3BwX2xpYl92YXJpYW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjA2TCA8dmFyaWFudD4KLV9fY3BwX2xpYl92b2lkX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNDExTCA8dHlwZV90cmFpdHM+CitNYWNybyBuYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgSGVhZGVycworX19jcHBfbGliX2FkZHJlc3NvZl9jb25zdGV4cHIgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDNMIDxtZW1vcnk+CitfX2NwcF9saWJfYWxsb2NhdG9yX3RyYWl0c19pc19hbHdheXNfZXF1YWwgICAgICAgICAgICAgIDIwMTQxMUwgPG1lbW9yeT4gPHNjb3BlZF9hbGxvY2F0b3I+IDxzdHJpbmc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlcXVlPiA8Zm9yd2FyZF9saXN0PiA8bGlzdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmVjdG9yPiA8bWFwPiA8c2V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bm9yZGVyZWRfbWFwPiA8dW5vcmRlcmVkX3NldD4KK19fY3BwX2xpYl9hbnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjA2TCA8YW55PgorX19jcHBfbGliX2FwcGx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDNMIDx0dXBsZT4KK19fY3BwX2xpYl9hcnJheV9jb25zdGV4cHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjAzTCA8aXRlcmF0b3I+IDxhcnJheT4KK19fY3BwX2xpYl9hc19jb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNTEwTCA8dXRpbGl0eT4KK19fY3BwX2xpYl9hdG9taWNfaXNfYWx3YXlzX2xvY2tfZnJlZSAgICAgICAgICAgICAgICAgICAgMjAxNjAzTCA8YXRvbWljPgorX19jcHBfbGliX2F0b21pY19yZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE4MDZMIDxhdG9taWM+CitfX2NwcF9saWJfYmluZF9mcm9udCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTgxMUwgPGZ1bmN0aW9uYWw+CitfX2NwcF9saWJfYml0X2Nhc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTgwNkwgPGJpdD4KK19fY3BwX2xpYl9ib29sX2NvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNTA1TCA8dHlwZV90cmFpdHM+CitfX2NwcF9saWJfYm95ZXJfbW9vcmVfc2VhcmNoZXIgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwM0wgPGZ1bmN0aW9uYWw+CitfX2NwcF9saWJfYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwM0wgPGNzdGRkZWY+CitfX2NwcF9saWJfY2hhcjhfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTgxMUwgPGF0b21pYz4gPGZpbGVzeXN0ZW0+IDxpc3RyZWFtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW1pdHM+IDxsb2NhbGU+IDxvc3RyZWFtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmc+IDxzdHJpbmdfdmlldz4KK19fY3BwX2xpYl9jaHJvbm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjExTCA8Y2hyb25vPgorX19jcHBfbGliX2Nocm9ub191ZGxzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDEzMDRMIDxjaHJvbm8+CitfX2NwcF9saWJfY2xhbXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwM0wgPGFsZ29yaXRobT4KK19fY3BwX2xpYl9jb21wbGV4X3VkbHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxMzA5TCA8Y29tcGxleD4KK19fY3BwX2xpYl9jb25jZXB0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxODA2TCA8Y29uY2VwdHM+CitfX2NwcF9saWJfY29uc3RleHByX21pc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTgxMUwgPGFycmF5PiA8ZnVuY3Rpb25hbD4gPGl0ZXJhdG9yPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJpbmdfdmlldz4gPHR1cGxlPiA8dXRpbGl0eT4KK19fY3BwX2xpYl9jb25zdGV4cHJfc3dhcF9hbGdvcml0aG1zICAgICAgICAgICAgICAgICAgICAgMjAxODA2TCA8YWxnb3JpdGhtPgorX19jcHBfbGliX2Rlc3Ryb3lpbmdfZGVsZXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE4MDZMIDxuZXc+CitfX2NwcF9saWJfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwM0wgPG1lbW9yeT4KK19fY3BwX2xpYl9lcmFzZV9pZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxODExTCA8c3RyaW5nPiA8ZGVxdWU+IDxmb3J3YXJkX2xpc3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3Q+IDx2ZWN0b3I+IDxtYXA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNldD4gPHVub3JkZXJlZF9tYXA+IDx1bm9yZGVyZWRfc2V0PgorX19jcHBfbGliX2V4Y2hhbmdlX2Z1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDEzMDRMIDx1dGlsaXR5PgorX19jcHBfbGliX2V4ZWN1dGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDNMIDxleGVjdXRpb24+CitfX2NwcF9saWJfZmlsZXN5c3RlbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTcwM0wgPGZpbGVzeXN0ZW0+CitfX2NwcF9saWJfZ2NkX2xjbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwNkwgPG51bWVyaWM+CitfX2NwcF9saWJfZ2VuZXJpY19hc3NvY2lhdGl2ZV9sb29rdXAgICAgICAgICAgICAgICAgICAgIDIwMTMwNEwgPG1hcD4gPHNldD4KK19fY3BwX2xpYl9nZW5lcmljX3Vub3JkZXJlZF9sb29rdXAgICAgICAgICAgICAgICAgICAgICAgMjAxODExTCA8dW5vcmRlcmVkX21hcD4gPHVub3JkZXJlZF9zZXQ+CitfX2NwcF9saWJfaGFyZHdhcmVfaW50ZXJmZXJlbmNlX3NpemUgICAgICAgICAgICAgICAgICAgIDIwMTcwM0wgPG5ldz4KK19fY3BwX2xpYl9oYXNfdW5pcXVlX29iamVjdF9yZXByZXNlbnRhdGlvbnMgICAgICAgICAgICAgMjAxNjA2TCA8dHlwZV90cmFpdHM+CitfX2NwcF9saWJfaHlwb3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwM0wgPGNtYXRoPgorX19jcHBfbGliX2luY29tcGxldGVfY29udGFpbmVyX2VsZW1lbnRzICAgICAgICAgICAgICAgICAyMDE1MDVMIDxmb3J3YXJkX2xpc3Q+IDxsaXN0PiA8dmVjdG9yPgorX19jcHBfbGliX2ludGVnZXJfc2VxdWVuY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDEzMDRMIDx1dGlsaXR5PgorX19jcHBfbGliX2ludGVncmFsX2NvbnN0YW50X2NhbGxhYmxlICAgICAgICAgICAgICAgICAgICAyMDEzMDRMIDx0eXBlX3RyYWl0cz4KK19fY3BwX2xpYl9pbnZva2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNDExTCA8ZnVuY3Rpb25hbD4KK19fY3BwX2xpYl9pc19hZ2dyZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNzAzTCA8dHlwZV90cmFpdHM+CitfX2NwcF9saWJfaXNfY29uc3RhbnRfZXZhbHVhdGVkICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTgxMUwgPHR5cGVfdHJhaXRzPgorX19jcHBfbGliX2lzX2ZpbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE0MDJMIDx0eXBlX3RyYWl0cz4KK19fY3BwX2xpYl9pc19pbnZvY2FibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNzAzTCA8dHlwZV90cmFpdHM+CitfX2NwcF9saWJfaXNfbnVsbF9wb2ludGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTMwOUwgPHR5cGVfdHJhaXRzPgorX19jcHBfbGliX2lzX3N3YXBwYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDNMIDx0eXBlX3RyYWl0cz4KK19fY3BwX2xpYl9sYXVuZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjA2TCA8bmV3PgorX19jcHBfbGliX2xpc3RfcmVtb3ZlX3JldHVybl90eXBlICAgICAgICAgICAgICAgICAgICAgICAyMDE4MDZMIDxmb3J3YXJkX2xpc3Q+IDxsaXN0PgorX19jcHBfbGliX2xvZ2ljYWxfdHJhaXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE1MTBMIDx0eXBlX3RyYWl0cz4KK19fY3BwX2xpYl9tYWtlX2Zyb21fdHVwbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjA2TCA8dHVwbGU+CitfX2NwcF9saWJfbWFrZV9yZXZlcnNlX2l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTQwMkwgPGl0ZXJhdG9yPgorX19jcHBfbGliX21ha2VfdW5pcXVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDEzMDRMIDxtZW1vcnk+CitfX2NwcF9saWJfbWFwX3RyeV9lbXBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTQxMUwgPG1hcD4KK19fY3BwX2xpYl9tYXRoX3NwZWNpYWxfZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjAzTCA8Y21hdGg+CitfX2NwcF9saWJfbWVtb3J5X3Jlc291cmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwM0wgPG1lbW9yeV9yZXNvdXJjZT4KK19fY3BwX2xpYl9ub2RlX2V4dHJhY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjA2TCA8bWFwPiA8c2V0PiA8dW5vcmRlcmVkX21hcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dW5vcmRlcmVkX3NldD4KK19fY3BwX2xpYl9ub25tZW1iZXJfY29udGFpbmVyX2FjY2VzcyAgICAgICAgICAgICAgICAgICAgMjAxNDExTCA8aXRlcmF0b3I+IDxhcnJheT4gPGRlcXVlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3J3YXJkX2xpc3Q+IDxsaXN0PiA8bWFwPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWdleD4gPHNldD4gPHN0cmluZz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dW5vcmRlcmVkX21hcD4gPHVub3JkZXJlZF9zZXQ+IDx2ZWN0b3I+CitfX2NwcF9saWJfbm90X2ZuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwM0wgPGZ1bmN0aW9uYWw+CitfX2NwcF9saWJfbnVsbF9pdGVyYXRvcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTMwNEwgPGl0ZXJhdG9yPgorX19jcHBfbGliX29wdGlvbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDZMIDxvcHRpb25hbD4KK19fY3BwX2xpYl9wYXJhbGxlbF9hbGdvcml0aG0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjAzTCA8YWxnb3JpdGhtPiA8bnVtZXJpYz4KK19fY3BwX2xpYl9xdW90ZWRfc3RyaW5nX2lvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxMzA0TCA8aW9tYW5pcD4KK19fY3BwX2xpYl9yYW5nZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxODExTCA8YWxnb3JpdGhtPiA8ZnVuY3Rpb25hbD4gPGl0ZXJhdG9yPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZW1vcnk+IDxyYW5nZXM+CitfX2NwcF9saWJfcmF3X21lbW9yeV9hbGdvcml0aG1zICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwNkwgPG1lbW9yeT4KK19fY3BwX2xpYl9yZXN1bHRfb2Zfc2ZpbmFlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxMjEwTCA8ZnVuY3Rpb25hbD4gPHR5cGVfdHJhaXRzPgorX19jcHBfbGliX3JvYnVzdF9ub25tb2RpZnlpbmdfc2VxX29wcyAgICAgICAgICAgICAgICAgICAyMDEzMDRMIDxhbGdvcml0aG0+CitfX2NwcF9saWJfc2FtcGxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwM0wgPGFsZ29yaXRobT4KK19fY3BwX2xpYl9zY29wZWRfbG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNzAzTCA8bXV0ZXg+CitfX2NwcF9saWJfc2hhcmVkX211dGV4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTUwNUwgPHNoYXJlZF9tdXRleD4KK19fY3BwX2xpYl9zaGFyZWRfcHRyX2FycmF5cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjExTCA8bWVtb3J5PgorX19jcHBfbGliX3NoYXJlZF9wdHJfd2Vha190eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDZMIDxtZW1vcnk+CitfX2NwcF9saWJfc2hhcmVkX3RpbWVkX211dGV4ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTQwMkwgPHNoYXJlZF9tdXRleD4KK19fY3BwX2xpYl9zdHJpbmdfdWRscyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxMzA0TCA8c3RyaW5nPgorX19jcHBfbGliX3N0cmluZ192aWV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDZMIDxzdHJpbmc+IDxzdHJpbmdfdmlldz4KK19fY3BwX2xpYl90aHJlZV93YXlfY29tcGFyaXNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNzExTCA8Y29tcGFyZT4KK19fY3BwX2xpYl90b19jaGFycyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjExTCA8dXRpbGl0eT4KK19fY3BwX2xpYl90cmFuc2Zvcm1hdGlvbl90cmFpdF9hbGlhc2VzICAgICAgICAgICAgICAgICAgMjAxMzA0TCA8dHlwZV90cmFpdHM+CitfX2NwcF9saWJfdHJhbnNwYXJlbnRfb3BlcmF0b3JzICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTUxMEwgPGZ1bmN0aW9uYWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTIxMEwgLy8gQysrMTQKK19fY3BwX2xpYl90dXBsZV9lbGVtZW50X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNDAyTCA8dHVwbGU+CitfX2NwcF9saWJfdHVwbGVzX2J5X3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTMwNEwgPHV0aWxpdHk+IDx0dXBsZT4KK19fY3BwX2xpYl90eXBlX3RyYWl0X3ZhcmlhYmxlX3RlbXBsYXRlcyAgICAgICAgICAgICAgICAgMjAxNTEwTCA8dHlwZV90cmFpdHM+CitfX2NwcF9saWJfdW5jYXVnaHRfZXhjZXB0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTQxMUwgPGV4Y2VwdGlvbj4KK19fY3BwX2xpYl91bm9yZGVyZWRfbWFwX3RyeV9lbXBsYWNlICAgICAgICAgICAgICAgICAgICAgMjAxNDExTCA8dW5vcmRlcmVkX21hcD4KK19fY3BwX2xpYl92YXJpYW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjA2TCA8dmFyaWFudD4KK19fY3BwX2xpYl92b2lkX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNDExTCA8dHlwZV90cmFpdHM+CiAKICovCiAKQEAgLTEwMiwxNiArMTIwLDExMiBAQAogI2VuZGlmCiAKICNpZiBfTElCQ1BQX1NURF9WRVIgPiAxMQorIyBkZWZpbmUgX19jcHBfbGliX2Nocm9ub191ZGxzICAgICAgICAgICAgICAgICAgICAgICAgICAyMDEzMDRMCisjIGRlZmluZSBfX2NwcF9saWJfY29tcGxleF91ZGxzICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTMwOUwKKyMgZGVmaW5lIF9fY3BwX2xpYl9leGNoYW5nZV9mdW5jdGlvbiAgICAgICAgICAgICAgICAgICAgMjAxMzA0TAorIyBkZWZpbmUgX19jcHBfbGliX2dlbmVyaWNfYXNzb2NpYXRpdmVfbG9va3VwICAgICAgICAgICAyMDEzMDRMCisjIGRlZmluZSBfX2NwcF9saWJfaW50ZWdlcl9zZXF1ZW5jZSAgICAgICAgICAgICAgICAgICAgIDIwMTMwNEwKKyMgZGVmaW5lIF9fY3BwX2xpYl9pbnRlZ3JhbF9jb25zdGFudF9jYWxsYWJsZSAgICAgICAgICAgMjAxMzA0TAorIyBkZWZpbmUgX19jcHBfbGliX2lzX2ZpbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE0MDJMCisjIGRlZmluZSBfX2NwcF9saWJfaXNfbnVsbF9wb2ludGVyICAgICAgICAgICAgICAgICAgICAgIDIwMTMwOUwKKyMgZGVmaW5lIF9fY3BwX2xpYl9tYWtlX3JldmVyc2VfaXRlcmF0b3IgICAgICAgICAgICAgICAgMjAxNDAyTAorIyBkZWZpbmUgX19jcHBfbGliX21ha2VfdW5pcXVlICAgICAgICAgICAgICAgICAgICAgICAgICAyMDEzMDRMCisjIGRlZmluZSBfX2NwcF9saWJfbnVsbF9pdGVyYXRvcnMgICAgICAgICAgICAgICAgICAgICAgIDIwMTMwNEwKKyMgZGVmaW5lIF9fY3BwX2xpYl9xdW90ZWRfc3RyaW5nX2lvICAgICAgICAgICAgICAgICAgICAgMjAxMzA0TAorIyBkZWZpbmUgX19jcHBfbGliX3Jlc3VsdF9vZl9zZmluYWUgICAgICAgICAgICAgICAgICAgICAyMDEyMTBMCisjIGRlZmluZSBfX2NwcF9saWJfcm9idXN0X25vbm1vZGlmeWluZ19zZXFfb3BzICAgICAgICAgIDIwMTMwNEwKKyMgaWYgIWRlZmluZWQoX0xJQkNQUF9IQVNfTk9fVEhSRUFEUykKKyMgICBkZWZpbmUgX19jcHBfbGliX3NoYXJlZF90aW1lZF9tdXRleCAgICAgICAgICAgICAgICAgMjAxNDAyTAorIyBlbmRpZgorIyBkZWZpbmUgX19jcHBfbGliX3N0cmluZ191ZGxzICAgICAgICAgICAgICAgICAgICAgICAgICAyMDEzMDRMCisjIGRlZmluZSBfX2NwcF9saWJfdHJhbnNmb3JtYXRpb25fdHJhaXRfYWxpYXNlcyAgICAgICAgIDIwMTMwNEwKKyMgZGVmaW5lIF9fY3BwX2xpYl90cmFuc3BhcmVudF9vcGVyYXRvcnMgICAgICAgICAgICAgICAgMjAxMjEwTAorIyBkZWZpbmUgX19jcHBfbGliX3R1cGxlX2VsZW1lbnRfdCAgICAgICAgICAgICAgICAgICAgICAyMDE0MDJMCisjIGRlZmluZSBfX2NwcF9saWJfdHVwbGVzX2J5X3R5cGUgICAgICAgICAgICAgICAgICAgICAgIDIwMTMwNEwKICNlbmRpZgogCiAjaWYgX0xJQkNQUF9TVERfVkVSID4gMTQKLSMgZGVmaW5lIF9fY3BwX2xpYl9hdG9taWNfaXNfYWx3YXlzX2xvY2tfZnJlZSAgICAgICAgICAgMjAxNjAzTAorIyBpZiAhZGVmaW5lZChfTElCQ1BQX0hBU19OT19CVUlMVElOX0FERFJFU1NPRikKKyMgICBkZWZpbmUgX19jcHBfbGliX2FkZHJlc3NvZl9jb25zdGV4cHIgICAgICAgICAgICAgICAgMjAxNjAzTAorIyBlbmRpZgorIyBkZWZpbmUgX19jcHBfbGliX2FsbG9jYXRvcl90cmFpdHNfaXNfYWx3YXlzX2VxdWFsICAgICAyMDE0MTFMCisjIGRlZmluZSBfX2NwcF9saWJfYW55ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwNkwKKyMgZGVmaW5lIF9fY3BwX2xpYl9hcHBseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjAzTAorIyBkZWZpbmUgX19jcHBfbGliX2FycmF5X2NvbnN0ZXhwciAgICAgICAgICAgICAgICAgICAgICAyMDE2MDNMCisjIGRlZmluZSBfX2NwcF9saWJfYXNfY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTUxMEwKKyMgaWYgIWRlZmluZWQoX0xJQkNQUF9IQVNfTk9fVEhSRUFEUykKKyMgICBkZWZpbmUgX19jcHBfbGliX2F0b21pY19pc19hbHdheXNfbG9ja19mcmVlICAgICAgICAgMjAxNjAzTAorIyBlbmRpZgorIyBkZWZpbmUgX19jcHBfbGliX2Jvb2xfY29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAyMDE1MDVMCisvLyAjIGRlZmluZSBfX2NwcF9saWJfYm95ZXJfbW9vcmVfc2VhcmNoZXIgICAgICAgICAgICAgICAgIDIwMTYwM0wKKyMgZGVmaW5lIF9fY3BwX2xpYl9ieXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjAzTAorIyBkZWZpbmUgX19jcHBfbGliX2Nocm9ubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MTFMCisjIGRlZmluZSBfX2NwcF9saWJfY2xhbXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTYwM0wKKyMgZGVmaW5lIF9fY3BwX2xpYl9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyAgICAgICAgICAgICAgMjAxNjAzTAorLy8gIyBkZWZpbmUgX19jcHBfbGliX2V4ZWN1dGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDNMCiAjIGRlZmluZSBfX2NwcF9saWJfZmlsZXN5c3RlbSAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTcwM0wKKyMgZGVmaW5lIF9fY3BwX2xpYl9nY2RfbGNtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjA2TAorIyBkZWZpbmUgX19jcHBfbGliX2hhcmR3YXJlX2ludGVyZmVyZW5jZV9zaXplICAgICAgICAgICAyMDE3MDNMCisjIGlmIGRlZmluZWQoX0xJQkNQUF9IQVNfVU5JUVVFX09CSkVDVF9SRVBSRVNFTlRBVElPTlMpCisjICAgZGVmaW5lIF9fY3BwX2xpYl9oYXNfdW5pcXVlX29iamVjdF9yZXByZXNlbnRhdGlvbnMgIDIwMTYwNkwKKyMgZW5kaWYKKyMgZGVmaW5lIF9fY3BwX2xpYl9oeXBvdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjAzTAorIyBkZWZpbmUgX19jcHBfbGliX2luY29tcGxldGVfY29udGFpbmVyX2VsZW1lbnRzICAgICAgICAyMDE1MDVMCiAjIGRlZmluZSBfX2NwcF9saWJfaW52b2tlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTQxMUwKKyMgaWYgIWRlZmluZWQoX0xJQkNQUF9IQVNfTk9fSVNfQUdHUkVHQVRFKQorIyAgIGRlZmluZSBfX2NwcF9saWJfaXNfYWdncmVnYXRlICAgICAgICAgICAgICAgICAgICAgICAyMDE3MDNMCisjIGVuZGlmCisjIGRlZmluZSBfX2NwcF9saWJfaXNfaW52b2NhYmxlICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTcwM0wKKyMgZGVmaW5lIF9fY3BwX2xpYl9pc19zd2FwcGFibGUgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjAzTAorIyBkZWZpbmUgX19jcHBfbGliX2xhdW5kZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDZMCisjIGRlZmluZSBfX2NwcF9saWJfbG9naWNhbF90cmFpdHMgICAgICAgICAgICAgICAgICAgICAgIDIwMTUxMEwKKyMgZGVmaW5lIF9fY3BwX2xpYl9tYWtlX2Zyb21fdHVwbGUgICAgICAgICAgICAgICAgICAgICAgMjAxNjA2TAorIyBkZWZpbmUgX19jcHBfbGliX21hcF90cnlfZW1wbGFjZSAgICAgICAgICAgICAgICAgICAgICAyMDE0MTFMCisvLyAjIGRlZmluZSBfX2NwcF9saWJfbWF0aF9zcGVjaWFsX2Z1bmN0aW9ucyAgICAgICAgICAgICAgIDIwMTYwM0wKKy8vICMgZGVmaW5lIF9fY3BwX2xpYl9tZW1vcnlfcmVzb3VyY2UgICAgICAgICAgICAgICAgICAgICAgMjAxNjAzTAorIyBkZWZpbmUgX19jcHBfbGliX25vZGVfZXh0cmFjdCAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDZMCisjIGRlZmluZSBfX2NwcF9saWJfbm9ubWVtYmVyX2NvbnRhaW5lcl9hY2Nlc3MgICAgICAgICAgIDIwMTQxMUwKKyMgZGVmaW5lIF9fY3BwX2xpYl9ub3RfZm4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjAzTAorIyBkZWZpbmUgX19jcHBfbGliX29wdGlvbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDZMCisvLyAjIGRlZmluZSBfX2NwcF9saWJfcGFyYWxsZWxfYWxnb3JpdGhtICAgICAgICAgICAgICAgICAgIDIwMTYwM0wKKyMgZGVmaW5lIF9fY3BwX2xpYl9yYXdfbWVtb3J5X2FsZ29yaXRobXMgICAgICAgICAgICAgICAgMjAxNjA2TAorIyBkZWZpbmUgX19jcHBfbGliX3NhbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MDNMCisjIGRlZmluZSBfX2NwcF9saWJfc2NvcGVkX2xvY2sgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTcwM0wKKyMgaWYgIWRlZmluZWQoX0xJQkNQUF9IQVNfTk9fVEhSRUFEUykKKyMgICBkZWZpbmUgX19jcHBfbGliX3NoYXJlZF9tdXRleCAgICAgICAgICAgICAgICAgICAgICAgMjAxNTA1TAorIyBlbmRpZgorLy8gIyBkZWZpbmUgX19jcHBfbGliX3NoYXJlZF9wdHJfYXJyYXlzICAgICAgICAgICAgICAgICAgICAyMDE2MTFMCisjIGRlZmluZSBfX2NwcF9saWJfc2hhcmVkX3B0cl93ZWFrX3R5cGUgICAgICAgICAgICAgICAgIDIwMTYwNkwKKyMgZGVmaW5lIF9fY3BwX2xpYl9zdHJpbmdfdmlldyAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjA2TAorLy8gIyBkZWZpbmUgX19jcHBfbGliX3RvX2NoYXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE2MTFMCisjIHVuZGVmICBfX2NwcF9saWJfdHJhbnNwYXJlbnRfb3BlcmF0b3JzCisjIGRlZmluZSBfX2NwcF9saWJfdHJhbnNwYXJlbnRfb3BlcmF0b3JzICAgICAgICAgICAgICAgIDIwMTUxMEwKKyMgZGVmaW5lIF9fY3BwX2xpYl90eXBlX3RyYWl0X3ZhcmlhYmxlX3RlbXBsYXRlcyAgICAgICAgMjAxNTEwTAorIyBkZWZpbmUgX19jcHBfbGliX3VuY2F1Z2h0X2V4Y2VwdGlvbnMgICAgICAgICAgICAgICAgICAyMDE0MTFMCisjIGRlZmluZSBfX2NwcF9saWJfdW5vcmRlcmVkX21hcF90cnlfZW1wbGFjZSAgICAgICAgICAgIDIwMTQxMUwKKyMgZGVmaW5lIF9fY3BwX2xpYl92YXJpYW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxNjA2TAogIyBkZWZpbmUgX19jcHBfbGliX3ZvaWRfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE0MTFMCiAjZW5kaWYKIAogI2lmIF9MSUJDUFBfU1REX1ZFUiA+IDE3CisjIGlmICFkZWZpbmVkKF9MSUJDUFBfSEFTX05PX1RIUkVBRFMpCisvLyAjICAgZGVmaW5lIF9fY3BwX2xpYl9hdG9taWNfcmVmICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTgwNkwKKyMgZW5kaWYKKy8vICMgZGVmaW5lIF9fY3BwX2xpYl9iaW5kX2Zyb250ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxODExTAorLy8gIyBkZWZpbmUgX19jcHBfbGliX2JpdF9jYXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE4MDZMCisjIGlmICFkZWZpbmVkKF9MSUJDUFBfTk9fSEFTX0NIQVI4X1QpCisjICAgZGVmaW5lIF9fY3BwX2xpYl9jaGFyOF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTgxMUwKKyMgZW5kaWYKKy8vICMgZGVmaW5lIF9fY3BwX2xpYl9jb25jZXB0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAxODA2TAorLy8gIyBkZWZpbmUgX19jcHBfbGliX2NvbnN0ZXhwcl9taXNjICAgICAgICAgICAgICAgICAgICAgICAyMDE4MTFMCisvLyAjIGRlZmluZSBfX2NwcF9saWJfY29uc3RleHByX3N3YXBfYWxnb3JpdGhtcyAgICAgICAgICAgIDIwMTgwNkwKKy8vICMgZGVmaW5lIF9fY3BwX2xpYl9kZXN0cm95aW5nX2RlbGV0ZSAgICAgICAgICAgICAgICAgICAgMjAxODA2TAorIyBkZWZpbmUgX19jcHBfbGliX2VyYXNlX2lmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDE4MTFMCisvLyAjIGRlZmluZSBfX2NwcF9saWJfZ2VuZXJpY191bm9yZGVyZWRfbG9va3VwICAgICAgICAgICAgIDIwMTgxMUwKKy8vICMgZGVmaW5lIF9fY3BwX2xpYl9pc19jb25zdGFudF9ldmFsdWF0ZWQgICAgICAgICAgICAgICAgMjAxODExTAorLy8gIyBkZWZpbmUgX19jcHBfbGliX2xpc3RfcmVtb3ZlX3JldHVybl90eXBlICAgICAgICAgICAgICAyMDE4MDZMCisvLyAjIGRlZmluZSBfX2NwcF9saWJfcmFuZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTgxMUwKKy8vICMgZGVmaW5lIF9fY3BwX2xpYl90aHJlZV93YXlfY29tcGFyaXNvbiAgICAgICAgICAgICAgICAgMjAxNzExTAogI2VuZGlmCiAKLSNlbmRpZiAgLy8gX0xJQkNQUF9WRVJTSU9OSAorI2VuZGlmIC8vIF9MSUJDUFBfVkVSU0lPTkgKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS93Y2hhci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3djaGFyLmgKaW5kZXggZjc0ZmU2ZC4uMzUzYzk3OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3djaGFyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3djaGFyLmgKQEAgLTEsMTAgKzEsOSBAQAogLy8gLSotIEMrKyAtKi0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHdjaGFyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4KLS8vIFNvdXJjZSBMaWNlbnNlcy4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS93Y3R5cGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2MrKy92MS93Y3R5cGUuaAppbmRleCBmOWM1YTQ3Li5iZGNmMzcyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jKysvdjEvd2N0eXBlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvYysrL3YxL3djdHlwZS5oCkBAIC0xLDEwICsxLDkgQEAKIC8vIC0qLSBDKysgLSotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB3Y3R5cGUuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuCi0vLyBTb3VyY2UgTGljZW5zZXMuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy1jL0J1aWxkU3lzdGVtLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy1jL0J1aWxkU3lzdGVtLmgKaW5kZXggM2NmZWMzOC4uOGYyNmE4NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmctYy9CdWlsZFN5c3RlbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nLWMvQnVpbGRTeXN0ZW0uaApAQCAtMSw5ICsxLDkgQEAKIC8qPT0tLSBjbGFuZy1jL0J1aWxkU3lzdGVtLmggLSBVdGlsaXRpZXMgZm9yIHVzZSBieSBidWlsZCBzeXN0ZW1zIC0qLSBDIC0qLT09PSpcCiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UgICAgICAqfAotfCogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICp8Cit8KiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKnwKK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAogfCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09KnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy1jL0NYQ29tcGlsYXRpb25EYXRhYmFzZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmctYy9DWENvbXBpbGF0aW9uRGF0YWJhc2UuaAppbmRleCA2ZjQ4M2VlLi4yNjY5YzFhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy1jL0NYQ29tcGlsYXRpb25EYXRhYmFzZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nLWMvQ1hDb21waWxhdGlvbkRhdGFiYXNlLmgKQEAgLTEsOSArMSw5IEBACiAvKj09PS0tIGNsYW5nLWMvQ1hDb21waWxhdGlvbkRhdGFiYXNlLmggLSBDb21waWxhdGlvbiBkYXRhYmFzZSAgLS0tKi0gQyAtKi09PT0qXAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlICAgICAgKnwKLXwqIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSAgICAgICAgICAqfAorfCogRXhjZXB0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICp8Cit8KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAqfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKIHwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmctYy9DWEVycm9yQ29kZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmctYy9DWEVycm9yQ29kZS5oCmluZGV4IGNhZWU0OGQuLmZlZDE5NWUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nLWMvQ1hFcnJvckNvZGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy1jL0NYRXJyb3JDb2RlLmgKQEAgLTEsOSArMSw5IEBACiAvKj09PS0tIGNsYW5nLWMvQ1hFcnJvckNvZGUuaCAtIEMgSW5kZXggRXJyb3IgQ29kZXMgIC0tLS0tLS0tLS0tLS0tKi0gQyAtKi09PT0qXAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlICAgICAgKnwKLXwqIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSAgICAgICAgICAqfAorfCogRXhjZXB0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICp8Cit8KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAqfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKIHwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmctYy9DWFN0cmluZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmctYy9DWFN0cmluZy5oCmluZGV4IDc2ZWVkYTEuLjFlYjM0NDIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nLWMvQ1hTdHJpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy1jL0NYU3RyaW5nLmgKQEAgLTEsOSArMSw5IEBACiAvKj09PS0tIGNsYW5nLWMvQ1hTdHJpbmcuaCAtIEMgSW5kZXggc3RyaW5ncyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDIC0qLT09PSpcCiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UgICAgICAqfAotfCogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICp8Cit8KiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKnwKK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAogfCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09KnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy1jL0RvY3VtZW50YXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nLWMvRG9jdW1lbnRhdGlvbi5oCmluZGV4IDU4YzhhZjUuLjRhZjhjOTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nLWMvRG9jdW1lbnRhdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nLWMvRG9jdW1lbnRhdGlvbi5oCkBAIC0xLDkgKzEsOSBAQAogLyo9PS0tIGNsYW5nLWMvRG9jdW1lbnRhdGlvbi5oIC0gVXRpbGl0aWVzIGZvciBjb21tZW50IHByb2Nlc3NpbmcgLSotIEMgLSotPT09KlwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZSAgICAgICp8Ci18KiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gICAgICAgICAgKnwKK3wqIEV4Y2VwdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAqfAorfCogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgKnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CiB8Kj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nLWMvSW5kZXguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nLWMvSW5kZXguaAppbmRleCA1NmI1MTBkLi4zOGFmOGFhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy1jL0luZGV4LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmctYy9JbmRleC5oCkBAIC0xLDkgKzEsOSBAQAogLyo9PT0tLSBjbGFuZy1jL0luZGV4LmggLSBJbmRleGluZyBQdWJsaWMgQyBJbnRlcmZhY2UgLS0tLS0tLS0tLS0tLSotIEMgLSotPT09KlwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZSAgICAgICp8Ci18KiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gICAgICAgICAgKnwKK3wqIEV4Y2VwdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAqfAorfCogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgKnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CiB8Kj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKQEAgLTMyLDcgKzMyLDcgQEAKICAqIGNvbXBhdGlibGUsIHRodXMgQ0lOREVYX1ZFUlNJT05fTUFKT1IgaXMgZXhwZWN0ZWQgdG8gcmVtYWluIHN0YWJsZS4KICAqLwogI2RlZmluZSBDSU5ERVhfVkVSU0lPTl9NQUpPUiAwCi0jZGVmaW5lIENJTkRFWF9WRVJTSU9OX01JTk9SIDUwCisjZGVmaW5lIENJTkRFWF9WRVJTSU9OX01JTk9SIDUxCiAKICNkZWZpbmUgQ0lOREVYX1ZFUlNJT05fRU5DT0RFKG1ham9yLCBtaW5vcikgKCBcCiAgICAgICAoKG1ham9yKSAqIDEwMDAwKSAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMjU4Niw3ICsyNTg2LDggQEAKICAgQ1hDdXJzb3JfT2JqQ1J1bnRpbWVWaXNpYmxlICAgICAgICAgICAgPSA0MzUsCiAgIENYQ3Vyc29yX09iakNCb3hhYmxlICAgICAgICAgICAgICAgICAgID0gNDM2LAogICBDWEN1cnNvcl9GbGFnRW51bSAgICAgICAgICAgICAgICAgICAgICA9IDQzNywKLSAgQ1hDdXJzb3JfTGFzdEF0dHIgICAgICAgICAgICAgICAgICAgICAgPSBDWEN1cnNvcl9GbGFnRW51bSwKKyAgQ1hDdXJzb3JfQ29udmVyZ2VudEF0dHIgICAgICAgICAgICAgICAgPSA0MzgsCisgIENYQ3Vyc29yX0xhc3RBdHRyICAgICAgICAgICAgICAgICAgICAgID0gQ1hDdXJzb3JfQ29udmVyZ2VudEF0dHIsCiAKICAgLyogUHJlcHJvY2Vzc2luZyAqLwogICBDWEN1cnNvcl9QcmVwcm9jZXNzaW5nRGlyZWN0aXZlICAgICAgICA9IDUwMCwKQEAgLTMyOTcsNyArMzI5OCwyMSBAQAogCiAgIENYVHlwZV9PYmpDT2JqZWN0ID0gMTYxLAogICBDWFR5cGVfT2JqQ1R5cGVQYXJhbSA9IDE2MiwKLSAgQ1hUeXBlX0F0dHJpYnV0ZWQgPSAxNjMKKyAgQ1hUeXBlX0F0dHJpYnV0ZWQgPSAxNjMsCisKKyAgQ1hUeXBlX09DTEludGVsU3ViZ3JvdXBBVkNNY2VQYXlsb2FkID0gMTY0LAorICBDWFR5cGVfT0NMSW50ZWxTdWJncm91cEFWQ0ltZVBheWxvYWQgPSAxNjUsCisgIENYVHlwZV9PQ0xJbnRlbFN1Ymdyb3VwQVZDUmVmUGF5bG9hZCA9IDE2NiwKKyAgQ1hUeXBlX09DTEludGVsU3ViZ3JvdXBBVkNTaWNQYXlsb2FkID0gMTY3LAorICBDWFR5cGVfT0NMSW50ZWxTdWJncm91cEFWQ01jZVJlc3VsdCA9IDE2OCwKKyAgQ1hUeXBlX09DTEludGVsU3ViZ3JvdXBBVkNJbWVSZXN1bHQgPSAxNjksCisgIENYVHlwZV9PQ0xJbnRlbFN1Ymdyb3VwQVZDUmVmUmVzdWx0ID0gMTcwLAorICBDWFR5cGVfT0NMSW50ZWxTdWJncm91cEFWQ1NpY1Jlc3VsdCA9IDE3MSwKKyAgQ1hUeXBlX09DTEludGVsU3ViZ3JvdXBBVkNJbWVSZXN1bHRTaW5nbGVSZWZTdHJlYW1vdXQgPSAxNzIsCisgIENYVHlwZV9PQ0xJbnRlbFN1Ymdyb3VwQVZDSW1lUmVzdWx0RHVhbFJlZlN0cmVhbW91dCA9IDE3MywKKyAgQ1hUeXBlX09DTEludGVsU3ViZ3JvdXBBVkNJbWVTaW5nbGVSZWZTdHJlYW1pbiA9IDE3NCwKKworICBDWFR5cGVfT0NMSW50ZWxTdWJncm91cEFWQ0ltZUR1YWxSZWZTdHJlYW1pbiA9IDE3NQogfTsKIAogLyoqCkBAIC0zMzIyLDYgKzMzMzcsNyBAQAogICBDWENhbGxpbmdDb252X1N3aWZ0ID0gMTMsCiAgIENYQ2FsbGluZ0NvbnZfUHJlc2VydmVNb3N0ID0gMTQsCiAgIENYQ2FsbGluZ0NvbnZfUHJlc2VydmVBbGwgPSAxNSwKKyAgQ1hDYWxsaW5nQ29udl9BQXJjaDY0VmVjdG9yQ2FsbCA9IDE2LAogCiAgIENYQ2FsbGluZ0NvbnZfSW52YWxpZCA9IDEwMCwKICAgQ1hDYWxsaW5nQ29udl9VbmV4cG9zZWQgPSAyMDAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nLWMvUGxhdGZvcm0uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nLWMvUGxhdGZvcm0uaAppbmRleCBlMmE0ZGNjLi41Mjg0YjUzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy1jL1BsYXRmb3JtLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmctYy9QbGF0Zm9ybS5oCkBAIC0xLDkgKzEsOSBAQAogLyo9PT0tLSBjbGFuZy1jL1BsYXRmb3JtLmggLSBDIEluZGV4IHBsYXRmb3JtIGRlY2xzICAgLS0tLS0tLS0tLS0tLSotIEMgLSotPT09KlwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZSAgICAgICp8Ci18KiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gICAgICAgICAgKnwKK3wqIEV4Y2VwdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAqfAorfCogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgKnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CiB8Kj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FSQ01pZ3JhdGUvQVJDTVQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FSQ01pZ3JhdGUvQVJDTVQuaAppbmRleCAzMGMyNGYxLi40OWU5NGE5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BUkNNaWdyYXRlL0FSQ01ULmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVJDTWlncmF0ZS9BUkNNVC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBBUkNNVC5oIC0gQVJDIE1pZ3JhdGlvbiBSZXdyaXRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVJDTWlncmF0ZS9BUkNNVEFjdGlvbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FSQ01pZ3JhdGUvQVJDTVRBY3Rpb25zLmgKaW5kZXggMjU3MWNhNy4uNjQxYzI1OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVJDTWlncmF0ZS9BUkNNVEFjdGlvbnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BUkNNaWdyYXRlL0FSQ01UQWN0aW9ucy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQVJDTVRBY3Rpb25zLmggLSBBUkMgTWlncmF0ZSBUb29sIEZyb250ZW5kIEFjdGlvbnMgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVJDTWlncmF0ZS9GaWxlUmVtYXBwZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FSQ01pZ3JhdGUvRmlsZVJlbWFwcGVyLmgKaW5kZXggNzMxMzA3Zi4uNzZiNjViMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVJDTWlncmF0ZS9GaWxlUmVtYXBwZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BUkNNaWdyYXRlL0ZpbGVSZW1hcHBlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBGaWxlUmVtYXBwZXIuaCAtIEZpbGUgUmVtYXBwaW5nIEhlbHBlciAtLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FQVmFsdWUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BUFZhbHVlLmgKaW5kZXggZDQwNTdjOS4uZGU1NTQ2ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FQVmFsdWUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVBWYWx1ZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQVBWYWx1ZS5oIC0gVW5pb24gY2xhc3MgZm9yIEFQRmxvYXQvQVBTSW50L0NvbXBsZXggLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNCw2ICsxMyw3IEBACiAjaWZuZGVmIExMVk1fQ0xBTkdfQVNUX0FQVkFMVUVfSAogI2RlZmluZSBMTFZNX0NMQU5HX0FTVF9BUFZBTFVFX0gKIAorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0ZpeGVkUG9pbnQuaCIKICNpbmNsdWRlICJjbGFuZy9CYXNpYy9MTFZNLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvQVBGbG9hdC5oIgogI2luY2x1ZGUgImxsdm0vQURUL0FQU0ludC5oIgpAQCAtNDMsNiArNDMsNyBAQAogICAgIFVuaW5pdGlhbGl6ZWQsCiAgICAgSW50LAogICAgIEZsb2F0LAorICAgIEZpeGVkUG9pbnQsCiAgICAgQ29tcGxleEludCwKICAgICBDb21wbGV4RmxvYXQsCiAgICAgTFZhbHVlLApAQCAtMTc1LDYgKzE3Niw5IEBACiAgIGV4cGxpY2l0IEFQVmFsdWUoQVBGbG9hdCBGKSA6IEtpbmQoVW5pbml0aWFsaXplZCkgewogICAgIE1ha2VGbG9hdCgpOyBzZXRGbG9hdChzdGQ6Om1vdmUoRikpOwogICB9CisgIGV4cGxpY2l0IEFQVmFsdWUoQVBGaXhlZFBvaW50IEZYKSA6IEtpbmQoVW5pbml0aWFsaXplZCkgeworICAgIE1ha2VGaXhlZFBvaW50KHN0ZDo6bW92ZShGWCkpOworICB9CiAgIGV4cGxpY2l0IEFQVmFsdWUoY29uc3QgQVBWYWx1ZSAqRSwgdW5zaWduZWQgTikgOiBLaW5kKFVuaW5pdGlhbGl6ZWQpIHsKICAgICBNYWtlVmVjdG9yKCk7IHNldFZlY3RvcihFLCBOKTsKICAgfQpAQCAtMjMzLDYgKzIzNyw3IEBACiAgIGJvb2wgaXNVbmluaXQoKSBjb25zdCB7IHJldHVybiBLaW5kID09IFVuaW5pdGlhbGl6ZWQ7IH0KICAgYm9vbCBpc0ludCgpIGNvbnN0IHsgcmV0dXJuIEtpbmQgPT0gSW50OyB9CiAgIGJvb2wgaXNGbG9hdCgpIGNvbnN0IHsgcmV0dXJuIEtpbmQgPT0gRmxvYXQ7IH0KKyAgYm9vbCBpc0ZpeGVkUG9pbnQoKSBjb25zdCB7IHJldHVybiBLaW5kID09IEZpeGVkUG9pbnQ7IH0KICAgYm9vbCBpc0NvbXBsZXhJbnQoKSBjb25zdCB7IHJldHVybiBLaW5kID09IENvbXBsZXhJbnQ7IH0KICAgYm9vbCBpc0NvbXBsZXhGbG9hdCgpIGNvbnN0IHsgcmV0dXJuIEtpbmQgPT0gQ29tcGxleEZsb2F0OyB9CiAgIGJvb2wgaXNMVmFsdWUoKSBjb25zdCB7IHJldHVybiBLaW5kID09IExWYWx1ZTsgfQpAQCAtMjU3LDYgKzI2MiwxMiBAQAogICAgIHJldHVybiBjb25zdF9jYXN0PEFQVmFsdWUqPih0aGlzKS0+Z2V0SW50KCk7CiAgIH0KIAorICAvLy8gVHJ5IHRvIGNvbnZlcnQgdGhpcyB2YWx1ZSB0byBhbiBpbnRlZ3JhbCBjb25zdGFudC4gVGhpcyB3b3JrcyBpZiBpdCdzIGFuCisgIC8vLyBpbnRlZ2VyLCBudWxsIHBvaW50ZXIsIG9yIG9mZnNldCBmcm9tIGEgbnVsbCBwb2ludGVyLiBSZXR1cm5zIHRydWUgb24KKyAgLy8vIHN1Y2Nlc3MuCisgIGJvb2wgdG9JbnRlZ3JhbENvbnN0YW50KEFQU0ludCAmUmVzdWx0LCBRdWFsVHlwZSBTcmNUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVNUQ29udGV4dCAmQ3R4KSBjb25zdDsKKwogICBBUEZsb2F0ICZnZXRGbG9hdCgpIHsKICAgICBhc3NlcnQoaXNGbG9hdCgpICYmICJJbnZhbGlkIGFjY2Vzc29yIik7CiAgICAgcmV0dXJuICooQVBGbG9hdCopKGNoYXIqKURhdGEuYnVmZmVyOwpAQCAtMjY1LDYgKzI3NiwxNCBAQAogICAgIHJldHVybiBjb25zdF9jYXN0PEFQVmFsdWUqPih0aGlzKS0+Z2V0RmxvYXQoKTsKICAgfQogCisgIEFQRml4ZWRQb2ludCAmZ2V0Rml4ZWRQb2ludCgpIHsKKyAgICBhc3NlcnQoaXNGaXhlZFBvaW50KCkgJiYgIkludmFsaWQgYWNjZXNzb3IiKTsKKyAgICByZXR1cm4gKihBUEZpeGVkUG9pbnQgKikoY2hhciAqKURhdGEuYnVmZmVyOworICB9CisgIGNvbnN0IEFQRml4ZWRQb2ludCAmZ2V0Rml4ZWRQb2ludCgpIGNvbnN0IHsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxBUFZhbHVlICo+KHRoaXMpLT5nZXRGaXhlZFBvaW50KCk7CisgIH0KKwogICBBUFNJbnQgJmdldENvbXBsZXhJbnRSZWFsKCkgewogICAgIGFzc2VydChpc0NvbXBsZXhJbnQoKSAmJiAiSW52YWxpZCBhY2Nlc3NvciIpOwogICAgIHJldHVybiAoKENvbXBsZXhBUFNJbnQqKShjaGFyKilEYXRhLmJ1ZmZlciktPlJlYWw7CkBAIC00MDYsNiArNDI1LDEwIEBACiAgICAgYXNzZXJ0KGlzRmxvYXQoKSAmJiAiSW52YWxpZCBhY2Nlc3NvciIpOwogICAgICooQVBGbG9hdCAqKShjaGFyICopRGF0YS5idWZmZXIgPSBzdGQ6Om1vdmUoRik7CiAgIH0KKyAgdm9pZCBzZXRGaXhlZFBvaW50KEFQRml4ZWRQb2ludCBGWCkgeworICAgIGFzc2VydChpc0ZpeGVkUG9pbnQoKSAmJiAiSW52YWxpZCBhY2Nlc3NvciIpOworICAgICooQVBGaXhlZFBvaW50ICopKGNoYXIgKilEYXRhLmJ1ZmZlciA9IHN0ZDo6bW92ZShGWCk7CisgIH0KICAgdm9pZCBzZXRWZWN0b3IoY29uc3QgQVBWYWx1ZSAqRSwgdW5zaWduZWQgTikgewogICAgIGFzc2VydChpc1ZlY3RvcigpICYmICJJbnZhbGlkIGFjY2Vzc29yIik7CiAgICAgKChWZWMqKShjaGFyKilEYXRhLmJ1ZmZlciktPkVsdHMgPSBuZXcgQVBWYWx1ZVtOXTsKQEAgLTQ2NSw2ICs0ODgsMTEgQEAKICAgICBuZXcgKCh2b2lkKikoY2hhciopRGF0YS5idWZmZXIpIEFQRmxvYXQoMC4wKTsKICAgICBLaW5kID0gRmxvYXQ7CiAgIH0KKyAgdm9pZCBNYWtlRml4ZWRQb2ludChBUEZpeGVkUG9pbnQgJiZGWCkgeworICAgIGFzc2VydChpc1VuaW5pdCgpICYmICJCYWQgc3RhdGUgY2hhbmdlIik7CisgICAgbmV3ICgodm9pZCAqKShjaGFyICopRGF0YS5idWZmZXIpIEFQRml4ZWRQb2ludChzdGQ6Om1vdmUoRlgpKTsKKyAgICBLaW5kID0gRml4ZWRQb2ludDsKKyAgfQogICB2b2lkIE1ha2VWZWN0b3IoKSB7CiAgICAgYXNzZXJ0KGlzVW5pbml0KCkgJiYgIkJhZCBzdGF0ZSBjaGFuZ2UiKTsKICAgICBuZXcgKCh2b2lkKikoY2hhciopRGF0YS5idWZmZXIpIFZlYygpOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVC5oCmluZGV4IDZkYjM1MWQuLjZkMGYyNzQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1QuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNULmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBBU1QuaCAtICJVbWJyZWxsYSIgaGVhZGVyIGZvciBBU1QgbGlicmFyeSAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RDb25zdW1lci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVENvbnN1bWVyLmgKaW5kZXggMTE2N2M1Ni4uZGMyMTZhOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVENvbnN1bWVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVENvbnN1bWVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBBU1RDb25zdW1lci5oIC0gQWJzdHJhY3QgaW50ZXJmYWNlIGZvciByZWFkaW5nIEFTVHMgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RDb250ZXh0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNUQ29udGV4dC5oCmluZGV4IDViNjkzZWIuLmZlNTJmODEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RDb250ZXh0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVENvbnRleHQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBBU1RDb250ZXh0LmggLSBDb250ZXh0IHRvIGhvbGQgbG9uZy1saXZlZCBBU1Qgbm9kZXMgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTUsNiArMTQsNyBAQAogI2lmbmRlZiBMTFZNX0NMQU5HX0FTVF9BU1RDT05URVhUX0gKICNkZWZpbmUgTExWTV9DTEFOR19BU1RfQVNUQ09OVEVYVF9ICiAKKyNpbmNsdWRlICJjbGFuZy9BU1QvQVNUQ29udGV4dEFsbG9jYXRlLmgiCiAjaW5jbHVkZSAiY2xhbmcvQVNUL0FTVFR5cGVUcmFpdHMuaCIKICNpbmNsdWRlICJjbGFuZy9BU1QvQ2Fub25pY2FsVHlwZS5oIgogI2luY2x1ZGUgImNsYW5nL0FTVC9Db21tZW50Q29tbWFuZFRyYWl0cy5oIgpAQCAtNTY5LDI2ICs1NjksNiBAQAogICBJbnRydXNpdmVSZWZDbnRQdHI8RXh0ZXJuYWxBU1RTb3VyY2U+IEV4dGVybmFsU291cmNlOwogICBBU1RNdXRhdGlvbkxpc3RlbmVyICpMaXN0ZW5lciA9IG51bGxwdHI7CiAKLSAgLy8vIENvbnRhaW5zIHBhcmVudHMgb2YgYSBub2RlLgotICB1c2luZyBQYXJlbnRWZWN0b3IgPSBsbHZtOjpTbWFsbFZlY3Rvcjxhc3RfdHlwZV90cmFpdHM6OkR5blR5cGVkTm9kZSwgMj47Ci0KLSAgLy8vIE1hcHMgZnJvbSBhIG5vZGUgdG8gaXRzIHBhcmVudHMuIFRoaXMgaXMgdXNlZCBmb3Igbm9kZXMgdGhhdCBoYXZlCi0gIC8vLyBwb2ludGVyIGlkZW50aXR5IG9ubHksIHdoaWNoIGFyZSBtb3JlIGNvbW1vbiBhbmQgd2UgY2FuIHNhdmUgc3BhY2UgYnkKLSAgLy8vIG9ubHkgc3RvcmluZyBhIHVuaXF1ZSBwb2ludGVyIHRvIHRoZW0uCi0gIHVzaW5nIFBhcmVudE1hcFBvaW50ZXJzID0KLSAgICAgIGxsdm06OkRlbnNlTWFwPGNvbnN0IHZvaWQgKiwKLSAgICAgICAgICAgICAgICAgICAgIGxsdm06OlBvaW50ZXJVbmlvbjQ8Y29uc3QgRGVjbCAqLCBjb25zdCBTdG10ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdF90eXBlX3RyYWl0czo6RHluVHlwZWROb2RlICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmVudFZlY3RvciAqPj47Ci0KLSAgLy8vIFBhcmVudCBtYXAgZm9yIG5vZGVzIHdpdGhvdXQgcG9pbnRlciBpZGVudGl0eS4gV2Ugc3RvcmUgYSBmdWxsCi0gIC8vLyBEeW5UeXBlZE5vZGUgZm9yIGFsbCBrZXlzLgotICB1c2luZyBQYXJlbnRNYXBPdGhlck5vZGVzID0KLSAgICAgIGxsdm06OkRlbnNlTWFwPGFzdF90eXBlX3RyYWl0czo6RHluVHlwZWROb2RlLAotICAgICAgICAgICAgICAgICAgICAgbGx2bTo6UG9pbnRlclVuaW9uNDxjb25zdCBEZWNsICosIGNvbnN0IFN0bXQgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0X3R5cGVfdHJhaXRzOjpEeW5UeXBlZE5vZGUgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyZW50VmVjdG9yICo+PjsKLQogICAvLy8gQ29udGFpbmVyIGZvciBlaXRoZXIgYSBzaW5nbGUgRHluVHlwZWROb2RlIG9yIGZvciBhbiBBcnJheVJlZiB0bwogICAvLy8gRHluVHlwZWROb2RlLiBGb3IgdXNlIHdpdGggUGFyZW50TWFwLgogICBjbGFzcyBEeW5UeXBlZE5vZGVMaXN0IHsKQEAgLTYzMCw3ICs2MTAsMTcgQEAKICAgICB9CiAgIH07CiAKLSAgLy8vIFJldHVybnMgdGhlIHBhcmVudHMgb2YgdGhlIGdpdmVuIG5vZGUuCisgIC8vIEEgdHJhdmVyc2FsIHNjb3BlIGxpbWl0cyB0aGUgcGFydHMgb2YgdGhlIEFTVCB2aXNpYmxlIHRvIGNlcnRhaW4gYW5hbHlzZXMuCisgIC8vIFJlY3Vyc2l2ZUFTVFZpc2l0b3I6OlRyYXZlcnNlQVNUIHdpbGwgb25seSB2aXNpdCByZWFjaGFibGUgbm9kZXMsIGFuZAorICAvLyBnZXRQYXJlbnRzKCkgd2lsbCBvbmx5IG9ic2VydmUgcmVhY2hhYmxlIHBhcmVudCBlZGdlcy4KKyAgLy8KKyAgLy8gVGhlIHNjb3BlIGlzIGRlZmluZWQgYnkgYSBzZXQgb2YgInRvcC1sZXZlbCIgZGVjbGFyYXRpb25zLgorICAvLyBJbml0aWFsbHksIGl0IGlzIHRoZSBlbnRpcmUgVFU6IHtnZXRUcmFuc2xhdGlvblVuaXREZWNsKCl9LgorICAvLyBDaGFuZ2luZyB0aGUgc2NvcGUgY2xlYXJzIHRoZSBwYXJlbnQgY2FjaGUsIHdoaWNoIGlzIGV4cGVuc2l2ZSB0byByZWJ1aWxkLgorICBzdGQ6OnZlY3RvcjxEZWNsICo+IGdldFRyYXZlcnNhbFNjb3BlKCkgY29uc3QgeyByZXR1cm4gVHJhdmVyc2FsU2NvcGU7IH0KKyAgdm9pZCBzZXRUcmF2ZXJzYWxTY29wZShjb25zdCBzdGQ6OnZlY3RvcjxEZWNsICo+ICYpOworCisgIC8vLyBSZXR1cm5zIHRoZSBwYXJlbnRzIG9mIHRoZSBnaXZlbiBub2RlICh3aXRoaW4gdGhlIHRyYXZlcnNhbCBzY29wZSkuCiAgIC8vLwogICAvLy8gTm90ZSB0aGF0IHRoaXMgd2lsbCBsYXppbHkgY29tcHV0ZSB0aGUgcGFyZW50cyBvZiBhbGwgbm9kZXMKICAgLy8vIGFuZCBzdG9yZSB0aGVtIGZvciBsYXRlciByZXRyaWV2YWwuIFRodXMsIHRoZSBmaXJzdCBjYWxsIGlzIE8obikKQEAgLTEwNjIsNiArMTA1Miw5IEBACiAgIENhblF1YWxUeXBlIE9DTFNhbXBsZXJUeSwgT0NMRXZlbnRUeSwgT0NMQ2xrRXZlbnRUeTsKICAgQ2FuUXVhbFR5cGUgT0NMUXVldWVUeSwgT0NMUmVzZXJ2ZUlEVHk7CiAgIENhblF1YWxUeXBlIE9NUEFycmF5U2VjdGlvblR5OworI2RlZmluZSBFWFRfT1BBUVVFX1RZUEUoRXh0VHlwZSwgSWQsIEV4dCkgXAorICBDYW5RdWFsVHlwZSBJZCMjVHk7CisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvT3BlbkNMRXh0ZW5zaW9uVHlwZXMuZGVmIgogCiAgIC8vIFR5cGVzIGZvciBkZWR1Y3Rpb25zIGluIEMrKzB4IFtzdG10LnJhbmdlZF0ncyBkZXN1Z2FyaW5nLiBCdWlsdCBvbiBkZW1hbmQuCiAgIG11dGFibGUgUXVhbFR5cGUgQXV0b0RlZHVjdFR5OyAgICAgLy8gRGVkdWN0aW9uIGFnYWluc3QgJ2F1dG8nLgpAQCAtMjAwOSw2ICsyMDAyLDkgQEAKICAgICAvLy8gTm8gZXJyb3IKICAgICBHRV9Ob25lLAogCisgICAgLy8vIE1pc3NpbmcgYSB0eXBlCisgICAgR0VfTWlzc2luZ190eXBlLAorCiAgICAgLy8vIE1pc3NpbmcgYSB0eXBlIGZyb20gPHN0ZGlvLmg+CiAgICAgR0VfTWlzc2luZ19zdGRpbywKIApAQCAtMjA5Miw2ICsyMDg4LDE2IEBACiAgIENoYXJVbml0cyBnZXRUeXBlU2l6ZUluQ2hhcnMoUXVhbFR5cGUgVCkgY29uc3Q7CiAgIENoYXJVbml0cyBnZXRUeXBlU2l6ZUluQ2hhcnMoY29uc3QgVHlwZSAqVCkgY29uc3Q7CiAKKyAgT3B0aW9uYWw8Q2hhclVuaXRzPiBnZXRUeXBlU2l6ZUluQ2hhcnNJZktub3duKFF1YWxUeXBlIFR5KSBjb25zdCB7CisgICAgaWYgKFR5LT5pc0luY29tcGxldGVUeXBlKCkgfHwgVHktPmlzRGVwZW5kZW50VHlwZSgpKQorICAgICAgcmV0dXJuIE5vbmU7CisgICAgcmV0dXJuIGdldFR5cGVTaXplSW5DaGFycyhUeSk7CisgIH0KKworICBPcHRpb25hbDxDaGFyVW5pdHM+IGdldFR5cGVTaXplSW5DaGFyc0lmS25vd24oY29uc3QgVHlwZSAqVHkpIGNvbnN0IHsKKyAgICByZXR1cm4gZ2V0VHlwZVNpemVJbkNoYXJzSWZLbm93bihRdWFsVHlwZShUeSwgMCkpOworICB9CisKICAgLy8vIFJldHVybiB0aGUgQUJJLXNwZWNpZmllZCBhbGlnbm1lbnQgb2YgYSAoY29tcGxldGUpIHR5cGUgXHAgVCwgaW4KICAgLy8vIGJpdHMuCiAgIHVuc2lnbmVkIGdldFR5cGVBbGlnbihRdWFsVHlwZSBUKSBjb25zdCB7IHJldHVybiBnZXRUeXBlSW5mbyhUKS5BbGlnbjsgfQpAQCAtMjYzMCw2ICsyNjM2LDEyIEBACiAgIC8vIGNvcnJlc3BvbmRpbmcgc2F0dXJhdGVkIHR5cGUgZm9yIGEgZ2l2ZW4gZml4ZWQgcG9pbnQgdHlwZS4KICAgUXVhbFR5cGUgZ2V0Q29ycmVzcG9uZGluZ1NhdHVyYXRlZFR5cGUoUXVhbFR5cGUgVHkpIGNvbnN0OwogCisgIC8vIFRoaXMgbWV0aG9kIGFjY2VwdHMgZml4ZWQgcG9pbnQgdHlwZXMgYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgc2lnbmVkCisgIC8vIHR5cGUuIFVubGlrZSBnZXRDb3JyZXNwb25kaW5nVW5zaWduZWRUeXBlKCksIHRoaXMgb25seSBhY2NlcHRzIHVuc2lnbmVkCisgIC8vIGZpeGVkIHBvaW50IHR5cGVzIGJlY2F1c2UgdGhlcmUgYXJlIHVuc2lnbmVkIGludGVnZXIgdHlwZXMgbGlrZSBib29sIGFuZAorICAvLyBjaGFyOF90IHRoYXQgZG9uJ3QgaGF2ZSBzaWduZWQgZXF1aXZhbGVudHMuCisgIFF1YWxUeXBlIGdldENvcnJlc3BvbmRpbmdTaWduZWRGaXhlZFBvaW50VHlwZShRdWFsVHlwZSBUeSkgY29uc3Q7CisKICAgLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAgIC8vICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyIFZhbHVlcwogICAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KQEAgLTI5MjEsMTMgKzI5MzMsMTMgQEAKICAgLy8gYnV0IHdlIGluY2x1ZGUgaXQgaGVyZSBzbyB0aGF0IEFTVENvbnRleHQgY2FuIHF1aWNrbHkgZGVhbGxvY2F0ZSB0aGVtLgogICBsbHZtOjpQb2ludGVySW50UGFpcjxTdG9yZWREZWNsc01hcCAqLCAxPiBMYXN0U0RNOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxQYXJlbnRNYXBQb2ludGVycz4gUG9pbnRlclBhcmVudHM7Ci0gIHN0ZDo6dW5pcXVlX3B0cjxQYXJlbnRNYXBPdGhlck5vZGVzPiBPdGhlclBhcmVudHM7CisgIHN0ZDo6dmVjdG9yPERlY2wgKj4gVHJhdmVyc2FsU2NvcGU7CisgIGNsYXNzIFBhcmVudE1hcDsKKyAgc3RkOjp1bmlxdWVfcHRyPFBhcmVudE1hcD4gUGFyZW50czsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8VlRhYmxlQ29udGV4dEJhc2U+IFZUQ29udGV4dDsKIAogICB2b2lkIFJlbGVhc2VEZWNsQ29udGV4dE1hcHMoKTsKLSAgdm9pZCBSZWxlYXNlUGFyZW50TWFwRW50cmllcygpOwogCiBwdWJsaWM6CiAgIGVudW0gUHJhZ21hU2VjdGlvbkZsYWcgOiB1bnNpZ25lZCB7CkBAIC0yOTc2LDggKzI5ODgsOCBAQAogLy8vIFRoaXMgcGxhY2VtZW50IGZvcm0gb2Ygb3BlcmF0b3IgbmV3IHVzZXMgdGhlIEFTVENvbnRleHQncyBhbGxvY2F0b3IgZm9yCiAvLy8gb2J0YWluaW5nIG1lbW9yeS4KIC8vLwotLy8vIElNUE9SVEFOVDogVGhlc2UgYXJlIGFsc28gZGVjbGFyZWQgaW4gY2xhbmcvQVNUL0F0dHJJdGVyYXRvci5oISBBbnkgY2hhbmdlcwotLy8vIGhlcmUgbmVlZCB0byBhbHNvIGJlIG1hZGUgdGhlcmUuCisvLy8gSU1QT1JUQU5UOiBUaGVzZSBhcmUgYWxzbyBkZWNsYXJlZCBpbiBjbGFuZy9BU1QvQVNUQ29udGV4dEFsbG9jYXRlLmghCisvLy8gQW55IGNoYW5nZXMgaGVyZSBuZWVkIHRvIGFsc28gYmUgbWFkZSB0aGVyZS4KIC8vLwogLy8vIFdlIGludGVudGlvbmFsbHkgYXZvaWQgdXNpbmcgYSBub3Rocm93IHNwZWNpZmljYXRpb24gaGVyZSBzbyB0aGF0IHRoZSBjYWxscwogLy8vIHRvIHRoaXMgb3BlcmF0b3Igd2lsbCBub3QgcGVyZm9ybSBhIG51bGwgY2hlY2sgb24gdGhlIHJlc3VsdCAtLSB0aGUKQEAgLTMwMDAsNyArMzAxMiw3IEBACiAvLy8gICAgICAgICAgICAgICAgICBhbGxvY2F0b3Igc3VwcG9ydHMgaXQpLgogLy8vIEByZXR1cm4gVGhlIGFsbG9jYXRlZCBtZW1vcnkuIENvdWxkIGJlIG51bGxwdHIuCiBpbmxpbmUgdm9pZCAqb3BlcmF0b3IgbmV3KHNpemVfdCBCeXRlcywgY29uc3QgY2xhbmc6OkFTVENvbnRleHQgJkMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBBbGlnbm1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IEFsaWdubWVudCAvKiA9IDggKi8pIHsKICAgcmV0dXJuIEMuQWxsb2NhdGUoQnl0ZXMsIEFsaWdubWVudCk7CiB9CiAKQEAgLTMwMzgsNyArMzA1MCw3IEBACiAvLy8gICAgICAgICAgICAgICAgICBhbGxvY2F0b3Igc3VwcG9ydHMgaXQpLgogLy8vIEByZXR1cm4gVGhlIGFsbG9jYXRlZCBtZW1vcnkuIENvdWxkIGJlIG51bGxwdHIuCiBpbmxpbmUgdm9pZCAqb3BlcmF0b3IgbmV3W10oc2l6ZV90IEJ5dGVzLCBjb25zdCBjbGFuZzo6QVNUQ29udGV4dCYgQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgQWxpZ25tZW50ID0gOCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBBbGlnbm1lbnQgLyogPSA4ICovKSB7CiAgIHJldHVybiBDLkFsbG9jYXRlKEJ5dGVzLCBBbGlnbm1lbnQpOwogfQogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNUQ29udGV4dEFsbG9jYXRlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNUQ29udGV4dEFsbG9jYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBjOGUyNAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RDb250ZXh0QWxsb2NhdGUuaApAQCAtMCwwICsxLDM3IEBACisvLz09PS0gQVNUQ29udGV4dEFsbG9jYXRlLmggLSBBU1RDb250ZXh0IGFsbG9jYXRlIGZ1bmN0aW9ucyAtLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vICBUaGlzIGZpbGUgZGVjbGFyZXMgQVNUQ29udGV4dCBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBzZXBhcmF0ZSBmcm9tIHRoZSBtYWluCisvLyAgY29kZSBpbiBBU1RDb250ZXh0LmguCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0NMQU5HX0FTVF9BU1RDT05URVhUQUxMT0NBVEVfSAorI2RlZmluZSBMTFZNX0NMQU5HX0FTVF9BU1RDT05URVhUQUxMT0NBVEVfSAorCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKworbmFtZXNwYWNlIGNsYW5nIHsKKworY2xhc3MgQVNUQ29udGV4dDsKKworfSAvLyBuYW1lc3BhY2UgY2xhbmcKKworLy8gRGVmaW5lZCBpbiBBU1RDb250ZXh0LmgKK3ZvaWQgKm9wZXJhdG9yIG5ldyhzaXplX3QgQnl0ZXMsIGNvbnN0IGNsYW5nOjpBU1RDb250ZXh0ICZDLAorICAgICAgICAgICAgICAgICAgIHNpemVfdCBBbGlnbm1lbnQgPSA4KTsKK3ZvaWQgKm9wZXJhdG9yIG5ld1tdKHNpemVfdCBCeXRlcywgY29uc3QgY2xhbmc6OkFTVENvbnRleHQgJkMsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgQWxpZ25tZW50ID0gOCk7CisKKy8vIEl0IGlzIGdvb2QgcHJhY3RpY2UgdG8gcGFpciBuZXcvZGVsZXRlIG9wZXJhdG9ycy4gIEFsc28sIE1TVkMgZ2l2ZXMgbWFueQorLy8gd2FybmluZ3MgaWYgYSBtYXRjaGluZyBkZWxldGUgb3ZlcmxvYWQgaXMgbm90IGRlY2xhcmVkLCBldmVuIHRob3VnaCB0aGUKKy8vIHRocm93KCkgc3BlYyBndWFyYW50ZWVzIGl0IHdpbGwgbm90IGJlIGltcGxpY2l0bHkgY2FsbGVkLgordm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCAqUHRyLCBjb25zdCBjbGFuZzo6QVNUQ29udGV4dCAmQywgc2l6ZV90KTsKK3ZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCAqUHRyLCBjb25zdCBjbGFuZzo6QVNUQ29udGV4dCAmQywgc2l6ZV90KTsKKworI2VuZGlmIC8vIExMVk1fQ0xBTkdfQVNUX0FTVENPTlRFWFRBTExPQ0FURV9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNURGlhZ25vc3RpYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVERpYWdub3N0aWMuaAppbmRleCAyNTM0MjcyLi5kNjU0OWUxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNURGlhZ25vc3RpYy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1REaWFnbm9zdGljLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBBU1REaWFnbm9zdGljLmggLSBEaWFnbm9zdGljcyBmb3IgdGhlIEFTVCBsaWJyYXJ5IC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xMSwxOSArMTAsOSBAQAogI2RlZmluZSBMTFZNX0NMQU5HX0FTVF9BU1RESUFHTk9TVElDX0gKIAogI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWMuaCIKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljQVNULmgiCiAKIG5hbWVzcGFjZSBjbGFuZyB7Ci0gIG5hbWVzcGFjZSBkaWFnIHsKLSAgICBlbnVtIHsKLSNkZWZpbmUgRElBRyhFTlVNLEZMQUdTLERFRkFVTFRfTUFQUElORyxERVNDLEdST1VQLFwKLSAgICAgICAgICAgICBTRklOQUUsTk9XRVJST1IsU0hPV0lOU1lTSEVBREVSLENBVEVHT1JZKSBFTlVNLAotI2RlZmluZSBBU1RTVEFSVAotI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNBU1RLaW5kcy5pbmMiCi0jdW5kZWYgRElBRwotICAgICAgTlVNX0JVSUxUSU5fQVNUX0RJQUdOT1NUSUNTCi0gICAgfTsKLSAgfSAgLy8gZW5kIG5hbWVzcGFjZSBkaWFnCi0KICAgLy8vIERpYWdub3N0aWNzRW5naW5lIGFyZ3VtZW50IGZvcm1hdHRpbmcgZnVuY3Rpb24gZm9yIGRpYWdub3N0aWNzIHRoYXQKICAgLy8vIGludm9sdmUgQVNUIG5vZGVzLgogICAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1REdW1wZXJVdGlscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVER1bXBlclV0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UyNjNkZgotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1REdW1wZXJVdGlscy5oCkBAIC0wLDAgKzEsOTYgQEAKKy8vPT09LS0tIEFTVER1bXBlclV0aWxzLmggLSBQcmludGluZyBvZiBBU1Qgbm9kZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgQVNUIHV0aWxpdGllcyBmb3IgdHJhdmVyc2FsIGRvd24gdGhlIHRyZWUuCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0NMQU5HX0FTVF9BU1REVU1QRVJVVElMU19ICisjZGVmaW5lIExMVk1fQ0xBTkdfQVNUX0FTVERVTVBFUlVUSUxTX0gKKworI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9yYXdfb3N0cmVhbS5oIgorCituYW1lc3BhY2UgY2xhbmcgeworCisvLyBDb2xvcnMgdXNlZCBmb3IgdmFyaW91cyBwYXJ0cyBvZiB0aGUgQVNUIGR1bXAKKy8vIERvIG5vdCB1c2UgYm9sZCB5ZWxsb3cgZm9yIGFueSB0ZXh0LiAgSXQgaXMgaGFyZCB0byByZWFkIG9uIHdoaXRlIHNjcmVlbnMuCisKK3N0cnVjdCBUZXJtaW5hbENvbG9yIHsKKyAgbGx2bTo6cmF3X29zdHJlYW06OkNvbG9ycyBDb2xvcjsKKyAgYm9vbCBCb2xkOworfTsKKworLy8gUmVkICAgICAgICAgICAtIENhc3RDb2xvcgorLy8gR3JlZW4gICAgICAgICAtIFR5cGVDb2xvcgorLy8gQm9sZCBHcmVlbiAgICAtIERlY2xLaW5kTmFtZUNvbG9yLCBVbmRlc2VyaWFsaXplZENvbG9yCisvLyBZZWxsb3cgICAgICAgIC0gQWRkcmVzc0NvbG9yLCBMb2NhdGlvbkNvbG9yCisvLyBCbHVlICAgICAgICAgIC0gQ29tbWVudENvbG9yLCBOdWxsQ29sb3IsIEluZGVudENvbG9yCisvLyBCb2xkIEJsdWUgICAgIC0gQXR0ckNvbG9yCisvLyBCb2xkIE1hZ2VudGEgIC0gU3RtdENvbG9yCisvLyBDeWFuICAgICAgICAgIC0gVmFsdWVLaW5kQ29sb3IsIE9iamVjdEtpbmRDb2xvcgorLy8gQm9sZCBDeWFuICAgICAtIFZhbHVlQ29sb3IsIERlY2xOYW1lQ29sb3IKKworLy8gRGVjbCBraW5kIG5hbWVzIChWYXJEZWNsLCBGdW5jdGlvbkRlY2wsIGV0YykKK3N0YXRpYyBjb25zdCBUZXJtaW5hbENvbG9yIERlY2xLaW5kTmFtZUNvbG9yID0ge2xsdm06OnJhd19vc3RyZWFtOjpHUkVFTiwgdHJ1ZX07CisvLyBBdHRyIG5hbWVzIChDbGVhbnVwQXR0ciwgR3VhcmRlZEJ5QXR0ciwgZXRjKQorc3RhdGljIGNvbnN0IFRlcm1pbmFsQ29sb3IgQXR0ckNvbG9yID0ge2xsdm06OnJhd19vc3RyZWFtOjpCTFVFLCB0cnVlfTsKKy8vIFN0YXRlbWVudCBuYW1lcyAoRGVjbFN0bXQsIEltcGxpY2l0Q2FzdEV4cHIsIGV0YykKK3N0YXRpYyBjb25zdCBUZXJtaW5hbENvbG9yIFN0bXRDb2xvciA9IHtsbHZtOjpyYXdfb3N0cmVhbTo6TUFHRU5UQSwgdHJ1ZX07CisvLyBDb21tZW50IG5hbWVzIChGdWxsQ29tbWVudCwgUGFyYWdyYXBoQ29tbWVudCwgVGV4dENvbW1lbnQsIGV0YykKK3N0YXRpYyBjb25zdCBUZXJtaW5hbENvbG9yIENvbW1lbnRDb2xvciA9IHtsbHZtOjpyYXdfb3N0cmVhbTo6QkxVRSwgZmFsc2V9OworCisvLyBUeXBlIG5hbWVzIChpbnQsIGZsb2F0LCBldGMsIHBsdXMgdXNlciBkZWZpbmVkIHR5cGVzKQorc3RhdGljIGNvbnN0IFRlcm1pbmFsQ29sb3IgVHlwZUNvbG9yID0ge2xsdm06OnJhd19vc3RyZWFtOjpHUkVFTiwgZmFsc2V9OworCisvLyBQb2ludGVyIGFkZHJlc3MKK3N0YXRpYyBjb25zdCBUZXJtaW5hbENvbG9yIEFkZHJlc3NDb2xvciA9IHtsbHZtOjpyYXdfb3N0cmVhbTo6WUVMTE9XLCBmYWxzZX07CisvLyBTb3VyY2UgbG9jYXRpb25zCitzdGF0aWMgY29uc3QgVGVybWluYWxDb2xvciBMb2NhdGlvbkNvbG9yID0ge2xsdm06OnJhd19vc3RyZWFtOjpZRUxMT1csIGZhbHNlfTsKKworLy8gbHZhbHVlL3h2YWx1ZQorc3RhdGljIGNvbnN0IFRlcm1pbmFsQ29sb3IgVmFsdWVLaW5kQ29sb3IgPSB7bGx2bTo6cmF3X29zdHJlYW06OkNZQU4sIGZhbHNlfTsKKy8vIGJpdGZpZWxkL29iamNwcm9wZXJ0eS9vYmpjc3Vic2NyaXB0L3ZlY3RvcmNvbXBvbmVudAorc3RhdGljIGNvbnN0IFRlcm1pbmFsQ29sb3IgT2JqZWN0S2luZENvbG9yID0ge2xsdm06OnJhd19vc3RyZWFtOjpDWUFOLCBmYWxzZX07CisKKy8vIE51bGwgc3RhdGVtZW50cworc3RhdGljIGNvbnN0IFRlcm1pbmFsQ29sb3IgTnVsbENvbG9yID0ge2xsdm06OnJhd19vc3RyZWFtOjpCTFVFLCBmYWxzZX07CisKKy8vIFVuZGVzZXJpYWxpemVkIGVudGl0aWVzCitzdGF0aWMgY29uc3QgVGVybWluYWxDb2xvciBVbmRlc2VyaWFsaXplZENvbG9yID0ge2xsdm06OnJhd19vc3RyZWFtOjpHUkVFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZX07CisKKy8vIENhc3RLaW5kIGZyb20gQ2FzdEV4cHIncworc3RhdGljIGNvbnN0IFRlcm1pbmFsQ29sb3IgQ2FzdENvbG9yID0ge2xsdm06OnJhd19vc3RyZWFtOjpSRUQsIGZhbHNlfTsKKworLy8gVmFsdWUgb2YgdGhlIHN0YXRlbWVudAorc3RhdGljIGNvbnN0IFRlcm1pbmFsQ29sb3IgVmFsdWVDb2xvciA9IHtsbHZtOjpyYXdfb3N0cmVhbTo6Q1lBTiwgdHJ1ZX07CisvLyBEZWNsIG5hbWVzCitzdGF0aWMgY29uc3QgVGVybWluYWxDb2xvciBEZWNsTmFtZUNvbG9yID0ge2xsdm06OnJhd19vc3RyZWFtOjpDWUFOLCB0cnVlfTsKKworLy8gSW5kZW50cyAoIGAsIC0uIHwgKQorc3RhdGljIGNvbnN0IFRlcm1pbmFsQ29sb3IgSW5kZW50Q29sb3IgPSB7bGx2bTo6cmF3X29zdHJlYW06OkJMVUUsIGZhbHNlfTsKKworY2xhc3MgQ29sb3JTY29wZSB7CisgIGxsdm06OnJhd19vc3RyZWFtICZPUzsKKyAgY29uc3QgYm9vbCBTaG93Q29sb3JzOworCitwdWJsaWM6CisgIENvbG9yU2NvcGUobGx2bTo6cmF3X29zdHJlYW0gJk9TLCBib29sIFNob3dDb2xvcnMsIFRlcm1pbmFsQ29sb3IgQ29sb3IpCisgICAgICA6IE9TKE9TKSwgU2hvd0NvbG9ycyhTaG93Q29sb3JzKSB7CisgICAgaWYgKFNob3dDb2xvcnMpCisgICAgICBPUy5jaGFuZ2VDb2xvcihDb2xvci5Db2xvciwgQ29sb3IuQm9sZCk7CisgIH0KKyAgfkNvbG9yU2NvcGUoKSB7CisgICAgaWYgKFNob3dDb2xvcnMpCisgICAgICBPUy5yZXNldENvbG9yKCk7CisgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIGNsYW5nCisKKyNlbmRpZiAvLyBMTFZNX0NMQU5HX0FTVF9BU1REVU1QRVJVVElMU19ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNURndkLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNURndkLmgKaW5kZXggMDM4ZDVjMy4uOTM5MTliYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVEZ3ZC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RGd2QuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEFTVEZ3ZC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RJbXBvcnRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVEltcG9ydGVyLmgKaW5kZXggMzExZDY0ZS4uZGQ4NzJiMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVEltcG9ydGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVEltcG9ydGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQVNUSW1wb3J0ZXIuaCAtIEltcG9ydGluZyBBU1RzIGZyb20gb3RoZXIgQ29udGV4dHMgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI1LDEyICsyNCwxNSBAQAogI2luY2x1ZGUgImNsYW5nL0Jhc2ljL1NvdXJjZUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvRGVuc2VNYXAuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9EZW5zZVNldC5oIgorI2luY2x1ZGUgImxsdm0vQURUL09wdGlvbmFsLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvU21hbGxWZWN0b3IuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvRXJyb3IuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgogCiBuYW1lc3BhY2UgY2xhbmcgewogCiBjbGFzcyBBU1RDb250ZXh0OworY2xhc3MgQVNUSW1wb3J0ZXJMb29rdXBUYWJsZTsKIGNsYXNzIENYWEJhc2VTcGVjaWZpZXI7CiBjbGFzcyBDWFhDdG9ySW5pdGlhbGl6ZXI7CiBjbGFzcyBEZWNsOwpAQCAtNDMsNiArNDUsMjkgQEAKIGNsYXNzIFR5cGVTb3VyY2VJbmZvOwogY2xhc3MgQXR0cjsKIAorICBjbGFzcyBJbXBvcnRFcnJvciA6IHB1YmxpYyBsbHZtOjpFcnJvckluZm88SW1wb3J0RXJyb3I+IHsKKyAgcHVibGljOgorICAgIC8vLyBcYnJpZWYgS2luZCBvZiBlcnJvciB3aGVuIGltcG9ydGluZyBhbiBBU1QgY29tcG9uZW50LgorICAgIGVudW0gRXJyb3JLaW5kIHsKKyAgICAgICAgTmFtZUNvbmZsaWN0LCAvLy8gTmFtaW5nIGFtYmlndWl0eSAobGlrZWx5IE9EUiB2aW9sYXRpb24pLgorICAgICAgICBVbnN1cHBvcnRlZENvbnN0cnVjdCwgLy8vIE5vdCBzdXBwb3J0ZWQgbm9kZSBvciBjYXNlLgorICAgICAgICBVbmtub3duIC8vLyBPdGhlciBlcnJvci4KKyAgICB9OworCisgICAgRXJyb3JLaW5kIEVycm9yOworCisgICAgc3RhdGljIGNoYXIgSUQ7CisKKyAgICBJbXBvcnRFcnJvcigpIDogRXJyb3IoVW5rbm93bikgeyB9CisgICAgSW1wb3J0RXJyb3IoY29uc3QgSW1wb3J0RXJyb3IgJk90aGVyKSA6IEVycm9yKE90aGVyLkVycm9yKSB7IH0KKyAgICBJbXBvcnRFcnJvcihFcnJvcktpbmQgRXJyb3IpIDogRXJyb3IoRXJyb3IpIHsgfQorCisgICAgc3RkOjpzdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKworICAgIHZvaWQgbG9nKHJhd19vc3RyZWFtICZPUykgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjplcnJvcl9jb2RlIGNvbnZlcnRUb0Vycm9yQ29kZSgpIGNvbnN0IG92ZXJyaWRlOworICB9OworCiAgIC8vIFxicmllZiBSZXR1cm5zIHdpdGggYSBsaXN0IG9mIGRlY2xhcmF0aW9ucyBzdGFydGVkIGZyb20gdGhlIGNhbm9uaWNhbCBkZWNsCiAgIC8vIHRoZW4gZm9sbG93ZWQgYnkgc3Vic2VxdWVudCBkZWNscyBpbiB0aGUgdHJhbnNsYXRpb24gdW5pdC4KICAgLy8gVGhpcyBnaXZlcyBhIGNhbm9uaWNhbCBsaXN0IGZvciBlYWNoIGVudHJ5IGluIHRoZSByZWRlY2wgY2hhaW4uCkBAIC01NSwxMiArODAsMjEgQEAKICAgLy8vIEltcG9ydHMgc2VsZWN0ZWQgbm9kZXMgZnJvbSBvbmUgQVNUIGNvbnRleHQgaW50byBhbm90aGVyIGNvbnRleHQsCiAgIC8vLyBtZXJnaW5nIEFTVCBub2RlcyB3aGVyZSBhcHByb3ByaWF0ZS4KICAgY2xhc3MgQVNUSW1wb3J0ZXIgeworICAgIGZyaWVuZCBjbGFzcyBBU1ROb2RlSW1wb3J0ZXI7CiAgIHB1YmxpYzoKICAgICB1c2luZyBOb25FcXVpdmFsZW50RGVjbFNldCA9IGxsdm06OkRlbnNlU2V0PHN0ZDo6cGFpcjxEZWNsICosIERlY2wgKj4+OwogICAgIHVzaW5nIEltcG9ydGVkQ1hYQmFzZVNwZWNpZmllck1hcCA9CiAgICAgICAgIGxsdm06OkRlbnNlTWFwPGNvbnN0IENYWEJhc2VTcGVjaWZpZXIgKiwgQ1hYQmFzZVNwZWNpZmllciAqPjsKIAogICBwcml2YXRlOgorCisgICAgLy8vIFBvaW50ZXIgdG8gdGhlIGltcG9ydCBzcGVjaWZpYyBsb29rdXAgdGFibGUsIHdoaWNoIG1heSBiZSBzaGFyZWQKKyAgICAvLy8gYW1vbmdzdCBzZXZlcmFsIEFTVEltcG9ydGVyIG9iamVjdHMuCisgICAgLy8vIFRoaXMgaXMgYW4gZXh0ZXJuYWxseSBtYW5hZ2VkIHJlc291cmNlIChhbmQgc2hvdWxkIGV4aXN0IGR1cmluZyB0aGUKKyAgICAvLy8gbGlmZXRpbWUgb2YgdGhlIEFTVEltcG9ydGVyIG9iamVjdCkKKyAgICAvLy8gSWYgbm90IHNldCB0aGVuIHRoZSBvcmlnaW5hbCBDL0MrKyBsb29rdXAgaXMgdXNlZC4KKyAgICBBU1RJbXBvcnRlckxvb2t1cFRhYmxlICpMb29rdXBUYWJsZSA9IG51bGxwdHI7CisKICAgICAvLy8gVGhlIGNvbnRleHRzIHdlJ3JlIGltcG9ydGluZyB0byBhbmQgZnJvbS4KICAgICBBU1RDb250ZXh0ICZUb0NvbnRleHQsICZGcm9tQ29udGV4dDsKIApAQCAtOTgsOSArMTMyLDEzIEBACiAgICAgLy8vICh3aGljaCB3ZSBoYXZlIGFscmVhZHkgY29tcGxhaW5lZCBhYm91dCkuCiAgICAgTm9uRXF1aXZhbGVudERlY2xTZXQgTm9uRXF1aXZhbGVudERlY2xzOwogCisgICAgdXNpbmcgRm91bmREZWNsc1R5ID0gU21hbGxWZWN0b3I8TmFtZWREZWNsICosIDI+OworICAgIEZvdW5kRGVjbHNUeSBmaW5kRGVjbHNJblRvQ3R4KERlY2xDb250ZXh0ICpEQywgRGVjbGFyYXRpb25OYW1lIE5hbWUpOworCisgICAgdm9pZCBBZGRUb0xvb2t1cFRhYmxlKERlY2wgKlRvRCk7CisKICAgcHVibGljOgotICAgIC8vLyBDcmVhdGUgYSBuZXcgQVNUIGltcG9ydGVyLgotICAgIC8vLworCiAgICAgLy8vIFxwYXJhbSBUb0NvbnRleHQgVGhlIGNvbnRleHQgd2UnbGwgYmUgaW1wb3J0aW5nIGludG8uCiAgICAgLy8vCiAgICAgLy8vIFxwYXJhbSBUb0ZpbGVNYW5hZ2VyIFRoZSBmaWxlIG1hbmFnZXIgd2UnbGwgYmUgaW1wb3J0aW5nIGludG8uCkBAIC0xMTIsOSArMTUwLDE0IEBACiAgICAgLy8vIFxwYXJhbSBNaW5pbWFsSW1wb3J0IElmIHRydWUsIHRoZSBpbXBvcnRlciB3aWxsIGF0dGVtcHQgdG8gaW1wb3J0CiAgICAgLy8vIGFzIGxpdHRsZSBhcyBpdCBjYW4sIGUuZy4sIGJ5IGltcG9ydGluZyBkZWNsYXJhdGlvbnMgYXMgZm9yd2FyZAogICAgIC8vLyBkZWNsYXJhdGlvbnMgdGhhdCBjYW4gYmUgY29tcGxldGVkIGF0IGEgbGF0ZXIgcG9pbnQuCisgICAgLy8vCisgICAgLy8vIFxwYXJhbSBMb29rdXBUYWJsZSBUaGUgaW1wb3J0ZXIgc3BlY2lmaWMgbG9va3VwIHRhYmxlIHdoaWNoIG1heSBiZQorICAgIC8vLyBzaGFyZWQgYW1vbmdzdCBzZXZlcmFsIEFTVEltcG9ydGVyIG9iamVjdHMuCisgICAgLy8vIElmIG5vdCBzZXQgdGhlbiB0aGUgb3JpZ2luYWwgQy9DKysgbG9va3VwIGlzIHVzZWQuCiAgICAgQVNUSW1wb3J0ZXIoQVNUQ29udGV4dCAmVG9Db250ZXh0LCBGaWxlTWFuYWdlciAmVG9GaWxlTWFuYWdlciwKICAgICAgICAgICAgICAgICBBU1RDb250ZXh0ICZGcm9tQ29udGV4dCwgRmlsZU1hbmFnZXIgJkZyb21GaWxlTWFuYWdlciwKLSAgICAgICAgICAgICAgICBib29sIE1pbmltYWxJbXBvcnQpOworICAgICAgICAgICAgICAgIGJvb2wgTWluaW1hbEltcG9ydCwKKyAgICAgICAgICAgICAgICBBU1RJbXBvcnRlckxvb2t1cFRhYmxlICpMb29rdXBUYWJsZSA9IG51bGxwdHIpOwogCiAgICAgdmlydHVhbCB+QVNUSW1wb3J0ZXIoKTsKIApAQCAtMTIyLDMxICsxNjUsNjAgQEAKICAgICAvLy8gdG8tYmUtY29tcGxldGVkIGZvcndhcmQgZGVjbGFyYXRpb25zIHdoZW4gcG9zc2libGUuCiAgICAgYm9vbCBpc01pbmltYWxJbXBvcnQoKSBjb25zdCB7IHJldHVybiBNaW5pbWFsOyB9CiAKLSAgICAvLy8gSW1wb3J0IHRoZSBnaXZlbiB0eXBlIGZyb20gdGhlICJmcm9tIiBjb250ZXh0IGludG8gdGhlICJ0byIKLSAgICAvLy8gY29udGV4dC4KKyAgICAvLy8gXGJyaWVmIEltcG9ydCB0aGUgZ2l2ZW4gb2JqZWN0LCByZXR1cm5zIHRoZSByZXN1bHQuCiAgICAgLy8vCi0gICAgLy8vIFxyZXR1cm5zIHRoZSBlcXVpdmFsZW50IHR5cGUgaW4gdGhlICJ0byIgY29udGV4dCwgb3IgYSBOVUxMIHR5cGUgaWYKLSAgICAvLy8gYW4gZXJyb3Igb2NjdXJyZWQuCisgICAgLy8vIFxwYXJhbSBUbyBJbXBvcnQgdGhlIG9iamVjdCBpbnRvIHRoaXMgdmFyaWFibGUuCisgICAgLy8vIFxwYXJhbSBGcm9tIE9iamVjdCB0byBpbXBvcnQuCisgICAgLy8vIFxyZXR1cm4gRXJyb3IgaW5mb3JtYXRpb24gKHN1Y2Nlc3Mgb3IgZXJyb3IpLgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbXBvcnRUPgorICAgIExMVk1fTk9ESVNDQVJEIGxsdm06OkVycm9yIGltcG9ydEludG8oSW1wb3J0VCAmVG8sIGNvbnN0IEltcG9ydFQgJkZyb20pIHsKKyAgICAgIFRvID0gSW1wb3J0KEZyb20pOworICAgICAgaWYgKEZyb20gJiYgIVRvKQorICAgICAgICAgIHJldHVybiBsbHZtOjptYWtlX2Vycm9yPEltcG9ydEVycm9yPigpOworICAgICAgcmV0dXJuIGxsdm06OkVycm9yOjpzdWNjZXNzKCk7CisgICAgICAvLyBGSVhNRTogdGhpcyBzaG91bGQgYmUgdGhlIGZpbmFsIGNvZGUKKyAgICAgIC8vYXV0byBUb09yRXJyID0gSW1wb3J0KEZyb20pOworICAgICAgLy9pZiAoVG9PckVycikKKyAgICAgIC8vICBUbyA9ICpUb09yRXJyOworICAgICAgLy9yZXR1cm4gVG9PckVyci50YWtlRXJyb3IoKTsKKyAgICB9CisKKyAgICAvLy8gSW1wb3J0IHRoZSBnaXZlbiB0eXBlIGZyb20gdGhlICJmcm9tIiBjb250ZXh0IGludG8gdGhlICJ0byIKKyAgICAvLy8gY29udGV4dC4gQSBudWxsIHR5cGUgaXMgaW1wb3J0ZWQgYXMgYSBudWxsIHR5cGUgKG5vIGVycm9yKS4KKyAgICAvLy8KKyAgICAvLy8gXHJldHVybnMgVGhlIGVxdWl2YWxlbnQgdHlwZSBpbiB0aGUgInRvIiBjb250ZXh0LCBvciB0aGUgaW1wb3J0IGVycm9yLgorICAgIGxsdm06OkV4cGVjdGVkPFF1YWxUeXBlPiBJbXBvcnRfTmV3KFF1YWxUeXBlIEZyb21UKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdmVyc2lvbi4KICAgICBRdWFsVHlwZSBJbXBvcnQoUXVhbFR5cGUgRnJvbVQpOwogCiAgICAgLy8vIEltcG9ydCB0aGUgZ2l2ZW4gdHlwZSBzb3VyY2UgaW5mb3JtYXRpb24gZnJvbSB0aGUKICAgICAvLy8gImZyb20iIGNvbnRleHQgaW50byB0aGUgInRvIiBjb250ZXh0LgogICAgIC8vLwotICAgIC8vLyBccmV0dXJucyB0aGUgZXF1aXZhbGVudCB0eXBlIHNvdXJjZSBpbmZvcm1hdGlvbiBpbiB0aGUgInRvIgotICAgIC8vLyBjb250ZXh0LCBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VycmVkLgorICAgIC8vLyBccmV0dXJucyBUaGUgZXF1aXZhbGVudCB0eXBlIHNvdXJjZSBpbmZvcm1hdGlvbiBpbiB0aGUgInRvIgorICAgIC8vLyBjb250ZXh0LCBvciB0aGUgaW1wb3J0IGVycm9yLgorICAgIGxsdm06OkV4cGVjdGVkPFR5cGVTb3VyY2VJbmZvICo+IEltcG9ydF9OZXcoVHlwZVNvdXJjZUluZm8gKkZyb21UU0kpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB2ZXJzaW9uLgogICAgIFR5cGVTb3VyY2VJbmZvICpJbXBvcnQoVHlwZVNvdXJjZUluZm8gKkZyb21UU0kpOwogCiAgICAgLy8vIEltcG9ydCB0aGUgZ2l2ZW4gYXR0cmlidXRlIGZyb20gdGhlICJmcm9tIiBjb250ZXh0IGludG8gdGhlCiAgICAgLy8vICJ0byIgY29udGV4dC4KICAgICAvLy8KLSAgICAvLy8gXHJldHVybnMgdGhlIGVxdWl2YWxlbnQgYXR0cmlidXRlIGluIHRoZSAidG8iIGNvbnRleHQuCisgICAgLy8vIFxyZXR1cm5zIFRoZSBlcXVpdmFsZW50IGF0dHJpYnV0ZSBpbiB0aGUgInRvIiBjb250ZXh0LCBvciB0aGUgaW1wb3J0CisgICAgLy8vIGVycm9yLgorICAgIGxsdm06OkV4cGVjdGVkPEF0dHIgKj4gSW1wb3J0X05ldyhjb25zdCBBdHRyICpGcm9tQXR0cik7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHZlcnNpb24uCiAgICAgQXR0ciAqSW1wb3J0KGNvbnN0IEF0dHIgKkZyb21BdHRyKTsKIAogICAgIC8vLyBJbXBvcnQgdGhlIGdpdmVuIGRlY2xhcmF0aW9uIGZyb20gdGhlICJmcm9tIiBjb250ZXh0IGludG8gdGhlCiAgICAgLy8vICJ0byIgY29udGV4dC4KICAgICAvLy8KLSAgICAvLy8gXHJldHVybnMgdGhlIGVxdWl2YWxlbnQgZGVjbGFyYXRpb24gaW4gdGhlICJ0byIgY29udGV4dCwgb3IgYSBOVUxMIHR5cGUKLSAgICAvLy8gaWYgYW4gZXJyb3Igb2NjdXJyZWQuCisgICAgLy8vIFxyZXR1cm5zIFRoZSBlcXVpdmFsZW50IGRlY2xhcmF0aW9uIGluIHRoZSAidG8iIGNvbnRleHQsIG9yIHRoZSBpbXBvcnQKKyAgICAvLy8gZXJyb3IuCisgICAgbGx2bTo6RXhwZWN0ZWQ8RGVjbCAqPiBJbXBvcnRfTmV3KERlY2wgKkZyb21EKTsKKyAgICBsbHZtOjpFeHBlY3RlZDxEZWNsICo+IEltcG9ydF9OZXcoY29uc3QgRGVjbCAqRnJvbUQpIHsKKyAgICAgIHJldHVybiBJbXBvcnRfTmV3KGNvbnN0X2Nhc3Q8RGVjbCAqPihGcm9tRCkpOworICAgIH0KKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdmVyc2lvbi4KICAgICBEZWNsICpJbXBvcnQoRGVjbCAqRnJvbUQpOwogICAgIERlY2wgKkltcG9ydChjb25zdCBEZWNsICpGcm9tRCkgewogICAgICAgcmV0dXJuIEltcG9ydChjb25zdF9jYXN0PERlY2wgKj4oRnJvbUQpKTsKQEAgLTE1NSwxMDQgKzIyNywxMzcgQEAKICAgICAvLy8gUmV0dXJuIHRoZSBjb3B5IG9mIHRoZSBnaXZlbiBkZWNsYXJhdGlvbiBpbiB0aGUgInRvIiBjb250ZXh0IGlmCiAgICAgLy8vIGl0IGhhcyBhbHJlYWR5IGJlZW4gaW1wb3J0ZWQgZnJvbSB0aGUgImZyb20iIGNvbnRleHQuICBPdGhlcndpc2UgcmV0dXJuCiAgICAgLy8vIE5VTEwuCi0gICAgRGVjbCAqR2V0QWxyZWFkeUltcG9ydGVkT3JOdWxsKERlY2wgKkZyb21EKTsKKyAgICBEZWNsICpHZXRBbHJlYWR5SW1wb3J0ZWRPck51bGwoY29uc3QgRGVjbCAqRnJvbUQpIGNvbnN0OwogCiAgICAgLy8vIEltcG9ydCB0aGUgZ2l2ZW4gZGVjbGFyYXRpb24gY29udGV4dCBmcm9tIHRoZSAiZnJvbSIKICAgICAvLy8gQVNUIGNvbnRleHQgaW50byB0aGUgInRvIiBBU1QgY29udGV4dC4KICAgICAvLy8KICAgICAvLy8gXHJldHVybnMgdGhlIGVxdWl2YWxlbnQgZGVjbGFyYXRpb24gY29udGV4dCBpbiB0aGUgInRvIgotICAgIC8vLyBjb250ZXh0LCBvciBhIE5VTEwgdHlwZSBpZiBhbiBlcnJvciBvY2N1cnJlZC4KLSAgICBEZWNsQ29udGV4dCAqSW1wb3J0Q29udGV4dChEZWNsQ29udGV4dCAqRnJvbURDKTsKKyAgICAvLy8gY29udGV4dCwgb3IgZXJyb3IgdmFsdWUuCisgICAgbGx2bTo6RXhwZWN0ZWQ8RGVjbENvbnRleHQgKj4gSW1wb3J0Q29udGV4dChEZWNsQ29udGV4dCAqRnJvbURDKTsKIAogICAgIC8vLyBJbXBvcnQgdGhlIGdpdmVuIGV4cHJlc3Npb24gZnJvbSB0aGUgImZyb20iIGNvbnRleHQgaW50byB0aGUKICAgICAvLy8gInRvIiBjb250ZXh0LgogICAgIC8vLwotICAgIC8vLyBccmV0dXJucyB0aGUgZXF1aXZhbGVudCBleHByZXNzaW9uIGluIHRoZSAidG8iIGNvbnRleHQsIG9yIE5VTEwgaWYKLSAgICAvLy8gYW4gZXJyb3Igb2NjdXJyZWQuCisgICAgLy8vIFxyZXR1cm5zIFRoZSBlcXVpdmFsZW50IGV4cHJlc3Npb24gaW4gdGhlICJ0byIgY29udGV4dCwgb3IgdGhlIGltcG9ydAorICAgIC8vLyBlcnJvci4KKyAgICBsbHZtOjpFeHBlY3RlZDxFeHByICo+IEltcG9ydF9OZXcoRXhwciAqRnJvbUUpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB2ZXJzaW9uLgogICAgIEV4cHIgKkltcG9ydChFeHByICpGcm9tRSk7CiAKICAgICAvLy8gSW1wb3J0IHRoZSBnaXZlbiBzdGF0ZW1lbnQgZnJvbSB0aGUgImZyb20iIGNvbnRleHQgaW50byB0aGUKICAgICAvLy8gInRvIiBjb250ZXh0LgogICAgIC8vLwotICAgIC8vLyBccmV0dXJucyB0aGUgZXF1aXZhbGVudCBzdGF0ZW1lbnQgaW4gdGhlICJ0byIgY29udGV4dCwgb3IgTlVMTCBpZgotICAgIC8vLyBhbiBlcnJvciBvY2N1cnJlZC4KKyAgICAvLy8gXHJldHVybnMgVGhlIGVxdWl2YWxlbnQgc3RhdGVtZW50IGluIHRoZSAidG8iIGNvbnRleHQsIG9yIHRoZSBpbXBvcnQKKyAgICAvLy8gZXJyb3IuCisgICAgbGx2bTo6RXhwZWN0ZWQ8U3RtdCAqPiBJbXBvcnRfTmV3KFN0bXQgKkZyb21TKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdmVyc2lvbi4KICAgICBTdG10ICpJbXBvcnQoU3RtdCAqRnJvbVMpOwogCiAgICAgLy8vIEltcG9ydCB0aGUgZ2l2ZW4gbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGZyb20gdGhlICJmcm9tIgogICAgIC8vLyBjb250ZXh0IGludG8gdGhlICJ0byIgY29udGV4dC4KICAgICAvLy8KLSAgICAvLy8gXHJldHVybnMgdGhlIGVxdWl2YWxlbnQgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGluIHRoZSAidG8iCi0gICAgLy8vIGNvbnRleHQsIG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCisgICAgLy8vIFxyZXR1cm5zIFRoZSBlcXVpdmFsZW50IG5lc3RlZC1uYW1lLXNwZWNpZmllciBpbiB0aGUgInRvIgorICAgIC8vLyBjb250ZXh0LCBvciB0aGUgaW1wb3J0IGVycm9yLgorICAgIGxsdm06OkV4cGVjdGVkPE5lc3RlZE5hbWVTcGVjaWZpZXIgKj4KKyAgICBJbXBvcnRfTmV3KE5lc3RlZE5hbWVTcGVjaWZpZXIgKkZyb21OTlMpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB2ZXJzaW9uLgogICAgIE5lc3RlZE5hbWVTcGVjaWZpZXIgKkltcG9ydChOZXN0ZWROYW1lU3BlY2lmaWVyICpGcm9tTk5TKTsKIAotICAgIC8vLyBJbXBvcnQgdGhlIGdpdmVuIG5lc3RlZC1uYW1lLXNwZWNpZmllciBmcm9tIHRoZSAiZnJvbSIKKyAgICAvLy8gSW1wb3J0IHRoZSBnaXZlbiBuZXN0ZWQtbmFtZS1zcGVjaWZpZXItbG9jIGZyb20gdGhlICJmcm9tIgogICAgIC8vLyBjb250ZXh0IGludG8gdGhlICJ0byIgY29udGV4dC4KICAgICAvLy8KLSAgICAvLy8gXHJldHVybnMgdGhlIGVxdWl2YWxlbnQgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIGluIHRoZSAidG8iCi0gICAgLy8vIGNvbnRleHQuCisgICAgLy8vIFxyZXR1cm5zIFRoZSBlcXVpdmFsZW50IG5lc3RlZC1uYW1lLXNwZWNpZmllci1sb2MgaW4gdGhlICJ0byIKKyAgICAvLy8gY29udGV4dCwgb3IgdGhlIGltcG9ydCBlcnJvci4KKyAgICBsbHZtOjpFeHBlY3RlZDxOZXN0ZWROYW1lU3BlY2lmaWVyTG9jPgorICAgIEltcG9ydF9OZXcoTmVzdGVkTmFtZVNwZWNpZmllckxvYyBGcm9tTk5TKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdmVyc2lvbi4KICAgICBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jIEltcG9ydChOZXN0ZWROYW1lU3BlY2lmaWVyTG9jIEZyb21OTlMpOwogCi0gICAgLy8vIEltcG9ydCB0aGUgZ292ZW4gdGVtcGxhdGUgbmFtZSBmcm9tIHRoZSAiZnJvbSIgY29udGV4dCBpbnRvIHRoZQotICAgIC8vLyAidG8iIGNvbnRleHQuCisgICAgLy8vIEltcG9ydCB0aGUgZ2l2ZW4gdGVtcGxhdGUgbmFtZSBmcm9tIHRoZSAiZnJvbSIgY29udGV4dCBpbnRvIHRoZQorICAgIC8vLyAidG8iIGNvbnRleHQsIG9yIHRoZSBpbXBvcnQgZXJyb3IuCisgICAgbGx2bTo6RXhwZWN0ZWQ8VGVtcGxhdGVOYW1lPiBJbXBvcnRfTmV3KFRlbXBsYXRlTmFtZSBGcm9tKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdmVyc2lvbi4KICAgICBUZW1wbGF0ZU5hbWUgSW1wb3J0KFRlbXBsYXRlTmFtZSBGcm9tKTsKIAogICAgIC8vLyBJbXBvcnQgdGhlIGdpdmVuIHNvdXJjZSBsb2NhdGlvbiBmcm9tIHRoZSAiZnJvbSIgY29udGV4dCBpbnRvCiAgICAgLy8vIHRoZSAidG8iIGNvbnRleHQuCiAgICAgLy8vCi0gICAgLy8vIFxyZXR1cm5zIHRoZSBlcXVpdmFsZW50IHNvdXJjZSBsb2NhdGlvbiBpbiB0aGUgInRvIiBjb250ZXh0LCBvciBhbgotICAgIC8vLyBpbnZhbGlkIHNvdXJjZSBsb2NhdGlvbiBpZiBhbiBlcnJvciBvY2N1cnJlZC4KKyAgICAvLy8gXHJldHVybnMgVGhlIGVxdWl2YWxlbnQgc291cmNlIGxvY2F0aW9uIGluIHRoZSAidG8iIGNvbnRleHQsIG9yIHRoZQorICAgIC8vLyBpbXBvcnQgZXJyb3IuCisgICAgbGx2bTo6RXhwZWN0ZWQ8U291cmNlTG9jYXRpb24+IEltcG9ydF9OZXcoU291cmNlTG9jYXRpb24gRnJvbUxvYyk7CisgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHZlcnNpb24uCiAgICAgU291cmNlTG9jYXRpb24gSW1wb3J0KFNvdXJjZUxvY2F0aW9uIEZyb21Mb2MpOwogCiAgICAgLy8vIEltcG9ydCB0aGUgZ2l2ZW4gc291cmNlIHJhbmdlIGZyb20gdGhlICJmcm9tIiBjb250ZXh0IGludG8KICAgICAvLy8gdGhlICJ0byIgY29udGV4dC4KICAgICAvLy8KLSAgICAvLy8gXHJldHVybnMgdGhlIGVxdWl2YWxlbnQgc291cmNlIHJhbmdlIGluIHRoZSAidG8iIGNvbnRleHQsIG9yIGFuCi0gICAgLy8vIGludmFsaWQgc291cmNlIGxvY2F0aW9uIGlmIGFuIGVycm9yIG9jY3VycmVkLgorICAgIC8vLyBccmV0dXJucyBUaGUgZXF1aXZhbGVudCBzb3VyY2UgcmFuZ2UgaW4gdGhlICJ0byIgY29udGV4dCwgb3IgdGhlIGltcG9ydAorICAgIC8vLyBlcnJvci4KKyAgICBsbHZtOjpFeHBlY3RlZDxTb3VyY2VSYW5nZT4gSW1wb3J0X05ldyhTb3VyY2VSYW5nZSBGcm9tUmFuZ2UpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB2ZXJzaW9uLgogICAgIFNvdXJjZVJhbmdlIEltcG9ydChTb3VyY2VSYW5nZSBGcm9tUmFuZ2UpOwogCiAgICAgLy8vIEltcG9ydCB0aGUgZ2l2ZW4gZGVjbGFyYXRpb24gbmFtZSBmcm9tIHRoZSAiZnJvbSIKICAgICAvLy8gY29udGV4dCBpbnRvIHRoZSAidG8iIGNvbnRleHQuCiAgICAgLy8vCi0gICAgLy8vIFxyZXR1cm5zIHRoZSBlcXVpdmFsZW50IGRlY2xhcmF0aW9uIG5hbWUgaW4gdGhlICJ0byIgY29udGV4dCwKLSAgICAvLy8gb3IgYW4gZW1wdHkgZGVjbGFyYXRpb24gbmFtZSBpZiBhbiBlcnJvciBvY2N1cnJlZC4KKyAgICAvLy8gXHJldHVybnMgVGhlIGVxdWl2YWxlbnQgZGVjbGFyYXRpb24gbmFtZSBpbiB0aGUgInRvIiBjb250ZXh0LCBvciB0aGUKKyAgICAvLy8gaW1wb3J0IGVycm9yLgorICAgIGxsdm06OkV4cGVjdGVkPERlY2xhcmF0aW9uTmFtZT4gSW1wb3J0X05ldyhEZWNsYXJhdGlvbk5hbWUgRnJvbU5hbWUpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB2ZXJzaW9uLgogICAgIERlY2xhcmF0aW9uTmFtZSBJbXBvcnQoRGVjbGFyYXRpb25OYW1lIEZyb21OYW1lKTsKIAogICAgIC8vLyBJbXBvcnQgdGhlIGdpdmVuIGlkZW50aWZpZXIgZnJvbSB0aGUgImZyb20iIGNvbnRleHQKICAgICAvLy8gaW50byB0aGUgInRvIiBjb250ZXh0LgogICAgIC8vLwotICAgIC8vLyBccmV0dXJucyB0aGUgZXF1aXZhbGVudCBpZGVudGlmaWVyIGluIHRoZSAidG8iIGNvbnRleHQuCisgICAgLy8vIFxyZXR1cm5zIFRoZSBlcXVpdmFsZW50IGlkZW50aWZpZXIgaW4gdGhlICJ0byIgY29udGV4dC4gTm90ZTogSXQKKyAgICAvLy8gcmV0dXJucyBudWxscHRyIG9ubHkgaWYgdGhlIEZyb21JZCB3YXMgbnVsbHB0ci4KICAgICBJZGVudGlmaWVySW5mbyAqSW1wb3J0KGNvbnN0IElkZW50aWZpZXJJbmZvICpGcm9tSWQpOwogCiAgICAgLy8vIEltcG9ydCB0aGUgZ2l2ZW4gT2JqZWN0aXZlLUMgc2VsZWN0b3IgZnJvbSB0aGUgImZyb20iCiAgICAgLy8vIGNvbnRleHQgaW50byB0aGUgInRvIiBjb250ZXh0LgogICAgIC8vLwotICAgIC8vLyBccmV0dXJucyB0aGUgZXF1aXZhbGVudCBzZWxlY3RvciBpbiB0aGUgInRvIiBjb250ZXh0LgorICAgIC8vLyBccmV0dXJucyBUaGUgZXF1aXZhbGVudCBzZWxlY3RvciBpbiB0aGUgInRvIiBjb250ZXh0LCBvciB0aGUgaW1wb3J0CisgICAgLy8vIGVycm9yLgorICAgIGxsdm06OkV4cGVjdGVkPFNlbGVjdG9yPiBJbXBvcnRfTmV3KFNlbGVjdG9yIEZyb21TZWwpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB2ZXJzaW9uLgogICAgIFNlbGVjdG9yIEltcG9ydChTZWxlY3RvciBGcm9tU2VsKTsKIAogICAgIC8vLyBJbXBvcnQgdGhlIGdpdmVuIGZpbGUgSUQgZnJvbSB0aGUgImZyb20iIGNvbnRleHQgaW50byB0aGUKICAgICAvLy8gInRvIiBjb250ZXh0LgogICAgIC8vLwotICAgIC8vLyBccmV0dXJucyB0aGUgZXF1aXZhbGVudCBmaWxlIElEIGluIHRoZSBzb3VyY2UgbWFuYWdlciBvZiB0aGUgInRvIgotICAgIC8vLyBjb250ZXh0LgorICAgIC8vLyBccmV0dXJucyBUaGUgZXF1aXZhbGVudCBmaWxlIElEIGluIHRoZSBzb3VyY2UgbWFuYWdlciBvZiB0aGUgInRvIgorICAgIC8vLyBjb250ZXh0LCBvciB0aGUgaW1wb3J0IGVycm9yLgorICAgIGxsdm06OkV4cGVjdGVkPEZpbGVJRD4gSW1wb3J0X05ldyhGaWxlSUQpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB2ZXJzaW9uLgogICAgIEZpbGVJRCBJbXBvcnQoRmlsZUlEKTsKIAogICAgIC8vLyBJbXBvcnQgdGhlIGdpdmVuIEMrKyBjb25zdHJ1Y3RvciBpbml0aWFsaXplciBmcm9tIHRoZSAiZnJvbSIKICAgICAvLy8gY29udGV4dCBpbnRvIHRoZSAidG8iIGNvbnRleHQuCiAgICAgLy8vCi0gICAgLy8vIFxyZXR1cm5zIHRoZSBlcXVpdmFsZW50IGluaXRpYWxpemVyIGluIHRoZSAidG8iIGNvbnRleHQuCisgICAgLy8vIFxyZXR1cm5zIFRoZSBlcXVpdmFsZW50IGluaXRpYWxpemVyIGluIHRoZSAidG8iIGNvbnRleHQsIG9yIHRoZSBpbXBvcnQKKyAgICAvLy8gZXJyb3IuCisgICAgbGx2bTo6RXhwZWN0ZWQ8Q1hYQ3RvckluaXRpYWxpemVyICo+CisgICAgSW1wb3J0X05ldyhDWFhDdG9ySW5pdGlhbGl6ZXIgKkZyb21Jbml0KTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdmVyc2lvbi4KICAgICBDWFhDdG9ySW5pdGlhbGl6ZXIgKkltcG9ydChDWFhDdG9ySW5pdGlhbGl6ZXIgKkZyb21Jbml0KTsKIAogICAgIC8vLyBJbXBvcnQgdGhlIGdpdmVuIENYWEJhc2VTcGVjaWZpZXIgZnJvbSB0aGUgImZyb20iIGNvbnRleHQgaW50bwogICAgIC8vLyB0aGUgInRvIiBjb250ZXh0LgogICAgIC8vLwotICAgIC8vLyBccmV0dXJucyB0aGUgZXF1aXZhbGVudCBDWFhCYXNlU3BlY2lmaWVyIGluIHRoZSBzb3VyY2UgbWFuYWdlciBvZiB0aGUKLSAgICAvLy8gInRvIiBjb250ZXh0LgorICAgIC8vLyBccmV0dXJucyBUaGUgZXF1aXZhbGVudCBDWFhCYXNlU3BlY2lmaWVyIGluIHRoZSBzb3VyY2UgbWFuYWdlciBvZiB0aGUKKyAgICAvLy8gInRvIiBjb250ZXh0LCBvciB0aGUgaW1wb3J0IGVycm9yLgorICAgIGxsdm06OkV4cGVjdGVkPENYWEJhc2VTcGVjaWZpZXIgKj4KKyAgICBJbXBvcnRfTmV3KGNvbnN0IENYWEJhc2VTcGVjaWZpZXIgKkZyb21TcGVjKTsKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgdmVyc2lvbi4KICAgICBDWFhCYXNlU3BlY2lmaWVyICpJbXBvcnQoY29uc3QgQ1hYQmFzZVNwZWNpZmllciAqRnJvbVNwZWMpOwogCiAgICAgLy8vIEltcG9ydCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZ2l2ZW4gZGVjbGFyYXRpb24sIGluY2x1ZGluZyBhbGwgb2YKICAgICAvLy8gdGhlIGRlY2xhcmF0aW9ucyBpdCBjb250YWlucy4KLSAgICAvLy8KLSAgICAvLy8gVGhpcyByb3V0aW5lIGlzIGludGVuZGVkIHRvIGJlIHVzZWQKKyAgICBMTFZNX05PRElTQ0FSRCBsbHZtOjpFcnJvciBJbXBvcnREZWZpbml0aW9uX05ldyhEZWNsICpGcm9tKTsKKworICAgIC8vIEZJWE1FOiBDb21wYXRpYmlsaXR5IGZ1bmN0aW9uLgorICAgIC8vIFVzYWdlcyBvZiB0aGlzIHNob3VsZCBiZSBjaGFuZ2VkIHRvIEltcG9ydERlZmluaXRpb25fTmV3LgogICAgIHZvaWQgSW1wb3J0RGVmaW5pdGlvbihEZWNsICpGcm9tKTsKIAogICAgIC8vLyBDb3BlIHdpdGggYSBuYW1lIGNvbmZsaWN0IHdoZW4gaW1wb3J0aW5nIGEgZGVjbGFyYXRpb24gaW50byB0aGUKQEAgLTMzNiw5ICs0NDEsOSBAQAogCiAgICAgLy8vIERldGVybWluZSB0aGUgaW5kZXggb2YgYSBmaWVsZCBpbiBpdHMgcGFyZW50IHJlY29yZC4KICAgICAvLy8gRiBzaG91bGQgYmUgYSBmaWVsZCAob3IgaW5kaXJlY3QgZmllbGQpIGRlY2xhcmF0aW9uLgotICAgIC8vLyBccmV0dXJucyBUaGUgaW5kZXggb2YgdGhlIGZpZWxkIGluIGl0cyBwYXJlbnQgY29udGV4dCwgc3RhcnRpbmcgZnJvbSAxLgotICAgIC8vLyAwIGlzIHJldHVybmVkIG9uIGVycm9yIChwYXJlbnQgY29udGV4dCBpcyBub24tcmVjb3JkKS4KLSAgICBzdGF0aWMgdW5zaWduZWQgZ2V0RmllbGRJbmRleChEZWNsICpGKTsKKyAgICAvLy8gXHJldHVybnMgVGhlIGluZGV4IG9mIHRoZSBmaWVsZCBpbiBpdHMgcGFyZW50IGNvbnRleHQgKHN0YXJ0aW5nIGZyb20gMCkuCisgICAgLy8vIE9uIGVycm9yIGBOb25lYCBpcyByZXR1cm5lZCAocGFyZW50IGNvbnRleHQgaXMgbm9uLXJlY29yZCkuCisgICAgc3RhdGljIGxsdm06Ok9wdGlvbmFsPHVuc2lnbmVkPiBnZXRGaWVsZEluZGV4KERlY2wgKkYpOwogCiAgIH07CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RJbXBvcnRlckxvb2t1cFRhYmxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNUSW1wb3J0ZXJMb29rdXBUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNzQ3OGEKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNUSW1wb3J0ZXJMb29rdXBUYWJsZS5oCkBAIC0wLDAgKzEsNzQgQEAKKy8vPT09LSBBU1RJbXBvcnRlckxvb2t1cFRhYmxlLmggLSBBU1RJbXBvcnRlciBzcGVjaWZpYyBsb29rdXAtLSotIEMrKyAtKi0tLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBBU1RJbXBvcnRlckxvb2t1cFRhYmxlIGNsYXNzIHdoaWNoIGltcGxlbWVudHMgYQorLy8gIGxvb2t1cCBwcm9jZWR1cmUgZm9yIHRoZSBpbXBvcnQgbWVjaGFuaXNtLgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9DTEFOR19BU1RfQVNUSU1QT1JURVJMT09LVVBUQUJMRV9ICisjZGVmaW5lIExMVk1fQ0xBTkdfQVNUX0FTVElNUE9SVEVSTE9PS1VQVEFCTEVfSAorCisjaW5jbHVkZSAiY2xhbmcvQVNUL0RlY2xCYXNlLmgiIC8vIGxvb2t1cF9yZXN1bHQKKyNpbmNsdWRlICJjbGFuZy9BU1QvRGVjbGFyYXRpb25OYW1lLmgiCisjaW5jbHVkZSAibGx2bS9BRFQvRGVuc2VNYXAuaCIKKyNpbmNsdWRlICJsbHZtL0FEVC9TZXRWZWN0b3IuaCIKKworbmFtZXNwYWNlIGNsYW5nIHsKKworY2xhc3MgQVNUQ29udGV4dDsKK2NsYXNzIE5hbWVkRGVjbDsKK2NsYXNzIERlY2xDb250ZXh0OworCisvLyBUaGVyZSBhcmUgY2VydGFpbiBjYXNlcyB3aGVuIG5vcm1hbCBDL0MrKyBsb29rdXAgKGxvY2FsVW5jYWNoZWRMb29rdXApCisvLyBkb2VzIG5vdCBmaW5kIEFTVCBub2Rlcy4gRS5nLjoKKy8vIEV4YW1wbGUgMToKKy8vICAgdGVtcGxhdGUgPGNsYXNzIFQ+CisvLyAgIHN0cnVjdCBYIHsKKy8vICAgICBmcmllbmQgdm9pZCBmb28oKTsgLy8gdGhpcyBpcyBuZXZlciBmb3VuZCBpbiB0aGUgREMgb2YgdGhlIFRVLgorLy8gICB9OworLy8gRXhhbXBsZSAyOgorLy8gICAvLyBUaGUgZndkIGRlY2wgdG8gRm9vIGlzIG5vdCBmb3VuZCBpbiB0aGUgbG9va3VwUHRyIG9mIHRoZSBEQyBvZiB0aGUKKy8vICAgLy8gdHJhbnNsYXRpb24gdW5pdCBkZWNsLgorLy8gICAvLyBIZXJlIHdlIGNvdWxkIGZpbmQgdGhlIG5vZGUgYnkgZG9pbmcgYSB0cmF2ZXJzZSB0aHJvdWdodCB0aGUgbGlzdCBvZgorLy8gICAvLyB0aGUgRGVjbHMgaW4gdGhlIERDLCBidXQgdGhhdCB3b3VsZCBub3Qgc2NhbGUuCisvLyAgIHN0cnVjdCBBIHsgc3RydWN0IEZvbyAqcDsgfTsKKy8vIFRoaXMgaXMgYSBzZXZlcmUgcHJvYmxlbSBiZWNhdXNlIHRoZSBpbXBvcnRlciBkZWNpZGVzIGlmIGl0IGhhcyB0byBjcmVhdGUgYQorLy8gbmV3IERlY2wgb3Igbm90IGJhc2VkIG9uIHRoZSBsb29rdXAgcmVzdWx0cy4KKy8vIFRvIG92ZXJjb21lIHRoZXNlIGNhc2VzIHdlIG5lZWQgYW4gaW1wb3J0ZXIgc3BlY2lmaWMgbG9va3VwIHRhYmxlIHdoaWNoCisvLyBob2xkcyBldmVyeSBub2RlIGFuZCB3ZSBhcmUgbm90IGludGVyZXN0ZWQgaW4gYW55IEMvQysrIHNwZWNpZmljIHZpc2liaWxpdHkKKy8vIGNvbnNpZGVyYXRpb25zLiBTaW1wbHksIHdlIG11c3Qga25vdyBpZiB0aGVyZSBpcyBhbiBleGlzdGluZyBEZWNsIGluIGEKKy8vIGdpdmVuIERDLiBPbmNlIHdlIGZvdW5kIGl0IHRoZW4gd2UgY2FuIGhhbmRsZSBhbnkgdmlzaWJpbGl0eSByZWxhdGVkIHRhc2tzLgorY2xhc3MgQVNUSW1wb3J0ZXJMb29rdXBUYWJsZSB7CisKKyAgLy8gV2Ugc3RvcmUgYSBsaXN0IG9mIGRlY2xhcmF0aW9ucyBmb3IgZWFjaCBuYW1lLgorICAvLyBBbmQgd2UgY29sbGVjdCB0aGVzZSBsaXN0cyBmb3IgZWFjaCBEZWNsQ29udGV4dC4KKyAgLy8gV2UgY291bGQgaGF2ZSBhIGZsYXQgbWFwIHdpdGggKERlY2xDb250ZXh0LCBOYW1lKSB0dXBsZSBhcyBrZXksIGJ1dCBhIHR3bworICAvLyBsZXZlbCBtYXAgc2VlbXMgZWFzaWVyIHRvIGhhbmRsZS4KKyAgdXNpbmcgRGVjbExpc3QgPSBsbHZtOjpTbWFsbFNldFZlY3RvcjxOYW1lZERlY2wgKiwgMj47CisgIHVzaW5nIE5hbWVNYXAgPSBsbHZtOjpTbWFsbERlbnNlTWFwPERlY2xhcmF0aW9uTmFtZSwgRGVjbExpc3QsIDQ+OworICB1c2luZyBEQ01hcCA9IGxsdm06OkRlbnNlTWFwPERlY2xDb250ZXh0ICosIE5hbWVNYXA+OworCisgIHZvaWQgYWRkKERlY2xDb250ZXh0ICpEQywgTmFtZWREZWNsICpORCk7CisgIHZvaWQgcmVtb3ZlKERlY2xDb250ZXh0ICpEQywgTmFtZWREZWNsICpORCk7CisKKyAgRENNYXAgTG9va3VwVGFibGU7CisKK3B1YmxpYzoKKyAgQVNUSW1wb3J0ZXJMb29rdXBUYWJsZShUcmFuc2xhdGlvblVuaXREZWNsICZUVSk7CisgIHZvaWQgYWRkKE5hbWVkRGVjbCAqTkQpOworICB2b2lkIHJlbW92ZShOYW1lZERlY2wgKk5EKTsKKyAgdXNpbmcgTG9va3VwUmVzdWx0ID0gRGVjbExpc3Q7CisgIExvb2t1cFJlc3VsdCBsb29rdXAoRGVjbENvbnRleHQgKkRDLCBEZWNsYXJhdGlvbk5hbWUgTmFtZSkgY29uc3Q7CisgIHZvaWQgZHVtcChEZWNsQ29udGV4dCAqREMpIGNvbnN0OworICB2b2lkIGR1bXAoKSBjb25zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIGNsYW5nCisKKyNlbmRpZiAvLyBMTFZNX0NMQU5HX0FTVF9BU1RJTVBPUlRFUkxPT0tVUFRBQkxFX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RMYW1iZGEuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RMYW1iZGEuaAppbmRleCA2ZmVkY2I4Li5jMTE1MzE2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNUTGFtYmRhLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVExhbWJkYS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQVNUTGFtYmRhLmggLSBMYW1iZGEgSGVscGVyIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNUTXV0YXRpb25MaXN0ZW5lci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVE11dGF0aW9uTGlzdGVuZXIuaAppbmRleCA4MDE4NGUxLi5hYzExNWQ0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNUTXV0YXRpb25MaXN0ZW5lci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RNdXRhdGlvbkxpc3RlbmVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBBU1RNdXRhdGlvbkxpc3RlbmVyLmggLSBBU1QgTXV0YXRpb24gSW50ZXJmYWNlIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVE5vZGVUcmF2ZXJzZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1ROb2RlVHJhdmVyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRjNmY1NAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1ROb2RlVHJhdmVyc2VyLmgKQEAgLTAsMCArMSw2MjEgQEAKKy8vPT09LS0tIEFTVE5vZGVUcmF2ZXJzZXIuaCAtIFRyYXZlcnNhbCBvZiBBU1Qgbm9kZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIEFTVCB0cmF2ZXJzYWwgZmFjaWxpdGllcy4gIE90aGVyIHVzZXJzCisvLyBvZiB0aGlzIGNsYXNzIG1heSBtYWtlIHVzZSBvZiB0aGUgc2FtZSB0cmF2ZXJzYWwgbG9naWMgYnkgaW5oZXJpdGluZyBpdCwKKy8vIHNpbWlsYXIgdG8gUmVjdXJzaXZlQVNUVmlzaXRvci4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fQ0xBTkdfQVNUX0FTVE5PREVUUkFWRVJTRVJfSAorI2RlZmluZSBMTFZNX0NMQU5HX0FTVF9BU1ROT0RFVFJBVkVSU0VSX0gKKworI2luY2x1ZGUgImNsYW5nL0FTVC9BdHRyVmlzaXRvci5oIgorI2luY2x1ZGUgImNsYW5nL0FTVC9Db21tZW50VmlzaXRvci5oIgorI2luY2x1ZGUgImNsYW5nL0FTVC9EZWNsVmlzaXRvci5oIgorI2luY2x1ZGUgImNsYW5nL0FTVC9Mb2NJbmZvVHlwZS5oIgorI2luY2x1ZGUgImNsYW5nL0FTVC9TdG10VmlzaXRvci5oIgorI2luY2x1ZGUgImNsYW5nL0FTVC9UZW1wbGF0ZUFyZ3VtZW50VmlzaXRvci5oIgorI2luY2x1ZGUgImNsYW5nL0FTVC9UeXBlVmlzaXRvci5oIgorCituYW1lc3BhY2UgY2xhbmcgeworCisvKioKKworQVNUTm9kZVRyYXZlcnNlciB0cmF2ZXJzZXMgdGhlIENsYW5nIEFTVCBmb3IgZHVtcGluZyBwdXJwb3Nlcy4KKworVGhlIGBEZXJpdmVkOjpkb0dldE5vZGVEZWxlZ2F0ZSgpYCBtZXRob2QgaXMgcmVxdWlyZWQgdG8gYmUgYW4gYWNjZXNzaWJsZSBtZW1iZXIKK3doaWNoIHJldHVybnMgYSByZWZlcmVuY2Ugb2YgdHlwZSBgTm9kZURlbGVnYXRlVHlwZSAmYCB3aGljaCBpbXBsZW1lbnRzIHRoZQorZm9sbG93aW5nIGludGVyZmFjZToKKworc3RydWN0IHsKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEZuPiB2b2lkIEFkZENoaWxkKEZuIERvQWRkQ2hpbGQpOworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRm4+IHZvaWQgQWRkQ2hpbGQoU3RyaW5nUmVmIExhYmVsLCBGbiBEb0FkZENoaWxkKTsKKworICB2b2lkIFZpc2l0KGNvbnN0IGNvbW1lbnRzOjpDb21tZW50ICpDLCBjb25zdCBjb21tZW50czo6RnVsbENvbW1lbnQgKkZDKTsKKyAgdm9pZCBWaXNpdChjb25zdCBBdHRyICpBKTsKKyAgdm9pZCBWaXNpdChjb25zdCBUZW1wbGF0ZUFyZ3VtZW50ICZUQSwgU291cmNlUmFuZ2UgUiA9IHt9LAorICAgICAgICAgICAgIGNvbnN0IERlY2wgKkZyb20gPSBudWxscHRyLCBTdHJpbmdSZWYgTGFiZWwgPSB7fSk7CisgIHZvaWQgVmlzaXQoY29uc3QgU3RtdCAqTm9kZSk7CisgIHZvaWQgVmlzaXQoY29uc3QgVHlwZSAqVCk7CisgIHZvaWQgVmlzaXQoUXVhbFR5cGUgVCk7CisgIHZvaWQgVmlzaXQoY29uc3QgRGVjbCAqRCk7CisgIHZvaWQgVmlzaXQoY29uc3QgQ1hYQ3RvckluaXRpYWxpemVyICpJbml0KTsKKyAgdm9pZCBWaXNpdChjb25zdCBPTVBDbGF1c2UgKkMpOworICB2b2lkIFZpc2l0KGNvbnN0IEJsb2NrRGVjbDo6Q2FwdHVyZSAmQyk7CisgIHZvaWQgVmlzaXQoY29uc3QgR2VuZXJpY1NlbGVjdGlvbkV4cHI6OkNvbnN0QXNzb2NpYXRpb24gJkEpOworfTsKKyovCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgTm9kZURlbGVnYXRlVHlwZT4KK2NsYXNzIEFTVE5vZGVUcmF2ZXJzZXIKKyAgICA6IHB1YmxpYyBDb25zdERlY2xWaXNpdG9yPERlcml2ZWQ+LAorICAgICAgcHVibGljIENvbnN0U3RtdFZpc2l0b3I8RGVyaXZlZD4sCisgICAgICBwdWJsaWMgY29tbWVudHM6OkNvbnN0Q29tbWVudFZpc2l0b3I8RGVyaXZlZCwgdm9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21tZW50czo6RnVsbENvbW1lbnQgKj4sCisgICAgICBwdWJsaWMgVHlwZVZpc2l0b3I8RGVyaXZlZD4sCisgICAgICBwdWJsaWMgQ29uc3RBdHRyVmlzaXRvcjxEZXJpdmVkPiwKKyAgICAgIHB1YmxpYyBDb25zdFRlbXBsYXRlQXJndW1lbnRWaXNpdG9yPERlcml2ZWQ+IHsKKworICAvLy8gSW5kaWNhdGVzIHdoZXRoZXIgd2Ugc2hvdWxkIHRyaWdnZXIgZGVzZXJpYWxpemF0aW9uIG9mIG5vZGVzIHRoYXQgaGFkCisgIC8vLyBub3QgYWxyZWFkeSBiZWVuIGxvYWRlZC4KKyAgYm9vbCBEZXNlcmlhbGl6ZSA9IGZhbHNlOworCisgIE5vZGVEZWxlZ2F0ZVR5cGUgJmdldE5vZGVEZWxlZ2F0ZSgpIHsKKyAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLmRvR2V0Tm9kZURlbGVnYXRlKCk7CisgIH0KKyAgRGVyaXZlZCAmZ2V0RGVyaXZlZCgpIHsgcmV0dXJuICpzdGF0aWNfY2FzdDxEZXJpdmVkICo+KHRoaXMpOyB9CisKK3B1YmxpYzoKKyAgdm9pZCBzZXREZXNlcmlhbGl6ZShib29sIEQpIHsgRGVzZXJpYWxpemUgPSBEOyB9CisgIGJvb2wgZ2V0RGVzZXJpYWxpemUoKSBjb25zdCB7IHJldHVybiBEZXNlcmlhbGl6ZTsgfQorCisgIHZvaWQgVmlzaXQoY29uc3QgRGVjbCAqRCkgeworICAgIGdldE5vZGVEZWxlZ2F0ZSgpLkFkZENoaWxkKFs9XSB7CisgICAgICBnZXROb2RlRGVsZWdhdGUoKS5WaXNpdChEKTsKKyAgICAgIGlmICghRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgICBDb25zdERlY2xWaXNpdG9yPERlcml2ZWQ+OjpWaXNpdChEKTsKKworICAgICAgZm9yIChjb25zdCBhdXRvICZBIDogRC0+YXR0cnMoKSkKKyAgICAgICAgVmlzaXQoQSk7CisKKyAgICAgIGlmIChjb25zdCBjb21tZW50czo6RnVsbENvbW1lbnQgKkNvbW1lbnQgPQorICAgICAgICAgICAgICBELT5nZXRBU1RDb250ZXh0KCkuZ2V0TG9jYWxDb21tZW50Rm9yRGVjbFVuY2FjaGVkKEQpKQorICAgICAgICBWaXNpdChDb21tZW50LCBDb21tZW50KTsKKworICAgICAgLy8gRGVjbHMgd2l0aGluIGZ1bmN0aW9ucyBhcmUgdmlzaXRlZCBieSB0aGUgYm9keS4KKyAgICAgIGlmICghaXNhPEZ1bmN0aW9uRGVjbD4oKkQpICYmICFpc2E8T2JqQ01ldGhvZERlY2w+KCpEKSkgeworICAgICAgICBpZiAoY29uc3QgYXV0byAqREMgPSBkeW5fY2FzdDxEZWNsQ29udGV4dD4oRCkpCisgICAgICAgICAgZHVtcERlY2xDb250ZXh0KERDKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfQorCisgIHZvaWQgVmlzaXQoY29uc3QgU3RtdCAqUywgU3RyaW5nUmVmIExhYmVsID0ge30pIHsKKyAgICBnZXROb2RlRGVsZWdhdGUoKS5BZGRDaGlsZChMYWJlbCwgWz1dIHsKKyAgICAgIGdldE5vZGVEZWxlZ2F0ZSgpLlZpc2l0KFMpOworCisgICAgICBpZiAoIVMpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICBDb25zdFN0bXRWaXNpdG9yPERlcml2ZWQ+OjpWaXNpdChTKTsKKworICAgICAgLy8gU29tZSBzdGF0ZW1lbnRzIGhhdmUgY3VzdG9tIG1lY2hhbmlzbXMgZm9yIGR1bXBpbmcgdGhlaXIgY2hpbGRyZW4uCisgICAgICBpZiAoaXNhPERlY2xTdG10PihTKSB8fCBpc2E8R2VuZXJpY1NlbGVjdGlvbkV4cHI+KFMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICAgIH0KKworICAgICAgZm9yIChjb25zdCBTdG10ICpTdWJTdG10IDogUy0+Y2hpbGRyZW4oKSkKKyAgICAgICAgVmlzaXQoU3ViU3RtdCk7CisgICAgfSk7CisgIH0KKworICB2b2lkIFZpc2l0KFF1YWxUeXBlIFQpIHsKKyAgICBTcGxpdFF1YWxUeXBlIFNRVCA9IFQuc3BsaXQoKTsKKyAgICBpZiAoIVNRVC5RdWFscy5oYXNRdWFsaWZpZXJzKCkpCisgICAgICByZXR1cm4gVmlzaXQoU1FULlR5KTsKKworICAgIGdldE5vZGVEZWxlZ2F0ZSgpLkFkZENoaWxkKFs9XSB7CisgICAgICBnZXROb2RlRGVsZWdhdGUoKS5WaXNpdChUKTsKKyAgICAgIFZpc2l0KFQuc3BsaXQoKS5UeSk7CisgICAgfSk7CisgIH0KKworICB2b2lkIFZpc2l0KGNvbnN0IFR5cGUgKlQpIHsKKyAgICBnZXROb2RlRGVsZWdhdGUoKS5BZGRDaGlsZChbPV0geworICAgICAgZ2V0Tm9kZURlbGVnYXRlKCkuVmlzaXQoVCk7CisgICAgICBpZiAoIVQpCisgICAgICAgIHJldHVybjsKKyAgICAgIFR5cGVWaXNpdG9yPERlcml2ZWQ+OjpWaXNpdChUKTsKKworICAgICAgUXVhbFR5cGUgU2luZ2xlU3RlcERlc3VnYXIgPQorICAgICAgICAgIFQtPmdldExvY2FsbHlVbnF1YWxpZmllZFNpbmdsZVN0ZXBEZXN1Z2FyZWRUeXBlKCk7CisgICAgICBpZiAoU2luZ2xlU3RlcERlc3VnYXIgIT0gUXVhbFR5cGUoVCwgMCkpCisgICAgICAgIFZpc2l0KFNpbmdsZVN0ZXBEZXN1Z2FyKTsKKyAgICB9KTsKKyAgfQorCisgIHZvaWQgVmlzaXQoY29uc3QgQXR0ciAqQSkgeworICAgIGdldE5vZGVEZWxlZ2F0ZSgpLkFkZENoaWxkKFs9XSB7CisgICAgICBnZXROb2RlRGVsZWdhdGUoKS5WaXNpdChBKTsKKyAgICAgIENvbnN0QXR0clZpc2l0b3I8RGVyaXZlZD46OlZpc2l0KEEpOworICAgIH0pOworICB9CisKKyAgdm9pZCBWaXNpdChjb25zdCBDWFhDdG9ySW5pdGlhbGl6ZXIgKkluaXQpIHsKKyAgICBnZXROb2RlRGVsZWdhdGUoKS5BZGRDaGlsZChbPV0geworICAgICAgZ2V0Tm9kZURlbGVnYXRlKCkuVmlzaXQoSW5pdCk7CisgICAgICBWaXNpdChJbml0LT5nZXRJbml0KCkpOworICAgIH0pOworICB9CisKKyAgdm9pZCBWaXNpdChjb25zdCBUZW1wbGF0ZUFyZ3VtZW50ICZBLCBTb3VyY2VSYW5nZSBSID0ge30sCisgICAgICAgICAgICAgY29uc3QgRGVjbCAqRnJvbSA9IG51bGxwdHIsIGNvbnN0IGNoYXIgKkxhYmVsID0gbnVsbHB0cikgeworICAgIGdldE5vZGVEZWxlZ2F0ZSgpLkFkZENoaWxkKFs9XSB7CisgICAgICBnZXROb2RlRGVsZWdhdGUoKS5WaXNpdChBLCBSLCBGcm9tLCBMYWJlbCk7CisgICAgICBDb25zdFRlbXBsYXRlQXJndW1lbnRWaXNpdG9yPERlcml2ZWQ+OjpWaXNpdChBKTsKKyAgICB9KTsKKyAgfQorCisgIHZvaWQgVmlzaXQoY29uc3QgQmxvY2tEZWNsOjpDYXB0dXJlICZDKSB7CisgICAgZ2V0Tm9kZURlbGVnYXRlKCkuQWRkQ2hpbGQoWz1dIHsKKyAgICAgIGdldE5vZGVEZWxlZ2F0ZSgpLlZpc2l0KEMpOworICAgICAgaWYgKEMuaGFzQ29weUV4cHIoKSkKKyAgICAgICAgVmlzaXQoQy5nZXRDb3B5RXhwcigpKTsKKyAgICB9KTsKKyAgfQorCisgIHZvaWQgVmlzaXQoY29uc3QgT01QQ2xhdXNlICpDKSB7CisgICAgZ2V0Tm9kZURlbGVnYXRlKCkuQWRkQ2hpbGQoWz1dIHsKKyAgICAgIGdldE5vZGVEZWxlZ2F0ZSgpLlZpc2l0KEMpOworICAgICAgZm9yIChjb25zdCBhdXRvICpTIDogQy0+Y2hpbGRyZW4oKSkKKyAgICAgICAgVmlzaXQoUyk7CisgICAgfSk7CisgIH0KKworICB2b2lkIFZpc2l0KGNvbnN0IEdlbmVyaWNTZWxlY3Rpb25FeHByOjpDb25zdEFzc29jaWF0aW9uICZBKSB7CisgICAgZ2V0Tm9kZURlbGVnYXRlKCkuQWRkQ2hpbGQoWz1dIHsKKyAgICAgIGdldE5vZGVEZWxlZ2F0ZSgpLlZpc2l0KEEpOworICAgICAgaWYgKGNvbnN0IFR5cGVTb3VyY2VJbmZvICpUU0kgPSBBLmdldFR5cGVTb3VyY2VJbmZvKCkpCisgICAgICAgIFZpc2l0KFRTSS0+Z2V0VHlwZSgpKTsKKyAgICAgIFZpc2l0KEEuZ2V0QXNzb2NpYXRpb25FeHByKCkpOworICAgIH0pOworICB9CisKKyAgdm9pZCBWaXNpdChjb25zdCBjb21tZW50czo6Q29tbWVudCAqQywgY29uc3QgY29tbWVudHM6OkZ1bGxDb21tZW50ICpGQykgeworICAgIGdldE5vZGVEZWxlZ2F0ZSgpLkFkZENoaWxkKFs9XSB7CisgICAgICBnZXROb2RlRGVsZWdhdGUoKS5WaXNpdChDLCBGQyk7CisgICAgICBpZiAoIUMpIHsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgY29tbWVudHM6OkNvbnN0Q29tbWVudFZpc2l0b3I8RGVyaXZlZCwgdm9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1lbnRzOjpGdWxsQ29tbWVudCAqPjo6dmlzaXQoQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkMpOworICAgICAgZm9yIChjb21tZW50czo6Q29tbWVudDo6Y2hpbGRfaXRlcmF0b3IgSSA9IEMtPmNoaWxkX2JlZ2luKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFID0gQy0+Y2hpbGRfZW5kKCk7CisgICAgICAgICAgIEkgIT0gRTsgKytJKQorICAgICAgICBWaXNpdCgqSSwgRkMpOworICAgIH0pOworICB9CisKKyAgdm9pZCBkdW1wRGVjbENvbnRleHQoY29uc3QgRGVjbENvbnRleHQgKkRDKSB7CisgICAgaWYgKCFEQykKKyAgICAgIHJldHVybjsKKworICAgIGZvciAoY29uc3QgYXV0byAqRCA6IChEZXNlcmlhbGl6ZSA/IERDLT5kZWNscygpIDogREMtPm5vbG9hZF9kZWNscygpKSkKKyAgICAgIFZpc2l0KEQpOworICB9CisKKyAgdm9pZCBkdW1wVGVtcGxhdGVQYXJhbWV0ZXJzKGNvbnN0IFRlbXBsYXRlUGFyYW1ldGVyTGlzdCAqVFBMKSB7CisgICAgaWYgKCFUUEwpCisgICAgICByZXR1cm47CisKKyAgICBmb3IgKGNvbnN0IGF1dG8gJlRQIDogKlRQTCkKKyAgICAgIFZpc2l0KFRQKTsKKyAgfQorCisgIHZvaWQgZHVtcFRlbXBsYXRlQXJndW1lbnRMaXN0SW5mbyhjb25zdCBUZW1wbGF0ZUFyZ3VtZW50TGlzdEluZm8gJlRBTEkpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJlRBIDogVEFMSS5hcmd1bWVudHMoKSkKKyAgICAgIGR1bXBUZW1wbGF0ZUFyZ3VtZW50TG9jKFRBKTsKKyAgfQorCisgIHZvaWQgZHVtcFRlbXBsYXRlQXJndW1lbnRMb2MoY29uc3QgVGVtcGxhdGVBcmd1bWVudExvYyAmQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEZWNsICpGcm9tID0gbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpMYWJlbCA9IG51bGxwdHIpIHsKKyAgICBWaXNpdChBLmdldEFyZ3VtZW50KCksIEEuZ2V0U291cmNlUmFuZ2UoKSwgRnJvbSwgTGFiZWwpOworICB9CisKKyAgdm9pZCBkdW1wVGVtcGxhdGVBcmd1bWVudExpc3QoY29uc3QgVGVtcGxhdGVBcmd1bWVudExpc3QgJlRBTCkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGUgPSBUQUwuc2l6ZSgpOyBpIDwgZTsgKytpKQorICAgICAgVmlzaXQoVEFMW2ldKTsKKyAgfQorCisgIHZvaWQgZHVtcE9iakNUeXBlUGFyYW1MaXN0KGNvbnN0IE9iakNUeXBlUGFyYW1MaXN0ICp0eXBlUGFyYW1zKSB7CisgICAgaWYgKCF0eXBlUGFyYW1zKQorICAgICAgcmV0dXJuOworCisgICAgZm9yIChjb25zdCBhdXRvICZ0eXBlUGFyYW0gOiAqdHlwZVBhcmFtcykgeworICAgICAgVmlzaXQodHlwZVBhcmFtKTsKKyAgICB9CisgIH0KKworICB2b2lkIFZpc2l0Q29tcGxleFR5cGUoY29uc3QgQ29tcGxleFR5cGUgKlQpIHsgVmlzaXQoVC0+Z2V0RWxlbWVudFR5cGUoKSk7IH0KKyAgdm9pZCBWaXNpdExvY0luZm9UeXBlKGNvbnN0IExvY0luZm9UeXBlICpUKSB7CisgICAgVmlzaXQoVC0+Z2V0VHlwZVNvdXJjZUluZm8oKS0+Z2V0VHlwZSgpKTsKKyAgfQorICB2b2lkIFZpc2l0UG9pbnRlclR5cGUoY29uc3QgUG9pbnRlclR5cGUgKlQpIHsgVmlzaXQoVC0+Z2V0UG9pbnRlZVR5cGUoKSk7IH0KKyAgdm9pZCBWaXNpdEJsb2NrUG9pbnRlclR5cGUoY29uc3QgQmxvY2tQb2ludGVyVHlwZSAqVCkgeworICAgIFZpc2l0KFQtPmdldFBvaW50ZWVUeXBlKCkpOworICB9CisgIHZvaWQgVmlzaXRSZWZlcmVuY2VUeXBlKGNvbnN0IFJlZmVyZW5jZVR5cGUgKlQpIHsKKyAgICBWaXNpdChULT5nZXRQb2ludGVlVHlwZSgpKTsKKyAgfQorICB2b2lkIFZpc2l0TWVtYmVyUG9pbnRlclR5cGUoY29uc3QgTWVtYmVyUG9pbnRlclR5cGUgKlQpIHsKKyAgICBWaXNpdChULT5nZXRDbGFzcygpKTsKKyAgICBWaXNpdChULT5nZXRQb2ludGVlVHlwZSgpKTsKKyAgfQorICB2b2lkIFZpc2l0QXJyYXlUeXBlKGNvbnN0IEFycmF5VHlwZSAqVCkgeyBWaXNpdChULT5nZXRFbGVtZW50VHlwZSgpKTsgfQorICB2b2lkIFZpc2l0VmFyaWFibGVBcnJheVR5cGUoY29uc3QgVmFyaWFibGVBcnJheVR5cGUgKlQpIHsKKyAgICBWaXNpdEFycmF5VHlwZShUKTsKKyAgICBWaXNpdChULT5nZXRTaXplRXhwcigpKTsKKyAgfQorICB2b2lkIFZpc2l0RGVwZW5kZW50U2l6ZWRBcnJheVR5cGUoY29uc3QgRGVwZW5kZW50U2l6ZWRBcnJheVR5cGUgKlQpIHsKKyAgICBWaXNpdChULT5nZXRFbGVtZW50VHlwZSgpKTsKKyAgICBWaXNpdChULT5nZXRTaXplRXhwcigpKTsKKyAgfQorICB2b2lkIFZpc2l0RGVwZW5kZW50U2l6ZWRFeHRWZWN0b3JUeXBlKGNvbnN0IERlcGVuZGVudFNpemVkRXh0VmVjdG9yVHlwZSAqVCkgeworICAgIFZpc2l0KFQtPmdldEVsZW1lbnRUeXBlKCkpOworICAgIFZpc2l0KFQtPmdldFNpemVFeHByKCkpOworICB9CisgIHZvaWQgVmlzaXRWZWN0b3JUeXBlKGNvbnN0IFZlY3RvclR5cGUgKlQpIHsgVmlzaXQoVC0+Z2V0RWxlbWVudFR5cGUoKSk7IH0KKyAgdm9pZCBWaXNpdEZ1bmN0aW9uVHlwZShjb25zdCBGdW5jdGlvblR5cGUgKlQpIHsgVmlzaXQoVC0+Z2V0UmV0dXJuVHlwZSgpKTsgfQorICB2b2lkIFZpc2l0RnVuY3Rpb25Qcm90b1R5cGUoY29uc3QgRnVuY3Rpb25Qcm90b1R5cGUgKlQpIHsKKyAgICBWaXNpdEZ1bmN0aW9uVHlwZShUKTsKKyAgICBmb3IgKGNvbnN0IFF1YWxUeXBlICZQVCA6IFQtPmdldFBhcmFtVHlwZXMoKSkKKyAgICAgIFZpc2l0KFBUKTsKKyAgfQorICB2b2lkIFZpc2l0VHlwZU9mRXhwclR5cGUoY29uc3QgVHlwZU9mRXhwclR5cGUgKlQpIHsKKyAgICBWaXNpdChULT5nZXRVbmRlcmx5aW5nRXhwcigpKTsKKyAgfQorICB2b2lkIFZpc2l0RGVjbHR5cGVUeXBlKGNvbnN0IERlY2x0eXBlVHlwZSAqVCkgeworICAgIFZpc2l0KFQtPmdldFVuZGVybHlpbmdFeHByKCkpOworICB9CisgIHZvaWQgVmlzaXRVbmFyeVRyYW5zZm9ybVR5cGUoY29uc3QgVW5hcnlUcmFuc2Zvcm1UeXBlICpUKSB7CisgICAgVmlzaXQoVC0+Z2V0QmFzZVR5cGUoKSk7CisgIH0KKyAgdm9pZCBWaXNpdEF0dHJpYnV0ZWRUeXBlKGNvbnN0IEF0dHJpYnV0ZWRUeXBlICpUKSB7CisgICAgLy8gRklYTUU6IEF0dHJLaW5kCisgICAgVmlzaXQoVC0+Z2V0TW9kaWZpZWRUeXBlKCkpOworICB9CisgIHZvaWQgVmlzaXRTdWJzdFRlbXBsYXRlVHlwZVBhcm1UeXBlKGNvbnN0IFN1YnN0VGVtcGxhdGVUeXBlUGFybVR5cGUgKlQpIHsKKyAgICBWaXNpdChULT5nZXRSZXBsYWNlZFBhcmFtZXRlcigpKTsKKyAgfQorICB2b2lkCisgIFZpc2l0U3Vic3RUZW1wbGF0ZVR5cGVQYXJtUGFja1R5cGUoY29uc3QgU3Vic3RUZW1wbGF0ZVR5cGVQYXJtUGFja1R5cGUgKlQpIHsKKyAgICBWaXNpdChULT5nZXRSZXBsYWNlZFBhcmFtZXRlcigpKTsKKyAgICBWaXNpdChULT5nZXRBcmd1bWVudFBhY2soKSk7CisgIH0KKyAgdm9pZCBWaXNpdFRlbXBsYXRlU3BlY2lhbGl6YXRpb25UeXBlKGNvbnN0IFRlbXBsYXRlU3BlY2lhbGl6YXRpb25UeXBlICpUKSB7CisgICAgZm9yIChjb25zdCBhdXRvICZBcmcgOiAqVCkKKyAgICAgIFZpc2l0KEFyZyk7CisgICAgaWYgKFQtPmlzVHlwZUFsaWFzKCkpCisgICAgICBWaXNpdChULT5nZXRBbGlhc2VkVHlwZSgpKTsKKyAgfQorICB2b2lkIFZpc2l0T2JqQ09iamVjdFBvaW50ZXJUeXBlKGNvbnN0IE9iakNPYmplY3RQb2ludGVyVHlwZSAqVCkgeworICAgIFZpc2l0KFQtPmdldFBvaW50ZWVUeXBlKCkpOworICB9CisgIHZvaWQgVmlzaXRBdG9taWNUeXBlKGNvbnN0IEF0b21pY1R5cGUgKlQpIHsgVmlzaXQoVC0+Z2V0VmFsdWVUeXBlKCkpOyB9CisgIHZvaWQgVmlzaXRQaXBlVHlwZShjb25zdCBQaXBlVHlwZSAqVCkgeyBWaXNpdChULT5nZXRFbGVtZW50VHlwZSgpKTsgfQorICB2b2lkIFZpc2l0QWRqdXN0ZWRUeXBlKGNvbnN0IEFkanVzdGVkVHlwZSAqVCkgeyBWaXNpdChULT5nZXRPcmlnaW5hbFR5cGUoKSk7IH0KKyAgdm9pZCBWaXNpdFBhY2tFeHBhbnNpb25UeXBlKGNvbnN0IFBhY2tFeHBhbnNpb25UeXBlICpUKSB7CisgICAgaWYgKCFULT5pc1N1Z2FyZWQoKSkKKyAgICAgIFZpc2l0KFQtPmdldFBhdHRlcm4oKSk7CisgIH0KKyAgLy8gRklYTUU6IEVsYWJvcmF0ZWRUeXBlLCBEZXBlbmRlbnROYW1lVHlwZSwKKyAgLy8gRGVwZW5kZW50VGVtcGxhdGVTcGVjaWFsaXphdGlvblR5cGUsIE9iakNPYmplY3RUeXBlCisKKyAgdm9pZCBWaXNpdFR5cGVkZWZEZWNsKGNvbnN0IFR5cGVkZWZEZWNsICpEKSB7IFZpc2l0KEQtPmdldFVuZGVybHlpbmdUeXBlKCkpOyB9CisKKyAgdm9pZCBWaXNpdEVudW1Db25zdGFudERlY2woY29uc3QgRW51bUNvbnN0YW50RGVjbCAqRCkgeworICAgIGlmIChjb25zdCBFeHByICpJbml0ID0gRC0+Z2V0SW5pdEV4cHIoKSkKKyAgICAgIFZpc2l0KEluaXQpOworICB9CisKKyAgdm9pZCBWaXNpdEZ1bmN0aW9uRGVjbChjb25zdCBGdW5jdGlvbkRlY2wgKkQpIHsKKyAgICBpZiAoY29uc3QgYXV0byAqRlRTSSA9IEQtPmdldFRlbXBsYXRlU3BlY2lhbGl6YXRpb25JbmZvKCkpCisgICAgICBkdW1wVGVtcGxhdGVBcmd1bWVudExpc3QoKkZUU0ktPlRlbXBsYXRlQXJndW1lbnRzKTsKKworICAgIGlmIChELT5wYXJhbV9iZWdpbigpKQorICAgICAgZm9yIChjb25zdCBhdXRvICpQYXJhbWV0ZXIgOiBELT5wYXJhbWV0ZXJzKCkpCisgICAgICAgIFZpc2l0KFBhcmFtZXRlcik7CisKKyAgICBpZiAoY29uc3QgYXV0byAqQyA9IGR5bl9jYXN0PENYWENvbnN0cnVjdG9yRGVjbD4oRCkpCisgICAgICBmb3IgKGNvbnN0IGF1dG8gKkkgOiBDLT5pbml0cygpKQorICAgICAgICBWaXNpdChJKTsKKworICAgIGlmIChELT5kb2VzVGhpc0RlY2xhcmF0aW9uSGF2ZUFCb2R5KCkpCisgICAgICBWaXNpdChELT5nZXRCb2R5KCkpOworICB9CisKKyAgdm9pZCBWaXNpdEZpZWxkRGVjbChjb25zdCBGaWVsZERlY2wgKkQpIHsKKyAgICBpZiAoRC0+aXNCaXRGaWVsZCgpKQorICAgICAgVmlzaXQoRC0+Z2V0Qml0V2lkdGgoKSk7CisgICAgaWYgKEV4cHIgKkluaXQgPSBELT5nZXRJbkNsYXNzSW5pdGlhbGl6ZXIoKSkKKyAgICAgIFZpc2l0KEluaXQpOworICB9CisKKyAgdm9pZCBWaXNpdFZhckRlY2woY29uc3QgVmFyRGVjbCAqRCkgeworICAgIGlmIChELT5oYXNJbml0KCkpCisgICAgICBWaXNpdChELT5nZXRJbml0KCkpOworICB9CisKKyAgdm9pZCBWaXNpdERlY29tcG9zaXRpb25EZWNsKGNvbnN0IERlY29tcG9zaXRpb25EZWNsICpEKSB7CisgICAgVmlzaXRWYXJEZWNsKEQpOworICAgIGZvciAoY29uc3QgYXV0byAqQiA6IEQtPmJpbmRpbmdzKCkpCisgICAgICBWaXNpdChCKTsKKyAgfQorCisgIHZvaWQgVmlzaXRCaW5kaW5nRGVjbChjb25zdCBCaW5kaW5nRGVjbCAqRCkgeworICAgIGlmIChjb25zdCBhdXRvICpFID0gRC0+Z2V0QmluZGluZygpKQorICAgICAgVmlzaXQoRSk7CisgIH0KKworICB2b2lkIFZpc2l0RmlsZVNjb3BlQXNtRGVjbChjb25zdCBGaWxlU2NvcGVBc21EZWNsICpEKSB7CisgICAgVmlzaXQoRC0+Z2V0QXNtU3RyaW5nKCkpOworICB9CisKKyAgdm9pZCBWaXNpdENhcHR1cmVkRGVjbChjb25zdCBDYXB0dXJlZERlY2wgKkQpIHsgVmlzaXQoRC0+Z2V0Qm9keSgpKTsgfQorCisgIHZvaWQgVmlzaXRPTVBUaHJlYWRQcml2YXRlRGVjbChjb25zdCBPTVBUaHJlYWRQcml2YXRlRGVjbCAqRCkgeworICAgIGZvciAoY29uc3QgYXV0byAqRSA6IEQtPnZhcmxpc3RzKCkpCisgICAgICBWaXNpdChFKTsKKyAgfQorCisgIHZvaWQgVmlzaXRPTVBEZWNsYXJlUmVkdWN0aW9uRGVjbChjb25zdCBPTVBEZWNsYXJlUmVkdWN0aW9uRGVjbCAqRCkgeworICAgIFZpc2l0KEQtPmdldENvbWJpbmVyKCkpOworICAgIGlmIChjb25zdCBhdXRvICpJbml0aWFsaXplciA9IEQtPmdldEluaXRpYWxpemVyKCkpCisgICAgICBWaXNpdChJbml0aWFsaXplcik7CisgIH0KKworICB2b2lkIFZpc2l0T01QRGVjbGFyZU1hcHBlckRlY2woY29uc3QgT01QRGVjbGFyZU1hcHBlckRlY2wgKkQpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8gKkMgOiBELT5jbGF1c2VsaXN0cygpKQorICAgICAgVmlzaXQoQyk7CisgIH0KKworICB2b2lkIFZpc2l0T01QQ2FwdHVyZWRFeHByRGVjbChjb25zdCBPTVBDYXB0dXJlZEV4cHJEZWNsICpEKSB7CisgICAgVmlzaXQoRC0+Z2V0SW5pdCgpKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBTcGVjaWFsaXphdGlvbkRlY2w+CisgIHZvaWQgZHVtcFRlbXBsYXRlRGVjbFNwZWNpYWxpemF0aW9uKGNvbnN0IFNwZWNpYWxpemF0aW9uRGVjbCAqRCkgeworICAgIGZvciAoY29uc3QgYXV0byAqUmVkZWNsV2l0aEJhZFR5cGUgOiBELT5yZWRlY2xzKCkpIHsKKyAgICAgIC8vIEZJWE1FOiBUaGUgcmVkZWNscygpIHJhbmdlIHNvbWV0aW1lcyBoYXMgZWxlbWVudHMgb2YgYSBsZXNzLXNwZWNpZmljCisgICAgICAvLyB0eXBlLiAoSW4gcGFydGljdWxhciwgQ2xhc3NUZW1wbGF0ZVNwZWNpYWxpemF0aW9uRGVjbDo6cmVkZWNscygpIGdpdmVzCisgICAgICAvLyB1cyBUYWdEZWNscywgYW5kIHNob3VsZCBnaXZlIENYWFJlY29yZERlY2xzKS4KKyAgICAgIGF1dG8gKlJlZGVjbCA9IGR5bl9jYXN0PFNwZWNpYWxpemF0aW9uRGVjbD4oUmVkZWNsV2l0aEJhZFR5cGUpOworICAgICAgaWYgKCFSZWRlY2wpIHsKKyAgICAgICAgLy8gRm91bmQgdGhlIGluamVjdGVkLWNsYXNzLW5hbWUgZm9yIGEgY2xhc3MgdGVtcGxhdGUuIFRoaXMgd2lsbCBiZQorICAgICAgICAvLyBkdW1wZWQgYXMgcGFydCBvZiBpdHMgc3Vycm91bmRpbmcgY2xhc3Mgc28gd2UgZG9uJ3QgbmVlZCB0byBkdW1wIGl0CisgICAgICAgIC8vIGhlcmUuCisgICAgICAgIGFzc2VydChpc2E8Q1hYUmVjb3JkRGVjbD4oUmVkZWNsV2l0aEJhZFR5cGUpICYmCisgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYW4gaW5qZWN0ZWQtY2xhc3MtbmFtZSIpOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyAgICAgIFZpc2l0KFJlZGVjbCk7CisgICAgfQorICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFRlbXBsYXRlRGVjbD4KKyAgdm9pZCBkdW1wVGVtcGxhdGVEZWNsKGNvbnN0IFRlbXBsYXRlRGVjbCAqRCkgeworICAgIGR1bXBUZW1wbGF0ZVBhcmFtZXRlcnMoRC0+Z2V0VGVtcGxhdGVQYXJhbWV0ZXJzKCkpOworCisgICAgVmlzaXQoRC0+Z2V0VGVtcGxhdGVkRGVjbCgpKTsKKworICAgIGZvciAoY29uc3QgYXV0byAqQ2hpbGQgOiBELT5zcGVjaWFsaXphdGlvbnMoKSkKKyAgICAgIGR1bXBUZW1wbGF0ZURlY2xTcGVjaWFsaXphdGlvbihDaGlsZCk7CisgIH0KKworICB2b2lkIFZpc2l0VHlwZUFsaWFzRGVjbChjb25zdCBUeXBlQWxpYXNEZWNsICpEKSB7CisgICAgVmlzaXQoRC0+Z2V0VW5kZXJseWluZ1R5cGUoKSk7CisgIH0KKworICB2b2lkIFZpc2l0VHlwZUFsaWFzVGVtcGxhdGVEZWNsKGNvbnN0IFR5cGVBbGlhc1RlbXBsYXRlRGVjbCAqRCkgeworICAgIGR1bXBUZW1wbGF0ZVBhcmFtZXRlcnMoRC0+Z2V0VGVtcGxhdGVQYXJhbWV0ZXJzKCkpOworICAgIFZpc2l0KEQtPmdldFRlbXBsYXRlZERlY2woKSk7CisgIH0KKworICB2b2lkIFZpc2l0U3RhdGljQXNzZXJ0RGVjbChjb25zdCBTdGF0aWNBc3NlcnREZWNsICpEKSB7CisgICAgVmlzaXQoRC0+Z2V0QXNzZXJ0RXhwcigpKTsKKyAgICBWaXNpdChELT5nZXRNZXNzYWdlKCkpOworICB9CisKKyAgdm9pZCBWaXNpdEZ1bmN0aW9uVGVtcGxhdGVEZWNsKGNvbnN0IEZ1bmN0aW9uVGVtcGxhdGVEZWNsICpEKSB7CisgICAgZHVtcFRlbXBsYXRlRGVjbChEKTsKKyAgfQorCisgIHZvaWQgVmlzaXRDbGFzc1RlbXBsYXRlRGVjbChjb25zdCBDbGFzc1RlbXBsYXRlRGVjbCAqRCkgeworICAgIGR1bXBUZW1wbGF0ZURlY2woRCk7CisgIH0KKworICB2b2lkIFZpc2l0Q2xhc3NUZW1wbGF0ZVNwZWNpYWxpemF0aW9uRGVjbCgKKyAgICAgIGNvbnN0IENsYXNzVGVtcGxhdGVTcGVjaWFsaXphdGlvbkRlY2wgKkQpIHsKKyAgICBkdW1wVGVtcGxhdGVBcmd1bWVudExpc3QoRC0+Z2V0VGVtcGxhdGVBcmdzKCkpOworICB9CisKKyAgdm9pZCBWaXNpdENsYXNzVGVtcGxhdGVQYXJ0aWFsU3BlY2lhbGl6YXRpb25EZWNsKAorICAgICAgY29uc3QgQ2xhc3NUZW1wbGF0ZVBhcnRpYWxTcGVjaWFsaXphdGlvbkRlY2wgKkQpIHsKKyAgICBWaXNpdENsYXNzVGVtcGxhdGVTcGVjaWFsaXphdGlvbkRlY2woRCk7CisgICAgZHVtcFRlbXBsYXRlUGFyYW1ldGVycyhELT5nZXRUZW1wbGF0ZVBhcmFtZXRlcnMoKSk7CisgIH0KKworICB2b2lkIFZpc2l0Q2xhc3NTY29wZUZ1bmN0aW9uU3BlY2lhbGl6YXRpb25EZWNsKAorICAgICAgY29uc3QgQ2xhc3NTY29wZUZ1bmN0aW9uU3BlY2lhbGl6YXRpb25EZWNsICpEKSB7CisgICAgVmlzaXQoRC0+Z2V0U3BlY2lhbGl6YXRpb24oKSk7CisgICAgaWYgKEQtPmhhc0V4cGxpY2l0VGVtcGxhdGVBcmdzKCkpCisgICAgICBkdW1wVGVtcGxhdGVBcmd1bWVudExpc3RJbmZvKEQtPnRlbXBsYXRlQXJncygpKTsKKyAgfQorICB2b2lkIFZpc2l0VmFyVGVtcGxhdGVEZWNsKGNvbnN0IFZhclRlbXBsYXRlRGVjbCAqRCkgeyBkdW1wVGVtcGxhdGVEZWNsKEQpOyB9CisKKyAgdm9pZCBWaXNpdEJ1aWx0aW5UZW1wbGF0ZURlY2woY29uc3QgQnVpbHRpblRlbXBsYXRlRGVjbCAqRCkgeworICAgIGR1bXBUZW1wbGF0ZVBhcmFtZXRlcnMoRC0+Z2V0VGVtcGxhdGVQYXJhbWV0ZXJzKCkpOworICB9CisKKyAgdm9pZAorICBWaXNpdFZhclRlbXBsYXRlU3BlY2lhbGl6YXRpb25EZWNsKGNvbnN0IFZhclRlbXBsYXRlU3BlY2lhbGl6YXRpb25EZWNsICpEKSB7CisgICAgZHVtcFRlbXBsYXRlQXJndW1lbnRMaXN0KEQtPmdldFRlbXBsYXRlQXJncygpKTsKKyAgICBWaXNpdFZhckRlY2woRCk7CisgIH0KKworICB2b2lkIFZpc2l0VmFyVGVtcGxhdGVQYXJ0aWFsU3BlY2lhbGl6YXRpb25EZWNsKAorICAgICAgY29uc3QgVmFyVGVtcGxhdGVQYXJ0aWFsU3BlY2lhbGl6YXRpb25EZWNsICpEKSB7CisgICAgZHVtcFRlbXBsYXRlUGFyYW1ldGVycyhELT5nZXRUZW1wbGF0ZVBhcmFtZXRlcnMoKSk7CisgICAgVmlzaXRWYXJUZW1wbGF0ZVNwZWNpYWxpemF0aW9uRGVjbChEKTsKKyAgfQorCisgIHZvaWQgVmlzaXRUZW1wbGF0ZVR5cGVQYXJtRGVjbChjb25zdCBUZW1wbGF0ZVR5cGVQYXJtRGVjbCAqRCkgeworICAgIGlmIChELT5oYXNEZWZhdWx0QXJndW1lbnQoKSkKKyAgICAgIFZpc2l0KEQtPmdldERlZmF1bHRBcmd1bWVudCgpLCBTb3VyY2VSYW5nZSgpLAorICAgICAgICAgICAgRC0+Z2V0RGVmYXVsdEFyZ1N0b3JhZ2UoKS5nZXRJbmhlcml0ZWRGcm9tKCksCisgICAgICAgICAgICBELT5kZWZhdWx0QXJndW1lbnRXYXNJbmhlcml0ZWQoKSA/ICJpbmhlcml0ZWQgZnJvbSIgOiAicHJldmlvdXMiKTsKKyAgfQorCisgIHZvaWQgVmlzaXROb25UeXBlVGVtcGxhdGVQYXJtRGVjbChjb25zdCBOb25UeXBlVGVtcGxhdGVQYXJtRGVjbCAqRCkgeworICAgIGlmIChELT5oYXNEZWZhdWx0QXJndW1lbnQoKSkKKyAgICAgIFZpc2l0KEQtPmdldERlZmF1bHRBcmd1bWVudCgpLCBTb3VyY2VSYW5nZSgpLAorICAgICAgICAgICAgRC0+Z2V0RGVmYXVsdEFyZ1N0b3JhZ2UoKS5nZXRJbmhlcml0ZWRGcm9tKCksCisgICAgICAgICAgICBELT5kZWZhdWx0QXJndW1lbnRXYXNJbmhlcml0ZWQoKSA/ICJpbmhlcml0ZWQgZnJvbSIgOiAicHJldmlvdXMiKTsKKyAgfQorCisgIHZvaWQgVmlzaXRUZW1wbGF0ZVRlbXBsYXRlUGFybURlY2woY29uc3QgVGVtcGxhdGVUZW1wbGF0ZVBhcm1EZWNsICpEKSB7CisgICAgZHVtcFRlbXBsYXRlUGFyYW1ldGVycyhELT5nZXRUZW1wbGF0ZVBhcmFtZXRlcnMoKSk7CisgICAgaWYgKEQtPmhhc0RlZmF1bHRBcmd1bWVudCgpKQorICAgICAgZHVtcFRlbXBsYXRlQXJndW1lbnRMb2MoCisgICAgICAgICAgRC0+Z2V0RGVmYXVsdEFyZ3VtZW50KCksIEQtPmdldERlZmF1bHRBcmdTdG9yYWdlKCkuZ2V0SW5oZXJpdGVkRnJvbSgpLAorICAgICAgICAgIEQtPmRlZmF1bHRBcmd1bWVudFdhc0luaGVyaXRlZCgpID8gImluaGVyaXRlZCBmcm9tIiA6ICJwcmV2aW91cyIpOworICB9CisKKyAgdm9pZCBWaXNpdFVzaW5nU2hhZG93RGVjbChjb25zdCBVc2luZ1NoYWRvd0RlY2wgKkQpIHsKKyAgICBpZiAoYXV0byAqVEQgPSBkeW5fY2FzdDxUeXBlRGVjbD4oRC0+Z2V0VW5kZXJseWluZ0RlY2woKSkpCisgICAgICBWaXNpdChURC0+Z2V0VHlwZUZvckRlY2woKSk7CisgIH0KKworICB2b2lkIFZpc2l0RnJpZW5kRGVjbChjb25zdCBGcmllbmREZWNsICpEKSB7CisgICAgaWYgKCFELT5nZXRGcmllbmRUeXBlKCkpCisgICAgICBWaXNpdChELT5nZXRGcmllbmREZWNsKCkpOworICB9CisKKyAgdm9pZCBWaXNpdE9iakNNZXRob2REZWNsKGNvbnN0IE9iakNNZXRob2REZWNsICpEKSB7CisgICAgaWYgKEQtPmlzVGhpc0RlY2xhcmF0aW9uQURlZmluaXRpb24oKSkKKyAgICAgIGR1bXBEZWNsQ29udGV4dChEKTsKKyAgICBlbHNlCisgICAgICBmb3IgKGNvbnN0IFBhcm1WYXJEZWNsICpQYXJhbWV0ZXIgOiBELT5wYXJhbWV0ZXJzKCkpCisgICAgICAgIFZpc2l0KFBhcmFtZXRlcik7CisKKyAgICBpZiAoRC0+aGFzQm9keSgpKQorICAgICAgVmlzaXQoRC0+Z2V0Qm9keSgpKTsKKyAgfQorCisgIHZvaWQgVmlzaXRPYmpDQ2F0ZWdvcnlEZWNsKGNvbnN0IE9iakNDYXRlZ29yeURlY2wgKkQpIHsKKyAgICBkdW1wT2JqQ1R5cGVQYXJhbUxpc3QoRC0+Z2V0VHlwZVBhcmFtTGlzdCgpKTsKKyAgfQorCisgIHZvaWQgVmlzaXRPYmpDSW50ZXJmYWNlRGVjbChjb25zdCBPYmpDSW50ZXJmYWNlRGVjbCAqRCkgeworICAgIGR1bXBPYmpDVHlwZVBhcmFtTGlzdChELT5nZXRUeXBlUGFyYW1MaXN0QXNXcml0dGVuKCkpOworICB9CisKKyAgdm9pZCBWaXNpdE9iakNJbXBsZW1lbnRhdGlvbkRlY2woY29uc3QgT2JqQ0ltcGxlbWVudGF0aW9uRGVjbCAqRCkgeworICAgIGZvciAoY29uc3QgYXV0byAmSSA6IEQtPmluaXRzKCkpCisgICAgICBWaXNpdChJKTsKKyAgfQorCisgIHZvaWQgVmlzaXRCbG9ja0RlY2woY29uc3QgQmxvY2tEZWNsICpEKSB7CisgICAgZm9yIChjb25zdCBhdXRvICZJIDogRC0+cGFyYW1ldGVycygpKQorICAgICAgVmlzaXQoSSk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8gJkkgOiBELT5jYXB0dXJlcygpKQorICAgICAgVmlzaXQoSSk7CisgICAgVmlzaXQoRC0+Z2V0Qm9keSgpKTsKKyAgfQorCisgIHZvaWQgVmlzaXREZWNsU3RtdChjb25zdCBEZWNsU3RtdCAqTm9kZSkgeworICAgIGZvciAoY29uc3QgYXV0byAmRCA6IE5vZGUtPmRlY2xzKCkpCisgICAgICBWaXNpdChEKTsKKyAgfQorCisgIHZvaWQgVmlzaXRBdHRyaWJ1dGVkU3RtdChjb25zdCBBdHRyaWJ1dGVkU3RtdCAqTm9kZSkgeworICAgIGZvciAoY29uc3QgYXV0byAqQSA6IE5vZGUtPmdldEF0dHJzKCkpCisgICAgICBWaXNpdChBKTsKKyAgfQorCisgIHZvaWQgVmlzaXRDWFhDYXRjaFN0bXQoY29uc3QgQ1hYQ2F0Y2hTdG10ICpOb2RlKSB7CisgICAgVmlzaXQoTm9kZS0+Z2V0RXhjZXB0aW9uRGVjbCgpKTsKKyAgfQorCisgIHZvaWQgVmlzaXRDYXB0dXJlZFN0bXQoY29uc3QgQ2FwdHVyZWRTdG10ICpOb2RlKSB7CisgICAgVmlzaXQoTm9kZS0+Z2V0Q2FwdHVyZWREZWNsKCkpOworICB9CisKKyAgdm9pZCBWaXNpdE9NUEV4ZWN1dGFibGVEaXJlY3RpdmUoY29uc3QgT01QRXhlY3V0YWJsZURpcmVjdGl2ZSAqTm9kZSkgeworICAgIGZvciAoY29uc3QgYXV0byAqQyA6IE5vZGUtPmNsYXVzZXMoKSkKKyAgICAgIFZpc2l0KEMpOworICB9CisKKyAgdm9pZCBWaXNpdEluaXRMaXN0RXhwcihjb25zdCBJbml0TGlzdEV4cHIgKklMRSkgeworICAgIGlmIChhdXRvICpGaWxsZXIgPSBJTEUtPmdldEFycmF5RmlsbGVyKCkpIHsKKyAgICAgIFZpc2l0KEZpbGxlciwgImFycmF5X2ZpbGxlciIpOworICAgIH0KKyAgfQorCisgIHZvaWQgVmlzaXRCbG9ja0V4cHIoY29uc3QgQmxvY2tFeHByICpOb2RlKSB7IFZpc2l0KE5vZGUtPmdldEJsb2NrRGVjbCgpKTsgfQorCisgIHZvaWQgVmlzaXRPcGFxdWVWYWx1ZUV4cHIoY29uc3QgT3BhcXVlVmFsdWVFeHByICpOb2RlKSB7CisgICAgaWYgKEV4cHIgKlNvdXJjZSA9IE5vZGUtPmdldFNvdXJjZUV4cHIoKSkKKyAgICAgIFZpc2l0KFNvdXJjZSk7CisgIH0KKworICB2b2lkIFZpc2l0R2VuZXJpY1NlbGVjdGlvbkV4cHIoY29uc3QgR2VuZXJpY1NlbGVjdGlvbkV4cHIgKkUpIHsKKyAgICBWaXNpdChFLT5nZXRDb250cm9sbGluZ0V4cHIoKSk7CisgICAgVmlzaXQoRS0+Z2V0Q29udHJvbGxpbmdFeHByKCktPmdldFR5cGUoKSk7IC8vIEZJWE1FOiByZW1vdmUKKworICAgIGZvciAoY29uc3QgYXV0byAmQXNzb2MgOiBFLT5hc3NvY2lhdGlvbnMoKSkgeworICAgICAgVmlzaXQoQXNzb2MpOworICAgIH0KKyAgfQorCisgIHZvaWQgVmlzaXRMYW1iZGFFeHByKGNvbnN0IExhbWJkYUV4cHIgKk5vZGUpIHsKKyAgICBWaXNpdChOb2RlLT5nZXRMYW1iZGFDbGFzcygpKTsKKyAgfQorCisgIHZvaWQgVmlzaXRTaXplT2ZQYWNrRXhwcihjb25zdCBTaXplT2ZQYWNrRXhwciAqTm9kZSkgeworICAgIGlmIChOb2RlLT5pc1BhcnRpYWxseVN1YnN0aXR1dGVkKCkpCisgICAgICBmb3IgKGNvbnN0IGF1dG8gJkEgOiBOb2RlLT5nZXRQYXJ0aWFsQXJndW1lbnRzKCkpCisgICAgICAgIFZpc2l0KEEpOworICB9CisKKyAgdm9pZCBWaXNpdE9iakNBdENhdGNoU3RtdChjb25zdCBPYmpDQXRDYXRjaFN0bXQgKk5vZGUpIHsKKyAgICBpZiAoY29uc3QgVmFyRGVjbCAqQ2F0Y2hQYXJhbSA9IE5vZGUtPmdldENhdGNoUGFyYW1EZWNsKCkpCisgICAgICBWaXNpdChDYXRjaFBhcmFtKTsKKyAgfQorCisgIHZvaWQgVmlzaXRFeHByZXNzaW9uVGVtcGxhdGVBcmd1bWVudChjb25zdCBUZW1wbGF0ZUFyZ3VtZW50ICZUQSkgeworICAgIFZpc2l0KFRBLmdldEFzRXhwcigpKTsKKyAgfQorICB2b2lkIFZpc2l0UGFja1RlbXBsYXRlQXJndW1lbnQoY29uc3QgVGVtcGxhdGVBcmd1bWVudCAmVEEpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJlRBcmcgOiBUQS5wYWNrX2VsZW1lbnRzKCkpCisgICAgICBWaXNpdChUQXJnKTsKKyAgfQorCisgIC8vIEltcGxlbWVudHMgVmlzaXQgbWV0aG9kcyBmb3IgQXR0cnMuCisjaW5jbHVkZSAiY2xhbmcvQVNUL0F0dHJOb2RlVHJhdmVyc2UuaW5jIgorfTsKKworfSAvLyBuYW1lc3BhY2UgY2xhbmcKKworI2VuZGlmIC8vIExMVk1fQ0xBTkdfQVNUX0FTVE5PREVUUkFWRVJTRVJfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVFN0cnVjdHVyYWxFcXVpdmFsZW5jZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVFN0cnVjdHVyYWxFcXVpdmFsZW5jZS5oCmluZGV4IDIwMzc3OTYuLjJmY2MwZWEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RTdHJ1Y3R1cmFsRXF1aXZhbGVuY2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNUU3RydWN0dXJhbEVxdWl2YWxlbmNlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQVNUU3RydWN0dXJhbEVxdWl2YWxlbmNlLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE1LDYgKzE0LDcgQEAKICNpZm5kZWYgTExWTV9DTEFOR19BU1RfQVNUU1RSVUNUVVJBTEVRVUlWQUxFTkNFX0gKICNkZWZpbmUgTExWTV9DTEFOR19BU1RfQVNUU1RSVUNUVVJBTEVRVUlWQUxFTkNFX0gKIAorI2luY2x1ZGUgImNsYW5nL0FTVC9EZWNsQmFzZS5oIgogI2luY2x1ZGUgImxsdm0vQURUL0RlbnNlTWFwLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvRGVuc2VTZXQuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9PcHRpb25hbC5oIgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVFR5cGVUcmFpdHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RUeXBlVHJhaXRzLmgKaW5kZXggOWRmOTc5My4uNzFjMGVjNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVFR5cGVUcmFpdHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNUVHlwZVRyYWl0cy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQVNUVHlwZVRyYWl0cy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNUVW5yZXNvbHZlZFNldC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVFVucmVzb2x2ZWRTZXQuaAppbmRleCA5YmY2M2JiLi44ZDJiMjNiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNUVW5yZXNvbHZlZFNldC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RVbnJlc29sdmVkU2V0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQVNUVW5yZXNvbHZlZFNldC5oIC0gVW5yZXNvbHZlZCBzZXRzIG9mIGRlY2xhcmF0aW9ucyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RWZWN0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BU1RWZWN0b3IuaAppbmRleCA4MGNkNmI3Li5kNWEwNDc2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQVNUVmVjdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0FTVFZlY3Rvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEFTVFZlY3Rvci5oIC0gVmVjdG9yIHRoYXQgdXNlcyBBU1RDb250ZXh0IGZvciBhbGxvY2F0aW9uIC0tLSotIEMrKyAtKi09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xOCw2ICsxNyw3IEBACiAjaWZuZGVmIExMVk1fQ0xBTkdfQVNUX0FTVFZFQ1RPUl9ICiAjZGVmaW5lIExMVk1fQ0xBTkdfQVNUX0FTVFZFQ1RPUl9ICiAKKyNpbmNsdWRlICJjbGFuZy9BU1QvQVNUQ29udGV4dEFsbG9jYXRlLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvUG9pbnRlckludFBhaXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y2Fzc2VydD4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BdHRyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQXR0ci5oCmluZGV4IDRlZTA4MzkuLjFmYmVkN2MgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BdHRyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0F0dHIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEF0dHIuaCAtIENsYXNzZXMgZm9yIHJlcHJlc2VudGluZyBhdHRyaWJ1dGVzIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNCw2ICsxMyw3IEBACiAjaWZuZGVmIExMVk1fQ0xBTkdfQVNUX0FUVFJfSAogI2RlZmluZSBMTFZNX0NMQU5HX0FTVF9BVFRSX0gKIAorI2luY2x1ZGUgImNsYW5nL0FTVC9BU1RDb250ZXh0QWxsb2NhdGUuaCIgIC8vIEZvciBBdHRycy5pbmMKICNpbmNsdWRlICJjbGFuZy9BU1QvQXR0ckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2xhbmcvQVNUL0RlY2wuaCIKICNpbmNsdWRlICJjbGFuZy9BU1QvRXhwci5oIgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0F0dHJEdW1wLmluYyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BdHRyRHVtcC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmY2QwNzAuLjAwMDAwMDAKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0F0dHJEdW1wLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEzNjUgKzAsMCBAQAotLyo9PT0tIFRhYmxlR2VuJ2VyYXRlZCBmaWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09KlwKLXwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiBBdHRyaWJ1dGUgZHVtcGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGUsIGRvIG5vdCBlZGl0ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotXCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ki8KLQotICBzd2l0Y2ggKEEtPmdldEtpbmQoKSkgewotICBjYXNlIGF0dHI6OkFNREdQVUZsYXRXb3JrR3JvdXBTaXplOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFNREdQVUZsYXRXb3JrR3JvdXBTaXplQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRNaW4oKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldE1heCgpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6QU1ER1BVTnVtU0dQUjogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBTURHUFVOdW1TR1BSQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiAiIDw8IFNBLT5nZXROdW1TR1BSKCk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpBTURHUFVOdW1WR1BSOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFNREdQVU51bVZHUFJBdHRyPihBKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldE51bVZHUFIoKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkFNREdQVVdhdmVzUGVyRVU6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QU1ER1BVV2F2ZXNQZXJFVUF0dHI+KEEpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0TWluKCk7Ci0gICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRNYXgoKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkFSTUludGVycnVwdDogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBUk1JbnRlcnJ1cHRBdHRyPihBKTsKLSAgICBzd2l0Y2goU0EtPmdldEludGVycnVwdCgpKSB7Ci0gICAgY2FzZSBBUk1JbnRlcnJ1cHRBdHRyOjpJUlE6Ci0gICAgICBPUyA8PCAiIElSUSI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEFSTUludGVycnVwdEF0dHI6OkZJUToKLSAgICAgIE9TIDw8ICIgRklRIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgQVJNSW50ZXJydXB0QXR0cjo6U1dJOgotICAgICAgT1MgPDwgIiBTV0kiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBUk1JbnRlcnJ1cHRBdHRyOjpBQk9SVDoKLSAgICAgIE9TIDw8ICIgQUJPUlQiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBUk1JbnRlcnJ1cHRBdHRyOjpVTkRFRjoKLSAgICAgIE9TIDw8ICIgVU5ERUYiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBBUk1JbnRlcnJ1cHRBdHRyOjpHZW5lcmljOgotICAgICAgT1MgPDwgIiBHZW5lcmljIjsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkFWUkludGVycnVwdDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6QVZSU2lnbmFsOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpBYmlUYWc6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QWJpVGFnQXR0cj4oQSk7Ci0gICAgZm9yIChjb25zdCBhdXRvICZWYWwgOiBTQS0+dGFncygpKQotICAgICAgT1MgPDwgIiAiIDw8IFZhbDsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkFjcXVpcmVDYXBhYmlsaXR5OiB7Ci0gICAgT1MgPDwgIiAiIDw8IEEtPmdldFNwZWxsaW5nKCk7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFjcXVpcmVDYXBhYmlsaXR5QXR0cj4oQSk7Ci0gICAgZm9yIChBY3F1aXJlQ2FwYWJpbGl0eUF0dHI6OmFyZ3NfaXRlcmF0b3IgSSA9IFNBLT5hcmdzX2JlZ2luKCksIEUgPSBTQS0+YXJnc19lbmQoKTsgSSAhPSBFOyArK0kpCi0gICAgICBkdW1wU3RtdCgqSSk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpBY3F1aXJlZEFmdGVyOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFjcXVpcmVkQWZ0ZXJBdHRyPihBKTsKLSAgICBmb3IgKEFjcXVpcmVkQWZ0ZXJBdHRyOjphcmdzX2l0ZXJhdG9yIEkgPSBTQS0+YXJnc19iZWdpbigpLCBFID0gU0EtPmFyZ3NfZW5kKCk7IEkgIT0gRTsgKytJKQotICAgICAgZHVtcFN0bXQoKkkpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6QWNxdWlyZWRCZWZvcmU6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QWNxdWlyZWRCZWZvcmVBdHRyPihBKTsKLSAgICBmb3IgKEFjcXVpcmVkQmVmb3JlQXR0cjo6YXJnc19pdGVyYXRvciBJID0gU0EtPmFyZ3NfYmVnaW4oKSwgRSA9IFNBLT5hcmdzX2VuZCgpOyBJICE9IEU7ICsrSSkKLSAgICAgIGR1bXBTdG10KCpJKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkFkZHJlc3NTcGFjZTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBZGRyZXNzU3BhY2VBdHRyPihBKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldEFkZHJlc3NTcGFjZSgpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6QWxpYXM6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QWxpYXNBdHRyPihBKTsKLSAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0QWxpYXNlZSgpIDw8ICJcIiI7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpBbGlnbk1hYzY4azogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6QWxpZ25WYWx1ZTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBbGlnblZhbHVlQXR0cj4oQSk7Ci0gICAgZHVtcFN0bXQoU0EtPmdldEFsaWdubWVudCgpKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkFsaWduZWQ6IHsKLSAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QWxpZ25lZEF0dHI+KEEpOwotICAgIGlmIChTQS0+aXNBbGlnbm1lbnRFeHByKCkpCi0gICAgICBkdW1wU3RtdChTQS0+Z2V0QWxpZ25tZW50RXhwcigpKTsKLSAgICBlbHNlCi0gICAgICBkdW1wVHlwZShTQS0+Z2V0QWxpZ25tZW50VHlwZSgpLT5nZXRUeXBlKCkpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6QWxsb2NBbGlnbjogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBbGxvY0FsaWduQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRQYXJhbUluZGV4KCkuZ2V0U291cmNlSW5kZXgoKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkFsbG9jU2l6ZTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBbGxvY1NpemVBdHRyPihBKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldEVsZW1TaXplUGFyYW0oKS5nZXRTb3VyY2VJbmRleCgpOwotICAgIGlmIChTQS0+Z2V0TnVtRWxlbXNQYXJhbSgpLmlzVmFsaWQoKSkKLSAgICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0TnVtRWxlbXNQYXJhbSgpLmdldFNvdXJjZUluZGV4KCk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpBbHdheXNEZXN0cm95OiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpBbHdheXNJbmxpbmU6IHsKLSAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkFuYWx5emVyTm9SZXR1cm46IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkFubm90YXRlOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFubm90YXRlQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldEFubm90YXRpb24oKSA8PCAiXCIiOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6QW55WDg2SW50ZXJydXB0OiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpBbnlYODZOb0NhbGxlclNhdmVkUmVnaXN0ZXJzOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpBbnlYODZOb0NmQ2hlY2s6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkFyY1dlYWtyZWZVbmF2YWlsYWJsZTogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6QXJndW1lbnRXaXRoVHlwZVRhZzogewotICAgIE9TIDw8ICIgIiA8PCBBLT5nZXRTcGVsbGluZygpOwotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBcmd1bWVudFdpdGhUeXBlVGFnQXR0cj4oQSk7Ci0gICAgaWYgKFNBLT5nZXRBcmd1bWVudEtpbmQoKSkKLSAgICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0QXJndW1lbnRLaW5kKCktPmdldE5hbWUoKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldEFyZ3VtZW50SWR4KCkuZ2V0U291cmNlSW5kZXgoKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldFR5cGVUYWdJZHgoKS5nZXRTb3VyY2VJbmRleCgpOwotICAgIGlmIChTQS0+Z2V0SXNQb2ludGVyKCkpIE9TIDw8ICIgSXNQb2ludGVyIjsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkFydGlmaWNpYWw6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkFzbUxhYmVsOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFzbUxhYmVsQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldExhYmVsKCkgPDwgIlwiIjsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkFzc2VydENhcGFiaWxpdHk6IHsKLSAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QXNzZXJ0Q2FwYWJpbGl0eUF0dHI+KEEpOwotICAgIGZvciAoQXNzZXJ0Q2FwYWJpbGl0eUF0dHI6OmFyZ3NfaXRlcmF0b3IgSSA9IFNBLT5hcmdzX2JlZ2luKCksIEUgPSBTQS0+YXJnc19lbmQoKTsgSSAhPSBFOyArK0kpCi0gICAgICBkdW1wU3RtdCgqSSk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpBc3NlcnRFeGNsdXNpdmVMb2NrOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFzc2VydEV4Y2x1c2l2ZUxvY2tBdHRyPihBKTsKLSAgICBmb3IgKEFzc2VydEV4Y2x1c2l2ZUxvY2tBdHRyOjphcmdzX2l0ZXJhdG9yIEkgPSBTQS0+YXJnc19iZWdpbigpLCBFID0gU0EtPmFyZ3NfZW5kKCk7IEkgIT0gRTsgKytJKQotICAgICAgZHVtcFN0bXQoKkkpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6QXNzZXJ0U2hhcmVkTG9jazogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBc3NlcnRTaGFyZWRMb2NrQXR0cj4oQSk7Ci0gICAgZm9yIChBc3NlcnRTaGFyZWRMb2NrQXR0cjo6YXJnc19pdGVyYXRvciBJID0gU0EtPmFyZ3NfYmVnaW4oKSwgRSA9IFNBLT5hcmdzX2VuZCgpOyBJICE9IEU7ICsrSSkKLSAgICAgIGR1bXBTdG10KCpJKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkFzc3VtZUFsaWduZWQ6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QXNzdW1lQWxpZ25lZEF0dHI+KEEpOwotICAgIGR1bXBTdG10KFNBLT5nZXRBbGlnbm1lbnQoKSk7Ci0gICAgZHVtcFN0bXQoU0EtPmdldE9mZnNldCgpKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkF2YWlsYWJpbGl0eTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBdmFpbGFiaWxpdHlBdHRyPihBKTsKLSAgICBpZiAoU0EtPmdldFBsYXRmb3JtKCkpCi0gICAgICBPUyA8PCAiICIgPDwgU0EtPmdldFBsYXRmb3JtKCktPmdldE5hbWUoKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldEludHJvZHVjZWQoKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldERlcHJlY2F0ZWQoKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldE9ic29sZXRlZCgpOwotICAgIGlmIChTQS0+Z2V0VW5hdmFpbGFibGUoKSkgT1MgPDwgIiBVbmF2YWlsYWJsZSI7Ci0gICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldE1lc3NhZ2UoKSA8PCAiXCIiOwotICAgIGlmIChTQS0+Z2V0U3RyaWN0KCkpIE9TIDw8ICIgU3RyaWN0IjsKLSAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0UmVwbGFjZW1lbnQoKSA8PCAiXCIiOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6QmxvY2tzOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEJsb2Nrc0F0dHI+KEEpOwotICAgIHN3aXRjaChTQS0+Z2V0VHlwZSgpKSB7Ci0gICAgY2FzZSBCbG9ja3NBdHRyOjpCeVJlZjoKLSAgICAgIE9TIDw8ICIgQnlSZWYiOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6QzExTm9SZXR1cm46IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkNEZWNsOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpDRkF1ZGl0ZWRUcmFuc2ZlcjogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Q0ZDb25zdW1lZDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Q0ZSZXR1cm5zTm90UmV0YWluZWQ6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkNGUmV0dXJuc1JldGFpbmVkOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpDRlVua25vd25UcmFuc2ZlcjogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Q1BVRGlzcGF0Y2g6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8Q1BVRGlzcGF0Y2hBdHRyPihBKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8gJlZhbCA6IFNBLT5jcHVzKCkpCi0gICAgICBPUyA8PCAiICIgPDwgVmFsOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Q1BVU3BlY2lmaWM6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8Q1BVU3BlY2lmaWNBdHRyPihBKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8gJlZhbCA6IFNBLT5jcHVzKCkpCi0gICAgICBPUyA8PCAiICIgPDwgVmFsOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Q1VEQUNvbnN0YW50OiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpDVURBRGV2aWNlOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpDVURBR2xvYmFsOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpDVURBSG9zdDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Q1VEQUludmFsaWRUYXJnZXQ6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkNVREFMYXVuY2hCb3VuZHM6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8Q1VEQUxhdW5jaEJvdW5kc0F0dHI+KEEpOwotICAgIGR1bXBTdG10KFNBLT5nZXRNYXhUaHJlYWRzKCkpOwotICAgIGR1bXBTdG10KFNBLT5nZXRNaW5CbG9ja3MoKSk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpDVURBU2hhcmVkOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpDWFgxMU5vUmV0dXJuOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpDYWxsYWJsZVdoZW46IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8Q2FsbGFibGVXaGVuQXR0cj4oQSk7Ci0gICAgZm9yIChDYWxsYWJsZVdoZW5BdHRyOjpjYWxsYWJsZVN0YXRlc19pdGVyYXRvciBJID0gU0EtPmNhbGxhYmxlU3RhdGVzX2JlZ2luKCksIEUgPSBTQS0+Y2FsbGFibGVTdGF0ZXNfZW5kKCk7IEkgIT0gRTsgKytJKSB7Ci0gICAgICBzd2l0Y2goKkkpIHsKLSAgICBjYXNlIENhbGxhYmxlV2hlbkF0dHI6OlVua25vd246Ci0gICAgICBPUyA8PCAiIFVua25vd24iOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDYWxsYWJsZVdoZW5BdHRyOjpDb25zdW1lZDoKLSAgICAgIE9TIDw8ICIgQ29uc3VtZWQiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDYWxsYWJsZVdoZW5BdHRyOjpVbmNvbnN1bWVkOgotICAgICAgT1MgPDwgIiBVbmNvbnN1bWVkIjsKLSAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkNhcGFiaWxpdHk6IHsKLSAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8Q2FwYWJpbGl0eUF0dHI+KEEpOwotICAgIE9TIDw8ICIgXCIiIDw8IFNBLT5nZXROYW1lKCkgPDwgIlwiIjsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkNhcHR1cmVkUmVjb3JkOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpDYXJyaWVzRGVwZW5kZW5jeTogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Q2xlYW51cDogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxDbGVhbnVwQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiAiOwotICAgIGR1bXBCYXJlRGVjbFJlZihTQS0+Z2V0RnVuY3Rpb25EZWNsKCkpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Q29kZVNlZzogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxDb2RlU2VnQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldE5hbWUoKSA8PCAiXCIiOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Q29sZDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Q29tbW9uOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpDb25zdDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Q29uc3RydWN0b3I6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8Q29uc3RydWN0b3JBdHRyPihBKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldFByaW9yaXR5KCk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpDb25zdW1hYmxlOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PENvbnN1bWFibGVBdHRyPihBKTsKLSAgICBzd2l0Y2goU0EtPmdldERlZmF1bHRTdGF0ZSgpKSB7Ci0gICAgY2FzZSBDb25zdW1hYmxlQXR0cjo6VW5rbm93bjoKLSAgICAgIE9TIDw8ICIgVW5rbm93biI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIENvbnN1bWFibGVBdHRyOjpDb25zdW1lZDoKLSAgICAgIE9TIDw8ICIgQ29uc3VtZWQiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDb25zdW1hYmxlQXR0cjo6VW5jb25zdW1lZDoKLSAgICAgIE9TIDw8ICIgVW5jb25zdW1lZCI7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpDb25zdW1hYmxlQXV0b0Nhc3Q6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkNvbnN1bWFibGVTZXRPblJlYWQ6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkNvbnZlcmdlbnQ6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkRMTEV4cG9ydDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6RExMSW1wb3J0OiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpEZXByZWNhdGVkOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PERlcHJlY2F0ZWRBdHRyPihBKTsKLSAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0TWVzc2FnZSgpIDw8ICJcIiI7Ci0gICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldFJlcGxhY2VtZW50KCkgPDwgIlwiIjsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkRlc3RydWN0b3I6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8RGVzdHJ1Y3RvckF0dHI+KEEpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0UHJpb3JpdHkoKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkRpYWdub3NlSWY6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8RGlhZ25vc2VJZkF0dHI+KEEpOwotICAgIE9TIDw8ICIgXCIiIDw8IFNBLT5nZXRNZXNzYWdlKCkgPDwgIlwiIjsKLSAgICBzd2l0Y2goU0EtPmdldERpYWdub3N0aWNUeXBlKCkpIHsKLSAgICBjYXNlIERpYWdub3NlSWZBdHRyOjpEVF9FcnJvcjoKLSAgICAgIE9TIDw8ICIgRFRfRXJyb3IiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaWFnbm9zZUlmQXR0cjo6RFRfV2FybmluZzoKLSAgICAgIE9TIDw8ICIgRFRfV2FybmluZyI7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKFNBLT5nZXRBcmdEZXBlbmRlbnQoKSkgT1MgPDwgIiBBcmdEZXBlbmRlbnQiOwotICAgIE9TIDw8ICIgIjsKLSAgICBkdW1wQmFyZURlY2xSZWYoU0EtPmdldFBhcmVudCgpKTsKLSAgICBkdW1wU3RtdChTQS0+Z2V0Q29uZCgpKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkRpc2FibGVUYWlsQ2FsbHM6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkVtcHR5QmFzZXM6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkVuYWJsZUlmOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEVuYWJsZUlmQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldE1lc3NhZ2UoKSA8PCAiXCIiOwotICAgIGR1bXBTdG10KFNBLT5nZXRDb25kKCkpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6RW51bUV4dGVuc2liaWxpdHk6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8RW51bUV4dGVuc2liaWxpdHlBdHRyPihBKTsKLSAgICBzd2l0Y2goU0EtPmdldEV4dGVuc2liaWxpdHkoKSkgewotICAgIGNhc2UgRW51bUV4dGVuc2liaWxpdHlBdHRyOjpDbG9zZWQ6Ci0gICAgICBPUyA8PCAiIENsb3NlZCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEVudW1FeHRlbnNpYmlsaXR5QXR0cjo6T3BlbjoKLSAgICAgIE9TIDw8ICIgT3BlbiI7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpFeGNsdWRlRnJvbUV4cGxpY2l0SW5zdGFudGlhdGlvbjogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6RXhjbHVzaXZlVHJ5bG9ja0Z1bmN0aW9uOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEV4Y2x1c2l2ZVRyeWxvY2tGdW5jdGlvbkF0dHI+KEEpOwotICAgIGR1bXBTdG10KFNBLT5nZXRTdWNjZXNzVmFsdWUoKSk7Ci0gICAgZm9yIChFeGNsdXNpdmVUcnlsb2NrRnVuY3Rpb25BdHRyOjphcmdzX2l0ZXJhdG9yIEkgPSBTQS0+YXJnc19iZWdpbigpLCBFID0gU0EtPmFyZ3NfZW5kKCk7IEkgIT0gRTsgKytJKQotICAgICAgZHVtcFN0bXQoKkkpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6RXh0ZXJuYWxTb3VyY2VTeW1ib2w6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8RXh0ZXJuYWxTb3VyY2VTeW1ib2xBdHRyPihBKTsKLSAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0TGFuZ3VhZ2UoKSA8PCAiXCIiOwotICAgIE9TIDw8ICIgXCIiIDw8IFNBLT5nZXREZWZpbmVkSW4oKSA8PCAiXCIiOwotICAgIGlmIChTQS0+Z2V0R2VuZXJhdGVkRGVjbGFyYXRpb24oKSkgT1MgPDwgIiBHZW5lcmF0ZWREZWNsYXJhdGlvbiI7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpGYWxsVGhyb3VnaDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6RmFzdENhbGw6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkZpbmFsOiB7Ci0gICAgT1MgPDwgIiAiIDw8IEEtPmdldFNwZWxsaW5nKCk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpGbGFnRW51bTogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6RmxhdHRlbjogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Rm9ybWF0OiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEZvcm1hdEF0dHI+KEEpOwotICAgIGlmIChTQS0+Z2V0VHlwZSgpKQotICAgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRUeXBlKCktPmdldE5hbWUoKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldEZvcm1hdElkeCgpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0Rmlyc3RBcmcoKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkZvcm1hdEFyZzogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxGb3JtYXRBcmdBdHRyPihBKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldEZvcm1hdElkeCgpLmdldFNvdXJjZUluZGV4KCk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpHTlVJbmxpbmU6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Okd1YXJkZWRCeTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxHdWFyZGVkQnlBdHRyPihBKTsKLSAgICBkdW1wU3RtdChTQS0+Z2V0QXJnKCkpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6R3VhcmRlZFZhcjogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6SG90OiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpJQkFjdGlvbjogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6SUJPdXRsZXQ6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OklCT3V0bGV0Q29sbGVjdGlvbjogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxJQk91dGxldENvbGxlY3Rpb25BdHRyPihBKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldEludGVyZmFjZSgpLmdldEFzU3RyaW5nKCk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpJRnVuYzogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxJRnVuY0F0dHI+KEEpOwotICAgIE9TIDw8ICIgXCIiIDw8IFNBLT5nZXRSZXNvbHZlcigpIDw8ICJcIiI7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpJbml0UHJpb3JpdHk6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8SW5pdFByaW9yaXR5QXR0cj4oQSk7Ci0gICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRQcmlvcml0eSgpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6SW5pdFNlZzogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxJbml0U2VnQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldFNlY3Rpb24oKSA8PCAiXCIiOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6SW50ZWxPY2xCaWNjOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpJbnRlcm5hbExpbmthZ2U6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkxUT1Zpc2liaWxpdHlQdWJsaWM6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OkxheW91dFZlcnNpb246IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8TGF5b3V0VmVyc2lvbkF0dHI+KEEpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0VmVyc2lvbigpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6TGlmZXRpbWVCb3VuZDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6TG9ja1JldHVybmVkOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PExvY2tSZXR1cm5lZEF0dHI+KEEpOwotICAgIGR1bXBTdG10KFNBLT5nZXRBcmcoKSk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpMb2Nrc0V4Y2x1ZGVkOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PExvY2tzRXhjbHVkZWRBdHRyPihBKTsKLSAgICBmb3IgKExvY2tzRXhjbHVkZWRBdHRyOjphcmdzX2l0ZXJhdG9yIEkgPSBTQS0+YXJnc19iZWdpbigpLCBFID0gU0EtPmFyZ3NfZW5kKCk7IEkgIT0gRTsgKytJKQotICAgICAgZHVtcFN0bXQoKkkpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6TG9vcEhpbnQ6IHsKLSAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8TG9vcEhpbnRBdHRyPihBKTsKLSAgICBzd2l0Y2goU0EtPmdldE9wdGlvbigpKSB7Ci0gICAgY2FzZSBMb29wSGludEF0dHI6OlZlY3Rvcml6ZToKLSAgICAgIE9TIDw8ICIgVmVjdG9yaXplIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTG9vcEhpbnRBdHRyOjpWZWN0b3JpemVXaWR0aDoKLSAgICAgIE9TIDw8ICIgVmVjdG9yaXplV2lkdGgiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMb29wSGludEF0dHI6OkludGVybGVhdmU6Ci0gICAgICBPUyA8PCAiIEludGVybGVhdmUiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMb29wSGludEF0dHI6OkludGVybGVhdmVDb3VudDoKLSAgICAgIE9TIDw8ICIgSW50ZXJsZWF2ZUNvdW50IjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTG9vcEhpbnRBdHRyOjpVbnJvbGw6Ci0gICAgICBPUyA8PCAiIFVucm9sbCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIExvb3BIaW50QXR0cjo6VW5yb2xsQ291bnQ6Ci0gICAgICBPUyA8PCAiIFVucm9sbENvdW50IjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTG9vcEhpbnRBdHRyOjpVbnJvbGxBbmRKYW06Ci0gICAgICBPUyA8PCAiIFVucm9sbEFuZEphbSI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIExvb3BIaW50QXR0cjo6VW5yb2xsQW5kSmFtQ291bnQ6Ci0gICAgICBPUyA8PCAiIFVucm9sbEFuZEphbUNvdW50IjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTG9vcEhpbnRBdHRyOjpEaXN0cmlidXRlOgotICAgICAgT1MgPDwgIiBEaXN0cmlidXRlIjsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBzd2l0Y2goU0EtPmdldFN0YXRlKCkpIHsKLSAgICBjYXNlIExvb3BIaW50QXR0cjo6RW5hYmxlOgotICAgICAgT1MgPDwgIiBFbmFibGUiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMb29wSGludEF0dHI6OkRpc2FibGU6Ci0gICAgICBPUyA8PCAiIERpc2FibGUiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMb29wSGludEF0dHI6Ok51bWVyaWM6Ci0gICAgICBPUyA8PCAiIE51bWVyaWMiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMb29wSGludEF0dHI6OkFzc3VtZVNhZmV0eToKLSAgICAgIE9TIDw8ICIgQXNzdW1lU2FmZXR5IjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTG9vcEhpbnRBdHRyOjpGdWxsOgotICAgICAgT1MgPDwgIiBGdWxsIjsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkdW1wU3RtdChTQS0+Z2V0VmFsdWUoKSk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpNU0FCSTogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6TVNJbmhlcml0YW5jZTogewotICAgIE9TIDw8ICIgIiA8PCBBLT5nZXRTcGVsbGluZygpOwotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxNU0luaGVyaXRhbmNlQXR0cj4oQSk7Ci0gICAgaWYgKFNBLT5nZXRCZXN0Q2FzZSgpKSBPUyA8PCAiIEJlc3RDYXNlIjsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok1TTm9WVGFibGU6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok1TUDQzMEludGVycnVwdDogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxNU1A0MzBJbnRlcnJ1cHRBdHRyPihBKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldE51bWJlcigpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6TVNTdHJ1Y3Q6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok1TVnRvckRpc3A6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8TVNWdG9yRGlzcEF0dHI+KEEpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0VmRtKCk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpNYXhGaWVsZEFsaWdubWVudDogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxNYXhGaWVsZEFsaWdubWVudEF0dHI+KEEpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0QWxpZ25tZW50KCk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpNYXlBbGlhczogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6TWljcm9NaXBzOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpNaW5TaXplOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpNaW5WZWN0b3JXaWR0aDogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxNaW5WZWN0b3JXaWR0aEF0dHI+KEEpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0VmVjdG9yV2lkdGgoKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok1pcHMxNjogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6TWlwc0ludGVycnVwdDogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxNaXBzSW50ZXJydXB0QXR0cj4oQSk7Ci0gICAgc3dpdGNoKFNBLT5nZXRJbnRlcnJ1cHQoKSkgewotICAgIGNhc2UgTWlwc0ludGVycnVwdEF0dHI6OnN3MDoKLSAgICAgIE9TIDw8ICIgc3cwIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTWlwc0ludGVycnVwdEF0dHI6OnN3MToKLSAgICAgIE9TIDw8ICIgc3cxIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTWlwc0ludGVycnVwdEF0dHI6Omh3MDoKLSAgICAgIE9TIDw8ICIgaHcwIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTWlwc0ludGVycnVwdEF0dHI6Omh3MToKLSAgICAgIE9TIDw8ICIgaHcxIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTWlwc0ludGVycnVwdEF0dHI6Omh3MjoKLSAgICAgIE9TIDw8ICIgaHcyIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTWlwc0ludGVycnVwdEF0dHI6Omh3MzoKLSAgICAgIE9TIDw8ICIgaHczIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTWlwc0ludGVycnVwdEF0dHI6Omh3NDoKLSAgICAgIE9TIDw8ICIgaHc0IjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTWlwc0ludGVycnVwdEF0dHI6Omh3NToKLSAgICAgIE9TIDw8ICIgaHc1IjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgTWlwc0ludGVycnVwdEF0dHI6OmVpYzoKLSAgICAgIE9TIDw8ICIgZWljIjsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok1pcHNMb25nQ2FsbDogewotICAgIE9TIDw8ICIgIiA8PCBBLT5nZXRTcGVsbGluZygpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6TWlwc1Nob3J0Q2FsbDogewotICAgIE9TIDw8ICIgIiA8PCBBLT5nZXRTcGVsbGluZygpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6TW9kZTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxNb2RlQXR0cj4oQSk7Ci0gICAgaWYgKFNBLT5nZXRNb2RlKCkpCi0gICAgICBPUyA8PCAiICIgPDwgU0EtPmdldE1vZGUoKS0+Z2V0TmFtZSgpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6TlNDb25zdW1lZDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6TlNDb25zdW1lc1NlbGY6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok5TUmV0dXJuc0F1dG9yZWxlYXNlZDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6TlNSZXR1cm5zTm90UmV0YWluZWQ6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok5TUmV0dXJuc1JldGFpbmVkOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpOYWtlZDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Tm9BbGlhczogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Tm9Db21tb246IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok5vRGVidWc6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok5vRGVzdHJveTogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Tm9EdXBsaWNhdGU6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok5vRXNjYXBlOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpOb0lubGluZTogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Tm9JbnN0cnVtZW50RnVuY3Rpb246IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok5vTWljcm9NaXBzOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpOb01pcHMxNjogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6Tm9SZXR1cm46IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok5vU2FuaXRpemU6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8Tm9TYW5pdGl6ZUF0dHI+KEEpOwotICAgIGZvciAoY29uc3QgYXV0byAmVmFsIDogU0EtPnNhbml0aXplcnMoKSkKLSAgICAgIE9TIDw8ICIgIiA8PCBWYWw7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpOb1NwbGl0U3RhY2s6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok5vU3RhY2tQcm90ZWN0b3I6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok5vVGhyZWFkU2FmZXR5QW5hbHlzaXM6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok5vVGhyb3c6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok5vbk51bGw6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8Tm9uTnVsbEF0dHI+KEEpOwotICAgIGZvciAoY29uc3QgYXV0byAmVmFsIDogU0EtPmFyZ3MoKSkKLSAgICAgIE9TIDw8ICIgIiA8PCBWYWwuZ2V0U291cmNlSW5kZXgoKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok5vdFRhaWxDYWxsZWQ6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok9NUENhcHR1cmVLaW5kOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE9NUENhcHR1cmVLaW5kQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRDYXB0dXJlS2luZCgpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T01QQ2FwdHVyZU5vSW5pdDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T01QRGVjbGFyZVNpbWREZWNsOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE9NUERlY2xhcmVTaW1kRGVjbEF0dHI+KEEpOwotICAgIHN3aXRjaChTQS0+Z2V0QnJhbmNoU3RhdGUoKSkgewotICAgIGNhc2UgT01QRGVjbGFyZVNpbWREZWNsQXR0cjo6QlNfVW5kZWZpbmVkOgotICAgICAgT1MgPDwgIiBCU19VbmRlZmluZWQiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPTVBEZWNsYXJlU2ltZERlY2xBdHRyOjpCU19JbmJyYW5jaDoKLSAgICAgIE9TIDw8ICIgQlNfSW5icmFuY2giOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPTVBEZWNsYXJlU2ltZERlY2xBdHRyOjpCU19Ob3RpbmJyYW5jaDoKLSAgICAgIE9TIDw8ICIgQlNfTm90aW5icmFuY2giOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGZvciAoY29uc3QgYXV0byAmVmFsIDogU0EtPm1vZGlmaWVycygpKQotICAgICAgT1MgPDwgIiAiIDw8IFZhbDsKLSAgICBkdW1wU3RtdChTQS0+Z2V0U2ltZGxlbigpKTsKLSAgICBmb3IgKE9NUERlY2xhcmVTaW1kRGVjbEF0dHI6OnVuaWZvcm1zX2l0ZXJhdG9yIEkgPSBTQS0+dW5pZm9ybXNfYmVnaW4oKSwgRSA9IFNBLT51bmlmb3Jtc19lbmQoKTsgSSAhPSBFOyArK0kpCi0gICAgICBkdW1wU3RtdCgqSSk7Ci0gICAgZm9yIChPTVBEZWNsYXJlU2ltZERlY2xBdHRyOjphbGlnbmVkc19pdGVyYXRvciBJID0gU0EtPmFsaWduZWRzX2JlZ2luKCksIEUgPSBTQS0+YWxpZ25lZHNfZW5kKCk7IEkgIT0gRTsgKytJKQotICAgICAgZHVtcFN0bXQoKkkpOwotICAgIGZvciAoT01QRGVjbGFyZVNpbWREZWNsQXR0cjo6YWxpZ25tZW50c19pdGVyYXRvciBJID0gU0EtPmFsaWdubWVudHNfYmVnaW4oKSwgRSA9IFNBLT5hbGlnbm1lbnRzX2VuZCgpOyBJICE9IEU7ICsrSSkKLSAgICAgIGR1bXBTdG10KCpJKTsKLSAgICBmb3IgKE9NUERlY2xhcmVTaW1kRGVjbEF0dHI6OmxpbmVhcnNfaXRlcmF0b3IgSSA9IFNBLT5saW5lYXJzX2JlZ2luKCksIEUgPSBTQS0+bGluZWFyc19lbmQoKTsgSSAhPSBFOyArK0kpCi0gICAgICBkdW1wU3RtdCgqSSk7Ci0gICAgZm9yIChPTVBEZWNsYXJlU2ltZERlY2xBdHRyOjpzdGVwc19pdGVyYXRvciBJID0gU0EtPnN0ZXBzX2JlZ2luKCksIEUgPSBTQS0+c3RlcHNfZW5kKCk7IEkgIT0gRTsgKytJKQotICAgICAgZHVtcFN0bXQoKkkpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T01QRGVjbGFyZVRhcmdldERlY2w6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T01QRGVjbGFyZVRhcmdldERlY2xBdHRyPihBKTsKLSAgICBzd2l0Y2goU0EtPmdldE1hcFR5cGUoKSkgewotICAgIGNhc2UgT01QRGVjbGFyZVRhcmdldERlY2xBdHRyOjpNVF9UbzoKLSAgICAgIE9TIDw8ICIgTVRfVG8iOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPTVBEZWNsYXJlVGFyZ2V0RGVjbEF0dHI6Ok1UX0xpbms6Ci0gICAgICBPUyA8PCAiIE1UX0xpbmsiOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T01QUmVmZXJlbmNlZFZhcjogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxPTVBSZWZlcmVuY2VkVmFyQXR0cj4oQSk7Ci0gICAgZHVtcFN0bXQoU0EtPmdldFJlZigpKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok9NUFRocmVhZFByaXZhdGVEZWNsOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpPYmpDQm94YWJsZTogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T2JqQ0JyaWRnZTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxPYmpDQnJpZGdlQXR0cj4oQSk7Ci0gICAgaWYgKFNBLT5nZXRCcmlkZ2VkVHlwZSgpKQotICAgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRCcmlkZ2VkVHlwZSgpLT5nZXROYW1lKCk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpPYmpDQnJpZGdlTXV0YWJsZTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxPYmpDQnJpZGdlTXV0YWJsZUF0dHI+KEEpOwotICAgIGlmIChTQS0+Z2V0QnJpZGdlZFR5cGUoKSkKLSAgICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0QnJpZGdlZFR5cGUoKS0+Z2V0TmFtZSgpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T2JqQ0JyaWRnZVJlbGF0ZWQ6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T2JqQ0JyaWRnZVJlbGF0ZWRBdHRyPihBKTsKLSAgICBpZiAoU0EtPmdldFJlbGF0ZWRDbGFzcygpKQotICAgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRSZWxhdGVkQ2xhc3MoKS0+Z2V0TmFtZSgpOwotICAgIGlmIChTQS0+Z2V0Q2xhc3NNZXRob2QoKSkKLSAgICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0Q2xhc3NNZXRob2QoKS0+Z2V0TmFtZSgpOwotICAgIGlmIChTQS0+Z2V0SW5zdGFuY2VNZXRob2QoKSkKLSAgICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0SW5zdGFuY2VNZXRob2QoKS0+Z2V0TmFtZSgpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T2JqQ0Rlc2lnbmF0ZWRJbml0aWFsaXplcjogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T2JqQ0V4Y2VwdGlvbjogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T2JqQ0V4cGxpY2l0UHJvdG9jb2xJbXBsOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpPYmpDR0M6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T2JqQ0dDQXR0cj4oQSk7Ci0gICAgaWYgKFNBLT5nZXRLaW5kKCkpCi0gICAgICBPUyA8PCAiICIgPDwgU0EtPmdldEtpbmQoKS0+Z2V0TmFtZSgpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T2JqQ0luZGVwZW5kZW50Q2xhc3M6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok9iakNJbmVydFVuc2FmZVVucmV0YWluZWQ6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok9iakNLaW5kT2Y6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok9iakNNZXRob2RGYW1pbHk6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T2JqQ01ldGhvZEZhbWlseUF0dHI+KEEpOwotICAgIHN3aXRjaChTQS0+Z2V0RmFtaWx5KCkpIHsKLSAgICBjYXNlIE9iakNNZXRob2RGYW1pbHlBdHRyOjpPTUZfTm9uZToKLSAgICAgIE9TIDw8ICIgT01GX05vbmUiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPYmpDTWV0aG9kRmFtaWx5QXR0cjo6T01GX2FsbG9jOgotICAgICAgT1MgPDwgIiBPTUZfYWxsb2MiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPYmpDTWV0aG9kRmFtaWx5QXR0cjo6T01GX2NvcHk6Ci0gICAgICBPUyA8PCAiIE9NRl9jb3B5IjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgT2JqQ01ldGhvZEZhbWlseUF0dHI6Ok9NRl9pbml0OgotICAgICAgT1MgPDwgIiBPTUZfaW5pdCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIE9iakNNZXRob2RGYW1pbHlBdHRyOjpPTUZfbXV0YWJsZUNvcHk6Ci0gICAgICBPUyA8PCAiIE9NRl9tdXRhYmxlQ29weSI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIE9iakNNZXRob2RGYW1pbHlBdHRyOjpPTUZfbmV3OgotICAgICAgT1MgPDwgIiBPTUZfbmV3IjsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok9iakNOU09iamVjdDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T2JqQ093bmVyc2hpcDogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxPYmpDT3duZXJzaGlwQXR0cj4oQSk7Ci0gICAgaWYgKFNBLT5nZXRLaW5kKCkpCi0gICAgICBPUyA8PCAiICIgPDwgU0EtPmdldEtpbmQoKS0+Z2V0TmFtZSgpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T2JqQ1ByZWNpc2VMaWZldGltZTogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T2JqQ1JlcXVpcmVzUHJvcGVydHlEZWZzOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpPYmpDUmVxdWlyZXNTdXBlcjogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T2JqQ1JldHVybnNJbm5lclBvaW50ZXI6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok9iakNSb290Q2xhc3M6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok9iakNSdW50aW1lTmFtZTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxPYmpDUnVudGltZU5hbWVBdHRyPihBKTsKLSAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0TWV0YWRhdGFOYW1lKCkgPDwgIlwiIjsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok9iakNSdW50aW1lVmlzaWJsZTogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T2JqQ1N1YmNsYXNzaW5nUmVzdHJpY3RlZDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T3BlbkNMQWNjZXNzOiB7Ci0gICAgT1MgPDwgIiAiIDw8IEEtPmdldFNwZWxsaW5nKCk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpPcGVuQ0xDb25zdGFudEFkZHJlc3NTcGFjZTogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T3BlbkNMR2VuZXJpY0FkZHJlc3NTcGFjZTogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T3BlbkNMR2xvYmFsQWRkcmVzc1NwYWNlOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpPcGVuQ0xJbnRlbFJlcWRTdWJHcm91cFNpemU6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T3BlbkNMSW50ZWxSZXFkU3ViR3JvdXBTaXplQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRTdWJHcm91cFNpemUoKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok9wZW5DTEtlcm5lbDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T3BlbkNMTG9jYWxBZGRyZXNzU3BhY2U6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok9wZW5DTFByaXZhdGVBZGRyZXNzU3BhY2U6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok9wZW5DTFVucm9sbEhpbnQ6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T3BlbkNMVW5yb2xsSGludEF0dHI+KEEpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0VW5yb2xsSGludCgpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6T3B0aW1pemVOb25lOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpPdmVybG9hZGFibGU6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6Ok92ZXJyaWRlOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpPd25lcnNoaXA6IHsKLSAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T3duZXJzaGlwQXR0cj4oQSk7Ci0gICAgaWYgKFNBLT5nZXRNb2R1bGUoKSkKLSAgICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0TW9kdWxlKCktPmdldE5hbWUoKTsKLSAgICBmb3IgKGNvbnN0IGF1dG8gJlZhbCA6IFNBLT5hcmdzKCkpCi0gICAgICBPUyA8PCAiICIgPDwgVmFsLmdldFNvdXJjZUluZGV4KCk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpQYWNrZWQ6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlBhcmFtVHlwZXN0YXRlOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFBhcmFtVHlwZXN0YXRlQXR0cj4oQSk7Ci0gICAgc3dpdGNoKFNBLT5nZXRQYXJhbVN0YXRlKCkpIHsKLSAgICBjYXNlIFBhcmFtVHlwZXN0YXRlQXR0cjo6VW5rbm93bjoKLSAgICAgIE9TIDw8ICIgVW5rbm93biI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFtVHlwZXN0YXRlQXR0cjo6Q29uc3VtZWQ6Ci0gICAgICBPUyA8PCAiIENvbnN1bWVkIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUGFyYW1UeXBlc3RhdGVBdHRyOjpVbmNvbnN1bWVkOgotICAgICAgT1MgPDwgIiBVbmNvbnN1bWVkIjsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlBhc2NhbDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6UGFzc09iamVjdFNpemU6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8UGFzc09iamVjdFNpemVBdHRyPihBKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldFR5cGUoKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlBjczogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxQY3NBdHRyPihBKTsKLSAgICBzd2l0Y2goU0EtPmdldFBDUygpKSB7Ci0gICAgY2FzZSBQY3NBdHRyOjpBQVBDUzoKLSAgICAgIE9TIDw8ICIgQUFQQ1MiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQY3NBdHRyOjpBQVBDU19WRlA6Ci0gICAgICBPUyA8PCAiIEFBUENTX1ZGUCI7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpQcmFnbWFDbGFuZ0JTU1NlY3Rpb246IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8UHJhZ21hQ2xhbmdCU1NTZWN0aW9uQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldE5hbWUoKSA8PCAiXCIiOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6UHJhZ21hQ2xhbmdEYXRhU2VjdGlvbjogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxQcmFnbWFDbGFuZ0RhdGFTZWN0aW9uQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldE5hbWUoKSA8PCAiXCIiOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6UHJhZ21hQ2xhbmdSb2RhdGFTZWN0aW9uOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFByYWdtYUNsYW5nUm9kYXRhU2VjdGlvbkF0dHI+KEEpOwotICAgIE9TIDw8ICIgXCIiIDw8IFNBLT5nZXROYW1lKCkgPDwgIlwiIjsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlByYWdtYUNsYW5nVGV4dFNlY3Rpb246IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8UHJhZ21hQ2xhbmdUZXh0U2VjdGlvbkF0dHI+KEEpOwotICAgIE9TIDw8ICIgXCIiIDw8IFNBLT5nZXROYW1lKCkgPDwgIlwiIjsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlByZXNlcnZlQWxsOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpQcmVzZXJ2ZU1vc3Q6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlB0R3VhcmRlZEJ5OiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFB0R3VhcmRlZEJ5QXR0cj4oQSk7Ci0gICAgZHVtcFN0bXQoU0EtPmdldEFyZygpKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlB0R3VhcmRlZFZhcjogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6UHRyMzI6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlB0cjY0OiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpQdXJlOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpSSVNDVkludGVycnVwdDogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxSSVNDVkludGVycnVwdEF0dHI+KEEpOwotICAgIHN3aXRjaChTQS0+Z2V0SW50ZXJydXB0KCkpIHsKLSAgICBjYXNlIFJJU0NWSW50ZXJydXB0QXR0cjo6dXNlcjoKLSAgICAgIE9TIDw8ICIgdXNlciI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFJJU0NWSW50ZXJydXB0QXR0cjo6c3VwZXJ2aXNvcjoKLSAgICAgIE9TIDw8ICIgc3VwZXJ2aXNvciI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFJJU0NWSW50ZXJydXB0QXR0cjo6bWFjaGluZToKLSAgICAgIE9TIDw8ICIgbWFjaGluZSI7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpSZWdDYWxsOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpSZWluaXRpYWxpemVzOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpSZWxlYXNlQ2FwYWJpbGl0eTogewotICAgIE9TIDw8ICIgIiA8PCBBLT5nZXRTcGVsbGluZygpOwotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxSZWxlYXNlQ2FwYWJpbGl0eUF0dHI+KEEpOwotICAgIGZvciAoUmVsZWFzZUNhcGFiaWxpdHlBdHRyOjphcmdzX2l0ZXJhdG9yIEkgPSBTQS0+YXJnc19iZWdpbigpLCBFID0gU0EtPmFyZ3NfZW5kKCk7IEkgIT0gRTsgKytJKQotICAgICAgZHVtcFN0bXQoKkkpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6UmVuZGVyU2NyaXB0S2VybmVsOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpSZXFkV29ya0dyb3VwU2l6ZTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxSZXFkV29ya0dyb3VwU2l6ZUF0dHI+KEEpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0WERpbSgpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0WURpbSgpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0WkRpbSgpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6UmVxdWlyZUNvbnN0YW50SW5pdDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6UmVxdWlyZXNDYXBhYmlsaXR5OiB7Ci0gICAgT1MgPDwgIiAiIDw8IEEtPmdldFNwZWxsaW5nKCk7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFJlcXVpcmVzQ2FwYWJpbGl0eUF0dHI+KEEpOwotICAgIGZvciAoUmVxdWlyZXNDYXBhYmlsaXR5QXR0cjo6YXJnc19pdGVyYXRvciBJID0gU0EtPmFyZ3NfYmVnaW4oKSwgRSA9IFNBLT5hcmdzX2VuZCgpOyBJICE9IEU7ICsrSSkKLSAgICAgIGR1bXBTdG10KCpJKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlJlc3RyaWN0OiB7Ci0gICAgT1MgPDwgIiAiIDw8IEEtPmdldFNwZWxsaW5nKCk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpSZXR1cm5UeXBlc3RhdGU6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8UmV0dXJuVHlwZXN0YXRlQXR0cj4oQSk7Ci0gICAgc3dpdGNoKFNBLT5nZXRTdGF0ZSgpKSB7Ci0gICAgY2FzZSBSZXR1cm5UeXBlc3RhdGVBdHRyOjpVbmtub3duOgotICAgICAgT1MgPDwgIiBVbmtub3duIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUmV0dXJuVHlwZXN0YXRlQXR0cjo6Q29uc3VtZWQ6Ci0gICAgICBPUyA8PCAiIENvbnN1bWVkIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUmV0dXJuVHlwZXN0YXRlQXR0cjo6VW5jb25zdW1lZDoKLSAgICAgIE9TIDw8ICIgVW5jb25zdW1lZCI7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpSZXR1cm5zTm9uTnVsbDogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6UmV0dXJuc1R3aWNlOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpTUHRyOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpTY29wZWRMb2NrYWJsZTogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6U2VjdGlvbjogewotICAgIE9TIDw8ICIgIiA8PCBBLT5nZXRTcGVsbGluZygpOwotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxTZWN0aW9uQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldE5hbWUoKSA8PCAiXCIiOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6U2VsZWN0QW55OiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpTZW50aW5lbDogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxTZW50aW5lbEF0dHI+KEEpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0U2VudGluZWwoKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldE51bGxQb3MoKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlNldFR5cGVzdGF0ZTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxTZXRUeXBlc3RhdGVBdHRyPihBKTsKLSAgICBzd2l0Y2goU0EtPmdldE5ld1N0YXRlKCkpIHsKLSAgICBjYXNlIFNldFR5cGVzdGF0ZUF0dHI6OlVua25vd246Ci0gICAgICBPUyA8PCAiIFVua25vd24iOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZXRUeXBlc3RhdGVBdHRyOjpDb25zdW1lZDoKLSAgICAgIE9TIDw8ICIgQ29uc3VtZWQiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZXRUeXBlc3RhdGVBdHRyOjpVbmNvbnN1bWVkOgotICAgICAgT1MgPDwgIiBVbmNvbnN1bWVkIjsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlNoYXJlZFRyeWxvY2tGdW5jdGlvbjogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxTaGFyZWRUcnlsb2NrRnVuY3Rpb25BdHRyPihBKTsKLSAgICBkdW1wU3RtdChTQS0+Z2V0U3VjY2Vzc1ZhbHVlKCkpOwotICAgIGZvciAoU2hhcmVkVHJ5bG9ja0Z1bmN0aW9uQXR0cjo6YXJnc19pdGVyYXRvciBJID0gU0EtPmFyZ3NfYmVnaW4oKSwgRSA9IFNBLT5hcmdzX2VuZCgpOyBJICE9IEU7ICsrSSkKLSAgICAgIGR1bXBTdG10KCpJKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlN0ZENhbGw6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlN1cHByZXNzOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFN1cHByZXNzQXR0cj4oQSk7Ci0gICAgZm9yIChjb25zdCBhdXRvICZWYWwgOiBTQS0+ZGlhZ25vc3RpY0lkZW50aWZpZXJzKCkpCi0gICAgICBPUyA8PCAiICIgPDwgVmFsOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6U3dpZnRDYWxsOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpTd2lmdENvbnRleHQ6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlN3aWZ0RXJyb3JSZXN1bHQ6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlN3aWZ0SW5kaXJlY3RSZXN1bHQ6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlN5c1ZBQkk6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlRMU01vZGVsOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFRMU01vZGVsQXR0cj4oQSk7Ci0gICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldE1vZGVsKCkgPDwgIlwiIjsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlRhcmdldDogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxUYXJnZXRBdHRyPihBKTsKLSAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0RmVhdHVyZXNTdHIoKSA8PCAiXCIiOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6VGVzdFR5cGVzdGF0ZTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxUZXN0VHlwZXN0YXRlQXR0cj4oQSk7Ci0gICAgc3dpdGNoKFNBLT5nZXRUZXN0U3RhdGUoKSkgewotICAgIGNhc2UgVGVzdFR5cGVzdGF0ZUF0dHI6OkNvbnN1bWVkOgotICAgICAgT1MgPDwgIiBDb25zdW1lZCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFRlc3RUeXBlc3RhdGVBdHRyOjpVbmNvbnN1bWVkOgotICAgICAgT1MgPDwgIiBVbmNvbnN1bWVkIjsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlRoaXNDYWxsOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpUaHJlYWQ6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlRyYW5zcGFyZW50VW5pb246IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlRyaXZpYWxBQkk6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlRyeUFjcXVpcmVDYXBhYmlsaXR5OiB7Ci0gICAgT1MgPDwgIiAiIDw8IEEtPmdldFNwZWxsaW5nKCk7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFRyeUFjcXVpcmVDYXBhYmlsaXR5QXR0cj4oQSk7Ci0gICAgZHVtcFN0bXQoU0EtPmdldFN1Y2Nlc3NWYWx1ZSgpKTsKLSAgICBmb3IgKFRyeUFjcXVpcmVDYXBhYmlsaXR5QXR0cjo6YXJnc19pdGVyYXRvciBJID0gU0EtPmFyZ3NfYmVnaW4oKSwgRSA9IFNBLT5hcmdzX2VuZCgpOyBJICE9IEU7ICsrSSkKLSAgICAgIGR1bXBTdG10KCpJKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlR5cGVOb25OdWxsOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpUeXBlTnVsbFVuc3BlY2lmaWVkOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpUeXBlTnVsbGFibGU6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlR5cGVUYWdGb3JEYXRhdHlwZTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxUeXBlVGFnRm9yRGF0YXR5cGVBdHRyPihBKTsKLSAgICBpZiAoU0EtPmdldEFyZ3VtZW50S2luZCgpKQotICAgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRBcmd1bWVudEtpbmQoKS0+Z2V0TmFtZSgpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0TWF0Y2hpbmdDVHlwZSgpLmdldEFzU3RyaW5nKCk7Ci0gICAgaWYgKFNBLT5nZXRMYXlvdXRDb21wYXRpYmxlKCkpIE9TIDw8ICIgTGF5b3V0Q29tcGF0aWJsZSI7Ci0gICAgaWYgKFNBLT5nZXRNdXN0QmVOdWxsKCkpIE9TIDw8ICIgTXVzdEJlTnVsbCI7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpUeXBlVmlzaWJpbGl0eTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxUeXBlVmlzaWJpbGl0eUF0dHI+KEEpOwotICAgIHN3aXRjaChTQS0+Z2V0VmlzaWJpbGl0eSgpKSB7Ci0gICAgY2FzZSBUeXBlVmlzaWJpbGl0eUF0dHI6OkRlZmF1bHQ6Ci0gICAgICBPUyA8PCAiIERlZmF1bHQiOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUeXBlVmlzaWJpbGl0eUF0dHI6OkhpZGRlbjoKLSAgICAgIE9TIDw8ICIgSGlkZGVuIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgVHlwZVZpc2liaWxpdHlBdHRyOjpQcm90ZWN0ZWQ6Ci0gICAgICBPUyA8PCAiIFByb3RlY3RlZCI7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpVUHRyOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpVbmF2YWlsYWJsZTogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxVbmF2YWlsYWJsZUF0dHI+KEEpOwotICAgIE9TIDw8ICIgXCIiIDw8IFNBLT5nZXRNZXNzYWdlKCkgPDwgIlwiIjsKLSAgICBzd2l0Y2goU0EtPmdldEltcGxpY2l0UmVhc29uKCkpIHsKLSAgICBjYXNlIFVuYXZhaWxhYmxlQXR0cjo6SVJfTm9uZToKLSAgICAgIE9TIDw8ICIgSVJfTm9uZSI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFVuYXZhaWxhYmxlQXR0cjo6SVJfQVJDRm9yYmlkZGVuVHlwZToKLSAgICAgIE9TIDw8ICIgSVJfQVJDRm9yYmlkZGVuVHlwZSI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFVuYXZhaWxhYmxlQXR0cjo6SVJfRm9yYmlkZGVuV2VhazoKLSAgICAgIE9TIDw8ICIgSVJfRm9yYmlkZGVuV2VhayI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFVuYXZhaWxhYmxlQXR0cjo6SVJfQVJDRm9yYmlkZGVuQ29udmVyc2lvbjoKLSAgICAgIE9TIDw8ICIgSVJfQVJDRm9yYmlkZGVuQ29udmVyc2lvbiI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFVuYXZhaWxhYmxlQXR0cjo6SVJfQVJDSW5pdFJldHVybnNVbnJlbGF0ZWQ6Ci0gICAgICBPUyA8PCAiIElSX0FSQ0luaXRSZXR1cm5zVW5yZWxhdGVkIjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgVW5hdmFpbGFibGVBdHRyOjpJUl9BUkNGaWVsZFdpdGhPd25lcnNoaXA6Ci0gICAgICBPUyA8PCAiIElSX0FSQ0ZpZWxkV2l0aE93bmVyc2hpcCI7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpVbnVzZWQ6IHsKLSAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlVzZWQ6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlV1aWQ6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8VXVpZEF0dHI+KEEpOwotICAgIE9TIDw8ICIgXCIiIDw8IFNBLT5nZXRHdWlkKCkgPDwgIlwiIjsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlZlY1JldHVybjogewotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6VmVjVHlwZUhpbnQ6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8VmVjVHlwZUhpbnRBdHRyPihBKTsKLSAgICBPUyA8PCAiICIgPDwgU0EtPmdldFR5cGVIaW50KCkuZ2V0QXNTdHJpbmcoKTsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlZlY3RvckNhbGw6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlZpc2liaWxpdHk6IHsKLSAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8VmlzaWJpbGl0eUF0dHI+KEEpOwotICAgIHN3aXRjaChTQS0+Z2V0VmlzaWJpbGl0eSgpKSB7Ci0gICAgY2FzZSBWaXNpYmlsaXR5QXR0cjo6RGVmYXVsdDoKLSAgICAgIE9TIDw8ICIgRGVmYXVsdCI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFZpc2liaWxpdHlBdHRyOjpIaWRkZW46Ci0gICAgICBPUyA8PCAiIEhpZGRlbiI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFZpc2liaWxpdHlBdHRyOjpQcm90ZWN0ZWQ6Ci0gICAgICBPUyA8PCAiIFByb3RlY3RlZCI7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpXYXJuVW51c2VkOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpXYXJuVW51c2VkUmVzdWx0OiB7Ci0gICAgT1MgPDwgIiAiIDw8IEEtPmdldFNwZWxsaW5nKCk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpXZWFrOiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpXZWFrSW1wb3J0OiB7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpXZWFrUmVmOiB7Ci0gICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFdlYWtSZWZBdHRyPihBKTsKLSAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0QWxpYXNlZSgpIDw8ICJcIiI7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpXb3JrR3JvdXBTaXplSGludDogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxXb3JrR3JvdXBTaXplSGludEF0dHI+KEEpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0WERpbSgpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0WURpbSgpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0WkRpbSgpOwotICAgIGJyZWFrOwotICB9Ci0gIGNhc2UgYXR0cjo6WDg2Rm9yY2VBbGlnbkFyZ1BvaW50ZXI6IHsKLSAgICBicmVhazsKLSAgfQotICBjYXNlIGF0dHI6OlhSYXlJbnN0cnVtZW50OiB7Ci0gICAgT1MgPDwgIiAiIDw8IEEtPmdldFNwZWxsaW5nKCk7Ci0gICAgYnJlYWs7Ci0gIH0KLSAgY2FzZSBhdHRyOjpYUmF5TG9nQXJnczogewotICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxYUmF5TG9nQXJnc0F0dHI+KEEpOwotICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0QXJndW1lbnRDb3VudCgpOwotICAgIGJyZWFrOwotICB9Ci0gIH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BdHRySW1wbC5pbmMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQXR0ckltcGwuaW5jCmluZGV4IDQxZjYzOGMuLjg3ZjI4N2MgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BdHRySW1wbC5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0F0dHJJbXBsLmluYwpAQCAtNiw2ICs2LDQ4IEBACiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAogXCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ki8KIAorQUFyY2g2NFZlY3RvclBjc0F0dHIgKkFBcmNoNjRWZWN0b3JQY3NBdHRyOjpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdCB7CisgIGF1dG8gKkEgPSBuZXcgKEMpIEFBcmNoNjRWZWN0b3JQY3NBdHRyKGdldExvY2F0aW9uKCksIEMsIGdldFNwZWxsaW5nTGlzdEluZGV4KCkpOworICBBLT5Jbmhlcml0ZWQgPSBJbmhlcml0ZWQ7CisgIEEtPklzUGFja0V4cGFuc2lvbiA9IElzUGFja0V4cGFuc2lvbjsKKyAgQS0+SW1wbGljaXQgPSBJbXBsaWNpdDsKKyAgcmV0dXJuIEE7Cit9CisKK3ZvaWQgQUFyY2g2NFZlY3RvclBjc0F0dHI6OnByaW50UHJldHR5KHJhd19vc3RyZWFtICZPUywgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3QgeworICBzd2l0Y2ggKFNwZWxsaW5nTGlzdEluZGV4KSB7CisgIGRlZmF1bHQ6CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5rbm93biBhdHRyaWJ1dGUgc3BlbGxpbmchIik7CisgICAgYnJlYWs7CisgIGNhc2UgMCA6IHsKKyAgICBPUyA8PCAiIF9fYXR0cmlidXRlX18oKGFhcmNoNjRfdmVjdG9yX3BjcykpIjsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIDEgOiB7CisgICAgT1MgPDwgIiBbW2NsYW5nOjphYXJjaDY0X3ZlY3Rvcl9wY3NdXSI7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSAyIDogeworICAgIE9TIDw8ICIgW1tjbGFuZzo6YWFyY2g2NF92ZWN0b3JfcGNzXV0iOworICAgIGJyZWFrOworICB9Cit9Cit9CisKK2NvbnN0IGNoYXIgKkFBcmNoNjRWZWN0b3JQY3NBdHRyOjpnZXRTcGVsbGluZygpIGNvbnN0IHsKKyAgc3dpdGNoIChTcGVsbGluZ0xpc3RJbmRleCkgeworICBkZWZhdWx0OgorICAgIGxsdm1fdW5yZWFjaGFibGUoIlVua25vd24gYXR0cmlidXRlIHNwZWxsaW5nISIpOworICAgIHJldHVybiAiKE5vIHNwZWxsaW5nKSI7CisgIGNhc2UgMDoKKyAgICByZXR1cm4gImFhcmNoNjRfdmVjdG9yX3BjcyI7CisgIGNhc2UgMToKKyAgICByZXR1cm4gImFhcmNoNjRfdmVjdG9yX3BjcyI7CisgIGNhc2UgMjoKKyAgICByZXR1cm4gImFhcmNoNjRfdmVjdG9yX3BjcyI7CisgIH0KK30KKwogQU1ER1BVRmxhdFdvcmtHcm91cFNpemVBdHRyICpBTURHUFVGbGF0V29ya0dyb3VwU2l6ZUF0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKICAgYXV0byAqQSA9IG5ldyAoQykgQU1ER1BVRmxhdFdvcmtHcm91cFNpemVBdHRyKGdldExvY2F0aW9uKCksIEMsIG1pbiwgbWF4LCBnZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKICAgQS0+SW5oZXJpdGVkID0gSW5oZXJpdGVkOwpAQCAtMTQ2Nyw3ICsxNTA5LDcgQEAKIH0KIAogQXZhaWxhYmlsaXR5QXR0ciAqQXZhaWxhYmlsaXR5QXR0cjo6Y2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3QgewotICBhdXRvICpBID0gbmV3IChDKSBBdmFpbGFiaWxpdHlBdHRyKGdldExvY2F0aW9uKCksIEMsIHBsYXRmb3JtLCBnZXRJbnRyb2R1Y2VkKCksIGdldERlcHJlY2F0ZWQoKSwgZ2V0T2Jzb2xldGVkKCksIHVuYXZhaWxhYmxlLCBnZXRNZXNzYWdlKCksIHN0cmljdCwgZ2V0UmVwbGFjZW1lbnQoKSwgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgIGF1dG8gKkEgPSBuZXcgKEMpIEF2YWlsYWJpbGl0eUF0dHIoZ2V0TG9jYXRpb24oKSwgQywgcGxhdGZvcm0sIGdldEludHJvZHVjZWQoKSwgZ2V0RGVwcmVjYXRlZCgpLCBnZXRPYnNvbGV0ZWQoKSwgdW5hdmFpbGFibGUsIGdldE1lc3NhZ2UoKSwgc3RyaWN0LCBnZXRSZXBsYWNlbWVudCgpLCBwcmlvcml0eSwgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CiAgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKICAgQS0+SXNQYWNrRXhwYW5zaW9uID0gSXNQYWNrRXhwYW5zaW9uOwogICBBLT5JbXBsaWNpdCA9IEltcGxpY2l0OwpAQCAtMTQ5MCwxMSArMTUzMiwxMSBAQAogICAgIGJyZWFrOwogICB9CiAgIGNhc2UgMSA6IHsKLSAgICBPUyA8PCAiIFtbY2xhbmc6OmF2YWlsYWJpbGl0eSgiIDw8IChnZXRQbGF0Zm9ybSgpID8gZ2V0UGxhdGZvcm0oKS0+Z2V0TmFtZSgpIDogIiIpIDw8ICIsIGludHJvZHVjZWQ9IiA8PCBnZXRJbnRyb2R1Y2VkKCkgPDwgIiwgZGVwcmVjYXRlZD0iIDw8IGdldERlcHJlY2F0ZWQoKSA8PCAiLCBvYnNvbGV0ZWQ9IiA8PCBnZXRPYnNvbGV0ZWQoKSA8PCAiLCAiIDw8IGdldFVuYXZhaWxhYmxlKCkgPDwgIiwgXCIiIDw8IGdldE1lc3NhZ2UoKSA8PCAiXCIsICIgPDwgZ2V0U3RyaWN0KCkgPDwgIiwgXCIiIDw8IGdldFJlcGxhY2VtZW50KCkgPDwgIlwiKV1dIjsKKyAgICBPUyA8PCAiIFtbY2xhbmc6OmF2YWlsYWJpbGl0eSgiIDw8IChnZXRQbGF0Zm9ybSgpID8gZ2V0UGxhdGZvcm0oKS0+Z2V0TmFtZSgpIDogIiIpIDw8ICIsIGludHJvZHVjZWQ9IiA8PCBnZXRJbnRyb2R1Y2VkKCkgPDwgIiwgZGVwcmVjYXRlZD0iIDw8IGdldERlcHJlY2F0ZWQoKSA8PCAiLCBvYnNvbGV0ZWQ9IiA8PCBnZXRPYnNvbGV0ZWQoKSA8PCAiLCAiIDw8IGdldFVuYXZhaWxhYmxlKCkgPDwgIiwgXCIiIDw8IGdldE1lc3NhZ2UoKSA8PCAiXCIsICIgPDwgZ2V0U3RyaWN0KCkgPDwgIiwgXCIiIDw8IGdldFJlcGxhY2VtZW50KCkgPDwgIlwiLCAiIDw8IGdldFByaW9yaXR5KCkgPDwgIildXSI7CiAgICAgYnJlYWs7CiAgIH0KICAgY2FzZSAyIDogewotICAgIE9TIDw8ICIgW1tjbGFuZzo6YXZhaWxhYmlsaXR5KCIgPDwgKGdldFBsYXRmb3JtKCkgPyBnZXRQbGF0Zm9ybSgpLT5nZXROYW1lKCkgOiAiIikgPDwgIiwgaW50cm9kdWNlZD0iIDw8IGdldEludHJvZHVjZWQoKSA8PCAiLCBkZXByZWNhdGVkPSIgPDwgZ2V0RGVwcmVjYXRlZCgpIDw8ICIsIG9ic29sZXRlZD0iIDw8IGdldE9ic29sZXRlZCgpIDw8ICIsICIgPDwgZ2V0VW5hdmFpbGFibGUoKSA8PCAiLCBcIiIgPDwgZ2V0TWVzc2FnZSgpIDw8ICJcIiwgIiA8PCBnZXRTdHJpY3QoKSA8PCAiLCBcIiIgPDwgZ2V0UmVwbGFjZW1lbnQoKSA8PCAiXCIpXV0iOworICAgIE9TIDw8ICIgW1tjbGFuZzo6YXZhaWxhYmlsaXR5KCIgPDwgKGdldFBsYXRmb3JtKCkgPyBnZXRQbGF0Zm9ybSgpLT5nZXROYW1lKCkgOiAiIikgPDwgIiwgaW50cm9kdWNlZD0iIDw8IGdldEludHJvZHVjZWQoKSA8PCAiLCBkZXByZWNhdGVkPSIgPDwgZ2V0RGVwcmVjYXRlZCgpIDw8ICIsIG9ic29sZXRlZD0iIDw8IGdldE9ic29sZXRlZCgpIDw8ICIsICIgPDwgZ2V0VW5hdmFpbGFibGUoKSA8PCAiLCBcIiIgPDwgZ2V0TWVzc2FnZSgpIDw8ICJcIiwgIiA8PCBnZXRTdHJpY3QoKSA8PCAiLCBcIiIgPDwgZ2V0UmVwbGFjZW1lbnQoKSA8PCAiXCIsICIgPDwgZ2V0UHJpb3JpdHkoKSA8PCAiKV1dIjsKICAgICBicmVhazsKICAgfQogfQpAQCAtMTg5MCw2ICsxOTMyLDE3IEBACiAgIE9TIDw8ICIpXV0iOwogICAgIGJyZWFrOwogICB9CisgIGNhc2UgMyA6IHsKKyAgICBPUyA8PCAiIF9fZGVjbHNwZWMoY3B1X2Rpc3BhdGNoKCI7CisgIGJvb2wgaXNGaXJzdCA9IHRydWU7CisgIGZvciAoY29uc3QgYXV0byAmVmFsIDogY3B1cygpKSB7CisgICAgaWYgKGlzRmlyc3QpIGlzRmlyc3QgPSBmYWxzZTsKKyAgICBlbHNlIE9TIDw8ICIsICI7CisgICAgT1MgPDwgVmFsOworICB9CisgIE9TIDw8ICIpKSI7CisgICAgYnJlYWs7CisgIH0KIH0KIH0KIApAQCAtMTkwNCw2ICsxOTU3LDggQEAKICAgICByZXR1cm4gImNwdV9kaXNwYXRjaCI7CiAgIGNhc2UgMjoKICAgICByZXR1cm4gImNwdV9kaXNwYXRjaCI7CisgIGNhc2UgMzoKKyAgICByZXR1cm4gImNwdV9kaXNwYXRjaCI7CiAgIH0KIH0KIApAQCAtMTk1Myw2ICsyMDA4LDE3IEBACiAgIE9TIDw8ICIpXV0iOwogICAgIGJyZWFrOwogICB9CisgIGNhc2UgMyA6IHsKKyAgICBPUyA8PCAiIF9fZGVjbHNwZWMoY3B1X3NwZWNpZmljKCI7CisgIGJvb2wgaXNGaXJzdCA9IHRydWU7CisgIGZvciAoY29uc3QgYXV0byAmVmFsIDogY3B1cygpKSB7CisgICAgaWYgKGlzRmlyc3QpIGlzRmlyc3QgPSBmYWxzZTsKKyAgICBlbHNlIE9TIDw8ICIsICI7CisgICAgT1MgPDwgVmFsOworICB9CisgIE9TIDw8ICIpKSI7CisgICAgYnJlYWs7CisgIH0KIH0KIH0KIApAQCAtMTk2Nyw2ICsyMDMzLDggQEAKICAgICByZXR1cm4gImNwdV9zcGVjaWZpYyI7CiAgIGNhc2UgMjoKICAgICByZXR1cm4gImNwdV9zcGVjaWZpYyI7CisgIGNhc2UgMzoKKyAgICByZXR1cm4gImNwdV9zcGVjaWZpYyI7CiAgIH0KIH0KIApAQCAtMjI4MSw2ICsyMzQ5LDY5IEBACiAgIH0KIH0KIAorQ2FsbGJhY2tBdHRyICpDYWxsYmFja0F0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKKyAgYXV0byAqQSA9IG5ldyAoQykgQ2FsbGJhY2tBdHRyKGdldExvY2F0aW9uKCksIEMsIGVuY29kaW5nXywgZW5jb2RpbmdfU2l6ZSwgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKKyAgQS0+SXNQYWNrRXhwYW5zaW9uID0gSXNQYWNrRXhwYW5zaW9uOworICBBLT5JbXBsaWNpdCA9IEltcGxpY2l0OworICByZXR1cm4gQTsKK30KKwordm9pZCBDYWxsYmFja0F0dHI6OnByaW50UHJldHR5KHJhd19vc3RyZWFtICZPUywgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3QgeworICBzd2l0Y2ggKFNwZWxsaW5nTGlzdEluZGV4KSB7CisgIGRlZmF1bHQ6CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5rbm93biBhdHRyaWJ1dGUgc3BlbGxpbmchIik7CisgICAgYnJlYWs7CisgIGNhc2UgMCA6IHsKKyAgICBPUyA8PCAiIF9fYXR0cmlidXRlX18oKGNhbGxiYWNrKCI7CisgIGJvb2wgaXNGaXJzdCA9IHRydWU7CisgIGZvciAoY29uc3QgYXV0byAmVmFsIDogZW5jb2RpbmcoKSkgeworICAgIGlmIChpc0ZpcnN0KSBpc0ZpcnN0ID0gZmFsc2U7CisgICAgZWxzZSBPUyA8PCAiLCAiOworICAgIE9TIDw8IFZhbDsKKyAgfQorICBPUyA8PCAiKSkpIjsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIDEgOiB7CisgICAgT1MgPDwgIiBbW2NsYW5nOjpjYWxsYmFjaygiOworICBib29sIGlzRmlyc3QgPSB0cnVlOworICBmb3IgKGNvbnN0IGF1dG8gJlZhbCA6IGVuY29kaW5nKCkpIHsKKyAgICBpZiAoaXNGaXJzdCkgaXNGaXJzdCA9IGZhbHNlOworICAgIGVsc2UgT1MgPDwgIiwgIjsKKyAgICBPUyA8PCBWYWw7CisgIH0KKyAgT1MgPDwgIildXSI7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSAyIDogeworICAgIE9TIDw8ICIgW1tjbGFuZzo6Y2FsbGJhY2soIjsKKyAgYm9vbCBpc0ZpcnN0ID0gdHJ1ZTsKKyAgZm9yIChjb25zdCBhdXRvICZWYWwgOiBlbmNvZGluZygpKSB7CisgICAgaWYgKGlzRmlyc3QpIGlzRmlyc3QgPSBmYWxzZTsKKyAgICBlbHNlIE9TIDw8ICIsICI7CisgICAgT1MgPDwgVmFsOworICB9CisgIE9TIDw8ICIpXV0iOworICAgIGJyZWFrOworICB9Cit9Cit9CisKK2NvbnN0IGNoYXIgKkNhbGxiYWNrQXR0cjo6Z2V0U3BlbGxpbmcoKSBjb25zdCB7CisgIHN3aXRjaCAoU3BlbGxpbmdMaXN0SW5kZXgpIHsKKyAgZGVmYXVsdDoKKyAgICBsbHZtX3VucmVhY2hhYmxlKCJVbmtub3duIGF0dHJpYnV0ZSBzcGVsbGluZyEiKTsKKyAgICByZXR1cm4gIihObyBzcGVsbGluZykiOworICBjYXNlIDA6CisgICAgcmV0dXJuICJjYWxsYmFjayI7CisgIGNhc2UgMToKKyAgICByZXR1cm4gImNhbGxiYWNrIjsKKyAgY2FzZSAyOgorICAgIHJldHVybiAiY2FsbGJhY2siOworICB9Cit9CisKIENhcGFiaWxpdHlBdHRyICpDYXBhYmlsaXR5QXR0cjo6Y2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3QgewogICBhdXRvICpBID0gbmV3IChDKSBDYXBhYmlsaXR5QXR0cihnZXRMb2NhdGlvbigpLCBDLCBnZXROYW1lKCksIGdldFNwZWxsaW5nTGlzdEluZGV4KCkpOwogICBBLT5Jbmhlcml0ZWQgPSBJbmhlcml0ZWQ7CkBAIC0yNzk0LDYgKzI5MjUsMjEgQEAKICAgfQogfQogCitETExFeHBvcnRTdGF0aWNMb2NhbEF0dHIgKkRMTEV4cG9ydFN0YXRpY0xvY2FsQXR0cjo6Y2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3QgeworICBhdXRvICpBID0gbmV3IChDKSBETExFeHBvcnRTdGF0aWNMb2NhbEF0dHIoZ2V0TG9jYXRpb24oKSwgQywgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKKyAgQS0+SXNQYWNrRXhwYW5zaW9uID0gSXNQYWNrRXhwYW5zaW9uOworICBBLT5JbXBsaWNpdCA9IEltcGxpY2l0OworICByZXR1cm4gQTsKK30KKwordm9pZCBETExFeHBvcnRTdGF0aWNMb2NhbEF0dHI6OnByaW50UHJldHR5KHJhd19vc3RyZWFtICZPUywgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3QgeworfQorCitjb25zdCBjaGFyICpETExFeHBvcnRTdGF0aWNMb2NhbEF0dHI6OmdldFNwZWxsaW5nKCkgY29uc3QgeworICByZXR1cm4gIihObyBzcGVsbGluZykiOworfQorCiBETExJbXBvcnRBdHRyICpETExJbXBvcnRBdHRyOjpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdCB7CiAgIGF1dG8gKkEgPSBuZXcgKEMpIERMTEltcG9ydEF0dHIoZ2V0TG9jYXRpb24oKSwgQywgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CiAgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKQEAgLTI4MzYsNiArMjk4MiwyMSBAQAogICB9CiB9CiAKK0RMTEltcG9ydFN0YXRpY0xvY2FsQXR0ciAqRExMSW1wb3J0U3RhdGljTG9jYWxBdHRyOjpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdCB7CisgIGF1dG8gKkEgPSBuZXcgKEMpIERMTEltcG9ydFN0YXRpY0xvY2FsQXR0cihnZXRMb2NhdGlvbigpLCBDLCBnZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKKyAgQS0+SW5oZXJpdGVkID0gSW5oZXJpdGVkOworICBBLT5Jc1BhY2tFeHBhbnNpb24gPSBJc1BhY2tFeHBhbnNpb247CisgIEEtPkltcGxpY2l0ID0gSW1wbGljaXQ7CisgIHJldHVybiBBOworfQorCit2b2lkIERMTEltcG9ydFN0YXRpY0xvY2FsQXR0cjo6cHJpbnRQcmV0dHkocmF3X29zdHJlYW0gJk9TLCBjb25zdCBQcmludGluZ1BvbGljeSAmUG9saWN5KSBjb25zdCB7Cit9CisKK2NvbnN0IGNoYXIgKkRMTEltcG9ydFN0YXRpY0xvY2FsQXR0cjo6Z2V0U3BlbGxpbmcoKSBjb25zdCB7CisgIHJldHVybiAiKE5vIHNwZWxsaW5nKSI7Cit9CisKIERlcHJlY2F0ZWRBdHRyICpEZXByZWNhdGVkQXR0cjo6Y2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3QgewogICBhdXRvICpBID0gbmV3IChDKSBEZXByZWNhdGVkQXR0cihnZXRMb2NhdGlvbigpLCBDLCBnZXRNZXNzYWdlKCksIGdldFJlcGxhY2VtZW50KCksIGdldFNwZWxsaW5nTGlzdEluZGV4KCkpOwogICBBLT5Jbmhlcml0ZWQgPSBJbmhlcml0ZWQ7CkBAIC0zNTAzLDYgKzM2NjQsNDggQEAKICAgfQogfQogCitGb3J0aWZ5U3RkTGliQXR0ciAqRm9ydGlmeVN0ZExpYkF0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKKyAgYXV0byAqQSA9IG5ldyAoQykgRm9ydGlmeVN0ZExpYkF0dHIoZ2V0TG9jYXRpb24oKSwgQywgdHlwZSwgZmxhZywgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKKyAgQS0+SXNQYWNrRXhwYW5zaW9uID0gSXNQYWNrRXhwYW5zaW9uOworICBBLT5JbXBsaWNpdCA9IEltcGxpY2l0OworICByZXR1cm4gQTsKK30KKwordm9pZCBGb3J0aWZ5U3RkTGliQXR0cjo6cHJpbnRQcmV0dHkocmF3X29zdHJlYW0gJk9TLCBjb25zdCBQcmludGluZ1BvbGljeSAmUG9saWN5KSBjb25zdCB7CisgIHN3aXRjaCAoU3BlbGxpbmdMaXN0SW5kZXgpIHsKKyAgZGVmYXVsdDoKKyAgICBsbHZtX3VucmVhY2hhYmxlKCJVbmtub3duIGF0dHJpYnV0ZSBzcGVsbGluZyEiKTsKKyAgICBicmVhazsKKyAgY2FzZSAwIDogeworICAgIE9TIDw8ICIgX19hdHRyaWJ1dGVfXygoZm9ydGlmeV9zdGRsaWIoIiA8PCBnZXRUeXBlKCkgPDwgIiwgIiA8PCBnZXRGbGFnKCkgPDwgIikpKSI7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSAxIDogeworICAgIE9TIDw8ICIgW1tjbGFuZzo6Zm9ydGlmeV9zdGRsaWIoIiA8PCBnZXRUeXBlKCkgPDwgIiwgIiA8PCBnZXRGbGFnKCkgPDwgIildXSI7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSAyIDogeworICAgIE9TIDw8ICIgW1tjbGFuZzo6Zm9ydGlmeV9zdGRsaWIoIiA8PCBnZXRUeXBlKCkgPDwgIiwgIiA8PCBnZXRGbGFnKCkgPDwgIildXSI7CisgICAgYnJlYWs7CisgIH0KK30KK30KKworY29uc3QgY2hhciAqRm9ydGlmeVN0ZExpYkF0dHI6OmdldFNwZWxsaW5nKCkgY29uc3QgeworICBzd2l0Y2ggKFNwZWxsaW5nTGlzdEluZGV4KSB7CisgIGRlZmF1bHQ6CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5rbm93biBhdHRyaWJ1dGUgc3BlbGxpbmchIik7CisgICAgcmV0dXJuICIoTm8gc3BlbGxpbmcpIjsKKyAgY2FzZSAwOgorICAgIHJldHVybiAiZm9ydGlmeV9zdGRsaWIiOworICBjYXNlIDE6CisgICAgcmV0dXJuICJmb3J0aWZ5X3N0ZGxpYiI7CisgIGNhc2UgMjoKKyAgICByZXR1cm4gImZvcnRpZnlfc3RkbGliIjsKKyAgfQorfQorCiBHTlVJbmxpbmVBdHRyICpHTlVJbmxpbmVBdHRyOjpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdCB7CiAgIGF1dG8gKkEgPSBuZXcgKEMpIEdOVUlubGluZUF0dHIoZ2V0TG9jYXRpb24oKSwgQywgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CiAgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKQEAgLTUxMTIsNiArNTMxNSw0OCBAQAogICB9CiB9CiAKK05vRGVyZWZBdHRyICpOb0RlcmVmQXR0cjo6Y2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3QgeworICBhdXRvICpBID0gbmV3IChDKSBOb0RlcmVmQXR0cihnZXRMb2NhdGlvbigpLCBDLCBnZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKKyAgQS0+SW5oZXJpdGVkID0gSW5oZXJpdGVkOworICBBLT5Jc1BhY2tFeHBhbnNpb24gPSBJc1BhY2tFeHBhbnNpb247CisgIEEtPkltcGxpY2l0ID0gSW1wbGljaXQ7CisgIHJldHVybiBBOworfQorCit2b2lkIE5vRGVyZWZBdHRyOjpwcmludFByZXR0eShyYXdfb3N0cmVhbSAmT1MsIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0IHsKKyAgc3dpdGNoIChTcGVsbGluZ0xpc3RJbmRleCkgeworICBkZWZhdWx0OgorICAgIGxsdm1fdW5yZWFjaGFibGUoIlVua25vd24gYXR0cmlidXRlIHNwZWxsaW5nISIpOworICAgIGJyZWFrOworICBjYXNlIDAgOiB7CisgICAgT1MgPDwgIiBfX2F0dHJpYnV0ZV9fKChub2RlcmVmKSkiOworICAgIGJyZWFrOworICB9CisgIGNhc2UgMSA6IHsKKyAgICBPUyA8PCAiIFtbY2xhbmc6Om5vZGVyZWZdXSI7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSAyIDogeworICAgIE9TIDw8ICIgW1tjbGFuZzo6bm9kZXJlZl1dIjsKKyAgICBicmVhazsKKyAgfQorfQorfQorCitjb25zdCBjaGFyICpOb0RlcmVmQXR0cjo6Z2V0U3BlbGxpbmcoKSBjb25zdCB7CisgIHN3aXRjaCAoU3BlbGxpbmdMaXN0SW5kZXgpIHsKKyAgZGVmYXVsdDoKKyAgICBsbHZtX3VucmVhY2hhYmxlKCJVbmtub3duIGF0dHJpYnV0ZSBzcGVsbGluZyEiKTsKKyAgICByZXR1cm4gIihObyBzcGVsbGluZykiOworICBjYXNlIDA6CisgICAgcmV0dXJuICJub2RlcmVmIjsKKyAgY2FzZSAxOgorICAgIHJldHVybiAibm9kZXJlZiI7CisgIGNhc2UgMjoKKyAgICByZXR1cm4gIm5vZGVyZWYiOworICB9Cit9CisKIE5vRGVzdHJveUF0dHIgKk5vRGVzdHJveUF0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKICAgYXV0byAqQSA9IG5ldyAoQykgTm9EZXN0cm95QXR0cihnZXRMb2NhdGlvbigpLCBDLCBnZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKICAgQS0+SW5oZXJpdGVkID0gSW5oZXJpdGVkOwpAQCAtNTQ4Nyw2ICs1NzMyLDQ4IEBACiAgIH0KIH0KIAorTm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBdHRyICpOb1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKKyAgYXV0byAqQSA9IG5ldyAoQykgTm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBdHRyKGdldExvY2F0aW9uKCksIEMsIGdldFNwZWxsaW5nTGlzdEluZGV4KCkpOworICBBLT5Jbmhlcml0ZWQgPSBJbmhlcml0ZWQ7CisgIEEtPklzUGFja0V4cGFuc2lvbiA9IElzUGFja0V4cGFuc2lvbjsKKyAgQS0+SW1wbGljaXQgPSBJbXBsaWNpdDsKKyAgcmV0dXJuIEE7Cit9CisKK3ZvaWQgTm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBdHRyOjpwcmludFByZXR0eShyYXdfb3N0cmVhbSAmT1MsIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0IHsKKyAgc3dpdGNoIChTcGVsbGluZ0xpc3RJbmRleCkgeworICBkZWZhdWx0OgorICAgIGxsdm1fdW5yZWFjaGFibGUoIlVua25vd24gYXR0cmlidXRlIHNwZWxsaW5nISIpOworICAgIGJyZWFrOworICBjYXNlIDAgOiB7CisgICAgT1MgPDwgIiBfX2F0dHJpYnV0ZV9fKChub19zcGVjdWxhdGl2ZV9sb2FkX2hhcmRlbmluZykpIjsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIDEgOiB7CisgICAgT1MgPDwgIiBbW2NsYW5nOjpub19zcGVjdWxhdGl2ZV9sb2FkX2hhcmRlbmluZ11dIjsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIDIgOiB7CisgICAgT1MgPDwgIiBbW2NsYW5nOjpub19zcGVjdWxhdGl2ZV9sb2FkX2hhcmRlbmluZ11dIjsKKyAgICBicmVhazsKKyAgfQorfQorfQorCitjb25zdCBjaGFyICpOb1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHI6OmdldFNwZWxsaW5nKCkgY29uc3QgeworICBzd2l0Y2ggKFNwZWxsaW5nTGlzdEluZGV4KSB7CisgIGRlZmF1bHQ6CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5rbm93biBhdHRyaWJ1dGUgc3BlbGxpbmchIik7CisgICAgcmV0dXJuICIoTm8gc3BlbGxpbmcpIjsKKyAgY2FzZSAwOgorICAgIHJldHVybiAibm9fc3BlY3VsYXRpdmVfbG9hZF9oYXJkZW5pbmciOworICBjYXNlIDE6CisgICAgcmV0dXJuICJub19zcGVjdWxhdGl2ZV9sb2FkX2hhcmRlbmluZyI7CisgIGNhc2UgMjoKKyAgICByZXR1cm4gIm5vX3NwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nIjsKKyAgfQorfQorCiBOb1NwbGl0U3RhY2tBdHRyICpOb1NwbGl0U3RhY2tBdHRyOjpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdCB7CiAgIGF1dG8gKkEgPSBuZXcgKEMpIE5vU3BsaXRTdGFja0F0dHIoZ2V0TG9jYXRpb24oKSwgQywgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CiAgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKQEAgLTU4NjMsNiArNjE1MCwyNTggQEAKICAgcmV0dXJuICIoTm8gc3BlbGxpbmcpIjsKIH0KIAorT1NDb25zdW1lZEF0dHIgKk9TQ29uc3VtZWRBdHRyOjpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdCB7CisgIGF1dG8gKkEgPSBuZXcgKEMpIE9TQ29uc3VtZWRBdHRyKGdldExvY2F0aW9uKCksIEMsIGdldFNwZWxsaW5nTGlzdEluZGV4KCkpOworICBBLT5Jbmhlcml0ZWQgPSBJbmhlcml0ZWQ7CisgIEEtPklzUGFja0V4cGFuc2lvbiA9IElzUGFja0V4cGFuc2lvbjsKKyAgQS0+SW1wbGljaXQgPSBJbXBsaWNpdDsKKyAgcmV0dXJuIEE7Cit9CisKK3ZvaWQgT1NDb25zdW1lZEF0dHI6OnByaW50UHJldHR5KHJhd19vc3RyZWFtICZPUywgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3QgeworICBzd2l0Y2ggKFNwZWxsaW5nTGlzdEluZGV4KSB7CisgIGRlZmF1bHQ6CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5rbm93biBhdHRyaWJ1dGUgc3BlbGxpbmchIik7CisgICAgYnJlYWs7CisgIGNhc2UgMCA6IHsKKyAgICBPUyA8PCAiIF9fYXR0cmlidXRlX18oKG9zX2NvbnN1bWVkKSkiOworICAgIGJyZWFrOworICB9CisgIGNhc2UgMSA6IHsKKyAgICBPUyA8PCAiIFtbY2xhbmc6Om9zX2NvbnN1bWVkXV0iOworICAgIGJyZWFrOworICB9CisgIGNhc2UgMiA6IHsKKyAgICBPUyA8PCAiIFtbY2xhbmc6Om9zX2NvbnN1bWVkXV0iOworICAgIGJyZWFrOworICB9Cit9Cit9CisKK2NvbnN0IGNoYXIgKk9TQ29uc3VtZWRBdHRyOjpnZXRTcGVsbGluZygpIGNvbnN0IHsKKyAgc3dpdGNoIChTcGVsbGluZ0xpc3RJbmRleCkgeworICBkZWZhdWx0OgorICAgIGxsdm1fdW5yZWFjaGFibGUoIlVua25vd24gYXR0cmlidXRlIHNwZWxsaW5nISIpOworICAgIHJldHVybiAiKE5vIHNwZWxsaW5nKSI7CisgIGNhc2UgMDoKKyAgICByZXR1cm4gIm9zX2NvbnN1bWVkIjsKKyAgY2FzZSAxOgorICAgIHJldHVybiAib3NfY29uc3VtZWQiOworICBjYXNlIDI6CisgICAgcmV0dXJuICJvc19jb25zdW1lZCI7CisgIH0KK30KKworT1NDb25zdW1lc1RoaXNBdHRyICpPU0NvbnN1bWVzVGhpc0F0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKKyAgYXV0byAqQSA9IG5ldyAoQykgT1NDb25zdW1lc1RoaXNBdHRyKGdldExvY2F0aW9uKCksIEMsIGdldFNwZWxsaW5nTGlzdEluZGV4KCkpOworICBBLT5Jbmhlcml0ZWQgPSBJbmhlcml0ZWQ7CisgIEEtPklzUGFja0V4cGFuc2lvbiA9IElzUGFja0V4cGFuc2lvbjsKKyAgQS0+SW1wbGljaXQgPSBJbXBsaWNpdDsKKyAgcmV0dXJuIEE7Cit9CisKK3ZvaWQgT1NDb25zdW1lc1RoaXNBdHRyOjpwcmludFByZXR0eShyYXdfb3N0cmVhbSAmT1MsIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0IHsKKyAgc3dpdGNoIChTcGVsbGluZ0xpc3RJbmRleCkgeworICBkZWZhdWx0OgorICAgIGxsdm1fdW5yZWFjaGFibGUoIlVua25vd24gYXR0cmlidXRlIHNwZWxsaW5nISIpOworICAgIGJyZWFrOworICBjYXNlIDAgOiB7CisgICAgT1MgPDwgIiBfX2F0dHJpYnV0ZV9fKChvc19jb25zdW1lc190aGlzKSkiOworICAgIGJyZWFrOworICB9CisgIGNhc2UgMSA6IHsKKyAgICBPUyA8PCAiIFtbY2xhbmc6Om9zX2NvbnN1bWVzX3RoaXNdXSI7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSAyIDogeworICAgIE9TIDw8ICIgW1tjbGFuZzo6b3NfY29uc3VtZXNfdGhpc11dIjsKKyAgICBicmVhazsKKyAgfQorfQorfQorCitjb25zdCBjaGFyICpPU0NvbnN1bWVzVGhpc0F0dHI6OmdldFNwZWxsaW5nKCkgY29uc3QgeworICBzd2l0Y2ggKFNwZWxsaW5nTGlzdEluZGV4KSB7CisgIGRlZmF1bHQ6CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5rbm93biBhdHRyaWJ1dGUgc3BlbGxpbmchIik7CisgICAgcmV0dXJuICIoTm8gc3BlbGxpbmcpIjsKKyAgY2FzZSAwOgorICAgIHJldHVybiAib3NfY29uc3VtZXNfdGhpcyI7CisgIGNhc2UgMToKKyAgICByZXR1cm4gIm9zX2NvbnN1bWVzX3RoaXMiOworICBjYXNlIDI6CisgICAgcmV0dXJuICJvc19jb25zdW1lc190aGlzIjsKKyAgfQorfQorCitPU1JldHVybnNOb3RSZXRhaW5lZEF0dHIgKk9TUmV0dXJuc05vdFJldGFpbmVkQXR0cjo6Y2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3QgeworICBhdXRvICpBID0gbmV3IChDKSBPU1JldHVybnNOb3RSZXRhaW5lZEF0dHIoZ2V0TG9jYXRpb24oKSwgQywgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKKyAgQS0+SXNQYWNrRXhwYW5zaW9uID0gSXNQYWNrRXhwYW5zaW9uOworICBBLT5JbXBsaWNpdCA9IEltcGxpY2l0OworICByZXR1cm4gQTsKK30KKwordm9pZCBPU1JldHVybnNOb3RSZXRhaW5lZEF0dHI6OnByaW50UHJldHR5KHJhd19vc3RyZWFtICZPUywgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3QgeworICBzd2l0Y2ggKFNwZWxsaW5nTGlzdEluZGV4KSB7CisgIGRlZmF1bHQ6CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5rbm93biBhdHRyaWJ1dGUgc3BlbGxpbmchIik7CisgICAgYnJlYWs7CisgIGNhc2UgMCA6IHsKKyAgICBPUyA8PCAiIF9fYXR0cmlidXRlX18oKG9zX3JldHVybnNfbm90X3JldGFpbmVkKSkiOworICAgIGJyZWFrOworICB9CisgIGNhc2UgMSA6IHsKKyAgICBPUyA8PCAiIFtbY2xhbmc6Om9zX3JldHVybnNfbm90X3JldGFpbmVkXV0iOworICAgIGJyZWFrOworICB9CisgIGNhc2UgMiA6IHsKKyAgICBPUyA8PCAiIFtbY2xhbmc6Om9zX3JldHVybnNfbm90X3JldGFpbmVkXV0iOworICAgIGJyZWFrOworICB9Cit9Cit9CisKK2NvbnN0IGNoYXIgKk9TUmV0dXJuc05vdFJldGFpbmVkQXR0cjo6Z2V0U3BlbGxpbmcoKSBjb25zdCB7CisgIHN3aXRjaCAoU3BlbGxpbmdMaXN0SW5kZXgpIHsKKyAgZGVmYXVsdDoKKyAgICBsbHZtX3VucmVhY2hhYmxlKCJVbmtub3duIGF0dHJpYnV0ZSBzcGVsbGluZyEiKTsKKyAgICByZXR1cm4gIihObyBzcGVsbGluZykiOworICBjYXNlIDA6CisgICAgcmV0dXJuICJvc19yZXR1cm5zX25vdF9yZXRhaW5lZCI7CisgIGNhc2UgMToKKyAgICByZXR1cm4gIm9zX3JldHVybnNfbm90X3JldGFpbmVkIjsKKyAgY2FzZSAyOgorICAgIHJldHVybiAib3NfcmV0dXJuc19ub3RfcmV0YWluZWQiOworICB9Cit9CisKK09TUmV0dXJuc1JldGFpbmVkQXR0ciAqT1NSZXR1cm5zUmV0YWluZWRBdHRyOjpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdCB7CisgIGF1dG8gKkEgPSBuZXcgKEMpIE9TUmV0dXJuc1JldGFpbmVkQXR0cihnZXRMb2NhdGlvbigpLCBDLCBnZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKKyAgQS0+SW5oZXJpdGVkID0gSW5oZXJpdGVkOworICBBLT5Jc1BhY2tFeHBhbnNpb24gPSBJc1BhY2tFeHBhbnNpb247CisgIEEtPkltcGxpY2l0ID0gSW1wbGljaXQ7CisgIHJldHVybiBBOworfQorCit2b2lkIE9TUmV0dXJuc1JldGFpbmVkQXR0cjo6cHJpbnRQcmV0dHkocmF3X29zdHJlYW0gJk9TLCBjb25zdCBQcmludGluZ1BvbGljeSAmUG9saWN5KSBjb25zdCB7CisgIHN3aXRjaCAoU3BlbGxpbmdMaXN0SW5kZXgpIHsKKyAgZGVmYXVsdDoKKyAgICBsbHZtX3VucmVhY2hhYmxlKCJVbmtub3duIGF0dHJpYnV0ZSBzcGVsbGluZyEiKTsKKyAgICBicmVhazsKKyAgY2FzZSAwIDogeworICAgIE9TIDw8ICIgX19hdHRyaWJ1dGVfXygob3NfcmV0dXJuc19yZXRhaW5lZCkpIjsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIDEgOiB7CisgICAgT1MgPDwgIiBbW2NsYW5nOjpvc19yZXR1cm5zX3JldGFpbmVkXV0iOworICAgIGJyZWFrOworICB9CisgIGNhc2UgMiA6IHsKKyAgICBPUyA8PCAiIFtbY2xhbmc6Om9zX3JldHVybnNfcmV0YWluZWRdXSI7CisgICAgYnJlYWs7CisgIH0KK30KK30KKworY29uc3QgY2hhciAqT1NSZXR1cm5zUmV0YWluZWRBdHRyOjpnZXRTcGVsbGluZygpIGNvbnN0IHsKKyAgc3dpdGNoIChTcGVsbGluZ0xpc3RJbmRleCkgeworICBkZWZhdWx0OgorICAgIGxsdm1fdW5yZWFjaGFibGUoIlVua25vd24gYXR0cmlidXRlIHNwZWxsaW5nISIpOworICAgIHJldHVybiAiKE5vIHNwZWxsaW5nKSI7CisgIGNhc2UgMDoKKyAgICByZXR1cm4gIm9zX3JldHVybnNfcmV0YWluZWQiOworICBjYXNlIDE6CisgICAgcmV0dXJuICJvc19yZXR1cm5zX3JldGFpbmVkIjsKKyAgY2FzZSAyOgorICAgIHJldHVybiAib3NfcmV0dXJuc19yZXRhaW5lZCI7CisgIH0KK30KKworT1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm9BdHRyICpPU1JldHVybnNSZXRhaW5lZE9uTm9uWmVyb0F0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKKyAgYXV0byAqQSA9IG5ldyAoQykgT1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm9BdHRyKGdldExvY2F0aW9uKCksIEMsIGdldFNwZWxsaW5nTGlzdEluZGV4KCkpOworICBBLT5Jbmhlcml0ZWQgPSBJbmhlcml0ZWQ7CisgIEEtPklzUGFja0V4cGFuc2lvbiA9IElzUGFja0V4cGFuc2lvbjsKKyAgQS0+SW1wbGljaXQgPSBJbXBsaWNpdDsKKyAgcmV0dXJuIEE7Cit9CisKK3ZvaWQgT1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm9BdHRyOjpwcmludFByZXR0eShyYXdfb3N0cmVhbSAmT1MsIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0IHsKKyAgc3dpdGNoIChTcGVsbGluZ0xpc3RJbmRleCkgeworICBkZWZhdWx0OgorICAgIGxsdm1fdW5yZWFjaGFibGUoIlVua25vd24gYXR0cmlidXRlIHNwZWxsaW5nISIpOworICAgIGJyZWFrOworICBjYXNlIDAgOiB7CisgICAgT1MgPDwgIiBfX2F0dHJpYnV0ZV9fKChvc19yZXR1cm5zX3JldGFpbmVkX29uX25vbl96ZXJvKSkiOworICAgIGJyZWFrOworICB9CisgIGNhc2UgMSA6IHsKKyAgICBPUyA8PCAiIFtbY2xhbmc6Om9zX3JldHVybnNfcmV0YWluZWRfb25fbm9uX3plcm9dXSI7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSAyIDogeworICAgIE9TIDw8ICIgW1tjbGFuZzo6b3NfcmV0dXJuc19yZXRhaW5lZF9vbl9ub25femVyb11dIjsKKyAgICBicmVhazsKKyAgfQorfQorfQorCitjb25zdCBjaGFyICpPU1JldHVybnNSZXRhaW5lZE9uTm9uWmVyb0F0dHI6OmdldFNwZWxsaW5nKCkgY29uc3QgeworICBzd2l0Y2ggKFNwZWxsaW5nTGlzdEluZGV4KSB7CisgIGRlZmF1bHQ6CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5rbm93biBhdHRyaWJ1dGUgc3BlbGxpbmchIik7CisgICAgcmV0dXJuICIoTm8gc3BlbGxpbmcpIjsKKyAgY2FzZSAwOgorICAgIHJldHVybiAib3NfcmV0dXJuc19yZXRhaW5lZF9vbl9ub25femVybyI7CisgIGNhc2UgMToKKyAgICByZXR1cm4gIm9zX3JldHVybnNfcmV0YWluZWRfb25fbm9uX3plcm8iOworICBjYXNlIDI6CisgICAgcmV0dXJuICJvc19yZXR1cm5zX3JldGFpbmVkX29uX25vbl96ZXJvIjsKKyAgfQorfQorCitPU1JldHVybnNSZXRhaW5lZE9uWmVyb0F0dHIgKk9TUmV0dXJuc1JldGFpbmVkT25aZXJvQXR0cjo6Y2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3QgeworICBhdXRvICpBID0gbmV3IChDKSBPU1JldHVybnNSZXRhaW5lZE9uWmVyb0F0dHIoZ2V0TG9jYXRpb24oKSwgQywgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKKyAgQS0+SXNQYWNrRXhwYW5zaW9uID0gSXNQYWNrRXhwYW5zaW9uOworICBBLT5JbXBsaWNpdCA9IEltcGxpY2l0OworICByZXR1cm4gQTsKK30KKwordm9pZCBPU1JldHVybnNSZXRhaW5lZE9uWmVyb0F0dHI6OnByaW50UHJldHR5KHJhd19vc3RyZWFtICZPUywgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3QgeworICBzd2l0Y2ggKFNwZWxsaW5nTGlzdEluZGV4KSB7CisgIGRlZmF1bHQ6CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5rbm93biBhdHRyaWJ1dGUgc3BlbGxpbmchIik7CisgICAgYnJlYWs7CisgIGNhc2UgMCA6IHsKKyAgICBPUyA8PCAiIF9fYXR0cmlidXRlX18oKG9zX3JldHVybnNfcmV0YWluZWRfb25femVybykpIjsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIDEgOiB7CisgICAgT1MgPDwgIiBbW2NsYW5nOjpvc19yZXR1cm5zX3JldGFpbmVkX29uX3plcm9dXSI7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSAyIDogeworICAgIE9TIDw8ICIgW1tjbGFuZzo6b3NfcmV0dXJuc19yZXRhaW5lZF9vbl96ZXJvXV0iOworICAgIGJyZWFrOworICB9Cit9Cit9CisKK2NvbnN0IGNoYXIgKk9TUmV0dXJuc1JldGFpbmVkT25aZXJvQXR0cjo6Z2V0U3BlbGxpbmcoKSBjb25zdCB7CisgIHN3aXRjaCAoU3BlbGxpbmdMaXN0SW5kZXgpIHsKKyAgZGVmYXVsdDoKKyAgICBsbHZtX3VucmVhY2hhYmxlKCJVbmtub3duIGF0dHJpYnV0ZSBzcGVsbGluZyEiKTsKKyAgICByZXR1cm4gIihObyBzcGVsbGluZykiOworICBjYXNlIDA6CisgICAgcmV0dXJuICJvc19yZXR1cm5zX3JldGFpbmVkX29uX3plcm8iOworICBjYXNlIDE6CisgICAgcmV0dXJuICJvc19yZXR1cm5zX3JldGFpbmVkX29uX3plcm8iOworICBjYXNlIDI6CisgICAgcmV0dXJuICJvc19yZXR1cm5zX3JldGFpbmVkX29uX3plcm8iOworICB9Cit9CisKIE9iakNCb3hhYmxlQXR0ciAqT2JqQ0JveGFibGVBdHRyOjpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdCB7CiAgIGF1dG8gKkEgPSBuZXcgKEMpIE9iakNCb3hhYmxlQXR0cihnZXRMb2NhdGlvbigpLCBDLCBnZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKICAgQS0+SW5oZXJpdGVkID0gSW5oZXJpdGVkOwpAQCAtNjE1Nyw2ICs2Njk2LDQ4IEBACiAgIH0KIH0KIAorT2JqQ0V4dGVybmFsbHlSZXRhaW5lZEF0dHIgKk9iakNFeHRlcm5hbGx5UmV0YWluZWRBdHRyOjpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdCB7CisgIGF1dG8gKkEgPSBuZXcgKEMpIE9iakNFeHRlcm5hbGx5UmV0YWluZWRBdHRyKGdldExvY2F0aW9uKCksIEMsIGdldFNwZWxsaW5nTGlzdEluZGV4KCkpOworICBBLT5Jbmhlcml0ZWQgPSBJbmhlcml0ZWQ7CisgIEEtPklzUGFja0V4cGFuc2lvbiA9IElzUGFja0V4cGFuc2lvbjsKKyAgQS0+SW1wbGljaXQgPSBJbXBsaWNpdDsKKyAgcmV0dXJuIEE7Cit9CisKK3ZvaWQgT2JqQ0V4dGVybmFsbHlSZXRhaW5lZEF0dHI6OnByaW50UHJldHR5KHJhd19vc3RyZWFtICZPUywgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3QgeworICBzd2l0Y2ggKFNwZWxsaW5nTGlzdEluZGV4KSB7CisgIGRlZmF1bHQ6CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5rbm93biBhdHRyaWJ1dGUgc3BlbGxpbmchIik7CisgICAgYnJlYWs7CisgIGNhc2UgMCA6IHsKKyAgICBPUyA8PCAiIF9fYXR0cmlidXRlX18oKG9iamNfZXh0ZXJuYWxseV9yZXRhaW5lZCkpIjsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIDEgOiB7CisgICAgT1MgPDwgIiBbW2NsYW5nOjpvYmpjX2V4dGVybmFsbHlfcmV0YWluZWRdXSI7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSAyIDogeworICAgIE9TIDw8ICIgW1tjbGFuZzo6b2JqY19leHRlcm5hbGx5X3JldGFpbmVkXV0iOworICAgIGJyZWFrOworICB9Cit9Cit9CisKK2NvbnN0IGNoYXIgKk9iakNFeHRlcm5hbGx5UmV0YWluZWRBdHRyOjpnZXRTcGVsbGluZygpIGNvbnN0IHsKKyAgc3dpdGNoIChTcGVsbGluZ0xpc3RJbmRleCkgeworICBkZWZhdWx0OgorICAgIGxsdm1fdW5yZWFjaGFibGUoIlVua25vd24gYXR0cmlidXRlIHNwZWxsaW5nISIpOworICAgIHJldHVybiAiKE5vIHNwZWxsaW5nKSI7CisgIGNhc2UgMDoKKyAgICByZXR1cm4gIm9iamNfZXh0ZXJuYWxseV9yZXRhaW5lZCI7CisgIGNhc2UgMToKKyAgICByZXR1cm4gIm9iamNfZXh0ZXJuYWxseV9yZXRhaW5lZCI7CisgIGNhc2UgMjoKKyAgICByZXR1cm4gIm9iamNfZXh0ZXJuYWxseV9yZXRhaW5lZCI7CisgIH0KK30KKwogT2JqQ0dDQXR0ciAqT2JqQ0dDQXR0cjo6Y2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3QgewogICBhdXRvICpBID0gbmV3IChDKSBPYmpDR0NBdHRyKGdldExvY2F0aW9uKCksIEMsIGtpbmQsIGdldFNwZWxsaW5nTGlzdEluZGV4KCkpOwogICBBLT5Jbmhlcml0ZWQgPSBJbmhlcml0ZWQ7CkBAIC02Mzg1LDYgKzY5NjYsNDggQEAKICAgfQogfQogCitPYmpDTm9uTGF6eUNsYXNzQXR0ciAqT2JqQ05vbkxhenlDbGFzc0F0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKKyAgYXV0byAqQSA9IG5ldyAoQykgT2JqQ05vbkxhenlDbGFzc0F0dHIoZ2V0TG9jYXRpb24oKSwgQywgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKKyAgQS0+SXNQYWNrRXhwYW5zaW9uID0gSXNQYWNrRXhwYW5zaW9uOworICBBLT5JbXBsaWNpdCA9IEltcGxpY2l0OworICByZXR1cm4gQTsKK30KKwordm9pZCBPYmpDTm9uTGF6eUNsYXNzQXR0cjo6cHJpbnRQcmV0dHkocmF3X29zdHJlYW0gJk9TLCBjb25zdCBQcmludGluZ1BvbGljeSAmUG9saWN5KSBjb25zdCB7CisgIHN3aXRjaCAoU3BlbGxpbmdMaXN0SW5kZXgpIHsKKyAgZGVmYXVsdDoKKyAgICBsbHZtX3VucmVhY2hhYmxlKCJVbmtub3duIGF0dHJpYnV0ZSBzcGVsbGluZyEiKTsKKyAgICBicmVhazsKKyAgY2FzZSAwIDogeworICAgIE9TIDw8ICIgX19hdHRyaWJ1dGVfXygob2JqY19ub25sYXp5X2NsYXNzKSkiOworICAgIGJyZWFrOworICB9CisgIGNhc2UgMSA6IHsKKyAgICBPUyA8PCAiIFtbY2xhbmc6Om9iamNfbm9ubGF6eV9jbGFzc11dIjsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIDIgOiB7CisgICAgT1MgPDwgIiBbW2NsYW5nOjpvYmpjX25vbmxhenlfY2xhc3NdXSI7CisgICAgYnJlYWs7CisgIH0KK30KK30KKworY29uc3QgY2hhciAqT2JqQ05vbkxhenlDbGFzc0F0dHI6OmdldFNwZWxsaW5nKCkgY29uc3QgeworICBzd2l0Y2ggKFNwZWxsaW5nTGlzdEluZGV4KSB7CisgIGRlZmF1bHQ6CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5rbm93biBhdHRyaWJ1dGUgc3BlbGxpbmchIik7CisgICAgcmV0dXJuICIoTm8gc3BlbGxpbmcpIjsKKyAgY2FzZSAwOgorICAgIHJldHVybiAib2JqY19ub25sYXp5X2NsYXNzIjsKKyAgY2FzZSAxOgorICAgIHJldHVybiAib2JqY19ub25sYXp5X2NsYXNzIjsKKyAgY2FzZSAyOgorICAgIHJldHVybiAib2JqY19ub25sYXp5X2NsYXNzIjsKKyAgfQorfQorCiBPYmpDT3duZXJzaGlwQXR0ciAqT2JqQ093bmVyc2hpcEF0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKICAgYXV0byAqQSA9IG5ldyAoQykgT2JqQ093bmVyc2hpcEF0dHIoZ2V0TG9jYXRpb24oKSwgQywga2luZCwgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CiAgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKQEAgLTg3MzksNiArOTM2Miw0OCBAQAogICB9CiB9CiAKK1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHIgKlNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKKyAgYXV0byAqQSA9IG5ldyAoQykgU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0cihnZXRMb2NhdGlvbigpLCBDLCBnZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKKyAgQS0+SW5oZXJpdGVkID0gSW5oZXJpdGVkOworICBBLT5Jc1BhY2tFeHBhbnNpb24gPSBJc1BhY2tFeHBhbnNpb247CisgIEEtPkltcGxpY2l0ID0gSW1wbGljaXQ7CisgIHJldHVybiBBOworfQorCit2b2lkIFNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHI6OnByaW50UHJldHR5KHJhd19vc3RyZWFtICZPUywgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3QgeworICBzd2l0Y2ggKFNwZWxsaW5nTGlzdEluZGV4KSB7CisgIGRlZmF1bHQ6CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5rbm93biBhdHRyaWJ1dGUgc3BlbGxpbmchIik7CisgICAgYnJlYWs7CisgIGNhc2UgMCA6IHsKKyAgICBPUyA8PCAiIF9fYXR0cmlidXRlX18oKHNwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nKSkiOworICAgIGJyZWFrOworICB9CisgIGNhc2UgMSA6IHsKKyAgICBPUyA8PCAiIFtbY2xhbmc6OnNwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nXV0iOworICAgIGJyZWFrOworICB9CisgIGNhc2UgMiA6IHsKKyAgICBPUyA8PCAiIFtbY2xhbmc6OnNwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nXV0iOworICAgIGJyZWFrOworICB9Cit9Cit9CisKK2NvbnN0IGNoYXIgKlNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHI6OmdldFNwZWxsaW5nKCkgY29uc3QgeworICBzd2l0Y2ggKFNwZWxsaW5nTGlzdEluZGV4KSB7CisgIGRlZmF1bHQ6CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5rbm93biBhdHRyaWJ1dGUgc3BlbGxpbmchIik7CisgICAgcmV0dXJuICIoTm8gc3BlbGxpbmcpIjsKKyAgY2FzZSAwOgorICAgIHJldHVybiAic3BlY3VsYXRpdmVfbG9hZF9oYXJkZW5pbmciOworICBjYXNlIDE6CisgICAgcmV0dXJuICJzcGVjdWxhdGl2ZV9sb2FkX2hhcmRlbmluZyI7CisgIGNhc2UgMjoKKyAgICByZXR1cm4gInNwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nIjsKKyAgfQorfQorCiBTdGRDYWxsQXR0ciAqU3RkQ2FsbEF0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKICAgYXV0byAqQSA9IG5ldyAoQykgU3RkQ2FsbEF0dHIoZ2V0TG9jYXRpb24oKSwgQywgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CiAgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKQEAgLTk2MDgsNiArMTAyNzMsNDIgQEAKICAgfQogfQogCitVbmluaXRpYWxpemVkQXR0ciAqVW5pbml0aWFsaXplZEF0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKKyAgYXV0byAqQSA9IG5ldyAoQykgVW5pbml0aWFsaXplZEF0dHIoZ2V0TG9jYXRpb24oKSwgQywgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKKyAgQS0+SXNQYWNrRXhwYW5zaW9uID0gSXNQYWNrRXhwYW5zaW9uOworICBBLT5JbXBsaWNpdCA9IEltcGxpY2l0OworICByZXR1cm4gQTsKK30KKwordm9pZCBVbmluaXRpYWxpemVkQXR0cjo6cHJpbnRQcmV0dHkocmF3X29zdHJlYW0gJk9TLCBjb25zdCBQcmludGluZ1BvbGljeSAmUG9saWN5KSBjb25zdCB7CisgIHN3aXRjaCAoU3BlbGxpbmdMaXN0SW5kZXgpIHsKKyAgZGVmYXVsdDoKKyAgICBsbHZtX3VucmVhY2hhYmxlKCJVbmtub3duIGF0dHJpYnV0ZSBzcGVsbGluZyEiKTsKKyAgICBicmVhazsKKyAgY2FzZSAwIDogeworICAgIE9TIDw8ICIgX19hdHRyaWJ1dGVfXygodW5pbml0aWFsaXplZCkpIjsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIDEgOiB7CisgICAgT1MgPDwgIiBbW2NsYW5nOjp1bmluaXRpYWxpemVkXV0iOworICAgIGJyZWFrOworICB9Cit9Cit9CisKK2NvbnN0IGNoYXIgKlVuaW5pdGlhbGl6ZWRBdHRyOjpnZXRTcGVsbGluZygpIGNvbnN0IHsKKyAgc3dpdGNoIChTcGVsbGluZ0xpc3RJbmRleCkgeworICBkZWZhdWx0OgorICAgIGxsdm1fdW5yZWFjaGFibGUoIlVua25vd24gYXR0cmlidXRlIHNwZWxsaW5nISIpOworICAgIHJldHVybiAiKE5vIHNwZWxsaW5nKSI7CisgIGNhc2UgMDoKKyAgICByZXR1cm4gInVuaW5pdGlhbGl6ZWQiOworICBjYXNlIDE6CisgICAgcmV0dXJuICJ1bmluaXRpYWxpemVkIjsKKyAgfQorfQorCiBVbnVzZWRBdHRyICpVbnVzZWRBdHRyOjpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdCB7CiAgIGF1dG8gKkEgPSBuZXcgKEMpIFVudXNlZEF0dHIoZ2V0TG9jYXRpb24oKSwgQywgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CiAgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKQEAgLTEwMDg4LDYgKzEwNzg5LDkwIEBACiAgIH0KIH0KIAorV2ViQXNzZW1ibHlJbXBvcnRNb2R1bGVBdHRyICpXZWJBc3NlbWJseUltcG9ydE1vZHVsZUF0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKKyAgYXV0byAqQSA9IG5ldyAoQykgV2ViQXNzZW1ibHlJbXBvcnRNb2R1bGVBdHRyKGdldExvY2F0aW9uKCksIEMsIGdldEltcG9ydE1vZHVsZSgpLCBnZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKKyAgQS0+SW5oZXJpdGVkID0gSW5oZXJpdGVkOworICBBLT5Jc1BhY2tFeHBhbnNpb24gPSBJc1BhY2tFeHBhbnNpb247CisgIEEtPkltcGxpY2l0ID0gSW1wbGljaXQ7CisgIHJldHVybiBBOworfQorCit2b2lkIFdlYkFzc2VtYmx5SW1wb3J0TW9kdWxlQXR0cjo6cHJpbnRQcmV0dHkocmF3X29zdHJlYW0gJk9TLCBjb25zdCBQcmludGluZ1BvbGljeSAmUG9saWN5KSBjb25zdCB7CisgIHN3aXRjaCAoU3BlbGxpbmdMaXN0SW5kZXgpIHsKKyAgZGVmYXVsdDoKKyAgICBsbHZtX3VucmVhY2hhYmxlKCJVbmtub3duIGF0dHJpYnV0ZSBzcGVsbGluZyEiKTsKKyAgICBicmVhazsKKyAgY2FzZSAwIDogeworICAgIE9TIDw8ICIgX19hdHRyaWJ1dGVfXygoaW1wb3J0X21vZHVsZShcIiIgPDwgZ2V0SW1wb3J0TW9kdWxlKCkgPDwgIlwiKSkpIjsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIDEgOiB7CisgICAgT1MgPDwgIiBbW2NsYW5nOjppbXBvcnRfbW9kdWxlKFwiIiA8PCBnZXRJbXBvcnRNb2R1bGUoKSA8PCAiXCIpXV0iOworICAgIGJyZWFrOworICB9CisgIGNhc2UgMiA6IHsKKyAgICBPUyA8PCAiIFtbY2xhbmc6OmltcG9ydF9tb2R1bGUoXCIiIDw8IGdldEltcG9ydE1vZHVsZSgpIDw8ICJcIildXSI7CisgICAgYnJlYWs7CisgIH0KK30KK30KKworY29uc3QgY2hhciAqV2ViQXNzZW1ibHlJbXBvcnRNb2R1bGVBdHRyOjpnZXRTcGVsbGluZygpIGNvbnN0IHsKKyAgc3dpdGNoIChTcGVsbGluZ0xpc3RJbmRleCkgeworICBkZWZhdWx0OgorICAgIGxsdm1fdW5yZWFjaGFibGUoIlVua25vd24gYXR0cmlidXRlIHNwZWxsaW5nISIpOworICAgIHJldHVybiAiKE5vIHNwZWxsaW5nKSI7CisgIGNhc2UgMDoKKyAgICByZXR1cm4gImltcG9ydF9tb2R1bGUiOworICBjYXNlIDE6CisgICAgcmV0dXJuICJpbXBvcnRfbW9kdWxlIjsKKyAgY2FzZSAyOgorICAgIHJldHVybiAiaW1wb3J0X21vZHVsZSI7CisgIH0KK30KKworV2ViQXNzZW1ibHlJbXBvcnROYW1lQXR0ciAqV2ViQXNzZW1ibHlJbXBvcnROYW1lQXR0cjo6Y2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3QgeworICBhdXRvICpBID0gbmV3IChDKSBXZWJBc3NlbWJseUltcG9ydE5hbWVBdHRyKGdldExvY2F0aW9uKCksIEMsIGdldEltcG9ydE5hbWUoKSwgZ2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgIEEtPkluaGVyaXRlZCA9IEluaGVyaXRlZDsKKyAgQS0+SXNQYWNrRXhwYW5zaW9uID0gSXNQYWNrRXhwYW5zaW9uOworICBBLT5JbXBsaWNpdCA9IEltcGxpY2l0OworICByZXR1cm4gQTsKK30KKwordm9pZCBXZWJBc3NlbWJseUltcG9ydE5hbWVBdHRyOjpwcmludFByZXR0eShyYXdfb3N0cmVhbSAmT1MsIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0IHsKKyAgc3dpdGNoIChTcGVsbGluZ0xpc3RJbmRleCkgeworICBkZWZhdWx0OgorICAgIGxsdm1fdW5yZWFjaGFibGUoIlVua25vd24gYXR0cmlidXRlIHNwZWxsaW5nISIpOworICAgIGJyZWFrOworICBjYXNlIDAgOiB7CisgICAgT1MgPDwgIiBfX2F0dHJpYnV0ZV9fKChpbXBvcnRfbmFtZShcIiIgPDwgZ2V0SW1wb3J0TmFtZSgpIDw8ICJcIikpKSI7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSAxIDogeworICAgIE9TIDw8ICIgW1tjbGFuZzo6aW1wb3J0X25hbWUoXCIiIDw8IGdldEltcG9ydE5hbWUoKSA8PCAiXCIpXV0iOworICAgIGJyZWFrOworICB9CisgIGNhc2UgMiA6IHsKKyAgICBPUyA8PCAiIFtbY2xhbmc6OmltcG9ydF9uYW1lKFwiIiA8PCBnZXRJbXBvcnROYW1lKCkgPDwgIlwiKV1dIjsKKyAgICBicmVhazsKKyAgfQorfQorfQorCitjb25zdCBjaGFyICpXZWJBc3NlbWJseUltcG9ydE5hbWVBdHRyOjpnZXRTcGVsbGluZygpIGNvbnN0IHsKKyAgc3dpdGNoIChTcGVsbGluZ0xpc3RJbmRleCkgeworICBkZWZhdWx0OgorICAgIGxsdm1fdW5yZWFjaGFibGUoIlVua25vd24gYXR0cmlidXRlIHNwZWxsaW5nISIpOworICAgIHJldHVybiAiKE5vIHNwZWxsaW5nKSI7CisgIGNhc2UgMDoKKyAgICByZXR1cm4gImltcG9ydF9uYW1lIjsKKyAgY2FzZSAxOgorICAgIHJldHVybiAiaW1wb3J0X25hbWUiOworICBjYXNlIDI6CisgICAgcmV0dXJuICJpbXBvcnRfbmFtZSI7CisgIH0KK30KKwogV29ya0dyb3VwU2l6ZUhpbnRBdHRyICpXb3JrR3JvdXBTaXplSGludEF0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKICAgYXV0byAqQSA9IG5ldyAoQykgV29ya0dyb3VwU2l6ZUhpbnRBdHRyKGdldExvY2F0aW9uKCksIEMsIHhEaW0sIHlEaW0sIHpEaW0sIGdldFNwZWxsaW5nTGlzdEluZGV4KCkpOwogICBBLT5Jbmhlcml0ZWQgPSBJbmhlcml0ZWQ7CkBAIC0xMDI1OCw2ICsxMTA0Myw4IEBACiAKIGNvbnN0IGNoYXIgKkF0dHI6OmdldFNwZWxsaW5nKCkgY29uc3QgewogICBzd2l0Y2ggKGdldEtpbmQoKSkgeworICBjYXNlIGF0dHI6OkFBcmNoNjRWZWN0b3JQY3M6CisgICAgcmV0dXJuIGNhc3Q8QUFyY2g2NFZlY3RvclBjc0F0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOwogICBjYXNlIGF0dHI6OkFNREdQVUZsYXRXb3JrR3JvdXBTaXplOgogICAgIHJldHVybiBjYXN0PEFNREdQVUZsYXRXb3JrR3JvdXBTaXplQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6QU1ER1BVTnVtU0dQUjoKQEAgLTEwMzY0LDYgKzExMTUxLDggQEAKICAgICByZXR1cm4gY2FzdDxDWFgxMU5vUmV0dXJuQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6Q2FsbGFibGVXaGVuOgogICAgIHJldHVybiBjYXN0PENhbGxhYmxlV2hlbkF0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOworICBjYXNlIGF0dHI6OkNhbGxiYWNrOgorICAgIHJldHVybiBjYXN0PENhbGxiYWNrQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6Q2FwYWJpbGl0eToKICAgICByZXR1cm4gY2FzdDxDYXBhYmlsaXR5QXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6Q2FwdHVyZWRSZWNvcmQ6CkBAIC0xMDM5Miw4ICsxMTE4MSwxMiBAQAogICAgIHJldHVybiBjYXN0PENvbnZlcmdlbnRBdHRyPih0aGlzKS0+Z2V0U3BlbGxpbmcoKTsKICAgY2FzZSBhdHRyOjpETExFeHBvcnQ6CiAgICAgcmV0dXJuIGNhc3Q8RExMRXhwb3J0QXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CisgIGNhc2UgYXR0cjo6RExMRXhwb3J0U3RhdGljTG9jYWw6CisgICAgcmV0dXJuIGNhc3Q8RExMRXhwb3J0U3RhdGljTG9jYWxBdHRyPih0aGlzKS0+Z2V0U3BlbGxpbmcoKTsKICAgY2FzZSBhdHRyOjpETExJbXBvcnQ6CiAgICAgcmV0dXJuIGNhc3Q8RExMSW1wb3J0QXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CisgIGNhc2UgYXR0cjo6RExMSW1wb3J0U3RhdGljTG9jYWw6CisgICAgcmV0dXJuIGNhc3Q8RExMSW1wb3J0U3RhdGljTG9jYWxBdHRyPih0aGlzKS0+Z2V0U3BlbGxpbmcoKTsKICAgY2FzZSBhdHRyOjpEZXByZWNhdGVkOgogICAgIHJldHVybiBjYXN0PERlcHJlY2F0ZWRBdHRyPih0aGlzKS0+Z2V0U3BlbGxpbmcoKTsKICAgY2FzZSBhdHRyOjpEZXN0cnVjdG9yOgpAQCAtMTA0MjgsNiArMTEyMjEsOCBAQAogICAgIHJldHVybiBjYXN0PEZvcm1hdEF0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOwogICBjYXNlIGF0dHI6OkZvcm1hdEFyZzoKICAgICByZXR1cm4gY2FzdDxGb3JtYXRBcmdBdHRyPih0aGlzKS0+Z2V0U3BlbGxpbmcoKTsKKyAgY2FzZSBhdHRyOjpGb3J0aWZ5U3RkTGliOgorICAgIHJldHVybiBjYXN0PEZvcnRpZnlTdGRMaWJBdHRyPih0aGlzKS0+Z2V0U3BlbGxpbmcoKTsKICAgY2FzZSBhdHRyOjpHTlVJbmxpbmU6CiAgICAgcmV0dXJuIGNhc3Q8R05VSW5saW5lQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6R3VhcmRlZEJ5OgpAQCAtMTA1MTQsNiArMTEzMDksOCBAQAogICAgIHJldHVybiBjYXN0PE5vQ29tbW9uQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6Tm9EZWJ1ZzoKICAgICByZXR1cm4gY2FzdDxOb0RlYnVnQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CisgIGNhc2UgYXR0cjo6Tm9EZXJlZjoKKyAgICByZXR1cm4gY2FzdDxOb0RlcmVmQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6Tm9EZXN0cm95OgogICAgIHJldHVybiBjYXN0PE5vRGVzdHJveUF0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOwogICBjYXNlIGF0dHI6Ok5vRHVwbGljYXRlOgpAQCAtMTA1MzIsNiArMTEzMjksOCBAQAogICAgIHJldHVybiBjYXN0PE5vUmV0dXJuQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6Tm9TYW5pdGl6ZToKICAgICByZXR1cm4gY2FzdDxOb1Nhbml0aXplQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CisgIGNhc2UgYXR0cjo6Tm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmc6CisgICAgcmV0dXJuIGNhc3Q8Tm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBdHRyPih0aGlzKS0+Z2V0U3BlbGxpbmcoKTsKICAgY2FzZSBhdHRyOjpOb1NwbGl0U3RhY2s6CiAgICAgcmV0dXJuIGNhc3Q8Tm9TcGxpdFN0YWNrQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6Tm9TdGFja1Byb3RlY3RvcjoKQEAgLTEwNTU2LDYgKzExMzU1LDE4IEBACiAgICAgcmV0dXJuIGNhc3Q8T01QUmVmZXJlbmNlZFZhckF0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOwogICBjYXNlIGF0dHI6Ok9NUFRocmVhZFByaXZhdGVEZWNsOgogICAgIHJldHVybiBjYXN0PE9NUFRocmVhZFByaXZhdGVEZWNsQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CisgIGNhc2UgYXR0cjo6T1NDb25zdW1lZDoKKyAgICByZXR1cm4gY2FzdDxPU0NvbnN1bWVkQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CisgIGNhc2UgYXR0cjo6T1NDb25zdW1lc1RoaXM6CisgICAgcmV0dXJuIGNhc3Q8T1NDb25zdW1lc1RoaXNBdHRyPih0aGlzKS0+Z2V0U3BlbGxpbmcoKTsKKyAgY2FzZSBhdHRyOjpPU1JldHVybnNOb3RSZXRhaW5lZDoKKyAgICByZXR1cm4gY2FzdDxPU1JldHVybnNOb3RSZXRhaW5lZEF0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOworICBjYXNlIGF0dHI6Ok9TUmV0dXJuc1JldGFpbmVkOgorICAgIHJldHVybiBjYXN0PE9TUmV0dXJuc1JldGFpbmVkQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CisgIGNhc2UgYXR0cjo6T1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm86CisgICAgcmV0dXJuIGNhc3Q8T1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm9BdHRyPih0aGlzKS0+Z2V0U3BlbGxpbmcoKTsKKyAgY2FzZSBhdHRyOjpPU1JldHVybnNSZXRhaW5lZE9uWmVybzoKKyAgICByZXR1cm4gY2FzdDxPU1JldHVybnNSZXRhaW5lZE9uWmVyb0F0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOwogICBjYXNlIGF0dHI6Ok9iakNCb3hhYmxlOgogICAgIHJldHVybiBjYXN0PE9iakNCb3hhYmxlQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6T2JqQ0JyaWRnZToKQEAgLTEwNTcwLDYgKzExMzgxLDggQEAKICAgICByZXR1cm4gY2FzdDxPYmpDRXhjZXB0aW9uQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6T2JqQ0V4cGxpY2l0UHJvdG9jb2xJbXBsOgogICAgIHJldHVybiBjYXN0PE9iakNFeHBsaWNpdFByb3RvY29sSW1wbEF0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOworICBjYXNlIGF0dHI6Ok9iakNFeHRlcm5hbGx5UmV0YWluZWQ6CisgICAgcmV0dXJuIGNhc3Q8T2JqQ0V4dGVybmFsbHlSZXRhaW5lZEF0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOwogICBjYXNlIGF0dHI6Ok9iakNHQzoKICAgICByZXR1cm4gY2FzdDxPYmpDR0NBdHRyPih0aGlzKS0+Z2V0U3BlbGxpbmcoKTsKICAgY2FzZSBhdHRyOjpPYmpDSW5kZXBlbmRlbnRDbGFzczoKQEAgLTEwNTgyLDYgKzExMzk1LDggQEAKICAgICByZXR1cm4gY2FzdDxPYmpDTWV0aG9kRmFtaWx5QXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6T2JqQ05TT2JqZWN0OgogICAgIHJldHVybiBjYXN0PE9iakNOU09iamVjdEF0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOworICBjYXNlIGF0dHI6Ok9iakNOb25MYXp5Q2xhc3M6CisgICAgcmV0dXJuIGNhc3Q8T2JqQ05vbkxhenlDbGFzc0F0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOwogICBjYXNlIGF0dHI6Ok9iakNPd25lcnNoaXA6CiAgICAgcmV0dXJuIGNhc3Q8T2JqQ093bmVyc2hpcEF0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOwogICBjYXNlIGF0dHI6Ok9iakNQcmVjaXNlTGlmZXRpbWU6CkBAIC0xMDY5Niw2ICsxMTUxMSw4IEBACiAgICAgcmV0dXJuIGNhc3Q8U2V0VHlwZXN0YXRlQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6U2hhcmVkVHJ5bG9ja0Z1bmN0aW9uOgogICAgIHJldHVybiBjYXN0PFNoYXJlZFRyeWxvY2tGdW5jdGlvbkF0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOworICBjYXNlIGF0dHI6OlNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZzoKKyAgICByZXR1cm4gY2FzdDxTcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBdHRyPih0aGlzKS0+Z2V0U3BlbGxpbmcoKTsKICAgY2FzZSBhdHRyOjpTdGRDYWxsOgogICAgIHJldHVybiBjYXN0PFN0ZENhbGxBdHRyPih0aGlzKS0+Z2V0U3BlbGxpbmcoKTsKICAgY2FzZSBhdHRyOjpTdXBwcmVzczoKQEAgLTEwNzQwLDYgKzExNTU3LDggQEAKICAgICByZXR1cm4gY2FzdDxVUHRyQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6VW5hdmFpbGFibGU6CiAgICAgcmV0dXJuIGNhc3Q8VW5hdmFpbGFibGVBdHRyPih0aGlzKS0+Z2V0U3BlbGxpbmcoKTsKKyAgY2FzZSBhdHRyOjpVbmluaXRpYWxpemVkOgorICAgIHJldHVybiBjYXN0PFVuaW5pdGlhbGl6ZWRBdHRyPih0aGlzKS0+Z2V0U3BlbGxpbmcoKTsKICAgY2FzZSBhdHRyOjpVbnVzZWQ6CiAgICAgcmV0dXJuIGNhc3Q8VW51c2VkQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6VXNlZDoKQEAgLTEwNzY0LDYgKzExNTgzLDEwIEBACiAgICAgcmV0dXJuIGNhc3Q8V2Vha0ltcG9ydEF0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOwogICBjYXNlIGF0dHI6OldlYWtSZWY6CiAgICAgcmV0dXJuIGNhc3Q8V2Vha1JlZkF0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOworICBjYXNlIGF0dHI6OldlYkFzc2VtYmx5SW1wb3J0TW9kdWxlOgorICAgIHJldHVybiBjYXN0PFdlYkFzc2VtYmx5SW1wb3J0TW9kdWxlQXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CisgIGNhc2UgYXR0cjo6V2ViQXNzZW1ibHlJbXBvcnROYW1lOgorICAgIHJldHVybiBjYXN0PFdlYkFzc2VtYmx5SW1wb3J0TmFtZUF0dHI+KHRoaXMpLT5nZXRTcGVsbGluZygpOwogICBjYXNlIGF0dHI6OldvcmtHcm91cFNpemVIaW50OgogICAgIHJldHVybiBjYXN0PFdvcmtHcm91cFNpemVIaW50QXR0cj4odGhpcyktPmdldFNwZWxsaW5nKCk7CiAgIGNhc2UgYXR0cjo6WDg2Rm9yY2VBbGlnbkFyZ1BvaW50ZXI6CkBAIC0xMDc3OCw2ICsxMTYwMSw4IEBACiAKIEF0dHIgKkF0dHI6OmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0IHsKICAgc3dpdGNoIChnZXRLaW5kKCkpIHsKKyAgY2FzZSBhdHRyOjpBQXJjaDY0VmVjdG9yUGNzOgorICAgIHJldHVybiBjYXN0PEFBcmNoNjRWZWN0b3JQY3NBdHRyPih0aGlzKS0+Y2xvbmUoQyk7CiAgIGNhc2UgYXR0cjo6QU1ER1BVRmxhdFdvcmtHcm91cFNpemU6CiAgICAgcmV0dXJuIGNhc3Q8QU1ER1BVRmxhdFdvcmtHcm91cFNpemVBdHRyPih0aGlzKS0+Y2xvbmUoQyk7CiAgIGNhc2UgYXR0cjo6QU1ER1BVTnVtU0dQUjoKQEAgLTEwODg0LDYgKzExNzA5LDggQEAKICAgICByZXR1cm4gY2FzdDxDWFgxMU5vUmV0dXJuQXR0cj4odGhpcyktPmNsb25lKEMpOwogICBjYXNlIGF0dHI6OkNhbGxhYmxlV2hlbjoKICAgICByZXR1cm4gY2FzdDxDYWxsYWJsZVdoZW5BdHRyPih0aGlzKS0+Y2xvbmUoQyk7CisgIGNhc2UgYXR0cjo6Q2FsbGJhY2s6CisgICAgcmV0dXJuIGNhc3Q8Q2FsbGJhY2tBdHRyPih0aGlzKS0+Y2xvbmUoQyk7CiAgIGNhc2UgYXR0cjo6Q2FwYWJpbGl0eToKICAgICByZXR1cm4gY2FzdDxDYXBhYmlsaXR5QXR0cj4odGhpcyktPmNsb25lKEMpOwogICBjYXNlIGF0dHI6OkNhcHR1cmVkUmVjb3JkOgpAQCAtMTA5MTIsOCArMTE3MzksMTIgQEAKICAgICByZXR1cm4gY2FzdDxDb252ZXJnZW50QXR0cj4odGhpcyktPmNsb25lKEMpOwogICBjYXNlIGF0dHI6OkRMTEV4cG9ydDoKICAgICByZXR1cm4gY2FzdDxETExFeHBvcnRBdHRyPih0aGlzKS0+Y2xvbmUoQyk7CisgIGNhc2UgYXR0cjo6RExMRXhwb3J0U3RhdGljTG9jYWw6CisgICAgcmV0dXJuIGNhc3Q8RExMRXhwb3J0U3RhdGljTG9jYWxBdHRyPih0aGlzKS0+Y2xvbmUoQyk7CiAgIGNhc2UgYXR0cjo6RExMSW1wb3J0OgogICAgIHJldHVybiBjYXN0PERMTEltcG9ydEF0dHI+KHRoaXMpLT5jbG9uZShDKTsKKyAgY2FzZSBhdHRyOjpETExJbXBvcnRTdGF0aWNMb2NhbDoKKyAgICByZXR1cm4gY2FzdDxETExJbXBvcnRTdGF0aWNMb2NhbEF0dHI+KHRoaXMpLT5jbG9uZShDKTsKICAgY2FzZSBhdHRyOjpEZXByZWNhdGVkOgogICAgIHJldHVybiBjYXN0PERlcHJlY2F0ZWRBdHRyPih0aGlzKS0+Y2xvbmUoQyk7CiAgIGNhc2UgYXR0cjo6RGVzdHJ1Y3RvcjoKQEAgLTEwOTQ4LDYgKzExNzc5LDggQEAKICAgICByZXR1cm4gY2FzdDxGb3JtYXRBdHRyPih0aGlzKS0+Y2xvbmUoQyk7CiAgIGNhc2UgYXR0cjo6Rm9ybWF0QXJnOgogICAgIHJldHVybiBjYXN0PEZvcm1hdEFyZ0F0dHI+KHRoaXMpLT5jbG9uZShDKTsKKyAgY2FzZSBhdHRyOjpGb3J0aWZ5U3RkTGliOgorICAgIHJldHVybiBjYXN0PEZvcnRpZnlTdGRMaWJBdHRyPih0aGlzKS0+Y2xvbmUoQyk7CiAgIGNhc2UgYXR0cjo6R05VSW5saW5lOgogICAgIHJldHVybiBjYXN0PEdOVUlubGluZUF0dHI+KHRoaXMpLT5jbG9uZShDKTsKICAgY2FzZSBhdHRyOjpHdWFyZGVkQnk6CkBAIC0xMTAzNCw2ICsxMTg2Nyw4IEBACiAgICAgcmV0dXJuIGNhc3Q8Tm9Db21tb25BdHRyPih0aGlzKS0+Y2xvbmUoQyk7CiAgIGNhc2UgYXR0cjo6Tm9EZWJ1ZzoKICAgICByZXR1cm4gY2FzdDxOb0RlYnVnQXR0cj4odGhpcyktPmNsb25lKEMpOworICBjYXNlIGF0dHI6Ok5vRGVyZWY6CisgICAgcmV0dXJuIGNhc3Q8Tm9EZXJlZkF0dHI+KHRoaXMpLT5jbG9uZShDKTsKICAgY2FzZSBhdHRyOjpOb0Rlc3Ryb3k6CiAgICAgcmV0dXJuIGNhc3Q8Tm9EZXN0cm95QXR0cj4odGhpcyktPmNsb25lKEMpOwogICBjYXNlIGF0dHI6Ok5vRHVwbGljYXRlOgpAQCAtMTEwNTIsNiArMTE4ODcsOCBAQAogICAgIHJldHVybiBjYXN0PE5vUmV0dXJuQXR0cj4odGhpcyktPmNsb25lKEMpOwogICBjYXNlIGF0dHI6Ok5vU2FuaXRpemU6CiAgICAgcmV0dXJuIGNhc3Q8Tm9TYW5pdGl6ZUF0dHI+KHRoaXMpLT5jbG9uZShDKTsKKyAgY2FzZSBhdHRyOjpOb1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZzoKKyAgICByZXR1cm4gY2FzdDxOb1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHI+KHRoaXMpLT5jbG9uZShDKTsKICAgY2FzZSBhdHRyOjpOb1NwbGl0U3RhY2s6CiAgICAgcmV0dXJuIGNhc3Q8Tm9TcGxpdFN0YWNrQXR0cj4odGhpcyktPmNsb25lKEMpOwogICBjYXNlIGF0dHI6Ok5vU3RhY2tQcm90ZWN0b3I6CkBAIC0xMTA3Niw2ICsxMTkxMywxOCBAQAogICAgIHJldHVybiBjYXN0PE9NUFJlZmVyZW5jZWRWYXJBdHRyPih0aGlzKS0+Y2xvbmUoQyk7CiAgIGNhc2UgYXR0cjo6T01QVGhyZWFkUHJpdmF0ZURlY2w6CiAgICAgcmV0dXJuIGNhc3Q8T01QVGhyZWFkUHJpdmF0ZURlY2xBdHRyPih0aGlzKS0+Y2xvbmUoQyk7CisgIGNhc2UgYXR0cjo6T1NDb25zdW1lZDoKKyAgICByZXR1cm4gY2FzdDxPU0NvbnN1bWVkQXR0cj4odGhpcyktPmNsb25lKEMpOworICBjYXNlIGF0dHI6Ok9TQ29uc3VtZXNUaGlzOgorICAgIHJldHVybiBjYXN0PE9TQ29uc3VtZXNUaGlzQXR0cj4odGhpcyktPmNsb25lKEMpOworICBjYXNlIGF0dHI6Ok9TUmV0dXJuc05vdFJldGFpbmVkOgorICAgIHJldHVybiBjYXN0PE9TUmV0dXJuc05vdFJldGFpbmVkQXR0cj4odGhpcyktPmNsb25lKEMpOworICBjYXNlIGF0dHI6Ok9TUmV0dXJuc1JldGFpbmVkOgorICAgIHJldHVybiBjYXN0PE9TUmV0dXJuc1JldGFpbmVkQXR0cj4odGhpcyktPmNsb25lKEMpOworICBjYXNlIGF0dHI6Ok9TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvOgorICAgIHJldHVybiBjYXN0PE9TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvQXR0cj4odGhpcyktPmNsb25lKEMpOworICBjYXNlIGF0dHI6Ok9TUmV0dXJuc1JldGFpbmVkT25aZXJvOgorICAgIHJldHVybiBjYXN0PE9TUmV0dXJuc1JldGFpbmVkT25aZXJvQXR0cj4odGhpcyktPmNsb25lKEMpOwogICBjYXNlIGF0dHI6Ok9iakNCb3hhYmxlOgogICAgIHJldHVybiBjYXN0PE9iakNCb3hhYmxlQXR0cj4odGhpcyktPmNsb25lKEMpOwogICBjYXNlIGF0dHI6Ok9iakNCcmlkZ2U6CkBAIC0xMTA5MCw2ICsxMTkzOSw4IEBACiAgICAgcmV0dXJuIGNhc3Q8T2JqQ0V4Y2VwdGlvbkF0dHI+KHRoaXMpLT5jbG9uZShDKTsKICAgY2FzZSBhdHRyOjpPYmpDRXhwbGljaXRQcm90b2NvbEltcGw6CiAgICAgcmV0dXJuIGNhc3Q8T2JqQ0V4cGxpY2l0UHJvdG9jb2xJbXBsQXR0cj4odGhpcyktPmNsb25lKEMpOworICBjYXNlIGF0dHI6Ok9iakNFeHRlcm5hbGx5UmV0YWluZWQ6CisgICAgcmV0dXJuIGNhc3Q8T2JqQ0V4dGVybmFsbHlSZXRhaW5lZEF0dHI+KHRoaXMpLT5jbG9uZShDKTsKICAgY2FzZSBhdHRyOjpPYmpDR0M6CiAgICAgcmV0dXJuIGNhc3Q8T2JqQ0dDQXR0cj4odGhpcyktPmNsb25lKEMpOwogICBjYXNlIGF0dHI6Ok9iakNJbmRlcGVuZGVudENsYXNzOgpAQCAtMTExMDIsNiArMTE5NTMsOCBAQAogICAgIHJldHVybiBjYXN0PE9iakNNZXRob2RGYW1pbHlBdHRyPih0aGlzKS0+Y2xvbmUoQyk7CiAgIGNhc2UgYXR0cjo6T2JqQ05TT2JqZWN0OgogICAgIHJldHVybiBjYXN0PE9iakNOU09iamVjdEF0dHI+KHRoaXMpLT5jbG9uZShDKTsKKyAgY2FzZSBhdHRyOjpPYmpDTm9uTGF6eUNsYXNzOgorICAgIHJldHVybiBjYXN0PE9iakNOb25MYXp5Q2xhc3NBdHRyPih0aGlzKS0+Y2xvbmUoQyk7CiAgIGNhc2UgYXR0cjo6T2JqQ093bmVyc2hpcDoKICAgICByZXR1cm4gY2FzdDxPYmpDT3duZXJzaGlwQXR0cj4odGhpcyktPmNsb25lKEMpOwogICBjYXNlIGF0dHI6Ok9iakNQcmVjaXNlTGlmZXRpbWU6CkBAIC0xMTIxNiw2ICsxMjA2OSw4IEBACiAgICAgcmV0dXJuIGNhc3Q8U2V0VHlwZXN0YXRlQXR0cj4odGhpcyktPmNsb25lKEMpOwogICBjYXNlIGF0dHI6OlNoYXJlZFRyeWxvY2tGdW5jdGlvbjoKICAgICByZXR1cm4gY2FzdDxTaGFyZWRUcnlsb2NrRnVuY3Rpb25BdHRyPih0aGlzKS0+Y2xvbmUoQyk7CisgIGNhc2UgYXR0cjo6U3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nOgorICAgIHJldHVybiBjYXN0PFNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHI+KHRoaXMpLT5jbG9uZShDKTsKICAgY2FzZSBhdHRyOjpTdGRDYWxsOgogICAgIHJldHVybiBjYXN0PFN0ZENhbGxBdHRyPih0aGlzKS0+Y2xvbmUoQyk7CiAgIGNhc2UgYXR0cjo6U3VwcHJlc3M6CkBAIC0xMTI2MCw2ICsxMjExNSw4IEBACiAgICAgcmV0dXJuIGNhc3Q8VVB0ckF0dHI+KHRoaXMpLT5jbG9uZShDKTsKICAgY2FzZSBhdHRyOjpVbmF2YWlsYWJsZToKICAgICByZXR1cm4gY2FzdDxVbmF2YWlsYWJsZUF0dHI+KHRoaXMpLT5jbG9uZShDKTsKKyAgY2FzZSBhdHRyOjpVbmluaXRpYWxpemVkOgorICAgIHJldHVybiBjYXN0PFVuaW5pdGlhbGl6ZWRBdHRyPih0aGlzKS0+Y2xvbmUoQyk7CiAgIGNhc2UgYXR0cjo6VW51c2VkOgogICAgIHJldHVybiBjYXN0PFVudXNlZEF0dHI+KHRoaXMpLT5jbG9uZShDKTsKICAgY2FzZSBhdHRyOjpVc2VkOgpAQCAtMTEyODQsNiArMTIxNDEsMTAgQEAKICAgICByZXR1cm4gY2FzdDxXZWFrSW1wb3J0QXR0cj4odGhpcyktPmNsb25lKEMpOwogICBjYXNlIGF0dHI6OldlYWtSZWY6CiAgICAgcmV0dXJuIGNhc3Q8V2Vha1JlZkF0dHI+KHRoaXMpLT5jbG9uZShDKTsKKyAgY2FzZSBhdHRyOjpXZWJBc3NlbWJseUltcG9ydE1vZHVsZToKKyAgICByZXR1cm4gY2FzdDxXZWJBc3NlbWJseUltcG9ydE1vZHVsZUF0dHI+KHRoaXMpLT5jbG9uZShDKTsKKyAgY2FzZSBhdHRyOjpXZWJBc3NlbWJseUltcG9ydE5hbWU6CisgICAgcmV0dXJuIGNhc3Q8V2ViQXNzZW1ibHlJbXBvcnROYW1lQXR0cj4odGhpcyktPmNsb25lKEMpOwogICBjYXNlIGF0dHI6OldvcmtHcm91cFNpemVIaW50OgogICAgIHJldHVybiBjYXN0PFdvcmtHcm91cFNpemVIaW50QXR0cj4odGhpcyktPmNsb25lKEMpOwogICBjYXNlIGF0dHI6Olg4NkZvcmNlQWxpZ25BcmdQb2ludGVyOgpAQCAtMTEyOTgsNiArMTIxNTksOCBAQAogCiB2b2lkIEF0dHI6OnByaW50UHJldHR5KHJhd19vc3RyZWFtICZPUywgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3QgewogICBzd2l0Y2ggKGdldEtpbmQoKSkgeworICBjYXNlIGF0dHI6OkFBcmNoNjRWZWN0b3JQY3M6CisgICAgcmV0dXJuIGNhc3Q8QUFyY2g2NFZlY3RvclBjc0F0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKICAgY2FzZSBhdHRyOjpBTURHUFVGbGF0V29ya0dyb3VwU2l6ZToKICAgICByZXR1cm4gY2FzdDxBTURHUFVGbGF0V29ya0dyb3VwU2l6ZUF0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKICAgY2FzZSBhdHRyOjpBTURHUFVOdW1TR1BSOgpAQCAtMTE0MDQsNiArMTIyNjcsOCBAQAogICAgIHJldHVybiBjYXN0PENYWDExTm9SZXR1cm5BdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CiAgIGNhc2UgYXR0cjo6Q2FsbGFibGVXaGVuOgogICAgIHJldHVybiBjYXN0PENhbGxhYmxlV2hlbkF0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKKyAgY2FzZSBhdHRyOjpDYWxsYmFjazoKKyAgICByZXR1cm4gY2FzdDxDYWxsYmFja0F0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKICAgY2FzZSBhdHRyOjpDYXBhYmlsaXR5OgogICAgIHJldHVybiBjYXN0PENhcGFiaWxpdHlBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CiAgIGNhc2UgYXR0cjo6Q2FwdHVyZWRSZWNvcmQ6CkBAIC0xMTQzMiw4ICsxMjI5NywxMiBAQAogICAgIHJldHVybiBjYXN0PENvbnZlcmdlbnRBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CiAgIGNhc2UgYXR0cjo6RExMRXhwb3J0OgogICAgIHJldHVybiBjYXN0PERMTEV4cG9ydEF0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKKyAgY2FzZSBhdHRyOjpETExFeHBvcnRTdGF0aWNMb2NhbDoKKyAgICByZXR1cm4gY2FzdDxETExFeHBvcnRTdGF0aWNMb2NhbEF0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKICAgY2FzZSBhdHRyOjpETExJbXBvcnQ6CiAgICAgcmV0dXJuIGNhc3Q8RExMSW1wb3J0QXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOworICBjYXNlIGF0dHI6OkRMTEltcG9ydFN0YXRpY0xvY2FsOgorICAgIHJldHVybiBjYXN0PERMTEltcG9ydFN0YXRpY0xvY2FsQXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOwogICBjYXNlIGF0dHI6OkRlcHJlY2F0ZWQ6CiAgICAgcmV0dXJuIGNhc3Q8RGVwcmVjYXRlZEF0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKICAgY2FzZSBhdHRyOjpEZXN0cnVjdG9yOgpAQCAtMTE0NjgsNiArMTIzMzcsOCBAQAogICAgIHJldHVybiBjYXN0PEZvcm1hdEF0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKICAgY2FzZSBhdHRyOjpGb3JtYXRBcmc6CiAgICAgcmV0dXJuIGNhc3Q8Rm9ybWF0QXJnQXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOworICBjYXNlIGF0dHI6OkZvcnRpZnlTdGRMaWI6CisgICAgcmV0dXJuIGNhc3Q8Rm9ydGlmeVN0ZExpYkF0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKICAgY2FzZSBhdHRyOjpHTlVJbmxpbmU6CiAgICAgcmV0dXJuIGNhc3Q8R05VSW5saW5lQXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOwogICBjYXNlIGF0dHI6Okd1YXJkZWRCeToKQEAgLTExNTU0LDYgKzEyNDI1LDggQEAKICAgICByZXR1cm4gY2FzdDxOb0NvbW1vbkF0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKICAgY2FzZSBhdHRyOjpOb0RlYnVnOgogICAgIHJldHVybiBjYXN0PE5vRGVidWdBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CisgIGNhc2UgYXR0cjo6Tm9EZXJlZjoKKyAgICByZXR1cm4gY2FzdDxOb0RlcmVmQXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOwogICBjYXNlIGF0dHI6Ok5vRGVzdHJveToKICAgICByZXR1cm4gY2FzdDxOb0Rlc3Ryb3lBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CiAgIGNhc2UgYXR0cjo6Tm9EdXBsaWNhdGU6CkBAIC0xMTU3Miw2ICsxMjQ0NSw4IEBACiAgICAgcmV0dXJuIGNhc3Q8Tm9SZXR1cm5BdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CiAgIGNhc2UgYXR0cjo6Tm9TYW5pdGl6ZToKICAgICByZXR1cm4gY2FzdDxOb1Nhbml0aXplQXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOworICBjYXNlIGF0dHI6Ok5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nOgorICAgIHJldHVybiBjYXN0PE5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOwogICBjYXNlIGF0dHI6Ok5vU3BsaXRTdGFjazoKICAgICByZXR1cm4gY2FzdDxOb1NwbGl0U3RhY2tBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CiAgIGNhc2UgYXR0cjo6Tm9TdGFja1Byb3RlY3RvcjoKQEAgLTExNTk2LDYgKzEyNDcxLDE4IEBACiAgICAgcmV0dXJuIGNhc3Q8T01QUmVmZXJlbmNlZFZhckF0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKICAgY2FzZSBhdHRyOjpPTVBUaHJlYWRQcml2YXRlRGVjbDoKICAgICByZXR1cm4gY2FzdDxPTVBUaHJlYWRQcml2YXRlRGVjbEF0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKKyAgY2FzZSBhdHRyOjpPU0NvbnN1bWVkOgorICAgIHJldHVybiBjYXN0PE9TQ29uc3VtZWRBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CisgIGNhc2UgYXR0cjo6T1NDb25zdW1lc1RoaXM6CisgICAgcmV0dXJuIGNhc3Q8T1NDb25zdW1lc1RoaXNBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CisgIGNhc2UgYXR0cjo6T1NSZXR1cm5zTm90UmV0YWluZWQ6CisgICAgcmV0dXJuIGNhc3Q8T1NSZXR1cm5zTm90UmV0YWluZWRBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CisgIGNhc2UgYXR0cjo6T1NSZXR1cm5zUmV0YWluZWQ6CisgICAgcmV0dXJuIGNhc3Q8T1NSZXR1cm5zUmV0YWluZWRBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CisgIGNhc2UgYXR0cjo6T1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm86CisgICAgcmV0dXJuIGNhc3Q8T1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm9BdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CisgIGNhc2UgYXR0cjo6T1NSZXR1cm5zUmV0YWluZWRPblplcm86CisgICAgcmV0dXJuIGNhc3Q8T1NSZXR1cm5zUmV0YWluZWRPblplcm9BdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CiAgIGNhc2UgYXR0cjo6T2JqQ0JveGFibGU6CiAgICAgcmV0dXJuIGNhc3Q8T2JqQ0JveGFibGVBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CiAgIGNhc2UgYXR0cjo6T2JqQ0JyaWRnZToKQEAgLTExNjEwLDYgKzEyNDk3LDggQEAKICAgICByZXR1cm4gY2FzdDxPYmpDRXhjZXB0aW9uQXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOwogICBjYXNlIGF0dHI6Ok9iakNFeHBsaWNpdFByb3RvY29sSW1wbDoKICAgICByZXR1cm4gY2FzdDxPYmpDRXhwbGljaXRQcm90b2NvbEltcGxBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CisgIGNhc2UgYXR0cjo6T2JqQ0V4dGVybmFsbHlSZXRhaW5lZDoKKyAgICByZXR1cm4gY2FzdDxPYmpDRXh0ZXJuYWxseVJldGFpbmVkQXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOwogICBjYXNlIGF0dHI6Ok9iakNHQzoKICAgICByZXR1cm4gY2FzdDxPYmpDR0NBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CiAgIGNhc2UgYXR0cjo6T2JqQ0luZGVwZW5kZW50Q2xhc3M6CkBAIC0xMTYyMiw2ICsxMjUxMSw4IEBACiAgICAgcmV0dXJuIGNhc3Q8T2JqQ01ldGhvZEZhbWlseUF0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKICAgY2FzZSBhdHRyOjpPYmpDTlNPYmplY3Q6CiAgICAgcmV0dXJuIGNhc3Q8T2JqQ05TT2JqZWN0QXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOworICBjYXNlIGF0dHI6Ok9iakNOb25MYXp5Q2xhc3M6CisgICAgcmV0dXJuIGNhc3Q8T2JqQ05vbkxhenlDbGFzc0F0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKICAgY2FzZSBhdHRyOjpPYmpDT3duZXJzaGlwOgogICAgIHJldHVybiBjYXN0PE9iakNPd25lcnNoaXBBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CiAgIGNhc2UgYXR0cjo6T2JqQ1ByZWNpc2VMaWZldGltZToKQEAgLTExNzM2LDYgKzEyNjI3LDggQEAKICAgICByZXR1cm4gY2FzdDxTZXRUeXBlc3RhdGVBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CiAgIGNhc2UgYXR0cjo6U2hhcmVkVHJ5bG9ja0Z1bmN0aW9uOgogICAgIHJldHVybiBjYXN0PFNoYXJlZFRyeWxvY2tGdW5jdGlvbkF0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKKyAgY2FzZSBhdHRyOjpTcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmc6CisgICAgcmV0dXJuIGNhc3Q8U3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOwogICBjYXNlIGF0dHI6OlN0ZENhbGw6CiAgICAgcmV0dXJuIGNhc3Q8U3RkQ2FsbEF0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKICAgY2FzZSBhdHRyOjpTdXBwcmVzczoKQEAgLTExNzgwLDYgKzEyNjczLDggQEAKICAgICByZXR1cm4gY2FzdDxVUHRyQXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOwogICBjYXNlIGF0dHI6OlVuYXZhaWxhYmxlOgogICAgIHJldHVybiBjYXN0PFVuYXZhaWxhYmxlQXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOworICBjYXNlIGF0dHI6OlVuaW5pdGlhbGl6ZWQ6CisgICAgcmV0dXJuIGNhc3Q8VW5pbml0aWFsaXplZEF0dHI+KHRoaXMpLT5wcmludFByZXR0eShPUywgUG9saWN5KTsKICAgY2FzZSBhdHRyOjpVbnVzZWQ6CiAgICAgcmV0dXJuIGNhc3Q8VW51c2VkQXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOwogICBjYXNlIGF0dHI6OlVzZWQ6CkBAIC0xMTgwNCw2ICsxMjY5OSwxMCBAQAogICAgIHJldHVybiBjYXN0PFdlYWtJbXBvcnRBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CiAgIGNhc2UgYXR0cjo6V2Vha1JlZjoKICAgICByZXR1cm4gY2FzdDxXZWFrUmVmQXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOworICBjYXNlIGF0dHI6OldlYkFzc2VtYmx5SW1wb3J0TW9kdWxlOgorICAgIHJldHVybiBjYXN0PFdlYkFzc2VtYmx5SW1wb3J0TW9kdWxlQXR0cj4odGhpcyktPnByaW50UHJldHR5KE9TLCBQb2xpY3kpOworICBjYXNlIGF0dHI6OldlYkFzc2VtYmx5SW1wb3J0TmFtZToKKyAgICByZXR1cm4gY2FzdDxXZWJBc3NlbWJseUltcG9ydE5hbWVBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CiAgIGNhc2UgYXR0cjo6V29ya0dyb3VwU2l6ZUhpbnQ6CiAgICAgcmV0dXJuIGNhc3Q8V29ya0dyb3VwU2l6ZUhpbnRBdHRyPih0aGlzKS0+cHJpbnRQcmV0dHkoT1MsIFBvbGljeSk7CiAgIGNhc2UgYXR0cjo6WDg2Rm9yY2VBbGlnbkFyZ1BvaW50ZXI6CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQXR0ckl0ZXJhdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQXR0ckl0ZXJhdG9yLmgKaW5kZXggMjA4N2VjYy4uNzhjZTkzMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0F0dHJJdGVyYXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BdHRySXRlcmF0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBBdHRySXRlcmF0b3IuaCAtIENsYXNzZXMgZm9yIGF0dHJpYnV0ZSBpdGVyYXRpb24gLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjYsMjUgKzI1LDYgQEAKIGNsYXNzIEFTVENvbnRleHQ7CiBjbGFzcyBBdHRyOwogCi19IC8vIG5hbWVzcGFjZSBjbGFuZwotCi0vLyBEZWZpbmVkIGluIEFTVENvbnRleHQuaAotdm9pZCAqb3BlcmF0b3IgbmV3KHNpemVfdCBCeXRlcywgY29uc3QgY2xhbmc6OkFTVENvbnRleHQgJkMsCi0gICAgICAgICAgICAgICAgICAgc2l6ZV90IEFsaWdubWVudCA9IDgpOwotCi0vLyBGSVhNRTogQmVpbmcgZm9yY2VkIHRvIG5vdCBoYXZlIGEgZGVmYXVsdCBhcmd1bWVudCBoZXJlIGR1ZSB0byByZWRlY2xhcmF0aW9uCi0vLyAgICAgICAgcnVsZXMgb24gZGVmYXVsdCBhcmd1bWVudHMgc3Vja3MKLXZvaWQgKm9wZXJhdG9yIG5ld1tdKHNpemVfdCBCeXRlcywgY29uc3QgY2xhbmc6OkFTVENvbnRleHQgJkMsCi0gICAgICAgICAgICAgICAgICAgICBzaXplX3QgQWxpZ25tZW50KTsKLQotLy8gSXQgaXMgZ29vZCBwcmFjdGljZSB0byBwYWlyIG5ldy9kZWxldGUgb3BlcmF0b3JzLiAgQWxzbywgTVNWQyBnaXZlcyBtYW55Ci0vLyB3YXJuaW5ncyBpZiBhIG1hdGNoaW5nIGRlbGV0ZSBvdmVybG9hZCBpcyBub3QgZGVjbGFyZWQsIGV2ZW4gdGhvdWdoIHRoZQotLy8gdGhyb3coKSBzcGVjIGd1YXJhbnRlZXMgaXQgd2lsbCBub3QgYmUgaW1wbGljaXRseSBjYWxsZWQuCi12b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkICpQdHIsIGNvbnN0IGNsYW5nOjpBU1RDb250ZXh0ICZDLCBzaXplX3QpOwotdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkICpQdHIsIGNvbnN0IGNsYW5nOjpBU1RDb250ZXh0ICZDLCBzaXplX3QpOwotCi1uYW1lc3BhY2UgY2xhbmcgewotCiAvLy8gQXR0clZlYyAtIEEgdmVjdG9yIG9mIEF0dHIsIHdoaWNoIGlzIGhvdyB0aGV5IGFyZSBzdG9yZWQgb24gdGhlIEFTVC4KIHVzaW5nIEF0dHJWZWMgPSBTbWFsbFZlY3RvcjxBdHRyICosIDQ+OwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQXR0ck5vZGVUcmF2ZXJzZS5pbmMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQXR0ck5vZGVUcmF2ZXJzZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM4NjNjZgotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BdHRyTm9kZVRyYXZlcnNlLmluYwpAQCAtMCwwICsxLDEzMiBAQAorLyo9PT0tIFRhYmxlR2VuJ2VyYXRlZCBmaWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09KlwKK3wqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBBdHRyaWJ1dGUgdGV4dCBub2RlIHRyYXZlcnNlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGUsIGRvIG5vdCBlZGl0ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorXCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ki8KKworICB2b2lkIFZpc2l0QWNxdWlyZUNhcGFiaWxpdHlBdHRyKGNvbnN0IEFjcXVpcmVDYXBhYmlsaXR5QXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBY3F1aXJlQ2FwYWJpbGl0eUF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBmb3IgKEFjcXVpcmVDYXBhYmlsaXR5QXR0cjo6YXJnc19pdGVyYXRvciBJID0gU0EtPmFyZ3NfYmVnaW4oKSwgRSA9IFNBLT5hcmdzX2VuZCgpOyBJICE9IEU7ICsrSSkKKyAgICAgIFZpc2l0KCpJKTsKKyAgfQorICB2b2lkIFZpc2l0QWNxdWlyZWRBZnRlckF0dHIoY29uc3QgQWNxdWlyZWRBZnRlckF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QWNxdWlyZWRBZnRlckF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBmb3IgKEFjcXVpcmVkQWZ0ZXJBdHRyOjphcmdzX2l0ZXJhdG9yIEkgPSBTQS0+YXJnc19iZWdpbigpLCBFID0gU0EtPmFyZ3NfZW5kKCk7IEkgIT0gRTsgKytJKQorICAgICAgVmlzaXQoKkkpOworICB9CisgIHZvaWQgVmlzaXRBY3F1aXJlZEJlZm9yZUF0dHIoY29uc3QgQWNxdWlyZWRCZWZvcmVBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFjcXVpcmVkQmVmb3JlQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIGZvciAoQWNxdWlyZWRCZWZvcmVBdHRyOjphcmdzX2l0ZXJhdG9yIEkgPSBTQS0+YXJnc19iZWdpbigpLCBFID0gU0EtPmFyZ3NfZW5kKCk7IEkgIT0gRTsgKytJKQorICAgICAgVmlzaXQoKkkpOworICB9CisgIHZvaWQgVmlzaXRBbGlnblZhbHVlQXR0cihjb25zdCBBbGlnblZhbHVlQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBbGlnblZhbHVlQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIFZpc2l0KFNBLT5nZXRBbGlnbm1lbnQoKSk7CisgIH0KKyAgdm9pZCBWaXNpdEFsaWduZWRBdHRyKGNvbnN0IEFsaWduZWRBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFsaWduZWRBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgaWYgKFNBLT5pc0FsaWdubWVudEV4cHIoKSkKKyAgICAgIFZpc2l0KFNBLT5nZXRBbGlnbm1lbnRFeHByKCkpOworICB9CisgIHZvaWQgVmlzaXRBc3NlcnRDYXBhYmlsaXR5QXR0cihjb25zdCBBc3NlcnRDYXBhYmlsaXR5QXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBc3NlcnRDYXBhYmlsaXR5QXR0cj4oQSk7ICh2b2lkKVNBOworICAgIGZvciAoQXNzZXJ0Q2FwYWJpbGl0eUF0dHI6OmFyZ3NfaXRlcmF0b3IgSSA9IFNBLT5hcmdzX2JlZ2luKCksIEUgPSBTQS0+YXJnc19lbmQoKTsgSSAhPSBFOyArK0kpCisgICAgICBWaXNpdCgqSSk7CisgIH0KKyAgdm9pZCBWaXNpdEFzc2VydEV4Y2x1c2l2ZUxvY2tBdHRyKGNvbnN0IEFzc2VydEV4Y2x1c2l2ZUxvY2tBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFzc2VydEV4Y2x1c2l2ZUxvY2tBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgZm9yIChBc3NlcnRFeGNsdXNpdmVMb2NrQXR0cjo6YXJnc19pdGVyYXRvciBJID0gU0EtPmFyZ3NfYmVnaW4oKSwgRSA9IFNBLT5hcmdzX2VuZCgpOyBJICE9IEU7ICsrSSkKKyAgICAgIFZpc2l0KCpJKTsKKyAgfQorICB2b2lkIFZpc2l0QXNzZXJ0U2hhcmVkTG9ja0F0dHIoY29uc3QgQXNzZXJ0U2hhcmVkTG9ja0F0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QXNzZXJ0U2hhcmVkTG9ja0F0dHI+KEEpOyAodm9pZClTQTsKKyAgICBmb3IgKEFzc2VydFNoYXJlZExvY2tBdHRyOjphcmdzX2l0ZXJhdG9yIEkgPSBTQS0+YXJnc19iZWdpbigpLCBFID0gU0EtPmFyZ3NfZW5kKCk7IEkgIT0gRTsgKytJKQorICAgICAgVmlzaXQoKkkpOworICB9CisgIHZvaWQgVmlzaXRBc3N1bWVBbGlnbmVkQXR0cihjb25zdCBBc3N1bWVBbGlnbmVkQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBc3N1bWVBbGlnbmVkQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIFZpc2l0KFNBLT5nZXRBbGlnbm1lbnQoKSk7CisgICAgVmlzaXQoU0EtPmdldE9mZnNldCgpKTsKKyAgfQorICB2b2lkIFZpc2l0Q1VEQUxhdW5jaEJvdW5kc0F0dHIoY29uc3QgQ1VEQUxhdW5jaEJvdW5kc0F0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8Q1VEQUxhdW5jaEJvdW5kc0F0dHI+KEEpOyAodm9pZClTQTsKKyAgICBWaXNpdChTQS0+Z2V0TWF4VGhyZWFkcygpKTsKKyAgICBWaXNpdChTQS0+Z2V0TWluQmxvY2tzKCkpOworICB9CisgIHZvaWQgVmlzaXREaWFnbm9zZUlmQXR0cihjb25zdCBEaWFnbm9zZUlmQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxEaWFnbm9zZUlmQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIFZpc2l0KFNBLT5nZXRDb25kKCkpOworICB9CisgIHZvaWQgVmlzaXRFbmFibGVJZkF0dHIoY29uc3QgRW5hYmxlSWZBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEVuYWJsZUlmQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIFZpc2l0KFNBLT5nZXRDb25kKCkpOworICB9CisgIHZvaWQgVmlzaXRFeGNsdXNpdmVUcnlsb2NrRnVuY3Rpb25BdHRyKGNvbnN0IEV4Y2x1c2l2ZVRyeWxvY2tGdW5jdGlvbkF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8RXhjbHVzaXZlVHJ5bG9ja0Z1bmN0aW9uQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIFZpc2l0KFNBLT5nZXRTdWNjZXNzVmFsdWUoKSk7CisgICAgZm9yIChFeGNsdXNpdmVUcnlsb2NrRnVuY3Rpb25BdHRyOjphcmdzX2l0ZXJhdG9yIEkgPSBTQS0+YXJnc19iZWdpbigpLCBFID0gU0EtPmFyZ3NfZW5kKCk7IEkgIT0gRTsgKytJKQorICAgICAgVmlzaXQoKkkpOworICB9CisgIHZvaWQgVmlzaXRHdWFyZGVkQnlBdHRyKGNvbnN0IEd1YXJkZWRCeUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8R3VhcmRlZEJ5QXR0cj4oQSk7ICh2b2lkKVNBOworICAgIFZpc2l0KFNBLT5nZXRBcmcoKSk7CisgIH0KKyAgdm9pZCBWaXNpdExvY2tSZXR1cm5lZEF0dHIoY29uc3QgTG9ja1JldHVybmVkQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxMb2NrUmV0dXJuZWRBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgVmlzaXQoU0EtPmdldEFyZygpKTsKKyAgfQorICB2b2lkIFZpc2l0TG9ja3NFeGNsdWRlZEF0dHIoY29uc3QgTG9ja3NFeGNsdWRlZEF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8TG9ja3NFeGNsdWRlZEF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBmb3IgKExvY2tzRXhjbHVkZWRBdHRyOjphcmdzX2l0ZXJhdG9yIEkgPSBTQS0+YXJnc19iZWdpbigpLCBFID0gU0EtPmFyZ3NfZW5kKCk7IEkgIT0gRTsgKytJKQorICAgICAgVmlzaXQoKkkpOworICB9CisgIHZvaWQgVmlzaXRMb29wSGludEF0dHIoY29uc3QgTG9vcEhpbnRBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PExvb3BIaW50QXR0cj4oQSk7ICh2b2lkKVNBOworICAgIFZpc2l0KFNBLT5nZXRWYWx1ZSgpKTsKKyAgfQorICB2b2lkIFZpc2l0T01QRGVjbGFyZVNpbWREZWNsQXR0cihjb25zdCBPTVBEZWNsYXJlU2ltZERlY2xBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE9NUERlY2xhcmVTaW1kRGVjbEF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBWaXNpdChTQS0+Z2V0U2ltZGxlbigpKTsKKyAgICBmb3IgKE9NUERlY2xhcmVTaW1kRGVjbEF0dHI6OnVuaWZvcm1zX2l0ZXJhdG9yIEkgPSBTQS0+dW5pZm9ybXNfYmVnaW4oKSwgRSA9IFNBLT51bmlmb3Jtc19lbmQoKTsgSSAhPSBFOyArK0kpCisgICAgICBWaXNpdCgqSSk7CisgICAgZm9yIChPTVBEZWNsYXJlU2ltZERlY2xBdHRyOjphbGlnbmVkc19pdGVyYXRvciBJID0gU0EtPmFsaWduZWRzX2JlZ2luKCksIEUgPSBTQS0+YWxpZ25lZHNfZW5kKCk7IEkgIT0gRTsgKytJKQorICAgICAgVmlzaXQoKkkpOworICAgIGZvciAoT01QRGVjbGFyZVNpbWREZWNsQXR0cjo6YWxpZ25tZW50c19pdGVyYXRvciBJID0gU0EtPmFsaWdubWVudHNfYmVnaW4oKSwgRSA9IFNBLT5hbGlnbm1lbnRzX2VuZCgpOyBJICE9IEU7ICsrSSkKKyAgICAgIFZpc2l0KCpJKTsKKyAgICBmb3IgKE9NUERlY2xhcmVTaW1kRGVjbEF0dHI6OmxpbmVhcnNfaXRlcmF0b3IgSSA9IFNBLT5saW5lYXJzX2JlZ2luKCksIEUgPSBTQS0+bGluZWFyc19lbmQoKTsgSSAhPSBFOyArK0kpCisgICAgICBWaXNpdCgqSSk7CisgICAgZm9yIChPTVBEZWNsYXJlU2ltZERlY2xBdHRyOjpzdGVwc19pdGVyYXRvciBJID0gU0EtPnN0ZXBzX2JlZ2luKCksIEUgPSBTQS0+c3RlcHNfZW5kKCk7IEkgIT0gRTsgKytJKQorICAgICAgVmlzaXQoKkkpOworICB9CisgIHZvaWQgVmlzaXRPTVBSZWZlcmVuY2VkVmFyQXR0cihjb25zdCBPTVBSZWZlcmVuY2VkVmFyQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxPTVBSZWZlcmVuY2VkVmFyQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIFZpc2l0KFNBLT5nZXRSZWYoKSk7CisgIH0KKyAgdm9pZCBWaXNpdFB0R3VhcmRlZEJ5QXR0cihjb25zdCBQdEd1YXJkZWRCeUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8UHRHdWFyZGVkQnlBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgVmlzaXQoU0EtPmdldEFyZygpKTsKKyAgfQorICB2b2lkIFZpc2l0UmVsZWFzZUNhcGFiaWxpdHlBdHRyKGNvbnN0IFJlbGVhc2VDYXBhYmlsaXR5QXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxSZWxlYXNlQ2FwYWJpbGl0eUF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBmb3IgKFJlbGVhc2VDYXBhYmlsaXR5QXR0cjo6YXJnc19pdGVyYXRvciBJID0gU0EtPmFyZ3NfYmVnaW4oKSwgRSA9IFNBLT5hcmdzX2VuZCgpOyBJICE9IEU7ICsrSSkKKyAgICAgIFZpc2l0KCpJKTsKKyAgfQorICB2b2lkIFZpc2l0UmVxdWlyZXNDYXBhYmlsaXR5QXR0cihjb25zdCBSZXF1aXJlc0NhcGFiaWxpdHlBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFJlcXVpcmVzQ2FwYWJpbGl0eUF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBmb3IgKFJlcXVpcmVzQ2FwYWJpbGl0eUF0dHI6OmFyZ3NfaXRlcmF0b3IgSSA9IFNBLT5hcmdzX2JlZ2luKCksIEUgPSBTQS0+YXJnc19lbmQoKTsgSSAhPSBFOyArK0kpCisgICAgICBWaXNpdCgqSSk7CisgIH0KKyAgdm9pZCBWaXNpdFNoYXJlZFRyeWxvY2tGdW5jdGlvbkF0dHIoY29uc3QgU2hhcmVkVHJ5bG9ja0Z1bmN0aW9uQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxTaGFyZWRUcnlsb2NrRnVuY3Rpb25BdHRyPihBKTsgKHZvaWQpU0E7CisgICAgVmlzaXQoU0EtPmdldFN1Y2Nlc3NWYWx1ZSgpKTsKKyAgICBmb3IgKFNoYXJlZFRyeWxvY2tGdW5jdGlvbkF0dHI6OmFyZ3NfaXRlcmF0b3IgSSA9IFNBLT5hcmdzX2JlZ2luKCksIEUgPSBTQS0+YXJnc19lbmQoKTsgSSAhPSBFOyArK0kpCisgICAgICBWaXNpdCgqSSk7CisgIH0KKyAgdm9pZCBWaXNpdFRyeUFjcXVpcmVDYXBhYmlsaXR5QXR0cihjb25zdCBUcnlBY3F1aXJlQ2FwYWJpbGl0eUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8VHJ5QWNxdWlyZUNhcGFiaWxpdHlBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgVmlzaXQoU0EtPmdldFN1Y2Nlc3NWYWx1ZSgpKTsKKyAgICBmb3IgKFRyeUFjcXVpcmVDYXBhYmlsaXR5QXR0cjo6YXJnc19pdGVyYXRvciBJID0gU0EtPmFyZ3NfYmVnaW4oKSwgRSA9IFNBLT5hcmdzX2VuZCgpOyBJICE9IEU7ICsrSSkKKyAgICAgIFZpc2l0KCpJKTsKKyAgfQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0F0dHJUZXh0Tm9kZUR1bXAuaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0F0dHJUZXh0Tm9kZUR1bXAuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzOWI1MzIKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQXR0clRleHROb2RlRHVtcC5pbmMKQEAgLTAsMCArMSw3NTEgQEAKKy8qPT09LSBUYWJsZUdlbidlcmF0ZWQgZmlsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PSpcCit8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogQXR0cmlidXRlIHRleHQgbm9kZSBkdW1wZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmaWxlLCBkbyBub3QgZWRpdCEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK1wqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSovCisKKyAgdm9pZCBWaXNpdEFNREdQVUZsYXRXb3JrR3JvdXBTaXplQXR0cihjb25zdCBBTURHUFVGbGF0V29ya0dyb3VwU2l6ZUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QU1ER1BVRmxhdFdvcmtHcm91cFNpemVBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRNaW4oKTsKKyAgICBPUyA8PCAiICIgPDwgU0EtPmdldE1heCgpOworICB9CisgIHZvaWQgVmlzaXRBTURHUFVOdW1TR1BSQXR0cihjb25zdCBBTURHUFVOdW1TR1BSQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBTURHUFVOdW1TR1BSQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0TnVtU0dQUigpOworICB9CisgIHZvaWQgVmlzaXRBTURHUFVOdW1WR1BSQXR0cihjb25zdCBBTURHUFVOdW1WR1BSQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBTURHUFVOdW1WR1BSQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0TnVtVkdQUigpOworICB9CisgIHZvaWQgVmlzaXRBTURHUFVXYXZlc1BlckVVQXR0cihjb25zdCBBTURHUFVXYXZlc1BlckVVQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBTURHUFVXYXZlc1BlckVVQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0TWluKCk7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRNYXgoKTsKKyAgfQorICB2b2lkIFZpc2l0QVJNSW50ZXJydXB0QXR0cihjb25zdCBBUk1JbnRlcnJ1cHRBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFSTUludGVycnVwdEF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBzd2l0Y2goU0EtPmdldEludGVycnVwdCgpKSB7CisgICAgY2FzZSBBUk1JbnRlcnJ1cHRBdHRyOjpJUlE6CisgICAgICBPUyA8PCAiIElSUSI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEFSTUludGVycnVwdEF0dHI6OkZJUToKKyAgICAgIE9TIDw8ICIgRklRIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQVJNSW50ZXJydXB0QXR0cjo6U1dJOgorICAgICAgT1MgPDwgIiBTV0kiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBBUk1JbnRlcnJ1cHRBdHRyOjpBQk9SVDoKKyAgICAgIE9TIDw8ICIgQUJPUlQiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBBUk1JbnRlcnJ1cHRBdHRyOjpVTkRFRjoKKyAgICAgIE9TIDw8ICIgVU5ERUYiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBBUk1JbnRlcnJ1cHRBdHRyOjpHZW5lcmljOgorICAgICAgT1MgPDwgIiBHZW5lcmljIjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICB2b2lkIFZpc2l0QWJpVGFnQXR0cihjb25zdCBBYmlUYWdBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFiaVRhZ0F0dHI+KEEpOyAodm9pZClTQTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJlZhbCA6IFNBLT50YWdzKCkpCisgICAgICBPUyA8PCAiICIgPDwgVmFsOworICB9CisgIHZvaWQgVmlzaXRBY3F1aXJlQ2FwYWJpbGl0eUF0dHIoY29uc3QgQWNxdWlyZUNhcGFiaWxpdHlBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFjcXVpcmVDYXBhYmlsaXR5QXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBBLT5nZXRTcGVsbGluZygpOworICB9CisgIHZvaWQgVmlzaXRBZGRyZXNzU3BhY2VBdHRyKGNvbnN0IEFkZHJlc3NTcGFjZUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QWRkcmVzc1NwYWNlQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0QWRkcmVzc1NwYWNlKCk7CisgIH0KKyAgdm9pZCBWaXNpdEFsaWFzQXR0cihjb25zdCBBbGlhc0F0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QWxpYXNBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldEFsaWFzZWUoKSA8PCAiXCIiOworICB9CisgIHZvaWQgVmlzaXRBbGlnbmVkQXR0cihjb25zdCBBbGlnbmVkQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBbGlnbmVkQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBBLT5nZXRTcGVsbGluZygpOworICAgIGlmICghU0EtPmlzQWxpZ25tZW50RXhwcigpKQorICAgICAgZHVtcFR5cGUoU0EtPmdldEFsaWdubWVudFR5cGUoKS0+Z2V0VHlwZSgpKTsKKyAgfQorICB2b2lkIFZpc2l0QWxsb2NBbGlnbkF0dHIoY29uc3QgQWxsb2NBbGlnbkF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QWxsb2NBbGlnbkF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiICIgPDwgU0EtPmdldFBhcmFtSW5kZXgoKS5nZXRTb3VyY2VJbmRleCgpOworICB9CisgIHZvaWQgVmlzaXRBbGxvY1NpemVBdHRyKGNvbnN0IEFsbG9jU2l6ZUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QWxsb2NTaXplQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0RWxlbVNpemVQYXJhbSgpLmdldFNvdXJjZUluZGV4KCk7CisgICAgaWYgKFNBLT5nZXROdW1FbGVtc1BhcmFtKCkuaXNWYWxpZCgpKQorICAgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXROdW1FbGVtc1BhcmFtKCkuZ2V0U291cmNlSW5kZXgoKTsKKyAgfQorICB2b2lkIFZpc2l0QWx3YXlzSW5saW5lQXR0cihjb25zdCBBbHdheXNJbmxpbmVBdHRyICpBKSB7CisgICAgT1MgPDwgIiAiIDw8IEEtPmdldFNwZWxsaW5nKCk7CisgIH0KKyAgdm9pZCBWaXNpdEFubm90YXRlQXR0cihjb25zdCBBbm5vdGF0ZUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QW5ub3RhdGVBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldEFubm90YXRpb24oKSA8PCAiXCIiOworICB9CisgIHZvaWQgVmlzaXRBcmd1bWVudFdpdGhUeXBlVGFnQXR0cihjb25zdCBBcmd1bWVudFdpdGhUeXBlVGFnQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxBcmd1bWVudFdpdGhUeXBlVGFnQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBBLT5nZXRTcGVsbGluZygpOworICAgIGlmIChTQS0+Z2V0QXJndW1lbnRLaW5kKCkpCisgICAgICBPUyA8PCAiICIgPDwgU0EtPmdldEFyZ3VtZW50S2luZCgpLT5nZXROYW1lKCk7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRBcmd1bWVudElkeCgpLmdldFNvdXJjZUluZGV4KCk7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRUeXBlVGFnSWR4KCkuZ2V0U291cmNlSW5kZXgoKTsKKyAgICBpZiAoU0EtPmdldElzUG9pbnRlcigpKSBPUyA8PCAiIElzUG9pbnRlciI7CisgIH0KKyAgdm9pZCBWaXNpdEFzbUxhYmVsQXR0cihjb25zdCBBc21MYWJlbEF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QXNtTGFiZWxBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldExhYmVsKCkgPDwgIlwiIjsKKyAgfQorICB2b2lkIFZpc2l0QXNzZXJ0Q2FwYWJpbGl0eUF0dHIoY29uc3QgQXNzZXJ0Q2FwYWJpbGl0eUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8QXNzZXJ0Q2FwYWJpbGl0eUF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKKyAgfQorICB2b2lkIFZpc2l0QXZhaWxhYmlsaXR5QXR0cihjb25zdCBBdmFpbGFiaWxpdHlBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEF2YWlsYWJpbGl0eUF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBpZiAoU0EtPmdldFBsYXRmb3JtKCkpCisgICAgICBPUyA8PCAiICIgPDwgU0EtPmdldFBsYXRmb3JtKCktPmdldE5hbWUoKTsKKyAgICBPUyA8PCAiICIgPDwgU0EtPmdldEludHJvZHVjZWQoKTsKKyAgICBPUyA8PCAiICIgPDwgU0EtPmdldERlcHJlY2F0ZWQoKTsKKyAgICBPUyA8PCAiICIgPDwgU0EtPmdldE9ic29sZXRlZCgpOworICAgIGlmIChTQS0+Z2V0VW5hdmFpbGFibGUoKSkgT1MgPDwgIiBVbmF2YWlsYWJsZSI7CisgICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldE1lc3NhZ2UoKSA8PCAiXCIiOworICAgIGlmIChTQS0+Z2V0U3RyaWN0KCkpIE9TIDw8ICIgU3RyaWN0IjsKKyAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0UmVwbGFjZW1lbnQoKSA8PCAiXCIiOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0UHJpb3JpdHkoKTsKKyAgfQorICB2b2lkIFZpc2l0QmxvY2tzQXR0cihjb25zdCBCbG9ja3NBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEJsb2Nrc0F0dHI+KEEpOyAodm9pZClTQTsKKyAgICBzd2l0Y2goU0EtPmdldFR5cGUoKSkgeworICAgIGNhc2UgQmxvY2tzQXR0cjo6QnlSZWY6CisgICAgICBPUyA8PCAiIEJ5UmVmIjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICB2b2lkIFZpc2l0Q1BVRGlzcGF0Y2hBdHRyKGNvbnN0IENQVURpc3BhdGNoQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxDUFVEaXNwYXRjaEF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJlZhbCA6IFNBLT5jcHVzKCkpCisgICAgICBPUyA8PCAiICIgPDwgVmFsOworICB9CisgIHZvaWQgVmlzaXRDUFVTcGVjaWZpY0F0dHIoY29uc3QgQ1BVU3BlY2lmaWNBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PENQVVNwZWNpZmljQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIGZvciAoY29uc3QgYXV0byAmVmFsIDogU0EtPmNwdXMoKSkKKyAgICAgIE9TIDw8ICIgIiA8PCBWYWw7CisgIH0KKyAgdm9pZCBWaXNpdENhbGxhYmxlV2hlbkF0dHIoY29uc3QgQ2FsbGFibGVXaGVuQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxDYWxsYWJsZVdoZW5BdHRyPihBKTsgKHZvaWQpU0E7CisgICAgZm9yIChDYWxsYWJsZVdoZW5BdHRyOjpjYWxsYWJsZVN0YXRlc19pdGVyYXRvciBJID0gU0EtPmNhbGxhYmxlU3RhdGVzX2JlZ2luKCksIEUgPSBTQS0+Y2FsbGFibGVTdGF0ZXNfZW5kKCk7IEkgIT0gRTsgKytJKSB7CisgICAgICBzd2l0Y2goKkkpIHsKKyAgICBjYXNlIENhbGxhYmxlV2hlbkF0dHI6OlVua25vd246CisgICAgICBPUyA8PCAiIFVua25vd24iOworICAgICAgYnJlYWs7CisgICAgY2FzZSBDYWxsYWJsZVdoZW5BdHRyOjpDb25zdW1lZDoKKyAgICAgIE9TIDw8ICIgQ29uc3VtZWQiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBDYWxsYWJsZVdoZW5BdHRyOjpVbmNvbnN1bWVkOgorICAgICAgT1MgPDwgIiBVbmNvbnN1bWVkIjsKKyAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgfQorICB2b2lkIFZpc2l0Q2FsbGJhY2tBdHRyKGNvbnN0IENhbGxiYWNrQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxDYWxsYmFja0F0dHI+KEEpOyAodm9pZClTQTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJlZhbCA6IFNBLT5lbmNvZGluZygpKQorICAgICAgT1MgPDwgIiAiIDw8IFZhbDsKKyAgfQorICB2b2lkIFZpc2l0Q2FwYWJpbGl0eUF0dHIoY29uc3QgQ2FwYWJpbGl0eUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8Q2FwYWJpbGl0eUF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKKyAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0TmFtZSgpIDw8ICJcIiI7CisgIH0KKyAgdm9pZCBWaXNpdENsZWFudXBBdHRyKGNvbnN0IENsZWFudXBBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PENsZWFudXBBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiOworICAgIGR1bXBCYXJlRGVjbFJlZihTQS0+Z2V0RnVuY3Rpb25EZWNsKCkpOworICB9CisgIHZvaWQgVmlzaXRDb2RlU2VnQXR0cihjb25zdCBDb2RlU2VnQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxDb2RlU2VnQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgXCIiIDw8IFNBLT5nZXROYW1lKCkgPDwgIlwiIjsKKyAgfQorICB2b2lkIFZpc2l0Q29uc3RydWN0b3JBdHRyKGNvbnN0IENvbnN0cnVjdG9yQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxDb25zdHJ1Y3RvckF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiICIgPDwgU0EtPmdldFByaW9yaXR5KCk7CisgIH0KKyAgdm9pZCBWaXNpdENvbnN1bWFibGVBdHRyKGNvbnN0IENvbnN1bWFibGVBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PENvbnN1bWFibGVBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgc3dpdGNoKFNBLT5nZXREZWZhdWx0U3RhdGUoKSkgeworICAgIGNhc2UgQ29uc3VtYWJsZUF0dHI6OlVua25vd246CisgICAgICBPUyA8PCAiIFVua25vd24iOworICAgICAgYnJlYWs7CisgICAgY2FzZSBDb25zdW1hYmxlQXR0cjo6Q29uc3VtZWQ6CisgICAgICBPUyA8PCAiIENvbnN1bWVkIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQ29uc3VtYWJsZUF0dHI6OlVuY29uc3VtZWQ6CisgICAgICBPUyA8PCAiIFVuY29uc3VtZWQiOworICAgICAgYnJlYWs7CisgICAgfQorICB9CisgIHZvaWQgVmlzaXREZXByZWNhdGVkQXR0cihjb25zdCBEZXByZWNhdGVkQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxEZXByZWNhdGVkQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgXCIiIDw8IFNBLT5nZXRNZXNzYWdlKCkgPDwgIlwiIjsKKyAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0UmVwbGFjZW1lbnQoKSA8PCAiXCIiOworICB9CisgIHZvaWQgVmlzaXREZXN0cnVjdG9yQXR0cihjb25zdCBEZXN0cnVjdG9yQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxEZXN0cnVjdG9yQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0UHJpb3JpdHkoKTsKKyAgfQorICB2b2lkIFZpc2l0RGlhZ25vc2VJZkF0dHIoY29uc3QgRGlhZ25vc2VJZkF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8RGlhZ25vc2VJZkF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0TWVzc2FnZSgpIDw8ICJcIiI7CisgICAgc3dpdGNoKFNBLT5nZXREaWFnbm9zdGljVHlwZSgpKSB7CisgICAgY2FzZSBEaWFnbm9zZUlmQXR0cjo6RFRfRXJyb3I6CisgICAgICBPUyA8PCAiIERUX0Vycm9yIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRGlhZ25vc2VJZkF0dHI6OkRUX1dhcm5pbmc6CisgICAgICBPUyA8PCAiIERUX1dhcm5pbmciOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChTQS0+Z2V0QXJnRGVwZW5kZW50KCkpIE9TIDw8ICIgQXJnRGVwZW5kZW50IjsKKyAgICBPUyA8PCAiICI7CisgICAgZHVtcEJhcmVEZWNsUmVmKFNBLT5nZXRQYXJlbnQoKSk7CisgIH0KKyAgdm9pZCBWaXNpdEVuYWJsZUlmQXR0cihjb25zdCBFbmFibGVJZkF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8RW5hYmxlSWZBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldE1lc3NhZ2UoKSA8PCAiXCIiOworICB9CisgIHZvaWQgVmlzaXRFbnVtRXh0ZW5zaWJpbGl0eUF0dHIoY29uc3QgRW51bUV4dGVuc2liaWxpdHlBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEVudW1FeHRlbnNpYmlsaXR5QXR0cj4oQSk7ICh2b2lkKVNBOworICAgIHN3aXRjaChTQS0+Z2V0RXh0ZW5zaWJpbGl0eSgpKSB7CisgICAgY2FzZSBFbnVtRXh0ZW5zaWJpbGl0eUF0dHI6OkNsb3NlZDoKKyAgICAgIE9TIDw8ICIgQ2xvc2VkIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRW51bUV4dGVuc2liaWxpdHlBdHRyOjpPcGVuOgorICAgICAgT1MgPDwgIiBPcGVuIjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICB2b2lkIFZpc2l0RXh0ZXJuYWxTb3VyY2VTeW1ib2xBdHRyKGNvbnN0IEV4dGVybmFsU291cmNlU3ltYm9sQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxFeHRlcm5hbFNvdXJjZVN5bWJvbEF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0TGFuZ3VhZ2UoKSA8PCAiXCIiOworICAgIE9TIDw8ICIgXCIiIDw8IFNBLT5nZXREZWZpbmVkSW4oKSA8PCAiXCIiOworICAgIGlmIChTQS0+Z2V0R2VuZXJhdGVkRGVjbGFyYXRpb24oKSkgT1MgPDwgIiBHZW5lcmF0ZWREZWNsYXJhdGlvbiI7CisgIH0KKyAgdm9pZCBWaXNpdEZpbmFsQXR0cihjb25zdCBGaW5hbEF0dHIgKkEpIHsKKyAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKKyAgfQorICB2b2lkIFZpc2l0Rm9ybWF0QXR0cihjb25zdCBGb3JtYXRBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEZvcm1hdEF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBpZiAoU0EtPmdldFR5cGUoKSkKKyAgICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0VHlwZSgpLT5nZXROYW1lKCk7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRGb3JtYXRJZHgoKTsKKyAgICBPUyA8PCAiICIgPDwgU0EtPmdldEZpcnN0QXJnKCk7CisgIH0KKyAgdm9pZCBWaXNpdEZvcm1hdEFyZ0F0dHIoY29uc3QgRm9ybWF0QXJnQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxGb3JtYXRBcmdBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRGb3JtYXRJZHgoKS5nZXRTb3VyY2VJbmRleCgpOworICB9CisgIHZvaWQgVmlzaXRGb3J0aWZ5U3RkTGliQXR0cihjb25zdCBGb3J0aWZ5U3RkTGliQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxGb3J0aWZ5U3RkTGliQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0VHlwZSgpOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0RmxhZygpOworICB9CisgIHZvaWQgVmlzaXRJQk91dGxldENvbGxlY3Rpb25BdHRyKGNvbnN0IElCT3V0bGV0Q29sbGVjdGlvbkF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8SUJPdXRsZXRDb2xsZWN0aW9uQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0SW50ZXJmYWNlKCkuZ2V0QXNTdHJpbmcoKTsKKyAgfQorICB2b2lkIFZpc2l0SUZ1bmNBdHRyKGNvbnN0IElGdW5jQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxJRnVuY0F0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0UmVzb2x2ZXIoKSA8PCAiXCIiOworICB9CisgIHZvaWQgVmlzaXRJbml0UHJpb3JpdHlBdHRyKGNvbnN0IEluaXRQcmlvcml0eUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8SW5pdFByaW9yaXR5QXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0UHJpb3JpdHkoKTsKKyAgfQorICB2b2lkIFZpc2l0SW5pdFNlZ0F0dHIoY29uc3QgSW5pdFNlZ0F0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8SW5pdFNlZ0F0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0U2VjdGlvbigpIDw8ICJcIiI7CisgIH0KKyAgdm9pZCBWaXNpdExheW91dFZlcnNpb25BdHRyKGNvbnN0IExheW91dFZlcnNpb25BdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PExheW91dFZlcnNpb25BdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRWZXJzaW9uKCk7CisgIH0KKyAgdm9pZCBWaXNpdExvb3BIaW50QXR0cihjb25zdCBMb29wSGludEF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8TG9vcEhpbnRBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiIDw8IEEtPmdldFNwZWxsaW5nKCk7CisgICAgc3dpdGNoKFNBLT5nZXRPcHRpb24oKSkgeworICAgIGNhc2UgTG9vcEhpbnRBdHRyOjpWZWN0b3JpemU6CisgICAgICBPUyA8PCAiIFZlY3Rvcml6ZSI7CisgICAgICBicmVhazsKKyAgICBjYXNlIExvb3BIaW50QXR0cjo6VmVjdG9yaXplV2lkdGg6CisgICAgICBPUyA8PCAiIFZlY3Rvcml6ZVdpZHRoIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTG9vcEhpbnRBdHRyOjpJbnRlcmxlYXZlOgorICAgICAgT1MgPDwgIiBJbnRlcmxlYXZlIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTG9vcEhpbnRBdHRyOjpJbnRlcmxlYXZlQ291bnQ6CisgICAgICBPUyA8PCAiIEludGVybGVhdmVDb3VudCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIExvb3BIaW50QXR0cjo6VW5yb2xsOgorICAgICAgT1MgPDwgIiBVbnJvbGwiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMb29wSGludEF0dHI6OlVucm9sbENvdW50OgorICAgICAgT1MgPDwgIiBVbnJvbGxDb3VudCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIExvb3BIaW50QXR0cjo6VW5yb2xsQW5kSmFtOgorICAgICAgT1MgPDwgIiBVbnJvbGxBbmRKYW0iOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMb29wSGludEF0dHI6OlVucm9sbEFuZEphbUNvdW50OgorICAgICAgT1MgPDwgIiBVbnJvbGxBbmRKYW1Db3VudCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIExvb3BIaW50QXR0cjo6UGlwZWxpbmVEaXNhYmxlZDoKKyAgICAgIE9TIDw8ICIgUGlwZWxpbmVEaXNhYmxlZCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIExvb3BIaW50QXR0cjo6UGlwZWxpbmVJbml0aWF0aW9uSW50ZXJ2YWw6CisgICAgICBPUyA8PCAiIFBpcGVsaW5lSW5pdGlhdGlvbkludGVydmFsIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTG9vcEhpbnRBdHRyOjpEaXN0cmlidXRlOgorICAgICAgT1MgPDwgIiBEaXN0cmlidXRlIjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBzd2l0Y2goU0EtPmdldFN0YXRlKCkpIHsKKyAgICBjYXNlIExvb3BIaW50QXR0cjo6RW5hYmxlOgorICAgICAgT1MgPDwgIiBFbmFibGUiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMb29wSGludEF0dHI6OkRpc2FibGU6CisgICAgICBPUyA8PCAiIERpc2FibGUiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMb29wSGludEF0dHI6Ok51bWVyaWM6CisgICAgICBPUyA8PCAiIE51bWVyaWMiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBMb29wSGludEF0dHI6OkFzc3VtZVNhZmV0eToKKyAgICAgIE9TIDw8ICIgQXNzdW1lU2FmZXR5IjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgTG9vcEhpbnRBdHRyOjpGdWxsOgorICAgICAgT1MgPDwgIiBGdWxsIjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICB2b2lkIFZpc2l0TVNJbmhlcml0YW5jZUF0dHIoY29uc3QgTVNJbmhlcml0YW5jZUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8TVNJbmhlcml0YW5jZUF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKKyAgICBpZiAoU0EtPmdldEJlc3RDYXNlKCkpIE9TIDw8ICIgQmVzdENhc2UiOworICB9CisgIHZvaWQgVmlzaXRNU1A0MzBJbnRlcnJ1cHRBdHRyKGNvbnN0IE1TUDQzMEludGVycnVwdEF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8TVNQNDMwSW50ZXJydXB0QXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0TnVtYmVyKCk7CisgIH0KKyAgdm9pZCBWaXNpdE1TVnRvckRpc3BBdHRyKGNvbnN0IE1TVnRvckRpc3BBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE1TVnRvckRpc3BBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRWZG0oKTsKKyAgfQorICB2b2lkIFZpc2l0TWF4RmllbGRBbGlnbm1lbnRBdHRyKGNvbnN0IE1heEZpZWxkQWxpZ25tZW50QXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxNYXhGaWVsZEFsaWdubWVudEF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiICIgPDwgU0EtPmdldEFsaWdubWVudCgpOworICB9CisgIHZvaWQgVmlzaXRNaW5WZWN0b3JXaWR0aEF0dHIoY29uc3QgTWluVmVjdG9yV2lkdGhBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE1pblZlY3RvcldpZHRoQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0VmVjdG9yV2lkdGgoKTsKKyAgfQorICB2b2lkIFZpc2l0TWlwc0ludGVycnVwdEF0dHIoY29uc3QgTWlwc0ludGVycnVwdEF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8TWlwc0ludGVycnVwdEF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBzd2l0Y2goU0EtPmdldEludGVycnVwdCgpKSB7CisgICAgY2FzZSBNaXBzSW50ZXJydXB0QXR0cjo6c3cwOgorICAgICAgT1MgPDwgIiBzdzAiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBNaXBzSW50ZXJydXB0QXR0cjo6c3cxOgorICAgICAgT1MgPDwgIiBzdzEiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBNaXBzSW50ZXJydXB0QXR0cjo6aHcwOgorICAgICAgT1MgPDwgIiBodzAiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBNaXBzSW50ZXJydXB0QXR0cjo6aHcxOgorICAgICAgT1MgPDwgIiBodzEiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBNaXBzSW50ZXJydXB0QXR0cjo6aHcyOgorICAgICAgT1MgPDwgIiBodzIiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBNaXBzSW50ZXJydXB0QXR0cjo6aHczOgorICAgICAgT1MgPDwgIiBodzMiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBNaXBzSW50ZXJydXB0QXR0cjo6aHc0OgorICAgICAgT1MgPDwgIiBodzQiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBNaXBzSW50ZXJydXB0QXR0cjo6aHc1OgorICAgICAgT1MgPDwgIiBodzUiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBNaXBzSW50ZXJydXB0QXR0cjo6ZWljOgorICAgICAgT1MgPDwgIiBlaWMiOworICAgICAgYnJlYWs7CisgICAgfQorICB9CisgIHZvaWQgVmlzaXRNaXBzTG9uZ0NhbGxBdHRyKGNvbnN0IE1pcHNMb25nQ2FsbEF0dHIgKkEpIHsKKyAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKKyAgfQorICB2b2lkIFZpc2l0TWlwc1Nob3J0Q2FsbEF0dHIoY29uc3QgTWlwc1Nob3J0Q2FsbEF0dHIgKkEpIHsKKyAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKKyAgfQorICB2b2lkIFZpc2l0TW9kZUF0dHIoY29uc3QgTW9kZUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8TW9kZUF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBpZiAoU0EtPmdldE1vZGUoKSkKKyAgICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0TW9kZSgpLT5nZXROYW1lKCk7CisgIH0KKyAgdm9pZCBWaXNpdE5vU2FuaXRpemVBdHRyKGNvbnN0IE5vU2FuaXRpemVBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE5vU2FuaXRpemVBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgZm9yIChjb25zdCBhdXRvICZWYWwgOiBTQS0+c2FuaXRpemVycygpKQorICAgICAgT1MgPDwgIiAiIDw8IFZhbDsKKyAgfQorICB2b2lkIFZpc2l0Tm9uTnVsbEF0dHIoY29uc3QgTm9uTnVsbEF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8Tm9uTnVsbEF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJlZhbCA6IFNBLT5hcmdzKCkpCisgICAgICBPUyA8PCAiICIgPDwgVmFsLmdldFNvdXJjZUluZGV4KCk7CisgIH0KKyAgdm9pZCBWaXNpdE9NUENhcHR1cmVLaW5kQXR0cihjb25zdCBPTVBDYXB0dXJlS2luZEF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T01QQ2FwdHVyZUtpbmRBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRDYXB0dXJlS2luZCgpOworICB9CisgIHZvaWQgVmlzaXRPTVBEZWNsYXJlU2ltZERlY2xBdHRyKGNvbnN0IE9NUERlY2xhcmVTaW1kRGVjbEF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T01QRGVjbGFyZVNpbWREZWNsQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIHN3aXRjaChTQS0+Z2V0QnJhbmNoU3RhdGUoKSkgeworICAgIGNhc2UgT01QRGVjbGFyZVNpbWREZWNsQXR0cjo6QlNfVW5kZWZpbmVkOgorICAgICAgT1MgPDwgIiBCU19VbmRlZmluZWQiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBPTVBEZWNsYXJlU2ltZERlY2xBdHRyOjpCU19JbmJyYW5jaDoKKyAgICAgIE9TIDw8ICIgQlNfSW5icmFuY2giOworICAgICAgYnJlYWs7CisgICAgY2FzZSBPTVBEZWNsYXJlU2ltZERlY2xBdHRyOjpCU19Ob3RpbmJyYW5jaDoKKyAgICAgIE9TIDw8ICIgQlNfTm90aW5icmFuY2giOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGZvciAoY29uc3QgYXV0byAmVmFsIDogU0EtPm1vZGlmaWVycygpKQorICAgICAgT1MgPDwgIiAiIDw8IFZhbDsKKyAgfQorICB2b2lkIFZpc2l0T01QRGVjbGFyZVRhcmdldERlY2xBdHRyKGNvbnN0IE9NUERlY2xhcmVUYXJnZXREZWNsQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxPTVBEZWNsYXJlVGFyZ2V0RGVjbEF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBzd2l0Y2goU0EtPmdldE1hcFR5cGUoKSkgeworICAgIGNhc2UgT01QRGVjbGFyZVRhcmdldERlY2xBdHRyOjpNVF9UbzoKKyAgICAgIE9TIDw8ICIgTVRfVG8iOworICAgICAgYnJlYWs7CisgICAgY2FzZSBPTVBEZWNsYXJlVGFyZ2V0RGVjbEF0dHI6Ok1UX0xpbms6CisgICAgICBPUyA8PCAiIE1UX0xpbmsiOworICAgICAgYnJlYWs7CisgICAgfQorICB9CisgIHZvaWQgVmlzaXRPYmpDQnJpZGdlQXR0cihjb25zdCBPYmpDQnJpZGdlQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxPYmpDQnJpZGdlQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIGlmIChTQS0+Z2V0QnJpZGdlZFR5cGUoKSkKKyAgICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0QnJpZGdlZFR5cGUoKS0+Z2V0TmFtZSgpOworICB9CisgIHZvaWQgVmlzaXRPYmpDQnJpZGdlTXV0YWJsZUF0dHIoY29uc3QgT2JqQ0JyaWRnZU11dGFibGVBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE9iakNCcmlkZ2VNdXRhYmxlQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIGlmIChTQS0+Z2V0QnJpZGdlZFR5cGUoKSkKKyAgICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0QnJpZGdlZFR5cGUoKS0+Z2V0TmFtZSgpOworICB9CisgIHZvaWQgVmlzaXRPYmpDQnJpZGdlUmVsYXRlZEF0dHIoY29uc3QgT2JqQ0JyaWRnZVJlbGF0ZWRBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE9iakNCcmlkZ2VSZWxhdGVkQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIGlmIChTQS0+Z2V0UmVsYXRlZENsYXNzKCkpCisgICAgICBPUyA8PCAiICIgPDwgU0EtPmdldFJlbGF0ZWRDbGFzcygpLT5nZXROYW1lKCk7CisgICAgaWYgKFNBLT5nZXRDbGFzc01ldGhvZCgpKQorICAgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRDbGFzc01ldGhvZCgpLT5nZXROYW1lKCk7CisgICAgaWYgKFNBLT5nZXRJbnN0YW5jZU1ldGhvZCgpKQorICAgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRJbnN0YW5jZU1ldGhvZCgpLT5nZXROYW1lKCk7CisgIH0KKyAgdm9pZCBWaXNpdE9iakNHQ0F0dHIoY29uc3QgT2JqQ0dDQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxPYmpDR0NBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgaWYgKFNBLT5nZXRLaW5kKCkpCisgICAgICBPUyA8PCAiICIgPDwgU0EtPmdldEtpbmQoKS0+Z2V0TmFtZSgpOworICB9CisgIHZvaWQgVmlzaXRPYmpDTWV0aG9kRmFtaWx5QXR0cihjb25zdCBPYmpDTWV0aG9kRmFtaWx5QXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxPYmpDTWV0aG9kRmFtaWx5QXR0cj4oQSk7ICh2b2lkKVNBOworICAgIHN3aXRjaChTQS0+Z2V0RmFtaWx5KCkpIHsKKyAgICBjYXNlIE9iakNNZXRob2RGYW1pbHlBdHRyOjpPTUZfTm9uZToKKyAgICAgIE9TIDw8ICIgT01GX05vbmUiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBPYmpDTWV0aG9kRmFtaWx5QXR0cjo6T01GX2FsbG9jOgorICAgICAgT1MgPDwgIiBPTUZfYWxsb2MiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBPYmpDTWV0aG9kRmFtaWx5QXR0cjo6T01GX2NvcHk6CisgICAgICBPUyA8PCAiIE9NRl9jb3B5IjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgT2JqQ01ldGhvZEZhbWlseUF0dHI6Ok9NRl9pbml0OgorICAgICAgT1MgPDwgIiBPTUZfaW5pdCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIE9iakNNZXRob2RGYW1pbHlBdHRyOjpPTUZfbXV0YWJsZUNvcHk6CisgICAgICBPUyA8PCAiIE9NRl9tdXRhYmxlQ29weSI7CisgICAgICBicmVhazsKKyAgICBjYXNlIE9iakNNZXRob2RGYW1pbHlBdHRyOjpPTUZfbmV3OgorICAgICAgT1MgPDwgIiBPTUZfbmV3IjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICB2b2lkIFZpc2l0T2JqQ093bmVyc2hpcEF0dHIoY29uc3QgT2JqQ093bmVyc2hpcEF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T2JqQ093bmVyc2hpcEF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBpZiAoU0EtPmdldEtpbmQoKSkKKyAgICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0S2luZCgpLT5nZXROYW1lKCk7CisgIH0KKyAgdm9pZCBWaXNpdE9iakNSdW50aW1lTmFtZUF0dHIoY29uc3QgT2JqQ1J1bnRpbWVOYW1lQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxPYmpDUnVudGltZU5hbWVBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldE1ldGFkYXRhTmFtZSgpIDw8ICJcIiI7CisgIH0KKyAgdm9pZCBWaXNpdE9wZW5DTEFjY2Vzc0F0dHIoY29uc3QgT3BlbkNMQWNjZXNzQXR0ciAqQSkgeworICAgIE9TIDw8ICIgIiA8PCBBLT5nZXRTcGVsbGluZygpOworICB9CisgIHZvaWQgVmlzaXRPcGVuQ0xJbnRlbFJlcWRTdWJHcm91cFNpemVBdHRyKGNvbnN0IE9wZW5DTEludGVsUmVxZFN1Ykdyb3VwU2l6ZUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T3BlbkNMSW50ZWxSZXFkU3ViR3JvdXBTaXplQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0U3ViR3JvdXBTaXplKCk7CisgIH0KKyAgdm9pZCBWaXNpdE9wZW5DTFVucm9sbEhpbnRBdHRyKGNvbnN0IE9wZW5DTFVucm9sbEhpbnRBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE9wZW5DTFVucm9sbEhpbnRBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRVbnJvbGxIaW50KCk7CisgIH0KKyAgdm9pZCBWaXNpdE93bmVyc2hpcEF0dHIoY29uc3QgT3duZXJzaGlwQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxPd25lcnNoaXBBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiIDw8IEEtPmdldFNwZWxsaW5nKCk7CisgICAgaWYgKFNBLT5nZXRNb2R1bGUoKSkKKyAgICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0TW9kdWxlKCktPmdldE5hbWUoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJlZhbCA6IFNBLT5hcmdzKCkpCisgICAgICBPUyA8PCAiICIgPDwgVmFsLmdldFNvdXJjZUluZGV4KCk7CisgIH0KKyAgdm9pZCBWaXNpdFBhcmFtVHlwZXN0YXRlQXR0cihjb25zdCBQYXJhbVR5cGVzdGF0ZUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8UGFyYW1UeXBlc3RhdGVBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgc3dpdGNoKFNBLT5nZXRQYXJhbVN0YXRlKCkpIHsKKyAgICBjYXNlIFBhcmFtVHlwZXN0YXRlQXR0cjo6VW5rbm93bjoKKyAgICAgIE9TIDw8ICIgVW5rbm93biI7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBhcmFtVHlwZXN0YXRlQXR0cjo6Q29uc3VtZWQ6CisgICAgICBPUyA8PCAiIENvbnN1bWVkIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUGFyYW1UeXBlc3RhdGVBdHRyOjpVbmNvbnN1bWVkOgorICAgICAgT1MgPDwgIiBVbmNvbnN1bWVkIjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICB2b2lkIFZpc2l0UGFzc09iamVjdFNpemVBdHRyKGNvbnN0IFBhc3NPYmplY3RTaXplQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxQYXNzT2JqZWN0U2l6ZUF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiICIgPDwgU0EtPmdldFR5cGUoKTsKKyAgfQorICB2b2lkIFZpc2l0UGNzQXR0cihjb25zdCBQY3NBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFBjc0F0dHI+KEEpOyAodm9pZClTQTsKKyAgICBzd2l0Y2goU0EtPmdldFBDUygpKSB7CisgICAgY2FzZSBQY3NBdHRyOjpBQVBDUzoKKyAgICAgIE9TIDw8ICIgQUFQQ1MiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQY3NBdHRyOjpBQVBDU19WRlA6CisgICAgICBPUyA8PCAiIEFBUENTX1ZGUCI7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgdm9pZCBWaXNpdFByYWdtYUNsYW5nQlNTU2VjdGlvbkF0dHIoY29uc3QgUHJhZ21hQ2xhbmdCU1NTZWN0aW9uQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxQcmFnbWFDbGFuZ0JTU1NlY3Rpb25BdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldE5hbWUoKSA8PCAiXCIiOworICB9CisgIHZvaWQgVmlzaXRQcmFnbWFDbGFuZ0RhdGFTZWN0aW9uQXR0cihjb25zdCBQcmFnbWFDbGFuZ0RhdGFTZWN0aW9uQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxQcmFnbWFDbGFuZ0RhdGFTZWN0aW9uQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgXCIiIDw8IFNBLT5nZXROYW1lKCkgPDwgIlwiIjsKKyAgfQorICB2b2lkIFZpc2l0UHJhZ21hQ2xhbmdSb2RhdGFTZWN0aW9uQXR0cihjb25zdCBQcmFnbWFDbGFuZ1JvZGF0YVNlY3Rpb25BdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFByYWdtYUNsYW5nUm9kYXRhU2VjdGlvbkF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0TmFtZSgpIDw8ICJcIiI7CisgIH0KKyAgdm9pZCBWaXNpdFByYWdtYUNsYW5nVGV4dFNlY3Rpb25BdHRyKGNvbnN0IFByYWdtYUNsYW5nVGV4dFNlY3Rpb25BdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFByYWdtYUNsYW5nVGV4dFNlY3Rpb25BdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldE5hbWUoKSA8PCAiXCIiOworICB9CisgIHZvaWQgVmlzaXRSSVNDVkludGVycnVwdEF0dHIoY29uc3QgUklTQ1ZJbnRlcnJ1cHRBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFJJU0NWSW50ZXJydXB0QXR0cj4oQSk7ICh2b2lkKVNBOworICAgIHN3aXRjaChTQS0+Z2V0SW50ZXJydXB0KCkpIHsKKyAgICBjYXNlIFJJU0NWSW50ZXJydXB0QXR0cjo6dXNlcjoKKyAgICAgIE9TIDw8ICIgdXNlciI7CisgICAgICBicmVhazsKKyAgICBjYXNlIFJJU0NWSW50ZXJydXB0QXR0cjo6c3VwZXJ2aXNvcjoKKyAgICAgIE9TIDw8ICIgc3VwZXJ2aXNvciI7CisgICAgICBicmVhazsKKyAgICBjYXNlIFJJU0NWSW50ZXJydXB0QXR0cjo6bWFjaGluZToKKyAgICAgIE9TIDw8ICIgbWFjaGluZSI7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgdm9pZCBWaXNpdFJlbGVhc2VDYXBhYmlsaXR5QXR0cihjb25zdCBSZWxlYXNlQ2FwYWJpbGl0eUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8UmVsZWFzZUNhcGFiaWxpdHlBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiIDw8IEEtPmdldFNwZWxsaW5nKCk7CisgIH0KKyAgdm9pZCBWaXNpdFJlcWRXb3JrR3JvdXBTaXplQXR0cihjb25zdCBSZXFkV29ya0dyb3VwU2l6ZUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8UmVxZFdvcmtHcm91cFNpemVBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRYRGltKCk7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRZRGltKCk7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRaRGltKCk7CisgIH0KKyAgdm9pZCBWaXNpdFJlcXVpcmVzQ2FwYWJpbGl0eUF0dHIoY29uc3QgUmVxdWlyZXNDYXBhYmlsaXR5QXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxSZXF1aXJlc0NhcGFiaWxpdHlBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiIDw8IEEtPmdldFNwZWxsaW5nKCk7CisgIH0KKyAgdm9pZCBWaXNpdFJlc3RyaWN0QXR0cihjb25zdCBSZXN0cmljdEF0dHIgKkEpIHsKKyAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKKyAgfQorICB2b2lkIFZpc2l0UmV0dXJuVHlwZXN0YXRlQXR0cihjb25zdCBSZXR1cm5UeXBlc3RhdGVBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFJldHVyblR5cGVzdGF0ZUF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBzd2l0Y2goU0EtPmdldFN0YXRlKCkpIHsKKyAgICBjYXNlIFJldHVyblR5cGVzdGF0ZUF0dHI6OlVua25vd246CisgICAgICBPUyA8PCAiIFVua25vd24iOworICAgICAgYnJlYWs7CisgICAgY2FzZSBSZXR1cm5UeXBlc3RhdGVBdHRyOjpDb25zdW1lZDoKKyAgICAgIE9TIDw8ICIgQ29uc3VtZWQiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBSZXR1cm5UeXBlc3RhdGVBdHRyOjpVbmNvbnN1bWVkOgorICAgICAgT1MgPDwgIiBVbmNvbnN1bWVkIjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICB2b2lkIFZpc2l0U2VjdGlvbkF0dHIoY29uc3QgU2VjdGlvbkF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8U2VjdGlvbkF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKKyAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0TmFtZSgpIDw8ICJcIiI7CisgIH0KKyAgdm9pZCBWaXNpdFNlbnRpbmVsQXR0cihjb25zdCBTZW50aW5lbEF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8U2VudGluZWxBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRTZW50aW5lbCgpOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0TnVsbFBvcygpOworICB9CisgIHZvaWQgVmlzaXRTZXRUeXBlc3RhdGVBdHRyKGNvbnN0IFNldFR5cGVzdGF0ZUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8U2V0VHlwZXN0YXRlQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIHN3aXRjaChTQS0+Z2V0TmV3U3RhdGUoKSkgeworICAgIGNhc2UgU2V0VHlwZXN0YXRlQXR0cjo6VW5rbm93bjoKKyAgICAgIE9TIDw8ICIgVW5rbm93biI7CisgICAgICBicmVhazsKKyAgICBjYXNlIFNldFR5cGVzdGF0ZUF0dHI6OkNvbnN1bWVkOgorICAgICAgT1MgPDwgIiBDb25zdW1lZCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIFNldFR5cGVzdGF0ZUF0dHI6OlVuY29uc3VtZWQ6CisgICAgICBPUyA8PCAiIFVuY29uc3VtZWQiOworICAgICAgYnJlYWs7CisgICAgfQorICB9CisgIHZvaWQgVmlzaXRTdXBwcmVzc0F0dHIoY29uc3QgU3VwcHJlc3NBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFN1cHByZXNzQXR0cj4oQSk7ICh2b2lkKVNBOworICAgIGZvciAoY29uc3QgYXV0byAmVmFsIDogU0EtPmRpYWdub3N0aWNJZGVudGlmaWVycygpKQorICAgICAgT1MgPDwgIiAiIDw8IFZhbDsKKyAgfQorICB2b2lkIFZpc2l0VExTTW9kZWxBdHRyKGNvbnN0IFRMU01vZGVsQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxUTFNNb2RlbEF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0TW9kZWwoKSA8PCAiXCIiOworICB9CisgIHZvaWQgVmlzaXRUYXJnZXRBdHRyKGNvbnN0IFRhcmdldEF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8VGFyZ2V0QXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgXCIiIDw8IFNBLT5nZXRGZWF0dXJlc1N0cigpIDw8ICJcIiI7CisgIH0KKyAgdm9pZCBWaXNpdFRlc3RUeXBlc3RhdGVBdHRyKGNvbnN0IFRlc3RUeXBlc3RhdGVBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFRlc3RUeXBlc3RhdGVBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgc3dpdGNoKFNBLT5nZXRUZXN0U3RhdGUoKSkgeworICAgIGNhc2UgVGVzdFR5cGVzdGF0ZUF0dHI6OkNvbnN1bWVkOgorICAgICAgT1MgPDwgIiBDb25zdW1lZCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIFRlc3RUeXBlc3RhdGVBdHRyOjpVbmNvbnN1bWVkOgorICAgICAgT1MgPDwgIiBVbmNvbnN1bWVkIjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICB2b2lkIFZpc2l0VHJ5QWNxdWlyZUNhcGFiaWxpdHlBdHRyKGNvbnN0IFRyeUFjcXVpcmVDYXBhYmlsaXR5QXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxUcnlBY3F1aXJlQ2FwYWJpbGl0eUF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKKyAgfQorICB2b2lkIFZpc2l0VHlwZVRhZ0ZvckRhdGF0eXBlQXR0cihjb25zdCBUeXBlVGFnRm9yRGF0YXR5cGVBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFR5cGVUYWdGb3JEYXRhdHlwZUF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBpZiAoU0EtPmdldEFyZ3VtZW50S2luZCgpKQorICAgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRBcmd1bWVudEtpbmQoKS0+Z2V0TmFtZSgpOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0TWF0Y2hpbmdDVHlwZSgpLmdldEFzU3RyaW5nKCk7CisgICAgaWYgKFNBLT5nZXRMYXlvdXRDb21wYXRpYmxlKCkpIE9TIDw8ICIgTGF5b3V0Q29tcGF0aWJsZSI7CisgICAgaWYgKFNBLT5nZXRNdXN0QmVOdWxsKCkpIE9TIDw8ICIgTXVzdEJlTnVsbCI7CisgIH0KKyAgdm9pZCBWaXNpdFR5cGVWaXNpYmlsaXR5QXR0cihjb25zdCBUeXBlVmlzaWJpbGl0eUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8VHlwZVZpc2liaWxpdHlBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgc3dpdGNoKFNBLT5nZXRWaXNpYmlsaXR5KCkpIHsKKyAgICBjYXNlIFR5cGVWaXNpYmlsaXR5QXR0cjo6RGVmYXVsdDoKKyAgICAgIE9TIDw8ICIgRGVmYXVsdCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIFR5cGVWaXNpYmlsaXR5QXR0cjo6SGlkZGVuOgorICAgICAgT1MgPDwgIiBIaWRkZW4iOworICAgICAgYnJlYWs7CisgICAgY2FzZSBUeXBlVmlzaWJpbGl0eUF0dHI6OlByb3RlY3RlZDoKKyAgICAgIE9TIDw8ICIgUHJvdGVjdGVkIjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICB2b2lkIFZpc2l0VW5hdmFpbGFibGVBdHRyKGNvbnN0IFVuYXZhaWxhYmxlQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxVbmF2YWlsYWJsZUF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0TWVzc2FnZSgpIDw8ICJcIiI7CisgICAgc3dpdGNoKFNBLT5nZXRJbXBsaWNpdFJlYXNvbigpKSB7CisgICAgY2FzZSBVbmF2YWlsYWJsZUF0dHI6OklSX05vbmU6CisgICAgICBPUyA8PCAiIElSX05vbmUiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBVbmF2YWlsYWJsZUF0dHI6OklSX0FSQ0ZvcmJpZGRlblR5cGU6CisgICAgICBPUyA8PCAiIElSX0FSQ0ZvcmJpZGRlblR5cGUiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBVbmF2YWlsYWJsZUF0dHI6OklSX0ZvcmJpZGRlbldlYWs6CisgICAgICBPUyA8PCAiIElSX0ZvcmJpZGRlbldlYWsiOworICAgICAgYnJlYWs7CisgICAgY2FzZSBVbmF2YWlsYWJsZUF0dHI6OklSX0FSQ0ZvcmJpZGRlbkNvbnZlcnNpb246CisgICAgICBPUyA8PCAiIElSX0FSQ0ZvcmJpZGRlbkNvbnZlcnNpb24iOworICAgICAgYnJlYWs7CisgICAgY2FzZSBVbmF2YWlsYWJsZUF0dHI6OklSX0FSQ0luaXRSZXR1cm5zVW5yZWxhdGVkOgorICAgICAgT1MgPDwgIiBJUl9BUkNJbml0UmV0dXJuc1VucmVsYXRlZCI7CisgICAgICBicmVhazsKKyAgICBjYXNlIFVuYXZhaWxhYmxlQXR0cjo6SVJfQVJDRmllbGRXaXRoT3duZXJzaGlwOgorICAgICAgT1MgPDwgIiBJUl9BUkNGaWVsZFdpdGhPd25lcnNoaXAiOworICAgICAgYnJlYWs7CisgICAgfQorICB9CisgIHZvaWQgVmlzaXRVbnVzZWRBdHRyKGNvbnN0IFVudXNlZEF0dHIgKkEpIHsKKyAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKKyAgfQorICB2b2lkIFZpc2l0VXVpZEF0dHIoY29uc3QgVXVpZEF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8VXVpZEF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0R3VpZCgpIDw8ICJcIiI7CisgIH0KKyAgdm9pZCBWaXNpdFZlY1R5cGVIaW50QXR0cihjb25zdCBWZWNUeXBlSGludEF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8VmVjVHlwZUhpbnRBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRUeXBlSGludCgpLmdldEFzU3RyaW5nKCk7CisgIH0KKyAgdm9pZCBWaXNpdFZpc2liaWxpdHlBdHRyKGNvbnN0IFZpc2liaWxpdHlBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFZpc2liaWxpdHlBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgc3dpdGNoKFNBLT5nZXRWaXNpYmlsaXR5KCkpIHsKKyAgICBjYXNlIFZpc2liaWxpdHlBdHRyOjpEZWZhdWx0OgorICAgICAgT1MgPDwgIiBEZWZhdWx0IjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgVmlzaWJpbGl0eUF0dHI6OkhpZGRlbjoKKyAgICAgIE9TIDw8ICIgSGlkZGVuIjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgVmlzaWJpbGl0eUF0dHI6OlByb3RlY3RlZDoKKyAgICAgIE9TIDw8ICIgUHJvdGVjdGVkIjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICB2b2lkIFZpc2l0V2FyblVudXNlZFJlc3VsdEF0dHIoY29uc3QgV2FyblVudXNlZFJlc3VsdEF0dHIgKkEpIHsKKyAgICBPUyA8PCAiICIgPDwgQS0+Z2V0U3BlbGxpbmcoKTsKKyAgfQorICB2b2lkIFZpc2l0V2Vha1JlZkF0dHIoY29uc3QgV2Vha1JlZkF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8V2Vha1JlZkF0dHI+KEEpOyAodm9pZClTQTsKKyAgICBPUyA8PCAiIFwiIiA8PCBTQS0+Z2V0QWxpYXNlZSgpIDw8ICJcIiI7CisgIH0KKyAgdm9pZCBWaXNpdFdlYkFzc2VtYmx5SW1wb3J0TW9kdWxlQXR0cihjb25zdCBXZWJBc3NlbWJseUltcG9ydE1vZHVsZUF0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8V2ViQXNzZW1ibHlJbXBvcnRNb2R1bGVBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldEltcG9ydE1vZHVsZSgpIDw8ICJcIiI7CisgIH0KKyAgdm9pZCBWaXNpdFdlYkFzc2VtYmx5SW1wb3J0TmFtZUF0dHIoY29uc3QgV2ViQXNzZW1ibHlJbXBvcnROYW1lQXR0ciAqQSkgeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxXZWJBc3NlbWJseUltcG9ydE5hbWVBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiBcIiIgPDwgU0EtPmdldEltcG9ydE5hbWUoKSA8PCAiXCIiOworICB9CisgIHZvaWQgVmlzaXRXb3JrR3JvdXBTaXplSGludEF0dHIoY29uc3QgV29ya0dyb3VwU2l6ZUhpbnRBdHRyICpBKSB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFdvcmtHcm91cFNpemVIaW50QXR0cj4oQSk7ICh2b2lkKVNBOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0WERpbSgpOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0WURpbSgpOworICAgIE9TIDw8ICIgIiA8PCBTQS0+Z2V0WkRpbSgpOworICB9CisgIHZvaWQgVmlzaXRYUmF5SW5zdHJ1bWVudEF0dHIoY29uc3QgWFJheUluc3RydW1lbnRBdHRyICpBKSB7CisgICAgT1MgPDwgIiAiIDw8IEEtPmdldFNwZWxsaW5nKCk7CisgIH0KKyAgdm9pZCBWaXNpdFhSYXlMb2dBcmdzQXR0cihjb25zdCBYUmF5TG9nQXJnc0F0dHIgKkEpIHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8WFJheUxvZ0FyZ3NBdHRyPihBKTsgKHZvaWQpU0E7CisgICAgT1MgPDwgIiAiIDw8IFNBLT5nZXRBcmd1bWVudENvdW50KCk7CisgIH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BdHRyVmlzaXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0F0dHJWaXNpdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI3MWRiMAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BdHRyVmlzaXRvci5oCkBAIC0wLDAgKzEsNzUgQEAKKy8vPT09LSBBdHRyVmlzaXRvci5oIC0gVmlzaXRvciBmb3IgQXR0ciBzdWJjbGFzc2VzIC0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBBdHRyVmlzaXRvciBpbnRlcmZhY2UuCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0NMQU5HX0FTVF9BVFRSVklTSVRPUl9ICisjZGVmaW5lIExMVk1fQ0xBTkdfQVNUX0FUVFJWSVNJVE9SX0gKKworI2luY2x1ZGUgImNsYW5nL0FTVC9BdHRyLmgiCisKK25hbWVzcGFjZSBjbGFuZyB7CisKK25hbWVzcGFjZSBhdHRydmlzaXRvciB7CisKKy8vLyBBIHNpbXBsZSB2aXNpdG9yIGNsYXNzIHRoYXQgaGVscHMgY3JlYXRlIGF0dHJpYnV0ZSB2aXNpdG9ycy4KK3RlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFB0ciwgdHlwZW5hbWUgSW1wbENsYXNzLAorICAgICAgICAgIHR5cGVuYW1lIFJldFR5ID0gdm9pZCwgY2xhc3MuLi4gUGFyYW1UeXM+CitjbGFzcyBCYXNlIHsKK3B1YmxpYzoKKyNkZWZpbmUgUFRSKENMQVNTKSB0eXBlbmFtZSBQdHI8Q0xBU1M+Ojp0eXBlCisjZGVmaW5lIERJU1BBVENIKE5BTUUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICByZXR1cm4gc3RhdGljX2Nhc3Q8SW1wbENsYXNzICo+KHRoaXMpLT5WaXNpdCMjTkFNRShzdGF0aWNfY2FzdDxQVFIoTkFNRSk+KEEpKQorCisgIFJldFR5IFZpc2l0KFBUUihBdHRyKSBBKSB7CisgICAgc3dpdGNoIChBLT5nZXRLaW5kKCkpIHsKKworI2RlZmluZSBBVFRSKE5BTUUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgY2FzZSBhdHRyOjpOQU1FOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRElTUEFUQ0goTkFNRSMjQXR0cik7CisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvQXR0ckxpc3QuaW5jIgorICAgIH0KKyAgICBsbHZtX3VucmVhY2hhYmxlKCJBdHRyIHRoYXQgaXNuJ3QgcGFydCBvZiBBdHRyTGlzdC5pbmMhIik7CisgIH0KKworICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24gY2hvb3NlcyBub3QgdG8gaW1wbGVtZW50IGEgY2VydGFpbiB2aXNpdAorICAvLyBtZXRob2QsIGZhbGwgYmFjayB0byB0aGUgcGFyZW50LgorI2RlZmluZSBBVFRSKE5BTUUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgUmV0VHkgVmlzaXQjI05BTUUjI0F0dHIoUFRSKE5BTUUjI0F0dHIpIEEpIHsgRElTUEFUQ0goQXR0cik7IH0KKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9BdHRyTGlzdC5pbmMiCisKKyAgUmV0VHkgVmlzaXRBdHRyKFBUUihBdHRyKSkgeyByZXR1cm4gUmV0VHkoKTsgfQorCisjdW5kZWYgUFRSCisjdW5kZWYgRElTUEFUQ0gKK307CisKK30gLy8gbmFtZXNwYWNlIGF0dHJ2aXNpdG9yCisKKy8vLyBBIHNpbXBsZSB2aXNpdG9yIGNsYXNzIHRoYXQgaGVscHMgY3JlYXRlIGF0dHJpYnV0ZSB2aXNpdG9ycy4KKy8vLworLy8vIFRoaXMgY2xhc3MgZG9lcyBub3QgcHJlc2VydmUgY29uc3RuZXNzIG9mIEF0dHIgcG9pbnRlcnMgKHNlZQorLy8vIGFsc28gQ29uc3RBdHRyVmlzaXRvcikuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW1wbENsYXNzLCB0eXBlbmFtZSBSZXRUeSA9IHZvaWQsIHR5cGVuYW1lLi4uIFBhcmFtVHlzPgorY2xhc3MgQXR0clZpc2l0b3IgOiBwdWJsaWMgYXR0cnZpc2l0b3I6OkJhc2U8c3RkOjphZGRfcG9pbnRlciwgSW1wbENsYXNzLCBSZXRUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtVHlzLi4uPiB7fTsKKworLy8vIEEgc2ltcGxlIHZpc2l0b3IgY2xhc3MgdGhhdCBoZWxwcyBjcmVhdGUgYXR0cmlidXRlIHZpc2l0b3JzLgorLy8vCisvLy8gVGhpcyBjbGFzcyBwcmVzZXJ2ZXMgY29uc3RuZXNzIG9mIEF0dHIgcG9pbnRlcnMgKHNlZSBhbHNvCisvLy8gQXR0clZpc2l0b3IpLgordGVtcGxhdGUgPHR5cGVuYW1lIEltcGxDbGFzcywgdHlwZW5hbWUgUmV0VHkgPSB2b2lkLCB0eXBlbmFtZS4uLiBQYXJhbVR5cz4KK2NsYXNzIENvbnN0QXR0clZpc2l0b3IKKyAgICA6IHB1YmxpYyBhdHRydmlzaXRvcjo6QmFzZTxsbHZtOjptYWtlX2NvbnN0X3B0ciwgSW1wbENsYXNzLCBSZXRUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbVR5cy4uLj4ge307CisKK30gLy8gbmFtZXNwYWNlIGNsYW5nCisKKyNlbmRpZiAvLyBMTFZNX0NMQU5HX0FTVF9BVFRSVklTSVRPUl9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQXR0clZpc2l0b3IuaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0F0dHJWaXNpdG9yLmluYwppbmRleCA0ZjM1NTg3Li4wODMxMWI5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQXR0clZpc2l0b3IuaW5jCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BdHRyVmlzaXRvci5pbmMKQEAgLTgsNiArOCwxMCBAQAogCiAjaWZkZWYgQVRUUl9WSVNJVE9SX0RFQ0xTX09OTFkKIAorICBib29sIFRyYXZlcnNlQUFyY2g2NFZlY3RvclBjc0F0dHIoQUFyY2g2NFZlY3RvclBjc0F0dHIgKkEpOworICBib29sIFZpc2l0QUFyY2g2NFZlY3RvclBjc0F0dHIoQUFyY2g2NFZlY3RvclBjc0F0dHIgKkEpIHsKKyAgICByZXR1cm4gdHJ1ZTsgCisgIH0KICAgYm9vbCBUcmF2ZXJzZUFNREdQVUZsYXRXb3JrR3JvdXBTaXplQXR0cihBTURHUFVGbGF0V29ya0dyb3VwU2l6ZUF0dHIgKkEpOwogICBib29sIFZpc2l0QU1ER1BVRmxhdFdvcmtHcm91cFNpemVBdHRyKEFNREdQVUZsYXRXb3JrR3JvdXBTaXplQXR0ciAqQSkgewogICAgIHJldHVybiB0cnVlOyAKQEAgLTIyMCw2ICsyMjQsMTAgQEAKICAgYm9vbCBWaXNpdENhbGxhYmxlV2hlbkF0dHIoQ2FsbGFibGVXaGVuQXR0ciAqQSkgewogICAgIHJldHVybiB0cnVlOyAKICAgfQorICBib29sIFRyYXZlcnNlQ2FsbGJhY2tBdHRyKENhbGxiYWNrQXR0ciAqQSk7CisgIGJvb2wgVmlzaXRDYWxsYmFja0F0dHIoQ2FsbGJhY2tBdHRyICpBKSB7CisgICAgcmV0dXJuIHRydWU7IAorICB9CiAgIGJvb2wgVHJhdmVyc2VDYXBhYmlsaXR5QXR0cihDYXBhYmlsaXR5QXR0ciAqQSk7CiAgIGJvb2wgVmlzaXRDYXBhYmlsaXR5QXR0cihDYXBhYmlsaXR5QXR0ciAqQSkgewogICAgIHJldHVybiB0cnVlOyAKQEAgLTI3NiwxMCArMjg0LDE4IEBACiAgIGJvb2wgVmlzaXRETExFeHBvcnRBdHRyKERMTEV4cG9ydEF0dHIgKkEpIHsKICAgICByZXR1cm4gdHJ1ZTsgCiAgIH0KKyAgYm9vbCBUcmF2ZXJzZURMTEV4cG9ydFN0YXRpY0xvY2FsQXR0cihETExFeHBvcnRTdGF0aWNMb2NhbEF0dHIgKkEpOworICBib29sIFZpc2l0RExMRXhwb3J0U3RhdGljTG9jYWxBdHRyKERMTEV4cG9ydFN0YXRpY0xvY2FsQXR0ciAqQSkgeworICAgIHJldHVybiB0cnVlOyAKKyAgfQogICBib29sIFRyYXZlcnNlRExMSW1wb3J0QXR0cihETExJbXBvcnRBdHRyICpBKTsKICAgYm9vbCBWaXNpdERMTEltcG9ydEF0dHIoRExMSW1wb3J0QXR0ciAqQSkgewogICAgIHJldHVybiB0cnVlOyAKICAgfQorICBib29sIFRyYXZlcnNlRExMSW1wb3J0U3RhdGljTG9jYWxBdHRyKERMTEltcG9ydFN0YXRpY0xvY2FsQXR0ciAqQSk7CisgIGJvb2wgVmlzaXRETExJbXBvcnRTdGF0aWNMb2NhbEF0dHIoRExMSW1wb3J0U3RhdGljTG9jYWxBdHRyICpBKSB7CisgICAgcmV0dXJuIHRydWU7IAorICB9CiAgIGJvb2wgVHJhdmVyc2VEZXByZWNhdGVkQXR0cihEZXByZWNhdGVkQXR0ciAqQSk7CiAgIGJvb2wgVmlzaXREZXByZWNhdGVkQXR0cihEZXByZWNhdGVkQXR0ciAqQSkgewogICAgIHJldHVybiB0cnVlOyAKQEAgLTM0OCw2ICszNjQsMTAgQEAKICAgYm9vbCBWaXNpdEZvcm1hdEFyZ0F0dHIoRm9ybWF0QXJnQXR0ciAqQSkgewogICAgIHJldHVybiB0cnVlOyAKICAgfQorICBib29sIFRyYXZlcnNlRm9ydGlmeVN0ZExpYkF0dHIoRm9ydGlmeVN0ZExpYkF0dHIgKkEpOworICBib29sIFZpc2l0Rm9ydGlmeVN0ZExpYkF0dHIoRm9ydGlmeVN0ZExpYkF0dHIgKkEpIHsKKyAgICByZXR1cm4gdHJ1ZTsgCisgIH0KICAgYm9vbCBUcmF2ZXJzZUdOVUlubGluZUF0dHIoR05VSW5saW5lQXR0ciAqQSk7CiAgIGJvb2wgVmlzaXRHTlVJbmxpbmVBdHRyKEdOVUlubGluZUF0dHIgKkEpIHsKICAgICByZXR1cm4gdHJ1ZTsgCkBAIC01MjAsNiArNTQwLDEwIEBACiAgIGJvb2wgVmlzaXROb0RlYnVnQXR0cihOb0RlYnVnQXR0ciAqQSkgewogICAgIHJldHVybiB0cnVlOyAKICAgfQorICBib29sIFRyYXZlcnNlTm9EZXJlZkF0dHIoTm9EZXJlZkF0dHIgKkEpOworICBib29sIFZpc2l0Tm9EZXJlZkF0dHIoTm9EZXJlZkF0dHIgKkEpIHsKKyAgICByZXR1cm4gdHJ1ZTsgCisgIH0KICAgYm9vbCBUcmF2ZXJzZU5vRGVzdHJveUF0dHIoTm9EZXN0cm95QXR0ciAqQSk7CiAgIGJvb2wgVmlzaXROb0Rlc3Ryb3lBdHRyKE5vRGVzdHJveUF0dHIgKkEpIHsKICAgICByZXR1cm4gdHJ1ZTsgCkBAIC01NTYsNiArNTgwLDEwIEBACiAgIGJvb2wgVmlzaXROb1Nhbml0aXplQXR0cihOb1Nhbml0aXplQXR0ciAqQSkgewogICAgIHJldHVybiB0cnVlOyAKICAgfQorICBib29sIFRyYXZlcnNlTm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBdHRyKE5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0ciAqQSk7CisgIGJvb2wgVmlzaXROb1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHIoTm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBdHRyICpBKSB7CisgICAgcmV0dXJuIHRydWU7IAorICB9CiAgIGJvb2wgVHJhdmVyc2VOb1NwbGl0U3RhY2tBdHRyKE5vU3BsaXRTdGFja0F0dHIgKkEpOwogICBib29sIFZpc2l0Tm9TcGxpdFN0YWNrQXR0cihOb1NwbGl0U3RhY2tBdHRyICpBKSB7CiAgICAgcmV0dXJuIHRydWU7IApAQCAtNjA0LDYgKzYzMiwzMCBAQAogICBib29sIFZpc2l0T01QVGhyZWFkUHJpdmF0ZURlY2xBdHRyKE9NUFRocmVhZFByaXZhdGVEZWNsQXR0ciAqQSkgewogICAgIHJldHVybiB0cnVlOyAKICAgfQorICBib29sIFRyYXZlcnNlT1NDb25zdW1lZEF0dHIoT1NDb25zdW1lZEF0dHIgKkEpOworICBib29sIFZpc2l0T1NDb25zdW1lZEF0dHIoT1NDb25zdW1lZEF0dHIgKkEpIHsKKyAgICByZXR1cm4gdHJ1ZTsgCisgIH0KKyAgYm9vbCBUcmF2ZXJzZU9TQ29uc3VtZXNUaGlzQXR0cihPU0NvbnN1bWVzVGhpc0F0dHIgKkEpOworICBib29sIFZpc2l0T1NDb25zdW1lc1RoaXNBdHRyKE9TQ29uc3VtZXNUaGlzQXR0ciAqQSkgeworICAgIHJldHVybiB0cnVlOyAKKyAgfQorICBib29sIFRyYXZlcnNlT1NSZXR1cm5zTm90UmV0YWluZWRBdHRyKE9TUmV0dXJuc05vdFJldGFpbmVkQXR0ciAqQSk7CisgIGJvb2wgVmlzaXRPU1JldHVybnNOb3RSZXRhaW5lZEF0dHIoT1NSZXR1cm5zTm90UmV0YWluZWRBdHRyICpBKSB7CisgICAgcmV0dXJuIHRydWU7IAorICB9CisgIGJvb2wgVHJhdmVyc2VPU1JldHVybnNSZXRhaW5lZEF0dHIoT1NSZXR1cm5zUmV0YWluZWRBdHRyICpBKTsKKyAgYm9vbCBWaXNpdE9TUmV0dXJuc1JldGFpbmVkQXR0cihPU1JldHVybnNSZXRhaW5lZEF0dHIgKkEpIHsKKyAgICByZXR1cm4gdHJ1ZTsgCisgIH0KKyAgYm9vbCBUcmF2ZXJzZU9TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvQXR0cihPU1JldHVybnNSZXRhaW5lZE9uTm9uWmVyb0F0dHIgKkEpOworICBib29sIFZpc2l0T1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm9BdHRyKE9TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvQXR0ciAqQSkgeworICAgIHJldHVybiB0cnVlOyAKKyAgfQorICBib29sIFRyYXZlcnNlT1NSZXR1cm5zUmV0YWluZWRPblplcm9BdHRyKE9TUmV0dXJuc1JldGFpbmVkT25aZXJvQXR0ciAqQSk7CisgIGJvb2wgVmlzaXRPU1JldHVybnNSZXRhaW5lZE9uWmVyb0F0dHIoT1NSZXR1cm5zUmV0YWluZWRPblplcm9BdHRyICpBKSB7CisgICAgcmV0dXJuIHRydWU7IAorICB9CiAgIGJvb2wgVHJhdmVyc2VPYmpDQm94YWJsZUF0dHIoT2JqQ0JveGFibGVBdHRyICpBKTsKICAgYm9vbCBWaXNpdE9iakNCb3hhYmxlQXR0cihPYmpDQm94YWJsZUF0dHIgKkEpIHsKICAgICByZXR1cm4gdHJ1ZTsgCkBAIC02MzIsNiArNjg0LDEwIEBACiAgIGJvb2wgVmlzaXRPYmpDRXhwbGljaXRQcm90b2NvbEltcGxBdHRyKE9iakNFeHBsaWNpdFByb3RvY29sSW1wbEF0dHIgKkEpIHsKICAgICByZXR1cm4gdHJ1ZTsgCiAgIH0KKyAgYm9vbCBUcmF2ZXJzZU9iakNFeHRlcm5hbGx5UmV0YWluZWRBdHRyKE9iakNFeHRlcm5hbGx5UmV0YWluZWRBdHRyICpBKTsKKyAgYm9vbCBWaXNpdE9iakNFeHRlcm5hbGx5UmV0YWluZWRBdHRyKE9iakNFeHRlcm5hbGx5UmV0YWluZWRBdHRyICpBKSB7CisgICAgcmV0dXJuIHRydWU7IAorICB9CiAgIGJvb2wgVHJhdmVyc2VPYmpDR0NBdHRyKE9iakNHQ0F0dHIgKkEpOwogICBib29sIFZpc2l0T2JqQ0dDQXR0cihPYmpDR0NBdHRyICpBKSB7CiAgICAgcmV0dXJuIHRydWU7IApAQCAtNjU2LDYgKzcxMiwxMCBAQAogICBib29sIFZpc2l0T2JqQ05TT2JqZWN0QXR0cihPYmpDTlNPYmplY3RBdHRyICpBKSB7CiAgICAgcmV0dXJuIHRydWU7IAogICB9CisgIGJvb2wgVHJhdmVyc2VPYmpDTm9uTGF6eUNsYXNzQXR0cihPYmpDTm9uTGF6eUNsYXNzQXR0ciAqQSk7CisgIGJvb2wgVmlzaXRPYmpDTm9uTGF6eUNsYXNzQXR0cihPYmpDTm9uTGF6eUNsYXNzQXR0ciAqQSkgeworICAgIHJldHVybiB0cnVlOyAKKyAgfQogICBib29sIFRyYXZlcnNlT2JqQ093bmVyc2hpcEF0dHIoT2JqQ093bmVyc2hpcEF0dHIgKkEpOwogICBib29sIFZpc2l0T2JqQ093bmVyc2hpcEF0dHIoT2JqQ093bmVyc2hpcEF0dHIgKkEpIHsKICAgICByZXR1cm4gdHJ1ZTsgCkBAIC04ODQsNiArOTQ0LDEwIEBACiAgIGJvb2wgVmlzaXRTaGFyZWRUcnlsb2NrRnVuY3Rpb25BdHRyKFNoYXJlZFRyeWxvY2tGdW5jdGlvbkF0dHIgKkEpIHsKICAgICByZXR1cm4gdHJ1ZTsgCiAgIH0KKyAgYm9vbCBUcmF2ZXJzZVNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHIoU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0ciAqQSk7CisgIGJvb2wgVmlzaXRTcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBdHRyKFNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHIgKkEpIHsKKyAgICByZXR1cm4gdHJ1ZTsgCisgIH0KICAgYm9vbCBUcmF2ZXJzZVN0ZENhbGxBdHRyKFN0ZENhbGxBdHRyICpBKTsKICAgYm9vbCBWaXNpdFN0ZENhbGxBdHRyKFN0ZENhbGxBdHRyICpBKSB7CiAgICAgcmV0dXJuIHRydWU7IApAQCAtOTcyLDYgKzEwMzYsMTAgQEAKICAgYm9vbCBWaXNpdFVuYXZhaWxhYmxlQXR0cihVbmF2YWlsYWJsZUF0dHIgKkEpIHsKICAgICByZXR1cm4gdHJ1ZTsgCiAgIH0KKyAgYm9vbCBUcmF2ZXJzZVVuaW5pdGlhbGl6ZWRBdHRyKFVuaW5pdGlhbGl6ZWRBdHRyICpBKTsKKyAgYm9vbCBWaXNpdFVuaW5pdGlhbGl6ZWRBdHRyKFVuaW5pdGlhbGl6ZWRBdHRyICpBKSB7CisgICAgcmV0dXJuIHRydWU7IAorICB9CiAgIGJvb2wgVHJhdmVyc2VVbnVzZWRBdHRyKFVudXNlZEF0dHIgKkEpOwogICBib29sIFZpc2l0VW51c2VkQXR0cihVbnVzZWRBdHRyICpBKSB7CiAgICAgcmV0dXJuIHRydWU7IApAQCAtMTAyMCw2ICsxMDg4LDE0IEBACiAgIGJvb2wgVmlzaXRXZWFrUmVmQXR0cihXZWFrUmVmQXR0ciAqQSkgewogICAgIHJldHVybiB0cnVlOyAKICAgfQorICBib29sIFRyYXZlcnNlV2ViQXNzZW1ibHlJbXBvcnRNb2R1bGVBdHRyKFdlYkFzc2VtYmx5SW1wb3J0TW9kdWxlQXR0ciAqQSk7CisgIGJvb2wgVmlzaXRXZWJBc3NlbWJseUltcG9ydE1vZHVsZUF0dHIoV2ViQXNzZW1ibHlJbXBvcnRNb2R1bGVBdHRyICpBKSB7CisgICAgcmV0dXJuIHRydWU7IAorICB9CisgIGJvb2wgVHJhdmVyc2VXZWJBc3NlbWJseUltcG9ydE5hbWVBdHRyKFdlYkFzc2VtYmx5SW1wb3J0TmFtZUF0dHIgKkEpOworICBib29sIFZpc2l0V2ViQXNzZW1ibHlJbXBvcnROYW1lQXR0cihXZWJBc3NlbWJseUltcG9ydE5hbWVBdHRyICpBKSB7CisgICAgcmV0dXJuIHRydWU7IAorICB9CiAgIGJvb2wgVHJhdmVyc2VXb3JrR3JvdXBTaXplSGludEF0dHIoV29ya0dyb3VwU2l6ZUhpbnRBdHRyICpBKTsKICAgYm9vbCBWaXNpdFdvcmtHcm91cFNpemVIaW50QXR0cihXb3JrR3JvdXBTaXplSGludEF0dHIgKkEpIHsKICAgICByZXR1cm4gdHJ1ZTsgCkBAIC0xMDQwLDYgKzExMTYsMTUgQEAKICNlbHNlIC8vIEFUVFJfVklTSVRPUl9ERUNMU19PTkxZCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkPgorYm9vbCBWSVNJVE9SQ0xBU1M8RGVyaXZlZD46OlRyYXZlcnNlQUFyY2g2NFZlY3RvclBjc0F0dHIoQUFyY2g2NFZlY3RvclBjc0F0dHIgKkEpIHsKKyAgaWYgKCFnZXREZXJpdmVkKCkuVmlzaXRBdHRyKEEpKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKCFnZXREZXJpdmVkKCkuVmlzaXRBQXJjaDY0VmVjdG9yUGNzQXR0cihBKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZD4KIGJvb2wgVklTSVRPUkNMQVNTPERlcml2ZWQ+OjpUcmF2ZXJzZUFNREdQVUZsYXRXb3JrR3JvdXBTaXplQXR0cihBTURHUFVGbGF0V29ya0dyb3VwU2l6ZUF0dHIgKkEpIHsKICAgaWYgKCFnZXREZXJpdmVkKCkuVmlzaXRBdHRyKEEpKQogICAgIHJldHVybiBmYWxzZTsKQEAgLTE1ODIsNiArMTY2NywxNSBAQAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZD4KK2Jvb2wgVklTSVRPUkNMQVNTPERlcml2ZWQ+OjpUcmF2ZXJzZUNhbGxiYWNrQXR0cihDYWxsYmFja0F0dHIgKkEpIHsKKyAgaWYgKCFnZXREZXJpdmVkKCkuVmlzaXRBdHRyKEEpKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKCFnZXREZXJpdmVkKCkuVmlzaXRDYWxsYmFja0F0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQ+CiBib29sIFZJU0lUT1JDTEFTUzxEZXJpdmVkPjo6VHJhdmVyc2VDYXBhYmlsaXR5QXR0cihDYXBhYmlsaXR5QXR0ciAqQSkgewogICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTcwOCw2ICsxODAyLDE1IEBACiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkPgorYm9vbCBWSVNJVE9SQ0xBU1M8RGVyaXZlZD46OlRyYXZlcnNlRExMRXhwb3J0U3RhdGljTG9jYWxBdHRyKERMTEV4cG9ydFN0YXRpY0xvY2FsQXR0ciAqQSkgeworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdERMTEV4cG9ydFN0YXRpY0xvY2FsQXR0cihBKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZD4KIGJvb2wgVklTSVRPUkNMQVNTPERlcml2ZWQ+OjpUcmF2ZXJzZURMTEltcG9ydEF0dHIoRExMSW1wb3J0QXR0ciAqQSkgewogICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTcxNyw2ICsxODIwLDE1IEBACiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkPgorYm9vbCBWSVNJVE9SQ0xBU1M8RGVyaXZlZD46OlRyYXZlcnNlRExMSW1wb3J0U3RhdGljTG9jYWxBdHRyKERMTEltcG9ydFN0YXRpY0xvY2FsQXR0ciAqQSkgeworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdERMTEltcG9ydFN0YXRpY0xvY2FsQXR0cihBKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZD4KIGJvb2wgVklTSVRPUkNMQVNTPERlcml2ZWQ+OjpUcmF2ZXJzZURlcHJlY2F0ZWRBdHRyKERlcHJlY2F0ZWRBdHRyICpBKSB7CiAgIGlmICghZ2V0RGVyaXZlZCgpLlZpc2l0QXR0cihBKSkKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODg0LDYgKzE5OTYsMTUgQEAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQ+Citib29sIFZJU0lUT1JDTEFTUzxEZXJpdmVkPjo6VHJhdmVyc2VGb3J0aWZ5U3RkTGliQXR0cihGb3J0aWZ5U3RkTGliQXR0ciAqQSkgeworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEZvcnRpZnlTdGRMaWJBdHRyKEEpKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkPgogYm9vbCBWSVNJVE9SQ0xBU1M8RGVyaXZlZD46OlRyYXZlcnNlR05VSW5saW5lQXR0cihHTlVJbmxpbmVBdHRyICpBKSB7CiAgIGlmICghZ2V0RGVyaXZlZCgpLlZpc2l0QXR0cihBKSkKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjg4LDYgKzI0MDksMTUgQEAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQ+Citib29sIFZJU0lUT1JDTEFTUzxEZXJpdmVkPjo6VHJhdmVyc2VOb0RlcmVmQXR0cihOb0RlcmVmQXR0ciAqQSkgeworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdE5vRGVyZWZBdHRyKEEpKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkPgogYm9vbCBWSVNJVE9SQ0xBU1M8RGVyaXZlZD46OlRyYXZlcnNlTm9EZXN0cm95QXR0cihOb0Rlc3Ryb3lBdHRyICpBKSB7CiAgIGlmICghZ2V0RGVyaXZlZCgpLlZpc2l0QXR0cihBKSkKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzY5LDYgKzI0OTksMTUgQEAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQ+Citib29sIFZJU0lUT1JDTEFTUzxEZXJpdmVkPjo6VHJhdmVyc2VOb1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHIoTm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBdHRyICpBKSB7CisgIGlmICghZ2V0RGVyaXZlZCgpLlZpc2l0QXR0cihBKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIGlmICghZ2V0RGVyaXZlZCgpLlZpc2l0Tm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBdHRyKEEpKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkPgogYm9vbCBWSVNJVE9SQ0xBU1M8RGVyaXZlZD46OlRyYXZlcnNlTm9TcGxpdFN0YWNrQXR0cihOb1NwbGl0U3RhY2tBdHRyICpBKSB7CiAgIGlmICghZ2V0RGVyaXZlZCgpLlZpc2l0QXR0cihBKSkKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTIxLDYgKzI2NjAsNjAgQEAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQ+Citib29sIFZJU0lUT1JDTEFTUzxEZXJpdmVkPjo6VHJhdmVyc2VPU0NvbnN1bWVkQXR0cihPU0NvbnN1bWVkQXR0ciAqQSkgeworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdE9TQ29uc3VtZWRBdHRyKEEpKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkPgorYm9vbCBWSVNJVE9SQ0xBU1M8RGVyaXZlZD46OlRyYXZlcnNlT1NDb25zdW1lc1RoaXNBdHRyKE9TQ29uc3VtZXNUaGlzQXR0ciAqQSkgeworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdE9TQ29uc3VtZXNUaGlzQXR0cihBKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZD4KK2Jvb2wgVklTSVRPUkNMQVNTPERlcml2ZWQ+OjpUcmF2ZXJzZU9TUmV0dXJuc05vdFJldGFpbmVkQXR0cihPU1JldHVybnNOb3RSZXRhaW5lZEF0dHIgKkEpIHsKKyAgaWYgKCFnZXREZXJpdmVkKCkuVmlzaXRBdHRyKEEpKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKCFnZXREZXJpdmVkKCkuVmlzaXRPU1JldHVybnNOb3RSZXRhaW5lZEF0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQ+Citib29sIFZJU0lUT1JDTEFTUzxEZXJpdmVkPjo6VHJhdmVyc2VPU1JldHVybnNSZXRhaW5lZEF0dHIoT1NSZXR1cm5zUmV0YWluZWRBdHRyICpBKSB7CisgIGlmICghZ2V0RGVyaXZlZCgpLlZpc2l0QXR0cihBKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIGlmICghZ2V0RGVyaXZlZCgpLlZpc2l0T1NSZXR1cm5zUmV0YWluZWRBdHRyKEEpKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkPgorYm9vbCBWSVNJVE9SQ0xBU1M8RGVyaXZlZD46OlRyYXZlcnNlT1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm9BdHRyKE9TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvQXR0ciAqQSkgeworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdE9TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvQXR0cihBKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZD4KK2Jvb2wgVklTSVRPUkNMQVNTPERlcml2ZWQ+OjpUcmF2ZXJzZU9TUmV0dXJuc1JldGFpbmVkT25aZXJvQXR0cihPU1JldHVybnNSZXRhaW5lZE9uWmVyb0F0dHIgKkEpIHsKKyAgaWYgKCFnZXREZXJpdmVkKCkuVmlzaXRBdHRyKEEpKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKCFnZXREZXJpdmVkKCkuVmlzaXRPU1JldHVybnNSZXRhaW5lZE9uWmVyb0F0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQ+CiBib29sIFZJU0lUT1JDTEFTUzxEZXJpdmVkPjo6VHJhdmVyc2VPYmpDQm94YWJsZUF0dHIoT2JqQ0JveGFibGVBdHRyICpBKSB7CiAgIGlmICghZ2V0RGVyaXZlZCgpLlZpc2l0QXR0cihBKSkKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTg0LDYgKzI3NzcsMTUgQEAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQ+Citib29sIFZJU0lUT1JDTEFTUzxEZXJpdmVkPjo6VHJhdmVyc2VPYmpDRXh0ZXJuYWxseVJldGFpbmVkQXR0cihPYmpDRXh0ZXJuYWxseVJldGFpbmVkQXR0ciAqQSkgeworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdE9iakNFeHRlcm5hbGx5UmV0YWluZWRBdHRyKEEpKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkPgogYm9vbCBWSVNJVE9SQ0xBU1M8RGVyaXZlZD46OlRyYXZlcnNlT2JqQ0dDQXR0cihPYmpDR0NBdHRyICpBKSB7CiAgIGlmICghZ2V0RGVyaXZlZCgpLlZpc2l0QXR0cihBKSkKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjM4LDYgKzI4NDAsMTUgQEAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQ+Citib29sIFZJU0lUT1JDTEFTUzxEZXJpdmVkPjo6VHJhdmVyc2VPYmpDTm9uTGF6eUNsYXNzQXR0cihPYmpDTm9uTGF6eUNsYXNzQXR0ciAqQSkgeworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdE9iakNOb25MYXp5Q2xhc3NBdHRyKEEpKQorICAgIHJldHVybiBmYWxzZTsKKyAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkPgogYm9vbCBWSVNJVE9SQ0xBU1M8RGVyaXZlZD46OlRyYXZlcnNlT2JqQ093bmVyc2hpcEF0dHIoT2JqQ093bmVyc2hpcEF0dHIgKkEpIHsKICAgaWYgKCFnZXREZXJpdmVkKCkuVmlzaXRBdHRyKEEpKQogICAgIHJldHVybiBmYWxzZTsKQEAgLTMxNzksNiArMzM5MCwxNSBAQAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZD4KK2Jvb2wgVklTSVRPUkNMQVNTPERlcml2ZWQ+OjpUcmF2ZXJzZVNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHIoU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0ciAqQSkgeworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdFNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQ+CiBib29sIFZJU0lUT1JDTEFTUzxEZXJpdmVkPjo6VHJhdmVyc2VTdGRDYWxsQXR0cihTdGRDYWxsQXR0ciAqQSkgewogICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzM5MCw2ICszNjEwLDE1IEBACiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkPgorYm9vbCBWSVNJVE9SQ0xBU1M8RGVyaXZlZD46OlRyYXZlcnNlVW5pbml0aWFsaXplZEF0dHIoVW5pbml0aWFsaXplZEF0dHIgKkEpIHsKKyAgaWYgKCFnZXREZXJpdmVkKCkuVmlzaXRBdHRyKEEpKQorICAgIHJldHVybiBmYWxzZTsKKyAgaWYgKCFnZXREZXJpdmVkKCkuVmlzaXRVbmluaXRpYWxpemVkQXR0cihBKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZD4KIGJvb2wgVklTSVRPUkNMQVNTPERlcml2ZWQ+OjpUcmF2ZXJzZVVudXNlZEF0dHIoVW51c2VkQXR0ciAqQSkgewogICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzUwMSw2ICszNzMwLDI0IEBACiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkPgorYm9vbCBWSVNJVE9SQ0xBU1M8RGVyaXZlZD46OlRyYXZlcnNlV2ViQXNzZW1ibHlJbXBvcnRNb2R1bGVBdHRyKFdlYkFzc2VtYmx5SW1wb3J0TW9kdWxlQXR0ciAqQSkgeworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdFdlYkFzc2VtYmx5SW1wb3J0TW9kdWxlQXR0cihBKSkKKyAgICByZXR1cm4gZmFsc2U7CisgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZD4KK2Jvb2wgVklTSVRPUkNMQVNTPERlcml2ZWQ+OjpUcmF2ZXJzZVdlYkFzc2VtYmx5SW1wb3J0TmFtZUF0dHIoV2ViQXNzZW1ibHlJbXBvcnROYW1lQXR0ciAqQSkgeworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdEF0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICBpZiAoIWdldERlcml2ZWQoKS5WaXNpdFdlYkFzc2VtYmx5SW1wb3J0TmFtZUF0dHIoQSkpCisgICAgcmV0dXJuIGZhbHNlOworICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQ+CiBib29sIFZJU0lUT1JDTEFTUzxEZXJpdmVkPjo6VHJhdmVyc2VXb3JrR3JvdXBTaXplSGludEF0dHIoV29ya0dyb3VwU2l6ZUhpbnRBdHRyICpBKSB7CiAgIGlmICghZ2V0RGVyaXZlZCgpLlZpc2l0QXR0cihBKSkKICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTQyLDYgKzM3ODksOCBAQAogICAgIHJldHVybiB0cnVlOwogCiAgIHN3aXRjaCAoQS0+Z2V0S2luZCgpKSB7CisgICAgY2FzZSBhdHRyOjpBQXJjaDY0VmVjdG9yUGNzOgorICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZUFBcmNoNjRWZWN0b3JQY3NBdHRyKGNhc3Q8QUFyY2g2NFZlY3RvclBjc0F0dHI+KEEpKTsKICAgICBjYXNlIGF0dHI6OkFNREdQVUZsYXRXb3JrR3JvdXBTaXplOgogICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZUFNREdQVUZsYXRXb3JrR3JvdXBTaXplQXR0cihjYXN0PEFNREdQVUZsYXRXb3JrR3JvdXBTaXplQXR0cj4oQSkpOwogICAgIGNhc2UgYXR0cjo6QU1ER1BVTnVtU0dQUjoKQEAgLTM2NDgsNiArMzg5Nyw4IEBACiAgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlQ1hYMTFOb1JldHVybkF0dHIoY2FzdDxDWFgxMU5vUmV0dXJuQXR0cj4oQSkpOwogICAgIGNhc2UgYXR0cjo6Q2FsbGFibGVXaGVuOgogICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZUNhbGxhYmxlV2hlbkF0dHIoY2FzdDxDYWxsYWJsZVdoZW5BdHRyPihBKSk7CisgICAgY2FzZSBhdHRyOjpDYWxsYmFjazoKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VDYWxsYmFja0F0dHIoY2FzdDxDYWxsYmFja0F0dHI+KEEpKTsKICAgICBjYXNlIGF0dHI6OkNhcGFiaWxpdHk6CiAgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlQ2FwYWJpbGl0eUF0dHIoY2FzdDxDYXBhYmlsaXR5QXR0cj4oQSkpOwogICAgIGNhc2UgYXR0cjo6Q2FwdHVyZWRSZWNvcmQ6CkBAIC0zNjc2LDggKzM5MjcsMTIgQEAKICAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VDb252ZXJnZW50QXR0cihjYXN0PENvbnZlcmdlbnRBdHRyPihBKSk7CiAgICAgY2FzZSBhdHRyOjpETExFeHBvcnQ6CiAgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlRExMRXhwb3J0QXR0cihjYXN0PERMTEV4cG9ydEF0dHI+KEEpKTsKKyAgICBjYXNlIGF0dHI6OkRMTEV4cG9ydFN0YXRpY0xvY2FsOgorICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZURMTEV4cG9ydFN0YXRpY0xvY2FsQXR0cihjYXN0PERMTEV4cG9ydFN0YXRpY0xvY2FsQXR0cj4oQSkpOwogICAgIGNhc2UgYXR0cjo6RExMSW1wb3J0OgogICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZURMTEltcG9ydEF0dHIoY2FzdDxETExJbXBvcnRBdHRyPihBKSk7CisgICAgY2FzZSBhdHRyOjpETExJbXBvcnRTdGF0aWNMb2NhbDoKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VETExJbXBvcnRTdGF0aWNMb2NhbEF0dHIoY2FzdDxETExJbXBvcnRTdGF0aWNMb2NhbEF0dHI+KEEpKTsKICAgICBjYXNlIGF0dHI6OkRlcHJlY2F0ZWQ6CiAgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlRGVwcmVjYXRlZEF0dHIoY2FzdDxEZXByZWNhdGVkQXR0cj4oQSkpOwogICAgIGNhc2UgYXR0cjo6RGVzdHJ1Y3RvcjoKQEAgLTM3MTIsNiArMzk2Nyw4IEBACiAgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlRm9ybWF0QXR0cihjYXN0PEZvcm1hdEF0dHI+KEEpKTsKICAgICBjYXNlIGF0dHI6OkZvcm1hdEFyZzoKICAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VGb3JtYXRBcmdBdHRyKGNhc3Q8Rm9ybWF0QXJnQXR0cj4oQSkpOworICAgIGNhc2UgYXR0cjo6Rm9ydGlmeVN0ZExpYjoKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VGb3J0aWZ5U3RkTGliQXR0cihjYXN0PEZvcnRpZnlTdGRMaWJBdHRyPihBKSk7CiAgICAgY2FzZSBhdHRyOjpHTlVJbmxpbmU6CiAgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlR05VSW5saW5lQXR0cihjYXN0PEdOVUlubGluZUF0dHI+KEEpKTsKICAgICBjYXNlIGF0dHI6Okd1YXJkZWRCeToKQEAgLTM3OTgsNiArNDA1NSw4IEBACiAgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlTm9Db21tb25BdHRyKGNhc3Q8Tm9Db21tb25BdHRyPihBKSk7CiAgICAgY2FzZSBhdHRyOjpOb0RlYnVnOgogICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZU5vRGVidWdBdHRyKGNhc3Q8Tm9EZWJ1Z0F0dHI+KEEpKTsKKyAgICBjYXNlIGF0dHI6Ok5vRGVyZWY6CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlTm9EZXJlZkF0dHIoY2FzdDxOb0RlcmVmQXR0cj4oQSkpOwogICAgIGNhc2UgYXR0cjo6Tm9EZXN0cm95OgogICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZU5vRGVzdHJveUF0dHIoY2FzdDxOb0Rlc3Ryb3lBdHRyPihBKSk7CiAgICAgY2FzZSBhdHRyOjpOb0R1cGxpY2F0ZToKQEAgLTM4MTYsNiArNDA3NSw4IEBACiAgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlTm9SZXR1cm5BdHRyKGNhc3Q8Tm9SZXR1cm5BdHRyPihBKSk7CiAgICAgY2FzZSBhdHRyOjpOb1Nhbml0aXplOgogICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZU5vU2FuaXRpemVBdHRyKGNhc3Q8Tm9TYW5pdGl6ZUF0dHI+KEEpKTsKKyAgICBjYXNlIGF0dHI6Ok5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nOgorICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZU5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0cihjYXN0PE5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0cj4oQSkpOwogICAgIGNhc2UgYXR0cjo6Tm9TcGxpdFN0YWNrOgogICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZU5vU3BsaXRTdGFja0F0dHIoY2FzdDxOb1NwbGl0U3RhY2tBdHRyPihBKSk7CiAgICAgY2FzZSBhdHRyOjpOb1N0YWNrUHJvdGVjdG9yOgpAQCAtMzg0MCw2ICs0MTAxLDE4IEBACiAgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlT01QUmVmZXJlbmNlZFZhckF0dHIoY2FzdDxPTVBSZWZlcmVuY2VkVmFyQXR0cj4oQSkpOwogICAgIGNhc2UgYXR0cjo6T01QVGhyZWFkUHJpdmF0ZURlY2w6CiAgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlT01QVGhyZWFkUHJpdmF0ZURlY2xBdHRyKGNhc3Q8T01QVGhyZWFkUHJpdmF0ZURlY2xBdHRyPihBKSk7CisgICAgY2FzZSBhdHRyOjpPU0NvbnN1bWVkOgorICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZU9TQ29uc3VtZWRBdHRyKGNhc3Q8T1NDb25zdW1lZEF0dHI+KEEpKTsKKyAgICBjYXNlIGF0dHI6Ok9TQ29uc3VtZXNUaGlzOgorICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZU9TQ29uc3VtZXNUaGlzQXR0cihjYXN0PE9TQ29uc3VtZXNUaGlzQXR0cj4oQSkpOworICAgIGNhc2UgYXR0cjo6T1NSZXR1cm5zTm90UmV0YWluZWQ6CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlT1NSZXR1cm5zTm90UmV0YWluZWRBdHRyKGNhc3Q8T1NSZXR1cm5zTm90UmV0YWluZWRBdHRyPihBKSk7CisgICAgY2FzZSBhdHRyOjpPU1JldHVybnNSZXRhaW5lZDoKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VPU1JldHVybnNSZXRhaW5lZEF0dHIoY2FzdDxPU1JldHVybnNSZXRhaW5lZEF0dHI+KEEpKTsKKyAgICBjYXNlIGF0dHI6Ok9TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvOgorICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZU9TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvQXR0cihjYXN0PE9TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvQXR0cj4oQSkpOworICAgIGNhc2UgYXR0cjo6T1NSZXR1cm5zUmV0YWluZWRPblplcm86CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlT1NSZXR1cm5zUmV0YWluZWRPblplcm9BdHRyKGNhc3Q8T1NSZXR1cm5zUmV0YWluZWRPblplcm9BdHRyPihBKSk7CiAgICAgY2FzZSBhdHRyOjpPYmpDQm94YWJsZToKICAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VPYmpDQm94YWJsZUF0dHIoY2FzdDxPYmpDQm94YWJsZUF0dHI+KEEpKTsKICAgICBjYXNlIGF0dHI6Ok9iakNCcmlkZ2U6CkBAIC0zODU0LDYgKzQxMjcsOCBAQAogICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZU9iakNFeGNlcHRpb25BdHRyKGNhc3Q8T2JqQ0V4Y2VwdGlvbkF0dHI+KEEpKTsKICAgICBjYXNlIGF0dHI6Ok9iakNFeHBsaWNpdFByb3RvY29sSW1wbDoKICAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VPYmpDRXhwbGljaXRQcm90b2NvbEltcGxBdHRyKGNhc3Q8T2JqQ0V4cGxpY2l0UHJvdG9jb2xJbXBsQXR0cj4oQSkpOworICAgIGNhc2UgYXR0cjo6T2JqQ0V4dGVybmFsbHlSZXRhaW5lZDoKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VPYmpDRXh0ZXJuYWxseVJldGFpbmVkQXR0cihjYXN0PE9iakNFeHRlcm5hbGx5UmV0YWluZWRBdHRyPihBKSk7CiAgICAgY2FzZSBhdHRyOjpPYmpDR0M6CiAgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlT2JqQ0dDQXR0cihjYXN0PE9iakNHQ0F0dHI+KEEpKTsKICAgICBjYXNlIGF0dHI6Ok9iakNJbmRlcGVuZGVudENsYXNzOgpAQCAtMzg2Niw2ICs0MTQxLDggQEAKICAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VPYmpDTWV0aG9kRmFtaWx5QXR0cihjYXN0PE9iakNNZXRob2RGYW1pbHlBdHRyPihBKSk7CiAgICAgY2FzZSBhdHRyOjpPYmpDTlNPYmplY3Q6CiAgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlT2JqQ05TT2JqZWN0QXR0cihjYXN0PE9iakNOU09iamVjdEF0dHI+KEEpKTsKKyAgICBjYXNlIGF0dHI6Ok9iakNOb25MYXp5Q2xhc3M6CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlT2JqQ05vbkxhenlDbGFzc0F0dHIoY2FzdDxPYmpDTm9uTGF6eUNsYXNzQXR0cj4oQSkpOwogICAgIGNhc2UgYXR0cjo6T2JqQ093bmVyc2hpcDoKICAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VPYmpDT3duZXJzaGlwQXR0cihjYXN0PE9iakNPd25lcnNoaXBBdHRyPihBKSk7CiAgICAgY2FzZSBhdHRyOjpPYmpDUHJlY2lzZUxpZmV0aW1lOgpAQCAtMzk4MCw2ICs0MjU3LDggQEAKICAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VTZXRUeXBlc3RhdGVBdHRyKGNhc3Q8U2V0VHlwZXN0YXRlQXR0cj4oQSkpOwogICAgIGNhc2UgYXR0cjo6U2hhcmVkVHJ5bG9ja0Z1bmN0aW9uOgogICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZVNoYXJlZFRyeWxvY2tGdW5jdGlvbkF0dHIoY2FzdDxTaGFyZWRUcnlsb2NrRnVuY3Rpb25BdHRyPihBKSk7CisgICAgY2FzZSBhdHRyOjpTcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmc6CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0cihjYXN0PFNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHI+KEEpKTsKICAgICBjYXNlIGF0dHI6OlN0ZENhbGw6CiAgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlU3RkQ2FsbEF0dHIoY2FzdDxTdGRDYWxsQXR0cj4oQSkpOwogICAgIGNhc2UgYXR0cjo6U3VwcHJlc3M6CkBAIC00MDI0LDYgKzQzMDMsOCBAQAogICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZVVQdHJBdHRyKGNhc3Q8VVB0ckF0dHI+KEEpKTsKICAgICBjYXNlIGF0dHI6OlVuYXZhaWxhYmxlOgogICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZVVuYXZhaWxhYmxlQXR0cihjYXN0PFVuYXZhaWxhYmxlQXR0cj4oQSkpOworICAgIGNhc2UgYXR0cjo6VW5pbml0aWFsaXplZDoKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VVbmluaXRpYWxpemVkQXR0cihjYXN0PFVuaW5pdGlhbGl6ZWRBdHRyPihBKSk7CiAgICAgY2FzZSBhdHRyOjpVbnVzZWQ6CiAgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLlRyYXZlcnNlVW51c2VkQXR0cihjYXN0PFVudXNlZEF0dHI+KEEpKTsKICAgICBjYXNlIGF0dHI6OlVzZWQ6CkBAIC00MDQ4LDYgKzQzMjksMTAgQEAKICAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VXZWFrSW1wb3J0QXR0cihjYXN0PFdlYWtJbXBvcnRBdHRyPihBKSk7CiAgICAgY2FzZSBhdHRyOjpXZWFrUmVmOgogICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZVdlYWtSZWZBdHRyKGNhc3Q8V2Vha1JlZkF0dHI+KEEpKTsKKyAgICBjYXNlIGF0dHI6OldlYkFzc2VtYmx5SW1wb3J0TW9kdWxlOgorICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZVdlYkFzc2VtYmx5SW1wb3J0TW9kdWxlQXR0cihjYXN0PFdlYkFzc2VtYmx5SW1wb3J0TW9kdWxlQXR0cj4oQSkpOworICAgIGNhc2UgYXR0cjo6V2ViQXNzZW1ibHlJbXBvcnROYW1lOgorICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5UcmF2ZXJzZVdlYkFzc2VtYmx5SW1wb3J0TmFtZUF0dHIoY2FzdDxXZWJBc3NlbWJseUltcG9ydE5hbWVBdHRyPihBKSk7CiAgICAgY2FzZSBhdHRyOjpXb3JrR3JvdXBTaXplSGludDoKICAgICAgIHJldHVybiBnZXREZXJpdmVkKCkuVHJhdmVyc2VXb3JrR3JvdXBTaXplSGludEF0dHIoY2FzdDxXb3JrR3JvdXBTaXplSGludEF0dHI+KEEpKTsKICAgICBjYXNlIGF0dHI6Olg4NkZvcmNlQWxpZ25BcmdQb2ludGVyOgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0F0dHJzLmluYyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BdHRycy5pbmMKaW5kZXggYTI4ZGZkOS4uMTQwOWM2OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0F0dHJzLmluYworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQXR0cnMuaW5jCkBAIC05LDYgKzksMzAgQEAKICNpZm5kZWYgTExWTV9DTEFOR19BVFRSX0NMQVNTRVNfSU5DCiAjZGVmaW5lIExMVk1fQ0xBTkdfQVRUUl9DTEFTU0VTX0lOQwogCitjbGFzcyBBQXJjaDY0VmVjdG9yUGNzQXR0ciA6IHB1YmxpYyBJbmhlcml0YWJsZUF0dHIgeworcHVibGljOgorICBzdGF0aWMgQUFyY2g2NFZlY3RvclBjc0F0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgeworICAgIGF1dG8gKkEgPSBuZXcgKEN0eCkgQUFyY2g2NFZlY3RvclBjc0F0dHIoTG9jLCBDdHgsIDApOworICAgIEEtPnNldEltcGxpY2l0KHRydWUpOworICAgIHJldHVybiBBOworICB9CisKKyAgQUFyY2g2NFZlY3RvclBjc0F0dHIoU291cmNlUmFuZ2UgUiwgQVNUQ29udGV4dCAmQ3R4CisgICAgICAgICAgICAgICwgdW5zaWduZWQgU0kKKyAgICAgICAgICAgICApCisgICAgOiBJbmhlcml0YWJsZUF0dHIoYXR0cjo6QUFyY2g2NFZlY3RvclBjcywgUiwgU0ksIGZhbHNlLCBmYWxzZSkKKyAgeworICB9CisKKyAgQUFyY2g2NFZlY3RvclBjc0F0dHIgKmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0OworICB2b2lkIHByaW50UHJldHR5KHJhd19vc3RyZWFtICZPUywKKyAgICAgICAgICAgICAgICAgICBjb25zdCBQcmludGluZ1BvbGljeSAmUG9saWN5KSBjb25zdDsKKyAgY29uc3QgY2hhciAqZ2V0U3BlbGxpbmcoKSBjb25zdDsKKworCisgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgQXR0ciAqQSkgeyByZXR1cm4gQS0+Z2V0S2luZCgpID09IGF0dHI6OkFBcmNoNjRWZWN0b3JQY3M7IH0KK307CisKIGNsYXNzIEFNREdQVUZsYXRXb3JrR3JvdXBTaXplQXR0ciA6IHB1YmxpYyBJbmhlcml0YWJsZUF0dHIgewogdW5zaWduZWQgbWluOwogCkBAIC0xNDEwLDkgKzE0MzQsMTEgQEAKIHVuc2lnbmVkIHJlcGxhY2VtZW50TGVuZ3RoOwogY2hhciAqcmVwbGFjZW1lbnQ7CiAKK2ludCBwcmlvcml0eTsKKwogcHVibGljOgotICBzdGF0aWMgQXZhaWxhYmlsaXR5QXR0ciAqQ3JlYXRlSW1wbGljaXQoQVNUQ29udGV4dCAmQ3R4LCBJZGVudGlmaWVySW5mbyAqIFBsYXRmb3JtLCBWZXJzaW9uVHVwbGUgSW50cm9kdWNlZCwgVmVyc2lvblR1cGxlIERlcHJlY2F0ZWQsIFZlcnNpb25UdXBsZSBPYnNvbGV0ZWQsIGJvb2wgVW5hdmFpbGFibGUsIGxsdm06OlN0cmluZ1JlZiBNZXNzYWdlLCBib29sIFN0cmljdCwgbGx2bTo6U3RyaW5nUmVmIFJlcGxhY2VtZW50LCBTb3VyY2VSYW5nZSBMb2MgPSBTb3VyY2VSYW5nZSgpKSB7Ci0gICAgYXV0byAqQSA9IG5ldyAoQ3R4KSBBdmFpbGFiaWxpdHlBdHRyKExvYywgQ3R4LCBQbGF0Zm9ybSwgSW50cm9kdWNlZCwgRGVwcmVjYXRlZCwgT2Jzb2xldGVkLCBVbmF2YWlsYWJsZSwgTWVzc2FnZSwgU3RyaWN0LCBSZXBsYWNlbWVudCwgMCk7CisgIHN0YXRpYyBBdmFpbGFiaWxpdHlBdHRyICpDcmVhdGVJbXBsaWNpdChBU1RDb250ZXh0ICZDdHgsIElkZW50aWZpZXJJbmZvICogUGxhdGZvcm0sIFZlcnNpb25UdXBsZSBJbnRyb2R1Y2VkLCBWZXJzaW9uVHVwbGUgRGVwcmVjYXRlZCwgVmVyc2lvblR1cGxlIE9ic29sZXRlZCwgYm9vbCBVbmF2YWlsYWJsZSwgbGx2bTo6U3RyaW5nUmVmIE1lc3NhZ2UsIGJvb2wgU3RyaWN0LCBsbHZtOjpTdHJpbmdSZWYgUmVwbGFjZW1lbnQsIGludCBQcmlvcml0eSwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgeworICAgIGF1dG8gKkEgPSBuZXcgKEN0eCkgQXZhaWxhYmlsaXR5QXR0cihMb2MsIEN0eCwgUGxhdGZvcm0sIEludHJvZHVjZWQsIERlcHJlY2F0ZWQsIE9ic29sZXRlZCwgVW5hdmFpbGFibGUsIE1lc3NhZ2UsIFN0cmljdCwgUmVwbGFjZW1lbnQsIFByaW9yaXR5LCAwKTsKICAgICBBLT5zZXRJbXBsaWNpdCh0cnVlKTsKICAgICByZXR1cm4gQTsKICAgfQpAQCAtMTQyNiw2ICsxNDUyLDcgQEAKICAgICAgICAgICAgICAgLCBsbHZtOjpTdHJpbmdSZWYgTWVzc2FnZQogICAgICAgICAgICAgICAsIGJvb2wgU3RyaWN0CiAgICAgICAgICAgICAgICwgbGx2bTo6U3RyaW5nUmVmIFJlcGxhY2VtZW50CisgICAgICAgICAgICAgICwgaW50IFByaW9yaXR5CiAgICAgICAgICAgICAgICwgdW5zaWduZWQgU0kKICAgICAgICAgICAgICApCiAgICAgOiBJbmhlcml0YWJsZUF0dHIoYXR0cjo6QXZhaWxhYmlsaXR5LCBSLCBTSSwgZmFsc2UsIHRydWUpCkBAIC0xNDM3LDYgKzE0NjQsNyBAQAogICAgICAgICAgICAgICAsIG1lc3NhZ2VMZW5ndGgoTWVzc2FnZS5zaXplKCkpLG1lc3NhZ2UobmV3IChDdHgsIDEpIGNoYXJbbWVzc2FnZUxlbmd0aF0pCiAgICAgICAgICAgICAgICwgc3RyaWN0KFN0cmljdCkKICAgICAgICAgICAgICAgLCByZXBsYWNlbWVudExlbmd0aChSZXBsYWNlbWVudC5zaXplKCkpLHJlcGxhY2VtZW50KG5ldyAoQ3R4LCAxKSBjaGFyW3JlcGxhY2VtZW50TGVuZ3RoXSkKKyAgICAgICAgICAgICAgLCBwcmlvcml0eShQcmlvcml0eSkKICAgewogICAgICAgaWYgKCFNZXNzYWdlLmVtcHR5KCkpCiAgICAgICAgIHN0ZDo6bWVtY3B5KG1lc3NhZ2UsIE1lc3NhZ2UuZGF0YSgpLCBtZXNzYWdlTGVuZ3RoKTsKQEAgLTE1MDcsNiArMTUzNSwxMCBAQAogICAgICAgc3RkOjptZW1jcHkodGhpcy0+cmVwbGFjZW1lbnQsIFMuZGF0YSgpLCByZXBsYWNlbWVudExlbmd0aCk7CiAgIH0KIAorICBpbnQgZ2V0UHJpb3JpdHkoKSBjb25zdCB7CisgICAgcmV0dXJuIHByaW9yaXR5OworICB9CisKIHN0YXRpYyBsbHZtOjpTdHJpbmdSZWYgZ2V0UHJldHR5UGxhdGZvcm1OYW1lKGxsdm06OlN0cmluZ1JlZiBQbGF0Zm9ybSkgewogICAgIHJldHVybiBsbHZtOjpTdHJpbmdTd2l0Y2g8bGx2bTo6U3RyaW5nUmVmPihQbGF0Zm9ybSkKICAgICAgICAgICAgICAuQ2FzZSgiYW5kcm9pZCIsICJBbmRyb2lkIikKQEAgLTE1MTgsNiArMTU1MCw3IEBACiAgICAgICAgICAgICAgLkNhc2UoIm1hY29zX2FwcF9leHRlbnNpb24iLCAibWFjT1MgKEFwcCBFeHRlbnNpb24pIikKICAgICAgICAgICAgICAuQ2FzZSgidHZvc19hcHBfZXh0ZW5zaW9uIiwgInR2T1MgKEFwcCBFeHRlbnNpb24pIikKICAgICAgICAgICAgICAuQ2FzZSgid2F0Y2hvc19hcHBfZXh0ZW5zaW9uIiwgIndhdGNoT1MgKEFwcCBFeHRlbnNpb24pIikKKyAgICAgICAgICAgICAuQ2FzZSgic3dpZnQiLCAiU3dpZnQiKQogICAgICAgICAgICAgIC5EZWZhdWx0KGxsdm06OlN0cmluZ1JlZigpKTsKIH0KIHN0YXRpYyBsbHZtOjpTdHJpbmdSZWYgZ2V0UGxhdGZvcm1OYW1lU291cmNlU3BlbGxpbmcobGx2bTo6U3RyaW5nUmVmIFBsYXRmb3JtKSB7CkBAIC0xODU2LDEwICsxODg5LDggQEAKIAogCiAKLSAgICB1bnNpZ25lZCBBY3RpdmVBcmdJbmRleCA9IDA7Ci0KLSAgICBJZGVudGlmaWVySW5mbyAqZ2V0Q3VyQ1BVTmFtZSgpIGNvbnN0IHsKLSAgICAgIHJldHVybiAqKGNwdXNfYmVnaW4oKSArIEFjdGl2ZUFyZ0luZGV4KTsKKyAgICBJZGVudGlmaWVySW5mbyAqZ2V0Q1BVTmFtZSh1bnNpZ25lZCBJbmRleCkgY29uc3QgeworICAgICAgcmV0dXJuICooY3B1c19iZWdpbigpICsgSW5kZXgpOwogICAgIH0KICAgCiAKQEAgLTIxNTcsNiArMjE4OCw1MSBAQAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEF0dHIgKkEpIHsgcmV0dXJuIEEtPmdldEtpbmQoKSA9PSBhdHRyOjpDYWxsYWJsZVdoZW47IH0KIH07CiAKK2NsYXNzIENhbGxiYWNrQXR0ciA6IHB1YmxpYyBJbmhlcml0YWJsZUF0dHIgeworICB1bnNpZ25lZCBlbmNvZGluZ19TaXplOworICBpbnQgKmVuY29kaW5nXzsKKworcHVibGljOgorICBzdGF0aWMgQ2FsbGJhY2tBdHRyICpDcmVhdGVJbXBsaWNpdChBU1RDb250ZXh0ICZDdHgsIGludCAqRW5jb2RpbmcsIHVuc2lnbmVkIEVuY29kaW5nU2l6ZSwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgeworICAgIGF1dG8gKkEgPSBuZXcgKEN0eCkgQ2FsbGJhY2tBdHRyKExvYywgQ3R4LCBFbmNvZGluZywgRW5jb2RpbmdTaXplLCAwKTsKKyAgICBBLT5zZXRJbXBsaWNpdCh0cnVlKTsKKyAgICByZXR1cm4gQTsKKyAgfQorCisgIENhbGxiYWNrQXR0cihTb3VyY2VSYW5nZSBSLCBBU1RDb250ZXh0ICZDdHgKKyAgICAgICAgICAgICAgLCBpbnQgKkVuY29kaW5nLCB1bnNpZ25lZCBFbmNvZGluZ1NpemUKKyAgICAgICAgICAgICAgLCB1bnNpZ25lZCBTSQorICAgICAgICAgICAgICkKKyAgICA6IEluaGVyaXRhYmxlQXR0cihhdHRyOjpDYWxsYmFjaywgUiwgU0ksIGZhbHNlLCBmYWxzZSkKKyAgICAgICAgICAgICAgLCBlbmNvZGluZ19TaXplKEVuY29kaW5nU2l6ZSksIGVuY29kaW5nXyhuZXcgKEN0eCwgMTYpIGludFtlbmNvZGluZ19TaXplXSkKKyAgeworICAgIHN0ZDo6Y29weShFbmNvZGluZywgRW5jb2RpbmcgKyBlbmNvZGluZ19TaXplLCBlbmNvZGluZ18pOworICB9CisKKyAgQ2FsbGJhY2tBdHRyKFNvdXJjZVJhbmdlIFIsIEFTVENvbnRleHQgJkN0eAorICAgICAgICAgICAgICAsIHVuc2lnbmVkIFNJCisgICAgICAgICAgICAgKQorICAgIDogSW5oZXJpdGFibGVBdHRyKGF0dHI6OkNhbGxiYWNrLCBSLCBTSSwgZmFsc2UsIGZhbHNlKQorICAgICAgICAgICAgICAsIGVuY29kaW5nX1NpemUoMCksIGVuY29kaW5nXyhudWxscHRyKQorICB7CisgIH0KKworICBDYWxsYmFja0F0dHIgKmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0OworICB2b2lkIHByaW50UHJldHR5KHJhd19vc3RyZWFtICZPUywKKyAgICAgICAgICAgICAgICAgICBjb25zdCBQcmludGluZ1BvbGljeSAmUG9saWN5KSBjb25zdDsKKyAgY29uc3QgY2hhciAqZ2V0U3BlbGxpbmcoKSBjb25zdDsKKyAgdHlwZWRlZiBpbnQqIGVuY29kaW5nX2l0ZXJhdG9yOworICBlbmNvZGluZ19pdGVyYXRvciBlbmNvZGluZ19iZWdpbigpIGNvbnN0IHsgcmV0dXJuIGVuY29kaW5nXzsgfQorICBlbmNvZGluZ19pdGVyYXRvciBlbmNvZGluZ19lbmQoKSBjb25zdCB7IHJldHVybiBlbmNvZGluZ18gKyBlbmNvZGluZ19TaXplOyB9CisgIHVuc2lnbmVkIGVuY29kaW5nX3NpemUoKSBjb25zdCB7IHJldHVybiBlbmNvZGluZ19TaXplOyB9CisgIGxsdm06Oml0ZXJhdG9yX3JhbmdlPGVuY29kaW5nX2l0ZXJhdG9yPiBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIGxsdm06Om1ha2VfcmFuZ2UoZW5jb2RpbmdfYmVnaW4oKSwgZW5jb2RpbmdfZW5kKCkpOyB9CisKKworCisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBBdHRyICpBKSB7IHJldHVybiBBLT5nZXRLaW5kKCkgPT0gYXR0cjo6Q2FsbGJhY2s7IH0KK307CisKIGNsYXNzIENhcGFiaWxpdHlBdHRyIDogcHVibGljIEluaGVyaXRhYmxlQXR0ciB7CiB1bnNpZ25lZCBuYW1lTGVuZ3RoOwogY2hhciAqbmFtZTsKQEAgLTI2MTYsNiArMjY5MiwzMCBAQAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEF0dHIgKkEpIHsgcmV0dXJuIEEtPmdldEtpbmQoKSA9PSBhdHRyOjpETExFeHBvcnQ7IH0KIH07CiAKK2NsYXNzIERMTEV4cG9ydFN0YXRpY0xvY2FsQXR0ciA6IHB1YmxpYyBJbmhlcml0YWJsZUF0dHIgeworcHVibGljOgorICBzdGF0aWMgRExMRXhwb3J0U3RhdGljTG9jYWxBdHRyICpDcmVhdGVJbXBsaWNpdChBU1RDb250ZXh0ICZDdHgsIFNvdXJjZVJhbmdlIExvYyA9IFNvdXJjZVJhbmdlKCkpIHsKKyAgICBhdXRvICpBID0gbmV3IChDdHgpIERMTEV4cG9ydFN0YXRpY0xvY2FsQXR0cihMb2MsIEN0eCwgMCk7CisgICAgQS0+c2V0SW1wbGljaXQodHJ1ZSk7CisgICAgcmV0dXJuIEE7CisgIH0KKworICBETExFeHBvcnRTdGF0aWNMb2NhbEF0dHIoU291cmNlUmFuZ2UgUiwgQVNUQ29udGV4dCAmQ3R4CisgICAgICAgICAgICAgICwgdW5zaWduZWQgU0kKKyAgICAgICAgICAgICApCisgICAgOiBJbmhlcml0YWJsZUF0dHIoYXR0cjo6RExMRXhwb3J0U3RhdGljTG9jYWwsIFIsIFNJLCBmYWxzZSwgZmFsc2UpCisgIHsKKyAgfQorCisgIERMTEV4cG9ydFN0YXRpY0xvY2FsQXR0ciAqY2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3Q7CisgIHZvaWQgcHJpbnRQcmV0dHkocmF3X29zdHJlYW0gJk9TLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0OworICBjb25zdCBjaGFyICpnZXRTcGVsbGluZygpIGNvbnN0OworCisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBBdHRyICpBKSB7IHJldHVybiBBLT5nZXRLaW5kKCkgPT0gYXR0cjo6RExMRXhwb3J0U3RhdGljTG9jYWw7IH0KK307CisKIGNsYXNzIERMTEltcG9ydEF0dHIgOiBwdWJsaWMgSW5oZXJpdGFibGVBdHRyIHsKIHB1YmxpYzoKICAgc3RhdGljIERMTEltcG9ydEF0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgewpAQCAtMjY0Nyw2ICsyNzQ3LDMwIEBACiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgQXR0ciAqQSkgeyByZXR1cm4gQS0+Z2V0S2luZCgpID09IGF0dHI6OkRMTEltcG9ydDsgfQogfTsKIAorY2xhc3MgRExMSW1wb3J0U3RhdGljTG9jYWxBdHRyIDogcHVibGljIEluaGVyaXRhYmxlQXR0ciB7CitwdWJsaWM6CisgIHN0YXRpYyBETExJbXBvcnRTdGF0aWNMb2NhbEF0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgeworICAgIGF1dG8gKkEgPSBuZXcgKEN0eCkgRExMSW1wb3J0U3RhdGljTG9jYWxBdHRyKExvYywgQ3R4LCAwKTsKKyAgICBBLT5zZXRJbXBsaWNpdCh0cnVlKTsKKyAgICByZXR1cm4gQTsKKyAgfQorCisgIERMTEltcG9ydFN0YXRpY0xvY2FsQXR0cihTb3VyY2VSYW5nZSBSLCBBU1RDb250ZXh0ICZDdHgKKyAgICAgICAgICAgICAgLCB1bnNpZ25lZCBTSQorICAgICAgICAgICAgICkKKyAgICA6IEluaGVyaXRhYmxlQXR0cihhdHRyOjpETExJbXBvcnRTdGF0aWNMb2NhbCwgUiwgU0ksIGZhbHNlLCBmYWxzZSkKKyAgeworICB9CisKKyAgRExMSW1wb3J0U3RhdGljTG9jYWxBdHRyICpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdDsKKyAgdm9pZCBwcmludFByZXR0eShyYXdfb3N0cmVhbSAmT1MsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3Q7CisgIGNvbnN0IGNoYXIgKmdldFNwZWxsaW5nKCkgY29uc3Q7CisKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEF0dHIgKkEpIHsgcmV0dXJuIEEtPmdldEtpbmQoKSA9PSBhdHRyOjpETExJbXBvcnRTdGF0aWNMb2NhbDsgfQorfTsKKwogY2xhc3MgRGVwcmVjYXRlZEF0dHIgOiBwdWJsaWMgSW5oZXJpdGFibGVBdHRyIHsKIHVuc2lnbmVkIG1lc3NhZ2VMZW5ndGg7CiBjaGFyICptZXNzYWdlOwpAQCAtMzQyMCw2ICszNTQ0LDQ2IEBACiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgQXR0ciAqQSkgeyByZXR1cm4gQS0+Z2V0S2luZCgpID09IGF0dHI6OkZvcm1hdEFyZzsgfQogfTsKIAorY2xhc3MgRm9ydGlmeVN0ZExpYkF0dHIgOiBwdWJsaWMgSW5oZXJpdGFibGVBdHRyIHsKK2ludCB0eXBlOworCitpbnQgZmxhZzsKKworcHVibGljOgorICBzdGF0aWMgRm9ydGlmeVN0ZExpYkF0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgaW50IFR5cGUsIGludCBGbGFnLCBTb3VyY2VSYW5nZSBMb2MgPSBTb3VyY2VSYW5nZSgpKSB7CisgICAgYXV0byAqQSA9IG5ldyAoQ3R4KSBGb3J0aWZ5U3RkTGliQXR0cihMb2MsIEN0eCwgVHlwZSwgRmxhZywgMCk7CisgICAgQS0+c2V0SW1wbGljaXQodHJ1ZSk7CisgICAgcmV0dXJuIEE7CisgIH0KKworICBGb3J0aWZ5U3RkTGliQXR0cihTb3VyY2VSYW5nZSBSLCBBU1RDb250ZXh0ICZDdHgKKyAgICAgICAgICAgICAgLCBpbnQgVHlwZQorICAgICAgICAgICAgICAsIGludCBGbGFnCisgICAgICAgICAgICAgICwgdW5zaWduZWQgU0kKKyAgICAgICAgICAgICApCisgICAgOiBJbmhlcml0YWJsZUF0dHIoYXR0cjo6Rm9ydGlmeVN0ZExpYiwgUiwgU0ksIGZhbHNlLCBmYWxzZSkKKyAgICAgICAgICAgICAgLCB0eXBlKFR5cGUpCisgICAgICAgICAgICAgICwgZmxhZyhGbGFnKQorICB7CisgIH0KKworICBGb3J0aWZ5U3RkTGliQXR0ciAqY2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3Q7CisgIHZvaWQgcHJpbnRQcmV0dHkocmF3X29zdHJlYW0gJk9TLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0OworICBjb25zdCBjaGFyICpnZXRTcGVsbGluZygpIGNvbnN0OworICBpbnQgZ2V0VHlwZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gdHlwZTsKKyAgfQorCisgIGludCBnZXRGbGFnKCkgY29uc3QgeworICAgIHJldHVybiBmbGFnOworICB9CisKKworCisgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgQXR0ciAqQSkgeyByZXR1cm4gQS0+Z2V0S2luZCgpID09IGF0dHI6OkZvcnRpZnlTdGRMaWI7IH0KK307CisKIGNsYXNzIEdOVUlubGluZUF0dHIgOiBwdWJsaWMgSW5oZXJpdGFibGVBdHRyIHsKIHB1YmxpYzoKICAgc3RhdGljIEdOVUlubGluZUF0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgewpAQCAtMzk1NCw2ICs0MTE4LDggQEAKICAgICBVbnJvbGxDb3VudCwKICAgICBVbnJvbGxBbmRKYW0sCiAgICAgVW5yb2xsQW5kSmFtQ291bnQsCisgICAgUGlwZWxpbmVEaXNhYmxlZCwKKyAgICBQaXBlbGluZUluaXRpYXRpb25JbnRlcnZhbCwKICAgICBEaXN0cmlidXRlCiAgIH07CiBwcml2YXRlOgpAQCAtNDAyOCw2ICs0MTk0LDggQEAKICAgICAgIC5DYXNlKCJ1bnJvbGxfY291bnQiLCBMb29wSGludEF0dHI6OlVucm9sbENvdW50KQogICAgICAgLkNhc2UoInVucm9sbF9hbmRfamFtIiwgTG9vcEhpbnRBdHRyOjpVbnJvbGxBbmRKYW0pCiAgICAgICAuQ2FzZSgidW5yb2xsX2FuZF9qYW1fY291bnQiLCBMb29wSGludEF0dHI6OlVucm9sbEFuZEphbUNvdW50KQorICAgICAgLkNhc2UoInBpcGVsaW5lIiwgTG9vcEhpbnRBdHRyOjpQaXBlbGluZURpc2FibGVkKQorICAgICAgLkNhc2UoInBpcGVsaW5lX2luaXRpYXRpb25faW50ZXJ2YWwiLCBMb29wSGludEF0dHI6OlBpcGVsaW5lSW5pdGlhdGlvbkludGVydmFsKQogICAgICAgLkNhc2UoImRpc3RyaWJ1dGUiLCBMb29wSGludEF0dHI6OkRpc3RyaWJ1dGUpCiAgICAgICAuRGVmYXVsdChPcHRpb25hbDxPcHRpb25UeXBlPigpKTsKICAgICBpZiAoUikgewpAQCAtNDA0Nyw2ICs0MjE1LDggQEAKICAgICBjYXNlIExvb3BIaW50QXR0cjo6VW5yb2xsQ291bnQ6IHJldHVybiAidW5yb2xsX2NvdW50IjsKICAgICBjYXNlIExvb3BIaW50QXR0cjo6VW5yb2xsQW5kSmFtOiByZXR1cm4gInVucm9sbF9hbmRfamFtIjsKICAgICBjYXNlIExvb3BIaW50QXR0cjo6VW5yb2xsQW5kSmFtQ291bnQ6IHJldHVybiAidW5yb2xsX2FuZF9qYW1fY291bnQiOworICAgIGNhc2UgTG9vcEhpbnRBdHRyOjpQaXBlbGluZURpc2FibGVkOiByZXR1cm4gInBpcGVsaW5lIjsKKyAgICBjYXNlIExvb3BIaW50QXR0cjo6UGlwZWxpbmVJbml0aWF0aW9uSW50ZXJ2YWw6IHJldHVybiAicGlwZWxpbmVfaW5pdGlhdGlvbl9pbnRlcnZhbCI7CiAgICAgY2FzZSBMb29wSGludEF0dHI6OkRpc3RyaWJ1dGU6IHJldHVybiAiZGlzdHJpYnV0ZSI7CiAgICAgfQogICAgIGxsdm1fdW5yZWFjaGFibGUoIk5vIGVudW1lcmF0b3Igd2l0aCB0aGF0IHZhbHVlIik7CkBAIC00MDk1LDYgKzQyNjUsOCBAQAogICAgIGNhc2UgVW5yb2xsQ291bnQ6IHJldHVybiAidW5yb2xsX2NvdW50IjsKICAgICBjYXNlIFVucm9sbEFuZEphbTogcmV0dXJuICJ1bnJvbGxfYW5kX2phbSI7CiAgICAgY2FzZSBVbnJvbGxBbmRKYW1Db3VudDogcmV0dXJuICJ1bnJvbGxfYW5kX2phbV9jb3VudCI7CisgICAgY2FzZSBQaXBlbGluZURpc2FibGVkOiByZXR1cm4gInBpcGVsaW5lIjsKKyAgICBjYXNlIFBpcGVsaW5lSW5pdGlhdGlvbkludGVydmFsOiByZXR1cm4gInBpcGVsaW5lX2luaXRpYXRpb25faW50ZXJ2YWwiOwogICAgIGNhc2UgRGlzdHJpYnV0ZTogcmV0dXJuICJkaXN0cmlidXRlIjsKICAgICB9CiAgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5oYW5kbGVkIExvb3BIaW50IG9wdGlvbi4iKTsKQEAgLTQ5NTIsNiArNTEyNCwzMCBAQAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEF0dHIgKkEpIHsgcmV0dXJuIEEtPmdldEtpbmQoKSA9PSBhdHRyOjpOb0RlYnVnOyB9CiB9OwogCitjbGFzcyBOb0RlcmVmQXR0ciA6IHB1YmxpYyBUeXBlQXR0ciB7CitwdWJsaWM6CisgIHN0YXRpYyBOb0RlcmVmQXR0ciAqQ3JlYXRlSW1wbGljaXQoQVNUQ29udGV4dCAmQ3R4LCBTb3VyY2VSYW5nZSBMb2MgPSBTb3VyY2VSYW5nZSgpKSB7CisgICAgYXV0byAqQSA9IG5ldyAoQ3R4KSBOb0RlcmVmQXR0cihMb2MsIEN0eCwgMCk7CisgICAgQS0+c2V0SW1wbGljaXQodHJ1ZSk7CisgICAgcmV0dXJuIEE7CisgIH0KKworICBOb0RlcmVmQXR0cihTb3VyY2VSYW5nZSBSLCBBU1RDb250ZXh0ICZDdHgKKyAgICAgICAgICAgICAgLCB1bnNpZ25lZCBTSQorICAgICAgICAgICAgICkKKyAgICA6IFR5cGVBdHRyKGF0dHI6Ok5vRGVyZWYsIFIsIFNJLCBmYWxzZSkKKyAgeworICB9CisKKyAgTm9EZXJlZkF0dHIgKmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0OworICB2b2lkIHByaW50UHJldHR5KHJhd19vc3RyZWFtICZPUywKKyAgICAgICAgICAgICAgICAgICBjb25zdCBQcmludGluZ1BvbGljeSAmUG9saWN5KSBjb25zdDsKKyAgY29uc3QgY2hhciAqZ2V0U3BlbGxpbmcoKSBjb25zdDsKKworCisgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgQXR0ciAqQSkgeyByZXR1cm4gQS0+Z2V0S2luZCgpID09IGF0dHI6Ok5vRGVyZWY7IH0KK307CisKIGNsYXNzIE5vRGVzdHJveUF0dHIgOiBwdWJsaWMgSW5oZXJpdGFibGVBdHRyIHsKIHB1YmxpYzoKICAgc3RhdGljIE5vRGVzdHJveUF0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgewpAQCAtNTIwNyw2ICs1NDAzLDMwIEBACiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgQXR0ciAqQSkgeyByZXR1cm4gQS0+Z2V0S2luZCgpID09IGF0dHI6Ok5vU2FuaXRpemU7IH0KIH07CiAKK2NsYXNzIE5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0ciA6IHB1YmxpYyBJbmhlcml0YWJsZUF0dHIgeworcHVibGljOgorICBzdGF0aWMgTm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBdHRyICpDcmVhdGVJbXBsaWNpdChBU1RDb250ZXh0ICZDdHgsIFNvdXJjZVJhbmdlIExvYyA9IFNvdXJjZVJhbmdlKCkpIHsKKyAgICBhdXRvICpBID0gbmV3IChDdHgpIE5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0cihMb2MsIEN0eCwgMCk7CisgICAgQS0+c2V0SW1wbGljaXQodHJ1ZSk7CisgICAgcmV0dXJuIEE7CisgIH0KKworICBOb1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHIoU291cmNlUmFuZ2UgUiwgQVNUQ29udGV4dCAmQ3R4CisgICAgICAgICAgICAgICwgdW5zaWduZWQgU0kKKyAgICAgICAgICAgICApCisgICAgOiBJbmhlcml0YWJsZUF0dHIoYXR0cjo6Tm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmcsIFIsIFNJLCBmYWxzZSwgZmFsc2UpCisgIHsKKyAgfQorCisgIE5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0ciAqY2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3Q7CisgIHZvaWQgcHJpbnRQcmV0dHkocmF3X29zdHJlYW0gJk9TLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0OworICBjb25zdCBjaGFyICpnZXRTcGVsbGluZygpIGNvbnN0OworCisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBBdHRyICpBKSB7IHJldHVybiBBLT5nZXRLaW5kKCkgPT0gYXR0cjo6Tm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmc7IH0KK307CisKIGNsYXNzIE5vU3BsaXRTdGFja0F0dHIgOiBwdWJsaWMgSW5oZXJpdGFibGVBdHRyIHsKIHB1YmxpYzoKICAgc3RhdGljIE5vU3BsaXRTdGFja0F0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgewpAQCAtNTc3Niw2ICs1OTk2LDE1MCBAQAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEF0dHIgKkEpIHsgcmV0dXJuIEEtPmdldEtpbmQoKSA9PSBhdHRyOjpPTVBUaHJlYWRQcml2YXRlRGVjbDsgfQogfTsKIAorY2xhc3MgT1NDb25zdW1lZEF0dHIgOiBwdWJsaWMgSW5oZXJpdGFibGVQYXJhbUF0dHIgeworcHVibGljOgorICBzdGF0aWMgT1NDb25zdW1lZEF0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgeworICAgIGF1dG8gKkEgPSBuZXcgKEN0eCkgT1NDb25zdW1lZEF0dHIoTG9jLCBDdHgsIDApOworICAgIEEtPnNldEltcGxpY2l0KHRydWUpOworICAgIHJldHVybiBBOworICB9CisKKyAgT1NDb25zdW1lZEF0dHIoU291cmNlUmFuZ2UgUiwgQVNUQ29udGV4dCAmQ3R4CisgICAgICAgICAgICAgICwgdW5zaWduZWQgU0kKKyAgICAgICAgICAgICApCisgICAgOiBJbmhlcml0YWJsZVBhcmFtQXR0cihhdHRyOjpPU0NvbnN1bWVkLCBSLCBTSSwgZmFsc2UsIGZhbHNlKQorICB7CisgIH0KKworICBPU0NvbnN1bWVkQXR0ciAqY2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3Q7CisgIHZvaWQgcHJpbnRQcmV0dHkocmF3X29zdHJlYW0gJk9TLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0OworICBjb25zdCBjaGFyICpnZXRTcGVsbGluZygpIGNvbnN0OworCisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBBdHRyICpBKSB7IHJldHVybiBBLT5nZXRLaW5kKCkgPT0gYXR0cjo6T1NDb25zdW1lZDsgfQorfTsKKworY2xhc3MgT1NDb25zdW1lc1RoaXNBdHRyIDogcHVibGljIEluaGVyaXRhYmxlQXR0ciB7CitwdWJsaWM6CisgIHN0YXRpYyBPU0NvbnN1bWVzVGhpc0F0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgeworICAgIGF1dG8gKkEgPSBuZXcgKEN0eCkgT1NDb25zdW1lc1RoaXNBdHRyKExvYywgQ3R4LCAwKTsKKyAgICBBLT5zZXRJbXBsaWNpdCh0cnVlKTsKKyAgICByZXR1cm4gQTsKKyAgfQorCisgIE9TQ29uc3VtZXNUaGlzQXR0cihTb3VyY2VSYW5nZSBSLCBBU1RDb250ZXh0ICZDdHgKKyAgICAgICAgICAgICAgLCB1bnNpZ25lZCBTSQorICAgICAgICAgICAgICkKKyAgICA6IEluaGVyaXRhYmxlQXR0cihhdHRyOjpPU0NvbnN1bWVzVGhpcywgUiwgU0ksIGZhbHNlLCBmYWxzZSkKKyAgeworICB9CisKKyAgT1NDb25zdW1lc1RoaXNBdHRyICpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdDsKKyAgdm9pZCBwcmludFByZXR0eShyYXdfb3N0cmVhbSAmT1MsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3Q7CisgIGNvbnN0IGNoYXIgKmdldFNwZWxsaW5nKCkgY29uc3Q7CisKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEF0dHIgKkEpIHsgcmV0dXJuIEEtPmdldEtpbmQoKSA9PSBhdHRyOjpPU0NvbnN1bWVzVGhpczsgfQorfTsKKworY2xhc3MgT1NSZXR1cm5zTm90UmV0YWluZWRBdHRyIDogcHVibGljIEluaGVyaXRhYmxlQXR0ciB7CitwdWJsaWM6CisgIHN0YXRpYyBPU1JldHVybnNOb3RSZXRhaW5lZEF0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgeworICAgIGF1dG8gKkEgPSBuZXcgKEN0eCkgT1NSZXR1cm5zTm90UmV0YWluZWRBdHRyKExvYywgQ3R4LCAwKTsKKyAgICBBLT5zZXRJbXBsaWNpdCh0cnVlKTsKKyAgICByZXR1cm4gQTsKKyAgfQorCisgIE9TUmV0dXJuc05vdFJldGFpbmVkQXR0cihTb3VyY2VSYW5nZSBSLCBBU1RDb250ZXh0ICZDdHgKKyAgICAgICAgICAgICAgLCB1bnNpZ25lZCBTSQorICAgICAgICAgICAgICkKKyAgICA6IEluaGVyaXRhYmxlQXR0cihhdHRyOjpPU1JldHVybnNOb3RSZXRhaW5lZCwgUiwgU0ksIGZhbHNlLCBmYWxzZSkKKyAgeworICB9CisKKyAgT1NSZXR1cm5zTm90UmV0YWluZWRBdHRyICpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdDsKKyAgdm9pZCBwcmludFByZXR0eShyYXdfb3N0cmVhbSAmT1MsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3Q7CisgIGNvbnN0IGNoYXIgKmdldFNwZWxsaW5nKCkgY29uc3Q7CisKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEF0dHIgKkEpIHsgcmV0dXJuIEEtPmdldEtpbmQoKSA9PSBhdHRyOjpPU1JldHVybnNOb3RSZXRhaW5lZDsgfQorfTsKKworY2xhc3MgT1NSZXR1cm5zUmV0YWluZWRBdHRyIDogcHVibGljIEluaGVyaXRhYmxlQXR0ciB7CitwdWJsaWM6CisgIHN0YXRpYyBPU1JldHVybnNSZXRhaW5lZEF0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgeworICAgIGF1dG8gKkEgPSBuZXcgKEN0eCkgT1NSZXR1cm5zUmV0YWluZWRBdHRyKExvYywgQ3R4LCAwKTsKKyAgICBBLT5zZXRJbXBsaWNpdCh0cnVlKTsKKyAgICByZXR1cm4gQTsKKyAgfQorCisgIE9TUmV0dXJuc1JldGFpbmVkQXR0cihTb3VyY2VSYW5nZSBSLCBBU1RDb250ZXh0ICZDdHgKKyAgICAgICAgICAgICAgLCB1bnNpZ25lZCBTSQorICAgICAgICAgICAgICkKKyAgICA6IEluaGVyaXRhYmxlQXR0cihhdHRyOjpPU1JldHVybnNSZXRhaW5lZCwgUiwgU0ksIGZhbHNlLCBmYWxzZSkKKyAgeworICB9CisKKyAgT1NSZXR1cm5zUmV0YWluZWRBdHRyICpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdDsKKyAgdm9pZCBwcmludFByZXR0eShyYXdfb3N0cmVhbSAmT1MsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3Q7CisgIGNvbnN0IGNoYXIgKmdldFNwZWxsaW5nKCkgY29uc3Q7CisKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEF0dHIgKkEpIHsgcmV0dXJuIEEtPmdldEtpbmQoKSA9PSBhdHRyOjpPU1JldHVybnNSZXRhaW5lZDsgfQorfTsKKworY2xhc3MgT1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm9BdHRyIDogcHVibGljIEluaGVyaXRhYmxlQXR0ciB7CitwdWJsaWM6CisgIHN0YXRpYyBPU1JldHVybnNSZXRhaW5lZE9uTm9uWmVyb0F0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgeworICAgIGF1dG8gKkEgPSBuZXcgKEN0eCkgT1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm9BdHRyKExvYywgQ3R4LCAwKTsKKyAgICBBLT5zZXRJbXBsaWNpdCh0cnVlKTsKKyAgICByZXR1cm4gQTsKKyAgfQorCisgIE9TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvQXR0cihTb3VyY2VSYW5nZSBSLCBBU1RDb250ZXh0ICZDdHgKKyAgICAgICAgICAgICAgLCB1bnNpZ25lZCBTSQorICAgICAgICAgICAgICkKKyAgICA6IEluaGVyaXRhYmxlQXR0cihhdHRyOjpPU1JldHVybnNSZXRhaW5lZE9uTm9uWmVybywgUiwgU0ksIGZhbHNlLCBmYWxzZSkKKyAgeworICB9CisKKyAgT1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm9BdHRyICpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdDsKKyAgdm9pZCBwcmludFByZXR0eShyYXdfb3N0cmVhbSAmT1MsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3Q7CisgIGNvbnN0IGNoYXIgKmdldFNwZWxsaW5nKCkgY29uc3Q7CisKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEF0dHIgKkEpIHsgcmV0dXJuIEEtPmdldEtpbmQoKSA9PSBhdHRyOjpPU1JldHVybnNSZXRhaW5lZE9uTm9uWmVybzsgfQorfTsKKworY2xhc3MgT1NSZXR1cm5zUmV0YWluZWRPblplcm9BdHRyIDogcHVibGljIEluaGVyaXRhYmxlQXR0ciB7CitwdWJsaWM6CisgIHN0YXRpYyBPU1JldHVybnNSZXRhaW5lZE9uWmVyb0F0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgeworICAgIGF1dG8gKkEgPSBuZXcgKEN0eCkgT1NSZXR1cm5zUmV0YWluZWRPblplcm9BdHRyKExvYywgQ3R4LCAwKTsKKyAgICBBLT5zZXRJbXBsaWNpdCh0cnVlKTsKKyAgICByZXR1cm4gQTsKKyAgfQorCisgIE9TUmV0dXJuc1JldGFpbmVkT25aZXJvQXR0cihTb3VyY2VSYW5nZSBSLCBBU1RDb250ZXh0ICZDdHgKKyAgICAgICAgICAgICAgLCB1bnNpZ25lZCBTSQorICAgICAgICAgICAgICkKKyAgICA6IEluaGVyaXRhYmxlQXR0cihhdHRyOjpPU1JldHVybnNSZXRhaW5lZE9uWmVybywgUiwgU0ksIGZhbHNlLCBmYWxzZSkKKyAgeworICB9CisKKyAgT1NSZXR1cm5zUmV0YWluZWRPblplcm9BdHRyICpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdDsKKyAgdm9pZCBwcmludFByZXR0eShyYXdfb3N0cmVhbSAmT1MsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3Q7CisgIGNvbnN0IGNoYXIgKmdldFNwZWxsaW5nKCkgY29uc3Q7CisKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEF0dHIgKkEpIHsgcmV0dXJuIEEtPmdldEtpbmQoKSA9PSBhdHRyOjpPU1JldHVybnNSZXRhaW5lZE9uWmVybzsgfQorfTsKKwogY2xhc3MgT2JqQ0JveGFibGVBdHRyIDogcHVibGljIEF0dHIgewogcHVibGljOgogICBzdGF0aWMgT2JqQ0JveGFibGVBdHRyICpDcmVhdGVJbXBsaWNpdChBU1RDb250ZXh0ICZDdHgsIFNvdXJjZVJhbmdlIExvYyA9IFNvdXJjZVJhbmdlKCkpIHsKQEAgLTU5ODQsNiArNjM0OCwzMCBAQAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEF0dHIgKkEpIHsgcmV0dXJuIEEtPmdldEtpbmQoKSA9PSBhdHRyOjpPYmpDRXhwbGljaXRQcm90b2NvbEltcGw7IH0KIH07CiAKK2NsYXNzIE9iakNFeHRlcm5hbGx5UmV0YWluZWRBdHRyIDogcHVibGljIEluaGVyaXRhYmxlQXR0ciB7CitwdWJsaWM6CisgIHN0YXRpYyBPYmpDRXh0ZXJuYWxseVJldGFpbmVkQXR0ciAqQ3JlYXRlSW1wbGljaXQoQVNUQ29udGV4dCAmQ3R4LCBTb3VyY2VSYW5nZSBMb2MgPSBTb3VyY2VSYW5nZSgpKSB7CisgICAgYXV0byAqQSA9IG5ldyAoQ3R4KSBPYmpDRXh0ZXJuYWxseVJldGFpbmVkQXR0cihMb2MsIEN0eCwgMCk7CisgICAgQS0+c2V0SW1wbGljaXQodHJ1ZSk7CisgICAgcmV0dXJuIEE7CisgIH0KKworICBPYmpDRXh0ZXJuYWxseVJldGFpbmVkQXR0cihTb3VyY2VSYW5nZSBSLCBBU1RDb250ZXh0ICZDdHgKKyAgICAgICAgICAgICAgLCB1bnNpZ25lZCBTSQorICAgICAgICAgICAgICkKKyAgICA6IEluaGVyaXRhYmxlQXR0cihhdHRyOjpPYmpDRXh0ZXJuYWxseVJldGFpbmVkLCBSLCBTSSwgZmFsc2UsIGZhbHNlKQorICB7CisgIH0KKworICBPYmpDRXh0ZXJuYWxseVJldGFpbmVkQXR0ciAqY2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3Q7CisgIHZvaWQgcHJpbnRQcmV0dHkocmF3X29zdHJlYW0gJk9TLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0OworICBjb25zdCBjaGFyICpnZXRTcGVsbGluZygpIGNvbnN0OworCisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBBdHRyICpBKSB7IHJldHVybiBBLT5nZXRLaW5kKCkgPT0gYXR0cjo6T2JqQ0V4dGVybmFsbHlSZXRhaW5lZDsgfQorfTsKKwogY2xhc3MgT2JqQ0dDQXR0ciA6IHB1YmxpYyBUeXBlQXR0ciB7CiBJZGVudGlmaWVySW5mbyAqIGtpbmQ7CiAKQEAgLTYxODEsNiArNjU2OSwzMCBAQAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEF0dHIgKkEpIHsgcmV0dXJuIEEtPmdldEtpbmQoKSA9PSBhdHRyOjpPYmpDTlNPYmplY3Q7IH0KIH07CiAKK2NsYXNzIE9iakNOb25MYXp5Q2xhc3NBdHRyIDogcHVibGljIEF0dHIgeworcHVibGljOgorICBzdGF0aWMgT2JqQ05vbkxhenlDbGFzc0F0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgeworICAgIGF1dG8gKkEgPSBuZXcgKEN0eCkgT2JqQ05vbkxhenlDbGFzc0F0dHIoTG9jLCBDdHgsIDApOworICAgIEEtPnNldEltcGxpY2l0KHRydWUpOworICAgIHJldHVybiBBOworICB9CisKKyAgT2JqQ05vbkxhenlDbGFzc0F0dHIoU291cmNlUmFuZ2UgUiwgQVNUQ29udGV4dCAmQ3R4CisgICAgICAgICAgICAgICwgdW5zaWduZWQgU0kKKyAgICAgICAgICAgICApCisgICAgOiBBdHRyKGF0dHI6Ok9iakNOb25MYXp5Q2xhc3MsIFIsIFNJLCBmYWxzZSkKKyAgeworICB9CisKKyAgT2JqQ05vbkxhenlDbGFzc0F0dHIgKmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0OworICB2b2lkIHByaW50UHJldHR5KHJhd19vc3RyZWFtICZPUywKKyAgICAgICAgICAgICAgICAgICBjb25zdCBQcmludGluZ1BvbGljeSAmUG9saWN5KSBjb25zdDsKKyAgY29uc3QgY2hhciAqZ2V0U3BlbGxpbmcoKSBjb25zdDsKKworCisgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgQXR0ciAqQSkgeyByZXR1cm4gQS0+Z2V0S2luZCgpID09IGF0dHI6Ok9iakNOb25MYXp5Q2xhc3M7IH0KK307CisKIGNsYXNzIE9iakNPd25lcnNoaXBBdHRyIDogcHVibGljIEluaGVyaXRhYmxlQXR0ciB7CiBJZGVudGlmaWVySW5mbyAqIGtpbmQ7CiAKQEAgLTgyMDIsNiArODYxNCwzMCBAQAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEF0dHIgKkEpIHsgcmV0dXJuIEEtPmdldEtpbmQoKSA9PSBhdHRyOjpTaGFyZWRUcnlsb2NrRnVuY3Rpb247IH0KIH07CiAKK2NsYXNzIFNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHIgOiBwdWJsaWMgSW5oZXJpdGFibGVBdHRyIHsKK3B1YmxpYzoKKyAgc3RhdGljIFNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgeworICAgIGF1dG8gKkEgPSBuZXcgKEN0eCkgU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0cihMb2MsIEN0eCwgMCk7CisgICAgQS0+c2V0SW1wbGljaXQodHJ1ZSk7CisgICAgcmV0dXJuIEE7CisgIH0KKworICBTcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBdHRyKFNvdXJjZVJhbmdlIFIsIEFTVENvbnRleHQgJkN0eAorICAgICAgICAgICAgICAsIHVuc2lnbmVkIFNJCisgICAgICAgICAgICAgKQorICAgIDogSW5oZXJpdGFibGVBdHRyKGF0dHI6OlNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZywgUiwgU0ksIGZhbHNlLCBmYWxzZSkKKyAgeworICB9CisKKyAgU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0ciAqY2xvbmUoQVNUQ29udGV4dCAmQykgY29uc3Q7CisgIHZvaWQgcHJpbnRQcmV0dHkocmF3X29zdHJlYW0gJk9TLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0OworICBjb25zdCBjaGFyICpnZXRTcGVsbGluZygpIGNvbnN0OworCisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBBdHRyICpBKSB7IHJldHVybiBBLT5nZXRLaW5kKCkgPT0gYXR0cjo6U3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nOyB9Cit9OworCiBjbGFzcyBTdGRDYWxsQXR0ciA6IHB1YmxpYyBJbmhlcml0YWJsZUF0dHIgewogcHVibGljOgogICBzdGF0aWMgU3RkQ2FsbEF0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgewpAQCAtOTEwNiw2ICs5NTQyLDMwIEBACiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgQXR0ciAqQSkgeyByZXR1cm4gQS0+Z2V0S2luZCgpID09IGF0dHI6OlVuYXZhaWxhYmxlOyB9CiB9OwogCitjbGFzcyBVbmluaXRpYWxpemVkQXR0ciA6IHB1YmxpYyBJbmhlcml0YWJsZUF0dHIgeworcHVibGljOgorICBzdGF0aWMgVW5pbml0aWFsaXplZEF0dHIgKkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkN0eCwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgeworICAgIGF1dG8gKkEgPSBuZXcgKEN0eCkgVW5pbml0aWFsaXplZEF0dHIoTG9jLCBDdHgsIDApOworICAgIEEtPnNldEltcGxpY2l0KHRydWUpOworICAgIHJldHVybiBBOworICB9CisKKyAgVW5pbml0aWFsaXplZEF0dHIoU291cmNlUmFuZ2UgUiwgQVNUQ29udGV4dCAmQ3R4CisgICAgICAgICAgICAgICwgdW5zaWduZWQgU0kKKyAgICAgICAgICAgICApCisgICAgOiBJbmhlcml0YWJsZUF0dHIoYXR0cjo6VW5pbml0aWFsaXplZCwgUiwgU0ksIGZhbHNlLCBmYWxzZSkKKyAgeworICB9CisKKyAgVW5pbml0aWFsaXplZEF0dHIgKmNsb25lKEFTVENvbnRleHQgJkMpIGNvbnN0OworICB2b2lkIHByaW50UHJldHR5KHJhd19vc3RyZWFtICZPUywKKyAgICAgICAgICAgICAgICAgICBjb25zdCBQcmludGluZ1BvbGljeSAmUG9saWN5KSBjb25zdDsKKyAgY29uc3QgY2hhciAqZ2V0U3BlbGxpbmcoKSBjb25zdDsKKworCisgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgQXR0ciAqQSkgeyByZXR1cm4gQS0+Z2V0S2luZCgpID09IGF0dHI6OlVuaW5pdGlhbGl6ZWQ7IH0KK307CisKIGNsYXNzIFVudXNlZEF0dHIgOiBwdWJsaWMgSW5oZXJpdGFibGVBdHRyIHsKIHB1YmxpYzoKICAgZW51bSBTcGVsbGluZyB7CkBAIC05NTIzLDYgKzk5ODMsOTQgQEAKICAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBBdHRyICpBKSB7IHJldHVybiBBLT5nZXRLaW5kKCkgPT0gYXR0cjo6V2Vha1JlZjsgfQogfTsKIAorY2xhc3MgV2ViQXNzZW1ibHlJbXBvcnRNb2R1bGVBdHRyIDogcHVibGljIEluaGVyaXRhYmxlQXR0ciB7Cit1bnNpZ25lZCBpbXBvcnRNb2R1bGVMZW5ndGg7CitjaGFyICppbXBvcnRNb2R1bGU7CisKK3B1YmxpYzoKKyAgc3RhdGljIFdlYkFzc2VtYmx5SW1wb3J0TW9kdWxlQXR0ciAqQ3JlYXRlSW1wbGljaXQoQVNUQ29udGV4dCAmQ3R4LCBsbHZtOjpTdHJpbmdSZWYgSW1wb3J0TW9kdWxlLCBTb3VyY2VSYW5nZSBMb2MgPSBTb3VyY2VSYW5nZSgpKSB7CisgICAgYXV0byAqQSA9IG5ldyAoQ3R4KSBXZWJBc3NlbWJseUltcG9ydE1vZHVsZUF0dHIoTG9jLCBDdHgsIEltcG9ydE1vZHVsZSwgMCk7CisgICAgQS0+c2V0SW1wbGljaXQodHJ1ZSk7CisgICAgcmV0dXJuIEE7CisgIH0KKworICBXZWJBc3NlbWJseUltcG9ydE1vZHVsZUF0dHIoU291cmNlUmFuZ2UgUiwgQVNUQ29udGV4dCAmQ3R4CisgICAgICAgICAgICAgICwgbGx2bTo6U3RyaW5nUmVmIEltcG9ydE1vZHVsZQorICAgICAgICAgICAgICAsIHVuc2lnbmVkIFNJCisgICAgICAgICAgICAgKQorICAgIDogSW5oZXJpdGFibGVBdHRyKGF0dHI6OldlYkFzc2VtYmx5SW1wb3J0TW9kdWxlLCBSLCBTSSwgZmFsc2UsIGZhbHNlKQorICAgICAgICAgICAgICAsIGltcG9ydE1vZHVsZUxlbmd0aChJbXBvcnRNb2R1bGUuc2l6ZSgpKSxpbXBvcnRNb2R1bGUobmV3IChDdHgsIDEpIGNoYXJbaW1wb3J0TW9kdWxlTGVuZ3RoXSkKKyAgeworICAgICAgaWYgKCFJbXBvcnRNb2R1bGUuZW1wdHkoKSkKKyAgICAgICAgc3RkOjptZW1jcHkoaW1wb3J0TW9kdWxlLCBJbXBvcnRNb2R1bGUuZGF0YSgpLCBpbXBvcnRNb2R1bGVMZW5ndGgpOworICB9CisKKyAgV2ViQXNzZW1ibHlJbXBvcnRNb2R1bGVBdHRyICpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdDsKKyAgdm9pZCBwcmludFByZXR0eShyYXdfb3N0cmVhbSAmT1MsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3Q7CisgIGNvbnN0IGNoYXIgKmdldFNwZWxsaW5nKCkgY29uc3Q7CisgIGxsdm06OlN0cmluZ1JlZiBnZXRJbXBvcnRNb2R1bGUoKSBjb25zdCB7CisgICAgcmV0dXJuIGxsdm06OlN0cmluZ1JlZihpbXBvcnRNb2R1bGUsIGltcG9ydE1vZHVsZUxlbmd0aCk7CisgIH0KKyAgdW5zaWduZWQgZ2V0SW1wb3J0TW9kdWxlTGVuZ3RoKCkgY29uc3QgeworICAgIHJldHVybiBpbXBvcnRNb2R1bGVMZW5ndGg7CisgIH0KKyAgdm9pZCBzZXRJbXBvcnRNb2R1bGUoQVNUQ29udGV4dCAmQywgbGx2bTo6U3RyaW5nUmVmIFMpIHsKKyAgICBpbXBvcnRNb2R1bGVMZW5ndGggPSBTLnNpemUoKTsKKyAgICB0aGlzLT5pbXBvcnRNb2R1bGUgPSBuZXcgKEMsIDEpIGNoYXIgW2ltcG9ydE1vZHVsZUxlbmd0aF07CisgICAgaWYgKCFTLmVtcHR5KCkpCisgICAgICBzdGQ6Om1lbWNweSh0aGlzLT5pbXBvcnRNb2R1bGUsIFMuZGF0YSgpLCBpbXBvcnRNb2R1bGVMZW5ndGgpOworICB9CisKKworCisgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgQXR0ciAqQSkgeyByZXR1cm4gQS0+Z2V0S2luZCgpID09IGF0dHI6OldlYkFzc2VtYmx5SW1wb3J0TW9kdWxlOyB9Cit9OworCitjbGFzcyBXZWJBc3NlbWJseUltcG9ydE5hbWVBdHRyIDogcHVibGljIEluaGVyaXRhYmxlQXR0ciB7Cit1bnNpZ25lZCBpbXBvcnROYW1lTGVuZ3RoOworY2hhciAqaW1wb3J0TmFtZTsKKworcHVibGljOgorICBzdGF0aWMgV2ViQXNzZW1ibHlJbXBvcnROYW1lQXR0ciAqQ3JlYXRlSW1wbGljaXQoQVNUQ29udGV4dCAmQ3R4LCBsbHZtOjpTdHJpbmdSZWYgSW1wb3J0TmFtZSwgU291cmNlUmFuZ2UgTG9jID0gU291cmNlUmFuZ2UoKSkgeworICAgIGF1dG8gKkEgPSBuZXcgKEN0eCkgV2ViQXNzZW1ibHlJbXBvcnROYW1lQXR0cihMb2MsIEN0eCwgSW1wb3J0TmFtZSwgMCk7CisgICAgQS0+c2V0SW1wbGljaXQodHJ1ZSk7CisgICAgcmV0dXJuIEE7CisgIH0KKworICBXZWJBc3NlbWJseUltcG9ydE5hbWVBdHRyKFNvdXJjZVJhbmdlIFIsIEFTVENvbnRleHQgJkN0eAorICAgICAgICAgICAgICAsIGxsdm06OlN0cmluZ1JlZiBJbXBvcnROYW1lCisgICAgICAgICAgICAgICwgdW5zaWduZWQgU0kKKyAgICAgICAgICAgICApCisgICAgOiBJbmhlcml0YWJsZUF0dHIoYXR0cjo6V2ViQXNzZW1ibHlJbXBvcnROYW1lLCBSLCBTSSwgZmFsc2UsIGZhbHNlKQorICAgICAgICAgICAgICAsIGltcG9ydE5hbWVMZW5ndGgoSW1wb3J0TmFtZS5zaXplKCkpLGltcG9ydE5hbWUobmV3IChDdHgsIDEpIGNoYXJbaW1wb3J0TmFtZUxlbmd0aF0pCisgIHsKKyAgICAgIGlmICghSW1wb3J0TmFtZS5lbXB0eSgpKQorICAgICAgICBzdGQ6Om1lbWNweShpbXBvcnROYW1lLCBJbXBvcnROYW1lLmRhdGEoKSwgaW1wb3J0TmFtZUxlbmd0aCk7CisgIH0KKworICBXZWJBc3NlbWJseUltcG9ydE5hbWVBdHRyICpjbG9uZShBU1RDb250ZXh0ICZDKSBjb25zdDsKKyAgdm9pZCBwcmludFByZXR0eShyYXdfb3N0cmVhbSAmT1MsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUHJpbnRpbmdQb2xpY3kgJlBvbGljeSkgY29uc3Q7CisgIGNvbnN0IGNoYXIgKmdldFNwZWxsaW5nKCkgY29uc3Q7CisgIGxsdm06OlN0cmluZ1JlZiBnZXRJbXBvcnROYW1lKCkgY29uc3QgeworICAgIHJldHVybiBsbHZtOjpTdHJpbmdSZWYoaW1wb3J0TmFtZSwgaW1wb3J0TmFtZUxlbmd0aCk7CisgIH0KKyAgdW5zaWduZWQgZ2V0SW1wb3J0TmFtZUxlbmd0aCgpIGNvbnN0IHsKKyAgICByZXR1cm4gaW1wb3J0TmFtZUxlbmd0aDsKKyAgfQorICB2b2lkIHNldEltcG9ydE5hbWUoQVNUQ29udGV4dCAmQywgbGx2bTo6U3RyaW5nUmVmIFMpIHsKKyAgICBpbXBvcnROYW1lTGVuZ3RoID0gUy5zaXplKCk7CisgICAgdGhpcy0+aW1wb3J0TmFtZSA9IG5ldyAoQywgMSkgY2hhciBbaW1wb3J0TmFtZUxlbmd0aF07CisgICAgaWYgKCFTLmVtcHR5KCkpCisgICAgICBzdGQ6Om1lbWNweSh0aGlzLT5pbXBvcnROYW1lLCBTLmRhdGEoKSwgaW1wb3J0TmFtZUxlbmd0aCk7CisgIH0KKworCisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBBdHRyICpBKSB7IHJldHVybiBBLT5nZXRLaW5kKCkgPT0gYXR0cjo6V2ViQXNzZW1ibHlJbXBvcnROYW1lOyB9Cit9OworCiBjbGFzcyBXb3JrR3JvdXBTaXplSGludEF0dHIgOiBwdWJsaWMgSW5oZXJpdGFibGVBdHRyIHsKIHVuc2lnbmVkIHhEaW07CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BdmFpbGFiaWxpdHkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9BdmFpbGFiaWxpdHkuaAppbmRleCAyOGYzYzNjLi41MjdmYzRiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQXZhaWxhYmlsaXR5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0F2YWlsYWJpbGl0eS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQXZhaWxhYmlsaXR5LmggLSBDbGFzc2VzIGZvciBhdmFpbGFiaWxpdHkgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQmFzZVN1Ym9iamVjdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0Jhc2VTdWJvYmplY3QuaAppbmRleCAyYjcwMmM3Li4xNTYwMGYwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQmFzZVN1Ym9iamVjdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9CYXNlU3Vib2JqZWN0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQmFzZVN1Ym9iamVjdC5oIC0gQmFzZVN1Ym9iamVjdCBjbGFzcyAtLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE1LDYgKzE0LDcgQEAKICNkZWZpbmUgTExWTV9DTEFOR19BU1RfQkFTRVNVQk9CSkVDVF9ICiAKICNpbmNsdWRlICJjbGFuZy9BU1QvQ2hhclVuaXRzLmgiCisjaW5jbHVkZSAiY2xhbmcvQVNUL0RlY2xDWFguaCIKICNpbmNsdWRlICJsbHZtL0FEVC9EZW5zZU1hcEluZm8uaCIKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvdHlwZV90cmFpdHMuaCIKICNpbmNsdWRlIDxjc3RkaW50PgpAQCAtODAsMTEgKzgwLDYgQEAKICAgfQogfTsKIAotLy8gSXQncyBPSyB0byB0cmVhdCBCYXNlU3Vib2JqZWN0IGFzIGEgUE9EIHR5cGUuCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNQb2RMaWtlPGNsYW5nOjpCYXNlU3Vib2JqZWN0PiB7Ci0gIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKLX07Ci0KIH0gLy8gbmFtZXNwYWNlIGxsdm0KIAogI2VuZGlmIC8vIExMVk1fQ0xBTkdfQVNUX0JBU0VTVUJPQkpFQ1RfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0J1aWx0aW5UeXBlcy5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQnVpbHRpblR5cGVzLmRlZgppbmRleCA0MDBlZmNiLi43NGE0NWVlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQnVpbHRpblR5cGVzLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQnVpbHRpblR5cGVzLmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gQnVpbHRpblR5cGVzLmRlZiAtIE1ldGFkYXRhIGFib3V0IEJ1aWx0aW5UeXBlcyAtLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NYWEluaGVyaXRhbmNlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQ1hYSW5oZXJpdGFuY2UuaAppbmRleCBmNWUyM2Y4Li5iYjJhZDljIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQ1hYSW5oZXJpdGFuY2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQ1hYSW5oZXJpdGFuY2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDWFhJbmhlcml0YW5jZS5oIC0gQysrIEluaGVyaXRhbmNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0Nhbm9uaWNhbFR5cGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9DYW5vbmljYWxUeXBlLmgKaW5kZXggMGU3MzhkYS4uMmUwMGQzNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0Nhbm9uaWNhbFR5cGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQ2Fub25pY2FsVHlwZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENhbm9uaWNhbFR5cGUuaCAtIEMgTGFuZ3VhZ2UgRmFtaWx5IFR5cGUgUmVwcmVzZW50YXRpb24gLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC01MTAsNyArNTA5LDcgQEAKICAgfQogCiAgIExMVk1fQ0xBTkdfQ0FOUFJPWFlfU0lNUExFX0FDQ0VTU09SKGJvb2wsIGlzVmFyaWFkaWMpCi0gIExMVk1fQ0xBTkdfQ0FOUFJPWFlfU0lNUExFX0FDQ0VTU09SKHVuc2lnbmVkLCBnZXRUeXBlUXVhbHMpCisgIExMVk1fQ0xBTkdfQ0FOUFJPWFlfU0lNUExFX0FDQ0VTU09SKFF1YWxpZmllcnMsIGdldE1ldGhvZFF1YWxzKQogCiAgIHVzaW5nIHBhcmFtX3R5cGVfaXRlcmF0b3IgPQogICAgICAgQ2FuVHlwZUl0ZXJhdG9yPEZ1bmN0aW9uUHJvdG9UeXBlOjpwYXJhbV90eXBlX2l0ZXJhdG9yPjsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9DaGFyVW5pdHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9DaGFyVW5pdHMuaAppbmRleCAwYWFkZjA2Li4zN2Y0ODljIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQ2hhclVuaXRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NoYXJVbml0cy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQ2hhclVuaXRzLmggLSBDaGFyYWN0ZXIgdW5pdHMgZm9yIHNpemVzIGFuZCBvZmZzZXRzIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yMzgsMTAgKzIzNyw2IEBACiAgIH0KIH07CiAKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc1BvZExpa2U8Y2xhbmc6OkNoYXJVbml0cz4gewotICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7Ci19OwotCiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQogCiAjZW5kaWYgLy8gTExWTV9DTEFOR19BU1RfQ0hBUlVOSVRTX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Db21tZW50LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQ29tbWVudC5oCmluZGV4IDFiNTkwNTYuLjJjMjg0YTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Db21tZW50LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIENvbW1lbnQuaCAtIENvbW1lbnQgQVNUIG5vZGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnRCcmllZlBhcnNlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnRCcmllZlBhcnNlci5oCmluZGV4IGJhYTIyOTMuLmNmZDIxMzcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Db21tZW50QnJpZWZQYXJzZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQ29tbWVudEJyaWVmUGFyc2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBDb21tZW50QnJpZWZQYXJzZXIuaCAtIER1bWIgY29tbWVudCBwYXJzZXIgLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Db21tZW50Q29tbWFuZFRyYWl0cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnRDb21tYW5kVHJhaXRzLmgKaW5kZXggNGZkMDA3OC4uODNhMjlhNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnRDb21tYW5kVHJhaXRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnRDb21tYW5kVHJhaXRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBDb21tZW50Q29tbWFuZFRyYWl0cy5oIC0gQ29tbWVudCBjb21tYW5kIHByb3BlcnRpZXMgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Db21tZW50RGlhZ25vc3RpYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnREaWFnbm9zdGljLmgKaW5kZXggZjNhMjA5Yi4uMmU0OThkNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnREaWFnbm9zdGljLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnREaWFnbm9zdGljLmgKQEAgLTEsMjkgKzEsMTUgQEAKIC8vPT09LS0tIENvbW1lbnREaWFnbm9zdGljLmggLSBEaWFnbm9zdGljcyBmb3IgdGhlIEFTVCBsaWJyYXJ5IC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKICNpZm5kZWYgTExWTV9DTEFOR19BU1RfQ09NTUVOVERJQUdOT1NUSUNfSAogI2RlZmluZSBMTFZNX0NMQU5HX0FTVF9DT01NRU5URElBR05PU1RJQ19ICiAKLSNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljLmgiCi0KLW5hbWVzcGFjZSBjbGFuZyB7Ci0gIG5hbWVzcGFjZSBkaWFnIHsKLSAgICBlbnVtIHsKLSNkZWZpbmUgRElBRyhFTlVNLEZMQUdTLERFRkFVTFRfTUFQUElORyxERVNDLEdST1VQLFwKLSAgICAgICAgICAgICBTRklOQUUsTk9XRVJST1IsU0hPV0lOU1lTSEVBREVSLENBVEVHT1JZKSBFTlVNLAotI2RlZmluZSBDT01NRU5UU1RBUlQKLSNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljQ29tbWVudEtpbmRzLmluYyIKLSN1bmRlZiBESUFHCi0gICAgICBOVU1fQlVJTFRJTl9DT01NRU5UX0RJQUdOT1NUSUNTCi0gICAgfTsKLSAgfSAgLy8gZW5kIG5hbWVzcGFjZSBkaWFnCi19ICAvLyBlbmQgbmFtZXNwYWNlIGNsYW5nCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0NvbW1lbnQuaCIKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Db21tZW50TGV4ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Db21tZW50TGV4ZXIuaAppbmRleCAzZWY1YjdjLi45ZGRiYjdkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQ29tbWVudExleGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnRMZXhlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQ29tbWVudExleGVyLmggLSBMZXhlciBmb3Igc3RydWN0dXJlZCBjb21tZW50cyAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQ29tbWVudFBhcnNlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnRQYXJzZXIuaAppbmRleCBmYTg4NjI4Li4xYTBjZmIwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQ29tbWVudFBhcnNlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Db21tZW50UGFyc2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBDb21tZW50UGFyc2VyLmggLSBEb3h5Z2VuIGNvbW1lbnQgcGFyc2VyIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Db21tZW50U2VtYS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnRTZW1hLmgKaW5kZXggNjMyZWJhNy4uMzA3NjE4ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnRTZW1hLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnRTZW1hLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBDb21tZW50U2VtYS5oIC0gRG94eWdlbiBjb21tZW50IHNlbWFudGljIGFuYWx5c2lzIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Db21tZW50VmlzaXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnRWaXNpdG9yLmgKaW5kZXggZDFjYzJkMC4uZDlhNzQzOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnRWaXNpdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0NvbW1lbnRWaXNpdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29tbWVudFZpc2l0b3IuaCAtIFZpc2l0b3IgZm9yIENvbW1lbnQgc3ViY2xhc3NlcyAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xMSwyMiArMTAsMjEgQEAKICNkZWZpbmUgTExWTV9DTEFOR19BU1RfQ09NTUVOVFZJU0lUT1JfSAogCiAjaW5jbHVkZSAiY2xhbmcvQVNUL0NvbW1lbnQuaCIKKyNpbmNsdWRlICJsbHZtL0FEVC9TVExFeHRyYXMuaCIKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvRXJyb3JIYW5kbGluZy5oIgogCiBuYW1lc3BhY2UgY2xhbmcgewogbmFtZXNwYWNlIGNvbW1lbnRzIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBtYWtlX3B0ciB7IHVzaW5nIHR5cGUgPSBUICo7IH07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IG1ha2VfY29uc3RfcHRyIHsgdXNpbmcgdHlwZSA9IGNvbnN0IFQgKjsgfTsKLQotdGVtcGxhdGU8dGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBQdHIsIHR5cGVuYW1lIEltcGxDbGFzcywgdHlwZW5hbWUgUmV0VHk9dm9pZD4KK3RlbXBsYXRlIDx0ZW1wbGF0ZSA8dHlwZW5hbWU+IGNsYXNzIFB0ciwgdHlwZW5hbWUgSW1wbENsYXNzLAorICAgICAgICAgIHR5cGVuYW1lIFJldFR5ID0gdm9pZCwgY2xhc3MuLi4gUGFyYW1UeXM+CiBjbGFzcyBDb21tZW50VmlzaXRvckJhc2UgewogcHVibGljOgogI2RlZmluZSBQVFIoQ0xBU1MpIHR5cGVuYW1lIFB0cjxDTEFTUz46OnR5cGUKLSNkZWZpbmUgRElTUEFUQ0goTkFNRSwgQ0xBU1MpIFwKLSByZXR1cm4gc3RhdGljX2Nhc3Q8SW1wbENsYXNzKj4odGhpcyktPnZpc2l0ICMjIE5BTUUoc3RhdGljX2Nhc3Q8UFRSKENMQVNTKT4oQykpCisjZGVmaW5lIERJU1BBVENIKE5BTUUsIENMQVNTKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICByZXR1cm4gc3RhdGljX2Nhc3Q8SW1wbENsYXNzICo+KHRoaXMpLT52aXNpdCMjTkFNRSggICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHN0YXRpY19jYXN0PFBUUihDTEFTUyk+KEMpLCBzdGQ6OmZvcndhcmQ8UGFyYW1UeXM+KFApLi4uKQogCi0gIFJldFR5IHZpc2l0KFBUUihDb21tZW50KSBDKSB7CisgIFJldFR5IHZpc2l0KFBUUihDb21tZW50KSBDLCBQYXJhbVR5cy4uLiBQKSB7CiAgICAgaWYgKCFDKQogICAgICAgcmV0dXJuIFJldFR5KCk7CiAKQEAgLTQ0LDI1ICs0MiwyNiBAQAogICAvLyBJZiB0aGUgZGVyaXZlZCBjbGFzcyBkb2VzIG5vdCBpbXBsZW1lbnQgYSBjZXJ0YWluIFZpc2l0KiBtZXRob2QsIGZhbGwgYmFjawogICAvLyBvbiBWaXNpdCogbWV0aG9kIGZvciB0aGUgc3VwZXJjbGFzcy4KICNkZWZpbmUgQUJTVFJBQ1RfQ09NTUVOVChDT01NRU5UKSBDT01NRU5UCi0jZGVmaW5lIENPTU1FTlQoQ0xBU1MsIFBBUkVOVCkgXAotICBSZXRUeSB2aXNpdCAjIyBDTEFTUyhQVFIoQ0xBU1MpIEMpIHsgRElTUEFUQ0goUEFSRU5ULCBQQVJFTlQpOyB9CisjZGVmaW5lIENPTU1FTlQoQ0xBU1MsIFBBUkVOVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBSZXRUeSB2aXNpdCMjQ0xBU1MoUFRSKENMQVNTKSBDLCBQYXJhbVR5cy4uLiBQKSB7IERJU1BBVENIKFBBUkVOVCwgUEFSRU5UKTsgfQogI2luY2x1ZGUgImNsYW5nL0FTVC9Db21tZW50Tm9kZXMuaW5jIgogI3VuZGVmIEFCU1RSQUNUX0NPTU1FTlQKICN1bmRlZiBDT01NRU5UCiAKLSAgUmV0VHkgdmlzaXRDb21tZW50KFBUUihDb21tZW50KSBDKSB7IHJldHVybiBSZXRUeSgpOyB9CisgIFJldFR5IHZpc2l0Q29tbWVudChQVFIoQ29tbWVudCkgQywgUGFyYW1UeXMuLi4gUCkgeyByZXR1cm4gUmV0VHkoKTsgfQogCiAjdW5kZWYgUFRSCiAjdW5kZWYgRElTUEFUQ0gKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEltcGxDbGFzcywgdHlwZW5hbWUgUmV0VHk9dm9pZD4KLWNsYXNzIENvbW1lbnRWaXNpdG9yIDoKLSAgICBwdWJsaWMgQ29tbWVudFZpc2l0b3JCYXNlPG1ha2VfcHRyLCBJbXBsQ2xhc3MsIFJldFR5PiB7fTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbXBsQ2xhc3MsIHR5cGVuYW1lIFJldFR5ID0gdm9pZCwgY2xhc3MuLi4gUGFyYW1UeXM+CitjbGFzcyBDb21tZW50VmlzaXRvciA6IHB1YmxpYyBDb21tZW50VmlzaXRvckJhc2U8c3RkOjphZGRfcG9pbnRlciwgSW1wbENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldFR5LCBQYXJhbVR5cy4uLj4ge307CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEltcGxDbGFzcywgdHlwZW5hbWUgUmV0VHk9dm9pZD4KLWNsYXNzIENvbnN0Q29tbWVudFZpc2l0b3IgOgotICAgIHB1YmxpYyBDb21tZW50VmlzaXRvckJhc2U8bWFrZV9jb25zdF9wdHIsIEltcGxDbGFzcywgUmV0VHk+IHt9OwordGVtcGxhdGUgPHR5cGVuYW1lIEltcGxDbGFzcywgdHlwZW5hbWUgUmV0VHkgPSB2b2lkLCBjbGFzcy4uLiBQYXJhbVR5cz4KK2NsYXNzIENvbnN0Q29tbWVudFZpc2l0b3IKKyAgICA6IHB1YmxpYyBDb21tZW50VmlzaXRvckJhc2U8bGx2bTo6bWFrZV9jb25zdF9wdHIsIEltcGxDbGFzcywgUmV0VHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtVHlzLi4uPiB7fTsKIAogfSAvLyBuYW1lc3BhY2UgY29tbWVudHMKIH0gLy8gbmFtZXNwYWNlIGNsYW5nCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvQ29tcGFyaXNvbkNhdGVnb3JpZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Db21wYXJpc29uQ2F0ZWdvcmllcy5oCmluZGV4IDIzYmZkNzAuLjlkNTkxY2MgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Db21wYXJpc29uQ2F0ZWdvcmllcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Db21wYXJpc29uQ2F0ZWdvcmllcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvbXBhcmlzb25DYXRlZ29yaWVzLmggLSBUaHJlZSBXYXkgQ29tcGFyaXNvbiBEYXRhIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGF0YUNvbGxlY3Rpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EYXRhQ29sbGVjdGlvbi5oCmluZGV4IDhiMmE4MzQuLjM3ZjEwMTcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EYXRhQ29sbGVjdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EYXRhQ29sbGVjdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gRGF0YXRDb2xsZWN0aW9uLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2wuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsLmgKaW5kZXggMDc2YmQ2ZS4uNTI2ZTIxMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2wuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERlY2wuaCAtIENsYXNzZXMgZm9yIHJlcHJlc2VudGluZyBkZWNsYXJhdGlvbnMgLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNSw2ICsxNCw3IEBACiAjZGVmaW5lIExMVk1fQ0xBTkdfQVNUX0RFQ0xfSAogCiAjaW5jbHVkZSAiY2xhbmcvQVNUL0FQVmFsdWUuaCIKKyNpbmNsdWRlICJjbGFuZy9BU1QvQVNUQ29udGV4dEFsbG9jYXRlLmgiCiAjaW5jbHVkZSAiY2xhbmcvQVNUL0RlY2xCYXNlLmgiCiAjaW5jbHVkZSAiY2xhbmcvQVNUL0RlY2xhcmF0aW9uTmFtZS5oIgogI2luY2x1ZGUgImNsYW5nL0FTVC9FeHRlcm5hbEFTVFNvdXJjZS5oIgpAQCAtODY2LDggKzg2NiwxMiBAQAogICAgIHVuc2lnbmVkIFNDbGFzcyA6IDM7CiAgICAgdW5zaWduZWQgVFNDU3BlYyA6IDI7CiAgICAgdW5zaWduZWQgSW5pdFN0eWxlIDogMjsKKworICAgIC8vLyBXaGV0aGVyIHRoaXMgdmFyaWFibGUgaXMgYW4gQVJDIHBzZXVkby1fX3N0cm9uZyB2YXJpYWJsZTsgc2VlCisgICAgLy8vIGlzQVJDUHNldWRvU3Ryb25nKCkgZm9yIGRldGFpbHMuCisgICAgdW5zaWduZWQgQVJDUHNldWRvU3Ryb25nIDogMTsKICAgfTsKLSAgZW51bSB7IE51bVZhckRlY2xCaXRzID0gNyB9OworICBlbnVtIHsgTnVtVmFyRGVjbEJpdHMgPSA4IH07CiAKIHByb3RlY3RlZDoKICAgZW51bSB7IE51bVBhcmFtZXRlckluZGV4Qml0cyA9IDggfTsKQEAgLTk0MCwxMCArOTQ0LDYgQEAKICAgICAvLy8gV2hldGhlciB0aGlzIHZhcmlhYmxlIGlzIHRoZSBmb3ItaW4gbG9vcCBkZWNsYXJhdGlvbiBpbiBPYmplY3RpdmUtQy4KICAgICB1bnNpZ25lZCBPYmpDRm9yRGVjbCA6IDE7CiAKLSAgICAvLy8gV2hldGhlciB0aGlzIHZhcmlhYmxlIGlzIGFuIEFSQyBwc2V1ZG8tX19zdHJvbmcKLSAgICAvLy8gdmFyaWFibGU7ICBzZWUgaXNBUkNQc2V1ZG9TdHJvbmcoKSBmb3IgZGV0YWlscy4KLSAgICB1bnNpZ25lZCBBUkNQc2V1ZG9TdHJvbmcgOiAxOwotCiAgICAgLy8vIFdoZXRoZXIgdGhpcyB2YXJpYWJsZSBpcyAoQysrMXopIGlubGluZS4KICAgICB1bnNpZ25lZCBJc0lubGluZSA6IDE7CiAKQEAgLTEzNDksMTcgKzEzNDksMTUgQEAKICAgICBOb25QYXJtVmFyRGVjbEJpdHMuT2JqQ0ZvckRlY2wgPSBGUkQ7CiAgIH0KIAotICAvLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyB2YXJpYWJsZSBpcyBhbiBBUkMgcHNldWRvLV9fc3Ryb25nCi0gIC8vLyB2YXJpYWJsZS4gIEEgcHNldWRvLV9fc3Ryb25nIHZhcmlhYmxlIGhhcyBhIF9fc3Ryb25nLXF1YWxpZmllZAotICAvLy8gdHlwZSBidXQgZG9lcyBub3QgYWN0dWFsbHkgcmV0YWluIHRoZSBvYmplY3Qgd3JpdHRlbiBpbnRvIGl0LgotICAvLy8gR2VuZXJhbGx5IHN1Y2ggdmFyaWFibGVzIGFyZSBhbHNvICdjb25zdCcgZm9yIHNhZmV0eS4KLSAgYm9vbCBpc0FSQ1BzZXVkb1N0cm9uZygpIGNvbnN0IHsKLSAgICByZXR1cm4gaXNhPFBhcm1WYXJEZWNsPih0aGlzKSA/IGZhbHNlIDogTm9uUGFybVZhckRlY2xCaXRzLkFSQ1BzZXVkb1N0cm9uZzsKLSAgfQotICB2b2lkIHNldEFSQ1BzZXVkb1N0cm9uZyhib29sIHBzKSB7Ci0gICAgYXNzZXJ0KCFpc2E8UGFybVZhckRlY2w+KHRoaXMpKTsKLSAgICBOb25QYXJtVmFyRGVjbEJpdHMuQVJDUHNldWRvU3Ryb25nID0gcHM7Ci0gIH0KKyAgLy8vIERldGVybWluZSB3aGV0aGVyIHRoaXMgdmFyaWFibGUgaXMgYW4gQVJDIHBzZXVkby1fX3N0cm9uZyB2YXJpYWJsZS4gQQorICAvLy8gcHNldWRvLV9fc3Ryb25nIHZhcmlhYmxlIGhhcyBhIF9fc3Ryb25nLXF1YWxpZmllZCB0eXBlIGJ1dCBkb2VzIG5vdAorICAvLy8gYWN0dWFsbHkgcmV0YWluIHRoZSBvYmplY3Qgd3JpdHRlbiBpbnRvIGl0LiBHZW5lcmFsbHkgc3VjaCB2YXJpYWJsZXMgYXJlCisgIC8vLyBhbHNvICdjb25zdCcgZm9yIHNhZmV0eS4gVGhlcmUgYXJlIDMgY2FzZXMgd2hlcmUgdGhpcyB3aWxsIGJlIHNldCwgMSkgaWYKKyAgLy8vIHRoZSB2YXJpYWJsZSBpcyBhbm5vdGF0ZWQgd2l0aCB0aGUgb2JqY19leHRlcm5hbGx5X3JldGFpbmVkIGF0dHJpYnV0ZSwgMikKKyAgLy8vIGlmIGl0cyAnc2VsZicgaW4gYSBub24taW5pdCBtZXRob2QsIG9yIDMpIGlmIGl0cyB0aGUgdmFyaWFibGUgaW4gYW4gZm9yLWluCisgIC8vLyBsb29wLgorICBib29sIGlzQVJDUHNldWRvU3Ryb25nKCkgY29uc3QgeyByZXR1cm4gVmFyRGVjbEJpdHMuQVJDUHNldWRvU3Ryb25nOyB9CisgIHZvaWQgc2V0QVJDUHNldWRvU3Ryb25nKGJvb2wgUFMpIHsgVmFyRGVjbEJpdHMuQVJDUHNldWRvU3Ryb25nID0gUFM7IH0KIAogICAvLy8gV2hldGhlciB0aGlzIHZhcmlhYmxlIGlzIChDKysxeikgaW5saW5lLgogICBib29sIGlzSW5saW5lKCkgY29uc3QgewpAQCAtMTcxOSw2ICsxNzE3LDEzIEBACiAgIHVuc2lnbmVkIGdldFBhcmFtZXRlckluZGV4TGFyZ2UoKSBjb25zdDsKIH07CiAKK2VudW0gY2xhc3MgTXVsdGlWZXJzaW9uS2luZCB7CisgIE5vbmUsCisgIFRhcmdldCwKKyAgQ1BVU3BlY2lmaWMsCisgIENQVURpc3BhdGNoCit9OworCiAvLy8gUmVwcmVzZW50cyBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIG9yIGRlZmluaXRpb24uCiAvLy8KIC8vLyBTaW5jZSBhIGdpdmVuIGZ1bmN0aW9uIGNhbiBiZSBkZWNsYXJlZCBzZXZlcmFsIHRpbWVzIGluIGEgcHJvZ3JhbSwKQEAgLTIyMjYsNiArMjIzMSwxMiBAQAogICAgIGdldENhbm9uaWNhbERlY2woKS0+RnVuY3Rpb25EZWNsQml0cy5Jc011bHRpVmVyc2lvbiA9IFY7CiAgIH0KIAorICAvLy8gR2V0cyB0aGUga2luZCBvZiBtdWx0aXZlcnNpb25pbmcgYXR0cmlidXRlIHRoaXMgZGVjbGFyYXRpb24gaGFzLiBOb3RlIHRoYXQKKyAgLy8vIHRoaXMgY2FuIHJldHVybiBhIHZhbHVlIGV2ZW4gaWYgdGhlIGZ1bmN0aW9uIGlzIG5vdCBtdWx0aXZlcnNpb24sIHN1Y2ggYXMKKyAgLy8vIHRoZSBjYXNlIG9mICd0YXJnZXQnLgorICBNdWx0aVZlcnNpb25LaW5kIGdldE11bHRpVmVyc2lvbktpbmQoKSBjb25zdDsKKworCiAgIC8vLyBUcnVlIGlmIHRoaXMgZnVuY3Rpb24gaXMgYSBtdWx0aXZlcnNpb25lZCBkaXNwYXRjaCBmdW5jdGlvbiBhcyBhIHBhcnQgb2YKICAgLy8vIHRoZSBjcHVfc3BlY2lmaWMvY3B1X2Rpc3BhdGNoIGZ1bmN0aW9uYWxpdHkuCiAgIGJvb2wgaXNDUFVEaXNwYXRjaE11bHRpVmVyc2lvbigpIGNvbnN0OwpAQCAtMjIzMyw2ICsyMjQ0LDEwIEBACiAgIC8vLyBwYXJ0IG9mIHRoZSBjcHVfc3BlY2lmaWMvY3B1X2Rpc3BhdGNoIGZ1bmN0aW9uYWxpdHkuCiAgIGJvb2wgaXNDUFVTcGVjaWZpY011bHRpVmVyc2lvbigpIGNvbnN0OwogCisgIC8vLyBUcnVlIGlmIHRoaXMgZnVuY3Rpb24gaXMgYSBtdWx0aXZlcnNpb25lZCBkaXNwYXRjaCBmdW5jdGlvbiBhcyBhIHBhcnQgb2YKKyAgLy8vIHRoZSB0YXJnZXQgZnVuY3Rpb25hbGl0eS4KKyAgYm9vbCBpc1RhcmdldE11bHRpVmVyc2lvbigpIGNvbnN0OworCiAgIHZvaWQgc2V0UHJldmlvdXNEZWNsYXJhdGlvbihGdW5jdGlvbkRlY2wgKiBQcmV2RGVjbCk7CiAKICAgRnVuY3Rpb25EZWNsICpnZXRDYW5vbmljYWxEZWNsKCkgb3ZlcnJpZGU7CkBAIC0yMzEwLDE0ICsyMzI1LDYgQEAKICAgICAgICAgZ2V0QVNUQ29udGV4dCgpKTsKICAgfQogCi0gIC8vLyBSZXR1cm5zIHRoZSBXYXJuVW51c2VkUmVzdWx0QXR0ciB0aGF0IGlzIGVpdGhlciBkZWNsYXJlZCBvbiB0aGlzCi0gIC8vLyBmdW5jdGlvbiwgb3IgaXRzIHJldHVybiB0eXBlIGRlY2xhcmF0aW9uLgotICBjb25zdCBBdHRyICpnZXRVbnVzZWRSZXN1bHRBdHRyKCkgY29uc3Q7Ci0KLSAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGZ1bmN0aW9uIG9yIGl0cyByZXR1cm4gdHlwZSBoYXMgdGhlCi0gIC8vLyB3YXJuX3VudXNlZF9yZXN1bHQgYXR0cmlidXRlLgotICBib29sIGhhc1VudXNlZFJlc3VsdEF0dHIoKSBjb25zdCB7IHJldHVybiBnZXRVbnVzZWRSZXN1bHRBdHRyKCkgIT0gbnVsbHB0cjsgfQotCiAgIC8vLyBSZXR1cm5zIHRoZSBzdG9yYWdlIGNsYXNzIGFzIHdyaXR0ZW4gaW4gdGhlIHNvdXJjZS4gRm9yIHRoZQogICAvLy8gY29tcHV0ZWQgbGlua2FnZSBvZiBzeW1ib2wsIHNlZSBnZXRMaW5rYWdlLgogICBTdG9yYWdlQ2xhc3MgZ2V0U3RvcmFnZUNsYXNzKCkgY29uc3QgewpAQCAtMzg0NCw3ICszODUxLDcgQEAKICAgc3RhdGljIGJvb2wgY2xhc3NvZktpbmQoS2luZCBLKSB7IHJldHVybiBLID09IEZpbGVTY29wZUFzbTsgfQogfTsKIAotLy8vIFBlcHJlc2VudHMgYSBibG9jayBsaXRlcmFsIGRlY2xhcmF0aW9uLCB3aGljaCBpcyBsaWtlIGFuCisvLy8gUmVwcmVzZW50cyBhIGJsb2NrIGxpdGVyYWwgZGVjbGFyYXRpb24sIHdoaWNoIGlzIGxpa2UgYW4KIC8vLyB1bm5hbWVkIEZ1bmN0aW9uRGVjbC4gIEZvciBleGFtcGxlOgogLy8vIF57IHN0YXRlbWVudC1ib2R5IH0gICBvciAgIF4oaW50IGFyZzEsIGZsb2F0IGFyZzIpeyBzdGF0ZW1lbnQtYm9keSB9CiBjbGFzcyBCbG9ja0RlY2wgOiBwdWJsaWMgRGVjbCwgcHVibGljIERlY2xDb250ZXh0IHsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsQWNjZXNzUGFpci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xBY2Nlc3NQYWlyLmgKaW5kZXggM2M1MDU2Yy4uODA1MzQyYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xBY2Nlc3NQYWlyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xBY2Nlc3NQYWlyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBEZWNsQWNjZXNzUGFpci5oIC0gQSBkZWNsIGJ1bmRsZWQgd2l0aCBpdHMgcGF0aCBhY2Nlc3MgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTYxLDEyICs2MCw0IEBACiB9OwogfQogCi0vLyBUYWtlIGEgbW9tZW50IHRvIHRlbGwgU21hbGxWZWN0b3IgdGhhdCBEZWNsQWNjZXNzUGFpciBpcyBQT0QuCi1uYW1lc3BhY2UgbGx2bSB7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gc3RydWN0IGlzUG9kTGlrZTsKLXRlbXBsYXRlPD4gc3RydWN0IGlzUG9kTGlrZTxjbGFuZzo6RGVjbEFjY2Vzc1BhaXI+IHsKLSAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKLX07Ci19Ci0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xCYXNlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbEJhc2UuaAppbmRleCA5YzI0NWY0Li45MTE3ZjUzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbEJhc2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbEJhc2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEZWNsQmFzZS5oIC0gQmFzZSBDbGFzc2VzIGZvciByZXByZXNlbnRpbmcgZGVjbGFyYXRpb25zIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTc2LDcgKzE3NSwxMCBAQAogICAgIElETlNfTG9jYWxFeHRlcm4gICAgICAgICA9IDB4MDgwMCwKIAogICAgIC8vLyBUaGlzIGRlY2xhcmF0aW9uIGlzIGFuIE9wZW5NUCB1c2VyIGRlZmluZWQgcmVkdWN0aW9uIGNvbnN0cnVjdGlvbi4KLSAgICBJRE5TX09NUFJlZHVjdGlvbiAgICAgICAgPSAweDEwMDAKKyAgICBJRE5TX09NUFJlZHVjdGlvbiAgICAgICAgPSAweDEwMDAsCisKKyAgICAvLy8gVGhpcyBkZWNsYXJhdGlvbiBpcyBhbiBPcGVuTVAgdXNlciBkZWZpbmVkIG1hcHBlci4KKyAgICBJRE5TX09NUE1hcHBlciAgICAgICAgICAgPSAweDIwMDAsCiAgIH07CiAKICAgLy8vIE9iakNEZWNsUXVhbGlmaWVyIC0gJ1F1YWxpZmllcnMnIHdyaXR0ZW4gbmV4dCB0byB0aGUgcmV0dXJuIGFuZApAQCAtMzI0LDcgKzMyNiw3IEBACiAgIHVuc2lnbmVkIEZyb21BU1RGaWxlIDogMTsKIAogICAvLy8gSWRlbnRpZmllck5hbWVzcGFjZSAtIFRoaXMgc3BlY2lmaWVzIHdoYXQgSUROU18qIG5hbWVzcGFjZSB0aGlzIGxpdmVzIGluLgotICB1bnNpZ25lZCBJZGVudGlmaWVyTmFtZXNwYWNlIDogMTM7CisgIHVuc2lnbmVkIElkZW50aWZpZXJOYW1lc3BhY2UgOiAxNDsKIAogICAvLy8gSWYgMCwgd2UgaGF2ZSBub3QgY29tcHV0ZWQgdGhlIGxpbmthZ2Ugb2YgdGhpcyBkZWNsYXJhdGlvbi4KICAgLy8vIE90aGVyd2lzZSwgaXQgaXMgdGhlIGxpbmthZ2UgKyAxLgpAQCAtMTA2NSwxMSArMTA2NywxMSBAQAogICAgIHVuc2lnbmVkIE9sZE5TID0gSWRlbnRpZmllck5hbWVzcGFjZTsKICAgICBhc3NlcnQoKE9sZE5TICYgKElETlNfVGFnIHwgSUROU19PcmRpbmFyeSB8CiAgICAgICAgICAgICAgICAgICAgICBJRE5TX1RhZ0ZyaWVuZCB8IElETlNfT3JkaW5hcnlGcmllbmQgfAotICAgICAgICAgICAgICAgICAgICAgSUROU19Mb2NhbEV4dGVybikpICYmCisgICAgICAgICAgICAgICAgICAgICBJRE5TX0xvY2FsRXh0ZXJuIHwgSUROU19Ob25NZW1iZXJPcGVyYXRvcikpICYmCiAgICAgICAgICAgICJuYW1lc3BhY2UgaW5jbHVkZXMgbmVpdGhlciBvcmRpbmFyeSBub3IgdGFnIik7CiAgICAgYXNzZXJ0KCEoT2xkTlMgJiB+KElETlNfVGFnIHwgSUROU19PcmRpbmFyeSB8IElETlNfVHlwZSB8CiAgICAgICAgICAgICAgICAgICAgICAgIElETlNfVGFnRnJpZW5kIHwgSUROU19PcmRpbmFyeUZyaWVuZCB8Ci0gICAgICAgICAgICAgICAgICAgICAgIElETlNfTG9jYWxFeHRlcm4pKSAmJgorICAgICAgICAgICAgICAgICAgICAgICBJRE5TX0xvY2FsRXh0ZXJuIHwgSUROU19Ob25NZW1iZXJPcGVyYXRvcikpICYmCiAgICAgICAgICAgICJuYW1lc3BhY2UgaW5jbHVkZXMgb3RoZXIgdGhhbiBvcmRpbmFyeSBvciB0YWciKTsKIAogICAgIERlY2wgKlByZXYgPSBnZXRQcmV2aW91c0RlY2woKTsKQEAgLTEwODIsNyArMTA4NCw4IEBACiAgICAgICAgIElkZW50aWZpZXJOYW1lc3BhY2UgfD0gSUROU19UYWcgfCBJRE5TX1R5cGU7CiAgICAgfQogCi0gICAgaWYgKE9sZE5TICYgKElETlNfT3JkaW5hcnkgfCBJRE5TX09yZGluYXJ5RnJpZW5kIHwgSUROU19Mb2NhbEV4dGVybikpIHsKKyAgICBpZiAoT2xkTlMgJiAoSUROU19PcmRpbmFyeSB8IElETlNfT3JkaW5hcnlGcmllbmQgfAorICAgICAgICAgICAgICAgICBJRE5TX0xvY2FsRXh0ZXJuIHwgSUROU19Ob25NZW1iZXJPcGVyYXRvcikpIHsKICAgICAgIElkZW50aWZpZXJOYW1lc3BhY2UgfD0gSUROU19PcmRpbmFyeUZyaWVuZDsKICAgICAgIGlmIChQZXJmb3JtRnJpZW5kSW5qZWN0aW9uIHx8CiAgICAgICAgICAgKFByZXYgJiYgUHJldi0+Z2V0SWRlbnRpZmllck5hbWVzcGFjZSgpICYgSUROU19PcmRpbmFyeSkpCkBAIC0xMjUxLDYgKzEyNTQsNyBAQAogLy8vICAgTmFtZXNwYWNlRGVjbAogLy8vICAgVGFnRGVjbAogLy8vICAgT01QRGVjbGFyZVJlZHVjdGlvbkRlY2wKKy8vLyAgIE9NUERlY2xhcmVNYXBwZXJEZWNsCiAvLy8gICBGdW5jdGlvbkRlY2wKIC8vLyAgIE9iakNNZXRob2REZWNsCiAvLy8gICBPYmpDQ29udGFpbmVyRGVjbApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xDWFguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsQ1hYLmgKaW5kZXggY2IxZGUwYi4uNmI5OWY3YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xDWFguaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbENYWC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERlY2xDWFguaCAtIENsYXNzZXMgZm9yIHJlcHJlc2VudGluZyBDKysgZGVjbGFyYXRpb25zIC0tKi0gQysrIC0qLT09PT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNTQxLDcgKzE1NDAsNyBAQAogICAvLy8KICAgLy8vIEMrKzExIFtjbGFzc11wNjoKICAgLy8vICAgICJBIHRyaXZpYWwgY2xhc3MgaXMgYSBjbGFzcyB0aGF0IGhhcyBhIHRyaXZpYWwgZGVmYXVsdCBjb25zdHJ1Y3RvciBhbmQKLSAgLy8vICAgIGlzIHRyaXZpYWxseSBjb3BpYWJsZS4iCisgIC8vLyAgICBpcyB0cml2aWFsbHkgY29weWFibGUuIgogICBib29sIGlzVHJpdmlhbCgpIGNvbnN0IHsKICAgICByZXR1cm4gaXNUcml2aWFsbHlDb3B5YWJsZSgpICYmIGhhc1RyaXZpYWxEZWZhdWx0Q29uc3RydWN0b3IoKTsKICAgfQpAQCAtMTgyOSw2ICsxODI4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1hYQmFzZVBhdGggJlBhdGgsIERlY2xhcmF0aW9uTmFtZSBOYW1lKTsKIAogICAvLy8gQmFzZS1jbGFzcyBsb29rdXAgY2FsbGJhY2sgdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlcmUgZXhpc3RzCisgIC8vLyBhbiBPcGVuTVAgZGVjbGFyZSBtYXBwZXIgbWVtYmVyIHdpdGggdGhlIGdpdmVuIG5hbWUuCisgIC8vLworICAvLy8gVGhpcyBjYWxsYmFjayBjYW4gYmUgdXNlZCB3aXRoIFxjIGxvb2t1cEluQmFzZXMoKSB0byBmaW5kIG1lbWJlcnMKKyAgLy8vIG9mIHRoZSBnaXZlbiBuYW1lIHdpdGhpbiBhIEMrKyBjbGFzcyBoaWVyYXJjaHkuCisgIHN0YXRpYyBib29sIEZpbmRPTVBNYXBwZXJNZW1iZXIoY29uc3QgQ1hYQmFzZVNwZWNpZmllciAqU3BlY2lmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENYWEJhc2VQYXRoICZQYXRoLCBEZWNsYXJhdGlvbk5hbWUgTmFtZSk7CisKKyAgLy8vIEJhc2UtY2xhc3MgbG9va3VwIGNhbGxiYWNrIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZXJlIGV4aXN0cwogICAvLy8gYSBtZW1iZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZSB0aGF0IGNhbiBiZSB1c2VkIGluIGEgbmVzdGVkLW5hbWUtc3BlY2lmaWVyLgogICAvLy8KICAgLy8vIFRoaXMgY2FsbGJhY2sgY2FuIGJlIHVzZWQgd2l0aCBcYyBsb29rdXBJbkJhc2VzKCkgdG8gZmluZCBtZW1iZXJzIG9mCkBAIC0yMTgwLDEwICsyMTg3LDEzIEBACiAgIC8vLyB0aGF0IGZvciB0aGUgY2FsbCBvcGVyYXRvciBvZiBhIGxhbWJkYSBjbG9zdXJlIHR5cGUsIHRoaXMgcmV0dXJucyB0aGUKICAgLy8vIGRlc3VnYXJlZCAndGhpcycgdHlwZSAoYSBwb2ludGVyIHRvIHRoZSBjbG9zdXJlIHR5cGUpLCBub3QgdGhlIGNhcHR1cmVkCiAgIC8vLyAndGhpcycgdHlwZS4KLSAgUXVhbFR5cGUgZ2V0VGhpc1R5cGUoQVNUQ29udGV4dCAmQykgY29uc3Q7CisgIFF1YWxUeXBlIGdldFRoaXNUeXBlKCkgY29uc3Q7CiAKLSAgdW5zaWduZWQgZ2V0VHlwZVF1YWxpZmllcnMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGdldFR5cGUoKS0+Z2V0QXM8RnVuY3Rpb25Qcm90b1R5cGU+KCktPmdldFR5cGVRdWFscygpOworICBzdGF0aWMgUXVhbFR5cGUgZ2V0VGhpc1R5cGUoY29uc3QgRnVuY3Rpb25Qcm90b1R5cGUgKkZQVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENYWFJlY29yZERlY2wgKkRlY2wpOworCisgIFF1YWxpZmllcnMgZ2V0TWV0aG9kUXVhbGlmaWVycygpIGNvbnN0IHsKKyAgICByZXR1cm4gZ2V0VHlwZSgpLT5nZXRBczxGdW5jdGlvblByb3RvVHlwZT4oKS0+Z2V0TWV0aG9kUXVhbHMoKTsKICAgfQogCiAgIC8vLyBSZXRyaWV2ZSB0aGUgcmVmLXF1YWxpZmllciBhc3NvY2lhdGVkIHdpdGggdGhpcyBtZXRob2QuCkBAIC0yMzE1LDYgKzIzMjUsOSBAQAogICBDWFhDdG9ySW5pdGlhbGl6ZXIoQVNUQ29udGV4dCAmQ29udGV4dCwgVHlwZVNvdXJjZUluZm8gKlRJbmZvLAogICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTCwgRXhwciAqSW5pdCwgU291cmNlTG9jYXRpb24gUik7CiAKKyAgLy8vIFxyZXR1cm4gVW5pcXVlIHJlcHJvZHVjaWJsZSBvYmplY3QgaWRlbnRpZmllci4KKyAgaW50NjRfdCBnZXRJRChjb25zdCBBU1RDb250ZXh0ICZDb250ZXh0KSBjb25zdDsKKwogICAvLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpbml0aWFsaXplciBpcyBpbml0aWFsaXppbmcgYSBiYXNlIGNsYXNzLgogICBib29sIGlzQmFzZUluaXRpYWxpemVyKCkgY29uc3QgewogICAgIHJldHVybiBJbml0aWFsaXplZS5pczxUeXBlU291cmNlSW5mbyo+KCkgJiYgIUlzRGVsZWdhdGluZzsKQEAgLTM5MTIsNiArMzkyNSw3IEBACiAgICAgICA6IERlY2xhcmF0b3JEZWNsKE1TUHJvcGVydHksIERDLCBMLCBOLCBULCBUSW5mbywgU3RhcnRMKSwKICAgICAgICAgR2V0dGVySWQoR2V0dGVyKSwgU2V0dGVySWQoU2V0dGVyKSB7fQogCisgIHZvaWQgYW5jaG9yKCkgb3ZlcnJpZGU7CiBwdWJsaWM6CiAgIGZyaWVuZCBjbGFzcyBBU1REZWNsUmVhZGVyOwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbENvbnRleHRJbnRlcm5hbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsQ29udGV4dEludGVybmFscy5oCmluZGV4IGNjZDgyZDIuLjQyNWUwMTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsQ29udGV4dEludGVybmFscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsQ29udGV4dEludGVybmFscy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERlY2xDb250ZXh0SW50ZXJuYWxzLmggLSBEZWNsQ29udGV4dCBSZXByZXNlbnRhdGlvbiAtLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbEZyaWVuZC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xGcmllbmQuaAppbmRleCBiNTgwOGYyLi42ZjgzMDZjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbEZyaWVuZC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsRnJpZW5kLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGVjbEZyaWVuZC5oIC0gQ2xhc3NlcyBmb3IgQysrIGZyaWVuZCBkZWNsYXJhdGlvbnMgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsR3JvdXAuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsR3JvdXAuaAppbmRleCA2ZDVhYWFkLi4yYmU5ZGFlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbEdyb3VwLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xHcm91cC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERlY2xHcm91cC5oIC0gQ2xhc3NlcyBmb3IgcmVwcmVzZW50aW5nIGdyb3VwcyBvZiBEZWNscyAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbExvb2t1cHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsTG9va3Vwcy5oCmluZGV4IDk2MjdmNDQuLjQxYzg5OTkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsTG9va3Vwcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsTG9va3Vwcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERlY2xMb29rdXBzLmggLSBMb3ctbGV2ZWwgaW50ZXJmYWNlIHRvIGFsbCBuYW1lcyBpbiBhIERDIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbE5vZGVzLmluYyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsTm9kZXMuaW5jCmluZGV4IGE4MDQ4NDMuLmE1MmNiNDUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsTm9kZXMuaW5jCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsTm9kZXMuaW5jCkBAIC00OTcsNiArNDk3LDEyIEBACiBJTkRJUkVDVEZJRUxEKEluZGlyZWN0RmllbGQsIFZhbHVlRGVjbCkKICN1bmRlZiBJTkRJUkVDVEZJRUxECiAKKyNpZm5kZWYgT01QREVDTEFSRU1BUFBFUgorIyAgZGVmaW5lIE9NUERFQ0xBUkVNQVBQRVIoVHlwZSwgQmFzZSkgVkFMVUUoVHlwZSwgQmFzZSkKKyNlbmRpZgorT01QREVDTEFSRU1BUFBFUihPTVBEZWNsYXJlTWFwcGVyLCBWYWx1ZURlY2wpCisjdW5kZWYgT01QREVDTEFSRU1BUFBFUgorCiAjaWZuZGVmIE9NUERFQ0xBUkVSRURVQ1RJT04KICMgIGRlZmluZSBPTVBERUNMQVJFUkVEVUNUSU9OKFR5cGUsIEJhc2UpIFZBTFVFKFR5cGUsIEJhc2UpCiAjZW5kaWYKQEAgLTU4OCw2ICs1OTQsNyBAQAogREVDTF9DT05URVhUKEV4dGVybkNDb250ZXh0KQogREVDTF9DT05URVhUKExpbmthZ2VTcGVjKQogREVDTF9DT05URVhUKE5hbWVzcGFjZSkKK0RFQ0xfQ09OVEVYVChPTVBEZWNsYXJlTWFwcGVyKQogREVDTF9DT05URVhUKE9NUERlY2xhcmVSZWR1Y3Rpb24pCiBERUNMX0NPTlRFWFQoT2JqQ01ldGhvZCkKIERFQ0xfQ09OVEVYVChUcmFuc2xhdGlvblVuaXQpCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbE9iakMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsT2JqQy5oCmluZGV4IGJjMTBiYTQuLjhkODVhYzMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsT2JqQy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsT2JqQy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERlY2xPYmpDLmggLSBDbGFzc2VzIGZvciByZXByZXNlbnRpbmcgZGVjbGFyYXRpb25zIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zNjksNiArMzY4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1QYXJhbXMpOwogICB9CiAKKyAgUGFybVZhckRlY2wgKmdldFBhcmFtRGVjbCh1bnNpZ25lZCBJZHgpIHsKKyAgICBhc3NlcnQoSWR4IDwgTnVtUGFyYW1zICYmICJJbmRleCBvdXQgb2YgYm91bmRzISIpOworICAgIHJldHVybiBnZXRQYXJhbXMoKVtJZHhdOworICB9CisgIGNvbnN0IFBhcm1WYXJEZWNsICpnZXRQYXJhbURlY2wodW5zaWduZWQgSWR4KSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8T2JqQ01ldGhvZERlY2wgKj4odGhpcyktPmdldFBhcmFtRGVjbChJZHgpOworICB9CisKICAgLy8vIFNldHMgdGhlIG1ldGhvZCdzIHBhcmFtZXRlcnMgYW5kIHNlbGVjdG9yIHNvdXJjZSBsb2NhdGlvbnMuCiAgIC8vLyBJZiB0aGUgbWV0aG9kIGlzIGltcGxpY2l0IChub3QgY29taW5nIGZyb20gc291cmNlKSBccCBTZWxMb2NzIGlzCiAgIC8vLyBpZ25vcmVkLgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xPcGVuTVAuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsT3Blbk1QLmgKaW5kZXggODU0MGNjNS4uMTIzMzJhMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xPcGVuTVAuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbE9wZW5NUC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERlY2xPcGVuTVAuaCAtIENsYXNzZXMgZm9yIHJlcHJlc2VudGluZyBPcGVuTVAgZGlyZWN0aXZlcyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KQEAgLTIwNyw2ICsyMDYsMTAyIEBACiAgIH0KIH07CiAKKy8vLyBUaGlzIHJlcHJlc2VudHMgJyNwcmFnbWEgb21wIGRlY2xhcmUgbWFwcGVyIC4uLicgZGlyZWN0aXZlLiBNYXAgY2xhdXNlcyBhcmUKKy8vLyBhbGxvd2VkIHRvIHVzZSB3aXRoIHRoaXMgZGlyZWN0aXZlLiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVjbGFyZXMgYSB1c2VyCisvLy8gZGVmaW5lZCBtYXBwZXIgZm9yIHRoZSB0eXBlICdzdHJ1Y3QgdmVjJy4gVGhpcyBleGFtcGxlIGluc3RydWN0cyB0aGUgZmllbGRzCisvLy8gJ2xlbicgYW5kICdkYXRhJyBzaG91bGQgYmUgbWFwcGVkIHdoZW4gbWFwcGluZyBpbnN0YW5jZXMgb2YgJ3N0cnVjdCB2ZWMnLgorLy8vCisvLy8gXGNvZGUKKy8vLyAjcHJhZ21hIG9tcCBkZWNsYXJlIG1hcHBlcihtaWQ6IHN0cnVjdCB2ZWMgdikgbWFwKHYubGVuLCB2LmRhdGFbMDpOXSkKKy8vLyBcZW5kY29kZQorY2xhc3MgT01QRGVjbGFyZU1hcHBlckRlY2wgZmluYWwgOiBwdWJsaWMgVmFsdWVEZWNsLCBwdWJsaWMgRGVjbENvbnRleHQgeworICBmcmllbmQgY2xhc3MgQVNURGVjbFJlYWRlcjsKKworICAvLy8gQ2xhdXNlcyBhc3NvaWNhdGVkIHdpdGggdGhpcyBtYXBwZXIgZGVjbGFyYXRpb24KKyAgTXV0YWJsZUFycmF5UmVmPE9NUENsYXVzZSAqPiBDbGF1c2VzOworCisgIC8vLyBNYXBwZXIgdmFyaWFibGUsIHdoaWNoIGlzICd2JyBpbiB0aGUgZXhhbXBsZSBhYm92ZQorICBFeHByICpNYXBwZXJWYXJSZWYgPSBudWxscHRyOworCisgIC8vLyBOYW1lIG9mIHRoZSBtYXBwZXIgdmFyaWFibGUKKyAgRGVjbGFyYXRpb25OYW1lIFZhck5hbWU7CisKKyAgTGF6eURlY2xQdHIgUHJldkRlY2xJblNjb3BlOworCisgIHZpcnR1YWwgdm9pZCBhbmNob3IoKTsKKworICBPTVBEZWNsYXJlTWFwcGVyRGVjbChLaW5kIERLLCBEZWNsQ29udGV4dCAqREMsIFNvdXJjZUxvY2F0aW9uIEwsCisgICAgICAgICAgICAgICAgICAgICAgIERlY2xhcmF0aW9uTmFtZSBOYW1lLCBRdWFsVHlwZSBUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgRGVjbGFyYXRpb25OYW1lIFZhck5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIE9NUERlY2xhcmVNYXBwZXJEZWNsICpQcmV2RGVjbEluU2NvcGUpCisgICAgICA6IFZhbHVlRGVjbChESywgREMsIEwsIE5hbWUsIFR5KSwgRGVjbENvbnRleHQoREspLCBWYXJOYW1lKFZhck5hbWUpLAorICAgICAgICBQcmV2RGVjbEluU2NvcGUoUHJldkRlY2xJblNjb3BlKSB7fQorCisgIHZvaWQgc2V0UHJldkRlY2xJblNjb3BlKE9NUERlY2xhcmVNYXBwZXJEZWNsICpQcmV2KSB7CisgICAgUHJldkRlY2xJblNjb3BlID0gUHJldjsKKyAgfQorCisgIC8vLyBTZXRzIGFuIGFycmF5IG9mIGNsYXVzZXMgdG8gdGhpcyBtYXBwZXIgZGVjbGFyYXRpb24KKyAgdm9pZCBzZXRDbGF1c2VzKEFycmF5UmVmPE9NUENsYXVzZSAqPiBDTCk7CisKK3B1YmxpYzoKKyAgLy8vIENyZWF0ZXMgZGVjbGFyZSBtYXBwZXIgbm9kZS4KKyAgc3RhdGljIE9NUERlY2xhcmVNYXBwZXJEZWNsICpDcmVhdGUoQVNUQ29udGV4dCAmQywgRGVjbENvbnRleHQgKkRDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBMLCBEZWNsYXJhdGlvbk5hbWUgTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgVCwgRGVjbGFyYXRpb25OYW1lIFZhck5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9NUERlY2xhcmVNYXBwZXJEZWNsICpQcmV2RGVjbEluU2NvcGUpOworICAvLy8gQ3JlYXRlcyBkZXNlcmlhbGl6ZWQgZGVjbGFyZSBtYXBwZXIgbm9kZS4KKyAgc3RhdGljIE9NUERlY2xhcmVNYXBwZXJEZWNsICpDcmVhdGVEZXNlcmlhbGl6ZWQoQVNUQ29udGV4dCAmQywgdW5zaWduZWQgSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE4pOworCisgIC8vLyBDcmVhdGVzIGFuIGFycmF5IG9mIGNsYXVzZXMgdG8gdGhpcyBtYXBwZXIgZGVjbGFyYXRpb24gYW5kIGludGlhbGl6ZXMKKyAgLy8vIHRoZW0uCisgIHZvaWQgQ3JlYXRlQ2xhdXNlcyhBU1RDb250ZXh0ICZDLCBBcnJheVJlZjxPTVBDbGF1c2UgKj4gQ0wpOworCisgIHVzaW5nIGNsYXVzZWxpc3RfaXRlcmF0b3IgPSBNdXRhYmxlQXJyYXlSZWY8T01QQ2xhdXNlICo+OjppdGVyYXRvcjsKKyAgdXNpbmcgY2xhdXNlbGlzdF9jb25zdF9pdGVyYXRvciA9IEFycmF5UmVmPGNvbnN0IE9NUENsYXVzZSAqPjo6aXRlcmF0b3I7CisgIHVzaW5nIGNsYXVzZWxpc3RfcmFuZ2UgPSBsbHZtOjppdGVyYXRvcl9yYW5nZTxjbGF1c2VsaXN0X2l0ZXJhdG9yPjsKKyAgdXNpbmcgY2xhdXNlbGlzdF9jb25zdF9yYW5nZSA9CisgICAgICBsbHZtOjppdGVyYXRvcl9yYW5nZTxjbGF1c2VsaXN0X2NvbnN0X2l0ZXJhdG9yPjsKKworICB1bnNpZ25lZCBjbGF1c2VsaXN0X3NpemUoKSBjb25zdCB7IHJldHVybiBDbGF1c2VzLnNpemUoKTsgfQorICBib29sIGNsYXVzZWxpc3RfZW1wdHkoKSBjb25zdCB7IHJldHVybiBDbGF1c2VzLmVtcHR5KCk7IH0KKworICBjbGF1c2VsaXN0X3JhbmdlIGNsYXVzZWxpc3RzKCkgeworICAgIHJldHVybiBjbGF1c2VsaXN0X3JhbmdlKGNsYXVzZWxpc3RfYmVnaW4oKSwgY2xhdXNlbGlzdF9lbmQoKSk7CisgIH0KKyAgY2xhdXNlbGlzdF9jb25zdF9yYW5nZSBjbGF1c2VsaXN0cygpIGNvbnN0IHsKKyAgICByZXR1cm4gY2xhdXNlbGlzdF9jb25zdF9yYW5nZShjbGF1c2VsaXN0X2JlZ2luKCksIGNsYXVzZWxpc3RfZW5kKCkpOworICB9CisgIGNsYXVzZWxpc3RfaXRlcmF0b3IgY2xhdXNlbGlzdF9iZWdpbigpIHsgcmV0dXJuIENsYXVzZXMuYmVnaW4oKTsgfQorICBjbGF1c2VsaXN0X2l0ZXJhdG9yIGNsYXVzZWxpc3RfZW5kKCkgeyByZXR1cm4gQ2xhdXNlcy5lbmQoKTsgfQorICBjbGF1c2VsaXN0X2NvbnN0X2l0ZXJhdG9yIGNsYXVzZWxpc3RfYmVnaW4oKSBjb25zdCB7IHJldHVybiBDbGF1c2VzLmJlZ2luKCk7IH0KKyAgY2xhdXNlbGlzdF9jb25zdF9pdGVyYXRvciBjbGF1c2VsaXN0X2VuZCgpIGNvbnN0IHsgcmV0dXJuIENsYXVzZXMuZW5kKCk7IH0KKworICAvLy8gR2V0IHRoZSB2YXJpYWJsZSBkZWNsYXJlZCBpbiB0aGUgbWFwcGVyCisgIEV4cHIgKmdldE1hcHBlclZhclJlZigpIHsgcmV0dXJuIE1hcHBlclZhclJlZjsgfQorICBjb25zdCBFeHByICpnZXRNYXBwZXJWYXJSZWYoKSBjb25zdCB7IHJldHVybiBNYXBwZXJWYXJSZWY7IH0KKyAgLy8vIFNldCB0aGUgdmFyaWFibGUgZGVjbGFyZWQgaW4gdGhlIG1hcHBlcgorICB2b2lkIHNldE1hcHBlclZhclJlZihFeHByICpNYXBwZXJWYXJSZWZFKSB7IE1hcHBlclZhclJlZiA9IE1hcHBlclZhclJlZkU7IH0KKworICAvLy8gR2V0IHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBkZWNsYXJlZCBpbiB0aGUgbWFwcGVyCisgIERlY2xhcmF0aW9uTmFtZSBnZXRWYXJOYW1lKCkgeyByZXR1cm4gVmFyTmFtZTsgfQorCisgIC8vLyBHZXQgcmVmZXJlbmNlIHRvIHByZXZpb3VzIGRlY2xhcmUgbWFwcGVyIGNvbnN0cnVjdCBpbiB0aGUgc2FtZQorICAvLy8gc2NvcGUgd2l0aCB0aGUgc2FtZSBuYW1lLgorICBPTVBEZWNsYXJlTWFwcGVyRGVjbCAqZ2V0UHJldkRlY2xJblNjb3BlKCk7CisgIGNvbnN0IE9NUERlY2xhcmVNYXBwZXJEZWNsICpnZXRQcmV2RGVjbEluU2NvcGUoKSBjb25zdDsKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IERlY2wgKkQpIHsgcmV0dXJuIGNsYXNzb2ZLaW5kKEQtPmdldEtpbmQoKSk7IH0KKyAgc3RhdGljIGJvb2wgY2xhc3NvZktpbmQoS2luZCBLKSB7IHJldHVybiBLID09IE9NUERlY2xhcmVNYXBwZXI7IH0KKyAgc3RhdGljIERlY2xDb250ZXh0ICpjYXN0VG9EZWNsQ29udGV4dChjb25zdCBPTVBEZWNsYXJlTWFwcGVyRGVjbCAqRCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxEZWNsQ29udGV4dCAqPihjb25zdF9jYXN0PE9NUERlY2xhcmVNYXBwZXJEZWNsICo+KEQpKTsKKyAgfQorICBzdGF0aWMgT01QRGVjbGFyZU1hcHBlckRlY2wgKmNhc3RGcm9tRGVjbENvbnRleHQoY29uc3QgRGVjbENvbnRleHQgKkRDKSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9NUERlY2xhcmVNYXBwZXJEZWNsICo+KGNvbnN0X2Nhc3Q8RGVjbENvbnRleHQgKj4oREMpKTsKKyAgfQorfTsKKwogLy8vIFBzZXVkbyBkZWNsYXJhdGlvbiBmb3IgY2FwdHVyaW5nIGV4cHJlc3Npb25zLiBBbHNvIGlzIHVzZWQgZm9yIGNhcHR1cmluZyBvZgogLy8vIG5vbi1zdGF0aWMgZGF0YSBtZW1iZXJzIGluIG5vbi1zdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucy4KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xUZW1wbGF0ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xUZW1wbGF0ZS5oCmluZGV4IGUwZWE3Y2IuLjkwMmUwOTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsVGVtcGxhdGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbFRlbXBsYXRlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGVjbFRlbXBsYXRlLmggLSBDbGFzc2VzIGZvciByZXByZXNlbnRpbmcgQysrIHRlbXBsYXRlcyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTc1MSw2ICs3NTAsNyBAQAogICAgIHJldHVybiBnZXRNb3N0UmVjZW50RGVjbCgpOwogICB9CiAKKyAgdm9pZCBhbmNob3IoKSBvdmVycmlkZTsKIHByb3RlY3RlZDoKICAgdGVtcGxhdGUgPHR5cGVuYW1lIEVudHJ5VHlwZT4gc3RydWN0IFNwZWNFbnRyeVRyYWl0cyB7CiAgICAgdXNpbmcgRGVjbFR5cGUgPSBFbnRyeVR5cGU7CkBAIC0xMDkzLDYgKzEwOTMsOSBAQAogICAvLy8gdGVtcGxhdGUuCiAgIEFycmF5UmVmPFRlbXBsYXRlQXJndW1lbnQ+IGdldEluamVjdGVkVGVtcGxhdGVBcmdzKCk7CiAKKyAgLy8vIE1lcmdlIFxwIFByZXYgd2l0aCBvdXIgUmVkZWNsYXJhYmxlVGVtcGxhdGVEZWNsOjpDb21tb24uCisgIHZvaWQgbWVyZ2VQcmV2RGVjbChGdW5jdGlvblRlbXBsYXRlRGVjbCAqUHJldik7CisKICAgLy8vIENyZWF0ZSBhIGZ1bmN0aW9uIHRlbXBsYXRlIG5vZGUuCiAgIHN0YXRpYyBGdW5jdGlvblRlbXBsYXRlRGVjbCAqQ3JlYXRlKEFTVENvbnRleHQgJkMsIERlY2xDb250ZXh0ICpEQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTCwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsVmlzaXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xWaXNpdG9yLmgKaW5kZXggNTIwYTRhMS4uODY5MGNkZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xWaXNpdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xWaXNpdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGVjbFZpc2l0b3IuaCAtIFZpc2l0b3IgZm9yIERlY2wgc3ViY2xhc3NlcyAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTIxLDE1ICsyMCwxMiBAQAogI2luY2x1ZGUgImNsYW5nL0FTVC9EZWNsT2JqQy5oIgogI2luY2x1ZGUgImNsYW5nL0FTVC9EZWNsT3Blbk1QLmgiCiAjaW5jbHVkZSAiY2xhbmcvQVNUL0RlY2xUZW1wbGF0ZS5oIgorI2luY2x1ZGUgImxsdm0vQURUL1NUTEV4dHJhcy5oIgogI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9FcnJvckhhbmRsaW5nLmgiCiAKIG5hbWVzcGFjZSBjbGFuZyB7CiAKIG5hbWVzcGFjZSBkZWNsdmlzaXRvciB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgbWFrZV9wdHIgeyB1c2luZyB0eXBlID0gVCAqOyB9OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBtYWtlX2NvbnN0X3B0ciB7IHVzaW5nIHR5cGUgPSBjb25zdCBUICo7IH07Ci0KIC8vLyBBIHNpbXBsZSB2aXNpdG9yIGNsYXNzIHRoYXQgaGVscHMgY3JlYXRlIGRlY2xhcmF0aW9uIHZpc2l0b3JzLgogdGVtcGxhdGU8dGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBQdHIsIHR5cGVuYW1lIEltcGxDbGFzcywgdHlwZW5hbWUgUmV0VHk9dm9pZD4KIGNsYXNzIEJhc2UgewpAQCAtNjYsMTYgKzYyLDE2IEBACiAvLy8KIC8vLyBUaGlzIGNsYXNzIGRvZXMgbm90IHByZXNlcnZlIGNvbnN0bmVzcyBvZiBEZWNsIHBvaW50ZXJzIChzZWUgYWxzbwogLy8vIENvbnN0RGVjbFZpc2l0b3IpLgotdGVtcGxhdGU8dHlwZW5hbWUgSW1wbENsYXNzLCB0eXBlbmFtZSBSZXRUeSA9IHZvaWQ+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW1wbENsYXNzLCB0eXBlbmFtZSBSZXRUeSA9IHZvaWQ+CiBjbGFzcyBEZWNsVmlzaXRvcgotIDogcHVibGljIGRlY2x2aXNpdG9yOjpCYXNlPGRlY2x2aXNpdG9yOjptYWtlX3B0ciwgSW1wbENsYXNzLCBSZXRUeT4ge307CisgICAgOiBwdWJsaWMgZGVjbHZpc2l0b3I6OkJhc2U8c3RkOjphZGRfcG9pbnRlciwgSW1wbENsYXNzLCBSZXRUeT4ge307CiAKIC8vLyBBIHNpbXBsZSB2aXNpdG9yIGNsYXNzIHRoYXQgaGVscHMgY3JlYXRlIGRlY2xhcmF0aW9uIHZpc2l0b3JzLgogLy8vCiAvLy8gVGhpcyBjbGFzcyBwcmVzZXJ2ZXMgY29uc3RuZXNzIG9mIERlY2wgcG9pbnRlcnMgKHNlZSBhbHNvIERlY2xWaXNpdG9yKS4KLXRlbXBsYXRlPHR5cGVuYW1lIEltcGxDbGFzcywgdHlwZW5hbWUgUmV0VHkgPSB2b2lkPgordGVtcGxhdGUgPHR5cGVuYW1lIEltcGxDbGFzcywgdHlwZW5hbWUgUmV0VHkgPSB2b2lkPgogY2xhc3MgQ29uc3REZWNsVmlzaXRvcgotIDogcHVibGljIGRlY2x2aXNpdG9yOjpCYXNlPGRlY2x2aXNpdG9yOjptYWtlX2NvbnN0X3B0ciwgSW1wbENsYXNzLCBSZXRUeT4ge307CisgICAgOiBwdWJsaWMgZGVjbHZpc2l0b3I6OkJhc2U8bGx2bTo6bWFrZV9jb25zdF9wdHIsIEltcGxDbGFzcywgUmV0VHk+IHt9OwogCiB9IC8vIG5hbWVzcGFjZSBjbGFuZwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbGFyYXRpb25OYW1lLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVjbGFyYXRpb25OYW1lLmgKaW5kZXggZDE5NjIzMy4uZTVkMzQzOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlY2xhcmF0aW9uTmFtZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZWNsYXJhdGlvbk5hbWUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEZWNsYXJhdGlvbk5hbWUuaCAtIFJlcHJlc2VudGF0aW9uIG9mIGRlY2xhcmF0aW9uIG5hbWVzIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNzI5LDkgKzcyOCwxMCBAQAogICAvLy8gZ2V0TmFtZWRUeXBlSW5mbyAtIFJldHVybnMgdGhlIHNvdXJjZSB0eXBlIGluZm8gYXNzb2NpYXRlZCB0bwogICAvLy8gdGhlIG5hbWUuIEFzc3VtZXMgaXQgaXMgYSBjb25zdHJ1Y3RvciwgZGVzdHJ1Y3RvciBvciBjb252ZXJzaW9uLgogICBUeXBlU291cmNlSW5mbyAqZ2V0TmFtZWRUeXBlSW5mbygpIGNvbnN0IHsKLSAgICBhc3NlcnQoTmFtZS5nZXROYW1lS2luZCgpID09IERlY2xhcmF0aW9uTmFtZTo6Q1hYQ29uc3RydWN0b3JOYW1lIHx8Ci0gICAgICAgICAgIE5hbWUuZ2V0TmFtZUtpbmQoKSA9PSBEZWNsYXJhdGlvbk5hbWU6OkNYWERlc3RydWN0b3JOYW1lIHx8Ci0gICAgICAgICAgIE5hbWUuZ2V0TmFtZUtpbmQoKSA9PSBEZWNsYXJhdGlvbk5hbWU6OkNYWENvbnZlcnNpb25GdW5jdGlvbk5hbWUpOworICAgIGlmIChOYW1lLmdldE5hbWVLaW5kKCkgIT0gRGVjbGFyYXRpb25OYW1lOjpDWFhDb25zdHJ1Y3Rvck5hbWUgJiYKKyAgICAgICAgTmFtZS5nZXROYW1lS2luZCgpICE9IERlY2xhcmF0aW9uTmFtZTo6Q1hYRGVzdHJ1Y3Rvck5hbWUgJiYKKyAgICAgICAgTmFtZS5nZXROYW1lS2luZCgpICE9IERlY2xhcmF0aW9uTmFtZTo6Q1hYQ29udmVyc2lvbkZ1bmN0aW9uTmFtZSkKKyAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBMb2NJbmZvLk5hbWVkVHlwZS5USW5mbzsKICAgfQogCkBAIC03NDcsNyArNzQ3LDggQEAKICAgLy8vIGdldENYWE9wZXJhdG9yTmFtZVJhbmdlIC0gR2V0cyB0aGUgcmFuZ2Ugb2YgdGhlIG9wZXJhdG9yIG5hbWUKICAgLy8vICh3aXRob3V0IHRoZSBvcGVyYXRvciBrZXl3b3JkKS4gQXNzdW1lcyBpdCBpcyBhIChub24tbGl0ZXJhbCkgb3BlcmF0b3IuCiAgIFNvdXJjZVJhbmdlIGdldENYWE9wZXJhdG9yTmFtZVJhbmdlKCkgY29uc3QgewotICAgIGFzc2VydChOYW1lLmdldE5hbWVLaW5kKCkgPT0gRGVjbGFyYXRpb25OYW1lOjpDWFhPcGVyYXRvck5hbWUpOworICAgIGlmIChOYW1lLmdldE5hbWVLaW5kKCkgIT0gRGVjbGFyYXRpb25OYW1lOjpDWFhPcGVyYXRvck5hbWUpCisgICAgICByZXR1cm4gU291cmNlUmFuZ2UoKTsKICAgICByZXR1cm4gU291cmNlUmFuZ2UoCiAgICAgIFNvdXJjZUxvY2F0aW9uOjpnZXRGcm9tUmF3RW5jb2RpbmcoTG9jSW5mby5DWFhPcGVyYXRvck5hbWUuQmVnaW5PcE5hbWVMb2MpLAogICAgICBTb3VyY2VMb2NhdGlvbjo6Z2V0RnJvbVJhd0VuY29kaW5nKExvY0luZm8uQ1hYT3BlcmF0b3JOYW1lLkVuZE9wTmFtZUxvYykKQEAgLTc2Niw3ICs3NjcsOCBAQAogICAvLy8gb3BlcmF0b3IgbmFtZSAobm90IHRoZSBvcGVyYXRvciBrZXl3b3JkKS4KICAgLy8vIEFzc3VtZXMgaXQgaXMgYSBsaXRlcmFsIG9wZXJhdG9yLgogICBTb3VyY2VMb2NhdGlvbiBnZXRDWFhMaXRlcmFsT3BlcmF0b3JOYW1lTG9jKCkgY29uc3QgewotICAgIGFzc2VydChOYW1lLmdldE5hbWVLaW5kKCkgPT0gRGVjbGFyYXRpb25OYW1lOjpDWFhMaXRlcmFsT3BlcmF0b3JOYW1lKTsKKyAgICBpZiAoTmFtZS5nZXROYW1lS2luZCgpICE9IERlY2xhcmF0aW9uTmFtZTo6Q1hYTGl0ZXJhbE9wZXJhdG9yTmFtZSkKKyAgICAgIHJldHVybiBTb3VyY2VMb2NhdGlvbigpOwogICAgIHJldHVybiBTb3VyY2VMb2NhdGlvbjo6CiAgICAgICBnZXRGcm9tUmF3RW5jb2RpbmcoTG9jSW5mby5DWFhMaXRlcmFsT3BlcmF0b3JOYW1lLk9wTmFtZUxvYyk7CiAgIH0KQEAgLTg1OSw5ICs4NjEsNiBAQAogICB9CiB9OwogCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzUG9kTGlrZTxjbGFuZzo6RGVjbGFyYXRpb25OYW1lPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLQogfSAvLyBuYW1lc3BhY2UgbGx2bQogCiAjZW5kaWYgLy8gTExWTV9DTEFOR19BU1RfREVDTEFSQVRJT05OQU1FX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZXBlbmRlbnREaWFnbm9zdGljLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRGVwZW5kZW50RGlhZ25vc3RpYy5oCmluZGV4IGMyMWVmNzkuLjBhOThkZWMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9EZXBlbmRlbnREaWFnbm9zdGljLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0RlcGVuZGVudERpYWdub3N0aWMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIERlcGVuZGVudERpYWdub3N0aWMuaCAtIERlcGVuZGVudGx5LWdlbmVyYXRlZCBkaWFnbm9zdGljcyAtLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0V2YWx1YXRlZEV4cHJWaXNpdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRXZhbHVhdGVkRXhwclZpc2l0b3IuaAppbmRleCAxYWVjNWFlLi4yZjZjMzE0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRXZhbHVhdGVkRXhwclZpc2l0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRXZhbHVhdGVkRXhwclZpc2l0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEV2YWx1YXRlZEV4cHJWaXNpdG9yLmggLSBFdmFsdWF0ZWQgZXhwcmVzc2lvbiB2aXNpdG9yIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTksNiArMTgsNyBAQAogI2luY2x1ZGUgImNsYW5nL0FTVC9FeHByLmgiCiAjaW5jbHVkZSAiY2xhbmcvQVNUL0V4cHJDWFguaCIKICNpbmNsdWRlICJjbGFuZy9BU1QvU3RtdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJsbHZtL0FEVC9TVExFeHRyYXMuaCIKIAogbmFtZXNwYWNlIGNsYW5nIHsKIApAQCAtMTA3LDIzICsxMDcsMjIgQEAKIH07CiAKIC8vLyBFdmFsdWF0ZWRFeHByVmlzaXRvciAtIFRoaXMgY2xhc3MgdmlzaXRzICdFeHByIConcwotdGVtcGxhdGU8dHlwZW5hbWUgSW1wbENsYXNzPgordGVtcGxhdGUgPHR5cGVuYW1lIEltcGxDbGFzcz4KIGNsYXNzIEV2YWx1YXRlZEV4cHJWaXNpdG9yCi0gOiBwdWJsaWMgRXZhbHVhdGVkRXhwclZpc2l0b3JCYXNlPG1ha2VfcHRyLCBJbXBsQ2xhc3M+IHsKKyAgICA6IHB1YmxpYyBFdmFsdWF0ZWRFeHByVmlzaXRvckJhc2U8c3RkOjphZGRfcG9pbnRlciwgSW1wbENsYXNzPiB7CiBwdWJsaWM6Ci0gIGV4cGxpY2l0IEV2YWx1YXRlZEV4cHJWaXNpdG9yKGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQpIDoKLSAgICBFdmFsdWF0ZWRFeHByVmlzaXRvckJhc2U8bWFrZV9wdHIsIEltcGxDbGFzcz4oQ29udGV4dCkgeyB9CisgIGV4cGxpY2l0IEV2YWx1YXRlZEV4cHJWaXNpdG9yKGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQpCisgICAgICA6IEV2YWx1YXRlZEV4cHJWaXNpdG9yQmFzZTxzdGQ6OmFkZF9wb2ludGVyLCBJbXBsQ2xhc3M+KENvbnRleHQpIHt9CiB9OwogCiAvLy8gQ29uc3RFdmFsdWF0ZWRFeHByVmlzaXRvciAtIFRoaXMgY2xhc3MgdmlzaXRzICdjb25zdCBFeHByIConcy4KLXRlbXBsYXRlPHR5cGVuYW1lIEltcGxDbGFzcz4KK3RlbXBsYXRlIDx0eXBlbmFtZSBJbXBsQ2xhc3M+CiBjbGFzcyBDb25zdEV2YWx1YXRlZEV4cHJWaXNpdG9yCi0gOiBwdWJsaWMgRXZhbHVhdGVkRXhwclZpc2l0b3JCYXNlPG1ha2VfY29uc3RfcHRyLCBJbXBsQ2xhc3M+IHsKKyAgICA6IHB1YmxpYyBFdmFsdWF0ZWRFeHByVmlzaXRvckJhc2U8bGx2bTo6bWFrZV9jb25zdF9wdHIsIEltcGxDbGFzcz4gewogcHVibGljOgotICBleHBsaWNpdCBDb25zdEV2YWx1YXRlZEV4cHJWaXNpdG9yKGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQpIDoKLSAgICBFdmFsdWF0ZWRFeHByVmlzaXRvckJhc2U8bWFrZV9jb25zdF9wdHIsIEltcGxDbGFzcz4oQ29udGV4dCkgeyB9CisgIGV4cGxpY2l0IENvbnN0RXZhbHVhdGVkRXhwclZpc2l0b3IoY29uc3QgQVNUQ29udGV4dCAmQ29udGV4dCkKKyAgICAgIDogRXZhbHVhdGVkRXhwclZpc2l0b3JCYXNlPGxsdm06Om1ha2VfY29uc3RfcHRyLCBJbXBsQ2xhc3M+KENvbnRleHQpIHt9CiB9OwotCiB9CiAKICNlbmRpZiAvLyBMTFZNX0NMQU5HX0FTVF9FVkFMVUFURURFWFBSVklTSVRPUl9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRXhwci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0V4cHIuaAppbmRleCA4YmMxNGUxLi5kYWYzM2RlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRXhwci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9FeHByLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBFeHByLmggLSBDbGFzc2VzIGZvciByZXByZXNlbnRpbmcgZXhwcmVzc2lvbnMgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTIzLDE1ICsyMiwxOSBAQAogI2luY2x1ZGUgImNsYW5nL0FTVC9UZW1wbGF0ZUJhc2UuaCIKICNpbmNsdWRlICJjbGFuZy9BU1QvVHlwZS5oIgogI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0NoYXJJbmZvLmgiCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRml4ZWRQb2ludC5oIgogI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0xhbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAiY2xhbmcvQmFzaWMvU3luY1Njb3BlLmgiCiAjaW5jbHVkZSAiY2xhbmcvQmFzaWMvVHlwZVRyYWl0cy5oIgogI2luY2x1ZGUgImxsdm0vQURUL0FQRmxvYXQuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9BUFNJbnQuaCIKKyNpbmNsdWRlICJsbHZtL0FEVC9pdGVyYXRvci5oIgorI2luY2x1ZGUgImxsdm0vQURUL2l0ZXJhdG9yX3JhbmdlLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvU21hbGxWZWN0b3IuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9TdHJpbmdSZWYuaCIKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvQXRvbWljT3JkZXJpbmcuaCIKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvQ29tcGlsZXIuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvVHJhaWxpbmdPYmplY3RzLmgiCiAKIG5hbWVzcGFjZSBjbGFuZyB7CiAgIGNsYXNzIEFQVmFsdWU7CkBAIC01ODIsNyArNTg1LDggQEAKICAgLy8vIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCBpdCByZXR1cm5zIHRoZSBmb2xkZWQgY29uc3RhbnQgaW4gUmVzdWx0LiBJZgogICAvLy8gdGhlIGV4cHJlc3Npb24gaXMgYSBnbHZhbHVlLCBhbiBsdmFsdWUtdG8tcnZhbHVlIGNvbnZlcnNpb24gd2lsbCBiZQogICAvLy8gYXBwbGllZC4KLSAgYm9vbCBFdmFsdWF0ZUFzUlZhbHVlKEV2YWxSZXN1bHQgJlJlc3VsdCwgY29uc3QgQVNUQ29udGV4dCAmQ3R4KSBjb25zdDsKKyAgYm9vbCBFdmFsdWF0ZUFzUlZhbHVlKEV2YWxSZXN1bHQgJlJlc3VsdCwgY29uc3QgQVNUQ29udGV4dCAmQ3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBJbkNvbnN0YW50Q29udGV4dCA9IGZhbHNlKSBjb25zdDsKIAogICAvLy8gRXZhbHVhdGVBc0Jvb2xlYW5Db25kaXRpb24gLSBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGlzIGEgY29uc3RhbnQKICAgLy8vIHdoaWNoIHdlIGNhbiBmb2xkIGFuZCBjb252ZXJ0IHRvIGEgYm9vbGVhbiBjb25kaXRpb24gdXNpbmcKQEAgLTU5OSw3ICs2MDMsNyBAQAogCiAgIC8vLyBFdmFsdWF0ZUFzSW50IC0gUmV0dXJuIHRydWUgaWYgdGhpcyBpcyBhIGNvbnN0YW50IHdoaWNoIHdlIGNhbiBmb2xkIGFuZAogICAvLy8gY29udmVydCB0byBhbiBpbnRlZ2VyLCB1c2luZyBhbnkgY3JhenkgdGVjaG5pcXVlIHRoYXQgd2Ugd2FudCB0by4KLSAgYm9vbCBFdmFsdWF0ZUFzSW50KGxsdm06OkFQU0ludCAmUmVzdWx0LCBjb25zdCBBU1RDb250ZXh0ICZDdHgsCisgIGJvb2wgRXZhbHVhdGVBc0ludChFdmFsUmVzdWx0ICZSZXN1bHQsIGNvbnN0IEFTVENvbnRleHQgJkN0eCwKICAgICAgICAgICAgICAgICAgICAgIFNpZGVFZmZlY3RzS2luZCBBbGxvd1NpZGVFZmZlY3RzID0gU0VfTm9TaWRlRWZmZWN0cykgY29uc3Q7CiAKICAgLy8vIEV2YWx1YXRlQXNGbG9hdCAtIFJldHVybiB0cnVlIGlmIHRoaXMgaXMgYSBjb25zdGFudCB3aGljaCB3ZSBjYW4gZm9sZCBhbmQKQEAgLTYwOSw2ICs2MTMsMTIgQEAKICAgRXZhbHVhdGVBc0Zsb2F0KGxsdm06OkFQRmxvYXQgJlJlc3VsdCwgY29uc3QgQVNUQ29udGV4dCAmQ3R4LAogICAgICAgICAgICAgICAgICAgU2lkZUVmZmVjdHNLaW5kIEFsbG93U2lkZUVmZmVjdHMgPSBTRV9Ob1NpZGVFZmZlY3RzKSBjb25zdDsKIAorICAvLy8gRXZhbHVhdGVBc0Zsb2F0IC0gUmV0dXJuIHRydWUgaWYgdGhpcyBpcyBhIGNvbnN0YW50IHdoaWNoIHdlIGNhbiBmb2xkIGFuZAorICAvLy8gY29udmVydCB0byBhIGZpeGVkIHBvaW50IHZhbHVlLgorICBib29sIEV2YWx1YXRlQXNGaXhlZFBvaW50KAorICAgICAgRXZhbFJlc3VsdCAmUmVzdWx0LCBjb25zdCBBU1RDb250ZXh0ICZDdHgsCisgICAgICBTaWRlRWZmZWN0c0tpbmQgQWxsb3dTaWRlRWZmZWN0cyA9IFNFX05vU2lkZUVmZmVjdHMpIGNvbnN0OworCiAgIC8vLyBpc0V2YWx1YXRhYmxlIC0gQ2FsbCBFdmFsdWF0ZUFzUlZhbHVlIHRvIHNlZSBpZiB0aGlzIGV4cHJlc3Npb24gY2FuIGJlCiAgIC8vLyBjb25zdGFudCBmb2xkZWQgd2l0aG91dCBzaWRlLWVmZmVjdHMsIGJ1dCBkaXNjYXJkIHRoZSByZXN1bHQuCiAgIGJvb2wgaXNFdmFsdWF0YWJsZShjb25zdCBBU1RDb250ZXh0ICZDdHgsCkBAIC02MzEsOCArNjQxLDEzIEBACiAgIC8vLyBFdmFsdWF0ZUtub3duQ29uc3RJbnQgLSBDYWxsIEV2YWx1YXRlQXNSVmFsdWUgYW5kIHJldHVybiB0aGUgZm9sZGVkCiAgIC8vLyBpbnRlZ2VyLiBUaGlzIG11c3QgYmUgY2FsbGVkIG9uIGFuIGV4cHJlc3Npb24gdGhhdCBjb25zdGFudCBmb2xkcyB0byBhbgogICAvLy8gaW50ZWdlci4KLSAgbGx2bTo6QVBTSW50IEV2YWx1YXRlS25vd25Db25zdEludChjb25zdCBBU1RDb250ZXh0ICZDdHgsCi0gICAgICAgICAgICAgICAgICAgIFNtYWxsVmVjdG9ySW1wbDxQYXJ0aWFsRGlhZ25vc3RpY0F0PiAqRGlhZyA9IG51bGxwdHIpIGNvbnN0OworICBsbHZtOjpBUFNJbnQgRXZhbHVhdGVLbm93bkNvbnN0SW50KAorICAgICAgY29uc3QgQVNUQ29udGV4dCAmQ3R4LAorICAgICAgU21hbGxWZWN0b3JJbXBsPFBhcnRpYWxEaWFnbm9zdGljQXQ+ICpEaWFnID0gbnVsbHB0cikgY29uc3Q7CisKKyAgbGx2bTo6QVBTSW50IEV2YWx1YXRlS25vd25Db25zdEludENoZWNrT3ZlcmZsb3coCisgICAgICBjb25zdCBBU1RDb250ZXh0ICZDdHgsCisgICAgICBTbWFsbFZlY3RvckltcGw8UGFydGlhbERpYWdub3N0aWNBdD4gKkRpYWcgPSBudWxscHRyKSBjb25zdDsKIAogICB2b2lkIEV2YWx1YXRlRm9yT3ZlcmZsb3coY29uc3QgQVNUQ29udGV4dCAmQ3R4KSBjb25zdDsKIApAQCAtNzMxLDY3ICs3NDYsMTEwIEBACiAgIC8vLyBtZW1iZXIgZXhwcmVzc2lvbi4KICAgc3RhdGljIFF1YWxUeXBlIGZpbmRCb3VuZE1lbWJlclR5cGUoY29uc3QgRXhwciAqZXhwcik7CiAKLSAgLy8vIElnbm9yZUltcENhc3RzIC0gU2tpcCBwYXN0IGFueSBpbXBsaWNpdCBjYXN0cyB3aGljaCBtaWdodAotICAvLy8gc3Vycm91bmQgdGhpcyBleHByZXNzaW9uLiAgT25seSBza2lwcyBJbXBsaWNpdENhc3RFeHBycy4KKyAgLy8vIFNraXAgcGFzdCBhbnkgaW1wbGljaXQgY2FzdHMgd2hpY2ggbWlnaHQgc3Vycm91bmQgdGhpcyBleHByZXNzaW9uIHVudGlsCisgIC8vLyByZWFjaGluZyBhIGZpeGVkIHBvaW50LiBTa2lwczoKKyAgLy8vICogSW1wbGljaXRDYXN0RXhwcgorICAvLy8gKiBGdWxsRXhwcgogICBFeHByICpJZ25vcmVJbXBDYXN0cygpIExMVk1fUkVBRE9OTFk7Ci0KLSAgLy8vIElnbm9yZUltcGxpY2l0IC0gU2tpcCBwYXN0IGFueSBpbXBsaWNpdCBBU1Qgbm9kZXMgd2hpY2ggbWlnaHQKLSAgLy8vIHN1cnJvdW5kIHRoaXMgZXhwcmVzc2lvbi4KLSAgRXhwciAqSWdub3JlSW1wbGljaXQoKSBMTFZNX1JFQURPTkxZIHsKLSAgICByZXR1cm4gY2FzdDxFeHByPihTdG10OjpJZ25vcmVJbXBsaWNpdCgpKTsKKyAgY29uc3QgRXhwciAqSWdub3JlSW1wQ2FzdHMoKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RXhwciAqPih0aGlzKS0+SWdub3JlSW1wQ2FzdHMoKTsKICAgfQogCi0gIGNvbnN0IEV4cHIgKklnbm9yZUltcGxpY2l0KCkgY29uc3QgTExWTV9SRUFET05MWSB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RXhwcio+KHRoaXMpLT5JZ25vcmVJbXBsaWNpdCgpOwotICB9Ci0KLSAgLy8vIElnbm9yZVBhcmVucyAtIElnbm9yZSBwYXJlbnRoZXNlcy4gIElmIHRoaXMgRXhwciBpcyBhIFBhcmVuRXhwciwgcmV0dXJuCi0gIC8vLyAgaXRzIHN1YmV4cHJlc3Npb24uICBJZiB0aGF0IHN1YmV4cHJlc3Npb24gaXMgYWxzbyBhIFBhcmVuRXhwciwKLSAgLy8vICB0aGVuIHRoaXMgbWV0aG9kIHJlY3Vyc2l2ZWx5IHJldHVybnMgaXRzIHN1YmV4cHJlc3Npb24sIGFuZCBzbyBmb3J0aC4KLSAgLy8vICBPdGhlcndpc2UsIHRoZSBtZXRob2QgcmV0dXJucyB0aGUgY3VycmVudCBFeHByLgotICBFeHByICpJZ25vcmVQYXJlbnMoKSBMTFZNX1JFQURPTkxZOwotCi0gIC8vLyBJZ25vcmVQYXJlbkNhc3RzIC0gSWdub3JlIHBhcmVudGhlc2VzIGFuZCBjYXN0cy4gIFN0cmlwIG9mZiBhbnkgUGFyZW5FeHByCi0gIC8vLyBvciBDYXN0RXhwcnMsIHJldHVybmluZyB0aGVpciBvcGVyYW5kLgotICBFeHByICpJZ25vcmVQYXJlbkNhc3RzKCkgTExWTV9SRUFET05MWTsKLQotICAvLy8gSWdub3JlIGNhc3RzLiAgU3RyaXAgb2ZmIGFueSBDYXN0RXhwcnMsIHJldHVybmluZyB0aGVpciBvcGVyYW5kLgorICAvLy8gU2tpcCBwYXN0IGFueSBjYXN0cyB3aGljaCBtaWdodCBzdXJyb3VuZCB0aGlzIGV4cHJlc3Npb24gdW50aWwgcmVhY2hpbmcKKyAgLy8vIGEgZml4ZWQgcG9pbnQuIFNraXBzOgorICAvLy8gKiBDYXN0RXhwcgorICAvLy8gKiBGdWxsRXhwcgorICAvLy8gKiBNYXRlcmlhbGl6ZVRlbXBvcmFyeUV4cHIKKyAgLy8vICogU3Vic3ROb25UeXBlVGVtcGxhdGVQYXJtRXhwcgogICBFeHByICpJZ25vcmVDYXN0cygpIExMVk1fUkVBRE9OTFk7CisgIGNvbnN0IEV4cHIgKklnbm9yZUNhc3RzKCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9jYXN0PEV4cHIgKj4odGhpcyktPklnbm9yZUNhc3RzKCk7CisgIH0KIAotICAvLy8gSWdub3JlUGFyZW5JbXBDYXN0cyAtIElnbm9yZSBwYXJlbnRoZXNlcyBhbmQgaW1wbGljaXQgY2FzdHMuICBTdHJpcCBvZmYKLSAgLy8vIGFueSBQYXJlbkV4cHIgb3IgSW1wbGljaXRDYXN0RXhwcnMsIHJldHVybmluZyB0aGVpciBvcGVyYW5kLgorICAvLy8gU2tpcCBwYXN0IGFueSBpbXBsaWNpdCBBU1Qgbm9kZXMgd2hpY2ggbWlnaHQgc3Vycm91bmQgdGhpcyBleHByZXNzaW9uCisgIC8vLyB1bnRpbCByZWFjaGluZyBhIGZpeGVkIHBvaW50LiBTa2lwczoKKyAgLy8vICogV2hhdCBJZ25vcmVJbXBDYXN0cygpIHNraXBzCisgIC8vLyAqIE1hdGVyaWFsaXplVGVtcG9yYXJ5RXhwcgorICAvLy8gKiBDWFhCaW5kVGVtcG9yYXJ5RXhwcgorICBFeHByICpJZ25vcmVJbXBsaWNpdCgpIExMVk1fUkVBRE9OTFk7CisgIGNvbnN0IEV4cHIgKklnbm9yZUltcGxpY2l0KCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9jYXN0PEV4cHIgKj4odGhpcyktPklnbm9yZUltcGxpY2l0KCk7CisgIH0KKworICAvLy8gU2tpcCBwYXN0IGFueSBwYXJlbnRoZXNlcyB3aGljaCBtaWdodCBzdXJyb3VuZCB0aGlzIGV4cHJlc3Npb24gdW50aWwKKyAgLy8vIHJlYWNoaW5nIGEgZml4ZWQgcG9pbnQuIFNraXBzOgorICAvLy8gKiBQYXJlbkV4cHIKKyAgLy8vICogVW5hcnlPcGVyYXRvciBpZiBgVU9fRXh0ZW5zaW9uYAorICAvLy8gKiBHZW5lcmljU2VsZWN0aW9uRXhwciBpZiBgIWlzUmVzdWx0RGVwZW5kZW50KClgCisgIC8vLyAqIENob29zZUV4cHIgaWYgYCFpc0NvbmRpdGlvbkRlcGVuZGVudCgpYAorICAvLy8gKiBDb25zdGFudEV4cHIKKyAgRXhwciAqSWdub3JlUGFyZW5zKCkgTExWTV9SRUFET05MWTsKKyAgY29uc3QgRXhwciAqSWdub3JlUGFyZW5zKCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9jYXN0PEV4cHIgKj4odGhpcyktPklnbm9yZVBhcmVucygpOworICB9CisKKyAgLy8vIFNraXAgcGFzdCBhbnkgcGFyZW50aGVzZXMgYW5kIGltcGxpY2l0IGNhc3RzIHdoaWNoIG1pZ2h0IHN1cnJvdW5kIHRoaXMKKyAgLy8vIGV4cHJlc3Npb24gdW50aWwgcmVhY2hpbmcgYSBmaXhlZCBwb2ludC4KKyAgLy8vIEZJWE1FOiBJZ25vcmVQYXJlbkltcENhc3RzIHJlYWxseSBvdWdodCB0byBiZSBlcXVpdmFsZW50IHRvCisgIC8vLyBJZ25vcmVQYXJlbnMoKSArIElnbm9yZUltcENhc3RzKCkgdW50aWwgcmVhY2hpbmcgYSBmaXhlZCBwb2ludC4gSG93ZXZlcgorICAvLy8gdGhpcyBpcyBjdXJyZW50bHkgbm90IHRoZSBjYXNlLiBJbnN0ZWFkIElnbm9yZVBhcmVuSW1wQ2FzdHMoKSBza2lwczoKKyAgLy8vICogV2hhdCBJZ25vcmVQYXJlbnMoKSBza2lwcworICAvLy8gKiBJbXBsaWNpdENhc3RFeHByCisgIC8vLyAqIE1hdGVyaWFsaXplVGVtcG9yYXJ5RXhwcgorICAvLy8gKiBTdWJzdE5vblR5cGVUZW1wbGF0ZVBhcm1FeHByCiAgIEV4cHIgKklnbm9yZVBhcmVuSW1wQ2FzdHMoKSBMTFZNX1JFQURPTkxZOworICBjb25zdCBFeHByICpJZ25vcmVQYXJlbkltcENhc3RzKCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9jYXN0PEV4cHIgKj4odGhpcyktPklnbm9yZVBhcmVuSW1wQ2FzdHMoKTsKKyAgfQogCi0gIC8vLyBJZ25vcmVDb252ZXJzaW9uT3BlcmF0b3IgLSBJZ25vcmUgY29udmVyc2lvbiBvcGVyYXRvci4gSWYgdGhpcyBFeHByIGlzIGEKLSAgLy8vIGNhbGwgdG8gYSBjb252ZXJzaW9uIG9wZXJhdG9yLCByZXR1cm4gdGhlIGFyZ3VtZW50LgorICAvLy8gU2tpcCBwYXN0IGFueSBwYXJlbnRoZXNlcyBhbmQgY2FzdHMgd2hpY2ggbWlnaHQgc3Vycm91bmQgdGhpcyBleHByZXNzaW9uCisgIC8vLyB1bnRpbCByZWFjaGluZyBhIGZpeGVkIHBvaW50LiBTa2lwczoKKyAgLy8vICogV2hhdCBJZ25vcmVQYXJlbnMoKSBza2lwcworICAvLy8gKiBXaGF0IElnbm9yZUNhc3RzKCkgc2tpcHMKKyAgRXhwciAqSWdub3JlUGFyZW5DYXN0cygpIExMVk1fUkVBRE9OTFk7CisgIGNvbnN0IEV4cHIgKklnbm9yZVBhcmVuQ2FzdHMoKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RXhwciAqPih0aGlzKS0+SWdub3JlUGFyZW5DYXN0cygpOworICB9CisKKyAgLy8vIFNraXAgY29udmVyc2lvbiBvcGVyYXRvcnMuIElmIHRoaXMgRXhwciBpcyBhIGNhbGwgdG8gYSBjb252ZXJzaW9uCisgIC8vLyBvcGVyYXRvciwgcmV0dXJuIHRoZSBhcmd1bWVudC4KICAgRXhwciAqSWdub3JlQ29udmVyc2lvbk9wZXJhdG9yKCkgTExWTV9SRUFET05MWTsKLQotICBjb25zdCBFeHByICpJZ25vcmVDb252ZXJzaW9uT3BlcmF0b3IoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxFeHByKj4odGhpcyktPklnbm9yZUNvbnZlcnNpb25PcGVyYXRvcigpOworICBjb25zdCBFeHByICpJZ25vcmVDb252ZXJzaW9uT3BlcmF0b3IoKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RXhwciAqPih0aGlzKS0+SWdub3JlQ29udmVyc2lvbk9wZXJhdG9yKCk7CiAgIH0KIAotICBjb25zdCBFeHByICpJZ25vcmVQYXJlbkltcENhc3RzKCkgY29uc3QgTExWTV9SRUFET05MWSB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RXhwcio+KHRoaXMpLT5JZ25vcmVQYXJlbkltcENhc3RzKCk7Ci0gIH0KLQotICAvLy8gSWdub3JlIHBhcmVudGhlc2VzIGFuZCBsdmFsdWUgY2FzdHMuICBTdHJpcCBvZmYgYW55IFBhcmVuRXhwciBhbmQKLSAgLy8vIENhc3RFeHBycyB0aGF0IHJlcHJlc2VudCBsdmFsdWUgY2FzdHMsIHJldHVybmluZyB0aGVpciBvcGVyYW5kLgorICAvLy8gU2tpcCBwYXN0IGFueSBwYXJlbnRoZXNlcyBhbmQgbHZhbHVlIGNhc3RzIHdoaWNoIG1pZ2h0IHN1cnJvdW5kIHRoaXMKKyAgLy8vIGV4cHJlc3Npb24gdW50aWwgcmVhY2hpbmcgYSBmaXhlZCBwb2ludC4gU2tpcHM6CisgIC8vLyAqIFdoYXQgSWdub3JlUGFyZW5zKCkgc2tpcHMKKyAgLy8vICogV2hhdCBJZ25vcmVDYXN0cygpIHNraXBzLCBleGNlcHQgdGhhdCBvbmx5IGx2YWx1ZS10by1ydmFsdWUKKyAgLy8vICAgY2FzdHMgYXJlIHNraXBwZWQKKyAgLy8vIEZJWE1FOiBUaGlzIGlzIGludGVuZGVkIHB1cmVseSBhcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIGZvciBjb2RlCisgIC8vLyB0aGF0IGhhc24ndCB5ZXQgYmVlbiByZXdyaXR0ZW4gdG8gZG8gdGhlIHJpZ2h0IHRoaW5nIGFib3V0IHRob3NlCisgIC8vLyBjYXN0cywgYW5kIG1heSBkaXNhcHBlYXIgYWxvbmcgd2l0aCB0aGUgbGFzdCBpbnRlcm5hbCB1c2UuCiAgIEV4cHIgKklnbm9yZVBhcmVuTFZhbHVlQ2FzdHMoKSBMTFZNX1JFQURPTkxZOwotCi0gIGNvbnN0IEV4cHIgKklnbm9yZVBhcmVuTFZhbHVlQ2FzdHMoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxFeHByKj4odGhpcyktPklnbm9yZVBhcmVuTFZhbHVlQ2FzdHMoKTsKKyAgY29uc3QgRXhwciAqSWdub3JlUGFyZW5MVmFsdWVDYXN0cygpIGNvbnN0IHsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxFeHByICo+KHRoaXMpLT5JZ25vcmVQYXJlbkxWYWx1ZUNhc3RzKCk7CiAgIH0KIAotICAvLy8gSWdub3JlUGFyZW5Ob29wQ2FzdHMgLSBJZ25vcmUgcGFyZW50aGVzZXMgYW5kIGNhc3RzIHRoYXQgZG8gbm90IGNoYW5nZSB0aGUKLSAgLy8vIHZhbHVlIChpbmNsdWRpbmcgcHRyLT5pbnQgY2FzdHMgb2YgdGhlIHNhbWUgc2l6ZSkuICBTdHJpcCBvZmYgYW55Ci0gIC8vLyBQYXJlbkV4cHIgb3IgQ2FzdEV4cHJzLCByZXR1cm5pbmcgdGhlaXIgb3BlcmFuZC4KLSAgRXhwciAqSWdub3JlUGFyZW5Ob29wQ2FzdHMoQVNUQ29udGV4dCAmQ3R4KSBMTFZNX1JFQURPTkxZOworICAvLy8gU2tpcCBwYXN0IGFueSBwYXJlbnRoZXNlIGFuZCBjYXN0cyB3aGljaCBkbyBub3QgY2hhbmdlIHRoZSB2YWx1ZQorICAvLy8gKGluY2x1ZGluZyBwdHItPmludCBjYXN0cyBvZiB0aGUgc2FtZSBzaXplKSB1bnRpbCByZWFjaGluZyBhIGZpeGVkIHBvaW50LgorICAvLy8gU2tpcHM6CisgIC8vLyAqIFdoYXQgSWdub3JlUGFyZW5zKCkgc2tpcHMKKyAgLy8vICogQ2FzdEV4cHIgd2hpY2ggZG8gbm90IGNoYW5nZSB0aGUgdmFsdWUKKyAgLy8vICogU3Vic3ROb25UeXBlVGVtcGxhdGVQYXJtRXhwcgorICBFeHByICpJZ25vcmVQYXJlbk5vb3BDYXN0cyhjb25zdCBBU1RDb250ZXh0ICZDdHgpIExMVk1fUkVBRE9OTFk7CisgIGNvbnN0IEV4cHIgKklnbm9yZVBhcmVuTm9vcENhc3RzKGNvbnN0IEFTVENvbnRleHQgJkN0eCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9jYXN0PEV4cHIgKj4odGhpcyktPklnbm9yZVBhcmVuTm9vcENhc3RzKEN0eCk7CisgIH0KIAotICAvLy8gSWdub3JlIHBhcmVudGhlc2VzIGFuZCBkZXJpdmVkLXRvLWJhc2UgY2FzdHMuCisgIC8vLyBTa2lwIHBhc3QgYW55IHBhcmVudGhlc2VzIGFuZCBkZXJpdmVkLXRvLWJhc2UgY2FzdHMgdW50aWwgcmVhY2hpbmcgYQorICAvLy8gZml4ZWQgcG9pbnQuIFNraXBzOgorICAvLy8gKiBXaGF0IElnbm9yZVBhcmVucygpIHNraXBzCisgIC8vLyAqIENhc3RFeHByIHdoaWNoIHJlcHJlc2VudCBhIGRlcml2ZWQtdG8tYmFzZSBjYXN0IChDS19EZXJpdmVkVG9CYXNlLAorICAvLy8gICBDS19VbmNoZWNrZWREZXJpdmVkVG9CYXNlIGFuZCBDS19Ob09wKQogICBFeHByICppZ25vcmVQYXJlbkJhc2VDYXN0cygpIExMVk1fUkVBRE9OTFk7Ci0KLSAgY29uc3QgRXhwciAqaWdub3JlUGFyZW5CYXNlQ2FzdHMoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxFeHByKj4odGhpcyktPmlnbm9yZVBhcmVuQmFzZUNhc3RzKCk7CisgIGNvbnN0IEV4cHIgKmlnbm9yZVBhcmVuQmFzZUNhc3RzKCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9jYXN0PEV4cHIgKj4odGhpcyktPmlnbm9yZVBhcmVuQmFzZUNhc3RzKCk7CiAgIH0KIAogICAvLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBleHByZXNzaW9uIGlzIGEgZGVmYXVsdCBmdW5jdGlvbiBhcmd1bWVudC4KQEAgLTgxMCwyNCArODY4LDYgQEAKICAgLy8vIFdoZXRoZXIgdGhpcyBleHByZXNzaW9uIGlzIGFuIGltcGxpY2l0IHJlZmVyZW5jZSB0byAndGhpcycgaW4gQysrLgogICBib29sIGlzSW1wbGljaXRDWFhUaGlzKCkgY29uc3Q7CiAKLSAgY29uc3QgRXhwciAqSWdub3JlSW1wQ2FzdHMoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxFeHByKj4odGhpcyktPklnbm9yZUltcENhc3RzKCk7Ci0gIH0KLSAgY29uc3QgRXhwciAqSWdub3JlUGFyZW5zKCkgY29uc3QgTExWTV9SRUFET05MWSB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RXhwcio+KHRoaXMpLT5JZ25vcmVQYXJlbnMoKTsKLSAgfQotICBjb25zdCBFeHByICpJZ25vcmVQYXJlbkNhc3RzKCkgY29uc3QgTExWTV9SRUFET05MWSB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RXhwcio+KHRoaXMpLT5JZ25vcmVQYXJlbkNhc3RzKCk7Ci0gIH0KLSAgLy8vIFN0cmlwIG9mZiBjYXN0cywgYnV0IGtlZXAgcGFyZW50aGVzZXMuCi0gIGNvbnN0IEV4cHIgKklnbm9yZUNhc3RzKCkgY29uc3QgTExWTV9SRUFET05MWSB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RXhwcio+KHRoaXMpLT5JZ25vcmVDYXN0cygpOwotICB9Ci0KLSAgY29uc3QgRXhwciAqSWdub3JlUGFyZW5Ob29wQ2FzdHMoQVNUQ29udGV4dCAmQ3R4KSBjb25zdCBMTFZNX1JFQURPTkxZIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxFeHByKj4odGhpcyktPklnbm9yZVBhcmVuTm9vcENhc3RzKEN0eCk7Ci0gIH0KLQogICBzdGF0aWMgYm9vbCBoYXNBbnlUeXBlRGVwZW5kZW50QXJndW1lbnRzKEFycmF5UmVmPEV4cHIgKj4gRXhwcnMpOwogCiAgIC8vLyBGb3IgYW4gZXhwcmVzc2lvbiBvZiBjbGFzcyB0eXBlIG9yIHBvaW50ZXIgdG8gY2xhc3MgdHlwZSwKQEAgLTg2Myw2ICs5MDMsNzAgQEAKIH07CiAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLyBXcmFwcGVyIEV4cHJlc3Npb25zLgorLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworLy8vIEZ1bGxFeHByIC0gUmVwcmVzZW50cyBhICJmdWxsLWV4cHJlc3Npb24iIG5vZGUuCitjbGFzcyBGdWxsRXhwciA6IHB1YmxpYyBFeHByIHsKK3Byb3RlY3RlZDoKKyBTdG10ICpTdWJFeHByOworCisgRnVsbEV4cHIoU3RtdENsYXNzIFNDLCBFeHByICpzdWJleHByKQorICAgIDogRXhwcihTQywgc3ViZXhwci0+Z2V0VHlwZSgpLAorICAgICAgICAgICBzdWJleHByLT5nZXRWYWx1ZUtpbmQoKSwgc3ViZXhwci0+Z2V0T2JqZWN0S2luZCgpLAorICAgICAgICAgICBzdWJleHByLT5pc1R5cGVEZXBlbmRlbnQoKSwgc3ViZXhwci0+aXNWYWx1ZURlcGVuZGVudCgpLAorICAgICAgICAgICBzdWJleHByLT5pc0luc3RhbnRpYXRpb25EZXBlbmRlbnQoKSwKKyAgICAgICAgICAgc3ViZXhwci0+Y29udGFpbnNVbmV4cGFuZGVkUGFyYW1ldGVyUGFjaygpKSwgU3ViRXhwcihzdWJleHByKSB7fQorICBGdWxsRXhwcihTdG10Q2xhc3MgU0MsIEVtcHR5U2hlbGwgRW1wdHkpCisgICAgOiBFeHByKFNDLCBFbXB0eSkge30KK3B1YmxpYzoKKyAgY29uc3QgRXhwciAqZ2V0U3ViRXhwcigpIGNvbnN0IHsgcmV0dXJuIGNhc3Q8RXhwcj4oU3ViRXhwcik7IH0KKyAgRXhwciAqZ2V0U3ViRXhwcigpIHsgcmV0dXJuIGNhc3Q8RXhwcj4oU3ViRXhwcik7IH0KKworICAvLy8gQXMgd2l0aCBhbnkgbXV0YXRvciBvZiB0aGUgQVNULCBiZSB2ZXJ5IGNhcmVmdWwgd2hlbiBtb2RpZnlpbmcgYW4KKyAgLy8vIGV4aXN0aW5nIEFTVCB0byBwcmVzZXJ2ZSBpdHMgaW52YXJpYW50cy4KKyAgdm9pZCBzZXRTdWJFeHByKEV4cHIgKkUpIHsgU3ViRXhwciA9IEU7IH0KKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFN0bXQgKlQpIHsKKyAgICByZXR1cm4gVC0+Z2V0U3RtdENsYXNzKCkgPj0gZmlyc3RGdWxsRXhwckNvbnN0YW50ICYmCisgICAgICAgICAgIFQtPmdldFN0bXRDbGFzcygpIDw9IGxhc3RGdWxsRXhwckNvbnN0YW50OworICB9Cit9OworCisvLy8gQ29uc3RhbnRFeHByIC0gQW4gZXhwcmVzc2lvbiB0aGF0IG9jY3VycyBpbiBhIGNvbnN0YW50IGNvbnRleHQuCitjbGFzcyBDb25zdGFudEV4cHIgOiBwdWJsaWMgRnVsbEV4cHIgeworICBDb25zdGFudEV4cHIoRXhwciAqc3ViZXhwcikKKyAgICA6IEZ1bGxFeHByKENvbnN0YW50RXhwckNsYXNzLCBzdWJleHByKSB7fQorCitwdWJsaWM6CisgIHN0YXRpYyBDb25zdGFudEV4cHIgKkNyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDb250ZXh0LCBFeHByICpFKSB7CisgICAgYXNzZXJ0KCFpc2E8Q29uc3RhbnRFeHByPihFKSk7CisgICAgcmV0dXJuIG5ldyAoQ29udGV4dCkgQ29uc3RhbnRFeHByKEUpOworICB9CisKKyAgLy8vIEJ1aWxkIGFuIGVtcHR5IGNvbnN0YW50IGV4cHJlc3Npb24gd3JhcHBlci4KKyAgZXhwbGljaXQgQ29uc3RhbnRFeHByKEVtcHR5U2hlbGwgRW1wdHkpCisgICAgOiBGdWxsRXhwcihDb25zdGFudEV4cHJDbGFzcywgRW1wdHkpIHt9CisKKyAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsKKyAgICByZXR1cm4gU3ViRXhwci0+Z2V0QmVnaW5Mb2MoKTsKKyAgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsKKyAgICByZXR1cm4gU3ViRXhwci0+Z2V0RW5kTG9jKCk7CisgIH0KKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFN0bXQgKlQpIHsKKyAgICByZXR1cm4gVC0+Z2V0U3RtdENsYXNzKCkgPT0gQ29uc3RhbnRFeHByQ2xhc3M7CisgIH0KKworICAvLyBJdGVyYXRvcnMKKyAgY2hpbGRfcmFuZ2UgY2hpbGRyZW4oKSB7IHJldHVybiBjaGlsZF9yYW5nZSgmU3ViRXhwciwgJlN1YkV4cHIrMSk7IH0KKyAgY29uc3RfY2hpbGRfcmFuZ2UgY2hpbGRyZW4oKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2NoaWxkX3JhbmdlKCZTdWJFeHByLCAmU3ViRXhwciArIDEpOworICB9Cit9OworCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gUHJpbWFyeSBFeHByZXNzaW9ucy4KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTg3NCw3ICs5NzgsNiBAQAogY2xhc3MgT3BhcXVlVmFsdWVFeHByIDogcHVibGljIEV4cHIgewogICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKICAgRXhwciAqU291cmNlRXhwcjsKLSAgU291cmNlTG9jYXRpb24gTG9jOwogCiBwdWJsaWM6CiAgIE9wYXF1ZVZhbHVlRXhwcihTb3VyY2VMb2NhdGlvbiBMb2MsIFF1YWxUeXBlIFQsIEV4cHJWYWx1ZUtpbmQgVkssCkBAIC04ODgsOCArOTkxLDkgQEAKICAgICAgICAgICAgVC0+aXNJbnN0YW50aWF0aW9uRGVwZW5kZW50VHlwZSgpIHx8CiAgICAgICAgICAgIChTb3VyY2VFeHByICYmIFNvdXJjZUV4cHItPmlzSW5zdGFudGlhdGlvbkRlcGVuZGVudCgpKSwKICAgICAgICAgICAgZmFsc2UpLAotICAgICAgU291cmNlRXhwcihTb3VyY2VFeHByKSwgTG9jKExvYykgeworICAgICAgU291cmNlRXhwcihTb3VyY2VFeHByKSB7CiAgICAgc2V0SXNVbmlxdWUoZmFsc2UpOworICAgIE9wYXF1ZVZhbHVlRXhwckJpdHMuTG9jID0gTG9jOwogICB9CiAKICAgLy8vIEdpdmVuIGFuIGV4cHJlc3Npb24gd2hpY2ggaW52b2tlcyBhIGNvcHkgY29uc3RydWN0b3IgLS0tIGkuZS4gIGEKQEAgLTg5OCwyMCArMTAwMiwxOSBAQAogICBzdGF0aWMgY29uc3QgT3BhcXVlVmFsdWVFeHByICpmaW5kSW5Db3B5Q29uc3RydWN0KGNvbnN0IEV4cHIgKmV4cHIpOwogCiAgIGV4cGxpY2l0IE9wYXF1ZVZhbHVlRXhwcihFbXB0eVNoZWxsIEVtcHR5KQotICAgIDogRXhwcihPcGFxdWVWYWx1ZUV4cHJDbGFzcywgRW1wdHkpIHsgfQorICAgIDogRXhwcihPcGFxdWVWYWx1ZUV4cHJDbGFzcywgRW1wdHkpIHt9CiAKICAgLy8vIFJldHJpZXZlIHRoZSBsb2NhdGlvbiBvZiB0aGlzIGV4cHJlc3Npb24uCi0gIFNvdXJjZUxvY2F0aW9uIGdldExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gTG9jOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gT3BhcXVlVmFsdWVFeHByQml0cy5Mb2M7IH0KIAogICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgewotICAgIHJldHVybiBTb3VyY2VFeHByID8gU291cmNlRXhwci0+Z2V0QmVnaW5Mb2MoKSA6IExvYzsKKyAgICByZXR1cm4gU291cmNlRXhwciA/IFNvdXJjZUV4cHItPmdldEJlZ2luTG9jKCkgOiBnZXRMb2NhdGlvbigpOwogICB9CiAgIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgewotICAgIHJldHVybiBTb3VyY2VFeHByID8gU291cmNlRXhwci0+Z2V0RW5kTG9jKCkgOiBMb2M7CisgICAgcmV0dXJuIFNvdXJjZUV4cHIgPyBTb3VyY2VFeHByLT5nZXRFbmRMb2MoKSA6IGdldExvY2F0aW9uKCk7CiAgIH0KICAgU291cmNlTG9jYXRpb24gZ2V0RXhwckxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgewotICAgIGlmIChTb3VyY2VFeHByKSByZXR1cm4gU291cmNlRXhwci0+Z2V0RXhwckxvYygpOwotICAgIHJldHVybiBMb2M7CisgICAgcmV0dXJuIFNvdXJjZUV4cHIgPyBTb3VyY2VFeHByLT5nZXRFeHByTG9jKCkgOiBnZXRMb2NhdGlvbigpOwogICB9CiAKICAgY2hpbGRfcmFuZ2UgY2hpbGRyZW4oKSB7CkBAIC05NzMsNjMgKzEwNzYsNTIgQEAKICAgICAgIHByaXZhdGUgbGx2bTo6VHJhaWxpbmdPYmplY3RzPERlY2xSZWZFeHByLCBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZWREZWNsICosIEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlQXJndW1lbnRMb2M+IHsKKyAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgIGZyaWVuZCBjbGFzcyBBU1RTdG10V3JpdGVyOworICBmcmllbmQgVHJhaWxpbmdPYmplY3RzOworCiAgIC8vLyBUaGUgZGVjbGFyYXRpb24gdGhhdCB3ZSBhcmUgcmVmZXJlbmNpbmcuCiAgIFZhbHVlRGVjbCAqRDsKIAotICAvLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSBkZWNsYXJhdGlvbiBuYW1lIGl0c2VsZi4KLSAgU291cmNlTG9jYXRpb24gTG9jOwotCiAgIC8vLyBQcm92aWRlcyBzb3VyY2UvdHlwZSBsb2NhdGlvbiBpbmZvIGZvciB0aGUgZGVjbGFyYXRpb24gbmFtZQogICAvLy8gZW1iZWRkZWQgaW4gRC4KICAgRGVjbGFyYXRpb25OYW1lTG9jIEROTG9jOwogCiAgIHNpemVfdCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxOZXN0ZWROYW1lU3BlY2lmaWVyTG9jPikgY29uc3QgewotICAgIHJldHVybiBoYXNRdWFsaWZpZXIoKSA/IDEgOiAwOworICAgIHJldHVybiBoYXNRdWFsaWZpZXIoKTsKICAgfQogCiAgIHNpemVfdCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxOYW1lZERlY2wgKj4pIGNvbnN0IHsKLSAgICByZXR1cm4gaGFzRm91bmREZWNsKCkgPyAxIDogMDsKKyAgICByZXR1cm4gaGFzRm91bmREZWNsKCk7CiAgIH0KIAogICBzaXplX3QgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2FkVG9rZW48QVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvPikgY29uc3QgewotICAgIHJldHVybiBoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKSA/IDEgOiAwOworICAgIHJldHVybiBoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKTsKICAgfQogCiAgIC8vLyBUZXN0IHdoZXRoZXIgdGhlcmUgaXMgYSBkaXN0aW5jdCBGb3VuZERlY2wgYXR0YWNoZWQgdG8gdGhlIGVuZCBvZgogICAvLy8gdGhpcyBEUkUuCiAgIGJvb2wgaGFzRm91bmREZWNsKCkgY29uc3QgeyByZXR1cm4gRGVjbFJlZkV4cHJCaXRzLkhhc0ZvdW5kRGVjbDsgfQogCi0gIERlY2xSZWZFeHByKGNvbnN0IEFTVENvbnRleHQgJkN0eCwKLSAgICAgICAgICAgICAgTmVzdGVkTmFtZVNwZWNpZmllckxvYyBRdWFsaWZpZXJMb2MsCi0gICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFRlbXBsYXRlS1dMb2MsCi0gICAgICAgICAgICAgIFZhbHVlRGVjbCAqRCwgYm9vbCBSZWZlcnNUb0VubG9zaW5nVmFyaWFibGVPckNhcHR1cmUsCi0gICAgICAgICAgICAgIGNvbnN0IERlY2xhcmF0aW9uTmFtZUluZm8gJk5hbWVJbmZvLAotICAgICAgICAgICAgICBOYW1lZERlY2wgKkZvdW5kRCwKLSAgICAgICAgICAgICAgY29uc3QgVGVtcGxhdGVBcmd1bWVudExpc3RJbmZvICpUZW1wbGF0ZUFyZ3MsCi0gICAgICAgICAgICAgIFF1YWxUeXBlIFQsIEV4cHJWYWx1ZUtpbmQgVkspOworICBEZWNsUmVmRXhwcihjb25zdCBBU1RDb250ZXh0ICZDdHgsIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2MgUXVhbGlmaWVyTG9jLAorICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBUZW1wbGF0ZUtXTG9jLCBWYWx1ZURlY2wgKkQsCisgICAgICAgICAgICAgIGJvb2wgUmVmZXJzVG9Fbmxvc2luZ1ZhcmlhYmxlT3JDYXB0dXJlLAorICAgICAgICAgICAgICBjb25zdCBEZWNsYXJhdGlvbk5hbWVJbmZvICZOYW1lSW5mbywgTmFtZWREZWNsICpGb3VuZEQsCisgICAgICAgICAgICAgIGNvbnN0IFRlbXBsYXRlQXJndW1lbnRMaXN0SW5mbyAqVGVtcGxhdGVBcmdzLCBRdWFsVHlwZSBULAorICAgICAgICAgICAgICBFeHByVmFsdWVLaW5kIFZLKTsKIAogICAvLy8gQ29uc3RydWN0IGFuIGVtcHR5IGRlY2xhcmF0aW9uIHJlZmVyZW5jZSBleHByZXNzaW9uLgotICBleHBsaWNpdCBEZWNsUmVmRXhwcihFbXB0eVNoZWxsIEVtcHR5KQotICAgIDogRXhwcihEZWNsUmVmRXhwckNsYXNzLCBFbXB0eSkgeyB9CisgIGV4cGxpY2l0IERlY2xSZWZFeHByKEVtcHR5U2hlbGwgRW1wdHkpIDogRXhwcihEZWNsUmVmRXhwckNsYXNzLCBFbXB0eSkge30KIAogICAvLy8gQ29tcHV0ZXMgdGhlIHR5cGUtIGFuZCB2YWx1ZS1kZXBlbmRlbmNlIGZsYWdzIGZvciB0aGlzCiAgIC8vLyBkZWNsYXJhdGlvbiByZWZlcmVuY2UgZXhwcmVzc2lvbi4KLSAgdm9pZCBjb21wdXRlRGVwZW5kZW5jZShjb25zdCBBU1RDb250ZXh0ICZDKTsKKyAgdm9pZCBjb21wdXRlRGVwZW5kZW5jZShjb25zdCBBU1RDb250ZXh0ICZDdHgpOwogCiBwdWJsaWM6Ci0gIERlY2xSZWZFeHByKFZhbHVlRGVjbCAqRCwgYm9vbCBSZWZlcnNUb0VuY2xvc2luZ1ZhcmlhYmxlT3JDYXB0dXJlLCBRdWFsVHlwZSBULAorICBEZWNsUmVmRXhwcihjb25zdCBBU1RDb250ZXh0ICZDdHgsIFZhbHVlRGVjbCAqRCwKKyAgICAgICAgICAgICAgYm9vbCBSZWZlcnNUb0VuY2xvc2luZ1ZhcmlhYmxlT3JDYXB0dXJlLCBRdWFsVHlwZSBULAogICAgICAgICAgICAgICBFeHByVmFsdWVLaW5kIFZLLCBTb3VyY2VMb2NhdGlvbiBMLAotICAgICAgICAgICAgICBjb25zdCBEZWNsYXJhdGlvbk5hbWVMb2MgJkxvY0luZm8gPSBEZWNsYXJhdGlvbk5hbWVMb2MoKSkKLSAgICA6IEV4cHIoRGVjbFJlZkV4cHJDbGFzcywgVCwgVkssIE9LX09yZGluYXJ5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSksCi0gICAgICBEKEQpLCBMb2MoTCksIEROTG9jKExvY0luZm8pIHsKLSAgICBEZWNsUmVmRXhwckJpdHMuSGFzUXVhbGlmaWVyID0gMDsKLSAgICBEZWNsUmVmRXhwckJpdHMuSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvID0gMDsKLSAgICBEZWNsUmVmRXhwckJpdHMuSGFzRm91bmREZWNsID0gMDsKLSAgICBEZWNsUmVmRXhwckJpdHMuSGFkTXVsdGlwbGVDYW5kaWRhdGVzID0gMDsKLSAgICBEZWNsUmVmRXhwckJpdHMuUmVmZXJzVG9FbmNsb3NpbmdWYXJpYWJsZU9yQ2FwdHVyZSA9Ci0gICAgICAgIFJlZmVyc1RvRW5jbG9zaW5nVmFyaWFibGVPckNhcHR1cmU7Ci0gICAgY29tcHV0ZURlcGVuZGVuY2UoRC0+Z2V0QVNUQ29udGV4dCgpKTsKLSAgfQorICAgICAgICAgICAgICBjb25zdCBEZWNsYXJhdGlvbk5hbWVMb2MgJkxvY0luZm8gPSBEZWNsYXJhdGlvbk5hbWVMb2MoKSk7CiAKICAgc3RhdGljIERlY2xSZWZFeHByICoKICAgQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQsIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2MgUXVhbGlmaWVyTG9jLApAQCAtMTA0Nyw4ICsxMTM5LDcgQEAKICAgICAgICAgIGNvbnN0IFRlbXBsYXRlQXJndW1lbnRMaXN0SW5mbyAqVGVtcGxhdGVBcmdzID0gbnVsbHB0cik7CiAKICAgLy8vIENvbnN0cnVjdCBhbiBlbXB0eSBkZWNsYXJhdGlvbiByZWZlcmVuY2UgZXhwcmVzc2lvbi4KLSAgc3RhdGljIERlY2xSZWZFeHByICpDcmVhdGVFbXB0eShjb25zdCBBU1RDb250ZXh0ICZDb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgSGFzUXVhbGlmaWVyLAorICBzdGF0aWMgRGVjbFJlZkV4cHIgKkNyZWF0ZUVtcHR5KGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQsIGJvb2wgSGFzUXVhbGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgSGFzRm91bmREZWNsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE51bVRlbXBsYXRlQXJncyk7CkBAIC0xMDU4LDExICsxMTQ5LDExIEBACiAgIHZvaWQgc2V0RGVjbChWYWx1ZURlY2wgKk5ld0QpIHsgRCA9IE5ld0Q7IH0KIAogICBEZWNsYXJhdGlvbk5hbWVJbmZvIGdldE5hbWVJbmZvKCkgY29uc3QgewotICAgIHJldHVybiBEZWNsYXJhdGlvbk5hbWVJbmZvKGdldERlY2woKS0+Z2V0RGVjbE5hbWUoKSwgTG9jLCBETkxvYyk7CisgICAgcmV0dXJuIERlY2xhcmF0aW9uTmFtZUluZm8oZ2V0RGVjbCgpLT5nZXREZWNsTmFtZSgpLCBnZXRMb2NhdGlvbigpLCBETkxvYyk7CiAgIH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIExvYzsgfQotICB2b2lkIHNldExvY2F0aW9uKFNvdXJjZUxvY2F0aW9uIEwpIHsgTG9jID0gTDsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIERlY2xSZWZFeHByQml0cy5Mb2M7IH0KKyAgdm9pZCBzZXRMb2NhdGlvbihTb3VyY2VMb2NhdGlvbiBMKSB7IERlY2xSZWZFeHByQml0cy5Mb2MgPSBMOyB9CiAgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWTsKICAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWTsKIApAQCAtMTEwNywyMSArMTE5OCwyNCBAQAogICAvLy8gUmV0cmlldmUgdGhlIGxvY2F0aW9uIG9mIHRoZSB0ZW1wbGF0ZSBrZXl3b3JkIHByZWNlZGluZwogICAvLy8gdGhpcyBuYW1lLCBpZiBhbnkuCiAgIFNvdXJjZUxvY2F0aW9uIGdldFRlbXBsYXRlS2V5d29yZExvYygpIGNvbnN0IHsKLSAgICBpZiAoIWhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbygpKSByZXR1cm4gU291cmNlTG9jYXRpb24oKTsKKyAgICBpZiAoIWhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbygpKQorICAgICAgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CiAgICAgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8+KCktPlRlbXBsYXRlS1dMb2M7CiAgIH0KIAogICAvLy8gUmV0cmlldmUgdGhlIGxvY2F0aW9uIG9mIHRoZSBsZWZ0IGFuZ2xlIGJyYWNrZXQgc3RhcnRpbmcgdGhlCiAgIC8vLyBleHBsaWNpdCB0ZW1wbGF0ZSBhcmd1bWVudCBsaXN0IGZvbGxvd2luZyB0aGUgbmFtZSwgaWYgYW55LgogICBTb3VyY2VMb2NhdGlvbiBnZXRMQW5nbGVMb2MoKSBjb25zdCB7Ci0gICAgaWYgKCFoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKSkgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CisgICAgaWYgKCFoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKSkKKyAgICAgIHJldHVybiBTb3VyY2VMb2NhdGlvbigpOwogICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8QVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvPigpLT5MQW5nbGVMb2M7CiAgIH0KIAogICAvLy8gUmV0cmlldmUgdGhlIGxvY2F0aW9uIG9mIHRoZSByaWdodCBhbmdsZSBicmFja2V0IGVuZGluZyB0aGUKICAgLy8vIGV4cGxpY2l0IHRlbXBsYXRlIGFyZ3VtZW50IGxpc3QgZm9sbG93aW5nIHRoZSBuYW1lLCBpZiBhbnkuCiAgIFNvdXJjZUxvY2F0aW9uIGdldFJBbmdsZUxvYygpIGNvbnN0IHsKLSAgICBpZiAoIWhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbygpKSByZXR1cm4gU291cmNlTG9jYXRpb24oKTsKKyAgICBpZiAoIWhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbygpKQorICAgICAgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CiAgICAgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8+KCktPlJBbmdsZUxvYzsKICAgfQogCkBAIC0xMTQ2LDcgKzEyNDAsNiBAQAogICBjb25zdCBUZW1wbGF0ZUFyZ3VtZW50TG9jICpnZXRUZW1wbGF0ZUFyZ3MoKSBjb25zdCB7CiAgICAgaWYgKCFoYXNFeHBsaWNpdFRlbXBsYXRlQXJncygpKQogICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICByZXR1cm4gZ2V0VHJhaWxpbmdPYmplY3RzPFRlbXBsYXRlQXJndW1lbnRMb2M+KCk7CiAgIH0KIApAQCAtMTE1NSw3ICsxMjQ4LDYgQEAKICAgdW5zaWduZWQgZ2V0TnVtVGVtcGxhdGVBcmdzKCkgY29uc3QgewogICAgIGlmICghaGFzRXhwbGljaXRUZW1wbGF0ZUFyZ3MoKSkKICAgICAgIHJldHVybiAwOwotCiAgICAgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8+KCktPk51bVRlbXBsYXRlQXJnczsKICAgfQogCkBAIC0xMTkzLDY4ICsxMjg1LDYgQEAKICAgY29uc3RfY2hpbGRfcmFuZ2UgY2hpbGRyZW4oKSBjb25zdCB7CiAgICAgcmV0dXJuIGNvbnN0X2NoaWxkX3JhbmdlKGNvbnN0X2NoaWxkX2l0ZXJhdG9yKCksIGNvbnN0X2NoaWxkX2l0ZXJhdG9yKCkpOwogICB9Ci0KLSAgZnJpZW5kIFRyYWlsaW5nT2JqZWN0czsKLSAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7Ci0gIGZyaWVuZCBjbGFzcyBBU1RTdG10V3JpdGVyOwotfTsKLQotLy8vIFtDOTkgNi40LjIuMl0gLSBBIHByZWRlZmluZWQgaWRlbnRpZmllciBzdWNoIGFzIF9fZnVuY19fLgotY2xhc3MgUHJlZGVmaW5lZEV4cHIgOiBwdWJsaWMgRXhwciB7Ci1wdWJsaWM6Ci0gIGVudW0gSWRlbnRUeXBlIHsKLSAgICBGdW5jLAotICAgIEZ1bmN0aW9uLAotICAgIExGdW5jdGlvbiwgLy8gU2FtZSBhcyBGdW5jdGlvbiwgYnV0IGFzIHdpZGUgc3RyaW5nLgotICAgIEZ1bmNETmFtZSwKLSAgICBGdW5jU2lnLAotICAgIExGdW5jU2lnLCAvLyBTYW1lIGFzIEZ1bmNTaWcsIGJ1dCBhcyBhcyB3aWRlIHN0cmluZwotICAgIFByZXR0eUZ1bmN0aW9uLAotICAgIC8vLyBUaGUgc2FtZSBhcyBQcmV0dHlGdW5jdGlvbiwgZXhjZXB0IHRoYXQgdGhlCi0gICAgLy8vICd2aXJ0dWFsJyBrZXl3b3JkIGlzIG9taXR0ZWQgZm9yIHZpcnR1YWwgbWVtYmVyIGZ1bmN0aW9ucy4KLSAgICBQcmV0dHlGdW5jdGlvbk5vVmlydHVhbAotICB9OwotCi1wcml2YXRlOgotICBTb3VyY2VMb2NhdGlvbiBMb2M7Ci0gIElkZW50VHlwZSBUeXBlOwotICBTdG10ICpGbk5hbWU7Ci0KLXB1YmxpYzoKLSAgUHJlZGVmaW5lZEV4cHIoU291cmNlTG9jYXRpb24gTCwgUXVhbFR5cGUgRk5UeSwgSWRlbnRUeXBlIElULAotICAgICAgICAgICAgICAgICBTdHJpbmdMaXRlcmFsICpTTCk7Ci0KLSAgLy8vIENvbnN0cnVjdCBhbiBlbXB0eSBwcmVkZWZpbmVkIGV4cHJlc3Npb24uCi0gIGV4cGxpY2l0IFByZWRlZmluZWRFeHByKEVtcHR5U2hlbGwgRW1wdHkpCi0gICAgICA6IEV4cHIoUHJlZGVmaW5lZEV4cHJDbGFzcywgRW1wdHkpLCBMb2MoKSwgVHlwZShGdW5jKSwgRm5OYW1lKG51bGxwdHIpIHt9Ci0KLSAgSWRlbnRUeXBlIGdldElkZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFR5cGU7IH0KLQotICBTb3VyY2VMb2NhdGlvbiBnZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIExvYzsgfQotICB2b2lkIHNldExvY2F0aW9uKFNvdXJjZUxvY2F0aW9uIEwpIHsgTG9jID0gTDsgfQotCi0gIFN0cmluZ0xpdGVyYWwgKmdldEZ1bmN0aW9uTmFtZSgpOwotICBjb25zdCBTdHJpbmdMaXRlcmFsICpnZXRGdW5jdGlvbk5hbWUoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UHJlZGVmaW5lZEV4cHIgKj4odGhpcyktPmdldEZ1bmN0aW9uTmFtZSgpOwotICB9Ci0KLSAgc3RhdGljIFN0cmluZ1JlZiBnZXRJZGVudFR5cGVOYW1lKElkZW50VHlwZSBJVCk7Ci0gIHN0YXRpYyBzdGQ6OnN0cmluZyBDb21wdXRlTmFtZShJZGVudFR5cGUgSVQsIGNvbnN0IERlY2wgKkN1cnJlbnREZWNsKTsKLQotICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gTG9jOyB9Ci0gIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gTG9jOyB9Ci0KLSAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBTdG10ICpUKSB7Ci0gICAgcmV0dXJuIFQtPmdldFN0bXRDbGFzcygpID09IFByZWRlZmluZWRFeHByQ2xhc3M7Ci0gIH0KLQotICAvLyBJdGVyYXRvcnMKLSAgY2hpbGRfcmFuZ2UgY2hpbGRyZW4oKSB7IHJldHVybiBjaGlsZF9yYW5nZSgmRm5OYW1lLCAmRm5OYW1lICsgMSk7IH0KLSAgY29uc3RfY2hpbGRfcmFuZ2UgY2hpbGRyZW4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIGNvbnN0X2NoaWxkX3JhbmdlKCZGbk5hbWUsICZGbk5hbWUgKyAxKTsKLSAgfQotCi0gIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOwogfTsKIAogLy8vIFVzZWQgYnkgSW50ZWdlckxpdGVyYWwvRmxvYXRpbmdMaXRlcmFsIHRvIHN0b3JlIHRoZSBudW1lcmljIHdpdGhvdXQKQEAgLTE1NTAsMTQgKzE1ODAsMTUgQEAKIH07CiAKIC8vLyBTdHJpbmdMaXRlcmFsIC0gVGhpcyByZXByZXNlbnRzIGEgc3RyaW5nIGxpdGVyYWwgZXhwcmVzc2lvbiwgZS5nLiAiZm9vIgotLy8vIG9yIEwiYmFyIiAod2lkZSBzdHJpbmdzKS4gIFRoZSBhY3R1YWwgc3RyaW5nIGlzIHJldHVybmVkIGJ5IGdldEJ5dGVzKCkKLS8vLyBpcyBOT1QgbnVsbC10ZXJtaW5hdGVkLCBhbmQgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGlzIGRldGVybWluZWQgYnkKLS8vLyBjYWxsaW5nIGdldEJ5dGVMZW5ndGgoKS4gIFRoZSBDIHR5cGUgZm9yIGEgc3RyaW5nIGlzIGFsd2F5cyBhCi0vLy8gQ29uc3RhbnRBcnJheVR5cGUuICBJbiBDKyssIHRoZSBjaGFyIHR5cGUgaXMgY29uc3QgcXVhbGlmaWVkLCBpbiBDIGl0IGlzCi0vLy8gbm90LgorLy8vIG9yIEwiYmFyIiAod2lkZSBzdHJpbmdzKS4gVGhlIGFjdHVhbCBzdHJpbmcgZGF0YSBjYW4gYmUgb2J0YWluZWQgd2l0aAorLy8vIGdldEJ5dGVzKCkgYW5kIGlzIE5PVCBudWxsLXRlcm1pbmF0ZWQuIFRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBkYXRhIGlzCisvLy8gZGV0ZXJtaW5lZCBieSBjYWxsaW5nIGdldEJ5dGVMZW5ndGgoKS4KKy8vLworLy8vIFRoZSBDIHR5cGUgZm9yIGEgc3RyaW5nIGlzIGFsd2F5cyBhIENvbnN0YW50QXJyYXlUeXBlLiBJbiBDKyssIHRoZSBjaGFyCisvLy8gdHlwZSBpcyBjb25zdCBxdWFsaWZpZWQsIGluIEMgaXQgaXMgbm90LgogLy8vCiAvLy8gTm90ZSB0aGF0IHN0cmluZ3MgaW4gQyBjYW4gYmUgZm9ybWVkIGJ5IGNvbmNhdGVuYXRpb24gb2YgbXVsdGlwbGUgc3RyaW5nCi0vLy8gbGl0ZXJhbCBwcHRva2VucyBpbiB0cmFuc2xhdGlvbiBwaGFzZSAjNi4gIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIGxvY2F0aW9ucworLy8vIGxpdGVyYWwgcHB0b2tlbnMgaW4gdHJhbnNsYXRpb24gcGhhc2UgIzYuIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIGxvY2F0aW9ucwogLy8vIG9mIGVhY2ggb2YgdGhlc2UgcGllY2VzLgogLy8vCiAvLy8gU3RyaW5ncyBpbiBDIGNhbiBhbHNvIGJlIHRydW5jYXRlZCBhbmQgZXh0ZW5kZWQgYnkgYXNzaWduaW5nIGludG8gYXJyYXlzLApAQCAtMTU2NSwxMzEgKzE1OTYsMTU2IEBACiAvLy8gICBjaGFyIFhbMl0gPSAiZm9vYmFyIjsKIC8vLyBJbiB0aGlzIGNhc2UsIGdldEJ5dGVMZW5ndGgoKSB3aWxsIHJldHVybiA2LCBidXQgdGhlIHN0cmluZyBsaXRlcmFsIHdpbGwKIC8vLyBoYXZlIHR5cGUgImNoYXJbMl0iLgotY2xhc3MgU3RyaW5nTGl0ZXJhbCA6IHB1YmxpYyBFeHByIHsKK2NsYXNzIFN0cmluZ0xpdGVyYWwgZmluYWwKKyAgICA6IHB1YmxpYyBFeHByLAorICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8U3RyaW5nTGl0ZXJhbCwgdW5zaWduZWQsIFNvdXJjZUxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcj4geworICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKKyAgZnJpZW5kIFRyYWlsaW5nT2JqZWN0czsKKworICAvLy8gU3RyaW5nTGl0ZXJhbCBpcyBmb2xsb3dlZCBieSBzZXZlcmFsIHRyYWlsaW5nIG9iamVjdHMuIFRoZXkgYXJlIGluIG9yZGVyOgorICAvLy8KKyAgLy8vICogQSBzaW5nbGUgdW5zaWduZWQgc3RvcmluZyB0aGUgbGVuZ3RoIGluIGNoYXJhY3RlcnMgb2YgdGhpcyBzdHJpbmcuIFRoZQorICAvLy8gICBsZW5ndGggaW4gYnl0ZXMgaXMgdGhpcyBsZW5ndGggdGltZXMgdGhlIHdpZHRoIG9mIGEgc2luZ2xlIGNoYXJhY3Rlci4KKyAgLy8vICAgQWx3YXlzIHByZXNlbnQgYW5kIHN0b3JlZCBhcyBhIHRyYWlsaW5nIG9iamVjdHMgYmVjYXVzZSBzdG9yaW5nIGl0IGluCisgIC8vLyAgIFN0cmluZ0xpdGVyYWwgd291bGQgaW5jcmVhc2UgdGhlIHNpemUgb2YgU3RyaW5nTGl0ZXJhbCBieSBzaXplb2Yodm9pZCAqKQorICAvLy8gICBkdWUgdG8gYWxpZ25tZW50IHJlcXVpcmVtZW50cy4gSWYgeW91IGFkZCBzb21lIGRhdGEgdG8gU3RyaW5nTGl0ZXJhbCwKKyAgLy8vICAgY29uc2lkZXIgbW92aW5nIGl0IGluc2lkZSBTdHJpbmdMaXRlcmFsLgorICAvLy8KKyAgLy8vICogQW4gYXJyYXkgb2YgZ2V0TnVtQ29uY2F0ZW5hdGVkKCkgU291cmNlTG9jYXRpb24sIG9uZSBmb3IgZWFjaCBvZiB0aGUKKyAgLy8vICAgdG9rZW4gdGhpcyBzdHJpbmcgaXMgbWFkZSBvZi4KKyAgLy8vCisgIC8vLyAqIEFuIGFycmF5IG9mIGdldEJ5dGVMZW5ndGgoKSBjaGFyIHVzZWQgdG8gc3RvcmUgdGhlIHN0cmluZyBkYXRhLgorCiBwdWJsaWM6Ci0gIGVudW0gU3RyaW5nS2luZCB7Ci0gICAgQXNjaWksCi0gICAgV2lkZSwKLSAgICBVVEY4LAotICAgIFVURjE2LAotICAgIFVURjMyCi0gIH07CisgIGVudW0gU3RyaW5nS2luZCB7IEFzY2lpLCBXaWRlLCBVVEY4LCBVVEYxNiwgVVRGMzIgfTsKIAogcHJpdmF0ZToKLSAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgIHVuc2lnbmVkIG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPHVuc2lnbmVkPikgY29uc3QgeyByZXR1cm4gMTsgfQorICB1bnNpZ25lZCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxTb3VyY2VMb2NhdGlvbj4pIGNvbnN0IHsKKyAgICByZXR1cm4gZ2V0TnVtQ29uY2F0ZW5hdGVkKCk7CisgIH0KIAotICB1bmlvbiB7Ci0gICAgY29uc3QgY2hhciAqYXNDaGFyOwotICAgIGNvbnN0IHVpbnQxNl90ICphc1VJbnQxNjsKLSAgICBjb25zdCB1aW50MzJfdCAqYXNVSW50MzI7Ci0gIH0gU3RyRGF0YTsKLSAgdW5zaWduZWQgTGVuZ3RoOwotICB1bnNpZ25lZCBDaGFyQnl0ZVdpZHRoIDogNDsKLSAgdW5zaWduZWQgS2luZCA6IDM7Ci0gIHVuc2lnbmVkIElzUGFzY2FsIDogMTsKLSAgdW5zaWduZWQgTnVtQ29uY2F0ZW5hdGVkOwotICBTb3VyY2VMb2NhdGlvbiBUb2tMb2NzWzFdOworICB1bnNpZ25lZCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxjaGFyPikgY29uc3QgeworICAgIHJldHVybiBnZXRCeXRlTGVuZ3RoKCk7CisgIH0KIAotICBTdHJpbmdMaXRlcmFsKFF1YWxUeXBlIFR5KSA6Ci0gICAgRXhwcihTdHJpbmdMaXRlcmFsQ2xhc3MsIFR5LCBWS19MVmFsdWUsIE9LX09yZGluYXJ5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLAotICAgICAgICAgZmFsc2UpIHt9CisgIGNoYXIgKmdldFN0ckRhdGFBc0NoYXIoKSB7IHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8Y2hhcj4oKTsgfQorICBjb25zdCBjaGFyICpnZXRTdHJEYXRhQXNDaGFyKCkgY29uc3QgeyByZXR1cm4gZ2V0VHJhaWxpbmdPYmplY3RzPGNoYXI+KCk7IH0KIAotICBzdGF0aWMgaW50IG1hcENoYXJCeXRlV2lkdGgoVGFyZ2V0SW5mbyBjb25zdCAmdGFyZ2V0LFN0cmluZ0tpbmQgayk7CisgIGNvbnN0IHVpbnQxNl90ICpnZXRTdHJEYXRhQXNVSW50MTYoKSBjb25zdCB7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QgKj4oZ2V0VHJhaWxpbmdPYmplY3RzPGNoYXI+KCkpOworICB9CisKKyAgY29uc3QgdWludDMyX3QgKmdldFN0ckRhdGFBc1VJbnQzMigpIGNvbnN0IHsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCAqPihnZXRUcmFpbGluZ09iamVjdHM8Y2hhcj4oKSk7CisgIH0KKworICAvLy8gQnVpbGQgYSBzdHJpbmcgbGl0ZXJhbC4KKyAgU3RyaW5nTGl0ZXJhbChjb25zdCBBU1RDb250ZXh0ICZDdHgsIFN0cmluZ1JlZiBTdHIsIFN0cmluZ0tpbmQgS2luZCwKKyAgICAgICAgICAgICAgICBib29sIFBhc2NhbCwgUXVhbFR5cGUgVHksIGNvbnN0IFNvdXJjZUxvY2F0aW9uICpMb2MsCisgICAgICAgICAgICAgICAgdW5zaWduZWQgTnVtQ29uY2F0ZW5hdGVkKTsKKworICAvLy8gQnVpbGQgYW4gZW1wdHkgc3RyaW5nIGxpdGVyYWwuCisgIFN0cmluZ0xpdGVyYWwoRW1wdHlTaGVsbCBFbXB0eSwgdW5zaWduZWQgTnVtQ29uY2F0ZW5hdGVkLCB1bnNpZ25lZCBMZW5ndGgsCisgICAgICAgICAgICAgICAgdW5zaWduZWQgQ2hhckJ5dGVXaWR0aCk7CisKKyAgLy8vIE1hcCBhIHRhcmdldCBhbmQgc3RyaW5nIGtpbmQgdG8gdGhlIGFwcHJvcHJpYXRlIGNoYXJhY3RlciB3aWR0aC4KKyAgc3RhdGljIHVuc2lnbmVkIG1hcENoYXJCeXRlV2lkdGgoVGFyZ2V0SW5mbyBjb25zdCAmVGFyZ2V0LCBTdHJpbmdLaW5kIFNLKTsKKworICAvLy8gU2V0IG9uZSBvZiB0aGUgc3RyaW5nIGxpdGVyYWwgdG9rZW4uCisgIHZvaWQgc2V0U3RyVG9rZW5Mb2ModW5zaWduZWQgVG9rTnVtLCBTb3VyY2VMb2NhdGlvbiBMKSB7CisgICAgYXNzZXJ0KFRva051bSA8IGdldE51bUNvbmNhdGVuYXRlZCgpICYmICJJbnZhbGlkIHRvayBudW1iZXIiKTsKKyAgICBnZXRUcmFpbGluZ09iamVjdHM8U291cmNlTG9jYXRpb24+KClbVG9rTnVtXSA9IEw7CisgIH0KIAogcHVibGljOgogICAvLy8gVGhpcyBpcyB0aGUgImZ1bGx5IGdlbmVyYWwiIGNvbnN0cnVjdG9yIHRoYXQgYWxsb3dzIHJlcHJlc2VudGF0aW9uIG9mCiAgIC8vLyBzdHJpbmdzIGZvcm1lZCBmcm9tIG11bHRpcGxlIGNvbmNhdGVuYXRlZCB0b2tlbnMuCi0gIHN0YXRpYyBTdHJpbmdMaXRlcmFsICpDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQywgU3RyaW5nUmVmIFN0ciwKKyAgc3RhdGljIFN0cmluZ0xpdGVyYWwgKkNyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDdHgsIFN0cmluZ1JlZiBTdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nS2luZCBLaW5kLCBib29sIFBhc2NhbCwgUXVhbFR5cGUgVHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlTG9jYXRpb24gKkxvYywgdW5zaWduZWQgTnVtU3Rycyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlTG9jYXRpb24gKkxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBOdW1Db25jYXRlbmF0ZWQpOwogCiAgIC8vLyBTaW1wbGUgY29uc3RydWN0b3IgZm9yIHN0cmluZyBsaXRlcmFscyBtYWRlIGZyb20gb25lIHRva2VuLgotICBzdGF0aWMgU3RyaW5nTGl0ZXJhbCAqQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkMsIFN0cmluZ1JlZiBTdHIsCisgIHN0YXRpYyBTdHJpbmdMaXRlcmFsICpDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQ3R4LCBTdHJpbmdSZWYgU3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0tpbmQgS2luZCwgYm9vbCBQYXNjYWwsIFF1YWxUeXBlIFR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIExvYykgewotICAgIHJldHVybiBDcmVhdGUoQywgU3RyLCBLaW5kLCBQYXNjYWwsIFR5LCAmTG9jLCAxKTsKKyAgICByZXR1cm4gQ3JlYXRlKEN0eCwgU3RyLCBLaW5kLCBQYXNjYWwsIFR5LCAmTG9jLCAxKTsKICAgfQogCiAgIC8vLyBDb25zdHJ1Y3QgYW4gZW1wdHkgc3RyaW5nIGxpdGVyYWwuCi0gIHN0YXRpYyBTdHJpbmdMaXRlcmFsICpDcmVhdGVFbXB0eShjb25zdCBBU1RDb250ZXh0ICZDLCB1bnNpZ25lZCBOdW1TdHJzKTsKKyAgc3RhdGljIFN0cmluZ0xpdGVyYWwgKkNyZWF0ZUVtcHR5KGNvbnN0IEFTVENvbnRleHQgJkN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE51bUNvbmNhdGVuYXRlZCwgdW5zaWduZWQgTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgQ2hhckJ5dGVXaWR0aCk7CiAKICAgU3RyaW5nUmVmIGdldFN0cmluZygpIGNvbnN0IHsKLSAgICBhc3NlcnQoQ2hhckJ5dGVXaWR0aD09MQotICAgICAgICAgICAmJiAiVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGluIHBsYWNlcyB0aGF0IGFzc3VtZSBzdHJpbmdzIHVzZSBjaGFyIik7Ci0gICAgcmV0dXJuIFN0cmluZ1JlZihTdHJEYXRhLmFzQ2hhciwgZ2V0Qnl0ZUxlbmd0aCgpKTsKKyAgICBhc3NlcnQoZ2V0Q2hhckJ5dGVXaWR0aCgpID09IDEgJiYKKyAgICAgICAgICAgIlRoaXMgZnVuY3Rpb24gaXMgdXNlZCBpbiBwbGFjZXMgdGhhdCBhc3N1bWUgc3RyaW5ncyB1c2UgY2hhciIpOworICAgIHJldHVybiBTdHJpbmdSZWYoZ2V0U3RyRGF0YUFzQ2hhcigpLCBnZXRCeXRlTGVuZ3RoKCkpOwogICB9CiAKICAgLy8vIEFsbG93IGFjY2VzcyB0byBjbGllbnRzIHRoYXQgbmVlZCB0aGUgYnl0ZSByZXByZXNlbnRhdGlvbiwgc3VjaCBhcwogICAvLy8gQVNUV3JpdGVyU3RtdDo6VmlzaXRTdHJpbmdMaXRlcmFsKCkuCiAgIFN0cmluZ1JlZiBnZXRCeXRlcygpIGNvbnN0IHsKICAgICAvLyBGSVhNRTogU3RyaW5nUmVmIG1heSBub3QgYmUgdGhlIHJpZ2h0IHR5cGUgdG8gdXNlIGFzIGEgcmVzdWx0IGZvciB0aGlzLgotICAgIGlmIChDaGFyQnl0ZVdpZHRoID09IDEpCi0gICAgICByZXR1cm4gU3RyaW5nUmVmKFN0ckRhdGEuYXNDaGFyLCBnZXRCeXRlTGVuZ3RoKCkpOwotICAgIGlmIChDaGFyQnl0ZVdpZHRoID09IDQpCi0gICAgICByZXR1cm4gU3RyaW5nUmVmKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KFN0ckRhdGEuYXNVSW50MzIpLAotICAgICAgICAgICAgICAgICAgICAgICBnZXRCeXRlTGVuZ3RoKCkpOwotICAgIGFzc2VydChDaGFyQnl0ZVdpZHRoID09IDIgJiYgInVuc3VwcG9ydGVkIENoYXJCeXRlV2lkdGgiKTsKLSAgICByZXR1cm4gU3RyaW5nUmVmKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KFN0ckRhdGEuYXNVSW50MTYpLAotICAgICAgICAgICAgICAgICAgICAgZ2V0Qnl0ZUxlbmd0aCgpKTsKKyAgICByZXR1cm4gU3RyaW5nUmVmKGdldFN0ckRhdGFBc0NoYXIoKSwgZ2V0Qnl0ZUxlbmd0aCgpKTsKICAgfQogCiAgIHZvaWQgb3V0cHV0U3RyaW5nKHJhd19vc3RyZWFtICZPUykgY29uc3Q7CiAKICAgdWludDMyX3QgZ2V0Q29kZVVuaXQoc2l6ZV90IGkpIGNvbnN0IHsKLSAgICBhc3NlcnQoaSA8IExlbmd0aCAmJiAib3V0IG9mIGJvdW5kcyBhY2Nlc3MiKTsKLSAgICBpZiAoQ2hhckJ5dGVXaWR0aCA9PSAxKQotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KFN0ckRhdGEuYXNDaGFyW2ldKTsKLSAgICBpZiAoQ2hhckJ5dGVXaWR0aCA9PSA0KQotICAgICAgcmV0dXJuIFN0ckRhdGEuYXNVSW50MzJbaV07Ci0gICAgYXNzZXJ0KENoYXJCeXRlV2lkdGggPT0gMiAmJiAidW5zdXBwb3J0ZWQgQ2hhckJ5dGVXaWR0aCIpOwotICAgIHJldHVybiBTdHJEYXRhLmFzVUludDE2W2ldOworICAgIGFzc2VydChpIDwgZ2V0TGVuZ3RoKCkgJiYgIm91dCBvZiBib3VuZHMgYWNjZXNzIik7CisgICAgc3dpdGNoIChnZXRDaGFyQnl0ZVdpZHRoKCkpIHsKKyAgICBjYXNlIDE6CisgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oZ2V0U3RyRGF0YUFzQ2hhcigpW2ldKTsKKyAgICBjYXNlIDI6CisgICAgICByZXR1cm4gZ2V0U3RyRGF0YUFzVUludDE2KClbaV07CisgICAgY2FzZSA0OgorICAgICAgcmV0dXJuIGdldFN0ckRhdGFBc1VJbnQzMigpW2ldOworICAgIH0KKyAgICBsbHZtX3VucmVhY2hhYmxlKCJVbnN1cHBvcnRlZCBjaGFyYWN0ZXIgd2lkdGghIik7CiAgIH0KIAotICB1bnNpZ25lZCBnZXRCeXRlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gQ2hhckJ5dGVXaWR0aCpMZW5ndGg7IH0KLSAgdW5zaWduZWQgZ2V0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gTGVuZ3RoOyB9Ci0gIHVuc2lnbmVkIGdldENoYXJCeXRlV2lkdGgoKSBjb25zdCB7IHJldHVybiBDaGFyQnl0ZVdpZHRoOyB9CisgIHVuc2lnbmVkIGdldEJ5dGVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBnZXRDaGFyQnl0ZVdpZHRoKCkgKiBnZXRMZW5ndGgoKTsgfQorICB1bnNpZ25lZCBnZXRMZW5ndGgoKSBjb25zdCB7IHJldHVybiAqZ2V0VHJhaWxpbmdPYmplY3RzPHVuc2lnbmVkPigpOyB9CisgIHVuc2lnbmVkIGdldENoYXJCeXRlV2lkdGgoKSBjb25zdCB7IHJldHVybiBTdHJpbmdMaXRlcmFsQml0cy5DaGFyQnl0ZVdpZHRoOyB9CiAKLSAgLy8vIFNldHMgdGhlIHN0cmluZyBkYXRhIHRvIHRoZSBnaXZlbiBzdHJpbmcgZGF0YS4KLSAgdm9pZCBzZXRTdHJpbmcoY29uc3QgQVNUQ29udGV4dCAmQywgU3RyaW5nUmVmIFN0ciwKLSAgICAgICAgICAgICAgICAgU3RyaW5nS2luZCBLaW5kLCBib29sIElzUGFzY2FsKTsKKyAgU3RyaW5nS2luZCBnZXRLaW5kKCkgY29uc3QgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdHJpbmdLaW5kPihTdHJpbmdMaXRlcmFsQml0cy5LaW5kKTsKKyAgfQogCi0gIFN0cmluZ0tpbmQgZ2V0S2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cmluZ0tpbmQ+KEtpbmQpOyB9Ci0KLQotICBib29sIGlzQXNjaWkoKSBjb25zdCB7IHJldHVybiBLaW5kID09IEFzY2lpOyB9Ci0gIGJvb2wgaXNXaWRlKCkgY29uc3QgeyByZXR1cm4gS2luZCA9PSBXaWRlOyB9Ci0gIGJvb2wgaXNVVEY4KCkgY29uc3QgeyByZXR1cm4gS2luZCA9PSBVVEY4OyB9Ci0gIGJvb2wgaXNVVEYxNigpIGNvbnN0IHsgcmV0dXJuIEtpbmQgPT0gVVRGMTY7IH0KLSAgYm9vbCBpc1VURjMyKCkgY29uc3QgeyByZXR1cm4gS2luZCA9PSBVVEYzMjsgfQotICBib29sIGlzUGFzY2FsKCkgY29uc3QgeyByZXR1cm4gSXNQYXNjYWw7IH0KKyAgYm9vbCBpc0FzY2lpKCkgY29uc3QgeyByZXR1cm4gZ2V0S2luZCgpID09IEFzY2lpOyB9CisgIGJvb2wgaXNXaWRlKCkgY29uc3QgeyByZXR1cm4gZ2V0S2luZCgpID09IFdpZGU7IH0KKyAgYm9vbCBpc1VURjgoKSBjb25zdCB7IHJldHVybiBnZXRLaW5kKCkgPT0gVVRGODsgfQorICBib29sIGlzVVRGMTYoKSBjb25zdCB7IHJldHVybiBnZXRLaW5kKCkgPT0gVVRGMTY7IH0KKyAgYm9vbCBpc1VURjMyKCkgY29uc3QgeyByZXR1cm4gZ2V0S2luZCgpID09IFVURjMyOyB9CisgIGJvb2wgaXNQYXNjYWwoKSBjb25zdCB7IHJldHVybiBTdHJpbmdMaXRlcmFsQml0cy5Jc1Bhc2NhbDsgfQogCiAgIGJvb2wgY29udGFpbnNOb25Bc2NpaSgpIGNvbnN0IHsKLSAgICBTdHJpbmdSZWYgU3RyID0gZ2V0U3RyaW5nKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMCwgZSA9IFN0ci5zaXplKCk7IGkgIT0gZTsgKytpKQotICAgICAgaWYgKCFpc0FTQ0lJKFN0cltpXSkpCisgICAgZm9yIChhdXRvIGMgOiBnZXRTdHJpbmcoKSkKKyAgICAgIGlmICghaXNBU0NJSShjKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKICAgYm9vbCBjb250YWluc05vbkFzY2lpT3JOdWxsKCkgY29uc3QgewotICAgIFN0cmluZ1JlZiBTdHIgPSBnZXRTdHJpbmcoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBlID0gU3RyLnNpemUoKTsgaSAhPSBlOyArK2kpCi0gICAgICBpZiAoIWlzQVNDSUkoU3RyW2ldKSB8fCAhU3RyW2ldKQorICAgIGZvciAoYXV0byBjIDogZ2V0U3RyaW5nKCkpCisgICAgICBpZiAoIWlzQVNDSUkoYykgfHwgIWMpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKICAgfQogCiAgIC8vLyBnZXROdW1Db25jYXRlbmF0ZWQgLSBHZXQgdGhlIG51bWJlciBvZiBzdHJpbmcgbGl0ZXJhbCB0b2tlbnMgdGhhdCB3ZXJlCiAgIC8vLyBjb25jYXRlbmF0ZWQgaW4gdHJhbnNsYXRpb24gcGhhc2UgIzYgdG8gZm9ybSB0aGlzIHN0cmluZyBsaXRlcmFsLgotICB1bnNpZ25lZCBnZXROdW1Db25jYXRlbmF0ZWQoKSBjb25zdCB7IHJldHVybiBOdW1Db25jYXRlbmF0ZWQ7IH0KLQotICBTb3VyY2VMb2NhdGlvbiBnZXRTdHJUb2tlbkxvYyh1bnNpZ25lZCBUb2tOdW0pIGNvbnN0IHsKLSAgICBhc3NlcnQoVG9rTnVtIDwgTnVtQ29uY2F0ZW5hdGVkICYmICJJbnZhbGlkIHRvayBudW1iZXIiKTsKLSAgICByZXR1cm4gVG9rTG9jc1tUb2tOdW1dOworICB1bnNpZ25lZCBnZXROdW1Db25jYXRlbmF0ZWQoKSBjb25zdCB7CisgICAgcmV0dXJuIFN0cmluZ0xpdGVyYWxCaXRzLk51bUNvbmNhdGVuYXRlZDsKICAgfQotICB2b2lkIHNldFN0clRva2VuTG9jKHVuc2lnbmVkIFRva051bSwgU291cmNlTG9jYXRpb24gTCkgewotICAgIGFzc2VydChUb2tOdW0gPCBOdW1Db25jYXRlbmF0ZWQgJiYgIkludmFsaWQgdG9rIG51bWJlciIpOwotICAgIFRva0xvY3NbVG9rTnVtXSA9IEw7CisKKyAgLy8vIEdldCBvbmUgb2YgdGhlIHN0cmluZyBsaXRlcmFsIHRva2VuLgorICBTb3VyY2VMb2NhdGlvbiBnZXRTdHJUb2tlbkxvYyh1bnNpZ25lZCBUb2tOdW0pIGNvbnN0IHsKKyAgICBhc3NlcnQoVG9rTnVtIDwgZ2V0TnVtQ29uY2F0ZW5hdGVkKCkgJiYgIkludmFsaWQgdG9rIG51bWJlciIpOworICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8U291cmNlTG9jYXRpb24+KClbVG9rTnVtXTsKICAgfQogCiAgIC8vLyBnZXRMb2NhdGlvbk9mQnl0ZSAtIFJldHVybiBhIHNvdXJjZSBsb2NhdGlvbiB0aGF0IHBvaW50cyB0byB0aGUgc3BlY2lmaWVkCkBAIC0xNzA2LDE0ICsxNzYyLDE4IEBACiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkICpTdGFydFRva2VuQnl0ZU9mZnNldCA9IG51bGxwdHIpIGNvbnN0OwogCiAgIHR5cGVkZWYgY29uc3QgU291cmNlTG9jYXRpb24gKnRva2xvY19pdGVyYXRvcjsKLSAgdG9rbG9jX2l0ZXJhdG9yIHRva2xvY19iZWdpbigpIGNvbnN0IHsgcmV0dXJuIFRva0xvY3M7IH0KLSAgdG9rbG9jX2l0ZXJhdG9yIHRva2xvY19lbmQoKSBjb25zdCB7IHJldHVybiBUb2tMb2NzICsgTnVtQ29uY2F0ZW5hdGVkOyB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIFRva0xvY3NbMF07IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7Ci0gICAgcmV0dXJuIFRva0xvY3NbTnVtQ29uY2F0ZW5hdGVkIC0gMV07CisgIHRva2xvY19pdGVyYXRvciB0b2tsb2NfYmVnaW4oKSBjb25zdCB7CisgICAgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxTb3VyY2VMb2NhdGlvbj4oKTsKICAgfQogCisgIHRva2xvY19pdGVyYXRvciB0b2tsb2NfZW5kKCkgY29uc3QgeworICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8U291cmNlTG9jYXRpb24+KCkgKyBnZXROdW1Db25jYXRlbmF0ZWQoKTsKKyAgfQorCisgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiAqdG9rbG9jX2JlZ2luKCk7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiAqKHRva2xvY19lbmQoKSAtIDEpOyB9CisKICAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBTdG10ICpUKSB7CiAgICAgcmV0dXJuIFQtPmdldFN0bXRDbGFzcygpID09IFN0cmluZ0xpdGVyYWxDbGFzczsKICAgfQpAQCAtMTcyNyw2ICsxNzg3LDkxIEBACiAgIH0KIH07CiAKKy8vLyBbQzk5IDYuNC4yLjJdIC0gQSBwcmVkZWZpbmVkIGlkZW50aWZpZXIgc3VjaCBhcyBfX2Z1bmNfXy4KK2NsYXNzIFByZWRlZmluZWRFeHByIGZpbmFsCisgICAgOiBwdWJsaWMgRXhwciwKKyAgICAgIHByaXZhdGUgbGx2bTo6VHJhaWxpbmdPYmplY3RzPFByZWRlZmluZWRFeHByLCBTdG10ICo+IHsKKyAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgIGZyaWVuZCBUcmFpbGluZ09iamVjdHM7CisKKyAgLy8gUHJlZGVmaW5lZEV4cHIgaXMgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhIHNpbmdsZSB0cmFpbGluZworICAvLyAiU3RtdCAqIiBmb3IgdGhlIHByZWRlZmluZWQgaWRlbnRpZmllci4gSXQgaXMgcHJlc2VudCBpZiBhbmQgb25seSBpZgorICAvLyBoYXNGdW5jdGlvbk5hbWUoKSBpcyB0cnVlIGFuZCBpcyBhbHdheXMgYSAiU3RyaW5nTGl0ZXJhbCAqIi4KKworcHVibGljOgorICBlbnVtIElkZW50S2luZCB7CisgICAgRnVuYywKKyAgICBGdW5jdGlvbiwKKyAgICBMRnVuY3Rpb24sIC8vIFNhbWUgYXMgRnVuY3Rpb24sIGJ1dCBhcyB3aWRlIHN0cmluZy4KKyAgICBGdW5jRE5hbWUsCisgICAgRnVuY1NpZywKKyAgICBMRnVuY1NpZywgLy8gU2FtZSBhcyBGdW5jU2lnLCBidXQgYXMgYXMgd2lkZSBzdHJpbmcKKyAgICBQcmV0dHlGdW5jdGlvbiwKKyAgICAvLy8gVGhlIHNhbWUgYXMgUHJldHR5RnVuY3Rpb24sIGV4Y2VwdCB0aGF0IHRoZQorICAgIC8vLyAndmlydHVhbCcga2V5d29yZCBpcyBvbWl0dGVkIGZvciB2aXJ0dWFsIG1lbWJlciBmdW5jdGlvbnMuCisgICAgUHJldHR5RnVuY3Rpb25Ob1ZpcnR1YWwKKyAgfTsKKworcHJpdmF0ZToKKyAgUHJlZGVmaW5lZEV4cHIoU291cmNlTG9jYXRpb24gTCwgUXVhbFR5cGUgRk5UeSwgSWRlbnRLaW5kIElLLAorICAgICAgICAgICAgICAgICBTdHJpbmdMaXRlcmFsICpTTCk7CisKKyAgZXhwbGljaXQgUHJlZGVmaW5lZEV4cHIoRW1wdHlTaGVsbCBFbXB0eSwgYm9vbCBIYXNGdW5jdGlvbk5hbWUpOworCisgIC8vLyBUcnVlIGlmIHRoaXMgUHJlZGVmaW5lZEV4cHIgaGFzIHN0b3JhZ2UgZm9yIGEgZnVuY3Rpb24gbmFtZS4KKyAgYm9vbCBoYXNGdW5jdGlvbk5hbWUoKSBjb25zdCB7IHJldHVybiBQcmVkZWZpbmVkRXhwckJpdHMuSGFzRnVuY3Rpb25OYW1lOyB9CisKKyAgdm9pZCBzZXRGdW5jdGlvbk5hbWUoU3RyaW5nTGl0ZXJhbCAqU0wpIHsKKyAgICBhc3NlcnQoaGFzRnVuY3Rpb25OYW1lKCkgJiYKKyAgICAgICAgICAgIlRoaXMgUHJlZGVmaW5lZEV4cHIgaGFzIG5vIHN0b3JhZ2UgZm9yIGEgZnVuY3Rpb24gbmFtZSEiKTsKKyAgICAqZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKSA9IFNMOworICB9CisKK3B1YmxpYzoKKyAgLy8vIENyZWF0ZSBhIFByZWRlZmluZWRFeHByLgorICBzdGF0aWMgUHJlZGVmaW5lZEV4cHIgKkNyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDdHgsIFNvdXJjZUxvY2F0aW9uIEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIEZOVHksIElkZW50S2luZCBJSywgU3RyaW5nTGl0ZXJhbCAqU0wpOworCisgIC8vLyBDcmVhdGUgYW4gZW1wdHkgUHJlZGVmaW5lZEV4cHIuCisgIHN0YXRpYyBQcmVkZWZpbmVkRXhwciAqQ3JlYXRlRW1wdHkoY29uc3QgQVNUQ29udGV4dCAmQ3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgSGFzRnVuY3Rpb25OYW1lKTsKKworICBJZGVudEtpbmQgZ2V0SWRlbnRLaW5kKCkgY29uc3QgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJZGVudEtpbmQ+KFByZWRlZmluZWRFeHByQml0cy5LaW5kKTsKKyAgfQorCisgIFNvdXJjZUxvY2F0aW9uIGdldExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gUHJlZGVmaW5lZEV4cHJCaXRzLkxvYzsgfQorICB2b2lkIHNldExvY2F0aW9uKFNvdXJjZUxvY2F0aW9uIEwpIHsgUHJlZGVmaW5lZEV4cHJCaXRzLkxvYyA9IEw7IH0KKworICBTdHJpbmdMaXRlcmFsICpnZXRGdW5jdGlvbk5hbWUoKSB7CisgICAgcmV0dXJuIGhhc0Z1bmN0aW9uTmFtZSgpCisgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PFN0cmluZ0xpdGVyYWwgKj4oKmdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KCkpCisgICAgICAgICAgICAgICA6IG51bGxwdHI7CisgIH0KKworICBjb25zdCBTdHJpbmdMaXRlcmFsICpnZXRGdW5jdGlvbk5hbWUoKSBjb25zdCB7CisgICAgcmV0dXJuIGhhc0Z1bmN0aW9uTmFtZSgpCisgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PFN0cmluZ0xpdGVyYWwgKj4oKmdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KCkpCisgICAgICAgICAgICAgICA6IG51bGxwdHI7CisgIH0KKworICBzdGF0aWMgU3RyaW5nUmVmIGdldElkZW50S2luZE5hbWUoSWRlbnRLaW5kIElLKTsKKyAgc3RhdGljIHN0ZDo6c3RyaW5nIENvbXB1dGVOYW1lKElkZW50S2luZCBJSywgY29uc3QgRGVjbCAqQ3VycmVudERlY2wpOworCisgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgeyByZXR1cm4gZ2V0TG9jYXRpb24oKTsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCB7IHJldHVybiBnZXRMb2NhdGlvbigpOyB9CisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBTdG10ICpUKSB7CisgICAgcmV0dXJuIFQtPmdldFN0bXRDbGFzcygpID09IFByZWRlZmluZWRFeHByQ2xhc3M7CisgIH0KKworICAvLyBJdGVyYXRvcnMKKyAgY2hpbGRfcmFuZ2UgY2hpbGRyZW4oKSB7CisgICAgcmV0dXJuIGNoaWxkX3JhbmdlKGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KCksCisgICAgICAgICAgICAgICAgICAgICAgIGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KCkgKyBoYXNGdW5jdGlvbk5hbWUoKSk7CisgIH0KK307CisKIC8vLyBQYXJlbkV4cHIgLSBUaGlzIHJlcHJlc2VudHMgYSBwYXJldGhlc2l6ZWQgZXhwcmVzc2lvbiwgZS5nLiAiKDEpIi4gIFRoaXMKIC8vLyBBU1Qgbm9kZSBpcyBvbmx5IGZvcm1lZCBpZiBmdWxsIGxvY2F0aW9uIGluZm9ybWF0aW9uIGlzIHJlcXVlc3RlZC4KIGNsYXNzIFBhcmVuRXhwciA6IHB1YmxpYyBFeHByIHsKQEAgLTE3ODIsMTUgKzE5MjcsMTEgQEAKIC8vLyAgIGxhdGVyIHJldHVybnMgemVybyBpbiB0aGUgdHlwZSBvZiB0aGUgb3BlcmFuZC4KIC8vLwogY2xhc3MgVW5hcnlPcGVyYXRvciA6IHB1YmxpYyBFeHByIHsKKyAgU3RtdCAqVmFsOworCiBwdWJsaWM6CiAgIHR5cGVkZWYgVW5hcnlPcGVyYXRvcktpbmQgT3Bjb2RlOwogCi1wcml2YXRlOgotICB1bnNpZ25lZCBPcGMgOiA1OwotICB1bnNpZ25lZCBDYW5PdmVyZmxvdyA6IDE7Ci0gIFNvdXJjZUxvY2F0aW9uIExvYzsKLSAgU3RtdCAqVmFsOwotcHVibGljOgogICBVbmFyeU9wZXJhdG9yKEV4cHIgKmlucHV0LCBPcGNvZGUgb3BjLCBRdWFsVHlwZSB0eXBlLCBFeHByVmFsdWVLaW5kIFZLLAogICAgICAgICAgICAgICAgIEV4cHJPYmplY3RLaW5kIE9LLCBTb3VyY2VMb2NhdGlvbiBsLCBib29sIENhbk92ZXJmbG93KQogICAgICAgOiBFeHByKFVuYXJ5T3BlcmF0b3JDbGFzcywgdHlwZSwgVkssIE9LLApAQCAtMTc5OSwyMSArMTk0MCwyOCBAQAogICAgICAgICAgICAgIChpbnB1dC0+aXNJbnN0YW50aWF0aW9uRGVwZW5kZW50KCkgfHwKICAgICAgICAgICAgICAgdHlwZS0+aXNJbnN0YW50aWF0aW9uRGVwZW5kZW50VHlwZSgpKSwKICAgICAgICAgICAgICBpbnB1dC0+Y29udGFpbnNVbmV4cGFuZGVkUGFyYW1ldGVyUGFjaygpKSwKLSAgICAgICAgT3BjKG9wYyksIENhbk92ZXJmbG93KENhbk92ZXJmbG93KSwgTG9jKGwpLCBWYWwoaW5wdXQpIHt9CisgICAgICAgIFZhbChpbnB1dCkgeworICAgIFVuYXJ5T3BlcmF0b3JCaXRzLk9wYyA9IG9wYzsKKyAgICBVbmFyeU9wZXJhdG9yQml0cy5DYW5PdmVyZmxvdyA9IENhbk92ZXJmbG93OworICAgIFVuYXJ5T3BlcmF0b3JCaXRzLkxvYyA9IGw7CisgIH0KIAogICAvLy8gQnVpbGQgYW4gZW1wdHkgdW5hcnkgb3BlcmF0b3IuCi0gIGV4cGxpY2l0IFVuYXJ5T3BlcmF0b3IoRW1wdHlTaGVsbCBFbXB0eSkKLSAgICA6IEV4cHIoVW5hcnlPcGVyYXRvckNsYXNzLCBFbXB0eSksIE9wYyhVT19BZGRyT2YpIHsgfQorICBleHBsaWNpdCBVbmFyeU9wZXJhdG9yKEVtcHR5U2hlbGwgRW1wdHkpIDogRXhwcihVbmFyeU9wZXJhdG9yQ2xhc3MsIEVtcHR5KSB7CisgICAgVW5hcnlPcGVyYXRvckJpdHMuT3BjID0gVU9fQWRkck9mOworICB9CiAKLSAgT3Bjb2RlIGdldE9wY29kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZT4oT3BjKTsgfQotICB2b2lkIHNldE9wY29kZShPcGNvZGUgTykgeyBPcGMgPSBPOyB9CisgIE9wY29kZSBnZXRPcGNvZGUoKSBjb25zdCB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZT4oVW5hcnlPcGVyYXRvckJpdHMuT3BjKTsKKyAgfQorICB2b2lkIHNldE9wY29kZShPcGNvZGUgT3BjKSB7IFVuYXJ5T3BlcmF0b3JCaXRzLk9wYyA9IE9wYzsgfQogCiAgIEV4cHIgKmdldFN1YkV4cHIoKSBjb25zdCB7IHJldHVybiBjYXN0PEV4cHI+KFZhbCk7IH0KICAgdm9pZCBzZXRTdWJFeHByKEV4cHIgKkUpIHsgVmFsID0gRTsgfQogCiAgIC8vLyBnZXRPcGVyYXRvckxvYyAtIFJldHVybiB0aGUgbG9jYXRpb24gb2YgdGhlIG9wZXJhdG9yLgotICBTb3VyY2VMb2NhdGlvbiBnZXRPcGVyYXRvckxvYygpIGNvbnN0IHsgcmV0dXJuIExvYzsgfQotICB2b2lkIHNldE9wZXJhdG9yTG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgTG9jID0gTDsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRPcGVyYXRvckxvYygpIGNvbnN0IHsgcmV0dXJuIFVuYXJ5T3BlcmF0b3JCaXRzLkxvYzsgfQorICB2b2lkIHNldE9wZXJhdG9yTG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgVW5hcnlPcGVyYXRvckJpdHMuTG9jID0gTDsgfQogCiAgIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHVuYXJ5IG9wZXJhdG9yIGNhbiBjYXVzZSBhbiBvdmVyZmxvdy4gRm9yIGluc3RhbmNlLAogICAvLy8gICBzaWduZWQgaW50IGkgPSBJTlRfTUFYOyBpKys7CkBAIC0xODIxLDggKzE5NjksOCBAQAogICAvLy8gRHVlIHRvIGludGVnZXIgcHJvbW90aW9ucywgYysrIGlzIHByb21vdGVkIHRvIGFuIGludCBiZWZvcmUgdGhlIHBvc3RmaXgKICAgLy8vIGluY3JlbWVudCwgYW5kIHRoZSByZXN1bHQgaXMgYW4gaW50IHRoYXQgY2Fubm90IG92ZXJmbG93LiBIb3dldmVyLCBpKysKICAgLy8vIGNhbiBvdmVyZmxvdy4KLSAgYm9vbCBjYW5PdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIENhbk92ZXJmbG93OyB9Ci0gIHZvaWQgc2V0Q2FuT3ZlcmZsb3coYm9vbCBDKSB7IENhbk92ZXJmbG93ID0gQzsgfQorICBib29sIGNhbk92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gVW5hcnlPcGVyYXRvckJpdHMuQ2FuT3ZlcmZsb3c7IH0KKyAgdm9pZCBzZXRDYW5PdmVyZmxvdyhib29sIEMpIHsgVW5hcnlPcGVyYXRvckJpdHMuQ2FuT3ZlcmZsb3cgPSBDOyB9CiAKICAgLy8vIGlzUG9zdGZpeCAtIFJldHVybiB0cnVlIGlmIHRoaXMgaXMgYSBwb3N0Zml4IG9wZXJhdGlvbiwgbGlrZSB4KysuCiAgIHN0YXRpYyBib29sIGlzUG9zdGZpeChPcGNvZGUgT3ApIHsKQEAgLTE4NzQsMTIgKzIwMjIsMTIgQEAKICAgc3RhdGljIE92ZXJsb2FkZWRPcGVyYXRvcktpbmQgZ2V0T3ZlcmxvYWRlZE9wZXJhdG9yKE9wY29kZSBPcGMpOwogCiAgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7Ci0gICAgcmV0dXJuIGlzUG9zdGZpeCgpID8gVmFsLT5nZXRCZWdpbkxvYygpIDogTG9jOworICAgIHJldHVybiBpc1Bvc3RmaXgoKSA/IFZhbC0+Z2V0QmVnaW5Mb2MoKSA6IGdldE9wZXJhdG9yTG9jKCk7CiAgIH0KICAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7Ci0gICAgcmV0dXJuIGlzUG9zdGZpeCgpID8gTG9jIDogVmFsLT5nZXRFbmRMb2MoKTsKKyAgICByZXR1cm4gaXNQb3N0Zml4KCkgPyBnZXRPcGVyYXRvckxvYygpIDogVmFsLT5nZXRFbmRMb2MoKTsKICAgfQotICBTb3VyY2VMb2NhdGlvbiBnZXRFeHByTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBMb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0RXhwckxvYygpIGNvbnN0IHsgcmV0dXJuIGdldE9wZXJhdG9yTG9jKCk7IH0KIAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFN0bXQgKlQpIHsKICAgICByZXR1cm4gVC0+Z2V0U3RtdENsYXNzKCkgPT0gVW5hcnlPcGVyYXRvckNsYXNzOwpAQCAtMjE5NSw5ICsyMzQzLDExIEBACiAKIC8vLyBBcnJheVN1YnNjcmlwdEV4cHIgLSBbQzk5IDYuNS4yLjFdIEFycmF5IFN1YnNjcmlwdGluZy4KIGNsYXNzIEFycmF5U3Vic2NyaXB0RXhwciA6IHB1YmxpYyBFeHByIHsKLSAgZW51bSB7IExIUywgUkhTLCBFTkRfRVhQUj0yIH07Ci0gIFN0bXQqIFN1YkV4cHJzW0VORF9FWFBSXTsKLSAgU291cmNlTG9jYXRpb24gUkJyYWNrZXRMb2M7CisgIGVudW0geyBMSFMsIFJIUywgRU5EX0VYUFIgfTsKKyAgU3RtdCAqU3ViRXhwcnNbRU5EX0VYUFJdOworCisgIGJvb2wgbGhzSXNCYXNlKCkgY29uc3QgeyByZXR1cm4gZ2V0UkhTKCktPmdldFR5cGUoKS0+aXNJbnRlZ2VyVHlwZSgpOyB9CisKIHB1YmxpYzoKICAgQXJyYXlTdWJzY3JpcHRFeHByKEV4cHIgKmxocywgRXhwciAqcmhzLCBRdWFsVHlwZSB0LAogICAgICAgICAgICAgICAgICAgICAgRXhwclZhbHVlS2luZCBWSywgRXhwck9iamVjdEtpbmQgT0ssCkBAIC0yMjA4LDEwICsyMzU4LDEwIEBACiAgICAgICAgICAobGhzLT5pc0luc3RhbnRpYXRpb25EZXBlbmRlbnQoKSB8fAogICAgICAgICAgIHJocy0+aXNJbnN0YW50aWF0aW9uRGVwZW5kZW50KCkpLAogICAgICAgICAgKGxocy0+Y29udGFpbnNVbmV4cGFuZGVkUGFyYW1ldGVyUGFjaygpIHx8Ci0gICAgICAgICAgcmhzLT5jb250YWluc1VuZXhwYW5kZWRQYXJhbWV0ZXJQYWNrKCkpKSwKLSAgICBSQnJhY2tldExvYyhyYnJhY2tldGxvYykgeworICAgICAgICAgIHJocy0+Y29udGFpbnNVbmV4cGFuZGVkUGFyYW1ldGVyUGFjaygpKSkgewogICAgIFN1YkV4cHJzW0xIU10gPSBsaHM7CiAgICAgU3ViRXhwcnNbUkhTXSA9IHJoczsKKyAgICBBcnJheVN1YnNjcmlwdEV4cHJCaXRzLlJCcmFja2V0TG9jID0gcmJyYWNrZXRsb2M7CiAgIH0KIAogICAvLy8gQ3JlYXRlIGFuIGVtcHR5IGFycmF5IHN1YnNjcmlwdCBleHByZXNzaW9uLgpAQCAtMjIzNSwyOSArMjM4NSwyMyBAQAogICBjb25zdCBFeHByICpnZXRSSFMoKSBjb25zdCB7IHJldHVybiBjYXN0PEV4cHI+KFN1YkV4cHJzW1JIU10pOyB9CiAgIHZvaWQgc2V0UkhTKEV4cHIgKkUpIHsgU3ViRXhwcnNbUkhTXSA9IEU7IH0KIAotICBFeHByICpnZXRCYXNlKCkgewotICAgIHJldHVybiBnZXRSSFMoKS0+Z2V0VHlwZSgpLT5pc0ludGVnZXJUeXBlKCkgPyBnZXRMSFMoKSA6IGdldFJIUygpOwotICB9CisgIEV4cHIgKmdldEJhc2UoKSB7IHJldHVybiBsaHNJc0Jhc2UoKSA/IGdldExIUygpIDogZ2V0UkhTKCk7IH0KKyAgY29uc3QgRXhwciAqZ2V0QmFzZSgpIGNvbnN0IHsgcmV0dXJuIGxoc0lzQmFzZSgpID8gZ2V0TEhTKCkgOiBnZXRSSFMoKTsgfQogCi0gIGNvbnN0IEV4cHIgKmdldEJhc2UoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGdldFJIUygpLT5nZXRUeXBlKCktPmlzSW50ZWdlclR5cGUoKSA/IGdldExIUygpIDogZ2V0UkhTKCk7Ci0gIH0KLQotICBFeHByICpnZXRJZHgoKSB7Ci0gICAgcmV0dXJuIGdldFJIUygpLT5nZXRUeXBlKCktPmlzSW50ZWdlclR5cGUoKSA/IGdldFJIUygpIDogZ2V0TEhTKCk7Ci0gIH0KLQotICBjb25zdCBFeHByICpnZXRJZHgoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGdldFJIUygpLT5nZXRUeXBlKCktPmlzSW50ZWdlclR5cGUoKSA/IGdldFJIUygpIDogZ2V0TEhTKCk7Ci0gIH0KKyAgRXhwciAqZ2V0SWR4KCkgeyByZXR1cm4gbGhzSXNCYXNlKCkgPyBnZXRSSFMoKSA6IGdldExIUygpOyB9CisgIGNvbnN0IEV4cHIgKmdldElkeCgpIGNvbnN0IHsgcmV0dXJuIGxoc0lzQmFzZSgpID8gZ2V0UkhTKCkgOiBnZXRMSFMoKTsgfQogCiAgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7CiAgICAgcmV0dXJuIGdldExIUygpLT5nZXRCZWdpbkxvYygpOwogICB9Ci0gIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gUkJyYWNrZXRMb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgeyByZXR1cm4gZ2V0UkJyYWNrZXRMb2MoKTsgfQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldFJCcmFja2V0TG9jKCkgY29uc3QgeyByZXR1cm4gUkJyYWNrZXRMb2M7IH0KLSAgdm9pZCBzZXRSQnJhY2tldExvYyhTb3VyY2VMb2NhdGlvbiBMKSB7IFJCcmFja2V0TG9jID0gTDsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRSQnJhY2tldExvYygpIGNvbnN0IHsKKyAgICByZXR1cm4gQXJyYXlTdWJzY3JpcHRFeHByQml0cy5SQnJhY2tldExvYzsKKyAgfQorICB2b2lkIHNldFJCcmFja2V0TG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsKKyAgICBBcnJheVN1YnNjcmlwdEV4cHJCaXRzLlJCcmFja2V0TG9jID0gTDsKKyAgfQogCiAgIFNvdXJjZUxvY2F0aW9uIGdldEV4cHJMb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsKICAgICByZXR1cm4gZ2V0QmFzZSgpLT5nZXRFeHByTG9jKCk7CkBAIC0yMjgzLDkzICsyNDI3LDE4OCBAQAogLy8vIGEgc3ViY2xhc3MgZm9yIG92ZXJsb2FkZWQgb3BlcmF0b3IgY2FsbHMgdGhhdCB1c2Ugb3BlcmF0b3Igc3ludGF4LCBlLmcuLAogLy8vICJzdHIxICsgc3RyMiIgdG8gcmVzb2x2ZSB0byBhIGZ1bmN0aW9uIGNhbGwuCiBjbGFzcyBDYWxsRXhwciA6IHB1YmxpYyBFeHByIHsKLSAgZW51bSB7IEZOPTAsIFBSRUFSR1NfU1RBUlQ9MSB9OwotICBTdG10ICoqU3ViRXhwcnM7CisgIGVudW0geyBGTiA9IDAsIFBSRUFSR1NfU1RBUlQgPSAxIH07CisKKyAgLy8vIFRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGluIHRoZSBjYWxsIGV4cHJlc3Npb24uCiAgIHVuc2lnbmVkIE51bUFyZ3M7CisKKyAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgcmlnaHQgcGFyZW50aGVzZS4gVGhpcyBoYXMgYSBkaWZmZXJlbnQgbWVhbmluZyBmb3IKKyAgLy8vIHRoZSBkZXJpdmVkIGNsYXNzZXMgb2YgQ2FsbEV4cHIuCiAgIFNvdXJjZUxvY2F0aW9uIFJQYXJlbkxvYzsKIAogICB2b2lkIHVwZGF0ZURlcGVuZGVuY2llc0Zyb21BcmcoRXhwciAqQXJnKTsKIAorICAvLyBDYWxsRXhwciBzdG9yZSBzb21lIGRhdGEgaW4gdHJhaWxpbmcgb2JqZWN0cy4gSG93ZXZlciBzaW5jZSBDYWxsRXhwcgorICAvLyBpcyB1c2VkIGEgYmFzZSBvZiBvdGhlciBleHByZXNzaW9uIGNsYXNzZXMgd2UgY2Fubm90IHVzZQorICAvLyBsbHZtOjpUcmFpbGluZ09iamVjdHMuIEluc3RlYWQgd2UgbWFudWFsbHkgcGVyZm9ybSB0aGUgcG9pbnRlciBhcml0aG1ldGljCisgIC8vIGFuZCBjYXN0cy4KKyAgLy8KKyAgLy8gVGhlIHRyYWlsaW5nIG9iamVjdHMgYXJlIGluIG9yZGVyOgorICAvLworICAvLyAqIEEgc2luZ2xlICJTdG10ICoiIGZvciB0aGUgY2FsbGVlIGV4cHJlc3Npb24uCisgIC8vCisgIC8vICogQW4gYXJyYXkgb2YgZ2V0TnVtUHJlQXJncygpICJTdG10ICoiIGZvciB0aGUgcHJlLWFyZ3VtZW50IGV4cHJlc3Npb25zLgorICAvLworICAvLyAqIEFuIGFycmF5IG9mIGdldE51bUFyZ3MoKSAiU3RtdCAqIiBmb3IgdGhlIGFyZ3VtZW50IGV4cHJlc3Npb25zLgorICAvLworICAvLyBOb3RlIHRoYXQgd2Ugc3RvcmUgdGhlIG9mZnNldCBpbiBieXRlcyBmcm9tIHRoZSB0aGlzIHBvaW50ZXIgdG8gdGhlIHN0YXJ0CisgIC8vIG9mIHRoZSB0cmFpbGluZyBvYmplY3RzLiBJdCB3b3VsZCBiZSBwZXJmZWN0bHkgcG9zc2libGUgdG8gY29tcHV0ZSBpdAorICAvLyBiYXNlZCBvbiB0aGUgZHluYW1pYyBraW5kIG9mIHRoZSBDYWxsRXhwci4gSG93ZXZlciAxLikgd2UgaGF2ZSBwbGVudHkgb2YKKyAgLy8gc3BhY2UgaW4gdGhlIGJpdC1maWVsZHMgb2YgU3RtdC4gMi4pIEl0IHdhcyBiZW5jaG1hcmtlZCB0byBiZSBmYXN0ZXIgdG8KKyAgLy8gY29tcHV0ZSB0aGlzIG9uY2UgYW5kIHRoZW4gbG9hZCB0aGUgb2Zmc2V0IGZyb20gdGhlIGJpdC1maWVsZHMgb2YgU3RtdCwKKyAgLy8gaW5zdGVhZCBvZiByZS1jb21wdXRpbmcgdGhlIG9mZnNldCBlYWNoIHRpbWUgdGhlIHRyYWlsaW5nIG9iamVjdHMgYXJlCisgIC8vIGFjY2Vzc2VkLgorCisgIC8vLyBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiB0aGUgdHJhaWxpbmcgYXJyYXkgb2YgIlN0bXQgKiIuCisgIFN0bXQgKipnZXRUcmFpbGluZ1N0bXRzKCkgeworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFN0bXQgKio+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciAqPih0aGlzKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbEV4cHJCaXRzLk9mZnNldFRvVHJhaWxpbmdPYmplY3RzKTsKKyAgfQorICBTdG10ICpjb25zdCAqZ2V0VHJhaWxpbmdTdG10cygpIGNvbnN0IHsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxDYWxsRXhwciAqPih0aGlzKS0+Z2V0VHJhaWxpbmdTdG10cygpOworICB9CisKKyAgLy8vIE1hcCBhIHN0YXRlbWVudCBjbGFzcyB0byB0aGUgYXBwcm9wcmlhdGUgb2Zmc2V0IGluIGJ5dGVzIGZyb20gdGhlCisgIC8vLyB0aGlzIHBvaW50ZXIgdG8gdGhlIHRyYWlsaW5nIG9iamVjdHMuCisgIHN0YXRpYyB1bnNpZ25lZCBvZmZzZXRUb1RyYWlsaW5nT2JqZWN0cyhTdG10Q2xhc3MgU0MpOworCitwdWJsaWM6CisgIGVudW0gY2xhc3MgQURMQ2FsbEtpbmQgOiBib29sIHsgTm90QURMLCBVc2VzQURMIH07CisgIHN0YXRpYyBjb25zdGV4cHIgQURMQ2FsbEtpbmQgTm90QURMID0gQURMQ2FsbEtpbmQ6Ok5vdEFETDsKKyAgc3RhdGljIGNvbnN0ZXhwciBBRExDYWxsS2luZCBVc2VzQURMID0gQURMQ2FsbEtpbmQ6OlVzZXNBREw7CisKIHByb3RlY3RlZDoKLSAgLy8gVGhlc2UgdmVyc2lvbnMgb2YgdGhlIGNvbnN0cnVjdG9yIGFyZSBmb3IgZGVyaXZlZCBjbGFzc2VzLgotICBDYWxsRXhwcihjb25zdCBBU1RDb250ZXh0ICZDLCBTdG10Q2xhc3MgU0MsIEV4cHIgKmZuLAotICAgICAgICAgICBBcnJheVJlZjxFeHByICo+IHByZWFyZ3MsIEFycmF5UmVmPEV4cHIgKj4gYXJncywgUXVhbFR5cGUgdCwKLSAgICAgICAgICAgRXhwclZhbHVlS2luZCBWSywgU291cmNlTG9jYXRpb24gcnBhcmVubG9jKTsKLSAgQ2FsbEV4cHIoY29uc3QgQVNUQ29udGV4dCAmQywgU3RtdENsYXNzIFNDLCBFeHByICpmbiwgQXJyYXlSZWY8RXhwciAqPiBhcmdzLAotICAgICAgICAgICBRdWFsVHlwZSB0LCBFeHByVmFsdWVLaW5kIFZLLCBTb3VyY2VMb2NhdGlvbiBycGFyZW5sb2MpOwotICBDYWxsRXhwcihjb25zdCBBU1RDb250ZXh0ICZDLCBTdG10Q2xhc3MgU0MsIHVuc2lnbmVkIE51bVByZUFyZ3MsCisgIC8vLyBCdWlsZCBhIGNhbGwgZXhwcmVzc2lvbiwgYXNzdW1pbmcgdGhhdCBhcHByb3ByaWF0ZSBzdG9yYWdlIGhhcyBiZWVuCisgIC8vLyBhbGxvY2F0ZWQgZm9yIHRoZSB0cmFpbGluZyBvYmplY3RzLgorICBDYWxsRXhwcihTdG10Q2xhc3MgU0MsIEV4cHIgKkZuLCBBcnJheVJlZjxFeHByICo+IFByZUFyZ3MsCisgICAgICAgICAgIEFycmF5UmVmPEV4cHIgKj4gQXJncywgUXVhbFR5cGUgVHksIEV4cHJWYWx1ZUtpbmQgVkssCisgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFJQYXJlbkxvYywgdW5zaWduZWQgTWluTnVtQXJncywgQURMQ2FsbEtpbmQgVXNlc0FETCk7CisKKyAgLy8vIEJ1aWxkIGFuIGVtcHR5IGNhbGwgZXhwcmVzc2lvbiwgZm9yIGRlc2VyaWFsaXphdGlvbi4KKyAgQ2FsbEV4cHIoU3RtdENsYXNzIFNDLCB1bnNpZ25lZCBOdW1QcmVBcmdzLCB1bnNpZ25lZCBOdW1BcmdzLAogICAgICAgICAgICBFbXB0eVNoZWxsIEVtcHR5KTsKIAotICBTdG10ICpnZXRQcmVBcmcodW5zaWduZWQgaSkgewotICAgIGFzc2VydChpIDwgZ2V0TnVtUHJlQXJncygpICYmICJQcmVhcmcgYWNjZXNzIG91dCBvZiByYW5nZSEiKTsKLSAgICByZXR1cm4gU3ViRXhwcnNbUFJFQVJHU19TVEFSVCtpXTsKKyAgLy8vIFJldHVybiB0aGUgc2l6ZSBpbiBieXRlcyBuZWVkZWQgZm9yIHRoZSB0cmFpbGluZyBvYmplY3RzLgorICAvLy8gVXNlZCBieSB0aGUgZGVyaXZlZCBjbGFzc2VzIHRvIGFsbG9jYXRlIHRoZSByaWdodCBhbW91bnQgb2Ygc3RvcmFnZS4KKyAgc3RhdGljIHVuc2lnbmVkIHNpemVPZlRyYWlsaW5nT2JqZWN0cyh1bnNpZ25lZCBOdW1QcmVBcmdzLCB1bnNpZ25lZCBOdW1BcmdzKSB7CisgICAgcmV0dXJuICgxICsgTnVtUHJlQXJncyArIE51bUFyZ3MpICogc2l6ZW9mKFN0bXQgKik7CiAgIH0KLSAgY29uc3QgU3RtdCAqZ2V0UHJlQXJnKHVuc2lnbmVkIGkpIGNvbnN0IHsKLSAgICBhc3NlcnQoaSA8IGdldE51bVByZUFyZ3MoKSAmJiAiUHJlYXJnIGFjY2VzcyBvdXQgb2YgcmFuZ2UhIik7Ci0gICAgcmV0dXJuIFN1YkV4cHJzW1BSRUFSR1NfU1RBUlQraV07CisKKyAgU3RtdCAqZ2V0UHJlQXJnKHVuc2lnbmVkIEkpIHsKKyAgICBhc3NlcnQoSSA8IGdldE51bVByZUFyZ3MoKSAmJiAiUHJlYXJnIGFjY2VzcyBvdXQgb2YgcmFuZ2UhIik7CisgICAgcmV0dXJuIGdldFRyYWlsaW5nU3RtdHMoKVtQUkVBUkdTX1NUQVJUICsgSV07CiAgIH0KLSAgdm9pZCBzZXRQcmVBcmcodW5zaWduZWQgaSwgU3RtdCAqUHJlQXJnKSB7Ci0gICAgYXNzZXJ0KGkgPCBnZXROdW1QcmVBcmdzKCkgJiYgIlByZWFyZyBhY2Nlc3Mgb3V0IG9mIHJhbmdlISIpOwotICAgIFN1YkV4cHJzW1BSRUFSR1NfU1RBUlQraV0gPSBQcmVBcmc7CisgIGNvbnN0IFN0bXQgKmdldFByZUFyZyh1bnNpZ25lZCBJKSBjb25zdCB7CisgICAgYXNzZXJ0KEkgPCBnZXROdW1QcmVBcmdzKCkgJiYgIlByZWFyZyBhY2Nlc3Mgb3V0IG9mIHJhbmdlISIpOworICAgIHJldHVybiBnZXRUcmFpbGluZ1N0bXRzKClbUFJFQVJHU19TVEFSVCArIEldOworICB9CisgIHZvaWQgc2V0UHJlQXJnKHVuc2lnbmVkIEksIFN0bXQgKlByZUFyZykgeworICAgIGFzc2VydChJIDwgZ2V0TnVtUHJlQXJncygpICYmICJQcmVhcmcgYWNjZXNzIG91dCBvZiByYW5nZSEiKTsKKyAgICBnZXRUcmFpbGluZ1N0bXRzKClbUFJFQVJHU19TVEFSVCArIEldID0gUHJlQXJnOwogICB9CiAKICAgdW5zaWduZWQgZ2V0TnVtUHJlQXJncygpIGNvbnN0IHsgcmV0dXJuIENhbGxFeHByQml0cy5OdW1QcmVBcmdzOyB9CiAKIHB1YmxpYzoKLSAgQ2FsbEV4cHIoY29uc3QgQVNUQ29udGV4dCYgQywgRXhwciAqZm4sIEFycmF5UmVmPEV4cHIqPiBhcmdzLCBRdWFsVHlwZSB0LAotICAgICAgICAgICBFeHByVmFsdWVLaW5kIFZLLCBTb3VyY2VMb2NhdGlvbiBycGFyZW5sb2MpOworICAvLy8gQ3JlYXRlIGEgY2FsbCBleHByZXNzaW9uLiBGbiBpcyB0aGUgY2FsbGVlIGV4cHJlc3Npb24sIEFyZ3MgaXMgdGhlCisgIC8vLyBhcmd1bWVudCBhcnJheSwgVHkgaXMgdGhlIHR5cGUgb2YgdGhlIGNhbGwgZXhwcmVzc2lvbiAod2hpY2ggaXMgKm5vdCoKKyAgLy8vIHRoZSByZXR1cm4gdHlwZSBpbiBnZW5lcmFsKSwgVksgaXMgdGhlIHZhbHVlIGtpbmQgb2YgdGhlIGNhbGwgZXhwcmVzc2lvbgorICAvLy8gKGx2YWx1ZSwgcnZhbHVlLCAuLi4pLCBhbmQgUlBhcmVuTG9jIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgcmlnaHQKKyAgLy8vIHBhcmVudGhlc2UgaW4gdGhlIGNhbGwgZXhwcmVzc2lvbi4gTWluTnVtQXJncyBzcGVjaWZpZXMgdGhlIG1pbmltdW0KKyAgLy8vIG51bWJlciBvZiBhcmd1bWVudHMuIFRoZSBhY3R1YWwgbnVtYmVyIG9mIGFyZ3VtZW50cyB3aWxsIGJlIHRoZSBncmVhdGVyCisgIC8vLyBvZiBBcmdzLnNpemUoKSBhbmQgTWluTnVtQXJncy4gVGhpcyBpcyB1c2VkIGluIGEgZmV3IHBsYWNlcyB0byBhbGxvY2F0ZQorICAvLy8gZW5vdWdoIHN0b3JhZ2UgZm9yIHRoZSBkZWZhdWx0IGFyZ3VtZW50cy4gVXNlc0FETCBzcGVjaWZpZXMgd2hldGhlciB0aGUKKyAgLy8vIGNhbGxlZSB3YXMgZm91bmQgdGhyb3VnaCBhcmd1bWVudC1kZXBlbmRlbnQgbG9va3VwLgorICAvLy8KKyAgLy8vIE5vdGUgdGhhdCB5b3UgY2FuIHVzZSBDcmVhdGVUZW1wb3JhcnkgaWYgeW91IG5lZWQgYSB0ZW1wb3JhcnkgY2FsbAorICAvLy8gZXhwcmVzc2lvbiBvbiB0aGUgc3RhY2suCisgIHN0YXRpYyBDYWxsRXhwciAqQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkN0eCwgRXhwciAqRm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEV4cHIgKj4gQXJncywgUXVhbFR5cGUgVHksIEV4cHJWYWx1ZUtpbmQgVkssCisgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFJQYXJlbkxvYywgdW5zaWduZWQgTWluTnVtQXJncyA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFETENhbGxLaW5kIFVzZXNBREwgPSBOb3RBREwpOwogCi0gIC8vLyBCdWlsZCBhbiBlbXB0eSBjYWxsIGV4cHJlc3Npb24uCi0gIENhbGxFeHByKGNvbnN0IEFTVENvbnRleHQgJkMsIFN0bXRDbGFzcyBTQywgRW1wdHlTaGVsbCBFbXB0eSk7CisgIC8vLyBDcmVhdGUgYSB0ZW1wb3JhcnkgY2FsbCBleHByZXNzaW9uIHdpdGggbm8gYXJndW1lbnRzIGluIHRoZSBtZW1vcnkKKyAgLy8vIHBvaW50ZWQgdG8gYnkgTWVtLiBNZW0gbXVzdCBwb2ludHMgdG8gYXQgbGVhc3Qgc2l6ZW9mKENhbGxFeHByKQorICAvLy8gKyBzaXplb2YoU3RtdCAqKSBieXRlcyBvZiBzdG9yYWdlLCBhbGlnbmVkIHRvIGFsaWdub2YoQ2FsbEV4cHIpOgorICAvLy8KKyAgLy8vIFxjb2Rley5jcHB9CisgIC8vLyAgIGxsdm06OkFsaWduZWRDaGFyQXJyYXk8YWxpZ25vZihDYWxsRXhwciksCisgIC8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKENhbGxFeHByKSArIHNpemVvZihTdG10ICopPiBCdWZmZXI7CisgIC8vLyAgIENhbGxFeHByICpUaGVDYWxsID0gQ2FsbEV4cHI6OkNyZWF0ZVRlbXBvcmFyeShCdWZmZXIuYnVmZmVyLCBldGMpOworICAvLy8gXGVuZGNvZGUKKyAgc3RhdGljIENhbGxFeHByICpDcmVhdGVUZW1wb3Jhcnkodm9pZCAqTWVtLCBFeHByICpGbiwgUXVhbFR5cGUgVHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJWYWx1ZUtpbmQgVkssIFNvdXJjZUxvY2F0aW9uIFJQYXJlbkxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURMQ2FsbEtpbmQgVXNlc0FETCA9IE5vdEFETCk7CiAKLSAgY29uc3QgRXhwciAqZ2V0Q2FsbGVlKCkgY29uc3QgeyByZXR1cm4gY2FzdDxFeHByPihTdWJFeHByc1tGTl0pOyB9Ci0gIEV4cHIgKmdldENhbGxlZSgpIHsgcmV0dXJuIGNhc3Q8RXhwcj4oU3ViRXhwcnNbRk5dKTsgfQotICB2b2lkIHNldENhbGxlZShFeHByICpGKSB7IFN1YkV4cHJzW0ZOXSA9IEY7IH0KKyAgLy8vIENyZWF0ZSBhbiBlbXB0eSBjYWxsIGV4cHJlc3Npb24sIGZvciBkZXNlcmlhbGl6YXRpb24uCisgIHN0YXRpYyBDYWxsRXhwciAqQ3JlYXRlRW1wdHkoY29uc3QgQVNUQ29udGV4dCAmQ3R4LCB1bnNpZ25lZCBOdW1BcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5U2hlbGwgRW1wdHkpOwogCi0gIERlY2wgKmdldENhbGxlZURlY2woKTsKKyAgRXhwciAqZ2V0Q2FsbGVlKCkgeyByZXR1cm4gY2FzdDxFeHByPihnZXRUcmFpbGluZ1N0bXRzKClbRk5dKTsgfQorICBjb25zdCBFeHByICpnZXRDYWxsZWUoKSBjb25zdCB7IHJldHVybiBjYXN0PEV4cHI+KGdldFRyYWlsaW5nU3RtdHMoKVtGTl0pOyB9CisgIHZvaWQgc2V0Q2FsbGVlKEV4cHIgKkYpIHsgZ2V0VHJhaWxpbmdTdG10cygpW0ZOXSA9IEY7IH0KKworICBBRExDYWxsS2luZCBnZXRBRExDYWxsS2luZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QURMQ2FsbEtpbmQ+KENhbGxFeHByQml0cy5Vc2VzQURMKTsKKyAgfQorICB2b2lkIHNldEFETENhbGxLaW5kKEFETENhbGxLaW5kIFYgPSBVc2VzQURMKSB7CisgICAgQ2FsbEV4cHJCaXRzLlVzZXNBREwgPSBzdGF0aWNfY2FzdDxib29sPihWKTsKKyAgfQorICBib29sIHVzZXNBREwoKSBjb25zdCB7IHJldHVybiBnZXRBRExDYWxsS2luZCgpID09IFVzZXNBREw7IH0KKworICBEZWNsICpnZXRDYWxsZWVEZWNsKCkgeyByZXR1cm4gZ2V0Q2FsbGVlKCktPmdldFJlZmVyZW5jZWREZWNsT2ZDYWxsZWUoKTsgfQogICBjb25zdCBEZWNsICpnZXRDYWxsZWVEZWNsKCkgY29uc3QgewotICAgIHJldHVybiBjb25zdF9jYXN0PENhbGxFeHByKj4odGhpcyktPmdldENhbGxlZURlY2woKTsKKyAgICByZXR1cm4gZ2V0Q2FsbGVlKCktPmdldFJlZmVyZW5jZWREZWNsT2ZDYWxsZWUoKTsKICAgfQogCi0gIC8vLyBJZiB0aGUgY2FsbGVlIGlzIGEgRnVuY3Rpb25EZWNsLCByZXR1cm4gaXQuIE90aGVyd2lzZSByZXR1cm4gMC4KLSAgRnVuY3Rpb25EZWNsICpnZXREaXJlY3RDYWxsZWUoKTsKKyAgLy8vIElmIHRoZSBjYWxsZWUgaXMgYSBGdW5jdGlvbkRlY2wsIHJldHVybiBpdC4gT3RoZXJ3aXNlIHJldHVybiBudWxsLgorICBGdW5jdGlvbkRlY2wgKmdldERpcmVjdENhbGxlZSgpIHsKKyAgICByZXR1cm4gZHluX2Nhc3Rfb3JfbnVsbDxGdW5jdGlvbkRlY2w+KGdldENhbGxlZURlY2woKSk7CisgIH0KICAgY29uc3QgRnVuY3Rpb25EZWNsICpnZXREaXJlY3RDYWxsZWUoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q2FsbEV4cHIqPih0aGlzKS0+Z2V0RGlyZWN0Q2FsbGVlKCk7CisgICAgcmV0dXJuIGR5bl9jYXN0X29yX251bGw8RnVuY3Rpb25EZWNsPihnZXRDYWxsZWVEZWNsKCkpOwogICB9CiAKICAgLy8vIGdldE51bUFyZ3MgLSBSZXR1cm4gdGhlIG51bWJlciBvZiBhY3R1YWwgYXJndW1lbnRzIHRvIHRoaXMgY2FsbC4KLSAgLy8vCiAgIHVuc2lnbmVkIGdldE51bUFyZ3MoKSBjb25zdCB7IHJldHVybiBOdW1BcmdzOyB9CiAKICAgLy8vIFJldHJpZXZlIHRoZSBjYWxsIGFyZ3VtZW50cy4KICAgRXhwciAqKmdldEFyZ3MoKSB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RXhwciAqKj4oU3ViRXhwcnMrZ2V0TnVtUHJlQXJncygpK1BSRUFSR1NfU1RBUlQpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEV4cHIgKio+KGdldFRyYWlsaW5nU3RtdHMoKSArIFBSRUFSR1NfU1RBUlQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE51bVByZUFyZ3MoKSk7CiAgIH0KICAgY29uc3QgRXhwciAqY29uc3QgKmdldEFyZ3MoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RXhwciAqKj4oU3ViRXhwcnMgKyBnZXROdW1QcmVBcmdzKCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSRUFSR1NfU1RBUlQpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEV4cHIgKmNvbnN0ICo+KAorICAgICAgICBnZXRUcmFpbGluZ1N0bXRzKCkgKyBQUkVBUkdTX1NUQVJUICsgZ2V0TnVtUHJlQXJncygpKTsKICAgfQogCiAgIC8vLyBnZXRBcmcgLSBSZXR1cm4gdGhlIHNwZWNpZmllZCBhcmd1bWVudC4KICAgRXhwciAqZ2V0QXJnKHVuc2lnbmVkIEFyZykgewotICAgIGFzc2VydChBcmcgPCBOdW1BcmdzICYmICJBcmcgYWNjZXNzIG91dCBvZiByYW5nZSEiKTsKLSAgICByZXR1cm4gY2FzdF9vcl9udWxsPEV4cHI+KFN1YkV4cHJzW0FyZyArIGdldE51bVByZUFyZ3MoKSArIFBSRUFSR1NfU1RBUlRdKTsKKyAgICBhc3NlcnQoQXJnIDwgZ2V0TnVtQXJncygpICYmICJBcmcgYWNjZXNzIG91dCBvZiByYW5nZSEiKTsKKyAgICByZXR1cm4gZ2V0QXJncygpW0FyZ107CiAgIH0KICAgY29uc3QgRXhwciAqZ2V0QXJnKHVuc2lnbmVkIEFyZykgY29uc3QgewotICAgIGFzc2VydChBcmcgPCBOdW1BcmdzICYmICJBcmcgYWNjZXNzIG91dCBvZiByYW5nZSEiKTsKLSAgICByZXR1cm4gY2FzdF9vcl9udWxsPEV4cHI+KFN1YkV4cHJzW0FyZyArIGdldE51bVByZUFyZ3MoKSArIFBSRUFSR1NfU1RBUlRdKTsKKyAgICBhc3NlcnQoQXJnIDwgZ2V0TnVtQXJncygpICYmICJBcmcgYWNjZXNzIG91dCBvZiByYW5nZSEiKTsKKyAgICByZXR1cm4gZ2V0QXJncygpW0FyZ107CiAgIH0KIAogICAvLy8gc2V0QXJnIC0gU2V0IHRoZSBzcGVjaWZpZWQgYXJndW1lbnQuCiAgIHZvaWQgc2V0QXJnKHVuc2lnbmVkIEFyZywgRXhwciAqQXJnRXhwcikgewotICAgIGFzc2VydChBcmcgPCBOdW1BcmdzICYmICJBcmcgYWNjZXNzIG91dCBvZiByYW5nZSEiKTsKLSAgICBTdWJFeHByc1tBcmcrZ2V0TnVtUHJlQXJncygpK1BSRUFSR1NfU1RBUlRdID0gQXJnRXhwcjsKKyAgICBhc3NlcnQoQXJnIDwgZ2V0TnVtQXJncygpICYmICJBcmcgYWNjZXNzIG91dCBvZiByYW5nZSEiKTsKKyAgICBnZXRBcmdzKClbQXJnXSA9IEFyZ0V4cHI7CiAgIH0KIAotICAvLy8gc2V0TnVtQXJncyAtIFRoaXMgY2hhbmdlcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwcmVzZW50IGluIHRoaXMgY2FsbC4KLSAgLy8vIEFueSBvcnBoYW5lZCBleHByZXNzaW9ucyBhcmUgZGVsZXRlZCBieSB0aGlzLCBhbmQgYW55IG5ldyBvcGVyYW5kcyBhcmUgc2V0Ci0gIC8vLyB0byBudWxsLgotICB2b2lkIHNldE51bUFyZ3MoY29uc3QgQVNUQ29udGV4dCYgQywgdW5zaWduZWQgTnVtQXJncyk7CisgIC8vLyBSZWR1Y2UgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgaW4gdGhpcyBjYWxsIGV4cHJlc3Npb24uIFRoaXMgaXMgdXNlZCBmb3IKKyAgLy8vIGV4YW1wbGUgZHVyaW5nIGVycm9yIHJlY292ZXJ5IHRvIGRyb3AgZXh0cmEgYXJndW1lbnRzLiBUaGVyZSBpcyBubyB3YXkKKyAgLy8vIHRvIHBlcmZvcm0gdGhlIG9wcG9zaXRlIGJlY2F1c2U6IDEuKSBXZSBkb24ndCB0cmFjayBob3cgbXVjaCBzdG9yYWdlCisgIC8vLyB3ZSBoYXZlIGZvciB0aGUgYXJndW1lbnQgYXJyYXkgMi4pIFRoaXMgd291bGQgcG90ZW50aWFsbHkgcmVxdWlyZSBncm93aW5nCisgIC8vLyB0aGUgYXJndW1lbnQgYXJyYXksIHNvbWV0aGluZyB3ZSBjYW5ub3Qgc3VwcG9ydCBzaW5jZSB0aGUgYXJndW1lbnRzIGFyZQorICAvLy8gc3RvcmVkIGluIGEgdHJhaWxpbmcgYXJyYXkuCisgIHZvaWQgc2hyaW5rTnVtQXJncyh1bnNpZ25lZCBOZXdOdW1BcmdzKSB7CisgICAgYXNzZXJ0KChOZXdOdW1BcmdzIDw9IGdldE51bUFyZ3MoKSkgJiYKKyAgICAgICAgICAgInNocmlua051bUFyZ3MgY2Fubm90IGluY3JlYXNlIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzISIpOworICAgIE51bUFyZ3MgPSBOZXdOdW1BcmdzOworICB9CiAKICAgdHlwZWRlZiBFeHBySXRlcmF0b3IgYXJnX2l0ZXJhdG9yOwogICB0eXBlZGVmIENvbnN0RXhwckl0ZXJhdG9yIGNvbnN0X2FyZ19pdGVyYXRvcjsKQEAgLTIzODEsMjkgKzI2MjAsMjggQEAKICAgICByZXR1cm4gY29uc3RfYXJnX3JhbmdlKGFyZ19iZWdpbigpLCBhcmdfZW5kKCkpOwogICB9CiAKLSAgYXJnX2l0ZXJhdG9yIGFyZ19iZWdpbigpIHsgcmV0dXJuIFN1YkV4cHJzK1BSRUFSR1NfU1RBUlQrZ2V0TnVtUHJlQXJncygpOyB9Ci0gIGFyZ19pdGVyYXRvciBhcmdfZW5kKCkgewotICAgIHJldHVybiBTdWJFeHBycytQUkVBUkdTX1NUQVJUK2dldE51bVByZUFyZ3MoKStnZXROdW1BcmdzKCk7CisgIGFyZ19pdGVyYXRvciBhcmdfYmVnaW4oKSB7CisgICAgcmV0dXJuIGdldFRyYWlsaW5nU3RtdHMoKSArIFBSRUFSR1NfU1RBUlQgKyBnZXROdW1QcmVBcmdzKCk7CiAgIH0KKyAgYXJnX2l0ZXJhdG9yIGFyZ19lbmQoKSB7IHJldHVybiBhcmdfYmVnaW4oKSArIGdldE51bUFyZ3MoKTsgfQorCiAgIGNvbnN0X2FyZ19pdGVyYXRvciBhcmdfYmVnaW4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIFN1YkV4cHJzK1BSRUFSR1NfU1RBUlQrZ2V0TnVtUHJlQXJncygpOworICAgIHJldHVybiBnZXRUcmFpbGluZ1N0bXRzKCkgKyBQUkVBUkdTX1NUQVJUICsgZ2V0TnVtUHJlQXJncygpOwogICB9Ci0gIGNvbnN0X2FyZ19pdGVyYXRvciBhcmdfZW5kKCkgY29uc3QgewotICAgIHJldHVybiBTdWJFeHBycytQUkVBUkdTX1NUQVJUK2dldE51bVByZUFyZ3MoKStnZXROdW1BcmdzKCk7Ci0gIH0KKyAgY29uc3RfYXJnX2l0ZXJhdG9yIGFyZ19lbmQoKSBjb25zdCB7IHJldHVybiBhcmdfYmVnaW4oKSArIGdldE51bUFyZ3MoKTsgfQogCiAgIC8vLyBUaGlzIG1ldGhvZCBwcm92aWRlcyBmYXN0IGFjY2VzcyB0byBhbGwgdGhlIHN1YmV4cHJlc3Npb25zIG9mCiAgIC8vLyBhIENhbGxFeHByIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGUgc2xvd2VyIHZpcnR1YWwgY2hpbGRfaXRlcmF0b3IKICAgLy8vIGludGVyZmFjZS4gIFRoaXMgcHJvdmlkZXMgZWZmaWNpZW50IHJldmVyc2UgaXRlcmF0aW9uIG9mIHRoZQogICAvLy8gc3ViZXhwcmVzc2lvbnMuICBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIGZvciBDRkcgY29uc3RydWN0aW9uLgotICBBcnJheVJlZjxTdG10Kj4gZ2V0UmF3U3ViRXhwcnMoKSB7Ci0gICAgcmV0dXJuIGxsdm06Om1ha2VBcnJheVJlZihTdWJFeHBycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE51bVByZUFyZ3MoKSArIFBSRUFSR1NfU1RBUlQgKyBnZXROdW1BcmdzKCkpOworICBBcnJheVJlZjxTdG10ICo+IGdldFJhd1N1YkV4cHJzKCkgeworICAgIHJldHVybiBsbHZtOjptYWtlQXJyYXlSZWYoZ2V0VHJhaWxpbmdTdG10cygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJFQVJHU19TVEFSVCArIGdldE51bVByZUFyZ3MoKSArIGdldE51bUFyZ3MoKSk7CiAgIH0KIAogICAvLy8gZ2V0TnVtQ29tbWFzIC0gUmV0dXJuIHRoZSBudW1iZXIgb2YgY29tbWFzIHRoYXQgbXVzdCBoYXZlIGJlZW4gcHJlc2VudCBpbgogICAvLy8gdGhpcyBmdW5jdGlvbiBjYWxsLgotICB1bnNpZ25lZCBnZXROdW1Db21tYXMoKSBjb25zdCB7IHJldHVybiBOdW1BcmdzID8gTnVtQXJncyAtIDEgOiAwOyB9CisgIHVuc2lnbmVkIGdldE51bUNvbW1hcygpIGNvbnN0IHsgcmV0dXJuIGdldE51bUFyZ3MoKSA/IGdldE51bUFyZ3MoKSAtIDEgOiAwOyB9CiAKICAgLy8vIGdldEJ1aWx0aW5DYWxsZWUgLSBJZiB0aGlzIGlzIGEgY2FsbCB0byBhIGJ1aWx0aW4sIHJldHVybiB0aGUgYnVpbHRpbiBJRAogICAvLy8gb2YgdGhlIGNhbGxlZS4gSWYgbm90LCByZXR1cm4gMC4KQEAgLTI0MTgsNiArMjY1NiwxNSBAQAogICAvLy8gdHlwZS4KICAgUXVhbFR5cGUgZ2V0Q2FsbFJldHVyblR5cGUoY29uc3QgQVNUQ29udGV4dCAmQ3R4KSBjb25zdDsKIAorICAvLy8gUmV0dXJucyB0aGUgV2FyblVudXNlZFJlc3VsdEF0dHIgdGhhdCBpcyBlaXRoZXIgZGVjbGFyZWQgb24gdGhlIGNhbGxlZAorICAvLy8gZnVuY3Rpb24sIG9yIGl0cyByZXR1cm4gdHlwZSBkZWNsYXJhdGlvbi4KKyAgY29uc3QgQXR0ciAqZ2V0VW51c2VkUmVzdWx0QXR0cihjb25zdCBBU1RDb250ZXh0ICZDdHgpIGNvbnN0OworCisgIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBjYWxsIGV4cHJlc3Npb24gc2hvdWxkIHdhcm4gb24gdW51c2VkIHJlc3VsdHMuCisgIGJvb2wgaGFzVW51c2VkUmVzdWx0QXR0cihjb25zdCBBU1RDb250ZXh0ICZDdHgpIGNvbnN0IHsKKyAgICByZXR1cm4gZ2V0VW51c2VkUmVzdWx0QXR0cihDdHgpICE9IG51bGxwdHI7CisgIH0KKwogICBTb3VyY2VMb2NhdGlvbiBnZXRSUGFyZW5Mb2MoKSBjb25zdCB7IHJldHVybiBSUGFyZW5Mb2M7IH0KICAgdm9pZCBzZXRSUGFyZW5Mb2MoU291cmNlTG9jYXRpb24gTCkgeyBSUGFyZW5Mb2MgPSBMOyB9CiAKQEAgLTI0MjksNyArMjY3Niw3IEBACiAgIGJvb2wgaXNCdWlsdGluQXNzdW1lRmFsc2UoY29uc3QgQVNUQ29udGV4dCAmQ3R4KSBjb25zdDsKIAogICBib29sIGlzQ2FsbFRvU3RkTW92ZSgpIGNvbnN0IHsKLSAgICBjb25zdCBGdW5jdGlvbkRlY2wqIEZEID0gZ2V0RGlyZWN0Q2FsbGVlKCk7CisgICAgY29uc3QgRnVuY3Rpb25EZWNsICpGRCA9IGdldERpcmVjdENhbGxlZSgpOwogICAgIHJldHVybiBnZXROdW1BcmdzKCkgPT0gMSAmJiBGRCAmJiBGRC0+aXNJblN0ZE5hbWVzcGFjZSgpICYmCiAgICAgICAgICAgIEZELT5nZXRJZGVudGlmaWVyKCkgJiYgRkQtPmdldElkZW50aWZpZXIoKS0+aXNTdHIoIm1vdmUiKTsKICAgfQpAQCAtMjQ0MSwxMyArMjY4OCwxNCBAQAogCiAgIC8vIEl0ZXJhdG9ycwogICBjaGlsZF9yYW5nZSBjaGlsZHJlbigpIHsKLSAgICByZXR1cm4gY2hpbGRfcmFuZ2UoJlN1YkV4cHJzWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAmU3ViRXhwcnNbMF0rTnVtQXJncytnZXROdW1QcmVBcmdzKCkrUFJFQVJHU19TVEFSVCk7CisgICAgcmV0dXJuIGNoaWxkX3JhbmdlKGdldFRyYWlsaW5nU3RtdHMoKSwgZ2V0VHJhaWxpbmdTdG10cygpICsgUFJFQVJHU19TVEFSVCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE51bVByZUFyZ3MoKSArIGdldE51bUFyZ3MoKSk7CiAgIH0KIAogICBjb25zdF9jaGlsZF9yYW5nZSBjaGlsZHJlbigpIGNvbnN0IHsKLSAgICByZXR1cm4gY29uc3RfY2hpbGRfcmFuZ2UoJlN1YkV4cHJzWzBdLCAmU3ViRXhwcnNbMF0gKyBOdW1BcmdzICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TnVtUHJlQXJncygpICsgUFJFQVJHU19TVEFSVCk7CisgICAgcmV0dXJuIGNvbnN0X2NoaWxkX3JhbmdlKGdldFRyYWlsaW5nU3RtdHMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VHJhaWxpbmdTdG10cygpICsgUFJFQVJHU19TVEFSVCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXROdW1QcmVBcmdzKCkgKyBnZXROdW1BcmdzKCkpOwogICB9CiB9OwogCkBAIC0yNDY5LDYgKzI3MTcsMTAgQEAKICAgICAgIHByaXZhdGUgbGx2bTo6VHJhaWxpbmdPYmplY3RzPE1lbWJlckV4cHIsIE1lbWJlckV4cHJOYW1lUXVhbGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVBcmd1bWVudExvYz4geworICBmcmllbmQgY2xhc3MgQVNUUmVhZGVyOworICBmcmllbmQgY2xhc3MgQVNUU3RtdFdyaXRlcjsKKyAgZnJpZW5kIFRyYWlsaW5nT2JqZWN0czsKKwogICAvLy8gQmFzZSAtIHRoZSBleHByZXNzaW9uIGZvciB0aGUgYmFzZSBwb2ludGVyIG9yIHN0cnVjdHVyZSByZWZlcmVuY2VzLiAgSW4KICAgLy8vIFguRiwgdGhpcyBpcyAiWCIuCiAgIFN0bXQgKkJhc2U7CkBAIC0yNDg0LDM1ICsyNzM2LDIwIEBACiAgIC8vLyBNZW1iZXJMb2MgLSBUaGlzIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgbWVtYmVyIG5hbWUuCiAgIFNvdXJjZUxvY2F0aW9uIE1lbWJlckxvYzsKIAotICAvLy8gVGhpcyBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIC0+IG9yIC4gaW4gdGhlIGV4cHJlc3Npb24uCi0gIFNvdXJjZUxvY2F0aW9uIE9wZXJhdG9yTG9jOwotCi0gIC8vLyBJc0Fycm93IC0gVHJ1ZSBpZiB0aGlzIGlzICJYLT5GIiwgZmFsc2UgaWYgdGhpcyBpcyAiWC5GIi4KLSAgYm9vbCBJc0Fycm93IDogMTsKLQotICAvLy8gVHJ1ZSBpZiB0aGlzIG1lbWJlciBleHByZXNzaW9uIHVzZWQgYSBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIgdG8KLSAgLy8vIHJlZmVyIHRvIHRoZSBtZW1iZXIsIGUuZy4sICJ4LT5CYXNlOjpmIiwgb3IgZm91bmQgaXRzIG1lbWJlciB2aWEgYSB1c2luZwotICAvLy8gZGVjbGFyYXRpb24uICBXaGVuIHRydWUsIGEgTWVtYmVyRXhwck5hbWVRdWFsaWZpZXIKLSAgLy8vIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIE1lbWJlckV4cHIuCi0gIGJvb2wgSGFzUXVhbGlmaWVyT3JGb3VuZERlY2wgOiAxOwotCi0gIC8vLyBUcnVlIGlmIHRoaXMgbWVtYmVyIGV4cHJlc3Npb24gc3BlY2lmaWVkIGEgdGVtcGxhdGUga2V5d29yZAotICAvLy8gYW5kL29yIGEgdGVtcGxhdGUgYXJndW1lbnQgbGlzdCBleHBsaWNpdGx5LCBlLmcuLCB4LT5mPGludD4sCi0gIC8vLyB4LT50ZW1wbGF0ZSBmLCB4LT50ZW1wbGF0ZSBmPGludD4uCi0gIC8vLyBXaGVuIHRydWUsIGFuIEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbyBzdHJ1Y3R1cmUgYW5kIGl0cwotICAvLy8gVGVtcGxhdGVBcmd1bWVudHMgKGlmIGFueSkgYXJlIHByZXNlbnQuCi0gIGJvb2wgSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvIDogMTsKLQotICAvLy8gVHJ1ZSBpZiB0aGlzIG1lbWJlciBleHByZXNzaW9uIHJlZmVycyB0byBhIG1ldGhvZCB0aGF0Ci0gIC8vLyB3YXMgcmVzb2x2ZWQgZnJvbSBhbiBvdmVybG9hZGVkIHNldCBoYXZpbmcgc2l6ZSBncmVhdGVyIHRoYW4gMS4KLSAgYm9vbCBIYWRNdWx0aXBsZUNhbmRpZGF0ZXMgOiAxOwotCiAgIHNpemVfdCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxNZW1iZXJFeHByTmFtZVF1YWxpZmllcj4pIGNvbnN0IHsKLSAgICByZXR1cm4gSGFzUXVhbGlmaWVyT3JGb3VuZERlY2wgPyAxIDogMDsKKyAgICByZXR1cm4gaGFzUXVhbGlmaWVyT3JGb3VuZERlY2woKTsKICAgfQogCiAgIHNpemVfdCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8+KSBjb25zdCB7Ci0gICAgcmV0dXJuIEhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbyA/IDEgOiAwOworICAgIHJldHVybiBoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKTsKKyAgfQorCisgIGJvb2wgaGFzUXVhbGlmaWVyT3JGb3VuZERlY2woKSBjb25zdCB7CisgICAgcmV0dXJuIE1lbWJlckV4cHJCaXRzLkhhc1F1YWxpZmllck9yRm91bmREZWNsOworICB9CisKKyAgYm9vbCBoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKSBjb25zdCB7CisgICAgcmV0dXJuIE1lbWJlckV4cHJCaXRzLkhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbzsKICAgfQogCiBwdWJsaWM6CkBAIC0yNTIzLDEwICsyNzYwLDEzIEBACiAgICAgICAgICAgICAgYmFzZS0+aXNWYWx1ZURlcGVuZGVudCgpLCBiYXNlLT5pc0luc3RhbnRpYXRpb25EZXBlbmRlbnQoKSwKICAgICAgICAgICAgICBiYXNlLT5jb250YWluc1VuZXhwYW5kZWRQYXJhbWV0ZXJQYWNrKCkpLAogICAgICAgICBCYXNlKGJhc2UpLCBNZW1iZXJEZWNsKG1lbWJlcmRlY2wpLCBNZW1iZXJETkxvYyhOYW1lSW5mby5nZXRJbmZvKCkpLAotICAgICAgICBNZW1iZXJMb2MoTmFtZUluZm8uZ2V0TG9jKCkpLCBPcGVyYXRvckxvYyhvcGVyYXRvcmxvYyksCi0gICAgICAgIElzQXJyb3coaXNhcnJvdyksIEhhc1F1YWxpZmllck9yRm91bmREZWNsKGZhbHNlKSwKLSAgICAgICAgSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKGZhbHNlKSwgSGFkTXVsdGlwbGVDYW5kaWRhdGVzKGZhbHNlKSB7CisgICAgICAgIE1lbWJlckxvYyhOYW1lSW5mby5nZXRMb2MoKSkgewogICAgIGFzc2VydChtZW1iZXJkZWNsLT5nZXREZWNsTmFtZSgpID09IE5hbWVJbmZvLmdldE5hbWUoKSk7CisgICAgTWVtYmVyRXhwckJpdHMuSXNBcnJvdyA9IGlzYXJyb3c7CisgICAgTWVtYmVyRXhwckJpdHMuSGFzUXVhbGlmaWVyT3JGb3VuZERlY2wgPSBmYWxzZTsKKyAgICBNZW1iZXJFeHByQml0cy5IYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8gPSBmYWxzZTsKKyAgICBNZW1iZXJFeHByQml0cy5IYWRNdWx0aXBsZUNhbmRpZGF0ZXMgPSBmYWxzZTsKKyAgICBNZW1iZXJFeHByQml0cy5PcGVyYXRvckxvYyA9IG9wZXJhdG9ybG9jOwogICB9CiAKICAgLy8gTk9URTogdGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgYmUgdXNlZCBvbmx5IHdoZW4gaXQgaXMga25vd24gdGhhdApAQCAtMjUzOSwxMCArMjc3OSwxMyBAQAogICAgICAgOiBFeHByKE1lbWJlckV4cHJDbGFzcywgdHksIFZLLCBPSywgYmFzZS0+aXNUeXBlRGVwZW5kZW50KCksCiAgICAgICAgICAgICAgYmFzZS0+aXNWYWx1ZURlcGVuZGVudCgpLCBiYXNlLT5pc0luc3RhbnRpYXRpb25EZXBlbmRlbnQoKSwKICAgICAgICAgICAgICBiYXNlLT5jb250YWluc1VuZXhwYW5kZWRQYXJhbWV0ZXJQYWNrKCkpLAotICAgICAgICBCYXNlKGJhc2UpLCBNZW1iZXJEZWNsKG1lbWJlcmRlY2wpLCBNZW1iZXJETkxvYygpLCBNZW1iZXJMb2MobCksCi0gICAgICAgIE9wZXJhdG9yTG9jKG9wZXJhdG9ybG9jKSwgSXNBcnJvdyhpc2Fycm93KSwKLSAgICAgICAgSGFzUXVhbGlmaWVyT3JGb3VuZERlY2woZmFsc2UpLCBIYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oZmFsc2UpLAotICAgICAgICBIYWRNdWx0aXBsZUNhbmRpZGF0ZXMoZmFsc2UpIHt9CisgICAgICAgIEJhc2UoYmFzZSksIE1lbWJlckRlY2wobWVtYmVyZGVjbCksIE1lbWJlckROTG9jKCksIE1lbWJlckxvYyhsKSB7CisgICAgTWVtYmVyRXhwckJpdHMuSXNBcnJvdyA9IGlzYXJyb3c7CisgICAgTWVtYmVyRXhwckJpdHMuSGFzUXVhbGlmaWVyT3JGb3VuZERlY2wgPSBmYWxzZTsKKyAgICBNZW1iZXJFeHByQml0cy5IYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8gPSBmYWxzZTsKKyAgICBNZW1iZXJFeHByQml0cy5IYWRNdWx0aXBsZUNhbmRpZGF0ZXMgPSBmYWxzZTsKKyAgICBNZW1iZXJFeHByQml0cy5PcGVyYXRvckxvYyA9IG9wZXJhdG9ybG9jOworICB9CiAKICAgc3RhdGljIE1lbWJlckV4cHIgKkNyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDLCBFeHByICpiYXNlLCBib29sIGlzYXJyb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gT3BlcmF0b3JMb2MsCkBAIC0yNTY1LDcgKzI4MDgsNyBAQAogCiAgIC8vLyBSZXRyaWV2ZXMgdGhlIGRlY2xhcmF0aW9uIGZvdW5kIGJ5IGxvb2t1cC4KICAgRGVjbEFjY2Vzc1BhaXIgZ2V0Rm91bmREZWNsKCkgY29uc3QgewotICAgIGlmICghSGFzUXVhbGlmaWVyT3JGb3VuZERlY2wpCisgICAgaWYgKCFoYXNRdWFsaWZpZXJPckZvdW5kRGVjbCgpKQogICAgICAgcmV0dXJuIERlY2xBY2Nlc3NQYWlyOjptYWtlKGdldE1lbWJlckRlY2woKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRNZW1iZXJEZWNsKCktPmdldEFjY2VzcygpKTsKICAgICByZXR1cm4gZ2V0VHJhaWxpbmdPYmplY3RzPE1lbWJlckV4cHJOYW1lUXVhbGlmaWVyPigpLT5Gb3VuZERlY2w7CkBAIC0yNTgwLDkgKzI4MjMsOCBAQAogICAvLy8gbmVzdGVkLW5hbWUtc3BlY2lmaWVyIHRoYXQgcHJlY2VkZXMgdGhlIG1lbWJlciBuYW1lLCB3aXRoIHNvdXJjZS1sb2NhdGlvbgogICAvLy8gaW5mb3JtYXRpb24uCiAgIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2MgZ2V0UXVhbGlmaWVyTG9jKCkgY29uc3QgewotICAgIGlmICghSGFzUXVhbGlmaWVyT3JGb3VuZERlY2wpCisgICAgaWYgKCFoYXNRdWFsaWZpZXJPckZvdW5kRGVjbCgpKQogICAgICAgcmV0dXJuIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2MoKTsKLQogICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8TWVtYmVyRXhwck5hbWVRdWFsaWZpZXI+KCktPlF1YWxpZmllckxvYzsKICAgfQogCkBAIC0yNTk2LDIxICsyODM4LDI0IEBACiAgIC8vLyBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhlIHRlbXBsYXRlIGtleXdvcmQgcHJlY2VkaW5nCiAgIC8vLyB0aGUgbWVtYmVyIG5hbWUsIGlmIGFueS4KICAgU291cmNlTG9jYXRpb24gZ2V0VGVtcGxhdGVLZXl3b3JkTG9jKCkgY29uc3QgewotICAgIGlmICghSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKSByZXR1cm4gU291cmNlTG9jYXRpb24oKTsKKyAgICBpZiAoIWhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbygpKQorICAgICAgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CiAgICAgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8+KCktPlRlbXBsYXRlS1dMb2M7CiAgIH0KIAogICAvLy8gUmV0cmlldmUgdGhlIGxvY2F0aW9uIG9mIHRoZSBsZWZ0IGFuZ2xlIGJyYWNrZXQgc3RhcnRpbmcgdGhlCiAgIC8vLyBleHBsaWNpdCB0ZW1wbGF0ZSBhcmd1bWVudCBsaXN0IGZvbGxvd2luZyB0aGUgbWVtYmVyIG5hbWUsIGlmIGFueS4KICAgU291cmNlTG9jYXRpb24gZ2V0TEFuZ2xlTG9jKCkgY29uc3QgewotICAgIGlmICghSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKSByZXR1cm4gU291cmNlTG9jYXRpb24oKTsKKyAgICBpZiAoIWhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbygpKQorICAgICAgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CiAgICAgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8+KCktPkxBbmdsZUxvYzsKICAgfQogCiAgIC8vLyBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhlIHJpZ2h0IGFuZ2xlIGJyYWNrZXQgZW5kaW5nIHRoZQogICAvLy8gZXhwbGljaXQgdGVtcGxhdGUgYXJndW1lbnQgbGlzdCBmb2xsb3dpbmcgdGhlIG1lbWJlciBuYW1lLCBpZiBhbnkuCiAgIFNvdXJjZUxvY2F0aW9uIGdldFJBbmdsZUxvYygpIGNvbnN0IHsKLSAgICBpZiAoIUhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbykgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CisgICAgaWYgKCFoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKSkKKyAgICAgIHJldHVybiBTb3VyY2VMb2NhdGlvbigpOwogICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8QVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvPigpLT5SQW5nbGVMb2M7CiAgIH0KIApAQCAtMjY1NywxMCArMjkwMiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbWJlckxvYywgTWVtYmVyRE5Mb2MpOwogICB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0T3BlcmF0b3JMb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIE9wZXJhdG9yTG9jOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldE9wZXJhdG9yTG9jKCkgY29uc3QgeyByZXR1cm4gTWVtYmVyRXhwckJpdHMuT3BlcmF0b3JMb2M7IH0KIAotICBib29sIGlzQXJyb3coKSBjb25zdCB7IHJldHVybiBJc0Fycm93OyB9Ci0gIHZvaWQgc2V0QXJyb3coYm9vbCBBKSB7IElzQXJyb3cgPSBBOyB9CisgIGJvb2wgaXNBcnJvdygpIGNvbnN0IHsgcmV0dXJuIE1lbWJlckV4cHJCaXRzLklzQXJyb3c7IH0KKyAgdm9pZCBzZXRBcnJvdyhib29sIEEpIHsgTWVtYmVyRXhwckJpdHMuSXNBcnJvdyA9IEE7IH0KIAogICAvLy8gZ2V0TWVtYmVyTG9jIC0gUmV0dXJuIHRoZSBsb2NhdGlvbiBvZiB0aGUgIm1lbWJlciIsIGluIFgtPkYsIGl0IGlzIHRoZQogICAvLy8gbG9jYXRpb24gb2YgJ0YnLgpAQCAtMjY4MCwxMyArMjkyNSwxMyBAQAogICAvLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbWVtYmVyIGV4cHJlc3Npb24gcmVmZXJzIHRvIGEgbWV0aG9kIHRoYXQKICAgLy8vIHdhcyByZXNvbHZlZCBmcm9tIGFuIG92ZXJsb2FkZWQgc2V0IGhhdmluZyBzaXplIGdyZWF0ZXIgdGhhbiAxLgogICBib29sIGhhZE11bHRpcGxlQ2FuZGlkYXRlcygpIGNvbnN0IHsKLSAgICByZXR1cm4gSGFkTXVsdGlwbGVDYW5kaWRhdGVzOworICAgIHJldHVybiBNZW1iZXJFeHByQml0cy5IYWRNdWx0aXBsZUNhbmRpZGF0ZXM7CiAgIH0KICAgLy8vIFNldHMgdGhlIGZsYWcgdGVsbGluZyB3aGV0aGVyIHRoaXMgZXhwcmVzc2lvbiByZWZlcnMgdG8KICAgLy8vIGEgbWV0aG9kIHRoYXQgd2FzIHJlc29sdmVkIGZyb20gYW4gb3ZlcmxvYWRlZCBzZXQgaGF2aW5nIHNpemUKICAgLy8vIGdyZWF0ZXIgdGhhbiAxLgogICB2b2lkIHNldEhhZE11bHRpcGxlQ2FuZGlkYXRlcyhib29sIFYgPSB0cnVlKSB7Ci0gICAgSGFkTXVsdGlwbGVDYW5kaWRhdGVzID0gVjsKKyAgICBNZW1iZXJFeHByQml0cy5IYWRNdWx0aXBsZUNhbmRpZGF0ZXMgPSBWOwogICB9CiAKICAgLy8vIFJldHVybnMgdHJ1ZSBpZiB2aXJ0dWFsIGRpc3BhdGNoIGlzIHBlcmZvcm1lZC4KQEAgLTI3MDYsMTAgKzI5NTEsNiBAQAogICBjb25zdF9jaGlsZF9yYW5nZSBjaGlsZHJlbigpIGNvbnN0IHsKICAgICByZXR1cm4gY29uc3RfY2hpbGRfcmFuZ2UoJkJhc2UsICZCYXNlICsgMSk7CiAgIH0KLQotICBmcmllbmQgVHJhaWxpbmdPYmplY3RzOwotICBmcmllbmQgY2xhc3MgQVNUUmVhZGVyOwotICBmcmllbmQgY2xhc3MgQVNUU3RtdFdyaXRlcjsKIH07CiAKIC8vLyBDb21wb3VuZExpdGVyYWxFeHByIC0gW0M5OSA2LjUuMi41XQpAQCAtMjc4OCwyOCArMzAyOSwxNSBAQAogLy8vIHJlcHJlc2VudGF0aW9uIGluIHRoZSBzb3VyY2UgY29kZSAoRXhwbGljaXRDYXN0RXhwcidzIGRlcml2ZWQKIC8vLyBjbGFzc2VzKS4KIGNsYXNzIENhc3RFeHByIDogcHVibGljIEV4cHIgewotcHVibGljOgotICB1c2luZyBCYXNlUGF0aFNpemVUeSA9IHVuc2lnbmVkIGludDsKLSAgc3RhdGljX2Fzc2VydChzdGQ6Om51bWVyaWNfbGltaXRzPEJhc2VQYXRoU2l6ZVR5Pjo6bWF4KCkgPj0gMTYzODQsCi0gICAgICAgICAgICAgICAgIltpbXBsaW1pdHNdIERpcmVjdCBhbmQgaW5kaXJlY3QgYmFzZSBjbGFzc2VzIFsxNjM4NF0uIik7Ci0KLXByaXZhdGU6CiAgIFN0bXQgKk9wOwogCiAgIGJvb2wgQ2FzdENvbnNpc3RlbmN5KCkgY29uc3Q7CiAKLSAgQmFzZVBhdGhTaXplVHkgKkJhc2VQYXRoU2l6ZSgpOwotCiAgIGNvbnN0IENYWEJhc2VTcGVjaWZpZXIgKiBjb25zdCAqcGF0aF9idWZmZXIoKSBjb25zdCB7CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q2FzdEV4cHIqPih0aGlzKS0+cGF0aF9idWZmZXIoKTsKICAgfQogICBDWFhCYXNlU3BlY2lmaWVyICoqcGF0aF9idWZmZXIoKTsKIAotICB2b2lkIHNldEJhc2VQYXRoU2l6ZShCYXNlUGF0aFNpemVUeSBiYXNlUGF0aFNpemUpIHsKLSAgICBhc3NlcnQoIXBhdGhfZW1wdHkoKSAmJiBiYXNlUGF0aFNpemUgIT0gMCk7Ci0gICAgKihCYXNlUGF0aFNpemUoKSkgPSBiYXNlUGF0aFNpemU7Ci0gIH0KLQogcHJvdGVjdGVkOgogICBDYXN0RXhwcihTdG10Q2xhc3MgU0MsIFF1YWxUeXBlIHR5LCBFeHByVmFsdWVLaW5kIFZLLCBjb25zdCBDYXN0S2luZCBraW5kLAogICAgICAgICAgICBFeHByICpvcCwgdW5zaWduZWQgQmFzZVBhdGhTaXplKQpAQCAtMjgzMCw5ICszMDU4LDkgQEAKICAgICAgICAgT3Aob3ApIHsKICAgICBDYXN0RXhwckJpdHMuS2luZCA9IGtpbmQ7CiAgICAgQ2FzdEV4cHJCaXRzLlBhcnRPZkV4cGxpY2l0Q2FzdCA9IGZhbHNlOwotICAgIENhc3RFeHByQml0cy5CYXNlUGF0aElzRW1wdHkgPSBCYXNlUGF0aFNpemUgPT0gMDsKLSAgICBpZiAoIXBhdGhfZW1wdHkoKSkKLSAgICAgIHNldEJhc2VQYXRoU2l6ZShCYXNlUGF0aFNpemUpOworICAgIENhc3RFeHByQml0cy5CYXNlUGF0aFNpemUgPSBCYXNlUGF0aFNpemU7CisgICAgYXNzZXJ0KChDYXN0RXhwckJpdHMuQmFzZVBhdGhTaXplID09IEJhc2VQYXRoU2l6ZSkgJiYKKyAgICAgICAgICAgIkJhc2VQYXRoU2l6ZSBvdmVyZmxvdyEiKTsKICAgICBhc3NlcnQoQ2FzdENvbnNpc3RlbmN5KCkpOwogICB9CiAKQEAgLTI4NDAsOSArMzA2OCw5IEBACiAgIENhc3RFeHByKFN0bXRDbGFzcyBTQywgRW1wdHlTaGVsbCBFbXB0eSwgdW5zaWduZWQgQmFzZVBhdGhTaXplKQogICAgIDogRXhwcihTQywgRW1wdHkpIHsKICAgICBDYXN0RXhwckJpdHMuUGFydE9mRXhwbGljaXRDYXN0ID0gZmFsc2U7Ci0gICAgQ2FzdEV4cHJCaXRzLkJhc2VQYXRoSXNFbXB0eSA9IEJhc2VQYXRoU2l6ZSA9PSAwOwotICAgIGlmICghcGF0aF9lbXB0eSgpKQotICAgICAgc2V0QmFzZVBhdGhTaXplKEJhc2VQYXRoU2l6ZSk7CisgICAgQ2FzdEV4cHJCaXRzLkJhc2VQYXRoU2l6ZSA9IEJhc2VQYXRoU2l6ZTsKKyAgICBhc3NlcnQoKENhc3RFeHByQml0cy5CYXNlUGF0aFNpemUgPT0gQmFzZVBhdGhTaXplKSAmJgorICAgICAgICAgICAiQmFzZVBhdGhTaXplIG92ZXJmbG93ISIpOwogICB9CiAKIHB1YmxpYzoKQEAgLTI4NjksMTMgKzMwOTcsOSBAQAogICBOYW1lZERlY2wgKmdldENvbnZlcnNpb25GdW5jdGlvbigpIGNvbnN0OwogCiAgIHR5cGVkZWYgQ1hYQmFzZVNwZWNpZmllciAqKnBhdGhfaXRlcmF0b3I7Ci0gIHR5cGVkZWYgY29uc3QgQ1hYQmFzZVNwZWNpZmllciAqIGNvbnN0ICpwYXRoX2NvbnN0X2l0ZXJhdG9yOwotICBib29sIHBhdGhfZW1wdHkoKSBjb25zdCB7IHJldHVybiBDYXN0RXhwckJpdHMuQmFzZVBhdGhJc0VtcHR5OyB9Ci0gIHVuc2lnbmVkIHBhdGhfc2l6ZSgpIGNvbnN0IHsKLSAgICBpZiAocGF0aF9lbXB0eSgpKQotICAgICAgcmV0dXJuIDBVOwotICAgIHJldHVybiAqKGNvbnN0X2Nhc3Q8Q2FzdEV4cHIgKj4odGhpcyktPkJhc2VQYXRoU2l6ZSgpKTsKLSAgfQorICB0eXBlZGVmIGNvbnN0IENYWEJhc2VTcGVjaWZpZXIgKmNvbnN0ICpwYXRoX2NvbnN0X2l0ZXJhdG9yOworICBib29sIHBhdGhfZW1wdHkoKSBjb25zdCB7IHJldHVybiBwYXRoX3NpemUoKSA9PSAwOyB9CisgIHVuc2lnbmVkIHBhdGhfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIENhc3RFeHByQml0cy5CYXNlUGF0aFNpemU7IH0KICAgcGF0aF9pdGVyYXRvciBwYXRoX2JlZ2luKCkgeyByZXR1cm4gcGF0aF9idWZmZXIoKTsgfQogICBwYXRoX2l0ZXJhdG9yIHBhdGhfZW5kKCkgeyByZXR1cm4gcGF0aF9idWZmZXIoKSArIHBhdGhfc2l6ZSgpOyB9CiAgIHBhdGhfY29uc3RfaXRlcmF0b3IgcGF0aF9iZWdpbigpIGNvbnN0IHsgcmV0dXJuIHBhdGhfYnVmZmVyKCk7IH0KQEAgLTI5MjMsMTcgKzMxNDcsMTEgQEAKIC8vLyBAZW5kY29kZQogY2xhc3MgSW1wbGljaXRDYXN0RXhwciBmaW5hbAogICAgIDogcHVibGljIENhc3RFeHByLAotICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8SW1wbGljaXRDYXN0RXhwciwgQ2FzdEV4cHI6OkJhc2VQYXRoU2l6ZVR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1hYQmFzZVNwZWNpZmllciAqPiB7Ci0gIHNpemVfdCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxDYXN0RXhwcjo6QmFzZVBhdGhTaXplVHk+KSBjb25zdCB7Ci0gICAgcmV0dXJuIHBhdGhfZW1wdHkoKSA/IDAgOiAxOwotICB9CisgICAgICBwcml2YXRlIGxsdm06OlRyYWlsaW5nT2JqZWN0czxJbXBsaWNpdENhc3RFeHByLCBDWFhCYXNlU3BlY2lmaWVyICo+IHsKIAotcHJpdmF0ZToKICAgSW1wbGljaXRDYXN0RXhwcihRdWFsVHlwZSB0eSwgQ2FzdEtpbmQga2luZCwgRXhwciAqb3AsCiAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgQmFzZVBhdGhMZW5ndGgsIEV4cHJWYWx1ZUtpbmQgVkspCi0gICAgOiBDYXN0RXhwcihJbXBsaWNpdENhc3RFeHByQ2xhc3MsIHR5LCBWSywga2luZCwgb3AsIEJhc2VQYXRoTGVuZ3RoKSB7Ci0gIH0KKyAgICA6IENhc3RFeHByKEltcGxpY2l0Q2FzdEV4cHJDbGFzcywgdHksIFZLLCBraW5kLCBvcCwgQmFzZVBhdGhMZW5ndGgpIHsgfQogCiAgIC8vLyBDb25zdHJ1Y3QgYW4gZW1wdHkgaW1wbGljaXQgY2FzdC4KICAgZXhwbGljaXQgSW1wbGljaXRDYXN0RXhwcihFbXB0eVNoZWxsIFNoZWxsLCB1bnNpZ25lZCBQYXRoU2l6ZSkKQEAgLTI5NzQsMTMgKzMxOTIsNiBAQAogICBmcmllbmQgY2xhc3MgQ2FzdEV4cHI7CiB9OwogCi1pbmxpbmUgRXhwciAqRXhwcjo6SWdub3JlSW1wQ2FzdHMoKSB7Ci0gIEV4cHIgKmUgPSB0aGlzOwotICB3aGlsZSAoSW1wbGljaXRDYXN0RXhwciAqaWNlID0gZHluX2Nhc3Q8SW1wbGljaXRDYXN0RXhwcj4oZSkpCi0gICAgZSA9IGljZS0+Z2V0U3ViRXhwcigpOwotICByZXR1cm4gZTsKLX0KLQogLy8vIEV4cGxpY2l0Q2FzdEV4cHIgLSBBbiBleHBsaWNpdCBjYXN0IHdyaXR0ZW4gaW4gdGhlIHNvdXJjZQogLy8vIGNvZGUuCiAvLy8KQEAgLTMwMzMsOCArMzI0NCw3IEBACiAvLy8gKFR5cGUpZXhwci4gRm9yIGV4YW1wbGU6IEBjIChpbnQpZi4KIGNsYXNzIENTdHlsZUNhc3RFeHByIGZpbmFsCiAgICAgOiBwdWJsaWMgRXhwbGljaXRDYXN0RXhwciwKLSAgICAgIHByaXZhdGUgbGx2bTo6VHJhaWxpbmdPYmplY3RzPENTdHlsZUNhc3RFeHByLCBDYXN0RXhwcjo6QmFzZVBhdGhTaXplVHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDWFhCYXNlU3BlY2lmaWVyICo+IHsKKyAgICAgIHByaXZhdGUgbGx2bTo6VHJhaWxpbmdPYmplY3RzPENTdHlsZUNhc3RFeHByLCBDWFhCYXNlU3BlY2lmaWVyICo+IHsKICAgU291cmNlTG9jYXRpb24gTFBMb2M7IC8vIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGVmdCBwYXJlbgogICBTb3VyY2VMb2NhdGlvbiBSUExvYzsgLy8gdGhlIGxvY2F0aW9uIG9mIHRoZSByaWdodCBwYXJlbgogCkBAIC0zMDQ4LDEwICszMjU4LDYgQEAKICAgZXhwbGljaXQgQ1N0eWxlQ2FzdEV4cHIoRW1wdHlTaGVsbCBTaGVsbCwgdW5zaWduZWQgUGF0aFNpemUpCiAgICAgOiBFeHBsaWNpdENhc3RFeHByKENTdHlsZUNhc3RFeHByQ2xhc3MsIFNoZWxsLCBQYXRoU2l6ZSkgeyB9CiAKLSAgc2l6ZV90IG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPENhc3RFeHByOjpCYXNlUGF0aFNpemVUeT4pIGNvbnN0IHsKLSAgICByZXR1cm4gcGF0aF9lbXB0eSgpID8gMCA6IDE7Ci0gIH0KLQogcHVibGljOgogICBzdGF0aWMgQ1N0eWxlQ2FzdEV4cHIgKkNyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDb250ZXh0LCBRdWFsVHlwZSBULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHByVmFsdWVLaW5kIFZLLCBDYXN0S2luZCBLLApAQCAtMzEwMCwyMSArMzMwNiwxMiBAQAogLy8vICIrIiByZXNvbHZlcyB0byBhbiBvdmVybG9hZGVkIG9wZXJhdG9yLCBDWFhPcGVyYXRvckNhbGxFeHByIHdpbGwKIC8vLyBiZSB1c2VkIHRvIGV4cHJlc3MgdGhlIGNvbXB1dGF0aW9uLgogY2xhc3MgQmluYXJ5T3BlcmF0b3IgOiBwdWJsaWMgRXhwciB7CisgIGVudW0geyBMSFMsIFJIUywgRU5EX0VYUFIgfTsKKyAgU3RtdCAqU3ViRXhwcnNbRU5EX0VYUFJdOworCiBwdWJsaWM6CiAgIHR5cGVkZWYgQmluYXJ5T3BlcmF0b3JLaW5kIE9wY29kZTsKIAotcHJpdmF0ZToKLSAgdW5zaWduZWQgT3BjIDogNjsKLQotICAvLyBUaGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3Igb3BlcmF0aW9ucyBvbiBmbG9hdGluZyBwb2ludCB0eXBlcyBhbmQgMAotICAvLyBvdGhlcndpc2UuCi0gIHVuc2lnbmVkIEZQRmVhdHVyZXMgOiAzOwotICBTb3VyY2VMb2NhdGlvbiBPcExvYzsKLQotICBlbnVtIHsgTEhTLCBSSFMsIEVORF9FWFBSIH07Ci0gIFN0bXQqIFN1YkV4cHJzW0VORF9FWFBSXTsKLXB1YmxpYzoKLQogICBCaW5hcnlPcGVyYXRvcihFeHByICpsaHMsIEV4cHIgKnJocywgT3Bjb2RlIG9wYywgUXVhbFR5cGUgUmVzVHksCiAgICAgICAgICAgICAgICAgIEV4cHJWYWx1ZUtpbmQgVkssIEV4cHJPYmplY3RLaW5kIE9LLAogICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBvcExvYywgRlBPcHRpb25zIEZQRmVhdHVyZXMpCkBAIC0zMTI0LDggKzMzMjEsMTAgQEAKICAgICAgICAgICAgKGxocy0+aXNJbnN0YW50aWF0aW9uRGVwZW5kZW50KCkgfHwKICAgICAgICAgICAgIHJocy0+aXNJbnN0YW50aWF0aW9uRGVwZW5kZW50KCkpLAogICAgICAgICAgICAobGhzLT5jb250YWluc1VuZXhwYW5kZWRQYXJhbWV0ZXJQYWNrKCkgfHwKLSAgICAgICAgICAgIHJocy0+Y29udGFpbnNVbmV4cGFuZGVkUGFyYW1ldGVyUGFjaygpKSksCi0gICAgICBPcGMob3BjKSwgRlBGZWF0dXJlcyhGUEZlYXR1cmVzLmdldEludCgpKSwgT3BMb2Mob3BMb2MpIHsKKyAgICAgICAgICAgIHJocy0+Y29udGFpbnNVbmV4cGFuZGVkUGFyYW1ldGVyUGFjaygpKSkgeworICAgIEJpbmFyeU9wZXJhdG9yQml0cy5PcGMgPSBvcGM7CisgICAgQmluYXJ5T3BlcmF0b3JCaXRzLkZQRmVhdHVyZXMgPSBGUEZlYXR1cmVzLmdldEludCgpOworICAgIEJpbmFyeU9wZXJhdG9yQml0cy5PcExvYyA9IG9wTG9jOwogICAgIFN1YkV4cHJzW0xIU10gPSBsaHM7CiAgICAgU3ViRXhwcnNbUkhTXSA9IHJoczsKICAgICBhc3NlcnQoIWlzQ29tcG91bmRBc3NpZ25tZW50T3AoKSAmJgpAQCAtMzEzMywxNSArMzMzMiwxOCBAQAogICB9CiAKICAgLy8vIENvbnN0cnVjdCBhbiBlbXB0eSBiaW5hcnkgb3BlcmF0b3IuCi0gIGV4cGxpY2l0IEJpbmFyeU9wZXJhdG9yKEVtcHR5U2hlbGwgRW1wdHkpCi0gICAgOiBFeHByKEJpbmFyeU9wZXJhdG9yQ2xhc3MsIEVtcHR5KSwgT3BjKEJPX0NvbW1hKSB7IH0KKyAgZXhwbGljaXQgQmluYXJ5T3BlcmF0b3IoRW1wdHlTaGVsbCBFbXB0eSkgOiBFeHByKEJpbmFyeU9wZXJhdG9yQ2xhc3MsIEVtcHR5KSB7CisgICAgQmluYXJ5T3BlcmF0b3JCaXRzLk9wYyA9IEJPX0NvbW1hOworICB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0RXhwckxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gT3BMb2M7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0T3BlcmF0b3JMb2MoKSBjb25zdCB7IHJldHVybiBPcExvYzsgfQotICB2b2lkIHNldE9wZXJhdG9yTG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgT3BMb2MgPSBMOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEV4cHJMb2MoKSBjb25zdCB7IHJldHVybiBnZXRPcGVyYXRvckxvYygpOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldE9wZXJhdG9yTG9jKCkgY29uc3QgeyByZXR1cm4gQmluYXJ5T3BlcmF0b3JCaXRzLk9wTG9jOyB9CisgIHZvaWQgc2V0T3BlcmF0b3JMb2MoU291cmNlTG9jYXRpb24gTCkgeyBCaW5hcnlPcGVyYXRvckJpdHMuT3BMb2MgPSBMOyB9CiAKLSAgT3Bjb2RlIGdldE9wY29kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZT4oT3BjKTsgfQotICB2b2lkIHNldE9wY29kZShPcGNvZGUgTykgeyBPcGMgPSBPOyB9CisgIE9wY29kZSBnZXRPcGNvZGUoKSBjb25zdCB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZT4oQmluYXJ5T3BlcmF0b3JCaXRzLk9wYyk7CisgIH0KKyAgdm9pZCBzZXRPcGNvZGUoT3Bjb2RlIE9wYykgeyBCaW5hcnlPcGVyYXRvckJpdHMuT3BjID0gT3BjOyB9CiAKICAgRXhwciAqZ2V0TEhTKCkgY29uc3QgeyByZXR1cm4gY2FzdDxFeHByPihTdWJFeHByc1tMSFNdKTsgfQogICB2b2lkIHNldExIUyhFeHByICpFKSB7IFN1YkV4cHJzW0xIU10gPSBFOyB9CkBAIC0zMTcwLDcgKzMzNzIsMTEgQEAKICAgc3RhdGljIE92ZXJsb2FkZWRPcGVyYXRvcktpbmQgZ2V0T3ZlcmxvYWRlZE9wZXJhdG9yKE9wY29kZSBPcGMpOwogCiAgIC8vLyBwcmVkaWNhdGVzIHRvIGNhdGVnb3JpemUgdGhlIHJlc3BlY3RpdmUgb3Bjb2Rlcy4KLSAgYm9vbCBpc1B0ck1lbU9wKCkgY29uc3QgeyByZXR1cm4gT3BjID09IEJPX1B0ck1lbUQgfHwgT3BjID09IEJPX1B0ck1lbUk7IH0KKyAgc3RhdGljIGJvb2wgaXNQdHJNZW1PcChPcGNvZGUgT3BjKSB7CisgICAgcmV0dXJuIE9wYyA9PSBCT19QdHJNZW1EIHx8IE9wYyA9PSBCT19QdHJNZW1JOworICB9CisgIGJvb2wgaXNQdHJNZW1PcCgpIGNvbnN0IHsgcmV0dXJuIGlzUHRyTWVtT3AoZ2V0T3Bjb2RlKCkpOyB9CisKICAgc3RhdGljIGJvb2wgaXNNdWx0aXBsaWNhdGl2ZU9wKE9wY29kZSBPcGMpIHsKICAgICByZXR1cm4gT3BjID49IEJPX011bCAmJiBPcGMgPD0gQk9fUmVtOwogICB9CkBAIC0zMjY5LDIxICszNDc1LDIzIEBACiAKICAgLy8gU2V0IHRoZSBGUCBjb250cmFjdGFiaWxpdHkgc3RhdHVzIG9mIHRoaXMgb3BlcmF0b3IuIE9ubHkgbWVhbmluZ2Z1bCBmb3IKICAgLy8gb3BlcmF0aW9ucyBvbiBmbG9hdGluZyBwb2ludCB0eXBlcy4KLSAgdm9pZCBzZXRGUEZlYXR1cmVzKEZQT3B0aW9ucyBGKSB7IEZQRmVhdHVyZXMgPSBGLmdldEludCgpOyB9CisgIHZvaWQgc2V0RlBGZWF0dXJlcyhGUE9wdGlvbnMgRikgeworICAgIEJpbmFyeU9wZXJhdG9yQml0cy5GUEZlYXR1cmVzID0gRi5nZXRJbnQoKTsKKyAgfQogCi0gIEZQT3B0aW9ucyBnZXRGUEZlYXR1cmVzKCkgY29uc3QgeyByZXR1cm4gRlBPcHRpb25zKEZQRmVhdHVyZXMpOyB9CisgIEZQT3B0aW9ucyBnZXRGUEZlYXR1cmVzKCkgY29uc3QgeworICAgIHJldHVybiBGUE9wdGlvbnMoQmluYXJ5T3BlcmF0b3JCaXRzLkZQRmVhdHVyZXMpOworICB9CiAKICAgLy8gR2V0IHRoZSBGUCBjb250cmFjdGFiaWxpdHkgc3RhdHVzIG9mIHRoaXMgb3BlcmF0b3IuIE9ubHkgbWVhbmluZ2Z1bCBmb3IKICAgLy8gb3BlcmF0aW9ucyBvbiBmbG9hdGluZyBwb2ludCB0eXBlcy4KICAgYm9vbCBpc0ZQQ29udHJhY3RhYmxlV2l0aGluU3RhdGVtZW50KCkgY29uc3QgewotICAgIHJldHVybiBGUE9wdGlvbnMoRlBGZWF0dXJlcykuYWxsb3dGUENvbnRyYWN0V2l0aGluU3RhdGVtZW50KCk7CisgICAgcmV0dXJuIGdldEZQRmVhdHVyZXMoKS5hbGxvd0ZQQ29udHJhY3RXaXRoaW5TdGF0ZW1lbnQoKTsKICAgfQogCiAgIC8vIEdldCB0aGUgRkVOVl9BQ0NFU1Mgc3RhdHVzIG9mIHRoaXMgb3BlcmF0b3IuIE9ubHkgbWVhbmluZ2Z1bCBmb3IKICAgLy8gb3BlcmF0aW9ucyBvbiBmbG9hdGluZyBwb2ludCB0eXBlcy4KLSAgYm9vbCBpc0ZFbnZBY2Nlc3NPbigpIGNvbnN0IHsKLSAgICByZXR1cm4gRlBPcHRpb25zKEZQRmVhdHVyZXMpLmFsbG93RkVudkFjY2VzcygpOwotICB9CisgIGJvb2wgaXNGRW52QWNjZXNzT24oKSBjb25zdCB7IHJldHVybiBnZXRGUEZlYXR1cmVzKCkuYWxsb3dGRW52QWNjZXNzKCk7IH0KIAogcHJvdGVjdGVkOgogICBCaW5hcnlPcGVyYXRvcihFeHByICpsaHMsIEV4cHIgKnJocywgT3Bjb2RlIG9wYywgUXVhbFR5cGUgUmVzVHksCkBAIC0zMjk1LDE0ICszNTAzLDE3IEBACiAgICAgICAgICAgIChsaHMtPmlzSW5zdGFudGlhdGlvbkRlcGVuZGVudCgpIHx8CiAgICAgICAgICAgICByaHMtPmlzSW5zdGFudGlhdGlvbkRlcGVuZGVudCgpKSwKICAgICAgICAgICAgKGxocy0+Y29udGFpbnNVbmV4cGFuZGVkUGFyYW1ldGVyUGFjaygpIHx8Ci0gICAgICAgICAgICByaHMtPmNvbnRhaW5zVW5leHBhbmRlZFBhcmFtZXRlclBhY2soKSkpLAotICAgICAgT3BjKG9wYyksIEZQRmVhdHVyZXMoRlBGZWF0dXJlcy5nZXRJbnQoKSksIE9wTG9jKG9wTG9jKSB7CisgICAgICAgICAgICByaHMtPmNvbnRhaW5zVW5leHBhbmRlZFBhcmFtZXRlclBhY2soKSkpIHsKKyAgICBCaW5hcnlPcGVyYXRvckJpdHMuT3BjID0gb3BjOworICAgIEJpbmFyeU9wZXJhdG9yQml0cy5GUEZlYXR1cmVzID0gRlBGZWF0dXJlcy5nZXRJbnQoKTsKKyAgICBCaW5hcnlPcGVyYXRvckJpdHMuT3BMb2MgPSBvcExvYzsKICAgICBTdWJFeHByc1tMSFNdID0gbGhzOwogICAgIFN1YkV4cHJzW1JIU10gPSByaHM7CiAgIH0KIAotICBCaW5hcnlPcGVyYXRvcihTdG10Q2xhc3MgU0MsIEVtcHR5U2hlbGwgRW1wdHkpCi0gICAgOiBFeHByKFNDLCBFbXB0eSksIE9wYyhCT19NdWxBc3NpZ24pIHsgfQorICBCaW5hcnlPcGVyYXRvcihTdG10Q2xhc3MgU0MsIEVtcHR5U2hlbGwgRW1wdHkpIDogRXhwcihTQywgRW1wdHkpIHsKKyAgICBCaW5hcnlPcGVyYXRvckJpdHMuT3BjID0gQk9fTXVsQXNzaWduOworICB9CiB9OwogCiAvLy8gQ29tcG91bmRBc3NpZ25PcGVyYXRvciAtIEZvciBjb21wb3VuZCBhc3NpZ25tZW50cyAoZS5nLiArPSksIHdlIGtlZXAKQEAgLTQ3MjYsMzEgKzQ5MzcsNDYgQEAKICAgfQogfTsKIAotY2xhc3MgUGFyZW5MaXN0RXhwciA6IHB1YmxpYyBFeHByIHsKLSAgU3RtdCAqKkV4cHJzOwotICB1bnNpZ25lZCBOdW1FeHByczsKK2NsYXNzIFBhcmVuTGlzdEV4cHIgZmluYWwKKyAgICA6IHB1YmxpYyBFeHByLAorICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8UGFyZW5MaXN0RXhwciwgU3RtdCAqPiB7CisgIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOworICBmcmllbmQgVHJhaWxpbmdPYmplY3RzOworCisgIC8vLyBUaGUgbG9jYXRpb24gb2YgdGhlIGxlZnQgYW5kIHJpZ2h0IHBhcmVudGhlc2VzLgogICBTb3VyY2VMb2NhdGlvbiBMUGFyZW5Mb2MsIFJQYXJlbkxvYzsKIAotcHVibGljOgotICBQYXJlbkxpc3RFeHByKGNvbnN0IEFTVENvbnRleHQmIEMsIFNvdXJjZUxvY2F0aW9uIGxwYXJlbmxvYywKLSAgICAgICAgICAgICAgICBBcnJheVJlZjxFeHByKj4gZXhwcnMsIFNvdXJjZUxvY2F0aW9uIHJwYXJlbmxvYyk7CisgIC8vLyBCdWlsZCBhIHBhcmVuIGxpc3QuCisgIFBhcmVuTGlzdEV4cHIoU291cmNlTG9jYXRpb24gTFBhcmVuTG9jLCBBcnJheVJlZjxFeHByICo+IEV4cHJzLAorICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFJQYXJlbkxvYyk7CiAKICAgLy8vIEJ1aWxkIGFuIGVtcHR5IHBhcmVuIGxpc3QuCi0gIGV4cGxpY2l0IFBhcmVuTGlzdEV4cHIoRW1wdHlTaGVsbCBFbXB0eSkgOiBFeHByKFBhcmVuTGlzdEV4cHJDbGFzcywgRW1wdHkpIHsgfQorICBQYXJlbkxpc3RFeHByKEVtcHR5U2hlbGwgRW1wdHksIHVuc2lnbmVkIE51bUV4cHJzKTsKIAotICB1bnNpZ25lZCBnZXROdW1FeHBycygpIGNvbnN0IHsgcmV0dXJuIE51bUV4cHJzOyB9CitwdWJsaWM6CisgIC8vLyBDcmVhdGUgYSBwYXJlbiBsaXN0LgorICBzdGF0aWMgUGFyZW5MaXN0RXhwciAqQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkN0eCwgU291cmNlTG9jYXRpb24gTFBhcmVuTG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEV4cHIgKj4gRXhwcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gUlBhcmVuTG9jKTsKIAotICBjb25zdCBFeHByKiBnZXRFeHByKHVuc2lnbmVkIEluaXQpIGNvbnN0IHsKKyAgLy8vIENyZWF0ZSBhbiBlbXB0eSBwYXJlbiBsaXN0LgorICBzdGF0aWMgUGFyZW5MaXN0RXhwciAqQ3JlYXRlRW1wdHkoY29uc3QgQVNUQ29udGV4dCAmQ3R4LCB1bnNpZ25lZCBOdW1FeHBycyk7CisKKyAgLy8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGV4cHJlc3Npb25zIGluIHRoaXMgcGFyZW4gbGlzdC4KKyAgdW5zaWduZWQgZ2V0TnVtRXhwcnMoKSBjb25zdCB7IHJldHVybiBQYXJlbkxpc3RFeHByQml0cy5OdW1FeHByczsgfQorCisgIEV4cHIgKmdldEV4cHIodW5zaWduZWQgSW5pdCkgewogICAgIGFzc2VydChJbml0IDwgZ2V0TnVtRXhwcnMoKSAmJiAiSW5pdGlhbGl6ZXIgYWNjZXNzIG91dCBvZiByYW5nZSEiKTsKLSAgICByZXR1cm4gY2FzdF9vcl9udWxsPEV4cHI+KEV4cHJzW0luaXRdKTsKKyAgICByZXR1cm4gZ2V0RXhwcnMoKVtJbml0XTsKICAgfQogCi0gIEV4cHIqIGdldEV4cHIodW5zaWduZWQgSW5pdCkgewotICAgIGFzc2VydChJbml0IDwgZ2V0TnVtRXhwcnMoKSAmJiAiSW5pdGlhbGl6ZXIgYWNjZXNzIG91dCBvZiByYW5nZSEiKTsKLSAgICByZXR1cm4gY2FzdF9vcl9udWxsPEV4cHI+KEV4cHJzW0luaXRdKTsKKyAgY29uc3QgRXhwciAqZ2V0RXhwcih1bnNpZ25lZCBJbml0KSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UGFyZW5MaXN0RXhwciAqPih0aGlzKS0+Z2V0RXhwcihJbml0KTsKICAgfQogCi0gIEV4cHIgKipnZXRFeHBycygpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RXhwciAqKj4oRXhwcnMpOyB9CisgIEV4cHIgKipnZXRFeHBycygpIHsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeHByICoqPihnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpKTsKKyAgfQogCiAgIEFycmF5UmVmPEV4cHIgKj4gZXhwcnMoKSB7CiAgICAgcmV0dXJuIGxsdm06Om1ha2VBcnJheVJlZihnZXRFeHBycygpLCBnZXROdW1FeHBycygpKTsKQEAgLTQ3NTgsOSArNDk4NCw4IEBACiAKICAgU291cmNlTG9jYXRpb24gZ2V0TFBhcmVuTG9jKCkgY29uc3QgeyByZXR1cm4gTFBhcmVuTG9jOyB9CiAgIFNvdXJjZUxvY2F0aW9uIGdldFJQYXJlbkxvYygpIGNvbnN0IHsgcmV0dXJuIFJQYXJlbkxvYzsgfQotCi0gIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBMUGFyZW5Mb2M7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBSUGFyZW5Mb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCB7IHJldHVybiBnZXRMUGFyZW5Mb2MoKTsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCB7IHJldHVybiBnZXRSUGFyZW5Mb2MoKTsgfQogCiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgU3RtdCAqVCkgewogICAgIHJldHVybiBULT5nZXRTdG10Q2xhc3MoKSA9PSBQYXJlbkxpc3RFeHByQ2xhc3M7CkBAIC00NzY4LDE0ICs0OTkzLDEzIEBACiAKICAgLy8gSXRlcmF0b3JzCiAgIGNoaWxkX3JhbmdlIGNoaWxkcmVuKCkgewotICAgIHJldHVybiBjaGlsZF9yYW5nZSgmRXhwcnNbMF0sICZFeHByc1swXStOdW1FeHBycyk7CisgICAgcmV0dXJuIGNoaWxkX3JhbmdlKGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KCksCisgICAgICAgICAgICAgICAgICAgICAgIGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KCkgKyBnZXROdW1FeHBycygpKTsKICAgfQogICBjb25zdF9jaGlsZF9yYW5nZSBjaGlsZHJlbigpIGNvbnN0IHsKLSAgICByZXR1cm4gY29uc3RfY2hpbGRfcmFuZ2UoJkV4cHJzWzBdLCAmRXhwcnNbMF0gKyBOdW1FeHBycyk7CisgICAgcmV0dXJuIGNvbnN0X2NoaWxkX3JhbmdlKGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KCkgKyBnZXROdW1FeHBycygpKTsKICAgfQotCi0gIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOwotICBmcmllbmQgY2xhc3MgQVNUU3RtdFdyaXRlcjsKIH07CiAKIC8vLyBSZXByZXNlbnRzIGEgQzExIGdlbmVyaWMgc2VsZWN0aW9uLgpAQCAtNDgwNCw5OSArNTAyOCwyNzcgQEAKIC8vLyB3aGljaCBuYW1lcyBhIGRlcGVuZGVudCB0eXBlIGluIGl0cyBhc3NvY2lhdGlvbiBsaXN0IGlzIHJlc3VsdC1kZXBlbmRlbnQsCiAvLy8gd2hpY2ggbWVhbnMgdGhhdCB0aGUgY2hvaWNlIG9mIHJlc3VsdCBleHByZXNzaW9uIGlzIGRlcGVuZGVudC4KIC8vLyBSZXN1bHQtZGVwZW5kZW50IGdlbmVyaWMgYXNzb2NpYXRpb25zIGFyZSBib3RoIHR5cGUtIGFuZCB2YWx1ZS1kZXBlbmRlbnQuCi1jbGFzcyBHZW5lcmljU2VsZWN0aW9uRXhwciA6IHB1YmxpYyBFeHByIHsKLSAgZW51bSB7IENPTlRST0xMSU5HLCBFTkRfRVhQUiB9OwotICBUeXBlU291cmNlSW5mbyAqKkFzc29jVHlwZXM7Ci0gIFN0bXQgKipTdWJFeHByczsKLSAgdW5zaWduZWQgTnVtQXNzb2NzLCBSZXN1bHRJbmRleDsKLSAgU291cmNlTG9jYXRpb24gR2VuZXJpY0xvYywgRGVmYXVsdExvYywgUlBhcmVuTG9jOworY2xhc3MgR2VuZXJpY1NlbGVjdGlvbkV4cHIgZmluYWwKKyAgICA6IHB1YmxpYyBFeHByLAorICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8R2VuZXJpY1NlbGVjdGlvbkV4cHIsIFN0bXQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVTb3VyY2VJbmZvICo+IHsKKyAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgIGZyaWVuZCBjbGFzcyBBU1RTdG10V3JpdGVyOworICBmcmllbmQgVHJhaWxpbmdPYmplY3RzOwogCi1wdWJsaWM6Ci0gIEdlbmVyaWNTZWxlY3Rpb25FeHByKGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIEdlbmVyaWNMb2MsIEV4cHIgKkNvbnRyb2xsaW5nRXhwciwKLSAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VHlwZVNvdXJjZUluZm8qPiBBc3NvY1R5cGVzLAotICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxFeHByKj4gQXNzb2NFeHBycywKLSAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gRGVmYXVsdExvYywgU291cmNlTG9jYXRpb24gUlBhcmVuTG9jLAorICAvLy8gVGhlIG51bWJlciBvZiBhc3NvY2lhdGlvbiBleHByZXNzaW9ucyBhbmQgdGhlIGluZGV4IG9mIHRoZSByZXN1bHQKKyAgLy8vIGV4cHJlc3Npb24gaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGdlbmVyaWMgc2VsZWN0aW9uIGV4cHJlc3Npb24gaXMgbm90CisgIC8vLyByZXN1bHQtZGVwZW5kZW50LiBUaGUgcmVzdWx0IGluZGV4IGlzIGVxdWFsIHRvIFJlc3VsdERlcGVuZGVudEluZGV4CisgIC8vLyBpZiBhbmQgb25seSBpZiB0aGUgZ2VuZXJpYyBzZWxlY3Rpb24gZXhwcmVzc2lvbiBpcyByZXN1bHQtZGVwZW5kZW50LgorICB1bnNpZ25lZCBOdW1Bc3NvY3MsIFJlc3VsdEluZGV4OworICBlbnVtIDogdW5zaWduZWQgeworICAgIFJlc3VsdERlcGVuZGVudEluZGV4ID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpLAorICAgIENvbnRyb2xsaW5nSW5kZXggPSAwLAorICAgIEFzc29jRXhwclN0YXJ0SW5kZXggPSAxCisgIH07CisKKyAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgImRlZmF1bHQiIGFuZCBvZiB0aGUgcmlnaHQgcGFyZW50aGVzaXMuCisgIFNvdXJjZUxvY2F0aW9uIERlZmF1bHRMb2MsIFJQYXJlbkxvYzsKKworICAvLyBHZW5lcmljU2VsZWN0aW9uRXhwciBpcyBmb2xsb3dlZCBieSBzZXZlcmFsIHRyYWlsaW5nIG9iamVjdHMuCisgIC8vIFRoZXkgYXJlIChpbiBvcmRlcik6CisgIC8vCisgIC8vICogQSBzaW5nbGUgU3RtdCAqIGZvciB0aGUgY29udHJvbGxpbmcgZXhwcmVzc2lvbi4KKyAgLy8gKiBBbiBhcnJheSBvZiBnZXROdW1Bc3NvY3MoKSBTdG10ICogZm9yIHRoZSBhc3NvY2lhdGlvbiBleHByZXNzaW9ucy4KKyAgLy8gKiBBbiBhcnJheSBvZiBnZXROdW1Bc3NvY3MoKSBUeXBlU291cmNlSW5mbyAqLCBvbmUgZm9yIGVhY2ggb2YgdGhlCisgIC8vICAgYXNzb2NpYXRpb24gZXhwcmVzc2lvbnMuCisgIHVuc2lnbmVkIG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPFN0bXQgKj4pIGNvbnN0IHsKKyAgICAvLyBBZGQgb25lIHRvIGFjY291bnQgZm9yIHRoZSBjb250cm9sbGluZyBleHByZXNzaW9uOyB0aGUgcmVtYWluZGVyCisgICAgLy8gYXJlIHRoZSBhc3NvY2lhdGVkIGV4cHJlc3Npb25zLgorICAgIHJldHVybiAxICsgZ2V0TnVtQXNzb2NzKCk7CisgIH0KKworICB1bnNpZ25lZCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxUeXBlU291cmNlSW5mbyAqPikgY29uc3QgeworICAgIHJldHVybiBnZXROdW1Bc3NvY3MoKTsKKyAgfQorCisgIHRlbXBsYXRlIDxib29sIENvbnN0PiBjbGFzcyBBc3NvY2lhdGlvbkl0ZXJhdG9yVHk7CisgIC8vLyBCdW5kbGUgdG9nZXRoZXIgYW4gYXNzb2NpYXRpb24gZXhwcmVzc2lvbiBhbmQgaXRzIFR5cGVTb3VyY2VJbmZvLgorICAvLy8gVGhlIENvbnN0IHRlbXBsYXRlIHBhcmFtZXRlciBpcyBmb3IgdGhlIGNvbnN0IGFuZCBub24tY29uc3QgdmVyc2lvbnMKKyAgLy8vIG9mIEFzc29jaWF0aW9uVHkuCisgIHRlbXBsYXRlIDxib29sIENvbnN0PiBjbGFzcyBBc3NvY2lhdGlvblR5IHsKKyAgICBmcmllbmQgY2xhc3MgR2VuZXJpY1NlbGVjdGlvbkV4cHI7CisgICAgdGVtcGxhdGUgPGJvb2wgT3RoZXJDb25zdD4gZnJpZW5kIGNsYXNzIEFzc29jaWF0aW9uSXRlcmF0b3JUeTsKKyAgICB1c2luZyBFeHByUHRyVHkgPQorICAgICAgICB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPENvbnN0LCBjb25zdCBFeHByICosIEV4cHIgKj46OnR5cGU7CisgICAgdXNpbmcgVFNJUHRyVHkgPSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPENvbnN0LCBjb25zdCBUeXBlU291cmNlSW5mbyAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlU291cmNlSW5mbyAqPjo6dHlwZTsKKyAgICBFeHByUHRyVHkgRTsKKyAgICBUU0lQdHJUeSBUU0k7CisgICAgYm9vbCBTZWxlY3RlZDsKKyAgICBBc3NvY2lhdGlvblR5KEV4cHJQdHJUeSBFLCBUU0lQdHJUeSBUU0ksIGJvb2wgU2VsZWN0ZWQpCisgICAgICAgIDogRShFKSwgVFNJKFRTSSksIFNlbGVjdGVkKFNlbGVjdGVkKSB7fQorCisgIHB1YmxpYzoKKyAgICBFeHByUHRyVHkgZ2V0QXNzb2NpYXRpb25FeHByKCkgY29uc3QgeyByZXR1cm4gRTsgfQorICAgIFRTSVB0clR5IGdldFR5cGVTb3VyY2VJbmZvKCkgY29uc3QgeyByZXR1cm4gVFNJOyB9CisgICAgUXVhbFR5cGUgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFRTSSA/IFRTSS0+Z2V0VHlwZSgpIDogUXVhbFR5cGUoKTsgfQorICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIFNlbGVjdGVkOyB9CisgICAgQXNzb2NpYXRpb25UeSAqb3BlcmF0b3ItPigpIHsgcmV0dXJuIHRoaXM7IH0KKyAgICBjb25zdCBBc3NvY2lhdGlvblR5ICpvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQorICB9OyAvLyBjbGFzcyBBc3NvY2lhdGlvblR5CisKKyAgLy8vIEl0ZXJhdG9yIG92ZXIgY29uc3QgYW5kIG5vbi1jb25zdCBBc3NvY2lhdGlvbiBvYmplY3RzLiBUaGUgQXNzb2NpYXRpb24KKyAgLy8vIG9iamVjdHMgYXJlIGNyZWF0ZWQgb24gdGhlIGZseSB3aGVuIHRoZSBpdGVyYXRvciBpcyBkZXJlZmVyZW5jZWQuCisgIC8vLyBUaGlzIGFic3RyYWN0IG92ZXIgaG93IGV4YWN0bHkgdGhlIGFzc29jaWF0aW9uIGV4cHJlc3Npb25zIGFuZCB0aGUKKyAgLy8vIGNvcnJlc3BvbmRpbmcgVHlwZVNvdXJjZUluZm8gKiBhcmUgc3RvcmVkLgorICB0ZW1wbGF0ZSA8Ym9vbCBDb25zdD4KKyAgY2xhc3MgQXNzb2NpYXRpb25JdGVyYXRvclR5CisgICAgICA6IHB1YmxpYyBsbHZtOjppdGVyYXRvcl9mYWNhZGVfYmFzZTwKKyAgICAgICAgICAgIEFzc29jaWF0aW9uSXRlcmF0b3JUeTxDb25zdD4sIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnLAorICAgICAgICAgICAgQXNzb2NpYXRpb25UeTxDb25zdD4sIHN0ZDo6cHRyZGlmZl90LCBBc3NvY2lhdGlvblR5PENvbnN0PiwKKyAgICAgICAgICAgIEFzc29jaWF0aW9uVHk8Q29uc3Q+PiB7CisgICAgZnJpZW5kIGNsYXNzIEdlbmVyaWNTZWxlY3Rpb25FeHByOworICAgIC8vIEZJWE1FOiBUaGlzIGl0ZXJhdG9yIGNvdWxkIGNvbmNlcHR1YWxseSBiZSBhIHJhbmRvbSBhY2Nlc3MgaXRlcmF0b3IsIGFuZAorICAgIC8vIGl0IHdvdWxkIGJlIG5pY2UgaWYgd2UgY291bGQgc3RyZW5ndGhlbiB0aGUgaXRlcmF0b3IgY2F0ZWdvcnkgc29tZWRheS4KKyAgICAvLyBIb3dldmVyIHRoaXMgaXRlcmF0b3IgZG9lcyBub3Qgc2F0aXNmeSB0d28gcmVxdWlyZW1lbnRzIG9mIGZvcndhcmQKKyAgICAvLyBpdGVyYXRvcnM6CisgICAgLy8gYSkgcmVmZXJlbmNlID0gVCYgb3IgcmVmZXJlbmNlID0gY29uc3QgVCYKKyAgICAvLyBiKSBJZiBJdDEgYW5kIEl0MiBhcmUgYm90aCBkZXJlZmVyZW5jZWFibGUsIHRoZW4gSXQxID09IEl0MiBpZiBhbmQgb25seQorICAgIC8vICAgIGlmICpJdDEgYW5kICpJdDIgYXJlIGJvdW5kIHRvIHRoZSBzYW1lIG9iamVjdHMuCisgICAgLy8gQW4gYWx0ZXJuYXRpdmUgZGVzaWduIGFwcHJvYWNoIHdhcyBkaXNjdXNzZWQgZHVyaW5nIHJldmlldzsKKyAgICAvLyBzdG9yZSBhbiBBc3NvY2lhdGlvbiBvYmplY3QgaW5zaWRlIHRoZSBpdGVyYXRvciwgYW5kIHJldHVybiBhIHJlZmVyZW5jZQorICAgIC8vIHRvIGl0IHdoZW4gZGVyZWZlcmVuY2VkLiBUaGlzIGlkZWEgd2FzIGRpc2NhcmRlZCBiZWFjdXNlIG9mIG5hc3R5CisgICAgLy8gbGlmZXRpbWUgaXNzdWVzOgorICAgIC8vICAgIEFzc29jaWF0aW9uSXRlcmF0b3IgSXQgPSAuLi47CisgICAgLy8gICAgY29uc3QgQXNzb2NpYXRpb24gJkFzc29jID0gKkl0Kys7IC8vIE9vcHMsIEFzc29jIGlzIGRhbmdsaW5nLgorICAgIHVzaW5nIEJhc2VUeSA9IHR5cGVuYW1lIEFzc29jaWF0aW9uSXRlcmF0b3JUeTo6aXRlcmF0b3JfZmFjYWRlX2Jhc2U7CisgICAgdXNpbmcgU3RtdFB0clB0clR5ID0KKyAgICAgICAgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxDb25zdCwgY29uc3QgU3RtdCAqY29uc3QgKiwgU3RtdCAqKj46OnR5cGU7CisgICAgdXNpbmcgVFNJUHRyUHRyVHkgPQorICAgICAgICB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPENvbnN0LCBjb25zdCBUeXBlU291cmNlSW5mbyAqY29uc3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlU291cmNlSW5mbyAqKj46OnR5cGU7CisgICAgU3RtdFB0clB0clR5IEU7IC8vID0gbnVsbHB0cjsgRklYTUU6IE9uY2Ugc3VwcG9ydCBmb3IgZ2NjIDQuOCBpcyBkcm9wcGVkLgorICAgIFRTSVB0clB0clR5IFRTSTsgLy8gS2VwdCBpbiBzeW5jIHdpdGggRS4KKyAgICB1bnNpZ25lZCBPZmZzZXQgPSAwLCBTZWxlY3RlZE9mZnNldCA9IDA7CisgICAgQXNzb2NpYXRpb25JdGVyYXRvclR5KFN0bXRQdHJQdHJUeSBFLCBUU0lQdHJQdHJUeSBUU0ksIHVuc2lnbmVkIE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgU2VsZWN0ZWRPZmZzZXQpCisgICAgICAgIDogRShFKSwgVFNJKFRTSSksIE9mZnNldChPZmZzZXQpLCBTZWxlY3RlZE9mZnNldChTZWxlY3RlZE9mZnNldCkge30KKworICBwdWJsaWM6CisgICAgQXNzb2NpYXRpb25JdGVyYXRvclR5KCkgOiBFKG51bGxwdHIpLCBUU0kobnVsbHB0cikge30KKyAgICB0eXBlbmFtZSBCYXNlVHk6OnJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7CisgICAgICByZXR1cm4gQXNzb2NpYXRpb25UeTxDb25zdD4oY2FzdDxFeHByPigqRSksICpUU0ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0ID09IFNlbGVjdGVkT2Zmc2V0KTsKKyAgICB9CisgICAgdHlwZW5hbWUgQmFzZVR5Ojpwb2ludGVyIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAqKnRoaXM7IH0KKyAgICB1c2luZyBCYXNlVHk6Om9wZXJhdG9yKys7CisgICAgQXNzb2NpYXRpb25JdGVyYXRvclR5ICZvcGVyYXRvcisrKCkgeworICAgICAgKytFOworICAgICAgKytUU0k7CisgICAgICArK09mZnNldDsKKyAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgYm9vbCBvcGVyYXRvcj09KEFzc29jaWF0aW9uSXRlcmF0b3JUeSBPdGhlcikgY29uc3QgeyByZXR1cm4gRSA9PSBPdGhlci5FOyB9CisgIH07IC8vIGNsYXNzIEFzc29jaWF0aW9uSXRlcmF0b3IKKworICAvLy8gQnVpbGQgYSBub24tcmVzdWx0LWRlcGVuZGVudCBnZW5lcmljIHNlbGVjdGlvbiBleHByZXNzaW9uLgorICBHZW5lcmljU2VsZWN0aW9uRXhwcihjb25zdCBBU1RDb250ZXh0ICZDb250ZXh0LCBTb3VyY2VMb2NhdGlvbiBHZW5lcmljTG9jLAorICAgICAgICAgICAgICAgICAgICAgICBFeHByICpDb250cm9sbGluZ0V4cHIsCisgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFR5cGVTb3VyY2VJbmZvICo+IEFzc29jVHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEV4cHIgKj4gQXNzb2NFeHBycywgU291cmNlTG9jYXRpb24gRGVmYXVsdExvYywKKyAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gUlBhcmVuTG9jLAogICAgICAgICAgICAgICAgICAgICAgICBib29sIENvbnRhaW5zVW5leHBhbmRlZFBhcmFtZXRlclBhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFJlc3VsdEluZGV4KTsKIAotICAvLy8gVGhpcyBjb25zdHJ1Y3RvciBpcyB1c2VkIGluIHRoZSByZXN1bHQtZGVwZW5kZW50IGNhc2UuCi0gIEdlbmVyaWNTZWxlY3Rpb25FeHByKGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIEdlbmVyaWNMb2MsIEV4cHIgKkNvbnRyb2xsaW5nRXhwciwKLSAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VHlwZVNvdXJjZUluZm8qPiBBc3NvY1R5cGVzLAotICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxFeHByKj4gQXNzb2NFeHBycywKLSAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gRGVmYXVsdExvYywgU291cmNlTG9jYXRpb24gUlBhcmVuTG9jLAorICAvLy8gQnVpbGQgYSByZXN1bHQtZGVwZW5kZW50IGdlbmVyaWMgc2VsZWN0aW9uIGV4cHJlc3Npb24uCisgIEdlbmVyaWNTZWxlY3Rpb25FeHByKGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQsIFNvdXJjZUxvY2F0aW9uIEdlbmVyaWNMb2MsCisgICAgICAgICAgICAgICAgICAgICAgIEV4cHIgKkNvbnRyb2xsaW5nRXhwciwKKyAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VHlwZVNvdXJjZUluZm8gKj4gQXNzb2NUeXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8RXhwciAqPiBBc3NvY0V4cHJzLCBTb3VyY2VMb2NhdGlvbiBEZWZhdWx0TG9jLAorICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBSUGFyZW5Mb2MsCiAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgQ29udGFpbnNVbmV4cGFuZGVkUGFyYW1ldGVyUGFjayk7CiAKLSAgZXhwbGljaXQgR2VuZXJpY1NlbGVjdGlvbkV4cHIoRW1wdHlTaGVsbCBFbXB0eSkKLSAgICA6IEV4cHIoR2VuZXJpY1NlbGVjdGlvbkV4cHJDbGFzcywgRW1wdHkpIHsgfQorICAvLy8gQnVpbGQgYW4gZW1wdHkgZ2VuZXJpYyBzZWxlY3Rpb24gZXhwcmVzc2lvbiBmb3IgZGVzZXJpYWxpemF0aW9uLgorICBleHBsaWNpdCBHZW5lcmljU2VsZWN0aW9uRXhwcihFbXB0eVNoZWxsIEVtcHR5LCB1bnNpZ25lZCBOdW1Bc3NvY3MpOwogCitwdWJsaWM6CisgIC8vLyBDcmVhdGUgYSBub24tcmVzdWx0LWRlcGVuZGVudCBnZW5lcmljIHNlbGVjdGlvbiBleHByZXNzaW9uLgorICBzdGF0aWMgR2VuZXJpY1NlbGVjdGlvbkV4cHIgKgorICBDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQ29udGV4dCwgU291cmNlTG9jYXRpb24gR2VuZXJpY0xvYywKKyAgICAgICAgIEV4cHIgKkNvbnRyb2xsaW5nRXhwciwgQXJyYXlSZWY8VHlwZVNvdXJjZUluZm8gKj4gQXNzb2NUeXBlcywKKyAgICAgICAgIEFycmF5UmVmPEV4cHIgKj4gQXNzb2NFeHBycywgU291cmNlTG9jYXRpb24gRGVmYXVsdExvYywKKyAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFJQYXJlbkxvYywgYm9vbCBDb250YWluc1VuZXhwYW5kZWRQYXJhbWV0ZXJQYWNrLAorICAgICAgICAgdW5zaWduZWQgUmVzdWx0SW5kZXgpOworCisgIC8vLyBDcmVhdGUgYSByZXN1bHQtZGVwZW5kZW50IGdlbmVyaWMgc2VsZWN0aW9uIGV4cHJlc3Npb24uCisgIHN0YXRpYyBHZW5lcmljU2VsZWN0aW9uRXhwciAqCisgIENyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDb250ZXh0LCBTb3VyY2VMb2NhdGlvbiBHZW5lcmljTG9jLAorICAgICAgICAgRXhwciAqQ29udHJvbGxpbmdFeHByLCBBcnJheVJlZjxUeXBlU291cmNlSW5mbyAqPiBBc3NvY1R5cGVzLAorICAgICAgICAgQXJyYXlSZWY8RXhwciAqPiBBc3NvY0V4cHJzLCBTb3VyY2VMb2NhdGlvbiBEZWZhdWx0TG9jLAorICAgICAgICAgU291cmNlTG9jYXRpb24gUlBhcmVuTG9jLCBib29sIENvbnRhaW5zVW5leHBhbmRlZFBhcmFtZXRlclBhY2spOworCisgIC8vLyBDcmVhdGUgYW4gZW1wdHkgZ2VuZXJpYyBzZWxlY3Rpb24gZXhwcmVzc2lvbiBmb3IgZGVzZXJpYWxpemF0aW9uLgorICBzdGF0aWMgR2VuZXJpY1NlbGVjdGlvbkV4cHIgKkNyZWF0ZUVtcHR5KGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTnVtQXNzb2NzKTsKKworICB1c2luZyBBc3NvY2lhdGlvbiA9IEFzc29jaWF0aW9uVHk8ZmFsc2U+OworICB1c2luZyBDb25zdEFzc29jaWF0aW9uID0gQXNzb2NpYXRpb25UeTx0cnVlPjsKKyAgdXNpbmcgQXNzb2NpYXRpb25JdGVyYXRvciA9IEFzc29jaWF0aW9uSXRlcmF0b3JUeTxmYWxzZT47CisgIHVzaW5nIENvbnN0QXNzb2NpYXRpb25JdGVyYXRvciA9IEFzc29jaWF0aW9uSXRlcmF0b3JUeTx0cnVlPjsKKyAgdXNpbmcgYXNzb2NpYXRpb25fcmFuZ2UgPSBsbHZtOjppdGVyYXRvcl9yYW5nZTxBc3NvY2lhdGlvbkl0ZXJhdG9yPjsKKyAgdXNpbmcgY29uc3RfYXNzb2NpYXRpb25fcmFuZ2UgPQorICAgICAgbGx2bTo6aXRlcmF0b3JfcmFuZ2U8Q29uc3RBc3NvY2lhdGlvbkl0ZXJhdG9yPjsKKworICAvLy8gVGhlIG51bWJlciBvZiBhc3NvY2lhdGlvbiBleHByZXNzaW9ucy4KICAgdW5zaWduZWQgZ2V0TnVtQXNzb2NzKCkgY29uc3QgeyByZXR1cm4gTnVtQXNzb2NzOyB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0R2VuZXJpY0xvYygpIGNvbnN0IHsgcmV0dXJuIEdlbmVyaWNMb2M7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0RGVmYXVsdExvYygpIGNvbnN0IHsgcmV0dXJuIERlZmF1bHRMb2M7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0UlBhcmVuTG9jKCkgY29uc3QgeyByZXR1cm4gUlBhcmVuTG9jOyB9Ci0KLSAgY29uc3QgRXhwciAqZ2V0QXNzb2NFeHByKHVuc2lnbmVkIGkpIGNvbnN0IHsKLSAgICByZXR1cm4gY2FzdDxFeHByPihTdWJFeHByc1tFTkRfRVhQUitpXSk7Ci0gIH0KLSAgRXhwciAqZ2V0QXNzb2NFeHByKHVuc2lnbmVkIGkpIHsgcmV0dXJuIGNhc3Q8RXhwcj4oU3ViRXhwcnNbRU5EX0VYUFIraV0pOyB9Ci0gIEFycmF5UmVmPEV4cHIgKj4gZ2V0QXNzb2NFeHBycygpIGNvbnN0IHsKLSAgICByZXR1cm4gTnVtQXNzb2NzCi0gICAgICAgICAgICAgICA/IGxsdm06Om1ha2VBcnJheVJlZigKLSAgICAgICAgICAgICAgICAgICAgICZyZWludGVycHJldF9jYXN0PEV4cHIgKio+KFN1YkV4cHJzKVtFTkRfRVhQUl0sIE51bUFzc29jcykKLSAgICAgICAgICAgICAgIDogTm9uZTsKLSAgfQotICBjb25zdCBUeXBlU291cmNlSW5mbyAqZ2V0QXNzb2NUeXBlU291cmNlSW5mbyh1bnNpZ25lZCBpKSBjb25zdCB7Ci0gICAgcmV0dXJuIEFzc29jVHlwZXNbaV07Ci0gIH0KLSAgVHlwZVNvdXJjZUluZm8gKmdldEFzc29jVHlwZVNvdXJjZUluZm8odW5zaWduZWQgaSkgeyByZXR1cm4gQXNzb2NUeXBlc1tpXTsgfQotICBBcnJheVJlZjxUeXBlU291cmNlSW5mbyAqPiBnZXRBc3NvY1R5cGVTb3VyY2VJbmZvcygpIGNvbnN0IHsKLSAgICByZXR1cm4gTnVtQXNzb2NzID8gbGx2bTo6bWFrZUFycmF5UmVmKCZBc3NvY1R5cGVzWzBdLCBOdW1Bc3NvY3MpIDogTm9uZTsKLSAgfQotCi0gIFF1YWxUeXBlIGdldEFzc29jVHlwZSh1bnNpZ25lZCBpKSBjb25zdCB7Ci0gICAgaWYgKGNvbnN0IFR5cGVTb3VyY2VJbmZvICpUUyA9IGdldEFzc29jVHlwZVNvdXJjZUluZm8oaSkpCi0gICAgICByZXR1cm4gVFMtPmdldFR5cGUoKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gUXVhbFR5cGUoKTsKLSAgfQotCi0gIGNvbnN0IEV4cHIgKmdldENvbnRyb2xsaW5nRXhwcigpIGNvbnN0IHsKLSAgICByZXR1cm4gY2FzdDxFeHByPihTdWJFeHByc1tDT05UUk9MTElOR10pOwotICB9Ci0gIEV4cHIgKmdldENvbnRyb2xsaW5nRXhwcigpIHsgcmV0dXJuIGNhc3Q8RXhwcj4oU3ViRXhwcnNbQ09OVFJPTExJTkddKTsgfQotCi0gIC8vLyBXaGV0aGVyIHRoaXMgZ2VuZXJpYyBzZWxlY3Rpb24gaXMgcmVzdWx0LWRlcGVuZGVudC4KLSAgYm9vbCBpc1Jlc3VsdERlcGVuZGVudCgpIGNvbnN0IHsgcmV0dXJuIFJlc3VsdEluZGV4ID09IC0xVTsgfQotCiAgIC8vLyBUaGUgemVyby1iYXNlZCBpbmRleCBvZiB0aGUgcmVzdWx0IGV4cHJlc3Npb24ncyBnZW5lcmljIGFzc29jaWF0aW9uIGluCiAgIC8vLyB0aGUgZ2VuZXJpYyBzZWxlY3Rpb24ncyBhc3NvY2lhdGlvbiBsaXN0LiAgRGVmaW5lZCBvbmx5IGlmIHRoZQogICAvLy8gZ2VuZXJpYyBzZWxlY3Rpb24gaXMgbm90IHJlc3VsdC1kZXBlbmRlbnQuCiAgIHVuc2lnbmVkIGdldFJlc3VsdEluZGV4KCkgY29uc3QgewotICAgIGFzc2VydCghaXNSZXN1bHREZXBlbmRlbnQoKSAmJiAiR2VuZXJpYyBzZWxlY3Rpb24gaXMgcmVzdWx0LWRlcGVuZGVudCIpOworICAgIGFzc2VydCghaXNSZXN1bHREZXBlbmRlbnQoKSAmJgorICAgICAgICAgICAiR2VuZXJpYyBzZWxlY3Rpb24gaXMgcmVzdWx0LWRlcGVuZGVudCBidXQgZ2V0UmVzdWx0SW5kZXggY2FsbGVkISIpOwogICAgIHJldHVybiBSZXN1bHRJbmRleDsKICAgfQogCi0gIC8vLyBUaGUgZ2VuZXJpYyBzZWxlY3Rpb24ncyByZXN1bHQgZXhwcmVzc2lvbi4gIERlZmluZWQgb25seSBpZiB0aGUKLSAgLy8vIGdlbmVyaWMgc2VsZWN0aW9uIGlzIG5vdCByZXN1bHQtZGVwZW5kZW50LgotICBjb25zdCBFeHByICpnZXRSZXN1bHRFeHByKCkgY29uc3QgeyByZXR1cm4gZ2V0QXNzb2NFeHByKGdldFJlc3VsdEluZGV4KCkpOyB9Ci0gIEV4cHIgKmdldFJlc3VsdEV4cHIoKSB7IHJldHVybiBnZXRBc3NvY0V4cHIoZ2V0UmVzdWx0SW5kZXgoKSk7IH0KKyAgLy8vIFdoZXRoZXIgdGhpcyBnZW5lcmljIHNlbGVjdGlvbiBpcyByZXN1bHQtZGVwZW5kZW50LgorICBib29sIGlzUmVzdWx0RGVwZW5kZW50KCkgY29uc3QgeyByZXR1cm4gUmVzdWx0SW5kZXggPT0gUmVzdWx0RGVwZW5kZW50SW5kZXg7IH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gR2VuZXJpY0xvYzsgfQotICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIFJQYXJlbkxvYzsgfQorICAvLy8gUmV0dXJuIHRoZSBjb250cm9sbGluZyBleHByZXNzaW9uIG9mIHRoaXMgZ2VuZXJpYyBzZWxlY3Rpb24gZXhwcmVzc2lvbi4KKyAgRXhwciAqZ2V0Q29udHJvbGxpbmdFeHByKCkgeworICAgIHJldHVybiBjYXN0PEV4cHI+KGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbQ29udHJvbGxpbmdJbmRleF0pOworICB9CisgIGNvbnN0IEV4cHIgKmdldENvbnRyb2xsaW5nRXhwcigpIGNvbnN0IHsKKyAgICByZXR1cm4gY2FzdDxFeHByPihnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW0NvbnRyb2xsaW5nSW5kZXhdKTsKKyAgfQorCisgIC8vLyBSZXR1cm4gdGhlIHJlc3VsdCBleHByZXNzaW9uIG9mIHRoaXMgY29udHJvbGxpbmcgZXhwcmVzc2lvbi4gRGVmaW5lZCBpZgorICAvLy8gYW5kIG9ubHkgaWYgdGhlIGdlbmVyaWMgc2VsZWN0aW9uIGV4cHJlc3Npb24gaXMgbm90IHJlc3VsdC1kZXBlbmRlbnQuCisgIEV4cHIgKmdldFJlc3VsdEV4cHIoKSB7CisgICAgcmV0dXJuIGNhc3Q8RXhwcj4oCisgICAgICAgIGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbQXNzb2NFeHByU3RhcnRJbmRleCArIGdldFJlc3VsdEluZGV4KCldKTsKKyAgfQorICBjb25zdCBFeHByICpnZXRSZXN1bHRFeHByKCkgY29uc3QgeworICAgIHJldHVybiBjYXN0PEV4cHI+KAorICAgICAgICBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW0Fzc29jRXhwclN0YXJ0SW5kZXggKyBnZXRSZXN1bHRJbmRleCgpXSk7CisgIH0KKworICBBcnJheVJlZjxFeHByICo+IGdldEFzc29jRXhwcnMoKSBjb25zdCB7CisgICAgcmV0dXJuIHtyZWludGVycHJldF9jYXN0PEV4cHIgKmNvbnN0ICo+KGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3NvY0V4cHJTdGFydEluZGV4KSwKKyAgICAgICAgICAgIE51bUFzc29jc307CisgIH0KKyAgQXJyYXlSZWY8VHlwZVNvdXJjZUluZm8gKj4gZ2V0QXNzb2NUeXBlU291cmNlSW5mb3MoKSBjb25zdCB7CisgICAgcmV0dXJuIHtnZXRUcmFpbGluZ09iamVjdHM8VHlwZVNvdXJjZUluZm8gKj4oKSwgTnVtQXNzb2NzfTsKKyAgfQorCisgIC8vLyBSZXR1cm4gdGhlIEl0aCBhc3NvY2lhdGlvbiBleHByZXNzaW9uIHdpdGggaXRzIFR5cGVTb3VyY2VJbmZvLAorICAvLy8gYnVuZGxlZCB0b2dldGhlciBpbiBHZW5lcmljU2VsZWN0aW9uRXhwcjo6KENvbnN0KUFzc29jaWF0aW9uLgorICBBc3NvY2lhdGlvbiBnZXRBc3NvY2lhdGlvbih1bnNpZ25lZCBJKSB7CisgICAgYXNzZXJ0KEkgPCBnZXROdW1Bc3NvY3MoKSAmJgorICAgICAgICAgICAiT3V0LW9mLXJhbmdlIGluZGV4IGluIEdlbmVyaWNTZWxlY3Rpb25FeHByOjpnZXRBc3NvY2lhdGlvbiEiKTsKKyAgICByZXR1cm4gQXNzb2NpYXRpb24oCisgICAgICAgIGNhc3Q8RXhwcj4oZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVtBc3NvY0V4cHJTdGFydEluZGV4ICsgSV0pLAorICAgICAgICBnZXRUcmFpbGluZ09iamVjdHM8VHlwZVNvdXJjZUluZm8gKj4oKVtJXSwKKyAgICAgICAgIWlzUmVzdWx0RGVwZW5kZW50KCkgJiYgKGdldFJlc3VsdEluZGV4KCkgPT0gSSkpOworICB9CisgIENvbnN0QXNzb2NpYXRpb24gZ2V0QXNzb2NpYXRpb24odW5zaWduZWQgSSkgY29uc3QgeworICAgIGFzc2VydChJIDwgZ2V0TnVtQXNzb2NzKCkgJiYKKyAgICAgICAgICAgIk91dC1vZi1yYW5nZSBpbmRleCBpbiBHZW5lcmljU2VsZWN0aW9uRXhwcjo6Z2V0QXNzb2NpYXRpb24hIik7CisgICAgcmV0dXJuIENvbnN0QXNzb2NpYXRpb24oCisgICAgICAgIGNhc3Q8RXhwcj4oZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVtBc3NvY0V4cHJTdGFydEluZGV4ICsgSV0pLAorICAgICAgICBnZXRUcmFpbGluZ09iamVjdHM8VHlwZVNvdXJjZUluZm8gKj4oKVtJXSwKKyAgICAgICAgIWlzUmVzdWx0RGVwZW5kZW50KCkgJiYgKGdldFJlc3VsdEluZGV4KCkgPT0gSSkpOworICB9CisKKyAgYXNzb2NpYXRpb25fcmFuZ2UgYXNzb2NpYXRpb25zKCkgeworICAgIEFzc29jaWF0aW9uSXRlcmF0b3IgQmVnaW4oZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzb2NFeHByU3RhcnRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFRyYWlsaW5nT2JqZWN0czxUeXBlU291cmNlSW5mbyAqPigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypPZmZzZXQ9Ki8wLCBSZXN1bHRJbmRleCk7CisgICAgQXNzb2NpYXRpb25JdGVyYXRvciBFbmQoQmVnaW4uRSArIE51bUFzc29jcywgQmVnaW4uVFNJICsgTnVtQXNzb2NzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qT2Zmc2V0PSovTnVtQXNzb2NzLCBSZXN1bHRJbmRleCk7CisgICAgcmV0dXJuIGxsdm06Om1ha2VfcmFuZ2UoQmVnaW4sIEVuZCk7CisgIH0KKworICBjb25zdF9hc3NvY2lhdGlvbl9yYW5nZSBhc3NvY2lhdGlvbnMoKSBjb25zdCB7CisgICAgQ29uc3RBc3NvY2lhdGlvbkl0ZXJhdG9yIEJlZ2luKGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzb2NFeHByU3RhcnRJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VHJhaWxpbmdPYmplY3RzPFR5cGVTb3VyY2VJbmZvICo+KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qT2Zmc2V0PSovMCwgUmVzdWx0SW5kZXgpOworICAgIENvbnN0QXNzb2NpYXRpb25JdGVyYXRvciBFbmQoQmVnaW4uRSArIE51bUFzc29jcywgQmVnaW4uVFNJICsgTnVtQXNzb2NzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypPZmZzZXQ9Ki9OdW1Bc3NvY3MsIFJlc3VsdEluZGV4KTsKKyAgICByZXR1cm4gbGx2bTo6bWFrZV9yYW5nZShCZWdpbiwgRW5kKTsKKyAgfQorCisgIFNvdXJjZUxvY2F0aW9uIGdldEdlbmVyaWNMb2MoKSBjb25zdCB7CisgICAgcmV0dXJuIEdlbmVyaWNTZWxlY3Rpb25FeHByQml0cy5HZW5lcmljTG9jOworICB9CisgIFNvdXJjZUxvY2F0aW9uIGdldERlZmF1bHRMb2MoKSBjb25zdCB7IHJldHVybiBEZWZhdWx0TG9jOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldFJQYXJlbkxvYygpIGNvbnN0IHsgcmV0dXJuIFJQYXJlbkxvYzsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IHsgcmV0dXJuIGdldEdlbmVyaWNMb2MoKTsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCB7IHJldHVybiBnZXRSUGFyZW5Mb2MoKTsgfQogCiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgU3RtdCAqVCkgewogICAgIHJldHVybiBULT5nZXRTdG10Q2xhc3MoKSA9PSBHZW5lcmljU2VsZWN0aW9uRXhwckNsYXNzOwogICB9CiAKICAgY2hpbGRfcmFuZ2UgY2hpbGRyZW4oKSB7Ci0gICAgcmV0dXJuIGNoaWxkX3JhbmdlKFN1YkV4cHJzLCBTdWJFeHBycytFTkRfRVhQUitOdW1Bc3NvY3MpOworICAgIHJldHVybiBjaGlsZF9yYW5nZShnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpLAorICAgICAgICAgICAgICAgICAgICAgICBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPFN0bXQgKj4oKSkpOwogICB9CiAgIGNvbnN0X2NoaWxkX3JhbmdlIGNoaWxkcmVuKCkgY29uc3QgewotICAgIHJldHVybiBjb25zdF9jaGlsZF9yYW5nZShTdWJFeHBycywgU3ViRXhwcnMgKyBFTkRfRVhQUiArIE51bUFzc29jcyk7CisgICAgcmV0dXJuIGNvbnN0X2NoaWxkX3JhbmdlKGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2FkVG9rZW48U3RtdCAqPigpKSk7CiAgIH0KLSAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CiB9OwogCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0V4cHJDWFguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9FeHByQ1hYLmgKaW5kZXggOGZiZDUzNy4uOTdiZTg0ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0V4cHJDWFguaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRXhwckNYWC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEV4cHJDWFguaCAtIENsYXNzZXMgZm9yIHJlcHJlc2VudGluZyBleHByZXNzaW9ucyAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC03NSw0MyArNzQsNDYgQEAKIC8vLyBmdW5jdGlvbiBpdHNlbGYgd2lsbCBiZSBhIChwb3NzaWJseSBlbXB0eSkgc2V0IG9mIGZ1bmN0aW9ucyBhbmQKIC8vLyBmdW5jdGlvbiB0ZW1wbGF0ZXMgdGhhdCB3ZXJlIGZvdW5kIGJ5IG5hbWUgbG9va3VwIGF0IHRlbXBsYXRlCiAvLy8gZGVmaW5pdGlvbiB0aW1lLgotY2xhc3MgQ1hYT3BlcmF0b3JDYWxsRXhwciA6IHB1YmxpYyBDYWxsRXhwciB7Ci0gIC8vLyBUaGUgb3ZlcmxvYWRlZCBvcGVyYXRvci4KLSAgT3ZlcmxvYWRlZE9wZXJhdG9yS2luZCBPcGVyYXRvcjsKLQotICBTb3VyY2VSYW5nZSBSYW5nZTsKLQotICAvLyBPbmx5IG1lYW5pbmdmdWwgZm9yIGZsb2F0aW5nIHBvaW50IHR5cGVzLgotICBGUE9wdGlvbnMgRlBGZWF0dXJlczsKLQotICBTb3VyY2VSYW5nZSBnZXRTb3VyY2VSYW5nZUltcGwoKSBjb25zdCBMTFZNX1JFQURPTkxZOwotCi1wdWJsaWM6CitjbGFzcyBDWFhPcGVyYXRvckNhbGxFeHByIGZpbmFsIDogcHVibGljIENhbGxFeHByIHsKICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CiAgIGZyaWVuZCBjbGFzcyBBU1RTdG10V3JpdGVyOwogCi0gIENYWE9wZXJhdG9yQ2FsbEV4cHIoQVNUQ29udGV4dCYgQywgT3ZlcmxvYWRlZE9wZXJhdG9yS2luZCBPcCwgRXhwciAqZm4sCi0gICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8RXhwcio+IGFyZ3MsIFF1YWxUeXBlIHQsIEV4cHJWYWx1ZUtpbmQgVkssCi0gICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gb3BlcmF0b3Jsb2MsIEZQT3B0aW9ucyBGUEZlYXR1cmVzKQotICAgICAgOiBDYWxsRXhwcihDLCBDWFhPcGVyYXRvckNhbGxFeHByQ2xhc3MsIGZuLCBhcmdzLCB0LCBWSywgb3BlcmF0b3Jsb2MpLAotICAgICAgICBPcGVyYXRvcihPcCksIEZQRmVhdHVyZXMoRlBGZWF0dXJlcykgewotICAgIFJhbmdlID0gZ2V0U291cmNlUmFuZ2VJbXBsKCk7CisgIFNvdXJjZVJhbmdlIFJhbmdlOworCisgIC8vIENYWE9wZXJhdG9yQ2FsbEV4cHIgaGFzIHNvbWUgdHJhaWxpbmcgb2JqZWN0cyBiZWxvbmdpbmcKKyAgLy8gdG8gQ2FsbEV4cHIuIFNlZSBDYWxsRXhwciBmb3IgdGhlIGRldGFpbHMuCisKKyAgU291cmNlUmFuZ2UgZ2V0U291cmNlUmFuZ2VJbXBsKCkgY29uc3QgTExWTV9SRUFET05MWTsKKworICBDWFhPcGVyYXRvckNhbGxFeHByKE92ZXJsb2FkZWRPcGVyYXRvcktpbmQgT3BLaW5kLCBFeHByICpGbiwKKyAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxFeHByICo+IEFyZ3MsIFF1YWxUeXBlIFR5LCBFeHByVmFsdWVLaW5kIFZLLAorICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIE9wZXJhdG9yTG9jLCBGUE9wdGlvbnMgRlBGZWF0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICBBRExDYWxsS2luZCBVc2VzQURMKTsKKworICBDWFhPcGVyYXRvckNhbGxFeHByKHVuc2lnbmVkIE51bUFyZ3MsIEVtcHR5U2hlbGwgRW1wdHkpOworCitwdWJsaWM6CisgIHN0YXRpYyBDWFhPcGVyYXRvckNhbGxFeHByICoKKyAgQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkN0eCwgT3ZlcmxvYWRlZE9wZXJhdG9yS2luZCBPcEtpbmQsIEV4cHIgKkZuLAorICAgICAgICAgQXJyYXlSZWY8RXhwciAqPiBBcmdzLCBRdWFsVHlwZSBUeSwgRXhwclZhbHVlS2luZCBWSywKKyAgICAgICAgIFNvdXJjZUxvY2F0aW9uIE9wZXJhdG9yTG9jLCBGUE9wdGlvbnMgRlBGZWF0dXJlcywKKyAgICAgICAgIEFETENhbGxLaW5kIFVzZXNBREwgPSBOb3RBREwpOworCisgIHN0YXRpYyBDWFhPcGVyYXRvckNhbGxFeHByICpDcmVhdGVFbXB0eShjb25zdCBBU1RDb250ZXh0ICZDdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBOdW1BcmdzLCBFbXB0eVNoZWxsIEVtcHR5KTsKKworICAvLy8gUmV0dXJucyB0aGUga2luZCBvZiBvdmVybG9hZGVkIG9wZXJhdG9yIHRoYXQgdGhpcyBleHByZXNzaW9uIHJlZmVycyB0by4KKyAgT3ZlcmxvYWRlZE9wZXJhdG9yS2luZCBnZXRPcGVyYXRvcigpIGNvbnN0IHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcmxvYWRlZE9wZXJhdG9yS2luZD4oCisgICAgICAgIENYWE9wZXJhdG9yQ2FsbEV4cHJCaXRzLk9wZXJhdG9yS2luZCk7CiAgIH0KIAotICBleHBsaWNpdCBDWFhPcGVyYXRvckNhbGxFeHByKEFTVENvbnRleHQmIEMsIEVtcHR5U2hlbGwgRW1wdHkpCi0gICAgICA6IENhbGxFeHByKEMsIENYWE9wZXJhdG9yQ2FsbEV4cHJDbGFzcywgRW1wdHkpIHt9Ci0KLSAgLy8vIFJldHVybnMgdGhlIGtpbmQgb2Ygb3ZlcmxvYWRlZCBvcGVyYXRvciB0aGF0IHRoaXMKLSAgLy8vIGV4cHJlc3Npb24gcmVmZXJzIHRvLgotICBPdmVybG9hZGVkT3BlcmF0b3JLaW5kIGdldE9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gT3BlcmF0b3I7IH0KLQogICBzdGF0aWMgYm9vbCBpc0Fzc2lnbm1lbnRPcChPdmVybG9hZGVkT3BlcmF0b3JLaW5kIE9wYykgewotICAgIHJldHVybiBPcGMgPT0gT09fRXF1YWwgfHwgT3BjID09IE9PX1N0YXJFcXVhbCB8fAotICAgICAgICAgICBPcGMgPT0gT09fU2xhc2hFcXVhbCB8fCBPcGMgPT0gT09fUGVyY2VudEVxdWFsIHx8Ci0gICAgICAgICAgIE9wYyA9PSBPT19QbHVzRXF1YWwgfHwgT3BjID09IE9PX01pbnVzRXF1YWwgfHwKLSAgICAgICAgICAgT3BjID09IE9PX0xlc3NMZXNzRXF1YWwgfHwgT3BjID09IE9PX0dyZWF0ZXJHcmVhdGVyRXF1YWwgfHwKLSAgICAgICAgICAgT3BjID09IE9PX0FtcEVxdWFsIHx8IE9wYyA9PSBPT19DYXJldEVxdWFsIHx8Ci0gICAgICAgICAgIE9wYyA9PSBPT19QaXBlRXF1YWw7CisgICAgcmV0dXJuIE9wYyA9PSBPT19FcXVhbCB8fCBPcGMgPT0gT09fU3RhckVxdWFsIHx8IE9wYyA9PSBPT19TbGFzaEVxdWFsIHx8CisgICAgICAgICAgIE9wYyA9PSBPT19QZXJjZW50RXF1YWwgfHwgT3BjID09IE9PX1BsdXNFcXVhbCB8fAorICAgICAgICAgICBPcGMgPT0gT09fTWludXNFcXVhbCB8fCBPcGMgPT0gT09fTGVzc0xlc3NFcXVhbCB8fAorICAgICAgICAgICBPcGMgPT0gT09fR3JlYXRlckdyZWF0ZXJFcXVhbCB8fCBPcGMgPT0gT09fQW1wRXF1YWwgfHwKKyAgICAgICAgICAgT3BjID09IE9PX0NhcmV0RXF1YWwgfHwgT3BjID09IE9PX1BpcGVFcXVhbDsKICAgfQogICBib29sIGlzQXNzaWdubWVudE9wKCkgY29uc3QgeyByZXR1cm4gaXNBc3NpZ25tZW50T3AoZ2V0T3BlcmF0b3IoKSk7IH0KIApAQCAtMTI2LDE0ICsxMjgsMTUgQEAKICAgU291cmNlTG9jYXRpb24gZ2V0T3BlcmF0b3JMb2MoKSBjb25zdCB7IHJldHVybiBnZXRSUGFyZW5Mb2MoKTsgfQogCiAgIFNvdXJjZUxvY2F0aW9uIGdldEV4cHJMb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsKKyAgICBPdmVybG9hZGVkT3BlcmF0b3JLaW5kIE9wZXJhdG9yID0gZ2V0T3BlcmF0b3IoKTsKICAgICByZXR1cm4gKE9wZXJhdG9yIDwgT09fUGx1cyB8fCBPcGVyYXRvciA+PSBPT19BcnJvdyB8fAogICAgICAgICAgICAgT3BlcmF0b3IgPT0gT09fUGx1c1BsdXMgfHwgT3BlcmF0b3IgPT0gT09fTWludXNNaW51cykKICAgICAgICAgICAgICAgID8gZ2V0QmVnaW5Mb2MoKQogICAgICAgICAgICAgICAgOiBnZXRPcGVyYXRvckxvYygpOwogICB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIFJhbmdlLmdldEJlZ2luKCk7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBSYW5nZS5nZXRFbmQoKTsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IHsgcmV0dXJuIFJhbmdlLmdldEJlZ2luKCk7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgeyByZXR1cm4gUmFuZ2UuZ2V0RW5kKCk7IH0KICAgU291cmNlUmFuZ2UgZ2V0U291cmNlUmFuZ2UoKSBjb25zdCB7IHJldHVybiBSYW5nZTsgfQogCiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgU3RtdCAqVCkgewpAQCAtMTQyLDE0ICsxNDUsMTcgQEAKIAogICAvLyBTZXQgdGhlIEZQIGNvbnRyYWN0YWJpbGl0eSBzdGF0dXMgb2YgdGhpcyBvcGVyYXRvci4gT25seSBtZWFuaW5nZnVsIGZvcgogICAvLyBvcGVyYXRpb25zIG9uIGZsb2F0aW5nIHBvaW50IHR5cGVzLgotICB2b2lkIHNldEZQRmVhdHVyZXMoRlBPcHRpb25zIEYpIHsgRlBGZWF0dXJlcyA9IEY7IH0KLQotICBGUE9wdGlvbnMgZ2V0RlBGZWF0dXJlcygpIGNvbnN0IHsgcmV0dXJuIEZQRmVhdHVyZXM7IH0KKyAgdm9pZCBzZXRGUEZlYXR1cmVzKEZQT3B0aW9ucyBGKSB7CisgICAgQ1hYT3BlcmF0b3JDYWxsRXhwckJpdHMuRlBGZWF0dXJlcyA9IEYuZ2V0SW50KCk7CisgIH0KKyAgRlBPcHRpb25zIGdldEZQRmVhdHVyZXMoKSBjb25zdCB7CisgICAgcmV0dXJuIEZQT3B0aW9ucyhDWFhPcGVyYXRvckNhbGxFeHByQml0cy5GUEZlYXR1cmVzKTsKKyAgfQogCiAgIC8vIEdldCB0aGUgRlAgY29udHJhY3RhYmlsaXR5IHN0YXR1cyBvZiB0aGlzIG9wZXJhdG9yLiBPbmx5IG1lYW5pbmdmdWwgZm9yCiAgIC8vIG9wZXJhdGlvbnMgb24gZmxvYXRpbmcgcG9pbnQgdHlwZXMuCiAgIGJvb2wgaXNGUENvbnRyYWN0YWJsZVdpdGhpblN0YXRlbWVudCgpIGNvbnN0IHsKLSAgICByZXR1cm4gRlBGZWF0dXJlcy5hbGxvd0ZQQ29udHJhY3RXaXRoaW5TdGF0ZW1lbnQoKTsKKyAgICByZXR1cm4gZ2V0RlBGZWF0dXJlcygpLmFsbG93RlBDb250cmFjdFdpdGhpblN0YXRlbWVudCgpOwogICB9CiB9OwogCkBAIC0xNjEsMTQgKzE2NywyMyBAQAogLy8vIGJvdGggdGhlIG9iamVjdCBhcmd1bWVudCBhbmQgdGhlIG1lbWJlciBmdW5jdGlvbiwgd2hpbGUgdGhlCiAvLy8gYXJndW1lbnRzIGFyZSB0aGUgYXJndW1lbnRzIHdpdGhpbiB0aGUgcGFyZW50aGVzZXMgKG5vdCBpbmNsdWRpbmcKIC8vLyB0aGUgb2JqZWN0IGFyZ3VtZW50KS4KLWNsYXNzIENYWE1lbWJlckNhbGxFeHByIDogcHVibGljIENhbGxFeHByIHsKLXB1YmxpYzoKLSAgQ1hYTWVtYmVyQ2FsbEV4cHIoQVNUQ29udGV4dCAmQywgRXhwciAqZm4sIEFycmF5UmVmPEV4cHIqPiBhcmdzLAotICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSB0LCBFeHByVmFsdWVLaW5kIFZLLCBTb3VyY2VMb2NhdGlvbiBSUCkKLSAgICAgIDogQ2FsbEV4cHIoQywgQ1hYTWVtYmVyQ2FsbEV4cHJDbGFzcywgZm4sIGFyZ3MsIHQsIFZLLCBSUCkge30KK2NsYXNzIENYWE1lbWJlckNhbGxFeHByIGZpbmFsIDogcHVibGljIENhbGxFeHByIHsKKyAgLy8gQ1hYTWVtYmVyQ2FsbEV4cHIgaGFzIHNvbWUgdHJhaWxpbmcgb2JqZWN0cyBiZWxvbmdpbmcKKyAgLy8gdG8gQ2FsbEV4cHIuIFNlZSBDYWxsRXhwciBmb3IgdGhlIGRldGFpbHMuCiAKLSAgQ1hYTWVtYmVyQ2FsbEV4cHIoQVNUQ29udGV4dCAmQywgRW1wdHlTaGVsbCBFbXB0eSkKLSAgICAgIDogQ2FsbEV4cHIoQywgQ1hYTWVtYmVyQ2FsbEV4cHJDbGFzcywgRW1wdHkpIHt9CisgIENYWE1lbWJlckNhbGxFeHByKEV4cHIgKkZuLCBBcnJheVJlZjxFeHByICo+IEFyZ3MsIFF1YWxUeXBlIFR5LAorICAgICAgICAgICAgICAgICAgICBFeHByVmFsdWVLaW5kIFZLLCBTb3VyY2VMb2NhdGlvbiBSUCwgdW5zaWduZWQgTWluTnVtQXJncyk7CisKKyAgQ1hYTWVtYmVyQ2FsbEV4cHIodW5zaWduZWQgTnVtQXJncywgRW1wdHlTaGVsbCBFbXB0eSk7CisKK3B1YmxpYzoKKyAgc3RhdGljIENYWE1lbWJlckNhbGxFeHByICpDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQ3R4LCBFeHByICpGbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8RXhwciAqPiBBcmdzLCBRdWFsVHlwZSBUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwclZhbHVlS2luZCBWSywgU291cmNlTG9jYXRpb24gUlAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE1pbk51bUFyZ3MgPSAwKTsKKworICBzdGF0aWMgQ1hYTWVtYmVyQ2FsbEV4cHIgKkNyZWF0ZUVtcHR5KGNvbnN0IEFTVENvbnRleHQgJkN0eCwgdW5zaWduZWQgTnVtQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eVNoZWxsIEVtcHR5KTsKIAogICAvLy8gUmV0cmlldmVzIHRoZSBpbXBsaWNpdCBvYmplY3QgYXJndW1lbnQgZm9yIHRoZSBtZW1iZXIgY2FsbC4KICAgLy8vCkBAIC0yMDAsMTggKzIxNSwyNiBAQAogfTsKIAogLy8vIFJlcHJlc2VudHMgYSBjYWxsIHRvIGEgQ1VEQSBrZXJuZWwgZnVuY3Rpb24uCi1jbGFzcyBDVURBS2VybmVsQ2FsbEV4cHIgOiBwdWJsaWMgQ2FsbEV4cHIgewotcHJpdmF0ZToKK2NsYXNzIENVREFLZXJuZWxDYWxsRXhwciBmaW5hbCA6IHB1YmxpYyBDYWxsRXhwciB7CiAgIGVudW0geyBDT05GSUcsIEVORF9QUkVBUkcgfTsKIAotcHVibGljOgotICBDVURBS2VybmVsQ2FsbEV4cHIoQVNUQ29udGV4dCAmQywgRXhwciAqZm4sIENhbGxFeHByICpDb25maWcsCi0gICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxFeHByKj4gYXJncywgUXVhbFR5cGUgdCwgRXhwclZhbHVlS2luZCBWSywKLSAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFJQKQotICAgICAgOiBDYWxsRXhwcihDLCBDVURBS2VybmVsQ2FsbEV4cHJDbGFzcywgZm4sIENvbmZpZywgYXJncywgdCwgVkssIFJQKSB7fQorICAvLyBDVURBS2VybmVsQ2FsbEV4cHIgaGFzIHNvbWUgdHJhaWxpbmcgb2JqZWN0cyBiZWxvbmdpbmcKKyAgLy8gdG8gQ2FsbEV4cHIuIFNlZSBDYWxsRXhwciBmb3IgdGhlIGRldGFpbHMuCiAKLSAgQ1VEQUtlcm5lbENhbGxFeHByKEFTVENvbnRleHQgJkMsIEVtcHR5U2hlbGwgRW1wdHkpCi0gICAgICA6IENhbGxFeHByKEMsIENVREFLZXJuZWxDYWxsRXhwckNsYXNzLCBFTkRfUFJFQVJHLCBFbXB0eSkge30KKyAgQ1VEQUtlcm5lbENhbGxFeHByKEV4cHIgKkZuLCBDYWxsRXhwciAqQ29uZmlnLCBBcnJheVJlZjxFeHByICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBUeSwgRXhwclZhbHVlS2luZCBWSywgU291cmNlTG9jYXRpb24gUlAsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBNaW5OdW1BcmdzKTsKKworICBDVURBS2VybmVsQ2FsbEV4cHIodW5zaWduZWQgTnVtQXJncywgRW1wdHlTaGVsbCBFbXB0eSk7CisKK3B1YmxpYzoKKyAgc3RhdGljIENVREFLZXJuZWxDYWxsRXhwciAqQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkN0eCwgRXhwciAqRm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsRXhwciAqQ29uZmlnLCBBcnJheVJlZjxFeHByICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBUeSwgRXhwclZhbHVlS2luZCBWSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFJQLCB1bnNpZ25lZCBNaW5OdW1BcmdzID0gMCk7CisKKyAgc3RhdGljIENVREFLZXJuZWxDYWxsRXhwciAqQ3JlYXRlRW1wdHkoY29uc3QgQVNUQ29udGV4dCAmQ3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBOdW1BcmdzLCBFbXB0eVNoZWxsIEVtcHR5KTsKIAogICBjb25zdCBDYWxsRXhwciAqZ2V0Q29uZmlnKCkgY29uc3QgewogICAgIHJldHVybiBjYXN0X29yX251bGw8Q2FsbEV4cHI+KGdldFByZUFyZyhDT05GSUcpKTsKQEAgLTMwMSw4ICszMjQsNyBAQAogLy8vIFxjIHN0YXRpY19jYXN0PGludD4oMS4wKS4KIGNsYXNzIENYWFN0YXRpY0Nhc3RFeHByIGZpbmFsCiAgICAgOiBwdWJsaWMgQ1hYTmFtZWRDYXN0RXhwciwKLSAgICAgIHByaXZhdGUgbGx2bTo6VHJhaWxpbmdPYmplY3RzPENYWFN0YXRpY0Nhc3RFeHByLCBDYXN0RXhwcjo6QmFzZVBhdGhTaXplVHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDWFhCYXNlU3BlY2lmaWVyICo+IHsKKyAgICAgIHByaXZhdGUgbGx2bTo6VHJhaWxpbmdPYmplY3RzPENYWFN0YXRpY0Nhc3RFeHByLCBDWFhCYXNlU3BlY2lmaWVyICo+IHsKICAgQ1hYU3RhdGljQ2FzdEV4cHIoUXVhbFR5cGUgdHksIEV4cHJWYWx1ZUtpbmQgdmssIENhc3RLaW5kIGtpbmQsIEV4cHIgKm9wLAogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBwYXRoU2l6ZSwgVHlwZVNvdXJjZUluZm8gKndyaXR0ZW5UeSwKICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gbCwgU291cmNlTG9jYXRpb24gUlBhcmVuTG9jLApAQCAtMzEzLDEwICszMzUsNiBAQAogICBleHBsaWNpdCBDWFhTdGF0aWNDYXN0RXhwcihFbXB0eVNoZWxsIEVtcHR5LCB1bnNpZ25lZCBQYXRoU2l6ZSkKICAgICAgIDogQ1hYTmFtZWRDYXN0RXhwcihDWFhTdGF0aWNDYXN0RXhwckNsYXNzLCBFbXB0eSwgUGF0aFNpemUpIHt9CiAKLSAgc2l6ZV90IG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPENhc3RFeHByOjpCYXNlUGF0aFNpemVUeT4pIGNvbnN0IHsKLSAgICByZXR1cm4gcGF0aF9lbXB0eSgpID8gMCA6IDE7Ci0gIH0KLQogcHVibGljOgogICBmcmllbmQgY2xhc3MgQ2FzdEV4cHI7CiAgIGZyaWVuZCBUcmFpbGluZ09iamVjdHM7CkBAIC0zNDIsOCArMzYwLDcgQEAKIC8vLyBjaGVjayB0byBkZXRlcm1pbmUgaG93IHRvIHBlcmZvcm0gdGhlIHR5cGUgY29udmVyc2lvbi4KIGNsYXNzIENYWER5bmFtaWNDYXN0RXhwciBmaW5hbAogICAgIDogcHVibGljIENYWE5hbWVkQ2FzdEV4cHIsCi0gICAgICBwcml2YXRlIGxsdm06OlRyYWlsaW5nT2JqZWN0czwKLSAgICAgICAgICBDWFhEeW5hbWljQ2FzdEV4cHIsIENhc3RFeHByOjpCYXNlUGF0aFNpemVUeSwgQ1hYQmFzZVNwZWNpZmllciAqPiB7CisgICAgICBwcml2YXRlIGxsdm06OlRyYWlsaW5nT2JqZWN0czxDWFhEeW5hbWljQ2FzdEV4cHIsIENYWEJhc2VTcGVjaWZpZXIgKj4gewogICBDWFhEeW5hbWljQ2FzdEV4cHIoUXVhbFR5cGUgdHksIEV4cHJWYWx1ZUtpbmQgVkssIENhc3RLaW5kIGtpbmQsCiAgICAgICAgICAgICAgICAgICAgICBFeHByICpvcCwgdW5zaWduZWQgcGF0aFNpemUsIFR5cGVTb3VyY2VJbmZvICp3cml0dGVuVHksCiAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBsLCBTb3VyY2VMb2NhdGlvbiBSUGFyZW5Mb2MsCkBAIC0zNTQsMTAgKzM3MSw2IEBACiAgIGV4cGxpY2l0IENYWER5bmFtaWNDYXN0RXhwcihFbXB0eVNoZWxsIEVtcHR5LCB1bnNpZ25lZCBwYXRoU2l6ZSkKICAgICAgIDogQ1hYTmFtZWRDYXN0RXhwcihDWFhEeW5hbWljQ2FzdEV4cHJDbGFzcywgRW1wdHksIHBhdGhTaXplKSB7fQogCi0gIHNpemVfdCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxDYXN0RXhwcjo6QmFzZVBhdGhTaXplVHk+KSBjb25zdCB7Ci0gICAgcmV0dXJuIHBhdGhfZW1wdHkoKSA/IDAgOiAxOwotICB9Ci0KIHB1YmxpYzoKICAgZnJpZW5kIGNsYXNzIENhc3RFeHByOwogICBmcmllbmQgVHJhaWxpbmdPYmplY3RzOwpAQCAtMzkwLDcgKzQwMyw2IEBACiBjbGFzcyBDWFhSZWludGVycHJldENhc3RFeHByIGZpbmFsCiAgICAgOiBwdWJsaWMgQ1hYTmFtZWRDYXN0RXhwciwKICAgICAgIHByaXZhdGUgbGx2bTo6VHJhaWxpbmdPYmplY3RzPENYWFJlaW50ZXJwcmV0Q2FzdEV4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYXN0RXhwcjo6QmFzZVBhdGhTaXplVHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDWFhCYXNlU3BlY2lmaWVyICo+IHsKICAgQ1hYUmVpbnRlcnByZXRDYXN0RXhwcihRdWFsVHlwZSB0eSwgRXhwclZhbHVlS2luZCB2aywgQ2FzdEtpbmQga2luZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBFeHByICpvcCwgdW5zaWduZWQgcGF0aFNpemUsCkBAIC00MDMsMTAgKzQxNSw2IEBACiAgIENYWFJlaW50ZXJwcmV0Q2FzdEV4cHIoRW1wdHlTaGVsbCBFbXB0eSwgdW5zaWduZWQgcGF0aFNpemUpCiAgICAgICA6IENYWE5hbWVkQ2FzdEV4cHIoQ1hYUmVpbnRlcnByZXRDYXN0RXhwckNsYXNzLCBFbXB0eSwgcGF0aFNpemUpIHt9CiAKLSAgc2l6ZV90IG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPENhc3RFeHByOjpCYXNlUGF0aFNpemVUeT4pIGNvbnN0IHsKLSAgICByZXR1cm4gcGF0aF9lbXB0eSgpID8gMCA6IDE7Ci0gIH0KLQogcHVibGljOgogICBmcmllbmQgY2xhc3MgQ2FzdEV4cHI7CiAgIGZyaWVuZCBUcmFpbGluZ09iamVjdHM7CkBAIC00MzQsOCArNDQyLDcgQEAKIC8vLyB2YWx1ZS4KIGNsYXNzIENYWENvbnN0Q2FzdEV4cHIgZmluYWwKICAgICA6IHB1YmxpYyBDWFhOYW1lZENhc3RFeHByLAotICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8Q1hYQ29uc3RDYXN0RXhwciwgQ2FzdEV4cHI6OkJhc2VQYXRoU2l6ZVR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1hYQmFzZVNwZWNpZmllciAqPiB7CisgICAgICBwcml2YXRlIGxsdm06OlRyYWlsaW5nT2JqZWN0czxDWFhDb25zdENhc3RFeHByLCBDWFhCYXNlU3BlY2lmaWVyICo+IHsKICAgQ1hYQ29uc3RDYXN0RXhwcihRdWFsVHlwZSB0eSwgRXhwclZhbHVlS2luZCBWSywgRXhwciAqb3AsCiAgICAgICAgICAgICAgICAgICAgVHlwZVNvdXJjZUluZm8gKndyaXR0ZW5UeSwgU291cmNlTG9jYXRpb24gbCwKICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBSUGFyZW5Mb2MsIFNvdXJjZVJhbmdlIEFuZ2xlQnJhY2tldHMpCkBAIC00NDUsMTAgKzQ1Miw2IEBACiAgIGV4cGxpY2l0IENYWENvbnN0Q2FzdEV4cHIoRW1wdHlTaGVsbCBFbXB0eSkKICAgICAgIDogQ1hYTmFtZWRDYXN0RXhwcihDWFhDb25zdENhc3RFeHByQ2xhc3MsIEVtcHR5LCAwKSB7fQogCi0gIHNpemVfdCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxDYXN0RXhwcjo6QmFzZVBhdGhTaXplVHk+KSBjb25zdCB7Ci0gICAgcmV0dXJuIHBhdGhfZW1wdHkoKSA/IDAgOiAxOwotICB9Ci0KIHB1YmxpYzoKICAgZnJpZW5kIGNsYXNzIENhc3RFeHByOwogICBmcmllbmQgVHJhaWxpbmdPYmplY3RzOwpAQCAtNDc0LDIyICs0NzcsMzAgQEAKIC8vLwogLy8vIFNpbmNlIGxpdGVyYWwgb3BlcmF0b3JzIGFyZSBuZXZlciBmb3VuZCBieSBBREwgYW5kIGNhbiBvbmx5IGJlIGRlY2xhcmVkIGF0CiAvLy8gbmFtZXNwYWNlIHNjb3BlLCBhIHVzZXItZGVmaW5lZCBsaXRlcmFsIGlzIG5ldmVyIGRlcGVuZGVudC4KLWNsYXNzIFVzZXJEZWZpbmVkTGl0ZXJhbCA6IHB1YmxpYyBDYWxsRXhwciB7Ci0gIC8vLyBUaGUgbG9jYXRpb24gb2YgYSB1ZC1zdWZmaXggd2l0aGluIHRoZSBsaXRlcmFsLgotICBTb3VyY2VMb2NhdGlvbiBVRFN1ZmZpeExvYzsKLQotcHVibGljOgorY2xhc3MgVXNlckRlZmluZWRMaXRlcmFsIGZpbmFsIDogcHVibGljIENhbGxFeHByIHsKICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CiAgIGZyaWVuZCBjbGFzcyBBU1RTdG10V3JpdGVyOwogCi0gIFVzZXJEZWZpbmVkTGl0ZXJhbChjb25zdCBBU1RDb250ZXh0ICZDLCBFeHByICpGbiwgQXJyYXlSZWY8RXhwcio+IEFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBULCBFeHByVmFsdWVLaW5kIFZLLCBTb3VyY2VMb2NhdGlvbiBMaXRFbmRMb2MsCi0gICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBTdWZmaXhMb2MpCi0gICAgICA6IENhbGxFeHByKEMsIFVzZXJEZWZpbmVkTGl0ZXJhbENsYXNzLCBGbiwgQXJncywgVCwgVkssIExpdEVuZExvYyksCi0gICAgICAgIFVEU3VmZml4TG9jKFN1ZmZpeExvYykge30KKyAgLy8vIFRoZSBsb2NhdGlvbiBvZiBhIHVkLXN1ZmZpeCB3aXRoaW4gdGhlIGxpdGVyYWwuCisgIFNvdXJjZUxvY2F0aW9uIFVEU3VmZml4TG9jOwogCi0gIGV4cGxpY2l0IFVzZXJEZWZpbmVkTGl0ZXJhbChjb25zdCBBU1RDb250ZXh0ICZDLCBFbXB0eVNoZWxsIEVtcHR5KQotICAgICAgOiBDYWxsRXhwcihDLCBVc2VyRGVmaW5lZExpdGVyYWxDbGFzcywgRW1wdHkpIHt9CisgIC8vIFVzZXJEZWZpbmVkTGl0ZXJhbCBoYXMgc29tZSB0cmFpbGluZyBvYmplY3RzIGJlbG9uZ2luZworICAvLyB0byBDYWxsRXhwci4gU2VlIENhbGxFeHByIGZvciB0aGUgZGV0YWlscy4KKworICBVc2VyRGVmaW5lZExpdGVyYWwoRXhwciAqRm4sIEFycmF5UmVmPEV4cHIgKj4gQXJncywgUXVhbFR5cGUgVHksCisgICAgICAgICAgICAgICAgICAgICBFeHByVmFsdWVLaW5kIFZLLCBTb3VyY2VMb2NhdGlvbiBMaXRFbmRMb2MsCisgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBTdWZmaXhMb2MpOworCisgIFVzZXJEZWZpbmVkTGl0ZXJhbCh1bnNpZ25lZCBOdW1BcmdzLCBFbXB0eVNoZWxsIEVtcHR5KTsKKworcHVibGljOgorICBzdGF0aWMgVXNlckRlZmluZWRMaXRlcmFsICpDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQ3R4LCBFeHByICpGbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEV4cHIgKj4gQXJncywgUXVhbFR5cGUgVHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHByVmFsdWVLaW5kIFZLLCBTb3VyY2VMb2NhdGlvbiBMaXRFbmRMb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBTdWZmaXhMb2MpOworCisgIHN0YXRpYyBVc2VyRGVmaW5lZExpdGVyYWwgKkNyZWF0ZUVtcHR5KGNvbnN0IEFTVENvbnRleHQgJkN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTnVtQXJncywgRW1wdHlTaGVsbCBFbXB0eSk7CiAKICAgLy8vIFRoZSBraW5kIG9mIGxpdGVyYWwgb3BlcmF0b3Igd2hpY2ggaXMgaW52b2tlZC4KICAgZW51bSBMaXRlcmFsT3BlcmF0b3JLaW5kIHsKQEAgLTU0OCwyNiArNTU5LDI1IEBACiAKIC8vLyBBIGJvb2xlYW4gbGl0ZXJhbCwgcGVyIChbQysrIGxleC5ib29sXSBCb29sZWFuIGxpdGVyYWxzKS4KIGNsYXNzIENYWEJvb2xMaXRlcmFsRXhwciA6IHB1YmxpYyBFeHByIHsKLSAgYm9vbCBWYWx1ZTsKLSAgU291cmNlTG9jYXRpb24gTG9jOwotCiBwdWJsaWM6Ci0gIENYWEJvb2xMaXRlcmFsRXhwcihib29sIHZhbCwgUXVhbFR5cGUgVHksIFNvdXJjZUxvY2F0aW9uIGwpCisgIENYWEJvb2xMaXRlcmFsRXhwcihib29sIFZhbCwgUXVhbFR5cGUgVHksIFNvdXJjZUxvY2F0aW9uIExvYykKICAgICAgIDogRXhwcihDWFhCb29sTGl0ZXJhbEV4cHJDbGFzcywgVHksIFZLX1JWYWx1ZSwgT0tfT3JkaW5hcnksIGZhbHNlLCBmYWxzZSwKLSAgICAgICAgICAgICBmYWxzZSwgZmFsc2UpLAotICAgICAgICBWYWx1ZSh2YWwpLCBMb2MobCkge30KKyAgICAgICAgICAgICBmYWxzZSwgZmFsc2UpIHsKKyAgICBDWFhCb29sTGl0ZXJhbEV4cHJCaXRzLlZhbHVlID0gVmFsOworICAgIENYWEJvb2xMaXRlcmFsRXhwckJpdHMuTG9jID0gTG9jOworICB9CiAKICAgZXhwbGljaXQgQ1hYQm9vbExpdGVyYWxFeHByKEVtcHR5U2hlbGwgRW1wdHkpCiAgICAgICA6IEV4cHIoQ1hYQm9vbExpdGVyYWxFeHByQ2xhc3MsIEVtcHR5KSB7fQogCi0gIGJvb2wgZ2V0VmFsdWUoKSBjb25zdCB7IHJldHVybiBWYWx1ZTsgfQotICB2b2lkIHNldFZhbHVlKGJvb2wgVikgeyBWYWx1ZSA9IFY7IH0KKyAgYm9vbCBnZXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIENYWEJvb2xMaXRlcmFsRXhwckJpdHMuVmFsdWU7IH0KKyAgdm9pZCBzZXRWYWx1ZShib29sIFYpIHsgQ1hYQm9vbExpdGVyYWxFeHByQml0cy5WYWx1ZSA9IFY7IH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gTG9jOyB9Ci0gIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gTG9jOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgeyByZXR1cm4gZ2V0TG9jYXRpb24oKTsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCB7IHJldHVybiBnZXRMb2NhdGlvbigpOyB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBMb2M7IH0KLSAgdm9pZCBzZXRMb2NhdGlvbihTb3VyY2VMb2NhdGlvbiBMKSB7IExvYyA9IEw7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBDWFhCb29sTGl0ZXJhbEV4cHJCaXRzLkxvYzsgfQorICB2b2lkIHNldExvY2F0aW9uKFNvdXJjZUxvY2F0aW9uIEwpIHsgQ1hYQm9vbExpdGVyYWxFeHByQml0cy5Mb2MgPSBMOyB9CiAKICAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBTdG10ICpUKSB7CiAgICAgcmV0dXJuIFQtPmdldFN0bXRDbGFzcygpID09IENYWEJvb2xMaXRlcmFsRXhwckNsYXNzOwpAQCAtNTgzLDIyICs1OTMsMjEgQEAKIC8vLwogLy8vIEludHJvZHVjZWQgaW4gQysrMTEsIHRoZSBvbmx5IGxpdGVyYWwgb2YgdHlwZSBcYyBudWxscHRyX3QgaXMgXGMgbnVsbHB0ci4KIGNsYXNzIENYWE51bGxQdHJMaXRlcmFsRXhwciA6IHB1YmxpYyBFeHByIHsKLSAgU291cmNlTG9jYXRpb24gTG9jOwotCiBwdWJsaWM6Ci0gIENYWE51bGxQdHJMaXRlcmFsRXhwcihRdWFsVHlwZSBUeSwgU291cmNlTG9jYXRpb24gbCkKKyAgQ1hYTnVsbFB0ckxpdGVyYWxFeHByKFF1YWxUeXBlIFR5LCBTb3VyY2VMb2NhdGlvbiBMb2MpCiAgICAgICA6IEV4cHIoQ1hYTnVsbFB0ckxpdGVyYWxFeHByQ2xhc3MsIFR5LCBWS19SVmFsdWUsIE9LX09yZGluYXJ5LCBmYWxzZSwKLSAgICAgICAgICAgICBmYWxzZSwgZmFsc2UsIGZhbHNlKSwKLSAgICAgICAgTG9jKGwpIHt9CisgICAgICAgICAgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSkgeworICAgIENYWE51bGxQdHJMaXRlcmFsRXhwckJpdHMuTG9jID0gTG9jOworICB9CiAKICAgZXhwbGljaXQgQ1hYTnVsbFB0ckxpdGVyYWxFeHByKEVtcHR5U2hlbGwgRW1wdHkpCiAgICAgICA6IEV4cHIoQ1hYTnVsbFB0ckxpdGVyYWxFeHByQ2xhc3MsIEVtcHR5KSB7fQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBMb2M7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBMb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCB7IHJldHVybiBnZXRMb2NhdGlvbigpOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IHsgcmV0dXJuIGdldExvY2F0aW9uKCk7IH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIExvYzsgfQotICB2b2lkIHNldExvY2F0aW9uKFNvdXJjZUxvY2F0aW9uIEwpIHsgTG9jID0gTDsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIENYWE51bGxQdHJMaXRlcmFsRXhwckJpdHMuTG9jOyB9CisgIHZvaWQgc2V0TG9jYXRpb24oU291cmNlTG9jYXRpb24gTCkgeyBDWFhOdWxsUHRyTGl0ZXJhbEV4cHJCaXRzLkxvYyA9IEw7IH0KIAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFN0bXQgKlQpIHsKICAgICByZXR1cm4gVC0+Z2V0U3RtdENsYXNzKCkgPT0gQ1hYTnVsbFB0ckxpdGVyYWxFeHByQ2xhc3M7CkBAIC05NjQsMjkgKzk3MywyOCBAQAogLy8vIH07CiAvLy8gXGVuZGNvZGUKIGNsYXNzIENYWFRoaXNFeHByIDogcHVibGljIEV4cHIgewotICBTb3VyY2VMb2NhdGlvbiBMb2M7Ci0gIGJvb2wgSW1wbGljaXQgOiAxOwotCiBwdWJsaWM6Ci0gIENYWFRoaXNFeHByKFNvdXJjZUxvY2F0aW9uIEwsIFF1YWxUeXBlIFR5cGUsIGJvb2wgaXNJbXBsaWNpdCkKLSAgICAgIDogRXhwcihDWFhUaGlzRXhwckNsYXNzLCBUeXBlLCBWS19SVmFsdWUsIE9LX09yZGluYXJ5LAorICBDWFhUaGlzRXhwcihTb3VyY2VMb2NhdGlvbiBMLCBRdWFsVHlwZSBUeSwgYm9vbCBJc0ltcGxpY2l0KQorICAgICAgOiBFeHByKENYWFRoaXNFeHByQ2xhc3MsIFR5LCBWS19SVmFsdWUsIE9LX09yZGluYXJ5LAogICAgICAgICAgICAgIC8vICd0aGlzJyBpcyB0eXBlLWRlcGVuZGVudCBpZiB0aGUgY2xhc3MgdHlwZSBvZiB0aGUgZW5jbG9zaW5nCiAgICAgICAgICAgICAgLy8gbWVtYmVyIGZ1bmN0aW9uIGlzIGRlcGVuZGVudCAoQysrIFt0ZW1wLmRlcC5leHByXXAyKQotICAgICAgICAgICAgIFR5cGUtPmlzRGVwZW5kZW50VHlwZSgpLCBUeXBlLT5pc0RlcGVuZGVudFR5cGUoKSwKLSAgICAgICAgICAgICBUeXBlLT5pc0luc3RhbnRpYXRpb25EZXBlbmRlbnRUeXBlKCksCi0gICAgICAgICAgICAgLypDb250YWluc1VuZXhwYW5kZWRQYXJhbWV0ZXJQYWNrPSovZmFsc2UpLAotICAgICAgICBMb2MoTCksIEltcGxpY2l0KGlzSW1wbGljaXQpIHt9CisgICAgICAgICAgICAgVHktPmlzRGVwZW5kZW50VHlwZSgpLCBUeS0+aXNEZXBlbmRlbnRUeXBlKCksCisgICAgICAgICAgICAgVHktPmlzSW5zdGFudGlhdGlvbkRlcGVuZGVudFR5cGUoKSwKKyAgICAgICAgICAgICAvKkNvbnRhaW5zVW5leHBhbmRlZFBhcmFtZXRlclBhY2s9Ki9mYWxzZSkgeworICAgIENYWFRoaXNFeHByQml0cy5Jc0ltcGxpY2l0ID0gSXNJbXBsaWNpdDsKKyAgICBDWFhUaGlzRXhwckJpdHMuTG9jID0gTDsKKyAgfQogCiAgIENYWFRoaXNFeHByKEVtcHR5U2hlbGwgRW1wdHkpIDogRXhwcihDWFhUaGlzRXhwckNsYXNzLCBFbXB0eSkge30KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIExvYzsgfQotICB2b2lkIHNldExvY2F0aW9uKFNvdXJjZUxvY2F0aW9uIEwpIHsgTG9jID0gTDsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIENYWFRoaXNFeHByQml0cy5Mb2M7IH0KKyAgdm9pZCBzZXRMb2NhdGlvbihTb3VyY2VMb2NhdGlvbiBMKSB7IENYWFRoaXNFeHByQml0cy5Mb2MgPSBMOyB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIExvYzsgfQotICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIExvYzsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IHsgcmV0dXJuIGdldExvY2F0aW9uKCk7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgeyByZXR1cm4gZ2V0TG9jYXRpb24oKTsgfQogCi0gIGJvb2wgaXNJbXBsaWNpdCgpIGNvbnN0IHsgcmV0dXJuIEltcGxpY2l0OyB9Ci0gIHZvaWQgc2V0SW1wbGljaXQoYm9vbCBJKSB7IEltcGxpY2l0ID0gSTsgfQorICBib29sIGlzSW1wbGljaXQoKSBjb25zdCB7IHJldHVybiBDWFhUaGlzRXhwckJpdHMuSXNJbXBsaWNpdDsgfQorICB2b2lkIHNldEltcGxpY2l0KGJvb2wgSSkgeyBDWFhUaGlzRXhwckJpdHMuSXNJbXBsaWNpdCA9IEk7IH0KIAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFN0bXQgKlQpIHsKICAgICByZXR1cm4gVC0+Z2V0U3RtdENsYXNzKCkgPT0gQ1hYVGhpc0V4cHJDbGFzczsKQEAgLTEwMDYsNDIgKzEwMTQsNDMgQEAKIGNsYXNzIENYWFRocm93RXhwciA6IHB1YmxpYyBFeHByIHsKICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CiAKLSAgU3RtdCAqT3A7Ci0gIFNvdXJjZUxvY2F0aW9uIFRocm93TG9jOwotCi0gIC8vLyBXaGV0aGVyIHRoZSB0aHJvd24gdmFyaWFibGUgKGlmIGFueSkgaXMgaW4gc2NvcGUuCi0gIHVuc2lnbmVkIElzVGhyb3duVmFyaWFibGVJblNjb3BlIDogMTsKKyAgLy8vIFRoZSBvcHRpb25hbCBleHByZXNzaW9uIGluIHRoZSB0aHJvdyBzdGF0ZW1lbnQuCisgIFN0bXQgKk9wZXJhbmQ7CiAKIHB1YmxpYzoKICAgLy8gXHAgVHkgaXMgdGhlIHZvaWQgdHlwZSB3aGljaCBpcyB1c2VkIGFzIHRoZSByZXN1bHQgdHlwZSBvZiB0aGUKLSAgLy8gZXhwcmVzc2lvbi4gIFRoZSBccCBsIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgdGhyb3cga2V5d29yZC4gIFxwIGV4cHIKLSAgLy8gY2FuIGJ5IG51bGwsIGlmIHRoZSBvcHRpb25hbCBleHByZXNzaW9uIHRvIHRocm93IGlzbid0IHByZXNlbnQuCi0gIENYWFRocm93RXhwcihFeHByICpleHByLCBRdWFsVHlwZSBUeSwgU291cmNlTG9jYXRpb24gbCwKKyAgLy8gZXhwcmVzc2lvbi4gVGhlIFxwIExvYyBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIHRocm93IGtleXdvcmQuCisgIC8vIFxwIE9wZXJhbmQgaXMgdGhlIGV4cHJlc3Npb24gaW4gdGhlIHRocm93IHN0YXRlbWVudCwgYW5kIGNhbiBiZQorICAvLyBudWxsIGlmIG5vdCBwcmVzZW50LgorICBDWFhUaHJvd0V4cHIoRXhwciAqT3BlcmFuZCwgUXVhbFR5cGUgVHksIFNvdXJjZUxvY2F0aW9uIExvYywKICAgICAgICAgICAgICAgIGJvb2wgSXNUaHJvd25WYXJpYWJsZUluU2NvcGUpCiAgICAgICA6IEV4cHIoQ1hYVGhyb3dFeHByQ2xhc3MsIFR5LCBWS19SVmFsdWUsIE9LX09yZGluYXJ5LCBmYWxzZSwgZmFsc2UsCi0gICAgICAgICAgICAgZXhwciAmJiBleHByLT5pc0luc3RhbnRpYXRpb25EZXBlbmRlbnQoKSwKLSAgICAgICAgICAgICBleHByICYmIGV4cHItPmNvbnRhaW5zVW5leHBhbmRlZFBhcmFtZXRlclBhY2soKSksCi0gICAgICAgIE9wKGV4cHIpLCBUaHJvd0xvYyhsKSwKLSAgICAgICAgSXNUaHJvd25WYXJpYWJsZUluU2NvcGUoSXNUaHJvd25WYXJpYWJsZUluU2NvcGUpIHt9CisgICAgICAgICAgICAgT3BlcmFuZCAmJiBPcGVyYW5kLT5pc0luc3RhbnRpYXRpb25EZXBlbmRlbnQoKSwKKyAgICAgICAgICAgICBPcGVyYW5kICYmIE9wZXJhbmQtPmNvbnRhaW5zVW5leHBhbmRlZFBhcmFtZXRlclBhY2soKSksCisgICAgICAgIE9wZXJhbmQoT3BlcmFuZCkgeworICAgIENYWFRocm93RXhwckJpdHMuVGhyb3dMb2MgPSBMb2M7CisgICAgQ1hYVGhyb3dFeHByQml0cy5Jc1Rocm93blZhcmlhYmxlSW5TY29wZSA9IElzVGhyb3duVmFyaWFibGVJblNjb3BlOworICB9CiAgIENYWFRocm93RXhwcihFbXB0eVNoZWxsIEVtcHR5KSA6IEV4cHIoQ1hYVGhyb3dFeHByQ2xhc3MsIEVtcHR5KSB7fQogCi0gIGNvbnN0IEV4cHIgKmdldFN1YkV4cHIoKSBjb25zdCB7IHJldHVybiBjYXN0X29yX251bGw8RXhwcj4oT3ApOyB9Ci0gIEV4cHIgKmdldFN1YkV4cHIoKSB7IHJldHVybiBjYXN0X29yX251bGw8RXhwcj4oT3ApOyB9CisgIGNvbnN0IEV4cHIgKmdldFN1YkV4cHIoKSBjb25zdCB7IHJldHVybiBjYXN0X29yX251bGw8RXhwcj4oT3BlcmFuZCk7IH0KKyAgRXhwciAqZ2V0U3ViRXhwcigpIHsgcmV0dXJuIGNhc3Rfb3JfbnVsbDxFeHByPihPcGVyYW5kKTsgfQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldFRocm93TG9jKCkgY29uc3QgeyByZXR1cm4gVGhyb3dMb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0VGhyb3dMb2MoKSBjb25zdCB7IHJldHVybiBDWFhUaHJvd0V4cHJCaXRzLlRocm93TG9jOyB9CiAKICAgLy8vIERldGVybWluZXMgd2hldGhlciB0aGUgdmFyaWFibGUgdGhyb3duIGJ5IHRoaXMgZXhwcmVzc2lvbiAoaWYgYW55ISkKICAgLy8vIGlzIHdpdGhpbiB0aGUgaW5uZXJtb3N0IHRyeSBibG9jay4KICAgLy8vCiAgIC8vLyBUaGlzIGluZm9ybWF0aW9uIGlzIHJlcXVpcmVkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBOUlZPIGNhbiBhcHBseSB0bwogICAvLy8gdGhpcyB2YXJpYWJsZS4KLSAgYm9vbCBpc1Rocm93blZhcmlhYmxlSW5TY29wZSgpIGNvbnN0IHsgcmV0dXJuIElzVGhyb3duVmFyaWFibGVJblNjb3BlOyB9CisgIGJvb2wgaXNUaHJvd25WYXJpYWJsZUluU2NvcGUoKSBjb25zdCB7CisgICAgcmV0dXJuIENYWFRocm93RXhwckJpdHMuSXNUaHJvd25WYXJpYWJsZUluU2NvcGU7CisgIH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gVGhyb3dMb2M7IH0KLQorICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IHsgcmV0dXJuIGdldFRocm93TG9jKCk7IH0KICAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7CiAgICAgaWYgKCFnZXRTdWJFeHByKCkpCi0gICAgICByZXR1cm4gVGhyb3dMb2M7CisgICAgICByZXR1cm4gZ2V0VGhyb3dMb2MoKTsKICAgICByZXR1cm4gZ2V0U3ViRXhwcigpLT5nZXRFbmRMb2MoKTsKICAgfQogCkBAIC0xMDUxLDcgKzEwNjAsNyBAQAogCiAgIC8vIEl0ZXJhdG9ycwogICBjaGlsZF9yYW5nZSBjaGlsZHJlbigpIHsKLSAgICByZXR1cm4gY2hpbGRfcmFuZ2UoJk9wLCBPcCA/ICZPcCsxIDogJk9wKTsKKyAgICByZXR1cm4gY2hpbGRfcmFuZ2UoJk9wZXJhbmQsIE9wZXJhbmQgPyAmT3BlcmFuZCArIDEgOiAmT3BlcmFuZCk7CiAgIH0KIH07CiAKQEAgLTEwNjEsMjYgKzEwNzAsMjQgQEAKIC8vLyBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcidzIGRlZmF1bHQgYXJndW1lbnQsIHdoZW4gdGhlIGNhbGwgZGlkIG5vdAogLy8vIGV4cGxpY2l0bHkgc3VwcGx5IGFyZ3VtZW50cyBmb3IgYWxsIG9mIHRoZSBwYXJhbWV0ZXJzLgogY2xhc3MgQ1hYRGVmYXVsdEFyZ0V4cHIgZmluYWwgOiBwdWJsaWMgRXhwciB7CisgIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOworCiAgIC8vLyBUaGUgcGFyYW1ldGVyIHdob3NlIGRlZmF1bHQgaXMgYmVpbmcgdXNlZC4KICAgUGFybVZhckRlY2wgKlBhcmFtOwogCi0gIC8vLyBUaGUgbG9jYXRpb24gd2hlcmUgdGhlIGRlZmF1bHQgYXJndW1lbnQgZXhwcmVzc2lvbiB3YXMgdXNlZC4KLSAgU291cmNlTG9jYXRpb24gTG9jOwotCi0gIENYWERlZmF1bHRBcmdFeHByKFN0bXRDbGFzcyBTQywgU291cmNlTG9jYXRpb24gTG9jLCBQYXJtVmFyRGVjbCAqcGFyYW0pCisgIENYWERlZmF1bHRBcmdFeHByKFN0bXRDbGFzcyBTQywgU291cmNlTG9jYXRpb24gTG9jLCBQYXJtVmFyRGVjbCAqUGFyYW0pCiAgICAgICA6IEV4cHIoU0MsCi0gICAgICAgICAgICAgcGFyYW0tPmhhc1VucGFyc2VkRGVmYXVsdEFyZygpCi0gICAgICAgICAgICAgICA/IHBhcmFtLT5nZXRUeXBlKCkuZ2V0Tm9uUmVmZXJlbmNlVHlwZSgpCi0gICAgICAgICAgICAgICA6IHBhcmFtLT5nZXREZWZhdWx0QXJnKCktPmdldFR5cGUoKSwKLSAgICAgICAgICAgICBwYXJhbS0+Z2V0RGVmYXVsdEFyZygpLT5nZXRWYWx1ZUtpbmQoKSwKLSAgICAgICAgICAgICBwYXJhbS0+Z2V0RGVmYXVsdEFyZygpLT5nZXRPYmplY3RLaW5kKCksIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisgICAgICAgICAgICAgUGFyYW0tPmhhc1VucGFyc2VkRGVmYXVsdEFyZygpCisgICAgICAgICAgICAgICAgID8gUGFyYW0tPmdldFR5cGUoKS5nZXROb25SZWZlcmVuY2VUeXBlKCkKKyAgICAgICAgICAgICAgICAgOiBQYXJhbS0+Z2V0RGVmYXVsdEFyZygpLT5nZXRUeXBlKCksCisgICAgICAgICAgICAgUGFyYW0tPmdldERlZmF1bHRBcmcoKS0+Z2V0VmFsdWVLaW5kKCksCisgICAgICAgICAgICAgUGFyYW0tPmdldERlZmF1bHRBcmcoKS0+Z2V0T2JqZWN0S2luZCgpLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAogICAgICAgICAgICAgIGZhbHNlKSwKLSAgICAgICAgUGFyYW0ocGFyYW0pLCBMb2MoTG9jKSB7fQorICAgICAgICBQYXJhbShQYXJhbSkgeworICAgIENYWERlZmF1bHRBcmdFeHByQml0cy5Mb2MgPSBMb2M7CisgIH0KIAogcHVibGljOgotICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKLSAgZnJpZW5kIGNsYXNzIEFTVFN0bXRXcml0ZXI7Ci0KICAgQ1hYRGVmYXVsdEFyZ0V4cHIoRW1wdHlTaGVsbCBFbXB0eSkgOiBFeHByKENYWERlZmF1bHRBcmdFeHByQ2xhc3MsIEVtcHR5KSB7fQogCiAgIC8vIFxwIFBhcmFtIGlzIHRoZSBwYXJhbWV0ZXIgd2hvc2UgZGVmYXVsdCBhcmd1bWVudCBpcyB1c2VkIGJ5IHRoaXMKQEAgLTEwOTUsMjMgKzExMDIsMTggQEAKICAgUGFybVZhckRlY2wgKmdldFBhcmFtKCkgeyByZXR1cm4gUGFyYW07IH0KIAogICAvLyBSZXRyaWV2ZSB0aGUgYWN0dWFsIGFyZ3VtZW50IHRvIHRoZSBmdW5jdGlvbiBjYWxsLgotICBjb25zdCBFeHByICpnZXRFeHByKCkgY29uc3QgewotICAgIHJldHVybiBnZXRQYXJhbSgpLT5nZXREZWZhdWx0QXJnKCk7Ci0gIH0KLSAgRXhwciAqZ2V0RXhwcigpIHsKLSAgICByZXR1cm4gZ2V0UGFyYW0oKS0+Z2V0RGVmYXVsdEFyZygpOwotICB9CisgIGNvbnN0IEV4cHIgKmdldEV4cHIoKSBjb25zdCB7IHJldHVybiBnZXRQYXJhbSgpLT5nZXREZWZhdWx0QXJnKCk7IH0KKyAgRXhwciAqZ2V0RXhwcigpIHsgcmV0dXJuIGdldFBhcmFtKCktPmdldERlZmF1bHRBcmcoKTsgfQogCi0gIC8vLyBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gd2hlcmUgdGhpcyBkZWZhdWx0IGFyZ3VtZW50IHdhcyBhY3R1YWxseQotICAvLy8gdXNlZC4KLSAgU291cmNlTG9jYXRpb24gZ2V0VXNlZExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gTG9jOyB9CisgIC8vLyBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gd2hlcmUgdGhpcyBkZWZhdWx0IGFyZ3VtZW50IHdhcyBhY3R1YWxseSB1c2VkLgorICBTb3VyY2VMb2NhdGlvbiBnZXRVc2VkTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBDWFhEZWZhdWx0QXJnRXhwckJpdHMuTG9jOyB9CiAKICAgLy8vIERlZmF1bHQgYXJndW1lbnQgZXhwcmVzc2lvbnMgaGF2ZSBubyByZXByZXNlbnRhdGlvbiBpbiB0aGUKICAgLy8vIHNvdXJjZSwgc28gdGhleSBoYXZlIGFuIGVtcHR5IHNvdXJjZSByYW5nZS4KLSAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBTb3VyY2VMb2NhdGlvbigpOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgeyByZXR1cm4gU291cmNlTG9jYXRpb24oKTsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCB7IHJldHVybiBTb3VyY2VMb2NhdGlvbigpOyB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0RXhwckxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gTG9jOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEV4cHJMb2MoKSBjb25zdCB7IHJldHVybiBnZXRVc2VkTG9jYXRpb24oKTsgfQogCiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgU3RtdCAqVCkgewogICAgIHJldHVybiBULT5nZXRTdG10Q2xhc3MoKSA9PSBDWFhEZWZhdWx0QXJnRXhwckNsYXNzOwpAQCAtMTEzMiwyNiArMTEzNCwyMyBAQAogLy8vIChDKysxMSBbY2xhc3MuYmFzZS5pbml0XXA4KSBvciBpbiBhZ2dyZWdhdGUgaW5pdGlhbGl6YXRpb24KIC8vLyAoQysrMXkgW2RjbC5pbml0LmFnZ3JdcDcpLgogY2xhc3MgQ1hYRGVmYXVsdEluaXRFeHByIDogcHVibGljIEV4cHIgeworICBmcmllbmQgY2xhc3MgQVNUUmVhZGVyOworICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKKwogICAvLy8gVGhlIGZpZWxkIHdob3NlIGRlZmF1bHQgaXMgYmVpbmcgdXNlZC4KICAgRmllbGREZWNsICpGaWVsZDsKIAotICAvLy8gVGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBkZWZhdWx0IGluaXRpYWxpemVyIGV4cHJlc3Npb24gd2FzIHVzZWQuCi0gIFNvdXJjZUxvY2F0aW9uIExvYzsKLQotICBDWFhEZWZhdWx0SW5pdEV4cHIoY29uc3QgQVNUQ29udGV4dCAmQywgU291cmNlTG9jYXRpb24gTG9jLCBGaWVsZERlY2wgKkZpZWxkLAotICAgICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgVCk7CisgIENYWERlZmF1bHRJbml0RXhwcihjb25zdCBBU1RDb250ZXh0ICZDdHgsIFNvdXJjZUxvY2F0aW9uIExvYywKKyAgICAgICAgICAgICAgICAgICAgIEZpZWxkRGVjbCAqRmllbGQsIFF1YWxUeXBlIFR5KTsKIAogICBDWFhEZWZhdWx0SW5pdEV4cHIoRW1wdHlTaGVsbCBFbXB0eSkgOiBFeHByKENYWERlZmF1bHRJbml0RXhwckNsYXNzLCBFbXB0eSkge30KIAogcHVibGljOgotICBmcmllbmQgY2xhc3MgQVNUUmVhZGVyOwotICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKLQogICAvLy8gXHAgRmllbGQgaXMgdGhlIG5vbi1zdGF0aWMgZGF0YSBtZW1iZXIgd2hvc2UgZGVmYXVsdCBpbml0aWFsaXplciBpcyB1c2VkCiAgIC8vLyBieSB0aGlzIGV4cHJlc3Npb24uCi0gIHN0YXRpYyBDWFhEZWZhdWx0SW5pdEV4cHIgKkNyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDLCBTb3VyY2VMb2NhdGlvbiBMb2MsCisgIHN0YXRpYyBDWFhEZWZhdWx0SW5pdEV4cHIgKkNyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDdHgsIFNvdXJjZUxvY2F0aW9uIExvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkRGVjbCAqRmllbGQpIHsKLSAgICByZXR1cm4gbmV3IChDKSBDWFhEZWZhdWx0SW5pdEV4cHIoQywgTG9jLCBGaWVsZCwgRmllbGQtPmdldFR5cGUoKSk7CisgICAgcmV0dXJuIG5ldyAoQ3R4KSBDWFhEZWZhdWx0SW5pdEV4cHIoQ3R4LCBMb2MsIEZpZWxkLCBGaWVsZC0+Z2V0VHlwZSgpKTsKICAgfQogCiAgIC8vLyBHZXQgdGhlIGZpZWxkIHdob3NlIGluaXRpYWxpemVyIHdpbGwgYmUgdXNlZC4KQEAgLTExNjgsOCArMTE2Nyw4IEBACiAgICAgcmV0dXJuIEZpZWxkLT5nZXRJbkNsYXNzSW5pdGlhbGl6ZXIoKTsKICAgfQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBMb2M7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBMb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCB7IHJldHVybiBDWFhEZWZhdWx0SW5pdEV4cHJCaXRzLkxvYzsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCB7IHJldHVybiBDWFhEZWZhdWx0SW5pdEV4cHJCaXRzLkxvYzsgfQogCiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgU3RtdCAqVCkgewogICAgIHJldHVybiBULT5nZXRTdG10Q2xhc3MoKSA9PSBDWFhEZWZhdWx0SW5pdEV4cHJDbGFzczsKQEAgLTEyNjAsNiArMTI1OSw4IEBACiAKIC8vLyBSZXByZXNlbnRzIGEgY2FsbCB0byBhIEMrKyBjb25zdHJ1Y3Rvci4KIGNsYXNzIENYWENvbnN0cnVjdEV4cHIgOiBwdWJsaWMgRXhwciB7CisgIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOworCiBwdWJsaWM6CiAgIGVudW0gQ29uc3RydWN0aW9uS2luZCB7CiAgICAgQ0tfQ29tcGxldGUsCkBAIC0xMjY5LDk4ICsxMjcwLDExOSBAQAogICB9OwogCiBwcml2YXRlOgotICBDWFhDb25zdHJ1Y3RvckRlY2wgKkNvbnN0cnVjdG9yID0gbnVsbHB0cjsKLSAgU291cmNlTG9jYXRpb24gTG9jOwotICBTb3VyY2VSYW5nZSBQYXJlbk9yQnJhY2VSYW5nZTsKLSAgdW5zaWduZWQgTnVtQXJncyA6IDE2OwotICB1bnNpZ25lZCBFbGlkYWJsZSA6IDE7Ci0gIHVuc2lnbmVkIEhhZE11bHRpcGxlQ2FuZGlkYXRlcyA6IDE7Ci0gIHVuc2lnbmVkIExpc3RJbml0aWFsaXphdGlvbiA6IDE7Ci0gIHVuc2lnbmVkIFN0ZEluaXRMaXN0SW5pdGlhbGl6YXRpb24gOiAxOwotICB1bnNpZ25lZCBaZXJvSW5pdGlhbGl6YXRpb24gOiAxOwotICB1bnNpZ25lZCBDb25zdHJ1Y3RLaW5kIDogMjsKLSAgU3RtdCAqKkFyZ3MgPSBudWxscHRyOworICAvLy8gQSBwb2ludGVyIHRvIHRoZSBjb25zdHJ1Y3RvciB3aGljaCB3aWxsIGJlIHVsdGltYXRlbHkgY2FsbGVkLgorICBDWFhDb25zdHJ1Y3RvckRlY2wgKkNvbnN0cnVjdG9yOwogCi0gIHZvaWQgc2V0Q29uc3RydWN0b3IoQ1hYQ29uc3RydWN0b3JEZWNsICpDKSB7IENvbnN0cnVjdG9yID0gQzsgfQorICBTb3VyY2VSYW5nZSBQYXJlbk9yQnJhY2VSYW5nZTsKKworICAvLy8gVGhlIG51bWJlciBvZiBhcmd1bWVudHMuCisgIHVuc2lnbmVkIE51bUFyZ3M7CisKKyAgLy8gV2Ugd291bGQgbGlrZSB0byBzdGFzaCB0aGUgYXJndW1lbnRzIG9mIHRoZSBjb25zdHJ1Y3RvciBjYWxsIGFmdGVyCisgIC8vIENYWENvbnN0cnVjdEV4cHIuIEhvd2V2ZXIgQ1hYQ29uc3RydWN0RXhwciBpcyB1c2VkIGFzIGEgYmFzZSBjbGFzcyBvZgorICAvLyBDWFhUZW1wb3JhcnlPYmplY3RFeHByIHdoaWNoIG1ha2VzIHRoZSB1c2Ugb2YgbGx2bTo6VHJhaWxpbmdPYmplY3RzCisgIC8vIGltcG9zc2libGUuCisgIC8vCisgIC8vIEluc3RlYWQgd2UgbWFudWFsbHkgc3Rhc2ggdGhlIHRyYWlsaW5nIG9iamVjdCBhZnRlciB0aGUgZnVsbCBvYmplY3QKKyAgLy8gY29udGFpbmluZyBDWFhDb25zdHJ1Y3RFeHByICh0aGF0IGlzIGVpdGhlciBDWFhDb25zdHJ1Y3RFeHByIG9yCisgIC8vIENYWFRlbXBvcmFyeU9iamVjdEV4cHIpLgorICAvLworICAvLyBUaGUgdHJhaWxpbmcgb2JqZWN0cyBhcmU6CisgIC8vCisgIC8vICogQW4gYXJyYXkgb2YgZ2V0TnVtQXJncygpICJTdG10ICoiIGZvciB0aGUgYXJndW1lbnRzIG9mIHRoZQorICAvLyAgIGNvbnN0cnVjdG9yIGNhbGwuCisKKyAgLy8vIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0cmFpbGluZyBhcmd1bWVudHMuCisgIC8vLyBEZWZpbmVkIGp1c3QgYWZ0ZXIgQ1hYVGVtcG9yYXJ5T2JqZWN0RXhwci4KKyAgaW5saW5lIFN0bXQgKipnZXRUcmFpbGluZ0FyZ3MoKTsKKyAgY29uc3QgU3RtdCAqY29uc3QgKmdldFRyYWlsaW5nQXJncygpIGNvbnN0IHsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxDWFhDb25zdHJ1Y3RFeHByICo+KHRoaXMpLT5nZXRUcmFpbGluZ0FyZ3MoKTsKKyAgfQogCiBwcm90ZWN0ZWQ6Ci0gIENYWENvbnN0cnVjdEV4cHIoY29uc3QgQVNUQ29udGV4dCAmQywgU3RtdENsYXNzIFNDLCBRdWFsVHlwZSBULAotICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIExvYywKLSAgICAgICAgICAgICAgICAgICBDWFhDb25zdHJ1Y3RvckRlY2wgKkN0b3IsCi0gICAgICAgICAgICAgICAgICAgYm9vbCBFbGlkYWJsZSwKLSAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxFeHByICo+IEFyZ3MsCi0gICAgICAgICAgICAgICAgICAgYm9vbCBIYWRNdWx0aXBsZUNhbmRpZGF0ZXMsCi0gICAgICAgICAgICAgICAgICAgYm9vbCBMaXN0SW5pdGlhbGl6YXRpb24sCi0gICAgICAgICAgICAgICAgICAgYm9vbCBTdGRJbml0TGlzdEluaXRpYWxpemF0aW9uLAotICAgICAgICAgICAgICAgICAgIGJvb2wgWmVyb0luaXRpYWxpemF0aW9uLAotICAgICAgICAgICAgICAgICAgIENvbnN0cnVjdGlvbktpbmQgQ29uc3RydWN0S2luZCwKKyAgLy8vIEJ1aWxkIGEgQysrIGNvbnN0cnVjdGlvbiBleHByZXNzaW9uLgorICBDWFhDb25zdHJ1Y3RFeHByKFN0bXRDbGFzcyBTQywgUXVhbFR5cGUgVHksIFNvdXJjZUxvY2F0aW9uIExvYywKKyAgICAgICAgICAgICAgICAgICBDWFhDb25zdHJ1Y3RvckRlY2wgKkN0b3IsIGJvb2wgRWxpZGFibGUsCisgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8RXhwciAqPiBBcmdzLCBib29sIEhhZE11bHRpcGxlQ2FuZGlkYXRlcywKKyAgICAgICAgICAgICAgICAgICBib29sIExpc3RJbml0aWFsaXphdGlvbiwgYm9vbCBTdGRJbml0TGlzdEluaXRpYWxpemF0aW9uLAorICAgICAgICAgICAgICAgICAgIGJvb2wgWmVyb0luaXRpYWxpemF0aW9uLCBDb25zdHJ1Y3Rpb25LaW5kIENvbnN0cnVjdEtpbmQsCiAgICAgICAgICAgICAgICAgICAgU291cmNlUmFuZ2UgUGFyZW5PckJyYWNlUmFuZ2UpOwogCi0gIC8vLyBDb25zdHJ1Y3QgYW4gZW1wdHkgQysrIGNvbnN0cnVjdGlvbiBleHByZXNzaW9uLgotICBDWFhDb25zdHJ1Y3RFeHByKFN0bXRDbGFzcyBTQywgRW1wdHlTaGVsbCBFbXB0eSkKLSAgICAgIDogRXhwcihTQywgRW1wdHkpLCBOdW1BcmdzKDApLCBFbGlkYWJsZShmYWxzZSksCi0gICAgICAgIEhhZE11bHRpcGxlQ2FuZGlkYXRlcyhmYWxzZSksIExpc3RJbml0aWFsaXphdGlvbihmYWxzZSksCi0gICAgICAgIFplcm9Jbml0aWFsaXphdGlvbihmYWxzZSksIENvbnN0cnVjdEtpbmQoMCkge30KKyAgLy8vIEJ1aWxkIGFuIGVtcHR5IEMrKyBjb25zdHJ1Y3Rpb24gZXhwcmVzc2lvbi4KKyAgQ1hYQ29uc3RydWN0RXhwcihTdG10Q2xhc3MgU0MsIEVtcHR5U2hlbGwgRW1wdHksIHVuc2lnbmVkIE51bUFyZ3MpOworCisgIC8vLyBSZXR1cm4gdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHRyYWlsaW5nIG9iamVjdHMuIFVzZWQgYnkKKyAgLy8vIENYWFRlbXBvcmFyeU9iamVjdEV4cHIgdG8gYWxsb2NhdGUgdGhlIHJpZ2h0IGFtb3VudCBvZiBzdG9yYWdlLgorICBzdGF0aWMgdW5zaWduZWQgc2l6ZU9mVHJhaWxpbmdPYmplY3RzKHVuc2lnbmVkIE51bUFyZ3MpIHsKKyAgICByZXR1cm4gTnVtQXJncyAqIHNpemVvZihTdG10ICopOworICB9CiAKIHB1YmxpYzoKLSAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgIC8vLyBDcmVhdGUgYSBDKysgY29uc3RydWN0aW9uIGV4cHJlc3Npb24uCisgIHN0YXRpYyBDWFhDb25zdHJ1Y3RFeHByICoKKyAgQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkN0eCwgUXVhbFR5cGUgVHksIFNvdXJjZUxvY2F0aW9uIExvYywKKyAgICAgICAgIENYWENvbnN0cnVjdG9yRGVjbCAqQ3RvciwgYm9vbCBFbGlkYWJsZSwgQXJyYXlSZWY8RXhwciAqPiBBcmdzLAorICAgICAgICAgYm9vbCBIYWRNdWx0aXBsZUNhbmRpZGF0ZXMsIGJvb2wgTGlzdEluaXRpYWxpemF0aW9uLAorICAgICAgICAgYm9vbCBTdGRJbml0TGlzdEluaXRpYWxpemF0aW9uLCBib29sIFplcm9Jbml0aWFsaXphdGlvbiwKKyAgICAgICAgIENvbnN0cnVjdGlvbktpbmQgQ29uc3RydWN0S2luZCwgU291cmNlUmFuZ2UgUGFyZW5PckJyYWNlUmFuZ2UpOwogCi0gIC8vLyBDb25zdHJ1Y3QgYW4gZW1wdHkgQysrIGNvbnN0cnVjdGlvbiBleHByZXNzaW9uLgotICBleHBsaWNpdCBDWFhDb25zdHJ1Y3RFeHByKEVtcHR5U2hlbGwgRW1wdHkpCi0gICAgICA6IENYWENvbnN0cnVjdEV4cHIoQ1hYQ29uc3RydWN0RXhwckNsYXNzLCBFbXB0eSkge30KLQotICBzdGF0aWMgQ1hYQ29uc3RydWN0RXhwciAqQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkMsIFF1YWxUeXBlIFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENYWENvbnN0cnVjdG9yRGVjbCAqQ3RvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIEVsaWRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEV4cHIgKj4gQXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIEhhZE11bHRpcGxlQ2FuZGlkYXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIExpc3RJbml0aWFsaXphdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFN0ZEluaXRMaXN0SW5pdGlhbGl6YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBaZXJvSW5pdGlhbGl6YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RydWN0aW9uS2luZCBDb25zdHJ1Y3RLaW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZVJhbmdlIFBhcmVuT3JCcmFjZVJhbmdlKTsKKyAgLy8vIENyZWF0ZSBhbiBlbXB0eSBDKysgY29uc3RydWN0aW9uIGV4cHJlc3Npb24uCisgIHN0YXRpYyBDWFhDb25zdHJ1Y3RFeHByICpDcmVhdGVFbXB0eShjb25zdCBBU1RDb250ZXh0ICZDdHgsIHVuc2lnbmVkIE51bUFyZ3MpOwogCiAgIC8vLyBHZXQgdGhlIGNvbnN0cnVjdG9yIHRoYXQgdGhpcyBleHByZXNzaW9uIHdpbGwgKHVsdGltYXRlbHkpIGNhbGwuCiAgIENYWENvbnN0cnVjdG9yRGVjbCAqZ2V0Q29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBDb25zdHJ1Y3RvcjsgfQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gTG9jOyB9Ci0gIHZvaWQgc2V0TG9jYXRpb24oU291cmNlTG9jYXRpb24gTG9jKSB7IHRoaXMtPkxvYyA9IExvYzsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIENYWENvbnN0cnVjdEV4cHJCaXRzLkxvYzsgfQorICB2b2lkIHNldExvY2F0aW9uKFNvdXJjZUxvY2F0aW9uIExvYykgeyBDWFhDb25zdHJ1Y3RFeHByQml0cy5Mb2MgPSBMb2M7IH0KIAogICAvLy8gV2hldGhlciB0aGlzIGNvbnN0cnVjdGlvbiBpcyBlbGlkYWJsZS4KLSAgYm9vbCBpc0VsaWRhYmxlKCkgY29uc3QgeyByZXR1cm4gRWxpZGFibGU7IH0KLSAgdm9pZCBzZXRFbGlkYWJsZShib29sIEUpIHsgRWxpZGFibGUgPSBFOyB9CisgIGJvb2wgaXNFbGlkYWJsZSgpIGNvbnN0IHsgcmV0dXJuIENYWENvbnN0cnVjdEV4cHJCaXRzLkVsaWRhYmxlOyB9CisgIHZvaWQgc2V0RWxpZGFibGUoYm9vbCBFKSB7IENYWENvbnN0cnVjdEV4cHJCaXRzLkVsaWRhYmxlID0gRTsgfQogCiAgIC8vLyBXaGV0aGVyIHRoZSByZWZlcnJlZCBjb25zdHJ1Y3RvciB3YXMgcmVzb2x2ZWQgZnJvbQogICAvLy8gYW4gb3ZlcmxvYWRlZCBzZXQgaGF2aW5nIHNpemUgZ3JlYXRlciB0aGFuIDEuCi0gIGJvb2wgaGFkTXVsdGlwbGVDYW5kaWRhdGVzKCkgY29uc3QgeyByZXR1cm4gSGFkTXVsdGlwbGVDYW5kaWRhdGVzOyB9Ci0gIHZvaWQgc2V0SGFkTXVsdGlwbGVDYW5kaWRhdGVzKGJvb2wgVikgeyBIYWRNdWx0aXBsZUNhbmRpZGF0ZXMgPSBWOyB9CisgIGJvb2wgaGFkTXVsdGlwbGVDYW5kaWRhdGVzKCkgY29uc3QgeworICAgIHJldHVybiBDWFhDb25zdHJ1Y3RFeHByQml0cy5IYWRNdWx0aXBsZUNhbmRpZGF0ZXM7CisgIH0KKyAgdm9pZCBzZXRIYWRNdWx0aXBsZUNhbmRpZGF0ZXMoYm9vbCBWKSB7CisgICAgQ1hYQ29uc3RydWN0RXhwckJpdHMuSGFkTXVsdGlwbGVDYW5kaWRhdGVzID0gVjsKKyAgfQogCiAgIC8vLyBXaGV0aGVyIHRoaXMgY29uc3RydWN0b3IgY2FsbCB3YXMgd3JpdHRlbiBhcyBsaXN0LWluaXRpYWxpemF0aW9uLgotICBib29sIGlzTGlzdEluaXRpYWxpemF0aW9uKCkgY29uc3QgeyByZXR1cm4gTGlzdEluaXRpYWxpemF0aW9uOyB9Ci0gIHZvaWQgc2V0TGlzdEluaXRpYWxpemF0aW9uKGJvb2wgVikgeyBMaXN0SW5pdGlhbGl6YXRpb24gPSBWOyB9CisgIGJvb2wgaXNMaXN0SW5pdGlhbGl6YXRpb24oKSBjb25zdCB7CisgICAgcmV0dXJuIENYWENvbnN0cnVjdEV4cHJCaXRzLkxpc3RJbml0aWFsaXphdGlvbjsKKyAgfQorICB2b2lkIHNldExpc3RJbml0aWFsaXphdGlvbihib29sIFYpIHsKKyAgICBDWFhDb25zdHJ1Y3RFeHByQml0cy5MaXN0SW5pdGlhbGl6YXRpb24gPSBWOworICB9CiAKICAgLy8vIFdoZXRoZXIgdGhpcyBjb25zdHJ1Y3RvciBjYWxsIHdhcyB3cml0dGVuIGFzIGxpc3QtaW5pdGlhbGl6YXRpb24sCiAgIC8vLyBidXQgd2FzIGludGVycHJldGVkIGFzIGZvcm1pbmcgYSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gZnJvbSB0aGUgbGlzdAogICAvLy8gYW5kIHBhc3NpbmcgdGhhdCBhcyBhIHNpbmdsZSBjb25zdHJ1Y3RvciBhcmd1bWVudC4KICAgLy8vIFNlZSBDKysxMSBbb3Zlci5tYXRjaC5saXN0XXAxIGJ1bGxldCAxLgotICBib29sIGlzU3RkSW5pdExpc3RJbml0aWFsaXphdGlvbigpIGNvbnN0IHsgcmV0dXJuIFN0ZEluaXRMaXN0SW5pdGlhbGl6YXRpb247IH0KLSAgdm9pZCBzZXRTdGRJbml0TGlzdEluaXRpYWxpemF0aW9uKGJvb2wgVikgeyBTdGRJbml0TGlzdEluaXRpYWxpemF0aW9uID0gVjsgfQorICBib29sIGlzU3RkSW5pdExpc3RJbml0aWFsaXphdGlvbigpIGNvbnN0IHsKKyAgICByZXR1cm4gQ1hYQ29uc3RydWN0RXhwckJpdHMuU3RkSW5pdExpc3RJbml0aWFsaXphdGlvbjsKKyAgfQorICB2b2lkIHNldFN0ZEluaXRMaXN0SW5pdGlhbGl6YXRpb24oYm9vbCBWKSB7CisgICAgQ1hYQ29uc3RydWN0RXhwckJpdHMuU3RkSW5pdExpc3RJbml0aWFsaXphdGlvbiA9IFY7CisgIH0KIAogICAvLy8gV2hldGhlciB0aGlzIGNvbnN0cnVjdGlvbiBmaXJzdCByZXF1aXJlcwogICAvLy8gemVyby1pbml0aWFsaXphdGlvbiBiZWZvcmUgdGhlIGluaXRpYWxpemVyIGlzIGNhbGxlZC4KLSAgYm9vbCByZXF1aXJlc1plcm9Jbml0aWFsaXphdGlvbigpIGNvbnN0IHsgcmV0dXJuIFplcm9Jbml0aWFsaXphdGlvbjsgfQorICBib29sIHJlcXVpcmVzWmVyb0luaXRpYWxpemF0aW9uKCkgY29uc3QgeworICAgIHJldHVybiBDWFhDb25zdHJ1Y3RFeHByQml0cy5aZXJvSW5pdGlhbGl6YXRpb247CisgIH0KICAgdm9pZCBzZXRSZXF1aXJlc1plcm9Jbml0aWFsaXphdGlvbihib29sIFplcm9Jbml0KSB7Ci0gICAgWmVyb0luaXRpYWxpemF0aW9uID0gWmVyb0luaXQ7CisgICAgQ1hYQ29uc3RydWN0RXhwckJpdHMuWmVyb0luaXRpYWxpemF0aW9uID0gWmVyb0luaXQ7CiAgIH0KIAogICAvLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBjb25zdHJ1Y3RvciBpcyBhY3R1YWxseSBjb25zdHJ1Y3RpbmcKICAgLy8vIGEgYmFzZSBjbGFzcyAocmF0aGVyIHRoYW4gYSBjb21wbGV0ZSBvYmplY3QpLgogICBDb25zdHJ1Y3Rpb25LaW5kIGdldENvbnN0cnVjdGlvbktpbmQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIChDb25zdHJ1Y3Rpb25LaW5kKUNvbnN0cnVjdEtpbmQ7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdGlvbktpbmQ+KENYWENvbnN0cnVjdEV4cHJCaXRzLkNvbnN0cnVjdGlvbktpbmQpOwogICB9CiAgIHZvaWQgc2V0Q29uc3RydWN0aW9uS2luZChDb25zdHJ1Y3Rpb25LaW5kIENLKSB7Ci0gICAgQ29uc3RydWN0S2luZCA9IENLOworICAgIENYWENvbnN0cnVjdEV4cHJCaXRzLkNvbnN0cnVjdGlvbktpbmQgPSBDSzsKICAgfQogCiAgIHVzaW5nIGFyZ19pdGVyYXRvciA9IEV4cHJJdGVyYXRvcjsKQEAgLTEzNzMsMzEgKzEzOTUsMzMgQEAKICAgICByZXR1cm4gY29uc3RfYXJnX3JhbmdlKGFyZ19iZWdpbigpLCBhcmdfZW5kKCkpOwogICB9CiAKLSAgYXJnX2l0ZXJhdG9yIGFyZ19iZWdpbigpIHsgcmV0dXJuIEFyZ3M7IH0KLSAgYXJnX2l0ZXJhdG9yIGFyZ19lbmQoKSB7IHJldHVybiBBcmdzICsgTnVtQXJnczsgfQotICBjb25zdF9hcmdfaXRlcmF0b3IgYXJnX2JlZ2luKCkgY29uc3QgeyByZXR1cm4gQXJnczsgfQotICBjb25zdF9hcmdfaXRlcmF0b3IgYXJnX2VuZCgpIGNvbnN0IHsgcmV0dXJuIEFyZ3MgKyBOdW1BcmdzOyB9CisgIGFyZ19pdGVyYXRvciBhcmdfYmVnaW4oKSB7IHJldHVybiBnZXRUcmFpbGluZ0FyZ3MoKTsgfQorICBhcmdfaXRlcmF0b3IgYXJnX2VuZCgpIHsgcmV0dXJuIGFyZ19iZWdpbigpICsgZ2V0TnVtQXJncygpOyB9CisgIGNvbnN0X2FyZ19pdGVyYXRvciBhcmdfYmVnaW4oKSBjb25zdCB7IHJldHVybiBnZXRUcmFpbGluZ0FyZ3MoKTsgfQorICBjb25zdF9hcmdfaXRlcmF0b3IgYXJnX2VuZCgpIGNvbnN0IHsgcmV0dXJuIGFyZ19iZWdpbigpICsgZ2V0TnVtQXJncygpOyB9CiAKLSAgRXhwciAqKmdldEFyZ3MoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEV4cHIgKio+KEFyZ3MpOyB9CisgIEV4cHIgKipnZXRBcmdzKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeHByICoqPihnZXRUcmFpbGluZ0FyZ3MoKSk7IH0KICAgY29uc3QgRXhwciAqY29uc3QgKmdldEFyZ3MoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q1hYQ29uc3RydWN0RXhwciAqPih0aGlzKS0+Z2V0QXJncygpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEV4cHIgKmNvbnN0ICo+KGdldFRyYWlsaW5nQXJncygpKTsKICAgfQorCisgIC8vLyBSZXR1cm4gdGhlIG51bWJlciBvZiBhcmd1bWVudHMgdG8gdGhlIGNvbnN0cnVjdG9yIGNhbGwuCiAgIHVuc2lnbmVkIGdldE51bUFyZ3MoKSBjb25zdCB7IHJldHVybiBOdW1BcmdzOyB9CiAKICAgLy8vIFJldHVybiB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50LgogICBFeHByICpnZXRBcmcodW5zaWduZWQgQXJnKSB7Ci0gICAgYXNzZXJ0KEFyZyA8IE51bUFyZ3MgJiYgIkFyZyBhY2Nlc3Mgb3V0IG9mIHJhbmdlISIpOwotICAgIHJldHVybiBjYXN0PEV4cHI+KEFyZ3NbQXJnXSk7CisgICAgYXNzZXJ0KEFyZyA8IGdldE51bUFyZ3MoKSAmJiAiQXJnIGFjY2VzcyBvdXQgb2YgcmFuZ2UhIik7CisgICAgcmV0dXJuIGdldEFyZ3MoKVtBcmddOwogICB9CiAgIGNvbnN0IEV4cHIgKmdldEFyZyh1bnNpZ25lZCBBcmcpIGNvbnN0IHsKLSAgICBhc3NlcnQoQXJnIDwgTnVtQXJncyAmJiAiQXJnIGFjY2VzcyBvdXQgb2YgcmFuZ2UhIik7Ci0gICAgcmV0dXJuIGNhc3Q8RXhwcj4oQXJnc1tBcmddKTsKKyAgICBhc3NlcnQoQXJnIDwgZ2V0TnVtQXJncygpICYmICJBcmcgYWNjZXNzIG91dCBvZiByYW5nZSEiKTsKKyAgICByZXR1cm4gZ2V0QXJncygpW0FyZ107CiAgIH0KIAogICAvLy8gU2V0IHRoZSBzcGVjaWZpZWQgYXJndW1lbnQuCiAgIHZvaWQgc2V0QXJnKHVuc2lnbmVkIEFyZywgRXhwciAqQXJnRXhwcikgewotICAgIGFzc2VydChBcmcgPCBOdW1BcmdzICYmICJBcmcgYWNjZXNzIG91dCBvZiByYW5nZSEiKTsKLSAgICBBcmdzW0FyZ10gPSBBcmdFeHByOworICAgIGFzc2VydChBcmcgPCBnZXROdW1BcmdzKCkgJiYgIkFyZyBhY2Nlc3Mgb3V0IG9mIHJhbmdlISIpOworICAgIGdldEFyZ3MoKVtBcmddID0gQXJnRXhwcjsKICAgfQogCiAgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWTsKQEAgLTE0MDcsMTIgKzE0MzEsMTIgQEAKIAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFN0bXQgKlQpIHsKICAgICByZXR1cm4gVC0+Z2V0U3RtdENsYXNzKCkgPT0gQ1hYQ29uc3RydWN0RXhwckNsYXNzIHx8Ci0gICAgICBULT5nZXRTdG10Q2xhc3MoKSA9PSBDWFhUZW1wb3JhcnlPYmplY3RFeHByQ2xhc3M7CisgICAgICAgICAgIFQtPmdldFN0bXRDbGFzcygpID09IENYWFRlbXBvcmFyeU9iamVjdEV4cHJDbGFzczsKICAgfQogCiAgIC8vIEl0ZXJhdG9ycwogICBjaGlsZF9yYW5nZSBjaGlsZHJlbigpIHsKLSAgICByZXR1cm4gY2hpbGRfcmFuZ2UoJkFyZ3NbMF0sICZBcmdzWzBdK051bUFyZ3MpOworICAgIHJldHVybiBjaGlsZF9yYW5nZShnZXRUcmFpbGluZ0FyZ3MoKSwgZ2V0VHJhaWxpbmdBcmdzKCkgKyBnZXROdW1BcmdzKCkpOwogICB9CiB9OwogCkBAIC0xNDkzLDggKzE1MTcsNyBAQAogLy8vIFxlbmRjb2RlCiBjbGFzcyBDWFhGdW5jdGlvbmFsQ2FzdEV4cHIgZmluYWwKICAgICA6IHB1YmxpYyBFeHBsaWNpdENhc3RFeHByLAotICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8Ci0gICAgICAgICAgQ1hYRnVuY3Rpb25hbENhc3RFeHByLCBDYXN0RXhwcjo6QmFzZVBhdGhTaXplVHksIENYWEJhc2VTcGVjaWZpZXIgKj4geworICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8Q1hYRnVuY3Rpb25hbENhc3RFeHByLCBDWFhCYXNlU3BlY2lmaWVyICo+IHsKICAgU291cmNlTG9jYXRpb24gTFBhcmVuTG9jOwogICBTb3VyY2VMb2NhdGlvbiBSUGFyZW5Mb2M7CiAKQEAgLTE1MDksMTAgKzE1MzIsNiBAQAogICBleHBsaWNpdCBDWFhGdW5jdGlvbmFsQ2FzdEV4cHIoRW1wdHlTaGVsbCBTaGVsbCwgdW5zaWduZWQgUGF0aFNpemUpCiAgICAgICA6IEV4cGxpY2l0Q2FzdEV4cHIoQ1hYRnVuY3Rpb25hbENhc3RFeHByQ2xhc3MsIFNoZWxsLCBQYXRoU2l6ZSkge30KIAotICBzaXplX3QgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2FkVG9rZW48Q2FzdEV4cHI6OkJhc2VQYXRoU2l6ZVR5PikgY29uc3QgewotICAgIHJldHVybiBwYXRoX2VtcHR5KCkgPyAwIDogMTsKLSAgfQotCiBwdWJsaWM6CiAgIGZyaWVuZCBjbGFzcyBDYXN0RXhwcjsKICAgZnJpZW5kIFRyYWlsaW5nT2JqZWN0czsKQEAgLTE1NTgsMjYgKzE1NzcsMzYgQEAKIC8vLyAgIHJldHVybiBYKDEsIDMuMTRmKTsgLy8gY3JlYXRlcyBhIENYWFRlbXBvcmFyeU9iamVjdEV4cHIKIC8vLyB9OwogLy8vIFxlbmRjb2RlCi1jbGFzcyBDWFhUZW1wb3JhcnlPYmplY3RFeHByIDogcHVibGljIENYWENvbnN0cnVjdEV4cHIgewotICBUeXBlU291cmNlSW5mbyAqVHlwZSA9IG51bGxwdHI7Ci0KLXB1YmxpYzoKK2NsYXNzIENYWFRlbXBvcmFyeU9iamVjdEV4cHIgZmluYWwgOiBwdWJsaWMgQ1hYQ29uc3RydWN0RXhwciB7CiAgIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOwogCi0gIENYWFRlbXBvcmFyeU9iamVjdEV4cHIoY29uc3QgQVNUQ29udGV4dCAmQywKLSAgICAgICAgICAgICAgICAgICAgICAgICBDWFhDb25zdHJ1Y3RvckRlY2wgKkNvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlU291cmNlSW5mbyAqVFNJLAotICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEV4cHIgKj4gQXJncywKKyAgLy8gQ1hYVGVtcG9yYXJ5T2JqZWN0RXhwciBoYXMgc29tZSB0cmFpbGluZyBvYmplY3RzIGJlbG9uZ2luZworICAvLyB0byBDWFhDb25zdHJ1Y3RFeHByLiBTZWUgdGhlIGNvbW1lbnQgaW5zaWRlIENYWENvbnN0cnVjdEV4cHIKKyAgLy8gZm9yIG1vcmUgZGV0YWlscy4KKworICBUeXBlU291cmNlSW5mbyAqVFNJOworCisgIENYWFRlbXBvcmFyeU9iamVjdEV4cHIoQ1hYQ29uc3RydWN0b3JEZWNsICpDb25zLCBRdWFsVHlwZSBUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlU291cmNlSW5mbyAqVFNJLCBBcnJheVJlZjxFeHByICo+IEFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlUmFuZ2UgUGFyZW5PckJyYWNlUmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBIYWRNdWx0aXBsZUNhbmRpZGF0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBMaXN0SW5pdGlhbGl6YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBIYWRNdWx0aXBsZUNhbmRpZGF0ZXMsIGJvb2wgTGlzdEluaXRpYWxpemF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgU3RkSW5pdExpc3RJbml0aWFsaXphdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFplcm9Jbml0aWFsaXphdGlvbik7Ci0gIGV4cGxpY2l0IENYWFRlbXBvcmFyeU9iamVjdEV4cHIoRW1wdHlTaGVsbCBFbXB0eSkKLSAgICAgIDogQ1hYQ29uc3RydWN0RXhwcihDWFhUZW1wb3JhcnlPYmplY3RFeHByQ2xhc3MsIEVtcHR5KSB7fQogCi0gIFR5cGVTb3VyY2VJbmZvICpnZXRUeXBlU291cmNlSW5mbygpIGNvbnN0IHsgcmV0dXJuIFR5cGU7IH0KKyAgQ1hYVGVtcG9yYXJ5T2JqZWN0RXhwcihFbXB0eVNoZWxsIEVtcHR5LCB1bnNpZ25lZCBOdW1BcmdzKTsKKworcHVibGljOgorICBzdGF0aWMgQ1hYVGVtcG9yYXJ5T2JqZWN0RXhwciAqCisgIENyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDdHgsIENYWENvbnN0cnVjdG9yRGVjbCAqQ29ucywgUXVhbFR5cGUgVHksCisgICAgICAgICBUeXBlU291cmNlSW5mbyAqVFNJLCBBcnJheVJlZjxFeHByICo+IEFyZ3MsCisgICAgICAgICBTb3VyY2VSYW5nZSBQYXJlbk9yQnJhY2VSYW5nZSwgYm9vbCBIYWRNdWx0aXBsZUNhbmRpZGF0ZXMsCisgICAgICAgICBib29sIExpc3RJbml0aWFsaXphdGlvbiwgYm9vbCBTdGRJbml0TGlzdEluaXRpYWxpemF0aW9uLAorICAgICAgICAgYm9vbCBaZXJvSW5pdGlhbGl6YXRpb24pOworCisgIHN0YXRpYyBDWFhUZW1wb3JhcnlPYmplY3RFeHByICpDcmVhdGVFbXB0eShjb25zdCBBU1RDb250ZXh0ICZDdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBOdW1BcmdzKTsKKworICBUeXBlU291cmNlSW5mbyAqZ2V0VHlwZVNvdXJjZUluZm8oKSBjb25zdCB7IHJldHVybiBUU0k7IH0KIAogICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFk7CiAgIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFk7CkBAIC0xNTg3LDYgKzE2MTYsMTQgQEAKICAgfQogfTsKIAorU3RtdCAqKkNYWENvbnN0cnVjdEV4cHI6OmdldFRyYWlsaW5nQXJncygpIHsKKyAgaWYgKGF1dG8gKkUgPSBkeW5fY2FzdDxDWFhUZW1wb3JhcnlPYmplY3RFeHByPih0aGlzKSkKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTdG10ICoqPihFICsgMSk7CisgIGFzc2VydCgoZ2V0U3RtdENsYXNzKCkgPT0gQ1hYQ29uc3RydWN0RXhwckNsYXNzKSAmJgorICAgICAgICAgIlVuZXhwZWN0ZWQgY2xhc3MgZGVyaXZpbmcgZnJvbSBDWFhDb25zdHJ1Y3RFeHByISIpOworICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTdG10ICoqPih0aGlzICsgMSk7Cit9CisKIC8vLyBBIEMrKyBsYW1iZGEgZXhwcmVzc2lvbiwgd2hpY2ggcHJvZHVjZXMgYSBmdW5jdGlvbiBvYmplY3QKIC8vLyAob2YgdW5zcGVjaWZpZWQgdHlwZSkgdGhhdCBjYW4gYmUgaW52b2tlZCBsYXRlci4KIC8vLwpAQCAtMTgzMywxOCArMTg3MCwxOSBAQAogY2xhc3MgQ1hYU2NhbGFyVmFsdWVJbml0RXhwciA6IHB1YmxpYyBFeHByIHsKICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CiAKLSAgU291cmNlTG9jYXRpb24gUlBhcmVuTG9jOwogICBUeXBlU291cmNlSW5mbyAqVHlwZUluZm87CiAKIHB1YmxpYzoKICAgLy8vIENyZWF0ZSBhbiBleHBsaWNpdGx5LXdyaXR0ZW4gc2NhbGFyLXZhbHVlIGluaXRpYWxpemF0aW9uCiAgIC8vLyBleHByZXNzaW9uLgogICBDWFhTY2FsYXJWYWx1ZUluaXRFeHByKFF1YWxUeXBlIFR5cGUsIFR5cGVTb3VyY2VJbmZvICpUeXBlSW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiByUGFyZW5Mb2MpCi0gICAgICA6IEV4cHIoQ1hYU2NhbGFyVmFsdWVJbml0RXhwckNsYXNzLCBUeXBlLCBWS19SVmFsdWUsIE9LX09yZGluYXJ5LAotICAgICAgICAgICAgIGZhbHNlLCBmYWxzZSwgVHlwZS0+aXNJbnN0YW50aWF0aW9uRGVwZW5kZW50VHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFJQYXJlbkxvYykKKyAgICAgIDogRXhwcihDWFhTY2FsYXJWYWx1ZUluaXRFeHByQ2xhc3MsIFR5cGUsIFZLX1JWYWx1ZSwgT0tfT3JkaW5hcnksIGZhbHNlLAorICAgICAgICAgICAgIGZhbHNlLCBUeXBlLT5pc0luc3RhbnRpYXRpb25EZXBlbmRlbnRUeXBlKCksCiAgICAgICAgICAgICAgVHlwZS0+Y29udGFpbnNVbmV4cGFuZGVkUGFyYW1ldGVyUGFjaygpKSwKLSAgICAgICAgUlBhcmVuTG9jKHJQYXJlbkxvYyksIFR5cGVJbmZvKFR5cGVJbmZvKSB7fQorICAgICAgICBUeXBlSW5mbyhUeXBlSW5mbykgeworICAgIENYWFNjYWxhclZhbHVlSW5pdEV4cHJCaXRzLlJQYXJlbkxvYyA9IFJQYXJlbkxvYzsKKyAgfQogCiAgIGV4cGxpY2l0IENYWFNjYWxhclZhbHVlSW5pdEV4cHIoRW1wdHlTaGVsbCBTaGVsbCkKICAgICAgIDogRXhwcihDWFhTY2FsYXJWYWx1ZUluaXRFeHByQ2xhc3MsIFNoZWxsKSB7fQpAQCAtMTg1MywxMCArMTg5MSwxMiBAQAogICAgIHJldHVybiBUeXBlSW5mbzsKICAgfQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldFJQYXJlbkxvYygpIGNvbnN0IHsgcmV0dXJuIFJQYXJlbkxvYzsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRSUGFyZW5Mb2MoKSBjb25zdCB7CisgICAgcmV0dXJuIENYWFNjYWxhclZhbHVlSW5pdEV4cHJCaXRzLlJQYXJlbkxvYzsKKyAgfQogCiAgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWTsKLSAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBSUGFyZW5Mb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgeyByZXR1cm4gZ2V0UlBhcmVuTG9jKCk7IH0KIAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFN0bXQgKlQpIHsKICAgICByZXR1cm4gVC0+Z2V0U3RtdENsYXNzKCkgPT0gQ1hYU2NhbGFyVmFsdWVJbml0RXhwckNsYXNzOwpAQCAtMTg3MCw1NCArMTkxMCw1NiBAQAogCiAvLy8gUmVwcmVzZW50cyBhIG5ldy1leHByZXNzaW9uIGZvciBtZW1vcnkgYWxsb2NhdGlvbiBhbmQgY29uc3RydWN0b3IKIC8vLyBjYWxscywgZS5nOiAibmV3IENYWE5ld0V4cHIoZm9vKSIuCi1jbGFzcyBDWFhOZXdFeHByIDogcHVibGljIEV4cHIgeworY2xhc3MgQ1hYTmV3RXhwciBmaW5hbAorICAgIDogcHVibGljIEV4cHIsCisgICAgICBwcml2YXRlIGxsdm06OlRyYWlsaW5nT2JqZWN0czxDWFhOZXdFeHByLCBTdG10ICosIFNvdXJjZVJhbmdlPiB7CiAgIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOwogICBmcmllbmQgY2xhc3MgQVNUU3RtdFdyaXRlcjsKLQotICAvLy8gQ29udGFpbnMgYW4gb3B0aW9uYWwgYXJyYXkgc2l6ZSBleHByZXNzaW9uLCBhbiBvcHRpb25hbCBpbml0aWFsaXphdGlvbgotICAvLy8gZXhwcmVzc2lvbiwgYW5kIGFueSBudW1iZXIgb2Ygb3B0aW9uYWwgcGxhY2VtZW50IGFyZ3VtZW50cywgaW4gdGhhdCBvcmRlci4KLSAgU3RtdCAqKlN1YkV4cHJzID0gbnVsbHB0cjsKKyAgZnJpZW5kIFRyYWlsaW5nT2JqZWN0czsKIAogICAvLy8gUG9pbnRzIHRvIHRoZSBhbGxvY2F0aW9uIGZ1bmN0aW9uIHVzZWQuCiAgIEZ1bmN0aW9uRGVjbCAqT3BlcmF0b3JOZXc7CiAKLSAgLy8vIFBvaW50cyB0byB0aGUgZGVhbGxvY2F0aW9uIGZ1bmN0aW9uIHVzZWQgaW4gY2FzZSBvZiBlcnJvci4gTWF5IGJlCi0gIC8vLyBudWxsLgorICAvLy8gUG9pbnRzIHRvIHRoZSBkZWFsbG9jYXRpb24gZnVuY3Rpb24gdXNlZCBpbiBjYXNlIG9mIGVycm9yLiBNYXkgYmUgbnVsbC4KICAgRnVuY3Rpb25EZWNsICpPcGVyYXRvckRlbGV0ZTsKIAogICAvLy8gVGhlIGFsbG9jYXRlZCB0eXBlLXNvdXJjZSBpbmZvcm1hdGlvbiwgYXMgd3JpdHRlbiBpbiB0aGUgc291cmNlLgogICBUeXBlU291cmNlSW5mbyAqQWxsb2NhdGVkVHlwZUluZm87CiAKLSAgLy8vIElmIHRoZSBhbGxvY2F0ZWQgdHlwZSB3YXMgZXhwcmVzc2VkIGFzIGEgcGFyZW50aGVzaXplZCB0eXBlLWlkLAotICAvLy8gdGhlIHNvdXJjZSByYW5nZSBjb3ZlcmluZyB0aGUgcGFyZW50aGVzaXplZCB0eXBlLWlkLgotICBTb3VyY2VSYW5nZSBUeXBlSWRQYXJlbnM7Ci0KICAgLy8vIFJhbmdlIG9mIHRoZSBlbnRpcmUgbmV3IGV4cHJlc3Npb24uCiAgIFNvdXJjZVJhbmdlIFJhbmdlOwogCiAgIC8vLyBTb3VyY2UtcmFuZ2Ugb2YgYSBwYXJlbi1kZWxpbWl0ZWQgaW5pdGlhbGl6ZXIuCiAgIFNvdXJjZVJhbmdlIERpcmVjdEluaXRSYW5nZTsKIAotICAvLy8gV2FzIHRoZSB1c2FnZSA6Om5ldywgaS5lLiBpcyB0aGUgZ2xvYmFsIG5ldyB0byBiZSB1c2VkPwotICB1bnNpZ25lZCBHbG9iYWxOZXcgOiAxOworICAvLyBDWFhOZXdFeHByIGlzIGZvbGxvd2VkIGJ5IHNldmVyYWwgb3B0aW9uYWwgdHJhaWxpbmcgb2JqZWN0cy4KKyAgLy8gVGhleSBhcmUgaW4gb3JkZXI6CisgIC8vCisgIC8vICogQW4gb3B0aW9uYWwgIlN0bXQgKiIgZm9yIHRoZSBhcnJheSBzaXplIGV4cHJlc3Npb24uCisgIC8vICAgIFByZXNlbnQgaWYgYW5kIG9ueSBpZiBpc0FycmF5KCkuCisgIC8vCisgIC8vICogQW4gb3B0aW9uYWwgIlN0bXQgKiIgZm9yIHRoZSBpbml0IGV4cHJlc3Npb24uCisgIC8vICAgIFByZXNlbnQgaWYgYW5kIG9ubHkgaWYgaGFzSW5pdGlhbGl6ZXIoKS4KKyAgLy8KKyAgLy8gKiBBbiBhcnJheSBvZiBnZXROdW1QbGFjZW1lbnRBcmdzKCkgIlN0bXQgKiIgZm9yIHRoZSBwbGFjZW1lbnQgbmV3CisgIC8vICAgYXJndW1lbnRzLCBpZiBhbnkuCisgIC8vCisgIC8vICogQW4gb3B0aW9uYWwgU291cmNlUmFuZ2UgZm9yIHRoZSByYW5nZSBjb3ZlcmluZyB0aGUgcGFyZW50aGVzaXplZCB0eXBlLWlkCisgIC8vICAgIGlmIHRoZSBhbGxvY2F0ZWQgdHlwZSB3YXMgZXhwcmVzc2VkIGFzIGEgcGFyZW50aGVzaXplZCB0eXBlLWlkLgorICAvLyAgICBQcmVzZW50IGlmIGFuZCBvbmx5IGlmIGlzUGFyZW5UeXBlSWQoKS4KKyAgdW5zaWduZWQgYXJyYXlTaXplT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gMDsgfQorICB1bnNpZ25lZCBpbml0RXhwck9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIGFycmF5U2l6ZU9mZnNldCgpICsgaXNBcnJheSgpOyB9CisgIHVuc2lnbmVkIHBsYWNlbWVudE5ld0FyZ3NPZmZzZXQoKSBjb25zdCB7CisgICAgcmV0dXJuIGluaXRFeHByT2Zmc2V0KCkgKyBoYXNJbml0aWFsaXplcigpOworICB9CiAKLSAgLy8vIERvIHdlIGFsbG9jYXRlIGFuIGFycmF5PyBJZiBzbywgdGhlIGZpcnN0IFN1YkV4cHIgaXMgdGhlIHNpemUgZXhwcmVzc2lvbi4KLSAgdW5zaWduZWQgQXJyYXkgOiAxOworICB1bnNpZ25lZCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxTdG10ICo+KSBjb25zdCB7CisgICAgcmV0dXJuIGlzQXJyYXkoKSArIGhhc0luaXRpYWxpemVyKCkgKyBnZXROdW1QbGFjZW1lbnRBcmdzKCk7CisgIH0KIAotICAvLy8gU2hvdWxkIHRoZSBhbGlnbm1lbnQgYmUgcGFzc2VkIHRvIHRoZSBhbGxvY2F0aW9uIGZ1bmN0aW9uPwotICB1bnNpZ25lZCBQYXNzQWxpZ25tZW50IDogMTsKLQotICAvLy8gSWYgdGhpcyBpcyBhbiBhcnJheSBhbGxvY2F0aW9uLCBkb2VzIHRoZSB1c3VhbCBkZWFsbG9jYXRpb24KLSAgLy8vIGZ1bmN0aW9uIGZvciB0aGUgYWxsb2NhdGVkIHR5cGUgd2FudCB0byBrbm93IHRoZSBhbGxvY2F0ZWQgc2l6ZT8KLSAgdW5zaWduZWQgVXN1YWxBcnJheURlbGV0ZVdhbnRzU2l6ZSA6IDE7Ci0KLSAgLy8vIFRoZSBudW1iZXIgb2YgcGxhY2VtZW50IG5ldyBhcmd1bWVudHMuCi0gIHVuc2lnbmVkIE51bVBsYWNlbWVudEFyZ3MgOiAyNjsKLQotICAvLy8gV2hhdCBraW5kIG9mIGluaXRpYWxpemVyIGRvIHdlIGhhdmU/IENvdWxkIGJlIG5vbmUsIHBhcmVucywgb3IgYnJhY2VzLgotICAvLy8gSW4gc3RvcmFnZSwgd2UgZGlzdGluZ3Vpc2ggYmV0d2VlbiAibm9uZSwgYW5kIG5vIGluaXRpYWxpemVyIGV4cHIiLCBhbmQKLSAgLy8vICJub25lLCBidXQgYW4gaW1wbGljaXQgaW5pdGlhbGl6ZXIgZXhwciIuCi0gIHVuc2lnbmVkIFN0b3JlZEluaXRpYWxpemF0aW9uU3R5bGUgOiAyOworICB1bnNpZ25lZCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxTb3VyY2VSYW5nZT4pIGNvbnN0IHsKKyAgICByZXR1cm4gaXNQYXJlblR5cGVJZCgpOworICB9CiAKIHB1YmxpYzoKICAgZW51bSBJbml0aWFsaXphdGlvblN0eWxlIHsKQEAgLTE5MzEsMTggKzE5NzMsMzUgQEAKICAgICBMaXN0SW5pdAogICB9OwogCi0gIENYWE5ld0V4cHIoY29uc3QgQVNUQ29udGV4dCAmQywgYm9vbCBnbG9iYWxOZXcsIEZ1bmN0aW9uRGVjbCAqb3BlcmF0b3JOZXcsCi0gICAgICAgICAgICAgRnVuY3Rpb25EZWNsICpvcGVyYXRvckRlbGV0ZSwgYm9vbCBQYXNzQWxpZ25tZW50LAotICAgICAgICAgICAgIGJvb2wgdXN1YWxBcnJheURlbGV0ZVdhbnRzU2l6ZSwgQXJyYXlSZWY8RXhwcio+IHBsYWNlbWVudEFyZ3MsCi0gICAgICAgICAgICAgU291cmNlUmFuZ2UgdHlwZUlkUGFyZW5zLCBFeHByICphcnJheVNpemUsCi0gICAgICAgICAgICAgSW5pdGlhbGl6YXRpb25TdHlsZSBpbml0aWFsaXphdGlvblN0eWxlLCBFeHByICppbml0aWFsaXplciwKLSAgICAgICAgICAgICBRdWFsVHlwZSB0eSwgVHlwZVNvdXJjZUluZm8gKkFsbG9jYXRlZFR5cGVJbmZvLAotICAgICAgICAgICAgIFNvdXJjZVJhbmdlIFJhbmdlLCBTb3VyY2VSYW5nZSBkaXJlY3RJbml0UmFuZ2UpOwotICBleHBsaWNpdCBDWFhOZXdFeHByKEVtcHR5U2hlbGwgU2hlbGwpCi0gICAgICA6IEV4cHIoQ1hYTmV3RXhwckNsYXNzLCBTaGVsbCkge30KK3ByaXZhdGU6CisgIC8vLyBCdWlsZCBhIGMrKyBuZXcgZXhwcmVzc2lvbi4KKyAgQ1hYTmV3RXhwcihib29sIElzR2xvYmFsTmV3LCBGdW5jdGlvbkRlY2wgKk9wZXJhdG9yTmV3LAorICAgICAgICAgICAgIEZ1bmN0aW9uRGVjbCAqT3BlcmF0b3JEZWxldGUsIGJvb2wgU2hvdWxkUGFzc0FsaWdubWVudCwKKyAgICAgICAgICAgICBib29sIFVzdWFsQXJyYXlEZWxldGVXYW50c1NpemUsIEFycmF5UmVmPEV4cHIgKj4gUGxhY2VtZW50QXJncywKKyAgICAgICAgICAgICBTb3VyY2VSYW5nZSBUeXBlSWRQYXJlbnMsIEV4cHIgKkFycmF5U2l6ZSwKKyAgICAgICAgICAgICBJbml0aWFsaXphdGlvblN0eWxlIEluaXRpYWxpemF0aW9uU3R5bGUsIEV4cHIgKkluaXRpYWxpemVyLAorICAgICAgICAgICAgIFF1YWxUeXBlIFR5LCBUeXBlU291cmNlSW5mbyAqQWxsb2NhdGVkVHlwZUluZm8sIFNvdXJjZVJhbmdlIFJhbmdlLAorICAgICAgICAgICAgIFNvdXJjZVJhbmdlIERpcmVjdEluaXRSYW5nZSk7CiAKLSAgdm9pZCBBbGxvY2F0ZUFyZ3NBcnJheShjb25zdCBBU1RDb250ZXh0ICZDLCBib29sIGlzQXJyYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtUGxhY2VBcmdzLCBib29sIGhhc0luaXRpYWxpemVyKTsKKyAgLy8vIEJ1aWxkIGFuIGVtcHR5IGMrKyBuZXcgZXhwcmVzc2lvbi4KKyAgQ1hYTmV3RXhwcihFbXB0eVNoZWxsIEVtcHR5LCBib29sIElzQXJyYXksIHVuc2lnbmVkIE51bVBsYWNlbWVudEFyZ3MsCisgICAgICAgICAgICAgYm9vbCBJc1BhcmVuVHlwZUlkKTsKKworcHVibGljOgorICAvLy8gQ3JlYXRlIGEgYysrIG5ldyBleHByZXNzaW9uLgorICBzdGF0aWMgQ1hYTmV3RXhwciAqCisgIENyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDdHgsIGJvb2wgSXNHbG9iYWxOZXcsIEZ1bmN0aW9uRGVjbCAqT3BlcmF0b3JOZXcsCisgICAgICAgICBGdW5jdGlvbkRlY2wgKk9wZXJhdG9yRGVsZXRlLCBib29sIFNob3VsZFBhc3NBbGlnbm1lbnQsCisgICAgICAgICBib29sIFVzdWFsQXJyYXlEZWxldGVXYW50c1NpemUsIEFycmF5UmVmPEV4cHIgKj4gUGxhY2VtZW50QXJncywKKyAgICAgICAgIFNvdXJjZVJhbmdlIFR5cGVJZFBhcmVucywgRXhwciAqQXJyYXlTaXplLAorICAgICAgICAgSW5pdGlhbGl6YXRpb25TdHlsZSBJbml0aWFsaXphdGlvblN0eWxlLCBFeHByICpJbml0aWFsaXplciwKKyAgICAgICAgIFF1YWxUeXBlIFR5LCBUeXBlU291cmNlSW5mbyAqQWxsb2NhdGVkVHlwZUluZm8sIFNvdXJjZVJhbmdlIFJhbmdlLAorICAgICAgICAgU291cmNlUmFuZ2UgRGlyZWN0SW5pdFJhbmdlKTsKKworICAvLy8gQ3JlYXRlIGFuIGVtcHR5IGMrKyBuZXcgZXhwcmVzc2lvbi4KKyAgc3RhdGljIENYWE5ld0V4cHIgKkNyZWF0ZUVtcHR5KGNvbnN0IEFTVENvbnRleHQgJkN0eCwgYm9vbCBJc0FycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBIYXNJbml0LCB1bnNpZ25lZCBOdW1QbGFjZW1lbnRBcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBJc1BhcmVuVHlwZUlkKTsKIAogICBRdWFsVHlwZSBnZXRBbGxvY2F0ZWRUeXBlKCkgY29uc3QgewogICAgIGFzc2VydChnZXRUeXBlKCktPmlzUG9pbnRlclR5cGUoKSk7CkBAIC0xOTY4LDU4ICsyMDI3LDc0IEBACiAgIC8vLyBoYXMgYSBub24tdGhyb3dpbmcgZXhjZXB0aW9uLXNwZWNpZmljYXRpb24uICBUaGUgJzAzIHJ1bGUgaXMKICAgLy8vIGlkZW50aWNhbCBleGNlcHQgdGhhdCB0aGUgZGVmaW5pdGlvbiBvZiBhIG5vbi10aHJvd2luZwogICAvLy8gZXhjZXB0aW9uIHNwZWNpZmljYXRpb24gaXMganVzdCAiaXMgaXQgdGhyb3coKT8iLgotICBib29sIHNob3VsZE51bGxDaGVja0FsbG9jYXRpb24oY29uc3QgQVNUQ29udGV4dCAmQ3R4KSBjb25zdDsKKyAgYm9vbCBzaG91bGROdWxsQ2hlY2tBbGxvY2F0aW9uKCkgY29uc3Q7CiAKICAgRnVuY3Rpb25EZWNsICpnZXRPcGVyYXRvck5ldygpIGNvbnN0IHsgcmV0dXJuIE9wZXJhdG9yTmV3OyB9CiAgIHZvaWQgc2V0T3BlcmF0b3JOZXcoRnVuY3Rpb25EZWNsICpEKSB7IE9wZXJhdG9yTmV3ID0gRDsgfQogICBGdW5jdGlvbkRlY2wgKmdldE9wZXJhdG9yRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gT3BlcmF0b3JEZWxldGU7IH0KICAgdm9pZCBzZXRPcGVyYXRvckRlbGV0ZShGdW5jdGlvbkRlY2wgKkQpIHsgT3BlcmF0b3JEZWxldGUgPSBEOyB9CiAKLSAgYm9vbCBpc0FycmF5KCkgY29uc3QgeyByZXR1cm4gQXJyYXk7IH0KKyAgYm9vbCBpc0FycmF5KCkgY29uc3QgeyByZXR1cm4gQ1hYTmV3RXhwckJpdHMuSXNBcnJheTsgfQogCiAgIEV4cHIgKmdldEFycmF5U2l6ZSgpIHsKLSAgICByZXR1cm4gQXJyYXkgPyBjYXN0PEV4cHI+KFN1YkV4cHJzWzBdKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGlzQXJyYXkoKQorICAgICAgICAgICAgICAgPyBjYXN0PEV4cHI+KGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbYXJyYXlTaXplT2Zmc2V0KCldKQorICAgICAgICAgICAgICAgOiBudWxscHRyOwogICB9CiAgIGNvbnN0IEV4cHIgKmdldEFycmF5U2l6ZSgpIGNvbnN0IHsKLSAgICByZXR1cm4gQXJyYXkgPyBjYXN0PEV4cHI+KFN1YkV4cHJzWzBdKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGlzQXJyYXkoKQorICAgICAgICAgICAgICAgPyBjYXN0PEV4cHI+KGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbYXJyYXlTaXplT2Zmc2V0KCldKQorICAgICAgICAgICAgICAgOiBudWxscHRyOwogICB9CiAKLSAgdW5zaWduZWQgZ2V0TnVtUGxhY2VtZW50QXJncygpIGNvbnN0IHsgcmV0dXJuIE51bVBsYWNlbWVudEFyZ3M7IH0KKyAgdW5zaWduZWQgZ2V0TnVtUGxhY2VtZW50QXJncygpIGNvbnN0IHsKKyAgICByZXR1cm4gQ1hYTmV3RXhwckJpdHMuTnVtUGxhY2VtZW50QXJnczsKKyAgfQogCiAgIEV4cHIgKipnZXRQbGFjZW1lbnRBcmdzKCkgewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEV4cHIgKio+KFN1YkV4cHJzICsgQXJyYXkgKyBoYXNJbml0aWFsaXplcigpKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeHByICoqPihnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnROZXdBcmdzT2Zmc2V0KCkpOwogICB9CiAKLSAgRXhwciAqZ2V0UGxhY2VtZW50QXJnKHVuc2lnbmVkIGkpIHsKLSAgICBhc3NlcnQoaSA8IE51bVBsYWNlbWVudEFyZ3MgJiYgIkluZGV4IG91dCBvZiByYW5nZSIpOwotICAgIHJldHVybiBnZXRQbGFjZW1lbnRBcmdzKClbaV07CisgIEV4cHIgKmdldFBsYWNlbWVudEFyZyh1bnNpZ25lZCBJKSB7CisgICAgYXNzZXJ0KChJIDwgZ2V0TnVtUGxhY2VtZW50QXJncygpKSAmJiAiSW5kZXggb3V0IG9mIHJhbmdlISIpOworICAgIHJldHVybiBnZXRQbGFjZW1lbnRBcmdzKClbSV07CiAgIH0KLSAgY29uc3QgRXhwciAqZ2V0UGxhY2VtZW50QXJnKHVuc2lnbmVkIGkpIGNvbnN0IHsKLSAgICBhc3NlcnQoaSA8IE51bVBsYWNlbWVudEFyZ3MgJiYgIkluZGV4IG91dCBvZiByYW5nZSIpOwotICAgIHJldHVybiBjb25zdF9jYXN0PENYWE5ld0V4cHIqPih0aGlzKS0+Z2V0UGxhY2VtZW50QXJnKGkpOworICBjb25zdCBFeHByICpnZXRQbGFjZW1lbnRBcmcodW5zaWduZWQgSSkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9jYXN0PENYWE5ld0V4cHIgKj4odGhpcyktPmdldFBsYWNlbWVudEFyZyhJKTsKICAgfQogCi0gIGJvb2wgaXNQYXJlblR5cGVJZCgpIGNvbnN0IHsgcmV0dXJuIFR5cGVJZFBhcmVucy5pc1ZhbGlkKCk7IH0KLSAgU291cmNlUmFuZ2UgZ2V0VHlwZUlkUGFyZW5zKCkgY29uc3QgeyByZXR1cm4gVHlwZUlkUGFyZW5zOyB9CisgIGJvb2wgaXNQYXJlblR5cGVJZCgpIGNvbnN0IHsgcmV0dXJuIENYWE5ld0V4cHJCaXRzLklzUGFyZW5UeXBlSWQ7IH0KKyAgU291cmNlUmFuZ2UgZ2V0VHlwZUlkUGFyZW5zKCkgY29uc3QgeworICAgIHJldHVybiBpc1BhcmVuVHlwZUlkKCkgPyBnZXRUcmFpbGluZ09iamVjdHM8U291cmNlUmFuZ2U+KClbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU291cmNlUmFuZ2UoKTsKKyAgfQogCi0gIGJvb2wgaXNHbG9iYWxOZXcoKSBjb25zdCB7IHJldHVybiBHbG9iYWxOZXc7IH0KKyAgYm9vbCBpc0dsb2JhbE5ldygpIGNvbnN0IHsgcmV0dXJuIENYWE5ld0V4cHJCaXRzLklzR2xvYmFsTmV3OyB9CiAKICAgLy8vIFdoZXRoZXIgdGhpcyBuZXctZXhwcmVzc2lvbiBoYXMgYW55IGluaXRpYWxpemVyIGF0IGFsbC4KLSAgYm9vbCBoYXNJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIFN0b3JlZEluaXRpYWxpemF0aW9uU3R5bGUgPiAwOyB9CisgIGJvb2wgaGFzSW5pdGlhbGl6ZXIoKSBjb25zdCB7CisgICAgcmV0dXJuIENYWE5ld0V4cHJCaXRzLlN0b3JlZEluaXRpYWxpemF0aW9uU3R5bGUgPiAwOworICB9CiAKICAgLy8vIFRoZSBraW5kIG9mIGluaXRpYWxpemVyIHRoaXMgbmV3LWV4cHJlc3Npb24gaGFzLgogICBJbml0aWFsaXphdGlvblN0eWxlIGdldEluaXRpYWxpemF0aW9uU3R5bGUoKSBjb25zdCB7Ci0gICAgaWYgKFN0b3JlZEluaXRpYWxpemF0aW9uU3R5bGUgPT0gMCkKKyAgICBpZiAoQ1hYTmV3RXhwckJpdHMuU3RvcmVkSW5pdGlhbGl6YXRpb25TdHlsZSA9PSAwKQogICAgICAgcmV0dXJuIE5vSW5pdDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5pdGlhbGl6YXRpb25TdHlsZT4oU3RvcmVkSW5pdGlhbGl6YXRpb25TdHlsZS0xKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5pdGlhbGl6YXRpb25TdHlsZT4oCisgICAgICAgIENYWE5ld0V4cHJCaXRzLlN0b3JlZEluaXRpYWxpemF0aW9uU3R5bGUgLSAxKTsKICAgfQogCiAgIC8vLyBUaGUgaW5pdGlhbGl6ZXIgb2YgdGhpcyBuZXctZXhwcmVzc2lvbi4KICAgRXhwciAqZ2V0SW5pdGlhbGl6ZXIoKSB7Ci0gICAgcmV0dXJuIGhhc0luaXRpYWxpemVyKCkgPyBjYXN0PEV4cHI+KFN1YkV4cHJzW0FycmF5XSkgOiBudWxscHRyOworICAgIHJldHVybiBoYXNJbml0aWFsaXplcigpCisgICAgICAgICAgICAgICA/IGNhc3Q8RXhwcj4oZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVtpbml0RXhwck9mZnNldCgpXSkKKyAgICAgICAgICAgICAgIDogbnVsbHB0cjsKICAgfQogICBjb25zdCBFeHByICpnZXRJbml0aWFsaXplcigpIGNvbnN0IHsKLSAgICByZXR1cm4gaGFzSW5pdGlhbGl6ZXIoKSA/IGNhc3Q8RXhwcj4oU3ViRXhwcnNbQXJyYXldKSA6IG51bGxwdHI7CisgICAgcmV0dXJuIGhhc0luaXRpYWxpemVyKCkKKyAgICAgICAgICAgICAgID8gY2FzdDxFeHByPihnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW2luaXRFeHByT2Zmc2V0KCldKQorICAgICAgICAgICAgICAgOiBudWxscHRyOwogICB9CiAKICAgLy8vIFJldHVybnMgdGhlIENYWENvbnN0cnVjdEV4cHIgZnJvbSB0aGlzIG5ldy1leHByZXNzaW9uLCBvciBudWxsLgpAQCAtMjAyOSwxNSArMjEwNCwxMyBAQAogCiAgIC8vLyBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVxdWlyZWQgYWxpZ25tZW50IHNob3VsZCBiZSBpbXBsaWNpdGx5IHBhc3NlZCB0bwogICAvLy8gdGhlIGFsbG9jYXRpb24gZnVuY3Rpb24uCi0gIGJvb2wgcGFzc0FsaWdubWVudCgpIGNvbnN0IHsKLSAgICByZXR1cm4gUGFzc0FsaWdubWVudDsKLSAgfQorICBib29sIHBhc3NBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiBDWFhOZXdFeHByQml0cy5TaG91bGRQYXNzQWxpZ25tZW50OyB9CiAKICAgLy8vIEFuc3dlcnMgd2hldGhlciB0aGUgdXN1YWwgYXJyYXkgZGVhbGxvY2F0aW9uIGZ1bmN0aW9uIGZvciB0aGUKICAgLy8vIGFsbG9jYXRlZCB0eXBlIGV4cGVjdHMgdGhlIHNpemUgb2YgdGhlIGFsbG9jYXRpb24gYXMgYQogICAvLy8gcGFyYW1ldGVyLgogICBib29sIGRvZXNVc3VhbEFycmF5RGVsZXRlV2FudFNpemUoKSBjb25zdCB7Ci0gICAgcmV0dXJuIFVzdWFsQXJyYXlEZWxldGVXYW50c1NpemU7CisgICAgcmV0dXJuIENYWE5ld0V4cHJCaXRzLlVzdWFsQXJyYXlEZWxldGVXYW50c1NpemU7CiAgIH0KIAogICB1c2luZyBhcmdfaXRlcmF0b3IgPSBFeHBySXRlcmF0b3I7CkBAIC0yMDUyLDEwMSArMjEyNSw4NSBAQAogICB9CiAKICAgYXJnX2l0ZXJhdG9yIHBsYWNlbWVudF9hcmdfYmVnaW4oKSB7Ci0gICAgcmV0dXJuIFN1YkV4cHJzICsgQXJyYXkgKyBoYXNJbml0aWFsaXplcigpOworICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpICsgcGxhY2VtZW50TmV3QXJnc09mZnNldCgpOwogICB9CiAgIGFyZ19pdGVyYXRvciBwbGFjZW1lbnRfYXJnX2VuZCgpIHsKLSAgICByZXR1cm4gU3ViRXhwcnMgKyBBcnJheSArIGhhc0luaXRpYWxpemVyKCkgKyBnZXROdW1QbGFjZW1lbnRBcmdzKCk7CisgICAgcmV0dXJuIHBsYWNlbWVudF9hcmdfYmVnaW4oKSArIGdldE51bVBsYWNlbWVudEFyZ3MoKTsKICAgfQogICBjb25zdF9hcmdfaXRlcmF0b3IgcGxhY2VtZW50X2FyZ19iZWdpbigpIGNvbnN0IHsKLSAgICByZXR1cm4gU3ViRXhwcnMgKyBBcnJheSArIGhhc0luaXRpYWxpemVyKCk7CisgICAgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KCkgKyBwbGFjZW1lbnROZXdBcmdzT2Zmc2V0KCk7CiAgIH0KICAgY29uc3RfYXJnX2l0ZXJhdG9yIHBsYWNlbWVudF9hcmdfZW5kKCkgY29uc3QgewotICAgIHJldHVybiBTdWJFeHBycyArIEFycmF5ICsgaGFzSW5pdGlhbGl6ZXIoKSArIGdldE51bVBsYWNlbWVudEFyZ3MoKTsKKyAgICByZXR1cm4gcGxhY2VtZW50X2FyZ19iZWdpbigpICsgZ2V0TnVtUGxhY2VtZW50QXJncygpOwogICB9CiAKICAgdXNpbmcgcmF3X2FyZ19pdGVyYXRvciA9IFN0bXQgKio7CiAKLSAgcmF3X2FyZ19pdGVyYXRvciByYXdfYXJnX2JlZ2luKCkgeyByZXR1cm4gU3ViRXhwcnM7IH0KKyAgcmF3X2FyZ19pdGVyYXRvciByYXdfYXJnX2JlZ2luKCkgeyByZXR1cm4gZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKTsgfQogICByYXdfYXJnX2l0ZXJhdG9yIHJhd19hcmdfZW5kKCkgewotICAgIHJldHVybiBTdWJFeHBycyArIEFycmF5ICsgaGFzSW5pdGlhbGl6ZXIoKSArIGdldE51bVBsYWNlbWVudEFyZ3MoKTsKKyAgICByZXR1cm4gcmF3X2FyZ19iZWdpbigpICsgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2FkVG9rZW48U3RtdCAqPigpKTsKICAgfQotICBjb25zdF9hcmdfaXRlcmF0b3IgcmF3X2FyZ19iZWdpbigpIGNvbnN0IHsgcmV0dXJuIFN1YkV4cHJzOyB9CisgIGNvbnN0X2FyZ19pdGVyYXRvciByYXdfYXJnX2JlZ2luKCkgY29uc3QgeworICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpOworICB9CiAgIGNvbnN0X2FyZ19pdGVyYXRvciByYXdfYXJnX2VuZCgpIGNvbnN0IHsKLSAgICByZXR1cm4gU3ViRXhwcnMgKyBBcnJheSArIGhhc0luaXRpYWxpemVyKCkgKyBnZXROdW1QbGFjZW1lbnRBcmdzKCk7CisgICAgcmV0dXJuIHJhd19hcmdfYmVnaW4oKSArIG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPFN0bXQgKj4oKSk7CiAgIH0KIAogICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IHsgcmV0dXJuIFJhbmdlLmdldEJlZ2luKCk7IH0KICAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgeyByZXR1cm4gUmFuZ2UuZ2V0RW5kKCk7IH0KIAogICBTb3VyY2VSYW5nZSBnZXREaXJlY3RJbml0UmFuZ2UoKSBjb25zdCB7IHJldHVybiBEaXJlY3RJbml0UmFuZ2U7IH0KLQotICBTb3VyY2VSYW5nZSBnZXRTb3VyY2VSYW5nZSgpIGNvbnN0IExMVk1fUkVBRE9OTFkgewotICAgIHJldHVybiBSYW5nZTsKLSAgfQotCisgIFNvdXJjZVJhbmdlIGdldFNvdXJjZVJhbmdlKCkgY29uc3QgeyByZXR1cm4gUmFuZ2U7IH0KIAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFN0bXQgKlQpIHsKICAgICByZXR1cm4gVC0+Z2V0U3RtdENsYXNzKCkgPT0gQ1hYTmV3RXhwckNsYXNzOwogICB9CiAKICAgLy8gSXRlcmF0b3JzCi0gIGNoaWxkX3JhbmdlIGNoaWxkcmVuKCkgewotICAgIHJldHVybiBjaGlsZF9yYW5nZShyYXdfYXJnX2JlZ2luKCksIHJhd19hcmdfZW5kKCkpOwotICB9CisgIGNoaWxkX3JhbmdlIGNoaWxkcmVuKCkgeyByZXR1cm4gY2hpbGRfcmFuZ2UocmF3X2FyZ19iZWdpbigpLCByYXdfYXJnX2VuZCgpKTsgfQogfTsKIAogLy8vIFJlcHJlc2VudHMgYSBcYyBkZWxldGUgZXhwcmVzc2lvbiBmb3IgbWVtb3J5IGRlYWxsb2NhdGlvbiBhbmQKIC8vLyBkZXN0cnVjdG9yIGNhbGxzLCBlLmcuICJkZWxldGVbXSBwQXJyYXkiLgogY2xhc3MgQ1hYRGVsZXRlRXhwciA6IHB1YmxpYyBFeHByIHsKKyAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisKICAgLy8vIFBvaW50cyB0byB0aGUgb3BlcmF0b3IgZGVsZXRlIG92ZXJsb2FkIHRoYXQgaXMgdXNlZC4gQ291bGQgYmUgYSBtZW1iZXIuCiAgIEZ1bmN0aW9uRGVjbCAqT3BlcmF0b3JEZWxldGUgPSBudWxscHRyOwogCiAgIC8vLyBUaGUgcG9pbnRlciBleHByZXNzaW9uIHRvIGJlIGRlbGV0ZWQuCiAgIFN0bXQgKkFyZ3VtZW50ID0gbnVsbHB0cjsKIAotICAvLy8gTG9jYXRpb24gb2YgdGhlIGV4cHJlc3Npb24uCi0gIFNvdXJjZUxvY2F0aW9uIExvYzsKLQotICAvLy8gSXMgdGhpcyBhIGZvcmNlZCBnbG9iYWwgZGVsZXRlLCBpLmUuICI6OmRlbGV0ZSI/Ci0gIGJvb2wgR2xvYmFsRGVsZXRlIDogMTsKLQotICAvLy8gSXMgdGhpcyB0aGUgYXJyYXkgZm9ybSBvZiBkZWxldGUsIGkuZS4gImRlbGV0ZVtdIj8KLSAgYm9vbCBBcnJheUZvcm0gOiAxOwotCi0gIC8vLyBBcnJheUZvcm1Bc1dyaXR0ZW4gY2FuIGJlIGRpZmZlcmVudCBmcm9tIEFycmF5Rm9ybSBpZiAnZGVsZXRlJyBpcyBhcHBsaWVkCi0gIC8vLyB0byBwb2ludGVyLXRvLWFycmF5IHR5cGUgKEFycmF5Rm9ybUFzV3JpdHRlbiB3aWxsIGJlIGZhbHNlIHdoaWxlIEFycmF5Rm9ybQotICAvLy8gd2lsbCBiZSB0cnVlKS4KLSAgYm9vbCBBcnJheUZvcm1Bc1dyaXR0ZW4gOiAxOwotCi0gIC8vLyBEb2VzIHRoZSB1c3VhbCBkZWFsbG9jYXRpb24gZnVuY3Rpb24gZm9yIHRoZSBlbGVtZW50IHR5cGUgcmVxdWlyZQotICAvLy8gYSBzaXplX3QgYXJndW1lbnQ/Ci0gIGJvb2wgVXN1YWxBcnJheURlbGV0ZVdhbnRzU2l6ZSA6IDE7Ci0KIHB1YmxpYzoKLSAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgIENYWERlbGV0ZUV4cHIoUXVhbFR5cGUgVHksIGJvb2wgR2xvYmFsRGVsZXRlLCBib29sIEFycmF5Rm9ybSwKKyAgICAgICAgICAgICAgICBib29sIEFycmF5Rm9ybUFzV3JpdHRlbiwgYm9vbCBVc3VhbEFycmF5RGVsZXRlV2FudHNTaXplLAorICAgICAgICAgICAgICAgIEZ1bmN0aW9uRGVjbCAqT3BlcmF0b3JEZWxldGUsIEV4cHIgKkFyZywgU291cmNlTG9jYXRpb24gTG9jKQorICAgICAgOiBFeHByKENYWERlbGV0ZUV4cHJDbGFzcywgVHksIFZLX1JWYWx1ZSwgT0tfT3JkaW5hcnksIGZhbHNlLCBmYWxzZSwKKyAgICAgICAgICAgICBBcmctPmlzSW5zdGFudGlhdGlvbkRlcGVuZGVudCgpLAorICAgICAgICAgICAgIEFyZy0+Y29udGFpbnNVbmV4cGFuZGVkUGFyYW1ldGVyUGFjaygpKSwKKyAgICAgICAgT3BlcmF0b3JEZWxldGUoT3BlcmF0b3JEZWxldGUpLCBBcmd1bWVudChBcmcpIHsKKyAgICBDWFhEZWxldGVFeHByQml0cy5HbG9iYWxEZWxldGUgPSBHbG9iYWxEZWxldGU7CisgICAgQ1hYRGVsZXRlRXhwckJpdHMuQXJyYXlGb3JtID0gQXJyYXlGb3JtOworICAgIENYWERlbGV0ZUV4cHJCaXRzLkFycmF5Rm9ybUFzV3JpdHRlbiA9IEFycmF5Rm9ybUFzV3JpdHRlbjsKKyAgICBDWFhEZWxldGVFeHByQml0cy5Vc3VhbEFycmF5RGVsZXRlV2FudHNTaXplID0gVXN1YWxBcnJheURlbGV0ZVdhbnRzU2l6ZTsKKyAgICBDWFhEZWxldGVFeHByQml0cy5Mb2MgPSBMb2M7CisgIH0KIAotICBDWFhEZWxldGVFeHByKFF1YWxUeXBlIHR5LCBib29sIGdsb2JhbERlbGV0ZSwgYm9vbCBhcnJheUZvcm0sCi0gICAgICAgICAgICAgICAgYm9vbCBhcnJheUZvcm1Bc1dyaXR0ZW4sIGJvb2wgdXN1YWxBcnJheURlbGV0ZVdhbnRzU2l6ZSwKLSAgICAgICAgICAgICAgICBGdW5jdGlvbkRlY2wgKm9wZXJhdG9yRGVsZXRlLCBFeHByICphcmcsIFNvdXJjZUxvY2F0aW9uIGxvYykKLSAgICAgIDogRXhwcihDWFhEZWxldGVFeHByQ2xhc3MsIHR5LCBWS19SVmFsdWUsIE9LX09yZGluYXJ5LCBmYWxzZSwgZmFsc2UsCi0gICAgICAgICAgICAgYXJnLT5pc0luc3RhbnRpYXRpb25EZXBlbmRlbnQoKSwKLSAgICAgICAgICAgICBhcmctPmNvbnRhaW5zVW5leHBhbmRlZFBhcmFtZXRlclBhY2soKSksCi0gICAgICAgIE9wZXJhdG9yRGVsZXRlKG9wZXJhdG9yRGVsZXRlKSwgQXJndW1lbnQoYXJnKSwgTG9jKGxvYyksCi0gICAgICAgIEdsb2JhbERlbGV0ZShnbG9iYWxEZWxldGUpLAotICAgICAgICBBcnJheUZvcm0oYXJyYXlGb3JtKSwgQXJyYXlGb3JtQXNXcml0dGVuKGFycmF5Rm9ybUFzV3JpdHRlbiksCi0gICAgICAgIFVzdWFsQXJyYXlEZWxldGVXYW50c1NpemUodXN1YWxBcnJheURlbGV0ZVdhbnRzU2l6ZSkge30KICAgZXhwbGljaXQgQ1hYRGVsZXRlRXhwcihFbXB0eVNoZWxsIFNoZWxsKSA6IEV4cHIoQ1hYRGVsZXRlRXhwckNsYXNzLCBTaGVsbCkge30KIAotICBib29sIGlzR2xvYmFsRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gR2xvYmFsRGVsZXRlOyB9Ci0gIGJvb2wgaXNBcnJheUZvcm0oKSBjb25zdCB7IHJldHVybiBBcnJheUZvcm07IH0KLSAgYm9vbCBpc0FycmF5Rm9ybUFzV3JpdHRlbigpIGNvbnN0IHsgcmV0dXJuIEFycmF5Rm9ybUFzV3JpdHRlbjsgfQorICBib29sIGlzR2xvYmFsRGVsZXRlKCkgY29uc3QgeyByZXR1cm4gQ1hYRGVsZXRlRXhwckJpdHMuR2xvYmFsRGVsZXRlOyB9CisgIGJvb2wgaXNBcnJheUZvcm0oKSBjb25zdCB7IHJldHVybiBDWFhEZWxldGVFeHByQml0cy5BcnJheUZvcm07IH0KKyAgYm9vbCBpc0FycmF5Rm9ybUFzV3JpdHRlbigpIGNvbnN0IHsKKyAgICByZXR1cm4gQ1hYRGVsZXRlRXhwckJpdHMuQXJyYXlGb3JtQXNXcml0dGVuOworICB9CiAKICAgLy8vIEFuc3dlcnMgd2hldGhlciB0aGUgdXN1YWwgYXJyYXkgZGVhbGxvY2F0aW9uIGZ1bmN0aW9uIGZvciB0aGUKICAgLy8vIGFsbG9jYXRlZCB0eXBlIGV4cGVjdHMgdGhlIHNpemUgb2YgdGhlIGFsbG9jYXRpb24gYXMgYQogICAvLy8gcGFyYW1ldGVyLiAgVGhpcyBjYW4gYmUgdHJ1ZSBldmVuIGlmIHRoZSBhY3R1YWwgZGVhbGxvY2F0aW9uCiAgIC8vLyBmdW5jdGlvbiB0aGF0IHdlJ3JlIHVzaW5nIGRvZXNuJ3Qgd2FudCBhIHNpemUuCiAgIGJvb2wgZG9lc1VzdWFsQXJyYXlEZWxldGVXYW50U2l6ZSgpIGNvbnN0IHsKLSAgICByZXR1cm4gVXN1YWxBcnJheURlbGV0ZVdhbnRzU2l6ZTsKKyAgICByZXR1cm4gQ1hYRGVsZXRlRXhwckJpdHMuVXN1YWxBcnJheURlbGV0ZVdhbnRzU2l6ZTsKICAgfQogCiAgIEZ1bmN0aW9uRGVjbCAqZ2V0T3BlcmF0b3JEZWxldGUoKSBjb25zdCB7IHJldHVybiBPcGVyYXRvckRlbGV0ZTsgfQpAQCAtMjE2MCw3ICsyMjE3LDcgQEAKICAgLy8vIGJlIGEgcG9pbnRlciwgcmV0dXJuIGFuIGludmFsaWQgdHlwZS4KICAgUXVhbFR5cGUgZ2V0RGVzdHJveWVkVHlwZSgpIGNvbnN0OwogCi0gIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBMb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCB7IHJldHVybiBDWFhEZWxldGVFeHByQml0cy5Mb2M7IH0KICAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7CiAgICAgcmV0dXJuIEFyZ3VtZW50LT5nZXRFbmRMb2MoKTsKICAgfQpAQCAtMjE3MCw3ICsyMjI3LDcgQEAKICAgfQogCiAgIC8vIEl0ZXJhdG9ycwotICBjaGlsZF9yYW5nZSBjaGlsZHJlbigpIHsgcmV0dXJuIGNoaWxkX3JhbmdlKCZBcmd1bWVudCwgJkFyZ3VtZW50KzEpOyB9CisgIGNoaWxkX3JhbmdlIGNoaWxkcmVuKCkgeyByZXR1cm4gY2hpbGRfcmFuZ2UoJkFyZ3VtZW50LCAmQXJndW1lbnQgKyAxKTsgfQogfTsKIAogLy8vIFN0b3JlcyB0aGUgdHlwZSBiZWluZyBkZXN0cm95ZWQgYnkgYSBwc2V1ZG8tZGVzdHJ1Y3RvciBleHByZXNzaW9uLgpAQCAtMjQ3Miw4ICsyNTI5LDYgQEAKICAgLy8vIFRoZSB0eXBlIGJlaW5nIHF1ZXJpZWQuCiAgIFR5cGVTb3VyY2VJbmZvICpRdWVyaWVkVHlwZSA9IG51bGxwdHI7CiAKLSAgdmlydHVhbCB2b2lkIGFuY2hvcigpOwotCiBwdWJsaWM6CiAgIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOwogCkBAIC0yNDkxLDggKzI1NDYsNiBAQAogICBleHBsaWNpdCBBcnJheVR5cGVUcmFpdEV4cHIoRW1wdHlTaGVsbCBFbXB0eSkKICAgICAgIDogRXhwcihBcnJheVR5cGVUcmFpdEV4cHJDbGFzcywgRW1wdHkpLCBBVFQoMCkge30KIAotICB2aXJ0dWFsIH5BcnJheVR5cGVUcmFpdEV4cHIoKSA9IGRlZmF1bHQ7Ci0KICAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIExvYzsgfQogICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIFJQYXJlbjsgfQogCkBAIC0yNTc5LDU4ICsyNjMyLDU0IEBACiAvLy8gQSByZWZlcmVuY2UgdG8gYW4gb3ZlcmxvYWRlZCBmdW5jdGlvbiBzZXQsIGVpdGhlciBhbgogLy8vIFxjIFVucmVzb2x2ZWRMb29rdXBFeHByIG9yIGFuIFxjIFVucmVzb2x2ZWRNZW1iZXJFeHByLgogY2xhc3MgT3ZlcmxvYWRFeHByIDogcHVibGljIEV4cHIgeworICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKKyAgZnJpZW5kIGNsYXNzIEFTVFN0bXRXcml0ZXI7CisKICAgLy8vIFRoZSBjb21tb24gbmFtZSBvZiB0aGVzZSBkZWNsYXJhdGlvbnMuCiAgIERlY2xhcmF0aW9uTmFtZUluZm8gTmFtZUluZm87CiAKICAgLy8vIFRoZSBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIgdGhhdCBxdWFsaWZpZXMgdGhlIG5hbWUsIGlmIGFueS4KICAgTmVzdGVkTmFtZVNwZWNpZmllckxvYyBRdWFsaWZpZXJMb2M7CiAKLSAgLy8vIFRoZSByZXN1bHRzLiAgVGhlc2UgYXJlIHVuZGVzdWdhcmVkLCB3aGljaCBpcyB0byBzYXksIHRoZXkgbWF5Ci0gIC8vLyBpbmNsdWRlIFVzaW5nU2hhZG93RGVjbHMuICBBY2Nlc3MgaXMgcmVsYXRpdmUgdG8gdGhlIG5hbWluZwotICAvLy8gY2xhc3MuCi0gIC8vIEZJWE1FOiBBbGxvY2F0ZSB0aGlzIGRhdGEgYWZ0ZXIgdGhlIE92ZXJsb2FkRXhwciBzdWJjbGFzcy4KLSAgRGVjbEFjY2Vzc1BhaXIgKlJlc3VsdHMgPSBudWxscHRyOwotCi0gIHVuc2lnbmVkIE51bVJlc3VsdHMgPSAwOwotCiBwcm90ZWN0ZWQ6Ci0gIC8vLyBXaGV0aGVyIHRoZSBuYW1lIGluY2x1ZGVzIGluZm8gZm9yIGV4cGxpY2l0IHRlbXBsYXRlCi0gIC8vLyBrZXl3b3JkIGFuZCBhcmd1bWVudHMuCi0gIGJvb2wgSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvID0gZmFsc2U7Ci0KLSAgT3ZlcmxvYWRFeHByKFN0bXRDbGFzcyBLLCBjb25zdCBBU1RDb250ZXh0ICZDLAorICBPdmVybG9hZEV4cHIoU3RtdENsYXNzIFNDLCBjb25zdCBBU1RDb250ZXh0ICZDb250ZXh0LAogICAgICAgICAgICAgICAgTmVzdGVkTmFtZVNwZWNpZmllckxvYyBRdWFsaWZpZXJMb2MsCiAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBUZW1wbGF0ZUtXTG9jLAogICAgICAgICAgICAgICAgY29uc3QgRGVjbGFyYXRpb25OYW1lSW5mbyAmTmFtZUluZm8sCiAgICAgICAgICAgICAgICBjb25zdCBUZW1wbGF0ZUFyZ3VtZW50TGlzdEluZm8gKlRlbXBsYXRlQXJncywKICAgICAgICAgICAgICAgIFVucmVzb2x2ZWRTZXRJdGVyYXRvciBCZWdpbiwgVW5yZXNvbHZlZFNldEl0ZXJhdG9yIEVuZCwKLSAgICAgICAgICAgICAgIGJvb2wgS25vd25EZXBlbmRlbnQsCi0gICAgICAgICAgICAgICBib29sIEtub3duSW5zdGFudGlhdGlvbkRlcGVuZGVudCwKKyAgICAgICAgICAgICAgIGJvb2wgS25vd25EZXBlbmRlbnQsIGJvb2wgS25vd25JbnN0YW50aWF0aW9uRGVwZW5kZW50LAogICAgICAgICAgICAgICAgYm9vbCBLbm93bkNvbnRhaW5zVW5leHBhbmRlZFBhcmFtZXRlclBhY2spOwogCi0gIE92ZXJsb2FkRXhwcihTdG10Q2xhc3MgSywgRW1wdHlTaGVsbCBFbXB0eSkgOiBFeHByKEssIEVtcHR5KSB7fQorICBPdmVybG9hZEV4cHIoU3RtdENsYXNzIFNDLCBFbXB0eVNoZWxsIEVtcHR5LCB1bnNpZ25lZCBOdW1SZXN1bHRzLAorICAgICAgICAgICAgICAgYm9vbCBIYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8pOworCisgIC8vLyBSZXR1cm4gdGhlIHJlc3VsdHMuIERlZmluZWQgYWZ0ZXIgVW5yZXNvbHZlZE1lbWJlckV4cHIuCisgIGlubGluZSBEZWNsQWNjZXNzUGFpciAqZ2V0VHJhaWxpbmdSZXN1bHRzKCk7CisgIGNvbnN0IERlY2xBY2Nlc3NQYWlyICpnZXRUcmFpbGluZ1Jlc3VsdHMoKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8T3ZlcmxvYWRFeHByICo+KHRoaXMpLT5nZXRUcmFpbGluZ1Jlc3VsdHMoKTsKKyAgfQogCiAgIC8vLyBSZXR1cm4gdGhlIG9wdGlvbmFsIHRlbXBsYXRlIGtleXdvcmQgYW5kIGFyZ3VtZW50cyBpbmZvLgotICBBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8gKgotICBnZXRUcmFpbGluZ0FTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbygpOyAvLyBkZWZpbmVkIGZhciBiZWxvdy4KLQotICAvLy8gUmV0dXJuIHRoZSBvcHRpb25hbCB0ZW1wbGF0ZSBrZXl3b3JkIGFuZCBhcmd1bWVudHMgaW5mby4KKyAgLy8vIERlZmluZWQgYWZ0ZXIgVW5yZXNvbHZlZE1lbWJlckV4cHIuCisgIGlubGluZSBBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8gKmdldFRyYWlsaW5nQVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKCk7CiAgIGNvbnN0IEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbyAqZ2V0VHJhaWxpbmdBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKSBjb25zdCB7CiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8T3ZlcmxvYWRFeHByICo+KHRoaXMpCiAgICAgICAgIC0+Z2V0VHJhaWxpbmdBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKTsKICAgfQogCi0gIC8vLyBSZXR1cm4gdGhlIG9wdGlvbmFsIHRlbXBsYXRlIGFyZ3VtZW50cy4KLSAgVGVtcGxhdGVBcmd1bWVudExvYyAqZ2V0VHJhaWxpbmdUZW1wbGF0ZUFyZ3VtZW50TG9jKCk7IC8vIGRlZmluZWQgZmFyIGJlbG93CisgIC8vLyBSZXR1cm4gdGhlIG9wdGlvbmFsIHRlbXBsYXRlIGFyZ3VtZW50cy4gRGVmaW5lZCBhZnRlcgorICAvLy8gVW5yZXNvbHZlZE1lbWJlckV4cHIuCisgIGlubGluZSBUZW1wbGF0ZUFyZ3VtZW50TG9jICpnZXRUcmFpbGluZ1RlbXBsYXRlQXJndW1lbnRMb2MoKTsKKyAgY29uc3QgVGVtcGxhdGVBcmd1bWVudExvYyAqZ2V0VHJhaWxpbmdUZW1wbGF0ZUFyZ3VtZW50TG9jKCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9jYXN0PE92ZXJsb2FkRXhwciAqPih0aGlzKS0+Z2V0VHJhaWxpbmdUZW1wbGF0ZUFyZ3VtZW50TG9jKCk7CisgIH0KIAotICB2b2lkIGluaXRpYWxpemVSZXN1bHRzKGNvbnN0IEFTVENvbnRleHQgJkMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgVW5yZXNvbHZlZFNldEl0ZXJhdG9yIEJlZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgIFVucmVzb2x2ZWRTZXRJdGVyYXRvciBFbmQpOworICBib29sIGhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbygpIGNvbnN0IHsKKyAgICByZXR1cm4gT3ZlcmxvYWRFeHByQml0cy5IYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm87CisgIH0KIAogcHVibGljOgotICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKLSAgZnJpZW5kIGNsYXNzIEFTVFN0bXRXcml0ZXI7Ci0KICAgc3RydWN0IEZpbmRSZXN1bHQgewogICAgIE92ZXJsb2FkRXhwciAqRXhwcmVzc2lvbjsKICAgICBib29sIElzQWRkcmVzc09mT3BlcmFuZDsKQEAgLTI2NjYsMjAgKzI3MTUsMjYgQEAKICAgfQogCiAgIC8vLyBHZXRzIHRoZSBuYW1pbmcgY2xhc3Mgb2YgdGhpcyBsb29rdXAsIGlmIGFueS4KLSAgQ1hYUmVjb3JkRGVjbCAqZ2V0TmFtaW5nQ2xhc3MoKSBjb25zdDsKKyAgLy8vIERlZmluZWQgYWZ0ZXIgVW5yZXNvbHZlZE1lbWJlckV4cHIuCisgIGlubGluZSBDWFhSZWNvcmREZWNsICpnZXROYW1pbmdDbGFzcygpOworICBjb25zdCBDWFhSZWNvcmREZWNsICpnZXROYW1pbmdDbGFzcygpIGNvbnN0IHsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxPdmVybG9hZEV4cHIgKj4odGhpcyktPmdldE5hbWluZ0NsYXNzKCk7CisgIH0KIAogICB1c2luZyBkZWNsc19pdGVyYXRvciA9IFVucmVzb2x2ZWRTZXRJbXBsOjppdGVyYXRvcjsKIAotICBkZWNsc19pdGVyYXRvciBkZWNsc19iZWdpbigpIGNvbnN0IHsgcmV0dXJuIFVucmVzb2x2ZWRTZXRJdGVyYXRvcihSZXN1bHRzKTsgfQorICBkZWNsc19pdGVyYXRvciBkZWNsc19iZWdpbigpIGNvbnN0IHsKKyAgICByZXR1cm4gVW5yZXNvbHZlZFNldEl0ZXJhdG9yKGdldFRyYWlsaW5nUmVzdWx0cygpKTsKKyAgfQogICBkZWNsc19pdGVyYXRvciBkZWNsc19lbmQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIFVucmVzb2x2ZWRTZXRJdGVyYXRvcihSZXN1bHRzICsgTnVtUmVzdWx0cyk7CisgICAgcmV0dXJuIFVucmVzb2x2ZWRTZXRJdGVyYXRvcihnZXRUcmFpbGluZ1Jlc3VsdHMoKSArIGdldE51bURlY2xzKCkpOwogICB9CiAgIGxsdm06Oml0ZXJhdG9yX3JhbmdlPGRlY2xzX2l0ZXJhdG9yPiBkZWNscygpIGNvbnN0IHsKICAgICByZXR1cm4gbGx2bTo6bWFrZV9yYW5nZShkZWNsc19iZWdpbigpLCBkZWNsc19lbmQoKSk7CiAgIH0KIAogICAvLy8gR2V0cyB0aGUgbnVtYmVyIG9mIGRlY2xhcmF0aW9ucyBpbiB0aGUgdW5yZXNvbHZlZCBzZXQuCi0gIHVuc2lnbmVkIGdldE51bURlY2xzKCkgY29uc3QgeyByZXR1cm4gTnVtUmVzdWx0czsgfQorICB1bnNpZ25lZCBnZXROdW1EZWNscygpIGNvbnN0IHsgcmV0dXJuIE92ZXJsb2FkRXhwckJpdHMuTnVtUmVzdWx0czsgfQogCiAgIC8vLyBHZXRzIHRoZSBmdWxsIG5hbWUgaW5mby4KICAgY29uc3QgRGVjbGFyYXRpb25OYW1lSW5mbyAmZ2V0TmFtZUluZm8oKSBjb25zdCB7IHJldHVybiBOYW1lSW5mbzsgfQpAQCAtMjcwMiwyMSArMjc1NywyNCBAQAogICAvLy8gUmV0cmlldmUgdGhlIGxvY2F0aW9uIG9mIHRoZSB0ZW1wbGF0ZSBrZXl3b3JkIHByZWNlZGluZwogICAvLy8gdGhpcyBuYW1lLCBpZiBhbnkuCiAgIFNvdXJjZUxvY2F0aW9uIGdldFRlbXBsYXRlS2V5d29yZExvYygpIGNvbnN0IHsKLSAgICBpZiAoIUhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbykgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CisgICAgaWYgKCFoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKSkKKyAgICAgIHJldHVybiBTb3VyY2VMb2NhdGlvbigpOwogICAgIHJldHVybiBnZXRUcmFpbGluZ0FTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbygpLT5UZW1wbGF0ZUtXTG9jOwogICB9CiAKICAgLy8vIFJldHJpZXZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGVmdCBhbmdsZSBicmFja2V0IHN0YXJ0aW5nIHRoZQogICAvLy8gZXhwbGljaXQgdGVtcGxhdGUgYXJndW1lbnQgbGlzdCBmb2xsb3dpbmcgdGhlIG5hbWUsIGlmIGFueS4KICAgU291cmNlTG9jYXRpb24gZ2V0TEFuZ2xlTG9jKCkgY29uc3QgewotICAgIGlmICghSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKSByZXR1cm4gU291cmNlTG9jYXRpb24oKTsKKyAgICBpZiAoIWhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbygpKQorICAgICAgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CiAgICAgcmV0dXJuIGdldFRyYWlsaW5nQVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKCktPkxBbmdsZUxvYzsKICAgfQogCiAgIC8vLyBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhlIHJpZ2h0IGFuZ2xlIGJyYWNrZXQgZW5kaW5nIHRoZQogICAvLy8gZXhwbGljaXQgdGVtcGxhdGUgYXJndW1lbnQgbGlzdCBmb2xsb3dpbmcgdGhlIG5hbWUsIGlmIGFueS4KICAgU291cmNlTG9jYXRpb24gZ2V0UkFuZ2xlTG9jKCkgY29uc3QgewotICAgIGlmICghSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKSByZXR1cm4gU291cmNlTG9jYXRpb24oKTsKKyAgICBpZiAoIWhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbygpKQorICAgICAgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CiAgICAgcmV0dXJuIGdldFRyYWlsaW5nQVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKCktPlJBbmdsZUxvYzsKICAgfQogCkBAIC0yNzY4LDg2ICsyODI2LDgyIEBACiAvLy8gbWVtYmVycyBhbmQgdGhlcmVmb3JlIGFwcGVhciBvbmx5IGluIFVucmVzb2x2ZWRNZW1iZXJMb29rdXBFeHBycy4KIGNsYXNzIFVucmVzb2x2ZWRMb29rdXBFeHByIGZpbmFsCiAgICAgOiBwdWJsaWMgT3ZlcmxvYWRFeHByLAotICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8Ci0gICAgICAgICAgVW5yZXNvbHZlZExvb2t1cEV4cHIsIEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbywgVGVtcGxhdGVBcmd1bWVudExvYz4geworICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8VW5yZXNvbHZlZExvb2t1cEV4cHIsIERlY2xBY2Nlc3NQYWlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVBcmd1bWVudExvYz4gewogICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKICAgZnJpZW5kIGNsYXNzIE92ZXJsb2FkRXhwcjsKICAgZnJpZW5kIFRyYWlsaW5nT2JqZWN0czsKIAotICAvLy8gVHJ1ZSBpZiB0aGVzZSBsb29rdXAgcmVzdWx0cyBzaG91bGQgYmUgZXh0ZW5kZWQgYnkKLSAgLy8vIGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAgaWYgdGhpcyBpcyB0aGUgb3BlcmFuZCBvZiBhIGZ1bmN0aW9uCi0gIC8vLyBjYWxsLgotICBib29sIFJlcXVpcmVzQURMID0gZmFsc2U7Ci0KLSAgLy8vIFRydWUgaWYgdGhlc2UgbG9va3VwIHJlc3VsdHMgYXJlIG92ZXJsb2FkZWQuICBUaGlzIGlzIHByZXR0eQotICAvLy8gdHJpdmlhbGx5IHJlZGVyaXZhYmxlIGlmIHdlIHVyZ2VudGx5IG5lZWQgdG8ga2lsbCB0aGlzIGZpZWxkLgotICBib29sIE92ZXJsb2FkZWQgPSBmYWxzZTsKLQogICAvLy8gVGhlIG5hbWluZyBjbGFzcyAoQysrIFtjbGFzcy5hY2Nlc3MuYmFzZV1wNSkgb2YgdGhlIGxvb2t1cCwgaWYKICAgLy8vIGFueS4gIFRoaXMgY2FuIGdlbmVyYWxseSBiZSByZWNhbGN1bGF0ZWQgZnJvbSB0aGUgY29udGV4dCBjaGFpbiwKLSAgLy8vIGJ1dCB0aGF0IGNhbiBiZSBmYWlybHkgZXhwZW5zaXZlIGZvciB1bnF1YWxpZmllZCBsb29rdXBzLiAgSWYgd2UKLSAgLy8vIHdhbnQgdG8gaW1wcm92ZSBtZW1vcnkgdXNlIGhlcmUsIHRoaXMgY291bGQgZ28gaW4gYSB1bmlvbgotICAvLy8gYWdhaW5zdCB0aGUgcXVhbGlmaWVkLWxvb2t1cCBiaXRzLgotICBDWFhSZWNvcmREZWNsICpOYW1pbmdDbGFzcyA9IG51bGxwdHI7CisgIC8vLyBidXQgdGhhdCBjYW4gYmUgZmFpcmx5IGV4cGVuc2l2ZSBmb3IgdW5xdWFsaWZpZWQgbG9va3Vwcy4KKyAgQ1hYUmVjb3JkRGVjbCAqTmFtaW5nQ2xhc3M7CiAKLSAgVW5yZXNvbHZlZExvb2t1cEV4cHIoY29uc3QgQVNUQ29udGV4dCAmQywKLSAgICAgICAgICAgICAgICAgICAgICAgQ1hYUmVjb3JkRGVjbCAqTmFtaW5nQ2xhc3MsCisgIC8vIFVucmVzb2x2ZWRMb29rdXBFeHByIGlzIGZvbGxvd2VkIGJ5IHNldmVyYWwgdHJhaWxpbmcgb2JqZWN0cy4KKyAgLy8gVGhleSBhcmUgaW4gb3JkZXI6CisgIC8vCisgIC8vICogQW4gYXJyYXkgb2YgZ2V0TnVtUmVzdWx0cygpIERlY2xBY2Nlc3NQYWlyIGZvciB0aGUgcmVzdWx0cy4gVGhlc2UgYXJlCisgIC8vICAgdW5kZXN1Z2FyZWQsIHdoaWNoIGlzIHRvIHNheSwgdGhleSBtYXkgaW5jbHVkZSBVc2luZ1NoYWRvd0RlY2xzLgorICAvLyAgIEFjY2VzcyBpcyByZWxhdGl2ZSB0byB0aGUgbmFtaW5nIGNsYXNzLgorICAvLworICAvLyAqIEFuIG9wdGlvbmFsIEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbyBmb3IgdGhlIGV4cGxpY2l0bHkgc3BlY2lmaWVkCisgIC8vICAgdGVtcGxhdGUga2V5d29yZCBhbmQgYXJndW1lbnRzLiBQcmVzZW50IGlmIGFuZCBvbmx5IGlmCisgIC8vICAgaGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKCkuCisgIC8vCisgIC8vICogQW4gYXJyYXkgb2YgZ2V0TnVtVGVtcGxhdGVBcmdzKCkgVGVtcGxhdGVBcmd1bWVudExvYyBjb250YWluaW5nCisgIC8vICAgbG9jYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBleHBsaWNpdGx5IHNwZWNpZmllZCB0ZW1wbGF0ZSBhcmd1bWVudHMuCisKKyAgVW5yZXNvbHZlZExvb2t1cEV4cHIoY29uc3QgQVNUQ29udGV4dCAmQ29udGV4dCwgQ1hYUmVjb3JkRGVjbCAqTmFtaW5nQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2MgUXVhbGlmaWVyTG9jLAogICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBUZW1wbGF0ZUtXTG9jLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEZWNsYXJhdGlvbk5hbWVJbmZvICZOYW1lSW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBSZXF1aXJlc0FETCwgYm9vbCBPdmVybG9hZGVkLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEZWNsYXJhdGlvbk5hbWVJbmZvICZOYW1lSW5mbywgYm9vbCBSZXF1aXJlc0FETCwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBPdmVybG9hZGVkLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZW1wbGF0ZUFyZ3VtZW50TGlzdEluZm8gKlRlbXBsYXRlQXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgVW5yZXNvbHZlZFNldEl0ZXJhdG9yIEJlZ2luLCBVbnJlc29sdmVkU2V0SXRlcmF0b3IgRW5kKQotICAgICAgOiBPdmVybG9hZEV4cHIoVW5yZXNvbHZlZExvb2t1cEV4cHJDbGFzcywgQywgUXVhbGlmaWVyTG9jLCBUZW1wbGF0ZUtXTG9jLAotICAgICAgICAgICAgICAgICAgICAgTmFtZUluZm8sIFRlbXBsYXRlQXJncywgQmVnaW4sIEVuZCwgZmFsc2UsIGZhbHNlLCBmYWxzZSksCi0gICAgICAgIFJlcXVpcmVzQURMKFJlcXVpcmVzQURMKSwKLSAgICAgICAgT3ZlcmxvYWRlZChPdmVybG9hZGVkKSwgTmFtaW5nQ2xhc3MoTmFtaW5nQ2xhc3MpIHt9CisgICAgICAgICAgICAgICAgICAgICAgIFVucmVzb2x2ZWRTZXRJdGVyYXRvciBCZWdpbiwgVW5yZXNvbHZlZFNldEl0ZXJhdG9yIEVuZCk7CiAKLSAgVW5yZXNvbHZlZExvb2t1cEV4cHIoRW1wdHlTaGVsbCBFbXB0eSkKLSAgICAgIDogT3ZlcmxvYWRFeHByKFVucmVzb2x2ZWRMb29rdXBFeHByQ2xhc3MsIEVtcHR5KSB7fQorICBVbnJlc29sdmVkTG9va3VwRXhwcihFbXB0eVNoZWxsIEVtcHR5LCB1bnNpZ25lZCBOdW1SZXN1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICBib29sIEhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbyk7CiAKLSAgc2l6ZV90IG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbz4pIGNvbnN0IHsKLSAgICByZXR1cm4gSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvID8gMSA6IDA7CisgIHVuc2lnbmVkIG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPERlY2xBY2Nlc3NQYWlyPikgY29uc3QgeworICAgIHJldHVybiBnZXROdW1EZWNscygpOworICB9CisKKyAgdW5zaWduZWQgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2FkVG9rZW48QVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvPikgY29uc3QgeworICAgIHJldHVybiBoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKTsKICAgfQogCiBwdWJsaWM6Ci0gIHN0YXRpYyBVbnJlc29sdmVkTG9va3VwRXhwciAqQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENYWFJlY29yZERlY2wgKk5hbWluZ0NsYXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jIFF1YWxpZmllckxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRGVjbGFyYXRpb25OYW1lSW5mbyAmTmFtZUluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgQURMLCBib29sIE92ZXJsb2FkZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVucmVzb2x2ZWRTZXRJdGVyYXRvciBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5yZXNvbHZlZFNldEl0ZXJhdG9yIEVuZCkgewotICAgIHJldHVybiBuZXcoQykgVW5yZXNvbHZlZExvb2t1cEV4cHIoQywgTmFtaW5nQ2xhc3MsIFF1YWxpZmllckxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uKCksIE5hbWVJbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURMLCBPdmVybG9hZGVkLCBudWxscHRyLCBCZWdpbiwgRW5kKTsKLSAgfQorICBzdGF0aWMgVW5yZXNvbHZlZExvb2t1cEV4cHIgKgorICBDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQ29udGV4dCwgQ1hYUmVjb3JkRGVjbCAqTmFtaW5nQ2xhc3MsCisgICAgICAgICBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jIFF1YWxpZmllckxvYywKKyAgICAgICAgIGNvbnN0IERlY2xhcmF0aW9uTmFtZUluZm8gJk5hbWVJbmZvLCBib29sIFJlcXVpcmVzQURMLCBib29sIE92ZXJsb2FkZWQsCisgICAgICAgICBVbnJlc29sdmVkU2V0SXRlcmF0b3IgQmVnaW4sIFVucmVzb2x2ZWRTZXRJdGVyYXRvciBFbmQpOwogCi0gIHN0YXRpYyBVbnJlc29sdmVkTG9va3VwRXhwciAqQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENYWFJlY29yZERlY2wgKk5hbWluZ0NsYXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jIFF1YWxpZmllckxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gVGVtcGxhdGVLV0xvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRGVjbGFyYXRpb25OYW1lSW5mbyAmTmFtZUluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgQURMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZW1wbGF0ZUFyZ3VtZW50TGlzdEluZm8gKkFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVucmVzb2x2ZWRTZXRJdGVyYXRvciBCZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5yZXNvbHZlZFNldEl0ZXJhdG9yIEVuZCk7CisgIHN0YXRpYyBVbnJlc29sdmVkTG9va3VwRXhwciAqCisgIENyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDb250ZXh0LCBDWFhSZWNvcmREZWNsICpOYW1pbmdDbGFzcywKKyAgICAgICAgIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2MgUXVhbGlmaWVyTG9jLCBTb3VyY2VMb2NhdGlvbiBUZW1wbGF0ZUtXTG9jLAorICAgICAgICAgY29uc3QgRGVjbGFyYXRpb25OYW1lSW5mbyAmTmFtZUluZm8sIGJvb2wgUmVxdWlyZXNBREwsCisgICAgICAgICBjb25zdCBUZW1wbGF0ZUFyZ3VtZW50TGlzdEluZm8gKkFyZ3MsIFVucmVzb2x2ZWRTZXRJdGVyYXRvciBCZWdpbiwKKyAgICAgICAgIFVucmVzb2x2ZWRTZXRJdGVyYXRvciBFbmQpOwogCi0gIHN0YXRpYyBVbnJlc29sdmVkTG9va3VwRXhwciAqQ3JlYXRlRW1wdHkoY29uc3QgQVNUQ29udGV4dCAmQywKKyAgc3RhdGljIFVucmVzb2x2ZWRMb29rdXBFeHByICpDcmVhdGVFbXB0eShjb25zdCBBU1RDb250ZXh0ICZDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE51bVJlc3VsdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBIYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTnVtVGVtcGxhdGVBcmdzKTsKIAogICAvLy8gVHJ1ZSBpZiB0aGlzIGRlY2xhcmF0aW9uIHNob3VsZCBiZSBleHRlbmRlZCBieQogICAvLy8gYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cC4KLSAgYm9vbCByZXF1aXJlc0FETCgpIGNvbnN0IHsgcmV0dXJuIFJlcXVpcmVzQURMOyB9CisgIGJvb2wgcmVxdWlyZXNBREwoKSBjb25zdCB7IHJldHVybiBVbnJlc29sdmVkTG9va3VwRXhwckJpdHMuUmVxdWlyZXNBREw7IH0KIAogICAvLy8gVHJ1ZSBpZiB0aGlzIGxvb2t1cCBpcyBvdmVybG9hZGVkLgotICBib29sIGlzT3ZlcmxvYWRlZCgpIGNvbnN0IHsgcmV0dXJuIE92ZXJsb2FkZWQ7IH0KKyAgYm9vbCBpc092ZXJsb2FkZWQoKSBjb25zdCB7IHJldHVybiBVbnJlc29sdmVkTG9va3VwRXhwckJpdHMuT3ZlcmxvYWRlZDsgfQogCiAgIC8vLyBHZXRzIHRoZSAnbmFtaW5nIGNsYXNzJyAoaW4gdGhlIHNlbnNlIG9mIEMrKzB4CiAgIC8vLyBbY2xhc3MuYWNjZXNzLmJhc2VdcDUpIG9mIHRoZSBsb29rdXAuICBUaGlzIGlzIHRoZSBzY29wZQogICAvLy8gdGhhdCB3YXMgbG9va2VkIGluIHRvIGZpbmQgdGhlc2UgcmVzdWx0cy4KLSAgQ1hYUmVjb3JkRGVjbCAqZ2V0TmFtaW5nQ2xhc3MoKSBjb25zdCB7IHJldHVybiBOYW1pbmdDbGFzczsgfQorICBDWFhSZWNvcmREZWNsICpnZXROYW1pbmdDbGFzcygpIHsgcmV0dXJuIE5hbWluZ0NsYXNzOyB9CisgIGNvbnN0IENYWFJlY29yZERlY2wgKmdldE5hbWluZ0NsYXNzKCkgY29uc3QgeyByZXR1cm4gTmFtaW5nQ2xhc3M7IH0KIAogICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgewogICAgIGlmIChOZXN0ZWROYW1lU3BlY2lmaWVyTG9jIGwgPSBnZXRRdWFsaWZpZXJMb2MoKSkKQEAgLTI4ODksNiArMjk0MywxMCBAQAogICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8RGVwZW5kZW50U2NvcGVEZWNsUmVmRXhwciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlQXJndW1lbnRMb2M+IHsKKyAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgIGZyaWVuZCBjbGFzcyBBU1RTdG10V3JpdGVyOworICBmcmllbmQgVHJhaWxpbmdPYmplY3RzOworCiAgIC8vLyBUaGUgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIHRoYXQgcXVhbGlmaWVzIHRoaXMgdW5yZXNvbHZlZAogICAvLy8gZGVjbGFyYXRpb24gbmFtZS4KICAgTmVzdGVkTmFtZVNwZWNpZmllckxvYyBRdWFsaWZpZXJMb2M7CkBAIC0yODk2LDMyICsyOTU0LDI2IEBACiAgIC8vLyBUaGUgbmFtZSBvZiB0aGUgZW50aXR5IHdlIHdpbGwgYmUgcmVmZXJlbmNpbmcuCiAgIERlY2xhcmF0aW9uTmFtZUluZm8gTmFtZUluZm87CiAKLSAgLy8vIFdoZXRoZXIgdGhlIG5hbWUgaW5jbHVkZXMgaW5mbyBmb3IgZXhwbGljaXQgdGVtcGxhdGUKLSAgLy8vIGtleXdvcmQgYW5kIGFyZ3VtZW50cy4KLSAgYm9vbCBIYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm87Ci0KLSAgRGVwZW5kZW50U2NvcGVEZWNsUmVmRXhwcihRdWFsVHlwZSBULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2MgUXVhbGlmaWVyTG9jLAorICBEZXBlbmRlbnRTY29wZURlY2xSZWZFeHByKFF1YWxUeXBlIFR5LCBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jIFF1YWxpZmllckxvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBUZW1wbGF0ZUtXTG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERlY2xhcmF0aW9uTmFtZUluZm8gJk5hbWVJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlbXBsYXRlQXJndW1lbnRMaXN0SW5mbyAqQXJncyk7CiAKICAgc2l6ZV90IG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbz4pIGNvbnN0IHsKLSAgICByZXR1cm4gSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvID8gMSA6IDA7CisgICAgcmV0dXJuIGhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbygpOworICB9CisKKyAgYm9vbCBoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKSBjb25zdCB7CisgICAgcmV0dXJuIERlcGVuZGVudFNjb3BlRGVjbFJlZkV4cHJCaXRzLkhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbzsKICAgfQogCiBwdWJsaWM6Ci0gIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOwotICBmcmllbmQgY2xhc3MgQVNUU3RtdFdyaXRlcjsKLSAgZnJpZW5kIFRyYWlsaW5nT2JqZWN0czsKKyAgc3RhdGljIERlcGVuZGVudFNjb3BlRGVjbFJlZkV4cHIgKgorICBDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQ29udGV4dCwgTmVzdGVkTmFtZVNwZWNpZmllckxvYyBRdWFsaWZpZXJMb2MsCisgICAgICAgICBTb3VyY2VMb2NhdGlvbiBUZW1wbGF0ZUtXTG9jLCBjb25zdCBEZWNsYXJhdGlvbk5hbWVJbmZvICZOYW1lSW5mbywKKyAgICAgICAgIGNvbnN0IFRlbXBsYXRlQXJndW1lbnRMaXN0SW5mbyAqVGVtcGxhdGVBcmdzKTsKIAotICBzdGF0aWMgRGVwZW5kZW50U2NvcGVEZWNsUmVmRXhwciAqQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmVzdGVkTmFtZVNwZWNpZmllckxvYyBRdWFsaWZpZXJMb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gVGVtcGxhdGVLV0xvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEZWNsYXJhdGlvbk5hbWVJbmZvICZOYW1lSW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRlbXBsYXRlQXJndW1lbnRMaXN0SW5mbyAqVGVtcGxhdGVBcmdzKTsKLQotICBzdGF0aWMgRGVwZW5kZW50U2NvcGVEZWNsUmVmRXhwciAqQ3JlYXRlRW1wdHkoY29uc3QgQVNUQ29udGV4dCAmQywKKyAgc3RhdGljIERlcGVuZGVudFNjb3BlRGVjbFJlZkV4cHIgKkNyZWF0ZUVtcHR5KGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIEhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE51bVRlbXBsYXRlQXJncyk7CiAKQEAgLTI5NDksMjEgKzMwMDEsMjQgQEAKICAgLy8vIFJldHJpZXZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgdGVtcGxhdGUga2V5d29yZCBwcmVjZWRpbmcKICAgLy8vIHRoaXMgbmFtZSwgaWYgYW55LgogICBTb3VyY2VMb2NhdGlvbiBnZXRUZW1wbGF0ZUtleXdvcmRMb2MoKSBjb25zdCB7Ci0gICAgaWYgKCFIYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8pIHJldHVybiBTb3VyY2VMb2NhdGlvbigpOworICAgIGlmICghaGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKCkpCisgICAgICByZXR1cm4gU291cmNlTG9jYXRpb24oKTsKICAgICByZXR1cm4gZ2V0VHJhaWxpbmdPYmplY3RzPEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbz4oKS0+VGVtcGxhdGVLV0xvYzsKICAgfQogCiAgIC8vLyBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhlIGxlZnQgYW5nbGUgYnJhY2tldCBzdGFydGluZyB0aGUKICAgLy8vIGV4cGxpY2l0IHRlbXBsYXRlIGFyZ3VtZW50IGxpc3QgZm9sbG93aW5nIHRoZSBuYW1lLCBpZiBhbnkuCiAgIFNvdXJjZUxvY2F0aW9uIGdldExBbmdsZUxvYygpIGNvbnN0IHsKLSAgICBpZiAoIUhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbykgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CisgICAgaWYgKCFoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKSkKKyAgICAgIHJldHVybiBTb3VyY2VMb2NhdGlvbigpOwogICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8QVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvPigpLT5MQW5nbGVMb2M7CiAgIH0KIAogICAvLy8gUmV0cmlldmUgdGhlIGxvY2F0aW9uIG9mIHRoZSByaWdodCBhbmdsZSBicmFja2V0IGVuZGluZyB0aGUKICAgLy8vIGV4cGxpY2l0IHRlbXBsYXRlIGFyZ3VtZW50IGxpc3QgZm9sbG93aW5nIHRoZSBuYW1lLCBpZiBhbnkuCiAgIFNvdXJjZUxvY2F0aW9uIGdldFJBbmdsZUxvYygpIGNvbnN0IHsKLSAgICBpZiAoIUhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbykgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CisgICAgaWYgKCFoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKSkKKyAgICAgIHJldHVybiBTb3VyY2VMb2NhdGlvbigpOwogICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8QVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvPigpLT5SQW5nbGVMb2M7CiAgIH0KIApAQCAtMzAzMSw3ICszMDg2LDcgQEAKIC8vLyBwb3RlbnRpYWxseS1ldmFsdWF0ZWQgYmxvY2sgbGl0ZXJhbC4gIFRoZSBsaWZldGltZSBvZiBhIGJsb2NrCiAvLy8gbGl0ZXJhbCBpcyB0aGUgZXh0ZW50IG9mIHRoZSBlbmNsb3Npbmcgc2NvcGUuCiBjbGFzcyBFeHByV2l0aENsZWFudXBzIGZpbmFsCi0gICAgOiBwdWJsaWMgRXhwciwKKyAgICA6IHB1YmxpYyBGdWxsRXhwciwKICAgICAgIHByaXZhdGUgbGx2bTo6VHJhaWxpbmdPYmplY3RzPEV4cHJXaXRoQ2xlYW51cHMsIEJsb2NrRGVjbCAqPiB7CiBwdWJsaWM6CiAgIC8vLyBUaGUgdHlwZSBvZiBvYmplY3RzIHRoYXQgYXJlIGtlcHQgaW4gdGhlIGNsZWFudXAuCkBAIC0zMDQ0LDggKzMwOTksNiBAQAogICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKICAgZnJpZW5kIFRyYWlsaW5nT2JqZWN0czsKIAotICBTdG10ICpTdWJFeHByOwotCiAgIEV4cHJXaXRoQ2xlYW51cHMoRW1wdHlTaGVsbCwgdW5zaWduZWQgTnVtT2JqZWN0cyk7CiAgIEV4cHJXaXRoQ2xlYW51cHMoRXhwciAqU3ViRXhwciwgYm9vbCBDbGVhbnVwc0hhdmVTaWRlRWZmZWN0cywKICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxDbGVhbnVwT2JqZWN0PiBPYmplY3RzKTsKQEAgLTMwNzAsMTcgKzMxMjMsMTAgQEAKICAgICByZXR1cm4gZ2V0T2JqZWN0cygpW2ldOwogICB9CiAKLSAgRXhwciAqZ2V0U3ViRXhwcigpIHsgcmV0dXJuIGNhc3Q8RXhwcj4oU3ViRXhwcik7IH0KLSAgY29uc3QgRXhwciAqZ2V0U3ViRXhwcigpIGNvbnN0IHsgcmV0dXJuIGNhc3Q8RXhwcj4oU3ViRXhwcik7IH0KLQogICBib29sIGNsZWFudXBzSGF2ZVNpZGVFZmZlY3RzKCkgY29uc3QgewogICAgIHJldHVybiBFeHByV2l0aENsZWFudXBzQml0cy5DbGVhbnVwc0hhdmVTaWRlRWZmZWN0czsKICAgfQogCi0gIC8vLyBBcyB3aXRoIGFueSBtdXRhdG9yIG9mIHRoZSBBU1QsIGJlIHZlcnkgY2FyZWZ1bAotICAvLy8gd2hlbiBtb2RpZnlpbmcgYW4gZXhpc3RpbmcgQVNUIHRvIHByZXNlcnZlIGl0cyBpbnZhcmlhbnRzLgotICB2b2lkIHNldFN1YkV4cHIoRXhwciAqRSkgeyBTdWJFeHByID0gRTsgfQotCiAgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7CiAgICAgcmV0dXJuIFN1YkV4cHItPmdldEJlZ2luTG9jKCk7CiAgIH0KQEAgLTMxMjYsNyArMzE3Miw3IEBACiAgIGZyaWVuZCBUcmFpbGluZ09iamVjdHM7CiAKICAgLy8vIFRoZSB0eXBlIGJlaW5nIGNvbnN0cnVjdGVkLgotICBUeXBlU291cmNlSW5mbyAqVHlwZSA9IG51bGxwdHI7CisgIFR5cGVTb3VyY2VJbmZvICpUU0k7CiAKICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgbGVmdCBwYXJlbnRoZXNlcyAoJygnKS4KICAgU291cmNlTG9jYXRpb24gTFBhcmVuTG9jOwpAQCAtMzEzNCwzNCArMzE4MCwzMSBAQAogICAvLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSByaWdodCBwYXJlbnRoZXNlcyAoJyknKS4KICAgU291cmNlTG9jYXRpb24gUlBhcmVuTG9jOwogCi0gIC8vLyBUaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgdHlwZS4KLSAgdW5zaWduZWQgTnVtQXJnczsKLQotICBDWFhVbnJlc29sdmVkQ29uc3RydWN0RXhwcihUeXBlU291cmNlSW5mbyAqVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTFBhcmVuTG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxFeHByKj4gQXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gUlBhcmVuTG9jKTsKKyAgQ1hYVW5yZXNvbHZlZENvbnN0cnVjdEV4cHIoVHlwZVNvdXJjZUluZm8gKlRTSSwgU291cmNlTG9jYXRpb24gTFBhcmVuTG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxFeHByICo+IEFyZ3MsIFNvdXJjZUxvY2F0aW9uIFJQYXJlbkxvYyk7CiAKICAgQ1hYVW5yZXNvbHZlZENvbnN0cnVjdEV4cHIoRW1wdHlTaGVsbCBFbXB0eSwgdW5zaWduZWQgTnVtQXJncykKLSAgICAgIDogRXhwcihDWFhVbnJlc29sdmVkQ29uc3RydWN0RXhwckNsYXNzLCBFbXB0eSksIE51bUFyZ3MoTnVtQXJncykge30KKyAgICAgIDogRXhwcihDWFhVbnJlc29sdmVkQ29uc3RydWN0RXhwckNsYXNzLCBFbXB0eSkgeworICAgIENYWFVucmVzb2x2ZWRDb25zdHJ1Y3RFeHByQml0cy5OdW1BcmdzID0gTnVtQXJnczsKKyAgfQogCiBwdWJsaWM6Ci0gIHN0YXRpYyBDWFhVbnJlc29sdmVkQ29uc3RydWN0RXhwciAqQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkMsCisgIHN0YXRpYyBDWFhVbnJlc29sdmVkQ29uc3RydWN0RXhwciAqQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVTb3VyY2VJbmZvICpUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBMUGFyZW5Mb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEV4cHIqPiBBcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxFeHByICo+IEFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFJQYXJlbkxvYyk7CiAKLSAgc3RhdGljIENYWFVucmVzb2x2ZWRDb25zdHJ1Y3RFeHByICpDcmVhdGVFbXB0eShjb25zdCBBU1RDb250ZXh0ICZDLAorICBzdGF0aWMgQ1hYVW5yZXNvbHZlZENvbnN0cnVjdEV4cHIgKkNyZWF0ZUVtcHR5KGNvbnN0IEFTVENvbnRleHQgJkNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTnVtQXJncyk7CiAKICAgLy8vIFJldHJpZXZlIHRoZSB0eXBlIHRoYXQgaXMgYmVpbmcgY29uc3RydWN0ZWQsIGFzIHNwZWNpZmllZAogICAvLy8gaW4gdGhlIHNvdXJjZSBjb2RlLgotICBRdWFsVHlwZSBnZXRUeXBlQXNXcml0dGVuKCkgY29uc3QgeyByZXR1cm4gVHlwZS0+Z2V0VHlwZSgpOyB9CisgIFF1YWxUeXBlIGdldFR5cGVBc1dyaXR0ZW4oKSBjb25zdCB7IHJldHVybiBUU0ktPmdldFR5cGUoKTsgfQogCiAgIC8vLyBSZXRyaWV2ZSB0aGUgdHlwZSBzb3VyY2UgaW5mb3JtYXRpb24gZm9yIHRoZSB0eXBlIGJlaW5nCiAgIC8vLyBjb25zdHJ1Y3RlZC4KLSAgVHlwZVNvdXJjZUluZm8gKmdldFR5cGVTb3VyY2VJbmZvKCkgY29uc3QgeyByZXR1cm4gVHlwZTsgfQorICBUeXBlU291cmNlSW5mbyAqZ2V0VHlwZVNvdXJjZUluZm8oKSBjb25zdCB7IHJldHVybiBUU0k7IH0KIAogICAvLy8gUmV0cmlldmUgdGhlIGxvY2F0aW9uIG9mIHRoZSBsZWZ0IHBhcmVudGhlc2VzICgnKCcpIHRoYXQKICAgLy8vIHByZWNlZGVzIHRoZSBhcmd1bWVudCBsaXN0LgpAQCAtMzE3OSw0NiArMzIyMiw0MyBAQAogICBib29sIGlzTGlzdEluaXRpYWxpemF0aW9uKCkgY29uc3QgeyByZXR1cm4gTFBhcmVuTG9jLmlzSW52YWxpZCgpOyB9CiAKICAgLy8vIFJldHJpZXZlIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzLgotICB1bnNpZ25lZCBhcmdfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIE51bUFyZ3M7IH0KKyAgdW5zaWduZWQgYXJnX3NpemUoKSBjb25zdCB7IHJldHVybiBDWFhVbnJlc29sdmVkQ29uc3RydWN0RXhwckJpdHMuTnVtQXJnczsgfQogCiAgIHVzaW5nIGFyZ19pdGVyYXRvciA9IEV4cHIgKio7CiAgIHVzaW5nIGFyZ19yYW5nZSA9IGxsdm06Oml0ZXJhdG9yX3JhbmdlPGFyZ19pdGVyYXRvcj47CiAKICAgYXJnX2l0ZXJhdG9yIGFyZ19iZWdpbigpIHsgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxFeHByICo+KCk7IH0KLSAgYXJnX2l0ZXJhdG9yIGFyZ19lbmQoKSB7IHJldHVybiBhcmdfYmVnaW4oKSArIE51bUFyZ3M7IH0KKyAgYXJnX2l0ZXJhdG9yIGFyZ19lbmQoKSB7IHJldHVybiBhcmdfYmVnaW4oKSArIGFyZ19zaXplKCk7IH0KICAgYXJnX3JhbmdlIGFyZ3VtZW50cygpIHsgcmV0dXJuIGFyZ19yYW5nZShhcmdfYmVnaW4oKSwgYXJnX2VuZCgpKTsgfQogCiAgIHVzaW5nIGNvbnN0X2FyZ19pdGVyYXRvciA9IGNvbnN0IEV4cHIqIGNvbnN0ICo7CiAgIHVzaW5nIGNvbnN0X2FyZ19yYW5nZSA9IGxsdm06Oml0ZXJhdG9yX3JhbmdlPGNvbnN0X2FyZ19pdGVyYXRvcj47CiAKICAgY29uc3RfYXJnX2l0ZXJhdG9yIGFyZ19iZWdpbigpIGNvbnN0IHsgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxFeHByICo+KCk7IH0KLSAgY29uc3RfYXJnX2l0ZXJhdG9yIGFyZ19lbmQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGFyZ19iZWdpbigpICsgTnVtQXJnczsKLSAgfQorICBjb25zdF9hcmdfaXRlcmF0b3IgYXJnX2VuZCgpIGNvbnN0IHsgcmV0dXJuIGFyZ19iZWdpbigpICsgYXJnX3NpemUoKTsgfQogICBjb25zdF9hcmdfcmFuZ2UgYXJndW1lbnRzKCkgY29uc3QgewogICAgIHJldHVybiBjb25zdF9hcmdfcmFuZ2UoYXJnX2JlZ2luKCksIGFyZ19lbmQoKSk7CiAgIH0KIAogICBFeHByICpnZXRBcmcodW5zaWduZWQgSSkgewotICAgIGFzc2VydChJIDwgTnVtQXJncyAmJiAiQXJndW1lbnQgaW5kZXggb3V0LW9mLXJhbmdlIik7Ci0gICAgcmV0dXJuICooYXJnX2JlZ2luKCkgKyBJKTsKKyAgICBhc3NlcnQoSSA8IGFyZ19zaXplKCkgJiYgIkFyZ3VtZW50IGluZGV4IG91dC1vZi1yYW5nZSIpOworICAgIHJldHVybiBhcmdfYmVnaW4oKVtJXTsKICAgfQogCiAgIGNvbnN0IEV4cHIgKmdldEFyZyh1bnNpZ25lZCBJKSBjb25zdCB7Ci0gICAgYXNzZXJ0KEkgPCBOdW1BcmdzICYmICJBcmd1bWVudCBpbmRleCBvdXQtb2YtcmFuZ2UiKTsKLSAgICByZXR1cm4gKihhcmdfYmVnaW4oKSArIEkpOworICAgIGFzc2VydChJIDwgYXJnX3NpemUoKSAmJiAiQXJndW1lbnQgaW5kZXggb3V0LW9mLXJhbmdlIik7CisgICAgcmV0dXJuIGFyZ19iZWdpbigpW0ldOwogICB9CiAKICAgdm9pZCBzZXRBcmcodW5zaWduZWQgSSwgRXhwciAqRSkgewotICAgIGFzc2VydChJIDwgTnVtQXJncyAmJiAiQXJndW1lbnQgaW5kZXggb3V0LW9mLXJhbmdlIik7Ci0gICAgKihhcmdfYmVnaW4oKSArIEkpID0gRTsKKyAgICBhc3NlcnQoSSA8IGFyZ19zaXplKCkgJiYgIkFyZ3VtZW50IGluZGV4IG91dC1vZi1yYW5nZSIpOworICAgIGFyZ19iZWdpbigpW0ldID0gRTsKICAgfQogCiAgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWTsKLQogICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsKLSAgICBpZiAoIVJQYXJlbkxvYy5pc1ZhbGlkKCkgJiYgTnVtQXJncyA+IDApCi0gICAgICByZXR1cm4gZ2V0QXJnKE51bUFyZ3MgLSAxKS0+Z2V0RW5kTG9jKCk7CisgICAgaWYgKCFSUGFyZW5Mb2MuaXNWYWxpZCgpICYmIGFyZ19zaXplKCkgPiAwKQorICAgICAgcmV0dXJuIGdldEFyZyhhcmdfc2l6ZSgpIC0gMSktPmdldEVuZExvYygpOwogICAgIHJldHVybiBSUGFyZW5Mb2M7CiAgIH0KIApAQCAtMzIyOSw3ICszMjY5LDcgQEAKICAgLy8gSXRlcmF0b3JzCiAgIGNoaWxkX3JhbmdlIGNoaWxkcmVuKCkgewogICAgIGF1dG8gKipiZWdpbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RtdCAqKj4oYXJnX2JlZ2luKCkpOwotICAgIHJldHVybiBjaGlsZF9yYW5nZShiZWdpbiwgYmVnaW4gKyBOdW1BcmdzKTsKKyAgICByZXR1cm4gY2hpbGRfcmFuZ2UoYmVnaW4sIGJlZ2luICsgYXJnX3NpemUoKSk7CiAgIH0KIH07CiAKQEAgLTMyNDQsNyArMzI4NCwxMSBAQAogICAgIDogcHVibGljIEV4cHIsCiAgICAgICBwcml2YXRlIGxsdm06OlRyYWlsaW5nT2JqZWN0czxDWFhEZXBlbmRlbnRTY29wZU1lbWJlckV4cHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUFyZ3VtZW50TG9jPiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUFyZ3VtZW50TG9jLCBOYW1lZERlY2wgKj4geworICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKKyAgZnJpZW5kIGNsYXNzIEFTVFN0bXRXcml0ZXI7CisgIGZyaWVuZCBUcmFpbGluZ09iamVjdHM7CisKICAgLy8vIFRoZSBleHByZXNzaW9uIGZvciB0aGUgYmFzZSBwb2ludGVyIG9yIGNsYXNzIHJlZmVyZW5jZSwKICAgLy8vIGUuZy4sIHRoZSBcYyB4IGluIHguZi4gIENhbiBiZSBudWxsIGluIGltcGxpY2l0IGFjY2Vzc2VzLgogICBTdG10ICpCYXNlOwpAQCAtMzI1Myw0MCArMzI5Nyw1MyBAQAogICAvLy8gaW1wbGljaXQgYWNjZXNzZXMuCiAgIFF1YWxUeXBlIEJhc2VUeXBlOwogCi0gIC8vLyBXaGV0aGVyIHRoaXMgbWVtYmVyIGV4cHJlc3Npb24gdXNlZCB0aGUgJy0+JyBvcGVyYXRvciBvcgotICAvLy8gdGhlICcuJyBvcGVyYXRvci4KLSAgYm9vbCBJc0Fycm93IDogMTsKLQotICAvLy8gV2hldGhlciB0aGlzIG1lbWJlciBleHByZXNzaW9uIGhhcyBpbmZvIGZvciBleHBsaWNpdCB0ZW1wbGF0ZQotICAvLy8ga2V5d29yZCBhbmQgYXJndW1lbnRzLgotICBib29sIEhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbyA6IDE7Ci0KLSAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgJy0+JyBvciAnLicgb3BlcmF0b3IuCi0gIFNvdXJjZUxvY2F0aW9uIE9wZXJhdG9yTG9jOwotCiAgIC8vLyBUaGUgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIHRoYXQgcHJlY2VkZXMgdGhlIG1lbWJlciBuYW1lLCBpZiBhbnkuCisgIC8vLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBpbiBwcmluY2lwbGUgc3RvcmUgYXMgYSB0cmFpbGluZyBvYmplY3QuCisgIC8vLyBIb3dldmVyIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3Qgb2YgZG9pbmcgc28gc2hvdWxkIGJlIGludmVzdGlnYXRlZCBmaXJzdC4KICAgTmVzdGVkTmFtZVNwZWNpZmllckxvYyBRdWFsaWZpZXJMb2M7CiAKLSAgLy8vIEluIGEgcXVhbGlmaWVkIG1lbWJlciBhY2Nlc3MgZXhwcmVzc2lvbiBzdWNoIGFzIHQtPkJhc2U6OmYsIHRoaXMKLSAgLy8vIG1lbWJlciBzdG9yZXMgdGhlIHJlc29sdmVzIG9mIG5hbWUgbG9va3VwIGluIHRoZSBjb250ZXh0IG9mIHRoZSBtZW1iZXIKLSAgLy8vIGFjY2VzcyBleHByZXNzaW9uLCB0byBiZSB1c2VkIGF0IGluc3RhbnRpYXRpb24gdGltZS4KLSAgLy8vCi0gIC8vLyBGSVhNRTogVGhpcyBtZW1iZXIsIGFsb25nIHdpdGggdGhlIFF1YWxpZmllckxvYywgY291bGQKLSAgLy8vIGJlIHN0dWNrIGludG8gYSBzdHJ1Y3R1cmUgdGhhdCBpcyBvcHRpb25hbGx5IGFsbG9jYXRlZCBhdCB0aGUgZW5kIG9mCi0gIC8vLyB0aGUgQ1hYRGVwZW5kZW50U2NvcGVNZW1iZXJFeHByLCB0byBzYXZlIHNwYWNlIGluIHRoZSBjb21tb24gY2FzZS4KLSAgTmFtZWREZWNsICpGaXJzdFF1YWxpZmllckZvdW5kSW5TY29wZTsKLQogICAvLy8gVGhlIG1lbWJlciB0byB3aGljaCB0aGlzIG1lbWJlciBleHByZXNzaW9uIHJlZmVycywgd2hpY2gKICAgLy8vIGNhbiBiZSBuYW1lLCBvdmVybG9hZGVkIG9wZXJhdG9yLCBvciBkZXN0cnVjdG9yLgogICAvLy8KICAgLy8vIEZJWE1FOiBjb3VsZCBhbHNvIGJlIGEgdGVtcGxhdGUtaWQKICAgRGVjbGFyYXRpb25OYW1lSW5mbyBNZW1iZXJOYW1lSW5mbzsKIAotICBzaXplX3QgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2FkVG9rZW48QVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvPikgY29uc3QgewotICAgIHJldHVybiBIYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8gPyAxIDogMDsKKyAgLy8gQ1hYRGVwZW5kZW50U2NvcGVNZW1iZXJFeHByIGlzIGZvbGxvd2VkIGJ5IHNldmVyYWwgdHJhaWxpbmcgb2JqZWN0cywKKyAgLy8gc29tZSBvZiB3aGljaCBvcHRpb25hbC4gVGhleSBhcmUgaW4gb3JkZXI6CisgIC8vCisgIC8vICogQW4gb3B0aW9uYWwgQVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvIGZvciB0aGUgZXhwbGljaXRseSBzcGVjaWZpZWQKKyAgLy8gICB0ZW1wbGF0ZSBrZXl3b3JkIGFuZCBhcmd1bWVudHMuIFByZXNlbnQgaWYgYW5kIG9ubHkgaWYKKyAgLy8gICBoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKS4KKyAgLy8KKyAgLy8gKiBBbiBhcnJheSBvZiBnZXROdW1UZW1wbGF0ZUFyZ3MoKSBUZW1wbGF0ZUFyZ3VtZW50TG9jIGNvbnRhaW5pbmcgbG9jYXRpb24KKyAgLy8gICBpbmZvcm1hdGlvbiBmb3IgdGhlIGV4cGxpY2l0bHkgc3BlY2lmaWVkIHRlbXBsYXRlIGFyZ3VtZW50cy4KKyAgLy8KKyAgLy8gKiBBbiBvcHRpb25hbCBOYW1lZERlY2wgKi4gSW4gYSBxdWFsaWZpZWQgbWVtYmVyIGFjY2VzcyBleHByZXNzaW9uIHN1Y2gKKyAgLy8gICBhcyB0LT5CYXNlOjpmLCB0aGlzIG1lbWJlciBzdG9yZXMgdGhlIHJlc29sdmVzIG9mIG5hbWUgbG9va3VwIGluIHRoZQorICAvLyAgIGNvbnRleHQgb2YgdGhlIG1lbWJlciBhY2Nlc3MgZXhwcmVzc2lvbiwgdG8gYmUgdXNlZCBhdCBpbnN0YW50aWF0aW9uCisgIC8vICAgdGltZS4gUHJlc2VudCBpZiBhbmQgb25seSBpZiBoYXNGaXJzdFF1YWxpZmllckZvdW5kSW5TY29wZSgpLgorCisgIGJvb2wgaGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKCkgY29uc3QgeworICAgIHJldHVybiBDWFhEZXBlbmRlbnRTY29wZU1lbWJlckV4cHJCaXRzLkhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbzsKICAgfQogCi0gIENYWERlcGVuZGVudFNjb3BlTWVtYmVyRXhwcihjb25zdCBBU1RDb250ZXh0ICZDLCBFeHByICpCYXNlLAorICBib29sIGhhc0ZpcnN0UXVhbGlmaWVyRm91bmRJblNjb3BlKCkgY29uc3QgeworICAgIHJldHVybiBDWFhEZXBlbmRlbnRTY29wZU1lbWJlckV4cHJCaXRzLkhhc0ZpcnN0UXVhbGlmaWVyRm91bmRJblNjb3BlOworICB9CisKKyAgdW5zaWduZWQgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2FkVG9rZW48QVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvPikgY29uc3QgeworICAgIHJldHVybiBoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKTsKKyAgfQorCisgIHVuc2lnbmVkIG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPFRlbXBsYXRlQXJndW1lbnRMb2M+KSBjb25zdCB7CisgICAgcmV0dXJuIGdldE51bVRlbXBsYXRlQXJncygpOworICB9CisKKyAgdW5zaWduZWQgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2FkVG9rZW48TmFtZWREZWNsICo+KSBjb25zdCB7CisgICAgcmV0dXJuIGhhc0ZpcnN0UXVhbGlmaWVyRm91bmRJblNjb3BlKCk7CisgIH0KKworICBDWFhEZXBlbmRlbnRTY29wZU1lbWJlckV4cHIoY29uc3QgQVNUQ29udGV4dCAmQ3R4LCBFeHByICpCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgQmFzZVR5cGUsIGJvb2wgSXNBcnJvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIE9wZXJhdG9yTG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmVzdGVkTmFtZVNwZWNpZmllckxvYyBRdWFsaWZpZXJMb2MsCkBAIC0zMjk1LDMzICszMzUyLDI5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNsYXJhdGlvbk5hbWVJbmZvIE1lbWJlck5hbWVJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVtcGxhdGVBcmd1bWVudExpc3RJbmZvICpUZW1wbGF0ZUFyZ3MpOwogCisgIENYWERlcGVuZGVudFNjb3BlTWVtYmVyRXhwcihFbXB0eVNoZWxsIEVtcHR5LCBib29sIEhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgSGFzRmlyc3RRdWFsaWZpZXJGb3VuZEluU2NvcGUpOworCiBwdWJsaWM6Ci0gIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOwotICBmcmllbmQgY2xhc3MgQVNUU3RtdFdyaXRlcjsKLSAgZnJpZW5kIFRyYWlsaW5nT2JqZWN0czsKLQotICBDWFhEZXBlbmRlbnRTY29wZU1lbWJlckV4cHIoY29uc3QgQVNUQ29udGV4dCAmQywgRXhwciAqQmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIEJhc2VUeXBlLCBib29sIElzQXJyb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBPcGVyYXRvckxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5lc3RlZE5hbWVTcGVjaWZpZXJMb2MgUXVhbGlmaWVyTG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZWREZWNsICpGaXJzdFF1YWxpZmllckZvdW5kSW5TY29wZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2xhcmF0aW9uTmFtZUluZm8gTWVtYmVyTmFtZUluZm8pOwotCiAgIHN0YXRpYyBDWFhEZXBlbmRlbnRTY29wZU1lbWJlckV4cHIgKgotICBDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQywgRXhwciAqQmFzZSwgUXVhbFR5cGUgQmFzZVR5cGUsIGJvb2wgSXNBcnJvdywKKyAgQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkN0eCwgRXhwciAqQmFzZSwgUXVhbFR5cGUgQmFzZVR5cGUsIGJvb2wgSXNBcnJvdywKICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIE9wZXJhdG9yTG9jLCBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jIFF1YWxpZmllckxvYywKICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFRlbXBsYXRlS1dMb2MsIE5hbWVkRGVjbCAqRmlyc3RRdWFsaWZpZXJGb3VuZEluU2NvcGUsCiAgICAgICAgICBEZWNsYXJhdGlvbk5hbWVJbmZvIE1lbWJlck5hbWVJbmZvLAogICAgICAgICAgY29uc3QgVGVtcGxhdGVBcmd1bWVudExpc3RJbmZvICpUZW1wbGF0ZUFyZ3MpOwogCiAgIHN0YXRpYyBDWFhEZXBlbmRlbnRTY29wZU1lbWJlckV4cHIgKgotICBDcmVhdGVFbXB0eShjb25zdCBBU1RDb250ZXh0ICZDLCBib29sIEhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbywKLSAgICAgICAgICAgICAgdW5zaWduZWQgTnVtVGVtcGxhdGVBcmdzKTsKKyAgQ3JlYXRlRW1wdHkoY29uc3QgQVNUQ29udGV4dCAmQ3R4LCBib29sIEhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbywKKyAgICAgICAgICAgICAgdW5zaWduZWQgTnVtVGVtcGxhdGVBcmdzLCBib29sIEhhc0ZpcnN0UXVhbGlmaWVyRm91bmRJblNjb3BlKTsKIAogICAvLy8gVHJ1ZSBpZiB0aGlzIGlzIGFuIGltcGxpY2l0IGFjY2VzcywgaS5lLiBvbmUgaW4gd2hpY2ggdGhlCiAgIC8vLyBtZW1iZXIgYmVpbmcgYWNjZXNzZWQgd2FzIG5vdCB3cml0dGVuIGluIHRoZSBzb3VyY2UuICBUaGUgc291cmNlCiAgIC8vLyBsb2NhdGlvbiBvZiB0aGUgb3BlcmF0b3IgaXMgaW52YWxpZCBpbiB0aGlzIGNhc2UuCi0gIGJvb2wgaXNJbXBsaWNpdEFjY2VzcygpIGNvbnN0OworICBib29sIGlzSW1wbGljaXRBY2Nlc3MoKSBjb25zdCB7CisgICAgaWYgKCFCYXNlKQorICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGNhc3Q8RXhwcj4oQmFzZSktPmlzSW1wbGljaXRDWFhUaGlzKCk7CisgIH0KIAogICAvLy8gUmV0cmlldmUgdGhlIGJhc2Ugb2JqZWN0IG9mIHRoaXMgbWVtYmVyIGV4cHJlc3Npb25zLAogICAvLy8gZS5nLiwgdGhlIFxjIHggaW4gXGMgeC5tLgpAQCAtMzMzNCwxMyArMzM4NywxNCBAQAogCiAgIC8vLyBEZXRlcm1pbmUgd2hldGhlciB0aGlzIG1lbWJlciBleHByZXNzaW9uIHVzZWQgdGhlICctPicKICAgLy8vIG9wZXJhdG9yOyBvdGhlcndpc2UsIGl0IHVzZWQgdGhlICcuJyBvcGVyYXRvci4KLSAgYm9vbCBpc0Fycm93KCkgY29uc3QgeyByZXR1cm4gSXNBcnJvdzsgfQorICBib29sIGlzQXJyb3coKSBjb25zdCB7IHJldHVybiBDWFhEZXBlbmRlbnRTY29wZU1lbWJlckV4cHJCaXRzLklzQXJyb3c7IH0KIAogICAvLy8gUmV0cmlldmUgdGhlIGxvY2F0aW9uIG9mIHRoZSAnLT4nIG9yICcuJyBvcGVyYXRvci4KLSAgU291cmNlTG9jYXRpb24gZ2V0T3BlcmF0b3JMb2MoKSBjb25zdCB7IHJldHVybiBPcGVyYXRvckxvYzsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRPcGVyYXRvckxvYygpIGNvbnN0IHsKKyAgICByZXR1cm4gQ1hYRGVwZW5kZW50U2NvcGVNZW1iZXJFeHByQml0cy5PcGVyYXRvckxvYzsKKyAgfQogCi0gIC8vLyBSZXRyaWV2ZSB0aGUgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIHRoYXQgcXVhbGlmaWVzIHRoZSBtZW1iZXIKLSAgLy8vIG5hbWUuCisgIC8vLyBSZXRyaWV2ZSB0aGUgbmVzdGVkLW5hbWUtc3BlY2lmaWVyIHRoYXQgcXVhbGlmaWVzIHRoZSBtZW1iZXIgbmFtZS4KICAgTmVzdGVkTmFtZVNwZWNpZmllciAqZ2V0UXVhbGlmaWVyKCkgY29uc3QgewogICAgIHJldHVybiBRdWFsaWZpZXJMb2MuZ2V0TmVzdGVkTmFtZVNwZWNpZmllcigpOwogICB9CkBAIC0zMzYxLDE3ICszNDE1LDE3IEBACiAgIC8vLyBjb21iaW5lZCB3aXRoIHRoZSByZXN1bHRzIG9mIG5hbWUgbG9va3VwIGludG8gdGhlIHR5cGUgb2YgdGhlIG9iamVjdAogICAvLy8gZXhwcmVzc2lvbiBpdHNlbGYgKHRoZSBjbGFzcyB0eXBlIG9mIHgpLgogICBOYW1lZERlY2wgKmdldEZpcnN0UXVhbGlmaWVyRm91bmRJblNjb3BlKCkgY29uc3QgewotICAgIHJldHVybiBGaXJzdFF1YWxpZmllckZvdW5kSW5TY29wZTsKKyAgICBpZiAoIWhhc0ZpcnN0UXVhbGlmaWVyRm91bmRJblNjb3BlKCkpCisgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gKmdldFRyYWlsaW5nT2JqZWN0czxOYW1lZERlY2wgKj4oKTsKICAgfQogCi0gIC8vLyBSZXRyaWV2ZSB0aGUgbmFtZSBvZiB0aGUgbWVtYmVyIHRoYXQgdGhpcyBleHByZXNzaW9uCi0gIC8vLyByZWZlcnMgdG8uCisgIC8vLyBSZXRyaWV2ZSB0aGUgbmFtZSBvZiB0aGUgbWVtYmVyIHRoYXQgdGhpcyBleHByZXNzaW9uIHJlZmVycyB0by4KICAgY29uc3QgRGVjbGFyYXRpb25OYW1lSW5mbyAmZ2V0TWVtYmVyTmFtZUluZm8oKSBjb25zdCB7CiAgICAgcmV0dXJuIE1lbWJlck5hbWVJbmZvOwogICB9CiAKLSAgLy8vIFJldHJpZXZlIHRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgdGhhdCB0aGlzIGV4cHJlc3Npb24KLSAgLy8vIHJlZmVycyB0by4KKyAgLy8vIFJldHJpZXZlIHRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgdGhhdCB0aGlzIGV4cHJlc3Npb24gcmVmZXJzIHRvLgogICBEZWNsYXJhdGlvbk5hbWUgZ2V0TWVtYmVyKCkgY29uc3QgeyByZXR1cm4gTWVtYmVyTmFtZUluZm8uZ2V0TmFtZSgpOyB9CiAKICAgLy8gUmV0cmlldmUgdGhlIGxvY2F0aW9uIG9mIHRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgdGhhdCB0aGlzCkBAIC0zMzgxLDIxICszNDM1LDI0IEBACiAgIC8vLyBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhlIHRlbXBsYXRlIGtleXdvcmQgcHJlY2VkaW5nIHRoZQogICAvLy8gbWVtYmVyIG5hbWUsIGlmIGFueS4KICAgU291cmNlTG9jYXRpb24gZ2V0VGVtcGxhdGVLZXl3b3JkTG9jKCkgY29uc3QgewotICAgIGlmICghSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKSByZXR1cm4gU291cmNlTG9jYXRpb24oKTsKKyAgICBpZiAoIWhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbygpKQorICAgICAgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CiAgICAgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8+KCktPlRlbXBsYXRlS1dMb2M7CiAgIH0KIAogICAvLy8gUmV0cmlldmUgdGhlIGxvY2F0aW9uIG9mIHRoZSBsZWZ0IGFuZ2xlIGJyYWNrZXQgc3RhcnRpbmcgdGhlCiAgIC8vLyBleHBsaWNpdCB0ZW1wbGF0ZSBhcmd1bWVudCBsaXN0IGZvbGxvd2luZyB0aGUgbWVtYmVyIG5hbWUsIGlmIGFueS4KICAgU291cmNlTG9jYXRpb24gZ2V0TEFuZ2xlTG9jKCkgY29uc3QgewotICAgIGlmICghSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKSByZXR1cm4gU291cmNlTG9jYXRpb24oKTsKKyAgICBpZiAoIWhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbygpKQorICAgICAgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CiAgICAgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8+KCktPkxBbmdsZUxvYzsKICAgfQogCiAgIC8vLyBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhlIHJpZ2h0IGFuZ2xlIGJyYWNrZXQgZW5kaW5nIHRoZQogICAvLy8gZXhwbGljaXQgdGVtcGxhdGUgYXJndW1lbnQgbGlzdCBmb2xsb3dpbmcgdGhlIG1lbWJlciBuYW1lLCBpZiBhbnkuCiAgIFNvdXJjZUxvY2F0aW9uIGdldFJBbmdsZUxvYygpIGNvbnN0IHsKLSAgICBpZiAoIUhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbykgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CisgICAgaWYgKCFoYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKSkKKyAgICAgIHJldHVybiBTb3VyY2VMb2NhdGlvbigpOwogICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8QVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvPigpLT5SQW5nbGVMb2M7CiAgIH0KIApAQCAtMzQ3OSwyNSArMzUzNiwxOCBAQAogLy8vIERlY2xSZWZFeHByLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgbWVtYmVyIGlzIHN0YXRpYy4KIGNsYXNzIFVucmVzb2x2ZWRNZW1iZXJFeHByIGZpbmFsCiAgICAgOiBwdWJsaWMgT3ZlcmxvYWRFeHByLAotICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8Ci0gICAgICAgICAgVW5yZXNvbHZlZE1lbWJlckV4cHIsIEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbywgVGVtcGxhdGVBcmd1bWVudExvYz4geworICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8VW5yZXNvbHZlZE1lbWJlckV4cHIsIERlY2xBY2Nlc3NQYWlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVBcmd1bWVudExvYz4gewogICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKICAgZnJpZW5kIGNsYXNzIE92ZXJsb2FkRXhwcjsKICAgZnJpZW5kIFRyYWlsaW5nT2JqZWN0czsKIAotICAvLy8gV2hldGhlciB0aGlzIG1lbWJlciBleHByZXNzaW9uIHVzZWQgdGhlICctPicgb3BlcmF0b3Igb3IKLSAgLy8vIHRoZSAnLicgb3BlcmF0b3IuCi0gIGJvb2wgSXNBcnJvdyA6IDE7Ci0KLSAgLy8vIFdoZXRoZXIgdGhlIGxvb2t1cCByZXN1bHRzIGNvbnRhaW4gYW4gdW5yZXNvbHZlZCB1c2luZwotICAvLy8gZGVjbGFyYXRpb24uCi0gIGJvb2wgSGFzVW5yZXNvbHZlZFVzaW5nIDogMTsKLQogICAvLy8gVGhlIGV4cHJlc3Npb24gZm9yIHRoZSBiYXNlIHBvaW50ZXIgb3IgY2xhc3MgcmVmZXJlbmNlLAogICAvLy8gZS5nLiwgdGhlIFxjIHggaW4geC5mLgogICAvLy8KICAgLy8vIFRoaXMgY2FuIGJlIG51bGwgaWYgdGhpcyBpcyBhbiAndW5iYXNlZCcgbWVtYmVyIGV4cHJlc3Npb24uCi0gIFN0bXQgKkJhc2UgPSBudWxscHRyOworICBTdG10ICpCYXNlOwogCiAgIC8vLyBUaGUgdHlwZSBvZiB0aGUgYmFzZSBleHByZXNzaW9uOyBuZXZlciBudWxsLgogICBRdWFsVHlwZSBCYXNlVHlwZTsKQEAgLTM1MDUsNyArMzU1NSwyMSBAQAogICAvLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSAnLT4nIG9yICcuJyBvcGVyYXRvci4KICAgU291cmNlTG9jYXRpb24gT3BlcmF0b3JMb2M7CiAKLSAgVW5yZXNvbHZlZE1lbWJlckV4cHIoY29uc3QgQVNUQ29udGV4dCAmQywgYm9vbCBIYXNVbnJlc29sdmVkVXNpbmcsCisgIC8vIFVucmVzb2x2ZWRNZW1iZXJFeHByIGlzIGZvbGxvd2VkIGJ5IHNldmVyYWwgdHJhaWxpbmcgb2JqZWN0cy4KKyAgLy8gVGhleSBhcmUgaW4gb3JkZXI6CisgIC8vCisgIC8vICogQW4gYXJyYXkgb2YgZ2V0TnVtUmVzdWx0cygpIERlY2xBY2Nlc3NQYWlyIGZvciB0aGUgcmVzdWx0cy4gVGhlc2UgYXJlCisgIC8vICAgdW5kZXN1Z2FyZWQsIHdoaWNoIGlzIHRvIHNheSwgdGhleSBtYXkgaW5jbHVkZSBVc2luZ1NoYWRvd0RlY2xzLgorICAvLyAgIEFjY2VzcyBpcyByZWxhdGl2ZSB0byB0aGUgbmFtaW5nIGNsYXNzLgorICAvLworICAvLyAqIEFuIG9wdGlvbmFsIEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbyBmb3IgdGhlIGV4cGxpY2l0bHkgc3BlY2lmaWVkCisgIC8vICAgdGVtcGxhdGUga2V5d29yZCBhbmQgYXJndW1lbnRzLiBQcmVzZW50IGlmIGFuZCBvbmx5IGlmCisgIC8vICAgaGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKCkuCisgIC8vCisgIC8vICogQW4gYXJyYXkgb2YgZ2V0TnVtVGVtcGxhdGVBcmdzKCkgVGVtcGxhdGVBcmd1bWVudExvYyBjb250YWluaW5nCisgIC8vICAgbG9jYXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBleHBsaWNpdGx5IHNwZWNpZmllZCB0ZW1wbGF0ZSBhcmd1bWVudHMuCisKKyAgVW5yZXNvbHZlZE1lbWJlckV4cHIoY29uc3QgQVNUQ29udGV4dCAmQ29udGV4dCwgYm9vbCBIYXNVbnJlc29sdmVkVXNpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIEV4cHIgKkJhc2UsIFF1YWxUeXBlIEJhc2VUeXBlLCBib29sIElzQXJyb3csCiAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIE9wZXJhdG9yTG9jLAogICAgICAgICAgICAgICAgICAgICAgICBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jIFF1YWxpZmllckxvYywKQEAgLTM1MTQsMjggKzM1NzgsMzAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVtcGxhdGVBcmd1bWVudExpc3RJbmZvICpUZW1wbGF0ZUFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgIFVucmVzb2x2ZWRTZXRJdGVyYXRvciBCZWdpbiwgVW5yZXNvbHZlZFNldEl0ZXJhdG9yIEVuZCk7CiAKLSAgVW5yZXNvbHZlZE1lbWJlckV4cHIoRW1wdHlTaGVsbCBFbXB0eSkKLSAgICAgIDogT3ZlcmxvYWRFeHByKFVucmVzb2x2ZWRNZW1iZXJFeHByQ2xhc3MsIEVtcHR5KSwgSXNBcnJvdyhmYWxzZSksCi0gICAgICAgIEhhc1VucmVzb2x2ZWRVc2luZyhmYWxzZSkge30KKyAgVW5yZXNvbHZlZE1lbWJlckV4cHIoRW1wdHlTaGVsbCBFbXB0eSwgdW5zaWduZWQgTnVtUmVzdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBIYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8pOwogCi0gIHNpemVfdCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8+KSBjb25zdCB7Ci0gICAgcmV0dXJuIEhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbyA/IDEgOiAwOworICB1bnNpZ25lZCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxEZWNsQWNjZXNzUGFpcj4pIGNvbnN0IHsKKyAgICByZXR1cm4gZ2V0TnVtRGVjbHMoKTsKKyAgfQorCisgIHVuc2lnbmVkIG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbz4pIGNvbnN0IHsKKyAgICByZXR1cm4gaGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKCk7CiAgIH0KIAogcHVibGljOgogICBzdGF0aWMgVW5yZXNvbHZlZE1lbWJlckV4cHIgKgotICBDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQywgYm9vbCBIYXNVbnJlc29sdmVkVXNpbmcsCi0gICAgICAgICBFeHByICpCYXNlLCBRdWFsVHlwZSBCYXNlVHlwZSwgYm9vbCBJc0Fycm93LAotICAgICAgICAgU291cmNlTG9jYXRpb24gT3BlcmF0b3JMb2MsCi0gICAgICAgICBOZXN0ZWROYW1lU3BlY2lmaWVyTG9jIFF1YWxpZmllckxvYywKLSAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFRlbXBsYXRlS1dMb2MsCisgIENyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDb250ZXh0LCBib29sIEhhc1VucmVzb2x2ZWRVc2luZywgRXhwciAqQmFzZSwKKyAgICAgICAgIFF1YWxUeXBlIEJhc2VUeXBlLCBib29sIElzQXJyb3csIFNvdXJjZUxvY2F0aW9uIE9wZXJhdG9yTG9jLAorICAgICAgICAgTmVzdGVkTmFtZVNwZWNpZmllckxvYyBRdWFsaWZpZXJMb2MsIFNvdXJjZUxvY2F0aW9uIFRlbXBsYXRlS1dMb2MsCiAgICAgICAgICBjb25zdCBEZWNsYXJhdGlvbk5hbWVJbmZvICZNZW1iZXJOYW1lSW5mbywKICAgICAgICAgIGNvbnN0IFRlbXBsYXRlQXJndW1lbnRMaXN0SW5mbyAqVGVtcGxhdGVBcmdzLAogICAgICAgICAgVW5yZXNvbHZlZFNldEl0ZXJhdG9yIEJlZ2luLCBVbnJlc29sdmVkU2V0SXRlcmF0b3IgRW5kKTsKIAotICBzdGF0aWMgVW5yZXNvbHZlZE1lbWJlckV4cHIgKgotICBDcmVhdGVFbXB0eShjb25zdCBBU1RDb250ZXh0ICZDLCBib29sIEhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbywKLSAgICAgICAgICAgICAgdW5zaWduZWQgTnVtVGVtcGxhdGVBcmdzKTsKKyAgc3RhdGljIFVucmVzb2x2ZWRNZW1iZXJFeHByICpDcmVhdGVFbXB0eShjb25zdCBBU1RDb250ZXh0ICZDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE51bVJlc3VsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBIYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTnVtVGVtcGxhdGVBcmdzKTsKIAogICAvLy8gVHJ1ZSBpZiB0aGlzIGlzIGFuIGltcGxpY2l0IGFjY2VzcywgaS5lLiwgb25lIGluIHdoaWNoIHRoZQogICAvLy8gbWVtYmVyIGJlaW5nIGFjY2Vzc2VkIHdhcyBub3Qgd3JpdHRlbiBpbiB0aGUgc291cmNlLgpAQCAtMzU1OCwzMiArMzYyNCwzNiBAQAogCiAgIC8vLyBEZXRlcm1pbmUgd2hldGhlciB0aGUgbG9va3VwIHJlc3VsdHMgY29udGFpbiBhbiB1bnJlc29sdmVkIHVzaW5nCiAgIC8vLyBkZWNsYXJhdGlvbi4KLSAgYm9vbCBoYXNVbnJlc29sdmVkVXNpbmcoKSBjb25zdCB7IHJldHVybiBIYXNVbnJlc29sdmVkVXNpbmc7IH0KKyAgYm9vbCBoYXNVbnJlc29sdmVkVXNpbmcoKSBjb25zdCB7CisgICAgcmV0dXJuIFVucmVzb2x2ZWRNZW1iZXJFeHByQml0cy5IYXNVbnJlc29sdmVkVXNpbmc7CisgIH0KIAogICAvLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBtZW1iZXIgZXhwcmVzc2lvbiB1c2VkIHRoZSAnLT4nCiAgIC8vLyBvcGVyYXRvcjsgb3RoZXJ3aXNlLCBpdCB1c2VkIHRoZSAnLicgb3BlcmF0b3IuCi0gIGJvb2wgaXNBcnJvdygpIGNvbnN0IHsgcmV0dXJuIElzQXJyb3c7IH0KKyAgYm9vbCBpc0Fycm93KCkgY29uc3QgeyByZXR1cm4gVW5yZXNvbHZlZE1lbWJlckV4cHJCaXRzLklzQXJyb3c7IH0KIAogICAvLy8gUmV0cmlldmUgdGhlIGxvY2F0aW9uIG9mIHRoZSAnLT4nIG9yICcuJyBvcGVyYXRvci4KICAgU291cmNlTG9jYXRpb24gZ2V0T3BlcmF0b3JMb2MoKSBjb25zdCB7IHJldHVybiBPcGVyYXRvckxvYzsgfQogCiAgIC8vLyBSZXRyaWV2ZSB0aGUgbmFtaW5nIGNsYXNzIG9mIHRoaXMgbG9va3VwLgotICBDWFhSZWNvcmREZWNsICpnZXROYW1pbmdDbGFzcygpIGNvbnN0OworICBDWFhSZWNvcmREZWNsICpnZXROYW1pbmdDbGFzcygpOworICBjb25zdCBDWFhSZWNvcmREZWNsICpnZXROYW1pbmdDbGFzcygpIGNvbnN0IHsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxVbnJlc29sdmVkTWVtYmVyRXhwciAqPih0aGlzKS0+Z2V0TmFtaW5nQ2xhc3MoKTsKKyAgfQogCiAgIC8vLyBSZXRyaWV2ZSB0aGUgZnVsbCBuYW1lIGluZm8gZm9yIHRoZSBtZW1iZXIgdGhhdCB0aGlzIGV4cHJlc3Npb24KICAgLy8vIHJlZmVycyB0by4KICAgY29uc3QgRGVjbGFyYXRpb25OYW1lSW5mbyAmZ2V0TWVtYmVyTmFtZUluZm8oKSBjb25zdCB7IHJldHVybiBnZXROYW1lSW5mbygpOyB9CiAKLSAgLy8vIFJldHJpZXZlIHRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgdGhhdCB0aGlzIGV4cHJlc3Npb24KLSAgLy8vIHJlZmVycyB0by4KKyAgLy8vIFJldHJpZXZlIHRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgdGhhdCB0aGlzIGV4cHJlc3Npb24gcmVmZXJzIHRvLgogICBEZWNsYXJhdGlvbk5hbWUgZ2V0TWVtYmVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGdldE5hbWUoKTsgfQogCi0gIC8vIFJldHJpZXZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgbmFtZSBvZiB0aGUgbWVtYmVyIHRoYXQgdGhpcwotICAvLyBleHByZXNzaW9uIHJlZmVycyB0by4KKyAgLy8vIFJldHJpZXZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgbmFtZSBvZiB0aGUgbWVtYmVyIHRoYXQgdGhpcworICAvLy8gZXhwcmVzc2lvbiByZWZlcnMgdG8uCiAgIFNvdXJjZUxvY2F0aW9uIGdldE1lbWJlckxvYygpIGNvbnN0IHsgcmV0dXJuIGdldE5hbWVMb2MoKTsgfQogCi0gIC8vIFJldHVybiB0aGUgcHJlZmVycmVkIGxvY2F0aW9uICh0aGUgbWVtYmVyIG5hbWUpIGZvciB0aGUgYXJyb3cgd2hlbgotICAvLyBkaWFnbm9zaW5nIGEgcHJvYmxlbSB3aXRoIHRoaXMgZXhwcmVzc2lvbi4KKyAgLy8vIFJldHVybiB0aGUgcHJlZmVycmVkIGxvY2F0aW9uICh0aGUgbWVtYmVyIG5hbWUpIGZvciB0aGUgYXJyb3cgd2hlbgorICAvLy8gZGlhZ25vc2luZyBhIHByb2JsZW0gd2l0aCB0aGlzIGV4cHJlc3Npb24uCiAgIFNvdXJjZUxvY2F0aW9uIGdldEV4cHJMb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIGdldE1lbWJlckxvYygpOyB9CiAKICAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsKQEAgLTM2MTIsMjYgKzM2ODIsMzMgQEAKICAgfQogfTsKIAotaW5saW5lIEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbyAqCi1PdmVybG9hZEV4cHI6OmdldFRyYWlsaW5nQVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKCkgewotICBpZiAoIUhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbykKLSAgICByZXR1cm4gbnVsbHB0cjsKLQotICBpZiAoaXNhPFVucmVzb2x2ZWRMb29rdXBFeHByPih0aGlzKSkKLSAgICByZXR1cm4gY2FzdDxVbnJlc29sdmVkTG9va3VwRXhwcj4odGhpcykKLSAgICAgICAgLT5nZXRUcmFpbGluZ09iamVjdHM8QVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvPigpOwotICBlbHNlCi0gICAgcmV0dXJuIGNhc3Q8VW5yZXNvbHZlZE1lbWJlckV4cHI+KHRoaXMpCi0gICAgICAgIC0+Z2V0VHJhaWxpbmdPYmplY3RzPEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbz4oKTsKK0RlY2xBY2Nlc3NQYWlyICpPdmVybG9hZEV4cHI6OmdldFRyYWlsaW5nUmVzdWx0cygpIHsKKyAgaWYgKGF1dG8gKlVMRSA9IGR5bl9jYXN0PFVucmVzb2x2ZWRMb29rdXBFeHByPih0aGlzKSkKKyAgICByZXR1cm4gVUxFLT5nZXRUcmFpbGluZ09iamVjdHM8RGVjbEFjY2Vzc1BhaXI+KCk7CisgIHJldHVybiBjYXN0PFVucmVzb2x2ZWRNZW1iZXJFeHByPih0aGlzKS0+Z2V0VHJhaWxpbmdPYmplY3RzPERlY2xBY2Nlc3NQYWlyPigpOwogfQogCi1pbmxpbmUgVGVtcGxhdGVBcmd1bWVudExvYyAqT3ZlcmxvYWRFeHByOjpnZXRUcmFpbGluZ1RlbXBsYXRlQXJndW1lbnRMb2MoKSB7Ci0gIGlmIChpc2E8VW5yZXNvbHZlZExvb2t1cEV4cHI+KHRoaXMpKQotICAgIHJldHVybiBjYXN0PFVucmVzb2x2ZWRMb29rdXBFeHByPih0aGlzKQotICAgICAgICAtPmdldFRyYWlsaW5nT2JqZWN0czxUZW1wbGF0ZUFyZ3VtZW50TG9jPigpOwotICBlbHNlCi0gICAgcmV0dXJuIGNhc3Q8VW5yZXNvbHZlZE1lbWJlckV4cHI+KHRoaXMpCi0gICAgICAgIC0+Z2V0VHJhaWxpbmdPYmplY3RzPFRlbXBsYXRlQXJndW1lbnRMb2M+KCk7CitBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8gKk92ZXJsb2FkRXhwcjo6Z2V0VHJhaWxpbmdBU1RUZW1wbGF0ZUtXQW5kQXJnc0luZm8oKSB7CisgIGlmICghaGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvKCkpCisgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgaWYgKGF1dG8gKlVMRSA9IGR5bl9jYXN0PFVucmVzb2x2ZWRMb29rdXBFeHByPih0aGlzKSkKKyAgICByZXR1cm4gVUxFLT5nZXRUcmFpbGluZ09iamVjdHM8QVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvPigpOworICByZXR1cm4gY2FzdDxVbnJlc29sdmVkTWVtYmVyRXhwcj4odGhpcykKKyAgICAgIC0+Z2V0VHJhaWxpbmdPYmplY3RzPEFTVFRlbXBsYXRlS1dBbmRBcmdzSW5mbz4oKTsKK30KKworVGVtcGxhdGVBcmd1bWVudExvYyAqT3ZlcmxvYWRFeHByOjpnZXRUcmFpbGluZ1RlbXBsYXRlQXJndW1lbnRMb2MoKSB7CisgIGlmIChhdXRvICpVTEUgPSBkeW5fY2FzdDxVbnJlc29sdmVkTG9va3VwRXhwcj4odGhpcykpCisgICAgcmV0dXJuIFVMRS0+Z2V0VHJhaWxpbmdPYmplY3RzPFRlbXBsYXRlQXJndW1lbnRMb2M+KCk7CisgIHJldHVybiBjYXN0PFVucmVzb2x2ZWRNZW1iZXJFeHByPih0aGlzKQorICAgICAgLT5nZXRUcmFpbGluZ09iamVjdHM8VGVtcGxhdGVBcmd1bWVudExvYz4oKTsKK30KKworQ1hYUmVjb3JkRGVjbCAqT3ZlcmxvYWRFeHByOjpnZXROYW1pbmdDbGFzcygpIHsKKyAgaWYgKGF1dG8gKlVMRSA9IGR5bl9jYXN0PFVucmVzb2x2ZWRMb29rdXBFeHByPih0aGlzKSkKKyAgICByZXR1cm4gVUxFLT5nZXROYW1pbmdDbGFzcygpOworICByZXR1cm4gY2FzdDxVbnJlc29sdmVkTWVtYmVyRXhwcj4odGhpcyktPmdldE5hbWluZ0NsYXNzKCk7CiB9CiAKIC8vLyBSZXByZXNlbnRzIGEgQysrMTEgbm9leGNlcHQgZXhwcmVzc2lvbiAoQysrIFtleHByLnVuYXJ5Lm5vZXhjZXB0XSkuCkBAIC0zNjQxLDcgKzM3MTgsNiBAQAogY2xhc3MgQ1hYTm9leGNlcHRFeHByIDogcHVibGljIEV4cHIgewogICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKIAotICBib29sIFZhbHVlIDogMTsKICAgU3RtdCAqT3BlcmFuZDsKICAgU291cmNlUmFuZ2UgUmFuZ2U7CiAKQEAgLTM2NDksMjEgKzM3MjUsMjMgQEAKICAgQ1hYTm9leGNlcHRFeHByKFF1YWxUeXBlIFR5LCBFeHByICpPcGVyYW5kLCBDYW5UaHJvd1Jlc3VsdCBWYWwsCiAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBLZXl3b3JkLCBTb3VyY2VMb2NhdGlvbiBSUGFyZW4pCiAgICAgICA6IEV4cHIoQ1hYTm9leGNlcHRFeHByQ2xhc3MsIFR5LCBWS19SVmFsdWUsIE9LX09yZGluYXJ5LAotICAgICAgICAgICAgIC8qVHlwZURlcGVuZGVudCovZmFsc2UsCi0gICAgICAgICAgICAgLypWYWx1ZURlcGVuZGVudCovVmFsID09IENUX0RlcGVuZGVudCwKKyAgICAgICAgICAgICAvKlR5cGVEZXBlbmRlbnQqLyBmYWxzZSwKKyAgICAgICAgICAgICAvKlZhbHVlRGVwZW5kZW50Ki8gVmFsID09IENUX0RlcGVuZGVudCwKICAgICAgICAgICAgICBWYWwgPT0gQ1RfRGVwZW5kZW50IHx8IE9wZXJhbmQtPmlzSW5zdGFudGlhdGlvbkRlcGVuZGVudCgpLAogICAgICAgICAgICAgIE9wZXJhbmQtPmNvbnRhaW5zVW5leHBhbmRlZFBhcmFtZXRlclBhY2soKSksCi0gICAgICAgIFZhbHVlKFZhbCA9PSBDVF9DYW5ub3QpLCBPcGVyYW5kKE9wZXJhbmQpLCBSYW5nZShLZXl3b3JkLCBSUGFyZW4pIHt9CisgICAgICAgIE9wZXJhbmQoT3BlcmFuZCksIFJhbmdlKEtleXdvcmQsIFJQYXJlbikgeworICAgIENYWE5vZXhjZXB0RXhwckJpdHMuVmFsdWUgPSBWYWwgPT0gQ1RfQ2Fubm90OworICB9CiAKICAgQ1hYTm9leGNlcHRFeHByKEVtcHR5U2hlbGwgRW1wdHkpIDogRXhwcihDWFhOb2V4Y2VwdEV4cHJDbGFzcywgRW1wdHkpIHt9CiAKLSAgRXhwciAqZ2V0T3BlcmFuZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEV4cHIqPihPcGVyYW5kKTsgfQorICBFeHByICpnZXRPcGVyYW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXhwciAqPihPcGVyYW5kKTsgfQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBSYW5nZS5nZXRCZWdpbigpOyB9Ci0gIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gUmFuZ2UuZ2V0RW5kKCk7IH0KLSAgU291cmNlUmFuZ2UgZ2V0U291cmNlUmFuZ2UoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIFJhbmdlOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgeyByZXR1cm4gUmFuZ2UuZ2V0QmVnaW4oKTsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCB7IHJldHVybiBSYW5nZS5nZXRFbmQoKTsgfQorICBTb3VyY2VSYW5nZSBnZXRTb3VyY2VSYW5nZSgpIGNvbnN0IHsgcmV0dXJuIFJhbmdlOyB9CiAKLSAgYm9vbCBnZXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFZhbHVlOyB9CisgIGJvb2wgZ2V0VmFsdWUoKSBjb25zdCB7IHJldHVybiBDWFhOb2V4Y2VwdEV4cHJCaXRzLlZhbHVlOyB9CiAKICAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBTdG10ICpUKSB7CiAgICAgcmV0dXJuIFQtPmdldFN0bXRDbGFzcygpID09IENYWE5vZXhjZXB0RXhwckNsYXNzOwpAQCAtMzg4NiwyNyArMzk2NCwyNyBAQAogICAvLy8gVGhlIHJlcGxhY2VtZW50IGV4cHJlc3Npb24uCiAgIFN0bXQgKlJlcGxhY2VtZW50OwogCi0gIC8vLyBUaGUgbG9jYXRpb24gb2YgdGhlIG5vbi10eXBlIHRlbXBsYXRlIHBhcmFtZXRlciByZWZlcmVuY2UuCi0gIFNvdXJjZUxvY2F0aW9uIE5hbWVMb2M7Ci0KICAgZXhwbGljaXQgU3Vic3ROb25UeXBlVGVtcGxhdGVQYXJtRXhwcihFbXB0eVNoZWxsIEVtcHR5KQogICAgICAgOiBFeHByKFN1YnN0Tm9uVHlwZVRlbXBsYXRlUGFybUV4cHJDbGFzcywgRW1wdHkpIHt9CiAKIHB1YmxpYzoKLSAgU3Vic3ROb25UeXBlVGVtcGxhdGVQYXJtRXhwcihRdWFsVHlwZSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHJWYWx1ZUtpbmQgdmFsdWVLaW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIGxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25UeXBlVGVtcGxhdGVQYXJtRGVjbCAqcGFyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwciAqcmVwbGFjZW1lbnQpCi0gICAgICA6IEV4cHIoU3Vic3ROb25UeXBlVGVtcGxhdGVQYXJtRXhwckNsYXNzLCB0eXBlLCB2YWx1ZUtpbmQsIE9LX09yZGluYXJ5LAotICAgICAgICAgICAgIHJlcGxhY2VtZW50LT5pc1R5cGVEZXBlbmRlbnQoKSwgcmVwbGFjZW1lbnQtPmlzVmFsdWVEZXBlbmRlbnQoKSwKLSAgICAgICAgICAgICByZXBsYWNlbWVudC0+aXNJbnN0YW50aWF0aW9uRGVwZW5kZW50KCksCi0gICAgICAgICAgICAgcmVwbGFjZW1lbnQtPmNvbnRhaW5zVW5leHBhbmRlZFBhcmFtZXRlclBhY2soKSksCi0gICAgICAgIFBhcmFtKHBhcmFtKSwgUmVwbGFjZW1lbnQocmVwbGFjZW1lbnQpLCBOYW1lTG9jKGxvYykge30KKyAgU3Vic3ROb25UeXBlVGVtcGxhdGVQYXJtRXhwcihRdWFsVHlwZSBUeSwgRXhwclZhbHVlS2luZCBWYWx1ZUtpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vblR5cGVUZW1wbGF0ZVBhcm1EZWNsICpQYXJhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHByICpSZXBsYWNlbWVudCkKKyAgICAgIDogRXhwcihTdWJzdE5vblR5cGVUZW1wbGF0ZVBhcm1FeHByQ2xhc3MsIFR5LCBWYWx1ZUtpbmQsIE9LX09yZGluYXJ5LAorICAgICAgICAgICAgIFJlcGxhY2VtZW50LT5pc1R5cGVEZXBlbmRlbnQoKSwgUmVwbGFjZW1lbnQtPmlzVmFsdWVEZXBlbmRlbnQoKSwKKyAgICAgICAgICAgICBSZXBsYWNlbWVudC0+aXNJbnN0YW50aWF0aW9uRGVwZW5kZW50KCksCisgICAgICAgICAgICAgUmVwbGFjZW1lbnQtPmNvbnRhaW5zVW5leHBhbmRlZFBhcmFtZXRlclBhY2soKSksCisgICAgICAgIFBhcmFtKFBhcmFtKSwgUmVwbGFjZW1lbnQoUmVwbGFjZW1lbnQpIHsKKyAgICBTdWJzdE5vblR5cGVUZW1wbGF0ZVBhcm1FeHByQml0cy5OYW1lTG9jID0gTG9jOworICB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0TmFtZUxvYygpIGNvbnN0IHsgcmV0dXJuIE5hbWVMb2M7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIE5hbWVMb2M7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBOYW1lTG9jOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldE5hbWVMb2MoKSBjb25zdCB7CisgICAgcmV0dXJuIFN1YnN0Tm9uVHlwZVRlbXBsYXRlUGFybUV4cHJCaXRzLk5hbWVMb2M7CisgIH0KKyAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCB7IHJldHVybiBnZXROYW1lTG9jKCk7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgeyByZXR1cm4gZ2V0TmFtZUxvYygpOyB9CiAKICAgRXhwciAqZ2V0UmVwbGFjZW1lbnQoKSBjb25zdCB7IHJldHVybiBjYXN0PEV4cHI+KFJlcGxhY2VtZW50KTsgfQogCkBAIC0zOTE3LDcgKzM5OTUsNyBAQAogICB9CiAKICAgLy8gSXRlcmF0b3JzCi0gIGNoaWxkX3JhbmdlIGNoaWxkcmVuKCkgeyByZXR1cm4gY2hpbGRfcmFuZ2UoJlJlcGxhY2VtZW50LCAmUmVwbGFjZW1lbnQrMSk7IH0KKyAgY2hpbGRfcmFuZ2UgY2hpbGRyZW4oKSB7IHJldHVybiBjaGlsZF9yYW5nZSgmUmVwbGFjZW1lbnQsICZSZXBsYWNlbWVudCArIDEpOyB9CiB9OwogCiAvLy8gUmVwcmVzZW50cyBhIHJlZmVyZW5jZSB0byBhIG5vbi10eXBlIHRlbXBsYXRlIHBhcmFtZXRlciBwYWNrIHRoYXQKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9FeHByT2JqQy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0V4cHJPYmpDLmgKaW5kZXggZWQzZDM4NC4uNjcxOTE2OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0V4cHJPYmpDLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0V4cHJPYmpDLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRXhwck9iakMuaCAtIENsYXNzZXMgZm9yIHJlcHJlc2VudGluZyBPYmpDIGV4cHJlc3Npb25zIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI1NiwxMiArMjU1LDYgQEAKIAogfSAvLyBuYW1lc3BhY2UgY2xhbmcKIAotbmFtZXNwYWNlIGxsdm0gewotCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNQb2RMaWtlPGNsYW5nOjpPYmpDRGljdGlvbmFyeUVsZW1lbnQ+IDogc3RkOjp0cnVlX3R5cGUge307Ci0KLX0gLy8gbmFtZXNwYWNlIGxsdm0KLQogbmFtZXNwYWNlIGNsYW5nIHsKIAogLy8vIEludGVybmFsIHN0cnVjdCBmb3Igc3RvcmluZyBLZXkvdmFsdWUgcGFpci4KQEAgLTExODcsNiArMTE4MCwxMyBAQAogICAvLy8gc2VudCB0by4KICAgUmVjZWl2ZXJLaW5kIGdldFJlY2VpdmVyS2luZCgpIGNvbnN0IHsgcmV0dXJuIChSZWNlaXZlcktpbmQpS2luZDsgfQogCisgIC8vLyBccmV0dXJuIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgbWVzc2FnZSBiZWluZyBzZW50LgorICAvLy8gVGhpcyBpcyBub3QgYWx3YXlzIHRoZSB0eXBlIG9mIHRoZSBtZXNzYWdlIGV4cHJlc3Npb24gaXRzZWxmIGJlY2F1c2UKKyAgLy8vIG9mIHJlZmVyZW5jZXMgKHRoZSBleHByZXNzaW9uIHdvdWxkIG5vdCBoYXZlIGEgcmVmZXJlbmNlIHR5cGUpLgorICAvLy8gSXQgaXMgYWxzbyBub3QgYWx3YXlzIHRoZSBkZWNsYXJlZCByZXR1cm4gdHlwZSBvZiB0aGUgbWV0aG9kIGJlY2F1c2UKKyAgLy8vIG9mIGBpbnN0YW5jZXR5cGVgIChpbiB0aGF0IGNhc2UgaXQncyBhbiBleHByZXNzaW9uIHR5cGUpLgorICBRdWFsVHlwZSBnZXRDYWxsUmV0dXJuVHlwZShBU1RDb250ZXh0ICZDdHgpIGNvbnN0OworCiAgIC8vLyBTb3VyY2UgcmFuZ2Ugb2YgdGhlIHJlY2VpdmVyLgogICBTb3VyY2VSYW5nZSBnZXRSZWNlaXZlclJhbmdlKCkgY29uc3Q7CiAKQEAgLTE1NzQsOCArMTU3NCw3IEBACiAvLy8gXGVuZGNvZGUKIGNsYXNzIE9iakNCcmlkZ2VkQ2FzdEV4cHIgZmluYWwKICAgICA6IHB1YmxpYyBFeHBsaWNpdENhc3RFeHByLAotICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8Ci0gICAgICAgICAgT2JqQ0JyaWRnZWRDYXN0RXhwciwgQ2FzdEV4cHI6OkJhc2VQYXRoU2l6ZVR5LCBDWFhCYXNlU3BlY2lmaWVyICo+IHsKKyAgICAgIHByaXZhdGUgbGx2bTo6VHJhaWxpbmdPYmplY3RzPE9iakNCcmlkZ2VkQ2FzdEV4cHIsIENYWEJhc2VTcGVjaWZpZXIgKj4gewogICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRXcml0ZXI7CiAgIGZyaWVuZCBjbGFzcyBDYXN0RXhwcjsKQEAgLTE1ODUsMTAgKzE1ODQsNiBAQAogICBTb3VyY2VMb2NhdGlvbiBCcmlkZ2VLZXl3b3JkTG9jOwogICB1bnNpZ25lZCBLaW5kIDogMjsKIAotICBzaXplX3QgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2FkVG9rZW48Q2FzdEV4cHI6OkJhc2VQYXRoU2l6ZVR5PikgY29uc3QgewotICAgIHJldHVybiBwYXRoX2VtcHR5KCkgPyAwIDogMTsKLSAgfQotCiBwdWJsaWM6CiAgIE9iakNCcmlkZ2VkQ2FzdEV4cHIoU291cmNlTG9jYXRpb24gTFBhcmVuTG9jLCBPYmpDQnJpZGdlQ2FzdEtpbmQgS2luZCwKICAgICAgICAgICAgICAgICAgICAgICBDYXN0S2luZCBDSywgU291cmNlTG9jYXRpb24gQnJpZGdlS2V5d29yZExvYywKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9FeHByT3Blbk1QLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRXhwck9wZW5NUC5oCmluZGV4IGQ4OGVlYmYuLmIyNmU2ZDEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9FeHByT3Blbk1QLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0V4cHJPcGVuTVAuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEV4cHJPcGVuTVAuaCAtIENsYXNzZXMgZm9yIHJlcHJlc2VudGluZyBleHByZXNzaW9ucyAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0V4dGVybmFsQVNUTWVyZ2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRXh0ZXJuYWxBU1RNZXJnZXIuaAppbmRleCA3YjAxZmE4Li5kODkxODlkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRXh0ZXJuYWxBU1RNZXJnZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRXh0ZXJuYWxBU1RNZXJnZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEV4dGVybmFsQVNUTWVyZ2VyLmggLSBNZXJnaW5nIEV4dGVybmFsIEFTVCBJbnRlcmZhY2UgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0V4dGVybmFsQVNUU291cmNlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRXh0ZXJuYWxBU1RTb3VyY2UuaAppbmRleCA1MjVkNGM3Li4zMDQ2MzM2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRXh0ZXJuYWxBU1RTb3VyY2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRXh0ZXJuYWxBU1RTb3VyY2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBFeHRlcm5hbEFTVFNvdXJjZS5oIC0gQWJzdHJhY3QgRXh0ZXJuYWwgQVNUIEludGVyZmFjZSAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvRm9ybWF0U3RyaW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRm9ybWF0U3RyaW5nLmgKc2ltaWxhcml0eSBpbmRleCA5MyUKcmVuYW1lIGZyb20gbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvRm9ybWF0U3RyaW5nLmgKcmVuYW1lIHRvIGxpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Gb3JtYXRTdHJpbmcuaAppbmRleCA1OThkMzQxLi42NDNmYjgyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9Gb3JtYXRTdHJpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvRm9ybWF0U3RyaW5nLmgKQEAgLTEsOSArMSw4IEBACiAvLz0gRm9ybWF0U3RyaW5nLmggLSBBbmFseXNpcyBvZiBwcmludGYvZnByaW50ZiBmb3JtYXQgc3RyaW5ncyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTY4LDYgKzY3LDcgQEAKICAgICBOb25lLAogICAgIEFzQ2hhciwgICAgICAgLy8gJ2hoJwogICAgIEFzU2hvcnQsICAgICAgLy8gJ2gnCisgICAgQXNTaG9ydExvbmcsICAvLyAnaGwnIChPcGVuQ0wgZmxvYXQvaW50IHZlY3RvciBlbGVtZW50KQogICAgIEFzTG9uZywgICAgICAgLy8gJ2wnCiAgICAgQXNMb25nTG9uZywgICAvLyAnbGwnCiAgICAgQXNRdWFkLCAgICAgICAvLyAncScgKEJTRCwgZGVwcmVjYXRlZCwgZm9yIDY0LWJpdCBpbnRlZ2VyIHR5cGVzKQpAQCAtMzAzLDYgKzMwMyw4IEBACiAKICAgUXVhbFR5cGUgZ2V0UmVwcmVzZW50YXRpdmVUeXBlKEFTVENvbnRleHQgJkMpIGNvbnN0OwogCisgIEFyZ1R5cGUgbWFrZVZlY3RvclR5cGUoQVNUQ29udGV4dCAmQywgdW5zaWduZWQgTnVtRWx0cykgY29uc3Q7CisKICAgc3RkOjpzdHJpbmcgZ2V0UmVwcmVzZW50YXRpdmVUeXBlTmFtZShBU1RDb250ZXh0ICZDKSBjb25zdDsKIH07CiAKQEAgLTMyMiw2ICszMjQsMTAgQEAKICAgOiBzdGFydChudWxscHRyKSxsZW5ndGgoMCksIGhzKHZhbGlkID8gTm90U3BlY2lmaWVkIDogSW52YWxpZCksIGFtdCgwKSwKICAgVXNlc1Bvc2l0aW9uYWxBcmcoMCksIFVzZXNEb3RQcmVmaXgoMCkge30KIAorICBleHBsaWNpdCBPcHRpb25hbEFtb3VudCh1bnNpZ25lZCBBbW91bnQpCisgICAgOiBzdGFydChudWxscHRyKSwgbGVuZ3RoKDApLCBocyhDb25zdGFudCksIGFtdChBbW91bnQpLAorICAgIFVzZXNQb3NpdGlvbmFsQXJnKGZhbHNlKSwgVXNlc0RvdFByZWZpeChmYWxzZSkge30KKwogICBib29sIGlzSW52YWxpZCgpIGNvbnN0IHsKICAgICByZXR1cm4gaHMgPT0gSW52YWxpZDsKICAgfQpAQCAtMzc5LDYgKzM4NSw4IEBACiAgIExlbmd0aE1vZGlmaWVyIExNOwogICBPcHRpb25hbEFtb3VudCBGaWVsZFdpZHRoOwogICBDb252ZXJzaW9uU3BlY2lmaWVyIENTOworICBPcHRpb25hbEFtb3VudCBWZWN0b3JOdW1FbHRzOworCiAgIC8vLyBQb3NpdGlvbmFsIGFyZ3VtZW50cywgYW4gSUVFRSBleHRlbnNpb246CiAgIC8vLyAgSUVFRSBTdGQgMTAwMy4xLCAyMDA0IEVkaXRpb24KICAgLy8vICBodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL3ByaW50Zi5odG1sCkBAIC0zODYsNyArMzk0LDggQEAKICAgdW5zaWduZWQgYXJnSW5kZXg7CiBwdWJsaWM6CiAgIEZvcm1hdFNwZWNpZmllcihib29sIGlzUHJpbnRmKQotICAgIDogQ1MoaXNQcmludGYpLCBVc2VzUG9zaXRpb25hbEFyZyhmYWxzZSksIGFyZ0luZGV4KDApIHt9CisgICAgOiBDUyhpc1ByaW50ZiksIFZlY3Rvck51bUVsdHMoZmFsc2UpLAorICAgICAgVXNlc1Bvc2l0aW9uYWxBcmcoZmFsc2UpLCBhcmdJbmRleCgwKSB7fQogCiAgIHZvaWQgc2V0TGVuZ3RoTW9kaWZpZXIoTGVuZ3RoTW9kaWZpZXIgbG0pIHsKICAgICBMTSA9IGxtOwpAQCAtNDE0LDEzICs0MjMsMjIgQEAKICAgICByZXR1cm4gRmllbGRXaWR0aDsKICAgfQogCisgIHZvaWQgc2V0VmVjdG9yTnVtRWx0cyhjb25zdCBPcHRpb25hbEFtb3VudCAmQW10KSB7CisgICAgVmVjdG9yTnVtRWx0cyA9IEFtdDsKKyAgfQorCisgIGNvbnN0IE9wdGlvbmFsQW1vdW50ICZnZXRWZWN0b3JOdW1FbHRzKCkgY29uc3QgeworICAgIHJldHVybiBWZWN0b3JOdW1FbHRzOworICB9CisKICAgdm9pZCBzZXRGaWVsZFdpZHRoKGNvbnN0IE9wdGlvbmFsQW1vdW50ICZBbXQpIHsKICAgICBGaWVsZFdpZHRoID0gQW10OwogICB9CiAKICAgYm9vbCB1c2VzUG9zaXRpb25hbEFyZygpIGNvbnN0IHsgcmV0dXJuIFVzZXNQb3NpdGlvbmFsQXJnOyB9CiAKLSAgYm9vbCBoYXNWYWxpZExlbmd0aE1vZGlmaWVyKGNvbnN0IFRhcmdldEluZm8gJlRhcmdldCkgY29uc3Q7CisgIGJvb2wgaGFzVmFsaWRMZW5ndGhNb2RpZmllcihjb25zdCBUYXJnZXRJbmZvICZUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYW5nT3B0aW9ucyAmTE8pIGNvbnN0OwogCiAgIGJvb2wgaGFzU3RhbmRhcmRMZW5ndGhNb2RpZmllcigpIGNvbnN0OwogCkBAIC00NzUsMTMgKzQ5MywxOSBAQAogICBPcHRpb25hbEZsYWcgSGFzT2JqQ1RlY2huaWNhbFRlcm07IC8vICdbdHRdJwogICBPcHRpb25hbEZsYWcgSXNQcml2YXRlOyAgICAgICAgICAgIC8vICd7cHJpdmF0ZX0nCiAgIE9wdGlvbmFsRmxhZyBJc1B1YmxpYzsgICAgICAgICAgICAgLy8gJ3twdWJsaWN9JworICBPcHRpb25hbEZsYWcgSXNTZW5zaXRpdmU7ICAgICAgICAgIC8vICd7c2Vuc2l0aXZlfScKICAgT3B0aW9uYWxBbW91bnQgUHJlY2lzaW9uOworICBTdHJpbmdSZWYgTWFza1R5cGU7CisKKyAgQXJnVHlwZSBnZXRTY2FsYXJBcmdUeXBlKEFTVENvbnRleHQgJkN0eCwgYm9vbCBJc09iakNMaXRlcmFsKSBjb25zdDsKKwogcHVibGljOgogICBQcmludGZTcGVjaWZpZXIoKQogICAgICAgOiBGb3JtYXRTcGVjaWZpZXIoLyogaXNQcmludGYgPSAqLyB0cnVlKSwgSGFzVGhvdXNhbmRzR3JvdXBpbmcoIiciKSwKICAgICAgICAgSXNMZWZ0SnVzdGlmaWVkKCItIiksIEhhc1BsdXNQcmVmaXgoIisiKSwgSGFzU3BhY2VQcmVmaXgoIiAiKSwKICAgICAgICAgSGFzQWx0ZXJuYXRpdmVGb3JtKCIjIiksIEhhc0xlYWRpbmdaZXJvZXMoIjAiKSwKLSAgICAgICAgSGFzT2JqQ1RlY2huaWNhbFRlcm0oInR0IiksIElzUHJpdmF0ZSgicHJpdmF0ZSIpLCBJc1B1YmxpYygicHVibGljIikge30KKyAgICAgICAgSGFzT2JqQ1RlY2huaWNhbFRlcm0oInR0IiksIElzUHJpdmF0ZSgicHJpdmF0ZSIpLCBJc1B1YmxpYygicHVibGljIiksCisgICAgICAgIElzU2Vuc2l0aXZlKCJzZW5zaXRpdmUiKSB7fQogCiAgIHN0YXRpYyBQcmludGZTcGVjaWZpZXIgUGFyc2UoY29uc3QgY2hhciAqYmVnLCBjb25zdCBjaGFyICplbmQpOwogCkBAIC01MTIsNiArNTM2LDkgQEAKICAgfQogICB2b2lkIHNldElzUHJpdmF0ZShjb25zdCBjaGFyICpwb3NpdGlvbikgeyBJc1ByaXZhdGUuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9CiAgIHZvaWQgc2V0SXNQdWJsaWMoY29uc3QgY2hhciAqcG9zaXRpb24pIHsgSXNQdWJsaWMuc2V0UG9zaXRpb24ocG9zaXRpb24pOyB9CisgIHZvaWQgc2V0SXNTZW5zaXRpdmUoY29uc3QgY2hhciAqcG9zaXRpb24pIHsKKyAgICBJc1NlbnNpdGl2ZS5zZXRQb3NpdGlvbihwb3NpdGlvbik7CisgIH0KICAgdm9pZCBzZXRVc2VzUG9zaXRpb25hbEFyZygpIHsgVXNlc1Bvc2l0aW9uYWxBcmcgPSB0cnVlOyB9CiAKICAgICAvLyBNZXRob2RzIGZvciBxdWVyeWluZyB0aGUgZm9ybWF0IHNwZWNpZmllci4KQEAgLTU1MSw4ICs1NzgsMTIgQEAKICAgY29uc3QgT3B0aW9uYWxGbGFnICZoYXNPYmpDVGVjaG5pY2FsVGVybSgpIGNvbnN0IHsgcmV0dXJuIEhhc09iakNUZWNobmljYWxUZXJtOyB9CiAgIGNvbnN0IE9wdGlvbmFsRmxhZyAmaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gSXNQcml2YXRlOyB9CiAgIGNvbnN0IE9wdGlvbmFsRmxhZyAmaXNQdWJsaWMoKSBjb25zdCB7IHJldHVybiBJc1B1YmxpYzsgfQorICBjb25zdCBPcHRpb25hbEZsYWcgJmlzU2Vuc2l0aXZlKCkgY29uc3QgeyByZXR1cm4gSXNTZW5zaXRpdmU7IH0KICAgYm9vbCB1c2VzUG9zaXRpb25hbEFyZygpIGNvbnN0IHsgcmV0dXJuIFVzZXNQb3NpdGlvbmFsQXJnOyB9CiAKKyAgU3RyaW5nUmVmIGdldE1hc2tUeXBlKCkgY29uc3QgeyByZXR1cm4gTWFza1R5cGU7IH0KKyAgdm9pZCBzZXRNYXNrVHlwZShTdHJpbmdSZWYgUykgeyBNYXNrVHlwZSA9IFM7IH0KKwogICAvLy8gQ2hhbmdlcyB0aGUgc3BlY2lmaWVyIGFuZCBsZW5ndGggYWNjb3JkaW5nIHRvIGEgUXVhbFR5cGUsIHJldGFpbmluZyBhbnkKICAgLy8vIGZsYWdzIG9yIG9wdGlvbnMuIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBvciBmYWxzZSB3aGVuIGEgY29udmVyc2lvbgogICAvLy8gd2FzIG5vdCBzdWNjZXNzZnVsLgpAQCAtNjg1LDYgKzcxNiw5IEBACiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAorICAvLy8gSGFuZGxlIG1hc2sgdHlwZXMgd2hvc2Ugc2l6ZXMgYXJlIG5vdCBiZXR3ZWVuIG9uZSBhbmQgZWlnaHQgYnl0ZXMuCisgIHZpcnR1YWwgdm9pZCBoYW5kbGVJbnZhbGlkTWFza1R5cGUoU3RyaW5nUmVmIE1hc2tUeXBlKSB7fQorCiAgICAgLy8gU2NhbmYtc3BlY2lmaWMgaGFuZGxlcnMuCiAKICAgdmlydHVhbCBib29sIEhhbmRsZUludmFsaWRTY2FuZkNvbnZlcnNpb25TcGVjaWZpZXIoCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvR2xvYmFsRGVjbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0dsb2JhbERlY2wuaAppbmRleCA3ZjAxNzk5Li5hNTkzN2MyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvR2xvYmFsRGVjbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9HbG9iYWxEZWNsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gR2xvYmFsRGVjbC5oIC0gR2xvYmFsIGRlY2xhcmF0aW9uIGhvbGRlciAtLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTM0LDYgKzMzLDcgQEAKIC8vLyBhIFZhckRlY2wsIGEgRnVuY3Rpb25EZWNsIG9yIGEgQmxvY2tEZWNsLgogY2xhc3MgR2xvYmFsRGVjbCB7CiAgIGxsdm06OlBvaW50ZXJJbnRQYWlyPGNvbnN0IERlY2wgKiwgMj4gVmFsdWU7CisgIHVuc2lnbmVkIE11bHRpVmVyc2lvbkluZGV4ID0gMDsKIAogICB2b2lkIEluaXQoY29uc3QgRGVjbCAqRCkgewogICAgIGFzc2VydCghaXNhPENYWENvbnN0cnVjdG9yRGVjbD4oRCkgJiYgIlVzZSBvdGhlciBjdG9yIHdpdGggY3RvciBkZWNscyEiKTsKQEAgLTQ1LDcgKzQ1LDEwIEBACiBwdWJsaWM6CiAgIEdsb2JhbERlY2woKSA9IGRlZmF1bHQ7CiAgIEdsb2JhbERlY2woY29uc3QgVmFyRGVjbCAqRCkgeyBJbml0KEQpO30KLSAgR2xvYmFsRGVjbChjb25zdCBGdW5jdGlvbkRlY2wgKkQpIHsgSW5pdChEKTsgfQorICBHbG9iYWxEZWNsKGNvbnN0IEZ1bmN0aW9uRGVjbCAqRCwgdW5zaWduZWQgTVZJbmRleCA9IDApCisgICAgICA6IE11bHRpVmVyc2lvbkluZGV4KE1WSW5kZXgpIHsKKyAgICBJbml0KEQpOworICB9CiAgIEdsb2JhbERlY2woY29uc3QgQmxvY2tEZWNsICpEKSB7IEluaXQoRCk7IH0KICAgR2xvYmFsRGVjbChjb25zdCBDYXB0dXJlZERlY2wgKkQpIHsgSW5pdChEKTsgfQogICBHbG9iYWxEZWNsKGNvbnN0IE9iakNNZXRob2REZWNsICpEKSB7IEluaXQoRCk7IH0KQEAgLTU3LDYgKzYwLDcgQEAKICAgICBHbG9iYWxEZWNsIENhbm9uR0Q7CiAgICAgQ2Fub25HRC5WYWx1ZS5zZXRQb2ludGVyKFZhbHVlLmdldFBvaW50ZXIoKS0+Z2V0Q2Fub25pY2FsRGVjbCgpKTsKICAgICBDYW5vbkdELlZhbHVlLnNldEludChWYWx1ZS5nZXRJbnQoKSk7CisgICAgQ2Fub25HRC5NdWx0aVZlcnNpb25JbmRleCA9IE11bHRpVmVyc2lvbkluZGV4OwogCiAgICAgcmV0dXJuIENhbm9uR0Q7CiAgIH0KQEAgLTczLDggKzc3LDE3IEBACiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENYWER0b3JUeXBlPihWYWx1ZS5nZXRJbnQoKSk7CiAgIH0KIAorICB1bnNpZ25lZCBnZXRNdWx0aVZlcnNpb25JbmRleCgpIGNvbnN0IHsKKyAgICBhc3NlcnQoaXNhPEZ1bmN0aW9uRGVjbD4oZ2V0RGVjbCgpKSAmJgorICAgICAgICAgICAhaXNhPENYWENvbnN0cnVjdG9yRGVjbD4oZ2V0RGVjbCgpKSAmJgorICAgICAgICAgICAhaXNhPENYWERlc3RydWN0b3JEZWNsPihnZXREZWNsKCkpICYmCisgICAgICAgICAgICJEZWNsIGlzIG5vdCBhIHBsYWluIEZ1bmN0aW9uRGVjbCEiKTsKKyAgICByZXR1cm4gTXVsdGlWZXJzaW9uSW5kZXg7CisgIH0KKwogICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdsb2JhbERlY2wgJkxIUywgY29uc3QgR2xvYmFsRGVjbCAmUkhTKSB7Ci0gICAgcmV0dXJuIExIUy5WYWx1ZSA9PSBSSFMuVmFsdWU7CisgICAgcmV0dXJuIExIUy5WYWx1ZSA9PSBSSFMuVmFsdWUgJiYKKyAgICAgICAgICAgTEhTLk11bHRpVmVyc2lvbkluZGV4ID09IFJIUy5NdWx0aVZlcnNpb25JbmRleDsKICAgfQogCiAgIHZvaWQgKmdldEFzT3BhcXVlUHRyKCkgY29uc3QgeyByZXR1cm4gVmFsdWUuZ2V0T3BhcXVlVmFsdWUoKTsgfQpAQCAtOTAsNiArMTAzLDE2IEBACiAgICAgUmVzdWx0LlZhbHVlLnNldFBvaW50ZXIoRCk7CiAgICAgcmV0dXJuIFJlc3VsdDsKICAgfQorCisgIEdsb2JhbERlY2wgZ2V0V2l0aE11bHRpVmVyc2lvbkluZGV4KHVuc2lnbmVkIEluZGV4KSB7CisgICAgYXNzZXJ0KGlzYTxGdW5jdGlvbkRlY2w+KGdldERlY2woKSkgJiYKKyAgICAgICAgICAgIWlzYTxDWFhDb25zdHJ1Y3RvckRlY2w+KGdldERlY2woKSkgJiYKKyAgICAgICAgICAgIWlzYTxDWFhEZXN0cnVjdG9yRGVjbD4oZ2V0RGVjbCgpKSAmJgorICAgICAgICAgICAiRGVjbCBpcyBub3QgYSBwbGFpbiBGdW5jdGlvbkRlY2whIik7CisgICAgR2xvYmFsRGVjbCBSZXN1bHQoKnRoaXMpOworICAgIFJlc3VsdC5NdWx0aVZlcnNpb25JbmRleCA9IEluZGV4OworICAgIHJldHVybiBSZXN1bHQ7CisgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIGNsYW5nCkBAIC0xMTYsMTMgKzEzOSw2IEBACiAgICAgfQogICB9OwogCi0gIC8vIEdsb2JhbERlY2wgaXNuJ3QgKnRlY2huaWNhbGx5KiBhIFBPRCB0eXBlLiBIb3dldmVyLCBpdHMgY29weSBjb25zdHJ1Y3RvciwKLSAgLy8gY29weSBhc3NpZ25tZW50IG9wZXJhdG9yLCBhbmQgZGVzdHJ1Y3RvciBhcmUgYWxsIHRyaXZpYWwuCi0gIHRlbXBsYXRlIDw+Ci0gIHN0cnVjdCBpc1BvZExpa2U8Y2xhbmc6Okdsb2JhbERlY2w+IHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7Ci0gIH07Ci0KIH0gLy8gbmFtZXNwYWNlIGxsdm0KIAogI2VuZGlmIC8vIExMVk1fQ0xBTkdfQVNUX0dMT0JBTERFQ0xfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0xhbWJkYUNhcHR1cmUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9MYW1iZGFDYXB0dXJlLmgKaW5kZXggZjI0NmJjNC4uOGUyODA2NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0xhbWJkYUNhcHR1cmUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvTGFtYmRhQ2FwdHVyZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gTGFtYmRhQ2FwdHVyZS5oIC0gVHlwZXMgZm9yIEMrKyBMYW1iZGEgQ2FwdHVyZXMgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0xleGljYWxseU9yZGVyZWRSZWN1cnNpdmVBU1RWaXNpdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvTGV4aWNhbGx5T3JkZXJlZFJlY3Vyc2l2ZUFTVFZpc2l0b3IuaAppbmRleCA0N2RhYzQzLi5lNDJmMDQ0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvTGV4aWNhbGx5T3JkZXJlZFJlY3Vyc2l2ZUFTVFZpc2l0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvTGV4aWNhbGx5T3JkZXJlZFJlY3Vyc2l2ZUFTVFZpc2l0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIExleGljYWxseU9yZGVyZWRSZWN1cnNpdmVBU1RWaXNpdG9yLmggLSAtLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL0xvY0luZm9UeXBlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvTG9jSW5mb1R5cGUuaAppbmRleCA4MDJkOTEzLi4xMDczMTc0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvTG9jSW5mb1R5cGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvTG9jSW5mb1R5cGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIExvY0luZm9UeXBlLmggLSBQYXJzZWQgVHlwZSB3aXRoIExvY2F0aW9uIEluZm9ybWF0aW9uLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL01hbmdsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL01hbmdsZS5oCmluZGV4IGM0MmZlOTEuLmZiNTNmYmUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9NYW5nbGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvTWFuZ2xlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBNYW5nbGUuaCAtIE1hbmdsZSBDKysgTmFtZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE0LDYgKzEzLDcgQEAKICNpZm5kZWYgTExWTV9DTEFOR19BU1RfTUFOR0xFX0gKICNkZWZpbmUgTExWTV9DTEFOR19BU1RfTUFOR0xFX0gKIAorI2luY2x1ZGUgImNsYW5nL0FTVC9EZWNsLmgiCiAjaW5jbHVkZSAiY2xhbmcvQVNUL1R5cGUuaCIKICNpbmNsdWRlICJjbGFuZy9CYXNpYy9BQkkuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9EZW5zZU1hcC5oIgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL01hbmdsZU51bWJlcmluZ0NvbnRleHQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9NYW5nbGVOdW1iZXJpbmdDb250ZXh0LmgKaW5kZXggZmYyMTQ4ZS4uZjFjYTZhMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL01hbmdsZU51bWJlcmluZ0NvbnRleHQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvTWFuZ2xlTnVtYmVyaW5nQ29udGV4dC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0gTWFuZ2xlTnVtYmVyaW5nQ29udGV4dC5oIC0gQ29udGV4dCBmb3IgbWFuZ2xpbmcgbnVtYmVycyAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvTlNBUEkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9OU0FQSS5oCmluZGV4IGY5MzQwYzYuLjIxZjBjNTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9OU0FQSS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9OU0FQSS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gTlNBUEkuaCAtIE5TRm91bmRhdGlvbiBBUElzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL05lc3RlZE5hbWVTcGVjaWZpZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9OZXN0ZWROYW1lU3BlY2lmaWVyLmgKaW5kZXggZmE5OGNmZC4uYzZmYWU2ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL05lc3RlZE5hbWVTcGVjaWZpZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvTmVzdGVkTmFtZVNwZWNpZmllci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE5lc3RlZE5hbWVTcGVjaWZpZXIuaCAtIEMrKyBuZXN0ZWQgbmFtZSBzcGVjaWZpZXJzIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yMTIsOSArMjExLDEyIEBACiAgIC8vLyBwYXJhbWV0ZXIgcGFjayAoZm9yIEMrKzExIHZhcmlhZGljIHRlbXBsYXRlcykuCiAgIGJvb2wgY29udGFpbnNVbmV4cGFuZGVkUGFyYW1ldGVyUGFjaygpIGNvbnN0OwogCi0gIC8vLyBQcmludCB0aGlzIG5lc3RlZCBuYW1lIHNwZWNpZmllciB0byB0aGUgZ2l2ZW4gb3V0cHV0Ci0gIC8vLyBzdHJlYW0uCi0gIHZvaWQgcHJpbnQocmF3X29zdHJlYW0gJk9TLCBjb25zdCBQcmludGluZ1BvbGljeSAmUG9saWN5KSBjb25zdDsKKyAgLy8vIFByaW50IHRoaXMgbmVzdGVkIG5hbWUgc3BlY2lmaWVyIHRvIHRoZSBnaXZlbiBvdXRwdXQgc3RyZWFtLiBJZgorICAvLy8gYFJlc29sdmVUZW1wbGF0ZUFyZ3VtZW50c2AgaXMgdHJ1ZSwgd2UnbGwgcHJpbnQgYWN0dWFsIHR5cGVzLCBlLmcuCisgIC8vLyBgbnM6OlNvbWVUZW1wbGF0ZTxpbnQsIE15Q2xhc3M+YCBpbnN0ZWFkIG9mCisgIC8vLyBgbnM6OlNvbWVUZW1wbGF0ZTxDb250YWluZXI6OnZhbHVlX3R5cGUsIFQ+YC4KKyAgdm9pZCBwcmludChyYXdfb3N0cmVhbSAmT1MsIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3ksCisgICAgICAgICAgICAgYm9vbCBSZXNvbHZlVGVtcGxhdGVBcmd1bWVudHMgPSBmYWxzZSkgY29uc3Q7CiAKICAgdm9pZCBQcm9maWxlKGxsdm06OkZvbGRpbmdTZXROb2RlSUQgJklEKSBjb25zdCB7CiAgICAgSUQuQWRkUG9pbnRlcihQcmVmaXguZ2V0T3BhcXVlVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvTm9uVHJpdmlhbFR5cGVWaXNpdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvTm9uVHJpdmlhbFR5cGVWaXNpdG9yLmgKaW5kZXggYmFiMzczZC4uYWFmY2VkYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL05vblRyaXZpYWxUeXBlVmlzaXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9Ob25Ucml2aWFsVHlwZVZpc2l0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gTm9uVHJpdmlhbFR5cGVWaXNpdG9yLmggLSBWaXNpdG9yIGZvciBub24tdHJpdmlhbCBUeXBlcyAqLSBDKysgLS0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL09EUkhhc2guaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9PRFJIYXNoLmgKaW5kZXggZmVhYTgzOC4uY2Q0YTZmMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL09EUkhhc2guaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvT0RSSGFzaC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBPRFJIYXNoLmggLSBIYXNoaW5nIHRvIGRpYWdub3NlIE9EUiBmYWlsdXJlcyAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvT1NMb2cuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9PU0xvZy5oCnNpbWlsYXJpdHkgaW5kZXggODElCnJlbmFtZSBmcm9tIGxpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL09TTG9nLmgKcmVuYW1lIHRvIGxpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9PU0xvZy5oCmluZGV4IDFlNjBhMjMuLmMyNGU3OWMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL09TTG9nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL09TTG9nLmgKQEAgLTEsOSArMSw4IEBACiAvLz0gT1NMb2cuaCAtIEFuYWx5c2lzIG9mIGNhbGxzIHRvIG9zX2xvZyBidWlsdGlucyAtLSotIEMrKyAtKi09PT09PT09PT09PT09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTUyLDcgKzUxLDEwIEBACiAKICAgICAvLyBUaGUgaXRlbSBpcyBjb3JyZXNwb25kaW5nIHRvIHRoZSAnJW0nIGZvcm1hdCBzcGVjaWZpZXIsIG5vIHZhbHVlIGlzCiAgICAgLy8gcG9wdWxhdGVkIGluIHRoZSBidWZmZXIgYW5kIHRoZSBydW50aW1lIGlzIGxvYWRpbmcgdGhlIGVycm5vIHZhbHVlLgotICAgIEVycm5vS2luZAorICAgIEVycm5vS2luZCwKKworICAgIC8vIFRoZSBpdGVtIGlzIGEgbWFzayB0eXBlLgorICAgIE1hc2tLaW5kCiAgIH07CiAKICAgZW51bSB7CkBAIC02MCw3ICs2MiwxMCBAQAogICAgIElzUHJpdmF0ZSA9IDB4MSwKIAogICAgIC8vIFRoZSBpdGVtIGlzIG1hcmtlZCAicHVibGljIiBpbiB0aGUgZm9ybWF0IHN0cmluZy4KLSAgICBJc1B1YmxpYyA9IDB4MgorICAgIElzUHVibGljID0gMHgyLAorCisgICAgLy8gVGhlIGl0ZW0gaXMgbWFya2VkICJzZW5zaXRpdmUiIGluIHRoZSBmb3JtYXQgc3RyaW5nLgorICAgIElzU2Vuc2l0aXZlID0gMHg0IHwgSXNQcml2YXRlCiAgIH07CiAKIHByaXZhdGU6CkBAIC02OSwyMSArNzQsMjQgQEAKICAgQ2hhclVuaXRzIENvbnN0VmFsdWU7CiAgIENoYXJVbml0cyBTaXplOyAvLyBzaXplIG9mIHRoZSBkYXRhLCBub3QgaW5jbHVkaW5nIHRoZSBoZWFkZXIgYnl0ZXMKICAgdW5zaWduZWQgRmxhZ3MgPSAwOworICBTdHJpbmdSZWYgTWFza1R5cGU7CiAKIHB1YmxpYzoKLSAgT1NMb2dCdWZmZXJJdGVtKEtpbmQga2luZCwgY29uc3QgRXhwciAqZXhwciwgQ2hhclVuaXRzIHNpemUsIHVuc2lnbmVkIGZsYWdzKQotICAgICAgOiBUaGVLaW5kKGtpbmQpLCBUaGVFeHByKGV4cHIpLCBTaXplKHNpemUpLCBGbGFncyhmbGFncykge30KKyAgT1NMb2dCdWZmZXJJdGVtKEtpbmQga2luZCwgY29uc3QgRXhwciAqZXhwciwgQ2hhclVuaXRzIHNpemUsIHVuc2lnbmVkIGZsYWdzLAorICAgICAgICAgICAgICAgICAgU3RyaW5nUmVmIG1hc2tUeXBlID0gU3RyaW5nUmVmKCkpCisgICAgICA6IFRoZUtpbmQoa2luZCksIFRoZUV4cHIoZXhwciksIFNpemUoc2l6ZSksIEZsYWdzKGZsYWdzKSwKKyAgICAgICAgTWFza1R5cGUobWFza1R5cGUpIHsKKyAgICBhc3NlcnQoKChGbGFncyA9PSAwKSB8fCAoRmxhZ3MgPT0gSXNQcml2YXRlKSB8fCAoRmxhZ3MgPT0gSXNQdWJsaWMpIHx8CisgICAgICAgICAgICAoRmxhZ3MgPT0gSXNTZW5zaXRpdmUpKSAmJgorICAgICAgICAgICAidW5leHBlY3RlZCBwcml2YWN5IGZsYWciKTsKKyAgfQogCiAgIE9TTG9nQnVmZmVySXRlbShBU1RDb250ZXh0ICZDdHgsIENoYXJVbml0cyB2YWx1ZSwgdW5zaWduZWQgZmxhZ3MpCiAgICAgICA6IFRoZUtpbmQoQ291bnRLaW5kKSwgQ29uc3RWYWx1ZSh2YWx1ZSksCiAgICAgICAgIFNpemUoQ3R4LmdldFR5cGVTaXplSW5DaGFycyhDdHguSW50VHkpKSwgRmxhZ3MoZmxhZ3MpIHt9CiAKICAgdW5zaWduZWQgY2hhciBnZXREZXNjcmlwdG9yQnl0ZSgpIGNvbnN0IHsKLSAgICB1bnNpZ25lZCBjaGFyIHJlc3VsdCA9IDA7Ci0gICAgaWYgKGdldElzUHJpdmF0ZSgpKQotICAgICAgcmVzdWx0IHw9IElzUHJpdmF0ZTsKLSAgICBpZiAoZ2V0SXNQdWJsaWMoKSkKLSAgICAgIHJlc3VsdCB8PSBJc1B1YmxpYzsKKyAgICB1bnNpZ25lZCBjaGFyIHJlc3VsdCA9IEZsYWdzOwogICAgIHJlc3VsdCB8PSAoKHVuc2lnbmVkKWdldEtpbmQoKSkgPDwgNDsKICAgICByZXR1cm4gcmVzdWx0OwogICB9CkBAIC05MiwxMSArMTAwLDEyIEBACiAKICAgS2luZCBnZXRLaW5kKCkgY29uc3QgeyByZXR1cm4gVGhlS2luZDsgfQogICBib29sIGdldElzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIChGbGFncyAmIElzUHJpdmF0ZSkgIT0gMDsgfQotICBib29sIGdldElzUHVibGljKCkgY29uc3QgeyByZXR1cm4gKEZsYWdzICYgSXNQdWJsaWMpICE9IDA7IH0KIAogICBjb25zdCBFeHByICpnZXRFeHByKCkgY29uc3QgeyByZXR1cm4gVGhlRXhwcjsgfQogICBDaGFyVW5pdHMgZ2V0Q29uc3RWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIENvbnN0VmFsdWU7IH0KICAgQ2hhclVuaXRzIHNpemUoKSBjb25zdCB7IHJldHVybiBTaXplOyB9CisKKyAgU3RyaW5nUmVmIGdldE1hc2tUeXBlKCkgY29uc3QgeyByZXR1cm4gTWFza1R5cGU7IH0KIH07CiAKIGNsYXNzIE9TTG9nQnVmZmVyTGF5b3V0IHsKQEAgLTEyMCwxNCArMTI5LDEwIEBACiAgICAgICAgIEl0ZW1zLCBbXShjb25zdCBPU0xvZ0J1ZmZlckl0ZW0gJkl0ZW0pIHsgcmV0dXJuIEl0ZW0uZ2V0SXNQcml2YXRlKCk7IH0pOwogICB9CiAKLSAgYm9vbCBoYXNQdWJsaWNJdGVtcygpIGNvbnN0IHsKLSAgICByZXR1cm4gbGx2bTo6YW55X29mKAotICAgICAgICBJdGVtcywgW10oY29uc3QgT1NMb2dCdWZmZXJJdGVtICZJdGVtKSB7IHJldHVybiBJdGVtLmdldElzUHVibGljKCk7IH0pOwotICB9Ci0KLSAgYm9vbCBoYXNOb25TY2FsYXIoKSBjb25zdCB7CisgIGJvb2wgaGFzTm9uU2NhbGFyT3JNYXNrKCkgY29uc3QgewogICAgIHJldHVybiBsbHZtOjphbnlfb2YoSXRlbXMsIFtdKGNvbnN0IE9TTG9nQnVmZmVySXRlbSAmSXRlbSkgewotICAgICAgcmV0dXJuIEl0ZW0uZ2V0S2luZCgpICE9IE9TTG9nQnVmZmVySXRlbTo6U2NhbGFyS2luZDsKKyAgICAgIHJldHVybiBJdGVtLmdldEtpbmQoKSAhPSBPU0xvZ0J1ZmZlckl0ZW06OlNjYWxhcktpbmQgfHwKKyAgICAgICAgICAgICAhSXRlbS5nZXRNYXNrVHlwZSgpLmVtcHR5KCk7CiAgICAgfSk7CiAgIH0KIApAQCAtMTM1LDcgKzE0MCw3IEBACiAgICAgdW5zaWduZWQgY2hhciByZXN1bHQgPSAwOwogICAgIGlmIChoYXNQcml2YXRlSXRlbXMoKSkKICAgICAgIHJlc3VsdCB8PSBIYXNQcml2YXRlSXRlbXM7Ci0gICAgaWYgKGhhc05vblNjYWxhcigpKQorICAgIGlmIChoYXNOb25TY2FsYXJPck1hc2soKSkKICAgICAgIHJlc3VsdCB8PSBIYXNOb25TY2FsYXJJdGVtczsKICAgICByZXR1cm4gcmVzdWx0OwogICB9CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvT3Blbk1QQ2xhdXNlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvT3Blbk1QQ2xhdXNlLmgKaW5kZXggOThiMTk4Ni4uYmVjYjJhMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL09wZW5NUENsYXVzZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9PcGVuTVBDbGF1c2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBPcGVuTVBDbGF1c2UuaCAtIENsYXNzZXMgZm9yIE9wZW5NUCBjbGF1c2VzIC0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtODI3LDYgKzgyNiwxMTcgQEAKICAgfQogfTsKIAorLy8vIFRoaXMgcmVwcmVzZW50cyAnZHluYW1pY19hbGxvY2F0b3JzJyBjbGF1c2UgaW4gdGhlICcjcHJhZ21hIG9tcCByZXF1aXJlcycKKy8vLyBkaXJlY3RpdmUuCisvLy8KKy8vLyBcY29kZQorLy8vICNwcmFnbWEgb21wIHJlcXVpcmVzIGR5bmFtaWNfYWxsb2NhdG9ycworLy8vIFxlbmRjb2RlCisvLy8gSW4gdGhpcyBleGFtcGxlIGRpcmVjdGl2ZSAnI3ByYWdtYSBvbXAgcmVxdWlyZXMnIGhhcyAnZHluYW1pY19hbGxvY2F0b3JzJworLy8vIGNsYXVzZS4KK2NsYXNzIE9NUER5bmFtaWNBbGxvY2F0b3JzQ2xhdXNlIGZpbmFsIDogcHVibGljIE9NUENsYXVzZSB7CitwdWJsaWM6CisgIGZyaWVuZCBjbGFzcyBPTVBDbGF1c2VSZWFkZXI7CisgIC8vLyBCdWlsZCAnZHluYW1pY19hbGxvY2F0b3JzJyBjbGF1c2UuCisgIC8vLworICAvLy8gXHBhcmFtIFN0YXJ0TG9jIFN0YXJ0aW5nIGxvY2F0aW9uIG9mIHRoZSBjbGF1c2UuCisgIC8vLyBccGFyYW0gRW5kTG9jIEVuZGluZyBsb2NhdGlvbiBvZiB0aGUgY2xhdXNlLgorICBPTVBEeW5hbWljQWxsb2NhdG9yc0NsYXVzZShTb3VyY2VMb2NhdGlvbiBTdGFydExvYywgU291cmNlTG9jYXRpb24gRW5kTG9jKQorICAgICAgOiBPTVBDbGF1c2UoT01QQ19keW5hbWljX2FsbG9jYXRvcnMsIFN0YXJ0TG9jLCBFbmRMb2MpIHt9CisKKyAgLy8vIEJ1aWxkIGFuIGVtcHR5IGNsYXVzZS4KKyAgT01QRHluYW1pY0FsbG9jYXRvcnNDbGF1c2UoKQorICAgICAgOiBPTVBDbGF1c2UoT01QQ19keW5hbWljX2FsbG9jYXRvcnMsIFNvdXJjZUxvY2F0aW9uKCksIFNvdXJjZUxvY2F0aW9uKCkpIHsKKyAgfQorCisgIGNoaWxkX3JhbmdlIGNoaWxkcmVuKCkgeworICAgIHJldHVybiBjaGlsZF9yYW5nZShjaGlsZF9pdGVyYXRvcigpLCBjaGlsZF9pdGVyYXRvcigpKTsKKyAgfQorCisgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgT01QQ2xhdXNlICpUKSB7CisgICAgcmV0dXJuIFQtPmdldENsYXVzZUtpbmQoKSA9PSBPTVBDX2R5bmFtaWNfYWxsb2NhdG9yczsKKyAgfQorfTsKKworLy8vIFRoaXMgcmVwcmVzZW50cyAnYXRvbWljX2RlZmF1bHRfbWVtX29yZGVyJyBjbGF1c2UgaW4gdGhlICcjcHJhZ21hIG9tcAorLy8vIHJlcXVpcmVzJyAgZGlyZWN0aXZlLgorLy8vCisvLy8gXGNvZGUKKy8vLyAjcHJhZ21hIG9tcCByZXF1aXJlcyBhdG9taWNfZGVmYXVsdF9tZW1fb3JkZXIoc2VxX2NzdCkKKy8vLyBcZW5kY29kZQorLy8vIEluIHRoaXMgZXhhbXBsZSBkaXJlY3RpdmUgJyNwcmFnbWEgb21wIHJlcXVpcmVzJyBoYXMgc2ltcGxlCisvLy8gYXRvbWljX2RlZmF1bHRfbWVtX29yZGVyJyBjbGF1c2Ugd2l0aCBraW5kICdzZXFfY3N0Jy4KK2NsYXNzIE9NUEF0b21pY0RlZmF1bHRNZW1PcmRlckNsYXVzZSBmaW5hbCA6IHB1YmxpYyBPTVBDbGF1c2UgeworICBmcmllbmQgY2xhc3MgT01QQ2xhdXNlUmVhZGVyOworCisgIC8vLyBMb2NhdGlvbiBvZiAnKCcKKyAgU291cmNlTG9jYXRpb24gTFBhcmVuTG9jOworCisgIC8vLyBBIGtpbmQgb2YgdGhlICdhdG9taWNfZGVmYXVsdF9tZW1fb3JkZXInIGNsYXVzZS4KKyAgT3Blbk1QQXRvbWljRGVmYXVsdE1lbU9yZGVyQ2xhdXNlS2luZCBLaW5kID0KKyAgICAgIE9NUENfQVRPTUlDX0RFRkFVTFRfTUVNX09SREVSX3Vua25vd247CisKKyAgLy8vIFN0YXJ0IGxvY2F0aW9uIG9mIHRoZSBraW5kIGluIHNvdXJjZSBjb2RlLgorICBTb3VyY2VMb2NhdGlvbiBLaW5kS3dMb2M7CisKKyAgLy8vIFNldCBraW5kIG9mIHRoZSBjbGF1c2UuCisgIC8vLworICAvLy8gXHBhcmFtIEsgS2luZCBvZiBjbGF1c2UuCisgIHZvaWQgc2V0QXRvbWljRGVmYXVsdE1lbU9yZGVyS2luZChPcGVuTVBBdG9taWNEZWZhdWx0TWVtT3JkZXJDbGF1c2VLaW5kIEspIHsKKyAgICBLaW5kID0gSzsKKyAgfQorCisgIC8vLyBTZXQgY2xhdXNlIGtpbmQgbG9jYXRpb24uCisgIC8vLworICAvLy8gXHBhcmFtIEtMb2MgS2luZCBsb2NhdGlvbi4KKyAgdm9pZCBzZXRBdG9taWNEZWZhdWx0TWVtT3JkZXJLaW5kS3dMb2MoU291cmNlTG9jYXRpb24gS0xvYykgeworICAgIEtpbmRLd0xvYyA9IEtMb2M7CisgIH0KKworcHVibGljOgorICAvLy8gQnVpbGQgJ2F0b21pY19kZWZhdWx0X21lbV9vcmRlcicgY2xhdXNlIHdpdGggYXJndW1lbnQgXGEgQSAoJ3NlcV9jc3QnLAorICAvLy8gJ2FjcV9yZWwnIG9yICdyZWxheGVkJykuCisgIC8vLworICAvLy8gXHBhcmFtIEEgQXJndW1lbnQgb2YgdGhlIGNsYXVzZSAoJ3NlcV9jc3QnLCAnYWNxX3JlbCcgb3IgJ3JlbGF4ZWQnKS4KKyAgLy8vIFxwYXJhbSBBTG9jIFN0YXJ0aW5nIGxvY2F0aW9uIG9mIHRoZSBhcmd1bWVudC4KKyAgLy8vIFxwYXJhbSBTdGFydExvYyBTdGFydGluZyBsb2NhdGlvbiBvZiB0aGUgY2xhdXNlLgorICAvLy8gXHBhcmFtIExQYXJlbkxvYyBMb2NhdGlvbiBvZiAnKCcuCisgIC8vLyBccGFyYW0gRW5kTG9jIEVuZGluZyBsb2NhdGlvbiBvZiB0aGUgY2xhdXNlLgorICBPTVBBdG9taWNEZWZhdWx0TWVtT3JkZXJDbGF1c2UoT3Blbk1QQXRvbWljRGVmYXVsdE1lbU9yZGVyQ2xhdXNlS2luZCBBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gQUxvYywgU291cmNlTG9jYXRpb24gU3RhcnRMb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBMUGFyZW5Mb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBFbmRMb2MpCisgICAgICA6IE9NUENsYXVzZShPTVBDX2F0b21pY19kZWZhdWx0X21lbV9vcmRlciwgU3RhcnRMb2MsIEVuZExvYyksCisgICAgICAgIExQYXJlbkxvYyhMUGFyZW5Mb2MpLCBLaW5kKEEpLCBLaW5kS3dMb2MoQUxvYykge30KKworICAvLy8gQnVpbGQgYW4gZW1wdHkgY2xhdXNlLgorICBPTVBBdG9taWNEZWZhdWx0TWVtT3JkZXJDbGF1c2UoKQorICAgICAgOiBPTVBDbGF1c2UoT01QQ19hdG9taWNfZGVmYXVsdF9tZW1fb3JkZXIsIFNvdXJjZUxvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbigpKSB7fQorCisgIC8vLyBTZXRzIHRoZSBsb2NhdGlvbiBvZiAnKCcuCisgIHZvaWQgc2V0TFBhcmVuTG9jKFNvdXJjZUxvY2F0aW9uIExvYykgeyBMUGFyZW5Mb2MgPSBMb2M7IH0KKworICAvLy8gUmV0dXJucyB0aGUgbG9jYWl0b24gb2YgJygnLgorICBTb3VyY2VMb2NhdGlvbiBnZXRMUGFyZW5Mb2MoKSBjb25zdCB7IHJldHVybiBMUGFyZW5Mb2M7IH0KKworICAvLy8gUmV0dXJucyBraW5kIG9mIHRoZSBjbGF1c2UuCisgIE9wZW5NUEF0b21pY0RlZmF1bHRNZW1PcmRlckNsYXVzZUtpbmQgZ2V0QXRvbWljRGVmYXVsdE1lbU9yZGVyS2luZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gS2luZDsKKyAgfQorCisgIC8vLyBSZXR1cm5zIGxvY2F0aW9uIG9mIGNsYXVzZSBraW5kLgorICBTb3VyY2VMb2NhdGlvbiBnZXRBdG9taWNEZWZhdWx0TWVtT3JkZXJLaW5kS3dMb2MoKSBjb25zdCB7IHJldHVybiBLaW5kS3dMb2M7IH0KKworICBjaGlsZF9yYW5nZSBjaGlsZHJlbigpIHsKKyAgICByZXR1cm4gY2hpbGRfcmFuZ2UoY2hpbGRfaXRlcmF0b3IoKSwgY2hpbGRfaXRlcmF0b3IoKSk7CisgIH0KKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IE9NUENsYXVzZSAqVCkgeworICAgIHJldHVybiBULT5nZXRDbGF1c2VLaW5kKCkgPT0gT01QQ19hdG9taWNfZGVmYXVsdF9tZW1fb3JkZXI7CisgIH0KK307CisKIC8vLyBUaGlzIHJlcHJlc2VudHMgJ3NjaGVkdWxlJyBjbGF1c2UgaW4gdGhlICcjcHJhZ21hIG9tcCAuLi4nIGRpcmVjdGl2ZS4KIC8vLwogLy8vIFxjb2RlCkBAIC0zOTUwLDggKzQwNjAsMTkgQEAKICAgICByZXR1cm4gZ2V0VW5pcXVlRGVjbGFyYXRpb25zTnVtKCkgKyBnZXRUb3RhbENvbXBvbmVudExpc3ROdW0oKTsKICAgfQogCi0gIC8vLyBNYXAgdHlwZSBtb2RpZmllciBmb3IgdGhlICdtYXAnIGNsYXVzZS4KLSAgT3Blbk1QTWFwQ2xhdXNlS2luZCBNYXBUeXBlTW9kaWZpZXIgPSBPTVBDX01BUF91bmtub3duOworcHVibGljOgorICAvLy8gTnVtYmVyIG9mIGFsbG93ZWQgbWFwLXR5cGUtbW9kaWZpZXJzLgorICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE51bWJlck9mTW9kaWZpZXJzID0KKyAgICAgIE9NUENfTUFQX01PRElGSUVSX2xhc3QgLSBPTVBDX01BUF9NT0RJRklFUl91bmtub3duIC0gMTsKKworcHJpdmF0ZToKKyAgLy8vIE1hcC10eXBlLW1vZGlmaWVycyBmb3IgdGhlICdtYXAnIGNsYXVzZS4KKyAgT3Blbk1QTWFwTW9kaWZpZXJLaW5kIE1hcFR5cGVNb2RpZmllcnNbTnVtYmVyT2ZNb2RpZmllcnNdID0geworICAgIE9NUENfTUFQX01PRElGSUVSX3Vua25vd24sIE9NUENfTUFQX01PRElGSUVSX3Vua25vd24KKyAgfTsKKyAgCisgIC8vLyBMb2NhdGlvbiBvZiBtYXAtdHlwZS1tb2RpZmllcnMgZm9yIHRoZSAnbWFwJyBjbGF1c2UuCisgIFNvdXJjZUxvY2F0aW9uIE1hcFR5cGVNb2RpZmllcnNMb2NbTnVtYmVyT2ZNb2RpZmllcnNdOwogCiAgIC8vLyBNYXAgdHlwZSBmb3IgdGhlICdtYXAnIGNsYXVzZS4KICAgT3Blbk1QTWFwQ2xhdXNlS2luZCBNYXBUeXBlID0gT01QQ19NQVBfdW5rbm93bjsKQEAgLTM5NjksNyArNDA5MCw4IEBACiAgIC8vLyBOdW1VbmlxdWVEZWNsYXJhdGlvbnMgZGVjbGFyYXRpb25zLCBcYSBOdW1Db21wb25lbnRMaXN0cyB0b3RhbCBjb21wb25lbnQKICAgLy8vIGxpc3RzLCBhbmQgXGEgTnVtQ29tcG9uZW50cyB0b3RhbCBleHByZXNzaW9uIGNvbXBvbmVudHMuCiAgIC8vLwotICAvLy8gXHBhcmFtIE1hcFR5cGVNb2RpZmllciBNYXAgdHlwZSBtb2RpZmllci4KKyAgLy8vIFxwYXJhbSBNYXBNb2RpZmllcnMgTWFwLXR5cGUtbW9kaWZpZXJzLgorICAvLy8gXHBhcmFtIE1hcE1vZGlmaWVyc0xvYyBMb2NhdGlvbnMgb2YgbWFwLXR5cGUtbW9kaWZpZXJzLgogICAvLy8gXHBhcmFtIE1hcFR5cGUgTWFwIHR5cGUuCiAgIC8vLyBccGFyYW0gTWFwVHlwZUlzSW1wbGljaXQgTWFwIHR5cGUgaXMgaW5mZXJyZWQgaW1wbGljaXRseS4KICAgLy8vIFxwYXJhbSBNYXBMb2MgTG9jYXRpb24gb2YgdGhlIG1hcCB0eXBlLgpAQCAtMzk4MCw3ICs0MTAyLDggQEAKICAgLy8vIGNsYXVzZS4KICAgLy8vIFxwYXJhbSBOdW1Db21wb25lbnRMaXN0cyBOdW1iZXIgb2YgY29tcG9uZW50IGxpc3RzIGluIHRoaXMgY2xhdXNlLgogICAvLy8gXHBhcmFtIE51bUNvbXBvbmVudHMgVG90YWwgbnVtYmVyIG9mIGV4cHJlc3Npb24gY29tcG9uZW50cyBpbiB0aGUgY2xhdXNlLgotICBleHBsaWNpdCBPTVBNYXBDbGF1c2UoT3Blbk1QTWFwQ2xhdXNlS2luZCBNYXBUeXBlTW9kaWZpZXIsCisgIGV4cGxpY2l0IE9NUE1hcENsYXVzZShBcnJheVJlZjxPcGVuTVBNYXBNb2RpZmllcktpbmQ+IE1hcE1vZGlmaWVycywKKyAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFNvdXJjZUxvY2F0aW9uPiBNYXBNb2RpZmllcnNMb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuTVBNYXBDbGF1c2VLaW5kIE1hcFR5cGUsIGJvb2wgTWFwVHlwZUlzSW1wbGljaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBNYXBMb2MsIFNvdXJjZUxvY2F0aW9uIFN0YXJ0TG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTFBhcmVuTG9jLCBTb3VyY2VMb2NhdGlvbiBFbmRMb2MsCkBAIC0zOTg5LDggKzQxMTIsMTcgQEAKICAgICAgIDogT01QTWFwcGFibGVFeHByTGlzdENsYXVzZShPTVBDX21hcCwgU3RhcnRMb2MsIExQYXJlbkxvYywgRW5kTG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bVZhcnMsIE51bVVuaXF1ZURlY2xhcmF0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1Db21wb25lbnRMaXN0cywgTnVtQ29tcG9uZW50cyksCi0gICAgICAgIE1hcFR5cGVNb2RpZmllcihNYXBUeXBlTW9kaWZpZXIpLCBNYXBUeXBlKE1hcFR5cGUpLAotICAgICAgICBNYXBUeXBlSXNJbXBsaWNpdChNYXBUeXBlSXNJbXBsaWNpdCksIE1hcExvYyhNYXBMb2MpIHt9CisgICAgICAgIE1hcFR5cGUoTWFwVHlwZSksIE1hcFR5cGVJc0ltcGxpY2l0KE1hcFR5cGVJc0ltcGxpY2l0KSwKKyAgICAgICAgTWFwTG9jKE1hcExvYykgeworICAgICAgICAgIGFzc2VydChsbHZtOjphcnJheV9sZW5ndGhvZihNYXBUeXBlTW9kaWZpZXJzKSA9PSBNYXBNb2RpZmllcnMuc2l6ZSgpCisgICAgICAgICAgICAgICAgICYmICJVbmV4cGVjdGVkIG51bWJlciBvZiBtYXAgdHlwZSBtb2RpZmllcnMuIik7CisgICAgICAgICAgbGx2bTo6Y29weShNYXBNb2RpZmllcnMsIHN0ZDo6YmVnaW4oTWFwVHlwZU1vZGlmaWVycykpOworCisgICAgICAgICAgYXNzZXJ0KGxsdm06OmFycmF5X2xlbmd0aG9mKE1hcFR5cGVNb2RpZmllcnNMb2MpID09CisgICAgICAgICAgICAgICAgICAgICBNYXBNb2RpZmllcnNMb2Muc2l6ZSgpICYmCisgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIG51bWJlciBvZiBtYXAgdHlwZSBtb2RpZmllciBsb2NhdGlvbnMuIik7CisgICAgICAgICAgbGx2bTo6Y29weShNYXBNb2RpZmllcnNMb2MsIHN0ZDo6YmVnaW4oTWFwVHlwZU1vZGlmaWVyc0xvYykpOworICB9CiAKICAgLy8vIEJ1aWxkIGFuIGVtcHR5IGNsYXVzZS4KICAgLy8vCkBAIC00MDA1LDEwICs0MTM3LDI1IEBACiAgICAgICAgICAgICBPTVBDX21hcCwgU291cmNlTG9jYXRpb24oKSwgU291cmNlTG9jYXRpb24oKSwgU291cmNlTG9jYXRpb24oKSwKICAgICAgICAgICAgIE51bVZhcnMsIE51bVVuaXF1ZURlY2xhcmF0aW9ucywgTnVtQ29tcG9uZW50TGlzdHMsIE51bUNvbXBvbmVudHMpIHt9CiAKLSAgLy8vIFNldCB0eXBlIG1vZGlmaWVyIGZvciB0aGUgY2xhdXNlLgorICAvLy8gU2V0IG1hcC10eXBlLW1vZGlmaWVyIGZvciB0aGUgY2xhdXNlLgogICAvLy8KLSAgLy8vIFxwYXJhbSBUIFR5cGUgTW9kaWZpZXIgZm9yIHRoZSBjbGF1c2UuCi0gIHZvaWQgc2V0TWFwVHlwZU1vZGlmaWVyKE9wZW5NUE1hcENsYXVzZUtpbmQgVCkgeyBNYXBUeXBlTW9kaWZpZXIgPSBUOyB9CisgIC8vLyBccGFyYW0gSSBpbmRleCBmb3IgbWFwLXR5cGUtbW9kaWZpZXIuCisgIC8vLyBccGFyYW0gVCBtYXAtdHlwZS1tb2RpZmllciBmb3IgdGhlIGNsYXVzZS4KKyAgdm9pZCBzZXRNYXBUeXBlTW9kaWZpZXIodW5zaWduZWQgSSwgT3Blbk1QTWFwTW9kaWZpZXJLaW5kIFQpIHsKKyAgICBhc3NlcnQoSSA8IE51bWJlck9mTW9kaWZpZXJzICYmCisgICAgICAgICAgICJVbmV4cGVjdGVkIGluZGV4IHRvIHN0b3JlIG1hcCB0eXBlIG1vZGlmaWVyLCBleGNlZWRzIGFycmF5IHNpemUuIik7CisgICAgTWFwVHlwZU1vZGlmaWVyc1tJXSA9IFQ7CisgIH0KKworICAvLy8gU2V0IGxvY2F0aW9uIGZvciB0aGUgbWFwLXR5cGUtbW9kaWZpZXIuCisgIC8vLworICAvLy8gXHBhcmFtIEkgaW5kZXggZm9yIG1hcC10eXBlLW1vZGlmaWVyIGxvY2F0aW9uLgorICAvLy8gXHBhcmFtIFRMb2MgbWFwLXR5cGUtbW9kaWZpZXIgbG9jYXRpb24uCisgIHZvaWQgc2V0TWFwVHlwZU1vZGlmaWVyTG9jKHVuc2lnbmVkIEksIFNvdXJjZUxvY2F0aW9uIFRMb2MpIHsKKyAgICBhc3NlcnQoSSA8IE51bWJlck9mTW9kaWZpZXJzICYmCisgICAgICAgICAgICJJbmRleCB0byBzdG9yZSBtYXAgdHlwZSBtb2RpZmllciBsb2NhdGlvbiBleGNlZWRzIGFycmF5IHNpemUuIik7CisgICAgTWFwVHlwZU1vZGlmaWVyc0xvY1tJXSA9IFRMb2M7CisgIH0KIAogICAvLy8gU2V0IHR5cGUgZm9yIHRoZSBjbGF1c2UuCiAgIC8vLwpAQCAtNDAzMiw3ICs0MTc5LDggQEAKICAgLy8vIFxwYXJhbSBWYXJzIFRoZSBvcmlnaW5hbCBleHByZXNzaW9uIHVzZWQgaW4gdGhlIGNsYXVzZS4KICAgLy8vIFxwYXJhbSBEZWNsYXJhdGlvbnMgRGVjbGFyYXRpb25zIHVzZWQgaW4gdGhlIGNsYXVzZS4KICAgLy8vIFxwYXJhbSBDb21wb25lbnRMaXN0cyBDb21wb25lbnQgbGlzdHMgdXNlZCBpbiB0aGUgY2xhdXNlLgotICAvLy8gXHBhcmFtIFR5cGVNb2RpZmllciBNYXAgdHlwZSBtb2RpZmllci4KKyAgLy8vIFxwYXJhbSBNYXBNb2RpZmllcnMgTWFwLXR5cGUtbW9kaWZpZXJzLgorICAvLy8gXHBhcmFtIE1hcE1vZGlmaWVyc0xvYyBMb2NhdGlvbiBvZiBtYXAtdHlwZS1tb2RpZmllcnMuCiAgIC8vLyBccGFyYW0gVHlwZSBNYXAgdHlwZS4KICAgLy8vIFxwYXJhbSBUeXBlSXNJbXBsaWNpdCBNYXAgdHlwZSBpcyBpbmZlcnJlZCBpbXBsaWNpdGx5LgogICAvLy8gXHBhcmFtIFR5cGVMb2MgTG9jYXRpb24gb2YgdGhlIG1hcCB0eXBlLgpAQCAtNDA0MSw3ICs0MTg5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEV4cHIgKj4gVmFycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFZhbHVlRGVjbCAqPiBEZWNsYXJhdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXBwYWJsZUV4cHJDb21wb25lbnRMaXN0c1JlZiBDb21wb25lbnRMaXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5NUE1hcENsYXVzZUtpbmQgVHlwZU1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3Blbk1QTWFwTW9kaWZpZXJLaW5kPiBNYXBNb2RpZmllcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxTb3VyY2VMb2NhdGlvbj4gTWFwTW9kaWZpZXJzTG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3Blbk1QTWFwQ2xhdXNlS2luZCBUeXBlLCBib29sIFR5cGVJc0ltcGxpY2l0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gVHlwZUxvYyk7CiAKQEAgLTQwNzEsOSArNDIyMCwzMyBAQAogICAvLy8gbWVzc2FnZXMgZm9yIHNvbWUgdGFyZ2V0IGRpcmVjdGl2ZXMuCiAgIGJvb2wgaXNJbXBsaWNpdE1hcFR5cGUoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIE1hcFR5cGVJc0ltcGxpY2l0OyB9CiAKLSAgLy8vIEZldGNoZXMgdGhlIG1hcCB0eXBlIG1vZGlmaWVyIGZvciB0aGUgY2xhdXNlLgotICBPcGVuTVBNYXBDbGF1c2VLaW5kIGdldE1hcFR5cGVNb2RpZmllcigpIGNvbnN0IExMVk1fUkVBRE9OTFkgewotICAgIHJldHVybiBNYXBUeXBlTW9kaWZpZXI7CisgIC8vLyBGZXRjaGVzIHRoZSBtYXAtdHlwZS1tb2RpZmllciBhdCAnQ250JyBpbmRleCBvZiBhcnJheSBvZiBtb2RpZmllcnMuCisgIC8vLworICAvLy8gXHBhcmFtIENudCBpbmRleCBmb3IgbWFwLXR5cGUtbW9kaWZpZXIuCisgIE9wZW5NUE1hcE1vZGlmaWVyS2luZCBnZXRNYXBUeXBlTW9kaWZpZXIodW5zaWduZWQgQ250KSBjb25zdCBMTFZNX1JFQURPTkxZIHsKKyAgICBhc3NlcnQoQ250IDwgTnVtYmVyT2ZNb2RpZmllcnMgJiYKKyAgICAgICAgICAgIlJlcXVlc3RlZCBtb2RpZmllciBleGNlZWRzIHRoZSB0b3RhbCBudW1iZXIgb2YgbW9kaWZpZXJzLiIpOworICAgIHJldHVybiBNYXBUeXBlTW9kaWZpZXJzW0NudF07CisgIH0KKworICAvLy8gRmV0Y2hlcyB0aGUgbWFwLXR5cGUtbW9kaWZpZXIgbG9jYXRpb24gYXQgJ0NudCcgaW5kZXggb2YgYXJyYXkgb2YKKyAgLy8vIG1vZGlmaWVycycgbG9jYXRpb25zLgorICAvLy8KKyAgLy8vIFxwYXJhbSBDbnQgaW5kZXggZm9yIG1hcC10eXBlLW1vZGlmaWVyIGxvY2F0aW9uLiAgCisgIFNvdXJjZUxvY2F0aW9uIGdldE1hcFR5cGVNb2RpZmllckxvYyh1bnNpZ25lZCBDbnQpIGNvbnN0IExMVk1fUkVBRE9OTFkgeworICAgIGFzc2VydChDbnQgPCBOdW1iZXJPZk1vZGlmaWVycyAmJgorICAgICAgICAgICAiUmVxdWVzdGVkIG1vZGlmaWVyIGxvY2F0aW9uIGV4Y2VlZHMgdG90YWwgbnVtYmVyIG9mIG1vZGlmaWVycy4iKTsKKyAgICByZXR1cm4gTWFwVHlwZU1vZGlmaWVyc0xvY1tDbnRdOworICB9CisKKyAgLy8vIEZldGNoZXMgQXJyYXlSZWYgb2YgbWFwLXR5cGUtbW9kaWZpZXJzLgorICBBcnJheVJlZjxPcGVuTVBNYXBNb2RpZmllcktpbmQ+IGdldE1hcFR5cGVNb2RpZmllcnMoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsKKyAgICByZXR1cm4gbGx2bTo6bWFrZUFycmF5UmVmKE1hcFR5cGVNb2RpZmllcnMpOworICB9CisgIAorICAvLy8gRmV0Y2hlcyBBcnJheVJlZiBvZiBsb2NhdGlvbiBvZiBtYXAtdHlwZS1tb2RpZmllcnMuCisgIEFycmF5UmVmPFNvdXJjZUxvY2F0aW9uPiBnZXRNYXBUeXBlTW9kaWZpZXJzTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7CisgICAgcmV0dXJuIGxsdm06Om1ha2VBcnJheVJlZihNYXBUeXBlTW9kaWZpZXJzTG9jKTsKICAgfQogCiAgIC8vLyBGZXRjaGVzIGxvY2F0aW9uIG9mIGNsYXVzZSBtYXBwaW5nIGtpbmQuCkBAIC01MTQ1LDYgKzUzMTgsNyBAQAogCiAjZGVmaW5lIE9QRU5NUF9DTEFVU0UoTmFtZSwgQ2xhc3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICBSZXRUeSBWaXNpdCAjIyBDbGFzcyAoUFRSKENsYXNzKSBTKSB7IERJU1BBVENIKENsYXNzKTsgfQorICBPUEVOTVBfQ0xBVVNFKGZsdXNoLCBPTVBGbHVzaENsYXVzZSkKICNpbmNsdWRlICJjbGFuZy9CYXNpYy9PcGVuTVBLaW5kcy5kZWYiCiAKICAgUmV0VHkgVmlzaXQoUFRSKE9NUENsYXVzZSkgUykgewpAQCAtNTE1Myw2ICs1MzI3LDcgQEAKICAgICBkZWZhdWx0OiBsbHZtX3VucmVhY2hhYmxlKCJVbmtub3duIGNsYXVzZSBraW5kISIpOwogI2RlZmluZSBPUEVOTVBfQ0xBVVNFKE5hbWUsIENsYXNzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXNlIE9NUENfICMjIE5hbWUgOiByZXR1cm4gVmlzaXQgIyMgQ2xhc3Moc3RhdGljX2Nhc3Q8UFRSKENsYXNzKT4oUykpOworICAgIE9QRU5NUF9DTEFVU0UoZmx1c2gsIE9NUEZsdXNoQ2xhdXNlKQogI2luY2x1ZGUgImNsYW5nL0Jhc2ljL09wZW5NUEtpbmRzLmRlZiIKICAgICB9CiAgIH0KQEAgLTUxNzEsNiArNTM0NiwyMyBAQAogdGVtcGxhdGU8Y2xhc3MgSW1wbENsYXNzLCB0eXBlbmFtZSBSZXRUeSA9IHZvaWQ+CiBjbGFzcyBDb25zdE9NUENsYXVzZVZpc2l0b3IgOgogICAgICAgcHVibGljIE9NUENsYXVzZVZpc2l0b3JCYXNlIDxJbXBsQ2xhc3MsIGNvbnN0X3B0ciwgUmV0VHk+IHt9OworCitjbGFzcyBPTVBDbGF1c2VQcmludGVyIGZpbmFsIDogcHVibGljIE9NUENsYXVzZVZpc2l0b3I8T01QQ2xhdXNlUHJpbnRlcj4geworICByYXdfb3N0cmVhbSAmT1M7CisgIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3k7CisKKyAgLy8vIFByb2Nlc3MgY2xhdXNlcyB3aXRoIGxpc3Qgb2YgdmFyaWFibGVzLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWaXNpdE9NUENsYXVzZUxpc3QoVCAqTm9kZSwgY2hhciBTdGFydFN5bSk7CisKK3B1YmxpYzoKKyAgT01QQ2xhdXNlUHJpbnRlcihyYXdfb3N0cmVhbSAmT1MsIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpCisgICAgICA6IE9TKE9TKSwgUG9saWN5KFBvbGljeSkge30KKworI2RlZmluZSBPUEVOTVBfQ0xBVVNFKE5hbWUsIENsYXNzKSB2b2lkIFZpc2l0IyNDbGFzcyhDbGFzcyAqUyk7CisgIE9QRU5NUF9DTEFVU0UoZmx1c2gsIE9NUEZsdXNoQ2xhdXNlKQorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL09wZW5NUEtpbmRzLmRlZiIKK307CisKIH0gLy8gbmFtZXNwYWNlIGNsYW5nCiAKICNlbmRpZiAvLyBMTFZNX0NMQU5HX0FTVF9PUEVOTVBDTEFVU0VfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL09wZXJhdGlvbktpbmRzLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9PcGVyYXRpb25LaW5kcy5kZWYKaW5kZXggZTJkNjVkOC4uZDhiMjg2ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL09wZXJhdGlvbktpbmRzLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvT3BlcmF0aW9uS2luZHMuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gT3BlcmF0aW9uS2luZHMuZGVmIC0gT3BlcmF0aW9ucyBEYXRhYmFzZSAtLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xOTcsNiArMTk2LDE0IEBACiAvLy8gICAgZmxvYXQgZiA9IGk7CiBDQVNUX09QRVJBVElPTihJbnRlZ3JhbFRvRmxvYXRpbmcpCiAKKy8vLyBDS19GaXhlZFBvaW50Q2FzdCAtIEZpeGVkIHBvaW50IHRvIGZpeGVkIHBvaW50LgorLy8vICAgIChfQWNjdW0pIDAuNXIKK0NBU1RfT1BFUkFUSU9OKEZpeGVkUG9pbnRDYXN0KQorCisvLy8gQ0tfRml4ZWRQb2ludFRvQm9vbGVhbiAtIEZpeGVkIHBvaW50IHRvIGJvb2xlYW4uCisvLy8gICAgKGJvb2wpIDAuNXIKK0NBU1RfT1BFUkFUSU9OKEZpeGVkUG9pbnRUb0Jvb2xlYW4pCisKIC8vLyBDS19GbG9hdGluZ1RvSW50ZWdyYWwgLSBGbG9hdGluZyBwb2ludCB0byBpbnRlZ3JhbC4gIFJvdW5kcwogLy8vIHRvd2FyZHMgemVybywgZGlzY2FyZGluZyBhbnkgZnJhY3Rpb25hbCBjb21wb25lbnQuCiAvLy8gICAgKGludCkgZgpAQCAtMzE4LDExICszMjUsOSBAQAogLy8gY2FsbGVlIG9mIGEgY2FsbCBleHByZXNzaW9uLgogQ0FTVF9PUEVSQVRJT04oQnVpbHRpbkZuVG9GblB0cikKIAotLy8gQ29udmVydCBhIHplcm8gdmFsdWUgZm9yIE9wZW5DTCBldmVudF90IGluaXRpYWxpemF0aW9uLgotQ0FTVF9PUEVSQVRJT04oWmVyb1RvT0NMRXZlbnQpCi0KLS8vIENvbnZlcnQgYSB6ZXJvIHZhbHVlIGZvciBPcGVuQ0wgcXVldWVfdCBpbml0aWFsaXphdGlvbi4KLUNBU1RfT1BFUkFUSU9OKFplcm9Ub09DTFF1ZXVlKQorLy8gQ29udmVydCBhIHplcm8gdmFsdWUgZm9yIE9wZW5DTCBvcGFxdWUgdHlwZXMgaW5pdGlhbGl6YXRpb24gKGV2ZW50X3QsCisvLyBxdWV1ZV90LCBldGMuKQorQ0FTVF9PUEVSQVRJT04oWmVyb1RvT0NMT3BhcXVlVHlwZSkKIAogLy8gQ29udmVydCBhIHBvaW50ZXIgdG8gYSBkaWZmZXJlbnQgYWRkcmVzcyBzcGFjZS4KIENBU1RfT1BFUkFUSU9OKEFkZHJlc3NTcGFjZUNvbnZlcnNpb24pCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvT3BlcmF0aW9uS2luZHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9PcGVyYXRpb25LaW5kcy5oCmluZGV4IGFjNTEyZDcuLjY3OWUwZmQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9PcGVyYXRpb25LaW5kcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9PcGVyYXRpb25LaW5kcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE9wZXJhdGlvbktpbmRzLmggLSBPcGVyYXRpb24gZW51bXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvUGFyZW50TWFwLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvUGFyZW50TWFwLmgKaW5kZXggYzFjNzZjZS4uMWU2NWQ3ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1BhcmVudE1hcC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9QYXJlbnRNYXAuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFBhcmVudE1hcC5oIC0gTWFwcGluZ3MgZnJvbSBTdG10cyB0byB0aGVpciBQYXJlbnRzIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1ByZXR0eURlY2xTdGFja1RyYWNlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvUHJldHR5RGVjbFN0YWNrVHJhY2UuaAppbmRleCA4ZWI1MTllLi44OTliYmNiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvUHJldHR5RGVjbFN0YWNrVHJhY2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvUHJldHR5RGVjbFN0YWNrVHJhY2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQcmV0dHlEZWNsU3RhY2tUcmFjZS5oIC0gU3RhY2sgdHJhY2UgZm9yIGRlY2wgcHJvY2Vzc2luZyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1ByZXR0eVByaW50ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9QcmV0dHlQcmludGVyLmgKaW5kZXggZWQ2Yjk3Zi4uMGNkNjJiYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1ByZXR0eVByaW50ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvUHJldHR5UHJpbnRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gUHJldHR5UHJpbnRlci5oIC0gQ2xhc3NlcyBmb3IgYWlkaW5nIHdpdGggQVNUIHByaW50aW5nIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zOCwyMSArMzcsMjAgQEAKIHN0cnVjdCBQcmludGluZ1BvbGljeSB7CiAgIC8vLyBDcmVhdGUgYSBkZWZhdWx0IHByaW50aW5nIHBvbGljeSBmb3IgdGhlIHNwZWNpZmllZCBsYW5ndWFnZS4KICAgUHJpbnRpbmdQb2xpY3koY29uc3QgTGFuZ09wdGlvbnMgJkxPKQotICAgIDogSW5kZW50YXRpb24oMiksIFN1cHByZXNzU3BlY2lmaWVycyhmYWxzZSksCi0gICAgICBTdXBwcmVzc1RhZ0tleXdvcmQoTE8uQ1BsdXNQbHVzKSwKLSAgICAgIEluY2x1ZGVUYWdEZWZpbml0aW9uKGZhbHNlKSwgU3VwcHJlc3NTY29wZShmYWxzZSksCi0gICAgICBTdXBwcmVzc1Vud3JpdHRlblNjb3BlKGZhbHNlKSwgU3VwcHJlc3NJbml0aWFsaXplcnMoZmFsc2UpLAotICAgICAgQ29uc3RhbnRBcnJheVNpemVBc1dyaXR0ZW4oZmFsc2UpLCBBbm9ueW1vdXNUYWdMb2NhdGlvbnModHJ1ZSksCi0gICAgICBTdXBwcmVzc1N0cm9uZ0xpZmV0aW1lKGZhbHNlKSwgU3VwcHJlc3NMaWZldGltZVF1YWxpZmllcnMoZmFsc2UpLAotICAgICAgU3VwcHJlc3NUZW1wbGF0ZUFyZ3NJbkNYWENvbnN0cnVjdG9ycyhmYWxzZSksCi0gICAgICBCb29sKExPLkJvb2wpLCBSZXN0cmljdChMTy5DOTkpLAotICAgICAgQWxpZ25vZihMTy5DUGx1c1BsdXMxMSksIFVuZGVyc2NvcmVBbGlnbm9mKExPLkMxMSksCi0gICAgICBVc2VWb2lkRm9yWmVyb1BhcmFtcyghTE8uQ1BsdXNQbHVzKSwKLSAgICAgIFRlcnNlT3V0cHV0KGZhbHNlKSwgUG9saXNoRm9yRGVjbGFyYXRpb24oZmFsc2UpLAotICAgICAgSGFsZihMTy5IYWxmKSwgTVNXQ2hhcihMTy5NaWNyb3NvZnRFeHQgJiYgIUxPLldDaGFyKSwKLSAgICAgIEluY2x1ZGVOZXdsaW5lcyh0cnVlKSwgTVNWQ0Zvcm1hdHRpbmcoZmFsc2UpLAotICAgICAgQ29uc3RhbnRzQXNXcml0dGVuKGZhbHNlKSwgU3VwcHJlc3NJbXBsaWNpdEJhc2UoZmFsc2UpLAotICAgICAgRnVsbHlRdWFsaWZpZWROYW1lKGZhbHNlKSB7IH0KKyAgICAgIDogSW5kZW50YXRpb24oMiksIFN1cHByZXNzU3BlY2lmaWVycyhmYWxzZSksCisgICAgICAgIFN1cHByZXNzVGFnS2V5d29yZChMTy5DUGx1c1BsdXMpLCBJbmNsdWRlVGFnRGVmaW5pdGlvbihmYWxzZSksCisgICAgICAgIFN1cHByZXNzU2NvcGUoZmFsc2UpLCBTdXBwcmVzc1Vud3JpdHRlblNjb3BlKGZhbHNlKSwKKyAgICAgICAgU3VwcHJlc3NJbml0aWFsaXplcnMoZmFsc2UpLCBDb25zdGFudEFycmF5U2l6ZUFzV3JpdHRlbihmYWxzZSksCisgICAgICAgIEFub255bW91c1RhZ0xvY2F0aW9ucyh0cnVlKSwgU3VwcHJlc3NTdHJvbmdMaWZldGltZShmYWxzZSksCisgICAgICAgIFN1cHByZXNzTGlmZXRpbWVRdWFsaWZpZXJzKGZhbHNlKSwKKyAgICAgICAgU3VwcHJlc3NUZW1wbGF0ZUFyZ3NJbkNYWENvbnN0cnVjdG9ycyhmYWxzZSksIEJvb2woTE8uQm9vbCksCisgICAgICAgIFJlc3RyaWN0KExPLkM5OSksIEFsaWdub2YoTE8uQ1BsdXNQbHVzMTEpLCBVbmRlcnNjb3JlQWxpZ25vZihMTy5DMTEpLAorICAgICAgICBVc2VWb2lkRm9yWmVyb1BhcmFtcyghTE8uQ1BsdXNQbHVzKSwgVGVyc2VPdXRwdXQoZmFsc2UpLAorICAgICAgICBQb2xpc2hGb3JEZWNsYXJhdGlvbihmYWxzZSksIEhhbGYoTE8uSGFsZiksCisgICAgICAgIE1TV0NoYXIoTE8uTWljcm9zb2Z0RXh0ICYmICFMTy5XQ2hhciksIEluY2x1ZGVOZXdsaW5lcyh0cnVlKSwKKyAgICAgICAgTVNWQ0Zvcm1hdHRpbmcoZmFsc2UpLCBDb25zdGFudHNBc1dyaXR0ZW4oZmFsc2UpLAorICAgICAgICBTdXBwcmVzc0ltcGxpY2l0QmFzZShmYWxzZSksIEZ1bGx5UXVhbGlmaWVkTmFtZShmYWxzZSksCisgICAgICAgIFJlbWFwRmlsZVBhdGhzKGZhbHNlKSwgUHJpbnRDYW5vbmljYWxUeXBlcyhmYWxzZSkge30KIAogICAvLy8gQWRqdXN0IHRoaXMgcHJpbnRpbmcgcG9saWN5IGZvciBjYXNlcyB3aGVyZSBpdCdzIGtub3duIHRoYXQgd2UncmUKICAgLy8vIHByaW50aW5nIEMrKyBjb2RlIChmb3IgaW5zdGFuY2UsIGlmIEFTVCBkdW1waW5nIHJlYWNoZXMgYSBDKystb25seQpAQCAtMjI1LDYgKzIyMywxNSBAQAogICAvLy8gV2hlbiB0cnVlLCBwcmludCB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgogICAvLy8gVGhpcyBpcyB0aGUgb3Bwb3NpdGUgb2YgU3VwcHJlc3NTY29wZSBhbmQgdGh1cyBvdmVycnVsZXMgaXQuCiAgIHVuc2lnbmVkIEZ1bGx5UXVhbGlmaWVkTmFtZSA6IDE7CisKKyAgLy8vIFdoZXRoZXIgdG8gYXBwbHkgLWZkZWJ1Zy1wcmVmaXgtbWFwIHRvIGFueSBmaWxlIHBhdGhzLgorICB1bnNpZ25lZCBSZW1hcEZpbGVQYXRocyA6IDE7CisKKyAgLy8vIFdoZXRoZXIgdG8gcHJpbnQgdHlwZXMgYXMgd3JpdHRlbiBvciBjYW5vbmljYWxseS4KKyAgdW5zaWduZWQgUHJpbnRDYW5vbmljYWxUeXBlcyA6IDE7CisKKyAgLy8vIFdoZW4gUmVtYXBGaWxlUGF0aHMgaXMgdHJ1ZSwgdGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgYWN0aW9uLgorICBzdGQ6OmZ1bmN0aW9uPHN0ZDo6c3RyaW5nKFN0cmluZ1JlZik+IHJlbWFwUGF0aDsKIH07CiAKIH0gLy8gZW5kIG5hbWVzcGFjZSBjbGFuZwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1F1YWxUeXBlTmFtZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9RdWFsVHlwZU5hbWVzLmgKaW5kZXggNDIyZWQ5ZS4uODMxM2UwNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1F1YWxUeXBlTmFtZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvUXVhbFR5cGVOYW1lcy5oCkBAIC0xLDcgKzEsOCBAQAogLy89PT0tLS0gUXVhbFR5cGVOYW1lcy5oIC0gR2VuZXJhdGUgQ29tcGxldGUgUXVhbFR5cGUgTmFtZXMgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vID09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9SYXdDb21tZW50TGlzdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1Jhd0NvbW1lbnRMaXN0LmgKaW5kZXggZDE3YzlkZi4uNWRjODY5NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1Jhd0NvbW1lbnRMaXN0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1Jhd0NvbW1lbnRMaXN0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBSYXdDb21tZW50TGlzdC5oIC0gQ2xhc3NlcyBmb3IgcHJvY2Vzc2luZyByYXcgY29tbWVudHMgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvUmVjb3JkTGF5b3V0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvUmVjb3JkTGF5b3V0LmgKaW5kZXggYTU0NmMyMC4uYjI1OTc5MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1JlY29yZExheW91dC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9SZWNvcmRMYXlvdXQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBSZWNvcmRMYXlvdXQuaCAtIExheW91dCBpbmZvcm1hdGlvbiBmb3IgYSBzdHJ1Y3QvdW5pb24gLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1JlY3Vyc2l2ZUFTVFZpc2l0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9SZWN1cnNpdmVBU1RWaXNpdG9yLmgKaW5kZXggNTkzM2M4OC4uMjI0ZTViMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1JlY3Vyc2l2ZUFTVFZpc2l0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvUmVjdXJzaXZlQVNUVmlzaXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gUmVjdXJzaXZlQVNUVmlzaXRvci5oIC0gUmVjdXJzaXZlIEFTVCBWaXNpdG9yIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNzYsNiArMTc1LDE2IEBACiAgIC8vLyBSZXR1cm4gd2hldGhlciB0aGlzIHZpc2l0b3Igc2hvdWxkIHRyYXZlcnNlIHBvc3Qtb3JkZXIuCiAgIGJvb2wgc2hvdWxkVHJhdmVyc2VQb3N0T3JkZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCisgIC8vLyBSZWN1cnNpdmVseSB2aXNpdHMgYW4gZW50aXJlIEFTVCwgc3RhcnRpbmcgZnJvbSB0aGUgdG9wLWxldmVsIERlY2xzCisgIC8vLyBpbiB0aGUgQVNUIHRyYXZlcnNhbCBzY29wZSAoYnkgZGVmYXVsdCwgdGhlIFRyYW5zbGF0aW9uVW5pdERlY2wpLgorICAvLy8gXHJldHVybnMgZmFsc2UgaWYgdmlzaXRhdGlvbiB3YXMgdGVybWluYXRlZCBlYXJseS4KKyAgYm9vbCBUcmF2ZXJzZUFTVChBU1RDb250ZXh0ICZBU1QpIHsKKyAgICBmb3IgKERlY2wgKkQgOiBBU1QuZ2V0VHJhdmVyc2FsU2NvcGUoKSkKKyAgICAgIGlmICghZ2V0RGVyaXZlZCgpLlRyYXZlcnNlRGVjbChEKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworICB9CisKICAgLy8vIFJlY3Vyc2l2ZWx5IHZpc2l0IGEgc3RhdGVtZW50IG9yIGV4cHJlc3Npb24sIGJ5CiAgIC8vLyBkaXNwYXRjaGluZyB0byBUcmF2ZXJzZSooKSBiYXNlZCBvbiB0aGUgYXJndW1lbnQncyBkeW5hbWljIHR5cGUuCiAgIC8vLwpAQCAtMjg4LDE0ICsyOTcsNiBAQAogICBib29sIFRyYXZlcnNlTGFtYmRhQ2FwdHVyZShMYW1iZGFFeHByICpMRSwgY29uc3QgTGFtYmRhQ2FwdHVyZSAqQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwciAqSW5pdCk7CiAKLSAgLy8vIFJlY3Vyc2l2ZWx5IHZpc2l0IHRoZSBib2R5IG9mIGEgbGFtYmRhIGV4cHJlc3Npb24uCi0gIC8vLwotICAvLy8gVGhpcyBwcm92aWRlcyBhIGhvb2sgZm9yIHZpc2l0b3JzIHRoYXQgbmVlZCBtb3JlIGNvbnRleHQgd2hlbiB2aXNpdGluZwotICAvLy8gXGMgTEUtPmdldEJvZHkoKS4KLSAgLy8vCi0gIC8vLyBccmV0dXJucyBmYWxzZSBpZiB0aGUgdmlzaXRhdGlvbiB3YXMgdGVybWluYXRlZCBlYXJseSwgdHJ1ZSBvdGhlcndpc2UuCi0gIGJvb2wgVHJhdmVyc2VMYW1iZGFCb2R5KExhbWJkYUV4cHIgKkxFLCBEYXRhUmVjdXJzaW9uUXVldWUgKlF1ZXVlID0gbnVsbHB0cik7Ci0KICAgLy8vIFJlY3Vyc2l2ZWx5IHZpc2l0IHRoZSBzeW50YWN0aWMgb3Igc2VtYW50aWMgZm9ybSBvZiBhbgogICAvLy8gaW5pdGlhbGl6YXRpb24gbGlzdC4KICAgLy8vCkBAIC01MjgsNiArNTI5LDcgQEAKICAgYm9vbCBUcmF2ZXJzZU9NUExvb3BEaXJlY3RpdmUoT01QTG9vcERpcmVjdGl2ZSAqUyk7CiAgIGJvb2wgVHJhdmVyc2VPTVBDbGF1c2UoT01QQ2xhdXNlICpDKTsKICNkZWZpbmUgT1BFTk1QX0NMQVVTRShOYW1lLCBDbGFzcykgYm9vbCBWaXNpdCMjQ2xhc3MoQ2xhc3MgKkMpOworICBPUEVOTVBfQ0xBVVNFKGZsdXNoLCBPTVBGbHVzaENsYXVzZSkKICNpbmNsdWRlICJjbGFuZy9CYXNpYy9PcGVuTVBLaW5kcy5kZWYiCiAgIC8vLyBQcm9jZXNzIGNsYXVzZXMgd2l0aCBsaXN0IG9mIHZhcmlhYmxlcy4KICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGJvb2wgVmlzaXRPTVBDbGF1c2VMaXN0KFQgKk5vZGUpOwpAQCAtOTI2LDEzICs5MjgsNiBAQAogICByZXR1cm4gdHJ1ZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQ+Ci1ib29sIFJlY3Vyc2l2ZUFTVFZpc2l0b3I8RGVyaXZlZD46OlRyYXZlcnNlTGFtYmRhQm9keSgKLSAgICBMYW1iZGFFeHByICpMRSwgRGF0YVJlY3Vyc2lvblF1ZXVlICpRdWV1ZSkgewotICBUUllfVE9fVFJBVkVSU0VfT1JfRU5RVUVVRV9TVE1UKExFLT5nZXRCb2R5KCkpOwotICByZXR1cm4gdHJ1ZTsKLX0KLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0gVHlwZSB0cmF2ZXJzYWwgLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gVGhpcyBtYWNybyBtYWtlcyBhdmFpbGFibGUgYSB2YXJpYWJsZSBULCB0aGUgcGFzc2VkLWluIHR5cGUuCkBAIC0xMzczLDkgKzEzNjgsMTQgQEAKIHRlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkPgogYm9vbCBSZWN1cnNpdmVBU1RWaXNpdG9yPERlcml2ZWQ+OjpjYW5JZ25vcmVDaGlsZERlY2xXaGlsZVRyYXZlcnNpbmdEZWNsQ29udGV4dCgKICAgICBjb25zdCBEZWNsICpDaGlsZCkgewotICAvLyBCbG9ja0RlY2xzIGFuZCBDYXB0dXJlZERlY2xzIGFyZSB0cmF2ZXJzZWQgdGhyb3VnaCBCbG9ja0V4cHJzIGFuZAotICAvLyBDYXB0dXJlZFN0bXRzIHJlc3BlY3RpdmVseS4KLSAgcmV0dXJuIGlzYTxCbG9ja0RlY2w+KENoaWxkKSB8fCBpc2E8Q2FwdHVyZWREZWNsPihDaGlsZCk7CisgIC8vIEJsb2NrRGVjbHMgYXJlIHRyYXZlcnNlZCB0aHJvdWdoIEJsb2NrRXhwcnMsCisgIC8vIENhcHR1cmVkRGVjbHMgYXJlIHRyYXZlcnNlZCB0aHJvdWdoIENhcHR1cmVkU3RtdHMuCisgIGlmIChpc2E8QmxvY2tEZWNsPihDaGlsZCkgfHwgaXNhPENhcHR1cmVkRGVjbD4oQ2hpbGQpKQorICAgIHJldHVybiB0cnVlOworICAvLyBMYW1iZGEgY2xhc3NlcyBhcmUgdHJhdmVyc2VkIHRocm91Z2ggTGFtYmRhRXhwcnMuCisgIGlmIChjb25zdCBDWFhSZWNvcmREZWNsKiBDbHMgPSBkeW5fY2FzdDxDWFhSZWNvcmREZWNsPihDaGlsZCkpCisgICAgcmV0dXJuIENscy0+aXNMYW1iZGEoKTsKKyAgcmV0dXJuIGZhbHNlOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZD4KQEAgLTE1OTAsNyArMTU5MCw3IEBACiAgICAgVFJZX1RPKFRyYXZlcnNlU3RtdChJKSk7CiAgIH0KICB9KQotIAorCiBERUZfVFJBVkVSU0VfREVDTChPTVBSZXF1aXJlc0RlY2wsIHsKICAgZm9yIChhdXRvICpDIDogRC0+Y2xhdXNlbGlzdHMoKSkgewogICAgIFRSWV9UTyhUcmF2ZXJzZU9NUENsYXVzZShDKSk7CkBAIC0xNjA1LDYgKzE2MDUsMTMgQEAKICAgcmV0dXJuIHRydWU7CiB9KQogCitERUZfVFJBVkVSU0VfREVDTChPTVBEZWNsYXJlTWFwcGVyRGVjbCwgeworICBmb3IgKGF1dG8gKkMgOiBELT5jbGF1c2VsaXN0cygpKQorICAgIFRSWV9UTyhUcmF2ZXJzZU9NUENsYXVzZShDKSk7CisgIFRSWV9UTyhUcmF2ZXJzZVR5cGUoRC0+Z2V0VHlwZSgpKSk7CisgIHJldHVybiB0cnVlOworfSkKKwogREVGX1RSQVZFUlNFX0RFQ0woT01QQ2FwdHVyZWRFeHByRGVjbCwgeyBUUllfVE8oVHJhdmVyc2VWYXJIZWxwZXIoRCkpOyB9KQogCiAvLyBBIGhlbHBlciBtZXRob2QgZm9yIFRlbXBsYXRlRGVjbCdzIGNoaWxkcmVuLgpAQCAtMjE5OSw2ICsyMjA2LDggQEAKIERFRl9UUkFWRVJTRV9TVE1UKFN3aXRjaFN0bXQsIHt9KQogREVGX1RSQVZFUlNFX1NUTVQoV2hpbGVTdG10LCB7fSkKIAorREVGX1RSQVZFUlNFX1NUTVQoQ29uc3RhbnRFeHByLCB7fSkKKwogREVGX1RSQVZFUlNFX1NUTVQoQ1hYRGVwZW5kZW50U2NvcGVNZW1iZXJFeHByLCB7CiAgIFRSWV9UTyhUcmF2ZXJzZU5lc3RlZE5hbWVTcGVjaWZpZXJMb2MoUy0+Z2V0UXVhbGlmaWVyTG9jKCkpKTsKICAgVFJZX1RPKFRyYXZlcnNlRGVjbGFyYXRpb25OYW1lSW5mbyhTLT5nZXRNZW1iZXJOYW1lSW5mbygpKSk7CkBAIC0yMjk5LDEwICsyMzA4LDEwIEBACiAvLyBnZW5lcmljIGFzc29jaWF0aW9ucykuCiBERUZfVFJBVkVSU0VfU1RNVChHZW5lcmljU2VsZWN0aW9uRXhwciwgewogICBUUllfVE8oVHJhdmVyc2VTdG10KFMtPmdldENvbnRyb2xsaW5nRXhwcigpKSk7Ci0gIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gUy0+Z2V0TnVtQXNzb2NzKCk7ICsraSkgewotICAgIGlmIChUeXBlU291cmNlSW5mbyAqVFMgPSBTLT5nZXRBc3NvY1R5cGVTb3VyY2VJbmZvKGkpKQotICAgICAgVFJZX1RPKFRyYXZlcnNlVHlwZUxvYyhUUy0+Z2V0VHlwZUxvYygpKSk7Ci0gICAgVFJZX1RPX1RSQVZFUlNFX09SX0VOUVVFVUVfU1RNVChTLT5nZXRBc3NvY0V4cHIoaSkpOworICBmb3IgKGNvbnN0IEdlbmVyaWNTZWxlY3Rpb25FeHByOjpBc3NvY2lhdGlvbiAmQXNzb2MgOiBTLT5hc3NvY2lhdGlvbnMoKSkgeworICAgIGlmIChUeXBlU291cmNlSW5mbyAqVFNJID0gQXNzb2MuZ2V0VHlwZVNvdXJjZUluZm8oKSkKKyAgICAgIFRSWV9UTyhUcmF2ZXJzZVR5cGVMb2MoVFNJLT5nZXRUeXBlTG9jKCkpKTsKKyAgICBUUllfVE9fVFJBVkVSU0VfT1JfRU5RVUVVRV9TVE1UKEFzc29jLmdldEFzc29jaWF0aW9uRXhwcigpKTsKICAgfQogICBTaG91bGRWaXNpdENoaWxkcmVuID0gZmFsc2U7CiB9KQpAQCAtMjM5Miw2ICsyNDAxLDcgQEAKIAogLy8gV2FsayBvbmx5IHRoZSB2aXNpYmxlIHBhcnRzIG9mIGxhbWJkYSBleHByZXNzaW9ucy4KIERFRl9UUkFWRVJTRV9TVE1UKExhbWJkYUV4cHIsIHsKKyAgLy8gVmlzaXQgdGhlIGNhcHR1cmUgbGlzdC4KICAgZm9yICh1bnNpZ25lZCBJID0gMCwgTiA9IFMtPmNhcHR1cmVfc2l6ZSgpOyBJICE9IE47ICsrSSkgewogICAgIGNvbnN0IExhbWJkYUNhcHR1cmUgKkMgPSBTLT5jYXB0dXJlX2JlZ2luKCkgKyBJOwogICAgIGlmIChDLT5pc0V4cGxpY2l0KCkgfHwgZ2V0RGVyaXZlZCgpLnNob3VsZFZpc2l0SW1wbGljaXRDb2RlKCkpIHsKQEAgLTIzOTksMzIgKzI0MDksMzEgQEAKICAgICB9CiAgIH0KIAotICBUeXBlTG9jIFRMID0gUy0+Z2V0Q2FsbE9wZXJhdG9yKCktPmdldFR5cGVTb3VyY2VJbmZvKCktPmdldFR5cGVMb2MoKTsKLSAgRnVuY3Rpb25Qcm90b1R5cGVMb2MgUHJvdG8gPSBUTC5nZXRBc0FkanVzdGVkPEZ1bmN0aW9uUHJvdG9UeXBlTG9jPigpOwotCi0gIGlmIChTLT5oYXNFeHBsaWNpdFBhcmFtZXRlcnMoKSAmJiBTLT5oYXNFeHBsaWNpdFJlc3VsdFR5cGUoKSkgewotICAgIC8vIFZpc2l0IHRoZSB3aG9sZSB0eXBlLgotICAgIFRSWV9UTyhUcmF2ZXJzZVR5cGVMb2MoVEwpKTsKKyAgaWYgKGdldERlcml2ZWQoKS5zaG91bGRWaXNpdEltcGxpY2l0Q29kZSgpKSB7CisgICAgLy8gVGhlIGltcGxpY2l0IG1vZGVsIGlzIHNpbXBsZTogZXZlcnl0aGluZyBlbHNlIGlzIGluIHRoZSBsYW1iZGEgY2xhc3MuCisgICAgVFJZX1RPKFRyYXZlcnNlRGVjbChTLT5nZXRMYW1iZGFDbGFzcygpKSk7CiAgIH0gZWxzZSB7CisgICAgLy8gV2UgbmVlZCB0byBwb2tlIGFyb3VuZCB0byBmaW5kIHRoZSBiaXRzIHRoYXQgbWlnaHQgYmUgZXhwbGljaXRseSB3cml0dGVuLgorICAgIFR5cGVMb2MgVEwgPSBTLT5nZXRDYWxsT3BlcmF0b3IoKS0+Z2V0VHlwZVNvdXJjZUluZm8oKS0+Z2V0VHlwZUxvYygpOworICAgIEZ1bmN0aW9uUHJvdG9UeXBlTG9jIFByb3RvID0gVEwuZ2V0QXNBZGp1c3RlZDxGdW5jdGlvblByb3RvVHlwZUxvYz4oKTsKKwogICAgIGlmIChTLT5oYXNFeHBsaWNpdFBhcmFtZXRlcnMoKSkgewogICAgICAgLy8gVmlzaXQgcGFyYW1ldGVycy4KLSAgICAgIGZvciAodW5zaWduZWQgSSA9IDAsIE4gPSBQcm90by5nZXROdW1QYXJhbXMoKTsgSSAhPSBOOyArK0kpIHsKKyAgICAgIGZvciAodW5zaWduZWQgSSA9IDAsIE4gPSBQcm90by5nZXROdW1QYXJhbXMoKTsgSSAhPSBOOyArK0kpCiAgICAgICAgIFRSWV9UTyhUcmF2ZXJzZURlY2woUHJvdG8uZ2V0UGFyYW0oSSkpKTsKLSAgICAgIH0KLSAgICB9IGVsc2UgaWYgKFMtPmhhc0V4cGxpY2l0UmVzdWx0VHlwZSgpKSB7Ci0gICAgICBUUllfVE8oVHJhdmVyc2VUeXBlTG9jKFByb3RvLmdldFJldHVybkxvYygpKSk7CiAgICAgfQorICAgIGlmIChTLT5oYXNFeHBsaWNpdFJlc3VsdFR5cGUoKSkKKyAgICAgIFRSWV9UTyhUcmF2ZXJzZVR5cGVMb2MoUHJvdG8uZ2V0UmV0dXJuTG9jKCkpKTsKIAogICAgIGF1dG8gKlQgPSBQcm90by5nZXRUeXBlUHRyKCk7Ci0gICAgZm9yIChjb25zdCBhdXRvICZFIDogVC0+ZXhjZXB0aW9ucygpKSB7CisgICAgZm9yIChjb25zdCBhdXRvICZFIDogVC0+ZXhjZXB0aW9ucygpKQogICAgICAgVFJZX1RPKFRyYXZlcnNlVHlwZShFKSk7Ci0gICAgfQogCiAgICAgaWYgKEV4cHIgKk5FID0gVC0+Z2V0Tm9leGNlcHRFeHByKCkpCiAgICAgICBUUllfVE9fVFJBVkVSU0VfT1JfRU5RVUVVRV9TVE1UKE5FKTsKLSAgfQogCi0gIFJldHVyblZhbHVlID0gVFJBVkVSU0VfU1RNVF9CQVNFKExhbWJkYUJvZHksIExhbWJkYUV4cHIsIFMsIFF1ZXVlKTsKKyAgICBUUllfVE9fVFJBVkVSU0VfT1JfRU5RVUVVRV9TVE1UKFMtPmdldEJvZHkoKSk7CisgIH0KICAgU2hvdWxkVmlzaXRDaGlsZHJlbiA9IGZhbHNlOwogfSkKIApAQCAtMjc4Nyw2ICsyNzk2LDcgQEAKICAgY2FzZSBPTVBDXyMjTmFtZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgVFJZX1RPKFZpc2l0IyNDbGFzcyhzdGF0aWNfY2FzdDxDbGFzcyAqPihDKSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGJyZWFrOworICBPUEVOTVBfQ0xBVVNFKGZsdXNoLCBPTVBGbHVzaENsYXVzZSkKICNpbmNsdWRlICJjbGFuZy9CYXNpYy9PcGVuTVBLaW5kcy5kZWYiCiAgIGNhc2UgT01QQ190aHJlYWRwcml2YXRlOgogICBjYXNlIE9NUENfdW5pZm9ybToKQEAgLTI4ODAsNiArMjg5MCwxOCBAQAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZD4KK2Jvb2wgUmVjdXJzaXZlQVNUVmlzaXRvcjxEZXJpdmVkPjo6VmlzaXRPTVBEeW5hbWljQWxsb2NhdG9yc0NsYXVzZSgKKyAgICBPTVBEeW5hbWljQWxsb2NhdG9yc0NsYXVzZSAqKSB7CisgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZD4KK2Jvb2wgUmVjdXJzaXZlQVNUVmlzaXRvcjxEZXJpdmVkPjo6VmlzaXRPTVBBdG9taWNEZWZhdWx0TWVtT3JkZXJDbGF1c2UoCisgICAgT01QQXRvbWljRGVmYXVsdE1lbU9yZGVyQ2xhdXNlICopIHsKKyAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkPgogYm9vbAogUmVjdXJzaXZlQVNUVmlzaXRvcjxEZXJpdmVkPjo6VmlzaXRPTVBTY2hlZHVsZUNsYXVzZShPTVBTY2hlZHVsZUNsYXVzZSAqQykgewogICBUUllfVE8oVmlzaXRPTVBDbGF1c2VXaXRoUHJlSW5pdChDKSk7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvUmVkZWNsYXJhYmxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvUmVkZWNsYXJhYmxlLmgKaW5kZXggYzJiZDZlNi4uOWM2OTBhOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1JlZGVjbGFyYWJsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9SZWRlY2xhcmFibGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBSZWRlY2xhcmFibGUuaCAtIEJhc2UgZm9yIERlY2xzIHRoYXQgY2FuIGJlIHJlZGVjbGFyZWQgLS0qLSBDKysgLSotPT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1NlbGVjdG9yTG9jYXRpb25zS2luZC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1NlbGVjdG9yTG9jYXRpb25zS2luZC5oCmluZGV4IDZjYTJkYmEuLjZlOTkyM2QgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9TZWxlY3RvckxvY2F0aW9uc0tpbmQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvU2VsZWN0b3JMb2NhdGlvbnNLaW5kLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBTZWxlY3RvckxvY2F0aW9uc0tpbmQuaCAtIEtpbmQgb2Ygc2VsZWN0b3IgbG9jYXRpb25zIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9TdG10LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvU3RtdC5oCmluZGV4IGI0ZTBmZDUuLmI4OTJkODUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9TdG10LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1N0bXQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTdG10LmggLSBDbGFzc2VzIGZvciByZXByZXNlbnRpbmcgc3RhdGVtZW50cyAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtODksNiArODgsOCBAQAogICAgIGxsdm1fdW5yZWFjaGFibGUoIlN0bXRzIGNhbm5vdCBiZSByZWxlYXNlZCB3aXRoIHJlZ3VsYXIgJ2RlbGV0ZScuIik7CiAgIH0KIAorICAvLz09PS0tLSBTdGF0ZW1lbnQgYml0ZmllbGRzIGNsYXNzZXMgLS0tPT09Ly8KKwogICBjbGFzcyBTdG10Qml0ZmllbGRzIHsKICAgICBmcmllbmQgY2xhc3MgU3RtdDsKIApAQCAtOTcsMjIgKzk4LDE4NiBAQAogICB9OwogICBlbnVtIHsgTnVtU3RtdEJpdHMgPSA4IH07CiAKKyAgY2xhc3MgTnVsbFN0bXRCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOworICAgIGZyaWVuZCBjbGFzcyBBU1RTdG10V3JpdGVyOworICAgIGZyaWVuZCBjbGFzcyBOdWxsU3RtdDsKKworICAgIHVuc2lnbmVkIDogTnVtU3RtdEJpdHM7CisKKyAgICAvLy8gVHJ1ZSBpZiB0aGUgbnVsbCBzdGF0ZW1lbnQgd2FzIHByZWNlZGVkIGJ5IGFuIGVtcHR5IG1hY3JvLCBlLmc6CisgICAgLy8vIEBjb2RlCisgICAgLy8vICAgI2RlZmluZSBDQUxMKHgpCisgICAgLy8vICAgQ0FMTCgwKTsKKyAgICAvLy8gQGVuZGNvZGUKKyAgICB1bnNpZ25lZCBIYXNMZWFkaW5nRW1wdHlNYWNybyA6IDE7CisKKyAgICAvLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSBzZW1pLWNvbG9uLgorICAgIFNvdXJjZUxvY2F0aW9uIFNlbWlMb2M7CisgIH07CisKICAgY2xhc3MgQ29tcG91bmRTdG10Qml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKICAgICBmcmllbmQgY2xhc3MgQ29tcG91bmRTdG10OwogCiAgICAgdW5zaWduZWQgOiBOdW1TdG10Qml0czsKIAogICAgIHVuc2lnbmVkIE51bVN0bXRzIDogMzIgLSBOdW1TdG10Qml0czsKKworICAgIC8vLyBUaGUgbG9jYXRpb24gb2YgdGhlIG9wZW5pbmcgInsiLgorICAgIFNvdXJjZUxvY2F0aW9uIExCcmFjZUxvYzsKKyAgfTsKKworICBjbGFzcyBMYWJlbFN0bXRCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBMYWJlbFN0bXQ7CisKKyAgICB1bnNpZ25lZCA6IE51bVN0bXRCaXRzOworCisgICAgU291cmNlTG9jYXRpb24gSWRlbnRMb2M7CisgIH07CisKKyAgY2xhc3MgQXR0cmlidXRlZFN0bXRCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOworICAgIGZyaWVuZCBjbGFzcyBBdHRyaWJ1dGVkU3RtdDsKKworICAgIHVuc2lnbmVkIDogTnVtU3RtdEJpdHM7CisKKyAgICAvLy8gTnVtYmVyIG9mIGF0dHJpYnV0ZXMuCisgICAgdW5zaWduZWQgTnVtQXR0cnMgOiAzMiAtIE51bVN0bXRCaXRzOworCisgICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgYXR0cmlidXRlLgorICAgIFNvdXJjZUxvY2F0aW9uIEF0dHJMb2M7CiAgIH07CiAKICAgY2xhc3MgSWZTdG10Qml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKICAgICBmcmllbmQgY2xhc3MgSWZTdG10OwogCiAgICAgdW5zaWduZWQgOiBOdW1TdG10Qml0czsKIAorICAgIC8vLyBUcnVlIGlmIHRoaXMgaWYgc3RhdGVtZW50IGlzIGEgY29uc3RleHByIGlmLgogICAgIHVuc2lnbmVkIElzQ29uc3RleHByIDogMTsKKworICAgIC8vLyBUcnVlIGlmIHRoaXMgaWYgc3RhdGVtZW50IGhhcyBzdG9yYWdlIGZvciBhbiBlbHNlIHN0YXRlbWVudC4KKyAgICB1bnNpZ25lZCBIYXNFbHNlIDogMTsKKworICAgIC8vLyBUcnVlIGlmIHRoaXMgaWYgc3RhdGVtZW50IGhhcyBzdG9yYWdlIGZvciBhIHZhcmlhYmxlIGRlY2xhcmF0aW9uLgorICAgIHVuc2lnbmVkIEhhc1ZhciA6IDE7CisKKyAgICAvLy8gVHJ1ZSBpZiB0aGlzIGlmIHN0YXRlbWVudCBoYXMgc3RvcmFnZSBmb3IgYW4gaW5pdCBzdGF0ZW1lbnQuCisgICAgdW5zaWduZWQgSGFzSW5pdCA6IDE7CisKKyAgICAvLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSAiaWYiLgorICAgIFNvdXJjZUxvY2F0aW9uIElmTG9jOwogICB9OwogCisgIGNsYXNzIFN3aXRjaFN0bXRCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBTd2l0Y2hTdG10OworCisgICAgdW5zaWduZWQgOiBOdW1TdG10Qml0czsKKworICAgIC8vLyBUcnVlIGlmIHRoZSBTd2l0Y2hTdG10IGhhcyBzdG9yYWdlIGZvciBhbiBpbml0IHN0YXRlbWVudC4KKyAgICB1bnNpZ25lZCBIYXNJbml0IDogMTsKKworICAgIC8vLyBUcnVlIGlmIHRoZSBTd2l0Y2hTdG10IGhhcyBzdG9yYWdlIGZvciBhIGNvbmRpdGlvbiB2YXJpYWJsZS4KKyAgICB1bnNpZ25lZCBIYXNWYXIgOiAxOworCisgICAgLy8vIElmIHRoZSBTd2l0Y2hTdG10IGlzIGEgc3dpdGNoIG9uIGFuIGVudW0gdmFsdWUsIHJlY29yZHMgd2hldGhlciBhbGwKKyAgICAvLy8gdGhlIGVudW0gdmFsdWVzIHdlcmUgY292ZXJlZCBieSBDYXNlU3RtdHMuICBUaGUgY292ZXJhZ2UgaW5mb3JtYXRpb24KKyAgICAvLy8gdmFsdWUgaXMgbWVhbnQgdG8gYmUgYSBoaW50IGZvciBwb3NzaWJsZSBjbGllbnRzLgorICAgIHVuc2lnbmVkIEFsbEVudW1DYXNlc0NvdmVyZWQgOiAxOworCisgICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgInN3aXRjaCIuCisgICAgU291cmNlTG9jYXRpb24gU3dpdGNoTG9jOworICB9OworCisgIGNsYXNzIFdoaWxlU3RtdEJpdGZpZWxkcyB7CisgICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgICAgZnJpZW5kIGNsYXNzIFdoaWxlU3RtdDsKKworICAgIHVuc2lnbmVkIDogTnVtU3RtdEJpdHM7CisKKyAgICAvLy8gVHJ1ZSBpZiB0aGUgV2hpbGVTdG10IGhhcyBzdG9yYWdlIGZvciBhIGNvbmRpdGlvbiB2YXJpYWJsZS4KKyAgICB1bnNpZ25lZCBIYXNWYXIgOiAxOworCisgICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgIndoaWxlIi4KKyAgICBTb3VyY2VMb2NhdGlvbiBXaGlsZUxvYzsKKyAgfTsKKworICBjbGFzcyBEb1N0bXRCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBEb1N0bXQ7CisKKyAgICB1bnNpZ25lZCA6IE51bVN0bXRCaXRzOworCisgICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgImRvIi4KKyAgICBTb3VyY2VMb2NhdGlvbiBEb0xvYzsKKyAgfTsKKworICBjbGFzcyBGb3JTdG10Qml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgRm9yU3RtdDsKKworICAgIHVuc2lnbmVkIDogTnVtU3RtdEJpdHM7CisKKyAgICAvLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSAiZm9yIi4KKyAgICBTb3VyY2VMb2NhdGlvbiBGb3JMb2M7CisgIH07CisKKyAgY2xhc3MgR290b1N0bXRCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBHb3RvU3RtdDsKKyAgICBmcmllbmQgY2xhc3MgSW5kaXJlY3RHb3RvU3RtdDsKKworICAgIHVuc2lnbmVkIDogTnVtU3RtdEJpdHM7CisKKyAgICAvLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSAiZ290byIuCisgICAgU291cmNlTG9jYXRpb24gR290b0xvYzsKKyAgfTsKKworICBjbGFzcyBDb250aW51ZVN0bXRCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBDb250aW51ZVN0bXQ7CisKKyAgICB1bnNpZ25lZCA6IE51bVN0bXRCaXRzOworCisgICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgImNvbnRpbnVlIi4KKyAgICBTb3VyY2VMb2NhdGlvbiBDb250aW51ZUxvYzsKKyAgfTsKKworICBjbGFzcyBCcmVha1N0bXRCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBCcmVha1N0bXQ7CisKKyAgICB1bnNpZ25lZCA6IE51bVN0bXRCaXRzOworCisgICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgImJyZWFrIi4KKyAgICBTb3VyY2VMb2NhdGlvbiBCcmVha0xvYzsKKyAgfTsKKworICBjbGFzcyBSZXR1cm5TdG10Qml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgUmV0dXJuU3RtdDsKKworICAgIHVuc2lnbmVkIDogTnVtU3RtdEJpdHM7CisKKyAgICAvLy8gVHJ1ZSBpZiB0aGlzIFJldHVyblN0bXQgaGFzIHN0b3JhZ2UgZm9yIGFuIE5SVk8gY2FuZGlkYXRlLgorICAgIHVuc2lnbmVkIEhhc05SVk9DYW5kaWRhdGUgOiAxOworCisgICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgInJldHVybiIuCisgICAgU291cmNlTG9jYXRpb24gUmV0TG9jOworICB9OworCisgIGNsYXNzIFN3aXRjaENhc2VCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBTd2l0Y2hDYXNlOworICAgIGZyaWVuZCBjbGFzcyBDYXNlU3RtdDsKKworICAgIHVuc2lnbmVkIDogTnVtU3RtdEJpdHM7CisKKyAgICAvLy8gVXNlZCBieSBDYXNlU3RtdCB0byBzdG9yZSB3aGV0aGVyIGl0IGlzIGEgY2FzZSBzdGF0ZW1lbnQKKyAgICAvLy8gb2YgdGhlIGZvcm0gY2FzZSBMSFMgLi4uIFJIUyAoYSBHTlUgZXh0ZW5zaW9uKS4KKyAgICB1bnNpZ25lZCBDYXNlU3RtdElzR05VUmFuZ2UgOiAxOworCisgICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgImNhc2UiIG9yICJkZWZhdWx0IiBrZXl3b3JkLgorICAgIFNvdXJjZUxvY2F0aW9uIEtleXdvcmRMb2M7CisgIH07CisKKyAgLy89PT0tLS0gRXhwcmVzc2lvbiBiaXRmaWVsZHMgY2xhc3NlcyAtLS09PT0vLworCiAgIGNsYXNzIEV4cHJCaXRmaWVsZHMgewogICAgIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOyAvLyBkZXNlcmlhbGl6YXRpb24KICAgICBmcmllbmQgY2xhc3MgQXRvbWljRXhwcjsgLy8gY3RvcgpAQCAtMTQ2LDE0ICszMTEsNDAgQEAKICAgICB1bnNpZ25lZCBJbnN0YW50aWF0aW9uRGVwZW5kZW50IDogMTsKICAgICB1bnNpZ25lZCBDb250YWluc1VuZXhwYW5kZWRQYXJhbWV0ZXJQYWNrIDogMTsKICAgfTsKLSAgZW51bSB7IE51bUV4cHJCaXRzID0gMTcgfTsKKyAgZW51bSB7IE51bUV4cHJCaXRzID0gTnVtU3RtdEJpdHMgKyA5IH07CiAKLSAgY2xhc3MgQ2hhcmFjdGVyTGl0ZXJhbEJpdGZpZWxkcyB7Ci0gICAgZnJpZW5kIGNsYXNzIENoYXJhY3RlckxpdGVyYWw7CisgIGNsYXNzIFByZWRlZmluZWRFeHByQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKKyAgICBmcmllbmQgY2xhc3MgUHJlZGVmaW5lZEV4cHI7CiAKICAgICB1bnNpZ25lZCA6IE51bUV4cHJCaXRzOwogCi0gICAgdW5zaWduZWQgS2luZCA6IDM7CisgICAgLy8vIFRoZSBraW5kIG9mIHRoaXMgUHJlZGVmaW5lZEV4cHIuIE9uZSBvZiB0aGUgZW51bWVyYXRpb24gdmFsdWVzCisgICAgLy8vIGluIFByZWRlZmluZWRFeHByOjpJZGVudEtpbmQuCisgICAgdW5zaWduZWQgS2luZCA6IDQ7CisKKyAgICAvLy8gVHJ1ZSBpZiB0aGlzIFByZWRlZmluZWRFeHByIGhhcyBhIHRyYWlsaW5nICJTdHJpbmdMaXRlcmFsICoiCisgICAgLy8vIGZvciB0aGUgcHJlZGVmaW5lZCBpZGVudGlmaWVyLgorICAgIHVuc2lnbmVkIEhhc0Z1bmN0aW9uTmFtZSA6IDE7CisKKyAgICAvLy8gVGhlIGxvY2F0aW9uIG9mIHRoaXMgUHJlZGVmaW5lZEV4cHIuCisgICAgU291cmNlTG9jYXRpb24gTG9jOworICB9OworCisgIGNsYXNzIERlY2xSZWZFeHByQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsgLy8gZGVzZXJpYWxpemF0aW9uCisgICAgZnJpZW5kIGNsYXNzIERlY2xSZWZFeHByOworCisgICAgdW5zaWduZWQgOiBOdW1FeHByQml0czsKKworICAgIHVuc2lnbmVkIEhhc1F1YWxpZmllciA6IDE7CisgICAgdW5zaWduZWQgSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvIDogMTsKKyAgICB1bnNpZ25lZCBIYXNGb3VuZERlY2wgOiAxOworICAgIHVuc2lnbmVkIEhhZE11bHRpcGxlQ2FuZGlkYXRlcyA6IDE7CisgICAgdW5zaWduZWQgUmVmZXJzVG9FbmNsb3NpbmdWYXJpYWJsZU9yQ2FwdHVyZSA6IDE7CisKKyAgICAvLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSBkZWNsYXJhdGlvbiBuYW1lIGl0c2VsZi4KKyAgICBTb3VyY2VMb2NhdGlvbiBMb2M7CiAgIH07CiAKICAgZW51bSBBUEZsb2F0U2VtYW50aWNzIHsKQEAgLTE3NCwyNiArMzY1LDExMSBAQAogICAgIHVuc2lnbmVkIElzRXhhY3QgOiAxOwogICB9OwogCisgIGNsYXNzIFN0cmluZ0xpdGVyYWxCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOworICAgIGZyaWVuZCBjbGFzcyBTdHJpbmdMaXRlcmFsOworCisgICAgdW5zaWduZWQgOiBOdW1FeHByQml0czsKKworICAgIC8vLyBUaGUga2luZCBvZiB0aGlzIHN0cmluZyBsaXRlcmFsLgorICAgIC8vLyBPbmUgb2YgdGhlIGVudW1lcmF0aW9uIHZhbHVlcyBvZiBTdHJpbmdMaXRlcmFsOjpTdHJpbmdLaW5kLgorICAgIHVuc2lnbmVkIEtpbmQgOiAzOworCisgICAgLy8vIFRoZSB3aWR0aCBvZiBhIHNpbmdsZSBjaGFyYWN0ZXIgaW4gYnl0ZXMuIE9ubHkgdmFsdWVzIG9mIDEsIDIsCisgICAgLy8vIGFuZCA0IGJ5dGVzIGFyZSBzdXBwb3J0ZWQuIFN0cmluZ0xpdGVyYWw6Om1hcENoYXJCeXRlV2lkdGggbWFwcworICAgIC8vLyB0aGUgdGFyZ2V0ICsgc3RyaW5nIGtpbmQgdG8gdGhlIGFwcHJvcHJpYXRlIENoYXJCeXRlV2lkdGguCisgICAgdW5zaWduZWQgQ2hhckJ5dGVXaWR0aCA6IDM7CisKKyAgICB1bnNpZ25lZCBJc1Bhc2NhbCA6IDE7CisKKyAgICAvLy8gVGhlIG51bWJlciBvZiBjb25jYXRlbmF0ZWQgdG9rZW4gdGhpcyBzdHJpbmcgaXMgbWFkZSBvZi4KKyAgICAvLy8gVGhpcyBpcyB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIFNvdXJjZUxvY2F0aW9uLgorICAgIHVuc2lnbmVkIE51bUNvbmNhdGVuYXRlZDsKKyAgfTsKKworICBjbGFzcyBDaGFyYWN0ZXJMaXRlcmFsQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQ2hhcmFjdGVyTGl0ZXJhbDsKKworICAgIHVuc2lnbmVkIDogTnVtRXhwckJpdHM7CisKKyAgICB1bnNpZ25lZCBLaW5kIDogMzsKKyAgfTsKKworICBjbGFzcyBVbmFyeU9wZXJhdG9yQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgVW5hcnlPcGVyYXRvcjsKKworICAgIHVuc2lnbmVkIDogTnVtRXhwckJpdHM7CisKKyAgICB1bnNpZ25lZCBPcGMgOiA1OworICAgIHVuc2lnbmVkIENhbk92ZXJmbG93IDogMTsKKworICAgIFNvdXJjZUxvY2F0aW9uIExvYzsKKyAgfTsKKwogICBjbGFzcyBVbmFyeUV4cHJPclR5cGVUcmFpdEV4cHJCaXRmaWVsZHMgewogICAgIGZyaWVuZCBjbGFzcyBVbmFyeUV4cHJPclR5cGVUcmFpdEV4cHI7CiAKICAgICB1bnNpZ25lZCA6IE51bUV4cHJCaXRzOwogCi0gICAgdW5zaWduZWQgS2luZCA6IDI7CisgICAgdW5zaWduZWQgS2luZCA6IDM7CiAgICAgdW5zaWduZWQgSXNUeXBlIDogMTsgLy8gdHJ1ZSBpZiBvcGVyYW5kIGlzIGEgdHlwZSwgZmFsc2UgaWYgYW4gZXhwcmVzc2lvbi4KICAgfTsKIAotICBjbGFzcyBEZWNsUmVmRXhwckJpdGZpZWxkcyB7Ci0gICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7IC8vIGRlc2VyaWFsaXphdGlvbgotICAgIGZyaWVuZCBjbGFzcyBEZWNsUmVmRXhwcjsKKyAgY2xhc3MgQXJyYXlTdWJzY3JpcHRFeHByQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQXJyYXlTdWJzY3JpcHRFeHByOwogCiAgICAgdW5zaWduZWQgOiBOdW1FeHByQml0czsKIAotICAgIHVuc2lnbmVkIEhhc1F1YWxpZmllciA6IDE7CisgICAgU291cmNlTG9jYXRpb24gUkJyYWNrZXRMb2M7CisgIH07CisKKyAgY2xhc3MgQ2FsbEV4cHJCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBDYWxsRXhwcjsKKworICAgIHVuc2lnbmVkIDogTnVtRXhwckJpdHM7CisKKyAgICB1bnNpZ25lZCBOdW1QcmVBcmdzIDogMTsKKworICAgIC8vLyBUcnVlIGlmIHRoZSBjYWxsZWUgb2YgdGhlIGNhbGwgZXhwcmVzc2lvbiB3YXMgZm91bmQgdXNpbmcgQURMLgorICAgIHVuc2lnbmVkIFVzZXNBREwgOiAxOworCisgICAgLy8vIFBhZGRpbmcgdXNlZCB0byBhbGlnbiBPZmZzZXRUb1RyYWlsaW5nT2JqZWN0cyB0byBhIGJ5dGUgbXVsdGlwbGUuCisgICAgdW5zaWduZWQgOiAyNCAtIDIgLSBOdW1FeHByQml0czsKKworICAgIC8vLyBUaGUgb2Zmc2V0IGluIGJ5dGVzIGZyb20gdGhlIHRoaXMgcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlCisgICAgLy8vIHRyYWlsaW5nIG9iamVjdHMgYmVsb25naW5nIHRvIENhbGxFeHByLiBJbnRlbnRpb25hbGx5IGJ5dGUgc2l6ZWQKKyAgICAvLy8gZm9yIGZhc3RlciBhY2Nlc3MuCisgICAgdW5zaWduZWQgT2Zmc2V0VG9UcmFpbGluZ09iamVjdHMgOiA4OworICB9OworICBlbnVtIHsgTnVtQ2FsbEV4cHJCaXRzID0gMzIgfTsKKworICBjbGFzcyBNZW1iZXJFeHByQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgTWVtYmVyRXhwcjsKKworICAgIHVuc2lnbmVkIDogTnVtRXhwckJpdHM7CisKKyAgICAvLy8gSXNBcnJvdyAtIFRydWUgaWYgdGhpcyBpcyAiWC0+RiIsIGZhbHNlIGlmIHRoaXMgaXMgIlguRiIuCisgICAgdW5zaWduZWQgSXNBcnJvdyA6IDE7CisKKyAgICAvLy8gVHJ1ZSBpZiB0aGlzIG1lbWJlciBleHByZXNzaW9uIHVzZWQgYSBuZXN0ZWQtbmFtZS1zcGVjaWZpZXIgdG8KKyAgICAvLy8gcmVmZXIgdG8gdGhlIG1lbWJlciwgZS5nLiwgIngtPkJhc2U6OmYiLCBvciBmb3VuZCBpdHMgbWVtYmVyIHZpYQorICAgIC8vLyBhIHVzaW5nIGRlY2xhcmF0aW9uLiAgV2hlbiB0cnVlLCBhIE1lbWJlckV4cHJOYW1lUXVhbGlmaWVyCisgICAgLy8vIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIE1lbWJlckV4cHIuCisgICAgdW5zaWduZWQgSGFzUXVhbGlmaWVyT3JGb3VuZERlY2wgOiAxOworCisgICAgLy8vIFRydWUgaWYgdGhpcyBtZW1iZXIgZXhwcmVzc2lvbiBzcGVjaWZpZWQgYSB0ZW1wbGF0ZSBrZXl3b3JkCisgICAgLy8vIGFuZC9vciBhIHRlbXBsYXRlIGFyZ3VtZW50IGxpc3QgZXhwbGljaXRseSwgZS5nLiwgeC0+ZjxpbnQ+LAorICAgIC8vLyB4LT50ZW1wbGF0ZSBmLCB4LT50ZW1wbGF0ZSBmPGludD4uCisgICAgLy8vIFdoZW4gdHJ1ZSwgYW4gQVNUVGVtcGxhdGVLV0FuZEFyZ3NJbmZvIHN0cnVjdHVyZSBhbmQgaXRzCisgICAgLy8vIFRlbXBsYXRlQXJndW1lbnRzIChpZiBhbnkpIGFyZSBwcmVzZW50LgogICAgIHVuc2lnbmVkIEhhc1RlbXBsYXRlS1dBbmRBcmdzSW5mbyA6IDE7Ci0gICAgdW5zaWduZWQgSGFzRm91bmREZWNsIDogMTsKKworICAgIC8vLyBUcnVlIGlmIHRoaXMgbWVtYmVyIGV4cHJlc3Npb24gcmVmZXJzIHRvIGEgbWV0aG9kIHRoYXQKKyAgICAvLy8gd2FzIHJlc29sdmVkIGZyb20gYW4gb3ZlcmxvYWRlZCBzZXQgaGF2aW5nIHNpemUgZ3JlYXRlciB0aGFuIDEuCiAgICAgdW5zaWduZWQgSGFkTXVsdGlwbGVDYW5kaWRhdGVzIDogMTsKLSAgICB1bnNpZ25lZCBSZWZlcnNUb0VuY2xvc2luZ1ZhcmlhYmxlT3JDYXB0dXJlIDogMTsKKworICAgIC8vLyBUaGlzIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgLT4gb3IgLiBpbiB0aGUgZXhwcmVzc2lvbi4KKyAgICBTb3VyY2VMb2NhdGlvbiBPcGVyYXRvckxvYzsKICAgfTsKIAogICBjbGFzcyBDYXN0RXhwckJpdGZpZWxkcyB7CkBAIC0yMDQsMjcgKzQ4MCw1NCBAQAogCiAgICAgdW5zaWduZWQgS2luZCA6IDY7CiAgICAgdW5zaWduZWQgUGFydE9mRXhwbGljaXRDYXN0IDogMTsgLy8gT25seSBzZXQgZm9yIEltcGxpY2l0Q2FzdEV4cHIuCi0gICAgdW5zaWduZWQgQmFzZVBhdGhJc0VtcHR5IDogMTsKKworICAgIC8vLyBUaGUgbnVtYmVyIG9mIENYWEJhc2VTcGVjaWZpZXJzIGluIHRoZSBjYXN0LiAxNCBiaXRzIHdvdWxkIGJlIGVub3VnaAorICAgIC8vLyBoZXJlLiAoW2ltcGxpbWl0c10gRGlyZWN0IGFuZCBpbmRpcmVjdCBiYXNlIGNsYXNzZXMgWzE2Mzg0XSkuCisgICAgdW5zaWduZWQgQmFzZVBhdGhTaXplOwogICB9OwogCi0gIGNsYXNzIENhbGxFeHByQml0ZmllbGRzIHsKLSAgICBmcmllbmQgY2xhc3MgQ2FsbEV4cHI7CisgIGNsYXNzIEJpbmFyeU9wZXJhdG9yQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQmluYXJ5T3BlcmF0b3I7CiAKICAgICB1bnNpZ25lZCA6IE51bUV4cHJCaXRzOwogCi0gICAgdW5zaWduZWQgTnVtUHJlQXJncyA6IDE7CisgICAgdW5zaWduZWQgT3BjIDogNjsKKworICAgIC8vLyBUaGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3Igb3BlcmF0aW9ucyBvbiBmbG9hdGluZyBwb2ludAorICAgIC8vLyB0eXBlcyBhbmQgMCBvdGhlcndpc2UuCisgICAgdW5zaWduZWQgRlBGZWF0dXJlcyA6IDM7CisKKyAgICBTb3VyY2VMb2NhdGlvbiBPcExvYzsKICAgfTsKIAotICBjbGFzcyBFeHByV2l0aENsZWFudXBzQml0ZmllbGRzIHsKLSAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsgLy8gZGVzZXJpYWxpemF0aW9uCi0gICAgZnJpZW5kIGNsYXNzIEV4cHJXaXRoQ2xlYW51cHM7CisgIGNsYXNzIEluaXRMaXN0RXhwckJpdGZpZWxkcyB7CisgICAgZnJpZW5kIGNsYXNzIEluaXRMaXN0RXhwcjsKIAogICAgIHVuc2lnbmVkIDogTnVtRXhwckJpdHM7CiAKLSAgICAvLyBXaGVuIGZhbHNlLCBpdCBtdXN0IG5vdCBoYXZlIHNpZGUgZWZmZWN0cy4KLSAgICB1bnNpZ25lZCBDbGVhbnVwc0hhdmVTaWRlRWZmZWN0cyA6IDE7CisgICAgLy8vIFdoZXRoZXIgdGhpcyBpbml0aWFsaXplciBsaXN0IG9yaWdpbmFsbHkgaGFkIGEgR05VIGFycmF5LXJhbmdlCisgICAgLy8vIGRlc2lnbmF0b3IgaW4gaXQuIFRoaXMgaXMgYSB0ZW1wb3JhcnkgbWFya2VyIHVzZWQgYnkgQ29kZUdlbi4KKyAgICB1bnNpZ25lZCBIYWRBcnJheVJhbmdlRGVzaWduYXRvciA6IDE7CisgIH07CiAKLSAgICB1bnNpZ25lZCBOdW1PYmplY3RzIDogMzIgLSAxIC0gTnVtRXhwckJpdHM7CisgIGNsYXNzIFBhcmVuTGlzdEV4cHJCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOworICAgIGZyaWVuZCBjbGFzcyBQYXJlbkxpc3RFeHByOworCisgICAgdW5zaWduZWQgOiBOdW1FeHByQml0czsKKworICAgIC8vLyBUaGUgbnVtYmVyIG9mIGV4cHJlc3Npb25zIGluIHRoZSBwYXJlbiBsaXN0LgorICAgIHVuc2lnbmVkIE51bUV4cHJzOworICB9OworCisgIGNsYXNzIEdlbmVyaWNTZWxlY3Rpb25FeHByQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKKyAgICBmcmllbmQgY2xhc3MgR2VuZXJpY1NlbGVjdGlvbkV4cHI7CisKKyAgICB1bnNpZ25lZCA6IE51bUV4cHJCaXRzOworCisgICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgIl9HZW5lcmljIi4KKyAgICBTb3VyY2VMb2NhdGlvbiBHZW5lcmljTG9jOwogICB9OwogCiAgIGNsYXNzIFBzZXVkb09iamVjdEV4cHJCaXRmaWVsZHMgewpAQCAtMjM5LDMyICs1NDIsMTUzIEBACiAgICAgdW5zaWduZWQgUmVzdWx0SW5kZXggOiAzMiAtIDggLSBOdW1FeHByQml0czsKICAgfTsKIAotICBjbGFzcyBPcGFxdWVWYWx1ZUV4cHJCaXRmaWVsZHMgewotICAgIGZyaWVuZCBjbGFzcyBPcGFxdWVWYWx1ZUV4cHI7CisgIC8vPT09LS0tIEMrKyBFeHByZXNzaW9uIGJpdGZpZWxkcyBjbGFzc2VzIC0tLT09PS8vCiAKLSAgICB1bnNpZ25lZCA6IE51bUV4cHJCaXRzOworICBjbGFzcyBDWFhPcGVyYXRvckNhbGxFeHByQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKKyAgICBmcmllbmQgY2xhc3MgQ1hYT3BlcmF0b3JDYWxsRXhwcjsKIAotICAgIC8vLyBUaGUgT1ZFIGlzIGEgdW5pcXVlIHNlbWFudGljIHJlZmVyZW5jZSB0byBpdHMgc291cmNlIGV4cHJlc3NpbyBpZiB0aGlzCi0gICAgLy8vIGJpdCBpcyBzZXQgdG8gdHJ1ZS4KLSAgICB1bnNpZ25lZCBJc1VuaXF1ZSA6IDE7CisgICAgdW5zaWduZWQgOiBOdW1DYWxsRXhwckJpdHM7CisKKyAgICAvLy8gVGhlIGtpbmQgb2YgdGhpcyBvdmVybG9hZGVkIG9wZXJhdG9yLiBPbmUgb2YgdGhlIGVudW1lcmF0b3IKKyAgICAvLy8gdmFsdWUgb2YgT3ZlcmxvYWRlZE9wZXJhdG9yS2luZC4KKyAgICB1bnNpZ25lZCBPcGVyYXRvcktpbmQgOiA2OworCisgICAgLy8gT25seSBtZWFuaW5nZnVsIGZvciBmbG9hdGluZyBwb2ludCB0eXBlcy4KKyAgICB1bnNpZ25lZCBGUEZlYXR1cmVzIDogMzsKICAgfTsKIAotICBjbGFzcyBPYmpDSW5kaXJlY3RDb3B5UmVzdG9yZUV4cHJCaXRmaWVsZHMgewotICAgIGZyaWVuZCBjbGFzcyBPYmpDSW5kaXJlY3RDb3B5UmVzdG9yZUV4cHI7CisgIGNsYXNzIENYWEJvb2xMaXRlcmFsRXhwckJpdGZpZWxkcyB7CisgICAgZnJpZW5kIGNsYXNzIENYWEJvb2xMaXRlcmFsRXhwcjsKIAogICAgIHVuc2lnbmVkIDogTnVtRXhwckJpdHM7CiAKLSAgICB1bnNpZ25lZCBTaG91bGRDb3B5IDogMTsKKyAgICAvLy8gVGhlIHZhbHVlIG9mIHRoZSBib29sZWFuIGxpdGVyYWwuCisgICAgdW5zaWduZWQgVmFsdWUgOiAxOworCisgICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgYm9vbGVhbiBsaXRlcmFsLgorICAgIFNvdXJjZUxvY2F0aW9uIExvYzsKICAgfTsKIAotICBjbGFzcyBJbml0TGlzdEV4cHJCaXRmaWVsZHMgewotICAgIGZyaWVuZCBjbGFzcyBJbml0TGlzdEV4cHI7CisgIGNsYXNzIENYWE51bGxQdHJMaXRlcmFsRXhwckJpdGZpZWxkcyB7CisgICAgZnJpZW5kIGNsYXNzIENYWE51bGxQdHJMaXRlcmFsRXhwcjsKIAogICAgIHVuc2lnbmVkIDogTnVtRXhwckJpdHM7CiAKLSAgICAvLy8gV2hldGhlciB0aGlzIGluaXRpYWxpemVyIGxpc3Qgb3JpZ2luYWxseSBoYWQgYSBHTlUgYXJyYXktcmFuZ2UKLSAgICAvLy8gZGVzaWduYXRvciBpbiBpdC4gVGhpcyBpcyBhIHRlbXBvcmFyeSBtYXJrZXIgdXNlZCBieSBDb2RlR2VuLgotICAgIHVuc2lnbmVkIEhhZEFycmF5UmFuZ2VEZXNpZ25hdG9yIDogMTsKKyAgICAvLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSBudWxsIHBvaW50ZXIgbGl0ZXJhbC4KKyAgICBTb3VyY2VMb2NhdGlvbiBMb2M7CisgIH07CisKKyAgY2xhc3MgQ1hYVGhpc0V4cHJCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBDWFhUaGlzRXhwcjsKKworICAgIHVuc2lnbmVkIDogTnVtRXhwckJpdHM7CisKKyAgICAvLy8gV2hldGhlciB0aGlzIGlzIGFuIGltcGxpY2l0ICJ0aGlzIi4KKyAgICB1bnNpZ25lZCBJc0ltcGxpY2l0IDogMTsKKworICAgIC8vLyBUaGUgbG9jYXRpb24gb2YgdGhlICJ0aGlzIi4KKyAgICBTb3VyY2VMb2NhdGlvbiBMb2M7CisgIH07CisKKyAgY2xhc3MgQ1hYVGhyb3dFeHByQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKKyAgICBmcmllbmQgY2xhc3MgQ1hYVGhyb3dFeHByOworCisgICAgdW5zaWduZWQgOiBOdW1FeHByQml0czsKKworICAgIC8vLyBXaGV0aGVyIHRoZSB0aHJvd24gdmFyaWFibGUgKGlmIGFueSkgaXMgaW4gc2NvcGUuCisgICAgdW5zaWduZWQgSXNUaHJvd25WYXJpYWJsZUluU2NvcGUgOiAxOworCisgICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgInRocm93Ii4KKyAgICBTb3VyY2VMb2NhdGlvbiBUaHJvd0xvYzsKKyAgfTsKKworICBjbGFzcyBDWFhEZWZhdWx0QXJnRXhwckJpdGZpZWxkcyB7CisgICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgICAgZnJpZW5kIGNsYXNzIENYWERlZmF1bHRBcmdFeHByOworCisgICAgdW5zaWduZWQgOiBOdW1FeHByQml0czsKKworICAgIC8vLyBUaGUgbG9jYXRpb24gd2hlcmUgdGhlIGRlZmF1bHQgYXJndW1lbnQgZXhwcmVzc2lvbiB3YXMgdXNlZC4KKyAgICBTb3VyY2VMb2NhdGlvbiBMb2M7CisgIH07CisKKyAgY2xhc3MgQ1hYRGVmYXVsdEluaXRFeHByQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKKyAgICBmcmllbmQgY2xhc3MgQ1hYRGVmYXVsdEluaXRFeHByOworCisgICAgdW5zaWduZWQgOiBOdW1FeHByQml0czsKKworICAgIC8vLyBUaGUgbG9jYXRpb24gd2hlcmUgdGhlIGRlZmF1bHQgaW5pdGlhbGl6ZXIgZXhwcmVzc2lvbiB3YXMgdXNlZC4KKyAgICBTb3VyY2VMb2NhdGlvbiBMb2M7CisgIH07CisKKyAgY2xhc3MgQ1hYU2NhbGFyVmFsdWVJbml0RXhwckJpdGZpZWxkcyB7CisgICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgICAgZnJpZW5kIGNsYXNzIENYWFNjYWxhclZhbHVlSW5pdEV4cHI7CisKKyAgICB1bnNpZ25lZCA6IE51bUV4cHJCaXRzOworCisgICAgU291cmNlTG9jYXRpb24gUlBhcmVuTG9jOworICB9OworCisgIGNsYXNzIENYWE5ld0V4cHJCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOworICAgIGZyaWVuZCBjbGFzcyBBU1RTdG10V3JpdGVyOworICAgIGZyaWVuZCBjbGFzcyBDWFhOZXdFeHByOworCisgICAgdW5zaWduZWQgOiBOdW1FeHByQml0czsKKworICAgIC8vLyBXYXMgdGhlIHVzYWdlIDo6bmV3LCBpLmUuIGlzIHRoZSBnbG9iYWwgbmV3IHRvIGJlIHVzZWQ/CisgICAgdW5zaWduZWQgSXNHbG9iYWxOZXcgOiAxOworCisgICAgLy8vIERvIHdlIGFsbG9jYXRlIGFuIGFycmF5PyBJZiBzbywgdGhlIGZpcnN0IHRyYWlsaW5nICJTdG10ICoiIGlzIHRoZQorICAgIC8vLyBzaXplIGV4cHJlc3Npb24uCisgICAgdW5zaWduZWQgSXNBcnJheSA6IDE7CisKKyAgICAvLy8gU2hvdWxkIHRoZSBhbGlnbm1lbnQgYmUgcGFzc2VkIHRvIHRoZSBhbGxvY2F0aW9uIGZ1bmN0aW9uPworICAgIHVuc2lnbmVkIFNob3VsZFBhc3NBbGlnbm1lbnQgOiAxOworCisgICAgLy8vIElmIHRoaXMgaXMgYW4gYXJyYXkgYWxsb2NhdGlvbiwgZG9lcyB0aGUgdXN1YWwgZGVhbGxvY2F0aW9uCisgICAgLy8vIGZ1bmN0aW9uIGZvciB0aGUgYWxsb2NhdGVkIHR5cGUgd2FudCB0byBrbm93IHRoZSBhbGxvY2F0ZWQgc2l6ZT8KKyAgICB1bnNpZ25lZCBVc3VhbEFycmF5RGVsZXRlV2FudHNTaXplIDogMTsKKworICAgIC8vLyBXaGF0IGtpbmQgb2YgaW5pdGlhbGl6ZXIgZG8gd2UgaGF2ZT8gQ291bGQgYmUgbm9uZSwgcGFyZW5zLCBvciBicmFjZXMuCisgICAgLy8vIEluIHN0b3JhZ2UsIHdlIGRpc3Rpbmd1aXNoIGJldHdlZW4gIm5vbmUsIGFuZCBubyBpbml0aWFsaXplciBleHByIiwgYW5kCisgICAgLy8vICJub25lLCBidXQgYW4gaW1wbGljaXQgaW5pdGlhbGl6ZXIgZXhwciIuCisgICAgdW5zaWduZWQgU3RvcmVkSW5pdGlhbGl6YXRpb25TdHlsZSA6IDI7CisKKyAgICAvLy8gVHJ1ZSBpZiB0aGUgYWxsb2NhdGVkIHR5cGUgd2FzIGV4cHJlc3NlZCBhcyBhIHBhcmVudGhlc2l6ZWQgdHlwZS1pZC4KKyAgICB1bnNpZ25lZCBJc1BhcmVuVHlwZUlkIDogMTsKKworICAgIC8vLyBUaGUgbnVtYmVyIG9mIHBsYWNlbWVudCBuZXcgYXJndW1lbnRzLgorICAgIHVuc2lnbmVkIE51bVBsYWNlbWVudEFyZ3M7CisgIH07CisKKyAgY2xhc3MgQ1hYRGVsZXRlRXhwckJpdGZpZWxkcyB7CisgICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgICAgZnJpZW5kIGNsYXNzIENYWERlbGV0ZUV4cHI7CisKKyAgICB1bnNpZ25lZCA6IE51bUV4cHJCaXRzOworCisgICAgLy8vIElzIHRoaXMgYSBmb3JjZWQgZ2xvYmFsIGRlbGV0ZSwgaS5lLiAiOjpkZWxldGUiPworICAgIHVuc2lnbmVkIEdsb2JhbERlbGV0ZSA6IDE7CisKKyAgICAvLy8gSXMgdGhpcyB0aGUgYXJyYXkgZm9ybSBvZiBkZWxldGUsIGkuZS4gImRlbGV0ZVtdIj8KKyAgICB1bnNpZ25lZCBBcnJheUZvcm0gOiAxOworCisgICAgLy8vIEFycmF5Rm9ybUFzV3JpdHRlbiBjYW4gYmUgZGlmZmVyZW50IGZyb20gQXJyYXlGb3JtIGlmICdkZWxldGUnIGlzCisgICAgLy8vIGFwcGxpZWQgdG8gcG9pbnRlci10by1hcnJheSB0eXBlIChBcnJheUZvcm1Bc1dyaXR0ZW4gd2lsbCBiZSBmYWxzZQorICAgIC8vLyB3aGlsZSBBcnJheUZvcm0gd2lsbCBiZSB0cnVlKS4KKyAgICB1bnNpZ25lZCBBcnJheUZvcm1Bc1dyaXR0ZW4gOiAxOworCisgICAgLy8vIERvZXMgdGhlIHVzdWFsIGRlYWxsb2NhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIGVsZW1lbnQgdHlwZSByZXF1aXJlCisgICAgLy8vIGEgc2l6ZV90IGFyZ3VtZW50PworICAgIHVuc2lnbmVkIFVzdWFsQXJyYXlEZWxldGVXYW50c1NpemUgOiAxOworCisgICAgLy8vIExvY2F0aW9uIG9mIHRoZSBleHByZXNzaW9uLgorICAgIFNvdXJjZUxvY2F0aW9uIExvYzsKICAgfTsKIAogICBjbGFzcyBUeXBlVHJhaXRFeHByQml0ZmllbGRzIHsKQEAgLTI4NSw2ICs3MDksMTU0IEBACiAgICAgdW5zaWduZWQgTnVtQXJncyA6IDMyIC0gOCAtIDEgLSBOdW1FeHByQml0czsKICAgfTsKIAorICBjbGFzcyBEZXBlbmRlbnRTY29wZURlY2xSZWZFeHByQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKKyAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFdyaXRlcjsKKyAgICBmcmllbmQgY2xhc3MgRGVwZW5kZW50U2NvcGVEZWNsUmVmRXhwcjsKKworICAgIHVuc2lnbmVkIDogTnVtRXhwckJpdHM7CisKKyAgICAvLy8gV2hldGhlciB0aGUgbmFtZSBpbmNsdWRlcyBpbmZvIGZvciBleHBsaWNpdCB0ZW1wbGF0ZQorICAgIC8vLyBrZXl3b3JkIGFuZCBhcmd1bWVudHMuCisgICAgdW5zaWduZWQgSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvIDogMTsKKyAgfTsKKworICBjbGFzcyBDWFhDb25zdHJ1Y3RFeHByQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKKyAgICBmcmllbmQgY2xhc3MgQ1hYQ29uc3RydWN0RXhwcjsKKworICAgIHVuc2lnbmVkIDogTnVtRXhwckJpdHM7CisKKyAgICB1bnNpZ25lZCBFbGlkYWJsZSA6IDE7CisgICAgdW5zaWduZWQgSGFkTXVsdGlwbGVDYW5kaWRhdGVzIDogMTsKKyAgICB1bnNpZ25lZCBMaXN0SW5pdGlhbGl6YXRpb24gOiAxOworICAgIHVuc2lnbmVkIFN0ZEluaXRMaXN0SW5pdGlhbGl6YXRpb24gOiAxOworICAgIHVuc2lnbmVkIFplcm9Jbml0aWFsaXphdGlvbiA6IDE7CisgICAgdW5zaWduZWQgQ29uc3RydWN0aW9uS2luZCA6IDM7CisKKyAgICBTb3VyY2VMb2NhdGlvbiBMb2M7CisgIH07CisKKyAgY2xhc3MgRXhwcldpdGhDbGVhbnVwc0JpdGZpZWxkcyB7CisgICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7IC8vIGRlc2VyaWFsaXphdGlvbgorICAgIGZyaWVuZCBjbGFzcyBFeHByV2l0aENsZWFudXBzOworCisgICAgdW5zaWduZWQgOiBOdW1FeHByQml0czsKKworICAgIC8vIFdoZW4gZmFsc2UsIGl0IG11c3Qgbm90IGhhdmUgc2lkZSBlZmZlY3RzLgorICAgIHVuc2lnbmVkIENsZWFudXBzSGF2ZVNpZGVFZmZlY3RzIDogMTsKKworICAgIHVuc2lnbmVkIE51bU9iamVjdHMgOiAzMiAtIDEgLSBOdW1FeHByQml0czsKKyAgfTsKKworICBjbGFzcyBDWFhVbnJlc29sdmVkQ29uc3RydWN0RXhwckJpdGZpZWxkcyB7CisgICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgICAgZnJpZW5kIGNsYXNzIENYWFVucmVzb2x2ZWRDb25zdHJ1Y3RFeHByOworCisgICAgdW5zaWduZWQgOiBOdW1FeHByQml0czsKKworICAgIC8vLyBUaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgdHlwZS4KKyAgICB1bnNpZ25lZCBOdW1BcmdzOworICB9OworCisgIGNsYXNzIENYWERlcGVuZGVudFNjb3BlTWVtYmVyRXhwckJpdGZpZWxkcyB7CisgICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgICAgZnJpZW5kIGNsYXNzIENYWERlcGVuZGVudFNjb3BlTWVtYmVyRXhwcjsKKworICAgIHVuc2lnbmVkIDogTnVtRXhwckJpdHM7CisKKyAgICAvLy8gV2hldGhlciB0aGlzIG1lbWJlciBleHByZXNzaW9uIHVzZWQgdGhlICctPicgb3BlcmF0b3Igb3IKKyAgICAvLy8gdGhlICcuJyBvcGVyYXRvci4KKyAgICB1bnNpZ25lZCBJc0Fycm93IDogMTsKKworICAgIC8vLyBXaGV0aGVyIHRoaXMgbWVtYmVyIGV4cHJlc3Npb24gaGFzIGluZm8gZm9yIGV4cGxpY2l0IHRlbXBsYXRlCisgICAgLy8vIGtleXdvcmQgYW5kIGFyZ3VtZW50cy4KKyAgICB1bnNpZ25lZCBIYXNUZW1wbGF0ZUtXQW5kQXJnc0luZm8gOiAxOworCisgICAgLy8vIFNlZSBnZXRGaXJzdFF1YWxpZmllckZvdW5kSW5TY29wZSgpIGFuZCB0aGUgY29tbWVudCBsaXN0aW5nCisgICAgLy8vIHRoZSB0cmFpbGluZyBvYmplY3RzLgorICAgIHVuc2lnbmVkIEhhc0ZpcnN0UXVhbGlmaWVyRm91bmRJblNjb3BlIDogMTsKKworICAgIC8vLyBUaGUgbG9jYXRpb24gb2YgdGhlICctPicgb3IgJy4nIG9wZXJhdG9yLgorICAgIFNvdXJjZUxvY2F0aW9uIE9wZXJhdG9yTG9jOworICB9OworCisgIGNsYXNzIE92ZXJsb2FkRXhwckJpdGZpZWxkcyB7CisgICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgICAgZnJpZW5kIGNsYXNzIE92ZXJsb2FkRXhwcjsKKworICAgIHVuc2lnbmVkIDogTnVtRXhwckJpdHM7CisKKyAgICAvLy8gV2hldGhlciB0aGUgbmFtZSBpbmNsdWRlcyBpbmZvIGZvciBleHBsaWNpdCB0ZW1wbGF0ZQorICAgIC8vLyBrZXl3b3JkIGFuZCBhcmd1bWVudHMuCisgICAgdW5zaWduZWQgSGFzVGVtcGxhdGVLV0FuZEFyZ3NJbmZvIDogMTsKKworICAgIC8vLyBQYWRkaW5nIHVzZWQgYnkgdGhlIGRlcml2ZWQgY2xhc3NlcyB0byBzdG9yZSB2YXJpb3VzIGJpdHMuIElmIHlvdQorICAgIC8vLyBuZWVkIHRvIGFkZCBzb21lIGRhdGEgaGVyZSwgc2hyaW5rIHRoaXMgcGFkZGluZyBhbmQgYWRkIHlvdXIgZGF0YQorICAgIC8vLyBhYm92ZS4gTnVtT3ZlcmxvYWRFeHByQml0cyBhbHNvIG5lZWRzIHRvIGJlIHVwZGF0ZWQuCisgICAgdW5zaWduZWQgOiAzMiAtIE51bUV4cHJCaXRzIC0gMTsKKworICAgIC8vLyBUaGUgbnVtYmVyIG9mIHJlc3VsdHMuCisgICAgdW5zaWduZWQgTnVtUmVzdWx0czsKKyAgfTsKKyAgZW51bSB7IE51bU92ZXJsb2FkRXhwckJpdHMgPSBOdW1FeHByQml0cyArIDEgfTsKKworICBjbGFzcyBVbnJlc29sdmVkTG9va3VwRXhwckJpdGZpZWxkcyB7CisgICAgZnJpZW5kIGNsYXNzIEFTVFN0bXRSZWFkZXI7CisgICAgZnJpZW5kIGNsYXNzIFVucmVzb2x2ZWRMb29rdXBFeHByOworCisgICAgdW5zaWduZWQgOiBOdW1PdmVybG9hZEV4cHJCaXRzOworCisgICAgLy8vIFRydWUgaWYgdGhlc2UgbG9va3VwIHJlc3VsdHMgc2hvdWxkIGJlIGV4dGVuZGVkIGJ5CisgICAgLy8vIGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAgaWYgdGhpcyBpcyB0aGUgb3BlcmFuZCBvZiBhIGZ1bmN0aW9uIGNhbGwuCisgICAgdW5zaWduZWQgUmVxdWlyZXNBREwgOiAxOworCisgICAgLy8vIFRydWUgaWYgdGhlc2UgbG9va3VwIHJlc3VsdHMgYXJlIG92ZXJsb2FkZWQuICBUaGlzIGlzIHByZXR0eSB0cml2aWFsbHkKKyAgICAvLy8gcmVkZXJpdmFibGUgaWYgd2UgdXJnZW50bHkgbmVlZCB0byBraWxsIHRoaXMgZmllbGQuCisgICAgdW5zaWduZWQgT3ZlcmxvYWRlZCA6IDE7CisgIH07CisgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFVucmVzb2x2ZWRMb29rdXBFeHByQml0ZmllbGRzKSA8PSA0LAorICAgICAgICAgICAgICAgICJVbnJlc29sdmVkTG9va3VwRXhwckJpdGZpZWxkcyBtdXN0IGJlIDw9IHRoYW4gNCBieXRlcyB0byIKKyAgICAgICAgICAgICAgICAiYXZvaWQgdHJhc2hpbmcgT3ZlcmxvYWRFeHByQml0ZmllbGRzOjpOdW1SZXN1bHRzISIpOworCisgIGNsYXNzIFVucmVzb2x2ZWRNZW1iZXJFeHByQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKKyAgICBmcmllbmQgY2xhc3MgVW5yZXNvbHZlZE1lbWJlckV4cHI7CisKKyAgICB1bnNpZ25lZCA6IE51bU92ZXJsb2FkRXhwckJpdHM7CisKKyAgICAvLy8gV2hldGhlciB0aGlzIG1lbWJlciBleHByZXNzaW9uIHVzZWQgdGhlICctPicgb3BlcmF0b3Igb3IKKyAgICAvLy8gdGhlICcuJyBvcGVyYXRvci4KKyAgICB1bnNpZ25lZCBJc0Fycm93IDogMTsKKworICAgIC8vLyBXaGV0aGVyIHRoZSBsb29rdXAgcmVzdWx0cyBjb250YWluIGFuIHVucmVzb2x2ZWQgdXNpbmcgZGVjbGFyYXRpb24uCisgICAgdW5zaWduZWQgSGFzVW5yZXNvbHZlZFVzaW5nIDogMTsKKyAgfTsKKyAgc3RhdGljX2Fzc2VydChzaXplb2YoVW5yZXNvbHZlZE1lbWJlckV4cHJCaXRmaWVsZHMpIDw9IDQsCisgICAgICAgICAgICAgICAgIlVucmVzb2x2ZWRNZW1iZXJFeHByQml0ZmllbGRzIG11c3QgYmUgPD0gdGhhbiA0IGJ5dGVzIHRvIgorICAgICAgICAgICAgICAgICJhdm9pZCB0cmFzaGluZyBPdmVybG9hZEV4cHJCaXRmaWVsZHM6Ok51bVJlc3VsdHMhIik7CisKKyAgY2xhc3MgQ1hYTm9leGNlcHRFeHByQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKKyAgICBmcmllbmQgY2xhc3MgQ1hYTm9leGNlcHRFeHByOworCisgICAgdW5zaWduZWQgOiBOdW1FeHByQml0czsKKworICAgIHVuc2lnbmVkIFZhbHVlIDogMTsKKyAgfTsKKworICBjbGFzcyBTdWJzdE5vblR5cGVUZW1wbGF0ZVBhcm1FeHByQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgQVNUU3RtdFJlYWRlcjsKKyAgICBmcmllbmQgY2xhc3MgU3Vic3ROb25UeXBlVGVtcGxhdGVQYXJtRXhwcjsKKworICAgIHVuc2lnbmVkIDogTnVtRXhwckJpdHM7CisKKyAgICAvLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSBub24tdHlwZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgcmVmZXJlbmNlLgorICAgIFNvdXJjZUxvY2F0aW9uIE5hbWVMb2M7CisgIH07CisKKyAgLy89PT0tLS0gQysrIENvcm91dGluZXMgVFMgYml0ZmllbGRzIGNsYXNzZXMgLS0tPT09Ly8KKwogICBjbGFzcyBDb2F3YWl0RXhwckJpdGZpZWxkcyB7CiAgICAgZnJpZW5kIGNsYXNzIENvYXdhaXRFeHByOwogCkBAIC0yOTMsMjQgKzg2NSwxMDAgQEAKICAgICB1bnNpZ25lZCBJc0ltcGxpY2l0IDogMTsKICAgfTsKIAorICAvLz09PS0tLSBPYmotQyBFeHByZXNzaW9uIGJpdGZpZWxkcyBjbGFzc2VzIC0tLT09PS8vCisKKyAgY2xhc3MgT2JqQ0luZGlyZWN0Q29weVJlc3RvcmVFeHByQml0ZmllbGRzIHsKKyAgICBmcmllbmQgY2xhc3MgT2JqQ0luZGlyZWN0Q29weVJlc3RvcmVFeHByOworCisgICAgdW5zaWduZWQgOiBOdW1FeHByQml0czsKKworICAgIHVuc2lnbmVkIFNob3VsZENvcHkgOiAxOworICB9OworCisgIC8vPT09LS0tIENsYW5nIEV4dGVuc2lvbnMgYml0ZmllbGRzIGNsYXNzZXMgLS0tPT09Ly8KKworICBjbGFzcyBPcGFxdWVWYWx1ZUV4cHJCaXRmaWVsZHMgeworICAgIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOworICAgIGZyaWVuZCBjbGFzcyBPcGFxdWVWYWx1ZUV4cHI7CisKKyAgICB1bnNpZ25lZCA6IE51bUV4cHJCaXRzOworCisgICAgLy8vIFRoZSBPVkUgaXMgYSB1bmlxdWUgc2VtYW50aWMgcmVmZXJlbmNlIHRvIGl0cyBzb3VyY2UgZXhwcmVzc2lvbiBpZiB0aGlzCisgICAgLy8vIGJpdCBpcyBzZXQgdG8gdHJ1ZS4KKyAgICB1bnNpZ25lZCBJc1VuaXF1ZSA6IDE7CisKKyAgICBTb3VyY2VMb2NhdGlvbiBMb2M7CisgIH07CisKICAgdW5pb24geworICAgIC8vIFNhbWUgb3JkZXIgYXMgaW4gU3RtdE5vZGVzLnRkLgorICAgIC8vIFN0YXRlbWVudHMKICAgICBTdG10Qml0ZmllbGRzIFN0bXRCaXRzOworICAgIE51bGxTdG10Qml0ZmllbGRzIE51bGxTdG10Qml0czsKICAgICBDb21wb3VuZFN0bXRCaXRmaWVsZHMgQ29tcG91bmRTdG10Qml0czsKKyAgICBMYWJlbFN0bXRCaXRmaWVsZHMgTGFiZWxTdG10Qml0czsKKyAgICBBdHRyaWJ1dGVkU3RtdEJpdGZpZWxkcyBBdHRyaWJ1dGVkU3RtdEJpdHM7CiAgICAgSWZTdG10Qml0ZmllbGRzIElmU3RtdEJpdHM7CisgICAgU3dpdGNoU3RtdEJpdGZpZWxkcyBTd2l0Y2hTdG10Qml0czsKKyAgICBXaGlsZVN0bXRCaXRmaWVsZHMgV2hpbGVTdG10Qml0czsKKyAgICBEb1N0bXRCaXRmaWVsZHMgRG9TdG10Qml0czsKKyAgICBGb3JTdG10Qml0ZmllbGRzIEZvclN0bXRCaXRzOworICAgIEdvdG9TdG10Qml0ZmllbGRzIEdvdG9TdG10Qml0czsKKyAgICBDb250aW51ZVN0bXRCaXRmaWVsZHMgQ29udGludWVTdG10Qml0czsKKyAgICBCcmVha1N0bXRCaXRmaWVsZHMgQnJlYWtTdG10Qml0czsKKyAgICBSZXR1cm5TdG10Qml0ZmllbGRzIFJldHVyblN0bXRCaXRzOworICAgIFN3aXRjaENhc2VCaXRmaWVsZHMgU3dpdGNoQ2FzZUJpdHM7CisKKyAgICAvLyBFeHByZXNzaW9ucwogICAgIEV4cHJCaXRmaWVsZHMgRXhwckJpdHM7Ci0gICAgQ2hhcmFjdGVyTGl0ZXJhbEJpdGZpZWxkcyBDaGFyYWN0ZXJMaXRlcmFsQml0czsKLSAgICBGbG9hdGluZ0xpdGVyYWxCaXRmaWVsZHMgRmxvYXRpbmdMaXRlcmFsQml0czsKLSAgICBVbmFyeUV4cHJPclR5cGVUcmFpdEV4cHJCaXRmaWVsZHMgVW5hcnlFeHByT3JUeXBlVHJhaXRFeHByQml0czsKKyAgICBQcmVkZWZpbmVkRXhwckJpdGZpZWxkcyBQcmVkZWZpbmVkRXhwckJpdHM7CiAgICAgRGVjbFJlZkV4cHJCaXRmaWVsZHMgRGVjbFJlZkV4cHJCaXRzOwotICAgIENhc3RFeHByQml0ZmllbGRzIENhc3RFeHByQml0czsKKyAgICBGbG9hdGluZ0xpdGVyYWxCaXRmaWVsZHMgRmxvYXRpbmdMaXRlcmFsQml0czsKKyAgICBTdHJpbmdMaXRlcmFsQml0ZmllbGRzIFN0cmluZ0xpdGVyYWxCaXRzOworICAgIENoYXJhY3RlckxpdGVyYWxCaXRmaWVsZHMgQ2hhcmFjdGVyTGl0ZXJhbEJpdHM7CisgICAgVW5hcnlPcGVyYXRvckJpdGZpZWxkcyBVbmFyeU9wZXJhdG9yQml0czsKKyAgICBVbmFyeUV4cHJPclR5cGVUcmFpdEV4cHJCaXRmaWVsZHMgVW5hcnlFeHByT3JUeXBlVHJhaXRFeHByQml0czsKKyAgICBBcnJheVN1YnNjcmlwdEV4cHJCaXRmaWVsZHMgQXJyYXlTdWJzY3JpcHRFeHByQml0czsKICAgICBDYWxsRXhwckJpdGZpZWxkcyBDYWxsRXhwckJpdHM7Ci0gICAgRXhwcldpdGhDbGVhbnVwc0JpdGZpZWxkcyBFeHByV2l0aENsZWFudXBzQml0czsKLSAgICBQc2V1ZG9PYmplY3RFeHByQml0ZmllbGRzIFBzZXVkb09iamVjdEV4cHJCaXRzOwotICAgIE9wYXF1ZVZhbHVlRXhwckJpdGZpZWxkcyBPcGFxdWVWYWx1ZUV4cHJCaXRzOwotICAgIE9iakNJbmRpcmVjdENvcHlSZXN0b3JlRXhwckJpdGZpZWxkcyBPYmpDSW5kaXJlY3RDb3B5UmVzdG9yZUV4cHJCaXRzOworICAgIE1lbWJlckV4cHJCaXRmaWVsZHMgTWVtYmVyRXhwckJpdHM7CisgICAgQ2FzdEV4cHJCaXRmaWVsZHMgQ2FzdEV4cHJCaXRzOworICAgIEJpbmFyeU9wZXJhdG9yQml0ZmllbGRzIEJpbmFyeU9wZXJhdG9yQml0czsKICAgICBJbml0TGlzdEV4cHJCaXRmaWVsZHMgSW5pdExpc3RFeHByQml0czsKKyAgICBQYXJlbkxpc3RFeHByQml0ZmllbGRzIFBhcmVuTGlzdEV4cHJCaXRzOworICAgIEdlbmVyaWNTZWxlY3Rpb25FeHByQml0ZmllbGRzIEdlbmVyaWNTZWxlY3Rpb25FeHByQml0czsKKyAgICBQc2V1ZG9PYmplY3RFeHByQml0ZmllbGRzIFBzZXVkb09iamVjdEV4cHJCaXRzOworCisgICAgLy8gQysrIEV4cHJlc3Npb25zCisgICAgQ1hYT3BlcmF0b3JDYWxsRXhwckJpdGZpZWxkcyBDWFhPcGVyYXRvckNhbGxFeHByQml0czsKKyAgICBDWFhCb29sTGl0ZXJhbEV4cHJCaXRmaWVsZHMgQ1hYQm9vbExpdGVyYWxFeHByQml0czsKKyAgICBDWFhOdWxsUHRyTGl0ZXJhbEV4cHJCaXRmaWVsZHMgQ1hYTnVsbFB0ckxpdGVyYWxFeHByQml0czsKKyAgICBDWFhUaGlzRXhwckJpdGZpZWxkcyBDWFhUaGlzRXhwckJpdHM7CisgICAgQ1hYVGhyb3dFeHByQml0ZmllbGRzIENYWFRocm93RXhwckJpdHM7CisgICAgQ1hYRGVmYXVsdEFyZ0V4cHJCaXRmaWVsZHMgQ1hYRGVmYXVsdEFyZ0V4cHJCaXRzOworICAgIENYWERlZmF1bHRJbml0RXhwckJpdGZpZWxkcyBDWFhEZWZhdWx0SW5pdEV4cHJCaXRzOworICAgIENYWFNjYWxhclZhbHVlSW5pdEV4cHJCaXRmaWVsZHMgQ1hYU2NhbGFyVmFsdWVJbml0RXhwckJpdHM7CisgICAgQ1hYTmV3RXhwckJpdGZpZWxkcyBDWFhOZXdFeHByQml0czsKKyAgICBDWFhEZWxldGVFeHByQml0ZmllbGRzIENYWERlbGV0ZUV4cHJCaXRzOwogICAgIFR5cGVUcmFpdEV4cHJCaXRmaWVsZHMgVHlwZVRyYWl0RXhwckJpdHM7CisgICAgRGVwZW5kZW50U2NvcGVEZWNsUmVmRXhwckJpdGZpZWxkcyBEZXBlbmRlbnRTY29wZURlY2xSZWZFeHByQml0czsKKyAgICBDWFhDb25zdHJ1Y3RFeHByQml0ZmllbGRzIENYWENvbnN0cnVjdEV4cHJCaXRzOworICAgIEV4cHJXaXRoQ2xlYW51cHNCaXRmaWVsZHMgRXhwcldpdGhDbGVhbnVwc0JpdHM7CisgICAgQ1hYVW5yZXNvbHZlZENvbnN0cnVjdEV4cHJCaXRmaWVsZHMgQ1hYVW5yZXNvbHZlZENvbnN0cnVjdEV4cHJCaXRzOworICAgIENYWERlcGVuZGVudFNjb3BlTWVtYmVyRXhwckJpdGZpZWxkcyBDWFhEZXBlbmRlbnRTY29wZU1lbWJlckV4cHJCaXRzOworICAgIE92ZXJsb2FkRXhwckJpdGZpZWxkcyBPdmVybG9hZEV4cHJCaXRzOworICAgIFVucmVzb2x2ZWRMb29rdXBFeHByQml0ZmllbGRzIFVucmVzb2x2ZWRMb29rdXBFeHByQml0czsKKyAgICBVbnJlc29sdmVkTWVtYmVyRXhwckJpdGZpZWxkcyBVbnJlc29sdmVkTWVtYmVyRXhwckJpdHM7CisgICAgQ1hYTm9leGNlcHRFeHByQml0ZmllbGRzIENYWE5vZXhjZXB0RXhwckJpdHM7CisgICAgU3Vic3ROb25UeXBlVGVtcGxhdGVQYXJtRXhwckJpdGZpZWxkcyBTdWJzdE5vblR5cGVUZW1wbGF0ZVBhcm1FeHByQml0czsKKworICAgIC8vIEMrKyBDb3JvdXRpbmVzIFRTIGV4cHJlc3Npb25zCiAgICAgQ29hd2FpdEV4cHJCaXRmaWVsZHMgQ29hd2FpdEJpdHM7CisKKyAgICAvLyBPYmotQyBFeHByZXNzaW9ucworICAgIE9iakNJbmRpcmVjdENvcHlSZXN0b3JlRXhwckJpdGZpZWxkcyBPYmpDSW5kaXJlY3RDb3B5UmVzdG9yZUV4cHJCaXRzOworCisgICAgLy8gQ2xhbmcgRXh0ZW5zaW9ucworICAgIE9wYXF1ZVZhbHVlRXhwckJpdGZpZWxkcyBPcGFxdWVWYWx1ZUV4cHJCaXRzOwogICB9OwogCiBwdWJsaWM6CkBAIC0zMzgsMzcgKzk4NiwzMCBAQAogICBzdHJ1Y3QgRW1wdHlTaGVsbCB7fTsKIAogcHJvdGVjdGVkOgotICAvLy8gSXRlcmF0b3IgZm9yIGl0ZXJhdGluZyBvdmVyIFN0bXQgKiBhcnJheXMgdGhhdCBjb250YWluIG9ubHkgRXhwciAqCisgIC8vLyBJdGVyYXRvciBmb3IgaXRlcmF0aW5nIG92ZXIgU3RtdCAqIGFycmF5cyB0aGF0IGNvbnRhaW4gb25seSBUICouCiAgIC8vLwogICAvLy8gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBBU1Qgbm9kZXMgdXNlIFN0bXQqIGFycmF5cyB0byBzdG9yZQogICAvLy8gcmVmZXJlbmNlcyB0byBjaGlsZHJlbiAodG8gYmUgY29tcGF0aWJsZSB3aXRoIFN0bXRJdGVyYXRvcikuCi0gIHN0cnVjdCBFeHBySXRlcmF0b3IKLSAgICAgIDogbGx2bTo6aXRlcmF0b3JfYWRhcHRvcl9iYXNlPEV4cHJJdGVyYXRvciwgU3RtdCAqKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsIEV4cHIgKj4gewotICAgIEV4cHJJdGVyYXRvcigpIDogaXRlcmF0b3JfYWRhcHRvcl9iYXNlKG51bGxwdHIpIHt9Ci0gICAgRXhwckl0ZXJhdG9yKFN0bXQgKipJKSA6IGl0ZXJhdG9yX2FkYXB0b3JfYmFzZShJKSB7fQorICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBUUHRyID0gVCAqLCB0eXBlbmFtZSBTdG10UHRyID0gU3RtdCAqPgorICBzdHJ1Y3QgQ2FzdEl0ZXJhdG9yCisgICAgICA6IGxsdm06Oml0ZXJhdG9yX2FkYXB0b3JfYmFzZTxDYXN0SXRlcmF0b3I8VCwgVFB0ciwgU3RtdFB0cj4sIFN0bXRQdHIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsIFRQdHI+IHsKKyAgICB1c2luZyBCYXNlID0gdHlwZW5hbWUgQ2FzdEl0ZXJhdG9yOjppdGVyYXRvcl9hZGFwdG9yX2Jhc2U7CiAKLSAgICByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3QgewotICAgICAgYXNzZXJ0KCgqSSktPmdldFN0bXRDbGFzcygpID49IGZpcnN0RXhwckNvbnN0YW50ICYmCi0gICAgICAgICAgICAgKCpJKS0+Z2V0U3RtdENsYXNzKCkgPD0gbGFzdEV4cHJDb25zdGFudCk7Ci0gICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8RXhwciAqKj4oSSk7CisgICAgQ2FzdEl0ZXJhdG9yKCkgOiBCYXNlKG51bGxwdHIpIHt9CisgICAgQ2FzdEl0ZXJhdG9yKFN0bXRQdHIgKkkpIDogQmFzZShJKSB7fQorCisgICAgdHlwZW5hbWUgQmFzZTo6dmFsdWVfdHlwZSBvcGVyYXRvciooKSBjb25zdCB7CisgICAgICByZXR1cm4gY2FzdDxUPigqdGhpcy0+SSk7CiAgICAgfQogICB9OwogCi0gIC8vLyBDb25zdCBpdGVyYXRvciBmb3IgaXRlcmF0aW5nIG92ZXIgU3RtdCAqIGFycmF5cyB0aGF0IGNvbnRhaW4gb25seSBFeHByICoKLSAgc3RydWN0IENvbnN0RXhwckl0ZXJhdG9yCi0gICAgICA6IGxsdm06Oml0ZXJhdG9yX2FkYXB0b3JfYmFzZTxDb25zdEV4cHJJdGVyYXRvciwgY29uc3QgU3RtdCAqY29uc3QgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHByICpjb25zdD4gewotICAgIENvbnN0RXhwckl0ZXJhdG9yKCkgOiBpdGVyYXRvcl9hZGFwdG9yX2Jhc2UobnVsbHB0cikge30KLSAgICBDb25zdEV4cHJJdGVyYXRvcihjb25zdCBTdG10ICpjb25zdCAqSSkgOiBpdGVyYXRvcl9hZGFwdG9yX2Jhc2UoSSkge30KKyAgLy8vIENvbnN0IGl0ZXJhdG9yIGZvciBpdGVyYXRpbmcgb3ZlciBTdG10ICogYXJyYXlzIHRoYXQgY29udGFpbiBvbmx5IFQgKi4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHVzaW5nIENvbnN0Q2FzdEl0ZXJhdG9yID0gQ2FzdEl0ZXJhdG9yPFQsIGNvbnN0IFQgKmNvbnN0LCBjb25zdCBTdG10ICpjb25zdD47CiAKLSAgICByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3QgewotICAgICAgYXNzZXJ0KCgqSSktPmdldFN0bXRDbGFzcygpID49IGZpcnN0RXhwckNvbnN0YW50ICYmCi0gICAgICAgICAgICAgKCpJKS0+Z2V0U3RtdENsYXNzKCkgPD0gbGFzdEV4cHJDb25zdGFudCk7Ci0gICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRXhwciAqY29uc3QgKj4oSSk7Ci0gICAgfQotICB9OworICB1c2luZyBFeHBySXRlcmF0b3IgPSBDYXN0SXRlcmF0b3I8RXhwcj47CisgIHVzaW5nIENvbnN0RXhwckl0ZXJhdG9yID0gQ29uc3RDYXN0SXRlcmF0b3I8RXhwcj47CiAKIHByaXZhdGU6CiAgIC8vLyBXaGV0aGVyIHN0YXRpc3RpYyBjb2xsZWN0aW9uIGlzIGVuYWJsZWQuCkBAIC0zODAsNyArMTAyMSw3IEBACiAKIHB1YmxpYzoKICAgU3RtdChTdG10Q2xhc3MgU0MpIHsKLSAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZigqdGhpcykgPT0gc2l6ZW9mKHZvaWQgKiksCisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoKnRoaXMpIDw9IDgsCiAgICAgICAgICAgICAgICAgICAiY2hhbmdpbmcgYml0ZmllbGRzIGNoYW5nZWQgc2l6ZW9mKFN0bXQpIik7CiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoKnRoaXMpICUgYWxpZ25vZih2b2lkICopID09IDAsCiAgICAgICAgICAgICAgICAgICAiSW5zdWZmaWNpZW50IGFsaWdubWVudCEiKTsKQEAgLTQzMSwxMyArMTA3Miw2IEBACiAgIC8vLyAgIHdvcmtzIG9uIHN5c3RlbXMgd2l0aCBHcmFwaFZpeiAoTWFjIE9TIFgpIG9yIGRvdCtndiBpbnN0YWxsZWQuCiAgIHZvaWQgdmlld0FTVCgpIGNvbnN0OwogCi0gIC8vLyBTa2lwIHBhc3QgYW55IGltcGxpY2l0IEFTVCBub2RlcyB3aGljaCBtaWdodCBzdXJyb3VuZCB0aGlzCi0gIC8vLyBzdGF0ZW1lbnQsIHN1Y2ggYXMgRXhwcldpdGhDbGVhbnVwcyBvciBJbXBsaWNpdENhc3RFeHByIG5vZGVzLgotICBTdG10ICpJZ25vcmVJbXBsaWNpdCgpOwotICBjb25zdCBTdG10ICpJZ25vcmVJbXBsaWNpdCgpIGNvbnN0IHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxTdG10ICo+KHRoaXMpLT5JZ25vcmVJbXBsaWNpdCgpOwotICB9Ci0KICAgLy8vIFNraXAgbm8tb3AgKGF0dHJpYnV0ZWQsIGNvbXBvdW5kKSBjb250YWluZXIgc3RtdHMgYW5kIHNraXAgY2FwdHVyZWQKICAgLy8vIHN0bXQgYXQgdGhlIHRvcCwgaWYgXGEgSWdub3JlQ2FwdHVyZWQgaXMgdHJ1ZS4KICAgU3RtdCAqSWdub3JlQ29udGFpbmVycyhib29sIElnbm9yZUNhcHR1cmVkID0gZmFsc2UpOwpAQCAtNTE1LDkgKzExNDksNyBAQAogCiAgIC8vLyBpc1NpbmdsZURlY2wgLSBUaGlzIG1ldGhvZCByZXR1cm5zIHRydWUgaWYgdGhpcyBEZWNsU3RtdCByZWZlcnMKICAgLy8vIHRvIGEgc2luZ2xlIERlY2wuCi0gIGJvb2wgaXNTaW5nbGVEZWNsKCkgY29uc3QgewotICAgIHJldHVybiBERy5pc1NpbmdsZURlY2woKTsKLSAgfQorICBib29sIGlzU2luZ2xlRGVjbCgpIGNvbnN0IHsgcmV0dXJuIERHLmlzU2luZ2xlRGVjbCgpOyB9CiAKICAgY29uc3QgRGVjbCAqZ2V0U2luZ2xlRGVjbCgpIGNvbnN0IHsgcmV0dXJuIERHLmdldFNpbmdsZURlY2woKTsgfQogICBEZWNsICpnZXRTaW5nbGVEZWNsKCkgeyByZXR1cm4gREcuZ2V0U2luZ2xlRGVjbCgpOyB9CkBAIC01NzIsMzMgKzEyMDQsMjUgQEAKIC8vLyBOdWxsU3RtdCAtIFRoaXMgaXMgdGhlIG51bGwgc3RhdGVtZW50ICI7IjogQzk5IDYuOC4zcDMuCiAvLy8KIGNsYXNzIE51bGxTdG10IDogcHVibGljIFN0bXQgewotICBTb3VyY2VMb2NhdGlvbiBTZW1pTG9jOwotCi0gIC8vLyBUcnVlIGlmIHRoZSBudWxsIHN0YXRlbWVudCB3YXMgcHJlY2VkZWQgYnkgYW4gZW1wdHkgbWFjcm8sIGUuZzoKLSAgLy8vIEBjb2RlCi0gIC8vLyAgICNkZWZpbmUgQ0FMTCh4KQotICAvLy8gICBDQUxMKDApOwotICAvLy8gQGVuZGNvZGUKLSAgYm9vbCBIYXNMZWFkaW5nRW1wdHlNYWNybyA9IGZhbHNlOwotCiBwdWJsaWM6Ci0gIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOwotICBmcmllbmQgY2xhc3MgQVNUU3RtdFdyaXRlcjsKLQogICBOdWxsU3RtdChTb3VyY2VMb2NhdGlvbiBMLCBib29sIGhhc0xlYWRpbmdFbXB0eU1hY3JvID0gZmFsc2UpCi0gICAgICA6IFN0bXQoTnVsbFN0bXRDbGFzcyksIFNlbWlMb2MoTCksCi0gICAgICAgIEhhc0xlYWRpbmdFbXB0eU1hY3JvKGhhc0xlYWRpbmdFbXB0eU1hY3JvKSB7fQorICAgICAgOiBTdG10KE51bGxTdG10Q2xhc3MpIHsKKyAgICBOdWxsU3RtdEJpdHMuSGFzTGVhZGluZ0VtcHR5TWFjcm8gPSBoYXNMZWFkaW5nRW1wdHlNYWNybzsKKyAgICBzZXRTZW1pTG9jKEwpOworICB9CiAKICAgLy8vIEJ1aWxkIGFuIGVtcHR5IG51bGwgc3RhdGVtZW50LgogICBleHBsaWNpdCBOdWxsU3RtdChFbXB0eVNoZWxsIEVtcHR5KSA6IFN0bXQoTnVsbFN0bXRDbGFzcywgRW1wdHkpIHt9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0U2VtaUxvYygpIGNvbnN0IHsgcmV0dXJuIFNlbWlMb2M7IH0KLSAgdm9pZCBzZXRTZW1pTG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgU2VtaUxvYyA9IEw7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0U2VtaUxvYygpIGNvbnN0IHsgcmV0dXJuIE51bGxTdG10Qml0cy5TZW1pTG9jOyB9CisgIHZvaWQgc2V0U2VtaUxvYyhTb3VyY2VMb2NhdGlvbiBMKSB7IE51bGxTdG10Qml0cy5TZW1pTG9jID0gTDsgfQogCi0gIGJvb2wgaGFzTGVhZGluZ0VtcHR5TWFjcm8oKSBjb25zdCB7IHJldHVybiBIYXNMZWFkaW5nRW1wdHlNYWNybzsgfQorICBib29sIGhhc0xlYWRpbmdFbXB0eU1hY3JvKCkgY29uc3QgeworICAgIHJldHVybiBOdWxsU3RtdEJpdHMuSGFzTGVhZGluZ0VtcHR5TWFjcm87CisgIH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gU2VtaUxvYzsgfQotICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIFNlbWlMb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCB7IHJldHVybiBnZXRTZW1pTG9jKCk7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgeyByZXR1cm4gZ2V0U2VtaUxvYygpOyB9CiAKICAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBTdG10ICpUKSB7CiAgICAgcmV0dXJuIFQtPmdldFN0bXRDbGFzcygpID09IE51bGxTdG10Q2xhc3M7CkBAIC02MTUsNyArMTIzOSw4IEBACiAgIGZyaWVuZCBjbGFzcyBBU1RTdG10UmVhZGVyOwogICBmcmllbmQgVHJhaWxpbmdPYmplY3RzOwogCi0gIFNvdXJjZUxvY2F0aW9uIExCcmFjZUxvYywgUkJyYWNlTG9jOworICAvLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSBjbG9zaW5nICJ9Ii4gTEJyYWNlTG9jIGlzIHN0b3JlZCBpbiBDb21wb3VuZFN0bXRCaXRzLgorICBTb3VyY2VMb2NhdGlvbiBSQnJhY2VMb2M7CiAKICAgQ29tcG91bmRTdG10KEFycmF5UmVmPFN0bXQgKj4gU3RtdHMsIFNvdXJjZUxvY2F0aW9uIExCLCBTb3VyY2VMb2NhdGlvbiBSQik7CiAgIGV4cGxpY2l0IENvbXBvdW5kU3RtdChFbXB0eVNoZWxsIEVtcHR5KSA6IFN0bXQoQ29tcG91bmRTdG10Q2xhc3MsIEVtcHR5KSB7fQpAQCAtNjI4LDggKzEyNTMsOSBAQAogCiAgIC8vIEJ1aWxkIGFuIGVtcHR5IGNvbXBvdW5kIHN0YXRlbWVudCB3aXRoIGEgbG9jYXRpb24uCiAgIGV4cGxpY2l0IENvbXBvdW5kU3RtdChTb3VyY2VMb2NhdGlvbiBMb2MpCi0gICAgICA6IFN0bXQoQ29tcG91bmRTdG10Q2xhc3MpLCBMQnJhY2VMb2MoTG9jKSwgUkJyYWNlTG9jKExvYykgeworICAgICAgOiBTdG10KENvbXBvdW5kU3RtdENsYXNzKSwgUkJyYWNlTG9jKExvYykgewogICAgIENvbXBvdW5kU3RtdEJpdHMuTnVtU3RtdHMgPSAwOworICAgIENvbXBvdW5kU3RtdEJpdHMuTEJyYWNlTG9jID0gTG9jOwogICB9CiAKICAgLy8gQnVpbGQgYW4gZW1wdHkgY29tcG91bmQgc3RhdGVtZW50LgpAQCAtNjU1LDcgKzEyODEsNyBAQAogICAgIGJvZHlfYmVnaW4oKVtzaXplKCkgLSAxXSA9IFM7CiAgIH0KIAotICB1c2luZyBjb25zdF9ib2R5X2l0ZXJhdG9yID0gU3RtdCogY29uc3QgKjsKKyAgdXNpbmcgY29uc3RfYm9keV9pdGVyYXRvciA9IFN0bXQgKmNvbnN0ICo7CiAgIHVzaW5nIGJvZHlfY29uc3RfcmFuZ2UgPSBsbHZtOjppdGVyYXRvcl9yYW5nZTxjb25zdF9ib2R5X2l0ZXJhdG9yPjsKIAogICBib2R5X2NvbnN0X3JhbmdlIGJvZHkoKSBjb25zdCB7CkBAIC02OTcsMTAgKzEzMjMsMTAgQEAKICAgICByZXR1cm4gY29uc3RfcmV2ZXJzZV9ib2R5X2l0ZXJhdG9yKGJvZHlfYmVnaW4oKSk7CiAgIH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gTEJyYWNlTG9jOyB9Ci0gIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gUkJyYWNlTG9jOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgeyByZXR1cm4gQ29tcG91bmRTdG10Qml0cy5MQnJhY2VMb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgeyByZXR1cm4gUkJyYWNlTG9jOyB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0TEJyYWNMb2MoKSBjb25zdCB7IHJldHVybiBMQnJhY2VMb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0TEJyYWNMb2MoKSBjb25zdCB7IHJldHVybiBDb21wb3VuZFN0bXRCaXRzLkxCcmFjZUxvYzsgfQogICBTb3VyY2VMb2NhdGlvbiBnZXRSQnJhY0xvYygpIGNvbnN0IHsgcmV0dXJuIFJCcmFjZUxvYzsgfQogCiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgU3RtdCAqVCkgewpAQCAtNzE4LDM2ICsxMzQ0LDQwIEBACiAvLyBTd2l0Y2hDYXNlIGlzIHRoZSBiYXNlIGNsYXNzIGZvciBDYXNlU3RtdCBhbmQgRGVmYXVsdFN0bXQsCiBjbGFzcyBTd2l0Y2hDYXNlIDogcHVibGljIFN0bXQgewogcHJvdGVjdGVkOgotICAvLyBBIHBvaW50ZXIgdG8gdGhlIGZvbGxvd2luZyBDYXNlU3RtdCBvciBEZWZhdWx0U3RtdCBjbGFzcywKLSAgLy8gdXNlZCBieSBTd2l0Y2hTdG10LgotICBTd2l0Y2hDYXNlICpOZXh0U3dpdGNoQ2FzZSA9IG51bGxwdHI7Ci0gIFNvdXJjZUxvY2F0aW9uIEtleXdvcmRMb2M7CisgIC8vLyBUaGUgbG9jYXRpb24gb2YgdGhlICI6Ii4KICAgU291cmNlTG9jYXRpb24gQ29sb25Mb2M7CiAKKyAgLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSAiY2FzZSIgb3IgImRlZmF1bHQiIGtleXdvcmQuIFN0b3JlZCBpbiBTd2l0Y2hDYXNlQml0cy4KKyAgLy8gU291cmNlTG9jYXRpb24gS2V5d29yZExvYzsKKworICAvLy8gQSBwb2ludGVyIHRvIHRoZSBmb2xsb3dpbmcgQ2FzZVN0bXQgb3IgRGVmYXVsdFN0bXQgY2xhc3MsCisgIC8vLyB1c2VkIGJ5IFN3aXRjaFN0bXQuCisgIFN3aXRjaENhc2UgKk5leHRTd2l0Y2hDYXNlID0gbnVsbHB0cjsKKwogICBTd2l0Y2hDYXNlKFN0bXRDbGFzcyBTQywgU291cmNlTG9jYXRpb24gS1dMb2MsIFNvdXJjZUxvY2F0aW9uIENvbG9uTG9jKQotICAgICAgOiBTdG10KFNDKSwgS2V5d29yZExvYyhLV0xvYyksIENvbG9uTG9jKENvbG9uTG9jKSB7fQorICAgICAgOiBTdG10KFNDKSwgQ29sb25Mb2MoQ29sb25Mb2MpIHsKKyAgICBzZXRLZXl3b3JkTG9jKEtXTG9jKTsKKyAgfQogCiAgIFN3aXRjaENhc2UoU3RtdENsYXNzIFNDLCBFbXB0eVNoZWxsKSA6IFN0bXQoU0MpIHt9CiAKIHB1YmxpYzoKICAgY29uc3QgU3dpdGNoQ2FzZSAqZ2V0TmV4dFN3aXRjaENhc2UoKSBjb25zdCB7IHJldHVybiBOZXh0U3dpdGNoQ2FzZTsgfQotCiAgIFN3aXRjaENhc2UgKmdldE5leHRTd2l0Y2hDYXNlKCkgeyByZXR1cm4gTmV4dFN3aXRjaENhc2U7IH0KLQogICB2b2lkIHNldE5leHRTd2l0Y2hDYXNlKFN3aXRjaENhc2UgKlNDKSB7IE5leHRTd2l0Y2hDYXNlID0gU0M7IH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRLZXl3b3JkTG9jKCkgY29uc3QgeyByZXR1cm4gS2V5d29yZExvYzsgfQotICB2b2lkIHNldEtleXdvcmRMb2MoU291cmNlTG9jYXRpb24gTCkgeyBLZXl3b3JkTG9jID0gTDsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRLZXl3b3JkTG9jKCkgY29uc3QgeyByZXR1cm4gU3dpdGNoQ2FzZUJpdHMuS2V5d29yZExvYzsgfQorICB2b2lkIHNldEtleXdvcmRMb2MoU291cmNlTG9jYXRpb24gTCkgeyBTd2l0Y2hDYXNlQml0cy5LZXl3b3JkTG9jID0gTDsgfQogICBTb3VyY2VMb2NhdGlvbiBnZXRDb2xvbkxvYygpIGNvbnN0IHsgcmV0dXJuIENvbG9uTG9jOyB9CiAgIHZvaWQgc2V0Q29sb25Mb2MoU291cmNlTG9jYXRpb24gTCkgeyBDb2xvbkxvYyA9IEw7IH0KIAotICBTdG10ICpnZXRTdWJTdG10KCk7CisgIGlubGluZSBTdG10ICpnZXRTdWJTdG10KCk7CiAgIGNvbnN0IFN0bXQgKmdldFN1YlN0bXQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8U3dpdGNoQ2FzZSo+KHRoaXMpLT5nZXRTdWJTdG10KCk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8U3dpdGNoQ2FzZSAqPih0aGlzKS0+Z2V0U3ViU3RtdCgpOwogICB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIEtleXdvcmRMb2M7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWTsKKyAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCB7IHJldHVybiBnZXRLZXl3b3JkTG9jKCk7IH0KKyAgaW5saW5lIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFk7CiAKICAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBTdG10ICpUKSB7CiAgICAgcmV0dXJuIFQtPmdldFN0bXRDbGFzcygpID09IENhc2VTdG10Q2xhc3MgfHwKQEAgLTc1NSw1MiArMTM4NSwxMzcgQEAKICAgfQogfTsKIAotY2xhc3MgQ2FzZVN0bXQgOiBwdWJsaWMgU3dpdGNoQ2FzZSB7Ci0gIFNvdXJjZUxvY2F0aW9uIEVsbGlwc2lzTG9jOwotICBlbnVtIHsgTEhTLCBSSFMsIFNVQlNUTVQsIEVORF9FWFBSIH07Ci0gIFN0bXQqIFN1YkV4cHJzW0VORF9FWFBSXTsgIC8vIFRoZSBleHByZXNzaW9uIGZvciB0aGUgUkhTIGlzIE5vbi1udWxsIGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHTlUgImNhc2UgMSAuLi4gNCIgZXh0ZW5zaW9uCisvLy8gQ2FzZVN0bXQgLSBSZXByZXNlbnQgYSBjYXNlIHN0YXRlbWVudC4gSXQgY2FuIG9wdGlvbmFsbHkgYmUgYSBHTlUgY2FzZQorLy8vIHN0YXRlbWVudCBvZiB0aGUgZm9ybSBMSFMgLi4uIFJIUyByZXByZXNlbnRpbmcgYSByYW5nZSBvZiBjYXNlcy4KK2NsYXNzIENhc2VTdG10IGZpbmFsCisgICAgOiBwdWJsaWMgU3dpdGNoQ2FzZSwKKyAgICAgIHByaXZhdGUgbGx2bTo6VHJhaWxpbmdPYmplY3RzPENhc2VTdG10LCBTdG10ICosIFNvdXJjZUxvY2F0aW9uPiB7CisgIGZyaWVuZCBUcmFpbGluZ09iamVjdHM7CiAKLXB1YmxpYzoKKyAgLy8gQ2FzZVN0bXQgaXMgZm9sbG93ZWQgYnkgc2V2ZXJhbCB0cmFpbGluZyBvYmplY3RzLCBzb21lIG9mIHdoaWNoIG9wdGlvbmFsLgorICAvLyBOb3RlIHRoYXQgaXQgd291bGQgYmUgbW9yZSBjb252ZW5pZW50IHRvIHB1dCB0aGUgb3B0aW9uYWwgdHJhaWxpbmcgb2JqZWN0cworICAvLyBhdCB0aGUgZW5kIGJ1dCB0aGlzIHdvdWxkIGltcGFjdCBjaGlsZHJlbigpLgorICAvLyBUaGUgdHJhaWxpbmcgb2JqZWN0cyBhcmUgaW4gb3JkZXI6CisgIC8vCisgIC8vICogQSAiU3RtdCAqIiBmb3IgdGhlIExIUyBvZiB0aGUgY2FzZSBzdGF0ZW1lbnQuIEFsd2F5cyBwcmVzZW50LgorICAvLworICAvLyAqIEEgIlN0bXQgKiIgZm9yIHRoZSBSSFMgb2YgdGhlIGNhc2Ugc3RhdGVtZW50LiBUaGlzIGlzIGEgR05VIGV4dGVuc2lvbgorICAvLyAgIHdoaWNoIGFsbG93IHJhbmdlcyBpbiBjYXNlcyBzdGF0ZW1lbnQgb2YgdGhlIGZvcm0gTEhTIC4uLiBSSFMuCisgIC8vICAgUHJlc2VudCBpZiBhbmQgb25seSBpZiBjYXNlU3RtdElzR05VUmFuZ2UoKSBpcyB0cnVlLgorICAvLworICAvLyAqIEEgIlN0bXQgKiIgZm9yIHRoZSBzdWJzdGF0ZW1lbnQgb2YgdGhlIGNhc2Ugc3RhdGVtZW50LiBBbHdheXMgcHJlc2VudC4KKyAgLy8KKyAgLy8gKiBBIFNvdXJjZUxvY2F0aW9uIGZvciB0aGUgbG9jYXRpb24gb2YgdGhlIC4uLiBpZiB0aGlzIGlzIGEgY2FzZSBzdGF0ZW1lbnQKKyAgLy8gICB3aXRoIGEgcmFuZ2UuIFByZXNlbnQgaWYgYW5kIG9ubHkgaWYgY2FzZVN0bXRJc0dOVVJhbmdlKCkgaXMgdHJ1ZS4KKyAgZW51bSB7IExoc09mZnNldCA9IDAsIFN1YlN0bXRPZmZzZXRGcm9tUmhzID0gMSB9OworICBlbnVtIHsgTnVtTWFuZGF0b3J5U3RtdFB0ciA9IDIgfTsKKworICB1bnNpZ25lZCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxTdG10ICo+KSBjb25zdCB7CisgICAgcmV0dXJuIE51bU1hbmRhdG9yeVN0bXRQdHIgKyBjYXNlU3RtdElzR05VUmFuZ2UoKTsKKyAgfQorCisgIHVuc2lnbmVkIG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPFNvdXJjZUxvY2F0aW9uPikgY29uc3QgeworICAgIHJldHVybiBjYXNlU3RtdElzR05VUmFuZ2UoKTsKKyAgfQorCisgIHVuc2lnbmVkIGxoc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuIExoc09mZnNldDsgfQorICB1bnNpZ25lZCByaHNPZmZzZXQoKSBjb25zdCB7IHJldHVybiBMaHNPZmZzZXQgKyBjYXNlU3RtdElzR05VUmFuZ2UoKTsgfQorICB1bnNpZ25lZCBzdWJTdG10T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gcmhzT2Zmc2V0KCkgKyBTdWJTdG10T2Zmc2V0RnJvbVJoczsgfQorCisgIC8vLyBCdWlsZCBhIGNhc2Ugc3RhdGVtZW50IGFzc3VtaW5nIHRoYXQgdGhlIHN0b3JhZ2UgZm9yIHRoZQorICAvLy8gdHJhaWxpbmcgb2JqZWN0cyBoYXMgYmVlbiBwcm9wZXJseSBhbGxvY2F0ZWQuCiAgIENhc2VTdG10KEV4cHIgKmxocywgRXhwciAqcmhzLCBTb3VyY2VMb2NhdGlvbiBjYXNlTG9jLAogICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBlbGxpcHNpc0xvYywgU291cmNlTG9jYXRpb24gY29sb25Mb2MpCi0gICAgOiBTd2l0Y2hDYXNlKENhc2VTdG10Q2xhc3MsIGNhc2VMb2MsIGNvbG9uTG9jKSB7Ci0gICAgU3ViRXhwcnNbU1VCU1RNVF0gPSBudWxscHRyOwotICAgIFN1YkV4cHJzW0xIU10gPSByZWludGVycHJldF9jYXN0PFN0bXQqPihsaHMpOwotICAgIFN1YkV4cHJzW1JIU10gPSByZWludGVycHJldF9jYXN0PFN0bXQqPihyaHMpOwotICAgIEVsbGlwc2lzTG9jID0gZWxsaXBzaXNMb2M7CisgICAgICA6IFN3aXRjaENhc2UoQ2FzZVN0bXRDbGFzcywgY2FzZUxvYywgY29sb25Mb2MpIHsKKyAgICAvLyBIYW5kbGUgR05VIGNhc2Ugc3RhdGVtZW50cyBvZiB0aGUgZm9ybSBMSFMgLi4uIFJIUy4KKyAgICBib29sIElzR05VUmFuZ2UgPSByaHMgIT0gbnVsbHB0cjsKKyAgICBTd2l0Y2hDYXNlQml0cy5DYXNlU3RtdElzR05VUmFuZ2UgPSBJc0dOVVJhbmdlOworICAgIHNldExIUyhsaHMpOworICAgIHNldFN1YlN0bXQobnVsbHB0cik7CisgICAgaWYgKElzR05VUmFuZ2UpIHsKKyAgICAgIHNldFJIUyhyaHMpOworICAgICAgc2V0RWxsaXBzaXNMb2MoZWxsaXBzaXNMb2MpOworICAgIH0KICAgfQogCiAgIC8vLyBCdWlsZCBhbiBlbXB0eSBzd2l0Y2ggY2FzZSBzdGF0ZW1lbnQuCi0gIGV4cGxpY2l0IENhc2VTdG10KEVtcHR5U2hlbGwgRW1wdHkpIDogU3dpdGNoQ2FzZShDYXNlU3RtdENsYXNzLCBFbXB0eSkge30KKyAgZXhwbGljaXQgQ2FzZVN0bXQoRW1wdHlTaGVsbCBFbXB0eSwgYm9vbCBDYXNlU3RtdElzR05VUmFuZ2UpCisgICAgICA6IFN3aXRjaENhc2UoQ2FzZVN0bXRDbGFzcywgRW1wdHkpIHsKKyAgICBTd2l0Y2hDYXNlQml0cy5DYXNlU3RtdElzR05VUmFuZ2UgPSBDYXNlU3RtdElzR05VUmFuZ2U7CisgIH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRDYXNlTG9jKCkgY29uc3QgeyByZXR1cm4gS2V5d29yZExvYzsgfQotICB2b2lkIHNldENhc2VMb2MoU291cmNlTG9jYXRpb24gTCkgeyBLZXl3b3JkTG9jID0gTDsgfQotICBTb3VyY2VMb2NhdGlvbiBnZXRFbGxpcHNpc0xvYygpIGNvbnN0IHsgcmV0dXJuIEVsbGlwc2lzTG9jOyB9Ci0gIHZvaWQgc2V0RWxsaXBzaXNMb2MoU291cmNlTG9jYXRpb24gTCkgeyBFbGxpcHNpc0xvYyA9IEw7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0Q29sb25Mb2MoKSBjb25zdCB7IHJldHVybiBDb2xvbkxvYzsgfQotICB2b2lkIHNldENvbG9uTG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgQ29sb25Mb2MgPSBMOyB9CitwdWJsaWM6CisgIC8vLyBCdWlsZCBhIGNhc2Ugc3RhdGVtZW50LgorICBzdGF0aWMgQ2FzZVN0bXQgKkNyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDdHgsIEV4cHIgKmxocywgRXhwciAqcmhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBjYXNlTG9jLCBTb3VyY2VMb2NhdGlvbiBlbGxpcHNpc0xvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gY29sb25Mb2MpOwogCi0gIEV4cHIgKmdldExIUygpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RXhwcio+KFN1YkV4cHJzW0xIU10pOyB9Ci0gIEV4cHIgKmdldFJIUygpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RXhwcio+KFN1YkV4cHJzW1JIU10pOyB9Ci0gIFN0bXQgKmdldFN1YlN0bXQoKSB7IHJldHVybiBTdWJFeHByc1tTVUJTVE1UXTsgfQorICAvLy8gQnVpbGQgYW4gZW1wdHkgY2FzZSBzdGF0ZW1lbnQuCisgIHN0YXRpYyBDYXNlU3RtdCAqQ3JlYXRlRW1wdHkoY29uc3QgQVNUQ29udGV4dCAmQ3R4LCBib29sIENhc2VTdG10SXNHTlVSYW5nZSk7CisKKyAgLy8vIFRydWUgaWYgdGhpcyBjYXNlIHN0YXRlbWVudCBpcyBvZiB0aGUgZm9ybSBjYXNlIExIUyAuLi4gUkhTLCB3aGljaAorICAvLy8gaXMgYSBHTlUgZXh0ZW5zaW9uLiBJbiB0aGlzIGNhc2UgdGhlIFJIUyBjYW4gYmUgb2J0YWluZWQgd2l0aCBnZXRSSFMoKQorICAvLy8gYW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUgZWxsaXBzaXMgY2FuIGJlIG9idGFpbmVkIHdpdGggZ2V0RWxsaXBzaXNMb2MoKS4KKyAgYm9vbCBjYXNlU3RtdElzR05VUmFuZ2UoKSBjb25zdCB7IHJldHVybiBTd2l0Y2hDYXNlQml0cy5DYXNlU3RtdElzR05VUmFuZ2U7IH0KKworICBTb3VyY2VMb2NhdGlvbiBnZXRDYXNlTG9jKCkgY29uc3QgeyByZXR1cm4gZ2V0S2V5d29yZExvYygpOyB9CisgIHZvaWQgc2V0Q2FzZUxvYyhTb3VyY2VMb2NhdGlvbiBMKSB7IHNldEtleXdvcmRMb2MoTCk7IH0KKworICAvLy8gR2V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgLi4uIGluIGEgY2FzZSBzdGF0ZW1lbnQgb2YgdGhlIGZvcm0gTEhTIC4uLiBSSFMuCisgIFNvdXJjZUxvY2F0aW9uIGdldEVsbGlwc2lzTG9jKCkgY29uc3QgeworICAgIHJldHVybiBjYXNlU3RtdElzR05VUmFuZ2UoKSA/ICpnZXRUcmFpbGluZ09iamVjdHM8U291cmNlTG9jYXRpb24+KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTb3VyY2VMb2NhdGlvbigpOworICB9CisKKyAgLy8vIFNldCB0aGUgbG9jYXRpb24gb2YgdGhlIC4uLiBpbiBhIGNhc2Ugc3RhdGVtZW50IG9mIHRoZSBmb3JtIExIUyAuLi4gUkhTLgorICAvLy8gQXNzZXJ0IHRoYXQgdGhpcyBjYXNlIHN0YXRlbWVudCBpcyBvZiB0aGlzIGZvcm0uCisgIHZvaWQgc2V0RWxsaXBzaXNMb2MoU291cmNlTG9jYXRpb24gTCkgeworICAgIGFzc2VydCgKKyAgICAgICAgY2FzZVN0bXRJc0dOVVJhbmdlKCkgJiYKKyAgICAgICAgInNldEVsbGlwc2lzTG9jIGJ1dCB0aGlzIGlzIG5vdCBhIGNhc2Ugc3RtdCBvZiB0aGUgZm9ybSBMSFMgLi4uIFJIUyEiKTsKKyAgICAqZ2V0VHJhaWxpbmdPYmplY3RzPFNvdXJjZUxvY2F0aW9uPigpID0gTDsKKyAgfQorCisgIEV4cHIgKmdldExIUygpIHsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeHByICo+KGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbbGhzT2Zmc2V0KCldKTsKKyAgfQogCiAgIGNvbnN0IEV4cHIgKmdldExIUygpIGNvbnN0IHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBFeHByKj4oU3ViRXhwcnNbTEhTXSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RXhwciAqPihnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW2xoc09mZnNldCgpXSk7CisgIH0KKworICB2b2lkIHNldExIUyhFeHByICpWYWwpIHsKKyAgICBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW2xoc09mZnNldCgpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RtdCAqPihWYWwpOworICB9CisKKyAgRXhwciAqZ2V0UkhTKCkgeworICAgIHJldHVybiBjYXNlU3RtdElzR05VUmFuZ2UoKSA/IHJlaW50ZXJwcmV0X2Nhc3Q8RXhwciAqPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVtyaHNPZmZzZXQoKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbHB0cjsKICAgfQogCiAgIGNvbnN0IEV4cHIgKmdldFJIUygpIGNvbnN0IHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBFeHByKj4oU3ViRXhwcnNbUkhTXSk7CisgICAgcmV0dXJuIGNhc2VTdG10SXNHTlVSYW5nZSgpID8gcmVpbnRlcnByZXRfY2FzdDxFeHByICo+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW3Joc09mZnNldCgpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxscHRyOwogICB9CiAKLSAgY29uc3QgU3RtdCAqZ2V0U3ViU3RtdCgpIGNvbnN0IHsgcmV0dXJuIFN1YkV4cHJzW1NVQlNUTVRdOyB9CisgIHZvaWQgc2V0UkhTKEV4cHIgKlZhbCkgeworICAgIGFzc2VydChjYXNlU3RtdElzR05VUmFuZ2UoKSAmJgorICAgICAgICAgICAic2V0UkhTIGJ1dCB0aGlzIGlzIG5vdCBhIGNhc2Ugc3RtdCBvZiB0aGUgZm9ybSBMSFMgLi4uIFJIUyEiKTsKKyAgICBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW3Joc09mZnNldCgpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RtdCAqPihWYWwpOworICB9CiAKLSAgdm9pZCBzZXRTdWJTdG10KFN0bXQgKlMpIHsgU3ViRXhwcnNbU1VCU1RNVF0gPSBTOyB9Ci0gIHZvaWQgc2V0TEhTKEV4cHIgKlZhbCkgeyBTdWJFeHByc1tMSFNdID0gcmVpbnRlcnByZXRfY2FzdDxTdG10Kj4oVmFsKTsgfQotICB2b2lkIHNldFJIUyhFeHByICpWYWwpIHsgU3ViRXhwcnNbUkhTXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RtdCo+KFZhbCk7IH0KKyAgU3RtdCAqZ2V0U3ViU3RtdCgpIHsgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbc3ViU3RtdE9mZnNldCgpXTsgfQorICBjb25zdCBTdG10ICpnZXRTdWJTdG10KCkgY29uc3QgeworICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW3N1YlN0bXRPZmZzZXQoKV07CisgIH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gS2V5d29yZExvYzsgfQorICB2b2lkIHNldFN1YlN0bXQoU3RtdCAqUykgeworICAgIGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbc3ViU3RtdE9mZnNldCgpXSA9IFM7CisgIH0KIAorICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IHsgcmV0dXJuIGdldEtleXdvcmRMb2MoKTsgfQogICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsKICAgICAvLyBIYW5kbGUgZGVlcGx5IG5lc3RlZCBjYXNlIHN0YXRlbWVudHMgd2l0aCBpdGVyYXRpb24gaW5zdGVhZCBvZiByZWN1cnNpb24uCiAgICAgY29uc3QgQ2FzZVN0bXQgKkNTID0gdGhpczsKQEAgLTgxNiwxNiArMTUzMSwxOCBAQAogCiAgIC8vIEl0ZXJhdG9ycwogICBjaGlsZF9yYW5nZSBjaGlsZHJlbigpIHsKLSAgICByZXR1cm4gY2hpbGRfcmFuZ2UoJlN1YkV4cHJzWzBdLCAmU3ViRXhwcnNbRU5EX0VYUFJdKTsKKyAgICByZXR1cm4gY2hpbGRfcmFuZ2UoZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxTdG10ICo+KCkpKTsKICAgfQogfTsKIAogY2xhc3MgRGVmYXVsdFN0bXQgOiBwdWJsaWMgU3dpdGNoQ2FzZSB7Ci0gIFN0bXQqIFN1YlN0bXQ7CisgIFN0bXQgKlN1YlN0bXQ7CiAKIHB1YmxpYzoKLSAgRGVmYXVsdFN0bXQoU291cmNlTG9jYXRpb24gREwsIFNvdXJjZUxvY2F0aW9uIENMLCBTdG10ICpzdWJzdG10KSA6Ci0gICAgU3dpdGNoQ2FzZShEZWZhdWx0U3RtdENsYXNzLCBETCwgQ0wpLCBTdWJTdG10KHN1YnN0bXQpIHt9CisgIERlZmF1bHRTdG10KFNvdXJjZUxvY2F0aW9uIERMLCBTb3VyY2VMb2NhdGlvbiBDTCwgU3RtdCAqc3Vic3RtdCkKKyAgICAgIDogU3dpdGNoQ2FzZShEZWZhdWx0U3RtdENsYXNzLCBETCwgQ0wpLCBTdWJTdG10KHN1YnN0bXQpIHt9CiAKICAgLy8vIEJ1aWxkIGFuIGVtcHR5IGRlZmF1bHQgc3RhdGVtZW50LgogICBleHBsaWNpdCBEZWZhdWx0U3RtdChFbXB0eVNoZWxsIEVtcHR5KQpAQCAtODM1LDEyICsxNTUyLDEwIEBACiAgIGNvbnN0IFN0bXQgKmdldFN1YlN0bXQoKSBjb25zdCB7IHJldHVybiBTdWJTdG10OyB9CiAgIHZvaWQgc2V0U3ViU3RtdChTdG10ICpTKSB7IFN1YlN0bXQgPSBTOyB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0RGVmYXVsdExvYygpIGNvbnN0IHsgcmV0dXJuIEtleXdvcmRMb2M7IH0KLSAgdm9pZCBzZXREZWZhdWx0TG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgS2V5d29yZExvYyA9IEw7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0Q29sb25Mb2MoKSBjb25zdCB7IHJldHVybiBDb2xvbkxvYzsgfQotICB2b2lkIHNldENvbG9uTG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgQ29sb25Mb2MgPSBMOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldERlZmF1bHRMb2MoKSBjb25zdCB7IHJldHVybiBnZXRLZXl3b3JkTG9jKCk7IH0KKyAgdm9pZCBzZXREZWZhdWx0TG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgc2V0S2V5d29yZExvYyhMKTsgfQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBLZXl3b3JkTG9jOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgeyByZXR1cm4gZ2V0S2V5d29yZExvYygpOyB9CiAgIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgewogICAgIHJldHVybiBTdWJTdG10LT5nZXRFbmRMb2MoKTsKICAgfQpAQCAtODUwLDQ4ICsxNTY1LDU3IEBACiAgIH0KIAogICAvLyBJdGVyYXRvcnMKLSAgY2hpbGRfcmFuZ2UgY2hpbGRyZW4oKSB7IHJldHVybiBjaGlsZF9yYW5nZSgmU3ViU3RtdCwgJlN1YlN0bXQrMSk7IH0KKyAgY2hpbGRfcmFuZ2UgY2hpbGRyZW4oKSB7IHJldHVybiBjaGlsZF9yYW5nZSgmU3ViU3RtdCwgJlN1YlN0bXQgKyAxKTsgfQogfTsKIAotaW5saW5lIFNvdXJjZUxvY2F0aW9uIFN3aXRjaENhc2U6OmdldEVuZExvYygpIGNvbnN0IHsKK1NvdXJjZUxvY2F0aW9uIFN3aXRjaENhc2U6OmdldEVuZExvYygpIGNvbnN0IHsKICAgaWYgKGNvbnN0IGF1dG8gKkNTID0gZHluX2Nhc3Q8Q2FzZVN0bXQ+KHRoaXMpKQogICAgIHJldHVybiBDUy0+Z2V0RW5kTG9jKCk7Ci0gIHJldHVybiBjYXN0PERlZmF1bHRTdG10Pih0aGlzKS0+Z2V0RW5kTG9jKCk7CisgIGVsc2UgaWYgKGNvbnN0IGF1dG8gKkRTID0gZHluX2Nhc3Q8RGVmYXVsdFN0bXQ+KHRoaXMpKQorICAgIHJldHVybiBEUy0+Z2V0RW5kTG9jKCk7CisgIGxsdm1fdW5yZWFjaGFibGUoIlN3aXRjaENhc2UgaXMgbmVpdGhlciBhIENhc2VTdG10IG5vciBhIERlZmF1bHRTdG10ISIpOworfQorCitTdG10ICpTd2l0Y2hDYXNlOjpnZXRTdWJTdG10KCkgeworICBpZiAoYXV0byAqQ1MgPSBkeW5fY2FzdDxDYXNlU3RtdD4odGhpcykpCisgICAgcmV0dXJuIENTLT5nZXRTdWJTdG10KCk7CisgIGVsc2UgaWYgKGF1dG8gKkRTID0gZHluX2Nhc3Q8RGVmYXVsdFN0bXQ+KHRoaXMpKQorICAgIHJldHVybiBEUy0+Z2V0U3ViU3RtdCgpOworICBsbHZtX3VucmVhY2hhYmxlKCJTd2l0Y2hDYXNlIGlzIG5laXRoZXIgYSBDYXNlU3RtdCBub3IgYSBEZWZhdWx0U3RtdCEiKTsKIH0KIAogLy8vIExhYmVsU3RtdCAtIFJlcHJlc2VudHMgYSBsYWJlbCwgd2hpY2ggaGFzIGEgc3Vic3RhdGVtZW50LiAgRm9yIGV4YW1wbGU6CiAvLy8gICAgZm9vOiByZXR1cm47CiBjbGFzcyBMYWJlbFN0bXQgOiBwdWJsaWMgU3RtdCB7Ci0gIFNvdXJjZUxvY2F0aW9uIElkZW50TG9jOwogICBMYWJlbERlY2wgKlRoZURlY2w7CiAgIFN0bXQgKlN1YlN0bXQ7CiAKIHB1YmxpYzoKKyAgLy8vIEJ1aWxkIGEgbGFiZWwgc3RhdGVtZW50LgogICBMYWJlbFN0bXQoU291cmNlTG9jYXRpb24gSUwsIExhYmVsRGVjbCAqRCwgU3RtdCAqc3Vic3RtdCkKLSAgICAgIDogU3RtdChMYWJlbFN0bXRDbGFzcyksIElkZW50TG9jKElMKSwgVGhlRGVjbChEKSwgU3ViU3RtdChzdWJzdG10KSB7Ci0gICAgc3RhdGljX2Fzc2VydChzaXplb2YoTGFiZWxTdG10KSA9PQotICAgICAgICAgICAgICAgICAgICAgIDIgKiBzaXplb2YoU291cmNlTG9jYXRpb24pICsgMiAqIHNpemVvZih2b2lkICopLAotICAgICAgICAgICAgICAgICAgIkxhYmVsU3RtdCB0b28gYmlnIik7CisgICAgICA6IFN0bXQoTGFiZWxTdG10Q2xhc3MpLCBUaGVEZWNsKEQpLCBTdWJTdG10KHN1YnN0bXQpIHsKKyAgICBzZXRJZGVudExvYyhJTCk7CiAgIH0KIAotICAvLyBCdWlsZCBhbiBlbXB0eSBsYWJlbCBzdGF0ZW1lbnQuCisgIC8vLyBCdWlsZCBhbiBlbXB0eSBsYWJlbCBzdGF0ZW1lbnQuCiAgIGV4cGxpY2l0IExhYmVsU3RtdChFbXB0eVNoZWxsIEVtcHR5KSA6IFN0bXQoTGFiZWxTdG10Q2xhc3MsIEVtcHR5KSB7fQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldElkZW50TG9jKCkgY29uc3QgeyByZXR1cm4gSWRlbnRMb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0SWRlbnRMb2MoKSBjb25zdCB7IHJldHVybiBMYWJlbFN0bXRCaXRzLklkZW50TG9jOyB9CisgIHZvaWQgc2V0SWRlbnRMb2MoU291cmNlTG9jYXRpb24gTCkgeyBMYWJlbFN0bXRCaXRzLklkZW50TG9jID0gTDsgfQorCiAgIExhYmVsRGVjbCAqZ2V0RGVjbCgpIGNvbnN0IHsgcmV0dXJuIFRoZURlY2w7IH0KICAgdm9pZCBzZXREZWNsKExhYmVsRGVjbCAqRCkgeyBUaGVEZWNsID0gRDsgfQorCiAgIGNvbnN0IGNoYXIgKmdldE5hbWUoKSBjb25zdDsKICAgU3RtdCAqZ2V0U3ViU3RtdCgpIHsgcmV0dXJuIFN1YlN0bXQ7IH0KKwogICBjb25zdCBTdG10ICpnZXRTdWJTdG10KCkgY29uc3QgeyByZXR1cm4gU3ViU3RtdDsgfQotICB2b2lkIHNldElkZW50TG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgSWRlbnRMb2MgPSBMOyB9CiAgIHZvaWQgc2V0U3ViU3RtdChTdG10ICpTUykgeyBTdWJTdG10ID0gU1M7IH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gSWRlbnRMb2M7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7Ci0gICAgcmV0dXJuIFN1YlN0bXQtPmdldEVuZExvYygpOwotICB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgeyByZXR1cm4gZ2V0SWRlbnRMb2MoKTsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIFN1YlN0bXQtPmdldEVuZExvYygpO30KIAotICBjaGlsZF9yYW5nZSBjaGlsZHJlbigpIHsgcmV0dXJuIGNoaWxkX3JhbmdlKCZTdWJTdG10LCAmU3ViU3RtdCsxKTsgfQorICBjaGlsZF9yYW5nZSBjaGlsZHJlbigpIHsgcmV0dXJuIGNoaWxkX3JhbmdlKCZTdWJTdG10LCAmU3ViU3RtdCArIDEpOyB9CiAKICAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBTdG10ICpUKSB7CiAgICAgcmV0dXJuIFQtPmdldFN0bXRDbGFzcygpID09IExhYmVsU3RtdENsYXNzOwpAQCAtOTA5LDE3ICsxNjMzLDE5IEBACiAgIGZyaWVuZCBUcmFpbGluZ09iamVjdHM7CiAKICAgU3RtdCAqU3ViU3RtdDsKLSAgU291cmNlTG9jYXRpb24gQXR0ckxvYzsKLSAgdW5zaWduZWQgTnVtQXR0cnM7CiAKLSAgQXR0cmlidXRlZFN0bXQoU291cmNlTG9jYXRpb24gTG9jLCBBcnJheVJlZjxjb25zdCBBdHRyKj4gQXR0cnMsIFN0bXQgKlN1YlN0bXQpCi0gICAgOiBTdG10KEF0dHJpYnV0ZWRTdG10Q2xhc3MpLCBTdWJTdG10KFN1YlN0bXQpLCBBdHRyTG9jKExvYyksCi0gICAgICBOdW1BdHRycyhBdHRycy5zaXplKCkpIHsKKyAgQXR0cmlidXRlZFN0bXQoU291cmNlTG9jYXRpb24gTG9jLCBBcnJheVJlZjxjb25zdCBBdHRyICo+IEF0dHJzLAorICAgICAgICAgICAgICAgICBTdG10ICpTdWJTdG10KQorICAgICAgOiBTdG10KEF0dHJpYnV0ZWRTdG10Q2xhc3MpLCBTdWJTdG10KFN1YlN0bXQpIHsKKyAgICBBdHRyaWJ1dGVkU3RtdEJpdHMuTnVtQXR0cnMgPSBBdHRycy5zaXplKCk7CisgICAgQXR0cmlidXRlZFN0bXRCaXRzLkF0dHJMb2MgPSBMb2M7CiAgICAgc3RkOjpjb3B5KEF0dHJzLmJlZ2luKCksIEF0dHJzLmVuZCgpLCBnZXRBdHRyQXJyYXlQdHIoKSk7CiAgIH0KIAogICBleHBsaWNpdCBBdHRyaWJ1dGVkU3RtdChFbXB0eVNoZWxsIEVtcHR5LCB1bnNpZ25lZCBOdW1BdHRycykKLSAgICAgIDogU3RtdChBdHRyaWJ1dGVkU3RtdENsYXNzLCBFbXB0eSksIE51bUF0dHJzKE51bUF0dHJzKSB7CisgICAgICA6IFN0bXQoQXR0cmlidXRlZFN0bXRDbGFzcywgRW1wdHkpIHsKKyAgICBBdHRyaWJ1dGVkU3RtdEJpdHMuTnVtQXR0cnMgPSBOdW1BdHRyczsKKyAgICBBdHRyaWJ1dGVkU3RtdEJpdHMuQXR0ckxvYyA9IFNvdXJjZUxvY2F0aW9ue307CiAgICAgc3RkOjpmaWxsX24oZ2V0QXR0ckFycmF5UHRyKCksIE51bUF0dHJzLCBudWxscHRyKTsKICAgfQogCkBAIC05MzAsMjMgKzE2NTYsMjEgQEAKIAogcHVibGljOgogICBzdGF0aWMgQXR0cmlidXRlZFN0bXQgKkNyZWF0ZShjb25zdCBBU1RDb250ZXh0ICZDLCBTb3VyY2VMb2NhdGlvbiBMb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPGNvbnN0IEF0dHIqPiBBdHRycywgU3RtdCAqU3ViU3RtdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPGNvbnN0IEF0dHIgKj4gQXR0cnMsIFN0bXQgKlN1YlN0bXQpOwogCiAgIC8vIEJ1aWxkIGFuIGVtcHR5IGF0dHJpYnV0ZWQgc3RhdGVtZW50LgogICBzdGF0aWMgQXR0cmlidXRlZFN0bXQgKkNyZWF0ZUVtcHR5KGNvbnN0IEFTVENvbnRleHQgJkMsIHVuc2lnbmVkIE51bUF0dHJzKTsKIAotICBTb3VyY2VMb2NhdGlvbiBnZXRBdHRyTG9jKCkgY29uc3QgeyByZXR1cm4gQXR0ckxvYzsgfQotICBBcnJheVJlZjxjb25zdCBBdHRyKj4gZ2V0QXR0cnMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGxsdm06Om1ha2VBcnJheVJlZihnZXRBdHRyQXJyYXlQdHIoKSwgTnVtQXR0cnMpOworICBTb3VyY2VMb2NhdGlvbiBnZXRBdHRyTG9jKCkgY29uc3QgeyByZXR1cm4gQXR0cmlidXRlZFN0bXRCaXRzLkF0dHJMb2M7IH0KKyAgQXJyYXlSZWY8Y29uc3QgQXR0ciAqPiBnZXRBdHRycygpIGNvbnN0IHsKKyAgICByZXR1cm4gbGx2bTo6bWFrZUFycmF5UmVmKGdldEF0dHJBcnJheVB0cigpLCBBdHRyaWJ1dGVkU3RtdEJpdHMuTnVtQXR0cnMpOwogICB9CiAKICAgU3RtdCAqZ2V0U3ViU3RtdCgpIHsgcmV0dXJuIFN1YlN0bXQ7IH0KICAgY29uc3QgU3RtdCAqZ2V0U3ViU3RtdCgpIGNvbnN0IHsgcmV0dXJuIFN1YlN0bXQ7IH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gQXR0ckxvYzsgfQotICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsKLSAgICByZXR1cm4gU3ViU3RtdC0+Z2V0RW5kTG9jKCk7Ci0gIH0KKyAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCB7IHJldHVybiBnZXRBdHRyTG9jKCk7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBTdWJTdG10LT5nZXRFbmRMb2MoKTt9CiAKICAgY2hpbGRfcmFuZ2UgY2hpbGRyZW4oKSB7IHJldHVybiBjaGlsZF9yYW5nZSgmU3ViU3RtdCwgJlN1YlN0bXQgKyAxKTsgfQogCkBAIC05NTYsMjEgKzE2ODAsMTE3IEBACiB9OwogCiAvLy8gSWZTdG10IC0gVGhpcyByZXByZXNlbnRzIGFuIGlmL3RoZW4vZWxzZS4KLWNsYXNzIElmU3RtdCA6IHB1YmxpYyBTdG10IHsKLSAgZW51bSB7IElOSVQsIFZBUiwgQ09ORCwgVEhFTiwgRUxTRSwgRU5EX0VYUFIgfTsKLSAgU3RtdCogU3ViRXhwcnNbRU5EX0VYUFJdOworY2xhc3MgSWZTdG10IGZpbmFsCisgICAgOiBwdWJsaWMgU3RtdCwKKyAgICAgIHByaXZhdGUgbGx2bTo6VHJhaWxpbmdPYmplY3RzPElmU3RtdCwgU3RtdCAqLCBTb3VyY2VMb2NhdGlvbj4geworICBmcmllbmQgVHJhaWxpbmdPYmplY3RzOwogCi0gIFNvdXJjZUxvY2F0aW9uIElmTG9jOwotICBTb3VyY2VMb2NhdGlvbiBFbHNlTG9jOworICAvLyBJZlN0bXQgaXMgZm9sbG93ZWQgYnkgc2V2ZXJhbCB0cmFpbGluZyBvYmplY3RzLCBzb21lIG9mIHdoaWNoIG9wdGlvbmFsLgorICAvLyBOb3RlIHRoYXQgaXQgd291bGQgYmUgbW9yZSBjb252ZW5pZW50IHRvIHB1dCB0aGUgb3B0aW9uYWwgdHJhaWxpbmcKKyAgLy8gb2JqZWN0cyBhdCB0aGVuIGVuZCBidXQgdGhpcyB3b3VsZCBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBjaGlsZHJlbi4KKyAgLy8gVGhlIHRyYWlsaW5nIG9iamVjdHMgYXJlIGluIG9yZGVyOgorICAvLworICAvLyAqIEEgIlN0bXQgKiIgZm9yIHRoZSBpbml0IHN0YXRlbWVudC4KKyAgLy8gICAgUHJlc2VudCBpZiBhbmQgb25seSBpZiBoYXNJbml0U3RvcmFnZSgpLgorICAvLworICAvLyAqIEEgIlN0bXQgKiIgZm9yIHRoZSBjb25kaXRpb24gdmFyaWFibGUuCisgIC8vICAgIFByZXNlbnQgaWYgYW5kIG9ubHkgaWYgaGFzVmFyU3RvcmFnZSgpLiBUaGlzIGlzIGluIGZhY3QgYSAiRGVjbFN0bXQgKiIuCisgIC8vCisgIC8vICogQSAiU3RtdCAqIiBmb3IgdGhlIGNvbmRpdGlvbi4KKyAgLy8gICAgQWx3YXlzIHByZXNlbnQuIFRoaXMgaXMgaW4gZmFjdCBhICJFeHByICoiLgorICAvLworICAvLyAqIEEgIlN0bXQgKiIgZm9yIHRoZSB0aGVuIHN0YXRlbWVudC4KKyAgLy8gICAgQWx3YXlzIHByZXNlbnQuCisgIC8vCisgIC8vICogQSAiU3RtdCAqIiBmb3IgdGhlIGVsc2Ugc3RhdGVtZW50LgorICAvLyAgICBQcmVzZW50IGlmIGFuZCBvbmx5IGlmIGhhc0Vsc2VTdG9yYWdlKCkuCisgIC8vCisgIC8vICogQSAiU291cmNlTG9jYXRpb24iIGZvciB0aGUgbG9jYXRpb24gb2YgdGhlICJlbHNlIi4KKyAgLy8gICAgUHJlc2VudCBpZiBhbmQgb25seSBpZiBoYXNFbHNlU3RvcmFnZSgpLgorICBlbnVtIHsgSW5pdE9mZnNldCA9IDAsIFRoZW5PZmZzZXRGcm9tQ29uZCA9IDEsIEVsc2VPZmZzZXRGcm9tQ29uZCA9IDIgfTsKKyAgZW51bSB7IE51bU1hbmRhdG9yeVN0bXRQdHIgPSAyIH07CisKKyAgdW5zaWduZWQgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2FkVG9rZW48U3RtdCAqPikgY29uc3QgeworICAgIHJldHVybiBOdW1NYW5kYXRvcnlTdG10UHRyICsgaGFzRWxzZVN0b3JhZ2UoKSArIGhhc1ZhclN0b3JhZ2UoKSArCisgICAgICAgICAgIGhhc0luaXRTdG9yYWdlKCk7CisgIH0KKworICB1bnNpZ25lZCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxTb3VyY2VMb2NhdGlvbj4pIGNvbnN0IHsKKyAgICByZXR1cm4gaGFzRWxzZVN0b3JhZ2UoKTsKKyAgfQorCisgIHVuc2lnbmVkIGluaXRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBJbml0T2Zmc2V0OyB9CisgIHVuc2lnbmVkIHZhck9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIEluaXRPZmZzZXQgKyBoYXNJbml0U3RvcmFnZSgpOyB9CisgIHVuc2lnbmVkIGNvbmRPZmZzZXQoKSBjb25zdCB7CisgICAgcmV0dXJuIEluaXRPZmZzZXQgKyBoYXNJbml0U3RvcmFnZSgpICsgaGFzVmFyU3RvcmFnZSgpOworICB9CisgIHVuc2lnbmVkIHRoZW5PZmZzZXQoKSBjb25zdCB7IHJldHVybiBjb25kT2Zmc2V0KCkgKyBUaGVuT2Zmc2V0RnJvbUNvbmQ7IH0KKyAgdW5zaWduZWQgZWxzZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIGNvbmRPZmZzZXQoKSArIEVsc2VPZmZzZXRGcm9tQ29uZDsgfQorCisgIC8vLyBCdWlsZCBhbiBpZi90aGVuL2Vsc2Ugc3RhdGVtZW50LgorICBJZlN0bXQoY29uc3QgQVNUQ29udGV4dCAmQ3R4LCBTb3VyY2VMb2NhdGlvbiBJTCwgYm9vbCBJc0NvbnN0ZXhwciwgU3RtdCAqSW5pdCwKKyAgICAgICAgIFZhckRlY2wgKlZhciwgRXhwciAqQ29uZCwgU3RtdCAqVGhlbiwgU291cmNlTG9jYXRpb24gRUwsIFN0bXQgKkVsc2UpOworCisgIC8vLyBCdWlsZCBhbiBlbXB0eSBpZi90aGVuL2Vsc2Ugc3RhdGVtZW50LgorICBleHBsaWNpdCBJZlN0bXQoRW1wdHlTaGVsbCBFbXB0eSwgYm9vbCBIYXNFbHNlLCBib29sIEhhc1ZhciwgYm9vbCBIYXNJbml0KTsKIAogcHVibGljOgotICBJZlN0bXQoY29uc3QgQVNUQ29udGV4dCAmQywgU291cmNlTG9jYXRpb24gSUwsCi0gICAgICAgICBib29sIElzQ29uc3RleHByLCBTdG10ICppbml0LCBWYXJEZWNsICp2YXIsIEV4cHIgKmNvbmQsCi0gICAgICAgICBTdG10ICp0aGVuLCBTb3VyY2VMb2NhdGlvbiBFTCA9IFNvdXJjZUxvY2F0aW9uKCksCi0gICAgICAgICBTdG10ICplbHNldiA9IG51bGxwdHIpOworICAvLy8gQ3JlYXRlIGFuIElmU3RtdC4KKyAgc3RhdGljIElmU3RtdCAqQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkN0eCwgU291cmNlTG9jYXRpb24gSUwsCisgICAgICAgICAgICAgICAgICAgICAgICBib29sIElzQ29uc3RleHByLCBTdG10ICpJbml0LCBWYXJEZWNsICpWYXIsIEV4cHIgKkNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICBTdG10ICpUaGVuLCBTb3VyY2VMb2NhdGlvbiBFTCA9IFNvdXJjZUxvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICBTdG10ICpFbHNlID0gbnVsbHB0cik7CiAKLSAgLy8vIEJ1aWxkIGFuIGVtcHR5IGlmL3RoZW4vZWxzZSBzdGF0ZW1lbnQKLSAgZXhwbGljaXQgSWZTdG10KEVtcHR5U2hlbGwgRW1wdHkpIDogU3RtdChJZlN0bXRDbGFzcywgRW1wdHkpIHt9CisgIC8vLyBDcmVhdGUgYW4gZW1wdHkgSWZTdG10IG9wdGlvbmFsbHkgd2l0aCBzdG9yYWdlIGZvciBhbiBlbHNlIHN0YXRlbWVudCwKKyAgLy8vIGNvbmRpdGlvbiB2YXJpYWJsZSBhbmQgaW5pdCBleHByZXNzaW9uLgorICBzdGF0aWMgSWZTdG10ICpDcmVhdGVFbXB0eShjb25zdCBBU1RDb250ZXh0ICZDdHgsIGJvb2wgSGFzRWxzZSwgYm9vbCBIYXNWYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgSGFzSW5pdCk7CisKKyAgLy8vIFRydWUgaWYgdGhpcyBJZlN0bXQgaGFzIHRoZSBzdG9yYWdlIGZvciBhbiBpbml0IHN0YXRlbWVudC4KKyAgYm9vbCBoYXNJbml0U3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIElmU3RtdEJpdHMuSGFzSW5pdDsgfQorCisgIC8vLyBUcnVlIGlmIHRoaXMgSWZTdG10IGhhcyBzdG9yYWdlIGZvciBhIHZhcmlhYmxlIGRlY2xhcmF0aW9uLgorICBib29sIGhhc1ZhclN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBJZlN0bXRCaXRzLkhhc1ZhcjsgfQorCisgIC8vLyBUcnVlIGlmIHRoaXMgSWZTdG10IGhhcyBzdG9yYWdlIGZvciBhbiBlbHNlIHN0YXRlbWVudC4KKyAgYm9vbCBoYXNFbHNlU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIElmU3RtdEJpdHMuSGFzRWxzZTsgfQorCisgIEV4cHIgKmdldENvbmQoKSB7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RXhwciAqPihnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW2NvbmRPZmZzZXQoKV0pOworICB9CisKKyAgY29uc3QgRXhwciAqZ2V0Q29uZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeHByICo+KGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbY29uZE9mZnNldCgpXSk7CisgIH0KKworICB2b2lkIHNldENvbmQoRXhwciAqQ29uZCkgeworICAgIGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbY29uZE9mZnNldCgpXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RtdCAqPihDb25kKTsKKyAgfQorCisgIFN0bXQgKmdldFRoZW4oKSB7IHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW3RoZW5PZmZzZXQoKV07IH0KKyAgY29uc3QgU3RtdCAqZ2V0VGhlbigpIGNvbnN0IHsKKyAgICByZXR1cm4gZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVt0aGVuT2Zmc2V0KCldOworICB9CisKKyAgdm9pZCBzZXRUaGVuKFN0bXQgKlRoZW4pIHsKKyAgICBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW3RoZW5PZmZzZXQoKV0gPSBUaGVuOworICB9CisKKyAgU3RtdCAqZ2V0RWxzZSgpIHsKKyAgICByZXR1cm4gaGFzRWxzZVN0b3JhZ2UoKSA/IGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbZWxzZU9mZnNldCgpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbHB0cjsKKyAgfQorCisgIGNvbnN0IFN0bXQgKmdldEVsc2UoKSBjb25zdCB7CisgICAgcmV0dXJuIGhhc0Vsc2VTdG9yYWdlKCkgPyBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW2Vsc2VPZmZzZXQoKV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxwdHI7CisgIH0KKworICB2b2lkIHNldEVsc2UoU3RtdCAqRWxzZSkgeworICAgIGFzc2VydChoYXNFbHNlU3RvcmFnZSgpICYmCisgICAgICAgICAgICJUaGlzIGlmIHN0YXRlbWVudCBoYXMgbm8gc3RvcmFnZSBmb3IgYW4gZWxzZSBzdGF0ZW1lbnQhIik7CisgICAgZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVtlbHNlT2Zmc2V0KCldID0gRWxzZTsKKyAgfQogCiAgIC8vLyBSZXRyaWV2ZSB0aGUgdmFyaWFibGUgZGVjbGFyZWQgaW4gdGhpcyAiaWYiIHN0YXRlbWVudCwgaWYgYW55LgogICAvLy8KQEAgLTk4MCw1MiArMTgwMCw3NyBAQAogICAvLy8gICBwcmludGYoInggaXMgJWQiLCB4KTsKICAgLy8vIH0KICAgLy8vIFxlbmRjb2RlCi0gIFZhckRlY2wgKmdldENvbmRpdGlvblZhcmlhYmxlKCkgY29uc3Q7Ci0gIHZvaWQgc2V0Q29uZGl0aW9uVmFyaWFibGUoY29uc3QgQVNUQ29udGV4dCAmQywgVmFyRGVjbCAqVik7CisgIFZhckRlY2wgKmdldENvbmRpdGlvblZhcmlhYmxlKCk7CisgIGNvbnN0IFZhckRlY2wgKmdldENvbmRpdGlvblZhcmlhYmxlKCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9jYXN0PElmU3RtdCAqPih0aGlzKS0+Z2V0Q29uZGl0aW9uVmFyaWFibGUoKTsKKyAgfQorCisgIC8vLyBTZXQgdGhlIGNvbmRpdGlvbiB2YXJpYWJsZSBmb3IgdGhpcyBpZiBzdGF0ZW1lbnQuCisgIC8vLyBUaGUgaWYgc3RhdGVtZW50IG11c3QgaGF2ZSBzdG9yYWdlIGZvciB0aGUgY29uZGl0aW9uIHZhcmlhYmxlLgorICB2b2lkIHNldENvbmRpdGlvblZhcmlhYmxlKGNvbnN0IEFTVENvbnRleHQgJkN0eCwgVmFyRGVjbCAqVik7CiAKICAgLy8vIElmIHRoaXMgSWZTdG10IGhhcyBhIGNvbmRpdGlvbiB2YXJpYWJsZSwgcmV0dXJuIHRoZSBmYXV4IERlY2xTdG10CiAgIC8vLyBhc3NvY2lhdGVkIHdpdGggdGhlIGNyZWF0aW9uIG9mIHRoYXQgY29uZGl0aW9uIHZhcmlhYmxlLgotICBjb25zdCBEZWNsU3RtdCAqZ2V0Q29uZGl0aW9uVmFyaWFibGVEZWNsU3RtdCgpIGNvbnN0IHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxEZWNsU3RtdCo+KFN1YkV4cHJzW1ZBUl0pOworICBEZWNsU3RtdCAqZ2V0Q29uZGl0aW9uVmFyaWFibGVEZWNsU3RtdCgpIHsKKyAgICByZXR1cm4gaGFzVmFyU3RvcmFnZSgpID8gc3RhdGljX2Nhc3Q8RGVjbFN0bXQgKj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW3Zhck9mZnNldCgpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbHB0cjsKICAgfQogCi0gIFN0bXQgKmdldEluaXQoKSB7IHJldHVybiBTdWJFeHByc1tJTklUXTsgfQotICBjb25zdCBTdG10ICpnZXRJbml0KCkgY29uc3QgeyByZXR1cm4gU3ViRXhwcnNbSU5JVF07IH0KLSAgdm9pZCBzZXRJbml0KFN0bXQgKlMpIHsgU3ViRXhwcnNbSU5JVF0gPSBTOyB9Ci0gIGNvbnN0IEV4cHIgKmdldENvbmQoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PEV4cHIqPihTdWJFeHByc1tDT05EXSk7fQotICB2b2lkIHNldENvbmQoRXhwciAqRSkgeyBTdWJFeHByc1tDT05EXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RtdCAqPihFKTsgfQotICBjb25zdCBTdG10ICpnZXRUaGVuKCkgY29uc3QgeyByZXR1cm4gU3ViRXhwcnNbVEhFTl07IH0KLSAgdm9pZCBzZXRUaGVuKFN0bXQgKlMpIHsgU3ViRXhwcnNbVEhFTl0gPSBTOyB9Ci0gIGNvbnN0IFN0bXQgKmdldEVsc2UoKSBjb25zdCB7IHJldHVybiBTdWJFeHByc1tFTFNFXTsgfQotICB2b2lkIHNldEVsc2UoU3RtdCAqUykgeyBTdWJFeHByc1tFTFNFXSA9IFM7IH0KKyAgY29uc3QgRGVjbFN0bXQgKmdldENvbmRpdGlvblZhcmlhYmxlRGVjbFN0bXQoKSBjb25zdCB7CisgICAgcmV0dXJuIGhhc1ZhclN0b3JhZ2UoKSA/IHN0YXRpY19jYXN0PERlY2xTdG10ICo+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVt2YXJPZmZzZXQoKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxwdHI7CisgIH0KIAotICBFeHByICpnZXRDb25kKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeHByKj4oU3ViRXhwcnNbQ09ORF0pOyB9Ci0gIFN0bXQgKmdldFRoZW4oKSB7IHJldHVybiBTdWJFeHByc1tUSEVOXTsgfQotICBTdG10ICpnZXRFbHNlKCkgeyByZXR1cm4gU3ViRXhwcnNbRUxTRV07IH0KKyAgU3RtdCAqZ2V0SW5pdCgpIHsKKyAgICByZXR1cm4gaGFzSW5pdFN0b3JhZ2UoKSA/IGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbaW5pdE9mZnNldCgpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbHB0cjsKKyAgfQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldElmTG9jKCkgY29uc3QgeyByZXR1cm4gSWZMb2M7IH0KLSAgdm9pZCBzZXRJZkxvYyhTb3VyY2VMb2NhdGlvbiBMKSB7IElmTG9jID0gTDsgfQotICBTb3VyY2VMb2NhdGlvbiBnZXRFbHNlTG9jKCkgY29uc3QgeyByZXR1cm4gRWxzZUxvYzsgfQotICB2b2lkIHNldEVsc2VMb2MoU291cmNlTG9jYXRpb24gTCkgeyBFbHNlTG9jID0gTDsgfQorICBjb25zdCBTdG10ICpnZXRJbml0KCkgY29uc3QgeworICAgIHJldHVybiBoYXNJbml0U3RvcmFnZSgpID8gZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVtpbml0T2Zmc2V0KCldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxscHRyOworICB9CisKKyAgdm9pZCBzZXRJbml0KFN0bXQgKkluaXQpIHsKKyAgICBhc3NlcnQoaGFzSW5pdFN0b3JhZ2UoKSAmJgorICAgICAgICAgICAiVGhpcyBpZiBzdGF0ZW1lbnQgaGFzIG5vIHN0b3JhZ2UgZm9yIGFuIGluaXQgc3RhdGVtZW50ISIpOworICAgIGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbaW5pdE9mZnNldCgpXSA9IEluaXQ7CisgIH0KKworICBTb3VyY2VMb2NhdGlvbiBnZXRJZkxvYygpIGNvbnN0IHsgcmV0dXJuIElmU3RtdEJpdHMuSWZMb2M7IH0KKyAgdm9pZCBzZXRJZkxvYyhTb3VyY2VMb2NhdGlvbiBJZkxvYykgeyBJZlN0bXRCaXRzLklmTG9jID0gSWZMb2M7IH0KKworICBTb3VyY2VMb2NhdGlvbiBnZXRFbHNlTG9jKCkgY29uc3QgeworICAgIHJldHVybiBoYXNFbHNlU3RvcmFnZSgpID8gKmdldFRyYWlsaW5nT2JqZWN0czxTb3VyY2VMb2NhdGlvbj4oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogU291cmNlTG9jYXRpb24oKTsKKyAgfQorCisgIHZvaWQgc2V0RWxzZUxvYyhTb3VyY2VMb2NhdGlvbiBFbHNlTG9jKSB7CisgICAgYXNzZXJ0KGhhc0Vsc2VTdG9yYWdlKCkgJiYKKyAgICAgICAgICAgIlRoaXMgaWYgc3RhdGVtZW50IGhhcyBubyBzdG9yYWdlIGZvciBhbiBlbHNlIHN0YXRlbWVudCEiKTsKKyAgICAqZ2V0VHJhaWxpbmdPYmplY3RzPFNvdXJjZUxvY2F0aW9uPigpID0gRWxzZUxvYzsKKyAgfQogCiAgIGJvb2wgaXNDb25zdGV4cHIoKSBjb25zdCB7IHJldHVybiBJZlN0bXRCaXRzLklzQ29uc3RleHByOyB9CiAgIHZvaWQgc2V0Q29uc3RleHByKGJvb2wgQykgeyBJZlN0bXRCaXRzLklzQ29uc3RleHByID0gQzsgfQogCiAgIGJvb2wgaXNPYmpDQXZhaWxhYmlsaXR5Q2hlY2soKSBjb25zdDsKIAotICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gSWZMb2M7IH0KLQorICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IHsgcmV0dXJuIGdldElmTG9jKCk7IH0KICAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7Ci0gICAgaWYgKFN1YkV4cHJzW0VMU0VdKQotICAgICAgcmV0dXJuIFN1YkV4cHJzW0VMU0VdLT5nZXRFbmRMb2MoKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gU3ViRXhwcnNbVEhFTl0tPmdldEVuZExvYygpOworICAgIGlmIChnZXRFbHNlKCkpCisgICAgICByZXR1cm4gZ2V0RWxzZSgpLT5nZXRFbmRMb2MoKTsKKyAgICByZXR1cm4gZ2V0VGhlbigpLT5nZXRFbmRMb2MoKTsKICAgfQogCiAgIC8vIEl0ZXJhdG9ycyBvdmVyIHN1YmV4cHJlc3Npb25zLiAgVGhlIGl0ZXJhdG9ycyB3aWxsIGluY2x1ZGUgaXRlcmF0aW5nCiAgIC8vIG92ZXIgdGhlIGluaXRpYWxpemF0aW9uIGV4cHJlc3Npb24gcmVmZXJlbmNlZCBieSB0aGUgY29uZGl0aW9uIHZhcmlhYmxlLgogICBjaGlsZF9yYW5nZSBjaGlsZHJlbigpIHsKLSAgICByZXR1cm4gY2hpbGRfcmFuZ2UoJlN1YkV4cHJzWzBdLCAmU3ViRXhwcnNbMF0rRU5EX0VYUFIpOworICAgIHJldHVybiBjaGlsZF9yYW5nZShnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpLAorICAgICAgICAgICAgICAgICAgICAgICBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPFN0bXQgKj4oKSkpOwogICB9CiAKICAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBTdG10ICpUKSB7CkBAIC0xMDM0LDIyICsxODc5LDEwMiBAQAogfTsKIAogLy8vIFN3aXRjaFN0bXQgLSBUaGlzIHJlcHJlc2VudHMgYSAnc3dpdGNoJyBzdG10LgotY2xhc3MgU3dpdGNoU3RtdCA6IHB1YmxpYyBTdG10IHsKLSAgU291cmNlTG9jYXRpb24gU3dpdGNoTG9jOwotICBlbnVtIHsgSU5JVCwgVkFSLCBDT05ELCBCT0RZLCBFTkRfRVhQUiB9OwotICBTdG10KiBTdWJFeHByc1tFTkRfRVhQUl07CitjbGFzcyBTd2l0Y2hTdG10IGZpbmFsIDogcHVibGljIFN0bXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8U3dpdGNoU3RtdCwgU3RtdCAqPiB7CisgIGZyaWVuZCBUcmFpbGluZ09iamVjdHM7CiAKLSAgLy8gVGhpcyBwb2ludHMgdG8gYSBsaW5rZWQgbGlzdCBvZiBjYXNlIGFuZCBkZWZhdWx0IHN0YXRlbWVudHMgYW5kLCBpZiB0aGUKLSAgLy8gU3dpdGNoU3RtdCBpcyBhIHN3aXRjaCBvbiBhbiBlbnVtIHZhbHVlLCByZWNvcmRzIHdoZXRoZXIgYWxsIHRoZSBlbnVtCi0gIC8vIHZhbHVlcyB3ZXJlIGNvdmVyZWQgYnkgQ2FzZVN0bXRzLiAgVGhlIGNvdmVyYWdlIGluZm9ybWF0aW9uIHZhbHVlIGlzIG1lYW50Ci0gIC8vIHRvIGJlIGEgaGludCBmb3IgcG9zc2libGUgY2xpZW50cy4KLSAgbGx2bTo6UG9pbnRlckludFBhaXI8U3dpdGNoQ2FzZSAqLCAxLCBib29sPiBGaXJzdENhc2U7CisgIC8vLyBQb2ludHMgdG8gYSBsaW5rZWQgbGlzdCBvZiBjYXNlIGFuZCBkZWZhdWx0IHN0YXRlbWVudHMuCisgIFN3aXRjaENhc2UgKkZpcnN0Q2FzZTsKIAotcHVibGljOgotICBTd2l0Y2hTdG10KGNvbnN0IEFTVENvbnRleHQgJkMsIFN0bXQgKkluaXQsIFZhckRlY2wgKlZhciwgRXhwciAqY29uZCk7CisgIC8vIFN3aXRjaFN0bXQgaXMgZm9sbG93ZWQgYnkgc2V2ZXJhbCB0cmFpbGluZyBvYmplY3RzLAorICAvLyBzb21lIG9mIHdoaWNoIG9wdGlvbmFsLiBOb3RlIHRoYXQgaXQgd291bGQgYmUgbW9yZSBjb252ZW5pZW50IHRvCisgIC8vIHB1dCB0aGUgb3B0aW9uYWwgdHJhaWxpbmcgb2JqZWN0cyBhdCB0aGUgZW5kIGJ1dCB0aGlzIHdvdWxkIGNoYW5nZQorICAvLyB0aGUgb3JkZXIgaW4gY2hpbGRyZW4oKS4KKyAgLy8gVGhlIHRyYWlsaW5nIG9iamVjdHMgYXJlIGluIG9yZGVyOgorICAvLworICAvLyAqIEEgIlN0bXQgKiIgZm9yIHRoZSBpbml0IHN0YXRlbWVudC4KKyAgLy8gICAgUHJlc2VudCBpZiBhbmQgb25seSBpZiBoYXNJbml0U3RvcmFnZSgpLgorICAvLworICAvLyAqIEEgIlN0bXQgKiIgZm9yIHRoZSBjb25kaXRpb24gdmFyaWFibGUuCisgIC8vICAgIFByZXNlbnQgaWYgYW5kIG9ubHkgaWYgaGFzVmFyU3RvcmFnZSgpLiBUaGlzIGlzIGluIGZhY3QgYSAiRGVjbFN0bXQgKiIuCisgIC8vCisgIC8vICogQSAiU3RtdCAqIiBmb3IgdGhlIGNvbmRpdGlvbi4KKyAgLy8gICAgQWx3YXlzIHByZXNlbnQuIFRoaXMgaXMgaW4gZmFjdCBhbiAiRXhwciAqIi4KKyAgLy8KKyAgLy8gKiBBICJTdG10ICoiIGZvciB0aGUgYm9keS4KKyAgLy8gICAgQWx3YXlzIHByZXNlbnQuCisgIGVudW0geyBJbml0T2Zmc2V0ID0gMCwgQm9keU9mZnNldEZyb21Db25kID0gMSB9OworICBlbnVtIHsgTnVtTWFuZGF0b3J5U3RtdFB0ciA9IDIgfTsKKworICB1bnNpZ25lZCBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxTdG10ICo+KSBjb25zdCB7CisgICAgcmV0dXJuIE51bU1hbmRhdG9yeVN0bXRQdHIgKyBoYXNJbml0U3RvcmFnZSgpICsgaGFzVmFyU3RvcmFnZSgpOworICB9CisKKyAgdW5zaWduZWQgaW5pdE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIEluaXRPZmZzZXQ7IH0KKyAgdW5zaWduZWQgdmFyT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gSW5pdE9mZnNldCArIGhhc0luaXRTdG9yYWdlKCk7IH0KKyAgdW5zaWduZWQgY29uZE9mZnNldCgpIGNvbnN0IHsKKyAgICByZXR1cm4gSW5pdE9mZnNldCArIGhhc0luaXRTdG9yYWdlKCkgKyBoYXNWYXJTdG9yYWdlKCk7CisgIH0KKyAgdW5zaWduZWQgYm9keU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIGNvbmRPZmZzZXQoKSArIEJvZHlPZmZzZXRGcm9tQ29uZDsgfQorCisgIC8vLyBCdWlsZCBhIHN3aXRjaCBzdGF0ZW1lbnQuCisgIFN3aXRjaFN0bXQoY29uc3QgQVNUQ29udGV4dCAmQ3R4LCBTdG10ICpJbml0LCBWYXJEZWNsICpWYXIsIEV4cHIgKkNvbmQpOwogCiAgIC8vLyBCdWlsZCBhIGVtcHR5IHN3aXRjaCBzdGF0ZW1lbnQuCi0gIGV4cGxpY2l0IFN3aXRjaFN0bXQoRW1wdHlTaGVsbCBFbXB0eSkgOiBTdG10KFN3aXRjaFN0bXRDbGFzcywgRW1wdHkpIHt9CisgIGV4cGxpY2l0IFN3aXRjaFN0bXQoRW1wdHlTaGVsbCBFbXB0eSwgYm9vbCBIYXNJbml0LCBib29sIEhhc1Zhcik7CisKK3B1YmxpYzoKKyAgLy8vIENyZWF0ZSBhIHN3aXRjaCBzdGF0ZW1lbnQuCisgIHN0YXRpYyBTd2l0Y2hTdG10ICpDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQ3R4LCBTdG10ICpJbml0LCBWYXJEZWNsICpWYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwciAqQ29uZCk7CisKKyAgLy8vIENyZWF0ZSBhbiBlbXB0eSBzd2l0Y2ggc3RhdGVtZW50IG9wdGlvbmFsbHkgd2l0aCBzdG9yYWdlIGZvcgorICAvLy8gYW4gaW5pdCBleHByZXNzaW9uIGFuZCBhIGNvbmRpdGlvbiB2YXJpYWJsZS4KKyAgc3RhdGljIFN3aXRjaFN0bXQgKkNyZWF0ZUVtcHR5KGNvbnN0IEFTVENvbnRleHQgJkN0eCwgYm9vbCBIYXNJbml0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBIYXNWYXIpOworCisgIC8vLyBUcnVlIGlmIHRoaXMgU3dpdGNoU3RtdCBoYXMgc3RvcmFnZSBmb3IgYW4gaW5pdCBzdGF0ZW1lbnQuCisgIGJvb2wgaGFzSW5pdFN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiBTd2l0Y2hTdG10Qml0cy5IYXNJbml0OyB9CisKKyAgLy8vIFRydWUgaWYgdGhpcyBTd2l0Y2hTdG10IGhhcyBzdG9yYWdlIGZvciBhIGNvbmRpdGlvbiB2YXJpYWJsZS4KKyAgYm9vbCBoYXNWYXJTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gU3dpdGNoU3RtdEJpdHMuSGFzVmFyOyB9CisKKyAgRXhwciAqZ2V0Q29uZCgpIHsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeHByICo+KGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbY29uZE9mZnNldCgpXSk7CisgIH0KKworICBjb25zdCBFeHByICpnZXRDb25kKCkgY29uc3QgeworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEV4cHIgKj4oZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVtjb25kT2Zmc2V0KCldKTsKKyAgfQorCisgIHZvaWQgc2V0Q29uZChFeHByICpDb25kKSB7CisgICAgZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVtjb25kT2Zmc2V0KCldID0gcmVpbnRlcnByZXRfY2FzdDxTdG10ICo+KENvbmQpOworICB9CisKKyAgU3RtdCAqZ2V0Qm9keSgpIHsgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbYm9keU9mZnNldCgpXTsgfQorICBjb25zdCBTdG10ICpnZXRCb2R5KCkgY29uc3QgeworICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW2JvZHlPZmZzZXQoKV07CisgIH0KKworICB2b2lkIHNldEJvZHkoU3RtdCAqQm9keSkgeworICAgIGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbYm9keU9mZnNldCgpXSA9IEJvZHk7CisgIH0KKworICBTdG10ICpnZXRJbml0KCkgeworICAgIHJldHVybiBoYXNJbml0U3RvcmFnZSgpID8gZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVtpbml0T2Zmc2V0KCldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxscHRyOworICB9CisKKyAgY29uc3QgU3RtdCAqZ2V0SW5pdCgpIGNvbnN0IHsKKyAgICByZXR1cm4gaGFzSW5pdFN0b3JhZ2UoKSA/IGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbaW5pdE9mZnNldCgpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbHB0cjsKKyAgfQorCisgIHZvaWQgc2V0SW5pdChTdG10ICpJbml0KSB7CisgICAgYXNzZXJ0KGhhc0luaXRTdG9yYWdlKCkgJiYKKyAgICAgICAgICAgIlRoaXMgc3dpdGNoIHN0YXRlbWVudCBoYXMgbm8gc3RvcmFnZSBmb3IgYW4gaW5pdCBzdGF0ZW1lbnQhIik7CisgICAgZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVtpbml0T2Zmc2V0KCldID0gSW5pdDsKKyAgfQogCiAgIC8vLyBSZXRyaWV2ZSB0aGUgdmFyaWFibGUgZGVjbGFyZWQgaW4gdGhpcyAic3dpdGNoIiBzdGF0ZW1lbnQsIGlmIGFueS4KICAgLy8vCkBAIC0xMDYwLDY0ICsxOTg1LDY5IEBACiAgIC8vLyAgIC8vIC4uLgogICAvLy8gfQogICAvLy8gXGVuZGNvZGUKLSAgVmFyRGVjbCAqZ2V0Q29uZGl0aW9uVmFyaWFibGUoKSBjb25zdDsKLSAgdm9pZCBzZXRDb25kaXRpb25WYXJpYWJsZShjb25zdCBBU1RDb250ZXh0ICZDLCBWYXJEZWNsICpWKTsKKyAgVmFyRGVjbCAqZ2V0Q29uZGl0aW9uVmFyaWFibGUoKTsKKyAgY29uc3QgVmFyRGVjbCAqZ2V0Q29uZGl0aW9uVmFyaWFibGUoKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8U3dpdGNoU3RtdCAqPih0aGlzKS0+Z2V0Q29uZGl0aW9uVmFyaWFibGUoKTsKKyAgfQorCisgIC8vLyBTZXQgdGhlIGNvbmRpdGlvbiB2YXJpYWJsZSBpbiB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQuCisgIC8vLyBUaGUgc3dpdGNoIHN0YXRlbWVudCBtdXN0IGhhdmUgc3RvcmFnZSBmb3IgaXQuCisgIHZvaWQgc2V0Q29uZGl0aW9uVmFyaWFibGUoY29uc3QgQVNUQ29udGV4dCAmQ3R4LCBWYXJEZWNsICpWRCk7CiAKICAgLy8vIElmIHRoaXMgU3dpdGNoU3RtdCBoYXMgYSBjb25kaXRpb24gdmFyaWFibGUsIHJldHVybiB0aGUgZmF1eCBEZWNsU3RtdAogICAvLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBjcmVhdGlvbiBvZiB0aGF0IGNvbmRpdGlvbiB2YXJpYWJsZS4KLSAgY29uc3QgRGVjbFN0bXQgKmdldENvbmRpdGlvblZhcmlhYmxlRGVjbFN0bXQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RGVjbFN0bXQqPihTdWJFeHByc1tWQVJdKTsKKyAgRGVjbFN0bXQgKmdldENvbmRpdGlvblZhcmlhYmxlRGVjbFN0bXQoKSB7CisgICAgcmV0dXJuIGhhc1ZhclN0b3JhZ2UoKSA/IHN0YXRpY19jYXN0PERlY2xTdG10ICo+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVt2YXJPZmZzZXQoKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxwdHI7CiAgIH0KIAotICBTdG10ICpnZXRJbml0KCkgeyByZXR1cm4gU3ViRXhwcnNbSU5JVF07IH0KLSAgY29uc3QgU3RtdCAqZ2V0SW5pdCgpIGNvbnN0IHsgcmV0dXJuIFN1YkV4cHJzW0lOSVRdOyB9Ci0gIHZvaWQgc2V0SW5pdChTdG10ICpTKSB7IFN1YkV4cHJzW0lOSVRdID0gUzsgfQotICBjb25zdCBFeHByICpnZXRDb25kKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeHByKj4oU3ViRXhwcnNbQ09ORF0pO30KLSAgY29uc3QgU3RtdCAqZ2V0Qm9keSgpIGNvbnN0IHsgcmV0dXJuIFN1YkV4cHJzW0JPRFldOyB9Ci0gIGNvbnN0IFN3aXRjaENhc2UgKmdldFN3aXRjaENhc2VMaXN0KCkgY29uc3QgeyByZXR1cm4gRmlyc3RDYXNlLmdldFBvaW50ZXIoKTsgfQorICBjb25zdCBEZWNsU3RtdCAqZ2V0Q29uZGl0aW9uVmFyaWFibGVEZWNsU3RtdCgpIGNvbnN0IHsKKyAgICByZXR1cm4gaGFzVmFyU3RvcmFnZSgpID8gc3RhdGljX2Nhc3Q8RGVjbFN0bXQgKj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW3Zhck9mZnNldCgpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbHB0cjsKKyAgfQogCi0gIEV4cHIgKmdldENvbmQoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEV4cHIqPihTdWJFeHByc1tDT05EXSk7fQotICB2b2lkIHNldENvbmQoRXhwciAqRSkgeyBTdWJFeHByc1tDT05EXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RtdCAqPihFKTsgfQotICBTdG10ICpnZXRCb2R5KCkgeyByZXR1cm4gU3ViRXhwcnNbQk9EWV07IH0KLSAgdm9pZCBzZXRCb2R5KFN0bXQgKlMpIHsgU3ViRXhwcnNbQk9EWV0gPSBTOyB9Ci0gIFN3aXRjaENhc2UgKmdldFN3aXRjaENhc2VMaXN0KCkgeyByZXR1cm4gRmlyc3RDYXNlLmdldFBvaW50ZXIoKTsgfQorICBTd2l0Y2hDYXNlICpnZXRTd2l0Y2hDYXNlTGlzdCgpIHsgcmV0dXJuIEZpcnN0Q2FzZTsgfQorICBjb25zdCBTd2l0Y2hDYXNlICpnZXRTd2l0Y2hDYXNlTGlzdCgpIGNvbnN0IHsgcmV0dXJuIEZpcnN0Q2FzZTsgfQorICB2b2lkIHNldFN3aXRjaENhc2VMaXN0KFN3aXRjaENhc2UgKlNDKSB7IEZpcnN0Q2FzZSA9IFNDOyB9CiAKLSAgLy8vIFNldCB0aGUgY2FzZSBsaXN0IGZvciB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQuCi0gIHZvaWQgc2V0U3dpdGNoQ2FzZUxpc3QoU3dpdGNoQ2FzZSAqU0MpIHsgRmlyc3RDYXNlLnNldFBvaW50ZXIoU0MpOyB9Ci0KLSAgU291cmNlTG9jYXRpb24gZ2V0U3dpdGNoTG9jKCkgY29uc3QgeyByZXR1cm4gU3dpdGNoTG9jOyB9Ci0gIHZvaWQgc2V0U3dpdGNoTG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgU3dpdGNoTG9jID0gTDsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRTd2l0Y2hMb2MoKSBjb25zdCB7IHJldHVybiBTd2l0Y2hTdG10Qml0cy5Td2l0Y2hMb2M7IH0KKyAgdm9pZCBzZXRTd2l0Y2hMb2MoU291cmNlTG9jYXRpb24gTCkgeyBTd2l0Y2hTdG10Qml0cy5Td2l0Y2hMb2MgPSBMOyB9CiAKICAgdm9pZCBzZXRCb2R5KFN0bXQgKlMsIFNvdXJjZUxvY2F0aW9uIFNMKSB7Ci0gICAgU3ViRXhwcnNbQk9EWV0gPSBTOwotICAgIFN3aXRjaExvYyA9IFNMOworICAgIHNldEJvZHkoUyk7CisgICAgc2V0U3dpdGNoTG9jKFNMKTsKICAgfQogCiAgIHZvaWQgYWRkU3dpdGNoQ2FzZShTd2l0Y2hDYXNlICpTQykgewotICAgIGFzc2VydCghU0MtPmdldE5leHRTd2l0Y2hDYXNlKCkKLSAgICAgICAgICAgJiYgImNhc2UvZGVmYXVsdCBhbHJlYWR5IGFkZGVkIHRvIGEgc3dpdGNoIik7Ci0gICAgU0MtPnNldE5leHRTd2l0Y2hDYXNlKEZpcnN0Q2FzZS5nZXRQb2ludGVyKCkpOwotICAgIEZpcnN0Q2FzZS5zZXRQb2ludGVyKFNDKTsKKyAgICBhc3NlcnQoIVNDLT5nZXROZXh0U3dpdGNoQ2FzZSgpICYmCisgICAgICAgICAgICJjYXNlL2RlZmF1bHQgYWxyZWFkeSBhZGRlZCB0byBhIHN3aXRjaCIpOworICAgIFNDLT5zZXROZXh0U3dpdGNoQ2FzZShGaXJzdENhc2UpOworICAgIEZpcnN0Q2FzZSA9IFNDOwogICB9CiAKICAgLy8vIFNldCBhIGZsYWcgaW4gdGhlIFN3aXRjaFN0bXQgaW5kaWNhdGluZyB0aGF0IGlmIHRoZSAnc3dpdGNoIChYKScgaXMgYQogICAvLy8gc3dpdGNoIG92ZXIgYW4gZW51bSB2YWx1ZSB0aGVuIGFsbCBjYXNlcyBoYXZlIGJlZW4gZXhwbGljaXRseSBjb3ZlcmVkLgotICB2b2lkIHNldEFsbEVudW1DYXNlc0NvdmVyZWQoKSB7IEZpcnN0Q2FzZS5zZXRJbnQodHJ1ZSk7IH0KKyAgdm9pZCBzZXRBbGxFbnVtQ2FzZXNDb3ZlcmVkKCkgeyBTd2l0Y2hTdG10Qml0cy5BbGxFbnVtQ2FzZXNDb3ZlcmVkID0gdHJ1ZTsgfQogCiAgIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhlIFN3aXRjaFN0bXQgaXMgYSBzd2l0Y2ggb2YgYW4gZW51bSB2YWx1ZSBhbmQgYWxsIGNhc2VzCiAgIC8vLyBoYXZlIGJlZW4gZXhwbGljaXRseSBjb3ZlcmVkLgotICBib29sIGlzQWxsRW51bUNhc2VzQ292ZXJlZCgpIGNvbnN0IHsgcmV0dXJuIEZpcnN0Q2FzZS5nZXRJbnQoKTsgfQorICBib29sIGlzQWxsRW51bUNhc2VzQ292ZXJlZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gU3dpdGNoU3RtdEJpdHMuQWxsRW51bUNhc2VzQ292ZXJlZDsKKyAgfQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBTd2l0Y2hMb2M7IH0KLQorICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IHsgcmV0dXJuIGdldFN3aXRjaExvYygpOyB9CiAgIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgewotICAgIHJldHVybiBTdWJFeHByc1tCT0RZXSA/IFN1YkV4cHJzW0JPRFldLT5nZXRFbmRMb2MoKQotICAgICAgICAgICAgICAgICAgICAgICAgICA6IFN1YkV4cHJzW0NPTkRdLT5nZXRFbmRMb2MoKTsKKyAgICByZXR1cm4gZ2V0Qm9keSgpID8gZ2V0Qm9keSgpLT5nZXRFbmRMb2MoKQorICAgICAgICAgICAgICAgICAgICAgOiByZWludGVycHJldF9jYXN0PGNvbnN0IFN0bXQgKj4oZ2V0Q29uZCgpKS0+Z2V0RW5kTG9jKCk7CiAgIH0KIAogICAvLyBJdGVyYXRvcnMKICAgY2hpbGRfcmFuZ2UgY2hpbGRyZW4oKSB7Ci0gICAgcmV0dXJuIGNoaWxkX3JhbmdlKCZTdWJFeHByc1swXSwgJlN1YkV4cHJzWzBdK0VORF9FWFBSKTsKKyAgICByZXR1cm4gY2hpbGRfcmFuZ2UoZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1UcmFpbGluZ09iamVjdHMoT3ZlcmxvYWRUb2tlbjxTdG10ICo+KCkpKTsKICAgfQogCiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgU3RtdCAqVCkgewpAQCAtMTEyNiwxNyArMjA1Niw3NSBAQAogfTsKIAogLy8vIFdoaWxlU3RtdCAtIFRoaXMgcmVwcmVzZW50cyBhICd3aGlsZScgc3RtdC4KLWNsYXNzIFdoaWxlU3RtdCA6IHB1YmxpYyBTdG10IHsKLSAgU291cmNlTG9jYXRpb24gV2hpbGVMb2M7Ci0gIGVudW0geyBWQVIsIENPTkQsIEJPRFksIEVORF9FWFBSIH07Ci0gIFN0bXQqIFN1YkV4cHJzW0VORF9FWFBSXTsKK2NsYXNzIFdoaWxlU3RtdCBmaW5hbCA6IHB1YmxpYyBTdG10LAorICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8V2hpbGVTdG10LCBTdG10ICo+IHsKKyAgZnJpZW5kIFRyYWlsaW5nT2JqZWN0czsKIAotcHVibGljOgotICBXaGlsZVN0bXQoY29uc3QgQVNUQ29udGV4dCAmQywgVmFyRGVjbCAqVmFyLCBFeHByICpjb25kLCBTdG10ICpib2R5LAorICAvLyBXaGlsZVN0bXQgaXMgZm9sbG93ZWQgYnkgc2V2ZXJhbCB0cmFpbGluZyBvYmplY3RzLAorICAvLyBzb21lIG9mIHdoaWNoIG9wdGlvbmFsLiBOb3RlIHRoYXQgaXQgd291bGQgYmUgbW9yZQorICAvLyBjb252ZW5pZW50IHRvIHB1dCB0aGUgb3B0aW9uYWwgdHJhaWxpbmcgb2JqZWN0IGF0IHRoZSBlbmQKKyAgLy8gYnV0IHRoaXMgd291bGQgYWZmZWN0IGNoaWxkcmVuKCkuCisgIC8vIFRoZSB0cmFpbGluZyBvYmplY3RzIGFyZSBpbiBvcmRlcjoKKyAgLy8KKyAgLy8gKiBBICJTdG10ICoiIGZvciB0aGUgY29uZGl0aW9uIHZhcmlhYmxlLgorICAvLyAgICBQcmVzZW50IGlmIGFuZCBvbmx5IGlmIGhhc1ZhclN0b3JhZ2UoKS4gVGhpcyBpcyBpbiBmYWN0IGEgIkRlY2xTdG10ICoiLgorICAvLworICAvLyAqIEEgIlN0bXQgKiIgZm9yIHRoZSBjb25kaXRpb24uCisgIC8vICAgIEFsd2F5cyBwcmVzZW50LiBUaGlzIGlzIGluIGZhY3QgYW4gIkV4cHIgKiIuCisgIC8vCisgIC8vICogQSAiU3RtdCAqIiBmb3IgdGhlIGJvZHkuCisgIC8vICAgIEFsd2F5cyBwcmVzZW50LgorICAvLworICBlbnVtIHsgVmFyT2Zmc2V0ID0gMCwgQm9keU9mZnNldEZyb21Db25kID0gMSB9OworICBlbnVtIHsgTnVtTWFuZGF0b3J5U3RtdFB0ciA9IDIgfTsKKworICB1bnNpZ25lZCB2YXJPZmZzZXQoKSBjb25zdCB7IHJldHVybiBWYXJPZmZzZXQ7IH0KKyAgdW5zaWduZWQgY29uZE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIFZhck9mZnNldCArIGhhc1ZhclN0b3JhZ2UoKTsgfQorICB1bnNpZ25lZCBib2R5T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gY29uZE9mZnNldCgpICsgQm9keU9mZnNldEZyb21Db25kOyB9CisKKyAgdW5zaWduZWQgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2FkVG9rZW48U3RtdCAqPikgY29uc3QgeworICAgIHJldHVybiBOdW1NYW5kYXRvcnlTdG10UHRyICsgaGFzVmFyU3RvcmFnZSgpOworICB9CisKKyAgLy8vIEJ1aWxkIGEgd2hpbGUgc3RhdGVtZW50LgorICBXaGlsZVN0bXQoY29uc3QgQVNUQ29udGV4dCAmQ3R4LCBWYXJEZWNsICpWYXIsIEV4cHIgKkNvbmQsIFN0bXQgKkJvZHksCiAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBXTCk7CiAKICAgLy8vIEJ1aWxkIGFuIGVtcHR5IHdoaWxlIHN0YXRlbWVudC4KLSAgZXhwbGljaXQgV2hpbGVTdG10KEVtcHR5U2hlbGwgRW1wdHkpIDogU3RtdChXaGlsZVN0bXRDbGFzcywgRW1wdHkpIHt9CisgIGV4cGxpY2l0IFdoaWxlU3RtdChFbXB0eVNoZWxsIEVtcHR5LCBib29sIEhhc1Zhcik7CisKK3B1YmxpYzoKKyAgLy8vIENyZWF0ZSBhIHdoaWxlIHN0YXRlbWVudC4KKyAgc3RhdGljIFdoaWxlU3RtdCAqQ3JlYXRlKGNvbnN0IEFTVENvbnRleHQgJkN0eCwgVmFyRGVjbCAqVmFyLCBFeHByICpDb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RtdCAqQm9keSwgU291cmNlTG9jYXRpb24gV0wpOworCisgIC8vLyBDcmVhdGUgYW4gZW1wdHkgd2hpbGUgc3RhdGVtZW50IG9wdGlvbmFsbHkgd2l0aCBzdG9yYWdlIGZvcgorICAvLy8gYSBjb25kaXRpb24gdmFyaWFibGUuCisgIHN0YXRpYyBXaGlsZVN0bXQgKkNyZWF0ZUVtcHR5KGNvbnN0IEFTVENvbnRleHQgJkN0eCwgYm9vbCBIYXNWYXIpOworCisgIC8vLyBUcnVlIGlmIHRoaXMgV2hpbGVTdG10IGhhcyBzdG9yYWdlIGZvciBhIGNvbmRpdGlvbiB2YXJpYWJsZS4KKyAgYm9vbCBoYXNWYXJTdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gV2hpbGVTdG10Qml0cy5IYXNWYXI7IH0KKworICBFeHByICpnZXRDb25kKCkgeworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEV4cHIgKj4oZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVtjb25kT2Zmc2V0KCldKTsKKyAgfQorCisgIGNvbnN0IEV4cHIgKmdldENvbmQoKSBjb25zdCB7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RXhwciAqPihnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW2NvbmRPZmZzZXQoKV0pOworICB9CisKKyAgdm9pZCBzZXRDb25kKEV4cHIgKkNvbmQpIHsKKyAgICBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpW2NvbmRPZmZzZXQoKV0gPSByZWludGVycHJldF9jYXN0PFN0bXQgKj4oQ29uZCk7CisgIH0KKworICBTdG10ICpnZXRCb2R5KCkgeyByZXR1cm4gZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVtib2R5T2Zmc2V0KCldOyB9CisgIGNvbnN0IFN0bXQgKmdldEJvZHkoKSBjb25zdCB7CisgICAgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbYm9keU9mZnNldCgpXTsKKyAgfQorCisgIHZvaWQgc2V0Qm9keShTdG10ICpCb2R5KSB7CisgICAgZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVtib2R5T2Zmc2V0KCldID0gQm9keTsKKyAgfQogCiAgIC8vLyBSZXRyaWV2ZSB0aGUgdmFyaWFibGUgZGVjbGFyZWQgaW4gdGhpcyAid2hpbGUiIHN0YXRlbWVudCwgaWYgYW55LgogICAvLy8KQEAgLTExNDYsMjkgKzIxMzQsMzUgQEAKICAgLy8vICAgLy8gLi4uCiAgIC8vLyB9CiAgIC8vLyBcZW5kY29kZQotICBWYXJEZWNsICpnZXRDb25kaXRpb25WYXJpYWJsZSgpIGNvbnN0OwotICB2b2lkIHNldENvbmRpdGlvblZhcmlhYmxlKGNvbnN0IEFTVENvbnRleHQgJkMsIFZhckRlY2wgKlYpOworICBWYXJEZWNsICpnZXRDb25kaXRpb25WYXJpYWJsZSgpOworICBjb25zdCBWYXJEZWNsICpnZXRDb25kaXRpb25WYXJpYWJsZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxXaGlsZVN0bXQgKj4odGhpcyktPmdldENvbmRpdGlvblZhcmlhYmxlKCk7CisgIH0KKworICAvLy8gU2V0IHRoZSBjb25kaXRpb24gdmFyaWFibGUgb2YgdGhpcyB3aGlsZSBzdGF0ZW1lbnQuCisgIC8vLyBUaGUgd2hpbGUgc3RhdGVtZW50IG11c3QgaGF2ZSBzdG9yYWdlIGZvciBpdC4KKyAgdm9pZCBzZXRDb25kaXRpb25WYXJpYWJsZShjb25zdCBBU1RDb250ZXh0ICZDdHgsIFZhckRlY2wgKlYpOwogCiAgIC8vLyBJZiB0aGlzIFdoaWxlU3RtdCBoYXMgYSBjb25kaXRpb24gdmFyaWFibGUsIHJldHVybiB0aGUgZmF1eCBEZWNsU3RtdAogICAvLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBjcmVhdGlvbiBvZiB0aGF0IGNvbmRpdGlvbiB2YXJpYWJsZS4KLSAgY29uc3QgRGVjbFN0bXQgKmdldENvbmRpdGlvblZhcmlhYmxlRGVjbFN0bXQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RGVjbFN0bXQqPihTdWJFeHByc1tWQVJdKTsKKyAgRGVjbFN0bXQgKmdldENvbmRpdGlvblZhcmlhYmxlRGVjbFN0bXQoKSB7CisgICAgcmV0dXJuIGhhc1ZhclN0b3JhZ2UoKSA/IHN0YXRpY19jYXN0PERlY2xTdG10ICo+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VHJhaWxpbmdPYmplY3RzPFN0bXQgKj4oKVt2YXJPZmZzZXQoKV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxwdHI7CiAgIH0KIAotICBFeHByICpnZXRDb25kKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeHByKj4oU3ViRXhwcnNbQ09ORF0pOyB9Ci0gIGNvbnN0IEV4cHIgKmdldENvbmQoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PEV4cHIqPihTdWJFeHByc1tDT05EXSk7fQotICB2b2lkIHNldENvbmQoRXhwciAqRSkgeyBTdWJFeHByc1tDT05EXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RtdCo+KEUpOyB9Ci0gIFN0bXQgKmdldEJvZHkoKSB7IHJldHVybiBTdWJFeHByc1tCT0RZXTsgfQotICBjb25zdCBTdG10ICpnZXRCb2R5KCkgY29uc3QgeyByZXR1cm4gU3ViRXhwcnNbQk9EWV07IH0KLSAgdm9pZCBzZXRCb2R5KFN0bXQgKlMpIHsgU3ViRXhwcnNbQk9EWV0gPSBTOyB9CisgIGNvbnN0IERlY2xTdG10ICpnZXRDb25kaXRpb25WYXJpYWJsZURlY2xTdG10KCkgY29uc3QgeworICAgIHJldHVybiBoYXNWYXJTdG9yYWdlKCkgPyBzdGF0aWNfY2FzdDxEZWNsU3RtdCAqPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFRyYWlsaW5nT2JqZWN0czxTdG10ICo+KClbdmFyT2Zmc2V0KCldKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxscHRyOworICB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0V2hpbGVMb2MoKSBjb25zdCB7IHJldHVybiBXaGlsZUxvYzsgfQotICB2b2lkIHNldFdoaWxlTG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgV2hpbGVMb2MgPSBMOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldFdoaWxlTG9jKCkgY29uc3QgeyByZXR1cm4gV2hpbGVTdG10Qml0cy5XaGlsZUxvYzsgfQorICB2b2lkIHNldFdoaWxlTG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgV2hpbGVTdG10Qml0cy5XaGlsZUxvYyA9IEw7IH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gV2hpbGVMb2M7IH0KLQorICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IHsgcmV0dXJuIGdldFdoaWxlTG9jKCk7IH0KICAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7Ci0gICAgcmV0dXJuIFN1YkV4cHJzW0JPRFldLT5nZXRFbmRMb2MoKTsKKyAgICByZXR1cm4gZ2V0Qm9keSgpLT5nZXRFbmRMb2MoKTsKICAgfQogCiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgU3RtdCAqVCkgewpAQCAtMTE3Nyw0NiArMjE3MSw1MSBAQAogCiAgIC8vIEl0ZXJhdG9ycwogICBjaGlsZF9yYW5nZSBjaGlsZHJlbigpIHsKLSAgICByZXR1cm4gY2hpbGRfcmFuZ2UoJlN1YkV4cHJzWzBdLCAmU3ViRXhwcnNbMF0rRU5EX0VYUFIpOworICAgIHJldHVybiBjaGlsZF9yYW5nZShnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpLAorICAgICAgICAgICAgICAgICAgICAgICBnZXRUcmFpbGluZ09iamVjdHM8U3RtdCAqPigpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2VuPFN0bXQgKj4oKSkpOwogICB9CiB9OwogCiAvLy8gRG9TdG10IC0gVGhpcyByZXByZXNlbnRzIGEgJ2RvL3doaWxlJyBzdG10LgogY2xhc3MgRG9TdG10IDogcHVibGljIFN0bXQgewotICBTb3VyY2VMb2NhdGlvbiBEb0xvYzsKICAgZW51bSB7IEJPRFksIENPTkQsIEVORF9FWFBSIH07Ci0gIFN0bXQqIFN1YkV4cHJzW0VORF9FWFBSXTsKKyAgU3RtdCAqU3ViRXhwcnNbRU5EX0VYUFJdOwogICBTb3VyY2VMb2NhdGlvbiBXaGlsZUxvYzsKLSAgU291cmNlTG9jYXRpb24gUlBhcmVuTG9jOyAgLy8gTG9jYXRpb24gb2YgZmluYWwgJyknIGluIGRvIHN0bXQgY29uZGl0aW9uLgorICBTb3VyY2VMb2NhdGlvbiBSUGFyZW5Mb2M7IC8vIExvY2F0aW9uIG9mIGZpbmFsICcpJyBpbiBkbyBzdG10IGNvbmRpdGlvbi4KIAogcHVibGljOgotICBEb1N0bXQoU3RtdCAqYm9keSwgRXhwciAqY29uZCwgU291cmNlTG9jYXRpb24gREwsIFNvdXJjZUxvY2F0aW9uIFdMLAorICBEb1N0bXQoU3RtdCAqQm9keSwgRXhwciAqQ29uZCwgU291cmNlTG9jYXRpb24gREwsIFNvdXJjZUxvY2F0aW9uIFdMLAogICAgICAgICAgU291cmNlTG9jYXRpb24gUlApCi0gICAgOiBTdG10KERvU3RtdENsYXNzKSwgRG9Mb2MoREwpLCBXaGlsZUxvYyhXTCksIFJQYXJlbkxvYyhSUCkgewotICAgIFN1YkV4cHJzW0NPTkRdID0gcmVpbnRlcnByZXRfY2FzdDxTdG10Kj4oY29uZCk7Ci0gICAgU3ViRXhwcnNbQk9EWV0gPSBib2R5OworICAgICAgOiBTdG10KERvU3RtdENsYXNzKSwgV2hpbGVMb2MoV0wpLCBSUGFyZW5Mb2MoUlApIHsKKyAgICBzZXRDb25kKENvbmQpOworICAgIHNldEJvZHkoQm9keSk7CisgICAgc2V0RG9Mb2MoREwpOwogICB9CiAKICAgLy8vIEJ1aWxkIGFuIGVtcHR5IGRvLXdoaWxlIHN0YXRlbWVudC4KICAgZXhwbGljaXQgRG9TdG10KEVtcHR5U2hlbGwgRW1wdHkpIDogU3RtdChEb1N0bXRDbGFzcywgRW1wdHkpIHt9CiAKLSAgRXhwciAqZ2V0Q29uZCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RXhwcio+KFN1YkV4cHJzW0NPTkRdKTsgfQotICBjb25zdCBFeHByICpnZXRDb25kKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeHByKj4oU3ViRXhwcnNbQ09ORF0pO30KLSAgdm9pZCBzZXRDb25kKEV4cHIgKkUpIHsgU3ViRXhwcnNbQ09ORF0gPSByZWludGVycHJldF9jYXN0PFN0bXQqPihFKTsgfQorICBFeHByICpnZXRDb25kKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeHByICo+KFN1YkV4cHJzW0NPTkRdKTsgfQorICBjb25zdCBFeHByICpnZXRDb25kKCkgY29uc3QgeworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEV4cHIgKj4oU3ViRXhwcnNbQ09ORF0pOworICB9CisKKyAgdm9pZCBzZXRDb25kKEV4cHIgKkNvbmQpIHsgU3ViRXhwcnNbQ09ORF0gPSByZWludGVycHJldF9jYXN0PFN0bXQgKj4oQ29uZCk7IH0KKwogICBTdG10ICpnZXRCb2R5KCkgeyByZXR1cm4gU3ViRXhwcnNbQk9EWV07IH0KICAgY29uc3QgU3RtdCAqZ2V0Qm9keSgpIGNvbnN0IHsgcmV0dXJuIFN1YkV4cHJzW0JPRFldOyB9Ci0gIHZvaWQgc2V0Qm9keShTdG10ICpTKSB7IFN1YkV4cHJzW0JPRFldID0gUzsgfQorICB2b2lkIHNldEJvZHkoU3RtdCAqQm9keSkgeyBTdWJFeHByc1tCT0RZXSA9IEJvZHk7IH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXREb0xvYygpIGNvbnN0IHsgcmV0dXJuIERvTG9jOyB9Ci0gIHZvaWQgc2V0RG9Mb2MoU291cmNlTG9jYXRpb24gTCkgeyBEb0xvYyA9IEw7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0RG9Mb2MoKSBjb25zdCB7IHJldHVybiBEb1N0bXRCaXRzLkRvTG9jOyB9CisgIHZvaWQgc2V0RG9Mb2MoU291cmNlTG9jYXRpb24gTCkgeyBEb1N0bXRCaXRzLkRvTG9jID0gTDsgfQogICBTb3VyY2VMb2NhdGlvbiBnZXRXaGlsZUxvYygpIGNvbnN0IHsgcmV0dXJuIFdoaWxlTG9jOyB9CiAgIHZvaWQgc2V0V2hpbGVMb2MoU291cmNlTG9jYXRpb24gTCkgeyBXaGlsZUxvYyA9IEw7IH0KLQogICBTb3VyY2VMb2NhdGlvbiBnZXRSUGFyZW5Mb2MoKSBjb25zdCB7IHJldHVybiBSUGFyZW5Mb2M7IH0KICAgdm9pZCBzZXRSUGFyZW5Mb2MoU291cmNlTG9jYXRpb24gTCkgeyBSUGFyZW5Mb2MgPSBMOyB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIERvTG9jOyB9Ci0gIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gUlBhcmVuTG9jOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgeyByZXR1cm4gZ2V0RG9Mb2MoKTsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCB7IHJldHVybiBnZXRSUGFyZW5Mb2MoKTsgfQogCiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgU3RtdCAqVCkgewogICAgIHJldHVybiBULT5nZXRTdG10Q2xhc3MoKSA9PSBEb1N0bXRDbGFzczsKQEAgLTEyMjQsNyArMjIyMyw3IEBACiAKICAgLy8gSXRlcmF0b3JzCiAgIGNoaWxkX3JhbmdlIGNoaWxkcmVuKCkgewotICAgIHJldHVybiBjaGlsZF9yYW5nZSgmU3ViRXhwcnNbMF0sICZTdWJFeHByc1swXStFTkRfRVhQUik7CisgICAgcmV0dXJuIGNoaWxkX3JhbmdlKCZTdWJFeHByc1swXSwgJlN1YkV4cHJzWzBdICsgRU5EX0VYUFIpOwogICB9CiB9OwogCkBAIC0xMjMyLDcgKzIyMzEsNiBAQAogLy8vIHRoZSBpbml0L2NvbmQvaW5jIHBhcnRzIG9mIHRoZSBGb3JTdG10IHdpbGwgYmUgbnVsbCBpZiB0aGV5IHdlcmUgbm90CiAvLy8gc3BlY2lmaWVkIGluIHRoZSBzb3VyY2UuCiBjbGFzcyBGb3JTdG10IDogcHVibGljIFN0bXQgewotICBTb3VyY2VMb2NhdGlvbiBGb3JMb2M7CiAgIGVudW0geyBJTklULCBDT05EVkFSLCBDT05ELCBJTkMsIEJPRFksIEVORF9FWFBSIH07CiAgIFN0bXQqIFN1YkV4cHJzW0VORF9FWFBSXTsgLy8gU3ViRXhwcnNbSU5JVF0gaXMgYW4gZXhwcmVzc2lvbiBvciBkZWNsc3RtdC4KICAgU291cmNlTG9jYXRpb24gTFBhcmVuTG9jLCBSUGFyZW5Mb2M7CkBAIC0xMjc4LDE4ICsyMjc2LDE1IEBACiAgIHZvaWQgc2V0SW5jKEV4cHIgKkUpIHsgU3ViRXhwcnNbSU5DXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RtdCo+KEUpOyB9CiAgIHZvaWQgc2V0Qm9keShTdG10ICpTKSB7IFN1YkV4cHJzW0JPRFldID0gUzsgfQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldEZvckxvYygpIGNvbnN0IHsgcmV0dXJuIEZvckxvYzsgfQotICB2b2lkIHNldEZvckxvYyhTb3VyY2VMb2NhdGlvbiBMKSB7IEZvckxvYyA9IEw7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0Rm9yTG9jKCkgY29uc3QgeyByZXR1cm4gRm9yU3RtdEJpdHMuRm9yTG9jOyB9CisgIHZvaWQgc2V0Rm9yTG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgRm9yU3RtdEJpdHMuRm9yTG9jID0gTDsgfQogICBTb3VyY2VMb2NhdGlvbiBnZXRMUGFyZW5Mb2MoKSBjb25zdCB7IHJldHVybiBMUGFyZW5Mb2M7IH0KICAgdm9pZCBzZXRMUGFyZW5Mb2MoU291cmNlTG9jYXRpb24gTCkgeyBMUGFyZW5Mb2MgPSBMOyB9CiAgIFNvdXJjZUxvY2F0aW9uIGdldFJQYXJlbkxvYygpIGNvbnN0IHsgcmV0dXJuIFJQYXJlbkxvYzsgfQogICB2b2lkIHNldFJQYXJlbkxvYyhTb3VyY2VMb2NhdGlvbiBMKSB7IFJQYXJlbkxvYyA9IEw7IH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gRm9yTG9jOyB9Ci0KLSAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7Ci0gICAgcmV0dXJuIFN1YkV4cHJzW0JPRFldLT5nZXRFbmRMb2MoKTsKLSAgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IHsgcmV0dXJuIGdldEZvckxvYygpOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IHsgcmV0dXJuIGdldEJvZHkoKS0+Z2V0RW5kTG9jKCk7IH0KIAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFN0bXQgKlQpIHsKICAgICByZXR1cm4gVC0+Z2V0U3RtdENsYXNzKCkgPT0gRm9yU3RtdENsYXNzOwpAQCAtMTMwNCwxMiArMjI5OSwxMyBAQAogLy8vIEdvdG9TdG10IC0gVGhpcyByZXByZXNlbnRzIGEgZGlyZWN0IGdvdG8uCiBjbGFzcyBHb3RvU3RtdCA6IHB1YmxpYyBTdG10IHsKICAgTGFiZWxEZWNsICpMYWJlbDsKLSAgU291cmNlTG9jYXRpb24gR290b0xvYzsKICAgU291cmNlTG9jYXRpb24gTGFiZWxMb2M7CiAKIHB1YmxpYzoKICAgR290b1N0bXQoTGFiZWxEZWNsICpsYWJlbCwgU291cmNlTG9jYXRpb24gR0wsIFNvdXJjZUxvY2F0aW9uIExMKQotICAgICAgOiBTdG10KEdvdG9TdG10Q2xhc3MpLCBMYWJlbChsYWJlbCksIEdvdG9Mb2MoR0wpLCBMYWJlbExvYyhMTCkge30KKyAgICAgIDogU3RtdChHb3RvU3RtdENsYXNzKSwgTGFiZWwobGFiZWwpLCBMYWJlbExvYyhMTCkgeworICAgIHNldEdvdG9Mb2MoR0wpOworICB9CiAKICAgLy8vIEJ1aWxkIGFuIGVtcHR5IGdvdG8gc3RhdGVtZW50LgogICBleHBsaWNpdCBHb3RvU3RtdChFbXB0eVNoZWxsIEVtcHR5KSA6IFN0bXQoR290b1N0bXRDbGFzcywgRW1wdHkpIHt9CkBAIC0xMzE3LDEzICsyMzEzLDEzIEBACiAgIExhYmVsRGVjbCAqZ2V0TGFiZWwoKSBjb25zdCB7IHJldHVybiBMYWJlbDsgfQogICB2b2lkIHNldExhYmVsKExhYmVsRGVjbCAqRCkgeyBMYWJlbCA9IEQ7IH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRHb3RvTG9jKCkgY29uc3QgeyByZXR1cm4gR290b0xvYzsgfQotICB2b2lkIHNldEdvdG9Mb2MoU291cmNlTG9jYXRpb24gTCkgeyBHb3RvTG9jID0gTDsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRHb3RvTG9jKCkgY29uc3QgeyByZXR1cm4gR290b1N0bXRCaXRzLkdvdG9Mb2M7IH0KKyAgdm9pZCBzZXRHb3RvTG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgR290b1N0bXRCaXRzLkdvdG9Mb2MgPSBMOyB9CiAgIFNvdXJjZUxvY2F0aW9uIGdldExhYmVsTG9jKCkgY29uc3QgeyByZXR1cm4gTGFiZWxMb2M7IH0KICAgdm9pZCBzZXRMYWJlbExvYyhTb3VyY2VMb2NhdGlvbiBMKSB7IExhYmVsTG9jID0gTDsgfQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBHb3RvTG9jOyB9Ci0gIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gTGFiZWxMb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCB7IHJldHVybiBnZXRHb3RvTG9jKCk7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0RW5kTG9jKCkgY29uc3QgeyByZXR1cm4gZ2V0TGFiZWxMb2MoKTsgfQogCiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgU3RtdCAqVCkgewogICAgIHJldHVybiBULT5nZXRTdG10Q2xhc3MoKSA9PSBHb3RvU3RtdENsYXNzOwpAQCAtMTMzNywzNyArMjMzMywzOSBAQAogCiAvLy8gSW5kaXJlY3RHb3RvU3RtdCAtIFRoaXMgcmVwcmVzZW50cyBhbiBpbmRpcmVjdCBnb3RvLgogY2xhc3MgSW5kaXJlY3RHb3RvU3RtdCA6IHB1YmxpYyBTdG10IHsKLSAgU291cmNlTG9jYXRpb24gR290b0xvYzsKICAgU291cmNlTG9jYXRpb24gU3RhckxvYzsKICAgU3RtdCAqVGFyZ2V0OwogCiBwdWJsaWM6Ci0gIEluZGlyZWN0R290b1N0bXQoU291cmNlTG9jYXRpb24gZ290b0xvYywgU291cmNlTG9jYXRpb24gc3RhckxvYywKLSAgICAgICAgICAgICAgICAgICBFeHByICp0YXJnZXQpCi0gICAgOiBTdG10KEluZGlyZWN0R290b1N0bXRDbGFzcyksIEdvdG9Mb2MoZ290b0xvYyksIFN0YXJMb2Moc3RhckxvYyksCi0gICAgICBUYXJnZXQoKFN0bXQqKXRhcmdldCkge30KKyAgSW5kaXJlY3RHb3RvU3RtdChTb3VyY2VMb2NhdGlvbiBnb3RvTG9jLCBTb3VyY2VMb2NhdGlvbiBzdGFyTG9jLCBFeHByICp0YXJnZXQpCisgICAgICA6IFN0bXQoSW5kaXJlY3RHb3RvU3RtdENsYXNzKSwgU3RhckxvYyhzdGFyTG9jKSB7CisgICAgc2V0VGFyZ2V0KHRhcmdldCk7CisgICAgc2V0R290b0xvYyhnb3RvTG9jKTsKKyAgfQogCiAgIC8vLyBCdWlsZCBhbiBlbXB0eSBpbmRpcmVjdCBnb3RvIHN0YXRlbWVudC4KICAgZXhwbGljaXQgSW5kaXJlY3RHb3RvU3RtdChFbXB0eVNoZWxsIEVtcHR5KQogICAgICAgOiBTdG10KEluZGlyZWN0R290b1N0bXRDbGFzcywgRW1wdHkpIHt9CiAKLSAgdm9pZCBzZXRHb3RvTG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgR290b0xvYyA9IEw7IH0KLSAgU291cmNlTG9jYXRpb24gZ2V0R290b0xvYygpIGNvbnN0IHsgcmV0dXJuIEdvdG9Mb2M7IH0KKyAgdm9pZCBzZXRHb3RvTG9jKFNvdXJjZUxvY2F0aW9uIEwpIHsgR290b1N0bXRCaXRzLkdvdG9Mb2MgPSBMOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEdvdG9Mb2MoKSBjb25zdCB7IHJldHVybiBHb3RvU3RtdEJpdHMuR290b0xvYzsgfQogICB2b2lkIHNldFN0YXJMb2MoU291cmNlTG9jYXRpb24gTCkgeyBTdGFyTG9jID0gTDsgfQogICBTb3VyY2VMb2NhdGlvbiBnZXRTdGFyTG9jKCkgY29uc3QgeyByZXR1cm4gU3RhckxvYzsgfQogCi0gIEV4cHIgKmdldFRhcmdldCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8RXhwcio+KFRhcmdldCk7IH0KLSAgY29uc3QgRXhwciAqZ2V0VGFyZ2V0KCkgY29uc3Qge3JldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEV4cHIqPihUYXJnZXQpO30KLSAgdm9pZCBzZXRUYXJnZXQoRXhwciAqRSkgeyBUYXJnZXQgPSByZWludGVycHJldF9jYXN0PFN0bXQqPihFKTsgfQorICBFeHByICpnZXRUYXJnZXQoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PEV4cHIgKj4oVGFyZ2V0KTsgfQorICBjb25zdCBFeHByICpnZXRUYXJnZXQoKSBjb25zdCB7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRXhwciAqPihUYXJnZXQpOworICB9CisgIHZvaWQgc2V0VGFyZ2V0KEV4cHIgKkUpIHsgVGFyZ2V0ID0gcmVpbnRlcnByZXRfY2FzdDxTdG10ICo+KEUpOyB9CiAKICAgLy8vIGdldENvbnN0YW50VGFyZ2V0IC0gUmV0dXJucyB0aGUgZml4ZWQgdGFyZ2V0IG9mIHRoaXMgaW5kaXJlY3QKICAgLy8vIGdvdG8sIGlmIG9uZSBleGlzdHMuCiAgIExhYmVsRGVjbCAqZ2V0Q29uc3RhbnRUYXJnZXQoKTsKICAgY29uc3QgTGFiZWxEZWNsICpnZXRDb25zdGFudFRhcmdldCgpIGNvbnN0IHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxJbmRpcmVjdEdvdG9TdG10Kj4odGhpcyktPmdldENvbnN0YW50VGFyZ2V0KCk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SW5kaXJlY3RHb3RvU3RtdCAqPih0aGlzKS0+Z2V0Q29uc3RhbnRUYXJnZXQoKTsKICAgfQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgTExWTV9SRUFET05MWSB7IHJldHVybiBHb3RvTG9jOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEJlZ2luTG9jKCkgY29uc3QgeyByZXR1cm4gZ2V0R290b0xvYygpOyB9CiAgIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gVGFyZ2V0LT5nZXRFbmRMb2MoKTsgfQogCiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgU3RtdCAqVCkgewpAQCAtMTM3NSwyNCArMjM3MywyNCBAQAogICB9CiAKICAgLy8gSXRlcmF0b3JzCi0gIGNoaWxkX3JhbmdlIGNoaWxkcmVuKCkgeyByZXR1cm4gY2hpbGRfcmFuZ2UoJlRhcmdldCwgJlRhcmdldCsxKTsgfQorICBjaGlsZF9yYW5nZSBjaGlsZHJlbigpIHsgcmV0dXJuIGNoaWxkX3JhbmdlKCZUYXJnZXQsICZUYXJnZXQgKyAxKTsgfQogfTsKIAogLy8vIENvbnRpbnVlU3RtdCAtIFRoaXMgcmVwcmVzZW50cyBhIGNvbnRpbnVlLgogY2xhc3MgQ29udGludWVTdG10IDogcHVibGljIFN0bXQgewotICBTb3VyY2VMb2NhdGlvbiBDb250aW51ZUxvYzsKLQogcHVibGljOgotICBDb250aW51ZVN0bXQoU291cmNlTG9jYXRpb24gQ0wpIDogU3RtdChDb250aW51ZVN0bXRDbGFzcyksIENvbnRpbnVlTG9jKENMKSB7fQorICBDb250aW51ZVN0bXQoU291cmNlTG9jYXRpb24gQ0wpIDogU3RtdChDb250aW51ZVN0bXRDbGFzcykgeworICAgIHNldENvbnRpbnVlTG9jKENMKTsKKyAgfQogCiAgIC8vLyBCdWlsZCBhbiBlbXB0eSBjb250aW51ZSBzdGF0ZW1lbnQuCiAgIGV4cGxpY2l0IENvbnRpbnVlU3RtdChFbXB0eVNoZWxsIEVtcHR5KSA6IFN0bXQoQ29udGludWVTdG10Q2xhc3MsIEVtcHR5KSB7fQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldENvbnRpbnVlTG9jKCkgY29uc3QgeyByZXR1cm4gQ29udGludWVMb2M7IH0KLSAgdm9pZCBzZXRDb250aW51ZUxvYyhTb3VyY2VMb2NhdGlvbiBMKSB7IENvbnRpbnVlTG9jID0gTDsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRDb250aW51ZUxvYygpIGNvbnN0IHsgcmV0dXJuIENvbnRpbnVlU3RtdEJpdHMuQ29udGludWVMb2M7IH0KKyAgdm9pZCBzZXRDb250aW51ZUxvYyhTb3VyY2VMb2NhdGlvbiBMKSB7IENvbnRpbnVlU3RtdEJpdHMuQ29udGludWVMb2MgPSBMOyB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIENvbnRpbnVlTG9jOyB9Ci0gIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gQ29udGludWVMb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCB7IHJldHVybiBnZXRDb250aW51ZUxvYygpOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IHsgcmV0dXJuIGdldENvbnRpbnVlTG9jKCk7IH0KIAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFN0bXQgKlQpIHsKICAgICByZXR1cm4gVC0+Z2V0U3RtdENsYXNzKCkgPT0gQ29udGludWVTdG10Q2xhc3M7CkBAIC0xNDA2LDIyICsyNDA0LDE5IEBACiAKIC8vLyBCcmVha1N0bXQgLSBUaGlzIHJlcHJlc2VudHMgYSBicmVhay4KIGNsYXNzIEJyZWFrU3RtdCA6IHB1YmxpYyBTdG10IHsKLSAgU291cmNlTG9jYXRpb24gQnJlYWtMb2M7Ci0KIHB1YmxpYzoKLSAgQnJlYWtTdG10KFNvdXJjZUxvY2F0aW9uIEJMKSA6IFN0bXQoQnJlYWtTdG10Q2xhc3MpLCBCcmVha0xvYyhCTCkgewotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEJyZWFrU3RtdCkgPT0gMiAqIHNpemVvZihTb3VyY2VMb2NhdGlvbiksCi0gICAgICAgICAgICAgICAgICAiQnJlYWtTdG10IHRvbyBsYXJnZSIpOworICBCcmVha1N0bXQoU291cmNlTG9jYXRpb24gQkwpIDogU3RtdChCcmVha1N0bXRDbGFzcykgeworICAgIHNldEJyZWFrTG9jKEJMKTsKICAgfQogCiAgIC8vLyBCdWlsZCBhbiBlbXB0eSBicmVhayBzdGF0ZW1lbnQuCiAgIGV4cGxpY2l0IEJyZWFrU3RtdChFbXB0eVNoZWxsIEVtcHR5KSA6IFN0bXQoQnJlYWtTdG10Q2xhc3MsIEVtcHR5KSB7fQogCi0gIFNvdXJjZUxvY2F0aW9uIGdldEJyZWFrTG9jKCkgY29uc3QgeyByZXR1cm4gQnJlYWtMb2M7IH0KLSAgdm9pZCBzZXRCcmVha0xvYyhTb3VyY2VMb2NhdGlvbiBMKSB7IEJyZWFrTG9jID0gTDsgfQorICBTb3VyY2VMb2NhdGlvbiBnZXRCcmVha0xvYygpIGNvbnN0IHsgcmV0dXJuIEJyZWFrU3RtdEJpdHMuQnJlYWtMb2M7IH0KKyAgdm9pZCBzZXRCcmVha0xvYyhTb3VyY2VMb2NhdGlvbiBMKSB7IEJyZWFrU3RtdEJpdHMuQnJlYWtMb2MgPSBMOyB9CiAKLSAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsgcmV0dXJuIEJyZWFrTG9jOyB9Ci0gIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gQnJlYWtMb2M7IH0KKyAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCB7IHJldHVybiBnZXRCcmVha0xvYygpOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldEVuZExvYygpIGNvbnN0IHsgcmV0dXJuIGdldEJyZWFrTG9jKCk7IH0KIAogICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFN0bXQgKlQpIHsKICAgICByZXR1cm4gVC0+Z2V0U3RtdENsYXNzKCkgPT0gQnJlYWtTdG10Q2xhc3M7CkBAIC0xNDQxLDQwICsyNDM2LDY4IEBACiAvLy8gcmV0dXJuIGEgdmFsdWUsIGFuZCBpdCBhbGxvd3MgcmV0dXJuaW5nIGEgdmFsdWUgaW4gZnVuY3Rpb25zIGRlY2xhcmVkIHRvCiAvLy8gcmV0dXJuIHZvaWQuICBXZSBleHBsaWNpdGx5IG1vZGVsIHRoaXMgaW4gdGhlIEFTVCwgd2hpY2ggbWVhbnMgeW91IGNhbid0CiAvLy8gZGVwZW5kIG9uIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZSBwcmVzZW5jZSBvZiBhbiBhcmd1bWVudC4KLWNsYXNzIFJldHVyblN0bXQgOiBwdWJsaWMgU3RtdCB7Ci0gIFNvdXJjZUxvY2F0aW9uIFJldExvYzsKK2NsYXNzIFJldHVyblN0bXQgZmluYWwKKyAgICA6IHB1YmxpYyBTdG10LAorICAgICAgcHJpdmF0ZSBsbHZtOjpUcmFpbGluZ09iamVjdHM8UmV0dXJuU3RtdCwgY29uc3QgVmFyRGVjbCAqPiB7CisgIGZyaWVuZCBUcmFpbGluZ09iamVjdHM7CisKKyAgLy8vIFRoZSByZXR1cm4gZXhwcmVzc2lvbi4KICAgU3RtdCAqUmV0RXhwcjsKLSAgY29uc3QgVmFyRGVjbCAqTlJWT0NhbmRpZGF0ZTsKKworICAvLyBSZXR1cm5TdG10IGlzIGZvbGxvd2VkIG9wdGlvbmFsbHkgYnkgYSB0cmFpbGluZyAiY29uc3QgVmFyRGVjbCAqIgorICAvLyBmb3IgdGhlIE5SVk8gY2FuZGlkYXRlLiBQcmVzZW50IGlmIGFuZCBvbmx5IGlmIGhhc05SVk9DYW5kaWRhdGUoKS4KKworICAvLy8gVHJ1ZSBpZiB0aGlzIFJldHVyblN0bXQgaGFzIHN0b3JhZ2UgZm9yIGFuIE5SVk8gY2FuZGlkYXRlLgorICBib29sIGhhc05SVk9DYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBSZXR1cm5TdG10Qml0cy5IYXNOUlZPQ2FuZGlkYXRlOyB9CisKKyAgdW5zaWduZWQgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2FkVG9rZW48Y29uc3QgVmFyRGVjbCAqPikgY29uc3QgeworICAgIHJldHVybiBoYXNOUlZPQ2FuZGlkYXRlKCk7CisgIH0KKworICAvLy8gQnVpbGQgYSByZXR1cm4gc3RhdGVtZW50LgorICBSZXR1cm5TdG10KFNvdXJjZUxvY2F0aW9uIFJMLCBFeHByICpFLCBjb25zdCBWYXJEZWNsICpOUlZPQ2FuZGlkYXRlKTsKKworICAvLy8gQnVpbGQgYW4gZW1wdHkgcmV0dXJuIHN0YXRlbWVudC4KKyAgZXhwbGljaXQgUmV0dXJuU3RtdChFbXB0eVNoZWxsIEVtcHR5LCBib29sIEhhc05SVk9DYW5kaWRhdGUpOwogCiBwdWJsaWM6Ci0gIGV4cGxpY2l0IFJldHVyblN0bXQoU291cmNlTG9jYXRpb24gUkwpIDogUmV0dXJuU3RtdChSTCwgbnVsbHB0ciwgbnVsbHB0cikge30KKyAgLy8vIENyZWF0ZSBhIHJldHVybiBzdGF0ZW1lbnQuCisgIHN0YXRpYyBSZXR1cm5TdG10ICpDcmVhdGUoY29uc3QgQVNUQ29udGV4dCAmQ3R4LCBTb3VyY2VMb2NhdGlvbiBSTCwgRXhwciAqRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWYXJEZWNsICpOUlZPQ2FuZGlkYXRlKTsKIAotICBSZXR1cm5TdG10KFNvdXJjZUxvY2F0aW9uIFJMLCBFeHByICpFLCBjb25zdCBWYXJEZWNsICpOUlZPQ2FuZGlkYXRlKQotICAgICAgOiBTdG10KFJldHVyblN0bXRDbGFzcyksIFJldExvYyhSTCksIFJldEV4cHIoKFN0bXQgKilFKSwKLSAgICAgICAgTlJWT0NhbmRpZGF0ZShOUlZPQ2FuZGlkYXRlKSB7fQorICAvLy8gQ3JlYXRlIGFuIGVtcHR5IHJldHVybiBzdGF0ZW1lbnQsIG9wdGlvbmFsbHkgd2l0aAorICAvLy8gc3RvcmFnZSBmb3IgYW4gTlJWTyBjYW5kaWRhdGUuCisgIHN0YXRpYyBSZXR1cm5TdG10ICpDcmVhdGVFbXB0eShjb25zdCBBU1RDb250ZXh0ICZDdHgsIGJvb2wgSGFzTlJWT0NhbmRpZGF0ZSk7CiAKLSAgLy8vIEJ1aWxkIGFuIGVtcHR5IHJldHVybiBleHByZXNzaW9uLgotICBleHBsaWNpdCBSZXR1cm5TdG10KEVtcHR5U2hlbGwgRW1wdHkpIDogU3RtdChSZXR1cm5TdG10Q2xhc3MsIEVtcHR5KSB7fQotCi0gIGNvbnN0IEV4cHIgKmdldFJldFZhbHVlKCkgY29uc3Q7Ci0gIEV4cHIgKmdldFJldFZhbHVlKCk7Ci0gIHZvaWQgc2V0UmV0VmFsdWUoRXhwciAqRSkgeyBSZXRFeHByID0gcmVpbnRlcnByZXRfY2FzdDxTdG10Kj4oRSk7IH0KLQotICBTb3VyY2VMb2NhdGlvbiBnZXRSZXR1cm5Mb2MoKSBjb25zdCB7IHJldHVybiBSZXRMb2M7IH0KLSAgdm9pZCBzZXRSZXR1cm5Mb2MoU291cmNlTG9jYXRpb24gTCkgeyBSZXRMb2MgPSBMOyB9CisgIEV4cHIgKmdldFJldFZhbHVlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeHByICo+KFJldEV4cHIpOyB9CisgIGNvbnN0IEV4cHIgKmdldFJldFZhbHVlKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxFeHByICo+KFJldEV4cHIpOyB9CisgIHZvaWQgc2V0UmV0VmFsdWUoRXhwciAqRSkgeyBSZXRFeHByID0gcmVpbnRlcnByZXRfY2FzdDxTdG10ICo+KEUpOyB9CiAKICAgLy8vIFJldHJpZXZlIHRoZSB2YXJpYWJsZSB0aGF0IG1pZ2h0IGJlIHVzZWQgZm9yIHRoZSBuYW1lZCByZXR1cm4KICAgLy8vIHZhbHVlIG9wdGltaXphdGlvbi4KICAgLy8vCiAgIC8vLyBUaGUgb3B0aW1pemF0aW9uIGl0c2VsZiBjYW4gb25seSBiZSBwZXJmb3JtZWQgaWYgdGhlIHZhcmlhYmxlIGlzCiAgIC8vLyBhbHNvIG1hcmtlZCBhcyBhbiBOUlZPIG9iamVjdC4KLSAgY29uc3QgVmFyRGVjbCAqZ2V0TlJWT0NhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIE5SVk9DYW5kaWRhdGU7IH0KLSAgdm9pZCBzZXROUlZPQ2FuZGlkYXRlKGNvbnN0IFZhckRlY2wgKlZhcikgeyBOUlZPQ2FuZGlkYXRlID0gVmFyOyB9CisgIGNvbnN0IFZhckRlY2wgKmdldE5SVk9DYW5kaWRhdGUoKSBjb25zdCB7CisgICAgcmV0dXJuIGhhc05SVk9DYW5kaWRhdGUoKSA/ICpnZXRUcmFpbGluZ09iamVjdHM8Y29uc3QgVmFyRGVjbCAqPigpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxwdHI7CisgIH0KIAotICBTb3VyY2VMb2NhdGlvbiBnZXRCZWdpbkxvYygpIGNvbnN0IExMVk1fUkVBRE9OTFkgeyByZXR1cm4gUmV0TG9jOyB9CisgIC8vLyBTZXQgdGhlIHZhcmlhYmxlIHRoYXQgbWlnaHQgYmUgdXNlZCBmb3IgdGhlIG5hbWVkIHJldHVybiB2YWx1ZQorICAvLy8gb3B0aW1pemF0aW9uLiBUaGUgcmV0dXJuIHN0YXRlbWVudCBtdXN0IGhhdmUgc3RvcmFnZSBmb3IgaXQsCisgIC8vLyB3aGljaCBpcyB0aGUgY2FzZSBpZiBhbmQgb25seSBpZiBoYXNOUlZPQ2FuZGlkYXRlKCkgaXMgdHJ1ZS4KKyAgdm9pZCBzZXROUlZPQ2FuZGlkYXRlKGNvbnN0IFZhckRlY2wgKlZhcikgeworICAgIGFzc2VydChoYXNOUlZPQ2FuZGlkYXRlKCkgJiYKKyAgICAgICAgICAgIlRoaXMgcmV0dXJuIHN0YXRlbWVudCBoYXMgbm8gc3RvcmFnZSBmb3IgYW4gTlJWTyBjYW5kaWRhdGUhIik7CisgICAgKmdldFRyYWlsaW5nT2JqZWN0czxjb25zdCBWYXJEZWNsICo+KCkgPSBWYXI7CisgIH0KIAorICBTb3VyY2VMb2NhdGlvbiBnZXRSZXR1cm5Mb2MoKSBjb25zdCB7IHJldHVybiBSZXR1cm5TdG10Qml0cy5SZXRMb2M7IH0KKyAgdm9pZCBzZXRSZXR1cm5Mb2MoU291cmNlTG9jYXRpb24gTCkgeyBSZXR1cm5TdG10Qml0cy5SZXRMb2MgPSBMOyB9CisKKyAgU291cmNlTG9jYXRpb24gZ2V0QmVnaW5Mb2MoKSBjb25zdCB7IHJldHVybiBnZXRSZXR1cm5Mb2MoKTsgfQogICBTb3VyY2VMb2NhdGlvbiBnZXRFbmRMb2MoKSBjb25zdCBMTFZNX1JFQURPTkxZIHsKLSAgICByZXR1cm4gUmV0RXhwciA/IFJldEV4cHItPmdldEVuZExvYygpIDogUmV0TG9jOworICAgIHJldHVybiBSZXRFeHByID8gUmV0RXhwci0+Z2V0RW5kTG9jKCkgOiBnZXRSZXR1cm5Mb2MoKTsKICAgfQogCiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgU3RtdCAqVCkgewpAQCAtMTQ4Myw3ICsyNTA2LDggQEAKIAogICAvLyBJdGVyYXRvcnMKICAgY2hpbGRfcmFuZ2UgY2hpbGRyZW4oKSB7Ci0gICAgaWYgKFJldEV4cHIpIHJldHVybiBjaGlsZF9yYW5nZSgmUmV0RXhwciwgJlJldEV4cHIrMSk7CisgICAgaWYgKFJldEV4cHIpCisgICAgICByZXR1cm4gY2hpbGRfcmFuZ2UoJlJldEV4cHIsICZSZXRFeHByICsgMSk7CiAgICAgcmV0dXJuIGNoaWxkX3JhbmdlKGNoaWxkX2l0ZXJhdG9yKCksIGNoaWxkX2l0ZXJhdG9yKCkpOwogICB9CiB9OwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1N0bXRDWFguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9TdG10Q1hYLmgKaW5kZXggZDNhM2NmNy4uNTYxOGIyYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1N0bXRDWFguaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvU3RtdENYWC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gU3RtdENYWC5oIC0gQ2xhc3NlcyBmb3IgcmVwcmVzZW50aW5nIEMrKyBzdGF0ZW1lbnRzIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvU3RtdERhdGFDb2xsZWN0b3JzLmluYyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9TdG10RGF0YUNvbGxlY3RvcnMuaW5jCmluZGV4IDk1MTM1MzEuLjUwMTlkYzkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9TdG10RGF0YUNvbGxlY3RvcnMuaW5jCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9TdG10RGF0YUNvbGxlY3RvcnMuaW5jCkBAIC0xMTgsOCArMTE4LDggQEAKICkKIERFRl9BRERfREFUQShHZW5lcmljU2VsZWN0aW9uRXhwciwgewogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFMtPmdldE51bUFzc29jcygpOyArK2kpIHsKLSAgICAgIGFkZERhdGEoUy0+Z2V0QXNzb2NUeXBlKGkpKTsKKyAgICBmb3IgKGNvbnN0IEdlbmVyaWNTZWxlY3Rpb25FeHByOjpDb25zdEFzc29jaWF0aW9uICZBc3NvYyA6IFMtPmFzc29jaWF0aW9ucygpKSB7CisgICAgICBhZGREYXRhKEFzc29jLmdldFR5cGUoKSk7CiAgICAgfQogICB9CiApCkBAIC0xODgsNyArMTg4LDcgQEAKICkKIERFRl9BRERfREFUQShQcmVkZWZpbmVkRXhwciwgewogCi0gICAgYWRkRGF0YShTLT5nZXRJZGVudFR5cGUoKSk7CisgICAgYWRkRGF0YShTLT5nZXRJZGVudEtpbmQoKSk7CiAgIH0KICkKIERFRl9BRERfREFUQShTdG10LCB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvU3RtdEdyYXBoVHJhaXRzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvU3RtdEdyYXBoVHJhaXRzLmgKaW5kZXggMDJjNzdiMi4uZWUxZThjZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1N0bXRHcmFwaFRyYWl0cy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9TdG10R3JhcGhUcmFpdHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTdG10R3JhcGhUcmFpdHMuaCAtIEdyYXBoIFRyYWl0cyBmb3IgdGhlIGNsYXNzIFN0bXQgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1N0bXRJdGVyYXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1N0bXRJdGVyYXRvci5oCmluZGV4IDgwNmVkYWEuLjkxMTIwNTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9TdG10SXRlcmF0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvU3RtdEl0ZXJhdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3RtdEl0ZXJhdG9yLmggLSBJdGVyYXRvcnMgZm9yIFN0YXRlbWVudHMgLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9TdG10Tm9kZXMuaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1N0bXROb2Rlcy5pbmMKaW5kZXggNWMzNTcxMC4uOWM2ZThiZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1N0bXROb2Rlcy5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1N0bXROb2Rlcy5pbmMKQEAgLTUwMSwxMiArNTAxLDYgQEAKIERFU0lHTkFURURJTklUVVBEQVRFRVhQUihEZXNpZ25hdGVkSW5pdFVwZGF0ZUV4cHIsIEV4cHIpCiAjdW5kZWYgREVTSUdOQVRFRElOSVRVUERBVEVFWFBSCiAKLSNpZm5kZWYgRVhQUldJVEhDTEVBTlVQUwotIyAgZGVmaW5lIEVYUFJXSVRIQ0xFQU5VUFMoVHlwZSwgQmFzZSkgRVhQUihUeXBlLCBCYXNlKQotI2VuZGlmCi1FWFBSV0lUSENMRUFOVVBTKEV4cHJXaXRoQ2xlYW51cHMsIEV4cHIpCi0jdW5kZWYgRVhQUldJVEhDTEVBTlVQUwotCiAjaWZuZGVmIEVYUFJFU1NJT05UUkFJVEVYUFIKICMgIGRlZmluZSBFWFBSRVNTSU9OVFJBSVRFWFBSKFR5cGUsIEJhc2UpIEVYUFIoVHlwZSwgQmFzZSkKICNlbmRpZgpAQCAtNTMxLDYgKzUyNSwyNiBAQAogRkxPQVRJTkdMSVRFUkFMKEZsb2F0aW5nTGl0ZXJhbCwgRXhwcikKICN1bmRlZiBGTE9BVElOR0xJVEVSQUwKIAorI2lmbmRlZiBGVUxMRVhQUgorIyAgZGVmaW5lIEZVTExFWFBSKFR5cGUsIEJhc2UpIEVYUFIoVHlwZSwgQmFzZSkKKyNlbmRpZgorQUJTVFJBQ1RfU1RNVChGVUxMRVhQUihGdWxsRXhwciwgRXhwcikpCisjaWZuZGVmIENPTlNUQU5URVhQUgorIyAgZGVmaW5lIENPTlNUQU5URVhQUihUeXBlLCBCYXNlKSBGVUxMRVhQUihUeXBlLCBCYXNlKQorI2VuZGlmCitDT05TVEFOVEVYUFIoQ29uc3RhbnRFeHByLCBGdWxsRXhwcikKKyN1bmRlZiBDT05TVEFOVEVYUFIKKworI2lmbmRlZiBFWFBSV0lUSENMRUFOVVBTCisjICBkZWZpbmUgRVhQUldJVEhDTEVBTlVQUyhUeXBlLCBCYXNlKSBGVUxMRVhQUihUeXBlLCBCYXNlKQorI2VuZGlmCitFWFBSV0lUSENMRUFOVVBTKEV4cHJXaXRoQ2xlYW51cHMsIEZ1bGxFeHByKQorI3VuZGVmIEVYUFJXSVRIQ0xFQU5VUFMKKworU1RNVF9SQU5HRShGdWxsRXhwciwgQ29uc3RhbnRFeHByLCBFeHByV2l0aENsZWFudXBzKQorCisjdW5kZWYgRlVMTEVYUFIKKwogI2lmbmRlZiBGVU5DVElPTlBBUk1QQUNLRVhQUgogIyAgZGVmaW5lIEZVTkNUSU9OUEFSTVBBQ0tFWFBSKFR5cGUsIEJhc2UpIEVYUFIoVHlwZSwgQmFzZSkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1N0bXRPYmpDLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvU3RtdE9iakMuaAppbmRleCBmMGMwYTlhLi5hZWI1OWEwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvU3RtdE9iakMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvU3RtdE9iakMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFN0bXRPYmpDLmggLSBDbGFzc2VzIGZvciByZXByZXNlbnRpbmcgT2JqQyBzdGF0ZW1lbnRzIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9TdG10T3Blbk1QLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvU3RtdE9wZW5NUC5oCmluZGV4IDE3MGM3OGMuLjRiNmU3MDYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9TdG10T3Blbk1QLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1N0bXRPcGVuTVAuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTdG10T3Blbk1QLmggLSBDbGFzc2VzIGZvciBPcGVuTVAgZGlyZWN0aXZlcyAgLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKQEAgLTM5Miw5ICszOTEsMTEgQEAKICAgICBDb21iaW5lZENvbmRpdGlvbk9mZnNldCA9IDI1LAogICAgIENvbWJpbmVkTmV4dExvd2VyQm91bmRPZmZzZXQgPSAyNiwKICAgICBDb21iaW5lZE5leHRVcHBlckJvdW5kT2Zmc2V0ID0gMjcsCisgICAgQ29tYmluZWREaXN0Q29uZGl0aW9uT2Zmc2V0ID0gMjgsCisgICAgQ29tYmluZWRQYXJGb3JJbkRpc3RDb25kaXRpb25PZmZzZXQgPSAyOSwKICAgICAvLyBPZmZzZXQgdG8gdGhlIGVuZCAoYW5kIHN0YXJ0IG9mIHRoZSBmb2xsb3dpbmcgY291bnRlcnMvdXBkYXRlcy9maW5hbHMKICAgICAvLyBhcnJheXMpIGZvciBjb21iaW5lZCBkaXN0cmlidXRlIGxvb3AgZGlyZWN0aXZlcy4KLSAgICBDb21iaW5lZERpc3RyaWJ1dGVFbmQgPSAyOCwKKyAgICBDb21iaW5lZERpc3RyaWJ1dGVFbmQgPSAzMCwKICAgfTsKIAogICAvLy8gR2V0IHRoZSBjb3VudGVycyBzdG9yYWdlLgpAQCAtNjA1LDYgKzYwNiwxNyBAQAogICAgICAgICAgICAiZXhwZWN0ZWQgbG9vcCBib3VuZCBzaGFyaW5nIGRpcmVjdGl2ZSIpOwogICAgICpzdGQ6Om5leHQoY2hpbGRfYmVnaW4oKSwgQ29tYmluZWROZXh0VXBwZXJCb3VuZE9mZnNldCkgPSBDb21iTlVCOwogICB9CisgIHZvaWQgc2V0Q29tYmluZWREaXN0Q29uZChFeHByICpDb21iRGlzdENvbmQpIHsKKyAgICBhc3NlcnQoaXNPcGVuTVBMb29wQm91bmRTaGFyaW5nRGlyZWN0aXZlKGdldERpcmVjdGl2ZUtpbmQoKSkgJiYKKyAgICAgICAgICAgImV4cGVjdGVkIGxvb3AgYm91bmQgZGlzdHJpYnV0ZSBzaGFyaW5nIGRpcmVjdGl2ZSIpOworICAgICpzdGQ6Om5leHQoY2hpbGRfYmVnaW4oKSwgQ29tYmluZWREaXN0Q29uZGl0aW9uT2Zmc2V0KSA9IENvbWJEaXN0Q29uZDsKKyAgfQorICB2b2lkIHNldENvbWJpbmVkUGFyRm9ySW5EaXN0Q29uZChFeHByICpDb21iUGFyRm9ySW5EaXN0Q29uZCkgeworICAgIGFzc2VydChpc09wZW5NUExvb3BCb3VuZFNoYXJpbmdEaXJlY3RpdmUoZ2V0RGlyZWN0aXZlS2luZCgpKSAmJgorICAgICAgICAgICAiZXhwZWN0ZWQgbG9vcCBib3VuZCBkaXN0cmlidXRlIHNoYXJpbmcgZGlyZWN0aXZlIik7CisgICAgKnN0ZDo6bmV4dChjaGlsZF9iZWdpbigpLAorICAgICAgICAgICAgICAgQ29tYmluZWRQYXJGb3JJbkRpc3RDb25kaXRpb25PZmZzZXQpID0gQ29tYlBhckZvckluRGlzdENvbmQ7CisgIH0KICAgdm9pZCBzZXRDb3VudGVycyhBcnJheVJlZjxFeHByICo+IEEpOwogICB2b2lkIHNldFByaXZhdGVDb3VudGVycyhBcnJheVJlZjxFeHByICo+IEEpOwogICB2b2lkIHNldEluaXRzKEFycmF5UmVmPEV4cHIgKj4gQSk7CkBAIC02MzcsNiArNjQ5LDEzIEBACiAgICAgLy8vIFVwZGF0ZSBvZiBVcHBlckJvdW5kIGZvciBzdGF0aWNhbGx5IHNjaGVkdWxlZCBvbXAgbG9vcHMgZm9yCiAgICAgLy8vIG91dGVyIGxvb3AgaW4gY29tYmluZWQgY29uc3RydWN0cyAoZS5nLiAnZGlzdHJpYnV0ZSBwYXJhbGxlbCBmb3InKQogICAgIEV4cHIgKk5VQjsKKyAgICAvLy8gRGlzdHJpYnV0ZSBMb29wIGNvbmRpdGlvbiB1c2VkIHdoZW4gY29tcG9zaW5nICdvbXAgZGlzdHJpYnV0ZScKKyAgICAvLy8gIHdpdGggJ29tcCBmb3InIGluIGEgc2FtZSBjb25zdHJ1Y3Qgd2hlbiBzY2hlZHVsZSBpcyBjaHVua2VkLgorICAgIEV4cHIgKkRpc3RDb25kOworICAgIC8vLyAnb21wIHBhcmFsbGVsIGZvcicgbG9vcCBjb25kaXRpb24gdXNlZCB3aGVuIGNvbXBvc2VkIHdpdGgKKyAgICAvLy8gJ29tcCBkaXN0cmlidXRlJyBpbiB0aGUgc2FtZSBjb25zdHJ1Y3QgYW5kIHdoZW4gc2NoZWR1bGUgaXMKKyAgICAvLy8gY2h1bmtlZCBhbmQgdGhlIGNodW5rIHNpemUgaXMgMS4KKyAgICBFeHByICpQYXJGb3JJbkRpc3RDb25kOwogICB9OwogCiAgIC8vLyBUaGUgZXhwcmVzc2lvbnMgYnVpbHQgZm9yIHRoZSBPcGVuTVAgbG9vcCBDb2RlR2VuIGZvciB0aGUKQEAgLTc1NCw2ICs3NzMsOCBAQAogICAgICAgRGlzdENvbWJpbmVkRmllbGRzLkNvbmQgPSBudWxscHRyOwogICAgICAgRGlzdENvbWJpbmVkRmllbGRzLk5MQiA9IG51bGxwdHI7CiAgICAgICBEaXN0Q29tYmluZWRGaWVsZHMuTlVCID0gbnVsbHB0cjsKKyAgICAgIERpc3RDb21iaW5lZEZpZWxkcy5EaXN0Q29uZCA9IG51bGxwdHI7CisgICAgICBEaXN0Q29tYmluZWRGaWVsZHMuUGFyRm9ySW5EaXN0Q29uZCA9IG51bGxwdHI7CiAgICAgfQogICB9OwogCkBAIC05MjIsNiArOTQzLDE4IEBACiAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RXhwciAqPihyZWludGVycHJldF9jYXN0PGNvbnN0IEV4cHIgKj4oCiAgICAgICAgICpzdGQ6Om5leHQoY2hpbGRfYmVnaW4oKSwgQ29tYmluZWROZXh0VXBwZXJCb3VuZE9mZnNldCkpKTsKICAgfQorICBFeHByICpnZXRDb21iaW5lZERpc3RDb25kKCkgY29uc3QgeworICAgIGFzc2VydChpc09wZW5NUExvb3BCb3VuZFNoYXJpbmdEaXJlY3RpdmUoZ2V0RGlyZWN0aXZlS2luZCgpKSAmJgorICAgICAgICAgICAiZXhwZWN0ZWQgbG9vcCBib3VuZCBkaXN0cmlidXRlIHNoYXJpbmcgZGlyZWN0aXZlIik7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8RXhwciAqPihyZWludGVycHJldF9jYXN0PGNvbnN0IEV4cHIgKj4oCisgICAgICAgICpzdGQ6Om5leHQoY2hpbGRfYmVnaW4oKSwgQ29tYmluZWREaXN0Q29uZGl0aW9uT2Zmc2V0KSkpOworICB9CisgIEV4cHIgKmdldENvbWJpbmVkUGFyRm9ySW5EaXN0Q29uZCgpIGNvbnN0IHsKKyAgICBhc3NlcnQoaXNPcGVuTVBMb29wQm91bmRTaGFyaW5nRGlyZWN0aXZlKGdldERpcmVjdGl2ZUtpbmQoKSkgJiYKKyAgICAgICAgICAgImV4cGVjdGVkIGxvb3AgYm91bmQgZGlzdHJpYnV0ZSBzaGFyaW5nIGRpcmVjdGl2ZSIpOworICAgIHJldHVybiBjb25zdF9jYXN0PEV4cHIgKj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBFeHByICo+KAorICAgICAgICAqc3RkOjpuZXh0KGNoaWxkX2JlZ2luKCksIENvbWJpbmVkUGFyRm9ySW5EaXN0Q29uZGl0aW9uT2Zmc2V0KSkpOworICB9CiAgIGNvbnN0IFN0bXQgKmdldEJvZHkoKSBjb25zdCB7CiAgICAgLy8gVGhpcyByZWxpZXMgb24gdGhlIGxvb3AgZm9ybSBpcyBhbHJlYWR5IGNoZWNrZWQgYnkgU2VtYS4KICAgICBjb25zdCBTdG10ICpCb2R5ID0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9TdG10VmlzaXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1N0bXRWaXNpdG9yLmgKaW5kZXggYmJmZmZlOC4uZDNiZTkzZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1N0bXRWaXNpdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1N0bXRWaXNpdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3RtdFZpc2l0b3IuaCAtIFZpc2l0b3IgZm9yIFN0bXQgc3ViY2xhc3NlcyAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTIyLDE1ICsyMSwxMiBAQAogI2luY2x1ZGUgImNsYW5nL0FTVC9TdG10T2JqQy5oIgogI2luY2x1ZGUgImNsYW5nL0FTVC9TdG10T3Blbk1QLmgiCiAjaW5jbHVkZSAiY2xhbmcvQmFzaWMvTExWTS5oIgorI2luY2x1ZGUgImxsdm0vQURUL1NUTEV4dHJhcy5oIgogI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9DYXN0aW5nLmgiCiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0Vycm9ySGFuZGxpbmcuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgogCiBuYW1lc3BhY2UgY2xhbmcgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IG1ha2VfcHRyIHsgdXNpbmcgdHlwZSA9IFQgKjsgfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgbWFrZV9jb25zdF9wdHIgeyB1c2luZyB0eXBlID0gY29uc3QgVCAqOyB9OwotCiAvLy8gU3RtdFZpc2l0b3JCYXNlIC0gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgc2ltcGxlIHZpc2l0b3IgZm9yIFN0bXQKIC8vLyBzdWJjbGFzc2VzLiBTaW5jZSBFeHByIGRlcml2ZXMgZnJvbSBTdG10LCB0aGlzIGFsc28gaW5jbHVkZXMgc3VwcG9ydCBmb3IKIC8vLyB2aXNpdGluZyBFeHBycy4KQEAgLTE4MiwxOCArMTc4LDE5IEBACiAvLy8KIC8vLyBUaGlzIGNsYXNzIGRvZXMgbm90IHByZXNlcnZlIGNvbnN0bmVzcyBvZiBTdG10IHBvaW50ZXJzIChzZWUgYWxzbwogLy8vIENvbnN0U3RtdFZpc2l0b3IpLgotdGVtcGxhdGU8dHlwZW5hbWUgSW1wbENsYXNzLCB0eXBlbmFtZSBSZXRUeT12b2lkLCB0eXBlbmFtZS4uLiBQYXJhbVR5cz4KK3RlbXBsYXRlIDx0eXBlbmFtZSBJbXBsQ2xhc3MsIHR5cGVuYW1lIFJldFR5ID0gdm9pZCwgdHlwZW5hbWUuLi4gUGFyYW1UeXM+CiBjbGFzcyBTdG10VmlzaXRvcgotIDogcHVibGljIFN0bXRWaXNpdG9yQmFzZTxtYWtlX3B0ciwgSW1wbENsYXNzLCBSZXRUeSwgUGFyYW1UeXMuLi4+IHt9OworICAgIDogcHVibGljIFN0bXRWaXNpdG9yQmFzZTxzdGQ6OmFkZF9wb2ludGVyLCBJbXBsQ2xhc3MsIFJldFR5LCBQYXJhbVR5cy4uLj4geworfTsKIAogLy8vIENvbnN0U3RtdFZpc2l0b3IgLSBUaGlzIGNsYXNzIGltcGxlbWVudHMgYSBzaW1wbGUgdmlzaXRvciBmb3IgU3RtdAogLy8vIHN1YmNsYXNzZXMuIFNpbmNlIEV4cHIgZGVyaXZlcyBmcm9tIFN0bXQsIHRoaXMgYWxzbyBpbmNsdWRlcyBzdXBwb3J0IGZvcgogLy8vIHZpc2l0aW5nIEV4cHJzLgogLy8vCiAvLy8gVGhpcyBjbGFzcyBwcmVzZXJ2ZXMgY29uc3RuZXNzIG9mIFN0bXQgcG9pbnRlcnMgKHNlZSBhbHNvIFN0bXRWaXNpdG9yKS4KLXRlbXBsYXRlPHR5cGVuYW1lIEltcGxDbGFzcywgdHlwZW5hbWUgUmV0VHk9dm9pZCwgdHlwZW5hbWUuLi4gUGFyYW1UeXM+Ci1jbGFzcyBDb25zdFN0bXRWaXNpdG9yCi0gOiBwdWJsaWMgU3RtdFZpc2l0b3JCYXNlPG1ha2VfY29uc3RfcHRyLCBJbXBsQ2xhc3MsIFJldFR5LCBQYXJhbVR5cy4uLj4ge307Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW1wbENsYXNzLCB0eXBlbmFtZSBSZXRUeSA9IHZvaWQsIHR5cGVuYW1lLi4uIFBhcmFtVHlzPgorY2xhc3MgQ29uc3RTdG10VmlzaXRvciA6IHB1YmxpYyBTdG10VmlzaXRvckJhc2U8bGx2bTo6bWFrZV9jb25zdF9wdHIsIEltcGxDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldFR5LCBQYXJhbVR5cy4uLj4ge307CiAKIH0gLy8gbmFtZXNwYWNlIGNsYW5nCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9UZW1wbGF0ZUFyZ3VtZW50VmlzaXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1RlbXBsYXRlQXJndW1lbnRWaXNpdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkwYWE5NwotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9UZW1wbGF0ZUFyZ3VtZW50VmlzaXRvci5oCkBAIC0wLDAgKzEsOTggQEAKKy8vPT09LSBUZW1wbGF0ZUFyZ3VtZW50VmlzaXRvci5oIC0gVmlzaXRvciBmb3IgVEFyZyBzdWJjbGFzc2VzIC0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBUZW1wbGF0ZUFyZ3VtZW50VmlzaXRvciBpbnRlcmZhY2UuCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0NMQU5HX0FTVF9URU1QTEFURUFSR1VNRU5UVklTSVRPUl9ICisjZGVmaW5lIExMVk1fQ0xBTkdfQVNUX1RFTVBMQVRFQVJHVU1FTlRWSVNJVE9SX0gKKworI2luY2x1ZGUgImNsYW5nL0FTVC9UZW1wbGF0ZUJhc2UuaCIKKworbmFtZXNwYWNlIGNsYW5nIHsKKworbmFtZXNwYWNlIHRlbXBsYXRlYXJndW1lbnR2aXNpdG9yIHsKKworLy8vIEEgc2ltcGxlIHZpc2l0b3IgY2xhc3MgdGhhdCBoZWxwcyBjcmVhdGUgdGVtcGxhdGUgYXJndW1lbnQgdmlzaXRvcnMuCit0ZW1wbGF0ZSA8dGVtcGxhdGUgPHR5cGVuYW1lPiBjbGFzcyBSZWYsIHR5cGVuYW1lIEltcGxDbGFzcywKKyAgICAgICAgICB0eXBlbmFtZSBSZXRUeSA9IHZvaWQsIHR5cGVuYW1lLi4uIFBhcmFtVHlzPgorY2xhc3MgQmFzZSB7CitwdWJsaWM6CisjZGVmaW5lIFJFRihDTEFTUykgdHlwZW5hbWUgUmVmPENMQVNTPjo6dHlwZQorI2RlZmluZSBESVNQQVRDSChOQU1FKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgY2FzZSBUZW1wbGF0ZUFyZ3VtZW50OjpOQU1FOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEltcGxDbGFzcyAqPih0aGlzKS0+VmlzaXQjI05BTUUjI1RlbXBsYXRlQXJndW1lbnQoICAgICAgXAorICAgICAgICBUQSwgc3RkOjpmb3J3YXJkPFBhcmFtVHlzPihQKS4uLikKKworICBSZXRUeSBWaXNpdChSRUYoVGVtcGxhdGVBcmd1bWVudCkgVEEsIFBhcmFtVHlzLi4uIFApIHsKKyAgICBzd2l0Y2ggKFRBLmdldEtpbmQoKSkgeworICAgICAgRElTUEFUQ0goTnVsbCk7CisgICAgICBESVNQQVRDSChUeXBlKTsKKyAgICAgIERJU1BBVENIKERlY2xhcmF0aW9uKTsKKyAgICAgIERJU1BBVENIKE51bGxQdHIpOworICAgICAgRElTUEFUQ0goSW50ZWdyYWwpOworICAgICAgRElTUEFUQ0goVGVtcGxhdGUpOworICAgICAgRElTUEFUQ0goVGVtcGxhdGVFeHBhbnNpb24pOworICAgICAgRElTUEFUQ0goRXhwcmVzc2lvbik7CisgICAgICBESVNQQVRDSChQYWNrKTsKKyAgICB9CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVGVtcGxhdGVBcmd1bWVudCBpcyBub3QgY292ZXJlZCBpbiBzd2l0Y2ghIik7CisgIH0KKworICAvLyBJZiB0aGUgaW1wbGVtZW50YXRpb24gY2hvb3NlcyBub3QgdG8gaW1wbGVtZW50IGEgY2VydGFpbiB2aXNpdAorICAvLyBtZXRob2QsIGZhbGwgYmFjayB0byB0aGUgcGFyZW50LgorCisjZGVmaW5lIFZJU0lUX01FVEhPRChDQVRFR09SWSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBSZXRUeSBWaXNpdCMjQ0FURUdPUlkjI1RlbXBsYXRlQXJndW1lbnQoUkVGKFRlbXBsYXRlQXJndW1lbnQpIFRBLCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtVHlzLi4uIFApIHsgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIFZpc2l0VGVtcGxhdGVBcmd1bWVudChUQSwgc3RkOjpmb3J3YXJkPFBhcmFtVHlzPihQKS4uLik7ICAgICAgICAgICAgXAorICB9CisKKyAgVklTSVRfTUVUSE9EKE51bGwpOworICBWSVNJVF9NRVRIT0QoVHlwZSk7CisgIFZJU0lUX01FVEhPRChEZWNsYXJhdGlvbik7CisgIFZJU0lUX01FVEhPRChOdWxsUHRyKTsKKyAgVklTSVRfTUVUSE9EKEludGVncmFsKTsKKyAgVklTSVRfTUVUSE9EKFRlbXBsYXRlKTsKKyAgVklTSVRfTUVUSE9EKFRlbXBsYXRlRXhwYW5zaW9uKTsKKyAgVklTSVRfTUVUSE9EKEV4cHJlc3Npb24pOworICBWSVNJVF9NRVRIT0QoUGFjayk7CisKKyAgUmV0VHkgVmlzaXRUZW1wbGF0ZUFyZ3VtZW50KFJFRihUZW1wbGF0ZUFyZ3VtZW50KSwgUGFyYW1UeXMuLi4pIHsKKyAgICByZXR1cm4gUmV0VHkoKTsKKyAgfQorCisjdW5kZWYgUkVGCisjdW5kZWYgRElTUEFUQ0gKKyN1bmRlZiBWSVNJVF9NRVRIT0QKK307CisKK30gLy8gbmFtZXNwYWNlIHRlbXBsYXRlYXJndW1lbnR2aXNpdG9yCisKKy8vLyBBIHNpbXBsZSB2aXNpdG9yIGNsYXNzIHRoYXQgaGVscHMgY3JlYXRlIHRlbXBsYXRlIGFyZ3VtZW50IHZpc2l0b3JzLgorLy8vCisvLy8gVGhpcyBjbGFzcyBkb2VzIG5vdCBwcmVzZXJ2ZSBjb25zdG5lc3Mgb2YgVGVtcGxhdGVBcmd1bWVudCByZWZlcmVuY2VzIChzZWUKKy8vLyBhbHNvIENvbnN0VGVtcGxhdGVBcmd1bWVudFZpc2l0b3IpLgordGVtcGxhdGUgPHR5cGVuYW1lIEltcGxDbGFzcywgdHlwZW5hbWUgUmV0VHkgPSB2b2lkLCB0eXBlbmFtZS4uLiBQYXJhbVR5cz4KK2NsYXNzIFRlbXBsYXRlQXJndW1lbnRWaXNpdG9yCisgICAgOiBwdWJsaWMgdGVtcGxhdGVhcmd1bWVudHZpc2l0b3I6OkJhc2U8c3RkOjphZGRfbHZhbHVlX3JlZmVyZW5jZSwgSW1wbENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJldFR5LCBQYXJhbVR5cy4uLj4ge307CisKKy8vLyBBIHNpbXBsZSB2aXNpdG9yIGNsYXNzIHRoYXQgaGVscHMgY3JlYXRlIHRlbXBsYXRlIGFyZ3VtZW50IHZpc2l0b3JzLgorLy8vCisvLy8gVGhpcyBjbGFzcyBwcmVzZXJ2ZXMgY29uc3RuZXNzIG9mIFRlbXBsYXRlQXJndW1lbnQgcmVmZXJlbmNlcyAoc2VlIGFsc28KKy8vLyBUZW1wbGF0ZUFyZ3VtZW50VmlzaXRvcikuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW1wbENsYXNzLCB0eXBlbmFtZSBSZXRUeSA9IHZvaWQsIHR5cGVuYW1lLi4uIFBhcmFtVHlzPgorY2xhc3MgQ29uc3RUZW1wbGF0ZUFyZ3VtZW50VmlzaXRvcgorICAgIDogcHVibGljIHRlbXBsYXRlYXJndW1lbnR2aXNpdG9yOjpCYXNlPGxsdm06Om1ha2VfY29uc3RfcmVmLCBJbXBsQ2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0VHksIFBhcmFtVHlzLi4uPiB7fTsKKworfSAvLyBuYW1lc3BhY2UgY2xhbmcKKworI2VuZGlmIC8vIExMVk1fQ0xBTkdfQVNUX1RFTVBMQVRFQVJHVU1FTlRWSVNJVE9SX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9UZW1wbGF0ZUJhc2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9UZW1wbGF0ZUJhc2UuaAppbmRleCA4ZjkyZTc5Li4wNThhNWJjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVGVtcGxhdGVCYXNlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1RlbXBsYXRlQmFzZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFRlbXBsYXRlQmFzZS5oIC0gQ29yZSBjbGFzc2VzIGZvciBDKysgdGVtcGxhdGVzIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC01MzAsMTkgKzUyOSwyMiBAQAogICB9CiAKICAgTmVzdGVkTmFtZVNwZWNpZmllckxvYyBnZXRUZW1wbGF0ZVF1YWxpZmllckxvYygpIGNvbnN0IHsKLSAgICBhc3NlcnQoQXJndW1lbnQuZ2V0S2luZCgpID09IFRlbXBsYXRlQXJndW1lbnQ6OlRlbXBsYXRlIHx8Ci0gICAgICAgICAgIEFyZ3VtZW50LmdldEtpbmQoKSA9PSBUZW1wbGF0ZUFyZ3VtZW50OjpUZW1wbGF0ZUV4cGFuc2lvbik7CisgICAgaWYgKEFyZ3VtZW50LmdldEtpbmQoKSAhPSBUZW1wbGF0ZUFyZ3VtZW50OjpUZW1wbGF0ZSAmJgorICAgICAgICBBcmd1bWVudC5nZXRLaW5kKCkgIT0gVGVtcGxhdGVBcmd1bWVudDo6VGVtcGxhdGVFeHBhbnNpb24pCisgICAgICByZXR1cm4gTmVzdGVkTmFtZVNwZWNpZmllckxvYygpOwogICAgIHJldHVybiBMb2NJbmZvLmdldFRlbXBsYXRlUXVhbGlmaWVyTG9jKCk7CiAgIH0KIAogICBTb3VyY2VMb2NhdGlvbiBnZXRUZW1wbGF0ZU5hbWVMb2MoKSBjb25zdCB7Ci0gICAgYXNzZXJ0KEFyZ3VtZW50LmdldEtpbmQoKSA9PSBUZW1wbGF0ZUFyZ3VtZW50OjpUZW1wbGF0ZSB8fAotICAgICAgICAgICBBcmd1bWVudC5nZXRLaW5kKCkgPT0gVGVtcGxhdGVBcmd1bWVudDo6VGVtcGxhdGVFeHBhbnNpb24pOworICAgIGlmIChBcmd1bWVudC5nZXRLaW5kKCkgIT0gVGVtcGxhdGVBcmd1bWVudDo6VGVtcGxhdGUgJiYKKyAgICAgICAgQXJndW1lbnQuZ2V0S2luZCgpICE9IFRlbXBsYXRlQXJndW1lbnQ6OlRlbXBsYXRlRXhwYW5zaW9uKQorICAgICAgcmV0dXJuIFNvdXJjZUxvY2F0aW9uKCk7CiAgICAgcmV0dXJuIExvY0luZm8uZ2V0VGVtcGxhdGVOYW1lTG9jKCk7CiAgIH0KIAogICBTb3VyY2VMb2NhdGlvbiBnZXRUZW1wbGF0ZUVsbGlwc2lzTG9jKCkgY29uc3QgewotICAgIGFzc2VydChBcmd1bWVudC5nZXRLaW5kKCkgPT0gVGVtcGxhdGVBcmd1bWVudDo6VGVtcGxhdGVFeHBhbnNpb24pOworICAgIGlmIChBcmd1bWVudC5nZXRLaW5kKCkgIT0gVGVtcGxhdGVBcmd1bWVudDo6VGVtcGxhdGVFeHBhbnNpb24pCisgICAgICByZXR1cm4gU291cmNlTG9jYXRpb24oKTsKICAgICByZXR1cm4gTG9jSW5mby5nZXRUZW1wbGF0ZUVsbGlwc2lzTG9jKCk7CiAgIH0KIH07CkBAIC02MTcsMTMgKzYxOSwxNyBAQAogICAvLy8gVGhlIG51bWJlciBvZiB0ZW1wbGF0ZSBhcmd1bWVudHMgaW4gVGVtcGxhdGVBcmdzLgogICB1bnNpZ25lZCBOdW1UZW1wbGF0ZUFyZ3M7CiAKKyAgU291cmNlTG9jYXRpb24gZ2V0TEFuZ2xlTG9jKCkgY29uc3QgeyByZXR1cm4gTEFuZ2xlTG9jOyB9CisgIFNvdXJjZUxvY2F0aW9uIGdldFJBbmdsZUxvYygpIGNvbnN0IHsgcmV0dXJuIFJBbmdsZUxvYzsgfQorCiAgIC8vLyBSZXRyaWV2ZSB0aGUgdGVtcGxhdGUgYXJndW1lbnRzCiAgIGNvbnN0IFRlbXBsYXRlQXJndW1lbnRMb2MgKmdldFRlbXBsYXRlQXJncygpIGNvbnN0IHsKICAgICByZXR1cm4gZ2V0VHJhaWxpbmdPYmplY3RzPFRlbXBsYXRlQXJndW1lbnRMb2M+KCk7CiAgIH0KKyAgdW5zaWduZWQgZ2V0TnVtVGVtcGxhdGVBcmdzKCkgY29uc3QgeyByZXR1cm4gTnVtVGVtcGxhdGVBcmdzOyB9CiAKICAgbGx2bTo6QXJyYXlSZWY8VGVtcGxhdGVBcmd1bWVudExvYz4gYXJndW1lbnRzKCkgY29uc3QgewotICAgIHJldHVybiBsbHZtOjptYWtlQXJyYXlSZWYoZ2V0VGVtcGxhdGVBcmdzKCksIE51bVRlbXBsYXRlQXJncyk7CisgICAgcmV0dXJuIGxsdm06Om1ha2VBcnJheVJlZihnZXRUZW1wbGF0ZUFyZ3MoKSwgZ2V0TnVtVGVtcGxhdGVBcmdzKCkpOwogICB9CiAKICAgY29uc3QgVGVtcGxhdGVBcmd1bWVudExvYyAmb3BlcmF0b3JbXSh1bnNpZ25lZCBJKSBjb25zdCB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVGVtcGxhdGVOYW1lLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVGVtcGxhdGVOYW1lLmgKaW5kZXggZDg4ZDU4ZC4uODljNWZhYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1RlbXBsYXRlTmFtZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9UZW1wbGF0ZU5hbWUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUZW1wbGF0ZU5hbWUuaCAtIEMrKyBUZW1wbGF0ZSBOYW1lIFJlcHJlc2VudGF0aW9uIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTQsNiArMTMsNyBAQAogI2lmbmRlZiBMTFZNX0NMQU5HX0FTVF9URU1QTEFURU5BTUVfSAogI2RlZmluZSBMTFZNX0NMQU5HX0FTVF9URU1QTEFURU5BTUVfSAogCisjaW5jbHVkZSAiY2xhbmcvQVNUL05lc3RlZE5hbWVTcGVjaWZpZXIuaCIKICNpbmNsdWRlICJjbGFuZy9CYXNpYy9MTFZNLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvRm9sZGluZ1NldC5oIgogI2luY2x1ZGUgImxsdm0vQURUL1BvaW50ZXJJbnRQYWlyLmgiCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVGV4dE5vZGVEdW1wZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9UZXh0Tm9kZUR1bXBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjRjYzEKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVGV4dE5vZGVEdW1wZXIuaApAQCAtMCwwICsxLDM1MyBAQAorLy89PT0tLS0gVGV4dE5vZGVEdW1wZXIuaCAtIFByaW50aW5nIG9mIEFTVCBub2RlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCisvLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBBU1QgZHVtcGluZyBvZiBjb21wb25lbnRzIG9mIGluZGl2aWR1YWwgQVNUIG5vZGVzLgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9DTEFOR19BU1RfVEVYVE5PREVEVU1QRVJfSAorI2RlZmluZSBMTFZNX0NMQU5HX0FTVF9URVhUTk9ERURVTVBFUl9ICisKKyNpbmNsdWRlICJjbGFuZy9BU1QvQVNUQ29udGV4dC5oIgorI2luY2x1ZGUgImNsYW5nL0FTVC9BU1REdW1wZXJVdGlscy5oIgorI2luY2x1ZGUgImNsYW5nL0FTVC9BdHRyVmlzaXRvci5oIgorI2luY2x1ZGUgImNsYW5nL0FTVC9Db21tZW50Q29tbWFuZFRyYWl0cy5oIgorI2luY2x1ZGUgImNsYW5nL0FTVC9Db21tZW50VmlzaXRvci5oIgorI2luY2x1ZGUgImNsYW5nL0FTVC9EZWNsVmlzaXRvci5oIgorI2luY2x1ZGUgImNsYW5nL0FTVC9FeHByQ1hYLmgiCisjaW5jbHVkZSAiY2xhbmcvQVNUL1N0bXRWaXNpdG9yLmgiCisjaW5jbHVkZSAiY2xhbmcvQVNUL1RlbXBsYXRlQXJndW1lbnRWaXNpdG9yLmgiCisjaW5jbHVkZSAiY2xhbmcvQVNUL1R5cGVWaXNpdG9yLmgiCisKK25hbWVzcGFjZSBjbGFuZyB7CisKK2NsYXNzIFRleHRUcmVlU3RydWN0dXJlIHsKKyAgcmF3X29zdHJlYW0gJk9TOworICBjb25zdCBib29sIFNob3dDb2xvcnM7CisKKyAgLy8vIFBlbmRpbmdbaV0gaXMgYW4gYWN0aW9uIHRvIGR1bXAgYW4gZW50aXR5IGF0IGxldmVsIGkuCisgIGxsdm06OlNtYWxsVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZChib29sIElzTGFzdENoaWxkKT4sIDMyPiBQZW5kaW5nOworCisgIC8vLyBJbmRpY2F0ZXMgd2hldGhlciB3ZSdyZSBhdCB0aGUgdG9wIGxldmVsLgorICBib29sIFRvcExldmVsID0gdHJ1ZTsKKworICAvLy8gSW5kaWNhdGVzIGlmIHdlJ3JlIGhhbmRsaW5nIHRoZSBmaXJzdCBjaGlsZCBhZnRlciBlbnRlcmluZyBhIG5ldyBkZXB0aC4KKyAgYm9vbCBGaXJzdENoaWxkID0gdHJ1ZTsKKworICAvLy8gUHJlZml4IGZvciBjdXJyZW50bHktYmVpbmctZHVtcGVkIGVudGl0eS4KKyAgc3RkOjpzdHJpbmcgUHJlZml4OworCitwdWJsaWM6CisgIC8vLyBBZGQgYSBjaGlsZCBvZiB0aGUgY3VycmVudCBub2RlLiAgQ2FsbHMgRG9BZGRDaGlsZCB3aXRob3V0IGFyZ3VtZW50cworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRm4+IHZvaWQgQWRkQ2hpbGQoRm4gRG9BZGRDaGlsZCkgeworICAgIHJldHVybiBBZGRDaGlsZCgiIiwgRG9BZGRDaGlsZCk7CisgIH0KKworICAvLy8gQWRkIGEgY2hpbGQgb2YgdGhlIGN1cnJlbnQgbm9kZSB3aXRoIGFuIG9wdGlvbmFsIGxhYmVsLgorICAvLy8gQ2FsbHMgRG9BZGRDaGlsZCB3aXRob3V0IGFyZ3VtZW50cy4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEZuPiB2b2lkIEFkZENoaWxkKFN0cmluZ1JlZiBMYWJlbCwgRm4gRG9BZGRDaGlsZCkgeworICAgIC8vIElmIHdlJ3JlIGF0IHRoZSB0b3AgbGV2ZWwsIHRoZXJlJ3Mgbm90aGluZyBpbnRlcmVzdGluZyB0byBkbzsganVzdAorICAgIC8vIHJ1biB0aGUgZHVtcGVyLgorICAgIGlmIChUb3BMZXZlbCkgeworICAgICAgVG9wTGV2ZWwgPSBmYWxzZTsKKyAgICAgIERvQWRkQ2hpbGQoKTsKKyAgICAgIHdoaWxlICghUGVuZGluZy5lbXB0eSgpKSB7CisgICAgICAgIFBlbmRpbmcuYmFjaygpKHRydWUpOworICAgICAgICBQZW5kaW5nLnBvcF9iYWNrKCk7CisgICAgICB9CisgICAgICBQcmVmaXguY2xlYXIoKTsKKyAgICAgIE9TIDw8ICJcbiI7CisgICAgICBUb3BMZXZlbCA9IHRydWU7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UgbmVlZCB0byBjYXB0dXJlIGFuIG93bmluZy1zdHJpbmcgaW4gdGhlIGxhbWJkYSBiZWNhdXNlIHRoZSBsYW1iZGEKKyAgICAvLyBpcyBpbnZva2VkIGluIGEgZGVmZXJyZWQgbWFubmVyLgorICAgIHN0ZDo6c3RyaW5nIExhYmVsU3RyID0gTGFiZWw7CisgICAgYXV0byBEdW1wV2l0aEluZGVudCA9IFt0aGlzLCBEb0FkZENoaWxkLCBMYWJlbFN0cl0oYm9vbCBJc0xhc3RDaGlsZCkgeworICAgICAgLy8gUHJpbnQgb3V0IHRoZSBhcHByb3ByaWF0ZSB0cmVlIHN0cnVjdHVyZSBhbmQgd29yayBvdXQgdGhlIHByZWZpeCBmb3IKKyAgICAgIC8vIGNoaWxkcmVuIG9mIHRoaXMgbm9kZS4gRm9yIGluc3RhbmNlOgorICAgICAgLy8KKyAgICAgIC8vICAgQSAgICAgICAgUHJlZml4ID0gIiIKKyAgICAgIC8vICAgfC1CICAgICAgUHJlZml4ID0gInwgIgorICAgICAgLy8gICB8IGAtQyAgICBQcmVmaXggPSAifCAgICIKKyAgICAgIC8vICAgYC1EICAgICAgUHJlZml4ID0gIiAgIgorICAgICAgLy8gICAgIHwtRSAgICBQcmVmaXggPSAiICB8ICIKKyAgICAgIC8vICAgICBgLUYgICAgUHJlZml4ID0gIiAgICAiCisgICAgICAvLyAgIEcgICAgICAgIFByZWZpeCA9ICIiCisgICAgICAvLworICAgICAgLy8gTm90ZSB0aGF0IHRoZSBmaXJzdCBsZXZlbCBnZXRzIG5vIHByZWZpeC4KKyAgICAgIHsKKyAgICAgICAgT1MgPDwgJ1xuJzsKKyAgICAgICAgQ29sb3JTY29wZSBDb2xvcihPUywgU2hvd0NvbG9ycywgSW5kZW50Q29sb3IpOworICAgICAgICBPUyA8PCBQcmVmaXggPDwgKElzTGFzdENoaWxkID8gJ2AnIDogJ3wnKSA8PCAnLSc7CisgICAgICAgIGlmICghTGFiZWxTdHIuZW1wdHkoKSkKKyAgICAgICAgICBPUyA8PCBMYWJlbFN0ciA8PCAiOiAiOworCisgICAgICAgIHRoaXMtPlByZWZpeC5wdXNoX2JhY2soSXNMYXN0Q2hpbGQgPyAnICcgOiAnfCcpOworICAgICAgICB0aGlzLT5QcmVmaXgucHVzaF9iYWNrKCcgJyk7CisgICAgICB9CisKKyAgICAgIEZpcnN0Q2hpbGQgPSB0cnVlOworICAgICAgdW5zaWduZWQgRGVwdGggPSBQZW5kaW5nLnNpemUoKTsKKworICAgICAgRG9BZGRDaGlsZCgpOworCisgICAgICAvLyBJZiBhbnkgY2hpbGRyZW4gYXJlIGxlZnQsIHRoZXkncmUgdGhlIGxhc3QgYXQgdGhlaXIgbmVzdGluZyBsZXZlbC4KKyAgICAgIC8vIER1bXAgdGhvc2Ugb25lcyBvdXQgbm93LgorICAgICAgd2hpbGUgKERlcHRoIDwgUGVuZGluZy5zaXplKCkpIHsKKyAgICAgICAgUGVuZGluZy5iYWNrKCkodHJ1ZSk7CisgICAgICAgIHRoaXMtPlBlbmRpbmcucG9wX2JhY2soKTsKKyAgICAgIH0KKworICAgICAgLy8gUmVzdG9yZSB0aGUgb2xkIHByZWZpeC4KKyAgICAgIHRoaXMtPlByZWZpeC5yZXNpemUoUHJlZml4LnNpemUoKSAtIDIpOworICAgIH07CisKKyAgICBpZiAoRmlyc3RDaGlsZCkgeworICAgICAgUGVuZGluZy5wdXNoX2JhY2soc3RkOjptb3ZlKER1bXBXaXRoSW5kZW50KSk7CisgICAgfSBlbHNlIHsKKyAgICAgIFBlbmRpbmcuYmFjaygpKGZhbHNlKTsKKyAgICAgIFBlbmRpbmcuYmFjaygpID0gc3RkOjptb3ZlKER1bXBXaXRoSW5kZW50KTsKKyAgICB9CisgICAgRmlyc3RDaGlsZCA9IGZhbHNlOworICB9CisKKyAgVGV4dFRyZWVTdHJ1Y3R1cmUocmF3X29zdHJlYW0gJk9TLCBib29sIFNob3dDb2xvcnMpCisgICAgICA6IE9TKE9TKSwgU2hvd0NvbG9ycyhTaG93Q29sb3JzKSB7fQorfTsKKworY2xhc3MgVGV4dE5vZGVEdW1wZXIKKyAgICA6IHB1YmxpYyBUZXh0VHJlZVN0cnVjdHVyZSwKKyAgICAgIHB1YmxpYyBjb21tZW50czo6Q29uc3RDb21tZW50VmlzaXRvcjxUZXh0Tm9kZUR1bXBlciwgdm9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21tZW50czo6RnVsbENvbW1lbnQgKj4sCisgICAgICBwdWJsaWMgQ29uc3RBdHRyVmlzaXRvcjxUZXh0Tm9kZUR1bXBlcj4sCisgICAgICBwdWJsaWMgQ29uc3RUZW1wbGF0ZUFyZ3VtZW50VmlzaXRvcjxUZXh0Tm9kZUR1bXBlcj4sCisgICAgICBwdWJsaWMgQ29uc3RTdG10VmlzaXRvcjxUZXh0Tm9kZUR1bXBlcj4sCisgICAgICBwdWJsaWMgVHlwZVZpc2l0b3I8VGV4dE5vZGVEdW1wZXI+LAorICAgICAgcHVibGljIENvbnN0RGVjbFZpc2l0b3I8VGV4dE5vZGVEdW1wZXI+IHsKKyAgcmF3X29zdHJlYW0gJk9TOworICBjb25zdCBib29sIFNob3dDb2xvcnM7CisKKyAgLy8vIEtlZXAgdHJhY2sgb2YgdGhlIGxhc3QgbG9jYXRpb24gd2UgcHJpbnQgb3V0IHNvIHRoYXQgd2UgY2FuCisgIC8vLyBwcmludCBvdXQgZGVsdGFzIGZyb20gdGhlbiBvbiBvdXQuCisgIGNvbnN0IGNoYXIgKkxhc3RMb2NGaWxlbmFtZSA9ICIiOworICB1bnNpZ25lZCBMYXN0TG9jTGluZSA9IH4wVTsKKworICBjb25zdCBTb3VyY2VNYW5hZ2VyICpTTTsKKworICAvLy8gVGhlIHBvbGljeSB0byB1c2UgZm9yIHByaW50aW5nOyBjYW4gYmUgZGVmYXVsdGVkLgorICBQcmludGluZ1BvbGljeSBQcmludFBvbGljeTsKKworICBjb25zdCBjb21tZW50czo6Q29tbWFuZFRyYWl0cyAqVHJhaXRzOworCisgIGNvbnN0IGNoYXIgKmdldENvbW1hbmROYW1lKHVuc2lnbmVkIENvbW1hbmRJRCk7CisKK3B1YmxpYzoKKyAgVGV4dE5vZGVEdW1wZXIocmF3X29zdHJlYW0gJk9TLCBib29sIFNob3dDb2xvcnMsIGNvbnN0IFNvdXJjZU1hbmFnZXIgKlNNLAorICAgICAgICAgICAgICAgICBjb25zdCBQcmludGluZ1BvbGljeSAmUHJpbnRQb2xpY3ksCisgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1lbnRzOjpDb21tYW5kVHJhaXRzICpUcmFpdHMpOworCisgIHZvaWQgVmlzaXQoY29uc3QgY29tbWVudHM6OkNvbW1lbnQgKkMsIGNvbnN0IGNvbW1lbnRzOjpGdWxsQ29tbWVudCAqRkMpOworCisgIHZvaWQgVmlzaXQoY29uc3QgQXR0ciAqQSk7CisKKyAgdm9pZCBWaXNpdChjb25zdCBUZW1wbGF0ZUFyZ3VtZW50ICZUQSwgU291cmNlUmFuZ2UgUiwKKyAgICAgICAgICAgICBjb25zdCBEZWNsICpGcm9tID0gbnVsbHB0ciwgU3RyaW5nUmVmIExhYmVsID0ge30pOworCisgIHZvaWQgVmlzaXQoY29uc3QgU3RtdCAqTm9kZSk7CisKKyAgdm9pZCBWaXNpdChjb25zdCBUeXBlICpUKTsKKworICB2b2lkIFZpc2l0KFF1YWxUeXBlIFQpOworCisgIHZvaWQgVmlzaXQoY29uc3QgRGVjbCAqRCk7CisKKyAgdm9pZCBWaXNpdChjb25zdCBDWFhDdG9ySW5pdGlhbGl6ZXIgKkluaXQpOworCisgIHZvaWQgVmlzaXQoY29uc3QgT01QQ2xhdXNlICpDKTsKKworICB2b2lkIFZpc2l0KGNvbnN0IEJsb2NrRGVjbDo6Q2FwdHVyZSAmQyk7CisKKyAgdm9pZCBWaXNpdChjb25zdCBHZW5lcmljU2VsZWN0aW9uRXhwcjo6Q29uc3RBc3NvY2lhdGlvbiAmQSk7CisKKyAgdm9pZCBkdW1wUG9pbnRlcihjb25zdCB2b2lkICpQdHIpOworICB2b2lkIGR1bXBMb2NhdGlvbihTb3VyY2VMb2NhdGlvbiBMb2MpOworICB2b2lkIGR1bXBTb3VyY2VSYW5nZShTb3VyY2VSYW5nZSBSKTsKKyAgdm9pZCBkdW1wQmFyZVR5cGUoUXVhbFR5cGUgVCwgYm9vbCBEZXN1Z2FyID0gdHJ1ZSk7CisgIHZvaWQgZHVtcFR5cGUoUXVhbFR5cGUgVCk7CisgIHZvaWQgZHVtcEJhcmVEZWNsUmVmKGNvbnN0IERlY2wgKkQpOworICB2b2lkIGR1bXBOYW1lKGNvbnN0IE5hbWVkRGVjbCAqTkQpOworICB2b2lkIGR1bXBBY2Nlc3NTcGVjaWZpZXIoQWNjZXNzU3BlY2lmaWVyIEFTKTsKKworICB2b2lkIGR1bXBEZWNsUmVmKGNvbnN0IERlY2wgKkQsIFN0cmluZ1JlZiBMYWJlbCA9IHt9KTsKKworICB2b2lkIHZpc2l0VGV4dENvbW1lbnQoY29uc3QgY29tbWVudHM6OlRleHRDb21tZW50ICpDLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWVudHM6OkZ1bGxDb21tZW50ICopOworICB2b2lkIHZpc2l0SW5saW5lQ29tbWFuZENvbW1lbnQoY29uc3QgY29tbWVudHM6OklubGluZUNvbW1hbmRDb21tZW50ICpDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWVudHM6OkZ1bGxDb21tZW50ICopOworICB2b2lkIHZpc2l0SFRNTFN0YXJ0VGFnQ29tbWVudChjb25zdCBjb21tZW50czo6SFRNTFN0YXJ0VGFnQ29tbWVudCAqQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWVudHM6OkZ1bGxDb21tZW50ICopOworICB2b2lkIHZpc2l0SFRNTEVuZFRhZ0NvbW1lbnQoY29uc3QgY29tbWVudHM6OkhUTUxFbmRUYWdDb21tZW50ICpDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWVudHM6OkZ1bGxDb21tZW50ICopOworICB2b2lkIHZpc2l0QmxvY2tDb21tYW5kQ29tbWVudChjb25zdCBjb21tZW50czo6QmxvY2tDb21tYW5kQ29tbWVudCAqQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWVudHM6OkZ1bGxDb21tZW50ICopOworICB2b2lkIHZpc2l0UGFyYW1Db21tYW5kQ29tbWVudChjb25zdCBjb21tZW50czo6UGFyYW1Db21tYW5kQ29tbWVudCAqQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWVudHM6OkZ1bGxDb21tZW50ICpGQyk7CisgIHZvaWQgdmlzaXRUUGFyYW1Db21tYW5kQ29tbWVudChjb25zdCBjb21tZW50czo6VFBhcmFtQ29tbWFuZENvbW1lbnQgKkMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21tZW50czo6RnVsbENvbW1lbnQgKkZDKTsKKyAgdm9pZCB2aXNpdFZlcmJhdGltQmxvY2tDb21tZW50KGNvbnN0IGNvbW1lbnRzOjpWZXJiYXRpbUJsb2NrQ29tbWVudCAqQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1lbnRzOjpGdWxsQ29tbWVudCAqKTsKKyAgdm9pZAorICB2aXNpdFZlcmJhdGltQmxvY2tMaW5lQ29tbWVudChjb25zdCBjb21tZW50czo6VmVyYmF0aW1CbG9ja0xpbmVDb21tZW50ICpDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21tZW50czo6RnVsbENvbW1lbnQgKik7CisgIHZvaWQgdmlzaXRWZXJiYXRpbUxpbmVDb21tZW50KGNvbnN0IGNvbW1lbnRzOjpWZXJiYXRpbUxpbmVDb21tZW50ICpDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21tZW50czo6RnVsbENvbW1lbnQgKik7CisKKy8vIEltcGxlbWVudHMgVmlzaXQgbWV0aG9kcyBmb3IgQXR0cnMuCisjaW5jbHVkZSAiY2xhbmcvQVNUL0F0dHJUZXh0Tm9kZUR1bXAuaW5jIgorCisgIHZvaWQgVmlzaXROdWxsVGVtcGxhdGVBcmd1bWVudChjb25zdCBUZW1wbGF0ZUFyZ3VtZW50ICZUQSk7CisgIHZvaWQgVmlzaXRUeXBlVGVtcGxhdGVBcmd1bWVudChjb25zdCBUZW1wbGF0ZUFyZ3VtZW50ICZUQSk7CisgIHZvaWQgVmlzaXREZWNsYXJhdGlvblRlbXBsYXRlQXJndW1lbnQoY29uc3QgVGVtcGxhdGVBcmd1bWVudCAmVEEpOworICB2b2lkIFZpc2l0TnVsbFB0clRlbXBsYXRlQXJndW1lbnQoY29uc3QgVGVtcGxhdGVBcmd1bWVudCAmVEEpOworICB2b2lkIFZpc2l0SW50ZWdyYWxUZW1wbGF0ZUFyZ3VtZW50KGNvbnN0IFRlbXBsYXRlQXJndW1lbnQgJlRBKTsKKyAgdm9pZCBWaXNpdFRlbXBsYXRlVGVtcGxhdGVBcmd1bWVudChjb25zdCBUZW1wbGF0ZUFyZ3VtZW50ICZUQSk7CisgIHZvaWQgVmlzaXRUZW1wbGF0ZUV4cGFuc2lvblRlbXBsYXRlQXJndW1lbnQoY29uc3QgVGVtcGxhdGVBcmd1bWVudCAmVEEpOworICB2b2lkIFZpc2l0RXhwcmVzc2lvblRlbXBsYXRlQXJndW1lbnQoY29uc3QgVGVtcGxhdGVBcmd1bWVudCAmVEEpOworICB2b2lkIFZpc2l0UGFja1RlbXBsYXRlQXJndW1lbnQoY29uc3QgVGVtcGxhdGVBcmd1bWVudCAmVEEpOworCisgIHZvaWQgVmlzaXRJZlN0bXQoY29uc3QgSWZTdG10ICpOb2RlKTsKKyAgdm9pZCBWaXNpdFN3aXRjaFN0bXQoY29uc3QgU3dpdGNoU3RtdCAqTm9kZSk7CisgIHZvaWQgVmlzaXRXaGlsZVN0bXQoY29uc3QgV2hpbGVTdG10ICpOb2RlKTsKKyAgdm9pZCBWaXNpdExhYmVsU3RtdChjb25zdCBMYWJlbFN0bXQgKk5vZGUpOworICB2b2lkIFZpc2l0R290b1N0bXQoY29uc3QgR290b1N0bXQgKk5vZGUpOworICB2b2lkIFZpc2l0Q2FzZVN0bXQoY29uc3QgQ2FzZVN0bXQgKk5vZGUpOworICB2b2lkIFZpc2l0Q2FsbEV4cHIoY29uc3QgQ2FsbEV4cHIgKk5vZGUpOworICB2b2lkIFZpc2l0Q2FzdEV4cHIoY29uc3QgQ2FzdEV4cHIgKk5vZGUpOworICB2b2lkIFZpc2l0SW1wbGljaXRDYXN0RXhwcihjb25zdCBJbXBsaWNpdENhc3RFeHByICpOb2RlKTsKKyAgdm9pZCBWaXNpdERlY2xSZWZFeHByKGNvbnN0IERlY2xSZWZFeHByICpOb2RlKTsKKyAgdm9pZCBWaXNpdFByZWRlZmluZWRFeHByKGNvbnN0IFByZWRlZmluZWRFeHByICpOb2RlKTsKKyAgdm9pZCBWaXNpdENoYXJhY3RlckxpdGVyYWwoY29uc3QgQ2hhcmFjdGVyTGl0ZXJhbCAqTm9kZSk7CisgIHZvaWQgVmlzaXRJbnRlZ2VyTGl0ZXJhbChjb25zdCBJbnRlZ2VyTGl0ZXJhbCAqTm9kZSk7CisgIHZvaWQgVmlzaXRGaXhlZFBvaW50TGl0ZXJhbChjb25zdCBGaXhlZFBvaW50TGl0ZXJhbCAqTm9kZSk7CisgIHZvaWQgVmlzaXRGbG9hdGluZ0xpdGVyYWwoY29uc3QgRmxvYXRpbmdMaXRlcmFsICpOb2RlKTsKKyAgdm9pZCBWaXNpdFN0cmluZ0xpdGVyYWwoY29uc3QgU3RyaW5nTGl0ZXJhbCAqU3RyKTsKKyAgdm9pZCBWaXNpdEluaXRMaXN0RXhwcihjb25zdCBJbml0TGlzdEV4cHIgKklMRSk7CisgIHZvaWQgVmlzaXRHZW5lcmljU2VsZWN0aW9uRXhwcihjb25zdCBHZW5lcmljU2VsZWN0aW9uRXhwciAqRSk7CisgIHZvaWQgVmlzaXRVbmFyeU9wZXJhdG9yKGNvbnN0IFVuYXJ5T3BlcmF0b3IgKk5vZGUpOworICB2b2lkIFZpc2l0VW5hcnlFeHByT3JUeXBlVHJhaXRFeHByKGNvbnN0IFVuYXJ5RXhwck9yVHlwZVRyYWl0RXhwciAqTm9kZSk7CisgIHZvaWQgVmlzaXRNZW1iZXJFeHByKGNvbnN0IE1lbWJlckV4cHIgKk5vZGUpOworICB2b2lkIFZpc2l0RXh0VmVjdG9yRWxlbWVudEV4cHIoY29uc3QgRXh0VmVjdG9yRWxlbWVudEV4cHIgKk5vZGUpOworICB2b2lkIFZpc2l0QmluYXJ5T3BlcmF0b3IoY29uc3QgQmluYXJ5T3BlcmF0b3IgKk5vZGUpOworICB2b2lkIFZpc2l0Q29tcG91bmRBc3NpZ25PcGVyYXRvcihjb25zdCBDb21wb3VuZEFzc2lnbk9wZXJhdG9yICpOb2RlKTsKKyAgdm9pZCBWaXNpdEFkZHJMYWJlbEV4cHIoY29uc3QgQWRkckxhYmVsRXhwciAqTm9kZSk7CisgIHZvaWQgVmlzaXRDWFhOYW1lZENhc3RFeHByKGNvbnN0IENYWE5hbWVkQ2FzdEV4cHIgKk5vZGUpOworICB2b2lkIFZpc2l0Q1hYQm9vbExpdGVyYWxFeHByKGNvbnN0IENYWEJvb2xMaXRlcmFsRXhwciAqTm9kZSk7CisgIHZvaWQgVmlzaXRDWFhUaGlzRXhwcihjb25zdCBDWFhUaGlzRXhwciAqTm9kZSk7CisgIHZvaWQgVmlzaXRDWFhGdW5jdGlvbmFsQ2FzdEV4cHIoY29uc3QgQ1hYRnVuY3Rpb25hbENhc3RFeHByICpOb2RlKTsKKyAgdm9pZCBWaXNpdENYWFVucmVzb2x2ZWRDb25zdHJ1Y3RFeHByKGNvbnN0IENYWFVucmVzb2x2ZWRDb25zdHJ1Y3RFeHByICpOb2RlKTsKKyAgdm9pZCBWaXNpdENYWENvbnN0cnVjdEV4cHIoY29uc3QgQ1hYQ29uc3RydWN0RXhwciAqTm9kZSk7CisgIHZvaWQgVmlzaXRDWFhCaW5kVGVtcG9yYXJ5RXhwcihjb25zdCBDWFhCaW5kVGVtcG9yYXJ5RXhwciAqTm9kZSk7CisgIHZvaWQgVmlzaXRDWFhOZXdFeHByKGNvbnN0IENYWE5ld0V4cHIgKk5vZGUpOworICB2b2lkIFZpc2l0Q1hYRGVsZXRlRXhwcihjb25zdCBDWFhEZWxldGVFeHByICpOb2RlKTsKKyAgdm9pZCBWaXNpdE1hdGVyaWFsaXplVGVtcG9yYXJ5RXhwcihjb25zdCBNYXRlcmlhbGl6ZVRlbXBvcmFyeUV4cHIgKk5vZGUpOworICB2b2lkIFZpc2l0RXhwcldpdGhDbGVhbnVwcyhjb25zdCBFeHByV2l0aENsZWFudXBzICpOb2RlKTsKKyAgdm9pZCBWaXNpdFVucmVzb2x2ZWRMb29rdXBFeHByKGNvbnN0IFVucmVzb2x2ZWRMb29rdXBFeHByICpOb2RlKTsKKyAgdm9pZCBWaXNpdFNpemVPZlBhY2tFeHByKGNvbnN0IFNpemVPZlBhY2tFeHByICpOb2RlKTsKKyAgdm9pZAorICBWaXNpdENYWERlcGVuZGVudFNjb3BlTWVtYmVyRXhwcihjb25zdCBDWFhEZXBlbmRlbnRTY29wZU1lbWJlckV4cHIgKk5vZGUpOworICB2b2lkIFZpc2l0T2JqQ0F0Q2F0Y2hTdG10KGNvbnN0IE9iakNBdENhdGNoU3RtdCAqTm9kZSk7CisgIHZvaWQgVmlzaXRPYmpDRW5jb2RlRXhwcihjb25zdCBPYmpDRW5jb2RlRXhwciAqTm9kZSk7CisgIHZvaWQgVmlzaXRPYmpDTWVzc2FnZUV4cHIoY29uc3QgT2JqQ01lc3NhZ2VFeHByICpOb2RlKTsKKyAgdm9pZCBWaXNpdE9iakNCb3hlZEV4cHIoY29uc3QgT2JqQ0JveGVkRXhwciAqTm9kZSk7CisgIHZvaWQgVmlzaXRPYmpDU2VsZWN0b3JFeHByKGNvbnN0IE9iakNTZWxlY3RvckV4cHIgKk5vZGUpOworICB2b2lkIFZpc2l0T2JqQ1Byb3RvY29sRXhwcihjb25zdCBPYmpDUHJvdG9jb2xFeHByICpOb2RlKTsKKyAgdm9pZCBWaXNpdE9iakNQcm9wZXJ0eVJlZkV4cHIoY29uc3QgT2JqQ1Byb3BlcnR5UmVmRXhwciAqTm9kZSk7CisgIHZvaWQgVmlzaXRPYmpDU3Vic2NyaXB0UmVmRXhwcihjb25zdCBPYmpDU3Vic2NyaXB0UmVmRXhwciAqTm9kZSk7CisgIHZvaWQgVmlzaXRPYmpDSXZhclJlZkV4cHIoY29uc3QgT2JqQ0l2YXJSZWZFeHByICpOb2RlKTsKKyAgdm9pZCBWaXNpdE9iakNCb29sTGl0ZXJhbEV4cHIoY29uc3QgT2JqQ0Jvb2xMaXRlcmFsRXhwciAqTm9kZSk7CisKKyAgdm9pZCBWaXNpdFJWYWx1ZVJlZmVyZW5jZVR5cGUoY29uc3QgUmVmZXJlbmNlVHlwZSAqVCk7CisgIHZvaWQgVmlzaXRBcnJheVR5cGUoY29uc3QgQXJyYXlUeXBlICpUKTsKKyAgdm9pZCBWaXNpdENvbnN0YW50QXJyYXlUeXBlKGNvbnN0IENvbnN0YW50QXJyYXlUeXBlICpUKTsKKyAgdm9pZCBWaXNpdFZhcmlhYmxlQXJyYXlUeXBlKGNvbnN0IFZhcmlhYmxlQXJyYXlUeXBlICpUKTsKKyAgdm9pZCBWaXNpdERlcGVuZGVudFNpemVkQXJyYXlUeXBlKGNvbnN0IERlcGVuZGVudFNpemVkQXJyYXlUeXBlICpUKTsKKyAgdm9pZCBWaXNpdERlcGVuZGVudFNpemVkRXh0VmVjdG9yVHlwZShjb25zdCBEZXBlbmRlbnRTaXplZEV4dFZlY3RvclR5cGUgKlQpOworICB2b2lkIFZpc2l0VmVjdG9yVHlwZShjb25zdCBWZWN0b3JUeXBlICpUKTsKKyAgdm9pZCBWaXNpdEZ1bmN0aW9uVHlwZShjb25zdCBGdW5jdGlvblR5cGUgKlQpOworICB2b2lkIFZpc2l0RnVuY3Rpb25Qcm90b1R5cGUoY29uc3QgRnVuY3Rpb25Qcm90b1R5cGUgKlQpOworICB2b2lkIFZpc2l0VW5yZXNvbHZlZFVzaW5nVHlwZShjb25zdCBVbnJlc29sdmVkVXNpbmdUeXBlICpUKTsKKyAgdm9pZCBWaXNpdFR5cGVkZWZUeXBlKGNvbnN0IFR5cGVkZWZUeXBlICpUKTsKKyAgdm9pZCBWaXNpdFVuYXJ5VHJhbnNmb3JtVHlwZShjb25zdCBVbmFyeVRyYW5zZm9ybVR5cGUgKlQpOworICB2b2lkIFZpc2l0VGFnVHlwZShjb25zdCBUYWdUeXBlICpUKTsKKyAgdm9pZCBWaXNpdFRlbXBsYXRlVHlwZVBhcm1UeXBlKGNvbnN0IFRlbXBsYXRlVHlwZVBhcm1UeXBlICpUKTsKKyAgdm9pZCBWaXNpdEF1dG9UeXBlKGNvbnN0IEF1dG9UeXBlICpUKTsKKyAgdm9pZCBWaXNpdFRlbXBsYXRlU3BlY2lhbGl6YXRpb25UeXBlKGNvbnN0IFRlbXBsYXRlU3BlY2lhbGl6YXRpb25UeXBlICpUKTsKKyAgdm9pZCBWaXNpdEluamVjdGVkQ2xhc3NOYW1lVHlwZShjb25zdCBJbmplY3RlZENsYXNzTmFtZVR5cGUgKlQpOworICB2b2lkIFZpc2l0T2JqQ0ludGVyZmFjZVR5cGUoY29uc3QgT2JqQ0ludGVyZmFjZVR5cGUgKlQpOworICB2b2lkIFZpc2l0UGFja0V4cGFuc2lvblR5cGUoY29uc3QgUGFja0V4cGFuc2lvblR5cGUgKlQpOworCisgIHZvaWQgVmlzaXRMYWJlbERlY2woY29uc3QgTGFiZWxEZWNsICpEKTsKKyAgdm9pZCBWaXNpdFR5cGVkZWZEZWNsKGNvbnN0IFR5cGVkZWZEZWNsICpEKTsKKyAgdm9pZCBWaXNpdEVudW1EZWNsKGNvbnN0IEVudW1EZWNsICpEKTsKKyAgdm9pZCBWaXNpdFJlY29yZERlY2woY29uc3QgUmVjb3JkRGVjbCAqRCk7CisgIHZvaWQgVmlzaXRFbnVtQ29uc3RhbnREZWNsKGNvbnN0IEVudW1Db25zdGFudERlY2wgKkQpOworICB2b2lkIFZpc2l0SW5kaXJlY3RGaWVsZERlY2woY29uc3QgSW5kaXJlY3RGaWVsZERlY2wgKkQpOworICB2b2lkIFZpc2l0RnVuY3Rpb25EZWNsKGNvbnN0IEZ1bmN0aW9uRGVjbCAqRCk7CisgIHZvaWQgVmlzaXRGaWVsZERlY2woY29uc3QgRmllbGREZWNsICpEKTsKKyAgdm9pZCBWaXNpdFZhckRlY2woY29uc3QgVmFyRGVjbCAqRCk7CisgIHZvaWQgVmlzaXRCaW5kaW5nRGVjbChjb25zdCBCaW5kaW5nRGVjbCAqRCk7CisgIHZvaWQgVmlzaXRDYXB0dXJlZERlY2woY29uc3QgQ2FwdHVyZWREZWNsICpEKTsKKyAgdm9pZCBWaXNpdEltcG9ydERlY2woY29uc3QgSW1wb3J0RGVjbCAqRCk7CisgIHZvaWQgVmlzaXRQcmFnbWFDb21tZW50RGVjbChjb25zdCBQcmFnbWFDb21tZW50RGVjbCAqRCk7CisgIHZvaWQgVmlzaXRQcmFnbWFEZXRlY3RNaXNtYXRjaERlY2woY29uc3QgUHJhZ21hRGV0ZWN0TWlzbWF0Y2hEZWNsICpEKTsKKyAgdm9pZCBWaXNpdE9NUERlY2xhcmVSZWR1Y3Rpb25EZWNsKGNvbnN0IE9NUERlY2xhcmVSZWR1Y3Rpb25EZWNsICpEKTsKKyAgdm9pZCBWaXNpdE9NUFJlcXVpcmVzRGVjbChjb25zdCBPTVBSZXF1aXJlc0RlY2wgKkQpOworICB2b2lkIFZpc2l0T01QQ2FwdHVyZWRFeHByRGVjbChjb25zdCBPTVBDYXB0dXJlZEV4cHJEZWNsICpEKTsKKyAgdm9pZCBWaXNpdE5hbWVzcGFjZURlY2woY29uc3QgTmFtZXNwYWNlRGVjbCAqRCk7CisgIHZvaWQgVmlzaXRVc2luZ0RpcmVjdGl2ZURlY2woY29uc3QgVXNpbmdEaXJlY3RpdmVEZWNsICpEKTsKKyAgdm9pZCBWaXNpdE5hbWVzcGFjZUFsaWFzRGVjbChjb25zdCBOYW1lc3BhY2VBbGlhc0RlY2wgKkQpOworICB2b2lkIFZpc2l0VHlwZUFsaWFzRGVjbChjb25zdCBUeXBlQWxpYXNEZWNsICpEKTsKKyAgdm9pZCBWaXNpdFR5cGVBbGlhc1RlbXBsYXRlRGVjbChjb25zdCBUeXBlQWxpYXNUZW1wbGF0ZURlY2wgKkQpOworICB2b2lkIFZpc2l0Q1hYUmVjb3JkRGVjbChjb25zdCBDWFhSZWNvcmREZWNsICpEKTsKKyAgdm9pZCBWaXNpdEZ1bmN0aW9uVGVtcGxhdGVEZWNsKGNvbnN0IEZ1bmN0aW9uVGVtcGxhdGVEZWNsICpEKTsKKyAgdm9pZCBWaXNpdENsYXNzVGVtcGxhdGVEZWNsKGNvbnN0IENsYXNzVGVtcGxhdGVEZWNsICpEKTsKKyAgdm9pZCBWaXNpdEJ1aWx0aW5UZW1wbGF0ZURlY2woY29uc3QgQnVpbHRpblRlbXBsYXRlRGVjbCAqRCk7CisgIHZvaWQgVmlzaXRWYXJUZW1wbGF0ZURlY2woY29uc3QgVmFyVGVtcGxhdGVEZWNsICpEKTsKKyAgdm9pZCBWaXNpdFRlbXBsYXRlVHlwZVBhcm1EZWNsKGNvbnN0IFRlbXBsYXRlVHlwZVBhcm1EZWNsICpEKTsKKyAgdm9pZCBWaXNpdE5vblR5cGVUZW1wbGF0ZVBhcm1EZWNsKGNvbnN0IE5vblR5cGVUZW1wbGF0ZVBhcm1EZWNsICpEKTsKKyAgdm9pZCBWaXNpdFRlbXBsYXRlVGVtcGxhdGVQYXJtRGVjbChjb25zdCBUZW1wbGF0ZVRlbXBsYXRlUGFybURlY2wgKkQpOworICB2b2lkIFZpc2l0VXNpbmdEZWNsKGNvbnN0IFVzaW5nRGVjbCAqRCk7CisgIHZvaWQgVmlzaXRVbnJlc29sdmVkVXNpbmdUeXBlbmFtZURlY2woY29uc3QgVW5yZXNvbHZlZFVzaW5nVHlwZW5hbWVEZWNsICpEKTsKKyAgdm9pZCBWaXNpdFVucmVzb2x2ZWRVc2luZ1ZhbHVlRGVjbChjb25zdCBVbnJlc29sdmVkVXNpbmdWYWx1ZURlY2wgKkQpOworICB2b2lkIFZpc2l0VXNpbmdTaGFkb3dEZWNsKGNvbnN0IFVzaW5nU2hhZG93RGVjbCAqRCk7CisgIHZvaWQgVmlzaXRDb25zdHJ1Y3RvclVzaW5nU2hhZG93RGVjbChjb25zdCBDb25zdHJ1Y3RvclVzaW5nU2hhZG93RGVjbCAqRCk7CisgIHZvaWQgVmlzaXRMaW5rYWdlU3BlY0RlY2woY29uc3QgTGlua2FnZVNwZWNEZWNsICpEKTsKKyAgdm9pZCBWaXNpdEFjY2Vzc1NwZWNEZWNsKGNvbnN0IEFjY2Vzc1NwZWNEZWNsICpEKTsKKyAgdm9pZCBWaXNpdEZyaWVuZERlY2woY29uc3QgRnJpZW5kRGVjbCAqRCk7CisgIHZvaWQgVmlzaXRPYmpDSXZhckRlY2woY29uc3QgT2JqQ0l2YXJEZWNsICpEKTsKKyAgdm9pZCBWaXNpdE9iakNNZXRob2REZWNsKGNvbnN0IE9iakNNZXRob2REZWNsICpEKTsKKyAgdm9pZCBWaXNpdE9iakNUeXBlUGFyYW1EZWNsKGNvbnN0IE9iakNUeXBlUGFyYW1EZWNsICpEKTsKKyAgdm9pZCBWaXNpdE9iakNDYXRlZ29yeURlY2woY29uc3QgT2JqQ0NhdGVnb3J5RGVjbCAqRCk7CisgIHZvaWQgVmlzaXRPYmpDQ2F0ZWdvcnlJbXBsRGVjbChjb25zdCBPYmpDQ2F0ZWdvcnlJbXBsRGVjbCAqRCk7CisgIHZvaWQgVmlzaXRPYmpDUHJvdG9jb2xEZWNsKGNvbnN0IE9iakNQcm90b2NvbERlY2wgKkQpOworICB2b2lkIFZpc2l0T2JqQ0ludGVyZmFjZURlY2woY29uc3QgT2JqQ0ludGVyZmFjZURlY2wgKkQpOworICB2b2lkIFZpc2l0T2JqQ0ltcGxlbWVudGF0aW9uRGVjbChjb25zdCBPYmpDSW1wbGVtZW50YXRpb25EZWNsICpEKTsKKyAgdm9pZCBWaXNpdE9iakNDb21wYXRpYmxlQWxpYXNEZWNsKGNvbnN0IE9iakNDb21wYXRpYmxlQWxpYXNEZWNsICpEKTsKKyAgdm9pZCBWaXNpdE9iakNQcm9wZXJ0eURlY2woY29uc3QgT2JqQ1Byb3BlcnR5RGVjbCAqRCk7CisgIHZvaWQgVmlzaXRPYmpDUHJvcGVydHlJbXBsRGVjbChjb25zdCBPYmpDUHJvcGVydHlJbXBsRGVjbCAqRCk7CisgIHZvaWQgVmlzaXRCbG9ja0RlY2woY29uc3QgQmxvY2tEZWNsICpEKTsKKworcHJpdmF0ZToKKyAgdm9pZCBkdW1wQ1hYVGVtcG9yYXJ5KGNvbnN0IENYWFRlbXBvcmFyeSAqVGVtcG9yYXJ5KTsKK307CisKK30gLy8gbmFtZXNwYWNlIGNsYW5nCisKKyNlbmRpZiAvLyBMTFZNX0NMQU5HX0FTVF9URVhUTk9ERURVTVBFUl9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVHlwZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1R5cGUuaAppbmRleCAzNjljZTZkLi41ZTFkZjJmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVHlwZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9UeXBlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVHlwZS5oIC0gQyBMYW5ndWFnZSBGYW1pbHkgVHlwZSBSZXByZXNlbnRhdGlvbiAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTk1LDkgKzk0LDYgQEAKICAgICBlbnVtIHsgTnVtTG93Qml0c0F2YWlsYWJsZSA9IGNsYW5nOjpUeXBlQWxpZ25tZW50SW5CaXRzIH07CiAgIH07CiAKLSAgdGVtcGxhdGUgPD4KLSAgc3RydWN0IGlzUG9kTGlrZTxjbGFuZzo6UXVhbFR5cGU+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotCiB9IC8vIG5hbWVzcGFjZSBsbHZtCiAKIG5hbWVzcGFjZSBjbGFuZyB7CkBAIC0yNTYsMjggKzI1MiwyNCBAQAogICB9CiAKICAgYm9vbCBoYXNDb25zdCgpIGNvbnN0IHsgcmV0dXJuIE1hc2sgJiBDb25zdDsgfQotICB2b2lkIHNldENvbnN0KGJvb2wgZmxhZykgewotICAgIE1hc2sgPSAoTWFzayAmIH5Db25zdCkgfCAoZmxhZyA/IENvbnN0IDogMCk7Ci0gIH0KKyAgYm9vbCBoYXNPbmx5Q29uc3QoKSBjb25zdCB7IHJldHVybiBNYXNrID09IENvbnN0OyB9CiAgIHZvaWQgcmVtb3ZlQ29uc3QoKSB7IE1hc2sgJj0gfkNvbnN0OyB9CiAgIHZvaWQgYWRkQ29uc3QoKSB7IE1hc2sgfD0gQ29uc3Q7IH0KIAogICBib29sIGhhc1ZvbGF0aWxlKCkgY29uc3QgeyByZXR1cm4gTWFzayAmIFZvbGF0aWxlOyB9Ci0gIHZvaWQgc2V0Vm9sYXRpbGUoYm9vbCBmbGFnKSB7Ci0gICAgTWFzayA9IChNYXNrICYgflZvbGF0aWxlKSB8IChmbGFnID8gVm9sYXRpbGUgOiAwKTsKLSAgfQorICBib29sIGhhc09ubHlWb2xhdGlsZSgpIGNvbnN0IHsgcmV0dXJuIE1hc2sgPT0gVm9sYXRpbGU7IH0KICAgdm9pZCByZW1vdmVWb2xhdGlsZSgpIHsgTWFzayAmPSB+Vm9sYXRpbGU7IH0KICAgdm9pZCBhZGRWb2xhdGlsZSgpIHsgTWFzayB8PSBWb2xhdGlsZTsgfQogCiAgIGJvb2wgaGFzUmVzdHJpY3QoKSBjb25zdCB7IHJldHVybiBNYXNrICYgUmVzdHJpY3Q7IH0KLSAgdm9pZCBzZXRSZXN0cmljdChib29sIGZsYWcpIHsKLSAgICBNYXNrID0gKE1hc2sgJiB+UmVzdHJpY3QpIHwgKGZsYWcgPyBSZXN0cmljdCA6IDApOwotICB9CisgIGJvb2wgaGFzT25seVJlc3RyaWN0KCkgY29uc3QgeyByZXR1cm4gTWFzayA9PSBSZXN0cmljdDsgfQogICB2b2lkIHJlbW92ZVJlc3RyaWN0KCkgeyBNYXNrICY9IH5SZXN0cmljdDsgfQogICB2b2lkIGFkZFJlc3RyaWN0KCkgeyBNYXNrIHw9IFJlc3RyaWN0OyB9CiAKICAgYm9vbCBoYXNDVlJRdWFsaWZpZXJzKCkgY29uc3QgeyByZXR1cm4gZ2V0Q1ZSUXVhbGlmaWVycygpOyB9CiAgIHVuc2lnbmVkIGdldENWUlF1YWxpZmllcnMoKSBjb25zdCB7IHJldHVybiBNYXNrICYgQ1ZSTWFzazsgfQorICB1bnNpZ25lZCBnZXRDVlJVUXVhbGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIE1hc2sgJiAoQ1ZSTWFzayB8IFVNYXNrKTsgfQorCiAgIHZvaWQgc2V0Q1ZSUXVhbGlmaWVycyh1bnNpZ25lZCBtYXNrKSB7CiAgICAgYXNzZXJ0KCEobWFzayAmIH5DVlJNYXNrKSAmJiAiYml0bWFzayBjb250YWlucyBub24tQ1ZSIGJpdHMiKTsKICAgICBNYXNrID0gKE1hc2sgJiB+Q1ZSTWFzaykgfCBtYXNrOwpAQCAtOTg0LDkgKzk3Niw3IEBACiAKICAgdm9pZCBwcmludChyYXdfb3N0cmVhbSAmT1MsIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3ksCiAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJlBsYWNlSG9sZGVyID0gVHdpbmUoKSwKLSAgICAgICAgICAgICB1bnNpZ25lZCBJbmRlbnRhdGlvbiA9IDApIGNvbnN0IHsKLSAgICBwcmludChzcGxpdCgpLCBPUywgUG9saWN5LCBQbGFjZUhvbGRlciwgSW5kZW50YXRpb24pOwotICB9CisgICAgICAgICAgICAgdW5zaWduZWQgSW5kZW50YXRpb24gPSAwKSBjb25zdDsKIAogICBzdGF0aWMgdm9pZCBwcmludChTcGxpdFF1YWxUeXBlIHNwbGl0LCByYXdfb3N0cmVhbSAmT1MsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByaW50aW5nUG9saWN5ICZwb2xpY3ksIGNvbnN0IFR3aW5lICZQbGFjZUhvbGRlciwKQEAgLTEwMDAsOSArOTkwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgSW5kZW50YXRpb24gPSAwKTsKIAogICB2b2lkIGdldEFzU3RyaW5nSW50ZXJuYWwoc3RkOjpzdHJpbmcgJlN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0IHsKLSAgICByZXR1cm4gZ2V0QXNTdHJpbmdJbnRlcm5hbChzcGxpdCgpLCBTdHIsIFBvbGljeSk7Ci0gIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByaW50aW5nUG9saWN5ICZQb2xpY3kpIGNvbnN0OwogCiAgIHN0YXRpYyB2b2lkIGdldEFzU3RyaW5nSW50ZXJuYWwoU3BsaXRRdWFsVHlwZSBzcGxpdCwgc3RkOjpzdHJpbmcgJm91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcmludGluZ1BvbGljeSAmcG9saWN5KSB7CkBAIC0xMTMzLDYgKzExMjEsMTIgQEAKICAgfTsKIAogICAvLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIG5vbi10cml2aWFsIHR5cGUgdGhhdCB3b3VsZCBjYXVzZSBhIEMgc3RydWN0CisgIC8vLyB0cmFuc2l0aXZlbHkgY29udGFpbmluZyB0aGlzIHR5cGUgdG8gYmUgbm9uLXRyaXZpYWwuIFRoaXMgZnVuY3Rpb24gY2FuIGJlCisgIC8vLyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZmllbGQgb2YgdGhpcyB0eXBlIGNhbiBiZSBkZWNsYXJlZCBpbnNpZGUgYSBDCisgIC8vLyB1bmlvbi4KKyAgYm9vbCBpc05vblRyaXZpYWxQcmltaXRpdmVDVHlwZShjb25zdCBBU1RDb250ZXh0ICZDdHgpIGNvbnN0OworCisgIC8vLyBDaGVjayBpZiB0aGlzIGlzIGEgbm9uLXRyaXZpYWwgdHlwZSB0aGF0IHdvdWxkIGNhdXNlIGEgQyBzdHJ1Y3QKICAgLy8vIHRyYW5zaXRpdmVseSBjb250YWluaW5nIHRoaXMgdHlwZSB0byBiZSBub24tdHJpdmlhbCB0byBjb3B5IGFuZCByZXR1cm4gdGhlCiAgIC8vLyBraW5kLgogICBQcmltaXRpdmVDb3B5S2luZCBpc05vblRyaXZpYWxUb1ByaW1pdGl2ZUNvcHkoKSBjb25zdDsKQEAgLTE1MjYsNyArMTUyMCw5IEBACiAgICAgLy8vCiAgICAgLy8vIEMrKyA4LjMuNXA0OiBUaGUgcmV0dXJuIHR5cGUsIHRoZSBwYXJhbWV0ZXIgdHlwZSBsaXN0IGFuZCB0aGUKICAgICAvLy8gY3YtcXVhbGlmaWVyLXNlcSwgWy4uLl0sIGFyZSBwYXJ0IG9mIHRoZSBmdW5jdGlvbiB0eXBlLgotICAgIHVuc2lnbmVkIFR5cGVRdWFscyA6IDQ7CisgICAgdW5zaWduZWQgRmFzdFR5cGVRdWFscyA6IFF1YWxpZmllcnM6OkZhc3RXaWR0aDsKKyAgICAvLy8gV2hldGhlciB0aGlzIGZ1bmN0aW9uIGhhcyBleHRlbmRlZCBRdWFsaWZpZXJzLgorICAgIHVuc2lnbmVkIEhhc0V4dFF1YWxzIDogMTsKIAogICAgIC8vLyBUaGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgdGhpcyBmdW5jdGlvbiBoYXMsIG5vdCBjb3VudGluZyAnLi4uJy4KICAgICAvLy8gQWNjb3JkaW5nIHRvIFtpbXBsaW1pdHNdIDggYml0cyBzaG91bGQgYmUgZW5vdWdoIGhlcmUgYnV0IHRoaXMgaXMKQEAgLTE5OTIsNyArMTk4OCw3IEBACiAgIGJvb2wgaXNPYmpDUXVhbGlmaWVkQ2xhc3NUeXBlKCkgY29uc3Q7ICAgICAgICAvLyBDbGFzczxmb28+CiAgIGJvb2wgaXNPYmpDT2JqZWN0T3JJbnRlcmZhY2VUeXBlKCkgY29uc3Q7CiAgIGJvb2wgaXNPYmpDSWRUeXBlKCkgY29uc3Q7ICAgICAgICAgICAgICAgICAgICAvLyBpZAotCisgIGJvb2wgaXNEZWNsdHlwZVR5cGUoKSBjb25zdDsKICAgLy8vIFdhcyB0aGlzIHR5cGUgd3JpdHRlbiB3aXRoIHRoZSBzcGVjaWFsIGluZXJ0LWluLUFSQyBfX3Vuc2FmZV91bnJldGFpbmVkCiAgIC8vLyBxdWFsaWZpZXI/CiAgIC8vLwpAQCAtMjA0Niw2ICsyMDQyLDEzIEBACiAgIGJvb2wgaXNRdWV1ZVQoKSBjb25zdDsgICAgICAgICAgICAgICAgICAgICAgICAvLyBPcGVuQ0wgcXVldWVfdAogICBib29sIGlzUmVzZXJ2ZUlEVCgpIGNvbnN0OyAgICAgICAgICAgICAgICAgICAgLy8gT3BlbkNMIHJlc2VydmVfaWRfdAogCisjZGVmaW5lIEVYVF9PUEFRVUVfVFlQRShFeHRUeXBlLCBJZCwgRXh0KSBcCisgIGJvb2wgaXMjI0lkIyNUeXBlKCkgY29uc3Q7CisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvT3BlbkNMRXh0ZW5zaW9uVHlwZXMuZGVmIgorICAvLyBUeXBlIGRlZmluZWQgaW4gY2xfaW50ZWxfZGV2aWNlX3NpZGVfYXZjX21vdGlvbl9lc3RpbWF0aW9uIE9wZW5DTCBleHRlbnNpb24KKyAgYm9vbCBpc09DTEludGVsU3ViZ3JvdXBBVkNUeXBlKCkgY29uc3Q7CisgIGJvb2wgaXNPQ0xFeHRPcGFxdWVUeXBlKCkgY29uc3Q7ICAgICAgICAgICAgICAvLyBBbnkgT3BlbkNMIGV4dGVuc2lvbiB0eXBlCisKICAgYm9vbCBpc1BpcGVUeXBlKCkgY29uc3Q7ICAgICAgICAgICAgICAgICAgICAgIC8vIE9wZW5DTCBwaXBlIHR5cGUKICAgYm9vbCBpc09wZW5DTFNwZWNpZmljVHlwZSgpIGNvbnN0OyAgICAgICAgICAgIC8vIEFueSBPcGVuQ0wgc3BlY2lmaWMgdHlwZQogCkBAIC0yMDY2LDcgKzIwNjksOCBAQAogICAgIFNUS19JbnRlZ3JhbCwKICAgICBTVEtfRmxvYXRpbmcsCiAgICAgU1RLX0ludGVncmFsQ29tcGxleCwKLSAgICBTVEtfRmxvYXRpbmdDb21wbGV4CisgICAgU1RLX0Zsb2F0aW5nQ29tcGxleCwKKyAgICBTVEtfRml4ZWRQb2ludAogICB9OwogCiAgIC8vLyBHaXZlbiB0aGF0IHRoaXMgaXMgYSBzY2FsYXIgdHlwZSwgY2xhc3NpZnkgaXQuCkBAIC0yMjY3LDYgKzIyNzEsOSBAQAogICAvLy8gSVNPL0lFQyBKVEMxIFNDMjIgV0cxNCBOMTE2OS4KICAgYm9vbCBpc0ZpeGVkUG9pbnRUeXBlKCkgY29uc3Q7CiAKKyAgLy8vIFJldHVybiB0cnVlIGlmIHRoaXMgaXMgYSBmaXhlZCBwb2ludCBvciBpbnRlZ2VyIHR5cGUuCisgIGJvb2wgaXNGaXhlZFBvaW50T3JJbnRlZ2VyVHlwZSgpIGNvbnN0OworCiAgIC8vLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGlzIGEgc2F0dXJhdGVkIGZpeGVkIHBvaW50IHR5cGUgYWNjb3JkaW5nIHRvCiAgIC8vLyBJU08vSUVDIEpUQzEgU0MyMiBXRzE0IE4xMTY5LiBUaGlzIHR5cGUgY2FuIGJlIHNpZ25lZCBvciB1bnNpZ25lZC4KICAgYm9vbCBpc1NhdHVyYXRlZEZpeGVkUG9pbnRUeXBlKCkgY29uc3Q7CkBAIC0yMzkyLDYgKzIzOTksOSBAQAogLy8gT3BlbkNMIGltYWdlIHR5cGVzCiAjZGVmaW5lIElNQUdFX1RZUEUoSW1nVHlwZSwgSWQsIFNpbmdsZXRvbklkLCBBY2Nlc3MsIFN1ZmZpeCkgSWQsCiAjaW5jbHVkZSAiY2xhbmcvQmFzaWMvT3BlbkNMSW1hZ2VUeXBlcy5kZWYiCisvLyBPcGVuQ0wgZXh0ZW5zaW9uIHR5cGVzCisjZGVmaW5lIEVYVF9PUEFRVUVfVFlQRShFeHRUeXBlLCBJZCwgRXh0KSBJZCwKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9PcGVuQ0xFeHRlbnNpb25UeXBlcy5kZWYiCiAvLyBBbGwgb3RoZXIgYnVpbHRpbiB0eXBlcwogI2RlZmluZSBCVUlMVElOX1RZUEUoSWQsIFNpbmdsZXRvbklkKSBJZCwKICNkZWZpbmUgTEFTVF9CVUlMVElOX1RZUEUoSWQpIExhc3RLaW5kID0gSWQKQEAgLTM2MDAsNyArMzYxMCw5IEBACiAgICAgRnVuY3Rpb25UeXBlQml0cy5FeHRJbmZvID0gSW5mby5CaXRzOwogICB9CiAKLSAgdW5zaWduZWQgZ2V0VHlwZVF1YWxzKCkgY29uc3QgeyByZXR1cm4gRnVuY3Rpb25UeXBlQml0cy5UeXBlUXVhbHM7IH0KKyAgUXVhbGlmaWVycyBnZXRGYXN0VHlwZVF1YWxzKCkgY29uc3QgeworICAgIHJldHVybiBRdWFsaWZpZXJzOjpmcm9tRmFzdE1hc2soRnVuY3Rpb25UeXBlQml0cy5GYXN0VHlwZVF1YWxzKTsKKyAgfQogCiBwdWJsaWM6CiAgIFF1YWxUeXBlIGdldFJldHVyblR5cGUoKSBjb25zdCB7IHJldHVybiBSZXN1bHRUeXBlOyB9CkBAIC0zNjE1LDkgKzM2MjcsMTQgQEAKIAogICBDYWxsaW5nQ29udiBnZXRDYWxsQ29udigpIGNvbnN0IHsgcmV0dXJuIGdldEV4dEluZm8oKS5nZXRDQygpOyB9CiAgIEV4dEluZm8gZ2V0RXh0SW5mbygpIGNvbnN0IHsgcmV0dXJuIEV4dEluZm8oRnVuY3Rpb25UeXBlQml0cy5FeHRJbmZvKTsgfQotICBib29sIGlzQ29uc3QoKSBjb25zdCB7IHJldHVybiBnZXRUeXBlUXVhbHMoKSAmIFF1YWxpZmllcnM6OkNvbnN0OyB9Ci0gIGJvb2wgaXNWb2xhdGlsZSgpIGNvbnN0IHsgcmV0dXJuIGdldFR5cGVRdWFscygpICYgUXVhbGlmaWVyczo6Vm9sYXRpbGU7IH0KLSAgYm9vbCBpc1Jlc3RyaWN0KCkgY29uc3QgeyByZXR1cm4gZ2V0VHlwZVF1YWxzKCkgJiBRdWFsaWZpZXJzOjpSZXN0cmljdDsgfQorCisgIHN0YXRpY19hc3NlcnQoKH5RdWFsaWZpZXJzOjpGYXN0TWFzayAmIFF1YWxpZmllcnM6OkNWUk1hc2spID09IDAsCisgICAgICAgICAgICAgICAgIkNvbnN0LCB2b2xhdGlsZSBhbmQgcmVzdHJpY3QgYXJlIGFzc3VtZWQgdG8gYmUgYSBzdWJzZXQgb2YgIgorICAgICAgICAgICAgICAgICJ0aGUgZmFzdCBxdWFsaWZpZXJzLiIpOworCisgIGJvb2wgaXNDb25zdCgpIGNvbnN0IHsgcmV0dXJuIGdldEZhc3RUeXBlUXVhbHMoKS5oYXNDb25zdCgpOyB9CisgIGJvb2wgaXNWb2xhdGlsZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZhc3RUeXBlUXVhbHMoKS5oYXNWb2xhdGlsZSgpOyB9CisgIGJvb2wgaXNSZXN0cmljdCgpIGNvbnN0IHsgcmV0dXJuIGdldEZhc3RUeXBlUXVhbHMoKS5oYXNSZXN0cmljdCgpOyB9CiAKICAgLy8vIERldGVybWluZSB0aGUgdHlwZSBvZiBhbiBleHByZXNzaW9uIHRoYXQgY2FsbHMgYSBmdW5jdGlvbiBvZgogICAvLy8gdGhpcyB0eXBlLgpAQCAtMzY3OCw3ICszNjk1LDcgQEAKICAgICAgIHByaXZhdGUgbGx2bTo6VHJhaWxpbmdPYmplY3RzPAogICAgICAgICAgIEZ1bmN0aW9uUHJvdG9UeXBlLCBRdWFsVHlwZSwgRnVuY3Rpb25UeXBlOjpGdW5jdGlvblR5cGVFeHRyYUJpdGZpZWxkcywKICAgICAgICAgICBGdW5jdGlvblR5cGU6OkV4Y2VwdGlvblR5cGUsIEV4cHIgKiwgRnVuY3Rpb25EZWNsICosCi0gICAgICAgICAgRnVuY3Rpb25UeXBlOjpFeHRQYXJhbWV0ZXJJbmZvPiB7CisgICAgICAgICAgRnVuY3Rpb25UeXBlOjpFeHRQYXJhbWV0ZXJJbmZvLCBRdWFsaWZpZXJzPiB7CiAgIGZyaWVuZCBjbGFzcyBBU1RDb250ZXh0OyAvLyBBU1RDb250ZXh0IGNyZWF0ZXMgdGhlc2UuCiAgIGZyaWVuZCBUcmFpbGluZ09iamVjdHM7CiAKQEAgLTM3MDYsNiArMzcyMywxMCBAQAogICAvLyAgIGFuIEV4dFBhcmFtZXRlckluZm8gZm9yIGVhY2ggb2YgdGhlIHBhcmFtZXRlcnMuIFByZXNlbnQgaWYgYW5kCiAgIC8vICAgb25seSBpZiBoYXNFeHRQYXJhbWV0ZXJJbmZvcygpIGlzIHRydWUuCiAgIC8vCisgIC8vICogT3B0aW9uYWxseSBhIFF1YWxpZmllcnMgb2JqZWN0IHRvIHJlcHJlc2VudCBleHRyYSBxdWFsaWZpZXJzIHRoYXQgY2FuJ3QKKyAgLy8gICBiZSByZXByZXNlbnRlZCBieSBGdW5jdGlvblR5cGVCaXRmaWVsZHMuRmFzdFR5cGVRdWFscy4gUHJlc2VudCBpZiBhbmQgb25seQorICAvLyAgIGlmIGhhc0V4dFF1YWxpZmllcnMoKSBpcyB0cnVlLgorICAvLwogICAvLyBUaGUgb3B0aW9uYWwgRnVuY3Rpb25UeXBlRXh0cmFCaXRmaWVsZHMgaGFzIHRvIGJlIGJlZm9yZSB0aGUgZGF0YQogICAvLyByZWxhdGVkIHRvIHRoZSBleGNlcHRpb24gc3BlY2lmaWNhdGlvbiBzaW5jZSBpdCBjb250YWlucyB0aGUgbnVtYmVyCiAgIC8vIG9mIGV4Y2VwdGlvbiB0eXBlcy4KQEAgLTM3NTIsNyArMzc3Myw3IEBACiAgICAgRnVuY3Rpb25UeXBlOjpFeHRJbmZvIEV4dEluZm87CiAgICAgYm9vbCBWYXJpYWRpYyA6IDE7CiAgICAgYm9vbCBIYXNUcmFpbGluZ1JldHVybiA6IDE7Ci0gICAgdW5zaWduZWQgY2hhciBUeXBlUXVhbHMgPSAwOworICAgIFF1YWxpZmllcnMgVHlwZVF1YWxzOwogICAgIFJlZlF1YWxpZmllcktpbmQgUmVmUXVhbGlmaWVyID0gUlFfTm9uZTsKICAgICBFeGNlcHRpb25TcGVjSW5mbyBFeGNlcHRpb25TcGVjOwogICAgIGNvbnN0IEV4dFBhcmFtZXRlckluZm8gKkV4dFBhcmFtZXRlckluZm9zID0gbnVsbHB0cjsKQEAgLTM4NjQsNiArMzg4NSwxMCBAQAogICAgIHJldHVybiBoYXNFeHRyYUJpdGZpZWxkcyhnZXRFeGNlcHRpb25TcGVjVHlwZSgpKTsKICAgfQogCisgIGJvb2wgaGFzRXh0UXVhbGlmaWVycygpIGNvbnN0IHsKKyAgICByZXR1cm4gRnVuY3Rpb25UeXBlQml0cy5IYXNFeHRRdWFsczsKKyAgfQorCiBwdWJsaWM6CiAgIHVuc2lnbmVkIGdldE51bVBhcmFtcygpIGNvbnN0IHsgcmV0dXJuIEZ1bmN0aW9uVHlwZUJpdHMuTnVtUGFyYW1zOyB9CiAKQEAgLTM4ODIsNyArMzkwNyw3IEBACiAgICAgRVBJLlZhcmlhZGljID0gaXNWYXJpYWRpYygpOwogICAgIEVQSS5IYXNUcmFpbGluZ1JldHVybiA9IGhhc1RyYWlsaW5nUmV0dXJuKCk7CiAgICAgRVBJLkV4Y2VwdGlvblNwZWMuVHlwZSA9IGdldEV4Y2VwdGlvblNwZWNUeXBlKCk7Ci0gICAgRVBJLlR5cGVRdWFscyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGdldFR5cGVRdWFscygpKTsKKyAgICBFUEkuVHlwZVF1YWxzID0gZ2V0TWV0aG9kUXVhbHMoKTsKICAgICBFUEkuUmVmUXVhbGlmaWVyID0gZ2V0UmVmUXVhbGlmaWVyKCk7CiAgICAgaWYgKEVQSS5FeGNlcHRpb25TcGVjLlR5cGUgPT0gRVNUX0R5bmFtaWMpIHsKICAgICAgIEVQSS5FeGNlcHRpb25TcGVjLkV4Y2VwdGlvbnMgPSBleGNlcHRpb25zKCk7CkBAIC0zOTkyLDcgKzQwMTcsMTIgQEAKICAgLy8vIFdoZXRoZXIgdGhpcyBmdW5jdGlvbiBwcm90b3R5cGUgaGFzIGEgdHJhaWxpbmcgcmV0dXJuIHR5cGUuCiAgIGJvb2wgaGFzVHJhaWxpbmdSZXR1cm4oKSBjb25zdCB7IHJldHVybiBGdW5jdGlvblR5cGVCaXRzLkhhc1RyYWlsaW5nUmV0dXJuOyB9CiAKLSAgdW5zaWduZWQgZ2V0VHlwZVF1YWxzKCkgY29uc3QgeyByZXR1cm4gRnVuY3Rpb25UeXBlOjpnZXRUeXBlUXVhbHMoKTsgfQorICBRdWFsaWZpZXJzIGdldE1ldGhvZFF1YWxzKCkgY29uc3QgeworICAgIGlmIChoYXNFeHRRdWFsaWZpZXJzKCkpCisgICAgICByZXR1cm4gKmdldFRyYWlsaW5nT2JqZWN0czxRdWFsaWZpZXJzPigpOworICAgIGVsc2UKKyAgICAgIHJldHVybiBnZXRGYXN0VHlwZVF1YWxzKCk7CisgIH0KIAogICAvLy8gUmV0cmlldmUgdGhlIHJlZi1xdWFsaWZpZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZnVuY3Rpb24gdHlwZS4KICAgUmVmUXVhbGlmaWVyS2luZCBnZXRSZWZRdWFsaWZpZXIoKSBjb25zdCB7CkBAIC00OTAwLDcgKzQ5MzAsOSBAQAogICAgIHJldHVybiAhaXNEZXBlbmRlbnRUeXBlKCkgfHwgaXNDdXJyZW50SW5zdGFudGlhdGlvbigpIHx8IGlzVHlwZUFsaWFzKCk7CiAgIH0KIAotICBRdWFsVHlwZSBkZXN1Z2FyKCkgY29uc3QgeyByZXR1cm4gZ2V0Q2Fub25pY2FsVHlwZUludGVybmFsKCk7IH0KKyAgUXVhbFR5cGUgZGVzdWdhcigpIGNvbnN0IHsKKyAgICByZXR1cm4gaXNUeXBlQWxpYXMoKSA/IGdldEFsaWFzZWRUeXBlKCkgOiBnZXRDYW5vbmljYWxUeXBlSW50ZXJuYWwoKTsKKyAgfQogCiAgIHZvaWQgUHJvZmlsZShsbHZtOjpGb2xkaW5nU2V0Tm9kZUlEICZJRCwgY29uc3QgQVNUQ29udGV4dCAmQ3R4KSB7CiAgICAgUHJvZmlsZShJRCwgVGVtcGxhdGUsIHRlbXBsYXRlX2FyZ3VtZW50cygpLCBDdHgpOwpAQCAtNjQxNCw2ICs2NDQ2LDEwIEBACiAgIHJldHVybiBpc09iakNJZFR5cGUoKSB8fCBpc09iakNDbGFzc1R5cGUoKSB8fCBpc09iakNTZWxUeXBlKCk7CiB9CiAKK2lubGluZSBib29sIFR5cGU6OmlzRGVjbHR5cGVUeXBlKCkgY29uc3QgeworICByZXR1cm4gaXNhPERlY2x0eXBlVHlwZT4odGhpcyk7Cit9CisKICNkZWZpbmUgSU1BR0VfVFlQRShJbWdUeXBlLCBJZCwgU2luZ2xldG9uSWQsIEFjY2VzcywgU3VmZml4KSBcCiAgIGlubGluZSBib29sIFR5cGU6OmlzIyNJZCMjVHlwZSgpIGNvbnN0IHsgXAogICAgIHJldHVybiBpc1NwZWNpZmljQnVpbHRpblR5cGUoQnVpbHRpblR5cGU6OklkKTsgXApAQCAtNjQ1MSw5ICs2NDg3LDMwIEBACiAgIHJldHVybiBpc2E8UGlwZVR5cGU+KENhbm9uaWNhbFR5cGUpOwogfQogCisjZGVmaW5lIEVYVF9PUEFRVUVfVFlQRShFeHRUeXBlLCBJZCwgRXh0KSBcCisgIGlubGluZSBib29sIFR5cGU6OmlzIyNJZCMjVHlwZSgpIGNvbnN0IHsgXAorICAgIHJldHVybiBpc1NwZWNpZmljQnVpbHRpblR5cGUoQnVpbHRpblR5cGU6OklkKTsgXAorICB9CisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvT3BlbkNMRXh0ZW5zaW9uVHlwZXMuZGVmIgorCitpbmxpbmUgYm9vbCBUeXBlOjppc09DTEludGVsU3ViZ3JvdXBBVkNUeXBlKCkgY29uc3QgeworI2RlZmluZSBJTlRFTF9TVUJHUk9VUF9BVkNfVFlQRShFeHRUeXBlLCBJZCkgXAorICBpc09DTEludGVsU3ViZ3JvdXBBVkMjI0lkIyNUeXBlKCkgfHwKKyAgcmV0dXJuCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvT3BlbkNMRXh0ZW5zaW9uVHlwZXMuZGVmIgorICAgIGZhbHNlOyAvLyBlbmQgb2YgYm9vbGVhbiBvciBvcGVyYXRpb24KK30KKworaW5saW5lIGJvb2wgVHlwZTo6aXNPQ0xFeHRPcGFxdWVUeXBlKCkgY29uc3QgeworI2RlZmluZSBFWFRfT1BBUVVFX1RZUEUoRXh0VHlwZSwgSWQsIEV4dCkgaXMjI0lkIyNUeXBlKCkgfHwKKyAgcmV0dXJuCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvT3BlbkNMRXh0ZW5zaW9uVHlwZXMuZGVmIgorICAgIGZhbHNlOyAvLyBlbmQgb2YgYm9vbGVhbiBvciBvcGVyYXRpb24KK30KKwogaW5saW5lIGJvb2wgVHlwZTo6aXNPcGVuQ0xTcGVjaWZpY1R5cGUoKSBjb25zdCB7CiAgIHJldHVybiBpc1NhbXBsZXJUKCkgfHwgaXNFdmVudFQoKSB8fCBpc0ltYWdlVHlwZSgpIHx8IGlzQ2xrRXZlbnRUKCkgfHwKLSAgICAgICAgIGlzUXVldWVUKCkgfHwgaXNSZXNlcnZlSURUKCkgfHwgaXNQaXBlVHlwZSgpOworICAgICAgICAgaXNRdWV1ZVQoKSB8fCBpc1Jlc2VydmVJRFQoKSB8fCBpc1BpcGVUeXBlKCkgfHwgaXNPQ0xFeHRPcGFxdWVUeXBlKCk7CiB9CiAKIGlubGluZSBib29sIFR5cGU6OmlzVGVtcGxhdGVUeXBlUGFybVR5cGUoKSBjb25zdCB7CkBAIC02NTQ4LDYgKzY2MDUsMTAgQEAKICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxpbmUgYm9vbCBUeXBlOjppc0ZpeGVkUG9pbnRPckludGVnZXJUeXBlKCkgY29uc3QgeworICByZXR1cm4gaXNGaXhlZFBvaW50VHlwZSgpIHx8IGlzSW50ZWdlclR5cGUoKTsKK30KKwogaW5saW5lIGJvb2wgVHlwZTo6aXNTYXR1cmF0ZWRGaXhlZFBvaW50VHlwZSgpIGNvbnN0IHsKICAgaWYgKGNvbnN0IGF1dG8gKkJUID0gZHluX2Nhc3Q8QnVpbHRpblR5cGU+KENhbm9uaWNhbFR5cGUpKSB7CiAgICAgcmV0dXJuIEJULT5nZXRLaW5kKCkgPj0gQnVpbHRpblR5cGU6OlNhdFNob3J0QWNjdW0gJiYKQEAgLTY2NTMsNiArNjcxNCwyNCBAQAogICByZXR1cm4gdHlwZTsKIH0KIAorLy8vIEluc2VydGlvbiBvcGVyYXRvciBmb3IgZGlhZ25vc3RpY3MuIFRoaXMgYWxsb3dzIHNlbmRpbmcgUXVhbGlmaWVycyBpbnRvIGEKKy8vLyBkaWFnbm9zdGljIHdpdGggPDwuCitpbmxpbmUgY29uc3QgRGlhZ25vc3RpY0J1aWxkZXIgJm9wZXJhdG9yPDwoY29uc3QgRGlhZ25vc3RpY0J1aWxkZXIgJkRCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxpZmllcnMgUSkgeworICBEQi5BZGRUYWdnZWRWYWwoUS5nZXRBc09wYXF1ZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICBEaWFnbm9zdGljc0VuZ2luZTo6QXJndW1lbnRLaW5kOjpha19xdWFsKTsKKyAgcmV0dXJuIERCOworfQorCisvLy8gSW5zZXJ0aW9uIG9wZXJhdG9yIGZvciBwYXJ0aWFsIGRpYWdub3N0aWNzLiBUaGlzIGFsbG93cyBzZW5kaW5nIFF1YWxpZmllcnMKKy8vLyBpbnRvIGEgZGlhZ25vc3RpYyB3aXRoIDw8LgoraW5saW5lIGNvbnN0IFBhcnRpYWxEaWFnbm9zdGljICZvcGVyYXRvcjw8KGNvbnN0IFBhcnRpYWxEaWFnbm9zdGljICZQRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsaWZpZXJzIFEpIHsKKyAgUEQuQWRkVGFnZ2VkVmFsKFEuZ2V0QXNPcGFxdWVWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgRGlhZ25vc3RpY3NFbmdpbmU6OkFyZ3VtZW50S2luZDo6YWtfcXVhbCk7CisgIHJldHVybiBQRDsKK30KKwogLy8vIEluc2VydGlvbiBvcGVyYXRvciBmb3IgZGlhZ25vc3RpY3MuICBUaGlzIGFsbG93cyBzZW5kaW5nIFF1YWxUeXBlJ3MgaW50byBhCiAvLy8gZGlhZ25vc3RpYyB3aXRoIDw8LgogaW5saW5lIGNvbnN0IERpYWdub3N0aWNCdWlsZGVyICZvcGVyYXRvcjw8KGNvbnN0IERpYWdub3N0aWNCdWlsZGVyICZEQiwKQEAgLTY3NzUsNiArNjg1NCw4IEBACiAKIC8vIEdldCB0aGUgZGVjaW1hbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBmaXhlZCBwb2ludCB0eXBlLCByZXByZXNlbnRlZAogLy8gYXMgYSBzY2FsZWQgaW50ZWdlci4KKy8vIFRPRE86IEF0IHNvbWUgcG9pbnQsIHdlIHNob3VsZCBjaGFuZ2UgdGhlIGFyZ3VtZW50cyB0byBpbnN0ZWFkIGp1c3QgYWNjZXB0IGFuCisvLyBBUEZpeGVkUG9pbnQgaW5zdGVhZCBvZiBBUFNJbnQgYW5kIHNjYWxlLgogdm9pZCBGaXhlZFBvaW50VmFsdWVUb1N0cmluZyhTbWFsbFZlY3RvckltcGw8Y2hhcj4gJlN0ciwgbGx2bTo6QVBTSW50IFZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgU2NhbGUpOwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVHlwZUxvYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1R5cGVMb2MuaAppbmRleCAxZTg5ZTkzLi4zYjNlYjFiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVHlwZUxvYy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9UeXBlTG9jLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVHlwZUxvYy5oIC0gVHlwZSBTb3VyY2UgSW5mbyBXcmFwcGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9UeXBlTG9jTm9kZXMuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1R5cGVMb2NOb2Rlcy5kZWYKaW5kZXggNDU5MGU0OC4uYzBkZmUxNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1R5cGVMb2NOb2Rlcy5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1R5cGVMb2NOb2Rlcy5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFR5cGVMb2NOb2Rlcy5kZWYgLSBNZXRhZGF0YSBhYm91dCBUeXBlTG9jIHdyYXBwZXJzIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9UeXBlTG9jVmlzaXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1R5cGVMb2NWaXNpdG9yLmgKaW5kZXggZGI1Nzc1YS4uZWM3ODA4OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1R5cGVMb2NWaXNpdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1R5cGVMb2NWaXNpdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBUeXBlTG9jVmlzaXRvci5oIC0gVmlzaXRvciBmb3IgVHlwZUxvYyBzdWJjbGFzc2VzIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9UeXBlTm9kZXMuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1R5cGVOb2Rlcy5kZWYKaW5kZXggODYzOGY5NC4uZDFlNDMwMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1R5cGVOb2Rlcy5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1R5cGVOb2Rlcy5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFR5cGVOb2Rlcy5kZWYgLSBNZXRhZGF0YSBhYm91dCBUeXBlIEFTVCBub2RlcyAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9UeXBlT3JkZXJpbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9UeXBlT3JkZXJpbmcuaAppbmRleCA3ZWE3ODA3Li42NjMwMTA1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVHlwZU9yZGVyaW5nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1R5cGVPcmRlcmluZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tLS0tLS0tLS0tLSBUeXBlT3JkZXJpbmcuaCAtIFRvdGFsIG9yZGVyaW5nIGZvciB0eXBlcyAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1R5cGVWaXNpdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVHlwZVZpc2l0b3IuaAppbmRleCA3NWZhMGVjLi44OTMwZWM4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVHlwZVZpc2l0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVHlwZVZpc2l0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFR5cGVWaXNpdG9yLmggLSBWaXNpdG9yIGZvciBUeXBlIHN1YmNsYXNzZXMgLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1VucmVzb2x2ZWRTZXQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9VbnJlc29sdmVkU2V0LmgKaW5kZXggYjYyZTlmMS4uY2ZjMGI4NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1VucmVzb2x2ZWRTZXQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVW5yZXNvbHZlZFNldC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFVucmVzb2x2ZWRTZXQuaCAtIFVucmVzb2x2ZWQgc2V0cyBvZiBkZWNsYXJhdGlvbnMgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVlRUQnVpbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1ZUVEJ1aWxkZXIuaAppbmRleCAzYThhNmE5Li40YWNiYzFmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVlRUQnVpbGRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9WVFRCdWlsZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVlRUQnVpbGRlci5oIC0gQysrIFZUVCBsYXlvdXQgYnVpbGRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9WVGFibGVCdWlsZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1QvVlRhYmxlQnVpbGRlci5oCmluZGV4IDRhNzc5ZGIuLjQzYzg0MjkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVC9WVGFibGVCdWlsZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUL1ZUYWJsZUJ1aWxkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFZUYWJsZUJ1aWxkZXIuaCAtIEMrKyB2dGFibGUgbGF5b3V0IGJ1aWxkZXIgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUTWF0Y2hlcnMvQVNUTWF0Y2hGaW5kZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVE1hdGNoZXJzL0FTVE1hdGNoRmluZGVyLmgKaW5kZXggMzI0YzAyZC4uNGM4ZGQ4NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUTWF0Y2hlcnMvQVNUTWF0Y2hGaW5kZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1RNYXRjaGVycy9BU1RNYXRjaEZpbmRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQVNUTWF0Y2hGaW5kZXIuaCAtIFN0cnVjdHVyYWwgcXVlcnkgZnJhbWV3b3JrIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1RNYXRjaGVycy9BU1RNYXRjaGVycy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUTWF0Y2hlcnMvQVNUTWF0Y2hlcnMuaAppbmRleCBlYjA3ZmY3Li40YzYyZWEwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1RNYXRjaGVycy9BU1RNYXRjaGVycy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVE1hdGNoZXJzL0FTVE1hdGNoZXJzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQVNUTWF0Y2hlcnMuaCAtIFN0cnVjdHVyYWwgcXVlcnkgZnJhbWV3b3JrIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTgxMSwxMSArODEwLDI4IEBACiAvLy8gICB2YXJEZWNsKGhhc1R5cGUocG9pbnRlclR5cGUocG9pbnRlZShpZ25vcmluZ1BhcmVucyhmdW5jdGlvblR5cGUoKSkpKSkpCiAvLy8gXGVuZGNvZGUKIC8vLyB3b3VsZCBtYXRjaCB0aGUgZGVjbGFyYXRpb24gZm9yIGZwLgotQVNUX01BVENIRVJfUChRdWFsVHlwZSwgaWdub3JpbmdQYXJlbnMsCi0gICAgICAgICAgICAgIGludGVybmFsOjpNYXRjaGVyPFF1YWxUeXBlPiwgSW5uZXJNYXRjaGVyKSB7CitBU1RfTUFUQ0hFUl9QX09WRVJMT0FEKFF1YWxUeXBlLCBpZ25vcmluZ1BhcmVucywgaW50ZXJuYWw6Ok1hdGNoZXI8UXVhbFR5cGU+LAorICAgICAgICAgICAgICAgICAgICAgICBJbm5lck1hdGNoZXIsIDApIHsKICAgcmV0dXJuIElubmVyTWF0Y2hlci5tYXRjaGVzKE5vZGUuSWdub3JlUGFyZW5zKCksIEZpbmRlciwgQnVpbGRlcik7CiB9CiAKKy8vLyBPdmVybG9hZCBcYyBpZ25vcmluZ1BhcmVucyBmb3IgXGMgRXhwci4KKy8vLworLy8vIEdpdmVuCisvLy8gXGNvZGUKKy8vLyAgIGNvbnN0IGNoYXIqIHN0ciA9ICgibXktc3RyaW5nIik7CisvLy8gXGVuZGNvZGUKKy8vLyBUaGUgbWF0Y2hlcgorLy8vIFxjb2RlCisvLy8gICBpbXBsaWNpdENhc3RFeHByKGhhc1NvdXJjZUV4cHJlc3Npb24oaWdub3JpbmdQYXJlbnMoc3RyaW5nTGl0ZXJhbCgpKSkpCisvLy8gXGVuZGNvZGUKKy8vLyB3b3VsZCBtYXRjaCB0aGUgaW1wbGljaXQgY2FzdCByZXN1bHRpbmcgZnJvbSB0aGUgYXNzaWdubWVudC4KK0FTVF9NQVRDSEVSX1BfT1ZFUkxPQUQoRXhwciwgaWdub3JpbmdQYXJlbnMsIGludGVybmFsOjpNYXRjaGVyPEV4cHI+LAorICAgICAgICAgICAgICAgICAgICAgICBJbm5lck1hdGNoZXIsIDEpIHsKKyAgY29uc3QgRXhwciAqRSA9IE5vZGUuSWdub3JlUGFyZW5zKCk7CisgIHJldHVybiBJbm5lck1hdGNoZXIubWF0Y2hlcygqRSwgRmluZGVyLCBCdWlsZGVyKTsKK30KKwogLy8vIE1hdGNoZXMgZXhwcmVzc2lvbnMgdGhhdCBhcmUgaW5zdGFudGlhdGlvbi1kZXBlbmRlbnQgZXZlbiBpZiBpdCBpcwogLy8vIG5laXRoZXIgdHlwZS0gbm9yIHZhbHVlLWRlcGVuZGVudC4KIC8vLwpAQCAtMTE0MSw2ICsxMTU3LDE3IEBACiAvLy8gICBtYXRjaGVzICdtJy4KIGV4dGVybiBjb25zdCBpbnRlcm5hbDo6VmFyaWFkaWNEeW5DYXN0QWxsT2ZNYXRjaGVyPERlY2wsIEZpZWxkRGVjbD4gZmllbGREZWNsOwogCisvLy8gTWF0Y2hlcyBpbmRpcmVjdCBmaWVsZCBkZWNsYXJhdGlvbnMuCisvLy8KKy8vLyBHaXZlbgorLy8vIFxjb2RlCisvLy8gICBzdHJ1Y3QgWCB7IHN0cnVjdCB7IGludCBhOyB9OyB9OworLy8vIFxlbmRjb2RlCisvLy8gaW5kaXJlY3RGaWVsZERlY2woKQorLy8vICAgbWF0Y2hlcyAnYScuCitleHRlcm4gY29uc3QgaW50ZXJuYWw6OlZhcmlhZGljRHluQ2FzdEFsbE9mTWF0Y2hlcjxEZWNsLCBJbmRpcmVjdEZpZWxkRGVjbD4KKyAgICBpbmRpcmVjdEZpZWxkRGVjbDsKKwogLy8vIE1hdGNoZXMgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgogLy8vCiAvLy8gRXhhbXBsZSBtYXRjaGVzIGYKQEAgLTEyNDAsNiArMTI2NywyOCBAQAogLy8vIFxlbmRjb2RlCiBleHRlcm4gY29uc3QgaW50ZXJuYWw6OlZhcmlhZGljRHluQ2FzdEFsbE9mTWF0Y2hlcjxTdG10LCBDYWxsRXhwcj4gY2FsbEV4cHI7CiAKKy8vLyBNYXRjaGVzIGNhbGwgZXhwcmVzc2lvbnMgd2hpY2ggd2VyZSByZXNvbHZlZCB1c2luZyBBREwuCisvLy8KKy8vLyBFeGFtcGxlIG1hdGNoZXMgeSh4KSBidXQgbm90IHkoNDIpIG9yIE5TOjp5KHgpLgorLy8vIFxjb2RlCisvLy8gICBuYW1lc3BhY2UgTlMgeworLy8vICAgICBzdHJ1Y3QgWCB7fTsKKy8vLyAgICAgdm9pZCB5KFgpOworLy8vICAgfQorLy8vCisvLy8gICB2b2lkIHkoLi4uKTsKKy8vLworLy8vICAgdm9pZCB0ZXN0KCkgeworLy8vICAgICBOUzo6WCB4OworLy8vICAgICB5KHgpOyAvLyBNYXRjaGVzCisvLy8gICAgIE5TOjp5KHgpOyAvLyBEb2Vzbid0IG1hdGNoCisvLy8gICAgIHkoNDIpOyAvLyBEb2Vzbid0IG1hdGNoCisvLy8gICAgIHVzaW5nIE5TOjp5OworLy8vICAgICB5KHgpOyAvLyBGb3VuZCBieSBib3RoIHVucXVhbGlmaWVkIGxvb2t1cCBhbmQgQURMLCBkb2Vzbid0IG1hdGNoCisvLyAgICB9CisvLy8gXGVuZGNvZGUKK0FTVF9NQVRDSEVSKENhbGxFeHByLCB1c2VzQURMKSB7IHJldHVybiBOb2RlLnVzZXNBREwoKTsgfQorCiAvLy8gTWF0Y2hlcyBsYW1iZGEgZXhwcmVzc2lvbnMuCiAvLy8KIC8vLyBFeGFtcGxlIG1hdGNoZXMgWyZdKCl7cmV0dXJuIDU7fQpAQCAtMTU3NCw2ICsxNjIzLDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbnJlc29sdmVkVXNpbmdUeXBlbmFtZURlY2w+CiAgICAgdW5yZXNvbHZlZFVzaW5nVHlwZW5hbWVEZWNsOwogCisvLy8gTWF0Y2hlcyBhIGNvbnN0YW50IGV4cHJlc3Npb24gd3JhcHBlci4KKy8vLworLy8vIEV4YW1wbGUgbWF0Y2hlcyB0aGUgY29uc3RhbnQgaW4gdGhlIGNhc2Ugc3RhdGVtZW50OgorLy8vICAgICAobWF0Y2hlciA9IGNvbnN0YW50RXhwcigpKQorLy8vIFxjb2RlCisvLy8gICBzd2l0Y2ggKGEpIHsKKy8vLyAgIGNhc2UgMzc6IGJyZWFrOworLy8vICAgfQorLy8vIFxlbmRjb2RlCitleHRlcm4gY29uc3QgaW50ZXJuYWw6OlZhcmlhZGljRHluQ2FzdEFsbE9mTWF0Y2hlcjxTdG10LCBDb25zdGFudEV4cHI+CisgICAgY29uc3RhbnRFeHByOworCiAvLy8gTWF0Y2hlcyBwYXJlbnRoZXNlcyB1c2VkIGluIGV4cHJlc3Npb25zLgogLy8vCiAvLy8gRXhhbXBsZSBtYXRjaGVzIChmb28oKSArIDEpCkBAIC0xNzQ3LDYgKzE4MDgsMTQgQEAKIGV4dGVybiBjb25zdCBpbnRlcm5hbDo6VmFyaWFkaWNEeW5DYXN0QWxsT2ZNYXRjaGVyPFN0bXQsIE9iakNJdmFyUmVmRXhwcj4KICAgICBvYmpjSXZhclJlZkV4cHI7CiAKKy8vLyBNYXRjaGVzIGEgcmVmZXJlbmNlIHRvIGEgYmxvY2suCisvLy8KKy8vLyBFeGFtcGxlOiBtYXRjaGVzICJee30iOgorLy8vIFxjb2RlCisvLy8gICB2b2lkIGYoKSB7IF57fSgpOyB9CisvLy8gXGVuZGNvZGUKK2V4dGVybiBjb25zdCBpbnRlcm5hbDo6VmFyaWFkaWNEeW5DYXN0QWxsT2ZNYXRjaGVyPFN0bXQsIEJsb2NrRXhwcj4gYmxvY2tFeHByOworCiAvLy8gTWF0Y2hlcyBpZiBzdGF0ZW1lbnRzLgogLy8vCiAvLy8gRXhhbXBsZSBtYXRjaGVzICdpZiAoeCkge30nCkBAIC0yNDI1LDggKzI0OTQsOSBAQAogLy8vIGFsaWdub2YuCiBpbmxpbmUgaW50ZXJuYWw6Ok1hdGNoZXI8U3RtdD4gYWxpZ25PZkV4cHIoCiAgICAgY29uc3QgaW50ZXJuYWw6Ok1hdGNoZXI8VW5hcnlFeHByT3JUeXBlVHJhaXRFeHByPiAmSW5uZXJNYXRjaGVyKSB7Ci0gIHJldHVybiBzdG10KHVuYXJ5RXhwck9yVHlwZVRyYWl0RXhwcihhbGxPZigKLSAgICAgIG9mS2luZChVRVRUX0FsaWduT2YpLCBJbm5lck1hdGNoZXIpKSk7CisgIHJldHVybiBzdG10KHVuYXJ5RXhwck9yVHlwZVRyYWl0RXhwcigKKyAgICAgIGFsbE9mKGFueU9mKG9mS2luZChVRVRUX0FsaWduT2YpLCBvZktpbmQoVUVUVF9QcmVmZXJyZWRBbGlnbk9mKSksCisgICAgICAgICAgICBJbm5lck1hdGNoZXIpKSk7CiB9CiAKIC8vLyBTYW1lIGFzIHVuYXJ5RXhwck9yVHlwZVRyYWl0RXhwciwgYnV0IG9ubHkgbWF0Y2hpbmcKQEAgLTI4MTYsMTQgKzI4ODYsMjIgQEAKICAgICAgICAgIElubmVyTWF0Y2hlci5tYXRjaGVzKCpVbmRlcmx5aW5nRGVjbCwgRmluZGVyLCBCdWlsZGVyKTsKIH0KIAotLy8vIE1hdGNoZXMgb24gdGhlIGltcGxpY2l0IG9iamVjdCBhcmd1bWVudCBvZiBhIG1lbWJlciBjYWxsIGV4cHJlc3Npb24uCisvLy8gTWF0Y2hlcyBvbiB0aGUgaW1wbGljaXQgb2JqZWN0IGFyZ3VtZW50IG9mIGEgbWVtYmVyIGNhbGwgZXhwcmVzc2lvbiwgYWZ0ZXIKKy8vLyBzdHJpcHBpbmcgb2ZmIGFueSBwYXJlbnRoZXNlcyBvciBpbXBsaWNpdCBjYXN0cy4KIC8vLwotLy8vIEV4YW1wbGUgbWF0Y2hlcyB5LngoKQotLy8vICAgKG1hdGNoZXIgPSBjeHhNZW1iZXJDYWxsRXhwcihvbihoYXNUeXBlKGN4eFJlY29yZERlY2woaGFzTmFtZSgiWSIpKSkpKSkKKy8vLyBHaXZlbgogLy8vIFxjb2RlCi0vLy8gICBjbGFzcyBZIHsgcHVibGljOiB2b2lkIHgoKTsgfTsKLS8vLyAgIHZvaWQgeigpIHsgWSB5OyB5LngoKTsgfQorLy8vICAgY2xhc3MgWSB7IHB1YmxpYzogdm9pZCBtKCk7IH07CisvLy8gICBZIGcoKTsKKy8vLyAgIGNsYXNzIFggOiBwdWJsaWMgWSB7fTsKKy8vLyAgIHZvaWQgeihZIHksIFggeCkgeyB5Lm0oKTsgKGcoKSkubSgpOyB4Lm0oKTsgfQogLy8vIFxlbmRjb2RlCisvLy8gY3h4TWVtYmVyQ2FsbEV4cHIob24oaGFzVHlwZShjeHhSZWNvcmREZWNsKGhhc05hbWUoIlkiKSkpKSkKKy8vLyAgIG1hdGNoZXMgYHkubSgpYCBhbmQgYChnKCkpLm0oKWAuCisvLy8gY3h4TWVtYmVyQ2FsbEV4cHIob24oaGFzVHlwZShjeHhSZWNvcmREZWNsKGhhc05hbWUoIlgiKSkpKSkKKy8vLyAgIG1hdGNoZXMgYHgubSgpYC4KKy8vLyBjeHhNZW1iZXJDYWxsRXhwcihvbihjYWxsRXhwcigpKSkKKy8vLyAgIG1hdGNoZXMgYChnKCkpLm0oKWAuCiAvLy8KIC8vLyBGSVhNRTogT3ZlcmxvYWQgdG8gYWxsb3cgZGlyZWN0bHkgbWF0Y2hpbmcgdHlwZXM/CiBBU1RfTUFUQ0hFUl9QKENYWE1lbWJlckNhbGxFeHByLCBvbiwgaW50ZXJuYWw6Ok1hdGNoZXI8RXhwcj4sCkBAIC0zMTgzLDYgKzMyNjEsMjMgQEAKICAgICAgIC5tYXRjaGVzKE5vZGUsIEZpbmRlciwgQnVpbGRlcik7CiB9CiAKKy8vLyBNYXRjaGVzIG9uIHRoZSBpbXBsaWNpdCBvYmplY3QgYXJndW1lbnQgb2YgYSBtZW1iZXIgY2FsbCBleHByZXNzaW9uLiBVbmxpa2UKKy8vLyBgb25gLCBtYXRjaGVzIHRoZSBhcmd1bWVudCBkaXJlY3RseSB3aXRob3V0IHN0cmlwcGluZyBhd2F5IGFueXRoaW5nLgorLy8vCisvLy8gR2l2ZW4KKy8vLyBcY29kZQorLy8vICAgY2xhc3MgWSB7IHB1YmxpYzogdm9pZCBtKCk7IH07CisvLy8gICBZIGcoKTsKKy8vLyAgIGNsYXNzIFggOiBwdWJsaWMgWSB7IHZvaWQgZygpOyB9OworLy8vICAgdm9pZCB6KFkgeSwgWCB4KSB7IHkubSgpOyB4Lm0oKTsgeC5nKCk7IChnKCkpLm0oKTsgfQorLy8vIFxlbmRjb2RlCisvLy8gY3h4TWVtYmVyQ2FsbEV4cHIob25JbXBsaWNpdE9iamVjdEFyZ3VtZW50KGhhc1R5cGUoCisvLy8gICAgIGN4eFJlY29yZERlY2woaGFzTmFtZSgiWSIpKSkpKQorLy8vICAgbWF0Y2hlcyBgeS5tKClgLCBgeC5tKClgIGFuZCAoZygpKS5tKCksIGJ1dCBub3QgYHguZygpYC4KKy8vLyBjeHhNZW1iZXJDYWxsRXhwcihvbihjYWxsRXhwcigpKSkKKy8vLyAgIGRvZXMgbm90IG1hdGNoIGAoZygpKS5tKClgLCBiZWNhdXNlIHRoZSBwYXJlbnMgYXJlIG5vdCBpZ25vcmVkLgorLy8vCisvLy8gRklYTUU6IE92ZXJsb2FkIHRvIGFsbG93IGRpcmVjdGx5IG1hdGNoaW5nIHR5cGVzPwogQVNUX01BVENIRVJfUChDWFhNZW1iZXJDYWxsRXhwciwgb25JbXBsaWNpdE9iamVjdEFyZ3VtZW50LAogICAgICAgICAgICAgICBpbnRlcm5hbDo6TWF0Y2hlcjxFeHByPiwgSW5uZXJNYXRjaGVyKSB7CiAgIGNvbnN0IEV4cHIgKkV4cHJOb2RlID0gTm9kZS5nZXRJbXBsaWNpdE9iamVjdEFyZ3VtZW50KCk7CkBAIC0zMTkwLDggKzMyODUsMjIgQEAKICAgICAgICAgICBJbm5lck1hdGNoZXIubWF0Y2hlcygqRXhwck5vZGUsIEZpbmRlciwgQnVpbGRlcikpOwogfQogCi0vLy8gTWF0Y2hlcyBpZiB0aGUgZXhwcmVzc2lvbidzIHR5cGUgZWl0aGVyIG1hdGNoZXMgdGhlIHNwZWNpZmllZAotLy8vIG1hdGNoZXIsIG9yIGlzIGEgcG9pbnRlciB0byBhIHR5cGUgdGhhdCBtYXRjaGVzIHRoZSBJbm5lck1hdGNoZXIuCisvLy8gTWF0Y2hlcyBpZiB0aGUgdHlwZSBvZiB0aGUgZXhwcmVzc2lvbidzIGltcGxpY2l0IG9iamVjdCBhcmd1bWVudCBlaXRoZXIKKy8vLyBtYXRjaGVzIHRoZSBJbm5lck1hdGNoZXIsIG9yIGlzIGEgcG9pbnRlciB0byBhIHR5cGUgdGhhdCBtYXRjaGVzIHRoZQorLy8vIElubmVyTWF0Y2hlci4KKy8vLworLy8vIEdpdmVuCisvLy8gXGNvZGUKKy8vLyAgIGNsYXNzIFkgeyBwdWJsaWM6IHZvaWQgbSgpOyB9OworLy8vICAgY2xhc3MgWCA6IHB1YmxpYyBZIHsgdm9pZCBnKCk7IH07CisvLy8gICB2b2lkIHooKSB7IFkgeTsgeS5tKCk7IFkgKnA7IHAtPm0oKTsgWCB4OyB4Lm0oKTsgeC5nKCk7IH0KKy8vLyBcZW5kY29kZQorLy8vIGN4eE1lbWJlckNhbGxFeHByKHRoaXNQb2ludGVyVHlwZShoYXNEZWNsYXJhdGlvbigKKy8vLyAgICAgY3h4UmVjb3JkRGVjbChoYXNOYW1lKCJZIikpKSkpCisvLy8gICBtYXRjaGVzIGB5Lm0oKWAsIGBwLT5tKClgIGFuZCBgeC5tKClgLgorLy8vIGN4eE1lbWJlckNhbGxFeHByKHRoaXNQb2ludGVyVHlwZShoYXNEZWNsYXJhdGlvbigKKy8vLyAgICAgY3h4UmVjb3JkRGVjbChoYXNOYW1lKCJYIikpKSkpCisvLy8gICBtYXRjaGVzIGB4LmcoKWAuCiBBU1RfTUFUQ0hFUl9QX09WRVJMT0FEKENYWE1lbWJlckNhbGxFeHByLCB0aGlzUG9pbnRlclR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsOjpNYXRjaGVyPFF1YWxUeXBlPiwgSW5uZXJNYXRjaGVyLCAwKSB7CiAgIHJldHVybiBvbkltcGxpY2l0T2JqZWN0QXJndW1lbnQoCkBAIC0zMjk5LDYgKzM0MDgsMjAgQEAKICAgICAgICAgICBJbm5lck1hdGNoZXIubWF0Y2hlcygqSW5pdGlhbGl6ZXIsIEZpbmRlciwgQnVpbGRlcikpOwogfQogCisvLy8gXGJyaWVmIE1hdGNoZXMgYSBzdGF0aWMgdmFyaWFibGUgd2l0aCBsb2NhbCBzY29wZS4KKy8vLworLy8vIEV4YW1wbGUgbWF0Y2hlcyB5IChtYXRjaGVyID0gdmFyRGVjbChpc1N0YXRpY0xvY2FsKCkpKQorLy8vIFxjb2RlCisvLy8gdm9pZCBmKCkgeworLy8vICAgaW50IHg7CisvLy8gICBzdGF0aWMgaW50IHk7CisvLy8gfQorLy8vIHN0YXRpYyBpbnQgejsKKy8vLyBcZW5kY29kZQorQVNUX01BVENIRVIoVmFyRGVjbCwgaXNTdGF0aWNMb2NhbCkgeworICByZXR1cm4gTm9kZS5pc1N0YXRpY0xvY2FsKCk7Cit9CisKIC8vLyBNYXRjaGVzIGEgdmFyaWFibGUgZGVjbGFyYXRpb24gdGhhdCBoYXMgZnVuY3Rpb24gc2NvcGUgYW5kIGlzIGEKIC8vLyBub24tc3RhdGljIGxvY2FsIHZhcmlhYmxlLgogLy8vCkBAIC0zNDI5LDYgKzM1NTIsMTkgQEAKICAgICAgICAgICAgICAgKk5vZGUuZ2V0QXJnKE4pLT5JZ25vcmVQYXJlbkltcENhc3RzKCksIEZpbmRlciwgQnVpbGRlcikpOwogfQogCisvLy8gTWF0Y2hlcyB0aGUgbid0aCBpdGVtIG9mIGFuIGluaXRpYWxpemVyIGxpc3QgZXhwcmVzc2lvbi4KKy8vLworLy8vIEV4YW1wbGUgbWF0Y2hlcyB5LgorLy8vICAgICAobWF0Y2hlciA9IGluaXRMaXN0RXhwcihoYXNJbml0KDAsIGV4cHIoKSkpKQorLy8vIFxjb2RlCisvLy8gICBpbnQgeHt5fS4KKy8vLyBcZW5kY29kZQorQVNUX01BVENIRVJfUDIoSW5pdExpc3RFeHByLCBoYXNJbml0LCB1bnNpZ25lZCwgTiwKKyAgICAgICAgICAgICAgIGFzdF9tYXRjaGVyczo6aW50ZXJuYWw6Ok1hdGNoZXI8RXhwcj4sIElubmVyTWF0Y2hlcikgeworICByZXR1cm4gTiA8IE5vZGUuZ2V0TnVtSW5pdHMoKSAmJgorICAgICAgICAgIElubmVyTWF0Y2hlci5tYXRjaGVzKCpOb2RlLmdldEluaXQoTiksIEZpbmRlciwgQnVpbGRlcik7Cit9CisKIC8vLyBNYXRjaGVzIGRlY2xhcmF0aW9uIHN0YXRlbWVudHMgdGhhdCBjb250YWluIGEgc3BlY2lmaWMgbnVtYmVyIG9mCiAvLy8gZGVjbGFyYXRpb25zLgogLy8vCkBAIC0zNDg0LDcgKzM2MjAsNyBAQAogLy8vICAgfSBjYXRjaCAoLi4uKSB7CiAvLy8gICAgIC8vIC4uLgogLy8vICAgfQotLy8vIC9lbmRjb2RlCisvLy8gXGVuZGNvZGUKIC8vLyBjeHhDYXRjaFN0bXQoaXNDYXRjaEFsbCgpKSBtYXRjaGVzIGNhdGNoKC4uLikgYnV0IG5vdCBjYXRjaChpbnQpLgogQVNUX01BVENIRVIoQ1hYQ2F0Y2hTdG10LCBpc0NhdGNoQWxsKSB7CiAgIHJldHVybiBOb2RlLmdldEV4Y2VwdGlvbkRlY2woKSA9PSBudWxscHRyOwpAQCAtNDg2NiwxOCArNTAwMiwyMiBAQAogICByZXR1cm4gSW5uZXJNYXRjaGVyLm1hdGNoZXMoKk5vZGUuZ2V0TWVtYmVyRGVjbCgpLCBGaW5kZXIsIEJ1aWxkZXIpOwogfQogCi0vLy8gTWF0Y2hlcyBhIG1lbWJlciBleHByZXNzaW9uIHdoZXJlIHRoZSBvYmplY3QgZXhwcmVzc2lvbiBpcwotLy8vIG1hdGNoZWQgYnkgYSBnaXZlbiBtYXRjaGVyLgorLy8vIE1hdGNoZXMgYSBtZW1iZXIgZXhwcmVzc2lvbiB3aGVyZSB0aGUgb2JqZWN0IGV4cHJlc3Npb24gaXMgbWF0Y2hlZCBieSBhCisvLy8gZ2l2ZW4gbWF0Y2hlci4gSW1wbGljaXQgb2JqZWN0IGV4cHJlc3Npb25zIGFyZSBpbmNsdWRlZDsgdGhhdCBpcywgaXQgbWF0Y2hlcworLy8vIHVzZSBvZiBpbXBsaWNpdCBgdGhpc2AuCiAvLy8KIC8vLyBHaXZlbgogLy8vIFxjb2RlCi0vLy8gICBzdHJ1Y3QgWCB7IGludCBtOyB9OwotLy8vICAgdm9pZCBmKFggeCkgeyB4Lm07IG07IH0KKy8vLyAgIHN0cnVjdCBYIHsKKy8vLyAgICAgaW50IG07CisvLy8gICAgIGludCBmKFggeCkgeyB4Lm07IHJldHVybiBtOyB9CisvLy8gICB9OwogLy8vIFxlbmRjb2RlCi0vLy8gbWVtYmVyRXhwcihoYXNPYmplY3RFeHByZXNzaW9uKGhhc1R5cGUoY3h4UmVjb3JkRGVjbChoYXNOYW1lKCJYIikpKSkpKSkKLS8vLyAgIG1hdGNoZXMgIngubSIgYW5kICJtIgotLy8vIHdpdGggaGFzT2JqZWN0RXhwcmVzc2lvbiguLi4pCi0vLy8gICBtYXRjaGluZyAieCIgYW5kIHRoZSBpbXBsaWNpdCBvYmplY3QgZXhwcmVzc2lvbiBvZiAibSIgd2hpY2ggaGFzIHR5cGUgWCouCisvLy8gbWVtYmVyRXhwcihoYXNPYmplY3RFeHByZXNzaW9uKGhhc1R5cGUoY3h4UmVjb3JkRGVjbChoYXNOYW1lKCJYIikpKSkpCisvLy8gICBtYXRjaGVzIGB4Lm1gLCBidXQgbm90IGBtYDsgaG93ZXZlciwKKy8vLyBtZW1iZXJFeHByKGhhc09iamVjdEV4cHJlc3Npb24oaGFzVHlwZShwb2ludHNUbygKKy8vICAgICAgY3h4UmVjb3JkRGVjbChoYXNOYW1lKCJYIikpKSkpKQorLy8vICAgbWF0Y2hlcyBgbWAgKGFrYS4gYHRoaXMtPm1gKSwgYnV0IG5vdCBgeC5tYC4KIEFTVF9QT0xZTU9SUEhJQ19NQVRDSEVSX1AoCiAgICAgaGFzT2JqZWN0RXhwcmVzc2lvbiwKICAgICBBU1RfUE9MWU1PUlBISUNfU1VQUE9SVEVEX1RZUEVTKE1lbWJlckV4cHIsIFVucmVzb2x2ZWRNZW1iZXJFeHByLApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUTWF0Y2hlcnMvQVNUTWF0Y2hlcnNJbnRlcm5hbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUTWF0Y2hlcnMvQVNUTWF0Y2hlcnNJbnRlcm5hbC5oCmluZGV4IDlkOWY4NjcuLjZhNzFkNDEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVE1hdGNoZXJzL0FTVE1hdGNoZXJzSW50ZXJuYWwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1RNYXRjaGVycy9BU1RNYXRjaGVyc0ludGVybmFsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQVNUTWF0Y2hlcnNJbnRlcm5hbC5oIC0gU3RydWN0dXJhbCBxdWVyeSBmcmFtZXdvcmsgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI2MSw3ICsyNjAsNyBAQAogICB9CiAKIHByaXZhdGU6Ci0gIFNtYWxsVmVjdG9yPEJvdW5kTm9kZXNNYXAsIDE2PiBCaW5kaW5nczsKKyAgU21hbGxWZWN0b3I8Qm91bmROb2Rlc01hcCwgMT4gQmluZGluZ3M7CiB9OwogCiBjbGFzcyBBU1RNYXRjaEZpbmRlcjsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVE1hdGNoZXJzL0FTVE1hdGNoZXJzTWFjcm9zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1RNYXRjaGVycy9BU1RNYXRjaGVyc01hY3Jvcy5oCmluZGV4IDMwODBmODYuLjFkOTZiYTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVE1hdGNoZXJzL0FTVE1hdGNoZXJzTWFjcm9zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUTWF0Y2hlcnMvQVNUTWF0Y2hlcnNNYWNyb3MuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEFTVE1hdGNoZXJzTWFjcm9zLmggLSBTdHJ1Y3R1cmFsIHF1ZXJ5IGZyYW1ld29yayAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUTWF0Y2hlcnMvRHluYW1pYy9EaWFnbm9zdGljcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUTWF0Y2hlcnMvRHluYW1pYy9EaWFnbm9zdGljcy5oCmluZGV4IGNjZDk1OTAuLjdkZDMwNDcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVE1hdGNoZXJzL0R5bmFtaWMvRGlhZ25vc3RpY3MuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1RNYXRjaGVycy9EeW5hbWljL0RpYWdub3N0aWNzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBEaWFnbm9zdGljcy5oIC0gSGVscGVyIGNsYXNzIGZvciBlcnJvciBkaWFnbm9zdGljcyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1RNYXRjaGVycy9EeW5hbWljL1BhcnNlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUTWF0Y2hlcnMvRHluYW1pYy9QYXJzZXIuaAppbmRleCAxMzYyNjVkLi4xNWUwYWE3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1RNYXRjaGVycy9EeW5hbWljL1BhcnNlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVE1hdGNoZXJzL0R5bmFtaWMvUGFyc2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUGFyc2VyLmggLSBNYXRjaGVyIGV4cHJlc3Npb24gcGFyc2VyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVE1hdGNoZXJzL0R5bmFtaWMvUmVnaXN0cnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVE1hdGNoZXJzL0R5bmFtaWMvUmVnaXN0cnkuaAppbmRleCBhZDg2MjhiLi4yMTUyMDZiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1RNYXRjaGVycy9EeW5hbWljL1JlZ2lzdHJ5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUTWF0Y2hlcnMvRHluYW1pYy9SZWdpc3RyeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFJlZ2lzdHJ5LmggLSBNYXRjaGVyIHJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1RNYXRjaGVycy9EeW5hbWljL1ZhcmlhbnRWYWx1ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQVNUTWF0Y2hlcnMvRHluYW1pYy9WYXJpYW50VmFsdWUuaAppbmRleCA0NWFjM2NhLi41MTE0NzJhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BU1RNYXRjaGVycy9EeW5hbWljL1ZhcmlhbnRWYWx1ZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FTVE1hdGNoZXJzL0R5bmFtaWMvVmFyaWFudFZhbHVlLmgKQEAgLTEsOCArMSw3IEBACiAvLz09PS0tLSBWYXJpYW50VmFsdWUuaCAtIFBvbHltb3JwaGljIHZhbHVlIHR5cGUgLSotIEMrKyAtKi09PT0vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvQ0ZHUmVhY2hhYmlsaXR5QW5hbHlzaXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL0NGR1JlYWNoYWJpbGl0eUFuYWx5c2lzLmgKaW5kZXggNDlkYTY4MS4uMTZjMGE3YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvQ0ZHUmVhY2hhYmlsaXR5QW5hbHlzaXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9DRkdSZWFjaGFiaWxpdHlBbmFseXNpcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENGR1JlYWNoYWJpbGl0eUFuYWx5c2lzLmggLSBCYXNpYyByZWFjaGFiaWxpdHkgYW5hbHlzaXMgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9Db25zdW1lZC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvQ29uc3VtZWQuaAppbmRleCA1YTcwOTg5Li5kZWMxYWUzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9Db25zdW1lZC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL0NvbnN1bWVkLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29uc3VtZWQuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL0RvbWluYXRvcnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL0RvbWluYXRvcnMuaAppbmRleCAwMjFlOThkLi4wMDE1YjBkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9Eb21pbmF0b3JzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvRG9taW5hdG9ycy5oCkBAIC0xLDkgKzEsOCBAQAogLy8tIERvbWluYXRvcnMuaCAtIEltcGxlbWVudGF0aW9uIG9mIGRvbWluYXRvcnMgdHJlZSBmb3IgQ2xhbmcgQ0ZHIC0qLSBDKysgLSotLy8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9FeHByTXV0YXRpb25BbmFseXplci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvRXhwck11dGF0aW9uQW5hbHl6ZXIuaAppbmRleCBlZGM2ZTAwLi45Mzk3YzVkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9FeHByTXV0YXRpb25BbmFseXplci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL0V4cHJNdXRhdGlvbkFuYWx5emVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLS0tLS0tLS0gRXhwck11dGF0aW9uQW5hbHl6ZXIuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogI2lmbmRlZiBMTFZNX0NMQU5HX0FOQUxZU0lTX0FOQUxZU0VTX0VYUFJNVVRBVElPTkFOQUxZWkVSX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL0xpdmVWYXJpYWJsZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL0xpdmVWYXJpYWJsZXMuaAppbmRleCAwY2I1MDBmLi5hNDZjMzVlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9MaXZlVmFyaWFibGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvTGl2ZVZhcmlhYmxlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExpdmVWYXJpYWJsZXMuaCAtIExpdmUgVmFyaWFibGUgQW5hbHlzaXMgZm9yIFNvdXJjZSBDRkdzIC0qLSBDKysgLS0qLS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtODgsOSArODcsMTMgQEAKICAgLy8vICBiZWZvcmUgdGhlIGdpdmVuIGJsb2NrLWxldmVsIGV4cHJlc3Npb24gKHNlZSBydW5PbkFsbEJsb2NrcykuCiAgIGJvb2wgaXNMaXZlKGNvbnN0IFN0bXQgKkxvYywgY29uc3QgU3RtdCAqU3RtdFZhbCk7CiAKLSAgLy8vIFByaW50IHRvIHN0ZGVyciB0aGUgbGl2ZW5lc3MgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoCisgIC8vLyBQcmludCB0byBzdGRlcnIgdGhlIHZhcmlhYmxlIGxpdmVuZXNzIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aAogICAvLy8gZWFjaCBiYXNpYyBibG9jay4KLSAgdm9pZCBkdW1wQmxvY2tMaXZlbmVzcyhjb25zdCBTb3VyY2VNYW5hZ2VyJiBNKTsKKyAgdm9pZCBkdW1wQmxvY2tMaXZlbmVzcyhjb25zdCBTb3VyY2VNYW5hZ2VyICZNKTsKKworICAvLy8gUHJpbnQgdG8gc3RkZXJyIHRoZSBzdGF0ZW1lbnQgbGl2ZW5lc3MgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoCisgIC8vLyBlYWNoIGJhc2ljIGJsb2NrLgorICB2b2lkIGR1bXBTdG10TGl2ZW5lc3MoY29uc3QgU291cmNlTWFuYWdlciAmTSk7CiAKICAgdm9pZCBydW5PbkFsbEJsb2NrcyhPYnNlcnZlciAmb2JzKTsKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvUG9zdE9yZGVyQ0ZHVmlldy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvUG9zdE9yZGVyQ0ZHVmlldy5oCmluZGV4IDdkZjNkYzYuLjA4ZmRhMDkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1Bvc3RPcmRlckNGR1ZpZXcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9Qb3N0T3JkZXJDRkdWaWV3LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUG9zdE9yZGVyQ0ZHVmlldy5oIC0gUG9zdCBvcmRlciB2aWV3IG9mIENGRyBibG9ja3MgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1JlYWNoYWJsZUNvZGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1JlYWNoYWJsZUNvZGUuaAppbmRleCBkNzlmMWIwLi41MTRiOTQ1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9SZWFjaGFibGVDb2RlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvUmVhY2hhYmxlQ29kZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFJlYWNoYWJsZUNvZGUuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9UaHJlYWRTYWZldHkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1RocmVhZFNhZmV0eS5oCmluZGV4IGM3MmRiNmYuLjJmMGM2OGMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1RocmVhZFNhZmV0eS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1RocmVhZFNhZmV0eS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFRocmVhZFNhZmV0eS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMjksOSArMTI4LDEwIEBACiAgIC8vLyBccGFyYW0gS2luZCAtLSB0aGUgY2FwYWJpbGl0eSdzIG5hbWUgcGFyYW1ldGVyIChyb2xlLCBtdXRleCwgZXRjKS4KICAgLy8vIFxwYXJhbSBMb2NrTmFtZSAtLSBBIFN0cmluZ1JlZiBuYW1lIGZvciB0aGUgbG9jayBleHByZXNzaW9uLCB0byBiZSBwcmludGVkCiAgIC8vLyBpbiB0aGUgZXJyb3IgbWVzc2FnZS4KKyAgLy8vIFxwYXJhbSBMb2NMb2NrZWQgLS0gVGhlIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBsb2NrIGV4cHJlc3Npb24uCiAgIC8vLyBccGFyYW0gTG9jIC0tIFRoZSBsb2NhdGlvbiBvZiB0aGUgc2Vjb25kIGxvY2sgZXhwcmVzc2lvbi4KICAgdmlydHVhbCB2b2lkIGhhbmRsZURvdWJsZUxvY2soU3RyaW5nUmVmIEtpbmQsIE5hbWUgTG9ja05hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIExvYykge30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTG9jTG9ja2VkLCBTb3VyY2VMb2NhdGlvbiBMb2MpIHt9CiAKICAgLy8vIFdhcm4gYWJvdXQgc2l0dWF0aW9ucyB3aGVyZSBhIG11dGV4IGlzIHNvbWV0aW1lcyBoZWxkIGFuZCBzb21ldGltZXMgbm90LgogICAvLy8gVGhlIHRocmVlIHNpdHVhdGlvbnMgYXJlOgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvVGhyZWFkU2FmZXR5Q29tbW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9UaHJlYWRTYWZldHlDb21tb24uaAppbmRleCA0MjJhMWRiLi40YTU4ZmU4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9UaHJlYWRTYWZldHlDb21tb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9UaHJlYWRTYWZldHlDb21tb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUaHJlYWRTYWZldHlDb21tb24uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvVGhyZWFkU2FmZXR5TG9naWNhbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvVGhyZWFkU2FmZXR5TG9naWNhbC5oCmluZGV4IDI1MDhhZjEuLjhkOTM4YzEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1RocmVhZFNhZmV0eUxvZ2ljYWwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9UaHJlYWRTYWZldHlMb2dpY2FsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVGhyZWFkU2FmZXR5TG9naWNhbC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0tKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gVGhpcyBmaWxlIGRlZmluZXMgYSByZXByZXNlbnRhdGlvbiBmb3IgbG9naWNhbCBleHByZXNzaW9ucyB3aXRoIFNFeHByIGxlYXZlcwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvVGhyZWFkU2FmZXR5T3BzLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1RocmVhZFNhZmV0eU9wcy5kZWYKaW5kZXggMGQyNDU4Yi4uZmM0ODgxYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvVGhyZWFkU2FmZXR5T3BzLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9UaHJlYWRTYWZldHlPcHMuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFRocmVhZFNhZmV0eVRJTC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9UaHJlYWRTYWZldHlUSUwuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1RocmVhZFNhZmV0eVRJTC5oCmluZGV4IGMxMDZhOWEuLmNhMjE5M2QgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1RocmVhZFNhZmV0eVRJTC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1RocmVhZFNhZmV0eVRJTC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFRocmVhZFNhZmV0eVRJTC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgaW4gdGhlIGxsdm0gcmVwb3NpdG9yeSBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1RocmVhZFNhZmV0eVRyYXZlcnNlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9UaHJlYWRTYWZldHlUcmF2ZXJzZS5oCmluZGV4IDMyYWFkZjUuLmU4MWMwMGQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1RocmVhZFNhZmV0eVRyYXZlcnNlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvVGhyZWFkU2FmZXR5VHJhdmVyc2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUaHJlYWRTYWZldHlUcmF2ZXJzZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvVGhyZWFkU2FmZXR5VXRpbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvVGhyZWFkU2FmZXR5VXRpbC5oCmluZGV4IDE2NTgzOTMuLmUzYjZlNjEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1RocmVhZFNhZmV0eVV0aWwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9UaHJlYWRTYWZldHlVdGlsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVGhyZWFkU2FmZXR5VXRpbC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1VuaW5pdGlhbGl6ZWRWYWx1ZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2VzL1VuaW5pdGlhbGl6ZWRWYWx1ZXMuaAppbmRleCA3OWQ4OWUwLi40NzliZTFmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNlcy9VbmluaXRpYWxpemVkVmFsdWVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzZXMvVW5pbml0aWFsaXplZFZhbHVlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89LSBVbmluaXRpYWxpemVkVmFsdWVzLmggLSBGaW5kaW5nIHVzZXMgb2YgdW5pbml0aWFsaXplZCB2YWx1ZXMgLSotIEMrKyAtKi09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNpc0RlY2xDb250ZXh0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNpc0RlY2xDb250ZXh0LmgKaW5kZXggNDkwZDJjZS4uZDQyNDMyYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzaXNEZWNsQ29udGV4dC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FuYWx5c2lzRGVjbENvbnRleHQuaApAQCAtMSw5ICsxLDggQEAKIC8vIEFuYWx5c2lzRGVjbENvbnRleHQuaCAtIEFuYWx5c2lzIGNvbnRleHQgZm9yIFBhdGggU2VucyBhbmFseXNpcyAtKi0gQysrIC0qLS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQW5hbHlzaXNEaWFnbm9zdGljLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNpc0RpYWdub3N0aWMuaAppbmRleCA4ZDI4OTcxLi5mZDVmMmZmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNpc0RpYWdub3N0aWMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbmFseXNpc0RpYWdub3N0aWMuaApAQCAtMSwyOCArMSwxNCBAQAogLy89PT0tLS0gRGlhZ25vc3RpY0FuYWx5c2lzLmggLSBEaWFnbm9zdGljcyBmb3IgbGliYW5hbHlzaXMgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIAogI2lmbmRlZiBMTFZNX0NMQU5HX0FOQUxZU0lTX0FOQUxZU0lTRElBR05PU1RJQ19ICiAjZGVmaW5lIExMVk1fQ0xBTkdfQU5BTFlTSVNfQU5BTFlTSVNESUFHTk9TVElDX0gKIAotI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWMuaCIKLQotbmFtZXNwYWNlIGNsYW5nIHsKLSAgbmFtZXNwYWNlIGRpYWcgewotICAgIGVudW0gewotI2RlZmluZSBESUFHKEVOVU0sRkxBR1MsREVGQVVMVF9NQVBQSU5HLERFU0MsR1JPVVAsXAotICAgICAgICAgICAgIFNGSU5BRSxOT1dFUlJPUixTSE9XSU5TWVNIRUFERVIsQ0FURUdPUlkpIEVOVU0sCi0jZGVmaW5lIEFOQUxZU0lTU1RBUlQKLSNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljQW5hbHlzaXNLaW5kcy5pbmMiCi0jdW5kZWYgRElBRwotICAgICAgTlVNX0JVSUxUSU5fQU5BTFlTSVNfRElBR05PU1RJQ1MKLSAgICB9OwotICB9ICAvLyBlbmQgbmFtZXNwYWNlIGRpYWcKLX0gIC8vIGVuZCBuYW1lc3BhY2UgY2xhbmcKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljQW5hbHlzaXMuaCIKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbnlDYWxsLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9BbnlDYWxsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkwOThhZAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0FueUNhbGwuaApAQCAtMCwwICsxLDIwOCBAQAorLy89PT0gQW55Q2FsbC5oIC0gQWJzdHJhY3Rpb24gb3ZlciBkaWZmZXJlbnQgY2FsbGFibGVzIC0tLS0tLS0tKi0gQysrIC0qLS0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIEEgdXRpbGl0eSBjbGFzcyBmb3IgcGVyZm9ybWluZyBnZW5lcmljIG9wZXJhdGlvbnMgb3ZlciBkaWZmZXJlbnQgY2FsbGFibGVzLgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworI2lmbmRlZiBMTFZNX0NMQU5HX0FOQUxZU0lTX0FOWV9DQUxMX0gKKyNkZWZpbmUgTExWTV9DTEFOR19BTkFMWVNJU19BTllfQ0FMTF9ICisKKyNpbmNsdWRlICJjbGFuZy9BU1QvRGVjbC5oIgorI2luY2x1ZGUgImNsYW5nL0FTVC9FeHByQ1hYLmgiCisjaW5jbHVkZSAiY2xhbmcvQVNUL0V4cHJPYmpDLmgiCisKK25hbWVzcGFjZSBjbGFuZyB7CisKKy8vLyBBbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGNvcnJlc3BvbmRzIHRvIGEgY2FsbC4KKy8vLyBJdCBtaWdodCBiZSBhIHN5bnRhY3RpY2FsbHktY29uY3JldGUgY2FsbCwgZG9uZSBhcyBhIHBhcnQgb2YgZXZhbHVhdGluZyBhbgorLy8vIGV4cHJlc3Npb24sIG9yIGl0IG1heSBiZSBhbiBhYnN0cmFjdCBjYWxsZWUgd2l0aCBubyBhc3NvY2lhdGVkIGV4cHJlc3Npb24uCitjbGFzcyBBbnlDYWxsIHsKK3B1YmxpYzoKKyAgZW51bSBLaW5kIHsKKyAgICAvLy8gQSBmdW5jdGlvbiwgZnVuY3Rpb24gcG9pbnRlciwgb3IgYSBDKysgbWV0aG9kIGNhbGwKKyAgICBGdW5jdGlvbiwKKworICAgIC8vLyBBIGNhbGwgdG8gYW4gT2JqZWN0aXZlLUMgbWV0aG9kCisgICAgT2JqQ01ldGhvZCwKKworICAgIC8vLyBBIGNhbGwgdG8gYW4gT2JqZWN0aXZlLUMgYmxvY2sKKyAgICBCbG9jaywKKworICAgIC8vLyBBbiBpbXBsaWNpdCBDKysgZGVzdHJ1Y3RvciBjYWxsIChjYWxsZWQgaW1wbGljaXRseQorICAgIC8vLyBvciBieSBvcGVyYXRvciAnZGVsZXRlJykKKyAgICBEZXN0cnVjdG9yLAorCisgICAgLy8vIEFuIGltcGxpY2l0IG9yIGV4cGxpY2l0IEMrKyBjb25zdHJ1Y3RvciBjYWxsCisgICAgQ29uc3RydWN0b3IsCisKKyAgICAvLy8gQSBDKysgYWxsb2NhdGlvbiBmdW5jdGlvbiBjYWxsIChvcGVyYXRvciBgbmV3YCksIHZpYSBDKysgbmV3LWV4cHJlc3Npb24KKyAgICBBbGxvY2F0b3IsCisKKyAgICAvLy8gQSBDKysgZGVhbGxvY2F0aW9uIGZ1bmN0aW9uIGNhbGwgKG9wZXJhdG9yIGBkZWxldGVgKSwgdmlhIEMrKworICAgIC8vLyBkZWxldGUtZXhwcmVzc2lvbgorICAgIERlYWxsb2NhdG9yCisgIH07CisKK3ByaXZhdGU6CisgIC8vLyBFaXRoZXIgZXhwcmVzc2lvbiBvciBkZWNsYXJhdGlvbiAoYnV0IG5vdCBib3RoIGF0IHRoZSBzYW1lIHRpbWUpCisgIC8vLyBjYW4gYmUgbnVsbC4KKworICAvLy8gQ2FsbCBleHByZXNzaW9uLCBpcyBudWxsIHdoZW4gaXMgbm90IGtub3duICh0aGVuIGRlY2xhcmF0aW9uIGlzIG5vbi1udWxsKSwKKyAgLy8vIG9yIGZvciBpbXBsaWNpdCBkZXN0cnVjdG9yIGNhbGxzICh3aGVuIG5vIGV4cHJlc3Npb24gZXhpc3RzLikKKyAgY29uc3QgRXhwciAqRSA9IG51bGxwdHI7CisKKyAgLy8vIENvcnJlc3BvbmRzIHRvIGEgc3RhdGljYWxseSBrbm93biBkZWNsYXJhdGlvbiBvZiB0aGUgY2FsbGVkIGZ1bmN0aW9uLAorICAvLy8gb3IgbnVsbCBpZiBpdCBpcyBub3Qga25vd24gKGUuZy4gZm9yIGEgZnVuY3Rpb24gcG9pbnRlcikuCisgIGNvbnN0IERlY2wgKkQgPSBudWxscHRyOworICBLaW5kIEs7CisKK3B1YmxpYzoKKyAgQW55Q2FsbChjb25zdCBDYWxsRXhwciAqQ0UpIDogRShDRSkgeworICAgIEQgPSBDRS0+Z2V0Q2FsbGVlRGVjbCgpOworICAgIEsgPSAoQ0UtPmdldENhbGxlZSgpLT5nZXRUeXBlKCktPmdldEFzPEJsb2NrUG9pbnRlclR5cGU+KCkpID8gQmxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEZ1bmN0aW9uOworICAgIGlmIChEICYmICgoSyA9PSBGdW5jdGlvbiAmJiAhaXNhPEZ1bmN0aW9uRGVjbD4oRCkpIHx8CisgICAgICAgICAgICAgIChLID09IEJsb2NrICYmICFpc2E8QmxvY2tEZWNsPihEKSkpKQorICAgICAgRCA9IG51bGxwdHI7CisgIH0KKworICBBbnlDYWxsKGNvbnN0IE9iakNNZXNzYWdlRXhwciAqTUUpCisgICAgICA6IEUoTUUpLCBEKE1FLT5nZXRNZXRob2REZWNsKCkpLCBLKE9iakNNZXRob2QpIHt9CisKKyAgQW55Q2FsbChjb25zdCBDWFhOZXdFeHByICpORSkKKyAgICAgIDogRShORSksIEQoTkUtPmdldE9wZXJhdG9yTmV3KCkpLCBLKEFsbG9jYXRvcikge30KKworICBBbnlDYWxsKGNvbnN0IENYWERlbGV0ZUV4cHIgKk5FKQorICAgICAgOiBFKE5FKSwgRChORS0+Z2V0T3BlcmF0b3JEZWxldGUoKSksIEsoRGVhbGxvY2F0b3IpIHt9CisKKyAgQW55Q2FsbChjb25zdCBDWFhDb25zdHJ1Y3RFeHByICpORSkKKyAgICAgIDogRShORSksIEQoTkUtPmdldENvbnN0cnVjdG9yKCkpLCBLKENvbnN0cnVjdG9yKSB7fQorCisgIEFueUNhbGwoY29uc3QgQ1hYRGVzdHJ1Y3RvckRlY2wgKkQpIDogRShudWxscHRyKSwgRChEKSwgSyhEZXN0cnVjdG9yKSB7fQorCisgIEFueUNhbGwoY29uc3QgQ1hYQ29uc3RydWN0b3JEZWNsICpEKSA6IEUobnVsbHB0ciksIEQoRCksIEsoQ29uc3RydWN0b3IpIHt9CisKKyAgQW55Q2FsbChjb25zdCBPYmpDTWV0aG9kRGVjbCAqRCkgOiBFKG51bGxwdHIpLCBEKEQpLCBLKE9iakNNZXRob2QpIHt9CisKKyAgQW55Q2FsbChjb25zdCBGdW5jdGlvbkRlY2wgKkQpIDogRShudWxscHRyKSwgRChEKSB7CisgICAgaWYgKGlzYTxDWFhDb25zdHJ1Y3RvckRlY2w+KEQpKSB7CisgICAgICBLID0gQ29uc3RydWN0b3I7CisgICAgfSBlbHNlIGlmIChpc2EgPENYWERlc3RydWN0b3JEZWNsPihEKSkgeworICAgICAgSyA9IERlc3RydWN0b3I7CisgICAgfSBlbHNlIHsKKyAgICAgIEsgPSBGdW5jdGlvbjsKKyAgICB9CisKKyAgfQorCisgIC8vLyBJZiB7QGNvZGUgRX0gaXMgYSBnZW5lcmljIGNhbGwgKHRvIE9iakMgbWV0aG9kIC9mdW5jdGlvbi9ibG9jay9ldGMpLAorICAvLy8gcmV0dXJuIGEgY29uc3RydWN0ZWQge0Bjb2RlIEFueUNhbGx9IG9iamVjdC4gUmV0dXJuIE5vbmUgb3RoZXJ3aXNlLgorICBzdGF0aWMgT3B0aW9uYWw8QW55Q2FsbD4gZm9yRXhwcihjb25zdCBFeHByICpFKSB7CisgICAgaWYgKGNvbnN0IGF1dG8gKk1FID0gZHluX2Nhc3Q8T2JqQ01lc3NhZ2VFeHByPihFKSkgeworICAgICAgcmV0dXJuIEFueUNhbGwoTUUpOworICAgIH0gZWxzZSBpZiAoY29uc3QgYXV0byAqQ0UgPSBkeW5fY2FzdDxDYWxsRXhwcj4oRSkpIHsKKyAgICAgIHJldHVybiBBbnlDYWxsKENFKTsKKyAgICB9IGVsc2UgaWYgKGNvbnN0IGF1dG8gKkNYTkUgPSBkeW5fY2FzdDxDWFhOZXdFeHByPihFKSkgeworICAgICAgcmV0dXJuIEFueUNhbGwoQ1hORSk7CisgICAgfSBlbHNlIGlmIChjb25zdCBhdXRvICpDWERFID0gZHluX2Nhc3Q8Q1hYRGVsZXRlRXhwcj4oRSkpIHsKKyAgICAgIHJldHVybiBBbnlDYWxsKENYREUpOworICAgIH0gZWxzZSBpZiAoY29uc3QgYXV0byAqQ1hDRSA9IGR5bl9jYXN0PENYWENvbnN0cnVjdEV4cHI+KEUpKSB7CisgICAgICByZXR1cm4gQW55Q2FsbChDWENFKTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIE5vbmU7CisgICAgfQorICB9CisKKyAgLy8vIElmIHtAY29kZSBEfSBpcyBhIGNhbGxhYmxlIChPYmplY3RpdmUtQyBtZXRob2Qgb3IgYSBmdW5jdGlvbiksIHJldHVybgorICAvLy8gYSBjb25zdHJ1Y3RlZCB7QGNvZGUgQW55Q2FsbH0gb2JqZWN0LiBSZXR1cm4gTm9uZSBvdGhlcndpc2UuCisgIC8vIEZJWE1FOiBibG9jayBzdXBwb3J0LgorICBzdGF0aWMgT3B0aW9uYWw8QW55Q2FsbD4gZm9yRGVjbChjb25zdCBEZWNsICpEKSB7CisgICAgaWYgKGNvbnN0IGF1dG8gKkZEID0gZHluX2Nhc3Q8RnVuY3Rpb25EZWNsPihEKSkgeworICAgICAgcmV0dXJuIEFueUNhbGwoRkQpOworICAgIH0gZWxzZSBpZiAoY29uc3QgYXV0byAqTUQgPSBkeW5fY2FzdDxPYmpDTWV0aG9kRGVjbD4oRCkpIHsKKyAgICAgIHJldHVybiBBbnlDYWxsKE1EKTsKKyAgICB9CisgICAgcmV0dXJuIE5vbmU7CisgIH0KKworICAvLy8gXHJldHVybnMgZm9ybWFsIHBhcmFtZXRlcnMgZm9yIGRpcmVjdCBjYWxscyAoaW5jbHVkaW5nIHZpcnR1YWwgY2FsbHMpCisgIEFycmF5UmVmPFBhcm1WYXJEZWNsICo+IHBhcmFtZXRlcnMoKSBjb25zdCB7CisgICAgaWYgKCFEKQorICAgICAgcmV0dXJuIE5vbmU7CisKKyAgICBpZiAoY29uc3QgYXV0byAqRkQgPSBkeW5fY2FzdDxGdW5jdGlvbkRlY2w+KEQpKSB7CisgICAgICByZXR1cm4gRkQtPnBhcmFtZXRlcnMoKTsKKyAgICB9IGVsc2UgaWYgKGNvbnN0IGF1dG8gKk1EID0gZHluX2Nhc3Q8T2JqQ01ldGhvZERlY2w+KEQpKSB7CisgICAgICByZXR1cm4gTUQtPnBhcmFtZXRlcnMoKTsKKyAgICB9IGVsc2UgaWYgKGNvbnN0IGF1dG8gKkJEID0gZHluX2Nhc3Q8QmxvY2tEZWNsPihEKSkgeworICAgICAgcmV0dXJuIEJELT5wYXJhbWV0ZXJzKCk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiBOb25lOworICAgIH0KKyAgfQorCisgIHVzaW5nIHBhcmFtX2NvbnN0X2l0ZXJhdG9yID0gQXJyYXlSZWY8UGFybVZhckRlY2wgKj46OmNvbnN0X2l0ZXJhdG9yOworICBwYXJhbV9jb25zdF9pdGVyYXRvciBwYXJhbV9iZWdpbigpIGNvbnN0IHsgcmV0dXJuIHBhcmFtZXRlcnMoKS5iZWdpbigpOyB9CisgIHBhcmFtX2NvbnN0X2l0ZXJhdG9yIHBhcmFtX2VuZCgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtZXRlcnMoKS5lbmQoKTsgfQorICBzaXplX3QgcGFyYW1fc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtZXRlcnMoKS5zaXplKCk7IH0KKyAgYm9vbCBwYXJhbV9lbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtZXRlcnMoKS5lbXB0eSgpOyB9CisKKyAgUXVhbFR5cGUgZ2V0UmV0dXJuVHlwZShBU1RDb250ZXh0ICZDdHgpIGNvbnN0IHsKKyAgICBzd2l0Y2ggKEspIHsKKyAgICBjYXNlIEZ1bmN0aW9uOgorICAgICAgaWYgKEUpCisgICAgICAgIHJldHVybiBjYXN0PENhbGxFeHByPihFKS0+Z2V0Q2FsbFJldHVyblR5cGUoQ3R4KTsKKyAgICAgIHJldHVybiBjYXN0PEZ1bmN0aW9uRGVjbD4oRCktPmdldFJldHVyblR5cGUoKTsKKyAgICBjYXNlIE9iakNNZXRob2Q6CisgICAgICBpZiAoRSkKKyAgICAgICAgcmV0dXJuIGNhc3Q8T2JqQ01lc3NhZ2VFeHByPihFKS0+Z2V0Q2FsbFJldHVyblR5cGUoQ3R4KTsKKyAgICAgIHJldHVybiBjYXN0PE9iakNNZXRob2REZWNsPihEKS0+Z2V0UmV0dXJuVHlwZSgpOworICAgIGNhc2UgQmxvY2s6CisgICAgICAvLyBGSVhNRTogQmxvY2tEZWNsIGRvZXMgbm90IGtub3cgaXRzIHJldHVybiB0eXBlLAorICAgICAgLy8gaGVuY2UgdGhlIGFzeW1tZXRyeSB3aXRoIHRoZSBmdW5jdGlvbiBhbmQgbWV0aG9kIGNhc2VzIGFib3ZlLgorICAgICAgcmV0dXJuIGNhc3Q8Q2FsbEV4cHI+KEUpLT5nZXRDYWxsUmV0dXJuVHlwZShDdHgpOworICAgIGNhc2UgRGVzdHJ1Y3RvcjoKKyAgICBjYXNlIENvbnN0cnVjdG9yOgorICAgIGNhc2UgQWxsb2NhdG9yOgorICAgIGNhc2UgRGVhbGxvY2F0b3I6CisgICAgICByZXR1cm4gY2FzdDxGdW5jdGlvbkRlY2w+KEQpLT5nZXRSZXR1cm5UeXBlKCk7CisgICAgfQorICB9CisKKyAgLy8vIFxyZXR1cm5zIEZ1bmN0aW9uIGlkZW50aWZpZXIgaWYgaXQgaXMgYSBuYW1lZCBkZWNsYXJhdGlvbiwKKyAgLy8vIHtAY29kZSBudWxscHRyfSBvdGhlcndpc2UuCisgIGNvbnN0IElkZW50aWZpZXJJbmZvICpnZXRJZGVudGlmaWVyKCkgY29uc3QgeworICAgIGlmIChjb25zdCBhdXRvICpORCA9IGR5bl9jYXN0X29yX251bGw8TmFtZWREZWNsPihEKSkKKyAgICAgIHJldHVybiBORC0+Z2V0SWRlbnRpZmllcigpOworICAgIHJldHVybiBudWxscHRyOworICB9CisKKyAgY29uc3QgRGVjbCAqZ2V0RGVjbCgpIGNvbnN0IHsKKyAgICByZXR1cm4gRDsKKyAgfQorCisgIGNvbnN0IEV4cHIgKmdldEV4cHIoKSBjb25zdCB7CisgICAgcmV0dXJuIEU7CisgIH0KKworICBLaW5kIGdldEtpbmQoKSBjb25zdCB7CisgICAgcmV0dXJuIEs7CisgIH0KKworICB2b2lkIGR1bXAoKSBjb25zdCB7CisgICAgaWYgKEUpCisgICAgICBFLT5kdW1wKCk7CisgICAgaWYgKEQpCisgICAgICBELT5kdW1wKCk7CisgIH0KK307CisKK30KKworI2VuZGlmIC8vIExMVk1fQ0xBTkdfQU5BTFlTSVNfQU5ZX0NBTExfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQm9keUZhcm0uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0JvZHlGYXJtLmgKaW5kZXggZmYwODU5Yi4uNzI2MDdmOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQm9keUZhcm0uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9Cb2R5RmFybS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PSBCb2R5RmFybS5oIC0gRmFjdG9yeSBmb3IgY29uanVyaW5nIHVwIGZha2UgYm9kaWVzIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotLy8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9DRkcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0NGRy5oCmluZGV4IGJmODFkODMuLmRjODNhOTkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0NGRy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0NGRy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENGRy5oIC0gQ2xhc3NlcyBmb3IgcmVwcmVzZW50aW5nIGFuZCBidWlsZGluZyBDRkdzIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9DRkdTdG10TWFwLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9DRkdTdG10TWFwLmgKaW5kZXggNzhlNjM3ZC4uOGNmMDIzNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQ0ZHU3RtdE1hcC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0NGR1N0bXRNYXAuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIENGR1N0bXRNYXAuaCAtIE1hcCBmcm9tIFN0bXQqIHRvIENGR0Jsb2NrKiAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0NhbGxHcmFwaC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQ2FsbEdyYXBoLmgKaW5kZXggYWUwZjM5Mi4uNDljMDQ0OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQ2FsbEdyYXBoLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQ2FsbEdyYXBoLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ2FsbEdyYXBoLmggLSBBU1QtYmFzZWQgQ2FsbCBncmFwaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTEzMSw2ICsxMzAsNyBAQAogICBib29sIFRyYXZlcnNlU3RtdChTdG10ICpTKSB7IHJldHVybiB0cnVlOyB9CiAKICAgYm9vbCBzaG91bGRXYWxrVHlwZXNPZlR5cGVMb2NzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgYm9vbCBzaG91bGRWaXNpdFRlbXBsYXRlSW5zdGFudGlhdGlvbnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6CiAgIC8vLyBBZGQgdGhlIGdpdmVuIGRlY2xhcmF0aW9uIHRvIHRoZSBjYWxsIGdyYXBoLgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQ2xvbmVEZXRlY3Rpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0Nsb25lRGV0ZWN0aW9uLmgKaW5kZXggZmFkY2ExMy4uZGI4MjdjMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQ2xvbmVEZXRlY3Rpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9DbG9uZURldGVjdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQ2xvbmVEZXRlY3Rpb24uaCAtIEZpbmRzIGNvZGUgY2xvbmVzIGluIGFuIEFTVCAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQ29kZUluamVjdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9Db2RlSW5qZWN0b3IuaAppbmRleCAyYzg3Y2RlLi5hNTlkYzBhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9Db2RlSW5qZWN0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9Db2RlSW5qZWN0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gQ29kZUluamVjdG9yLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0NvbnN0cnVjdGlvbkNvbnRleHQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0NvbnN0cnVjdGlvbkNvbnRleHQuaAppbmRleCA5YzYyYmFjLi5mMTU2NGY5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9Db25zdHJ1Y3Rpb25Db250ZXh0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvQ29uc3RydWN0aW9uQ29udGV4dC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvbnN0cnVjdGlvbkNvbnRleHQuaCAtIENGRyBjb25zdHJ1Y3RvciBpbmZvcm1hdGlvbiAtLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xOSw2ICsxOCw3IEBACiAKICNpbmNsdWRlICJjbGFuZy9BbmFseXNpcy9TdXBwb3J0L0J1bXBWZWN0b3IuaCIKICNpbmNsdWRlICJjbGFuZy9BU1QvRXhwckNYWC5oIgorI2luY2x1ZGUgImNsYW5nL0FTVC9FeHByT2JqQy5oIgogCiBuYW1lc3BhY2UgY2xhbmcgewogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9Eb21haW5TcGVjaWZpYy9Db2NvYUNvbnZlbnRpb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9Eb21haW5TcGVjaWZpYy9Db2NvYUNvbnZlbnRpb25zLmgKaW5kZXggOTMyNmQxYS4uODUzMWQxNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvRG9tYWluU3BlY2lmaWMvQ29jb2FDb252ZW50aW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0RvbWFpblNwZWNpZmljL0NvY29hQ29udmVudGlvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDb2NvYUNvbnZlbnRpb25zLmggLSBTcGVjaWFsIGhhbmRsaW5nIG9mIENvY29hIGNvbnZlbnRpb25zIC0qLSBDKysgLSotLS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvRG9tYWluU3BlY2lmaWMvT2JqQ05vUmV0dXJuLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9Eb21haW5TcGVjaWZpYy9PYmpDTm9SZXR1cm4uaAppbmRleCBlMzA0ZDgzLi44MGQ3Y2I4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9Eb21haW5TcGVjaWZpYy9PYmpDTm9SZXR1cm4uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9Eb21haW5TcGVjaWZpYy9PYmpDTm9SZXR1cm4uaApAQCAtMSw5ICsxLDggQEAKIC8vPSBPYmpDTm9SZXR1cm4uaCAtIEhhbmRsaW5nIG9mIENvY29hIEFQSXMga25vd24gbm90IHRvIHJldHVybiAtLSotIEMrKyAtKi0tLS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvRmxvd1NlbnNpdGl2ZS9EYXRhZmxvd1ZhbHVlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvRmxvd1NlbnNpdGl2ZS9EYXRhZmxvd1ZhbHVlcy5oCmluZGV4IGY4NmIyYjAuLjcwOTc1MzMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL0Zsb3dTZW5zaXRpdmUvRGF0YWZsb3dWYWx1ZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9GbG93U2Vuc2l0aXZlL0RhdGFmbG93VmFsdWVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBEYXRhZmxvd1ZhbHVlcy5oIC0gRGF0YSBzdHJ1Y3R1cmUgZm9yIGRhdGFmbG93IHZhbHVlcyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL1Byb2dyYW1Qb2ludC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvUHJvZ3JhbVBvaW50LmgKaW5kZXggZDc4MTc0ZS4uNjIzZjVkYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvUHJvZ3JhbVBvaW50LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvUHJvZ3JhbVBvaW50LmgKQEAgLTEsOSArMSw4IEBACiAvLz09LSBQcm9ncmFtUG9pbnQuaCAtIFByb2dyYW0gUG9pbnRzIGZvciBQYXRoLVNlbnNpdGl2ZSBBbmFseXNpcyAtLSotIEMrKyAtKi0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTc3OCw5ICs3NzcsNiBAQAogCiB9OwogCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzUG9kTGlrZTxjbGFuZzo6UHJvZ3JhbVBvaW50PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLQogfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1JldGFpblN1bW1hcnlNYW5hZ2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9SZXRhaW5TdW1tYXJ5TWFuYWdlci5oCnNpbWlsYXJpdHkgaW5kZXggNjklCnJlbmFtZSBmcm9tIGxpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUmV0YWluU3VtbWFyeU1hbmFnZXIuaApyZW5hbWUgdG8gbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvUmV0YWluU3VtbWFyeU1hbmFnZXIuaAppbmRleCBmYzUwNmFlLi42YWNlZmI1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1JldGFpblN1bW1hcnlNYW5hZ2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvUmV0YWluU3VtbWFyeU1hbmFnZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09IFJldGFpblN1bW1hcnlNYW5hZ2VyLmggLSBTdW1tYXJpZXMgZm9yIHJlZmVyZW5jZSBjb3VudGluZyAtLS0qLSBDKysgLSotLS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTMsMzIgKzEyLDQ1IEBACiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIAotI2lmbmRlZiBMTFZNX0NMQU5HX0FOQUxZWkVSX0NPUkVfUkVUQUlOU1VNTUFSWU1BTkFHRVIKLSNkZWZpbmUgTExWTV9DTEFOR19BTkFMWVpFUl9DT1JFX1JFVEFJTlNVTU1BUllNQU5BR0VSCisjaWZuZGVmIExMVk1fQ0xBTkdfQU5BTFlTSVNfUkVUQUlOU1VNTUFSWV9NQU5BR0VSX0gKKyNkZWZpbmUgTExWTV9DTEFOR19BTkFMWVNJU19SRVRBSU5TVU1NQVJZX01BTkFHRVJfSAogCiAjaW5jbHVkZSAibGx2bS9BRFQvRGVuc2VNYXAuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9Gb2xkaW5nU2V0LmgiCisjaW5jbHVkZSAibGx2bS9BRFQvSW1tdXRhYmxlTWFwLmgiCiAjaW5jbHVkZSAiY2xhbmcvQVNUL0F0dHIuaCIKICNpbmNsdWRlICJjbGFuZy9BU1QvRGVjbENYWC5oIgogI2luY2x1ZGUgImNsYW5nL0FTVC9EZWNsT2JqQy5oIgogI2luY2x1ZGUgImNsYW5nL0FTVC9QYXJlbnRNYXAuaCIKKyNpbmNsdWRlICJjbGFuZy9BbmFseXNpcy9BbnlDYWxsLmgiCiAjaW5jbHVkZSAiY2xhbmcvQW5hbHlzaXMvU2VsZWN0b3JFeHRyYXMuaCIKLSNpbmNsdWRlICJjbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvQ2FsbEV2ZW50LmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvU1RMRXh0cmFzLmgiCiAKLS8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi0vLyBBZGFwdGVycyBmb3IgRm9sZGluZ1NldC4KLS8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi0KIHVzaW5nIG5hbWVzcGFjZSBjbGFuZzsKLXVzaW5nIG5hbWVzcGFjZSBlbnRvOwogCiBuYW1lc3BhY2UgY2xhbmcgewogbmFtZXNwYWNlIGVudG8gewogCi0vLy8gQW4gQXJnRWZmZWN0IHN1bW1hcml6ZXMgdGhlIHJldGFpbiBjb3VudCBiZWhhdmlvciBvbiBhbiBhcmd1bWVudCBvciByZWNlaXZlcgotLy8vIHRvIGEgZnVuY3Rpb24gb3IgbWV0aG9kLgotZW51bSBBcmdFZmZlY3QgeworLy8vIERldGVybWluZXMgdGhlIG9iamVjdCBraW5kIG9mIGEgdHJhY2tlZCBvYmplY3QuCitlbnVtIGNsYXNzIE9iaktpbmQgeworICAvLy8gSW5kaWNhdGVzIHRoYXQgdGhlIHRyYWNrZWQgb2JqZWN0IGlzIGEgQ0Ygb2JqZWN0LgorICBDRiwKKworICAvLy8gSW5kaWNhdGVzIHRoYXQgdGhlIHRyYWNrZWQgb2JqZWN0IGlzIGFuIE9iamVjdGl2ZS1DIG9iamVjdC4KKyAgT2JqQywKKworICAvLy8gSW5kaWNhdGVzIHRoYXQgdGhlIHRyYWNrZWQgb2JqZWN0IGNvdWxkIGJlIGEgQ0Ygb3IgT2JqZWN0aXZlLUMgb2JqZWN0LgorICBBbnlPYmosCisKKyAgLy8vIEluZGljYXRlcyB0aGF0IHRoZSB0cmFja2VkIG9iamVjdCBpcyBhIGdlbmVyYWxpemVkIG9iamVjdC4KKyAgR2VuZXJhbGl6ZWQsCisKKyAgLy8vIEluZGljYXRlcyB0aGF0IHRoZSB0cmFja2luZyBvYmplY3QgaXMgYSBkZXNjZW5kYW50IG9mIGEKKyAgLy8vIHJlZmVyZW5jZWQtY291bnRlZCBPU09iamVjdCwgdXNlZCBpbiB0aGUgRGFyd2luIGtlcm5lbC4KKyAgT1MKK307CisKK2VudW0gQXJnRWZmZWN0S2luZCB7CiAgIC8vLyBUaGVyZSBpcyBubyBlZmZlY3QuCiAgIERvTm90aGluZywKIApAQCAtNDYsNDQgKzU4LDM1IEBACiAgIC8vLyB0aGUgcmVmZXJlbmNlZCBvYmplY3QuCiAgIEF1dG9yZWxlYXNlLAogCi0gIC8vLyBUaGUgYXJndW1lbnQgaXMgdHJlYXRlZCBhcyBpZiBhbiAtZGVhbGxvYyBtZXNzYWdlIGhhZCBiZWVuIHNlbnQgdG8KLSAgLy8vIHRoZSByZWZlcmVuY2VkIG9iamVjdC4KKyAgLy8vIFRoZSBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIGlmIHRoZSByZWZlcmVuY2VkIG9iamVjdCB3YXMgZGVhbGxvY2F0ZWQuCiAgIERlYWxsb2MsCiAKLSAgLy8vIFRoZSBhcmd1bWVudCBoYXMgaXRzIHJlZmVyZW5jZSBjb3VudCBkZWNyZWFzZWQgYnkgMS4gIFRoaXMgaXMgYXMKLSAgLy8vIGlmIENGUmVsZWFzZSBoYXMgYmVlbiBjYWxsZWQgb24gdGhlIGFyZ3VtZW50LgorICAvLy8gVGhlIGFyZ3VtZW50IGhhcyBpdHMgcmVmZXJlbmNlIGNvdW50IGRlY3JlYXNlZCBieSAxLgogICBEZWNSZWYsCiAKLSAgLy8vIFRoZSBhcmd1bWVudCBoYXMgaXRzIHJlZmVyZW5jZSBjb3VudCBkZWNyZWFzZWQgYnkgMS4gIFRoaXMgaXMgYXMKLSAgLy8vIGlmIGEgLXJlbGVhc2UgbWVzc2FnZSBoYXMgYmVlbiBzZW50IHRvIHRoZSBhcmd1bWVudC4gIFRoaXMgZGlmZmVycwotICAvLy8gaW4gYmVoYXZpb3IgZnJvbSBEZWNSZWYgd2hlbiBHQyBpcyBlbmFibGVkLgotICBEZWNSZWZNc2csCi0KICAgLy8vIFRoZSBhcmd1bWVudCBoYXMgaXRzIHJlZmVyZW5jZSBjb3VudCBkZWNyZWFzZWQgYnkgMSB0byBtb2RlbAogICAvLy8gYSB0cmFuc2ZlcnJlZCBicmlkZ2UgY2FzdCB1bmRlciBBUkMuCiAgIERlY1JlZkJyaWRnZWRUcmFuc2ZlcnJlZCwKIAotICAvLy8gVGhlIGFyZ3VtZW50IGhhcyBpdHMgcmVmZXJlbmNlIGNvdW50IGluY3JlYXNlZCBieSAxLiAgVGhpcyBpcyBhcwotICAvLy8gaWYgYSAtcmV0YWluIG1lc3NhZ2UgaGFzIGJlZW4gc2VudCB0byB0aGUgYXJndW1lbnQuICBUaGlzIGRpZmZlcnMKLSAgLy8vIGluIGJlaGF2aW9yIGZyb20gSW5jUmVmIHdoZW4gR0MgaXMgZW5hYmxlZC4KLSAgSW5jUmVmTXNnLAotCi0gIC8vLyBUaGUgYXJndW1lbnQgaGFzIGl0cyByZWZlcmVuY2UgY291bnQgaW5jcmVhc2VkIGJ5IDEuICBUaGlzIGlzIGFzCi0gIC8vLyBpZiBDRlJldGFpbiBoYXMgYmVlbiBjYWxsZWQgb24gdGhlIGFyZ3VtZW50LgorICAvLy8gVGhlIGFyZ3VtZW50IGhhcyBpdHMgcmVmZXJlbmNlIGNvdW50IGluY3JlYXNlZCBieSAxLgogICBJbmNSZWYsCiAKLSAgLy8vIFRoZSBhcmd1bWVudCBhY3RzIGFzIGlmIGhhcyBiZWVuIHBhc3NlZCB0byBDRk1ha2VDb2xsZWN0YWJsZSwgd2hpY2gKLSAgLy8vIHRyYW5zZmVycyB0aGUgb2JqZWN0IHRvIHRoZSBHYXJiYWdlIENvbGxlY3RvciB1bmRlciBHQy4KLSAgTWFrZUNvbGxlY3RhYmxlLAotCiAgIC8vLyBUaGUgYXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGEgcmV0YWluLWNvdW50ZWQgb2JqZWN0OyBvbiBleGl0LCB0aGUgbmV3Ci0gIC8vLyB2YWx1ZSBvZiB0aGUgcG9pbnRlciBpcyBhICswIHZhbHVlIG9yIE5VTEwuCisgIC8vLyB2YWx1ZSBvZiB0aGUgcG9pbnRlciBpcyBhICswIHZhbHVlLgogICBVbnJldGFpbmVkT3V0UGFyYW1ldGVyLAogCiAgIC8vLyBUaGUgYXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGEgcmV0YWluLWNvdW50ZWQgb2JqZWN0OyBvbiBleGl0LCB0aGUgbmV3Ci0gIC8vLyB2YWx1ZSBvZiB0aGUgcG9pbnRlciBpcyBhICsxIHZhbHVlIG9yIE5VTEwuCisgIC8vLyB2YWx1ZSBvZiB0aGUgcG9pbnRlciBpcyBhICsxIHZhbHVlLgogICBSZXRhaW5lZE91dFBhcmFtZXRlciwKIAorICAvLy8gVGhlIGFyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhIHJldGFpbi1jb3VudGVkIG9iamVjdDsgb24gZXhpdCwgdGhlIG5ldworICAvLy8gdmFsdWUgb2YgdGhlIHBvaW50ZXIgaXMgYSArMSB2YWx1ZSBpZmYgdGhlIHJldHVybiBjb2RlIGlzIHplcm8uCisgIFJldGFpbmVkT3V0UGFyYW1ldGVyT25aZXJvLAorCisgIC8vLyBUaGUgYXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGEgcmV0YWluLWNvdW50ZWQgb2JqZWN0OyBvbiBleGl0LCB0aGUgbmV3CisgIC8vLyB2YWx1ZSBvZiB0aGUgcG9pbnRlciBpcyBhICsxIHZhbHVlIGlmZiB0aGUgcmV0dXJuIGNvZGUgaXMgbm9uLXplcm8uCisgIFJldGFpbmVkT3V0UGFyYW1ldGVyT25Ob25aZXJvLAorCiAgIC8vLyBUaGUgYXJndW1lbnQgaXMgdHJlYXRlZCBhcyBwb3RlbnRpYWxseSBlc2NhcGluZywgbWVhbmluZyB0aGF0CiAgIC8vLyBldmVuIHdoZW4gaXRzIHJlZmVyZW5jZSBjb3VudCBoaXRzIDAgaXQgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgc3RpbGwKICAgLy8vIHBvc3NpYmx5IGJlaW5nIGFsaXZlIGFzIHNvbWVvbmUgZWxzZSAqbWF5KiBiZSBob2xkaW5nIG9udG8gdGhlIG9iamVjdC4KQEAgLTEwOCwxMyArMTExLDI3IEBACiAgIC8vLyBjb3VudCBvZiB0aGUgYXJndW1lbnQgYW5kIGFsbCB0eXBlc3RhdGUgdHJhY2tpbmcgb24gdGhhdCBhcmd1bWVudAogICAvLy8gc2hvdWxkIGNlYXNlLgogICBEZWNSZWZBbmRTdG9wVHJhY2tpbmdIYXJkLAorfTsKIAotICAvLy8gUGVyZm9ybXMgdGhlIGNvbWJpbmVkIGZ1bmN0aW9uYWxpdHkgb2YgRGVjUmVmTXNnIGFuZCBTdG9wVHJhY2tpbmdIYXJkLgotICAvLy8KLSAgLy8vIFRoZSBtb2RlbHMgdGhlIGVmZmVjdCB0aGF0IHRoZSBjYWxsZWQgZnVuY3Rpb24gZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlCi0gIC8vLyBjb3VudCBvZiB0aGUgYXJndW1lbnQgYW5kIGFsbCB0eXBlc3RhdGUgdHJhY2tpbmcgb24gdGhhdCBhcmd1bWVudAotICAvLy8gc2hvdWxkIGNlYXNlLgotICBEZWNSZWZNc2dBbmRTdG9wVHJhY2tpbmdIYXJkCisvLy8gQW4gQXJnRWZmZWN0IHN1bW1hcml6ZXMgdGhlIHJldGFpbiBjb3VudCBiZWhhdmlvciBvbiBhbiBhcmd1bWVudCBvciByZWNlaXZlcgorLy8vIHRvIGEgZnVuY3Rpb24gb3IgbWV0aG9kLgorY2xhc3MgQXJnRWZmZWN0IHsKKyAgQXJnRWZmZWN0S2luZCBLOworICBPYmpLaW5kIE87CitwdWJsaWM6CisgIGV4cGxpY2l0IEFyZ0VmZmVjdChBcmdFZmZlY3RLaW5kIEsgPSBEb05vdGhpbmcsIE9iaktpbmQgTyA9IE9iaktpbmQ6OkFueU9iaikKKyAgICAgIDogSyhLKSwgTyhPKSB7fQorCisgIEFyZ0VmZmVjdEtpbmQgZ2V0S2luZCgpIGNvbnN0IHsgcmV0dXJuIEs7IH0KKyAgT2JqS2luZCBnZXRPYmpLaW5kKCkgY29uc3QgeyByZXR1cm4gTzsgfQorCisgIEFyZ0VmZmVjdCB3aXRoS2luZChBcmdFZmZlY3RLaW5kIE5ld0spIHsKKyAgICByZXR1cm4gQXJnRWZmZWN0KE5ld0ssIE8pOworICB9CisKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFyZ0VmZmVjdCAmT3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gSyA9PSBPdGhlci5LICYmIE8gPT0gT3RoZXIuTzsKKyAgfQogfTsKIAogLy8vIFJldEVmZmVjdCBzdW1tYXJpemVzIGEgY2FsbCdzIHJldGFpbi9yZWxlYXNlIGJlaGF2aW9yIHdpdGggcmVzcGVjdApAQCAtMTI1LDQ2ICsxNDIsMzEgQEAKICAgICAvLy8gSW5kaWNhdGVzIHRoYXQgbm8gcmV0YWluIGNvdW50IGluZm9ybWF0aW9uIGlzIHRyYWNrZWQgZm9yCiAgICAgLy8vIHRoZSByZXR1cm4gdmFsdWUuCiAgICAgTm9SZXQsCisKICAgICAvLy8gSW5kaWNhdGVzIHRoYXQgdGhlIHJldHVybmVkIHZhbHVlIGlzIGFuIG93bmVkICgrMSkgc3ltYm9sLgogICAgIE93bmVkU3ltYm9sLAorCiAgICAgLy8vIEluZGljYXRlcyB0aGF0IHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCByZXRhaW4gY291bnQKICAgICAvLy8gc2VtYW50aWNzIGJ1dCB0aGF0IGl0IGlzIG5vdCBvd25lZCAoKzApLiAgVGhpcyBpcyB0aGUgZGVmYXVsdAogICAgIC8vLyBmb3IgZ2V0dGVycywgZXRjLgogICAgIE5vdE93bmVkU3ltYm9sLAotICAgIC8vLyBJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGlzIG5vdCBvd25lZCBhbmQgY29udHJvbGxlZCBieSB0aGUKLSAgICAvLy8gR2FyYmFnZSBjb2xsZWN0b3IuCi0gICAgR0NOb3RPd25lZFN5bWJvbCwKKwogICAgIC8vLyBJbmRpY2F0ZXMgdGhhdCB0aGUgcmV0dXJuIHZhbHVlIGlzIGFuIG93bmVkIG9iamVjdCB3aGVuIHRoZQogICAgIC8vLyByZWNlaXZlciBpcyBhbHNvIGEgdHJhY2tlZCBvYmplY3QuCiAgICAgT3duZWRXaGVuVHJhY2tlZFJlY2VpdmVyLAorCiAgICAgLy8gVHJlYXQgdGhpcyBmdW5jdGlvbiBhcyByZXR1cm5pbmcgYSBub24tdHJhY2tlZCBzeW1ib2wgZXZlbiBpZgogICAgIC8vIHRoZSBmdW5jdGlvbiBoYXMgYmVlbiBpbmxpbmVkLiBUaGlzIGlzIHVzZWQgd2hlcmUgdGhlIGNhbGwKLSAgICAvLyBzaXRlIHN1bW1hcnkgaXMgbW9yZSBwcmVzaXNlIHRoYW4gdGhlIHN1bW1hcnkgaW5kaXJlY3RseSBwcm9kdWNlZAorICAgIC8vIHNpdGUgc3VtbWFyeSBpcyBtb3JlIHByZWNpc2UgdGhhbiB0aGUgc3VtbWFyeSBpbmRpcmVjdGx5IHByb2R1Y2VkCiAgICAgLy8gYnkgaW5saW5pbmcgdGhlIGZ1bmN0aW9uCiAgICAgTm9SZXRIYXJkCiAgIH07CiAKLSAgLy8vIERldGVybWluZXMgdGhlIG9iamVjdCBraW5kIG9mIGEgdHJhY2tlZCBvYmplY3QuCi0gIGVudW0gT2JqS2luZCB7Ci0gICAgLy8vIEluZGljYXRlcyB0aGF0IHRoZSB0cmFja2VkIG9iamVjdCBpcyBhIENGIG9iamVjdC4gIFRoaXMgaXMKLSAgICAvLy8gaW1wb3J0YW50IGJldHdlZW4gR0MgYW5kIG5vbi1HQyBjb2RlLgotICAgIENGLAotICAgIC8vLyBJbmRpY2F0ZXMgdGhhdCB0aGUgdHJhY2tlZCBvYmplY3QgaXMgYW4gT2JqZWN0aXZlLUMgb2JqZWN0LgotICAgIE9iakMsCi0gICAgLy8vIEluZGljYXRlcyB0aGF0IHRoZSB0cmFja2VkIG9iamVjdCBjb3VsZCBiZSBhIENGIG9yIE9iamVjdGl2ZS1DIG9iamVjdC4KLSAgICBBbnlPYmosCi0gICAgLy8vIEluZGljYXRlcyB0aGF0IHRoZSB0cmFja2VkIG9iamVjdCBpcyBhIGdlbmVyYWxpemVkIG9iamVjdC4KLSAgICBHZW5lcmFsaXplZCwKLQotICAgIC8vLyBBIGRlc2NlbmRhbnQgb2YgT1NPYmplY3QuCi0gICAgT1MKLSAgfTsKLQogcHJpdmF0ZToKICAgS2luZCBLOwogICBPYmpLaW5kIE87CiAKLSAgUmV0RWZmZWN0KEtpbmQgaywgT2JqS2luZCBvID0gQW55T2JqKSA6IEsoayksIE8obykge30KKyAgUmV0RWZmZWN0KEtpbmQgaywgT2JqS2luZCBvID0gT2JqS2luZDo6QW55T2JqKSA6IEsoayksIE8obykge30KIAogcHVibGljOgogICBLaW5kIGdldEtpbmQoKSBjb25zdCB7IHJldHVybiBLOyB9CkBAIC0xODQsNyArMTg2LDcgQEAKICAgfQogCiAgIHN0YXRpYyBSZXRFZmZlY3QgTWFrZU93bmVkV2hlblRyYWNrZWRSZWNlaXZlcigpIHsKLSAgICByZXR1cm4gUmV0RWZmZWN0KE93bmVkV2hlblRyYWNrZWRSZWNlaXZlciwgT2JqQyk7CisgICAgcmV0dXJuIFJldEVmZmVjdChPd25lZFdoZW5UcmFja2VkUmVjZWl2ZXIsIE9iaktpbmQ6Ok9iakMpOwogICB9CiAKICAgc3RhdGljIFJldEVmZmVjdCBNYWtlT3duZWQoT2JqS2luZCBvKSB7CkBAIC0xOTMsOSArMTk1LDYgQEAKICAgc3RhdGljIFJldEVmZmVjdCBNYWtlTm90T3duZWQoT2JqS2luZCBvKSB7CiAgICAgcmV0dXJuIFJldEVmZmVjdChOb3RPd25lZFN5bWJvbCwgbyk7CiAgIH0KLSAgc3RhdGljIFJldEVmZmVjdCBNYWtlR0NOb3RPd25lZCgpIHsKLSAgICByZXR1cm4gUmV0RWZmZWN0KEdDTm90T3duZWRTeW1ib2wsIE9iakMpOwotICB9CiAgIHN0YXRpYyBSZXRFZmZlY3QgTWFrZU5vUmV0KCkgewogICAgIHJldHVybiBSZXRFZmZlY3QoTm9SZXQpOwogICB9CkBAIC0yMDQsMzggKzIwMyw2IEBACiAgIH0KIH07CiAKLS8vLyBFbmNhcHN1bGF0ZXMgdGhlIHJldGFpbiBjb3VudCBzZW1hbnRpY3Mgb24gdGhlIGFyZ3VtZW50cywgcmV0dXJuIHZhbHVlLAotLy8vIGFuZCByZWNlaXZlciAoaWYgYW55KSBvZiBhIGZ1bmN0aW9uL21ldGhvZCBjYWxsLgotLy8vCi0vLy8gTm90ZSB0aGF0IGNvbnN0cnVjdGlvbiBvZiB0aGVzZSBvYmplY3RzIGlzIG5vdCBoaWdobHkgZWZmaWNpZW50LiAgVGhhdAotLy8vIGlzIG9rYXkgZm9yIGNsaWVudHMgd2hlcmUgY3JlYXRpbmcgdGhlc2Ugb2JqZWN0cyBpc24ndCByZWFsbHkgYSBib3R0bGVuZWNrLgotLy8vIFRoZSBwdXJwb3NlIG9mIHRoZSBBUEkgaXMgdG8gcHJvdmlkZSBzb21ldGhpbmcgc2ltcGxlLiAgVGhlIGFjdHVhbAotLy8vIHN0YXRpYyBhbmFseXplciBjaGVja2VyIHRoYXQgaW1wbGVtZW50cyByZXRhaW4vcmVsZWFzZSB0eXBlc3RhdGUKLS8vLyB0cmFja2luZyB1c2VzIHNvbWV0aGluZyBtb3JlIGVmZmljaWVudC4KLWNsYXNzIENhbGxFZmZlY3RzIHsKLSAgbGx2bTo6U21hbGxWZWN0b3I8QXJnRWZmZWN0LCAxMD4gQXJnczsKLSAgUmV0RWZmZWN0IFJldDsKLSAgQXJnRWZmZWN0IFJlY2VpdmVyOwotCi0gIENhbGxFZmZlY3RzKGNvbnN0IFJldEVmZmVjdCAmUikgOiBSZXQoUikge30KLQotcHVibGljOgotICAvLy8gUmV0dXJucyB0aGUgYXJndW1lbnQgZWZmZWN0cyBmb3IgYSBjYWxsLgotICBBcnJheVJlZjxBcmdFZmZlY3Q+IGdldEFyZ3MoKSBjb25zdCB7IHJldHVybiBBcmdzOyB9Ci0KLSAgLy8vIFJldHVybnMgdGhlIGVmZmVjdHMgb24gdGhlIHJlY2VpdmVyLgotICBBcmdFZmZlY3QgZ2V0UmVjZWl2ZXIoKSBjb25zdCB7IHJldHVybiBSZWNlaXZlcjsgfQotCi0gIC8vLyBSZXR1cm5zIHRoZSBlZmZlY3Qgb24gdGhlIHJldHVybiB2YWx1ZS4KLSAgUmV0RWZmZWN0IGdldFJldHVyblZhbHVlKCkgY29uc3QgeyByZXR1cm4gUmV0OyB9Ci0KLSAgLy8vIFJldHVybiB0aGUgQ2FsbEVmZWN0IGZvciBhIGdpdmVuIE9iamVjdGl2ZS1DIG1ldGhvZC4KLSAgc3RhdGljIENhbGxFZmZlY3RzIGdldEVmZmVjdChjb25zdCBPYmpDTWV0aG9kRGVjbCAqTUQpOwotCi0gIC8vLyBSZXR1cm4gdGhlIENhbGxFZmVjdCBmb3IgYSBnaXZlbiBDL0MrKyBmdW5jdGlvbi4KLSAgc3RhdGljIENhbGxFZmZlY3RzIGdldEVmZmVjdChjb25zdCBGdW5jdGlvbkRlY2wgKkZEKTsKLX07Ci0KIC8vLyBBIGtleSBpZGVudGlmeWluZyBhIHN1bW1hcnkuCiBjbGFzcyBPYmpDU3VtbWFyeUtleSB7CiAgIElkZW50aWZpZXJJbmZvKiBJSTsKQEAgLTI1NywxMiArMjI0LDE3IEBACiB9IC8vIGVuZCBuYW1lc3BhY2UgZW50bwogfSAvLyBlbmQgbmFtZXNwYWNlIGNsYW5nCiAKK3VzaW5nIG5hbWVzcGFjZSBlbnRvOwogCiBuYW1lc3BhY2UgbGx2bSB7CiAKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLyBBZGFwdGVycyBmb3IgRm9sZGluZ1NldC4KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRm9sZGluZ1NldFRyYWl0PEFyZ0VmZmVjdD4gewogc3RhdGljIGlubGluZSB2b2lkIFByb2ZpbGUoY29uc3QgQXJnRWZmZWN0IFgsIEZvbGRpbmdTZXROb2RlSUQgJklEKSB7Ci0gIElELkFkZEludGVnZXIoKHVuc2lnbmVkKSBYKTsKKyAgSUQuQWRkSW50ZWdlcigodW5zaWduZWQpIFguZ2V0S2luZCgpKTsKKyAgSUQuQWRkSW50ZWdlcigodW5zaWduZWQpIFguZ2V0T2JqS2luZCgpKTsKIH0KIH07CiB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgRm9sZGluZ1NldFRyYWl0PFJldEVmZmVjdD4gewpAQCAtMzY5LDExICszNDEsMTggQEAKICAgLy8vICBUaGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBpZiB0aGUgc3VtbWFyeSBhcHBsaWVzIHRvIGFuIE9iakNNZXNzYWdlRXhwciouCiAgIEFyZ0VmZmVjdCBnZXRSZWNlaXZlckVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIFJlY2VpdmVyOyB9CiAKKyAgLy8vIFxyZXR1cm4gdGhlIGVmZmVjdCBvbiB0aGUgInRoaXMiIHJlY2VpdmVyIG9mIHRoZSBtZXRob2QgY2FsbC4KKyAgLy8vIFRoaXMgaXMgb25seSBtZWFuaW5nZnVsIGlmIHRoZSBzdW1tYXJ5IGFwcGxpZXMgdG8gQ1hYTWV0aG9kRGVjbCouCiAgIEFyZ0VmZmVjdCBnZXRUaGlzRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gVGhpczsgfQogCisgIEFyZ0VmZmVjdCBnZXREZWZhdWx0RWZmZWN0KCkgY29uc3QgeyByZXR1cm4gRGVmYXVsdEFyZ0VmZmVjdDsgfQorCisgIC8vLyBTZXQgdGhlIGVmZmVjdCBvZiB0aGUgbWV0aG9kIG9uICJ0aGlzIi4KKyAgdm9pZCBzZXRUaGlzRWZmZWN0KEFyZ0VmZmVjdCBlKSB7IFRoaXMgPSBlOyB9CisKICAgYm9vbCBpc05vb3AoKSBjb25zdCB7Ci0gICAgcmV0dXJuIFJldCA9PSBSZXRFZmZlY3Q6Ok1ha2VOb1JldCgpICYmIFJlY2VpdmVyID09IERvTm90aGluZwotICAgICAgJiYgRGVmYXVsdEFyZ0VmZmVjdCA9PSBNYXlFc2NhcGUgJiYgVGhpcyA9PSBEb05vdGhpbmcKKyAgICByZXR1cm4gUmV0ID09IFJldEVmZmVjdDo6TWFrZU5vUmV0KCkgJiYgUmVjZWl2ZXIuZ2V0S2luZCgpID09IERvTm90aGluZworICAgICAgJiYgRGVmYXVsdEFyZ0VmZmVjdC5nZXRLaW5kKCkgPT0gTWF5RXNjYXBlICYmIFRoaXMuZ2V0S2luZCgpID09IERvTm90aGluZwogICAgICAgJiYgQXJncy5pc0VtcHR5KCk7CiAgIH0KIApAQCAtNDY1LDYgKzQ0NCw4IEBACiAgIH0KIH07CiAKK2NsYXNzIFJldGFpblN1bW1hcnlUZW1wbGF0ZTsKKwogY2xhc3MgUmV0YWluU3VtbWFyeU1hbmFnZXIgewogICB0eXBlZGVmIGxsdm06OkRlbnNlTWFwPGNvbnN0IEZ1bmN0aW9uRGVjbCosIGNvbnN0IFJldGFpblN1bW1hcnkgKj4KICAgICAgICAgICBGdW5jU3VtbWFyaWVzVHk7CkBAIC00NzksNyArNDYwLDEwIEBACiAgIC8vLyBSZWNvcmRzIHdoZXRoZXIgb3Igbm90IHRoZSBhbmFseXplZCBjb2RlIHJ1bnMgaW4gQVJDIG1vZGUuCiAgIGNvbnN0IGJvb2wgQVJDRW5hYmxlZDsKIAotICAvLy8gVHJhY2sgc3VibGNhc3NlcyBvZiBPU09iamVjdAorICAvLy8gVHJhY2sgT2JqZWN0aXZlLUMgYW5kIENvcmVGb3VuZGF0aW9uIG9iamVjdHMuCisgIGNvbnN0IGJvb2wgVHJhY2tPYmpDQW5kQ0ZPYmplY3RzOworCisgIC8vLyBUcmFjayBzdWJsY2Fzc2VzIG9mIE9TT2JqZWN0LgogICBjb25zdCBib29sIFRyYWNrT1NPYmplY3RzOwogCiAgIC8vLyBGdW5jU3VtbWFyaWVzIC0gQSBtYXAgZnJvbSBGdW5jdGlvbkRlY2xzIHRvIHN1bW1hcmllcy4KQEAgLTQ5OSw5ICs0ODMsNiBAQAogICAvLy8gQUYgLSBBIGZhY3RvcnkgZm9yIEFyZ0VmZmVjdHMgb2JqZWN0cy4KICAgQXJnRWZmZWN0czo6RmFjdG9yeSBBRjsKIAotICAvLy8gU2NyYXRjaEFyZ3MgLSBBIGhvbGRpbmcgYnVmZmVyIGZvciBjb25zdHJ1Y3QgQXJnRWZmZWN0cy4KLSAgQXJnRWZmZWN0cyBTY3JhdGNoQXJnczsKLQogICAvLy8gT2JqQ0FsbG9jUmV0RSAtIERlZmF1bHQgcmV0dXJuIGVmZmVjdCBmb3IgbWV0aG9kcyByZXR1cm5pbmcgT2JqZWN0aXZlLUMKICAgLy8vICBvYmplY3RzLgogICBSZXRFZmZlY3QgT2JqQ0FsbG9jUmV0RTsKQEAgLTUxNCwxMCArNDk1LDYgQEAKICAgLy8vIGVmZmVjdHMuCiAgIGxsdm06OkZvbGRpbmdTZXQ8Q2FjaGVkU3VtbWFyeU5vZGU+IFNpbXBsZVN1bW1hcmllczsKIAotICAvLy8gZ2V0QXJnRWZmZWN0cyAtIFJldHVybnMgYSBwZXJzaXN0ZW50IEFyZ0VmZmVjdHMgb2JqZWN0IGJhc2VkIG9uIHRoZQotICAvLy8gIGRhdGEgaW4gU2NyYXRjaEFyZ3MuCi0gIEFyZ0VmZmVjdHMgZ2V0QXJnRWZmZWN0cygpOwotCiAgIC8vLyBDcmVhdGUgYW4gT1Mgb2JqZWN0IGF0ICsxLgogICBjb25zdCBSZXRhaW5TdW1tYXJ5ICpnZXRPU1N1bW1hcnlDcmVhdGVSdWxlKGNvbnN0IEZ1bmN0aW9uRGVjbCAqRkQpOwogCkBAIC01MzAsMTEgKzUwNywxMSBAQAogICAvLy8gRGVjcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgb24gT1Mgb2JqZWN0LgogICBjb25zdCBSZXRhaW5TdW1tYXJ5ICpnZXRPU1N1bW1hcnlSZWxlYXNlUnVsZShjb25zdCBGdW5jdGlvbkRlY2wgKkZEKTsKIAotCi0gIGVudW0gVW5hcnlGdW5jS2luZCB7IGNmcmV0YWluLCBjZnJlbGVhc2UsIGNmYXV0b3JlbGVhc2UsIGNmbWFrZWNvbGxlY3RhYmxlIH07CisgIC8vLyBGcmVlIHRoZSBPUyBvYmplY3QuCisgIGNvbnN0IFJldGFpblN1bW1hcnkgKmdldE9TU3VtbWFyeUZyZWVSdWxlKGNvbnN0IEZ1bmN0aW9uRGVjbCAqRkQpOwogCiAgIGNvbnN0IFJldGFpblN1bW1hcnkgKmdldFVuYXJ5U3VtbWFyeShjb25zdCBGdW5jdGlvblR5cGUqIEZULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5hcnlGdW5jS2luZCBmdW5jKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ0VmZmVjdEtpbmQgQUUpOwogCiAgIGNvbnN0IFJldGFpblN1bW1hcnkgKmdldENGU3VtbWFyeUNyZWF0ZVJ1bGUoY29uc3QgRnVuY3Rpb25EZWNsICpGRCk7CiAgIGNvbnN0IFJldGFpblN1bW1hcnkgKmdldENGU3VtbWFyeUdldFJ1bGUoY29uc3QgRnVuY3Rpb25EZWNsICpGRCk7CkBAIC01NDIsMjcgKzUxOSwzMSBAQAogCiAgIGNvbnN0IFJldGFpblN1bW1hcnkgKmdldFBlcnNpc3RlbnRTdW1tYXJ5KGNvbnN0IFJldGFpblN1bW1hcnkgJk9sZFN1bW0pOwogCi0gIGNvbnN0IFJldGFpblN1bW1hcnkgKmdldFBlcnNpc3RlbnRTdW1tYXJ5KFJldEVmZmVjdCBSZXRFZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ0VmZmVjdCBSZWNlaXZlckVmZiA9IERvTm90aGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnRWZmZWN0IERlZmF1bHRFZmYgPSBNYXlFc2NhcGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ0VmZmVjdCBUaGlzRWZmID0gRG9Ob3RoaW5nKSB7Ci0gICAgUmV0YWluU3VtbWFyeSBTdW1tKGdldEFyZ0VmZmVjdHMoKSwgUmV0RWZmLCBEZWZhdWx0RWZmLCBSZWNlaXZlckVmZiwKLSAgICAgICAgICAgICAgICAgICAgICAgVGhpc0VmZik7CisgIGNvbnN0IFJldGFpblN1bW1hcnkgKgorICBnZXRQZXJzaXN0ZW50U3VtbWFyeShSZXRFZmZlY3QgUmV0RWZmLCBBcmdFZmZlY3RzIFNjcmF0Y2hBcmdzLAorICAgICAgICAgICAgICAgICAgICAgICBBcmdFZmZlY3QgUmVjZWl2ZXJFZmYgPSBBcmdFZmZlY3QoRG9Ob3RoaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgQXJnRWZmZWN0IERlZmF1bHRFZmYgPSBBcmdFZmZlY3QoTWF5RXNjYXBlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgQXJnRWZmZWN0IFRoaXNFZmYgPSBBcmdFZmZlY3QoRG9Ob3RoaW5nKSkgeworICAgIFJldGFpblN1bW1hcnkgU3VtbShTY3JhdGNoQXJncywgUmV0RWZmLCBEZWZhdWx0RWZmLCBSZWNlaXZlckVmZiwgVGhpc0VmZik7CiAgICAgcmV0dXJuIGdldFBlcnNpc3RlbnRTdW1tYXJ5KFN1bW0pOwogICB9CiAKICAgY29uc3QgUmV0YWluU3VtbWFyeSAqZ2V0RG9Ob3RoaW5nU3VtbWFyeSgpIHsKLSAgICByZXR1cm4gZ2V0UGVyc2lzdGVudFN1bW1hcnkoUmV0RWZmZWN0OjpNYWtlTm9SZXQoKSwgRG9Ob3RoaW5nLCBEb05vdGhpbmcpOworICAgIHJldHVybiBnZXRQZXJzaXN0ZW50U3VtbWFyeShSZXRFZmZlY3Q6Ok1ha2VOb1JldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmdFZmZlY3RzKEFGLmdldEVtcHR5TWFwKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmdFZmZlY3QoRG9Ob3RoaW5nKSwgQXJnRWZmZWN0KERvTm90aGluZykpOwogICB9CiAKICAgY29uc3QgUmV0YWluU3VtbWFyeSAqZ2V0RGVmYXVsdFN1bW1hcnkoKSB7CiAgICAgcmV0dXJuIGdldFBlcnNpc3RlbnRTdW1tYXJ5KFJldEVmZmVjdDo6TWFrZU5vUmV0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvTm90aGluZywgTWF5RXNjYXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnRWZmZWN0cyhBRi5nZXRFbXB0eU1hcCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnRWZmZWN0KERvTm90aGluZyksIEFyZ0VmZmVjdChNYXlFc2NhcGUpKTsKICAgfQogCiAgIGNvbnN0IFJldGFpblN1bW1hcnkgKmdldFBlcnNpc3RlbnRTdG9wU3VtbWFyeSgpIHsKLSAgICByZXR1cm4gZ2V0UGVyc2lzdGVudFN1bW1hcnkoUmV0RWZmZWN0OjpNYWtlTm9SZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcFRyYWNraW5nLCBTdG9wVHJhY2tpbmcpOworICAgIHJldHVybiBnZXRQZXJzaXN0ZW50U3VtbWFyeSgKKyAgICAgICAgUmV0RWZmZWN0OjpNYWtlTm9SZXQoKSwgQXJnRWZmZWN0cyhBRi5nZXRFbXB0eU1hcCgpKSwKKyAgICAgICAgQXJnRWZmZWN0KFN0b3BUcmFja2luZyksIEFyZ0VmZmVjdChTdG9wVHJhY2tpbmcpKTsKICAgfQogCiAgIHZvaWQgSW5pdGlhbGl6ZUNsYXNzTWV0aG9kU3VtbWFyaWVzKCk7CkBAIC02MjAsMzAgKzYwMSw3NCBAQAogICBjb25zdCBSZXRhaW5TdW1tYXJ5ICogZ2VuZXJhdGVTdW1tYXJ5KGNvbnN0IEZ1bmN0aW9uRGVjbCAqRkQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAmQWxsb3dBbm5vdGF0aW9ucyk7CiAKKyAgLy8vIFJldHVybiBhIHN1bW1hcnkgZm9yIE9TT2JqZWN0LCBvciBudWxscHRyIGlmIG5vdCBmb3VuZC4KKyAgY29uc3QgUmV0YWluU3VtbWFyeSAqZ2V0U3VtbWFyeUZvck9TT2JqZWN0KGNvbnN0IEZ1bmN0aW9uRGVjbCAqRkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgRk5hbWUsIFF1YWxUeXBlIFJldFR5KTsKKworICAvLy8gUmV0dXJuIGEgc3VtbWFyeSBmb3IgT2JqZWN0aXZlLUMgb3IgQ0Ygb2JqZWN0LCBvciBudWxscHRyIGlmIG5vdCBmb3VuZC4KKyAgY29uc3QgUmV0YWluU3VtbWFyeSAqZ2V0U3VtbWFyeUZvck9iakNPckNGT2JqZWN0KAorICAgIGNvbnN0IEZ1bmN0aW9uRGVjbCAqRkQsCisgICAgU3RyaW5nUmVmIEZOYW1lLAorICAgIFF1YWxUeXBlIFJldFR5LAorICAgIGNvbnN0IEZ1bmN0aW9uVHlwZSAqRlQsCisgICAgYm9vbCAmQWxsb3dBbm5vdGF0aW9ucyk7CisKKyAgLy8vIEFwcGx5IHRoZSBhbm5vdGF0aW9uIG9mIHtAY29kZSBwZH0gaW4gZnVuY3Rpb24ge0Bjb2RlIEZEfQorICAvLy8gdG8gdGhlIHJlc3VsdGluZyBzdW1tYXJ5IHN0b3JlZCBpbiBvdXQtcGFyYW1ldGVyIHtAY29kZSBUZW1wbGF0ZX0uCisgIC8vLyBccmV0dXJuIHdoZXRoZXIgYW4gYW5ub3RhdGlvbiB3YXMgYXBwbGllZC4KKyAgYm9vbCBhcHBseVBhcmFtQW5ub3RhdGlvbkVmZmVjdChjb25zdCBQYXJtVmFyRGVjbCAqcGQsIHVuc2lnbmVkIHBhcm1faWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hbWVkRGVjbCAqRkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0YWluU3VtbWFyeVRlbXBsYXRlICZUZW1wbGF0ZSk7CisKIHB1YmxpYzoKLSAgUmV0YWluU3VtbWFyeU1hbmFnZXIoQVNUQ29udGV4dCAmY3R4LAotICAgICAgICAgICAgICAgICAgICAgICBib29sIHVzZXNBUkMsCi0gICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdHJhY2tPU09iamVjdCkKLSAgIDogQ3R4KGN0eCksCi0gICAgIEFSQ0VuYWJsZWQodXNlc0FSQyksCi0gICAgIFRyYWNrT1NPYmplY3RzKHRyYWNrT1NPYmplY3QpLAotICAgICBBRihCUEFsbG9jKSwgU2NyYXRjaEFyZ3MoQUYuZ2V0RW1wdHlNYXAoKSksCi0gICAgIE9iakNBbGxvY1JldEUodXNlc0FSQyA/IFJldEVmZmVjdDo6TWFrZU5vdE93bmVkKFJldEVmZmVjdDo6T2JqQykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFJldEVmZmVjdDo6TWFrZU93bmVkKFJldEVmZmVjdDo6T2JqQykpLAotICAgICBPYmpDSW5pdFJldEUodXNlc0FSQyA/IFJldEVmZmVjdDo6TWFrZU5vdE93bmVkKFJldEVmZmVjdDo6T2JqQykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFJldEVmZmVjdDo6TWFrZU93bmVkV2hlblRyYWNrZWRSZWNlaXZlcigpKSB7CisgIFJldGFpblN1bW1hcnlNYW5hZ2VyKEFTVENvbnRleHQgJmN0eCwgYm9vbCB0cmFja09iakNBbmRDRk9iamVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdHJhY2tPU09iamVjdHMpCisgICAgICA6IEN0eChjdHgpLCBBUkNFbmFibGVkKChib29sKUN0eC5nZXRMYW5nT3B0cygpLk9iakNBdXRvUmVmQ291bnQpLAorICAgICAgICBUcmFja09iakNBbmRDRk9iamVjdHModHJhY2tPYmpDQW5kQ0ZPYmplY3RzKSwKKyAgICAgICAgVHJhY2tPU09iamVjdHModHJhY2tPU09iamVjdHMpLCBBRihCUEFsbG9jKSwKKyAgICAgICAgT2JqQ0FsbG9jUmV0RShBUkNFbmFibGVkID8gUmV0RWZmZWN0OjpNYWtlTm90T3duZWQoT2JqS2luZDo6T2JqQykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUmV0RWZmZWN0OjpNYWtlT3duZWQoT2JqS2luZDo6T2JqQykpLAorICAgICAgICBPYmpDSW5pdFJldEUoQVJDRW5hYmxlZCA/IFJldEVmZmVjdDo6TWFrZU5vdE93bmVkKE9iaktpbmQ6Ok9iakMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUmV0RWZmZWN0OjpNYWtlT3duZWRXaGVuVHJhY2tlZFJlY2VpdmVyKCkpIHsKICAgICBJbml0aWFsaXplQ2xhc3NNZXRob2RTdW1tYXJpZXMoKTsKICAgICBJbml0aWFsaXplTWV0aG9kU3VtbWFyaWVzKCk7CiAgIH0KIAotICBib29sIGNhbkV2YWwoY29uc3QgQ2FsbEV4cHIgKkNFLAotICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25EZWNsICpGRCwKLSAgICAgICAgICAgICAgIGJvb2wgJmhhc1RydXN0ZWRJbXBsZW1lbnRhdGlvbkFubm90YXRpb24pOworICBlbnVtIGNsYXNzIEJlaGF2aW9yU3VtbWFyeSB7CisgICAgLy8gRnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuLgorICAgIE5vT3AsCiAKLSAgYm9vbCBpc1RydXN0ZWRSZWZlcmVuY2VDb3VudEltcGxlbWVudGF0aW9uKGNvbnN0IEZ1bmN0aW9uRGVjbCAqRkQpOworICAgIC8vIEZ1bmN0aW9uIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50LgorICAgIElkZW50aXR5LAogCi0gIGNvbnN0IFJldGFpblN1bW1hcnkgKmdldFN1bW1hcnkoY29uc3QgQ2FsbEV2ZW50ICZDYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIFJlY2VpdmVyVHlwZT1RdWFsVHlwZSgpKTsKKyAgICAvLyBGdW5jdGlvbiByZXR1cm5zICJ0aGlzIiBhcmd1bWVudC4KKyAgICBJZGVudGl0eVRoaXMsCisKKyAgICAvLyBGdW5jdGlvbiBlaXRoZXIgcmV0dXJucyB6ZXJvLCBvciB0aGUgaW5wdXQgcGFyYW1ldGVyLgorICAgIElkZW50aXR5T3JaZXJvCisgIH07CisKKyAgT3B0aW9uYWw8QmVoYXZpb3JTdW1tYXJ5PiBjYW5FdmFsKGNvbnN0IENhbGxFeHByICpDRSwgY29uc3QgRnVuY3Rpb25EZWNsICpGRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgJmhhc1RydXN0ZWRJbXBsZW1lbnRhdGlvbkFubm90YXRpb24pOworCisgIC8vLyBccmV0dXJuIFdoZXRoZXIgdGhlIHR5cGUgY29ycmVzcG9uZHMgdG8gYSBrbm93biBzbWFydCBwb2ludGVyCisgIC8vLyBpbXBsZW1lbnRhdGlvbiAodGhhdCBpcywgZXZlcnl0aGluZyBhYm91dCBpdCBpcyBpbmxpbmVhYmxlKS4KKyAgc3RhdGljIGJvb2wgaXNLbm93blNtYXJ0UG9pbnRlcihRdWFsVHlwZSBRVCk7CisKKyAgYm9vbCBpc1RydXN0ZWRSZWZlcmVuY2VDb3VudEltcGxlbWVudGF0aW9uKGNvbnN0IERlY2wgKkZEKTsKKworICBjb25zdCBSZXRhaW5TdW1tYXJ5ICpnZXRTdW1tYXJ5KEFueUNhbGwgQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIEhhc05vblplcm9DYWxsYmFja0FyZz1mYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIElzUmVjZWl2ZXJVbmNvbnN1bWVkU2VsZj1mYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBSZWNlaXZlclR5cGU9e30pOworCisgIFJldEVmZmVjdCBnZXRPYmpBbGxvY1JldEVmZmVjdCgpIGNvbnN0IHsgcmV0dXJuIE9iakNBbGxvY1JldEU7IH0KKworcHJpdmF0ZToKKworICAvLy8gZ2V0TWV0aG9kU3VtbWFyeSAtIFRoaXMgdmVyc2lvbiBvZiBnZXRNZXRob2RTdW1tYXJ5IGlzIHVzZWQgdG8gcXVlcnkKKyAgLy8vICB0aGUgc3VtbWFyeSBmb3IgdGhlIGN1cnJlbnQgbWV0aG9kIGJlaW5nIGFuYWx5emVkLgorICBjb25zdCBSZXRhaW5TdW1tYXJ5ICpnZXRNZXRob2RTdW1tYXJ5KGNvbnN0IE9iakNNZXRob2REZWNsICpNRCk7CiAKICAgY29uc3QgUmV0YWluU3VtbWFyeSAqZ2V0RnVuY3Rpb25TdW1tYXJ5KGNvbnN0IEZ1bmN0aW9uRGVjbCAqRkQpOwogCkBAIC02NTMsMzIgKzY3OCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqQ01ldGhvZFN1bW1hcmllc1R5ICZDYWNoZWRTdW1tYXJpZXMpOwogCiAgIGNvbnN0IFJldGFpblN1bW1hcnkgKgotICBnZXRJbnN0YW5jZU1ldGhvZFN1bW1hcnkoY29uc3QgT2JqQ01ldGhvZENhbGwgJk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBSZWNlaXZlclR5cGUpOworICBnZXRJbnN0YW5jZU1ldGhvZFN1bW1hcnkoY29uc3QgT2JqQ01lc3NhZ2VFeHByICpNRSwgUXVhbFR5cGUgUmVjZWl2ZXJUeXBlKTsKIAotICBjb25zdCBSZXRhaW5TdW1tYXJ5ICpnZXRDbGFzc01ldGhvZFN1bW1hcnkoY29uc3QgT2JqQ01ldGhvZENhbGwgJk0pIHsKLSAgICBhc3NlcnQoIU0uaXNJbnN0YW5jZU1lc3NhZ2UoKSk7Ci0gICAgY29uc3QgT2JqQ0ludGVyZmFjZURlY2wgKkNsYXNzID0gTS5nZXRSZWNlaXZlckludGVyZmFjZSgpOwotCi0gICAgcmV0dXJuIGdldE1ldGhvZFN1bW1hcnkoTS5nZXRTZWxlY3RvcigpLCBDbGFzcywgTS5nZXREZWNsKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTS5nZXRSZXN1bHRUeXBlKCksIE9iakNDbGFzc01ldGhvZFN1bW1hcmllcyk7Ci0gIH0KLQotICAvLy8gZ2V0TWV0aG9kU3VtbWFyeSAtIFRoaXMgdmVyc2lvbiBvZiBnZXRNZXRob2RTdW1tYXJ5IGlzIHVzZWQgdG8gcXVlcnkKLSAgLy8vICB0aGUgc3VtbWFyeSBmb3IgdGhlIGN1cnJlbnQgbWV0aG9kIGJlaW5nIGFuYWx5emVkLgotICBjb25zdCBSZXRhaW5TdW1tYXJ5ICpnZXRNZXRob2RTdW1tYXJ5KGNvbnN0IE9iakNNZXRob2REZWNsICpNRCkgewotICAgIGNvbnN0IE9iakNJbnRlcmZhY2VEZWNsICpJRCA9IE1ELT5nZXRDbGFzc0ludGVyZmFjZSgpOwotICAgIFNlbGVjdG9yIFMgPSBNRC0+Z2V0U2VsZWN0b3IoKTsKLSAgICBRdWFsVHlwZSBSZXN1bHRUeSA9IE1ELT5nZXRSZXR1cm5UeXBlKCk7Ci0KLSAgICBPYmpDTWV0aG9kU3VtbWFyaWVzVHkgKkNhY2hlZFN1bW1hcmllczsKLSAgICBpZiAoTUQtPmlzSW5zdGFuY2VNZXRob2QoKSkKLSAgICAgIENhY2hlZFN1bW1hcmllcyA9ICZPYmpDTWV0aG9kU3VtbWFyaWVzOwotICAgIGVsc2UKLSAgICAgIENhY2hlZFN1bW1hcmllcyA9ICZPYmpDQ2xhc3NNZXRob2RTdW1tYXJpZXM7Ci0KLSAgICByZXR1cm4gZ2V0TWV0aG9kU3VtbWFyeShTLCBJRCwgTUQsIFJlc3VsdFR5LCAqQ2FjaGVkU3VtbWFyaWVzKTsKLSAgfQorICBjb25zdCBSZXRhaW5TdW1tYXJ5ICpnZXRDbGFzc01ldGhvZFN1bW1hcnkoY29uc3QgT2JqQ01lc3NhZ2VFeHByICpNRSk7CiAKICAgY29uc3QgUmV0YWluU3VtbWFyeSAqZ2V0U3RhbmRhcmRNZXRob2RTdW1tYXJ5KGNvbnN0IE9iakNNZXRob2REZWNsICpNRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdG9yIFMsIFF1YWxUeXBlIFJldFR5KTsKQEAgLTY5MywxNiArNjk1LDQzIEBACiAgIHZvaWQgdXBkYXRlU3VtbWFyeUZyb21Bbm5vdGF0aW9ucyhjb25zdCBSZXRhaW5TdW1tYXJ5IComU3VtbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uRGVjbCAqRkQpOwogCi0gIHZvaWQgdXBkYXRlU3VtbWFyeUZvckNhbGwoY29uc3QgUmV0YWluU3VtbWFyeSAqJlN1bW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FsbEV2ZW50ICZDYWxsKTsKKyAgY29uc3QgUmV0YWluU3VtbWFyeSAqdXBkYXRlU3VtbWFyeUZvck5vblplcm9DYWxsYmFja0FyZyhjb25zdCBSZXRhaW5TdW1tYXJ5ICpTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFueUNhbGwgJkMpOwogCi0gIGJvb2wgaXNBUkNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gQVJDRW5hYmxlZDsgfQorICAvLy8gU3BlY2lhbCBjYXNlICdbc3VwZXIgaW5pdF07JyBhbmQgJ1tzZWxmIGluaXRdOycKKyAgLy8vCisgIC8vLyBFdmVuIHRob3VnaCBjYWxsaW5nICdbc3VwZXIgaW5pdF0nIHdpdGhvdXQgYXNzaWduaW5nIHRoZSByZXN1bHQgdG8gc2VsZgorICAvLy8gYW5kIGNoZWNraW5nIGlmIHRoZSBwYXJlbnQgcmV0dXJucyAnbmlsJyBpcyBhIGJhZCBwYXR0ZXJuLCBpdCBpcyBjb21tb24uCisgIC8vLyBBZGRpdGlvbmFsbHksIG91ciBTZWxmIEluaXQgY2hlY2tlciBhbHJlYWR5IHdhcm5zIGFib3V0IGl0LiBUbyBhdm9pZAorICAvLy8gb3ZlcndoZWxtaW5nIHRoZSB1c2VyIHdpdGggbWVzc2FnZXMgZnJvbSBib3RoIGNoZWNrZXJzLCB3ZSBtb2RlbCB0aGUgY2FzZQorICAvLy8gb2YgJ1tzdXBlciBpbml0XScgaW4gY2FzZXMgd2hlbiBpdCBpcyBub3QgY29uc3VtZWQgYnkgYW5vdGhlciBleHByZXNzaW9uCisgIC8vLyBhcyBpZiB0aGUgY2FsbCBwcmVzZXJ2ZXMgdGhlIHZhbHVlIG9mICdzZWxmJzsgZXNzZW50aWFsbHksIGFzc3VtaW5nIGl0IGNhbgorICAvLy8gbmV2ZXIgZmFpbCBhbmQgcmV0dXJuICduaWwnLgorICAvLy8gTm90ZSwgd2UgZG9uJ3Qgd2FudCB0byBqdXN0IHN0b3AgdHJhY2tpbmcgdGhlIHZhbHVlIHNpbmNlIHdlIHdhbnQgdGhlCisgIC8vLyBSZXRhaW5Db3VudCBjaGVja2VyIHRvIHJlcG9ydCBsZWFrcyBhbmQgdXNlLWFmdGVyLWZyZWUgaWYgU2VsZkluaXQgY2hlY2tlcgorICAvLy8gaXMgdHVybmVkIG9mZi4KKyAgdm9pZCB1cGRhdGVTdW1tYXJ5Rm9yUmVjZWl2ZXJVbmNvbnN1bWVkU2VsZihjb25zdCBSZXRhaW5TdW1tYXJ5IComUyk7CiAKLSAgUmV0RWZmZWN0IGdldE9iakFsbG9jUmV0RWZmZWN0KCkgY29uc3QgeyByZXR1cm4gT2JqQ0FsbG9jUmV0RTsgfQorICAvLy8gU2V0IGFyZ3VtZW50IHR5cGVzIGZvciBhcmd1bWVudHMgd2hpY2ggYXJlIG5vdCBkb2luZyBhbnl0aGluZy4KKyAgdm9pZCB1cGRhdGVTdW1tYXJ5Rm9yQXJndW1lbnRUeXBlcyhjb25zdCBBbnlDYWxsICZDLCBjb25zdCBSZXRhaW5TdW1tYXJ5IComUlMpOworCisgIC8vLyBEZXRlcm1pbmUgd2hldGhlciBhIGRlY2xhcmF0aW9uIHtAY29kZSBEfSBvZiBjb3JyZXNwb25kZW50IHR5cGUgKHJldHVybgorICAvLy8gdHlwZSBmb3IgZnVuY3Rpb25zL21ldGhvZHMpIHtAY29kZSBRVH0gaGFzIGFueSBvZiB0aGUgZ2l2ZW4gYXR0cmlidXRlcywKKyAgLy8vIHByb3ZpZGVkIHRoZXkgcGFzcyBuZWNlc3NhcnkgdmFsaWRhdGlvbiBjaGVja3MgQU5EIHRyYWNraW5nIHRoZSBnaXZlbgorICAvLy8gYXR0cmlidXRlIGlzIGVuYWJsZWQuCisgIC8vLyBSZXR1cm5zIHRoZSBvYmplY3Qga2luZCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcmVzZW50IGF0dHJpYnV0ZSwgb3IgTm9uZSwKKyAgLy8vIGlmIG5vbmUgb2YgdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGVzIGFyZSBwcmVzZW50LgorICAvLy8gQ3Jhc2hlcyBpZiBwYXNzZWQgYW4gYXR0cmlidXRlIHdoaWNoIGlzIG5vdCBleHBsaWNpdGx5IGhhbmRsZWQuCisgIHRlbXBsYXRlIDxjbGFzcyBUPgorICBPcHRpb25hbDxPYmpLaW5kPiBoYXNBbnlFbmFibGVkQXR0ck9mKGNvbnN0IERlY2wgKkQsIFF1YWxUeXBlIFFUKTsKKworICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcy4uLiBPdGhlcnM+CisgIE9wdGlvbmFsPE9iaktpbmQ+IGhhc0FueUVuYWJsZWRBdHRyT2YoY29uc3QgRGVjbCAqRCwgUXVhbFR5cGUgUVQpOwogCiAgIGZyaWVuZCBjbGFzcyBSZXRhaW5TdW1tYXJ5VGVtcGxhdGU7CiB9OwogCisKIC8vIFVzZWQgdG8gYXZvaWQgYWxsb2NhdGluZyBsb25nLXRlcm0gKEJQQWxsb2MnZCkgbWVtb3J5IGZvciBkZWZhdWx0IHJldGFpbgogLy8gc3VtbWFyaWVzLiBJZiBhIGZ1bmN0aW9uIG9yIG1ldGhvZCBsb29rcyBsaWtlIGl0IGhhcyBhIGRlZmF1bHQgc3VtbWFyeSwgYnV0CiAvLyBpdCBoYXMgYW5ub3RhdGlvbnMsIHRoZSBhbm5vdGF0aW9ucyBhcmUgYWRkZWQgdG8gdGhlIHN0YWNrLWJhc2VkIHRlbXBsYXRlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9TZWxlY3RvckV4dHJhcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQW5hbHlzaXMvU2VsZWN0b3JFeHRyYXMuaAppbmRleCA3NjcwNjNlLi5kMjZlOTE1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9TZWxlY3RvckV4dHJhcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL1NlbGVjdG9yRXh0cmFzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PSBTZWxlY3RvckV4dHJhcy5oIC0gSGVscGVycyBmb3IgY2hlY2tlcnMgdXNpbmcgc2VsZWN0b3JzIC0tLS0tKi0gQysrIC0qLT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9BbmFseXNpcy9TdXBwb3J0L0J1bXBWZWN0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL1N1cHBvcnQvQnVtcFZlY3Rvci5oCmluZGV4IDAwYTc0MTcuLjc0MDkyZGEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL1N1cHBvcnQvQnVtcFZlY3Rvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0FuYWx5c2lzL1N1cHBvcnQvQnVtcFZlY3Rvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEJ1bXBWZWN0b3IuaCAtIFZlY3Rvci1saWtlIEFEVCB0aGF0IHVzZXMgYnVtcCBhbGxvY2F0aW9uIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9BQkkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0FCSS5oCmluZGV4IGRjMGU0OWMuLjI0MDFmZmEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0FCSS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0FCSS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tLSBBQkkuaCAtIEFCSSByZWxhdGVkIGRlY2xhcmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQWRkcmVzc1NwYWNlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQWRkcmVzc1NwYWNlcy5oCmluZGV4IDIxN2ZiZDcuLjJjYzY3NDcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0FkZHJlc3NTcGFjZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9BZGRyZXNzU3BhY2VzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQWRkcmVzc1NwYWNlcy5oIC0gTGFuZ3VhZ2Utc3BlY2lmaWMgYWRkcmVzcyBzcGFjZXMgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0FsaWduZWRBbGxvY2F0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9BbGlnbmVkQWxsb2NhdGlvbi5oCmluZGV4IDk3NTFmNDEuLjg4NDEwYzUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0FsaWduZWRBbGxvY2F0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQWxpZ25lZEFsbG9jYXRpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEFsaWduZWRBbGxvY2F0aW9uLmggLSBBbGlnbmVkIEFsbG9jYXRpb24gLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KQEAgLTI3LDggKzI2LDggQEAKICAgZGVmYXVsdDoKICAgICBicmVhazsKICAgY2FzZSBsbHZtOjpUcmlwbGU6OkRhcndpbjoKLSAgY2FzZSBsbHZtOjpUcmlwbGU6Ok1hY09TWDogLy8gRWFybGllc3Qgc3VwcG9ydGluZyB2ZXJzaW9uIGlzIDEwLjEzLgotICAgIHJldHVybiBsbHZtOjpWZXJzaW9uVHVwbGUoMTBVLCAxM1UpOworICBjYXNlIGxsdm06OlRyaXBsZTo6TWFjT1NYOiAvLyBFYXJsaWVzdCBzdXBwb3J0aW5nIHZlcnNpb24gaXMgMTAuMTQuCisgICAgcmV0dXJuIGxsdm06OlZlcnNpb25UdXBsZSgxMFUsIDE0VSk7CiAgIGNhc2UgbGx2bTo6VHJpcGxlOjpJT1M6CiAgIGNhc2UgbGx2bTo6VHJpcGxlOjpUdk9TOiAvLyBFYXJsaWVzdCBzdXBwb3J0aW5nIHZlcnNpb24gaXMgMTEuMC4wLgogICAgIHJldHVybiBsbHZtOjpWZXJzaW9uVHVwbGUoMTFVKTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0FsbERpYWdub3N0aWNzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9BbGxEaWFnbm9zdGljcy5oCmluZGV4IGFmZWMyZDcuLmNjNmFhNjMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0FsbERpYWdub3N0aWNzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQWxsRGlhZ25vc3RpY3MuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEFsbERpYWdub3N0aWNzLmggLSBBZ2dyZWdhdGUgRGlhZ25vc3RpYyBoZWFkZXJzIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KQEAgLTE1LDE3ICsxNCwxNyBAQAogI2lmbmRlZiBMTFZNX0NMQU5HX0JBU0lDX0FMTERJQUdOT1NUSUNTX0gKICNkZWZpbmUgTExWTV9DTEFOR19CQVNJQ19BTExESUFHTk9TVElDU19ICiAKLSNpbmNsdWRlICJjbGFuZy9BU1QvQVNURGlhZ25vc3RpYy5oIgotI2luY2x1ZGUgImNsYW5nL0FTVC9Db21tZW50RGlhZ25vc3RpYy5oIgotI2luY2x1ZGUgImNsYW5nL0FuYWx5c2lzL0FuYWx5c2lzRGlhZ25vc3RpYy5oIgotI2luY2x1ZGUgImNsYW5nL0Nyb3NzVFUvQ3Jvc3NUVURpYWdub3N0aWMuaCIKLSNpbmNsdWRlICJjbGFuZy9Ecml2ZXIvRHJpdmVyRGlhZ25vc3RpYy5oIgotI2luY2x1ZGUgImNsYW5nL0Zyb250ZW5kL0Zyb250ZW5kRGlhZ25vc3RpYy5oIgotI2luY2x1ZGUgImNsYW5nL0xleC9MZXhEaWFnbm9zdGljLmgiCi0jaW5jbHVkZSAiY2xhbmcvUGFyc2UvUGFyc2VEaWFnbm9zdGljLmgiCi0jaW5jbHVkZSAiY2xhbmcvU2VtYS9TZW1hRGlhZ25vc3RpYy5oIgotI2luY2x1ZGUgImNsYW5nL1NlcmlhbGl6YXRpb24vU2VyaWFsaXphdGlvbkRpYWdub3N0aWMuaCIKLSNpbmNsdWRlICJjbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nRGlhZ25vc3RpYy5oIgorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNBU1QuaCIKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljQW5hbHlzaXMuaCIKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljQ29tbWVudC5oIgorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNDcm9zc1RVLmgiCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0RyaXZlci5oIgorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNGcm9udGVuZC5oIgorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNMZXguaCIKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljUGFyc2UuaCIKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljU2VtYS5oIgorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNTZXJpYWxpemF0aW9uLmgiCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpY1JlZmFjdG9yaW5nLmgiCiAKIG5hbWVzcGFjZSBjbGFuZyB7CiB0ZW1wbGF0ZSA8c2l6ZV90IFNpemVPZlN0ciwgdHlwZW5hbWUgRmllbGRUeXBlPgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQXR0ckhhc0F0dHJpYnV0ZUltcGwuaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQXR0ckhhc0F0dHJpYnV0ZUltcGwuaW5jCmluZGV4IDQ1YmQ1NGMuLmJkOGJkY2MgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0F0dHJIYXNBdHRyaWJ1dGVJbXBsLmluYworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9BdHRySGFzQXR0cmlidXRlSW1wbC5pbmMKQEAgLTEwLDYgKzEwLDcgQEAKIHN3aXRjaCAoU3ludGF4KSB7CiBjYXNlIEF0dHJTeW50YXg6OkdOVToKICAgcmV0dXJuIGxsdm06OlN0cmluZ1N3aXRjaDxpbnQ+KE5hbWUpCisgICAgLkNhc2UoImFhcmNoNjRfdmVjdG9yX3BjcyIsIDEpCiAgICAgLkNhc2UoImFtZGdwdV9mbGF0X3dvcmtfZ3JvdXBfc2l6ZSIsIDEpCiAgICAgLkNhc2UoImFtZGdwdV9udW1fc2dwciIsIDEpCiAgICAgLkNhc2UoImFtZGdwdV9udW1fdmdwciIsIDEpCkBAIC04NCw2ICs4NSw3IEBACiAgICAgLkNhc2UoImxhdW5jaF9ib3VuZHMiLCAxKQogICAgIC5DYXNlKCJzaGFyZWQiLCAxKQogICAgIC5DYXNlKCJjYWxsYWJsZV93aGVuIiwgMSkKKyAgICAuQ2FzZSgiY2FsbGJhY2siLCAxKQogICAgIC5DYXNlKCJjYXBhYmlsaXR5IiwgMSkKICAgICAuQ2FzZSgic2hhcmVkX2NhcGFiaWxpdHkiLCAxKQogICAgIC5DYXNlKCJjYXBhYmlsaXR5IiwgMSkKQEAgLTExOCw2ICsxMjAsNyBAQAogICAgIC5DYXNlKCJmbGF0dGVuIiwgMSkKICAgICAuQ2FzZSgiZm9ybWF0IiwgMSkKICAgICAuQ2FzZSgiZm9ybWF0X2FyZyIsIDEpCisgICAgLkNhc2UoImZvcnRpZnlfc3RkbGliIiwgMSkKICAgICAuQ2FzZSgiZ251X2lubGluZSIsIDEpCiAgICAgLkNhc2UoImd1YXJkZWRfYnkiLCAxKQogICAgIC5DYXNlKCJndWFyZGVkX3ZhciIsIDEpCkBAIC0xNjIsNiArMTY1LDcgQEAKICAgICAuQ2FzZSgibmVvbl92ZWN0b3JfdHlwZSIsIDEpCiAgICAgLkNhc2UoIm5vY29tbW9uIiwgMSkKICAgICAuQ2FzZSgibm9kZWJ1ZyIsIDEpCisgICAgLkNhc2UoIm5vZGVyZWYiLCAxKQogICAgIC5DYXNlKCJub19kZXN0cm95IiwgMSkKICAgICAuQ2FzZSgibm9kdXBsaWNhdGUiLCAxKQogICAgIC5DYXNlKCJub2VzY2FwZSIsIDEpCkBAIC0xODcsNiArMTkxLDcgQEAKICAgICAuQ2FzZSgibm9fc2FuaXRpemVfYWRkcmVzcyIsIDEpCiAgICAgLkNhc2UoIm5vX3Nhbml0aXplX3RocmVhZCIsIDEpCiAgICAgLkNhc2UoIm5vX3Nhbml0aXplX21lbW9yeSIsIDEpCisgICAgLkNhc2UoIm5vX3NwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nIiwgMSkKICAgICAuQ2FzZSgibm9fc3BsaXRfc3RhY2siLCAxKQogICAgIC5DYXNlKCJub19zdGFja19wcm90ZWN0b3IiLCAxKQogICAgIC5DYXNlKCJub190aHJlYWRfc2FmZXR5X2FuYWx5c2lzIiwgMSkKQEAgLTE5NCw2ICsxOTksMTIgQEAKICAgICAuQ2FzZSgibm9ubnVsbCIsIDEpCiAgICAgLkNhc2UoIm5vdF90YWlsX2NhbGxlZCIsIDEpCiAgICAgLkNhc2UoIm52X3dlYWsiLCAxKQorICAgIC5DYXNlKCJvc19jb25zdW1lZCIsIDEpCisgICAgLkNhc2UoIm9zX2NvbnN1bWVzX3RoaXMiLCAxKQorICAgIC5DYXNlKCJvc19yZXR1cm5zX25vdF9yZXRhaW5lZCIsIDEpCisgICAgLkNhc2UoIm9zX3JldHVybnNfcmV0YWluZWQiLCAxKQorICAgIC5DYXNlKCJvc19yZXR1cm5zX3JldGFpbmVkX29uX25vbl96ZXJvIiwgMSkKKyAgICAuQ2FzZSgib3NfcmV0dXJuc19yZXRhaW5lZF9vbl96ZXJvIiwgMSkKICAgICAuQ2FzZSgib2JqY19ib3hhYmxlIiwgMSkKICAgICAuQ2FzZSgib2JqY19icmlkZ2UiLCAxKQogICAgIC5DYXNlKCJvYmpjX2JyaWRnZV9tdXRhYmxlIiwgMSkKQEAgLTIwMSwxMCArMjEyLDEyIEBACiAgICAgLkNhc2UoIm9iamNfZGVzaWduYXRlZF9pbml0aWFsaXplciIsIDEpCiAgICAgLkNhc2UoIm9iamNfZXhjZXB0aW9uIiwgMSkKICAgICAuQ2FzZSgib2JqY19wcm90b2NvbF9yZXF1aXJlc19leHBsaWNpdF9pbXBsZW1lbnRhdGlvbiIsIDEpCisgICAgLkNhc2UoIm9iamNfZXh0ZXJuYWxseV9yZXRhaW5lZCIsIDEpCiAgICAgLkNhc2UoIm9iamNfZ2MiLCAxKQogICAgIC5DYXNlKCJvYmpjX2luZGVwZW5kZW50X2NsYXNzIiwgMSkKICAgICAuQ2FzZSgib2JqY19tZXRob2RfZmFtaWx5IiwgMSkKICAgICAuQ2FzZSgiTlNPYmplY3QiLCAxKQorICAgIC5DYXNlKCJvYmpjX25vbmxhenlfY2xhc3MiLCAxKQogICAgIC5DYXNlKCJvYmpjX293bmVyc2hpcCIsIDEpCiAgICAgLkNhc2UoIm9iamNfcHJlY2lzZV9saWZldGltZSIsIDEpCiAgICAgLkNhc2UoIm9iamNfcmVxdWlyZXNfcHJvcGVydHlfZGVmaW5pdGlvbnMiLCAxKQpAQCAtMjg3LDYgKzMwMCw3IEBACiAgICAgLkNhc2UoInNlbnRpbmVsIiwgMSkKICAgICAuQ2FzZSgic2V0X3R5cGVzdGF0ZSIsIDEpCiAgICAgLkNhc2UoInNoYXJlZF90cnlsb2NrX2Z1bmN0aW9uIiwgMSkKKyAgICAuQ2FzZSgic3BlY3VsYXRpdmVfbG9hZF9oYXJkZW5pbmciLCAxKQogICAgIC5DYXNlKCJzdGRjYWxsIiwgMSkKICAgICAuQ2FzZSgic3dpZnRjYWxsIiwgMSkKICAgICAuQ2FzZSgic3dpZnRfY29udGV4dCIsIDEpCkBAIC0zMDYsNiArMzIwLDcgQEAKICAgICAuQ2FzZSgidHlwZV90YWdfZm9yX2RhdGF0eXBlIiwgMSkKICAgICAuQ2FzZSgidHlwZV92aXNpYmlsaXR5IiwgMSkKICAgICAuQ2FzZSgidW5hdmFpbGFibGUiLCAxKQorICAgIC5DYXNlKCJ1bmluaXRpYWxpemVkIiwgMSkKICAgICAuQ2FzZSgidW51c2VkIiwgMSkKICAgICAuQ2FzZSgidXNlZCIsIDEpCiAgICAgLkNhc2UoInZlY3JldHVybiIsIDEpCkBAIC0zMTgsNiArMzMzLDggQEAKICAgICAuQ2FzZSgid2VhayIsIDEpCiAgICAgLkNhc2UoIndlYWtfaW1wb3J0IiwgMSkKICAgICAuQ2FzZSgid2Vha3JlZiIsIDEpCisgICAgLkNhc2UoImltcG9ydF9tb2R1bGUiLCB0cnVlICYmIChULmdldEFyY2goKSA9PSBsbHZtOjpUcmlwbGU6Ondhc20zMiB8fCBULmdldEFyY2goKSA9PSBsbHZtOjpUcmlwbGU6Ondhc202NCkgPyAxIDogMCkKKyAgICAuQ2FzZSgiaW1wb3J0X25hbWUiLCB0cnVlICYmIChULmdldEFyY2goKSA9PSBsbHZtOjpUcmlwbGU6Ondhc20zMiB8fCBULmdldEFyY2goKSA9PSBsbHZtOjpUcmlwbGU6Ondhc202NCkgPyAxIDogMCkKICAgICAuQ2FzZSgid29ya19ncm91cF9zaXplX2hpbnQiLCAxKQogICAgIC5DYXNlKCJmb3JjZV9hbGlnbl9hcmdfcG9pbnRlciIsIHRydWUgJiYgKFQuZ2V0QXJjaCgpID09IGxsdm06OlRyaXBsZTo6eDg2IHx8IFQuZ2V0QXJjaCgpID09IGxsdm06OlRyaXBsZTo6eDg2XzY0KSA/IDEgOiAwKQogICAgIC5DYXNlKCJ4cmF5X2Fsd2F5c19pbnN0cnVtZW50IiwgMSkKQEAgLTMyOSw2ICszNDYsOCBAQAogY2FzZSBBdHRyU3ludGF4OjpEZWNsc3BlYzoKICAgcmV0dXJuIGxsdm06OlN0cmluZ1N3aXRjaDxpbnQ+KE5hbWUpCiAgICAgLkNhc2UoImFsaWduIiwgMSkKKyAgICAuQ2FzZSgiY3B1X2Rpc3BhdGNoIiwgMSkKKyAgICAuQ2FzZSgiY3B1X3NwZWNpZmljIiwgMSkKICAgICAuQ2FzZSgiX19jb25zdGFudF9fIiwgMSkKICAgICAuQ2FzZSgiX19jdWRhcnRfYnVpbHRpbl9fIiwgMSkKICAgICAuQ2FzZSgiX19kZXZpY2VfXyIsIDEpCkBAIC0zOTQsNyArNDEzLDcgQEAKICAgICAuQ2FzZSgiZGVjbGFyZSB0YXJnZXQiLCAxKQogICAgIC5EZWZhdWx0KDApOwogY2FzZSBBdHRyU3ludGF4OjpDWFg6IHsKLWlmICghU2NvcGUgfHwgU2NvcGUtPmdldE5hbWUoKSA9PSAiIikgeworaWYgKFNjb3BlTmFtZSA9PSAiIikgewogICByZXR1cm4gbGx2bTo6U3RyaW5nU3dpdGNoPGludD4oTmFtZSkKICAgICAuQ2FzZSgibm9yZXR1cm4iLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDIwMDgwOSA6IDApCiAgICAgLkNhc2UoImNhcnJpZXNfZGVwZW5kZW5jeSIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMjAwODA5IDogMCkKQEAgLTQwOCw4ICs0MjcsOSBAQAogICAgIC5DYXNlKCJ3YXJuX3VudXNlZF9yZXN1bHQiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDIwMTYwMyA6IDApCiAgICAgLkNhc2UoIndhcm5fdW51c2VkX3Jlc3VsdCIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMjAxNjAzIDogMCkKICAgICAuRGVmYXVsdCgwKTsKLX0gZWxzZSBpZiAoU2NvcGUtPmdldE5hbWUoKSA9PSAiY2xhbmciKSB7Cit9IGVsc2UgaWYgKFNjb3BlTmFtZSA9PSAiY2xhbmciKSB7CiAgIHJldHVybiBsbHZtOjpTdHJpbmdTd2l0Y2g8aW50PihOYW1lKQorICAgIC5DYXNlKCJhYXJjaDY0X3ZlY3Rvcl9wY3MiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJhbWRncHVfZmxhdF93b3JrX2dyb3VwX3NpemUiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJhbWRncHVfbnVtX3NncHIiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJhbWRncHVfbnVtX3ZncHIiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQpAQCAtNDQwLDYgKzQ2MCw3IEBACiAgICAgLkNhc2UoImNwdV9kaXNwYXRjaCIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoImNwdV9zcGVjaWZpYyIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoImNhbGxhYmxlX3doZW4iLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQorICAgIC5DYXNlKCJjYWxsYmFjayIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoImNhcGFiaWxpdHkiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJzaGFyZWRfY2FwYWJpbGl0eSIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoImNhcGFiaWxpdHkiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQpAQCAtNDU0LDYgKzQ3NSw3IEBACiAgICAgLkNhc2UoImV4dGVybmFsX3NvdXJjZV9zeW1ib2wiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJmYWxsdGhyb3VnaCIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMjAxNjAzIDogMCkKICAgICAuQ2FzZSgiZmxhZ19lbnVtIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKKyAgICAuQ2FzZSgiZm9ydGlmeV9zdGRsaWIiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJndWFyZGVkX3ZhciIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoImliYWN0aW9uIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuQ2FzZSgiaWJvdXRsZXQiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQpAQCAtNDcxLDE0ICs0OTMsMjIgQEAKICAgICAuQ2FzZSgibnNfcmV0dXJuc19yZXRhaW5lZCIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoIm5lb25fcG9seXZlY3Rvcl90eXBlIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuQ2FzZSgibmVvbl92ZWN0b3JfdHlwZSIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCisgICAgLkNhc2UoIm5vZGVyZWYiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJub19kZXN0cm95IiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuQ2FzZSgibm9kdXBsaWNhdGUiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJub2VzY2FwZSIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoIm5vX3Nhbml0aXplIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuQ2FzZSgibm9fc2FuaXRpemVfbWVtb3J5IiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKKyAgICAuQ2FzZSgibm9fc3BlY3VsYXRpdmVfbG9hZF9oYXJkZW5pbmciLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJub19zdGFja19wcm90ZWN0b3IiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJub190aHJlYWRfc2FmZXR5X2FuYWx5c2lzIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuQ2FzZSgibm90X3RhaWxfY2FsbGVkIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKKyAgICAuQ2FzZSgib3NfY29uc3VtZWQiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQorICAgIC5DYXNlKCJvc19jb25zdW1lc190aGlzIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKKyAgICAuQ2FzZSgib3NfcmV0dXJuc19ub3RfcmV0YWluZWQiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQorICAgIC5DYXNlKCJvc19yZXR1cm5zX3JldGFpbmVkIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKKyAgICAuQ2FzZSgib3NfcmV0dXJuc19yZXRhaW5lZF9vbl9ub25femVybyIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCisgICAgLkNhc2UoIm9zX3JldHVybnNfcmV0YWluZWRfb25femVybyIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoIm9iamNfYm94YWJsZSIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoIm9iamNfYnJpZGdlIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuQ2FzZSgib2JqY19icmlkZ2VfbXV0YWJsZSIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCkBAIC00ODYsMTAgKzUxNiwxMiBAQAogICAgIC5DYXNlKCJvYmpjX2Rlc2lnbmF0ZWRfaW5pdGlhbGl6ZXIiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJvYmpjX2V4Y2VwdGlvbiIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoIm9iamNfcHJvdG9jb2xfcmVxdWlyZXNfZXhwbGljaXRfaW1wbGVtZW50YXRpb24iLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQorICAgIC5DYXNlKCJvYmpjX2V4dGVybmFsbHlfcmV0YWluZWQiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJvYmpjX2djIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuQ2FzZSgib2JqY19pbmRlcGVuZGVudF9jbGFzcyIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoIm9iamNfbWV0aG9kX2ZhbWlseSIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoIk5TT2JqZWN0IiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKKyAgICAuQ2FzZSgib2JqY19ub25sYXp5X2NsYXNzIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuQ2FzZSgib2JqY19vd25lcnNoaXAiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJvYmpjX3ByZWNpc2VfbGlmZXRpbWUiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJvYmpjX3JlcXVpcmVzX3Byb3BlcnR5X2RlZmluaXRpb25zIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKQEAgLTU1Myw2ICs1ODUsNyBAQAogICAgIC5DYXNlKCJyZXR1cm5fdHlwZXN0YXRlIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuQ2FzZSgic2NvcGVkX2xvY2thYmxlIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuQ2FzZSgic2V0X3R5cGVzdGF0ZSIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCisgICAgLkNhc2UoInNwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuQ2FzZSgic3dpZnRjYWxsIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuQ2FzZSgic3dpZnRfY29udGV4dCIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoInN3aWZ0X2Vycm9yX3Jlc3VsdCIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCkBAIC01NjYsMTcgKzU5OSwyMCBAQAogICAgIC5DYXNlKCJ0eXBlX3RhZ19mb3JfZGF0YXR5cGUiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJ0eXBlX3Zpc2liaWxpdHkiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJ1bmF2YWlsYWJsZSIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCisgICAgLkNhc2UoInVuaW5pdGlhbGl6ZWQiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJ2ZWNyZXR1cm4iLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJ2ZWN0b3JjYWxsIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuQ2FzZSgid2Fybl91bnVzZWRfcmVzdWx0IiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAyMDE2MDMgOiAwKQogICAgIC5DYXNlKCJ3ZWFrX2ltcG9ydCIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCisgICAgLkNhc2UoImltcG9ydF9tb2R1bGUiLCB0cnVlICYmIChULmdldEFyY2goKSA9PSBsbHZtOjpUcmlwbGU6Ondhc20zMiB8fCBULmdldEFyY2goKSA9PSBsbHZtOjpUcmlwbGU6Ondhc202NCkgJiYgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKKyAgICAuQ2FzZSgiaW1wb3J0X25hbWUiLCB0cnVlICYmIChULmdldEFyY2goKSA9PSBsbHZtOjpUcmlwbGU6Ondhc20zMiB8fCBULmdldEFyY2goKSA9PSBsbHZtOjpUcmlwbGU6Ondhc202NCkgJiYgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuQ2FzZSgieHJheV9hbHdheXNfaW5zdHJ1bWVudCIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoInhyYXlfbmV2ZXJfaW5zdHJ1bWVudCIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoInhyYXlfYWx3YXlzX2luc3RydW1lbnQiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJ4cmF5X25ldmVyX2luc3RydW1lbnQiLCBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQogICAgIC5DYXNlKCJ4cmF5X2xvZ19hcmdzIiwgTGFuZ09wdHMuQ1BsdXNQbHVzMTEgPyAxIDogMCkKICAgICAuRGVmYXVsdCgwKTsKLX0gZWxzZSBpZiAoU2NvcGUtPmdldE5hbWUoKSA9PSAiZ251IikgeworfSBlbHNlIGlmIChTY29wZU5hbWUgPT0gImdudSIpIHsKICAgcmV0dXJuIGxsdm06OlN0cmluZ1N3aXRjaDxpbnQ+KE5hbWUpCiAgICAgLkNhc2UoImludGVycnVwdCIsIHRydWUgJiYgKFQuZ2V0QXJjaCgpID09IGxsdm06OlRyaXBsZTo6YXJtIHx8IFQuZ2V0QXJjaCgpID09IGxsdm06OlRyaXBsZTo6dGh1bWIgfHwgVC5nZXRBcmNoKCkgPT0gbGx2bTo6VHJpcGxlOjphcm1lYiB8fCBULmdldEFyY2goKSA9PSBsbHZtOjpUcmlwbGU6OnRodW1iZWIpICYmIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoImludGVycnVwdCIsIHRydWUgJiYgKFQuZ2V0QXJjaCgpID09IGxsdm06OlRyaXBsZTo6YXZyKSAmJiBMYW5nT3B0cy5DUGx1c1BsdXMxMSA/IDEgOiAwKQpAQCAtNjc3LDIyICs3MTMsMjMgQEAKICAgICAuQ2FzZSgid2Vha3JlZiIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkNhc2UoImZvcmNlX2FsaWduX2FyZ19wb2ludGVyIiwgdHJ1ZSAmJiAoVC5nZXRBcmNoKCkgPT0gbGx2bTo6VHJpcGxlOjp4ODYgfHwgVC5nZXRBcmNoKCkgPT0gbGx2bTo6VHJpcGxlOjp4ODZfNjQpICYmIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkRlZmF1bHQoMCk7Ci19IGVsc2UgaWYgKFNjb3BlLT5nZXROYW1lKCkgPT0gImdzbCIpIHsKK30gZWxzZSBpZiAoU2NvcGVOYW1lID09ICJnc2wiKSB7CiAgIHJldHVybiBsbHZtOjpTdHJpbmdTd2l0Y2g8aW50PihOYW1lKQogICAgIC5DYXNlKCJzdXBwcmVzcyIsIExhbmdPcHRzLkNQbHVzUGx1czExID8gMSA6IDApCiAgICAgLkRlZmF1bHQoMCk7CiB9CiB9IGJyZWFrOwogY2FzZSBBdHRyU3ludGF4OjpDOiB7Ci1pZiAoIVNjb3BlIHx8IFNjb3BlLT5nZXROYW1lKCkgPT0gIiIpIHsKK2lmIChTY29wZU5hbWUgPT0gIiIpIHsKICAgcmV0dXJuIGxsdm06OlN0cmluZ1N3aXRjaDxpbnQ+KE5hbWUpCiAgICAgLkNhc2UoImRlcHJlY2F0ZWQiLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQogICAgIC5DYXNlKCJmYWxsdGhyb3VnaCIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoIm1heWJlX3VudXNlZCIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoIm5vZGlzY2FyZCIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkRlZmF1bHQoMCk7Ci19IGVsc2UgaWYgKFNjb3BlLT5nZXROYW1lKCkgPT0gImNsYW5nIikgeworfSBlbHNlIGlmIChTY29wZU5hbWUgPT0gImNsYW5nIikgewogICByZXR1cm4gbGx2bTo6U3RyaW5nU3dpdGNoPGludD4oTmFtZSkKKyAgICAuQ2FzZSgiYWFyY2g2NF92ZWN0b3JfcGNzIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgiYWRkcmVzc19zcGFjZSIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoImFubm90YXRlIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgib2JqY19hcmNfd2Vha19yZWZlcmVuY2VfdW5hdmFpbGFibGUiLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQpAQCAtNzA5LDEyICs3NDYsMTQgQEAKICAgICAuQ2FzZSgiY2ZfdW5rbm93bl90cmFuc2ZlciIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoImNwdV9kaXNwYXRjaCIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoImNwdV9zcGVjaWZpYyIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCisgICAgLkNhc2UoImNhbGxiYWNrIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgiY29udmVyZ2VudCIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoImRpc2FibGVfdGFpbF9jYWxscyIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoImVudW1fZXh0ZW5zaWJpbGl0eSIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoImV4Y2x1ZGVfZnJvbV9leHBsaWNpdF9pbnN0YW50aWF0aW9uIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgiZXh0ZXJuYWxfc291cmNlX3N5bWJvbCIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoImZsYWdfZW51bSIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCisgICAgLkNhc2UoImZvcnRpZnlfc3RkbGliIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgiaWJhY3Rpb24iLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQogICAgIC5DYXNlKCJpYm91dGxldCIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoImlib3V0bGV0Y29sbGVjdGlvbiIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCkBAIC03MjksMTMgKzc2OCwyMSBAQAogICAgIC5DYXNlKCJuc19yZXR1cm5zX3JldGFpbmVkIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgibmVvbl9wb2x5dmVjdG9yX3R5cGUiLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQogICAgIC5DYXNlKCJuZW9uX3ZlY3Rvcl90eXBlIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKKyAgICAuQ2FzZSgibm9kZXJlZiIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoIm5vZHVwbGljYXRlIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgibm9lc2NhcGUiLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQogICAgIC5DYXNlKCJub19zYW5pdGl6ZSIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoIm5vX3Nhbml0aXplX21lbW9yeSIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCisgICAgLkNhc2UoIm5vX3NwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgibm9fc3RhY2tfcHJvdGVjdG9yIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgibm9fdGhyZWFkX3NhZmV0eV9hbmFseXNpcyIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoIm5vdF90YWlsX2NhbGxlZCIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCisgICAgLkNhc2UoIm9zX2NvbnN1bWVkIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKKyAgICAuQ2FzZSgib3NfY29uc3VtZXNfdGhpcyIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCisgICAgLkNhc2UoIm9zX3JldHVybnNfbm90X3JldGFpbmVkIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKKyAgICAuQ2FzZSgib3NfcmV0dXJuc19yZXRhaW5lZCIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCisgICAgLkNhc2UoIm9zX3JldHVybnNfcmV0YWluZWRfb25fbm9uX3plcm8iLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQorICAgIC5DYXNlKCJvc19yZXR1cm5zX3JldGFpbmVkX29uX3plcm8iLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQogICAgIC5DYXNlKCJvYmpjX2JveGFibGUiLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQogICAgIC5DYXNlKCJvYmpjX2JyaWRnZSIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoIm9iamNfYnJpZGdlX211dGFibGUiLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQpAQCAtNzQzLDEwICs3OTAsMTIgQEAKICAgICAuQ2FzZSgib2JqY19kZXNpZ25hdGVkX2luaXRpYWxpemVyIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgib2JqY19leGNlcHRpb24iLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQogICAgIC5DYXNlKCJvYmpjX3Byb3RvY29sX3JlcXVpcmVzX2V4cGxpY2l0X2ltcGxlbWVudGF0aW9uIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKKyAgICAuQ2FzZSgib2JqY19leHRlcm5hbGx5X3JldGFpbmVkIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgib2JqY19nYyIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoIm9iamNfaW5kZXBlbmRlbnRfY2xhc3MiLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQogICAgIC5DYXNlKCJvYmpjX21ldGhvZF9mYW1pbHkiLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQogICAgIC5DYXNlKCJOU09iamVjdCIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCisgICAgLkNhc2UoIm9iamNfbm9ubGF6eV9jbGFzcyIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoIm9iamNfb3duZXJzaGlwIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgib2JqY19wcmVjaXNlX2xpZmV0aW1lIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgib2JqY19yZXF1aXJlc19wcm9wZXJ0eV9kZWZpbml0aW9ucyIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCkBAIC03NzEsNiArODIwLDcgQEAKICAgICAuQ2FzZSgicGFzc19vYmplY3Rfc2l6ZSIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoInByZXNlcnZlX2FsbCIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoInByZXNlcnZlX21vc3QiLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQorICAgIC5DYXNlKCJzcGVjdWxhdGl2ZV9sb2FkX2hhcmRlbmluZyIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoInN3aWZ0Y2FsbCIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoInN3aWZ0X2NvbnRleHQiLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQogICAgIC5DYXNlKCJzd2lmdF9lcnJvcl9yZXN1bHQiLCBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQpAQCAtNzgwLDYgKzgzMCw4IEBACiAgICAgLkNhc2UoInVuYXZhaWxhYmxlIiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgidmVjdG9yY2FsbCIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCiAgICAgLkNhc2UoIndlYWtfaW1wb3J0IiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKKyAgICAuQ2FzZSgiaW1wb3J0X21vZHVsZSIsIHRydWUgJiYgKFQuZ2V0QXJjaCgpID09IGxsdm06OlRyaXBsZTo6d2FzbTMyIHx8IFQuZ2V0QXJjaCgpID09IGxsdm06OlRyaXBsZTo6d2FzbTY0KSAmJiBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQorICAgIC5DYXNlKCJpbXBvcnRfbmFtZSIsIHRydWUgJiYgKFQuZ2V0QXJjaCgpID09IGxsdm06OlRyaXBsZTo6d2FzbTMyIHx8IFQuZ2V0QXJjaCgpID09IGxsdm06OlRyaXBsZTo6d2FzbTY0KSAmJiBMYW5nT3B0cy5Eb3VibGVTcXVhcmVCcmFja2V0QXR0cmlidXRlcyA/IDEgOiAwKQogICAgIC5DYXNlKCJ4cmF5X2Fsd2F5c19pbnN0cnVtZW50IiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgieHJheV9uZXZlcl9pbnN0cnVtZW50IiwgTGFuZ09wdHMuRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMgPyAxIDogMCkKICAgICAuQ2FzZSgieHJheV9hbHdheXNfaW5zdHJ1bWVudCIsIExhbmdPcHRzLkRvdWJsZVNxdWFyZUJyYWNrZXRBdHRyaWJ1dGVzID8gMSA6IDApCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9BdHRyS2luZHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0F0dHJLaW5kcy5oCmluZGV4IGQ4MmRiYjAuLmVjMDA1MmQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0F0dHJLaW5kcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0F0dHJLaW5kcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tLSBBdHRyLmggLSBFbnVtIHZhbHVlcyBmb3IgQyBBdHRyaWJ1dGUgS2luZHMgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9BdHRyTGlzdC5pbmMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9BdHRyTGlzdC5pbmMKaW5kZXggM2VlNWQ0ZC4uMTU2YTJhNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQXR0ckxpc3QuaW5jCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0F0dHJMaXN0LmluYwpAQCAtMzUsNiArMzUsNyBAQAogI2VuZGlmCiAKIFRZUEVfQVRUUihBZGRyZXNzU3BhY2UpCitUWVBFX0FUVFIoTm9EZXJlZikKIFRZUEVfQVRUUihPYmpDR0MpCiBUWVBFX0FUVFIoT2JqQ0luZXJ0VW5zYWZlVW5yZXRhaW5lZCkKIFRZUEVfQVRUUihPYmpDS2luZE9mKQpAQCAtNTIsNiArNTMsNyBAQAogVFlQRV9BVFRSKFVQdHIpCiBTVE1UX0FUVFIoRmFsbFRocm91Z2gpCiBTVE1UX0FUVFIoU3VwcHJlc3MpCitERUNMX09SX1RZUEVfQVRUUihBQXJjaDY0VmVjdG9yUGNzKQogREVDTF9PUl9UWVBFX0FUVFIoQW55WDg2Tm9DZkNoZWNrKQogREVDTF9PUl9UWVBFX0FUVFIoQ0RlY2wpCiBERUNMX09SX1RZUEVfQVRUUihGYXN0Q2FsbCkKQEAgLTc4LDYgKzgwLDcgQEAKIElOSEVSSVRBQkxFX1BBUkFNX0FUVFIoQ2Fycmllc0RlcGVuZGVuY3kpCiBJTkhFUklUQUJMRV9QQVJBTV9BVFRSKE5TQ29uc3VtZWQpCiBJTkhFUklUQUJMRV9QQVJBTV9BVFRSKE5vbk51bGwpCitJTkhFUklUQUJMRV9QQVJBTV9BVFRSKE9TQ29uc3VtZWQpCiBJTkhFUklUQUJMRV9QQVJBTV9BVFRSKFBhc3NPYmplY3RTaXplKQogSU5IRVJJVEFCTEVfQVRUUihBTURHUFVGbGF0V29ya0dyb3VwU2l6ZSkKIElOSEVSSVRBQkxFX0FUVFIoQU1ER1BVTnVtU0dQUikKQEAgLTEyNCw2ICsxMjcsNyBAQAogSU5IRVJJVEFCTEVfQVRUUihDVURBU2hhcmVkKQogSU5IRVJJVEFCTEVfQVRUUihDWFgxMU5vUmV0dXJuKQogSU5IRVJJVEFCTEVfQVRUUihDYWxsYWJsZVdoZW4pCitJTkhFUklUQUJMRV9BVFRSKENhbGxiYWNrKQogSU5IRVJJVEFCTEVfQVRUUihDYXBhYmlsaXR5KQogSU5IRVJJVEFCTEVfQVRUUihDYXB0dXJlZFJlY29yZCkKIElOSEVSSVRBQkxFX0FUVFIoQ2xlYW51cCkKQEAgLTEzNyw3ICsxNDEsOSBAQAogSU5IRVJJVEFCTEVfQVRUUihDb25zdW1hYmxlU2V0T25SZWFkKQogSU5IRVJJVEFCTEVfQVRUUihDb252ZXJnZW50KQogSU5IRVJJVEFCTEVfQVRUUihETExFeHBvcnQpCitJTkhFUklUQUJMRV9BVFRSKERMTEV4cG9ydFN0YXRpY0xvY2FsKQogSU5IRVJJVEFCTEVfQVRUUihETExJbXBvcnQpCitJTkhFUklUQUJMRV9BVFRSKERMTEltcG9ydFN0YXRpY0xvY2FsKQogSU5IRVJJVEFCTEVfQVRUUihEZXByZWNhdGVkKQogSU5IRVJJVEFCTEVfQVRUUihEZXN0cnVjdG9yKQogSU5IRVJJVEFCTEVfQVRUUihEaWFnbm9zZUlmKQpAQCAtMTUzLDYgKzE1OSw3IEBACiBJTkhFUklUQUJMRV9BVFRSKEZsYXR0ZW4pCiBJTkhFUklUQUJMRV9BVFRSKEZvcm1hdCkKIElOSEVSSVRBQkxFX0FUVFIoRm9ybWF0QXJnKQorSU5IRVJJVEFCTEVfQVRUUihGb3J0aWZ5U3RkTGliKQogSU5IRVJJVEFCTEVfQVRUUihHTlVJbmxpbmUpCiBJTkhFUklUQUJMRV9BVFRSKEd1YXJkZWRCeSkKIElOSEVSSVRBQkxFX0FUVFIoR3VhcmRlZFZhcikKQEAgLTE5NSw2ICsyMDIsNyBAQAogSU5IRVJJVEFCTEVfQVRUUihOb01pcHMxNikKIElOSEVSSVRBQkxFX0FUVFIoTm9SZXR1cm4pCiBJTkhFUklUQUJMRV9BVFRSKE5vU2FuaXRpemUpCitJTkhFUklUQUJMRV9BVFRSKE5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nKQogSU5IRVJJVEFCTEVfQVRUUihOb1NwbGl0U3RhY2spCiBJTkhFUklUQUJMRV9BVFRSKE5vU3RhY2tQcm90ZWN0b3IpCiBJTkhFUklUQUJMRV9BVFRSKE5vVGhyZWFkU2FmZXR5QW5hbHlzaXMpCkBAIC0yMDMsMTEgKzIxMSwxNyBAQAogSU5IRVJJVEFCTEVfQVRUUihPTVBDYXB0dXJlTm9Jbml0KQogSU5IRVJJVEFCTEVfQVRUUihPTVBEZWNsYXJlVGFyZ2V0RGVjbCkKIElOSEVSSVRBQkxFX0FUVFIoT01QVGhyZWFkUHJpdmF0ZURlY2wpCitJTkhFUklUQUJMRV9BVFRSKE9TQ29uc3VtZXNUaGlzKQorSU5IRVJJVEFCTEVfQVRUUihPU1JldHVybnNOb3RSZXRhaW5lZCkKK0lOSEVSSVRBQkxFX0FUVFIoT1NSZXR1cm5zUmV0YWluZWQpCitJTkhFUklUQUJMRV9BVFRSKE9TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvKQorSU5IRVJJVEFCTEVfQVRUUihPU1JldHVybnNSZXRhaW5lZE9uWmVybykKIElOSEVSSVRBQkxFX0FUVFIoT2JqQ0JyaWRnZSkKIElOSEVSSVRBQkxFX0FUVFIoT2JqQ0JyaWRnZU11dGFibGUpCiBJTkhFUklUQUJMRV9BVFRSKE9iakNCcmlkZ2VSZWxhdGVkKQogSU5IRVJJVEFCTEVfQVRUUihPYmpDRXhjZXB0aW9uKQogSU5IRVJJVEFCTEVfQVRUUihPYmpDRXhwbGljaXRQcm90b2NvbEltcGwpCitJTkhFUklUQUJMRV9BVFRSKE9iakNFeHRlcm5hbGx5UmV0YWluZWQpCiBJTkhFUklUQUJMRV9BVFRSKE9iakNJbmRlcGVuZGVudENsYXNzKQogSU5IRVJJVEFCTEVfQVRUUihPYmpDTWV0aG9kRmFtaWx5KQogSU5IRVJJVEFCTEVfQVRUUihPYmpDTlNPYmplY3QpCkBAIC0yNDgsNiArMjYyLDcgQEAKIElOSEVSSVRBQkxFX0FUVFIoU2VudGluZWwpCiBJTkhFUklUQUJMRV9BVFRSKFNldFR5cGVzdGF0ZSkKIElOSEVSSVRBQkxFX0FUVFIoU2hhcmVkVHJ5bG9ja0Z1bmN0aW9uKQorSU5IRVJJVEFCTEVfQVRUUihTcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmcpCiBJTkhFUklUQUJMRV9BVFRSKFRMU01vZGVsKQogSU5IRVJJVEFCTEVfQVRUUihUYXJnZXQpCiBJTkhFUklUQUJMRV9BVFRSKFRlc3RUeXBlc3RhdGUpCkBAIC0yNTcsNiArMjcyLDcgQEAKIElOSEVSSVRBQkxFX0FUVFIoVHlwZVRhZ0ZvckRhdGF0eXBlKQogSU5IRVJJVEFCTEVfQVRUUihUeXBlVmlzaWJpbGl0eSkKIElOSEVSSVRBQkxFX0FUVFIoVW5hdmFpbGFibGUpCitJTkhFUklUQUJMRV9BVFRSKFVuaW5pdGlhbGl6ZWQpCiBJTkhFUklUQUJMRV9BVFRSKFVudXNlZCkKIElOSEVSSVRBQkxFX0FUVFIoVXNlZCkKIElOSEVSSVRBQkxFX0FUVFIoVXVpZCkKQEAgLTI2OCw2ICsyODQsOCBAQAogSU5IRVJJVEFCTEVfQVRUUihXZWFrKQogSU5IRVJJVEFCTEVfQVRUUihXZWFrSW1wb3J0KQogSU5IRVJJVEFCTEVfQVRUUihXZWFrUmVmKQorSU5IRVJJVEFCTEVfQVRUUihXZWJBc3NlbWJseUltcG9ydE1vZHVsZSkKK0lOSEVSSVRBQkxFX0FUVFIoV2ViQXNzZW1ibHlJbXBvcnROYW1lKQogSU5IRVJJVEFCTEVfQVRUUihXb3JrR3JvdXBTaXplSGludCkKIElOSEVSSVRBQkxFX0FUVFIoWDg2Rm9yY2VBbGlnbkFyZ1BvaW50ZXIpCiBJTkhFUklUQUJMRV9BVFRSKFhSYXlJbnN0cnVtZW50KQpAQCAtMjg1LDYgKzMwMyw3IEBACiBBVFRSKE9NUFJlZmVyZW5jZWRWYXIpCiBBVFRSKE9iakNCb3hhYmxlKQogQVRUUihPYmpDRGVzaWduYXRlZEluaXRpYWxpemVyKQorQVRUUihPYmpDTm9uTGF6eUNsYXNzKQogQVRUUihPYmpDUnVudGltZU5hbWUpCiBBVFRSKE9iakNSdW50aW1lVmlzaWJsZSkKIEFUVFIoT3BlbkNMQWNjZXNzKQpAQCAtMjk5LDggKzMxOCw4IEBACiBBVFRSX1JBTkdFKEF0dHIsIEFkZHJlc3NTcGFjZSwgVGhyZWFkKQogQVRUUl9SQU5HRShUeXBlQXR0ciwgQWRkcmVzc1NwYWNlLCBVUHRyKQogQVRUUl9SQU5HRShTdG10QXR0ciwgRmFsbFRocm91Z2gsIFN1cHByZXNzKQotQVRUUl9SQU5HRShJbmhlcml0YWJsZUF0dHIsIEFueVg4Nk5vQ2ZDaGVjaywgWFJheUxvZ0FyZ3MpCi1BVFRSX1JBTkdFKERlY2xPclR5cGVBdHRyLCBBbnlYODZOb0NmQ2hlY2ssIFZlY3RvckNhbGwpCitBVFRSX1JBTkdFKEluaGVyaXRhYmxlQXR0ciwgQUFyY2g2NFZlY3RvclBjcywgWFJheUxvZ0FyZ3MpCitBVFRSX1JBTkdFKERlY2xPclR5cGVBdHRyLCBBQXJjaDY0VmVjdG9yUGNzLCBWZWN0b3JDYWxsKQogQVRUUl9SQU5HRShJbmhlcml0YWJsZVBhcmFtQXR0ciwgU3dpZnRDb250ZXh0LCBQYXNzT2JqZWN0U2l6ZSkKIEFUVFJfUkFOR0UoUGFyYW1ldGVyQUJJQXR0ciwgU3dpZnRDb250ZXh0LCBTd2lmdEluZGlyZWN0UmVzdWx0KQogI3VuZGVmIEFUVFJfUkFOR0UKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0F0dHJTdWJqZWN0TWF0Y2hSdWxlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQXR0clN1YmplY3RNYXRjaFJ1bGVzLmgKaW5kZXggODFhYTYzNC4uMDEwY2VmYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQXR0clN1YmplY3RNYXRjaFJ1bGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQXR0clN1YmplY3RNYXRjaFJ1bGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIEF0dHJTdWJqZWN0TWF0Y2hSdWxlcy5oIC0gQXR0cmlidXRlIHN1YmplY3QgbWF0Y2ggcnVsZXMgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9BdHRyaWJ1dGVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9BdHRyaWJ1dGVzLmgKaW5kZXggMzE1MjQ1My4uYzY5NjMzZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQXR0cmlidXRlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0F0dHJpYnV0ZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEF0dHJpYnV0ZXMuaCAtIEF0dHJpYnV0ZXMgaGVhZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0JpdG1hc2tFbnVtLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CaXRtYXNrRW51bS5oCmluZGV4IDEyZmYzY2YuLjM0YmZhMTcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0JpdG1hc2tFbnVtLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQml0bWFza0VudW0uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEJpdG1hc2tFbnVtLmggLSB3cmFwcGVyIG9mIExMVk0ncyBiaXRtYXNrIGVudW0gZmFjaWxpdHktKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnMuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnMuZGVmCmluZGV4IGY2MTg1ZDUuLjJlOGM2ZDkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGlucy5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBCdWlsdGlucy5kZWYgLSBCdWlsdGluIGZ1bmN0aW9uIGluZm8gZGF0YWJhc2UgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTkzLDYgKzkyLDggQEAKIC8vICBqIC0+IHJldHVybnNfdHdpY2UgKGxpa2Ugc2V0am1wKQogLy8gIHUgLT4gYXJndW1lbnRzIGFyZSBub3QgZXZhbHVhdGVkIGZvciB0aGVpciBzaWRlLWVmZmVjdHMKIC8vICBWOk46IC0+IHJlcXVpcmVzIHZlY3RvcnMgb2YgYXQgbGVhc3QgTiBiaXRzIHRvIGJlIGxlZ2FsCisvLyAgQzxOLE1fMCwuLi4sTV9rPiAtPiBjYWxsYmFjayBiZWhhdmlvcjogYXJndW1lbnQgTiBpcyBjYWxsZWQgd2l0aCBhcmd1bWVudAorLy8gICAgICAgICAgICAgICAgICAgICAgTV8wLCAuLi4sIE1fayBhcyBwYXlsb2FkCiAvLyAgRklYTUU6IGdjYyBoYXMgbm9ubnVsbAogCiAjaWYgZGVmaW5lZChCVUlMVElOKSAmJiAhZGVmaW5lZChMSUJCVUlMVElOKQpAQCAtNDk4LDYgKzQ5OSw3IEBACiBCVUlMVElOKF9fYnVpbHRpbl92c3ByaW50ZiwgImljKmNDKmEiLCAibkZQOjE6IikKIEJVSUxUSU4oX19idWlsdGluX3ZzbnByaW50ZiwgImljKnpjQyphIiwgIm5GUDoyOiIpCiBCVUlMVElOKF9fYnVpbHRpbl90aHJlYWRfcG9pbnRlciwgInYqIiwgIm5jIikKK0JVSUxUSU4oX19idWlsdGluX2xhdW5kZXIsICJ2KnYqIiwgIm50IikKIAogLy8gR0NDIGV4Y2VwdGlvbiBidWlsdGlucwogQlVJTFRJTihfX2J1aWx0aW5fZWhfcmV0dXJuLCAidnp2KiIsICJyIikgLy8gRklYTUU6IFRha2VzIGludHB0cl90LCBub3Qgc2l6ZV90IQpAQCAtNTA5LDYgKzUxMSw3IEBACiAKIC8vIEdDQyBPYmplY3Qgc2l6ZSBjaGVja2luZyBidWlsdGlucwogQlVJTFRJTihfX2J1aWx0aW5fb2JqZWN0X3NpemUsICJ6dkMqaSIsICJudSIpCitCVUlMVElOKF9fYnVpbHRpbl9keW5hbWljX29iamVjdF9zaXplLCAienZDKmkiLCAibnUiKSAvLyBDbGFuZyBvbmx5LgogQlVJTFRJTihfX2J1aWx0aW5fX19tZW1jcHlfY2hrLCAidip2KnZDKnp6IiwgIm5GIikKIEJVSUxUSU4oX19idWlsdGluX19fbWVtY2NweV9jaGssICJ2KnYqdkMqaXp6IiwgIm5GIikKIEJVSUxUSU4oX19idWlsdGluX19fbWVtbW92ZV9jaGssICJ2KnYqdkMqenoiLCAibkYiKQpAQCAtNTM4LDcgKzU0MSw3IEBACiBCVUlMVElOKF9fYnVpbHRpbl90cmFwLCAidiIsICJuciIpCiBCVUlMVElOKF9fYnVpbHRpbl9kZWJ1Z3RyYXAsICJ2IiwgIm4iKQogQlVJTFRJTihfX2J1aWx0aW5fdW5yZWFjaGFibGUsICJ2IiwgIm5yIikKLUJVSUxUSU4oX19idWlsdGluX3NodWZmbGV2ZWN0b3IsICJ2LiIgICAsICJuYyIpCitCVUlMVElOKF9fYnVpbHRpbl9zaHVmZmxldmVjdG9yLCAidi4iICAgLCAibmN0IikKIEJVSUxUSU4oX19idWlsdGluX2NvbnZlcnR2ZWN0b3IsICJ2LiIgICAsICJuY3QiKQogQlVJTFRJTihfX2J1aWx0aW5fYWxsb2NhLCAidip6IiAgICwgIkZuIikKIEJVSUxUSU4oX19idWlsdGluX2FsbG9jYV93aXRoX2FsaWduLCAidip6SXoiLCAiRm4iKQpAQCAtODE4LDIwICs4MjEsMjMgQEAKIExBTkdCVUlMVElOKF9pbnRlcmxvY2tlZGJpdHRlc3RhbmRzZXRfbmYsICAgICJVY05pRCpOaSIsICJuIiwgQUxMX01TX0xBTkdVQUdFUykKIExBTkdCVUlMVElOKF9pbnRlcmxvY2tlZGJpdHRlc3RhbmRzZXRfcmVsLCAgICJVY05pRCpOaSIsICJuIiwgQUxMX01TX0xBTkdVQUdFUykKIExBTkdCVUlMVElOKF9fbm9vcCwgICAgICAgICAgICJpLiIsICAibiIsIEFMTF9NU19MQU5HVUFHRVMpCi1MQU5HQlVJTFRJTihfX3BvcGNudDE2LCAiVXNVcyIsICAgICAibmMiLCBBTExfTVNfTEFOR1VBR0VTKQotTEFOR0JVSUxUSU4oX19wb3BjbnQsICAgIlVpVWkiLCAgICAgIm5jIiwgQUxMX01TX0xBTkdVQUdFUykKLUxBTkdCVUlMVElOKF9fcG9wY250NjQsICJVTExpVUxMaSIsICJuYyIsIEFMTF9NU19MQU5HVUFHRVMpCitMQU5HQlVJTFRJTihfX2x6Y250MTYsICJVc1VzIiwgICAgIm5jIiwgQUxMX01TX0xBTkdVQUdFUykKK0xBTkdCVUlMVElOKF9fbHpjbnQsICAgIlVpVWkiLCAgICAibmMiLCBBTExfTVNfTEFOR1VBR0VTKQorTEFOR0JVSUxUSU4oX19semNudDY0LCAiVVdpVVdpIiwgICJuYyIsIEFMTF9NU19MQU5HVUFHRVMpCitMQU5HQlVJTFRJTihfX3BvcGNudDE2LCAiVXNVcyIsICAgIm5jIiwgQUxMX01TX0xBTkdVQUdFUykKK0xBTkdCVUlMVElOKF9fcG9wY250LCAgICJVaVVpIiwgICAibmMiLCBBTExfTVNfTEFOR1VBR0VTKQorTEFOR0JVSUxUSU4oX19wb3BjbnQ2NCwgIlVXaVVXaSIsICJuYyIsIEFMTF9NU19MQU5HVUFHRVMpCiBMQU5HQlVJTFRJTihfUmV0dXJuQWRkcmVzcywgInYqIiwgIm4iLCBBTExfTVNfTEFOR1VBR0VTKQogTEFOR0JVSUxUSU4oX3JvdGw4LCAgIlVjVWNVYyIsICAgICJuIiwgQUxMX01TX0xBTkdVQUdFUykKIExBTkdCVUlMVElOKF9yb3RsMTYsICJVc1VzVWMiLCAgICAibiIsIEFMTF9NU19MQU5HVUFHRVMpCiBMQU5HQlVJTFRJTihfcm90bCwgICAiVWlVaWkiLCAgICAgIm4iLCBBTExfTVNfTEFOR1VBR0VTKQogTEFOR0JVSUxUSU4oX2xyb3RsLCAgIlVOaVVOaWkiLCAgICJuIiwgQUxMX01TX0xBTkdVQUdFUykKLUxBTkdCVUlMVElOKF9yb3RsNjQsICJVTExpVUxMaWkiLCAibiIsIEFMTF9NU19MQU5HVUFHRVMpCitMQU5HQlVJTFRJTihfcm90bDY0LCAiVVdpVVdpaSIsICAgIm4iLCBBTExfTVNfTEFOR1VBR0VTKQogTEFOR0JVSUxUSU4oX3JvdHI4LCAgIlVjVWNVYyIsICAgICJuIiwgQUxMX01TX0xBTkdVQUdFUykKIExBTkdCVUlMVElOKF9yb3RyMTYsICJVc1VzVWMiLCAgICAibiIsIEFMTF9NU19MQU5HVUFHRVMpCiBMQU5HQlVJTFRJTihfcm90ciwgICAiVWlVaWkiLCAgICAgIm4iLCBBTExfTVNfTEFOR1VBR0VTKQogTEFOR0JVSUxUSU4oX2xyb3RyLCAgIlVOaVVOaWkiLCAgICJuIiwgQUxMX01TX0xBTkdVQUdFUykKLUxBTkdCVUlMVElOKF9yb3RyNjQsICJVTExpVUxMaWkiLCAibiIsIEFMTF9NU19MQU5HVUFHRVMpCitMQU5HQlVJTFRJTihfcm90cjY0LCAiVVdpVVdpaSIsICAgIm4iLCBBTExfTVNfTEFOR1VBR0VTKQogTEFOR0JVSUxUSU4oX192YV9zdGFydCwgICAgICAgInZjKiouIiwgIm50IiwgQUxMX01TX0xBTkdVQUdFUykKIExBTkdCVUlMVElOKF9fZmFzdGZhaWwsICJ2VWkiLCAgICAibnIiLCBBTExfTVNfTEFOR1VBR0VTKQogCkBAIC05NTYsNiArOTYyLDkgQEAKIC8vIFBPU0lYIHVuaXN0ZC5oCiBMSUJCVUlMVElOKF9leGl0LCAidmkiLCAgICAgICAgICAgImZyIiwgICAgInVuaXN0ZC5oIiwgQUxMX0dOVV9MQU5HVUFHRVMpCiBMSUJCVUlMVElOKHZmb3JrLCAicCIsICAgICAgICAgICAgImZqIiwgICAgInVuaXN0ZC5oIiwgQUxMX0xBTkdVQUdFUykKKy8vIFBPU0lYIHB0aHJlYWQuaAorTElCQlVJTFRJTihwdGhyZWFkX2NyZWF0ZSwgIiIsICAiZkM8MiwzPiIsICJwdGhyZWFkLmgiLCBBTExfR05VX0xBTkdVQUdFUykKKwogLy8gUE9TSVggc2V0am1wLmgKIAogTElCQlVJTFRJTihfc2V0am1wLCAiaUoiLCAgICAgICAgICJmaiIsICAgInNldGptcC5oIiwgQUxMX0xBTkdVQUdFUykKQEAgLTEzOTgsOSArMTQwNyw5IEBACiBCVUlMVElOKF9fYnVpbHRpbl9zdWJjbGwsICJVTExpVUxMaUNVTExpQ1VMTGlDVUxMaSoiLCAibiIpCiAKIC8vIENoZWNrZWQgQXJpdGhtZXRpYyBCdWlsdGlucyBmb3IgU2VjdXJpdHkuCi1CVUlMVElOKF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3csICJ2LiIsICJudCIpCi1CVUlMVElOKF9fYnVpbHRpbl9zdWJfb3ZlcmZsb3csICJ2LiIsICJudCIpCi1CVUlMVElOKF9fYnVpbHRpbl9tdWxfb3ZlcmZsb3csICJ2LiIsICJudCIpCitCVUlMVElOKF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3csICJiLiIsICJudCIpCitCVUlMVElOKF9fYnVpbHRpbl9zdWJfb3ZlcmZsb3csICJiLiIsICJudCIpCitCVUlMVElOKF9fYnVpbHRpbl9tdWxfb3ZlcmZsb3csICJiLiIsICJudCIpCiBCVUlMVElOKF9fYnVpbHRpbl91YWRkX292ZXJmbG93LCAiYlVpQ1VpQ1VpKiIsICJuIikKIEJVSUxUSU4oX19idWlsdGluX3VhZGRsX292ZXJmbG93LCAiYlVMaUNVTGlDVUxpKiIsICJuIikKIEJVSUxUSU4oX19idWlsdGluX3VhZGRsbF9vdmVyZmxvdywgImJVTExpQ1VMTGlDVUxMaSoiLCAibiIpCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGlucy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnMuaAppbmRleCBmYTJiY2M0Li5iM2Q2ZTQ1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGlucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBCdWlsdGlucy5oIC0gQnVpbHRpbiBmdW5jdGlvbiBoZWFkZXIgLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCkBAIC0xOTQsNiArMTkzLDEyIEBACiAgIC8vLyBhcmd1bWVudCBhbmQgd2hldGhlciB0aGlzIGZ1bmN0aW9uIGFzIGEgdmFfbGlzdCBhcmd1bWVudC4KICAgYm9vbCBpc1NjYW5mTGlrZSh1bnNpZ25lZCBJRCwgdW5zaWduZWQgJkZvcm1hdElkeCwgYm9vbCAmSGFzVkFMaXN0QXJnKTsKIAorICAvLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBidWlsdGluIGhhcyBjYWxsYmFjayBiZWhhdmlvciAoc2VlCisgIC8vLyBsbHZtOjpBYnN0cmFjdENhbGxTaXRlcyBmb3IgZGV0YWlscykuIElmIHNvLCBhZGQgdGhlIGluZGV4IHRvIHRoZQorICAvLy8gY2FsbGJhY2sgY2FsbGVlIGFyZ3VtZW50IGFuZCB0aGUgY2FsbGJhY2sgcGF5bG9hZCBhcmd1bWVudHMuCisgIGJvb2wgcGVyZm9ybXNDYWxsYmFjayh1bnNpZ25lZCBJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlNtYWxsVmVjdG9ySW1wbDxpbnQ+ICZFbmNvZGluZykgY29uc3Q7CisKICAgLy8vIFJldHVybiB0cnVlIGlmIHRoaXMgZnVuY3Rpb24gaGFzIG5vIHNpZGUgZWZmZWN0cyBhbmQgZG9lc24ndAogICAvLy8gcmVhZCBtZW1vcnksIGV4Y2VwdCBmb3IgcG9zc2libHkgZXJybm8uCiAgIC8vLwpAQCAtMjM3LDcgKzI0MiwxMyBAQAogICAgICAgICAgICAgICBjb25zdCBjaGFyICpGbXQpIGNvbnN0OwogfTsKIAotfQorLy8vIEZvciBhIGdpdmVuIEJ1aWx0aW5JRCwgcmV0dXJuIHRoZSBJRCBvZiB0aGUgZm9ydGlmaWVkIHZhcmlhbnQgZnVuY3Rpb24uIEZvcgorLy8vIGluc3RhbmNlLCBpZiBCdWlsdGluOjpCSXNwcmludGYgaXMgcGFzc2VkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuCisvLy8gQnVpbHRpbjo6QklfX2J1aWx0aW5fX19zcHJpbnRmX2Noay4gSWYgQnVpbHRpbklEIGRvZXNuJ3QgaGF2ZSBhIGZvcnRpZmllZAorLy8vIHZhcmlhbnQsIDAgaXMgcmV0dXJuZWQuCit1bnNpZ25lZCBnZXRGb3J0aWZpZWRWYXJpYW50RnVuY3Rpb24odW5zaWduZWQgQnVpbHRpbklEKTsKKworfSAvLyBlbmQgbmFtZXNwYWNlIEJ1aWx0aW4KIAogLy8vIEtpbmRzIG9mIEJ1aWx0aW5UZW1wbGF0ZURlY2wuCiBlbnVtIEJ1aWx0aW5UZW1wbGF0ZUtpbmQgOiBpbnQgewpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNBQXJjaDY0LmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zQUFyY2g2NC5kZWYKaW5kZXggNDliZjgzMS4uZTlhOGEyYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNBQXJjaDY0LmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc0FBcmNoNjQuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PS0gQnVpbHRpbnNBQXJjaDY0LmRlZiAtIEFBcmNoNjQgQnVpbHRpbiBmdW5jdGlvbiBkYXRhYmFzZSAtLS0tKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zMyw3ICszMiw3IEBACiAKIC8vIEJpdCBtYW5pcHVsYXRpb24KIEJVSUxUSU4oX19idWlsdGluX2FybV9yYml0LCAiVWlVaSIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl9hcm1fcmJpdDY0LCAiTFVpTFVpIiwgIm5jIikKK0JVSUxUSU4oX19idWlsdGluX2FybV9yYml0NjQsICJXVWlXVWkiLCAibmMiKQogCiAvLyBISU5UCiBCVUlMVElOKF9fYnVpbHRpbl9hcm1fbm9wLCAidiIsICIiKQpAQCAtNTAsOCArNDksOCBAQAogQlVJTFRJTihfX2J1aWx0aW5fYXJtX2NyYzMyY2gsICJVaVVpVXMiLCAibmMiKQogQlVJTFRJTihfX2J1aWx0aW5fYXJtX2NyYzMydywgIlVpVWlVaSIsICJuYyIpCiBCVUlMVElOKF9fYnVpbHRpbl9hcm1fY3JjMzJjdywgIlVpVWlVaSIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl9hcm1fY3JjMzJkLCAiVWlVaUxVaSIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl9hcm1fY3JjMzJjZCwgIlVpVWlMVWkiLCAibmMiKQorQlVJTFRJTihfX2J1aWx0aW5fYXJtX2NyYzMyZCwgIlVpVWlXVWkiLCAibmMiKQorQlVJTFRJTihfX2J1aWx0aW5fYXJtX2NyYzMyY2QsICJVaVVpV1VpIiwgIm5jIikKIAogLy8gTWVtb3J5IGJhcnJpZXIKIEJVSUxUSU4oX19idWlsdGluX2FybV9kbWIsICJ2VWkiLCAibmMiKQpAQCAtNjMsMTAgKzYyLDEwIEBACiAKIC8vIFN5c3RlbSBSZWdpc3RlcnMKIEJVSUxUSU4oX19idWlsdGluX2FybV9yc3IsICJVaWNDKiIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl9hcm1fcnNyNjQsICJMVWljQyoiLCAibmMiKQorQlVJTFRJTihfX2J1aWx0aW5fYXJtX3JzcjY0LCAiV1VpY0MqIiwgIm5jIikKIEJVSUxUSU4oX19idWlsdGluX2FybV9yc3JwLCAidipjQyoiLCAibmMiKQogQlVJTFRJTihfX2J1aWx0aW5fYXJtX3dzciwgInZjQypVaSIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl9hcm1fd3NyNjQsICJ2Y0MqTFVpIiwgIm5jIikKK0JVSUxUSU4oX19idWlsdGluX2FybV93c3I2NCwgInZjQypXVWkiLCAibmMiKQogQlVJTFRJTihfX2J1aWx0aW5fYXJtX3dzcnAsICJ2Y0MqdkMqIiwgIm5jIikKIAogLy8gTVNWQwpAQCAtMTA0LDggKzEwMywxMDkgQEAKIFRBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRPcjY0LCAgICAgICAgICAiTExpTExpRCpMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKIFRBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRYb3I2NCwgICAgICAgICAiTExpTExpRCpMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKIAorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkX2FjcSwgIkxpTGlEKkxpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2VBZGRfcmVsLCAiTGlMaUQqTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZF9uZiwgIkxpTGlEKkxpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQ4X2FjcSwgImNjRCpjIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQ4X3JlbCwgImNjRCpjIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQ4X25mLCAiY2NEKmMiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDE2X2FjcSwgInNzRCpzIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQxNl9yZWwsICJzc0QqcyIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkMTZfbmYsICJzc0QqcyIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkNjRfYWNxLCAiTExpTExpRCpMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDY0X3JlbCwgIkxMaUxMaUQqTExpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQ2NF9uZiwgIkxMaUxMaUQqTExpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCisKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZThfYWNxLCAgImNjRCpjIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2U4X25mLCAgICJjY0QqYyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEV4Y2hhbmdlOF9yZWwsICAiY2NEKmMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZTE2X2FjcSwgInNzRCpzIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2UxNl9uZiwgICJzc0QqcyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEV4Y2hhbmdlMTZfcmVsLCAic3NEKnMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZV9hY3EsICAgIkxpTGlEKkxpIiwgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2VfbmYsICAgICJMaUxpRCpMaSIsICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEV4Y2hhbmdlX3JlbCwgICAiTGlMaUQqTGkiLCAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZTY0X2FjcSwgIkxMaUxMaUQqTExpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2U2NF9uZiwgICJMTGlMTGlEKkxMaSIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEV4Y2hhbmdlNjRfcmVsLCAiTExpTExpRCpMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKKworVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZThfYWNxLCAgImNjRCpjYyIsICAgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlOF9uZiwgICAiY2NEKmNjIiwgICAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2U4X3JlbCwgICJjY0QqY2MiLCAgICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZTE2X2FjcSwgInNzRCpzcyIsICAgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlMTZfbmYsICAic3NEKnNzIiwgICAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UxNl9yZWwsICJzc0Qqc3MiLCAgICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZV9hY3EsICAgIkxpTGlEKkxpTGkiLCAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlX25mLCAgICAiTGlMaUQqTGlMaSIsICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VfcmVsLCAgICJMaUxpRCpMaUxpIiwgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZTY0X2FjcSwgIkxMaUxMaUQqTExpTExpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlNjRfbmYsICAiTExpTExpRCpMTGlMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2U2NF9yZWwsICJMTGlMTGlEKkxMaUxMaSIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkT3I4X2FjcSwgICJjY0QqYyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZE9yOF9uZiwgICAiY2NEKmMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRPcjhfcmVsLCAgImNjRCpjIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkT3IxNl9hY3EsICJzc0QqcyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZE9yMTZfbmYsICAic3NEKnMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRPcjE2X3JlbCwgInNzRCpzIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkT3JfYWNxLCAgICJMaUxpRCpMaSIsICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZE9yX25mLCAgICAiTGlMaUQqTGkiLCAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRPcl9yZWwsICAgIkxpTGlEKkxpIiwgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkT3I2NF9hY3EsICJMTGlMTGlEKkxMaSIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZE9yNjRfbmYsICAiTExpTExpRCpMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRPcjY0X3JlbCwgIkxMaUxMaUQqTExpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCisKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRYb3I4X2FjcSwgICJjY0QqYyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZFhvcjhfbmYsICAgImNjRCpjIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkWG9yOF9yZWwsICAiY2NEKmMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRYb3IxNl9hY3EsICJzc0QqcyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZFhvcjE2X25mLCAgInNzRCpzIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkWG9yMTZfcmVsLCAic3NEKnMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRYb3JfYWNxLCAgICJMaUxpRCpMaSIsICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZFhvcl9uZiwgICAgIkxpTGlEKkxpIiwgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkWG9yX3JlbCwgICAiTGlMaUQqTGkiLCAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRYb3I2NF9hY3EsICJMTGlMTGlEKkxMaSIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZFhvcjY0X25mLCAgIkxMaUxMaUQqTExpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkWG9yNjRfcmVsLCAiTExpTExpRCpMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKKworVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEFuZDhfYWNxLCAgImNjRCpjIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQW5kOF9uZiwgICAiY2NEKmMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRBbmQ4X3JlbCwgICJjY0QqYyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEFuZDE2X2FjcSwgInNzRCpzIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQW5kMTZfbmYsICAic3NEKnMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRBbmQxNl9yZWwsICJzc0QqcyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEFuZF9hY3EsICAgIkxpTGlEKkxpIiwgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQW5kX25mLCAgICAiTGlMaUQqTGkiLCAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRBbmRfcmVsLCAgICJMaUxpRCpMaSIsICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEFuZDY0X2FjcSwgIkxMaUxMaUQqTExpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQW5kNjRfbmYsICAiTExpTExpRCpMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRBbmQ2NF9yZWwsICJMTGlMTGlEKkxMaSIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkSW5jcmVtZW50MTZfYWNxLCAic3NEKiIsICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRJbmNyZW1lbnQxNl9uZiwgICJzc0QqIiwgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEluY3JlbWVudDE2X3JlbCwgInNzRCoiLCAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkSW5jcmVtZW50X2FjcSwgICAiTGlMaUQqIiwgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRJbmNyZW1lbnRfbmYsICAgICJMaUxpRCoiLCAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEluY3JlbWVudF9yZWwsICAgIkxpTGlEKiIsICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkSW5jcmVtZW50NjRfYWNxLCAiTExpTExpRCoiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRJbmNyZW1lbnQ2NF9uZiwgICJMTGlMTGlEKiIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEluY3JlbWVudDY0X3JlbCwgIkxMaUxMaUQqIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCisKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWREZWNyZW1lbnQxNl9hY3EsICJzc0QqIiwgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZERlY3JlbWVudDE2X25mLCAgInNzRCoiLCAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRGVjcmVtZW50MTZfcmVsLCAic3NEKiIsICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWREZWNyZW1lbnRfYWNxLCAgICJMaUxpRCoiLCAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZERlY3JlbWVudF9uZiwgICAgIkxpTGlEKiIsICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRGVjcmVtZW50X3JlbCwgICAiTGlMaUQqIiwgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWREZWNyZW1lbnQ2NF9hY3EsICJMTGlMTGlEKiIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZERlY3JlbWVudDY0X25mLCAgIkxMaUxMaUQqIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRGVjcmVtZW50NjRfcmVsLCAiTExpTExpRCoiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKKwogVEFSR0VUX0hFQURFUl9CVUlMVElOKF9SZWFkV3JpdGVCYXJyaWVyLCAidiIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQogVEFSR0VUX0hFQURFUl9CVUlMVElOKF9fZ2V0UmVnLCAiVUxMaWkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfUmVhZFN0YXR1c1JlZywgICJMTGlpIiwgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9Xcml0ZVN0YXR1c1JlZywgInZpTExpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0FkZHJlc3NPZlJldHVybkFkZHJlc3MsICJ2KiIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQogCiAjdW5kZWYgQlVJTFRJTgogI3VuZGVmIExBTkdCVUlMVElOCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc0FNREdQVS5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc0FNREdQVS5kZWYKaW5kZXggMzVmM2E4OC4uMjA1OTJjNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNBTURHUFUuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zQU1ER1BVLmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT0tIEJ1aWx0aW5zQU1ER1BVLmRlZiAtIEFNREdQVSBCdWlsdGluIGZ1bmN0aW9uIGRhdGFiYXNlIC0tLS0tLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtOTksNiArOTgsOCBAQAogQlVJTFRJTihfX2J1aWx0aW5fYW1kZ2NuX2RzX2ZhZGRmLCAiZmYqM2ZJaUlpSWIiLCAibiIpCiBCVUlMVElOKF9fYnVpbHRpbl9hbWRnY25fZHNfZm1pbmYsICJmZiozZklpSWlJYiIsICJuIikKIEJVSUxUSU4oX19idWlsdGluX2FtZGdjbl9kc19mbWF4ZiwgImZmKjNmSWlJaUliIiwgIm4iKQorQlVJTFRJTihfX2J1aWx0aW5fYW1kZ2NuX2RzX2FwcGVuZCwgImlpKjMiLCAibiIpCitCVUlMVElOKF9fYnVpbHRpbl9hbWRnY25fZHNfY29uc3VtZSwgImlpKjMiLCAibiIpCiAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLyBDSSsgb25seSBidWlsdGlucy4KQEAgLTEwNyw2ICsxMDgsMTUgQEAKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9hbWRnY25fYnVmZmVyX3diaW52bDFfdm9sLCAidiIsICJuIiwgImNpLWluc3RzIikKIAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vIEludGVycG9sYXRpb24gYnVpbHRpbnMuCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworQlVJTFRJTihfX2J1aWx0aW5fYW1kZ2NuX2ludGVycF9wMV9mMTYsICJmZlVpVWliVWkiLCAibmMiKQorQlVJTFRJTihfX2J1aWx0aW5fYW1kZ2NuX2ludGVycF9wMl9mMTYsICJoZmZVaVVpYlVpIiwgIm5jIikKK0JVSUxUSU4oX19idWlsdGluX2FtZGdjbl9pbnRlcnBfcDEsICJmZlVpVWlVaSIsICJuYyIpCitCVUlMVElOKF9fYnVpbHRpbl9hbWRnY25faW50ZXJwX3AyLCAiZmZmVWlVaVVpIiwgIm5jIikKK0JVSUxUSU4oX19idWlsdGluX2FtZGdjbl9pbnRlcnBfbW92LCAiZlVpVWlVaVVpIiwgIm5jIikKKworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vIFZJKyBvbmx5IGJ1aWx0aW5zLgogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTIyLDYgKzEzMiw3IEBACiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fYW1kZ2NuX2NsYXNzaCwgImJoaSIsICJuYyIsICIxNi1iaXQtaW5zdHMiKQogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2FtZGdjbl9zX21lbXJlYWx0aW1lLCAiTFVpIiwgIm4iLCAicy1tZW1yZWFsdGltZSIpCiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fYW1kZ2NuX21vdl9kcHAsICJpaUlpSWlJaUliIiwgIm5jIiwgImRwcCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fYW1kZ2NuX3VwZGF0ZV9kcHAsICJpaWlJaUlpSWlJYiIsICJuYyIsICJkcHAiKQogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2FtZGdjbl9zX2RjYWNoZV93YiwgInYiLCAibiIsICJ2aS1pbnN0cyIpCiAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCkBAIC0xMzQsMTMgKzE0NSwxMyBAQAogLy8gRGVlcCBsZWFybmluZyBidWlsdGlucy4KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9hbWRnY25fZmRvdDIsICJmVjJoVjJoZkliIiwgIm5jIiwgImRsLWluc3RzIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9hbWRnY25fc2RvdDIsICJTaVYyU3NWMlNzU2lJYiIsICJuYyIsICJkbC1pbnN0cyIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fYW1kZ2NuX3Vkb3QyLCAiVWlWMlVzVjJVc1VpSWIiLCAibmMiLCAiZGwtaW5zdHMiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2FtZGdjbl9zZG90NCwgIlNpU2lTaVNpSWIiLCAibmMiLCAiZGwtaW5zdHMiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2FtZGdjbl91ZG90NCwgIlVpVWlVaVVpSWIiLCAibmMiLCAiZGwtaW5zdHMiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2FtZGdjbl9zZG90OCwgIlNpU2lTaVNpSWIiLCAibmMiLCAiZGwtaW5zdHMiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2FtZGdjbl91ZG90OCwgIlVpVWlVaVVpSWIiLCAibmMiLCAiZGwtaW5zdHMiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2FtZGdjbl9mZG90MiwgImZWMmhWMmhmSWIiLCAibmMiLCAiZG90Mi1pbnN0cyIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fYW1kZ2NuX3Nkb3QyLCAiU2lWMlNzVjJTc1NpSWIiLCAibmMiLCAiZG90Mi1pbnN0cyIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fYW1kZ2NuX3Vkb3QyLCAiVWlWMlVzVjJVc1VpSWIiLCAibmMiLCAiZG90Mi1pbnN0cyIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fYW1kZ2NuX3Nkb3Q0LCAiU2lTaVNpU2lJYiIsICJuYyIsICJkb3QxLWluc3RzIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9hbWRnY25fdWRvdDQsICJVaVVpVWlVaUliIiwgIm5jIiwgImRvdDItaW5zdHMiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2FtZGdjbl9zZG90OCwgIlNpU2lTaVNpSWIiLCAibmMiLCAiZG90MS1pbnN0cyIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fYW1kZ2NuX3Vkb3Q4LCAiVWlVaVVpVWlJYiIsICJuYyIsICJkb3QyLWluc3RzIikKIAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vIFNwZWNpYWwgYnVpbHRpbnMuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc0FSTS5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc0FSTS5kZWYKaW5kZXggOTQxZDMyMC4uMDAwNjA0NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNBUk0uZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zQVJNLmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEJ1aWx0aW5zQVJNLmRlZiAtIEFSTSBCdWlsdGluIGZ1bmN0aW9uIGRhdGFiYXNlIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yMzAsNiArMjI5LDEwNCBAQAogVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZE9yNjQsICAgICAgICAgICJMTGlMTGlEKkxMaSIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQogVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZFhvcjY0LCAgICAgICAgICJMTGlMTGlEKkxMaSIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQogCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2VBZGRfYWNxLCAiTGlMaUQqTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZF9yZWwsICJMaUxpRCpMaSIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkX25mLCAiTGlMaUQqTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDhfYWNxLCAiY2NEKmMiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDhfcmVsLCAiY2NEKmMiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDhfbmYsICJjY0QqYyIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkMTZfYWNxLCAic3NEKnMiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDE2X3JlbCwgInNzRCpzIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQxNl9uZiwgInNzRCpzIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2VBZGQ2NF9hY3EsICJMTGlMTGlEKkxMaSIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEV4Y2hhbmdlQWRkNjRfcmVsLCAiTExpTExpRCpMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZUFkZDY0X25mLCAiTExpTExpRCpMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKKworVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEV4Y2hhbmdlOF9hY3EsICAiY2NEKmMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZThfbmYsICAgImNjRCpjIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2U4X3JlbCwgICJjY0QqYyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEV4Y2hhbmdlMTZfYWNxLCAic3NEKnMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZTE2X25mLCAgInNzRCpzIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2UxNl9yZWwsICJzc0QqcyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEV4Y2hhbmdlX2FjcSwgICAiTGlMaUQqTGkiLCAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZV9uZiwgICAgIkxpTGlEKkxpIiwgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2VfcmVsLCAgICJMaUxpRCpMaSIsICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEV4Y2hhbmdlNjRfYWNxLCAiTExpTExpRCpMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRFeGNoYW5nZTY0X25mLCAgIkxMaUxMaUQqTExpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRXhjaGFuZ2U2NF9yZWwsICJMTGlMTGlEKkxMaSIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlOF9hY3EsICAiY2NEKmNjIiwgICAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2U4X25mLCAgICJjY0QqY2MiLCAgICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZThfcmVsLCAgImNjRCpjYyIsICAgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlMTZfYWNxLCAic3NEKnNzIiwgICAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UxNl9uZiwgICJzc0Qqc3MiLCAgICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZTE2X3JlbCwgInNzRCpzcyIsICAgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlX2FjcSwgICAiTGlMaUQqTGlMaSIsICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2VfbmYsICAgICJMaUxpRCpMaUxpIiwgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZV9yZWwsICAgIkxpTGlEKkxpTGkiLCAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQ29tcGFyZUV4Y2hhbmdlNjRfYWNxLCAiTExpTExpRCpMTGlMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2U2NF9uZiwgICJMTGlMTGlEKkxMaUxMaSIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZENvbXBhcmVFeGNoYW5nZTY0X3JlbCwgIkxMaUxMaUQqTExpTExpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCisKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRPcjhfYWNxLCAgImNjRCpjIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkT3I4X25mLCAgICJjY0QqYyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZE9yOF9yZWwsICAiY2NEKmMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRPcjE2X2FjcSwgInNzRCpzIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkT3IxNl9uZiwgICJzc0QqcyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZE9yMTZfcmVsLCAic3NEKnMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRPcl9hY3EsICAgIkxpTGlEKkxpIiwgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkT3JfbmYsICAgICJMaUxpRCpMaSIsICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZE9yX3JlbCwgICAiTGlMaUQqTGkiLCAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRPcjY0X2FjcSwgIkxMaUxMaUQqTExpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkT3I2NF9uZiwgICJMTGlMTGlEKkxMaSIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZE9yNjRfcmVsLCAiTExpTExpRCpMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKKworVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZFhvcjhfYWNxLCAgImNjRCpjIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkWG9yOF9uZiwgICAiY2NEKmMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRYb3I4X3JlbCwgICJjY0QqYyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZFhvcjE2X2FjcSwgInNzRCpzIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkWG9yMTZfbmYsICAic3NEKnMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRYb3IxNl9yZWwsICJzc0QqcyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZFhvcl9hY3EsICAgIkxpTGlEKkxpIiwgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkWG9yX25mLCAgICAiTGlMaUQqTGkiLCAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRYb3JfcmVsLCAgICJMaUxpRCpMaSIsICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZFhvcjY0X2FjcSwgIkxMaUxMaUQqTExpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkWG9yNjRfbmYsICAiTExpTExpRCpMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRYb3I2NF9yZWwsICJMTGlMTGlEKkxMaSIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQW5kOF9hY3EsICAiY2NEKmMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRBbmQ4X25mLCAgICJjY0QqYyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEFuZDhfcmVsLCAgImNjRCpjIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQW5kMTZfYWNxLCAic3NEKnMiLCAgICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRBbmQxNl9uZiwgICJzc0QqcyIsICAgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEFuZDE2X3JlbCwgInNzRCpzIiwgICAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQW5kX2FjcSwgICAiTGlMaUQqTGkiLCAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRBbmRfbmYsICAgICJMaUxpRCpMaSIsICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEFuZF9yZWwsICAgIkxpTGlEKkxpIiwgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkQW5kNjRfYWNxLCAiTExpTExpRCpMTGkiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRBbmQ2NF9uZiwgICJMTGlMTGlEKkxMaSIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEFuZDY0X3JlbCwgIkxMaUxMaUQqTExpIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCisKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRJbmNyZW1lbnQxNl9hY3EsICJzc0QqIiwgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEluY3JlbWVudDE2X25mLCAgInNzRCoiLCAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkSW5jcmVtZW50MTZfcmVsLCAic3NEKiIsICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRJbmNyZW1lbnRfYWNxLCAgICJMaUxpRCoiLCAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEluY3JlbWVudF9uZiwgICAgIkxpTGlEKiIsICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkSW5jcmVtZW50X3JlbCwgICAiTGlMaUQqIiwgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWRJbmNyZW1lbnQ2NF9hY3EsICJMTGlMTGlEKiIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZEluY3JlbWVudDY0X25mLCAgIkxMaUxMaUQqIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkSW5jcmVtZW50NjRfcmVsLCAiTExpTExpRCoiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKKworVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZERlY3JlbWVudDE2X2FjcSwgInNzRCoiLCAgICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRGVjcmVtZW50MTZfbmYsICAic3NEKiIsICAgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWREZWNyZW1lbnQxNl9yZWwsICJzc0QqIiwgICAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZERlY3JlbWVudF9hY3EsICAgIkxpTGlEKiIsICAgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRGVjcmVtZW50X25mLCAgICAiTGlMaUQqIiwgICAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWREZWNyZW1lbnRfcmVsLCAgICJMaUxpRCoiLCAgICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorVEFSR0VUX0hFQURFUl9CVUlMVElOKF9JbnRlcmxvY2tlZERlY3JlbWVudDY0X2FjcSwgIkxMaUxMaUQqIiwgIm5oIiwgImludHJpbi5oIiwgQUxMX01TX0xBTkdVQUdFUywgIiIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX0ludGVybG9ja2VkRGVjcmVtZW50NjRfbmYsICAiTExpTExpRCoiLCAibmgiLCAiaW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfSW50ZXJsb2NrZWREZWNyZW1lbnQ2NF9yZWwsICJMTGlMTGlEKiIsICJuaCIsICJpbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQorCiAjdW5kZWYgQlVJTFRJTgogI3VuZGVmIExBTkdCVUlMVElOCiAjdW5kZWYgVEFSR0VUX0hFQURFUl9CVUlMVElOCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc0hleGFnb24uZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNIZXhhZ29uLmRlZgppbmRleCBjMjA0YmYzLi4xODAyOWFmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc0hleGFnb24uZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zSGV4YWdvbi5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIEJ1aWx0aW5zSGV4YWdvbi5kZWYgLSBIZXhhZ29uIEJ1aWx0aW4gZnVuY3Rpb24gZGF0YWJhc2UgLS0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTYzLDg0NyArNjIsNiBAQAogQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9zdG9yZXJpX3BjciwgInZ2KmlpdkMqIiwgIiIpCiBCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3N0b3JlcmRfcGNyLCAidnYqaUxMaXZDKiIsICIiKQogCi0vLyBUaGUgYnVpbHRpbnMgYWJvdmUgYXJlIG5vdCBhdXRvZ2VuZXJhdGVkIGZyb20gaXNldC5weS4KLS8vIE1ha2Ugc3VyZSB5b3UgZG8gbm90IG92ZXJ3cml0ZSB0aGVzZS4KLQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBlcSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfY21wZ3QsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGd0dSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfY21wZXFwLCJpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfY21wZ3RwLCJpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfY21wZ3R1cCwiaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3JjbXBlcWksImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3JjbXBuZXFpLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9yY21wZXEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3JjbXBuZXEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2JpdHNzZXQsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2JpdHNjbHIsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0M0X25iaXRzc2V0LCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DNF9uYml0c2NsciwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfY21wZXFpLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBndGksImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGd0dWksImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGdlaSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfY21wZ2V1aSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfY21wbHQsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGx0dSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfYml0c2NscmksImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0M0X25iaXRzY2xyaSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzRfY21wbmVxaSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzRfY21wbHRlaSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzRfY21wbHRldWksImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0M0X2NtcG5lcSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzRfY21wbHRlLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DNF9jbXBsdGV1LCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9hbmQsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX29yLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl94b3IsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2FuZG4sImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX25vdCwiaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9vcm4sImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0M0X2FuZF9hbmQsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DNF9hbmRfb3IsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DNF9vcl9hbmQsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DNF9vcl9vciwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0M0X2FuZF9hbmRuLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzRfYW5kX29ybiwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0M0X29yX2FuZG4sImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DNF9vcl9vcm4sImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9weGZlcl9tYXAsImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfYW55OCwiaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9hbGw4LCJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX3ZpdHBhY2ssImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX211eCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX211eGlpLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfbXV4aXIsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9tdXhyaSwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX3ZtdXgsIkxMaWlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9tYXNrLCJMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmNtcGJlcSwiaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBiZXFpLCJpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBiZXFfYW55LCJpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmNtcGJndHUsImlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wYmd0dWksImlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfdmNtcGJndCwiaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBiZ3RpLCJpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGJlcSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfY21wYmVxaSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfY21wYmd0dSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfY21wYmd0dWksImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGJndCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfY21wYmd0aSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmNtcGhlcSwiaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZjbXBoZ3QsImlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y21waGd0dSwiaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBoZXFpLCJpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBoZ3RpLCJpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBoZ3R1aSwiaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBoZXEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGhndCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfY21waGd0dSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfY21waGVxaSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfY21waGd0aSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfY21waGd0dWksImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZjbXB3ZXEsImlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y21wd2d0LCJpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmNtcHdndHUsImlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wd2VxaSwiaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wd2d0aSwiaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wd2d0dWksImlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfYm91bmRzY2hlY2ssImlpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfdGxibWF0Y2gsImlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfdGZycHIsImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfdGZycnAsImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzRfZmFzdGNvcm5lcjksImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0M0X2Zhc3Rjb3JuZXI5X25vdCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19oaF9zMCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfaGhfczEsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX2hsX3MwLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19obF9zMSwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfbGhfczAsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX2xoX3MxLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19sbF9zMCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfbGxfczEsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX2hoX3MwLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19oaF9zMSwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfaGxfczAsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX2hsX3MxLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19saF9zMCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfbGhfczEsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX2xsX3MwLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19sbF9zMSwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2hoX3MwLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfaGhfczEsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX3NhdF9obF9zMCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2hsX3MxLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfbGhfczAsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX3NhdF9saF9zMSwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2xsX3MwLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfbGxfczEsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX3NhdF9oaF9zMCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2hoX3MxLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfaGxfczAsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX3NhdF9obF9zMSwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2xoX3MwLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfbGhfczEsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX3NhdF9sbF9zMCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2xsX3MxLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2hoX3MwLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfaGhfczEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9obF9zMCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2hsX3MxLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbGhfczAsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9saF9zMSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2xsX3MwLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbGxfczEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfaGhfczAsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfaGhfczEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfaGxfczAsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfaGxfczEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfbGhfczAsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfbGhfczEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfbGxfczAsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfbGxfczEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfaGhfczAsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfaGhfczEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfaGxfczAsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfaGxfczEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfbGhfczAsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfbGhfczEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfbGxfczAsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfbGxfczEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2hoX3MwLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9oaF9zMSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9ybmRfaGxfczAsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2hsX3MxLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9saF9zMCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9ybmRfbGhfczEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2xsX3MwLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9sbF9zMSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfaGhfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfaGhfczEsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfaGxfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfaGxfczEsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfbGhfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfbGhfczEsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfbGxfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfbGxfczEsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfaGhfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfaGhfczEsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfaGxfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfaGxfczEsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfbGhfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfbGhfczEsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfbGxfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfbGxfczEsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9oaF9zMCwiTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2hoX3MxLCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfaGxfczAsIkxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9obF9zMSwiTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2xoX3MwLCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfbGhfczEsIkxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9sbF9zMCwiTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2xsX3MxLCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfcm5kX2hoX3MwLCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfcm5kX2hoX3MxLCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfcm5kX2hsX3MwLCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfcm5kX2hsX3MxLCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfcm5kX2xoX3MwLCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfcm5kX2xoX3MxLCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfcm5kX2xsX3MwLCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfcm5kX2xsX3MxLCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfYWNjX2hoX3MwLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfaGhfczEsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2FjY19obF9zMCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfYWNjX2hsX3MxLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfbGhfczAsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2FjY19saF9zMSwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfYWNjX2xsX3MwLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfbGxfczEsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19oaF9zMCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbmFjX2hoX3MxLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9uYWNfaGxfczAsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19obF9zMSwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbmFjX2xoX3MwLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9uYWNfbGhfczEsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19sbF9zMCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbmFjX2xsX3MxLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9oaF9zMCwiVWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfaGhfczEsIlVpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2hsX3MwLCJVaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9obF9zMSwiVWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbGhfczAsIlVpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2xoX3MxLCJVaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9sbF9zMCwiVWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbGxfczEsIlVpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9hY2NfaGhfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2hoX3MxLCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2FjY19obF9zMCwiTExpTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9hY2NfaGxfczEsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2xoX3MwLCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2FjY19saF9zMSwiTExpTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9hY2NfbGxfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2xsX3MxLCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19oaF9zMCwiTExpTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9uYWNfaGhfczEsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbmFjX2hsX3MwLCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19obF9zMSwiTExpTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9uYWNfbGhfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbmFjX2xoX3MxLCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19sbF9zMCwiTExpTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9uYWNfbGxfczEsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfaGhfczAsIlVMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2hoX3MxLCJVTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9obF9zMCwiVUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfaGxfczEsIlVMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2xoX3MwLCJVTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9saF9zMSwiVUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbGxfczAsIlVMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2xsX3MxLCJVTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlzbWksImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21hY3NpcCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21hY3NpbiwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2RwbXB5c3NfczAsIkxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHlzc19hY2NfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHlzc19uYWNfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHl1dV9zMCwiVUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHl1dV9hY2NfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHl1dV9uYWNfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3VwLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfdXBfczEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV91cF9zMV9zYXQsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfdXAsIlVpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlzdV91cCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHlzc19ybmRfczAsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X21hY191cF9zMV9zYXQsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF9uYWNfdXBfczFfc2F0LCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5aSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWksImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21hY2ksImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9hY2NpLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfYWNjaWksImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9uYWNjaSwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX25hY2NpaSwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3N1YmFjYywiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X21weXJyX2FkZHIsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF9tcHlyaV9hZGRyX3UyLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfbXB5cmlfYWRkciwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X21weXJpX2FkZGksImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF9tcHlycl9hZGRpLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1weTJzX3MwLCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtcHkyc19zMSwiTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMnNfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJzX3MxLCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtcHkyc3VfczAsIkxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1weTJzdV9zMSwiTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMnN1X3MwLCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtYWMyc3VfczEsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1weTJzX3MwcGFjaywiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1weTJzX3MxcGFjaywiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzIsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1weTJlc19zMCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1weTJlc19zMSwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJlc19zMCwiTExpTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJlc19zMSwiTExpTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJlcywiTExpTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdnJtYWNfczAsIkxMaUxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZybXB5X3MwLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92ZG1weXJzX3MwLCJpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdmRtcHlyc19zMSwiaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX001X3ZybXB5YnV1LCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNV92cm1hY2J1dSwiTExpTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTVfdnJtcHlic3UsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX001X3ZybWFjYnN1LCJMTGlMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNV92bXB5YnV1LCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX001X3ZtcHlic3UsIkxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTVfdm1hY2J1dSwiTExpTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNV92bWFjYnN1LCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX001X3ZkbXB5YnN1LCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNV92ZG1hY2JzdSwiTExpTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdmRtYWNzX3MwLCJMTGlMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92ZG1hY3NfczEsIkxMaUxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZkbXB5c19zMCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdmRtcHlzX3MxLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5cnNfczAsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlyc19zMSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21weXJzY19zMCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21weXJzY19zMSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21hY3NfczAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21hY3NfczEsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21hY3NjX3MwLCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2NtYWNzY19zMSwiTExpTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5c19zMCwiTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5c19zMSwiTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5c2NfczAsIkxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21weXNjX3MxLCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2NuYWNzX3MwLCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2NuYWNzX3MxLCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2NuYWNzY19zMCwiTExpTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbmFjc2NfczEsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdnJjbXB5c19zMSwiTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21weXNfYWNjX3MxLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdnJjbXB5c19zMXJwLCJpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNsc19zMCwiTExpTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1hY2xzX3MxLCJMTGlMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjaHNfczAsIkxMaUxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNoc19zMSwiTExpTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1weWxfczAsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHlsX3MxLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5aF9zMCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1weWhfczEsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNsc19yczAsIkxMaUxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNsc19yczEsIkxMaUxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNoc19yczAsIkxMaUxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNoc19yczEsIkxMaUxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHlsX3JzMCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1weWxfcnMxLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5aF9yczAsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHloX3JzMSwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfdnJtcHllaF9zMCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfdnJtcHllaF9zMSwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfdnJtcHllaF9hY2NfczAsIkxMaUxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5ZWhfYWNjX3MxLCJMTGlMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF92cm1weW9oX3MwLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF92cm1weW9oX3MxLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF92cm1weW9oX2FjY19zMCwiTExpTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfdnJtcHlvaF9hY2NfczEsIkxMaUxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2htbXB5bF9yczEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2htbXB5aF9yczEsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2htbXB5bF9zMSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfaG1tcHloX3MxLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjdWxzX3MwLCJMTGlMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjdWxzX3MxLCJMTGlMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjdWhzX3MwLCJMTGlMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjdWhzX3MxLCJMTGlMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5dWxfczAsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHl1bF9zMSwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1weXVoX3MwLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5dWhfczEsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1bHNfcnMwLCJMTGlMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjdWxzX3JzMSwiTExpTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1hY3Voc19yczAsIkxMaUxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1aHNfcnMxLCJMTGlMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5dWxfcnMwLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5dWxfcnMxLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5dWhfcnMwLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5dWhfcnMxLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtYWNpX3MwLCJMTGlMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtYWNyX3MwLCJMTGlMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtYWNpX3MwYywiTExpTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdnJjbWFjcl9zMGMsIkxMaUxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2NtYWNpX3MwLCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2NtYWNyX3MwLCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21weWlfczAsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21weXJfczAsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21weWlfczBjLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtcHlyX3MwYywiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21weWlfczAsIkxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21weXJfczAsIkxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfY21weWlfd2gsImlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfY21weXJfd2gsImlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfY21weWlfd2hjLCJpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X2NtcHlyX3doYywiaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92Y21weV9zMF9zYXRfaSwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdmNtcHlfczBfc2F0X3IsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbXB5X3MxX3NhdF9pLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92Y21weV9zMV9zYXRfciwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdmNtYWNfczBfc2F0X2ksIkxMaUxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbWFjX3MwX3NhdF9yLCJMTGlMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl92Y3JvdGF0ZSwiTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X3ZyY3JvdGF0ZV9hY2MsIkxMaUxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfdnJjcm90YXRlLCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZjbmVnaCwiTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZyY25lZ2gsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF9wbXB5dywiTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF92cG1weWgsIkxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfcG1weXdfYWNjLCJMTGlMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X3ZwbXB5aF9hY2MsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWIsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZHNhdCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3Vic2F0LCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRpLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2wxNl9sbCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9sMTZfaGwsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfbDE2X3NhdF9sbCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9sMTZfc2F0X2hsLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2wxNl9sbCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9sMTZfaGwsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YmhfbDE2X3NhdF9sbCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9sMTZfc2F0X2hsLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9sbCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9oMTZfbGgsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfaDE2X2hsLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9oaCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9oMTZfc2F0X2xsLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9zYXRfbGgsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfaDE2X3NhdF9obCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9oMTZfc2F0X2hoLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9sbCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfbGgsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YmhfaDE2X2hsLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9oaCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfc2F0X2xsLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9zYXRfbGgsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YmhfaDE2X3NhdF9obCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfc2F0X2hoLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hc2xoLCJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2FzcmgsImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkcCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkcHNhdCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkc3AsIkxMaWlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJwLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9uZWcsImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfbmVnc2F0LCJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2FicywiaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hYnNzYXQsImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmNvbmosIkxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX25lZ3AsIkxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2Fic3AsIkxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX21heCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfbWF4dSwiVWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX21pbiwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfbWludSwiVWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX21heHAsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX21heHVwLCJVTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfbWlucCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfbWludXAsIlVMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl90ZnIsImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdGZyc2ksImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdGZycCwiTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdGZycGksIkxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl96eHRiLCJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N4dGIsImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfenh0aCwiaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zeHRoLCJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2NvbWJpbmV3LCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X2NvbWJpbmVyaSwiTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9jb21iaW5laXIsIkxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfY29tYmluZWlpLCJMTGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2NvbWJpbmVfaGgsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2NvbWJpbmVfaGwsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2NvbWJpbmVfbGgsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2NvbWJpbmVfbGwsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3RmcmlsLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl90ZnJpaCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYW5kLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9vciwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfeG9yLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9ub3QsImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfeG9yX3hhY2MsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF94b3JfeGFjYywiTExpTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfYW5kbiwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfb3JuLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9hbmRucCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfb3JucCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfYWRkYWRkaSwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X3N1YmFkZGksImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF9hbmRfYW5kLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfYW5kX2FuZG4sImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF9hbmRfb3IsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF9hbmRfeG9yLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfb3JfYW5kLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfb3JfYW5kbiwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X29yX29yLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfb3JfeG9yLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfb3JfYW5kaXgsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9vcl9hbmRpLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfb3Jfb3JpLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfeG9yX2FuZCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X3hvcl9vciwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X3hvcl9hbmRuLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3VicmksImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2FuZGlyLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9vcmlyLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hbmRwLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9vcnAsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3hvcnAsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX25vdHAsIkxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N4dHcsIkxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zYXQsImlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9yb3VuZHNhdCwiaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3NhdGgsImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc2F0dWgsImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc2F0dWIsImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc2F0YiwiaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92YWRkdWIsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGRiX21hcCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmFkZHVicywiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmFkZGgsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGRocywiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmFkZHVocywiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTVfdmFkZGh1YnMsImlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92YWRkdywiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmFkZHdzLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF92eGFkZHN1YncsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X3Z4c3ViYWRkdywiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfdnhhZGRzdWJoLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF92eHN1YmFkZGgsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X3Z4YWRkc3ViaHIsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X3Z4c3ViYWRkaHIsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N2YXZnaCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ZhdmdocywiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ZuYXZnaCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ZhZGRoLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdmFkZGhzLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdmFkZHVocywiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ZzdWJoLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdnN1YmhzLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdnN1YnVocywiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdnJhZGR1YiwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdnJhZGR1Yl9hY2MsIkxMaUxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyYWRkaCwiaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyYWRkdWgsImlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92c3VidWIsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZzdWJiX21hcCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdnN1YnVicywiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdnN1YmgsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZzdWJocywiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdnN1YnVocywiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdnN1YncsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZzdWJ3cywiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmFic2gsIkxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhYnNoc2F0LCJMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92YWJzdywiTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmFic3dzYXQsIkxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZhYnNkaWZmdywiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdmFic2RpZmZoLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92cnNhZHViLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92cnNhZHViX2FjYywiTExpTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmF2Z3ViLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZndWgsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhdmdoLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92bmF2Z2gsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd3LCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92bmF2Z3csIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd3ciwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm5hdmd3ciwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmF2Z3djciwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm5hdmd3Y3IsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhdmdoY3IsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZuYXZnaGNyLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZndXcsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd1d3IsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd1YnIsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd1aHIsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhdmdociwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm5hdmdociwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfcm91bmRfcmksImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3JvdW5kX3JyLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9yb3VuZF9yaV9zYXQsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3JvdW5kX3JyX3NhdCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfY3JvdW5kX3JpLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9jcm91bmRfcnIsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWluaCwiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWF4aCwiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWludWgsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF92cm1heHVoLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfdnJtaW53LCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfdnJtYXh3LCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfdnJtaW51dywiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWF4dXcsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWluYiwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm1heGIsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtaW51YiwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm1heHViLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWluaCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm1heGgsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtaW51aCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm1heHVoLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWludywiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm1heHcsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtaW51dywiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm1heHV3LCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9tb2R3cmFwdSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfc2ZhZGQsImZmZiIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3Nmc3ViLCJmZmYiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZm1weSwiZmZmIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfc2ZmbWEsImZmZmYiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZtYV9zYywiZmZmZmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZtcywiZmZmZiIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmZm1hX2xpYiwiZmZmZiIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmZm1zX2xpYiwiZmZmZiIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmY21wZXEsImlmZiIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmY21wZ3QsImlmZiIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmY21wZ2UsImlmZiIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmY21wdW8sImlmZiIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmbWF4LCJmZmYiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZm1pbiwiZmZmIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfc2ZjbGFzcywiaWZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfc2ZpbW1fcCwiZmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmltbV9uLCJmaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmZml4dXBuLCJmZmYiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZpeHVwZCwiZmZmIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfc2ZmaXh1cHIsImZmIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfZGZjbXBlcSwiaWRkIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfZGZjbXBndCwiaWRkIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfZGZjbXBnZSwiaWRkIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfZGZjbXB1bywiaWRkIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfZGZjbGFzcywiaWRpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfZGZpbW1fcCwiZGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9kZmltbV9uLCJkaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YyZGYsImRmIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfY29udl9kZjJzZiwiZmQiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3V3MnNmLCJmaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfdXcyZGYsImRpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfY29udl93MnNmLCJmaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfdzJkZiwiZGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3VkMnNmLCJmTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfY29udl91ZDJkZiwiZExMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZDJzZiwiZkxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZDJkZiwiZExMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YydXcsImlmIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfY29udl9zZjJ3LCJpZiIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YydWQsIkxMaWYiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3NmMmQsIkxMaWYiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMnV3LCJpZCIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYydywiaWQiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMnVkLCJMTGlkIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfY29udl9kZjJkLCJMTGlkIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfY29udl9zZjJ1d19jaG9wLCJpZiIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2Yyd19jaG9wLCJpZiIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YydWRfY2hvcCwiTExpZiIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YyZF9jaG9wLCJMTGlmIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfY29udl9kZjJ1d19jaG9wLCJpZCIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYyd19jaG9wLCJpZCIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYydWRfY2hvcCwiTExpZCIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYyZF9jaG9wLCJMTGlkIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3JfciwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3JfciwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3JfciwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3JfciwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3JfcCwiTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3AsIkxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9wLCJMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3JfcCwiTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3JfYWNjLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3Jfcl9hY2MsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9yX2FjYywiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3JfYWNjLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3JfcF9hY2MsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9wX2FjYywiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3BfYWNjLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3JfcF9hY2MsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9yX25hYywiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3JfbmFjLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3Jfcl9uYWMsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9yX25hYywiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3BfbmFjLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3JfcF9uYWMsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9wX25hYywiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3BfbmFjLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3Jfcl9hbmQsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9yX2FuZCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3JfYW5kLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3Jfcl9hbmQsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9yX29yLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3Jfcl9vciwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3Jfb3IsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9yX29yLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3JfcF9hbmQsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9wX2FuZCwiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3BfYW5kLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3JfcF9hbmQsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9wX29yLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3JfcF9vciwiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3Bfb3IsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9wX29yLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3JfcF94b3IsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9wX3hvciwiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3BfeG9yLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3JfcF94b3IsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9yX3NhdCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3Jfcl9zYXQsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3IsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3IsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3IsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3AsIkxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9wLCJMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcCwiTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3JfYWNjLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl9hY2MsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yX2FjYywiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3BfYWNjLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcF9hY2MsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9wX2FjYywiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3JfbmFjLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl9uYWMsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yX25hYywiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3BfbmFjLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcF9uYWMsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9wX25hYywiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3JfeGFjYywiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3JfeGFjYywiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3BfeGFjYywiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3BfeGFjYywiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3JfYW5kLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl9hbmQsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yX2FuZCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3Jfb3IsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9yX29yLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcl9vciwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3BfYW5kLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcF9hbmQsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9wX2FuZCwiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3Bfb3IsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9wX29yLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcF9vciwiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3Jfc2F0LCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9yX3JuZCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcl9ybmRfZ29vZHN5bnRheCwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcF9ybmQsIkxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX3JuZF9nb29kc3ludGF4LCJMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfbHNsaSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYWRkYXNsX3JycmksImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9hbmRpX2FzbF9yaSwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X29yaV9hc2xfcmksImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9hZGRpX2FzbF9yaSwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X3N1YmlfYXNsX3JpLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfYW5kaV9sc3JfcmksImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9vcmlfbHNyX3JpLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfYWRkaV9sc3JfcmksImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9zdWJpX2xzcl9yaSwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZhbGlnbmliLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdmFsaWducmIsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl92c3BsaWNlaWIsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl92c3BsaWNlcmIsIkxMaUxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl92c3BsYXRyaCwiTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzcGxhdHJiLCJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2luc2VydCwiaWlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl90YWJsZWlkeGJfZ29vZHN5bnRheCwiaWlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl90YWJsZWlkeGhfZ29vZHN5bnRheCwiaWlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl90YWJsZWlkeHdfZ29vZHN5bnRheCwiaWlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl90YWJsZWlkeGRfZ29vZHN5bnRheCwiaWlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9iaXRzcGxpdGksIkxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfYml0c3BsaXQsIkxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfZXh0cmFjdCwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2V4dHJhY3R1LCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfaW5zZXJ0cCwiTExpTExpTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9leHRyYWN0cCwiTExpTExpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9leHRyYWN0dXAsIkxMaUxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfaW5zZXJ0X3JwLCJpaWlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9leHRyYWN0X3JwLCJpaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2V4dHJhY3R1X3JwLCJpaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2luc2VydHBfcnAsIkxMaUxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X2V4dHJhY3RwX3JwLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9leHRyYWN0dXBfcnAsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3RzdGJpdF9pLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9udHN0Yml0X2ksImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3NldGJpdF9pLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl90b2dnbGViaXRfaSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfY2xyYml0X2ksImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3RzdGJpdF9yLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9udHN0Yml0X3IsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3NldGJpdF9yLCJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl90b2dnbGViaXRfciwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfY2xyYml0X3IsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3ZoLCJMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfdmgsIkxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV92aCwiTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3ZoLCJMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzVfYXNyaHViX3JuZF9zYXRfZ29vZHN5bnRheCwiaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNV9hc3JodWJfc2F0LCJpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M1X3Zhc3Jocm5kX2dvb2RzeW50YXgsIkxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl92aCwiTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3ZoLCJMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3JfdmgsIkxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV92dywiTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3N2d190cnVuLCJpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3N2d190cnVuLCJpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3Z3LCJMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfdncsIkxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl92dywiTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3Z3LCJMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3JfdncsIkxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl92dywiTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZybmRwYWNrd2gsImlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl92cm5kcGFja3docywiaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzeHRiaCwiTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3Z6eHRiaCwiTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXRodWIsImlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9zdnNhdGh1YiwiaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9zdnNhdGhiLCJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXRoYiwiaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3Z0cnVub2hiLCJpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdnRydW5ld2gsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3Z0cnVub3doLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl92dHJ1bmVoYiwiaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzeHRodywiTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3Z6eHRodywiTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXR3aCwiaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXR3dWgsImlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9wYWNraGwsIkxMaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3dpeiwiaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl92c2F0aHViX25vcGFjaywiTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdnNhdGhiX25vcGFjaywiTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdnNhdHdoX25vcGFjaywiTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdnNhdHd1aF9ub3BhY2ssIkxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3NodWZmb2IsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3NodWZmZWIsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3NodWZmb2gsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3NodWZmZWgsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M1X3BvcGNvdW50cCwiaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X3Bhcml0eSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfcGFyaXR5cCwiaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xmc3AsIkxMaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsYm5vcm0sImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfY2xiYWRkaSwiaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfY2xicG5vcm0sImlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9jbGJwYWRkaSwiaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9jbGIsImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfY2wwLCJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsMSwiaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9jbGJwLCJpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfY2wwcCwiaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsMXAsImlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9icmV2LCJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2JyZXZwLCJMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9jdDAsImlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfY3QxLCJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2N0MHAsImlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9jdDFwLCJpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfaW50ZXJsZWF2ZSwiTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfZGVpbnRlcmxlYXZlLCJMTGlMTGkiLCIiKQogQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9wcmVmZXRjaCwidnYqIiwiIikKIEJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fWTJfZGNjbGVhbmEsInZ2KiIsIiIpCiBCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1kyX2RjY2xlYW5pbnZhLCJ2dioiLCIiKQpAQCAtOTEyLDYxNyArNzAsNiBAQAogQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9ZNF9sMmZldGNoLCJ2dipVaSIsIiIpCiBCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1k1X2wyZmV0Y2gsInZ2KkxMVWkiLCIiKQogCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3IsImlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3AsIkxMaUxMaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9yX2FjYywiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3BfYWNjLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcl9uYWMsImlpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9wX25hYywiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3JfeGFjYywiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3BfeGFjYywiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3JfYW5kLCJpaWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcl9vciwiaWlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3BfYW5kLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcF9vciwiTExpTExpTExpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2NhYmFjZW5jYmluLCJMTGlMTGlMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFsaWduYiwiVjE2aVYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbGlnbmJfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsYWxpZ25iLCJWMTZpVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmxhbGlnbmJfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbGlnbmJpLCJWMTZpVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFsaWduYmlfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsYWxpZ25iaSwiVjE2aVYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsYWxpZ25iaV8xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJvciwiVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJvcl8xMjhCLCJWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrdWIsIlYzMmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja3ViXzEyOEIsIlY2NGlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja2IsIlYzMmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja2JfMTI4QiwiVjY0aVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrdWgsIlYzMmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja3VoXzEyOEIsIlY2NGlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja2gsIlYzMmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja2hfMTI4QiwiVjY0aVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrb2IsIlYzMmlWMzJpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2tvYl8xMjhCLCJWNjRpVjY0aVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrb2gsIlYzMmlWMzJpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2tvaF8xMjhCLCJWNjRpVjY0aVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja2ViLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja2ViXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrZWgsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrZWhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2tvYiwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2tvYl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja29oLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja29oXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNraHViX3NhdCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2todWJfc2F0XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNraGJfc2F0LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja2hiX3NhdF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja3d1aF9zYXQsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrd3VoX3NhdF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja3doX3NhdCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2t3aF9zYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnpiLCJWMzJpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z6Yl8xMjhCLCJWNjRpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYiwiVjMyaVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2JfMTI4QiwiVjY0aVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92emgsIlYzMmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnpoXzEyOEIsIlY2NGlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNoLCJWMzJpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaF8xMjhCLCJWNjRpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5YnVzLCJWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1c18xMjhCLCJWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1c19hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1c19hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5YnVzX2R2LCJWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1c19kdl8xMjhCLCJWNjRpVjY0aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1c19kdl9hY2MsIlYzMmlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1c19kdl9hY2NfMTI4QiwiVjY0aVY2NGlWNjRpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGIsIlYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGJfMTI4QiwiVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloYl9hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhiX2FjY18xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloYl9kdiwiVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloYl9kdl8xMjhCLCJWNjRpVjY0aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhiX2R2X2FjYywiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGJfZHZfYWNjXzEyOEIsIlY2NGlWNjRpVjY0aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWh2c2F0LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWh2c2F0XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHZzYXRfYWNjLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHlodnNhdF9hY2NfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHNhdCwiVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc2F0XzEyOEIsIlYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHNhdF9hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzYXRfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhpc2F0LCJWMTZpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhpc2F0XzEyOEIsIlYzMmlWNjRpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGlzYXRfYWNjLCJWMTZpVjE2aVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloaXNhdF9hY2NfMTI4QiwiVjMyaVYzMmlWNjRpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHN1c2F0LCJWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzdXNhdF8xMjhCLCJWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzdXNhdF9hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzdXNhdF9hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHN1aXNhdCwiVjE2aVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc3Vpc2F0XzEyOEIsIlYzMmlWNjRpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHN1aXNhdF9hY2MsIlYxNmlWMTZpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzdWlzYXRfYWNjXzEyOEIsIlYzMmlWMzJpVjY0aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWIsIlYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5Yl8xMjhCLCJWNjRpVjY0aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWJfYWNjLCJWMzJpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHliX2FjY18xMjhCLCJWNjRpVjY0aVY2NGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHlidXMsIlYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5YnVzXzEyOEIsIlY2NGlWNjRpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5YnVzX2FjYywiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5YnVzX2FjY18xMjhCLCJWNjRpVjY0aVY2NGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHloYiwiVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHloYl8xMjhCLCJWNjRpVjY0aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWhiX2FjYywiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5aGJfYWNjXzEyOEIsIlY2NGlWNjRpVjY0aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViLCJWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViXzEyOEIsIlYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJfYWNjLCJWMTZpVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1Yl9hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJ2LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXVidl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXVidl9hY2MsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXVidl9hY2NfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnYsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnZfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidl9hY2MsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ2X2FjY18xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1YmksIlYzMmlWMzJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViaV8xMjhCLCJWNjRpVjY0aWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1YmlfYWNjLCJWMzJpVjMyaVYzMmlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJpX2FjY18xMjhCLCJWNjRpVjY0aVY2NGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnVzLCJWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c18xMjhCLCJWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c19hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c19hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnVzaSwiVjMyaVYzMmlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnVzaV8xMjhCLCJWNjRpVjY0aWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXNpX2FjYywiVjMyaVYzMmlWMzJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c2lfYWNjXzEyOEIsIlY2NGlWNjRpVjY0aWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXN2LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c3ZfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXN2X2FjYywiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnVzdl9hY2NfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zkc2FkdWgsIlYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zkc2FkdWhfMTI4QiwiVjY0aVY2NGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRzYWR1aF9hY2MsIlYzMmlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZHNhZHVoX2FjY18xMjhCLCJWNjRpVjY0aVY2NGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJzYWR1YmksIlYzMmlWMzJpaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cnNhZHViaV8xMjhCLCJWNjRpVjY0aWlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJzYWR1YmlfYWNjLCJWMzJpVjMyaVYzMmlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyc2FkdWJpX2FjY18xMjhCLCJWNjRpVjY0aVY2NGlpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3LCJWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd18xMjhCLCJWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsdywiVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzbHdfMTI4QiwiVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmxzcncsIlYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3J3XzEyOEIsIlYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3diwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnd2XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2x3diwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzbHd2XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3J3diwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmxzcnd2XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JoLCJWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaF8xMjhCLCJWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsaCwiVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzbGhfMTI4QiwiVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmxzcmgsIlYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3JoXzEyOEIsIlYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JodiwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmh2XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2xodiwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzbGh2XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3JodiwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmxzcmh2XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3aCwiVjE2aVYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3aF8xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcndoc2F0LCJWMTZpVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcndoc2F0XzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd2hybmRzYXQsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd2hybmRzYXRfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3dWhzYXQsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd3Voc2F0XzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR3aCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kd2hfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kd3VoLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR3dWhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmh1YnNhdCwiVjE2aVYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JodWJzYXRfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JodWJybmRzYXQsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaHVicm5kc2F0XzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaGJybmRzYXQsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaGJybmRzYXRfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3VuZGhiLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmRoYl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmRodWIsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3VuZGh1Yl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsd19hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsd19hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3X2FjYywiVjE2aVYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3X2FjY18xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGIsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRiXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJiLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkYl9kdiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJfZHYsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJiX2R2XzEyOEIsIlY2NGlWNjRpVjY0aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRoLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGhfZHYsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRoX2R2XzEyOEIsIlY2NGlWNjRpVjY0aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJoX2R2LCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaF9kdl8xMjhCLCJWNjRpVjY0aVY2NGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdywiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YncsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ3XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3X2R2LCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkd19kdl8xMjhCLCJWNjRpVjY0aVY2NGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3Vid19kdiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVic2F0LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJzYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVic2F0X2R2LCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJzYXRfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVic2F0LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJzYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVic2F0X2R2LCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJzYXRfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVoc2F0LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWhzYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVoc2F0X2R2LCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWhzYXRfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVoc2F0LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWhzYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVoc2F0X2R2LCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWhzYXRfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGhzYXQsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRoc2F0XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRoc2F0X2R2LCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHNhdF9kdl8xMjhCLCJWNjRpVjY0aVY2NGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaHNhdCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhzYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhzYXRfZHYsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJoc2F0X2R2XzEyOEIsIlY2NGlWNjRpVjY0aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3c2F0LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkd3NhdF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkd3NhdF9kdiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdzYXRfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndzYXQsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ3c2F0XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ3c2F0X2R2LCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3Vid3NhdF9kdl8xMjhCLCJWNjRpVjY0aVY2NGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndWIsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1Yl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndWJybmQsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1YnJuZF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndWgsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1aF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndWhybmQsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1aHJuZF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnaCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z2hfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z2hybmQsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmdocm5kXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZuYXZnaCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm5hdmdoXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd3LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnd18xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnd3JuZCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3dybmRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm5hdmd3LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bmF2Z3dfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic2RpZmZ1YiwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic2RpZmZ1Yl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZnVoLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZnVoXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNkaWZmaCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic2RpZmZoXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNkaWZmdywiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic2RpZmZ3XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZuYXZndWIsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZuYXZndWJfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHViaCwiVjMyaVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHViaF8xMjhCLCJWNjRpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJoLCJWMzJpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJoXzEyOEIsIlY2NGlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRodywiVjMyaVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGh3XzEyOEIsIlY2NGlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJodywiVjMyaVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1Ymh3XzEyOEIsIlY2NGlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1aHcsIlYzMmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1aHdfMTI4QiwiVjY0aVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVodywiVjMyaVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVod18xMjhCLCJWNjRpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZDAsIlYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZDBfMTI4QiwiVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRicSwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRicV8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJxLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJxXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkYm5xLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJucV8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJucSwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJibnFfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRocSwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRocV8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhxLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhxXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaG5xLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGhucV8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhucSwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJobnFfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3cSwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3cV8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndxLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndxXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkd25xLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHducV8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnducSwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ3bnFfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNoLCJWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNoXzEyOEIsIlYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic2hfc2F0LCJWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNoX3NhdF8xMjhCLCJWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnN3LCJWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnN3XzEyOEIsIlYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic3dfc2F0LCJWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnN3X3NhdF8xMjhCLCJWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidiwiVjMyaVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ2XzEyOEIsIlY2NGlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidl9hY2MsIlYzMmlWMzJpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnZfYWNjXzEyOEIsIlY2NGlWNjRpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWJ2LCJWMzJpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWJ2XzEyOEIsIlY2NGlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1YnZfYWNjLCJWMzJpVjMyaVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVidl9hY2NfMTI4QiwiVjY0aVY2NGlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidXN2LCJWMzJpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzdl8xMjhCLCJWNjRpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzdl9hY2MsIlYzMmlWMzJpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzdl9hY2NfMTI4QiwiVjY0aVY2NGlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXN2LCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnVzdl8xMjhCLCJWNjRpVjY0aVY2NGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnV1diwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1dXZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh2LCJWMzJpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHZfMTI4QiwiVjY0aVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh2X2FjYywiVjMyaVYzMmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlodl9hY2NfMTI4QiwiVjY0aVY2NGlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aHYsIlYzMmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aHZfMTI4QiwiVjY0aVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVodl9hY2MsIlYzMmlWMzJpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWh2X2FjY18xMjhCLCJWNjRpVjY0aVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh2c3JzLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHZzcnNfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh1cywiVjMyaVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh1c18xMjhCLCJWNjRpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHVzX2FjYywiVjMyaVYzMmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlodXNfYWNjXzEyOEIsIlY2NGlWNjRpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWgsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpaF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWhfYWNjLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWloX2FjY18xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWV3dWgsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlld3VoXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2gsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2hfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aF9ybmQsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2hfcm5kXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2hfc2FjYywiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2hfc2FjY18xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aF9ybmRfc2FjYywiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2hfcm5kX3NhY2NfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpZW9oLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWVvaF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWV3dWgsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpZXd1aF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aW93aCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWlvd2hfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWlld2hfYWNjLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWlld2hfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWV3dWhfYWNjLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWlld3VoX2FjY18xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weXViLCJWMzJpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWJfMTI4QiwiVjY0aVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weXViX2FjYywiVjMyaVYzMmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1Yl9hY2NfMTI4QiwiVjY0aVY2NGlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidXMsIlYzMmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidXNfMTI4QiwiVjY0aVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ1c19hY2MsIlYzMmlWMzJpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzX2FjY18xMjhCLCJWNjRpVjY0aVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1cywiVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1c18xMjhCLCJWNjRpVjY0aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnVzX2FjYywiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXNfYWNjXzEyOEIsIlY2NGlWNjRpVjY0aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhaGIsIlYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFoYl8xMjhCLCJWNjRpVjY0aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhaGJfYWNjLCJWMzJpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWhiX2FjY18xMjhCLCJWNjRpVjY0aVY2NGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWgsIlYzMmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHloXzEyOEIsIlY2NGlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHloc2F0X2FjYywiVjMyaVYzMmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHloc2F0X2FjY18xMjhCLCJWNjRpVjY0aVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhzcywiVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhzc18xMjhCLCJWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHNycywiVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhzcnNfMTI4QiwiVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVoLCJWMzJpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWhfMTI4QiwiVjY0aVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVoX2FjYywiVjMyaVYzMmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aF9hY2NfMTI4QiwiVjY0aVY2NGlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpaGIsIlYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpaGJfMTI4QiwiVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWloYl9hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWhiX2FjY18xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3YiwiVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3Yl8xMjhCLCJWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXdiX2FjYywiVjE2aVYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd2JfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXdoLCJWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXdoXzEyOEIsIlYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd2hfYWNjLCJWMTZpVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3aF9hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmQsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm9yLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92b3JfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnhvciwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnhvcl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bm90LCJWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zub3RfMTI4QiwiVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kcXJ0LCJWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kcXJ0XzEyOEIsIlYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmRxcnRfYWNjLCJWMTZpVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFuZHFydF9hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cnQsIlYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cnRfMTI4QiwiVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFuZHZydF9hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kdnJ0X2FjY18xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dywiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0d18xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R3X2FuZCwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHdfYW5kXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R3X29yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0d19vcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0d194b3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R3X3hvcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxdywiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxd18xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXF3X2FuZCwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcXdfYW5kXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXF3X29yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxd19vcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxd194b3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXF3X3hvcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0aCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0aF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RoX2FuZCwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGhfYW5kXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RoX29yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0aF9vcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0aF94b3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RoX3hvcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxaCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxaF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFoX2FuZCwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWhfYW5kXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFoX29yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxaF9vcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxaF94b3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFoX3hvcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0YiwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0Yl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RiX2FuZCwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGJfYW5kXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RiX29yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0Yl9vcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0Yl94b3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RiX3hvcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxYiwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxYl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFiX2FuZCwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWJfYW5kXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFiX29yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxYl9vcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxYl94b3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFiX3hvcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXcsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHV3XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHV3X2FuZCwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHV3X2FuZF8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXdfb3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1d19vcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXdfeG9yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXdfeG9yXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWhfYW5kLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWhfYW5kXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF9vciwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHVoX29yXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF94b3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF94b3JfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHViLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1Yl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1Yl9hbmQsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1Yl9hbmRfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHViX29yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWJfb3JfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHViX3hvciwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHViX3hvcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9vciwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9vcl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX2FuZCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9hbmRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9ub3QsIlYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9ub3RfMTI4QiwiVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX3hvciwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF94b3JfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9hbmRfbiwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9hbmRfbl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX29yX24sIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfb3Jfbl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX3NjYWxhcjIsIlYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9zY2FsYXIyXzEyOEIsIlYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm11eCwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtdXhfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zzd2FwLCJWMzJpVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN3YXBfMTI4QiwiVjY0aVYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXh1YiwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1heHViXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW51YiwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1pbnViXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXh1aCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1heHVoXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW51aCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1pbnVoXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXhoLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWF4aF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWluaCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1pbmhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1heHcsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXh3XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW53LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWlud18xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0aHViLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0aHViXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYXR3aCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNhdHdoXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZmViLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZlYl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZvYiwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZmb2JfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZlaCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZlaF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1Zm9oLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1Zm9oXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZnZkZCwiVjMyaVYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZnZkZF8xMjhCLCJWNjRpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRlYWx2ZGQsIlYzMmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVhbHZkZF8xMjhCLCJWNjRpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZvZWgsIlYzMmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmb2VoXzEyOEIsIlY2NGlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmb2ViLCJWMzJpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1Zm9lYl8xMjhCLCJWNjRpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVhbGgsIlYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRlYWxoXzEyOEIsIlYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRlYWxiLCJWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWFsYl8xMjhCLCJWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWFsYjR3LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVhbGI0d18xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZoLCJWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZmhfMTI4QiwiVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZiLCJWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZmJfMTI4QiwiVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9leHRyYWN0dywiaVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfZXh0cmFjdHdfMTI4QiwiaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmluc2VydHdyLCJWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92aW5zZXJ0d3JfMTI4QiwiVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbHZzcGxhdHcsIlYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbHZzcGxhdHdfMTI4QiwiVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNzaWduLCJWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3NpZ25fMTI4QiwiVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Y29tYmluZSwiVjMyaVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmNvbWJpbmVfMTI4QiwiVjY0aVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRlbHRhLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVsdGFfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJkZWx0YSwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJkZWx0YV8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Y2wwdywiVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Y2wwd18xMjhCLCJWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZjbDBoLCJWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZjbDBoXzEyOEIsIlYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm5vcm1hbXR3LCJWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zub3JtYW10d18xMjhCLCJWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zub3JtYW10aCwiVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bm9ybWFtdGhfMTI4QiwiVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cG9wY291bnRoLCJWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zwb3Bjb3VudGhfMTI4QiwiVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiLCJWMTZpVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ2Yl8xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ2Yl9vcmFjYywiVjE2aVYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiX29yYWNjXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aCwiVjMyaVYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2d2hfMTI4QiwiVjY0aVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2d2hfb3JhY2MsIlYzMmlWMzJpVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aF9vcmFjY18xMjhCLCJWNjRpVjY0aVYzMmlWMzJpaSIsIiIpCi0KLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfaGksIlYxNmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbG8sIlYxNmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfaGlfMTI4QiwiVjMyaVY2NGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sb18xMjhCLCJWMzJpVjY0aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3NpZ25wLCJWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3NpZ25wXzEyOEIsIlY2NGlWNjRpIiwiIikKLQogQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92UzMyYl9xcHJlZF9haSwidlYxNml2KlYxNmkiLCIiKQogQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92UzMyYl9ucXByZWRfYWksInZWMTZpdipWMTZpIiwiIikKIEJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdlMzMmJfbnRfcXByZWRfYWksInZWMTZpdipWMTZpIiwiIikKQEAgLTE1NDAsMTYwICs4Nyw2IEBACiBCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZW50cV8xMjhCLCJ2VjMyaXYqVjMyaSIsIiIpCiBCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZW50bnFfMTI4QiwidlYzMml2KlYzMmkiLCIiKQogCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX002X3ZhYnNkaWZmYiwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTZfdmFic2RpZmZ1YiwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTZfdm1pbnViX1JkUCwiTExpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzZfdnNwbGF0cmJwLCJMTGlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzZfdnRydW5laGJfcHBwLCJMTGlMTGlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNl92dHJ1bm9oYl9wcHAsIkxMaUxMaUxMaSIsIiIpCi0KLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmxzcmIsIlYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3JiXzEyOEIsIlYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3dWhybmRzYXQsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd3Vocm5kc2F0XzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNydXd1aHJuZHNhdCwiVjE2aVYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J1d3Vocm5kc2F0XzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaGJzYXQsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaGJzYXRfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3VuZHV3dWgsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3VuZHV3dWhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kdWh1YiwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kdWh1Yl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdXdzYXQsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1d3NhdF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdXdzYXRfZHYsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1d3NhdF9kdl8xMjhCLCJWNjRpVjY0aVY2NGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidXdzYXQsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1d3NhdF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidXdzYXRfZHYsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1d3NhdF9kdl8xMjhCLCJWNjRpVjY0aVY2NGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkYnNhdCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJzYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJzYXRfZHYsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRic2F0X2R2XzEyOEIsIlY2NGlWNjRpVjY0aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJic2F0LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYnNhdF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYnNhdF9kdiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJzYXRfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVidWJiX3NhdCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVidWJiX3NhdF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJ1YmJfc2F0LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJ1YmJfc2F0XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRod19hY2MsIlYzMmlWMzJpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHdfYWNjXzEyOEIsIlY2NGlWNjRpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWh3X2FjYywiVjMyaVYzMmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1aHdfYWNjXzEyOEIsIlY2NGlWNjRpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJoX2FjYywiVjMyaVYzMmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1YmhfYWNjXzEyOEIsIlY2NGlWNjRpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5ZXd1aF82NCwiVjMyaVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWV3dWhfNjRfMTI4QiwiVjY0aVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aF82NF9hY2MsIlYzMmlWMzJpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5b3doXzY0X2FjY18xMjhCLCJWNjRpVjY0aVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYXVoYiwiVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYXVoYl8xMjhCLCJWNjRpVjY0aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhdWhiX2FjYywiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGF1aGJfYWNjXzEyOEIsIlY2NGlWNjRpVjY0aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXd1YiwiVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3dWJfMTI4QiwiVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3dWJfYWNjLCJWMTZpVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3dWJfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kbnFydCwiVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFuZG5xcnRfMTI4QiwiVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFuZG5xcnRfYWNjLCJWMTZpVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFuZG5xcnRfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kdnF2LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kdnF2XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2bnF2LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kdm5xdl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX3NjYWxhcjJ2MiwiVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX3NjYWxhcjJ2Ml8xMjhCLCJWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3NodWZmZXF3LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9zaHVmZmVxd18xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9zaHVmZmVxaCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfc2h1ZmZlcWhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1heGIsIlYxNmlWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXhiXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW5iLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWluYl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0dXd1aCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNhdHV3dWhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbHZzcGxhdGgsIlYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbHZzcGxhdGhfMTI4QiwiVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sdnNwbGF0YiwiVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sdnNwbGF0Yl8xMjhCLCJWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRjbGJ3LCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkY2xid18xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkY2xiaCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGNsYmhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ2YmksIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiaV8xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ2Yl9vcmFjY2ksIlYxNmlWMTZpVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ2Yl9vcmFjY2lfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dndoaSwiVjMyaVYxNmlWMTZpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2d2hpXzEyOEIsIlY2NGlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dndoX29yYWNjaSwiVjMyaVYzMmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dndoX29yYWNjaV8xMjhCLCJWNjRpVjY0aVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2dmJfbm0sIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiX25tXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dndoX25tLCJWMzJpVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aF9ubV8xMjhCLCJWNjRpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGNhcnJ5LCJWMTZpVjE2aVYxNml2KiIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRjYXJyeV8xMjhCLCJWMzJpVjMyaVYzMml2KiIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJjYXJyeSwiVjE2aVYxNmlWMTZpdioiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViY2FycnlfMTI4QiwiVjMyaVYzMmlWMzJpdioiLCIiKQotCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E2X3ZjbXBiZXFfbm90YW55LCJpTExpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTZfdmNtcGJlcV9ub3RhbnlfMTI4QiwiaUxMaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJfcnR0LCJWMzJpVjE2aUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJfcnR0XzEyOEIsIlY2NGlWMzJpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1Yl9ydHRfYWNjLCJWMzJpVjMyaVYxNmlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViX3J0dF9hY2NfMTI4QiwiVjY0aVY2NGlWMzJpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidWJfcnR0LCJWMzJpVjE2aUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnViX3J0dF8xMjhCLCJWNjRpVjMyaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnViX3J0dF9hY2MsIlYzMmlWMzJpVjE2aUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnViX3J0dF9hY2NfMTI4QiwiVjY0aVY2NGlWMzJpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnV3dWhzYXQsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNydXd1aHNhdF8xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnVodWJzYXQsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNydWh1YnNhdF8xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnVodWJybmRzYXQsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNydWh1YnJuZHNhdF8xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzbGhfYWNjLCJWMTZpVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzbGhfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaF9hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaF9hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1dywiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3V3XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1d3JuZCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3V3cm5kXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhdmdiLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnYl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnYnJuZCwiVjE2aVYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z2JybmRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm5hdmdiLCJWMTZpVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bmF2Z2JfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic2IsIlYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic2JfMTI4QiwiVjMyaVYzMmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzYl9zYXQsIlYxNmlWMTZpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic2Jfc2F0XzEyOEIsIlYzMmlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1dSwiVjMyaVYzMmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1dV8xMjhCLCJWNjRpVjY0aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnV1X2FjYywiVjMyaVYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXVfYWNjXzEyOEIsIlY2NGlWNjRpVjY0aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aF9hY2MsIlYzMmlWMzJpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aF9hY2NfMTI4QiwiVjY0aVY2NGlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFoaHNhdCwiVjE2aVYxNmlWMTZpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWhoc2F0XzEyOEIsIlYzMmlWMzJpVjMyaUxMaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGF1aHVoc2F0LCJWMTZpVjE2aVYxNmlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhdWh1aHNhdF8xMjhCLCJWMzJpVjMyaVYzMmlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBzdWh1aHNhdCwiVjE2aVYxNmlWMTZpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wc3VodWhzYXRfMTI4QiwiVjMyaVYzMmlWMzJpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dDQsIlYxNmlWMTZpTExpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dDRfMTI4QiwiVjMyaVYzMmlMTGkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWhlLCJWMTZpVjE2aWkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWhlXzEyOEIsIlYzMmlWMzJpaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aGVfYWNjLCJWMTZpVjE2aVYxNmlpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVoZV9hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCiBCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtdywidnYqaWlWMTZpIiwiIikKIEJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmdhdGhlcm13XzEyOEIsInZ2KmlpVjMyaSIsIiIpCiBCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtaCwidnYqaWlWMTZpIiwiIikKQEAgLTE3MjQsMTUgKzExNywxNzAxIEBACiBCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWh3cV8xMjhCLCJ2VjMyaWlpVjY0aVYzMmkiLCIiKQogQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm1od19hZGQsInZpaVYzMmlWMTZpIiwiIikKIEJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtaHdfYWRkXzEyOEIsInZpaVY2NGlWMzJpIiwiIikKLUJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnByZWZpeHFiLCJWMTZpVjE2aSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwcmVmaXhxYl8xMjhCLCJWMzJpVjMyaSIsIiIpCi1CVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwcmVmaXhxaCwiVjE2aVYxNmkiLCIiKQotQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cHJlZml4cWhfMTI4QiwiVjMyaVYzMmkiLCIiKQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEF1dG8tZ2VuZXJhdGVkIGRlZmluaXRpb25zLgorCisvLyBWNSBTY2FsYXIgSW5zdHJ1Y3Rpb25zLgorCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3Bfb3IsIkxMaUxMaUxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl92c2F0d2gsImlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl90YWJsZWlkeGRfZ29vZHN5bnRheCwiaWlpVUlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5c3VfdXAsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2FjY19sbF9zMCwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9hY2NfbGxfczEsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21weXNjX3MxLCJMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlzY19zMCwiTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF9jbXB5aV93aGMsImlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9ybmRfbGhfczEsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2xoX3MwLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl90YWJsZWlkeGJfZ29vZHN5bnRheCwiaWlpVUlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfc2h1ZmZvaCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfc2ZtYXgsImZmZiIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhYnN3c2F0LCJMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9yLCJpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3AsIkxMaUxMaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X2NvbWJpbmVyaSwiTExpaUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfaGxfczEsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF92cG1weWhfYWNjLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbXB5X3MwX3NhdF9pLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9ub3RwLCJMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfaGxfczEsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9obF9zMCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzRfb3JfYW5kLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJzX3MwLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtYWMyc19zMSwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9icmV2cCwiTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfcG1weXdfYWNjLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsMSwiaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DNF9jbXBsdGUsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHl1bF9zMCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmFkZHdzLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9tYXh1cCwiVUxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBoZ3RpLCJpTExpSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9pbnRlcmxlYXZlLCJMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtcHlpX3MwLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hYnNzYXQsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmNtcHdndHUsImlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBndHUsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGd0cCwiaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGhndHVpLCJpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGd0aSwiaWlJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWksImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYydXdfY2hvcCwiaWQiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBoZXEsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9saF9zMSwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2xoX3MwLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9yX3hhY2MsImlpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZyY25lZ2gsIkxMaUxMaUxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9leHRyYWN0dXAsIkxMaUxMaVVJaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3Bfcm5kX2dvb2RzeW50YXgsIkxMaUxMaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X250c3RiaXRfciwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfY29udl93MnNmLCJmaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX25vdCwiaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl90ZnJwciwiaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbGxfczEsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9sbF9zMCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfY21wYmd0LCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9yX2FuZCwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3JjbXBuZXFpLCJpaUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcl9uYWMsImlpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3N1YmFjYywiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX29ycCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV91cCwiVWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2xoX3MxLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfdmgsIkxMaUxMaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3Z3LCJMTGlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBiZ3R1LCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wYmVxX2FueSwiaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGJndGksImlpSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2xoX3MxLCJMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3BfbmFjLCJMTGlMTGlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl9uYWMsImlpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZHNwLCJMTGlpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfdnhzdWJhZGR3LCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21waGVxaSwiaUxMaUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfdnhzdWJhZGRoLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF9wbXB5dywiTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl92c2F0aGIsImlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9wX2FuZCwiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfYWNjX2xoX3MxLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfbGhfczAsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9wX2FjYywiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3B4b3JmLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfY21wZ2VpLCJpaUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdnN1YnViLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9wLCJMTGlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yLCJpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWludXcsIkxMaUxMaUxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZtYSwiZmZmZiIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2Fic3AsIkxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2FsbDgsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfdnJtaW51aCwiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmZm1hX2xpYiwiZmZmZiIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5b2hfczAsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5b2hfczEsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2JpdHNzZXQsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXNpcCwiaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlzaW4sImlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfYm91bmRzY2hlY2ssImlpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTVfdnJtcHlidXUsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0M0X2Zhc3Rjb3JuZXI5LCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtcHlzX3MxcnAsImlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfbmVnLCJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YnNhdCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3JfciwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3JfcCwiTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZuYXZnaCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfaGxfczAsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3VkMmRmLCJkTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm5hdmd3LCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yX2FjYywiaWlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfc3ViaV9sc3JfcmksImlVSWlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdnp4dGh3LCJMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfc2ZhZGQsImZmZiIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YiwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJzdV9zMCwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMnN1X3MxLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2RwbXB5c3NfczAsIkxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfaW5zZXJ0LCJpaWlVSWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9wYWNraGwsIkxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfdmNtcHdndGksImlMTGlJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd1d3IsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3JfYW5kLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ZzdWJocywiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9sMTZfaGwsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X2FuZF9hbmQsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2QyZGYsImRMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBndHVpLCJpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zjb25qLCJMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl92dywiTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3ZoLCJMTGlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9sMTZfaGwsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X3Z4c3ViYWRkaHIsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsYnAsImlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9kZWludGVybGVhdmUsIkxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2FueTgsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdG9nZ2xlYml0X3IsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3RvZ2dsZWJpdF9pLCJpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfdXcyc2YsImZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdnNhdGhiX25vcGFjaywiTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21hY3NfczAsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21hY3NfczEsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9oaF9zMCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9oaF9zMSwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1hY3Voc19zMSwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1hY3Voc19zMCwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfY2xyYml0X3IsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0M0X29yX2FuZG4sImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9yX25hYywiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3BfYWNjLCJMTGlMTGlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wd2d0dWksImlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF92cm1weW9oX2FjY19zMCwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfdnJtcHlvaF9hY2NfczEsIkxMaUxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWF4aCwiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZjbXBiZXEsImlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y21waGd0LCJpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm5hdmd3Y3IsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21hY3JfczBjLCJMTGlMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZnd2NyLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9wX3hhY2MsIkxMaUxMaUxMaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWF4dywiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZuYXZnaHIsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X2NtcHlpX3doLCJpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3RmcnNpLCJpSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9yX2FjYywiaWlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ZuYXZnaCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfciwiaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMiwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21waGd0dWksImlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdmF2Z2gsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5ZWhfYWNjX3MwLCJMTGlMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF92cm1weWVoX2FjY19zMSwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcCwiTExpTExpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfY29tYmluZV9obCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3VwLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9jb21iaW5lX2hoLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9uZWdzYXQsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9obF9zMCwiTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2hsX3MxLCJMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X2JpdHNwbGl0LCJMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhYnNoc2F0LCJMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1aSwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9sMTZfc2F0X2xsLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9yX2FuZCwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHl1bF9yczAsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3Jfcm5kX2dvb2RzeW50YXgsImlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3JfcF9uYWMsIkxMaUxMaUxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBsdCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21hY3JfczAsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfb3JfYW5kLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfbXB5cnJfYWRkaSwiaVVJaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfb3JfYW5kaSwiaWlpSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X2hsX3MwLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X2hsX3MxLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF9tcHlycl9hZGRyLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1hY2hzX3JzMCwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1hY2hzX3JzMSwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdnJjbXB5cl9zMGMsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2hsX3MwLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfbGxfczEsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfc2ZmaXh1cG4sImZmZiIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfYWNjX2xoX3MwLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfYWNjX2xoX3MxLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfaGhfczAsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfaGhfczEsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGR1aHMsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZzdWJ1aHMsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YmhfaDE2X2hsLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9oaCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfeG9ycCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfdGZycGNwLCJMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9saCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9oMTZfc2F0X2hsLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9sbCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9oMTZfc2F0X2hoLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl96eHRiLCJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3p4dGgsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm5hdmd3ciwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfb3JfeG9yLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2hoX3MwLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2FjY19oaF9zMSwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNV92bWFjYnN1LCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2RwbXB5dXVfYWNjX3MwLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfaGxfczAsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfaGxfczEsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmZm1zX2xpYiwiZmZmZiIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0M0X2NtcG5lcWksImlpSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF9hbmRfeG9yLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc2F0LCJpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfbGhfczEsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfbGhfczAsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkc2F0LCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdmF2Z2hzLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92cnNhZHViX2FjYywiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfYml0c2NscmksImlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfc2F0X2hoLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9zYXRfaGwsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1bHNfcnMwLCJMTGlMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjdWxzX3JzMSwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdnJhZGR1aCwiaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X2FkZHBfYywiTExpTExpTExpdioiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl94b3IsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3JfYWNjLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1weWhfcnMxLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5aF9yczAsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYydWRfY2hvcCwiTExpZCIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0M0X29yX29yLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfdnhhZGRzdWJociwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdnNhdGh1YiwiaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYyc2YsImZkIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfaG1tcHloX3JzMSwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfaG1tcHloX3MxLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZnd3IsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3RhYmxlaWR4aF9nb29kc3ludGF4LCJpaWlVSWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zeHRoLCJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N4dGIsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzRfb3Jfb3JuLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdnJjbWFjaV9zMGMsIkxMaUxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N4dHcsIkxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92YWJzZGlmZmgsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfbGhfczEsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX2xoX3MwLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfaG1tcHlsX3MxLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9jbDFwLCJpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdmFic2RpZmZ3LCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9hbmRucCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfdm11eCwiTExpaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3Bhcml0eXAsImlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9wX2FuZCwiTExpTExpTExpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcl9vciwiaWlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9uYWNfbGxfczAsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19sbF9zMSwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmY21wZXEsImlmZiIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGRiX21hcCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3Jfcl9uYWMsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y21waGVxLCJpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfY2xibm9ybSwiaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbmFjc2NfczEsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY25hY3NjX3MwLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X3N1YmFkZGksImlpSWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbmFjX2hsX3MxLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19obF9zMCwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNV92YXNyaHJuZF9nb29kc3ludGF4LCJMTGlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl90c3RiaXRfciwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfdnJjcm90YXRlLCJMTGlMTGlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1hY2hzX3MxLCJMTGlMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjaHNfczAsIkxMaUxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3RzdGJpdF9pLCJpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV91cF9zMSwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfZXh0cmFjdHVfcnAsImlpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1weXVoX3JzMCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfdncsIkxMaUxMaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfbGxfczAsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfbGxfczEsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X29yX29yLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9oaF9zMSwiVWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfaGhfczAsIlVpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9wX2FjYywiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbmFjX2xoX3MwLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9uYWNfbGhfczEsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X2xsX3MwLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X2xsX3MxLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3cyZGYsImRpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9sMTZfc2F0X2hsLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBlcWksImlpSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yX2FuZCwiaWlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdmNuZWdoLCJMTGlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfdmNtcHdlcWksImlMTGlJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZkbXB5cnNfczAsImlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92ZG1weXJzX3MxLCJpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfeG9yX3hhY2MsIkxMaUxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZkbXB5c19zMSwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdmRtcHlzX3MwLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZndWJyLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2hsX3MxLCJVaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9obF9zMCwiVWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3JfYWNjLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfY2wwcCwiaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZhbGlnbmliLCJMTGlMTGlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZpeHVwZCwiZmZmIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9ybmRfaGxfczEsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2hsX3MwLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbWFjc2NfczAsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21hY3NjX3MxLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2N0MSwiaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9jdDAsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHl1dV9uYWNfczAsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1weXVsX3JzMSwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfbnRzdGJpdF9pLCJpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmZml4dXByLCJmZiIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3BfeG9yLCJMTGlMTGlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2hsX3MwLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2FjY19obF9zMSwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y21waGd0dSwiaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2FuZG4sImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtcHkyc19zMHBhY2ssImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X2FkZGFkZGksImlpaUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfbGxfczAsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfaGxfczEsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9yY21wZXFpLCJpaUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfeG9yX2FuZCwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3BfYW5kLCJMTGlMTGlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5dWhfcnMxLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9yX29yLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfcm91bmRfcmksImlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfbWF4LCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9yb3VuZF9yciwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfY29tYmluZWlpLCJMTGlJaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X2NvbWJpbmVpciwiTExpSWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzRfYW5kX29ybiwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX001X3ZtYWNidXUsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfcmNtcGVxLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF9jbXB5cl93aGMsImlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl9hY2MsImlpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3Z6eHRiaCwiTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1aHNfcnMxLCJMTGlMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9yX3NhdCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfY29tYmluZXcsIkxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19sbF9zMSwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfbGxfczAsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5aV9zMCwiTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9wX29yLCJMTGlMTGlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfb3JpX2FzbF9yaSwiaVVJaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DNF9uYml0c3NldCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfaGhfczEsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2FjY19oaF9zMCwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbGxfczEsIlVpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2xsX3MwLCJVaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9sMTZfbGwsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3JfYW5kLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfbW9kd3JhcHUsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3JjbXBuZXEsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfYWNjX2hoX3MwLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfYWNjX2hoX3MxLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmaW1tX3AsImZVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmltbV9uLCJmVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfY21weXJfd2gsImlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3JfcF9hbmQsIkxMaUxMaUxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZndWIsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZDJzZiwiZkxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd1aCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfY21wYmVxaSwiaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmNtcHVvLCJpZmYiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZndXcsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3BfbmFjLCJMTGlMTGlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl92c2F0d2hfbm9wYWNrLCJMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2hoX3MwLCJMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfaGhfczEsIkxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3JfcF9vciwiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX21pbnUsIlVpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X2xoX3MxLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF9vcl9hbmRuLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfbWlucCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfb3JfYW5kaXgsImlpaUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3JuZF9saF9zMCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3JuZF9saF9zMSwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1weXVoX3MwLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5dWhfczEsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2xoX3MwLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfc2ZjbXBnZSwiaWZmIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfc2ZtaW4sImZmZiIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmY21wZ3QsImlmZiIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X3ZwbXB5aCwiTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjdWhzX3JzMCwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9ybmRfbGhfczEsIkxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9ybmRfbGhfczAsIkxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfcm91bmRzYXQsImlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9jdDFwLCJpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfZXh0cmFjdF9ycCwiaWlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9yX29yLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzRfY21wbHRldWksImlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfYWRkaV9sc3JfcmksImlVSWlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfdGZyY3BwLCJMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9zdndfdHJ1biwiaUxMaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGhndGksImlpSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF92cm1pbmgsIkxMaUxMaUxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF92cm1pbncsIkxMaUxMaUxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBoZ3R1LCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9pbnNlcnRwX3JwLCJMTGlMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92bmF2Z2hjciwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfc3ViaV9hc2xfcmksImlVSWlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3JfdmgsIkxMaUxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfaGhfczAsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZzdWJ3cywiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc2F0aCwiaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9wX3hvciwiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3NhdGIsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfY21wbHR1LCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9pbnNlcnRwLCJMTGlMTGlMTGlVSWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX3JuZF9sbF9zMSwiTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX3JuZF9sbF9zMCwiTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9wX25hYywiTExpTExpTExpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfZXh0cmFjdHVwX3JwLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF92eGFkZHN1YncsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X3Z4YWRkc3ViaCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYXNyaCwiaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9leHRyYWN0cF9ycCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3Jfcl9hY2MsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX25hY19sbF9zMSwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX25hY19sbF9zMCwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9vciwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1weXVsX3MxLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtYWNyX3MwLCJMTGlMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl94b3IsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdnN1YnVicywiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1weTJzX3MxLCJMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtcHkyc19zMCwiTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92cmFkZHViX2FjYywiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfc2ZpbnZzcXJ0YSwiZmYiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9jdDBwLCJpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ZhZGRoLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl92Y3JvdGF0ZSwiTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2FzbGgsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfbGgsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YmhfaDE2X2xsLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9obW1weWxfcnMxLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9wLCJMTGlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdnNwbGF0cmgsIkxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9yLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9obCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdnNwbGF0cmIsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9oMTZfaGgsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlyX3MwLCJMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2RwbXB5c3Nfcm5kX3MwLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9tdXhyaSwiaWlJaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMmVzX3MwLCJMTGlMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMmVzX3MxLCJMTGlMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9weGZlcl9tYXAsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9saF9zMSwiVWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbGhfczAsIlVpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yX29yLCJpaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2FjY19obF9zMCwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2FjY19obF9zMSwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9wX25hYywiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGR3LCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9yX2FuZCwiaWlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmFkZGgsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2xoX3MxLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfbGhfczAsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBlcXAsImlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNF9tcHlyaV9hZGRpLCJpVUlpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX25vdCwiaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9hbmRpX2xzcl9yaSwiaVVJaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tYWNzaXAsImlpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3RmcmNyciwiaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tYWNzaW4sImlpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX29ybiwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfYW5kX2FuZG4sImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZm1weSwiZmZmIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbmFjX2hoX3MxLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19oaF9zMCwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9wX2FjYywiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3Z3LCJMTGlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfYW5kX29yLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3JfdmgsIkxMaUxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9tYXNrLCJMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19oaF9zMCwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfaGhfczEsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfdXBfczFfc2F0LCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wYmd0LCJpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTVfdnJtYWNic3UsIkxMaUxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3RhYmxlaWR4d19nb29kc3ludGF4LCJpaWlVSWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92cnNhZHViLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl90ZnJyY3IsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdnJjbXB5c19hY2NfczEsIkxMaUxMaUxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9kZmNtcGdlLCJpZGQiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9hY2NpaSwiaWlpSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNV92YWRkaHVicywiaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtYXh3LCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWF4YiwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm1heGgsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzeHRodywiTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X2FuZGlfYXNsX3JpLCJpVUlpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3BfbmFjLCJMTGlMTGlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9wX3hvciwiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGd0LCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMmRfY2hvcCwiTExpZCIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbmFjX2hsX3MwLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9uYWNfaGxfczEsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3NmMncsImlmIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3JfcF9vciwiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmY2xhc3MsImlmVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2xoX3MwLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X3hvcl9hbmRuLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYWRkYXNsX3JycmksImlpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX001X3ZkbXB5YnN1LCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19oaF9zMCwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbmFjX2hoX3MxLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkaSwiaWlJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZHAsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtcHkyc19zMXBhY2ssImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X2NsYnBub3JtLCJpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfcm91bmRfcnJfc2F0LCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9uYWNjaSwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3NodWZmZWgsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3JfYW5kLCJpaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9oaF9zMSwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9ybmRfaGhfczAsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YydXcsImlmIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdnN1YmgsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YydWQsIkxMaWYiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92c3VidywiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmNtcHdndCwiaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X3hvcl9vciwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YydXdfY2hvcCwiaWYiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl92dywiTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXR3dWhfbm9wYWNrLCJMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl92aCwiTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N2c3VidWhzLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNV92bXB5YnN1LCJMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YmhfbDE2X3NhdF9sbCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzRfYW5kX2FuZCwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfYWNjX2hsX3MxLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfaGxfczAsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9wLCJMTGlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3JfciwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfc3VicF9jLCJMTGlMTGlMTGl2KiIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZzdWJocywiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfdml0cGFjaywiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmF2Z3VociwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdnNwbGljZXJiLCJMTGlMTGlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzRfbmJpdHNjbHIsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZjbXBiZ3R1LCJpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21weXNfczEsIkxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21weXNfczAsIkxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfZGZjbXB1bywiaWRkIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfc2h1ZmZvYiwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfYW5kLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNV9wb3Bjb3VudHAsImlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9leHRyYWN0cCwiTExpTExpVUlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfY2wwLCJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBiZ3RpLCJpTExpSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjbHNfczEsIkxMaUxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNsc19zMCwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzRfY21wbmVxLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMmVzLCJMTGlMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92ZG1hY3NfczAsIkxMaUxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZkbWFjc19zMSwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbGxfczAsIlVMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2xsX3MxLCJVTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9jbGIsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19sbF9zMCwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfbGxfczEsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX25hY19obF9zMSwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX25hY19obF9zMCwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tYWNpLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm1heHVoLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9iaXRzcGxpdGksIkxMaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWF4dWIsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2hoX3MwLCJVTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9oaF9zMSwiVUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdnJtYWNfczAsIkxMaUxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfbGhfczAsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3Jfc2F0LCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3NmMmQsIkxMaWYiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9yX25hYywiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmaW1tX24sImRVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBoZ3QsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmaW1tX3AsImRVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9hY2NfbGhfczEsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdmNtcHlfczFfc2F0X3IsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X21weXJpX2FkZHJfdTIsImlpVUlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbXB5X3MxX3NhdF9pLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9wX25hYywiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX001X3ZybWFjYnV1LCJMTGlMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNV9hc3JodWJfcm5kX3NhdF9nb29kc3ludGF4LCJpTExpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdnNwbGljZWliLCJMTGlMTGlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9kcG1weXNzX2FjY19zMCwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbmFjc19zMSwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbmFjc19zMCwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9tYXh1LCJVaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfbWF4cCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYW5kaXIsImlpSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZnJlY2lwYSwiZmZmIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfY29tYmluZWlpLCJMTGlJaUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfb3JuLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBiZ3R1aSwiaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9yX29yLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfdmNtcGJlcWksImlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9yLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9wLCJMTGlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfb3IsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmY21wZXEsImlkZCIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGVxLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl90ZnJwLCJMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DNF9hbmRfYW5kbiwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXRodWJfbm9wYWNrLCJMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zYXR1aCwiaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zYXR1YiwiaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtcHlzX3MxLCJMTGlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfb3Jfb3JpLCJpaWlJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0M0X2Zhc3Rjb3JuZXI5X25vdCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdGZyaWgsImlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdGZyaWwsImlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfbXB5cmlfYWRkciwiaWlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdnRydW5laGIsImlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92YWJzdywiTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmFic2gsIkxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3Nmc3ViLCJmZmYiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9tdXhpaSwiaWlJaUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfbXV4aXIsImlpaUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3dpeiwiaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX2FuZCwiTExpTExpTExpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21weXJzY19zMCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21weXJzY19zMSwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdnJhZGR1YiwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfdGxibWF0Y2gsImlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfY29udl9kZjJ3X2Nob3AsImlkIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYW5kLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9wX2FuZCwiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2xsX3MxLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfbGxfczAsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9leHRyYWN0LCJpaVVJaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZjbXB3ZXEsImlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9hY2NpLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcF9hY2MsIkxMaUxMaUxMaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3Bfb3IsIkxMaUxMaUxMaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfdWQyc2YsImZMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl90ZnIsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcF9vciwiTExpTExpTExpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3VicmksImlJaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF92cm1heHV3LCJMTGlMTGlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTVfdm1weWJ1dSwiTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF92cm1heHVoLCJMTGlMTGlMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfdncsIkxMaUxMaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd3LCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9icmV2LCJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhdmdoLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9jbHJiaXRfaSwiaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV92aCwiTExpTExpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl9vciwiaWlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3Jfcl9uYWMsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5bF9yczEsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2hsX3MxLCJVTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5bF9zMCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1weWxfczEsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX25hY2NpaSwiaWlpSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl92cm5kcGFja3docywiaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3Z0cnVuZXdoLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9kcG1weXNzX25hY19zMCwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2xsX3MwLCJMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfbGxfczEsIkxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfbWFjX3VwX3MxX3NhdCwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M0X3ZyY3JvdGF0ZV9hY2MsIkxMaUxMaUxMaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3V3MmRmLCJkaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGR1YnMsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3JfYWNjLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfb3JpciwiaWlJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2FuZHAsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xmc3AsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX21pbiwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5c21pLCJpaUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdmNtcHlfczBfc2F0X3IsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfYWNjX2xsX3MxLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfbGxfczAsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9zdndfdHJ1biwiaUxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5aF9zMCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1weWhfczEsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YyZGYsImRmIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdnRydW5vaGIsImlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3NmMmRfY2hvcCwiTExpZiIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfbGhfczAsIkxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfY29udl9kZjJ3LCJpZCIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M1X2Fzcmh1Yl9zYXQsImlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yX3hhY2MsImlpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYyZCwiTExpZCIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1bHNfczEsIkxMaUxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1bHNfczAsIkxMaUxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N2YWRkdWhzLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3NmMndfY2hvcCwiaWYiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9zdnNhdGh1YiwiaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX3JuZF9obF9zMSwiTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX3JuZF9obF9zMCwiTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9zZXRiaXRfciwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmF2Z2hyLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZtYV9zYywiZmZmZmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9kZmNsYXNzLCJpZFVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYydWQsIkxMaWQiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMnV3LCJpZCIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlyc19zMCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21weXJzX3MxLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DNF9jbXBsdGVpLCJpaUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzRfY21wbHRldSwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdnN1YmJfbWFwLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2wxNl9sbCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcl9ybmQsImlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdnJtcHlfczAsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfcm5kX2hoX3MxLCJMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfcm5kX2hoX3MwLCJMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX21pbnVwLCJVTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdmFsaWducmIsIkxMaUxMaUxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9wX2FjYywiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHlsX3JzMCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdnJjbWFjaV9zMCwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmFkZHViLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9jb21iaW5lX2xoLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNV92ZG1hY2JzdSwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfY29tYmluZV9sbCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfaGxfczAsIlVMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21weWlfczBjLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX3JuZCwiTExpTExpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfYWRkcHNhdCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfc3ZhZGRocywiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfb3JpX2xzcl9yaSwiaVVJaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9sbF9zMSwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9ybmRfbGxfczAsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtaW53LCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWluaCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdnJjbXB5cl9zMCwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm1pbmIsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbWFjX3MwX3NhdF9pLCJMTGlMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9saF9zMCwiVUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbGhfczEsIlVMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3Jfb3IsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9sc2xpLCJpSWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3JfdncsIkxMaUxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfaGhfczEsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5ZWhfczAsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5ZWhfczEsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfbGhfczAsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX2xoX3MxLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdnJhZGRoLCJpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfdGZycnAsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfbGxfczAsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX3NhdF9sbF9zMSwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3Z0cnVub3doLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hYnMsImlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfY21wYmVxLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9uZWdwLCJMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yX3NhdCwiaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2wxNl9zYXRfaGwsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXR3dWgsImlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9GMl9kZmNtcGd0LCJpZGQiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9zdnNhdGhiLCJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGd0dXAsImlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BNF9jcm91bmRfcmksImlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfY2xicGFkZGksImlMTGlJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X2Nyb3VuZF9yciwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfbXV4LCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHl1dV9zMCwiVUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfc2h1ZmZlYiwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm1pbnV3LCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92YWRkaHMsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2luc2VydF9ycCwiaWlpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm1pbnVoLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWludWIsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2V4dHJhY3R1LCJpaVVJaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N2c3ViaCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfY2xiYWRkaSwiaWlJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmZm1zLCJmZmZmIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfdnN4dGJoLCJMTGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbmFjX2xsX3MxLCJMTGlMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19sbF9zMCwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJwLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MmVzX3MxLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MmVzX3MwLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNF9wYXJpdHksImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfaGhfczEsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX2hoX3MwLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzRfYWRkaV9hc2xfcmksImlVSWlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfaGhfczEsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfaGhfczAsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcl9uYWMsImlpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGhlcWksImlpSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9wX3hvciwiTExpTExpTExpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfaGxfczEsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX2hsX3MwLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfY29udl9zZjJ1ZF9jaG9wLCJMTGlmIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQzJfY21wZ2V1aSwiaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX3NhdF9oaF9zMCwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2hoX3MxLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3JfcF9hbmQsIkxMaUxMaUxMaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9zYXRfbGgsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfaDE2X3NhdF9sbCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTRfbmFjX3VwX3MxX3NhdCwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19saF9zMSwiTExpTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9uYWNfbGhfczAsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfcm91bmRfcmlfc2F0LCJpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfaGxfczAsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX2hsX3MxLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdmF2Z2hjciwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1hY2xzX3JzMCwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbW1hY2xzX3JzMSwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfY21hY2lfczAsIkxMaUxMaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfc2V0Yml0X2ksImlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcF9vciwiTExpTExpTExpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTRfYW5kbiwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTVfdnJtcHlic3UsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZybmRwYWNrd2gsImlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92Y21hY19zMF9zYXRfciwiTExpTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTJfdm1heHV3LCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DMl9iaXRzY2xyLCJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl94b3JfeGFjYywiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBiZ3R1aSwiaUxMaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E0X29ybnAsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3RmcnBpLCJMTGlJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0M0X2FuZF9vciwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2hoX3MxLCJpaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfaGhfczAsImlpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9zYXRfbGwsImlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YmhfaDE2X3NhdF9saCwiaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTJfdm1weTJzdV9zMSwiTExpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MnN1X3MwLCJMTGlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3BfYWNjLCJMTGlMTGlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9DNF9uYml0c2NscmksImlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfdmgsIkxMaUxMaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3BfeGFjYywiTExpTExpTExpVUlpIiwiIikKKworLy8gVjU1IFNjYWxhciBJbnN0cnVjdGlvbnMuCisKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fQTVfQUNTLCJMTGlMTGlMTGlMTGkiLCIiKQorCisvLyBWNjAgU2NhbGFyIEluc3RydWN0aW9ucy4KKworQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9wX2FuZCwiTExpTExpTExpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcl94YWNjLCJpaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9yX2FuZCwiaWlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcl9hY2MsImlpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3BfeGFjYywiTExpTExpTExpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcCwiTExpTExpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcF9uYWMsIkxMaUxMaUxMaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3BfYWNjLCJMTGlMTGlMTGlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9yX29yLCJpaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9yLCJpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3JfbmFjLCJpaWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9wX29yLCJMTGlMTGlMTGlVSWkiLCIiKQorCisvLyBWNjIgU2NhbGFyIEluc3RydWN0aW9ucy4KKworQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9TNl92dHJ1bmVoYl9wcHAsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkbnRudDAsIlYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fTTZfdmFic2RpZmZ1YiwiTExpTExpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fUzZfdnRydW5vaGJfcHBwLCJMTGlMTGlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NNl92YWJzZGlmZmIsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E2X3ZtaW51Yl9SZFAsIkxMaUxMaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1M2X3ZzcGxhdHJicCwiTExpaSIsIiIpCisKKy8vIFY2NSBTY2FsYXIgSW5zdHJ1Y3Rpb25zLgorCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0E2X3ZjbXBiZXFfbm90YW55LCJpTExpTExpIiwiIikKKworLy8gVjY2IFNjYWxhciBJbnN0cnVjdGlvbnMuCisKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fRjJfZGZzdWIsImRkZCIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmYWRkLCJkZGQiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbmFjaSwiaWlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1MyX21hc2ssImlVSWlVSWkiLCIiKQorCisvLyBWNjAgSFZYIEluc3RydWN0aW9ucy4KKworQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFiX29yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxYl9vcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1pbnViLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWludWJfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzbHdfYWNjLCJWMTZpVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzbHdfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHZzcnMsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlodnNyc18xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0aHViLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0aHViXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRoX2R2LCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaF9kdl8xMjhCLCJWNjRpVjY0aVY2NGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c2ksIlYzMmlWMzJpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnVzaV8xMjhCLCJWNjRpVjY0aWlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1Zm9oLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1Zm9oXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3diwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnd2XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHN1aXNhdCwiVjE2aVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc3Vpc2F0XzEyOEIsIlYzMmlWNjRpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyc2FkdWJpX2FjYywiVjMyaVYzMmlWMzJpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyc2FkdWJpX2FjY18xMjhCLCJWNjRpVjY0aVY2NGlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm5hdmd3LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bmF2Z3dfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm5hdmdoLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bmF2Z2hfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3ViLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndWJfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmIsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJiXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHdfYW5kLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0d19hbmRfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1YnJuZCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3Vicm5kXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnVzdiwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXN2XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJibnEsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYm5xXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmRoYiwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kaGJfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVoc2F0X2R2LCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWhzYXRfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVic2F0LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJzYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1c19hY2MsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnVzX2FjY18xMjhCLCJWNjRpVjY0aVY2NGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm11eCwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtdXhfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlodXMsIlYzMmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlodXNfMTI4QiwiVjY0aVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2tlYiwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2tlYl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaG5xLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhucV8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z2hybmQsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmdocm5kXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0cmFuMngyX21hcCwiVjE2aVYxNml2KmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92dHJhbjJ4Ml9tYXBfMTI4QiwiVjMyaVYzMml2KmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVsdGEsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWx0YV8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF9hbmQsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF9hbmRfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5aGIsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5aGJfMTI4QiwiVjY0aVY2NGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2tvYiwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2tvYl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWF4aCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1heGhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHlidXNfYWNjLCJWMzJpVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHlidXNfYWNjXzEyOEIsIlY2NGlWNjRpVjY0aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWhzYXQsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1aHNhdF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd19hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd19hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfb3IsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfb3JfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1Yl9hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViX2FjY18xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbG8sIlYxNmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbG9fMTI4QiwiVjMyaVY2NGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYl9kdiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhzYXRfZHYsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJoc2F0X2R2XzEyOEIsIlY2NGlWNjRpVjY0aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd2gsIlYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd2hfMTI4QiwiVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3YiwiVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3Yl8xMjhCLCJWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZHUwLCJWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkdTBfMTI4QiwiVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF94b3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF94b3JfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGhfb3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RoX29yXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnaCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z2hfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmxhbGlnbmIsIlYxNmlWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bGFsaWduYl8xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNoLCJWMzJpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaF8xMjhCLCJWNjRpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfYW5kX24sIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfYW5kX25fMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNiLCJWMzJpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYl8xMjhCLCJWNjRpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3VuZHd1aCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kd3VoXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JodiwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmh2XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZmgsIlYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZmaF8xMjhCLCJWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRoc2F0X2R2LCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHNhdF9kdl8xMjhCLCJWNjRpVjY0aVY2NGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bmF2Z3ViLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bmF2Z3ViXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnYsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnZfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm5vcm1hbXRoLCJWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zub3JtYW10aF8xMjhCLCJWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGIsIlYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGJfMTI4QiwiVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3VoLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndWhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmxzcnd2LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHNyd3ZfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmxzcmh2LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHNyaHZfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloaXNhdCwiVjE2aVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloaXNhdF8xMjhCLCJWMzJpVjY0aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWh2c2F0LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWh2c2F0XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkd18xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92emgsIlYzMmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnpoXzEyOEIsIlY2NGlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGgsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRoXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXh1YiwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1heHViXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlodl9hY2MsIlYzMmlWMzJpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHZfYWNjXzEyOEIsIlY2NGlWNjRpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWhzYXQsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1aHNhdF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1Zm9laCwiVjMyaVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZvZWhfMTI4QiwiVjY0aVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVodl9hY2MsIlYzMmlWMzJpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWh2X2FjY18xMjhCLCJWNjRpVjY0aVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxaCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxaF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnV1diwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1dXZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcndoc2F0LCJWMTZpVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcndoc2F0XzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWludWgsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW51aF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm9yLCJWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm9yXzEyOEIsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2hfcm5kX3NhY2MsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5b3doX3JuZF9zYWNjXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWF4dWgsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXh1aF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzaF9zYXQsIlYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic2hfc2F0XzEyOEIsIlYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9vcl9uLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX29yX25fMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRlYWxiLCJWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWFsYl8xMjhCLCJWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidXN2LCJWMzJpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzdl8xMjhCLCJWNjRpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92emIsIlYzMmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnpiXzEyOEIsIlY2NGlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHlidXNfZHYsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5YnVzX2R2XzEyOEIsIlY2NGlWNjRpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRicSwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRicV8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGIsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRiXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3cSwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3cV8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmh1YnJuZHNhdCwiVjE2aVYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JodWJybmRzYXRfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JodWJzYXQsIlYxNmlWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaHVic2F0XzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1Zm9lYiwiVjMyaVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZvZWJfMTI4QiwiVjY0aVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2todWJfc2F0LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja2h1Yl9zYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3aF9hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXdoX2FjY18xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHliLCJWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWJfMTI4QiwiVjY0aVY2NGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1c3YsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXN2XzEyOEIsIlY2NGlWNjRpVjY0aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfYW5kLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX2FuZF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3Vid25xLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnducV8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2t3dWhfc2F0LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja3d1aF9zYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN3YXAsIlYzMmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3dhcF8xMjhCLCJWNjRpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1YnZfYWNjLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1YnZfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RiX2FuZCwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGJfYW5kXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsdywiVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzbHdfMTI4QiwiVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2toYl9zYXQsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNraGJfc2F0XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpaF9hY2MsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWhfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZ2ZGQsIlYzMmlWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZ2ZGRfMTI4QiwiVjY0aVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRiX2R2LCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkYl9kdl8xMjhCLCJWNjRpVjY0aVY2NGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrdWIsIlYzMmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja3ViXzEyOEIsIlY2NGlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXcsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHV3XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2d2gsIlYzMmlWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dndoXzEyOEIsIlY2NGlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1YiwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWJfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWVvaCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWllb2hfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfZXh0cmFjdHcsImlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2V4dHJhY3R3XzEyOEIsImlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd3cm5kLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnd3JuZF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzYXRfYWNjLCJWMTZpVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc2F0X2FjY18xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWJfeG9yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWJfeG9yXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWIsIlYzMmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1Yl8xMjhCLCJWNjRpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWgsIlYzMmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aF8xMjhCLCJWNjRpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrb2IsIlYzMmlWMzJpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2tvYl8xMjhCLCJWNjRpVjY0aVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhaGIsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFoYl8xMjhCLCJWNjRpVjY0aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXF3X29yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxd19vcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFuZHFydCwiVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFuZHFydF8xMjhCLCJWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92eG9yLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92eG9yXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3aHJuZHNhdCwiVjE2aVYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3aHJuZHNhdF8xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhzYXRfYWNjLCJWMzJpVjMyaVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhzYXRfYWNjXzEyOEIsIlY2NGlWNjRpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c19hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c19hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJodywiVjMyaVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1Ymh3XzEyOEIsIlY2NGlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWFsYjR3LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVhbGI0d18xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5b3doX3NhY2MsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5b3doX3NhY2NfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidiwiVjMyaVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ2XzEyOEIsIlY2NGlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNkaWZmaCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic2RpZmZoXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZm9iLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZvYl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWJfYWNjLCJWMzJpVjMyaVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weXViX2FjY18xMjhCLCJWNjRpVjY0aVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm5vcm1hbXR3LCJWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zub3JtYW10d18xMjhCLCJWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2t1aCwiVjMyaVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrdWhfMTI4QiwiVjY0aVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF9vciwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHVoX29yXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWV3dWhfYWNjLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWlld3VoX2FjY18xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja29oLCJWMzJpVjMyaVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrb2hfMTI4QiwiVjY0aVY2NGlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc2F0LCJWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzYXRfMTI4QiwiVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVidiwiVjMyaVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVidl8xMjhCLCJWNjRpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHNzLCJWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHNzXzEyOEIsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2hpLCJWMTZpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2hpXzEyOEIsIlYzMmlWNjRpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnd1aHNhdCwiVjE2aVYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3dWhzYXRfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcXcsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcXdfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRzYWR1aCwiVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRzYWR1aF8xMjhCLCJWNjRpVjY0aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidywiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndfZHYsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ3X2R2XzEyOEIsIlY2NGlWNjRpVjY0aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWJfYW5kLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxYl9hbmRfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpaCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWloXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5Yl9hY2MsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWJfYWNjXzEyOEIsIlY2NGlWNjRpVjY0aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1cywiVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXNfMTI4QiwiVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ1c19hY2MsIlYzMmlWMzJpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzX2FjY18xMjhCLCJWNjRpVjY0aVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0aF94b3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RoX3hvcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhzYXQsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJoc2F0XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJpX2FjYywiVjMyaVYzMmlWMzJpaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJpX2FjY18xMjhCLCJWNjRpVjY0aVY2NGlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic3csIlYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic3dfMTI4QiwiVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkd3NhdF9kdiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdzYXRfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmxzcncsIlYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3J3XzEyOEIsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNoLCJWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNoXzEyOEIsIlYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmxzcmgsIlYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3JoXzEyOEIsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbGlnbmIsIlYxNmlWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWxpZ25iXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaHEsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaHFfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrb2gsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrb2hfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHlidXNfYWNjLCJWMTZpVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHlidXNfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWh2c2F0X2FjYywiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHZzYXRfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ2X2FjYywiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnZfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHNhdCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGhzYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmNvbWJpbmUsIlYzMmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zjb21iaW5lXzEyOEIsIlY2NGlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmRxcnRfYWNjLCJWMTZpVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFuZHFydF9hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2xodiwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzbGh2XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZpbnNlcnR3ciwiVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmluc2VydHdyXzEyOEIsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJoX2R2LCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaF9kdl8xMjhCLCJWNjRpVjY0aVY2NGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZiLCJWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZmJfMTI4QiwiVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlodiwiVjMyaVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh2XzEyOEIsIlY2NGlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHN1aXNhdF9hY2MsIlYxNmlWMTZpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzdWlzYXRfYWNjXzEyOEIsIlYzMmlWMzJpVjY0aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJzYXRfZHYsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1YnNhdF9kdl8xMjhCLCJWNjRpVjY0aVY2NGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RiX3hvciwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGJfeG9yXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZHNhZHVoX2FjYywiVjMyaVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zkc2FkdWhfYWNjXzEyOEIsIlY2NGlWNjRpVjY0aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViLCJWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViXzEyOEIsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aF9hY2MsIlYzMmlWMzJpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWhfYWNjXzEyOEIsIlY2NGlWNjRpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Y2wwaCwiVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Y2wwaF8xMjhCLCJWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlodXNfYWNjLCJWMzJpVjMyaVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh1c19hY2NfMTI4QiwiVjY0aVY2NGlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidl9hY2MsIlYzMmlWMzJpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnZfYWNjXzEyOEIsIlY2NGlWNjRpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cnNhZHViaSwiVjMyaVYzMmlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJzYWR1YmlfMTI4QiwiVjY0aVY2NGlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloYl9kdl9hY2MsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhiX2R2X2FjY18xMjhCLCJWNjRpVjY0aVY2NGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZlaCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZlaF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5ZXd1aCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWV3dWhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhzcnMsIlYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHloc3JzXzEyOEIsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5YnVzX2R2X2FjYywiVjMyaVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5YnVzX2R2X2FjY18xMjhCLCJWNjRpVjY0aVY2NGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHViaCwiVjMyaVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHViaF8xMjhCLCJWNjRpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd2gsIlYxNmlWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd2hfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkMCwiVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZDBfMTI4QiwiVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cG9wY291bnRoLCJWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zwb3Bjb3VudGhfMTI4QiwiVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZG50MCwiVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZG50MF8xMjhCLCJWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGhfYW5kLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0aF9hbmRfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1YnNhdF9kdiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVic2F0X2R2XzEyOEIsIlY2NGlWNjRpVjY0aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrZWgsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrZWhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWgsIlYzMmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHloXzEyOEIsIlY2NGlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW5oLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWluaF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX3NjYWxhcjIsIlYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9zY2FsYXIyXzEyOEIsIlYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRlYWxoLCJWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWFsaF8xMjhCLCJWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrd2hfc2F0LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja3doX3NhdF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsaCwiVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzbGhfMTI4QiwiVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXdfYW5kLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXdfYW5kXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92b3IsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zvcl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiLCJWMTZpVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ2Yl8xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWlvd2gsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpb3doXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2dmJfb3JhY2MsIlYxNmlWMTZpVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ2Yl9vcmFjY18xMjhCLCJWMzJpVjMyaVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cnQsIlYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cnRfMTI4QiwiVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxaF94b3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFoX3hvcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVodywiVjMyaVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVod18xMjhCLCJWNjRpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Y2wwdywiVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Y2wwd18xMjhCLCJWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpaGIsIlYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpaGJfMTI4QiwiVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHlidXMsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5YnVzXzEyOEIsIlY2NGlWNjRpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkMCwiVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkMF8xMjhCLCJWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxaF9vciwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWhfb3JfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHdfb3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R3X29yXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1cywiVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHlidXNfMTI4QiwiVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWJfb3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1Yl9vcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ1cywiVjMyaVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ1c18xMjhCLCJWNjRpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhiX2FjYywiVjE2aVYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGJfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kdnJ0X2FjYywiVjE2aVYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cnRfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNzaWduLCJWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3NpZ25fMTI4QiwiVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkd25xLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHducV8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWJfYW5kLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWJfYW5kXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhiX2R2LCJWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhiX2R2XzEyOEIsIlY2NGlWNjRpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2tiLCJWMzJpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2tiXzEyOEIsIlY2NGlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja2gsIlYzMmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja2hfMTI4QiwiVjY0aVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhaGJfYWNjLCJWMzJpVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWhiX2FjY18xMjhCLCJWNjRpVjY0aVY2NGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJucSwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRibnFfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsYWxpZ25iaSwiVjE2aVYxNmlWMTZpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmxhbGlnbmJpXzEyOEIsIlYzMmlWMzJpVjMyaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYXR3aCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnNhdHdoXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHVoLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWhiX2FjYywiVjE2aVYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpaGJfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c3ZfYWNjLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXN2X2FjY18xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJkZWx0YSwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJkZWx0YV8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR3aCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kd2hfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdfZHYsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3X2R2XzEyOEIsIlY2NGlWNjRpVjY0aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd2JfYWNjLCJWMTZpVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3Yl9hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJicSwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJicV8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxaF9hbmQsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFoX2FuZF8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFsaWduYmksIlYxNmlWMTZpVjE2aVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbGlnbmJpXzEyOEIsIlYzMmlWMzJpVjMyaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3c2F0LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkd3NhdF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXF3X2FuZCwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcXdfYW5kXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZnViLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZnViXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZmViLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZlYl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZnVoLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZnVoXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcXdfeG9yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmVxd194b3JfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGgsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXdfeG9yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXdfeG9yXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RiLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RiXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHcsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHdfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndxLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndxXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bm90LCJWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zub3RfMTI4QiwiVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RiX29yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0Yl9vcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXdfb3IsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1d19vcl8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVic2F0LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJzYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1heHcsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXh3XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2x3diwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzbHd2XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnN3X3NhdCwiVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzd19zYXRfMTI4QiwiVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3Vid3NhdF9kdiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndzYXRfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kaHViLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmRodWJfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloaXNhdF9hY2MsIlYxNmlWMTZpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhpc2F0X2FjY18xMjhCLCJWMzJpVjMyaVY2NGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1cywiVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1c18xMjhCLCJWNjRpVjY0aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNzaWducCwiVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNzaWducF8xMjhCLCJWNjRpVjY0aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWIsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWJfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnViaCwiVjMyaVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnViaF8xMjhCLCJWNjRpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sdnNwbGF0dywiVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sdnNwbGF0d18xMjhCLCJWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRobnEsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaG5xXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzdXNhdCwiVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc3VzYXRfMTI4QiwiVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9ub3QsIlYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9ub3RfMTI4QiwiVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dndoX29yYWNjLCJWMzJpVjMyaVYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2d2hfb3JhY2NfMTI4QiwiVjY0aVY2NGlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWV3aF9hY2MsIlYxNmlWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWV3aF9hY2NfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWFsdmRkLCJWMzJpVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRlYWx2ZGRfMTI4QiwiVjY0aVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd3LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnd18xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzdXNhdF9hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzdXNhdF9hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHdfeG9yLCJWMTZpVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmd0d194b3JfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5aGJfYWNjLCJWMzJpVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHloYl9hY2NfMTI4QiwiVjY0aVY2NGlWNjRpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRodywiVjMyaVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGh3XzEyOEIsIlY2NGlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRocSwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRocV8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1YnYsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJ2XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJoLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViaSwiVjMyaVYzMmlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1YmlfMTI4QiwiVjY0aVY2NGlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1pbncsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW53XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1YnZfYWNjLCJWMzJpVjMyaVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVidl9hY2NfMTI4QiwiVjY0aVY2NGlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfeG9yLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX3hvcl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFiX3hvciwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWJfeG9yXzEyOEIsIlYzMmlWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWV3dWgsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpZXd1aF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzdl9hY2MsIlYzMmlWMzJpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzdl9hY2NfMTI4QiwiVjY0aVY2NGlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1aHJuZCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3Vocm5kXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2hfcm5kLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5b3doX3JuZF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3Vid3NhdCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndzYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVodywiVjMyaVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVod18xMjhCLCJWNjRpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c2lfYWNjLCJWMzJpVjMyaVYzMmlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXNpX2FjY18xMjhCLCJWNjRpVjY0aVY2NGlpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcncsIlYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3XzEyOEIsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JoLCJWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaF8xMjhCLCJWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWh2LCJWMzJpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWh2XzEyOEIsIlY2NGlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JoYnJuZHNhdCwiVjE2aVYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JoYnJuZHNhdF8xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVoc2F0X2R2LCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWhzYXRfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic2RpZmZ3LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZndfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKKworLy8gVjYyIEhWWCBJbnN0cnVjdGlvbnMuCisKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFuZG5xcnRfYWNjLCJWMTZpVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFuZG5xcnRfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkY2xiaCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGNsYmhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aF82NF9hY2MsIlYzMmlWMzJpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5b3doXzY0X2FjY18xMjhCLCJWNjRpVjY0aVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWV3dWhfNjQsIlYzMmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlld3VoXzY0XzEyOEIsIlY2NGlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYXR1d3VoLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0dXd1aF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9zaHVmZmVxaCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfc2h1ZmZlcWhfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfc2h1ZmZlcXcsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3NodWZmZXF3XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkY25wbnQwLCJWMTZpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZGNucG50MF8xMjhCLCJWMzJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViY2FycnksIlYxNmlWMTZpVjE2aXYqIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmNhcnJ5XzEyOEIsIlYzMmlWMzJpVjMyaXYqIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmhic2F0LCJWMTZpVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmhic2F0XzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWluYiwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1pbmJfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYXVoYl9hY2MsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhdWhiX2FjY18xMjhCLCJWNjRpVjY0aVY2NGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGh3X2FjYywiVjMyaVYzMmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRod19hY2NfMTI4QiwiVjY0aVY2NGlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3JiLCJWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHNyYl8xMjhCLCJWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dndoaSwiVjMyaVYxNmlWMTZpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aGlfMTI4QiwiVjY0aVYzMmlWMzJpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVidWJiX3NhdCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVidWJiX3NhdF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYnNhdF9kdiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJzYXRfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbGR0cDAsIlYxNmlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkdHAwXzEyOEIsIlYzMmlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2dmJfb3JhY2NpLCJWMTZpVjE2aVYxNmlWMTZpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ2Yl9vcmFjY2lfMTI4QiwiVjMyaVYzMmlWMzJpVjMyaVVJaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1d3NhdF9kdiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnV3c2F0X2R2XzEyOEIsIlY2NGlWNjRpVjY0aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkcG50MCwiVjE2aWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbGRwbnQwXzEyOEIsIlYzMmlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2bnF2LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kdm5xdl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sdnNwbGF0YiwiVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sdnNwbGF0Yl8xMjhCLCJWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2x2c3BsYXRoLCJWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2x2c3BsYXRoXzEyOEIsIlYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbGR0cG50MCwiVjE2aWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbGR0cG50MF8xMjhCLCJWMzJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dndoX25tLCJWMzJpVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aF9ubV8xMjhCLCJWNjRpVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbGRucG50MCwiVjE2aWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbGRucG50MF8xMjhCLCJWMzJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhdWhiLCJWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhdWhiXzEyOEIsIlY2NGlWNjRpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkdG5wMCwiVjE2aWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbGR0bnAwXzEyOEIsIlYzMmlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3VuZHVodWIsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3VuZHVodWJfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVod19hY2MsIlYzMmlWMzJpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWh3X2FjY18xMjhCLCJWNjRpVjY0aVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbGRjcDAsIlYxNmlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkY3AwXzEyOEIsIlYzMmlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1d3NhdCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHV3c2F0XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkdG5wbnQwLCJWMTZpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZHRucG50MF8xMjhCLCJWMzJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkYnNhdCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJzYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFuZG5xcnQsIlYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmRucXJ0XzEyOEIsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd3ViX2FjYywiVjE2aVYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd3ViX2FjY18xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1heGIsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXhiXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cXYsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cXZfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGNhcnJ5LCJWMTZpVjE2aVYxNml2KiIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRjYXJyeV8xMjhCLCJWMzJpVjMyaVYzMml2KiIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3dWhybmRzYXQsIlYxNmlWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd3Vocm5kc2F0XzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiaSwiVjE2aVYxNmlWMTZpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ2YmlfMTI4QiwiVjMyaVYzMmlWMzJpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnV3c2F0LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidXdzYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJzYXRfZHYsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRic2F0X2R2XzEyOEIsIlY2NGlWNjRpVjY0aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkbnAwLCJWMTZpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZG5wMF8xMjhCLCJWMzJpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNydXd1aHJuZHNhdCwiVjE2aVYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J1d3Vocm5kc2F0XzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR1d3VoLCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR1d3VoXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2dmJfbm0sIlYxNmlWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiX25tXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX3NjYWxhcjJ2MiwiVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX3NjYWxhcjJ2Ml8xMjhCLCJWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkcDAsIlYxNmlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkcDBfMTI4QiwiVjMyaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHViaF9hY2MsIlYzMmlWMzJpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJoX2FjY18xMjhCLCJWNjRpVjY0aVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGNsYncsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRjbGJ3XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkY3BudDAsIlYxNmlpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkY3BudDBfMTI4QiwiVjMyaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHV3c2F0X2R2LCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdXdzYXRfZHZfMTI4QiwiVjY0aVY2NGlWNjRpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3dWIsIlYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd3ViXzEyOEIsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1YnViYl9zYXQsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1YnViYl9zYXRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfbGRjbnAwLCJWMTZpaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZGNucDBfMTI4QiwiVjMyaWlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aF9vcmFjY2ksIlYzMmlWMzJpVjE2aVYxNmlVSWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dndoX29yYWNjaV8xMjhCLCJWNjRpVjY0aVYzMmlWMzJpVUlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJzYXQsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJic2F0XzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCisKKy8vIFY2NSBIVlggSW5zdHJ1Y3Rpb25zLgorCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J1aHVicm5kc2F0LCJWMTZpVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnVodWJybmRzYXRfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnViX3J0dCwiVjMyaVYxNmlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1Yl9ydHRfMTI4QiwiVjY0aVYzMmlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhaGhzYXQsIlYxNmlWMTZpVjE2aUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFoaHNhdF8xMjhCLCJWMzJpVjMyaVYzMmlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndXdybmQsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1d3JuZF8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bmF2Z2IsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZuYXZnYl8xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaF9hY2MsIlYxNmlWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaF9hY2NfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGF1aHVoc2F0LCJWMTZpVjE2aVYxNmlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhdWh1aHNhdF8xMjhCLCJWMzJpVjMyaVYzMmlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aF9hY2MsIlYzMmlWMzJpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aF9hY2NfMTI4QiwiVjY0aVY2NGlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnViX3J0dF9hY2MsIlYzMmlWMzJpVjE2aUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnViX3J0dF9hY2NfMTI4QiwiVjY0aVY2NGlWMzJpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z2IsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhdmdiXzEyOEIsIlYzMmlWMzJpVjMyaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2xoX2FjYywiVjE2aVYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2xoX2FjY18xMjhCLCJWMzJpVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3V3LCJWMTZpVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndXdfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dDQsIlYxNmlWMTZpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmx1dDRfMTI4QiwiVjMyaVYzMmlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWhlX2FjYywiVjE2aVYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aGVfYWNjXzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViX3J0dCwiVjMyaVYxNmlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViX3J0dF8xMjhCLCJWNjRpVjMyaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHN1aHVoc2F0LCJWMTZpVjE2aVYxNmlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBzdWh1aHNhdF8xMjhCLCJWMzJpVjMyaVYzMmlMTGkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNydWh1YnNhdCwiVjE2aVYxNmlWMTZpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J1aHVic2F0XzEyOEIsIlYzMmlWMzJpVjMyaWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWhlLCJWMTZpVjE2aWkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWhlXzEyOEIsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJfcnR0X2FjYywiVjMyaVYzMmlWMTZpTExpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1Yl9ydHRfYWNjXzEyOEIsIlY2NGlWNjRpVjMyaUxMaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J1d3Voc2F0LCJWMTZpVjE2aVYxNmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnV3dWhzYXRfMTI4QiwiVjMyaVYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXVfYWNjLCJWMzJpVjMyaVYzMmlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1dV9hY2NfMTI4QiwiVjY0aVY2NGlWNjRpaSIsIiIpCiBCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwcmVmaXhxdywiVjE2aVYxNmkiLCIiKQogQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cHJlZml4cXdfMTI4QiwiVjMyaVYzMmkiLCIiKQotCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwcmVmaXhxaCwiVjE2aVYxNmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cHJlZml4cWhfMTI4QiwiVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cHJlZml4cWIsIlYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnByZWZpeHFiXzEyOEIsIlYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic2IsIlYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic2JfMTI4QiwiVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnYnJuZCwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z2JybmRfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKIEJVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmRkMCwiVjMyaSIsIiIpCiBCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZDBfMTI4QiwiVjY0aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXUsIlYzMmlWMzJpaSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXVfMTI4QiwiVjY0aVY2NGlpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFic2Jfc2F0LCJWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNiX3NhdF8xMjhCLCJWMzJpVjMyaSIsIiIpCiAKKy8vIFY2NiBIVlggSW5zdHJ1Y3Rpb25zLgorCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRjYXJyeXNhdCwiVjE2aVYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRjYXJyeXNhdF8xMjhCLCJWMzJpVjMyaVYzMmlWMzJpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcl9pbnRvLCJWMzJpVjMyaVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdmFzcl9pbnRvXzEyOEIsIlY2NGlWNjRpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0ZHcsIlYxNmlWMTZpVjE2aSIsIiIpCitCVUlMVElOKF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYXRkd18xMjhCLCJWMzJpVjMyaVYzMmkiLCIiKQorQlVJTFRJTihfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm90ciwiVjE2aVYxNmlWMTZpIiwiIikKK0JVSUxUSU4oX19idWlsdGluX0hFWEFHT05fVjZfdnJvdHJfMTI4QiwiVjMyaVYzMmlWMzJpIiwiIikKIAogI3VuZGVmIEJVSUxUSU4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zTGU2NC5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc0xlNjQuZGVmCmluZGV4IDUzMjg2MDYuLjc3NjQ5MmMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zTGU2NC5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNMZTY0LmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT0tIEJ1aWx0aW5zTGU2NC5kZWYgLSBMZTY0IEJ1aWx0aW4gZnVuY3Rpb24gZGF0YWJhc2UgLS0tLS0tLS0tLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNNaXBzLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zTWlwcy5kZWYKaW5kZXggMmQyMTdmNy4uOWFjNzViNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNNaXBzLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc01pcHMuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBCdWlsdGluc01pcHMuZGVmIC0gTWlwcyBCdWlsdGluIGZ1bmN0aW9uIGRhdGFiYXNlIC0tLS0tLS0tKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc05FT04uZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNORU9OLmRlZgppbmRleCAyNDFiOTNhLi5iOGViNWE3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc05FT04uZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zTkVPTi5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBCdWlsdGluc05FT04uZGVmIC0gTkVPTiBCdWlsdGluIGZ1bmN0aW9uIGRhdGFiYXNlIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zTlZQVFguZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNOVlBUWC5kZWYKaW5kZXggMDhjNjA5Ny4uYjE1ZWQyNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNOVlBUWC5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNOVlBUWC5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBCdWlsdGluc1BUWC5kZWYgLSBQVFggQnVpbHRpbiBmdW5jdGlvbiBkYXRhYmFzZSAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNOaW9zMi5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc05pb3MyLmRlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk2OTdlNy4uMDAwMDAwMAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc05pb3MyLmRlZgorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8vPT09LS0gQnVpbHRpbnNOaW9zMi5kZWYgLSBOaW9zMiBCdWlsdGluIGZ1bmN0aW9uIGRhdGFiYXNlIC0tLS0tLS0tKi0gQysrIC0qLT09Ly8KLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCi0vLwotLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLS8vCi0vLyBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgTmlvczItc3BlY2lmaWMgYnVpbHRpbiBmdW5jdGlvbiBkYXRhYmFzZS4gVXNlcnMgb2YKLS8vIHRoaXMgZmlsZSBtdXN0IGRlZmluZSB0aGUgQlVJTFRJTiBtYWNybyB0byBtYWtlIHVzZSBvZiB0aGlzIGluZm9ybWF0aW9uLgotLy8KLS8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi0KLS8vIFRoZSBmb3JtYXQgb2YgdGhpcyBkYXRhYmFzZSBtYXRjaGVzIGNsYW5nL0Jhc2ljL0J1aWx0aW5zLmRlZi4KLQotI2lmIGRlZmluZWQoQlVJTFRJTikgJiYgIWRlZmluZWQoVEFSR0VUX0JVSUxUSU4pCi0jICAgZGVmaW5lIFRBUkdFVF9CVUlMVElOKElELCBUWVBFLCBBVFRSUywgRkVBVFVSRSkgQlVJTFRJTihJRCwgVFlQRSwgQVRUUlMpCi0jZW5kaWYKLQotLy8gTmlvczIgUjEgYnVpbHRpbnM6Ci0KLS8vaW50IF9fYnVpbHRpbl9sZGJpbyh2b2xhdGlsZSBjb25zdCB2b2lkICopOwotQlVJTFRJTihfX2J1aWx0aW5fbGRiaW8sICJpdkRDKiIsICIiKQotLy9pbnQgX19idWlsdGluX2xkYnVpbyh2b2xhdGlsZSBjb25zdCB2b2lkICopOwotQlVJTFRJTihfX2J1aWx0aW5fbGRidWlvLCAiaXZEQyoiLCAiIikKLS8vaW50IF9fYnVpbHRpbl9sZGhpbyh2b2xhdGlsZSBjb25zdCB2b2lkICopOwotQlVJTFRJTihfX2J1aWx0aW5fbGRoaW8sICJpdkRDKiIsICIiKQotLy9pbnQgX19idWlsdGluX2xkaHVpbyh2b2xhdGlsZSBjb25zdCB2b2lkICopOwotQlVJTFRJTihfX2J1aWx0aW5fbGRodWlvLCAiaXZEQyoiLCAiIikKLS8vaW50IF9fYnVpbHRpbl9sZHdpbyh2b2xhdGlsZSBjb25zdCB2b2lkICopOwotQlVJTFRJTihfX2J1aWx0aW5fbGR3aW8sICJpdkRDKiIsICIiKQotLy9pbnQgX19idWlsdGluX2xkd3VpbyhpbnQpOwotQlVJTFRJTihfX2J1aWx0aW5fbGR3dWlvLCAiaWkiLCAiIikKLS8vIGludCBfX2J1aWx0aW5fcmRjdGwoaW50KTsKLUJVSUxUSU4oX19idWlsdGluX3JkY3RsLCAiaUlpIiwgIiIpCi0vLyB2b2lkIF9fYnVpbHRpbl93cmN0bChpbnQsIGludCk7Ci1CVUlMVElOKF9fYnVpbHRpbl93cmN0bCwgInZJaWkiLCAiIikKLS8vIGludCBfX2J1aWx0aW5fcmRwcnMoaW50LCBpbnQpOwotQlVJTFRJTihfX2J1aWx0aW5fcmRwcnMsICJpaWkiLCAiIikKLS8vdm9pZCBfX2J1aWx0aW5fc3RiaW8odm9sYXRpbGUgdm9pZCAqLCBpbnQpOwotQlVJTFRJTihfX2J1aWx0aW5fc3RiaW8sICJ2dkQqaSIsICIiKQotLy92b2lkIF9fYnVpbHRpbl9zdGhpbyh2b2xhdGlsZSB2b2lkICosIGludCk7Ci1CVUlMVElOKF9fYnVpbHRpbl9zdGhpbywgInZ2RCppIiwgIiIpCi0vL3ZvaWQgX19idWlsdGluX3N0d2lvKHZvbGF0aWxlIHZvaWQgKiwgaW50KTsKLUJVSUxUSU4oX19idWlsdGluX3N0d2lvLCAidnZEKmkiLCAiIikKLS8vdm9pZCBfX2J1aWx0aW5fc3luYyh2b2lkKTsKLUJVSUxUSU4oX19idWlsdGluX3N5bmMsICJ2IiwgIiIpCi0vLyB2b2lkIF9fYnVpbHRpbl9mbHVzaGQodm9sYXRpbGUgdm9pZCAqKTsKLUJVSUxUSU4oX19idWlsdGluX2ZsdXNoZCwgInZ2RCoiLCAiIikKLS8vIHZvaWQgX19idWlsdGluX2ZsdXNoZGEodm9sYXRpbGUgdm9pZCAqKTsKLUJVSUxUSU4oX19idWlsdGluX2ZsdXNoZGEsICJ2dkQqIiwgIiIpCi0KLS8vIE5pb3MyIFIyIGJ1aWx0aW5zOgotCi0vLyBpbnQgX19idWlsdGluX3dycGllKGludCk7Ci1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd3JwaWUsICJpaSIsICIiLCAibmlvczJyMm1hbmRhdG9yeSIpCi0vLyB2b2lkIF9fYnVpbHRpbl9lbmkoaW50KTsKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9lbmksICJ2aSIsICIiLCAibmlvczJyMm1hbmRhdG9yeSIpCi0vLyBpbnQgX19idWlsdGluX2xkZXgodm9sYXRpbGUgY29uc3Qgdm9pZCAqKTsKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9sZGV4LCAiaXZEQyoiLCAiIiwgIm5pb3MycjJtYW5kYXRvcnkiKQotLy8gaW50IF9fYnVpbHRpbl9zdGV4KHZvbGF0aWxlIHZvaWQgKiwgaW50KTsKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9zdGV4LCAiaXZEKmkiLCAiIiwgIm5pb3MycjJtYW5kYXRvcnkiKQotLy8gaW50IF9fYnVpbHRpbl9sZHNleCh2b2xhdGlsZSBjb25zdCB2b2lkICopOwotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2xkc2V4LCAiaXZEQyoiLCAiIiwgIm5pb3MycjJtcHgiKQotLy8gaW50IF9fYnVpbHRpbl9zdHNleCh2b2xhdGlsZSB2b2lkICosIGludCk7Ci1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fc3RzZXgsICJpdkRDKmkiLCAiIiwgIm5pb3MycjJtcHgiKQotCi0jdW5kZWYgQlVJTFRJTgotI3VuZGVmIFRBUkdFVF9CVUlMVElOCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc1BQQy5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc1BQQy5kZWYKaW5kZXggZDMxY2IwNi4uZTU1ZmEwNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNQUEMuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zUFBDLmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEJ1aWx0aW5zUFBDLmRlZiAtIFBvd2VyUEMgQnVpbHRpbiBmdW5jdGlvbiBkYXRhYmFzZSAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNTeXN0ZW1aLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zU3lzdGVtWi5kZWYKaW5kZXggYWM5MjI4Ni4uOTEzM2IzZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNTeXN0ZW1aLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc1N5c3RlbVouZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBCdWlsdGluc1N5c3RlbVouZGVmIC0gU3lzdGVtWiBCdWlsdGluIGZ1bmN0aW9uIGRhdGFiYXNlIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc1dlYkFzc2VtYmx5LmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zV2ViQXNzZW1ibHkuZGVmCmluZGV4IDQ5NGQzY2YuLjAyNDE0MzYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zV2ViQXNzZW1ibHkuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zV2ViQXNzZW1ibHkuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy8gQnVpbHRpbnNXZWJBc3NlbWJseS5kZWYgLSBXZWJBc3NlbWJseSBidWlsdGluIGZ1bmN0aW9uIGRhdGFiYXNlIC0qLSBDKysgLSotLy8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpAQCAtMTYsNjkgKzE1LDk4IEBACiAKIC8vIFRoZSBmb3JtYXQgb2YgdGhpcyBkYXRhYmFzZSBtYXRjaGVzIGNsYW5nL0Jhc2ljL0J1aWx0aW5zLmRlZi4KIAorI2lmIGRlZmluZWQoQlVJTFRJTikgJiYgIWRlZmluZWQoVEFSR0VUX0JVSUxUSU4pCisjICAgZGVmaW5lIFRBUkdFVF9CVUlMVElOKElELCBUWVBFLCBBVFRSUywgRkVBVFVSRSkgQlVJTFRJTihJRCwgVFlQRSwgQVRUUlMpCisjZW5kaWYKKwogLy8gUXVlcnkgdGhlIGN1cnJlbnQgbWVtb3J5IHNpemUsIGFuZCBpbmNyZWFzZSB0aGUgY3VycmVudCBtZW1vcnkgc2l6ZS4KIC8vIE5vdGUgdGhhdCBtZW1vcnkuc2l6ZSBpcyBub3QgImMiIChyZWFkbm9uZSkgYmVjYXVzZSBpdCBtdXN0IGJlIHNlcXVlbmNlZAogLy8gd2l0aCByZXNwZWN0IHRvIG1lbW9yeS5ncm93IGNhbGxzLgogQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9tZW1vcnlfc2l6ZSwgInpJaSIsICJuIikKIEJVSUxUSU4oX19idWlsdGluX3dhc21fbWVtb3J5X2dyb3csICJ6SWl6IiwgIm4iKQogCi0vLyBUaGVzZSBhcmUgdGhlIG9sZCBuYW1lcy4KLUJVSUxUSU4oX19idWlsdGluX3dhc21fbWVtX3NpemUsICJ6SWkiLCAibiIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX21lbV9ncm93LCAieklpeiIsICJuIikKKy8vIEJ1bGsgbWVtb3J5IGJ1aWx0aW5zCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9tZW1vcnlfaW5pdCwgInZJVWlJVWl2KlVpVWkiLCAiIiwgImJ1bGstbWVtb3J5IikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX2RhdGFfZHJvcCwgInZJVWkiLCAiIiwgImJ1bGstbWVtb3J5IikKIAotLy8gVGhlc2UgYXJlIHRoZSBvbGQgb2xkIG5hbWVzLiBUaGV5IGFsc28gbGFjayB0aGUgaW1tZWRpYXRlIGZpZWxkLgotQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9jdXJyZW50X21lbW9yeSwgInoiLCAibiIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX2dyb3dfbWVtb3J5LCAienoiLCAibiIpCisvLyBGbG9hdGluZyBwb2ludCBtaW4vbWF4CitCVUlMVElOKF9fYnVpbHRpbl93YXNtX21pbl9mMzIsICJmZmYiLCAibmMiKQorQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9tYXhfZjMyLCAiZmZmIiwgIm5jIikKK0JVSUxUSU4oX19idWlsdGluX3dhc21fbWluX2Y2NCwgImRkZCIsICJuYyIpCitCVUlMVElOKF9fYnVpbHRpbl93YXNtX21heF9mNjQsICJkZGQiLCAibmMiKQogCiAvLyBFeGNlcHRpb24gaGFuZGxpbmcgYnVpbHRpbnMuCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX3Rocm93LCAidlVpdioiLCAiciIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX3JldGhyb3csICJ2IiwgInIiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fdGhyb3csICJ2VWl2KiIsICJyIiwgImV4Y2VwdGlvbi1oYW5kbGluZyIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9yZXRocm93LCAidiIsICJyIiwgImV4Y2VwdGlvbi1oYW5kbGluZyIpCiAKIC8vIEF0b21pYyB3YWl0IGFuZCBub3RpZnkuCiBCVUlMVElOKF9fYnVpbHRpbl93YXNtX2F0b21pY193YWl0X2kzMiwgImlpKmlMTGkiLCAibiIpCiBCVUlMVElOKF9fYnVpbHRpbl93YXNtX2F0b21pY193YWl0X2k2NCwgImlMTGkqTExpTExpIiwgIm4iKQotQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9hdG9taWNfbm90aWZ5LCAiVWlpKmkiLCAibiIpCitCVUlMVElOKF9fYnVpbHRpbl93YXNtX2F0b21pY19ub3RpZnksICJVaWkqVWkiLCAibiIpCisKKy8vIFNhdHVyYXRpbmcgZnAtdG8taW50IGNvbnZlcnNpb25zCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV90cnVuY19zYXR1cmF0ZV9zX2kzMl9mMzIsICJpZiIsICJuYyIsICJub250cmFwcGluZy1mcHRvaW50IikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX3RydW5jX3NhdHVyYXRlX3VfaTMyX2YzMiwgImlmIiwgIm5jIiwgIm5vbnRyYXBwaW5nLWZwdG9pbnQiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fdHJ1bmNfc2F0dXJhdGVfc19pMzJfZjY0LCAiaWQiLCAibmMiLCAibm9udHJhcHBpbmctZnB0b2ludCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV90cnVuY19zYXR1cmF0ZV91X2kzMl9mNjQsICJpZCIsICJuYyIsICJub250cmFwcGluZy1mcHRvaW50IikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX3RydW5jX3NhdHVyYXRlX3NfaTY0X2YzMiwgIkxMaWYiLCAibmMiLCAibm9udHJhcHBpbmctZnB0b2ludCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV90cnVuY19zYXR1cmF0ZV91X2k2NF9mMzIsICJMTGlmIiwgIm5jIiwgIm5vbnRyYXBwaW5nLWZwdG9pbnQiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fdHJ1bmNfc2F0dXJhdGVfc19pNjRfZjY0LCAiTExpZCIsICJuYyIsICJub250cmFwcGluZy1mcHRvaW50IikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX3RydW5jX3NhdHVyYXRlX3VfaTY0X2Y2NCwgIkxMaWQiLCAibmMiLCAibm9udHJhcHBpbmctZnB0b2ludCIpCiAKIC8vIFNJTUQgYnVpbHRpbnMKLUJVSUxUSU4oX19idWlsdGluX3dhc21fZXh0cmFjdF9sYW5lX3NfaTh4MTYsICJpVjE2Y0lpIiwgIm5jIikKLUJVSUxUSU4oX19idWlsdGluX3dhc21fZXh0cmFjdF9sYW5lX3VfaTh4MTYsICJpVjE2Y0lpIiwgIm5jIikKLUJVSUxUSU4oX19idWlsdGluX3dhc21fZXh0cmFjdF9sYW5lX3NfaTE2eDgsICJpVjhzSWkiLCAibmMiKQotQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9leHRyYWN0X2xhbmVfdV9pMTZ4OCwgImlWOHNJaSIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX2V4dHJhY3RfbGFuZV9pMzJ4NCwgImlWNGlJaSIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX2V4dHJhY3RfbGFuZV9pNjR4MiwgIkxMaVYyTExpSWkiLCAibmMiKQotQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9leHRyYWN0X2xhbmVfZjMyeDQsICJmVjRmSWkiLCAibmMiKQotQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9leHRyYWN0X2xhbmVfZjY0eDIsICJkVjJkSWkiLCAibmMiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fZXh0cmFjdF9sYW5lX3NfaTh4MTYsICJpVjE2Y0lpIiwgIm5jIiwgInNpbWQxMjgiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fZXh0cmFjdF9sYW5lX3VfaTh4MTYsICJpVjE2Y0lpIiwgIm5jIiwgInVuaW1wbGVtZW50ZWQtc2ltZDEyOCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9leHRyYWN0X2xhbmVfc19pMTZ4OCwgImlWOHNJaSIsICJuYyIsICJzaW1kMTI4IikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX2V4dHJhY3RfbGFuZV91X2kxNng4LCAiaVY4c0lpIiwgIm5jIiwgInVuaW1wbGVtZW50ZWQtc2ltZDEyOCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9leHRyYWN0X2xhbmVfaTMyeDQsICJpVjRpSWkiLCAibmMiLCAic2ltZDEyOCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9leHRyYWN0X2xhbmVfaTY0eDIsICJMTGlWMkxMaUlpIiwgIm5jIiwgInVuaW1wbGVtZW50ZWQtc2ltZDEyOCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9leHRyYWN0X2xhbmVfZjMyeDQsICJmVjRmSWkiLCAibmMiLCAic2ltZDEyOCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9leHRyYWN0X2xhbmVfZjY0eDIsICJkVjJkSWkiLCAibmMiLCAidW5pbXBsZW1lbnRlZC1zaW1kMTI4IikKIAotQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9yZXBsYWNlX2xhbmVfaTh4MTYsICJWMTZjVjE2Y0lpaSIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX3JlcGxhY2VfbGFuZV9pMTZ4OCwgIlY4c1Y4c0lpaSIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX3JlcGxhY2VfbGFuZV9pMzJ4NCwgIlY0aVY0aUlpaSIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX3JlcGxhY2VfbGFuZV9pNjR4MiwgIlYyTExpVjJMTGlJaUxMaSIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX3JlcGxhY2VfbGFuZV9mMzJ4NCwgIlY0ZlY0ZklpZiIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX3JlcGxhY2VfbGFuZV9mNjR4MiwgIlYyZFYyZElpZCIsICJuYyIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9yZXBsYWNlX2xhbmVfaTh4MTYsICJWMTZjVjE2Y0lpaSIsICJuYyIsICJzaW1kMTI4IikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX3JlcGxhY2VfbGFuZV9pMTZ4OCwgIlY4c1Y4c0lpaSIsICJuYyIsICJzaW1kMTI4IikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX3JlcGxhY2VfbGFuZV9pMzJ4NCwgIlY0aVY0aUlpaSIsICJuYyIsICJzaW1kMTI4IikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX3JlcGxhY2VfbGFuZV9pNjR4MiwgIlYyTExpVjJMTGlJaUxMaSIsICJuYyIsICJ1bmltcGxlbWVudGVkLXNpbWQxMjgiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fcmVwbGFjZV9sYW5lX2YzMng0LCAiVjRmVjRmSWlmIiwgIm5jIiwgInNpbWQxMjgiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fcmVwbGFjZV9sYW5lX2Y2NHgyLCAiVjJkVjJkSWlkIiwgIm5jIiwgInVuaW1wbGVtZW50ZWQtc2ltZDEyOCIpCiAKLUJVSUxUSU4oX19idWlsdGluX3dhc21fYWRkX3NhdHVyYXRlX3NfaTh4MTYsICJWMTZjVjE2Y1YxNmMiLCAibmMiKQotQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9hZGRfc2F0dXJhdGVfdV9pOHgxNiwgIlYxNmNWMTZjVjE2YyIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX2FkZF9zYXR1cmF0ZV9zX2kxNng4LCAiVjhzVjhzVjhzIiwgIm5jIikKLUJVSUxUSU4oX19idWlsdGluX3dhc21fYWRkX3NhdHVyYXRlX3VfaTE2eDgsICJWOHNWOHNWOHMiLCAibmMiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fYWRkX3NhdHVyYXRlX3NfaTh4MTYsICJWMTZjVjE2Y1YxNmMiLCAibmMiLCAic2ltZDEyOCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9hZGRfc2F0dXJhdGVfdV9pOHgxNiwgIlYxNmNWMTZjVjE2YyIsICJuYyIsICJzaW1kMTI4IikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX2FkZF9zYXR1cmF0ZV9zX2kxNng4LCAiVjhzVjhzVjhzIiwgIm5jIiwgInNpbWQxMjgiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fYWRkX3NhdHVyYXRlX3VfaTE2eDgsICJWOHNWOHNWOHMiLCAibmMiLCAic2ltZDEyOCIpCiAKLUJVSUxUSU4oX19idWlsdGluX3dhc21fc3ViX3NhdHVyYXRlX3NfaTh4MTYsICJWMTZjVjE2Y1YxNmMiLCAibmMiKQotQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9zdWJfc2F0dXJhdGVfdV9pOHgxNiwgIlYxNmNWMTZjVjE2YyIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX3N1Yl9zYXR1cmF0ZV9zX2kxNng4LCAiVjhzVjhzVjhzIiwgIm5jIikKLUJVSUxUSU4oX19idWlsdGluX3dhc21fc3ViX3NhdHVyYXRlX3VfaTE2eDgsICJWOHNWOHNWOHMiLCAibmMiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fc3ViX3NhdHVyYXRlX3NfaTh4MTYsICJWMTZjVjE2Y1YxNmMiLCAibmMiLCAic2ltZDEyOCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9zdWJfc2F0dXJhdGVfdV9pOHgxNiwgIlYxNmNWMTZjVjE2YyIsICJuYyIsICJzaW1kMTI4IikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX3N1Yl9zYXR1cmF0ZV9zX2kxNng4LCAiVjhzVjhzVjhzIiwgIm5jIiwgInNpbWQxMjgiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fc3ViX3NhdHVyYXRlX3VfaTE2eDgsICJWOHNWOHNWOHMiLCAibmMiLCAic2ltZDEyOCIpCiAKLUJVSUxUSU4oX19idWlsdGluX3dhc21fYW55X3RydWVfaTh4MTYsICJpVjE2YyIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX2FueV90cnVlX2kxNng4LCAiaVY4cyIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX2FueV90cnVlX2kzMng0LCAiaVY0aSIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX2FueV90cnVlX2k2NHgyLCAiaVYyTExpIiwgIm5jIikKLUJVSUxUSU4oX19idWlsdGluX3dhc21fYWxsX3RydWVfaTh4MTYsICJpVjE2YyIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX2FsbF90cnVlX2kxNng4LCAiaVY4cyIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX2FsbF90cnVlX2kzMng0LCAiaVY0aSIsICJuYyIpCi1CVUlMVElOKF9fYnVpbHRpbl93YXNtX2FsbF90cnVlX2k2NHgyLCAiaVYyTExpIiwgIm5jIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX2JpdHNlbGVjdCwgIlY0aVY0aVY0aVY0aSIsICJuYyIsICJzaW1kMTI4IikKIAotQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9hYnNfZjMyeDQsICJWNGZWNGYiLCAibmMiKQotQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9hYnNfZjY0eDIsICJWMmRWMmQiLCAibmMiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fYW55X3RydWVfaTh4MTYsICJpVjE2YyIsICJuYyIsICJzaW1kMTI4IikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX2FueV90cnVlX2kxNng4LCAiaVY4cyIsICJuYyIsICJzaW1kMTI4IikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX2FueV90cnVlX2kzMng0LCAiaVY0aSIsICJuYyIsICJzaW1kMTI4IikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX2FueV90cnVlX2k2NHgyLCAiaVYyTExpIiwgIm5jIiwgInVuaW1wbGVtZW50ZWQtc2ltZDEyOCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9hbGxfdHJ1ZV9pOHgxNiwgImlWMTZjIiwgIm5jIiwgInNpbWQxMjgiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fYWxsX3RydWVfaTE2eDgsICJpVjhzIiwgIm5jIiwgInNpbWQxMjgiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fYWxsX3RydWVfaTMyeDQsICJpVjRpIiwgIm5jIiwgInNpbWQxMjgiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fYWxsX3RydWVfaTY0eDIsICJpVjJMTGkiLCAibmMiLCAidW5pbXBsZW1lbnRlZC1zaW1kMTI4IikKIAotQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9zcXJ0X2YzMng0LCAiVjRmVjRmIiwgIm5jIikKLUJVSUxUSU4oX19idWlsdGluX3dhc21fc3FydF9mNjR4MiwgIlYyZFYyZCIsICJuYyIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9hYnNfZjMyeDQsICJWNGZWNGYiLCAibmMiLCAic2ltZDEyOCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9hYnNfZjY0eDIsICJWMmRWMmQiLCAibmMiLCAidW5pbXBsZW1lbnRlZC1zaW1kMTI4IikKKworVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fbWluX2YzMng0LCAiVjRmVjRmVjRmIiwgIm5jIiwgInNpbWQxMjgiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fbWF4X2YzMng0LCAiVjRmVjRmVjRmIiwgIm5jIiwgInNpbWQxMjgiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fbWluX2Y2NHgyLCAiVjJkVjJkVjJkIiwgIm5jIiwgInVuaW1wbGVtZW50ZWQtc2ltZDEyOCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV9tYXhfZjY0eDIsICJWMmRWMmRWMmQiLCAibmMiLCAidW5pbXBsZW1lbnRlZC1zaW1kMTI4IikKKworVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fc3FydF9mMzJ4NCwgIlY0ZlY0ZiIsICJuYyIsICJ1bmltcGxlbWVudGVkLXNpbWQxMjgiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fc3FydF9mNjR4MiwgIlYyZFYyZCIsICJuYyIsICJ1bmltcGxlbWVudGVkLXNpbWQxMjgiKQorCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5fd2FzbV90cnVuY19zYXR1cmF0ZV9zX2kzMng0X2YzMng0LCAiVjRpVjRmIiwgIm5jIiwgInNpbWQxMjgiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fdHJ1bmNfc2F0dXJhdGVfdV9pMzJ4NF9mMzJ4NCwgIlY0aVY0ZiIsICJuYyIsICJzaW1kMTI4IikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl93YXNtX3RydW5jX3NhdHVyYXRlX3NfaTY0eDJfZjY0eDIsICJWMkxMaVYyZCIsICJuYyIsICJ1bmltcGxlbWVudGVkLXNpbWQxMjgiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX3dhc21fdHJ1bmNfc2F0dXJhdGVfdV9pNjR4Ml9mNjR4MiwgIlYyTExpVjJkIiwgIm5jIiwgInVuaW1wbGVtZW50ZWQtc2ltZDEyOCIpCiAKICN1bmRlZiBCVUlMVElOCisjdW5kZWYgVEFSR0VUX0JVSUxUSU4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zWDg2LmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zWDg2LmRlZgppbmRleCA0NWQzNjYzLi4zNzNmZjI0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc1g4Ni5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNYODYuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQnVpbHRpbnNYODYuZGVmIC0gWDg2IEJ1aWx0aW4gZnVuY3Rpb24gZGF0YWJhc2UgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC02OTMsNiArNjkyLDEwIEBACiAvLyBYU0FWRQogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfeHNhdmUsICJ2dipVTExpIiwgIm4iLCAieHNhdmUiKQogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfeHJzdG9yLCAidnYqVUxMaSIsICJuIiwgInhzYXZlIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3hnZXRidiwgIlVMTGlVaSIsICJuIiwgInhzYXZlIikKK1RBUkdFVF9IRUFERVJfQlVJTFRJTihfeGdldGJ2LCAiVVdpVWkiLCAibmgiLCAiaW1taW50cmluLmgiLCBBTExfTVNfTEFOR1VBR0VTLCAiIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3hzZXRidiwgInZVaVVMTGkiLCAibiIsICJ4c2F2ZSIpCitUQVJHRVRfSEVBREVSX0JVSUxUSU4oX3hzZXRidiwgInZVaVVXaSIsICJuaCIsICJpbW1pbnRyaW4uaCIsIEFMTF9NU19MQU5HVUFHRVMsICIiKQogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfeHNhdmVvcHQsICJ2dipVTExpIiwgIm4iLCAieHNhdmVvcHQiKQogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfeHJzdG9ycywgInZ2KlVMTGkiLCAibiIsICJ4c2F2ZXMiKQogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfeHNhdmVjLCAidnYqVUxMaSIsICJuIiwgInhzYXZlYyIpCkBAIC03MTksOCArNzIyLDcgQEAKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3dibm9pbnZkLCAidiIsICJuIiwgIndibm9pbnZkIikKIAogLy8gQURYCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9hZGRjYXJyeXhfdTMyLCAiVWNVY1VpVWlVaSoiLCAibiIsICJhZHgiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfYWRkY2FycnlfdTMyLCAiVWNVY1VpVWlVaSoiLCAibiIsICIiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfYWRkY2Fycnl4X3UzMiwgIlVjVWNVaVVpVWkqIiwgIm4iLCAiIikKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3N1YmJvcnJvd191MzIsICJVY1VjVWlVaVVpKiIsICJuIiwgIiIpCiAKIC8vIFJEU0VFRApAQCAtOTY5LDQ3ICs5NzEsNDcgQEAKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3ZwZHB3c3NkczI1NiwgIlY4aVY4aVY4aVY4aSIsICJuY1Y6MjU2OiIsICJhdng1MTJ2bCxhdng1MTJ2bm5pIikKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3ZwZHB3c3NkczUxMiwgIlYxNmlWMTZpVjE2aVYxNmkiLCAibmNWOjUxMjoiLCAiYXZ4NTEydm5uaSIpCiAKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcjNkaXYyZGYsICJWMmRWMmRkQypWMkxMaVVjSWkiLCAiblY6MTI4OiIsICJhdng1MTJ2bCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2MmRpLCAiVjJMTGlWMkxMaUxMaUMqVjJMTGlVY0lpIiwgIm5WOjEyODoiLCAiYXZ4NTEydmwiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVyM2RpdjRkZiwgIlY0ZFY0ZGRDKlY0TExpVWNJaSIsICJuVjoyNTY6IiwgImF2eDUxMnZsIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcjNkaXY0ZGksICJWNExMaVY0TExpTExpQypWNExMaVVjSWkiLCAiblY6MjU2OiIsICJhdng1MTJ2bCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2NHNmLCAiVjRmVjRmZkMqVjJMTGlVY0lpIiwgIm5WOjEyODoiLCAiYXZ4NTEydmwiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVyM2RpdjRzaSwgIlY0aVY0aWlDKlYyTExpVWNJaSIsICJuVjoxMjg6IiwgImF2eDUxMnZsIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcjNkaXY4c2YsICJWNGZWNGZmQypWNExMaVVjSWkiLCAiblY6MjU2OiIsICJhdng1MTJ2bCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2OHNpLCAiVjRpVjRpaUMqVjRMTGlVY0lpIiwgIm5WOjI1NjoiLCAiYXZ4NTEydmwiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjJkZiwgIlYyZFYyZGRDKlY0aVVjSWkiLCAiblY6MTI4OiIsICJhdng1MTJ2bCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2MmRpLCAiVjJMTGlWMkxMaUxMaUMqVjRpVWNJaSIsICJuVjoxMjg6IiwgImF2eDUxMnZsIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcjNzaXY0ZGYsICJWNGRWNGRkQypWNGlVY0lpIiwgIm5WOjI1NjoiLCAiYXZ4NTEydmwiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjRkaSwgIlY0TExpVjRMTGlMTGlDKlY0aVVjSWkiLCAiblY6MjU2OiIsICJhdng1MTJ2bCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2NHNmLCAiVjRmVjRmZkMqVjRpVWNJaSIsICJuVjoxMjg6IiwgImF2eDUxMnZsIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcjNzaXY0c2ksICJWNGlWNGlpQypWNGlVY0lpIiwgIm5WOjEyODoiLCAiYXZ4NTEydmwiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjhzZiwgIlY4ZlY4ZmZDKlY4aVVjSWkiLCAiblY6MjU2OiIsICJhdng1MTJ2bCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2OHNpLCAiVjhpVjhpaUMqVjhpVWNJaSIsICJuVjoyNTY6IiwgImF2eDUxMnZsIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcnNpdjhkZiwgIlY4ZFY4ZGRDKlY4aVVjSWkiLCAiblY6NTEyOiIsICJhdng1MTJmIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcnNpdjE2c2YsICJWMTZmVjE2ZmZDKlYxNmZVc0lpIiwgIm5WOjUxMjoiLCAiYXZ4NTEyZiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXJkaXY4ZGYsICJWOGRWOGRkQypWOExMaVVjSWkiLCAiblY6NTEyOiIsICJhdng1MTJmIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcmRpdjE2c2YsICJWOGZWOGZmQypWOExMaVVjSWkiLCAiblY6NTEyOiIsICJhdng1MTJmIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcnNpdjhkaSwgIlY4TExpVjhMTGlMTGlDKlY4aVVjSWkiLCAiblY6NTEyOiIsICJhdng1MTJmIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcnNpdjE2c2ksICJWMTZpVjE2aWlDKlYxNmlVc0lpIiwgIm5WOjUxMjoiLCAiYXZ4NTEyZiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXJkaXY4ZGksICJWOExMaVY4TExpTExpQypWOExMaVVjSWkiLCAiblY6NTEyOiIsICJhdng1MTJmIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcmRpdjE2c2ksICJWOGlWOGlpQypWOExMaVVjSWkiLCAiblY6NTEyOiIsICJhdng1MTJmIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY4ZGYsICJ2ZCpVY1Y4aVY4ZElpIiwgIm5WOjUxMjoiLCAiYXZ4NTEyZiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2MTZzZiwgInZmKlVzVjE2aVYxNmZJaSIsICJuVjo1MTI6IiwgImF2eDUxMmYiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjhkZiwgICJ2ZCpVY1Y4TExpVjhkSWkiLCAiblY6NTEyOiIsICJhdng1MTJmIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXYxNnNmLCAidmYqVWNWOExMaVY4ZklpIiwgIm5WOjUxMjoiLCAiYXZ4NTEyZiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2OGRpLCAgInZMTGkqVWNWOGlWOExMaUlpIiwgIm5WOjUxMjoiLCAiYXZ4NTEyZiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2MTZzaSwgInZpKlVzVjE2aVYxNmlJaSIsICJuVjo1MTI6IiwgImF2eDUxMmYiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjhkaSwgICJ2TExpKlVjVjhMTGlWOExMaUlpIiwgIm5WOjUxMjoiLCAiYXZ4NTEyZiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2MTZzaSwgInZpKlVjVjhMTGlWOGlJaSIsICJuVjo1MTI6IiwgImF2eDUxMmYiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVyM2RpdjJkZiwgIlYyZFYyZHZDKlYyTExpVWNJaSIsICJuVjoxMjg6IiwgImF2eDUxMnZsIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcjNkaXYyZGksICJWMkxMaVYyTExpdkMqVjJMTGlVY0lpIiwgIm5WOjEyODoiLCAiYXZ4NTEydmwiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVyM2RpdjRkZiwgIlY0ZFY0ZHZDKlY0TExpVWNJaSIsICJuVjoyNTY6IiwgImF2eDUxMnZsIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcjNkaXY0ZGksICJWNExMaVY0TExpdkMqVjRMTGlVY0lpIiwgIm5WOjI1NjoiLCAiYXZ4NTEydmwiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVyM2RpdjRzZiwgIlY0ZlY0ZnZDKlYyTExpVWNJaSIsICJuVjoxMjg6IiwgImF2eDUxMnZsIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcjNkaXY0c2ksICJWNGlWNGl2QypWMkxMaVVjSWkiLCAiblY6MTI4OiIsICJhdng1MTJ2bCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2OHNmLCAiVjRmVjRmdkMqVjRMTGlVY0lpIiwgIm5WOjI1NjoiLCAiYXZ4NTEydmwiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVyM2RpdjhzaSwgIlY0aVY0aXZDKlY0TExpVWNJaSIsICJuVjoyNTY6IiwgImF2eDUxMnZsIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcjNzaXYyZGYsICJWMmRWMmR2QypWNGlVY0lpIiwgIm5WOjEyODoiLCAiYXZ4NTEydmwiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjJkaSwgIlYyTExpVjJMTGl2QypWNGlVY0lpIiwgIm5WOjEyODoiLCAiYXZ4NTEydmwiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjRkZiwgIlY0ZFY0ZHZDKlY0aVVjSWkiLCAiblY6MjU2OiIsICJhdng1MTJ2bCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2NGRpLCAiVjRMTGlWNExMaXZDKlY0aVVjSWkiLCAiblY6MjU2OiIsICJhdng1MTJ2bCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2NHNmLCAiVjRmVjRmdkMqVjRpVWNJaSIsICJuVjoxMjg6IiwgImF2eDUxMnZsIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcjNzaXY0c2ksICJWNGlWNGl2QypWNGlVY0lpIiwgIm5WOjEyODoiLCAiYXZ4NTEydmwiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjhzZiwgIlY4ZlY4ZnZDKlY4aVVjSWkiLCAiblY6MjU2OiIsICJhdng1MTJ2bCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2OHNpLCAiVjhpVjhpdkMqVjhpVWNJaSIsICJuVjoyNTY6IiwgImF2eDUxMnZsIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcnNpdjhkZiwgIlY4ZFY4ZHZDKlY4aVVjSWkiLCAiblY6NTEyOiIsICJhdng1MTJmIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcnNpdjE2c2YsICJWMTZmVjE2ZnZDKlYxNmlVc0lpIiwgIm5WOjUxMjoiLCAiYXZ4NTEyZiIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXJkaXY4ZGYsICJWOGRWOGR2QypWOExMaVVjSWkiLCAiblY6NTEyOiIsICJhdng1MTJmIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcmRpdjE2c2YsICJWOGZWOGZ2QypWOExMaVVjSWkiLCAiblY6NTEyOiIsICJhdng1MTJmIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcnNpdjhkaSwgIlY4TExpVjhMTGl2QypWOGlVY0lpIiwgIm5WOjUxMjoiLCAiYXZ4NTEyZiIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXJzaXYxNnNpLCAiVjE2aVYxNml2QypWMTZpVXNJaSIsICJuVjo1MTI6IiwgImF2eDUxMmYiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVyZGl2OGRpLCAiVjhMTGlWOExMaXZDKlY4TExpVWNJaSIsICJuVjo1MTI6IiwgImF2eDUxMmYiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVyZGl2MTZzaSwgIlY4aVY4aXZDKlY4TExpVWNJaSIsICJuVjo1MTI6IiwgImF2eDUxMmYiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjhkZiwgInZ2KlVjVjhpVjhkSWkiLCAiblY6NTEyOiIsICJhdng1MTJmIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXYxNnNmLCAidnYqVXNWMTZpVjE2ZklpIiwgIm5WOjUxMjoiLCAiYXZ4NTEyZiIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2OGRmLCAgInZ2KlVjVjhMTGlWOGRJaSIsICJuVjo1MTI6IiwgImF2eDUxMmYiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjE2c2YsICJ2dipVY1Y4TExpVjhmSWkiLCAiblY6NTEyOiIsICJhdng1MTJmIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY4ZGksICAidnYqVWNWOGlWOExMaUlpIiwgIm5WOjUxMjoiLCAiYXZ4NTEyZiIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2MTZzaSwgInZ2KlVzVjE2aVYxNmlJaSIsICJuVjo1MTI6IiwgImF2eDUxMmYiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjhkaSwgICJ2dipVY1Y4TExpVjhMTGlJaSIsICJuVjo1MTI6IiwgImF2eDUxMmYiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjE2c2ksICJ2dipVY1Y4TExpVjhpSWkiLCAiblY6NTEyOiIsICJhdng1MTJmIikKIAotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVycGZkcGQsICAidlVjVjhpTExpQypJaUlpIiwgIm5WOjUxMjoiLCAiYXZ4NTEycGYiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfZ2F0aGVycGZkcHMsICAidlVzVjE2aWlDKklpSWkiLCAiblY6NTEyOiIsICJhdng1MTJwZiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXJwZnFwZCwgICJ2VWNWOExMaUxMaUMqSWlJaSIsICJuVjo1MTI6IiwgImF2eDUxMnBmIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcnBmcXBzLCAgInZVY1Y4TExpaUMqSWlJaSIsICJuVjo1MTI6IiwgImF2eDUxMnBmIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJwZmRwZCwgInZVY1Y4aUxMaSpJaUlpIiwgIm5WOjUxMjoiLCAiYXZ4NTEycGYiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcnBmZHBzLCAidlVzVjE2aWkqSWlJaSIsICJuVjo1MTI6IiwgImF2eDUxMnBmIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJwZnFwZCwgInZVY1Y4TExpTExpKklpSWkiLCAiblY6NTEyOiIsICJhdng1MTJwZiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVycGZxcHMsICJ2VWNWOExMaWkqSWlJaSIsICJuVjo1MTI6IiwgImF2eDUxMnBmIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcnBmZHBkLCAgInZVY1Y4aXZDKklpSWkiLCAiblY6NTEyOiIsICJhdng1MTJwZiIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9nYXRoZXJwZmRwcywgICJ2VXNWMTZpdkMqSWlJaSIsICJuVjo1MTI6IiwgImF2eDUxMnBmIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcnBmcXBkLCAgInZVY1Y4TExpdkMqSWlJaSIsICJuVjo1MTI6IiwgImF2eDUxMnBmIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2dhdGhlcnBmcXBzLCAgInZVY1Y4TExpdkMqSWlJaSIsICJuVjo1MTI6IiwgImF2eDUxMnBmIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJwZmRwZCwgInZVY1Y4aXYqSWlJaSIsICJuVjo1MTI6IiwgImF2eDUxMnBmIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJwZmRwcywgInZVc1YxNml2KklpSWkiLCAiblY6NTEyOiIsICJhdng1MTJwZiIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVycGZxcGQsICJ2VWNWOExMaXYqSWlJaSIsICJuVjo1MTI6IiwgImF2eDUxMnBmIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJwZnFwcywgInZVY1Y4TExpdipJaUlpIiwgIm5WOjUxMjoiLCAiYXZ4NTEycGYiKQogCiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9rbm90cWksICJVY1VjIiwgIm5jIiwgImF2eDUxMmRxIikKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2tub3RoaSwgIlVzVXMiLCAibmMiLCAiYXZ4NTEyZiIpCkBAIC0xMDY1LDEyICsxMDY3LDEyIEBACiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9wc3VidXNiNTEyLCAiVjY0Y1Y2NGNWNjRjIiwgIm5jVjo1MTI6IiwgImF2eDUxMmJ3IikKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3BzdWJ1c3c1MTIsICJWMzJzVjMyc1YzMnMiLCAibmNWOjUxMjoiLCAiYXZ4NTEyYnciKQogCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0ZGlfMTI4X21hc2ssICJWMkxMaVYyTExpVjJMTGlVYyIsICJuY1Y6MTI4OiIsICJhdng1MTJjZCxhdng1MTJ2bCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0ZGlfMjU2X21hc2ssICJWNExMaVY0TExpVjRMTGlVYyIsICJuY1Y6MjU2OiIsICJhdng1MTJjZCxhdng1MTJ2bCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0c2lfMTI4X21hc2ssICJWNGlWNGlWNGlVYyIsICJuY1Y6MTI4OiIsICJhdng1MTJjZCxhdng1MTJ2bCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0c2lfMjU2X21hc2ssICJWOGlWOGlWOGlVYyIsICJuY1Y6MjU2OiIsICJhdng1MTJjZCxhdng1MTJ2bCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0ZGlfNTEyX21hc2ssICJWOExMaVY4TExpVjhMTGlVYyIsICJuY1Y6NTEyOiIsICJhdng1MTJjZCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0c2lfNTEyX21hc2ssICJWMTZpVjE2aVYxNmlVcyIsICJuY1Y6NTEyOiIsICJhdng1MTJjZCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0ZGlfMTI4LCAiVjJMTGlWMkxMaSIsICJuY1Y6MTI4OiIsICJhdng1MTJjZCxhdng1MTJ2bCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0ZGlfMjU2LCAiVjRMTGlWNExMaSIsICJuY1Y6MjU2OiIsICJhdng1MTJjZCxhdng1MTJ2bCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0c2lfMTI4LCAiVjRpVjRpIiwgIm5jVjoxMjg6IiwgImF2eDUxMmNkLGF2eDUxMnZsIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3ZwY29uZmxpY3RzaV8yNTYsICJWOGlWOGkiLCAibmNWOjI1NjoiLCAiYXZ4NTEyY2QsYXZ4NTEydmwiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBjb25mbGljdGRpXzUxMiwgIlY4TExpVjhMTGkiLCAibmNWOjUxMjoiLCAiYXZ4NTEyY2QiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBjb25mbGljdHNpXzUxMiwgIlYxNmlWMTZpIiwgIm5jVjo1MTI6IiwgImF2eDUxMmNkIikKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3ZwbHpjbnRkXzUxMiwgIlYxNmlWMTZpIiwgIm5jVjo1MTI6IiwgImF2eDUxMmNkIikKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3ZwbHpjbnRxXzUxMiwgIlY4TExpVjhMTGkiLCAibmNWOjUxMjoiLCAiYXZ4NTEyY2QiKQogCkBAIC0xMjExLDIyICsxMjEzLDIyIEBACiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2FsZWZwczEyOF9tYXNrLCAiVjRmVjRmVjRmVjRmVWMiLCAibmNWOjEyODoiLCAiYXZ4NTEydmwiKQogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhbGVmcHMyNTZfbWFzaywgIlY4ZlY4ZlY4ZlY4ZlVjIiwgIm5jVjoyNTY6IiwgImF2eDUxMnZsIikKIAotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjJkZiwgInZkKlVjVjJMTGlWMmRJaSIsICJuVjoxMjg6IiwgImF2eDUxMnZsIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXYyZGksICJ2TExpKlVjVjJMTGlWMkxMaUlpIiwgIm5WOjEyODoiLCAiYXZ4NTEydmwiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjRkZiwgInZkKlVjVjRMTGlWNGRJaSIsICJuVjoyNTY6IiwgImF2eDUxMnZsIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXY0ZGksICJ2TExpKlVjVjRMTGlWNExMaUlpIiwgIm5WOjI1NjoiLCAiYXZ4NTEydmwiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjRzZiwgInZmKlVjVjJMTGlWNGZJaSIsICJuVjoxMjg6IiwgImF2eDUxMnZsIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXY0c2ksICJ2aSpVY1YyTExpVjRpSWkiLCAiblY6MTI4OiIsICJhdng1MTJ2bCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2OHNmLCAidmYqVWNWNExMaVY0ZklpIiwgIm5WOjI1NjoiLCAiYXZ4NTEydmwiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjhzaSwgInZpKlVjVjRMTGlWNGlJaSIsICJuVjoyNTY6IiwgImF2eDUxMnZsIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXYyZGYsICJ2ZCpVY1Y0aVYyZElpIiwgIm5WOjEyODoiLCAiYXZ4NTEydmwiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjJkaSwgInZMTGkqVWNWNGlWMkxMaUlpIiwgIm5WOjEyODoiLCAiYXZ4NTEydmwiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjRkZiwgInZkKlVjVjRpVjRkSWkiLCAiblY6MjU2OiIsICJhdng1MTJ2bCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2NGRpLCAidkxMaSpVY1Y0aVY0TExpSWkiLCAiblY6MjU2OiIsICJhdng1MTJ2bCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2NHNmLCAidmYqVWNWNGlWNGZJaSIsICJuVjoxMjg6IiwgImF2eDUxMnZsIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY0c2ksICJ2aSpVY1Y0aVY0aUlpIiwgIm5WOjEyODoiLCAiYXZ4NTEydmwiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjhzZiwgInZmKlVjVjhpVjhmSWkiLCAiblY6MjU2OiIsICJhdng1MTJ2bCIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2OHNpLCAidmkqVWNWOGlWOGlJaSIsICJuVjoyNTY6IiwgImF2eDUxMnZsIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXYyZGYsICJ2dipVY1YyTExpVjJkSWkiLCAiblY6MTI4OiIsICJhdng1MTJ2bCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2MmRpLCAidnYqVWNWMkxMaVYyTExpSWkiLCAiblY6MTI4OiIsICJhdng1MTJ2bCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2NGRmLCAidnYqVWNWNExMaVY0ZElpIiwgIm5WOjI1NjoiLCAiYXZ4NTEydmwiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjRkaSwgInZ2KlVjVjRMTGlWNExMaUlpIiwgIm5WOjI1NjoiLCAiYXZ4NTEydmwiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjRzZiwgInZ2KlVjVjJMTGlWNGZJaSIsICJuVjoxMjg6IiwgImF2eDUxMnZsIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXY0c2ksICJ2dipVY1YyTExpVjRpSWkiLCAiblY6MTI4OiIsICJhdng1MTJ2bCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2OHNmLCAidnYqVWNWNExMaVY0ZklpIiwgIm5WOjI1NjoiLCAiYXZ4NTEydmwiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjhzaSwgInZ2KlVjVjRMTGlWNGlJaSIsICJuVjoyNTY6IiwgImF2eDUxMnZsIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXYyZGYsICJ2dipVY1Y0aVYyZElpIiwgIm5WOjEyODoiLCAiYXZ4NTEydmwiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjJkaSwgInZ2KlVjVjRpVjJMTGlJaSIsICJuVjoxMjg6IiwgImF2eDUxMnZsIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY0ZGYsICJ2dipVY1Y0aVY0ZElpIiwgIm5WOjI1NjoiLCAiYXZ4NTEydmwiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjRkaSwgInZ2KlVjVjRpVjRMTGlJaSIsICJuVjoyNTY6IiwgImF2eDUxMnZsIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY0c2YsICJ2dipVY1Y0aVY0ZklpIiwgIm5WOjEyODoiLCAiYXZ4NTEydmwiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjRzaSwgInZ2KlVjVjRpVjRpSWkiLCAiblY6MTI4OiIsICJhdng1MTJ2bCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2OHNmLCAidnYqVWNWOGlWOGZJaSIsICJuVjoyNTY6IiwgImF2eDUxMnZsIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY4c2ksICJ2dipVY1Y4aVY4aUlpIiwgIm5WOjI1NjoiLCAiYXZ4NTEydmwiKQogCiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cGVybWkydmFyZDEyOCwgIlY0aVY0aVY0aVY0aSIsICJuY1Y6MTI4OiIsICJhdng1MTJ2bCIpCiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cGVybWkydmFyZDI1NiwgIlY4aVY4aVY4aVY4aSIsICJuY1Y6MjU2OiIsICJhdng1MTJ2bCIpCkBAIC0xMjU3LDQzICsxMjU5LDI1IEBACiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNobGR3MjU2LCAiVjE2c1YxNnNWMTZzSWkiLCAibmNWOjI1NjoiLCAiYXZ4NTEydmwsYXZ4NTEydmJtaTIiKQogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaGxkdzUxMiwgIlYzMnNWMzJzVjMyc0lpIiwgIm5jVjo1MTI6IiwgImF2eDUxMnZibWkyIikKIAotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaGxkdmQxMjhfbWFzaywgIlY0aVY0aVY0aVY0aVVjIiwgIm5jVjoxMjg6IiwgImF2eDUxMnZsLGF2eDUxMnZibWkyIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZkMjU2X21hc2ssICJWOGlWOGlWOGlWOGlVYyIsICJuY1Y6MjU2OiIsICJhdng1MTJ2bCxhdng1MTJ2Ym1pMiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNobGR2ZDUxMl9tYXNrLCAiVjE2aVYxNmlWMTZpVjE2aVVzIiwgIm5jVjo1MTI6IiwgImF2eDUxMnZibWkyIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZxMTI4X21hc2ssICJWMkxMaVYyTExpVjJMTGlWMkxMaVVjIiwgIm5jVjoxMjg6IiwgImF2eDUxMnZsLGF2eDUxMnZibWkyIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZxMjU2X21hc2ssICJWNExMaVY0TExpVjRMTGlWNExMaVVjIiwgIm5jVjoyNTY6IiwgImF2eDUxMnZsLGF2eDUxMnZibWkyIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZxNTEyX21hc2ssICJWOExMaVY4TExpVjhMTGlWOExMaVVjIiwgIm5jVjo1MTI6IiwgImF2eDUxMnZibWkyIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZ3MTI4X21hc2ssICJWOHNWOHNWOHNWOHNVYyIsICJuY1Y6MTI4OiIsICJhdng1MTJ2bCxhdng1MTJ2Ym1pMiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNobGR2dzI1Nl9tYXNrLCAiVjE2c1YxNnNWMTZzVjE2c1VzIiwgIm5jVjoyNTY6IiwgImF2eDUxMnZsLGF2eDUxMnZibWkyIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZ3NTEyX21hc2ssICJWMzJzVjMyc1YzMnNWMzJzVWkiLCAibmNWOjUxMjoiLCAiYXZ4NTEydmJtaTIiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaGxkdmQxMjhfbWFza3osICJWNGlWNGlWNGlWNGlVYyIsICJuY1Y6MTI4OiIsICJhdng1MTJ2bCxhdng1MTJ2Ym1pMiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNobGR2ZDI1Nl9tYXNreiwgIlY4aVY4aVY4aVY4aVVjIiwgIm5jVjoyNTY6IiwgImF2eDUxMnZsLGF2eDUxMnZibWkyIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZkNTEyX21hc2t6LCAiVjE2aVYxNmlWMTZpVjE2aVVzIiwgIm5jVjo1MTI6IiwgImF2eDUxMnZibWkyIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZxMTI4X21hc2t6LCAiVjJMTGlWMkxMaVYyTExpVjJMTGlVYyIsICJuY1Y6MTI4OiIsICJhdng1MTJ2bCxhdng1MTJ2Ym1pMiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNobGR2cTI1Nl9tYXNreiwgIlY0TExpVjRMTGlWNExMaVY0TExpVWMiLCAibmNWOjI1NjoiLCAiYXZ4NTEydmwsYXZ4NTEydmJtaTIiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaGxkdnE1MTJfbWFza3osICJWOExMaVY4TExpVjhMTGlWOExMaVVjIiwgIm5jVjo1MTI6IiwgImF2eDUxMnZibWkyIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZ3MTI4X21hc2t6LCAiVjhzVjhzVjhzVjhzVWMiLCAibmNWOjEyODoiLCAiYXZ4NTEydmwsYXZ4NTEydmJtaTIiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaGxkdncyNTZfbWFza3osICJWMTZzVjE2c1YxNnNWMTZzVXMiLCAibmNWOjI1NjoiLCAiYXZ4NTEydmwsYXZ4NTEydmJtaTIiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaGxkdnc1MTJfbWFza3osICJWMzJzVjMyc1YzMnNWMzJzVWkiLCAibmNWOjUxMjoiLCAiYXZ4NTEydmJtaTIiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaGxkdmQxMjgsICJWNGlWNGlWNGlWNGkiLCAibmNWOjEyODoiLCAiYXZ4NTEydmwsYXZ4NTEydmJtaTIiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaGxkdmQyNTYsICJWOGlWOGlWOGlWOGkiLCAibmNWOjI1NjoiLCAiYXZ4NTEydmwsYXZ4NTEydmJtaTIiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaGxkdmQ1MTIsICJWMTZpVjE2aVYxNmlWMTZpIiwgIm5jVjo1MTI6IiwgImF2eDUxMnZibWkyIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZxMTI4LCAiVjJMTGlWMkxMaVYyTExpVjJMTGkiLCAibmNWOjEyODoiLCAiYXZ4NTEydmwsYXZ4NTEydmJtaTIiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaGxkdnEyNTYsICJWNExMaVY0TExpVjRMTGlWNExMaSIsICJuY1Y6MjU2OiIsICJhdng1MTJ2bCxhdng1MTJ2Ym1pMiIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNobGR2cTUxMiwgIlY4TExpVjhMTGlWOExMaVY4TExpIiwgIm5jVjo1MTI6IiwgImF2eDUxMnZibWkyIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZ3MTI4LCAiVjhzVjhzVjhzVjhzIiwgIm5jVjoxMjg6IiwgImF2eDUxMnZsLGF2eDUxMnZibWkyIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZ3MjU2LCAiVjE2c1YxNnNWMTZzVjE2cyIsICJuY1Y6MjU2OiIsICJhdng1MTJ2bCxhdng1MTJ2Ym1pMiIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNobGR2dzUxMiwgIlYzMnNWMzJzVjMyc1YzMnMiLCAibmNWOjUxMjoiLCAiYXZ4NTEydmJtaTIiKQogCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNocmR2ZDEyOF9tYXNrLCAiVjRpVjRpVjRpVjRpVWMiLCAibmNWOjEyODoiLCAiYXZ4NTEydmwsYXZ4NTEydmJtaTIiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaHJkdmQyNTZfbWFzaywgIlY4aVY4aVY4aVY4aVVjIiwgIm5jVjoyNTY6IiwgImF2eDUxMnZsLGF2eDUxMnZibWkyIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZkNTEyX21hc2ssICJWMTZpVjE2aVYxNmlWMTZpVXMiLCAibmNWOjUxMjoiLCAiYXZ4NTEydmJtaTIiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaHJkdnExMjhfbWFzaywgIlYyTExpVjJMTGlWMkxMaVYyTExpVWMiLCAibmNWOjEyODoiLCAiYXZ4NTEydmwsYXZ4NTEydmJtaTIiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaHJkdnEyNTZfbWFzaywgIlY0TExpVjRMTGlWNExMaVY0TExpVWMiLCAibmNWOjI1NjoiLCAiYXZ4NTEydmwsYXZ4NTEydmJtaTIiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaHJkdnE1MTJfbWFzaywgIlY4TExpVjhMTGlWOExMaVY4TExpVWMiLCAibmNWOjUxMjoiLCAiYXZ4NTEydmJtaTIiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaHJkdncxMjhfbWFzaywgIlY4c1Y4c1Y4c1Y4c1VjIiwgIm5jVjoxMjg6IiwgImF2eDUxMnZsLGF2eDUxMnZibWkyIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZ3MjU2X21hc2ssICJWMTZzVjE2c1YxNnNWMTZzVXMiLCAibmNWOjI1NjoiLCAiYXZ4NTEydmwsYXZ4NTEydmJtaTIiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaHJkdnc1MTJfbWFzaywgIlYzMnNWMzJzVjMyc1YzMnNVaSIsICJuY1Y6NTEyOiIsICJhdng1MTJ2Ym1pMiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNocmR2ZDEyOF9tYXNreiwgIlY0aVY0aVY0aVY0aVVjIiwgIm5jVjoxMjg6IiwgImF2eDUxMnZsLGF2eDUxMnZibWkyIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZkMjU2X21hc2t6LCAiVjhpVjhpVjhpVjhpVWMiLCAibmNWOjI1NjoiLCAiYXZ4NTEydmwsYXZ4NTEydmJtaTIiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaHJkdmQ1MTJfbWFza3osICJWMTZpVjE2aVYxNmlWMTZpVXMiLCAibmNWOjUxMjoiLCAiYXZ4NTEydmJtaTIiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaHJkdnExMjhfbWFza3osICJWMkxMaVYyTExpVjJMTGlWMkxMaVVjIiwgIm5jVjoxMjg6IiwgImF2eDUxMnZsLGF2eDUxMnZibWkyIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZxMjU2X21hc2t6LCAiVjRMTGlWNExMaVY0TExpVjRMTGlVYyIsICJuY1Y6MjU2OiIsICJhdng1MTJ2bCxhdng1MTJ2Ym1pMiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNocmR2cTUxMl9tYXNreiwgIlY4TExpVjhMTGlWOExMaVY4TExpVWMiLCAibmNWOjUxMjoiLCAiYXZ4NTEydmJtaTIiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaHJkdncxMjhfbWFza3osICJWOHNWOHNWOHNWOHNVYyIsICJuY1Y6MTI4OiIsICJhdng1MTJ2bCxhdng1MTJ2Ym1pMiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNocmR2dzI1Nl9tYXNreiwgIlYxNnNWMTZzVjE2c1YxNnNVcyIsICJuY1Y6MjU2OiIsICJhdng1MTJ2bCxhdng1MTJ2Ym1pMiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNocmR2dzUxMl9tYXNreiwgIlYzMnNWMzJzVjMyc1YzMnNVaSIsICJuY1Y6NTEyOiIsICJhdng1MTJ2Ym1pMiIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNocmR2ZDEyOCwgIlY0aVY0aVY0aVY0aSIsICJuY1Y6MTI4OiIsICJhdng1MTJ2bCxhdng1MTJ2Ym1pMiIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNocmR2ZDI1NiwgIlY4aVY4aVY4aVY4aSIsICJuY1Y6MjU2OiIsICJhdng1MTJ2bCxhdng1MTJ2Ym1pMiIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNocmR2ZDUxMiwgIlYxNmlWMTZpVjE2aVYxNmkiLCAibmNWOjUxMjoiLCAiYXZ4NTEydmJtaTIiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaHJkdnExMjgsICJWMkxMaVYyTExpVjJMTGlWMkxMaSIsICJuY1Y6MTI4OiIsICJhdng1MTJ2bCxhdng1MTJ2Ym1pMiIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNocmR2cTI1NiwgIlY0TExpVjRMTGlWNExMaVY0TExpIiwgIm5jVjoyNTY6IiwgImF2eDUxMnZsLGF2eDUxMnZibWkyIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZxNTEyLCAiVjhMTGlWOExMaVY4TExpVjhMTGkiLCAibmNWOjUxMjoiLCAiYXZ4NTEydmJtaTIiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaHJkdncxMjgsICJWOHNWOHNWOHNWOHMiLCAibmNWOjEyODoiLCAiYXZ4NTEydmwsYXZ4NTEydmJtaTIiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBzaHJkdncyNTYsICJWMTZzVjE2c1YxNnNWMTZzIiwgIm5jVjoyNTY6IiwgImF2eDUxMnZsLGF2eDUxMnZibWkyIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZ3NTEyLCAiVjMyc1YzMnNWMzJzVjMycyIsICJuY1Y6NTEyOiIsICJhdng1MTJ2Ym1pMiIpCiAKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3Zwc2hyZGQxMjgsICJWNGlWNGlWNGlJaSIsICJuY1Y6MTI4OiIsICJhdng1MTJ2bCxhdng1MTJ2Ym1pMiIpCiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cHNocmRkMjU2LCAiVjhpVjhpVjhpSWkiLCAibmNWOjI1NjoiLCAiYXZ4NTEydmwsYXZ4NTEydmJtaTIiKQpAQCAtMTMxNyw3ICsxMzAxLDYgQEAKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2N2dHBzMnVxcTEyOF9tYXNrLCAiVjJMTGlWNGZWMkxMaVVjIiwgIm5jVjoxMjg6IiwgImF2eDUxMnZsLGF2eDUxMmRxIikKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2N2dHBzMnVxcTI1Nl9tYXNrLCAiVjRMTGlWNGZWNExMaVVjIiwgIm5jVjoyNTY6IiwgImF2eDUxMnZsLGF2eDUxMmRxIikKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2N2dHFxMnBzMTI4X21hc2ssICJWNGZWMkxMaVY0ZlVjIiwgIm5jVjoxMjg6IiwgImF2eDUxMnZsLGF2eDUxMmRxIikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2N2dHFxMnBzMjU2X21hc2ssICJWNGZWNExMaVY0ZlVjIiwgIm5jVjoyNTY6IiwgImF2eDUxMnZsLGF2eDUxMmRxIikKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJxcTEyOF9tYXNrLCAiVjJMTGlWMmRWMkxMaVVjIiwgIm5jVjoxMjg6IiwgImF2eDUxMnZsLGF2eDUxMmRxIikKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJxcTI1Nl9tYXNrLCAiVjRMTGlWNGRWNExMaVVjIiwgIm5jVjoyNTY6IiwgImF2eDUxMnZsLGF2eDUxMmRxIikKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJ1cXExMjhfbWFzaywgIlYyTExpVjJkVjJMTGlVYyIsICJuY1Y6MTI4OiIsICJhdng1MTJ2bCxhdng1MTJkcSIpCkBAIC0xMzI3LDcgKzEzMTAsNiBAQAogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfY3Z0dHBzMnVxcTEyOF9tYXNrLCAiVjJMTGlWNGZWMkxMaVVjIiwgIm5jVjoxMjg6IiwgImF2eDUxMnZsLGF2eDUxMmRxIikKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2N2dHRwczJ1cXEyNTZfbWFzaywgIlY0TExpVjRmVjRMTGlVYyIsICJuY1Y6MjU2OiIsICJhdng1MTJ2bCxhdng1MTJkcSIpCiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9jdnR1cXEycHMxMjhfbWFzaywgIlY0ZlYyTExpVjRmVWMiLCAibmNWOjEyODoiLCAiYXZ4NTEydmwsYXZ4NTEyZHEiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfY3Z0dXFxMnBzMjU2X21hc2ssICJWNGZWNExMaVY0ZlVjIiwgIm5jVjoyNTY6IiwgImF2eDUxMnZsLGF2eDUxMmRxIikKIFRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3JhbmdlcGQxMjhfbWFzaywgIlYyZFYyZFYyZElpVjJkVWMiLCAibmNWOjEyODoiLCAiYXZ4NTEydmwsYXZ4NTEyZHEiKQogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfcmFuZ2VwZDI1Nl9tYXNrLCAiVjRkVjRkVjRkSWlWNGRVYyIsICJuY1Y6MjU2OiIsICJhdng1MTJ2bCxhdng1MTJkcSIpCiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9yYW5nZXBzMTI4X21hc2ssICJWNGZWNGZWNGZJaVY0ZlVjIiwgIm5jVjoxMjg6IiwgImF2eDUxMnZsLGF2eDUxMmRxIikKQEAgLTE4NDAsOSArMTgyMiw5IEBACiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9jdnRzaTJzczMyLCAiVjRmVjRmaUlpIiwgIm5jVjoxMjg6IiwgImF2eDUxMmYiKQogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfY3Z0c3Myc2Rfcm91bmRfbWFzaywgIlYyZFYyZFY0ZlYyZFVjSWkiLCAibmNWOjEyODoiLCAiYXZ4NTEyZiIpCiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9jdnR1c2kyc3MzMiwgIlY0ZlY0ZlVpSWkiLCAibmNWOjEyODoiLCAiYXZ4NTEyZiIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cG11bHRpc2hpZnRxYjUxMl9tYXNrLCAiVjY0Y1Y2NGNWNjRjVjY0Y1VMTGkiLCAibmNWOjUxMjoiLCAiYXZ4NTEydmJtaSIpCi1UQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cG11bHRpc2hpZnRxYjEyOF9tYXNrLCAiVjE2Y1YxNmNWMTZjVjE2Y1VzIiwgIm5jVjoxMjg6IiwgImF2eDUxMnZibWksYXZ4NTEydmwiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBtdWx0aXNoaWZ0cWIyNTZfbWFzaywgIlYzMmNWMzJjVjMyY1YzMmNVaSIsICJuY1Y6MjU2OiIsICJhdng1MTJ2Ym1pLGF2eDUxMnZsIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX3ZwbXVsdGlzaGlmdHFiNTEyLCAiVjY0Y1Y2NGNWNjRjIiwgIm5jVjo1MTI6IiwgImF2eDUxMnZibWkiKQorVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfdnBtdWx0aXNoaWZ0cWIxMjgsICJWMTZjVjE2Y1YxNmMiLCAibmNWOjEyODoiLCAiYXZ4NTEydmJtaSxhdng1MTJ2bCIpCitUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl92cG11bHRpc2hpZnRxYjI1NiwgIlYzMmNWMzJjVjMyYyIsICJuY1Y6MjU2OiIsICJhdng1MTJ2Ym1pLGF2eDUxMnZsIikKIAogLy8gZ2VuZXJpYyBzZWxlY3QgaW50cmluc2ljcwogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfc2VsZWN0Yl8xMjgsICJWMTZjVXNWMTZjVjE2YyIsICJuY1Y6MTI4OiIsICJhdng1MTJidyxhdng1MTJ2bCIpCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc1g4Nl82NC5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc1g4Nl82NC5kZWYKaW5kZXggYjU5ZjgyZC4uNTliNjBjMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQnVpbHRpbnNYODZfNjQuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zWDg2XzY0LmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEJ1aWx0aW5zWDg2XzY0LmRlZiAtIFg4Ni02NCBCdWlsdGluIGZ1bmN0aW9uIGRhdGFiYXNlIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNzYsOCArNzUsNyBAQAogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfcmRzc3BxLCAiVUxMaVVMTGkiLCAibiIsICJzaHN0ayIpCiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl93cnNzcSwgInZVTExpdioiLCAibiIsICJzaHN0ayIpCiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl93cnVzc3EsICJ2VUxMaXYqIiwgIm4iLCAic2hzdGsiKQotVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfYWRkY2Fycnl4X3U2NCwgIlVjVWNVTExpVUxMaVVMTGkqIiwgIm4iLCAiYWR4IikKLVRBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2FkZGNhcnJ5X3U2NCwgIlVjVWNVTExpVUxMaVVMTGkqIiwgIm4iLCAiIikKK1RBUkdFVF9CVUlMVElOKF9fYnVpbHRpbl9pYTMyX2FkZGNhcnJ5eF91NjQsICJVY1VjVUxMaVVMTGlVTExpKiIsICJuIiwgIiIpCiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9zdWJib3Jyb3dfdTY0LCAiVWNVY1VMTGlVTExpVUxMaSoiLCAibiIsICIiKQogVEFSR0VUX0JVSUxUSU4oX19idWlsdGluX2lhMzJfcmRyYW5kNjRfc3RlcCwgIlVpVUxMaSoiLCAibiIsICJyZHJuZCIpCiBUQVJHRVRfQlVJTFRJTihfX2J1aWx0aW5faWEzMl9yZHNlZWQ2NF9zdGVwLCAiVWlVTExpKiIsICJuIiwgInJkc2VlZCIpCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9CdWlsdGluc1hDb3JlLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zWENvcmUuZGVmCmluZGV4IDY3MmQyMDUuLmM5OWI3Y2UgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zWENvcmUuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0J1aWx0aW5zWENvcmUuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQnVpbHRpbnNYQ29yZS5kZWYgLSBYQ29yZSBCdWlsdGluIGZ1bmN0aW9uIGRhdGFiYXNlIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9DYXB0dXJlZFN0bXQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0NhcHR1cmVkU3RtdC5oCmluZGV4IDMyNGUxYjEuLjAyOWUxMTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0NhcHR1cmVkU3RtdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0NhcHR1cmVkU3RtdC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQ2FwdHVyZWRTdG10LmggLSBUeXBlcyBmb3IgQ2FwdHVyZWRTdG10cyAtLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQ2hhckluZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0NoYXJJbmZvLmgKaW5kZXggZTZjNWU5MC4uODU3NzQ3NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQ2hhckluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9DaGFySW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gY2xhbmcvQmFzaWMvQ2hhckluZm8uaCAtIENsYXNzaWZ5aW5nIEFTQ0lJIENoYXJhY3RlcnMgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvQ29kZUdlbk9wdGlvbnMuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQ29kZUdlbk9wdGlvbnMuZGVmCnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIGxpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0NvZGVHZW5PcHRpb25zLmRlZgpyZW5hbWUgdG8gbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQ29kZUdlbk9wdGlvbnMuZGVmCmluZGV4IDU4NjJiMmIuLjJhODU3NGUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0NvZGVHZW5PcHRpb25zLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9Db2RlR2VuT3B0aW9ucy5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBDb2RlR2VuT3B0aW9ucy5kZWYgLSBDb2RlIGdlbmVyYXRpb24gb3B0aW9uIGRhdGFiYXNlIC0tLS0tIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTYyLDYgKzYxLDggQEAKIENPREVHRU5PUFQoRGVidWdQYXNzTWFuYWdlciwgMSwgMCkgLy8vPCBQcmludHMgZGVidWcgaW5mb3JtYXRpb24gZm9yIHRoZSBuZXcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBwYXNzIG1hbmFnZXIuCiBDT0RFR0VOT1BUKERpc2FibGVSZWRab25lICAgICwgMSwgMCkgLy8vPCBTZXQgd2hlbiAtbW5vLXJlZC16b25lIGlzIGVuYWJsZWQuCitDT0RFR0VOT1BUKEluZGlyZWN0VGxzU2VnUmVmcywgMSwgMCkgLy8vPCBTZXQgd2hlbiAtbW5vLXRscy1kaXJlY3Qtc2VnLXJlZnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IGlzIHNwZWNpZmllZC4KIENPREVHRU5PUFQoRGlzYWJsZVRhaWxDYWxscyAgLCAxLCAwKSAvLy88IERvIG5vdCBlbWl0IHRhaWwgY2FsbHMuCiBDT0RFR0VOT1BUKE5vRXNjYXBpbmdCbG9ja1RhaWxDYWxscywgMSwgMCkgLy8vPCBEbyBub3QgZW1pdCB0YWlsIGNhbGxzIGZyb20KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IGVzY2FwaW5nIGJsb2Nrcy4KQEAgLTExNCw2ICsxMTUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IGNvbXBpbGUgc3RlcC4KIENPREVHRU5PUFQoTFRPVW5pdCwgMSwgMCkgLy8vPCBFbWl0IElSIHRvIHN1cHBvcnQgTFRPIHVuaXQgZmVhdHVyZXMgKENGSSwgd2hvbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBwcm9ncmFtIHZ0YWJsZSBvcHQpLgorQ09ERUdFTk9QVChFbmFibGVTcGxpdExUT1VuaXQsIDEsIDApIC8vLzwgRW5hYmxlIExUTyB1bml0IHNwbGl0dGluZyB0byBzdXBwb3J0CisJCQkJICAgICAvLy8gQ0ZJIGFuZCB0cmFkaXRpb25hbCB3aG9sZSBwcm9ncmFtCisJCQkJICAgICAvLy8gZGV2aXJ0dWFsaXphdGlvbiB0aGF0IHJlcXVpcmUgd2hvbGUKKwkJCQkgICAgIC8vLyBwcm9ncmFtIElSIHN1cHBvcnQuCiBDT0RFR0VOT1BUKEluY3JlbWVudGFsTGlua2VyQ29tcGF0aWJsZSwgMSwgMCkgLy8vPCBFbWl0IGFuIG9iamVjdCBmaWxlIHdoaWNoIGNhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgYmUgdXNlZCB3aXRoIGFuIGluY3JlbWVudGFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBsaW5rZXIuCkBAIC0xNDcsNiArMTUyLDggQEAKIENPREVHRU5PUFQoTm9aZXJvSW5pdGlhbGl6ZWRJbkJTUyAsIDEsIDApIC8vLzwgLWZuby16ZXJvLWluaXRpYWxpemVkLWluLWJzcy4KIC8vLyBNZXRob2Qgb2YgT2JqZWN0aXZlLUMgZGlzcGF0Y2ggdG8gdXNlLgogRU5VTV9DT0RFR0VOT1BUKE9iakNEaXNwYXRjaE1ldGhvZCwgT2JqQ0Rpc3BhdGNoTWV0aG9kS2luZCwgMiwgTGVnYWN5KQorLy8vIFJlcGxhY2UgY2VydGFpbiBtZXNzYWdlIHNlbmRzIHdpdGggY2FsbHMgdG8gT2JqQyBydW50aW1lIGVudHJ5cG9pbnRzCitDT0RFR0VOT1BUKE9iakNDb252ZXJ0TWVzc2FnZXNUb1J1bnRpbWVDYWxscyAsIDEsIDEpCiBDT0RFR0VOT1BUKE9taXRMZWFmRnJhbWVQb2ludGVyICwgMSwgMCkgLy8vPCBTZXQgd2hlbiAtbW9taXQtbGVhZi1mcmFtZS1wb2ludGVyIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBlbmFibGVkLgogCkBAIC0xNzIsMTEgKzE3OSwxMiBAQAogQ09ERUdFTk9QVChTYXZlVGVtcExhYmVscyAgICAsIDEsIDApIC8vLzwgU2F2ZSB0ZW1wb3JhcnkgbGFiZWxzLgogQ09ERUdFTk9QVChTYW5pdGl6ZUFkZHJlc3NVc2VBZnRlclNjb3BlICwgMSwgMCkgLy8vPCBFbmFibGUgdXNlLWFmdGVyLXNjb3BlIGRldGVjdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBpbiBBZGRyZXNzU2FuaXRpemVyCi1DT0RFR0VOT1BUKFNhbml0aXplQWRkcmVzc1BvaXNvbkNsYXNzTWVtYmVyQXJyYXlOZXdDb29raWUsIDEsCitDT0RFR0VOT1BUKFNhbml0aXplQWRkcmVzc1BvaXNvbkN1c3RvbUFycmF5Q29va2llLCAxLAogICAgICAgICAgICAwKSAvLy88IEVuYWJsZSBwb2lzb25pbmcgb3BlcmF0b3IgbmV3W10gd2hpY2ggaXMgbm90IGEgcmVwbGFjZWFibGUKICAgICAgICAgICAgICAgLy8vPCBnbG9iYWwgYWxsb2NhdGlvbiBmdW5jdGlvbiBpbiBBZGRyZXNzU2FuaXRpemVyCiBDT0RFR0VOT1BUKFNhbml0aXplQWRkcmVzc0dsb2JhbHNEZWFkU3RyaXBwaW5nLCAxLCAwKSAvLy88IEVuYWJsZSBsaW5rZXIgZGVhZCBzdHJpcHBpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgb2YgZ2xvYmFscyBpbiBBZGRyZXNzU2FuaXRpemVyCitDT0RFR0VOT1BUKFNhbml0aXplQWRkcmVzc1VzZU9kckluZGljYXRvciwgMSwgMCkgLy8vPCBFbmFibGUgT0RSIGluZGljYXRvciBnbG9iYWxzCiBDT0RFR0VOT1BUKFNhbml0aXplTWVtb3J5VHJhY2tPcmlnaW5zLCAyLCAwKSAvLy88IEVuYWJsZSB0cmFja2luZyBvcmlnaW5zIGluCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IE1lbW9yeVNhbml0aXplcgogQ09ERUdFTk9QVChTYW5pdGl6ZU1lbW9yeVVzZUFmdGVyRHRvciwgMSwgMCkgLy8vPCBFbmFibGUgdXNlLWFmdGVyLWRlbGV0ZSBkZXRlY3Rpb24KQEAgLTI1MCw3ICsyNTgsOSBAQAogQ09ERUdFTk9QVChEZWJ1Z0V4cGxpY2l0SW1wb3J0LCAxLCAwKSAgLy8vPCBXaGV0aGVyIG9yIG5vdCBkZWJ1ZyBpbmZvIHNob3VsZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBjb250YWluIGV4cGxpY2l0IGltcG9ydHMgZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy88IGFub255bW91cyBuYW1lc3BhY2VzCi1DT0RFR0VOT1BUKEVuYWJsZVNwbGl0RHdhcmYsIDEsIDApIC8vLzwgV2hldGhlciB0byBlbmFibGUgc3BsaXQgRFdBUkYKKworRU5VTV9DT0RFR0VOT1BUKFNwbGl0RHdhcmZNb2RlLCBEd2FyZkZpc3Npb25LaW5kLCAyLCBOb0Zpc3Npb24pIC8vLzwgRFdBUkYgZmlzc2lvbiBtb2RlIHRvIHVzZS4KKwogQ09ERUdFTk9QVChTcGxpdER3YXJmSW5saW5pbmcsIDEsIDEpIC8vLzwgV2hldGhlciB0byBpbmNsdWRlIGlubGluaW5nIGluZm8gaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vPCBza2VsZXRvbiBDVSB0byBhbGxvdyBmb3Igc3ltYm9saWNhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLzwgb2YgaW5saW5lIHN0YWNrIGZyYW1lcyB3aXRob3V0IC5kd28gZmlsZXMuCkBAIC0yOTMsNiArMzAzLDkgQEAKIC8vLyBDb2RlVmlldyBhbmQgRFdBUkYgaW50byB0aGUgc2FtZSBvYmplY3QuCiBDT0RFR0VOT1BUKEVtaXRDb2RlVmlldywgMSwgMCkKIAorLy8vIFdoZXRoZXIgdG8gZW1pdCB0aGUgLmRlYnVnJEggc2VjdGlvbiBjb250YWluaW5nIGhhc2hlcyBvZiBDb2RlVmlldyB0eXBlcy4KK0NPREVHRU5PUFQoQ29kZVZpZXdHSGFzaCwgMSwgMCkKKwogLy8vIFRoZSBraW5kIG9mIGlubGluaW5nIHRvIHBlcmZvcm0uCiBFTlVNX0NPREVHRU5PUFQoSW5saW5pbmcsIElubGluaW5nTWV0aG9kLCAyLCBOb3JtYWxJbmxpbmluZykKIApAQCAtMzI5LDYgKzM0Miw5IEBACiAvLy8gV2hldGhlciB0byBlbWl0IC5kZWJ1Z19nbnVfcHVibmFtZXMgc2VjdGlvbiBpbnN0ZWFkIG9mIC5kZWJ1Z19wdWJuYW1lcy4KIENPREVHRU5PUFQoRGVidWdOYW1lVGFibGUsIDIsIDApCiAKKy8vLyBXaGV0aGVyIHRvIHVzZSBEV0FSRiBiYXNlIGFkZHJlc3Mgc3BlY2lmaWVycyBpbiAuZGVidWdfcmFuZ2VzLgorQ09ERUdFTk9QVChEZWJ1Z1Jhbmdlc0Jhc2VBZGRyZXNzLCAxLCAwKQorCiBDT0RFR0VOT1BUKE5vUExULCAxLCAwKQogCiAvLy8gV2hldGhlciB0byBlbWJlZCBzb3VyY2UgaW4gRFdBUkYgZGVidWcgbGluZSBzZWN0aW9uLgpAQCAtMzQxLDYgKzM1Nyw4IEBACiBDT0RFR0VOT1BUKEFkZHJzaWcsIDEsIDApCiAKIEVOVU1fQ09ERUdFTk9QVChTaWduUmV0dXJuQWRkcmVzcywgU2lnblJldHVybkFkZHJlc3NTY29wZSwgMiwgTm9uZSkKK0VOVU1fQ09ERUdFTk9QVChTaWduUmV0dXJuQWRkcmVzc0tleSwgU2lnblJldHVybkFkZHJlc3NLZXlWYWx1ZSwgMSwgQUtleSkKK0NPREVHRU5PUFQoQnJhbmNoVGFyZ2V0RW5mb3JjZW1lbnQsIDEsIDApCiAKIC8vLyBXaGV0aGVyIHRvIGVtaXQgdW51c2VkIHN0YXRpYyBjb25zdGFudHMuCiBDT0RFR0VOT1BUKEtlZXBTdGF0aWNDb25zdHMsIDEsIDApCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9Db2RlR2VuT3B0aW9ucy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQ29kZUdlbk9wdGlvbnMuaApzaW1pbGFyaXR5IGluZGV4IDg5JQpyZW5hbWUgZnJvbSBsaW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9Db2RlR2VuT3B0aW9ucy5oCnJlbmFtZSB0byBsaW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9Db2RlR2VuT3B0aW9ucy5oCmluZGV4IGQ4NzYzNDQuLjVjOGFiZTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0NvZGVHZW5PcHRpb25zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQ29kZUdlbk9wdGlvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIENvZGVHZW5PcHRpb25zLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTEsOCArMTAsOCBAQAogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKLSNpZm5kZWYgTExWTV9DTEFOR19GUk9OVEVORF9DT0RFR0VOT1BUSU9OU19ICi0jZGVmaW5lIExMVk1fQ0xBTkdfRlJPTlRFTkRfQ09ERUdFTk9QVElPTlNfSAorI2lmbmRlZiBMTFZNX0NMQU5HX0JBU0lDX0NPREVHRU5PUFRJT05TX0gKKyNkZWZpbmUgTExWTV9DTEFOR19CQVNJQ19DT0RFR0VOT1BUSU9OU19ICiAKICNpbmNsdWRlICJjbGFuZy9CYXNpYy9EZWJ1Z0luZm9PcHRpb25zLmgiCiAjaW5jbHVkZSAiY2xhbmcvQmFzaWMvU2FuaXRpemVycy5oIgpAQCAtMzMsMTIgKzMyLDEyIEBACiBwdWJsaWM6CiAjZGVmaW5lIENPREVHRU5PUFQoTmFtZSwgQml0cywgRGVmYXVsdCkgdW5zaWduZWQgTmFtZSA6IEJpdHM7CiAjZGVmaW5lIEVOVU1fQ09ERUdFTk9QVChOYW1lLCBUeXBlLCBCaXRzLCBEZWZhdWx0KQotI2luY2x1ZGUgImNsYW5nL0Zyb250ZW5kL0NvZGVHZW5PcHRpb25zLmRlZiIKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9Db2RlR2VuT3B0aW9ucy5kZWYiCiAKIHByb3RlY3RlZDoKICNkZWZpbmUgQ09ERUdFTk9QVChOYW1lLCBCaXRzLCBEZWZhdWx0KQogI2RlZmluZSBFTlVNX0NPREVHRU5PUFQoTmFtZSwgVHlwZSwgQml0cywgRGVmYXVsdCkgdW5zaWduZWQgTmFtZSA6IEJpdHM7Ci0jaW5jbHVkZSAiY2xhbmcvRnJvbnRlbmQvQ29kZUdlbk9wdGlvbnMuZGVmIgorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0NvZGVHZW5PcHRpb25zLmRlZiIKIH07CiAKIC8vLyBDb2RlR2VuT3B0aW9ucyAtIFRyYWNrIHZhcmlvdXMgb3B0aW9ucyB3aGljaCBjb250cm9sIGhvdyB0aGUgY29kZQpAQCAtNzEsNiArNzAsOCBAQAogICAgIExvY2FsRXhlY1RMU01vZGVsCiAgIH07CiAKKyAgZW51bSBEd2FyZkZpc3Npb25LaW5kIHsgTm9GaXNzaW9uLCBTcGxpdEZpbGVGaXNzaW9uLCBTaW5nbGVGaWxlRmlzc2lvbiB9OworCiAgIC8vLyBDbGFuZyB2ZXJzaW9ucyB3aXRoIGRpZmZlcmVudCBwbGF0Zm9ybSBBQkkgY29uZm9ybWFuY2UuCiAgIGVudW0gY2xhc3MgQ2xhbmdBQkkgewogICAgIC8vLyBBdHRlbXB0IHRvIGJlIEFCSS1jb21wYXRpYmxlIHdpdGggY29kZSBnZW5lcmF0ZWQgYnkgQ2xhbmcgMy44LngKQEAgLTExNCw2ICsxMTUsOCBAQAogICAgIEFsbCAgICAgIC8vIFNpZ24gdGhlIHJldHVybiBhZGRyZXNzIG9mIGFsbCBmdW5jdGlvbnMKICAgfTsKIAorICBlbnVtIFNpZ25SZXR1cm5BZGRyZXNzS2V5VmFsdWUgeyBBS2V5LCBCS2V5IH07CisKICAgLy8vIFRoZSBjb2RlIG1vZGVsIHRvIHVzZSAoLW1jbW9kZWwpLgogICBzdGQ6OnN0cmluZyBDb2RlTW9kZWw7CiAKQEAgLTEyNSw2ICsxMjgsMTIgQEAKICAgLy8vIFRoZSBmaWxlbmFtZSB3aXRoIHBhdGggd2UgdXNlIGZvciBjb3ZlcmFnZSBub3RlcyBmaWxlcy4KICAgc3RkOjpzdHJpbmcgQ292ZXJhZ2VOb3Rlc0ZpbGU7CiAKKyAgLy8vIFJlZ2V4ZXMgc2VwYXJhdGVkIGJ5IGEgc2VtaS1jb2xvbiB0byBmaWx0ZXIgdGhlIGZpbGVzIHRvIGluc3RydW1lbnQuCisgIHN0ZDo6c3RyaW5nIFByb2ZpbGVGaWx0ZXJGaWxlczsKKworICAvLy8gUmVnZXhlcyBzZXBhcmF0ZWQgYnkgYSBzZW1pLWNvbG9uIHRvIGZpbHRlciB0aGUgZmlsZXMgdG8gbm90IGluc3RydW1lbnQuCisgIHN0ZDo6c3RyaW5nIFByb2ZpbGVFeGNsdWRlRmlsZXM7CisKICAgLy8vIFRoZSB2ZXJzaW9uIHN0cmluZyB0byBwdXQgaW50byBjb3ZlcmFnZSBmaWxlcy4KICAgY2hhciBDb3ZlcmFnZVZlcnNpb25bNF07CiAKQEAgLTEzOCw2ICsxNDcsMTAgQEAKICAgLy8vIG5vbi1lbXB0eS4KICAgc3RkOjpzdHJpbmcgRHdhcmZEZWJ1Z0ZsYWdzOwogCisgIC8vLyBUaGUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGNvbW1hbmRsaW5lIGZvciB0aGUgbGx2bS5jb21tYW5kbGluZSBtZXRhZGF0YSwKKyAgLy8vIGlmIG5vbi1lbXB0eS4KKyAgc3RkOjpzdHJpbmcgUmVjb3JkQ29tbWFuZExpbmU7CisKICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiBEZWJ1Z1ByZWZpeE1hcDsKIAogICAvLy8gVGhlIEFCSSB0byB1c2UgZm9yIHBhc3NpbmcgZmxvYXRpbmcgcG9pbnQgYXJndW1lbnRzLgpAQCAtMjAwLDYgKzIxMywxMCBAQAogICAvLy8gTmFtZSBvZiB0aGUgcHJvZmlsZSBmaWxlIHRvIHVzZSBhcyBpbnB1dCBmb3IgLWZwcm9maWxlLWluc3RyLXVzZQogICBzdGQ6OnN0cmluZyBQcm9maWxlSW5zdHJ1bWVudFVzZVBhdGg7CiAKKyAgLy8vIE5hbWUgb2YgdGhlIHByb2ZpbGUgcmVtYXBwaW5nIGZpbGUgdG8gYXBwbHkgdG8gdGhlIHByb2ZpbGUgZGF0YSBzdXBwbGllZAorICAvLy8gYnkgLWZwcm9maWxlLXNhbXBsZS11c2Ugb3IgLWZwcm9maWxlLWluc3RyLXVzZS4KKyAgc3RkOjpzdHJpbmcgUHJvZmlsZVJlbWFwcGluZ0ZpbGU7CisKICAgLy8vIE5hbWUgb2YgdGhlIGZ1bmN0aW9uIHN1bW1hcnkgaW5kZXggZmlsZSB0byB1c2UgZm9yIFRoaW5MVE8gZnVuY3Rpb24KICAgLy8vIGltcG9ydGluZy4KICAgc3RkOjpzdHJpbmcgVGhpbkxUT0luZGV4RmlsZTsKQEAgLTI2OCwxMyArMjg1LDE4IEBACiAgIC8vLyBTZXQgb2YgWFJheSBpbnN0cnVtZW50YXRpb24ga2luZHMgdG8gZW1pdC4KICAgWFJheUluc3RyU2V0IFhSYXlJbnN0cnVtZW50YXRpb25CdW5kbGU7CiAKKyAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IERlZmF1bHRGdW5jdGlvbkF0dHJzOworCisgIC8vLyBMaXN0IG9mIGR5bmFtaWMgc2hhcmVkIG9iamVjdCBmaWxlcyB0byBiZSBsb2FkZWQgYXMgcGFzcyBwbHVnaW5zLgorICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gUGFzc1BsdWdpbnM7CisKIHB1YmxpYzoKICAgLy8gRGVmaW5lIGFjY2Vzc29ycy9tdXRhdG9ycyBmb3IgY29kZSBnZW5lcmF0aW9uIG9wdGlvbnMgb2YgZW51bWVyYXRpb24gdHlwZS4KICNkZWZpbmUgQ09ERUdFTk9QVChOYW1lLCBCaXRzLCBEZWZhdWx0KQogI2RlZmluZSBFTlVNX0NPREVHRU5PUFQoTmFtZSwgVHlwZSwgQml0cywgRGVmYXVsdCkgXAogICBUeXBlIGdldCMjTmFtZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KE5hbWUpOyB9IFwKICAgdm9pZCBzZXQjI05hbWUoVHlwZSBWYWx1ZSkgeyBOYW1lID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFZhbHVlKTsgfQotI2luY2x1ZGUgImNsYW5nL0Zyb250ZW5kL0NvZGVHZW5PcHRpb25zLmRlZiIKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9Db2RlR2VuT3B0aW9ucy5kZWYiCiAKICAgQ29kZUdlbk9wdGlvbnMoKTsKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQ29tbWVudE9wdGlvbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0NvbW1lbnRPcHRpb25zLmgKaW5kZXggNmNjOWNmNi4uN2QxNDJmYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQ29tbWVudE9wdGlvbnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9Db21tZW50T3B0aW9ucy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvbW1lbnRPcHRpb25zLmggLSBPcHRpb25zIGZvciBwYXJzaW5nIGNvbW1lbnRzIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9DdWRhLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9DdWRhLmgKaW5kZXggZjlmY2JkOS4uZDk2YzdlMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvQ3VkYS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0N1ZGEuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEN1ZGEuaCAtIFV0aWxpdGllcyBmb3IgY29tcGlsaW5nIENVREEgY29kZSAgLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTEyLDYgKzExLDcgQEAKIAogbmFtZXNwYWNlIGxsdm0gewogY2xhc3MgU3RyaW5nUmVmOworY2xhc3MgVmVyc2lvblR1cGxlOwogfSAvLyBuYW1lc3BhY2UgbGx2bQogCiBuYW1lc3BhY2UgY2xhbmcgewpAQCAtMjUsMTIgKzI1LDEyIEBACiAgIENVREFfOTEsCiAgIENVREFfOTIsCiAgIENVREFfMTAwLAotICBMQVRFU1QgPSBDVURBXzEwMCwKKyAgQ1VEQV8xMDEsCisgIExBVEVTVCA9IENVREFfMTAxLAogfTsKIGNvbnN0IGNoYXIgKkN1ZGFWZXJzaW9uVG9TdHJpbmcoQ3VkYVZlcnNpb24gVik7Ci0KLS8vIE5vIHN0cmluZyAtPiBDdWRhVmVyc2lvbiBjb252ZXJzaW9uIGZ1bmN0aW9uIGJlY2F1c2UgdGhlcmUncyBubyBjYW5vbmljYWwKLS8vIHNwZWxsaW5nIG9mIHRoZSB2YXJpb3VzIENVREEgdmVyc2lvbnMuCisvLyBJbnB1dCBpcyAiTWFqb3IuTWlub3IiCitDdWRhVmVyc2lvbiBDdWRhU3RyaW5nVG9WZXJzaW9uKGxsdm06OlN0cmluZ1JlZiBTKTsKIAogZW51bSBjbGFzcyBDdWRhQXJjaCB7CiAgIFVOS05PV04sCkBAIC02Miw2ICs2Miw5IEBACiAgIEdGWDgxMCwKICAgR0ZYOTAwLAogICBHRlg5MDIsCisgIEdGWDkwNCwKKyAgR0ZYOTA2LAorICBHRlg5MDksCiAgIExBU1QsCiB9OwogY29uc3QgY2hhciAqQ3VkYUFyY2hUb1N0cmluZyhDdWRhQXJjaCBBKTsKQEAgLTEwMSw2ICsxMDQsMTcgQEAKIC8vLyBHZXQgdGhlIGxhdGVzdCBDdWRhVmVyc2lvbiB0aGF0IHN1cHBvcnRzIHRoZSBnaXZlbiBDdWRhQXJjaC4KIEN1ZGFWZXJzaW9uIE1heFZlcnNpb25Gb3JDdWRhQXJjaChDdWRhQXJjaCBBKTsKIAorLy8gIFZhcmlvdXMgU0RLLWRlcGVuZGVudCBmZWF0dXJlcyB0aGF0IGFmZmVjdCBDVURBIGNvbXBpbGF0aW9uCitlbnVtIGNsYXNzIEN1ZGFGZWF0dXJlIHsKKyAgLy8gQ1VEQS05LjIrIHVzZXMgYSBuZXcgQVBJIGZvciBsYXVuY2hpbmcga2VybmVscy4KKyAgQ1VEQV9VU0VTX05FV19MQVVOQ0gsCisgIC8vIENVREEtMTAuMSsgbmVlZHMgZXhwbGljaXQgZW5kIG9mIEdQVSBiaW5hcnkgcmVnaXN0cmF0aW9uLgorICBDVURBX1VTRVNfRkFUQklOX1JFR0lTVEVSX0VORCwKK307CisKK2Jvb2wgQ3VkYUZlYXR1cmVFbmFibGVkKGxsdm06OlZlcnNpb25UdXBsZSwgQ3VkYUZlYXR1cmUpOworYm9vbCBDdWRhRmVhdHVyZUVuYWJsZWQoQ3VkYVZlcnNpb24sIEN1ZGFGZWF0dXJlKTsKKwogfSAvLyBuYW1lc3BhY2UgY2xhbmcKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EZWJ1Z0luZm9PcHRpb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EZWJ1Z0luZm9PcHRpb25zLmgKaW5kZXggMzhmMTM5Yi4uOTFkMzMzMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGVidWdJbmZvT3B0aW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RlYnVnSW5mb09wdGlvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIERlYnVnSW5mb09wdGlvbnMuaCAtIERlYnVnIEluZm8gRW1pc3Npb24gVHlwZXMgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTEzLDYgKzEyLDExIEBACiBuYW1lc3BhY2UgY2xhbmcgewogbmFtZXNwYWNlIGNvZGVnZW5vcHRpb25zIHsKIAorZW51bSBEZWJ1Z0luZm9Gb3JtYXQgeworICBESUZfRFdBUkYsCisgIERJRl9Db2RlVmlldywKK307CisKIGVudW0gRGVidWdJbmZvS2luZCB7CiAgIE5vRGVidWdJbmZvLCAgICAgICAgIC8vLyBEb24ndCBnZW5lcmF0ZSBkZWJ1ZyBpbmZvLgogICBMb2NUcmFja2luZ09ubHksICAgICAvLy8gRW1pdCBsb2NhdGlvbiBpbmZvcm1hdGlvbiBidXQgZG8gbm90IGdlbmVyYXRlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljLmgKaW5kZXggZDMwYWMxNC4uODg5NDdiNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpYy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEaWFnbm9zdGljLmggLSBDIExhbmd1YWdlIEZhbWlseSBEaWFnbm9zdGljIEhhbmRsaW5nIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTc3LDYgKzE3Niw5IEBACiAgICAgLy8vIElkZW50aWZpZXJJbmZvCiAgICAgYWtfaWRlbnRpZmllcmluZm8sCiAKKyAgICAvLy8gUXVhbGlmaWVycworICAgIGFrX3F1YWwsCisKICAgICAvLy8gUXVhbFR5cGUKICAgICBha19xdWFsdHlwZSwKIApAQCAtNDg2LDEwICs0ODgsOCBAQAogICBEaWFnbm9zdGljc0VuZ2luZSAmb3BlcmF0b3I9KGNvbnN0IERpYWdub3N0aWNzRW5naW5lICYpID0gZGVsZXRlOwogICB+RGlhZ25vc3RpY3NFbmdpbmUoKTsKIAotICBMTFZNX0RVTVBfTUVUSE9EIHZvaWQgZHVtcCgpIGNvbnN0IHsgRGlhZ1N0YXRlc0J5TG9jLmR1bXAoKlNvdXJjZU1ncik7IH0KLSAgTExWTV9EVU1QX01FVEhPRCB2b2lkIGR1bXAoU3RyaW5nUmVmIERpYWdOYW1lKSBjb25zdCB7Ci0gICAgRGlhZ1N0YXRlc0J5TG9jLmR1bXAoKlNvdXJjZU1nciwgRGlhZ05hbWUpOwotICB9CisgIExMVk1fRFVNUF9NRVRIT0Qgdm9pZCBkdW1wKCkgY29uc3Q7CisgIExMVk1fRFVNUF9NRVRIT0Qgdm9pZCBkdW1wKFN0cmluZ1JlZiBEaWFnTmFtZSkgY29uc3Q7CiAKICAgY29uc3QgSW50cnVzaXZlUmVmQ250UHRyPERpYWdub3N0aWNJRHM+ICZnZXREaWFnbm9zdGljSURzKCkgY29uc3QgewogICAgIHJldHVybiBEaWFnczsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNBU1QuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNBU1QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmU1ZjYyCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0FTVC5oCkBAIC0wLDAgKzEsMjggQEAKKy8vPT09LS0tIERpYWdub3N0aWNBU1QuaCAtIERpYWdub3N0aWNzIGZvciB0aGUgQVNUIGxpYnJhcnkgLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9DTEFOR19CQVNJQ19ESUFHTk9TVElDQVNUX0gKKyNkZWZpbmUgTExWTV9DTEFOR19CQVNJQ19ESUFHTk9TVElDQVNUX0gKKworI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWMuaCIKKworbmFtZXNwYWNlIGNsYW5nIHsKK25hbWVzcGFjZSBkaWFnIHsKK2VudW0geworI2RlZmluZSBESUFHKEVOVU0sIEZMQUdTLCBERUZBVUxUX01BUFBJTkcsIERFU0MsIEdST1VQLCBTRklOQUUsIE5PV0VSUk9SLCAgICAgIFwKKyAgICAgICAgICAgICBTSE9XSU5TWVNIRUFERVIsIENBVEVHT1JZKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEVOVU0sCisjZGVmaW5lIEFTVFNUQVJUCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0FTVEtpbmRzLmluYyIKKyN1bmRlZiBESUFHCisgIE5VTV9CVUlMVElOX0FTVF9ESUFHTk9TVElDUworfTsKK30gLy8gZW5kIG5hbWVzcGFjZSBkaWFnCit9IC8vIGVuZCBuYW1lc3BhY2UgY2xhbmcKKworI2VuZGlmIC8vIExMVk1fQ0xBTkdfQkFTSUNfRElBR05PU1RJQ0FTVF9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljQVNUS2luZHMuaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0FTVEtpbmRzLmluYwppbmRleCBiOTBjY2FmLi5iYjZkYzI2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljQVNUS2luZHMuaW5jCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNBU1RLaW5kcy5pbmMKQEAgLTU1LDYgKzU1LDcgQEAKIERJQUcobm90ZV9jb25zdGV4cHJfbGlmZXRpbWVfZW5kZWQsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICIlc2VsZWN0e3JlYWQgb2Z8YXNzaWdubWVudCB0b3xpbmNyZW1lbnQgb2Z8ZGVjcmVtZW50IG9mfTAgJXNlbGVjdHt0ZW1wb3Jhcnl8dmFyaWFibGV9MSB3aG9zZSBsaWZldGltZSBoYXMgZW5kZWQiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKIERJQUcobm90ZV9jb25zdGV4cHJfbHNoaWZ0X2Rpc2NhcmRzLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAic2lnbmVkIGxlZnQgc2hpZnQgZGlzY2FyZHMgYml0cyIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQogRElBRyhub3RlX2NvbnN0ZXhwcl9sc2hpZnRfb2ZfbmVnYXRpdmUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJsZWZ0IHNoaWZ0IG9mIG5lZ2F0aXZlIHZhbHVlICUwIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKG5vdGVfY29uc3RleHByX2x0b3JfaW5jb21wbGV0ZV90eXBlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAicmVhZCBvZiBpbmNvbXBsZXRlIHR5cGUgJTAgaXMgbm90IGFsbG93ZWQgaW4gYSBjb25zdGFudCBleHByZXNzaW9uIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCiBESUFHKG5vdGVfY29uc3RleHByX2x0b3JfbXV0YWJsZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgInJlYWQgb2YgbXV0YWJsZSBtZW1iZXIgJTAgaXMgbm90IGFsbG93ZWQgaW4gYSBjb25zdGFudCBleHByZXNzaW9uIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCiBESUFHKG5vdGVfY29uc3RleHByX2x0b3Jfbm9uX2NvbnN0X2ludCwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgInJlYWQgb2Ygbm9uLWNvbnN0IHZhcmlhYmxlICUwIGlzIG5vdCBhbGxvd2VkIGluIGEgY29uc3RhbnQgZXhwcmVzc2lvbiIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQogRElBRyhub3RlX2NvbnN0ZXhwcl9sdG9yX25vbl9jb25zdGV4cHIsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJyZWFkIG9mIG5vbi1jb25zdGV4cHIgdmFyaWFibGUgJTAgaXMgbm90IGFsbG93ZWQgaW4gYSBjb25zdGFudCBleHByZXNzaW9uIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCkBAIC0xMTksNSArMTIwLDEyIEBACiBESUFHKG5vdGVfb2RyX3ZhbHVlX2hlcmUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJkZWNsYXJlZCBoZXJlIHdpdGggdHlwZSAlMCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQogRElBRyhub3RlX29kcl92aXJ0dWFsX2Jhc2UsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICIlc2VsZWN0e25vbi12aXJ0dWFsfHZpcnR1YWx9MCBkZXJpdmF0aW9uIGhlcmUiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKIERJQUcobm90ZV91bmltcGxlbWVudGVkX2NvbnN0ZXhwcl9sYW1iZGFfZmVhdHVyZV9hc3QsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJ1bmltcGxlbWVudGVkIGNvbnN0ZXhwciBsYW1iZGEgZmVhdHVyZTogJTAgKGNvbWluZyBzb29uISkiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9pbnRlZ2VyX2NvbnN0YW50X292ZXJmbG93LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvdmVyZmxvdyBpbiBleHByZXNzaW9uOyByZXN1bHQgaXMgJTAgd2l0aCB0eXBlICUxIiwgMzI1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9vZHJfdGFnX3R5cGVfaW5jb25zaXN0ZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0eXBlICUwIGhhcyBpbmNvbXBhdGlibGUgZGVmaW5pdGlvbnMgaW4gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzIiwgNDg3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcocmVtYXJrX3Nhbml0aXplX2FkZHJlc3NfaW5zZXJ0X2V4dHJhX3BhZGRpbmdfYWNjZXB0ZWQsIENMQVNTX1JFTUFSSywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiLWZzYW5pdGl6ZS1hZGRyZXNzLWZpZWxkLXBhZGRpbmcgYXBwbGllZCB0byAlMCIsIDU3NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgdHJ1ZSwgMCkKK0RJQUcocmVtYXJrX3Nhbml0aXplX2FkZHJlc3NfaW5zZXJ0X2V4dHJhX3BhZGRpbmdfcmVqZWN0ZWQsIENMQVNTX1JFTUFSSywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiLWZzYW5pdGl6ZS1hZGRyZXNzLWZpZWxkLXBhZGRpbmcgaWdub3JlZCBmb3IgJTAgYmVjYXVzZSBpdCAlc2VsZWN0e2lzIG5vdCBDKyt8aXMgcGFja2VkfGlzIGEgdW5pb258aXMgdHJpdmlhbGx5IGNvcHlhYmxlfGhhcyB0cml2aWFsIGRlc3RydWN0b3J8aXMgc3RhbmRhcmQgbGF5b3V0fGlzIGluIGEgYmxhY2tsaXN0ZWQgZmlsZXxpcyBibGFja2xpc3RlZH0xIiwgNTc3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCB0cnVlLCAwKQorRElBRyh3YXJuX2ludGVnZXJfY29uc3RhbnRfb3ZlcmZsb3csIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm92ZXJmbG93IGluIGV4cHJlc3Npb247IHJlc3VsdCBpcyAlMCB3aXRoIHR5cGUgJTEiLCAzMzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX25wb3RfbXNfc3RydWN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibXNfc3RydWN0IG1heSBub3QgcHJvZHVjZSBNaWNyb3NvZnQtY29tcGF0aWJsZSBsYXlvdXRzIHdpdGggZnVuZGFtZW50YWwgZGF0YSB0eXBlcyB3aXRoIHNpemVzIHRoYXQgYXJlbid0IGEgcG93ZXIgb2YgdHdvIiwgMzA5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9vZHJfdGFnX3R5cGVfaW5jb25zaXN0ZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0eXBlICUwIGhhcyBpbmNvbXBhdGlibGUgZGVmaW5pdGlvbnMgaW4gZGlmZmVyZW50IHRyYW5zbGF0aW9uIHVuaXRzIiwgNDk3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9wYWRkZWRfc3RydWN0X2Fub25fZmllbGQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInBhZGRpbmcgJXNlbGVjdHtzdHJ1Y3R8aW50ZXJmYWNlfGNsYXNzfTAgJTEgd2l0aCAlMiAlc2VsZWN0e2J5dGV8Yml0fTMlczIgdG8gYWxpZ24gYW5vbnltb3VzIGJpdC1maWVsZCIsIDUxOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fcGFkZGVkX3N0cnVjdF9maWVsZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicGFkZGluZyAlc2VsZWN0e3N0cnVjdHxpbnRlcmZhY2V8Y2xhc3N9MCAlMSB3aXRoICUyICVzZWxlY3R7Ynl0ZXxiaXR9MyVzMiB0byBhbGlnbiAlNCIsIDUxOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fcGFkZGVkX3N0cnVjdF9zaXplLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwYWRkaW5nIHNpemUgb2YgJTAgd2l0aCAlMSAlc2VsZWN0e2J5dGV8Yml0fTIlczEgdG8gYWxpZ25tZW50IGJvdW5kYXJ5IiwgNTE4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl91bm5lY2Vzc2FyeV9wYWNrZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInBhY2tlZCBhdHRyaWJ1dGUgaXMgdW5uZWNlc3NhcnkgZm9yICUwIiwgNTE3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNBbmFseXNpcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0FuYWx5c2lzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVhMzVhNAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNBbmFseXNpcy5oCkBAIC0wLDAgKzEsMjggQEAKKy8vPT09LS0tIERpYWdub3N0aWNBbmFseXNpcy5oIC0gRGlhZ25vc3RpY3MgZm9yIGxpYmFuYWx5c2lzIC0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9DTEFOR19CQVNJQ19ESUFHTk9TVElDQU5BTFlTSVNfSAorI2RlZmluZSBMTFZNX0NMQU5HX0JBU0lDX0RJQUdOT1NUSUNBTkFMWVNJU19ICisKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljLmgiCisKK25hbWVzcGFjZSBjbGFuZyB7CituYW1lc3BhY2UgZGlhZyB7CitlbnVtIHsKKyNkZWZpbmUgRElBRyhFTlVNLCBGTEFHUywgREVGQVVMVF9NQVBQSU5HLCBERVNDLCBHUk9VUCwgU0ZJTkFFLCBOT1dFUlJPUiwgICAgICBcCisgICAgICAgICAgICAgU0hPV0lOU1lTSEVBREVSLCBDQVRFR09SWSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBFTlVNLAorI2RlZmluZSBBTkFMWVNJU1NUQVJUCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0FuYWx5c2lzS2luZHMuaW5jIgorI3VuZGVmIERJQUcKKyAgTlVNX0JVSUxUSU5fQU5BTFlTSVNfRElBR05PU1RJQ1MKK307Cit9IC8vIGVuZCBuYW1lc3BhY2UgZGlhZworfSAvLyBlbmQgbmFtZXNwYWNlIGNsYW5nCisKKyNlbmRpZiAvLyBMTFZNX0NMQU5HX0JBU0lDX0RJQUdOT1NUSUNBTkFMWVNJU19ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljQ2F0ZWdvcmllcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0NhdGVnb3JpZXMuaAppbmRleCA0ZGQwNjdiLi4wZGVjZjE1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljQ2F0ZWdvcmllcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNDYXRlZ29yaWVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGlhZ25vc3RpY0NhdGVnb3JpZXMuaCAtIERpYWdub3N0aWMgQ2F0ZWdvcmllcyBFbnVtZXJhdG9ycy0qLSBDKysgLSo9PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljQ29tbWVudC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0NvbW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODdiYWZhCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0NvbW1lbnQuaApAQCAtMCwwICsxLDI4IEBACisvLz09PS0tLSBEaWFnbm9zdGljQ29tbWVudC5oIC0gRGlhZ25vc3RpY3MgZm9yIHRoZSBBU1QgbGlicmFyeSAtLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fQ0xBTkdfQkFTSUNfRElBR05PU1RJQ0NPTU1FTlRfSAorI2RlZmluZSBMTFZNX0NMQU5HX0JBU0lDX0RJQUdOT1NUSUNDT01NRU5UX0gKKworI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWMuaCIKKworbmFtZXNwYWNlIGNsYW5nIHsKK25hbWVzcGFjZSBkaWFnIHsKK2VudW0geworI2RlZmluZSBESUFHKEVOVU0sIEZMQUdTLCBERUZBVUxUX01BUFBJTkcsIERFU0MsIEdST1VQLCBTRklOQUUsIE5PV0VSUk9SLCAgICAgIFwKKyAgICAgICAgICAgICBTSE9XSU5TWVNIRUFERVIsIENBVEVHT1JZKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEVOVU0sCisjZGVmaW5lIENPTU1FTlRTVEFSVAorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNDb21tZW50S2luZHMuaW5jIgorI3VuZGVmIERJQUcKKyAgTlVNX0JVSUxUSU5fQ09NTUVOVF9ESUFHTk9TVElDUworfTsKK30gLy8gZW5kIG5hbWVzcGFjZSBkaWFnCit9IC8vIGVuZCBuYW1lc3BhY2UgY2xhbmcKKworI2VuZGlmIC8vIExMVk1fQ0xBTkdfQkFTSUNfRElBR05PU1RJQ0NPTU1FTlRfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0NvbW1lbnRLaW5kcy5pbmMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljQ29tbWVudEtpbmRzLmluYwppbmRleCBkMzQ2NTMxLi40ZWE1ODUzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljQ29tbWVudEtpbmRzLmluYworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljQ29tbWVudEtpbmRzLmluYwpAQCAtMTIsMjggKzEyLDI4IEBACiBESUFHKG5vdGVfZG9jX3BhcmFtX3ByZXZpb3VzLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAicHJldmlvdXMgZG9jdW1lbnRhdGlvbiIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNSkKIERJQUcobm90ZV9kb2NfdHBhcmFtX25hbWVfc3VnZ2VzdGlvbiwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImRpZCB5b3UgbWVhbiAnJTAnPyIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNSkKIERJQUcobm90ZV9kb2NfdHBhcmFtX3ByZXZpb3VzLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAicHJldmlvdXMgZG9jdW1lbnRhdGlvbiIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNSkKLURJQUcod2Fybl9jb3JyZWN0X2NvbW1lbnRfY29tbWFuZF9uYW1lLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bmtub3duIGNvbW1hbmQgdGFnIG5hbWUgJyUwJzsgZGlkIHlvdSBtZWFuICclMSc/IiwgMTg0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCi1ESUFHKHdhcm5fZG9jX2FwaV9jb250YWluZXJfZGVjbF9taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJyVzZWxlY3R7XFx8QH0wJXNlbGVjdHtjbGFzc3xpbnRlcmZhY2V8cHJvdG9jb2x8c3RydWN0fHVuaW9ufTEnIGNvbW1hbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGluIGEgY29tbWVudCBhdHRhY2hlZCB0byBhIG5vbi0lc2VsZWN0e2NsYXNzfGludGVyZmFjZXxwcm90b2NvbHxzdHJ1Y3R8dW5pb259MiBkZWNsYXJhdGlvbiIsIDE4MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQotRElBRyh3YXJuX2RvY19ibG9ja19jb21tYW5kX2R1cGxpY2F0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZHVwbGljYXRlZCBjb21tYW5kICclc2VsZWN0e1xcfEB9MCUxJyIsIDE4MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQotRElBRyh3YXJuX2RvY19ibG9ja19jb21tYW5kX2VtcHR5X3BhcmFncmFwaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZW1wdHkgcGFyYWdyYXBoIHBhc3NlZCB0byAnJXNlbGVjdHtcXHxAfTAlMScgY29tbWFuZCIsIDE4MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQotRElBRyh3YXJuX2RvY19jb250YWluZXJfZGVjbF9taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJyVzZWxlY3R7XFx8QH0wJXNlbGVjdHtjbGFzc2Rlc2lnbnxjb2NsYXNzfGRlcGVuZGVuY3l8aGVscGVyfGhlbHBlcmNsYXNzfGhlbHBzfGluc3RhbmNlc2l6ZXxvd25lcnNoaXB8cGVyZm9ybWFuY2V8c2VjdXJpdHl8c3VwZXJjbGFzc30xJyBjb21tYW5kIHNob3VsZCBub3QgYmUgdXNlZCBpbiBhIGNvbW1lbnQgYXR0YWNoZWQgdG8gYSBub24tY29udGFpbmVyIGRlY2xhcmF0aW9uIiwgMTgwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCi1ESUFHKHdhcm5fZG9jX2RlcHJlY2F0ZWRfbm90X3N5bmMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImRlY2xhcmF0aW9uIGlzIG1hcmtlZCB3aXRoICdcXGRlcHJlY2F0ZWQnIGNvbW1hbmQgYnV0IGRvZXMgbm90IGhhdmUgYSBkZXByZWNhdGlvbiBhdHRyaWJ1dGUiLCAxODEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNSkKLURJQUcod2Fybl9kb2NfZnVuY3Rpb25fbWV0aG9kX2RlY2xfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiclc2VsZWN0e1xcfEB9MCVzZWxlY3R7ZnVuY3Rpb258ZnVuY3Rpb25ncm91cHxtZXRob2R8bWV0aG9kZ3JvdXB8Y2FsbGJhY2t9MScgY29tbWFuZCBzaG91bGQgYmUgdXNlZCBpbiBhIGNvbW1lbnQgYXR0YWNoZWQgdG8gJXNlbGVjdHthIGZ1bmN0aW9ufGEgZnVuY3Rpb258YW4gT2JqZWN0aXZlLUMgbWV0aG9kfGFuIE9iamVjdGl2ZS1DIG1ldGhvZHxhIHBvaW50ZXIgdG8gZnVuY3Rpb259MiBkZWNsYXJhdGlvbiIsIDE4MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQotRElBRyh3YXJuX2RvY19odG1sX2VuZF9mb3JiaWRkZW4sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIkhUTUwgZW5kIHRhZyAnJTAnIGlzIGZvcmJpZGRlbiIsIDE4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQotRElBRyh3YXJuX2RvY19odG1sX2VuZF91bmJhbGFuY2VkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJIVE1MIGVuZCB0YWcgZG9lcyBub3QgbWF0Y2ggYW55IHN0YXJ0IHRhZyIsIDE4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQotRElBRyh3YXJuX2RvY19odG1sX21pc3NpbmdfZW5kX3RhZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiSFRNTCB0YWcgJyUwJyByZXF1aXJlcyBhbiBlbmQgdGFnIiwgMTgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCi1ESUFHKHdhcm5fZG9jX2h0bWxfc3RhcnRfZW5kX21pc21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJIVE1MIHN0YXJ0IHRhZyAnJTAnIGNsb3NlZCBieSAnJTEnIiwgMTgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCi1ESUFHKHdhcm5fZG9jX2h0bWxfc3RhcnRfdGFnX2V4cGVjdGVkX2lkZW50X29yX2dyZWF0ZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIkhUTUwgc3RhcnQgdGFnIHByZW1hdHVyZWx5IGVuZGVkLCBleHBlY3RlZCBhdHRyaWJ1dGUgbmFtZSBvciAnPiciLCAxODAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNSkKLURJQUcod2Fybl9kb2NfaHRtbF9zdGFydF90YWdfZXhwZWN0ZWRfcXVvdGVkX3N0cmluZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZXhwZWN0ZWQgcXVvdGVkIHN0cmluZyBhZnRlciBlcXVhbHMgc2lnbiIsIDE4MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQotRElBRyh3YXJuX2RvY19wYXJhbV9kdXBsaWNhdGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInBhcmFtZXRlciAnJTAnIGlzIGFscmVhZHkgZG9jdW1lbnRlZCIsIDE4MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQotRElBRyh3YXJuX2RvY19wYXJhbV9pbnZhbGlkX2RpcmVjdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW5yZWNvZ25pemVkIHBhcmFtZXRlciBwYXNzaW5nIGRpcmVjdGlvbiwgdmFsaWQgZGlyZWN0aW9ucyBhcmUgJ1tpbl0nLCAnW291dF0nIGFuZCAnW2luLG91dF0nIiwgMTgwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCi1ESUFHKHdhcm5fZG9jX3BhcmFtX25vdF9hdHRhY2hlZF90b19hX2Z1bmN0aW9uX2RlY2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiclc2VsZWN0e1xcfEB9MHBhcmFtJyBjb21tYW5kIHVzZWQgaW4gYSBjb21tZW50IHRoYXQgaXMgbm90IGF0dGFjaGVkIHRvIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24iLCAxODAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNSkKLURJQUcod2Fybl9kb2NfcGFyYW1fbm90X2ZvdW5kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwYXJhbWV0ZXIgJyUwJyBub3QgZm91bmQgaW4gdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIiwgMTgwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCi1ESUFHKHdhcm5fZG9jX3BhcmFtX3NwYWNlc19pbl9kaXJlY3Rpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIndoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgaW4gcGFyYW1ldGVyIHBhc3NpbmcgZGlyZWN0aW9uIiwgMTgzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCi1ESUFHKHdhcm5fZG9jX3JldHVybnNfYXR0YWNoZWRfdG9fYV92b2lkX2Z1bmN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICInJXNlbGVjdHtcXHxAfTAlMScgY29tbWFuZCB1c2VkIGluIGEgY29tbWVudCB0aGF0IGlzIGF0dGFjaGVkIHRvIGEgJXNlbGVjdHtmdW5jdGlvbiByZXR1cm5pbmcgdm9pZHxjb25zdHJ1Y3RvcnxkZXN0cnVjdG9yfG1ldGhvZCByZXR1cm5pbmcgdm9pZH0yIiwgMTgwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCi1ESUFHKHdhcm5fZG9jX3JldHVybnNfbm90X2F0dGFjaGVkX3RvX2FfZnVuY3Rpb25fZGVjbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJyVzZWxlY3R7XFx8QH0wJTEnIGNvbW1hbmQgdXNlZCBpbiBhIGNvbW1lbnQgdGhhdCBpcyBub3QgYXR0YWNoZWQgdG8gYSBmdW5jdGlvbiBvciBtZXRob2QgZGVjbGFyYXRpb24iLCAxODAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNSkKLURJQUcod2Fybl9kb2NfdHBhcmFtX2R1cGxpY2F0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidGVtcGxhdGUgcGFyYW1ldGVyICclMCcgaXMgYWxyZWFkeSBkb2N1bWVudGVkIiwgMTgwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCi1ESUFHKHdhcm5fZG9jX3RwYXJhbV9ub3RfYXR0YWNoZWRfdG9fYV90ZW1wbGF0ZV9kZWNsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICInJXNlbGVjdHtcXHxAfTB0cGFyYW0nIGNvbW1hbmQgdXNlZCBpbiBhIGNvbW1lbnQgdGhhdCBpcyBub3QgYXR0YWNoZWQgdG8gYSB0ZW1wbGF0ZSBkZWNsYXJhdGlvbiIsIDE4MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQotRElBRyh3YXJuX2RvY190cGFyYW1fbm90X2ZvdW5kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ0ZW1wbGF0ZSBwYXJhbWV0ZXIgJyUwJyBub3QgZm91bmQgaW4gdGhlIHRlbXBsYXRlIGRlY2xhcmF0aW9uIiwgMTgwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCi1ESUFHKHdhcm5fdW5rbm93bl9jb21tZW50X2NvbW1hbmRfbmFtZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW5rbm93biBjb21tYW5kIHRhZyBuYW1lIiwgMTg0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCi1ESUFHKHdhcm5fdmVyYmF0aW1fYmxvY2tfZW5kX3dpdGhvdXRfc3RhcnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiclc2VsZWN0e1xcfEB9MCUxJyBjb21tYW5kIGRvZXMgbm90IHRlcm1pbmF0ZSBhIHZlcmJhdGltIHRleHQgYmxvY2siLCAxODAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNSkKK0RJQUcod2Fybl9jb3JyZWN0X2NvbW1lbnRfY29tbWFuZF9uYW1lLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bmtub3duIGNvbW1hbmQgdGFnIG5hbWUgJyUwJzsgZGlkIHlvdSBtZWFuICclMSc/IiwgMTkwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCitESUFHKHdhcm5fZG9jX2FwaV9jb250YWluZXJfZGVjbF9taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJyVzZWxlY3R7XFx8QH0wJXNlbGVjdHtjbGFzc3xpbnRlcmZhY2V8cHJvdG9jb2x8c3RydWN0fHVuaW9ufTEnIGNvbW1hbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGluIGEgY29tbWVudCBhdHRhY2hlZCB0byBhIG5vbi0lc2VsZWN0e2NsYXNzfGludGVyZmFjZXxwcm90b2NvbHxzdHJ1Y3R8dW5pb259MiBkZWNsYXJhdGlvbiIsIDE4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQorRElBRyh3YXJuX2RvY19ibG9ja19jb21tYW5kX2R1cGxpY2F0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZHVwbGljYXRlZCBjb21tYW5kICclc2VsZWN0e1xcfEB9MCUxJyIsIDE4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQorRElBRyh3YXJuX2RvY19ibG9ja19jb21tYW5kX2VtcHR5X3BhcmFncmFwaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZW1wdHkgcGFyYWdyYXBoIHBhc3NlZCB0byAnJXNlbGVjdHtcXHxAfTAlMScgY29tbWFuZCIsIDE4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQorRElBRyh3YXJuX2RvY19jb250YWluZXJfZGVjbF9taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJyVzZWxlY3R7XFx8QH0wJXNlbGVjdHtjbGFzc2Rlc2lnbnxjb2NsYXNzfGRlcGVuZGVuY3l8aGVscGVyfGhlbHBlcmNsYXNzfGhlbHBzfGluc3RhbmNlc2l6ZXxvd25lcnNoaXB8cGVyZm9ybWFuY2V8c2VjdXJpdHl8c3VwZXJjbGFzc30xJyBjb21tYW5kIHNob3VsZCBub3QgYmUgdXNlZCBpbiBhIGNvbW1lbnQgYXR0YWNoZWQgdG8gYSBub24tY29udGFpbmVyIGRlY2xhcmF0aW9uIiwgMTg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCitESUFHKHdhcm5fZG9jX2RlcHJlY2F0ZWRfbm90X3N5bmMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImRlY2xhcmF0aW9uIGlzIG1hcmtlZCB3aXRoICdcXGRlcHJlY2F0ZWQnIGNvbW1hbmQgYnV0IGRvZXMgbm90IGhhdmUgYSBkZXByZWNhdGlvbiBhdHRyaWJ1dGUiLCAxODcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNSkKK0RJQUcod2Fybl9kb2NfZnVuY3Rpb25fbWV0aG9kX2RlY2xfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiclc2VsZWN0e1xcfEB9MCVzZWxlY3R7ZnVuY3Rpb258ZnVuY3Rpb25ncm91cHxtZXRob2R8bWV0aG9kZ3JvdXB8Y2FsbGJhY2t9MScgY29tbWFuZCBzaG91bGQgYmUgdXNlZCBpbiBhIGNvbW1lbnQgYXR0YWNoZWQgdG8gJXNlbGVjdHthIGZ1bmN0aW9ufGEgZnVuY3Rpb258YW4gT2JqZWN0aXZlLUMgbWV0aG9kfGFuIE9iamVjdGl2ZS1DIG1ldGhvZHxhIHBvaW50ZXIgdG8gZnVuY3Rpb259MiBkZWNsYXJhdGlvbiIsIDE4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQorRElBRyh3YXJuX2RvY19odG1sX2VuZF9mb3JiaWRkZW4sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIkhUTUwgZW5kIHRhZyAnJTAnIGlzIGZvcmJpZGRlbiIsIDE4OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQorRElBRyh3YXJuX2RvY19odG1sX2VuZF91bmJhbGFuY2VkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJIVE1MIGVuZCB0YWcgZG9lcyBub3QgbWF0Y2ggYW55IHN0YXJ0IHRhZyIsIDE4OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQorRElBRyh3YXJuX2RvY19odG1sX21pc3NpbmdfZW5kX3RhZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiSFRNTCB0YWcgJyUwJyByZXF1aXJlcyBhbiBlbmQgdGFnIiwgMTg4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCitESUFHKHdhcm5fZG9jX2h0bWxfc3RhcnRfZW5kX21pc21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJIVE1MIHN0YXJ0IHRhZyAnJTAnIGNsb3NlZCBieSAnJTEnIiwgMTg4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCitESUFHKHdhcm5fZG9jX2h0bWxfc3RhcnRfdGFnX2V4cGVjdGVkX2lkZW50X29yX2dyZWF0ZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIkhUTUwgc3RhcnQgdGFnIHByZW1hdHVyZWx5IGVuZGVkLCBleHBlY3RlZCBhdHRyaWJ1dGUgbmFtZSBvciAnPiciLCAxODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNSkKK0RJQUcod2Fybl9kb2NfaHRtbF9zdGFydF90YWdfZXhwZWN0ZWRfcXVvdGVkX3N0cmluZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZXhwZWN0ZWQgcXVvdGVkIHN0cmluZyBhZnRlciBlcXVhbHMgc2lnbiIsIDE4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQorRElBRyh3YXJuX2RvY19wYXJhbV9kdXBsaWNhdGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInBhcmFtZXRlciAnJTAnIGlzIGFscmVhZHkgZG9jdW1lbnRlZCIsIDE4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQorRElBRyh3YXJuX2RvY19wYXJhbV9pbnZhbGlkX2RpcmVjdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW5yZWNvZ25pemVkIHBhcmFtZXRlciBwYXNzaW5nIGRpcmVjdGlvbiwgdmFsaWQgZGlyZWN0aW9ucyBhcmUgJ1tpbl0nLCAnW291dF0nIGFuZCAnW2luLG91dF0nIiwgMTg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCitESUFHKHdhcm5fZG9jX3BhcmFtX25vdF9hdHRhY2hlZF90b19hX2Z1bmN0aW9uX2RlY2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiclc2VsZWN0e1xcfEB9MHBhcmFtJyBjb21tYW5kIHVzZWQgaW4gYSBjb21tZW50IHRoYXQgaXMgbm90IGF0dGFjaGVkIHRvIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24iLCAxODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNSkKK0RJQUcod2Fybl9kb2NfcGFyYW1fbm90X2ZvdW5kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwYXJhbWV0ZXIgJyUwJyBub3QgZm91bmQgaW4gdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIiwgMTg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCitESUFHKHdhcm5fZG9jX3BhcmFtX3NwYWNlc19pbl9kaXJlY3Rpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIndoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgaW4gcGFyYW1ldGVyIHBhc3NpbmcgZGlyZWN0aW9uIiwgMTg5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCitESUFHKHdhcm5fZG9jX3JldHVybnNfYXR0YWNoZWRfdG9fYV92b2lkX2Z1bmN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICInJXNlbGVjdHtcXHxAfTAlMScgY29tbWFuZCB1c2VkIGluIGEgY29tbWVudCB0aGF0IGlzIGF0dGFjaGVkIHRvIGEgJXNlbGVjdHtmdW5jdGlvbiByZXR1cm5pbmcgdm9pZHxjb25zdHJ1Y3RvcnxkZXN0cnVjdG9yfG1ldGhvZCByZXR1cm5pbmcgdm9pZH0yIiwgMTg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCitESUFHKHdhcm5fZG9jX3JldHVybnNfbm90X2F0dGFjaGVkX3RvX2FfZnVuY3Rpb25fZGVjbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJyVzZWxlY3R7XFx8QH0wJTEnIGNvbW1hbmQgdXNlZCBpbiBhIGNvbW1lbnQgdGhhdCBpcyBub3QgYXR0YWNoZWQgdG8gYSBmdW5jdGlvbiBvciBtZXRob2QgZGVjbGFyYXRpb24iLCAxODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNSkKK0RJQUcod2Fybl9kb2NfdHBhcmFtX2R1cGxpY2F0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidGVtcGxhdGUgcGFyYW1ldGVyICclMCcgaXMgYWxyZWFkeSBkb2N1bWVudGVkIiwgMTg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCitESUFHKHdhcm5fZG9jX3RwYXJhbV9ub3RfYXR0YWNoZWRfdG9fYV90ZW1wbGF0ZV9kZWNsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICInJXNlbGVjdHtcXHxAfTB0cGFyYW0nIGNvbW1hbmQgdXNlZCBpbiBhIGNvbW1lbnQgdGhhdCBpcyBub3QgYXR0YWNoZWQgdG8gYSB0ZW1wbGF0ZSBkZWNsYXJhdGlvbiIsIDE4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI1KQorRElBRyh3YXJuX2RvY190cGFyYW1fbm90X2ZvdW5kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ0ZW1wbGF0ZSBwYXJhbWV0ZXIgJyUwJyBub3QgZm91bmQgaW4gdGhlIHRlbXBsYXRlIGRlY2xhcmF0aW9uIiwgMTg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCitESUFHKHdhcm5fdW5rbm93bl9jb21tZW50X2NvbW1hbmRfbmFtZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW5rbm93biBjb21tYW5kIHRhZyBuYW1lIiwgMTkwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCitESUFHKHdhcm5fdmVyYmF0aW1fYmxvY2tfZW5kX3dpdGhvdXRfc3RhcnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiclc2VsZWN0e1xcfEB9MCUxJyBjb21tYW5kIGRvZXMgbm90IHRlcm1pbmF0ZSBhIHZlcmJhdGltIHRleHQgYmxvY2siLCAxODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNSkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNDb21tb25LaW5kcy5pbmMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljQ29tbW9uS2luZHMuaW5jCmluZGV4IDU3YTZhZDcuLjlmZDM0ZjYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNDb21tb25LaW5kcy5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0NvbW1vbktpbmRzLmluYwpAQCAtNCw3ICs0LDkgQEAKICNlbmRpZgogCiBESUFHKGVycl9hcmNtdF9uc2ludm9jYXRpb25fb3duZXJzaGlwLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIk5TSW52b2NhdGlvbidzICUwIGlzIG5vdCBzYWZlIHRvIGJlIHVzZWQgd2l0aCBhbiBvYmplY3Qgd2l0aCBvd25lcnNoaXAgb3RoZXIgdGhhbiBfX3Vuc2FmZV91bnJldGFpbmVkIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQorRElBRyhlcnJfYXNtX2ludmFsaWRfdHlwZV9pbl9pbnB1dCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIHR5cGUgJTAgaW4gYXNtIGlucHV0IGZvciBjb25zdHJhaW50ICclMSciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDEyKQogRElBRyhlcnJfYXR0cmlidXRlX25vdF90eXBlX2F0dHIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJTAgYXR0cmlidXRlIGNhbm5vdCBiZSBhcHBsaWVkIHRvIHR5cGVzIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQorRElBRyhlcnJfYXR0cmlidXRlX3V1aWRfbWFsZm9ybWVkX2d1aWQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidXVpZCBhdHRyaWJ1dGUgY29udGFpbnMgYSBtYWxmb3JtZWQgR1VJRCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2Nhbm5vdF9vcGVuX2ZpbGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiY2Fubm90IG9wZW4gZmlsZSAnJTAnOiAlMSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2RlZmF1bHRfc3BlY2lhbF9tZW1iZXJzLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm9ubHkgc3BlY2lhbCBtZW1iZXIgZnVuY3Rpb25zIG1heSBiZSBkZWZhdWx0ZWQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCiBESUFHKGVycl9kZWxldGVkX25vbl9mdW5jdGlvbiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJvbmx5IGZ1bmN0aW9ucyBjYW4gaGF2ZSBkZWxldGVkIGRlZmluaXRpb25zIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQpAQCAtMTcsOCArMTksMTAgQEAKIERJQUcoZXJyX2V4cGVjdGVkX3N0cmluZ19saXRlcmFsLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImV4cGVjdGVkIHN0cmluZyBsaXRlcmFsICVzZWxlY3R7aW4gJTF8Zm9yIGRpYWdub3N0aWMgbWVzc2FnZSBpbiBzdGF0aWNfYXNzZXJ0fGZvciBvcHRpb25hbCBtZXNzYWdlIGluICdhdmFpbGFiaWxpdHknIGF0dHJpYnV0ZXxmb3IgJXNlbGVjdHtsYW5ndWFnZXxzb3VyY2UgY29udGFpbmVyfTEgbmFtZSBpbiAnZXh0ZXJuYWxfc291cmNlX3N5bWJvbCcgYXR0cmlidXRlfTAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDEpCiBESUFHKGVycl9maWxlX21vZGlmaWVkLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImZpbGUgJyUwJyBtb2RpZmllZCBzaW5jZSBpdCB3YXMgZmlyc3QgcHJvY2Vzc2VkIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfZml4ZWRfcG9pbnRfbm90X2VuYWJsZWQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiY29tcGlsZSB3aXRoICctZmZpeGVkLXBvaW50JyB0byBlbmFibGUgZml4ZWQgcG9pbnQgdHlwZXMiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCitESUFHKGVycl9mcmllbmRfZGVjbF9zcGVjLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiclMCcgaXMgaW52YWxpZCBpbiBmcmllbmQgZGVjbGFyYXRpb25zIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfaW50ZWdlcl9saXRlcmFsX3Rvb19sYXJnZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnRlZ2VyIGxpdGVyYWwgaXMgdG9vIGxhcmdlIHRvIGJlIHJlcHJlc2VudGVkIGluIGFueSAlc2VsZWN0e3NpZ25lZCB8fTBpbnRlZ2VyIHR5cGUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9pbnZhbGlkX2NoYXJhY3Rlcl91ZGwsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiY2hhcmFjdGVyIGxpdGVyYWwgd2l0aCB1c2VyLWRlZmluZWQgc3VmZml4IGNhbm5vdCBiZSB1c2VkIGhlcmUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDEpCitESUFHKGVycl9pbnZhbGlkX21lbWJlcl9pbl9pbnRlcmZhY2UsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJXNlbGVjdHtkYXRhIG1lbWJlciB8bm9uLXB1YmxpYyBtZW1iZXIgZnVuY3Rpb24gfHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gfHVzZXItZGVjbGFyZWQgY29uc3RydWN0b3J8dXNlci1kZWNsYXJlZCBkZXN0cnVjdG9yfG9wZXJhdG9yIHxuZXN0ZWQgY2xhc3MgfTAlMSBpcyBub3QgcGVybWl0dGVkIHdpdGhpbiBhbiBpbnRlcmZhY2UgdHlwZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2ludmFsaWRfbnVtZXJpY191ZGwsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibnVtZXJpYyBsaXRlcmFsIHdpdGggdXNlci1kZWZpbmVkIHN1ZmZpeCBjYW5ub3QgYmUgdXNlZCBoZXJlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxKQogRElBRyhlcnJfaW52YWxpZF9zdG9yYWdlX2NsYXNzX2luX2Z1bmNfZGVjbCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIHN0b3JhZ2UgY2xhc3Mgc3BlY2lmaWVyIGluIGZ1bmN0aW9uIGRlY2xhcmF0b3IiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCiBESUFHKGVycl9pbnZhbGlkX3N0cmluZ191ZGwsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAic3RyaW5nIGxpdGVyYWwgd2l0aCB1c2VyLWRlZmluZWQgc3VmZml4IGNhbm5vdCBiZSB1c2VkIGhlcmUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDEpCkBAIC0zNiw2ICs0MCw3IEBACiBESUFHKGVycl9tdF9tZXNzYWdlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIltyZXdyaXRlcl0gJTAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIGZhbHNlLCAwKQogRElBRyhlcnJfbnVsbGFiaWxpdHlfY29uZmxpY3RpbmcsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibnVsbGFiaWxpdHkgc3BlY2lmaWVyICUwIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIHNwZWNpZmllciAlMSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMTkpCiBESUFHKGVycl9vbXBfbW9yZV9vbmVfY2xhdXNlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImRpcmVjdGl2ZSAnI3ByYWdtYSBvbXAgJTAnIGNhbm5vdCBjb250YWluIG1vcmUgdGhhbiBvbmUgJyUxJyBjbGF1c2Ulc2VsZWN0e3wgd2l0aCAnJTMnIG5hbWUgbW9kaWZpZXJ8IHdpdGggJ3NvdXJjZScgZGVwZW5kZW5jZX0yIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQorRElBRyhlcnJfb3BlbmNsX3Vua25vd25fdHlwZV9zcGVjaWZpZXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiT3BlbkNMICVzZWxlY3R7Q3xDKyt9MCB2ZXJzaW9uICUxIGRvZXMgbm90IHN1cHBvcnQgdGhlICclMicgJXNlbGVjdHt0eXBlIHF1YWxpZmllcnxzdG9yYWdlIGNsYXNzIHNwZWNpZmllcn0zIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfb3BlbmNsY3h4X25vdF9zdXBwb3J0ZWQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJyUwJyBpcyBub3Qgc3VwcG9ydGVkIGluIE9wZW5DTCBDKysiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9vcHRfbm90X3ZhbGlkX29uX3RhcmdldCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJvcHRpb24gJyUwJyBjYW5ub3QgYmUgc3BlY2lmaWVkIG9uIHRoaXMgdGFyZ2V0IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfb3B0X25vdF92YWxpZF93aXRoX29wdCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJvcHRpb24gJyUwJyBjYW5ub3QgYmUgc3BlY2lmaWVkIHdpdGggJyUxJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKQEAgLTU4LDE1ICs2MywyMCBAQAogRElBRyhlcnJfdG9vX2xhcmdlX2Zvcl9maXhlZF9wb2ludCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ0aGlzIHZhbHVlIGlzIHRvbyBsYXJnZSBmb3IgdGhpcyBmaXhlZCBwb2ludCB0eXBlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfdW5hYmxlX3RvX21ha2VfdGVtcCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1bmFibGUgdG8gbWFrZSB0ZW1wb3JhcnkgZmlsZTogJTAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl91bmFibGVfdG9fcmVuYW1lX3RlbXAsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidW5hYmxlIHRvIHJlbmFtZSB0ZW1wb3JhcnkgJyUwJyB0byBvdXRwdXQgZmlsZSAnJTEnOiAnJTInIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQorRElBRyhlcnJfdW5pbXBsZW1lbnRlZF9jb252ZXJzaW9uX3dpdGhfZml4ZWRfcG9pbnRfdHlwZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjb252ZXJzaW9uIGJldHdlZW4gZml4ZWQgcG9pbnQgYW5kICUwIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQorRElBRyhlcnJfdW5rbm93bl9hbmFseXplcl9jaGVja2VyLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm5vIGFuYWx5emVyIGNoZWNrZXJzIGFyZSBhc3NvY2lhdGVkIHdpdGggJyUwJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX3Vuc3VwcG9ydGVkX2FiaV9mb3Jfb3B0LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiclMCcgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIHRoZSAnJTEnIEFCSSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX3Vuc3VwcG9ydGVkX2JvbSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICIlMCBieXRlIG9yZGVyIG1hcmsgZGV0ZWN0ZWQgaW4gJyUxJywgYnV0IGVuY29kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCi1ESUFHKGV4dF9jOTlfbG9uZ2xvbmcsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJ2xvbmcgbG9uZycgaXMgYW4gZXh0ZW5zaW9uIHdoZW4gQzk5IG1vZGUgaXMgbm90IGVuYWJsZWQiLCAzNTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyhleHRfY2xhbmdfZGlhZ25vc2VfaWYsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJ2RpYWdub3NlX2lmJyBpcyBhIGNsYW5nIGV4dGVuc2lvbiIsIDI0MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKGV4dF9jbGFuZ19lbmFibGVfaWYsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJ2VuYWJsZV9pZicgaXMgYSBjbGFuZyBleHRlbnNpb24iLCAyNDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyhlcnJfdXNlX29mX3RhZ19uYW1lX3dpdGhvdXRfdGFnLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm11c3QgdXNlICclMScgdGFnIHRvIHJlZmVyIHRvIHR5cGUgJTAlc2VsZWN0e3wgaW4gdGhpcyBzY29wZX0yIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQorRElBRyhleHRfYzk5X2xvbmdsb25nLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIidsb25nIGxvbmcnIGlzIGFuIGV4dGVuc2lvbiB3aGVuIEM5OSBtb2RlIGlzIG5vdCBlbmFibGVkIiwgMzYwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcoZXh0X2NsYW5nX2RpYWdub3NlX2lmLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIidkaWFnbm9zZV9pZicgaXMgYSBjbGFuZyBleHRlbnNpb24iLCAyNTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyhleHRfY2xhbmdfZW5hYmxlX2lmLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIidlbmFibGVfaWYnIGlzIGEgY2xhbmcgZXh0ZW5zaW9uIiwgMjUwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKIERJQUcoZXh0X2N4eDExX2xvbmdsb25nLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIidsb25nIGxvbmcnIGlzIGEgQysrMTEgZXh0ZW5zaW9uIiwgODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyhleHRfaW50ZWdlcl9saXRlcmFsX3Rvb19sYXJnZV9mb3Jfc2lnbmVkLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImludGVnZXIgbGl0ZXJhbCBpcyB0b28gbGFyZ2UgdG8gYmUgcmVwcmVzZW50ZWQgaW4gYSBzaWduZWQgaW50ZWdlciB0eXBlLCBpbnRlcnByZXRpbmcgYXMgdW5zaWduZWQiLCAyOTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyhleHRfZHVwbGljYXRlX2RlY2xzcGVjLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImR1cGxpY2F0ZSAnJTAnIGRlY2xhcmF0aW9uIHNwZWNpZmllciIsIDE5MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKGV4dF9pbnRlZ2VyX2xpdGVyYWxfdG9vX2xhcmdlX2Zvcl9zaWduZWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW50ZWdlciBsaXRlcmFsIGlzIHRvbyBsYXJnZSB0byBiZSByZXByZXNlbnRlZCBpbiBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUsIGludGVycHJldGluZyBhcyB1bnNpZ25lZCIsIDMwMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCiBESUFHKGV4dF9vbGRfaW1wbGljaXRseV91bnNpZ25lZF9sb25nX2N4eCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbnRlZ2VyIGxpdGVyYWwgaXMgdG9vIGxhcmdlIHRvIGJlIHJlcHJlc2VudGVkIGluIHR5cGUgJ2xvbmcnIGFuZCBpcyBzdWJqZWN0IHRvIHVuZGVmaW5lZCBiZWhhdmlvciB1bmRlciBDKys5OCwgaW50ZXJwcmV0aW5nIGFzICd1bnNpZ25lZCBsb25nJzsgdGhpcyBsaXRlcmFsIHdpbGwgJXNlbGVjdHtoYXZlIHR5cGUgJ2xvbmcgbG9uZyd8YmUgaWxsLWZvcm1lZH0wIGluIEMrKzExIG9ud2FyZHMiLCA3NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCiBESUFHKGV4dF92YXJpYWRpY190ZW1wbGF0ZXMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidmFyaWFkaWMgdGVtcGxhdGVzIGFyZSBhIEMrKzExIGV4dGVuc2lvbiIsIDc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcoZXh0X3dhcm5fZHVwbGljYXRlX2RlY2xzcGVjLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImR1cGxpY2F0ZSAnJTAnIGRlY2xhcmF0aW9uIHNwZWNpZmllciIsIDE5MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCiBESUFHKGZhdGFsX3Rvb19tYW55X2Vycm9ycywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJ0b28gbWFueSBlcnJvcnMgZW1pdHRlZCwgc3RvcHBpbmcgbm93IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhub3RlX2Fsc29fZm91bmQsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJhbHNvIGZvdW5kIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCiBESUFHKG5vdGVfZGVjbF9oaWRpbmdfdGFnX3R5cGUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICIlMSAlMCBpcyBoaWRkZW4gYnkgYSBub24tdHlwZSBkZWNsYXJhdGlvbiBvZiAlMCBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCkBAIC04MiwxOSArOTIsMjMgQEAKIERJQUcobm90ZV9wcmV2aW91c19kZWZpbml0aW9uLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAicHJldmlvdXMgZGVmaW5pdGlvbiBpcyBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCiBESUFHKG5vdGVfcHJldmlvdXNfaW1wbGljaXRfZGVjbGFyYXRpb24sIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJwcmV2aW91cyBpbXBsaWNpdCBkZWNsYXJhdGlvbiBpcyBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCiBESUFHKG5vdGVfcHJldmlvdXNfdXNlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAicHJldmlvdXMgdXNlIGlzIGhlcmUiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcobm90ZV9zdWdnZXN0X2Rpc2FibGluZ19hbGxfY2hlY2tlcnMsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJ1c2UgLWFuYWx5emVyLWRpc2FibGUtYWxsLWNoZWNrcyB0byBkaXNhYmxlIGFsbCBzdGF0aWMgYW5hbHl6ZXIgY2hlY2tlcnMiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKIERJQUcobm90ZV90eXBlX2JlaW5nX2RlZmluZWQsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJkZWZpbml0aW9uIG9mICUwIGlzIG5vdCBjb21wbGV0ZSB1bnRpbCB0aGUgY2xvc2luZyAnfSciLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKIERJQUcobm90ZV91c2luZywgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgInVzaW5nIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCiBESUFHKG5vdGVfdmFsaWRfb3B0aW9ucywgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgInZhbGlkIHRhcmdldCBDUFUgdmFsdWVzIGFyZTogJTAiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcocmVtYXJrX21vZHVsZV9sb2NrX2ZhaWx1cmUsIENMQVNTX1JFTUFSSywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY291bGQgbm90IGFjcXVpcmUgbG9jayBmaWxlIGZvciBtb2R1bGUgJyUwJzogJTEiLCA0MDksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyhyZW1hcmtfbW9kdWxlX2xvY2tfdGltZW91dCwgQ0xBU1NfUkVNQVJLLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ0aW1lZCBvdXQgd2FpdGluZyB0byBhY3F1aXJlIGxvY2sgZmlsZSBmb3IgbW9kdWxlICclMCciLCA0MDksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyhyZW1hcmtfbW9kdWxlX2xvY2tfZmFpbHVyZSwgQ0xBU1NfUkVNQVJLLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjb3VsZCBub3QgYWNxdWlyZSBsb2NrIGZpbGUgZm9yIG1vZHVsZSAnJTAnOiAlMSIsIDQxOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHJlbWFya19tb2R1bGVfbG9ja190aW1lb3V0LCBDTEFTU19SRU1BUkssICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInRpbWVkIG91dCB3YWl0aW5nIHRvIGFjcXVpcmUgbG9jayBmaWxlIGZvciBtb2R1bGUgJyUwJyIsIDQxOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKHdhcm5fYXJjbXRfbnNhbGxvY19yZWFsbG9jLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJbcmV3cml0ZXJdIGNhbGwgcmV0dXJucyBwb2ludGVyIHRvIEdDIG1hbmFnZWQgbWVtb3J5OyBpdCB3aWxsIGJlY29tZSB1bm1hbmFnZWQgaW4gQVJDIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKHdhcm5fY29uZmxpY3RpbmdfbnVsbGFiaWxpdHlfYXR0cl9vdmVycmlkaW5nX3BhcmFtX3R5cGVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb25mbGljdGluZyBudWxsYWJpbGl0eSBzcGVjaWZpZXIgb24gcGFyYW1ldGVyIHR5cGVzLCAlMCBjb25mbGljdHMgd2l0aCBleGlzdGluZyBzcGVjaWZpZXIgJTEiLCA0NDcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxOSkKLURJQUcod2Fybl9jb25mbGljdGluZ19udWxsYWJpbGl0eV9hdHRyX292ZXJyaWRpbmdfcmV0X3R5cGVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb25mbGljdGluZyBudWxsYWJpbGl0eSBzcGVjaWZpZXIgb24gcmV0dXJuIHR5cGVzLCAlMCBjb25mbGljdHMgd2l0aCBleGlzdGluZyBzcGVjaWZpZXIgJTEiLCA0NDcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxOSkKK0RJQUcod2Fybl9jb25mbGljdGluZ19udWxsYWJpbGl0eV9hdHRyX292ZXJyaWRpbmdfcGFyYW1fdHlwZXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbmZsaWN0aW5nIG51bGxhYmlsaXR5IHNwZWNpZmllciBvbiBwYXJhbWV0ZXIgdHlwZXMsICUwIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIHNwZWNpZmllciAlMSIsIDQ1NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE5KQorRElBRyh3YXJuX2NvbmZsaWN0aW5nX251bGxhYmlsaXR5X2F0dHJfb3ZlcnJpZGluZ19yZXRfdHlwZXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbmZsaWN0aW5nIG51bGxhYmlsaXR5IHNwZWNpZmllciBvbiByZXR1cm4gdHlwZXMsICUwIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIHNwZWNpZmllciAlMSIsIDQ1NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE5KQogRElBRyh3YXJuX2N4eDk4X2NvbXBhdF9sb25nbG9uZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJ2xvbmcgbG9uZycgaXMgaW5jb21wYXRpYmxlIHdpdGggQysrOTgiLCAxMTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQogRElBRyh3YXJuX2N4eDk4X2NvbXBhdF92YXJpYWRpY190ZW1wbGF0ZXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInZhcmlhZGljIHRlbXBsYXRlcyBhcmUgaW5jb21wYXRpYmxlIHdpdGggQysrOTgiLCAxMDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX21ldGhvZF9wYXJhbV9kZWNsYXJhdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicmVkZWNsYXJhdGlvbiBvZiBtZXRob2QgcGFyYW1ldGVyICUwIiwgMTg5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9kdXBfY2F0ZWdvcnlfZGVmLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkdXBsaWNhdGUgZGVmaW5pdGlvbiBvZiBjYXRlZ29yeSAlMSBvbiBpbnRlcmZhY2UgJTAiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kdXBsaWNhdGVfZGVjbHNwZWMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImR1cGxpY2F0ZSAnJTAnIGRlY2xhcmF0aW9uIHNwZWNpZmllciIsIDE5MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fbWV0aG9kX3BhcmFtX2RlY2xhcmF0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJyZWRlY2xhcmF0aW9uIG9mIG1ldGhvZCBwYXJhbWV0ZXIgJTAiLCAxOTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyh3YXJuX21ldGhvZF9wYXJhbV9yZWRlZmluaXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlZGVmaW5pdGlvbiBvZiBtZXRob2QgcGFyYW1ldGVyICUwIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKHdhcm5fbXRfbWVzc2FnZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiW3Jld3JpdGVyXSAlMCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX251bGxhYmlsaXR5X2R1cGxpY2F0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZHVwbGljYXRlIG51bGxhYmlsaXR5IHNwZWNpZmllciAlMCIsIDQ0NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE5KQorRElBRyh3YXJuX251bGxhYmlsaXR5X2R1cGxpY2F0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZHVwbGljYXRlIG51bGxhYmlsaXR5IHNwZWNpZmllciAlMCIsIDQ1NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE5KQogRElBRyh3YXJuX29sZF9pbXBsaWNpdGx5X3Vuc2lnbmVkX2xvbmcsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImludGVnZXIgbGl0ZXJhbCBpcyB0b28gbGFyZ2UgdG8gYmUgcmVwcmVzZW50ZWQgaW4gdHlwZSAnbG9uZycsIGludGVycHJldGluZyBhcyAndW5zaWduZWQgbG9uZycgcGVyIEM4OTsgdGhpcyBsaXRlcmFsIHdpbGwgJXNlbGVjdHtoYXZlIHR5cGUgJ2xvbmcgbG9uZyd8YmUgaWxsLWZvcm1lZH0wIGluIEM5OSBvbndhcmRzIiwgMTEzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKIERJQUcod2Fybl9vbGRfaW1wbGljaXRseV91bnNpZ25lZF9sb25nX2N4eCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW50ZWdlciBsaXRlcmFsIGlzIHRvbyBsYXJnZSB0byBiZSByZXByZXNlbnRlZCBpbiB0eXBlICdsb25nJywgaW50ZXJwcmV0aW5nIGFzICd1bnNpZ25lZCBsb25nJyBwZXIgQysrOTg7IHRoaXMgbGl0ZXJhbCB3aWxsICVzZWxlY3R7aGF2ZSB0eXBlICdsb25nIGxvbmcnfGJlIGlsbC1mb3JtZWR9MCBpbiBDKysxMSBvbndhcmRzIiwgNzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX3Vua25vd25fYXR0cmlidXRlX2lnbm9yZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVua25vd24gYXR0cmlidXRlICUwIGlnbm9yZWQiLCA2OTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0Nyb3NzVFUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNDcm9zc1RVLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFjNTgyYgotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNDcm9zc1RVLmgKQEAgLTAsMCArMSwyOCBAQAorLy89PT0tLS0gRGlhZ25vc3RpY0Nyb3NzVFUuaCAtIERpYWdub3N0aWNzIGZvciBDcm9zcyBUVSAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0NMQU5HX0JBU0lDX0RJQUdOT1NUSUNDUk9TU1RVX0gKKyNkZWZpbmUgTExWTV9DTEFOR19CQVNJQ19ESUFHTk9TVElDQ1JPU1NUVV9ICisKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljLmgiCisKK25hbWVzcGFjZSBjbGFuZyB7CituYW1lc3BhY2UgZGlhZyB7CitlbnVtIHsKKyNkZWZpbmUgRElBRyhFTlVNLCBGTEFHUywgREVGQVVMVF9NQVBQSU5HLCBERVNDLCBHUk9VUCwgU0ZJTkFFLCBOT1dFUlJPUiwgICAgICBcCisgICAgICAgICAgICAgU0hPV0lOU1lTSEVBREVSLCBDQVRFR09SWSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBFTlVNLAorI2RlZmluZSBDUk9TU1RVU1RBUlQKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljQ3Jvc3NUVUtpbmRzLmluYyIKKyN1bmRlZiBESUFHCisgIE5VTV9CVUlMVElOX0NST1NTVFVfRElBR05PU1RJQ1MKK307Cit9IC8vIGVuZCBuYW1lc3BhY2UgZGlhZworfSAvLyBlbmQgbmFtZXNwYWNlIGNsYW5nCisKKyNlbmRpZiAvLyBMTFZNX0NMQU5HX0JBU0lDX0RJQUdOT1NUSUNDUk9TU1RVX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNDcm9zc1RVS2luZHMuaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0Nyb3NzVFVLaW5kcy5pbmMKaW5kZXggM2MzZjcxOC4uZTAyZGUzZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0Nyb3NzVFVLaW5kcy5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0Nyb3NzVFVLaW5kcy5pbmMKQEAgLTMsNSArMyw3IEBACiAjdW5kZWYgQ1JPU1NUVVNUQVJUCiAjZW5kaWYKIAotRElBRyhlcnJfZm5tYXBfcGFyc2luZywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJlcnJvciBwYXJzaW5nIGluZGV4IGZpbGU6ICclMCcgbGluZTogJTEgJ1VuaXF1ZUlEIGZpbGVuYW1lJyBmb3JtYXQgZXhwZWN0ZWQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCitESUFHKGVycl9jdHVfZXJyb3Jfb3BlbmluZywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJlcnJvciBvcGVuaW5nICclMCc6IHJlcXVpcmVkIGJ5IHRoZSBDcm9zc1RVIGZ1bmN0aW9uYWxpdHkiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCitESUFHKGVycl9leHRkZWZtYXBfcGFyc2luZywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJlcnJvciBwYXJzaW5nIGluZGV4IGZpbGU6ICclMCcgbGluZTogJTEgJ1VuaXF1ZUlEIGZpbGVuYW1lJyBmb3JtYXQgZXhwZWN0ZWQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9tdWx0aXBsZV9kZWZfaW5kZXgsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibXVsdGlwbGUgZGVmaW5pdGlvbnMgYXJlIGZvdW5kIGZvciB0aGUgc2FtZSBrZXkgaW4gaW5kZXggIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQorRElBRyh3YXJuX2N0dV9pbmNvbXBhdF90cmlwbGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImltcG9ydGVkIEFTVCBmcm9tICclMCcgaGFkIGJlZW4gZ2VuZXJhdGVkIGZvciBhIGRpZmZlcmVudCB0YXJnZXQsIGN1cnJlbnQ6ICUxLCBpbXBvcnRlZDogJTIiLCAxNDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0RyaXZlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0RyaXZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzOTEzZGYKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljRHJpdmVyLmgKQEAgLTAsMCArMSwyOCBAQAorLy89PT0tLS0gRGlhZ25vc3RpY0RyaXZlci5oIC0gRGlhZ25vc3RpY3MgZm9yIGxpYmRyaXZlciAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0NMQU5HX0JBU0lDX0RJQUdOT1NUSUNEUklWRVJfSAorI2RlZmluZSBMTFZNX0NMQU5HX0JBU0lDX0RJQUdOT1NUSUNEUklWRVJfSAorCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpYy5oIgorCituYW1lc3BhY2UgY2xhbmcgeworbmFtZXNwYWNlIGRpYWcgeworZW51bSB7CisjZGVmaW5lIERJQUcoRU5VTSwgRkxBR1MsIERFRkFVTFRfTUFQUElORywgREVTQywgR1JPVVAsIFNGSU5BRSwgTk9XRVJST1IsICAgICAgXAorICAgICAgICAgICAgIFNIT1dJTlNZU0hFQURFUiwgQ0FURUdPUlkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRU5VTSwKKyNkZWZpbmUgRFJJVkVSU1RBUlQKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljRHJpdmVyS2luZHMuaW5jIgorI3VuZGVmIERJQUcKKyAgTlVNX0JVSUxUSU5fRFJJVkVSX0RJQUdOT1NUSUNTCit9OworfSAvLyBlbmQgbmFtZXNwYWNlIGRpYWcKK30gLy8gZW5kIG5hbWVzcGFjZSBjbGFuZworCisjZW5kaWYgLy8gTExWTV9DTEFOR19CQVNJQ19ESUFHTk9TVElDRFJJVkVSX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNEcml2ZXJLaW5kcy5pbmMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljRHJpdmVyS2luZHMuaW5jCmluZGV4IGU3MzZmOTIuLjMyODVjODcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNEcml2ZXJLaW5kcy5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0RyaXZlcktpbmRzLmluYwpAQCAtMyw4ICszLDEwIEBACiAjdW5kZWYgRFJJVkVSU1RBUlQKICNlbmRpZgogCitESUFHKGVycl9hbmFseXplcl9jb25maWdfaW52YWxpZF9pbnB1dCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIGlucHV0IGZvciBhbmFseXplci1jb25maWcgb3B0aW9uICclMCcsIHRoYXQgZXhwZWN0cyAlMSB2YWx1ZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2FuYWx5emVyX2NvbmZpZ19tdWx0aXBsZV92YWx1ZXMsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiYW5hbHl6ZXItY29uZmlnIG9wdGlvbiAnJTAnIHNob3VsZCBjb250YWluIG9ubHkgb25lICc9JyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2FuYWx5emVyX2NvbmZpZ19ub192YWx1ZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhbmFseXplci1jb25maWcgb3B0aW9uICclMCcgaGFzIGEga2V5IGJ1dCBubyB2YWx1ZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKK0RJQUcoZXJyX2FuYWx5emVyX2NvbmZpZ191bmtub3duLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInVua25vd24gYW5hbHl6ZXItY29uZmlnICclMCciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9hcmNfdW5zdXBwb3J0ZWRfb25fcnVudGltZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICItZm9iamMtYXJjIGlzIG5vdCBzdXBwb3J0ZWQgb24gcGxhdGZvcm1zIHVzaW5nIHRoZSBsZWdhY3kgcnVudGltZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2FyY191bnN1cHBvcnRlZF9vbl90b29sY2hhaW4sIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiLWZvYmpjLWFyYyBpcyBub3Qgc3VwcG9ydGVkIG9uIHZlcnNpb25zIG9mIE9TIFggcHJpb3IgdG8gMTAuNiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2FyY2hfdW5zdXBwb3J0ZWRfaXNhLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIkFyY2hpdGVjdHVyZSAnJTAnIGRvZXMgbm90IHN1cHBvcnQgJyUxJyBleGVjdXRpb24gbW9kZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKQEAgLTMxLDYgKzMzLDcgQEAKIERJQUcoZXJyX2Rydl9jdWRhX3ZlcnNpb25fdW5zdXBwb3J0ZWQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiR1BVIGFyY2ggJTAgaXMgc3VwcG9ydGVkIGJ5IENVREEgdmVyc2lvbnMgYmV0d2VlbiAlMSBhbmQgJTIgKGluY2x1c2l2ZSksIGJ1dCBpbnN0YWxsYXRpb24gYXQgJTMgaXMgJTQuICBVc2UgLS1jdWRhLXBhdGggdG8gc3BlY2lmeSBhIGRpZmZlcmVudCBDVURBIGluc3RhbGwsIHBhc3MgYSBkaWZmZXJlbnQgR1BVIGFyY2ggd2l0aCAtLWN1ZGEtZ3B1LWFyY2gsIG9yIHBhc3MgLS1uby1jdWRhLXZlcnNpb24tY2hlY2suIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfZHJ2X2RlZnN5bV9pbnZhbGlkX2Zvcm1hdCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJkZWZzeW0gbXVzdCBiZSBvZiB0aGUgZm9ybTogc3ltPXZhbHVlOiAlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2Rydl9kZWZzeW1faW52YWxpZF9zeW12YWwsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiVmFsdWUgaXMgbm90IGFuIGludGVnZXI6ICUwIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQorRElBRyhlcnJfZHJ2X2RsbGV4cG9ydF9pbmxpbmVzX2FuZF9mYWxsYmFjaywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJvcHRpb24gJy9aYzpkbGxleHBvcnRJbmxpbmVzLScgaXMgQUJJLWNoYW5naW5nIGFuZCBub3QgY29tcGF0aWJsZSB3aXRoICcvZmFsbGJhY2snIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfZHJ2X2R1cGxpY2F0ZV9jb25maWcsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibm8gbW9yZSB0aGFuIG9uZSBvcHRpb24gJy0tY29uZmlnJyBpcyBhbGxvd2VkIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfZHJ2X2VtaXRfbGx2bV9saW5rLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIi1lbWl0LWxsdm0gY2Fubm90IGJlIHVzZWQgd2hlbiBsaW5raW5nIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfZHJ2X2V4cGVjdGluZ19mb3Blbm1wX3dpdGhfZm9wZW5tcF90YXJnZXRzLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIlRoZSBvcHRpb24gLWZvcGVubXAtdGFyZ2V0cyBtdXN0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhIC1mb3Blbm1wIG9wdGlvbiBjb21wYXRpYmxlIHdpdGggb2ZmbG9hZGluZywgcGxlYXNlIHVzZSAtZm9wZW5tcD1saWJvbXAgb3IgLWZvcGVubXA9bGliaW9tcDUuIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQpAQCAtNDEsNiArNDQsNyBAQAogRElBRyhlcnJfZHJ2X2ludmFsaWRfWG9wZW5tcF90YXJnZXRfd2l0aF9hcmdzLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgLVhvcGVubXAtdGFyZ2V0IGFyZ3VtZW50OiAnJTAnLCBvcHRpb25zIHJlcXVpcmluZyBhcmd1bWVudHMgYXJlIHVuc3VwcG9ydGVkIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfZHJ2X2ludmFsaWRfYXJjaF9uYW1lLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgYXJjaCBuYW1lICclMCciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9kcnZfaW52YWxpZF9hcmd1bWVudF90b19mZGVidWdfcHJlZml4X21hcCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50ICclMCcgdG8gLWZkZWJ1Zy1wcmVmaXgtbWFwIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQorRElBRyhlcnJfZHJ2X2ludmFsaWRfY2ZfcnVudGltZV9hYmksIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW52YWxpZCBDb3JlRm91bmRhdGlvbiBSdW50aW1lIEFCSSAnJTAnOyBtdXN0IGJlIG9uZSBvZiAnb2JqYycsICdzdGFuZGFsb25lJywgJ3N3aWZ0JywgJ3N3aWZ0LTUuMCcsICdzd2lmdC00LjInLCAnc3dpZnQtNC4xJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2Rydl9pbnZhbGlkX2Rhcndpbl92ZXJzaW9uLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgRGFyd2luIHZlcnNpb24gbnVtYmVyOiAlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2Rydl9pbnZhbGlkX2djY19vdXRwdXRfdHlwZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIG91dHB1dCB0eXBlICclMCcgZm9yIHVzZSB3aXRoIGdjYyB0b29sIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfZHJ2X2ludmFsaWRfaHZ4X2xlbmd0aCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICItbWh2eC1sZW5ndGggaXMgbm90IHN1cHBvcnRlZCB3aXRob3V0IGEgLW1odngvLW1odng9IGZsYWciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCkBAIC04NSw2ICs4OSw3IEBACiBESUFHKGVycl9kcnZfcHJlYW1ibGVfZm9ybWF0LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImluY29ycmVjdCBmb3JtYXQgZm9yIC1wcmVhbWJsZS1ieXRlcz1OLEVORCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2Rydl9yb3BpX2luY29tcGF0aWJsZV93aXRoX2N4eCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJST1BJIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggYysrIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfZHJ2X3JvcGlfcndwaV9pbmNvbXBhdGlibGVfd2l0aF9waWMsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZW1iZWRkZWQgYW5kIEdPVC1iYXNlZCBwb3NpdGlvbiBpbmRlcGVuZGVuY2UgYXJlIGluY29tcGF0aWJsZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKK0RJQUcoZXJyX2Rydl90cml2aWFsX2F1dG9fdmFyX2luaXRfemVyb19kaXNhYmxlZCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICItZnRyaXZpYWwtYXV0by12YXItaW5pdD16ZXJvIGhhc24ndCBiZWVuIGVuYWJsZWQuIEVuYWJsZSBpdCBhdCB5b3VyIG93biBwZXJpbCBmb3IgYmVuY2htYXJraW5nIHB1cnBvc2Ugb25seSB3aXRoIC1lbmFibGUtdHJpdmlhbC1hdXRvLXZhci1pbml0LXplcm8ta25vd2luZy1pdC13aWxsLWJlLXJlbW92ZWQtZnJvbS1jbGFuZyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2Rydl91bmFibGVfdG9fcmVtb3ZlX2ZpbGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidW5hYmxlIHRvIHJlbW92ZSBmaWxlOiAlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2Rydl91bmtub3duX2FyZ3VtZW50LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInVua25vd24gYXJndW1lbnQ6ICclMCciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9kcnZfdW5rbm93bl9hcmd1bWVudF93aXRoX3N1Z2dlc3Rpb24sIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidW5rbm93biBhcmd1bWVudCAnJTAnLCBkaWQgeW91IG1lYW4gJyUxJz8iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCkBAIC05NiwxMyArMTAxLDE0IEBACiBESUFHKGVycl9kcnZfdW5zdXBwb3J0ZWRfZW1iZWRfYml0Y29kZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlMCBpcyBub3Qgc3VwcG9ydGVkIHdpdGggLWZlbWJlZC1iaXRjb2RlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfZHJ2X3Vuc3VwcG9ydGVkX2luZGlyZWN0X2p1bXBfb3B0LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIictbWluZGlyZWN0LWp1bXA9JTAnIGlzIHVuc3VwcG9ydGVkIHdpdGggdGhlICclMScgYXJjaGl0ZWN0dXJlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfZHJ2X3Vuc3VwcG9ydGVkX2xpbmtlciwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1bnN1cHBvcnRlZCB2YWx1ZSAnJTAnIGZvciAtbGlua2VyIG9wdGlvbiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKLURJQUcoZXJyX2Rydl91bnN1cHBvcnRlZF9ub2FiaWNhbGxzX3BpYywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJwb3NpdGlvbi1pbmRlcGVuZGVudCBjb2RlIHJlcXVpcmVzIFwzNDJcMjAwXDIzMC1tYWJpY2FsbHNcMzQyXDIwMFwyMzEiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCitESUFHKGVycl9kcnZfdW5zdXBwb3J0ZWRfbm9hYmljYWxsc19waWMsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAicG9zaXRpb24taW5kZXBlbmRlbnQgY29kZSByZXF1aXJlcyAnLW1hYmljYWxscyciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9kcnZfdW5zdXBwb3J0ZWRfb3B0LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInVuc3VwcG9ydGVkIG9wdGlvbiAnJTAnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfZHJ2X3Vuc3VwcG9ydGVkX29wdF9mb3JfdGFyZ2V0LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInVuc3VwcG9ydGVkIG9wdGlvbiAnJTAnIGZvciB0YXJnZXQgJyUxJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2Rydl91bnN1cHBvcnRlZF9vcHRfd2l0aF9zdWdnZXN0aW9uLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInVuc3VwcG9ydGVkIG9wdGlvbiAnJTAnLCBkaWQgeW91IG1lYW4gJyUxJz8iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9kcnZfdW5zdXBwb3J0ZWRfb3B0aW9uX2FyZ3VtZW50LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInVuc3VwcG9ydGVkIGFyZ3VtZW50ICclMScgdG8gb3B0aW9uICclMCciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9kcnZfdW5zdXBwb3J0ZWRfcnRsaWJfZm9yX3BsYXRmb3JtLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInVuc3VwcG9ydGVkIHJ1bnRpbWUgbGlicmFyeSAnJTAnIGZvciBwbGF0Zm9ybSAnJTEnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfZHJ2X3VzZV9vZl9aX29wdGlvbiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1bnN1cHBvcnRlZCB1c2Ugb2YgaW50ZXJuYWwgZ2NjIC1aIG9wdGlvbiAnJTAnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQorRElBRyhlcnJfaW52YWxpZF9icmFuY2hfcHJvdGVjdGlvbiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIGJyYW5jaCBwcm90ZWN0aW9uIG9wdGlvbiAnJTAnIGluICclMSciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9ub19leHRlcm5hbF9hc3NlbWJsZXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidGhlcmUgaXMgbm8gZXh0ZXJuYWwgYXNzZW1ibGVyIHRoYXQgY2FuIGJlIHVzZWQgb24gdGhpcyBwbGF0Zm9ybSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX29iamNfd2Vha191bnN1cHBvcnRlZCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICItZm9iamMtd2VhayBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBjdXJyZW50IGRlcGxveW1lbnQgdGFyZ2V0IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfb2JqY193ZWFrX3dpdGhfZ2MsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiLWZvYmpjLXdlYWsgaXMgbm90IHN1cHBvcnRlZCBpbiBPYmplY3RpdmUtQyBnYXJiYWdlIGNvbGxlY3Rpb24iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCkBAIC0xMTUsNTUgKzEyMSw1OSBAQAogRElBRyhub3RlX2Rydl91c2Vfc3RhbmRhcmQsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJ1c2UgJyUwJyVzZWxlY3R7fCBvciAnJTMnfCwgJyUzJywgb3IgJyU0J3wsICclMycsICclNCcsIG9yICclNSd9MiBmb3IgJyUxJyBzdGFuZGFyZCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQogRElBRyhub3RlX2Rydl92ZXJpZnlfcHJlZml4X3NwZWxsaW5nLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiLXZlcmlmeSBwcmVmaXhlcyBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgYW5kIGNvbnRhaW4gb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgaHlwaGVucywgYW5kIHVuZGVyc2NvcmVzIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCiBESUFHKG5vdGVfdXNlX2Rhc2hkYXNoLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiVXNlICctLScgdG8gdHJlYXQgc3Vic2VxdWVudCBhcmd1bWVudHMgYXMgZmlsZW5hbWVzIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKHdhcm5fTzRfaXNfTzMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIi1PNCBpcyBlcXVpdmFsZW50IHRvIC1PMyIsIDE1OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQorRElBRyh3YXJuX080X2lzX08zLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICItTzQgaXMgZXF1aXZhbGVudCB0byAtTzMiLCAxNjQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNykKIERJQUcod2Fybl9jX2tleHQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImlnbm9yaW5nIC1mYXBwbGUta2V4dCB3aGljaCBpcyB2YWxpZCBmb3IgQysrIGFuZCBPYmplY3RpdmUtQysrIG9ubHkiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9kZWJ1Z19jb21wcmVzc2lvbl91bmF2YWlsYWJsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2Fubm90IGNvbXByZXNzIGRlYnVnIHNlY3Rpb25zICh6bGliIG5vdCBpbnN0YWxsZWQpIiwgMTUyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kZWJ1Z19jb21wcmVzc2lvbl91bmF2YWlsYWJsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2Fubm90IGNvbXByZXNzIGRlYnVnIHNlY3Rpb25zICh6bGliIG5vdCBpbnN0YWxsZWQpIiwgMTU2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKIERJQUcod2Fybl9kcnZfYXNzdW1pbmdfbWZsb2F0X2FiaV9pcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5rbm93biBwbGF0Zm9ybSwgYXNzdW1pbmcgLW1mbG9hdC1hYmk9JTAiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKIERJQUcod2Fybl9kcnZfY2xhbmdfdW5zdXBwb3J0ZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRoZSBjbGFuZyBjb21waWxlciBkb2VzIG5vdCBzdXBwb3J0ICclMCciLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9kcnZfZGVwcmVjYXRlZF9hcmcsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFyZ3VtZW50ICclMCcgaXMgZGVwcmVjYXRlZCwgdXNlICclMScgaW5zdGVhZCIsIDE1OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQotRElBRyh3YXJuX2Rydl9kaWFnbm9zdGljc19ob3RuZXNzX3JlcXVpcmVzX3BnbywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXJndW1lbnQgJyUwJyByZXF1aXJlcyBwcm9maWxlLWd1aWRlZCBvcHRpbWl6YXRpb24gaW5mb3JtYXRpb24iLCA3MDcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2Rydl9kYXJ3aW5fc2RrX2ludmFsaWRfc2V0dGluZ3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIlNESyBzZXR0aW5ncyB3ZXJlIGlnbm9yZWQgYXMgJ1NES1NldHRpbmdzLmpzb24nIGNvdWxkIG5vdCBiZSBwYXJzZWQiLCAxNTMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2Rydl9kZXByZWNhdGVkX2FyZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXJndW1lbnQgJyUwJyBpcyBkZXByZWNhdGVkLCB1c2UgJyUxJyBpbnN0ZWFkIiwgMTY0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjcpCitESUFHKHdhcm5fZHJ2X2RpYWdub3N0aWNzX2hvdG5lc3NfcmVxdWlyZXNfcGdvLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhcmd1bWVudCAnJTAnIHJlcXVpcmVzIHByb2ZpbGUtZ3VpZGVkIG9wdGltaXphdGlvbiBpbmZvcm1hdGlvbiIsIDcyMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCiBESUFHKHdhcm5fZHJ2X2Rpc2FibGluZ192cHRyX25vX3J0dGlfZGVmYXVsdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW1wbGljaXRseSBkaXNhYmxpbmcgdnB0ciBzYW5pdGl6ZXIgYmVjYXVzZSBydHRpIHdhc24ndCBlbmFibGVkIiwgNDgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl9lbXB0eV9qb2luZWRfYXJndW1lbnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImpvaW5lZCBhcmd1bWVudCBleHBlY3RzIGFkZGl0aW9uYWwgdmFsdWU6ICclMCciLCA3MDcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl9leHBlcmltZW50YWxfaXNlbF9pbmNvbXBsZXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICItZmV4cGVyaW1lbnRhbC1pc2VsIHN1cHBvcnQgZm9yIHRoZSAnJTAnIGFyY2hpdGVjdHVyZSBpcyBpbmNvbXBsZXRlIiwgMjA4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9kcnZfZXhwZXJpbWVudGFsX2lzZWxfaW5jb21wbGV0ZV9vcHQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIi1mZXhwZXJpbWVudGFsLWlzZWwgc3VwcG9ydCBpcyBpbmNvbXBsZXRlIGZvciB0aGlzIGFyY2hpdGVjdHVyZSBhdCB0aGUgY3VycmVudCBvcHRpbWl6YXRpb24gbGV2ZWwiLCAyMDgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl9maW5lX2dyYWluZWRfYml0ZmllbGRfYWNjZXNzZXNfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib3B0aW9uICctZmZpbmUtZ3JhaW5lZC1iaXRmaWVsZC1hY2Nlc3NlcycgY2Fubm90IGJlIGVuYWJsZWQgdG9nZXRoZXIgd2l0aCBhIHNhbml0aXplcjsgZmxhZyBpZ25vcmVkIiwgNDk0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9kcnZfaW5wdXRfZmlsZV91bnVzZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwOiAnJTEnIGlucHV0IHVudXNlZCVzZWxlY3R7IHdoZW4gJyUzJyBpcyBwcmVzZW50fH0yIiwgNzA3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9kcnZfaW5wdXRfZmlsZV91bnVzZWRfYnlfY3BwLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMDogJyUxJyBpbnB1dCB1bnVzZWQgaW4gY3BwIG1vZGUiLCA3MDcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl9pbnZva2luZ19mYWxsYmFjaywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZmFsbGluZyBiYWNrIHRvICUwIiwgMjE3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9kcnZfbW91dGxpbmVfdW5zdXBwb3J0ZWRfb3B0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJUaGUgJyUwJyBhcmNoaXRlY3R1cmUgZG9lcyBub3Qgc3VwcG9ydCAtbW91dGxpbmU7IGZsYWcgaWdub3JlZCIsIDQ5NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKHdhcm5fZHJ2X21zdmNfbm90X2ZvdW5kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmFibGUgdG8gZmluZCBhIFZpc3VhbCBTdHVkaW8gaW5zdGFsbGF0aW9uOyB0cnkgcnVubmluZyBDbGFuZyBmcm9tIGEgZGV2ZWxvcGVyIGNvbW1hbmQgcHJvbXB0IiwgNDE5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9kcnZfb2JqZWN0X3NpemVfZGlzYWJsZWRfTzAsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRoZSBvYmplY3Qgc2l6ZSBzYW5pdGl6ZXIgaGFzIG5vIGVmZmVjdCBhdCAtTzAsIGJ1dCBpcyBleHBsaWNpdGx5IGVuYWJsZWQ6ICUwIiwgMzI2LCBTRklOQUVfU3VwcHJlc3MsIHRydWUsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl9vbXBfb2ZmbG9hZF90YXJnZXRfZHVwbGljYXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJUaGUgT3Blbk1QIG9mZmxvYWRpbmcgdGFyZ2V0ICclMCcgaXMgc2ltaWxhciB0byB0YXJnZXQgJyUxJyBhbHJlYWR5IHNwZWNpZmllZCAtIHdpbGwgYmUgaWdub3JlZC4iLCA0OTMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl9vbXBfb2ZmbG9hZF90YXJnZXRfbWlzc2luZ2JjcnVudGltZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiTm8gbGlicmFyeSAnJTAnIGZvdW5kIGluIHRoZSBkZWZhdWx0IGNsYW5nIGxpYiBkaXJlY3Rvcnkgb3IgaW4gTElCUkFSWV9QQVRILiBFeHBlY3QgZGVncmFkZWQgcGVyZm9ybWFuY2UgZHVlIHRvIG5vIGlubGluaW5nIG9mIHJ1bnRpbWUgZnVuY3Rpb25zIG9uIHRhcmdldCBkZXZpY2VzLiIsIDQ5MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKHdhcm5fZHJ2X29wdGltaXphdGlvbl92YWx1ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib3B0aW1pemF0aW9uIGxldmVsICclMCcgaXMgbm90IHN1cHBvcnRlZDsgdXNpbmcgJyUxJTInIGluc3RlYWQiLCAzMjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl9vdmVycmlkaW5nX2ZsYWdfb3B0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvdmVycmlkaW5nICclMCcgb3B0aW9uIHdpdGggJyUxJyIsIDUwNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fZHJ2X2VtcHR5X2pvaW5lZF9hcmd1bWVudCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiam9pbmVkIGFyZ3VtZW50IGV4cGVjdHMgYWRkaXRpb25hbCB2YWx1ZTogJyUwJyIsIDcyMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fZHJ2X2V4cGVyaW1lbnRhbF9pc2VsX2luY29tcGxldGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIi1mZXhwZXJpbWVudGFsLWlzZWwgc3VwcG9ydCBmb3IgdGhlICclMCcgYXJjaGl0ZWN0dXJlIGlzIGluY29tcGxldGUiLCAyMTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2Rydl9leHBlcmltZW50YWxfaXNlbF9pbmNvbXBsZXRlX29wdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiLWZleHBlcmltZW50YWwtaXNlbCBzdXBwb3J0IGlzIGluY29tcGxldGUgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlIGF0IHRoZSBjdXJyZW50IG9wdGltaXphdGlvbiBsZXZlbCIsIDIxNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fZHJ2X2ZpbmVfZ3JhaW5lZF9iaXRmaWVsZF9hY2Nlc3Nlc19pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvcHRpb24gJy1mZmluZS1ncmFpbmVkLWJpdGZpZWxkLWFjY2Vzc2VzJyBjYW5ub3QgYmUgZW5hYmxlZCB0b2dldGhlciB3aXRoIGEgc2FuaXRpemVyOyBmbGFnIGlnbm9yZWQiLCA1MDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2Rydl9pbnB1dF9maWxlX3VudXNlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTA6ICclMScgaW5wdXQgdW51c2VkJXNlbGVjdHsgd2hlbiAnJTMnIGlzIHByZXNlbnR8fTIiLCA3MjAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2Rydl9pbnB1dF9maWxlX3VudXNlZF9ieV9jcHAsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwOiAnJTEnIGlucHV0IHVudXNlZCBpbiBjcHAgbW9kZSIsIDcyMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fZHJ2X2ludm9raW5nX2ZhbGxiYWNrLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmYWxsaW5nIGJhY2sgdG8gJTAiLCAyMjUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2Rydl9tb3V0bGluZV91bnN1cHBvcnRlZF9vcHQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIlRoZSAnJTAnIGFyY2hpdGVjdHVyZSBkb2VzIG5vdCBzdXBwb3J0IC1tb3V0bGluZTsgZmxhZyBpZ25vcmVkIiwgNTA0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kcnZfbXNwNDMwX2h3bXVsdF9taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidGhlIGdpdmVuIE1DVSBzdXBwb3J0cyAlMCBoYXJkd2FyZSBtdWx0aXBseSwgYnV0IC1taHdtdWx0IGlzIHNldCB0byAlMS4iLCAzMzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2Rydl9tc3A0MzBfaHdtdWx0X25vX2RldmljZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibm8gTUNVIGRldmljZSBzcGVjaWZpZWQsIGJ1dCAnLW1od211bHQnIGlzIHNldCB0byAnYXV0bycsIGFzc3VtaW5nIG5vIGhhcmR3YXJlIG11bHRpcGx5LiBVc2UgLW1tY3UgdG8gc3BlY2lmeSBhIE1TUDQzMCBkZXZpY2UsIG9yIC1taHdtdWx0IHRvIHNldCBoYXJkd2FyZSBtdWx0aXBseSB0eXBlIGV4cGxpY2l0bHkuIiwgMzM1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kcnZfbXNwNDMwX2h3bXVsdF91bnN1cHBvcnRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidGhlIGdpdmVuIE1DVSBkb2VzIG5vdCBzdXBwb3J0IGhhcmR3YXJlIG11bHRpcGx5LCBidXQgLW1od211bHQgaXMgc2V0IHRvICUwLiIsIDMzNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fZHJ2X21zdmNfbm90X2ZvdW5kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmFibGUgdG8gZmluZCBhIFZpc3VhbCBTdHVkaW8gaW5zdGFsbGF0aW9uOyB0cnkgcnVubmluZyBDbGFuZyBmcm9tIGEgZGV2ZWxvcGVyIGNvbW1hbmQgcHJvbXB0IiwgNDI4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kcnZfb2JqZWN0X3NpemVfZGlzYWJsZWRfTzAsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRoZSBvYmplY3Qgc2l6ZSBzYW5pdGl6ZXIgaGFzIG5vIGVmZmVjdCBhdCAtTzAsIGJ1dCBpcyBleHBsaWNpdGx5IGVuYWJsZWQ6ICUwIiwgMzM1LCBTRklOQUVfU3VwcHJlc3MsIHRydWUsIGZhbHNlLCAwKQorRElBRyh3YXJuX2Rydl9vbXBfb2ZmbG9hZF90YXJnZXRfZHVwbGljYXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJUaGUgT3Blbk1QIG9mZmxvYWRpbmcgdGFyZ2V0ICclMCcgaXMgc2ltaWxhciB0byB0YXJnZXQgJyUxJyBhbHJlYWR5IHNwZWNpZmllZCAtIHdpbGwgYmUgaWdub3JlZC4iLCA1MDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2Rydl9vbXBfb2ZmbG9hZF90YXJnZXRfbWlzc2luZ2JjcnVudGltZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiTm8gbGlicmFyeSAnJTAnIGZvdW5kIGluIHRoZSBkZWZhdWx0IGNsYW5nIGxpYiBkaXJlY3Rvcnkgb3IgaW4gTElCUkFSWV9QQVRILiBFeHBlY3QgZGVncmFkZWQgcGVyZm9ybWFuY2UgZHVlIHRvIG5vIGlubGluaW5nIG9mIHJ1bnRpbWUgZnVuY3Rpb25zIG9uIHRhcmdldCBkZXZpY2VzLiIsIDUwMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fZHJ2X29wdGltaXphdGlvbl92YWx1ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib3B0aW1pemF0aW9uIGxldmVsICclMCcgaXMgbm90IHN1cHBvcnRlZDsgdXNpbmcgJyUxJTInIGluc3RlYWQiLCAzMzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2Rydl9vdmVycmlkaW5nX2ZsYWdfb3B0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvdmVycmlkaW5nICclMCcgb3B0aW9uIHdpdGggJyUxJyIsIDUxNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCiBESUFHKHdhcm5fZHJ2X3BjaF9ub3RfZmlyc3RfaW5jbHVkZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJlY29tcGlsZWQgaGVhZGVyICclMCcgd2FzIGlnbm9yZWQgYmVjYXVzZSAnJTEnIGlzIG5vdCBmaXJzdCAnLWluY2x1ZGUnIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKHdhcm5fZHJ2X3ByZXByb2Nlc3NlZF9pbnB1dF9maWxlX3VudXNlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTA6IHByZXZpb3VzbHkgcHJlcHJvY2Vzc2VkIGlucHV0JXNlbGVjdHsgdW51c2VkIHdoZW4gJyUyJyBpcyBwcmVzZW50fH0xIiwgNzA3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9kcnZfcHM0X2ZvcmNlX3BpYywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib3B0aW9uICclMCcgd2FzIGlnbm9yZWQgYnkgdGhlIFBTNCB0b29sY2hhaW4sIHVzaW5nICctZlBJQyciLCA0OTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl9wczRfc2RrX2RpciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZW52aXJvbm1lbnQgdmFyaWFibGUgU0NFX09SQklTX1NES19ESVIgaXMgc2V0LCBidXQgcG9pbnRzIHRvIGludmFsaWQgb3Igbm9uZXhpc3RlbnQgZGlyZWN0b3J5ICclMCciLCAzMzMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl90cmVhdGluZ19pbnB1dF9hc19jeHgsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRyZWF0aW5nICclMCcgaW5wdXQgYXMgJyUxJyB3aGVuIGluIEMrKyBtb2RlLCB0aGlzIGJlaGF2aW9yIGlzIGRlcHJlY2F0ZWQiLCAxNTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNykKLURJQUcod2Fybl9kcnZfdW5hYmxlX3RvX2ZpbmRfZGlyZWN0b3J5X2V4cGVjdGVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bmFibGUgdG8gZmluZCAlMCBkaXJlY3RvcnksIGV4cGVjdGVkIHRvIGJlIGluICclMSciLCAzMzMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl91bmtub3duX2FyZ3VtZW50X2NsYW5nX2NsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmtub3duIGFyZ3VtZW50IGlnbm9yZWQgaW4gY2xhbmctY2w6ICclMCciLCA2ODAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl91bmtub3duX2FyZ3VtZW50X2NsYW5nX2NsX3dpdGhfc3VnZ2VzdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5rbm93biBhcmd1bWVudCBpZ25vcmVkIGluIGNsYW5nLWNsICclMCcgKGRpZCB5b3UgbWVhbiAnJTEnPykiLCA2ODAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl91bnN1cHBvcnRlZF9kZWJ1Z19pbmZvX29wdF9mb3JfdGFyZ2V0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZWJ1ZyBpbmZvcm1hdGlvbiBvcHRpb24gJyUwJyBpcyBub3Qgc3VwcG9ydGVkIGZvciB0YXJnZXQgJyUxJyIsIDcwMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKHdhcm5fZHJ2X3Vuc3VwcG9ydGVkX2dwb3B0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpZ25vcmluZyAnLW1ncG9wdCcgb3B0aW9uIGFzIGl0IGNhbm5vdCBiZSB1c2VkIHdpdGggJXNlbGVjdHt8dGhlIGltcGxpY2l0IHVzYWdlIG9mIH0wLW1hYmljYWxscyIsIDcwMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKHdhcm5fZHJ2X3Vuc3VwcG9ydGVkX2xvbmdjYWxscywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWdub3JpbmcgJy1tbG9uZy1jYWxscycgb3B0aW9uIGFzIGl0IGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIHdpdGggJXNlbGVjdHt8dGhlIGltcGxpY2l0IHVzYWdlIG9mIH0wLW1hYmljYWxscyIsIDQ5NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKHdhcm5fZHJ2X3Vuc3VwcG9ydGVkX29wdF9mb3JfdGFyZ2V0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvcHRpbWl6YXRpb24gZmxhZyAnJTAnIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhcmdldCAnJTEnIiwgMjc1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9kcnZfdW5zdXBwb3J0ZWRfcGljX3dpdGhfbWFiaWNhbGxzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpZ25vcmluZyAnJTAnIG9wdGlvbiBhcyBpdCBjYW5ub3QgYmUgdXNlZCB3aXRoICVzZWxlY3R7aW1wbGljaXQgdXNhZ2Ugb2Z8fTEgLW1hYmljYWxscyBhbmQgdGhlIE42NCBBQkkiLCA0OTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl91bnVzZWRfYXJndW1lbnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFyZ3VtZW50IHVudXNlZCBkdXJpbmcgY29tcGlsYXRpb246ICclMCciLCA3MDcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl92ZWN0b3JpemVfbmVlZHNfaHZ4LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhdXRvLXZlY3Rvcml6YXRpb24gcmVxdWlyZXMgSFZYLCB1c2UgLW1odnggdG8gZW5hYmxlIGl0IiwgNDk0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9kcnZfeWNfbXVsdGlwbGVfaW5wdXRzX2NsYW5nX2NsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzdXBwb3J0IGZvciAnL1ljJyB3aXRoIG1vcmUgdGhhbiBvbmUgc291cmNlIGZpbGUgbm90IGltcGxlbWVudGVkIHlldDsgZmxhZyBpZ25vcmVkIiwgMTIyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9kcnZfeWN5dV9kaWZmZXJlbnRfYXJnX2NsYW5nX2NsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzdXBwb3J0IGZvciAnL1ljJyBhbmQgJy9ZdScgd2l0aCBkaWZmZXJlbnQgZmlsZW5hbWVzIG5vdCBpbXBsZW1lbnRlZCB5ZXQ7IGZsYWdzIGlnbm9yZWQiLCAxMjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2Rydl95Y3l1X25vX2ZpX2FyZ19jbGFuZ19jbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic3VwcG9ydCBmb3IgJyUwJyB3aXRob3V0IGEgY29ycmVzcG9uZGluZyAvRkkgZmxhZyBub3QgaW1wbGVtZW50ZWQgeWV0OyBmbGFnIGlnbm9yZWQiLCAxMjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2lnbm9yZWRfY2xhbmdfb3B0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0aGUgZmxhZyAnJTAnIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgaWdub3JlZCIsIDcwNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKHdhcm5faWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvcHRpbWl6YXRpb24gZmxhZyAnJTAnIGlzIG5vdCBzdXBwb3J0ZWQiLCAyNzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2Rydl9wcmVwcm9jZXNzZWRfaW5wdXRfZmlsZV91bnVzZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwOiBwcmV2aW91c2x5IHByZXByb2Nlc3NlZCBpbnB1dCVzZWxlY3R7IHVudXNlZCB3aGVuICclMicgaXMgcHJlc2VudHx9MSIsIDcyMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fZHJ2X3BzNF9mb3JjZV9waWMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm9wdGlvbiAnJTAnIHdhcyBpZ25vcmVkIGJ5IHRoZSBQUzQgdG9vbGNoYWluLCB1c2luZyAnLWZQSUMnIiwgNTA0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kcnZfcHM0X3Nka19kaXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImVudmlyb25tZW50IHZhcmlhYmxlIFNDRV9PUkJJU19TREtfRElSIGlzIHNldCwgYnV0IHBvaW50cyB0byBpbnZhbGlkIG9yIG5vbmV4aXN0ZW50IGRpcmVjdG9yeSAnJTAnIiwgMzQyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kcnZfdHJlYXRpbmdfaW5wdXRfYXNfY3h4LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0cmVhdGluZyAnJTAnIGlucHV0IGFzICclMScgd2hlbiBpbiBDKysgbW9kZSwgdGhpcyBiZWhhdmlvciBpcyBkZXByZWNhdGVkIiwgMTY0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjcpCitESUFHKHdhcm5fZHJ2X3VuYWJsZV90b19maW5kX2RpcmVjdG9yeV9leHBlY3RlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW5hYmxlIHRvIGZpbmQgJTAgZGlyZWN0b3J5LCBleHBlY3RlZCB0byBiZSBpbiAnJTEnIiwgMzQyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kcnZfdW5rbm93bl9hcmd1bWVudF9jbGFuZ19jbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5rbm93biBhcmd1bWVudCBpZ25vcmVkIGluIGNsYW5nLWNsOiAnJTAnIiwgNjkzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kcnZfdW5rbm93bl9hcmd1bWVudF9jbGFuZ19jbF93aXRoX3N1Z2dlc3Rpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVua25vd24gYXJndW1lbnQgaWdub3JlZCBpbiBjbGFuZy1jbCAnJTAnIChkaWQgeW91IG1lYW4gJyUxJz8pIiwgNjkzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kcnZfdW5zdXBwb3J0ZWRfZGVidWdfaW5mb19vcHRfZm9yX3RhcmdldCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGVidWcgaW5mb3JtYXRpb24gb3B0aW9uICclMCcgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGFyZ2V0ICclMSciLCA3MTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2Rydl91bnN1cHBvcnRlZF9ncG9wdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWdub3JpbmcgJy1tZ3BvcHQnIG9wdGlvbiBhcyBpdCBjYW5ub3QgYmUgdXNlZCB3aXRoICVzZWxlY3R7fHRoZSBpbXBsaWNpdCB1c2FnZSBvZiB9MC1tYWJpY2FsbHMiLCA3MTMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2Rydl91bnN1cHBvcnRlZF9sb25nY2FsbHMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImlnbm9yaW5nICctbWxvbmctY2FsbHMnIG9wdGlvbiBhcyBpdCBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCB3aXRoICVzZWxlY3R7fHRoZSBpbXBsaWNpdCB1c2FnZSBvZiB9MC1tYWJpY2FsbHMiLCA1MDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2Rydl91bnN1cHBvcnRlZF9vcHRfZm9yX3RhcmdldCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib3B0aW1pemF0aW9uIGZsYWcgJyUwJyBpcyBub3Qgc3VwcG9ydGVkIGZvciB0YXJnZXQgJyUxJyIsIDI4MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fZHJ2X3Vuc3VwcG9ydGVkX3BpY193aXRoX21hYmljYWxscywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWdub3JpbmcgJyUwJyBvcHRpb24gYXMgaXQgY2Fubm90IGJlIHVzZWQgd2l0aCAlc2VsZWN0e2ltcGxpY2l0IHVzYWdlIG9mfH0xIC1tYWJpY2FsbHMgYW5kIHRoZSBONjQgQUJJIiwgNTA0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kcnZfdW51c2VkX2FyZ3VtZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhcmd1bWVudCB1bnVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uOiAnJTAnIiwgNzIwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kcnZfdmVjdG9yaXplX25lZWRzX2h2eCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXV0by12ZWN0b3JpemF0aW9uIHJlcXVpcmVzIEhWWCwgdXNlIC1taHZ4IHRvIGVuYWJsZSBpdCIsIDUwNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fZHJ2X3ljX211bHRpcGxlX2lucHV0c19jbGFuZ19jbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic3VwcG9ydCBmb3IgJy9ZYycgd2l0aCBtb3JlIHRoYW4gb25lIHNvdXJjZSBmaWxlIG5vdCBpbXBsZW1lbnRlZCB5ZXQ7IGZsYWcgaWdub3JlZCIsIDEyMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fZHJ2X3ljeXVfZGlmZmVyZW50X2FyZ19jbGFuZ19jbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic3VwcG9ydCBmb3IgJy9ZYycgYW5kICcvWXUnIHdpdGggZGlmZmVyZW50IGZpbGVuYW1lcyBub3QgaW1wbGVtZW50ZWQgeWV0OyBmbGFncyBpZ25vcmVkIiwgMTIzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kcnZfeWN5dV9ub19maV9hcmdfY2xhbmdfY2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInN1cHBvcnQgZm9yICclMCcgd2l0aG91dCBhIGNvcnJlc3BvbmRpbmcgL0ZJIGZsYWcgbm90IGltcGxlbWVudGVkIHlldDsgZmxhZyBpZ25vcmVkIiwgMTIzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9pZ25vcmVkX2NsYW5nX29wdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidGhlIGZsYWcgJyUwJyBoYXMgYmVlbiBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIGlnbm9yZWQiLCA3MjAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2lnbm9yZWRfZ2NjX29wdGltaXphdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib3B0aW1pemF0aW9uIGZsYWcgJyUwJyBpcyBub3Qgc3VwcG9ydGVkIiwgMjgzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKIERJQUcod2Fybl9pZ25vcmluZ19mdGFic3RvcF92YWx1ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWdub3JpbmcgaW52YWxpZCAtZnRhYnN0b3AgdmFsdWUgJyUwJywgdXNpbmcgZGVmYXVsdCB2YWx1ZSAlMSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2luY29tcGF0aWJsZV9zeXNyb290LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2luZyBzeXNyb290IGZvciAnJTAnIGJ1dCB0YXJnZXRpbmcgJyUxJyIsIDMwNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKHdhcm5faW52YWxpZF9pb3NfZGVwbG95bWVudF90YXJnZXQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIGlPUyBkZXBsb3ltZW50IHZlcnNpb24gJyUwJywgaU9TIDEwIGlzIHRoZSBtYXhpbXVtIGRlcGxveW1lbnQgdGFyZ2V0IGZvciAzMi1iaXQgdGFyZ2V0cyIsIDMzMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKHdhcm5fbWlzc2luZ19zeXNyb290LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJubyBzdWNoIHN5c3Jvb3QgZGlyZWN0b3J5OiAnJTAnIiwgNDA3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9zbGFzaF91X2ZpbGVuYW1lLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInL1UlMCcgdHJlYXRlZCBhcyB0aGUgJy9VJyBvcHRpb24iLCA1OTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX3RhcmdldF91bnN1cHBvcnRlZF9hYnMyMDA4LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpZ25vcmluZyAnLW1hYnM9MjAwOCcgb3B0aW9uIGJlY2F1c2UgdGhlICclMCcgYXJjaGl0ZWN0dXJlIGRvZXMgbm90IHN1cHBvcnQgaXQiLCA2OTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX3RhcmdldF91bnN1cHBvcnRlZF9hYnNsZWdhY3ksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImlnbm9yaW5nICctbWFicz1sZWdhY3knIG9wdGlvbiBiZWNhdXNlIHRoZSAnJTAnIGFyY2hpdGVjdHVyZSBkb2VzIG5vdCBzdXBwb3J0IGl0IiwgNjk1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl90YXJnZXRfdW5zdXBwb3J0ZWRfY29tcGFjdF9icmFuY2hlcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWdub3JpbmcgJy1tY29tcGFjdC1icmFuY2hlcz0nIG9wdGlvbiBiZWNhdXNlIHRoZSAnJTAnIGFyY2hpdGVjdHVyZSBkb2VzIG5vdCBzdXBwb3J0IGl0IiwgNjk3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl90YXJnZXRfdW5zdXBwb3J0ZWRfbmFuMjAwOCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWdub3JpbmcgJy1tbmFuPTIwMDgnIG9wdGlvbiBiZWNhdXNlIHRoZSAnJTAnIGFyY2hpdGVjdHVyZSBkb2VzIG5vdCBzdXBwb3J0IGl0IiwgNzAxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl90YXJnZXRfdW5zdXBwb3J0ZWRfbmFubGVnYWN5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpZ25vcmluZyAnLW1uYW49bGVnYWN5JyBvcHRpb24gYmVjYXVzZSB0aGUgJyUwJyBhcmNoaXRlY3R1cmUgZG9lcyBub3Qgc3VwcG9ydCBpdCIsIDcwMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5faW5jb21wYXRpYmxlX3N5c3Jvb3QsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzaW5nIHN5c3Jvb3QgZm9yICclMCcgYnV0IHRhcmdldGluZyAnJTEnIiwgMzEzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9pbnZhbGlkX2lvc19kZXBsb3ltZW50X3RhcmdldCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgaU9TIGRlcGxveW1lbnQgdmVyc2lvbiAnJTAnLCBpT1MgMTAgaXMgdGhlIG1heGltdW0gZGVwbG95bWVudCB0YXJnZXQgZm9yIDMyLWJpdCB0YXJnZXRzIiwgMzM5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9taXNzaW5nX3N5c3Jvb3QsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm5vIHN1Y2ggc3lzcm9vdCBkaXJlY3Rvcnk6ICclMCciLCA0MTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX3NsYXNoX3VfZmlsZW5hbWUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIicvVSUwJyB0cmVhdGVkIGFzIHRoZSAnL1UnIG9wdGlvbiIsIDYxMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fdGFyZ2V0X3Vuc3VwcG9ydGVkX2FiczIwMDgsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImlnbm9yaW5nICctbWFicz0yMDA4JyBvcHRpb24gYmVjYXVzZSB0aGUgJyUwJyBhcmNoaXRlY3R1cmUgZG9lcyBub3Qgc3VwcG9ydCBpdCIsIDcwOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fdGFyZ2V0X3Vuc3VwcG9ydGVkX2Fic2xlZ2FjeSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWdub3JpbmcgJy1tYWJzPWxlZ2FjeScgb3B0aW9uIGJlY2F1c2UgdGhlICclMCcgYXJjaGl0ZWN0dXJlIGRvZXMgbm90IHN1cHBvcnQgaXQiLCA3MDgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX3RhcmdldF91bnN1cHBvcnRlZF9jb21wYWN0X2JyYW5jaGVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpZ25vcmluZyAnLW1jb21wYWN0LWJyYW5jaGVzPScgb3B0aW9uIGJlY2F1c2UgdGhlICclMCcgYXJjaGl0ZWN0dXJlIGRvZXMgbm90IHN1cHBvcnQgaXQiLCA3MTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX3RhcmdldF91bnN1cHBvcnRlZF9uYW4yMDA4LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpZ25vcmluZyAnLW1uYW49MjAwOCcgb3B0aW9uIGJlY2F1c2UgdGhlICclMCcgYXJjaGl0ZWN0dXJlIGRvZXMgbm90IHN1cHBvcnQgaXQiLCA3MTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX3RhcmdldF91bnN1cHBvcnRlZF9uYW5sZWdhY3ksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImlnbm9yaW5nICctbW5hbj1sZWdhY3knIG9wdGlvbiBiZWNhdXNlIHRoZSAnJTAnIGFyY2hpdGVjdHVyZSBkb2VzIG5vdCBzdXBwb3J0IGl0IiwgNzE0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNFcnJvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0Vycm9yLmgKaW5kZXggM2Y3YmU0Ni4uNDMwZGE2ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0Vycm9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0Vycm9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBEaWFnbm9zdGljRXJyb3IuaCAtIERpYWdub3N0aWMgcGF5bG9hZCBmb3IgbGx2bTo6RXJyb3IgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljRnJvbnRlbmQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNGcm9udGVuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ZjAwZTcKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljRnJvbnRlbmQuaApAQCAtMCwwICsxLDI4IEBACisvLz09PS0tLSBEaWFnbm9zdGljRnJvbnRlbmQuaCAtIERpYWdub3N0aWNzIGZvciBmcm9udGVuZCAtLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fQ0xBTkdfQkFTSUNfRElBR05PU1RJQ0ZST05URU5EX0gKKyNkZWZpbmUgTExWTV9DTEFOR19CQVNJQ19ESUFHTk9TVElDRlJPTlRFTkRfSAorCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpYy5oIgorCituYW1lc3BhY2UgY2xhbmcgeworbmFtZXNwYWNlIGRpYWcgeworZW51bSB7CisjZGVmaW5lIERJQUcoRU5VTSwgRkxBR1MsIERFRkFVTFRfTUFQUElORywgREVTQywgR1JPVVAsIFNGSU5BRSwgTk9XRVJST1IsICAgICAgXAorICAgICAgICAgICAgIFNIT1dJTlNZU0hFQURFUiwgQ0FURUdPUlkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRU5VTSwKKyNkZWZpbmUgRlJPTlRFTkRTVEFSVAorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNGcm9udGVuZEtpbmRzLmluYyIKKyN1bmRlZiBESUFHCisgIE5VTV9CVUlMVElOX0ZST05URU5EX0RJQUdOT1NUSUNTCit9OworfSAvLyBlbmQgbmFtZXNwYWNlIGRpYWcKK30gLy8gZW5kIG5hbWVzcGFjZSBjbGFuZworCisjZW5kaWYgLy8gTExWTV9DTEFOR19CQVNJQ19ESUFHTk9TVElDRlJPTlRFTkRfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0Zyb250ZW5kS2luZHMuaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0Zyb250ZW5kS2luZHMuaW5jCmluZGV4IDgzOGJjMWYuLjI1ZjY4NGEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNGcm9udGVuZEtpbmRzLmluYworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljRnJvbnRlbmRLaW5kcy5pbmMKQEAgLTMsNiArMywxMCBAQAogI3VuZGVmIEZST05URU5EU1RBUlQKICNlbmRpZgogCitESUFHKGVycl9hbGlhc190b191bmRlZmluZWQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJXNlbGVjdHthbGlhc3xpZnVuY30wIG11c3QgcG9pbnQgdG8gYSBkZWZpbmVkICVzZWxlY3R7dmFyaWFibGUgb3IgfH0xZnVuY3Rpb24iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCitESUFHKGVycl9idWlsdGluX25lZWRzX2ZlYXR1cmUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJTAgbmVlZHMgdGFyZ2V0IGZlYXR1cmUgJTEiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCitESUFHKGVycl9jeWNsaWNfYWxpYXMsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJXNlbGVjdHthbGlhc3xpZnVuY30wIGRlZmluaXRpb24gaXMgcGFydCBvZiBhIGN5Y2xlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQorRElBRyhlcnJfZHVwbGljYXRlX21hbmdsZWRfbmFtZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJkZWZpbml0aW9uIHdpdGggc2FtZSBtYW5nbGVkIG5hbWUgJyUwJyBhcyBhbm90aGVyIGRlZmluaXRpb24iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9mZV9hY3Rpb25fbm90X2F2YWlsYWJsZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhY3Rpb24gJTAgbm90IGNvbXBpbGVkIGluIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfZmVfYmFja2VuZF9mcmFtZV9sYXJnZXJfdGhhbiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMTYpCiBESUFHKGVycl9mZV9iYWNrZW5kX3BsdWdpbiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMTYpCkBAIC0yMiw3ICsyNiw2IEBACiBESUFHKGVycl9mZV9pbnZhbGlkX3BsdWdpbl9uYW1lLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInVuYWJsZSB0byBmaW5kIHBsdWdpbiAnJTAnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfZmVfaW52YWxpZF93Y2hhcl90eXBlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgd2NoYXJfdCB0eXBlICclMCc7IG11c3QgYmUgb25lIG9mICdjaGFyJywgJ3Nob3J0JywgJ2ludCciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9mZV9ub19wY2hfaW5fZGlyLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm5vIHN1aXRhYmxlIHByZWNvbXBpbGVkIGhlYWRlciBmaWxlIGZvdW5kIGluIGRpcmVjdG9yeSAnJTAnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQotRElBRyhlcnJfZmVfcHRoX2ZpbGVfaGFzX25vX3NvdXJjZV9oZWFkZXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiUFRIIGZpbGUgJyUwJyBkb2VzIG5vdCBkZXNpZ25hdGUgYW4gb3JpZ2luYWwgc291cmNlIGhlYWRlciBmaWxlIGZvciAtaW5jbHVkZS1wdGgiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9mZV9yZW1hcF9taXNzaW5nX2Zyb21fZmlsZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJjb3VsZCBub3QgcmVtYXAgZnJvbSBtaXNzaW5nIGZpbGUgJyUwJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2ZlX3JlbWFwX21pc3NpbmdfdG9fZmlsZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJjb3VsZCBub3QgcmVtYXAgZmlsZSAnJTAnIHRvIHRoZSBjb250ZW50cyBvZiBmaWxlICclMSciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9mZV9zdGRvdXRfYmluYXJ5LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgInVuYWJsZSB0byBjaGFuZ2Ugc3RhbmRhcmQgb3V0cHV0IHRvIGJpbmFyeSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKQEAgLTMxLDcgKzM0LDkgQEAKIERJQUcoZXJyX2ZlX3VuYWJsZV90b19sb2FkX3BjaCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1bmFibGUgdG8gbG9hZCBQQ0ggZmlsZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2ZlX3VuYWJsZV90b19sb2FkX3BsdWdpbiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1bmFibGUgdG8gbG9hZCBwbHVnaW4gJyUwJzogJyUxJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX2ZlX3VuYWJsZV90b19vcGVuX291dHB1dCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1bmFibGUgdG8gb3BlbiBvdXRwdXQgZmlsZSAnJTAnOiAnJTEnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQorRElBRyhlcnJfZnVuY3Rpb25fbmVlZHNfZmVhdHVyZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhbHdheXNfaW5saW5lIGZ1bmN0aW9uICUxIHJlcXVpcmVzIHRhcmdldCBmZWF0dXJlICclMicsIGJ1dCB3b3VsZCBiZSBpbmxpbmVkIGludG8gZnVuY3Rpb24gJTAgdGhhdCBpcyBjb21waWxlZCB3aXRob3V0IHN1cHBvcnQgZm9yICclMiciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9oZWFkZXJfbW9kdWxlX3JlcXVpcmVzX21vZHVsZXMsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaGVhZGVyIG1vZHVsZSBjb21waWxhdGlvbiByZXF1aXJlcyAnLWZtb2R1bGVzJyBvciAnLWZtb2R1bGVzLXRzJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKK0RJQUcoZXJyX2lmdW5jX3Jlc29sdmVyX3JldHVybiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpZnVuYyByZXNvbHZlciBmdW5jdGlvbiBtdXN0IHJldHVybiBhIHBvaW50ZXIiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9pbnZhbGlkX3Zmc19vdmVybGF5LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImludmFsaWQgdmlydHVhbCBmaWxlc3lzdGVtIG92ZXJsYXkgZmlsZSAnJTAnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfbWlzc2luZ19tb2R1bGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAibm8gbW9kdWxlIG5hbWVkICclMCcgZGVjbGFyZWQgaW4gbW9kdWxlIG1hcCBmaWxlICclMSciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9taXNzaW5nX21vZHVsZV9uYW1lLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgIm5vIG1vZHVsZSBuYW1lIHByb3ZpZGVkOyBzcGVjaWZ5IG9uZSB3aXRoIC1mbW9kdWxlLW5hbWU9IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQpAQCAtNDcsNyArNTIsNiBAQAogRElBRyhlcnJfbm9fc3VibW9kdWxlX3N1Z2dlc3QsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibm8gc3VibW9kdWxlIG5hbWVkICUwIGluIG1vZHVsZSAnJTEnOyBkaWQgeW91IG1lYW4gJyUyJz8iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl9yZWxvY2F0YWJsZV93aXRob3V0X2lzeXNyb290LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm11c3Qgc3BlY2lmeSBzeXN0ZW0gcm9vdCB3aXRoIC1pc3lzcm9vdCB3aGVuIGJ1aWxkaW5nIGEgcmVsb2NhdGFibGUgUENIIGZpbGUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl90ZXN0X21vZHVsZV9maWxlX2V4dGVuc2lvbl92ZXJzaW9uLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInRlc3QgbW9kdWxlIGZpbGUgZXh0ZW5zaW9uICclMCcgaGFzIGRpZmZlcmVudCB2ZXJzaW9uICglMS4lMikgdGhhbiBleHBlY3RlZCAoJTMuJTQpIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQotRElBRyhlcnJfdW5rbm93bl9hbmFseXplcl9jaGVja2VyLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm5vIGFuYWx5emVyIGNoZWNrZXJzIGFyZSBhc3NvY2lhdGVkIHdpdGggJyUwJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX3ZlcmlmeV9pbmNvbnNpc3RlbnRfZGlhZ3MsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJyUwJyBkaWFnbm9zdGljcyAlc2VsZWN0e2V4cGVjdGVkfHNlZW59MSBidXQgbm90ICVzZWxlY3R7c2VlbnxleHBlY3RlZH0xOiAlMiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKIERJQUcoZXJyX3ZlcmlmeV9pbnZhbGlkX2NvbnRlbnQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW52YWxpZCBleHBlY3RlZCAlMDogJTEiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGVycl92ZXJpZnlfaW52YWxpZF9ub19kaWFncywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlc2VsZWN0e2V4cGVjdGVkfCdleHBlY3RlZC1uby1kaWFnbm9zdGljcyd9MCBkaXJlY3RpdmUgY2Fubm90IGZvbGxvdyAlc2VsZWN0eydleHBlY3RlZC1uby1kaWFnbm9zdGljcycgZGlyZWN0aXZlfG90aGVyIGV4cGVjdGVkIGRpcmVjdGl2ZXN9MCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMCkKQEAgLTcxLDM2ICs3NSwzOSBAQAogRElBRyhub3RlX21vZHVsZV9kZWZfdW5kZWZfaGVyZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgIm1hY3JvIHdhcyAlc2VsZWN0e2RlZmluZWR8I3VuZGVmJ2R9MCBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCiBESUFHKG5vdGVfbW9kdWxlX2ltcG9ydF9oZXJlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAibW9kdWxlIGltcG9ydGVkIGhlcmUiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKIERJQUcobm90ZV9wcml2YXRlX3RvcF9sZXZlbF9kZWZpbmVkLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAibW9kdWxlIGRlZmluZWQgaGVyZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyhub3RlX3N1Z2dlc3RfZGlzYWJsaW5nX2FsbF9jaGVja2VycywgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgInVzZSAtYW5hbHl6ZXItZGlzYWJsZS1hbGwtY2hlY2tzIHRvIGRpc2FibGUgYWxsIHN0YXRpYyBhbmFseXplciBjaGVja2VycyIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyhyZW1hcmtfZmVfYmFja2VuZF9vcHRpbWl6YXRpb25fcmVtYXJrLCBDTEFTU19SRU1BUkssICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUwIiwgNTExLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCB0cnVlLCAxNikKLURJQUcocmVtYXJrX2ZlX2JhY2tlbmRfb3B0aW1pemF0aW9uX3JlbWFya19hbmFseXNpcywgQ0xBU1NfUkVNQVJLLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlMCIsIDUxMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgdHJ1ZSwgMTYpCi1ESUFHKHJlbWFya19mZV9iYWNrZW5kX29wdGltaXphdGlvbl9yZW1hcmtfYW5hbHlzaXNfYWxpYXNpbmcsIENMQVNTX1JFTUFSSywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTA7IGFsbG93IHJlb3JkZXJpbmcgYnkgc3BlY2lmeWluZyAnI3ByYWdtYSBjbGFuZyBsb29wIHZlY3Rvcml6ZShlbmFibGUpJyBiZWZvcmUgdGhlIGxvb3AuIElmIHRoZSBhcnJheXMgd2lsbCBhbHdheXMgYmUgaW5kZXBlbmRlbnQgc3BlY2lmeSAnI3ByYWdtYSBjbGFuZyBsb29wIHZlY3Rvcml6ZShhc3N1bWVfc2FmZXR5KScgYmVmb3JlIHRoZSBsb29wIG9yIHByb3ZpZGUgdGhlICdfX3Jlc3RyaWN0X18nIHF1YWxpZmllciB3aXRoIHRoZSBpbmRlcGVuZGVudCBhcnJheSBhcmd1bWVudHMuIEVycm9uZW91cyByZXN1bHRzIHdpbGwgb2NjdXIgaWYgdGhlc2Ugb3B0aW9ucyBhcmUgaW5jb3JyZWN0bHkgYXBwbGllZCEiLCA1MTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIHRydWUsIDE2KQotRElBRyhyZW1hcmtfZmVfYmFja2VuZF9vcHRpbWl6YXRpb25fcmVtYXJrX2FuYWx5c2lzX2ZwY29tbXV0ZSwgQ0xBU1NfUkVNQVJLLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlMDsgYWxsb3cgcmVvcmRlcmluZyBieSBzcGVjaWZ5aW5nICcjcHJhZ21hIGNsYW5nIGxvb3AgdmVjdG9yaXplKGVuYWJsZSknIGJlZm9yZSB0aGUgbG9vcCBvciBieSBwcm92aWRpbmcgdGhlIGNvbXBpbGVyIG9wdGlvbiAnLWZmYXN0LW1hdGgnLiIsIDUxMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgdHJ1ZSwgMTYpCi1ESUFHKHJlbWFya19mZV9iYWNrZW5kX29wdGltaXphdGlvbl9yZW1hcmtfbWlzc2VkLCBDTEFTU19SRU1BUkssICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUwIiwgNTE0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCB0cnVlLCAxNikKLURJQUcocmVtYXJrX2ZlX2JhY2tlbmRfcGx1Z2luLCBDTEFTU19SRU1BUkssICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUwIiwgNTU0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCB0cnVlLCAxNikKLURJQUcocmVtYXJrX21vZHVsZV9idWlsZCwgQ0xBU1NfUkVNQVJLLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJidWlsZGluZyBtb2R1bGUgJyUwJyBhcyAnJTEnIiwgNDA5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcocmVtYXJrX21vZHVsZV9idWlsZF9kb25lLCBDTEFTU19SRU1BUkssICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZpbmlzaGVkIGJ1aWxkaW5nIG1vZHVsZSAnJTAnIiwgNDA5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcocmVtYXJrX3Nhbml0aXplX2FkZHJlc3NfaW5zZXJ0X2V4dHJhX3BhZGRpbmdfYWNjZXB0ZWQsIENMQVNTX1JFTUFSSywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiLWZzYW5pdGl6ZS1hZGRyZXNzLWZpZWxkLXBhZGRpbmcgYXBwbGllZCB0byAlMCIsIDU2NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgdHJ1ZSwgMCkKLURJQUcocmVtYXJrX3Nhbml0aXplX2FkZHJlc3NfaW5zZXJ0X2V4dHJhX3BhZGRpbmdfcmVqZWN0ZWQsIENMQVNTX1JFTUFSSywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiLWZzYW5pdGl6ZS1hZGRyZXNzLWZpZWxkLXBhZGRpbmcgaWdub3JlZCBmb3IgJTAgYmVjYXVzZSBpdCAlc2VsZWN0e2lzIG5vdCBDKyt8aXMgcGFja2VkfGlzIGEgdW5pb258aXMgdHJpdmlhbGx5IGNvcHlhYmxlfGhhcyB0cml2aWFsIGRlc3RydWN0b3J8aXMgc3RhbmRhcmQgbGF5b3V0fGlzIGluIGEgYmxhY2tsaXN0ZWQgZmlsZXxpcyBibGFja2xpc3RlZH0xIiwgNTY1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCB0cnVlLCAwKQotRElBRyh3YXJuX2ZlX2JhY2tlbmRfZnJhbWVfbGFyZ2VyX3RoYW4sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIiwgMjM3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCB0cnVlLCAxNikKLURJQUcod2Fybl9mZV9iYWNrZW5kX29wdGltaXphdGlvbl9mYWlsdXJlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCIsIDUxMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgdHJ1ZSwgMTYpCitESUFHKHJlbWFya19mZV9iYWNrZW5kX29wdGltaXphdGlvbl9yZW1hcmssIENMQVNTX1JFTUFSSywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAiLCA1MjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIHRydWUsIDE2KQorRElBRyhyZW1hcmtfZmVfYmFja2VuZF9vcHRpbWl6YXRpb25fcmVtYXJrX2FuYWx5c2lzLCBDTEFTU19SRU1BUkssICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUwIiwgNTIzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCB0cnVlLCAxNikKK0RJQUcocmVtYXJrX2ZlX2JhY2tlbmRfb3B0aW1pemF0aW9uX3JlbWFya19hbmFseXNpc19hbGlhc2luZywgQ0xBU1NfUkVNQVJLLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlMDsgYWxsb3cgcmVvcmRlcmluZyBieSBzcGVjaWZ5aW5nICcjcHJhZ21hIGNsYW5nIGxvb3AgdmVjdG9yaXplKGVuYWJsZSknIGJlZm9yZSB0aGUgbG9vcC4gSWYgdGhlIGFycmF5cyB3aWxsIGFsd2F5cyBiZSBpbmRlcGVuZGVudCBzcGVjaWZ5ICcjcHJhZ21hIGNsYW5nIGxvb3AgdmVjdG9yaXplKGFzc3VtZV9zYWZldHkpJyBiZWZvcmUgdGhlIGxvb3Agb3IgcHJvdmlkZSB0aGUgJ19fcmVzdHJpY3RfXycgcXVhbGlmaWVyIHdpdGggdGhlIGluZGVwZW5kZW50IGFycmF5IGFyZ3VtZW50cy4gRXJyb25lb3VzIHJlc3VsdHMgd2lsbCBvY2N1ciBpZiB0aGVzZSBvcHRpb25zIGFyZSBpbmNvcnJlY3RseSBhcHBsaWVkISIsIDUyMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgdHJ1ZSwgMTYpCitESUFHKHJlbWFya19mZV9iYWNrZW5kX29wdGltaXphdGlvbl9yZW1hcmtfYW5hbHlzaXNfZnBjb21tdXRlLCBDTEFTU19SRU1BUkssICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUwOyBhbGxvdyByZW9yZGVyaW5nIGJ5IHNwZWNpZnlpbmcgJyNwcmFnbWEgY2xhbmcgbG9vcCB2ZWN0b3JpemUoZW5hYmxlKScgYmVmb3JlIHRoZSBsb29wIG9yIGJ5IHByb3ZpZGluZyB0aGUgY29tcGlsZXIgb3B0aW9uICctZmZhc3QtbWF0aCcuIiwgNTIzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCB0cnVlLCAxNikKK0RJQUcocmVtYXJrX2ZlX2JhY2tlbmRfb3B0aW1pemF0aW9uX3JlbWFya19taXNzZWQsIENMQVNTX1JFTUFSSywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAiLCA1MjUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIHRydWUsIDE2KQorRElBRyhyZW1hcmtfZmVfYmFja2VuZF9wbHVnaW4sIENMQVNTX1JFTUFSSywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAiLCA1NjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIHRydWUsIDE2KQorRElBRyhyZW1hcmtfbW9kdWxlX2J1aWxkLCBDTEFTU19SRU1BUkssICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImJ1aWxkaW5nIG1vZHVsZSAnJTAnIGFzICclMSciLCA0MTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyhyZW1hcmtfbW9kdWxlX2J1aWxkX2RvbmUsIENMQVNTX1JFTUFSSywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZmluaXNoZWQgYnVpbGRpbmcgbW9kdWxlICclMCciLCA0MTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2FsaWFzX3RvX3dlYWtfYWxpYXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7YWxpYXN8aWZ1bmN9MiB3aWxsIGFsd2F5cyByZXNvbHZlIHRvICUwIGV2ZW4gaWYgd2VhayBkZWZpbml0aW9uIG9mICUxIGlzIG92ZXJyaWRkZW4iLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2FsaWFzX3dpdGhfc2VjdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHthbGlhc3xpZnVuY30xIHdpbGwgbm90IGJlIGluIHNlY3Rpb24gJyUwJyBidXQgaW4gdGhlIHNhbWUgc2VjdGlvbiBhcyB0aGUgJXNlbGVjdHthbGlhc2VlfHJlc29sdmVyfTIiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2F0b21pY19vcF9taXNhbGlnbmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0e2xhcmdlfG1pc2FsaWduZWR9MCBhdG9taWMgb3BlcmF0aW9uIG1heSBpbmN1ciBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBwZW5hbHR5IiwgNDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX2ZlX2JhY2tlbmRfZnJhbWVfbGFyZ2VyX3RoYW4sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIiwgMjQ1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCB0cnVlLCAxNikKK0RJQUcod2Fybl9mZV9iYWNrZW5kX29wdGltaXphdGlvbl9mYWlsdXJlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCIsIDUyNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgdHJ1ZSwgMTYpCiBESUFHKHdhcm5fZmVfYmFja2VuZF9wbHVnaW4sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIiwgNTMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIHRydWUsIDE2KQogRElBRyh3YXJuX2ZlX2NjX2xvZ19kaWFnbm9zdGljc19mYWlsdXJlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmFibGUgdG8gb3BlbiBDQ19MT0dfRElBR05PU1RJQ1MgZmlsZTogJTAgKHVzaW5nIHN0ZGVycikiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKIERJQUcod2Fybl9mZV9jY19wcmludF9oZWFkZXJfZmFpbHVyZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5hYmxlIHRvIG9wZW4gQ0NfUFJJTlRfSEVBREVSUyBmaWxlOiAlMCAodXNpbmcgc3RkZXJyKSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2ZlX2ZyYW1lX2xhcmdlcl90aGFuLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzdGFjayBmcmFtZSBzaXplIG9mICUwIGJ5dGVzIGluICVxMSIsIDIzNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgdHJ1ZSwgMTYpCi1ESUFHKHdhcm5fZmVfaW5saW5lX2FzbSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAiLCAzMTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxMikKK0RJQUcod2Fybl9mZV9mcmFtZV9sYXJnZXJfdGhhbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic3RhY2sgZnJhbWUgc2l6ZSBvZiAlMCBieXRlcyBpbiAlcTEiLCAyNDUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIHRydWUsIDE2KQorRElBRyh3YXJuX2ZlX2lubGluZV9hc20sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIiwgMzI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTIpCiBESUFHKHdhcm5fZmVfbWFjcm9fY29udGFpbnNfZW1iZWRkZWRfbmV3bGluZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWFjcm8gJyUwJyBjb250YWlucyBlbWJlZGRlZCBuZXdsaW5lOyB0ZXh0IGFmdGVyIHRoZSBuZXdsaW5lIGlzIGlnbm9yZWQiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9mZV9vdmVycmlkZV9tb2R1bGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm92ZXJyaWRpbmcgdGhlIG1vZHVsZSB0YXJnZXQgdHJpcGxlIHdpdGggJTAiLCA1MDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2ZlX3NlcmlhbGl6ZWRfZGlhZ19mYWlsdXJlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmFibGUgdG8gb3BlbiBmaWxlICUwIGZvciBzZXJpYWxpemluZyBkaWFnbm9zdGljcyAoJTEpIiwgNTc2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9mZV9zZXJpYWxpemVkX2RpYWdfbWVyZ2VfZmFpbHVyZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5hYmxlIHRvIG1lcmdlIGEgc3VicHJvY2VzcydzIHNlcmlhbGl6ZWQgZGlhZ25vc3RpY3MiLCA1NzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2ZlX3VuYWJsZV90b19vcGVuX3N0YXRzX2ZpbGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVuYWJsZSB0byBvcGVuIHN0YXRpc3RpY3Mgb3V0cHV0IGZpbGUgJyUwJzogJyUxJyIsIDY2MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fZmVfb3ZlcnJpZGVfbW9kdWxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvdmVycmlkaW5nIHRoZSBtb2R1bGUgdGFyZ2V0IHRyaXBsZSB3aXRoICUwIiwgNTE0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9mZV9zZXJpYWxpemVkX2RpYWdfZmFpbHVyZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5hYmxlIHRvIG9wZW4gZmlsZSAlMCBmb3Igc2VyaWFsaXppbmcgZGlhZ25vc3RpY3MgKCUxKSIsIDU4OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fZmVfc2VyaWFsaXplZF9kaWFnX21lcmdlX2ZhaWx1cmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVuYWJsZSB0byBtZXJnZSBhIHN1YnByb2Nlc3MncyBzZXJpYWxpemVkIGRpYWdub3N0aWNzIiwgNTg4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9mZV91bmFibGVfdG9fb3Blbl9zdGF0c19maWxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmFibGUgdG8gb3BlbiBzdGF0aXN0aWNzIG91dHB1dCBmaWxlICclMCc6ICclMSciLCA2NzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQogRElBRyh3YXJuX2ZpeGl0X25vX2NoYW5nZXMsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJGSVgtSVQgZGV0ZWN0ZWQgZXJyb3JzIGl0IGNvdWxkIG5vdCBmaXg7IG5vIG91dHB1dCB3aWxsIGJlIGdlbmVyYXRlZCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQogRElBRyh3YXJuX2luY29tcGF0aWJsZV9hbmFseXplcl9wbHVnaW5fYXBpLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjaGVja2VyIHBsdWdpbiAnJTAnIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhpcyB2ZXJzaW9uIG9mIHRoZSBhbmFseXplciIsIDIxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9taXNzaW5nX3N1Ym1vZHVsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWlzc2luZyBzdWJtb2R1bGUgJyUwJyIsIDMwOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKHdhcm5fbW9kdWxlX2NvbmZpZ19tYWNyb191bmRlZiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHtkZWZpbml0aW9ufCN1bmRlZn0wIG9mIGNvbmZpZ3VyYXRpb24gbWFjcm8gJyUxJyBoYXMgbm8gZWZmZWN0IG9uIHRoZSBpbXBvcnQgb2YgJyUyJzsgcGFzcyAnJXNlbGVjdHstRCUxPS4uLnwtVSUxfTAnIG9uIHRoZSBjb21tYW5kIGxpbmUgdG8gY29uZmlndXJlIHRoZSBtb2R1bGUiLCAxMzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX21vZHVsZV9jb25maWdfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJtb2R1bGUgZmlsZSAlMCBjYW5ub3QgYmUgbG9hZGVkIGR1ZSB0byBhIGNvbmZpZ3VyYXRpb24gbWlzbWF0Y2ggd2l0aCB0aGUgY3VycmVudCBjb21waWxhdGlvbiIsIDQxMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKHdhcm5fbm9fcHJpdl9zdWJtb2R1bGVfdXNlX3RvcGxldmVsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJubyBzdWJtb2R1bGUgbmFtZWQgJTAgaW4gbW9kdWxlICclMSc7IHVzaW5nIHRvcCBsZXZlbCAnJTInIiwgNTM0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9vcHRpb25faW52YWxpZF9vY2xfdmVyc2lvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiT3BlbkNMIHZlcnNpb24gJTAgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3B0aW9uICclMSciLCAxNTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNykKLURJQUcod2Fybl9zdGRsaWJjeHhfbm90X2ZvdW5kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbmNsdWRlIHBhdGggZm9yIHN0ZGxpYmMrKyBoZWFkZXJzIG5vdCBmb3VuZDsgcGFzcyAnLXN0ZGxpYj1saWJjKysnIG9uIHRoZSBjb21tYW5kIGxpbmUgdG8gdXNlIHRoZSBsaWJjKysgc3RhbmRhcmQgbGlicmFyeSBpbnN0ZWFkIiwgNjA4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl91bmtub3duX2RpYWdfb3B0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmtub3duICVzZWxlY3R7d2FybmluZ3xyZW1hcmt9MCBvcHRpb24gJyUxJyVzZWxlY3R7fDsgZGlkIHlvdSBtZWFuICclMyc/fTIiLCA2ODUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX3Vua25vd25fd2FybmluZ19zcGVjaWZpZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVua25vd24gJTAgd2FybmluZyBzcGVjaWZpZXI6ICclMSciLCA2ODUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX21pc3Npbmdfc3VibW9kdWxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtaXNzaW5nIHN1Ym1vZHVsZSAnJTAnIiwgMzE3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9tb2R1bGVfY29uZmlnX21hY3JvX3VuZGVmLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0e2RlZmluaXRpb258I3VuZGVmfTAgb2YgY29uZmlndXJhdGlvbiBtYWNybyAnJTEnIGhhcyBubyBlZmZlY3Qgb24gdGhlIGltcG9ydCBvZiAnJTInOyBwYXNzICclc2VsZWN0ey1EJTE9Li4ufC1VJTF9MCcgb24gdGhlIGNvbW1hbmQgbGluZSB0byBjb25maWd1cmUgdGhlIG1vZHVsZSIsIDEzMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fbW9kdWxlX2NvbmZpZ19taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm1vZHVsZSBmaWxlICUwIGNhbm5vdCBiZSBsb2FkZWQgZHVlIHRvIGEgY29uZmlndXJhdGlvbiBtaXNtYXRjaCB3aXRoIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIiwgNDIwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9ub19wcml2X3N1Ym1vZHVsZV91c2VfdG9wbGV2ZWwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm5vIHN1Ym1vZHVsZSBuYW1lZCAlMCBpbiBtb2R1bGUgJyUxJzsgdXNpbmcgdG9wIGxldmVsICclMiciLCA1NDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX29wdGlvbl9pbnZhbGlkX29jbF92ZXJzaW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJPcGVuQ0wgdmVyc2lvbiAlMCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcHRpb24gJyUxJyIsIDE2NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQorRElBRyh3YXJuX3Byb2ZpbGVfZGF0YV9taXNzaW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwcm9maWxlIGRhdGEgbWF5IGJlIGluY29tcGxldGU6IG9mICUwIGZ1bmN0aW9uJXMwLCAlMSAlcGx1cmFsezE6aGFzfDpoYXZlfTEgbm8gZGF0YSIsIDU0NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMxKQorRElBRyh3YXJuX3Byb2ZpbGVfZGF0YV9vdXRfb2ZfZGF0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJvZmlsZSBkYXRhIG1heSBiZSBvdXQgb2YgZGF0ZTogb2YgJTAgZnVuY3Rpb24lczAsICUxICVwbHVyYWx7MTpoYXN8OmhhdmV9MSBtaXNtYXRjaGVkIGRhdGEgdGhhdCB3aWxsIGJlIGlnbm9yZWQiLCA1NDgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMSkKK0RJQUcod2Fybl9wcm9maWxlX2RhdGFfdW5wcm9maWxlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibm8gcHJvZmlsZSBkYXRhIGF2YWlsYWJsZSBmb3IgZmlsZSBcIiUwXCIiLCA1NDksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMSkKK0RJQUcod2Fybl9zdGRsaWJjeHhfbm90X2ZvdW5kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbmNsdWRlIHBhdGggZm9yIHN0ZGxpYmMrKyBoZWFkZXJzIG5vdCBmb3VuZDsgcGFzcyAnLXN0ZGxpYj1saWJjKysnIG9uIHRoZSBjb21tYW5kIGxpbmUgdG8gdXNlIHRoZSBsaWJjKysgc3RhbmRhcmQgbGlicmFyeSBpbnN0ZWFkIiwgNjIxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl91bmtub3duX2RpYWdfb3B0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmtub3duICVzZWxlY3R7d2FybmluZ3xyZW1hcmt9MCBvcHRpb24gJyUxJyVzZWxlY3R7fDsgZGlkIHlvdSBtZWFuICclMyc/fTIiLCA2OTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX3Vua25vd25fd2FybmluZ19zcGVjaWZpZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVua25vd24gJTAgd2FybmluZyBzcGVjaWZpZXI6ICclMSciLCA2OTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0dyb3Vwcy5pbmMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljR3JvdXBzLmluYwppbmRleCA0ODk4OTRlLi42Yjc0YTA4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljR3JvdXBzLmluYworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljR3JvdXBzLmluYwpAQCAtNDMsNyArNDMsNyBAQAogICAvKiBEaWFnQXJyYXk0OSAqLyBkaWFnOjp3YXJuX2F1dG9fbW9kdWxlX2ltcG9ydCwgLTEsCiAgIC8qIERpYWdBcnJheTUwICovIGRpYWc6OmV4dF9hdXRvX3N0b3JhZ2VfY2xhc3MsIC0xLAogICAvKiBEaWFnQXJyYXk1MSAqLyBkaWFnOjp3YXJuX2F1dG9fdmFyX2lzX2lkLCAtMSwKLSAgLyogRGlhZ0FycmF5NTIgKi8gZGlhZzo6d2Fybl9hdmFpbGFiaWxpdHlfYW5kX3VuYXZhaWxhYmxlLCBkaWFnOjp3YXJuX2F2YWlsYWJpbGl0eV9vbl9zdGF0aWNfaW5pdGlhbGl6ZXIsIGRpYWc6Ondhcm5fYXZhaWxhYmlsaXR5X3Vua25vd25fcGxhdGZvcm0sIGRpYWc6Ondhcm5fYXZhaWxhYmlsaXR5X3ZlcnNpb25fb3JkZXJpbmcsIGRpYWc6Ondhcm5fZXhwZWN0ZWRfY29uc2lzdGVudF92ZXJzaW9uX3NlcGFyYXRvciwgZGlhZzo6d2Fybl9taXNtYXRjaGVkX2F2YWlsYWJpbGl0eSwgZGlhZzo6d2Fybl9taXNtYXRjaGVkX2F2YWlsYWJpbGl0eV9vdmVycmlkZSwgZGlhZzo6d2Fybl9taXNtYXRjaGVkX2F2YWlsYWJpbGl0eV9vdmVycmlkZV91bmF2YWlsLCAtMSwKKyAgLyogRGlhZ0FycmF5NTIgKi8gZGlhZzo6d2Fybl9hdmFpbGFiaWxpdHlfYW5kX3VuYXZhaWxhYmxlLCBkaWFnOjp3YXJuX2F2YWlsYWJpbGl0eV9vbl9zdGF0aWNfaW5pdGlhbGl6ZXIsIGRpYWc6Ondhcm5fYXZhaWxhYmlsaXR5X3N3aWZ0X3VuYXZhaWxhYmxlX2RlcHJlY2F0ZWRfb25seSwgZGlhZzo6d2Fybl9hdmFpbGFiaWxpdHlfdW5rbm93bl9wbGF0Zm9ybSwgZGlhZzo6d2Fybl9hdmFpbGFiaWxpdHlfdmVyc2lvbl9vcmRlcmluZywgZGlhZzo6d2Fybl9leHBlY3RlZF9jb25zaXN0ZW50X3ZlcnNpb25fc2VwYXJhdG9yLCBkaWFnOjp3YXJuX21pc21hdGNoZWRfYXZhaWxhYmlsaXR5LCBkaWFnOjp3YXJuX21pc21hdGNoZWRfYXZhaWxhYmlsaXR5X292ZXJyaWRlLCBkaWFnOjp3YXJuX21pc21hdGNoZWRfYXZhaWxhYmlsaXR5X292ZXJyaWRlX3VuYXZhaWwsIC0xLAogICAvKiBEaWFnQXJyYXk1MyAqLyBkaWFnOjp3YXJuX2ZlX2JhY2tlbmRfcGx1Z2luLCAtMSwKICAgLyogRGlhZ0FycmF5NTQgKi8gZGlhZzo6YmFja3NsYXNoX25ld2xpbmVfc3BhY2UsIC0xLAogICAvKiBEaWFnQXJyYXk1NSAqLyBkaWFnOjp3YXJuX2JhZF9mdW5jdGlvbl9jYXN0LCAtMSwKQEAgLTczLDkgKzczLDkgQEAKICAgLyogRGlhZ0FycmF5ODcgKi8gZGlhZzo6ZXh0X2NvbnN0ZXhwcl9ib2R5X2ludmFsaWRfc3RtdCwgZGlhZzo6ZXh0X2NvbnN0ZXhwcl9ib2R5X211bHRpcGxlX3JldHVybiwgZGlhZzo6ZXh0X2NvbnN0ZXhwcl9sb2NhbF92YXIsIGRpYWc6OmV4dF9jb25zdGV4cHJfdHlwZV9kZWZpbml0aW9uLCBkaWFnOjpleHRfY3h4MTRfYXR0ciwgZGlhZzo6ZXh0X2RlY2x0eXBlX2F1dG9fdHlwZV9zcGVjaWZpZXIsIGRpYWc6OmV4dF9pbml0X2NhcHR1cmUsIGRpYWc6OmV4dF92YXJpYWJsZV90ZW1wbGF0ZSwgLTEsCiAgIC8qIERpYWdBcnJheTg5ICovIGRpYWc6Ondhcm5fY3h4MTdfY29tcGF0X2V4Y2VwdGlvbl9zcGVjX2luX3NpZ25hdHVyZSwgLTEsCiAgIC8qIERpYWdBcnJheTkxICovIGRpYWc6OmV4dF9hdXRvX25ld19saXN0X2luaXQsIGRpYWc6OmV4dF9jb25zdGV4cHJfaWYsIGRpYWc6OmV4dF9jb25zdGV4cHJfb25fbGFtYmRhX2N4eDE3LCBkaWFnOjpleHRfY3h4MTdfYXR0ciwgZGlhZzo6ZXh0X2RlY29tcF9kZWNsLCBkaWFnOjpleHRfZm9sZF9leHByZXNzaW9uLCBkaWFnOjpleHRfZm9yX3JhbmdlX2JlZ2luX2VuZF90eXBlc19kaWZmZXIsIGRpYWc6OmV4dF9oZXhfbGl0ZXJhbF9pbnZhbGlkLCBkaWFnOjpleHRfaW5pdF9zdGF0ZW1lbnQsIGRpYWc6OmV4dF9pbmxpbmVfdmFyaWFibGUsIGRpYWc6OmV4dF9tdWx0aV91c2luZ19kZWNsYXJhdGlvbiwgZGlhZzo6ZXh0X25lc3RlZF9uYW1lc3BhY2VfZGVmaW5pdGlvbiwgZGlhZzo6ZXh0X25zX2VudW1fYXR0cmlidXRlLCBkaWFnOjpleHRfc3Rhcl90aGlzX2xhbWJkYV9jYXB0dXJlX2N4eDE3LCBkaWFnOjpleHRfc3RhdGljX2Fzc2VydF9ub19tZXNzYWdlLCBkaWFnOjpleHRfdGVtcGxhdGVfdGVtcGxhdGVfcGFyYW1fdHlwZW5hbWUsIGRpYWc6OmV4dF91c2luZ19hdHRyaWJ1dGVfbnMsIGRpYWc6OmV4dF91c2luZ19kZWNsYXJhdGlvbl9wYWNrLCAtMSwKLSAgLyogRGlhZ0FycmF5OTYgKi8gZGlhZzo6d2Fybl9jeHgyYV9jb21wYXRfYWdncmVnYXRlX2luaXRfd2l0aF9jdG9ycywgZGlhZzo6d2Fybl9jeHgyYV9jb21wYXRfc3BhY2VzaGlwLCBkaWFnOjp3YXJuX2N4eDJhX2tleXdvcmQsIC0xLAotICAvKiBEaWFnQXJyYXk5OCAqLyBkaWFnOjpleHRfYml0ZmllbGRfbWVtYmVyX2luaXQsIGRpYWc6OmV4dF9lcXVhbHNfdGhpc19sYW1iZGFfY2FwdHVyZV9jeHgyYSwgZGlhZzo6ZXh0X2Zvcl9yYW5nZV9pbml0X3N0bXQsIGRpYWc6OmV4dF9wb2ludGVyX3RvX2NvbnN0X3JlZl9tZW1iZXJfb25fcnZhbHVlLCAtMSwKLSAgLyogRGlhZ0FycmF5OTkgKi8gZGlhZzo6d2Fybl9jeHgxN19jb21wYXRfYml0ZmllbGRfbWVtYmVyX2luaXQsIGRpYWc6Ondhcm5fY3h4MTdfY29tcGF0X2RlZmF1bHRlZF9tZXRob2RfdHlwZV9taXNtYXRjaCwgZGlhZzo6d2Fybl9jeHgxN19jb21wYXRfZXF1YWxzX3RoaXNfbGFtYmRhX2NhcHR1cmUsIGRpYWc6Ondhcm5fY3h4MTdfY29tcGF0X2Zvcl9yYW5nZV9pbml0X3N0bXQsIGRpYWc6Ondhcm5fY3h4MTdfY29tcGF0X2xhbWJkYV9kZWZfY3Rvcl9hc3NpZ24sIGRpYWc6Ondhcm5fY3h4MTdfY29tcGF0X3NwYWNlc2hpcCwgZGlhZzo6d2Fybl9jeHgxN19jb21wYXRfdW5pY29kZV90eXBlLCAtMSwKKyAgLyogRGlhZ0FycmF5OTYgKi8gZGlhZzo6d2Fybl9jeHgyYV9jb21wYXRfYWdncmVnYXRlX2luaXRfd2l0aF9jdG9ycywgZGlhZzo6d2Fybl9jeHgyYV9jb21wYXRfc3BhY2VzaGlwLCBkaWFnOjp3YXJuX2N4eDJhX2NvbXBhdF91dGY4X3N0cmluZywgZGlhZzo6d2Fybl9jeHgyYV9rZXl3b3JkLCAtMSwKKyAgLyogRGlhZ0FycmF5OTggKi8gZGlhZzo6ZXh0X2JpdGZpZWxkX21lbWJlcl9pbml0LCBkaWFnOjpleHRfY29uc3RleHByX2JvZHlfaW52YWxpZF9zdG10X2N4eDJhLCBkaWFnOjpleHRfY29uc3RleHByX2Z1bmN0aW9uX3RyeV9ibG9ja19jeHgyYSwgZGlhZzo6ZXh0X2VxdWFsc190aGlzX2xhbWJkYV9jYXB0dXJlX2N4eDJhLCBkaWFnOjpleHRfZm9yX3JhbmdlX2luaXRfc3RtdCwgZGlhZzo6ZXh0X2lubGluZV9uZXN0ZWRfbmFtZXNwYWNlX2RlZmluaXRpb24sIGRpYWc6OmV4dF9wb2ludGVyX3RvX2NvbnN0X3JlZl9tZW1iZXJfb25fcnZhbHVlLCAtMSwKKyAgLyogRGlhZ0FycmF5OTkgKi8gZGlhZzo6d2Fybl9jeHgxN19jb21wYXRfYml0ZmllbGRfbWVtYmVyX2luaXQsIGRpYWc6Ondhcm5fY3h4MTdfY29tcGF0X2NvbnN0ZXhwcl9ib2R5X2ludmFsaWRfc3RtdCwgZGlhZzo6d2Fybl9jeHgxN19jb21wYXRfY29uc3RleHByX2Z1bmN0aW9uX3RyeV9ibG9jaywgZGlhZzo6d2Fybl9jeHgxN19jb21wYXRfZGVmYXVsdGVkX21ldGhvZF90eXBlX21pc21hdGNoLCBkaWFnOjp3YXJuX2N4eDE3X2NvbXBhdF9lcXVhbHNfdGhpc19sYW1iZGFfY2FwdHVyZSwgZGlhZzo6d2Fybl9jeHgxN19jb21wYXRfZm9yX3JhbmdlX2luaXRfc3RtdCwgZGlhZzo6d2Fybl9jeHgxN19jb21wYXRfaW5saW5lX25lc3RlZF9uYW1lc3BhY2VfZGVmaW5pdGlvbiwgZGlhZzo6d2Fybl9jeHgxN19jb21wYXRfbGFtYmRhX2RlZl9jdG9yX2Fzc2lnbiwgZGlhZzo6d2Fybl9jeHgxN19jb21wYXRfc3BhY2VzaGlwLCBkaWFnOjp3YXJuX2N4eDE3X2NvbXBhdF91bmljb2RlX3R5cGUsIC0xLAogICAvKiBEaWFnQXJyYXkxMDAgKi8gZGlhZzo6d2Fybl9jeHgxN19jb21wYXRfcG9pbnRlcl90b19jb25zdF9yZWZfbWVtYmVyX29uX3J2YWx1ZSwgLTEsCiAgIC8qIERpYWdBcnJheTEwMSAqLyBkaWFnOjp3YXJuX2N4eDE0X2NvbXBhdF9jbGFzc190ZW1wbGF0ZV9hcmd1bWVudF9kZWR1Y3Rpb24sIGRpYWc6Ondhcm5fY3h4MTRfY29tcGF0X2NvbnN0ZXhwcl9pZiwgZGlhZzo6d2Fybl9jeHgxNF9jb21wYXRfY29uc3RleHByX29uX2xhbWJkYSwgZGlhZzo6d2Fybl9jeHgxNF9jb21wYXRfZGVjb21wX2RlY2wsIGRpYWc6Ondhcm5fY3h4MTRfY29tcGF0X2ZvbGRfZXhwcmVzc2lvbiwgZGlhZzo6d2Fybl9jeHgxNF9jb21wYXRfaW5pdF9zdGF0ZW1lbnQsIGRpYWc6Ondhcm5fY3h4MTRfY29tcGF0X2lubGluZV92YXJpYWJsZSwgZGlhZzo6d2Fybl9jeHgxNF9jb21wYXRfbmVzdGVkX25hbWVzcGFjZV9kZWZpbml0aW9uLCBkaWFnOjp3YXJuX2N4eDE0X2NvbXBhdF9zdGFyX3RoaXNfbGFtYmRhX2NhcHR1cmUsIGRpYWc6Ondhcm5fY3h4MTRfY29tcGF0X3N0YXRpY19hc3NlcnRfbm9fbWVzc2FnZSwgZGlhZzo6d2Fybl9jeHgxNF9jb21wYXRfdGVtcGxhdGVfbm9udHlwZV9wYXJtX2F1dG9fdHlwZSwgZGlhZzo6d2Fybl9jeHgxNF9jb21wYXRfdGVtcGxhdGVfdGVtcGxhdGVfcGFyYW1fdHlwZW5hbWUsIGRpYWc6Ondhcm5fY3h4MTRfY29tcGF0X3U4X2NoYXJhY3Rlcl9saXRlcmFsLCBkaWFnOjp3YXJuX2N4eDE0X2NvbXBhdF91c2luZ19hdHRyaWJ1dGVfbnMsIGRpYWc6Ondhcm5fY3h4MTdfY29tcGF0X211bHRpX3VzaW5nX2RlY2xhcmF0aW9uLCBkaWFnOjp3YXJuX2N4eDE3X2NvbXBhdF91c2luZ19kZWNsYXJhdGlvbl9wYWNrLCBkaWFnOjp3YXJuX2Zvcl9yYW5nZV9iZWdpbl9lbmRfdHlwZXNfZGlmZmVyLCAtMSwKICAgLyogRGlhZ0FycmF5MTAyICovIGRpYWc6Ondhcm5fY3h4MTRfY29tcGF0X25zX2VudW1fYXR0cmlidXRlLCBkaWFnOjp3YXJuX2N4eDE3X2hleF9saXRlcmFsLCAtMSwKQEAgLTkwLDU4MyArOTAsNTk0IEBACiAgIC8qIERpYWdBcnJheTExMiAqLyBkaWFnOjpleHRfYW5vbnltb3VzX3VuaW9uLCBkaWFnOjpleHRfYzExX2FsaWdubWVudCwgZGlhZzo6ZXh0X2MxMV9hbm9ueW1vdXNfc3RydWN0LCBkaWFnOjpleHRfYzExX2dlbmVyaWNfc2VsZWN0aW9uLCBkaWFnOjpleHRfYzExX25vcmV0dXJuLCBkaWFnOjpleHRfYzExX3N0YXRpY19hc3NlcnQsIC0xLAogICAvKiBEaWFnQXJyYXkxMTMgKi8gZGlhZzo6d2Fybl9jOTlfY29tcGF0X3VuaWNvZGVfaWQsIGRpYWc6Ondhcm5fYzk5X2NvbXBhdF91bmljb2RlX2xpdGVyYWwsIGRpYWc6Ondhcm5fb2xkX2ltcGxpY2l0bHlfdW5zaWduZWRfbG9uZywgLTEsCiAgIC8qIERpYWdBcnJheTExNCAqLyBkaWFnOjpleHRfYWdncmVnYXRlX2luaXRfbm90X2NvbnN0YW50LCBkaWFnOjpleHRfYzk5X2FycmF5X3VzYWdlLCBkaWFnOjpleHRfYzk5X2NvbXBvdW5kX2xpdGVyYWwsIGRpYWc6OmV4dF9jOTlfZmxleGlibGVfYXJyYXlfbWVtYmVyLCBkaWFnOjpleHRfYzk5X3ZhcmlhYmxlX2RlY2xfaW5fZm9yX2xvb3AsIGRpYWc6OmV4dF9jOTlfd2hpdGVzcGFjZV9yZXF1aXJlZF9hZnRlcl9tYWNyb19uYW1lLCBkaWFnOjpleHRfZGVzaWduYXRlZF9pbml0LCBkaWFnOjpleHRfZW1wdHlfZm5tYWNyb19hcmcsIGRpYWc6OmV4dF9lbnVtZXJhdG9yX2xpc3RfY29tbWFfYywgZGlhZzo6ZXh0X2hleF9jb25zdGFudF9pbnZhbGlkLCAtMSwKLSAgLyogRGlhZ0FycmF5MTE1ICovIGRpYWc6Ondhcm5fY2FzdF9hbGlnbiwgLTEsCi0gIC8qIERpYWdBcnJheTExNiAqLyBkaWFnOjp3YXJuX2Nhc3RfY2FsbGluZ19jb252LCAtMSwKLSAgLyogRGlhZ0FycmF5MTE3ICovIGRpYWc6Ondhcm5fY2FzdF9wb2ludGVyX2Zyb21fc2VsLCAtMSwKLSAgLyogRGlhZ0FycmF5MTE4ICovIGRpYWc6Ondhcm5fY2FzdF9xdWFsLCBkaWFnOjp3YXJuX2Nhc3RfcXVhbDIsIC0xLAotICAvKiBEaWFnQXJyYXkxMTkgKi8gZGlhZzo6ZXh0X2JhZF9jeHhfY2FzdF9xdWFsaWZpZXJzX2F3YXlfaW5jb2hlcmVudCwgLTEsCi0gIC8qIERpYWdBcnJheTEyMSAqLyBkaWFnOjp3YXJuX29tcF9zZWN0aW9uX2lzX2NoYXIsIGRpYWc6Ondhcm5fc3Vic2NyaXB0X2lzX2NoYXIsIC0xLAotICAvKiBEaWFnQXJyYXkxMjIgKi8gZGlhZzo6d2Fybl9kcnZfeWNfbXVsdGlwbGVfaW5wdXRzX2NsYW5nX2NsLCBkaWFnOjp3YXJuX2Rydl95Y3l1X2RpZmZlcmVudF9hcmdfY2xhbmdfY2wsIGRpYWc6Ondhcm5fZHJ2X3ljeXVfbm9fZmlfYXJnX2NsYW5nX2NsLCBkaWFnOjp3YXJuX3BwX2hkcnN0b3BfZmlsZW5hbWVfaWdub3JlZCwgZGlhZzo6d2Fybl9wcF9tYWNyb19kZWZfbWlzbWF0Y2hfd2l0aF9wY2gsIC0xLAotICAvKiBEaWFnQXJyYXkxMjMgKi8gZGlhZzo6d2Fybl9wYXNzX2NsYXNzX2FyZ190b192YXJhcmcsIC0xLAotICAvKiBEaWFnQXJyYXkxMjQgKi8gZGlhZzo6d2Fybl9jb21tYV9vcGVyYXRvciwgLTEsCi0gIC8qIERpYWdBcnJheTEyNSAqLyBkaWFnOjplc2NhcGVkX25ld2xpbmVfYmxvY2tfY29tbWVudF9lbmQsIGRpYWc6OmV4dF9saW5lX2NvbW1lbnQsIGRpYWc6OmV4dF9tdWx0aV9saW5lX2xpbmVfY29tbWVudCwgZGlhZzo6d2Fybl9uZXN0ZWRfYmxvY2tfY29tbWVudCwgLTEsCi0gIC8qIERpYWdBcnJheTEyNyAqLyBkaWFnOjpleHRfdHlwZWNoZWNrX2NvbXBhcmlzb25fb2ZfZGlzdGluY3RfcG9pbnRlcnMsIC0xLAotICAvKiBEaWFnQXJyYXkxMjggKi8gZGlhZzo6ZXh0X2NvbXBsZXhfY29tcG9uZW50X2luaXQsIC0xLAotICAvKiBEaWFnQXJyYXkxMjkgKi8gZGlhZzo6ZXh0X3R5cGVjaGVja19jb25kX3BvaW50ZXJfaW50ZWdlcl9taXNtYXRjaCwgLTEsCi0gIC8qIERpYWdBcnJheTEzMCAqLyBkaWFnOjp3YXJuX21heWJlX3VuaW5pdF92YXIsIC0xLAotICAvKiBEaWFnQXJyYXkxMzEgKi8gZGlhZzo6d2Fybl9tb2R1bGVfY29uZmlnX21hY3JvX3VuZGVmLCAtMSwKLSAgLyogRGlhZ0FycmF5MTMyICovIGRpYWc6Ondhcm5faW1wY2FzdF9pbnRlZ2VyX3ByZWNpc2lvbl9jb25zdGFudCwgLTEsCi0gIC8qIERpYWdBcnJheTEzMyAqLyBkaWFnOjp3YXJuX2xvZ2ljYWxfaW5zdGVhZF9vZl9iaXR3aXNlLCAtMSwKLSAgLyogRGlhZ0FycmF5MTM0ICovIGRpYWc6Ondhcm5fY3h4MTRfY29tcGF0X2NvbnN0ZXhwcl9ub3RfY29uc3QsIC0xLAotICAvKiBEaWFnQXJyYXkxMzUgKi8gZGlhZzo6d2Fybl9hdHRyX29uX3VuY29uc3VtYWJsZV9jbGFzcywgZGlhZzo6d2Fybl9sb29wX3N0YXRlX21pc21hdGNoLCBkaWFnOjp3YXJuX3BhcmFtX3JldHVybl90eXBlc3RhdGVfbWlzbWF0Y2gsIGRpYWc6Ondhcm5fcGFyYW1fdHlwZXN0YXRlX21pc21hdGNoLCBkaWFnOjp3YXJuX3JldHVybl90eXBlc3RhdGVfZm9yX3VuY29uc3VtYWJsZV90eXBlLCBkaWFnOjp3YXJuX3JldHVybl90eXBlc3RhdGVfbWlzbWF0Y2gsIGRpYWc6Ondhcm5fdXNlX2luX2ludmFsaWRfc3RhdGUsIGRpYWc6Ondhcm5fdXNlX29mX3RlbXBfaW5faW52YWxpZF9zdGF0ZSwgLTEsCi0gIC8qIERpYWdBcnJheTEzNiAqLyBkaWFnOjp3YXJuX2ltcGNhc3RfY29tcGxleF9zY2FsYXIsIGRpYWc6Ondhcm5faW1wY2FzdF92ZWN0b3Jfc2NhbGFyLCBkaWFnOjp3YXJuX29wZW5jbF9nZW5lcmljX2FkZHJlc3Nfc3BhY2VfYXJnLCBkaWFnOjp3YXJuX3RlbXBsYXRlX2FyZ19uZWdhdGl2ZSwgZGlhZzo6d2Fybl90ZW1wbGF0ZV9hcmdfdG9vX2xhcmdlLCAtMSwKLSAgLyogRGlhZ0FycmF5MTM5ICovIGRpYWc6Ondhcm5fY29yb3V0aW5lX3Byb21pc2VfdW5oYW5kbGVkX2V4Y2VwdGlvbl9yZXF1aXJlZF93aXRoX2V4Y2VwdGlvbnMsIC0xLAotICAvKiBEaWFnQXJyYXkxNDAgKi8gZGlhZzo6d2Fybl91bnJlYWNoYWJsZV9kZWZhdWx0LCAtMSwKLSAgLyogRGlhZ0FycmF5MTQyICovIGRpYWc6Ondhcm5fb2JqY19jZGlyZWN0aXZlX2Zvcm1hdF9zdHJpbmcsIC0xLAotICAvKiBEaWFnQXJyYXkxNDQgKi8gZGlhZzo6d2Fybl9hdHRyaWJ1dGVfYXJndW1lbnRfbl9uZWdhdGl2ZSwgZGlhZzo6d2Fybl9jdWRhX2F0dHJfbGFtYmRhX3Bvc2l0aW9uLCBkaWFnOjp3YXJuX2tlcm5faXNfaW5saW5lLCBkaWFnOjp3YXJuX2tlcm5faXNfbWV0aG9kLCBkaWFnOjp3YXJuX3ByYWdtYV91bnJvbGxfY3VkYV92YWx1ZV9pbl9wYXJlbnMsIC0xLAotICAvKiBEaWFnQXJyYXkxNDUgKi8gZGlhZzo6d2Fybl9kZWZhdWx0X2F0b21pY19jdXN0b21fZ2V0dGVyX3NldHRlciwgLTEsCi0gIC8qIERpYWdBcnJheTE0NiAqLyBkaWFnOjp3YXJuX2RhbmdsaW5nX3ZhcmlhYmxlLCBkaWFnOjp3YXJuX3Vuc3VwcG9ydGVkX2xpZmV0aW1lX2V4dGVuc2lvbiwgLTEsCi0gIC8qIERpYWdBcnJheTE0NyAqLyBkaWFnOjp3YXJuX2RhbmdsaW5nX2Vsc2UsIC0xLAotICAvKiBEaWFnQXJyYXkxNDggKi8gZGlhZzo6d2Fybl9iaW5kX3JlZl9tZW1iZXJfdG9fcGFyYW1ldGVyLCBkaWFnOjp3YXJuX2RhbmdsaW5nX21lbWJlciwgZGlhZzo6d2Fybl9pbml0X3B0cl9tZW1iZXJfdG9fcGFyYW1ldGVyX2FkZHIsIGRpYWc6Ondhcm5fbmV3X2RhbmdsaW5nX3JlZmVyZW5jZSwgLTEsCi0gIC8qIERpYWdBcnJheTE0OSAqLyBkaWFnOjp3YXJuX25ld19kYW5nbGluZ19pbml0aWFsaXplcl9saXN0LCAtMSwKLSAgLyogRGlhZ0FycmF5MTUwICovIGRpYWc6Ondhcm5fcHBfZGF0ZV90aW1lLCAtMSwKLSAgLyogRGlhZ0FycmF5MTUxICovIGRpYWc6Ondhcm5fZGVhbGxvY19pbl9jYXRlZ29yeSwgLTEsCi0gIC8qIERpYWdBcnJheTE1MiAqLyBkaWFnOjp3YXJuX2RlYnVnX2NvbXByZXNzaW9uX3VuYXZhaWxhYmxlLCAtMSwKLSAgLyogRGlhZ0FycmF5MTUzICovIGRpYWc6OmV4dF9taXhlZF9kZWNsc19jb2RlLCAtMSwKLSAgLyogRGlhZ0FycmF5MTU0ICovIGRpYWc6Ondhcm5fZGVmYXVsdGVkX21ldGhvZF9kZWxldGVkLCAtMSwKLSAgLyogRGlhZ0FycmF5MTU1ICovIGRpYWc6Ondhcm5fZGVsZWdhdGluZ19jdG9yX2N5Y2xlLCAtMSwKLSAgLyogRGlhZ0FycmF5MTU2ICovIGRpYWc6OmV4dF9kZWxldGVfdm9pZF9wdHJfb3BlcmFuZCwgZGlhZzo6d2Fybl9kZWxldGVfaW5jb21wbGV0ZSwgLTEsCi0gIC8qIERpYWdBcnJheTE1NyAqLyBkaWFnOjp3YXJuX2RlbGV0ZV9hYnN0cmFjdF9ub25fdmlydHVhbF9kdG9yLCBkaWFnOjp3YXJuX2RlbGV0ZV9ub25fdmlydHVhbF9kdG9yLCAtMSwKLSAgLyogRGlhZ0FycmF5MTU4ICovIGRpYWc6Ondhcm5fTzRfaXNfTzMsIGRpYWc6Ondhcm5fYWNjZXNzX2RlY2xfZGVwcmVjYXRlZCwgZGlhZzo6d2Fybl9kZXByZWNhdGVkX2NvcHlfb3BlcmF0aW9uLCBkaWFnOjp3YXJuX2RlcHJlY2F0ZWRfcmVkdW5kYW50X2NvbnN0ZXhwcl9zdGF0aWNfZGVmLCBkaWFnOjp3YXJuX2Rydl9kZXByZWNhdGVkX2FyZywgZGlhZzo6d2Fybl9kcnZfdHJlYXRpbmdfaW5wdXRfYXNfY3h4LCBkaWFnOjp3YXJuX29wdGlvbl9pbnZhbGlkX29jbF92ZXJzaW9uLCBkaWFnOjp3YXJuX3ZlY3Rvcl9sb25nX2RlY2xfc3BlY19jb21iaW5hdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTE1OSAqLyBkaWFnOjp3YXJuX3ZlY3Rvcl9tb2RlX2RlcHJlY2F0ZWQsIC0xLAotICAvKiBEaWFnQXJyYXkxNjAgKi8gZGlhZzo6d2Fybl9hdGxfdXVpZF9kZXByZWNhdGVkLCBkaWFnOjp3YXJuX2NzdHlsZV9wYXJhbSwgZGlhZzo6d2Fybl9kZXByZWNhdGVkLCBkaWFnOjp3YXJuX2RlcHJlY2F0ZWRfZndkY2xhc3NfbWVzc2FnZSwgZGlhZzo6d2Fybl9kZXByZWNhdGVkX21lc3NhZ2UsIGRpYWc6Ondhcm5fcHJvcGVydHlfbWV0aG9kX2RlcHJlY2F0ZWQsIC0xLAotICAvKiBEaWFnQXJyYXkxNjEgKi8gZGlhZzo6d2Fybl9leGNlcHRpb25fc3BlY19kZXByZWNhdGVkLCAtMSwKLSAgLyogRGlhZ0FycmF5MTYyICovIGRpYWc6Ondhcm5fZGVwcmVjYXRlZF9kZWYsIGRpYWc6Ondhcm5fdW5hdmFpbGFibGVfZGVmLCAtMSwKLSAgLyogRGlhZ0FycmF5MTYzICovIGRpYWc6Ondhcm5faW5jcmVtZW50X2Jvb2wsIC0xLAotICAvKiBEaWFnQXJyYXkxNjQgKi8gZGlhZzo6d2Fybl9vYmpjX2lzYV9hc3NpZ24sIGRpYWc6Ondhcm5fb2JqY19pc2FfdXNlLCAtMSwKLSAgLyogRGlhZ0FycmF5MTY1ICovIGRpYWc6Ondhcm5fb2JqY19wb2ludGVyX21hc2tpbmcsIC0xLAotICAvKiBEaWFnQXJyYXkxNjYgKi8gZGlhZzo6d2Fybl9vYmpjX3BvaW50ZXJfbWFza2luZ19wZXJmb3JtU2VsZWN0b3IsIC0xLAotICAvKiBEaWFnQXJyYXkxNjcgKi8gZGlhZzo6d2Fybl9kZXByZWNhdGVkX3JlZ2lzdGVyLCAtMSwKLSAgLyogRGlhZ0FycmF5MTY4ICovIGRpYWc6Ondhcm5fZGVwcmVjYXRlZF90aGlzX2NhcHR1cmUsIC0xLAotICAvKiBEaWFnQXJyYXkxNzAgKi8gZGlhZzo6d2Fybl9kaXJlY3RfaXZhcl9hY2Nlc3MsIC0xLAotICAvKiBEaWFnQXJyYXkxNzEgKi8gZGlhZzo6cHBfZGlzYWJsZWRfbWFjcm9fZXhwYW5zaW9uLCAtMSwKLSAgLyogRGlhZ0FycmF5MTc0ICovIGRpYWc6Ondhcm5fY29uZmxpY3RpbmdfcGFyYW1fbW9kaWZpZXJzLCBkaWFnOjp3YXJuX2NvbmZsaWN0aW5nX3JldF90eXBlX21vZGlmaWVycywgLTEsCi0gIC8qIERpYWdBcnJheTE3NiAqLyBkaWFnOjp3YXJuX3JlbWFpbmRlcl9kaXZpc2lvbl9ieV96ZXJvLCAtMSwKLSAgLyogRGlhZ0FycmF5MTc3ICovIGRpYWc6Ondhcm5fYXR0cmlidXRlX2RsbF9yZWRlY2xhcmF0aW9uLCAtMSwKLSAgLyogRGlhZ0FycmF5MTc4ICovIGRpYWc6Ondhcm5fYXR0cmlidXRlX2RsbGV4cG9ydF9leHBsaWNpdF9pbnN0YW50aWF0aW9uX2RlY2wsIC0xLAotICAvKiBEaWFnQXJyYXkxNzkgKi8gZGlhZzo6d2Fybl9hdHRyaWJ1dGVfZGxsaW1wb3J0X3N0YXRpY19maWVsZF9kZWZpbml0aW9uLCAtMSwKLSAgLyogRGlhZ0FycmF5MTgwICovIGRpYWc6Ondhcm5fZG9jX2FwaV9jb250YWluZXJfZGVjbF9taXNtYXRjaCwgZGlhZzo6d2Fybl9kb2NfYmxvY2tfY29tbWFuZF9kdXBsaWNhdGUsIGRpYWc6Ondhcm5fZG9jX2Jsb2NrX2NvbW1hbmRfZW1wdHlfcGFyYWdyYXBoLCBkaWFnOjp3YXJuX2RvY19jb250YWluZXJfZGVjbF9taXNtYXRjaCwgZGlhZzo6d2Fybl9kb2NfZnVuY3Rpb25fbWV0aG9kX2RlY2xfbWlzbWF0Y2gsIGRpYWc6Ondhcm5fZG9jX2h0bWxfc3RhcnRfdGFnX2V4cGVjdGVkX2lkZW50X29yX2dyZWF0ZXIsIGRpYWc6Ondhcm5fZG9jX2h0bWxfc3RhcnRfdGFnX2V4cGVjdGVkX3F1b3RlZF9zdHJpbmcsIGRpYWc6Ondhcm5fZG9jX3BhcmFtX2R1cGxpY2F0ZSwgZGlhZzo6d2Fybl9kb2NfcGFyYW1faW52YWxpZF9kaXJlY3Rpb24sIGRpYWc6Ondhcm5fZG9jX3BhcmFtX25vdF9hdHRhY2hlZF90b19hX2Z1bmN0aW9uX2RlY2wsIGRpYWc6Ondhcm5fZG9jX3BhcmFtX25vdF9mb3VuZCwgZGlhZzo6d2Fybl9kb2NfcmV0dXJuc19hdHRhY2hlZF90b19hX3ZvaWRfZnVuY3Rpb24sIGRpYWc6Ondhcm5fZG9jX3JldHVybnNfbm90X2F0dGFjaGVkX3RvX2FfZnVuY3Rpb25fZGVjbCwgZGlhZzo6d2Fybl9kb2NfdHBhcmFtX2R1cGxpY2F0ZSwgZGlhZzo6d2Fybl9kb2NfdHBhcmFtX25vdF9hdHRhY2hlZF90b19hX3RlbXBsYXRlX2RlY2wsIGRpYWc6Ondhcm5fZG9jX3RwYXJhbV9ub3RfZm91bmQsIGRpYWc6Ondhcm5fbm90X2FfZG94eWdlbl90cmFpbGluZ19tZW1iZXJfY29tbWVudCwgZGlhZzo6d2Fybl92ZXJiYXRpbV9ibG9ja19lbmRfd2l0aG91dF9zdGFydCwgLTEsCi0gIC8qIERpYWdBcnJheTE4MSAqLyBkaWFnOjp3YXJuX2RvY19kZXByZWNhdGVkX25vdF9zeW5jLCAtMSwKLSAgLyogRGlhZ0FycmF5MTgyICovIGRpYWc6Ondhcm5fZG9jX2h0bWxfZW5kX2ZvcmJpZGRlbiwgZGlhZzo6d2Fybl9kb2NfaHRtbF9lbmRfdW5iYWxhbmNlZCwgZGlhZzo6d2Fybl9kb2NfaHRtbF9taXNzaW5nX2VuZF90YWcsIGRpYWc6Ondhcm5fZG9jX2h0bWxfc3RhcnRfZW5kX21pc21hdGNoLCAtMSwKLSAgLyogRGlhZ0FycmF5MTgzICovIGRpYWc6Ondhcm5fZG9jX3BhcmFtX3NwYWNlc19pbl9kaXJlY3Rpb24sIC0xLAotICAvKiBEaWFnQXJyYXkxODQgKi8gZGlhZzo6d2Fybl9jb3JyZWN0X2NvbW1lbnRfY29tbWFuZF9uYW1lLCBkaWFnOjp3YXJuX3Vua25vd25fY29tbWVudF9jb21tYW5kX25hbWUsIC0xLAotICAvKiBEaWFnQXJyYXkxODUgKi8gZGlhZzo6ZXh0X2RvbGxhcl9pbl9pZGVudGlmaWVyLCAtMSwKLSAgLyogRGlhZ0FycmF5MTg2ICovIGRpYWc6Ondhcm5faW1wY2FzdF9kb3VibGVfcHJvbW90aW9uLCAtMSwKLSAgLyogRGlhZ0FycmF5MTg3ICovIGRpYWc6OmV4dF9kdXBsaWNhdGVfZGVjbHNwZWMsIGRpYWc6OmV4dF93YXJuX2R1cGxpY2F0ZV9kZWNsc3BlYywgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfYWRkcmVzc19tdWx0aXBsZV9pZGVudGljYWxfcXVhbGlmaWVycywgZGlhZzo6d2Fybl9kdXBsaWNhdGVfZGVjbHNwZWMsIC0xLAotICAvKiBEaWFnQXJyYXkxODggKi8gZGlhZzo6d2Fybl9kdXBsaWNhdGVfZW51bV92YWx1ZXMsIC0xLAotICAvKiBEaWFnQXJyYXkxODkgKi8gZGlhZzo6d2Fybl9tZXRob2RfcGFyYW1fZGVjbGFyYXRpb24sIC0xLAotICAvKiBEaWFnQXJyYXkxOTAgKi8gZGlhZzo6d2Fybl9kdXBsaWNhdGVfbWV0aG9kX2RlY2wsIC0xLAotICAvKiBEaWFnQXJyYXkxOTEgKi8gZGlhZzo6d2Fybl9kdXBsaWNhdGVfcHJvdG9jb2xfZGVmLCAtMSwKLSAgLyogRGlhZ0FycmF5MTkyICovIGRpYWc6Ondhcm5fZHluX2NsYXNzX21lbWFjY2VzcywgLTEsCi0gIC8qIERpYWdBcnJheTE5MyAqLyBkaWFnOjpleHRfZHluYW1pY19leGNlcHRpb25fc3BlYywgLTEsCi0gIC8qIERpYWdBcnJheTE5NSAqLyBkaWFnOjpleHRfZW1iZWRkZWRfZGlyZWN0aXZlLCAtMSwKLSAgLyogRGlhZ0FycmF5MTk2ICovIGRpYWc6Ondhcm5fZW1wdHlfZm9yX2JvZHksIGRpYWc6Ondhcm5fZW1wdHlfaWZfYm9keSwgZGlhZzo6d2Fybl9lbXB0eV9yYW5nZV9iYXNlZF9mb3JfYm9keSwgZGlhZzo6d2Fybl9lbXB0eV9zd2l0Y2hfYm9keSwgZGlhZzo6d2Fybl9lbXB0eV93aGlsZV9ib2R5LCAtMSwKLSAgLyogRGlhZ0FycmF5MTk3ICovIGRpYWc6OmV4dF9kZWNvbXBfZGVjbF9lbXB0eSwgLTEsCi0gIC8qIERpYWdBcnJheTE5OCAqLyBkaWFnOjpleHRfZW1wdHlfdHJhbnNsYXRpb25fdW5pdCwgLTEsCi0gIC8qIERpYWdBcnJheTE5OSAqLyBkaWFnOjp3YXJuX2luY29tcGxldGVfZW5jb2RlZF90eXBlLCAtMSwKLSAgLyogRGlhZ0FycmF5MjAxICovIGRpYWc6Ondhcm5fY29tcGFyaXNvbl9vZl9taXhlZF9lbnVtX3R5cGVzLCAtMSwKLSAgLyogRGlhZ0FycmF5MjAyICovIGRpYWc6Ondhcm5fY29tcGFyaXNvbl9vZl9taXhlZF9lbnVtX3R5cGVzX3N3aXRjaCwgLTEsCi0gIC8qIERpYWdBcnJheTIwMyAqLyBkaWFnOjp3YXJuX2ltcGNhc3RfZGlmZmVyZW50X2VudW1fdHlwZXMsIC0xLAotICAvKiBEaWFnQXJyYXkyMDQgKi8gZGlhZzo6ZXh0X2VudW1fdG9vX2xhcmdlLCBkaWFnOjpleHRfZW51bWVyYXRvcl9pbmNyZW1lbnRfdG9vX2xhcmdlLCAtMSwKLSAgLyogRGlhZ0FycmF5MjA1ICovIGRpYWc6Ondhcm5fY2R0b3JfZnVuY3Rpb25fdHJ5X2hhbmRsZXJfbWVtX2V4cHIsIGRpYWc6Ondhcm5fZXhjZXB0aW9uX2NhdWdodF9ieV9lYXJsaWVyX2hhbmRsZXIsIGRpYWc6Ondhcm5fdGhyb3dfaW5fbm9leGNlcHRfZnVuYywgLTEsCi0gIC8qIERpYWdBcnJheTIwNiAqLyBkaWFnOjp3YXJuX2V4aXRfdGltZV9kZXN0cnVjdG9yLCAtMSwKLSAgLyogRGlhZ0FycmF5MjA3ICovIGRpYWc6Ondhcm5fZGVmaW5lZF9pbl9mdW5jdGlvbl90eXBlX21hY3JvLCBkaWFnOjp3YXJuX2RlZmluZWRfaW5fb2JqZWN0X3R5cGVfbWFjcm8sIC0xLAotICAvKiBEaWFnQXJyYXkyMDggKi8gZGlhZzo6d2Fybl9kcnZfZXhwZXJpbWVudGFsX2lzZWxfaW5jb21wbGV0ZSwgZGlhZzo6d2Fybl9kcnZfZXhwZXJpbWVudGFsX2lzZWxfaW5jb21wbGV0ZV9vcHQsIC0xLAotICAvKiBEaWFnQXJyYXkyMDkgKi8gZGlhZzo6d2Fybl9kaXJlY3RfaW5pdGlhbGl6ZV9jYWxsLCBkaWFnOjp3YXJuX2RpcmVjdF9zdXBlcl9pbml0aWFsaXplX2NhbGwsIC0xLAotICAvKiBEaWFnQXJyYXkyMTAgKi8gZGlhZzo6d2Fybl9hcmNfc3Ryb25nX3BvaW50ZXJfb2JqY19wb2ludGVyLCAtMSwKLSAgLyogRGlhZ0FycmF5MjExICovIGRpYWc6Ondhcm5femVyb19zaXplX3N0cnVjdF91bmlvbl9pbl9leHRlcm5fYywgLTEsCi0gIC8qIERpYWdBcnJheTIxMiAqLyBkaWFnOjp3YXJuX2V4dGVybl9pbml0LCAtMSwKLSAgLyogRGlhZ0FycmF5MjEzICovIGRpYWc6Ondhcm5fYXJtX2ludGVycnVwdF9jYWxsaW5nX2NvbnZlbnRpb24sIC0xLAotICAvKiBEaWFnQXJyYXkyMTQgKi8gZGlhZzo6d2Fybl9uYW1lc3BhY2VfbWVtYmVyX2V4dHJhX3F1YWxpZmljYXRpb24sIC0xLAotICAvKiBEaWFnQXJyYXkyMTUgKi8gZGlhZzo6ZXh0X2V4dHJhX3NlbWksIGRpYWc6Ondhcm5fZXh0cmFfc2VtaV9hZnRlcl9tZW1fZm5fZGVmLCAtMSwKLSAgLyogRGlhZ0FycmF5MjE2ICovIGRpYWc6OmV4dF9wcF9leHRyYV90b2tlbnNfYXRfZW9sLCBkaWFnOjp3YXJuX29tcF9leHRyYV90b2tlbnNfYXRfZW9sLCAtMSwKLSAgLyogRGlhZ0FycmF5MjE3ICovIGRpYWc6Ondhcm5fZHJ2X2ludm9raW5nX2ZhbGxiYWNrLCAtMSwKLSAgLyogRGlhZ0FycmF5MjE4ICovIGRpYWc6OmV4dF9jbGFuZ19jX2VudW1fZml4ZWRfdW5kZXJseWluZ190eXBlLCAtMSwKLSAgLyogRGlhZ0FycmF5MjE5ICovIGRpYWc6Ondhcm5fZmxhZ19lbnVtX2NvbnN0YW50X291dF9vZl9yYW5nZSwgLTEsCi0gIC8qIERpYWdBcnJheTIyMCAqLyBkaWFnOjpleHRfZmxleGlibGVfYXJyYXlfaW5fYXJyYXksIGRpYWc6OmV4dF9mbGV4aWJsZV9hcnJheV9pbl9zdHJ1Y3QsIC0xLAotICAvKiBEaWFnQXJyYXkyMjEgKi8gZGlhZzo6d2Fybl9pbXBjYXN0X2Zsb2F0X2ludGVnZXIsIC0xLAotICAvKiBEaWFnQXJyYXkyMjIgKi8gZGlhZzo6d2Fybl9mbG9hdGluZ3BvaW50X2VxLCAtMSwKLSAgLyogRGlhZ0FycmF5MjIzICovIGRpYWc6Ondhcm5faW1wY2FzdF9mbG9hdF90b19pbnRlZ2VyLCBkaWFnOjp3YXJuX2ltcGNhc3RfZmxvYXRfdG9faW50ZWdlcl9vdXRfb2ZfcmFuZ2UsIC0xLAotICAvKiBEaWFnQXJyYXkyMjQgKi8gZGlhZzo6d2Fybl9pbXBjYXN0X2Zsb2F0X3RvX2ludGVnZXJfemVybywgLTEsCi0gIC8qIERpYWdBcnJheTIyNSAqLyBkaWFnOjp3YXJuX3JlZHVuZGFudF9sb29wX2l0ZXJhdGlvbiwgZGlhZzo6d2Fybl92YXJpYWJsZXNfbm90X2luX2xvb3BfYm9keSwgLTEsCi0gIC8qIERpYWdBcnJheTIyNiAqLyBkaWFnOjp3YXJuX2Zvcm1hdF9QX25vX3ByZWNpc2lvbiwgZGlhZzo6d2Fybl9mb3JtYXRfYXJndW1lbnRfbmVlZHNfY2FzdCwgZGlhZzo6d2Fybl9mb3JtYXRfY29udmVyc2lvbl9hcmd1bWVudF90eXBlX21pc21hdGNoLCBkaWFnOjp3YXJuX2Zvcm1hdF9pbnZhbGlkX2Fubm90YXRpb24sIGRpYWc6Ondhcm5fZm9ybWF0X2ludmFsaWRfcG9zaXRpb25hbF9zcGVjaWZpZXIsIGRpYWc6Ondhcm5fZm9ybWF0X21peF9wb3NpdGlvbmFsX25vbnBvc2l0aW9uYWxfYXJncywgZGlhZzo6d2Fybl9mb3JtYXRfbm9uc2Vuc2ljYWxfbGVuZ3RoLCBkaWFnOjp3YXJuX2Zvcm1hdF9zdHJpbmdfaXNfd2lkZV9saXRlcmFsLCBkaWFnOjp3YXJuX2Zvcm1hdF96ZXJvX3Bvc2l0aW9uYWxfc3BlY2lmaWVyLCBkaWFnOjp3YXJuX21pc3NpbmdfZm9ybWF0X3N0cmluZywgZGlhZzo6d2Fybl9wcmludGZfT2JqQ2ZsYWdzX3dpdGhvdXRfT2JqQ0NvbnZlcnNpb24sIGRpYWc6Ondhcm5fcHJpbnRmX2FzdGVyaXNrX21pc3NpbmdfYXJnLCBkaWFnOjp3YXJuX3ByaW50Zl9hc3Rlcmlza193cm9uZ190eXBlLCBkaWFnOjp3YXJuX3ByaW50Zl9lbXB0eV9vYmpjX2ZsYWcsIGRpYWc6Ondhcm5fcHJpbnRmX2Zvcm1hdF9zdHJpbmdfY29udGFpbnNfbnVsbF9jaGFyLCBkaWFnOjp3YXJuX3ByaW50Zl9mb3JtYXRfc3RyaW5nX25vdF9udWxsX3Rlcm1pbmF0ZWQsIGRpYWc6Ondhcm5fcHJpbnRmX2lnbm9yZWRfZmxhZywgZGlhZzo6d2Fybl9wcmludGZfaW5jb21wbGV0ZV9zcGVjaWZpZXIsIGRpYWc6Ondhcm5fcHJpbnRmX2luc3VmZmljaWVudF9kYXRhX2FyZ3MsIGRpYWc6Ondhcm5fcHJpbnRmX2ludmFsaWRfb2JqY19mbGFnLCBkaWFnOjp3YXJuX3ByaW50Zl9ub25zZW5zaWNhbF9mbGFnLCBkaWFnOjp3YXJuX3ByaW50Zl9ub25zZW5zaWNhbF9vcHRpb25hbF9hbW91bnQsIGRpYWc6Ondhcm5fcHJpbnRmX3Bvc2l0aW9uYWxfYXJnX2V4Y2VlZHNfZGF0YV9hcmdzLCBkaWFnOjp3YXJuX3NjYW5mX25vbnplcm9fd2lkdGgsIGRpYWc6Ondhcm5fc2NhbmZfc2Nhbmxpc3RfaW5jb21wbGV0ZSwgLTEsCi0gIC8qIERpYWdBcnJheTIyNyAqLyBkaWFnOjp3YXJuX3ByaW50Zl9kYXRhX2FyZ19ub3RfdXNlZCwgLTEsCi0gIC8qIERpYWdBcnJheTIyOCAqLyBkaWFnOjp3YXJuX2Zvcm1hdF9pbnZhbGlkX2NvbnZlcnNpb24sIC0xLAotICAvKiBEaWFnQXJyYXkyMjkgKi8gZGlhZzo6d2Fybl9mb3JtYXRfbm9uX3N0YW5kYXJkLCBkaWFnOjp3YXJuX2Zvcm1hdF9ub25fc3RhbmRhcmRfY29udmVyc2lvbl9zcGVjLCBkaWFnOjp3YXJuX2Zvcm1hdF9ub25fc3RhbmRhcmRfcG9zaXRpb25hbF9hcmcsIC0xLAotICAvKiBEaWFnQXJyYXkyMzAgKi8gZGlhZzo6d2Fybl9mb3JtYXRfbm9ubGl0ZXJhbCwgLTEsCi0gIC8qIERpYWdBcnJheTIzMSAqLyBkaWFnOjp3YXJuX2Zvcm1hdF9hcmd1bWVudF9uZWVkc19jYXN0X3BlZGFudGljLCBkaWFnOjp3YXJuX2Zvcm1hdF9jb252ZXJzaW9uX2FyZ3VtZW50X3R5cGVfbWlzbWF0Y2hfcGVkYW50aWMsIC0xLAotICAvKiBEaWFnQXJyYXkyMzIgKi8gZGlhZzo6d2Fybl9mb3JtYXRfbm9ubGl0ZXJhbF9ub2FyZ3MsIC0xLAotICAvKiBEaWFnQXJyYXkyMzQgKi8gZGlhZzo6d2Fybl9lbXB0eV9mb3JtYXRfc3RyaW5nLCAtMSwKLSAgLyogRGlhZ0FycmF5MjM2ICovIGRpYWc6OmV4dF9mb3VyX2NoYXJfY2hhcmFjdGVyX2xpdGVyYWwsIC0xLAotICAvKiBEaWFnQXJyYXkyMzcgKi8gZGlhZzo6d2Fybl9mZV9iYWNrZW5kX2ZyYW1lX2xhcmdlcl90aGFuLCBkaWFnOjp3YXJuX2ZlX2ZyYW1lX2xhcmdlcl90aGFuLCAtMSwKLSAgLyogRGlhZ0FycmF5MjM4ICovIGRpYWc6Ondhcm5fZnJhbWV3b3JrX2luY2x1ZGVfcHJpdmF0ZV9mcm9tX3B1YmxpYywgLTEsCi0gIC8qIERpYWdBcnJheTIzOSAqLyBkaWFnOjp3YXJuX2Z1bmN0aW9uX2RlZl9pbl9vYmpjX2NvbnRhaW5lciwgLTEsCi0gIC8qIERpYWdBcnJheTI0MCAqLyBkaWFnOjp3YXJuX2Rpc3BhdGNoX2JvZHlfaWdub3JlZCwgZGlhZzo6d2Fybl9tdWx0aXZlcnNpb25fZHVwbGljYXRlX2VudHJpZXMsIC0xLAotICAvKiBEaWFnQXJyYXkyNDIgKi8gZGlhZzo6ZXh0X2NsYW5nX2RpYWdub3NlX2lmLCBkaWFnOjpleHRfY2xhbmdfZW5hYmxlX2lmLCBkaWFnOjpleHRfd2Fybl9nbnVfZmluYWwsIGRpYWc6Ondhcm5fYXR0cmlidXRlX29uX2Z1bmN0aW9uX2RlZmluaXRpb24sIGRpYWc6Ondhcm5fYnJlYWtfYmluZHNfdG9fc3dpdGNoLCBkaWFnOjp3YXJuX2NsZWFudXBfZXh0LCBkaWFnOjp3YXJuX2djY19hdHRyaWJ1dGVfbG9jYXRpb24sIGRpYWc6Ondhcm5fZ2NjX2lnbm9yZXNfdHlwZV9hdHRyLCBkaWFnOjp3YXJuX2djY192YXJpYWJsZV9kZWNsX2luX2Zvcl9sb29wLCBkaWFnOjp3YXJuX2xvb3BfY3RybF9iaW5kc190b19pbm5lciwgLTEsCi0gIC8qIERpYWdBcnJheTI0MyAqLyBkaWFnOjp3YXJuX2dsb2JhbF9jb25zdHJ1Y3RvciwgZGlhZzo6d2Fybl9nbG9iYWxfZGVzdHJ1Y3RvciwgLTEsCi0gIC8qIERpYWdBcnJheTI0NSAqLyBkaWFnOjpleHRfYWxpZ25vZl9leHByLCAtMSwKLSAgLyogRGlhZ0FycmF5MjQ2ICovIGRpYWc6OmV4dF9nbnVfYW5vbnltb3VzX3N0cnVjdCwgLTEsCi0gIC8qIERpYWdBcnJheTI0NyAqLyBkaWFnOjpleHRfYXJyYXlfaW5pdF9wYXJlbnMsIC0xLAotICAvKiBEaWFnQXJyYXkyNDggKi8gZGlhZzo6ZXh0X2F1dG9fdHlwZSwgLTEsCi0gIC8qIERpYWdBcnJheTI0OSAqLyBkaWFnOjpleHRfYmluYXJ5X2xpdGVyYWwsIC0xLAotICAvKiBEaWFnQXJyYXkyNTAgKi8gZGlhZzo6ZXh0X2dudV9jYXNlX3JhbmdlLCAtMSwKLSAgLyogRGlhZ0FycmF5MjUxICovIGRpYWc6OmV4dF9pbnRlZ2VyX2NvbXBsZXgsIC0xLAotICAvKiBEaWFnQXJyYXkyNTIgKi8gZGlhZzo6ZXh0X2FycmF5X2luaXRfY29weSwgLTEsCi0gIC8qIERpYWdBcnJheTI1MyAqLyBkaWFnOjpleHRfZ251X2NvbmRpdGlvbmFsX2V4cHIsIC0xLAotICAvKiBEaWFnQXJyYXkyNTQgKi8gZGlhZzo6ZXh0X2dudV9hcnJheV9yYW5nZSwgZGlhZzo6ZXh0X2dudV9taXNzaW5nX2VxdWFsX2Rlc2lnbmF0b3IsIGRpYWc6OmV4dF9nbnVfb2xkX3N0eWxlX2ZpZWxkX2Rlc2lnbmF0b3IsIC0xLAotICAvKiBEaWFnQXJyYXkyNTUgKi8gZGlhZzo6ZXh0X2dudV9lbXB0eV9pbml0aWFsaXplciwgLTEsCi0gIC8qIERpYWdBcnJheTI1NiAqLyBkaWFnOjpleHRfZW1wdHlfc3RydWN0X3VuaW9uLCBkaWFnOjpleHRfZmxleGlibGVfYXJyYXlfZW1wdHlfYWdncmVnYXRlX2dudSwgZGlhZzo6ZXh0X25vX25hbWVkX21lbWJlcnNfaW5fc3RydWN0X3VuaW9uLCAtMSwKLSAgLyogRGlhZ0FycmF5MjU3ICovIGRpYWc6OmV4dF9mbGV4aWJsZV9hcnJheV9pbml0LCAtMSwKLSAgLyogRGlhZ0FycmF5MjU4ICovIGRpYWc6OmV4dF9mbGV4aWJsZV9hcnJheV91bmlvbl9nbnUsIC0xLAotICAvKiBEaWFnQXJyYXkyNTkgKi8gZGlhZzo6ZXh0X2V4cHJfbm90X2ljZSwgZGlhZzo6ZXh0X2luX2NsYXNzX2luaXRpYWxpemVyX25vbl9jb25zdGFudCwgZGlhZzo6ZXh0X3ZsYV9mb2xkZWRfdG9fY29uc3RhbnQsIC0xLAotICAvKiBEaWFnQXJyYXkyNjAgKi8gZGlhZzo6ZXh0X2ltYWdpbmFyeV9jb25zdGFudCwgLTEsCi0gIC8qIERpYWdBcnJheTI2MSAqLyBkaWFnOjpleHRfcHBfaW5jbHVkZV9uZXh0X2RpcmVjdGl2ZSwgLTEsCi0gIC8qIERpYWdBcnJheTI2MiAqLyBkaWFnOjpleHRfZ251X2FkZHJlc3Nfb2ZfbGFiZWwsIGRpYWc6OmV4dF9nbnVfaW5kaXJlY3RfZ290bywgLTEsCi0gIC8qIERpYWdBcnJheTI2MyAqLyBkaWFnOjpleHRfZm9yd2FyZF9yZWZfZW51bV9kZWYsIC0xLAotICAvKiBEaWFnQXJyYXkyNjQgKi8gZGlhZzo6ZXh0X2dudV9zdGF0ZW1lbnRfZXhwciwgLTEsCi0gIC8qIERpYWdBcnJheTI2NSAqLyBkaWFnOjpleHRfaW5fY2xhc3NfaW5pdGlhbGl6ZXJfZmxvYXRfdHlwZSwgLTEsCi0gIC8qIERpYWdBcnJheTI2NiAqLyBkaWFnOjpleHRfc3RyaW5nX2xpdGVyYWxfb3BlcmF0b3JfdGVtcGxhdGUsIC0xLAotICAvKiBEaWFnQXJyYXkyNjcgKi8gZGlhZzo6ZXh0X3R5cGVjaGVja19jYXN0X3RvX3VuaW9uLCAtMSwKLSAgLyogRGlhZ0FycmF5MjY4ICovIGRpYWc6OmV4dF92YXJpYWJsZV9zaXplZF90eXBlX2luX3N0cnVjdCwgLTEsCi0gIC8qIERpYWdBcnJheTI2OSAqLyBkaWFnOjpleHRfcHBfbGluZV96ZXJvLCAtMSwKLSAgLyogRGlhZ0FycmF5MjcwICovIGRpYWc6OmV4dF9taXNzaW5nX3ZhcmFyZ3NfYXJnLCBkaWFnOjpleHRfcGFzdGVfY29tbWEsIC0xLAotICAvKiBEaWFnQXJyYXkyNzEgKi8gZGlhZzo6d2Fybl9oZWFkZXJfZ3VhcmQsIC0xLAotICAvKiBEaWFnQXJyYXkyNzIgKi8gZGlhZzo6d2Fybl91c2luZ19kaXJlY3RpdmVfaW5faGVhZGVyLCAtMSwKLSAgLyogRGlhZ0FycmF5MjczICovIGRpYWc6Ondhcm5fY29uZGl0aW9uX2lzX2lkaW9tYXRpY19hc3NpZ25tZW50LCAtMSwKLSAgLyogRGlhZ0FycmF5Mjc0ICovIGRpYWc6OmV4dF9jYW5ub3RfdXNlX3RyaXZpYWxfYWJpLCBkaWFnOjp3YXJuX2FsaWFzX3RvX3dlYWtfYWxpYXMsIGRpYWc6Ondhcm5fYWxpYXNfd2l0aF9zZWN0aW9uLCBkaWFnOjp3YXJuX2F0dHJfYWJpX3RhZ19uYW1lc3BhY2UsIGRpYWc6Ondhcm5fYXR0cmlidXRlX2FmdGVyX2RlZmluaXRpb25faWdub3JlZCwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfaWJvdXRsZXQsIGRpYWc6Ondhcm5fYXR0cmlidXRlX2lnbm9yZWQsIGRpYWc6Ondhcm5fYXR0cmlidXRlX2lnbm9yZWRfZm9yX2ZpZWxkX29mX3R5cGUsIGRpYWc6Ondhcm5fYXR0cmlidXRlX2lnbm9yZWRfb25faW5saW5lLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9pbnZhbGlkX29uX2RlZmluaXRpb24sIGRpYWc6Ondhcm5fYXR0cmlidXRlX25vX2RlY2wsIGRpYWc6Ondhcm5fYXR0cmlidXRlX25vbm51bGxfbm9fcG9pbnRlcnMsIGRpYWc6Ondhcm5fYXR0cmlidXRlX25vbm51bGxfcGFybV9ub19hcmdzLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9ub3Rfb25fZGVjbCwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfcG9pbnRlcl9vcl9yZWZlcmVuY2Vfb25seSwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfcG9pbnRlcnNfb25seSwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfcHJlY2VkZV9kZWZpbml0aW9uLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9yZXR1cm5fcG9pbnRlcnNfb25seSwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfcmV0dXJuX3BvaW50ZXJzX3JlZnNfb25seSwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfc2VudGluZWxfbmFtZWRfYXJndW1lbnRzLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9zZW50aW5lbF9ub3RfdmFyaWFkaWMsIGRpYWc6Ondhcm5fYXR0cmlidXRlX3R5cGVfbm90X3N1cHBvcnRlZCwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfdW5rbm93bl92aXNpYmlsaXR5LCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV92b2lkX2Z1bmN0aW9uX21ldGhvZCwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfd2Vha19vbl9maWVsZCwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfd2Vha19vbl9sb2NhbCwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfd3JvbmdfZGVjbF90eXBlLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV93cm9uZ19kZWNsX3R5cGVfc3RyLCBkaWFnOjp3YXJuX2Jsb2NrX2xpdGVyYWxfYXR0cmlidXRlc19vbl9vbWl0dGVkX3JldHVybl90eXBlLCBkaWFnOjp3YXJuX2Njb252X2lnbm9yZWQsIGRpYWc6Ondhcm5fY2NvbnZfc3RydWN0b3JzLCBkaWFnOjp3YXJuX2Njb252X3ZhcmFyZ3MsIGRpYWc6Ondhcm5fY3h4MTFfZ251X2F0dHJpYnV0ZV9vbl90eXBlLCBkaWFnOjp3YXJuX2RlY2xzcGVjX2F0dHJpYnV0ZV9pZ25vcmVkLCBkaWFnOjp3YXJuX2RlcHJlY2F0ZWRfYW5vbnltb3VzX25hbWVzcGFjZSwgZGlhZzo6d2Fybl9kbGxpbXBvcnRfZHJvcHBlZF9mcm9tX2lubGluZV9mdW5jdGlvbiwgZGlhZzo6d2Fybl9kdXBsaWNhdGVfYXR0cmlidXRlLCBkaWFnOjp3YXJuX2R1cGxpY2F0ZV9hdHRyaWJ1dGVfZXhhY3QsIGRpYWc6Ondhcm5fZ2NfYXR0cmlidXRlX3dlYWtfb25fbG9jYWwsIGRpYWc6Ondhcm5fZ251X2lubGluZV9hdHRyaWJ1dGVfcmVxdWlyZXNfaW5saW5lLCBkaWFnOjp3YXJuX2lnbm9yZWRfbXNfaW5oZXJpdGFuY2UsIGRpYWc6Ondhcm5faW50ZXJuYWxfbGlua2FnZV9sb2NhbF9zdG9yYWdlLCBkaWFnOjp3YXJuX21pY3Jvc29mdF9xdWFsaWZpZXJzX2lnbm9yZWQsIGRpYWc6Ondhcm5fbWlwc19pbnRlcnJ1cHRfYXR0cmlidXRlLCBkaWFnOjp3YXJuX21tYXBfdW5rbm93bl9hdHRyaWJ1dGUsIGRpYWc6Ondhcm5fbm9jZl9jaGVja19hdHRyaWJ1dGVfaWdub3JlZCwgZGlhZzo6d2Fybl9uc19hdHRyaWJ1dGVfd3JvbmdfcGFyYW1ldGVyX3R5cGUsIGRpYWc6Ondhcm5fbnNfYXR0cmlidXRlX3dyb25nX3JldHVybl90eXBlLCBkaWFnOjp3YXJuX29wZW5jbF9hdHRyX2RlcHJlY2F0ZWRfaWdub3JlZCwgZGlhZzo6d2Fybl9yaXNjdl9pbnRlcnJ1cHRfYXR0cmlidXRlLCBkaWFnOjp3YXJuX3Jpc2N2X3JlcGVhdGVkX2ludGVycnVwdF9hdHRyaWJ1dGUsIGRpYWc6Ondhcm5fdHJhbnNwYXJlbnRfdW5pb25fYXR0cmlidXRlX2ZpZWxkX3NpemVfYWxpZ24sIGRpYWc6Ondhcm5fdHJhbnNwYXJlbnRfdW5pb25fYXR0cmlidXRlX2Zsb2F0aW5nLCBkaWFnOjp3YXJuX3RyYW5zcGFyZW50X3VuaW9uX2F0dHJpYnV0ZV9ub3RfZGVmaW5pdGlvbiwgZGlhZzo6d2Fybl90cmFuc3BhcmVudF91bmlvbl9hdHRyaWJ1dGVfemVyb19maWVsZHMsIGRpYWc6Ondhcm5fdHlwZV9hdHRyaWJ1dGVfd3JvbmdfdHlwZSwgZGlhZzo6d2Fybl91bmhhbmRsZWRfbXNfYXR0cmlidXRlX2lnbm9yZWQsIGRpYWc6Ondhcm5fdW5zdXBwb3J0ZWRfdGFyZ2V0X2F0dHJpYnV0ZSwgLTEsCi0gIC8qIERpYWdBcnJheTI3NSAqLyBkaWFnOjp3YXJuX2Rydl91bnN1cHBvcnRlZF9vcHRfZm9yX3RhcmdldCwgZGlhZzo6d2Fybl9pZ25vcmVkX2djY19vcHRpbWl6YXRpb24sIC0xLAotICAvKiBEaWFnQXJyYXkyNzYgKi8gZGlhZzo6d2Fybl9wcmFnbWFfaW50cmluc2ljX2J1aWx0aW4sIC0xLAotICAvKiBEaWFnQXJyYXkyNzcgKi8gZGlhZzo6d2Fybl9wcmFnbWFfb3B0aW1pemUsIC0xLAotICAvKiBEaWFnQXJyYXkyNzggKi8gZGlhZzo6d2Fybl9wcmFnbWFfYWxpZ25fZXhwZWN0ZWRfZXF1YWwsIGRpYWc6Ondhcm5fcHJhZ21hX2FsaWduX2ludmFsaWRfb3B0aW9uLCBkaWFnOjp3YXJuX3ByYWdtYV9iZWdpbl9lbmRfbWlzbWF0Y2gsIGRpYWc6Ondhcm5fcHJhZ21hX2NvbW1lbnRfaWdub3JlZCwgZGlhZzo6d2Fybl9wcmFnbWFfZGVidWdfbWlzc2luZ19hcmd1bWVudCwgZGlhZzo6d2Fybl9wcmFnbWFfZGVidWdfdW5leHBlY3RlZF9jb21tYW5kLCBkaWFnOjp3YXJuX3ByYWdtYV9leHBlY3RlZF9hY3Rpb25fb3Jfcl9wYXJlbiwgZGlhZzo6d2Fybl9wcmFnbWFfZXhwZWN0ZWRfY29sb24sIGRpYWc6Ondhcm5fcHJhZ21hX2V4cGVjdGVkX2NvbG9uX3JfcGFyZW4sIGRpYWc6Ondhcm5fcHJhZ21hX2V4cGVjdGVkX2NvbW1hLCBkaWFnOjp3YXJuX3ByYWdtYV9leHBlY3RlZF9pZGVudGlmaWVyLCBkaWFnOjp3YXJuX3ByYWdtYV9leHBlY3RlZF9pbml0X3NlZywgZGlhZzo6d2Fybl9wcmFnbWFfZXhwZWN0ZWRfaW50ZWdlciwgZGlhZzo6d2Fybl9wcmFnbWFfZXhwZWN0ZWRfbHBhcmVuLCBkaWFnOjp3YXJuX3ByYWdtYV9leHBlY3RlZF9ub25fd2lkZV9zdHJpbmcsIGRpYWc6Ondhcm5fcHJhZ21hX2V4cGVjdGVkX3ByZWRpY2F0ZSwgZGlhZzo6d2Fybl9wcmFnbWFfZXhwZWN0ZWRfcHVuYywgZGlhZzo6d2Fybl9wcmFnbWFfZXhwZWN0ZWRfcnBhcmVuLCBkaWFnOjp3YXJuX3ByYWdtYV9leHBlY3RlZF9zZWN0aW9uX2xhYmVsX29yX25hbWUsIGRpYWc6Ondhcm5fcHJhZ21hX2V4cGVjdGVkX3NlY3Rpb25fbmFtZSwgZGlhZzo6d2Fybl9wcmFnbWFfZXhwZWN0ZWRfc2VjdGlvbl9wdXNoX3BvcF9vcl9uYW1lLCBkaWFnOjp3YXJuX3ByYWdtYV9leHBlY3RlZF9zdHJpbmcsIGRpYWc6Ondhcm5fcHJhZ21hX2V4dHJhX3Rva2Vuc19hdF9lb2wsIGRpYWc6Ondhcm5fcHJhZ21hX2ZvcmNlX2N1ZGFfaG9zdF9kZXZpY2VfYmFkX2FyZywgZGlhZzo6d2Fybl9wcmFnbWFfaW5pdF9zZWdfdW5zdXBwb3J0ZWRfdGFyZ2V0LCBkaWFnOjp3YXJuX3ByYWdtYV9pbnZhbGlkX2FjdGlvbiwgZGlhZzo6d2Fybl9wcmFnbWFfaW52YWxpZF9hcmd1bWVudCwgZGlhZzo6d2Fybl9wcmFnbWFfaW52YWxpZF9zcGVjaWZpY19hY3Rpb24sIGRpYWc6Ondhcm5fcHJhZ21hX21pc3NpbmdfYXJndW1lbnQsIGRpYWc6Ondhcm5fcHJhZ21hX21zX3N0cnVjdCwgZGlhZzo6d2Fybl9wcmFnbWFfb3B0aW9uc19hbGlnbl9yZXNldF9mYWlsZWQsIGRpYWc6Ondhcm5fcHJhZ21hX29wdGlvbnNfZXhwZWN0ZWRfYWxpZ24sIGRpYWc6Ondhcm5fcHJhZ21hX3BhY2tfaW52YWxpZF9hbGlnbm1lbnQsIGRpYWc6Ondhcm5fcHJhZ21hX3BhY2tfbWFsZm9ybWVkLCBkaWFnOjp3YXJuX3ByYWdtYV9wb3BfZmFpbGVkLCBkaWFnOjp3YXJuX3ByYWdtYV9wb3BfbWFjcm9fbm9fcHVzaCwgZGlhZzo6d2Fybl9wcmFnbWFfdW5rbm93bl9leHRlbnNpb24sIGRpYWc6Ondhcm5fcHJhZ21hX3Vuc3VwcG9ydGVkX2FjdGlvbiwgZGlhZzo6d2Fybl9wcmFnbWFfdW5zdXBwb3J0ZWRfZXh0ZW5zaW9uLCBkaWFnOjp3YXJuX3ByYWdtYV91bnVzZWRfZXhwZWN0ZWRfdmFyLCBkaWFnOjp3YXJuX3ByYWdtYV91bnVzZWRfZXhwZWN0ZWRfdmFyX2FyZywgZGlhZzo6d2Fybl9wcmFnbWFfdW51c2VkX3VuZGVjbGFyZWRfdmFyLCAtMSwKLSAgLyogRGlhZ0FycmF5Mjc5ICovIGRpYWc6Ondhcm5fYXJjX2xpZmV0aW1lX3Jlc3VsdF90eXBlLCBkaWFnOjp3YXJuX2Jsb2NrX2xpdGVyYWxfcXVhbGlmaWVyc19vbl9vbWl0dGVkX3JldHVybl90eXBlLCBkaWFnOjp3YXJuX3F1YWxfcmV0dXJuX3R5cGUsIGRpYWc6Ondhcm5fdHlwZWNoZWNrX2Z1bmN0aW9uX3F1YWxpZmllcnNfaWdub3JlZCwgZGlhZzo6d2Fybl90eXBlY2hlY2tfcmVmZXJlbmNlX3F1YWxpZmllcnMsIC0xLAotICAvKiBEaWFnQXJyYXkyODEgKi8gZGlhZzo6d2Fybl9hdXRvX2ltcGxpY2l0X2F0b21pY19wcm9wZXJ0eSwgZGlhZzo6d2Fybl9pbXBsaWNpdF9hdG9taWNfcHJvcGVydHksIC0xLAotICAvKiBEaWFnQXJyYXkyODIgKi8gZGlhZzo6d2Fybl9pbXBjYXN0X2Zsb2F0aW5nX3BvaW50X3RvX2Jvb2wsIC0xLAotICAvKiBEaWFnQXJyYXkyODMgKi8gZGlhZzo6ZXh0X2ltcGxpY2l0X2V4Y2VwdGlvbl9zcGVjX21pc21hdGNoLCAtMSwKLSAgLyogRGlhZ0FycmF5Mjg0ICovIGRpYWc6Ondhcm5fZmFsbHRocm91Z2hfYXR0cl91bnJlYWNoYWJsZSwgZGlhZzo6d2Fybl91bmFubm90YXRlZF9mYWxsdGhyb3VnaCwgLTEsCi0gIC8qIERpYWdBcnJheTI4NSAqLyBkaWFnOjp3YXJuX3VuYW5ub3RhdGVkX2ZhbGx0aHJvdWdoX3Blcl9mdW5jdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTI4NiAqLyBkaWFnOjp3YXJuX2ltcGNhc3RfZmxvYXRfcHJlY2lzaW9uLCBkaWFnOjp3YXJuX2ltcGNhc3RfZmxvYXRfcmVzdWx0X3ByZWNpc2lvbiwgLTEsCi0gIC8qIERpYWdBcnJheTI4NyAqLyBkaWFnOjpleHRfaW1wbGljaXRfZnVuY3Rpb25fZGVjbCwgZGlhZzo6ZXh0X2ltcGxpY2l0X2xpYl9mdW5jdGlvbl9kZWNsLCBkaWFnOjp3YXJuX2J1aWx0aW5fdW5rbm93biwgZGlhZzo6d2Fybl9pbXBsaWNpdF9mdW5jdGlvbl9kZWNsLCAtMSwKLSAgLyogRGlhZ0FycmF5Mjg4ICovIGRpYWc6OmV4dF9taXNzaW5nX3R5cGVfc3BlY2lmaWVyLCAtMSwKLSAgLyogRGlhZ0FycmF5Mjg5ICovIGRpYWc6Ondhcm5faW1wY2FzdF9oaWdoX29yZGVyX3plcm9fYml0cywgZGlhZzo6d2Fybl9pbXBjYXN0X2ludGVnZXJfcHJlY2lzaW9uLCAtMSwKLSAgLyogRGlhZ0FycmF5MjkwICovIGRpYWc6Ondhcm5faW1wbGljaXRseV9yZXRhaW5zX3NlbGYsIC0xLAotICAvKiBEaWFnQXJyYXkyOTEgKi8gZGlhZzo6ZXh0X2ludGVnZXJfbGl0ZXJhbF90b29fbGFyZ2VfZm9yX3NpZ25lZCwgLTEsCi0gIC8qIERpYWdBcnJheTI5MyAqLyBkaWFnOjpleHRfcHBfaW1wb3J0X2RpcmVjdGl2ZSwgLTEsCi0gIC8qIERpYWdBcnJheTI5NCAqLyBkaWFnOjp3YXJuX2luYWNjZXNzaWJsZV9iYXNlX2NsYXNzLCAtMSwKLSAgLyogRGlhZ0FycmF5Mjk1ICovIGRpYWc6OnBwX2luY2x1ZGVfbmV4dF9hYnNvbHV0ZV9wYXRoLCAtMSwKLSAgLyogRGlhZ0FycmF5Mjk2ICovIGRpYWc6OnBwX2luY2x1ZGVfbmV4dF9pbl9wcmltYXJ5LCAtMSwKLSAgLyogRGlhZ0FycmF5Mjk3ICovIGRpYWc6Ondhcm5fZGVlcF9leGNlcHRpb25fc3BlY3NfZGlmZmVyLCBkaWFnOjp3YXJuX2luY29tcGF0aWJsZV9leGNlcHRpb25fc3BlY3MsIC0xLAotICAvKiBEaWFnQXJyYXkyOTggKi8gZGlhZzo6ZXh0X3R5cGVjaGVja19jb252ZXJ0X2luY29tcGF0aWJsZV9mdW5jdGlvbl9wb2ludGVyLCAtMSwKLSAgLyogRGlhZ0FycmF5Mjk5ICovIGRpYWc6Ondhcm5fcmVkZWNsX2xpYnJhcnlfYnVpbHRpbiwgLTEsCi0gIC8qIERpYWdBcnJheTMwMCAqLyBkaWFnOjp3YXJuX2N4eF9tc19zdHJ1Y3QsIGRpYWc6Ondhcm5fbnBvdF9tc19zdHJ1Y3QsIC0xLAotICAvKiBEaWFnQXJyYXkzMDEgKi8gZGlhZzo6ZXh0X3R5cGVjaGVja19jb252ZXJ0X2luY29tcGF0aWJsZV9wb2ludGVyLCAtMSwKLSAgLyogRGlhZ0FycmF5MzAyICovIGRpYWc6OmV4dF9uZXN0ZWRfcG9pbnRlcl9xdWFsaWZpZXJfbWlzbWF0Y2gsIGRpYWc6OmV4dF90eXBlY2hlY2tfY29udmVydF9kaXNjYXJkc19xdWFsaWZpZXJzLCAtMSwKLSAgLyogRGlhZ0FycmF5MzAzICovIGRpYWc6Ondhcm5fcHJvcGVydHlfdHlwZXNfYXJlX2luY29tcGF0aWJsZSwgLTEsCi0gIC8qIERpYWdBcnJheTMwNCAqLyBkaWFnOjp3YXJuX2luY29tcGF0aWJsZV9zeXNyb290LCAtMSwKLSAgLyogRGlhZ0FycmF5MzA1ICovIGRpYWc6Ondhcm5fbW1hcF9pbmNvbXBsZXRlX2ZyYW1ld29ya19tb2R1bGVfZGVjbGFyYXRpb24sIC0xLAotICAvKiBEaWFnQXJyYXkzMDYgKi8gZGlhZzo6d2Fybl91bmRlZl9tZXRob2RfaW1wbCwgLTEsCi0gIC8qIERpYWdBcnJheTMwOCAqLyBkaWFnOjp3YXJuX21pc3Npbmdfc3VibW9kdWxlLCBkaWFnOjp3YXJuX21tYXBfdW1icmVsbGFfZGlyX25vdF9mb3VuZCwgZGlhZzo6d2Fybl91bmNvdmVyZWRfbW9kdWxlX2hlYWRlciwgLTEsCi0gIC8qIERpYWdBcnJheTMwOSAqLyBkaWFnOjp3YXJuX3JlZGVjbGFyYXRpb25fd2l0aG91dF9hdHRyaWJ1dGVfcHJldl9hdHRyaWJ1dGVfaWdub3JlZCwgZGlhZzo6d2Fybl9yZWRlY2xhcmF0aW9uX3dpdGhvdXRfaW1wb3J0X2F0dHJpYnV0ZSwgLTEsCi0gIC8qIERpYWdBcnJheTMxMCAqLyBkaWFnOjp3YXJuX2Rlc3RydWN0b3JfbWFya2VkX25vdF9vdmVycmlkZV9vdmVycmlkaW5nLCAtMSwKLSAgLyogRGlhZ0FycmF5MzExICovIGRpYWc6Ondhcm5fZnVuY3Rpb25fbWFya2VkX25vdF9vdmVycmlkZV9vdmVycmlkaW5nLCAtMSwKLSAgLyogRGlhZ0FycmF5MzEyICovIGRpYWc6OmV4dF9pbmNyZW1lbnRfYm9vbCwgLTEsCi0gIC8qIERpYWdBcnJheTMxMyAqLyBkaWFnOjp3YXJuX2luZmluaXRlX3JlY3Vyc2l2ZV9mdW5jdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTMxNSAqLyBkaWFnOjp3YXJuX2luaXRpYWxpemVyX292ZXJyaWRlcywgZGlhZzo6d2Fybl9zdWJvYmplY3RfaW5pdGlhbGl6ZXJfb3ZlcnJpZGVzLCAtMSwKLSAgLyogRGlhZ0FycmF5MzE2ICovIGRpYWc6OmV4dF9vdXRfb2ZfbGluZV9xdWFsaWZpZWRfaWRfdHlwZV9uYW1lc19jb25zdHJ1Y3RvciwgLTEsCi0gIC8qIERpYWdBcnJheTMxOCAqLyBkaWFnOjp3YXJuX2ZlX2lubGluZV9hc20sIC0xLAotICAvKiBEaWFnQXJyYXkzMTkgKi8gZGlhZzo6ZXh0X29wZXJhdG9yX25ld19kZWxldGVfZGVjbGFyZWRfaW5saW5lLCAtMSwKLSAgLyogRGlhZ0FycmF5MzIwICovIGRpYWc6Ondhcm5fZXhwbGljaXRfaW5zdGFudGlhdGlvbl9hZnRlcl9zcGVjaWFsaXphdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTMyMSAqLyBkaWFnOjpleHRfdHlwZWNoZWNrX2NvbnZlcnRfaW50X3BvaW50ZXIsIGRpYWc6OmV4dF90eXBlY2hlY2tfY29udmVydF9wb2ludGVyX2ludCwgLTEsCi0gIC8qIERpYWdBcnJheTMyMyAqLyBkaWFnOjp3YXJuX2ludF90b19wb2ludGVyX2Nhc3QsIC0xLAotICAvKiBEaWFnQXJyYXkzMjQgKi8gZGlhZzo6d2Fybl9pbnRfdG9fdm9pZF9wb2ludGVyX2Nhc3QsIC0xLAotICAvKiBEaWFnQXJyYXkzMjUgKi8gZGlhZzo6d2Fybl9pbnRlZ2VyX2NvbnN0YW50X292ZXJmbG93LCAtMSwKLSAgLyogRGlhZ0FycmF5MzI2ICovIGRpYWc6Ondhcm5fZHJ2X29iamVjdF9zaXplX2Rpc2FibGVkX08wLCBkaWFnOjp3YXJuX2Rydl9vcHRpbWl6YXRpb25fdmFsdWUsIC0xLAotICAvKiBEaWFnQXJyYXkzMjcgKi8gZGlhZzo6ZXh0X2NvbnN0ZXhwcl9mdW5jdGlvbl9uZXZlcl9jb25zdGFudF9leHByLCAtMSwKLSAgLyogRGlhZ0FycmF5MzI4ICovIGRpYWc6Ondhcm5faWJvdXRsZXRfb2JqZWN0X3R5cGUsIGRpYWc6Ondhcm5faWJvdXRsZXRjb2xsZWN0aW9uX3Byb3BlcnR5X2Fzc2lnbiwgLTEsCi0gIC8qIERpYWdBcnJheTMyOSAqLyBkaWFnOjp3YXJuX2ludmFsaWRfaW5pdGlhbGl6ZXJfZnJvbV9zeXN0ZW1faGVhZGVyLCAtMSwKLSAgLyogRGlhZ0FycmF5MzMwICovIGRpYWc6Ondhcm5faW52YWxpZF9pb3NfZGVwbG95bWVudF90YXJnZXQsIC0xLAotICAvKiBEaWFnQXJyYXkzMzEgKi8gZGlhZzo6d2Fybl9mYWxsb2ZmX25vcmV0dXJuX2Z1bmN0aW9uLCBkaWFnOjp3YXJuX25vcmV0dXJuX2Z1bmN0aW9uX2hhc19yZXR1cm5fZXhwciwgLTEsCi0gIC8qIERpYWdBcnJheTMzMiAqLyBkaWFnOjpleHRfb2Zmc2V0b2Zfbm9uX3BvZF90eXBlLCBkaWFnOjpleHRfb2Zmc2V0b2Zfbm9uX3N0YW5kYXJkbGF5b3V0X3R5cGUsIC0xLAotICAvKiBEaWFnQXJyYXkzMzMgKi8gZGlhZzo6d2Fybl9kcnZfcHM0X3Nka19kaXIsIGRpYWc6Ondhcm5fZHJ2X3VuYWJsZV90b19maW5kX2RpcmVjdG9yeV9leHBlY3RlZCwgLTEsCi0gIC8qIERpYWdBcnJheTMzNCAqLyBkaWFnOjpleHRfcGFydGlhbF9zcGVjX25vdF9tb3JlX3NwZWNpYWxpemVkX3RoYW5fcHJpbWFyeSwgLTEsCi0gIC8qIERpYWdBcnJheTMzNiAqLyBkaWFnOjpleHRfZW1wdHlfY2hhcmFjdGVyLCBkaWFnOjpleHRfdW50ZXJtaW5hdGVkX2NoYXJfb3Jfc3RyaW5nLCAtMSwKLSAgLyogRGlhZ0FycmF5MzM3ICovIGRpYWc6Ondhcm5fYmFkX2NoYXJhY3Rlcl9lbmNvZGluZywgZGlhZzo6d2Fybl9iYWRfc3RyaW5nX2VuY29kaW5nLCAtMSwKLSAgLyogRGlhZ0FycmF5MzM4ICovIGRpYWc6OmV4dF9wcF9iYWRfcGFzdGVfbXMsIC0xLAotICAvKiBEaWFnQXJyYXkzMzkgKi8gZGlhZzo6d2Fybl9qdW1wX291dF9vZl9zZWhfZmluYWxseSwgLTEsCi0gIC8qIERpYWdBcnJheTM0MCAqLyBkaWFnOjpleHRfa2V5d29yZF9hc19pZGVudCwgLTEsCi0gIC8qIERpYWdBcnJheTM0MSAqLyBkaWFnOjp3YXJuX3BwX21hY3JvX2hpZGVzX2tleXdvcmQsIC0xLAotICAvKiBEaWFnQXJyYXkzNDIgKi8gZGlhZzo6ZXh0X3BhcmFtX3Byb21vdGVkX25vdF9jb21wYXRpYmxlX3dpdGhfcHJvdG90eXBlLCAtMSwKLSAgLyogRGlhZ0FycmF5MzQzICovIGRpYWc6OmV4dF90b2tlbl91c2VkLCAtMSwKLSAgLyogRGlhZ0FycmF5MzQ0ICovIGRpYWc6Ondhcm5fcGFyYW1ldGVyX3NpemUsIGRpYWc6Ondhcm5fcmV0dXJuX3ZhbHVlX3NpemUsIC0xLAotICAvKiBEaWFnQXJyYXkzNDYgKi8gZGlhZzo6d2Fybl9pbXBjYXN0X2xpdGVyYWxfZmxvYXRfdG9faW50ZWdlciwgZGlhZzo6d2Fybl9pbXBjYXN0X2xpdGVyYWxfZmxvYXRfdG9faW50ZWdlcl9vdXRfb2ZfcmFuZ2UsIC0xLAotICAvKiBEaWFnQXJyYXkzNDcgKi8gZGlhZzo6d2Fybl9mbG9hdF9vdmVyZmxvdywgZGlhZzo6d2Fybl9mbG9hdF91bmRlcmZsb3csIC0xLAotICAvKiBEaWFnQXJyYXkzNDggKi8gZGlhZzo6ZXh0X3RlbXBsYXRlX2FyZ19sb2NhbF90eXBlLCAtMSwKLSAgLyogRGlhZ0FycmF5MzQ5ICovIGRpYWc6Ondhcm5fbG9naWNhbF9ub3Rfb25fbGhzX29mX2NoZWNrLCAtMSwKLSAgLyogRGlhZ0FycmF5MzUwICovIGRpYWc6Ondhcm5fbG9naWNhbF9hbmRfaW5fbG9naWNhbF9vciwgLTEsCi0gIC8qIERpYWdBcnJheTM1MSAqLyBkaWFnOjpleHRfYzk5X2xvbmdsb25nLCAtMSwKLSAgLyogRGlhZ0FycmF5MzUzICovIGRpYWc6OmV4dF9wcF9tYWNyb19yZWRlZiwgLTEsCi0gIC8qIERpYWdBcnJheTM1NCAqLyBkaWFnOjpleHRfbWFpbl91c2VkLCBkaWFnOjpleHRfbm9yZXR1cm5fbWFpbiwgZGlhZzo6ZXh0X3ZhcmlhZGljX21haW4sIGRpYWc6Ondhcm5fbWFpbl9vbmVfYXJnLCBkaWFnOjp3YXJuX21haW5fcmVkZWZpbmVkLCBkaWFnOjp3YXJuX21haW5fcmV0dXJuc19ib29sX2xpdGVyYWwsIGRpYWc6Ondhcm5fc3RhdGljX21haW4sIC0xLAotICAvKiBEaWFnQXJyYXkzNTUgKi8gZGlhZzo6ZXh0X21haW5fcmV0dXJuc19ub25pbnQsIC0xLAotICAvKiBEaWFnQXJyYXkzNTYgKi8gZGlhZzo6d2Fybl9oYXNfd2FybmluZ19pbnZhbGlkX29wdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTM1NyAqLyBkaWFnOjpleHRfbWFueV9icmFjZXNfYXJvdW5kX3NjYWxhcl9pbml0LCAtMSwKLSAgLyogRGlhZ0FycmF5MzU4ICovIGRpYWc6Ondhcm5fbWF4X3Vuc2lnbmVkX3plcm8sIC0xLAotICAvKiBEaWFnQXJyYXkzNTkgKi8gZGlhZzo6d2Fybl9zdXNwaWNpb3VzX3NpemVvZl9tZW1zZXQsIC0xLAotICAvKiBEaWFnQXJyYXkzNjAgKi8gZGlhZzo6d2Fybl9tZW1zaXplX2NvbXBhcmlzb24sIC0xLAotICAvKiBEaWFnQXJyYXkzNjEgKi8gZGlhZzo6d2Fybl9ub25fY29udHJhdmFyaWFudF9wYXJhbV90eXBlcywgZGlhZzo6d2Fybl9ub25fY292YXJpYW50X3JldF90eXBlcywgLTEsCi0gIC8qIERpYWdBcnJheTM2MyAqLyBkaWFnOjpleHRfYW5vbnltb3VzX3JlY29yZF93aXRoX3R5cGUsIGRpYWc6OmV4dF9tc19hbm9ueW1vdXNfcmVjb3JkLCAtMSwKLSAgLyogRGlhZ0FycmF5MzY0ICovIGRpYWc6OmV4dF9tc19jYXN0X2ZuX29iaiwgZGlhZzo6ZXh0X21zX2ltcGNhc3RfZm5fb2JqLCAtMSwKLSAgLyogRGlhZ0FycmF5MzY1ICovIGRpYWc6OmV4dF9jaGFyaXplX21pY3Jvc29mdCwgLTEsCi0gIC8qIERpYWdBcnJheTM2NiAqLyBkaWFnOjpleHRfY29tbWVudF9wYXN0ZV9taWNyb3NvZnQsIC0xLAotICAvKiBEaWFnQXJyYXkzNjcgKi8gZGlhZzo6ZXh0X2RlZmF1bHRfaW5pdF9jb25zdCwgLTEsCi0gIC8qIERpYWdBcnJheTM2OCAqLyBkaWFnOjpleHRfcHBfb3BlcmF0b3JfdXNlZF9hc19tYWNyb19uYW1lLCAtMSwKLSAgLyogRGlhZ0FycmF5MzY5ICovIGRpYWc6OmV4dF9wYXJhbV9kZWZhdWx0X2FyZ3VtZW50X3JlZGVmaW5pdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTM3MCAqLyBkaWFnOjpleHRfY3RybF96X2VvZl9taWNyb3NvZnQsIC0xLAotICAvKiBEaWFnQXJyYXkzNzEgKi8gZGlhZzo6ZXh0X21zX2ZvcndhcmRfcmVmX2VudW0sIC0xLAotICAvKiBEaWFnQXJyYXkzNzIgKi8gZGlhZzo6ZXh0X2VudW1lcmF0b3JfdG9vX2xhcmdlLCAtMSwKLSAgLyogRGlhZ0FycmF5MzczICovIGRpYWc6OmV4dF9lbGxpcHNpc19leGNlcHRpb25fc3BlYywgZGlhZzo6ZXh0X2luY29tcGxldGVfaW5fZXhjZXB0aW9uX3NwZWMsIGRpYWc6OmV4dF9taXNtYXRjaGVkX2V4Y2VwdGlvbl9zcGVjLCBkaWFnOjpleHRfbWlzbWF0Y2hlZF9leGNlcHRpb25fc3BlY19leHBsaWNpdF9pbnN0YW50aWF0aW9uLCBkaWFnOjpleHRfbXNfbWlzc2luZ19leGNlcHRpb25fc3BlY2lmaWNhdGlvbiwgZGlhZzo6ZXh0X292ZXJyaWRlX2V4Y2VwdGlvbl9zcGVjLCAtMSwKLSAgLyogRGlhZ0FycmF5Mzc0ICovIGRpYWc6Ondhcm5fbWljcm9zb2Z0X2RlcGVuZGVudF9leGlzdHMsIC0xLAotICAvKiBEaWFnQXJyYXkzNzUgKi8gZGlhZzo6ZXh0X21zX2V4cGxpY2l0X2NvbnN0cnVjdG9yX2NhbGwsIC0xLAotICAvKiBEaWFnQXJyYXkzNzYgKi8gZGlhZzo6d2Fybl9tZW1iZXJfZXh0cmFfcXVhbGlmaWNhdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTM3NyAqLyBkaWFnOjpleHRfbXNfY19lbnVtX2ZpeGVkX3VuZGVybHlpbmdfdHlwZSwgLTEsCi0gIC8qIERpYWdBcnJheTM3OCAqLyBkaWFnOjpleHRfZmxleGlibGVfYXJyYXlfZW1wdHlfYWdncmVnYXRlX21zLCBkaWFnOjpleHRfZmxleGlibGVfYXJyYXlfdW5pb25fbXMsIC0xLAotICAvKiBEaWFnQXJyYXkzNzkgKi8gZGlhZzo6ZXh0X2dvdG9faW50b19wcm90ZWN0ZWRfc2NvcGUsIC0xLAotICAvKiBEaWFnQXJyYXkzODAgKi8gZGlhZzo6ZXh0X21zX2FtYmlndW91c19kaXJlY3RfYmFzZSwgLTEsCi0gIC8qIERpYWdBcnJheTM4MSAqLyBkaWFnOjpleHRfcHBfaW5jbHVkZV9zZWFyY2hfbXMsIC0xLAotICAvKiBEaWFnQXJyYXkzODIgKi8gZGlhZzo6ZXh0X211dGFibGVfcmVmZXJlbmNlLCAtMSwKLSAgLyogRGlhZ0FycmF5MzgzICovIGRpYWc6OmV4dF9wdXJlX2Z1bmN0aW9uX2RlZmluaXRpb24sIC0xLAotICAvKiBEaWFnQXJyYXkzODQgKi8gZGlhZzo6ZXh0X3N0YXRpY19ub25fc3RhdGljLCAtMSwKLSAgLyogRGlhZ0FycmF5Mzg1ICovIGRpYWc6OmV4dF9tc19zZWFsZWRfa2V5d29yZCwgLTEsCi0gIC8qIERpYWdBcnJheTM4NiAqLyBkaWFnOjpleHRfZXhwbGljaXRfaW5zdGFudGlhdGlvbl9kdXBsaWNhdGUsIGRpYWc6OmV4dF9mb3VuZF92aWFfZGVwZW5kZW50X2Jhc2VzX2xvb2t1cCwgZGlhZzo6ZXh0X21zX2RlbGF5ZWRfdGVtcGxhdGVfYXJndW1lbnQsIGRpYWc6OmV4dF9tc19kZXJlZl90ZW1wbGF0ZV9hcmd1bWVudCwgZGlhZzo6ZXh0X21zX3RlbXBsYXRlX3NwZWNfcmVkZWNsX291dF9vZl9zY29wZSwgZGlhZzo6ZXh0X21zX3RlbXBsYXRlX3R5cGVfYXJnX21pc3NpbmdfdHlwZW5hbWUsIGRpYWc6OmV4dF91bmRlY2xhcmVkX3VucXVhbF9pZF93aXRoX2RlcGVuZGVudF9iYXNlLCAtMSwKLSAgLyogRGlhZ0FycmF5Mzg3ICovIGRpYWc6OmV4dF91bmlvbl9tZW1iZXJfb2ZfcmVmZXJlbmNlX3R5cGUsIC0xLAotICAvKiBEaWFnQXJyYXkzODggKi8gZGlhZzo6ZXh0X2ZyaWVuZF90YWdfcmVkZWNsX291dHNpZGVfbmFtZXNwYWNlLCAtMSwKLSAgLyogRGlhZ0FycmF5Mzg5ICovIGRpYWc6OmV4dF9tc191c2luZ19kZWNsYXJhdGlvbl9pbmFjY2Vzc2libGUsIC0xLAotICAvKiBEaWFnQXJyYXkzOTAgKi8gZGlhZzo6ZXh0X3BzZXVkb19kdG9yX29uX3ZvaWQsIC0xLAotICAvKiBEaWFnQXJyYXkzOTEgKi8gZGlhZzo6d2Fybl9taXNtYXRjaGVkX2RlbGV0ZV9uZXcsIC0xLAotICAvKiBEaWFnQXJyYXkzOTIgKi8gZGlhZzo6d2Fybl9jb25mbGljdGluZ19wYXJhbV90eXBlcywgLTEsCi0gIC8qIERpYWdBcnJheTM5MyAqLyBkaWFnOjp3YXJuX2NvbmZsaWN0aW5nX3JldF90eXBlcywgLTEsCi0gIC8qIERpYWdBcnJheTM5NCAqLyBkaWFnOjp3YXJuX3N0cnVjdF9jbGFzc19wcmV2aW91c190YWdfbWlzbWF0Y2gsIGRpYWc6Ondhcm5fc3RydWN0X2NsYXNzX3RhZ19taXNtYXRjaCwgLTEsCi0gIC8qIERpYWdBcnJheTM5NSAqLyBkaWFnOjp3YXJuX21pc3NpbmdfYnJhY2VzLCAtMSwKLSAgLyogRGlhZ0FycmF5Mzk2ICovIGRpYWc6OmV4dF9ub19kZWNsYXJhdG9ycywgZGlhZzo6ZXh0X3N0YW5kYWxvbmVfc3BlY2lmaWVyLCBkaWFnOjpleHRfdHlwZWRlZl93aXRob3V0X2FfbmFtZSwgZGlhZzo6d2Fybl9zdGFuZGFsb25lX3NwZWNpZmllciwgLTEsCi0gIC8qIERpYWdBcnJheTM5NyAqLyBkaWFnOjpleHRfbWlzc2luZ19leGNlcHRpb25fc3BlY2lmaWNhdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTM5OCAqLyBkaWFnOjp3YXJuX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzLCAtMSwKLSAgLyogRGlhZ0FycmF5NDAxICovIGRpYWc6Ondhcm5fbWlzc2luZ19tZXRob2RfcmV0dXJuX3R5cGUsIC0xLAotICAvKiBEaWFnQXJyYXk0MDIgKi8gZGlhZzo6d2Fybl9vdmVycmlkaW5nX21ldGhvZF9taXNzaW5nX25vZXNjYXBlLCAtMSwKLSAgLyogRGlhZ0FycmF5NDAzICovIGRpYWc6Ondhcm5fc3VnZ2VzdF9ub3JldHVybl9ibG9jaywgZGlhZzo6d2Fybl9zdWdnZXN0X25vcmV0dXJuX2Z1bmN0aW9uLCAtMSwKLSAgLyogRGlhZ0FycmF5NDA0ICovIGRpYWc6Ondhcm5fY2NvbnZfa25yLCAtMSwKLSAgLyogRGlhZ0FycmF5NDA1ICovIGRpYWc6Ondhcm5fbWlzc2luZ19wcm90b3R5cGUsIC0xLAotICAvKiBEaWFnQXJyYXk0MDYgKi8gZGlhZzo6d2Fybl9taXNzaW5nX3NlbGVjdG9yX25hbWUsIC0xLAotICAvKiBEaWFnQXJyYXk0MDcgKi8gZGlhZzo6d2Fybl9taXNzaW5nX3N5c3Jvb3QsIC0xLAotICAvKiBEaWFnQXJyYXk0MDggKi8gZGlhZzo6d2Fybl9taXNzaW5nX3ZhcmlhYmxlX2RlY2xhcmF0aW9ucywgLTEsCi0gIC8qIERpYWdBcnJheTQwOSAqLyBkaWFnOjpyZW1hcmtfbW9kdWxlX2J1aWxkLCBkaWFnOjpyZW1hcmtfbW9kdWxlX2J1aWxkX2RvbmUsIGRpYWc6OnJlbWFya19tb2R1bGVfbG9ja19mYWlsdXJlLCBkaWFnOjpyZW1hcmtfbW9kdWxlX2xvY2tfdGltZW91dCwgLTEsCi0gIC8qIERpYWdBcnJheTQxMCAqLyBkaWFnOjp3YXJuX21vZHVsZV9jb25mbGljdCwgZGlhZzo6d2Fybl9tb2R1bGVfc3lzdGVtX2JpdF9jb25mbGljdCwgLTEsCi0gIC8qIERpYWdBcnJheTQxMSAqLyBkaWFnOjp3YXJuX21vZHVsZV9jb25maWdfbWlzbWF0Y2gsIC0xLAotICAvKiBEaWFnQXJyYXk0MTIgKi8gZGlhZzo6d2Fybl9kdXBsaWNhdGVfbW9kdWxlX2ZpbGVfZXh0ZW5zaW9uLCAtMSwKLSAgLyogRGlhZ0FycmF5NDEzICovIGRpYWc6OmV4dF9tb2R1bGVfaW1wb3J0X2luX2V4dGVybl9jLCAtMSwKLSAgLyogRGlhZ0FycmF5NDE0ICovIGRpYWc6OmV4dF9lcXVpdmFsZW50X2ludGVybmFsX2xpbmthZ2VfZGVjbF9pbl9tb2R1bGVzLCAtMSwKLSAgLyogRGlhZ0FycmF5NDE1ICovIGRpYWc6OmV4dF9tb2R1bGVfaW1wb3J0X25vdF9hdF90b3BfbGV2ZWxfbm9vcCwgLTEsCi0gIC8qIERpYWdBcnJheTQxOSAqLyBkaWFnOjp3YXJuX2Rydl9tc3ZjX25vdF9mb3VuZCwgLTEsCi0gIC8qIERpYWdBcnJheTQyMCAqLyBkaWFnOjpleHRfbXVsdGljaGFyX2NoYXJhY3Rlcl9saXRlcmFsLCAtMSwKLSAgLyogRGlhZ0FycmF5NDIxICovIGRpYWc6Ondhcm5fdmJhc2VfbW92ZWRfbXVsdGlwbGVfdGltZXMsIC0xLAotICAvKiBEaWFnQXJyYXk0MjMgKi8gZGlhZzo6ZXh0X2Fub255bW91c19yZWNvcmRfd2l0aF9hbm9ueW1vdXNfdHlwZSwgLTEsCi0gIC8qIERpYWdBcnJheTQyNSAqLyBkaWFnOjp3YXJuX29wZXJhdG9yX25ld19yZXR1cm5zX251bGwsIC0xLAotICAvKiBEaWFnQXJyYXk0MjYgKi8gZGlhZzo6ZXh0X25vX25ld2xpbmVfZW9mLCBkaWFnOjp3YXJuX25vX25ld2xpbmVfZW9mLCAtMSwKLSAgLyogRGlhZ0FycmF5NDI5ICovIGRpYWc6Ondhcm5fbm9uX2xpdGVyYWxfbnVsbF9wb2ludGVyLCAtMSwKLSAgLyogRGlhZ0FycmF5NDMwICovIGRpYWc6Ondhcm5fbm9uX21vZHVsYXJfaW5jbHVkZV9pbl9mcmFtZXdvcmtfbW9kdWxlLCAtMSwKLSAgLyogRGlhZ0FycmF5NDMxICovIGRpYWc6Ondhcm5fbm9uX21vZHVsYXJfaW5jbHVkZV9pbl9tb2R1bGUsIC0xLAotICAvKiBEaWFnQXJyYXk0MzIgKi8gZGlhZzo6d2Fybl9jYW5ub3RfcGFzc19ub25fcG9kX2FyZ190b192YXJhcmcsIGRpYWc6Ondhcm5fbm9uX3BvZF92YXJhcmdfd2l0aF9mb3JtYXRfc3RyaW5nLCBkaWFnOjp3YXJuX3NlY29uZF9wYXJhbWV0ZXJfdG9fdmFfYXJnX25vdF9wb2QsIGRpYWc6Ondhcm5fc2Vjb25kX3BhcmFtZXRlcl90b192YV9hcmdfb3duZXJzaGlwX3F1YWxpZmllZCwgLTEsCi0gIC8qIERpYWdBcnJheTQzMyAqLyBkaWFnOjp3YXJuX25vbl92aXJ0dWFsX2R0b3IsIC0xLAotICAvKiBEaWFnQXJyYXk0MzQgKi8gZGlhZzo6d2Fybl9udWxsX2FyZywgZGlhZzo6d2Fybl9udWxsX3JldCwgLTEsCi0gIC8qIERpYWdBcnJheTQzNiAqLyBkaWFnOjpwcF9ub25wb3J0YWJsZV9wYXRoLCAtMSwKLSAgLyogRGlhZ0FycmF5NDM3ICovIGRpYWc6OnBwX25vbnBvcnRhYmxlX3N5c3RlbV9wYXRoLCAtMSwKLSAgLyogRGlhZ0FycmF5NDM4ICovIGRpYWc6Ondhcm5fbmVvbl92ZWN0b3JfaW5pdGlhbGl6ZXJfbm9uX3BvcnRhYmxlLCAtMSwKLSAgLyogRGlhZ0FycmF5NDM5ICovIGRpYWc6Ondhcm5fY3N0cnVjdF9tZW1hY2Nlc3MsIC0xLAotICAvKiBEaWFnQXJyYXk0NDAgKi8gZGlhZzo6d2Fybl9uc2NvbnN1bWVkX2F0dHJpYnV0ZV9taXNtYXRjaCwgLTEsCi0gIC8qIERpYWdBcnJheTQ0MSAqLyBkaWFnOjp3YXJuX25zcmV0dXJuc19yZXRhaW5lZF9hdHRyaWJ1dGVfbWlzbWF0Y2gsIC0xLAotICAvKiBEaWFnQXJyYXk0NDIgKi8gZGlhZzo6d2Fybl9udWxsX2luX2FyaXRobWV0aWNfb3BlcmF0aW9uLCBkaWFnOjp3YXJuX251bGxfaW5fY29tcGFyaXNvbl9vcGVyYXRpb24sIC0xLAotICAvKiBEaWFnQXJyYXk0NDMgKi8gZGlhZzo6bnVsbF9pbl9jaGFyX29yX3N0cmluZywgZGlhZzo6bnVsbF9pbl9maWxlLCAtMSwKLSAgLyogRGlhZ0FycmF5NDQ0ICovIGRpYWc6Ondhcm5faW1wY2FzdF9udWxsX3BvaW50ZXJfdG9faW50ZWdlciwgLTEsCi0gIC8qIERpYWdBcnJheTQ0NSAqLyBkaWFnOjp3YXJuX2JpbmRpbmdfbnVsbF90b19yZWZlcmVuY2UsIGRpYWc6Ondhcm5faW5kaXJlY3Rpb25fdGhyb3VnaF9udWxsLCAtMSwKLSAgLyogRGlhZ0FycmF5NDQ2ICovIGRpYWc6Ondhcm5fZ251X251bGxfcHRyX2FyaXRoLCBkaWFnOjp3YXJuX3BvaW50ZXJfYXJpdGhfbnVsbF9wdHIsIC0xLAotICAvKiBEaWFnQXJyYXk0NDcgKi8gZGlhZzo6d2Fybl9jb25mbGljdGluZ19udWxsYWJpbGl0eV9hdHRyX292ZXJyaWRpbmdfcGFyYW1fdHlwZXMsIGRpYWc6Ondhcm5fY29uZmxpY3RpbmdfbnVsbGFiaWxpdHlfYXR0cl9vdmVycmlkaW5nX3JldF90eXBlcywgZGlhZzo6d2Fybl9taXNtYXRjaGVkX251bGxhYmlsaXR5X2F0dHIsIGRpYWc6Ondhcm5fbnVsbF9yZXNldHRhYmxlX3NldHRlciwgZGlhZzo6d2Fybl9udWxsYWJpbGl0eV9kdXBsaWNhdGUsIC0xLAotICAvKiBEaWFnQXJyYXk0NDggKi8gZGlhZzo6d2Fybl9udWxsYWJpbGl0eV9taXNzaW5nLCAtMSwKLSAgLyogRGlhZ0FycmF5NDQ5ICovIGRpYWc6Ondhcm5fbnVsbGFiaWxpdHlfbWlzc2luZ19hcnJheSwgLTEsCi0gIC8qIERpYWdBcnJheTQ1MCAqLyBkaWFnOjp3YXJuX251bGxhYmlsaXR5X2RlY2xzcGVjLCAtMSwKLSAgLyogRGlhZ0FycmF5NDUxICovIGRpYWc6OmV4dF9udWxsYWJpbGl0eSwgLTEsCi0gIC8qIERpYWdBcnJheTQ1MiAqLyBkaWFnOjp3YXJuX251bGxhYmlsaXR5X2luZmVycmVkX29uX25lc3RlZF90eXBlLCAtMSwKLSAgLyogRGlhZ0FycmF5NDUzICovIGRpYWc6Ondhcm5fbnVsbGFiaWxpdHlfbG9zdCwgLTEsCi0gIC8qIERpYWdBcnJheTQ1NCAqLyBkaWFnOjp3YXJuX2F1dG9zeW50aGVzaXNfcHJvcGVydHlfaXZhcl9tYXRjaCwgLTEsCi0gIC8qIERpYWdBcnJheTQ1NSAqLyBkaWFnOjp3YXJuX29iamNfY2lyY3VsYXJfY29udGFpbmVyLCAtMSwKLSAgLyogRGlhZ0FycmF5NDU3ICovIGRpYWc6Ondhcm5fb2JqY19kZXNpZ25hdGVkX2luaXRfbWlzc2luZ19zdXBlcl9jYWxsLCBkaWFnOjp3YXJuX29iamNfZGVzaWduYXRlZF9pbml0X25vbl9kZXNpZ25hdGVkX2luaXRfY2FsbCwgZGlhZzo6d2Fybl9vYmpjX2Rlc2lnbmF0ZWRfaW5pdF9ub25fc3VwZXJfZGVzaWduYXRlZF9pbml0X2NhbGwsIGRpYWc6Ondhcm5fb2JqY19pbXBsZW1lbnRhdGlvbl9taXNzaW5nX2Rlc2lnbmF0ZWRfaW5pdF9vdmVycmlkZSwgZGlhZzo6d2Fybl9vYmpjX3NlY29uZGFyeV9pbml0X21pc3NpbmdfaW5pdF9jYWxsLCBkaWFnOjp3YXJuX29iamNfc2Vjb25kYXJ5X2luaXRfc3VwZXJfaW5pdF9jYWxsLCAtMSwKLSAgLyogRGlhZ0FycmF5NDU4ICovIGRpYWc6Ondhcm5fc3VwZXJjbGFzc192YXJpYWJsZV9zaXplZF90eXBlX25vdF9hdF9lbmQsIGRpYWc6Ondhcm5fdmFyaWFibGVfc2l6ZWRfaXZhcl92aXNpYmlsaXR5LCAtMSwKLSAgLyogRGlhZ0FycmF5NDU5ICovIGRpYWc6Ondhcm5fZm9yd2FyZF9jbGFzc19yZWRlZmluaXRpb24sIC0xLAotICAvKiBEaWFnQXJyYXk0NjAgKi8gZGlhZzo6d2Fybl9pdmFyc19pbl9pbnRlcmZhY2UsIC0xLAotICAvKiBEaWFnQXJyYXk0NjEgKi8gZGlhZzo6d2Fybl9vYmpjX2xpdGVyYWxfY29tcGFyaXNvbiwgLTEsCi0gIC8qIERpYWdBcnJheTQ2MiAqLyBkaWFnOjp3YXJuX2ltcGNhc3Rfb2JqZWN0aXZlX2NfbGl0ZXJhbF90b19ib29sLCBkaWFnOjp3YXJuX29iamNfY29sbGVjdGlvbl9saXRlcmFsX2VsZW1lbnQsIC0xLAotICAvKiBEaWFnQXJyYXk0NjMgKi8gZGlhZzo6d2Fybl9wcF9vYmpjX21hY3JvX3JlZGVmX2lnbm9yZWQsIC0xLAotICAvKiBEaWFnQXJyYXk0NjQgKi8gZGlhZzo6d2Fybl9tZXNzYWdpbmdfdW5xdWFsaWZpZWRfaWQsIC0xLAotICAvKiBEaWFnQXJyYXk0NjUgKi8gZGlhZzo6d2Fybl9jbGFzc19tZXRob2Rfbm90X2ZvdW5kLCBkaWFnOjp3YXJuX2NsYXNzX21ldGhvZF9ub3RfZm91bmRfd2l0aF90eXBvLCBkaWFnOjp3YXJuX2luc3RfbWV0aG9kX25vdF9mb3VuZCwgZGlhZzo6d2Fybl9pbnN0YW5jZV9tZXRob2Rfbm90X2ZvdW5kX3dpdGhfdHlwbywgZGlhZzo6d2Fybl9pbnN0YW5jZV9tZXRob2Rfb25fY2xhc3NfZm91bmQsIGRpYWc6Ondhcm5fcm9vdF9pbnN0X21ldGhvZF9ub3RfZm91bmQsIC0xLAotICAvKiBEaWFnQXJyYXk0NjYgKi8gZGlhZzo6d2Fybl9taXNzaW5nX2V4cGxpY2l0X3N5bnRoZXNpcywgLTEsCi0gIC8qIERpYWdBcnJheTQ2NyAqLyBkaWFnOjp3YXJuX29iamNfbWlzc2luZ19zdXBlcl9jYWxsLCAtMSwKLSAgLyogRGlhZ0FycmF5NDY4ICovIGRpYWc6Ondhcm5fbXVsdGlwbGVfbWV0aG9kX2RlY2wsIC0xLAotICAvKiBEaWFnQXJyYXk0NjkgKi8gZGlhZzo6d2Fybl9vYmpjX3Byb3BlcnR5X3JldGFpbl9vZl9ibG9jaywgLTEsCi0gIC8qIERpYWdBcnJheTQ3MCAqLyBkaWFnOjp3YXJuX29iamNfcG9pbnRlcl9jeHhfY2F0Y2hfZnJhZ2lsZSwgLTEsCi0gIC8qIERpYWdBcnJheTQ3MSAqLyBkaWFnOjp3YXJuX29iamNfcHJvcGVydHlfYXNzaWduX29uX29iamVjdCwgLTEsCi0gIC8qIERpYWdBcnJheTQ3MiAqLyBkaWFnOjp3YXJuX2ltcGxfcmVxdWlyZWRfZm9yX2NsYXNzX3Byb3BlcnR5LCBkaWFnOjp3YXJuX2ltcGxfcmVxdWlyZWRfaW5fY2F0ZWdvcnlfZm9yX2NsYXNzX3Byb3BlcnR5LCBkaWFnOjp3YXJuX3NldHRlcl9nZXR0ZXJfaW1wbF9yZXF1aXJlZCwgZGlhZzo6d2Fybl9zZXR0ZXJfZ2V0dGVyX2ltcGxfcmVxdWlyZWRfaW5fY2F0ZWdvcnksIC0xLAotICAvKiBEaWFnQXJyYXk0NzMgKi8gZGlhZzo6d2Fybl9wcm9wZXJ0eV9pbXBsaWNpdGx5X21pc21hdGNoZWQsIC0xLAotICAvKiBEaWFnQXJyYXk0NzQgKi8gZGlhZzo6d2Fybl9jb2NvYV9uYW1pbmdfb3duZWRfcnVsZSwgLTEsCi0gIC8qIERpYWdBcnJheTQ3NSAqLyBkaWFnOjp3YXJuX29iamNfcHJvcGVydHlfZGVmYXVsdF9hc3NpZ25fb25fb2JqZWN0LCBkaWFnOjp3YXJuX29iamNfcHJvcGVydHlfbm9fYXNzaWdubWVudF9hdHRyaWJ1dGUsIC0xLAotICAvKiBEaWFnQXJyYXk0NzYgKi8gZGlhZzo6d2Fybl9hdXRvc3ludGhlc2lzX3Byb3BlcnR5X2luX3N1cGVyY2xhc3MsIGRpYWc6Ondhcm5fbm9fYXV0b3N5bnRoZXNpc19wcm9wZXJ0eSwgZGlhZzo6d2Fybl9ub19hdXRvc3ludGhlc2lzX3NoYXJlZF9pdmFyX3Byb3BlcnR5LCAtMSwKLSAgLyogRGlhZ0FycmF5NDc3ICovIGRpYWc6Ondhcm5fY2F0ZWdvcnlfbWV0aG9kX2ltcGxfbWF0Y2gsIC0xLAotICAvKiBEaWFnQXJyYXk0NzggKi8gZGlhZzo6d2Fybl9hdXRvX3N5bnRoZXNpemluZ19wcm90b2NvbF9wcm9wZXJ0eSwgLTEsCi0gIC8qIERpYWdBcnJheTQ3OSAqLyBkaWFnOjp3YXJuX29iamNfcmVkdW5kYW50X3F1YWxpZmllZF9jbGFzc190eXBlLCAtMSwKLSAgLyogRGlhZ0FycmF5NDgwICovIGRpYWc6Ondhcm5fb2JqY19yZWFkb25seV9wcm9wZXJ0eV9oYXNfc2V0dGVyLCAtMSwKLSAgLyogRGlhZ0FycmF5NDgyICovIGRpYWc6Ondhcm5fb2JqY19yZWR1bmRhbnRfbGl0ZXJhbF91c2UsIC0xLAotICAvKiBEaWFnQXJyYXk0ODMgKi8gZGlhZzo6d2Fybl9vYmpjX3Jvb3RfY2xhc3NfbWlzc2luZywgLTEsCi0gIC8qIERpYWdBcnJheTQ4NCAqLyBkaWFnOjp3YXJuX29iamNfc3RyaW5nX2xpdGVyYWxfY29tcGFyaXNvbiwgLTEsCi0gIC8qIERpYWdBcnJheTQ4NSAqLyBkaWFnOjp3YXJuX2NvbmNhdGVuYXRlZF9uc2FycmF5X2xpdGVyYWwsIC0xLAotICAvKiBEaWFnQXJyYXk0ODYgKi8gZGlhZzo6d2Fybl9vYmpjX3Vuc2FmZV9wZXJmb3JtX3NlbGVjdG9yLCAtMSwKLSAgLyogRGlhZ0FycmF5NDg3ICovIGRpYWc6Ondhcm5fb2RyX3RhZ190eXBlX2luY29uc2lzdGVudCwgLTEsCi0gIC8qIERpYWdBcnJheTQ4OCAqLyBkaWFnOjp3YXJuX29sZF9zdHlsZV9jYXN0LCAtMSwKLSAgLyogRGlhZ0FycmF5NDkwICovIGRpYWc6OmV4dF9vcGVuY2xfZXh0X3ZlY3Rvcl90eXBlX3JnYmFfc2VsZWN0b3IsIC0xLAotICAvKiBEaWFnQXJyYXk0OTEgKi8gZGlhZzo6d2Fybl9vbXBfYWxpZ25tZW50X25vdF9wb3dlcl9vZl90d28sIGRpYWc6Ondhcm5fb21wX2xpbmVhcl9zdGVwX3plcm8sIC0xLAotICAvKiBEaWFnQXJyYXk0OTIgKi8gZGlhZzo6ZXh0X29tcF9sb29wX25vdF9jYW5vbmljYWxfaW5pdCwgZGlhZzo6d2Fybl9vbXBfbG9vcF82NF9iaXRfdmFyLCAtMSwKLSAgLyogRGlhZ0FycmF5NDkzICovIGRpYWc6Ondhcm5fZHJ2X29tcF9vZmZsb2FkX3RhcmdldF9kdXBsaWNhdGUsIGRpYWc6Ondhcm5fZHJ2X29tcF9vZmZsb2FkX3RhcmdldF9taXNzaW5nYmNydW50aW1lLCBkaWFnOjp3YXJuX29tcF9ub25fdHJpdmlhbF90eXBlX21hcHBlZCwgZGlhZzo6d2Fybl9vbXBfbm90X2luX3RhcmdldF9jb250ZXh0LCAtMSwKLSAgLyogRGlhZ0FycmF5NDk0ICovIGRpYWc6Ondhcm5fZHJ2X2ZpbmVfZ3JhaW5lZF9iaXRmaWVsZF9hY2Nlc3Nlc19pZ25vcmVkLCBkaWFnOjp3YXJuX2Rydl9tb3V0bGluZV91bnN1cHBvcnRlZF9vcHQsIGRpYWc6Ondhcm5fZHJ2X3BzNF9mb3JjZV9waWMsIGRpYWc6Ondhcm5fZHJ2X3Vuc3VwcG9ydGVkX2xvbmdjYWxscywgZGlhZzo6d2Fybl9kcnZfdW5zdXBwb3J0ZWRfcGljX3dpdGhfbWFiaWNhbGxzLCBkaWFnOjp3YXJuX2Rydl92ZWN0b3JpemVfbmVlZHNfaHZ4LCAtMSwKLSAgLyogRGlhZ0FycmF5NDk1ICovIGRpYWc6OmV4dF90eXBlY2hlY2tfb3JkZXJlZF9jb21wYXJpc29uX29mX2Z1bmN0aW9uX3BvaW50ZXJzLCAtMSwKLSAgLyogRGlhZ0FycmF5NDk2ICovIGRpYWc6OmV4dF9vdXRfb2ZfbGluZV9kZWNsYXJhdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTQ5NyAqLyBkaWFnOjpleHRfdXNlX291dF9vZl9zY29wZV9kZWNsYXJhdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTQ5OCAqLyBkaWFnOjp3YXJuX292ZXJhbGlnbmVkX3R5cGUsIC0xLAotICAvKiBEaWFnQXJyYXk1MDAgKi8gZGlhZzo6ZXh0X3N0cmluZ190b29fbG9uZywgLTEsCi0gIC8qIERpYWdBcnJheTUwMSAqLyBkaWFnOjp3YXJuX292ZXJsb2FkZWRfc2hpZnRfaW5fY29tcGFyaXNvbiwgLTEsCi0gIC8qIERpYWdBcnJheTUwMiAqLyBkaWFnOjp3YXJuX292ZXJsb2FkZWRfdmlydHVhbCwgLTEsCi0gIC8qIERpYWdBcnJheTUwMyAqLyBkaWFnOjp3YXJuX2ZlX292ZXJyaWRlX21vZHVsZSwgLTEsCi0gIC8qIERpYWdBcnJheTUwNCAqLyBkaWFnOjp3YXJuX2NvbmZsaWN0aW5nX292ZXJyaWRpbmdfcGFyYW1fbW9kaWZpZXJzLCBkaWFnOjp3YXJuX2NvbmZsaWN0aW5nX292ZXJyaWRpbmdfcGFyYW1fdHlwZXMsIGRpYWc6Ondhcm5fY29uZmxpY3Rpbmdfb3ZlcnJpZGluZ19yZXRfdHlwZV9tb2RpZmllcnMsIGRpYWc6Ondhcm5fY29uZmxpY3Rpbmdfb3ZlcnJpZGluZ19yZXRfdHlwZXMsIGRpYWc6Ondhcm5fY29uZmxpY3Rpbmdfb3ZlcnJpZGluZ192YXJpYWRpYywgZGlhZzo6d2Fybl9ub25fY29udHJhdmFyaWFudF9vdmVycmlkaW5nX3BhcmFtX3R5cGVzLCBkaWFnOjp3YXJuX25vbl9jb3ZhcmlhbnRfb3ZlcnJpZGluZ19yZXRfdHlwZXMsIC0xLAotICAvKiBEaWFnQXJyYXk1MDUgKi8gZGlhZzo6d2Fybl9kcnZfb3ZlcnJpZGluZ19mbGFnX29wdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTUwNiAqLyBkaWFnOjp3YXJuX3VubmVjZXNzYXJ5X3BhY2tlZCwgLTEsCi0gIC8qIERpYWdBcnJheTUwNyAqLyBkaWFnOjp3YXJuX3BhZGRlZF9zdHJ1Y3RfYW5vbl9maWVsZCwgZGlhZzo6d2Fybl9wYWRkZWRfc3RydWN0X2ZpZWxkLCBkaWFnOjp3YXJuX3BhZGRlZF9zdHJ1Y3Rfc2l6ZSwgLTEsCi0gIC8qIERpYWdBcnJheTUwOCAqLyBkaWFnOjp3YXJuX2NvbmRpdGlvbl9pc19hc3NpZ25tZW50LCBkaWFnOjp3YXJuX3ByZWNlZGVuY2VfYml0d2lzZV9yZWwsIGRpYWc6Ondhcm5fcHJlY2VkZW5jZV9jb25kaXRpb25hbCwgLTEsCi0gIC8qIERpYWdBcnJheTUwOSAqLyBkaWFnOjp3YXJuX2VxdWFsaXR5X3dpdGhfZXh0cmFfcGFyZW5zLCAtMSwKLSAgLyogRGlhZ0FycmF5NTExICovIGRpYWc6OnJlbWFya19mZV9iYWNrZW5kX29wdGltaXphdGlvbl9yZW1hcmssIC0xLAotICAvKiBEaWFnQXJyYXk1MTIgKi8gZGlhZzo6cmVtYXJrX2ZlX2JhY2tlbmRfb3B0aW1pemF0aW9uX3JlbWFya19hbmFseXNpcywgZGlhZzo6cmVtYXJrX2ZlX2JhY2tlbmRfb3B0aW1pemF0aW9uX3JlbWFya19hbmFseXNpc19hbGlhc2luZywgZGlhZzo6cmVtYXJrX2ZlX2JhY2tlbmRfb3B0aW1pemF0aW9uX3JlbWFya19hbmFseXNpc19mcGNvbW11dGUsIC0xLAotICAvKiBEaWFnQXJyYXk1MTMgKi8gZGlhZzo6d2Fybl9mZV9iYWNrZW5kX29wdGltaXphdGlvbl9mYWlsdXJlLCAtMSwKLSAgLyogRGlhZ0FycmF5NTE0ICovIGRpYWc6OnJlbWFya19mZV9iYWNrZW5kX29wdGltaXphdGlvbl9yZW1hcmtfbWlzc2VkLCAtMSwKLSAgLyogRGlhZ0FycmF5NTE1ICovIGRpYWc6Ondhcm5fbW9kdWxlX3VzZXNfZGF0ZV90aW1lLCAtMSwKLSAgLyogRGlhZ0FycmF5NTE2ICovIGRpYWc6OmV4dF9hZ2dyZWdhdGVfaW5pdF9ub3RfY29uc3RhbnQsIGRpYWc6OmV4dF9hbm9ueW1vdXNfcmVjb3JkX3dpdGhfdHlwZSwgZGlhZzo6ZXh0X2Fub255bW91c19zdHJ1Y3RfdW5pb25fcXVhbGlmaWVkLCBkaWFnOjpleHRfYXJyYXlfc2l6ZV9jb252ZXJzaW9uLCBkaWFnOjpleHRfYXV0b19uZXdfbGlzdF9pbml0LCBkaWFnOjpleHRfYzk5X2FycmF5X3VzYWdlLCBkaWFnOjpleHRfYzk5X2NvbXBvdW5kX2xpdGVyYWwsIGRpYWc6OmV4dF9jOTlfZmxleGlibGVfYXJyYXlfbWVtYmVyLCBkaWFnOjpleHRfYzk5X3ZhcmlhYmxlX2RlY2xfaW5fZm9yX2xvb3AsIGRpYWc6OmV4dF9jYXN0X2ZuX29iaiwgZGlhZzo6ZXh0X2NsYW5nX2RpYWdub3NlX2lmLCBkaWFnOjpleHRfY2xhbmdfZW5hYmxlX2lmLCBkaWFnOjpleHRfY3h4MTFfZW51bV9maXhlZF91bmRlcmx5aW5nX3R5cGUsIGRpYWc6OmV4dF9jeHgxNF9hdHRyLCBkaWFnOjpleHRfY3h4MTdfYXR0ciwgZGlhZzo6ZXh0X2Rlc2lnbmF0ZWRfaW5pdCwgZGlhZzo6ZXh0X2R1cGxpY2F0ZV9kZWNsc3BlYywgZGlhZzo6ZXh0X2VsbGlwc2lzX2V4Y2VwdGlvbl9zcGVjLCBkaWFnOjpleHRfZW1wdHlfZm5tYWNyb19hcmcsIGRpYWc6OmV4dF9lbnVtX3ZhbHVlX25vdF9pbnQsIGRpYWc6OmV4dF9lbnVtZXJhdG9yX2xpc3RfY29tbWFfYywgZGlhZzo6ZXh0X2VudW1lcmF0b3JfbGlzdF9jb21tYV9jeHgsIGRpYWc6OmV4dF9leHBsaWNpdF9pbnN0YW50aWF0aW9uX3dpdGhvdXRfcXVhbGlmaWVkX2lkLCBkaWFnOjpleHRfZXh0ZXJuX3RlbXBsYXRlLCBkaWFnOjpleHRfZXh0cmFfc2VtaSwgZGlhZzo6ZXh0X2ZvcndhcmRfcmVmX2VudW0sIGRpYWc6OmV4dF9mcmVlc3RhbmRpbmdfY29tcGxleCwgZGlhZzo6ZXh0X2dudV9hcnJheV9yYW5nZSwgZGlhZzo6ZXh0X2dudV9wdHJfZnVuY19hcml0aCwgZGlhZzo6ZXh0X2dudV9zdWJzY3JpcHRfdm9pZF90eXBlLCBkaWFnOjpleHRfZ251X3ZvaWRfcHRyLCBkaWFnOjpleHRfaGV4X2NvbnN0YW50X2ludmFsaWQsIGRpYWc6OmV4dF9oZXhfbGl0ZXJhbF9pbnZhbGlkLCBkaWFnOjpleHRfaWRlbnRfbGlzdF9pbl9wYXJhbSwgZGlhZzo6ZXh0X2ludGVnZXJfY29tcGxlbWVudF9jb21wbGV4LCBkaWFnOjpleHRfaW50ZWdlcl9pbmNyZW1lbnRfY29tcGxleCwgZGlhZzo6ZXh0X2ludGVybmFsX2luX2V4dGVybl9pbmxpbmVfcXVpZXQsIGRpYWc6OmV4dF9pbnZhbGlkX3NpZ25fc3BlYywgZGlhZzo6ZXh0X2xpbmVfY29tbWVudCwgZGlhZzo6ZXh0X21haW5fdXNlZCwgZGlhZzo6ZXh0X211bHRpX2xpbmVfbGluZV9jb21tZW50LCBkaWFnOjpleHRfbmFtZWRfdmFyaWFkaWNfbWFjcm8sIGRpYWc6OmV4dF9ub19uZXdsaW5lX2VvZiwgZGlhZzo6ZXh0X25vbnN0YW5kYXJkX2VzY2FwZSwgZGlhZzo6ZXh0X25zX2VudW1fYXR0cmlidXRlLCBkaWFnOjpleHRfcGFyYW1fbm90X2RlY2xhcmVkLCBkaWFnOjpleHRfcG9pbnRlcl90b19jb25zdF9yZWZfbWVtYmVyX29uX3J2YWx1ZSwgZGlhZzo6ZXh0X3BwX2JhZF92YWFyZ3NfdXNlLCBkaWFnOjpleHRfcHBfY29tbWFfZXhwciwgZGlhZzo6ZXh0X3BwX2lkZW50X2RpcmVjdGl2ZSwgZGlhZzo6ZXh0X3BwX2xpbmVfdG9vX2JpZywgZGlhZzo6ZXh0X3BwX3dhcm5pbmdfZGlyZWN0aXZlLCBkaWFnOjpleHRfcmV0dXJuX2hhc192b2lkX2V4cHIsIGRpYWc6OmV4dF9ydmFsdWVfdG9fcmVmZXJlbmNlX2FjY2Vzc19jdG9yLCBkaWFnOjpleHRfcnZhbHVlX3RvX3JlZmVyZW5jZV90ZW1wX2NvcHlfbm9fdmlhYmxlLCBkaWFnOjpleHRfc2l6ZW9mX2FsaWdub2ZfZnVuY3Rpb25fdHlwZSwgZGlhZzo6ZXh0X3NpemVvZl9hbGlnbm9mX3ZvaWRfdHlwZSwgZGlhZzo6ZXh0X3N1YnNjcmlwdF9ub25fbHZhbHVlLCBkaWFnOjpleHRfdGhyZWFkX2JlZm9yZSwgZGlhZzo6ZXh0X3R5cGVjaGVja19hZGRyb2Zfdm9pZCwgZGlhZzo6ZXh0X3R5cGVjaGVja19jYXN0X25vbnNjYWxhciwgZGlhZzo6ZXh0X3R5cGVjaGVja19jb21wYXJpc29uX29mX2ZwdHJfdG9fdm9pZCwgZGlhZzo6ZXh0X3R5cGVjaGVja19jb25kX29uZV92b2lkLCBkaWFnOjpleHRfdHlwZWNoZWNrX2NvbnZlcnRfcG9pbnRlcl92b2lkX2Z1bmMsIGRpYWc6OmV4dF90eXBlY2hlY2tfb3JkZXJlZF9jb21wYXJpc29uX29mX3BvaW50ZXJfYW5kX3plcm8sIGRpYWc6OmV4dF92YXJpYWRpY19tYWNybywgZGlhZzo6d2Fybl9kZWZpbmVkX2luX2Z1bmN0aW9uX3R5cGVfbWFjcm8sIGRpYWc6Ondhcm5fZm9ybWF0X2NvbnZlcnNpb25fYXJndW1lbnRfdHlwZV9taXNtYXRjaF9wZWRhbnRpYywgZGlhZzo6d2Fybl9pbGxlZ2FsX2NvbnN0YW50X2FycmF5X3NpemUsIGRpYWc6Ondhcm5fa2Vybl9pc19tZXRob2QsIC0xLAotICAvKiBEaWFnQXJyYXk1MTcgKi8gZGlhZzo6d2Fybl9wcmFnbWFfZXh0ZW5zaW9uX2lzX2NvcmUsIC0xLAotICAvKiBEaWFnQXJyYXk1MTggKi8gZGlhZzo6d2Fybl9wZXNzaW1pemluZ19tb3ZlX29uX2luaXRpYWxpemF0aW9uLCBkaWFnOjp3YXJuX3Blc3NpbWl6aW5nX21vdmVfb25fcmV0dXJuLCAtMSwKLSAgLyogRGlhZ0FycmF5NTE5ICovIGRpYWc6OmV4dF9nbnVfcHRyX2Z1bmNfYXJpdGgsIGRpYWc6OmV4dF9nbnVfc3Vic2NyaXB0X3ZvaWRfdHlwZSwgZGlhZzo6ZXh0X2dudV92b2lkX3B0ciwgZGlhZzo6ZXh0X3NpemVvZl9hbGlnbm9mX2Z1bmN0aW9uX3R5cGUsIGRpYWc6OmV4dF9zaXplb2ZfYWxpZ25vZl92b2lkX3R5cGUsIGRpYWc6Ondhcm5fc3ViX3B0cl96ZXJvX3NpemVfdHlwZXMsIC0xLAotICAvKiBEaWFnQXJyYXk1MjAgKi8gZGlhZzo6d2Fybl9jYXN0X25vbm51bGxfdG9fYm9vbCwgZGlhZzo6d2Fybl9pbXBjYXN0X3BvaW50ZXJfdG9fYm9vbCwgLTEsCi0gIC8qIERpYWdBcnJheTUyMSAqLyBkaWFnOjpleHRfdHlwZWNoZWNrX2NvbnZlcnRfaW5jb21wYXRpYmxlX3BvaW50ZXJfc2lnbiwgLTEsCi0gIC8qIERpYWdBcnJheTUyMyAqLyBkaWFnOjpleHRfdHlwZWNoZWNrX2NvbmRfaW5jb21wYXRpYmxlX3BvaW50ZXJzLCAtMSwKLSAgLyogRGlhZ0FycmF5NTI0ICovIGRpYWc6Ondhcm5fc2lkZV9lZmZlY3RzX3R5cGVpZCwgLTEsCi0gIC8qIERpYWdBcnJheTUyNSAqLyBkaWFnOjp3YXJuX3ByYWdtYV9hdHRyaWJ1dGVfdW51c2VkLCAtMSwKLSAgLyogRGlhZ0FycmF5NTI2ICovIGRpYWc6OnBwX3ByYWdtYV9vbmNlX2luX21haW5fZmlsZSwgLTEsCi0gIC8qIERpYWdBcnJheTUyNyAqLyBkaWFnOjp3YXJuX3ByYWdtYV9wYWNrX21vZGlmaWVkX2FmdGVyX2luY2x1ZGUsIGRpYWc6Ondhcm5fcHJhZ21hX3BhY2tfbm9fcG9wX2VvZiwgLTEsCi0gIC8qIERpYWdBcnJheTUyOCAqLyBkaWFnOjp3YXJuX3ByYWdtYV9wYWNrX25vbl9kZWZhdWx0X2F0X2luY2x1ZGUsIC0xLAotICAvKiBEaWFnQXJyYXk1MjkgKi8gZGlhZzo6cHBfcHJhZ21hX3N5c2hlYWRlcl9pbl9tYWluX2ZpbGUsIC0xLAotICAvKiBEaWFnQXJyYXk1MzAgKi8gZGlhZzo6d2Fybl9yZWRlZmluZV9leHRuYW1lX25vdF9hcHBsaWVkLCAtMSwKLSAgLyogRGlhZ0FycmF5NTMxICovIGRpYWc6OmV4dF9wcmVkZWZfb3V0c2lkZV9mdW5jdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTUzMiAqLyBkaWFnOjp3YXJuX3ByaXZhdGVfZXh0ZXJuLCAtMSwKLSAgLyogRGlhZ0FycmF5NTMzICovIGRpYWc6Ondhcm5fdXNlX29mX3ByaXZhdGVfaGVhZGVyX291dHNpZGVfbW9kdWxlLCAtMSwKLSAgLyogRGlhZ0FycmF5NTM0ICovIGRpYWc6Ondhcm5fbW1hcF9taXNtYXRjaGVkX3ByaXZhdGVfbW9kdWxlX25hbWUsIGRpYWc6Ondhcm5fbW1hcF9taXNtYXRjaGVkX3ByaXZhdGVfc3VibW9kdWxlLCBkaWFnOjp3YXJuX21tYXBfcmVkdW5kYW50X2V4cG9ydF9hcywgZGlhZzo6d2Fybl9ub19wcml2X3N1Ym1vZHVsZV91c2VfdG9wbGV2ZWwsIC0xLAotICAvKiBEaWFnQXJyYXk1MzUgKi8gZGlhZzo6d2Fybl9wcm9maWxlX2RhdGFfbWlzc2luZywgLTEsCi0gIC8qIERpYWdBcnJheTUzNiAqLyBkaWFnOjp3YXJuX3Byb2ZpbGVfZGF0YV9vdXRfb2ZfZGF0ZSwgLTEsCi0gIC8qIERpYWdBcnJheTUzNyAqLyBkaWFnOjp3YXJuX3Byb2ZpbGVfZGF0YV91bnByb2ZpbGVkLCAtMSwKLSAgLyogRGlhZ0FycmF5NTM4ICovIGRpYWc6Ondhcm5fcHJvcGVydHlfYWNjZXNzX3N1Z2dlc3QsIC0xLAotICAvKiBEaWFnQXJyYXk1MzkgKi8gZGlhZzo6d2Fybl9wcm9wZXJ0eV9hdHRyX21pc21hdGNoLCBkaWFnOjp3YXJuX3Byb3BlcnR5X2F0dHJpYnV0ZSwgZGlhZzo6d2Fybl9wcm9wZXJ0eV9yZWRlY2xfZ2V0dGVyX21pc21hdGNoLCBkaWFnOjp3YXJuX3JlYWRvbmx5X3Byb3BlcnR5LCAtMSwKLSAgLyogRGlhZ0FycmF5NTQwICovIGRpYWc6Ondhcm5fdW5pbXBsZW1lbnRlZF9wcm90b2NvbF9tZXRob2QsIC0xLAotICAvKiBEaWFnQXJyYXk1NDEgKi8gZGlhZzo6d2Fybl9wcm90b2NvbF9wcm9wZXJ0eV9taXNtYXRjaCwgLTEsCi0gIC8qIERpYWdBcnJheTU0MiAqLyBkaWFnOjplcnJfZnVuY19yZXR1cm5pbmdfcXVhbGlmaWVkX3ZvaWQsIC0xLAotICAvKiBEaWFnQXJyYXk1NDMgKi8gZGlhZzo6d2Fybl9xdW90ZWRfaW5jbHVkZV9pbl9mcmFtZXdvcmtfaGVhZGVyLCAtMSwKLSAgLyogRGlhZ0FycmF5NTQ0ICovIGRpYWc6Ondhcm5fZm9yX3JhbmdlX2NvbnN0X3JlZmVyZW5jZV9jb3B5LCBkaWFnOjp3YXJuX2Zvcl9yYW5nZV9jb3B5LCBkaWFnOjp3YXJuX2Zvcl9yYW5nZV92YXJpYWJsZV9hbHdheXNfY29weSwgLTEsCi0gIC8qIERpYWdBcnJheTU0NSAqLyBkaWFnOjp3YXJuX2F1dG9fcmVhZG9ubHlfaWJvdXRsZXRfcHJvcGVydHksIC0xLAotICAvKiBEaWFnQXJyYXk1NDYgKi8gZGlhZzo6d2Fybl9iYWRfcmVjZWl2ZXJfdHlwZSwgLTEsCi0gIC8qIERpYWdBcnJheTU0NyAqLyBkaWFnOjp3YXJuX3JlY2VpdmVyX2ZvcndhcmRfY2xhc3MsIGRpYWc6Ondhcm5fcmVjZWl2ZXJfZm9yd2FyZF9pbnN0YW5jZSwgLTEsCi0gIC8qIERpYWdBcnJheTU0OCAqLyBkaWFnOjpleHRfbWVtYmVyX3JlZGVjbGFyZWQsIC0xLAotICAvKiBEaWFnQXJyYXk1NTAgKi8gZGlhZzo6d2Fybl9yZWR1bmRhbnRfbW92ZV9vbl9yZXR1cm4sIC0xLAotICAvKiBEaWFnQXJyYXk1NTEgKi8gZGlhZzo6d2Fybl9yZWR1bmRhbnRfcGFyZW5zX2Fyb3VuZF9kZWNsYXJhdG9yLCAtMSwKLSAgLyogRGlhZ0FycmF5NTUyICovIGRpYWc6OmV4dF9yZWdpc3Rlcl9zdG9yYWdlX2NsYXNzLCAtMSwKLSAgLyogRGlhZ0FycmF5NTUzICovIGRpYWc6Ondhcm5fcmVpbnRlcnByZXRfZGlmZmVyZW50X2Zyb21fc3RhdGljLCAtMSwKLSAgLyogRGlhZ0FycmF5NTU0ICovIGRpYWc6OnJlbWFya19mZV9iYWNrZW5kX3BsdWdpbiwgLTEsCi0gIC8qIERpYWdBcnJheTU1NSAqLyBkaWFnOjp3YXJuX2luaXRpYWxpemVyX291dF9vZl9vcmRlciwgLTEsCi0gIC8qIERpYWdBcnJheTU1NiAqLyBkaWFnOjp3YXJuX29iamNfcmVxdWlyZXNfc3VwZXJfcHJvdG9jb2wsIC0xLAotICAvKiBEaWFnQXJyYXk1NTcgKi8gZGlhZzo6d2Fybl9wcF9tYWNyb19pc19yZXNlcnZlZF9pZCwgLTEsCi0gIC8qIERpYWdBcnJheTU1OCAqLyBkaWFnOjpleHRfbXNfcmVzZXJ2ZWRfdXNlcl9kZWZpbmVkX2xpdGVyYWwsIGRpYWc6OmV4dF9yZXNlcnZlZF91c2VyX2RlZmluZWRfbGl0ZXJhbCwgLTEsCi0gIC8qIERpYWdBcnJheTU1OSAqLyBkaWFnOjpleHRfcmV0YWluZWRfbGFuZ3VhZ2VfbGlua2FnZSwgLTEsCi0gIC8qIERpYWdBcnJheTU2MCAqLyBkaWFnOjp3YXJuX3JldF9hZGRyX2xhYmVsLCBkaWFnOjp3YXJuX3JldF9sb2NhbF90ZW1wX2FkZHJfcmVmLCBkaWFnOjp3YXJuX3JldF9zdGFja19hZGRyX3JlZiwgLTEsCi0gIC8qIERpYWdBcnJheTU2MSAqLyBkaWFnOjp3YXJuX3JldHVybl9zdGRfbW92ZSwgLTEsCi0gIC8qIERpYWdBcnJheTU2MiAqLyBkaWFnOjp3YXJuX3JldHVybl9zdGRfbW92ZV9pbl9jeHgxMSwgLTEsCi0gIC8qIERpYWdBcnJheTU2MyAqLyBkaWFnOjpleHRfcmV0dXJuX2hhc19leHByLCBkaWFnOjpleHRfcmV0dXJuX21pc3NpbmdfZXhwciwgZGlhZzo6d2Fybl9mYWxsb2ZmX25vbnZvaWRfY29yb3V0aW5lLCBkaWFnOjp3YXJuX2ZhbGxvZmZfbm9udm9pZF9mdW5jdGlvbiwgZGlhZzo6d2Fybl9mYWxsb2ZmX25vbnZvaWRfbGFtYmRhLCBkaWFnOjp3YXJuX21heWJlX2ZhbGxvZmZfbm9udm9pZF9jb3JvdXRpbmUsIGRpYWc6Ondhcm5fbWF5YmVfZmFsbG9mZl9ub252b2lkX2Z1bmN0aW9uLCBkaWFnOjp3YXJuX21heWJlX2ZhbGxvZmZfbm9udm9pZF9sYW1iZGEsIGRpYWc6Ondhcm5fcmV0dXJuX21pc3NpbmdfZXhwciwgLTEsCi0gIC8qIERpYWdBcnJheTU2NCAqLyBkaWFnOjp3YXJuX3JldHVybl92YWx1ZV91ZHQsIGRpYWc6Ondhcm5fcmV0dXJuX3ZhbHVlX3VkdF9pbmNvbXBsZXRlLCAtMSwKLSAgLyogRGlhZ0FycmF5NTY1ICovIGRpYWc6OnJlbWFya19zYW5pdGl6ZV9hZGRyZXNzX2luc2VydF9leHRyYV9wYWRkaW5nX2FjY2VwdGVkLCBkaWFnOjpyZW1hcmtfc2FuaXRpemVfYWRkcmVzc19pbnNlcnRfZXh0cmFfcGFkZGluZ19yZWplY3RlZCwgLTEsCi0gIC8qIERpYWdBcnJheTU2NiAqLyBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9zZWN0aW9uX29uX3JlZGVjbGFyYXRpb24sIGRpYWc6Ondhcm5fZHVwbGljYXRlX2NvZGVzZWdfYXR0cmlidXRlLCBkaWFnOjp3YXJuX21pc21hdGNoZWRfc2VjdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTU2NyAqLyBkaWFnOjp3YXJuX3VuaW1wbGVtZW50ZWRfc2VsZWN0b3IsIC0xLAotICAvKiBEaWFnQXJyYXk1NjggKi8gZGlhZzo6d2Fybl9tdWx0aXBsZV9zZWxlY3RvcnMsIC0xLAotICAvKiBEaWFnQXJyYXk1NjkgKi8gZGlhZzo6d2Fybl9zZWxmX2Fzc2lnbm1lbnRfYnVpbHRpbiwgLTEsCi0gIC8qIERpYWdBcnJheTU3MCAqLyBkaWFnOjp3YXJuX2lkZW50aXR5X2ZpZWxkX2Fzc2lnbiwgLTEsCi0gIC8qIERpYWdBcnJheTU3MSAqLyBkaWFnOjp3YXJuX3NlbGZfYXNzaWdubWVudF9vdmVybG9hZGVkLCAtMSwKLSAgLyogRGlhZ0FycmF5NTcyICovIGRpYWc6Ondhcm5fc2VsZl9tb3ZlLCAtMSwKLSAgLyogRGlhZ0FycmF5NTczICovIGRpYWc6Ondhcm5fc2VtaWNvbG9uX2JlZm9yZV9tZXRob2RfYm9keSwgLTEsCi0gIC8qIERpYWdBcnJheTU3NCAqLyBkaWFnOjp3YXJuX21pc3Npbmdfc2VudGluZWwsIGRpYWc6Ondhcm5fbm90X2Vub3VnaF9hcmd1bWVudCwgLTEsCi0gIC8qIERpYWdBcnJheTU3NiAqLyBkaWFnOjp3YXJuX2ZlX3NlcmlhbGl6ZWRfZGlhZ19mYWlsdXJlLCBkaWFnOjp3YXJuX2ZlX3NlcmlhbGl6ZWRfZGlhZ19tZXJnZV9mYWlsdXJlLCAtMSwKLSAgLyogRGlhZ0FycmF5NTc3ICovIGRpYWc6Ondhcm5fZGVjbF9zaGFkb3csIC0xLAotICAvKiBEaWFnQXJyYXk1NzkgKi8gZGlhZzo6d2Fybl9zaGFkb3dfZmllbGQsIC0xLAotICAvKiBEaWFnQXJyYXk1ODAgKi8gZGlhZzo6d2Fybl9jdG9yX3Bhcm1fc2hhZG93c19maWVsZCwgLTEsCi0gIC8qIERpYWdBcnJheTU4MSAqLyBkaWFnOjp3YXJuX21vZGlmeWluZ19zaGFkb3dpbmdfZGVjbCwgLTEsCi0gIC8qIERpYWdBcnJheTU4MiAqLyBkaWFnOjp3YXJuX2l2YXJfdXNlX2hpZGRlbiwgLTEsCi0gIC8qIERpYWdBcnJheTU4MyAqLyBkaWFnOjp3YXJuX2RlY2xfc2hhZG93X3VuY2FwdHVyZWRfbG9jYWwsIC0xLAotICAvKiBEaWFnQXJyYXk1ODQgKi8gZGlhZzo6d2Fybl9zaGlmdF9uZWdhdGl2ZSwgLTEsCi0gIC8qIERpYWdBcnJheTU4NSAqLyBkaWFnOjp3YXJuX3NoaWZ0X2d0X3R5cGV3aWR0aCwgLTEsCi0gIC8qIERpYWdBcnJheTU4NiAqLyBkaWFnOjp3YXJuX3NoaWZ0X2xoc19uZWdhdGl2ZSwgLTEsCi0gIC8qIERpYWdBcnJheTU4NyAqLyBkaWFnOjp3YXJuX2FkZGl0aW9uX2luX2JpdHNoaWZ0LCAtMSwKLSAgLyogRGlhZ0FycmF5NTg4ICovIGRpYWc6Ondhcm5fc2hpZnRfcmVzdWx0X2d0X3R5cGV3aWR0aCwgLTEsCi0gIC8qIERpYWdBcnJheTU4OSAqLyBkaWFnOjp3YXJuX3NoaWZ0X3Jlc3VsdF9zZXRzX3NpZ25fYml0LCAtMSwKLSAgLyogRGlhZ0FycmF5NTkwICovIGRpYWc6Ondhcm5faW1wY2FzdF9pbnRlZ2VyXzY0XzMyLCAtMSwKLSAgLyogRGlhZ0FycmF5NTkxICovIGRpYWc6Ondhcm5fbWl4ZWRfc2lnbl9jb21wYXJpc29uLCAtMSwKLSAgLyogRGlhZ0FycmF5NTkyICovIGRpYWc6Ondhcm5faW1wY2FzdF9pbnRlZ2VyX3NpZ24sIGRpYWc6Ondhcm5faW1wY2FzdF9pbnRlZ2VyX3NpZ25fY29uZGl0aW9uYWwsIGRpYWc6Ondhcm5faW1wY2FzdF9ub25uZWdhdGl2ZV9yZXN1bHQsIC0xLAotICAvKiBEaWFnQXJyYXk1OTQgKi8gZGlhZzo6d2Fybl9ub191bmRlcmx5aW5nX3R5cGVfc3BlY2lmaWVkX2Zvcl9lbnVtX2JpdGZpZWxkLCAtMSwKLSAgLyogRGlhZ0FycmF5NTk1ICovIGRpYWc6Ondhcm5fc2l6ZW9mX2FycmF5X3BhcmFtLCAtMSwKLSAgLyogRGlhZ0FycmF5NTk2ICovIGRpYWc6Ondhcm5fc2l6ZW9mX2FycmF5X2RlY2F5LCAtMSwKLSAgLyogRGlhZ0FycmF5NTk3ICovIGRpYWc6Ondhcm5fc2l6ZW9mX3BvaW50ZXJfZXhwcl9tZW1hY2Nlc3MsIGRpYWc6Ondhcm5fc2l6ZW9mX3BvaW50ZXJfdHlwZV9tZW1hY2Nlc3MsIC0xLAotICAvKiBEaWFnQXJyYXk1OTggKi8gZGlhZzo6d2Fybl9zbGFzaF91X2ZpbGVuYW1lLCAtMSwKLSAgLyogRGlhZ0FycmF5NTk5ICovIGRpYWc6Ondhcm5fc29tZXRpbWVzX3VuaW5pdF92YXIsIC0xLAotICAvKiBEaWFnQXJyYXk2MDAgKi8gZGlhZzo6d2Fybl9vbXBfbmVzdGluZ19zaW1kLCBkaWFnOjp3YXJuX3ByYWdtYV9vbXBfaWdub3JlZCwgLTEsCi0gIC8qIERpYWdBcnJheTYwMSAqLyBkaWFnOjp3YXJuX3NhbXBsZXJfaW5pdGlhbGl6ZXJfaW52YWxpZF9iaXRzLCAtMSwKLSAgLyogRGlhZ0FycmF5NjAzICovIGRpYWc6OmV4dF9pbl9jbGFzc19pbml0aWFsaXplcl9mbG9hdF90eXBlX2N4eDExLCAtMSwKLSAgLyogRGlhZ0FycmF5NjA0ICovIGRpYWc6OmV4dF9pbnRlcm5hbF9pbl9leHRlcm5faW5saW5lLCBkaWFnOjpleHRfaW50ZXJuYWxfaW5fZXh0ZXJuX2lubGluZV9xdWlldCwgLTEsCi0gIC8qIERpYWdBcnJheTYwNSAqLyBkaWFnOjp3YXJuX3N0YXRpY19pbmxpbmVfZXhwbGljaXRfaW5zdF9pZ25vcmVkLCAtMSwKLSAgLyogRGlhZ0FycmF5NjA2ICovIGRpYWc6Ondhcm5fc3RhdGljX2xvY2FsX2luX2V4dGVybl9pbmxpbmUsIC0xLAotICAvKiBEaWFnQXJyYXk2MDcgKi8gZGlhZzo6d2Fybl9zdGF0aWNfc2VsZl9yZWZlcmVuY2VfaW5faW5pdCwgLTEsCi0gIC8qIERpYWdBcnJheTYwOCAqLyBkaWFnOjp3YXJuX3N0ZGxpYmN4eF9ub3RfZm91bmQsIC0xLAotICAvKiBEaWFnQXJyYXk2MjAgKi8gZGlhZzo6d2Fybl9zdHJpY3RfcHJvdG90eXBlcywgLTEsCi0gIC8qIERpYWdBcnJheTYyMSAqLyBkaWFnOjp3YXJuX3N0cmljdF9tdWx0aXBsZV9tZXRob2RfZGVjbCwgLTEsCi0gIC8qIERpYWdBcnJheTYyMiAqLyBkaWFnOjp3YXJuX3N0cmluZ2NvbXBhcmUsIC0xLAotICAvKiBEaWFnQXJyYXk2MjMgKi8gZGlhZzo6d2Fybl9pbXBjYXN0X3N0cmluZ19saXRlcmFsX3RvX2Jvb2wsIC0xLAotICAvKiBEaWFnQXJyYXk2MjQgKi8gZGlhZzo6d2Fybl9zdHJpbmdfcGx1c19jaGFyLCAtMSwKLSAgLyogRGlhZ0FycmF5NjI1ICovIGRpYWc6Ondhcm5fc3RyaW5nX3BsdXNfaW50LCAtMSwKLSAgLyogRGlhZ0FycmF5NjI2ICovIGRpYWc6Ondhcm5fc3RybGNweWNhdF93cm9uZ19zaXplLCAtMSwKLSAgLyogRGlhZ0FycmF5NjI3ICovIGRpYWc6Ondhcm5fc3RybmNhdF9sYXJnZV9zaXplLCBkaWFnOjp3YXJuX3N0cm5jYXRfc3JjX3NpemUsIGRpYWc6Ondhcm5fc3RybmNhdF93cm9uZ19zaXplLCAtMSwKLSAgLyogRGlhZ0FycmF5NjI4ICovIGRpYWc6OmV4dF90eXBlY2hlY2tfYmFzZV9zdXBlciwgLTEsCi0gIC8qIERpYWdBcnJheTYyOSAqLyBkaWFnOjp3YXJuX3N1c3BpY2lvdXNfYnplcm9fc2l6ZSwgLTEsCi0gIC8qIERpYWdBcnJheTYzMSAqLyBkaWFnOjp3YXJuX2Nhc2VfdmFsdWVfb3ZlcmZsb3csIGRpYWc6Ondhcm5fbWlzc2luZ19jYXNlLCBkaWFnOjp3YXJuX25vdF9pbl9lbnVtLCAtMSwKLSAgLyogRGlhZ0FycmF5NjMyICovIGRpYWc6Ondhcm5fYm9vbF9zd2l0Y2hfY29uZGl0aW9uLCAtMSwKLSAgLyogRGlhZ0FycmF5NjM0ICovIGRpYWc6Ondhcm5fZGVmX21pc3NpbmdfY2FzZSwgLTEsCi0gIC8qIERpYWdBcnJheTYzNSAqLyBkaWFnOjp3YXJuX3N5bmNfZmV0Y2hfYW5kX25hbmRfc2VtYW50aWNzX2NoYW5nZSwgLTEsCi0gIC8qIERpYWdBcnJheTYzNyAqLyBkaWFnOjp3YXJuX2NvbXBhcmlzb25fYWx3YXlzLCBkaWFnOjp3YXJuX2NvbXBhcmlzb25fYml0d2lzZV9hbHdheXMsIC0xLAotICAvKiBEaWFnQXJyYXk2MzggKi8gZGlhZzo6d2Fybl90YXV0b2xvZ2ljYWxfYm9vbF9jb21wYXJlLCAtMSwKLSAgLyogRGlhZ0FycmF5NjQwICovIGRpYWc6Ondhcm5fb3V0X29mX3JhbmdlX2NvbXBhcmUsIC0xLAotICAvKiBEaWFnQXJyYXk2NDEgKi8gZGlhZzo6d2Fybl90YXV0b2xvZ2ljYWxfb3ZlcmxhcF9jb21wYXJpc29uLCAtMSwKLSAgLyogRGlhZ0FycmF5NjQyICovIGRpYWc6Ondhcm5fbm9ubnVsbF9leHByX2NvbXBhcmUsIGRpYWc6Ondhcm5fbnVsbF9wb2ludGVyX2NvbXBhcmUsIC0xLAotICAvKiBEaWFnQXJyYXk2NDMgKi8gZGlhZzo6d2Fybl90YXV0b2xvZ2ljYWxfY29uc3RhbnRfY29tcGFyZSwgLTEsCi0gIC8qIERpYWdBcnJheTY0NCAqLyBkaWFnOjp3YXJuX2FkZHJlc3Nfb2ZfcmVmZXJlbmNlX251bGxfY29tcGFyZSwgZGlhZzo6d2Fybl90aGlzX251bGxfY29tcGFyZSwgLTEsCi0gIC8qIERpYWdBcnJheTY0NSAqLyBkaWFnOjp3YXJuX3Vuc2lnbmVkX2VudW1fYWx3YXlzX3RydWVfY29tcGFyaXNvbiwgLTEsCi0gIC8qIERpYWdBcnJheTY0NiAqLyBkaWFnOjp3YXJuX3Vuc2lnbmVkX2Fsd2F5c190cnVlX2NvbXBhcmlzb24sIC0xLAotICAvKiBEaWFnQXJyYXk2NDcgKi8gZGlhZzo6ZXh0X3R5cGVjaGVja19kZWNsX2luY29tcGxldGVfdHlwZSwgLTEsCi0gIC8qIERpYWdBcnJheTY0OSAqLyBkaWFnOjp3YXJuX2FjcXVpcmVkX2JlZm9yZSwgZGlhZzo6d2Fybl9hY3F1aXJlZF9iZWZvcmVfYWZ0ZXJfY3ljbGUsIGRpYWc6Ondhcm5fY2Fubm90X3Jlc29sdmVfbG9jaywgZGlhZzo6d2Fybl9kb3VibGVfbG9jaywgZGlhZzo6d2Fybl9leHBlY3RpbmdfbG9ja19oZWxkX29uX2xvb3AsIGRpYWc6Ondhcm5fZXhwZWN0aW5nX2xvY2tlZCwgZGlhZzo6d2Fybl9mdW5fZXhjbHVkZXNfbXV0ZXgsIGRpYWc6Ondhcm5fZnVuX3JlcXVpcmVzX2xvY2ssIGRpYWc6Ondhcm5fbG9ja19leGNsdXNpdmVfYW5kX3NoYXJlZCwgZGlhZzo6d2Fybl9sb2NrX3NvbWVfcHJlZGVjZXNzb3JzLCBkaWFnOjp3YXJuX25vX3VubG9jaywgZGlhZzo6d2Fybl91bmxvY2tfYnV0X25vX2xvY2ssIGRpYWc6Ondhcm5fdW5sb2NrX2tpbmRfbWlzbWF0Y2gsIGRpYWc6Ondhcm5fdmFyX2RlcmVmX3JlcXVpcmVzX2FueV9sb2NrLCBkaWFnOjp3YXJuX3Zhcl9kZXJlZl9yZXF1aXJlc19sb2NrLCBkaWFnOjp3YXJuX3ZhcmlhYmxlX3JlcXVpcmVzX2FueV9sb2NrLCBkaWFnOjp3YXJuX3ZhcmlhYmxlX3JlcXVpcmVzX2xvY2ssIC0xLAotICAvKiBEaWFnQXJyYXk2NTAgKi8gZGlhZzo6d2Fybl9pbnZhbGlkX2NhcGFiaWxpdHlfbmFtZSwgZGlhZzo6d2Fybl90aHJlYWRfYXR0cmlidXRlX2FyZ3VtZW50X25vdF9sb2NrYWJsZSwgZGlhZzo6d2Fybl90aHJlYWRfYXR0cmlidXRlX2RlY2xfbm90X2xvY2thYmxlLCBkaWFnOjp3YXJuX3RocmVhZF9hdHRyaWJ1dGVfZGVjbF9ub3RfcG9pbnRlciwgZGlhZzo6d2Fybl90aHJlYWRfYXR0cmlidXRlX2lnbm9yZWQsIGRpYWc6Ondhcm5fdGhyZWFkX2F0dHJpYnV0ZV9ub3Rfb25fY2FwYWJpbGl0eV9tZW1iZXIsIGRpYWc6Ondhcm5fdGhyZWFkX2F0dHJpYnV0ZV9ub3Rfb25fbm9uX3N0YXRpY19tZW1iZXIsIC0xLAotICAvKiBEaWFnQXJyYXk2NTEgKi8gZGlhZzo6d2Fybl90aHJlYWRfc2FmZXR5X2JldGEsIC0xLAotICAvKiBEaWFnQXJyYXk2NTIgKi8gZGlhZzo6d2Fybl9hY3F1aXJlX3JlcXVpcmVzX25lZ2F0aXZlX2NhcCwgLTEsCi0gIC8qIERpYWdBcnJheTY1MyAqLyBkaWFnOjp3YXJuX2Z1bl9yZXF1aXJlc19sb2NrX3ByZWNpc2UsIGRpYWc6Ondhcm5fdmFyX2RlcmVmX3JlcXVpcmVzX2xvY2tfcHJlY2lzZSwgZGlhZzo6d2Fybl92YXJpYWJsZV9yZXF1aXJlc19sb2NrX3ByZWNpc2UsIC0xLAotICAvKiBEaWFnQXJyYXk2NTQgKi8gZGlhZzo6d2Fybl9ndWFyZGVkX3Bhc3NfYnlfcmVmZXJlbmNlLCBkaWFnOjp3YXJuX3B0X2d1YXJkZWRfcGFzc19ieV9yZWZlcmVuY2UsIC0xLAotICAvKiBEaWFnQXJyYXk2NTUgKi8gZGlhZzo6d2Fybl90aHJlYWRfc2FmZXR5X3ZlcmJvc2UsIC0xLAotICAvKiBEaWFnQXJyYXk2NTYgKi8gZGlhZzo6dHJpZ3JhcGhfY29udmVydGVkLCBkaWFnOjp0cmlncmFwaF9lbmRzX2Jsb2NrX2NvbW1lbnQsIGRpYWc6OnRyaWdyYXBoX2lnbm9yZWQsIGRpYWc6OnRyaWdyYXBoX2lnbm9yZWRfYmxvY2tfY29tbWVudCwgLTEsCi0gIC8qIERpYWdBcnJheTY1OCAqLyBkaWFnOjp3YXJuX3R5cGVfc2FmZXR5X251bGxfcG9pbnRlcl9yZXF1aXJlZCwgZGlhZzo6d2Fybl90eXBlX3NhZmV0eV90eXBlX21pc21hdGNoLCBkaWFnOjp3YXJuX3R5cGVfdGFnX2Zvcl9kYXRhdHlwZV93cm9uZ19raW5kLCAtMSwKLSAgLyogRGlhZ0FycmF5NjU5ICovIGRpYWc6OmV4dF9yZWRlZmluaXRpb25fb2ZfdHlwZWRlZiwgLTEsCi0gIC8qIERpYWdBcnJheTY2MCAqLyBkaWFnOjpleHRfdHlwZW5hbWVfbWlzc2luZywgLTEsCi0gIC8qIERpYWdBcnJheTY2MSAqLyBkaWFnOjp3YXJuX2ZlX3VuYWJsZV90b19vcGVuX3N0YXRzX2ZpbGUsIC0xLAotICAvKiBEaWFnQXJyYXk2NjIgKi8gZGlhZzo6d2Fybl91bmF2YWlsYWJsZV9md2RjbGFzc19tZXNzYWdlLCAtMSwKLSAgLyogRGlhZ0FycmF5NjYzICovIGRpYWc6Ondhcm5fdW5kZWNsYXJlZF9zZWxlY3RvciwgZGlhZzo6d2Fybl91bmRlY2xhcmVkX3NlbGVjdG9yX3dpdGhfdHlwbywgLTEsCi0gIC8qIERpYWdBcnJheTY2NCAqLyBkaWFnOjp3YXJuX3BwX3VuZGVmX2lkZW50aWZpZXIsIC0xLAotICAvKiBEaWFnQXJyYXk2NjUgKi8gZGlhZzo6d2Fybl9hZGRyZXNzX29mX3JlZmVyZW5jZV9ib29sX2NvbnZlcnNpb24sIGRpYWc6Ondhcm5fdGhpc19ib29sX2NvbnZlcnNpb24sIC0xLAotICAvKiBEaWFnQXJyYXk2NjYgKi8gZGlhZzo6d2Fybl9mdW5jX3RlbXBsYXRlX21pc3NpbmcsIC0xLAotICAvKiBEaWFnQXJyYXk2NjcgKi8gZGlhZzo6d2Fybl91bmRlZmluZWRfaW5saW5lLCAtMSwKLSAgLyogRGlhZ0FycmF5NjY4ICovIGRpYWc6Ondhcm5fdW5kZWZpbmVkX2ludGVybmFsLCAtMSwKLSAgLyogRGlhZ0FycmF5NjY5ICovIGRpYWc6OmV4dF91bmRlZmluZWRfaW50ZXJuYWxfdHlwZSwgLTEsCi0gIC8qIERpYWdBcnJheTY3MCAqLyBkaWFnOjp3YXJuX3BvaW50ZXJfaW5kaXJlY3Rpb25fZnJvbV9pbmNvbXBhdGlibGVfdHlwZSwgZGlhZzo6d2Fybl91bmRlZmluZWRfcmVpbnRlcnByZXRfY2FzdCwgLTEsCi0gIC8qIERpYWdBcnJheTY3MSAqLyBkaWFnOjp3YXJuX3Zhcl90ZW1wbGF0ZV9taXNzaW5nLCAtMSwKLSAgLyogRGlhZ0FycmF5NjcyICovIGRpYWc6Ondhcm5fc2lkZV9lZmZlY3RzX3VuZXZhbHVhdGVkX2NvbnRleHQsIC0xLAotICAvKiBEaWFnQXJyYXk2NzMgKi8gZGlhZzo6d2Fybl91bmd1YXJkZWRfYXZhaWxhYmlsaXR5LCAtMSwKLSAgLyogRGlhZ0FycmF5Njc0ICovIGRpYWc6Ondhcm5fdW5ndWFyZGVkX2F2YWlsYWJpbGl0eV9uZXcsIC0xLAotICAvKiBEaWFnQXJyYXk2NzUgKi8gZGlhZzo6d2Fybl91Y25fZXNjYXBlX2luY29tcGxldGUsIGRpYWc6Ondhcm5fdWNuX2VzY2FwZV9ub19kaWdpdHMsIGRpYWc6Ondhcm5fdWNuX2VzY2FwZV9zdXJyb2dhdGUsIGRpYWc6Ondhcm5fdWNuX25vdF92YWxpZF9pbl9jODksIGRpYWc6Ondhcm5fdWNuX25vdF92YWxpZF9pbl9jODlfbGl0ZXJhbCwgLTEsCi0gIC8qIERpYWdBcnJheTY3NiAqLyBkaWFnOjp3YXJuX3V0Zjhfc3ltYm9sX2hvbW9nbHlwaCwgLTEsCi0gIC8qIERpYWdBcnJheTY3NyAqLyBkaWFnOjpleHRfdW5pY29kZV93aGl0ZXNwYWNlLCAtMSwKLSAgLyogRGlhZ0FycmF5Njc4ICovIGRpYWc6Ondhcm5fdXRmOF9zeW1ib2xfemVyb193aWR0aCwgLTEsCi0gIC8qIERpYWdBcnJheTY3OSAqLyBkaWFnOjp3YXJuX2Jhc2VfY2xhc3NfaXNfdW5pbml0LCBkaWFnOjp3YXJuX2ZpZWxkX2lzX3VuaW5pdCwgZGlhZzo6d2Fybl9yZWZlcmVuY2VfZmllbGRfaXNfdW5pbml0LCBkaWFnOjp3YXJuX3VuaW5pdF9ieXJlZl9ibG9ja3Zhcl9jYXB0dXJlZF9ieV9ibG9jaywgZGlhZzo6d2Fybl91bmluaXRfc2VsZl9yZWZlcmVuY2VfaW5faW5pdCwgZGlhZzo6d2Fybl91bmluaXRfc2VsZl9yZWZlcmVuY2VfaW5fcmVmZXJlbmNlX2luaXQsIGRpYWc6Ondhcm5fdW5pbml0X3ZhciwgLTEsCi0gIC8qIERpYWdBcnJheTY4MCAqLyBkaWFnOjp3YXJuX2Rydl91bmtub3duX2FyZ3VtZW50X2NsYW5nX2NsLCBkaWFnOjp3YXJuX2Rydl91bmtub3duX2FyZ3VtZW50X2NsYW5nX2NsX3dpdGhfc3VnZ2VzdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTY4MSAqLyBkaWFnOjp3YXJuX3Vua25vd25fYXR0cmlidXRlX2lnbm9yZWQsIC0xLAotICAvKiBEaWFnQXJyYXk2ODIgKi8gZGlhZzo6ZXh0X3Vua25vd25fZXNjYXBlLCAtMSwKLSAgLyogRGlhZ0FycmF5NjgzICovIGRpYWc6OmV4dF9vbl9vZmZfc3dpdGNoX3N5bnRheCwgZGlhZzo6ZXh0X3ByYWdtYV9zeW50YXhfZW9kLCBkaWFnOjpleHRfc3RkY19wcmFnbWFfaWdub3JlZCwgZGlhZzo6d2Fybl9wcmFnbWFfZGlhZ25vc3RpY19jYW5ub3RfcG9wLCBkaWFnOjp3YXJuX3ByYWdtYV9kaWFnbm9zdGljX2ludmFsaWQsIGRpYWc6Ondhcm5fcHJhZ21hX2RpYWdub3N0aWNfaW52YWxpZF9vcHRpb24sIGRpYWc6Ondhcm5fcHJhZ21hX2RpYWdub3N0aWNfaW52YWxpZF90b2tlbiwgZGlhZzo6d2Fybl9wcmFnbWFfaWdub3JlZCwgZGlhZzo6d2Fybl9wcmFnbWFfaW5jbHVkZV9hbGlhc19leHBlY3RlZCwgZGlhZzo6d2Fybl9wcmFnbWFfaW5jbHVkZV9hbGlhc19leHBlY3RlZF9maWxlbmFtZSwgZGlhZzo6d2Fybl9wcmFnbWFfaW5jbHVkZV9hbGlhc19taXNtYXRjaF9hbmdsZSwgZGlhZzo6d2Fybl9wcmFnbWFfaW5jbHVkZV9hbGlhc19taXNtYXRjaF9xdW90ZSwgZGlhZzo6d2Fybl9wcmFnbWFfd2FybmluZ19leHBlY3RlZCwgZGlhZzo6d2Fybl9wcmFnbWFfd2FybmluZ19leHBlY3RlZF9udW1iZXIsIGRpYWc6Ondhcm5fcHJhZ21hX3dhcm5pbmdfcHVzaF9sZXZlbCwgZGlhZzo6d2Fybl9wcmFnbWFfd2FybmluZ19zcGVjX2ludmFsaWQsIGRpYWc6Ondhcm5fc3RkY19mZW52X2FjY2Vzc19ub3Rfc3VwcG9ydGVkLCAtMSwKLSAgLyogRGlhZ0FycmF5Njg0ICovIGRpYWc6Ondhcm5fdW5rbm93bl9zYW5pdGl6ZXJfaWdub3JlZCwgLTEsCi0gIC8qIERpYWdBcnJheTY4NSAqLyBkaWFnOjp3YXJuX3ByYWdtYV9kaWFnbm9zdGljX3Vua25vd25fd2FybmluZywgZGlhZzo6d2Fybl91bmtub3duX2RpYWdfb3B0aW9uLCBkaWFnOjp3YXJuX3Vua25vd25fd2FybmluZ19zcGVjaWZpZXIsIC0xLAotICAvKiBEaWFnQXJyYXk2ODYgKi8gZGlhZzo6ZXh0X3RlbXBsYXRlX2FyZ191bm5hbWVkX3R5cGUsIC0xLAotICAvKiBEaWFnQXJyYXk2ODcgKi8gZGlhZzo6d2Fybl91bm5lZWRlZF9pbnRlcm5hbF9kZWNsLCBkaWFnOjp3YXJuX3VubmVlZGVkX3N0YXRpY19pbnRlcm5hbF9kZWNsLCAtMSwKLSAgLyogRGlhZ0FycmF5Njg4ICovIGRpYWc6Ondhcm5fdW5uZWVkZWRfbWVtYmVyX2Z1bmN0aW9uLCAtMSwKLSAgLyogRGlhZ0FycmF5Njg5ICovIGRpYWc6Ondhcm5fdW5yZWFjaGFibGUsIC0xLAotICAvKiBEaWFnQXJyYXk2OTEgKi8gZGlhZzo6d2Fybl91bnJlYWNoYWJsZV9icmVhaywgLTEsCi0gIC8qIERpYWdBcnJheTY5MiAqLyBkaWFnOjp3YXJuX3VucmVhY2hhYmxlX2xvb3BfaW5jcmVtZW50LCAtMSwKLSAgLyogRGlhZ0FycmF5NjkzICovIGRpYWc6Ondhcm5fdW5yZWFjaGFibGVfcmV0dXJuLCAtMSwKLSAgLyogRGlhZ0FycmF5Njk0ICovIGRpYWc6Ondhcm5fdW5zZXF1ZW5jZWRfbW9kX21vZCwgZGlhZzo6d2Fybl91bnNlcXVlbmNlZF9tb2RfdXNlLCAtMSwKLSAgLyogRGlhZ0FycmF5Njk1ICovIGRpYWc6Ondhcm5fdGFyZ2V0X3Vuc3VwcG9ydGVkX2FiczIwMDgsIGRpYWc6Ondhcm5fdGFyZ2V0X3Vuc3VwcG9ydGVkX2Fic2xlZ2FjeSwgLTEsCi0gIC8qIERpYWdBcnJheTY5NiAqLyBkaWFnOjp3YXJuX2F0X2F2YWlsYWJsZV91bmNoZWNrZWRfdXNlLCAtMSwKLSAgLyogRGlhZ0FycmF5Njk3ICovIGRpYWc6Ondhcm5fdGFyZ2V0X3Vuc3VwcG9ydGVkX2NvbXBhY3RfYnJhbmNoZXMsIC0xLAotICAvKiBEaWFnQXJyYXk2OTggKi8gZGlhZzo6d2Fybl9hdHRyaWJ1dGVfZGxsX2luc3RhbnRpYXRlZF9iYXNlX2NsYXNzLCAtMSwKLSAgLyogRGlhZ0FycmF5Njk5ICovIGRpYWc6Ondhcm5fdGVtcGxhdGVfcXVhbGlmaWVkX2ZyaWVuZF9pZ25vcmVkLCBkaWFnOjp3YXJuX3RlbXBsYXRlX3F1YWxpZmllZF9mcmllbmRfdW5zdXBwb3J0ZWQsIC0xLAotICAvKiBEaWFnQXJyYXk3MDAgKi8gZGlhZzo6d2Fybl9kcnZfdW5zdXBwb3J0ZWRfZ3BvcHQsIC0xLAotICAvKiBEaWFnQXJyYXk3MDEgKi8gZGlhZzo6d2Fybl90YXJnZXRfdW5zdXBwb3J0ZWRfbmFuMjAwOCwgZGlhZzo6d2Fybl90YXJnZXRfdW5zdXBwb3J0ZWRfbmFubGVnYWN5LCAtMSwKLSAgLyogRGlhZ0FycmF5NzAyICovIGRpYWc6Ondhcm5fZHJ2X3Vuc3VwcG9ydGVkX2RlYnVnX2luZm9fb3B0X2Zvcl90YXJnZXQsIC0xLAotICAvKiBEaWFnQXJyYXk3MDMgKi8gZGlhZzo6d2Fybl9hdHRyaWJ1dGVfcHJvdGVjdGVkX3Zpc2liaWxpdHksIC0xLAotICAvKiBEaWFnQXJyYXk3MDQgKi8gZGlhZzo6ZXh0X3BhcnRpYWxfc3BlY3Nfbm90X2RlZHVjaWJsZSwgLTEsCi0gIC8qIERpYWdBcnJheTcwNyAqLyBkaWFnOjp3YXJuX2Rydl9kaWFnbm9zdGljc19ob3RuZXNzX3JlcXVpcmVzX3BnbywgZGlhZzo6d2Fybl9kcnZfZW1wdHlfam9pbmVkX2FyZ3VtZW50LCBkaWFnOjp3YXJuX2Rydl9pbnB1dF9maWxlX3VudXNlZCwgZGlhZzo6d2Fybl9kcnZfaW5wdXRfZmlsZV91bnVzZWRfYnlfY3BwLCBkaWFnOjp3YXJuX2Rydl9wcmVwcm9jZXNzZWRfaW5wdXRfZmlsZV91bnVzZWQsIGRpYWc6Ondhcm5fZHJ2X3VudXNlZF9hcmd1bWVudCwgZGlhZzo6d2Fybl9pZ25vcmVkX2NsYW5nX29wdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTcwOCAqLyBkaWFnOjp3YXJuX3VudXNlZF9jb21wYXJpc29uLCAtMSwKLSAgLyogRGlhZ0FycmF5NzA5ICovIGRpYWc6Ondhcm5fdW51c2VkX2NvbnN0X3ZhcmlhYmxlLCAtMSwKLSAgLyogRGlhZ0FycmF5NzEwICovIGRpYWc6Ondhcm5fdW51c2VkX2V4Y2VwdGlvbl9wYXJhbSwgLTEsCi0gIC8qIERpYWdBcnJheTcxMSAqLyBkaWFnOjp3YXJuX3VudXNlZF9mdW5jdGlvbiwgLTEsCi0gIC8qIERpYWdBcnJheTcxMiAqLyBkaWFnOjp3YXJuX3VudXNlZF9wcm9wZXJ0eV9leHByLCAtMSwKLSAgLyogRGlhZ0FycmF5NzEzICovIGRpYWc6Ondhcm5fdW51c2VkX2xhYmVsLCAtMSwKLSAgLyogRGlhZ0FycmF5NzE0ICovIGRpYWc6Ondhcm5fdW51c2VkX2xhbWJkYV9jYXB0dXJlLCAtMSwKLSAgLyogRGlhZ0FycmF5NzE1ICovIGRpYWc6Ondhcm5fdW51c2VkX2xvY2FsX3R5cGVkZWYsIC0xLAotICAvKiBEaWFnQXJyYXk3MTcgKi8gZGlhZzo6cHBfbWFjcm9fbm90X3VzZWQsIC0xLAotICAvKiBEaWFnQXJyYXk3MTggKi8gZGlhZzo6d2Fybl91bnVzZWRfbWVtYmVyX2Z1bmN0aW9uLCAtMSwKLSAgLyogRGlhZ0FycmF5NzE5ICovIGRpYWc6Ondhcm5fdW51c2VkX3BhcmFtZXRlciwgLTEsCi0gIC8qIERpYWdBcnJheTcyMCAqLyBkaWFnOjp3YXJuX3VudXNlZF9wcml2YXRlX2ZpZWxkLCAtMSwKLSAgLyogRGlhZ0FycmF5NzIxICovIGRpYWc6Ondhcm5fdW51c2VkX3Byb3BlcnR5X2JhY2tpbmdfaXZhciwgLTEsCi0gIC8qIERpYWdBcnJheTcyMiAqLyBkaWFnOjp3YXJuX3VudXNlZF9yZXN1bHQsIC0xLAotICAvKiBEaWFnQXJyYXk3MjMgKi8gZGlhZzo6d2Fybl91bnVzZWRfdGVtcGxhdGUsIC0xLAotICAvKiBEaWFnQXJyYXk3MjQgKi8gZGlhZzo6d2Fybl91bnVzZWRfY2FsbCwgZGlhZzo6d2Fybl91bnVzZWRfY29udGFpbmVyX3N1YnNjcmlwdF9leHByLCBkaWFnOjp3YXJuX3VudXNlZF9leHByLCBkaWFnOjp3YXJuX3VudXNlZF92b2lkcHRyLCAtMSwKLSAgLyogRGlhZ0FycmF5NzI1ICovIGRpYWc6Ondhcm5fdW51c2VkX3ZhcmlhYmxlLCAtMSwKLSAgLyogRGlhZ0FycmF5NzI2ICovIGRpYWc6Ondhcm5fdW51c2VkX3ZvbGF0aWxlLCAtMSwKLSAgLyogRGlhZ0FycmF5NzI3ICovIGRpYWc6Ondhcm5fdXNlZF9idXRfbWFya2VkX3VudXNlZCwgLTEsCi0gIC8qIERpYWdBcnJheTcyOCAqLyBkaWFnOjp3YXJuX3VzZXJfbGl0ZXJhbF9yZXNlcnZlZCwgLTEsCi0gIC8qIERpYWdBcnJheTcyOSAqLyBkaWFnOjp3YXJuX2RpYWdub3NlX2lmX3N1Y2NlZWRlZCwgLTEsCi0gIC8qIERpYWdBcnJheTczMCAqLyBkaWFnOjp3YXJuX3NlY29uZF9hcmdfb2ZfdmFfc3RhcnRfbm90X2xhc3RfbmFtZWRfcGFyYW0sIGRpYWc6Ondhcm5fc2Vjb25kX3BhcmFtZXRlcl90b192YV9hcmdfbmV2ZXJfY29tcGF0aWJsZSwgZGlhZzo6d2Fybl92YV9zdGFydF90eXBlX2lzX3VuZGVmaW5lZCwgLTEsCi0gIC8qIERpYWdBcnJheTczMSAqLyBkaWFnOjpleHRfbmFtZWRfdmFyaWFkaWNfbWFjcm8sIGRpYWc6OmV4dF9wcF9iYWRfdmFvcHRfdXNlLCBkaWFnOjpleHRfdmFyaWFkaWNfbWFjcm8sIC0xLAotICAvKiBEaWFnQXJyYXk3MzIgKi8gZGlhZzo6d2Fybl90eXBlY2hlY2tfdmVjdG9yX2VsZW1lbnRfc2l6ZXNfbm90X2VxdWFsLCAtMSwKLSAgLyogRGlhZ0FycmF5NzMzICovIGRpYWc6Ondhcm5faW5jb21wYXRpYmxlX3ZlY3RvcnMsIC0xLAotICAvKiBEaWFnQXJyYXk3MzUgKi8gZGlhZzo6d2Fybl9lbXB0eV9wYXJlbnNfYXJlX2Z1bmN0aW9uX2RlY2wsIGRpYWc6Ondhcm5fcGFyZW5zX2Rpc2FtYmlndWF0ZWRfYXNfZnVuY3Rpb25fZGVjbGFyYXRpb24sIGRpYWc6Ondhcm5fcGFyZW5zX2Rpc2FtYmlndWF0ZWRfYXNfdmFyaWFibGVfZGVjbGFyYXRpb24sIC0xLAotICAvKiBEaWFnQXJyYXk3MzYgKi8gZGlhZzo6d2Fybl9kZWNsX2luX3BhcmFtX2xpc3QsIGRpYWc6Ondhcm5fcmVkZWZpbml0aW9uX2luX3BhcmFtX2xpc3QsIC0xLAotICAvKiBEaWFnQXJyYXk3MzcgKi8gZGlhZzo6d2Fybl92bGFfdXNlZCwgLTEsCi0gIC8qIERpYWdBcnJheTczOCAqLyBkaWFnOjpleHRfdmxhLCAtMSwKLSAgLyogRGlhZ0FycmF5NzM5ICovIGRpYWc6OmV4dF90eXBlY2hlY2tfaW5kaXJlY3Rpb25fdGhyb3VnaF92b2lkX3BvaW50ZXIsIC0xLAotICAvKiBEaWFnQXJyYXk3NDEgKi8gZGlhZzo6d2Fybl93ZWFrX3RlbXBsYXRlX3Z0YWJsZSwgLTEsCi0gIC8qIERpYWdBcnJheTc0MiAqLyBkaWFnOjp3YXJuX3dlYWtfdnRhYmxlLCAtMSwKLSAgLyogRGlhZ0FycmF5NzQzICovIGRpYWc6OmV4dF9kZXByZWNhdGVkX3N0cmluZ19saXRlcmFsX2NvbnZlcnNpb24sIC0xLAotICAvKiBEaWFnQXJyYXk3NDUgKi8gZGlhZzo6d2Fybl96ZXJvX2FzX251bGxfcG9pbnRlcl9jb25zdGFudCwgLTEsCi0gIC8qIERpYWdBcnJheTc0NiAqLyBkaWFnOjpleHRfdHlwZWNoZWNrX3plcm9fYXJyYXlfc2l6ZSwgLTEsCisgIC8qIERpYWdBcnJheTExNSAqLyBkaWFnOjp3YXJuX2NhbGxfdG9fcHVyZV92aXJ0dWFsX21lbWJlcl9mdW5jdGlvbl9mcm9tX2N0b3JfZHRvciwgLTEsCisgIC8qIERpYWdBcnJheTExNiAqLyBkaWFnOjp3YXJuX2Nhc3RfYWxpZ24sIC0xLAorICAvKiBEaWFnQXJyYXkxMTcgKi8gZGlhZzo6d2Fybl9jYXN0X2NhbGxpbmdfY29udiwgLTEsCisgIC8qIERpYWdBcnJheTExOCAqLyBkaWFnOjp3YXJuX2Nhc3RfcG9pbnRlcl9mcm9tX3NlbCwgLTEsCisgIC8qIERpYWdBcnJheTExOSAqLyBkaWFnOjp3YXJuX2Nhc3RfcXVhbCwgZGlhZzo6d2Fybl9jYXN0X3F1YWwyLCAtMSwKKyAgLyogRGlhZ0FycmF5MTIwICovIGRpYWc6OmV4dF9iYWRfY3h4X2Nhc3RfcXVhbGlmaWVyc19hd2F5X2luY29oZXJlbnQsIC0xLAorICAvKiBEaWFnQXJyYXkxMjIgKi8gZGlhZzo6d2Fybl9vbXBfc2VjdGlvbl9pc19jaGFyLCBkaWFnOjp3YXJuX3N1YnNjcmlwdF9pc19jaGFyLCAtMSwKKyAgLyogRGlhZ0FycmF5MTIzICovIGRpYWc6Ondhcm5fZHJ2X3ljX211bHRpcGxlX2lucHV0c19jbGFuZ19jbCwgZGlhZzo6d2Fybl9kcnZfeWN5dV9kaWZmZXJlbnRfYXJnX2NsYW5nX2NsLCBkaWFnOjp3YXJuX2Rydl95Y3l1X25vX2ZpX2FyZ19jbGFuZ19jbCwgZGlhZzo6d2Fybl9wcF9oZHJzdG9wX2ZpbGVuYW1lX2lnbm9yZWQsIGRpYWc6Ondhcm5fcHBfbWFjcm9fZGVmX21pc21hdGNoX3dpdGhfcGNoLCAtMSwKKyAgLyogRGlhZ0FycmF5MTI0ICovIGRpYWc6Ondhcm5fcGFzc19jbGFzc19hcmdfdG9fdmFyYXJnLCAtMSwKKyAgLyogRGlhZ0FycmF5MTI1ICovIGRpYWc6Ondhcm5fY29tbWFfb3BlcmF0b3IsIC0xLAorICAvKiBEaWFnQXJyYXkxMjYgKi8gZGlhZzo6ZXNjYXBlZF9uZXdsaW5lX2Jsb2NrX2NvbW1lbnRfZW5kLCBkaWFnOjpleHRfbGluZV9jb21tZW50LCBkaWFnOjpleHRfbXVsdGlfbGluZV9saW5lX2NvbW1lbnQsIGRpYWc6Ondhcm5fbmVzdGVkX2Jsb2NrX2NvbW1lbnQsIC0xLAorICAvKiBEaWFnQXJyYXkxMjggKi8gZGlhZzo6ZXh0X3R5cGVjaGVja19jb21wYXJpc29uX29mX2Rpc3RpbmN0X3BvaW50ZXJzLCAtMSwKKyAgLyogRGlhZ0FycmF5MTI5ICovIGRpYWc6OmV4dF9jb21wbGV4X2NvbXBvbmVudF9pbml0LCAtMSwKKyAgLyogRGlhZ0FycmF5MTMwICovIGRpYWc6OmV4dF90eXBlY2hlY2tfY29uZF9wb2ludGVyX2ludGVnZXJfbWlzbWF0Y2gsIC0xLAorICAvKiBEaWFnQXJyYXkxMzEgKi8gZGlhZzo6d2Fybl9tYXliZV91bmluaXRfdmFyLCAtMSwKKyAgLyogRGlhZ0FycmF5MTMyICovIGRpYWc6Ondhcm5fbW9kdWxlX2NvbmZpZ19tYWNyb191bmRlZiwgLTEsCisgIC8qIERpYWdBcnJheTEzMyAqLyBkaWFnOjp3YXJuX2ltcGNhc3RfaW50ZWdlcl9wcmVjaXNpb25fY29uc3RhbnQsIC0xLAorICAvKiBEaWFnQXJyYXkxMzQgKi8gZGlhZzo6d2Fybl9sb2dpY2FsX2luc3RlYWRfb2ZfYml0d2lzZSwgLTEsCisgIC8qIERpYWdBcnJheTEzNSAqLyBkaWFnOjp3YXJuX2N4eDE0X2NvbXBhdF9jb25zdGV4cHJfbm90X2NvbnN0LCAtMSwKKyAgLyogRGlhZ0FycmF5MTM2ICovIGRpYWc6Ondhcm5fYXR0cl9vbl91bmNvbnN1bWFibGVfY2xhc3MsIGRpYWc6Ondhcm5fbG9vcF9zdGF0ZV9taXNtYXRjaCwgZGlhZzo6d2Fybl9wYXJhbV9yZXR1cm5fdHlwZXN0YXRlX21pc21hdGNoLCBkaWFnOjp3YXJuX3BhcmFtX3R5cGVzdGF0ZV9taXNtYXRjaCwgZGlhZzo6d2Fybl9yZXR1cm5fdHlwZXN0YXRlX2Zvcl91bmNvbnN1bWFibGVfdHlwZSwgZGlhZzo6d2Fybl9yZXR1cm5fdHlwZXN0YXRlX21pc21hdGNoLCBkaWFnOjp3YXJuX3VzZV9pbl9pbnZhbGlkX3N0YXRlLCBkaWFnOjp3YXJuX3VzZV9vZl90ZW1wX2luX2ludmFsaWRfc3RhdGUsIC0xLAorICAvKiBEaWFnQXJyYXkxMzcgKi8gZGlhZzo6d2Fybl9pbXBjYXN0X2NvbXBsZXhfc2NhbGFyLCBkaWFnOjp3YXJuX2ltcGNhc3RfdmVjdG9yX3NjYWxhciwgZGlhZzo6d2Fybl9vcGVuY2xfZ2VuZXJpY19hZGRyZXNzX3NwYWNlX2FyZywgZGlhZzo6d2Fybl90ZW1wbGF0ZV9hcmdfbmVnYXRpdmUsIGRpYWc6Ondhcm5fdGVtcGxhdGVfYXJnX3Rvb19sYXJnZSwgLTEsCisgIC8qIERpYWdBcnJheTE0MCAqLyBkaWFnOjp3YXJuX2Nvcm91dGluZV9wcm9taXNlX3VuaGFuZGxlZF9leGNlcHRpb25fcmVxdWlyZWRfd2l0aF9leGNlcHRpb25zLCAtMSwKKyAgLyogRGlhZ0FycmF5MTQxICovIGRpYWc6Ondhcm5fdW5yZWFjaGFibGVfZGVmYXVsdCwgLTEsCisgIC8qIERpYWdBcnJheTE0MyAqLyBkaWFnOjp3YXJuX29iamNfY2RpcmVjdGl2ZV9mb3JtYXRfc3RyaW5nLCAtMSwKKyAgLyogRGlhZ0FycmF5MTQ0ICovIGRpYWc6Ondhcm5fY3RhZF9tYXliZV91bnN1cHBvcnRlZCwgLTEsCisgIC8qIERpYWdBcnJheTE0NiAqLyBkaWFnOjp3YXJuX2N0dV9pbmNvbXBhdF90cmlwbGUsIC0xLAorICAvKiBEaWFnQXJyYXkxNDcgKi8gZGlhZzo6d2Fybl9hdHRyaWJ1dGVfYXJndW1lbnRfbl9uZWdhdGl2ZSwgZGlhZzo6d2Fybl9jdWRhX2F0dHJfbGFtYmRhX3Bvc2l0aW9uLCBkaWFnOjp3YXJuX2tlcm5faXNfaW5saW5lLCBkaWFnOjp3YXJuX2tlcm5faXNfbWV0aG9kLCBkaWFnOjp3YXJuX3ByYWdtYV91bnJvbGxfY3VkYV92YWx1ZV9pbl9wYXJlbnMsIC0xLAorICAvKiBEaWFnQXJyYXkxNDggKi8gZGlhZzo6d2Fybl9kZWZhdWx0X2F0b21pY19jdXN0b21fZ2V0dGVyX3NldHRlciwgLTEsCisgIC8qIERpYWdBcnJheTE0OSAqLyBkaWFnOjp3YXJuX2RhbmdsaW5nX3ZhcmlhYmxlLCBkaWFnOjp3YXJuX3Vuc3VwcG9ydGVkX2xpZmV0aW1lX2V4dGVuc2lvbiwgLTEsCisgIC8qIERpYWdBcnJheTE1MCAqLyBkaWFnOjp3YXJuX2RhbmdsaW5nX2Vsc2UsIC0xLAorICAvKiBEaWFnQXJyYXkxNTEgKi8gZGlhZzo6d2Fybl9iaW5kX3JlZl9tZW1iZXJfdG9fcGFyYW1ldGVyLCBkaWFnOjp3YXJuX2RhbmdsaW5nX21lbWJlciwgZGlhZzo6d2Fybl9pbml0X3B0cl9tZW1iZXJfdG9fcGFyYW1ldGVyX2FkZHIsIGRpYWc6Ondhcm5fbmV3X2RhbmdsaW5nX3JlZmVyZW5jZSwgLTEsCisgIC8qIERpYWdBcnJheTE1MiAqLyBkaWFnOjp3YXJuX25ld19kYW5nbGluZ19pbml0aWFsaXplcl9saXN0LCAtMSwKKyAgLyogRGlhZ0FycmF5MTUzICovIGRpYWc6Ondhcm5fZHJ2X2Rhcndpbl9zZGtfaW52YWxpZF9zZXR0aW5ncywgLTEsCisgIC8qIERpYWdBcnJheTE1NCAqLyBkaWFnOjp3YXJuX3BwX2RhdGVfdGltZSwgLTEsCisgIC8qIERpYWdBcnJheTE1NSAqLyBkaWFnOjp3YXJuX2RlYWxsb2NfaW5fY2F0ZWdvcnksIC0xLAorICAvKiBEaWFnQXJyYXkxNTYgKi8gZGlhZzo6d2Fybl9kZWJ1Z19jb21wcmVzc2lvbl91bmF2YWlsYWJsZSwgLTEsCisgIC8qIERpYWdBcnJheTE1NyAqLyBkaWFnOjpleHRfbWl4ZWRfZGVjbHNfY29kZSwgLTEsCisgIC8qIERpYWdBcnJheTE1OCAqLyBkaWFnOjp3YXJuX2RlZmF1bHRlZF9tZXRob2RfZGVsZXRlZCwgLTEsCisgIC8qIERpYWdBcnJheTE1OSAqLyBkaWFnOjp3YXJuX2RlbGVnYXRpbmdfY3Rvcl9jeWNsZSwgLTEsCisgIC8qIERpYWdBcnJheTE2MCAqLyBkaWFnOjp3YXJuX2RlbGV0ZV9hYnN0cmFjdF9ub25fdmlydHVhbF9kdG9yLCAtMSwKKyAgLyogRGlhZ0FycmF5MTYxICovIGRpYWc6OmV4dF9kZWxldGVfdm9pZF9wdHJfb3BlcmFuZCwgZGlhZzo6d2Fybl9kZWxldGVfaW5jb21wbGV0ZSwgLTEsCisgIC8qIERpYWdBcnJheTE2MiAqLyBkaWFnOjp3YXJuX2RlbGV0ZV9ub25fdmlydHVhbF9kdG9yLCAtMSwKKyAgLyogRGlhZ0FycmF5MTY0ICovIGRpYWc6Ondhcm5fTzRfaXNfTzMsIGRpYWc6Ondhcm5fYWNjZXNzX2RlY2xfZGVwcmVjYXRlZCwgZGlhZzo6d2Fybl9kZXByZWNhdGVkX2NvcHlfb3BlcmF0aW9uLCBkaWFnOjp3YXJuX2RlcHJlY2F0ZWRfcmVkdW5kYW50X2NvbnN0ZXhwcl9zdGF0aWNfZGVmLCBkaWFnOjp3YXJuX2Rydl9kZXByZWNhdGVkX2FyZywgZGlhZzo6d2Fybl9kcnZfdHJlYXRpbmdfaW5wdXRfYXNfY3h4LCBkaWFnOjp3YXJuX29wdGlvbl9pbnZhbGlkX29jbF92ZXJzaW9uLCBkaWFnOjp3YXJuX3ZlY3Rvcl9sb25nX2RlY2xfc3BlY19jb21iaW5hdGlvbiwgLTEsCisgIC8qIERpYWdBcnJheTE2NSAqLyBkaWFnOjp3YXJuX3ZlY3Rvcl9tb2RlX2RlcHJlY2F0ZWQsIC0xLAorICAvKiBEaWFnQXJyYXkxNjYgKi8gZGlhZzo6d2Fybl9hdGxfdXVpZF9kZXByZWNhdGVkLCBkaWFnOjp3YXJuX2NzdHlsZV9wYXJhbSwgZGlhZzo6d2Fybl9kZXByZWNhdGVkLCBkaWFnOjp3YXJuX2RlcHJlY2F0ZWRfZndkY2xhc3NfbWVzc2FnZSwgZGlhZzo6d2Fybl9kZXByZWNhdGVkX21lc3NhZ2UsIGRpYWc6Ondhcm5fcHJvcGVydHlfbWV0aG9kX2RlcHJlY2F0ZWQsIC0xLAorICAvKiBEaWFnQXJyYXkxNjcgKi8gZGlhZzo6d2Fybl9leGNlcHRpb25fc3BlY19kZXByZWNhdGVkLCAtMSwKKyAgLyogRGlhZ0FycmF5MTY4ICovIGRpYWc6Ondhcm5fZGVwcmVjYXRlZF9kZWYsIGRpYWc6Ondhcm5fdW5hdmFpbGFibGVfZGVmLCAtMSwKKyAgLyogRGlhZ0FycmF5MTY5ICovIGRpYWc6Ondhcm5faW5jcmVtZW50X2Jvb2wsIC0xLAorICAvKiBEaWFnQXJyYXkxNzAgKi8gZGlhZzo6d2Fybl9vYmpjX2lzYV9hc3NpZ24sIGRpYWc6Ondhcm5fb2JqY19pc2FfdXNlLCAtMSwKKyAgLyogRGlhZ0FycmF5MTcxICovIGRpYWc6Ondhcm5fb2JqY19wb2ludGVyX21hc2tpbmcsIC0xLAorICAvKiBEaWFnQXJyYXkxNzIgKi8gZGlhZzo6d2Fybl9vYmpjX3BvaW50ZXJfbWFza2luZ19wZXJmb3JtU2VsZWN0b3IsIC0xLAorICAvKiBEaWFnQXJyYXkxNzMgKi8gZGlhZzo6d2Fybl9kZXByZWNhdGVkX3JlZ2lzdGVyLCAtMSwKKyAgLyogRGlhZ0FycmF5MTc0ICovIGRpYWc6Ondhcm5fZGVwcmVjYXRlZF90aGlzX2NhcHR1cmUsIC0xLAorICAvKiBEaWFnQXJyYXkxNzYgKi8gZGlhZzo6d2Fybl9kaXJlY3RfaXZhcl9hY2Nlc3MsIC0xLAorICAvKiBEaWFnQXJyYXkxNzcgKi8gZGlhZzo6cHBfZGlzYWJsZWRfbWFjcm9fZXhwYW5zaW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5MTgwICovIGRpYWc6Ondhcm5fY29uZmxpY3RpbmdfcGFyYW1fbW9kaWZpZXJzLCBkaWFnOjp3YXJuX2NvbmZsaWN0aW5nX3JldF90eXBlX21vZGlmaWVycywgLTEsCisgIC8qIERpYWdBcnJheTE4MiAqLyBkaWFnOjp3YXJuX3JlbWFpbmRlcl9kaXZpc2lvbl9ieV96ZXJvLCAtMSwKKyAgLyogRGlhZ0FycmF5MTgzICovIGRpYWc6Ondhcm5fYXR0cmlidXRlX2RsbF9yZWRlY2xhcmF0aW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5MTg0ICovIGRpYWc6Ondhcm5fYXR0cmlidXRlX2RsbGV4cG9ydF9leHBsaWNpdF9pbnN0YW50aWF0aW9uX2RlY2wsIC0xLAorICAvKiBEaWFnQXJyYXkxODUgKi8gZGlhZzo6d2Fybl9hdHRyaWJ1dGVfZGxsaW1wb3J0X3N0YXRpY19maWVsZF9kZWZpbml0aW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5MTg2ICovIGRpYWc6Ondhcm5fZG9jX2FwaV9jb250YWluZXJfZGVjbF9taXNtYXRjaCwgZGlhZzo6d2Fybl9kb2NfYmxvY2tfY29tbWFuZF9kdXBsaWNhdGUsIGRpYWc6Ondhcm5fZG9jX2Jsb2NrX2NvbW1hbmRfZW1wdHlfcGFyYWdyYXBoLCBkaWFnOjp3YXJuX2RvY19jb250YWluZXJfZGVjbF9taXNtYXRjaCwgZGlhZzo6d2Fybl9kb2NfZnVuY3Rpb25fbWV0aG9kX2RlY2xfbWlzbWF0Y2gsIGRpYWc6Ondhcm5fZG9jX2h0bWxfc3RhcnRfdGFnX2V4cGVjdGVkX2lkZW50X29yX2dyZWF0ZXIsIGRpYWc6Ondhcm5fZG9jX2h0bWxfc3RhcnRfdGFnX2V4cGVjdGVkX3F1b3RlZF9zdHJpbmcsIGRpYWc6Ondhcm5fZG9jX3BhcmFtX2R1cGxpY2F0ZSwgZGlhZzo6d2Fybl9kb2NfcGFyYW1faW52YWxpZF9kaXJlY3Rpb24sIGRpYWc6Ondhcm5fZG9jX3BhcmFtX25vdF9hdHRhY2hlZF90b19hX2Z1bmN0aW9uX2RlY2wsIGRpYWc6Ondhcm5fZG9jX3BhcmFtX25vdF9mb3VuZCwgZGlhZzo6d2Fybl9kb2NfcmV0dXJuc19hdHRhY2hlZF90b19hX3ZvaWRfZnVuY3Rpb24sIGRpYWc6Ondhcm5fZG9jX3JldHVybnNfbm90X2F0dGFjaGVkX3RvX2FfZnVuY3Rpb25fZGVjbCwgZGlhZzo6d2Fybl9kb2NfdHBhcmFtX2R1cGxpY2F0ZSwgZGlhZzo6d2Fybl9kb2NfdHBhcmFtX25vdF9hdHRhY2hlZF90b19hX3RlbXBsYXRlX2RlY2wsIGRpYWc6Ondhcm5fZG9jX3RwYXJhbV9ub3RfZm91bmQsIGRpYWc6Ondhcm5fbm90X2FfZG94eWdlbl90cmFpbGluZ19tZW1iZXJfY29tbWVudCwgZGlhZzo6d2Fybl92ZXJiYXRpbV9ibG9ja19lbmRfd2l0aG91dF9zdGFydCwgLTEsCisgIC8qIERpYWdBcnJheTE4NyAqLyBkaWFnOjp3YXJuX2RvY19kZXByZWNhdGVkX25vdF9zeW5jLCAtMSwKKyAgLyogRGlhZ0FycmF5MTg4ICovIGRpYWc6Ondhcm5fZG9jX2h0bWxfZW5kX2ZvcmJpZGRlbiwgZGlhZzo6d2Fybl9kb2NfaHRtbF9lbmRfdW5iYWxhbmNlZCwgZGlhZzo6d2Fybl9kb2NfaHRtbF9taXNzaW5nX2VuZF90YWcsIGRpYWc6Ondhcm5fZG9jX2h0bWxfc3RhcnRfZW5kX21pc21hdGNoLCAtMSwKKyAgLyogRGlhZ0FycmF5MTg5ICovIGRpYWc6Ondhcm5fZG9jX3BhcmFtX3NwYWNlc19pbl9kaXJlY3Rpb24sIC0xLAorICAvKiBEaWFnQXJyYXkxOTAgKi8gZGlhZzo6d2Fybl9jb3JyZWN0X2NvbW1lbnRfY29tbWFuZF9uYW1lLCBkaWFnOjp3YXJuX3Vua25vd25fY29tbWVudF9jb21tYW5kX25hbWUsIC0xLAorICAvKiBEaWFnQXJyYXkxOTEgKi8gZGlhZzo6ZXh0X2RvbGxhcl9pbl9pZGVudGlmaWVyLCAtMSwKKyAgLyogRGlhZ0FycmF5MTkyICovIGRpYWc6Ondhcm5faW1wY2FzdF9kb3VibGVfcHJvbW90aW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5MTkzICovIGRpYWc6OmV4dF9kdXBsaWNhdGVfZGVjbHNwZWMsIGRpYWc6OmV4dF93YXJuX2R1cGxpY2F0ZV9kZWNsc3BlYywgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfYWRkcmVzc19tdWx0aXBsZV9pZGVudGljYWxfcXVhbGlmaWVycywgZGlhZzo6d2Fybl9kdXBsaWNhdGVfZGVjbHNwZWMsIC0xLAorICAvKiBEaWFnQXJyYXkxOTQgKi8gZGlhZzo6d2Fybl9kdXBsaWNhdGVfZW51bV92YWx1ZXMsIC0xLAorICAvKiBEaWFnQXJyYXkxOTUgKi8gZGlhZzo6d2Fybl9tZXRob2RfcGFyYW1fZGVjbGFyYXRpb24sIC0xLAorICAvKiBEaWFnQXJyYXkxOTYgKi8gZGlhZzo6d2Fybl9kdXBsaWNhdGVfbWV0aG9kX2RlY2wsIC0xLAorICAvKiBEaWFnQXJyYXkxOTcgKi8gZGlhZzo6d2Fybl9kdXBsaWNhdGVfcHJvdG9jb2xfZGVmLCAtMSwKKyAgLyogRGlhZ0FycmF5MTk4ICovIGRpYWc6Ondhcm5fZHluX2NsYXNzX21lbWFjY2VzcywgLTEsCisgIC8qIERpYWdBcnJheTE5OSAqLyBkaWFnOjpleHRfZHluYW1pY19leGNlcHRpb25fc3BlYywgLTEsCisgIC8qIERpYWdBcnJheTIwMSAqLyBkaWFnOjpleHRfZW1iZWRkZWRfZGlyZWN0aXZlLCAtMSwKKyAgLyogRGlhZ0FycmF5MjAyICovIGRpYWc6Ondhcm5fZW1wdHlfZm9yX2JvZHksIGRpYWc6Ondhcm5fZW1wdHlfaWZfYm9keSwgZGlhZzo6d2Fybl9lbXB0eV9yYW5nZV9iYXNlZF9mb3JfYm9keSwgZGlhZzo6d2Fybl9lbXB0eV9zd2l0Y2hfYm9keSwgZGlhZzo6d2Fybl9lbXB0eV93aGlsZV9ib2R5LCAtMSwKKyAgLyogRGlhZ0FycmF5MjAzICovIGRpYWc6OmV4dF9kZWNvbXBfZGVjbF9lbXB0eSwgLTEsCisgIC8qIERpYWdBcnJheTIwNCAqLyBkaWFnOjp3YXJuX2VtcHR5X2luaXRfc3RhdGVtZW50LCAtMSwKKyAgLyogRGlhZ0FycmF5MjA1ICovIGRpYWc6OmV4dF9lbXB0eV90cmFuc2xhdGlvbl91bml0LCAtMSwKKyAgLyogRGlhZ0FycmF5MjA2ICovIGRpYWc6Ondhcm5faW5jb21wbGV0ZV9lbmNvZGVkX3R5cGUsIC0xLAorICAvKiBEaWFnQXJyYXkyMDggKi8gZGlhZzo6d2Fybl9jb21wYXJpc29uX29mX21peGVkX2VudW1fdHlwZXMsIC0xLAorICAvKiBEaWFnQXJyYXkyMDkgKi8gZGlhZzo6d2Fybl9jb21wYXJpc29uX29mX21peGVkX2VudW1fdHlwZXNfc3dpdGNoLCAtMSwKKyAgLyogRGlhZ0FycmF5MjEwICovIGRpYWc6Ondhcm5faW1wY2FzdF9kaWZmZXJlbnRfZW51bV90eXBlcywgLTEsCisgIC8qIERpYWdBcnJheTIxMSAqLyBkaWFnOjpleHRfZW51bV90b29fbGFyZ2UsIGRpYWc6OmV4dF9lbnVtZXJhdG9yX2luY3JlbWVudF90b29fbGFyZ2UsIC0xLAorICAvKiBEaWFnQXJyYXkyMTIgKi8gZGlhZzo6d2Fybl9jZHRvcl9mdW5jdGlvbl90cnlfaGFuZGxlcl9tZW1fZXhwciwgZGlhZzo6d2Fybl9leGNlcHRpb25fY2F1Z2h0X2J5X2VhcmxpZXJfaGFuZGxlciwgZGlhZzo6d2Fybl90aHJvd19pbl9ub2V4Y2VwdF9mdW5jLCAtMSwKKyAgLyogRGlhZ0FycmF5MjEzICovIGRpYWc6Ondhcm5fZXhpdF90aW1lX2Rlc3RydWN0b3IsIC0xLAorICAvKiBEaWFnQXJyYXkyMTQgKi8gZGlhZzo6d2Fybl9kZWZpbmVkX2luX2Z1bmN0aW9uX3R5cGVfbWFjcm8sIGRpYWc6Ondhcm5fZGVmaW5lZF9pbl9vYmplY3RfdHlwZV9tYWNybywgLTEsCisgIC8qIERpYWdBcnJheTIxNSAqLyBkaWFnOjp3YXJuX2Rydl9leHBlcmltZW50YWxfaXNlbF9pbmNvbXBsZXRlLCBkaWFnOjp3YXJuX2Rydl9leHBlcmltZW50YWxfaXNlbF9pbmNvbXBsZXRlX29wdCwgLTEsCisgIC8qIERpYWdBcnJheTIxNiAqLyBkaWFnOjp3YXJuX2RpcmVjdF9pbml0aWFsaXplX2NhbGwsIGRpYWc6Ondhcm5fZGlyZWN0X3N1cGVyX2luaXRpYWxpemVfY2FsbCwgLTEsCisgIC8qIERpYWdBcnJheTIxNyAqLyBkaWFnOjp3YXJuX2FyY19zdHJvbmdfcG9pbnRlcl9vYmpjX3BvaW50ZXIsIC0xLAorICAvKiBEaWFnQXJyYXkyMTggKi8gZGlhZzo6d2Fybl96ZXJvX3NpemVfc3RydWN0X3VuaW9uX2luX2V4dGVybl9jLCAtMSwKKyAgLyogRGlhZ0FycmF5MjE5ICovIGRpYWc6Ondhcm5fZXh0ZXJuX2luaXQsIC0xLAorICAvKiBEaWFnQXJyYXkyMjAgKi8gZGlhZzo6d2Fybl9hcm1faW50ZXJydXB0X2NhbGxpbmdfY29udmVudGlvbiwgLTEsCisgIC8qIERpYWdBcnJheTIyMSAqLyBkaWFnOjp3YXJuX25hbWVzcGFjZV9tZW1iZXJfZXh0cmFfcXVhbGlmaWNhdGlvbiwgLTEsCisgIC8qIERpYWdBcnJheTIyMiAqLyBkaWFnOjpleHRfZXh0cmFfc2VtaSwgZGlhZzo6d2Fybl9leHRyYV9zZW1pX2FmdGVyX21lbV9mbl9kZWYsIC0xLAorICAvKiBEaWFnQXJyYXkyMjMgKi8gZGlhZzo6d2Fybl9udWxsX3N0YXRlbWVudCwgLTEsCisgIC8qIERpYWdBcnJheTIyNCAqLyBkaWFnOjpleHRfcHBfZXh0cmFfdG9rZW5zX2F0X2VvbCwgZGlhZzo6d2Fybl9vbXBfZXh0cmFfdG9rZW5zX2F0X2VvbCwgLTEsCisgIC8qIERpYWdBcnJheTIyNSAqLyBkaWFnOjp3YXJuX2Rydl9pbnZva2luZ19mYWxsYmFjaywgLTEsCisgIC8qIERpYWdBcnJheTIyNiAqLyBkaWFnOjpleHRfY2xhbmdfY19lbnVtX2ZpeGVkX3VuZGVybHlpbmdfdHlwZSwgLTEsCisgIC8qIERpYWdBcnJheTIyNyAqLyBkaWFnOjp3YXJuX2ZsYWdfZW51bV9jb25zdGFudF9vdXRfb2ZfcmFuZ2UsIC0xLAorICAvKiBEaWFnQXJyYXkyMjggKi8gZGlhZzo6ZXh0X2ZsZXhpYmxlX2FycmF5X2luX2FycmF5LCBkaWFnOjpleHRfZmxleGlibGVfYXJyYXlfaW5fc3RydWN0LCAtMSwKKyAgLyogRGlhZ0FycmF5MjI5ICovIGRpYWc6Ondhcm5faW1wY2FzdF9mbG9hdF9pbnRlZ2VyLCAtMSwKKyAgLyogRGlhZ0FycmF5MjMwICovIGRpYWc6Ondhcm5fZmxvYXRpbmdwb2ludF9lcSwgLTEsCisgIC8qIERpYWdBcnJheTIzMSAqLyBkaWFnOjp3YXJuX2ltcGNhc3RfZmxvYXRfdG9faW50ZWdlciwgZGlhZzo6d2Fybl9pbXBjYXN0X2Zsb2F0X3RvX2ludGVnZXJfb3V0X29mX3JhbmdlLCAtMSwKKyAgLyogRGlhZ0FycmF5MjMyICovIGRpYWc6Ondhcm5faW1wY2FzdF9mbG9hdF90b19pbnRlZ2VyX3plcm8sIC0xLAorICAvKiBEaWFnQXJyYXkyMzMgKi8gZGlhZzo6d2Fybl9yZWR1bmRhbnRfbG9vcF9pdGVyYXRpb24sIGRpYWc6Ondhcm5fdmFyaWFibGVzX25vdF9pbl9sb29wX2JvZHksIC0xLAorICAvKiBEaWFnQXJyYXkyMzQgKi8gZGlhZzo6d2Fybl9mb3JtYXRfUF9ub19wcmVjaXNpb24sIGRpYWc6Ondhcm5fZm9ybWF0X2FyZ3VtZW50X25lZWRzX2Nhc3QsIGRpYWc6Ondhcm5fZm9ybWF0X2NvbnZlcnNpb25fYXJndW1lbnRfdHlwZV9taXNtYXRjaCwgZGlhZzo6d2Fybl9mb3JtYXRfaW52YWxpZF9hbm5vdGF0aW9uLCBkaWFnOjp3YXJuX2Zvcm1hdF9pbnZhbGlkX3Bvc2l0aW9uYWxfc3BlY2lmaWVyLCBkaWFnOjp3YXJuX2Zvcm1hdF9taXhfcG9zaXRpb25hbF9ub25wb3NpdGlvbmFsX2FyZ3MsIGRpYWc6Ondhcm5fZm9ybWF0X25vbnNlbnNpY2FsX2xlbmd0aCwgZGlhZzo6d2Fybl9mb3JtYXRfc3RyaW5nX2lzX3dpZGVfbGl0ZXJhbCwgZGlhZzo6d2Fybl9mb3JtYXRfemVyb19wb3NpdGlvbmFsX3NwZWNpZmllciwgZGlhZzo6d2Fybl9taXNzaW5nX2Zvcm1hdF9zdHJpbmcsIGRpYWc6Ondhcm5fcHJpbnRmX09iakNmbGFnc193aXRob3V0X09iakNDb252ZXJzaW9uLCBkaWFnOjp3YXJuX3ByaW50Zl9hc3Rlcmlza19taXNzaW5nX2FyZywgZGlhZzo6d2Fybl9wcmludGZfYXN0ZXJpc2tfd3JvbmdfdHlwZSwgZGlhZzo6d2Fybl9wcmludGZfZW1wdHlfb2JqY19mbGFnLCBkaWFnOjp3YXJuX3ByaW50Zl9mb3JtYXRfc3RyaW5nX2NvbnRhaW5zX251bGxfY2hhciwgZGlhZzo6d2Fybl9wcmludGZfZm9ybWF0X3N0cmluZ19ub3RfbnVsbF90ZXJtaW5hdGVkLCBkaWFnOjp3YXJuX3ByaW50Zl9pZ25vcmVkX2ZsYWcsIGRpYWc6Ondhcm5fcHJpbnRmX2luY29tcGxldGVfc3BlY2lmaWVyLCBkaWFnOjp3YXJuX3ByaW50Zl9pbnN1ZmZpY2llbnRfZGF0YV9hcmdzLCBkaWFnOjp3YXJuX3ByaW50Zl9pbnZhbGlkX29iamNfZmxhZywgZGlhZzo6d2Fybl9wcmludGZfbm9uc2Vuc2ljYWxfZmxhZywgZGlhZzo6d2Fybl9wcmludGZfbm9uc2Vuc2ljYWxfb3B0aW9uYWxfYW1vdW50LCBkaWFnOjp3YXJuX3ByaW50Zl9wb3NpdGlvbmFsX2FyZ19leGNlZWRzX2RhdGFfYXJncywgZGlhZzo6d2Fybl9zY2FuZl9ub256ZXJvX3dpZHRoLCBkaWFnOjp3YXJuX3NjYW5mX3NjYW5saXN0X2luY29tcGxldGUsIC0xLAorICAvKiBEaWFnQXJyYXkyMzUgKi8gZGlhZzo6d2Fybl9wcmludGZfZGF0YV9hcmdfbm90X3VzZWQsIC0xLAorICAvKiBEaWFnQXJyYXkyMzYgKi8gZGlhZzo6d2Fybl9mb3JtYXRfaW52YWxpZF9jb252ZXJzaW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5MjM3ICovIGRpYWc6Ondhcm5fZm9ybWF0X25vbl9zdGFuZGFyZCwgZGlhZzo6d2Fybl9mb3JtYXRfbm9uX3N0YW5kYXJkX2NvbnZlcnNpb25fc3BlYywgZGlhZzo6d2Fybl9mb3JtYXRfbm9uX3N0YW5kYXJkX3Bvc2l0aW9uYWxfYXJnLCAtMSwKKyAgLyogRGlhZ0FycmF5MjM4ICovIGRpYWc6Ondhcm5fZm9ybWF0X25vbmxpdGVyYWwsIC0xLAorICAvKiBEaWFnQXJyYXkyMzkgKi8gZGlhZzo6d2Fybl9mb3JtYXRfYXJndW1lbnRfbmVlZHNfY2FzdF9wZWRhbnRpYywgZGlhZzo6d2Fybl9mb3JtYXRfY29udmVyc2lvbl9hcmd1bWVudF90eXBlX21pc21hdGNoX3BlZGFudGljLCAtMSwKKyAgLyogRGlhZ0FycmF5MjQwICovIGRpYWc6Ondhcm5fZm9ybWF0X25vbmxpdGVyYWxfbm9hcmdzLCAtMSwKKyAgLyogRGlhZ0FycmF5MjQyICovIGRpYWc6Ondhcm5fZW1wdHlfZm9ybWF0X3N0cmluZywgLTEsCisgIC8qIERpYWdBcnJheTI0NCAqLyBkaWFnOjpleHRfZm91cl9jaGFyX2NoYXJhY3Rlcl9saXRlcmFsLCAtMSwKKyAgLyogRGlhZ0FycmF5MjQ1ICovIGRpYWc6Ondhcm5fZmVfYmFja2VuZF9mcmFtZV9sYXJnZXJfdGhhbiwgZGlhZzo6d2Fybl9mZV9mcmFtZV9sYXJnZXJfdGhhbiwgLTEsCisgIC8qIERpYWdBcnJheTI0NiAqLyBkaWFnOjp3YXJuX2ZyYW1ld29ya19pbmNsdWRlX3ByaXZhdGVfZnJvbV9wdWJsaWMsIC0xLAorICAvKiBEaWFnQXJyYXkyNDcgKi8gZGlhZzo6d2Fybl9mdW5jdGlvbl9kZWZfaW5fb2JqY19jb250YWluZXIsIC0xLAorICAvKiBEaWFnQXJyYXkyNDggKi8gZGlhZzo6d2Fybl9kaXNwYXRjaF9ib2R5X2lnbm9yZWQsIGRpYWc6Ondhcm5fbXVsdGl2ZXJzaW9uX2R1cGxpY2F0ZV9lbnRyaWVzLCAtMSwKKyAgLyogRGlhZ0FycmF5MjUwICovIGRpYWc6OmV4dF9jbGFuZ19kaWFnbm9zZV9pZiwgZGlhZzo6ZXh0X2NsYW5nX2VuYWJsZV9pZiwgZGlhZzo6ZXh0X3dhcm5fZ251X2ZpbmFsLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9vbl9mdW5jdGlvbl9kZWZpbml0aW9uLCBkaWFnOjp3YXJuX2JyZWFrX2JpbmRzX3RvX3N3aXRjaCwgZGlhZzo6d2Fybl9jbGVhbnVwX2V4dCwgZGlhZzo6d2Fybl9nY2NfYXR0cmlidXRlX2xvY2F0aW9uLCBkaWFnOjp3YXJuX2djY19pZ25vcmVzX3R5cGVfYXR0ciwgZGlhZzo6d2Fybl9nY2NfdmFyaWFibGVfZGVjbF9pbl9mb3JfbG9vcCwgZGlhZzo6d2Fybl9sb29wX2N0cmxfYmluZHNfdG9faW5uZXIsIC0xLAorICAvKiBEaWFnQXJyYXkyNTEgKi8gZGlhZzo6d2Fybl9nbG9iYWxfY29uc3RydWN0b3IsIGRpYWc6Ondhcm5fZ2xvYmFsX2Rlc3RydWN0b3IsIC0xLAorICAvKiBEaWFnQXJyYXkyNTMgKi8gZGlhZzo6ZXh0X2FsaWdub2ZfZXhwciwgLTEsCisgIC8qIERpYWdBcnJheTI1NCAqLyBkaWFnOjpleHRfZ251X2Fub255bW91c19zdHJ1Y3QsIC0xLAorICAvKiBEaWFnQXJyYXkyNTUgKi8gZGlhZzo6ZXh0X2FycmF5X2luaXRfcGFyZW5zLCAtMSwKKyAgLyogRGlhZ0FycmF5MjU2ICovIGRpYWc6OmV4dF9hdXRvX3R5cGUsIC0xLAorICAvKiBEaWFnQXJyYXkyNTcgKi8gZGlhZzo6ZXh0X2JpbmFyeV9saXRlcmFsLCAtMSwKKyAgLyogRGlhZ0FycmF5MjU4ICovIGRpYWc6OmV4dF9nbnVfY2FzZV9yYW5nZSwgLTEsCisgIC8qIERpYWdBcnJheTI1OSAqLyBkaWFnOjpleHRfaW50ZWdlcl9jb21wbGV4LCAtMSwKKyAgLyogRGlhZ0FycmF5MjYwICovIGRpYWc6OmV4dF9hcnJheV9pbml0X2NvcHksIC0xLAorICAvKiBEaWFnQXJyYXkyNjEgKi8gZGlhZzo6ZXh0X2dudV9jb25kaXRpb25hbF9leHByLCAtMSwKKyAgLyogRGlhZ0FycmF5MjYyICovIGRpYWc6OmV4dF9nbnVfYXJyYXlfcmFuZ2UsIGRpYWc6OmV4dF9nbnVfbWlzc2luZ19lcXVhbF9kZXNpZ25hdG9yLCBkaWFnOjpleHRfZ251X29sZF9zdHlsZV9maWVsZF9kZXNpZ25hdG9yLCAtMSwKKyAgLyogRGlhZ0FycmF5MjYzICovIGRpYWc6OmV4dF9nbnVfZW1wdHlfaW5pdGlhbGl6ZXIsIC0xLAorICAvKiBEaWFnQXJyYXkyNjQgKi8gZGlhZzo6ZXh0X2VtcHR5X3N0cnVjdF91bmlvbiwgZGlhZzo6ZXh0X2ZsZXhpYmxlX2FycmF5X2VtcHR5X2FnZ3JlZ2F0ZV9nbnUsIGRpYWc6OmV4dF9ub19uYW1lZF9tZW1iZXJzX2luX3N0cnVjdF91bmlvbiwgLTEsCisgIC8qIERpYWdBcnJheTI2NSAqLyBkaWFnOjpleHRfZmxleGlibGVfYXJyYXlfaW5pdCwgLTEsCisgIC8qIERpYWdBcnJheTI2NiAqLyBkaWFnOjpleHRfZmxleGlibGVfYXJyYXlfdW5pb25fZ251LCAtMSwKKyAgLyogRGlhZ0FycmF5MjY3ICovIGRpYWc6OmV4dF9leHByX25vdF9pY2UsIGRpYWc6OmV4dF9pbl9jbGFzc19pbml0aWFsaXplcl9ub25fY29uc3RhbnQsIGRpYWc6OmV4dF92bGFfZm9sZGVkX3RvX2NvbnN0YW50LCAtMSwKKyAgLyogRGlhZ0FycmF5MjY4ICovIGRpYWc6OmV4dF9pbWFnaW5hcnlfY29uc3RhbnQsIC0xLAorICAvKiBEaWFnQXJyYXkyNjkgKi8gZGlhZzo6ZXh0X3BwX2luY2x1ZGVfbmV4dF9kaXJlY3RpdmUsIC0xLAorICAvKiBEaWFnQXJyYXkyNzAgKi8gZGlhZzo6ZXh0X2dudV9hZGRyZXNzX29mX2xhYmVsLCBkaWFnOjpleHRfZ251X2luZGlyZWN0X2dvdG8sIC0xLAorICAvKiBEaWFnQXJyYXkyNzEgKi8gZGlhZzo6ZXh0X2ZvcndhcmRfcmVmX2VudW1fZGVmLCAtMSwKKyAgLyogRGlhZ0FycmF5MjcyICovIGRpYWc6OmV4dF9nbnVfc3RhdGVtZW50X2V4cHIsIC0xLAorICAvKiBEaWFnQXJyYXkyNzMgKi8gZGlhZzo6ZXh0X2luX2NsYXNzX2luaXRpYWxpemVyX2Zsb2F0X3R5cGUsIC0xLAorICAvKiBEaWFnQXJyYXkyNzQgKi8gZGlhZzo6ZXh0X3N0cmluZ19saXRlcmFsX29wZXJhdG9yX3RlbXBsYXRlLCAtMSwKKyAgLyogRGlhZ0FycmF5Mjc1ICovIGRpYWc6OmV4dF90eXBlY2hlY2tfY2FzdF90b191bmlvbiwgLTEsCisgIC8qIERpYWdBcnJheTI3NiAqLyBkaWFnOjpleHRfdmFyaWFibGVfc2l6ZWRfdHlwZV9pbl9zdHJ1Y3QsIC0xLAorICAvKiBEaWFnQXJyYXkyNzcgKi8gZGlhZzo6ZXh0X3BwX2xpbmVfemVybywgLTEsCisgIC8qIERpYWdBcnJheTI3OCAqLyBkaWFnOjpleHRfbWlzc2luZ192YXJhcmdzX2FyZywgZGlhZzo6ZXh0X3Bhc3RlX2NvbW1hLCAtMSwKKyAgLyogRGlhZ0FycmF5Mjc5ICovIGRpYWc6Ondhcm5faGVhZGVyX2d1YXJkLCAtMSwKKyAgLyogRGlhZ0FycmF5MjgwICovIGRpYWc6Ondhcm5fdXNpbmdfZGlyZWN0aXZlX2luX2hlYWRlciwgLTEsCisgIC8qIERpYWdBcnJheTI4MSAqLyBkaWFnOjp3YXJuX2NvbmRpdGlvbl9pc19pZGlvbWF0aWNfYXNzaWdubWVudCwgLTEsCisgIC8qIERpYWdBcnJheTI4MiAqLyBkaWFnOjpleHRfY2Fubm90X3VzZV90cml2aWFsX2FiaSwgZGlhZzo6d2Fybl9hbGlhc190b193ZWFrX2FsaWFzLCBkaWFnOjp3YXJuX2FsaWFzX3dpdGhfc2VjdGlvbiwgZGlhZzo6d2Fybl9hdHRyX2FiaV90YWdfbmFtZXNwYWNlLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9hZnRlcl9kZWZpbml0aW9uX2lnbm9yZWQsIGRpYWc6Ondhcm5fYXR0cmlidXRlX2lib3V0bGV0LCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9pZ25vcmVkLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9pZ25vcmVkX2Zvcl9maWVsZF9vZl90eXBlLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9pZ25vcmVkX29uX2lubGluZSwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfaW52YWxpZF9vbl9kZWZpbml0aW9uLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9ub19kZWNsLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9ub25udWxsX25vX3BvaW50ZXJzLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9ub25udWxsX3Bhcm1fbm9fYXJncywgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfbm90X29uX2RlY2wsIGRpYWc6Ondhcm5fYXR0cmlidXRlX3BvaW50ZXJfb3JfcmVmZXJlbmNlX29ubHksIGRpYWc6Ondhcm5fYXR0cmlidXRlX3BvaW50ZXJzX29ubHksIGRpYWc6Ondhcm5fYXR0cmlidXRlX3ByZWNlZGVfZGVmaW5pdGlvbiwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfcmV0dXJuX3BvaW50ZXJzX29ubHksIGRpYWc6Ondhcm5fYXR0cmlidXRlX3JldHVybl9wb2ludGVyc19yZWZzX29ubHksIGRpYWc6Ondhcm5fYXR0cmlidXRlX3NlbnRpbmVsX25hbWVkX2FyZ3VtZW50cywgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfc2VudGluZWxfbm90X3ZhcmlhZGljLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV90eXBlX25vdF9zdXBwb3J0ZWQsIGRpYWc6Ondhcm5fYXR0cmlidXRlX3Vua25vd25fdmlzaWJpbGl0eSwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfdm9pZF9mdW5jdGlvbl9tZXRob2QsIGRpYWc6Ondhcm5fYXR0cmlidXRlX3dlYWtfb25fZmllbGQsIGRpYWc6Ondhcm5fYXR0cmlidXRlX3dlYWtfb25fbG9jYWwsIGRpYWc6Ondhcm5fYXR0cmlidXRlX3dyb25nX2RlY2xfdHlwZSwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfd3JvbmdfZGVjbF90eXBlX3N0ciwgZGlhZzo6d2Fybl9ibG9ja19saXRlcmFsX2F0dHJpYnV0ZXNfb25fb21pdHRlZF9yZXR1cm5fdHlwZSwgZGlhZzo6d2Fybl9jY29udl9pZ25vcmVkLCBkaWFnOjp3YXJuX2Njb252X3N0cnVjdG9ycywgZGlhZzo6d2Fybl9jY29udl92YXJhcmdzLCBkaWFnOjp3YXJuX2N4eDExX2dudV9hdHRyaWJ1dGVfb25fdHlwZSwgZGlhZzo6d2Fybl9kZWNsc3BlY19hdHRyaWJ1dGVfaWdub3JlZCwgZGlhZzo6d2Fybl9kZXByZWNhdGVkX2Fub255bW91c19uYW1lc3BhY2UsIGRpYWc6Ondhcm5fZGxsaW1wb3J0X2Ryb3BwZWRfZnJvbV9pbmxpbmVfZnVuY3Rpb24sIGRpYWc6Ondhcm5fZHVwbGljYXRlX2F0dHJpYnV0ZSwgZGlhZzo6d2Fybl9kdXBsaWNhdGVfYXR0cmlidXRlX2V4YWN0LCBkaWFnOjp3YXJuX2djX2F0dHJpYnV0ZV93ZWFrX29uX2xvY2FsLCBkaWFnOjp3YXJuX2dudV9pbmxpbmVfYXR0cmlidXRlX3JlcXVpcmVzX2lubGluZSwgZGlhZzo6d2Fybl9pZ25vcmVkX21zX2luaGVyaXRhbmNlLCBkaWFnOjp3YXJuX2lnbm9yZWRfb2JqY19leHRlcm5hbGx5X3JldGFpbmVkLCBkaWFnOjp3YXJuX2ludGVybmFsX2xpbmthZ2VfbG9jYWxfc3RvcmFnZSwgZGlhZzo6d2Fybl9pbnRlcnJ1cHRfYXR0cmlidXRlX2ludmFsaWQsIGRpYWc6Ondhcm5fbWljcm9zb2Z0X3F1YWxpZmllcnNfaWdub3JlZCwgZGlhZzo6d2Fybl9tbWFwX3Vua25vd25fYXR0cmlidXRlLCBkaWFnOjp3YXJuX25vY2ZfY2hlY2tfYXR0cmlidXRlX2lnbm9yZWQsIGRpYWc6Ondhcm5fbm9kZXJlZl9vbl9ub25fcG9pbnRlcl9vcl9hcnJheSwgZGlhZzo6d2Fybl9uc19hdHRyaWJ1dGVfd3JvbmdfcGFyYW1ldGVyX3R5cGUsIGRpYWc6Ondhcm5fbnNfYXR0cmlidXRlX3dyb25nX3JldHVybl90eXBlLCBkaWFnOjp3YXJuX29wZW5jbF9hdHRyX2RlcHJlY2F0ZWRfaWdub3JlZCwgZGlhZzo6d2Fybl9yaXNjdl9yZXBlYXRlZF9pbnRlcnJ1cHRfYXR0cmlidXRlLCBkaWFnOjp3YXJuX3RyYW5zcGFyZW50X3VuaW9uX2F0dHJpYnV0ZV9maWVsZF9zaXplX2FsaWduLCBkaWFnOjp3YXJuX3RyYW5zcGFyZW50X3VuaW9uX2F0dHJpYnV0ZV9mbG9hdGluZywgZGlhZzo6d2Fybl90cmFuc3BhcmVudF91bmlvbl9hdHRyaWJ1dGVfbm90X2RlZmluaXRpb24sIGRpYWc6Ondhcm5fdHJhbnNwYXJlbnRfdW5pb25fYXR0cmlidXRlX3plcm9fZmllbGRzLCBkaWFnOjp3YXJuX3R5cGVfYXR0cmlidXRlX3dyb25nX3R5cGUsIGRpYWc6Ondhcm5fdW5oYW5kbGVkX21zX2F0dHJpYnV0ZV9pZ25vcmVkLCBkaWFnOjp3YXJuX3Vuc3VwcG9ydGVkX3RhcmdldF9hdHRyaWJ1dGUsIGRpYWc6Ondhcm5fd3JvbmdfY2xhbmdfYXR0cl9uYW1lc3BhY2UsIC0xLAorICAvKiBEaWFnQXJyYXkyODMgKi8gZGlhZzo6d2Fybl9kcnZfdW5zdXBwb3J0ZWRfb3B0X2Zvcl90YXJnZXQsIGRpYWc6Ondhcm5faWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5Mjg0ICovIGRpYWc6Ondhcm5fcHJhZ21hX2ludHJpbnNpY19idWlsdGluLCAtMSwKKyAgLyogRGlhZ0FycmF5Mjg1ICovIGRpYWc6Ondhcm5fcHJhZ21hX29wdGltaXplLCAtMSwKKyAgLyogRGlhZ0FycmF5Mjg2ICovIGRpYWc6Ondhcm5fcHJhZ21hX2FsaWduX2V4cGVjdGVkX2VxdWFsLCBkaWFnOjp3YXJuX3ByYWdtYV9hbGlnbl9pbnZhbGlkX29wdGlvbiwgZGlhZzo6d2Fybl9wcmFnbWFfYmVnaW5fZW5kX21pc21hdGNoLCBkaWFnOjp3YXJuX3ByYWdtYV9jb21tZW50X2lnbm9yZWQsIGRpYWc6Ondhcm5fcHJhZ21hX2RlYnVnX21pc3NpbmdfYXJndW1lbnQsIGRpYWc6Ondhcm5fcHJhZ21hX2RlYnVnX3VuZXhwZWN0ZWRfY29tbWFuZCwgZGlhZzo6d2Fybl9wcmFnbWFfZXhwZWN0ZWRfYWN0aW9uX29yX3JfcGFyZW4sIGRpYWc6Ondhcm5fcHJhZ21hX2V4cGVjdGVkX2NvbG9uLCBkaWFnOjp3YXJuX3ByYWdtYV9leHBlY3RlZF9jb2xvbl9yX3BhcmVuLCBkaWFnOjp3YXJuX3ByYWdtYV9leHBlY3RlZF9jb21tYSwgZGlhZzo6d2Fybl9wcmFnbWFfZXhwZWN0ZWRfaWRlbnRpZmllciwgZGlhZzo6d2Fybl9wcmFnbWFfZXhwZWN0ZWRfaW5pdF9zZWcsIGRpYWc6Ondhcm5fcHJhZ21hX2V4cGVjdGVkX2ludGVnZXIsIGRpYWc6Ondhcm5fcHJhZ21hX2V4cGVjdGVkX2xwYXJlbiwgZGlhZzo6d2Fybl9wcmFnbWFfZXhwZWN0ZWRfbm9uX3dpZGVfc3RyaW5nLCBkaWFnOjp3YXJuX3ByYWdtYV9leHBlY3RlZF9wcmVkaWNhdGUsIGRpYWc6Ondhcm5fcHJhZ21hX2V4cGVjdGVkX3B1bmMsIGRpYWc6Ondhcm5fcHJhZ21hX2V4cGVjdGVkX3JwYXJlbiwgZGlhZzo6d2Fybl9wcmFnbWFfZXhwZWN0ZWRfc2VjdGlvbl9sYWJlbF9vcl9uYW1lLCBkaWFnOjp3YXJuX3ByYWdtYV9leHBlY3RlZF9zZWN0aW9uX25hbWUsIGRpYWc6Ondhcm5fcHJhZ21hX2V4cGVjdGVkX3NlY3Rpb25fcHVzaF9wb3Bfb3JfbmFtZSwgZGlhZzo6d2Fybl9wcmFnbWFfZXhwZWN0ZWRfc3RyaW5nLCBkaWFnOjp3YXJuX3ByYWdtYV9leHRyYV90b2tlbnNfYXRfZW9sLCBkaWFnOjp3YXJuX3ByYWdtYV9mb3JjZV9jdWRhX2hvc3RfZGV2aWNlX2JhZF9hcmcsIGRpYWc6Ondhcm5fcHJhZ21hX2luaXRfc2VnX3Vuc3VwcG9ydGVkX3RhcmdldCwgZGlhZzo6d2Fybl9wcmFnbWFfaW52YWxpZF9hY3Rpb24sIGRpYWc6Ondhcm5fcHJhZ21hX2ludmFsaWRfYXJndW1lbnQsIGRpYWc6Ondhcm5fcHJhZ21hX2ludmFsaWRfc3BlY2lmaWNfYWN0aW9uLCBkaWFnOjp3YXJuX3ByYWdtYV9taXNzaW5nX2FyZ3VtZW50LCBkaWFnOjp3YXJuX3ByYWdtYV9tc19zdHJ1Y3QsIGRpYWc6Ondhcm5fcHJhZ21hX29wdGlvbnNfYWxpZ25fcmVzZXRfZmFpbGVkLCBkaWFnOjp3YXJuX3ByYWdtYV9vcHRpb25zX2V4cGVjdGVkX2FsaWduLCBkaWFnOjp3YXJuX3ByYWdtYV9wYWNrX2ludmFsaWRfYWxpZ25tZW50LCBkaWFnOjp3YXJuX3ByYWdtYV9wYWNrX21hbGZvcm1lZCwgZGlhZzo6d2Fybl9wcmFnbWFfcG9wX2ZhaWxlZCwgZGlhZzo6d2Fybl9wcmFnbWFfcG9wX21hY3JvX25vX3B1c2gsIGRpYWc6Ondhcm5fcHJhZ21hX3Vua25vd25fZXh0ZW5zaW9uLCBkaWFnOjp3YXJuX3ByYWdtYV91bnN1cHBvcnRlZF9hY3Rpb24sIGRpYWc6Ondhcm5fcHJhZ21hX3Vuc3VwcG9ydGVkX2V4dGVuc2lvbiwgZGlhZzo6d2Fybl9wcmFnbWFfdW51c2VkX2V4cGVjdGVkX3ZhciwgZGlhZzo6d2Fybl9wcmFnbWFfdW51c2VkX2V4cGVjdGVkX3Zhcl9hcmcsIGRpYWc6Ondhcm5fcHJhZ21hX3VudXNlZF91bmRlY2xhcmVkX3ZhciwgLTEsCisgIC8qIERpYWdBcnJheTI4NyAqLyBkaWFnOjp3YXJuX2FyY19saWZldGltZV9yZXN1bHRfdHlwZSwgZGlhZzo6d2Fybl9ibG9ja19saXRlcmFsX3F1YWxpZmllcnNfb25fb21pdHRlZF9yZXR1cm5fdHlwZSwgZGlhZzo6d2Fybl9xdWFsX3JldHVybl90eXBlLCBkaWFnOjp3YXJuX3R5cGVjaGVja19mdW5jdGlvbl9xdWFsaWZpZXJzX2lnbm9yZWQsIGRpYWc6Ondhcm5fdHlwZWNoZWNrX3JlZmVyZW5jZV9xdWFsaWZpZXJzLCAtMSwKKyAgLyogRGlhZ0FycmF5Mjg5ICovIGRpYWc6Ondhcm5fYXV0b19pbXBsaWNpdF9hdG9taWNfcHJvcGVydHksIGRpYWc6Ondhcm5faW1wbGljaXRfYXRvbWljX3Byb3BlcnR5LCAtMSwKKyAgLyogRGlhZ0FycmF5MjkwICovIGRpYWc6Ondhcm5faW1wY2FzdF9mbG9hdGluZ19wb2ludF90b19ib29sLCAtMSwKKyAgLyogRGlhZ0FycmF5MjkxICovIGRpYWc6OmV4dF9pbXBsaWNpdF9leGNlcHRpb25fc3BlY19taXNtYXRjaCwgLTEsCisgIC8qIERpYWdBcnJheTI5MiAqLyBkaWFnOjp3YXJuX2ZhbGx0aHJvdWdoX2F0dHJfdW5yZWFjaGFibGUsIGRpYWc6Ondhcm5fdW5hbm5vdGF0ZWRfZmFsbHRocm91Z2gsIC0xLAorICAvKiBEaWFnQXJyYXkyOTMgKi8gZGlhZzo6d2Fybl91bmFubm90YXRlZF9mYWxsdGhyb3VnaF9wZXJfZnVuY3Rpb24sIC0xLAorICAvKiBEaWFnQXJyYXkyOTQgKi8gZGlhZzo6d2Fybl9pbXBjYXN0X2ZpeGVkX3BvaW50X3JhbmdlLCAtMSwKKyAgLyogRGlhZ0FycmF5Mjk1ICovIGRpYWc6Ondhcm5faW1wY2FzdF9mbG9hdF9wcmVjaXNpb24sIGRpYWc6Ondhcm5faW1wY2FzdF9mbG9hdF9yZXN1bHRfcHJlY2lzaW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5Mjk2ICovIGRpYWc6OmV4dF9pbXBsaWNpdF9mdW5jdGlvbl9kZWNsLCBkaWFnOjpleHRfaW1wbGljaXRfbGliX2Z1bmN0aW9uX2RlY2wsIGRpYWc6Ondhcm5fYnVpbHRpbl91bmtub3duLCBkaWFnOjp3YXJuX2ltcGxpY2l0X2Z1bmN0aW9uX2RlY2wsIC0xLAorICAvKiBEaWFnQXJyYXkyOTcgKi8gZGlhZzo6ZXh0X21pc3NpbmdfdHlwZV9zcGVjaWZpZXIsIC0xLAorICAvKiBEaWFnQXJyYXkyOTggKi8gZGlhZzo6d2Fybl9pbXBjYXN0X2hpZ2hfb3JkZXJfemVyb19iaXRzLCBkaWFnOjp3YXJuX2ltcGNhc3RfaW50ZWdlcl9wcmVjaXNpb24sIC0xLAorICAvKiBEaWFnQXJyYXkyOTkgKi8gZGlhZzo6d2Fybl9pbXBsaWNpdGx5X3JldGFpbnNfc2VsZiwgLTEsCisgIC8qIERpYWdBcnJheTMwMCAqLyBkaWFnOjpleHRfaW50ZWdlcl9saXRlcmFsX3Rvb19sYXJnZV9mb3Jfc2lnbmVkLCAtMSwKKyAgLyogRGlhZ0FycmF5MzAyICovIGRpYWc6OmV4dF9wcF9pbXBvcnRfZGlyZWN0aXZlLCAtMSwKKyAgLyogRGlhZ0FycmF5MzAzICovIGRpYWc6Ondhcm5faW5hY2Nlc3NpYmxlX2Jhc2VfY2xhc3MsIC0xLAorICAvKiBEaWFnQXJyYXkzMDQgKi8gZGlhZzo6cHBfaW5jbHVkZV9uZXh0X2Fic29sdXRlX3BhdGgsIC0xLAorICAvKiBEaWFnQXJyYXkzMDUgKi8gZGlhZzo6cHBfaW5jbHVkZV9uZXh0X2luX3ByaW1hcnksIC0xLAorICAvKiBEaWFnQXJyYXkzMDYgKi8gZGlhZzo6d2Fybl9kZWVwX2V4Y2VwdGlvbl9zcGVjc19kaWZmZXIsIGRpYWc6Ondhcm5faW5jb21wYXRpYmxlX2V4Y2VwdGlvbl9zcGVjcywgLTEsCisgIC8qIERpYWdBcnJheTMwNyAqLyBkaWFnOjpleHRfdHlwZWNoZWNrX2NvbnZlcnRfaW5jb21wYXRpYmxlX2Z1bmN0aW9uX3BvaW50ZXIsIC0xLAorICAvKiBEaWFnQXJyYXkzMDggKi8gZGlhZzo6d2Fybl9yZWRlY2xfbGlicmFyeV9idWlsdGluLCAtMSwKKyAgLyogRGlhZ0FycmF5MzA5ICovIGRpYWc6Ondhcm5fY3h4X21zX3N0cnVjdCwgZGlhZzo6d2Fybl9ucG90X21zX3N0cnVjdCwgLTEsCisgIC8qIERpYWdBcnJheTMxMCAqLyBkaWFnOjpleHRfdHlwZWNoZWNrX2NvbnZlcnRfaW5jb21wYXRpYmxlX3BvaW50ZXIsIC0xLAorICAvKiBEaWFnQXJyYXkzMTEgKi8gZGlhZzo6ZXh0X25lc3RlZF9wb2ludGVyX3F1YWxpZmllcl9taXNtYXRjaCwgZGlhZzo6ZXh0X3R5cGVjaGVja19jb252ZXJ0X2Rpc2NhcmRzX3F1YWxpZmllcnMsIC0xLAorICAvKiBEaWFnQXJyYXkzMTIgKi8gZGlhZzo6d2Fybl9wcm9wZXJ0eV90eXBlc19hcmVfaW5jb21wYXRpYmxlLCAtMSwKKyAgLyogRGlhZ0FycmF5MzEzICovIGRpYWc6Ondhcm5faW5jb21wYXRpYmxlX3N5c3Jvb3QsIC0xLAorICAvKiBEaWFnQXJyYXkzMTQgKi8gZGlhZzo6d2Fybl9tbWFwX2luY29tcGxldGVfZnJhbWV3b3JrX21vZHVsZV9kZWNsYXJhdGlvbiwgLTEsCisgIC8qIERpYWdBcnJheTMxNSAqLyBkaWFnOjp3YXJuX3VuZGVmX21ldGhvZF9pbXBsLCAtMSwKKyAgLyogRGlhZ0FycmF5MzE3ICovIGRpYWc6Ondhcm5fbWlzc2luZ19zdWJtb2R1bGUsIGRpYWc6Ondhcm5fbW1hcF91bWJyZWxsYV9kaXJfbm90X2ZvdW5kLCBkaWFnOjp3YXJuX3VuY292ZXJlZF9tb2R1bGVfaGVhZGVyLCAtMSwKKyAgLyogRGlhZ0FycmF5MzE4ICovIGRpYWc6Ondhcm5fcmVkZWNsYXJhdGlvbl93aXRob3V0X2F0dHJpYnV0ZV9wcmV2X2F0dHJpYnV0ZV9pZ25vcmVkLCBkaWFnOjp3YXJuX3JlZGVjbGFyYXRpb25fd2l0aG91dF9pbXBvcnRfYXR0cmlidXRlLCAtMSwKKyAgLyogRGlhZ0FycmF5MzE5ICovIGRpYWc6Ondhcm5fZGVzdHJ1Y3Rvcl9tYXJrZWRfbm90X292ZXJyaWRlX292ZXJyaWRpbmcsIC0xLAorICAvKiBEaWFnQXJyYXkzMjAgKi8gZGlhZzo6d2Fybl9mdW5jdGlvbl9tYXJrZWRfbm90X292ZXJyaWRlX292ZXJyaWRpbmcsIC0xLAorICAvKiBEaWFnQXJyYXkzMjEgKi8gZGlhZzo6ZXh0X2luY3JlbWVudF9ib29sLCAtMSwKKyAgLyogRGlhZ0FycmF5MzIyICovIGRpYWc6Ondhcm5faW5maW5pdGVfcmVjdXJzaXZlX2Z1bmN0aW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5MzI0ICovIGRpYWc6Ondhcm5faW5pdGlhbGl6ZXJfb3ZlcnJpZGVzLCBkaWFnOjp3YXJuX3N1Ym9iamVjdF9pbml0aWFsaXplcl9vdmVycmlkZXMsIC0xLAorICAvKiBEaWFnQXJyYXkzMjUgKi8gZGlhZzo6ZXh0X291dF9vZl9saW5lX3F1YWxpZmllZF9pZF90eXBlX25hbWVzX2NvbnN0cnVjdG9yLCAtMSwKKyAgLyogRGlhZ0FycmF5MzI3ICovIGRpYWc6Ondhcm5fZmVfaW5saW5lX2FzbSwgLTEsCisgIC8qIERpYWdBcnJheTMyOCAqLyBkaWFnOjpleHRfb3BlcmF0b3JfbmV3X2RlbGV0ZV9kZWNsYXJlZF9pbmxpbmUsIC0xLAorICAvKiBEaWFnQXJyYXkzMjkgKi8gZGlhZzo6d2Fybl9leHBsaWNpdF9pbnN0YW50aWF0aW9uX2FmdGVyX3NwZWNpYWxpemF0aW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5MzMwICovIGRpYWc6OmV4dF90eXBlY2hlY2tfY29udmVydF9pbnRfcG9pbnRlciwgZGlhZzo6ZXh0X3R5cGVjaGVja19jb252ZXJ0X3BvaW50ZXJfaW50LCAtMSwKKyAgLyogRGlhZ0FycmF5MzMyICovIGRpYWc6Ondhcm5faW50X3RvX3BvaW50ZXJfY2FzdCwgLTEsCisgIC8qIERpYWdBcnJheTMzMyAqLyBkaWFnOjp3YXJuX2ludF90b192b2lkX3BvaW50ZXJfY2FzdCwgLTEsCisgIC8qIERpYWdBcnJheTMzNCAqLyBkaWFnOjp3YXJuX2ludGVnZXJfY29uc3RhbnRfb3ZlcmZsb3csIC0xLAorICAvKiBEaWFnQXJyYXkzMzUgKi8gZGlhZzo6d2Fybl9kcnZfbXNwNDMwX2h3bXVsdF9taXNtYXRjaCwgZGlhZzo6d2Fybl9kcnZfbXNwNDMwX2h3bXVsdF9ub19kZXZpY2UsIGRpYWc6Ondhcm5fZHJ2X21zcDQzMF9od211bHRfdW5zdXBwb3J0ZWQsIGRpYWc6Ondhcm5fZHJ2X29iamVjdF9zaXplX2Rpc2FibGVkX08wLCBkaWFnOjp3YXJuX2Rydl9vcHRpbWl6YXRpb25fdmFsdWUsIC0xLAorICAvKiBEaWFnQXJyYXkzMzYgKi8gZGlhZzo6ZXh0X2NvbnN0ZXhwcl9mdW5jdGlvbl9uZXZlcl9jb25zdGFudF9leHByLCAtMSwKKyAgLyogRGlhZ0FycmF5MzM3ICovIGRpYWc6Ondhcm5faWJvdXRsZXRfb2JqZWN0X3R5cGUsIGRpYWc6Ondhcm5faWJvdXRsZXRjb2xsZWN0aW9uX3Byb3BlcnR5X2Fzc2lnbiwgLTEsCisgIC8qIERpYWdBcnJheTMzOCAqLyBkaWFnOjp3YXJuX2ludmFsaWRfaW5pdGlhbGl6ZXJfZnJvbV9zeXN0ZW1faGVhZGVyLCAtMSwKKyAgLyogRGlhZ0FycmF5MzM5ICovIGRpYWc6Ondhcm5faW52YWxpZF9pb3NfZGVwbG95bWVudF90YXJnZXQsIC0xLAorICAvKiBEaWFnQXJyYXkzNDAgKi8gZGlhZzo6d2Fybl9mYWxsb2ZmX25vcmV0dXJuX2Z1bmN0aW9uLCBkaWFnOjp3YXJuX25vcmV0dXJuX2Z1bmN0aW9uX2hhc19yZXR1cm5fZXhwciwgLTEsCisgIC8qIERpYWdBcnJheTM0MSAqLyBkaWFnOjpleHRfb2Zmc2V0b2Zfbm9uX3BvZF90eXBlLCBkaWFnOjpleHRfb2Zmc2V0b2Zfbm9uX3N0YW5kYXJkbGF5b3V0X3R5cGUsIC0xLAorICAvKiBEaWFnQXJyYXkzNDIgKi8gZGlhZzo6d2Fybl9kcnZfcHM0X3Nka19kaXIsIGRpYWc6Ondhcm5fZHJ2X3VuYWJsZV90b19maW5kX2RpcmVjdG9yeV9leHBlY3RlZCwgLTEsCisgIC8qIERpYWdBcnJheTM0MyAqLyBkaWFnOjpleHRfcGFydGlhbF9zcGVjX25vdF9tb3JlX3NwZWNpYWxpemVkX3RoYW5fcHJpbWFyeSwgLTEsCisgIC8qIERpYWdBcnJheTM0NSAqLyBkaWFnOjpleHRfZW1wdHlfY2hhcmFjdGVyLCBkaWFnOjpleHRfdW50ZXJtaW5hdGVkX2NoYXJfb3Jfc3RyaW5nLCAtMSwKKyAgLyogRGlhZ0FycmF5MzQ2ICovIGRpYWc6Ondhcm5fYmFkX2NoYXJhY3Rlcl9lbmNvZGluZywgZGlhZzo6d2Fybl9iYWRfc3RyaW5nX2VuY29kaW5nLCAtMSwKKyAgLyogRGlhZ0FycmF5MzQ3ICovIGRpYWc6OmV4dF9wcF9iYWRfcGFzdGVfbXMsIC0xLAorICAvKiBEaWFnQXJyYXkzNDggKi8gZGlhZzo6d2Fybl9qdW1wX291dF9vZl9zZWhfZmluYWxseSwgLTEsCisgIC8qIERpYWdBcnJheTM0OSAqLyBkaWFnOjpleHRfa2V5d29yZF9hc19pZGVudCwgLTEsCisgIC8qIERpYWdBcnJheTM1MCAqLyBkaWFnOjp3YXJuX3BwX21hY3JvX2hpZGVzX2tleXdvcmQsIC0xLAorICAvKiBEaWFnQXJyYXkzNTEgKi8gZGlhZzo6ZXh0X3BhcmFtX3Byb21vdGVkX25vdF9jb21wYXRpYmxlX3dpdGhfcHJvdG90eXBlLCAtMSwKKyAgLyogRGlhZ0FycmF5MzUyICovIGRpYWc6OmV4dF90b2tlbl91c2VkLCAtMSwKKyAgLyogRGlhZ0FycmF5MzUzICovIGRpYWc6Ondhcm5fcGFyYW1ldGVyX3NpemUsIGRpYWc6Ondhcm5fcmV0dXJuX3ZhbHVlX3NpemUsIC0xLAorICAvKiBEaWFnQXJyYXkzNTUgKi8gZGlhZzo6d2Fybl9pbXBjYXN0X2xpdGVyYWxfZmxvYXRfdG9faW50ZWdlciwgZGlhZzo6d2Fybl9pbXBjYXN0X2xpdGVyYWxfZmxvYXRfdG9faW50ZWdlcl9vdXRfb2ZfcmFuZ2UsIC0xLAorICAvKiBEaWFnQXJyYXkzNTYgKi8gZGlhZzo6d2Fybl9mbG9hdF9vdmVyZmxvdywgZGlhZzo6d2Fybl9mbG9hdF91bmRlcmZsb3csIC0xLAorICAvKiBEaWFnQXJyYXkzNTcgKi8gZGlhZzo6ZXh0X3RlbXBsYXRlX2FyZ19sb2NhbF90eXBlLCAtMSwKKyAgLyogRGlhZ0FycmF5MzU4ICovIGRpYWc6Ondhcm5fbG9naWNhbF9ub3Rfb25fbGhzX29mX2NoZWNrLCAtMSwKKyAgLyogRGlhZ0FycmF5MzU5ICovIGRpYWc6Ondhcm5fbG9naWNhbF9hbmRfaW5fbG9naWNhbF9vciwgLTEsCisgIC8qIERpYWdBcnJheTM2MCAqLyBkaWFnOjpleHRfYzk5X2xvbmdsb25nLCAtMSwKKyAgLyogRGlhZ0FycmF5MzYyICovIGRpYWc6OmV4dF9wcF9tYWNyb19yZWRlZiwgLTEsCisgIC8qIERpYWdBcnJheTM2MyAqLyBkaWFnOjpleHRfbWFpbl91c2VkLCBkaWFnOjpleHRfbm9yZXR1cm5fbWFpbiwgZGlhZzo6ZXh0X3ZhcmlhZGljX21haW4sIGRpYWc6Ondhcm5fbWFpbl9vbmVfYXJnLCBkaWFnOjp3YXJuX21haW5fcmVkZWZpbmVkLCBkaWFnOjp3YXJuX21haW5fcmV0dXJuc19ib29sX2xpdGVyYWwsIGRpYWc6Ondhcm5fc3RhdGljX21haW4sIC0xLAorICAvKiBEaWFnQXJyYXkzNjQgKi8gZGlhZzo6ZXh0X21haW5fcmV0dXJuc19ub25pbnQsIC0xLAorICAvKiBEaWFnQXJyYXkzNjUgKi8gZGlhZzo6d2Fybl9oYXNfd2FybmluZ19pbnZhbGlkX29wdGlvbiwgLTEsCisgIC8qIERpYWdBcnJheTM2NiAqLyBkaWFnOjpleHRfbWFueV9icmFjZXNfYXJvdW5kX3NjYWxhcl9pbml0LCAtMSwKKyAgLyogRGlhZ0FycmF5MzY3ICovIGRpYWc6Ondhcm5fbWF4X3Vuc2lnbmVkX3plcm8sIC0xLAorICAvKiBEaWFnQXJyYXkzNjggKi8gZGlhZzo6d2Fybl9zdXNwaWNpb3VzX3NpemVvZl9tZW1zZXQsIC0xLAorICAvKiBEaWFnQXJyYXkzNjkgKi8gZGlhZzo6d2Fybl9tZW1zaXplX2NvbXBhcmlzb24sIC0xLAorICAvKiBEaWFnQXJyYXkzNzAgKi8gZGlhZzo6d2Fybl9ub25fY29udHJhdmFyaWFudF9wYXJhbV90eXBlcywgZGlhZzo6d2Fybl9ub25fY292YXJpYW50X3JldF90eXBlcywgLTEsCisgIC8qIERpYWdBcnJheTM3MiAqLyBkaWFnOjpleHRfYW5vbnltb3VzX3JlY29yZF93aXRoX3R5cGUsIGRpYWc6OmV4dF9tc19hbm9ueW1vdXNfcmVjb3JkLCAtMSwKKyAgLyogRGlhZ0FycmF5MzczICovIGRpYWc6OmV4dF9tc19jYXN0X2ZuX29iaiwgZGlhZzo6ZXh0X21zX2ltcGNhc3RfZm5fb2JqLCAtMSwKKyAgLyogRGlhZ0FycmF5Mzc0ICovIGRpYWc6OmV4dF9jaGFyaXplX21pY3Jvc29mdCwgLTEsCisgIC8qIERpYWdBcnJheTM3NSAqLyBkaWFnOjpleHRfY29tbWVudF9wYXN0ZV9taWNyb3NvZnQsIC0xLAorICAvKiBEaWFnQXJyYXkzNzYgKi8gZGlhZzo6ZXh0X2RlZmF1bHRfaW5pdF9jb25zdCwgLTEsCisgIC8qIERpYWdBcnJheTM3NyAqLyBkaWFnOjpleHRfcHBfb3BlcmF0b3JfdXNlZF9hc19tYWNyb19uYW1lLCAtMSwKKyAgLyogRGlhZ0FycmF5Mzc4ICovIGRpYWc6OmV4dF9wYXJhbV9kZWZhdWx0X2FyZ3VtZW50X3JlZGVmaW5pdGlvbiwgLTEsCisgIC8qIERpYWdBcnJheTM3OSAqLyBkaWFnOjpleHRfY3RybF96X2VvZl9taWNyb3NvZnQsIC0xLAorICAvKiBEaWFnQXJyYXkzODAgKi8gZGlhZzo6ZXh0X21zX2ZvcndhcmRfcmVmX2VudW0sIC0xLAorICAvKiBEaWFnQXJyYXkzODEgKi8gZGlhZzo6ZXh0X2VudW1lcmF0b3JfdG9vX2xhcmdlLCAtMSwKKyAgLyogRGlhZ0FycmF5MzgyICovIGRpYWc6OmV4dF9lbGxpcHNpc19leGNlcHRpb25fc3BlYywgZGlhZzo6ZXh0X2luY29tcGxldGVfaW5fZXhjZXB0aW9uX3NwZWMsIGRpYWc6OmV4dF9taXNtYXRjaGVkX2V4Y2VwdGlvbl9zcGVjLCBkaWFnOjpleHRfbWlzbWF0Y2hlZF9leGNlcHRpb25fc3BlY19leHBsaWNpdF9pbnN0YW50aWF0aW9uLCBkaWFnOjpleHRfbXNfbWlzc2luZ19leGNlcHRpb25fc3BlY2lmaWNhdGlvbiwgZGlhZzo6ZXh0X292ZXJyaWRlX2V4Y2VwdGlvbl9zcGVjLCAtMSwKKyAgLyogRGlhZ0FycmF5MzgzICovIGRpYWc6Ondhcm5fbWljcm9zb2Z0X2RlcGVuZGVudF9leGlzdHMsIC0xLAorICAvKiBEaWFnQXJyYXkzODQgKi8gZGlhZzo6ZXh0X21zX2V4cGxpY2l0X2NvbnN0cnVjdG9yX2NhbGwsIC0xLAorICAvKiBEaWFnQXJyYXkzODUgKi8gZGlhZzo6d2Fybl9tZW1iZXJfZXh0cmFfcXVhbGlmaWNhdGlvbiwgLTEsCisgIC8qIERpYWdBcnJheTM4NiAqLyBkaWFnOjpleHRfbXNfY19lbnVtX2ZpeGVkX3VuZGVybHlpbmdfdHlwZSwgLTEsCisgIC8qIERpYWdBcnJheTM4NyAqLyBkaWFnOjpleHRfZmxleGlibGVfYXJyYXlfZW1wdHlfYWdncmVnYXRlX21zLCBkaWFnOjpleHRfZmxleGlibGVfYXJyYXlfdW5pb25fbXMsIC0xLAorICAvKiBEaWFnQXJyYXkzODggKi8gZGlhZzo6ZXh0X2dvdG9faW50b19wcm90ZWN0ZWRfc2NvcGUsIC0xLAorICAvKiBEaWFnQXJyYXkzODkgKi8gZGlhZzo6ZXh0X21zX2FtYmlndW91c19kaXJlY3RfYmFzZSwgLTEsCisgIC8qIERpYWdBcnJheTM5MCAqLyBkaWFnOjpleHRfcHBfaW5jbHVkZV9zZWFyY2hfbXMsIC0xLAorICAvKiBEaWFnQXJyYXkzOTEgKi8gZGlhZzo6ZXh0X211dGFibGVfcmVmZXJlbmNlLCAtMSwKKyAgLyogRGlhZ0FycmF5MzkyICovIGRpYWc6OmV4dF9wdXJlX2Z1bmN0aW9uX2RlZmluaXRpb24sIC0xLAorICAvKiBEaWFnQXJyYXkzOTMgKi8gZGlhZzo6ZXh0X3N0YXRpY19ub25fc3RhdGljLCAtMSwKKyAgLyogRGlhZ0FycmF5Mzk0ICovIGRpYWc6OmV4dF9tc19zZWFsZWRfa2V5d29yZCwgLTEsCisgIC8qIERpYWdBcnJheTM5NSAqLyBkaWFnOjpleHRfZXhwbGljaXRfaW5zdGFudGlhdGlvbl9kdXBsaWNhdGUsIGRpYWc6OmV4dF9mb3VuZF92aWFfZGVwZW5kZW50X2Jhc2VzX2xvb2t1cCwgZGlhZzo6ZXh0X21zX2RlbGF5ZWRfdGVtcGxhdGVfYXJndW1lbnQsIGRpYWc6OmV4dF9tc19kZXJlZl90ZW1wbGF0ZV9hcmd1bWVudCwgZGlhZzo6ZXh0X21zX3RlbXBsYXRlX3NwZWNfcmVkZWNsX291dF9vZl9zY29wZSwgZGlhZzo6ZXh0X21zX3RlbXBsYXRlX3R5cGVfYXJnX21pc3NpbmdfdHlwZW5hbWUsIGRpYWc6OmV4dF9zdGF0aWNfb3V0X29mX2xpbmUsIGRpYWc6OmV4dF91bmRlY2xhcmVkX3VucXVhbF9pZF93aXRoX2RlcGVuZGVudF9iYXNlLCAtMSwKKyAgLyogRGlhZ0FycmF5Mzk2ICovIGRpYWc6OmV4dF91bmlvbl9tZW1iZXJfb2ZfcmVmZXJlbmNlX3R5cGUsIC0xLAorICAvKiBEaWFnQXJyYXkzOTcgKi8gZGlhZzo6ZXh0X2ZyaWVuZF90YWdfcmVkZWNsX291dHNpZGVfbmFtZXNwYWNlLCAtMSwKKyAgLyogRGlhZ0FycmF5Mzk4ICovIGRpYWc6OmV4dF9tc191c2luZ19kZWNsYXJhdGlvbl9pbmFjY2Vzc2libGUsIC0xLAorICAvKiBEaWFnQXJyYXkzOTkgKi8gZGlhZzo6ZXh0X3BzZXVkb19kdG9yX29uX3ZvaWQsIC0xLAorICAvKiBEaWFnQXJyYXk0MDAgKi8gZGlhZzo6d2Fybl9taXNtYXRjaGVkX2RlbGV0ZV9uZXcsIC0xLAorICAvKiBEaWFnQXJyYXk0MDEgKi8gZGlhZzo6d2Fybl9jb25mbGljdGluZ19wYXJhbV90eXBlcywgLTEsCisgIC8qIERpYWdBcnJheTQwMiAqLyBkaWFnOjp3YXJuX2NvbmZsaWN0aW5nX3JldF90eXBlcywgLTEsCisgIC8qIERpYWdBcnJheTQwMyAqLyBkaWFnOjp3YXJuX3N0cnVjdF9jbGFzc19wcmV2aW91c190YWdfbWlzbWF0Y2gsIGRpYWc6Ondhcm5fc3RydWN0X2NsYXNzX3RhZ19taXNtYXRjaCwgLTEsCisgIC8qIERpYWdBcnJheTQwNCAqLyBkaWFnOjp3YXJuX21pc3NpbmdfYnJhY2VzLCAtMSwKKyAgLyogRGlhZ0FycmF5NDA1ICovIGRpYWc6OmV4dF9ub19kZWNsYXJhdG9ycywgZGlhZzo6ZXh0X3N0YW5kYWxvbmVfc3BlY2lmaWVyLCBkaWFnOjpleHRfdHlwZWRlZl93aXRob3V0X2FfbmFtZSwgZGlhZzo6d2Fybl9zdGFuZGFsb25lX3NwZWNpZmllciwgLTEsCisgIC8qIERpYWdBcnJheTQwNiAqLyBkaWFnOjpleHRfbWlzc2luZ19leGNlcHRpb25fc3BlY2lmaWNhdGlvbiwgLTEsCisgIC8qIERpYWdBcnJheTQwNyAqLyBkaWFnOjp3YXJuX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzLCAtMSwKKyAgLyogRGlhZ0FycmF5NDEwICovIGRpYWc6Ondhcm5fbWlzc2luZ19tZXRob2RfcmV0dXJuX3R5cGUsIC0xLAorICAvKiBEaWFnQXJyYXk0MTEgKi8gZGlhZzo6d2Fybl9vdmVycmlkaW5nX21ldGhvZF9taXNzaW5nX25vZXNjYXBlLCAtMSwKKyAgLyogRGlhZ0FycmF5NDEyICovIGRpYWc6Ondhcm5fc3VnZ2VzdF9ub3JldHVybl9ibG9jaywgZGlhZzo6d2Fybl9zdWdnZXN0X25vcmV0dXJuX2Z1bmN0aW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5NDEzICovIGRpYWc6Ondhcm5fY2NvbnZfa25yLCAtMSwKKyAgLyogRGlhZ0FycmF5NDE0ICovIGRpYWc6Ondhcm5fbWlzc2luZ19wcm90b3R5cGUsIC0xLAorICAvKiBEaWFnQXJyYXk0MTUgKi8gZGlhZzo6d2Fybl9taXNzaW5nX3NlbGVjdG9yX25hbWUsIC0xLAorICAvKiBEaWFnQXJyYXk0MTYgKi8gZGlhZzo6d2Fybl9taXNzaW5nX3N5c3Jvb3QsIC0xLAorICAvKiBEaWFnQXJyYXk0MTcgKi8gZGlhZzo6d2Fybl9taXNzaW5nX3ZhcmlhYmxlX2RlY2xhcmF0aW9ucywgLTEsCisgIC8qIERpYWdBcnJheTQxOCAqLyBkaWFnOjpyZW1hcmtfbW9kdWxlX2J1aWxkLCBkaWFnOjpyZW1hcmtfbW9kdWxlX2J1aWxkX2RvbmUsIGRpYWc6OnJlbWFya19tb2R1bGVfbG9ja19mYWlsdXJlLCBkaWFnOjpyZW1hcmtfbW9kdWxlX2xvY2tfdGltZW91dCwgLTEsCisgIC8qIERpYWdBcnJheTQxOSAqLyBkaWFnOjp3YXJuX21vZHVsZV9jb25mbGljdCwgZGlhZzo6d2Fybl9tb2R1bGVfc3lzdGVtX2JpdF9jb25mbGljdCwgLTEsCisgIC8qIERpYWdBcnJheTQyMCAqLyBkaWFnOjp3YXJuX21vZHVsZV9jb25maWdfbWlzbWF0Y2gsIC0xLAorICAvKiBEaWFnQXJyYXk0MjEgKi8gZGlhZzo6d2Fybl9kdXBsaWNhdGVfbW9kdWxlX2ZpbGVfZXh0ZW5zaW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5NDIyICovIGRpYWc6OmV4dF9tb2R1bGVfaW1wb3J0X2luX2V4dGVybl9jLCAtMSwKKyAgLyogRGlhZ0FycmF5NDIzICovIGRpYWc6OmV4dF9lcXVpdmFsZW50X2ludGVybmFsX2xpbmthZ2VfZGVjbF9pbl9tb2R1bGVzLCAtMSwKKyAgLyogRGlhZ0FycmF5NDI0ICovIGRpYWc6OmV4dF9tb2R1bGVfaW1wb3J0X25vdF9hdF90b3BfbGV2ZWxfbm9vcCwgLTEsCisgIC8qIERpYWdBcnJheTQyOCAqLyBkaWFnOjp3YXJuX2Rydl9tc3ZjX25vdF9mb3VuZCwgLTEsCisgIC8qIERpYWdBcnJheTQyOSAqLyBkaWFnOjpleHRfbXVsdGljaGFyX2NoYXJhY3Rlcl9saXRlcmFsLCAtMSwKKyAgLyogRGlhZ0FycmF5NDMwICovIGRpYWc6Ondhcm5fdmJhc2VfbW92ZWRfbXVsdGlwbGVfdGltZXMsIC0xLAorICAvKiBEaWFnQXJyYXk0MzIgKi8gZGlhZzo6ZXh0X2Fub255bW91c19yZWNvcmRfd2l0aF9hbm9ueW1vdXNfdHlwZSwgLTEsCisgIC8qIERpYWdBcnJheTQzNCAqLyBkaWFnOjp3YXJuX29wZXJhdG9yX25ld19yZXR1cm5zX251bGwsIC0xLAorICAvKiBEaWFnQXJyYXk0MzUgKi8gZGlhZzo6ZXh0X25vX25ld2xpbmVfZW9mLCBkaWFnOjp3YXJuX25vX25ld2xpbmVfZW9mLCAtMSwKKyAgLyogRGlhZ0FycmF5NDM2ICovIGRpYWc6Ondhcm5fZGVyZWZlcmVuY2Vfb2Zfbm9kZXJlZl90eXBlLCBkaWFnOjp3YXJuX2RlcmVmZXJlbmNlX29mX25vZGVyZWZfdHlwZV9ub19kZWNsLCBkaWFnOjp3YXJuX25vZGVyZWZfdG9fZGVyZWZlcmVuY2VhYmxlX3BvaW50ZXIsIC0xLAorICAvKiBEaWFnQXJyYXk0MzkgKi8gZGlhZzo6d2Fybl9ub25fbGl0ZXJhbF9udWxsX3BvaW50ZXIsIC0xLAorICAvKiBEaWFnQXJyYXk0NDAgKi8gZGlhZzo6d2Fybl9ub25fbW9kdWxhcl9pbmNsdWRlX2luX2ZyYW1ld29ya19tb2R1bGUsIC0xLAorICAvKiBEaWFnQXJyYXk0NDEgKi8gZGlhZzo6d2Fybl9ub25fbW9kdWxhcl9pbmNsdWRlX2luX21vZHVsZSwgLTEsCisgIC8qIERpYWdBcnJheTQ0MiAqLyBkaWFnOjp3YXJuX2Nhbm5vdF9wYXNzX25vbl9wb2RfYXJnX3RvX3ZhcmFyZywgZGlhZzo6d2Fybl9ub25fcG9kX3ZhcmFyZ193aXRoX2Zvcm1hdF9zdHJpbmcsIGRpYWc6Ondhcm5fc2Vjb25kX3BhcmFtZXRlcl90b192YV9hcmdfbm90X3BvZCwgZGlhZzo6d2Fybl9zZWNvbmRfcGFyYW1ldGVyX3RvX3ZhX2FyZ19vd25lcnNoaXBfcXVhbGlmaWVkLCAtMSwKKyAgLyogRGlhZ0FycmF5NDQzICovIGRpYWc6Ondhcm5fbm9uX3ZpcnR1YWxfZHRvciwgLTEsCisgIC8qIERpYWdBcnJheTQ0NCAqLyBkaWFnOjp3YXJuX251bGxfYXJnLCBkaWFnOjp3YXJuX251bGxfcmV0LCAtMSwKKyAgLyogRGlhZ0FycmF5NDQ2ICovIGRpYWc6OnBwX25vbnBvcnRhYmxlX3BhdGgsIC0xLAorICAvKiBEaWFnQXJyYXk0NDcgKi8gZGlhZzo6cHBfbm9ucG9ydGFibGVfc3lzdGVtX3BhdGgsIC0xLAorICAvKiBEaWFnQXJyYXk0NDggKi8gZGlhZzo6d2Fybl9uZW9uX3ZlY3Rvcl9pbml0aWFsaXplcl9ub25fcG9ydGFibGUsIC0xLAorICAvKiBEaWFnQXJyYXk0NDkgKi8gZGlhZzo6d2Fybl9jc3RydWN0X21lbWFjY2VzcywgLTEsCisgIC8qIERpYWdBcnJheTQ1MCAqLyBkaWFnOjp3YXJuX25zY29uc3VtZWRfYXR0cmlidXRlX21pc21hdGNoLCAtMSwKKyAgLyogRGlhZ0FycmF5NDUxICovIGRpYWc6Ondhcm5fbnNyZXR1cm5zX3JldGFpbmVkX2F0dHJpYnV0ZV9taXNtYXRjaCwgLTEsCisgIC8qIERpYWdBcnJheTQ1MiAqLyBkaWFnOjp3YXJuX251bGxfaW5fYXJpdGhtZXRpY19vcGVyYXRpb24sIGRpYWc6Ondhcm5fbnVsbF9pbl9jb21wYXJpc29uX29wZXJhdGlvbiwgLTEsCisgIC8qIERpYWdBcnJheTQ1MyAqLyBkaWFnOjpudWxsX2luX2NoYXJfb3Jfc3RyaW5nLCBkaWFnOjpudWxsX2luX2ZpbGUsIC0xLAorICAvKiBEaWFnQXJyYXk0NTQgKi8gZGlhZzo6d2Fybl9pbXBjYXN0X251bGxfcG9pbnRlcl90b19pbnRlZ2VyLCAtMSwKKyAgLyogRGlhZ0FycmF5NDU1ICovIGRpYWc6Ondhcm5fYmluZGluZ19udWxsX3RvX3JlZmVyZW5jZSwgZGlhZzo6d2Fybl9pbmRpcmVjdGlvbl90aHJvdWdoX251bGwsIC0xLAorICAvKiBEaWFnQXJyYXk0NTYgKi8gZGlhZzo6d2Fybl9nbnVfbnVsbF9wdHJfYXJpdGgsIGRpYWc6Ondhcm5fcG9pbnRlcl9hcml0aF9udWxsX3B0ciwgLTEsCisgIC8qIERpYWdBcnJheTQ1NyAqLyBkaWFnOjp3YXJuX2NvbmZsaWN0aW5nX251bGxhYmlsaXR5X2F0dHJfb3ZlcnJpZGluZ19wYXJhbV90eXBlcywgZGlhZzo6d2Fybl9jb25mbGljdGluZ19udWxsYWJpbGl0eV9hdHRyX292ZXJyaWRpbmdfcmV0X3R5cGVzLCBkaWFnOjp3YXJuX21pc21hdGNoZWRfbnVsbGFiaWxpdHlfYXR0ciwgZGlhZzo6d2Fybl9udWxsX3Jlc2V0dGFibGVfc2V0dGVyLCBkaWFnOjp3YXJuX251bGxhYmlsaXR5X2R1cGxpY2F0ZSwgLTEsCisgIC8qIERpYWdBcnJheTQ1OCAqLyBkaWFnOjp3YXJuX251bGxhYmlsaXR5X21pc3NpbmcsIC0xLAorICAvKiBEaWFnQXJyYXk0NTkgKi8gZGlhZzo6d2Fybl9udWxsYWJpbGl0eV9taXNzaW5nX2FycmF5LCAtMSwKKyAgLyogRGlhZ0FycmF5NDYwICovIGRpYWc6Ondhcm5fbnVsbGFiaWxpdHlfZGVjbHNwZWMsIC0xLAorICAvKiBEaWFnQXJyYXk0NjEgKi8gZGlhZzo6ZXh0X251bGxhYmlsaXR5LCAtMSwKKyAgLyogRGlhZ0FycmF5NDYyICovIGRpYWc6Ondhcm5fbnVsbGFiaWxpdHlfaW5mZXJyZWRfb25fbmVzdGVkX3R5cGUsIC0xLAorICAvKiBEaWFnQXJyYXk0NjMgKi8gZGlhZzo6d2Fybl9udWxsYWJpbGl0eV9sb3N0LCAtMSwKKyAgLyogRGlhZ0FycmF5NDY0ICovIGRpYWc6Ondhcm5fYXV0b3N5bnRoZXNpc19wcm9wZXJ0eV9pdmFyX21hdGNoLCAtMSwKKyAgLyogRGlhZ0FycmF5NDY1ICovIGRpYWc6Ondhcm5fb2JqY19jaXJjdWxhcl9jb250YWluZXIsIC0xLAorICAvKiBEaWFnQXJyYXk0NjcgKi8gZGlhZzo6d2Fybl9vYmpjX2Rlc2lnbmF0ZWRfaW5pdF9taXNzaW5nX3N1cGVyX2NhbGwsIGRpYWc6Ondhcm5fb2JqY19kZXNpZ25hdGVkX2luaXRfbm9uX2Rlc2lnbmF0ZWRfaW5pdF9jYWxsLCBkaWFnOjp3YXJuX29iamNfZGVzaWduYXRlZF9pbml0X25vbl9zdXBlcl9kZXNpZ25hdGVkX2luaXRfY2FsbCwgZGlhZzo6d2Fybl9vYmpjX2ltcGxlbWVudGF0aW9uX21pc3NpbmdfZGVzaWduYXRlZF9pbml0X292ZXJyaWRlLCBkaWFnOjp3YXJuX29iamNfc2Vjb25kYXJ5X2luaXRfbWlzc2luZ19pbml0X2NhbGwsIGRpYWc6Ondhcm5fb2JqY19zZWNvbmRhcnlfaW5pdF9zdXBlcl9pbml0X2NhbGwsIC0xLAorICAvKiBEaWFnQXJyYXk0NjggKi8gZGlhZzo6d2Fybl9zdXBlcmNsYXNzX3ZhcmlhYmxlX3NpemVkX3R5cGVfbm90X2F0X2VuZCwgZGlhZzo6d2Fybl92YXJpYWJsZV9zaXplZF9pdmFyX3Zpc2liaWxpdHksIC0xLAorICAvKiBEaWFnQXJyYXk0NjkgKi8gZGlhZzo6d2Fybl9mb3J3YXJkX2NsYXNzX3JlZGVmaW5pdGlvbiwgLTEsCisgIC8qIERpYWdBcnJheTQ3MCAqLyBkaWFnOjp3YXJuX2l2YXJzX2luX2ludGVyZmFjZSwgLTEsCisgIC8qIERpYWdBcnJheTQ3MSAqLyBkaWFnOjp3YXJuX29iamNfbGl0ZXJhbF9jb21wYXJpc29uLCAtMSwKKyAgLyogRGlhZ0FycmF5NDcyICovIGRpYWc6Ondhcm5faW1wY2FzdF9vYmplY3RpdmVfY19saXRlcmFsX3RvX2Jvb2wsIGRpYWc6Ondhcm5fb2JqY19jb2xsZWN0aW9uX2xpdGVyYWxfZWxlbWVudCwgLTEsCisgIC8qIERpYWdBcnJheTQ3MyAqLyBkaWFnOjp3YXJuX3BwX29iamNfbWFjcm9fcmVkZWZfaWdub3JlZCwgLTEsCisgIC8qIERpYWdBcnJheTQ3NCAqLyBkaWFnOjp3YXJuX21lc3NhZ2luZ191bnF1YWxpZmllZF9pZCwgLTEsCisgIC8qIERpYWdBcnJheTQ3NSAqLyBkaWFnOjp3YXJuX2NsYXNzX21ldGhvZF9ub3RfZm91bmQsIGRpYWc6Ondhcm5fY2xhc3NfbWV0aG9kX25vdF9mb3VuZF93aXRoX3R5cG8sIGRpYWc6Ondhcm5faW5zdF9tZXRob2Rfbm90X2ZvdW5kLCBkaWFnOjp3YXJuX2luc3RhbmNlX21ldGhvZF9ub3RfZm91bmRfd2l0aF90eXBvLCBkaWFnOjp3YXJuX2luc3RhbmNlX21ldGhvZF9vbl9jbGFzc19mb3VuZCwgZGlhZzo6d2Fybl9yb290X2luc3RfbWV0aG9kX25vdF9mb3VuZCwgLTEsCisgIC8qIERpYWdBcnJheTQ3NiAqLyBkaWFnOjp3YXJuX21pc3NpbmdfZXhwbGljaXRfc3ludGhlc2lzLCAtMSwKKyAgLyogRGlhZ0FycmF5NDc3ICovIGRpYWc6Ondhcm5fb2JqY19taXNzaW5nX3N1cGVyX2NhbGwsIC0xLAorICAvKiBEaWFnQXJyYXk0NzggKi8gZGlhZzo6d2Fybl9tdWx0aXBsZV9tZXRob2RfZGVjbCwgLTEsCisgIC8qIERpYWdBcnJheTQ3OSAqLyBkaWFnOjp3YXJuX29iamNfcHJvcGVydHlfcmV0YWluX29mX2Jsb2NrLCAtMSwKKyAgLyogRGlhZ0FycmF5NDgwICovIGRpYWc6Ondhcm5fb2JqY19wb2ludGVyX2N4eF9jYXRjaF9mcmFnaWxlLCAtMSwKKyAgLyogRGlhZ0FycmF5NDgxICovIGRpYWc6Ondhcm5fb2JqY19wcm9wZXJ0eV9hc3NpZ25fb25fb2JqZWN0LCAtMSwKKyAgLyogRGlhZ0FycmF5NDgyICovIGRpYWc6Ondhcm5faW1wbF9yZXF1aXJlZF9mb3JfY2xhc3NfcHJvcGVydHksIGRpYWc6Ondhcm5faW1wbF9yZXF1aXJlZF9pbl9jYXRlZ29yeV9mb3JfY2xhc3NfcHJvcGVydHksIGRpYWc6Ondhcm5fc2V0dGVyX2dldHRlcl9pbXBsX3JlcXVpcmVkLCBkaWFnOjp3YXJuX3NldHRlcl9nZXR0ZXJfaW1wbF9yZXF1aXJlZF9pbl9jYXRlZ29yeSwgLTEsCisgIC8qIERpYWdBcnJheTQ4MyAqLyBkaWFnOjp3YXJuX3Byb3BlcnR5X2ltcGxpY2l0bHlfbWlzbWF0Y2hlZCwgLTEsCisgIC8qIERpYWdBcnJheTQ4NCAqLyBkaWFnOjp3YXJuX2NvY29hX25hbWluZ19vd25lZF9ydWxlLCAtMSwKKyAgLyogRGlhZ0FycmF5NDg1ICovIGRpYWc6Ondhcm5fb2JqY19wcm9wZXJ0eV9kZWZhdWx0X2Fzc2lnbl9vbl9vYmplY3QsIGRpYWc6Ondhcm5fb2JqY19wcm9wZXJ0eV9ub19hc3NpZ25tZW50X2F0dHJpYnV0ZSwgLTEsCisgIC8qIERpYWdBcnJheTQ4NiAqLyBkaWFnOjp3YXJuX2F1dG9zeW50aGVzaXNfcHJvcGVydHlfaW5fc3VwZXJjbGFzcywgZGlhZzo6d2Fybl9ub19hdXRvc3ludGhlc2lzX3Byb3BlcnR5LCBkaWFnOjp3YXJuX25vX2F1dG9zeW50aGVzaXNfc2hhcmVkX2l2YXJfcHJvcGVydHksIC0xLAorICAvKiBEaWFnQXJyYXk0ODcgKi8gZGlhZzo6d2Fybl9jYXRlZ29yeV9tZXRob2RfaW1wbF9tYXRjaCwgLTEsCisgIC8qIERpYWdBcnJheTQ4OCAqLyBkaWFnOjp3YXJuX2F1dG9fc3ludGhlc2l6aW5nX3Byb3RvY29sX3Byb3BlcnR5LCAtMSwKKyAgLyogRGlhZ0FycmF5NDg5ICovIGRpYWc6Ondhcm5fb2JqY19yZWR1bmRhbnRfcXVhbGlmaWVkX2NsYXNzX3R5cGUsIC0xLAorICAvKiBEaWFnQXJyYXk0OTAgKi8gZGlhZzo6d2Fybl9vYmpjX3JlYWRvbmx5X3Byb3BlcnR5X2hhc19zZXR0ZXIsIC0xLAorICAvKiBEaWFnQXJyYXk0OTIgKi8gZGlhZzo6d2Fybl9vYmpjX3JlZHVuZGFudF9saXRlcmFsX3VzZSwgLTEsCisgIC8qIERpYWdBcnJheTQ5MyAqLyBkaWFnOjp3YXJuX29iamNfcm9vdF9jbGFzc19taXNzaW5nLCAtMSwKKyAgLyogRGlhZ0FycmF5NDk0ICovIGRpYWc6Ondhcm5fb2JqY19zdHJpbmdfbGl0ZXJhbF9jb21wYXJpc29uLCAtMSwKKyAgLyogRGlhZ0FycmF5NDk1ICovIGRpYWc6Ondhcm5fY29uY2F0ZW5hdGVkX25zYXJyYXlfbGl0ZXJhbCwgLTEsCisgIC8qIERpYWdBcnJheTQ5NiAqLyBkaWFnOjp3YXJuX29iamNfdW5zYWZlX3BlcmZvcm1fc2VsZWN0b3IsIC0xLAorICAvKiBEaWFnQXJyYXk0OTcgKi8gZGlhZzo6d2Fybl9vZHJfdGFnX3R5cGVfaW5jb25zaXN0ZW50LCAtMSwKKyAgLyogRGlhZ0FycmF5NDk4ICovIGRpYWc6Ondhcm5fb2xkX3N0eWxlX2Nhc3QsIC0xLAorICAvKiBEaWFnQXJyYXk1MDAgKi8gZGlhZzo6ZXh0X29wZW5jbF9leHRfdmVjdG9yX3R5cGVfcmdiYV9zZWxlY3RvciwgLTEsCisgIC8qIERpYWdBcnJheTUwMSAqLyBkaWFnOjp3YXJuX29tcF9hbGlnbm1lbnRfbm90X3Bvd2VyX29mX3R3bywgZGlhZzo6d2Fybl9vbXBfbGluZWFyX3N0ZXBfemVybywgLTEsCisgIC8qIERpYWdBcnJheTUwMiAqLyBkaWFnOjpleHRfb21wX2xvb3Bfbm90X2Nhbm9uaWNhbF9pbml0LCBkaWFnOjp3YXJuX29tcF9sb29wXzY0X2JpdF92YXIsIC0xLAorICAvKiBEaWFnQXJyYXk1MDMgKi8gZGlhZzo6d2Fybl9kcnZfb21wX29mZmxvYWRfdGFyZ2V0X2R1cGxpY2F0ZSwgZGlhZzo6d2Fybl9kcnZfb21wX29mZmxvYWRfdGFyZ2V0X21pc3NpbmdiY3J1bnRpbWUsIGRpYWc6Ondhcm5fb21wX25vbl90cml2aWFsX3R5cGVfbWFwcGVkLCBkaWFnOjp3YXJuX29tcF9ub3RfaW5fdGFyZ2V0X2NvbnRleHQsIC0xLAorICAvKiBEaWFnQXJyYXk1MDQgKi8gZGlhZzo6d2Fybl9kcnZfZmluZV9ncmFpbmVkX2JpdGZpZWxkX2FjY2Vzc2VzX2lnbm9yZWQsIGRpYWc6Ondhcm5fZHJ2X21vdXRsaW5lX3Vuc3VwcG9ydGVkX29wdCwgZGlhZzo6d2Fybl9kcnZfcHM0X2ZvcmNlX3BpYywgZGlhZzo6d2Fybl9kcnZfdW5zdXBwb3J0ZWRfbG9uZ2NhbGxzLCBkaWFnOjp3YXJuX2Rydl91bnN1cHBvcnRlZF9waWNfd2l0aF9tYWJpY2FsbHMsIGRpYWc6Ondhcm5fZHJ2X3ZlY3Rvcml6ZV9uZWVkc19odngsIC0xLAorICAvKiBEaWFnQXJyYXk1MDUgKi8gZGlhZzo6ZXh0X3R5cGVjaGVja19vcmRlcmVkX2NvbXBhcmlzb25fb2ZfZnVuY3Rpb25fcG9pbnRlcnMsIC0xLAorICAvKiBEaWFnQXJyYXk1MDYgKi8gZGlhZzo6ZXh0X291dF9vZl9saW5lX2RlY2xhcmF0aW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5NTA3ICovIGRpYWc6OmV4dF91c2Vfb3V0X29mX3Njb3BlX2RlY2xhcmF0aW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5NTA4ICovIGRpYWc6Ondhcm5fb3ZlcmFsaWduZWRfdHlwZSwgLTEsCisgIC8qIERpYWdBcnJheTUxMCAqLyBkaWFnOjpleHRfc3RyaW5nX3Rvb19sb25nLCAtMSwKKyAgLyogRGlhZ0FycmF5NTExICovIGRpYWc6Ondhcm5fb3ZlcmxvYWRlZF9zaGlmdF9pbl9jb21wYXJpc29uLCAtMSwKKyAgLyogRGlhZ0FycmF5NTEyICovIGRpYWc6Ondhcm5fb3ZlcmxvYWRlZF92aXJ0dWFsLCAtMSwKKyAgLyogRGlhZ0FycmF5NTE0ICovIGRpYWc6Ondhcm5fZmVfb3ZlcnJpZGVfbW9kdWxlLCAtMSwKKyAgLyogRGlhZ0FycmF5NTE1ICovIGRpYWc6Ondhcm5fY29uZmxpY3Rpbmdfb3ZlcnJpZGluZ19wYXJhbV9tb2RpZmllcnMsIGRpYWc6Ondhcm5fY29uZmxpY3Rpbmdfb3ZlcnJpZGluZ19wYXJhbV90eXBlcywgZGlhZzo6d2Fybl9jb25mbGljdGluZ19vdmVycmlkaW5nX3JldF90eXBlX21vZGlmaWVycywgZGlhZzo6d2Fybl9jb25mbGljdGluZ19vdmVycmlkaW5nX3JldF90eXBlcywgZGlhZzo6d2Fybl9jb25mbGljdGluZ19vdmVycmlkaW5nX3ZhcmlhZGljLCBkaWFnOjp3YXJuX25vbl9jb250cmF2YXJpYW50X292ZXJyaWRpbmdfcGFyYW1fdHlwZXMsIGRpYWc6Ondhcm5fbm9uX2NvdmFyaWFudF9vdmVycmlkaW5nX3JldF90eXBlcywgLTEsCisgIC8qIERpYWdBcnJheTUxNiAqLyBkaWFnOjp3YXJuX2Rydl9vdmVycmlkaW5nX2ZsYWdfb3B0aW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5NTE3ICovIGRpYWc6Ondhcm5fdW5uZWNlc3NhcnlfcGFja2VkLCAtMSwKKyAgLyogRGlhZ0FycmF5NTE4ICovIGRpYWc6Ondhcm5fcGFkZGVkX3N0cnVjdF9hbm9uX2ZpZWxkLCBkaWFnOjp3YXJuX3BhZGRlZF9zdHJ1Y3RfZmllbGQsIGRpYWc6Ondhcm5fcGFkZGVkX3N0cnVjdF9zaXplLCAtMSwKKyAgLyogRGlhZ0FycmF5NTE5ICovIGRpYWc6Ondhcm5fY29uZGl0aW9uX2lzX2Fzc2lnbm1lbnQsIGRpYWc6Ondhcm5fcHJlY2VkZW5jZV9iaXR3aXNlX3JlbCwgZGlhZzo6d2Fybl9wcmVjZWRlbmNlX2NvbmRpdGlvbmFsLCAtMSwKKyAgLyogRGlhZ0FycmF5NTIwICovIGRpYWc6Ondhcm5fZXF1YWxpdHlfd2l0aF9leHRyYV9wYXJlbnMsIC0xLAorICAvKiBEaWFnQXJyYXk1MjIgKi8gZGlhZzo6cmVtYXJrX2ZlX2JhY2tlbmRfb3B0aW1pemF0aW9uX3JlbWFyaywgLTEsCisgIC8qIERpYWdBcnJheTUyMyAqLyBkaWFnOjpyZW1hcmtfZmVfYmFja2VuZF9vcHRpbWl6YXRpb25fcmVtYXJrX2FuYWx5c2lzLCBkaWFnOjpyZW1hcmtfZmVfYmFja2VuZF9vcHRpbWl6YXRpb25fcmVtYXJrX2FuYWx5c2lzX2FsaWFzaW5nLCBkaWFnOjpyZW1hcmtfZmVfYmFja2VuZF9vcHRpbWl6YXRpb25fcmVtYXJrX2FuYWx5c2lzX2ZwY29tbXV0ZSwgLTEsCisgIC8qIERpYWdBcnJheTUyNCAqLyBkaWFnOjp3YXJuX2ZlX2JhY2tlbmRfb3B0aW1pemF0aW9uX2ZhaWx1cmUsIC0xLAorICAvKiBEaWFnQXJyYXk1MjUgKi8gZGlhZzo6cmVtYXJrX2ZlX2JhY2tlbmRfb3B0aW1pemF0aW9uX3JlbWFya19taXNzZWQsIC0xLAorICAvKiBEaWFnQXJyYXk1MjYgKi8gZGlhZzo6d2Fybl9tb2R1bGVfdXNlc19kYXRlX3RpbWUsIC0xLAorICAvKiBEaWFnQXJyYXk1MjcgKi8gZGlhZzo6ZXh0X2FnZ3JlZ2F0ZV9pbml0X25vdF9jb25zdGFudCwgZGlhZzo6ZXh0X2Fub255bW91c19yZWNvcmRfd2l0aF90eXBlLCBkaWFnOjpleHRfYW5vbnltb3VzX3N0cnVjdF91bmlvbl9xdWFsaWZpZWQsIGRpYWc6OmV4dF9hcnJheV9zaXplX2NvbnZlcnNpb24sIGRpYWc6OmV4dF9hdXRvX25ld19saXN0X2luaXQsIGRpYWc6OmV4dF9jOTlfYXJyYXlfdXNhZ2UsIGRpYWc6OmV4dF9jOTlfY29tcG91bmRfbGl0ZXJhbCwgZGlhZzo6ZXh0X2M5OV9mbGV4aWJsZV9hcnJheV9tZW1iZXIsIGRpYWc6OmV4dF9jOTlfdmFyaWFibGVfZGVjbF9pbl9mb3JfbG9vcCwgZGlhZzo6ZXh0X2Nhc3RfZm5fb2JqLCBkaWFnOjpleHRfY2xhbmdfZGlhZ25vc2VfaWYsIGRpYWc6OmV4dF9jbGFuZ19lbmFibGVfaWYsIGRpYWc6OmV4dF9jeHgxMV9lbnVtX2ZpeGVkX3VuZGVybHlpbmdfdHlwZSwgZGlhZzo6ZXh0X2N4eDE0X2F0dHIsIGRpYWc6OmV4dF9jeHgxN19hdHRyLCBkaWFnOjpleHRfZGVzaWduYXRlZF9pbml0LCBkaWFnOjpleHRfZHVwbGljYXRlX2RlY2xzcGVjLCBkaWFnOjpleHRfZWxsaXBzaXNfZXhjZXB0aW9uX3NwZWMsIGRpYWc6OmV4dF9lbXB0eV9mbm1hY3JvX2FyZywgZGlhZzo6ZXh0X2VudW1fdmFsdWVfbm90X2ludCwgZGlhZzo6ZXh0X2VudW1lcmF0b3JfbGlzdF9jb21tYV9jLCBkaWFnOjpleHRfZW51bWVyYXRvcl9saXN0X2NvbW1hX2N4eCwgZGlhZzo6ZXh0X2V4cGxpY2l0X2luc3RhbnRpYXRpb25fd2l0aG91dF9xdWFsaWZpZWRfaWQsIGRpYWc6OmV4dF9leHRlcm5fdGVtcGxhdGUsIGRpYWc6OmV4dF9leHRyYV9zZW1pLCBkaWFnOjpleHRfZm9yd2FyZF9yZWZfZW51bSwgZGlhZzo6ZXh0X2ZyZWVzdGFuZGluZ19jb21wbGV4LCBkaWFnOjpleHRfZ251X2FycmF5X3JhbmdlLCBkaWFnOjpleHRfZ251X3B0cl9mdW5jX2FyaXRoLCBkaWFnOjpleHRfZ251X3N1YnNjcmlwdF92b2lkX3R5cGUsIGRpYWc6OmV4dF9nbnVfdm9pZF9wdHIsIGRpYWc6OmV4dF9oZXhfY29uc3RhbnRfaW52YWxpZCwgZGlhZzo6ZXh0X2hleF9saXRlcmFsX2ludmFsaWQsIGRpYWc6OmV4dF9pZGVudF9saXN0X2luX3BhcmFtLCBkaWFnOjpleHRfaW50ZWdlcl9jb21wbGVtZW50X2NvbXBsZXgsIGRpYWc6OmV4dF9pbnRlZ2VyX2luY3JlbWVudF9jb21wbGV4LCBkaWFnOjpleHRfaW50ZXJuYWxfaW5fZXh0ZXJuX2lubGluZV9xdWlldCwgZGlhZzo6ZXh0X2ludmFsaWRfc2lnbl9zcGVjLCBkaWFnOjpleHRfbGluZV9jb21tZW50LCBkaWFnOjpleHRfbWFpbl91c2VkLCBkaWFnOjpleHRfbXVsdGlfbGluZV9saW5lX2NvbW1lbnQsIGRpYWc6OmV4dF9uYW1lZF92YXJpYWRpY19tYWNybywgZGlhZzo6ZXh0X25vX25ld2xpbmVfZW9mLCBkaWFnOjpleHRfbm9uc3RhbmRhcmRfZXNjYXBlLCBkaWFnOjpleHRfbnNfZW51bV9hdHRyaWJ1dGUsIGRpYWc6OmV4dF9wYXJhbV9ub3RfZGVjbGFyZWQsIGRpYWc6OmV4dF9wb2ludGVyX3RvX2NvbnN0X3JlZl9tZW1iZXJfb25fcnZhbHVlLCBkaWFnOjpleHRfcHBfYmFkX3ZhYXJnc191c2UsIGRpYWc6OmV4dF9wcF9jb21tYV9leHByLCBkaWFnOjpleHRfcHBfaWRlbnRfZGlyZWN0aXZlLCBkaWFnOjpleHRfcHBfbGluZV90b29fYmlnLCBkaWFnOjpleHRfcHBfd2FybmluZ19kaXJlY3RpdmUsIGRpYWc6OmV4dF9yZXR1cm5faGFzX3ZvaWRfZXhwciwgZGlhZzo6ZXh0X3J2YWx1ZV90b19yZWZlcmVuY2VfYWNjZXNzX2N0b3IsIGRpYWc6OmV4dF9ydmFsdWVfdG9fcmVmZXJlbmNlX3RlbXBfY29weV9ub192aWFibGUsIGRpYWc6OmV4dF9zaXplb2ZfYWxpZ25vZl9mdW5jdGlvbl90eXBlLCBkaWFnOjpleHRfc2l6ZW9mX2FsaWdub2Zfdm9pZF90eXBlLCBkaWFnOjpleHRfc3Vic2NyaXB0X25vbl9sdmFsdWUsIGRpYWc6OmV4dF90aHJlYWRfYmVmb3JlLCBkaWFnOjpleHRfdHlwZWNoZWNrX2FkZHJvZl92b2lkLCBkaWFnOjpleHRfdHlwZWNoZWNrX2Nhc3Rfbm9uc2NhbGFyLCBkaWFnOjpleHRfdHlwZWNoZWNrX2NvbXBhcmlzb25fb2ZfZnB0cl90b192b2lkLCBkaWFnOjpleHRfdHlwZWNoZWNrX2NvbmRfb25lX3ZvaWQsIGRpYWc6OmV4dF90eXBlY2hlY2tfY29udmVydF9wb2ludGVyX3ZvaWRfZnVuYywgZGlhZzo6ZXh0X3R5cGVjaGVja19vcmRlcmVkX2NvbXBhcmlzb25fb2ZfcG9pbnRlcl9hbmRfemVybywgZGlhZzo6ZXh0X3ZhcmlhZGljX21hY3JvLCBkaWFnOjp3YXJuX2RlZmluZWRfaW5fZnVuY3Rpb25fdHlwZV9tYWNybywgZGlhZzo6d2Fybl9mb3JtYXRfY29udmVyc2lvbl9hcmd1bWVudF90eXBlX21pc21hdGNoX3BlZGFudGljLCBkaWFnOjp3YXJuX2lsbGVnYWxfY29uc3RhbnRfYXJyYXlfc2l6ZSwgZGlhZzo6d2Fybl9rZXJuX2lzX21ldGhvZCwgLTEsCisgIC8qIERpYWdBcnJheTUyOCAqLyBkaWFnOjp3YXJuX3ByYWdtYV9leHRlbnNpb25faXNfY29yZSwgLTEsCisgIC8qIERpYWdBcnJheTUyOSAqLyBkaWFnOjp3YXJuX3Blc3NpbWl6aW5nX21vdmVfb25faW5pdGlhbGl6YXRpb24sIGRpYWc6Ondhcm5fcGVzc2ltaXppbmdfbW92ZV9vbl9yZXR1cm4sIC0xLAorICAvKiBEaWFnQXJyYXk1MzAgKi8gZGlhZzo6ZXh0X2dudV9wdHJfZnVuY19hcml0aCwgZGlhZzo6ZXh0X2dudV9zdWJzY3JpcHRfdm9pZF90eXBlLCBkaWFnOjpleHRfZ251X3ZvaWRfcHRyLCBkaWFnOjpleHRfc2l6ZW9mX2FsaWdub2ZfZnVuY3Rpb25fdHlwZSwgZGlhZzo6ZXh0X3NpemVvZl9hbGlnbm9mX3ZvaWRfdHlwZSwgZGlhZzo6d2Fybl9zdWJfcHRyX3plcm9fc2l6ZV90eXBlcywgLTEsCisgIC8qIERpYWdBcnJheTUzMSAqLyBkaWFnOjp3YXJuX2Nhc3Rfbm9ubnVsbF90b19ib29sLCBkaWFnOjp3YXJuX2ltcGNhc3RfcG9pbnRlcl90b19ib29sLCAtMSwKKyAgLyogRGlhZ0FycmF5NTMyICovIGRpYWc6OmV4dF90eXBlY2hlY2tfY29tcGFyaXNvbl9vZl9wb2ludGVyX2ludGVnZXIsIC0xLAorICAvKiBEaWFnQXJyYXk1MzMgKi8gZGlhZzo6ZXh0X3R5cGVjaGVja19jb252ZXJ0X2luY29tcGF0aWJsZV9wb2ludGVyX3NpZ24sIC0xLAorICAvKiBEaWFnQXJyYXk1MzUgKi8gZGlhZzo6ZXh0X3R5cGVjaGVja19jb25kX2luY29tcGF0aWJsZV9wb2ludGVycywgLTEsCisgIC8qIERpYWdBcnJheTUzNiAqLyBkaWFnOjp3YXJuX3NpZGVfZWZmZWN0c190eXBlaWQsIC0xLAorICAvKiBEaWFnQXJyYXk1MzcgKi8gZGlhZzo6d2Fybl9wcmFnbWFfYXR0cmlidXRlX3VudXNlZCwgLTEsCisgIC8qIERpYWdBcnJheTUzOCAqLyBkaWFnOjpwcF9wcmFnbWFfb25jZV9pbl9tYWluX2ZpbGUsIC0xLAorICAvKiBEaWFnQXJyYXk1MzkgKi8gZGlhZzo6d2Fybl9wcmFnbWFfcGFja19tb2RpZmllZF9hZnRlcl9pbmNsdWRlLCBkaWFnOjp3YXJuX3ByYWdtYV9wYWNrX25vX3BvcF9lb2YsIC0xLAorICAvKiBEaWFnQXJyYXk1NDAgKi8gZGlhZzo6d2Fybl9wcmFnbWFfcGFja19ub25fZGVmYXVsdF9hdF9pbmNsdWRlLCAtMSwKKyAgLyogRGlhZ0FycmF5NTQxICovIGRpYWc6OnBwX3ByYWdtYV9zeXNoZWFkZXJfaW5fbWFpbl9maWxlLCAtMSwKKyAgLyogRGlhZ0FycmF5NTQyICovIGRpYWc6Ondhcm5fcmVkZWZpbmVfZXh0bmFtZV9ub3RfYXBwbGllZCwgLTEsCisgIC8qIERpYWdBcnJheTU0MyAqLyBkaWFnOjpleHRfcHJlZGVmX291dHNpZGVfZnVuY3Rpb24sIC0xLAorICAvKiBEaWFnQXJyYXk1NDQgKi8gZGlhZzo6d2Fybl9wcml2YXRlX2V4dGVybiwgLTEsCisgIC8qIERpYWdBcnJheTU0NSAqLyBkaWFnOjp3YXJuX3VzZV9vZl9wcml2YXRlX2hlYWRlcl9vdXRzaWRlX21vZHVsZSwgLTEsCisgIC8qIERpYWdBcnJheTU0NiAqLyBkaWFnOjp3YXJuX21tYXBfbWlzbWF0Y2hlZF9wcml2YXRlX21vZHVsZV9uYW1lLCBkaWFnOjp3YXJuX21tYXBfbWlzbWF0Y2hlZF9wcml2YXRlX3N1Ym1vZHVsZSwgZGlhZzo6d2Fybl9tbWFwX3JlZHVuZGFudF9leHBvcnRfYXMsIGRpYWc6Ondhcm5fbm9fcHJpdl9zdWJtb2R1bGVfdXNlX3RvcGxldmVsLCAtMSwKKyAgLyogRGlhZ0FycmF5NTQ3ICovIGRpYWc6Ondhcm5fcHJvZmlsZV9kYXRhX21pc3NpbmcsIC0xLAorICAvKiBEaWFnQXJyYXk1NDggKi8gZGlhZzo6d2Fybl9wcm9maWxlX2RhdGFfb3V0X29mX2RhdGUsIC0xLAorICAvKiBEaWFnQXJyYXk1NDkgKi8gZGlhZzo6d2Fybl9wcm9maWxlX2RhdGFfdW5wcm9maWxlZCwgLTEsCisgIC8qIERpYWdBcnJheTU1MCAqLyBkaWFnOjp3YXJuX3Byb3BlcnR5X2FjY2Vzc19zdWdnZXN0LCAtMSwKKyAgLyogRGlhZ0FycmF5NTUxICovIGRpYWc6Ondhcm5fcHJvcGVydHlfYXR0cl9taXNtYXRjaCwgZGlhZzo6d2Fybl9wcm9wZXJ0eV9hdHRyaWJ1dGUsIGRpYWc6Ondhcm5fcHJvcGVydHlfcmVkZWNsX2dldHRlcl9taXNtYXRjaCwgZGlhZzo6d2Fybl9yZWFkb25seV9wcm9wZXJ0eSwgLTEsCisgIC8qIERpYWdBcnJheTU1MiAqLyBkaWFnOjp3YXJuX3VuaW1wbGVtZW50ZWRfcHJvdG9jb2xfbWV0aG9kLCAtMSwKKyAgLyogRGlhZ0FycmF5NTUzICovIGRpYWc6Ondhcm5fcHJvdG9jb2xfcHJvcGVydHlfbWlzbWF0Y2gsIC0xLAorICAvKiBEaWFnQXJyYXk1NTQgKi8gZGlhZzo6ZXJyX2Z1bmNfcmV0dXJuaW5nX3F1YWxpZmllZF92b2lkLCAtMSwKKyAgLyogRGlhZ0FycmF5NTU1ICovIGRpYWc6Ondhcm5fcXVvdGVkX2luY2x1ZGVfaW5fZnJhbWV3b3JrX2hlYWRlciwgLTEsCisgIC8qIERpYWdBcnJheTU1NiAqLyBkaWFnOjp3YXJuX2Zvcl9yYW5nZV9jb25zdF9yZWZlcmVuY2VfY29weSwgZGlhZzo6d2Fybl9mb3JfcmFuZ2VfY29weSwgZGlhZzo6d2Fybl9mb3JfcmFuZ2VfdmFyaWFibGVfYWx3YXlzX2NvcHksIC0xLAorICAvKiBEaWFnQXJyYXk1NTcgKi8gZGlhZzo6d2Fybl9hdXRvX3JlYWRvbmx5X2lib3V0bGV0X3Byb3BlcnR5LCAtMSwKKyAgLyogRGlhZ0FycmF5NTU4ICovIGRpYWc6Ondhcm5fYmFkX3JlY2VpdmVyX3R5cGUsIC0xLAorICAvKiBEaWFnQXJyYXk1NTkgKi8gZGlhZzo6d2Fybl9yZWNlaXZlcl9mb3J3YXJkX2NsYXNzLCBkaWFnOjp3YXJuX3JlY2VpdmVyX2ZvcndhcmRfaW5zdGFuY2UsIC0xLAorICAvKiBEaWFnQXJyYXk1NjAgKi8gZGlhZzo6ZXh0X21lbWJlcl9yZWRlY2xhcmVkLCAtMSwKKyAgLyogRGlhZ0FycmF5NTYyICovIGRpYWc6Ondhcm5fcmVkdW5kYW50X21vdmVfb25fcmV0dXJuLCAtMSwKKyAgLyogRGlhZ0FycmF5NTYzICovIGRpYWc6Ondhcm5fcmVkdW5kYW50X3BhcmVuc19hcm91bmRfZGVjbGFyYXRvciwgLTEsCisgIC8qIERpYWdBcnJheTU2NCAqLyBkaWFnOjpleHRfcmVnaXN0ZXJfc3RvcmFnZV9jbGFzcywgLTEsCisgIC8qIERpYWdBcnJheTU2NSAqLyBkaWFnOjp3YXJuX3JlaW50ZXJwcmV0X2RpZmZlcmVudF9mcm9tX3N0YXRpYywgLTEsCisgIC8qIERpYWdBcnJheTU2NiAqLyBkaWFnOjpyZW1hcmtfZmVfYmFja2VuZF9wbHVnaW4sIC0xLAorICAvKiBEaWFnQXJyYXk1NjcgKi8gZGlhZzo6d2Fybl9pbml0aWFsaXplcl9vdXRfb2Zfb3JkZXIsIC0xLAorICAvKiBEaWFnQXJyYXk1NjggKi8gZGlhZzo6d2Fybl9vYmpjX3JlcXVpcmVzX3N1cGVyX3Byb3RvY29sLCAtMSwKKyAgLyogRGlhZ0FycmF5NTY5ICovIGRpYWc6Ondhcm5fcHBfbWFjcm9faXNfcmVzZXJ2ZWRfaWQsIC0xLAorICAvKiBEaWFnQXJyYXk1NzAgKi8gZGlhZzo6ZXh0X21zX3Jlc2VydmVkX3VzZXJfZGVmaW5lZF9saXRlcmFsLCBkaWFnOjpleHRfcmVzZXJ2ZWRfdXNlcl9kZWZpbmVkX2xpdGVyYWwsIC0xLAorICAvKiBEaWFnQXJyYXk1NzEgKi8gZGlhZzo6ZXh0X3JldGFpbmVkX2xhbmd1YWdlX2xpbmthZ2UsIC0xLAorICAvKiBEaWFnQXJyYXk1NzIgKi8gZGlhZzo6d2Fybl9yZXRfYWRkcl9sYWJlbCwgZGlhZzo6d2Fybl9yZXRfbG9jYWxfdGVtcF9hZGRyX3JlZiwgZGlhZzo6d2Fybl9yZXRfc3RhY2tfYWRkcl9yZWYsIC0xLAorICAvKiBEaWFnQXJyYXk1NzMgKi8gZGlhZzo6d2Fybl9yZXR1cm5fc3RkX21vdmUsIC0xLAorICAvKiBEaWFnQXJyYXk1NzQgKi8gZGlhZzo6d2Fybl9yZXR1cm5fc3RkX21vdmVfaW5fY3h4MTEsIC0xLAorICAvKiBEaWFnQXJyYXk1NzUgKi8gZGlhZzo6ZXh0X3JldHVybl9oYXNfZXhwciwgZGlhZzo6ZXh0X3JldHVybl9taXNzaW5nX2V4cHIsIGRpYWc6Ondhcm5fZmFsbG9mZl9ub252b2lkX2Nvcm91dGluZSwgZGlhZzo6d2Fybl9mYWxsb2ZmX25vbnZvaWRfZnVuY3Rpb24sIGRpYWc6Ondhcm5fZmFsbG9mZl9ub252b2lkX2xhbWJkYSwgZGlhZzo6d2Fybl9tYXliZV9mYWxsb2ZmX25vbnZvaWRfY29yb3V0aW5lLCBkaWFnOjp3YXJuX21heWJlX2ZhbGxvZmZfbm9udm9pZF9mdW5jdGlvbiwgZGlhZzo6d2Fybl9tYXliZV9mYWxsb2ZmX25vbnZvaWRfbGFtYmRhLCBkaWFnOjp3YXJuX3JldHVybl9taXNzaW5nX2V4cHIsIC0xLAorICAvKiBEaWFnQXJyYXk1NzYgKi8gZGlhZzo6d2Fybl9yZXR1cm5fdmFsdWVfdWR0LCBkaWFnOjp3YXJuX3JldHVybl92YWx1ZV91ZHRfaW5jb21wbGV0ZSwgLTEsCisgIC8qIERpYWdBcnJheTU3NyAqLyBkaWFnOjpyZW1hcmtfc2FuaXRpemVfYWRkcmVzc19pbnNlcnRfZXh0cmFfcGFkZGluZ19hY2NlcHRlZCwgZGlhZzo6cmVtYXJrX3Nhbml0aXplX2FkZHJlc3NfaW5zZXJ0X2V4dHJhX3BhZGRpbmdfcmVqZWN0ZWQsIC0xLAorICAvKiBEaWFnQXJyYXk1NzggKi8gZGlhZzo6d2Fybl9hdHRyaWJ1dGVfc2VjdGlvbl9vbl9yZWRlY2xhcmF0aW9uLCBkaWFnOjp3YXJuX2R1cGxpY2F0ZV9jb2Rlc2VnX2F0dHJpYnV0ZSwgZGlhZzo6d2Fybl9taXNtYXRjaGVkX3NlY3Rpb24sIC0xLAorICAvKiBEaWFnQXJyYXk1NzkgKi8gZGlhZzo6d2Fybl91bmltcGxlbWVudGVkX3NlbGVjdG9yLCAtMSwKKyAgLyogRGlhZ0FycmF5NTgwICovIGRpYWc6Ondhcm5fbXVsdGlwbGVfc2VsZWN0b3JzLCAtMSwKKyAgLyogRGlhZ0FycmF5NTgxICovIGRpYWc6Ondhcm5fc2VsZl9hc3NpZ25tZW50X2J1aWx0aW4sIC0xLAorICAvKiBEaWFnQXJyYXk1ODIgKi8gZGlhZzo6d2Fybl9pZGVudGl0eV9maWVsZF9hc3NpZ24sIC0xLAorICAvKiBEaWFnQXJyYXk1ODMgKi8gZGlhZzo6d2Fybl9zZWxmX2Fzc2lnbm1lbnRfb3ZlcmxvYWRlZCwgLTEsCisgIC8qIERpYWdBcnJheTU4NCAqLyBkaWFnOjp3YXJuX3NlbGZfbW92ZSwgLTEsCisgIC8qIERpYWdBcnJheTU4NSAqLyBkaWFnOjp3YXJuX3NlbWljb2xvbl9iZWZvcmVfbWV0aG9kX2JvZHksIC0xLAorICAvKiBEaWFnQXJyYXk1ODYgKi8gZGlhZzo6d2Fybl9taXNzaW5nX3NlbnRpbmVsLCBkaWFnOjp3YXJuX25vdF9lbm91Z2hfYXJndW1lbnQsIC0xLAorICAvKiBEaWFnQXJyYXk1ODggKi8gZGlhZzo6d2Fybl9mZV9zZXJpYWxpemVkX2RpYWdfZmFpbHVyZSwgZGlhZzo6d2Fybl9mZV9zZXJpYWxpemVkX2RpYWdfbWVyZ2VfZmFpbHVyZSwgLTEsCisgIC8qIERpYWdBcnJheTU4OSAqLyBkaWFnOjp3YXJuX2RlY2xfc2hhZG93LCAtMSwKKyAgLyogRGlhZ0FycmF5NTkxICovIGRpYWc6Ondhcm5fc2hhZG93X2ZpZWxkLCAtMSwKKyAgLyogRGlhZ0FycmF5NTkyICovIGRpYWc6Ondhcm5fY3Rvcl9wYXJtX3NoYWRvd3NfZmllbGQsIC0xLAorICAvKiBEaWFnQXJyYXk1OTMgKi8gZGlhZzo6d2Fybl9tb2RpZnlpbmdfc2hhZG93aW5nX2RlY2wsIC0xLAorICAvKiBEaWFnQXJyYXk1OTQgKi8gZGlhZzo6d2Fybl9pdmFyX3VzZV9oaWRkZW4sIC0xLAorICAvKiBEaWFnQXJyYXk1OTUgKi8gZGlhZzo6d2Fybl9kZWNsX3NoYWRvd191bmNhcHR1cmVkX2xvY2FsLCAtMSwKKyAgLyogRGlhZ0FycmF5NTk2ICovIGRpYWc6Ondhcm5fc2hpZnRfbmVnYXRpdmUsIC0xLAorICAvKiBEaWFnQXJyYXk1OTcgKi8gZGlhZzo6d2Fybl9zaGlmdF9ndF90eXBld2lkdGgsIC0xLAorICAvKiBEaWFnQXJyYXk1OTggKi8gZGlhZzo6d2Fybl9zaGlmdF9saHNfbmVnYXRpdmUsIC0xLAorICAvKiBEaWFnQXJyYXk1OTkgKi8gZGlhZzo6d2Fybl9hZGRpdGlvbl9pbl9iaXRzaGlmdCwgLTEsCisgIC8qIERpYWdBcnJheTYwMCAqLyBkaWFnOjp3YXJuX3NoaWZ0X3Jlc3VsdF9ndF90eXBld2lkdGgsIC0xLAorICAvKiBEaWFnQXJyYXk2MDEgKi8gZGlhZzo6d2Fybl9zaGlmdF9yZXN1bHRfc2V0c19zaWduX2JpdCwgLTEsCisgIC8qIERpYWdBcnJheTYwMiAqLyBkaWFnOjp3YXJuX2ltcGNhc3RfaW50ZWdlcl82NF8zMiwgLTEsCisgIC8qIERpYWdBcnJheTYwMyAqLyBkaWFnOjp3YXJuX21peGVkX3NpZ25fY29tcGFyaXNvbiwgLTEsCisgIC8qIERpYWdBcnJheTYwNCAqLyBkaWFnOjp3YXJuX2ltcGNhc3RfaW50ZWdlcl9zaWduLCBkaWFnOjp3YXJuX2ltcGNhc3RfaW50ZWdlcl9zaWduX2NvbmRpdGlvbmFsLCBkaWFnOjp3YXJuX2ltcGNhc3Rfbm9ubmVnYXRpdmVfcmVzdWx0LCAtMSwKKyAgLyogRGlhZ0FycmF5NjA2ICovIGRpYWc6Ondhcm5fbm9fdW5kZXJseWluZ190eXBlX3NwZWNpZmllZF9mb3JfZW51bV9iaXRmaWVsZCwgLTEsCisgIC8qIERpYWdBcnJheTYwNyAqLyBkaWFnOjp3YXJuX3NpemVvZl9hcnJheV9wYXJhbSwgLTEsCisgIC8qIERpYWdBcnJheTYwOCAqLyBkaWFnOjp3YXJuX3NpemVvZl9hcnJheV9kZWNheSwgLTEsCisgIC8qIERpYWdBcnJheTYwOSAqLyBkaWFnOjp3YXJuX2RpdmlzaW9uX3NpemVvZl9wdHIsIC0xLAorICAvKiBEaWFnQXJyYXk2MTAgKi8gZGlhZzo6d2Fybl9zaXplb2ZfcG9pbnRlcl9leHByX21lbWFjY2VzcywgZGlhZzo6d2Fybl9zaXplb2ZfcG9pbnRlcl90eXBlX21lbWFjY2VzcywgLTEsCisgIC8qIERpYWdBcnJheTYxMSAqLyBkaWFnOjp3YXJuX3NsYXNoX3VfZmlsZW5hbWUsIC0xLAorICAvKiBEaWFnQXJyYXk2MTIgKi8gZGlhZzo6d2Fybl9zb21ldGltZXNfdW5pbml0X3ZhciwgLTEsCisgIC8qIERpYWdBcnJheTYxMyAqLyBkaWFnOjp3YXJuX29tcF9uZXN0aW5nX3NpbWQsIGRpYWc6Ondhcm5fcHJhZ21hX29tcF9pZ25vcmVkLCAtMSwKKyAgLyogRGlhZ0FycmF5NjE0ICovIGRpYWc6Ondhcm5fc2FtcGxlcl9pbml0aWFsaXplcl9pbnZhbGlkX2JpdHMsIC0xLAorICAvKiBEaWFnQXJyYXk2MTYgKi8gZGlhZzo6ZXh0X2luX2NsYXNzX2luaXRpYWxpemVyX2Zsb2F0X3R5cGVfY3h4MTEsIC0xLAorICAvKiBEaWFnQXJyYXk2MTcgKi8gZGlhZzo6ZXh0X2ludGVybmFsX2luX2V4dGVybl9pbmxpbmUsIGRpYWc6OmV4dF9pbnRlcm5hbF9pbl9leHRlcm5faW5saW5lX3F1aWV0LCAtMSwKKyAgLyogRGlhZ0FycmF5NjE4ICovIGRpYWc6Ondhcm5fc3RhdGljX2lubGluZV9leHBsaWNpdF9pbnN0X2lnbm9yZWQsIC0xLAorICAvKiBEaWFnQXJyYXk2MTkgKi8gZGlhZzo6d2Fybl9zdGF0aWNfbG9jYWxfaW5fZXh0ZXJuX2lubGluZSwgLTEsCisgIC8qIERpYWdBcnJheTYyMCAqLyBkaWFnOjp3YXJuX3N0YXRpY19zZWxmX3JlZmVyZW5jZV9pbl9pbml0LCAtMSwKKyAgLyogRGlhZ0FycmF5NjIxICovIGRpYWc6Ondhcm5fc3RkbGliY3h4X25vdF9mb3VuZCwgLTEsCisgIC8qIERpYWdBcnJheTYzMyAqLyBkaWFnOjp3YXJuX3N0cmljdF9wcm90b3R5cGVzLCAtMSwKKyAgLyogRGlhZ0FycmF5NjM0ICovIGRpYWc6Ondhcm5fc3RyaWN0X211bHRpcGxlX21ldGhvZF9kZWNsLCAtMSwKKyAgLyogRGlhZ0FycmF5NjM1ICovIGRpYWc6Ondhcm5fc3RyaW5nY29tcGFyZSwgLTEsCisgIC8qIERpYWdBcnJheTYzNiAqLyBkaWFnOjp3YXJuX2ltcGNhc3Rfc3RyaW5nX2xpdGVyYWxfdG9fYm9vbCwgLTEsCisgIC8qIERpYWdBcnJheTYzNyAqLyBkaWFnOjp3YXJuX3N0cmluZ19wbHVzX2NoYXIsIC0xLAorICAvKiBEaWFnQXJyYXk2MzggKi8gZGlhZzo6d2Fybl9zdHJpbmdfcGx1c19pbnQsIC0xLAorICAvKiBEaWFnQXJyYXk2MzkgKi8gZGlhZzo6d2Fybl9zdHJsY3B5Y2F0X3dyb25nX3NpemUsIC0xLAorICAvKiBEaWFnQXJyYXk2NDAgKi8gZGlhZzo6d2Fybl9zdHJuY2F0X2xhcmdlX3NpemUsIGRpYWc6Ondhcm5fc3RybmNhdF9zcmNfc2l6ZSwgZGlhZzo6d2Fybl9zdHJuY2F0X3dyb25nX3NpemUsIC0xLAorICAvKiBEaWFnQXJyYXk2NDEgKi8gZGlhZzo6ZXh0X3R5cGVjaGVja19iYXNlX3N1cGVyLCAtMSwKKyAgLyogRGlhZ0FycmF5NjQyICovIGRpYWc6Ondhcm5fc3VzcGljaW91c19iemVyb19zaXplLCAtMSwKKyAgLyogRGlhZ0FycmF5NjQ0ICovIGRpYWc6Ondhcm5fY2FzZV92YWx1ZV9vdmVyZmxvdywgZGlhZzo6d2Fybl9taXNzaW5nX2Nhc2UsIGRpYWc6Ondhcm5fbm90X2luX2VudW0sIC0xLAorICAvKiBEaWFnQXJyYXk2NDUgKi8gZGlhZzo6d2Fybl9ib29sX3N3aXRjaF9jb25kaXRpb24sIC0xLAorICAvKiBEaWFnQXJyYXk2NDcgKi8gZGlhZzo6d2Fybl9kZWZfbWlzc2luZ19jYXNlLCAtMSwKKyAgLyogRGlhZ0FycmF5NjQ4ICovIGRpYWc6Ondhcm5fc3luY19mZXRjaF9hbmRfbmFuZF9zZW1hbnRpY3NfY2hhbmdlLCAtMSwKKyAgLyogRGlhZ0FycmF5NjUwICovIGRpYWc6Ondhcm5fY29tcGFyaXNvbl9hbHdheXMsIGRpYWc6Ondhcm5fY29tcGFyaXNvbl9iaXR3aXNlX2Fsd2F5cywgLTEsCisgIC8qIERpYWdBcnJheTY1MSAqLyBkaWFnOjp3YXJuX3RhdXRvbG9naWNhbF9ib29sX2NvbXBhcmUsIC0xLAorICAvKiBEaWFnQXJyYXk2NTMgKi8gZGlhZzo6d2Fybl9vdXRfb2ZfcmFuZ2VfY29tcGFyZSwgLTEsCisgIC8qIERpYWdBcnJheTY1NCAqLyBkaWFnOjp3YXJuX3RhdXRvbG9naWNhbF9vdmVybGFwX2NvbXBhcmlzb24sIC0xLAorICAvKiBEaWFnQXJyYXk2NTUgKi8gZGlhZzo6d2Fybl9ub25udWxsX2V4cHJfY29tcGFyZSwgZGlhZzo6d2Fybl9udWxsX3BvaW50ZXJfY29tcGFyZSwgLTEsCisgIC8qIERpYWdBcnJheTY1NiAqLyBkaWFnOjp3YXJuX3RhdXRvbG9naWNhbF9jb25zdGFudF9jb21wYXJlLCAtMSwKKyAgLyogRGlhZ0FycmF5NjU3ICovIGRpYWc6Ondhcm5fYWRkcmVzc19vZl9yZWZlcmVuY2VfbnVsbF9jb21wYXJlLCBkaWFnOjp3YXJuX3RoaXNfbnVsbF9jb21wYXJlLCAtMSwKKyAgLyogRGlhZ0FycmF5NjU4ICovIGRpYWc6Ondhcm5fdW5zaWduZWRfZW51bV9hbHdheXNfdHJ1ZV9jb21wYXJpc29uLCAtMSwKKyAgLyogRGlhZ0FycmF5NjU5ICovIGRpYWc6Ondhcm5fdW5zaWduZWRfYWx3YXlzX3RydWVfY29tcGFyaXNvbiwgLTEsCisgIC8qIERpYWdBcnJheTY2MCAqLyBkaWFnOjpleHRfdHlwZWNoZWNrX2RlY2xfaW5jb21wbGV0ZV90eXBlLCAtMSwKKyAgLyogRGlhZ0FycmF5NjYyICovIGRpYWc6Ondhcm5fYWNxdWlyZWRfYmVmb3JlLCBkaWFnOjp3YXJuX2FjcXVpcmVkX2JlZm9yZV9hZnRlcl9jeWNsZSwgZGlhZzo6d2Fybl9jYW5ub3RfcmVzb2x2ZV9sb2NrLCBkaWFnOjp3YXJuX2RvdWJsZV9sb2NrLCBkaWFnOjp3YXJuX2V4cGVjdGluZ19sb2NrX2hlbGRfb25fbG9vcCwgZGlhZzo6d2Fybl9leHBlY3RpbmdfbG9ja2VkLCBkaWFnOjp3YXJuX2Z1bl9leGNsdWRlc19tdXRleCwgZGlhZzo6d2Fybl9mdW5fcmVxdWlyZXNfbG9jaywgZGlhZzo6d2Fybl9sb2NrX2V4Y2x1c2l2ZV9hbmRfc2hhcmVkLCBkaWFnOjp3YXJuX2xvY2tfc29tZV9wcmVkZWNlc3NvcnMsIGRpYWc6Ondhcm5fbm9fdW5sb2NrLCBkaWFnOjp3YXJuX3VubG9ja19idXRfbm9fbG9jaywgZGlhZzo6d2Fybl91bmxvY2tfa2luZF9taXNtYXRjaCwgZGlhZzo6d2Fybl92YXJfZGVyZWZfcmVxdWlyZXNfYW55X2xvY2ssIGRpYWc6Ondhcm5fdmFyX2RlcmVmX3JlcXVpcmVzX2xvY2ssIGRpYWc6Ondhcm5fdmFyaWFibGVfcmVxdWlyZXNfYW55X2xvY2ssIGRpYWc6Ondhcm5fdmFyaWFibGVfcmVxdWlyZXNfbG9jaywgLTEsCisgIC8qIERpYWdBcnJheTY2MyAqLyBkaWFnOjp3YXJuX2ludmFsaWRfY2FwYWJpbGl0eV9uYW1lLCBkaWFnOjp3YXJuX3RocmVhZF9hdHRyaWJ1dGVfYXJndW1lbnRfbm90X2xvY2thYmxlLCBkaWFnOjp3YXJuX3RocmVhZF9hdHRyaWJ1dGVfZGVjbF9ub3RfbG9ja2FibGUsIGRpYWc6Ondhcm5fdGhyZWFkX2F0dHJpYnV0ZV9kZWNsX25vdF9wb2ludGVyLCBkaWFnOjp3YXJuX3RocmVhZF9hdHRyaWJ1dGVfaWdub3JlZCwgZGlhZzo6d2Fybl90aHJlYWRfYXR0cmlidXRlX25vdF9vbl9jYXBhYmlsaXR5X21lbWJlciwgZGlhZzo6d2Fybl90aHJlYWRfYXR0cmlidXRlX25vdF9vbl9ub25fc3RhdGljX21lbWJlciwgLTEsCisgIC8qIERpYWdBcnJheTY2NCAqLyBkaWFnOjp3YXJuX3RocmVhZF9zYWZldHlfYmV0YSwgLTEsCisgIC8qIERpYWdBcnJheTY2NSAqLyBkaWFnOjp3YXJuX2FjcXVpcmVfcmVxdWlyZXNfbmVnYXRpdmVfY2FwLCAtMSwKKyAgLyogRGlhZ0FycmF5NjY2ICovIGRpYWc6Ondhcm5fZnVuX3JlcXVpcmVzX2xvY2tfcHJlY2lzZSwgZGlhZzo6d2Fybl92YXJfZGVyZWZfcmVxdWlyZXNfbG9ja19wcmVjaXNlLCBkaWFnOjp3YXJuX3ZhcmlhYmxlX3JlcXVpcmVzX2xvY2tfcHJlY2lzZSwgLTEsCisgIC8qIERpYWdBcnJheTY2NyAqLyBkaWFnOjp3YXJuX2d1YXJkZWRfcGFzc19ieV9yZWZlcmVuY2UsIGRpYWc6Ondhcm5fcHRfZ3VhcmRlZF9wYXNzX2J5X3JlZmVyZW5jZSwgLTEsCisgIC8qIERpYWdBcnJheTY2OCAqLyBkaWFnOjp3YXJuX3RocmVhZF9zYWZldHlfdmVyYm9zZSwgLTEsCisgIC8qIERpYWdBcnJheTY2OSAqLyBkaWFnOjp0cmlncmFwaF9jb252ZXJ0ZWQsIGRpYWc6OnRyaWdyYXBoX2VuZHNfYmxvY2tfY29tbWVudCwgZGlhZzo6dHJpZ3JhcGhfaWdub3JlZCwgZGlhZzo6dHJpZ3JhcGhfaWdub3JlZF9ibG9ja19jb21tZW50LCAtMSwKKyAgLyogRGlhZ0FycmF5NjcxICovIGRpYWc6Ondhcm5fdHlwZV9zYWZldHlfbnVsbF9wb2ludGVyX3JlcXVpcmVkLCBkaWFnOjp3YXJuX3R5cGVfc2FmZXR5X3R5cGVfbWlzbWF0Y2gsIGRpYWc6Ondhcm5fdHlwZV90YWdfZm9yX2RhdGF0eXBlX3dyb25nX2tpbmQsIC0xLAorICAvKiBEaWFnQXJyYXk2NzIgKi8gZGlhZzo6ZXh0X3JlZGVmaW5pdGlvbl9vZl90eXBlZGVmLCAtMSwKKyAgLyogRGlhZ0FycmF5NjczICovIGRpYWc6OmV4dF90eXBlbmFtZV9taXNzaW5nLCAtMSwKKyAgLyogRGlhZ0FycmF5Njc0ICovIGRpYWc6Ondhcm5fZmVfdW5hYmxlX3RvX29wZW5fc3RhdHNfZmlsZSwgLTEsCisgIC8qIERpYWdBcnJheTY3NSAqLyBkaWFnOjp3YXJuX3VuYXZhaWxhYmxlX2Z3ZGNsYXNzX21lc3NhZ2UsIC0xLAorICAvKiBEaWFnQXJyYXk2NzYgKi8gZGlhZzo6d2Fybl91bmRlY2xhcmVkX3NlbGVjdG9yLCBkaWFnOjp3YXJuX3VuZGVjbGFyZWRfc2VsZWN0b3Jfd2l0aF90eXBvLCAtMSwKKyAgLyogRGlhZ0FycmF5Njc3ICovIGRpYWc6Ondhcm5fcHBfdW5kZWZfaWRlbnRpZmllciwgLTEsCisgIC8qIERpYWdBcnJheTY3OCAqLyBkaWFnOjp3YXJuX2FkZHJlc3Nfb2ZfcmVmZXJlbmNlX2Jvb2xfY29udmVyc2lvbiwgZGlhZzo6d2Fybl90aGlzX2Jvb2xfY29udmVyc2lvbiwgLTEsCisgIC8qIERpYWdBcnJheTY3OSAqLyBkaWFnOjp3YXJuX2Z1bmNfdGVtcGxhdGVfbWlzc2luZywgLTEsCisgIC8qIERpYWdBcnJheTY4MCAqLyBkaWFnOjp3YXJuX3VuZGVmaW5lZF9pbmxpbmUsIC0xLAorICAvKiBEaWFnQXJyYXk2ODEgKi8gZGlhZzo6d2Fybl91bmRlZmluZWRfaW50ZXJuYWwsIC0xLAorICAvKiBEaWFnQXJyYXk2ODIgKi8gZGlhZzo6ZXh0X3VuZGVmaW5lZF9pbnRlcm5hbF90eXBlLCAtMSwKKyAgLyogRGlhZ0FycmF5NjgzICovIGRpYWc6Ondhcm5fcG9pbnRlcl9pbmRpcmVjdGlvbl9mcm9tX2luY29tcGF0aWJsZV90eXBlLCBkaWFnOjp3YXJuX3VuZGVmaW5lZF9yZWludGVycHJldF9jYXN0LCAtMSwKKyAgLyogRGlhZ0FycmF5Njg0ICovIGRpYWc6Ondhcm5fdmFyX3RlbXBsYXRlX21pc3NpbmcsIC0xLAorICAvKiBEaWFnQXJyYXk2ODUgKi8gZGlhZzo6d2Fybl9zaWRlX2VmZmVjdHNfdW5ldmFsdWF0ZWRfY29udGV4dCwgLTEsCisgIC8qIERpYWdBcnJheTY4NiAqLyBkaWFnOjp3YXJuX3VuZ3VhcmRlZF9hdmFpbGFiaWxpdHksIC0xLAorICAvKiBEaWFnQXJyYXk2ODcgKi8gZGlhZzo6d2Fybl91bmd1YXJkZWRfYXZhaWxhYmlsaXR5X25ldywgLTEsCisgIC8qIERpYWdBcnJheTY4OCAqLyBkaWFnOjp3YXJuX3Vjbl9lc2NhcGVfaW5jb21wbGV0ZSwgZGlhZzo6d2Fybl91Y25fZXNjYXBlX25vX2RpZ2l0cywgZGlhZzo6d2Fybl91Y25fZXNjYXBlX3N1cnJvZ2F0ZSwgZGlhZzo6d2Fybl91Y25fbm90X3ZhbGlkX2luX2M4OSwgZGlhZzo6d2Fybl91Y25fbm90X3ZhbGlkX2luX2M4OV9saXRlcmFsLCAtMSwKKyAgLyogRGlhZ0FycmF5Njg5ICovIGRpYWc6Ondhcm5fdXRmOF9zeW1ib2xfaG9tb2dseXBoLCAtMSwKKyAgLyogRGlhZ0FycmF5NjkwICovIGRpYWc6OmV4dF91bmljb2RlX3doaXRlc3BhY2UsIC0xLAorICAvKiBEaWFnQXJyYXk2OTEgKi8gZGlhZzo6d2Fybl91dGY4X3N5bWJvbF96ZXJvX3dpZHRoLCAtMSwKKyAgLyogRGlhZ0FycmF5NjkyICovIGRpYWc6Ondhcm5fYmFzZV9jbGFzc19pc191bmluaXQsIGRpYWc6Ondhcm5fZmllbGRfaXNfdW5pbml0LCBkaWFnOjp3YXJuX3JlZmVyZW5jZV9maWVsZF9pc191bmluaXQsIGRpYWc6Ondhcm5fdW5pbml0X2J5cmVmX2Jsb2NrdmFyX2NhcHR1cmVkX2J5X2Jsb2NrLCBkaWFnOjp3YXJuX3VuaW5pdF9zZWxmX3JlZmVyZW5jZV9pbl9pbml0LCBkaWFnOjp3YXJuX3VuaW5pdF9zZWxmX3JlZmVyZW5jZV9pbl9yZWZlcmVuY2VfaW5pdCwgZGlhZzo6d2Fybl91bmluaXRfdmFyLCAtMSwKKyAgLyogRGlhZ0FycmF5NjkzICovIGRpYWc6Ondhcm5fZHJ2X3Vua25vd25fYXJndW1lbnRfY2xhbmdfY2wsIGRpYWc6Ondhcm5fZHJ2X3Vua25vd25fYXJndW1lbnRfY2xhbmdfY2xfd2l0aF9zdWdnZXN0aW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5Njk0ICovIGRpYWc6Ondhcm5fdW5rbm93bl9hdHRyaWJ1dGVfaWdub3JlZCwgLTEsCisgIC8qIERpYWdBcnJheTY5NSAqLyBkaWFnOjpleHRfdW5rbm93bl9lc2NhcGUsIC0xLAorICAvKiBEaWFnQXJyYXk2OTYgKi8gZGlhZzo6ZXh0X29uX29mZl9zd2l0Y2hfc3ludGF4LCBkaWFnOjpleHRfcHJhZ21hX3N5bnRheF9lb2QsIGRpYWc6OmV4dF9zdGRjX3ByYWdtYV9pZ25vcmVkLCBkaWFnOjp3YXJuX3ByYWdtYV9kaWFnbm9zdGljX2Nhbm5vdF9wb3AsIGRpYWc6Ondhcm5fcHJhZ21hX2RpYWdub3N0aWNfaW52YWxpZCwgZGlhZzo6d2Fybl9wcmFnbWFfZGlhZ25vc3RpY19pbnZhbGlkX29wdGlvbiwgZGlhZzo6d2Fybl9wcmFnbWFfZGlhZ25vc3RpY19pbnZhbGlkX3Rva2VuLCBkaWFnOjp3YXJuX3ByYWdtYV9pZ25vcmVkLCBkaWFnOjp3YXJuX3ByYWdtYV9pbmNsdWRlX2FsaWFzX2V4cGVjdGVkLCBkaWFnOjp3YXJuX3ByYWdtYV9pbmNsdWRlX2FsaWFzX2V4cGVjdGVkX2ZpbGVuYW1lLCBkaWFnOjp3YXJuX3ByYWdtYV9pbmNsdWRlX2FsaWFzX21pc21hdGNoX2FuZ2xlLCBkaWFnOjp3YXJuX3ByYWdtYV9pbmNsdWRlX2FsaWFzX21pc21hdGNoX3F1b3RlLCBkaWFnOjp3YXJuX3ByYWdtYV93YXJuaW5nX2V4cGVjdGVkLCBkaWFnOjp3YXJuX3ByYWdtYV93YXJuaW5nX2V4cGVjdGVkX251bWJlciwgZGlhZzo6d2Fybl9wcmFnbWFfd2FybmluZ19wdXNoX2xldmVsLCBkaWFnOjp3YXJuX3ByYWdtYV93YXJuaW5nX3NwZWNfaW52YWxpZCwgZGlhZzo6d2Fybl9zdGRjX2ZlbnZfYWNjZXNzX25vdF9zdXBwb3J0ZWQsIC0xLAorICAvKiBEaWFnQXJyYXk2OTcgKi8gZGlhZzo6d2Fybl91bmtub3duX3Nhbml0aXplcl9pZ25vcmVkLCAtMSwKKyAgLyogRGlhZ0FycmF5Njk4ICovIGRpYWc6Ondhcm5fcHJhZ21hX2RpYWdub3N0aWNfdW5rbm93bl93YXJuaW5nLCBkaWFnOjp3YXJuX3Vua25vd25fZGlhZ19vcHRpb24sIGRpYWc6Ondhcm5fdW5rbm93bl93YXJuaW5nX3NwZWNpZmllciwgLTEsCisgIC8qIERpYWdBcnJheTY5OSAqLyBkaWFnOjpleHRfdGVtcGxhdGVfYXJnX3VubmFtZWRfdHlwZSwgLTEsCisgIC8qIERpYWdBcnJheTcwMCAqLyBkaWFnOjp3YXJuX3VubmVlZGVkX2ludGVybmFsX2RlY2wsIGRpYWc6Ondhcm5fdW5uZWVkZWRfc3RhdGljX2ludGVybmFsX2RlY2wsIC0xLAorICAvKiBEaWFnQXJyYXk3MDEgKi8gZGlhZzo6d2Fybl91bm5lZWRlZF9tZW1iZXJfZnVuY3Rpb24sIC0xLAorICAvKiBEaWFnQXJyYXk3MDIgKi8gZGlhZzo6d2Fybl91bnJlYWNoYWJsZSwgLTEsCisgIC8qIERpYWdBcnJheTcwNCAqLyBkaWFnOjp3YXJuX3VucmVhY2hhYmxlX2JyZWFrLCAtMSwKKyAgLyogRGlhZ0FycmF5NzA1ICovIGRpYWc6Ondhcm5fdW5yZWFjaGFibGVfbG9vcF9pbmNyZW1lbnQsIC0xLAorICAvKiBEaWFnQXJyYXk3MDYgKi8gZGlhZzo6d2Fybl91bnJlYWNoYWJsZV9yZXR1cm4sIC0xLAorICAvKiBEaWFnQXJyYXk3MDcgKi8gZGlhZzo6d2Fybl91bnNlcXVlbmNlZF9tb2RfbW9kLCBkaWFnOjp3YXJuX3Vuc2VxdWVuY2VkX21vZF91c2UsIC0xLAorICAvKiBEaWFnQXJyYXk3MDggKi8gZGlhZzo6d2Fybl90YXJnZXRfdW5zdXBwb3J0ZWRfYWJzMjAwOCwgZGlhZzo6d2Fybl90YXJnZXRfdW5zdXBwb3J0ZWRfYWJzbGVnYWN5LCAtMSwKKyAgLyogRGlhZ0FycmF5NzA5ICovIGRpYWc6Ondhcm5fYXRfYXZhaWxhYmxlX3VuY2hlY2tlZF91c2UsIC0xLAorICAvKiBEaWFnQXJyYXk3MTAgKi8gZGlhZzo6d2Fybl90YXJnZXRfdW5zdXBwb3J0ZWRfY29tcGFjdF9icmFuY2hlcywgLTEsCisgIC8qIERpYWdBcnJheTcxMSAqLyBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9kbGxfaW5zdGFudGlhdGVkX2Jhc2VfY2xhc3MsIC0xLAorICAvKiBEaWFnQXJyYXk3MTIgKi8gZGlhZzo6d2Fybl90ZW1wbGF0ZV9xdWFsaWZpZWRfZnJpZW5kX2lnbm9yZWQsIGRpYWc6Ondhcm5fdGVtcGxhdGVfcXVhbGlmaWVkX2ZyaWVuZF91bnN1cHBvcnRlZCwgLTEsCisgIC8qIERpYWdBcnJheTcxMyAqLyBkaWFnOjp3YXJuX2Rydl91bnN1cHBvcnRlZF9ncG9wdCwgLTEsCisgIC8qIERpYWdBcnJheTcxNCAqLyBkaWFnOjp3YXJuX3RhcmdldF91bnN1cHBvcnRlZF9uYW4yMDA4LCBkaWFnOjp3YXJuX3RhcmdldF91bnN1cHBvcnRlZF9uYW5sZWdhY3ksIC0xLAorICAvKiBEaWFnQXJyYXk3MTUgKi8gZGlhZzo6d2Fybl9kcnZfdW5zdXBwb3J0ZWRfZGVidWdfaW5mb19vcHRfZm9yX3RhcmdldCwgLTEsCisgIC8qIERpYWdBcnJheTcxNiAqLyBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9wcm90ZWN0ZWRfdmlzaWJpbGl0eSwgLTEsCisgIC8qIERpYWdBcnJheTcxNyAqLyBkaWFnOjpleHRfcGFydGlhbF9zcGVjc19ub3RfZGVkdWNpYmxlLCAtMSwKKyAgLyogRGlhZ0FycmF5NzIwICovIGRpYWc6Ondhcm5fZHJ2X2RpYWdub3N0aWNzX2hvdG5lc3NfcmVxdWlyZXNfcGdvLCBkaWFnOjp3YXJuX2Rydl9lbXB0eV9qb2luZWRfYXJndW1lbnQsIGRpYWc6Ondhcm5fZHJ2X2lucHV0X2ZpbGVfdW51c2VkLCBkaWFnOjp3YXJuX2Rydl9pbnB1dF9maWxlX3VudXNlZF9ieV9jcHAsIGRpYWc6Ondhcm5fZHJ2X3ByZXByb2Nlc3NlZF9pbnB1dF9maWxlX3VudXNlZCwgZGlhZzo6d2Fybl9kcnZfdW51c2VkX2FyZ3VtZW50LCBkaWFnOjp3YXJuX2lnbm9yZWRfY2xhbmdfb3B0aW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5NzIxICovIGRpYWc6Ondhcm5fdW51c2VkX2NvbXBhcmlzb24sIC0xLAorICAvKiBEaWFnQXJyYXk3MjIgKi8gZGlhZzo6d2Fybl91bnVzZWRfY29uc3RfdmFyaWFibGUsIC0xLAorICAvKiBEaWFnQXJyYXk3MjMgKi8gZGlhZzo6d2Fybl91bnVzZWRfZXhjZXB0aW9uX3BhcmFtLCAtMSwKKyAgLyogRGlhZ0FycmF5NzI0ICovIGRpYWc6Ondhcm5fdW51c2VkX2Z1bmN0aW9uLCAtMSwKKyAgLyogRGlhZ0FycmF5NzI1ICovIGRpYWc6Ondhcm5fdW51c2VkX3Byb3BlcnR5X2V4cHIsIC0xLAorICAvKiBEaWFnQXJyYXk3MjYgKi8gZGlhZzo6d2Fybl91bnVzZWRfbGFiZWwsIC0xLAorICAvKiBEaWFnQXJyYXk3MjcgKi8gZGlhZzo6d2Fybl91bnVzZWRfbGFtYmRhX2NhcHR1cmUsIC0xLAorICAvKiBEaWFnQXJyYXk3MjggKi8gZGlhZzo6d2Fybl91bnVzZWRfbG9jYWxfdHlwZWRlZiwgLTEsCisgIC8qIERpYWdBcnJheTczMCAqLyBkaWFnOjpwcF9tYWNyb19ub3RfdXNlZCwgLTEsCisgIC8qIERpYWdBcnJheTczMSAqLyBkaWFnOjp3YXJuX3VudXNlZF9tZW1iZXJfZnVuY3Rpb24sIC0xLAorICAvKiBEaWFnQXJyYXk3MzIgKi8gZGlhZzo6d2Fybl91bnVzZWRfcGFyYW1ldGVyLCAtMSwKKyAgLyogRGlhZ0FycmF5NzMzICovIGRpYWc6Ondhcm5fdW51c2VkX3ByaXZhdGVfZmllbGQsIC0xLAorICAvKiBEaWFnQXJyYXk3MzQgKi8gZGlhZzo6d2Fybl91bnVzZWRfcHJvcGVydHlfYmFja2luZ19pdmFyLCAtMSwKKyAgLyogRGlhZ0FycmF5NzM1ICovIGRpYWc6Ondhcm5fdW51c2VkX3Jlc3VsdCwgLTEsCisgIC8qIERpYWdBcnJheTczNiAqLyBkaWFnOjp3YXJuX3VudXNlZF90ZW1wbGF0ZSwgLTEsCisgIC8qIERpYWdBcnJheTczNyAqLyBkaWFnOjp3YXJuX3VudXNlZF9jYWxsLCBkaWFnOjp3YXJuX3VudXNlZF9jb250YWluZXJfc3Vic2NyaXB0X2V4cHIsIGRpYWc6Ondhcm5fdW51c2VkX2V4cHIsIGRpYWc6Ondhcm5fdW51c2VkX3ZvaWRwdHIsIC0xLAorICAvKiBEaWFnQXJyYXk3MzggKi8gZGlhZzo6d2Fybl91bnVzZWRfdmFyaWFibGUsIC0xLAorICAvKiBEaWFnQXJyYXk3MzkgKi8gZGlhZzo6d2Fybl91bnVzZWRfdm9sYXRpbGUsIC0xLAorICAvKiBEaWFnQXJyYXk3NDAgKi8gZGlhZzo6d2Fybl91c2VkX2J1dF9tYXJrZWRfdW51c2VkLCAtMSwKKyAgLyogRGlhZ0FycmF5NzQxICovIGRpYWc6Ondhcm5fdXNlcl9saXRlcmFsX3Jlc2VydmVkLCAtMSwKKyAgLyogRGlhZ0FycmF5NzQyICovIGRpYWc6Ondhcm5fZGlhZ25vc2VfaWZfc3VjY2VlZGVkLCAtMSwKKyAgLyogRGlhZ0FycmF5NzQzICovIGRpYWc6Ondhcm5fc2Vjb25kX2FyZ19vZl92YV9zdGFydF9ub3RfbGFzdF9uYW1lZF9wYXJhbSwgZGlhZzo6d2Fybl9zZWNvbmRfcGFyYW1ldGVyX3RvX3ZhX2FyZ19uZXZlcl9jb21wYXRpYmxlLCBkaWFnOjp3YXJuX3ZhX3N0YXJ0X3R5cGVfaXNfdW5kZWZpbmVkLCAtMSwKKyAgLyogRGlhZ0FycmF5NzQ0ICovIGRpYWc6OmV4dF9uYW1lZF92YXJpYWRpY19tYWNybywgZGlhZzo6ZXh0X3BwX2JhZF92YW9wdF91c2UsIGRpYWc6OmV4dF92YXJpYWRpY19tYWNybywgLTEsCisgIC8qIERpYWdBcnJheTc0NSAqLyBkaWFnOjp3YXJuX3R5cGVjaGVja192ZWN0b3JfZWxlbWVudF9zaXplc19ub3RfZXF1YWwsIC0xLAorICAvKiBEaWFnQXJyYXk3NDYgKi8gZGlhZzo6d2Fybl9pbmNvbXBhdGlibGVfdmVjdG9ycywgLTEsCisgIC8qIERpYWdBcnJheTc0OCAqLyBkaWFnOjp3YXJuX2VtcHR5X3BhcmVuc19hcmVfZnVuY3Rpb25fZGVjbCwgZGlhZzo6d2Fybl9wYXJlbnNfZGlzYW1iaWd1YXRlZF9hc19mdW5jdGlvbl9kZWNsYXJhdGlvbiwgZGlhZzo6d2Fybl9wYXJlbnNfZGlzYW1iaWd1YXRlZF9hc192YXJpYWJsZV9kZWNsYXJhdGlvbiwgLTEsCisgIC8qIERpYWdBcnJheTc0OSAqLyBkaWFnOjp3YXJuX2RlY2xfaW5fcGFyYW1fbGlzdCwgZGlhZzo6d2Fybl9yZWRlZmluaXRpb25faW5fcGFyYW1fbGlzdCwgLTEsCisgIC8qIERpYWdBcnJheTc1MCAqLyBkaWFnOjp3YXJuX3ZsYV91c2VkLCAtMSwKKyAgLyogRGlhZ0FycmF5NzUxICovIGRpYWc6OmV4dF92bGEsIC0xLAorICAvKiBEaWFnQXJyYXk3NTIgKi8gZGlhZzo6ZXh0X3R5cGVjaGVja19pbmRpcmVjdGlvbl90aHJvdWdoX3ZvaWRfcG9pbnRlciwgLTEsCisgIC8qIERpYWdBcnJheTc1NCAqLyBkaWFnOjp3YXJuX3dlYWtfdGVtcGxhdGVfdnRhYmxlLCAtMSwKKyAgLyogRGlhZ0FycmF5NzU1ICovIGRpYWc6Ondhcm5fd2Vha192dGFibGUsIC0xLAorICAvKiBEaWFnQXJyYXk3NTYgKi8gZGlhZzo6ZXh0X2RlcHJlY2F0ZWRfc3RyaW5nX2xpdGVyYWxfY29udmVyc2lvbiwgLTEsCisgIC8qIERpYWdBcnJheTc1OCAqLyBkaWFnOjp3YXJuX3plcm9fYXNfbnVsbF9wb2ludGVyX2NvbnN0YW50LCAtMSwKKyAgLyogRGlhZ0FycmF5NzU5ICovIGRpYWc6OmV4dF90eXBlY2hlY2tfemVyb19hcnJheV9zaXplLCAtMSwKIH07CiAKIHN0YXRpYyBjb25zdCBpbnQxNl90IERpYWdTdWJHcm91cHNbXSA9IHsKICAgLyogRW1wdHkgKi8gLTEsCi0gIC8qIERpYWdTdWJHcm91cDAgKi8gMjEzLCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNCAqLyAxNSwgMjEzLCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwMTEgKi8gNTIwLCA2MjIsIDY0MiwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDE1ICovIDQxNiwgNTA4LCA2MzEsIDYzMiwgLTEsCisgIC8qIERpYWdTdWJHcm91cDAgKi8gMjIwLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNCAqLyAxNSwgMjIwLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMTEgKi8gNTMxLCA2MzUsIDY1NSwgLTEsCisgIC8qIERpYWdTdWJHcm91cDE1ICovIDQyNSwgNTE5LCA2NDQsIDY0NSwgLTEsCiAgIC8qIERpYWdTdWJHcm91cDIzICovIDMwLCAyOSwgMjYsIC0xLAogICAvKiBEaWFnU3ViR3JvdXAyOCAqLyAyNSwgLTEsCiAgIC8qIERpYWdTdWJHcm91cDM0ICovIDM2LCAzNSwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDQ0ICovIDI4MSwgMTQ1LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNDcgKi8gNjgxLCAyNzQsIC0xLAotICAvKiBEaWFnU3ViR3JvdXA1NiAqLyA4NCwgMTA0LCAyNDksIC0xLAorICAvKiBEaWFnU3ViR3JvdXA0NCAqLyAyODksIDE0OCwgLTEsCisgIC8qIERpYWdTdWJHcm91cDQ3ICovIDY5NCwgMjgyLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNTYgKi8gODQsIDEwNCwgMjU3LCAtMSwKICAgLyogRGlhZ1N1Ykdyb3VwNTcgKi8gMTA3LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNjQgKi8gNTIwLCA2NjUsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA2NCAqLyA1MzEsIDY3OCwgLTEsCiAgIC8qIERpYWdTdWJHcm91cDY1ICovIDY0LCAtMSwKICAgLyogRGlhZ1N1Ykdyb3VwNzIgKi8gNzUsIC0xLAogICAvKiBEaWFnU3ViR3JvdXA3MyAqLyA3OSwgLTEsCkBAIC02NzcsNyArNjg4LDcgQEAKICAgLyogRGlhZ1N1Ykdyb3VwODUgKi8gMTAxLCA5OSwgLTEsCiAgIC8qIERpYWdTdWJHcm91cDg2ICovIDg1LCAxMDIsIDEwMCwgLTEsCiAgIC8qIERpYWdTdWJHcm91cDg3ICovIDg0LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwODggKi8gMTY3LCAxNjMsIDg5LCA5OSwgLTEsCisgIC8qIERpYWdTdWJHcm91cDg4ICovIDE3MywgMTY5LCA4OSwgOTksIC0xLAogICAvKiBEaWFnU3ViR3JvdXA5MCAqLyA4OCwgMTAwLCAtMSwKICAgLyogRGlhZ1N1Ykdyb3VwOTIgKi8gODcsIC0xLAogICAvKiBEaWFnU3ViR3JvdXA5MyAqLyA4OCwgLTEsCkBAIC02ODksOTAgKzcwMCw5MyBAQAogICAvKiBEaWFnU3ViR3JvdXAxMDUgKi8gMTAzLCAxMDQsIC0xLAogICAvKiBEaWFnU3ViR3JvdXAxMDYgKi8gMTA5LCAxMTEsIDEwMywgMTAxLCA5OSwgLTEsCiAgIC8qIERpYWdTdWJHcm91cDExMCAqLyAxMDYsIDEwNywgMTA4LCAxMDUsIDEwMiwgMTAwLCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwMTIzICovIDQzMiwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDEyNiAqLyAxMjUsIC0xLAotICAvKiBEaWFnU3ViR3JvdXAxMzIgKi8gNTksIC0xLAotICAvKiBEaWFnU3ViR3JvdXAxMzYgKi8gNjQsIDEzMiwgMjAzLCA2MCwgMjIxLCA1OTAsIDMyMSwgMjg5LCAyODYsIDM0NiwgNDI5LCA0NDQsIDQ2MiwgNTkyLCA2MjMsIC0xLAotICAvKiBEaWFnU3ViR3JvdXAxMzcgKi8gNDQ0LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwMTM4ICovIDEzOSwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDE0MSAqLyAyLCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwMTQ2ICovIDE0OCwgMTQ5LCA1NjAsIC0xLAotICAvKiBEaWFnU3ViR3JvdXAxNTggKi8gMTU5LCAxNjAsIDE2MSwgMTYzLCAxNjcsIDE2OCwgMTY5LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwMTY1ICovIDE2NiwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDE2OSAqLyA3NiwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDE3NSAqLyAxNzYsIC0xLAotICAvKiBEaWFnU3ViR3JvdXAxODAgKi8gMTgyLCAxODEsIC0xLAotICAvKiBEaWFnU3ViR3JvdXAxODMgKi8gMTg0LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwMTkzICovIDE2MSwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDE5NCAqLyA0MzMsIC0xLAotICAvKiBEaWFnU3ViR3JvdXAyMDAgKi8gMjE2LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwMjAxICovIDIwMiwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDIxMyAqLyAzOTgsIDI3OSwgMzE1LCA1NzMsIDQwMSwgNTkxLCA3MTksIDQ0NiwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDIxNSAqLyAxMDgsIDgwLCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwMjIxICovIDIyMywgMjI0LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwMjI2ICovIDIyNywgMjM0LCA0MzQsIDIzMiwgMjMzLCAyMjgsIC0xLAotICAvKiBEaWFnU3ViR3JvdXAyMzUgKi8gMjMwLCAyMzIsIDIzMywgLTEsCi0gIC8qIERpYWdTdWJHcm91cDI0NCAqLyAyNDUsIDI0NiwgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNTIsIDI1MywgMjU0LCAyNTUsIDI1NiwgNzM4LCAyNTcsIDI1OCwgMjU5LCAyNjAsIDI2MSwgMjYyLCA1NDgsIDI2MywgMjY0LCAyNjUsIDI2NiwgMjY3LCAyNjgsIDc0NiwgMjY5LCAyNzAsIC0xLAotICAvKiBEaWFnU3ViR3JvdXAyNzggKi8gMjc2LCAyNzcsIC0xLAotICAvKiBEaWFnU3ViR3JvdXAyODAgKi8gMjg3LCAyODgsIC0xLAotICAvKiBEaWFnU3ViR3JvdXAyODQgKi8gMjg1LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwMzAxICovIDMwMiwgMjk4LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwMzA3ICovIDMwOCwgNDMxLCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwMzEyICovIDE2MywgLTEsCi0gIC8qIERpYWdTdWJHcm91cDMyMiAqLyAzMjEsIC0xLAotICAvKiBEaWFnU3ViR3JvdXAzMjMgKi8gMzI0LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwMzI2ICovIDI3NSwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDM0OCAqLyAxMDksIC0xLAotICAvKiBEaWFnU3ViR3JvdXAzNTEgKi8gODIsIC0xLAotICAvKiBEaWFnU3ViR3JvdXAzNTIgKi8gMjI1LCA1NDQsIC0xLAotICAvKiBEaWFnU3ViR3JvdXAzNjIgKi8gMzY1LCAzODEsIDM2OCwgMzc3LCAzODUsIDM4OCwgMzczLCAzODksIDM4MiwgMzgzLCAzODcsIDM3NSwgMzcyLCAzNjksIDM4NiwgMzg0LCAzNzEsIDM3OSwgMzc4LCAzNzYsIDM2NCwgMzY3LCAzOTAsIDM2MywgMzY2LCAzNzAsIDMwOSwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDQxNiAqLyAxMjEsIDEyNSwgMTU3LCAyMjUsIDIyNiwgMjgwLCAzMTMsIDM5NCwgMzk1LCA0MTcsIDQyMCwgNTU1LCA1NjMsIDU2OSwgNTcyLCA1OTUsIDU5NiwgNjI1LCA2NTYsIDY3OSwgNjgzLCA3MDUsIDc0MCwgNDY3LCA0NTcsIDQ1OCwgNTAyLCA1MzIsIDExNywgMjExLCA3MjksIC0xLAotICAvKiBEaWFnU3ViR3JvdXA0MTcgKi8gNTE4LCA1NTAsIDU2MSwgNTcyLCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNDE4ICovIDM4MSwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDQyMiAqLyA4MywgLTEsCi0gIC8qIERpYWdTdWJHcm91cDQyNyAqLyA4OSwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDQyOCAqLyA1OTEsIDEzNiwgMzQ3LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNDMxICovIDQzMCwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDQ0OCAqLyA0NDksIC0xLAotICAvKiBEaWFnU3ViR3JvdXA0NTYgKi8gNDgxLCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNDYxICovIDQ4NCwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDQ4MSAqLyA0ODIsIC0xLAotICAvKiBEaWFnU3ViR3JvdXA1MDggKi8gMzUwLCAzNDksIDYyLCA1ODcsIDUwMSwgNTA5LCAxNDcsIC0xLAotICAvKiBEaWFnU3ViR3JvdXA1MTAgKi8gNjczLCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNTE2ICovIDExMiwgODAsIDgyLCA4NCwgMjIwLCAyMzYsIDI0NiwgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNTIsIDI1MywgMjU1LCAyNTYsIDI1NywgMjU4LCAyNTksIDI2MCwgMjYxLCAyNjIsIDI2MywgMjY0LCAyNjcsIDI2OSwgMjcwLCAzNDEsIDM1MSwgMzY1LCAzNjYsIDM2OCwgMzcwLCAzNzIsIDM3NywgMzc4LCAzODQsIDUwMCwgNzM4LCA3NDYsIDY2OSwgNTU5LCAxMjgsIDQyMywgMTUzLCAxODUsIDM0MywgMjkzLCAxOTUsIDE5OCwgNDUxLCAyMTgsIC0xLAotICAvKiBEaWFnU3ViR3JvdXA1MjcgKi8gNTI4LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNTMwICovIDY4MywgMjc4LCA1MjUsIDUyNywgLTEsCi0gIC8qIERpYWdTdWJHcm91cDU1MiAqLyAxNjcsIC0xLAotICAvKiBEaWFnU3ViR3JvdXA1NTggKi8gNzgsIC0xLAotICAvKiBEaWFnU3ViR3JvdXA1NjMgKi8gNTY0LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNTY3ICovIDU2OCwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDU2OSAqLyA1NzEsIDU3MCwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDU3NSAqLyA2OTQsIC0xLAotICAvKiBEaWFnU3ViR3JvdXA1NzcgKi8gNTgxLCA1ODIsIC0xLAotICAvKiBEaWFnU3ViR3JvdXA1NzggKi8gNTc3LCA1ODAsIDU4MywgNTc5LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNTgwICovIDU4MSwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDYwMyAqLyAyNjUsIC0xLAotICAvKiBEaWFnU3ViR3JvdXA2MzAgKi8gNTk3LCAxOTIsIDQzOSwgMzU5LCA2MjksIC0xLAotICAvKiBEaWFnU3ViR3JvdXA2MzcgKi8gNjM4LCA2NDIsIDY0MSwgNjQ0LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNjM4ICovIDY0MCwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDYzOSAqLyA2NDMsIDY0NiwgNjQ1LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNjQ4ICovIDY1MCwgNjQ5LCA2NTMsIDY1NCwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDY3MiAqLyA1MjQsIC0xLAotICAvKiBEaWFnU3ViR3JvdXA2NzMgKi8gNjc0LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNjc5ICovIDU5OSwgNjA3LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNjg2ICovIDExMSwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDY4OSAqLyA2OTIsIC0xLAotICAvKiBEaWFnU3ViR3JvdXA2OTAgKi8gNjg5LCA2OTEsIDY5MywgLTEsCi0gIC8qIERpYWdTdWJHcm91cDcwNSAqLyA3MDYsIDcxMSwgNzEzLCA3MjAsIDcxNCwgNzE1LCA3MjQsIDcyNSwgNzIxLCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNzExICovIDY4NywgLTEsCi0gIC8qIERpYWdTdWJHcm91cDcxNiAqLyA3MTUsIC0xLAotICAvKiBEaWFnU3ViR3JvdXA3MTggKi8gNjg4LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNzIzICovIDY4NywgLTEsCi0gIC8qIERpYWdTdWJHcm91cDcyNCAqLyA3MDgsIDcyMiwgNjcyLCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNzI1ICovIDcwOSwgLTEsCi0gIC8qIERpYWdTdWJHcm91cDczNCAqLyA3MzMsIC0xLAotICAvKiBEaWFnU3ViR3JvdXA3NDMgKi8gMTY5LCAtMSwKLSAgLyogRGlhZ1N1Ykdyb3VwNzQ0ICovIDc0MywgLTEsCisgIC8qIERpYWdTdWJHcm91cDEyNCAqLyA0NDIsIC0xLAorICAvKiBEaWFnU3ViR3JvdXAxMjcgKi8gMTI2LCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMTMzICovIDU5LCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMTM3ICovIDY0LCAxMzMsIDIxMCwgNjAsIDIyOSwgNjAyLCAzMzAsIDI5OCwgMjk1LCAzNTUsIDQzOSwgNDU0LCA0NzIsIDYwNCwgNjM2LCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMTM4ICovIDQ1NCwgLTEsCisgIC8qIERpYWdTdWJHcm91cDEzOSAqLyAxNDAsIC0xLAorICAvKiBEaWFnU3ViR3JvdXAxNDIgKi8gMiwgLTEsCisgIC8qIERpYWdTdWJHcm91cDE0OSAqLyAxNTEsIDE1MiwgNTcyLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMTYzICovIDE2MiwgMTYwLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMTY0ICovIDE2NSwgMTY2LCAxNjcsIDE2OSwgMTczLCAxNzQsIDE3NSwgLTEsCisgIC8qIERpYWdTdWJHcm91cDE3MSAqLyAxNzIsIC0xLAorICAvKiBEaWFnU3ViR3JvdXAxNzUgKi8gNzYsIC0xLAorICAvKiBEaWFnU3ViR3JvdXAxODEgKi8gMTgyLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMTg2ICovIDE4OCwgMTg3LCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMTg5ICovIDE5MCwgLTEsCisgIC8qIERpYWdTdWJHcm91cDE5OSAqLyAxNjcsIC0xLAorICAvKiBEaWFnU3ViR3JvdXAyMDAgKi8gNDQzLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMjA3ICovIDIyNCwgLTEsCisgIC8qIERpYWdTdWJHcm91cDIwOCAqLyAyMDksIC0xLAorICAvKiBEaWFnU3ViR3JvdXAyMjAgKi8gNDA3LCAyODcsIDMyNCwgNTg1LCA0MTAsIDYwMywgNzMyLCA0NTYsIDIwNCwgLTEsCisgIC8qIERpYWdTdWJHcm91cDIyMiAqLyAxMDgsIDgwLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMjIzICovIDIwNCwgLTEsCisgIC8qIERpYWdTdWJHcm91cDIyOSAqLyAyMzEsIDIzMiwgLTEsCisgIC8qIERpYWdTdWJHcm91cDIzNCAqLyAyMzUsIDI0MiwgNDQ0LCAyNDAsIDI0MSwgMjM2LCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMjQzICovIDIzOCwgMjQwLCAyNDEsIC0xLAorICAvKiBEaWFnU3ViR3JvdXAyNTIgKi8gMjUzLCAyNTQsIDI1NiwgMjU3LCAyNTgsIDI1OSwgMjYwLCAyNjEsIDI2MiwgMjYzLCAyNjQsIDc1MSwgMjY1LCAyNjYsIDI2NywgMjY4LCAyNjksIDI3MCwgNTYwLCAyNzEsIDI3MiwgMjczLCAyNzQsIDI3NSwgMjc2LCA3NTksIDI3NywgMjc4LCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMjg2ICovIDI4NCwgMjg1LCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMjg4ICovIDI5NiwgMjk3LCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMjkyICovIDI5MywgLTEsCisgIC8qIERpYWdTdWJHcm91cDMxMCAqLyAzMTEsIDMwNywgLTEsCisgIC8qIERpYWdTdWJHcm91cDMxNiAqLyAzMTcsIDQ0MSwgLTEsCisgIC8qIERpYWdTdWJHcm91cDMyMSAqLyAxNjksIC0xLAorICAvKiBEaWFnU3ViR3JvdXAzMzEgKi8gMzMwLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMzMyICovIDMzMywgLTEsCisgIC8qIERpYWdTdWJHcm91cDMzNSAqLyAyODMsIC0xLAorICAvKiBEaWFnU3ViR3JvdXAzNTcgKi8gMTA5LCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMzYwICovIDgyLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMzYxICovIDIzMywgNTU2LCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwMzcxICovIDM3NCwgMzkwLCAzNzcsIDM4NiwgMzk0LCAzOTcsIDM4MiwgMzk4LCAzOTEsIDM5MiwgMzk2LCAzODQsIDM4MSwgMzc4LCAzOTUsIDM5MywgMzgwLCAzODgsIDM4NywgMzg1LCAzNzMsIDM3NiwgMzk5LCAzNzIsIDM3NSwgMzc5LCAzMTgsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA0MjUgKi8gMTIyLCAxMjYsIDE2MywgMjMzLCAyMzQsIDI4OCwgMzIyLCA0MDMsIDQwNCwgNDI2LCA0MjksIDU2NywgNTc1LCA1ODEsIDU4NCwgNjA3LCA2MDgsIDYzOCwgNjY5LCA2OTIsIDY5NiwgNzE4LCA3NTMsIDQ3NywgNDY3LCA0NjgsIDUxMiwgNTQ0LCAxMTgsIDIxOCwgNzQyLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNDI2ICovIDUyOSwgNTYyLCA1NzMsIDU4NCwgLTEsCisgIC8qIERpYWdTdWJHcm91cDQyNyAqLyAzOTAsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA0MzEgKi8gODMsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA0MzcgKi8gODksIC0xLAorICAvKiBEaWFnU3ViR3JvdXA0MzggKi8gNjAzLCAxMzcsIDM1NiwgLTEsCisgIC8qIERpYWdTdWJHcm91cDQ0MSAqLyA0NDAsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA0NTggKi8gNDU5LCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNDY2ICovIDQ5MSwgLTEsCisgIC8qIERpYWdTdWJHcm91cDQ3MSAqLyA0OTQsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA0OTEgKi8gNDkyLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNTEzICovIDMyNCwgLTEsCisgIC8qIERpYWdTdWJHcm91cDUxOSAqLyAzNTksIDM1OCwgNjIsIDU5OSwgNTExLCA1MjAsIDE1MCwgLTEsCisgIC8qIERpYWdTdWJHcm91cDUyMSAqLyA2ODYsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA1MjcgKi8gMTEyLCA4MCwgODIsIDg0LCAyMjgsIDI0NCwgMjU0LCAyNTYsIDI1NywgMjU4LCAyNTksIDI2MCwgMjYxLCAyNjMsIDI2NCwgMjY1LCAyNjYsIDI2NywgMjY4LCAyNjksIDI3MCwgMjcxLCAyNzIsIDI3NSwgMjc3LCAyNzgsIDM1MCwgMzYwLCAzNzQsIDM3NSwgMzc3LCAzNzksIDM4MSwgMzg2LCAzODcsIDM5MywgNTEwLCA3NTEsIDc1OSwgNDYxLCAyMjYsIDY4MiwgNTcxLCAxMjksIDQzMiwgMTU3LCAxOTEsIDM1MiwgMzAyLCAyMDEsIDIwNSwgLTEsCisgIC8qIERpYWdTdWJHcm91cDUzOSAqLyA1NDAsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA1NDIgKi8gNjk2LCAyODYsIDUzNywgNTM5LCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNTY0ICovIDE3MywgLTEsCisgIC8qIERpYWdTdWJHcm91cDU3MCAqLyA3OCwgLTEsCisgIC8qIERpYWdTdWJHcm91cDU3NSAqLyA1NzYsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA1NzkgKi8gNTgwLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNTgxICovIDU4MywgNTgyLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNTg3ICovIDcwNywgLTEsCisgIC8qIERpYWdTdWJHcm91cDU4OSAqLyA1OTMsIDU5NCwgLTEsCisgIC8qIERpYWdTdWJHcm91cDU5MCAqLyA1ODksIDU5MiwgNTk1LCA1OTEsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA1OTIgKi8gNTkzLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNjE2ICovIDI3MywgLTEsCisgIC8qIERpYWdTdWJHcm91cDY0MyAqLyA2MTAsIDE5OCwgNDQ5LCAzNjgsIDY0MiwgLTEsCisgIC8qIERpYWdTdWJHcm91cDY1MCAqLyA2NTEsIDY1NSwgNjU0LCA2NTcsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA2NTEgKi8gNjUzLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNjUyICovIDY1NiwgNjU5LCA2NTgsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA2NjEgKi8gNjYzLCA2NjIsIDY2NiwgNjY3LCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNjg1ICovIDUzNiwgLTEsCisgIC8qIERpYWdTdWJHcm91cDY4NiAqLyA2ODcsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA2OTIgKi8gNjEyLCA2MjAsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA2OTkgKi8gMTExLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNzAyICovIDcwNSwgLTEsCisgIC8qIERpYWdTdWJHcm91cDcwMyAqLyA3MDIsIDcwNCwgNzA2LCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNzE4ICovIDcxOSwgNzI0LCA3MjYsIDczMywgNzI3LCA3MjgsIDczNywgNzM4LCA3MzQsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA3MjQgKi8gNzAwLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNzI5ICovIDcyOCwgLTEsCisgIC8qIERpYWdTdWJHcm91cDczMSAqLyA3MDEsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA3MzYgKi8gNzAwLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNzM3ICovIDcyMSwgNzM1LCA2ODUsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA3MzggKi8gNzIyLCAtMSwKKyAgLyogRGlhZ1N1Ykdyb3VwNzQ3ICovIDc0NiwgLTEsCisgIC8qIERpYWdTdWJHcm91cDc1NiAqLyAxNzUsIC0xLAorICAvKiBEaWFnU3ViR3JvdXA3NTcgKi8gNzU2LCAtMSwKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyIERpYWdHcm91cE5hbWVzW10gPSB7CkBAIC04MTIsODEgKzgyNiw4NCBAQAogICAgICJvbXBhdC1iaW5hcnktbGl0ZXJhbFwwMzNjKys5OC1jKysxMS1jb21wYXQtcGVkYW50aWNcMDE0YysrOTgtY29tcGF0I2MrKyIKICAgICAiOTgtY29tcGF0LWJpbmQtdG8tdGVtcG9yYXJ5LWNvcHlcMDI3YysrOTgtY29tcGF0LWV4dHJhLXNlbWklYysrOTgtY29tcGEiCiAgICAgInQtbG9jYWwtdHlwZS10ZW1wbGF0ZS1hcmdzXDAyNWMrKzk4LWNvbXBhdC1wZWRhbnRpYydjKys5OC1jb21wYXQtdW5uYW1lIgotICAgICJkLXR5cGUtdGVtcGxhdGUtYXJnc1wwMTZjMTEtZXh0ZW5zaW9uc1xuYzk5LWNvbXBhdFwwMTZjOTktZXh0ZW5zaW9uc1xuYyIKLSAgICAiYXN0LWFsaWduXDAyN2Nhc3QtY2FsbGluZy1jb252ZW50aW9uXDAyMGNhc3Qtb2Ytc2VsLXR5cGVcdGNhc3QtcXVhbFwwMjMiCi0gICAgImNhc3QtcXVhbC11bnJlbGF0ZWRcbmNoYXItYWxpZ25cMDE3Y2hhci1zdWJzY3JpcHRzXDAxNGNsYW5nLWNsLXBjaFwwMTVjIgotICAgICJsYXNzLXZhcmFyZ3NcMDA1Y29tbWFcMDA3Y29tbWVudFwwMTBjb21tZW50c1wwMzZjb21wYXJlLWRpc3RpbmN0LXBvaW50ZSIKLSAgICAici10eXBlc1wwMjZjb21wbGV4LWNvbXBvbmVudC1pbml0XDAzMWNvbmRpdGlvbmFsLXR5cGUtbWlzbWF0Y2hcMDMxY29uZGkiCi0gICAgInRpb25hbC11bmluaXRpYWxpemVkXDAxNWNvbmZpZy1tYWNyb3NcMDIzY29uc3RhbnQtY29udmVyc2lvblwwMzBjb25zdGFuIgotICAgICJ0LWxvZ2ljYWwtb3BlcmFuZFwwMjNjb25zdGV4cHItbm90LWNvbnN0XDAxMGNvbnN1bWVkXG5jb252ZXJzaW9uXDAxN2NvbiIKLSAgICAidmVyc2lvbi1udWxsXHRjb3JvdXRpbmUlY29yb3V0aW5lLW1pc3NpbmctdW5oYW5kbGVkLWV4Y2VwdGlvblwwMjZjb3ZlcmUiCi0gICAgImQtc3dpdGNoLWRlZmF1bHRcMDAzY3BwXDAzMGNzdHJpbmctZm9ybWF0LWRpcmVjdGl2ZVwwMjFjdG9yLWR0b3ItcHJpdmFjIgotICAgICJ5XDAxM2N1ZGEtY29tcGF0XDAzMGN1c3RvbS1hdG9taWMtcHJvcGVydGllc1wwMTBkYW5nbGluZ1wwMTVkYW5nbGluZy1lbCIKLSAgICAic2VcMDE2ZGFuZ2xpbmctZmllbGRcMDMxZGFuZ2xpbmctaW5pdGlhbGl6ZXItbGlzdFx0ZGF0ZS10aW1lXDAyM2RlYWxsb2MiCi0gICAgIi1pbi1jYXRlZ29yeVwwMzVkZWJ1Zy1jb21wcmVzc2lvbi11bmF2YWlsYWJsZVwwMzNkZWNsYXJhdGlvbi1hZnRlci1zdGF0IgotICAgICJlbWVudFwwMzJkZWZhdWx0ZWQtZnVuY3Rpb24tZGVsZXRlZFwwMjZkZWxlZ2F0aW5nLWN0b3ItY3ljbGVzXDAyMWRlbGV0ZSIKLSAgICAiLWluY29tcGxldGVcMDI3ZGVsZXRlLW5vbi12aXJ0dWFsLWR0b3JcbmRlcHJlY2F0ZWRcMDI1ZGVwcmVjYXRlZC1hdHRyaWIiCi0gICAgInV0ZXNcMDI3ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMhZGVwcmVjYXRlZC1keW5hbWljLWV4Y2VwdGlvbi1zcGVjXDAzMmRlIgotICAgICJwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnNcMDMxZGVwcmVjYXRlZC1pbmNyZW1lbnQtYm9vbFwwMzFkZXByZWNhdGVkLW9iaiIKLSAgICAiYy1pc2EtdXNhZ2UlZGVwcmVjYXRlZC1vYmpjLXBvaW50ZXItaW50cm9zcGVjdGlvbjVkZXByZWNhdGVkLW9iamMtcG9pbnQiCi0gICAgImVyLWludHJvc3BlY3Rpb24tcGVyZm9ybVNlbGVjdG9yXDAyM2RlcHJlY2F0ZWQtcmVnaXN0ZXJcMDI3ZGVwcmVjYXRlZC10IgotICAgICJoaXMtY2FwdHVyZVwwMzNkZXByZWNhdGVkLXdyaXRhYmxlLXN0cmluZ3NcMDIyZGlyZWN0LWl2YXItYWNjZXNzXDAzMGRpcyIKLSAgICAiYWJsZWQtbWFjcm8tZXhwYW5zaW9uXDAyNWRpc2FibGVkLW9wdGltaXphdGlvblwwMTRkaXNjYXJkLXF1YWxcMDM0ZGlzdHIiCi0gICAgImlidXRlZC1vYmplY3QtbW9kaWZpZXJzXDAxM2Rpdi1ieS16ZXJvXDAyMGRpdmlzaW9uLWJ5LXplcm9cMDM2ZGxsLWF0dHJpIgotICAgICJidXRlLW9uLXJlZGVjbGFyYXRpb24lZGxsZXhwb3J0LWV4cGxpY2l0LWluc3RhbnRpYXRpb24tZGVjbFwwMzJkbGxpbXBvciIKLSAgICAidC1zdGF0aWMtZmllbGQtZGVmXDAxNWRvY3VtZW50YXRpb25cMDM1ZG9jdW1lbnRhdGlvbi1kZXByZWNhdGVkLXN5bmNcMDIyIgotICAgICJkb2N1bWVudGF0aW9uLWh0bWxcMDI2ZG9jdW1lbnRhdGlvbi1wZWRhbnRpY1wwMzVkb2N1bWVudGF0aW9uLXVua25vd24tYyIKLSAgICAib21tYW5kXDAzNmRvbGxhci1pbi1pZGVudGlmaWVyLWV4dGVuc2lvblwwMjBkb3VibGUtcHJvbW90aW9uXDAzMGR1cGxpY2EiCi0gICAgInRlLWRlY2wtc3BlY2lmaWVyXDAxNmR1cGxpY2F0ZS1lbnVtXDAyNGR1cGxpY2F0ZS1tZXRob2QtYXJnXDAyNmR1cGxpY2F0IgotICAgICJlLW1ldGhvZC1tYXRjaFwwMjJkdXBsaWNhdGUtcHJvdG9jb2xcMDI3ZHluYW1pYy1jbGFzcy1tZW1hY2Nlc3NcMDI2ZHluYSIKLSAgICAibWljLWV4Y2VwdGlvbi1zcGVjXDAwNmVmZmMrK1wwMjJlbWJlZGRlZC1kaXJlY3RpdmVcbmVtcHR5LWJvZHlcMDIzZW1wdHkiCi0gICAgIi1kZWNvbXBvc2l0aW9uXDAyNmVtcHR5LXRyYW5zbGF0aW9uLXVuaXRcMDEzZW5jb2RlLXR5cGVcMDE0ZW5kaWYtbGFiZWxzIgotICAgICJcMDE0ZW51bS1jb21wYXJlXDAyM2VudW0tY29tcGFyZS1zd2l0Y2hcMDE3ZW51bS1jb252ZXJzaW9uXDAxNmVudW0tdG9vLSIKLSAgICAibGFyZ2VcbmV4Y2VwdGlvbnNcMDI1ZXhpdC10aW1lLWRlc3RydWN0b3JzXDAyNGV4cGFuc2lvbi10by1kZWZpbmVkXDAyMWUiCi0gICAgInhwZXJpbWVudGFsLWlzZWxcMDMwZXhwbGljaXQtaW5pdGlhbGl6ZS1jYWxsXDAyN2V4cGxpY2l0LW93bmVyc2hpcC10eXBlIgotICAgICJcMDE3ZXh0ZXJuLWMtY29tcGF0XDAyMmV4dGVybi1pbml0aWFsaXplclwwMDVleHRyYVwwMjNleHRyYS1xdWFsaWZpY2F0aSIKLSAgICAib25cbmV4dHJhLXNlbWlcMDE0ZXh0cmEtdG9rZW5zXDAxMGZhbGxiYWNrXDAyNGZpeGVkLWVudW0tZXh0ZW5zaW9uXHRmbGEiCi0gICAgImctZW51bVwwMzFmbGV4aWJsZS1hcnJheS1leHRlbnNpb25zXDAyMGZsb2F0LWNvbnZlcnNpb25cMDEzZmxvYXQtZXF1YWxcMDMxIgotICAgICJmbG9hdC1vdmVyZmxvdy1jb252ZXJzaW9uXDAyNWZsb2F0LXplcm8tY29udmVyc2lvblwwMjFmb3ItbG9vcC1hbmFseXNpcyIKLSAgICAiXDAwNmZvcm1hdFwwMjFmb3JtYXQtZXh0cmEtYXJnc1wwMzBmb3JtYXQtaW52YWxpZC1zcGVjaWZpZXJcMDE2Zm9ybWF0LW4iCi0gICAgIm9uLWlzb1wwMjFmb3JtYXQtbm9ubGl0ZXJhbFwwMTdmb3JtYXQtcGVkYW50aWNcMDE3Zm9ybWF0LXNlY3VyaXR5XG5mb3JtIgotICAgICJhdC15MmtcMDIyZm9ybWF0LXplcm8tbGVuZ3RoXDAxMGZvcm1hdD0yXDAyM2ZvdXItY2hhci1jb25zdGFudHNcMDIyZnJhbSIKLSAgICAiZS1sYXJnZXItdGhhbj0lZnJhbWV3b3JrLWluY2x1ZGUtcHJpdmF0ZS1mcm9tLXB1YmxpY1wwMzZmdW5jdGlvbi1kZWYtaW4iCi0gICAgIi1vYmpjLWNvbnRhaW5lclwwMjVmdW5jdGlvbi1tdWx0aXZlcnNpb25cMDE1ZnV0dXJlLWNvbXBhdFxuZ2NjLWNvbXBhdFwwMjMiCi0gICAgImdsb2JhbC1jb25zdHJ1Y3RvcnNcMDAzZ251XDAyNmdudS1hbGlnbm9mLWV4cHJlc3Npb25cMDI0Z251LWFub255bW91cy1zIgotICAgICJ0cnVjdFwwMzNnbnUtYXJyYXktbWVtYmVyLXBhcmVuLWluaXRcMDE1Z251LWF1dG8tdHlwZVwwMjJnbnUtYmluYXJ5LWxpdCIKLSAgICAiZXJhbFwwMTZnbnUtY2FzZS1yYW5nZVwwMjNnbnUtY29tcGxleC1pbnRlZ2VyIGdudS1jb21wb3VuZC1saXRlcmFsLWluaXQiCi0gICAgImlhbGl6ZXJcMDM3Z251LWNvbmRpdGlvbmFsLW9taXR0ZWQtb3BlcmFuZFwwMTZnbnUtZGVzaWduYXRvclwwMjVnbnUtZW1wIgotICAgICJ0eS1pbml0aWFsaXplclwwMjBnbnUtZW1wdHktc3RydWN0XDAzNmdudS1mbGV4aWJsZS1hcnJheS1pbml0aWFsaXplclwwMzciCi0gICAgImdudS1mbGV4aWJsZS1hcnJheS11bmlvbi1tZW1iZXJcMDI0Z251LWZvbGRpbmctY29uc3RhbnRcMDI2Z251LWltYWdpbmFyIgotICAgICJ5LWNvbnN0YW50XDAyMGdudS1pbmNsdWRlLW5leHRcMDIyZ251LWxhYmVsLWFzLXZhbHVlXDAyM2dudS1yZWRlY2xhcmVkLSIKLSAgICAiZW51bVwwMzBnbnUtc3RhdGVtZW50LWV4cHJlc3Npb25cMDI1Z251LXN0YXRpYy1mbG9hdC1pbml0JGdudS1zdHJpbmctbGkiCi0gICAgInRlcmFsLW9wZXJhdG9yLXRlbXBsYXRlXDAxNmdudS11bmlvbi1jYXN0XCJnbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtIgotICAgICJhdC1lbmRcMDI3Z251LXplcm8tbGluZS1kaXJlY3RpdmUhZ251LXplcm8tdmFyaWFkaWMtbWFjcm8tYXJndW1lbnRzXDAxNCIKLSAgICAiaGVhZGVyLWd1YXJkXDAxNmhlYWRlci1oeWdpZW5lXDAyNWlkaW9tYXRpYy1wYXJlbnRoZXNlc1wwMjJpZ25vcmVkLWF0dHIiCi0gICAgImlidXRlc1wwMzVpZ25vcmVkLW9wdGltaXphdGlvbi1hcmd1bWVudFwwMzBpZ25vcmVkLXByYWdtYS1pbnRyaW5zaWNcMDI3IgotICAgICJpZ25vcmVkLXByYWdtYS1vcHRpbWl6ZVwwMTdpZ25vcmVkLXByYWdtYXNcMDIyaWdub3JlZC1xdWFsaWZpZXJzXDAxMGltcCIKLSAgICAibGljaXRcMDMyaW1wbGljaXQtYXRvbWljLXByb3BlcnRpZXMqaW1wbGljaXQtY29udmVyc2lvbi1mbG9hdGluZy1wb2ludC0iCi0gICAgInRvLWJvb2wgaW1wbGljaXQtZXhjZXB0aW9uLXNwZWMtbWlzbWF0Y2hcMDI0aW1wbGljaXQtZmFsbHRocm91Z2ghaW1wbGljIgotICAgICJpdC1mYWxsdGhyb3VnaC1wZXItZnVuY3Rpb25cMDMxaW1wbGljaXQtZmxvYXQtY29udmVyc2lvblwwMzVpbXBsaWNpdC1mdSIKLSAgICAibmN0aW9uLWRlY2xhcmF0aW9uXDAxNGltcGxpY2l0LWludFwwMjdpbXBsaWNpdC1pbnQtY29udmVyc2lvblwwMjRpbXBsaWMiCi0gICAgIml0LXJldGFpbi1zZWxmXDAzM2ltcGxpY2l0bHktdW5zaWduZWQtbGl0ZXJhbFwwMDZpbXBvcnQmaW1wb3J0LXByZXByb2NlIgotICAgICJzc29yLWRpcmVjdGl2ZS1wZWRhbnRpY1wwMjFpbmFjY2Vzc2libGUtYmFzZVwwMzJpbmNsdWRlLW5leHQtYWJzb2x1dGUtcCIKLSAgICAiYXRoXDAzM2luY2x1ZGUtbmV4dC1vdXRzaWRlLWhlYWRlclwwMzNpbmNvbXBhdGlibGUtZXhjZXB0aW9uLXNwZWMjaW5jb20iCi0gICAgInBhdGlibGUtZnVuY3Rpb24tcG9pbnRlci10eXBlc1wiaW5jb21wYXRpYmxlLWxpYnJhcnktcmVkZWNsYXJhdGlvblwwMjZpIgotICAgICJuY29tcGF0aWJsZS1tcy1zdHJ1Y3RcMDMyaW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMuaW5jb21wYXRpYmxlLXBvaW50ZSIKLSAgICAici10eXBlcy1kaXNjYXJkcy1xdWFsaWZpZXJzXDAzMmluY29tcGF0aWJsZS1wcm9wZXJ0eS10eXBlXDAyNGluY29tcGF0aWIiCi0gICAgImxlLXN5c3Jvb3QnaW5jb21wbGV0ZS1mcmFtZXdvcmstbW9kdWxlLWRlY2xhcmF0aW9uXDAzMWluY29tcGxldGUtaW1wbGVtIgotICAgICJlbnRhdGlvblwwMjFpbmNvbXBsZXRlLW1vZHVsZVwwMjNpbmNvbXBsZXRlLXVtYnJlbGxhXDAyNmluY29uc2lzdGVudC1kbCIKLSAgICAibGltcG9ydChpbmNvbnNpc3RlbnQtbWlzc2luZy1kZXN0cnVjdG9yLW92ZXJyaWRlXDAzNWluY29uc2lzdGVudC1taXNzaW4iCi0gICAgImctb3ZlcnJpZGVcMDE2aW5jcmVtZW50LWJvb2xcMDIyaW5maW5pdGUtcmVjdXJzaW9uXHRpbml0LXNlbGZcMDI1aW5pdGlhIgotICAgICJsaXplci1vdmVycmlkZXNcMDIzaW5qZWN0ZWQtY2xhc3MtbmFtZVwwMDZpbmxpbmVcbmlubGluZS1hc21cMDIxaW5saW5lLSIKLSAgICAibmV3LWRlbGV0ZVwiaW5zdGFudGlhdGlvbi1hZnRlci1zcGVjaWFsaXphdGlvblwwMTZpbnQtY29udmVyc2lvblwwMTdpbnQiCi0gICAgIi1jb252ZXJzaW9uc1wwMjNpbnQtdG8tcG9pbnRlci1jYXN0XDAzMGludC10by12b2lkLXBvaW50ZXItY2FzdFwwMjBpbnRlIgotICAgICJnZXItb3ZlcmZsb3dcMDM1aW52YWxpZC1jb21tYW5kLWxpbmUtYXJndW1lbnRcMDIxaW52YWxpZC1jb25zdGV4cHJcMDIwaSIKLSAgICAibnZhbGlkLWlib3V0bGV0JmludmFsaWQtaW5pdGlhbGl6ZXItZnJvbS1zeXN0ZW0taGVhZGVyXDAzNWludmFsaWQtaW9zLWQiCi0gICAgImVwbG95bWVudC10YXJnZXRcMDIwaW52YWxpZC1ub3JldHVyblwwMjBpbnZhbGlkLW9mZnNldG9mIGludmFsaWQtb3Itbm9uIgotICAgICJleGlzdGVudC1kaXJlY3RvcnlcMDM2aW52YWxpZC1wYXJ0aWFsLXNwZWNpYWxpemF0aW9uXDAxM2ludmFsaWQtcGNoXDAyMCIKKyAgICAiZC10eXBlLXRlbXBsYXRlLWFyZ3NcMDE2YzExLWV4dGVuc2lvbnNcbmM5OS1jb21wYXRcMDE2Yzk5LWV4dGVuc2lvbnMjY2EiCisgICAgImxsLXRvLXB1cmUtdmlydHVhbC1mcm9tLWN0b3ItZHRvclxuY2FzdC1hbGlnblwwMjdjYXN0LWNhbGxpbmctY29udmVudGlvIgorICAgICJuXDAyMGNhc3Qtb2Ytc2VsLXR5cGVcdGNhc3QtcXVhbFwwMjNjYXN0LXF1YWwtdW5yZWxhdGVkXG5jaGFyLWFsaWduXDAxNyIKKyAgICAiY2hhci1zdWJzY3JpcHRzXDAxNGNsYW5nLWNsLXBjaFwwMTVjbGFzcy12YXJhcmdzXDAwNWNvbW1hXDAwN2NvbW1lbnRcMDEwIgorICAgICJjb21tZW50c1wwMzZjb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXNcMDI2Y29tcGxleC1jb21wb25lbnQtaW5pdFwwMzEiCisgICAgImNvbmRpdGlvbmFsLXR5cGUtbWlzbWF0Y2hcMDMxY29uZGl0aW9uYWwtdW5pbml0aWFsaXplZFwwMTVjb25maWctbWFjcm9zIgorICAgICJcMDIzY29uc3RhbnQtY29udmVyc2lvblwwMzBjb25zdGFudC1sb2dpY2FsLW9wZXJhbmRcMDIzY29uc3RleHByLW5vdC1jbyIKKyAgICAibnN0XDAxMGNvbnN1bWVkXG5jb252ZXJzaW9uXDAxN2NvbnZlcnNpb24tbnVsbFx0Y29yb3V0aW5lJWNvcm91dGluZS1taXMiCisgICAgInNpbmctdW5oYW5kbGVkLWV4Y2VwdGlvblwwMjZjb3ZlcmVkLXN3aXRjaC1kZWZhdWx0XDAwM2NwcFwwMzBjc3RyaW5nLWZvIgorICAgICJybWF0LWRpcmVjdGl2ZVwwMjZjdGFkLW1heWJlLXVuc3VwcG9ydGVkXDAyMWN0b3ItZHRvci1wcml2YWN5XDAwM2N0dVwwMTMiCisgICAgImN1ZGEtY29tcGF0XDAzMGN1c3RvbS1hdG9taWMtcHJvcGVydGllc1wwMTBkYW5nbGluZ1wwMTVkYW5nbGluZy1lbHNlXDAxNiIKKyAgICAiZGFuZ2xpbmctZmllbGRcMDMxZGFuZ2xpbmctaW5pdGlhbGl6ZXItbGlzdFwwMjNkYXJ3aW4tc2RrLXNldHRpbmdzXHRkYXQiCisgICAgImUtdGltZVwwMjNkZWFsbG9jLWluLWNhdGVnb3J5XDAzNWRlYnVnLWNvbXByZXNzaW9uLXVuYXZhaWxhYmxlXDAzM2RlY2xhIgorICAgICJyYXRpb24tYWZ0ZXItc3RhdGVtZW50XDAzMmRlZmF1bHRlZC1mdW5jdGlvbi1kZWxldGVkXDAyNmRlbGVnYXRpbmctY3RvciIKKyAgICAiLWN5Y2xlcyBkZWxldGUtYWJzdHJhY3Qtbm9uLXZpcnR1YWwtZHRvclwwMjFkZWxldGUtaW5jb21wbGV0ZSRkZWxldGUtbm8iCisgICAgIm4tYWJzdHJhY3Qtbm9uLXZpcnR1YWwtZHRvclwwMjdkZWxldGUtbm9uLXZpcnR1YWwtZHRvclxuZGVwcmVjYXRlZFwwMjVkIgorICAgICJlcHJlY2F0ZWQtYXR0cmlidXRlc1wwMjdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyFkZXByZWNhdGVkLWR5bmFtaWMtZXhjZSIKKyAgICAicHRpb24tc3BlY1wwMzJkZXByZWNhdGVkLWltcGxlbWVudGF0aW9uc1wwMzFkZXByZWNhdGVkLWluY3JlbWVudC1ib29sXDAzMSIKKyAgICAiZGVwcmVjYXRlZC1vYmpjLWlzYS11c2FnZSVkZXByZWNhdGVkLW9iamMtcG9pbnRlci1pbnRyb3NwZWN0aW9uNWRlcHJlY2EiCisgICAgInRlZC1vYmpjLXBvaW50ZXItaW50cm9zcGVjdGlvbi1wZXJmb3JtU2VsZWN0b3JcMDIzZGVwcmVjYXRlZC1yZWdpc3RlclwwMjciCisgICAgImRlcHJlY2F0ZWQtdGhpcy1jYXB0dXJlXDAzM2RlcHJlY2F0ZWQtd3JpdGFibGUtc3RyaW5nc1wwMjJkaXJlY3QtaXZhci1hIgorICAgICJjY2Vzc1wwMzBkaXNhYmxlZC1tYWNyby1leHBhbnNpb25cMDI1ZGlzYWJsZWQtb3B0aW1pemF0aW9uXDAxNGRpc2NhcmQtcSIKKyAgICAidWFsXDAzNGRpc3RyaWJ1dGVkLW9iamVjdC1tb2RpZmllcnNcMDEzZGl2LWJ5LXplcm9cMDIwZGl2aXNpb24tYnktemVyb1wwMzYiCisgICAgImRsbC1hdHRyaWJ1dGUtb24tcmVkZWNsYXJhdGlvbiVkbGxleHBvcnQtZXhwbGljaXQtaW5zdGFudGlhdGlvbi1kZWNsXDAzMiIKKyAgICAiZGxsaW1wb3J0LXN0YXRpYy1maWVsZC1kZWZcMDE1ZG9jdW1lbnRhdGlvblwwMzVkb2N1bWVudGF0aW9uLWRlcHJlY2F0ZWQiCisgICAgIi1zeW5jXDAyMmRvY3VtZW50YXRpb24taHRtbFwwMjZkb2N1bWVudGF0aW9uLXBlZGFudGljXDAzNWRvY3VtZW50YXRpb24tIgorICAgICJ1bmtub3duLWNvbW1hbmRcMDM2ZG9sbGFyLWluLWlkZW50aWZpZXItZXh0ZW5zaW9uXDAyMGRvdWJsZS1wcm9tb3Rpb25cMDMwIgorICAgICJkdXBsaWNhdGUtZGVjbC1zcGVjaWZpZXJcMDE2ZHVwbGljYXRlLWVudW1cMDI0ZHVwbGljYXRlLW1ldGhvZC1hcmdcMDI2ZCIKKyAgICAidXBsaWNhdGUtbWV0aG9kLW1hdGNoXDAyMmR1cGxpY2F0ZS1wcm90b2NvbFwwMjdkeW5hbWljLWNsYXNzLW1lbWFjY2Vzc1wwMjYiCisgICAgImR5bmFtaWMtZXhjZXB0aW9uLXNwZWNcMDA2ZWZmYysrXDAyMmVtYmVkZGVkLWRpcmVjdGl2ZVxuZW1wdHktYm9keVwwMjNlIgorICAgICJtcHR5LWRlY29tcG9zaXRpb25cMDE3ZW1wdHktaW5pdC1zdG10XDAyNmVtcHR5LXRyYW5zbGF0aW9uLXVuaXRcMDEzZW5jbyIKKyAgICAiZGUtdHlwZVwwMTRlbmRpZi1sYWJlbHNcMDE0ZW51bS1jb21wYXJlXDAyM2VudW0tY29tcGFyZS1zd2l0Y2hcMDE3ZW51bS0iCisgICAgImNvbnZlcnNpb25cMDE2ZW51bS10b28tbGFyZ2VcbmV4Y2VwdGlvbnNcMDI1ZXhpdC10aW1lLWRlc3RydWN0b3JzXDAyNGV4IgorICAgICJwYW5zaW9uLXRvLWRlZmluZWRcMDIxZXhwZXJpbWVudGFsLWlzZWxcMDMwZXhwbGljaXQtaW5pdGlhbGl6ZS1jYWxsXDAyNyIKKyAgICAiZXhwbGljaXQtb3duZXJzaGlwLXR5cGVcMDE3ZXh0ZXJuLWMtY29tcGF0XDAyMmV4dGVybi1pbml0aWFsaXplclwwMDVleHQiCisgICAgInJhXDAyM2V4dHJhLXF1YWxpZmljYXRpb25cbmV4dHJhLXNlbWlcMDE3ZXh0cmEtc2VtaS1zdG10XDAxNGV4dHJhLXRva2VuIgorICAgICJzXDAxMGZhbGxiYWNrXDAyNGZpeGVkLWVudW0tZXh0ZW5zaW9uXHRmbGFnLWVudW1cMDMxZmxleGlibGUtYXJyYXktZXh0ZSIKKyAgICAibnNpb25zXDAyMGZsb2F0LWNvbnZlcnNpb25cMDEzZmxvYXQtZXF1YWxcMDMxZmxvYXQtb3ZlcmZsb3ctY29udmVyc2lvblwwMjUiCisgICAgImZsb2F0LXplcm8tY29udmVyc2lvblwwMjFmb3ItbG9vcC1hbmFseXNpc1wwMDZmb3JtYXRcMDIxZm9ybWF0LWV4dHJhLWFyIgorICAgICJnc1wwMzBmb3JtYXQtaW52YWxpZC1zcGVjaWZpZXJcMDE2Zm9ybWF0LW5vbi1pc29cMDIxZm9ybWF0LW5vbmxpdGVyYWxcMDE3IgorICAgICJmb3JtYXQtcGVkYW50aWNcMDE3Zm9ybWF0LXNlY3VyaXR5XG5mb3JtYXQteTJrXDAyMmZvcm1hdC16ZXJvLWxlbmd0aFwwMTAiCisgICAgImZvcm1hdD0yXDAyM2ZvdXItY2hhci1jb25zdGFudHNcMDIyZnJhbWUtbGFyZ2VyLXRoYW49JWZyYW1ld29yay1pbmNsdWRlIgorICAgICItcHJpdmF0ZS1mcm9tLXB1YmxpY1wwMzZmdW5jdGlvbi1kZWYtaW4tb2JqYy1jb250YWluZXJcMDI1ZnVuY3Rpb24tbXVsdCIKKyAgICAiaXZlcnNpb25cMDE1ZnV0dXJlLWNvbXBhdFxuZ2NjLWNvbXBhdFwwMjNnbG9iYWwtY29uc3RydWN0b3JzXDAwM2dudVwwMjYiCisgICAgImdudS1hbGlnbm9mLWV4cHJlc3Npb25cMDI0Z251LWFub255bW91cy1zdHJ1Y3RcMDMzZ251LWFycmF5LW1lbWJlci1wYXJlIgorICAgICJuLWluaXRcMDE1Z251LWF1dG8tdHlwZVwwMjJnbnUtYmluYXJ5LWxpdGVyYWxcMDE2Z251LWNhc2UtcmFuZ2VcMDIzZ251LSIKKyAgICAiY29tcGxleC1pbnRlZ2VyIGdudS1jb21wb3VuZC1saXRlcmFsLWluaXRpYWxpemVyXDAzN2dudS1jb25kaXRpb25hbC1vbWkiCisgICAgInR0ZWQtb3BlcmFuZFwwMTZnbnUtZGVzaWduYXRvclwwMjVnbnUtZW1wdHktaW5pdGlhbGl6ZXJcMDIwZ251LWVtcHR5LXN0IgorICAgICJydWN0XDAzNmdudS1mbGV4aWJsZS1hcnJheS1pbml0aWFsaXplclwwMzdnbnUtZmxleGlibGUtYXJyYXktdW5pb24tbWVtYiIKKyAgICAiZXJcMDI0Z251LWZvbGRpbmctY29uc3RhbnRcMDI2Z251LWltYWdpbmFyeS1jb25zdGFudFwwMjBnbnUtaW5jbHVkZS1uZXgiCisgICAgInRcMDIyZ251LWxhYmVsLWFzLXZhbHVlXDAyM2dudS1yZWRlY2xhcmVkLWVudW1cMDMwZ251LXN0YXRlbWVudC1leHByZXNzIgorICAgICJpb25cMDI1Z251LXN0YXRpYy1mbG9hdC1pbml0JGdudS1zdHJpbmctbGl0ZXJhbC1vcGVyYXRvci10ZW1wbGF0ZVwwMTZnbiIKKyAgICAidS11bmlvbi1jYXN0XCJnbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtYXQtZW5kXDAyN2dudS16ZXJvLWxpbmUtZGlyZWMiCisgICAgInRpdmUhZ251LXplcm8tdmFyaWFkaWMtbWFjcm8tYXJndW1lbnRzXDAxNGhlYWRlci1ndWFyZFwwMTZoZWFkZXItaHlnaWVuIgorICAgICJlXDAyNWlkaW9tYXRpYy1wYXJlbnRoZXNlc1wwMjJpZ25vcmVkLWF0dHJpYnV0ZXNcMDM1aWdub3JlZC1vcHRpbWl6YXRpbyIKKyAgICAibi1hcmd1bWVudFwwMzBpZ25vcmVkLXByYWdtYS1pbnRyaW5zaWNcMDI3aWdub3JlZC1wcmFnbWEtb3B0aW1pemVcMDE3aWciCisgICAgIm5vcmVkLXByYWdtYXNcMDIyaWdub3JlZC1xdWFsaWZpZXJzXDAxMGltcGxpY2l0XDAzMmltcGxpY2l0LWF0b21pYy1wcm9wIgorICAgICJlcnRpZXMqaW1wbGljaXQtY29udmVyc2lvbi1mbG9hdGluZy1wb2ludC10by1ib29sIGltcGxpY2l0LWV4Y2VwdGlvbi1zcCIKKyAgICAiZWMtbWlzbWF0Y2hcMDI0aW1wbGljaXQtZmFsbHRocm91Z2ghaW1wbGljaXQtZmFsbHRocm91Z2gtcGVyLWZ1bmN0aW9uXDAzNyIKKyAgICAiaW1wbGljaXQtZml4ZWQtcG9pbnQtY29udmVyc2lvblwwMzFpbXBsaWNpdC1mbG9hdC1jb252ZXJzaW9uXDAzNWltcGxpY2kiCisgICAgInQtZnVuY3Rpb24tZGVjbGFyYXRpb25cMDE0aW1wbGljaXQtaW50XDAyN2ltcGxpY2l0LWludC1jb252ZXJzaW9uXDAyNGltIgorICAgICJwbGljaXQtcmV0YWluLXNlbGZcMDMzaW1wbGljaXRseS11bnNpZ25lZC1saXRlcmFsXDAwNmltcG9ydCZpbXBvcnQtcHJlcCIKKyAgICAicm9jZXNzb3ItZGlyZWN0aXZlLXBlZGFudGljXDAyMWluYWNjZXNzaWJsZS1iYXNlXDAzMmluY2x1ZGUtbmV4dC1hYnNvbHUiCisgICAgInRlLXBhdGhcMDMzaW5jbHVkZS1uZXh0LW91dHNpZGUtaGVhZGVyXDAzM2luY29tcGF0aWJsZS1leGNlcHRpb24tc3BlYyNpIgorICAgICJuY29tcGF0aWJsZS1mdW5jdGlvbi1wb2ludGVyLXR5cGVzXCJpbmNvbXBhdGlibGUtbGlicmFyeS1yZWRlY2xhcmF0aW9uXDAyNiIKKyAgICAiaW5jb21wYXRpYmxlLW1zLXN0cnVjdFwwMzJpbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcy5pbmNvbXBhdGlibGUtcG9pbnQiCisgICAgImVyLXR5cGVzLWRpc2NhcmRzLXF1YWxpZmllcnNcMDMyaW5jb21wYXRpYmxlLXByb3BlcnR5LXR5cGVcMDI0aW5jb21wYXRpIgorICAgICJibGUtc3lzcm9vdCdpbmNvbXBsZXRlLWZyYW1ld29yay1tb2R1bGUtZGVjbGFyYXRpb25cMDMxaW5jb21wbGV0ZS1pbXBsZSIKKyAgICAibWVudGF0aW9uXDAyMWluY29tcGxldGUtbW9kdWxlXDAyM2luY29tcGxldGUtdW1icmVsbGFcMDI2aW5jb25zaXN0ZW50LWQiCisgICAgImxsaW1wb3J0KGluY29uc2lzdGVudC1taXNzaW5nLWRlc3RydWN0b3Itb3ZlcnJpZGVcMDM1aW5jb25zaXN0ZW50LW1pc3NpIgorICAgICJuZy1vdmVycmlkZVwwMTZpbmNyZW1lbnQtYm9vbFwwMjJpbmZpbml0ZS1yZWN1cnNpb25cdGluaXQtc2VsZlwwMjVpbml0aSIKKyAgICAiYWxpemVyLW92ZXJyaWRlc1wwMjNpbmplY3RlZC1jbGFzcy1uYW1lXDAwNmlubGluZVxuaW5saW5lLWFzbVwwMjFpbmxpbmUiCisgICAgIi1uZXctZGVsZXRlXCJpbnN0YW50aWF0aW9uLWFmdGVyLXNwZWNpYWxpemF0aW9uXDAxNmludC1jb252ZXJzaW9uXDAxN2luIgorICAgICJ0LWNvbnZlcnNpb25zXDAyM2ludC10by1wb2ludGVyLWNhc3RcMDMwaW50LXRvLXZvaWQtcG9pbnRlci1jYXN0XDAyMGludCIKKyAgICAiZWdlci1vdmVyZmxvd1wwMzVpbnZhbGlkLWNvbW1hbmQtbGluZS1hcmd1bWVudFwwMjFpbnZhbGlkLWNvbnN0ZXhwclwwMjAiCisgICAgImludmFsaWQtaWJvdXRsZXQmaW52YWxpZC1pbml0aWFsaXplci1mcm9tLXN5c3RlbS1oZWFkZXJcMDM1aW52YWxpZC1pb3MtIgorICAgICJkZXBsb3ltZW50LXRhcmdldFwwMjBpbnZhbGlkLW5vcmV0dXJuXDAyMGludmFsaWQtb2Zmc2V0b2YgaW52YWxpZC1vci1ubyIKKyAgICAibmV4aXN0ZW50LWRpcmVjdG9yeVwwMzZpbnZhbGlkLXBhcnRpYWwtc3BlY2lhbGl6YXRpb25cMDEzaW52YWxpZC1wY2hcMDIwIgogICAgICJpbnZhbGlkLXBwLXRva2VuXDAyN2ludmFsaWQtc291cmNlLWVuY29kaW5nXDAyM2ludmFsaWQtdG9rZW4tcGFzdGVcMDIwaiIKICAgICAidW1wLXNlaC1maW5hbGx5XDAxNmtleXdvcmQtY29tcGF0XDAxNWtleXdvcmQtbWFjcm9cMDI2a25yLXByb21vdGVkLXBhcmEiCiAgICAgIm1ldGVyXDAzMGxhbmd1YWdlLWV4dGVuc2lvbi10b2tlblwwMjNsYXJnZS1ieS12YWx1ZS1jb3B5XDAwNmxpYmx0b1wwMjJsIgpAQCAtOTE2LDExMyArOTMzLDExNCBAQAogICAgICJtb2R1bGUtaW1wb3J0LWluLWV4dGVybi1jXCJtb2R1bGVzLWFtYmlndW91cy1pbnRlcm5hbC1saW5rYWdlXDAzN21vZHVsZSIKICAgICAicy1pbXBvcnQtbmVzdGVkLXJlZHVuZGFudFwwMDRtb3N0XDAwNG1vdmVcMDE0bXN2Yy1pbmNsdWRlXDAxNm1zdmMtbm90LWYiCiAgICAgIm91bmRcdG11bHRpY2hhclwwMjNtdWx0aXBsZS1tb3ZlLXZiYXNlXHRuYXJyb3dpbmdcMDIxbmVzdGVkLWFub24tdHlwZXNcMDE2IgotICAgICJuZXN0ZWQtZXh0ZXJuc1wwMjBuZXctcmV0dXJucy1udWxsXDAxM25ld2xpbmUtZW9mXDAxNW5vZXhjZXB0LXR5cGVcMDA3biIKLSAgICAib24tZ2NjXDAzM25vbi1saXRlcmFsLW51bGwtY29udmVyc2lvbidub24tbW9kdWxhci1pbmNsdWRlLWluLWZyYW1ld29yay0iCi0gICAgIm1vZHVsZVwwMzVub24tbW9kdWxhci1pbmNsdWRlLWluLW1vZHVsZVwwMTdub24tcG9kLXZhcmFyZ3NcMDIwbm9uLXZpcnR1IgotICAgICJhbC1kdG9yXDAwN25vbm51bGxcMDI1bm9ucG9ydGFibGUtY2ZzdHJpbmdzXDAzMG5vbnBvcnRhYmxlLWluY2x1ZGUtcGF0aCIKLSAgICAiXDAzN25vbnBvcnRhYmxlLXN5c3RlbS1pbmNsdWRlLXBhdGghbm9ucG9ydGFibGUtdmVjdG9yLWluaXRpYWxpemF0aW9uXDAyNCIKLSAgICAibm9udHJpdmlhbC1tZW1hY2Nlc3NcMDIzbnNjb25zdW1lZC1taXNtYXRjaFwwMjJuc3JldHVybnMtbWlzbWF0Y2hcMDE3bnUiCi0gICAgImxsLWFyaXRobWV0aWNcMDE2bnVsbC1jaGFyYWN0ZXJcMDE3bnVsbC1jb252ZXJzaW9uXDAyMG51bGwtZGVyZWZlcmVuY2VcMDI3IgotICAgICJudWxsLXBvaW50ZXItYXJpdGhtZXRpY1wwMTNudWxsYWJpbGl0eVwwMzBudWxsYWJpbGl0eS1jb21wbGV0ZW5lc3NcIm51bCIKLSAgICAibGFiaWxpdHktY29tcGxldGVuZXNzLW9uLWFycmF5c1wwMjRudWxsYWJpbGl0eS1kZWNsc3BlY1wwMjVudWxsYWJpbGl0eS0iCi0gICAgImV4dGVuc2lvbiNudWxsYWJpbGl0eS1pbmZlcnJlZC1vbi1uZXN0ZWQtdHlwZVwwMzZudWxsYWJsZS10by1ub25udWxsLWNvIgotICAgICJudmVyc2lvbitvYmpjLWF1dG9zeW50aGVzaXMtcHJvcGVydHktaXZhci1uYW1lLW1hdGNoXDAyN29iamMtY2lyY3VsYXItYyIKLSAgICAib250YWluZXJcMDE2b2JqYy1jb2NvYS1hcGlcMDM0b2JqYy1kZXNpZ25hdGVkLWluaXRpYWxpemVyc1wwMjNvYmpjLWZsZXgiCi0gICAgImlibGUtYXJyYXlcMDM3b2JqYy1mb3J3YXJkLWNsYXNzLXJlZGVmaW5pdGlvblwwMjRvYmpjLWludGVyZmFjZS1pdmFyc1wwMjQiCi0gICAgIm9iamMtbGl0ZXJhbC1jb21wYXJlXDAyN29iamMtbGl0ZXJhbC1jb252ZXJzaW9uXDAyN29iamMtbWFjcm8tcmVkZWZpbml0IgotICAgICJpb25cMDIxb2JqYy1tZXNzYWdpbmctaWRcMDIyb2JqYy1tZXRob2QtYWNjZXNzXDAzN29iamMtbWlzc2luZy1wcm9wZXJ0eSIKLSAgICAiLXN5bnRoZXNpc1wwMzBvYmpjLW1pc3Npbmctc3VwZXItY2FsbHNcMDMyb2JqYy1tdWx0aXBsZS1tZXRob2QtbmFtZXNcIm8iCi0gICAgImJqYy1ub25jb3B5LXJldGFpbi1ibG9jay1wcm9wZXJ0eVwwMzJvYmpjLW5vbnVuaWZpZWQtZXhjZXB0aW9ucyNvYmpjLXByIgotICAgICJvcGVydHktYXNzaWduLW9uLW9iamVjdC10eXBlXDAzNG9iamMtcHJvcGVydHktaW1wbGVtZW50YXRpb25cMDM3b2JqYy1wciIKLSAgICAib3BlcnR5LWltcGxpY2l0LW1pc21hdGNoKm9iamMtcHJvcGVydHktbWF0Y2hlcy1jb2NvYS1vd25lcnNoaXAtcnVsZVwwMzIiCi0gICAgIm9iamMtcHJvcGVydHktbm8tYXR0cmlidXRlXDAyN29iamMtcHJvcGVydHktc3ludGhlc2lzI29iamMtcHJvdG9jb2wtbWV0IgotICAgICJob2QtaW1wbGVtZW50YXRpb24gb2JqYy1wcm90b2NvbC1wcm9wZXJ0eS1zeW50aGVzaXNcMDMwb2JqYy1wcm90b2NvbC1xdSIKLSAgICAiYWxpZmllcnNcIm9iamMtcmVhZG9ubHktd2l0aC1zZXR0ZXItcHJvcGVydHlcMDI2b2JqYy1yZWR1bmRhbnQtYXBpLXVzZVwwMzIiCi0gICAgIm9iamMtcmVkdW5kYW50LWxpdGVyYWwtdXNlXDAxN29iamMtcm9vdC1jbGFzc1wwMjNvYmpjLXN0cmluZy1jb21wYXJlXDAzMSIKLSAgICAib2JqYy1zdHJpbmctY29uY2F0ZW5hdGlvblwwMzRvYmpjLXVuc2FmZS1wZXJmb3JtLXNlbGVjdG9yXDAwM29kclwwMTZvbGQiCi0gICAgIi1zdHlsZS1jYXN0XDAyNG9sZC1zdHlsZS1kZWZpbml0aW9uXDAyN29wZW5jbC11bnN1cHBvcnRlZC1yZ2JhXDAxNm9wZW5tIgotICAgICJwLWNsYXVzZXNcMDIwb3Blbm1wLWxvb3AtZm9ybVwwMTVvcGVubXAtdGFyZ2V0XDAxNm9wdGlvbi1pZ25vcmVkIW9yZGVyZSIKLSAgICAiZC1jb21wYXJlLWZ1bmN0aW9uLXBvaW50ZXJzXDAyN291dC1vZi1saW5lLWRlY2xhcmF0aW9uXDAyNW91dC1vZi1zY29wZS0iCi0gICAgImZ1bmN0aW9uXDAxNG92ZXItYWxpZ25lZFwwMTBvdmVyZmxvd1wwMjJvdmVybGVuZ3RoLXN0cmluZ3NcMDM3b3ZlcmxvYWRlIgotICAgICJkLXNoaWZ0LW9wLXBhcmVudGhlc2VzXDAyMm92ZXJsb2FkZWQtdmlydHVhbFwwMTdvdmVycmlkZS1tb2R1bGVcMDMyb3ZlciIKLSAgICAicmlkaW5nLW1ldGhvZC1taXNtYXRjaFwwMjNvdmVycmlkaW5nLXQtb3B0aW9uXDAwNnBhY2tlZFwwMDZwYWRkZWRcMDEzcGEiCi0gICAgInJlbnRoZXNlc1wwMjRwYXJlbnRoZXNlcy1lcXVhbGl0eVwwMjRwYXJ0aWFsLWF2YWlsYWJpbGl0eVwwMDRwYXNzXDAxNXBhIgotICAgICJzcy1hbmFseXNpc1wwMTNwYXNzLWZhaWxlZFwwMTNwYXNzLW1pc3NlZFwwMTVwY2gtZGF0ZS10aW1lXDAxMHBlZGFudGljXDAyNiIKLSAgICAicGVkYW50aWMtY29yZS1mZWF0dXJlc1wwMjBwZXNzaW1pemluZy1tb3ZlXDAxNXBvaW50ZXItYXJpdGhcMDI3cG9pbnRlci0iCi0gICAgImJvb2wtY29udmVyc2lvblwwMTRwb2ludGVyLXNpZ25cMDIzcG9pbnRlci10by1pbnQtY2FzdFwwMjVwb2ludGVyLXR5cGUtIgotICAgICJtaXNtYXRjaCBwb3RlbnRpYWxseS1ldmFsdWF0ZWQtZXhwcmVzc2lvblwwMjZwcmFnbWEtY2xhbmctYXR0cmlidXRlXDAzMiIKLSAgICAicHJhZ21hLW9uY2Utb3V0c2lkZS1oZWFkZXJcMDEzcHJhZ21hLXBhY2tcMDM2cHJhZ21hLXBhY2stc3VzcGljaW91cy1pbmMiCi0gICAgImx1ZGUjcHJhZ21hLXN5c3RlbS1oZWFkZXItb3V0c2lkZS1oZWFkZXJcMDA3cHJhZ21hcyZwcmVkZWZpbmVkLWlkZW50aWZpIgotICAgICJlci1vdXRzaWRlLWZ1bmN0aW9uXDAxNnByaXZhdGUtZXh0ZXJuXDAxNnByaXZhdGUtaGVhZGVyXDAxNnByaXZhdGUtbW9kdSIKLSAgICAibGVcMDI1cHJvZmlsZS1pbnN0ci1taXNzaW5nXDAzMXByb2ZpbGUtaW5zdHItb3V0LW9mLWRhdGVcMDMwcHJvZmlsZS1pbnMiCi0gICAgInRyLXVucHJvZmlsZWRcMDMycHJvcGVydHktYWNjZXNzLWRvdC1zeW50YXhcMDMzcHJvcGVydHktYXR0cmlidXRlLW1pc21hIgotICAgICJ0Y2hcMDEwcHJvdG9jb2wlcHJvdG9jb2wtcHJvcGVydHktc3ludGhlc2lzLWFtYmlndWl0eVwwMzJxdWFsaWZpZWQtdm9pZCIKLSAgICAiLXJldHVybi10eXBlXCJxdW90ZWQtaW5jbHVkZS1pbi1mcmFtZXdvcmstaGVhZGVyXDAyM3JhbmdlLWxvb3AtYW5hbHlzaXMiCi0gICAgIlwwMzJyZWFkb25seS1pYm91dGxldC1wcm9wZXJ0eVwwMTVyZWNlaXZlci1leHByXDAyNnJlY2VpdmVyLWZvcndhcmQtY2xhIgotICAgICJzc1wwMjdyZWRlY2xhcmVkLWNsYXNzLW1lbWJlclwwMTdyZWR1bmRhbnQtZGVjbHNcMDE2cmVkdW5kYW50LW1vdmVcMDIwciIKLSAgICAiZWR1bmRhbnQtcGFyZW5zXDAxMHJlZ2lzdGVyXDAyNnJlaW50ZXJwcmV0LWJhc2UtY2xhc3NcMDI1cmVtYXJrLWJhY2tlbmQiCi0gICAgIi1wbHVnaW5cMDA3cmVvcmRlclwwMzByZXF1aXJlcy1zdXBlci1hdHRyaWJ1dGVcMDIxcmVzZXJ2ZWQtaWQtbWFjcm9cMDM1IgotICAgICJyZXNlcnZlZC11c2VyLWRlZmluZWQtbGl0ZXJhbFwwMzFyZXRhaW5lZC1sYW5ndWFnZS1saW5rYWdlXDAyNHJldHVybi1zdCIKLSAgICAiYWNrLWFkZHJlc3NcMDE3cmV0dXJuLXN0ZC1tb3ZlXDAzMHJldHVybi1zdGQtbW92ZS1pbi1jKysxMVwwMTNyZXR1cm4tdHkiCi0gICAgInBlXDAyNXJldHVybi10eXBlLWMtbGlua2FnZVwwMjBzYW5pdGl6ZS1hZGRyZXNzXDAwN3NlY3Rpb25cMDEwc2VsZWN0b3JcMDI2IgotICAgICJzZWxlY3Rvci10eXBlLW1pc21hdGNoXDAxM3NlbGYtYXNzaWduXDAyMXNlbGYtYXNzaWduLWZpZWxkXDAyNnNlbGYtYXNzaSIKLSAgICAiZ24tb3ZlcmxvYWRlZFx0c2VsZi1tb3ZlXDAzNHNlbWljb2xvbi1iZWZvcmUtbWV0aG9kLWJvZHlcMDEwc2VudGluZWxcMDE2IgotICAgICJzZXF1ZW5jZS1wb2ludFwwMjZzZXJpYWxpemVkLWRpYWdub3N0aWNzXDAwNnNoYWRvd1xuc2hhZG93LWFsbFwwMTRzaGFkbyIKLSAgICAidy1maWVsZFwwMzNzaGFkb3ctZmllbGQtaW4tY29uc3RydWN0b3Ikc2hhZG93LWZpZWxkLWluLWNvbnN0cnVjdG9yLW1vZGkiCi0gICAgImZpZWRcMDEzc2hhZG93LWl2YXJcMDI3c2hhZG93LXVuY2FwdHVyZWQtbG9jYWxcMDI0c2hpZnQtY291bnQtbmVnYXRpdmVcMDI0IgotICAgICJzaGlmdC1jb3VudC1vdmVyZmxvd1wwMjRzaGlmdC1uZWdhdGl2ZS12YWx1ZVwwMjRzaGlmdC1vcC1wYXJlbnRoZXNlc1wwMTYiCi0gICAgInNoaWZ0LW92ZXJmbG93XDAyM3NoaWZ0LXNpZ24tb3ZlcmZsb3dcMDIwc2hvcnRlbi02NC10by0zMlwwMTRzaWduLWNvbXBhIgotICAgICJyZVwwMTdzaWduLWNvbnZlcnNpb25cbnNpZ24tcHJvbW9cMDI0c2lnbmVkLWVudW0tYml0ZmllbGRcMDI1c2l6ZW9mLWFyciIKLSAgICAiYXktYXJndW1lbnRcMDIyc2l6ZW9mLWFycmF5LWRlY2F5XDAzMHNpemVvZi1wb2ludGVyLW1lbWFjY2Vzc1wwMjBzbGFzaC0iCi0gICAgInUtZmlsZW5hbWVcMDI3c29tZXRpbWVzLXVuaW5pdGlhbGl6ZWRcMDIyc291cmNlLXVzZXMtb3Blbm1wXDAxM3NwaXItY29tIgotICAgICJwYXRcMDE3c3RhY2stcHJvdGVjdG9yXDAyMXN0YXRpYy1mbG9hdC1pbml0XDAyMHN0YXRpYy1pbi1pbmxpbmUkc3RhdGljLSIKLSAgICAiaW5saW5lLWV4cGxpY2l0LWluc3RhbnRpYXRpb25cMDI2c3RhdGljLWxvY2FsLWluLWlubGluZVwwMjBzdGF0aWMtc2VsZi0iCi0gICAgImluaXRcMDIzc3RkbGliY3h4LW5vdC1mb3VuZFwwMTdzdHJpY3QtYWxpYXNpbmdcMDIxc3RyaWN0LWFsaWFzaW5nPTBcMDIxIgotICAgICJzdHJpY3QtYWxpYXNpbmc9MVwwMjFzdHJpY3QtYWxpYXNpbmc9MlwwMTdzdHJpY3Qtb3ZlcmZsb3dcMDIxc3RyaWN0LW92ZSIKLSAgICAicmZsb3c9MFwwMjFzdHJpY3Qtb3ZlcmZsb3c9MVwwMjFzdHJpY3Qtb3ZlcmZsb3c9MlwwMjFzdHJpY3Qtb3ZlcmZsb3c9M1wwMjEiCi0gICAgInN0cmljdC1vdmVyZmxvdz00XDAyMXN0cmljdC1vdmVyZmxvdz01XDAyMXN0cmljdC1wcm90b3R5cGVzXDAyNXN0cmljdC1zIgotICAgICJlbGVjdG9yLW1hdGNoXDAxNnN0cmluZy1jb21wYXJlXDAyMXN0cmluZy1jb252ZXJzaW9uXDAyMHN0cmluZy1wbHVzLWNoYSIKLSAgICAiclwwMTdzdHJpbmctcGx1cy1pbnRcMDI0c3RybGNweS1zdHJsY2F0LXNpemVcMDE0c3RybmNhdC1zaXplXDAzM3N1cGVyLWMiCi0gICAgImxhc3MtbWV0aG9kLW1pc21hdGNoXDAyMHN1c3BpY2lvdXMtYnplcm9cMDI0c3VzcGljaW91cy1tZW1hY2Nlc3NcMDA2c3dpIgotICAgICJ0Y2hcMDEzc3dpdGNoLWJvb2xcMDE2c3dpdGNoLWRlZmF1bHRcMDEzc3dpdGNoLWVudW0lc3luYy1mZXRjaC1hbmQtbmFuZCIKLSAgICAiLXNlbWFudGljcy1jaGFuZ2VkXDAwNXN5bnRoXDAyNHRhdXRvbG9naWNhbC1jb21wYXJlXDAzNXRhdXRvbG9naWNhbC1jb24iCi0gICAgInN0YW50LWNvbXBhcmUmdGF1dG9sb2dpY2FsLWNvbnN0YW50LWluLXJhbmdlLWNvbXBhcmUqdGF1dG9sb2dpY2FsLWNvbnN0IgotICAgICJhbnQtb3V0LW9mLXJhbmdlLWNvbXBhcmVcMDM0dGF1dG9sb2dpY2FsLW92ZXJsYXAtY29tcGFyZVwwMzR0YXV0b2xvZ2ljYSIKLSAgICAibC1wb2ludGVyLWNvbXBhcmVcMDM3dGF1dG9sb2dpY2FsLXR5cGUtbGltaXQtY29tcGFyZVwwMzZ0YXV0b2xvZ2ljYWwtdW4iCi0gICAgImRlZmluZWQtY29tcGFyZSd0YXV0b2xvZ2ljYWwtdW5zaWduZWQtZW51bS16ZXJvLWNvbXBhcmVcInRhdXRvbG9naWNhbC11IgotICAgICJuc2lnbmVkLXplcm8tY29tcGFyZSR0ZW50YXRpdmUtZGVmaW5pdGlvbi1pbmNvbXBsZXRlLXR5cGVcMDE1dGhyZWFkLXNhZiIKLSAgICAiZXR5XDAyNnRocmVhZC1zYWZldHktYW5hbHlzaXNcMDMwdGhyZWFkLXNhZmV0eS1hdHRyaWJ1dGVzXDAyMnRocmVhZC1zYWYiCi0gICAgImV0eS1iZXRhXDAyNnRocmVhZC1zYWZldHktbmVnYXRpdmVcMDI1dGhyZWFkLXNhZmV0eS1wcmVjaXNlXDAyN3RocmVhZC1zIgotICAgICJhZmV0eS1yZWZlcmVuY2VcMDI1dGhyZWFkLXNhZmV0eS12ZXJib3NlXHR0cmlncmFwaHNcMDEzdHlwZS1saW1pdHNcMDEzdCIKLSAgICAieXBlLXNhZmV0eVwwMjR0eXBlZGVmLXJlZGVmaW5pdGlvblwwMjB0eXBlbmFtZS1taXNzaW5nXDAzMXVuYWJsZS10by1vcGUiCi0gICAgIm4tc3RhdHMtZmlsZVwwMzB1bmF2YWlsYWJsZS1kZWNsYXJhdGlvbnNcMDIzdW5kZWNsYXJlZC1zZWxlY3RvclwwMDV1bmRlIgotICAgICJmXDAzMXVuZGVmaW5lZC1ib29sLWNvbnZlcnNpb25cMDI3dW5kZWZpbmVkLWZ1bmMtdGVtcGxhdGVcMDIwdW5kZWZpbmVkLSIKLSAgICAiaW5saW5lXDAyMnVuZGVmaW5lZC1pbnRlcm5hbFwwMjd1bmRlZmluZWQtaW50ZXJuYWwtdHlwZVwwMzJ1bmRlZmluZWQtcmUiCi0gICAgImludGVycHJldC1jYXN0XDAyNnVuZGVmaW5lZC12YXItdGVtcGxhdGVcMDI2dW5ldmFsdWF0ZWQtZXhwcmVzc2lvblwwMjZ1IgotICAgICJuZ3VhcmRlZC1hdmFpbGFiaWxpdHlcMDMydW5ndWFyZGVkLWF2YWlsYWJpbGl0eS1uZXdcMDA3dW5pY29kZVwwMjF1bmljbyIKLSAgICAiZGUtaG9tb2dseXBoXDAyMnVuaWNvZGUtd2hpdGVzcGFjZVwwMjJ1bmljb2RlLXplcm8td2lkdGhcMDE1dW5pbml0aWFsaXoiCi0gICAgImVkXDAyMHVua25vd24tYXJndW1lbnRcMDIydW5rbm93bi1hdHRyaWJ1dGVzXDAyN3Vua25vd24tZXNjYXBlLXNlcXVlbmNlIgotICAgICJcMDE3dW5rbm93bi1wcmFnbWFzXDAyMnVua25vd24tc2FuaXRpemVyc1wwMjZ1bmtub3duLXdhcm5pbmctb3B0aW9uXDAzMiIKLSAgICAidW5uYW1lZC10eXBlLXRlbXBsYXRlLWFyZ3NcMDM1dW5uZWVkZWQtaW50ZXJuYWwtZGVjbGFyYXRpb25cMDMwdW5uZWVkZWQiCi0gICAgIi1tZW1iZXItZnVuY3Rpb25cMDIwdW5yZWFjaGFibGUtY29kZVwwMzN1bnJlYWNoYWJsZS1jb2RlLWFnZ3Jlc3NpdmVcMDI2IgotICAgICJ1bnJlYWNoYWJsZS1jb2RlLWJyZWFrXDAzN3VucmVhY2hhYmxlLWNvZGUtbG9vcC1pbmNyZW1lbnRcMDI3dW5yZWFjaGFibCIKLSAgICAiZS1jb2RlLXJldHVyblwwMTN1bnNlcXVlbmNlZFwwMTd1bnN1cHBvcnRlZC1hYnNcMDM2dW5zdXBwb3J0ZWQtYXZhaWxhYmkiCi0gICAgImxpdHktZ3VhcmRcMDE2dW5zdXBwb3J0ZWQtY2IjdW5zdXBwb3J0ZWQtZGxsLWJhc2UtY2xhc3MtdGVtcGxhdGVcMDIydW5zIgotICAgICJ1cHBvcnRlZC1mcmllbmRcMDIxdW5zdXBwb3J0ZWQtZ3BvcHRcMDE3dW5zdXBwb3J0ZWQtbmFuXDAyNnVuc3VwcG9ydGVkLSIKLSAgICAidGFyZ2V0LW9wdFwwMjZ1bnN1cHBvcnRlZC12aXNpYmlsaXR5XDAzN3VudXNhYmxlLXBhcnRpYWwtc3BlY2lhbGl6YXRpb24iCi0gICAgIlwwMDZ1bnVzZWRcMDE3dW51c2VkLWFyZ3VtZW50XDAzNHVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnRcMDIxdW51c2VkIgotICAgICItY29tcGFyaXNvblwwMjV1bnVzZWQtY29uc3QtdmFyaWFibGVcMDMydW51c2VkLWV4Y2VwdGlvbi1wYXJhbWV0ZXJcMDE3dSIKLSAgICAibnVzZWQtZnVuY3Rpb25cMDMydW51c2VkLWdldHRlci1yZXR1cm4tdmFsdWVcMDE0dW51c2VkLWxhYmVsXDAyNXVudXNlZC0iCi0gICAgImxhbWJkYS1jYXB0dXJlXDAyNHVudXNlZC1sb2NhbC10eXBlZGVmXDAyNXVudXNlZC1sb2NhbC10eXBlZGVmc1wwMTV1bnVzIgotICAgICJlZC1tYWNyb3NcMDI2dW51c2VkLW1lbWJlci1mdW5jdGlvblwwMjB1bnVzZWQtcGFyYW1ldGVyXDAyNHVudXNlZC1wcml2YSIKLSAgICAidGUtZmllbGRcMDI0dW51c2VkLXByb3BlcnR5LWl2YXJcMDE1dW51c2VkLXJlc3VsdFwwMTd1bnVzZWQtdGVtcGxhdGVcMDE0IgotICAgICJ1bnVzZWQtdmFsdWVcMDE3dW51c2VkLXZhcmlhYmxlXDAyNnVudXNlZC12b2xhdGlsZS1sdmFsdWVcMDI2dXNlZC1idXQtbSIKLSAgICAiYXJrZWQtdW51c2VkXDAyNXVzZXItZGVmaW5lZC1saXRlcmFsc1wwMjV1c2VyLWRlZmluZWQtd2FybmluZ3NcMDA3dmFyYXIiCi0gICAgImdzXDAxN3ZhcmlhZGljLW1hY3Jvc1wwMTV2ZWMtZWxlbS1zaXplXDAyMXZlY3Rvci1jb252ZXJzaW9uXDAyMnZlY3Rvci1jIgotICAgICJvbnZlcnNpb25zXDAxNHZleGluZy1wYXJzZVxudmlzaWJpbGl0eVwwMDN2bGFcMDE1dmxhLWV4dGVuc2lvblwwMjR2b2lkLSIKLSAgICAicHRyLWRlcmVmZXJlbmNlXDAyNXZvbGF0aWxlLXJlZ2lzdGVyLXZhclwwMjV3ZWFrLXRlbXBsYXRlLXZ0YWJsZXNcMDE0d2UiCi0gICAgImFrLXZ0YWJsZXNcMDIwd3JpdGFibGUtc3RyaW5nc1wwMTV3cml0ZS1zdHJpbmdzXDAzNXplcm8tYXMtbnVsbC1wb2ludGVyIgotICAgICItY29uc3RhbnRcMDIxemVyby1sZW5ndGgtYXJyYXkifTsKKyAgICAibmVzdGVkLWV4dGVybnNcMDIwbmV3LXJldHVybnMtbnVsbFwwMTNuZXdsaW5lLWVvZlwwMDdub2RlcmVmXDAxNW5vZXhjZXAiCisgICAgInQtdHlwZVwwMDdub24tZ2NjXDAzM25vbi1saXRlcmFsLW51bGwtY29udmVyc2lvbidub24tbW9kdWxhci1pbmNsdWRlLWluIgorICAgICItZnJhbWV3b3JrLW1vZHVsZVwwMzVub24tbW9kdWxhci1pbmNsdWRlLWluLW1vZHVsZVwwMTdub24tcG9kLXZhcmFyZ3NcMDIwIgorICAgICJub24tdmlydHVhbC1kdG9yXDAwN25vbm51bGxcMDI1bm9ucG9ydGFibGUtY2ZzdHJpbmdzXDAzMG5vbnBvcnRhYmxlLWluYyIKKyAgICAibHVkZS1wYXRoXDAzN25vbnBvcnRhYmxlLXN5c3RlbS1pbmNsdWRlLXBhdGghbm9ucG9ydGFibGUtdmVjdG9yLWluaXRpYWwiCisgICAgIml6YXRpb25cMDI0bm9udHJpdmlhbC1tZW1hY2Nlc3NcMDIzbnNjb25zdW1lZC1taXNtYXRjaFwwMjJuc3JldHVybnMtbWlzIgorICAgICJtYXRjaFwwMTdudWxsLWFyaXRobWV0aWNcMDE2bnVsbC1jaGFyYWN0ZXJcMDE3bnVsbC1jb252ZXJzaW9uXDAyMG51bGwtZCIKKyAgICAiZXJlZmVyZW5jZVwwMjdudWxsLXBvaW50ZXItYXJpdGhtZXRpY1wwMTNudWxsYWJpbGl0eVwwMzBudWxsYWJpbGl0eS1jb20iCisgICAgInBsZXRlbmVzc1wibnVsbGFiaWxpdHktY29tcGxldGVuZXNzLW9uLWFycmF5c1wwMjRudWxsYWJpbGl0eS1kZWNsc3BlY1wwMjUiCisgICAgIm51bGxhYmlsaXR5LWV4dGVuc2lvbiNudWxsYWJpbGl0eS1pbmZlcnJlZC1vbi1uZXN0ZWQtdHlwZVwwMzZudWxsYWJsZS10IgorICAgICJvLW5vbm51bGwtY29udmVyc2lvbitvYmpjLWF1dG9zeW50aGVzaXMtcHJvcGVydHktaXZhci1uYW1lLW1hdGNoXDAyN29iaiIKKyAgICAiYy1jaXJjdWxhci1jb250YWluZXJcMDE2b2JqYy1jb2NvYS1hcGlcMDM0b2JqYy1kZXNpZ25hdGVkLWluaXRpYWxpemVyc1wwMjMiCisgICAgIm9iamMtZmxleGlibGUtYXJyYXlcMDM3b2JqYy1mb3J3YXJkLWNsYXNzLXJlZGVmaW5pdGlvblwwMjRvYmpjLWludGVyZmFjIgorICAgICJlLWl2YXJzXDAyNG9iamMtbGl0ZXJhbC1jb21wYXJlXDAyN29iamMtbGl0ZXJhbC1jb252ZXJzaW9uXDAyN29iamMtbWFjciIKKyAgICAiby1yZWRlZmluaXRpb25cMDIxb2JqYy1tZXNzYWdpbmctaWRcMDIyb2JqYy1tZXRob2QtYWNjZXNzXDAzN29iamMtbWlzc2kiCisgICAgIm5nLXByb3BlcnR5LXN5bnRoZXNpc1wwMzBvYmpjLW1pc3Npbmctc3VwZXItY2FsbHNcMDMyb2JqYy1tdWx0aXBsZS1tZXRoIgorICAgICJvZC1uYW1lc1wib2JqYy1ub25jb3B5LXJldGFpbi1ibG9jay1wcm9wZXJ0eVwwMzJvYmpjLW5vbnVuaWZpZWQtZXhjZXB0aSIKKyAgICAib25zI29iamMtcHJvcGVydHktYXNzaWduLW9uLW9iamVjdC10eXBlXDAzNG9iamMtcHJvcGVydHktaW1wbGVtZW50YXRpb24iCisgICAgIlwwMzdvYmpjLXByb3BlcnR5LWltcGxpY2l0LW1pc21hdGNoKm9iamMtcHJvcGVydHktbWF0Y2hlcy1jb2NvYS1vd25lcnNoIgorICAgICJpcC1ydWxlXDAzMm9iamMtcHJvcGVydHktbm8tYXR0cmlidXRlXDAyN29iamMtcHJvcGVydHktc3ludGhlc2lzI29iamMtcCIKKyAgICAicm90b2NvbC1tZXRob2QtaW1wbGVtZW50YXRpb24gb2JqYy1wcm90b2NvbC1wcm9wZXJ0eS1zeW50aGVzaXNcMDMwb2JqYy0iCisgICAgInByb3RvY29sLXF1YWxpZmllcnNcIm9iamMtcmVhZG9ubHktd2l0aC1zZXR0ZXItcHJvcGVydHlcMDI2b2JqYy1yZWR1bmRhIgorICAgICJudC1hcGktdXNlXDAzMm9iamMtcmVkdW5kYW50LWxpdGVyYWwtdXNlXDAxN29iamMtcm9vdC1jbGFzc1wwMjNvYmpjLXN0ciIKKyAgICAiaW5nLWNvbXBhcmVcMDMxb2JqYy1zdHJpbmctY29uY2F0ZW5hdGlvblwwMzRvYmpjLXVuc2FmZS1wZXJmb3JtLXNlbGVjdG8iCisgICAgInJcMDAzb2RyXDAxNm9sZC1zdHlsZS1jYXN0XDAyNG9sZC1zdHlsZS1kZWZpbml0aW9uXDAyN29wZW5jbC11bnN1cHBvcnRlIgorICAgICJkLXJnYmFcMDE2b3Blbm1wLWNsYXVzZXNcMDIwb3Blbm1wLWxvb3AtZm9ybVwwMTVvcGVubXAtdGFyZ2V0XDAxNm9wdGlvbiIKKyAgICAiLWlnbm9yZWQhb3JkZXJlZC1jb21wYXJlLWZ1bmN0aW9uLXBvaW50ZXJzXDAyN291dC1vZi1saW5lLWRlY2xhcmF0aW9uXDAyNSIKKyAgICAib3V0LW9mLXNjb3BlLWZ1bmN0aW9uXDAxNG92ZXItYWxpZ25lZFwwMTBvdmVyZmxvd1wwMjJvdmVybGVuZ3RoLXN0cmluZ3MiCisgICAgIlwwMzdvdmVybG9hZGVkLXNoaWZ0LW9wLXBhcmVudGhlc2VzXDAyMm92ZXJsb2FkZWQtdmlydHVhbFwwMTVvdmVycmlkZS1pIgorICAgICJuaXRcMDE3b3ZlcnJpZGUtbW9kdWxlXDAzMm92ZXJyaWRpbmctbWV0aG9kLW1pc21hdGNoXDAyM292ZXJyaWRpbmctdC1vcCIKKyAgICAidGlvblwwMDZwYWNrZWRcMDA2cGFkZGVkXDAxM3BhcmVudGhlc2VzXDAyNHBhcmVudGhlc2VzLWVxdWFsaXR5XDAyNHBhcnQiCisgICAgImlhbC1hdmFpbGFiaWxpdHlcMDA0cGFzc1wwMTVwYXNzLWFuYWx5c2lzXDAxM3Bhc3MtZmFpbGVkXDAxM3Bhc3MtbWlzc2VkIgorICAgICJcMDE1cGNoLWRhdGUtdGltZVwwMTBwZWRhbnRpY1wwMjZwZWRhbnRpYy1jb3JlLWZlYXR1cmVzXDAyMHBlc3NpbWl6aW5nLSIKKyAgICAibW92ZVwwMTVwb2ludGVyLWFyaXRoXDAyN3BvaW50ZXItYm9vbC1jb252ZXJzaW9uXDAyN3BvaW50ZXItaW50ZWdlci1jb20iCisgICAgInBhcmVcMDE0cG9pbnRlci1zaWduXDAyM3BvaW50ZXItdG8taW50LWNhc3RcMDI1cG9pbnRlci10eXBlLW1pc21hdGNoIHBvIgorICAgICJ0ZW50aWFsbHktZXZhbHVhdGVkLWV4cHJlc3Npb25cMDI2cHJhZ21hLWNsYW5nLWF0dHJpYnV0ZVwwMzJwcmFnbWEtb25jZSIKKyAgICAiLW91dHNpZGUtaGVhZGVyXDAxM3ByYWdtYS1wYWNrXDAzNnByYWdtYS1wYWNrLXN1c3BpY2lvdXMtaW5jbHVkZSNwcmFnbWEiCisgICAgIi1zeXN0ZW0taGVhZGVyLW91dHNpZGUtaGVhZGVyXDAwN3ByYWdtYXMmcHJlZGVmaW5lZC1pZGVudGlmaWVyLW91dHNpZGUtIgorICAgICJmdW5jdGlvblwwMTZwcml2YXRlLWV4dGVyblwwMTZwcml2YXRlLWhlYWRlclwwMTZwcml2YXRlLW1vZHVsZVwwMjVwcm9maSIKKyAgICAibGUtaW5zdHItbWlzc2luZ1wwMzFwcm9maWxlLWluc3RyLW91dC1vZi1kYXRlXDAzMHByb2ZpbGUtaW5zdHItdW5wcm9maWwiCisgICAgImVkXDAzMnByb3BlcnR5LWFjY2Vzcy1kb3Qtc3ludGF4XDAzM3Byb3BlcnR5LWF0dHJpYnV0ZS1taXNtYXRjaFwwMTBwcm90IgorICAgICJvY29sJXByb3RvY29sLXByb3BlcnR5LXN5bnRoZXNpcy1hbWJpZ3VpdHlcMDMycXVhbGlmaWVkLXZvaWQtcmV0dXJuLXR5cCIKKyAgICAiZVwicXVvdGVkLWluY2x1ZGUtaW4tZnJhbWV3b3JrLWhlYWRlclwwMjNyYW5nZS1sb29wLWFuYWx5c2lzXDAzMnJlYWRvbmwiCisgICAgInktaWJvdXRsZXQtcHJvcGVydHlcMDE1cmVjZWl2ZXItZXhwclwwMjZyZWNlaXZlci1mb3J3YXJkLWNsYXNzXDAyN3JlZGVjIgorICAgICJsYXJlZC1jbGFzcy1tZW1iZXJcMDE3cmVkdW5kYW50LWRlY2xzXDAxNnJlZHVuZGFudC1tb3ZlXDAyMHJlZHVuZGFudC1wYSIKKyAgICAicmVuc1wwMTByZWdpc3RlclwwMjZyZWludGVycHJldC1iYXNlLWNsYXNzXDAyNXJlbWFyay1iYWNrZW5kLXBsdWdpblwwMDciCisgICAgInJlb3JkZXJcMDMwcmVxdWlyZXMtc3VwZXItYXR0cmlidXRlXDAyMXJlc2VydmVkLWlkLW1hY3JvXDAzNXJlc2VydmVkLXVzIgorICAgICJlci1kZWZpbmVkLWxpdGVyYWxcMDMxcmV0YWluZWQtbGFuZ3VhZ2UtbGlua2FnZVwwMjRyZXR1cm4tc3RhY2stYWRkcmVzcyIKKyAgICAiXDAxN3JldHVybi1zdGQtbW92ZVwwMzByZXR1cm4tc3RkLW1vdmUtaW4tYysrMTFcMDEzcmV0dXJuLXR5cGVcMDI1cmV0dXIiCisgICAgIm4tdHlwZS1jLWxpbmthZ2VcMDIwc2FuaXRpemUtYWRkcmVzc1wwMDdzZWN0aW9uXDAxMHNlbGVjdG9yXDAyNnNlbGVjdG9yIgorICAgICItdHlwZS1taXNtYXRjaFwwMTNzZWxmLWFzc2lnblwwMjFzZWxmLWFzc2lnbi1maWVsZFwwMjZzZWxmLWFzc2lnbi1vdmVybCIKKyAgICAib2FkZWRcdHNlbGYtbW92ZVwwMzRzZW1pY29sb24tYmVmb3JlLW1ldGhvZC1ib2R5XDAxMHNlbnRpbmVsXDAxNnNlcXVlbmMiCisgICAgImUtcG9pbnRcMDI2c2VyaWFsaXplZC1kaWFnbm9zdGljc1wwMDZzaGFkb3dcbnNoYWRvdy1hbGxcMDE0c2hhZG93LWZpZWxkIgorICAgICJcMDMzc2hhZG93LWZpZWxkLWluLWNvbnN0cnVjdG9yJHNoYWRvdy1maWVsZC1pbi1jb25zdHJ1Y3Rvci1tb2RpZmllZFwwMTMiCisgICAgInNoYWRvdy1pdmFyXDAyN3NoYWRvdy11bmNhcHR1cmVkLWxvY2FsXDAyNHNoaWZ0LWNvdW50LW5lZ2F0aXZlXDAyNHNoaWZ0IgorICAgICItY291bnQtb3ZlcmZsb3dcMDI0c2hpZnQtbmVnYXRpdmUtdmFsdWVcMDI0c2hpZnQtb3AtcGFyZW50aGVzZXNcMDE2c2hpZiIKKyAgICAidC1vdmVyZmxvd1wwMjNzaGlmdC1zaWduLW92ZXJmbG93XDAyMHNob3J0ZW4tNjQtdG8tMzJcMDE0c2lnbi1jb21wYXJlXDAxNyIKKyAgICAic2lnbi1jb252ZXJzaW9uXG5zaWduLXByb21vXDAyNHNpZ25lZC1lbnVtLWJpdGZpZWxkXDAyNXNpemVvZi1hcnJheS1hcmciCisgICAgInVtZW50XDAyMnNpemVvZi1hcnJheS1kZWNheVwwMjJzaXplb2YtcG9pbnRlci1kaXZcMDMwc2l6ZW9mLXBvaW50ZXItbWVtIgorICAgICJhY2Nlc3NcMDIwc2xhc2gtdS1maWxlbmFtZVwwMjdzb21ldGltZXMtdW5pbml0aWFsaXplZFwwMjJzb3VyY2UtdXNlcy1vcCIKKyAgICAiZW5tcFwwMTNzcGlyLWNvbXBhdFwwMTdzdGFjay1wcm90ZWN0b3JcMDIxc3RhdGljLWZsb2F0LWluaXRcMDIwc3RhdGljLWkiCisgICAgIm4taW5saW5lJHN0YXRpYy1pbmxpbmUtZXhwbGljaXQtaW5zdGFudGlhdGlvblwwMjZzdGF0aWMtbG9jYWwtaW4taW5saW5lIgorICAgICJcMDIwc3RhdGljLXNlbGYtaW5pdFwwMjNzdGRsaWJjeHgtbm90LWZvdW5kXDAxN3N0cmljdC1hbGlhc2luZ1wwMjFzdHJpYyIKKyAgICAidC1hbGlhc2luZz0wXDAyMXN0cmljdC1hbGlhc2luZz0xXDAyMXN0cmljdC1hbGlhc2luZz0yXDAxN3N0cmljdC1vdmVyZmwiCisgICAgIm93XDAyMXN0cmljdC1vdmVyZmxvdz0wXDAyMXN0cmljdC1vdmVyZmxvdz0xXDAyMXN0cmljdC1vdmVyZmxvdz0yXDAyMXN0IgorICAgICJyaWN0LW92ZXJmbG93PTNcMDIxc3RyaWN0LW92ZXJmbG93PTRcMDIxc3RyaWN0LW92ZXJmbG93PTVcMDIxc3RyaWN0LXBybyIKKyAgICAidG90eXBlc1wwMjVzdHJpY3Qtc2VsZWN0b3ItbWF0Y2hcMDE2c3RyaW5nLWNvbXBhcmVcMDIxc3RyaW5nLWNvbnZlcnNpb24iCisgICAgIlwwMjBzdHJpbmctcGx1cy1jaGFyXDAxN3N0cmluZy1wbHVzLWludFwwMjRzdHJsY3B5LXN0cmxjYXQtc2l6ZVwwMTRzdHJuIgorICAgICJjYXQtc2l6ZVwwMzNzdXBlci1jbGFzcy1tZXRob2QtbWlzbWF0Y2hcMDIwc3VzcGljaW91cy1iemVyb1wwMjRzdXNwaWNpbyIKKyAgICAidXMtbWVtYWNjZXNzXDAwNnN3aXRjaFwwMTNzd2l0Y2gtYm9vbFwwMTZzd2l0Y2gtZGVmYXVsdFwwMTNzd2l0Y2gtZW51bSUiCisgICAgInN5bmMtZmV0Y2gtYW5kLW5hbmQtc2VtYW50aWNzLWNoYW5nZWRcMDA1c3ludGhcMDI0dGF1dG9sb2dpY2FsLWNvbXBhcmVcMDM1IgorICAgICJ0YXV0b2xvZ2ljYWwtY29uc3RhbnQtY29tcGFyZSZ0YXV0b2xvZ2ljYWwtY29uc3RhbnQtaW4tcmFuZ2UtY29tcGFyZSp0YSIKKyAgICAidXRvbG9naWNhbC1jb25zdGFudC1vdXQtb2YtcmFuZ2UtY29tcGFyZVwwMzR0YXV0b2xvZ2ljYWwtb3ZlcmxhcC1jb21wYXIiCisgICAgImVcMDM0dGF1dG9sb2dpY2FsLXBvaW50ZXItY29tcGFyZVwwMzd0YXV0b2xvZ2ljYWwtdHlwZS1saW1pdC1jb21wYXJlXDAzNiIKKyAgICAidGF1dG9sb2dpY2FsLXVuZGVmaW5lZC1jb21wYXJlJ3RhdXRvbG9naWNhbC11bnNpZ25lZC1lbnVtLXplcm8tY29tcGFyZVwiIgorICAgICJ0YXV0b2xvZ2ljYWwtdW5zaWduZWQtemVyby1jb21wYXJlJHRlbnRhdGl2ZS1kZWZpbml0aW9uLWluY29tcGxldGUtdHlwZSIKKyAgICAiXDAxNXRocmVhZC1zYWZldHlcMDI2dGhyZWFkLXNhZmV0eS1hbmFseXNpc1wwMzB0aHJlYWQtc2FmZXR5LWF0dHJpYnV0ZXMiCisgICAgIlwwMjJ0aHJlYWQtc2FmZXR5LWJldGFcMDI2dGhyZWFkLXNhZmV0eS1uZWdhdGl2ZVwwMjV0aHJlYWQtc2FmZXR5LXByZWNpIgorICAgICJzZVwwMjd0aHJlYWQtc2FmZXR5LXJlZmVyZW5jZVwwMjV0aHJlYWQtc2FmZXR5LXZlcmJvc2VcdHRyaWdyYXBoc1wwMTN0eSIKKyAgICAicGUtbGltaXRzXDAxM3R5cGUtc2FmZXR5XDAyNHR5cGVkZWYtcmVkZWZpbml0aW9uXDAyMHR5cGVuYW1lLW1pc3NpbmdcMDMxIgorICAgICJ1bmFibGUtdG8tb3Blbi1zdGF0cy1maWxlXDAzMHVuYXZhaWxhYmxlLWRlY2xhcmF0aW9uc1wwMjN1bmRlY2xhcmVkLXNlbCIKKyAgICAiZWN0b3JcMDA1dW5kZWZcMDMxdW5kZWZpbmVkLWJvb2wtY29udmVyc2lvblwwMjd1bmRlZmluZWQtZnVuYy10ZW1wbGF0ZVwwMjAiCisgICAgInVuZGVmaW5lZC1pbmxpbmVcMDIydW5kZWZpbmVkLWludGVybmFsXDAyN3VuZGVmaW5lZC1pbnRlcm5hbC10eXBlXDAzMnVuIgorICAgICJkZWZpbmVkLXJlaW50ZXJwcmV0LWNhc3RcMDI2dW5kZWZpbmVkLXZhci10ZW1wbGF0ZVwwMjZ1bmV2YWx1YXRlZC1leHByZSIKKyAgICAic3Npb25cMDI2dW5ndWFyZGVkLWF2YWlsYWJpbGl0eVwwMzJ1bmd1YXJkZWQtYXZhaWxhYmlsaXR5LW5ld1wwMDd1bmljb2QiCisgICAgImVcMDIxdW5pY29kZS1ob21vZ2x5cGhcMDIydW5pY29kZS13aGl0ZXNwYWNlXDAyMnVuaWNvZGUtemVyby13aWR0aFwwMTV1IgorICAgICJuaW5pdGlhbGl6ZWRcMDIwdW5rbm93bi1hcmd1bWVudFwwMjJ1bmtub3duLWF0dHJpYnV0ZXNcMDI3dW5rbm93bi1lc2NhcCIKKyAgICAiZS1zZXF1ZW5jZVwwMTd1bmtub3duLXByYWdtYXNcMDIydW5rbm93bi1zYW5pdGl6ZXJzXDAyNnVua25vd24td2FybmluZy0iCisgICAgIm9wdGlvblwwMzJ1bm5hbWVkLXR5cGUtdGVtcGxhdGUtYXJnc1wwMzV1bm5lZWRlZC1pbnRlcm5hbC1kZWNsYXJhdGlvblwwMzAiCisgICAgInVubmVlZGVkLW1lbWJlci1mdW5jdGlvblwwMjB1bnJlYWNoYWJsZS1jb2RlXDAzM3VucmVhY2hhYmxlLWNvZGUtYWdncmVzIgorICAgICJzaXZlXDAyNnVucmVhY2hhYmxlLWNvZGUtYnJlYWtcMDM3dW5yZWFjaGFibGUtY29kZS1sb29wLWluY3JlbWVudFwwMjd1biIKKyAgICAicmVhY2hhYmxlLWNvZGUtcmV0dXJuXDAxM3Vuc2VxdWVuY2VkXDAxN3Vuc3VwcG9ydGVkLWFic1wwMzZ1bnN1cHBvcnRlZC0iCisgICAgImF2YWlsYWJpbGl0eS1ndWFyZFwwMTZ1bnN1cHBvcnRlZC1jYiN1bnN1cHBvcnRlZC1kbGwtYmFzZS1jbGFzcy10ZW1wbGF0IgorICAgICJlXDAyMnVuc3VwcG9ydGVkLWZyaWVuZFwwMjF1bnN1cHBvcnRlZC1ncG9wdFwwMTd1bnN1cHBvcnRlZC1uYW5cMDI2dW5zdSIKKyAgICAicHBvcnRlZC10YXJnZXQtb3B0XDAyNnVuc3VwcG9ydGVkLXZpc2liaWxpdHlcMDM3dW51c2FibGUtcGFydGlhbC1zcGVjaWEiCisgICAgImxpemF0aW9uXDAwNnVudXNlZFwwMTd1bnVzZWQtYXJndW1lbnRcMDM0dW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudFwwMjEiCisgICAgInVudXNlZC1jb21wYXJpc29uXDAyNXVudXNlZC1jb25zdC12YXJpYWJsZVwwMzJ1bnVzZWQtZXhjZXB0aW9uLXBhcmFtZXRlIgorICAgICJyXDAxN3VudXNlZC1mdW5jdGlvblwwMzJ1bnVzZWQtZ2V0dGVyLXJldHVybi12YWx1ZVwwMTR1bnVzZWQtbGFiZWxcMDI1dSIKKyAgICAibnVzZWQtbGFtYmRhLWNhcHR1cmVcMDI0dW51c2VkLWxvY2FsLXR5cGVkZWZcMDI1dW51c2VkLWxvY2FsLXR5cGVkZWZzXDAxNSIKKyAgICAidW51c2VkLW1hY3Jvc1wwMjZ1bnVzZWQtbWVtYmVyLWZ1bmN0aW9uXDAyMHVudXNlZC1wYXJhbWV0ZXJcMDI0dW51c2VkLXAiCisgICAgInJpdmF0ZS1maWVsZFwwMjR1bnVzZWQtcHJvcGVydHktaXZhclwwMTV1bnVzZWQtcmVzdWx0XDAxN3VudXNlZC10ZW1wbGF0IgorICAgICJlXDAxNHVudXNlZC12YWx1ZVwwMTd1bnVzZWQtdmFyaWFibGVcMDI2dW51c2VkLXZvbGF0aWxlLWx2YWx1ZVwwMjZ1c2VkLSIKKyAgICAiYnV0LW1hcmtlZC11bnVzZWRcMDI1dXNlci1kZWZpbmVkLWxpdGVyYWxzXDAyNXVzZXItZGVmaW5lZC13YXJuaW5nc1wwMDciCisgICAgInZhcmFyZ3NcMDE3dmFyaWFkaWMtbWFjcm9zXDAxNXZlYy1lbGVtLXNpemVcMDIxdmVjdG9yLWNvbnZlcnNpb25cMDIydmVjIgorICAgICJ0b3ItY29udmVyc2lvbnNcMDE0dmV4aW5nLXBhcnNlXG52aXNpYmlsaXR5XDAwM3ZsYVwwMTV2bGEtZXh0ZW5zaW9uXDAyNCIKKyAgICAidm9pZC1wdHItZGVyZWZlcmVuY2VcMDI1dm9sYXRpbGUtcmVnaXN0ZXItdmFyXDAyNXdlYWstdGVtcGxhdGUtdnRhYmxlc1wwMTQiCisgICAgIndlYWstdnRhYmxlc1wwMjB3cml0YWJsZS1zdHJpbmdzXDAxNXdyaXRlLXN0cmluZ3NcMDM1emVyby1hcy1udWxsLXBvaW50IgorICAgICJlci1jb25zdGFudFwwMjF6ZXJvLWxlbmd0aC1hcnJheSJ9OwogCiAjZW5kaWYgLy8gR0VUX0RJQUdfQVJSQVlTCiAKQEAgLTEwODEsNzAwICsxMDk5LDcxMyBAQAogICB7IC8qIGF1dG8tc3RvcmFnZS1jbGFzcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk1NSwgLyogRGlhZ0FycmF5NTAgKi8gOTAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAogICB7IC8qIGF1dG8tdmFyLWlkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk3NCwgLyogRGlhZ0FycmF5NTEgKi8gOTIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAogICB7IC8qIGF2YWlsYWJpbGl0eSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk4NiwgLyogRGlhZ0FycmF5NTIgKi8gOTQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGJhY2tlbmQtcGx1Z2luICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk5OSwgLyogRGlhZ0FycmF5NTMgKi8gMTAzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBiYWNrc2xhc2gtbmV3bGluZS1lc2NhcGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDE0LCAvKiBEaWFnQXJyYXk1NCAqLyAxMDUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGJhZC1mdW5jdGlvbi1jYXN0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMzksIC8qIERpYWdBcnJheTU1ICovIDEwNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYmFja2VuZC1wbHVnaW4gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTk5LCAvKiBEaWFnQXJyYXk1MyAqLyAxMDQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGJhY2tzbGFzaC1uZXdsaW5lLWVzY2FwZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMTQsIC8qIERpYWdBcnJheTU0ICovIDEwNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYmFkLWZ1bmN0aW9uLWNhc3QgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAzOSwgLyogRGlhZ0FycmF5NTUgKi8gMTA4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKICAgeyAvKiBiaW5hcnktbGl0ZXJhbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDU3LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNTYgKi8gMzAgfSwKLSAgeyAvKiBiaW5kLXRvLXRlbXBvcmFyeS1jb3B5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDcyLCAvKiBEaWFnQXJyYXk1NyAqLyAxMDksIC8qIERpYWdTdWJHcm91cDU3ICovIDM0IH0sCi0gIHsgLyogYmluZGluZy1pbi1jb25kaXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA5NSwgLyogRGlhZ0FycmF5NTggKi8gMTEyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBiaXRmaWVsZC1jb25zdGFudC1jb252ZXJzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAxMTE2LCAvKiBEaWFnQXJyYXk1OSAqLyAxMTQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGJpdGZpZWxkLWVudW0tY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExNDUsIC8qIERpYWdBcnJheTYwICovIDExNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogYml0ZmllbGQtd2lkdGggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE3MCwgLyogRGlhZ0FycmF5NjEgKi8gMTIwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBiaXR3aXNlLW9wLXBhcmVudGhlc2VzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTg1LCAvKiBEaWFnQXJyYXk2MiAqLyAxMjMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGJsb2NrLWNhcHR1cmUtYXV0b3JlbGVhc2luZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMDgsIC8qIERpYWdBcnJheTYzICovIDEyNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogYm9vbC1jb252ZXJzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIzNiwgLyogRGlhZ0FycmF5NjQgKi8gMTI3LCAvKiBEaWFnU3ViR3JvdXA2NCAqLyAzNiB9LAorICB7IC8qIGJpbmQtdG8tdGVtcG9yYXJ5LWNvcHkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNzIsIC8qIERpYWdBcnJheTU3ICovIDExMCwgLyogRGlhZ1N1Ykdyb3VwNTcgKi8gMzQgfSwKKyAgeyAvKiBiaW5kaW5nLWluLWNvbmRpdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDk1LCAvKiBEaWFnQXJyYXk1OCAqLyAxMTMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGJpdGZpZWxkLWNvbnN0YW50LWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgIDExMTYsIC8qIERpYWdBcnJheTU5ICovIDExNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYml0ZmllbGQtZW51bS1jb252ZXJzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE0NSwgLyogRGlhZ0FycmF5NjAgKi8gMTE3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBiaXRmaWVsZC13aWR0aCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTcwLCAvKiBEaWFnQXJyYXk2MSAqLyAxMjEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGJpdHdpc2Utb3AtcGFyZW50aGVzZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExODUsIC8qIERpYWdBcnJheTYyICovIDEyNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYmxvY2stY2FwdHVyZS1hdXRvcmVsZWFzaW5nICovICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIwOCwgLyogRGlhZ0FycmF5NjMgKi8gMTI2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBib29sLWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjM2LCAvKiBEaWFnQXJyYXk2NCAqLyAxMjgsIC8qIERpYWdTdWJHcm91cDY0ICovIDM2IH0sCiAgIHsgLyogYm9vbC1jb252ZXJzaW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI1MiwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDY1ICovIDM5IH0sCi0gIHsgLyogYnJhY2VkLXNjYWxhci1pbml0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI2OSwgLyogRGlhZ0FycmF5NjYgKi8gMTI5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBicmlkZ2UtY2FzdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjg4LCAvKiBEaWFnQXJyYXk2NyAqLyAxMzEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGJ1aWx0aW4tbWFjcm8tcmVkZWZpbmVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMDAsIC8qIERpYWdBcnJheTY4ICovIDEzNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogYnVpbHRpbi1tZW1jcHktY2hrLXNpemUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMyNCwgLyogRGlhZ0FycmF5NjkgKi8gMTM3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBidWlsdGluLXJlcXVpcmVzLWhlYWRlciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzQ4LCAvKiBEaWFnQXJyYXk3MCAqLyAxMzksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGMrKy1jb21wYXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNzIsIC8qIERpYWdBcnJheTcxICovIDE0MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYnJhY2VkLXNjYWxhci1pbml0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI2OSwgLyogRGlhZ0FycmF5NjYgKi8gMTMwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBicmlkZ2UtY2FzdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjg4LCAvKiBEaWFnQXJyYXk2NyAqLyAxMzIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGJ1aWx0aW4tbWFjcm8tcmVkZWZpbmVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMDAsIC8qIERpYWdBcnJheTY4ICovIDEzNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYnVpbHRpbi1tZW1jcHktY2hrLXNpemUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMyNCwgLyogRGlhZ0FycmF5NjkgKi8gMTM4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBidWlsdGluLXJlcXVpcmVzLWhlYWRlciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzQ4LCAvKiBEaWFnQXJyYXk3MCAqLyAxNDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGMrKy1jb21wYXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNzIsIC8qIERpYWdBcnJheTcxICovIDE0MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCiAgIHsgLyogYysrMHgtY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM4MywgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDcyICovIDQxIH0sCiAgIHsgLyogYysrMHgtZXh0ZW5zaW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM5NiwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDczICovIDQzIH0sCiAgIHsgLyogYysrMHgtbmFycm93aW5nICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQxMywgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDc0ICovIDQ1IH0sCi0gIHsgLyogYysrMTEtY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQyOSwgLyogRGlhZ0FycmF5NzUgKi8gMTQzLCAvKiBEaWFnU3ViR3JvdXA3NSAqLyA0NyB9LAotICB7IC8qIGMrKzExLWNvbXBhdC1kZXByZWNhdGVkLXdyaXRhYmxlLXN0cmluZ3MgKi8gICAgICAgICAgICAgIDE0NDIsIC8qIERpYWdBcnJheTc2ICovIDE1NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYysrMTEtY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQyOSwgLyogRGlhZ0FycmF5NzUgKi8gMTQ0LCAvKiBEaWFnU3ViR3JvdXA3NSAqLyA0NyB9LAorICB7IC8qIGMrKzExLWNvbXBhdC1kZXByZWNhdGVkLXdyaXRhYmxlLXN0cmluZ3MgKi8gICAgICAgICAgICAgIDE0NDIsIC8qIERpYWdBcnJheTc2ICovIDE1NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCiAgIHsgLyogYysrMTEtY29tcGF0LXBlZGFudGljICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ4MywgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDc3ICovIDU0IH0sCi0gIHsgLyogYysrMTEtY29tcGF0LXJlc2VydmVkLXVzZXItZGVmaW5lZC1saXRlcmFsICovICAgICAgICAgICAgMTUwNSwgLyogRGlhZ0FycmF5NzggKi8gMTU2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjKysxMS1leHRlbnNpb25zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTQ4LCAvKiBEaWFnQXJyYXk3OSAqLyAxNTgsIC8qIERpYWdTdWJHcm91cDc5ICovIDU5IH0sCi0gIHsgLyogYysrMTEtZXh0cmEtc2VtaSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU2NSwgLyogRGlhZ0FycmF5ODAgKi8gMTg0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjKysxMS1pbmxpbmUtbmFtZXNwYWNlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTgyLCAvKiBEaWFnQXJyYXk4MSAqLyAxODYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGMrKzExLWxvbmctbG9uZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2MDUsIC8qIERpYWdBcnJheTgyICovIDE4OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogYysrMTEtbmFycm93aW5nICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYyMSwgLyogRGlhZ0FycmF5ODMgKi8gMTkwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjKysxNC1iaW5hcnktbGl0ZXJhbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjM3LCAvKiBEaWFnQXJyYXk4NCAqLyAxOTgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGMrKzExLWNvbXBhdC1yZXNlcnZlZC11c2VyLWRlZmluZWQtbGl0ZXJhbCAqLyAgICAgICAgICAgIDE1MDUsIC8qIERpYWdBcnJheTc4ICovIDE1NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYysrMTEtZXh0ZW5zaW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU0OCwgLyogRGlhZ0FycmF5NzkgKi8gMTU5LCAvKiBEaWFnU3ViR3JvdXA3OSAqLyA1OSB9LAorICB7IC8qIGMrKzExLWV4dHJhLXNlbWkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NjUsIC8qIERpYWdBcnJheTgwICovIDE4NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYysrMTEtaW5saW5lLW5hbWVzcGFjZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU4MiwgLyogRGlhZ0FycmF5ODEgKi8gMTg3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjKysxMS1sb25nLWxvbmcgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjA1LCAvKiBEaWFnQXJyYXk4MiAqLyAxODksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGMrKzExLW5hcnJvd2luZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2MjEsIC8qIERpYWdBcnJheTgzICovIDE5MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYysrMTQtYmluYXJ5LWxpdGVyYWwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYzNywgLyogRGlhZ0FycmF5ODQgKi8gMTk5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKICAgeyAvKiBjKysxNC1jb21wYXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjU4LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwODUgKi8gNjMgfSwKICAgeyAvKiBjKysxNC1jb21wYXQtcGVkYW50aWMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjcxLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwODYgKi8gNjYgfSwKLSAgeyAvKiBjKysxNC1leHRlbnNpb25zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNjkzLCAvKiBEaWFnQXJyYXk4NyAqLyAyMDAsIC8qIERpYWdTdWJHcm91cDg3ICovIDcwIH0sCisgIHsgLyogYysrMTQtZXh0ZW5zaW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTY5MywgLyogRGlhZ0FycmF5ODcgKi8gMjAxLCAvKiBEaWFnU3ViR3JvdXA4NyAqLyA3MCB9LAogICB7IC8qIGMrKzE3LWNvbXBhdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3MTAsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXA4OCAqLyA3MiB9LAotICB7IC8qIGMrKzE3LWNvbXBhdC1tYW5nbGluZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3MjMsIC8qIERpYWdBcnJheTg5ICovIDIwOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYysrMTctY29tcGF0LW1hbmdsaW5nICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcyMywgLyogRGlhZ0FycmF5ODkgKi8gMjEwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKICAgeyAvKiBjKysxNy1jb21wYXQtcGVkYW50aWMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNzQ1LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwOTAgKi8gNzcgfSwKLSAgeyAvKiBjKysxNy1leHRlbnNpb25zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNzY3LCAvKiBEaWFnQXJyYXk5MSAqLyAyMTEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGMrKzE3LWV4dGVuc2lvbnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3NjcsIC8qIERpYWdBcnJheTkxICovIDIxMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCiAgIHsgLyogYysrMXktZXh0ZW5zaW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTc4NCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDkyICovIDgwIH0sCiAgIHsgLyogYysrMXotY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTgwMSwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDkzICovIDgyIH0sCiAgIHsgLyogYysrMXotY29tcGF0LW1hbmdsaW5nICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTgxNCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDk0ICovIDg0IH0sCiAgIHsgLyogYysrMXotZXh0ZW5zaW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTgzNiwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDk1ICovIDg2IH0sCi0gIHsgLyogYysrMmEtY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTg1MywgLyogRGlhZ0FycmF5OTYgKi8gMjMwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjKysyYS1jb21wYXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxODUzLCAvKiBEaWFnQXJyYXk5NiAqLyAyMzEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAogICB7IC8qIGMrKzJhLWNvbXBhdC1wZWRhbnRpYyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4NjYsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXA5NyAqLyA4OCB9LAotICB7IC8qIGMrKzJhLWV4dGVuc2lvbnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4ODgsIC8qIERpYWdBcnJheTk4ICovIDIzNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogYysrOTgtYysrMTEtYysrMTQtYysrMTctY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgMTkwNSwgLyogRGlhZ0FycmF5OTkgKi8gMjM5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjKys5OC1jKysxMS1jKysxNC1jKysxNy1jb21wYXQtcGVkYW50aWMgKi8gICAgICAgICAgICAgICAxOTM2LCAvKiBEaWFnQXJyYXkxMDAgKi8gMjQ3LCAvKiBEaWFnU3ViR3JvdXAxMDAgKi8gOTAgfSwKLSAgeyAvKiBjKys5OC1jKysxMS1jKysxNC1jb21wYXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOTc2LCAvKiBEaWFnQXJyYXkxMDEgKi8gMjQ5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjKys5OC1jKysxMS1jKysxNC1jb21wYXQtcGVkYW50aWMgKi8gICAgICAgICAgICAgICAgICAgICAyMDAxLCAvKiBEaWFnQXJyYXkxMDIgKi8gMjY3LCAvKiBEaWFnU3ViR3JvdXAxMDIgKi8gOTIgfSwKLSAgeyAvKiBjKys5OC1jKysxMS1jb21wYXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDM1LCAvKiBEaWFnQXJyYXkxMDMgKi8gMjcwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjKys5OC1jKysxMS1jb21wYXQtYmluYXJ5LWxpdGVyYWwgKi8gICAgICAgICAgICAgICAgICAgICAyMDU0LCAvKiBEaWFnQXJyYXkxMDQgKi8gMjgyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjKysyYS1leHRlbnNpb25zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxODg4LCAvKiBEaWFnQXJyYXk5OCAqLyAyMzYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGMrKzk4LWMrKzExLWMrKzE0LWMrKzE3LWNvbXBhdCAqLyAgICAgICAgICAgICAgICAgICAgICAgIDE5MDUsIC8qIERpYWdBcnJheTk5ICovIDI0NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYysrOTgtYysrMTEtYysrMTQtYysrMTctY29tcGF0LXBlZGFudGljICovICAgICAgICAgICAgICAgMTkzNiwgLyogRGlhZ0FycmF5MTAwICovIDI1NSwgLyogRGlhZ1N1Ykdyb3VwMTAwICovIDkwIH0sCisgIHsgLyogYysrOTgtYysrMTEtYysrMTQtY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTk3NiwgLyogRGlhZ0FycmF5MTAxICovIDI1NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYysrOTgtYysrMTEtYysrMTQtY29tcGF0LXBlZGFudGljICovICAgICAgICAgICAgICAgICAgICAgMjAwMSwgLyogRGlhZ0FycmF5MTAyICovIDI3NSwgLyogRGlhZ1N1Ykdyb3VwMTAyICovIDkyIH0sCisgIHsgLyogYysrOTgtYysrMTEtY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAzNSwgLyogRGlhZ0FycmF5MTAzICovIDI3OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYysrOTgtYysrMTEtY29tcGF0LWJpbmFyeS1saXRlcmFsICovICAgICAgICAgICAgICAgICAgICAgMjA1NCwgLyogRGlhZ0FycmF5MTA0ICovIDI5MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCiAgIHsgLyogYysrOTgtYysrMTEtY29tcGF0LXBlZGFudGljICovICAgICAgICAgICAgICAgICAgICAgICAgICAgMjA4OCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDEwNSAqLyA5NCB9LAotICB7IC8qIGMrKzk4LWNvbXBhdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxMTYsIC8qIERpYWdBcnJheTEwNiAqLyAyODQsIC8qIERpYWdTdWJHcm91cDEwNiAqLyA5NyB9LAotICB7IC8qIGMrKzk4LWNvbXBhdC1iaW5kLXRvLXRlbXBvcmFyeS1jb3B5ICovICAgICAgICAgICAgICAgICAgIDIxMjksIC8qIERpYWdBcnJheTEwNyAqLyAzNDQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGMrKzk4LWNvbXBhdC1leHRyYS1zZW1pICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxNjUsIC8qIERpYWdBcnJheTEwOCAqLyAzNDYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGMrKzk4LWNvbXBhdC1sb2NhbC10eXBlLXRlbXBsYXRlLWFyZ3MgKi8gICAgICAgICAgICAgICAgIDIxODksIC8qIERpYWdBcnJheTEwOSAqLyAzNDgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGMrKzk4LWNvbXBhdC1wZWRhbnRpYyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyMjcsIC8qIERpYWdBcnJheTExMCAqLyAzNTAsIC8qIERpYWdTdWJHcm91cDExMCAqLyAxMDMgfSwKLSAgeyAvKiBjKys5OC1jb21wYXQtdW5uYW1lZC10eXBlLXRlbXBsYXRlLWFyZ3MgKi8gICAgICAgICAgICAgICAyMjQ5LCAvKiBEaWFnQXJyYXkxMTEgKi8gMzYwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjMTEtZXh0ZW5zaW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMjg5LCAvKiBEaWFnQXJyYXkxMTIgKi8gMzYyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjOTktY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMzA0LCAvKiBEaWFnQXJyYXkxMTMgKi8gMzY5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjOTktZXh0ZW5zaW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMzE1LCAvKiBEaWFnQXJyYXkxMTQgKi8gMzczLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjYXN0LWFsaWduICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMzMwLCAvKiBEaWFnQXJyYXkxMTUgKi8gMzg0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjYXN0LWNhbGxpbmctY29udmVudGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMzQxLCAvKiBEaWFnQXJyYXkxMTYgKi8gMzg2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjYXN0LW9mLXNlbC10eXBlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMzY1LCAvKiBEaWFnQXJyYXkxMTcgKi8gMzg4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjYXN0LXF1YWwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMzgyLCAvKiBEaWFnQXJyYXkxMTggKi8gMzkwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjYXN0LXF1YWwtdW5yZWxhdGVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMzkyLCAvKiBEaWFnQXJyYXkxMTkgKi8gMzkzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjaGFyLWFsaWduICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNDEyLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogY2hhci1zdWJzY3JpcHRzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQyMywgLyogRGlhZ0FycmF5MTIxICovIDM5NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogY2xhbmctY2wtcGNoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQzOSwgLyogRGlhZ0FycmF5MTIyICovIDM5OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogY2xhc3MtdmFyYXJncyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQ1MiwgLyogRGlhZ0FycmF5MTIzICovIDQwNCwgLyogRGlhZ1N1Ykdyb3VwMTIzICovIDExMCB9LAotICB7IC8qIGNvbW1hICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0NjYsIC8qIERpYWdBcnJheTEyNCAqLyA0MDYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGNvbW1lbnQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0NzIsIC8qIERpYWdBcnJheTEyNSAqLyA0MDgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGNvbW1lbnRzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0ODAsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXAxMjYgKi8gMTEyIH0sCi0gIHsgLyogY29tcGFyZS1kaXN0aW5jdC1wb2ludGVyLXR5cGVzICovICAgICAgICAgICAgICAgICAgICAgICAgMjQ4OSwgLyogRGlhZ0FycmF5MTI3ICovIDQxMywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogY29tcGxleC1jb21wb25lbnQtaW5pdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUyMCwgLyogRGlhZ0FycmF5MTI4ICovIDQxNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogY29uZGl0aW9uYWwtdHlwZS1taXNtYXRjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU0MywgLyogRGlhZ0FycmF5MTI5ICovIDQxNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogY29uZGl0aW9uYWwtdW5pbml0aWFsaXplZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU2OSwgLyogRGlhZ0FycmF5MTMwICovIDQxOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogY29uZmlnLW1hY3JvcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU5NSwgLyogRGlhZ0FycmF5MTMxICovIDQyMSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogY29uc3RhbnQtY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjYwOSwgLyogRGlhZ0FycmF5MTMyICovIDQyMywgLyogRGlhZ1N1Ykdyb3VwMTMyICovIDExNCB9LAotICB7IC8qIGNvbnN0YW50LWxvZ2ljYWwtb3BlcmFuZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2MjksIC8qIERpYWdBcnJheTEzMyAqLyA0MjUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGNvbnN0ZXhwci1ub3QtY29uc3QgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2NTQsIC8qIERpYWdBcnJheTEzNCAqLyA0MjcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGNvbnN1bWVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2NzQsIC8qIERpYWdBcnJheTEzNSAqLyA0MjksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI2ODMsIC8qIERpYWdBcnJheTEzNiAqLyA0MzgsIC8qIERpYWdTdWJHcm91cDEzNiAqLyAxMTYgfSwKLSAgeyAvKiBjb252ZXJzaW9uLW51bGwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNjk0LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwMTM3ICovIDEzMiB9LAotICB7IC8qIGNvcm91dGluZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3MTAsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXAxMzggKi8gMTM0IH0sCi0gIHsgLyogY29yb3V0aW5lLW1pc3NpbmctdW5oYW5kbGVkLWV4Y2VwdGlvbiAqLyAgICAgICAgICAgICAgICAgMjcyMCwgLyogRGlhZ0FycmF5MTM5ICovIDQ0NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogY292ZXJlZC1zd2l0Y2gtZGVmYXVsdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjc1OCwgLyogRGlhZ0FycmF5MTQwICovIDQ0NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogY3BwICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjc4MSwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDE0MSAqLyAxMzYgfSwKLSAgeyAvKiBjc3RyaW5nLWZvcm1hdC1kaXJlY3RpdmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNzg1LCAvKiBEaWFnQXJyYXkxNDIgKi8gNDQ4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBjdG9yLWR0b3ItcHJpdmFjeSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyODEwLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogY3VkYS1jb21wYXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjgyOCwgLyogRGlhZ0FycmF5MTQ0ICovIDQ1MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogY3VzdG9tLWF0b21pYy1wcm9wZXJ0aWVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjg0MCwgLyogRGlhZ0FycmF5MTQ1ICovIDQ1NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZGFuZ2xpbmcgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjg2NSwgLyogRGlhZ0FycmF5MTQ2ICovIDQ1OCwgLyogRGlhZ1N1Ykdyb3VwMTQ2ICovIDEzOCB9LAotICB7IC8qIGRhbmdsaW5nLWVsc2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4NzQsIC8qIERpYWdBcnJheTE0NyAqLyA0NjEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRhbmdsaW5nLWZpZWxkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4ODgsIC8qIERpYWdBcnJheTE0OCAqLyA0NjMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRhbmdsaW5nLWluaXRpYWxpemVyLWxpc3QgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5MDMsIC8qIERpYWdBcnJheTE0OSAqLyA0NjgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRhdGUtdGltZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5MjksIC8qIERpYWdBcnJheTE1MCAqLyA0NzAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRlYWxsb2MtaW4tY2F0ZWdvcnkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5MzksIC8qIERpYWdBcnJheTE1MSAqLyA0NzIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRlYnVnLWNvbXByZXNzaW9uLXVuYXZhaWxhYmxlICovICAgICAgICAgICAgICAgICAgICAgICAgIDI5NTksIC8qIERpYWdBcnJheTE1MiAqLyA0NzQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5ODksIC8qIERpYWdBcnJheTE1MyAqLyA0NzYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRlZmF1bHRlZC1mdW5jdGlvbi1kZWxldGVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwMTcsIC8qIERpYWdBcnJheTE1NCAqLyA0NzgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRlbGVnYXRpbmctY3Rvci1jeWNsZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwNDQsIC8qIERpYWdBcnJheTE1NSAqLyA0ODAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRlbGV0ZS1pbmNvbXBsZXRlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwNjcsIC8qIERpYWdBcnJheTE1NiAqLyA0ODIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRlbGV0ZS1ub24tdmlydHVhbC1kdG9yICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwODUsIC8qIERpYWdBcnJheTE1NyAqLyA0ODUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRlcHJlY2F0ZWQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxMDksIC8qIERpYWdBcnJheTE1OCAqLyA0ODgsIC8qIERpYWdTdWJHcm91cDE1OCAqLyAxNDIgfSwKLSAgeyAvKiBkZXByZWNhdGVkLWF0dHJpYnV0ZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMTIwLCAvKiBEaWFnQXJyYXkxNTkgKi8gNDk3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMTQyLCAvKiBEaWFnQXJyYXkxNjAgKi8gNDk5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkZXByZWNhdGVkLWR5bmFtaWMtZXhjZXB0aW9uLXNwZWMgKi8gICAgICAgICAgICAgICAgICAgICAzMTY2LCAvKiBEaWFnQXJyYXkxNjEgKi8gNTA2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkZXByZWNhdGVkLWltcGxlbWVudGF0aW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMjAwLCAvKiBEaWFnQXJyYXkxNjIgKi8gNTA4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkZXByZWNhdGVkLWluY3JlbWVudC1ib29sICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMjI3LCAvKiBEaWFnQXJyYXkxNjMgKi8gNTExLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkZXByZWNhdGVkLW9iamMtaXNhLXVzYWdlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMjUzLCAvKiBEaWFnQXJyYXkxNjQgKi8gNTEzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkZXByZWNhdGVkLW9iamMtcG9pbnRlci1pbnRyb3NwZWN0aW9uICovICAgICAgICAgICAgICAgICAzMjc5LCAvKiBEaWFnQXJyYXkxNjUgKi8gNTE2LCAvKiBEaWFnU3ViR3JvdXAxNjUgKi8gMTUwIH0sCi0gIHsgLyogZGVwcmVjYXRlZC1vYmpjLXBvaW50ZXItaW50cm9zcGVjdGlvbi1wZXJmb3JtU2VsZWN0b3IgKi8gMzMxNywgLyogRGlhZ0FycmF5MTY2ICovIDUxOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZGVwcmVjYXRlZC1yZWdpc3RlciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzM3MSwgLyogRGlhZ0FycmF5MTY3ICovIDUyMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZGVwcmVjYXRlZC10aGlzLWNhcHR1cmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzM5MSwgLyogRGlhZ0FycmF5MTY4ICovIDUyMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZGVwcmVjYXRlZC13cml0YWJsZS1zdHJpbmdzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQxNSwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDE2OSAqLyAxNTIgfSwKLSAgeyAvKiBkaXJlY3QtaXZhci1hY2Nlc3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNDQzLCAvKiBEaWFnQXJyYXkxNzAgKi8gNTI0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkaXNhYmxlZC1tYWNyby1leHBhbnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNDYyLCAvKiBEaWFnQXJyYXkxNzEgKi8gNTI2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkaXNhYmxlZC1vcHRpbWl6YXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNDg3LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZGlzY2FyZC1xdWFsICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzUwOSwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRpc3RyaWJ1dGVkLW9iamVjdC1tb2RpZmllcnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgIDM1MjIsIC8qIERpYWdBcnJheTE3NCAqLyA1MjgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRpdi1ieS16ZXJvICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1NTEsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXAxNzUgKi8gMTU0IH0sCi0gIHsgLyogZGl2aXNpb24tYnktemVybyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzU2MywgLyogRGlhZ0FycmF5MTc2ICovIDUzMSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZGxsLWF0dHJpYnV0ZS1vbi1yZWRlY2xhcmF0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgMzU4MCwgLyogRGlhZ0FycmF5MTc3ICovIDUzMywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZGxsZXhwb3J0LWV4cGxpY2l0LWluc3RhbnRpYXRpb24tZGVjbCAqLyAgICAgICAgICAgICAgICAgMzYxMSwgLyogRGlhZ0FycmF5MTc4ICovIDUzNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZGxsaW1wb3J0LXN0YXRpYy1maWVsZC1kZWYgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMzY0OSwgLyogRGlhZ0FycmF5MTc5ICovIDUzNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZG9jdW1lbnRhdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzY3NiwgLyogRGlhZ0FycmF5MTgwICovIDUzOSwgLyogRGlhZ1N1Ykdyb3VwMTgwICovIDE1NiB9LAotICB7IC8qIGRvY3VtZW50YXRpb24tZGVwcmVjYXRlZC1zeW5jICovICAgICAgICAgICAgICAgICAgICAgICAgIDM2OTAsIC8qIERpYWdBcnJheTE4MSAqLyA1NTgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRvY3VtZW50YXRpb24taHRtbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM3MjAsIC8qIERpYWdBcnJheTE4MiAqLyA1NjAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGRvY3VtZW50YXRpb24tcGVkYW50aWMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM3MzksIC8qIERpYWdBcnJheTE4MyAqLyA1NjUsIC8qIERpYWdTdWJHcm91cDE4MyAqLyAxNTkgfSwKLSAgeyAvKiBkb2N1bWVudGF0aW9uLXVua25vd24tY29tbWFuZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAzNzYyLCAvKiBEaWFnQXJyYXkxODQgKi8gNTY3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkb2xsYXItaW4taWRlbnRpZmllci1leHRlbnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAzNzkyLCAvKiBEaWFnQXJyYXkxODUgKi8gNTcwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkb3VibGUtcHJvbW90aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzODIzLCAvKiBEaWFnQXJyYXkxODYgKi8gNTcyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkdXBsaWNhdGUtZGVjbC1zcGVjaWZpZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzODQwLCAvKiBEaWFnQXJyYXkxODcgKi8gNTc0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkdXBsaWNhdGUtZW51bSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzODY1LCAvKiBEaWFnQXJyYXkxODggKi8gNTc5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkdXBsaWNhdGUtbWV0aG9kLWFyZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzODgwLCAvKiBEaWFnQXJyYXkxODkgKi8gNTgxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkdXBsaWNhdGUtbWV0aG9kLW1hdGNoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOTAxLCAvKiBEaWFnQXJyYXkxOTAgKi8gNTgzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkdXBsaWNhdGUtcHJvdG9jb2wgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOTI0LCAvKiBEaWFnQXJyYXkxOTEgKi8gNTg1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkeW5hbWljLWNsYXNzLW1lbWFjY2VzcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOTQzLCAvKiBEaWFnQXJyYXkxOTIgKi8gNTg3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBkeW5hbWljLWV4Y2VwdGlvbi1zcGVjICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOTY3LCAvKiBEaWFnQXJyYXkxOTMgKi8gNTg5LCAvKiBEaWFnU3ViR3JvdXAxOTMgKi8gMTYxIH0sCi0gIHsgLyogZWZmYysrICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzk5MCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDE5NCAqLyAxNjMgfSwKLSAgeyAvKiBlbWJlZGRlZC1kaXJlY3RpdmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOTk3LCAvKiBEaWFnQXJyYXkxOTUgKi8gNTkxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBlbXB0eS1ib2R5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MDE2LCAvKiBEaWFnQXJyYXkxOTYgKi8gNTkzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBlbXB0eS1kZWNvbXBvc2l0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MDI3LCAvKiBEaWFnQXJyYXkxOTcgKi8gNTk5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBlbXB0eS10cmFuc2xhdGlvbi11bml0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MDQ3LCAvKiBEaWFnQXJyYXkxOTggKi8gNjAxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBlbmNvZGUtdHlwZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MDcwLCAvKiBEaWFnQXJyYXkxOTkgKi8gNjAzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBlbmRpZi1sYWJlbHMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MDgyLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwMjAwICovIDE2NSB9LAotICB7IC8qIGVudW0tY29tcGFyZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwOTUsIC8qIERpYWdBcnJheTIwMSAqLyA2MDUsIC8qIERpYWdTdWJHcm91cDIwMSAqLyAxNjcgfSwKLSAgeyAvKiBlbnVtLWNvbXBhcmUtc3dpdGNoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MTA4LCAvKiBEaWFnQXJyYXkyMDIgKi8gNjA3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBlbnVtLWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MTI4LCAvKiBEaWFnQXJyYXkyMDMgKi8gNjA5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBlbnVtLXRvby1sYXJnZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MTQ0LCAvKiBEaWFnQXJyYXkyMDQgKi8gNjExLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBleGNlcHRpb25zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MTU5LCAvKiBEaWFnQXJyYXkyMDUgKi8gNjE0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBleGl0LXRpbWUtZGVzdHJ1Y3RvcnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MTcwLCAvKiBEaWFnQXJyYXkyMDYgKi8gNjE4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBleHBhbnNpb24tdG8tZGVmaW5lZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MTkyLCAvKiBEaWFnQXJyYXkyMDcgKi8gNjIwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBleHBlcmltZW50YWwtaXNlbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MjEzLCAvKiBEaWFnQXJyYXkyMDggKi8gNjIzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBleHBsaWNpdC1pbml0aWFsaXplLWNhbGwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MjMxLCAvKiBEaWFnQXJyYXkyMDkgKi8gNjI2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBleHBsaWNpdC1vd25lcnNoaXAtdHlwZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MjU2LCAvKiBEaWFnQXJyYXkyMTAgKi8gNjI5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBleHRlcm4tYy1jb21wYXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MjgwLCAvKiBEaWFnQXJyYXkyMTEgKi8gNjMxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBleHRlcm4taW5pdGlhbGl6ZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Mjk2LCAvKiBEaWFnQXJyYXkyMTIgKi8gNjMzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBleHRyYSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MzE1LCAvKiBEaWFnQXJyYXkyMTMgKi8gNjM1LCAvKiBEaWFnU3ViR3JvdXAyMTMgKi8gMTY5IH0sCi0gIHsgLyogZXh0cmEtcXVhbGlmaWNhdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMyMSwgLyogRGlhZ0FycmF5MjE0ICovIDYzNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZXh0cmEtc2VtaSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDM0MSwgLyogRGlhZ0FycmF5MjE1ICovIDYzOSwgLyogRGlhZ1N1Ykdyb3VwMjE1ICovIDE3OCB9LAotICB7IC8qIGV4dHJhLXRva2VucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzNTIsIC8qIERpYWdBcnJheTIxNiAqLyA2NDIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGZhbGxiYWNrICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzNjUsIC8qIERpYWdBcnJheTIxNyAqLyA2NDUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGZpeGVkLWVudW0tZXh0ZW5zaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzNzQsIC8qIERpYWdBcnJheTIxOCAqLyA2NDcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGZsYWctZW51bSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzOTUsIC8qIERpYWdBcnJheTIxOSAqLyA2NDksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGZsZXhpYmxlLWFycmF5LWV4dGVuc2lvbnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0MDUsIC8qIERpYWdBcnJheTIyMCAqLyA2NTEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGZsb2F0LWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0MzEsIC8qIERpYWdBcnJheTIyMSAqLyA2NTQsIC8qIERpYWdTdWJHcm91cDIyMSAqLyAxODEgfSwKLSAgeyAvKiBmbG9hdC1lcXVhbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NDQ4LCAvKiBEaWFnQXJyYXkyMjIgKi8gNjU2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBmbG9hdC1vdmVyZmxvdy1jb252ZXJzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NDYwLCAvKiBEaWFnQXJyYXkyMjMgKi8gNjU4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBmbG9hdC16ZXJvLWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NDg2LCAvKiBEaWFnQXJyYXkyMjQgKi8gNjYxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBmb3ItbG9vcC1hbmFseXNpcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NTA4LCAvKiBEaWFnQXJyYXkyMjUgKi8gNjYzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBmb3JtYXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NTI2LCAvKiBEaWFnQXJyYXkyMjYgKi8gNjY2LCAvKiBEaWFnU3ViR3JvdXAyMjYgKi8gMTg0IH0sCi0gIHsgLyogZm9ybWF0LWV4dHJhLWFyZ3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDUzMywgLyogRGlhZ0FycmF5MjI3ICovIDY5MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZm9ybWF0LWludmFsaWQtc3BlY2lmaWVyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDU1MSwgLyogRGlhZ0FycmF5MjI4ICovIDY5NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZm9ybWF0LW5vbi1pc28gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDU3NiwgLyogRGlhZ0FycmF5MjI5ICovIDY5NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZm9ybWF0LW5vbmxpdGVyYWwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDU5MSwgLyogRGlhZ0FycmF5MjMwICovIDcwMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZm9ybWF0LXBlZGFudGljICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDYwOSwgLyogRGlhZ0FycmF5MjMxICovIDcwMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZm9ybWF0LXNlY3VyaXR5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDYyNSwgLyogRGlhZ0FycmF5MjMyICovIDcwNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZm9ybWF0LXkyayAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDY0MSwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGZvcm1hdC16ZXJvLWxlbmd0aCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2NTIsIC8qIERpYWdBcnJheTIzNCAqLyA3MDcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGZvcm1hdD0yICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2NzEsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXAyMzUgKi8gMTkxIH0sCi0gIHsgLyogZm91ci1jaGFyLWNvbnN0YW50cyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDY4MCwgLyogRGlhZ0FycmF5MjM2ICovIDcwOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZnJhbWUtbGFyZ2VyLXRoYW49ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDcwMCwgLyogRGlhZ0FycmF5MjM3ICovIDcxMSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZnJhbWV3b3JrLWluY2x1ZGUtcHJpdmF0ZS1mcm9tLXB1YmxpYyAqLyAgICAgICAgICAgICAgICAgNDcxOSwgLyogRGlhZ0FycmF5MjM4ICovIDcxNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZnVuY3Rpb24tZGVmLWluLW9iamMtY29udGFpbmVyICovICAgICAgICAgICAgICAgICAgICAgICAgNDc1NywgLyogRGlhZ0FycmF5MjM5ICovIDcxNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZnVuY3Rpb24tbXVsdGl2ZXJzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDc4OCwgLyogRGlhZ0FycmF5MjQwICovIDcxOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZnV0dXJlLWNvbXBhdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDgxMCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGdjYy1jb21wYXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ4MjQsIC8qIERpYWdBcnJheTI0MiAqLyA3MjEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGdsb2JhbC1jb25zdHJ1Y3RvcnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ4MzUsIC8qIERpYWdBcnJheTI0MyAqLyA3MzIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGdudSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ4NTUsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXAyNDQgKi8gMTk1IH0sCi0gIHsgLyogZ251LWFsaWdub2YtZXhwcmVzc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDg1OSwgLyogRGlhZ0FycmF5MjQ1ICovIDczNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWFub255bW91cy1zdHJ1Y3QgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDg4MiwgLyogRGlhZ0FycmF5MjQ2ICovIDczNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWFycmF5LW1lbWJlci1wYXJlbi1pbml0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkwMywgLyogRGlhZ0FycmF5MjQ3ICovIDczOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWF1dG8tdHlwZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkzMSwgLyogRGlhZ0FycmF5MjQ4ICovIDc0MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWJpbmFyeS1saXRlcmFsICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDk0NSwgLyogRGlhZ0FycmF5MjQ5ICovIDc0MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWNhc2UtcmFuZ2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDk2NCwgLyogRGlhZ0FycmF5MjUwICovIDc0NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWNvbXBsZXgtaW50ZWdlciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDk3OSwgLyogRGlhZ0FycmF5MjUxICovIDc0NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWNvbXBvdW5kLWxpdGVyYWwtaW5pdGlhbGl6ZXIgKi8gICAgICAgICAgICAgICAgICAgICAgNDk5OSwgLyogRGlhZ0FycmF5MjUyICovIDc0OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWNvbmRpdGlvbmFsLW9taXR0ZWQtb3BlcmFuZCAqLyAgICAgICAgICAgICAgICAgICAgICAgNTAzMiwgLyogRGlhZ0FycmF5MjUzICovIDc1MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWRlc2lnbmF0b3IgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTA2NCwgLyogRGlhZ0FycmF5MjU0ICovIDc1MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWVtcHR5LWluaXRpYWxpemVyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTA3OSwgLyogRGlhZ0FycmF5MjU1ICovIDc1NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWVtcHR5LXN0cnVjdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTEwMSwgLyogRGlhZ0FycmF5MjU2ICovIDc1OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWZsZXhpYmxlLWFycmF5LWluaXRpYWxpemVyICovICAgICAgICAgICAgICAgICAgICAgICAgNTExOCwgLyogRGlhZ0FycmF5MjU3ICovIDc2MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWZsZXhpYmxlLWFycmF5LXVuaW9uLW1lbWJlciAqLyAgICAgICAgICAgICAgICAgICAgICAgNTE0OSwgLyogRGlhZ0FycmF5MjU4ICovIDc2NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWZvbGRpbmctY29uc3RhbnQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTE4MSwgLyogRGlhZ0FycmF5MjU5ICovIDc2NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWltYWdpbmFyeS1jb25zdGFudCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTIwMiwgLyogRGlhZ0FycmF5MjYwICovIDc3MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWluY2x1ZGUtbmV4dCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTIyNSwgLyogRGlhZ0FycmF5MjYxICovIDc3MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LWxhYmVsLWFzLXZhbHVlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTI0MiwgLyogRGlhZ0FycmF5MjYyICovIDc3NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LXJlZGVjbGFyZWQtZW51bSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTI2MSwgLyogRGlhZ0FycmF5MjYzICovIDc3OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LXN0YXRlbWVudC1leHByZXNzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTI4MSwgLyogRGlhZ0FycmF5MjY0ICovIDc4MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LXN0YXRpYy1mbG9hdC1pbml0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMwNiwgLyogRGlhZ0FycmF5MjY1ICovIDc4MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LXN0cmluZy1saXRlcmFsLW9wZXJhdG9yLXRlbXBsYXRlICovICAgICAgICAgICAgICAgICAgNTMyOCwgLyogRGlhZ0FycmF5MjY2ICovIDc4NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LXVuaW9uLWNhc3QgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTM2NSwgLyogRGlhZ0FycmF5MjY3ICovIDc4NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LXZhcmlhYmxlLXNpemVkLXR5cGUtbm90LWF0LWVuZCAqLyAgICAgICAgICAgICAgICAgICAgNTM4MCwgLyogRGlhZ0FycmF5MjY4ICovIDc4OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LXplcm8tbGluZS1kaXJlY3RpdmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQxNSwgLyogRGlhZ0FycmF5MjY5ICovIDc5MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogZ251LXplcm8tdmFyaWFkaWMtbWFjcm8tYXJndW1lbnRzICovICAgICAgICAgICAgICAgICAgICAgNTQzOSwgLyogRGlhZ0FycmF5MjcwICovIDc5MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaGVhZGVyLWd1YXJkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQ3MywgLyogRGlhZ0FycmF5MjcxICovIDc5NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaGVhZGVyLWh5Z2llbmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQ4NiwgLyogRGlhZ0FycmF5MjcyICovIDc5NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaWRpb21hdGljLXBhcmVudGhlc2VzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTUwMSwgLyogRGlhZ0FycmF5MjczICovIDc5OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaWdub3JlZC1hdHRyaWJ1dGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTUyMywgLyogRGlhZ0FycmF5Mjc0ICovIDgwMSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaWdub3JlZC1vcHRpbWl6YXRpb24tYXJndW1lbnQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgNTU0MiwgLyogRGlhZ0FycmF5Mjc1ICovIDg2MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaWdub3JlZC1wcmFnbWEtaW50cmluc2ljICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTU3MiwgLyogRGlhZ0FycmF5Mjc2ICovIDg2MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaWdub3JlZC1wcmFnbWEtb3B0aW1pemUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTU5NywgLyogRGlhZ0FycmF5Mjc3ICovIDg2NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaWdub3JlZC1wcmFnbWFzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTYyMSwgLyogRGlhZ0FycmF5Mjc4ICovIDg2NywgLyogRGlhZ1N1Ykdyb3VwMjc4ICovIDIyNCB9LAotICB7IC8qIGlnbm9yZWQtcXVhbGlmaWVycyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU2MzcsIC8qIERpYWdBcnJheTI3OSAqLyA5MTAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGltcGxpY2l0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU2NTYsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXAyODAgKi8gMjI3IH0sCi0gIHsgLyogaW1wbGljaXQtYXRvbWljLXByb3BlcnRpZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgNTY2NSwgLyogRGlhZ0FycmF5MjgxICovIDkxNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaW1wbGljaXQtY29udmVyc2lvbi1mbG9hdGluZy1wb2ludC10by1ib29sICovICAgICAgICAgICAgNTY5MiwgLyogRGlhZ0FycmF5MjgyICovIDkxOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaW1wbGljaXQtZXhjZXB0aW9uLXNwZWMtbWlzbWF0Y2ggKi8gICAgICAgICAgICAgICAgICAgICAgNTczNSwgLyogRGlhZ0FycmF5MjgzICovIDkyMSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaW1wbGljaXQtZmFsbHRocm91Z2ggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTc2OCwgLyogRGlhZ0FycmF5Mjg0ICovIDkyMywgLyogRGlhZ1N1Ykdyb3VwMjg0ICovIDIzMCB9LAotICB7IC8qIGltcGxpY2l0LWZhbGx0aHJvdWdoLXBlci1mdW5jdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgIDU3ODksIC8qIERpYWdBcnJheTI4NSAqLyA5MjYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGltcGxpY2l0LWZsb2F0LWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU4MjMsIC8qIERpYWdBcnJheTI4NiAqLyA5MjgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgIDU4NDksIC8qIERpYWdBcnJheTI4NyAqLyA5MzEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGltcGxpY2l0LWludCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU4NzksIC8qIERpYWdBcnJheTI4OCAqLyA5MzYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGltcGxpY2l0LWludC1jb252ZXJzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU4OTIsIC8qIERpYWdBcnJheTI4OSAqLyA5MzgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGltcGxpY2l0LXJldGFpbi1zZWxmICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU5MTYsIC8qIERpYWdBcnJheTI5MCAqLyA5NDEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGltcGxpY2l0bHktdW5zaWduZWQtbGl0ZXJhbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDU5MzcsIC8qIERpYWdBcnJheTI5MSAqLyA5NDMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGltcG9ydCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU5NjUsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbXBvcnQtcHJlcHJvY2Vzc29yLWRpcmVjdGl2ZS1wZWRhbnRpYyAqLyAgICAgICAgICAgICAgICA1OTcyLCAvKiBEaWFnQXJyYXkyOTMgKi8gOTQ1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbmFjY2Vzc2libGUtYmFzZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MDExLCAvKiBEaWFnQXJyYXkyOTQgKi8gOTQ3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbmNsdWRlLW5leHQtYWJzb2x1dGUtcGF0aCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MDI5LCAvKiBEaWFnQXJyYXkyOTUgKi8gOTQ5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbmNsdWRlLW5leHQtb3V0c2lkZS1oZWFkZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICA2MDU2LCAvKiBEaWFnQXJyYXkyOTYgKi8gOTUxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbmNvbXBhdGlibGUtZXhjZXB0aW9uLXNwZWMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICA2MDg0LCAvKiBEaWFnQXJyYXkyOTcgKi8gOTUzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbmNvbXBhdGlibGUtZnVuY3Rpb24tcG9pbnRlci10eXBlcyAqLyAgICAgICAgICAgICAgICAgICA2MTEyLCAvKiBEaWFnQXJyYXkyOTggKi8gOTU2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbmNvbXBhdGlibGUtbGlicmFyeS1yZWRlY2xhcmF0aW9uICovICAgICAgICAgICAgICAgICAgICA2MTQ4LCAvKiBEaWFnQXJyYXkyOTkgKi8gOTU4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbmNvbXBhdGlibGUtbXMtc3RydWN0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MTgzLCAvKiBEaWFnQXJyYXkzMDAgKi8gOTYwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MjA2LCAvKiBEaWFnQXJyYXkzMDEgKi8gOTYzLCAvKiBEaWFnU3ViR3JvdXAzMDEgKi8gMjMyIH0sCi0gIHsgLyogaW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMtZGlzY2FyZHMtcXVhbGlmaWVycyAqLyAgICAgICAgNjIzMywgLyogRGlhZ0FycmF5MzAyICovIDk2NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaW5jb21wYXRpYmxlLXByb3BlcnR5LXR5cGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgNjI4MCwgLyogRGlhZ0FycmF5MzAzICovIDk2OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaW5jb21wYXRpYmxlLXN5c3Jvb3QgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjMwNywgLyogRGlhZ0FycmF5MzA0ICovIDk3MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaW5jb21wbGV0ZS1mcmFtZXdvcmstbW9kdWxlLWRlY2xhcmF0aW9uICovICAgICAgICAgICAgICAgNjMyOCwgLyogRGlhZ0FycmF5MzA1ICovIDk3MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaW5jb21wbGV0ZS1pbXBsZW1lbnRhdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjM2OCwgLyogRGlhZ0FycmF5MzA2ICovIDk3NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaW5jb21wbGV0ZS1tb2R1bGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjM5NCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDMwNyAqLyAyMzUgfSwKLSAgeyAvKiBpbmNvbXBsZXRlLXVtYnJlbGxhICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NDEyLCAvKiBEaWFnQXJyYXkzMDggKi8gOTc2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbmNvbnNpc3RlbnQtZGxsaW1wb3J0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NDMyLCAvKiBEaWFnQXJyYXkzMDkgKi8gOTgwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbmNvbnNpc3RlbnQtbWlzc2luZy1kZXN0cnVjdG9yLW92ZXJyaWRlICovICAgICAgICAgICAgICA2NDU1LCAvKiBEaWFnQXJyYXkzMTAgKi8gOTgzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbmNvbnNpc3RlbnQtbWlzc2luZy1vdmVycmlkZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICA2NDk2LCAvKiBEaWFnQXJyYXkzMTEgKi8gOTg1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbmNyZW1lbnQtYm9vbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NTI2LCAvKiBEaWFnQXJyYXkzMTIgKi8gOTg3LCAvKiBEaWFnU3ViR3JvdXAzMTIgKi8gMjM4IH0sCi0gIHsgLyogaW5maW5pdGUtcmVjdXJzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjU0MSwgLyogRGlhZ0FycmF5MzEzICovIDk4OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaW5pdC1zZWxmICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjU2MCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGluaXRpYWxpemVyLW92ZXJyaWRlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY1NzAsIC8qIERpYWdBcnJheTMxNSAqLyA5OTEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGluamVjdGVkLWNsYXNzLW5hbWUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY1OTIsIC8qIERpYWdBcnJheTMxNiAqLyA5OTQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGlubGluZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY2MTIsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbmxpbmUtYXNtICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NjE5LCAvKiBEaWFnQXJyYXkzMTggKi8gOTk2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbmxpbmUtbmV3LWRlbGV0ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NjMwLCAvKiBEaWFnQXJyYXkzMTkgKi8gOTk4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbnN0YW50aWF0aW9uLWFmdGVyLXNwZWNpYWxpemF0aW9uICovICAgICAgICAgICAgICAgICAgICA2NjQ4LCAvKiBEaWFnQXJyYXkzMjAgKi8gMTAwMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaW50LWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjY4MywgLyogRGlhZ0FycmF5MzIxICovIDEwMDIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGludC1jb252ZXJzaW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY2OTgsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXAzMjIgKi8gMjQwIH0sCi0gIHsgLyogaW50LXRvLXBvaW50ZXItY2FzdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjcxNCwgLyogRGlhZ0FycmF5MzIzICovIDEwMDUsIC8qIERpYWdTdWJHcm91cDMyMyAqLyAyNDIgfSwKLSAgeyAvKiBpbnQtdG8tdm9pZC1wb2ludGVyLWNhc3QgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NzM0LCAvKiBEaWFnQXJyYXkzMjQgKi8gMTAwNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaW50ZWdlci1vdmVyZmxvdyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjc1OSwgLyogRGlhZ0FycmF5MzI1ICovIDEwMDksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGludmFsaWQtY29tbWFuZC1saW5lLWFyZ3VtZW50ICovICAgICAgICAgICAgICAgICAgICAgICAgIDY3NzYsIC8qIERpYWdBcnJheTMyNiAqLyAxMDExLCAvKiBEaWFnU3ViR3JvdXAzMjYgKi8gMjQ0IH0sCi0gIHsgLyogaW52YWxpZC1jb25zdGV4cHIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjgwNiwgLyogRGlhZ0FycmF5MzI3ICovIDEwMTQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGludmFsaWQtaWJvdXRsZXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY4MjQsIC8qIERpYWdBcnJheTMyOCAqLyAxMDE2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbnZhbGlkLWluaXRpYWxpemVyLWZyb20tc3lzdGVtLWhlYWRlciAqLyAgICAgICAgICAgICAgICA2ODQxLCAvKiBEaWFnQXJyYXkzMjkgKi8gMTAxOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaW52YWxpZC1pb3MtZGVwbG95bWVudC10YXJnZXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgNjg4MCwgLyogRGlhZ0FycmF5MzMwICovIDEwMjEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGludmFsaWQtbm9yZXR1cm4gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY5MTAsIC8qIERpYWdBcnJheTMzMSAqLyAxMDIzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbnZhbGlkLW9mZnNldG9mICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2OTI3LCAvKiBEaWFnQXJyYXkzMzIgKi8gMTAyNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaW52YWxpZC1vci1ub25leGlzdGVudC1kaXJlY3RvcnkgKi8gICAgICAgICAgICAgICAgICAgICAgNjk0NCwgLyogRGlhZ0FycmF5MzMzICovIDEwMjksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGludmFsaWQtcGFydGlhbC1zcGVjaWFsaXphdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgIDY5NzcsIC8qIERpYWdBcnJheTMzNCAqLyAxMDMyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbnZhbGlkLXBjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MDA4LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogaW52YWxpZC1wcC10b2tlbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzAyMCwgLyogRGlhZ0FycmF5MzM2ICovIDEwMzQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGludmFsaWQtc291cmNlLWVuY29kaW5nICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcwMzcsIC8qIERpYWdBcnJheTMzNyAqLyAxMDM3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBpbnZhbGlkLXRva2VuLXBhc3RlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MDYxLCAvKiBEaWFnQXJyYXkzMzggKi8gMTA0MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyoganVtcC1zZWgtZmluYWxseSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzA4MSwgLyogRGlhZ0FycmF5MzM5ICovIDEwNDIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGtleXdvcmQtY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcwOTgsIC8qIERpYWdBcnJheTM0MCAqLyAxMDQ0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBrZXl3b3JkLW1hY3JvICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MTEzLCAvKiBEaWFnQXJyYXkzNDEgKi8gMTA0NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyoga25yLXByb21vdGVkLXBhcmFtZXRlciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzEyNywgLyogRGlhZ0FycmF5MzQyICovIDEwNDgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGxhbmd1YWdlLWV4dGVuc2lvbi10b2tlbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcxNTAsIC8qIERpYWdBcnJheTM0MyAqLyAxMDUwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBsYXJnZS1ieS12YWx1ZS1jb3B5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MTc1LCAvKiBEaWFnQXJyYXkzNDQgKi8gMTA1MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbGlibHRvICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzE5NSwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGxpdGVyYWwtY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcyMDIsIC8qIERpYWdBcnJheTM0NiAqLyAxMDU1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBsaXRlcmFsLXJhbmdlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MjIxLCAvKiBEaWFnQXJyYXkzNDcgKi8gMTA1OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbG9jYWwtdHlwZS10ZW1wbGF0ZS1hcmdzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzIzNSwgLyogRGlhZ0FycmF5MzQ4ICovIDEwNjEsIC8qIERpYWdTdWJHcm91cDM0OCAqLyAyNDYgfSwKLSAgeyAvKiBsb2dpY2FsLW5vdC1wYXJlbnRoZXNlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MjYwLCAvKiBEaWFnQXJyYXkzNDkgKi8gMTA2MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbG9naWNhbC1vcC1wYXJlbnRoZXNlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzI4NCwgLyogRGlhZ0FycmF5MzUwICovIDEwNjUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIGxvbmctbG9uZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDczMDcsIC8qIERpYWdBcnJheTM1MSAqLyAxMDY3LCAvKiBEaWFnU3ViR3JvdXAzNTEgKi8gMjQ4IH0sCi0gIHsgLyogbG9vcC1hbmFseXNpcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzMxNywgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDM1MiAqLyAyNTAgfSwKLSAgeyAvKiBtYWNyby1yZWRlZmluZWQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MzMxLCAvKiBEaWFnQXJyYXkzNTMgKi8gMTA2OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWFpbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzM0NywgLyogRGlhZ0FycmF5MzU0ICovIDEwNzEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1haW4tcmV0dXJuLXR5cGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDczNTIsIC8qIERpYWdBcnJheTM1NSAqLyAxMDc5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtYWxmb3JtZWQtd2FybmluZy1jaGVjayAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MzY5LCAvKiBEaWFnQXJyYXkzNTYgKi8gMTA4MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWFueS1icmFjZXMtYXJvdW5kLXNjYWxhci1pbml0ICovICAgICAgICAgICAgICAgICAgICAgICAgNzM5MywgLyogRGlhZ0FycmF5MzU3ICovIDEwODMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1heC11bnNpZ25lZC16ZXJvICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc0MjQsIC8qIERpYWdBcnJheTM1OCAqLyAxMDg1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtZW1zZXQtdHJhbnNwb3NlZC1hcmdzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NDQyLCAvKiBEaWFnQXJyYXkzNTkgKi8gMTA4NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWVtc2l6ZS1jb21wYXJpc29uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzQ2NSwgLyogRGlhZ0FycmF5MzYwICovIDEwODksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1ldGhvZC1zaWduYXR1cmVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc0ODQsIC8qIERpYWdBcnJheTM2MSAqLyAxMDkxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaWNyb3NvZnQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NTAyLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwMzYyICovIDI1MyB9LAotICB7IC8qIG1pY3Jvc29mdC1hbm9uLXRhZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1MTIsIC8qIERpYWdBcnJheTM2MyAqLyAxMDk0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaWNyb3NvZnQtY2FzdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NTMxLCAvKiBEaWFnQXJyYXkzNjQgKi8gMTA5NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWljcm9zb2Z0LWNoYXJpemUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzU0NiwgLyogRGlhZ0FycmF5MzY1ICovIDExMDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pY3Jvc29mdC1jb21tZW50LXBhc3RlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1NjQsIC8qIERpYWdBcnJheTM2NiAqLyAxMTAyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaWNyb3NvZnQtY29uc3QtaW5pdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NTg4LCAvKiBEaWFnQXJyYXkzNjcgKi8gMTEwNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWljcm9zb2Z0LWNwcC1tYWNybyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzYwOSwgLyogRGlhZ0FycmF5MzY4ICovIDExMDYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pY3Jvc29mdC1kZWZhdWx0LWFyZy1yZWRlZmluaXRpb24gKi8gICAgICAgICAgICAgICAgICAgIDc2MjksIC8qIERpYWdBcnJheTM2OSAqLyAxMTA4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaWNyb3NvZnQtZW5kLW9mLWZpbGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NjY0LCAvKiBEaWFnQXJyYXkzNzAgKi8gMTExMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWljcm9zb2Z0LWVudW0tZm9yd2FyZC1yZWZlcmVuY2UgKi8gICAgICAgICAgICAgICAgICAgICAgNzY4NiwgLyogRGlhZ0FycmF5MzcxICovIDExMTIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pY3Jvc29mdC1lbnVtLXZhbHVlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc3MTksIC8qIERpYWdBcnJheTM3MiAqLyAxMTE0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaWNyb3NvZnQtZXhjZXB0aW9uLXNwZWMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NzQwLCAvKiBEaWFnQXJyYXkzNzMgKi8gMTExNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWljcm9zb2Z0LWV4aXN0cyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzc2NSwgLyogRGlhZ0FycmF5Mzc0ICovIDExMjMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pY3Jvc29mdC1leHBsaWNpdC1jb25zdHJ1Y3Rvci1jYWxsICovICAgICAgICAgICAgICAgICAgIDc3ODIsIC8qIERpYWdBcnJheTM3NSAqLyAxMTI1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaWNyb3NvZnQtZXh0cmEtcXVhbGlmaWNhdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICA3ODE4LCAvKiBEaWFnQXJyYXkzNzYgKi8gMTEyNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWljcm9zb2Z0LWZpeGVkLWVudW0gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzg0OCwgLyogRGlhZ0FycmF5Mzc3ICovIDExMjksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pY3Jvc29mdC1mbGV4aWJsZS1hcnJheSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc4NjksIC8qIERpYWdBcnJheTM3OCAqLyAxMTMxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaWNyb3NvZnQtZ290byAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3ODk0LCAvKiBEaWFnQXJyYXkzNzkgKi8gMTEzNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWljcm9zb2Z0LWluYWNjZXNzaWJsZS1iYXNlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgNzkwOSwgLyogRGlhZ0FycmF5MzgwICovIDExMzYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pY3Jvc29mdC1pbmNsdWRlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc5MzcsIC8qIERpYWdBcnJheTM4MSAqLyAxMTM4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaWNyb3NvZnQtbXV0YWJsZS1yZWZlcmVuY2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICA3OTU1LCAvKiBEaWFnQXJyYXkzODIgKi8gMTE0MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWljcm9zb2Z0LXB1cmUtZGVmaW5pdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzk4MywgLyogRGlhZ0FycmF5MzgzICovIDExNDIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pY3Jvc29mdC1yZWRlY2xhcmUtc3RhdGljICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgwMDksIC8qIERpYWdBcnJheTM4NCAqLyAxMTQ0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaWNyb3NvZnQtc2VhbGVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MDM2LCAvKiBEaWFnQXJyYXkzODUgKi8gMTE0NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWljcm9zb2Z0LXRlbXBsYXRlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODA1MywgLyogRGlhZ0FycmF5Mzg2ICovIDExNDgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pY3Jvc29mdC11bmlvbi1tZW1iZXItcmVmZXJlbmNlICovICAgICAgICAgICAgICAgICAgICAgIDgwNzIsIC8qIERpYWdBcnJheTM4NyAqLyAxMTU2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaWNyb3NvZnQtdW5xdWFsaWZpZWQtZnJpZW5kICovICAgICAgICAgICAgICAgICAgICAgICAgICA4MTA1LCAvKiBEaWFnQXJyYXkzODggKi8gMTE1OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWljcm9zb2Z0LXVzaW5nLWRlY2wgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODEzNCwgLyogRGlhZ0FycmF5Mzg5ICovIDExNjAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pY3Jvc29mdC12b2lkLXBzZXVkby1kdG9yICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgxNTUsIC8qIERpYWdBcnJheTM5MCAqLyAxMTYyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaXNtYXRjaGVkLW5ldy1kZWxldGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MTgyLCAvKiBEaWFnQXJyYXkzOTEgKi8gMTE2NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWlzbWF0Y2hlZC1wYXJhbWV0ZXItdHlwZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgODIwNCwgLyogRGlhZ0FycmF5MzkyICovIDExNjYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pc21hdGNoZWQtcmV0dXJuLXR5cGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgyMzEsIC8qIERpYWdBcnJheTM5MyAqLyAxMTY4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaXNtYXRjaGVkLXRhZ3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MjU1LCAvKiBEaWFnQXJyYXkzOTQgKi8gMTE3MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWlzc2luZy1icmFjZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODI3MSwgLyogRGlhZ0FycmF5Mzk1ICovIDExNzMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pc3NpbmctZGVjbGFyYXRpb25zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgyODYsIC8qIERpYWdBcnJheTM5NiAqLyAxMTc1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaXNzaW5nLWV4Y2VwdGlvbi1zcGVjICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MzA3LCAvKiBEaWFnQXJyYXkzOTcgKi8gMTE4MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgODMzMCwgLyogRGlhZ0FycmF5Mzk4ICovIDExODIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgzNTcsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaXNzaW5nLWluY2x1ZGUtZGlycyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MzgyLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWlzc2luZy1tZXRob2QtcmV0dXJuLXR5cGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgODQwMywgLyogRGlhZ0FycmF5NDAxICovIDExODQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pc3Npbmctbm9lc2NhcGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg0MzAsIC8qIERpYWdBcnJheTQwMiAqLyAxMTg2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaXNzaW5nLW5vcmV0dXJuICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NDQ3LCAvKiBEaWFnQXJyYXk0MDMgKi8gMTE4OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWlzc2luZy1wcm90b3R5cGUtZm9yLWNjICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODQ2NCwgLyogRGlhZ0FycmF5NDA0ICovIDExOTEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pc3NpbmctcHJvdG90eXBlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg0ODksIC8qIERpYWdBcnJheTQwNSAqLyAxMTkzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtaXNzaW5nLXNlbGVjdG9yLW5hbWUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NTA4LCAvKiBEaWFnQXJyYXk0MDYgKi8gMTE5NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbWlzc2luZy1zeXNyb290ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODUzMCwgLyogRGlhZ0FycmF5NDA3ICovIDExOTcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1pc3NpbmctdmFyaWFibGUtZGVjbGFyYXRpb25zICovICAgICAgICAgICAgICAgICAgICAgICAgIDg1NDYsIC8qIERpYWdBcnJheTQwOCAqLyAxMTk5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtb2R1bGUtYnVpbGQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NTc2LCAvKiBEaWFnQXJyYXk0MDkgKi8gMTIwMSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbW9kdWxlLWNvbmZsaWN0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODU4OSwgLyogRGlhZ0FycmF5NDEwICovIDEyMDYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1vZHVsZS1maWxlLWNvbmZpZy1taXNtYXRjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDg2MDUsIC8qIERpYWdBcnJheTQxMSAqLyAxMjA5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtb2R1bGUtZmlsZS1leHRlbnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NjMzLCAvKiBEaWFnQXJyYXk0MTIgKi8gMTIxMSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbW9kdWxlLWltcG9ydC1pbi1leHRlcm4tYyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODY1NSwgLyogRGlhZ0FycmF5NDEzICovIDEyMTMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG1vZHVsZXMtYW1iaWd1b3VzLWludGVybmFsLWxpbmthZ2UgKi8gICAgICAgICAgICAgICAgICAgIDg2ODEsIC8qIERpYWdBcnJheTQxNCAqLyAxMjE1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtb2R1bGVzLWltcG9ydC1uZXN0ZWQtcmVkdW5kYW50ICovICAgICAgICAgICAgICAgICAgICAgICA4NzE2LCAvKiBEaWFnQXJyYXk0MTUgKi8gMTIxNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbW9zdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODc0OCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDQxNiAqLyAyODEgfSwKLSAgeyAvKiBtb3ZlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NzUzLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNDE3ICovIDMxMyB9LAotICB7IC8qIG1zdmMtaW5jbHVkZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg3NTgsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXA0MTggKi8gMzE4IH0sCi0gIHsgLyogbXN2Yy1ub3QtZm91bmQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODc3MSwgLyogRGlhZ0FycmF5NDE5ICovIDEyMTksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG11bHRpY2hhciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg3ODYsIC8qIERpYWdBcnJheTQyMCAqLyAxMjIxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBtdWx0aXBsZS1tb3ZlLXZiYXNlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Nzk2LCAvKiBEaWFnQXJyYXk0MjEgKi8gMTIyMywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbmFycm93aW5nICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODgxNiwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDQyMiAqLyAzMjAgfSwKLSAgeyAvKiBuZXN0ZWQtYW5vbi10eXBlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4ODI2LCAvKiBEaWFnQXJyYXk0MjMgKi8gMTIyNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbmVzdGVkLWV4dGVybnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODg0NCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG5ldy1yZXR1cm5zLW51bGwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg4NTksIC8qIERpYWdBcnJheTQyNSAqLyAxMjI3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBuZXdsaW5lLWVvZiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4ODc2LCAvKiBEaWFnQXJyYXk0MjYgKi8gMTIyOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbm9leGNlcHQtdHlwZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODg4OCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDQyNyAqLyAzMjIgfSwKLSAgeyAvKiBub24tZ2NjICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4OTAyLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNDI4ICovIDMyNCB9LAotICB7IC8qIG5vbi1saXRlcmFsLW51bGwtY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDg5MTAsIC8qIERpYWdBcnJheTQyOSAqLyAxMjMyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBub24tbW9kdWxhci1pbmNsdWRlLWluLWZyYW1ld29yay1tb2R1bGUgKi8gICAgICAgICAgICAgICA4OTM4LCAvKiBEaWFnQXJyYXk0MzAgKi8gMTIzNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbm9uLW1vZHVsYXItaW5jbHVkZS1pbi1tb2R1bGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgODk3OCwgLyogRGlhZ0FycmF5NDMxICovIDEyMzYsIC8qIERpYWdTdWJHcm91cDQzMSAqLyAzMjggfSwKLSAgeyAvKiBub24tcG9kLXZhcmFyZ3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MDA4LCAvKiBEaWFnQXJyYXk0MzIgKi8gMTIzOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbm9uLXZpcnR1YWwtZHRvciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTAyNCwgLyogRGlhZ0FycmF5NDMzICovIDEyNDMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG5vbm51bGwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkwNDEsIC8qIERpYWdBcnJheTQzNCAqLyAxMjQ1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBub25wb3J0YWJsZS1jZnN0cmluZ3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MDQ5LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbm9ucG9ydGFibGUtaW5jbHVkZS1wYXRoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTA3MSwgLyogRGlhZ0FycmF5NDM2ICovIDEyNDgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG5vbnBvcnRhYmxlLXN5c3RlbS1pbmNsdWRlLXBhdGggKi8gICAgICAgICAgICAgICAgICAgICAgIDkwOTYsIC8qIERpYWdBcnJheTQzNyAqLyAxMjUwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBub25wb3J0YWJsZS12ZWN0b3ItaW5pdGlhbGl6YXRpb24gKi8gICAgICAgICAgICAgICAgICAgICA5MTI4LCAvKiBEaWFnQXJyYXk0MzggKi8gMTI1MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbm9udHJpdmlhbC1tZW1hY2Nlc3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTE2MiwgLyogRGlhZ0FycmF5NDM5ICovIDEyNTQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG5zY29uc3VtZWQtbWlzbWF0Y2ggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkxODMsIC8qIERpYWdBcnJheTQ0MCAqLyAxMjU2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBuc3JldHVybnMtbWlzbWF0Y2ggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MjAzLCAvKiBEaWFnQXJyYXk0NDEgKi8gMTI1OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbnVsbC1hcml0aG1ldGljICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTIyMiwgLyogRGlhZ0FycmF5NDQyICovIDEyNjAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG51bGwtY2hhcmFjdGVyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkyMzgsIC8qIERpYWdBcnJheTQ0MyAqLyAxMjYzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBudWxsLWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MjUzLCAvKiBEaWFnQXJyYXk0NDQgKi8gMTI2NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbnVsbC1kZXJlZmVyZW5jZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTI2OSwgLyogRGlhZ0FycmF5NDQ1ICovIDEyNjgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG51bGwtcG9pbnRlci1hcml0aG1ldGljICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkyODYsIC8qIERpYWdBcnJheTQ0NiAqLyAxMjcxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBudWxsYWJpbGl0eSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MzEwLCAvKiBEaWFnQXJyYXk0NDcgKi8gMTI3NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbnVsbGFiaWxpdHktY29tcGxldGVuZXNzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTMyMiwgLyogRGlhZ0FycmF5NDQ4ICovIDEyODAsIC8qIERpYWdTdWJHcm91cDQ0OCAqLyAzMzAgfSwKLSAgeyAvKiBudWxsYWJpbGl0eS1jb21wbGV0ZW5lc3Mtb24tYXJyYXlzICovICAgICAgICAgICAgICAgICAgICA5MzQ3LCAvKiBEaWFnQXJyYXk0NDkgKi8gMTI4MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbnVsbGFiaWxpdHktZGVjbHNwZWMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTM4MiwgLyogRGlhZ0FycmF5NDUwICovIDEyODQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG51bGxhYmlsaXR5LWV4dGVuc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk0MDMsIC8qIERpYWdBcnJheTQ1MSAqLyAxMjg2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBudWxsYWJpbGl0eS1pbmZlcnJlZC1vbi1uZXN0ZWQtdHlwZSAqLyAgICAgICAgICAgICAgICAgICA5NDI1LCAvKiBEaWFnQXJyYXk0NTIgKi8gMTI4OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogbnVsbGFibGUtdG8tbm9ubnVsbC1jb252ZXJzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgOTQ2MSwgLyogRGlhZ0FycmF5NDUzICovIDEyOTAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG9iamMtYXV0b3N5bnRoZXNpcy1wcm9wZXJ0eS1pdmFyLW5hbWUtbWF0Y2ggKi8gICAgICAgICAgIDk0OTIsIC8qIERpYWdBcnJheTQ1NCAqLyAxMjkyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvYmpjLWNpcmN1bGFyLWNvbnRhaW5lciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5NTM2LCAvKiBEaWFnQXJyYXk0NTUgKi8gMTI5NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb2JqYy1jb2NvYS1hcGkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTU2MCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDQ1NiAqLyAzMzIgfSwKLSAgeyAvKiBvYmpjLWRlc2lnbmF0ZWQtaW5pdGlhbGl6ZXJzICovICAgICAgICAgICAgICAgICAgICAgICAgICA5NTc1LCAvKiBEaWFnQXJyYXk0NTcgKi8gMTI5NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb2JqYy1mbGV4aWJsZS1hcnJheSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTYwNCwgLyogRGlhZ0FycmF5NDU4ICovIDEzMDMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG9iamMtZm9yd2FyZC1jbGFzcy1yZWRlZmluaXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgIDk2MjQsIC8qIERpYWdBcnJheTQ1OSAqLyAxMzA2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvYmpjLWludGVyZmFjZS1pdmFycyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5NjU2LCAvKiBEaWFnQXJyYXk0NjAgKi8gMTMwOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb2JqYy1saXRlcmFsLWNvbXBhcmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTY3NywgLyogRGlhZ0FycmF5NDYxICovIDEzMTAsIC8qIERpYWdTdWJHcm91cDQ2MSAqLyAzMzQgfSwKLSAgeyAvKiBvYmpjLWxpdGVyYWwtY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5Njk4LCAvKiBEaWFnQXJyYXk0NjIgKi8gMTMxMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb2JqYy1tYWNyby1yZWRlZmluaXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTcyMiwgLyogRGlhZ0FycmF5NDYzICovIDEzMTUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG9iamMtbWVzc2FnaW5nLWlkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk3NDYsIC8qIERpYWdBcnJheTQ2NCAqLyAxMzE3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvYmpjLW1ldGhvZC1hY2Nlc3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5NzY0LCAvKiBEaWFnQXJyYXk0NjUgKi8gMTMxOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb2JqYy1taXNzaW5nLXByb3BlcnR5LXN5bnRoZXNpcyAqLyAgICAgICAgICAgICAgICAgICAgICAgOTc4MywgLyogRGlhZ0FycmF5NDY2ICovIDEzMjYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG9iamMtbWlzc2luZy1zdXBlci1jYWxscyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk4MTUsIC8qIERpYWdBcnJheTQ2NyAqLyAxMzI4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvYmpjLW11bHRpcGxlLW1ldGhvZC1uYW1lcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICA5ODQwLCAvKiBEaWFnQXJyYXk0NjggKi8gMTMzMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb2JqYy1ub25jb3B5LXJldGFpbi1ibG9jay1wcm9wZXJ0eSAqLyAgICAgICAgICAgICAgICAgICAgOTg2NywgLyogRGlhZ0FycmF5NDY5ICovIDEzMzIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG9iamMtbm9udW5pZmllZC1leGNlcHRpb25zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk5MDIsIC8qIERpYWdBcnJheTQ3MCAqLyAxMzM0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvYmpjLXByb3BlcnR5LWFzc2lnbi1vbi1vYmplY3QtdHlwZSAqLyAgICAgICAgICAgICAgICAgICA5OTI5LCAvKiBEaWFnQXJyYXk0NzEgKi8gMTMzNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb2JqYy1wcm9wZXJ0eS1pbXBsZW1lbnRhdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgOTk2NSwgLyogRGlhZ0FycmF5NDcyICovIDEzMzgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG9iamMtcHJvcGVydHktaW1wbGljaXQtbWlzbWF0Y2ggKi8gICAgICAgICAgICAgICAgICAgICAgIDk5OTQsIC8qIERpYWdBcnJheTQ3MyAqLyAxMzQzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvYmpjLXByb3BlcnR5LW1hdGNoZXMtY29jb2Etb3duZXJzaGlwLXJ1bGUgKi8gICAgICAgICAgICAxMDAyNiwgLyogRGlhZ0FycmF5NDc0ICovIDEzNDUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG9iamMtcHJvcGVydHktbm8tYXR0cmlidXRlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDY5LCAvKiBEaWFnQXJyYXk0NzUgKi8gMTM0NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb2JqYy1wcm9wZXJ0eS1zeW50aGVzaXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwOTYsIC8qIERpYWdBcnJheTQ3NiAqLyAxMzUwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvYmpjLXByb3RvY29sLW1ldGhvZC1pbXBsZW1lbnRhdGlvbiAqLyAgICAgICAgICAgICAgICAgICAxMDEyMCwgLyogRGlhZ0FycmF5NDc3ICovIDEzNTQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG9iamMtcHJvdG9jb2wtcHJvcGVydHktc3ludGhlc2lzICovICAgICAgICAgICAgICAgICAgICAgIDEwMTU2LCAvKiBEaWFnQXJyYXk0NzggKi8gMTM1NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb2JqYy1wcm90b2NvbC1xdWFsaWZpZXJzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAxODksIC8qIERpYWdBcnJheTQ3OSAqLyAxMzU4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvYmpjLXJlYWRvbmx5LXdpdGgtc2V0dGVyLXByb3BlcnR5ICovICAgICAgICAgICAgICAgICAgICAxMDIxNCwgLyogRGlhZ0FycmF5NDgwICovIDEzNjAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG9iamMtcmVkdW5kYW50LWFwaS11c2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMjQ5LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNDgxICovIDMzNiB9LAotICB7IC8qIG9iamMtcmVkdW5kYW50LWxpdGVyYWwtdXNlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMjcyLCAvKiBEaWFnQXJyYXk0ODIgKi8gMTM2MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb2JqYy1yb290LWNsYXNzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAyOTksIC8qIERpYWdBcnJheTQ4MyAqLyAxMzY0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvYmpjLXN0cmluZy1jb21wYXJlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDMxNSwgLyogRGlhZ0FycmF5NDg0ICovIDEzNjYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG9iamMtc3RyaW5nLWNvbmNhdGVuYXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMzM1LCAvKiBEaWFnQXJyYXk0ODUgKi8gMTM2OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb2JqYy11bnNhZmUtcGVyZm9ybS1zZWxlY3RvciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgMTAzNjEsIC8qIERpYWdBcnJheTQ4NiAqLyAxMzcwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvZHIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDM5MCwgLyogRGlhZ0FycmF5NDg3ICovIDEzNzIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG9sZC1zdHlsZS1jYXN0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMzk0LCAvKiBEaWFnQXJyYXk0ODggKi8gMTM3NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb2xkLXN0eWxlLWRlZmluaXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA0MDksIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvcGVuY2wtdW5zdXBwb3J0ZWQtcmdiYSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQzMCwgLyogRGlhZ0FycmF5NDkwICovIDEzNzYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG9wZW5tcC1jbGF1c2VzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNDU0LCAvKiBEaWFnQXJyYXk0OTEgKi8gMTM3OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb3Blbm1wLWxvb3AtZm9ybSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA0NjksIC8qIERpYWdBcnJheTQ5MiAqLyAxMzgxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvcGVubXAtdGFyZ2V0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDQ4NiwgLyogRGlhZ0FycmF5NDkzICovIDEzODQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG9wdGlvbi1pZ25vcmVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNTAwLCAvKiBEaWFnQXJyYXk0OTQgKi8gMTM4OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb3JkZXJlZC1jb21wYXJlLWZ1bmN0aW9uLXBvaW50ZXJzICovICAgICAgICAgICAgICAgICAgICAgMTA1MTUsIC8qIERpYWdBcnJheTQ5NSAqLyAxMzk2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvdXQtb2YtbGluZS1kZWNsYXJhdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDU0OSwgLyogRGlhZ0FycmF5NDk2ICovIDEzOTgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG91dC1vZi1zY29wZS1mdW5jdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNTczLCAvKiBEaWFnQXJyYXk0OTcgKi8gMTQwMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb3Zlci1hbGlnbmVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA1OTUsIC8qIERpYWdBcnJheTQ5OCAqLyAxNDAyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvdmVyZmxvdyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDYwOCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG92ZXJsZW5ndGgtc3RyaW5ncyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNjE3LCAvKiBEaWFnQXJyYXk1MDAgKi8gMTQwNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb3ZlcmxvYWRlZC1zaGlmdC1vcC1wYXJlbnRoZXNlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgMTA2MzYsIC8qIERpYWdBcnJheTUwMSAqLyAxNDA2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvdmVybG9hZGVkLXZpcnR1YWwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDY2OCwgLyogRGlhZ0FycmF5NTAyICovIDE0MDgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIG92ZXJyaWRlLW1vZHVsZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNjg3LCAvKiBEaWFnQXJyYXk1MDMgKi8gMTQxMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogb3ZlcnJpZGluZy1tZXRob2QtbWlzbWF0Y2ggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA3MDMsIC8qIERpYWdBcnJheTUwNCAqLyAxNDEyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBvdmVycmlkaW5nLXQtb3B0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDczMCwgLyogRGlhZ0FycmF5NTA1ICovIDE0MjAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHBhY2tlZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNzUwLCAvKiBEaWFnQXJyYXk1MDYgKi8gMTQyMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcGFkZGVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA3NTcsIC8qIERpYWdBcnJheTUwNyAqLyAxNDI0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBwYXJlbnRoZXNlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDc2NCwgLyogRGlhZ0FycmF5NTA4ICovIDE0MjgsIC8qIERpYWdTdWJHcm91cDUwOCAqLyAzMzggfSwKLSAgeyAvKiBwYXJlbnRoZXNlcy1lcXVhbGl0eSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDc3NiwgLyogRGlhZ0FycmF5NTA5ICovIDE0MzIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHBhcnRpYWwtYXZhaWxhYmlsaXR5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNzk3LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNTEwICovIDM0NiB9LAotICB7IC8qIHBhc3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwODE4LCAvKiBEaWFnQXJyYXk1MTEgKi8gMTQzNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcGFzcy1hbmFseXNpcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA4MjMsIC8qIERpYWdBcnJheTUxMiAqLyAxNDM2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBwYXNzLWZhaWxlZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDgzNywgLyogRGlhZ0FycmF5NTEzICovIDE0NDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHBhc3MtbWlzc2VkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwODQ5LCAvKiBEaWFnQXJyYXk1MTQgKi8gMTQ0MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcGNoLWRhdGUtdGltZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA4NjEsIC8qIERpYWdBcnJheTUxNSAqLyAxNDQ0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBwZWRhbnRpYyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDg3NSwgLyogRGlhZ0FycmF5NTE2ICovIDE0NDYsIC8qIERpYWdTdWJHcm91cDUxNiAqLyAzNDggfSwKLSAgeyAvKiBwZWRhbnRpYy1jb3JlLWZlYXR1cmVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDg4NCwgLyogRGlhZ0FycmF5NTE3ICovIDE1MTcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHBlc3NpbWl6aW5nLW1vdmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwOTA3LCAvKiBEaWFnQXJyYXk1MTggKi8gMTUxOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcG9pbnRlci1hcml0aCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA5MjQsIC8qIERpYWdBcnJheTUxOSAqLyAxNTIyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBwb2ludGVyLWJvb2wtY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDkzOCwgLyogRGlhZ0FycmF5NTIwICovIDE1MjksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHBvaW50ZXItc2lnbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwOTYyLCAvKiBEaWFnQXJyYXk1MjEgKi8gMTUzMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcG9pbnRlci10by1pbnQtY2FzdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA5NzUsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBwb2ludGVyLXR5cGUtbWlzbWF0Y2ggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDk5NSwgLyogRGlhZ0FycmF5NTIzICovIDE1MzQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHBvdGVudGlhbGx5LWV2YWx1YXRlZC1leHByZXNzaW9uICovICAgICAgICAgICAgICAgICAgICAgIDExMDE3LCAvKiBEaWFnQXJyYXk1MjQgKi8gMTUzNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcHJhZ21hLWNsYW5nLWF0dHJpYnV0ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEwNTAsIC8qIERpYWdBcnJheTUyNSAqLyAxNTM4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBwcmFnbWEtb25jZS1vdXRzaWRlLWhlYWRlciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTA3MywgLyogRGlhZ0FycmF5NTI2ICovIDE1NDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHByYWdtYS1wYWNrICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTAwLCAvKiBEaWFnQXJyYXk1MjcgKi8gMTU0MiwgLyogRGlhZ1N1Ykdyb3VwNTI3ICovIDQwMCB9LAotICB7IC8qIHByYWdtYS1wYWNrLXN1c3BpY2lvdXMtaW5jbHVkZSAqLyAgICAgICAgICAgICAgICAgICAgICAgIDExMTEyLCAvKiBEaWFnQXJyYXk1MjggKi8gMTU0NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcHJhZ21hLXN5c3RlbS1oZWFkZXItb3V0c2lkZS1oZWFkZXIgKi8gICAgICAgICAgICAgICAgICAgMTExNDMsIC8qIERpYWdBcnJheTUyOSAqLyAxNTQ3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBwcmFnbWFzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTE3OSwgLyogRGlhZ0FycmF5NTMwICovIDE1NDksIC8qIERpYWdTdWJHcm91cDUzMCAqLyA0MDIgfSwKLSAgeyAvKiBwcmVkZWZpbmVkLWlkZW50aWZpZXItb3V0c2lkZS1mdW5jdGlvbiAqLyAgICAgICAgICAgICAgICAxMTE4NywgLyogRGlhZ0FycmF5NTMxICovIDE1NTEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHByaXZhdGUtZXh0ZXJuICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMjI2LCAvKiBEaWFnQXJyYXk1MzIgKi8gMTU1MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcHJpdmF0ZS1oZWFkZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEyNDEsIC8qIERpYWdBcnJheTUzMyAqLyAxNTU1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBwcml2YXRlLW1vZHVsZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTI1NiwgLyogRGlhZ0FycmF5NTM0ICovIDE1NTcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHByb2ZpbGUtaW5zdHItbWlzc2luZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMjcxLCAvKiBEaWFnQXJyYXk1MzUgKi8gMTU2MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcHJvZmlsZS1pbnN0ci1vdXQtb2YtZGF0ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEyOTMsIC8qIERpYWdBcnJheTUzNiAqLyAxNTY0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBwcm9maWxlLWluc3RyLXVucHJvZmlsZWQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTMxOSwgLyogRGlhZ0FycmF5NTM3ICovIDE1NjYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHByb3BlcnR5LWFjY2Vzcy1kb3Qtc3ludGF4ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMzQ0LCAvKiBEaWFnQXJyYXk1MzggKi8gMTU2OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcHJvcGVydHktYXR0cmlidXRlLW1pc21hdGNoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEzNzEsIC8qIERpYWdBcnJheTUzOSAqLyAxNTcwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBwcm90b2NvbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTM5OSwgLyogRGlhZ0FycmF5NTQwICovIDE1NzUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHByb3RvY29sLXByb3BlcnR5LXN5bnRoZXNpcy1hbWJpZ3VpdHkgKi8gICAgICAgICAgICAgICAgIDExNDA4LCAvKiBEaWFnQXJyYXk1NDEgKi8gMTU3NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcXVhbGlmaWVkLXZvaWQtcmV0dXJuLXR5cGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE0NDYsIC8qIERpYWdBcnJheTU0MiAqLyAxNTc5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBxdW90ZWQtaW5jbHVkZS1pbi1mcmFtZXdvcmstaGVhZGVyICovICAgICAgICAgICAgICAgICAgICAxMTQ3MywgLyogRGlhZ0FycmF5NTQzICovIDE1ODEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHJhbmdlLWxvb3AtYW5hbHlzaXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExNTA4LCAvKiBEaWFnQXJyYXk1NDQgKi8gMTU4MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcmVhZG9ubHktaWJvdXRsZXQtcHJvcGVydHkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE1MjgsIC8qIERpYWdBcnJheTU0NSAqLyAxNTg3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiByZWNlaXZlci1leHByICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTU1NSwgLyogRGlhZ0FycmF5NTQ2ICovIDE1ODksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHJlY2VpdmVyLWZvcndhcmQtY2xhc3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExNTY5LCAvKiBEaWFnQXJyYXk1NDcgKi8gMTU5MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcmVkZWNsYXJlZC1jbGFzcy1tZW1iZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE1OTIsIC8qIERpYWdBcnJheTU0OCAqLyAxNTk0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiByZWR1bmRhbnQtZGVjbHMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTYxNiwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHJlZHVuZGFudC1tb3ZlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExNjMyLCAvKiBEaWFnQXJyYXk1NTAgKi8gMTU5NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcmVkdW5kYW50LXBhcmVucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE2NDcsIC8qIERpYWdBcnJheTU1MSAqLyAxNTk4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiByZWdpc3RlciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTY2NCwgLyogRGlhZ0FycmF5NTUyICovIDE2MDAsIC8qIERpYWdTdWJHcm91cDU1MiAqLyA0MDcgfSwKLSAgeyAvKiByZWludGVycHJldC1iYXNlLWNsYXNzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTY3MywgLyogRGlhZ0FycmF5NTUzICovIDE2MDIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHJlbWFyay1iYWNrZW5kLXBsdWdpbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExNjk2LCAvKiBEaWFnQXJyYXk1NTQgKi8gMTYwNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcmVvcmRlciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE3MTgsIC8qIERpYWdBcnJheTU1NSAqLyAxNjA2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiByZXF1aXJlcy1zdXBlci1hdHRyaWJ1dGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTcyNiwgLyogRGlhZ0FycmF5NTU2ICovIDE2MDgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHJlc2VydmVkLWlkLW1hY3JvICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExNzUxLCAvKiBEaWFnQXJyYXk1NTcgKi8gMTYxMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcmVzZXJ2ZWQtdXNlci1kZWZpbmVkLWxpdGVyYWwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgMTE3NjksIC8qIERpYWdBcnJheTU1OCAqLyAxNjEyLCAvKiBEaWFnU3ViR3JvdXA1NTggKi8gNDA5IH0sCi0gIHsgLyogcmV0YWluZWQtbGFuZ3VhZ2UtbGlua2FnZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE3OTksIC8qIERpYWdBcnJheTU1OSAqLyAxNjE1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiByZXR1cm4tc3RhY2stYWRkcmVzcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTgyNSwgLyogRGlhZ0FycmF5NTYwICovIDE2MTcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHJldHVybi1zdGQtbW92ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExODQ2LCAvKiBEaWFnQXJyYXk1NjEgKi8gMTYyMSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogcmV0dXJuLXN0ZC1tb3ZlLWluLWMrKzExICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE4NjIsIC8qIERpYWdBcnJheTU2MiAqLyAxNjIzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiByZXR1cm4tdHlwZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTg4NywgLyogRGlhZ0FycmF5NTYzICovIDE2MjUsIC8qIERpYWdTdWJHcm91cDU2MyAqLyA0MTEgfSwKLSAgeyAvKiByZXR1cm4tdHlwZS1jLWxpbmthZ2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTg5OSwgLyogRGlhZ0FycmF5NTY0ICovIDE2MzUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHNhbml0aXplLWFkZHJlc3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExOTIxLCAvKiBEaWFnQXJyYXk1NjUgKi8gMTYzOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc2VjdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE5MzgsIC8qIERpYWdBcnJheTU2NiAqLyAxNjQxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzZWxlY3RvciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTk0NiwgLyogRGlhZ0FycmF5NTY3ICovIDE2NDUsIC8qIERpYWdTdWJHcm91cDU2NyAqLyA0MTMgfSwKLSAgeyAvKiBzZWxlY3Rvci10eXBlLW1pc21hdGNoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTk1NSwgLyogRGlhZ0FycmF5NTY4ICovIDE2NDcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHNlbGYtYXNzaWduICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExOTc4LCAvKiBEaWFnQXJyYXk1NjkgKi8gMTY0OSwgLyogRGlhZ1N1Ykdyb3VwNTY5ICovIDQxNSB9LAotICB7IC8qIHNlbGYtYXNzaWduLWZpZWxkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExOTkwLCAvKiBEaWFnQXJyYXk1NzAgKi8gMTY1MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc2VsZi1hc3NpZ24tb3ZlcmxvYWRlZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIwMDgsIC8qIERpYWdBcnJheTU3MSAqLyAxNjUzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzZWxmLW1vdmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjAzMSwgLyogRGlhZ0FycmF5NTcyICovIDE2NTUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHNlbWljb2xvbi1iZWZvcmUtbWV0aG9kLWJvZHkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgIDEyMDQxLCAvKiBEaWFnQXJyYXk1NzMgKi8gMTY1NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc2VudGluZWwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIwNzAsIC8qIERpYWdBcnJheTU3NCAqLyAxNjU5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzZXF1ZW5jZS1wb2ludCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjA3OSwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDU3NSAqLyA0MTggfSwKLSAgeyAvKiBzZXJpYWxpemVkLWRpYWdub3N0aWNzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjA5NCwgLyogRGlhZ0FycmF5NTc2ICovIDE2NjIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHNoYWRvdyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMTE3LCAvKiBEaWFnQXJyYXk1NzcgKi8gMTY2NSwgLyogRGlhZ1N1Ykdyb3VwNTc3ICovIDQyMCB9LAotICB7IC8qIHNoYWRvdy1hbGwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMTI0LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNTc4ICovIDQyMyB9LAotICB7IC8qIHNoYWRvdy1maWVsZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMTM1LCAvKiBEaWFnQXJyYXk1NzkgKi8gMTY2NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc2hhZG93LWZpZWxkLWluLWNvbnN0cnVjdG9yICovICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIxNDgsIC8qIERpYWdBcnJheTU4MCAqLyAxNjY5LCAvKiBEaWFnU3ViR3JvdXA1ODAgKi8gNDI4IH0sCi0gIHsgLyogc2hhZG93LWZpZWxkLWluLWNvbnN0cnVjdG9yLW1vZGlmaWVkICovICAgICAgICAgICAgICAgICAgMTIxNzYsIC8qIERpYWdBcnJheTU4MSAqLyAxNjcxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzaGFkb3ctaXZhciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjIxMywgLyogRGlhZ0FycmF5NTgyICovIDE2NzMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHNoYWRvdy11bmNhcHR1cmVkLWxvY2FsICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMjI1LCAvKiBEaWFnQXJyYXk1ODMgKi8gMTY3NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc2hpZnQtY291bnQtbmVnYXRpdmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIyNDksIC8qIERpYWdBcnJheTU4NCAqLyAxNjc3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzaGlmdC1jb3VudC1vdmVyZmxvdyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjI3MCwgLyogRGlhZ0FycmF5NTg1ICovIDE2NzksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHNoaWZ0LW5lZ2F0aXZlLXZhbHVlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMjkxLCAvKiBEaWFnQXJyYXk1ODYgKi8gMTY4MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc2hpZnQtb3AtcGFyZW50aGVzZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIzMTIsIC8qIERpYWdBcnJheTU4NyAqLyAxNjgzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzaGlmdC1vdmVyZmxvdyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjMzMywgLyogRGlhZ0FycmF5NTg4ICovIDE2ODUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHNoaWZ0LXNpZ24tb3ZlcmZsb3cgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMzQ4LCAvKiBEaWFnQXJyYXk1ODkgKi8gMTY4NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc2hvcnRlbi02NC10by0zMiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIzNjgsIC8qIERpYWdBcnJheTU5MCAqLyAxNjg5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzaWduLWNvbXBhcmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjM4NSwgLyogRGlhZ0FycmF5NTkxICovIDE2OTEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHNpZ24tY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMzk4LCAvKiBEaWFnQXJyYXk1OTIgKi8gMTY5MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc2lnbi1wcm9tbyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI0MTQsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzaWduZWQtZW51bS1iaXRmaWVsZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjQyNSwgLyogRGlhZ0FycmF5NTk0ICovIDE2OTcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHNpemVvZi1hcnJheS1hcmd1bWVudCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNDQ2LCAvKiBEaWFnQXJyYXk1OTUgKi8gMTY5OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc2l6ZW9mLWFycmF5LWRlY2F5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI0NjgsIC8qIERpYWdBcnJheTU5NiAqLyAxNzAxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzaXplb2YtcG9pbnRlci1tZW1hY2Nlc3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjQ4NywgLyogRGlhZ0FycmF5NTk3ICovIDE3MDMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHNsYXNoLXUtZmlsZW5hbWUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNTEyLCAvKiBEaWFnQXJyYXk1OTggKi8gMTcwNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc29tZXRpbWVzLXVuaW5pdGlhbGl6ZWQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI1MjksIC8qIERpYWdBcnJheTU5OSAqLyAxNzA4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzb3VyY2UtdXNlcy1vcGVubXAgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjU1MywgLyogRGlhZ0FycmF5NjAwICovIDE3MTAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHNwaXItY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNTcyLCAvKiBEaWFnQXJyYXk2MDEgKi8gMTcxMywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc3RhY2stcHJvdGVjdG9yICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI1ODQsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzdGF0aWMtZmxvYXQtaW5pdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjYwMCwgLyogRGlhZ0FycmF5NjAzICovIDE3MTUsIC8qIERpYWdTdWJHcm91cDYwMyAqLyA0MzAgfSwKLSAgeyAvKiBzdGF0aWMtaW4taW5saW5lICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjYxOCwgLyogRGlhZ0FycmF5NjA0ICovIDE3MTcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHN0YXRpYy1pbmxpbmUtZXhwbGljaXQtaW5zdGFudGlhdGlvbiAqLyAgICAgICAgICAgICAgICAgIDEyNjM1LCAvKiBEaWFnQXJyYXk2MDUgKi8gMTcyMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc3RhdGljLWxvY2FsLWluLWlubGluZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI2NzIsIC8qIERpYWdBcnJheTYwNiAqLyAxNzIyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzdGF0aWMtc2VsZi1pbml0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjY5NSwgLyogRGlhZ0FycmF5NjA3ICovIDE3MjQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHN0ZGxpYmN4eC1ub3QtZm91bmQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNzEyLCAvKiBEaWFnQXJyYXk2MDggKi8gMTcyNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc3RyaWN0LWFsaWFzaW5nICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI3MzIsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzdHJpY3QtYWxpYXNpbmc9MCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjc0OCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHN0cmljdC1hbGlhc2luZz0xICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNzY2LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc3RyaWN0LWFsaWFzaW5nPTIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI3ODQsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzdHJpY3Qtb3ZlcmZsb3cgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjgwMiwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHN0cmljdC1vdmVyZmxvdz0wICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyODE4LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc3RyaWN0LW92ZXJmbG93PTEgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI4MzYsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzdHJpY3Qtb3ZlcmZsb3c9MiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjg1NCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHN0cmljdC1vdmVyZmxvdz0zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyODcyLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc3RyaWN0LW92ZXJmbG93PTQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI4OTAsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzdHJpY3Qtb3ZlcmZsb3c9NSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjkwOCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHN0cmljdC1wcm90b3R5cGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyOTI2LCAvKiBEaWFnQXJyYXk2MjAgKi8gMTcyOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc3RyaWN0LXNlbGVjdG9yLW1hdGNoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI5NDQsIC8qIERpYWdBcnJheTYyMSAqLyAxNzMwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzdHJpbmctY29tcGFyZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjk2NiwgLyogRGlhZ0FycmF5NjIyICovIDE3MzIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHN0cmluZy1jb252ZXJzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyOTgxLCAvKiBEaWFnQXJyYXk2MjMgKi8gMTczNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc3RyaW5nLXBsdXMtY2hhciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI5OTksIC8qIERpYWdBcnJheTYyNCAqLyAxNzM2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzdHJpbmctcGx1cy1pbnQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzAxNiwgLyogRGlhZ0FycmF5NjI1ICovIDE3MzgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHN0cmxjcHktc3RybGNhdC1zaXplICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMDMyLCAvKiBEaWFnQXJyYXk2MjYgKi8gMTc0MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc3RybmNhdC1zaXplICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMwNTMsIC8qIERpYWdBcnJheTYyNyAqLyAxNzQyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzdXBlci1jbGFzcy1tZXRob2QtbWlzbWF0Y2ggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAxMzA2NiwgLyogRGlhZ0FycmF5NjI4ICovIDE3NDYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHN1c3BpY2lvdXMtYnplcm8gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMDk0LCAvKiBEaWFnQXJyYXk2MjkgKi8gMTc0OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc3VzcGljaW91cy1tZW1hY2Nlc3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMxMTEsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXA2MzAgKi8gNDMyIH0sCi0gIHsgLyogc3dpdGNoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMxMzIsIC8qIERpYWdBcnJheTYzMSAqLyAxNzUwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzd2l0Y2gtYm9vbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzEzOSwgLyogRGlhZ0FycmF5NjMyICovIDE3NTQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHN3aXRjaC1kZWZhdWx0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMTUxLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogc3dpdGNoLWVudW0gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMxNjYsIC8qIERpYWdBcnJheTYzNCAqLyAxNzU2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiBzeW5jLWZldGNoLWFuZC1uYW5kLXNlbWFudGljcy1jaGFuZ2VkICovICAgICAgICAgICAgICAgICAxMzE3OCwgLyogRGlhZ0FycmF5NjM1ICovIDE3NTgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHN5bnRoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMjE2LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdGF1dG9sb2dpY2FsLWNvbXBhcmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMyMjIsIC8qIERpYWdBcnJheTYzNyAqLyAxNzYwLCAvKiBEaWFnU3ViR3JvdXA2MzcgKi8gNDM4IH0sCi0gIHsgLyogdGF1dG9sb2dpY2FsLWNvbnN0YW50LWNvbXBhcmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgMTMyNDMsIC8qIERpYWdBcnJheTYzOCAqLyAxNzYzLCAvKiBEaWFnU3ViR3JvdXA2MzggKi8gNDQzIH0sCi0gIHsgLyogdGF1dG9sb2dpY2FsLWNvbnN0YW50LWluLXJhbmdlLWNvbXBhcmUgKi8gICAgICAgICAgICAgICAgMTMyNzMsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXA2MzkgKi8gNDQ1IH0sCi0gIHsgLyogdGF1dG9sb2dpY2FsLWNvbnN0YW50LW91dC1vZi1yYW5nZS1jb21wYXJlICovICAgICAgICAgICAgMTMzMTIsIC8qIERpYWdBcnJheTY0MCAqLyAxNzY1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB0YXV0b2xvZ2ljYWwtb3ZlcmxhcC1jb21wYXJlICovICAgICAgICAgICAgICAgICAgICAgICAgICAxMzM1NSwgLyogRGlhZ0FycmF5NjQxICovIDE3NjcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHRhdXRvbG9naWNhbC1wb2ludGVyLWNvbXBhcmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgIDEzMzg0LCAvKiBEaWFnQXJyYXk2NDIgKi8gMTc2OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdGF1dG9sb2dpY2FsLXR5cGUtbGltaXQtY29tcGFyZSAqLyAgICAgICAgICAgICAgICAgICAgICAgMTM0MTMsIC8qIERpYWdBcnJheTY0MyAqLyAxNzcyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB0YXV0b2xvZ2ljYWwtdW5kZWZpbmVkLWNvbXBhcmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAxMzQ0NSwgLyogRGlhZ0FycmF5NjQ0ICovIDE3NzQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHRhdXRvbG9naWNhbC11bnNpZ25lZC1lbnVtLXplcm8tY29tcGFyZSAqLyAgICAgICAgICAgICAgIDEzNDc2LCAvKiBEaWFnQXJyYXk2NDUgKi8gMTc3NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdGF1dG9sb2dpY2FsLXVuc2lnbmVkLXplcm8tY29tcGFyZSAqLyAgICAgICAgICAgICAgICAgICAgMTM1MTYsIC8qIERpYWdBcnJheTY0NiAqLyAxNzc5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB0ZW50YXRpdmUtZGVmaW5pdGlvbi1pbmNvbXBsZXRlLXR5cGUgKi8gICAgICAgICAgICAgICAgICAxMzU1MSwgLyogRGlhZ0FycmF5NjQ3ICovIDE3ODEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHRocmVhZC1zYWZldHkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNTg4LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNjQ4ICovIDQ0OSB9LAotICB7IC8qIHRocmVhZC1zYWZldHktYW5hbHlzaXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNjAyLCAvKiBEaWFnQXJyYXk2NDkgKi8gMTc4MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdGhyZWFkLXNhZmV0eS1hdHRyaWJ1dGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM2MjUsIC8qIERpYWdBcnJheTY1MCAqLyAxODAxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB0aHJlYWQtc2FmZXR5LWJldGEgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzY1MCwgLyogRGlhZ0FycmF5NjUxICovIDE4MDksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHRocmVhZC1zYWZldHktbmVnYXRpdmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNjY5LCAvKiBEaWFnQXJyYXk2NTIgKi8gMTgxMSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdGhyZWFkLXNhZmV0eS1wcmVjaXNlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM2OTIsIC8qIERpYWdBcnJheTY1MyAqLyAxODEzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB0aHJlYWQtc2FmZXR5LXJlZmVyZW5jZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzcxNCwgLyogRGlhZ0FycmF5NjU0ICovIDE4MTcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHRocmVhZC1zYWZldHktdmVyYm9zZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNzM4LCAvKiBEaWFnQXJyYXk2NTUgKi8gMTgyMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdHJpZ3JhcGhzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM3NjAsIC8qIERpYWdBcnJheTY1NiAqLyAxODIyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB0eXBlLWxpbWl0cyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzc3MCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHR5cGUtc2FmZXR5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNzgyLCAvKiBEaWFnQXJyYXk2NTggKi8gMTgyNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdHlwZWRlZi1yZWRlZmluaXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM3OTQsIC8qIERpYWdBcnJheTY1OSAqLyAxODMxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB0eXBlbmFtZS1taXNzaW5nICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzgxNSwgLyogRGlhZ0FycmF5NjYwICovIDE4MzMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVuYWJsZS10by1vcGVuLXN0YXRzLWZpbGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzODMyLCAvKiBEaWFnQXJyYXk2NjEgKi8gMTgzNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW5hdmFpbGFibGUtZGVjbGFyYXRpb25zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM4NTgsIC8qIERpYWdBcnJheTY2MiAqLyAxODM3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bmRlY2xhcmVkLXNlbGVjdG9yICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzg4MywgLyogRGlhZ0FycmF5NjYzICovIDE4MzksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVuZGVmICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzOTAzLCAvKiBEaWFnQXJyYXk2NjQgKi8gMTg0MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW5kZWZpbmVkLWJvb2wtY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM5MDksIC8qIERpYWdBcnJheTY2NSAqLyAxODQ0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bmRlZmluZWQtZnVuYy10ZW1wbGF0ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzkzNSwgLyogRGlhZ0FycmF5NjY2ICovIDE4NDcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVuZGVmaW5lZC1pbmxpbmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzOTU5LCAvKiBEaWFnQXJyYXk2NjcgKi8gMTg0OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW5kZWZpbmVkLWludGVybmFsICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM5NzYsIC8qIERpYWdBcnJheTY2OCAqLyAxODUxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bmRlZmluZWQtaW50ZXJuYWwtdHlwZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzk5NSwgLyogRGlhZ0FycmF5NjY5ICovIDE4NTMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVuZGVmaW5lZC1yZWludGVycHJldC1jYXN0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MDE5LCAvKiBEaWFnQXJyYXk2NzAgKi8gMTg1NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW5kZWZpbmVkLXZhci10ZW1wbGF0ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQwNDYsIC8qIERpYWdBcnJheTY3MSAqLyAxODU4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bmV2YWx1YXRlZC1leHByZXNzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDA2OSwgLyogRGlhZ0FycmF5NjcyICovIDE4NjAsIC8qIERpYWdTdWJHcm91cDY3MiAqLyA0NTQgfSwKLSAgeyAvKiB1bmd1YXJkZWQtYXZhaWxhYmlsaXR5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDA5MiwgLyogRGlhZ0FycmF5NjczICovIDE4NjIsIC8qIERpYWdTdWJHcm91cDY3MyAqLyA0NTYgfSwKLSAgeyAvKiB1bmd1YXJkZWQtYXZhaWxhYmlsaXR5LW5ldyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDExNSwgLyogRGlhZ0FycmF5Njc0ICovIDE4NjQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVuaWNvZGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MTQyLCAvKiBEaWFnQXJyYXk2NzUgKi8gMTg2NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW5pY29kZS1ob21vZ2x5cGggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQxNTAsIC8qIERpYWdBcnJheTY3NiAqLyAxODcyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bmljb2RlLXdoaXRlc3BhY2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDE2OCwgLyogRGlhZ0FycmF5Njc3ICovIDE4NzQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVuaWNvZGUtemVyby13aWR0aCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MTg3LCAvKiBEaWFnQXJyYXk2NzggKi8gMTg3NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW5pbml0aWFsaXplZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQyMDYsIC8qIERpYWdBcnJheTY3OSAqLyAxODc4LCAvKiBEaWFnU3ViR3JvdXA2NzkgKi8gNDU4IH0sCi0gIHsgLyogdW5rbm93bi1hcmd1bWVudCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQyMjAsIC8qIERpYWdBcnJheTY4MCAqLyAxODg2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bmtub3duLWF0dHJpYnV0ZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDIzNywgLyogRGlhZ0FycmF5NjgxICovIDE4ODksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVua25vd24tZXNjYXBlLXNlcXVlbmNlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MjU2LCAvKiBEaWFnQXJyYXk2ODIgKi8gMTg5MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW5rbm93bi1wcmFnbWFzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQyODAsIC8qIERpYWdBcnJheTY4MyAqLyAxODkzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bmtub3duLXNhbml0aXplcnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDI5NiwgLyogRGlhZ0FycmF5Njg0ICovIDE5MTEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVua25vd24td2FybmluZy1vcHRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MzE1LCAvKiBEaWFnQXJyYXk2ODUgKi8gMTkxMywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW5uYW1lZC10eXBlLXRlbXBsYXRlLWFyZ3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQzMzgsIC8qIERpYWdBcnJheTY4NiAqLyAxOTE3LCAvKiBEaWFnU3ViR3JvdXA2ODYgKi8gNDYxIH0sCi0gIHsgLyogdW5uZWVkZWQtaW50ZXJuYWwtZGVjbGFyYXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgMTQzNjUsIC8qIERpYWdBcnJheTY4NyAqLyAxOTE5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bm5lZWRlZC1tZW1iZXItZnVuY3Rpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDM5NSwgLyogRGlhZ0FycmF5Njg4ICovIDE5MjIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVucmVhY2hhYmxlLWNvZGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0NDIwLCAvKiBEaWFnQXJyYXk2ODkgKi8gMTkyNCwgLyogRGlhZ1N1Ykdyb3VwNjg5ICovIDQ2MyB9LAotICB7IC8qIHVucmVhY2hhYmxlLWNvZGUtYWdncmVzc2l2ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0NDM3LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNjkwICovIDQ2NSB9LAotICB7IC8qIHVucmVhY2hhYmxlLWNvZGUtYnJlYWsgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0NDY1LCAvKiBEaWFnQXJyYXk2OTEgKi8gMTkyNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW5yZWFjaGFibGUtY29kZS1sb29wLWluY3JlbWVudCAqLyAgICAgICAgICAgICAgICAgICAgICAgMTQ0ODgsIC8qIERpYWdBcnJheTY5MiAqLyAxOTI4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bnJlYWNoYWJsZS1jb2RlLXJldHVybiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDUyMCwgLyogRGlhZ0FycmF5NjkzICovIDE5MzAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVuc2VxdWVuY2VkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0NTQ0LCAvKiBEaWFnQXJyYXk2OTQgKi8gMTkzMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW5zdXBwb3J0ZWQtYWJzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ1NTYsIC8qIERpYWdBcnJheTY5NSAqLyAxOTM1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bnN1cHBvcnRlZC1hdmFpbGFiaWxpdHktZ3VhcmQgKi8gICAgICAgICAgICAgICAgICAgICAgICAxNDU3MiwgLyogRGlhZ0FycmF5Njk2ICovIDE5MzgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVuc3VwcG9ydGVkLWNiICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0NjAzLCAvKiBEaWFnQXJyYXk2OTcgKi8gMTk0MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW5zdXBwb3J0ZWQtZGxsLWJhc2UtY2xhc3MtdGVtcGxhdGUgKi8gICAgICAgICAgICAgICAgICAgMTQ2MTgsIC8qIERpYWdBcnJheTY5OCAqLyAxOTQyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bnN1cHBvcnRlZC1mcmllbmQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDY1NCwgLyogRGlhZ0FycmF5Njk5ICovIDE5NDQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVuc3VwcG9ydGVkLWdwb3B0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0NjczLCAvKiBEaWFnQXJyYXk3MDAgKi8gMTk0NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW5zdXBwb3J0ZWQtbmFuICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ2OTEsIC8qIERpYWdBcnJheTcwMSAqLyAxOTQ5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bnN1cHBvcnRlZC10YXJnZXQtb3B0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDcwNywgLyogRGlhZ0FycmF5NzAyICovIDE5NTIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVuc3VwcG9ydGVkLXZpc2liaWxpdHkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0NzMwLCAvKiBEaWFnQXJyYXk3MDMgKi8gMTk1NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW51c2FibGUtcGFydGlhbC1zcGVjaWFsaXphdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgMTQ3NTMsIC8qIERpYWdBcnJheTcwNCAqLyAxOTU2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bnVzZWQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDc4NSwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDcwNSAqLyA0NjkgfSwKLSAgeyAvKiB1bnVzZWQtYXJndW1lbnQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDc5MiwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgIDE0ODA4LCAvKiBEaWFnQXJyYXk3MDcgKi8gMTk1OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW51c2VkLWNvbXBhcmlzb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ4MzcsIC8qIERpYWdBcnJheTcwOCAqLyAxOTY2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bnVzZWQtY29uc3QtdmFyaWFibGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDg1NSwgLyogRGlhZ0FycmF5NzA5ICovIDE5NjgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVudXNlZC1leGNlcHRpb24tcGFyYW1ldGVyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0ODc3LCAvKiBEaWFnQXJyYXk3MTAgKi8gMTk3MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW51c2VkLWZ1bmN0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ5MDQsIC8qIERpYWdBcnJheTcxMSAqLyAxOTcyLCAvKiBEaWFnU3ViR3JvdXA3MTEgKi8gNDc5IH0sCi0gIHsgLyogdW51c2VkLWdldHRlci1yZXR1cm4tdmFsdWUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ5MjAsIC8qIERpYWdBcnJheTcxMiAqLyAxOTc0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bnVzZWQtbGFiZWwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDk0NywgLyogRGlhZ0FycmF5NzEzICovIDE5NzYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVudXNlZC1sYW1iZGEtY2FwdHVyZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0OTYwLCAvKiBEaWFnQXJyYXk3MTQgKi8gMTk3OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW51c2VkLWxvY2FsLXR5cGVkZWYgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ5ODIsIC8qIERpYWdBcnJheTcxNSAqLyAxOTgwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bnVzZWQtbG9jYWwtdHlwZWRlZnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTAwMywgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDcxNiAqLyA0ODEgfSwKLSAgeyAvKiB1bnVzZWQtbWFjcm9zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTAyNSwgLyogRGlhZ0FycmF5NzE3ICovIDE5ODIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVudXNlZC1tZW1iZXItZnVuY3Rpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MDM5LCAvKiBEaWFnQXJyYXk3MTggKi8gMTk4NCwgLyogRGlhZ1N1Ykdyb3VwNzE4ICovIDQ4MyB9LAotICB7IC8qIHVudXNlZC1wYXJhbWV0ZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MDYyLCAvKiBEaWFnQXJyYXk3MTkgKi8gMTk4NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW51c2VkLXByaXZhdGUtZmllbGQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUwNzksIC8qIERpYWdBcnJheTcyMCAqLyAxOTg4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1bnVzZWQtcHJvcGVydHktaXZhciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTEwMCwgLyogRGlhZ0FycmF5NzIxICovIDE5OTAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVudXNlZC1yZXN1bHQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MTIxLCAvKiBEaWFnQXJyYXk3MjIgKi8gMTk5MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdW51c2VkLXRlbXBsYXRlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUxMzUsIC8qIERpYWdBcnJheTcyMyAqLyAxOTk0LCAvKiBEaWFnU3ViR3JvdXA3MjMgKi8gNDg1IH0sCi0gIHsgLyogdW51c2VkLXZhbHVlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUxNTEsIC8qIERpYWdBcnJheTcyNCAqLyAxOTk2LCAvKiBEaWFnU3ViR3JvdXA3MjQgKi8gNDg3IH0sCi0gIHsgLyogdW51c2VkLXZhcmlhYmxlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUxNjQsIC8qIERpYWdBcnJheTcyNSAqLyAyMDAxLCAvKiBEaWFnU3ViR3JvdXA3MjUgKi8gNDkxIH0sCi0gIHsgLyogdW51c2VkLXZvbGF0aWxlLWx2YWx1ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUxODAsIC8qIERpYWdBcnJheTcyNiAqLyAyMDAzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB1c2VkLWJ1dC1tYXJrZWQtdW51c2VkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTIwMywgLyogRGlhZ0FycmF5NzI3ICovIDIwMDUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHVzZXItZGVmaW5lZC1saXRlcmFscyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MjI2LCAvKiBEaWFnQXJyYXk3MjggKi8gMjAwNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdXNlci1kZWZpbmVkLXdhcm5pbmdzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUyNDgsIC8qIERpYWdBcnJheTcyOSAqLyAyMDA5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB2YXJhcmdzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTI3MCwgLyogRGlhZ0FycmF5NzMwICovIDIwMTEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHZhcmlhZGljLW1hY3JvcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1Mjc4LCAvKiBEaWFnQXJyYXk3MzEgKi8gMjAxNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdmVjLWVsZW0tc2l6ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUyOTQsIC8qIERpYWdBcnJheTczMiAqLyAyMDE5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB2ZWN0b3ItY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTMwOCwgLyogRGlhZ0FycmF5NzMzICovIDIwMjEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHZlY3Rvci1jb252ZXJzaW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MzI2LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNzM0ICovIDQ5MyB9LAotICB7IC8qIHZleGluZy1wYXJzZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MzQ1LCAvKiBEaWFnQXJyYXk3MzUgKi8gMjAyMywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdmlzaWJpbGl0eSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUzNTgsIC8qIERpYWdBcnJheTczNiAqLyAyMDI3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB2bGEgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTM2OSwgLyogRGlhZ0FycmF5NzM3ICovIDIwMzAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHZsYS1leHRlbnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MzczLCAvKiBEaWFnQXJyYXk3MzggKi8gMjAzMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogdm9pZC1wdHItZGVyZWZlcmVuY2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUzODcsIC8qIERpYWdBcnJheTczOSAqLyAyMDM0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB2b2xhdGlsZS1yZWdpc3Rlci12YXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTQwOCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHdlYWstdGVtcGxhdGUtdnRhYmxlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NDMwLCAvKiBEaWFnQXJyYXk3NDEgKi8gMjAzNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCi0gIHsgLyogd2Vhay12dGFibGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU0NTIsIC8qIERpYWdBcnJheTc0MiAqLyAyMDM4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKLSAgeyAvKiB3cml0YWJsZS1zdHJpbmdzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTQ2NSwgLyogRGlhZ0FycmF5NzQzICovIDIwNDAsIC8qIERpYWdTdWJHcm91cDc0MyAqLyA0OTUgfSwKLSAgeyAvKiB3cml0ZS1zdHJpbmdzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTQ4MiwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDc0NCAqLyA0OTcgfSwKLSAgeyAvKiB6ZXJvLWFzLW51bGwtcG9pbnRlci1jb25zdGFudCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAxNTQ5NiwgLyogRGlhZ0FycmF5NzQ1ICovIDIwNDIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAotICB7IC8qIHplcm8tbGVuZ3RoLWFycmF5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NTI2LCAvKiBEaWFnQXJyYXk3NDYgKi8gMjA0NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYysrOTgtY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjExNiwgLyogRGlhZ0FycmF5MTA2ICovIDI5MiwgLyogRGlhZ1N1Ykdyb3VwMTA2ICovIDk3IH0sCisgIHsgLyogYysrOTgtY29tcGF0LWJpbmQtdG8tdGVtcG9yYXJ5LWNvcHkgKi8gICAgICAgICAgICAgICAgICAgMjEyOSwgLyogRGlhZ0FycmF5MTA3ICovIDM1MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYysrOTgtY29tcGF0LWV4dHJhLXNlbWkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjE2NSwgLyogRGlhZ0FycmF5MTA4ICovIDM1NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYysrOTgtY29tcGF0LWxvY2FsLXR5cGUtdGVtcGxhdGUtYXJncyAqLyAgICAgICAgICAgICAgICAgMjE4OSwgLyogRGlhZ0FycmF5MTA5ICovIDM1NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogYysrOTgtY29tcGF0LXBlZGFudGljICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjIyNywgLyogRGlhZ0FycmF5MTEwICovIDM1OCwgLyogRGlhZ1N1Ykdyb3VwMTEwICovIDEwMyB9LAorICB7IC8qIGMrKzk4LWNvbXBhdC11bm5hbWVkLXR5cGUtdGVtcGxhdGUtYXJncyAqLyAgICAgICAgICAgICAgIDIyNDksIC8qIERpYWdBcnJheTExMSAqLyAzNjgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGMxMS1leHRlbnNpb25zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyODksIC8qIERpYWdBcnJheTExMiAqLyAzNzAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGM5OS1jb21wYXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzMDQsIC8qIERpYWdBcnJheTExMyAqLyAzNzcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGM5OS1leHRlbnNpb25zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzMTUsIC8qIERpYWdBcnJheTExNCAqLyAzODEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGNhbGwtdG8tcHVyZS12aXJ0dWFsLWZyb20tY3Rvci1kdG9yICovICAgICAgICAgICAgICAgICAgIDIzMzAsIC8qIERpYWdBcnJheTExNSAqLyAzOTIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGNhc3QtYWxpZ24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzNjYsIC8qIERpYWdBcnJheTExNiAqLyAzOTQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGNhc3QtY2FsbGluZy1jb252ZW50aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzNzcsIC8qIERpYWdBcnJheTExNyAqLyAzOTYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGNhc3Qtb2Ytc2VsLXR5cGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0MDEsIC8qIERpYWdBcnJheTExOCAqLyAzOTgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGNhc3QtcXVhbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0MTgsIC8qIERpYWdBcnJheTExOSAqLyA0MDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGNhc3QtcXVhbC11bnJlbGF0ZWQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0MjgsIC8qIERpYWdBcnJheTEyMCAqLyA0MDMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGNoYXItYWxpZ24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0NDgsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjaGFyLXN1YnNjcmlwdHMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNDU5LCAvKiBEaWFnQXJyYXkxMjIgKi8gNDA1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjbGFuZy1jbC1wY2ggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNDc1LCAvKiBEaWFnQXJyYXkxMjMgKi8gNDA4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjbGFzcy12YXJhcmdzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNDg4LCAvKiBEaWFnQXJyYXkxMjQgKi8gNDE0LCAvKiBEaWFnU3ViR3JvdXAxMjQgKi8gMTEwIH0sCisgIHsgLyogY29tbWEgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUwMiwgLyogRGlhZ0FycmF5MTI1ICovIDQxNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogY29tbWVudCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUwOCwgLyogRGlhZ0FycmF5MTI2ICovIDQxOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogY29tbWVudHMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUxNiwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDEyNyAqLyAxMTIgfSwKKyAgeyAvKiBjb21wYXJlLWRpc3RpbmN0LXBvaW50ZXItdHlwZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAyNTI1LCAvKiBEaWFnQXJyYXkxMjggKi8gNDIzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjb21wbGV4LWNvbXBvbmVudC1pbml0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTU2LCAvKiBEaWFnQXJyYXkxMjkgKi8gNDI1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjb25kaXRpb25hbC10eXBlLW1pc21hdGNoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTc5LCAvKiBEaWFnQXJyYXkxMzAgKi8gNDI3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjb25kaXRpb25hbC11bmluaXRpYWxpemVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNjA1LCAvKiBEaWFnQXJyYXkxMzEgKi8gNDI5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjb25maWctbWFjcm9zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNjMxLCAvKiBEaWFnQXJyYXkxMzIgKi8gNDMxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjb25zdGFudC1jb252ZXJzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNjQ1LCAvKiBEaWFnQXJyYXkxMzMgKi8gNDMzLCAvKiBEaWFnU3ViR3JvdXAxMzMgKi8gMTE0IH0sCisgIHsgLyogY29uc3RhbnQtbG9naWNhbC1vcGVyYW5kICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjY2NSwgLyogRGlhZ0FycmF5MTM0ICovIDQzNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogY29uc3RleHByLW5vdC1jb25zdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjY5MCwgLyogRGlhZ0FycmF5MTM1ICovIDQzNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogY29uc3VtZWQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjcxMCwgLyogRGlhZ0FycmF5MTM2ICovIDQzOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjcxOSwgLyogRGlhZ0FycmF5MTM3ICovIDQ0OCwgLyogRGlhZ1N1Ykdyb3VwMTM3ICovIDExNiB9LAorICB7IC8qIGNvbnZlcnNpb24tbnVsbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3MzAsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXAxMzggKi8gMTMyIH0sCisgIHsgLyogY29yb3V0aW5lICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjc0NiwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDEzOSAqLyAxMzQgfSwKKyAgeyAvKiBjb3JvdXRpbmUtbWlzc2luZy11bmhhbmRsZWQtZXhjZXB0aW9uICovICAgICAgICAgICAgICAgICAyNzU2LCAvKiBEaWFnQXJyYXkxNDAgKi8gNDU0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjb3ZlcmVkLXN3aXRjaC1kZWZhdWx0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNzk0LCAvKiBEaWFnQXJyYXkxNDEgKi8gNDU2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjcHAgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyODE3LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwMTQyICovIDEzNiB9LAorICB7IC8qIGNzdHJpbmctZm9ybWF0LWRpcmVjdGl2ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4MjEsIC8qIERpYWdBcnJheTE0MyAqLyA0NTgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGN0YWQtbWF5YmUtdW5zdXBwb3J0ZWQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4NDYsIC8qIERpYWdBcnJheTE0NCAqLyA0NjAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGN0b3ItZHRvci1wcml2YWN5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4NjksIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjdHUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyODg3LCAvKiBEaWFnQXJyYXkxNDYgKi8gNDYyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjdWRhLWNvbXBhdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyODkxLCAvKiBEaWFnQXJyYXkxNDcgKi8gNDY0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBjdXN0b20tYXRvbWljLXByb3BlcnRpZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOTAzLCAvKiBEaWFnQXJyYXkxNDggKi8gNDcwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBkYW5nbGluZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOTI4LCAvKiBEaWFnQXJyYXkxNDkgKi8gNDcyLCAvKiBEaWFnU3ViR3JvdXAxNDkgKi8gMTM4IH0sCisgIHsgLyogZGFuZ2xpbmctZWxzZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjkzNywgLyogRGlhZ0FycmF5MTUwICovIDQ3NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGFuZ2xpbmctZmllbGQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjk1MSwgLyogRGlhZ0FycmF5MTUxICovIDQ3NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGFuZ2xpbmctaW5pdGlhbGl6ZXItbGlzdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjk2NiwgLyogRGlhZ0FycmF5MTUyICovIDQ4MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGFyd2luLXNkay1zZXR0aW5ncyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjk5MiwgLyogRGlhZ0FycmF5MTUzICovIDQ4NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGF0ZS10aW1lICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAxMiwgLyogRGlhZ0FycmF5MTU0ICovIDQ4NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVhbGxvYy1pbi1jYXRlZ29yeSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAyMiwgLyogRGlhZ0FycmF5MTU1ICovIDQ4OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVidWctY29tcHJlc3Npb24tdW5hdmFpbGFibGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgMzA0MiwgLyogRGlhZ0FycmF5MTU2ICovIDQ5MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgMzA3MiwgLyogRGlhZ0FycmF5MTU3ICovIDQ5MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVmYXVsdGVkLWZ1bmN0aW9uLWRlbGV0ZWQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEwMCwgLyogRGlhZ0FycmF5MTU4ICovIDQ5NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVsZWdhdGluZy1jdG9yLWN5Y2xlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEyNywgLyogRGlhZ0FycmF5MTU5ICovIDQ5NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVsZXRlLWFic3RyYWN0LW5vbi12aXJ0dWFsLWR0b3IgKi8gICAgICAgICAgICAgICAgICAgICAgMzE1MCwgLyogRGlhZ0FycmF5MTYwICovIDQ5OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVsZXRlLWluY29tcGxldGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzE4MywgLyogRGlhZ0FycmF5MTYxICovIDUwMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVsZXRlLW5vbi1hYnN0cmFjdC1ub24tdmlydHVhbC1kdG9yICovICAgICAgICAgICAgICAgICAgMzIwMSwgLyogRGlhZ0FycmF5MTYyICovIDUwMywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVsZXRlLW5vbi12aXJ0dWFsLWR0b3IgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIzOCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDE2MyAqLyAxNDIgfSwKKyAgeyAvKiBkZXByZWNhdGVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMjYyLCAvKiBEaWFnQXJyYXkxNjQgKi8gNTA1LCAvKiBEaWFnU3ViR3JvdXAxNjQgKi8gMTQ1IH0sCisgIHsgLyogZGVwcmVjYXRlZC1hdHRyaWJ1dGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzI3MywgLyogRGlhZ0FycmF5MTY1ICovIDUxNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzI5NSwgLyogRGlhZ0FycmF5MTY2ICovIDUxNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVwcmVjYXRlZC1keW5hbWljLWV4Y2VwdGlvbi1zcGVjICovICAgICAgICAgICAgICAgICAgICAgMzMxOSwgLyogRGlhZ0FycmF5MTY3ICovIDUyMywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMzM1MywgLyogRGlhZ0FycmF5MTY4ICovIDUyNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVwcmVjYXRlZC1pbmNyZW1lbnQtYm9vbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzM4MCwgLyogRGlhZ0FycmF5MTY5ICovIDUyOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVwcmVjYXRlZC1vYmpjLWlzYS11c2FnZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzQwNiwgLyogRGlhZ0FycmF5MTcwICovIDUzMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGVwcmVjYXRlZC1vYmpjLXBvaW50ZXItaW50cm9zcGVjdGlvbiAqLyAgICAgICAgICAgICAgICAgMzQzMiwgLyogRGlhZ0FycmF5MTcxICovIDUzMywgLyogRGlhZ1N1Ykdyb3VwMTcxICovIDE1MyB9LAorICB7IC8qIGRlcHJlY2F0ZWQtb2JqYy1wb2ludGVyLWludHJvc3BlY3Rpb24tcGVyZm9ybVNlbGVjdG9yICovIDM0NzAsIC8qIERpYWdBcnJheTE3MiAqLyA1MzUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGRlcHJlY2F0ZWQtcmVnaXN0ZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1MjQsIC8qIERpYWdBcnJheTE3MyAqLyA1MzcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGRlcHJlY2F0ZWQtdGhpcy1jYXB0dXJlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1NDQsIC8qIERpYWdBcnJheTE3NCAqLyA1MzksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGRlcHJlY2F0ZWQtd3JpdGFibGUtc3RyaW5ncyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1NjgsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXAxNzUgKi8gMTU1IH0sCisgIHsgLyogZGlyZWN0LWl2YXItYWNjZXNzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzU5NiwgLyogRGlhZ0FycmF5MTc2ICovIDU0MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGlzYWJsZWQtbWFjcm8tZXhwYW5zaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzYxNSwgLyogRGlhZ0FycmF5MTc3ICovIDU0MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZGlzYWJsZWQtb3B0aW1pemF0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzY0MCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGRpc2NhcmQtcXVhbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2NjIsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBkaXN0cmlidXRlZC1vYmplY3QtbW9kaWZpZXJzICovICAgICAgICAgICAgICAgICAgICAgICAgICAzNjc1LCAvKiBEaWFnQXJyYXkxODAgKi8gNTQ1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBkaXYtYnktemVybyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNzA0LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwMTgxICovIDE1NyB9LAorICB7IC8qIGRpdmlzaW9uLWJ5LXplcm8gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM3MTYsIC8qIERpYWdBcnJheTE4MiAqLyA1NDgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGRsbC1hdHRyaWJ1dGUtb24tcmVkZWNsYXJhdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgIDM3MzMsIC8qIERpYWdBcnJheTE4MyAqLyA1NTAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGRsbGV4cG9ydC1leHBsaWNpdC1pbnN0YW50aWF0aW9uLWRlY2wgKi8gICAgICAgICAgICAgICAgIDM3NjQsIC8qIERpYWdBcnJheTE4NCAqLyA1NTIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGRsbGltcG9ydC1zdGF0aWMtZmllbGQtZGVmICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4MDIsIC8qIERpYWdBcnJheTE4NSAqLyA1NTQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGRvY3VtZW50YXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM4MjksIC8qIERpYWdBcnJheTE4NiAqLyA1NTYsIC8qIERpYWdTdWJHcm91cDE4NiAqLyAxNTkgfSwKKyAgeyAvKiBkb2N1bWVudGF0aW9uLWRlcHJlY2F0ZWQtc3luYyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAzODQzLCAvKiBEaWFnQXJyYXkxODcgKi8gNTc1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBkb2N1bWVudGF0aW9uLWh0bWwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzODczLCAvKiBEaWFnQXJyYXkxODggKi8gNTc3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBkb2N1bWVudGF0aW9uLXBlZGFudGljICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzODkyLCAvKiBEaWFnQXJyYXkxODkgKi8gNTgyLCAvKiBEaWFnU3ViR3JvdXAxODkgKi8gMTYyIH0sCisgIHsgLyogZG9jdW1lbnRhdGlvbi11bmtub3duLWNvbW1hbmQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgMzkxNSwgLyogRGlhZ0FycmF5MTkwICovIDU4NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZG9sbGFyLWluLWlkZW50aWZpZXItZXh0ZW5zaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgMzk0NSwgLyogRGlhZ0FycmF5MTkxICovIDU4NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZG91YmxlLXByb21vdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzk3NiwgLyogRGlhZ0FycmF5MTkyICovIDU4OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZHVwbGljYXRlLWRlY2wtc3BlY2lmaWVyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzk5MywgLyogRGlhZ0FycmF5MTkzICovIDU5MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZHVwbGljYXRlLWVudW0gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDAxOCwgLyogRGlhZ0FycmF5MTk0ICovIDU5NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZHVwbGljYXRlLW1ldGhvZC1hcmcgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDAzMywgLyogRGlhZ0FycmF5MTk1ICovIDU5OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZHVwbGljYXRlLW1ldGhvZC1tYXRjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDA1NCwgLyogRGlhZ0FycmF5MTk2ICovIDYwMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZHVwbGljYXRlLXByb3RvY29sICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDA3NywgLyogRGlhZ0FycmF5MTk3ICovIDYwMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZHluYW1pYy1jbGFzcy1tZW1hY2Nlc3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDA5NiwgLyogRGlhZ0FycmF5MTk4ICovIDYwNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZHluYW1pYy1leGNlcHRpb24tc3BlYyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDEyMCwgLyogRGlhZ0FycmF5MTk5ICovIDYwNiwgLyogRGlhZ1N1Ykdyb3VwMTk5ICovIDE2NCB9LAorICB7IC8qIGVmZmMrKyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxNDMsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXAyMDAgKi8gMTY2IH0sCisgIHsgLyogZW1iZWRkZWQtZGlyZWN0aXZlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDE1MCwgLyogRGlhZ0FycmF5MjAxICovIDYwOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZW1wdHktYm9keSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDE2OSwgLyogRGlhZ0FycmF5MjAyICovIDYxMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZW1wdHktZGVjb21wb3NpdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDE4MCwgLyogRGlhZ0FycmF5MjAzICovIDYxNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZW1wdHktaW5pdC1zdG10ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIwMCwgLyogRGlhZ0FycmF5MjA0ICovIDYxOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZW1wdHktdHJhbnNsYXRpb24tdW5pdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIxNiwgLyogRGlhZ0FycmF5MjA1ICovIDYyMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZW5jb2RlLXR5cGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIzOSwgLyogRGlhZ0FycmF5MjA2ICovIDYyMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZW5kaWYtbGFiZWxzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDI1MSwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDIwNyAqLyAxNjggfSwKKyAgeyAvKiBlbnVtLWNvbXBhcmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MjY0LCAvKiBEaWFnQXJyYXkyMDggKi8gNjI0LCAvKiBEaWFnU3ViR3JvdXAyMDggKi8gMTcwIH0sCisgIHsgLyogZW51bS1jb21wYXJlLXN3aXRjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDI3NywgLyogRGlhZ0FycmF5MjA5ICovIDYyNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZW51bS1jb252ZXJzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDI5NywgLyogRGlhZ0FycmF5MjEwICovIDYyOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZW51bS10b28tbGFyZ2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMxMywgLyogRGlhZ0FycmF5MjExICovIDYzMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZXhjZXB0aW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMyOCwgLyogRGlhZ0FycmF5MjEyICovIDYzMywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZXhpdC10aW1lLWRlc3RydWN0b3JzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMzOSwgLyogRGlhZ0FycmF5MjEzICovIDYzNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZXhwYW5zaW9uLXRvLWRlZmluZWQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDM2MSwgLyogRGlhZ0FycmF5MjE0ICovIDYzOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZXhwZXJpbWVudGFsLWlzZWwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDM4MiwgLyogRGlhZ0FycmF5MjE1ICovIDY0MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZXhwbGljaXQtaW5pdGlhbGl6ZS1jYWxsICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQwMCwgLyogRGlhZ0FycmF5MjE2ICovIDY0NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZXhwbGljaXQtb3duZXJzaGlwLXR5cGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQyNSwgLyogRGlhZ0FycmF5MjE3ICovIDY0OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZXh0ZXJuLWMtY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQ0OSwgLyogRGlhZ0FycmF5MjE4ICovIDY1MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZXh0ZXJuLWluaXRpYWxpemVyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQ2NSwgLyogRGlhZ0FycmF5MjE5ICovIDY1MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZXh0cmEgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDQ4NCwgLyogRGlhZ0FycmF5MjIwICovIDY1NCwgLyogRGlhZ1N1Ykdyb3VwMjIwICovIDE3MiB9LAorICB7IC8qIGV4dHJhLXF1YWxpZmljYXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0OTAsIC8qIERpYWdBcnJheTIyMSAqLyA2NTYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGV4dHJhLXNlbWkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ1MTAsIC8qIERpYWdBcnJheTIyMiAqLyA2NTgsIC8qIERpYWdTdWJHcm91cDIyMiAqLyAxODIgfSwKKyAgeyAvKiBleHRyYS1zZW1pLXN0bXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NTIxLCAvKiBEaWFnQXJyYXkyMjMgKi8gNjYxLCAvKiBEaWFnU3ViR3JvdXAyMjMgKi8gMTg1IH0sCisgIHsgLyogZXh0cmEtdG9rZW5zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDUzNywgLyogRGlhZ0FycmF5MjI0ICovIDY2MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZmFsbGJhY2sgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDU1MCwgLyogRGlhZ0FycmF5MjI1ICovIDY2NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZml4ZWQtZW51bS1leHRlbnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDU1OSwgLyogRGlhZ0FycmF5MjI2ICovIDY2OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZmxhZy1lbnVtICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDU4MCwgLyogRGlhZ0FycmF5MjI3ICovIDY3MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZmxleGlibGUtYXJyYXktZXh0ZW5zaW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDU5MCwgLyogRGlhZ0FycmF5MjI4ICovIDY3MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZmxvYXQtY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDYxNiwgLyogRGlhZ0FycmF5MjI5ICovIDY3NSwgLyogRGlhZ1N1Ykdyb3VwMjI5ICovIDE4NyB9LAorICB7IC8qIGZsb2F0LWVxdWFsICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2MzMsIC8qIERpYWdBcnJheTIzMCAqLyA2NzcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGZsb2F0LW92ZXJmbG93LWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2NDUsIC8qIERpYWdBcnJheTIzMSAqLyA2NzksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGZsb2F0LXplcm8tY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2NzEsIC8qIERpYWdBcnJheTIzMiAqLyA2ODIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGZvci1sb29wLWFuYWx5c2lzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ2OTMsIC8qIERpYWdBcnJheTIzMyAqLyA2ODQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGZvcm1hdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3MTEsIC8qIERpYWdBcnJheTIzNCAqLyA2ODcsIC8qIERpYWdTdWJHcm91cDIzNCAqLyAxOTAgfSwKKyAgeyAvKiBmb3JtYXQtZXh0cmEtYXJncyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NzE4LCAvKiBEaWFnQXJyYXkyMzUgKi8gNzEzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBmb3JtYXQtaW52YWxpZC1zcGVjaWZpZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NzM2LCAvKiBEaWFnQXJyYXkyMzYgKi8gNzE1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBmb3JtYXQtbm9uLWlzbyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NzYxLCAvKiBEaWFnQXJyYXkyMzcgKi8gNzE3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBmb3JtYXQtbm9ubGl0ZXJhbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Nzc2LCAvKiBEaWFnQXJyYXkyMzggKi8gNzIxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBmb3JtYXQtcGVkYW50aWMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Nzk0LCAvKiBEaWFnQXJyYXkyMzkgKi8gNzIzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBmb3JtYXQtc2VjdXJpdHkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ODEwLCAvKiBEaWFnQXJyYXkyNDAgKi8gNzI2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBmb3JtYXQteTJrICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ODI2LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZm9ybWF0LXplcm8tbGVuZ3RoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDgzNywgLyogRGlhZ0FycmF5MjQyICovIDcyOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZm9ybWF0PTIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDg1NiwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDI0MyAqLyAxOTcgfSwKKyAgeyAvKiBmb3VyLWNoYXItY29uc3RhbnRzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ODY1LCAvKiBEaWFnQXJyYXkyNDQgKi8gNzMwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBmcmFtZS1sYXJnZXItdGhhbj0gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ODg1LCAvKiBEaWFnQXJyYXkyNDUgKi8gNzMyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBmcmFtZXdvcmstaW5jbHVkZS1wcml2YXRlLWZyb20tcHVibGljICovICAgICAgICAgICAgICAgICA0OTA0LCAvKiBEaWFnQXJyYXkyNDYgKi8gNzM1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBmdW5jdGlvbi1kZWYtaW4tb2JqYy1jb250YWluZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICA0OTQyLCAvKiBEaWFnQXJyYXkyNDcgKi8gNzM3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBmdW5jdGlvbi1tdWx0aXZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OTczLCAvKiBEaWFnQXJyYXkyNDggKi8gNzM5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBmdXR1cmUtY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OTk1LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZ2NjLWNvbXBhdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAwOSwgLyogRGlhZ0FycmF5MjUwICovIDc0MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZ2xvYmFsLWNvbnN0cnVjdG9ycyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAyMCwgLyogRGlhZ0FycmF5MjUxICovIDc1MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogZ251ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTA0MCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDI1MiAqLyAyMDEgfSwKKyAgeyAvKiBnbnUtYWxpZ25vZi1leHByZXNzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDQ0LCAvKiBEaWFnQXJyYXkyNTMgKi8gNzU2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtYW5vbnltb3VzLXN0cnVjdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDY3LCAvKiBEaWFnQXJyYXkyNTQgKi8gNzU4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtYXJyYXktbWVtYmVyLXBhcmVuLWluaXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICA1MDg4LCAvKiBEaWFnQXJyYXkyNTUgKi8gNzYwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtYXV0by10eXBlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MTE2LCAvKiBEaWFnQXJyYXkyNTYgKi8gNzYyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtYmluYXJ5LWxpdGVyYWwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MTMwLCAvKiBEaWFnQXJyYXkyNTcgKi8gNzY0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtY2FzZS1yYW5nZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MTQ5LCAvKiBEaWFnQXJyYXkyNTggKi8gNzY2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtY29tcGxleC1pbnRlZ2VyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MTY0LCAvKiBEaWFnQXJyYXkyNTkgKi8gNzY4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtY29tcG91bmQtbGl0ZXJhbC1pbml0aWFsaXplciAqLyAgICAgICAgICAgICAgICAgICAgICA1MTg0LCAvKiBEaWFnQXJyYXkyNjAgKi8gNzcwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtY29uZGl0aW9uYWwtb21pdHRlZC1vcGVyYW5kICovICAgICAgICAgICAgICAgICAgICAgICA1MjE3LCAvKiBEaWFnQXJyYXkyNjEgKi8gNzcyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtZGVzaWduYXRvciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MjQ5LCAvKiBEaWFnQXJyYXkyNjIgKi8gNzc0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtZW1wdHktaW5pdGlhbGl6ZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MjY0LCAvKiBEaWFnQXJyYXkyNjMgKi8gNzc4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtZW1wdHktc3RydWN0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Mjg2LCAvKiBEaWFnQXJyYXkyNjQgKi8gNzgwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtZmxleGlibGUtYXJyYXktaW5pdGlhbGl6ZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICA1MzAzLCAvKiBEaWFnQXJyYXkyNjUgKi8gNzg0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtZmxleGlibGUtYXJyYXktdW5pb24tbWVtYmVyICovICAgICAgICAgICAgICAgICAgICAgICA1MzM0LCAvKiBEaWFnQXJyYXkyNjYgKi8gNzg2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtZm9sZGluZy1jb25zdGFudCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MzY2LCAvKiBEaWFnQXJyYXkyNjcgKi8gNzg4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtaW1hZ2luYXJ5LWNvbnN0YW50ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Mzg3LCAvKiBEaWFnQXJyYXkyNjggKi8gNzkyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtaW5jbHVkZS1uZXh0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NDEwLCAvKiBEaWFnQXJyYXkyNjkgKi8gNzk0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtbGFiZWwtYXMtdmFsdWUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NDI3LCAvKiBEaWFnQXJyYXkyNzAgKi8gNzk2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtcmVkZWNsYXJlZC1lbnVtICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NDQ2LCAvKiBEaWFnQXJyYXkyNzEgKi8gNzk5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtc3RhdGVtZW50LWV4cHJlc3Npb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NDY2LCAvKiBEaWFnQXJyYXkyNzIgKi8gODAxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtc3RhdGljLWZsb2F0LWluaXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NDkxLCAvKiBEaWFnQXJyYXkyNzMgKi8gODAzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtc3RyaW5nLWxpdGVyYWwtb3BlcmF0b3ItdGVtcGxhdGUgKi8gICAgICAgICAgICAgICAgICA1NTEzLCAvKiBEaWFnQXJyYXkyNzQgKi8gODA1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtdW5pb24tY2FzdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NTUwLCAvKiBEaWFnQXJyYXkyNzUgKi8gODA3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtdmFyaWFibGUtc2l6ZWQtdHlwZS1ub3QtYXQtZW5kICovICAgICAgICAgICAgICAgICAgICA1NTY1LCAvKiBEaWFnQXJyYXkyNzYgKi8gODA5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtemVyby1saW5lLWRpcmVjdGl2ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NjAwLCAvKiBEaWFnQXJyYXkyNzcgKi8gODExLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBnbnUtemVyby12YXJpYWRpYy1tYWNyby1hcmd1bWVudHMgKi8gICAgICAgICAgICAgICAgICAgICA1NjI0LCAvKiBEaWFnQXJyYXkyNzggKi8gODEzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBoZWFkZXItZ3VhcmQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NjU4LCAvKiBEaWFnQXJyYXkyNzkgKi8gODE2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBoZWFkZXItaHlnaWVuZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NjcxLCAvKiBEaWFnQXJyYXkyODAgKi8gODE4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpZGlvbWF0aWMtcGFyZW50aGVzZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Njg2LCAvKiBEaWFnQXJyYXkyODEgKi8gODIwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpZ25vcmVkLWF0dHJpYnV0ZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NzA4LCAvKiBEaWFnQXJyYXkyODIgKi8gODIyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpZ25vcmVkLW9wdGltaXphdGlvbi1hcmd1bWVudCAqLyAgICAgICAgICAgICAgICAgICAgICAgICA1NzI3LCAvKiBEaWFnQXJyYXkyODMgKi8gODgzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpZ25vcmVkLXByYWdtYS1pbnRyaW5zaWMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NzU3LCAvKiBEaWFnQXJyYXkyODQgKi8gODg2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpZ25vcmVkLXByYWdtYS1vcHRpbWl6ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1NzgyLCAvKiBEaWFnQXJyYXkyODUgKi8gODg4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpZ25vcmVkLXByYWdtYXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1ODA2LCAvKiBEaWFnQXJyYXkyODYgKi8gODkwLCAvKiBEaWFnU3ViR3JvdXAyODYgKi8gMjMwIH0sCisgIHsgLyogaWdub3JlZC1xdWFsaWZpZXJzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTgyMiwgLyogRGlhZ0FycmF5Mjg3ICovIDkzMywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW1wbGljaXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTg0MSwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDI4OCAqLyAyMzMgfSwKKyAgeyAvKiBpbXBsaWNpdC1hdG9taWMtcHJvcGVydGllcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICA1ODUwLCAvKiBEaWFnQXJyYXkyODkgKi8gOTM5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbXBsaWNpdC1jb252ZXJzaW9uLWZsb2F0aW5nLXBvaW50LXRvLWJvb2wgKi8gICAgICAgICAgICA1ODc3LCAvKiBEaWFnQXJyYXkyOTAgKi8gOTQyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbXBsaWNpdC1leGNlcHRpb24tc3BlYy1taXNtYXRjaCAqLyAgICAgICAgICAgICAgICAgICAgICA1OTIwLCAvKiBEaWFnQXJyYXkyOTEgKi8gOTQ0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbXBsaWNpdC1mYWxsdGhyb3VnaCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1OTUzLCAvKiBEaWFnQXJyYXkyOTIgKi8gOTQ2LCAvKiBEaWFnU3ViR3JvdXAyOTIgKi8gMjM2IH0sCisgIHsgLyogaW1wbGljaXQtZmFsbHRocm91Z2gtcGVyLWZ1bmN0aW9uICovICAgICAgICAgICAgICAgICAgICAgNTk3NCwgLyogRGlhZ0FycmF5MjkzICovIDk0OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW1wbGljaXQtZml4ZWQtcG9pbnQtY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgNjAwOCwgLyogRGlhZ0FycmF5Mjk0ICovIDk1MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW1wbGljaXQtZmxvYXQtY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjA0MCwgLyogRGlhZ0FycmF5Mjk1ICovIDk1MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgNjA2NiwgLyogRGlhZ0FycmF5Mjk2ICovIDk1NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW1wbGljaXQtaW50ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjA5NiwgLyogRGlhZ0FycmF5Mjk3ICovIDk2MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW1wbGljaXQtaW50LWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjEwOSwgLyogRGlhZ0FycmF5Mjk4ICovIDk2MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW1wbGljaXQtcmV0YWluLXNlbGYgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjEzMywgLyogRGlhZ0FycmF5Mjk5ICovIDk2NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW1wbGljaXRseS11bnNpZ25lZC1saXRlcmFsICovICAgICAgICAgICAgICAgICAgICAgICAgICAgNjE1NCwgLyogRGlhZ0FycmF5MzAwICovIDk2OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW1wb3J0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjE4MiwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGltcG9ydC1wcmVwcm9jZXNzb3ItZGlyZWN0aXZlLXBlZGFudGljICovICAgICAgICAgICAgICAgIDYxODksIC8qIERpYWdBcnJheTMwMiAqLyA5NzAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGluYWNjZXNzaWJsZS1iYXNlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYyMjgsIC8qIERpYWdBcnJheTMwMyAqLyA5NzIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGluY2x1ZGUtbmV4dC1hYnNvbHV0ZS1wYXRoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYyNDYsIC8qIERpYWdBcnJheTMwNCAqLyA5NzQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGluY2x1ZGUtbmV4dC1vdXRzaWRlLWhlYWRlciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDYyNzMsIC8qIERpYWdBcnJheTMwNSAqLyA5NzYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGluY29tcGF0aWJsZS1leGNlcHRpb24tc3BlYyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDYzMDEsIC8qIERpYWdBcnJheTMwNiAqLyA5NzgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGluY29tcGF0aWJsZS1mdW5jdGlvbi1wb2ludGVyLXR5cGVzICovICAgICAgICAgICAgICAgICAgIDYzMjksIC8qIERpYWdBcnJheTMwNyAqLyA5ODEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGluY29tcGF0aWJsZS1saWJyYXJ5LXJlZGVjbGFyYXRpb24gKi8gICAgICAgICAgICAgICAgICAgIDYzNjUsIC8qIERpYWdBcnJheTMwOCAqLyA5ODMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGluY29tcGF0aWJsZS1tcy1zdHJ1Y3QgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0MDAsIC8qIERpYWdBcnJheTMwOSAqLyA5ODUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY0MjMsIC8qIERpYWdBcnJheTMxMCAqLyA5ODgsIC8qIERpYWdTdWJHcm91cDMxMCAqLyAyMzggfSwKKyAgeyAvKiBpbmNvbXBhdGlibGUtcG9pbnRlci10eXBlcy1kaXNjYXJkcy1xdWFsaWZpZXJzICovICAgICAgICA2NDUwLCAvKiBEaWFnQXJyYXkzMTEgKi8gOTkwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbmNvbXBhdGlibGUtcHJvcGVydHktdHlwZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NDk3LCAvKiBEaWFnQXJyYXkzMTIgKi8gOTkzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbmNvbXBhdGlibGUtc3lzcm9vdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NTI0LCAvKiBEaWFnQXJyYXkzMTMgKi8gOTk1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbmNvbXBsZXRlLWZyYW1ld29yay1tb2R1bGUtZGVjbGFyYXRpb24gKi8gICAgICAgICAgICAgICA2NTQ1LCAvKiBEaWFnQXJyYXkzMTQgKi8gOTk3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbmNvbXBsZXRlLWltcGxlbWVudGF0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NTg1LCAvKiBEaWFnQXJyYXkzMTUgKi8gOTk5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbmNvbXBsZXRlLW1vZHVsZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NjExLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwMzE2ICovIDI0MSB9LAorICB7IC8qIGluY29tcGxldGUtdW1icmVsbGEgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY2MjksIC8qIERpYWdBcnJheTMxNyAqLyAxMDAxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbmNvbnNpc3RlbnQtZGxsaW1wb3J0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NjQ5LCAvKiBEaWFnQXJyYXkzMTggKi8gMTAwNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW5jb25zaXN0ZW50LW1pc3NpbmctZGVzdHJ1Y3Rvci1vdmVycmlkZSAqLyAgICAgICAgICAgICAgNjY3MiwgLyogRGlhZ0FycmF5MzE5ICovIDEwMDgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGluY29uc2lzdGVudC1taXNzaW5nLW92ZXJyaWRlICovICAgICAgICAgICAgICAgICAgICAgICAgIDY3MTMsIC8qIERpYWdBcnJheTMyMCAqLyAxMDEwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbmNyZW1lbnQtYm9vbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NzQzLCAvKiBEaWFnQXJyYXkzMjEgKi8gMTAxMiwgLyogRGlhZ1N1Ykdyb3VwMzIxICovIDI0NCB9LAorICB7IC8qIGluZmluaXRlLXJlY3Vyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY3NTgsIC8qIERpYWdBcnJheTMyMiAqLyAxMDE0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbml0LXNlbGYgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2Nzc3LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW5pdGlhbGl6ZXItb3ZlcnJpZGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjc4NywgLyogRGlhZ0FycmF5MzI0ICovIDEwMTYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGluamVjdGVkLWNsYXNzLW5hbWUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY4MDksIC8qIERpYWdBcnJheTMyNSAqLyAxMDE5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbmxpbmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2ODI5LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW5saW5lLWFzbSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjgzNiwgLyogRGlhZ0FycmF5MzI3ICovIDEwMjEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGlubGluZS1uZXctZGVsZXRlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY4NDcsIC8qIERpYWdBcnJheTMyOCAqLyAxMDIzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbnN0YW50aWF0aW9uLWFmdGVyLXNwZWNpYWxpemF0aW9uICovICAgICAgICAgICAgICAgICAgICA2ODY1LCAvKiBEaWFnQXJyYXkzMjkgKi8gMTAyNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW50LWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjkwMCwgLyogRGlhZ0FycmF5MzMwICovIDEwMjcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGludC1jb252ZXJzaW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY5MTUsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXAzMzEgKi8gMjQ2IH0sCisgIHsgLyogaW50LXRvLXBvaW50ZXItY2FzdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjkzMSwgLyogRGlhZ0FycmF5MzMyICovIDEwMzAsIC8qIERpYWdTdWJHcm91cDMzMiAqLyAyNDggfSwKKyAgeyAvKiBpbnQtdG8tdm9pZC1wb2ludGVyLWNhc3QgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2OTUxLCAvKiBEaWFnQXJyYXkzMzMgKi8gMTAzMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW50ZWdlci1vdmVyZmxvdyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjk3NiwgLyogRGlhZ0FycmF5MzM0ICovIDEwMzQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGludmFsaWQtY29tbWFuZC1saW5lLWFyZ3VtZW50ICovICAgICAgICAgICAgICAgICAgICAgICAgIDY5OTMsIC8qIERpYWdBcnJheTMzNSAqLyAxMDM2LCAvKiBEaWFnU3ViR3JvdXAzMzUgKi8gMjUwIH0sCisgIHsgLyogaW52YWxpZC1jb25zdGV4cHIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzAyMywgLyogRGlhZ0FycmF5MzM2ICovIDEwNDIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGludmFsaWQtaWJvdXRsZXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcwNDEsIC8qIERpYWdBcnJheTMzNyAqLyAxMDQ0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbnZhbGlkLWluaXRpYWxpemVyLWZyb20tc3lzdGVtLWhlYWRlciAqLyAgICAgICAgICAgICAgICA3MDU4LCAvKiBEaWFnQXJyYXkzMzggKi8gMTA0NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW52YWxpZC1pb3MtZGVwbG95bWVudC10YXJnZXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgNzA5NywgLyogRGlhZ0FycmF5MzM5ICovIDEwNDksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGludmFsaWQtbm9yZXR1cm4gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcxMjcsIC8qIERpYWdBcnJheTM0MCAqLyAxMDUxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbnZhbGlkLW9mZnNldG9mICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MTQ0LCAvKiBEaWFnQXJyYXkzNDEgKi8gMTA1NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW52YWxpZC1vci1ub25leGlzdGVudC1kaXJlY3RvcnkgKi8gICAgICAgICAgICAgICAgICAgICAgNzE2MSwgLyogRGlhZ0FycmF5MzQyICovIDEwNTcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGludmFsaWQtcGFydGlhbC1zcGVjaWFsaXphdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgIDcxOTQsIC8qIERpYWdBcnJheTM0MyAqLyAxMDYwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbnZhbGlkLXBjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MjI1LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogaW52YWxpZC1wcC10b2tlbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzIzNywgLyogRGlhZ0FycmF5MzQ1ICovIDEwNjIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGludmFsaWQtc291cmNlLWVuY29kaW5nICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcyNTQsIC8qIERpYWdBcnJheTM0NiAqLyAxMDY1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBpbnZhbGlkLXRva2VuLXBhc3RlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Mjc4LCAvKiBEaWFnQXJyYXkzNDcgKi8gMTA2OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyoganVtcC1zZWgtZmluYWxseSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzI5OCwgLyogRGlhZ0FycmF5MzQ4ICovIDEwNzAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGtleXdvcmQtY29tcGF0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDczMTUsIC8qIERpYWdBcnJheTM0OSAqLyAxMDcyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBrZXl3b3JkLW1hY3JvICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MzMwLCAvKiBEaWFnQXJyYXkzNTAgKi8gMTA3NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyoga25yLXByb21vdGVkLXBhcmFtZXRlciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzM0NCwgLyogRGlhZ0FycmF5MzUxICovIDEwNzYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGxhbmd1YWdlLWV4dGVuc2lvbi10b2tlbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDczNjcsIC8qIERpYWdBcnJheTM1MiAqLyAxMDc4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBsYXJnZS1ieS12YWx1ZS1jb3B5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3MzkyLCAvKiBEaWFnQXJyYXkzNTMgKi8gMTA4MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbGlibHRvICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzQxMiwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGxpdGVyYWwtY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc0MTksIC8qIERpYWdBcnJheTM1NSAqLyAxMDgzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBsaXRlcmFsLXJhbmdlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NDM4LCAvKiBEaWFnQXJyYXkzNTYgKi8gMTA4NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbG9jYWwtdHlwZS10ZW1wbGF0ZS1hcmdzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzQ1MiwgLyogRGlhZ0FycmF5MzU3ICovIDEwODksIC8qIERpYWdTdWJHcm91cDM1NyAqLyAyNTIgfSwKKyAgeyAvKiBsb2dpY2FsLW5vdC1wYXJlbnRoZXNlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NDc3LCAvKiBEaWFnQXJyYXkzNTggKi8gMTA5MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbG9naWNhbC1vcC1wYXJlbnRoZXNlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzUwMSwgLyogRGlhZ0FycmF5MzU5ICovIDEwOTMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIGxvbmctbG9uZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1MjQsIC8qIERpYWdBcnJheTM2MCAqLyAxMDk1LCAvKiBEaWFnU3ViR3JvdXAzNjAgKi8gMjU0IH0sCisgIHsgLyogbG9vcC1hbmFseXNpcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzUzNCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDM2MSAqLyAyNTYgfSwKKyAgeyAvKiBtYWNyby1yZWRlZmluZWQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NTQ4LCAvKiBEaWFnQXJyYXkzNjIgKi8gMTA5NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWFpbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzU2NCwgLyogRGlhZ0FycmF5MzYzICovIDEwOTksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1haW4tcmV0dXJuLXR5cGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1NjksIC8qIERpYWdBcnJheTM2NCAqLyAxMTA3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtYWxmb3JtZWQtd2FybmluZy1jaGVjayAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NTg2LCAvKiBEaWFnQXJyYXkzNjUgKi8gMTEwOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWFueS1icmFjZXMtYXJvdW5kLXNjYWxhci1pbml0ICovICAgICAgICAgICAgICAgICAgICAgICAgNzYxMCwgLyogRGlhZ0FycmF5MzY2ICovIDExMTEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1heC11bnNpZ25lZC16ZXJvICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc2NDEsIC8qIERpYWdBcnJheTM2NyAqLyAxMTEzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtZW1zZXQtdHJhbnNwb3NlZC1hcmdzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NjU5LCAvKiBEaWFnQXJyYXkzNjggKi8gMTExNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWVtc2l6ZS1jb21wYXJpc29uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzY4MiwgLyogRGlhZ0FycmF5MzY5ICovIDExMTcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1ldGhvZC1zaWduYXR1cmVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc3MDEsIC8qIERpYWdBcnJheTM3MCAqLyAxMTE5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaWNyb3NvZnQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NzE5LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwMzcxICovIDI1OSB9LAorICB7IC8qIG1pY3Jvc29mdC1hbm9uLXRhZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc3MjksIC8qIERpYWdBcnJheTM3MiAqLyAxMTIyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaWNyb3NvZnQtY2FzdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3NzQ4LCAvKiBEaWFnQXJyYXkzNzMgKi8gMTEyNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWljcm9zb2Z0LWNoYXJpemUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzc2MywgLyogRGlhZ0FycmF5Mzc0ICovIDExMjgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pY3Jvc29mdC1jb21tZW50LXBhc3RlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc3ODEsIC8qIERpYWdBcnJheTM3NSAqLyAxMTMwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaWNyb3NvZnQtY29uc3QtaW5pdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3ODA1LCAvKiBEaWFnQXJyYXkzNzYgKi8gMTEzMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWljcm9zb2Z0LWNwcC1tYWNybyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzgyNiwgLyogRGlhZ0FycmF5Mzc3ICovIDExMzQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pY3Jvc29mdC1kZWZhdWx0LWFyZy1yZWRlZmluaXRpb24gKi8gICAgICAgICAgICAgICAgICAgIDc4NDYsIC8qIERpYWdBcnJheTM3OCAqLyAxMTM2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaWNyb3NvZnQtZW5kLW9mLWZpbGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3ODgxLCAvKiBEaWFnQXJyYXkzNzkgKi8gMTEzOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWljcm9zb2Z0LWVudW0tZm9yd2FyZC1yZWZlcmVuY2UgKi8gICAgICAgICAgICAgICAgICAgICAgNzkwMywgLyogRGlhZ0FycmF5MzgwICovIDExNDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pY3Jvc29mdC1lbnVtLXZhbHVlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc5MzYsIC8qIERpYWdBcnJheTM4MSAqLyAxMTQyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaWNyb3NvZnQtZXhjZXB0aW9uLXNwZWMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3OTU3LCAvKiBEaWFnQXJyYXkzODIgKi8gMTE0NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWljcm9zb2Z0LWV4aXN0cyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzk4MiwgLyogRGlhZ0FycmF5MzgzICovIDExNTEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pY3Jvc29mdC1leHBsaWNpdC1jb25zdHJ1Y3Rvci1jYWxsICovICAgICAgICAgICAgICAgICAgIDc5OTksIC8qIERpYWdBcnJheTM4NCAqLyAxMTUzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaWNyb3NvZnQtZXh0cmEtcXVhbGlmaWNhdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICA4MDM1LCAvKiBEaWFnQXJyYXkzODUgKi8gMTE1NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWljcm9zb2Z0LWZpeGVkLWVudW0gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODA2NSwgLyogRGlhZ0FycmF5Mzg2ICovIDExNTcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pY3Jvc29mdC1mbGV4aWJsZS1hcnJheSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgwODYsIC8qIERpYWdBcnJheTM4NyAqLyAxMTU5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaWNyb3NvZnQtZ290byAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MTExLCAvKiBEaWFnQXJyYXkzODggKi8gMTE2MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWljcm9zb2Z0LWluYWNjZXNzaWJsZS1iYXNlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgODEyNiwgLyogRGlhZ0FycmF5Mzg5ICovIDExNjQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pY3Jvc29mdC1pbmNsdWRlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgxNTQsIC8qIERpYWdBcnJheTM5MCAqLyAxMTY2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaWNyb3NvZnQtbXV0YWJsZS1yZWZlcmVuY2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICA4MTcyLCAvKiBEaWFnQXJyYXkzOTEgKi8gMTE2OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWljcm9zb2Z0LXB1cmUtZGVmaW5pdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODIwMCwgLyogRGlhZ0FycmF5MzkyICovIDExNzAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pY3Jvc29mdC1yZWRlY2xhcmUtc3RhdGljICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgyMjYsIC8qIERpYWdBcnJheTM5MyAqLyAxMTcyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaWNyb3NvZnQtc2VhbGVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4MjUzLCAvKiBEaWFnQXJyYXkzOTQgKi8gMTE3NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWljcm9zb2Z0LXRlbXBsYXRlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODI3MCwgLyogRGlhZ0FycmF5Mzk1ICovIDExNzYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pY3Jvc29mdC11bmlvbi1tZW1iZXItcmVmZXJlbmNlICovICAgICAgICAgICAgICAgICAgICAgIDgyODksIC8qIERpYWdBcnJheTM5NiAqLyAxMTg1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaWNyb3NvZnQtdW5xdWFsaWZpZWQtZnJpZW5kICovICAgICAgICAgICAgICAgICAgICAgICAgICA4MzIyLCAvKiBEaWFnQXJyYXkzOTcgKi8gMTE4NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWljcm9zb2Z0LXVzaW5nLWRlY2wgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODM1MSwgLyogRGlhZ0FycmF5Mzk4ICovIDExODksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pY3Jvc29mdC12b2lkLXBzZXVkby1kdG9yICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgzNzIsIC8qIERpYWdBcnJheTM5OSAqLyAxMTkxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaXNtYXRjaGVkLW5ldy1kZWxldGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Mzk5LCAvKiBEaWFnQXJyYXk0MDAgKi8gMTE5MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWlzbWF0Y2hlZC1wYXJhbWV0ZXItdHlwZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgODQyMSwgLyogRGlhZ0FycmF5NDAxICovIDExOTUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pc21hdGNoZWQtcmV0dXJuLXR5cGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg0NDgsIC8qIERpYWdBcnJheTQwMiAqLyAxMTk3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaXNtYXRjaGVkLXRhZ3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NDcyLCAvKiBEaWFnQXJyYXk0MDMgKi8gMTE5OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWlzc2luZy1icmFjZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODQ4OCwgLyogRGlhZ0FycmF5NDA0ICovIDEyMDIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pc3NpbmctZGVjbGFyYXRpb25zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg1MDMsIC8qIERpYWdBcnJheTQwNSAqLyAxMjA0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaXNzaW5nLWV4Y2VwdGlvbi1zcGVjICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NTI0LCAvKiBEaWFnQXJyYXk0MDYgKi8gMTIwOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgODU0NywgLyogRGlhZ0FycmF5NDA3ICovIDEyMTEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg1NzQsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaXNzaW5nLWluY2x1ZGUtZGlycyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NTk5LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWlzc2luZy1tZXRob2QtcmV0dXJuLXR5cGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgODYyMCwgLyogRGlhZ0FycmF5NDEwICovIDEyMTMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pc3Npbmctbm9lc2NhcGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg2NDcsIC8qIERpYWdBcnJheTQxMSAqLyAxMjE1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaXNzaW5nLW5vcmV0dXJuICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NjY0LCAvKiBEaWFnQXJyYXk0MTIgKi8gMTIxNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWlzc2luZy1wcm90b3R5cGUtZm9yLWNjICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODY4MSwgLyogRGlhZ0FycmF5NDEzICovIDEyMjAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pc3NpbmctcHJvdG90eXBlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg3MDYsIC8qIERpYWdBcnJheTQxNCAqLyAxMjIyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtaXNzaW5nLXNlbGVjdG9yLW5hbWUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NzI1LCAvKiBEaWFnQXJyYXk0MTUgKi8gMTIyNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbWlzc2luZy1zeXNyb290ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODc0NywgLyogRGlhZ0FycmF5NDE2ICovIDEyMjYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1pc3NpbmctdmFyaWFibGUtZGVjbGFyYXRpb25zICovICAgICAgICAgICAgICAgICAgICAgICAgIDg3NjMsIC8qIERpYWdBcnJheTQxNyAqLyAxMjI4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtb2R1bGUtYnVpbGQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4NzkzLCAvKiBEaWFnQXJyYXk0MTggKi8gMTIzMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbW9kdWxlLWNvbmZsaWN0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODgwNiwgLyogRGlhZ0FycmF5NDE5ICovIDEyMzUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1vZHVsZS1maWxlLWNvbmZpZy1taXNtYXRjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIDg4MjIsIC8qIERpYWdBcnJheTQyMCAqLyAxMjM4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtb2R1bGUtZmlsZS1leHRlbnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4ODUwLCAvKiBEaWFnQXJyYXk0MjEgKi8gMTI0MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbW9kdWxlLWltcG9ydC1pbi1leHRlcm4tYyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODg3MiwgLyogRGlhZ0FycmF5NDIyICovIDEyNDIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG1vZHVsZXMtYW1iaWd1b3VzLWludGVybmFsLWxpbmthZ2UgKi8gICAgICAgICAgICAgICAgICAgIDg4OTgsIC8qIERpYWdBcnJheTQyMyAqLyAxMjQ0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtb2R1bGVzLWltcG9ydC1uZXN0ZWQtcmVkdW5kYW50ICovICAgICAgICAgICAgICAgICAgICAgICA4OTMzLCAvKiBEaWFnQXJyYXk0MjQgKi8gMTI0NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbW9zdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODk2NSwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDQyNSAqLyAyODcgfSwKKyAgeyAvKiBtb3ZlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4OTcwLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNDI2ICovIDMxOSB9LAorICB7IC8qIG1zdmMtaW5jbHVkZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg5NzUsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXA0MjcgKi8gMzI0IH0sCisgIHsgLyogbXN2Yy1ub3QtZm91bmQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODk4OCwgLyogRGlhZ0FycmF5NDI4ICovIDEyNDgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG11bHRpY2hhciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkwMDMsIC8qIERpYWdBcnJheTQyOSAqLyAxMjUwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBtdWx0aXBsZS1tb3ZlLXZiYXNlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MDEzLCAvKiBEaWFnQXJyYXk0MzAgKi8gMTI1MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbmFycm93aW5nICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTAzMywgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDQzMSAqLyAzMjYgfSwKKyAgeyAvKiBuZXN0ZWQtYW5vbi10eXBlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MDQzLCAvKiBEaWFnQXJyYXk0MzIgKi8gMTI1NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbmVzdGVkLWV4dGVybnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTA2MSwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG5ldy1yZXR1cm5zLW51bGwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkwNzYsIC8qIERpYWdBcnJheTQzNCAqLyAxMjU2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBuZXdsaW5lLWVvZiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MDkzLCAvKiBEaWFnQXJyYXk0MzUgKi8gMTI1OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbm9kZXJlZiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTEwNSwgLyogRGlhZ0FycmF5NDM2ICovIDEyNjEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG5vZXhjZXB0LXR5cGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkxMTMsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXA0MzcgKi8gMzI4IH0sCisgIHsgLyogbm9uLWdjYyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTEyNywgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDQzOCAqLyAzMzAgfSwKKyAgeyAvKiBub24tbGl0ZXJhbC1udWxsLWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICA5MTM1LCAvKiBEaWFnQXJyYXk0MzkgKi8gMTI2NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbm9uLW1vZHVsYXItaW5jbHVkZS1pbi1mcmFtZXdvcmstbW9kdWxlICovICAgICAgICAgICAgICAgOTE2MywgLyogRGlhZ0FycmF5NDQwICovIDEyNjcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG5vbi1tb2R1bGFyLWluY2x1ZGUtaW4tbW9kdWxlICovICAgICAgICAgICAgICAgICAgICAgICAgIDkyMDMsIC8qIERpYWdBcnJheTQ0MSAqLyAxMjY5LCAvKiBEaWFnU3ViR3JvdXA0NDEgKi8gMzM0IH0sCisgIHsgLyogbm9uLXBvZC12YXJhcmdzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTIzMywgLyogRGlhZ0FycmF5NDQyICovIDEyNzEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG5vbi12aXJ0dWFsLWR0b3IgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkyNDksIC8qIERpYWdBcnJheTQ0MyAqLyAxMjc2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBub25udWxsICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MjY2LCAvKiBEaWFnQXJyYXk0NDQgKi8gMTI3OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbm9ucG9ydGFibGUtY2ZzdHJpbmdzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTI3NCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG5vbnBvcnRhYmxlLWluY2x1ZGUtcGF0aCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkyOTYsIC8qIERpYWdBcnJheTQ0NiAqLyAxMjgxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBub25wb3J0YWJsZS1zeXN0ZW0taW5jbHVkZS1wYXRoICovICAgICAgICAgICAgICAgICAgICAgICA5MzIxLCAvKiBEaWFnQXJyYXk0NDcgKi8gMTI4MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbm9ucG9ydGFibGUtdmVjdG9yLWluaXRpYWxpemF0aW9uICovICAgICAgICAgICAgICAgICAgICAgOTM1MywgLyogRGlhZ0FycmF5NDQ4ICovIDEyODUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG5vbnRyaXZpYWwtbWVtYWNjZXNzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkzODcsIC8qIERpYWdBcnJheTQ0OSAqLyAxMjg3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBuc2NvbnN1bWVkLW1pc21hdGNoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5NDA4LCAvKiBEaWFnQXJyYXk0NTAgKi8gMTI4OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbnNyZXR1cm5zLW1pc21hdGNoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTQyOCwgLyogRGlhZ0FycmF5NDUxICovIDEyOTEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG51bGwtYXJpdGhtZXRpYyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk0NDcsIC8qIERpYWdBcnJheTQ1MiAqLyAxMjkzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBudWxsLWNoYXJhY3RlciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5NDYzLCAvKiBEaWFnQXJyYXk0NTMgKi8gMTI5NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbnVsbC1jb252ZXJzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTQ3OCwgLyogRGlhZ0FycmF5NDU0ICovIDEyOTksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG51bGwtZGVyZWZlcmVuY2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk0OTQsIC8qIERpYWdBcnJheTQ1NSAqLyAxMzAxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBudWxsLXBvaW50ZXItYXJpdGhtZXRpYyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5NTExLCAvKiBEaWFnQXJyYXk0NTYgKi8gMTMwNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbnVsbGFiaWxpdHkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTUzNSwgLyogRGlhZ0FycmF5NDU3ICovIDEzMDcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG51bGxhYmlsaXR5LWNvbXBsZXRlbmVzcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk1NDcsIC8qIERpYWdBcnJheTQ1OCAqLyAxMzEzLCAvKiBEaWFnU3ViR3JvdXA0NTggKi8gMzM2IH0sCisgIHsgLyogbnVsbGFiaWxpdHktY29tcGxldGVuZXNzLW9uLWFycmF5cyAqLyAgICAgICAgICAgICAgICAgICAgOTU3MiwgLyogRGlhZ0FycmF5NDU5ICovIDEzMTUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG51bGxhYmlsaXR5LWRlY2xzcGVjICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk2MDcsIC8qIERpYWdBcnJheTQ2MCAqLyAxMzE3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBudWxsYWJpbGl0eS1leHRlbnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5NjI4LCAvKiBEaWFnQXJyYXk0NjEgKi8gMTMxOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogbnVsbGFiaWxpdHktaW5mZXJyZWQtb24tbmVzdGVkLXR5cGUgKi8gICAgICAgICAgICAgICAgICAgOTY1MCwgLyogRGlhZ0FycmF5NDYyICovIDEzMjEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG51bGxhYmxlLXRvLW5vbm51bGwtY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgIDk2ODYsIC8qIERpYWdBcnJheTQ2MyAqLyAxMzIzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvYmpjLWF1dG9zeW50aGVzaXMtcHJvcGVydHktaXZhci1uYW1lLW1hdGNoICovICAgICAgICAgICA5NzE3LCAvKiBEaWFnQXJyYXk0NjQgKi8gMTMyNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb2JqYy1jaXJjdWxhci1jb250YWluZXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTc2MSwgLyogRGlhZ0FycmF5NDY1ICovIDEzMjcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG9iamMtY29jb2EtYXBpICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk3ODUsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXA0NjYgKi8gMzM4IH0sCisgIHsgLyogb2JqYy1kZXNpZ25hdGVkLWluaXRpYWxpemVycyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgOTgwMCwgLyogRGlhZ0FycmF5NDY3ICovIDEzMjksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG9iamMtZmxleGlibGUtYXJyYXkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk4MjksIC8qIERpYWdBcnJheTQ2OCAqLyAxMzM2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvYmpjLWZvcndhcmQtY2xhc3MtcmVkZWZpbml0aW9uICovICAgICAgICAgICAgICAgICAgICAgICA5ODQ5LCAvKiBEaWFnQXJyYXk0NjkgKi8gMTMzOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb2JqYy1pbnRlcmZhY2UtaXZhcnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTg4MSwgLyogRGlhZ0FycmF5NDcwICovIDEzNDEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG9iamMtbGl0ZXJhbC1jb21wYXJlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk5MDIsIC8qIERpYWdBcnJheTQ3MSAqLyAxMzQzLCAvKiBEaWFnU3ViR3JvdXA0NzEgKi8gMzQwIH0sCisgIHsgLyogb2JqYy1saXRlcmFsLWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTkyMywgLyogRGlhZ0FycmF5NDcyICovIDEzNDUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG9iamMtbWFjcm8tcmVkZWZpbml0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk5NDcsIC8qIERpYWdBcnJheTQ3MyAqLyAxMzQ4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvYmpjLW1lc3NhZ2luZy1pZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5OTcxLCAvKiBEaWFnQXJyYXk0NzQgKi8gMTM1MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb2JqYy1tZXRob2QtYWNjZXNzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTk4OSwgLyogRGlhZ0FycmF5NDc1ICovIDEzNTIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG9iamMtbWlzc2luZy1wcm9wZXJ0eS1zeW50aGVzaXMgKi8gICAgICAgICAgICAgICAgICAgICAgIDEwMDA4LCAvKiBEaWFnQXJyYXk0NzYgKi8gMTM1OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb2JqYy1taXNzaW5nLXN1cGVyLWNhbGxzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwNDAsIC8qIERpYWdBcnJheTQ3NyAqLyAxMzYxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvYmpjLW11bHRpcGxlLW1ldGhvZC1uYW1lcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDA2NSwgLyogRGlhZ0FycmF5NDc4ICovIDEzNjMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG9iamMtbm9uY29weS1yZXRhaW4tYmxvY2stcHJvcGVydHkgKi8gICAgICAgICAgICAgICAgICAgIDEwMDkyLCAvKiBEaWFnQXJyYXk0NzkgKi8gMTM2NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb2JqYy1ub251bmlmaWVkLWV4Y2VwdGlvbnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAxMjcsIC8qIERpYWdBcnJheTQ4MCAqLyAxMzY3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvYmpjLXByb3BlcnR5LWFzc2lnbi1vbi1vYmplY3QtdHlwZSAqLyAgICAgICAgICAgICAgICAgICAxMDE1NCwgLyogRGlhZ0FycmF5NDgxICovIDEzNjksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG9iamMtcHJvcGVydHktaW1wbGVtZW50YXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgIDEwMTkwLCAvKiBEaWFnQXJyYXk0ODIgKi8gMTM3MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb2JqYy1wcm9wZXJ0eS1pbXBsaWNpdC1taXNtYXRjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgMTAyMTksIC8qIERpYWdBcnJheTQ4MyAqLyAxMzc2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvYmpjLXByb3BlcnR5LW1hdGNoZXMtY29jb2Etb3duZXJzaGlwLXJ1bGUgKi8gICAgICAgICAgICAxMDI1MSwgLyogRGlhZ0FycmF5NDg0ICovIDEzNzgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG9iamMtcHJvcGVydHktbm8tYXR0cmlidXRlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMjk0LCAvKiBEaWFnQXJyYXk0ODUgKi8gMTM4MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb2JqYy1wcm9wZXJ0eS1zeW50aGVzaXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAzMjEsIC8qIERpYWdBcnJheTQ4NiAqLyAxMzgzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvYmpjLXByb3RvY29sLW1ldGhvZC1pbXBsZW1lbnRhdGlvbiAqLyAgICAgICAgICAgICAgICAgICAxMDM0NSwgLyogRGlhZ0FycmF5NDg3ICovIDEzODcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG9iamMtcHJvdG9jb2wtcHJvcGVydHktc3ludGhlc2lzICovICAgICAgICAgICAgICAgICAgICAgIDEwMzgxLCAvKiBEaWFnQXJyYXk0ODggKi8gMTM4OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb2JqYy1wcm90b2NvbC1xdWFsaWZpZXJzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA0MTQsIC8qIERpYWdBcnJheTQ4OSAqLyAxMzkxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvYmpjLXJlYWRvbmx5LXdpdGgtc2V0dGVyLXByb3BlcnR5ICovICAgICAgICAgICAgICAgICAgICAxMDQzOSwgLyogRGlhZ0FycmF5NDkwICovIDEzOTMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG9iamMtcmVkdW5kYW50LWFwaS11c2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNDc0LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNDkxICovIDM0MiB9LAorICB7IC8qIG9iamMtcmVkdW5kYW50LWxpdGVyYWwtdXNlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNDk3LCAvKiBEaWFnQXJyYXk0OTIgKi8gMTM5NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb2JqYy1yb290LWNsYXNzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA1MjQsIC8qIERpYWdBcnJheTQ5MyAqLyAxMzk3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvYmpjLXN0cmluZy1jb21wYXJlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDU0MCwgLyogRGlhZ0FycmF5NDk0ICovIDEzOTksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG9iamMtc3RyaW5nLWNvbmNhdGVuYXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNTYwLCAvKiBEaWFnQXJyYXk0OTUgKi8gMTQwMSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb2JqYy11bnNhZmUtcGVyZm9ybS1zZWxlY3RvciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgMTA1ODYsIC8qIERpYWdBcnJheTQ5NiAqLyAxNDAzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvZHIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDYxNSwgLyogRGlhZ0FycmF5NDk3ICovIDE0MDUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG9sZC1zdHlsZS1jYXN0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNjE5LCAvKiBEaWFnQXJyYXk0OTggKi8gMTQwNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb2xkLXN0eWxlLWRlZmluaXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA2MzQsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvcGVuY2wtdW5zdXBwb3J0ZWQtcmdiYSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDY1NSwgLyogRGlhZ0FycmF5NTAwICovIDE0MDksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG9wZW5tcC1jbGF1c2VzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNjc5LCAvKiBEaWFnQXJyYXk1MDEgKi8gMTQxMSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb3Blbm1wLWxvb3AtZm9ybSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA2OTQsIC8qIERpYWdBcnJheTUwMiAqLyAxNDE0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvcGVubXAtdGFyZ2V0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDcxMSwgLyogRGlhZ0FycmF5NTAzICovIDE0MTcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG9wdGlvbi1pZ25vcmVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNzI1LCAvKiBEaWFnQXJyYXk1MDQgKi8gMTQyMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb3JkZXJlZC1jb21wYXJlLWZ1bmN0aW9uLXBvaW50ZXJzICovICAgICAgICAgICAgICAgICAgICAgMTA3NDAsIC8qIERpYWdBcnJheTUwNSAqLyAxNDI5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvdXQtb2YtbGluZS1kZWNsYXJhdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDc3NCwgLyogRGlhZ0FycmF5NTA2ICovIDE0MzEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG91dC1vZi1zY29wZS1mdW5jdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNzk4LCAvKiBEaWFnQXJyYXk1MDcgKi8gMTQzMywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb3Zlci1hbGlnbmVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA4MjAsIC8qIERpYWdBcnJheTUwOCAqLyAxNDM1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvdmVyZmxvdyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDgzMywgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG92ZXJsZW5ndGgtc3RyaW5ncyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwODQyLCAvKiBEaWFnQXJyYXk1MTAgKi8gMTQzNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb3ZlcmxvYWRlZC1zaGlmdC1vcC1wYXJlbnRoZXNlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgMTA4NjEsIC8qIERpYWdBcnJheTUxMSAqLyAxNDM5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvdmVybG9hZGVkLXZpcnR1YWwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDg5MywgLyogRGlhZ0FycmF5NTEyICovIDE0NDEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIG92ZXJyaWRlLWluaXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwOTEyLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNTEzICovIDM0NCB9LAorICB7IC8qIG92ZXJyaWRlLW1vZHVsZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwOTI2LCAvKiBEaWFnQXJyYXk1MTQgKi8gMTQ0MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogb3ZlcnJpZGluZy1tZXRob2QtbWlzbWF0Y2ggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA5NDIsIC8qIERpYWdBcnJheTUxNSAqLyAxNDQ1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBvdmVycmlkaW5nLXQtb3B0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDk2OSwgLyogRGlhZ0FycmF5NTE2ICovIDE0NTMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHBhY2tlZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwOTg5LCAvKiBEaWFnQXJyYXk1MTcgKi8gMTQ1NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcGFkZGVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTA5OTYsIC8qIERpYWdBcnJheTUxOCAqLyAxNDU3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBwYXJlbnRoZXNlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTAwMywgLyogRGlhZ0FycmF5NTE5ICovIDE0NjEsIC8qIERpYWdTdWJHcm91cDUxOSAqLyAzNDYgfSwKKyAgeyAvKiBwYXJlbnRoZXNlcy1lcXVhbGl0eSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTAxNSwgLyogRGlhZ0FycmF5NTIwICovIDE0NjUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHBhcnRpYWwtYXZhaWxhYmlsaXR5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMDM2LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNTIxICovIDM1NCB9LAorICB7IC8qIHBhc3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMDU3LCAvKiBEaWFnQXJyYXk1MjIgKi8gMTQ2NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcGFzcy1hbmFseXNpcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEwNjIsIC8qIERpYWdBcnJheTUyMyAqLyAxNDY5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBwYXNzLWZhaWxlZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTA3NiwgLyogRGlhZ0FycmF5NTI0ICovIDE0NzMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHBhc3MtbWlzc2VkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMDg4LCAvKiBEaWFnQXJyYXk1MjUgKi8gMTQ3NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcGNoLWRhdGUtdGltZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMDAsIC8qIERpYWdBcnJheTUyNiAqLyAxNDc3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBwZWRhbnRpYyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExNCwgLyogRGlhZ0FycmF5NTI3ICovIDE0NzksIC8qIERpYWdTdWJHcm91cDUyNyAqLyAzNTYgfSwKKyAgeyAvKiBwZWRhbnRpYy1jb3JlLWZlYXR1cmVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTEyMywgLyogRGlhZ0FycmF5NTI4ICovIDE1NTAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHBlc3NpbWl6aW5nLW1vdmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTQ2LCAvKiBEaWFnQXJyYXk1MjkgKi8gMTU1MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcG9pbnRlci1hcml0aCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExNjMsIC8qIERpYWdBcnJheTUzMCAqLyAxNTU1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBwb2ludGVyLWJvb2wtY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTE3NywgLyogRGlhZ0FycmF5NTMxICovIDE1NjIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHBvaW50ZXItaW50ZWdlci1jb21wYXJlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMjAxLCAvKiBEaWFnQXJyYXk1MzIgKi8gMTU2NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcG9pbnRlci1zaWduICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEyMjUsIC8qIERpYWdBcnJheTUzMyAqLyAxNTY3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBwb2ludGVyLXRvLWludC1jYXN0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTIzOCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHBvaW50ZXItdHlwZS1taXNtYXRjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMjU4LCAvKiBEaWFnQXJyYXk1MzUgKi8gMTU2OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcG90ZW50aWFsbHktZXZhbHVhdGVkLWV4cHJlc3Npb24gKi8gICAgICAgICAgICAgICAgICAgICAgMTEyODAsIC8qIERpYWdBcnJheTUzNiAqLyAxNTcxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBwcmFnbWEtY2xhbmctYXR0cmlidXRlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTMxMywgLyogRGlhZ0FycmF5NTM3ICovIDE1NzMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHByYWdtYS1vbmNlLW91dHNpZGUtaGVhZGVyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMzM2LCAvKiBEaWFnQXJyYXk1MzggKi8gMTU3NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcHJhZ21hLXBhY2sgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEzNjMsIC8qIERpYWdBcnJheTUzOSAqLyAxNTc3LCAvKiBEaWFnU3ViR3JvdXA1MzkgKi8gNDA4IH0sCisgIHsgLyogcHJhZ21hLXBhY2stc3VzcGljaW91cy1pbmNsdWRlICovICAgICAgICAgICAgICAgICAgICAgICAgMTEzNzUsIC8qIERpYWdBcnJheTU0MCAqLyAxNTgwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBwcmFnbWEtc3lzdGVtLWhlYWRlci1vdXRzaWRlLWhlYWRlciAqLyAgICAgICAgICAgICAgICAgICAxMTQwNiwgLyogRGlhZ0FycmF5NTQxICovIDE1ODIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHByYWdtYXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExNDQyLCAvKiBEaWFnQXJyYXk1NDIgKi8gMTU4NCwgLyogRGlhZ1N1Ykdyb3VwNTQyICovIDQxMCB9LAorICB7IC8qIHByZWRlZmluZWQtaWRlbnRpZmllci1vdXRzaWRlLWZ1bmN0aW9uICovICAgICAgICAgICAgICAgIDExNDUwLCAvKiBEaWFnQXJyYXk1NDMgKi8gMTU4NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcHJpdmF0ZS1leHRlcm4gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE0ODksIC8qIERpYWdBcnJheTU0NCAqLyAxNTg4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBwcml2YXRlLWhlYWRlciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTUwNCwgLyogRGlhZ0FycmF5NTQ1ICovIDE1OTAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHByaXZhdGUtbW9kdWxlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExNTE5LCAvKiBEaWFnQXJyYXk1NDYgKi8gMTU5MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcHJvZmlsZS1pbnN0ci1taXNzaW5nICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE1MzQsIC8qIERpYWdBcnJheTU0NyAqLyAxNTk3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBwcm9maWxlLWluc3RyLW91dC1vZi1kYXRlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTU1NiwgLyogRGlhZ0FycmF5NTQ4ICovIDE1OTksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHByb2ZpbGUtaW5zdHItdW5wcm9maWxlZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExNTgyLCAvKiBEaWFnQXJyYXk1NDkgKi8gMTYwMSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcHJvcGVydHktYWNjZXNzLWRvdC1zeW50YXggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE2MDcsIC8qIERpYWdBcnJheTU1MCAqLyAxNjAzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBwcm9wZXJ0eS1hdHRyaWJ1dGUtbWlzbWF0Y2ggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAxMTYzNCwgLyogRGlhZ0FycmF5NTUxICovIDE2MDUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHByb3RvY29sICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExNjYyLCAvKiBEaWFnQXJyYXk1NTIgKi8gMTYxMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcHJvdG9jb2wtcHJvcGVydHktc3ludGhlc2lzLWFtYmlndWl0eSAqLyAgICAgICAgICAgICAgICAgMTE2NzEsIC8qIERpYWdBcnJheTU1MyAqLyAxNjEyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBxdWFsaWZpZWQtdm9pZC1yZXR1cm4tdHlwZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTcwOSwgLyogRGlhZ0FycmF5NTU0ICovIDE2MTQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHF1b3RlZC1pbmNsdWRlLWluLWZyYW1ld29yay1oZWFkZXIgKi8gICAgICAgICAgICAgICAgICAgIDExNzM2LCAvKiBEaWFnQXJyYXk1NTUgKi8gMTYxNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcmFuZ2UtbG9vcC1hbmFseXNpcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE3NzEsIC8qIERpYWdBcnJheTU1NiAqLyAxNjE4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiByZWFkb25seS1pYm91dGxldC1wcm9wZXJ0eSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTc5MSwgLyogRGlhZ0FycmF5NTU3ICovIDE2MjIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHJlY2VpdmVyLWV4cHIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExODE4LCAvKiBEaWFnQXJyYXk1NTggKi8gMTYyNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcmVjZWl2ZXItZm9yd2FyZC1jbGFzcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE4MzIsIC8qIERpYWdBcnJheTU1OSAqLyAxNjI2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiByZWRlY2xhcmVkLWNsYXNzLW1lbWJlciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTg1NSwgLyogRGlhZ0FycmF5NTYwICovIDE2MjksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHJlZHVuZGFudC1kZWNscyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExODc5LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcmVkdW5kYW50LW1vdmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE4OTUsIC8qIERpYWdBcnJheTU2MiAqLyAxNjMxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiByZWR1bmRhbnQtcGFyZW5zICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTkxMCwgLyogRGlhZ0FycmF5NTYzICovIDE2MzMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHJlZ2lzdGVyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExOTI3LCAvKiBEaWFnQXJyYXk1NjQgKi8gMTYzNSwgLyogRGlhZ1N1Ykdyb3VwNTY0ICovIDQxNSB9LAorICB7IC8qIHJlaW50ZXJwcmV0LWJhc2UtY2xhc3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExOTM2LCAvKiBEaWFnQXJyYXk1NjUgKi8gMTYzNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcmVtYXJrLWJhY2tlbmQtcGx1Z2luICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTE5NTksIC8qIERpYWdBcnJheTU2NiAqLyAxNjM5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiByZW9yZGVyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTk4MSwgLyogRGlhZ0FycmF5NTY3ICovIDE2NDEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHJlcXVpcmVzLXN1cGVyLWF0dHJpYnV0ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExOTg5LCAvKiBEaWFnQXJyYXk1NjggKi8gMTY0MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcmVzZXJ2ZWQtaWQtbWFjcm8gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIwMTQsIC8qIERpYWdBcnJheTU2OSAqLyAxNjQ1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiByZXNlcnZlZC11c2VyLWRlZmluZWQtbGl0ZXJhbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAxMjAzMiwgLyogRGlhZ0FycmF5NTcwICovIDE2NDcsIC8qIERpYWdTdWJHcm91cDU3MCAqLyA0MTcgfSwKKyAgeyAvKiByZXRhaW5lZC1sYW5ndWFnZS1saW5rYWdlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjA2MiwgLyogRGlhZ0FycmF5NTcxICovIDE2NTAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHJldHVybi1zdGFjay1hZGRyZXNzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMDg4LCAvKiBEaWFnQXJyYXk1NzIgKi8gMTY1MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogcmV0dXJuLXN0ZC1tb3ZlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIxMDksIC8qIERpYWdBcnJheTU3MyAqLyAxNjU2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiByZXR1cm4tc3RkLW1vdmUtaW4tYysrMTEgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjEyNSwgLyogRGlhZ0FycmF5NTc0ICovIDE2NTgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHJldHVybi10eXBlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMTUwLCAvKiBEaWFnQXJyYXk1NzUgKi8gMTY2MCwgLyogRGlhZ1N1Ykdyb3VwNTc1ICovIDQxOSB9LAorICB7IC8qIHJldHVybi10eXBlLWMtbGlua2FnZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMTYyLCAvKiBEaWFnQXJyYXk1NzYgKi8gMTY3MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc2FuaXRpemUtYWRkcmVzcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIxODQsIC8qIERpYWdBcnJheTU3NyAqLyAxNjczLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzZWN0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjIwMSwgLyogRGlhZ0FycmF5NTc4ICovIDE2NzYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHNlbGVjdG9yICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMjA5LCAvKiBEaWFnQXJyYXk1NzkgKi8gMTY4MCwgLyogRGlhZ1N1Ykdyb3VwNTc5ICovIDQyMSB9LAorICB7IC8qIHNlbGVjdG9yLXR5cGUtbWlzbWF0Y2ggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMjE4LCAvKiBEaWFnQXJyYXk1ODAgKi8gMTY4MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc2VsZi1hc3NpZ24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIyNDEsIC8qIERpYWdBcnJheTU4MSAqLyAxNjg0LCAvKiBEaWFnU3ViR3JvdXA1ODEgKi8gNDIzIH0sCisgIHsgLyogc2VsZi1hc3NpZ24tZmllbGQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIyNTMsIC8qIERpYWdBcnJheTU4MiAqLyAxNjg2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzZWxmLWFzc2lnbi1vdmVybG9hZGVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjI3MSwgLyogRGlhZ0FycmF5NTgzICovIDE2ODgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHNlbGYtbW92ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMjk0LCAvKiBEaWFnQXJyYXk1ODQgKi8gMTY5MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc2VtaWNvbG9uLWJlZm9yZS1tZXRob2QtYm9keSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgMTIzMDQsIC8qIERpYWdBcnJheTU4NSAqLyAxNjkyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzZW50aW5lbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjMzMywgLyogRGlhZ0FycmF5NTg2ICovIDE2OTQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHNlcXVlbmNlLXBvaW50ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMzQyLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNTg3ICovIDQyNiB9LAorICB7IC8qIHNlcmlhbGl6ZWQtZGlhZ25vc3RpY3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMzU3LCAvKiBEaWFnQXJyYXk1ODggKi8gMTY5NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc2hhZG93ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIzODAsIC8qIERpYWdBcnJheTU4OSAqLyAxNzAwLCAvKiBEaWFnU3ViR3JvdXA1ODkgKi8gNDI4IH0sCisgIHsgLyogc2hhZG93LWFsbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIzODcsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXA1OTAgKi8gNDMxIH0sCisgIHsgLyogc2hhZG93LWZpZWxkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIzOTgsIC8qIERpYWdBcnJheTU5MSAqLyAxNzAyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzaGFkb3ctZmllbGQtaW4tY29uc3RydWN0b3IgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAxMjQxMSwgLyogRGlhZ0FycmF5NTkyICovIDE3MDQsIC8qIERpYWdTdWJHcm91cDU5MiAqLyA0MzYgfSwKKyAgeyAvKiBzaGFkb3ctZmllbGQtaW4tY29uc3RydWN0b3ItbW9kaWZpZWQgKi8gICAgICAgICAgICAgICAgICAxMjQzOSwgLyogRGlhZ0FycmF5NTkzICovIDE3MDYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHNoYWRvdy1pdmFyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNDc2LCAvKiBEaWFnQXJyYXk1OTQgKi8gMTcwOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc2hhZG93LXVuY2FwdHVyZWQtbG9jYWwgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI0ODgsIC8qIERpYWdBcnJheTU5NSAqLyAxNzEwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzaGlmdC1jb3VudC1uZWdhdGl2ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjUxMiwgLyogRGlhZ0FycmF5NTk2ICovIDE3MTIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHNoaWZ0LWNvdW50LW92ZXJmbG93ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNTMzLCAvKiBEaWFnQXJyYXk1OTcgKi8gMTcxNCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc2hpZnQtbmVnYXRpdmUtdmFsdWUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI1NTQsIC8qIERpYWdBcnJheTU5OCAqLyAxNzE2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzaGlmdC1vcC1wYXJlbnRoZXNlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjU3NSwgLyogRGlhZ0FycmF5NTk5ICovIDE3MTgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHNoaWZ0LW92ZXJmbG93ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNTk2LCAvKiBEaWFnQXJyYXk2MDAgKi8gMTcyMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc2hpZnQtc2lnbi1vdmVyZmxvdyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI2MTEsIC8qIERpYWdBcnJheTYwMSAqLyAxNzIyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzaG9ydGVuLTY0LXRvLTMyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjYzMSwgLyogRGlhZ0FycmF5NjAyICovIDE3MjQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHNpZ24tY29tcGFyZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNjQ4LCAvKiBEaWFnQXJyYXk2MDMgKi8gMTcyNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc2lnbi1jb252ZXJzaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI2NjEsIC8qIERpYWdBcnJheTYwNCAqLyAxNzI4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzaWduLXByb21vICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjY3NywgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHNpZ25lZC1lbnVtLWJpdGZpZWxkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNjg4LCAvKiBEaWFnQXJyYXk2MDYgKi8gMTczMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc2l6ZW9mLWFycmF5LWFyZ3VtZW50ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI3MDksIC8qIERpYWdBcnJheTYwNyAqLyAxNzM0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzaXplb2YtYXJyYXktZGVjYXkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjczMSwgLyogRGlhZ0FycmF5NjA4ICovIDE3MzYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHNpemVvZi1wb2ludGVyLWRpdiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNzUwLCAvKiBEaWFnQXJyYXk2MDkgKi8gMTczOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc2l6ZW9mLXBvaW50ZXItbWVtYWNjZXNzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI3NjksIC8qIERpYWdBcnJheTYxMCAqLyAxNzQwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzbGFzaC11LWZpbGVuYW1lICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjc5NCwgLyogRGlhZ0FycmF5NjExICovIDE3NDMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHNvbWV0aW1lcy11bmluaXRpYWxpemVkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyODExLCAvKiBEaWFnQXJyYXk2MTIgKi8gMTc0NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc291cmNlLXVzZXMtb3Blbm1wICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI4MzUsIC8qIERpYWdBcnJheTYxMyAqLyAxNzQ3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzcGlyLWNvbXBhdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjg1NCwgLyogRGlhZ0FycmF5NjE0ICovIDE3NTAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHN0YWNrLXByb3RlY3RvciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyODY2LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc3RhdGljLWZsb2F0LWluaXQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI4ODIsIC8qIERpYWdBcnJheTYxNiAqLyAxNzUyLCAvKiBEaWFnU3ViR3JvdXA2MTYgKi8gNDM4IH0sCisgIHsgLyogc3RhdGljLWluLWlubGluZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI5MDAsIC8qIERpYWdBcnJheTYxNyAqLyAxNzU0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzdGF0aWMtaW5saW5lLWV4cGxpY2l0LWluc3RhbnRpYXRpb24gKi8gICAgICAgICAgICAgICAgICAxMjkxNywgLyogRGlhZ0FycmF5NjE4ICovIDE3NTcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHN0YXRpYy1sb2NhbC1pbi1pbmxpbmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyOTU0LCAvKiBEaWFnQXJyYXk2MTkgKi8gMTc1OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc3RhdGljLXNlbGYtaW5pdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI5NzcsIC8qIERpYWdBcnJheTYyMCAqLyAxNzYxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzdGRsaWJjeHgtbm90LWZvdW5kICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjk5NCwgLyogRGlhZ0FycmF5NjIxICovIDE3NjMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHN0cmljdC1hbGlhc2luZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMDE0LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc3RyaWN0LWFsaWFzaW5nPTAgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMwMzAsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzdHJpY3QtYWxpYXNpbmc9MSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzA0OCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHN0cmljdC1hbGlhc2luZz0yICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMDY2LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc3RyaWN0LW92ZXJmbG93ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMwODQsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzdHJpY3Qtb3ZlcmZsb3c9MCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzEwMCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHN0cmljdC1vdmVyZmxvdz0xICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMTE4LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc3RyaWN0LW92ZXJmbG93PTIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMxMzYsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzdHJpY3Qtb3ZlcmZsb3c9MyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzE1NCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHN0cmljdC1vdmVyZmxvdz00ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMTcyLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc3RyaWN0LW92ZXJmbG93PTUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMxOTAsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzdHJpY3QtcHJvdG90eXBlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzIwOCwgLyogRGlhZ0FycmF5NjMzICovIDE3NjUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHN0cmljdC1zZWxlY3Rvci1tYXRjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMjI2LCAvKiBEaWFnQXJyYXk2MzQgKi8gMTc2NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc3RyaW5nLWNvbXBhcmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMyNDgsIC8qIERpYWdBcnJheTYzNSAqLyAxNzY5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzdHJpbmctY29udmVyc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzI2MywgLyogRGlhZ0FycmF5NjM2ICovIDE3NzEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHN0cmluZy1wbHVzLWNoYXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMjgxLCAvKiBEaWFnQXJyYXk2MzcgKi8gMTc3MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc3RyaW5nLXBsdXMtaW50ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMyOTgsIC8qIERpYWdBcnJheTYzOCAqLyAxNzc1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzdHJsY3B5LXN0cmxjYXQtc2l6ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzMxNCwgLyogRGlhZ0FycmF5NjM5ICovIDE3NzcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHN0cm5jYXQtc2l6ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMzM1LCAvKiBEaWFnQXJyYXk2NDAgKi8gMTc3OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc3VwZXItY2xhc3MtbWV0aG9kLW1pc21hdGNoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMzNDgsIC8qIERpYWdBcnJheTY0MSAqLyAxNzgzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzdXNwaWNpb3VzLWJ6ZXJvICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzM3NiwgLyogRGlhZ0FycmF5NjQyICovIDE3ODUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHN1c3BpY2lvdXMtbWVtYWNjZXNzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzMzkzLCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNjQzICovIDQ0MCB9LAorICB7IC8qIHN3aXRjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNDE0LCAvKiBEaWFnQXJyYXk2NDQgKi8gMTc4NywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc3dpdGNoLWJvb2wgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM0MjEsIC8qIERpYWdBcnJheTY0NSAqLyAxNzkxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzd2l0Y2gtZGVmYXVsdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzQzMywgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHN3aXRjaC1lbnVtICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNDQ4LCAvKiBEaWFnQXJyYXk2NDcgKi8gMTc5MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogc3luYy1mZXRjaC1hbmQtbmFuZC1zZW1hbnRpY3MtY2hhbmdlZCAqLyAgICAgICAgICAgICAgICAgMTM0NjAsIC8qIERpYWdBcnJheTY0OCAqLyAxNzk1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiBzeW50aCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzQ5OCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHRhdXRvbG9naWNhbC1jb21wYXJlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzNTA0LCAvKiBEaWFnQXJyYXk2NTAgKi8gMTc5NywgLyogRGlhZ1N1Ykdyb3VwNjUwICovIDQ0NiB9LAorICB7IC8qIHRhdXRvbG9naWNhbC1jb25zdGFudC1jb21wYXJlICovICAgICAgICAgICAgICAgICAgICAgICAgIDEzNTI1LCAvKiBEaWFnQXJyYXk2NTEgKi8gMTgwMCwgLyogRGlhZ1N1Ykdyb3VwNjUxICovIDQ1MSB9LAorICB7IC8qIHRhdXRvbG9naWNhbC1jb25zdGFudC1pbi1yYW5nZS1jb21wYXJlICovICAgICAgICAgICAgICAgIDEzNTU1LCAvKiBFbXB0eSAqLyAgICAgMCwgLyogRGlhZ1N1Ykdyb3VwNjUyICovIDQ1MyB9LAorICB7IC8qIHRhdXRvbG9naWNhbC1jb25zdGFudC1vdXQtb2YtcmFuZ2UtY29tcGFyZSAqLyAgICAgICAgICAgIDEzNTk0LCAvKiBEaWFnQXJyYXk2NTMgKi8gMTgwMiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdGF1dG9sb2dpY2FsLW92ZXJsYXAtY29tcGFyZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgMTM2MzcsIC8qIERpYWdBcnJheTY1NCAqLyAxODA0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB0YXV0b2xvZ2ljYWwtcG9pbnRlci1jb21wYXJlICovICAgICAgICAgICAgICAgICAgICAgICAgICAxMzY2NiwgLyogRGlhZ0FycmF5NjU1ICovIDE4MDYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHRhdXRvbG9naWNhbC10eXBlLWxpbWl0LWNvbXBhcmUgKi8gICAgICAgICAgICAgICAgICAgICAgIDEzNjk1LCAvKiBEaWFnQXJyYXk2NTYgKi8gMTgwOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdGF1dG9sb2dpY2FsLXVuZGVmaW5lZC1jb21wYXJlICovICAgICAgICAgICAgICAgICAgICAgICAgMTM3MjcsIC8qIERpYWdBcnJheTY1NyAqLyAxODExLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB0YXV0b2xvZ2ljYWwtdW5zaWduZWQtZW51bS16ZXJvLWNvbXBhcmUgKi8gICAgICAgICAgICAgICAxMzc1OCwgLyogRGlhZ0FycmF5NjU4ICovIDE4MTQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHRhdXRvbG9naWNhbC11bnNpZ25lZC16ZXJvLWNvbXBhcmUgKi8gICAgICAgICAgICAgICAgICAgIDEzNzk4LCAvKiBEaWFnQXJyYXk2NTkgKi8gMTgxNiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdGVudGF0aXZlLWRlZmluaXRpb24taW5jb21wbGV0ZS10eXBlICovICAgICAgICAgICAgICAgICAgMTM4MzMsIC8qIERpYWdBcnJheTY2MCAqLyAxODE4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB0aHJlYWQtc2FmZXR5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzg3MCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDY2MSAqLyA0NTcgfSwKKyAgeyAvKiB0aHJlYWQtc2FmZXR5LWFuYWx5c2lzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzg4NCwgLyogRGlhZ0FycmF5NjYyICovIDE4MjAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHRocmVhZC1zYWZldHktYXR0cmlidXRlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzOTA3LCAvKiBEaWFnQXJyYXk2NjMgKi8gMTgzOCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdGhyZWFkLXNhZmV0eS1iZXRhICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM5MzIsIC8qIERpYWdBcnJheTY2NCAqLyAxODQ2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB0aHJlYWQtc2FmZXR5LW5lZ2F0aXZlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMzk1MSwgLyogRGlhZ0FycmF5NjY1ICovIDE4NDgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHRocmVhZC1zYWZldHktcHJlY2lzZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzOTc0LCAvKiBEaWFnQXJyYXk2NjYgKi8gMTg1MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdGhyZWFkLXNhZmV0eS1yZWZlcmVuY2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTM5OTYsIC8qIERpYWdBcnJheTY2NyAqLyAxODU0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB0aHJlYWQtc2FmZXR5LXZlcmJvc2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDAyMCwgLyogRGlhZ0FycmF5NjY4ICovIDE4NTcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHRyaWdyYXBocyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MDQyLCAvKiBEaWFnQXJyYXk2NjkgKi8gMTg1OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdHlwZS1saW1pdHMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQwNTIsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB0eXBlLXNhZmV0eSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDA2NCwgLyogRGlhZ0FycmF5NjcxICovIDE4NjQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHR5cGVkZWYtcmVkZWZpbml0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MDc2LCAvKiBEaWFnQXJyYXk2NzIgKi8gMTg2OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdHlwZW5hbWUtbWlzc2luZyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQwOTcsIC8qIERpYWdBcnJheTY3MyAqLyAxODcwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bmFibGUtdG8tb3Blbi1zdGF0cy1maWxlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDExNCwgLyogRGlhZ0FycmF5Njc0ICovIDE4NzIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVuYXZhaWxhYmxlLWRlY2xhcmF0aW9ucyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MTQwLCAvKiBEaWFnQXJyYXk2NzUgKi8gMTg3NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW5kZWNsYXJlZC1zZWxlY3RvciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQxNjUsIC8qIERpYWdBcnJheTY3NiAqLyAxODc2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bmRlZiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDE4NSwgLyogRGlhZ0FycmF5Njc3ICovIDE4NzksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVuZGVmaW5lZC1ib29sLWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MTkxLCAvKiBEaWFnQXJyYXk2NzggKi8gMTg4MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW5kZWZpbmVkLWZ1bmMtdGVtcGxhdGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQyMTcsIC8qIERpYWdBcnJheTY3OSAqLyAxODg0LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bmRlZmluZWQtaW5saW5lICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDI0MSwgLyogRGlhZ0FycmF5NjgwICovIDE4ODYsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVuZGVmaW5lZC1pbnRlcm5hbCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MjU4LCAvKiBEaWFnQXJyYXk2ODEgKi8gMTg4OCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW5kZWZpbmVkLWludGVybmFsLXR5cGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQyNzcsIC8qIERpYWdBcnJheTY4MiAqLyAxODkwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bmRlZmluZWQtcmVpbnRlcnByZXQtY2FzdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDMwMSwgLyogRGlhZ0FycmF5NjgzICovIDE4OTIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVuZGVmaW5lZC12YXItdGVtcGxhdGUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0MzI4LCAvKiBEaWFnQXJyYXk2ODQgKi8gMTg5NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW5ldmFsdWF0ZWQtZXhwcmVzc2lvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQzNTEsIC8qIERpYWdBcnJheTY4NSAqLyAxODk3LCAvKiBEaWFnU3ViR3JvdXA2ODUgKi8gNDYyIH0sCisgIHsgLyogdW5ndWFyZGVkLWF2YWlsYWJpbGl0eSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQzNzQsIC8qIERpYWdBcnJheTY4NiAqLyAxODk5LCAvKiBEaWFnU3ViR3JvdXA2ODYgKi8gNDY0IH0sCisgIHsgLyogdW5ndWFyZGVkLWF2YWlsYWJpbGl0eS1uZXcgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQzOTcsIC8qIERpYWdBcnJheTY4NyAqLyAxOTAxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bmljb2RlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDQyNCwgLyogRGlhZ0FycmF5Njg4ICovIDE5MDMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVuaWNvZGUtaG9tb2dseXBoICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0NDMyLCAvKiBEaWFnQXJyYXk2ODkgKi8gMTkwOSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW5pY29kZS13aGl0ZXNwYWNlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ0NTAsIC8qIERpYWdBcnJheTY5MCAqLyAxOTExLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bmljb2RlLXplcm8td2lkdGggKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDQ2OSwgLyogRGlhZ0FycmF5NjkxICovIDE5MTMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVuaW5pdGlhbGl6ZWQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0NDg4LCAvKiBEaWFnQXJyYXk2OTIgKi8gMTkxNSwgLyogRGlhZ1N1Ykdyb3VwNjkyICovIDQ2NiB9LAorICB7IC8qIHVua25vd24tYXJndW1lbnQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0NTAyLCAvKiBEaWFnQXJyYXk2OTMgKi8gMTkyMywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW5rbm93bi1hdHRyaWJ1dGVzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ1MTksIC8qIERpYWdBcnJheTY5NCAqLyAxOTI2LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bmtub3duLWVzY2FwZS1zZXF1ZW5jZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDUzOCwgLyogRGlhZ0FycmF5Njk1ICovIDE5MjgsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVua25vd24tcHJhZ21hcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0NTYyLCAvKiBEaWFnQXJyYXk2OTYgKi8gMTkzMCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW5rbm93bi1zYW5pdGl6ZXJzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ1NzgsIC8qIERpYWdBcnJheTY5NyAqLyAxOTQ4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bmtub3duLXdhcm5pbmctb3B0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDU5NywgLyogRGlhZ0FycmF5Njk4ICovIDE5NTAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVubmFtZWQtdHlwZS10ZW1wbGF0ZS1hcmdzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0NjIwLCAvKiBEaWFnQXJyYXk2OTkgKi8gMTk1NCwgLyogRGlhZ1N1Ykdyb3VwNjk5ICovIDQ2OSB9LAorICB7IC8qIHVubmVlZGVkLWludGVybmFsLWRlY2xhcmF0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgIDE0NjQ3LCAvKiBEaWFnQXJyYXk3MDAgKi8gMTk1NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW5uZWVkZWQtbWVtYmVyLWZ1bmN0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ2NzcsIC8qIERpYWdBcnJheTcwMSAqLyAxOTU5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bnJlYWNoYWJsZS1jb2RlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDcwMiwgLyogRGlhZ0FycmF5NzAyICovIDE5NjEsIC8qIERpYWdTdWJHcm91cDcwMiAqLyA0NzEgfSwKKyAgeyAvKiB1bnJlYWNoYWJsZS1jb2RlLWFnZ3Jlc3NpdmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAxNDcxOSwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDcwMyAqLyA0NzMgfSwKKyAgeyAvKiB1bnJlYWNoYWJsZS1jb2RlLWJyZWFrICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDc0NywgLyogRGlhZ0FycmF5NzA0ICovIDE5NjMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVucmVhY2hhYmxlLWNvZGUtbG9vcC1pbmNyZW1lbnQgKi8gICAgICAgICAgICAgICAgICAgICAgIDE0NzcwLCAvKiBEaWFnQXJyYXk3MDUgKi8gMTk2NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW5yZWFjaGFibGUtY29kZS1yZXR1cm4gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ4MDIsIC8qIERpYWdBcnJheTcwNiAqLyAxOTY3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bnNlcXVlbmNlZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDgyNiwgLyogRGlhZ0FycmF5NzA3ICovIDE5NjksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVuc3VwcG9ydGVkLWFicyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0ODM4LCAvKiBEaWFnQXJyYXk3MDggKi8gMTk3MiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW5zdXBwb3J0ZWQtYXZhaWxhYmlsaXR5LWd1YXJkICovICAgICAgICAgICAgICAgICAgICAgICAgMTQ4NTQsIC8qIERpYWdBcnJheTcwOSAqLyAxOTc1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bnN1cHBvcnRlZC1jYiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDg4NSwgLyogRGlhZ0FycmF5NzEwICovIDE5NzcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVuc3VwcG9ydGVkLWRsbC1iYXNlLWNsYXNzLXRlbXBsYXRlICovICAgICAgICAgICAgICAgICAgIDE0OTAwLCAvKiBEaWFnQXJyYXk3MTEgKi8gMTk3OSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW5zdXBwb3J0ZWQtZnJpZW5kICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ5MzYsIC8qIERpYWdBcnJheTcxMiAqLyAxOTgxLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bnN1cHBvcnRlZC1ncG9wdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDk1NSwgLyogRGlhZ0FycmF5NzEzICovIDE5ODQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVuc3VwcG9ydGVkLW5hbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0OTczLCAvKiBEaWFnQXJyYXk3MTQgKi8gMTk4NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW5zdXBwb3J0ZWQtdGFyZ2V0LW9wdCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQ5ODksIC8qIERpYWdBcnJheTcxNSAqLyAxOTg5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bnN1cHBvcnRlZC12aXNpYmlsaXR5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTAxMiwgLyogRGlhZ0FycmF5NzE2ICovIDE5OTEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVudXNhYmxlLXBhcnRpYWwtc3BlY2lhbGl6YXRpb24gKi8gICAgICAgICAgICAgICAgICAgICAgIDE1MDM1LCAvKiBEaWFnQXJyYXk3MTcgKi8gMTk5MywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW51c2VkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUwNjcsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXA3MTggKi8gNDc3IH0sCisgIHsgLyogdW51c2VkLWFyZ3VtZW50ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUwNzQsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50ICovICAgICAgICAgICAgICAgICAgICAgICAgICAxNTA5MCwgLyogRGlhZ0FycmF5NzIwICovIDE5OTUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVudXNlZC1jb21wYXJpc29uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MTE5LCAvKiBEaWFnQXJyYXk3MjEgKi8gMjAwMywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW51c2VkLWNvbnN0LXZhcmlhYmxlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUxMzcsIC8qIERpYWdBcnJheTcyMiAqLyAyMDA1LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bnVzZWQtZXhjZXB0aW9uLXBhcmFtZXRlciAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTE1OSwgLyogRGlhZ0FycmF5NzIzICovIDIwMDcsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVudXNlZC1mdW5jdGlvbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MTg2LCAvKiBEaWFnQXJyYXk3MjQgKi8gMjAwOSwgLyogRGlhZ1N1Ykdyb3VwNzI0ICovIDQ4NyB9LAorICB7IC8qIHVudXNlZC1nZXR0ZXItcmV0dXJuLXZhbHVlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MjAyLCAvKiBEaWFnQXJyYXk3MjUgKi8gMjAxMSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW51c2VkLWxhYmVsICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUyMjksIC8qIERpYWdBcnJheTcyNiAqLyAyMDEzLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bnVzZWQtbGFtYmRhLWNhcHR1cmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTI0MiwgLyogRGlhZ0FycmF5NzI3ICovIDIwMTUsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVudXNlZC1sb2NhbC10eXBlZGVmICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MjY0LCAvKiBEaWFnQXJyYXk3MjggKi8gMjAxNywgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW51c2VkLWxvY2FsLXR5cGVkZWZzICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUyODUsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXA3MjkgKi8gNDg5IH0sCisgIHsgLyogdW51c2VkLW1hY3JvcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUzMDcsIC8qIERpYWdBcnJheTczMCAqLyAyMDE5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bnVzZWQtbWVtYmVyLWZ1bmN0aW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTMyMSwgLyogRGlhZ0FycmF5NzMxICovIDIwMjEsIC8qIERpYWdTdWJHcm91cDczMSAqLyA0OTEgfSwKKyAgeyAvKiB1bnVzZWQtcGFyYW1ldGVyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTM0NCwgLyogRGlhZ0FycmF5NzMyICovIDIwMjMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVudXNlZC1wcml2YXRlLWZpZWxkICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1MzYxLCAvKiBEaWFnQXJyYXk3MzMgKi8gMjAyNSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdW51c2VkLXByb3BlcnR5LWl2YXIgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUzODIsIC8qIERpYWdBcnJheTczNCAqLyAyMDI3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1bnVzZWQtcmVzdWx0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTQwMywgLyogRGlhZ0FycmF5NzM1ICovIDIwMjksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVudXNlZC10ZW1wbGF0ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NDE3LCAvKiBEaWFnQXJyYXk3MzYgKi8gMjAzMSwgLyogRGlhZ1N1Ykdyb3VwNzM2ICovIDQ5MyB9LAorICB7IC8qIHVudXNlZC12YWx1ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NDMzLCAvKiBEaWFnQXJyYXk3MzcgKi8gMjAzMywgLyogRGlhZ1N1Ykdyb3VwNzM3ICovIDQ5NSB9LAorICB7IC8qIHVudXNlZC12YXJpYWJsZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NDQ2LCAvKiBEaWFnQXJyYXk3MzggKi8gMjAzOCwgLyogRGlhZ1N1Ykdyb3VwNzM4ICovIDQ5OSB9LAorICB7IC8qIHVudXNlZC12b2xhdGlsZS1sdmFsdWUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NDYyLCAvKiBEaWFnQXJyYXk3MzkgKi8gMjA0MCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdXNlZC1idXQtbWFya2VkLXVudXNlZCAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU0ODUsIC8qIERpYWdBcnJheTc0MCAqLyAyMDQyLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB1c2VyLWRlZmluZWQtbGl0ZXJhbHMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTUwOCwgLyogRGlhZ0FycmF5NzQxICovIDIwNDQsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHVzZXItZGVmaW5lZC13YXJuaW5ncyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NTMwLCAvKiBEaWFnQXJyYXk3NDIgKi8gMjA0NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdmFyYXJncyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU1NTIsIC8qIERpYWdBcnJheTc0MyAqLyAyMDQ4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB2YXJpYWRpYy1tYWNyb3MgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTU2MCwgLyogRGlhZ0FycmF5NzQ0ICovIDIwNTIsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHZlYy1lbGVtLXNpemUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NTc2LCAvKiBEaWFnQXJyYXk3NDUgKi8gMjA1NiwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdmVjdG9yLWNvbnZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU1OTAsIC8qIERpYWdBcnJheTc0NiAqLyAyMDU4LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB2ZWN0b3ItY29udmVyc2lvbnMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTYwOCwgLyogRW1wdHkgKi8gICAgIDAsIC8qIERpYWdTdWJHcm91cDc0NyAqLyA1MDEgfSwKKyAgeyAvKiB2ZXhpbmctcGFyc2UgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTYyNywgLyogRGlhZ0FycmF5NzQ4ICovIDIwNjAsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHZpc2liaWxpdHkgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NjQwLCAvKiBEaWFnQXJyYXk3NDkgKi8gMjA2NCwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdmxhICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU2NTEsIC8qIERpYWdBcnJheTc1MCAqLyAyMDY3LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB2bGEtZXh0ZW5zaW9uICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTY1NSwgLyogRGlhZ0FycmF5NzUxICovIDIwNjksIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHZvaWQtcHRyLWRlcmVmZXJlbmNlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NjY5LCAvKiBEaWFnQXJyYXk3NTIgKi8gMjA3MSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogdm9sYXRpbGUtcmVnaXN0ZXItdmFyICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU2OTAsIC8qIEVtcHR5ICovICAgICAwLCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB3ZWFrLXRlbXBsYXRlLXZ0YWJsZXMgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTcxMiwgLyogRGlhZ0FycmF5NzU0ICovIDIwNzMsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAorICB7IC8qIHdlYWstdnRhYmxlcyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1NzM0LCAvKiBEaWFnQXJyYXk3NTUgKi8gMjA3NSwgLyogRW1wdHkgKi8gICAgICAgICAwIH0sCisgIHsgLyogd3JpdGFibGUtc3RyaW5ncyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU3NDcsIC8qIERpYWdBcnJheTc1NiAqLyAyMDc3LCAvKiBEaWFnU3ViR3JvdXA3NTYgKi8gNTAzIH0sCisgIHsgLyogd3JpdGUtc3RyaW5ncyAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU3NjQsIC8qIEVtcHR5ICovICAgICAwLCAvKiBEaWFnU3ViR3JvdXA3NTcgKi8gNTA1IH0sCisgIHsgLyogemVyby1hcy1udWxsLXBvaW50ZXItY29uc3RhbnQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgMTU3NzgsIC8qIERpYWdBcnJheTc1OCAqLyAyMDc5LCAvKiBFbXB0eSAqLyAgICAgICAgIDAgfSwKKyAgeyAvKiB6ZXJvLWxlbmd0aC1hcnJheSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTgwOCwgLyogRGlhZ0FycmF5NzU5ICovIDIwODEsIC8qIEVtcHR5ICovICAgICAgICAgMCB9LAogI2VuZGlmIC8vIEdFVF9ESUFHX1RBQkxFCiAKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0lEcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0lEcy5oCmluZGV4IDg3NjYyOWYuLmZjMGUyYzkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNJRHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljSURzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBEaWFnbm9zdGljSURzLmggLSBEaWFnbm9zdGljIElEcyBIYW5kbGluZyAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljSW5kZXhOYW1lLmluYyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNJbmRleE5hbWUuaW5jCmluZGV4IDhlMjc2NTAuLjliN2RjMjMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNJbmRleE5hbWUuaW5jCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNJbmRleE5hbWUuaW5jCkBAIC0yNiw2ICsyNiw3IEBACiBESUFHX05BTUVfSU5ERVgoZXJyX2FkZHJfb3ZsX25vdF9mdW5jX3B0cnJlZikKIERJQUdfTkFNRV9JTkRFWChlcnJfYWRkcmVzc19vZl9mdW5jdGlvbl93aXRoX3Bhc3Nfb2JqZWN0X3NpemVfcGFyYW1zKQogRElBR19OQU1FX0lOREVYKGVycl9hZGRyZXNzX29mX2xhYmVsX291dHNpZGVfZm4pCitESUFHX05BTUVfSU5ERVgoZXJyX2FkZHJlc3Nfc3BhY2VfbWlzbWF0Y2hfdGVtcGxfaW5zdCkKIERJQUdfTkFNRV9JTkRFWChlcnJfYWRkcmVzc19zcGFjZV9xdWFsaWZpZWRfZGVsZXRlKQogRElBR19OQU1FX0lOREVYKGVycl9hZGRyZXNzX3NwYWNlX3F1YWxpZmllZF9uZXcpCiBESUFHX05BTUVfSU5ERVgoZXJyX2FkZHJvZl9mdW5jdGlvbl9kaXNhYmxlZF9ieV9lbmFibGVfaWZfYXR0cikKQEAgLTYzLDggKzY0LDEwIEBACiBESUFHX05BTUVfSU5ERVgoZXJyX2FtYmlndW91c19yZWZlcmVuY2UpCiBESUFHX05BTUVfSU5ERVgoZXJyX2FtYmlndW91c19zdWl0YWJsZV9kZWxldGVfbWVtYmVyX2Z1bmN0aW9uX2ZvdW5kKQogRElBR19OQU1FX0lOREVYKGVycl9hbWJpZ3VvdXNfdGFnX2hpZGluZykKK0RJQUdfTkFNRV9JTkRFWChlcnJfYW5hbHl6ZXJfY29uZmlnX2ludmFsaWRfaW5wdXQpCiBESUFHX05BTUVfSU5ERVgoZXJyX2FuYWx5emVyX2NvbmZpZ19tdWx0aXBsZV92YWx1ZXMpCiBESUFHX05BTUVfSU5ERVgoZXJyX2FuYWx5emVyX2NvbmZpZ19ub192YWx1ZSkKK0RJQUdfTkFNRV9JTkRFWChlcnJfYW5hbHl6ZXJfY29uZmlnX3Vua25vd24pCiBESUFHX05BTUVfSU5ERVgoZXJyX2Fub25fYml0ZmllbGRfaGFzX25lZ2F0aXZlX3dpZHRoKQogRElBR19OQU1FX0lOREVYKGVycl9hbm9uX2JpdGZpZWxkX3F1YWxpZmllcnMpCiBESUFHX05BTUVfSU5ERVgoZXJyX2Fub25fYml0ZmllbGRfd2lkdGhfZXhjZWVkc190eXBlX3dpZHRoKQpAQCAtMjI0LDggKzIyNyw4IEBACiBESUFHX05BTUVfSU5ERVgoZXJyX2F0dHJpYnV0ZV9hcmd1bWVudF9pc196ZXJvKQogRElBR19OQU1FX0lOREVYKGVycl9hdHRyaWJ1dGVfYXJndW1lbnRfbl90eXBlKQogRElBR19OQU1FX0lOREVYKGVycl9hdHRyaWJ1dGVfYXJndW1lbnRfb3V0X29mX2JvdW5kcykKK0RJQUdfTkFNRV9JTkRFWChlcnJfYXR0cmlidXRlX2FyZ3VtZW50X291dF9vZl9ib3VuZHNfZXh0cmFfaW5mbykKIERJQUdfTkFNRV9JTkRFWChlcnJfYXR0cmlidXRlX2FyZ3VtZW50X291dF9vZl9yYW5nZSkKLURJQUdfTkFNRV9JTkRFWChlcnJfYXR0cmlidXRlX2FyZ3VtZW50X291dG9mX3JhbmdlKQogRElBR19OQU1FX0lOREVYKGVycl9hdHRyaWJ1dGVfYXJndW1lbnRfdHlwZSkKIERJQUdfTkFNRV9JTkRFWChlcnJfYXR0cmlidXRlX2FyZ3VtZW50X3ZlY190eXBlX2hpbnQpCiBESUFHX05BTUVfSU5ERVgoZXJyX2F0dHJpYnV0ZV9iYWRfbmVvbl92ZWN0b3Jfc2l6ZSkKQEAgLTM4NSw2ICszODgsNyBAQAogRElBR19OQU1FX0lOREVYKGVycl9idWlsdGluX2RlZmluaXRpb24pCiBESUFHX05BTUVfSU5ERVgoZXJyX2J1aWx0aW5fZm5fdXNlKQogRElBR19OQU1FX0lOREVYKGVycl9idWlsdGluX2Z1bmNfY2FzdF9tb3JlX3RoYW5fb25lX2FyZykKK0RJQUdfTkFNRV9JTkRFWChlcnJfYnVpbHRpbl9sYXVuZGVyX2ludmFsaWRfYXJnKQogRElBR19OQU1FX0lOREVYKGVycl9idWlsdGluX2xvbmdqbXBfaW52YWxpZF92YWwpCiBESUFHX05BTUVfSU5ERVgoZXJyX2J1aWx0aW5fbG9uZ2ptcF91bnN1cHBvcnRlZCkKIERJQUdfTkFNRV9JTkRFWChlcnJfYnVpbHRpbl9uZWVkc19mZWF0dXJlKQpAQCAtMzk5LDYgKzQwMywxMyBAQAogRElBR19OQU1FX0lOREVYKGVycl9jYWxsX2Z1bmN0aW9uX2luY29tcGxldGVfcmV0dXJuKQogRElBR19OQU1FX0lOREVYKGVycl9jYWxsX2luY29tcGxldGVfYXJndW1lbnQpCiBESUFHX05BTUVfSU5ERVgoZXJyX2NhbGxfaW5jb21wbGV0ZV9yZXR1cm4pCitESUFHX05BTUVfSU5ERVgoZXJyX2NhbGxiYWNrX2F0dHJpYnV0ZV9hcmd1bWVudF91bmtub3duKQorRElBR19OQU1FX0lOREVYKGVycl9jYWxsYmFja19hdHRyaWJ1dGVfaW52YWxpZF9jYWxsZWUpCitESUFHX05BTUVfSU5ERVgoZXJyX2NhbGxiYWNrX2F0dHJpYnV0ZV9tdWx0aXBsZSkKK0RJQUdfTkFNRV9JTkRFWChlcnJfY2FsbGJhY2tfYXR0cmlidXRlX25vX2NhbGxlZSkKK0RJQUdfTkFNRV9JTkRFWChlcnJfY2FsbGJhY2tfY2FsbGVlX2lzX3ZhcmlhZGljKQorRElBR19OQU1FX0lOREVYKGVycl9jYWxsYmFja19jYWxsZWVfbm9fZnVuY3Rpb25fdHlwZSkKK0RJQUdfTkFNRV9JTkRFWChlcnJfY2FsbGJhY2tfaW1wbGljaXRfdGhpc19ub3RfYXZhaWxhYmxlKQogRElBR19OQU1FX0lOREVYKGVycl9jYW5ub3RfZmluZF9zdWl0YWJsZV9hY2Nlc3NvcikKIERJQUdfTkFNRV9JTkRFWChlcnJfY2Fubm90X2Zvcm1fcG9pbnRlcl90b19tZW1iZXJfb2ZfcmVmZXJlbmNlX3R5cGUpCiBESUFHX05BTUVfSU5ERVgoZXJyX2Nhbm5vdF9vcGVuX2ZpbGUpCkBAIC01MzAsNiArNTQxLDcgQEAKIERJQUdfTkFNRV9JTkRFWChlcnJfY3B1X3Vuc3VwcG9ydGVkX2lzYSkKIERJQUdfTkFNRV9JTkRFWChlcnJfY3Rvcl9kdG9yX3JldHVybnNfdm9pZCkKIERJQUdfTkFNRV9JTkRFWChlcnJfY3Rvcl9pbml0X21pc3NpbmdfY29tbWEpCitESUFHX05BTUVfSU5ERVgoZXJyX2N0dV9lcnJvcl9vcGVuaW5nKQogRElBR19OQU1FX0lOREVYKGVycl9jdWRhX2RldmljZV9leGNlcHRpb25zKQogRElBR19OQU1FX0lOREVYKGVycl9jdWRhX2V4dGVybl9zaGFyZWQpCiBESUFHX05BTUVfSU5ERVgoZXJyX2N1ZGFfaG9zdF9zaGFyZWQpCkBAIC02MzIsNiArNjQ0LDcgQEAKIERJQUdfTkFNRV9JTkRFWChlcnJfZGVwZW5kZW50X3RhZ19kZWNsKQogRElBR19OQU1FX0lOREVYKGVycl9kZXBlbmRlbnRfdHlwZWRfbm9uX3R5cGVfYXJnX2luX3BhcnRpYWxfc3BlYykKIERJQUdfTkFNRV9JTkRFWChlcnJfZGVyZWZlcmVuY2VfaW5jb21wbGV0ZV90eXBlKQorRElBR19OQU1FX0lOREVYKGVycl9kZXNpZ25hdGVkX2luaXRfYXR0cl9ub25faW5pdCkKIERJQUdfTkFNRV9JTkRFWChlcnJfZGVzaWduYXRvcl9mb3Jfc2NhbGFyX2luaXQpCiBESUFHX05BTUVfSU5ERVgoZXJyX2Rlc2lnbmF0b3JfaW50b19mbGV4aWJsZV9hcnJheV9tZW1iZXIpCiBESUFHX05BTUVfSU5ERVgoZXJyX2Rlc3Ryb3lfYXR0cl9vbl9ub25fc3RhdGljX3ZhcikKQEAgLTY4Myw2ICs2OTYsNyBAQAogRElBR19OQU1FX0lOREVYKGVycl9kcnZfY3VkYV92ZXJzaW9uX3Vuc3VwcG9ydGVkKQogRElBR19OQU1FX0lOREVYKGVycl9kcnZfZGVmc3ltX2ludmFsaWRfZm9ybWF0KQogRElBR19OQU1FX0lOREVYKGVycl9kcnZfZGVmc3ltX2ludmFsaWRfc3ltdmFsKQorRElBR19OQU1FX0lOREVYKGVycl9kcnZfZGxsZXhwb3J0X2lubGluZXNfYW5kX2ZhbGxiYWNrKQogRElBR19OQU1FX0lOREVYKGVycl9kcnZfZHVwbGljYXRlX2NvbmZpZykKIERJQUdfTkFNRV9JTkRFWChlcnJfZHJ2X2VtaXRfbGx2bV9saW5rKQogRElBR19OQU1FX0lOREVYKGVycl9kcnZfZXhwZWN0aW5nX2ZvcGVubXBfd2l0aF9mb3Blbm1wX3RhcmdldHMpCkBAIC02OTMsNiArNzA3LDcgQEAKIERJQUdfTkFNRV9JTkRFWChlcnJfZHJ2X2ludmFsaWRfWG9wZW5tcF90YXJnZXRfd2l0aF9hcmdzKQogRElBR19OQU1FX0lOREVYKGVycl9kcnZfaW52YWxpZF9hcmNoX25hbWUpCiBESUFHX05BTUVfSU5ERVgoZXJyX2Rydl9pbnZhbGlkX2FyZ3VtZW50X3RvX2ZkZWJ1Z19wcmVmaXhfbWFwKQorRElBR19OQU1FX0lOREVYKGVycl9kcnZfaW52YWxpZF9jZl9ydW50aW1lX2FiaSkKIERJQUdfTkFNRV9JTkRFWChlcnJfZHJ2X2ludmFsaWRfZGFyd2luX3ZlcnNpb24pCiBESUFHX05BTUVfSU5ERVgoZXJyX2Rydl9pbnZhbGlkX2djY19vdXRwdXRfdHlwZSkKIERJQUdfTkFNRV9JTkRFWChlcnJfZHJ2X2ludmFsaWRfaHZ4X2xlbmd0aCkKQEAgLTczNyw2ICs3NTIsNyBAQAogRElBR19OQU1FX0lOREVYKGVycl9kcnZfcHJlYW1ibGVfZm9ybWF0KQogRElBR19OQU1FX0lOREVYKGVycl9kcnZfcm9waV9pbmNvbXBhdGlibGVfd2l0aF9jeHgpCiBESUFHX05BTUVfSU5ERVgoZXJyX2Rydl9yb3BpX3J3cGlfaW5jb21wYXRpYmxlX3dpdGhfcGljKQorRElBR19OQU1FX0lOREVYKGVycl9kcnZfdHJpdmlhbF9hdXRvX3Zhcl9pbml0X3plcm9fZGlzYWJsZWQpCiBESUFHX05BTUVfSU5ERVgoZXJyX2Rydl91bmFibGVfdG9fcmVtb3ZlX2ZpbGUpCiBESUFHX05BTUVfSU5ERVgoZXJyX2Rydl91bmtub3duX2FyZ3VtZW50KQogRElBR19OQU1FX0lOREVYKGVycl9kcnZfdW5rbm93bl9hcmd1bWVudF93aXRoX3N1Z2dlc3Rpb24pCkBAIC05MDMsNiArOTE5LDcgQEAKIERJQUdfTkFNRV9JTkRFWChlcnJfZXhwcl9ub3Rfc3RyaW5nX2xpdGVyYWwpCiBESUFHX05BTUVfSU5ERVgoZXJyX2V4dF92ZWN0b3JfY29tcG9uZW50X2V4Y2VlZHNfbGVuZ3RoKQogRElBR19OQU1FX0lOREVYKGVycl9leHRfdmVjdG9yX2NvbXBvbmVudF9uYW1lX2lsbGVnYWwpCitESUFHX05BTUVfSU5ERVgoZXJyX2V4dGRlZm1hcF9wYXJzaW5nKQogRElBR19OQU1FX0lOREVYKGVycl9leHRlcm5fY19nbG9iYWxfY29uZmxpY3QpCiBESUFHX05BTUVfSU5ERVgoZXJyX2V4dGVybl9ub25fZXh0ZXJuKQogRElBR19OQU1FX0lOREVYKGVycl9leHRlcm5hbF9zb3VyY2Vfc3ltYm9sX2R1cGxpY2F0ZV9jbGF1c2UpCkBAIC05NDAsNyArOTU3LDYgQEAKIERJQUdfTkFNRV9JTkRFWChlcnJfZmVfcGNoX2ZpbGVfb3ZlcnJpZGRlbikKIERJQUdfTkFNRV9JTkRFWChlcnJfZmVfcGNoX21hbGZvcm1lZCkKIERJQUdfTkFNRV9JTkRFWChlcnJfZmVfcGNoX21hbGZvcm1lZF9ibG9jaykKLURJQUdfTkFNRV9JTkRFWChlcnJfZmVfcHRoX2ZpbGVfaGFzX25vX3NvdXJjZV9oZWFkZXIpCiBESUFHX05BTUVfSU5ERVgoZXJyX2ZlX3JlbWFwX21pc3NpbmdfZnJvbV9maWxlKQogRElBR19OQU1FX0lOREVYKGVycl9mZV9yZW1hcF9taXNzaW5nX3RvX2ZpbGUpCiBESUFHX05BTUVfSU5ERVgoZXJyX2ZlX3N0ZG91dF9iaW5hcnkpCkBAIC05NzYsNyArOTkyLDYgQEAKIERJQUdfTkFNRV9JTkRFWChlcnJfZmxleGlibGVfYXJyYXlfbm90X2F0X2VuZCkKIERJQUdfTkFNRV9JTkRFWChlcnJfZmxleGlibGVfYXJyYXlfdW5pb24pCiBESUFHX05BTUVfSU5ERVgoZXJyX2ZsZXhpYmxlX2FycmF5X3ZpcnR1YWxfYmFzZSkKLURJQUdfTkFNRV9JTkRFWChlcnJfZm5tYXBfcGFyc2luZykKIERJQUdfTkFNRV9JTkRFWChlcnJfZm9sZF9leHByZXNzaW9uX2JhZF9vcGVyYW5kKQogRElBR19OQU1FX0lOREVYKGVycl9mb2xkX2V4cHJlc3Npb25fZW1wdHkpCiBESUFHX05BTUVfSU5ERVgoZXJyX2ZvbGRfZXhwcmVzc2lvbl9wYWNrc19ib3RoX3NpZGVzKQpAQCAtOTk2LDYgKzEwMTEsNyBAQAogRElBR19OQU1FX0lOREVYKGVycl9mb3JtYXRfYXR0cmlidXRlX3JlcXVpcmVzX3ZhcmlhZGljKQogRElBR19OQU1FX0lOREVYKGVycl9mb3JtYXRfYXR0cmlidXRlX3Jlc3VsdF9ub3QpCiBESUFHX05BTUVfSU5ERVgoZXJyX2Zvcm1hdF9zdHJmdGltZV90aGlyZF9wYXJhbWV0ZXIpCitESUFHX05BTUVfSU5ERVgoZXJyX2ZvcnRpZnlfc3RkX2xpYl9iYWRfZGVjbCkKIERJQUdfTkFNRV9JTkRFWChlcnJfZm9yd2FyZF9yZWZfZW51bSkKIERJQUdfTkFNRV9JTkRFWChlcnJfZm9yd2FyZF9zdXBlcmNsYXNzKQogRElBR19OQU1FX0lOREVYKGVycl9mcmllbmRfZGVjbF9kZWZpbmVzX3R5cGUpCkBAIC0xMTQ0LDYgKzExNjAsNyBAQAogRElBR19OQU1FX0lOREVYKGVycl9pbnZhbGlkX2FzdHlwZV9vZl9kaWZmZXJlbnRfc2l6ZSkKIERJQUdfTkFNRV9JTkRFWChlcnJfaW52YWxpZF9hdHRyaWJ1dGVfb25fdmlydHVhbF9mdW5jdGlvbikKIERJQUdfTkFNRV9JTkRFWChlcnJfaW52YWxpZF9iYXNlX2luX2ludGVyZmFjZSkKK0RJQUdfTkFNRV9JTkRFWChlcnJfaW52YWxpZF9icmFuY2hfcHJvdGVjdGlvbikKIERJQUdfTkFNRV9JTkRFWChlcnJfaW52YWxpZF9jaGFyX3Jhd19kZWxpbSkKIERJQUdfTkFNRV9JTkRFWChlcnJfaW52YWxpZF9jaGFyYWN0ZXJfdG9fY2hhcmlmeSkKIERJQUdfTkFNRV9JTkRFWChlcnJfaW52YWxpZF9jaGFyYWN0ZXJfdWRsKQpAQCAtMTE2OCw2ICsxMTg1LDcgQEAKIERJQUdfTkFNRV9JTkRFWChlcnJfaW52YWxpZF9kaWdpdCkKIERJQUdfTkFNRV9JTkRFWChlcnJfaW52YWxpZF9mb3JtX3BvaW50ZXJfbWVtYmVyX2Z1bmN0aW9uKQogRElBR19OQU1FX0lOREVYKGVycl9pbnZhbGlkX2luY29tcGxldGVfdHlwZV91c2UpCitESUFHX05BTUVfSU5ERVgoZXJyX2ludmFsaWRfbWFza190eXBlX3NpemUpCiBESUFHX05BTUVfSU5ERVgoZXJyX2ludmFsaWRfbWVtYmVyX2luX2ludGVyZmFjZSkKIERJQUdfTkFNRV9JTkRFWChlcnJfaW52YWxpZF9tZW1iZXJfdXNlX2luX3N0YXRpY19tZXRob2QpCiBESUFHX05BTUVfSU5ERVgoZXJyX2ludmFsaWRfbmVvbl90eXBlX2NvZGUpCkBAIC0xMTc5LDcgKzExOTcsNiBAQAogRElBR19OQU1FX0lOREVYKGVycl9pbnZhbGlkX3BpeGVsX2RlY2xfc3BlY19jb21iaW5hdGlvbikKIERJQUdfTkFNRV9JTkRFWChlcnJfaW52YWxpZF9wcm9wZXJ0eV9uYW1lKQogRElBR19OQU1FX0lOREVYKGVycl9pbnZhbGlkX3Byb3RvY29sX3F1YWxpZmllcnMpCi1ESUFHX05BTUVfSU5ERVgoZXJyX2ludmFsaWRfcHRoX2ZpbGUpCiBESUFHX05BTUVfSU5ERVgoZXJyX2ludmFsaWRfcXVhbGlmaWVkX2NvbnN0cnVjdG9yKQogRElBR19OQU1FX0lOREVYKGVycl9pbnZhbGlkX3F1YWxpZmllZF9kZXN0cnVjdG9yKQogRElBR19OQU1FX0lOREVYKGVycl9pbnZhbGlkX3F1YWxpZmllZF9mdW5jdGlvbl90eXBlKQpAQCAtMTUwOSw2ICsxNTI2LDcgQEAKIERJQUdfTkFNRV9JTkRFWChlcnJfbm9uc3RhdGljX21lbWJlcl9vdXRfb2ZfbGluZSkKIERJQUdfTkFNRV9JTkRFWChlcnJfbm9udGVtcG9yYWxfYnVpbHRpbl9tdXN0X2JlX3BvaW50ZXIpCiBESUFHX05BTUVfSU5ERVgoZXJyX25vbnRlbXBvcmFsX2J1aWx0aW5fbXVzdF9iZV9wb2ludGVyX2ludGZsdHB0cl9vcl92ZWN0b3IpCitESUFHX05BTUVfSU5ERVgoZXJyX25vbnRyaXZpYWxfcHJpbWl0aXZlX3R5cGVfaW5fdW5pb24pCiBESUFHX05BTUVfSU5ERVgoZXJyX25vcmV0dXJuX2Jsb2NrX2hhc19yZXR1cm5fZXhwcikKIERJQUdfTkFNRV9JTkRFWChlcnJfbm9yZXR1cm5fbGFtYmRhX2hhc19yZXR1cm5fZXhwcikKIERJQUdfTkFNRV9JTkRFWChlcnJfbm9yZXR1cm5fbWlzc2luZ19vbl9maXJzdF9kZWNsKQpAQCAtMTY1OSwxMCArMTY3NywxMyBAQAogRElBR19OQU1FX0lOREVYKGVycl9vbXBfYml0X2ZpZWxkc19mb3JiaWRkZW5faW5fY2xhdXNlKQogRElBR19OQU1FX0lOREVYKGVycl9vbXBfY2xhdXNlX2Zsb2F0aW5nX3R5cGVfYXJnKQogRElBR19OQU1FX0lOREVYKGVycl9vbXBfY2xhdXNlX25vdF9hcml0aG1ldGljX3R5cGVfYXJnKQotRElBR19OQU1FX0lOREVYKGVycl9vbXBfY29uc3RfcmVkdWN0aW9uX2xpc3RfaXRlbSkKK0RJQUdfTkFNRV9JTkRFWChlcnJfb21wX2NvbnN0X2xpc3RfaXRlbSkKK0RJQUdfTkFNRV9JTkRFWChlcnJfb21wX2NvbnN0X25vdF9tdXRhYmxlX3ZhcmlhYmxlKQogRElBR19OQU1FX0lOREVYKGVycl9vbXBfY29uc3RfdmFyaWFibGUpCiBESUFHX05BTUVfSU5ERVgoZXJyX29tcF9jcml0aWNhbF93aXRoX2hpbnQpCiBESUFHX05BTUVfSU5ERVgoZXJyX29tcF9kZWNsX2luX2RlY2xhcmVfc2ltZCkKK0RJQUdfTkFNRV9JTkRFWChlcnJfb21wX2RlY2xhcmVfbWFwcGVyX3JlZGVmaW5pdGlvbikKK0RJQUdfTkFNRV9JTkRFWChlcnJfb21wX2RlY2xhcmVfbWFwcGVyX3dyb25nX3ZhcikKIERJQUdfTkFNRV9JTkRFWChlcnJfb21wX2RlY2xhcmVfcmVkdWN0aW9uX3JlZGVmaW5pdGlvbikKIERJQUdfTkFNRV9JTkRFWChlcnJfb21wX2RlY2xhcmVfc2ltZF9pbmJyYW5jaF9ub3RpbmJyYW5jaCkKIERJQUdfTkFNRV9JTkRFWChlcnJfb21wX2RlY2xhcmVfdGFyZ2V0X211bHRpcGxlKQpAQCAtMTY3Myw2ICsxNjk0LDcgQEAKIERJQUdfTkFNRV9JTkRFWChlcnJfb21wX2RlcGVuZF9zaW5rX2V4cGVjdGVkX3BsdXNfbWludXMpCiBESUFHX05BTUVfSU5ERVgoZXJyX29tcF9kZXBlbmRfc2lua19zb3VyY2Vfbm90X2FsbG93ZWQpCiBESUFHX05BTUVfSU5ERVgoZXJyX29tcF9kZXBlbmRfc2lua191bmV4cGVjdGVkX2V4cHIpCitESUFHX05BTUVfSU5ERVgoZXJyX29tcF9kdXBsaWNhdGVfbWFwX3R5cGVfbW9kaWZpZXIpCiBESUFHX05BTUVfSU5ERVgoZXJyX29tcF9leHBlY3RlZF9hY2Nlc3NfdG9fZGF0YV9maWVsZCkKIERJQUdfTkFNRV9JTkRFWChlcnJfb21wX2V4cGVjdGVkX2FkZHJlc3NhYmxlX2x2YWx1ZV9vcl9hcnJheV9pdGVtKQogRElBR19OQU1FX0lOREVYKGVycl9vbXBfZXhwZWN0ZWRfYmFzZV92YXJfbmFtZSkKQEAgLTE2OTcsNiArMTcxOSw3IEBACiBESUFHX05BTUVfSU5ERVgoZXJyX29tcF9pbW1lZGlhdGVfZGlyZWN0aXZlKQogRElBR19OQU1FX0lOREVYKGVycl9vbXBfaW5fcmVkdWN0aW9uX25vdF90YXNrX3JlZHVjdGlvbikKIERJQUdfTkFNRV9JTkRFWChlcnJfb21wX2luY29tcGxldGVfdHlwZSkKK0RJQUdfTkFNRV9JTkRFWChlcnJfb21wX2ludmFsaWRfbWFwX3RoaXNfZXhwcikKIERJQUdfTkFNRV9JTkRFWChlcnJfb21wX2ludmFsaWRfbWFwX3R5cGVfZm9yX2RpcmVjdGl2ZSkKIERJQUdfTkFNRV9JTkRFWChlcnJfb21wX2ludmFsaWRfc2NvcGUpCiBESUFHX05BTUVfSU5ERVgoZXJyX29tcF9pbnZhbGlkX3RhcmdldF9kZWNsKQpAQCAtMTcxNiw2ICsxNzM5LDEwIEBACiBESUFHX05BTUVfSU5ERVgoZXJyX29tcF9sb29wX3ZhcmlhYmxlX3R5cGUpCiBESUFHX05BTUVfSU5ERVgoZXJyX29tcF9tYXBfc2hhcmVkX3N0b3JhZ2UpCiBESUFHX05BTUVfSU5ERVgoZXJyX29tcF9tYXBfdHlwZV9taXNzaW5nKQorRElBR19OQU1FX0lOREVYKGVycl9vbXBfbWFwX3R5cGVfbW9kaWZpZXJfbWlzc2luZykKK0RJQUdfTkFNRV9JTkRFWChlcnJfb21wX21hcHBlcl9leHBlY3RlZF9kZWNsYXJhdG9yKQorRElBR19OQU1FX0lOREVYKGVycl9vbXBfbWFwcGVyX2lsbGVnYWxfaWRlbnRpZmllcikKK0RJQUdfTkFNRV9JTkRFWChlcnJfb21wX21hcHBlcl93cm9uZ190eXBlKQogRElBR19OQU1FX0lOREVYKGVycl9vbXBfbW9yZV9vbmVfY2xhdXNlKQogRElBR19OQU1FX0lOREVYKGVycl9vbXBfbXVsdGlwbGVfYXJyYXlfaXRlbXNfaW5fbWFwX2NsYXVzZSkKIERJQUdfTkFNRV9JTkRFWChlcnJfb21wX25lZ2F0aXZlX2V4cHJlc3Npb25faW5fY2xhdXNlKQpAQCAtMTk0NCw2ICsxOTcxLDcgQEAKIERJQUdfTkFNRV9JTkRFWChlcnJfcGFyYW1fcmVkZWZpbml0aW9uKQogRElBR19OQU1FX0lOREVYKGVycl9wYXJhbV93aXRoX3ZvaWRfdHlwZSkKIERJQUdfTkFNRV9JTkRFWChlcnJfcGFyYW1ldGVyX25hbWVfb21pdHRlZCkKK0RJQUdfTkFNRV9JTkRFWChlcnJfcGFyYW1ldGVyX3NoYWRvd19jYXB0dXJlKQogRElBR19OQU1FX0lOREVYKGVycl9wYXJhbWV0ZXJzX3JldHZhbF9jYW5ub3RfaGF2ZV9mcDE2X3R5cGUpCiBESUFHX05BTUVfSU5ERVgoZXJyX3BhcmVuX3NpemVvZl9wYXJhbWV0ZXJfcGFjaykKIERJQUdfTkFNRV9JTkRFWChlcnJfcGFyZW5zX3BvaW50ZXJfbWVtYmVyX2Z1bmN0aW9uKQpAQCAtMjAzMCw3ICsyMDU4LDYgQEAKIERJQUdfTkFNRV9JTkRFWChlcnJfcHBfbW9kdWxlX2JlZ2luX3dpdGhvdXRfbW9kdWxlX2VuZCkKIERJQUdfTkFNRV9JTkRFWChlcnJfcHBfbW9kdWxlX2JlZ2luX3dyb25nX21vZHVsZSkKIERJQUdfTkFNRV9JTkRFWChlcnJfcHBfbW9kdWxlX2J1aWxkX21pc3NpbmdfZW5kKQotRElBR19OQU1FX0lOREVYKGVycl9wcF9tb2R1bGVfYnVpbGRfcHRoKQogRElBR19OQU1FX0lOREVYKGVycl9wcF9tb2R1bGVfZW5kX3dpdGhvdXRfbW9kdWxlX2JlZ2luKQogRElBR19OQU1FX0lOREVYKGVycl9wcF9uZXN0ZWRfcGFyZW4pCiBESUFHX05BTUVfSU5ERVgoZXJyX3BwX29wZW5jbF92YXJpYWRpY19tYWNyb3MpCkBAIC0yMDQ3LDExICsyMDc0LDEzIEBACiBESUFHX05BTUVfSU5ERVgoZXJyX3BwX3Zhb3B0X25lc3RlZF91c2UpCiBESUFHX05BTUVfSU5ERVgoZXJyX3BwX3Zpc2liaWxpdHlfbm9uX21hY3JvKQogRElBR19OQU1FX0lOREVYKGVycl9wcGNfYnVpbHRpbl9vbmx5X29uX3B3cjcpCitESUFHX05BTUVfSU5ERVgoZXJyX3ByYWdtYV9hdHRyX2F0dHJfbm9fcHVzaCkKIERJQUdfTkFNRV9JTkRFWChlcnJfcHJhZ21hX2F0dHJpYnV0ZV9kdXBsaWNhdGVfc3ViamVjdCkKIERJQUdfTkFNRV9JTkRFWChlcnJfcHJhZ21hX2F0dHJpYnV0ZV9leHBlY3RlZF9hdHRyaWJ1dGUpCiBESUFHX05BTUVfSU5ERVgoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfZXhwZWN0ZWRfYXR0cmlidXRlX25hbWUpCiBESUFHX05BTUVfSU5ERVgoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfZXhwZWN0ZWRfYXR0cmlidXRlX3N5bnRheCkKLURJQUdfTkFNRV9JTkRFWChlcnJfcHJhZ21hX2F0dHJpYnV0ZV9leHBlY3RlZF9wdXNoX3BvcCkKK0RJQUdfTkFNRV9JTkRFWChlcnJfcHJhZ21hX2F0dHJpYnV0ZV9leHBlY3RlZF9wZXJpb2QpCitESUFHX05BTUVfSU5ERVgoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfZXhwZWN0ZWRfcHVzaF9wb3BfcGFyZW4pCiBESUFHX05BTUVfSU5ERVgoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfZXhwZWN0ZWRfc3ViamVjdF9pZGVudGlmaWVyKQogRElBR19OQU1FX0lOREVYKGVycl9wcmFnbWFfYXR0cmlidXRlX2V4cGVjdGVkX3N1YmplY3Rfc3ViX2lkZW50aWZpZXIpCiBESUFHX05BTUVfSU5ERVgoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfZXh0cmFfdG9rZW5zX2FmdGVyX2F0dHJpYnV0ZSkKQEAgLTIwNjEsNiArMjA5MCw3IEBACiBESUFHX05BTUVfSU5ERVgoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfbWF0Y2hlcl9uZWdhdGVkX3N1YnJ1bGVfY29udHJhZGljdHNfc3VicnVsZSkKIERJQUdfTkFNRV9JTkRFWChlcnJfcHJhZ21hX2F0dHJpYnV0ZV9tYXRjaGVyX3N1YnJ1bGVfY29udHJhZGljdHNfcnVsZSkKIERJQUdfTkFNRV9JTkRFWChlcnJfcHJhZ21hX2F0dHJpYnV0ZV9tdWx0aXBsZV9hdHRyaWJ1dGVzKQorRElBR19OQU1FX0lOREVYKGVycl9wcmFnbWFfYXR0cmlidXRlX25hbWVzcGFjZV9vbl9hdHRyaWJ1dGUpCiBESUFHX05BTUVfSU5ERVgoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfbm9fcG9wX2VvZikKIERJQUdfTkFNRV9JTkRFWChlcnJfcHJhZ21hX2F0dHJpYnV0ZV9zdGFja19taXNtYXRjaCkKIERJQUdfTkFNRV9JTkRFWChlcnJfcHJhZ21hX2F0dHJpYnV0ZV91bmtub3duX3N1YmplY3RfcnVsZSkKQEAgLTIwODksNiArMjExOSw3IEBACiBESUFHX05BTUVfSU5ERVgoZXJyX3ByYWdtYV9vcHRpbWl6ZV9leHRyYV9hcmd1bWVudCkKIERJQUdfTkFNRV9JTkRFWChlcnJfcHJhZ21hX29wdGltaXplX2ludmFsaWRfYXJndW1lbnQpCiBESUFHX05BTUVfSU5ERVgoZXJyX3ByYWdtYV9vcHRpb25zX2FsaWduX21hYzY4a190YXJnZXRfdW5zdXBwb3J0ZWQpCitESUFHX05BTUVfSU5ERVgoZXJyX3ByYWdtYV9waXBlbGluZV9pbnZhbGlkX2tleXdvcmQpCiBESUFHX05BTUVfSU5ERVgoZXJyX3ByYWdtYV9wb2ludGVyc190b19tZW1iZXJzX3Vua25vd25fa2luZCkKIERJQUdfTkFNRV9JTkRFWChlcnJfcHJhZ21hX3BvcF92aXNpYmlsaXR5X21pc21hdGNoKQogRElBR19OQU1FX0lOREVYKGVycl9wcmFnbWFfcHVzaF9wb3BfbWFjcm9fbWFsZm9ybWVkKQpAQCAtMjExNyw3ICsyMTQ4LDcgQEAKIERJQUdfTkFNRV9JTkRFWChlcnJfcHVyZV9mcmllbmQpCiBESUFHX05BTUVfSU5ERVgoZXJyX3F1YWxpZmllZF9jYXRjaF9kZWNsYXJhdG9yKQogRElBR19OQU1FX0lOREVYKGVycl9xdWFsaWZpZWRfZnJpZW5kX2RlZikKLURJQUdfTkFNRV9JTkRFWChlcnJfcXVhbGlmaWVkX2ZyaWVuZF9ub3RfZm91bmQpCitESUFHX05BTUVfSU5ERVgoZXJyX3F1YWxpZmllZF9mcmllbmRfbm9fbWF0Y2gpCiBESUFHX05BTUVfSU5ERVgoZXJyX3F1YWxpZmllZF9tZW1iZXJfbm9uY2xhc3MpCiBESUFHX05BTUVfSU5ERVgoZXJyX3F1YWxpZmllZF9tZW1iZXJfb2ZfdW5yZWxhdGVkKQogRElBR19OQU1FX0lOREVYKGVycl9xdWFsaWZpZWRfb2JqY19hY2Nlc3MpCkBAIC0yNDA0LDYgKzI0MzUsNyBAQAogRElBR19OQU1FX0lOREVYKGVycl90eXBlY2hlY2tfYWRkcm9mX2R0b3IpCiBESUFHX05BTUVfSU5ERVgoZXJyX3R5cGVjaGVja19hZGRyb2ZfdGVtcG9yYXJ5KQogRElBR19OQU1FX0lOREVYKGVycl90eXBlY2hlY2tfYW1iaWd1b3VzX2NvbmRpdGlvbikKK0RJQUdfTkFNRV9JTkRFWChlcnJfdHlwZWNoZWNrX2FyY19hc3NpZ25fZXh0ZXJuYWxseV9yZXRhaW5lZCkKIERJQUdfTkFNRV9JTkRFWChlcnJfdHlwZWNoZWNrX2FyY19hc3NpZ25fc2VsZikKIERJQUdfTkFNRV9JTkRFWChlcnJfdHlwZWNoZWNrX2FyY19hc3NpZ25fc2VsZl9jbGFzc19tZXRob2QpCiBESUFHX05BTUVfSU5ERVgoZXJyX3R5cGVjaGVja19hcml0aG1ldGljX2luY29tcGxldGVfdHlwZSkKQEAgLTI1NTcsNiArMjU4OSw3IEBACiBESUFHX05BTUVfSU5ERVgoZXJyX3VuZXhwZWN0ZWRfdHlwZWRlZikKIERJQUdfTkFNRV9JTkRFWChlcnJfdW5leHBlY3RlZF90eXBlZGVmX2lkZW50KQogRElBR19OQU1FX0lOREVYKGVycl91bmV4cGVjdGVkX3VucXVhbGlmaWVkX2lkKQorRElBR19OQU1FX0lOREVYKGVycl91bmltcGxlbWVudGVkX2NvbnZlcnNpb25fd2l0aF9maXhlZF9wb2ludF90eXBlKQogRElBR19OQU1FX0lOREVYKGVycl91bmluaXRpYWxpemVkX21lbWJlcl9mb3JfYXNzaWduKQogRElBR19OQU1FX0lOREVYKGVycl91bmluaXRpYWxpemVkX21lbWJlcl9pbl9jdG9yKQogRElBR19OQU1FX0lOREVYKGVycl91bmlvbl9hc19iYXNlX2NsYXNzKQpAQCAtMjcxNCw4ICsyNzQ3LDEwIEBACiBESUFHX05BTUVfSU5ERVgoZXh0X2NvbW1lbnRfcGFzdGVfbWljcm9zb2Z0KQogRElBR19OQU1FX0lOREVYKGV4dF9jb21wbGV4X2NvbXBvbmVudF9pbml0KQogRElBR19OQU1FX0lOREVYKGV4dF9jb25zdGV4cHJfYm9keV9pbnZhbGlkX3N0bXQpCitESUFHX05BTUVfSU5ERVgoZXh0X2NvbnN0ZXhwcl9ib2R5X2ludmFsaWRfc3RtdF9jeHgyYSkKIERJQUdfTkFNRV9JTkRFWChleHRfY29uc3RleHByX2JvZHlfbXVsdGlwbGVfcmV0dXJuKQogRElBR19OQU1FX0lOREVYKGV4dF9jb25zdGV4cHJfZnVuY3Rpb25fbmV2ZXJfY29uc3RhbnRfZXhwcikKK0RJQUdfTkFNRV9JTkRFWChleHRfY29uc3RleHByX2Z1bmN0aW9uX3RyeV9ibG9ja19jeHgyYSkKIERJQUdfTkFNRV9JTkRFWChleHRfY29uc3RleHByX2lmKQogRElBR19OQU1FX0lOREVYKGV4dF9jb25zdGV4cHJfbG9jYWxfdmFyKQogRElBR19OQU1FX0lOREVYKGV4dF9jb25zdGV4cHJfb25fbGFtYmRhX2N4eDE3KQpAQCAtMjgxNCw2ICsyODQ5LDcgQEAKIERJQUdfTkFNRV9JTkRFWChleHRfaW5pdF9zdGF0ZW1lbnQpCiBESUFHX05BTUVfSU5ERVgoZXh0X2luaXRpYWxpemVyX3N0cmluZ19mb3JfY2hhcl9hcnJheV90b29fbG9uZykKIERJQUdfTkFNRV9JTkRFWChleHRfaW5saW5lX25hbWVzcGFjZSkKK0RJQUdfTkFNRV9JTkRFWChleHRfaW5saW5lX25lc3RlZF9uYW1lc3BhY2VfZGVmaW5pdGlvbikKIERJQUdfTkFNRV9JTkRFWChleHRfaW5saW5lX3ZhcmlhYmxlKQogRElBR19OQU1FX0lOREVYKGV4dF9pbnRlZ2VyX2NvbXBsZW1lbnRfY29tcGxleCkKIERJQUdfTkFNRV9JTkRFWChleHRfaW50ZWdlcl9jb21wbGV4KQpAQCAtMjkzMCw2ICsyOTY2LDcgQEAKIERJQUdfTkFNRV9JTkRFWChleHRfc3RhdGljX2Fzc2VydF9ub19tZXNzYWdlKQogRElBR19OQU1FX0lOREVYKGV4dF9zdGF0aWNfZGF0YV9tZW1iZXJfaW5fdW5pb24pCiBESUFHX05BTUVfSU5ERVgoZXh0X3N0YXRpY19ub25fc3RhdGljKQorRElBR19OQU1FX0lOREVYKGV4dF9zdGF0aWNfb3V0X29mX2xpbmUpCiBESUFHX05BTUVfSU5ERVgoZXh0X3N0ZGNfcHJhZ21hX2lnbm9yZWQpCiBESUFHX05BTUVfSU5ERVgoZXh0X3N0cmluZ19saXRlcmFsX29wZXJhdG9yX3RlbXBsYXRlKQogRElBR19OQU1FX0lOREVYKGV4dF9zdHJpbmdfdG9vX2xvbmcpCkBAIC0zMDkwLDYgKzMxMjcsNyBAQAogRElBR19OQU1FX0lOREVYKG5vdGVfY29uc3RleHByX2xpZmV0aW1lX2VuZGVkKQogRElBR19OQU1FX0lOREVYKG5vdGVfY29uc3RleHByX2xzaGlmdF9kaXNjYXJkcykKIERJQUdfTkFNRV9JTkRFWChub3RlX2NvbnN0ZXhwcl9sc2hpZnRfb2ZfbmVnYXRpdmUpCitESUFHX05BTUVfSU5ERVgobm90ZV9jb25zdGV4cHJfbHRvcl9pbmNvbXBsZXRlX3R5cGUpCiBESUFHX05BTUVfSU5ERVgobm90ZV9jb25zdGV4cHJfbHRvcl9tdXRhYmxlKQogRElBR19OQU1FX0lOREVYKG5vdGVfY29uc3RleHByX2x0b3Jfbm9uX2NvbnN0X2ludCkKIERJQUdfTkFNRV9JTkRFWChub3RlX2NvbnN0ZXhwcl9sdG9yX25vbl9jb25zdGV4cHIpCkBAIC0zMTM2LDYgKzMxNzQsNyBAQAogRElBR19OQU1FX0lOREVYKG5vdGVfY292YXJpYW50X3RodW5rKQogRElBR19OQU1FX0lOREVYKG5vdGVfY3VkYV9jb25mbGljdGluZ19kZXZpY2VfZnVuY3Rpb25fZGVjbGFyZWRfaGVyZSkKIERJQUdfTkFNRV9JTkRFWChub3RlX2N1ZGFfb3ZsX2NhbmRpZGF0ZV90YXJnZXRfbWlzbWF0Y2gpCitESUFHX05BTUVfSU5ERVgobm90ZV9jeHgyYV9jb21wYXRfdXRmOF9zdHJpbmdfcmVtb3ZlX3U4KQogRElBR19OQU1FX0lOREVYKG5vdGVfZGVjbF9oaWRpbmdfdGFnX3R5cGUpCiBESUFHX05BTUVfSU5ERVgobm90ZV9kZWNsX3VuZ3VhcmRlZF9hdmFpbGFiaWxpdHlfc2lsZW5jZSkKIERJQUdfTkFNRV9JTkRFWChub3RlX2RlY2xhcmF0aW9uX25vdF9hX3Byb3RvdHlwZSkKQEAgLTM0NDAsNiArMzQ3OSw5IEBACiBESUFHX05BTUVfSU5ERVgobm90ZV9vbXBfY3JpdGljYWxfbm9faGludCkKIERJQUdfTkFNRV9JTkRFWChub3RlX29tcF9leHBsaWNpdF9kc2EpCiBESUFHX05BTUVfSU5ERVgobm90ZV9vbXBfaW1wbGljaXRfZHNhKQorRElBR19OQU1FX0lOREVYKG5vdGVfb21wX2ludmFsaWRfbGVuZ3RoX29uX3RoaXNfcHRyX21hcHBpbmcpCitESUFHX05BTUVfSU5ERVgobm90ZV9vbXBfaW52YWxpZF9sb3dlcl9ib3VuZF9vbl90aGlzX3B0cl9tYXBwaW5nKQorRElBR19OQU1FX0lOREVYKG5vdGVfb21wX2ludmFsaWRfc3Vic2NyaXB0X29uX3RoaXNfcHRyX21hcCkKIERJQUdfTkFNRV9JTkRFWChub3RlX29tcF9sb29wX2NvbmRfcmVxdXJlc19jb21wYXRpYmxlX2luY3IpCiBESUFHX05BTUVfSU5ERVgobm90ZV9vbXBfbmVzdGVkX3N0YXRlbWVudF9oZXJlKQogRElBR19OQU1FX0lOREVYKG5vdGVfb21wX25lc3RlZF90ZWFtc19jb25zdHJ1Y3RfaGVyZSkKQEAgLTM1MDgsNiArMzU1MCw3IEBACiBESUFHX05BTUVfSU5ERVgobm90ZV9wYXJhbWV0ZXJfbmFtZWRfaGVyZSkKIERJQUdfTkFNRV9JTkRFWChub3RlX3BhcmFtZXRlcl9wYWNrX2hlcmUpCiBESUFHX05BTUVfSU5ERVgobm90ZV9wYXJhbWV0ZXJfdHlwZSkKK0RJQUdfTkFNRV9JTkRFWChub3RlX3BhcnRpYWxfYXZhaWxhYmlsaXR5X3NwZWNpZmllZF9oZXJlKQogRElBR19OQU1FX0lOREVYKG5vdGVfcGFydGlhbF9zcGVjX21hdGNoKQogRElBR19OQU1FX0lOREVYKG5vdGVfcGFydGlhbF9zcGVjX25vdF9tb3JlX3NwZWNpYWxpemVkX3RoYW5fcHJpbWFyeSkKIERJQUdfTkFNRV9JTkRFWChub3RlX3BhcnRpYWxfc3BlY2lhbGl6YXRpb25fZGVjbGFyZWRfaGVyZSkKQEAgLTM1MTgsOCArMzU2MSwxMCBAQAogRElBR19OQU1FX0lOREVYKG5vdGVfcG9zc2libGVfdGFyZ2V0X29mX2NhbGwpCiBESUFHX05BTUVfSU5ERVgobm90ZV9wcF9hbWJpZ3VvdXNfbWFjcm9fY2hvc2VuKQogRElBR19OQU1FX0lOREVYKG5vdGVfcHBfYW1iaWd1b3VzX21hY3JvX290aGVyKQorRElBR19OQU1FX0lOREVYKG5vdGVfcHBfZnJhbWV3b3JrX3dpdGhvdXRfaGVhZGVyKQogRElBR19OQU1FX0lOREVYKG5vdGVfcHBfbW9kdWxlX2JlZ2luX2hlcmUpCiBESUFHX05BTUVfSU5ERVgobm90ZV9wcmFnbWFfYXR0cmlidXRlX2FwcGxpZWRfZGVjbF9oZXJlKQorRElBR19OQU1FX0lOREVYKG5vdGVfcHJhZ21hX2F0dHJpYnV0ZV9uYW1lc3BhY2Vfb25fYXR0cmlidXRlKQogRElBR19OQU1FX0lOREVYKG5vdGVfcHJhZ21hX2F0dHJpYnV0ZV9yZWdpb25fZW5kc19oZXJlKQogRElBR19OQU1FX0lOREVYKG5vdGVfcHJhZ21hX2F0dHJpYnV0ZV91c2VfYXR0cmlidXRlX2t3KQogRElBR19OQU1FX0lOREVYKG5vdGVfcHJhZ21hX2VudGVyZWRfaGVyZSkKQEAgLTM2MTgsNiArMzY2Myw3IEBACiBESUFHX05BTUVfSU5ERVgobm90ZV9zdHJ1Y3RfY2xhc3Nfc3VnZ2VzdGlvbikKIERJQUdfTkFNRV9JTkRFWChub3RlX3N1Z2dlc3RfZGlzYWJsaW5nX2FsbF9jaGVja2VycykKIERJQUdfTkFNRV9JTkRFWChub3RlX3N1Z2dlc3RfcGFyZW5zX2Zvcl9tYWNybykKK0RJQUdfTkFNRV9JTkRFWChub3RlX3N1cHByZXNzX2N0YWRfbWF5YmVfdW5zdXBwb3J0ZWQpCiBESUFHX05BTUVfSU5ERVgobm90ZV9zdXBwcmVzc2VkX2NsYXNzX2RlY2xhcmUpCiBESUFHX05BTUVfSU5ERVgobm90ZV9zdXJyb3VuZGluZ19uYW1lc3BhY2VfZW5kc19oZXJlKQogRElBR19OQU1FX0lOREVYKG5vdGVfc3Vycm91bmRpbmdfbmFtZXNwYWNlX3N0YXJ0c19oZXJlKQpAQCAtMzgyNiw2ICszODcyLDcgQEAKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2F1dG9zeW50aGVzaXNfcHJvcGVydHlfaXZhcl9tYXRjaCkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2F2YWlsYWJpbGl0eV9hbmRfdW5hdmFpbGFibGUpCiBESUFHX05BTUVfSU5ERVgod2Fybl9hdmFpbGFiaWxpdHlfb25fc3RhdGljX2luaXRpYWxpemVyKQorRElBR19OQU1FX0lOREVYKHdhcm5fYXZhaWxhYmlsaXR5X3N3aWZ0X3VuYXZhaWxhYmxlX2RlcHJlY2F0ZWRfb25seSkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2F2YWlsYWJpbGl0eV91bmtub3duX3BsYXRmb3JtKQogRElBR19OQU1FX0lOREVYKHdhcm5fYXZhaWxhYmlsaXR5X3ZlcnNpb25fb3JkZXJpbmcpCiBESUFHX05BTUVfSU5ERVgod2Fybl9iYWRfY2hhcmFjdGVyX2VuY29kaW5nKQpAQCAtMzkwMCw3ICszOTQ3LDkgQEAKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2NvcnJlY3RfY29tbWVudF9jb21tYW5kX25hbWUpCiBESUFHX05BTUVfSU5ERVgod2Fybl9jc3RydWN0X21lbWFjY2VzcykKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2NzdHlsZV9wYXJhbSkKK0RJQUdfTkFNRV9JTkRFWCh3YXJuX2N0YWRfbWF5YmVfdW5zdXBwb3J0ZWQpCiBESUFHX05BTUVfSU5ERVgod2Fybl9jdG9yX3Bhcm1fc2hhZG93c19maWVsZCkKK0RJQUdfTkFNRV9JTkRFWCh3YXJuX2N0dV9pbmNvbXBhdF90cmlwbGUpCiBESUFHX05BTUVfSU5ERVgod2Fybl9jdWRhX2F0dHJfbGFtYmRhX3Bvc2l0aW9uKQogRElBR19OQU1FX0lOREVYKHdhcm5fY3h4MTFfY29tcGF0X2JpbmFyeV9saXRlcmFsKQogRElBR19OQU1FX0lOREVYKHdhcm5fY3h4MTFfY29tcGF0X2NvbnN0ZXhwcl9ib2R5X2ludmFsaWRfc3RtdCkKQEAgLTM5MzYsMTAgKzM5ODUsMTMgQEAKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2N4eDE0X2NvbXBhdF91OF9jaGFyYWN0ZXJfbGl0ZXJhbCkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2N4eDE0X2NvbXBhdF91c2luZ19hdHRyaWJ1dGVfbnMpCiBESUFHX05BTUVfSU5ERVgod2Fybl9jeHgxN19jb21wYXRfYml0ZmllbGRfbWVtYmVyX2luaXQpCitESUFHX05BTUVfSU5ERVgod2Fybl9jeHgxN19jb21wYXRfY29uc3RleHByX2JvZHlfaW52YWxpZF9zdG10KQorRElBR19OQU1FX0lOREVYKHdhcm5fY3h4MTdfY29tcGF0X2NvbnN0ZXhwcl9mdW5jdGlvbl90cnlfYmxvY2spCiBESUFHX05BTUVfSU5ERVgod2Fybl9jeHgxN19jb21wYXRfZGVmYXVsdGVkX21ldGhvZF90eXBlX21pc21hdGNoKQogRElBR19OQU1FX0lOREVYKHdhcm5fY3h4MTdfY29tcGF0X2VxdWFsc190aGlzX2xhbWJkYV9jYXB0dXJlKQogRElBR19OQU1FX0lOREVYKHdhcm5fY3h4MTdfY29tcGF0X2V4Y2VwdGlvbl9zcGVjX2luX3NpZ25hdHVyZSkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2N4eDE3X2NvbXBhdF9mb3JfcmFuZ2VfaW5pdF9zdG10KQorRElBR19OQU1FX0lOREVYKHdhcm5fY3h4MTdfY29tcGF0X2lubGluZV9uZXN0ZWRfbmFtZXNwYWNlX2RlZmluaXRpb24pCiBESUFHX05BTUVfSU5ERVgod2Fybl9jeHgxN19jb21wYXRfbGFtYmRhX2RlZl9jdG9yX2Fzc2lnbikKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2N4eDE3X2NvbXBhdF9tdWx0aV91c2luZ19kZWNsYXJhdGlvbikKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2N4eDE3X2NvbXBhdF9wb2ludGVyX3RvX2NvbnN0X3JlZl9tZW1iZXJfb25fcnZhbHVlKQpAQCAtMzk0OSw2ICs0MDAxLDcgQEAKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2N4eDE3X2hleF9saXRlcmFsKQogRElBR19OQU1FX0lOREVYKHdhcm5fY3h4MmFfY29tcGF0X2FnZ3JlZ2F0ZV9pbml0X3dpdGhfY3RvcnMpCiBESUFHX05BTUVfSU5ERVgod2Fybl9jeHgyYV9jb21wYXRfc3BhY2VzaGlwKQorRElBR19OQU1FX0lOREVYKHdhcm5fY3h4MmFfY29tcGF0X3V0Zjhfc3RyaW5nKQogRElBR19OQU1FX0lOREVYKHdhcm5fY3h4MmFfa2V5d29yZCkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2N4eDk4X2NvbXBhdF9hbGlhc19kZWNsYXJhdGlvbikKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2N4eDk4X2NvbXBhdF9hbGlnbmFzKQpAQCAtNDA1MywxMiArNDEwNiwxNSBAQAogRElBR19OQU1FX0lOREVYKHdhcm5fZGVwcmVjYXRlZF9yZWdpc3RlcikKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2RlcHJlY2F0ZWRfc3RyaW5nX2xpdGVyYWxfY29udmVyc2lvbikKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2RlcHJlY2F0ZWRfdGhpc19jYXB0dXJlKQorRElBR19OQU1FX0lOREVYKHdhcm5fZGVyZWZlcmVuY2Vfb2Zfbm9kZXJlZl90eXBlKQorRElBR19OQU1FX0lOREVYKHdhcm5fZGVyZWZlcmVuY2Vfb2Zfbm9kZXJlZl90eXBlX25vX2RlY2wpCiBESUFHX05BTUVfSU5ERVgod2Fybl9kZXN0cnVjdG9yX21hcmtlZF9ub3Rfb3ZlcnJpZGVfb3ZlcnJpZGluZykKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2RpYWdub3NlX2lmX3N1Y2NlZWRlZCkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2RpcmVjdF9pbml0aWFsaXplX2NhbGwpCiBESUFHX05BTUVfSU5ERVgod2Fybl9kaXJlY3RfaXZhcl9hY2Nlc3MpCiBESUFHX05BTUVfSU5ERVgod2Fybl9kaXJlY3Rfc3VwZXJfaW5pdGlhbGl6ZV9jYWxsKQogRElBR19OQU1FX0lOREVYKHdhcm5fZGlzcGF0Y2hfYm9keV9pZ25vcmVkKQorRElBR19OQU1FX0lOREVYKHdhcm5fZGl2aXNpb25fc2l6ZW9mX3B0cikKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2RsbGltcG9ydF9kcm9wcGVkX2Zyb21faW5saW5lX2Z1bmN0aW9uKQogRElBR19OQU1FX0lOREVYKHdhcm5fZG9jX2FwaV9jb250YWluZXJfZGVjbF9taXNtYXRjaCkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2RvY19ibG9ja19jb21tYW5kX2R1cGxpY2F0ZSkKQEAgLTQwODYsNiArNDE0Miw3IEBACiBESUFHX05BTUVfSU5ERVgod2Fybl9kb3VibGVfbG9jaykKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2Rydl9hc3N1bWluZ19tZmxvYXRfYWJpX2lzKQogRElBR19OQU1FX0lOREVYKHdhcm5fZHJ2X2NsYW5nX3Vuc3VwcG9ydGVkKQorRElBR19OQU1FX0lOREVYKHdhcm5fZHJ2X2Rhcndpbl9zZGtfaW52YWxpZF9zZXR0aW5ncykKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2Rydl9kZXByZWNhdGVkX2FyZykKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2Rydl9kaWFnbm9zdGljc19ob3RuZXNzX3JlcXVpcmVzX3BnbykKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2Rydl9kaXNhYmxpbmdfdnB0cl9ub19ydHRpX2RlZmF1bHQpCkBAIC00MDk3LDYgKzQxNTQsOSBAQAogRElBR19OQU1FX0lOREVYKHdhcm5fZHJ2X2lucHV0X2ZpbGVfdW51c2VkX2J5X2NwcCkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2Rydl9pbnZva2luZ19mYWxsYmFjaykKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2Rydl9tb3V0bGluZV91bnN1cHBvcnRlZF9vcHQpCitESUFHX05BTUVfSU5ERVgod2Fybl9kcnZfbXNwNDMwX2h3bXVsdF9taXNtYXRjaCkKK0RJQUdfTkFNRV9JTkRFWCh3YXJuX2Rydl9tc3A0MzBfaHdtdWx0X25vX2RldmljZSkKK0RJQUdfTkFNRV9JTkRFWCh3YXJuX2Rydl9tc3A0MzBfaHdtdWx0X3Vuc3VwcG9ydGVkKQogRElBR19OQU1FX0lOREVYKHdhcm5fZHJ2X21zdmNfbm90X2ZvdW5kKQogRElBR19OQU1FX0lOREVYKHdhcm5fZHJ2X29iamVjdF9zaXplX2Rpc2FibGVkX08wKQogRElBR19OQU1FX0lOREVYKHdhcm5fZHJ2X29tcF9vZmZsb2FkX3RhcmdldF9kdXBsaWNhdGUpCkBAIC00MTM0LDYgKzQxOTQsNyBAQAogRElBR19OQU1FX0lOREVYKHdhcm5fZW1wdHlfZm9yX2JvZHkpCiBESUFHX05BTUVfSU5ERVgod2Fybl9lbXB0eV9mb3JtYXRfc3RyaW5nKQogRElBR19OQU1FX0lOREVYKHdhcm5fZW1wdHlfaWZfYm9keSkKK0RJQUdfTkFNRV9JTkRFWCh3YXJuX2VtcHR5X2luaXRfc3RhdGVtZW50KQogRElBR19OQU1FX0lOREVYKHdhcm5fZW1wdHlfcGFyZW5zX2FyZV9mdW5jdGlvbl9kZWNsKQogRElBR19OQU1FX0lOREVYKHdhcm5fZW1wdHlfcmFuZ2VfYmFzZWRfZm9yX2JvZHkpCiBESUFHX05BTUVfSU5ERVgod2Fybl9lbXB0eV9zd2l0Y2hfYm9keSkKQEAgLTQyMjUsNiArNDI4Niw3IEBACiBESUFHX05BTUVfSU5ERVgod2Fybl9pZ25vcmVkX2NsYW5nX29wdGlvbikKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2lnbm9yZWRfZ2NjX29wdGltaXphdGlvbikKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2lnbm9yZWRfbXNfaW5oZXJpdGFuY2UpCitESUFHX05BTUVfSU5ERVgod2Fybl9pZ25vcmVkX29iamNfZXh0ZXJuYWxseV9yZXRhaW5lZCkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2lnbm9yaW5nX2Z0YWJzdG9wX3ZhbHVlKQogRElBR19OQU1FX0lOREVYKHdhcm5faWxsZWdhbF9jb25zdGFudF9hcnJheV9zaXplKQogRElBR19OQU1FX0lOREVYKHdhcm5faW1wY2FzdF9iaXRmaWVsZF9wcmVjaXNpb25fY29uc3RhbnQpCkBAIC00MjMyLDYgKzQyOTQsNyBAQAogRElBR19OQU1FX0lOREVYKHdhcm5faW1wY2FzdF9jb21wbGV4X3NjYWxhcikKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2ltcGNhc3RfZGlmZmVyZW50X2VudW1fdHlwZXMpCiBESUFHX05BTUVfSU5ERVgod2Fybl9pbXBjYXN0X2RvdWJsZV9wcm9tb3Rpb24pCitESUFHX05BTUVfSU5ERVgod2Fybl9pbXBjYXN0X2ZpeGVkX3BvaW50X3JhbmdlKQogRElBR19OQU1FX0lOREVYKHdhcm5faW1wY2FzdF9mbG9hdF9pbnRlZ2VyKQogRElBR19OQU1FX0lOREVYKHdhcm5faW1wY2FzdF9mbG9hdF9wcmVjaXNpb24pCiBESUFHX05BTUVfSU5ERVgod2Fybl9pbXBjYXN0X2Zsb2F0X3Jlc3VsdF9wcmVjaXNpb24pCkBAIC00Mjg1LDYgKzQzNDgsNyBAQAogRElBR19OQU1FX0lOREVYKHdhcm5faW50X3RvX3ZvaWRfcG9pbnRlcl9jYXN0KQogRElBR19OQU1FX0lOREVYKHdhcm5faW50ZWdlcl9jb25zdGFudF9vdmVyZmxvdykKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2ludGVybmFsX2xpbmthZ2VfbG9jYWxfc3RvcmFnZSkKK0RJQUdfTkFNRV9JTkRFWCh3YXJuX2ludGVycnVwdF9hdHRyaWJ1dGVfaW52YWxpZCkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX2ludmFsaWRfYXNtX2Nhc3RfbHZhbHVlKQogRElBR19OQU1FX0lOREVYKHdhcm5faW52YWxpZF9jYXBhYmlsaXR5X25hbWUpCiBESUFHX05BTUVfSU5ERVgod2Fybl9pbnZhbGlkX2luaXRpYWxpemVyX2Zyb21fc3lzdGVtX2hlYWRlcikKQEAgLTQzMTgsNyArNDM4Miw2IEBACiBESUFHX05BTUVfSU5ERVgod2Fybl9tZXRob2RfcGFyYW1fcmVkZWZpbml0aW9uKQogRElBR19OQU1FX0lOREVYKHdhcm5fbWljcm9zb2Z0X2RlcGVuZGVudF9leGlzdHMpCiBESUFHX05BTUVfSU5ERVgod2Fybl9taWNyb3NvZnRfcXVhbGlmaWVyc19pZ25vcmVkKQotRElBR19OQU1FX0lOREVYKHdhcm5fbWlwc19pbnRlcnJ1cHRfYXR0cmlidXRlKQogRElBR19OQU1FX0lOREVYKHdhcm5fbWlzbWF0Y2hlZF9hdmFpbGFiaWxpdHkpCiBESUFHX05BTUVfSU5ERVgod2Fybl9taXNtYXRjaGVkX2F2YWlsYWJpbGl0eV9vdmVycmlkZSkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX21pc21hdGNoZWRfYXZhaWxhYmlsaXR5X292ZXJyaWRlX3VuYXZhaWwpCkBAIC00MzcxLDYgKzQ0MzQsOCBAQAogRElBR19OQU1FX0lOREVYKHdhcm5fbm9fdW5kZXJseWluZ190eXBlX3NwZWNpZmllZF9mb3JfZW51bV9iaXRmaWVsZCkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX25vX3VubG9jaykKIERJQUdfTkFNRV9JTkRFWCh3YXJuX25vY2ZfY2hlY2tfYXR0cmlidXRlX2lnbm9yZWQpCitESUFHX05BTUVfSU5ERVgod2Fybl9ub2RlcmVmX29uX25vbl9wb2ludGVyX29yX2FycmF5KQorRElBR19OQU1FX0lOREVYKHdhcm5fbm9kZXJlZl90b19kZXJlZmVyZW5jZWFibGVfcG9pbnRlcikKIERJQUdfTkFNRV9JTkRFWCh3YXJuX25vbl9jb250cmF2YXJpYW50X292ZXJyaWRpbmdfcGFyYW1fdHlwZXMpCiBESUFHX05BTUVfSU5ERVgod2Fybl9ub25fY29udHJhdmFyaWFudF9wYXJhbV90eXBlcykKIERJQUdfTkFNRV9JTkRFWCh3YXJuX25vbl9jb3ZhcmlhbnRfb3ZlcnJpZGluZ19yZXRfdHlwZXMpCkBAIC00Mzk5LDYgKzQ0NjQsNyBAQAogRElBR19OQU1FX0lOREVYKHdhcm5fbnVsbF9wb2ludGVyX2NvbXBhcmUpCiBESUFHX05BTUVfSU5ERVgod2Fybl9udWxsX3Jlc2V0dGFibGVfc2V0dGVyKQogRElBR19OQU1FX0lOREVYKHdhcm5fbnVsbF9yZXQpCitESUFHX05BTUVfSU5ERVgod2Fybl9udWxsX3N0YXRlbWVudCkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX251bGxhYmlsaXR5X2RlY2xzcGVjKQogRElBR19OQU1FX0lOREVYKHdhcm5fbnVsbGFiaWxpdHlfZHVwbGljYXRlKQogRElBR19OQU1FX0lOREVYKHdhcm5fbnVsbGFiaWxpdHlfaW5mZXJyZWRfb25fbmVzdGVkX3R5cGUpCkBAIC00NjE2LDcgKzQ2ODIsNiBAQAogRElBR19OQU1FX0lOREVYKHdhcm5fcmV0dXJuX3ZhbHVlX3NpemUpCiBESUFHX05BTUVfSU5ERVgod2Fybl9yZXR1cm5fdmFsdWVfdWR0KQogRElBR19OQU1FX0lOREVYKHdhcm5fcmV0dXJuX3ZhbHVlX3VkdF9pbmNvbXBsZXRlKQotRElBR19OQU1FX0lOREVYKHdhcm5fcmlzY3ZfaW50ZXJydXB0X2F0dHJpYnV0ZSkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX3Jpc2N2X3JlcGVhdGVkX2ludGVycnVwdF9hdHRyaWJ1dGUpCiBESUFHX05BTUVfSU5ERVgod2Fybl9yb290X2luc3RfbWV0aG9kX25vdF9mb3VuZCkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX3NhbXBsZXJfaW5pdGlhbGl6ZXJfaW52YWxpZF9iaXRzKQpAQCAtNDgxNiw2ICs0ODgxLDcgQEAKIERJQUdfTkFNRV9JTkRFWCh3YXJuX3dlYWtfdGVtcGxhdGVfdnRhYmxlKQogRElBR19OQU1FX0lOREVYKHdhcm5fd2Vha192dGFibGUpCiBESUFHX05BTUVfSU5ERVgod2Fybl93cm9uZ19hYnNvbHV0ZV92YWx1ZV90eXBlKQorRElBR19OQU1FX0lOREVYKHdhcm5fd3JvbmdfY2xhbmdfYXR0cl9uYW1lc3BhY2UpCiBESUFHX05BTUVfSU5ERVgod2Fybl96ZXJvX2FzX251bGxfcG9pbnRlcl9jb25zdGFudCkKIERJQUdfTkFNRV9JTkRFWCh3YXJuX3plcm9fc2l6ZV9zdHJ1Y3RfdW5pb25fY29tcGF0KQogRElBR19OQU1FX0lOREVYKHdhcm5femVyb19zaXplX3N0cnVjdF91bmlvbl9pbl9leHRlcm5fYykKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNMZXguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNMZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzc4OTA1Ci0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0xleC5oCkBAIC0wLDAgKzEsMjggQEAKKy8vPT09LS0tIERpYWdub3N0aWNMZXguaCAtIERpYWdub3N0aWNzIGZvciBsaWJsZXggLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9DTEFOR19CQVNJQ19ESUFHTk9TVElDTEVYX0gKKyNkZWZpbmUgTExWTV9DTEFOR19CQVNJQ19ESUFHTk9TVElDTEVYX0gKKworI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWMuaCIKKworbmFtZXNwYWNlIGNsYW5nIHsKK25hbWVzcGFjZSBkaWFnIHsKK2VudW0geworI2RlZmluZSBESUFHKEVOVU0sIEZMQUdTLCBERUZBVUxUX01BUFBJTkcsIERFU0MsIEdST1VQLCBTRklOQUUsIE5PV0VSUk9SLCAgICAgIFwKKyAgICAgICAgICAgICBTSE9XSU5TWVNIRUFERVIsIENBVEVHT1JZKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEVOVU0sCisjZGVmaW5lIExFWFNUQVJUCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0xleEtpbmRzLmluYyIKKyN1bmRlZiBESUFHCisgIE5VTV9CVUlMVElOX0xFWF9ESUFHTk9TVElDUworfTsKK30gLy8gZW5kIG5hbWVzcGFjZSBkaWFnCit9IC8vIGVuZCBuYW1lc3BhY2UgY2xhbmcKKworI2VuZGlmIC8vIExMVk1fQ0xBTkdfQkFTSUNfRElBR05PU1RJQ0xFWF9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljTGV4S2luZHMuaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0xleEtpbmRzLmluYwppbmRleCA3YWE4ZTYzLi5hNDgyYmVjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljTGV4S2luZHMuaW5jCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNMZXhLaW5kcy5pbmMKQEAgLTIxLDcgKzIxLDYgQEAKIERJQUcoZXJyX2ludmFsaWRfY2hhcl9yYXdfZGVsaW0sIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW52YWxpZCBjaGFyYWN0ZXIgJyUwJyBjaGFyYWN0ZXIgaW4gcmF3IHN0cmluZyBkZWxpbWl0ZXI7IHVzZSBQUkVGSVgoIClQUkVGSVggdG8gZGVsaW1pdCByYXcgc3RyaW5nIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxKQogRElBRyhlcnJfaW52YWxpZF9jaGFyYWN0ZXJfdG9fY2hhcmlmeSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50IHRvIGNvbnZlcnQgdG8gY2hhcmFjdGVyIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxKQogRElBRyhlcnJfaW52YWxpZF9kaWdpdCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIGRpZ2l0ICclMCcgaW4gJXNlbGVjdHtkZWNpbWFsfG9jdGFsfGJpbmFyeX0xIGNvbnN0YW50IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxKQotRElBRyhlcnJfaW52YWxpZF9wdGhfZmlsZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIG9yIGNvcnJ1cHQgUFRIIGZpbGUgJyUwJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMSkKIERJQUcoZXJyX2ludmFsaWRfc3VmZml4X2NvbnN0YW50LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgc3VmZml4ICclMCcgb24gJXNlbGVjdHtpbnRlZ2VyfGZsb2F0aW5nfTEgY29uc3RhbnQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDEpCiBESUFHKGVycl9pbnZhbGlkX3V0ZjgsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAic291cmNlIGZpbGUgaXMgbm90IHZhbGlkIFVURi04IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxKQogRElBRyhlcnJfbGV4aW5nX3N0cmluZywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJmYWlsdXJlIHdoZW4gbGV4aW5nIGEgc3RyaW5nIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxKQpAQCAtMTI1LDcgKzEyNCw2IEBACiBESUFHKGVycl9wcF9tb2R1bGVfYmVnaW5fd2l0aG91dF9tb2R1bGVfZW5kLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm5vIG1hdGNoaW5nICcjcHJhZ21hIGNsYW5nIG1vZHVsZSBlbmQnIGZvciB0aGlzICcjcHJhZ21hIGNsYW5nIG1vZHVsZSBiZWdpbiciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDEpCiBESUFHKGVycl9wcF9tb2R1bGVfYmVnaW5fd3JvbmdfbW9kdWxlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm11c3Qgc3BlY2lmeSAnLWZtb2R1bGUtbmFtZT0lMCcgdG8gZW50ZXIgJXNlbGVjdHt8c3VibW9kdWxlIG9mIH0xdGhpcyBtb2R1bGUlc2VsZWN0eyAoY3VycmVudCBtb2R1bGUgaXMgJTMpfH0yIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxKQogRElBRyhlcnJfcHBfbW9kdWxlX2J1aWxkX21pc3NpbmdfZW5kLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm5vIG1hdGNoaW5nICcjcHJhZ21hIGNsYW5nIG1vZHVsZSBlbmRidWlsZCcgZm9yIHRoaXMgJyNwcmFnbWEgY2xhbmcgbW9kdWxlIGJ1aWxkJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMSkKLURJQUcoZXJyX3BwX21vZHVsZV9idWlsZF9wdGgsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJyNwcmFnbWEgY2xhbmcgbW9kdWxlIGJ1aWxkJyBub3Qgc3VwcG9ydGVkIGluIHByZXRva2VuaXplZCBoZWFkZXIiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDEpCiBESUFHKGVycl9wcF9tb2R1bGVfZW5kX3dpdGhvdXRfbW9kdWxlX2JlZ2luLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm5vIG1hdGNoaW5nICcjcHJhZ21hIGNsYW5nIG1vZHVsZSBiZWdpbicgZm9yIHRoaXMgJyNwcmFnbWEgY2xhbmcgbW9kdWxlIGVuZCciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDEpCiBESUFHKGVycl9wcF9uZXN0ZWRfcGFyZW4sIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibmVzdGVkIHBhcmVudGhlc2VzIG5vdCBwZXJtaXR0ZWQgaW4gJTAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDEpCiBESUFHKGVycl9wcF9vcGVuY2xfdmFyaWFkaWNfbWFjcm9zLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInZhcmlhZGljIG1hY3JvcyBub3Qgc3VwcG9ydGVkIGluIE9wZW5DTCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMSkKQEAgLTE2MCw1NSArMTU4LDU1IEBACiBESUFHKGVycl91bnRlcm1pbmF0ZWRfcmF3X3N0cmluZywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJyYXcgc3RyaW5nIG1pc3NpbmcgdGVybWluYXRpbmcgZGVsaW1pdGVyICklMFwiIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxKQogRElBRyhlcnJfdmFvcHRfcGFzdGVfYXRfZW5kLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIicjIycgY2Fubm90IGFwcGVhciBhdCBlbmQgb2YgX19WQV9PUFRfXyBhcmd1bWVudCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMSkKIERJQUcoZXJyX3Zhb3B0X3Bhc3RlX2F0X3N0YXJ0LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIicjIycgY2Fubm90IGFwcGVhciBhdCBzdGFydCBvZiBfX1ZBX09QVF9fIGFyZ3VtZW50IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxKQotRElBRyhlc2NhcGVkX25ld2xpbmVfYmxvY2tfY29tbWVudF9lbmQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImVzY2FwZWQgbmV3bGluZSBiZXR3ZWVuICovIGNoYXJhY3RlcnMgYXQgYmxvY2sgY29tbWVudCBlbmQiLCAxMjUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyhleHRfYmluYXJ5X2xpdGVyYWwsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYmluYXJ5IGludGVnZXIgbGl0ZXJhbHMgYXJlIGEgR05VIGV4dGVuc2lvbiIsIDI0OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKGVzY2FwZWRfbmV3bGluZV9ibG9ja19jb21tZW50X2VuZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXNjYXBlZCBuZXdsaW5lIGJldHdlZW4gKi8gY2hhcmFjdGVycyBhdCBibG9jayBjb21tZW50IGVuZCIsIDEyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKGV4dF9iaW5hcnlfbGl0ZXJhbCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJiaW5hcnkgaW50ZWdlciBsaXRlcmFscyBhcmUgYSBHTlUgZXh0ZW5zaW9uIiwgMjU3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKIERJQUcoZXh0X2JpbmFyeV9saXRlcmFsX2N4eDE0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImJpbmFyeSBpbnRlZ2VyIGxpdGVyYWxzIGFyZSBhIEMrKzE0IGV4dGVuc2lvbiIsIDg0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKIERJQUcoZXh0X2M5OV93aGl0ZXNwYWNlX3JlcXVpcmVkX2FmdGVyX21hY3JvX25hbWUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiSVNPIEM5OSByZXF1aXJlcyB3aGl0ZXNwYWNlIGFmdGVyIHRoZSBtYWNybyBuYW1lIiwgMTE0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcoZXh0X2NoYXJpemVfbWljcm9zb2Z0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNoYXJpemluZyBvcGVyYXRvciAjQCBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzNjUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyhleHRfY29tbWVudF9wYXN0ZV9taWNyb3NvZnQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicGFzdGluZyB0d28gJy8nIHRva2VucyBpbnRvIGEgJy8vJyBjb21tZW50IGlzIGEgTWljcm9zb2Z0IGV4dGVuc2lvbiIsIDM2NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF9jdHJsX3pfZW9mX21pY3Jvc29mdCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ0cmVhdGluZyBDdHJsLVogYXMgZW5kLW9mLWZpbGUgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzcwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcoZXh0X2RvbGxhcl9pbl9pZGVudGlmaWVyLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIickJyBpbiBpZGVudGlmaWVyIiwgMTg1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcoZXh0X2VtYmVkZGVkX2RpcmVjdGl2ZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJlbWJlZGRpbmcgYSBkaXJlY3RpdmUgd2l0aGluIG1hY3JvIGFyZ3VtZW50cyBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yIiwgMTk1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcoZXh0X2VtcHR5X2NoYXJhY3RlciwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJlbXB0eSBjaGFyYWN0ZXIgY29uc3RhbnQiLCAzMzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfY2hhcml6ZV9taWNyb3NvZnQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY2hhcml6aW5nIG9wZXJhdG9yICNAIGlzIGEgTWljcm9zb2Z0IGV4dGVuc2lvbiIsIDM3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKGV4dF9jb21tZW50X3Bhc3RlX21pY3Jvc29mdCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwYXN0aW5nIHR3byAnLycgdG9rZW5zIGludG8gYSAnLy8nIGNvbW1lbnQgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzc1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X2N0cmxfel9lb2ZfbWljcm9zb2Z0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInRyZWF0aW5nIEN0cmwtWiBhcyBlbmQtb2YtZmlsZSBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzNzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfZG9sbGFyX2luX2lkZW50aWZpZXIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJyQnIGluIGlkZW50aWZpZXIiLCAxOTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfZW1iZWRkZWRfZGlyZWN0aXZlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImVtYmVkZGluZyBhIGRpcmVjdGl2ZSB3aXRoaW4gbWFjcm8gYXJndW1lbnRzIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IiLCAyMDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfZW1wdHlfY2hhcmFjdGVyLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImVtcHR5IGNoYXJhY3RlciBjb25zdGFudCIsIDM0NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCiBESUFHKGV4dF9lbXB0eV9mbm1hY3JvX2FyZywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJlbXB0eSBtYWNybyBhcmd1bWVudHMgYXJlIGEgQzk5IGZlYXR1cmUiLCAxMTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyhleHRfZm91cl9jaGFyX2NoYXJhY3Rlcl9saXRlcmFsLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm11bHRpLWNoYXJhY3RlciBjaGFyYWN0ZXIgY29uc3RhbnQiLCAyMzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfZm91cl9jaGFyX2NoYXJhY3Rlcl9saXRlcmFsLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm11bHRpLWNoYXJhY3RlciBjaGFyYWN0ZXIgY29uc3RhbnQiLCAyNDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQogRElBRyhleHRfaGV4X2NvbnN0YW50X2ludmFsaWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaGV4YWRlY2ltYWwgZmxvYXRpbmcgY29uc3RhbnRzIGFyZSBhIEM5OSBmZWF0dXJlIiwgMTE0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKIERJQUcoZXh0X2hleF9saXRlcmFsX2ludmFsaWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaGV4YWRlY2ltYWwgZmxvYXRpbmcgbGl0ZXJhbHMgYXJlIGEgQysrMTcgZmVhdHVyZSIsIDkxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcoZXh0X2xpbmVfY29tbWVudCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIvLyBjb21tZW50cyBhcmUgbm90IGFsbG93ZWQgaW4gdGhpcyBsYW5ndWFnZSIsIDEyNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF9taXNzaW5nX3ZhcmFyZ3NfYXJnLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm11c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgYXJndW1lbnQgZm9yICcuLi4nIHBhcmFtZXRlciBvZiB2YXJpYWRpYyBtYWNybyIsIDI3MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKGV4dF9saW5lX2NvbW1lbnQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiLy8gY29tbWVudHMgYXJlIG5vdCBhbGxvd2VkIGluIHRoaXMgbGFuZ3VhZ2UiLCAxMjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfbWlzc2luZ192YXJhcmdzX2FyZywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJtdXN0IHNwZWNpZnkgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IGZvciAnLi4uJyBwYXJhbWV0ZXIgb2YgdmFyaWFkaWMgbWFjcm8iLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQogRElBRyhleHRfbWlzc2luZ193aGl0ZXNwYWNlX2FmdGVyX21hY3JvX25hbWUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAid2hpdGVzcGFjZSByZXF1aXJlZCBhZnRlciBtYWNybyBuYW1lIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF9tc19yZXNlcnZlZF91c2VyX2RlZmluZWRfbGl0ZXJhbCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbnZhbGlkIHN1ZmZpeCBvbiBsaXRlcmFsOyBDKysxMSByZXF1aXJlcyBhIHNwYWNlIGJldHdlZW4gbGl0ZXJhbCBhbmQgaWRlbnRpZmllciIsIDU1OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF9tdWx0aV9saW5lX2xpbmVfY29tbWVudCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJtdWx0aS1saW5lIC8vIGNvbW1lbnQiLCAxMjUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyhleHRfbXVsdGljaGFyX2NoYXJhY3Rlcl9saXRlcmFsLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm11bHRpLWNoYXJhY3RlciBjaGFyYWN0ZXIgY29uc3RhbnQiLCA0MjAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyhleHRfbmFtZWRfdmFyaWFkaWNfbWFjcm8sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibmFtZWQgdmFyaWFkaWMgbWFjcm9zIGFyZSBhIEdOVSBleHRlbnNpb24iLCA3MzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyhleHRfbm9fbmV3bGluZV9lb2YsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZSIsIDQyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF9ub25zdGFuZGFyZF9lc2NhcGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidXNlIG9mIG5vbi1zdGFuZGFyZCBlc2NhcGUgY2hhcmFjdGVyICdcXCUwJyIsIDUxNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF9vbl9vZmZfc3dpdGNoX3N5bnRheCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBlY3RlZCAnT04nIG9yICdPRkYnIG9yICdERUZBVUxUJyBpbiBwcmFnbWEiLCA2ODMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyhleHRfcGFzdGVfY29tbWEsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidG9rZW4gcGFzdGluZyBvZiAnLCcgYW5kIF9fVkFfQVJHU19fIGlzIGEgR05VIGV4dGVuc2lvbiIsIDI3MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF9wcF9iYWRfcGFzdGVfbXMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInBhc3RpbmcgZm9ybWVkICclMCcsIGFuIGludmFsaWQgcHJlcHJvY2Vzc2luZyB0b2tlbiIsIDMzOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF9wcF9iYWRfdmFhcmdzX3VzZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJfX1ZBX0FSR1NfXyBjYW4gb25seSBhcHBlYXIgaW4gdGhlIGV4cGFuc2lvbiBvZiBhIEM5OSB2YXJpYWRpYyBtYWNybyIsIDUxNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF9wcF9iYWRfdmFvcHRfdXNlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIl9fVkFfT1BUX18gY2FuIG9ubHkgYXBwZWFyIGluIHRoZSBleHBhbnNpb24gb2YgYSB2YXJpYWRpYyBtYWNybyIsIDczMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF9wcF9jb21tYV9leHByLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbW1hIG9wZXJhdG9yIGluIG9wZXJhbmQgb2YgI2lmIiwgNTE2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcoZXh0X3BwX2V4dHJhX3Rva2Vuc19hdF9lb2wsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXh0cmEgdG9rZW5zIGF0IGVuZCBvZiAjJTAgZGlyZWN0aXZlIiwgMjE2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcoZXh0X3BwX2lkZW50X2RpcmVjdGl2ZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIjaWRlbnQgaXMgYSBsYW5ndWFnZSBleHRlbnNpb24iLCA1MTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyhleHRfcHBfaW1wb3J0X2RpcmVjdGl2ZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIjaW1wb3J0IGlzIGEgbGFuZ3VhZ2UgZXh0ZW5zaW9uIiwgMjkzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcoZXh0X3BwX2luY2x1ZGVfbmV4dF9kaXJlY3RpdmUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiI2luY2x1ZGVfbmV4dCBpcyBhIGxhbmd1YWdlIGV4dGVuc2lvbiIsIDI2MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF9wcF9pbmNsdWRlX3NlYXJjaF9tcywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIjaW5jbHVkZSByZXNvbHZlZCB1c2luZyBub24tcG9ydGFibGUgTWljcm9zb2Z0IHNlYXJjaCBydWxlcyBhczogJTAiLCAzODEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyhleHRfcHBfbGluZV90b29fYmlnLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIkMgcmVxdWlyZXMgI2xpbmUgbnVtYmVyIHRvIGJlIGxlc3MgdGhhbiAlMCwgYWxsb3dlZCBhcyBleHRlbnNpb24iLCA1MTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyhleHRfcHBfbGluZV96ZXJvLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiNsaW5lIGRpcmVjdGl2ZSB3aXRoIHplcm8gYXJndW1lbnQgaXMgYSBHTlUgZXh0ZW5zaW9uIiwgMjY5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcoZXh0X3BwX21hY3JvX3JlZGVmLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIG1hY3JvIHJlZGVmaW5lZCIsIDM1MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF9wcF9vcGVyYXRvcl91c2VkX2FzX21hY3JvX25hbWUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiQysrIG9wZXJhdG9yICUwIChha2EgJTEpIHVzZWQgYXMgYSBtYWNybyBuYW1lIiwgMzY4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X21zX3Jlc2VydmVkX3VzZXJfZGVmaW5lZF9saXRlcmFsLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImludmFsaWQgc3VmZml4IG9uIGxpdGVyYWw7IEMrKzExIHJlcXVpcmVzIGEgc3BhY2UgYmV0d2VlbiBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIiwgNTcwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X211bHRpX2xpbmVfbGluZV9jb21tZW50LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm11bHRpLWxpbmUgLy8gY29tbWVudCIsIDEyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKGV4dF9tdWx0aWNoYXJfY2hhcmFjdGVyX2xpdGVyYWwsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibXVsdGktY2hhcmFjdGVyIGNoYXJhY3RlciBjb25zdGFudCIsIDQyOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKGV4dF9uYW1lZF92YXJpYWRpY19tYWNybywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJuYW1lZCB2YXJpYWRpYyBtYWNyb3MgYXJlIGEgR05VIGV4dGVuc2lvbiIsIDc0NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKGV4dF9ub19uZXdsaW5lX2VvZiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJubyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlIiwgNDM1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X25vbnN0YW5kYXJkX2VzY2FwZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2Ugb2Ygbm9uLXN0YW5kYXJkIGVzY2FwZSBjaGFyYWN0ZXIgJ1xcJTAnIiwgNTI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X29uX29mZl9zd2l0Y2hfc3ludGF4LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkICdPTicgb3IgJ09GRicgb3IgJ0RFRkFVTFQnIGluIHByYWdtYSIsIDY5NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKGV4dF9wYXN0ZV9jb21tYSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ0b2tlbiBwYXN0aW5nIG9mICcsJyBhbmQgX19WQV9BUkdTX18gaXMgYSBHTlUgZXh0ZW5zaW9uIiwgMjc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X3BwX2JhZF9wYXN0ZV9tcywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAicGFzdGluZyBmb3JtZWQgJyUwJywgYW4gaW52YWxpZCBwcmVwcm9jZXNzaW5nIHRva2VuIiwgMzQ3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X3BwX2JhZF92YWFyZ3NfdXNlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIl9fVkFfQVJHU19fIGNhbiBvbmx5IGFwcGVhciBpbiB0aGUgZXhwYW5zaW9uIG9mIGEgQzk5IHZhcmlhZGljIG1hY3JvIiwgNTI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X3BwX2JhZF92YW9wdF91c2UsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiX19WQV9PUFRfXyBjYW4gb25seSBhcHBlYXIgaW4gdGhlIGV4cGFuc2lvbiBvZiBhIHZhcmlhZGljIG1hY3JvIiwgNzQ0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X3BwX2NvbW1hX2V4cHIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY29tbWEgb3BlcmF0b3IgaW4gb3BlcmFuZCBvZiAjaWYiLCA1MjcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfcHBfZXh0cmFfdG9rZW5zX2F0X2VvbCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHRyYSB0b2tlbnMgYXQgZW5kIG9mICMlMCBkaXJlY3RpdmUiLCAyMjQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfcHBfaWRlbnRfZGlyZWN0aXZlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiNpZGVudCBpcyBhIGxhbmd1YWdlIGV4dGVuc2lvbiIsIDUyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKGV4dF9wcF9pbXBvcnRfZGlyZWN0aXZlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiNpbXBvcnQgaXMgYSBsYW5ndWFnZSBleHRlbnNpb24iLCAzMDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfcHBfaW5jbHVkZV9uZXh0X2RpcmVjdGl2ZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIjaW5jbHVkZV9uZXh0IGlzIGEgbGFuZ3VhZ2UgZXh0ZW5zaW9uIiwgMjY5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X3BwX2luY2x1ZGVfc2VhcmNoX21zLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiNpbmNsdWRlIHJlc29sdmVkIHVzaW5nIG5vbi1wb3J0YWJsZSBNaWNyb3NvZnQgc2VhcmNoIHJ1bGVzIGFzOiAlMCIsIDM5MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKGV4dF9wcF9saW5lX3Rvb19iaWcsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiQyByZXF1aXJlcyAjbGluZSBudW1iZXIgdG8gYmUgbGVzcyB0aGFuICUwLCBhbGxvd2VkIGFzIGV4dGVuc2lvbiIsIDUyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKGV4dF9wcF9saW5lX3plcm8sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiI2xpbmUgZGlyZWN0aXZlIHdpdGggemVybyBhcmd1bWVudCBpcyBhIEdOVSBleHRlbnNpb24iLCAyNzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfcHBfbWFjcm9fcmVkZWYsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgbWFjcm8gcmVkZWZpbmVkIiwgMzYyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X3BwX29wZXJhdG9yX3VzZWRfYXNfbWFjcm9fbmFtZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJDKysgb3BlcmF0b3IgJTAgKGFrYSAlMSkgdXNlZCBhcyBhIG1hY3JvIG5hbWUiLCAzNzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQogRElBRyhleHRfcHBfcmVkZWZfYnVpbHRpbl9tYWNybywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZWRlZmluaW5nIGJ1aWx0aW4gbWFjcm8iLCA2OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCiBESUFHKGV4dF9wcF91bmRlZl9idWlsdGluX21hY3JvLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVuZGVmaW5pbmcgYnVpbHRpbiBtYWNybyIsIDY4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcoZXh0X3BwX3dhcm5pbmdfZGlyZWN0aXZlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiN3YXJuaW5nIGlzIGEgbGFuZ3VhZ2UgZXh0ZW5zaW9uIiwgNTE2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcoZXh0X3ByYWdtYV9zeW50YXhfZW9kLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkIGVuZCBvZiBkaXJlY3RpdmUgaW4gcHJhZ21hIiwgNjgzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcoZXh0X3Jlc2VydmVkX3VzZXJfZGVmaW5lZF9saXRlcmFsLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIHN1ZmZpeCBvbiBsaXRlcmFsOyBDKysxMSByZXF1aXJlcyBhIHNwYWNlIGJldHdlZW4gbGl0ZXJhbCBhbmQgaWRlbnRpZmllciIsIDU1OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF9zdHJpbmdfdG9vX2xvbmcsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAic3RyaW5nIGxpdGVyYWwgb2YgbGVuZ3RoICUwIGV4Y2VlZHMgbWF4aW11bSBsZW5ndGggJTEgdGhhdCAlc2VsZWN0e0M5MHxJU08gQzk5fEMrK30yIGNvbXBpbGVycyBhcmUgcmVxdWlyZWQgdG8gc3VwcG9ydCIsIDUwMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF90b2tlbl91c2VkLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImV4dGVuc2lvbiB1c2VkIiwgMzQzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcoZXh0X3VuaWNvZGVfd2hpdGVzcGFjZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0cmVhdGluZyBVbmljb2RlIGNoYXJhY3RlciBhcyB3aGl0ZXNwYWNlIiwgNjc3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcoZXh0X3Vua25vd25fZXNjYXBlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVua25vd24gZXNjYXBlIHNlcXVlbmNlICdcXCUwJyIsIDY4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF91bnRlcm1pbmF0ZWRfY2hhcl9vcl9zdHJpbmcsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWlzc2luZyB0ZXJtaW5hdGluZyAlc2VsZWN0eyd8J1wiJ30wIGNoYXJhY3RlciIsIDMzNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKGV4dF92YXJpYWRpY19tYWNybywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ2YXJpYWRpYyBtYWNyb3MgYXJlIGEgQzk5IGZlYXR1cmUiLCA3MzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfcHBfd2FybmluZ19kaXJlY3RpdmUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiI3dhcm5pbmcgaXMgYSBsYW5ndWFnZSBleHRlbnNpb24iLCA1MjcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfcHJhZ21hX3N5bnRheF9lb2QsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwZWN0ZWQgZW5kIG9mIGRpcmVjdGl2ZSBpbiBwcmFnbWEiLCA2OTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfcmVzZXJ2ZWRfdXNlcl9kZWZpbmVkX2xpdGVyYWwsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgc3VmZml4IG9uIGxpdGVyYWw7IEMrKzExIHJlcXVpcmVzIGEgc3BhY2UgYmV0d2VlbiBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIiwgNTcwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X3N0cmluZ190b29fbG9uZywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJzdHJpbmcgbGl0ZXJhbCBvZiBsZW5ndGggJTAgZXhjZWVkcyBtYXhpbXVtIGxlbmd0aCAlMSB0aGF0ICVzZWxlY3R7QzkwfElTTyBDOTl8QysrfTIgY29tcGlsZXJzIGFyZSByZXF1aXJlZCB0byBzdXBwb3J0IiwgNTEwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X3Rva2VuX3VzZWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZXh0ZW5zaW9uIHVzZWQiLCAzNTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfdW5pY29kZV93aGl0ZXNwYWNlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRyZWF0aW5nIFVuaWNvZGUgY2hhcmFjdGVyIGFzIHdoaXRlc3BhY2UiLCA2OTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhleHRfdW5rbm93bl9lc2NhcGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5rbm93biBlc2NhcGUgc2VxdWVuY2UgJ1xcJTAnIiwgNjk1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X3VudGVybWluYXRlZF9jaGFyX29yX3N0cmluZywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtaXNzaW5nIHRlcm1pbmF0aW5nICVzZWxlY3R7J3wnXCInfTAgY2hhcmFjdGVyIiwgMzQ1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcoZXh0X3ZhcmlhZGljX21hY3JvLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInZhcmlhZGljIG1hY3JvcyBhcmUgYSBDOTkgZmVhdHVyZSIsIDc0NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCiBESUFHKG5vdGVfaGVhZGVyX2d1YXJkLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiJTAgaXMgZGVmaW5lZCBoZXJlOyBkaWQgeW91IG1lYW4gJTE/IiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCiBESUFHKG5vdGVfaW1wbGljaXRfdG9wX2xldmVsX21vZHVsZV9pbXBvcnRfaGVyZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgInN1Ym1vZHVsZSBvZiB0b3AtbGV2ZWwgbW9kdWxlICclMCcgaW1wbGljaXRseSBpbXBvcnRlZCBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCiBESUFHKG5vdGVfaW5pdF9saXN0X2F0X2JlZ2lubmluZ19vZl9tYWNyb19hcmd1bWVudCwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImNhbm5vdCB1c2UgaW5pdGlhbGl6ZXIgbGlzdCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbWFjcm8gYXJndW1lbnQiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKQEAgLTIyMCwzNSArMjE4LDM2IEBACiBESUFHKG5vdGVfbW1hcF9yZW5hbWVfdG9wX2xldmVsX3ByaXZhdGVfbW9kdWxlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAicmVuYW1lICclMCcgdG8gZW5zdXJlIGl0IGNhbiBiZSBmb3VuZCBieSBuYW1lIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCiBESUFHKG5vdGVfcHBfYW1iaWd1b3VzX21hY3JvX2Nob3NlbiwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImV4cGFuZGluZyB0aGlzIGRlZmluaXRpb24gb2YgJTAiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKIERJQUcobm90ZV9wcF9hbWJpZ3VvdXNfbWFjcm9fb3RoZXIsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJvdGhlciBkZWZpbml0aW9uIG9mICUwIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKG5vdGVfcHBfZnJhbWV3b3JrX3dpdGhvdXRfaGVhZGVyLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiZGlkIG5vdCBmaW5kIGhlYWRlciAnJTAnIGluIGZyYW1ld29yayAnJTEnIChsb2FkZWQgZnJvbSAnJTInKSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQogRElBRyhub3RlX3BwX21vZHVsZV9iZWdpbl9oZXJlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiZW50ZXJpbmcgbW9kdWxlICclMCcgZHVlIHRvIHRoaXMgcHJhZ21hIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCiBESUFHKG5vdGVfc3VnZ2VzdF9wYXJlbnNfZm9yX21hY3JvLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAicGFyZW50aGVzZXMgYXJlIHJlcXVpcmVkIGFyb3VuZCBtYWNybyBhcmd1bWVudCBjb250YWluaW5nIGJyYWNlZCBpbml0aWFsaXplciBsaXN0IiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCiBESUFHKG5vdGVfdWNuX2ZvdXJfbm90X2VpZ2h0LCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiZGlkIHlvdSBtZWFuIHRvIHVzZSAnXFx1Jz8iLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcobnVsbF9pbl9jaGFyX29yX3N0cmluZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibnVsbCBjaGFyYWN0ZXIocykgcHJlc2VydmVkIGluICVzZWxlY3R7Y2hhcnxzdHJpbmd9MCBsaXRlcmFsIiwgNDQzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcobnVsbF9pbl9maWxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJudWxsIGNoYXJhY3RlciBpZ25vcmVkIiwgNDQzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcocHBfZGlzYWJsZWRfbWFjcm9fZXhwYW5zaW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJkaXNhYmxlZCBleHBhbnNpb24gb2YgcmVjdXJzaXZlIG1hY3JvIiwgMTcxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcobnVsbF9pbl9jaGFyX29yX3N0cmluZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibnVsbCBjaGFyYWN0ZXIocykgcHJlc2VydmVkIGluICVzZWxlY3R7Y2hhcnxzdHJpbmd9MCBsaXRlcmFsIiwgNDUzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcobnVsbF9pbl9maWxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJudWxsIGNoYXJhY3RlciBpZ25vcmVkIiwgNDUzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcocHBfZGlzYWJsZWRfbWFjcm9fZXhwYW5zaW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJkaXNhYmxlZCBleHBhbnNpb24gb2YgcmVjdXJzaXZlIG1hY3JvIiwgMTc3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKIERJQUcocHBfZXJyX2VsaWZfYWZ0ZXJfZWxzZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIjZWxpZiBhZnRlciAjZWxzZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMSkKIERJQUcocHBfZXJyX2VsaWZfd2l0aG91dF9pZiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIjZWxpZiB3aXRob3V0ICNpZiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMSkKIERJQUcocHBfZXJyX2Vsc2VfYWZ0ZXJfZWxzZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIjZWxzZSBhZnRlciAjZWxzZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMSkKIERJQUcocHBfZXJyX2Vsc2Vfd2l0aG91dF9pZiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIjZWxzZSB3aXRob3V0ICNpZiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMSkKIERJQUcocHBfaGFzaF93YXJuaW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCIsIDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIHRydWUsIDIxKQogRElBRyhwcF9pbmNsdWRlX21hY3Jvc19vdXRfb2ZfcHJlZGVmaW5lcywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ0aGUgI19faW5jbHVkZV9tYWNyb3MgZGlyZWN0aXZlIGlzIG9ubHkgZm9yIGludGVybmFsIHVzZSBieSAtaW1hY3JvcyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMSkKLURJQUcocHBfaW5jbHVkZV9uZXh0X2Fic29sdXRlX3BhdGgsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiNpbmNsdWRlX25leHQgd2l0aCBhYnNvbHV0ZSBwYXRoIiwgMjk1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcocHBfaW5jbHVkZV9uZXh0X2luX3ByaW1hcnksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiNpbmNsdWRlX25leHQgaW4gcHJpbWFyeSBzb3VyY2UgZmlsZSIsIDI5NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHBwX2luY2x1ZGVfbmV4dF9hYnNvbHV0ZV9wYXRoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIjaW5jbHVkZV9uZXh0IHdpdGggYWJzb2x1dGUgcGF0aCIsIDMwNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHBwX2luY2x1ZGVfbmV4dF9pbl9wcmltYXJ5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIjaW5jbHVkZV9uZXh0IGluIHByaW1hcnkgc291cmNlIGZpbGUiLCAzMDUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQogRElBRyhwcF9pbnZhbGlkX3N0cmluZ19saXRlcmFsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbnZhbGlkIHN0cmluZyBsaXRlcmFsLCBpZ25vcmluZyBmaW5hbCAnXFwnIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHBwX21hY3JvX25vdF91c2VkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJtYWNybyBpcyBub3QgdXNlZCIsIDcxNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHBwX25vbnBvcnRhYmxlX3BhdGgsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm5vbi1wb3J0YWJsZSBwYXRoIHRvIGZpbGUgJyUwJzsgc3BlY2lmaWVkIHBhdGggZGlmZmVycyBpbiBjYXNlIGZyb20gZmlsZSBuYW1lIG9uIGRpc2siLCA0MzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyhwcF9ub25wb3J0YWJsZV9zeXN0ZW1fcGF0aCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibm9uLXBvcnRhYmxlIHBhdGggdG8gZmlsZSAnJTAnOyBzcGVjaWZpZWQgcGF0aCBkaWZmZXJzIGluIGNhc2UgZnJvbSBmaWxlIG5hbWUgb24gZGlzayIsIDQzNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHBwX21hY3JvX25vdF91c2VkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJtYWNybyBpcyBub3QgdXNlZCIsIDczMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHBwX25vbnBvcnRhYmxlX3BhdGgsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm5vbi1wb3J0YWJsZSBwYXRoIHRvIGZpbGUgJyUwJzsgc3BlY2lmaWVkIHBhdGggZGlmZmVycyBpbiBjYXNlIGZyb20gZmlsZSBuYW1lIG9uIGRpc2siLCA0NDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyhwcF9ub25wb3J0YWJsZV9zeXN0ZW1fcGF0aCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibm9uLXBvcnRhYmxlIHBhdGggdG8gZmlsZSAnJTAnOyBzcGVjaWZpZWQgcGF0aCBkaWZmZXJzIGluIGNhc2UgZnJvbSBmaWxlIG5hbWUgb24gZGlzayIsIDQ0NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCiBESUFHKHBwX291dF9vZl9kYXRlX2RlcGVuZGVuY3ksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImN1cnJlbnQgZmlsZSBpcyBvbGRlciB0aGFuIGRlcGVuZGVuY3kgJTAiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKIERJQUcocHBfcG9pc29uaW5nX2V4aXN0aW5nX21hY3JvLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwb2lzb25pbmcgZXhpc3RpbmcgbWFjcm8iLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcocHBfcHJhZ21hX29uY2VfaW5fbWFpbl9maWxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIjcHJhZ21hIG9uY2UgaW4gbWFpbiBmaWxlIiwgNTI2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcocHBfcHJhZ21hX3N5c2hlYWRlcl9pbl9tYWluX2ZpbGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiNwcmFnbWEgc3lzdGVtX2hlYWRlciBpZ25vcmVkIGluIG1haW4gZmlsZSIsIDUyOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHRyaWdyYXBoX2NvbnZlcnRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidHJpZ3JhcGggY29udmVydGVkIHRvICclMCcgY2hhcmFjdGVyIiwgNjU2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcodHJpZ3JhcGhfZW5kc19ibG9ja19jb21tZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0cmlncmFwaCBlbmRzIGJsb2NrIGNvbW1lbnQiLCA2NTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh0cmlncmFwaF9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0cmlncmFwaCBpZ25vcmVkIiwgNjU2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcodHJpZ3JhcGhfaWdub3JlZF9ibG9ja19jb21tZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpZ25vcmVkIHRyaWdyYXBoIHdvdWxkIGVuZCBibG9jayBjb21tZW50IiwgNjU2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcocHBfcHJhZ21hX29uY2VfaW5fbWFpbl9maWxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIjcHJhZ21hIG9uY2UgaW4gbWFpbiBmaWxlIiwgNTM4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcocHBfcHJhZ21hX3N5c2hlYWRlcl9pbl9tYWluX2ZpbGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiNwcmFnbWEgc3lzdGVtX2hlYWRlciBpZ25vcmVkIGluIG1haW4gZmlsZSIsIDU0MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHRyaWdyYXBoX2NvbnZlcnRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidHJpZ3JhcGggY29udmVydGVkIHRvICclMCcgY2hhcmFjdGVyIiwgNjY5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcodHJpZ3JhcGhfZW5kc19ibG9ja19jb21tZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0cmlncmFwaCBlbmRzIGJsb2NrIGNvbW1lbnQiLCA2NjksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh0cmlncmFwaF9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0cmlncmFwaCBpZ25vcmVkIiwgNjY5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcodHJpZ3JhcGhfaWdub3JlZF9ibG9ja19jb21tZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpZ25vcmVkIHRyaWdyYXBoIHdvdWxkIGVuZCBibG9jayBjb21tZW50IiwgNjY5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKIERJQUcod2Fybl9hdXRvX21vZHVsZV9pbXBvcnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInRyZWF0aW5nICMlc2VsZWN0e2luY2x1ZGV8aW1wb3J0fGluY2x1ZGVfbmV4dHxfX2luY2x1ZGVfbWFjcm9zfTAgYXMgYW4gaW1wb3J0IG9mIG1vZHVsZSAnJTEnIiwgNDksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX2JhZF9jaGFyYWN0ZXJfZW5jb2RpbmcsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWxsZWdhbCBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gY2hhcmFjdGVyIGxpdGVyYWwiLCAzMzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX2JhZF9zdHJpbmdfZW5jb2RpbmcsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWxsZWdhbCBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gc3RyaW5nIGxpdGVyYWwiLCAzMzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX2JhZF9jaGFyYWN0ZXJfZW5jb2RpbmcsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWxsZWdhbCBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gY2hhcmFjdGVyIGxpdGVyYWwiLCAzNDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX2JhZF9zdHJpbmdfZW5jb2RpbmcsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWxsZWdhbCBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gc3RyaW5nIGxpdGVyYWwiLCAzNDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQogRElBRyh3YXJuX2M5OV9jb21wYXRfdW5pY29kZV9pZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHt1c2luZyB0aGlzIGNoYXJhY3RlciBpbiBhbiBpZGVudGlmaWVyfHN0YXJ0aW5nIGFuIGlkZW50aWZpZXIgd2l0aCB0aGlzIGNoYXJhY3Rlcn0wIGlzIGluY29tcGF0aWJsZSB3aXRoIEM5OSIsIDExMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCiBESUFHKHdhcm5fYzk5X2NvbXBhdF91bmljb2RlX2xpdGVyYWwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVuaWNvZGUgbGl0ZXJhbHMgYXJlIGluY29tcGF0aWJsZSB3aXRoIEM5OSIsIDExMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCiBESUFHKHdhcm5fY2hhcl9jb25zdGFudF90b29fbGFyZ2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNoYXJhY3RlciBjb25zdGFudCB0b28gbG9uZyBmb3IgaXRzIHR5cGUiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKQEAgLTI3Miw2MCArMjcxLDYwIEBACiBESUFHKHdhcm5fY3h4OThfY29tcGF0X3VuaWNvZGVfaWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVzaW5nIHRoaXMgY2hhcmFjdGVyIGluIGFuIGlkZW50aWZpZXIgaXMgaW5jb21wYXRpYmxlIHdpdGggQysrOTgiLCAxMDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQogRElBRyh3YXJuX2N4eDk4X2NvbXBhdF91bmljb2RlX2xpdGVyYWwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVuaWNvZGUgbGl0ZXJhbHMgYXJlIGluY29tcGF0aWJsZSB3aXRoIEMrKzk4IiwgMTA2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKIERJQUcod2Fybl9jeHg5OF9jb21wYXRfdmFyaWFkaWNfbWFjcm8sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInZhcmlhZGljIG1hY3JvcyBhcmUgaW5jb21wYXRpYmxlIHdpdGggQysrOTgiLCAxMTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX2RlZmluZWRfaW5fZnVuY3Rpb25fdHlwZV9tYWNybywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJtYWNybyBleHBhbnNpb24gcHJvZHVjaW5nICdkZWZpbmVkJyBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yIiwgMjA3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl9kZWZpbmVkX2luX29iamVjdF90eXBlX21hY3JvLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtYWNybyBleHBhbnNpb24gcHJvZHVjaW5nICdkZWZpbmVkJyBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yIiwgMjA3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9kZWZpbmVkX2luX2Z1bmN0aW9uX3R5cGVfbWFjcm8sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibWFjcm8gZXhwYW5zaW9uIHByb2R1Y2luZyAnZGVmaW5lZCcgaGFzIHVuZGVmaW5lZCBiZWhhdmlvciIsIDIxNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHdhcm5fZGVmaW5lZF9pbl9vYmplY3RfdHlwZV9tYWNybywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWFjcm8gZXhwYW5zaW9uIHByb2R1Y2luZyAnZGVmaW5lZCcgaGFzIHVuZGVmaW5lZCBiZWhhdmlvciIsIDIxNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCiBESUFHKHdhcm5fZXh0cmFuZW91c19jaGFyX2NvbnN0YW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHRyYW5lb3VzIGNoYXJhY3RlcnMgaW4gY2hhcmFjdGVyIGNvbnN0YW50IGlnbm9yZWQiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl9mcmFtZXdvcmtfaW5jbHVkZV9wcml2YXRlX2Zyb21fcHVibGljLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwdWJsaWMgZnJhbWV3b3JrIGhlYWRlciBpbmNsdWRlcyBwcml2YXRlIGZyYW1ld29yayBoZWFkZXIgJyUwJyIsIDIzOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5faGFzX3dhcm5pbmdfaW52YWxpZF9vcHRpb24sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiX19oYXNfd2FybmluZyBleHBlY3RlZCBvcHRpb24gbmFtZSAoZS5nLiBcIi1XdW5kZWZcIikiLCAzNTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX2hlYWRlcl9ndWFyZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgaXMgdXNlZCBhcyBhIGhlYWRlciBndWFyZCBoZXJlLCBmb2xsb3dlZCBieSAjZGVmaW5lIG9mIGEgZGlmZmVyZW50IG1hY3JvIiwgMjcxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9mcmFtZXdvcmtfaW5jbHVkZV9wcml2YXRlX2Zyb21fcHVibGljLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwdWJsaWMgZnJhbWV3b3JrIGhlYWRlciBpbmNsdWRlcyBwcml2YXRlIGZyYW1ld29yayBoZWFkZXIgJyUwJyIsIDI0NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHdhcm5faGFzX3dhcm5pbmdfaW52YWxpZF9vcHRpb24sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiX19oYXNfd2FybmluZyBleHBlY3RlZCBvcHRpb24gbmFtZSAoZS5nLiBcIi1XdW5kZWZcIikiLCAzNjUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX2hlYWRlcl9ndWFyZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgaXMgdXNlZCBhcyBhIGhlYWRlciBndWFyZCBoZXJlLCBmb2xsb3dlZCBieSAjZGVmaW5lIG9mIGEgZGlmZmVyZW50IG1hY3JvIiwgMjc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKIERJQUcod2Fybl9taXNzaW5nX3doaXRlc3BhY2VfYWZ0ZXJfbWFjcm9fbmFtZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAid2hpdGVzcGFjZSByZWNvbW1lbmRlZCBhZnRlciBtYWNybyBuYW1lIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fbW1hcF9pbmNvbXBsZXRlX2ZyYW1ld29ya19tb2R1bGVfZGVjbGFyYXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInNraXBwaW5nICclMCcgYmVjYXVzZSBtb2R1bGUgZGVjbGFyYXRpb24gb2YgJyUxJyBsYWNrcyB0aGUgJ2ZyYW1ld29yaycgcXVhbGlmaWVyIiwgMzA1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl9tbWFwX21pc21hdGNoZWRfcHJpdmF0ZV9tb2R1bGVfbmFtZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwZWN0ZWQgY2Fub25pY2FsIG5hbWUgZm9yIHByaXZhdGUgbW9kdWxlICclMCciLCA1MzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX21tYXBfbWlzbWF0Y2hlZF9wcml2YXRlX3N1Ym1vZHVsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJpdmF0ZSBzdWJtb2R1bGUgJyUwJyBpbiBwcml2YXRlIG1vZHVsZSBtYXAsIGV4cGVjdGVkIHRvcC1sZXZlbCBtb2R1bGUiLCA1MzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX21tYXBfcmVkdW5kYW50X2V4cG9ydF9hcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibW9kdWxlICclMCcgYWxyZWFkeSByZS1leHBvcnRlZCBhcyAnJTEnIiwgNTM0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl9tbWFwX3VtYnJlbGxhX2Rpcl9ub3RfZm91bmQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVtYnJlbGxhIGRpcmVjdG9yeSAnJTAnIG5vdCBmb3VuZCIsIDMwOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fbW1hcF91bmtub3duX2F0dHJpYnV0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5rbm93biBhdHRyaWJ1dGUgJyUwJyIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fbW9kdWxlX2NvbmZsaWN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtb2R1bGUgJyUwJyBjb25mbGljdHMgd2l0aCBhbHJlYWR5LWltcG9ydGVkIG1vZHVsZSAnJTEnOiAlMiIsIDQxMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fbmVzdGVkX2Jsb2NrX2NvbW1lbnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIicvKicgd2l0aGluIGJsb2NrIGNvbW1lbnQiLCAxMjUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX25vX25ld2xpbmVfZW9mLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJubyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlIiwgNDI2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl9ub25fbW9kdWxhcl9pbmNsdWRlX2luX2ZyYW1ld29ya19tb2R1bGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImluY2x1ZGUgb2Ygbm9uLW1vZHVsYXIgaGVhZGVyIGluc2lkZSBmcmFtZXdvcmsgbW9kdWxlICclMCc6ICclMSciLCA0MzAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX25vbl9tb2R1bGFyX2luY2x1ZGVfaW5fbW9kdWxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbmNsdWRlIG9mIG5vbi1tb2R1bGFyIGhlYWRlciBpbnNpZGUgbW9kdWxlICclMCc6ICclMSciLCA0MzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX21tYXBfaW5jb21wbGV0ZV9mcmFtZXdvcmtfbW9kdWxlX2RlY2xhcmF0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJza2lwcGluZyAnJTAnIGJlY2F1c2UgbW9kdWxlIGRlY2xhcmF0aW9uIG9mICclMScgbGFja3MgdGhlICdmcmFtZXdvcmsnIHF1YWxpZmllciIsIDMxNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHdhcm5fbW1hcF9taXNtYXRjaGVkX3ByaXZhdGVfbW9kdWxlX25hbWUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkIGNhbm9uaWNhbCBuYW1lIGZvciBwcml2YXRlIG1vZHVsZSAnJTAnIiwgNTQ2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9tbWFwX21pc21hdGNoZWRfcHJpdmF0ZV9zdWJtb2R1bGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInByaXZhdGUgc3VibW9kdWxlICclMCcgaW4gcHJpdmF0ZSBtb2R1bGUgbWFwLCBleHBlY3RlZCB0b3AtbGV2ZWwgbW9kdWxlIiwgNTQ2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9tbWFwX3JlZHVuZGFudF9leHBvcnRfYXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm1vZHVsZSAnJTAnIGFscmVhZHkgcmUtZXhwb3J0ZWQgYXMgJyUxJyIsIDU0NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHdhcm5fbW1hcF91bWJyZWxsYV9kaXJfbm90X2ZvdW5kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bWJyZWxsYSBkaXJlY3RvcnkgJyUwJyBub3QgZm91bmQiLCAzMTcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX21tYXBfdW5rbm93bl9hdHRyaWJ1dGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVua25vd24gYXR0cmlidXRlICclMCciLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX21vZHVsZV9jb25mbGljdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibW9kdWxlICclMCcgY29uZmxpY3RzIHdpdGggYWxyZWFkeS1pbXBvcnRlZCBtb2R1bGUgJyUxJzogJTIiLCA0MTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX25lc3RlZF9ibG9ja19jb21tZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInLyonIHdpdGhpbiBibG9jayBjb21tZW50IiwgMTI2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9ub19uZXdsaW5lX2VvZiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZSIsIDQzNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHdhcm5fbm9uX21vZHVsYXJfaW5jbHVkZV9pbl9mcmFtZXdvcmtfbW9kdWxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbmNsdWRlIG9mIG5vbi1tb2R1bGFyIGhlYWRlciBpbnNpZGUgZnJhbWV3b3JrIG1vZHVsZSAnJTAnOiAnJTEnIiwgNDQwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9ub25fbW9kdWxhcl9pbmNsdWRlX2luX21vZHVsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW5jbHVkZSBvZiBub24tbW9kdWxhciBoZWFkZXIgaW5zaWRlIG1vZHVsZSAnJTAnOiAnJTEnIiwgNDQxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKIERJQUcod2Fybl9wcF9hbWJpZ3VvdXNfbWFjcm8sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFtYmlndW91cyBleHBhbnNpb24gb2YgbWFjcm8gJTAiLCAxOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCiBESUFHKHdhcm5fcHBfY29udmVydF90b19wb3NpdGl2ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHtsZWZ0fHJpZ2h0fTAgc2lkZSBvZiBvcGVyYXRvciBjb252ZXJ0ZWQgZnJvbSBuZWdhdGl2ZSB2YWx1ZSB0byB1bnNpZ25lZDogJTEiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl9wcF9kYXRlX3RpbWUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImV4cGFuc2lvbiBvZiBkYXRlIG9yIHRpbWUgbWFjcm8gaXMgbm90IHJlcHJvZHVjaWJsZSIsIDE1MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgdHJ1ZSwgMSkKK0RJQUcod2Fybl9wcF9kYXRlX3RpbWUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImV4cGFuc2lvbiBvZiBkYXRlIG9yIHRpbWUgbWFjcm8gaXMgbm90IHJlcHJvZHVjaWJsZSIsIDE1NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgdHJ1ZSwgMSkKIERJQUcod2Fybl9wcF9leHByX292ZXJmbG93LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbnRlZ2VyIG92ZXJmbG93IGluIHByZXByb2Nlc3NvciBleHByZXNzaW9uIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fcHBfaGRyc3RvcF9maWxlbmFtZV9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIjcHJhZ21hIGhkcnN0b3AgZmlsZW5hbWUgbm90IHN1cHBvcnRlZCwgL0ZwIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgcHJlY29tcGlsZWQgaGVhZGVyIGZpbGVuYW1lIiwgMTIyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9wcF9oZHJzdG9wX2ZpbGVuYW1lX2lnbm9yZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiNwcmFnbWEgaGRyc3RvcCBmaWxlbmFtZSBub3Qgc3VwcG9ydGVkLCAvRnAgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBwcmVjb21waWxlZCBoZWFkZXIgZmlsZW5hbWUiLCAxMjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQogRElBRyh3YXJuX3BwX2xpbmVfZGVjaW1hbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHsjbGluZXxHTlUgbGluZSBtYXJrZXJ9MCBkaXJlY3RpdmUgaW50ZXJwcmV0cyBudW1iZXIgYXMgZGVjaW1hbCwgbm90IG9jdGFsIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fcHBfbWFjcm9fZGVmX21pc21hdGNoX3dpdGhfcGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZWZpbml0aW9uIG9mIG1hY3JvICUwIGRvZXMgbm90IG1hdGNoIGRlZmluaXRpb24gaW4gcHJlY29tcGlsZWQgaGVhZGVyIiwgMTIyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl9wcF9tYWNyb19oaWRlc19rZXl3b3JkLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImtleXdvcmQgaXMgaGlkZGVuIGJ5IG1hY3JvIGRlZmluaXRpb24iLCAzNDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX3BwX21hY3JvX2lzX3Jlc2VydmVkX2lkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJtYWNybyBuYW1lIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllciIsIDU1NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fcHBfb2JqY19tYWNyb19yZWRlZl9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpZ25vcmluZyByZWRlZmluaXRpb24gb2YgT2JqZWN0aXZlLUMgcXVhbGlmaWVyIG1hY3JvIiwgNDYzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl9wcF91bmRlZl9pZGVudGlmaWVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlMCBpcyBub3QgZGVmaW5lZCwgZXZhbHVhdGVzIHRvIDAiLCA2NjQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX3ByYWdtYV9kZWJ1Z19taXNzaW5nX2FyZ3VtZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtaXNzaW5nIGFyZ3VtZW50IHRvIGRlYnVnIGNvbW1hbmQgJyUwJyIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fcHJhZ21hX2RlYnVnX3VuZXhwZWN0ZWRfY29tbWFuZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5leHBlY3RlZCBkZWJ1ZyBjb21tYW5kICclMCciLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX3ByYWdtYV9kaWFnbm9zdGljX2Nhbm5vdF9wb3AsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJhZ21hIGRpYWdub3N0aWMgcG9wIGNvdWxkIG5vdCBwb3AsIG5vIG1hdGNoaW5nIHB1c2giLCA2ODMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX3ByYWdtYV9kaWFnbm9zdGljX2ludmFsaWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJhZ21hIGRpYWdub3N0aWMgZXhwZWN0ZWQgJ2Vycm9yJywgJ3dhcm5pbmcnLCAnaWdub3JlZCcsICdmYXRhbCcsICdwdXNoJywgb3IgJ3BvcCciLCA2ODMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX3ByYWdtYV9kaWFnbm9zdGljX2ludmFsaWRfb3B0aW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInByYWdtYSBkaWFnbm9zdGljIGV4cGVjdGVkIG9wdGlvbiBuYW1lIChlLmcuIFwiLVd1bmRlZlwiKSIsIDY4MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fcHJhZ21hX2RpYWdub3N0aWNfaW52YWxpZF90b2tlbiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmV4cGVjdGVkIHRva2VuIGluIHByYWdtYSBkaWFnbm9zdGljIiwgNjgzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl9wcmFnbWFfZGlhZ25vc3RpY191bmtub3duX3dhcm5pbmcsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5rbm93biB3YXJuaW5nIGdyb3VwICclMCcsIGlnbm9yZWQiLCA2ODUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX3ByYWdtYV9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bmtub3duIHByYWdtYSBpZ25vcmVkIiwgNjgzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl9wcmFnbWFfaW5jbHVkZV9hbGlhc19leHBlY3RlZCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcmFnbWEgaW5jbHVkZV9hbGlhcyBleHBlY3RlZCAnJTAnIiwgNjgzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl9wcmFnbWFfaW5jbHVkZV9hbGlhc19leHBlY3RlZF9maWxlbmFtZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcmFnbWEgaW5jbHVkZV9hbGlhcyBleHBlY3RlZCBpbmNsdWRlIGZpbGVuYW1lIiwgNjgzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl9wcmFnbWFfaW5jbHVkZV9hbGlhc19taXNtYXRjaF9hbmdsZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhbmdsZS1icmFja2V0ZWQgaW5jbHVkZSA8JTA+IGNhbm5vdCBiZSBhbGlhc2VkIHRvIGRvdWJsZS1xdW90ZWQgaW5jbHVkZSBcIiUxXCIiLCA2ODMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX3ByYWdtYV9pbmNsdWRlX2FsaWFzX21pc21hdGNoX3F1b3RlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRvdWJsZS1xdW90ZWQgaW5jbHVkZSBcIiUwXCIgY2Fubm90IGJlIGFsaWFzZWQgdG8gYW5nbGUtYnJhY2tldGVkIGluY2x1ZGUgPCUxPiIsIDY4MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHdhcm5fcHBfbWFjcm9fZGVmX21pc21hdGNoX3dpdGhfcGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZWZpbml0aW9uIG9mIG1hY3JvICUwIGRvZXMgbm90IG1hdGNoIGRlZmluaXRpb24gaW4gcHJlY29tcGlsZWQgaGVhZGVyIiwgMTIzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9wcF9tYWNyb19oaWRlc19rZXl3b3JkLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImtleXdvcmQgaXMgaGlkZGVuIGJ5IG1hY3JvIGRlZmluaXRpb24iLCAzNTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3BwX21hY3JvX2lzX3Jlc2VydmVkX2lkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJtYWNybyBuYW1lIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllciIsIDU2OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHdhcm5fcHBfb2JqY19tYWNyb19yZWRlZl9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpZ25vcmluZyByZWRlZmluaXRpb24gb2YgT2JqZWN0aXZlLUMgcXVhbGlmaWVyIG1hY3JvIiwgNDczLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9wcF91bmRlZl9pZGVudGlmaWVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlMCBpcyBub3QgZGVmaW5lZCwgZXZhbHVhdGVzIHRvIDAiLCA2NzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3ByYWdtYV9kZWJ1Z19taXNzaW5nX2FyZ3VtZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtaXNzaW5nIGFyZ3VtZW50IHRvIGRlYnVnIGNvbW1hbmQgJyUwJyIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHdhcm5fcHJhZ21hX2RlYnVnX3VuZXhwZWN0ZWRfY29tbWFuZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5leHBlY3RlZCBkZWJ1ZyBjb21tYW5kICclMCciLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3ByYWdtYV9kaWFnbm9zdGljX2Nhbm5vdF9wb3AsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJhZ21hIGRpYWdub3N0aWMgcG9wIGNvdWxkIG5vdCBwb3AsIG5vIG1hdGNoaW5nIHB1c2giLCA2OTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3ByYWdtYV9kaWFnbm9zdGljX2ludmFsaWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJhZ21hIGRpYWdub3N0aWMgZXhwZWN0ZWQgJ2Vycm9yJywgJ3dhcm5pbmcnLCAnaWdub3JlZCcsICdmYXRhbCcsICdwdXNoJywgb3IgJ3BvcCciLCA2OTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3ByYWdtYV9kaWFnbm9zdGljX2ludmFsaWRfb3B0aW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInByYWdtYSBkaWFnbm9zdGljIGV4cGVjdGVkIG9wdGlvbiBuYW1lIChlLmcuIFwiLVd1bmRlZlwiKSIsIDY5NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHdhcm5fcHJhZ21hX2RpYWdub3N0aWNfaW52YWxpZF90b2tlbiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmV4cGVjdGVkIHRva2VuIGluIHByYWdtYSBkaWFnbm9zdGljIiwgNjk2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9wcmFnbWFfZGlhZ25vc3RpY191bmtub3duX3dhcm5pbmcsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5rbm93biB3YXJuaW5nIGdyb3VwICclMCcsIGlnbm9yZWQiLCA2OTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3ByYWdtYV9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bmtub3duIHByYWdtYSBpZ25vcmVkIiwgNjk2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9wcmFnbWFfaW5jbHVkZV9hbGlhc19leHBlY3RlZCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcmFnbWEgaW5jbHVkZV9hbGlhcyBleHBlY3RlZCAnJTAnIiwgNjk2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9wcmFnbWFfaW5jbHVkZV9hbGlhc19leHBlY3RlZF9maWxlbmFtZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcmFnbWEgaW5jbHVkZV9hbGlhcyBleHBlY3RlZCBpbmNsdWRlIGZpbGVuYW1lIiwgNjk2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9wcmFnbWFfaW5jbHVkZV9hbGlhc19taXNtYXRjaF9hbmdsZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhbmdsZS1icmFja2V0ZWQgaW5jbHVkZSA8JTA+IGNhbm5vdCBiZSBhbGlhc2VkIHRvIGRvdWJsZS1xdW90ZWQgaW5jbHVkZSBcIiUxXCIiLCA2OTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3ByYWdtYV9pbmNsdWRlX2FsaWFzX21pc21hdGNoX3F1b3RlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRvdWJsZS1xdW90ZWQgaW5jbHVkZSBcIiUwXCIgY2Fubm90IGJlIGFsaWFzZWQgdG8gYW5nbGUtYnJhY2tldGVkIGluY2x1ZGUgPCUxPiIsIDY5NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCiBESUFHKHdhcm5fcHJhZ21hX21lc3NhZ2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIiwgMSwgU0ZJTkFFX1N1cHByZXNzLCB0cnVlLCBmYWxzZSwgMzApCi1ESUFHKHdhcm5fcHJhZ21hX3BvcF9tYWNyb19ub19wdXNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcmFnbWEgcG9wX21hY3JvIGNvdWxkIG5vdCBwb3AgJyUwJywgbm8gbWF0Y2hpbmcgcHVzaF9tYWNybyIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fcHJhZ21hX3dhcm5pbmdfZXhwZWN0ZWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiI3ByYWdtYSB3YXJuaW5nIGV4cGVjdGVkICclMCciLCA2ODMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX3ByYWdtYV93YXJuaW5nX2V4cGVjdGVkX251bWJlciwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIjcHJhZ21hIHdhcm5pbmcgZXhwZWN0ZWQgYSB3YXJuaW5nIG51bWJlciIsIDY4MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fcHJhZ21hX3dhcm5pbmdfcHVzaF9sZXZlbCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIjcHJhZ21hIHdhcm5pbmcocHVzaCwgbGV2ZWwpIHJlcXVpcmVzIGEgbGV2ZWwgYmV0d2VlbiAwIGFuZCA0IiwgNjgzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl9wcmFnbWFfd2FybmluZ19zcGVjX2ludmFsaWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiI3ByYWdtYSB3YXJuaW5nIGV4cGVjdGVkICdwdXNoJywgJ3BvcCcsICdkZWZhdWx0JywgJ2Rpc2FibGUnLCAnZXJyb3InLCAnb25jZScsICdzdXBwcmVzcycsIDEsIDIsIDMsIG9yIDQiLCA2ODMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX3F1b3RlZF9pbmNsdWRlX2luX2ZyYW1ld29ya19oZWFkZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImRvdWJsZS1xdW90ZWQgaW5jbHVkZSBcIiUwXCIgaW4gZnJhbWV3b3JrIGhlYWRlciwgZXhwZWN0ZWQgYW5nbGUtYnJhY2tldGVkIGluc3RlYWQiLCA1NDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX3Vjbl9lc2NhcGVfaW5jb21wbGV0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5jb21wbGV0ZSB1bml2ZXJzYWwgY2hhcmFjdGVyIG5hbWU7IHRyZWF0aW5nIGFzICdcXCcgZm9sbG93ZWQgYnkgaWRlbnRpZmllciIsIDY3NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fdWNuX2VzY2FwZV9ub19kaWdpdHMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIlxcJTAgdXNlZCB3aXRoIG5vIGZvbGxvd2luZyBoZXggZGlnaXRzOyB0cmVhdGluZyBhcyAnXFwnIGZvbGxvd2VkIGJ5IGlkZW50aWZpZXIiLCA2NzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQotRElBRyh3YXJuX3Vjbl9lc2NhcGVfc3Vycm9nYXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bml2ZXJzYWwgY2hhcmFjdGVyIG5hbWUgcmVmZXJzIHRvIGEgc3Vycm9nYXRlIGNoYXJhY3RlciIsIDY3NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fdWNuX25vdF92YWxpZF9pbl9jODksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVuaXZlcnNhbCBjaGFyYWN0ZXIgbmFtZXMgYXJlIG9ubHkgdmFsaWQgaW4gQzk5IG9yIEMrKzsgdHJlYXRpbmcgYXMgJ1xcJyBmb2xsb3dlZCBieSBpZGVudGlmaWVyIiwgNjc1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl91Y25fbm90X3ZhbGlkX2luX2M4OV9saXRlcmFsLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVuaXZlcnNhbCBjaGFyYWN0ZXIgbmFtZXMgYXJlIG9ubHkgdmFsaWQgaW4gQzk5IG9yIEMrKyIsIDY3NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fdW5jb3ZlcmVkX21vZHVsZV9oZWFkZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVtYnJlbGxhIGhlYWRlciBmb3IgbW9kdWxlICclMCcgZG9lcyBub3QgaW5jbHVkZSBoZWFkZXIgJyUxJyIsIDMwOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fdXNlX29mX3ByaXZhdGVfaGVhZGVyX291dHNpZGVfbW9kdWxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidXNlIG9mIHByaXZhdGUgaGVhZGVyIGZyb20gb3V0c2lkZSBpdHMgbW9kdWxlOiAnJTAnIiwgNTMzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKLURJQUcod2Fybl91dGY4X3N5bWJvbF9ob21vZ2x5cGgsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRyZWF0aW5nIFVuaWNvZGUgY2hhcmFjdGVyIDxVKyUwPiBhcyBpZGVudGlmaWVyIGNoYXJhY3RlciByYXRoZXIgdGhhbiBhcyAnJTEnIHN5bWJvbCIsIDY3NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCi1ESUFHKHdhcm5fdXRmOF9zeW1ib2xfemVyb193aWR0aCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWRlbnRpZmllciBjb250YWlucyBVbmljb2RlIGNoYXJhY3RlciA8VSslMD4gdGhhdCBpcyBpbnZpc2libGUgaW4gc29tZSBlbnZpcm9ubWVudHMiLCA2NzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3ByYWdtYV9wb3BfbWFjcm9fbm9fcHVzaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJhZ21hIHBvcF9tYWNybyBjb3VsZCBub3QgcG9wICclMCcsIG5vIG1hdGNoaW5nIHB1c2hfbWFjcm8iLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3ByYWdtYV93YXJuaW5nX2V4cGVjdGVkLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiNwcmFnbWEgd2FybmluZyBleHBlY3RlZCAnJTAnIiwgNjk2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9wcmFnbWFfd2FybmluZ19leHBlY3RlZF9udW1iZXIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiI3ByYWdtYSB3YXJuaW5nIGV4cGVjdGVkIGEgd2FybmluZyBudW1iZXIiLCA2OTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3ByYWdtYV93YXJuaW5nX3B1c2hfbGV2ZWwsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiI3ByYWdtYSB3YXJuaW5nKHB1c2gsIGxldmVsKSByZXF1aXJlcyBhIGxldmVsIGJldHdlZW4gMCBhbmQgNCIsIDY5NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHdhcm5fcHJhZ21hX3dhcm5pbmdfc3BlY19pbnZhbGlkLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiNwcmFnbWEgd2FybmluZyBleHBlY3RlZCAncHVzaCcsICdwb3AnLCAnZGVmYXVsdCcsICdkaXNhYmxlJywgJ2Vycm9yJywgJ29uY2UnLCAnc3VwcHJlc3MnLCAxLCAyLCAzLCBvciA0IiwgNjk2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl9xdW90ZWRfaW5jbHVkZV9pbl9mcmFtZXdvcmtfaGVhZGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJkb3VibGUtcXVvdGVkIGluY2x1ZGUgXCIlMFwiIGluIGZyYW1ld29yayBoZWFkZXIsIGV4cGVjdGVkIGFuZ2xlLWJyYWNrZXRlZCBpbnN0ZWFkIiwgNTU1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl91Y25fZXNjYXBlX2luY29tcGxldGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluY29tcGxldGUgdW5pdmVyc2FsIGNoYXJhY3RlciBuYW1lOyB0cmVhdGluZyBhcyAnXFwnIGZvbGxvd2VkIGJ5IGlkZW50aWZpZXIiLCA2ODgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3Vjbl9lc2NhcGVfbm9fZGlnaXRzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJcXCUwIHVzZWQgd2l0aCBubyBmb2xsb3dpbmcgaGV4IGRpZ2l0czsgdHJlYXRpbmcgYXMgJ1xcJyBmb2xsb3dlZCBieSBpZGVudGlmaWVyIiwgNjg4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKK0RJQUcod2Fybl91Y25fZXNjYXBlX3N1cnJvZ2F0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5pdmVyc2FsIGNoYXJhY3RlciBuYW1lIHJlZmVycyB0byBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIiLCA2ODgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3Vjbl9ub3RfdmFsaWRfaW5fYzg5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bml2ZXJzYWwgY2hhcmFjdGVyIG5hbWVzIGFyZSBvbmx5IHZhbGlkIGluIEM5OSBvciBDKys7IHRyZWF0aW5nIGFzICdcXCcgZm9sbG93ZWQgYnkgaWRlbnRpZmllciIsIDY4OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHdhcm5fdWNuX25vdF92YWxpZF9pbl9jODlfbGl0ZXJhbCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bml2ZXJzYWwgY2hhcmFjdGVyIG5hbWVzIGFyZSBvbmx5IHZhbGlkIGluIEM5OSBvciBDKysiLCA2ODgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3VuY292ZXJlZF9tb2R1bGVfaGVhZGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bWJyZWxsYSBoZWFkZXIgZm9yIG1vZHVsZSAnJTAnIGRvZXMgbm90IGluY2x1ZGUgaGVhZGVyICclMSciLCAzMTcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3VzZV9vZl9wcml2YXRlX2hlYWRlcl9vdXRzaWRlX21vZHVsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInVzZSBvZiBwcml2YXRlIGhlYWRlciBmcm9tIG91dHNpZGUgaXRzIG1vZHVsZTogJyUwJyIsIDU0NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEpCitESUFHKHdhcm5fdXRmOF9zeW1ib2xfaG9tb2dseXBoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0cmVhdGluZyBVbmljb2RlIGNoYXJhY3RlciA8VSslMD4gYXMgaWRlbnRpZmllciBjaGFyYWN0ZXIgcmF0aGVyIHRoYW4gYXMgJyUxJyBzeW1ib2wiLCA2ODksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxKQorRElBRyh3YXJuX3V0Zjhfc3ltYm9sX3plcm9fd2lkdGgsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImlkZW50aWZpZXIgY29udGFpbnMgVW5pY29kZSBjaGFyYWN0ZXIgPFUrJTA+IHRoYXQgaXMgaW52aXNpYmxlIGluIHNvbWUgZW52aXJvbm1lbnRzIiwgNjkxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMSkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNPcHRpb25zLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNPcHRpb25zLmRlZgppbmRleCAyMjY0NTY1Li5iYWFmZDdhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljT3B0aW9ucy5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY09wdGlvbnMuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gRGlhZ09wdGlvbnMuZGVmIC0gRGlhZ25vc3RpYyBvcHRpb24gZGF0YWJhc2UgLS0tLS0tLS0tLS0tLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljT3B0aW9ucy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY09wdGlvbnMuaAppbmRleCA0YzViY2I0Li4zZTNjNGU1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljT3B0aW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNPcHRpb25zLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGlhZ25vc3RpY09wdGlvbnMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljUGFyc2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNQYXJzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMjFmZjkKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljUGFyc2UuaApAQCAtMCwwICsxLDI4IEBACisvLz09PS0tLSBEaWFnbm9zdGljUGFyc2UuaCAtIERpYWdub3N0aWNzIGZvciBsaWJwYXJzZSAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fQ0xBTkdfQkFTSUNfRElBR05PU1RJQ1BBUlNFX0gKKyNkZWZpbmUgTExWTV9DTEFOR19CQVNJQ19ESUFHTk9TVElDUEFSU0VfSAorCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpYy5oIgorCituYW1lc3BhY2UgY2xhbmcgeworbmFtZXNwYWNlIGRpYWcgeworZW51bSB7CisjZGVmaW5lIERJQUcoRU5VTSwgRkxBR1MsIERFRkFVTFRfTUFQUElORywgREVTQywgR1JPVVAsIFNGSU5BRSwgTk9XRVJST1IsICAgICAgXAorICAgICAgICAgICAgIFNIT1dJTlNZU0hFQURFUiwgQ0FURUdPUlkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRU5VTSwKKyNkZWZpbmUgUEFSU0VTVEFSVAorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNQYXJzZUtpbmRzLmluYyIKKyN1bmRlZiBESUFHCisgIE5VTV9CVUlMVElOX1BBUlNFX0RJQUdOT1NUSUNTCit9OworfSAvLyBlbmQgbmFtZXNwYWNlIGRpYWcKK30gLy8gZW5kIG5hbWVzcGFjZSBjbGFuZworCisjZW5kaWYgLy8gTExWTV9DTEFOR19CQVNJQ19ESUFHTk9TVElDUEFSU0VfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY1BhcnNlS2luZHMuaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY1BhcnNlS2luZHMuaW5jCmluZGV4IGYwMWU4N2EuLmYxOGVmN2YgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNQYXJzZUtpbmRzLmluYworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljUGFyc2VLaW5kcy5pbmMKQEAgLTIxMSwxMSArMjExLDE0IEBACiBESUFHKGVycl9vbXBfZXhwZWN0ZWRfcmVkdWN0aW9uX2lkZW50aWZpZXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZXhwZWN0ZWQgaWRlbnRpZmllciBvciBvbmUgb2YgdGhlIGZvbGxvd2luZyBvcGVyYXRvcnM6ICcrJywgJy0nLCAnKicsICcmJywgJ3wnLCAnXicsICcmJicsIG9yICd8fCciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCiBESUFHKGVycl9vbXBfaW1tZWRpYXRlX2RpcmVjdGl2ZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICInI3ByYWdtYSBvbXAgJTAnICVzZWxlY3R7fHdpdGggJyUyJyBjbGF1c2UgfTFjYW5ub3QgYmUgYW4gaW1tZWRpYXRlIHN1YnN0YXRlbWVudCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKIERJQUcoZXJyX29tcF9tYXBfdHlwZV9taXNzaW5nLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm1pc3NpbmcgbWFwIHR5cGUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCitESUFHKGVycl9vbXBfbWFwX3R5cGVfbW9kaWZpZXJfbWlzc2luZywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJtaXNzaW5nIG1hcCB0eXBlIG1vZGlmaWVyIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQorRElBRyhlcnJfb21wX21hcHBlcl9leHBlY3RlZF9kZWNsYXJhdG9yLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImV4cGVjdGVkIGRlY2xhcmF0b3Igb24gJ29tcCBkZWNsYXJlIG1hcHBlcicgZGlyZWN0aXZlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQorRElBRyhlcnJfb21wX21hcHBlcl9pbGxlZ2FsX2lkZW50aWZpZXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaWxsZWdhbCBpZGVudGlmaWVyIG9uICdvbXAgZGVjbGFyZSBtYXBwZXInIGRpcmVjdGl2ZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKIERJQUcoZXJyX29tcF91bmV4cGVjdGVkX2NsYXVzZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1bmV4cGVjdGVkIE9wZW5NUCBjbGF1c2UgJyUwJyBpbiBkaXJlY3RpdmUgJyNwcmFnbWEgb21wICUxJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKIERJQUcoZXJyX29tcF91bmV4cGVjdGVkX2RpcmVjdGl2ZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1bmV4cGVjdGVkIE9wZW5NUCBkaXJlY3RpdmUgJXNlbGVjdHt8JyNwcmFnbWEgb21wICUxJ30wIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQogRElBRyhlcnJfb21wX3Vua25vd25fZGlyZWN0aXZlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImV4cGVjdGVkIGFuIE9wZW5NUCBkaXJlY3RpdmUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCiBESUFHKGVycl9vbXBfdW5rbm93bl9tYXBfdHlwZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbmNvcnJlY3QgbWFwIHR5cGUsIGV4cGVjdGVkIG9uZSBvZiAndG8nLCAnZnJvbScsICd0b2Zyb20nLCAnYWxsb2MnLCAncmVsZWFzZScsIG9yICdkZWxldGUnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQotRElBRyhlcnJfb21wX3Vua25vd25fbWFwX3R5cGVfbW9kaWZpZXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW5jb3JyZWN0IG1hcCB0eXBlIG1vZGlmaWVyLCBleHBlY3RlZCAnYWx3YXlzJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKK0RJQUcoZXJyX29tcF91bmtub3duX21hcF90eXBlX21vZGlmaWVyLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImluY29ycmVjdCBtYXAgdHlwZSBtb2RpZmllciwgZXhwZWN0ZWQgJ2Fsd2F5cycgb3IgJ2Nsb3NlJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKIERJQUcoZXJyX29wZW5jbF9sb2dpY2FsX2V4Y2x1c2l2ZV9vciwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJeXiBpcyBhIHJlc2VydmVkIG9wZXJhdG9yIGluIE9wZW5DTCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKIERJQUcoZXJyX29wZW5jbF90YWtpbmdfZnVuY3Rpb25fYWRkcmVzc19wYXJzZXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidGFraW5nIGFkZHJlc3Mgb2YgZnVuY3Rpb24gaXMgbm90IGFsbG93ZWQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCiBESUFHKGVycl9vcGVuY2xfdW5yb2xsX2hpbnRfb25fbm9uX2xvb3AsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiT3BlbkNMIG9ubHkgc3VwcG9ydHMgJ29wZW5jbF91bnJvbGxfaGludCcgYXR0cmlidXRlIG9uIGZvciwgd2hpbGUsIGFuZCBkbyBzdGF0ZW1lbnRzIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQpAQCAtMjI4LDEzICsyMzEsMTUgQEAKIERJQUcoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfZXhwZWN0ZWRfYXR0cmlidXRlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImV4cGVjdGVkIGFuIGF0dHJpYnV0ZSBhZnRlciAnKCciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCiBESUFHKGVycl9wcmFnbWFfYXR0cmlidXRlX2V4cGVjdGVkX2F0dHJpYnV0ZV9uYW1lLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImV4cGVjdGVkIGlkZW50aWZpZXIgdGhhdCByZXByZXNlbnRzIGFuIGF0dHJpYnV0ZSBuYW1lIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQogRElBRyhlcnJfcHJhZ21hX2F0dHJpYnV0ZV9leHBlY3RlZF9hdHRyaWJ1dGVfc3ludGF4LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImV4cGVjdGVkIGFuIGF0dHJpYnV0ZSB0aGF0IGlzIHNwZWNpZmllZCB1c2luZyB0aGUgR05VLCBDKysxMSBvciAnX19kZWNsc3BlYycgc3ludGF4IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQotRElBRyhlcnJfcHJhZ21hX2F0dHJpYnV0ZV9leHBlY3RlZF9wdXNoX3BvcCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJleHBlY3RlZCAncHVzaCcgb3IgJ3BvcCcgYWZ0ZXIgJyNwcmFnbWEgY2xhbmcgYXR0cmlidXRlJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKK0RJQUcoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfZXhwZWN0ZWRfcGVyaW9kLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImV4cGVjdGVkICcuJyBhZnRlciBwcmFnbWEgYXR0cmlidXRlIG5hbWVzcGFjZSAlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKK0RJQUcoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfZXhwZWN0ZWRfcHVzaF9wb3BfcGFyZW4sIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZXhwZWN0ZWQgJ3B1c2gnLCAncG9wJywgb3IgJygnIGFmdGVyICcjcHJhZ21hIGNsYW5nIGF0dHJpYnV0ZSciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCiBESUFHKGVycl9wcmFnbWFfYXR0cmlidXRlX2V4cGVjdGVkX3N1YmplY3RfaWRlbnRpZmllciwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJleHBlY3RlZCBhbiBpZGVudGlmaWVyIHRoYXQgY29ycmVzcG9uZHMgdG8gYW4gYXR0cmlidXRlIHN1YmplY3QgcnVsZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKIERJQUcoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfZXhwZWN0ZWRfc3ViamVjdF9zdWJfaWRlbnRpZmllciwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJleHBlY3RlZCBhbiBpZGVudGlmaWVyIHRoYXQgY29ycmVzcG9uZHMgdG8gYW4gYXR0cmlidXRlIHN1YmplY3QgbWF0Y2hlciBzdWItcnVsZTsgJyUwJyBtYXRjaGVyICVzZWxlY3R7ZG9lcyBub3Qgc3VwcG9ydCBzdWItcnVsZXN8c3VwcG9ydHMgdGhlIGZvbGxvd2luZyBzdWItcnVsZXM6ICUyfH0xIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQogRElBRyhlcnJfcHJhZ21hX2F0dHJpYnV0ZV9leHRyYV90b2tlbnNfYWZ0ZXJfYXR0cmlidXRlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImV4dHJhIHRva2VucyBhZnRlciBhdHRyaWJ1dGUgaW4gYSAnI3ByYWdtYSBjbGFuZyBhdHRyaWJ1dGUgcHVzaCciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCiBESUFHKGVycl9wcmFnbWFfYXR0cmlidXRlX2ludmFsaWRfYXJndW1lbnQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidW5leHBlY3RlZCBhcmd1bWVudCAnJTAnIHRvICcjcHJhZ21hIGNsYW5nIGF0dHJpYnV0ZSc7IGV4cGVjdGVkICdwdXNoJyBvciAncG9wJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKIERJQUcoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfaW52YWxpZF9zdWJqZWN0X3NldF9zcGVjaWZpZXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZXhwZWN0ZWQgYXR0cmlidXRlIHN1YmplY3Qgc2V0IHNwZWNpZmllciAnYXBwbHlfdG8nIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQogRElBRyhlcnJfcHJhZ21hX2F0dHJpYnV0ZV9tdWx0aXBsZV9hdHRyaWJ1dGVzLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm1vcmUgdGhhbiBvbmUgYXR0cmlidXRlIHNwZWNpZmllZCBpbiAnI3ByYWdtYSBjbGFuZyBhdHRyaWJ1dGUgcHVzaCciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCitESUFHKGVycl9wcmFnbWFfYXR0cmlidXRlX25hbWVzcGFjZV9vbl9hdHRyaWJ1dGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibmFtZXNwYWNlIGNhbiBvbmx5IGFwcGx5IHRvICdwdXNoJyBvciAncG9wJyBkaXJlY3RpdmVzIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQogRElBRyhlcnJfcHJhZ21hX2F0dHJpYnV0ZV91bmtub3duX3N1YmplY3RfcnVsZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1bmtub3duIGF0dHJpYnV0ZSBzdWJqZWN0IHJ1bGUgJyUwJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKIERJQUcoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfdW5rbm93bl9zdWJqZWN0X3N1Yl9ydWxlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiVzZWxlY3R7aW52YWxpZCB1c2Ugb2Z8dW5rbm93bn0yIGF0dHJpYnV0ZSBzdWJqZWN0IG1hdGNoZXIgc3ViLXJ1bGUgJyUwJzsgJyUxJyBtYXRjaGVyICVzZWxlY3R7ZG9lcyBub3Qgc3VwcG9ydCBzdWItcnVsZXN8c3VwcG9ydHMgdGhlIGZvbGxvd2luZyBzdWItcnVsZXM6ICUzfTIiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCiBESUFHKGVycl9wcmFnbWFfYXR0cmlidXRlX3Vuc3VwcG9ydGVkX2F0dHJpYnV0ZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhdHRyaWJ1dGUgJTAgaXMgbm90IHN1cHBvcnRlZCBieSAnI3ByYWdtYSBjbGFuZyBhdHRyaWJ1dGUnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQpAQCAtMjQ5LDExICsyNTQsMTIgQEAKIERJQUcoZXJyX3ByYWdtYV9mcF9pbnZhbGlkX29wdGlvbiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlc2VsZWN0e2ludmFsaWR8bWlzc2luZ30wIG9wdGlvbiVzZWxlY3R7ICUxfH0wOyBleHBlY3RlZCBjb250cmFjdCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKIERJQUcoZXJyX3ByYWdtYV9mcF9zY29wZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICInI3ByYWdtYSBjbGFuZyBmcCcgY2FuIG9ubHkgYXBwZWFyIGF0IGZpbGUgc2NvcGUgb3IgYXQgdGhlIHN0YXJ0IG9mIGEgY29tcG91bmQgc3RhdGVtZW50IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQogRElBRyhlcnJfcHJhZ21hX2ludmFsaWRfa2V5d29yZCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50OyBleHBlY3RlZCAnZW5hYmxlJyVzZWxlY3R7fCwgJ2Z1bGwnfTAlc2VsZWN0e3wsICdhc3N1bWVfc2FmZXR5J30xIG9yICdkaXNhYmxlJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKLURJQUcoZXJyX3ByYWdtYV9sb29wX2ludmFsaWRfb3B0aW9uLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiVzZWxlY3R7aW52YWxpZHxtaXNzaW5nfTAgb3B0aW9uJXNlbGVjdHsgJTF8fTA7IGV4cGVjdGVkIHZlY3Rvcml6ZSwgdmVjdG9yaXplX3dpZHRoLCBpbnRlcmxlYXZlLCBpbnRlcmxlYXZlX2NvdW50LCB1bnJvbGwsIHVucm9sbF9jb3VudCwgb3IgZGlzdHJpYnV0ZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKK0RJQUcoZXJyX3ByYWdtYV9sb29wX2ludmFsaWRfb3B0aW9uLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiVzZWxlY3R7aW52YWxpZHxtaXNzaW5nfTAgb3B0aW9uJXNlbGVjdHsgJTF8fTA7IGV4cGVjdGVkIHZlY3Rvcml6ZSwgdmVjdG9yaXplX3dpZHRoLCBpbnRlcmxlYXZlLCBpbnRlcmxlYXZlX2NvdW50LCB1bnJvbGwsIHVucm9sbF9jb3VudCwgcGlwZWxpbmUsIHBpcGVsaW5lX2luaXRpYXRpb25faW50ZXJ2YWwsIG9yIGRpc3RyaWJ1dGUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCiBESUFHKGVycl9wcmFnbWFfbG9vcF9taXNzaW5nX2FyZ3VtZW50LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm1pc3NpbmcgYXJndW1lbnQ7IGV4cGVjdGVkICVzZWxlY3R7YW4gaW50ZWdlciB2YWx1ZXwnZW5hYmxlJyVzZWxlY3R7fCwgJ2Z1bGwnfTElc2VsZWN0e3wsICdhc3N1bWVfc2FmZXR5J30yIG9yICdkaXNhYmxlJ30wIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQogRElBRyhlcnJfcHJhZ21hX21pc3NpbmdfYXJndW1lbnQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibWlzc2luZyBhcmd1bWVudCB0byAnI3ByYWdtYSAlMCclc2VsZWN0e3w7IGV4cGVjdGVkICUyfTEiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCiBESUFHKGVycl9wcmFnbWFfb3B0aW1pemVfZXh0cmFfYXJndW1lbnQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidW5leHBlY3RlZCBleHRyYSBhcmd1bWVudCAnJTAnIHRvICcjcHJhZ21hIGNsYW5nIG9wdGltaXplJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKIERJQUcoZXJyX3ByYWdtYV9vcHRpbWl6ZV9pbnZhbGlkX2FyZ3VtZW50LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInVuZXhwZWN0ZWQgYXJndW1lbnQgJyUwJyB0byAnI3ByYWdtYSBjbGFuZyBvcHRpbWl6ZSc7IGV4cGVjdGVkICdvbicgb3IgJ29mZiciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCitESUFHKGVycl9wcmFnbWFfcGlwZWxpbmVfaW52YWxpZF9rZXl3b3JkLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgYXJndW1lbnQ7IGV4cGVjdGVkICdkaXNhYmxlJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKIERJQUcoZXJyX3ByYWdtYV9wb2ludGVyc190b19tZW1iZXJzX3Vua25vd25fa2luZCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1bmV4cGVjdGVkICUwLCBleHBlY3RlZCB0byBzZWUgb25lIG9mICVzZWxlY3R7fCdiZXN0X2Nhc2UnLCAnZnVsbF9nZW5lcmFsaXR5JywgfTEnc2luZ2xlX2luaGVyaXRhbmNlJywgJ211bHRpcGxlX2luaGVyaXRhbmNlJywgb3IgJ3ZpcnR1YWxfaW5oZXJpdGFuY2UnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQogRElBRyhlcnJfcmlnaHRfYW5nbGVfYnJhY2tldF9lcXVhbF9uZWVkc19zcGFjZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhIHNwYWNlIGlzIHJlcXVpcmVkIGJldHdlZW4gYSByaWdodCBhbmdsZSBicmFja2V0IGFuZCBhbiBlcXVhbHMgc2lnbiAodXNlICc+ID0nKSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgNCkKIERJQUcoZXJyX3Njb3BlZF9lbnVtX21pc3NpbmdfaWRlbnRpZmllciwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJzY29wZWQgZW51bWVyYXRpb24gcmVxdWlyZXMgYSBuYW1lIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA0KQpAQCAtMjk2LDkgKzMwMiw5IEBACiBESUFHKGVycl96ZXJvX3ZlcnNpb24sIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidmVyc2lvbiBudW1iZXIgbXVzdCBoYXZlIG5vbi16ZXJvIG1ham9yLCBtaW5vciwgb3Igc3ViLW1pbm9yIHZlcnNpb24iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDQpCiBESUFHKGV4dF9hYnN0cmFjdF9wYWNrX2RlY2xhcmF0b3JfcGFyZW5zLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIklTTyBDKysxMSByZXF1aXJlcyBhIHBhcmVudGhlc2l6ZWQgcGFjayBkZWNsYXJhdGlvbiB0byBoYXZlIGEgbmFtZSIsIDIyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcoZXh0X2FsaWFzX2RlY2xhcmF0aW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFsaWFzIGRlY2xhcmF0aW9ucyBhcmUgYSBDKysxMSBleHRlbnNpb24iLCA3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKGV4dF9hbGlnbm9mX2V4cHIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgYXBwbGllZCB0byBhbiBleHByZXNzaW9uIGlzIGEgR05VIGV4dGVuc2lvbiIsIDI0NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKGV4dF9hbGlnbm9mX2V4cHIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgYXBwbGllZCB0byBhbiBleHByZXNzaW9uIGlzIGEgR05VIGV4dGVuc2lvbiIsIDI1MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKGV4dF9hdXRvX3N0b3JhZ2VfY2xhc3MsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ2F1dG8nIHN0b3JhZ2UgY2xhc3Mgc3BlY2lmaWVyIGlzIG5vdCBwZXJtaXR0ZWQgaW4gQysrMTEsIGFuZCB3aWxsIG5vdCBiZSBzdXBwb3J0ZWQgaW4gZnV0dXJlIHJlbGVhc2VzIiwgNTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyhleHRfYXV0b190eXBlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIidfX2F1dG9fdHlwZScgaXMgYSBHTlUgZXh0ZW5zaW9uIiwgMjQ4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcoZXh0X2F1dG9fdHlwZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICInX19hdXRvX3R5cGUnIGlzIGEgR05VIGV4dGVuc2lvbiIsIDI1NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKGV4dF9iaXRmaWVsZF9tZW1iZXJfaW5pdCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZWZhdWx0IG1lbWJlciBpbml0aWFsaXplciBmb3IgYml0LWZpZWxkIGlzIGEgQysrMmEgZXh0ZW5zaW9uIiwgOTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyhleHRfYzExX2FsaWdubWVudCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlMCBpcyBhIEMxMS1zcGVjaWZpYyBmZWF0dXJlIiwgMTEyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcoZXh0X2MxMV9nZW5lcmljX3NlbGVjdGlvbiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJnZW5lcmljIHNlbGVjdGlvbnMgYXJlIGEgQzExLXNwZWNpZmljIGZlYXR1cmUiLCAxMTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQpAQCAtMzA2LDU1ICszMTIsNjAgQEAKIERJQUcoZXh0X2MxMV9zdGF0aWNfYXNzZXJ0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIl9TdGF0aWNfYXNzZXJ0IGlzIGEgQzExLXNwZWNpZmljIGZlYXR1cmUiLCAxMTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyhleHRfYzk5X2NvbXBvdW5kX2xpdGVyYWwsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY29tcG91bmQgbGl0ZXJhbHMgYXJlIGEgQzk5LXNwZWNpZmljIGZlYXR1cmUiLCAxMTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyhleHRfYzk5X3ZhcmlhYmxlX2RlY2xfaW5fZm9yX2xvb3AsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidmFyaWFibGUgZGVjbGFyYXRpb24gaW4gZm9yIGxvb3AgaXMgYSBDOTktc3BlY2lmaWMgZmVhdHVyZSIsIDExNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKGV4dF9jbGFuZ19jX2VudW1fZml4ZWRfdW5kZXJseWluZ190eXBlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImVudW1lcmF0aW9uIHR5cGVzIHdpdGggYSBmaXhlZCB1bmRlcmx5aW5nIHR5cGUgYXJlIGEgQ2xhbmcgZXh0ZW5zaW9uIiwgMjE4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcoZXh0X2NsYW5nX2NfZW51bV9maXhlZF91bmRlcmx5aW5nX3R5cGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZW51bWVyYXRpb24gdHlwZXMgd2l0aCBhIGZpeGVkIHVuZGVybHlpbmcgdHlwZSBhcmUgYSBDbGFuZyBleHRlbnNpb24iLCAyMjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyhleHRfY29uc3RleHByX2lmLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbnN0ZXhwciBpZiBpcyBhIEMrKzE3IGV4dGVuc2lvbiIsIDkxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcoZXh0X2NvbnN0ZXhwcl9vbl9sYW1iZGFfY3h4MTcsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ2NvbnN0ZXhwcicgb24gbGFtYmRhIGV4cHJlc3Npb25zIGlzIGEgQysrMTcgZXh0ZW5zaW9uIiwgOTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyhleHRfY3h4MTFfZW51bV9maXhlZF91bmRlcmx5aW5nX3R5cGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZW51bWVyYXRpb24gdHlwZXMgd2l0aCBhIGZpeGVkIHVuZGVybHlpbmcgdHlwZSBhcmUgYSBDKysxMSBleHRlbnNpb24iLCA3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKGV4dF9kZWNsdHlwZV9hdXRvX3R5cGVfc3BlY2lmaWVyLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidkZWNsdHlwZShhdXRvKScgdHlwZSBzcGVjaWZpZXIgaXMgYSBDKysxNCBleHRlbnNpb24iLCA4NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKGV4dF9kZWNvbXBfZGVjbF9lbXB0eSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJJU08gQysrMTcgZG9lcyBub3QgYWxsb3cgYSBkZWNvbXBvc2l0aW9uIGdyb3VwIHRvIGJlIGVtcHR5IiwgMTk3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcoZXh0X2RlY29tcF9kZWNsX2VtcHR5LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIklTTyBDKysxNyBkb2VzIG5vdCBhbGxvdyBhIGRlY29tcG9zaXRpb24gZ3JvdXAgdG8gYmUgZW1wdHkiLCAyMDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyhleHRfZGVmYXVsdGVkX2RlbGV0ZWRfZnVuY3Rpb24sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHtkZWZhdWx0ZWR8ZGVsZXRlZH0wIGZ1bmN0aW9uIGRlZmluaXRpb25zIGFyZSBhIEMrKzExIGV4dGVuc2lvbiIsIDc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcoZXh0X2VsbGlwc2lzX2V4Y2VwdGlvbl9zcGVjLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uIG9mICcuLi4nIGlzIGEgTWljcm9zb2Z0IGV4dGVuc2lvbiIsIDM3MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKGV4dF9lbXB0eV90cmFuc2xhdGlvbl91bml0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIklTTyBDIHJlcXVpcmVzIGEgdHJhbnNsYXRpb24gdW5pdCB0byBjb250YWluIGF0IGxlYXN0IG9uZSBkZWNsYXJhdGlvbiIsIDE5OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKGV4dF9keW5hbWljX2V4Y2VwdGlvbl9zcGVjLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJJU08gQysrMTcgZG9lcyBub3QgYWxsb3cgZHluYW1pYyBleGNlcHRpb24gc3BlY2lmaWNhdGlvbnMiLCAxOTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyhleHRfZWxsaXBzaXNfZXhjZXB0aW9uX3NwZWMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZXhjZXB0aW9uIHNwZWNpZmljYXRpb24gb2YgJy4uLicgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcoZXh0X2VtcHR5X3RyYW5zbGF0aW9uX3VuaXQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiSVNPIEMgcmVxdWlyZXMgYSB0cmFuc2xhdGlvbiB1bml0IHRvIGNvbnRhaW4gYXQgbGVhc3Qgb25lIGRlY2xhcmF0aW9uIiwgMjA1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcoZXh0X2VudW1lcmF0b3JfbGlzdF9jb21tYV9jLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbW1hcyBhdCB0aGUgZW5kIG9mIGVudW1lcmF0b3IgbGlzdHMgYXJlIGEgQzk5LXNwZWNpZmljIGZlYXR1cmUiLCAxMTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyhleHRfZW51bWVyYXRvcl9saXN0X2NvbW1hX2N4eCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjb21tYXMgYXQgdGhlIGVuZCBvZiBlbnVtZXJhdG9yIGxpc3RzIGFyZSBhIEMrKzExIGV4dGVuc2lvbiIsIDc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcoZXh0X2V4cGVjdGVkX3NlbWlfZGVjbF9saXN0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkICc7JyBhdCBlbmQgb2YgZGVjbGFyYXRpb24gbGlzdCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyhleHRfZXh0ZXJuX3RlbXBsYXRlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImV4dGVybiB0ZW1wbGF0ZXMgYXJlIGEgQysrMTEgZXh0ZW5zaW9uIiwgNzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyhleHRfZXh0cmFfc2VtaSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJleHRyYSAnOycgJXNlbGVjdHtvdXRzaWRlIG9mIGEgZnVuY3Rpb258aW5zaWRlIGEgJTF8aW5zaWRlIGluc3RhbmNlIHZhcmlhYmxlIGxpc3R8YWZ0ZXIgbWVtYmVyIGZ1bmN0aW9uIGRlZmluaXRpb259MCIsIDIxNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKGV4dF9leHRyYV9zZW1pLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImV4dHJhICc7JyAlc2VsZWN0e291dHNpZGUgb2YgYSBmdW5jdGlvbnxpbnNpZGUgYSAlMXxpbnNpZGUgaW5zdGFuY2UgdmFyaWFibGUgbGlzdHxhZnRlciBtZW1iZXIgZnVuY3Rpb24gZGVmaW5pdGlvbn0wIiwgMjIyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcoZXh0X2V4dHJhX3NlbWlfY3h4MTEsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZXh0cmEgJzsnIG91dHNpZGUgb2YgYSBmdW5jdGlvbiBpcyBhIEMrKzExIGV4dGVuc2lvbiIsIDgwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcoZXh0X2ZvbGRfZXhwcmVzc2lvbiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwYWNrIGZvbGQgZXhwcmVzc2lvbiBpcyBhIEMrKzE3IGV4dGVuc2lvbiIsIDkxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcoZXh0X2Zvcl9yYW5nZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyYW5nZS1iYXNlZCBmb3IgbG9vcCBpcyBhIEMrKzExIGV4dGVuc2lvbiIsIDc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcoZXh0X2Zvcl9yYW5nZV9pbml0X3N0bXQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmFuZ2UtYmFzZWQgZm9yIGxvb3AgaW5pdGlhbGl6YXRpb24gc3RhdGVtZW50cyBhcmUgYSBDKysyYSBleHRlbnNpb24iLCA5OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKGV4dF9nZW5lcmFsaXplZF9pbml0aWFsaXplcl9saXN0cywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJnZW5lcmFsaXplZCBpbml0aWFsaXplciBsaXN0cyBhcmUgYSBDKysxMSBleHRlbnNpb24iLCA3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKGV4dF9nbnVfYWRkcmVzc19vZl9sYWJlbCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2Ugb2YgR05VIGFkZHJlc3Mtb2YtbGFiZWwgZXh0ZW5zaW9uIiwgMjYyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcoZXh0X2dudV9hcnJheV9yYW5nZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2Ugb2YgR05VIGFycmF5IHJhbmdlIGV4dGVuc2lvbiIsIDI1NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKGV4dF9nbnVfY2FzZV9yYW5nZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2Ugb2YgR05VIGNhc2UgcmFuZ2UgZXh0ZW5zaW9uIiwgMjUwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcoZXh0X2dudV9jb25kaXRpb25hbF9leHByLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVzZSBvZiBHTlUgPzogY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBleHRlbnNpb24sIG9taXR0aW5nIG1pZGRsZSBvcGVyYW5kIiwgMjUzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcoZXh0X2dudV9lbXB0eV9pbml0aWFsaXplciwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2Ugb2YgR05VIGVtcHR5IGluaXRpYWxpemVyIGV4dGVuc2lvbiIsIDI1NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKGV4dF9nbnVfaW5kaXJlY3RfZ290bywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2Ugb2YgR05VIGluZGlyZWN0LWdvdG8gZXh0ZW5zaW9uIiwgMjYyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcoZXh0X2dudV9taXNzaW5nX2VxdWFsX2Rlc2lnbmF0b3IsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidXNlIG9mIEdOVSAnbWlzc2luZyA9JyBleHRlbnNpb24gaW4gZGVzaWduYXRvciIsIDI1NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKGV4dF9nbnVfb2xkX3N0eWxlX2ZpZWxkX2Rlc2lnbmF0b3IsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidXNlIG9mIEdOVSBvbGQtc3R5bGUgZmllbGQgZGVzaWduYXRvciBleHRlbnNpb24iLCAyNTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyhleHRfZ251X3N0YXRlbWVudF9leHByLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVzZSBvZiBHTlUgc3RhdGVtZW50IGV4cHJlc3Npb24gZXh0ZW5zaW9uIiwgMjY0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcoZXh0X2lkZW50X2xpc3RfaW5fcGFyYW0sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidHlwZS1sZXNzIHBhcmFtZXRlciBuYW1lcyBpbiBmdW5jdGlvbiBkZWNsYXJhdGlvbiIsIDUxNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKGV4dF9nbnVfYWRkcmVzc19vZl9sYWJlbCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2Ugb2YgR05VIGFkZHJlc3Mtb2YtbGFiZWwgZXh0ZW5zaW9uIiwgMjcwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcoZXh0X2dudV9hcnJheV9yYW5nZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2Ugb2YgR05VIGFycmF5IHJhbmdlIGV4dGVuc2lvbiIsIDI2MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKGV4dF9nbnVfY2FzZV9yYW5nZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2Ugb2YgR05VIGNhc2UgcmFuZ2UgZXh0ZW5zaW9uIiwgMjU4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcoZXh0X2dudV9jb25kaXRpb25hbF9leHByLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVzZSBvZiBHTlUgPzogY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBleHRlbnNpb24sIG9taXR0aW5nIG1pZGRsZSBvcGVyYW5kIiwgMjYxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcoZXh0X2dudV9lbXB0eV9pbml0aWFsaXplciwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2Ugb2YgR05VIGVtcHR5IGluaXRpYWxpemVyIGV4dGVuc2lvbiIsIDI2MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKGV4dF9nbnVfaW5kaXJlY3RfZ290bywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2Ugb2YgR05VIGluZGlyZWN0LWdvdG8gZXh0ZW5zaW9uIiwgMjcwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcoZXh0X2dudV9taXNzaW5nX2VxdWFsX2Rlc2lnbmF0b3IsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidXNlIG9mIEdOVSAnbWlzc2luZyA9JyBleHRlbnNpb24gaW4gZGVzaWduYXRvciIsIDI2MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKGV4dF9nbnVfb2xkX3N0eWxlX2ZpZWxkX2Rlc2lnbmF0b3IsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidXNlIG9mIEdOVSBvbGQtc3R5bGUgZmllbGQgZGVzaWduYXRvciBleHRlbnNpb24iLCAyNjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyhleHRfZ251X3N0YXRlbWVudF9leHByLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVzZSBvZiBHTlUgc3RhdGVtZW50IGV4cHJlc3Npb24gZXh0ZW5zaW9uIiwgMjcyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcoZXh0X2lkZW50X2xpc3RfaW5fcGFyYW0sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidHlwZS1sZXNzIHBhcmFtZXRlciBuYW1lcyBpbiBmdW5jdGlvbiBkZWNsYXJhdGlvbiIsIDUyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKGV4dF9pbml0X3N0YXRlbWVudCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInJXNlbGVjdHtpZnxzd2l0Y2h9MCcgaW5pdGlhbGl6YXRpb24gc3RhdGVtZW50cyBhcmUgYSBDKysxNyBleHRlbnNpb24iLCA5MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKGV4dF9pbmxpbmVfbmFtZXNwYWNlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImlubGluZSBuYW1lc3BhY2VzIGFyZSBhIEMrKzExIGZlYXR1cmUiLCA4MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKGV4dF9rZXl3b3JkX2FzX2lkZW50LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImtleXdvcmQgJyUwJyB3aWxsIGJlIG1hZGUgYXZhaWxhYmxlIGFzIGFuIGlkZW50aWZpZXIgJXNlbGVjdHtoZXJlfGZvciB0aGUgcmVtYWluZGVyIG9mIHRoZSB0cmFuc2xhdGlvbiB1bml0fTEiLCAzNDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyhleHRfbXNfY19lbnVtX2ZpeGVkX3VuZGVybHlpbmdfdHlwZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJlbnVtZXJhdGlvbiB0eXBlcyB3aXRoIGEgZml4ZWQgdW5kZXJseWluZyB0eXBlIGFyZSBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzNzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyhleHRfbXNfc2VhbGVkX2tleXdvcmQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ3NlYWxlZCcga2V5d29yZCBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzODUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyhleHRfaW5saW5lX25lc3RlZF9uYW1lc3BhY2VfZGVmaW5pdGlvbiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbmxpbmUgbmVzdGVkIG5hbWVzcGFjZSBkZWZpbml0aW9uIGlzIGEgQysrMmEgZXh0ZW5zaW9uIiwgOTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyhleHRfa2V5d29yZF9hc19pZGVudCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJrZXl3b3JkICclMCcgd2lsbCBiZSBtYWRlIGF2YWlsYWJsZSBhcyBhbiBpZGVudGlmaWVyICVzZWxlY3R7aGVyZXxmb3IgdGhlIHJlbWFpbmRlciBvZiB0aGUgdHJhbnNsYXRpb24gdW5pdH0xIiwgMzQ5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcoZXh0X21zX2NfZW51bV9maXhlZF91bmRlcmx5aW5nX3R5cGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZW51bWVyYXRpb24gdHlwZXMgd2l0aCBhIGZpeGVkIHVuZGVybHlpbmcgdHlwZSBhcmUgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcoZXh0X21zX3NlYWxlZF9rZXl3b3JkLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidzZWFsZWQnIGtleXdvcmQgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzk0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcoZXh0X211bHRpX3VzaW5nX2RlY2xhcmF0aW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzZSBvZiBtdWx0aXBsZSBkZWNsYXJhdG9ycyBpbiBhIHNpbmdsZSB1c2luZyBkZWNsYXJhdGlvbiBpcyBhIEMrKzE3IGV4dGVuc2lvbiIsIDkxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcoZXh0X25lc3RlZF9uYW1lc3BhY2VfZGVmaW5pdGlvbiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJuZXN0ZWQgbmFtZXNwYWNlIGRlZmluaXRpb24gaXMgYSBDKysxNyBleHRlbnNpb247IGRlZmluZSBlYWNoIG5hbWVzcGFjZSBzZXBhcmF0ZWx5IiwgOTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyhleHRfbm9uc3RhdGljX21lbWJlcl9pbml0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluLWNsYXNzIGluaXRpYWxpemF0aW9uIG9mIG5vbi1zdGF0aWMgZGF0YSBtZW1iZXIgaXMgYSBDKysxMSBleHRlbnNpb24iLCA3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKGV4dF9uc19lbnVtX2F0dHJpYnV0ZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJhdHRyaWJ1dGVzIG9uICVzZWxlY3R7YSBuYW1lc3BhY2V8YW4gZW51bWVyYXRvcn0wIGRlY2xhcmF0aW9uIGFyZSBhIEMrKzE3IGV4dGVuc2lvbiIsIDkxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcoZXh0X251bGxhYmlsaXR5LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInR5cGUgbnVsbGFiaWxpdHkgc3BlY2lmaWVyICUwIGlzIGEgQ2xhbmcgZXh0ZW5zaW9uIiwgNDUxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcoZXh0X251bGxhYmlsaXR5LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInR5cGUgbnVsbGFiaWxpdHkgc3BlY2lmaWVyICUwIGlzIGEgQ2xhbmcgZXh0ZW5zaW9uIiwgNDYxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcoZXh0X292ZXJyaWRlX2NvbnRyb2xfa2V5d29yZCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInJTAnIGtleXdvcmQgaXMgYSBDKysxMSBleHRlbnNpb24iLCA3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKGV4dF9yZWZfcXVhbGlmaWVyLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlZmVyZW5jZSBxdWFsaWZpZXJzIG9uIGZ1bmN0aW9ucyBhcmUgYSBDKysxMSBleHRlbnNpb24iLCA3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKGV4dF9ydmFsdWVfcmVmZXJlbmNlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJ2YWx1ZSByZWZlcmVuY2VzIGFyZSBhIEMrKzExIGV4dGVuc2lvbiIsIDc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcoZXh0X3Njb3BlZF9lbnVtLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInNjb3BlZCBlbnVtZXJhdGlvbnMgYXJlIGEgQysrMTEgZXh0ZW5zaW9uIiwgNzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyhleHRfc3RkY19wcmFnbWFfaWdub3JlZCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmtub3duIHByYWdtYSBpbiBTVERDIG5hbWVzcGFjZSIsIDY4MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKGV4dF9zdGF0aWNfYXNzZXJ0X25vX21lc3NhZ2UsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic3RhdGljX2Fzc2VydCB3aXRoIG5vIG1lc3NhZ2UgaXMgYSBDKysxNyBleHRlbnNpb24iLCA5MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKGV4dF9zdGRjX3ByYWdtYV9pZ25vcmVkLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVua25vd24gcHJhZ21hIGluIFNUREMgbmFtZXNwYWNlIiwgNjk2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcoZXh0X3RlbXBsYXRlX3RlbXBsYXRlX3BhcmFtX3R5cGVuYW1lLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRlbXBsYXRlIHRlbXBsYXRlIHBhcmFtZXRlciB1c2luZyAndHlwZW5hbWUnIGlzIGEgQysrMTcgZXh0ZW5zaW9uIiwgOTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyhleHRfdGhyZWFkX2JlZm9yZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICInX190aHJlYWQnIGJlZm9yZSAnJTAnIiwgNTE2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcoZXh0X3RocmVhZF9iZWZvcmUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJ19fdGhyZWFkJyBiZWZvcmUgJyUwJyIsIDUyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKGV4dF91c2luZ19hdHRyaWJ1dGVfbnMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGVmYXVsdCBzY29wZSBzcGVjaWZpZXIgZm9yIGF0dHJpYnV0ZXMgaXMgYSBDKysxNyBleHRlbnNpb24iLCA5MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKGV4dF91c2luZ19kZWNsYXJhdGlvbl9wYWNrLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInBhY2sgZXhwYW5zaW9uIG9mIHVzaW5nIGRlY2xhcmF0aW9uIGlzIGEgQysrMTcgZXh0ZW5zaW9uIiwgOTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyhleHRfd2Fybl9nbnVfZmluYWwsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiX19maW5hbCBpcyBhIEdOVSBleHRlbnNpb24sIGNvbnNpZGVyIHVzaW5nIEMrKzExIGZpbmFsIiwgMjUwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcobm90ZV9icmFja2V0X2RlcHRoLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAidXNlIC1mYnJhY2tldC1kZXB0aD1OIHRvIGluY3JlYXNlIG1heGltdW0gbmVzdGluZyBsZXZlbCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyhub3RlX2V4Y2VwdGlvbl9zcGVjX2RlcHJlY2F0ZWQsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJ1c2UgJyUwJyBpbnN0ZWFkIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKG5vdGVfZXh0cmFfY29tbWFfbWVzc2FnZV9hcmcsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJjb21tYSBzZXBhcmF0aW5nIE9iamVjdGl2ZS1DIG1lc3NhZ2luZyBhcmd1bWVudHMiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcobm90ZV9mb3JjZV9lbXB0eV9zZWxlY3Rvcl9uYW1lLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAib3IgaW5zZXJ0IHdoaXRlc3BhY2UgYmVmb3JlICc6JyB0byB1c2UgJTAgYXMgcGFyYW1ldGVyIG5hbWUgYW5kIGhhdmUgYW4gZW1wdHkgZW50cnkgaW4gdGhlIHNlbGVjdG9yIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKG5vdGVfbWVhbnRfdG9fdXNlX3R5cGVuYW1lLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiZGlkIHlvdSBtZWFuIHRvIHVzZSAndHlwZW5hbWUnPyIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyMCkKQEAgLTM2NCwxNiArMzc1LDE3IEBACiBESUFHKG5vdGVfbWlzc2luZ19lbmRfb2ZfZGVmaW5pdGlvbl9iZWZvcmUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJzdGlsbCB3aXRoaW4gZGVmaW5pdGlvbiBvZiAlcTAgaGVyZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyhub3RlX21pc3Npbmdfc2VsZWN0b3JfbmFtZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImludHJvZHVjZSBhIHBhcmFtZXRlciBuYW1lIHRvIG1ha2UgJTAgcGFydCBvZiB0aGUgc2VsZWN0b3IiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcobm90ZV9vYmpjX2NvbnRhaW5lcl9zdGFydCwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgIiVzZWxlY3R7Y2xhc3N8cHJvdG9jb2x8Y2F0ZWdvcnl8Y2xhc3MgZXh0ZW5zaW9ufGltcGxlbWVudGF0aW9ufGNhdGVnb3J5IGltcGxlbWVudGF0aW9ufTAgc3RhcnRlZCBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKG5vdGVfcHJhZ21hX2F0dHJpYnV0ZV9uYW1lc3BhY2Vfb25fYXR0cmlidXRlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAib21pdCB0aGUgbmFtZXNwYWNlIHRvIGFkZCBhdHRyaWJ1dGVzIHRvIHRoZSBtb3N0LXJlY2VudGx5IHB1c2hlZCBhdHRyaWJ1dGUgZ3JvdXAiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcobm90ZV9wcmFnbWFfYXR0cmlidXRlX3VzZV9hdHRyaWJ1dGVfa3csIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJ1c2UgdGhlIEdOVSAnX19hdHRyaWJ1dGVfXycgc3ludGF4IiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKG5vdGVfcHJldmlvdXNfZGVmYXVsdF9hc3NvYywgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgInByZXZpb3VzIGRlZmF1bHQgZ2VuZXJpYyBhc3NvY2lhdGlvbiBpcyBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKHdhcm5fYXJjX2JyaWRnZV9jYXN0X25vbmFyYywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJyUwJyBjYXN0cyBoYXZlIG5vIGVmZmVjdCB3aGVuIG5vdCB1c2luZyBBUkMiLCAyNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDgpCiBESUFHKHdhcm5fYXNtX3F1YWxpZmllcl9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpZ25vcmVkICUwIHF1YWxpZmllciBvbiBhc20iLCAzNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEyKQogRElBRyh3YXJuX2F0aW1wb3J0X2luX2ZyYW1ld29ya19oZWFkZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzZSBvZiAnQGltcG9ydCcgaW4gZnJhbWV3b3JrIGhlYWRlciBpcyBkaXNjb3VyYWdlZCwgaW5jbHVkaW5nIHRoaXMgaGVhZGVyIHJlcXVpcmVzIC1mbW9kdWxlcyIsIDQwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9hdHRyaWJ1dGVfbm9fZGVjbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXR0cmlidXRlICUwIGlnbm9yZWQsIGJlY2F1c2UgaXQgaXMgbm90IGF0dGFjaGVkIHRvIGEgZGVjbGFyYXRpb24iLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX2F0dHJpYnV0ZV9vbl9mdW5jdGlvbl9kZWZpbml0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJHQ0MgZG9lcyBub3QgYWxsb3cgJTAgYXR0cmlidXRlIGluIHRoaXMgcG9zaXRpb24gb24gYSBmdW5jdGlvbiBkZWZpbml0aW9uIiwgMjQyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9hdHRyaWJ1dGVfbm9fZGVjbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXR0cmlidXRlICUwIGlnbm9yZWQsIGJlY2F1c2UgaXQgaXMgbm90IGF0dGFjaGVkIHRvIGEgZGVjbGFyYXRpb24iLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX2F0dHJpYnV0ZV9vbl9mdW5jdGlvbl9kZWZpbml0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJHQ0MgZG9lcyBub3QgYWxsb3cgJTAgYXR0cmlidXRlIGluIHRoaXMgcG9zaXRpb24gb24gYSBmdW5jdGlvbiBkZWZpbml0aW9uIiwgMjUwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcod2Fybl9hdmFpbGFiaWxpdHlfYW5kX3VuYXZhaWxhYmxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIndW5hdmFpbGFibGUnIGF2YWlsYWJpbGl0eSBvdmVycmlkZXMgYWxsIG90aGVyIGF2YWlsYWJpbGl0eSBpbmZvcm1hdGlvbiIsIDUyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9jc3R5bGVfcGFyYW0sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzZSBvZiBDLXN0eWxlIHBhcmFtZXRlcnMgaW4gT2JqZWN0aXZlLUMgbWV0aG9kIGRlY2xhcmF0aW9ucyBpcyBkZXByZWNhdGVkIiwgMTYwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjcpCi1ESUFHKHdhcm5fY3VkYV9hdHRyX2xhbWJkYV9wb3NpdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibnZjYyBkb2VzIG5vdCBhbGxvdyAnX18lMF9fJyB0byBhcHBlYXIgYWZ0ZXIgJygpJyBpbiBsYW1iZGFzIiwgMTQ0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9jc3R5bGVfcGFyYW0sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzZSBvZiBDLXN0eWxlIHBhcmFtZXRlcnMgaW4gT2JqZWN0aXZlLUMgbWV0aG9kIGRlY2xhcmF0aW9ucyBpcyBkZXByZWNhdGVkIiwgMTY2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjcpCitESUFHKHdhcm5fY3VkYV9hdHRyX2xhbWJkYV9wb3NpdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibnZjYyBkb2VzIG5vdCBhbGxvdyAnX18lMF9fJyB0byBhcHBlYXIgYWZ0ZXIgJygpJyBpbiBsYW1iZGFzIiwgMTQ3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcod2Fybl9jeHgxMV9jb21wYXRfZGVjbHR5cGVfYXV0b190eXBlX3NwZWNpZmllciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJ2RlY2x0eXBlKGF1dG8pJyB0eXBlIHNwZWNpZmllciBpcyBpbmNvbXBhdGlibGUgd2l0aCBDKysgc3RhbmRhcmRzIGJlZm9yZSBDKysxNCIsIDEwMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKHdhcm5fY3h4MTFfcmlnaHRfc2hpZnRfaW5fdGVtcGxhdGVfYXJnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2Ugb2YgcmlnaHQtc2hpZnQgb3BlcmF0b3IgKCc+PicpIGluIHRlbXBsYXRlIGFyZ3VtZW50IHdpbGwgcmVxdWlyZSBwYXJlbnRoZXNlcyBpbiBDKysxMSIsIDc1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcod2Fybl9jeHgxNF9jb21wYXRfY29uc3RleHByX2lmLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjb25zdGV4cHIgaWYgaXMgaW5jb21wYXRpYmxlIHdpdGggQysrIHN0YW5kYXJkcyBiZWZvcmUgQysrMTciLCAxMDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQpAQCAtMzgyLDEwICszOTQsMTIgQEAKIERJQUcod2Fybl9jeHgxNF9jb21wYXRfaW5pdF9zdGF0ZW1lbnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiVzZWxlY3R7aWZ8c3dpdGNofTAgaW5pdGlhbGl6YXRpb24gc3RhdGVtZW50cyBhcmUgaW5jb21wYXRpYmxlIHdpdGggQysrIHN0YW5kYXJkcyBiZWZvcmUgQysrMTciLCAxMDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyh3YXJuX2N4eDE0X2NvbXBhdF9uZXN0ZWRfbmFtZXNwYWNlX2RlZmluaXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm5lc3RlZCBuYW1lc3BhY2UgZGVmaW5pdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCBDKysgc3RhbmRhcmRzIGJlZm9yZSBDKysxNyIsIDEwMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKHdhcm5fY3h4MTRfY29tcGF0X25zX2VudW1fYXR0cmlidXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJhdHRyaWJ1dGVzIG9uICVzZWxlY3R7YSBuYW1lc3BhY2V8YW4gZW51bWVyYXRvcn0wIGRlY2xhcmF0aW9uIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBDKysgc3RhbmRhcmRzIGJlZm9yZSBDKysxNyIsIDEwMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fY3h4MTRfY29tcGF0X3N0YXRpY19hc3NlcnRfbm9fbWVzc2FnZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAic3RhdGljX2Fzc2VydCB3aXRoIG5vIG1lc3NhZ2UgaXMgaW5jb21wYXRpYmxlIHdpdGggQysrIHN0YW5kYXJkcyBiZWZvcmUgQysrMTciLCAxMDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyh3YXJuX2N4eDE0X2NvbXBhdF90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJhbV90eXBlbmFtZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidGVtcGxhdGUgdGVtcGxhdGUgcGFyYW1ldGVyIHVzaW5nICd0eXBlbmFtZScgaXMgaW5jb21wYXRpYmxlIHdpdGggQysrIHN0YW5kYXJkcyBiZWZvcmUgQysrMTciLCAxMDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyh3YXJuX2N4eDE0X2NvbXBhdF91c2luZ19hdHRyaWJ1dGVfbnMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImRlZmF1bHQgc2NvcGUgc3BlY2lmaWVyIGZvciBhdHRyaWJ1dGVzIGlzIGluY29tcGF0aWJsZSB3aXRoIEMrKyBzdGFuZGFyZHMgYmVmb3JlIEMrKzE3IiwgMTAxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcod2Fybl9jeHgxN19jb21wYXRfYml0ZmllbGRfbWVtYmVyX2luaXQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImRlZmF1bHQgbWVtYmVyIGluaXRpYWxpemVyIGZvciBiaXQtZmllbGQgaXMgaW5jb21wYXRpYmxlIHdpdGggQysrIHN0YW5kYXJkcyBiZWZvcmUgQysrMmEiLCA5OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKHdhcm5fY3h4MTdfY29tcGF0X2Zvcl9yYW5nZV9pbml0X3N0bXQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInJhbmdlLWJhc2VkIGZvciBsb29wIGluaXRpYWxpemF0aW9uIHN0YXRlbWVudHMgYXJlIGluY29tcGF0aWJsZSB3aXRoIEMrKyBzdGFuZGFyZHMgYmVmb3JlIEMrKzJhIiwgOTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX2N4eDE3X2NvbXBhdF9pbmxpbmVfbmVzdGVkX25hbWVzcGFjZV9kZWZpbml0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbmxpbmUgbmVzdGVkIG5hbWVzcGFjZSBkZWZpbml0aW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIEMrKyBzdGFuZGFyZHMgYmVmb3JlIEMrKzJhIiwgOTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyh3YXJuX2N4eDE3X2NvbXBhdF9tdWx0aV91c2luZ19kZWNsYXJhdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidXNlIG9mIG11bHRpcGxlIGRlY2xhcmF0b3JzIGluIGEgc2luZ2xlIHVzaW5nIGRlY2xhcmF0aW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIEMrKyBzdGFuZGFyZHMgYmVmb3JlIEMrKzE3IiwgMTAxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcod2Fybl9jeHgxN19jb21wYXRfdXNpbmdfZGVjbGFyYXRpb25fcGFjaywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicGFjayBleHBhbnNpb24gdXNpbmcgZGVjbGFyYXRpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggQysrIHN0YW5kYXJkcyBiZWZvcmUgQysrMTciLCAxMDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyh3YXJuX2N4eDk4X2NvbXBhdF9hbGlhc19kZWNsYXJhdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYWxpYXMgZGVjbGFyYXRpb25zIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBDKys5OCIsIDEwNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCkBAIC00MTQsNTkgKzQyOCw2MyBAQAogRElBRyh3YXJuX2N4eDk4X2NvbXBhdF90b3BfbGV2ZWxfc2VtaSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZXh0cmEgJzsnIG91dHNpZGUgb2YgYSBmdW5jdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCBDKys5OCIsIDEwOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKHdhcm5fY3h4OThfY29tcGF0X3RyYWlsaW5nX3JldHVybl90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ0cmFpbGluZyByZXR1cm4gdHlwZXMgYXJlIGluY29tcGF0aWJsZSB3aXRoIEMrKzk4IiwgMTA2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcod2Fybl9jeHg5OF9jb21wYXRfdHdvX3JpZ2h0X2FuZ2xlX2JyYWNrZXRzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjb25zZWN1dGl2ZSByaWdodCBhbmdsZSBicmFja2V0cyBhcmUgaW5jb21wYXRpYmxlIHdpdGggQysrOTggKHVzZSAnPiA+JykiLCAxMDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX2RhbmdsaW5nX2Vsc2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFkZCBleHBsaWNpdCBicmFjZXMgdG8gYXZvaWQgZGFuZ2xpbmcgZWxzZSIsIDE0NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fZGFuZ2xpbmdfZWxzZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYWRkIGV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZCBkYW5nbGluZyBlbHNlIiwgMTUwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9lbXB0eV9pbml0X3N0YXRlbWVudCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZW1wdHkgaW5pdGlhbGl6YXRpb24gc3RhdGVtZW50IG9mICclc2VsZWN0e2lmfHN3aXRjaHxyYW5nZS1iYXNlZCBmb3J9MCcgaGFzIG5vIGVmZmVjdCIsIDIwNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fZXhjZXB0aW9uX3NwZWNfZGVwcmVjYXRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZHluYW1pYyBleGNlcHRpb24gc3BlY2lmaWNhdGlvbnMgYXJlIGRlcHJlY2F0ZWQiLCAxNjcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNykKIERJQUcod2Fybl9leHBlY3RlZF9jb25zaXN0ZW50X3ZlcnNpb25fc2VwYXJhdG9yLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2Ugc2FtZSB2ZXJzaW9uIG51bWJlciBzZXBhcmF0b3JzICdfJyBvciAnLic7IGFzIGluICdtYWpvclsubWlub3JbLnN1Ym1pbm9yXV0nIiwgNTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyh3YXJuX2V4cGVjdGVkX3F1YWxpZmllZF9hZnRlcl90eXBlbmFtZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBlY3RlZCBhIHF1YWxpZmllZCBuYW1lIGFmdGVyICd0eXBlbmFtZSciLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9leHRyYV9zZW1pX2FmdGVyX21lbV9mbl9kZWYsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImV4dHJhICc7JyBhZnRlciBtZW1iZXIgZnVuY3Rpb24gZGVmaW5pdGlvbiIsIDIxNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fZXh0cmFfc2VtaV9hZnRlcl9tZW1fZm5fZGVmLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJleHRyYSAnOycgYWZ0ZXIgbWVtYmVyIGZ1bmN0aW9uIGRlZmluaXRpb24iLCAyMjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyh3YXJuX2ZpbGVfYXNtX3ZvbGF0aWxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtZWFuaW5nbGVzcyAndm9sYXRpbGUnIG9uIGFzbSBvdXRzaWRlIGZ1bmN0aW9uIiwgMzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxMikKLURJQUcod2Fybl9nY2NfYXR0cmlidXRlX2xvY2F0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJHQ0MgZG9lcyBub3QgYWxsb3cgYW4gYXR0cmlidXRlIGluIHRoaXMgcG9zaXRpb24gb24gYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiIsIDI0MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fZ2NjX3ZhcmlhYmxlX2RlY2xfaW5fZm9yX2xvb3AsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIkdDQyBkb2VzIG5vdCBhbGxvdyB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgaW4gZm9yIGxvb3AgaW5pdGlhbGl6ZXJzIGJlZm9yZSBDOTkiLCAyNDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX21pY3Jvc29mdF9kZXBlbmRlbnRfZXhpc3RzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZXBlbmRlbnQgJXNlbGVjdHtfX2lmX25vdF9leGlzdHN8X19pZl9leGlzdHN9MCBkZWNsYXJhdGlvbnMgYXJlIGlnbm9yZWQiLCAzNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX21pY3Jvc29mdF9xdWFsaWZpZXJzX2lnbm9yZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInF1YWxpZmllcnMgYWZ0ZXIgY29tbWEgaW4gZGVjbGFyYXRvciBsaXN0IGFyZSBpZ25vcmVkIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9nY2NfYXR0cmlidXRlX2xvY2F0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJHQ0MgZG9lcyBub3QgYWxsb3cgYW4gYXR0cmlidXRlIGluIHRoaXMgcG9zaXRpb24gb24gYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiIsIDI1MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fZ2NjX3ZhcmlhYmxlX2RlY2xfaW5fZm9yX2xvb3AsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIkdDQyBkb2VzIG5vdCBhbGxvdyB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgaW4gZm9yIGxvb3AgaW5pdGlhbGl6ZXJzIGJlZm9yZSBDOTkiLCAyNTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX21pY3Jvc29mdF9kZXBlbmRlbnRfZXhpc3RzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZXBlbmRlbnQgJXNlbGVjdHtfX2lmX25vdF9leGlzdHN8X19pZl9leGlzdHN9MCBkZWNsYXJhdGlvbnMgYXJlIGlnbm9yZWQiLCAzODMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX21pY3Jvc29mdF9xdWFsaWZpZXJzX2lnbm9yZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInF1YWxpZmllcnMgYWZ0ZXIgY29tbWEgaW4gZGVjbGFyYXRvciBsaXN0IGFyZSBpZ25vcmVkIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKIERJQUcod2Fybl9taXNwbGFjZWRfZWxsaXBzaXNfdmFyYXJnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInLi4uJyBpbiB0aGlzIGxvY2F0aW9uIGNyZWF0ZXMgYSBDLXN0eWxlIHZhcmFyZ3MgZnVuY3Rpb24lc2VsZWN0eywgbm90IGEgZnVuY3Rpb24gcGFyYW1ldGVyIHBhY2t8fTAiLCAxOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCiBESUFHKHdhcm5fbWlzc2luZ19kZXBlbmRlbnRfdGVtcGxhdGVfa2V5d29yZCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2UgJ3RlbXBsYXRlJyBrZXl3b3JkIHRvIHRyZWF0ICclMCcgYXMgYSBkZXBlbmRlbnQgdGVtcGxhdGUgbmFtZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX21pc3Npbmdfc2VsZWN0b3JfbmFtZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgdXNlZCBhcyB0aGUgbmFtZSBvZiB0aGUgcHJldmlvdXMgcGFyYW1ldGVyIHJhdGhlciB0aGFuIGFzIHBhcnQgb2YgdGhlIHNlbGVjdG9yIiwgNDA2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9taXNzaW5nX3NlbGVjdG9yX25hbWUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIHVzZWQgYXMgdGhlIG5hbWUgb2YgdGhlIHByZXZpb3VzIHBhcmFtZXRlciByYXRoZXIgdGhhbiBhcyBwYXJ0IG9mIHRoZSBzZWxlY3RvciIsIDQxNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fbnVsbF9zdGF0ZW1lbnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImVtcHR5IGV4cHJlc3Npb24gc3RhdGVtZW50IGhhcyBubyBlZmZlY3Q7IHJlbW92ZSB1bm5lY2Vzc2FyeSAnOycgdG8gc2lsZW5jZSB0aGlzIHdhcm5pbmciLCAyMjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQogRElBRyh3YXJuX29iamNfcHJvdG9jb2xfcXVhbGlmaWVyX21pc3NpbmdfaWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInByb3RvY29sIGhhcyBubyBvYmplY3QgdHlwZSBzcGVjaWZpZWQ7IGRlZmF1bHRzIHRvIHF1YWxpZmllZCAnaWQnIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fb21wX2V4dHJhX3Rva2Vuc19hdF9lb2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4dHJhIHRva2VucyBhdCB0aGUgZW5kIG9mICcjcHJhZ21hIG9tcCAlMCcgYXJlIGlnbm9yZWQiLCAyMTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX3ByYWdtYV9hbGlnbl9leHBlY3RlZF9lcXVhbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwZWN0ZWQgJz0nIGZvbGxvd2luZyAnI3ByYWdtYSAlc2VsZWN0e2FsaWdufG9wdGlvbnMgYWxpZ259MCcgLSBpZ25vcmVkIiwgMjc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9wcmFnbWFfYWxpZ25faW52YWxpZF9vcHRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImludmFsaWQgYWxpZ25tZW50IG9wdGlvbiBpbiAnI3ByYWdtYSAlc2VsZWN0e2FsaWdufG9wdGlvbnMgYWxpZ259MCcgLSBpZ25vcmVkIiwgMjc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9wcmFnbWFfYmVnaW5fZW5kX21pc21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJPcGVuQ0wgZXh0ZW5zaW9uIGVuZCBkaXJlY3RpdmUgbWlzbWF0Y2hlcyBiZWdpbiBkaXJlY3RpdmUgLSBpZ25vcmluZyIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fcHJhZ21hX2NvbW1lbnRfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJyNwcmFnbWEgY29tbWVudCAlMCcgaWdub3JlZCIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fcHJhZ21hX2V4cGVjdGVkX2FjdGlvbl9vcl9yX3BhcmVuLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBlY3RlZCBhY3Rpb24gb3IgJyknIGluICcjcHJhZ21hICUwJyAtIGlnbm9yZWQiLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX3ByYWdtYV9leHBlY3RlZF9jb2xvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWlzc2luZyAnOicgYWZ0ZXIgJTAgLSBpZ25vcmluZyIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fcHJhZ21hX2V4cGVjdGVkX2NvbG9uX3JfcGFyZW4sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm1pc3NpbmcgJzonIG9yICcpJyBhZnRlciAlMCAtIGlnbm9yaW5nIiwgMjc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9wcmFnbWFfZXhwZWN0ZWRfY29tbWEsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkICcsJyBpbiAnI3ByYWdtYSAlMCciLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX3ByYWdtYV9leHBlY3RlZF9pZGVudGlmaWVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBlY3RlZCBpZGVudGlmaWVyIGluICcjcHJhZ21hICUwJyAtIGlnbm9yZWQiLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX3ByYWdtYV9leHBlY3RlZF9pbml0X3NlZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwZWN0ZWQgJ2NvbXBpbGVyJywgJ2xpYicsICd1c2VyJywgb3IgYSBzdHJpbmcgbGl0ZXJhbCBmb3IgdGhlIHNlY3Rpb24gbmFtZSBpbiAnI3ByYWdtYSAlMCcgLSBpZ25vcmVkIiwgMjc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9wcmFnbWFfZXhwZWN0ZWRfaW50ZWdlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwZWN0ZWQgaW50ZWdlciBiZXR3ZWVuICUwIGFuZCAlMSBpbmNsdXNpdmUgaW4gJyNwcmFnbWEgJTInIC0gaWdub3JlZCIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fcHJhZ21hX2V4cGVjdGVkX2xwYXJlbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWlzc2luZyAnKCcgYWZ0ZXIgJyNwcmFnbWEgJTAnIC0gaWdub3JpbmciLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX3ByYWdtYV9leHBlY3RlZF9ub25fd2lkZV9zdHJpbmcsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkIG5vbi13aWRlIHN0cmluZyBsaXRlcmFsIGluICcjcHJhZ21hICUwJyIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fcHJhZ21hX2V4cGVjdGVkX3ByZWRpY2F0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwZWN0ZWQgJXNlbGVjdHsnZW5hYmxlJywgJ2Rpc2FibGUnLCAnYmVnaW4nIG9yICdlbmQnfCdkaXNhYmxlJ30wIC0gaWdub3JpbmciLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX3ByYWdtYV9leHBlY3RlZF9wdW5jLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBlY3RlZCAnKScgb3IgJywnIGluICcjcHJhZ21hICUwJyIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fcHJhZ21hX2V4cGVjdGVkX3JwYXJlbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWlzc2luZyAnKScgYWZ0ZXIgJyNwcmFnbWEgJTAnIC0gaWdub3JpbmciLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX3ByYWdtYV9leHBlY3RlZF9zZWN0aW9uX2xhYmVsX29yX25hbWUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkIGEgc3RhY2sgbGFiZWwgb3IgYSBzdHJpbmcgbGl0ZXJhbCBmb3IgdGhlIHNlY3Rpb24gbmFtZSBpbiAnI3ByYWdtYSAlMCcgLSBpZ25vcmVkIiwgMjc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9wcmFnbWFfZXhwZWN0ZWRfc2VjdGlvbl9uYW1lLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBlY3RlZCBhIHN0cmluZyBsaXRlcmFsIGZvciB0aGUgc2VjdGlvbiBuYW1lIGluICcjcHJhZ21hICUwJyAtIGlnbm9yZWQiLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX3ByYWdtYV9leHBlY3RlZF9zZWN0aW9uX3B1c2hfcG9wX29yX25hbWUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkIHB1c2gsIHBvcCBvciBhIHN0cmluZyBsaXRlcmFsIGZvciB0aGUgc2VjdGlvbiBuYW1lIGluICcjcHJhZ21hICUwJyAtIGlnbm9yZWQiLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX3ByYWdtYV9leHBlY3RlZF9zdHJpbmcsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkIHN0cmluZyBsaXRlcmFsIGluICcjcHJhZ21hICUwJyAtIGlnbm9yaW5nIiwgMjc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9wcmFnbWFfZXh0ZW5zaW9uX2lzX2NvcmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIk9wZW5DTCBleHRlbnNpb24gJTAgaXMgY29yZSBmZWF0dXJlIG9yIHN1cHBvcnRlZCBvcHRpb25hbCBjb3JlIGZlYXR1cmUgLSBpZ25vcmluZyIsIDUxNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fcHJhZ21hX2V4dHJhX3Rva2Vuc19hdF9lb2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4dHJhIHRva2VucyBhdCBlbmQgb2YgJyNwcmFnbWEgJTAnIC0gaWdub3JlZCIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fcHJhZ21hX2ZvcmNlX2N1ZGFfaG9zdF9kZXZpY2VfYmFkX2FyZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5jb3JyZWN0IHVzZSBvZiAjcHJhZ21hIGNsYW5nIGZvcmNlX2N1ZGFfaG9zdF9kZXZpY2UgYmVnaW58ZW5kIiwgMjc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9wcmFnbWFfaW5pdF9zZWdfdW5zdXBwb3J0ZWRfdGFyZ2V0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInI3ByYWdtYSBpbml0X3NlZycgaXMgb25seSBzdXBwb3J0ZWQgd2hlbiB0YXJnZXRpbmcgYSBNaWNyb3NvZnQgZW52aXJvbm1lbnQiLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX3ByYWdtYV9pbnRyaW5zaWNfYnVpbHRpbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgaXMgbm90IGEgcmVjb2duaXplZCBidWlsdGluJXNlbGVjdHt8OyBjb25zaWRlciBpbmNsdWRpbmcgPGludHJpbi5oPiB0byBhY2Nlc3Mgbm9uLWJ1aWx0aW4gaW50cmluc2ljc30xIiwgMjc2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9wcmFnbWFfaW52YWxpZF9hY3Rpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVua25vd24gYWN0aW9uIGZvciAnI3ByYWdtYSAlMCcgLSBpZ25vcmVkIiwgMjc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9wcmFnbWFfaW52YWxpZF9hcmd1bWVudCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5leHBlY3RlZCBhcmd1bWVudCAnJTAnIHRvICcjcHJhZ21hICUxJyVzZWxlY3R7fDsgZXhwZWN0ZWQgJTN9MiIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fcHJhZ21hX2ludmFsaWRfc3BlY2lmaWNfYWN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmtub3duIGFjdGlvbiAnJTEnIGZvciAnI3ByYWdtYSAlMCcgLSBpZ25vcmVkIiwgMjc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9wcmFnbWFfbWlzc2luZ19hcmd1bWVudCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWlzc2luZyBhcmd1bWVudCB0byAnI3ByYWdtYSAlMCclc2VsZWN0e3w7IGV4cGVjdGVkICUyfTEiLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX3ByYWdtYV9tc19zdHJ1Y3QsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluY29ycmVjdCB1c2Ugb2YgJyNwcmFnbWEgbXNfc3RydWN0IG9ufG9mZicgLSBpZ25vcmVkIiwgMjc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9wcmFnbWFfb21wX2lnbm9yZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVuZXhwZWN0ZWQgJyNwcmFnbWEgb21wIC4uLicgaW4gcHJvZ3JhbSIsIDYwMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fcHJhZ21hX29wdGltaXplLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInI3ByYWdtYSBvcHRpbWl6ZScgaXMgbm90IHN1cHBvcnRlZCIsIDI3NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fcHJhZ21hX29wdGlvbnNfZXhwZWN0ZWRfYWxpZ24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkICdhbGlnbicgZm9sbG93aW5nICcjcHJhZ21hIG9wdGlvbnMnIC0gaWdub3JlZCIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fcHJhZ21hX3BhY2tfbWFsZm9ybWVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBlY3RlZCBpbnRlZ2VyIG9yIGlkZW50aWZpZXIgaW4gJyNwcmFnbWEgcGFjaycgLSBpZ25vcmVkIiwgMjc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9wcmFnbWFfdW5rbm93bl9leHRlbnNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVua25vd24gT3BlbkNMIGV4dGVuc2lvbiAlMCAtIGlnbm9yaW5nIiwgMjc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9wcmFnbWFfdW5yb2xsX2N1ZGFfdmFsdWVfaW5fcGFyZW5zLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhcmd1bWVudCB0byAnI3ByYWdtYSB1bnJvbGwnIHNob3VsZCBub3QgYmUgaW4gcGFyZW50aGVzZXMgaW4gQ1VEQSBDL0MrKyIsIDE0NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fcHJhZ21hX3Vuc3VwcG9ydGVkX2FjdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAia25vd24gYnV0IHVuc3VwcG9ydGVkIGFjdGlvbiAnJTEnIGZvciAnI3ByYWdtYSAlMCcgLSBpZ25vcmVkIiwgMjc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9wcmFnbWFfdW5zdXBwb3J0ZWRfZXh0ZW5zaW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bnN1cHBvcnRlZCBPcGVuQ0wgZXh0ZW5zaW9uICUwIC0gaWdub3JpbmciLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX3ByYWdtYV91bnVzZWRfZXhwZWN0ZWRfdmFyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBlY3RlZCAnI3ByYWdtYSB1bnVzZWQnIGFyZ3VtZW50IHRvIGJlIGEgdmFyaWFibGUgbmFtZSIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCi1ESUFHKHdhcm5fc2VtaWNvbG9uX2JlZm9yZV9tZXRob2RfYm9keSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAic2VtaWNvbG9uIGJlZm9yZSBtZXRob2QgYm9keSBpcyBpZ25vcmVkIiwgNTczLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKLURJQUcod2Fybl9zdGF0aWNfaW5saW5lX2V4cGxpY2l0X2luc3RfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWdub3JpbmcgJyVzZWxlY3R7c3RhdGljfGlubGluZX0wJyBrZXl3b3JkIG9uIGV4cGxpY2l0IHRlbXBsYXRlIGluc3RhbnRpYXRpb24iLCA2MDUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQotRElBRyh3YXJuX3N0ZGNfZmVudl9hY2Nlc3Nfbm90X3N1cHBvcnRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJhZ21hIFNUREMgRkVOVl9BQ0NFU1MgT04gaXMgbm90IHN1cHBvcnRlZCwgaWdub3JpbmcgcHJhZ21hIiwgNjgzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9vbXBfZXh0cmFfdG9rZW5zX2F0X2VvbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXh0cmEgdG9rZW5zIGF0IHRoZSBlbmQgb2YgJyNwcmFnbWEgb21wICUwJyBhcmUgaWdub3JlZCIsIDIyNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fcHJhZ21hX2FsaWduX2V4cGVjdGVkX2VxdWFsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBlY3RlZCAnPScgZm9sbG93aW5nICcjcHJhZ21hICVzZWxlY3R7YWxpZ258b3B0aW9ucyBhbGlnbn0wJyAtIGlnbm9yZWQiLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3ByYWdtYV9hbGlnbl9pbnZhbGlkX29wdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW52YWxpZCBhbGlnbm1lbnQgb3B0aW9uIGluICcjcHJhZ21hICVzZWxlY3R7YWxpZ258b3B0aW9ucyBhbGlnbn0wJyAtIGlnbm9yZWQiLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3ByYWdtYV9iZWdpbl9lbmRfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIk9wZW5DTCBleHRlbnNpb24gZW5kIGRpcmVjdGl2ZSBtaXNtYXRjaGVzIGJlZ2luIGRpcmVjdGl2ZSAtIGlnbm9yaW5nIiwgMjg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9wcmFnbWFfY29tbWVudF9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInI3ByYWdtYSBjb21tZW50ICUwJyBpZ25vcmVkIiwgMjg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9wcmFnbWFfZXhwZWN0ZWRfYWN0aW9uX29yX3JfcGFyZW4sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkIGFjdGlvbiBvciAnKScgaW4gJyNwcmFnbWEgJTAnIC0gaWdub3JlZCIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fcHJhZ21hX2V4cGVjdGVkX2NvbG9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtaXNzaW5nICc6JyBhZnRlciAlMCAtIGlnbm9yaW5nIiwgMjg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9wcmFnbWFfZXhwZWN0ZWRfY29sb25fcl9wYXJlbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWlzc2luZyAnOicgb3IgJyknIGFmdGVyICUwIC0gaWdub3JpbmciLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3ByYWdtYV9leHBlY3RlZF9jb21tYSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwZWN0ZWQgJywnIGluICcjcHJhZ21hICUwJyIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fcHJhZ21hX2V4cGVjdGVkX2lkZW50aWZpZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkIGlkZW50aWZpZXIgaW4gJyNwcmFnbWEgJTAnIC0gaWdub3JlZCIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fcHJhZ21hX2V4cGVjdGVkX2luaXRfc2VnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBlY3RlZCAnY29tcGlsZXInLCAnbGliJywgJ3VzZXInLCBvciBhIHN0cmluZyBsaXRlcmFsIGZvciB0aGUgc2VjdGlvbiBuYW1lIGluICcjcHJhZ21hICUwJyAtIGlnbm9yZWQiLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3ByYWdtYV9leHBlY3RlZF9pbnRlZ2VyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBlY3RlZCBpbnRlZ2VyIGJldHdlZW4gJTAgYW5kICUxIGluY2x1c2l2ZSBpbiAnI3ByYWdtYSAlMicgLSBpZ25vcmVkIiwgMjg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9wcmFnbWFfZXhwZWN0ZWRfbHBhcmVuLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtaXNzaW5nICcoJyBhZnRlciAnI3ByYWdtYSAlMCcgLSBpZ25vcmluZyIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fcHJhZ21hX2V4cGVjdGVkX25vbl93aWRlX3N0cmluZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwZWN0ZWQgbm9uLXdpZGUgc3RyaW5nIGxpdGVyYWwgaW4gJyNwcmFnbWEgJTAnIiwgMjg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9wcmFnbWFfZXhwZWN0ZWRfcHJlZGljYXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBlY3RlZCAlc2VsZWN0eydlbmFibGUnLCAnZGlzYWJsZScsICdiZWdpbicgb3IgJ2VuZCd8J2Rpc2FibGUnfTAgLSBpZ25vcmluZyIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fcHJhZ21hX2V4cGVjdGVkX3B1bmMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkICcpJyBvciAnLCcgaW4gJyNwcmFnbWEgJTAnIiwgMjg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9wcmFnbWFfZXhwZWN0ZWRfcnBhcmVuLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtaXNzaW5nICcpJyBhZnRlciAnI3ByYWdtYSAlMCcgLSBpZ25vcmluZyIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fcHJhZ21hX2V4cGVjdGVkX3NlY3Rpb25fbGFiZWxfb3JfbmFtZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwZWN0ZWQgYSBzdGFjayBsYWJlbCBvciBhIHN0cmluZyBsaXRlcmFsIGZvciB0aGUgc2VjdGlvbiBuYW1lIGluICcjcHJhZ21hICUwJyAtIGlnbm9yZWQiLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3ByYWdtYV9leHBlY3RlZF9zZWN0aW9uX25hbWUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkIGEgc3RyaW5nIGxpdGVyYWwgZm9yIHRoZSBzZWN0aW9uIG5hbWUgaW4gJyNwcmFnbWEgJTAnIC0gaWdub3JlZCIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fcHJhZ21hX2V4cGVjdGVkX3NlY3Rpb25fcHVzaF9wb3Bfb3JfbmFtZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwZWN0ZWQgcHVzaCwgcG9wIG9yIGEgc3RyaW5nIGxpdGVyYWwgZm9yIHRoZSBzZWN0aW9uIG5hbWUgaW4gJyNwcmFnbWEgJTAnIC0gaWdub3JlZCIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fcHJhZ21hX2V4cGVjdGVkX3N0cmluZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwZWN0ZWQgc3RyaW5nIGxpdGVyYWwgaW4gJyNwcmFnbWEgJTAnIC0gaWdub3JpbmciLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3ByYWdtYV9leHRlbnNpb25faXNfY29yZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiT3BlbkNMIGV4dGVuc2lvbiAlMCBpcyBjb3JlIGZlYXR1cmUgb3Igc3VwcG9ydGVkIG9wdGlvbmFsIGNvcmUgZmVhdHVyZSAtIGlnbm9yaW5nIiwgNTI4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9wcmFnbWFfZXh0cmFfdG9rZW5zX2F0X2VvbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXh0cmEgdG9rZW5zIGF0IGVuZCBvZiAnI3ByYWdtYSAlMCcgLSBpZ25vcmVkIiwgMjg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9wcmFnbWFfZm9yY2VfY3VkYV9ob3N0X2RldmljZV9iYWRfYXJnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbmNvcnJlY3QgdXNlIG9mICNwcmFnbWEgY2xhbmcgZm9yY2VfY3VkYV9ob3N0X2RldmljZSBiZWdpbnxlbmQiLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3ByYWdtYV9pbml0X3NlZ191bnN1cHBvcnRlZF90YXJnZXQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIicjcHJhZ21hIGluaXRfc2VnJyBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIHRhcmdldGluZyBhIE1pY3Jvc29mdCBlbnZpcm9ubWVudCIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fcHJhZ21hX2ludHJpbnNpY19idWlsdGluLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBpcyBub3QgYSByZWNvZ25pemVkIGJ1aWx0aW4lc2VsZWN0e3w7IGNvbnNpZGVyIGluY2x1ZGluZyA8aW50cmluLmg+IHRvIGFjY2VzcyBub24tYnVpbHRpbiBpbnRyaW5zaWNzfTEiLCAyODQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3ByYWdtYV9pbnZhbGlkX2FjdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5rbm93biBhY3Rpb24gZm9yICcjcHJhZ21hICUwJyAtIGlnbm9yZWQiLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3ByYWdtYV9pbnZhbGlkX2FyZ3VtZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmV4cGVjdGVkIGFyZ3VtZW50ICclMCcgdG8gJyNwcmFnbWEgJTEnJXNlbGVjdHt8OyBleHBlY3RlZCAlM30yIiwgMjg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9wcmFnbWFfaW52YWxpZF9zcGVjaWZpY19hY3Rpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVua25vd24gYWN0aW9uICclMScgZm9yICcjcHJhZ21hICUwJyAtIGlnbm9yZWQiLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3ByYWdtYV9taXNzaW5nX2FyZ3VtZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtaXNzaW5nIGFyZ3VtZW50IHRvICcjcHJhZ21hICUwJyVzZWxlY3R7fDsgZXhwZWN0ZWQgJTJ9MSIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fcHJhZ21hX21zX3N0cnVjdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5jb3JyZWN0IHVzZSBvZiAnI3ByYWdtYSBtc19zdHJ1Y3Qgb258b2ZmJyAtIGlnbm9yZWQiLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3ByYWdtYV9vbXBfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW5leHBlY3RlZCAnI3ByYWdtYSBvbXAgLi4uJyBpbiBwcm9ncmFtIiwgNjEzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9wcmFnbWFfb3B0aW1pemUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIicjcHJhZ21hIG9wdGltaXplJyBpcyBub3Qgc3VwcG9ydGVkIiwgMjg1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9wcmFnbWFfb3B0aW9uc19leHBlY3RlZF9hbGlnbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwZWN0ZWQgJ2FsaWduJyBmb2xsb3dpbmcgJyNwcmFnbWEgb3B0aW9ucycgLSBpZ25vcmVkIiwgMjg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9wcmFnbWFfcGFja19tYWxmb3JtZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkIGludGVnZXIgb3IgaWRlbnRpZmllciBpbiAnI3ByYWdtYSBwYWNrJyAtIGlnbm9yZWQiLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3ByYWdtYV91bmtub3duX2V4dGVuc2lvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5rbm93biBPcGVuQ0wgZXh0ZW5zaW9uICUwIC0gaWdub3JpbmciLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3ByYWdtYV91bnJvbGxfY3VkYV92YWx1ZV9pbl9wYXJlbnMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFyZ3VtZW50IHRvICcjcHJhZ21hIHVucm9sbCcgc2hvdWxkIG5vdCBiZSBpbiBwYXJlbnRoZXNlcyBpbiBDVURBIEMvQysrIiwgMTQ3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9wcmFnbWFfdW5zdXBwb3J0ZWRfYWN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJrbm93biBidXQgdW5zdXBwb3J0ZWQgYWN0aW9uICclMScgZm9yICcjcHJhZ21hICUwJyAtIGlnbm9yZWQiLCAyODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3ByYWdtYV91bnN1cHBvcnRlZF9leHRlbnNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVuc3VwcG9ydGVkIE9wZW5DTCBleHRlbnNpb24gJTAgLSBpZ25vcmluZyIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fcHJhZ21hX3VudXNlZF9leHBlY3RlZF92YXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkICcjcHJhZ21hIHVudXNlZCcgYXJndW1lbnQgdG8gYmUgYSB2YXJpYWJsZSBuYW1lIiwgMjg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNCkKK0RJQUcod2Fybl9zZW1pY29sb25fYmVmb3JlX21ldGhvZF9ib2R5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJzZW1pY29sb24gYmVmb3JlIG1ldGhvZCBib2R5IGlzIGlnbm9yZWQiLCA1ODUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3N0YXRpY19pbmxpbmVfZXhwbGljaXRfaW5zdF9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpZ25vcmluZyAnJXNlbGVjdHtzdGF0aWN8aW5saW5lfTAnIGtleXdvcmQgb24gZXhwbGljaXQgdGVtcGxhdGUgaW5zdGFudGlhdGlvbiIsIDYxOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCitESUFHKHdhcm5fc3RkY19mZW52X2FjY2Vzc19ub3Rfc3VwcG9ydGVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcmFnbWEgU1REQyBGRU5WX0FDQ0VTUyBPTiBpcyBub3Qgc3VwcG9ydGVkLCBpZ25vcmluZyBwcmFnbWEiLCA2OTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA0KQorRElBRyh3YXJuX3dyb25nX2NsYW5nX2F0dHJfbmFtZXNwYWNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInX19jbGFuZ19fJyBpcyBhIHByZWRlZmluZWQgbWFjcm8gbmFtZSwgbm90IGFuIGF0dHJpYnV0ZSBzY29wZSBzcGVjaWZpZXI7IGRpZCB5b3UgbWVhbiAnX0NsYW5nJyBpbnN0ZWFkPyIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDQpCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljUmVmYWN0b3JpbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNSZWZhY3RvcmluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZWQwMTYKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljUmVmYWN0b3JpbmcuaApAQCAtMCwwICsxLDI4IEBACisvLz09PS0tLSBEaWFnbm9zdGljUmVmYWN0b3JpbmcuaCAtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fQ0xBTkdfQkFTSUNfRElBR05PU1RJQ1JFRkFDVE9SSU5HX0gKKyNkZWZpbmUgTExWTV9DTEFOR19CQVNJQ19ESUFHTk9TVElDUkVGQUNUT1JJTkdfSAorCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpYy5oIgorCituYW1lc3BhY2UgY2xhbmcgeworbmFtZXNwYWNlIGRpYWcgeworZW51bSB7CisjZGVmaW5lIERJQUcoRU5VTSwgRkxBR1MsIERFRkFVTFRfTUFQUElORywgREVTQywgR1JPVVAsIFNGSU5BRSwgTk9XRVJST1IsICAgICAgXAorICAgICAgICAgICAgIFNIT1dJTlNZU0hFQURFUiwgQ0FURUdPUlkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRU5VTSwKKyNkZWZpbmUgUkVGQUNUT1JJTkdTVEFSVAorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNSZWZhY3RvcmluZ0tpbmRzLmluYyIKKyN1bmRlZiBESUFHCisgIE5VTV9CVUlMVElOX1JFRkFDVE9SSU5HX0RJQUdOT1NUSUNTCit9OworfSAvLyBlbmQgbmFtZXNwYWNlIGRpYWcKK30gLy8gZW5kIG5hbWVzcGFjZSBjbGFuZworCisjZW5kaWYgLy8gTExWTV9DTEFOR19CQVNJQ19ESUFHTk9TVElDUkVGQUNUT1JJTkdfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY1NlbWEuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNTZW1hLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJhNmI5NwotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNTZW1hLmgKQEAgLTAsMCArMSwyOCBAQAorLy89PT0tLS0gRGlhZ25vc3RpY1NlbWEuaCAtIERpYWdub3N0aWNzIGZvciBsaWJzZW1hIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0NMQU5HX0JBU0lDX0RJQUdOT1NUSUNTRU1BX0gKKyNkZWZpbmUgTExWTV9DTEFOR19CQVNJQ19ESUFHTk9TVElDU0VNQV9ICisKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljLmgiCisKK25hbWVzcGFjZSBjbGFuZyB7CituYW1lc3BhY2UgZGlhZyB7CitlbnVtIHsKKyNkZWZpbmUgRElBRyhFTlVNLCBGTEFHUywgREVGQVVMVF9NQVBQSU5HLCBERVNDLCBHUk9VUCwgU0ZJTkFFLCBOT1dFUlJPUiwgICAgICBcCisgICAgICAgICAgICAgU0hPV0lOU1lTSEVBREVSLCBDQVRFR09SWSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBFTlVNLAorI2RlZmluZSBTRU1BU1RBUlQKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljU2VtYUtpbmRzLmluYyIKKyN1bmRlZiBESUFHCisgIE5VTV9CVUlMVElOX1NFTUFfRElBR05PU1RJQ1MKK307Cit9IC8vIGVuZCBuYW1lc3BhY2UgZGlhZworfSAvLyBlbmQgbmFtZXNwYWNlIGNsYW5nCisKKyNlbmRpZiAvLyBMTFZNX0NMQU5HX0JBU0lDX0RJQUdOT1NUSUNTRU1BX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNTZW1hS2luZHMuaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY1NlbWFLaW5kcy5pbmMKaW5kZXggOTc4ZTM0NS4uZjdhYWUxNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY1NlbWFLaW5kcy5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY1NlbWFLaW5kcy5pbmMKQEAgLTI3LDYgKzI3LDcgQEAKIERJQUcoZXJyX2FkZHJfb3ZsX25vX3ZpYWJsZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhZGRyZXNzIG9mIG92ZXJsb2FkZWQgZnVuY3Rpb24gJTAgZG9lcyBub3QgbWF0Y2ggcmVxdWlyZWQgdHlwZSAlMSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2FkZHJfb3ZsX25vdF9mdW5jX3B0cnJlZiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhZGRyZXNzIG9mIG92ZXJsb2FkZWQgZnVuY3Rpb24gJTAgY2Fubm90IGJlIGNvbnZlcnRlZCB0byB0eXBlICUxIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfYWRkcmVzc19vZl9mdW5jdGlvbl93aXRoX3Bhc3Nfb2JqZWN0X3NpemVfcGFyYW1zLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNhbm5vdCB0YWtlIGFkZHJlc3Mgb2YgZnVuY3Rpb24gJTAgYmVjYXVzZSBwYXJhbWV0ZXIgJTEgaGFzIHBhc3Nfb2JqZWN0X3NpemUgYXR0cmlidXRlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfYWRkcmVzc19zcGFjZV9taXNtYXRjaF90ZW1wbF9pbnN0LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNvbmZsaWN0aW5nIGFkZHJlc3Mgc3BhY2UgcXVhbGlmaWVycyBhcmUgcHJvdmlkZWQgYmV0d2VlbiB0eXBlcyAlMCBhbmQgJTEiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9hZGRyZXNzX3NwYWNlX3F1YWxpZmllZF9kZWxldGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJ2RlbGV0ZScgY2Fubm90IGRlbGV0ZSBvYmplY3RzIG9mIHR5cGUgJTAgaW4gYWRkcmVzcyBzcGFjZSAnJTEnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfYWRkcmVzc19zcGFjZV9xdWFsaWZpZWRfbmV3LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiduZXcnIGNhbm5vdCBhbGxvY2F0ZSBvYmplY3RzIG9mIHR5cGUgJTAgaW4gYWRkcmVzcyBzcGFjZSAnJTEnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfYWRkcm9mX2Z1bmN0aW9uX2Rpc2FibGVkX2J5X2VuYWJsZV9pZl9hdHRyLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNhbm5vdCB0YWtlIGFkZHJlc3Mgb2YgZnVuY3Rpb24gJTAgYmVjYXVzZSBpdCBoYXMgb25lIG9yIG1vcmUgbm9uLXRhdXRvbG9naWNhbCBlbmFibGVfaWYgY29uZGl0aW9ucyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKQEAgLTM2LDcgKzM3LDYgQEAKIERJQUcoZXJyX2FsaWFzX25vdF9zdXBwb3J0ZWRfb25fbnZwdHgsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiQ1VEQSBkb2VzIG5vdCBzdXBwb3J0IGFsaWFzZXMiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9hbGlhc190ZW1wbGF0ZV9leHBhbnNpb25faW50b19maXhlZF9saXN0LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInBhY2sgZXhwYW5zaW9uIHVzZWQgYXMgYXJndW1lbnQgZm9yIG5vbi1wYWNrIHBhcmFtZXRlciBvZiBhbGlhcyB0ZW1wbGF0ZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2FsaWFzX3RlbXBsYXRlX2V4dHJhX2hlYWRlcnMsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZXh0cmFuZW91cyB0ZW1wbGF0ZSBwYXJhbWV0ZXIgbGlzdCBpbiBhbGlhcyB0ZW1wbGF0ZSBkZWNsYXJhdGlvbiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKLURJQUcoZXJyX2FsaWFzX3RvX3VuZGVmaW5lZCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlc2VsZWN0e2FsaWFzfGlmdW5jfTAgbXVzdCBwb2ludCB0byBhIGRlZmluZWQgJXNlbGVjdHt2YXJpYWJsZSBvciB8fTFmdW5jdGlvbiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2FsaWduX3ZhbHVlX2F0dHJpYnV0ZV9hcmd1bWVudF9ub3RfaW50LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIidhbGlnbl92YWx1ZScgYXR0cmlidXRlIHJlcXVpcmVzIGludGVnZXIgY29uc3RhbnQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9hbGlnbmFzX2F0dHJpYnV0ZV93cm9uZ19kZWNsX3R5cGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJTAgYXR0cmlidXRlIGNhbm5vdCBiZSBhcHBsaWVkIHRvIGEgJXNlbGVjdHtmdW5jdGlvbiBwYXJhbWV0ZXJ8dmFyaWFibGUgd2l0aCAncmVnaXN0ZXInIHN0b3JhZ2UgY2xhc3N8J2NhdGNoJyB2YXJpYWJsZXxiaXQtZmllbGR9MSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2FsaWduYXNfbWlzbWF0Y2gsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAicmVkZWNsYXJhdGlvbiBoYXMgZGlmZmVyZW50IGFsaWdubWVudCByZXF1aXJlbWVudCAoJTEgdnMgJTApIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQpAQCAtMTMyLDcgKzEzMiw3IEBACiBESUFHKGVycl9hcnJheV9pbml0X25vbl9jb25zdGFudF9hcnJheSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjYW5ub3QgaW5pdGlhbGl6ZSBhcnJheSAlZGlmZntvZiB0eXBlICQgd2l0aCBub24tY29uc3RhbnQgYXJyYXkgb2YgdHlwZSAkfHdpdGggZGlmZmVyZW50IHR5cGUgb2YgYXJyYXl9MCwxIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfYXJyYXlfaW5pdF9ub3RfaW5pdF9saXN0LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImFycmF5IGluaXRpYWxpemVyIG11c3QgYmUgYW4gaW5pdGlhbGl6ZXIgbGlzdCVzZWxlY3R7fCBvciBzdHJpbmcgbGl0ZXJhbHwgb3Igd2lkZSBzdHJpbmcgbGl0ZXJhbH0wIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfYXJyYXlfaW5pdF9wbGFpbl9zdHJpbmdfaW50b19jaGFyOF90LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImluaXRpYWxpemluZyAnY2hhcjhfdCcgYXJyYXkgd2l0aCBwbGFpbiBzdHJpbmcgbGl0ZXJhbCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKLURJQUcoZXJyX2FycmF5X2luaXRfdXRmOF9zdHJpbmdfaW50b19jaGFyLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImluaXRpYWxpemF0aW9uIG9mIGNoYXIgYXJyYXkgd2l0aCBVVEYtOCBzdHJpbmcgbGl0ZXJhbCBpcyBub3QgcGVybWl0dGVkIGJ5ICctZmNoYXI4X3QnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfYXJyYXlfaW5pdF91dGY4X3N0cmluZ19pbnRvX2NoYXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJXNlbGVjdHt8SVNPIEMrKzIwIGRvZXMgbm90IHBlcm1pdCB9MGluaXRpYWxpemF0aW9uIG9mIGNoYXIgYXJyYXkgd2l0aCBVVEYtOCBzdHJpbmcgbGl0ZXJhbCVzZWxlY3R7IGlzIG5vdCBwZXJtaXR0ZWQgYnkgJy1mY2hhcjhfdCd8fTAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9hcnJheV9pbml0X3dpZGVfc3RyaW5nX2ludG9fY2hhciwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbml0aWFsaXppbmcgY2hhciBhcnJheSB3aXRoIHdpZGUgc3RyaW5nIGxpdGVyYWwiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9hcnJheV9uZXdfbmVlZHNfc2l6ZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhcnJheSBzaXplIG11c3QgYmUgc3BlY2lmaWVkIGluIG5ldyBleHByZXNzaW9ucyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2FycmF5X29mX2Fic3RyYWN0X3R5cGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiYXJyYXkgb2YgYWJzdHJhY3QgY2xhc3MgdHlwZSAlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKQEAgLTE1OSw3ICsxNTksNiBAQAogRElBRyhlcnJfYXNtX2ludmFsaWRfbHZhbHVlX2luX291dHB1dCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIGx2YWx1ZSBpbiBhc20gb3V0cHV0IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMikKIERJQUcoZXJyX2FzbV9pbnZhbGlkX291dHB1dF9jb25zdHJhaW50LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgb3V0cHV0IGNvbnN0cmFpbnQgJyUwJyBpbiBhc20iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDEyKQogRElBRyhlcnJfYXNtX2ludmFsaWRfb3V0cHV0X3NpemUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW52YWxpZCBvdXRwdXQgc2l6ZSBmb3IgY29uc3RyYWludCAnJTAnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMikKLURJQUcoZXJyX2FzbV9pbnZhbGlkX3R5cGVfaW5faW5wdXQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW52YWxpZCB0eXBlICUwIGluIGFzbSBpbnB1dCBmb3IgY29uc3RyYWludCAnJTEnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMikKIERJQUcoZXJyX2FzbV9uYWtlZF9wYXJtX3JlZiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJwYXJhbWV0ZXIgcmVmZXJlbmNlcyBub3QgYWxsb3dlZCBpbiBuYWtlZCBmdW5jdGlvbnMiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9hc21fbmFrZWRfdGhpc19yZWYsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJ3RoaXMnIHBvaW50ZXIgcmVmZXJlbmNlcyBub3QgYWxsb3dlZCBpbiBuYWtlZCBmdW5jdGlvbnMiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9hc21fbm9uX2FkZHJfdmFsdWVfaW5fbWVtb3J5X2NvbnN0cmFpbnQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAicmVmZXJlbmNlIHRvIGEgJXNlbGVjdHtiaXQtZmllbGR8dmVjdG9yIGVsZW1lbnR8Z2xvYmFsIHJlZ2lzdGVyIHZhcmlhYmxlfTAgaW4gYXNtICVzZWxlY3R7aW5wdXR8b3V0cHV0fTEgd2l0aCBhIG1lbW9yeSBjb25zdHJhaW50ICclMiciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDEyKQpAQCAtMjAyLDggKzIwMSw4IEBACiBESUFHKGVycl9hdHRyaWJ1dGVfYXJndW1lbnRfaXNfemVybywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlMCBhdHRyaWJ1dGUgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2F0dHJpYnV0ZV9hcmd1bWVudF9uX3R5cGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJTAgYXR0cmlidXRlIHJlcXVpcmVzIHBhcmFtZXRlciAlMSB0byBiZSAlc2VsZWN0e2ludCBvciBib29sfGFuIGludGVnZXIgY29uc3RhbnR8YSBzdHJpbmd8YW4gaWRlbnRpZmllcn0yIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfYXR0cmlidXRlX2FyZ3VtZW50X291dF9vZl9ib3VuZHMsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJTAgYXR0cmlidXRlIHBhcmFtZXRlciAlMSBpcyBvdXQgb2YgYm91bmRzIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQotRElBRyhlcnJfYXR0cmlidXRlX2FyZ3VtZW50X291dF9vZl9yYW5nZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlMCBhdHRyaWJ1dGUgcGFyYW1ldGVyICUxIGlzIG91dCBvZiBib3VuZHM6ICVwbHVyYWx7MDpubyBwYXJhbWV0ZXJzIHRvIGluZGV4IGludG98MTpjYW4gb25seSBiZSAxLCBzaW5jZSB0aGVyZSBpcyBvbmUgcGFyYW1ldGVyfDptdXN0IGJlIGJldHdlZW4gMSBhbmQgJTJ9MiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKLURJQUcoZXJyX2F0dHJpYnV0ZV9hcmd1bWVudF9vdXRvZl9yYW5nZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlMCBhdHRyaWJ1dGUgcmVxdWlyZXMgaW50ZWdlciBjb25zdGFudCBiZXR3ZWVuICUxIGFuZCAlMiBpbmNsdXNpdmUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCitESUFHKGVycl9hdHRyaWJ1dGVfYXJndW1lbnRfb3V0X29mX2JvdW5kc19leHRyYV9pbmZvLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiUwIGF0dHJpYnV0ZSBwYXJhbWV0ZXIgJTEgaXMgb3V0IG9mIGJvdW5kczogJXBsdXJhbHswOm5vIHBhcmFtZXRlcnMgdG8gaW5kZXggaW50b3wxOmNhbiBvbmx5IGJlIDEsIHNpbmNlIHRoZXJlIGlzIG9uZSBwYXJhbWV0ZXJ8Om11c3QgYmUgYmV0d2VlbiAxIGFuZCAlMn0yIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfYXR0cmlidXRlX2FyZ3VtZW50X291dF9vZl9yYW5nZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlMCBhdHRyaWJ1dGUgcmVxdWlyZXMgaW50ZWdlciBjb25zdGFudCBiZXR3ZWVuICUxIGFuZCAlMiBpbmNsdXNpdmUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9hdHRyaWJ1dGVfYXJndW1lbnRfdHlwZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlMCBhdHRyaWJ1dGUgcmVxdWlyZXMgJXNlbGVjdHtpbnQgb3IgYm9vbHxhbiBpbnRlZ2VyIGNvbnN0YW50fGEgc3RyaW5nfGFuIGlkZW50aWZpZXJ9MSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2F0dHJpYnV0ZV9hcmd1bWVudF92ZWNfdHlwZV9oaW50LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgYXR0cmlidXRlIGFyZ3VtZW50ICUwIC0gZXhwZWN0aW5nIGEgdmVjdG9yIG9yIHZlY3Rvcml6YWJsZSBzY2FsYXIgdHlwZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2F0dHJpYnV0ZV9iYWRfbmVvbl92ZWN0b3Jfc2l6ZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJOZW9uIHZlY3RvciBzaXplIG11c3QgYmUgNjQgb3IgMTI4IGJpdHMiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCkBAIC0yNDUsNyArMjQ0LDYgQEAKIERJQUcoZXJyX2F0dHJpYnV0ZV90b29fZmV3X2FyZ3VtZW50cywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlMCBhdHRyaWJ1dGUgdGFrZXMgYXQgbGVhc3QgJTEgYXJndW1lbnQlczEiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9hdHRyaWJ1dGVfdG9vX21hbnlfYXJndW1lbnRzLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiUwIGF0dHJpYnV0ZSB0YWtlcyBubyBtb3JlIHRoYW4gJTEgYXJndW1lbnQlczEiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9hdHRyaWJ1dGVfdW5zdXBwb3J0ZWQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJTAgYXR0cmlidXRlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgdGFyZ2V0IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQotRElBRyhlcnJfYXR0cmlidXRlX3V1aWRfbWFsZm9ybWVkX2d1aWQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidXVpZCBhdHRyaWJ1dGUgY29udGFpbnMgYSBtYWxmb3JtZWQgR1VJRCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2F0dHJpYnV0ZV92ZWNyZXR1cm5fb25seV9wb2RfcmVjb3JkLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInRoZSB2ZWNyZXR1cm4gYXR0cmlidXRlIGNhbiBvbmx5IGJlIHVzZWQgb24gYSBQT0QgKHBsYWluIG9sZCBkYXRhKSBjbGFzcyBvciBzdHJ1Y3R1cmUgKGkuZS4gbm8gdmlydHVhbCBmdW5jdGlvbnMpIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfYXR0cmlidXRlX3ZlY3JldHVybl9vbmx5X3ZlY3Rvcl9tZW1iZXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidGhlIHZlY3JldHVybiBhdHRyaWJ1dGUgY2FuIG9ubHkgYmUgdXNlZCBvbiBhIGNsYXNzIG9yIHN0cnVjdHVyZSB3aXRoIG9uZSBtZW1iZXIsIHdoaWNoIG11c3QgYmUgYSB2ZWN0b3IiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9hdHRyaWJ1dGVfd2Vha19zdGF0aWMsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAid2VhayBkZWNsYXJhdGlvbiBjYW5ub3QgaGF2ZSBpbnRlcm5hbCBsaW5rYWdlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQpAQCAtMzQzLDkgKzM0MSw5IEBACiBESUFHKGVycl9idWlsdGluX2RlZmluaXRpb24sIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZGVmaW5pdGlvbiBvZiBidWlsdGluIGZ1bmN0aW9uICUwIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfYnVpbHRpbl9mbl91c2UsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiYnVpbHRpbiBmdW5jdGlvbnMgbXVzdCBiZSBkaXJlY3RseSBjYWxsZWQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9idWlsdGluX2Z1bmNfY2FzdF9tb3JlX3RoYW5fb25lX2FyZywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJmdW5jdGlvbi1zdHlsZSBjYXN0IHRvIGEgYnVpbHRpbiB0eXBlIGNhbiBvbmx5IHRha2Ugb25lIGFyZ3VtZW50IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfYnVpbHRpbl9sYXVuZGVyX2ludmFsaWRfYXJnLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiVzZWxlY3R7bm9uLXBvaW50ZXJ8ZnVuY3Rpb24gcG9pbnRlcnx2b2lkIHBvaW50ZXJ9MCBhcmd1bWVudCB0byAnX19idWlsdGluX2xhdW5kZXInIGlzIG5vdCBhbGxvd2VkIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAwKQogRElBRyhlcnJfYnVpbHRpbl9sb25nam1wX2ludmFsaWRfdmFsLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImFyZ3VtZW50IHRvIF9fYnVpbHRpbl9sb25nam1wIG11c3QgYmUgYSBjb25zdGFudCAxIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfYnVpbHRpbl9sb25nam1wX3Vuc3VwcG9ydGVkLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIl9fYnVpbHRpbl9sb25nam1wIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoZSBjdXJyZW50IHRhcmdldCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKLURJQUcoZXJyX2J1aWx0aW5fbmVlZHNfZmVhdHVyZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlMCBuZWVkcyB0YXJnZXQgZmVhdHVyZSAlMSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2J1aWx0aW5fb3BlcmF0b3JfbmV3X2RlbGV0ZV9ub3RfdXN1YWwsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiY2FsbCB0byAnJXNlbGVjdHtfX2J1aWx0aW5fb3BlcmF0b3JfbmV3fF9fYnVpbHRpbl9vcGVyYXRvcl9kZWxldGV9MCcgc2VsZWN0cyBub24tdXN1YWwgJXNlbGVjdHthbGxvY2F0aW9ufGRlYWxsb2NhdGlvbn0wIGZ1bmN0aW9uIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfYnVpbHRpbl9yZWRlY2xhcmUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiY2Fubm90IHJlZGVjbGFyZSBidWlsdGluIGZ1bmN0aW9uICUwIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfYnVpbHRpbl9yZXF1aXJlc19sYW5ndWFnZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICInJTAnIGlzIG9ubHkgYXZhaWxhYmxlIGluICUxIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQpAQCAtMzU2LDYgKzM1NCwxMyBAQAogRElBRyhlcnJfY2FsbF9mdW5jdGlvbl9pbmNvbXBsZXRlX3JldHVybiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjYWxsaW5nICUwIHdpdGggaW5jb21wbGV0ZSByZXR1cm4gdHlwZSAlMSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2NhbGxfaW5jb21wbGV0ZV9hcmd1bWVudCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhcmd1bWVudCB0eXBlICUwIGlzIGluY29tcGxldGUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9jYWxsX2luY29tcGxldGVfcmV0dXJuLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNhbGxpbmcgZnVuY3Rpb24gd2l0aCBpbmNvbXBsZXRlIHJldHVybiB0eXBlICUwIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfY2FsbGJhY2tfYXR0cmlidXRlX2FyZ3VtZW50X3Vua25vd24sIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJ2NhbGxiYWNrJyBhdHRyaWJ1dGUgYXJndW1lbnQgJTAgaXMgbm90IGEga25vd24gZnVuY3Rpb24gcGFyYW1ldGVyIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfY2FsbGJhY2tfYXR0cmlidXRlX2ludmFsaWRfY2FsbGVlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIidjYWxsYmFjaycgYXR0cmlidXRlIHNwZWNpZmllcyBpbnZhbGlkIGNhbGxiYWNrIGNhbGxlZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKK0RJQUcoZXJyX2NhbGxiYWNrX2F0dHJpYnV0ZV9tdWx0aXBsZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJtdWx0aXBsZSAnY2FsbGJhY2snIGF0dHJpYnV0ZXMgc3BlY2lmaWVkIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfY2FsbGJhY2tfYXR0cmlidXRlX25vX2NhbGxlZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICInY2FsbGJhY2snIGF0dHJpYnV0ZSBzcGVjaWZpZXMgbm8gY2FsbGJhY2sgY2FsbGVlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfY2FsbGJhY2tfY2FsbGVlX2lzX3ZhcmlhZGljLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIidjYWxsYmFjaycgYXR0cmlidXRlIGNhbGxlZSBtYXkgbm90IGJlIHZhcmlhZGljIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfY2FsbGJhY2tfY2FsbGVlX25vX2Z1bmN0aW9uX3R5cGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJ2NhbGxiYWNrJyBhdHRyaWJ1dGUgY2FsbGVlIGRvZXMgbm90IGhhdmUgZnVuY3Rpb24gdHlwZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKK0RJQUcoZXJyX2NhbGxiYWNrX2ltcGxpY2l0X3RoaXNfbm90X2F2YWlsYWJsZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICInY2FsbGJhY2snIGFyZ3VtZW50IGF0IHBvc2l0aW9uICUwIHJlZmVyZW5jZXMgdW5hdmFpbGFibGUgaW1wbGljaXQgJ3RoaXMnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfY2Fubm90X2ZpbmRfc3VpdGFibGVfYWNjZXNzb3IsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiY2Fubm90IGZpbmQgc3VpdGFibGUgJXNlbGVjdHtnZXR0ZXJ8c2V0dGVyfTAgZm9yIHByb3BlcnR5ICUxIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfY2Fubm90X2Zvcm1fcG9pbnRlcl90b19tZW1iZXJfb2ZfcmVmZXJlbmNlX3R5cGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiY2Fubm90IGZvcm0gYSBwb2ludGVyLXRvLW1lbWJlciB0byBtZW1iZXIgJTAgb2YgcmVmZXJlbmNlIHR5cGUgJTEiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9jYW5ub3RfcGFzc19ub25fdHJpdmlhbF9jX3N0cnVjdF90b192YXJhcmcsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiY2Fubm90IHBhc3Mgbm9uLXRyaXZpYWwgQyBvYmplY3Qgb2YgdHlwZSAlMCBieSB2YWx1ZSB0byB2YXJpYWRpYyAlc2VsZWN0e2Z1bmN0aW9ufGJsb2NrfG1ldGhvZHxjb25zdHJ1Y3Rvcn0xIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQpAQCAtNDA5LDcgKzQxNCw3IEBACiBESUFHKGVycl9jb25kaXRpb25hbF92ZWN0b3JfZWxlbWVudF9zaXplLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInZlY3RvciBjb25kaXRpb24gdHlwZSAlMCBhbmQgcmVzdWx0IHR5cGUgJTEgZG8gbm90IGhhdmUgZWxlbWVudHMgb2YgdGhlIHNhbWUgc2l6ZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2NvbmRpdGlvbmFsX3ZlY3Rvcl9zaXplLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInZlY3RvciBjb25kaXRpb24gdHlwZSAlMCBhbmQgcmVzdWx0IHR5cGUgJTEgZG8gbm90IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1lbnRzIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfY29uZGl0aW9uYWxfdm9pZF9ub252b2lkLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiVzZWxlY3R7bGVmdHxyaWdodH0xIG9wZXJhbmQgdG8gPyBpcyB2b2lkLCBidXQgJXNlbGVjdHtyaWdodHxsZWZ0fTEgb3BlcmFuZCBpcyBvZiB0eXBlICUwIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQotRElBRyhlcnJfY29uZmlnX3NjYWxhcl9yZXR1cm4sIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiQ1VEQSBzcGVjaWFsIGZ1bmN0aW9uICdjdWRhQ29uZmlndXJlQ2FsbCcgbXVzdCBoYXZlIHNjYWxhciByZXR1cm4gdHlwZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKK0RJQUcoZXJyX2NvbmZpZ19zY2FsYXJfcmV0dXJuLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIkNVREEgc3BlY2lhbCBmdW5jdGlvbiAnJTAnIG11c3QgaGF2ZSBzY2FsYXIgcmV0dXJuIHR5cGUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9jb25mbGljdGluZ19hbGlhc2luZ190eXBlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNvbmZsaWN0aW5nIHR5cGVzIGZvciBhbGlhcyAlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2NvbmZsaWN0aW5nX2NvZGVzZWdfYXR0cmlidXRlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNvbmZsaWN0aW5nIGNvZGUgc2VnbWVudCBzcGVjaWZpZXJzIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfY29uZmxpY3RpbmdfaXZhcl9iaXR3aWR0aCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnN0YW5jZSB2YXJpYWJsZSAlMCBoYXMgY29uZmxpY3RpbmcgYml0LWZpZWxkIHdpZHRoIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQpAQCAtNDg4LDcgKzQ5Myw2IEBACiBESUFHKGVycl9jdWRhX3VuYXR0cmlidXRlZF9jb25zdGV4cHJfY2Fubm90X292ZXJsb2FkX2RldmljZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjb25zdGV4cHIgZnVuY3Rpb24gJTAgd2l0aG91dCBfX2hvc3RfXyBvciBfX2RldmljZV9fIGF0dHJpYnV0ZXMgY2Fubm90IG92ZXJsb2FkIF9fZGV2aWNlX18gZnVuY3Rpb24gd2l0aCBzYW1lIHNpZ25hdHVyZS4gIEFkZCBhIF9faG9zdF9fIGF0dHJpYnV0ZSwgb3IgYnVpbGQgd2l0aCAtZm5vLWN1ZGEtaG9zdC1kZXZpY2UtY29uc3RleHByLiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2N1ZGFfdmxhLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNhbm5vdCB1c2UgdmFyaWFibGUtbGVuZ3RoIGFycmF5cyBpbiAlc2VsZWN0e19fZGV2aWNlX198X19nbG9iYWxfX3xfX2hvc3RfX3xfX2hvc3RfXyBfX2RldmljZV9ffTAgZnVuY3Rpb25zIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfY3VycmVudF9tb2R1bGVfbmFtZV9taXNtYXRjaCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJtb2R1bGUgbmFtZSAnJTAnIHNwZWNpZmllZCBvbiBjb21tYW5kIGxpbmUgZG9lcyBub3QgbWF0Y2ggbmFtZSBvZiBtb2R1bGUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDEzKQotRElBRyhlcnJfY3ljbGljX2FsaWFzLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiVzZWxlY3R7YWxpYXN8aWZ1bmN9MCBkZWZpbml0aW9uIGlzIHBhcnQgb2YgYSBjeWNsZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2RhbmdsaW5nX21lbWJlciwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlc2VsZWN0e3JlZmVyZW5jZXxiYWNraW5nIGFycmF5IGZvciAnc3RkOjppbml0aWFsaXplcl9saXN0J30yICVzZWxlY3R7fHN1Ym9iamVjdCBvZiB9MW1lbWJlciAlMCAlc2VsZWN0e2JpbmRzIHRvfGlzfTIgYSB0ZW1wb3Jhcnkgb2JqZWN0IHdob3NlIGxpZmV0aW1lIHdvdWxkIGJlIHNob3J0ZXIgdGhhbiB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbnN0cnVjdGVkIG9iamVjdCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2RlYWxsb2NfYmFkX3Jlc3VsdF90eXBlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImRlYWxsb2MgcmV0dXJuIHR5cGUgbXVzdCBiZSBjb3JyZWN0bHkgc3BlY2lmaWVkIGFzICd2b2lkJyB1bmRlciBBUkMsIGluc3RlYWQgb2YgJTAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9kZWNpbWFsX3Vuc3VwcG9ydGVkLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIkdOVSBkZWNpbWFsIHR5cGUgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCkBAIC01NzEsNiArNTc1LDcgQEAKIERJQUcoZXJyX2RlcGVuZGVudF90YWdfZGVjbCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlc2VsZWN0e2RlY2xhcmF0aW9ufGRlZmluaXRpb259MCBvZiAlc2VsZWN0e3N0cnVjdHxpbnRlcmZhY2V8dW5pb258Y2xhc3N8ZW51bX0xIGluIGEgZGVwZW5kZW50IHNjb3BlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZGVwZW5kZW50X3R5cGVkX25vbl90eXBlX2FyZ19pbl9wYXJ0aWFsX3NwZWMsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibm9uLXR5cGUgdGVtcGxhdGUgYXJndW1lbnQgc3BlY2lhbGl6ZXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgd2l0aCBkZXBlbmRlbnQgdHlwZSAlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2RlcmVmZXJlbmNlX2luY29tcGxldGVfdHlwZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJkZXJlZmVyZW5jZSBvZiBwb2ludGVyIHRvIGluY29tcGxldGUgdHlwZSAlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKK0RJQUcoZXJyX2Rlc2lnbmF0ZWRfaW5pdF9hdHRyX25vbl9pbml0LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIidvYmpjX2Rlc2lnbmF0ZWRfaW5pdGlhbGl6ZXInIGF0dHJpYnV0ZSBvbmx5IGFwcGxpZXMgdG8gaW5pdCBtZXRob2RzIG9mIGludGVyZmFjZSBvciBjbGFzcyBleHRlbnNpb24gZGVjbGFyYXRpb25zIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZGVzaWduYXRvcl9mb3Jfc2NhbGFyX2luaXQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZGVzaWduYXRvciBpbiBpbml0aWFsaXplciBmb3Igc2NhbGFyIHR5cGUgJTAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9kZXNpZ25hdG9yX2ludG9fZmxleGlibGVfYXJyYXlfbWVtYmVyLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImRlc2lnbmF0b3IgaW50byBmbGV4aWJsZSBhcnJheSBtZW1iZXIgc3Vib2JqZWN0IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZGVzdHJveV9hdHRyX29uX25vbl9zdGF0aWNfdmFyLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiVzZWxlY3R7bm9fZGVzdHJveXxhbHdheXNfZGVzdHJveX0wIGF0dHJpYnV0ZSBjYW4gb25seSBiZSBhcHBsaWVkIHRvIGEgdmFyaWFibGUgd2l0aCBzdGF0aWMgb3IgdGhyZWFkIHN0b3JhZ2UgZHVyYXRpb24iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCkBAIC02MDUsNyArNjEwLDYgQEAKIERJQUcoZXJyX2R1cGxpY2F0ZV9jbGFzc19kZWYsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZHVwbGljYXRlIGludGVyZmFjZSBkZWZpbml0aW9uIGZvciBjbGFzcyAlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2R1cGxpY2F0ZV9pdmFyX2RlY2xhcmF0aW9uLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImluc3RhbmNlIHZhcmlhYmxlIGlzIGFscmVhZHkgZGVjbGFyZWQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9kdXBsaWNhdGVfaXZhcl91c2UsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAic3ludGhlc2l6ZWQgcHJvcGVydGllcyAlMCBhbmQgJTEgYm90aCBjbGFpbSBpbnN0YW5jZSB2YXJpYWJsZSAlMiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKLURJQUcoZXJyX2R1cGxpY2F0ZV9tYW5nbGVkX25hbWUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZGVmaW5pdGlvbiB3aXRoIHNhbWUgbWFuZ2xlZCBuYW1lICclMCcgYXMgYW5vdGhlciBkZWZpbml0aW9uIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZHVwbGljYXRlX21lbWJlciwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJkdXBsaWNhdGUgbWVtYmVyICUwIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZHVwbGljYXRlX21ldGhvZF9kZWNsLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImR1cGxpY2F0ZSBkZWNsYXJhdGlvbiBvZiBtZXRob2QgJTAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9kdXBsaWNhdGVfcHJvcGVydHksIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAicHJvcGVydHkgaGFzIGEgcHJldmlvdXMgZGVjbGFyYXRpb24iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCkBAIC03MDksMTAgKzcxMywxMCBAQAogRElBRyhlcnJfZm9ybWF0X2F0dHJpYnV0ZV9yZXF1aXJlc192YXJpYWRpYywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJmb3JtYXQgYXR0cmlidXRlIHJlcXVpcmVzIHZhcmlhZGljIGZ1bmN0aW9uIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZm9ybWF0X2F0dHJpYnV0ZV9yZXN1bHRfbm90LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiAlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2Zvcm1hdF9zdHJmdGltZV90aGlyZF9wYXJhbWV0ZXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAic3RyZnRpbWUgZm9ybWF0IGF0dHJpYnV0ZSByZXF1aXJlcyAzcmQgcGFyYW1ldGVyIHRvIGJlIDAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCitESUFHKGVycl9mb3J0aWZ5X3N0ZF9saWJfYmFkX2RlY2wsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJ2ZvcnRpZnlfc3RkbGliJyBhdHRyaWJ1dGUgYXBwbGllZCB0byBhbiB1bmtub3duIGZ1bmN0aW9uIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZm9yd2FyZF9yZWZfZW51bSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJJU08gQysrIGZvcmJpZHMgZm9yd2FyZCByZWZlcmVuY2VzIHRvICdlbnVtJyB0eXBlcyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2ZvcndhcmRfc3VwZXJjbGFzcywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhdHRlbXB0aW5nIHRvIHVzZSB0aGUgZm9yd2FyZCBjbGFzcyAlMCBhcyBzdXBlcmNsYXNzIG9mICUxIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZnJpZW5kX2RlY2xfZG9lc19ub3RfbWF0Y2gsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZnJpZW5kIGRlY2xhcmF0aW9uIG9mICUwIGRvZXMgbm90IG1hdGNoIGFueSBkZWNsYXJhdGlvbiBpbiAlMSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKLURJQUcoZXJyX2ZyaWVuZF9kZWNsX3NwZWMsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJyUwJyBpcyBpbnZhbGlkIGluIGZyaWVuZCBkZWNsYXJhdGlvbnMiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9mcmllbmRfZGVjbF93aXRoX2RlZl9hcmdfbXVzdF9iZV9kZWYsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZnJpZW5kIGRlY2xhcmF0aW9uIHNwZWNpZnlpbmcgYSBkZWZhdWx0IGFyZ3VtZW50IG11c3QgYmUgYSBkZWZpbml0aW9uIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZnJpZW5kX2RlY2xfd2l0aF9kZWZfYXJnX3JlZGVjbGFyZWQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZnJpZW5kIGRlY2xhcmF0aW9uIHNwZWNpZnlpbmcgYSBkZWZhdWx0IGFyZ3VtZW50IG11c3QgYmUgdGhlIG9ubHkgZGVjbGFyYXRpb24iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9mcmllbmRfZGVmX2luX2xvY2FsX2NsYXNzLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImZyaWVuZCBmdW5jdGlvbiBjYW5ub3QgYmUgZGVmaW5lZCBpbiBhIGxvY2FsIGNsYXNzIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQpAQCAtNzIwLDE0ICs3MjQsMTMgQEAKIERJQUcoZXJyX2ZyaWVuZF9ub3RfZmlyc3RfaW5fZGVjbGFyYXRpb24sIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJ2ZyaWVuZCcgbXVzdCBhcHBlYXIgZmlyc3QgaW4gYSBub24tZnVuY3Rpb24gZGVjbGFyYXRpb24iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9mdW5jX2RlZl9pbmNvbXBsZXRlX3Jlc3VsdCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbmNvbXBsZXRlIHJlc3VsdCB0eXBlICUwIGluIGZ1bmN0aW9uIGRlZmluaXRpb24iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9mdW5jX3JldHVybmluZ19hcnJheV9mdW5jdGlvbiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJmdW5jdGlvbiBjYW5ub3QgcmV0dXJuICVzZWxlY3R7YXJyYXl8ZnVuY3Rpb259MCB0eXBlICUxIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQotRElBRyhlcnJfZnVuY19yZXR1cm5pbmdfcXVhbGlmaWVkX3ZvaWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZnVuY3Rpb24gY2Fubm90IHJldHVybiBxdWFsaWZpZWQgdm9pZCB0eXBlICUwIiwgNTQyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXJyX2Z1bmNfcmV0dXJuaW5nX3F1YWxpZmllZF92b2lkLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gcXVhbGlmaWVkIHZvaWQgdHlwZSAlMCIsIDU1NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGVycl9mdW5jdGlvbl9hdHRyaWJ1dGVfbWlzbWF0Y2gsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZnVuY3Rpb24gZGVjbGFyZWQgd2l0aCAlMCBhdHRyaWJ1dGUgd2FzIHByZXZpb3VzbHkgZGVjbGFyZWQgd2l0aG91dCB0aGUgJTAgYXR0cmlidXRlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZnVuY3Rpb25fY29uY2VwdF9ib29sX3JldCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJkZWNsYXJlZCByZXR1cm4gdHlwZSBvZiBmdW5jdGlvbiBjb25jZXB0IG11c3QgYmUgJ2Jvb2wnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZnVuY3Rpb25fY29uY2VwdF9leGNlcHRpb25fc3BlYywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJmdW5jdGlvbiBjb25jZXB0IGNhbm5vdCBoYXZlIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZnVuY3Rpb25fY29uY2VwdF9ub3RfZGVmaW5lZCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJmdW5jdGlvbiBjb25jZXB0IGRlY2xhcmF0aW9uIG11c3QgYmUgYSBkZWZpbml0aW9uIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZnVuY3Rpb25fY29uY2VwdF93aXRoX3BhcmFtcywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJmdW5jdGlvbiBjb25jZXB0IGNhbm5vdCBoYXZlIGFueSBwYXJhbWV0ZXJzIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZnVuY3Rpb25fbWFya2VkX292ZXJyaWRlX25vdF9vdmVycmlkaW5nLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiUwIG1hcmtlZCAnb3ZlcnJpZGUnIGJ1dCBkb2VzIG5vdCBvdmVycmlkZSBhbnkgbWVtYmVyIGZ1bmN0aW9ucyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKLURJQUcoZXJyX2Z1bmN0aW9uX25lZWRzX2ZlYXR1cmUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiYWx3YXlzX2lubGluZSBmdW5jdGlvbiAlMSByZXF1aXJlcyB0YXJnZXQgZmVhdHVyZSAnJTInLCBidXQgd291bGQgYmUgaW5saW5lZCBpbnRvIGZ1bmN0aW9uICUwIHRoYXQgaXMgY29tcGlsZWQgd2l0aG91dCBzdXBwb3J0IGZvciAnJTInIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZnVuY3Rpb25fcGFyYW1ldGVyX3BhY2tfd2l0aG91dF9wYXJhbWV0ZXJfcGFja3MsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidHlwZSAlMCBvZiBmdW5jdGlvbiBwYXJhbWV0ZXIgcGFjayBkb2VzIG5vdCBjb250YWluIGFueSB1bmV4cGFuZGVkIHBhcmFtZXRlciBwYWNrcyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2Z1bmN0aW9uX3RlbXBsYXRlX3BhcnRpYWxfc3BlYywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJmdW5jdGlvbiB0ZW1wbGF0ZSBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGlzIG5vdCBhbGxvd2VkIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfZnVuY3Rpb25fdGVtcGxhdGVfc3BlY19hbWJpZ3VvdXMsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZnVuY3Rpb24gdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gJTAgYW1iaWd1b3VzbHkgcmVmZXJzIHRvIG1vcmUgdGhhbiBvbmUgZnVuY3Rpb24gdGVtcGxhdGU7IGV4cGxpY2l0bHkgc3BlY2lmeSVzZWxlY3R7fCBhZGRpdGlvbmFsfTEgdGVtcGxhdGUgYXJndW1lbnRzIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBmdW5jdGlvbiB0ZW1wbGF0ZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKQEAgLTc1Miw3ICs3NTUsNiBAQAogRElBRyhlcnJfaWNlX3Rvb19sYXJnZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnRlZ2VyIGNvbnN0YW50IGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHZhbHVlICUwIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIGEgJTEtYml0ICVzZWxlY3R7c2lnbmVkfHVuc2lnbmVkfTIgaW50ZWdlciB0eXBlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfaWRlbnRfaW5fZHRvcl9ub3RfYV90eXBlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImlkZW50aWZpZXIgJTAgaW4gb2JqZWN0IGRlc3RydWN0aW9uIGV4cHJlc3Npb24gZG9lcyBub3QgbmFtZSBhIHR5cGUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9pZGVudF9saXN0X2luX2ZuX2RlY2xhcmF0aW9uLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImEgcGFyYW1ldGVyIGxpc3Qgd2l0aG91dCB0eXBlcyBpcyBvbmx5IGFsbG93ZWQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQotRElBRyhlcnJfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImlmdW5jIHJlc29sdmVyIGZ1bmN0aW9uIG11c3QgcmV0dXJuIGEgcG9pbnRlciIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2lsbGVnYWxfY29udGFpbmVyX3N1YnNjcmlwdGluZ19vcCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbGxlZ2FsIG9wZXJhdGlvbiBvbiBPYmplY3RpdmUtQyBjb250YWluZXIgc3Vic2NyaXB0aW5nIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfaWxsZWdhbF9kZWNsX2FycmF5X2luY29tcGxldGVfdHlwZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhcnJheSBoYXMgaW5jb21wbGV0ZSBlbGVtZW50IHR5cGUgJTAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9pbGxlZ2FsX2RlY2xfYXJyYXlfb2ZfYXV0bywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICInJTAnIGRlY2xhcmVkIGFzIGFycmF5IG9mICUxIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQpAQCAtODA4LDcgKzgxMCw3IEBACiBESUFHKGVycl9pbml0X2NhcHR1cmVfbXVsdGlwbGVfZXhwcmVzc2lvbnMsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW5pdGlhbGl6ZXIgZm9yIGxhbWJkYSBjYXB0dXJlICUwIGNvbnRhaW5zIG11bHRpcGxlIGV4cHJlc3Npb25zIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAzKQogRElBRyhlcnJfaW5pdF9jYXB0dXJlX25vX2V4cHJlc3Npb24sIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW5pdGlhbGl6ZXIgbWlzc2luZyBmb3IgbGFtYmRhIGNhcHR1cmUgJTAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDMpCiBESUFHKGVycl9pbml0X2NhcHR1cmVfcGFyZW5fYnJhY2VzLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNhbm5vdCBkZWR1Y2UgdHlwZSBmb3IgbGFtYmRhIGNhcHR1cmUgJTEgZnJvbSAlc2VsZWN0e3BhcmVudGhlc2l6ZWR8bmVzdGVkfTAgaW5pdGlhbGl6ZXIgbGlzdCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMykKLURJQUcoZXJyX2luaXRfY29udmVyc2lvbl9mYWlsZWQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiY2Fubm90IGluaXRpYWxpemUgJXNlbGVjdHthIHZhcmlhYmxlfGEgcGFyYW1ldGVyfHJldHVybiBvYmplY3R8c3RhdGVtZW50IGV4cHJlc3Npb24gcmVzdWx0fGFuIGV4Y2VwdGlvbiBvYmplY3R8YSBtZW1iZXIgc3Vib2JqZWN0fGFuIGFycmF5IGVsZW1lbnR8YSBuZXcgdmFsdWV8YSB2YWx1ZXxhIGJhc2UgY2xhc3N8YSBjb25zdHJ1Y3RvciBkZWxlZ2F0aW9ufGEgdmVjdG9yIGVsZW1lbnR8YSBibG9jayBlbGVtZW50fGEgYmxvY2sgZWxlbWVudHxhIGNvbXBsZXggZWxlbWVudHxhIGxhbWJkYSBjYXB0dXJlfGEgY29tcG91bmQgbGl0ZXJhbCBpbml0aWFsaXplcnxhIHJlbGF0ZWQgcmVzdWx0fGEgcGFyYW1ldGVyIG9mIENGIGF1ZGl0ZWQgZnVuY3Rpb259MCAlZGlmZntvZiB0eXBlICQgd2l0aCBhbiAlc2VsZWN0e3J2YWx1ZXxsdmFsdWV9MiBvZiB0eXBlICR8d2l0aCBhbiAlc2VsZWN0e3J2YWx1ZXxsdmFsdWV9MiBvZiBpbmNvbXBhdGlibGUgdHlwZX0xLDMlc2VsZWN0e3w6IGRpZmZlcmVudCBjbGFzc2VzJWRpZmZ7ICgkIHZzICQpfH01LDZ8OiBkaWZmZXJlbnQgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCU1IHZzICU2KXw6IHR5cGUgbWlzbWF0Y2ggYXQgJW9yZGluYWw1IHBhcmFtZXRlciVkaWZmeyAoJCB2cyAkKXx9Niw3fDogZGlmZmVyZW50IHJldHVybiB0eXBlJWRpZmZ7ICgkIHZzICQpfH01LDZ8OiBkaWZmZXJlbnQgcXVhbGlmaWVycyAoJXNlbGVjdHtub25lfGNvbnN0fHJlc3RyaWN0fGNvbnN0IGFuZCByZXN0cmljdHx2b2xhdGlsZXxjb25zdCBhbmQgdm9sYXRpbGV8dm9sYXRpbGUgYW5kIHJlc3RyaWN0fGNvbnN0LCB2b2xhdGlsZSwgYW5kIHJlc3RyaWN0fTUgdnMgJXNlbGVjdHtub25lfGNvbnN0fHJlc3RyaWN0fGNvbnN0IGFuZCByZXN0cmljdHx2b2xhdGlsZXxjb25zdCBhbmQgdm9sYXRpbGV8dm9sYXRpbGUgYW5kIHJlc3RyaWN0fGNvbnN0LCB2b2xhdGlsZSwgYW5kIHJlc3RyaWN0fTYpfDogZGlmZmVyZW50IGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uc300IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfaW5pdF9jb252ZXJzaW9uX2ZhaWxlZCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjYW5ub3QgaW5pdGlhbGl6ZSAlc2VsZWN0e2EgdmFyaWFibGV8YSBwYXJhbWV0ZXJ8cmV0dXJuIG9iamVjdHxzdGF0ZW1lbnQgZXhwcmVzc2lvbiByZXN1bHR8YW4gZXhjZXB0aW9uIG9iamVjdHxhIG1lbWJlciBzdWJvYmplY3R8YW4gYXJyYXkgZWxlbWVudHxhIG5ldyB2YWx1ZXxhIHZhbHVlfGEgYmFzZSBjbGFzc3xhIGNvbnN0cnVjdG9yIGRlbGVnYXRpb258YSB2ZWN0b3IgZWxlbWVudHxhIGJsb2NrIGVsZW1lbnR8YSBibG9jayBlbGVtZW50fGEgY29tcGxleCBlbGVtZW50fGEgbGFtYmRhIGNhcHR1cmV8YSBjb21wb3VuZCBsaXRlcmFsIGluaXRpYWxpemVyfGEgcmVsYXRlZCByZXN1bHR8YSBwYXJhbWV0ZXIgb2YgQ0YgYXVkaXRlZCBmdW5jdGlvbn0wICVkaWZme29mIHR5cGUgJCB3aXRoIGFuICVzZWxlY3R7cnZhbHVlfGx2YWx1ZX0yIG9mIHR5cGUgJHx3aXRoIGFuICVzZWxlY3R7cnZhbHVlfGx2YWx1ZX0yIG9mIGluY29tcGF0aWJsZSB0eXBlfTEsMyVzZWxlY3R7fDogZGlmZmVyZW50IGNsYXNzZXMlZGlmZnsgKCQgdnMgJCl8fTUsNnw6IGRpZmZlcmVudCBudW1iZXIgb2YgcGFyYW1ldGVycyAoJTUgdnMgJTYpfDogdHlwZSBtaXNtYXRjaCBhdCAlb3JkaW5hbDUgcGFyYW1ldGVyJWRpZmZ7ICgkIHZzICQpfH02LDd8OiBkaWZmZXJlbnQgcmV0dXJuIHR5cGUlZGlmZnsgKCQgdnMgJCl8fTUsNnw6IGRpZmZlcmVudCBxdWFsaWZpZXJzICglNSB2cyAlNil8OiBkaWZmZXJlbnQgZXhjZXB0aW9uIHNwZWNpZmljYXRpb25zfTQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9pbml0X2VsZW1lbnRfbm90X2NvbnN0YW50LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImluaXRpYWxpemVyIGVsZW1lbnQgaXMgbm90IGEgY29tcGlsZS10aW1lIGNvbnN0YW50IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfaW5pdF9mb3JfZnVuY3Rpb25fdHlwZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjYW5ub3QgY3JlYXRlIG9iamVjdCBvZiBmdW5jdGlvbiB0eXBlICUwIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfaW5pdF9pbmNvbXBsZXRlX3R5cGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW5pdGlhbGl6YXRpb24gb2YgaW5jb21wbGV0ZSB0eXBlICUwIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQpAQCAtODU0LDcgKzg1Niw3IEBACiBESUFHKGVycl9pbnZhbGlkX2RlY2xhcmF0b3Jfc2NvcGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiY2Fubm90IGRlZmluZSBvciByZWRlY2xhcmUgJTAgaGVyZSBiZWNhdXNlIG5hbWVzcGFjZSAlMSBkb2VzIG5vdCBlbmNsb3NlIG5hbWVzcGFjZSAlMiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2ludmFsaWRfZm9ybV9wb2ludGVyX21lbWJlcl9mdW5jdGlvbiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjYW5ub3QgY3JlYXRlIGEgbm9uLWNvbnN0YW50IHBvaW50ZXIgdG8gbWVtYmVyIGZ1bmN0aW9uIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfaW52YWxpZF9pbmNvbXBsZXRlX3R5cGVfdXNlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgdXNlIG9mIGluY29tcGxldGUgdHlwZSAlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKLURJQUcoZXJyX2ludmFsaWRfbWVtYmVyX2luX2ludGVyZmFjZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlc2VsZWN0e2RhdGEgbWVtYmVyIHxub24tcHVibGljIG1lbWJlciBmdW5jdGlvbiB8c3RhdGljIG1lbWJlciBmdW5jdGlvbiB8dXNlci1kZWNsYXJlZCBjb25zdHJ1Y3Rvcnx1c2VyLWRlY2xhcmVkIGRlc3RydWN0b3J8b3BlcmF0b3IgfG5lc3RlZCBjbGFzcyB9MCUxIGlzIG5vdCBwZXJtaXR0ZWQgd2l0aGluIGFuIGludGVyZmFjZSB0eXBlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfaW52YWxpZF9tYXNrX3R5cGVfc2l6ZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJtYXNrIHR5cGUgc2l6ZSBtdXN0IGJlIGJldHdlZW4gMS1ieXRlIGFuZCA4LWJ5dGVzIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfaW52YWxpZF9tZW1iZXJfdXNlX2luX3N0YXRpY19tZXRob2QsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW52YWxpZCB1c2Ugb2YgbWVtYmVyICUwIGluIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9pbnZhbGlkX25lb25fdHlwZV9jb2RlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImluY29tcGF0aWJsZSBjb25zdGFudCBmb3IgdGhpcyBfX2J1aWx0aW5fbmVvbiBmdW5jdGlvbiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX2ludmFsaWRfbm9uX3N0YXRpY19tZW1iZXJfdXNlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgdXNlIG9mIG5vbi1zdGF0aWMgZGF0YSBtZW1iZXIgJTAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCkBAIC0xMDY3LDYgKzEwNjksNyBAQAogRElBRyhlcnJfbm9uc3RhdGljX21lbWJlcl9vdXRfb2ZfbGluZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJub24tc3RhdGljIGRhdGEgbWVtYmVyIGRlZmluZWQgb3V0LW9mLWxpbmUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9ub250ZW1wb3JhbF9idWlsdGluX211c3RfYmVfcG9pbnRlciwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhZGRyZXNzIGFyZ3VtZW50IHRvIG5vbnRlbXBvcmFsIGJ1aWx0aW4gbXVzdCBiZSBhIHBvaW50ZXIgKCUwIGludmFsaWQpIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfbm9udGVtcG9yYWxfYnVpbHRpbl9tdXN0X2JlX3BvaW50ZXJfaW50Zmx0cHRyX29yX3ZlY3RvciwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhZGRyZXNzIGFyZ3VtZW50IHRvIG5vbnRlbXBvcmFsIGJ1aWx0aW4gbXVzdCBiZSBhIHBvaW50ZXIgdG8gaW50ZWdlciwgZmxvYXQsIHBvaW50ZXIsIG9yIGEgdmVjdG9yIG9mIHN1Y2ggdHlwZXMgKCUwIGludmFsaWQpIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfbm9udHJpdmlhbF9wcmltaXRpdmVfdHlwZV9pbl91bmlvbiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJub24tdHJpdmlhbCBDIHR5cGVzIGFyZSBkaXNhbGxvd2VkIGluIHVuaW9uIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfbm9yZXR1cm5fYmxvY2tfaGFzX3JldHVybl9leHByLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImJsb2NrIGRlY2xhcmVkICdub3JldHVybicgc2hvdWxkIG5vdCByZXR1cm4iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9ub3JldHVybl9sYW1iZGFfaGFzX3JldHVybl9leHByLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImxhbWJkYSBkZWNsYXJlZCAnbm9yZXR1cm4nIHNob3VsZCBub3QgcmV0dXJuIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAzKQogRElBRyhlcnJfbm9yZXR1cm5fbWlzc2luZ19vbl9maXJzdF9kZWNsLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImZ1bmN0aW9uIGRlY2xhcmVkICdbW25vcmV0dXJuXV0nIGFmdGVyIGl0cyBmaXJzdCBkZWNsYXJhdGlvbiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKQEAgLTExNzMsOSArMTE3NiwxMiBAQAogRElBRyhlcnJfb21wX2JpdF9maWVsZHNfZm9yYmlkZGVuX2luX2NsYXVzZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJiaXQgZmllbGRzIGNhbm5vdCBiZSB1c2VkIHRvIHNwZWNpZnkgc3RvcmFnZSBpbiBhICclMCcgY2xhdXNlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMSkKIERJQUcoZXJyX29tcF9jbGF1c2VfZmxvYXRpbmdfdHlwZV9hcmcsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiYXJndW1lbnRzIG9mIE9wZW5NUCBjbGF1c2UgJyUwJyB3aXRoIGJpdHdpc2Ugb3BlcmF0b3JzIGNhbm5vdCBiZSBvZiBmbG9hdGluZyB0eXBlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMSkKIERJQUcoZXJyX29tcF9jbGF1c2Vfbm90X2FyaXRobWV0aWNfdHlwZV9hcmcsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiYXJndW1lbnRzIG9mIE9wZW5NUCBjbGF1c2UgJyUwJyBmb3IgJ21pbicgb3IgJ21heCcgbXVzdCBiZSBvZiAlc2VsZWN0e3NjYWxhcnxhcml0aG1ldGljfTEgdHlwZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMTEpCi1ESUFHKGVycl9vbXBfY29uc3RfcmVkdWN0aW9uX2xpc3RfaXRlbSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjb25zdC1xdWFsaWZpZWQgbGlzdCBpdGVtIGNhbm5vdCBiZSByZWR1Y3Rpb24iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDExKQorRElBRyhlcnJfb21wX2NvbnN0X2xpc3RfaXRlbSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjb25zdC1xdWFsaWZpZWQgbGlzdCBpdGVtIGNhbm5vdCBiZSAlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMTEpCitESUFHKGVycl9vbXBfY29uc3Rfbm90X211dGFibGVfdmFyaWFibGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiY29uc3QtcXVhbGlmaWVkIHZhcmlhYmxlIHdpdGhvdXQgbXV0YWJsZSBmaWVsZHMgY2Fubm90IGJlICUwIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMSkKIERJQUcoZXJyX29tcF9jb25zdF92YXJpYWJsZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjb25zdC1xdWFsaWZpZWQgdmFyaWFibGUgY2Fubm90IGJlICUwIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMSkKIERJQUcoZXJyX29tcF9jcml0aWNhbF93aXRoX2hpbnQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiY29uc3RydWN0cyB3aXRoIHRoZSBzYW1lIG5hbWUgbXVzdCBoYXZlIGEgJ2hpbnQnIGNsYXVzZSB3aXRoIHRoZSBzYW1lIHZhbHVlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMSkKK0RJQUcoZXJyX29tcF9kZWNsYXJlX21hcHBlcl9yZWRlZmluaXRpb24sIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAicmVkZWZpbml0aW9uIG9mIHVzZXItZGVmaW5lZCBtYXBwZXIgZm9yIHR5cGUgJTAgd2l0aCBuYW1lICUxIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMSkKK0RJQUcoZXJyX29tcF9kZWNsYXJlX21hcHBlcl93cm9uZ192YXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAib25seSB2YXJpYWJsZSAlMCBpcyBhbGxvd2VkIGluIG1hcCBjbGF1c2VzIG9mIHRoaXMgJ29tcCBkZWNsYXJlIG1hcHBlcicgZGlyZWN0aXZlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMSkKIERJQUcoZXJyX29tcF9kZWNsYXJlX3JlZHVjdGlvbl9yZWRlZmluaXRpb24sIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAicmVkZWZpbml0aW9uIG9mIHVzZXItZGVmaW5lZCByZWR1Y3Rpb24gZm9yIHR5cGUgJTAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDExKQogRElBRyhlcnJfb21wX2RlY2xhcmVfdGFyZ2V0X211bHRpcGxlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiUwIGFwcGVhcnMgbXVsdGlwbGUgdGltZXMgaW4gY2xhdXNlcyBvbiB0aGUgc2FtZSBkZWNsYXJlIHRhcmdldCBkaXJlY3RpdmUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDExKQogRElBRyhlcnJfb21wX2RlY2xhcmVfdGFyZ2V0X3RvX2FuZF9saW5rLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiUwIG11c3Qgbm90IGFwcGVhciBpbiBib3RoIGNsYXVzZXMgJ3RvJyBhbmQgJ2xpbmsnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMSkKQEAgLTExODQsNiArMTE5MCw3IEBACiBESUFHKGVycl9vbXBfZGVwZW5kX3NpbmtfZXhwZWN0ZWRfcGx1c19taW51cywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJleHBlY3RlZCAnKycgb3IgJy0nIG9wZXJhdGlvbiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMTEpCiBESUFHKGVycl9vbXBfZGVwZW5kX3Npbmtfc291cmNlX25vdF9hbGxvd2VkLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIidkZXBlbmQoJXNlbGVjdHtzb3VyY2V8c2luazp2ZWN9MCknIGNsYXVzZSVzZWxlY3R7fHN9MCBjYW5ub3QgYmUgbWl4ZWQgd2l0aCAnZGVwZW5kKCVzZWxlY3R7c2luazp2ZWN8c291cmNlfTApJyBjbGF1c2Ulc2VsZWN0e3N8fTAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDExKQogRElBRyhlcnJfb21wX2RlcGVuZF9zaW5rX3VuZXhwZWN0ZWRfZXhwciwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1bmV4cGVjdGVkIGV4cHJlc3Npb246IG51bWJlciBvZiBleHByZXNzaW9ucyBpcyBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGFzc29jaWF0ZWQgbG9vcHMiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDExKQorRElBRyhlcnJfb21wX2R1cGxpY2F0ZV9tYXBfdHlwZV9tb2RpZmllciwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJzYW1lIG1hcCB0eXBlIG1vZGlmaWVyIGhhcyBiZWVuIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMTEpCiBESUFHKGVycl9vbXBfZXhwZWN0ZWRfYWNjZXNzX3RvX2RhdGFfZmllbGQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZXhwZWN0ZWQgYWNjZXNzIHRvIGRhdGEgZmllbGQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDExKQogRElBRyhlcnJfb21wX2V4cGVjdGVkX2FkZHJlc3NhYmxlX2x2YWx1ZV9vcl9hcnJheV9pdGVtLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImV4cGVjdGVkIGFkZHJlc3NhYmxlIGx2YWx1ZSBleHByZXNzaW9uLCBhcnJheSBlbGVtZW50IG9yIGFycmF5IHNlY3Rpb24iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDExKQogRElBRyhlcnJfb21wX2V4cGVjdGVkX2Jhc2VfdmFyX25hbWUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZXhwZWN0ZWQgdmFyaWFibGUgbmFtZSBhcyBhIGJhc2Ugb2YgdGhlIGFycmF5ICVzZWxlY3R7c3Vic2NyaXB0fHNlY3Rpb259MCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMTEpCkBAIC0xMjAzLDYgKzEyMTAsNyBAQAogRElBRyhlcnJfb21wX2hpbnRfY2xhdXNlX25vX25hbWUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidGhlIG5hbWUgb2YgdGhlIGNvbnN0cnVjdCBtdXN0IGJlIHNwZWNpZmllZCBpbiBwcmVzZW5jZSBvZiAnaGludCcgY2xhdXNlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMSkKIERJQUcoZXJyX29tcF9pbl9yZWR1Y3Rpb25fbm90X3Rhc2tfcmVkdWN0aW9uLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImluX3JlZHVjdGlvbiB2YXJpYWJsZSBtdXN0IGFwcGVhciBpbiBhIHRhc2tfcmVkdWN0aW9uIGNsYXVzZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMTEpCiBESUFHKGVycl9vbXBfaW5jb21wbGV0ZV90eXBlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImV4cHJlc3Npb24gaGFzIGluY29tcGxldGUgY2xhc3MgdHlwZSAlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMTEpCitESUFHKGVycl9vbXBfaW52YWxpZF9tYXBfdGhpc19leHByLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgJ3RoaXMnIGV4cHJlc3Npb24gb24gJ21hcCcgY2xhdXNlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMSkKIERJQUcoZXJyX29tcF9pbnZhbGlkX21hcF90eXBlX2Zvcl9kaXJlY3RpdmUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJXNlbGVjdHttYXAgdHlwZSAnJTEnIGlzIG5vdCBhbGxvd2VkfG1hcCB0eXBlIG11c3QgYmUgc3BlY2lmaWVkfTAgZm9yICcjcHJhZ21hIG9tcCAlMiciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDExKQogRElBRyhlcnJfb21wX2ludmFsaWRfc2NvcGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJyNwcmFnbWEgb21wICUwJyBkaXJlY3RpdmUgbXVzdCBhcHBlYXIgb25seSBpbiBmaWxlIHNjb3BlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMSkKIERJQUcoZXJyX29tcF9pbnZhbGlkX3RhcmdldF9kZWNsLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiUwIHVzZWQgaW4gZGVjbGFyZSB0YXJnZXQgZGlyZWN0aXZlIGlzIG5vdCBhIHZhcmlhYmxlIG9yIGEgZnVuY3Rpb24gbmFtZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMTEpCkBAIC0xMjIxLDYgKzEyMjksNyBAQAogRElBRyhlcnJfb21wX2xvb3BfdmFyX2RzYSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJsb29wIGl0ZXJhdGlvbiB2YXJpYWJsZSBpbiB0aGUgYXNzb2NpYXRlZCBsb29wIG9mICdvbXAgJTEnIGRpcmVjdGl2ZSBtYXkgbm90IGJlICUwLCBwcmVkZXRlcm1pbmVkIGFzICUyIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAxMSkKIERJQUcoZXJyX29tcF9sb29wX3ZhcmlhYmxlX3R5cGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidmFyaWFibGUgbXVzdCBiZSBvZiBpbnRlZ2VyIG9yICVzZWxlY3R7cG9pbnRlcnxyYW5kb20gYWNjZXNzIGl0ZXJhdG9yfTAgdHlwZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMTEpCiBESUFHKGVycl9vbXBfbWFwX3NoYXJlZF9zdG9yYWdlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInZhcmlhYmxlIGFscmVhZHkgbWFya2VkIGFzIG1hcHBlZCBpbiBjdXJyZW50IGNvbnN0cnVjdCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMTEpCitESUFHKGVycl9vbXBfbWFwcGVyX3dyb25nX3R5cGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibWFwcGVyIHR5cGUgbXVzdCBiZSBvZiBzdHJ1Y3QsIHVuaW9uIG9yIGNsYXNzIHR5cGUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDExKQogRElBRyhlcnJfb21wX211bHRpcGxlX2FycmF5X2l0ZW1zX2luX21hcF9jbGF1c2UsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibXVsdGlwbGUgYXJyYXkgZWxlbWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIHZhcmlhYmxlIGFyZSBub3QgYWxsb3dlZCBpbiBtYXAgY2xhdXNlcyBvZiB0aGUgc2FtZSBjb25zdHJ1Y3QiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDExKQogRElBRyhlcnJfb21wX25lZ2F0aXZlX2V4cHJlc3Npb25faW5fY2xhdXNlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImFyZ3VtZW50IHRvICclMCcgY2xhdXNlIG11c3QgYmUgYSAlc2VsZWN0e25vbi1uZWdhdGl2ZXxzdHJpY3RseSBwb3NpdGl2ZX0xIGludGVnZXIgdmFsdWUiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDExKQogRElBRyhlcnJfb21wX25vX2NsYXVzZV9mb3JfZGlyZWN0aXZlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImV4cGVjdGVkIGF0IGxlYXN0IG9uZSAlMCBjbGF1c2UgZm9yICcjcHJhZ21hIG9tcCAlMSciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDExKQpAQCAtMTM0NywxMiArMTM1NiwxMSBAQAogRElBRyhlcnJfb3BlbmNsX3JlcXVpcmVzX2V4dGVuc2lvbiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1c2Ugb2YgJXNlbGVjdHt0eXBlfGRlY2xhcmF0aW9ufTAgJTEgcmVxdWlyZXMgJTIgZXh0ZW5zaW9uIHRvIGJlIGVuYWJsZWQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9vcGVuY2xfcmV0dXJuX3ZhbHVlX3dpdGhfYWRkcmVzc19zcGFjZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJyZXR1cm4gdmFsdWUgY2Fubm90IGJlIHF1YWxpZmllZCB3aXRoIGFkZHJlc3Mgc3BhY2UiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9vcGVuY2xfc2NhbGFyX3R5cGVfcmFua19ncmVhdGVyX3RoYW5fdmVjdG9yX3R5cGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAic2NhbGFyIG9wZXJhbmQgdHlwZSBoYXMgZ3JlYXRlciByYW5rIHRoYW4gdGhlIHR5cGUgb2YgdGhlIHZlY3RvciBlbGVtZW50LiAoJTAgYW5kICUxKSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKLURJQUcoZXJyX29wZW5jbF9zaXplb2ZfYWxpZ25vZl90eXBlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgYXBwbGljYXRpb24gb2YgJyVzZWxlY3R7c2l6ZW9mfGFsaWdub2Z8dmVjX3N0ZXB8X19idWlsdGluX29tcF9yZXF1aXJlZF9zaW1kX2FsaWdufTAnIHRvIGEgdm9pZCB0eXBlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfb3BlbmNsX3NpemVvZl9hbGlnbm9mX3R5cGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW52YWxpZCBhcHBsaWNhdGlvbiBvZiAnJXNlbGVjdHtzaXplb2Z8YWxpZ25vZnx2ZWNfc3RlcHxfX2J1aWx0aW5fb21wX3JlcXVpcmVkX3NpbWRfYWxpZ258X19hbGlnbm9mfTAnIHRvIGEgdm9pZCB0eXBlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfb3BlbmNsX3Rha2luZ19hZGRyZXNzX2NhcHR1cmUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidGFraW5nIGFkZHJlc3Mgb2YgYSBjYXB0dXJlIGlzIG5vdCBhbGxvd2VkIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfb3BlbmNsX3Rlcm5hcnlfd2l0aF9ibG9jaywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJibG9jayB0eXBlIGNhbm5vdCBiZSB1c2VkIGFzIGV4cHJlc3Npb24gaW4gdGVybmFyeSBleHByZXNzaW9uIGluIE9wZW5DTCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX29wZW5jbF90eXBlX2Nhbl9vbmx5X2JlX3VzZWRfYXNfZnVuY3Rpb25fcGFyYW1ldGVyLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInR5cGUgJTAgY2FuIG9ubHkgYmUgdXNlZCBhcyBhIGZ1bmN0aW9uIHBhcmFtZXRlciBpbiBPcGVuQ0wiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9vcGVuY2xfdHlwZV9zdHJ1Y3Rfb3JfdW5pb25fZmllbGQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidGhlICUwIHR5cGUgY2Fubm90IGJlIHVzZWQgdG8gZGVjbGFyZSBhIHN0cnVjdHVyZSBvciB1bmlvbiBmaWVsZCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKLURJQUcoZXJyX29wZW5jbF91bmtub3duX3R5cGVfc3BlY2lmaWVyLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIk9wZW5DTCAlc2VsZWN0e0N8QysrfTAgdmVyc2lvbiAlMSBkb2VzIG5vdCBzdXBwb3J0IHRoZSAnJTInICVzZWxlY3R7dHlwZSBxdWFsaWZpZXJ8c3RvcmFnZSBjbGFzcyBzcGVjaWZpZXJ9MyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX29wZW5jbF92YXJpYWRpY19mdW5jdGlvbiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIHByb3RvdHlwZSwgdmFyaWFkaWMgYXJndW1lbnRzIGFyZSBub3QgYWxsb3dlZCBpbiBPcGVuQ0wiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9vcGVuY2xfdmxhLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInZhcmlhYmxlIGxlbmd0aCBhcnJheXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gT3BlbkNMIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfb3Blbm1wX2RlZmF1bHRfc2ltZF9hbGlnbl9leHByLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgYXBwbGljYXRpb24gb2YgJ19fYnVpbHRpbl9vbXBfcmVxdWlyZWRfc2ltZF9hbGlnbicgdG8gYW4gZXhwcmVzc2lvbiwgb25seSB0eXBlIGlzIGFsbG93ZWQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCkBAIC0xNDMxLDYgKzE0MzksNyBAQAogRElBRyhlcnJfcGFyYW1fZGVmYXVsdF9hcmd1bWVudF90ZW1wbGF0ZV9yZWRlY2wsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZGVmYXVsdCBhcmd1bWVudHMgY2Fubm90IGJlIGFkZGVkIHRvIGEgZnVuY3Rpb24gdGVtcGxhdGUgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGRlY2xhcmVkIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfcGFyYW1fd2l0aF92b2lkX3R5cGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiYXJndW1lbnQgbWF5IG5vdCBoYXZlICd2b2lkJyB0eXBlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfcGFyYW1ldGVyX25hbWVfb21pdHRlZCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJwYXJhbWV0ZXIgbmFtZSBvbWl0dGVkIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfcGFyYW1ldGVyX3NoYWRvd19jYXB0dXJlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImEgbGFtYmRhIHBhcmFtZXRlciBjYW5ub3Qgc2hhZG93IGFuIGV4cGxpY2l0bHkgY2FwdHVyZWQgZW50aXR5IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAzKQogRElBRyhlcnJfcGFyYW1ldGVyc19yZXR2YWxfY2Fubm90X2hhdmVfZnAxNl90eXBlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiVzZWxlY3R7cGFyYW1ldGVyc3xmdW5jdGlvbiByZXR1cm4gdmFsdWV9MCBjYW5ub3QgaGF2ZSBfX2ZwMTYgdHlwZTsgZGlkIHlvdSBmb3JnZXQgKiA/IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfcGFyZW5zX3BvaW50ZXJfbWVtYmVyX2Z1bmN0aW9uLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNhbm5vdCBwYXJlbnRoZXNpemUgdGhlIG5hbWUgb2YgYSBtZXRob2Qgd2hlbiBmb3JtaW5nIGEgbWVtYmVyIHBvaW50ZXIiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9wYXJ0aWFsX3NwZWNfYXJnc19tYXRjaF9wcmltYXJ5X3RlbXBsYXRlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiVzZWxlY3R7Y2xhc3N8dmFyaWFibGV9MCB0ZW1wbGF0ZSBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGRvZXMgbm90IHNwZWNpYWxpemUgYW55IHRlbXBsYXRlIGFyZ3VtZW50OyB0byAlc2VsZWN0e2RlY2xhcmV8ZGVmaW5lfTEgdGhlIHByaW1hcnkgdGVtcGxhdGUsIHJlbW92ZSB0aGUgdGVtcGxhdGUgYXJndW1lbnQgbGlzdCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKQEAgLTE0NDMsMTEgKzE0NTIsMTIgQEAKIERJQUcoZXJyX3BvaW50ZXJfdG9fbWVtYmVyX29wZXJfdmFsdWVfY2xhc3NpZnksIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAicG9pbnRlci10by1tZW1iZXIgZnVuY3Rpb24gdHlwZSAlMCBjYW4gb25seSBiZSBjYWxsZWQgb24gYW4gJXNlbGVjdHtydmFsdWV8bHZhbHVlfTEiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9wb2ludGVyX3RvX21lbWJlcl90eXBlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgdXNlIG9mIHBvaW50ZXIgdG8gbWVtYmVyIHR5cGUgYWZ0ZXIgJXNlbGVjdHsuKnwtPip9MCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX3BwY19idWlsdGluX29ubHlfb25fcHdyNywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ0aGlzIGJ1aWx0aW4gaXMgb25seSB2YWxpZCBvbiBQT1dFUjcgb3IgbGF0ZXIgQ1BVcyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKK0RJQUcoZXJyX3ByYWdtYV9hdHRyX2F0dHJfbm9fcHVzaCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICInI3ByYWdtYSBjbGFuZyBhdHRyaWJ1dGUnIGF0dHJpYnV0ZSB3aXRoIG5vIG1hdGNoaW5nICcjcHJhZ21hIGNsYW5nIGF0dHJpYnV0ZSBwdXNoJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfaW52YWxpZF9tYXRjaGVycywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhdHRyaWJ1dGUgJTAgY2FuJ3QgYmUgYXBwbGllZCB0byAlMSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfbWF0Y2hlcl9uZWdhdGVkX3N1YnJ1bGVfY29udHJhZGljdHNfc3VicnVsZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJuZWdhdGVkIGF0dHJpYnV0ZSBzdWJqZWN0IG1hdGNoZXIgc3ViLXJ1bGUgJyUwJyBjb250cmFkaWN0cyBzdWItcnVsZSAnJTEnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfcHJhZ21hX2F0dHJpYnV0ZV9tYXRjaGVyX3N1YnJ1bGVfY29udHJhZGljdHNfcnVsZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJyZWR1bmRhbnQgYXR0cmlidXRlIHN1YmplY3QgbWF0Y2hlciBzdWItcnVsZSAnJTAnOyAnJTEnIGFscmVhZHkgbWF0Y2hlcyB0aG9zZSBkZWNsYXJhdGlvbnMiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9wcmFnbWFfYXR0cmlidXRlX25vX3BvcF9lb2YsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidW50ZXJtaW5hdGVkICcjcHJhZ21hIGNsYW5nIGF0dHJpYnV0ZSBwdXNoJyBhdCBlbmQgb2YgZmlsZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKLURJQUcoZXJyX3ByYWdtYV9hdHRyaWJ1dGVfc3RhY2tfbWlzbWF0Y2gsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJyNwcmFnbWEgY2xhbmcgYXR0cmlidXRlIHBvcCcgd2l0aCBubyBtYXRjaGluZyAnI3ByYWdtYSBjbGFuZyBhdHRyaWJ1dGUgcHVzaCciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCitESUFHKGVycl9wcmFnbWFfYXR0cmlidXRlX3N0YWNrX21pc21hdGNoLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIicjcHJhZ21hIGNsYW5nIGF0dHJpYnV0ZSAlc2VsZWN0eyUxLnx9MHBvcCcgd2l0aCBubyBtYXRjaGluZyAnI3ByYWdtYSBjbGFuZyBhdHRyaWJ1dGUgJXNlbGVjdHslMS58fTBwdXNoJyIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX3ByYWdtYV9sb29wX2NvbXBhdGliaWxpdHksIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJXNlbGVjdHtpbmNvbXBhdGlibGV8ZHVwbGljYXRlfTAgZGlyZWN0aXZlcyAnJTEnIGFuZCAnJTInIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfcHJhZ21hX2xvb3BfaW52YWxpZF9hcmd1bWVudF90eXBlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgYXJndW1lbnQgb2YgdHlwZSAlMDsgZXhwZWN0ZWQgYW4gaW50ZWdlciB0eXBlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfcHJhZ21hX2xvb3BfaW52YWxpZF9hcmd1bWVudF92YWx1ZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlc2VsZWN0e2ludmFsaWQgdmFsdWUgJyUwJzsgbXVzdCBiZSBwb3NpdGl2ZXx2YWx1ZSAnJTAnIGlzIHRvbyBsYXJnZX0xIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQpAQCAtMTQ3OSw3ICsxNDg5LDcgQEAKIERJQUcoZXJyX3B1cmVfZnJpZW5kLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImZyaWVuZCBkZWNsYXJhdGlvbiBjYW5ub3QgaGF2ZSBhIHB1cmUtc3BlY2lmaWVyIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfcXVhbGlmaWVkX2NhdGNoX2RlY2xhcmF0b3IsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiZXhjZXB0aW9uIGRlY2xhcmF0b3IgY2Fubm90IGJlIHF1YWxpZmllZCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX3F1YWxpZmllZF9mcmllbmRfZGVmLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImZyaWVuZCBmdW5jdGlvbiBkZWZpbml0aW9uIGNhbm5vdCBiZSBxdWFsaWZpZWQgd2l0aCAnJTAnIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQotRElBRyhlcnJfcXVhbGlmaWVkX2ZyaWVuZF9ub3RfZm91bmQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibm8gZnVuY3Rpb24gbmFtZWQgJTAgd2l0aCB0eXBlICUxIHdhcyBmb3VuZCBpbiB0aGUgc3BlY2lmaWVkIHNjb3BlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfcXVhbGlmaWVkX2ZyaWVuZF9ub19tYXRjaCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJmcmllbmQgZGVjbGFyYXRpb24gb2YgJTAgZG9lcyBub3QgbWF0Y2ggYW55IGRlY2xhcmF0aW9uIGluICUxIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfcXVhbGlmaWVkX21lbWJlcl9ub25jbGFzcywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJxdWFsaWZpZWQgbWVtYmVyIGFjY2VzcyByZWZlcnMgdG8gYSBtZW1iZXIgaW4gJTAiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9xdWFsaWZpZWRfbWVtYmVyX29mX3VucmVsYXRlZCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlcTAgaXMgbm90IGEgbWVtYmVyIG9mIGNsYXNzICUxIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfcXVhbGlmaWVkX29iamNfYWNjZXNzLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiVzZWxlY3R7cHJvcGVydHl8aW5zdGFuY2UgdmFyaWFibGV9MCBhY2Nlc3MgY2Fubm90IGJlIHF1YWxpZmllZCB3aXRoICclMSciLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCkBAIC0xNTEzLDcgKzE1MjMsNyBAQAogRElBRyhlcnJfcmVmX3F1YWxpZmllcl9vdmVybG9hZCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjYW5ub3Qgb3ZlcmxvYWQgYSBtZW1iZXIgZnVuY3Rpb24gJXNlbGVjdHt3aXRob3V0IGEgcmVmLXF1YWxpZmllcnx3aXRoIHJlZi1xdWFsaWZpZXIgJyYnfHdpdGggcmVmLXF1YWxpZmllciAnJiYnfTAgd2l0aCBhIG1lbWJlciBmdW5jdGlvbiAlc2VsZWN0e3dpdGhvdXQgYSByZWYtcXVhbGlmaWVyfHdpdGggcmVmLXF1YWxpZmllciAnJid8d2l0aCByZWYtcXVhbGlmaWVyICcmJid9MSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX3JlZl92bV90eXBlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNhbm5vdCByZWZlciB0byBkZWNsYXJhdGlvbiB3aXRoIGEgdmFyaWFibHkgbW9kaWZpZWQgdHlwZSBpbnNpZGUgYmxvY2siLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9yZWZlcmVuY2VfYmluZF9kcm9wc19xdWFscywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJiaW5kaW5nIHZhbHVlICVkaWZme29mIHR5cGUgJCB0byByZWZlcmVuY2UgdG8gdHlwZSAkfHRvIHJlZmVyZW5jZX0wLDEgZHJvcHMgJXNlbGVjdHs8PEVSUk9SPj58J2NvbnN0J3wncmVzdHJpY3QnfCdjb25zdCcgYW5kICdyZXN0cmljdCd8J3ZvbGF0aWxlJ3wnY29uc3QnIGFuZCAndm9sYXRpbGUnfCdyZXN0cmljdCcgYW5kICd2b2xhdGlsZSd8J2NvbnN0JywgJ3Jlc3RyaWN0JywgYW5kICd2b2xhdGlsZSd9MiBxdWFsaWZpZXIlcGx1cmFsezE6fDI6fDQ6fDpzfTIiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCi1ESUFHKGVycl9yZWZlcmVuY2VfYmluZF9mYWlsZWQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAicmVmZXJlbmNlICVkaWZme3RvIHR5cGUgJCBjb3VsZCBub3QgYmluZCB0byBhbiAlc2VsZWN0e3J2YWx1ZXxsdmFsdWV9MSBvZiB0eXBlICR8Y291bGQgbm90IGJpbmQgdG8gJXNlbGVjdHtydmFsdWV8bHZhbHVlfTEgb2YgaW5jb21wYXRpYmxlIHR5cGV9MCwyIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfcmVmZXJlbmNlX2JpbmRfZmFpbGVkLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInJlZmVyZW5jZSAlZGlmZnt0byAlc2VsZWN0e3R5cGV8aW5jb21wbGV0ZSB0eXBlfTEgJCBjb3VsZCBub3QgYmluZCB0byBhbiAlc2VsZWN0e3J2YWx1ZXxsdmFsdWV9MiBvZiB0eXBlICR8Y291bGQgbm90IGJpbmQgdG8gJXNlbGVjdHtydmFsdWV8bHZhbHVlfTIgb2YgaW5jb21wYXRpYmxlIHR5cGV9MCwzIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfcmVmZXJlbmNlX2JpbmRfaW5pdF9saXN0LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInJlZmVyZW5jZSB0byB0eXBlICUwIGNhbm5vdCBiaW5kIHRvIGFuIGluaXRpYWxpemVyIGxpc3QiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9yZWZlcmVuY2VfYmluZF90b19iaXRmaWVsZCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlc2VsZWN0e25vbi1jb25zdHx2b2xhdGlsZX0wIHJlZmVyZW5jZSBjYW5ub3QgYmluZCB0byBiaXQtZmllbGQlc2VsZWN0e3wgJTF9MiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX3JlZmVyZW5jZV9iaW5kX3RvX3ZlY3Rvcl9lbGVtZW50LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiVzZWxlY3R7bm9uLWNvbnN0fHZvbGF0aWxlfTAgcmVmZXJlbmNlIGNhbm5vdCBiaW5kIHRvIHZlY3RvciBlbGVtZW50IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQpAQCAtMTU1NSw4ICsxNTY1LDggQEAKIERJQUcoZXJyX3NoaWZ0X3Joc19vbmx5X3ZlY3RvciwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJyZXF1ZXN0ZWQgc2hpZnQgaXMgYSB2ZWN0b3Igb2YgdHlwZSAlMCBidXQgdGhlIGZpcnN0IG9wZXJhbmQgaXMgbm90IGEgdmVjdG9yICglMSkiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9zaHVmZmxldmVjdG9yX2FyZ3VtZW50X3Rvb19sYXJnZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbmRleCBmb3IgX19idWlsdGluX3NodWZmbGV2ZWN0b3IgbXVzdCBiZSBsZXNzIHRoYW4gdGhlIHRvdGFsIG51bWJlciBvZiB2ZWN0b3IgZWxlbWVudHMiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9zaHVmZmxldmVjdG9yX25vbmNvbnN0YW50X2FyZ3VtZW50LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImluZGV4IGZvciBfX2J1aWx0aW5fc2h1ZmZsZXZlY3RvciBtdXN0IGJlIGEgY29uc3RhbnQgaW50ZWdlciIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKLURJQUcoZXJyX3NpemVvZl9hbGlnbm9mX2Z1bmN0aW9uX3R5cGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW52YWxpZCBhcHBsaWNhdGlvbiBvZiAnJXNlbGVjdHtzaXplb2Z8YWxpZ25vZnx2ZWNfc3RlcHxfX2J1aWx0aW5fb21wX3JlcXVpcmVkX3NpbWRfYWxpZ259MCcgdG8gYSBmdW5jdGlvbiB0eXBlIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQotRElBRyhlcnJfc2l6ZW9mX2FsaWdub2ZfaW5jb21wbGV0ZV90eXBlLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgYXBwbGljYXRpb24gb2YgJyVzZWxlY3R7c2l6ZW9mfGFsaWdub2Z8dmVjX3N0ZXB8X19idWlsdGluX29tcF9yZXF1aXJlZF9zaW1kX2FsaWdufTAnIHRvIGFuIGluY29tcGxldGUgdHlwZSAlMSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKK0RJQUcoZXJyX3NpemVvZl9hbGlnbm9mX2Z1bmN0aW9uX3R5cGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW52YWxpZCBhcHBsaWNhdGlvbiBvZiAnJXNlbGVjdHtzaXplb2Z8YWxpZ25vZnx2ZWNfc3RlcHxfX2J1aWx0aW5fb21wX3JlcXVpcmVkX3NpbWRfYWxpZ258X19hbGlnbm9mfTAnIHRvIGEgZnVuY3Rpb24gdHlwZSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKK0RJQUcoZXJyX3NpemVvZl9hbGlnbm9mX2luY29tcGxldGVfdHlwZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbnZhbGlkIGFwcGxpY2F0aW9uIG9mICclc2VsZWN0e3NpemVvZnxhbGlnbm9mfHZlY19zdGVwfF9fYnVpbHRpbl9vbXBfcmVxdWlyZWRfc2ltZF9hbGlnbnxfX2FsaWdub2Z9MCcgdG8gYW4gaW5jb21wbGV0ZSB0eXBlICUxIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfc2l6ZW9mX2FsaWdub2ZfdHlwZW9mX2JpdGZpZWxkLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImludmFsaWQgYXBwbGljYXRpb24gb2YgJyVzZWxlY3R7c2l6ZW9mfGFsaWdub2Z8dHlwZW9mfTAnIHRvIGJpdC1maWVsZCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX3NpemVvZl9ub25mcmFnaWxlX2ludGVyZmFjZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJhcHBsaWNhdGlvbiBvZiAnJXNlbGVjdHthbGlnbm9mfHNpemVvZn0xJyB0byBpbnRlcmZhY2UgJTAgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIGFyY2hpdGVjdHVyZSBhbmQgcGxhdGZvcm0iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCiBESUFHKGVycl9zaXplb2ZfcGFja19ub19wYWNrX25hbWUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJTAgZG9lcyBub3QgcmVmZXIgdG8gdGhlIG5hbWUgb2YgYSBwYXJhbWV0ZXIgcGFjayIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKQEAgLTE3MjIsNiArMTczMiw3IEBACiBESUFHKGVycl90eXBlY2hlY2tfYWRkcm9mX2R0b3IsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidGFraW5nIHRoZSBhZGRyZXNzIG9mIGEgZGVzdHJ1Y3RvciIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX3R5cGVjaGVja19hZGRyb2ZfdGVtcG9yYXJ5LCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInRha2luZyB0aGUgYWRkcmVzcyBvZiBhIHRlbXBvcmFyeSBvYmplY3Qgb2YgdHlwZSAlMCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX3R5cGVjaGVja19hbWJpZ3VvdXNfY29uZGl0aW9uLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNvbnZlcnNpb24gJWRpZmZ7ZnJvbSAkIHRvICR8YmV0d2VlbiB0eXBlc30wLDEgaXMgYW1iaWd1b3VzIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQorRElBRyhlcnJfdHlwZWNoZWNrX2FyY19hc3NpZ25fZXh0ZXJuYWxseV9yZXRhaW5lZCwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ2YXJpYWJsZSBkZWNsYXJlZCB3aXRoICdvYmpjX2V4dGVybmFsbHlfcmV0YWluZWQnIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBBUkMiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDUpCiBESUFHKGVycl90eXBlY2hlY2tfYXJjX2Fzc2lnbl9zZWxmLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNhbm5vdCBhc3NpZ24gdG8gJ3NlbGYnIG91dHNpZGUgb2YgYSBtZXRob2QgaW4gdGhlIGluaXQgZmFtaWx5IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCA1KQogRElBRyhlcnJfdHlwZWNoZWNrX2FyY19hc3NpZ25fc2VsZl9jbGFzc19tZXRob2QsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiY2Fubm90IGFzc2lnbiB0byAnc2VsZicgaW4gYSBjbGFzcyBtZXRob2QiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDUpCiBESUFHKGVycl90eXBlY2hlY2tfYXJpdGhtZXRpY19pbmNvbXBsZXRlX3R5cGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiYXJpdGhtZXRpYyBvbiBhIHBvaW50ZXIgdG8gYW4gaW5jb21wbGV0ZSB0eXBlICUwIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQpAQCAtMTc1Niw3ICsxNzY3LDcgQEAKIERJQUcoZXJyX3R5cGVjaGVja19jb25kX2V4cGVjdF9zY2FsYXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidXNlZCB0eXBlICUwIHdoZXJlIGFyaXRobWV0aWMgb3IgcG9pbnRlciB0eXBlIGlzIHJlcXVpcmVkIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfdHlwZWNoZWNrX2NvbmRfaW5jb21wYXRpYmxlX29wZXJhbmRzLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImluY29tcGF0aWJsZSBvcGVyYW5kIHR5cGVzJWRpZmZ7ICgkIGFuZCAkKXx9MCwxIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfdHlwZWNoZWNrX2NvbmRfaW5jb21wYXRpYmxlX29wZXJhbmRzX251bGwsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibm9uLXBvaW50ZXIgb3BlcmFuZCB0eXBlICUwIGluY29tcGF0aWJsZSB3aXRoICVzZWxlY3R7TlVMTHxudWxscHRyfTEiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCi1ESUFHKGVycl90eXBlY2hlY2tfY29udmVydF9pbmNvbXBhdGlibGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiJXNlbGVjdHslZGlmZnthc3NpZ25pbmcgdG8gJCBmcm9tIGluY29tcGF0aWJsZSB0eXBlICR8YXNzaWduaW5nIHRvIHR5cGUgZnJvbSBpbmNvbXBhdGlibGUgdHlwZX0wLDF8JWRpZmZ7cGFzc2luZyAkIHRvIHBhcmFtZXRlciBvZiBpbmNvbXBhdGlibGUgdHlwZSAkfHBhc3NpbmcgdHlwZSB0byBwYXJhbWV0ZXIgb2YgaW5jb21wYXRpYmxlIHR5cGV9MCwxfCVkaWZme3JldHVybmluZyAkIGZyb20gYSBmdW5jdGlvbiB3aXRoIGluY29tcGF0aWJsZSByZXN1bHQgdHlwZSAkfHJldHVybmluZyB0eXBlIGZyb20gYSBmdW5jdGlvbiB3aXRoIGluY29tcGF0aWJsZSByZXN1bHQgdHlwZX0wLDF8JWRpZmZ7Y29udmVydGluZyAkIHRvIGluY29tcGF0aWJsZSB0eXBlICR8Y29udmVydGluZyB0eXBlIHRvIGluY29tcGF0aWJsZSB0eXBlfTAsMXwlZGlmZntpbml0aWFsaXppbmcgJCB3aXRoIGFuIGV4cHJlc3Npb24gb2YgaW5jb21wYXRpYmxlIHR5cGUgJHxpbml0aWFsaXppbmcgdHlwZSB3aXRoIGFuIGV4cHJlc3Npb24gb2YgaW5jb21wYXRpYmxlIHR5cGV9MCwxfCVkaWZme3NlbmRpbmcgJCB0byBwYXJhbWV0ZXIgb2YgaW5jb21wYXRpYmxlIHR5cGUgJHxzZW5kaW5nIHR5cGUgdG8gcGFyYW1ldGVyIG9mIGluY29tcGF0aWJsZSB0eXBlfTAsMXwlZGlmZntjYXN0aW5nICQgdG8gaW5jb21wYXRpYmxlIHR5cGUgJHxjYXN0aW5nIHR5cGUgdG8gaW5jb21wYXRpYmxlIHR5cGV9MCwxfTIlc2VsZWN0e3w7IGRlcmVmZXJlbmNlIHdpdGggKnw7IHRha2UgdGhlIGFkZHJlc3Mgd2l0aCAmfDsgcmVtb3ZlICp8OyByZW1vdmUgJn0zJXNlbGVjdHt8OiBkaWZmZXJlbnQgY2xhc3NlcyVkaWZmeyAoJCB2cyAkKXx9NSw2fDogZGlmZmVyZW50IG51bWJlciBvZiBwYXJhbWV0ZXJzICglNSB2cyAlNil8OiB0eXBlIG1pc21hdGNoIGF0ICVvcmRpbmFsNSBwYXJhbWV0ZXIlZGlmZnsgKCQgdnMgJCl8fTYsN3w6IGRpZmZlcmVudCByZXR1cm4gdHlwZSVkaWZmeyAoJCB2cyAkKXx9NSw2fDogZGlmZmVyZW50IHF1YWxpZmllcnMgKCVzZWxlY3R7bm9uZXxjb25zdHxyZXN0cmljdHxjb25zdCBhbmQgcmVzdHJpY3R8dm9sYXRpbGV8Y29uc3QgYW5kIHZvbGF0aWxlfHZvbGF0aWxlIGFuZCByZXN0cmljdHxjb25zdCwgdm9sYXRpbGUsIGFuZCByZXN0cmljdH01IHZzICVzZWxlY3R7bm9uZXxjb25zdHxyZXN0cmljdHxjb25zdCBhbmQgcmVzdHJpY3R8dm9sYXRpbGV8Y29uc3QgYW5kIHZvbGF0aWxlfHZvbGF0aWxlIGFuZCByZXN0cmljdHxjb25zdCwgdm9sYXRpbGUsIGFuZCByZXN0cmljdH02KXw6IGRpZmZlcmVudCBleGNlcHRpb24gc3BlY2lmaWNhdGlvbnN9NCIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKK0RJQUcoZXJyX3R5cGVjaGVja19jb252ZXJ0X2luY29tcGF0aWJsZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlc2VsZWN0eyVkaWZme2Fzc2lnbmluZyB0byAkIGZyb20gaW5jb21wYXRpYmxlIHR5cGUgJHxhc3NpZ25pbmcgdG8gdHlwZSBmcm9tIGluY29tcGF0aWJsZSB0eXBlfTAsMXwlZGlmZntwYXNzaW5nICQgdG8gcGFyYW1ldGVyIG9mIGluY29tcGF0aWJsZSB0eXBlICR8cGFzc2luZyB0eXBlIHRvIHBhcmFtZXRlciBvZiBpbmNvbXBhdGlibGUgdHlwZX0wLDF8JWRpZmZ7cmV0dXJuaW5nICQgZnJvbSBhIGZ1bmN0aW9uIHdpdGggaW5jb21wYXRpYmxlIHJlc3VsdCB0eXBlICR8cmV0dXJuaW5nIHR5cGUgZnJvbSBhIGZ1bmN0aW9uIHdpdGggaW5jb21wYXRpYmxlIHJlc3VsdCB0eXBlfTAsMXwlZGlmZntjb252ZXJ0aW5nICQgdG8gaW5jb21wYXRpYmxlIHR5cGUgJHxjb252ZXJ0aW5nIHR5cGUgdG8gaW5jb21wYXRpYmxlIHR5cGV9MCwxfCVkaWZme2luaXRpYWxpemluZyAkIHdpdGggYW4gZXhwcmVzc2lvbiBvZiBpbmNvbXBhdGlibGUgdHlwZSAkfGluaXRpYWxpemluZyB0eXBlIHdpdGggYW4gZXhwcmVzc2lvbiBvZiBpbmNvbXBhdGlibGUgdHlwZX0wLDF8JWRpZmZ7c2VuZGluZyAkIHRvIHBhcmFtZXRlciBvZiBpbmNvbXBhdGlibGUgdHlwZSAkfHNlbmRpbmcgdHlwZSB0byBwYXJhbWV0ZXIgb2YgaW5jb21wYXRpYmxlIHR5cGV9MCwxfCVkaWZme2Nhc3RpbmcgJCB0byBpbmNvbXBhdGlibGUgdHlwZSAkfGNhc3RpbmcgdHlwZSB0byBpbmNvbXBhdGlibGUgdHlwZX0wLDF9MiVzZWxlY3R7fDsgZGVyZWZlcmVuY2Ugd2l0aCAqfDsgdGFrZSB0aGUgYWRkcmVzcyB3aXRoICZ8OyByZW1vdmUgKnw7IHJlbW92ZSAmfTMlc2VsZWN0e3w6IGRpZmZlcmVudCBjbGFzc2VzJWRpZmZ7ICgkIHZzICQpfH01LDZ8OiBkaWZmZXJlbnQgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCU1IHZzICU2KXw6IHR5cGUgbWlzbWF0Y2ggYXQgJW9yZGluYWw1IHBhcmFtZXRlciVkaWZmeyAoJCB2cyAkKXx9Niw3fDogZGlmZmVyZW50IHJldHVybiB0eXBlJWRpZmZ7ICgkIHZzICQpfH01LDZ8OiBkaWZmZXJlbnQgcXVhbGlmaWVycyAoJTUgdnMgJTYpfDogZGlmZmVyZW50IGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uc300IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfdHlwZWNoZWNrX2NvbnZlcnRfaW5jb21wYXRpYmxlX2Jsb2NrX3BvaW50ZXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW5jb21wYXRpYmxlIGJsb2NrIHBvaW50ZXIgdHlwZXMgJXNlbGVjdHslZGlmZnthc3NpZ25pbmcgdG8gJCBmcm9tICR8YXNzaWduaW5nIHRvIGRpZmZlcmVudCB0eXBlc30wLDF8JWRpZmZ7cGFzc2luZyAkIHRvIHBhcmFtZXRlciBvZiB0eXBlICR8cGFzc2luZyB0byBwYXJhbWV0ZXIgb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme3JldHVybmluZyAkIGZyb20gYSBmdW5jdGlvbiB3aXRoIHJlc3VsdCB0eXBlICR8cmV0dXJuaW5nIGZyb20gZnVuY3Rpb24gd2l0aCBkaWZmZXJlbnQgcmV0dXJuIHR5cGV9MCwxfCVkaWZme2NvbnZlcnRpbmcgJCB0byB0eXBlICR8Y29udmVydGluZyBiZXR3ZWVuIHR5cGVzfTAsMXwlZGlmZntpbml0aWFsaXppbmcgJCB3aXRoIGFuIGV4cHJlc3Npb24gb2YgdHlwZSAkfGluaXRpYWxpemluZyB3aXRoIGV4cHJlc3Npb24gb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme3NlbmRpbmcgJCB0byBwYXJhbWV0ZXIgb2YgdHlwZSAkfHNlbmRpbmcgdG8gcGFyYW1ldGVyIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntjYXN0aW5nICQgdG8gdHlwZSAkfGNhc3RpbmcgYmV0d2VlbiB0eXBlc30wLDF9MiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX3R5cGVjaGVja19jb252ZXJ0ZWRfY29uc3RhbnRfZXhwcmVzc2lvbiwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ2YWx1ZSBvZiB0eXBlICUwIGlzIG5vdCBpbXBsaWNpdGx5IGNvbnZlcnRpYmxlIHRvICUxIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfdHlwZWNoZWNrX2NvbnZlcnRlZF9jb25zdGFudF9leHByZXNzaW9uX2Rpc2FsbG93ZWQsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiY29udmVyc2lvbiBmcm9tICUwIHRvICUxIGlzIG5vdCBhbGxvd2VkIGluIGEgY29udmVydGVkIGNvbnN0YW50IGV4cHJlc3Npb24iLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCkBAIC0xODcxLDcgKzE4ODIsNiBAQAogRElBRyhlcnJfdXNlX2NvbnRpbnVhdGlvbl9jbGFzcywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbGxlZ2FsIHJlZGVjbGFyYXRpb24gb2YgcHJvcGVydHkgaW4gY2xhc3MgZXh0ZW5zaW9uICUwIChhdHRyaWJ1dGUgbXVzdCBiZSAncmVhZHdyaXRlJywgd2hpbGUgaXRzIHByaW1hcnkgbXVzdCBiZSAncmVhZG9ubHknKSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX3VzZV9jb250aW51YXRpb25fY2xhc3NfcmVkZWNsYXJhdGlvbl9yZWFkd3JpdGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaWxsZWdhbCByZWRlY2xhcmF0aW9uIG9mICdyZWFkd3JpdGUnIHByb3BlcnR5IGluIGNsYXNzIGV4dGVuc2lvbiAlMCAocGVyaGFwcyB5b3UgaW50ZW5kZWQgdGhpcyB0byBiZSBhICdyZWFkd3JpdGUnIHJlZGVjbGFyYXRpb24gb2YgYSAncmVhZG9ubHknIHB1YmxpYyBwcm9wZXJ0eT8pIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfdXNlX29mX2RlZmF1bHRfYXJndW1lbnRfdG9fZnVuY3Rpb25fZGVjbGFyZWRfbGF0ZXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidXNlIG9mIGRlZmF1bHQgYXJndW1lbnQgdG8gZnVuY3Rpb24gJTAgdGhhdCBpcyBkZWNsYXJlZCBsYXRlciBpbiBjbGFzcyAlMSIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKLURJQUcoZXJyX3VzZV9vZl90YWdfbmFtZV93aXRob3V0X3RhZywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJtdXN0IHVzZSAnJTEnIHRhZyB0byByZWZlciB0byB0eXBlICUwJXNlbGVjdHt8IGluIHRoaXMgc2NvcGV9MiIsIDAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgdHJ1ZSwgMikKIERJQUcoZXJyX3VzZV93aXRoX3dyb25nX3RhZywgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1c2Ugb2YgJTAgd2l0aCB0YWcgdHlwZSB0aGF0IGRvZXMgbm90IG1hdGNoIHByZXZpb3VzIGRlY2xhcmF0aW9uIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfdXNpbmdfZGVjbF9jYW5fbm90X3JlZmVyX3RvX2NsYXNzX21lbWJlciwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1c2luZyBkZWNsYXJhdGlvbiBjYW5ub3QgcmVmZXIgdG8gY2xhc3MgbWVtYmVyIiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJfdXNpbmdfZGVjbF9jYW5fbm90X3JlZmVyX3RvX25hbWVzcGFjZSwgQ0xBU1NfRVJST1IsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1c2luZyBkZWNsYXJhdGlvbiBjYW5ub3QgcmVmZXIgdG8gYSBuYW1lc3BhY2UiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCkBAIC0xOTM5LDIwNyArMTk0OSwyMDUgQEAKIERJQUcoZXJyX3g4Nl9idWlsdGluX2ludmFsaWRfc2NhbGUsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAic2NhbGUgYXJndW1lbnQgbXVzdCBiZSAxLCAyLCA0LCBvciA4IiwgMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCB0cnVlLCAyKQogRElBRyhlcnJvcl9pbm91dHB1dF9jb25mbGljdF93aXRoX2Nsb2JiZXIsIENMQVNTX0VSUk9SLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiYXNtLXNwZWNpZmllciBmb3IgaW5wdXQgb3Igb3V0cHV0IHZhcmlhYmxlIGNvbmZsaWN0cyB3aXRoIGFzbSBjbG9iYmVyIGxpc3QiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDApCiBESUFHKGV4dF9hZ2dyZWdhdGVfaW5pdF9ub3RfY29uc3RhbnQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW5pdGlhbGl6ZXIgZm9yIGFnZ3JlZ2F0ZSBpcyBub3QgYSBjb21waWxlLXRpbWUgY29uc3RhbnQiLCAxMTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfYW5vbnltb3VzX3JlY29yZF93aXRoX2Fub255bW91c190eXBlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImFub255bW91cyB0eXBlcyBkZWNsYXJlZCBpbiBhbiBhbm9ueW1vdXMgJXNlbGVjdHtzdHJ1Y3R8dW5pb259MCBhcmUgYW4gZXh0ZW5zaW9uIiwgNDIzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X2Fub255bW91c19yZWNvcmRfd2l0aF90eXBlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInR5cGVzIGRlY2xhcmVkIGluIGFuIGFub255bW91cyAlc2VsZWN0e3N0cnVjdHx1bmlvbn0wIGFyZSBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzNjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfYW5vbnltb3VzX3N0cnVjdF91bmlvbl9xdWFsaWZpZWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYW5vbnltb3VzICVzZWxlY3R7c3RydWN0fHVuaW9ufTAgY2Fubm90IGJlICclMSciLCA1MTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfYW5vbnltb3VzX3JlY29yZF93aXRoX2Fub255bW91c190eXBlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImFub255bW91cyB0eXBlcyBkZWNsYXJlZCBpbiBhbiBhbm9ueW1vdXMgJXNlbGVjdHtzdHJ1Y3R8dW5pb259MCBhcmUgYW4gZXh0ZW5zaW9uIiwgNDMyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X2Fub255bW91c19yZWNvcmRfd2l0aF90eXBlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInR5cGVzIGRlY2xhcmVkIGluIGFuIGFub255bW91cyAlc2VsZWN0e3N0cnVjdHx1bmlvbn0wIGFyZSBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzNzIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfYW5vbnltb3VzX3N0cnVjdF91bmlvbl9xdWFsaWZpZWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYW5vbnltb3VzICVzZWxlY3R7c3RydWN0fHVuaW9ufTAgY2Fubm90IGJlICclMSciLCA1MjcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfYW5vbnltb3VzX3VuaW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImFub255bW91cyB1bmlvbnMgYXJlIGEgQzExIGV4dGVuc2lvbiIsIDExMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9hcnJheV9pbml0X2NvcHksIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW5pdGlhbGl6YXRpb24gb2YgYW4gYXJyYXkgJWRpZmZ7b2YgdHlwZSAkIGZyb20gYSBjb21wb3VuZCBsaXRlcmFsIG9mIHR5cGUgJHxmcm9tIGEgY29tcG91bmQgbGl0ZXJhbH0wLDEgaXMgYSBHTlUgZXh0ZW5zaW9uIiwgMjUyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X2FycmF5X2luaXRfcGFyZW5zLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJwYXJlbnRoZXNpemVkIGluaXRpYWxpemF0aW9uIG9mIGEgbWVtYmVyIGFycmF5IGlzIGEgR05VIGV4dGVuc2lvbiIsIDI0NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9hcnJheV9pbml0X2NvcHksIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW5pdGlhbGl6YXRpb24gb2YgYW4gYXJyYXkgJWRpZmZ7b2YgdHlwZSAkIGZyb20gYSBjb21wb3VuZCBsaXRlcmFsIG9mIHR5cGUgJHxmcm9tIGEgY29tcG91bmQgbGl0ZXJhbH0wLDEgaXMgYSBHTlUgZXh0ZW5zaW9uIiwgMjYwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X2FycmF5X2luaXRfcGFyZW5zLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJwYXJlbnRoZXNpemVkIGluaXRpYWxpemF0aW9uIG9mIGEgbWVtYmVyIGFycmF5IGlzIGEgR05VIGV4dGVuc2lvbiIsIDI1NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9hcnJheV9zaXplX2NvbnZlcnNpb24sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW1wbGljaXQgY29udmVyc2lvbiBmcm9tIGFycmF5IHNpemUgZXhwcmVzc2lvbiBvZiB0eXBlICUwIHRvICVzZWxlY3R7aW50ZWdyYWx8ZW51bWVyYXRpb259MSB0eXBlICUyIGlzIGEgQysrMTEgZXh0ZW5zaW9uIiwgNzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfYXV0b19uZXdfbGlzdF9pbml0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIklTTyBDKysgc3RhbmRhcmRzIGJlZm9yZSBDKysxNyBkbyBub3QgYWxsb3cgbmV3IGV4cHJlc3Npb24gZm9yIHR5cGUgJTAgdG8gdXNlIGxpc3QtaW5pdGlhbGl6YXRpb24iLCA5MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9hdXRvX3R5cGVfc3BlY2lmaWVyLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidhdXRvJyB0eXBlIHNwZWNpZmllciBpcyBhIEMrKzExIGV4dGVuc2lvbiIsIDc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X2JhZF9jeHhfY2FzdF9xdWFsaWZpZXJzX2F3YXlfaW5jb2hlcmVudCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJJU08gQysrIGRvZXMgbm90IGFsbG93ICVzZWxlY3R7Y29uc3RfY2FzdHxzdGF0aWNfY2FzdHxyZWludGVycHJldF9jYXN0fGR5bmFtaWNfY2FzdHxDLXN0eWxlIGNhc3R8ZnVuY3Rpb25hbC1zdHlsZSBjYXN0fTAgZnJvbSAlMSB0byAlMiBiZWNhdXNlIGl0IGNhc3RzIGF3YXkgcXVhbGlmaWVycywgZXZlbiB0aG91Z2ggdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gdHlwZXMgYXJlIHVucmVsYXRlZCIsIDExOSwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X2JhZF9jeHhfY2FzdF9xdWFsaWZpZXJzX2F3YXlfaW5jb2hlcmVudCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJJU08gQysrIGRvZXMgbm90IGFsbG93ICVzZWxlY3R7Y29uc3RfY2FzdHxzdGF0aWNfY2FzdHxyZWludGVycHJldF9jYXN0fGR5bmFtaWNfY2FzdHxDLXN0eWxlIGNhc3R8ZnVuY3Rpb25hbC1zdHlsZSBjYXN0fTAgZnJvbSAlMSB0byAlMiBiZWNhdXNlIGl0IGNhc3RzIGF3YXkgcXVhbGlmaWVycywgZXZlbiB0aG91Z2ggdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gdHlwZXMgYXJlIHVucmVsYXRlZCIsIDEyMCwgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X2MxMV9hbm9ueW1vdXNfc3RydWN0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImFub255bW91cyBzdHJ1Y3RzIGFyZSBhIEMxMSBleHRlbnNpb24iLCAxMTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfYzk5X2FycmF5X3VzYWdlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiVzZWxlY3R7cXVhbGlmaWVyIGluIHxzdGF0aWMgfH0wYXJyYXkgc2l6ZSAlc2VsZWN0e3x8J1sqXSAnfTBpcyBhIEM5OSBmZWF0dXJlIiwgMTE0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X2M5OV9mbGV4aWJsZV9hcnJheV9tZW1iZXIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZmxleGlibGUgYXJyYXkgbWVtYmVycyBhcmUgYSBDOTkgZmVhdHVyZSIsIDExNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9jYW5ub3RfdXNlX3RyaXZpYWxfYWJpLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIid0cml2aWFsX2FiaScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJTAiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfY2FzdF9mbl9vYmosIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY2FzdCBiZXR3ZWVuIHBvaW50ZXItdG8tZnVuY3Rpb24gYW5kIHBvaW50ZXItdG8tb2JqZWN0IGlzIGFuIGV4dGVuc2lvbiIsIDUxNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9jYW5ub3RfdXNlX3RyaXZpYWxfYWJpLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIid0cml2aWFsX2FiaScgY2Fubm90IGJlIGFwcGxpZWQgdG8gJTAiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfY2FzdF9mbl9vYmosIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY2FzdCBiZXR3ZWVuIHBvaW50ZXItdG8tZnVuY3Rpb24gYW5kIHBvaW50ZXItdG8tb2JqZWN0IGlzIGFuIGV4dGVuc2lvbiIsIDUyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9jY2VfbmFycm93aW5nLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlc2VsZWN0e2Nhc2UgdmFsdWV8ZW51bWVyYXRvciB2YWx1ZXxub24tdHlwZSB0ZW1wbGF0ZSBhcmd1bWVudHxhcnJheSBzaXplfGNvbnN0ZXhwciBpZiBjb25kaXRpb259MCAlc2VsZWN0e2Nhbm5vdCBiZSBuYXJyb3dlZCBmcm9tIHR5cGUgJTIgdG8gJTN8ZXZhbHVhdGVzIHRvICUyLCB3aGljaCBjYW5ub3QgYmUgbmFycm93ZWQgdG8gdHlwZSAlM30xIiwgODMsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9jb21wbGV4X2NvbXBvbmVudF9pbml0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbXBsZXggaW5pdGlhbGl6YXRpb24gc3BlY2lmeWluZyByZWFsIGFuZCBpbWFnaW5hcnkgY29tcG9uZW50cyBpcyBhbiBleHRlbnNpb24iLCAxMjgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfY29tcGxleF9jb21wb25lbnRfaW5pdCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjb21wbGV4IGluaXRpYWxpemF0aW9uIHNwZWNpZnlpbmcgcmVhbCBhbmQgaW1hZ2luYXJ5IGNvbXBvbmVudHMgaXMgYW4gZXh0ZW5zaW9uIiwgMTI5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X2NvbnN0ZXhwcl9ib2R5X2ludmFsaWRfc3RtdCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW4gYSBjb25zdGV4cHIgJXNlbGVjdHtmdW5jdGlvbnxjb25zdHJ1Y3Rvcn0wIGlzIGEgQysrMTQgZXh0ZW5zaW9uIiwgODcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfY29uc3RleHByX2JvZHlfaW52YWxpZF9zdG10X2N4eDJhLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzZSBvZiB0aGlzIHN0YXRlbWVudCBpbiBhIGNvbnN0ZXhwciAlc2VsZWN0e2Z1bmN0aW9ufGNvbnN0cnVjdG9yfTAgaXMgYSBDKysyYSBleHRlbnNpb24iLCA5OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9jb25zdGV4cHJfYm9keV9tdWx0aXBsZV9yZXR1cm4sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibXVsdGlwbGUgcmV0dXJuIHN0YXRlbWVudHMgaW4gY29uc3RleHByIGZ1bmN0aW9uIGlzIGEgQysrMTQgZXh0ZW5zaW9uIiwgODcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfY29uc3RleHByX2Z1bmN0aW9uX25ldmVyX2NvbnN0YW50X2V4cHIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNvbnN0ZXhwciAlc2VsZWN0e2Z1bmN0aW9ufGNvbnN0cnVjdG9yfTAgbmV2ZXIgcHJvZHVjZXMgYSBjb25zdGFudCBleHByZXNzaW9uIiwgMzI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X2NvbnN0ZXhwcl9mdW5jdGlvbl9uZXZlcl9jb25zdGFudF9leHByLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjb25zdGV4cHIgJXNlbGVjdHtmdW5jdGlvbnxjb25zdHJ1Y3Rvcn0wIG5ldmVyIHByb2R1Y2VzIGEgY29uc3RhbnQgZXhwcmVzc2lvbiIsIDMzNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9jb25zdGV4cHJfZnVuY3Rpb25fdHJ5X2Jsb2NrX2N4eDJhLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZ1bmN0aW9uIHRyeSBibG9jayBpbiBjb25zdGV4cHIgJXNlbGVjdHtmdW5jdGlvbnxjb25zdHJ1Y3Rvcn0wIGlzIGEgQysrMmEgZXh0ZW5zaW9uIiwgOTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfY29uc3RleHByX2xvY2FsX3ZhciwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ2YXJpYWJsZSBkZWNsYXJhdGlvbiBpbiBhIGNvbnN0ZXhwciAlc2VsZWN0e2Z1bmN0aW9ufGNvbnN0cnVjdG9yfTAgaXMgYSBDKysxNCBleHRlbnNpb24iLCA4NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9jb25zdGV4cHJfdHlwZV9kZWZpbml0aW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInR5cGUgZGVmaW5pdGlvbiBpbiBhIGNvbnN0ZXhwciAlc2VsZWN0e2Z1bmN0aW9ufGNvbnN0cnVjdG9yfTAgaXMgYSBDKysxNCBleHRlbnNpb24iLCA4NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9jeHgxNF9hdHRyLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVzZSBvZiB0aGUgJTAgYXR0cmlidXRlIGlzIGEgQysrMTQgZXh0ZW5zaW9uIiwgODcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfY3h4MTdfYXR0ciwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2Ugb2YgdGhlICUwIGF0dHJpYnV0ZSBpcyBhIEMrKzE3IGV4dGVuc2lvbiIsIDkxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X2RlY29tcF9kZWNsLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlY29tcG9zaXRpb24gZGVjbGFyYXRpb25zIGFyZSBhIEMrKzE3IGV4dGVuc2lvbiIsIDkxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X2RlY29tcF9kZWNsX2NvbmQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiSVNPIEMrKzE3IGRvZXMgbm90IHBlcm1pdCBzdHJ1Y3R1cmVkIGJpbmRpbmcgZGVjbGFyYXRpb24gaW4gYSBjb25kaXRpb24iLCA1OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9kZWZhdWx0X2luaXRfY29uc3QsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGVmYXVsdCBpbml0aWFsaXphdGlvbiBvZiBhbiBvYmplY3Qgb2YgY29uc3QgdHlwZSAlMCVzZWxlY3R7fCB3aXRob3V0IGEgdXNlci1wcm92aWRlZCBkZWZhdWx0IGNvbnN0cnVjdG9yfTEgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzY3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X2RlbGV0ZV92b2lkX3B0cl9vcGVyYW5kLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNhbm5vdCBkZWxldGUgZXhwcmVzc2lvbiB3aXRoIHBvaW50ZXItdG8tJ3ZvaWQnIHR5cGUgJTAiLCAxNTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfZGVwcmVjYXRlZF9zdHJpbmdfbGl0ZXJhbF9jb252ZXJzaW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIklTTyBDKysxMSBkb2VzIG5vdCBhbGxvdyBjb252ZXJzaW9uIGZyb20gc3RyaW5nIGxpdGVyYWwgdG8gJTAiLCA3NDMsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9kZWZhdWx0X2luaXRfY29uc3QsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGVmYXVsdCBpbml0aWFsaXphdGlvbiBvZiBhbiBvYmplY3Qgb2YgY29uc3QgdHlwZSAlMCVzZWxlY3R7fCB3aXRob3V0IGEgdXNlci1wcm92aWRlZCBkZWZhdWx0IGNvbnN0cnVjdG9yfTEgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzc2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X2RlbGV0ZV92b2lkX3B0cl9vcGVyYW5kLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNhbm5vdCBkZWxldGUgZXhwcmVzc2lvbiB3aXRoIHBvaW50ZXItdG8tJ3ZvaWQnIHR5cGUgJTAiLCAxNjEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfZGVwcmVjYXRlZF9zdHJpbmdfbGl0ZXJhbF9jb252ZXJzaW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIklTTyBDKysxMSBkb2VzIG5vdCBhbGxvdyBjb252ZXJzaW9uIGZyb20gc3RyaW5nIGxpdGVyYWwgdG8gJTAiLCA3NTYsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9kZXNpZ25hdGVkX2luaXQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZGVzaWduYXRlZCBpbml0aWFsaXplcnMgYXJlIGEgQzk5IGZlYXR1cmUiLCAxMTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfZHVwbGljYXRlX2RlY2xzcGVjLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImR1cGxpY2F0ZSAnJTAnIGRlY2xhcmF0aW9uIHNwZWNpZmllciIsIDE4NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9keW5hbWljX2V4Y2VwdGlvbl9zcGVjLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJJU08gQysrMTcgZG9lcyBub3QgYWxsb3cgZHluYW1pYyBleGNlcHRpb24gc3BlY2lmaWNhdGlvbnMiLCAxOTMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfZW1wdHlfc3RydWN0X3VuaW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImVtcHR5ICVzZWxlY3R7c3RydWN0fHVuaW9ufTAgaXMgYSBHTlUgZXh0ZW5zaW9uIiwgMjU2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X2VtcHR5X3N0cnVjdF91bmlvbiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJlbXB0eSAlc2VsZWN0e3N0cnVjdHx1bmlvbn0wIGlzIGEgR05VIGV4dGVuc2lvbiIsIDI2NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9lbnVtX2ZyaWVuZCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJiZWZyaWVuZGluZyBlbnVtZXJhdGlvbiB0eXBlICUwIGlzIGEgQysrMTEgZXh0ZW5zaW9uIiwgNzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfZW51bV90b29fbGFyZ2UsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZW51bWVyYXRpb24gdmFsdWVzIGV4Y2VlZCByYW5nZSBvZiBsYXJnZXN0IGludGVnZXIiLCAyMDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfZW51bV92YWx1ZV9ub3RfaW50LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIklTTyBDIHJlc3RyaWN0cyBlbnVtZXJhdG9yIHZhbHVlcyB0byByYW5nZSBvZiAnaW50JyAoJTAgaXMgdG9vICVzZWxlY3R7c21hbGx8bGFyZ2V9MSkiLCA1MTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfZW51bWVyYXRvcl9pbmNyZW1lbnRfdG9vX2xhcmdlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluY3JlbWVudGVkIGVudW1lcmF0b3IgdmFsdWUgJTAgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gdGhlIGxhcmdlc3QgaW50ZWdlciB0eXBlIiwgMjA0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X2VudW1lcmF0b3JfdG9vX2xhcmdlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImVudW1lcmF0b3IgdmFsdWUgaXMgbm90IHJlcHJlc2VudGFibGUgaW4gdGhlIHVuZGVybHlpbmcgdHlwZSAlMCIsIDM3MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9lbnVtX3Rvb19sYXJnZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJlbnVtZXJhdGlvbiB2YWx1ZXMgZXhjZWVkIHJhbmdlIG9mIGxhcmdlc3QgaW50ZWdlciIsIDIxMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9lbnVtX3ZhbHVlX25vdF9pbnQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiSVNPIEMgcmVzdHJpY3RzIGVudW1lcmF0b3IgdmFsdWVzIHRvIHJhbmdlIG9mICdpbnQnICglMCBpcyB0b28gJXNlbGVjdHtzbWFsbHxsYXJnZX0xKSIsIDUyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9lbnVtZXJhdG9yX2luY3JlbWVudF90b29fbGFyZ2UsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5jcmVtZW50ZWQgZW51bWVyYXRvciB2YWx1ZSAlMCBpcyBub3QgcmVwcmVzZW50YWJsZSBpbiB0aGUgbGFyZ2VzdCBpbnRlZ2VyIHR5cGUiLCAyMTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfZW51bWVyYXRvcl90b29fbGFyZ2UsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZW51bWVyYXRvciB2YWx1ZSBpcyBub3QgcmVwcmVzZW50YWJsZSBpbiB0aGUgdW5kZXJseWluZyB0eXBlICUwIiwgMzgxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X2VxdWFsc190aGlzX2xhbWJkYV9jYXB0dXJlX2N4eDJhLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGxpY2l0IGNhcHR1cmUgb2YgJ3RoaXMnIHdpdGggYSBjYXB0dXJlIGRlZmF1bHQgb2YgJz0nIGlzIGEgQysrMmEgZXh0ZW5zaW9uIiwgOTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzKQotRElBRyhleHRfZXF1aXZhbGVudF9pbnRlcm5hbF9saW5rYWdlX2RlY2xfaW5fbW9kdWxlcywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhbWJpZ3VvdXMgdXNlIG9mIGludGVybmFsIGxpbmthZ2UgZGVjbGFyYXRpb24gJTAgZGVmaW5lZCBpbiBtdWx0aXBsZSBtb2R1bGVzIiwgNDE0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTMpCitESUFHKGV4dF9lcXVpdmFsZW50X2ludGVybmFsX2xpbmthZ2VfZGVjbF9pbl9tb2R1bGVzLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFtYmlndW91cyB1c2Ugb2YgaW50ZXJuYWwgbGlua2FnZSBkZWNsYXJhdGlvbiAlMCBkZWZpbmVkIGluIG11bHRpcGxlIG1vZHVsZXMiLCA0MjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxMykKIERJQUcoZXh0X2V4Y2Vzc19pbml0aWFsaXplcnMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhjZXNzIGVsZW1lbnRzIGluICVzZWxlY3R7YXJyYXl8dmVjdG9yfHNjYWxhcnx1bmlvbnxzdHJ1Y3R9MCBpbml0aWFsaXplciIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfZXhjZXNzX2luaXRpYWxpemVyc19pbl9jaGFyX2FycmF5X2luaXRpYWxpemVyLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4Y2VzcyBlbGVtZW50cyBpbiBjaGFyIGFycmF5IGluaXRpYWxpemVyIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9leHBsaWNpdF9jb252ZXJzaW9uX2Z1bmN0aW9ucywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBsaWNpdCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBhcmUgYSBDKysxMSBleHRlbnNpb24iLCA3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9leHBsaWNpdF9pbnN0YW50aWF0aW9uX2R1cGxpY2F0ZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkdXBsaWNhdGUgZXhwbGljaXQgaW5zdGFudGlhdGlvbiBvZiAlMCBpZ25vcmVkIGFzIGEgTWljcm9zb2Z0IGV4dGVuc2lvbiIsIDM4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9leHBsaWNpdF9pbnN0YW50aWF0aW9uX3dpdGhvdXRfcXVhbGlmaWVkX2lkLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInF1YWxpZmllciBpbiBleHBsaWNpdCBpbnN0YW50aWF0aW9uIG9mICVxMCByZXF1aXJlcyBhIHRlbXBsYXRlLWlkIChhIHR5cGVkZWYgaXMgbm90IHBlcm1pdHRlZCkiLCA1MTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfZXhwbGljaXRfaW5zdGFudGlhdGlvbl9kdXBsaWNhdGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZHVwbGljYXRlIGV4cGxpY2l0IGluc3RhbnRpYXRpb24gb2YgJTAgaWdub3JlZCBhcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzOTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfZXhwbGljaXRfaW5zdGFudGlhdGlvbl93aXRob3V0X3F1YWxpZmllZF9pZCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJxdWFsaWZpZXIgaW4gZXhwbGljaXQgaW5zdGFudGlhdGlvbiBvZiAlcTAgcmVxdWlyZXMgYSB0ZW1wbGF0ZS1pZCAoYSB0eXBlZGVmIGlzIG5vdCBwZXJtaXR0ZWQpIiwgNTI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uX3N0b3JhZ2VfY2xhc3MsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwbGljaXQgc3BlY2lhbGl6YXRpb24gY2Fubm90IGhhdmUgYSBzdG9yYWdlIGNsYXNzIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9leHByX25vdF9pY2UsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZXhwcmVzc2lvbiBpcyBub3QgYW4gJXNlbGVjdHtpbnRlZ2VyfGludGVncmFsfTAgY29uc3RhbnQgZXhwcmVzc2lvbjsgZm9sZGluZyBpdCB0byBhIGNvbnN0YW50IGlzIGEgR05VIGV4dGVuc2lvbiIsIDI1OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9mbGV4aWJsZV9hcnJheV9lbXB0eV9hZ2dyZWdhdGVfZ251LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZsZXhpYmxlIGFycmF5IG1lbWJlciAlMCBpbiBvdGhlcndpc2UgZW1wdHkgJXNlbGVjdHtzdHJ1Y3R8aW50ZXJmYWNlfHVuaW9ufGNsYXNzfGVudW19MSBpcyBhIEdOVSBleHRlbnNpb24iLCAyNTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfZmxleGlibGVfYXJyYXlfZW1wdHlfYWdncmVnYXRlX21zLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZsZXhpYmxlIGFycmF5IG1lbWJlciAlMCBpbiBvdGhlcndpc2UgZW1wdHkgJXNlbGVjdHtzdHJ1Y3R8aW50ZXJmYWNlfHVuaW9ufGNsYXNzfGVudW19MSBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfZmxleGlibGVfYXJyYXlfaW5fYXJyYXksIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgbWF5IG5vdCBiZSB1c2VkIGFzIGFuIGFycmF5IGVsZW1lbnQgZHVlIHRvIGZsZXhpYmxlIGFycmF5IG1lbWJlciIsIDIyMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9mbGV4aWJsZV9hcnJheV9pbl9zdHJ1Y3QsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgbWF5IG5vdCBiZSBuZXN0ZWQgaW4gYSBzdHJ1Y3QgZHVlIHRvIGZsZXhpYmxlIGFycmF5IG1lbWJlciIsIDIyMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9mbGV4aWJsZV9hcnJheV9pbml0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZsZXhpYmxlIGFycmF5IGluaXRpYWxpemF0aW9uIGlzIGEgR05VIGV4dGVuc2lvbiIsIDI1NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9mbGV4aWJsZV9hcnJheV91bmlvbl9nbnUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZmxleGlibGUgYXJyYXkgbWVtYmVyICUwIGluIGEgdW5pb24gaXMgYSBHTlUgZXh0ZW5zaW9uIiwgMjU4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X2ZsZXhpYmxlX2FycmF5X3VuaW9uX21zLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZsZXhpYmxlIGFycmF5IG1lbWJlciAlMCBpbiBhIHVuaW9uIGlzIGEgTWljcm9zb2Z0IGV4dGVuc2lvbiIsIDM3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9leHByX25vdF9pY2UsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZXhwcmVzc2lvbiBpcyBub3QgYW4gJXNlbGVjdHtpbnRlZ2VyfGludGVncmFsfTAgY29uc3RhbnQgZXhwcmVzc2lvbjsgZm9sZGluZyBpdCB0byBhIGNvbnN0YW50IGlzIGEgR05VIGV4dGVuc2lvbiIsIDI2NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9mbGV4aWJsZV9hcnJheV9lbXB0eV9hZ2dyZWdhdGVfZ251LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZsZXhpYmxlIGFycmF5IG1lbWJlciAlMCBpbiBvdGhlcndpc2UgZW1wdHkgJXNlbGVjdHtzdHJ1Y3R8aW50ZXJmYWNlfHVuaW9ufGNsYXNzfGVudW19MSBpcyBhIEdOVSBleHRlbnNpb24iLCAyNjQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfZmxleGlibGVfYXJyYXlfZW1wdHlfYWdncmVnYXRlX21zLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZsZXhpYmxlIGFycmF5IG1lbWJlciAlMCBpbiBvdGhlcndpc2UgZW1wdHkgJXNlbGVjdHtzdHJ1Y3R8aW50ZXJmYWNlfHVuaW9ufGNsYXNzfGVudW19MSBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzODcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfZmxleGlibGVfYXJyYXlfaW5fYXJyYXksIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgbWF5IG5vdCBiZSB1c2VkIGFzIGFuIGFycmF5IGVsZW1lbnQgZHVlIHRvIGZsZXhpYmxlIGFycmF5IG1lbWJlciIsIDIyOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9mbGV4aWJsZV9hcnJheV9pbl9zdHJ1Y3QsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgbWF5IG5vdCBiZSBuZXN0ZWQgaW4gYSBzdHJ1Y3QgZHVlIHRvIGZsZXhpYmxlIGFycmF5IG1lbWJlciIsIDIyOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9mbGV4aWJsZV9hcnJheV9pbml0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZsZXhpYmxlIGFycmF5IGluaXRpYWxpemF0aW9uIGlzIGEgR05VIGV4dGVuc2lvbiIsIDI2NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9mbGV4aWJsZV9hcnJheV91bmlvbl9nbnUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZmxleGlibGUgYXJyYXkgbWVtYmVyICUwIGluIGEgdW5pb24gaXMgYSBHTlUgZXh0ZW5zaW9uIiwgMjY2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X2ZsZXhpYmxlX2FycmF5X3VuaW9uX21zLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZsZXhpYmxlIGFycmF5IG1lbWJlciAlMCBpbiBhIHVuaW9uIGlzIGEgTWljcm9zb2Z0IGV4dGVuc2lvbiIsIDM4NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9mb3JfcmFuZ2VfYmVnaW5fZW5kX3R5cGVzX2RpZmZlciwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInYmVnaW4nIGFuZCAnZW5kJyByZXR1cm5pbmcgZGlmZmVyZW50IHR5cGVzICglMCBhbmQgJTEpIGlzIGEgQysrMTcgZXh0ZW5zaW9uIiwgOTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfZm9yd2FyZF9yZWZfZW51bSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJJU08gQyBmb3JiaWRzIGZvcndhcmQgcmVmZXJlbmNlcyB0byAnZW51bScgdHlwZXMiLCA1MTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfZm9yd2FyZF9yZWZfZW51bV9kZWYsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicmVkZWNsYXJhdGlvbiBvZiBhbHJlYWR5LWRlZmluZWQgZW51bSAlMCBpcyBhIEdOVSBleHRlbnNpb24iLCAyNjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfZm91bmRfdmlhX2RlcGVuZGVudF9iYXNlc19sb29rdXAsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidXNlIG9mIGlkZW50aWZpZXIgJTAgZm91bmQgdmlhIHVucXVhbGlmaWVkIGxvb2t1cCBpbnRvIGRlcGVuZGVudCBiYXNlcyBvZiBjbGFzcyB0ZW1wbGF0ZXMgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X2ZyZWVzdGFuZGluZ19jb21wbGV4LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbXBsZXggbnVtYmVycyBhcmUgYW4gZXh0ZW5zaW9uIGluIGEgZnJlZXN0YW5kaW5nIEM5OSBpbXBsZW1lbnRhdGlvbiIsIDUxNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9mcmllbmRfdGFnX3JlZGVjbF9vdXRzaWRlX25hbWVzcGFjZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bnF1YWxpZmllZCBmcmllbmQgZGVjbGFyYXRpb24gcmVmZXJyaW5nIHRvIHR5cGUgb3V0c2lkZSBvZiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlIGlzIGEgTWljcm9zb2Z0IGV4dGVuc2lvbjsgYWRkIGEgbmVzdGVkIG5hbWUgc3BlY2lmaWVyIiwgMzg4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X2dudV9hbm9ueW1vdXNfc3RydWN0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImFub255bW91cyBzdHJ1Y3RzIGFyZSBhIEdOVSBleHRlbnNpb24iLCAyNDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfZ251X3B0cl9mdW5jX2FyaXRoLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImFyaXRobWV0aWMgb24lc2VsZWN0eyBhfH0wIHBvaW50ZXIlc2VsZWN0e3xzfTAgdG8lc2VsZWN0eyB0aGV8fTIgZnVuY3Rpb24gdHlwZSVzZWxlY3R7fHN9MiAlMSVzZWxlY3R7fCBhbmQgJTN9MiBpcyBhIEdOVSBleHRlbnNpb24iLCA1MTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfZ251X3N1YnNjcmlwdF92b2lkX3R5cGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAic3Vic2NyaXB0IG9mIGEgcG9pbnRlciB0byB2b2lkIGlzIGEgR05VIGV4dGVuc2lvbiIsIDUxOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9nbnVfdm9pZF9wdHIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYXJpdGhtZXRpYyBvbiVzZWxlY3R7IGF8fTAgcG9pbnRlciVzZWxlY3R7fHN9MCB0byB2b2lkIGlzIGEgR05VIGV4dGVuc2lvbiIsIDUxOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9nb3RvX2ludG9fcHJvdGVjdGVkX3Njb3BlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImp1bXAgZnJvbSB0aGlzIGdvdG8gc3RhdGVtZW50IHRvIGl0cyBsYWJlbCBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzNzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfaW1hZ2luYXJ5X2NvbnN0YW50LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltYWdpbmFyeSBjb25zdGFudHMgYXJlIGEgR05VIGV4dGVuc2lvbiIsIDI2MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9pbXBsaWNpdF9leGNlcHRpb25fc3BlY19taXNtYXRjaCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmdW5jdGlvbiBwcmV2aW91c2x5IGRlY2xhcmVkIHdpdGggYW4gJXNlbGVjdHtleHBsaWNpdHxpbXBsaWNpdH0wIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uIHJlZGVjbGFyZWQgd2l0aCBhbiAlc2VsZWN0e2ltcGxpY2l0fGV4cGxpY2l0fTAgZXhjZXB0aW9uIHNwZWNpZmljYXRpb24iLCAyODMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfaW1wbGljaXRfZnVuY3Rpb25fZGVjbCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAlMCBpcyBpbnZhbGlkIGluIEM5OSIsIDI4NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9pbXBsaWNpdF9saWJfZnVuY3Rpb25fZGVjbCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbXBsaWNpdGx5IGRlY2xhcmluZyBsaWJyYXJ5IGZ1bmN0aW9uICclMCcgd2l0aCB0eXBlICUxIiwgMjg3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X2luX2NsYXNzX2luaXRpYWxpemVyX2Zsb2F0X3R5cGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW4tY2xhc3MgaW5pdGlhbGl6ZXIgZm9yIHN0YXRpYyBkYXRhIG1lbWJlciBvZiB0eXBlICUwIGlzIGEgR05VIGV4dGVuc2lvbiIsIDI2NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9pbl9jbGFzc19pbml0aWFsaXplcl9mbG9hdF90eXBlX2N4eDExLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbi1jbGFzcyBpbml0aWFsaXplciBmb3Igc3RhdGljIGRhdGEgbWVtYmVyIG9mIHR5cGUgJTAgcmVxdWlyZXMgJ2NvbnN0ZXhwcicgc3BlY2lmaWVyIiwgNjAzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X2luX2NsYXNzX2luaXRpYWxpemVyX25vbl9jb25zdGFudCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbi1jbGFzcyBpbml0aWFsaXplciBmb3Igc3RhdGljIGRhdGEgbWVtYmVyIGlzIG5vdCBhIGNvbnN0YW50IGV4cHJlc3Npb247IGZvbGRpbmcgaXQgdG8gYSBjb25zdGFudCBpcyBhIEdOVSBleHRlbnNpb24iLCAyNTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfaW5jb21wbGV0ZV9pbl9leGNlcHRpb25fc3BlYywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0e3xwb2ludGVyIHRvIHxyZWZlcmVuY2UgdG8gfTBpbmNvbXBsZXRlIHR5cGUgJTEgaXMgbm90IGFsbG93ZWQgaW4gZXhjZXB0aW9uIHNwZWNpZmljYXRpb24iLCAzNzMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfaW5jcmVtZW50X2Jvb2wsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIklTTyBDKysxNyBkb2VzIG5vdCBhbGxvdyBpbmNyZW1lbnRpbmcgZXhwcmVzc2lvbiBvZiB0eXBlIGJvb2wiLCAzMTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfZm9yd2FyZF9yZWZfZW51bSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJJU08gQyBmb3JiaWRzIGZvcndhcmQgcmVmZXJlbmNlcyB0byAnZW51bScgdHlwZXMiLCA1MjcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfZm9yd2FyZF9yZWZfZW51bV9kZWYsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicmVkZWNsYXJhdGlvbiBvZiBhbHJlYWR5LWRlZmluZWQgZW51bSAlMCBpcyBhIEdOVSBleHRlbnNpb24iLCAyNzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfZm91bmRfdmlhX2RlcGVuZGVudF9iYXNlc19sb29rdXAsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidXNlIG9mIGlkZW50aWZpZXIgJTAgZm91bmQgdmlhIHVucXVhbGlmaWVkIGxvb2t1cCBpbnRvIGRlcGVuZGVudCBiYXNlcyBvZiBjbGFzcyB0ZW1wbGF0ZXMgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzk1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X2ZyZWVzdGFuZGluZ19jb21wbGV4LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbXBsZXggbnVtYmVycyBhcmUgYW4gZXh0ZW5zaW9uIGluIGEgZnJlZXN0YW5kaW5nIEM5OSBpbXBsZW1lbnRhdGlvbiIsIDUyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9mcmllbmRfdGFnX3JlZGVjbF9vdXRzaWRlX25hbWVzcGFjZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bnF1YWxpZmllZCBmcmllbmQgZGVjbGFyYXRpb24gcmVmZXJyaW5nIHRvIHR5cGUgb3V0c2lkZSBvZiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlIGlzIGEgTWljcm9zb2Z0IGV4dGVuc2lvbjsgYWRkIGEgbmVzdGVkIG5hbWUgc3BlY2lmaWVyIiwgMzk3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X2dudV9hbm9ueW1vdXNfc3RydWN0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImFub255bW91cyBzdHJ1Y3RzIGFyZSBhIEdOVSBleHRlbnNpb24iLCAyNTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfZ251X3B0cl9mdW5jX2FyaXRoLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImFyaXRobWV0aWMgb24lc2VsZWN0eyBhfH0wIHBvaW50ZXIlc2VsZWN0e3xzfTAgdG8lc2VsZWN0eyB0aGV8fTIgZnVuY3Rpb24gdHlwZSVzZWxlY3R7fHN9MiAlMSVzZWxlY3R7fCBhbmQgJTN9MiBpcyBhIEdOVSBleHRlbnNpb24iLCA1MzAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfZ251X3N1YnNjcmlwdF92b2lkX3R5cGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAic3Vic2NyaXB0IG9mIGEgcG9pbnRlciB0byB2b2lkIGlzIGEgR05VIGV4dGVuc2lvbiIsIDUzMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9nbnVfdm9pZF9wdHIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYXJpdGhtZXRpYyBvbiVzZWxlY3R7IGF8fTAgcG9pbnRlciVzZWxlY3R7fHN9MCB0byB2b2lkIGlzIGEgR05VIGV4dGVuc2lvbiIsIDUzMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9nb3RvX2ludG9fcHJvdGVjdGVkX3Njb3BlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImp1bXAgZnJvbSB0aGlzIGdvdG8gc3RhdGVtZW50IHRvIGl0cyBsYWJlbCBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzODgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfaW1hZ2luYXJ5X2NvbnN0YW50LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltYWdpbmFyeSBjb25zdGFudHMgYXJlIGEgR05VIGV4dGVuc2lvbiIsIDI2OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9pbXBsaWNpdF9leGNlcHRpb25fc3BlY19taXNtYXRjaCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmdW5jdGlvbiBwcmV2aW91c2x5IGRlY2xhcmVkIHdpdGggYW4gJXNlbGVjdHtleHBsaWNpdHxpbXBsaWNpdH0wIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uIHJlZGVjbGFyZWQgd2l0aCBhbiAlc2VsZWN0e2ltcGxpY2l0fGV4cGxpY2l0fTAgZXhjZXB0aW9uIHNwZWNpZmljYXRpb24iLCAyOTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfaW1wbGljaXRfZnVuY3Rpb25fZGVjbCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAlMCBpcyBpbnZhbGlkIGluIEM5OSIsIDI5NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9pbXBsaWNpdF9saWJfZnVuY3Rpb25fZGVjbCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbXBsaWNpdGx5IGRlY2xhcmluZyBsaWJyYXJ5IGZ1bmN0aW9uICclMCcgd2l0aCB0eXBlICUxIiwgMjk2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X2luX2NsYXNzX2luaXRpYWxpemVyX2Zsb2F0X3R5cGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW4tY2xhc3MgaW5pdGlhbGl6ZXIgZm9yIHN0YXRpYyBkYXRhIG1lbWJlciBvZiB0eXBlICUwIGlzIGEgR05VIGV4dGVuc2lvbiIsIDI3MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9pbl9jbGFzc19pbml0aWFsaXplcl9mbG9hdF90eXBlX2N4eDExLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJpbi1jbGFzcyBpbml0aWFsaXplciBmb3Igc3RhdGljIGRhdGEgbWVtYmVyIG9mIHR5cGUgJTAgcmVxdWlyZXMgJ2NvbnN0ZXhwcicgc3BlY2lmaWVyIiwgNjE2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X2luX2NsYXNzX2luaXRpYWxpemVyX25vbl9jb25zdGFudCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbi1jbGFzcyBpbml0aWFsaXplciBmb3Igc3RhdGljIGRhdGEgbWVtYmVyIGlzIG5vdCBhIGNvbnN0YW50IGV4cHJlc3Npb247IGZvbGRpbmcgaXQgdG8gYSBjb25zdGFudCBpcyBhIEdOVSBleHRlbnNpb24iLCAyNjcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfaW5jb21wbGV0ZV9pbl9leGNlcHRpb25fc3BlYywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0e3xwb2ludGVyIHRvIHxyZWZlcmVuY2UgdG8gfTBpbmNvbXBsZXRlIHR5cGUgJTEgaXMgbm90IGFsbG93ZWQgaW4gZXhjZXB0aW9uIHNwZWNpZmljYXRpb24iLCAzODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfaW5jcmVtZW50X2Jvb2wsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIklTTyBDKysxNyBkb2VzIG5vdCBhbGxvdyBpbmNyZW1lbnRpbmcgZXhwcmVzc2lvbiBvZiB0eXBlIGJvb2wiLCAzMjEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfaW5pdF9jYXB0dXJlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluaXRpYWxpemVkIGxhbWJkYSBjYXB0dXJlcyBhcmUgYSBDKysxNCBleHRlbnNpb24iLCA4NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMpCiBESUFHKGV4dF9pbml0X2xpc3RfY29uc3RhbnRfbmFycm93aW5nLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjb25zdGFudCBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAlMCB3aGljaCBjYW5ub3QgYmUgbmFycm93ZWQgdG8gdHlwZSAlMSIsIDgzLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfaW5pdF9saXN0X3R5cGVfbmFycm93aW5nLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ0eXBlICUwIGNhbm5vdCBiZSBuYXJyb3dlZCB0byAlMSBpbiBpbml0aWFsaXplciBsaXN0IiwgODMsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9pbml0X2xpc3RfdmFyaWFibGVfbmFycm93aW5nLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJub24tY29uc3RhbnQtZXhwcmVzc2lvbiBjYW5ub3QgYmUgbmFycm93ZWQgZnJvbSB0eXBlICUwIHRvICUxIGluIGluaXRpYWxpemVyIGxpc3QiLCA4MywgU0ZJTkFFX1N1YnN0aXR1dGlvbkZhaWx1cmUsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X2luaXRpYWxpemVyX3N0cmluZ19mb3JfY2hhcl9hcnJheV90b29fbG9uZywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbml0aWFsaXplci1zdHJpbmcgZm9yIGNoYXIgYXJyYXkgaXMgdG9vIGxvbmciLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X2lubGluZV92YXJpYWJsZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbmxpbmUgdmFyaWFibGVzIGFyZSBhIEMrKzE3IGV4dGVuc2lvbiIsIDkxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X2ludGVnZXJfY29tcGxlbWVudF9jb21wbGV4LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIklTTyBDIGRvZXMgbm90IHN1cHBvcnQgJ34nIGZvciBjb21wbGV4IGNvbmp1Z2F0aW9uIG9mICUwIiwgNTE2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X2ludGVnZXJfY29tcGxleCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjb21wbGV4IGludGVnZXIgdHlwZXMgYXJlIGEgR05VIGV4dGVuc2lvbiIsIDI1MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9pbnRlZ2VyX2luY3JlbWVudF9jb21wbGV4LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIklTTyBDIGRvZXMgbm90IHN1cHBvcnQgJysrJy8nLS0nIG9uIGNvbXBsZXggaW50ZWdlciB0eXBlICUwIiwgNTE2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X2ludGVybmFsX2luX2V4dGVybl9pbmxpbmUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic3RhdGljICVzZWxlY3R7ZnVuY3Rpb258dmFyaWFibGV9MCAlMSBpcyB1c2VkIGluIGFuIGlubGluZSBmdW5jdGlvbiB3aXRoIGV4dGVybmFsIGxpbmthZ2UiLCA2MDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfaW50ZXJuYWxfaW5fZXh0ZXJuX2lubGluZV9xdWlldCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJzdGF0aWMgJXNlbGVjdHtmdW5jdGlvbnx2YXJpYWJsZX0wICUxIGlzIHVzZWQgaW4gYW4gaW5saW5lIGZ1bmN0aW9uIHdpdGggZXh0ZXJuYWwgbGlua2FnZSIsIDYwNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9pbnZhbGlkX3NpZ25fc3BlYywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICInJTAnIGNhbm5vdCBiZSBzaWduZWQgb3IgdW5zaWduZWQiLCA1MTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfbWFpbl9yZXR1cm5zX25vbmludCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZXR1cm4gdHlwZSBvZiAnbWFpbicgaXMgbm90ICdpbnQnIiwgMzU1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X21haW5fdXNlZCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJJU08gQysrIGRvZXMgbm90IGFsbG93ICdtYWluJyB0byBiZSB1c2VkIGJ5IGEgcHJvZ3JhbSIsIDM1NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9tYW55X2JyYWNlc19hcm91bmRfc2NhbGFyX2luaXQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidG9vIG1hbnkgYnJhY2VzIGFyb3VuZCBzY2FsYXIgaW5pdGlhbGl6ZXIiLCAzNTcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfbWVtYmVyX3JlZGVjbGFyZWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2xhc3MgbWVtYmVyIGNhbm5vdCBiZSByZWRlY2xhcmVkIiwgNTQ4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X21pc21hdGNoZWRfZXhjZXB0aW9uX3NwZWMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhjZXB0aW9uIHNwZWNpZmljYXRpb24gaW4gZGVjbGFyYXRpb24gZG9lcyBub3QgbWF0Y2ggcHJldmlvdXMgZGVjbGFyYXRpb24iLCAzNzMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfbWlzbWF0Y2hlZF9leGNlcHRpb25fc3BlY19leHBsaWNpdF9pbnN0YW50aWF0aW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uIGluIGV4cGxpY2l0IGluc3RhbnRpYXRpb24gZG9lcyBub3QgbWF0Y2ggaW5zdGFudGlhdGVkIG9uZSIsIDM3MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9pbnRlZ2VyX2NvbXBsZW1lbnRfY29tcGxleCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJJU08gQyBkb2VzIG5vdCBzdXBwb3J0ICd+JyBmb3IgY29tcGxleCBjb25qdWdhdGlvbiBvZiAlMCIsIDUyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9pbnRlZ2VyX2NvbXBsZXgsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY29tcGxleCBpbnRlZ2VyIHR5cGVzIGFyZSBhIEdOVSBleHRlbnNpb24iLCAyNTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfaW50ZWdlcl9pbmNyZW1lbnRfY29tcGxleCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJJU08gQyBkb2VzIG5vdCBzdXBwb3J0ICcrKycvJy0tJyBvbiBjb21wbGV4IGludGVnZXIgdHlwZSAlMCIsIDUyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9pbnRlcm5hbF9pbl9leHRlcm5faW5saW5lLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInN0YXRpYyAlc2VsZWN0e2Z1bmN0aW9ufHZhcmlhYmxlfTAgJTEgaXMgdXNlZCBpbiBhbiBpbmxpbmUgZnVuY3Rpb24gd2l0aCBleHRlcm5hbCBsaW5rYWdlIiwgNjE3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X2ludGVybmFsX2luX2V4dGVybl9pbmxpbmVfcXVpZXQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAic3RhdGljICVzZWxlY3R7ZnVuY3Rpb258dmFyaWFibGV9MCAlMSBpcyB1c2VkIGluIGFuIGlubGluZSBmdW5jdGlvbiB3aXRoIGV4dGVybmFsIGxpbmthZ2UiLCA2MTcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfaW52YWxpZF9zaWduX3NwZWMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJyUwJyBjYW5ub3QgYmUgc2lnbmVkIG9yIHVuc2lnbmVkIiwgNTI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X21haW5fcmV0dXJuc19ub25pbnQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmV0dXJuIHR5cGUgb2YgJ21haW4nIGlzIG5vdCAnaW50JyIsIDM2NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9tYWluX3VzZWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiSVNPIEMrKyBkb2VzIG5vdCBhbGxvdyAnbWFpbicgdG8gYmUgdXNlZCBieSBhIHByb2dyYW0iLCAzNjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfbWFueV9icmFjZXNfYXJvdW5kX3NjYWxhcl9pbml0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRvbyBtYW55IGJyYWNlcyBhcm91bmQgc2NhbGFyIGluaXRpYWxpemVyIiwgMzY2LCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfbWVtYmVyX3JlZGVjbGFyZWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2xhc3MgbWVtYmVyIGNhbm5vdCBiZSByZWRlY2xhcmVkIiwgNTYwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X21pc21hdGNoZWRfZXhjZXB0aW9uX3NwZWMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhjZXB0aW9uIHNwZWNpZmljYXRpb24gaW4gZGVjbGFyYXRpb24gZG9lcyBub3QgbWF0Y2ggcHJldmlvdXMgZGVjbGFyYXRpb24iLCAzODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfbWlzbWF0Y2hlZF9leGNlcHRpb25fc3BlY19leHBsaWNpdF9pbnN0YW50aWF0aW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uIGluIGV4cGxpY2l0IGluc3RhbnRpYXRpb24gZG9lcyBub3QgbWF0Y2ggaW5zdGFudGlhdGVkIG9uZSIsIDM4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9taXNzaW5nX2RlY2xzcGVjLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlY2xhcmF0aW9uIHNwZWNpZmllciBtaXNzaW5nLCBkZWZhdWx0aW5nIHRvICdpbnQnIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9taXNzaW5nX2V4Y2VwdGlvbl9zcGVjaWZpY2F0aW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGlzIG1pc3NpbmcgZXhjZXB0aW9uIHNwZWNpZmljYXRpb24gJyUxJyIsIDM5NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9taXNzaW5nX3R5cGVfc3BlY2lmaWVyLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInR5cGUgc3BlY2lmaWVyIG1pc3NpbmcsIGRlZmF1bHRzIHRvICdpbnQnIiwgMjg4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X21peGVkX2RlY2xzX2NvZGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiSVNPIEM5MCBmb3JiaWRzIG1peGluZyBkZWNsYXJhdGlvbnMgYW5kIGNvZGUiLCAxNTMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfbW9kdWxlX2ltcG9ydF9pbl9leHRlcm5fYywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiaW1wb3J0IG9mIEMrKyBtb2R1bGUgJyUwJyBhcHBlYXJzIHdpdGhpbiBleHRlcm4gXCJDXCIgbGFuZ3VhZ2UgbGlua2FnZSBzcGVjaWZpY2F0aW9uIiwgNDEzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTMpCi1ESUFHKGV4dF9tb2R1bGVfaW1wb3J0X25vdF9hdF90b3BfbGV2ZWxfbm9vcCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAicmVkdW5kYW50ICNpbmNsdWRlIG9mIG1vZHVsZSAnJTAnIGFwcGVhcnMgd2l0aGluICUxIiwgNDE1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTMpCi1ESUFHKGV4dF9tc19hbWJpZ3VvdXNfZGlyZWN0X2Jhc2UsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYWNjZXNzaW5nIGluYWNjZXNzaWJsZSBkaXJlY3QgYmFzZSAlMCBvZiAlMSBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzODAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfbXNfYW5vbnltb3VzX3JlY29yZCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhbm9ueW1vdXMgJXNlbGVjdHtzdHJ1Y3RzfHVuaW9uc30wIGFyZSBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzNjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfbXNfY2FzdF9mbl9vYmosIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic3RhdGljX2Nhc3QgYmV0d2VlbiBwb2ludGVyLXRvLWZ1bmN0aW9uIGFuZCBwb2ludGVyLXRvLW9iamVjdCBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzNjQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfbXNfZGVsYXllZF90ZW1wbGF0ZV9hcmd1bWVudCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2luZyB0aGUgdW5kZWNsYXJlZCB0eXBlICUwIGFzIGEgZGVmYXVsdCB0ZW1wbGF0ZSBhcmd1bWVudCBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfbXNfZGVyZWZfdGVtcGxhdGVfYXJndW1lbnQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibm9uLXR5cGUgdGVtcGxhdGUgYXJndW1lbnQgY29udGFpbmluZyBhIGRlcmVmZXJlbmNlIG9wZXJhdGlvbiBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfbXNfZXhwbGljaXRfY29uc3RydWN0b3JfY2FsbCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBsaWNpdCBjb25zdHJ1Y3RvciBjYWxscyBhcmUgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzc1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X21zX2ZvcndhcmRfcmVmX2VudW0sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZm9yd2FyZCByZWZlcmVuY2VzIHRvICdlbnVtJyB0eXBlcyBhcmUgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzcxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X21zX2ltcGNhc3RfZm5fb2JqLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImltcGxpY2l0IGNvbnZlcnNpb24gYmV0d2VlbiBwb2ludGVyLXRvLWZ1bmN0aW9uIGFuZCBwb2ludGVyLXRvLW9iamVjdCBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzNjQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfbXNfbWlzc2luZ19leGNlcHRpb25fc3BlY2lmaWNhdGlvbiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBpcyBtaXNzaW5nIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uICclMSciLCAzNzMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfbXNfdGVtcGxhdGVfc3BlY19yZWRlY2xfb3V0X29mX3Njb3BlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7Y2xhc3MgdGVtcGxhdGV8Y2xhc3MgdGVtcGxhdGUgcGFydGlhbHx2YXJpYWJsZSB0ZW1wbGF0ZXx2YXJpYWJsZSB0ZW1wbGF0ZSBwYXJ0aWFsfGZ1bmN0aW9uIHRlbXBsYXRlfG1lbWJlciBmdW5jdGlvbnxzdGF0aWMgZGF0YSBtZW1iZXJ8bWVtYmVyIGNsYXNzfG1lbWJlciBlbnVtZXJhdGlvbn0wIHNwZWNpYWxpemF0aW9uIG9mICUxIG5vdCBpbiAlc2VsZWN0e2EgbmFtZXNwYWNlIGVuY2xvc2luZyAlMnxjbGFzcyAlMiBvciBhbiBlbmNsb3NpbmcgbmFtZXNwYWNlfTMgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X21zX3RlbXBsYXRlX3R5cGVfYXJnX21pc3NpbmdfdHlwZW5hbWUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidGVtcGxhdGUgYXJndW1lbnQgZm9yIHRlbXBsYXRlIHR5cGUgcGFyYW1ldGVyIG11c3QgYmUgYSB0eXBlOyBvbWl0dGVkICd0eXBlbmFtZScgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X21zX3VzaW5nX2RlY2xhcmF0aW9uX2luYWNjZXNzaWJsZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2luZyBkZWNsYXJhdGlvbiByZWZlcnJpbmcgdG8gaW5hY2Nlc3NpYmxlIG1lbWJlciAnJTAnICh3aGljaCByZWZlcnMgdG8gYWNjZXNzaWJsZSBtZW1iZXIgJyUxJykgaXMgYSBNaWNyb3NvZnQgY29tcGF0aWJpbGl0eSBleHRlbnNpb24iLCAzODksIFNGSU5BRV9BY2Nlc3NDb250cm9sLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9tdXRhYmxlX3JlZmVyZW5jZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInbXV0YWJsZScgb24gYSByZWZlcmVuY2UgdHlwZSBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfbWlzc2luZ19leGNlcHRpb25fc3BlY2lmaWNhdGlvbiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBpcyBtaXNzaW5nIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uICclMSciLCA0MDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfbWlzc2luZ190eXBlX3NwZWNpZmllciwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0eXBlIHNwZWNpZmllciBtaXNzaW5nLCBkZWZhdWx0cyB0byAnaW50JyIsIDI5NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9taXhlZF9kZWNsc19jb2RlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIklTTyBDOTAgZm9yYmlkcyBtaXhpbmcgZGVjbGFyYXRpb25zIGFuZCBjb2RlIiwgMTU3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X21vZHVsZV9pbXBvcnRfaW5fZXh0ZXJuX2MsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImltcG9ydCBvZiBDKysgbW9kdWxlICclMCcgYXBwZWFycyB3aXRoaW4gZXh0ZXJuIFwiQ1wiIGxhbmd1YWdlIGxpbmthZ2Ugc3BlY2lmaWNhdGlvbiIsIDQyMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEzKQorRElBRyhleHRfbW9kdWxlX2ltcG9ydF9ub3RfYXRfdG9wX2xldmVsX25vb3AsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInJlZHVuZGFudCAjaW5jbHVkZSBvZiBtb2R1bGUgJyUwJyBhcHBlYXJzIHdpdGhpbiAlMSIsIDQyNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEzKQorRElBRyhleHRfbXNfYW1iaWd1b3VzX2RpcmVjdF9iYXNlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFjY2Vzc2luZyBpbmFjY2Vzc2libGUgZGlyZWN0IGJhc2UgJTAgb2YgJTEgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzg5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X21zX2Fub255bW91c19yZWNvcmQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYW5vbnltb3VzICVzZWxlY3R7c3RydWN0c3x1bmlvbnN9MCBhcmUgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzcyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X21zX2Nhc3RfZm5fb2JqLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInN0YXRpY19jYXN0IGJldHdlZW4gcG9pbnRlci10by1mdW5jdGlvbiBhbmQgcG9pbnRlci10by1vYmplY3QgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzczLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X21zX2RlbGF5ZWRfdGVtcGxhdGVfYXJndW1lbnQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidXNpbmcgdGhlIHVuZGVjbGFyZWQgdHlwZSAlMCBhcyBhIGRlZmF1bHQgdGVtcGxhdGUgYXJndW1lbnQgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzk1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X21zX2RlcmVmX3RlbXBsYXRlX2FyZ3VtZW50LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm5vbi10eXBlIHRlbXBsYXRlIGFyZ3VtZW50IGNvbnRhaW5pbmcgYSBkZXJlZmVyZW5jZSBvcGVyYXRpb24gaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzk1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X21zX2V4cGxpY2l0X2NvbnN0cnVjdG9yX2NhbGwsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwbGljaXQgY29uc3RydWN0b3IgY2FsbHMgYXJlIGEgTWljcm9zb2Z0IGV4dGVuc2lvbiIsIDM4NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9tc19mb3J3YXJkX3JlZl9lbnVtLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZvcndhcmQgcmVmZXJlbmNlcyB0byAnZW51bScgdHlwZXMgYXJlIGEgTWljcm9zb2Z0IGV4dGVuc2lvbiIsIDM4MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9tc19pbXBjYXN0X2ZuX29iaiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbXBsaWNpdCBjb252ZXJzaW9uIGJldHdlZW4gcG9pbnRlci10by1mdW5jdGlvbiBhbmQgcG9pbnRlci10by1vYmplY3QgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzczLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X21zX21pc3NpbmdfZXhjZXB0aW9uX3NwZWNpZmljYXRpb24sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgaXMgbWlzc2luZyBleGNlcHRpb24gc3BlY2lmaWNhdGlvbiAnJTEnIiwgMzgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X21zX3RlbXBsYXRlX3NwZWNfcmVkZWNsX291dF9vZl9zY29wZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0e2NsYXNzIHRlbXBsYXRlfGNsYXNzIHRlbXBsYXRlIHBhcnRpYWx8dmFyaWFibGUgdGVtcGxhdGV8dmFyaWFibGUgdGVtcGxhdGUgcGFydGlhbHxmdW5jdGlvbiB0ZW1wbGF0ZXxtZW1iZXIgZnVuY3Rpb258c3RhdGljIGRhdGEgbWVtYmVyfG1lbWJlciBjbGFzc3xtZW1iZXIgZW51bWVyYXRpb259MCBzcGVjaWFsaXphdGlvbiBvZiAlMSBub3QgaW4gJXNlbGVjdHthIG5hbWVzcGFjZSBlbmNsb3NpbmcgJTJ8Y2xhc3MgJTIgb3IgYW4gZW5jbG9zaW5nIG5hbWVzcGFjZX0zIGlzIGEgTWljcm9zb2Z0IGV4dGVuc2lvbiIsIDM5NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9tc190ZW1wbGF0ZV90eXBlX2FyZ19taXNzaW5nX3R5cGVuYW1lLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRlbXBsYXRlIGFyZ3VtZW50IGZvciB0ZW1wbGF0ZSB0eXBlIHBhcmFtZXRlciBtdXN0IGJlIGEgdHlwZTsgb21pdHRlZCAndHlwZW5hbWUnIGlzIGEgTWljcm9zb2Z0IGV4dGVuc2lvbiIsIDM5NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9tc191c2luZ19kZWNsYXJhdGlvbl9pbmFjY2Vzc2libGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidXNpbmcgZGVjbGFyYXRpb24gcmVmZXJyaW5nIHRvIGluYWNjZXNzaWJsZSBtZW1iZXIgJyUwJyAod2hpY2ggcmVmZXJzIHRvIGFjY2Vzc2libGUgbWVtYmVyICclMScpIGlzIGEgTWljcm9zb2Z0IGNvbXBhdGliaWxpdHkgZXh0ZW5zaW9uIiwgMzk4LCBTRklOQUVfQWNjZXNzQ29udHJvbCwgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfbXV0YWJsZV9yZWZlcmVuY2UsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ211dGFibGUnIG9uIGEgcmVmZXJlbmNlIHR5cGUgaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzkxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X25lc3RlZF9uYW1lX21lbWJlcl9yZWZfbG9va3VwX2FtYmlndW91cywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJsb29rdXAgb2YgJTAgaW4gbWVtYmVyIGFjY2VzcyBleHByZXNzaW9uIGlzIGFtYmlndW91czsgdXNpbmcgbWVtYmVyIG9mICUxIiwgMjAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfbmVzdGVkX25hbWVfc3BlY19pc19lbnVtLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzZSBvZiBlbnVtZXJhdGlvbiBpbiBhIG5lc3RlZCBuYW1lIHNwZWNpZmllciBpcyBhIEMrKzExIGV4dGVuc2lvbiIsIDc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X25lc3RlZF9wb2ludGVyX3F1YWxpZmllcl9taXNtYXRjaCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0eyVkaWZme2Fzc2lnbmluZyB0byAkIGZyb20gJHxhc3NpZ25pbmcgdG8gZGlmZmVyZW50IHR5cGVzfTAsMXwlZGlmZntwYXNzaW5nICQgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJHxwYXNzaW5nIHRvIHBhcmFtZXRlciBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7cmV0dXJuaW5nICQgZnJvbSBhIGZ1bmN0aW9uIHdpdGggcmVzdWx0IHR5cGUgJHxyZXR1cm5pbmcgZnJvbSBmdW5jdGlvbiB3aXRoIGRpZmZlcmVudCByZXR1cm4gdHlwZX0wLDF8JWRpZmZ7Y29udmVydGluZyAkIHRvIHR5cGUgJHxjb252ZXJ0aW5nIGJldHdlZW4gdHlwZXN9MCwxfCVkaWZme2luaXRpYWxpemluZyAkIHdpdGggYW4gZXhwcmVzc2lvbiBvZiB0eXBlICR8aW5pdGlhbGl6aW5nIHdpdGggZXhwcmVzc2lvbiBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7c2VuZGluZyAkIHRvIHBhcmFtZXRlciBvZiB0eXBlICR8c2VuZGluZyB0byBwYXJhbWV0ZXIgb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme2Nhc3RpbmcgJCB0byB0eXBlICR8Y2FzdGluZyBiZXR3ZWVuIHR5cGVzfTAsMX0yIGRpc2NhcmRzIHF1YWxpZmllcnMgaW4gbmVzdGVkIHBvaW50ZXIgdHlwZXMiLCAzMDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfbmVzdGVkX3BvaW50ZXJfcXVhbGlmaWVyX21pc21hdGNoLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7JWRpZmZ7YXNzaWduaW5nIHRvICQgZnJvbSAkfGFzc2lnbmluZyB0byBkaWZmZXJlbnQgdHlwZXN9MCwxfCVkaWZme3Bhc3NpbmcgJCB0byBwYXJhbWV0ZXIgb2YgdHlwZSAkfHBhc3NpbmcgdG8gcGFyYW1ldGVyIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntyZXR1cm5pbmcgJCBmcm9tIGEgZnVuY3Rpb24gd2l0aCByZXN1bHQgdHlwZSAkfHJldHVybmluZyBmcm9tIGZ1bmN0aW9uIHdpdGggZGlmZmVyZW50IHJldHVybiB0eXBlfTAsMXwlZGlmZntjb252ZXJ0aW5nICQgdG8gdHlwZSAkfGNvbnZlcnRpbmcgYmV0d2VlbiB0eXBlc30wLDF8JWRpZmZ7aW5pdGlhbGl6aW5nICQgd2l0aCBhbiBleHByZXNzaW9uIG9mIHR5cGUgJHxpbml0aWFsaXppbmcgd2l0aCBleHByZXNzaW9uIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntzZW5kaW5nICQgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJHxzZW5kaW5nIHRvIHBhcmFtZXRlciBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7Y2FzdGluZyAkIHRvIHR5cGUgJHxjYXN0aW5nIGJldHdlZW4gdHlwZXN9MCwxfTIgZGlzY2FyZHMgcXVhbGlmaWVycyBpbiBuZXN0ZWQgcG9pbnRlciB0eXBlcyIsIDMxMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9uZXdfcGFyZW5fYXJyYXlfbm9uY29uc3QsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAid2hlbiB0eXBlIGlzIGluIHBhcmVudGhlc2VzLCBhcnJheSBjYW5ub3QgaGF2ZSBkeW5hbWljIHNpemUiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X25vX2RlY2xhcmF0b3JzLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlY2xhcmF0aW9uIGRvZXMgbm90IGRlY2xhcmUgYW55dGhpbmciLCAzOTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfbm9fbmFtZWRfbWVtYmVyc19pbl9zdHJ1Y3RfdW5pb24sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHtzdHJ1Y3R8dW5pb259MCB3aXRob3V0IG5hbWVkIG1lbWJlcnMgaXMgYSBHTlUgZXh0ZW5zaW9uIiwgMjU2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X25vX2RlY2xhcmF0b3JzLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlY2xhcmF0aW9uIGRvZXMgbm90IGRlY2xhcmUgYW55dGhpbmciLCA0MDUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfbm9fbmFtZWRfbWVtYmVyc19pbl9zdHJ1Y3RfdW5pb24sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHtzdHJ1Y3R8dW5pb259MCB3aXRob3V0IG5hbWVkIG1lbWJlcnMgaXMgYSBHTlUgZXh0ZW5zaW9uIiwgMjY0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X25vbmNsYXNzX3R5cGVfZnJpZW5kLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm5vbi1jbGFzcyBmcmllbmQgdHlwZSAlMCBpcyBhIEMrKzExIGV4dGVuc2lvbiIsIDc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X25vcmV0dXJuX21haW4sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ21haW4nIGlzIG5vdCBhbGxvd2VkIHRvIGJlIGRlY2xhcmVkIF9Ob3JldHVybiIsIDM1NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9vZmZzZXRvZl9ub25fcG9kX3R5cGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib2Zmc2V0IG9mIG9uIG5vbi1QT0QgdHlwZSAlMCIsIDMzMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9vZmZzZXRvZl9ub25fc3RhbmRhcmRsYXlvdXRfdHlwZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvZmZzZXQgb2Ygb24gbm9uLXN0YW5kYXJkLWxheW91dCB0eXBlICUwIiwgMzMyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X29tcF9sb29wX25vdF9jYW5vbmljYWxfaW5pdCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbml0aWFsaXphdGlvbiBjbGF1c2Ugb2YgT3Blbk1QIGZvciBsb29wIGlzIG5vdCBpbiBjYW5vbmljYWwgZm9ybSAoJ3ZhciA9IGluaXQnIG9yICdUIHZhciA9IGluaXQnKSIsIDQ5MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDExKQotRElBRyhleHRfb3BlbmNsX2V4dF92ZWN0b3JfdHlwZV9yZ2JhX3NlbGVjdG9yLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInZlY3RvciBjb21wb25lbnQgbmFtZSAnJTAnIGlzIGFuIE9wZW5DTCB2ZXJzaW9uIDIuMiBmZWF0dXJlIiwgNDkwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X29wZXJhdG9yX25ld19kZWxldGVfZGVjbGFyZWRfaW5saW5lLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlcGxhY2VtZW50IGZ1bmN0aW9uICUwIGNhbm5vdCBiZSBkZWNsYXJlZCAnaW5saW5lJyIsIDMxOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9vdXRfb2ZfbGluZV9kZWNsYXJhdGlvbiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAib3V0LW9mLWxpbmUgZGVjbGFyYXRpb24gb2YgYSBtZW1iZXIgbXVzdCBiZSBhIGRlZmluaXRpb24iLCA0OTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfb3V0X29mX2xpbmVfcXVhbGlmaWVkX2lkX3R5cGVfbmFtZXNfY29uc3RydWN0b3IsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiSVNPIEMrKyBzcGVjaWZpZXMgdGhhdCBxdWFsaWZpZWQgcmVmZXJlbmNlIHRvICUwIGlzIGEgY29uc3RydWN0b3IgbmFtZSByYXRoZXIgdGhhbiBhICVzZWxlY3R7dGVtcGxhdGUgbmFtZXx0eXBlfTEgaW4gdGhpcyBjb250ZXh0LCBkZXNwaXRlIHByZWNlZGluZyAlc2VsZWN0eyd0eXBlbmFtZSd8J3RlbXBsYXRlJ30yIGtleXdvcmQiLCAzMTYsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9vdmVycmlkZV9leGNlcHRpb25fc3BlYywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleGNlcHRpb24gc3BlY2lmaWNhdGlvbiBvZiBvdmVycmlkaW5nIGZ1bmN0aW9uIGlzIG1vcmUgbGF4IHRoYW4gYmFzZSB2ZXJzaW9uIiwgMzczLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3BhcmFtX2RlZmF1bHRfYXJndW1lbnRfcmVkZWZpbml0aW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlZGVmaW5pdGlvbiBvZiBkZWZhdWx0IGFyZ3VtZW50IiwgMzY5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3BhcmFtX25vdF9kZWNsYXJlZCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwYXJhbWV0ZXIgJTAgd2FzIG5vdCBkZWNsYXJlZCwgZGVmYXVsdGluZyB0byB0eXBlICdpbnQnIiwgNTE2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3BhcmFtX3Byb21vdGVkX25vdF9jb21wYXRpYmxlX3dpdGhfcHJvdG90eXBlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVkaWZme3Byb21vdGVkIHR5cGUgJCBvZiBLJlIgZnVuY3Rpb24gcGFyYW1ldGVyIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHBhcmFtZXRlciB0eXBlICR8cHJvbW90ZWQgdHlwZSBvZiBLJlIgZnVuY3Rpb24gcGFyYW1ldGVyIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggcGFyYW1ldGVyIHR5cGV9MCwxIGRlY2xhcmVkIGluIGEgcHJldmlvdXMgcHJvdG90eXBlIiwgMzQyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3BhcnRpYWxfc3BlY19ub3RfbW9yZV9zcGVjaWFsaXplZF90aGFuX3ByaW1hcnksIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiVzZWxlY3R7Y2xhc3N8dmFyaWFibGV9MCB0ZW1wbGF0ZSBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGlzIG5vdCBtb3JlIHNwZWNpYWxpemVkIHRoYW4gdGhlIHByaW1hcnkgdGVtcGxhdGUiLCAzMzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfcGFydGlhbF9zcGVjc19ub3RfZGVkdWNpYmxlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlc2VsZWN0e2NsYXNzfHZhcmlhYmxlfTAgdGVtcGxhdGUgcGFydGlhbCBzcGVjaWFsaXphdGlvbiBjb250YWlucyAlc2VsZWN0e2EgdGVtcGxhdGUgcGFyYW1ldGVyfHRlbXBsYXRlIHBhcmFtZXRlcnN9MSB0aGF0IGNhbm5vdCBiZSBkZWR1Y2VkOyB0aGlzIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gd2lsbCBuZXZlciBiZSB1c2VkIiwgNzA0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X25vcmV0dXJuX21haW4sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ21haW4nIGlzIG5vdCBhbGxvd2VkIHRvIGJlIGRlY2xhcmVkIF9Ob3JldHVybiIsIDM2MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9vZmZzZXRvZl9ub25fcG9kX3R5cGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib2Zmc2V0IG9mIG9uIG5vbi1QT0QgdHlwZSAlMCIsIDM0MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9vZmZzZXRvZl9ub25fc3RhbmRhcmRsYXlvdXRfdHlwZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvZmZzZXQgb2Ygb24gbm9uLXN0YW5kYXJkLWxheW91dCB0eXBlICUwIiwgMzQxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X29tcF9sb29wX25vdF9jYW5vbmljYWxfaW5pdCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbml0aWFsaXphdGlvbiBjbGF1c2Ugb2YgT3Blbk1QIGZvciBsb29wIGlzIG5vdCBpbiBjYW5vbmljYWwgZm9ybSAoJ3ZhciA9IGluaXQnIG9yICdUIHZhciA9IGluaXQnKSIsIDUwMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDExKQorRElBRyhleHRfb3BlbmNsX2V4dF92ZWN0b3JfdHlwZV9yZ2JhX3NlbGVjdG9yLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInZlY3RvciBjb21wb25lbnQgbmFtZSAnJTAnIGlzIGFuIE9wZW5DTCB2ZXJzaW9uIDIuMiBmZWF0dXJlIiwgNTAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X29wZXJhdG9yX25ld19kZWxldGVfZGVjbGFyZWRfaW5saW5lLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlcGxhY2VtZW50IGZ1bmN0aW9uICUwIGNhbm5vdCBiZSBkZWNsYXJlZCAnaW5saW5lJyIsIDMyOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9vdXRfb2ZfbGluZV9kZWNsYXJhdGlvbiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAib3V0LW9mLWxpbmUgZGVjbGFyYXRpb24gb2YgYSBtZW1iZXIgbXVzdCBiZSBhIGRlZmluaXRpb24iLCA1MDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfb3V0X29mX2xpbmVfcXVhbGlmaWVkX2lkX3R5cGVfbmFtZXNfY29uc3RydWN0b3IsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiSVNPIEMrKyBzcGVjaWZpZXMgdGhhdCBxdWFsaWZpZWQgcmVmZXJlbmNlIHRvICUwIGlzIGEgY29uc3RydWN0b3IgbmFtZSByYXRoZXIgdGhhbiBhICVzZWxlY3R7dGVtcGxhdGUgbmFtZXx0eXBlfTEgaW4gdGhpcyBjb250ZXh0LCBkZXNwaXRlIHByZWNlZGluZyAlc2VsZWN0eyd0eXBlbmFtZSd8J3RlbXBsYXRlJ30yIGtleXdvcmQiLCAzMjUsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9vdmVycmlkZV9leGNlcHRpb25fc3BlYywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleGNlcHRpb24gc3BlY2lmaWNhdGlvbiBvZiBvdmVycmlkaW5nIGZ1bmN0aW9uIGlzIG1vcmUgbGF4IHRoYW4gYmFzZSB2ZXJzaW9uIiwgMzgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3BhcmFtX2RlZmF1bHRfYXJndW1lbnRfcmVkZWZpbml0aW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlZGVmaW5pdGlvbiBvZiBkZWZhdWx0IGFyZ3VtZW50IiwgMzc4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3BhcmFtX25vdF9kZWNsYXJlZCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwYXJhbWV0ZXIgJTAgd2FzIG5vdCBkZWNsYXJlZCwgZGVmYXVsdGluZyB0byB0eXBlICdpbnQnIiwgNTI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3BhcmFtX3Byb21vdGVkX25vdF9jb21wYXRpYmxlX3dpdGhfcHJvdG90eXBlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVkaWZme3Byb21vdGVkIHR5cGUgJCBvZiBLJlIgZnVuY3Rpb24gcGFyYW1ldGVyIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHBhcmFtZXRlciB0eXBlICR8cHJvbW90ZWQgdHlwZSBvZiBLJlIgZnVuY3Rpb24gcGFyYW1ldGVyIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggcGFyYW1ldGVyIHR5cGV9MCwxIGRlY2xhcmVkIGluIGEgcHJldmlvdXMgcHJvdG90eXBlIiwgMzUxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3BhcnRpYWxfc3BlY19ub3RfbW9yZV9zcGVjaWFsaXplZF90aGFuX3ByaW1hcnksIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiVzZWxlY3R7Y2xhc3N8dmFyaWFibGV9MCB0ZW1wbGF0ZSBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIGlzIG5vdCBtb3JlIHNwZWNpYWxpemVkIHRoYW4gdGhlIHByaW1hcnkgdGVtcGxhdGUiLCAzNDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfcGFydGlhbF9zcGVjc19ub3RfZGVkdWNpYmxlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlc2VsZWN0e2NsYXNzfHZhcmlhYmxlfTAgdGVtcGxhdGUgcGFydGlhbCBzcGVjaWFsaXphdGlvbiBjb250YWlucyAlc2VsZWN0e2EgdGVtcGxhdGUgcGFyYW1ldGVyfHRlbXBsYXRlIHBhcmFtZXRlcnN9MSB0aGF0IGNhbm5vdCBiZSBkZWR1Y2VkOyB0aGlzIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gd2lsbCBuZXZlciBiZSB1c2VkIiwgNzE3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X3BsYWluX2NvbXBsZXgsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicGxhaW4gJ19Db21wbGV4JyByZXF1aXJlcyBhIHR5cGUgc3BlY2lmaWVyOyBhc3N1bWluZyAnX0NvbXBsZXggZG91YmxlJyIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfcG9pbnRlcl90b19jb25zdF9yZWZfbWVtYmVyX29uX3J2YWx1ZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbnZva2luZyBhIHBvaW50ZXIgdG8gYSAnY29uc3QgJicgbWVtYmVyIGZ1bmN0aW9uIG9uIGFuIHJ2YWx1ZSBpcyBhIEMrKzJhIGV4dGVuc2lvbiIsIDk4LCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfcHJlZGVmX291dHNpZGVfZnVuY3Rpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInByZWRlZmluZWQgaWRlbnRpZmllciBpcyBvbmx5IHZhbGlkIGluc2lkZSBmdW5jdGlvbiIsIDUzMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9wc2V1ZG9fZHRvcl9vbl92b2lkLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInBzZXVkby1kZXN0cnVjdG9ycyBvbiB0eXBlIHZvaWQgYXJlIGEgTWljcm9zb2Z0IGV4dGVuc2lvbiIsIDM5MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9wdXJlX2Z1bmN0aW9uX2RlZmluaXRpb24sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZnVuY3Rpb24gZGVmaW5pdGlvbiB3aXRoIHB1cmUtc3BlY2lmaWVyIGlzIGEgTWljcm9zb2Z0IGV4dGVuc2lvbiIsIDM4MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9yZWRlZmluaXRpb25fb2ZfdHlwZWRlZiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZWRlZmluaXRpb24gb2YgdHlwZWRlZiAlMCBpcyBhIEMxMSBmZWF0dXJlIiwgNjU5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3JlZ2lzdGVyX3N0b3JhZ2VfY2xhc3MsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIklTTyBDKysxNyBkb2VzIG5vdCBhbGxvdyAncmVnaXN0ZXInIHN0b3JhZ2UgY2xhc3Mgc3BlY2lmaWVyIiwgNTUyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3JldGFpbmVkX2xhbmd1YWdlX2xpbmthZ2UsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZnJpZW5kIGZ1bmN0aW9uICUwIHJldGFpbmluZyBwcmV2aW91cyBsYW5ndWFnZSBsaW5rYWdlIGlzIGFuIGV4dGVuc2lvbiIsIDU1OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9yZXR1cm5faGFzX2V4cHIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIiVzZWxlY3R7dm9pZCBmdW5jdGlvbnx2b2lkIG1ldGhvZHxjb25zdHJ1Y3RvcnxkZXN0cnVjdG9yfTEgJTAgc2hvdWxkIG5vdCByZXR1cm4gYSB2YWx1ZSIsIDU2MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9yZXR1cm5faGFzX3ZvaWRfZXhwciwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ2b2lkICVzZWxlY3R7ZnVuY3Rpb258bWV0aG9kfGJsb2NrfTEgJTAgc2hvdWxkIG5vdCByZXR1cm4gdm9pZCBleHByZXNzaW9uIiwgNTE2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3JldHVybl9taXNzaW5nX2V4cHIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm5vbi12b2lkICVzZWxlY3R7ZnVuY3Rpb258bWV0aG9kfTEgJTAgc2hvdWxkIHJldHVybiBhIHZhbHVlIiwgNTYzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3ByZWRlZl9vdXRzaWRlX2Z1bmN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcmVkZWZpbmVkIGlkZW50aWZpZXIgaXMgb25seSB2YWxpZCBpbnNpZGUgZnVuY3Rpb24iLCA1NDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfcHNldWRvX2R0b3Jfb25fdm9pZCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwc2V1ZG8tZGVzdHJ1Y3RvcnMgb24gdHlwZSB2b2lkIGFyZSBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzOTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfcHVyZV9mdW5jdGlvbl9kZWZpbml0aW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZ1bmN0aW9uIGRlZmluaXRpb24gd2l0aCBwdXJlLXNwZWNpZmllciBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzOTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfcmVkZWZpbml0aW9uX29mX3R5cGVkZWYsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmVkZWZpbml0aW9uIG9mIHR5cGVkZWYgJTAgaXMgYSBDMTEgZmVhdHVyZSIsIDY3MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9yZWdpc3Rlcl9zdG9yYWdlX2NsYXNzLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJJU08gQysrMTcgZG9lcyBub3QgYWxsb3cgJ3JlZ2lzdGVyJyBzdG9yYWdlIGNsYXNzIHNwZWNpZmllciIsIDU2NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9yZXRhaW5lZF9sYW5ndWFnZV9saW5rYWdlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZyaWVuZCBmdW5jdGlvbiAlMCByZXRhaW5pbmcgcHJldmlvdXMgbGFuZ3VhZ2UgbGlua2FnZSBpcyBhbiBleHRlbnNpb24iLCA1NzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfcmV0dXJuX2hhc19leHByLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICIlc2VsZWN0e3ZvaWQgZnVuY3Rpb258dm9pZCBtZXRob2R8Y29uc3RydWN0b3J8ZGVzdHJ1Y3Rvcn0xICUwIHNob3VsZCBub3QgcmV0dXJuIGEgdmFsdWUiLCA1NzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfcmV0dXJuX2hhc192b2lkX2V4cHIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidm9pZCAlc2VsZWN0e2Z1bmN0aW9ufG1ldGhvZHxibG9ja30xICUwIHNob3VsZCBub3QgcmV0dXJuIHZvaWQgZXhwcmVzc2lvbiIsIDUyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9yZXR1cm5fbWlzc2luZ19leHByLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJub24tdm9pZCAlc2VsZWN0e2Z1bmN0aW9ufG1ldGhvZH0xICUwIHNob3VsZCByZXR1cm4gYSB2YWx1ZSIsIDU3NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9ydmFsdWVfdG9fcmVmZXJlbmNlX2FjY2Vzc19jdG9yLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIkMrKzk4IHJlcXVpcmVzIGFuIGFjY2Vzc2libGUgY29weSBjb25zdHJ1Y3RvciBmb3IgY2xhc3MgJTIgd2hlbiBiaW5kaW5nIGEgcmVmZXJlbmNlIHRvIGEgdGVtcG9yYXJ5OyB3YXMgJXNlbGVjdHtwcml2YXRlfHByb3RlY3RlZH0wIiwgNTcsIFNGSU5BRV9BY2Nlc3NDb250cm9sLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF9ydmFsdWVfdG9fcmVmZXJlbmNlX3RlbXBfY29weV9ub192aWFibGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibm8gdmlhYmxlIGNvbnN0cnVjdG9yICVzZWxlY3R7Y29weWluZyB2YXJpYWJsZXxjb3B5aW5nIHBhcmFtZXRlcnxyZXR1cm5pbmcgb2JqZWN0fGluaXRpYWxpemluZyBzdGF0ZW1lbnQgZXhwcmVzc2lvbiByZXN1bHR8dGhyb3dpbmcgb2JqZWN0fGNvcHlpbmcgbWVtYmVyIHN1Ym9iamVjdHxjb3B5aW5nIGFycmF5IGVsZW1lbnR8YWxsb2NhdGluZyBvYmplY3R8Y29weWluZyB0ZW1wb3Jhcnl8aW5pdGlhbGl6aW5nIGJhc2Ugc3Vib2JqZWN0fGluaXRpYWxpemluZyB2ZWN0b3IgZWxlbWVudHxjYXB0dXJpbmcgdmFsdWV9MCBvZiB0eXBlICUxOyBDKys5OCByZXF1aXJlcyBhIGNvcHkgY29uc3RydWN0b3Igd2hlbiBiaW5kaW5nIGEgcmVmZXJlbmNlIHRvIGEgdGVtcG9yYXJ5IiwgNTcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfc2l6ZW9mX2FsaWdub2ZfZnVuY3Rpb25fdHlwZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbnZhbGlkIGFwcGxpY2F0aW9uIG9mICclc2VsZWN0e3NpemVvZnxhbGlnbm9mfHZlY19zdGVwfTAnIHRvIGEgZnVuY3Rpb24gdHlwZSIsIDUxOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9zaXplb2ZfYWxpZ25vZl92b2lkX3R5cGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW52YWxpZCBhcHBsaWNhdGlvbiBvZiAnJXNlbGVjdHtzaXplb2Z8YWxpZ25vZnx2ZWNfc3RlcH0wJyB0byBhIHZvaWQgdHlwZSIsIDUxOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9zdGFuZGFsb25lX3NwZWNpZmllciwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInJTAnIGlzIG5vdCBwZXJtaXR0ZWQgb24gYSBkZWNsYXJhdGlvbiBvZiBhIHR5cGUiLCAzOTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfc2l6ZW9mX2FsaWdub2ZfZnVuY3Rpb25fdHlwZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbnZhbGlkIGFwcGxpY2F0aW9uIG9mICclc2VsZWN0e3NpemVvZnxhbGlnbm9mfHZlY19zdGVwfF9fYnVpbHRpbl9vbXBfcmVxdWlyZWRfc2ltZF9hbGlnbnxfX2FsaWdub2Z9MCcgdG8gYSBmdW5jdGlvbiB0eXBlIiwgNTMwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3NpemVvZl9hbGlnbm9mX3ZvaWRfdHlwZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbnZhbGlkIGFwcGxpY2F0aW9uIG9mICclc2VsZWN0e3NpemVvZnxhbGlnbm9mfHZlY19zdGVwfF9fYnVpbHRpbl9vbXBfcmVxdWlyZWRfc2ltZF9hbGlnbnxfX2FsaWdub2Z9MCcgdG8gYSB2b2lkIHR5cGUiLCA1MzAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfc3RhbmRhbG9uZV9zcGVjaWZpZXIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJyUwJyBpcyBub3QgcGVybWl0dGVkIG9uIGEgZGVjbGFyYXRpb24gb2YgYSB0eXBlIiwgNDA1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X3N0YXJfdGhpc19sYW1iZGFfY2FwdHVyZV9jeHgxNywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjYXB0dXJlIG9mICcqdGhpcycgYnkgY29weSBpcyBhIEMrKzE3IGV4dGVuc2lvbiIsIDkxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMykKLURJQUcoZXh0X3N0YXRpY19hc3NlcnRfbm9fbWVzc2FnZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzdGF0aWNfYXNzZXJ0IHdpdGggbm8gbWVzc2FnZSBpcyBhIEMrKzE3IGV4dGVuc2lvbiIsIDkxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X3N0YXRpY19kYXRhX21lbWJlcl9pbl91bmlvbiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzdGF0aWMgZGF0YSBtZW1iZXIgJTAgaW4gdW5pb24gaXMgYSBDKysxMSBleHRlbnNpb24iLCA3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF9zdGF0aWNfbm9uX3N0YXRpYywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJyZWRlY2xhcmluZyBub24tc3RhdGljICUwIGFzIHN0YXRpYyBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzODQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfc3RyaW5nX2xpdGVyYWxfb3BlcmF0b3JfdGVtcGxhdGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic3RyaW5nIGxpdGVyYWwgb3BlcmF0b3IgdGVtcGxhdGVzIGFyZSBhIEdOVSBleHRlbnNpb24iLCAyNjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfc3Vic2NyaXB0X25vbl9sdmFsdWUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiSVNPIEM5MCBkb2VzIG5vdCBhbGxvdyBzdWJzY3JpcHRpbmcgbm9uLWx2YWx1ZSBhcnJheSIsIDUxNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF9zdGF0aWNfbm9uX3N0YXRpYywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJyZWRlY2xhcmluZyBub24tc3RhdGljICUwIGFzIHN0YXRpYyBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzOTMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfc3RhdGljX291dF9vZl9saW5lLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidzdGF0aWMnIGNhbiBvbmx5IGJlIHNwZWNpZmllZCBpbnNpZGUgdGhlIGNsYXNzIGRlZmluaXRpb24iLCAzOTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfc3RyaW5nX2xpdGVyYWxfb3BlcmF0b3JfdGVtcGxhdGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic3RyaW5nIGxpdGVyYWwgb3BlcmF0b3IgdGVtcGxhdGVzIGFyZSBhIEdOVSBleHRlbnNpb24iLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfc3Vic2NyaXB0X25vbl9sdmFsdWUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiSVNPIEM5MCBkb2VzIG5vdCBhbGxvdyBzdWJzY3JpcHRpbmcgbm9uLWx2YWx1ZSBhcnJheSIsIDUyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF90ZW1wbGF0ZV9hcmdfZXh0cmFfcGFyZW5zLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFkZHJlc3Mgbm9uLXR5cGUgdGVtcGxhdGUgYXJndW1lbnQgY2Fubm90IGJlIHN1cnJvdW5kZWQgYnkgcGFyZW50aGVzZXMiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3RlbXBsYXRlX2FyZ19sb2NhbF90eXBlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRlbXBsYXRlIGFyZ3VtZW50IHVzZXMgbG9jYWwgdHlwZSAlMCIsIDM0OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF90ZW1wbGF0ZV9hcmdfbG9jYWxfdHlwZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0ZW1wbGF0ZSBhcmd1bWVudCB1c2VzIGxvY2FsIHR5cGUgJTAiLCAzNTcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfdGVtcGxhdGVfYXJnX29iamVjdF9pbnRlcm5hbCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJub24tdHlwZSB0ZW1wbGF0ZSBhcmd1bWVudCByZWZlcnJpbmcgdG8gJXNlbGVjdHtmdW5jdGlvbnxvYmplY3R9MCAlMSB3aXRoIGludGVybmFsIGxpbmthZ2UgaXMgYSBDKysxMSBleHRlbnNpb24iLCA3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF90ZW1wbGF0ZV9hcmdfdW5uYW1lZF90eXBlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRlbXBsYXRlIGFyZ3VtZW50IHVzZXMgdW5uYW1lZCB0eXBlIiwgNjg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3RlbXBsYXRlX2FyZ191bm5hbWVkX3R5cGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidGVtcGxhdGUgYXJndW1lbnQgdXNlcyB1bm5hbWVkIHR5cGUiLCA2OTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfdGVtcGxhdGVfb3V0c2lkZV9vZl90ZW1wbGF0ZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIndGVtcGxhdGUnIGtleXdvcmQgb3V0c2lkZSBvZiBhIHRlbXBsYXRlIiwgNzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfdGVtcGxhdGVfcGFyYW1ldGVyX2RlZmF1bHRfaW5fZnVuY3Rpb25fdGVtcGxhdGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGVmYXVsdCB0ZW1wbGF0ZSBhcmd1bWVudHMgZm9yIGEgZnVuY3Rpb24gdGVtcGxhdGUgYXJlIGEgQysrMTEgZXh0ZW5zaW9uIiwgNzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfdHlwZWNoZWNrX2FkZHJvZl90ZW1wb3JhcnksIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInRha2luZyB0aGUgYWRkcmVzcyBvZiBhIHRlbXBvcmFyeSBvYmplY3Qgb2YgdHlwZSAlMCIsIDEzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3R5cGVjaGVja19hZGRyb2Zfdm9pZCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJJU08gQyBmb3JiaWRzIHRha2luZyB0aGUgYWRkcmVzcyBvZiBhbiBleHByZXNzaW9uIG9mIHR5cGUgJ3ZvaWQnIiwgNTE2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3R5cGVjaGVja19iYXNlX3N1cGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJtZXRob2QgcGFyYW1ldGVyIHR5cGUgJWRpZmZ7JCBkb2VzIG5vdCBtYXRjaCBzdXBlciBjbGFzcyBtZXRob2QgcGFyYW1ldGVyIHR5cGUgJHxkb2VzIG5vdCBtYXRjaCBzdXBlciBjbGFzcyBtZXRob2QgcGFyYW1ldGVyIHR5cGV9MCwxIiwgNjI4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3R5cGVjaGVja19jYXN0X25vbnNjYWxhciwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJDOTkgZm9yYmlkcyBjYXN0aW5nIG5vbnNjYWxhciB0eXBlICUwIHRvIHRoZSBzYW1lIHR5cGUiLCA1MTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfdHlwZWNoZWNrX2Nhc3RfdG9fdW5pb24sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY2FzdCB0byB1bmlvbiB0eXBlIGlzIGEgR05VIGV4dGVuc2lvbiIsIDI2NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF90eXBlY2hlY2tfY29tcGFyaXNvbl9vZl9kaXN0aW5jdF9wb2ludGVycywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb21wYXJpc29uIG9mIGRpc3RpbmN0IHBvaW50ZXIgdHlwZXMlZGlmZnsgKCQgYW5kICQpfH0wLDEiLCAxMjcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfdHlwZWNoZWNrX2NvbXBhcmlzb25fb2ZfZnB0cl90b192b2lkLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImVxdWFsaXR5IGNvbXBhcmlzb24gYmV0d2VlbiBmdW5jdGlvbiBwb2ludGVyIGFuZCB2b2lkIHBvaW50ZXIgKCUwIGFuZCAlMSkiLCA1MTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfdHlwZWNoZWNrX2NvbXBhcmlzb25fb2ZfcG9pbnRlcl9pbnRlZ2VyLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbXBhcmlzb24gYmV0d2VlbiBwb2ludGVyIGFuZCBpbnRlZ2VyICglMCBhbmQgJTEpIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF90eXBlY2hlY2tfYWRkcm9mX3ZvaWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiSVNPIEMgZm9yYmlkcyB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgYW4gZXhwcmVzc2lvbiBvZiB0eXBlICd2b2lkJyIsIDUyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF90eXBlY2hlY2tfYmFzZV9zdXBlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibWV0aG9kIHBhcmFtZXRlciB0eXBlICVkaWZmeyQgZG9lcyBub3QgbWF0Y2ggc3VwZXIgY2xhc3MgbWV0aG9kIHBhcmFtZXRlciB0eXBlICR8ZG9lcyBub3QgbWF0Y2ggc3VwZXIgY2xhc3MgbWV0aG9kIHBhcmFtZXRlciB0eXBlfTAsMSIsIDY0MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF90eXBlY2hlY2tfY2FzdF9ub25zY2FsYXIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiQzk5IGZvcmJpZHMgY2FzdGluZyBub25zY2FsYXIgdHlwZSAlMCB0byB0aGUgc2FtZSB0eXBlIiwgNTI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3R5cGVjaGVja19jYXN0X3RvX3VuaW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNhc3QgdG8gdW5pb24gdHlwZSBpcyBhIEdOVSBleHRlbnNpb24iLCAyNzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfdHlwZWNoZWNrX2NvbXBhcmlzb25fb2ZfZGlzdGluY3RfcG9pbnRlcnMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29tcGFyaXNvbiBvZiBkaXN0aW5jdCBwb2ludGVyIHR5cGVzJWRpZmZ7ICgkIGFuZCAkKXx9MCwxIiwgMTI4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3R5cGVjaGVja19jb21wYXJpc29uX29mX2ZwdHJfdG9fdm9pZCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJlcXVhbGl0eSBjb21wYXJpc29uIGJldHdlZW4gZnVuY3Rpb24gcG9pbnRlciBhbmQgdm9pZCBwb2ludGVyICglMCBhbmQgJTEpIiwgNTI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3R5cGVjaGVja19jb21wYXJpc29uX29mX3BvaW50ZXJfaW50ZWdlciwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb21wYXJpc29uIGJldHdlZW4gcG9pbnRlciBhbmQgaW50ZWdlciAoJTAgYW5kICUxKSIsIDUzMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF90eXBlY2hlY2tfY29uZF9pbmNvbXBhdGlibGVfb3BlcmFuZHMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5jb21wYXRpYmxlIG9wZXJhbmQgdHlwZXMgKCUwIGFuZCAlMSkiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3R5cGVjaGVja19jb25kX2luY29tcGF0aWJsZV9wb2ludGVycywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwb2ludGVyIHR5cGUgbWlzbWF0Y2glZGlmZnsgKCQgYW5kICQpfH0wLDEiLCA1MjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfdHlwZWNoZWNrX2NvbmRfb25lX3ZvaWQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiQzk5IGZvcmJpZHMgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgd2l0aCBvbmx5IG9uZSB2b2lkIHNpZGUiLCA1MTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfdHlwZWNoZWNrX2NvbmRfcG9pbnRlcl9pbnRlZ2VyX21pc21hdGNoLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInBvaW50ZXIvaW50ZWdlciB0eXBlIG1pc21hdGNoIGluIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24lZGlmZnsgKCQgYW5kICQpfH0wLDEiLCAxMjksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfdHlwZWNoZWNrX2NvbnZlcnRfZGlzY2FyZHNfcXVhbGlmaWVycywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0eyVkaWZme2Fzc2lnbmluZyB0byAkIGZyb20gJHxhc3NpZ25pbmcgdG8gZGlmZmVyZW50IHR5cGVzfTAsMXwlZGlmZntwYXNzaW5nICQgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJHxwYXNzaW5nIHRvIHBhcmFtZXRlciBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7cmV0dXJuaW5nICQgZnJvbSBhIGZ1bmN0aW9uIHdpdGggcmVzdWx0IHR5cGUgJHxyZXR1cm5pbmcgZnJvbSBmdW5jdGlvbiB3aXRoIGRpZmZlcmVudCByZXR1cm4gdHlwZX0wLDF8JWRpZmZ7Y29udmVydGluZyAkIHRvIHR5cGUgJHxjb252ZXJ0aW5nIGJldHdlZW4gdHlwZXN9MCwxfCVkaWZme2luaXRpYWxpemluZyAkIHdpdGggYW4gZXhwcmVzc2lvbiBvZiB0eXBlICR8aW5pdGlhbGl6aW5nIHdpdGggZXhwcmVzc2lvbiBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7c2VuZGluZyAkIHRvIHBhcmFtZXRlciBvZiB0eXBlICR8c2VuZGluZyB0byBwYXJhbWV0ZXIgb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme2Nhc3RpbmcgJCB0byB0eXBlICR8Y2FzdGluZyBiZXR3ZWVuIHR5cGVzfTAsMX0yIGRpc2NhcmRzIHF1YWxpZmllcnMiLCAzMDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfdHlwZWNoZWNrX2NvbnZlcnRfaW5jb21wYXRpYmxlX2Z1bmN0aW9uX3BvaW50ZXIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5jb21wYXRpYmxlIGZ1bmN0aW9uIHBvaW50ZXIgdHlwZXMgJXNlbGVjdHslZGlmZnthc3NpZ25pbmcgdG8gJCBmcm9tICR8YXNzaWduaW5nIHRvIGRpZmZlcmVudCB0eXBlc30wLDF8JWRpZmZ7cGFzc2luZyAkIHRvIHBhcmFtZXRlciBvZiB0eXBlICR8cGFzc2luZyB0byBwYXJhbWV0ZXIgb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme3JldHVybmluZyAkIGZyb20gYSBmdW5jdGlvbiB3aXRoIHJlc3VsdCB0eXBlICR8cmV0dXJuaW5nIGZyb20gZnVuY3Rpb24gd2l0aCBkaWZmZXJlbnQgcmV0dXJuIHR5cGV9MCwxfCVkaWZme2NvbnZlcnRpbmcgJCB0byB0eXBlICR8Y29udmVydGluZyBiZXR3ZWVuIHR5cGVzfTAsMXwlZGlmZntpbml0aWFsaXppbmcgJCB3aXRoIGFuIGV4cHJlc3Npb24gb2YgdHlwZSAkfGluaXRpYWxpemluZyB3aXRoIGV4cHJlc3Npb24gb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme3NlbmRpbmcgJCB0byBwYXJhbWV0ZXIgb2YgdHlwZSAkfHNlbmRpbmcgdG8gcGFyYW1ldGVyIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntjYXN0aW5nICQgdG8gdHlwZSAkfGNhc3RpbmcgYmV0d2VlbiB0eXBlc30wLDF9MiVzZWxlY3R7fDsgZGVyZWZlcmVuY2Ugd2l0aCAqfDsgdGFrZSB0aGUgYWRkcmVzcyB3aXRoICZ8OyByZW1vdmUgKnw7IHJlbW92ZSAmfTMiLCAyOTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfdHlwZWNoZWNrX2NvbnZlcnRfaW5jb21wYXRpYmxlX3BvaW50ZXIsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZXMgJXNlbGVjdHslZGlmZnthc3NpZ25pbmcgdG8gJCBmcm9tICR8YXNzaWduaW5nIHRvIGRpZmZlcmVudCB0eXBlc30wLDF8JWRpZmZ7cGFzc2luZyAkIHRvIHBhcmFtZXRlciBvZiB0eXBlICR8cGFzc2luZyB0byBwYXJhbWV0ZXIgb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme3JldHVybmluZyAkIGZyb20gYSBmdW5jdGlvbiB3aXRoIHJlc3VsdCB0eXBlICR8cmV0dXJuaW5nIGZyb20gZnVuY3Rpb24gd2l0aCBkaWZmZXJlbnQgcmV0dXJuIHR5cGV9MCwxfCVkaWZme2NvbnZlcnRpbmcgJCB0byB0eXBlICR8Y29udmVydGluZyBiZXR3ZWVuIHR5cGVzfTAsMXwlZGlmZntpbml0aWFsaXppbmcgJCB3aXRoIGFuIGV4cHJlc3Npb24gb2YgdHlwZSAkfGluaXRpYWxpemluZyB3aXRoIGV4cHJlc3Npb24gb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme3NlbmRpbmcgJCB0byBwYXJhbWV0ZXIgb2YgdHlwZSAkfHNlbmRpbmcgdG8gcGFyYW1ldGVyIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntjYXN0aW5nICQgdG8gdHlwZSAkfGNhc3RpbmcgYmV0d2VlbiB0eXBlc30wLDF9MiVzZWxlY3R7fDsgZGVyZWZlcmVuY2Ugd2l0aCAqfDsgdGFrZSB0aGUgYWRkcmVzcyB3aXRoICZ8OyByZW1vdmUgKnw7IHJlbW92ZSAmfTMiLCAzMDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfdHlwZWNoZWNrX2NvbnZlcnRfaW5jb21wYXRpYmxlX3BvaW50ZXJfc2lnbiwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0eyVkaWZme2Fzc2lnbmluZyB0byAkIGZyb20gJHxhc3NpZ25pbmcgdG8gZGlmZmVyZW50IHR5cGVzfTAsMXwlZGlmZntwYXNzaW5nICQgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJHxwYXNzaW5nIHRvIHBhcmFtZXRlciBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7cmV0dXJuaW5nICQgZnJvbSBhIGZ1bmN0aW9uIHdpdGggcmVzdWx0IHR5cGUgJHxyZXR1cm5pbmcgZnJvbSBmdW5jdGlvbiB3aXRoIGRpZmZlcmVudCByZXR1cm4gdHlwZX0wLDF8JWRpZmZ7Y29udmVydGluZyAkIHRvIHR5cGUgJHxjb252ZXJ0aW5nIGJldHdlZW4gdHlwZXN9MCwxfCVkaWZme2luaXRpYWxpemluZyAkIHdpdGggYW4gZXhwcmVzc2lvbiBvZiB0eXBlICR8aW5pdGlhbGl6aW5nIHdpdGggZXhwcmVzc2lvbiBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7c2VuZGluZyAkIHRvIHBhcmFtZXRlciBvZiB0eXBlICR8c2VuZGluZyB0byBwYXJhbWV0ZXIgb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme2Nhc3RpbmcgJCB0byB0eXBlICR8Y2FzdGluZyBiZXR3ZWVuIHR5cGVzfTAsMX0yIGNvbnZlcnRzIGJldHdlZW4gcG9pbnRlcnMgdG8gaW50ZWdlciB0eXBlcyB3aXRoIGRpZmZlcmVudCBzaWduIiwgNTIxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3R5cGVjaGVja19jb252ZXJ0X2ludF9wb2ludGVyLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluY29tcGF0aWJsZSBpbnRlZ2VyIHRvIHBvaW50ZXIgY29udmVyc2lvbiAlc2VsZWN0eyVkaWZme2Fzc2lnbmluZyB0byAkIGZyb20gJHxhc3NpZ25pbmcgdG8gZGlmZmVyZW50IHR5cGVzfTAsMXwlZGlmZntwYXNzaW5nICQgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJHxwYXNzaW5nIHRvIHBhcmFtZXRlciBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7cmV0dXJuaW5nICQgZnJvbSBhIGZ1bmN0aW9uIHdpdGggcmVzdWx0IHR5cGUgJHxyZXR1cm5pbmcgZnJvbSBmdW5jdGlvbiB3aXRoIGRpZmZlcmVudCByZXR1cm4gdHlwZX0wLDF8JWRpZmZ7Y29udmVydGluZyAkIHRvIHR5cGUgJHxjb252ZXJ0aW5nIGJldHdlZW4gdHlwZXN9MCwxfCVkaWZme2luaXRpYWxpemluZyAkIHdpdGggYW4gZXhwcmVzc2lvbiBvZiB0eXBlICR8aW5pdGlhbGl6aW5nIHdpdGggZXhwcmVzc2lvbiBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7c2VuZGluZyAkIHRvIHBhcmFtZXRlciBvZiB0eXBlICR8c2VuZGluZyB0byBwYXJhbWV0ZXIgb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme2Nhc3RpbmcgJCB0byB0eXBlICR8Y2FzdGluZyBiZXR3ZWVuIHR5cGVzfTAsMX0yJXNlbGVjdHt8OyBkZXJlZmVyZW5jZSB3aXRoICp8OyB0YWtlIHRoZSBhZGRyZXNzIHdpdGggJnw7IHJlbW92ZSAqfDsgcmVtb3ZlICZ9MyIsIDMyMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQotRElBRyhleHRfdHlwZWNoZWNrX2NvbnZlcnRfcG9pbnRlcl9pbnQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5jb21wYXRpYmxlIHBvaW50ZXIgdG8gaW50ZWdlciBjb252ZXJzaW9uICVzZWxlY3R7JWRpZmZ7YXNzaWduaW5nIHRvICQgZnJvbSAkfGFzc2lnbmluZyB0byBkaWZmZXJlbnQgdHlwZXN9MCwxfCVkaWZme3Bhc3NpbmcgJCB0byBwYXJhbWV0ZXIgb2YgdHlwZSAkfHBhc3NpbmcgdG8gcGFyYW1ldGVyIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntyZXR1cm5pbmcgJCBmcm9tIGEgZnVuY3Rpb24gd2l0aCByZXN1bHQgdHlwZSAkfHJldHVybmluZyBmcm9tIGZ1bmN0aW9uIHdpdGggZGlmZmVyZW50IHJldHVybiB0eXBlfTAsMXwlZGlmZntjb252ZXJ0aW5nICQgdG8gdHlwZSAkfGNvbnZlcnRpbmcgYmV0d2VlbiB0eXBlc30wLDF8JWRpZmZ7aW5pdGlhbGl6aW5nICQgd2l0aCBhbiBleHByZXNzaW9uIG9mIHR5cGUgJHxpbml0aWFsaXppbmcgd2l0aCBleHByZXNzaW9uIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntzZW5kaW5nICQgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJHxzZW5kaW5nIHRvIHBhcmFtZXRlciBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7Y2FzdGluZyAkIHRvIHR5cGUgJHxjYXN0aW5nIGJldHdlZW4gdHlwZXN9MCwxfTIlc2VsZWN0e3w7IGRlcmVmZXJlbmNlIHdpdGggKnw7IHRha2UgdGhlIGFkZHJlc3Mgd2l0aCAmfDsgcmVtb3ZlICp8OyByZW1vdmUgJn0zIiwgMzIxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCi1ESUFHKGV4dF90eXBlY2hlY2tfY29udmVydF9wb2ludGVyX3ZvaWRfZnVuYywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlc2VsZWN0eyVkaWZme2Fzc2lnbmluZyB0byAkIGZyb20gJHxhc3NpZ25pbmcgdG8gZGlmZmVyZW50IHR5cGVzfTAsMXwlZGlmZntwYXNzaW5nICQgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJHxwYXNzaW5nIHRvIHBhcmFtZXRlciBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7cmV0dXJuaW5nICQgZnJvbSBhIGZ1bmN0aW9uIHdpdGggcmVzdWx0IHR5cGUgJHxyZXR1cm5pbmcgZnJvbSBmdW5jdGlvbiB3aXRoIGRpZmZlcmVudCByZXR1cm4gdHlwZX0wLDF8JWRpZmZ7Y29udmVydGluZyAkIHRvIHR5cGUgJHxjb252ZXJ0aW5nIGJldHdlZW4gdHlwZXN9MCwxfCVkaWZme2luaXRpYWxpemluZyAkIHdpdGggYW4gZXhwcmVzc2lvbiBvZiB0eXBlICR8aW5pdGlhbGl6aW5nIHdpdGggZXhwcmVzc2lvbiBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7c2VuZGluZyAkIHRvIHBhcmFtZXRlciBvZiB0eXBlICR8c2VuZGluZyB0byBwYXJhbWV0ZXIgb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme2Nhc3RpbmcgJCB0byB0eXBlICR8Y2FzdGluZyBiZXR3ZWVuIHR5cGVzfTAsMX0yIGNvbnZlcnRzIGJldHdlZW4gdm9pZCBwb2ludGVyIGFuZCBmdW5jdGlvbiBwb2ludGVyIiwgNTE2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3R5cGVjaGVja19kZWNsX2luY29tcGxldGVfdHlwZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0ZW50YXRpdmUgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSB3aXRoIGludGVybmFsIGxpbmthZ2UgaGFzIGluY29tcGxldGUgbm9uLWFycmF5IHR5cGUgJTAiLCA2NDcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfdHlwZWNoZWNrX2luZGlyZWN0aW9uX3Rocm91Z2hfdm9pZF9wb2ludGVyLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIklTTyBDKysgZG9lcyBub3QgYWxsb3cgaW5kaXJlY3Rpb24gb24gb3BlcmFuZCBvZiB0eXBlICUwIiwgNzM5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3R5cGVjaGVja19vcmRlcmVkX2NvbXBhcmlzb25fb2ZfZnVuY3Rpb25fcG9pbnRlcnMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib3JkZXJlZCBjb21wYXJpc29uIG9mIGZ1bmN0aW9uIHBvaW50ZXJzICglMCBhbmQgJTEpIiwgNDk1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3R5cGVjaGVja19vcmRlcmVkX2NvbXBhcmlzb25fb2ZfcG9pbnRlcl9hbmRfemVybywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJvcmRlcmVkIGNvbXBhcmlzb24gYmV0d2VlbiBwb2ludGVyIGFuZCB6ZXJvICglMCBhbmQgJTEpIGlzIGFuIGV4dGVuc2lvbiIsIDUxNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF90eXBlY2hlY2tfY29uZF9pbmNvbXBhdGlibGVfcG9pbnRlcnMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicG9pbnRlciB0eXBlIG1pc21hdGNoJWRpZmZ7ICgkIGFuZCAkKXx9MCwxIiwgNTM1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3R5cGVjaGVja19jb25kX29uZV92b2lkLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIkM5OSBmb3JiaWRzIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zIHdpdGggb25seSBvbmUgdm9pZCBzaWRlIiwgNTI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3R5cGVjaGVja19jb25kX3BvaW50ZXJfaW50ZWdlcl9taXNtYXRjaCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwb2ludGVyL2ludGVnZXIgdHlwZSBtaXNtYXRjaCBpbiBjb25kaXRpb25hbCBleHByZXNzaW9uJWRpZmZ7ICgkIGFuZCAkKXx9MCwxIiwgMTMwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3R5cGVjaGVja19jb252ZXJ0X2Rpc2NhcmRzX3F1YWxpZmllcnMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHslZGlmZnthc3NpZ25pbmcgdG8gJCBmcm9tICR8YXNzaWduaW5nIHRvIGRpZmZlcmVudCB0eXBlc30wLDF8JWRpZmZ7cGFzc2luZyAkIHRvIHBhcmFtZXRlciBvZiB0eXBlICR8cGFzc2luZyB0byBwYXJhbWV0ZXIgb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme3JldHVybmluZyAkIGZyb20gYSBmdW5jdGlvbiB3aXRoIHJlc3VsdCB0eXBlICR8cmV0dXJuaW5nIGZyb20gZnVuY3Rpb24gd2l0aCBkaWZmZXJlbnQgcmV0dXJuIHR5cGV9MCwxfCVkaWZme2NvbnZlcnRpbmcgJCB0byB0eXBlICR8Y29udmVydGluZyBiZXR3ZWVuIHR5cGVzfTAsMXwlZGlmZntpbml0aWFsaXppbmcgJCB3aXRoIGFuIGV4cHJlc3Npb24gb2YgdHlwZSAkfGluaXRpYWxpemluZyB3aXRoIGV4cHJlc3Npb24gb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme3NlbmRpbmcgJCB0byBwYXJhbWV0ZXIgb2YgdHlwZSAkfHNlbmRpbmcgdG8gcGFyYW1ldGVyIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntjYXN0aW5nICQgdG8gdHlwZSAkfGNhc3RpbmcgYmV0d2VlbiB0eXBlc30wLDF9MiBkaXNjYXJkcyBxdWFsaWZpZXJzIiwgMzExLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3R5cGVjaGVja19jb252ZXJ0X2luY29tcGF0aWJsZV9mdW5jdGlvbl9wb2ludGVyLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluY29tcGF0aWJsZSBmdW5jdGlvbiBwb2ludGVyIHR5cGVzICVzZWxlY3R7JWRpZmZ7YXNzaWduaW5nIHRvICQgZnJvbSAkfGFzc2lnbmluZyB0byBkaWZmZXJlbnQgdHlwZXN9MCwxfCVkaWZme3Bhc3NpbmcgJCB0byBwYXJhbWV0ZXIgb2YgdHlwZSAkfHBhc3NpbmcgdG8gcGFyYW1ldGVyIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntyZXR1cm5pbmcgJCBmcm9tIGEgZnVuY3Rpb24gd2l0aCByZXN1bHQgdHlwZSAkfHJldHVybmluZyBmcm9tIGZ1bmN0aW9uIHdpdGggZGlmZmVyZW50IHJldHVybiB0eXBlfTAsMXwlZGlmZntjb252ZXJ0aW5nICQgdG8gdHlwZSAkfGNvbnZlcnRpbmcgYmV0d2VlbiB0eXBlc30wLDF8JWRpZmZ7aW5pdGlhbGl6aW5nICQgd2l0aCBhbiBleHByZXNzaW9uIG9mIHR5cGUgJHxpbml0aWFsaXppbmcgd2l0aCBleHByZXNzaW9uIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntzZW5kaW5nICQgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJHxzZW5kaW5nIHRvIHBhcmFtZXRlciBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7Y2FzdGluZyAkIHRvIHR5cGUgJHxjYXN0aW5nIGJldHdlZW4gdHlwZXN9MCwxfTIlc2VsZWN0e3w7IGRlcmVmZXJlbmNlIHdpdGggKnw7IHRha2UgdGhlIGFkZHJlc3Mgd2l0aCAmfDsgcmVtb3ZlICp8OyByZW1vdmUgJn0zIiwgMzA3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3R5cGVjaGVja19jb252ZXJ0X2luY29tcGF0aWJsZV9wb2ludGVyLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluY29tcGF0aWJsZSBwb2ludGVyIHR5cGVzICVzZWxlY3R7JWRpZmZ7YXNzaWduaW5nIHRvICQgZnJvbSAkfGFzc2lnbmluZyB0byBkaWZmZXJlbnQgdHlwZXN9MCwxfCVkaWZme3Bhc3NpbmcgJCB0byBwYXJhbWV0ZXIgb2YgdHlwZSAkfHBhc3NpbmcgdG8gcGFyYW1ldGVyIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntyZXR1cm5pbmcgJCBmcm9tIGEgZnVuY3Rpb24gd2l0aCByZXN1bHQgdHlwZSAkfHJldHVybmluZyBmcm9tIGZ1bmN0aW9uIHdpdGggZGlmZmVyZW50IHJldHVybiB0eXBlfTAsMXwlZGlmZntjb252ZXJ0aW5nICQgdG8gdHlwZSAkfGNvbnZlcnRpbmcgYmV0d2VlbiB0eXBlc30wLDF8JWRpZmZ7aW5pdGlhbGl6aW5nICQgd2l0aCBhbiBleHByZXNzaW9uIG9mIHR5cGUgJHxpbml0aWFsaXppbmcgd2l0aCBleHByZXNzaW9uIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntzZW5kaW5nICQgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJHxzZW5kaW5nIHRvIHBhcmFtZXRlciBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7Y2FzdGluZyAkIHRvIHR5cGUgJHxjYXN0aW5nIGJldHdlZW4gdHlwZXN9MCwxfTIlc2VsZWN0e3w7IGRlcmVmZXJlbmNlIHdpdGggKnw7IHRha2UgdGhlIGFkZHJlc3Mgd2l0aCAmfDsgcmVtb3ZlICp8OyByZW1vdmUgJn0zIiwgMzEwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3R5cGVjaGVja19jb252ZXJ0X2luY29tcGF0aWJsZV9wb2ludGVyX3NpZ24sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHslZGlmZnthc3NpZ25pbmcgdG8gJCBmcm9tICR8YXNzaWduaW5nIHRvIGRpZmZlcmVudCB0eXBlc30wLDF8JWRpZmZ7cGFzc2luZyAkIHRvIHBhcmFtZXRlciBvZiB0eXBlICR8cGFzc2luZyB0byBwYXJhbWV0ZXIgb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme3JldHVybmluZyAkIGZyb20gYSBmdW5jdGlvbiB3aXRoIHJlc3VsdCB0eXBlICR8cmV0dXJuaW5nIGZyb20gZnVuY3Rpb24gd2l0aCBkaWZmZXJlbnQgcmV0dXJuIHR5cGV9MCwxfCVkaWZme2NvbnZlcnRpbmcgJCB0byB0eXBlICR8Y29udmVydGluZyBiZXR3ZWVuIHR5cGVzfTAsMXwlZGlmZntpbml0aWFsaXppbmcgJCB3aXRoIGFuIGV4cHJlc3Npb24gb2YgdHlwZSAkfGluaXRpYWxpemluZyB3aXRoIGV4cHJlc3Npb24gb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme3NlbmRpbmcgJCB0byBwYXJhbWV0ZXIgb2YgdHlwZSAkfHNlbmRpbmcgdG8gcGFyYW1ldGVyIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntjYXN0aW5nICQgdG8gdHlwZSAkfGNhc3RpbmcgYmV0d2VlbiB0eXBlc30wLDF9MiBjb252ZXJ0cyBiZXR3ZWVuIHBvaW50ZXJzIHRvIGludGVnZXIgdHlwZXMgd2l0aCBkaWZmZXJlbnQgc2lnbiIsIDUzMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF90eXBlY2hlY2tfY29udmVydF9pbnRfcG9pbnRlciwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbmNvbXBhdGlibGUgaW50ZWdlciB0byBwb2ludGVyIGNvbnZlcnNpb24gJXNlbGVjdHslZGlmZnthc3NpZ25pbmcgdG8gJCBmcm9tICR8YXNzaWduaW5nIHRvIGRpZmZlcmVudCB0eXBlc30wLDF8JWRpZmZ7cGFzc2luZyAkIHRvIHBhcmFtZXRlciBvZiB0eXBlICR8cGFzc2luZyB0byBwYXJhbWV0ZXIgb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme3JldHVybmluZyAkIGZyb20gYSBmdW5jdGlvbiB3aXRoIHJlc3VsdCB0eXBlICR8cmV0dXJuaW5nIGZyb20gZnVuY3Rpb24gd2l0aCBkaWZmZXJlbnQgcmV0dXJuIHR5cGV9MCwxfCVkaWZme2NvbnZlcnRpbmcgJCB0byB0eXBlICR8Y29udmVydGluZyBiZXR3ZWVuIHR5cGVzfTAsMXwlZGlmZntpbml0aWFsaXppbmcgJCB3aXRoIGFuIGV4cHJlc3Npb24gb2YgdHlwZSAkfGluaXRpYWxpemluZyB3aXRoIGV4cHJlc3Npb24gb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme3NlbmRpbmcgJCB0byBwYXJhbWV0ZXIgb2YgdHlwZSAkfHNlbmRpbmcgdG8gcGFyYW1ldGVyIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntjYXN0aW5nICQgdG8gdHlwZSAkfGNhc3RpbmcgYmV0d2VlbiB0eXBlc30wLDF9MiVzZWxlY3R7fDsgZGVyZWZlcmVuY2Ugd2l0aCAqfDsgdGFrZSB0aGUgYWRkcmVzcyB3aXRoICZ8OyByZW1vdmUgKnw7IHJlbW92ZSAmfTMiLCAzMzAsIFNGSU5BRV9TdWJzdGl0dXRpb25GYWlsdXJlLCBmYWxzZSwgZmFsc2UsIDI0KQorRElBRyhleHRfdHlwZWNoZWNrX2NvbnZlcnRfcG9pbnRlcl9pbnQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5jb21wYXRpYmxlIHBvaW50ZXIgdG8gaW50ZWdlciBjb252ZXJzaW9uICVzZWxlY3R7JWRpZmZ7YXNzaWduaW5nIHRvICQgZnJvbSAkfGFzc2lnbmluZyB0byBkaWZmZXJlbnQgdHlwZXN9MCwxfCVkaWZme3Bhc3NpbmcgJCB0byBwYXJhbWV0ZXIgb2YgdHlwZSAkfHBhc3NpbmcgdG8gcGFyYW1ldGVyIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntyZXR1cm5pbmcgJCBmcm9tIGEgZnVuY3Rpb24gd2l0aCByZXN1bHQgdHlwZSAkfHJldHVybmluZyBmcm9tIGZ1bmN0aW9uIHdpdGggZGlmZmVyZW50IHJldHVybiB0eXBlfTAsMXwlZGlmZntjb252ZXJ0aW5nICQgdG8gdHlwZSAkfGNvbnZlcnRpbmcgYmV0d2VlbiB0eXBlc30wLDF8JWRpZmZ7aW5pdGlhbGl6aW5nICQgd2l0aCBhbiBleHByZXNzaW9uIG9mIHR5cGUgJHxpbml0aWFsaXppbmcgd2l0aCBleHByZXNzaW9uIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntzZW5kaW5nICQgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJHxzZW5kaW5nIHRvIHBhcmFtZXRlciBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7Y2FzdGluZyAkIHRvIHR5cGUgJHxjYXN0aW5nIGJldHdlZW4gdHlwZXN9MCwxfTIlc2VsZWN0e3w7IGRlcmVmZXJlbmNlIHdpdGggKnw7IHRha2UgdGhlIGFkZHJlc3Mgd2l0aCAmfDsgcmVtb3ZlICp8OyByZW1vdmUgJn0zIiwgMzMwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCitESUFHKGV4dF90eXBlY2hlY2tfY29udmVydF9wb2ludGVyX3ZvaWRfZnVuYywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlc2VsZWN0eyVkaWZme2Fzc2lnbmluZyB0byAkIGZyb20gJHxhc3NpZ25pbmcgdG8gZGlmZmVyZW50IHR5cGVzfTAsMXwlZGlmZntwYXNzaW5nICQgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJHxwYXNzaW5nIHRvIHBhcmFtZXRlciBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7cmV0dXJuaW5nICQgZnJvbSBhIGZ1bmN0aW9uIHdpdGggcmVzdWx0IHR5cGUgJHxyZXR1cm5pbmcgZnJvbSBmdW5jdGlvbiB3aXRoIGRpZmZlcmVudCByZXR1cm4gdHlwZX0wLDF8JWRpZmZ7Y29udmVydGluZyAkIHRvIHR5cGUgJHxjb252ZXJ0aW5nIGJldHdlZW4gdHlwZXN9MCwxfCVkaWZme2luaXRpYWxpemluZyAkIHdpdGggYW4gZXhwcmVzc2lvbiBvZiB0eXBlICR8aW5pdGlhbGl6aW5nIHdpdGggZXhwcmVzc2lvbiBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7c2VuZGluZyAkIHRvIHBhcmFtZXRlciBvZiB0eXBlICR8c2VuZGluZyB0byBwYXJhbWV0ZXIgb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme2Nhc3RpbmcgJCB0byB0eXBlICR8Y2FzdGluZyBiZXR3ZWVuIHR5cGVzfTAsMX0yIGNvbnZlcnRzIGJldHdlZW4gdm9pZCBwb2ludGVyIGFuZCBmdW5jdGlvbiBwb2ludGVyIiwgNTI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3R5cGVjaGVja19kZWNsX2luY29tcGxldGVfdHlwZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0ZW50YXRpdmUgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSB3aXRoIGludGVybmFsIGxpbmthZ2UgaGFzIGluY29tcGxldGUgbm9uLWFycmF5IHR5cGUgJTAiLCA2NjAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfdHlwZWNoZWNrX2luZGlyZWN0aW9uX3Rocm91Z2hfdm9pZF9wb2ludGVyLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIklTTyBDKysgZG9lcyBub3QgYWxsb3cgaW5kaXJlY3Rpb24gb24gb3BlcmFuZCBvZiB0eXBlICUwIiwgNzUyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3R5cGVjaGVja19vcmRlcmVkX2NvbXBhcmlzb25fb2ZfZnVuY3Rpb25fcG9pbnRlcnMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib3JkZXJlZCBjb21wYXJpc29uIG9mIGZ1bmN0aW9uIHBvaW50ZXJzICglMCBhbmQgJTEpIiwgNTA1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3R5cGVjaGVja19vcmRlcmVkX2NvbXBhcmlzb25fb2ZfcG9pbnRlcl9hbmRfemVybywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJvcmRlcmVkIGNvbXBhcmlzb24gYmV0d2VlbiBwb2ludGVyIGFuZCB6ZXJvICglMCBhbmQgJTEpIGlzIGFuIGV4dGVuc2lvbiIsIDUyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKGV4dF90eXBlY2hlY2tfb3JkZXJlZF9jb21wYXJpc29uX29mX3BvaW50ZXJfaW50ZWdlciwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvcmRlcmVkIGNvbXBhcmlzb24gYmV0d2VlbiBwb2ludGVyIGFuZCBpbnRlZ2VyICglMCBhbmQgJTEpIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF90eXBlY2hlY2tfemVyb19hcnJheV9zaXplLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInplcm8gc2l6ZSBhcnJheXMgYXJlIGFuIGV4dGVuc2lvbiIsIDc0NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF90eXBlZGVmX3dpdGhvdXRfYV9uYW1lLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInR5cGVkZWYgcmVxdWlyZXMgYSBuYW1lIiwgMzk2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3R5cGVuYW1lX21pc3NpbmcsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWlzc2luZyAndHlwZW5hbWUnIHByaW9yIHRvIGRlcGVuZGVudCB0eXBlIG5hbWUgJyUwJTEnIiwgNjYwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3R5cGVjaGVja196ZXJvX2FycmF5X3NpemUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiemVybyBzaXplIGFycmF5cyBhcmUgYW4gZXh0ZW5zaW9uIiwgNzU5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3R5cGVkZWZfd2l0aG91dF9hX25hbWUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidHlwZWRlZiByZXF1aXJlcyBhIG5hbWUiLCA0MDUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhleHRfdHlwZW5hbWVfbWlzc2luZywgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtaXNzaW5nICd0eXBlbmFtZScgcHJpb3IgdG8gZGVwZW5kZW50IHR5cGUgbmFtZSAnJTAlMSciLCA2NzMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfdHlwZW5hbWVfb3V0c2lkZV9vZl90ZW1wbGF0ZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIndHlwZW5hbWUnIG9jY3VycyBvdXRzaWRlIG9mIGEgdGVtcGxhdGUiLCA3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF91bmRlY2xhcmVkX3VucXVhbF9pZF93aXRoX2RlcGVuZGVudF9iYXNlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJTA7IHVucXVhbGlmaWVkIGxvb2t1cCBpbnRvIGRlcGVuZGVudCBiYXNlcyBvZiBjbGFzcyB0ZW1wbGF0ZSAlMSBpcyBhIE1pY3Jvc29mdCBleHRlbnNpb24iLCAzODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfdW5kZWZpbmVkX2ludGVybmFsX3R5cGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiSVNPIEMrKyByZXF1aXJlcyBhIGRlZmluaXRpb24gaW4gdGhpcyB0cmFuc2xhdGlvbiB1bml0IGZvciAlc2VsZWN0e2Z1bmN0aW9ufHZhcmlhYmxlfTAgJXExIGJlY2F1c2UgaXRzIHR5cGUgZG9lcyBub3QgaGF2ZSBsaW5rYWdlIiwgNjY5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3VuZGVjbGFyZWRfdW5xdWFsX2lkX3dpdGhfZGVwZW5kZW50X2Jhc2UsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAlMDsgdW5xdWFsaWZpZWQgbG9va3VwIGludG8gZGVwZW5kZW50IGJhc2VzIG9mIGNsYXNzIHRlbXBsYXRlICUxIGlzIGEgTWljcm9zb2Z0IGV4dGVuc2lvbiIsIDM5NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF91bmRlZmluZWRfaW50ZXJuYWxfdHlwZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJJU08gQysrIHJlcXVpcmVzIGEgZGVmaW5pdGlvbiBpbiB0aGlzIHRyYW5zbGF0aW9uIHVuaXQgZm9yICVzZWxlY3R7ZnVuY3Rpb258dmFyaWFibGV9MCAlcTEgYmVjYXVzZSBpdHMgdHlwZSBkb2VzIG5vdCBoYXZlIGxpbmthZ2UiLCA2ODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfdW5lbGFib3JhdGVkX2ZyaWVuZF90eXBlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVuZWxhYm9yYXRlZCBmcmllbmQgZGVjbGFyYXRpb24gaXMgYSBDKysxMSBleHRlbnNpb247IHNwZWNpZnkgJyVzZWxlY3R7c3RydWN0fGludGVyZmFjZXx1bmlvbnxjbGFzc3xlbnVtfTAnIHRvIGJlZnJpZW5kICUxIiwgNzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfdW5pb25fbWVtYmVyX29mX3JlZmVyZW5jZV90eXBlLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVuaW9uIG1lbWJlciAlMCBoYXMgcmVmZXJlbmNlIHR5cGUgJTEsIHdoaWNoIGlzIGEgTWljcm9zb2Z0IGV4dGVuc2lvbiIsIDM4NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF91c2Vfb3V0X29mX3Njb3BlX2RlY2xhcmF0aW9uLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzZSBvZiBvdXQtb2Ytc2NvcGUgZGVjbGFyYXRpb24gb2YgJTAlc2VsZWN0e3wgd2hvc2UgdHlwZSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoYXQgb2YgYW4gaW1wbGljaXQgZGVjbGFyYXRpb259MSIsIDQ5NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF91bmlvbl9tZW1iZXJfb2ZfcmVmZXJlbmNlX3R5cGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5pb24gbWVtYmVyICUwIGhhcyByZWZlcmVuY2UgdHlwZSAlMSwgd2hpY2ggaXMgYSBNaWNyb3NvZnQgZXh0ZW5zaW9uIiwgMzk2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3VzZV9vdXRfb2Zfc2NvcGVfZGVjbGFyYXRpb24sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidXNlIG9mIG91dC1vZi1zY29wZSBkZWNsYXJhdGlvbiBvZiAlMCVzZWxlY3R7fCB3aG9zZSB0eXBlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhhdCBvZiBhbiBpbXBsaWNpdCBkZWNsYXJhdGlvbn0xIiwgNTA3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcoZXh0X3VzaW5nX3VuZGVmaW5lZF9zdGQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidXNpbmcgZGlyZWN0aXZlIHJlZmVycyB0byBpbXBsaWNpdGx5LWRlZmluZWQgbmFtZXNwYWNlICdzdGQnIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKGV4dF92YXJpYWJsZV9zaXplZF90eXBlX2luX3N0cnVjdCwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmaWVsZCAlMCB3aXRoIHZhcmlhYmxlIHNpemVkIHR5cGUgJTEgbm90IGF0IHRoZSBlbmQgb2YgYSBzdHJ1Y3Qgb3IgY2xhc3MgaXMgYSBHTlUgZXh0ZW5zaW9uIiwgMjY4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcoZXh0X3ZhcmlhYmxlX3NpemVkX3R5cGVfaW5fc3RydWN0LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZpZWxkICUwIHdpdGggdmFyaWFibGUgc2l6ZWQgdHlwZSAlMSBub3QgYXQgdGhlIGVuZCBvZiBhIHN0cnVjdCBvciBjbGFzcyBpcyBhIEdOVSBleHRlbnNpb24iLCAyNzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhleHRfdmFyaWFibGVfdGVtcGxhdGUsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidmFyaWFibGUgdGVtcGxhdGVzIGFyZSBhIEMrKzE0IGV4dGVuc2lvbiIsIDg3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3ZhcmlhZGljX21haW4sIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ21haW4nIGlzIG5vdCBhbGxvd2VkIHRvIGJlIGRlY2xhcmVkIHZhcmlhZGljIiwgMzU0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3ZsYSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ2YXJpYWJsZSBsZW5ndGggYXJyYXlzIGFyZSBhIEM5OSBmZWF0dXJlIiwgNzM4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3ZsYV9mb2xkZWRfdG9fY29uc3RhbnQsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidmFyaWFibGUgbGVuZ3RoIGFycmF5IGZvbGRlZCB0byBjb25zdGFudCBhcnJheSBhcyBhbiBleHRlbnNpb24iLCAyNTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyhleHRfd2Fybl9kdXBsaWNhdGVfZGVjbHNwZWMsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZHVwbGljYXRlICclMCcgZGVjbGFyYXRpb24gc3BlY2lmaWVyIiwgMTg3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcoZXh0X3dhcm5fZ251X2ZpbmFsLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIl9fZmluYWwgaXMgYSBHTlUgZXh0ZW5zaW9uLCBjb25zaWRlciB1c2luZyBDKysxMSBmaW5hbCIsIDI0MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKGV4dF92YXJpYWRpY19tYWluLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidtYWluJyBpcyBub3QgYWxsb3dlZCB0byBiZSBkZWNsYXJlZCB2YXJpYWRpYyIsIDM2MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF92bGEsIENMQVNTX0VYVEVOU0lPTiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidmFyaWFibGUgbGVuZ3RoIGFycmF5cyBhcmUgYSBDOTkgZmVhdHVyZSIsIDc1MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKGV4dF92bGFfZm9sZGVkX3RvX2NvbnN0YW50LCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInZhcmlhYmxlIGxlbmd0aCBhcnJheSBmb2xkZWQgdG8gY29uc3RhbnQgYXJyYXkgYXMgYW4gZXh0ZW5zaW9uIiwgMjY3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcobm90ZV9hY2Nlc3NfY29uc3RyYWluZWRfYnlfcGF0aCwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImNvbnN0cmFpbmVkIGJ5ICVzZWxlY3R7fGltcGxpY2l0bHkgfTElc2VsZWN0e3ByaXZhdGV8cHJvdGVjdGVkfTAgaW5oZXJpdGFuY2UgaGVyZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX2FjY2Vzc19uYXR1cmFsLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiJXNlbGVjdHt8aW1wbGljaXRseSB9MWRlY2xhcmVkICVzZWxlY3R7cHJpdmF0ZXxwcm90ZWN0ZWR9MCBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfYWNjZXNzX3Byb3RlY3RlZF9yZXN0cmljdGVkX2N0b3JkdG9yLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAicHJvdGVjdGVkICVzZWxlY3R7Y29uc3RydWN0b3J8ZGVzdHJ1Y3Rvcn0wIGNhbiBvbmx5IGJlIHVzZWQgdG8gJXNlbGVjdHtjb25zdHJ1Y3R8ZGVzdHJveX0wIGEgYmFzZSBjbGFzcyBzdWJvYmplY3QiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKQEAgLTIxODMsNyArMjE5MSw3IEBACiBESUFHKG5vdGVfYXR0cmlidXRlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiYXR0cmlidXRlIGlzIGhlcmUiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcobm90ZV9hdHRyaWJ1dGVfb3ZlcmxvYWRhYmxlX3ByZXZfb3ZlcmxvYWQsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJwcmV2aW91cyAlc2VsZWN0e3VubWFya2VkIHx9MG92ZXJsb2FkIG9mIGZ1bmN0aW9uIGlzIGhlcmUiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcobm90ZV9hdXRvX3JlYWRvbmx5X2lib3V0bGV0X2ZpeHVwX3N1Z2dlc3QsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJwcm9wZXJ0eSBzaG91bGQgYmUgY2hhbmdlZCB0byBiZSByZWFkd3JpdGUiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcobm90ZV9hdmFpbGFiaWxpdHlfc3BlY2lmaWVkX2hlcmUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICIlMCBoYXMgYmVlbiBleHBsaWNpdGx5IG1hcmtlZCAlc2VsZWN0e3VuYXZhaWxhYmxlfGRlbGV0ZWR8ZGVwcmVjYXRlZHxwYXJ0aWFsfTEgaGVyZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyhub3RlX2F2YWlsYWJpbGl0eV9zcGVjaWZpZWRfaGVyZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgIiUwIGhhcyBiZWVuIGV4cGxpY2l0bHkgbWFya2VkICVzZWxlY3R7dW5hdmFpbGFibGV8ZGVsZXRlZHxkZXByZWNhdGVkfTEgaGVyZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX2F3YWl0X3JlYWR5X25vX2Jvb2xfY29udmVyc2lvbiwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgInJldHVybiB0eXBlIG9mICdhd2FpdF9yZWFkeScgaXMgcmVxdWlyZWQgdG8gYmUgY29udGV4dHVhbGx5IGNvbnZlcnRpYmxlIHRvICdib29sJyIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxNCkKIERJQUcobm90ZV9iYWRfbWVtYWNjZXNzX3NpbGVuY2UsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJleHBsaWNpdGx5IGNhc3QgdGhlIHBvaW50ZXIgdG8gc2lsZW5jZSB0aGlzIHdhcm5pbmciLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcobm90ZV9iYXNlX2NsYXNzX3NwZWNpZmllZF9oZXJlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiYmFzZSBjbGFzcyAlMCBzcGVjaWZpZWQgaGVyZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQpAQCAtMjIxNiw2ICsyMjI0LDcgQEAKIERJQUcobm90ZV9jb3JvdXRpbmVfcHJvbWlzZV9zdXNwZW5kX2ltcGxpY2l0bHlfcmVxdWlyZWQsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJjYWxsIHRvICclc2VsZWN0e2luaXRpYWxfc3VzcGVuZHxmaW5hbF9zdXNwZW5kfTAnIGltcGxpY2l0bHkgcmVxdWlyZWQgYnkgdGhlICVzZWxlY3R7aW5pdGlhbCBzdXNwZW5kIHBvaW50fGZpbmFsIHN1c3BlbmQgcG9pbnR9MCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxNCkKIERJQUcobm90ZV9jdWRhX2NvbmZsaWN0aW5nX2RldmljZV9mdW5jdGlvbl9kZWNsYXJlZF9oZXJlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiY29uZmxpY3RpbmcgX19kZXZpY2VfXyBmdW5jdGlvbiBkZWNsYXJlZCBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfY3VkYV9vdmxfY2FuZGlkYXRlX3RhcmdldF9taXNtYXRjaCwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImNhbmRpZGF0ZSB0ZW1wbGF0ZSBpZ25vcmVkOiB0YXJnZXQgYXR0cmlidXRlcyBkbyBub3QgbWF0Y2giLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcobm90ZV9jeHgyYV9jb21wYXRfdXRmOF9zdHJpbmdfcmVtb3ZlX3U4LCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAicmVtb3ZlICd1OCcgcHJlZml4IHRvIGF2b2lkIGEgY2hhbmdlIG9mIGJlaGF2aW9yOyBDbGFuZyBlbmNvZGVzIHVucHJlZml4ZWQgbmFycm93IHN0cmluZyBsaXRlcmFscyBhcyBVVEYtOCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX2RlY2xfdW5ndWFyZGVkX2F2YWlsYWJpbGl0eV9zaWxlbmNlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiYW5ub3RhdGUgJXNlbGVjdHslMXxhbm9ueW1vdXMgJTF9MCB3aXRoIGFuIGF2YWlsYWJpbGl0eSBhdHRyaWJ1dGUgdG8gc2lsZW5jZSB0aGlzIHdhcm5pbmciLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcobm90ZV9kZWNsYXJhdGlvbl9ub3RfYV9wcm90b3R5cGUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJ0aGlzIGRlY2xhcmF0aW9uIGlzIG5vdCBhIHByb3RvdHlwZTsgYWRkICd2b2lkJyB0byBtYWtlIGl0IGEgcHJvdG90eXBlIGZvciBhIHplcm8tcGFyYW1ldGVyIGZ1bmN0aW9uIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfZGVjbGFyZV9wYXJhbWV0ZXJfc3Ryb25nLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiZGVjbGFyZSB0aGUgcGFyYW1ldGVyIF9fc3Ryb25nIG9yIGNhcHR1cmUgYSBfX2Jsb2NrIF9fc3Ryb25nIHZhcmlhYmxlIHRvIGtlZXAgdmFsdWVzIGFsaXZlIGFjcm9zcyBhdXRvcmVsZWFzZSBwb29scyIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA1KQpAQCAtMjIzNyw3ICsyMjQ2LDcgQEAKIERJQUcobm90ZV9kZWxldGVkX2RlZmF1bHRfY3Rvcl9hbGxfY29uc3QsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICIlc2VsZWN0e2RlZmF1bHQgY29uc3RydWN0b3Igb2Z8Y29uc3RydWN0b3IgaW5oZXJpdGVkIGJ5fTAgJTEgaXMgaW1wbGljaXRseSBkZWxldGVkIGJlY2F1c2UgYWxsICVzZWxlY3R7ZGF0YSBtZW1iZXJzfGRhdGEgbWVtYmVycyBvZiBhbiBhbm9ueW1vdXMgdW5pb24gbWVtYmVyfTIgYXJlIGNvbnN0LXF1YWxpZmllZCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX2RlbGV0ZWRfZGVmYXVsdF9jdG9yX3VuaW5pdF9maWVsZCwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgIiVzZWxlY3R7ZGVmYXVsdCBjb25zdHJ1Y3RvciBvZnxjb25zdHJ1Y3RvciBpbmhlcml0ZWQgYnl9MCAlMSBpcyBpbXBsaWNpdGx5IGRlbGV0ZWQgYmVjYXVzZSBmaWVsZCAlMiBvZiAlc2VsZWN0e3JlZmVyZW5jZXxjb25zdC1xdWFsaWZpZWR9NCB0eXBlICUzIHdvdWxkIG5vdCBiZSBpbml0aWFsaXplZCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX2RlbGV0ZWRfZHRvcl9ub19vcGVyYXRvcl9kZWxldGUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJ2aXJ0dWFsIGRlc3RydWN0b3IgcmVxdWlyZXMgYW4gdW5hbWJpZ3VvdXMsIGFjY2Vzc2libGUgJ29wZXJhdG9yIGRlbGV0ZSciLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcobm90ZV9kZWxldGVkX3NwZWNpYWxfbWVtYmVyX2NsYXNzX3N1Ym9iamVjdCwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgIiVzZWxlY3R7ZGVmYXVsdCBjb25zdHJ1Y3RvciBvZnxjb3B5IGNvbnN0cnVjdG9yIG9mfG1vdmUgY29uc3RydWN0b3Igb2Z8Y29weSBhc3NpZ25tZW50IG9wZXJhdG9yIG9mfG1vdmUgYXNzaWdubWVudCBvcGVyYXRvciBvZnxkZXN0cnVjdG9yIG9mfGNvbnN0cnVjdG9yIGluaGVyaXRlZCBieX0wICUxIGlzIGltcGxpY2l0bHkgZGVsZXRlZCBiZWNhdXNlICVzZWxlY3R7YmFzZSBjbGFzcyAlM3wlc2VsZWN0e3x8fHx2YXJpYW50IH00ZmllbGQgJTN9MiBoYXMgJXNlbGVjdHtub3xhIGRlbGV0ZWR8bXVsdGlwbGV8YW4gaW5hY2Nlc3NpYmxlfGEgbm9uLXRyaXZpYWx9NCAlc2VsZWN0eyVzZWxlY3R7ZGVmYXVsdCBjb25zdHJ1Y3Rvcnxjb3B5IGNvbnN0cnVjdG9yfG1vdmUgY29uc3RydWN0b3J8Y29weSBhc3NpZ25tZW50IG9wZXJhdG9yfG1vdmUgYXNzaWdubWVudCBvcGVyYXRvcnxkZXN0cnVjdG9yfCVzZWxlY3R7ZGVmYXVsdHxjb3JyZXNwb25kaW5nfGRlZmF1bHR8ZGVmYXVsdHxkZWZhdWx0fTQgY29uc3RydWN0b3J9MHxkZXN0cnVjdG9yfTUlc2VsZWN0e3x8c3x8fTQiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcobm90ZV9kZWxldGVkX3NwZWNpYWxfbWVtYmVyX2NsYXNzX3N1Ym9iamVjdCwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgIiVzZWxlY3R7ZGVmYXVsdCBjb25zdHJ1Y3RvciBvZnxjb3B5IGNvbnN0cnVjdG9yIG9mfG1vdmUgY29uc3RydWN0b3Igb2Z8Y29weSBhc3NpZ25tZW50IG9wZXJhdG9yIG9mfG1vdmUgYXNzaWdubWVudCBvcGVyYXRvciBvZnxkZXN0cnVjdG9yIG9mfGNvbnN0cnVjdG9yIGluaGVyaXRlZCBieX0wICUxIGlzIGltcGxpY2l0bHkgZGVsZXRlZCBiZWNhdXNlICVzZWxlY3R7YmFzZSBjbGFzcyAlM3wlc2VsZWN0e3x8fHx2YXJpYW50IH00ZmllbGQgJTN9MiAlc2VsZWN0e2hhcyAlc2VsZWN0e25vfGEgZGVsZXRlZHxtdWx0aXBsZXxhbiBpbmFjY2Vzc2libGV8YSBub24tdHJpdmlhbH00ICVzZWxlY3R7JXNlbGVjdHtkZWZhdWx0IGNvbnN0cnVjdG9yfGNvcHkgY29uc3RydWN0b3J8bW92ZSBjb25zdHJ1Y3Rvcnxjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3J8bW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yfGRlc3RydWN0b3J8JXNlbGVjdHtkZWZhdWx0fGNvcnJlc3BvbmRpbmd8ZGVmYXVsdHxkZWZhdWx0fGRlZmF1bHR9NCBjb25zdHJ1Y3Rvcn0wfGRlc3RydWN0b3J9NSVzZWxlY3R7fHxzfHx9NHxpcyBhbiBPYmpDIHBvaW50ZXJ9NiIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX2RlbGV0ZWRfdHlwZV9taXNtYXRjaCwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImZ1bmN0aW9uIGlzIGltcGxpY2l0bHkgZGVsZXRlZCBiZWNhdXNlIGl0cyBkZWNsYXJlZCB0eXBlIGRvZXMgbm90IG1hdGNoIHRoZSB0eXBlIG9mIGFuIGltcGxpY2l0ICVzZWxlY3R7ZGVmYXVsdCBjb25zdHJ1Y3Rvcnxjb3B5IGNvbnN0cnVjdG9yfG1vdmUgY29uc3RydWN0b3J8Y29weSBhc3NpZ25tZW50IG9wZXJhdG9yfG1vdmUgYXNzaWdubWVudCBvcGVyYXRvcnxkZXN0cnVjdG9yfTAiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcobm90ZV9kZXBlbmRlbnRfZnVuY3Rpb25fdGVtcGxhdGVfc3BlY19kaXNjYXJkX3JlYXNvbiwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImNhbmRpZGF0ZSBpZ25vcmVkOiAlc2VsZWN0e25vdCBhIGZ1bmN0aW9uIHRlbXBsYXRlfG5vdCBhIG1lbWJlciBvZiB0aGUgZW5jbG9zaW5nIG5hbWVzcGFjZTsgZGlkIHlvdSBtZWFuIHRvIGV4cGxpY2l0bHkgcXVhbGlmeSB0aGUgc3BlY2lhbGl6YXRpb24/fTAiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcobm90ZV9kZXBlbmRlbnRfbm9uX3R5cGVfZGVmYXVsdF9hcmdfaW5fcGFydGlhbF9zcGVjLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAidGVtcGxhdGUgcGFyYW1ldGVyIGlzIHVzZWQgaW4gZGVmYXVsdCBhcmd1bWVudCBkZWNsYXJlZCBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCkBAIC0yMjYxLDcgKzIyNzAsNiBAQAogRElBRyhub3RlX2VxdWl2YWxlbnRfaW50ZXJuYWxfbGlua2FnZV9kZWNsLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiZGVjbGFyZWQgaGVyZSVzZWxlY3R7IGluIG1vZHVsZSAnJTEnfH0wIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEzKQogRElBRyhub3RlX2V2YWx1YXRlX2NvbXBhcmlzb25fZmlyc3QsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJwbGFjZSBwYXJlbnRoZXNlcyBhcm91bmQgY29tcGFyaXNvbiBleHByZXNzaW9uIHRvIGV2YWx1YXRlIGl0IGZpcnN0IiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfZXZhbHVhdGluZ19leGNlcHRpb25fc3BlY19oZXJlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiaW4gZXZhbHVhdGlvbiBvZiBleGNlcHRpb24gc3BlY2lmaWNhdGlvbiBmb3IgJXEwIG5lZWRlZCBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKG5vdGVfZXhjZXB0aW9uX3NwZWNfZGVwcmVjYXRlZCwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgInVzZSAnJTAnIGluc3RlYWQiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcobm90ZV9leGl0c19fX2Jsb2NrLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAianVtcCBleGl0cyBzY29wZSBvZiBfX2Jsb2NrIHZhcmlhYmxlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfZXhpdHNfYmxvY2tfY2FwdHVyZXNfY3h4X29iaiwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImp1bXAgZXhpdHMgbGlmZXRpbWUgb2YgYmxvY2sgd2hpY2ggY2FwdHVyZXMgYSBkZXN0cnVjdGlibGUgQysrIG9iamVjdCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX2V4aXRzX2Jsb2NrX2NhcHR1cmVzX25vbl90cml2aWFsX2Nfc3RydWN0LCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAianVtcCBleGl0cyBsaWZldGltZSBvZiBibG9jayB3aGljaCBjYXB0dXJlcyBhIEMgc3RydWN0IHRoYXQgaXMgbm9uLXRyaXZpYWwgdG8gZGVzdHJveSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQpAQCAtMjMxNSw3ICsyMzIzLDcgQEAKIERJQUcobm90ZV9nZXR0ZXJfdW5hdmFpbGFibGUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJvciBiZWNhdXNlIHNldHRlciBpcyBkZWNsYXJlZCBoZXJlLCBidXQgbm8gZ2V0dGVyIG1ldGhvZCAlMCBpcyBmb3VuZCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX2dvdG9fbXNfYXNtX2xhYmVsLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiaW5saW5lIGFzc2VtYmx5IGxhYmVsICUwIGRlY2xhcmVkIGhlcmUiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcobm90ZV9ndWFyZGVkX2J5X2RlY2xhcmVkX2hlcmUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJHdWFyZGVkX2J5IGRlY2xhcmVkIGhlcmUuIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKG5vdGVfaGlkZGVuX292ZXJsb2FkZWRfdmlydHVhbF9kZWNsYXJlZF9oZXJlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiaGlkZGVuIG92ZXJsb2FkZWQgdmlydHVhbCBmdW5jdGlvbiAlcTAgZGVjbGFyZWQgaGVyZSVzZWxlY3R7fDogZGlmZmVyZW50IGNsYXNzZXMlZGlmZnsgKCQgdnMgJCl8fTIsM3w6IGRpZmZlcmVudCBudW1iZXIgb2YgcGFyYW1ldGVycyAoJTIgdnMgJTMpfDogdHlwZSBtaXNtYXRjaCBhdCAlb3JkaW5hbDIgcGFyYW1ldGVyJWRpZmZ7ICgkIHZzICQpfH0zLDR8OiBkaWZmZXJlbnQgcmV0dXJuIHR5cGUlZGlmZnsgKCQgdnMgJCl8fTIsM3w6IGRpZmZlcmVudCBxdWFsaWZpZXJzICglc2VsZWN0e25vbmV8Y29uc3R8cmVzdHJpY3R8Y29uc3QgYW5kIHJlc3RyaWN0fHZvbGF0aWxlfGNvbnN0IGFuZCB2b2xhdGlsZXx2b2xhdGlsZSBhbmQgcmVzdHJpY3R8Y29uc3QsIHZvbGF0aWxlLCBhbmQgcmVzdHJpY3R9MiB2cyAlc2VsZWN0e25vbmV8Y29uc3R8cmVzdHJpY3R8Y29uc3QgYW5kIHJlc3RyaWN0fHZvbGF0aWxlfGNvbnN0IGFuZCB2b2xhdGlsZXx2b2xhdGlsZSBhbmQgcmVzdHJpY3R8Y29uc3QsIHZvbGF0aWxlLCBhbmQgcmVzdHJpY3R9Myl8OiBkaWZmZXJlbnQgZXhjZXB0aW9uIHNwZWNpZmljYXRpb25zfTEiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcobm90ZV9oaWRkZW5fb3ZlcmxvYWRlZF92aXJ0dWFsX2RlY2xhcmVkX2hlcmUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJoaWRkZW4gb3ZlcmxvYWRlZCB2aXJ0dWFsIGZ1bmN0aW9uICVxMCBkZWNsYXJlZCBoZXJlJXNlbGVjdHt8OiBkaWZmZXJlbnQgY2xhc3NlcyVkaWZmeyAoJCB2cyAkKXx9MiwzfDogZGlmZmVyZW50IG51bWJlciBvZiBwYXJhbWV0ZXJzICglMiB2cyAlMyl8OiB0eXBlIG1pc21hdGNoIGF0ICVvcmRpbmFsMiBwYXJhbWV0ZXIlZGlmZnsgKCQgdnMgJCl8fTMsNHw6IGRpZmZlcmVudCByZXR1cm4gdHlwZSVkaWZmeyAoJCB2cyAkKXx9MiwzfDogZGlmZmVyZW50IHF1YWxpZmllcnMgKCUyIHZzICUzKXw6IGRpZmZlcmVudCBleGNlcHRpb24gc3BlY2lmaWNhdGlvbnN9MSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX2hpZGRlbl90YWcsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJ0eXBlIGRlY2xhcmF0aW9uIGhpZGRlbiIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX2hpZGluZ19vYmplY3QsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJkZWNsYXJhdGlvbiBoaWRlcyB0eXBlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfaWNlX2NvbnZlcnNpb25faGVyZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImNvbnZlcnNpb24gdG8gJXNlbGVjdHtpbnRlZ3JhbHxlbnVtZXJhdGlvbn0wIHR5cGUgJTEgZGVjbGFyZWQgaGVyZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQpAQCAtMjQzMCw2ICsyNDM4LDkgQEAKIERJQUcobm90ZV9vbXBfY3JpdGljYWxfbm9faGludCwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgIiVzZWxlY3R7fHByZXZpb3VzIH0wZGlyZWN0aXZlIHdpdGggbm8gJ2hpbnQnIGNsYXVzZSBzcGVjaWZpZWQiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTEpCiBESUFHKG5vdGVfb21wX2V4cGxpY2l0X2RzYSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImRlZmluZWQgYXMgJTAiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTEpCiBESUFHKG5vdGVfb21wX2ltcGxpY2l0X2RzYSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImltcGxpY2l0bHkgZGV0ZXJtaW5lZCBhcyAlMCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxMSkKK0RJQUcobm90ZV9vbXBfaW52YWxpZF9sZW5ndGhfb25fdGhpc19wdHJfbWFwcGluZywgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImV4cGVjdGVkIGxlbmd0aCBvbiBtYXBwaW5nIG9mICd0aGlzJyBhcnJheSBzZWN0aW9uIGV4cHJlc3Npb24gdG8gYmUgJzEnIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDExKQorRElBRyhub3RlX29tcF9pbnZhbGlkX2xvd2VyX2JvdW5kX29uX3RoaXNfcHRyX21hcHBpbmcsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJleHBlY3RlZCBsb3dlciBib3VuZCBvbiBtYXBwaW5nIG9mICd0aGlzJyBhcnJheSBzZWN0aW9uIGV4cHJlc3Npb24gdG8gYmUgJzAnIG9yIG5vdCBzcGVjaWZpZWQiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTEpCitESUFHKG5vdGVfb21wX2ludmFsaWRfc3Vic2NyaXB0X29uX3RoaXNfcHRyX21hcCwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImV4cGVjdGVkICd0aGlzJyBzdWJzY3JpcHQgZXhwcmVzc2lvbiBvbiBtYXAgY2xhdXNlIHRvIGJlICd0aGlzWzBdJyIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxMSkKIERJQUcobm90ZV9vbXBfbG9vcF9jb25kX3JlcXVyZXNfY29tcGF0aWJsZV9pbmNyLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAibG9vcCBzdGVwIGlzIGV4cGVjdGVkIHRvIGJlICVzZWxlY3R7bmVnYXRpdmV8cG9zaXRpdmV9MCBkdWUgdG8gdGhpcyBjb25kaXRpb24iLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTEpCiBESUFHKG5vdGVfb21wX25lc3RlZF9zdGF0ZW1lbnRfaGVyZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgIiVzZWxlY3R7c3RhdGVtZW50fGRpcmVjdGl2ZX0wIG91dHNpZGUgdGVhbXMgY29uc3RydWN0IGhlcmUiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTEpCiBESUFHKG5vdGVfb21wX25lc3RlZF90ZWFtc19jb25zdHJ1Y3RfaGVyZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgIm5lc3RlZCB0ZWFtcyBjb25zdHJ1Y3QgaGVyZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxMSkKQEAgLTI0NTIsNyArMjQ2Myw3IEBACiBESUFHKG5vdGVfb3ZlcnJpZGRlbl92aXJ0dWFsX2Z1bmN0aW9uLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAib3ZlcnJpZGRlbiB2aXJ0dWFsIGZ1bmN0aW9uIGlzIGhlcmUiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcobm90ZV9vdmxfYnVpbHRpbl9iaW5hcnlfY2FuZGlkYXRlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiYnVpbHQtaW4gY2FuZGlkYXRlICUwIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfb3ZsX2J1aWx0aW5fdW5hcnlfY2FuZGlkYXRlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiYnVpbHQtaW4gY2FuZGlkYXRlICUwIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKG5vdGVfb3ZsX2NhbmRpZGF0ZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImNhbmRpZGF0ZSAlc2VsZWN0e2Z1bmN0aW9ufGZ1bmN0aW9ufGNvbnN0cnVjdG9yfGNvbnN0cnVjdG9yICh0aGUgaW1wbGljaXQgZGVmYXVsdCBjb25zdHJ1Y3Rvcil8Y29uc3RydWN0b3IgKHRoZSBpbXBsaWNpdCBjb3B5IGNvbnN0cnVjdG9yKXxjb25zdHJ1Y3RvciAodGhlIGltcGxpY2l0IG1vdmUgY29uc3RydWN0b3IpfGZ1bmN0aW9uICh0aGUgaW1wbGljaXQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9yKXxmdW5jdGlvbiAodGhlIGltcGxpY2l0IG1vdmUgYXNzaWdubWVudCBvcGVyYXRvcil8aW5oZXJpdGVkIGNvbnN0cnVjdG9yfTAlc2VsZWN0e3wgdGVtcGxhdGV8ICUzfTElc2VsZWN0e3wgaGFzIGRpZmZlcmVudCBjbGFzcyVkaWZmeyAoZXhwZWN0ZWQgJCBidXQgaGFzICQpfH01LDZ8IGhhcyBkaWZmZXJlbnQgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKGV4cGVjdGVkICU1IGJ1dCBoYXMgJTYpfCBoYXMgdHlwZSBtaXNtYXRjaCBhdCAlb3JkaW5hbDUgcGFyYW1ldGVyJWRpZmZ7IChleHBlY3RlZCAkIGJ1dCBoYXMgJCl8fTYsN3wgaGFzIGRpZmZlcmVudCByZXR1cm4gdHlwZSVkaWZmeyAoJCBleHBlY3RlZCBidXQgaGFzICQpfH01LDZ8IGhhcyBkaWZmZXJlbnQgcXVhbGlmaWVycyAoZXhwZWN0ZWQgJXNlbGVjdHtub25lfGNvbnN0fHJlc3RyaWN0fGNvbnN0IGFuZCByZXN0cmljdHx2b2xhdGlsZXxjb25zdCBhbmQgdm9sYXRpbGV8dm9sYXRpbGUgYW5kIHJlc3RyaWN0fGNvbnN0LCB2b2xhdGlsZSwgYW5kIHJlc3RyaWN0fTUgYnV0IGZvdW5kICVzZWxlY3R7bm9uZXxjb25zdHxyZXN0cmljdHxjb25zdCBhbmQgcmVzdHJpY3R8dm9sYXRpbGV8Y29uc3QgYW5kIHZvbGF0aWxlfHZvbGF0aWxlIGFuZCByZXN0cmljdHxjb25zdCwgdm9sYXRpbGUsIGFuZCByZXN0cmljdH02KXwgaGFzIGRpZmZlcmVudCBleGNlcHRpb24gc3BlY2lmaWNhdGlvbn00IiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKG5vdGVfb3ZsX2NhbmRpZGF0ZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImNhbmRpZGF0ZSAlc2VsZWN0e2Z1bmN0aW9ufGZ1bmN0aW9ufGNvbnN0cnVjdG9yfGNvbnN0cnVjdG9yICh0aGUgaW1wbGljaXQgZGVmYXVsdCBjb25zdHJ1Y3Rvcil8Y29uc3RydWN0b3IgKHRoZSBpbXBsaWNpdCBjb3B5IGNvbnN0cnVjdG9yKXxjb25zdHJ1Y3RvciAodGhlIGltcGxpY2l0IG1vdmUgY29uc3RydWN0b3IpfGZ1bmN0aW9uICh0aGUgaW1wbGljaXQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9yKXxmdW5jdGlvbiAodGhlIGltcGxpY2l0IG1vdmUgYXNzaWdubWVudCBvcGVyYXRvcil8aW5oZXJpdGVkIGNvbnN0cnVjdG9yfTAlc2VsZWN0e3wgdGVtcGxhdGV8ICUzfTElc2VsZWN0e3wgaGFzIGRpZmZlcmVudCBjbGFzcyVkaWZmeyAoZXhwZWN0ZWQgJCBidXQgaGFzICQpfH01LDZ8IGhhcyBkaWZmZXJlbnQgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKGV4cGVjdGVkICU1IGJ1dCBoYXMgJTYpfCBoYXMgdHlwZSBtaXNtYXRjaCBhdCAlb3JkaW5hbDUgcGFyYW1ldGVyJWRpZmZ7IChleHBlY3RlZCAkIGJ1dCBoYXMgJCl8fTYsN3wgaGFzIGRpZmZlcmVudCByZXR1cm4gdHlwZSVkaWZmeyAoJCBleHBlY3RlZCBidXQgaGFzICQpfH01LDZ8IGhhcyBkaWZmZXJlbnQgcXVhbGlmaWVycyAoZXhwZWN0ZWQgJTUgYnV0IGZvdW5kICU2KXwgaGFzIGRpZmZlcmVudCBleGNlcHRpb24gc3BlY2lmaWNhdGlvbn00IiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfb3ZsX2NhbmRpZGF0ZV9hcml0eSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImNhbmRpZGF0ZSAlc2VsZWN0e2Z1bmN0aW9ufGZ1bmN0aW9ufGNvbnN0cnVjdG9yfGNvbnN0cnVjdG9yICh0aGUgaW1wbGljaXQgZGVmYXVsdCBjb25zdHJ1Y3Rvcil8Y29uc3RydWN0b3IgKHRoZSBpbXBsaWNpdCBjb3B5IGNvbnN0cnVjdG9yKXxjb25zdHJ1Y3RvciAodGhlIGltcGxpY2l0IG1vdmUgY29uc3RydWN0b3IpfGZ1bmN0aW9uICh0aGUgaW1wbGljaXQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9yKXxmdW5jdGlvbiAodGhlIGltcGxpY2l0IG1vdmUgYXNzaWdubWVudCBvcGVyYXRvcil8aW5oZXJpdGVkIGNvbnN0cnVjdG9yfTAlc2VsZWN0e3wgdGVtcGxhdGV8ICUyfTEgbm90IHZpYWJsZTogcmVxdWlyZXMlc2VsZWN0eyBhdCBsZWFzdHwgYXQgbW9zdHx9MyAlNCBhcmd1bWVudCVzNCwgYnV0ICU1ICVwbHVyYWx7MTp3YXN8OndlcmV9NSBwcm92aWRlZCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX292bF9jYW5kaWRhdGVfYXJpdHlfb25lLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiY2FuZGlkYXRlICVzZWxlY3R7ZnVuY3Rpb258ZnVuY3Rpb258Y29uc3RydWN0b3J8Y29uc3RydWN0b3IgKHRoZSBpbXBsaWNpdCBkZWZhdWx0IGNvbnN0cnVjdG9yKXxjb25zdHJ1Y3RvciAodGhlIGltcGxpY2l0IGNvcHkgY29uc3RydWN0b3IpfGNvbnN0cnVjdG9yICh0aGUgaW1wbGljaXQgbW92ZSBjb25zdHJ1Y3Rvcil8ZnVuY3Rpb24gKHRoZSBpbXBsaWNpdCBjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IpfGZ1bmN0aW9uICh0aGUgaW1wbGljaXQgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yKXxpbmhlcml0ZWQgY29uc3RydWN0b3J9MCVzZWxlY3R7fCB0ZW1wbGF0ZXwgJTJ9MSBub3QgdmlhYmxlOiAlc2VsZWN0e3JlcXVpcmVzIGF0IGxlYXN0fGFsbG93cyBhdCBtb3N0IHNpbmdsZXxyZXF1aXJlcyBzaW5nbGV9MyBhcmd1bWVudCAlNCwgYnV0ICVwbHVyYWx7MDpub3w6JTV9NSBhcmd1bWVudHMgd2VyZSBwcm92aWRlZCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX292bF9jYW5kaWRhdGVfYmFkX2FkZHJzcGFjZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImNhbmRpZGF0ZSAlc2VsZWN0e2Z1bmN0aW9ufGZ1bmN0aW9ufGNvbnN0cnVjdG9yfGNvbnN0cnVjdG9yICh0aGUgaW1wbGljaXQgZGVmYXVsdCBjb25zdHJ1Y3Rvcil8Y29uc3RydWN0b3IgKHRoZSBpbXBsaWNpdCBjb3B5IGNvbnN0cnVjdG9yKXxjb25zdHJ1Y3RvciAodGhlIGltcGxpY2l0IG1vdmUgY29uc3RydWN0b3IpfGZ1bmN0aW9uICh0aGUgaW1wbGljaXQgY29weSBhc3NpZ25tZW50IG9wZXJhdG9yKXxmdW5jdGlvbiAodGhlIGltcGxpY2l0IG1vdmUgYXNzaWdubWVudCBvcGVyYXRvcil8aW5oZXJpdGVkIGNvbnN0cnVjdG9yfTAlc2VsZWN0e3wgdGVtcGxhdGV8ICUyfTEgbm90IHZpYWJsZTogYWRkcmVzcyBzcGFjZSBtaXNtYXRjaCBpbiAlc2VsZWN0eyVvcmRpbmFsNnwndGhpcyd9NSBhcmd1bWVudCAoJTMpLCBwYXJhbWV0ZXIgdHlwZSBtdXN0IGJlICU0IiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCkBAIC0yNDczLDcgKzI0ODQsNyBAQAogRElBRyhub3RlX292bF9jYW5kaWRhdGVfZGVkdWNlZF9taXNtYXRjaCwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImNhbmRpZGF0ZSB0ZW1wbGF0ZSBpZ25vcmVkOiBkZWR1Y2VkIHR5cGUgJWRpZmZ7JCBvZiAlc2VsZWN0e3xlbGVtZW50IG9mIH00JW9yZGluYWwwIHBhcmFtZXRlciBkb2VzIG5vdCBtYXRjaCBhZGp1c3RlZCB0eXBlICQgb2YgJXNlbGVjdHt8ZWxlbWVudCBvZiB9NGFyZ3VtZW50fG9mICVzZWxlY3R7fGVsZW1lbnQgb2YgfTQlb3JkaW5hbDAgcGFyYW1ldGVyIGRvZXMgbm90IG1hdGNoIGFkanVzdGVkIHR5cGUgb2YgJXNlbGVjdHt8ZWxlbWVudCBvZiB9NGFyZ3VtZW50fTEsMiUzIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfb3ZsX2NhbmRpZGF0ZV9kZWxldGVkLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiY2FuZGlkYXRlICVzZWxlY3R7ZnVuY3Rpb258ZnVuY3Rpb258Y29uc3RydWN0b3J8Y29uc3RydWN0b3IgKHRoZSBpbXBsaWNpdCBkZWZhdWx0IGNvbnN0cnVjdG9yKXxjb25zdHJ1Y3RvciAodGhlIGltcGxpY2l0IGNvcHkgY29uc3RydWN0b3IpfGNvbnN0cnVjdG9yICh0aGUgaW1wbGljaXQgbW92ZSBjb25zdHJ1Y3Rvcil8ZnVuY3Rpb24gKHRoZSBpbXBsaWNpdCBjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IpfGZ1bmN0aW9uICh0aGUgaW1wbGljaXQgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yKXxpbmhlcml0ZWQgY29uc3RydWN0b3J9MCVzZWxlY3R7fCB0ZW1wbGF0ZXwgJTJ9MSBoYXMgYmVlbiAlc2VsZWN0e2V4cGxpY2l0bHkgbWFkZSB1bmF2YWlsYWJsZXxleHBsaWNpdGx5IGRlbGV0ZWR8aW1wbGljaXRseSBkZWxldGVkfTMiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcobm90ZV9vdmxfY2FuZGlkYXRlX2Rpc2FibGVkX2J5X2VuYWJsZV9pZiwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImNhbmRpZGF0ZSB0ZW1wbGF0ZSBpZ25vcmVkOiBkaXNhYmxlZCBieSAlMCUxIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKG5vdGVfb3ZsX2NhbmRpZGF0ZV9kaXNhYmxlZF9ieV9leHRlbnNpb24sIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJjYW5kaWRhdGUgZGlzYWJsZWQgZHVlIHRvIE9wZW5DTCBleHRlbnNpb24iLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcobm90ZV9vdmxfY2FuZGlkYXRlX2Rpc2FibGVkX2J5X2V4dGVuc2lvbiwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImNhbmRpZGF0ZSB1bmF2YWlsYWJsZSBhcyBpdCByZXF1aXJlcyBPcGVuQ0wgZXh0ZW5zaW9uICclMCcgdG8gYmUgZW5hYmxlZCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX292bF9jYW5kaWRhdGVfZGlzYWJsZWRfYnlfZnVuY3Rpb25fY29uZF9hdHRyLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiY2FuZGlkYXRlIGRpc2FibGVkOiAlMCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX292bF9jYW5kaWRhdGVfZGlzYWJsZWRfYnlfcmVxdWlyZW1lbnQsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJjYW5kaWRhdGUgdGVtcGxhdGUgaWdub3JlZDogcmVxdWlyZW1lbnQgJyUwJyB3YXMgbm90IHNhdGlzZmllZCUxIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfb3ZsX2NhbmRpZGF0ZV9leHBsaWNpdF9hcmdfbWlzbWF0Y2hfbmFtZWQsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJjYW5kaWRhdGUgdGVtcGxhdGUgaWdub3JlZDogaW52YWxpZCBleHBsaWNpdGx5LXNwZWNpZmllZCBhcmd1bWVudCBmb3IgdGVtcGxhdGUgcGFyYW1ldGVyICUwIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCkBAIC0yNDk4LDYgKzI1MDksNyBAQAogRElBRyhub3RlX3BhcmFtZXRlcl9uYW1lZF9oZXJlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAicGFzc2luZyBhcmd1bWVudCB0byBwYXJhbWV0ZXIgJTAgaGVyZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX3BhcmFtZXRlcl9wYWNrX2hlcmUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJwYXJhbWV0ZXIgcGFjayAlMCBkZWNsYXJlZCBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfcGFyYW1ldGVyX3R5cGUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJwYXJhbWV0ZXIgb2YgdHlwZSAlMCBpcyBkZWNsYXJlZCBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKG5vdGVfcGFydGlhbF9hdmFpbGFiaWxpdHlfc3BlY2lmaWVkX2hlcmUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICIlMCBoYXMgYmVlbiBtYXJrZWQgYXMgYmVpbmcgaW50cm9kdWNlZCBpbiAlMSAlMiBoZXJlLCBidXQgdGhlIGRlcGxveW1lbnQgdGFyZ2V0IGlzICUxICUzIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfcGFydGlhbF9zcGVjX21hdGNoLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAicGFydGlhbCBzcGVjaWFsaXphdGlvbiBtYXRjaGVzICUwIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfcGFydGlhbF9zcGVjX25vdF9tb3JlX3NwZWNpYWxpemVkX3RoYW5fcHJpbWFyeSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgIiUwIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfcGFydGlhbF9zcGVjaWFsaXphdGlvbl9kZWNsYXJlZF9oZXJlLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiZXhwbGljaXQgc3BlY2lhbGl6YXRpb24gZGVjbGFyZWQgaGVyZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQpAQCAtMjU5MSw2ICsyNjAzLDcgQEAKIERJQUcobm90ZV9zdHJsY3B5Y2F0X3dyb25nX3NpemUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJjaGFuZ2Ugc2l6ZSBhcmd1bWVudCB0byBiZSB0aGUgc2l6ZSBvZiB0aGUgZGVzdGluYXRpb24iLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcobm90ZV9zdHJuY2F0X3dyb25nX3NpemUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJjaGFuZ2UgdGhlIGFyZ3VtZW50IHRvIGJlIHRoZSBmcmVlIHNwYWNlIGluIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIgbWludXMgdGhlIHRlcm1pbmF0aW5nIG51bGwgYnl0ZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX3N0cnVjdF9jbGFzc19zdWdnZXN0aW9uLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiZGlkIHlvdSBtZWFuICVzZWxlY3R7c3RydWN0fGludGVyZmFjZXxjbGFzc30wIGhlcmU/IiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKG5vdGVfc3VwcHJlc3NfY3RhZF9tYXliZV91bnN1cHBvcnRlZCwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImFkZCBhIGRlZHVjdGlvbiBndWlkZSB0byBzdXBwcmVzcyB0aGlzIHdhcm5pbmciLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcobm90ZV9zdXBwcmVzc2VkX2NsYXNzX2RlY2xhcmUsIENMQVNTX05PVEUsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RmF0YWwsICJjbGFzcyB3aXRoIHNwZWNpZmllZCBvYmpjX3JlcXVpcmVzX3Byb3BlcnR5X2RlZmluaXRpb25zIGF0dHJpYnV0ZSBpcyBkZWNsYXJlZCBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKG5vdGVfc3Vycm91bmRpbmdfbmFtZXNwYWNlX2VuZHNfaGVyZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgInN1cnJvdW5kaW5nIG5hbWVzcGFjZSB3aXRoIHZpc2liaWxpdHkgYXR0cmlidXRlIGVuZHMgaGVyZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyhub3RlX3N1cnJvdW5kaW5nX25hbWVzcGFjZV9zdGFydHNfaGVyZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgInN1cnJvdW5kaW5nIG5hbWVzcGFjZSB3aXRoIHZpc2liaWxpdHkgYXR0cmlidXRlIHN0YXJ0cyBoZXJlIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCkBAIC0yNjcxLDIwICsyNjg0LDE4IEBACiBESUFHKHdhcm5fYWJzX3Rvb19zbWFsbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYWJzb2x1dGUgdmFsdWUgZnVuY3Rpb24gJTAgZ2l2ZW4gYW4gYXJndW1lbnQgb2YgdHlwZSAlMSBidXQgaGFzIHBhcmFtZXRlciBvZiB0eXBlICUyIHdoaWNoIG1heSBjYXVzZSB0cnVuY2F0aW9uIG9mIHZhbHVlIiwgOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fYWJzdHJhY3RfZmluYWxfY2xhc3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFic3RyYWN0IGNsYXNzIGlzIG1hcmtlZCAnJXNlbGVjdHtmaW5hbHxzZWFsZWR9MCciLCA5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9hYnN0cmFjdF92YmFzZV9pbml0X2lnbm9yZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImluaXRpYWxpemVyIGZvciB2aXJ0dWFsIGJhc2UgY2xhc3MgJTAgb2YgYWJzdHJhY3QgY2xhc3MgJTEgd2lsbCBuZXZlciBiZSB1c2VkIiwgMTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2FjY2Vzc19kZWNsX2RlcHJlY2F0ZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFjY2VzcyBkZWNsYXJhdGlvbnMgYXJlIGRlcHJlY2F0ZWQ7IHVzZSB1c2luZyBkZWNsYXJhdGlvbnMgaW5zdGVhZCIsIDE1OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQorRElBRyh3YXJuX2FjY2Vzc19kZWNsX2RlcHJlY2F0ZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFjY2VzcyBkZWNsYXJhdGlvbnMgYXJlIGRlcHJlY2F0ZWQ7IHVzZSB1c2luZyBkZWNsYXJhdGlvbnMgaW5zdGVhZCIsIDE2NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQogRElBRyh3YXJuX2FjY2Vzc29yX3Byb3BlcnR5X3R5cGVfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInR5cGUgb2YgcHJvcGVydHkgJTAgZG9lcyBub3QgbWF0Y2ggdHlwZSBvZiBhY2Nlc3NvciAlMSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2FjcXVpcmVfcmVxdWlyZXNfbmVnYXRpdmVfY2FwLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJhY3F1aXJpbmcgJTAgJyUxJyByZXF1aXJlcyBuZWdhdGl2ZSBjYXBhYmlsaXR5ICclMiciLCA2NTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2FjcXVpcmVkX2JlZm9yZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgJyUxJyBtdXN0IGJlIGFjcXVpcmVkIGJlZm9yZSAnJTInIiwgNjQ5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hY3F1aXJlZF9iZWZvcmVfYWZ0ZXJfY3ljbGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIkN5Y2xlIGluIGFjcXVpcmVkX2JlZm9yZS9hZnRlciBkZXBlbmRlbmNpZXMsIHN0YXJ0aW5nIHdpdGggJyUwJyIsIDY0OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fYWRkaXRpb25faW5fYml0c2hpZnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm9wZXJhdG9yICclMCcgaGFzIGxvd2VyIHByZWNlZGVuY2UgdGhhbiAnJTEnOyAnJTEnIHdpbGwgYmUgZXZhbHVhdGVkIGZpcnN0IiwgNTg3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hZGRyZXNzX29mX3JlZmVyZW5jZV9ib29sX2NvbnZlcnNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlZmVyZW5jZSBjYW5ub3QgYmUgYm91bmQgdG8gZGVyZWZlcmVuY2VkIG51bGwgcG9pbnRlciBpbiB3ZWxsLWRlZmluZWQgQysrIGNvZGU7IHBvaW50ZXIgbWF5IGJlIGFzc3VtZWQgdG8gYWx3YXlzIGNvbnZlcnQgdG8gdHJ1ZSIsIDY2NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQotRElBRyh3YXJuX2FkZHJlc3Nfb2ZfcmVmZXJlbmNlX251bGxfY29tcGFyZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmVmZXJlbmNlIGNhbm5vdCBiZSBib3VuZCB0byBkZXJlZmVyZW5jZWQgbnVsbCBwb2ludGVyIGluIHdlbGwtZGVmaW5lZCBDKysgY29kZTsgY29tcGFyaXNvbiBtYXkgYmUgYXNzdW1lZCB0byBhbHdheXMgZXZhbHVhdGUgdG8gJXNlbGVjdHt0cnVlfGZhbHNlfTAiLCA2NDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2FsaWFzX3RvX3dlYWtfYWxpYXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7YWxpYXN8aWZ1bmN9MiB3aWxsIGFsd2F5cyByZXNvbHZlIHRvICUwIGV2ZW4gaWYgd2VhayBkZWZpbml0aW9uIG9mICUxIGlzIG92ZXJyaWRkZW4iLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2FsaWFzX3dpdGhfc2VjdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHthbGlhc3xpZnVuY30xIHdpbGwgbm90IGJlIGluIHNlY3Rpb24gJyUwJyBidXQgaW4gdGhlIHNhbWUgc2VjdGlvbiBhcyB0aGUgJXNlbGVjdHthbGlhc2VlfHJlc29sdmVyfTIiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2FjcXVpcmVfcmVxdWlyZXNfbmVnYXRpdmVfY2FwLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJhY3F1aXJpbmcgJTAgJyUxJyByZXF1aXJlcyBuZWdhdGl2ZSBjYXBhYmlsaXR5ICclMiciLCA2NjUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2FjcXVpcmVkX2JlZm9yZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgJyUxJyBtdXN0IGJlIGFjcXVpcmVkIGJlZm9yZSAnJTInIiwgNjYyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9hY3F1aXJlZF9iZWZvcmVfYWZ0ZXJfY3ljbGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIkN5Y2xlIGluIGFjcXVpcmVkX2JlZm9yZS9hZnRlciBkZXBlbmRlbmNpZXMsIHN0YXJ0aW5nIHdpdGggJyUwJyIsIDY2MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYWRkaXRpb25faW5fYml0c2hpZnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm9wZXJhdG9yICclMCcgaGFzIGxvd2VyIHByZWNlZGVuY2UgdGhhbiAnJTEnOyAnJTEnIHdpbGwgYmUgZXZhbHVhdGVkIGZpcnN0IiwgNTk5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9hZGRyZXNzX29mX3JlZmVyZW5jZV9ib29sX2NvbnZlcnNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlZmVyZW5jZSBjYW5ub3QgYmUgYm91bmQgdG8gZGVyZWZlcmVuY2VkIG51bGwgcG9pbnRlciBpbiB3ZWxsLWRlZmluZWQgQysrIGNvZGU7IHBvaW50ZXIgbWF5IGJlIGFzc3VtZWQgdG8gYWx3YXlzIGNvbnZlcnQgdG8gdHJ1ZSIsIDY3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQorRElBRyh3YXJuX2FkZHJlc3Nfb2ZfcmVmZXJlbmNlX251bGxfY29tcGFyZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmVmZXJlbmNlIGNhbm5vdCBiZSBib3VuZCB0byBkZXJlZmVyZW5jZWQgbnVsbCBwb2ludGVyIGluIHdlbGwtZGVmaW5lZCBDKysgY29kZTsgY29tcGFyaXNvbiBtYXkgYmUgYXNzdW1lZCB0byBhbHdheXMgZXZhbHVhdGUgdG8gJXNlbGVjdHt0cnVlfGZhbHNlfTAiLCA2NTcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2FsbG9jYV9hbGlnbl9hbGlnbm9mLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzZWNvbmQgYXJndW1lbnQgdG8gX19idWlsdGluX2FsbG9jYV93aXRoX2FsaWduIGlzIHN1cHBvc2VkIHRvIGJlIGluIGJpdHMiLCAxNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fYW1iaWd1b3VzX3N1aXRhYmxlX2RlbGV0ZV9mdW5jdGlvbl9mb3VuZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibXVsdGlwbGUgc3VpdGFibGUgJTAgZnVuY3Rpb25zIGZvciAlMTsgbm8gJ29wZXJhdG9yIGRlbGV0ZScgZnVuY3Rpb24gd2lsbCBiZSBpbnZva2VkIGlmIGluaXRpYWxpemF0aW9uIHRocm93cyBhbiBleGNlcHRpb24iLCAxNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fYW5vbl9iaXRmaWVsZF93aWR0aF9leGNlZWRzX3R5cGVfd2lkdGgsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIndpZHRoIG9mIGFub255bW91cyBiaXQtZmllbGQgKCUwIGJpdHMpIGV4Y2VlZHMgd2lkdGggb2YgaXRzIHR5cGU7IHZhbHVlIHdpbGwgYmUgdHJ1bmNhdGVkIHRvICUxIGJpdCVzMSIsIDYxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hcmNfbGlmZXRpbWVfcmVzdWx0X3R5cGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIkFSQyAlc2VsZWN0e3VudXNlZHxfX3Vuc2FmZV91bnJldGFpbmVkfF9fc3Ryb25nfF9fd2Vha3xfX2F1dG9yZWxlYXNpbmd9MCBsaWZldGltZSBxdWFsaWZpZXIgb24gcmV0dXJuIHR5cGUgaXMgaWdub3JlZCIsIDI3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDUpCitESUFHKHdhcm5fYXJjX2xpZmV0aW1lX3Jlc3VsdF90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJBUkMgJXNlbGVjdHt1bnVzZWR8X191bnNhZmVfdW5yZXRhaW5lZHxfX3N0cm9uZ3xfX3dlYWt8X19hdXRvcmVsZWFzaW5nfTAgbGlmZXRpbWUgcXVhbGlmaWVyIG9uIHJldHVybiB0eXBlIGlzIGlnbm9yZWQiLCAyODcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA1KQogRElBRyh3YXJuX2FyY19saXRlcmFsX2Fzc2lnbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXNzaWduaW5nICVzZWxlY3R7YXJyYXkgbGl0ZXJhbHxkaWN0aW9uYXJ5IGxpdGVyYWx8bnVtZXJpYyBsaXRlcmFsfGJveGVkIGV4cHJlc3Npb258PHNob3VsZCBub3QgaGFwcGVuPnxibG9jayBsaXRlcmFsfTAgdG8gYSB3ZWFrICVzZWxlY3R7cHJvcGVydHl8dmFyaWFibGV9MTsgb2JqZWN0IHdpbGwgYmUgcmVsZWFzZWQgYWZ0ZXIgYXNzaWdubWVudCIsIDMwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgNSkKIERJQUcod2Fybl9hcmNfb2JqZWN0X21lbWFjY2VzcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHtkZXN0aW5hdGlvbiBmb3J8c291cmNlIG9mfTAgdGhpcyAlMSBjYWxsIGlzIGEgcG9pbnRlciB0byBvd25lcnNoaXAtcXVhbGlmaWVkIHR5cGUgJTIiLCAyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDUpCiBESUFHKHdhcm5fYXJjX3BlcmZvcm1fc2VsZWN0b3JfbGVha3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInBlcmZvcm1TZWxlY3RvciBtYXkgY2F1c2UgYSBsZWFrIGJlY2F1c2UgaXRzIHNlbGVjdG9yIGlzIHVua25vd24iLCAyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCkBAIC0yNjkzLDEyNyArMjcwNCwxMjggQEAKIERJQUcod2Fybl9hcmNfcmV0YWluX2N5Y2xlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjYXB0dXJpbmcgJTAgc3Ryb25nbHkgaW4gdGhpcyBibG9jayBpcyBsaWtlbHkgdG8gbGVhZCB0byBhIHJldGFpbiBjeWNsZSIsIDI5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjYpCiBESUFHKHdhcm5fYXJjX3JldGFpbmVkX2Fzc2lnbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXNzaWduaW5nIHJldGFpbmVkIG9iamVjdCB0byAlc2VsZWN0e3dlYWt8dW5zYWZlX3VucmV0YWluZWR9MCAlc2VsZWN0e3Byb3BlcnR5fHZhcmlhYmxlfTE7IG9iamVjdCB3aWxsIGJlIHJlbGVhc2VkIGFmdGVyIGFzc2lnbm1lbnQiLCAzMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDUpCiBESUFHKHdhcm5fYXJjX3JldGFpbmVkX3Byb3BlcnR5X2Fzc2lnbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXNzaWduaW5nIHJldGFpbmVkIG9iamVjdCB0byB1bnNhZmUgcHJvcGVydHk7IG9iamVjdCB3aWxsIGJlIHJlbGVhc2VkIGFmdGVyIGFzc2lnbm1lbnQiLCAzMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDUpCi1ESUFHKHdhcm5fYXJjX3N0cm9uZ19wb2ludGVyX29iamNfcG9pbnRlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibWV0aG9kIHBhcmFtZXRlciBvZiB0eXBlICUwIHdpdGggbm8gZXhwbGljaXQgb3duZXJzaGlwIiwgMjEwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTApCitESUFHKHdhcm5fYXJjX3N0cm9uZ19wb2ludGVyX29iamNfcG9pbnRlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibWV0aG9kIHBhcmFtZXRlciBvZiB0eXBlICUwIHdpdGggbm8gZXhwbGljaXQgb3duZXJzaGlwIiwgMjE3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTApCiBESUFHKHdhcm5fYXJndW1lbnRfaW52YWxpZF9yYW5nZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImFyZ3VtZW50IHZhbHVlICUwIGlzIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlIFslMSwgJTJdIiwgMzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2FybV9pbnRlcnJ1cHRfY2FsbGluZ19jb252ZW50aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjYWxsIHRvIGZ1bmN0aW9uIHdpdGhvdXQgaW50ZXJydXB0IGF0dHJpYnV0ZSBjb3VsZCBjbG9iYmVyIGludGVycnVwdGVlJ3MgVkZQIHJlZ2lzdGVycyIsIDIxMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXJtX2ludGVycnVwdF9jYWxsaW5nX2NvbnZlbnRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNhbGwgdG8gZnVuY3Rpb24gd2l0aG91dCBpbnRlcnJ1cHQgYXR0cmlidXRlIGNvdWxkIGNsb2JiZXIgaW50ZXJydXB0ZWUncyBWRlAgcmVnaXN0ZXJzIiwgMjIwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9hcnJheV9pbmRleF9leGNlZWRzX2JvdW5kcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXJyYXkgaW5kZXggJTAgaXMgcGFzdCB0aGUgZW5kIG9mIHRoZSBhcnJheSAod2hpY2ggY29udGFpbnMgJTEgZWxlbWVudCVzMikiLCAzMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fYXJyYXlfaW5kZXhfcHJlY2VkZXNfYm91bmRzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhcnJheSBpbmRleCAlMCBpcyBiZWZvcmUgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXkiLCAzMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fYXNtX2xhYmVsX29uX2F1dG9fZGVjbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWdub3JlZCBhc20gbGFiZWwgJyUwJyBvbiBhdXRvbWF0aWMgdmFyaWFibGUiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTIpCiBESUFHKHdhcm5fYXNtX21pc21hdGNoZWRfc2l6ZV9tb2RpZmllciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidmFsdWUgc2l6ZSBkb2VzIG5vdCBtYXRjaCByZWdpc3RlciBzaXplIHNwZWNpZmllZCBieSB0aGUgY29uc3RyYWludCBhbmQgbW9kaWZpZXIiLCAzNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDEyKQogRElBRyh3YXJuX2Fzc3VtZV9zaWRlX2VmZmVjdHMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRoZSBhcmd1bWVudCB0byAlMCBoYXMgc2lkZSBlZmZlY3RzIHRoYXQgd2lsbCBiZSBkaXNjYXJkZWQiLCAzOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fYXRfYXZhaWxhYmxlX3VuY2hlY2tlZF91c2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7QGF2YWlsYWJsZXxfX2J1aWx0aW5fYXZhaWxhYmxlfTAgZG9lcyBub3QgZ3VhcmQgYXZhaWxhYmlsaXR5IGhlcmU7IHVzZSBpZiAoJXNlbGVjdHtAYXZhaWxhYmxlfF9fYnVpbHRpbl9hdmFpbGFibGV9MCkgaW5zdGVhZCIsIDY5NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fYXRsX3V1aWRfZGVwcmVjYXRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic3BlY2lmeWluZyAndXVpZCcgYXMgYW4gQVRMIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkOyB1c2UgX19kZWNsc3BlYyBpbnN0ZWFkIiwgMTYwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjcpCitESUFHKHdhcm5fYXRfYXZhaWxhYmxlX3VuY2hlY2tlZF91c2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7QGF2YWlsYWJsZXxfX2J1aWx0aW5fYXZhaWxhYmxlfTAgZG9lcyBub3QgZ3VhcmQgYXZhaWxhYmlsaXR5IGhlcmU7IHVzZSBpZiAoJXNlbGVjdHtAYXZhaWxhYmxlfF9fYnVpbHRpbl9hdmFpbGFibGV9MCkgaW5zdGVhZCIsIDcwOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXRsX3V1aWRfZGVwcmVjYXRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic3BlY2lmeWluZyAndXVpZCcgYXMgYW4gQVRMIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkOyB1c2UgX19kZWNsc3BlYyBpbnN0ZWFkIiwgMTY2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjcpCiBESUFHKHdhcm5fYXRvbWljX2ltcGxpY2l0X3NlcV9jc3QsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltcGxpY2l0IHVzZSBvZiBzZXF1ZW50aWFsbHktY29uc2lzdGVudCBhdG9taWMgbWF5IGluY3VyIHN0cm9uZ2VyIG1lbW9yeSBiYXJyaWVycyB0aGFuIG5lY2Vzc2FyeSIsIDQyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9hdG9taWNfb3BfaGFzX2ludmFsaWRfbWVtb3J5X29yZGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtZW1vcnkgb3JkZXIgYXJndW1lbnQgdG8gYXRvbWljIG9wZXJhdGlvbiBpcyBpbnZhbGlkIiwgNDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F0b21pY19vcF9taXNhbGlnbmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0e2xhcmdlfG1pc2FsaWduZWR9MCBhdG9taWMgb3BlcmF0aW9uIG1heSBpbmN1ciBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBwZW5hbHR5IiwgNDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2F0b21pY19wcm9wZXJ0eV9ydWxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ3cml0YWJsZSBhdG9taWMgcHJvcGVydHkgJTAgY2Fubm90IHBhaXIgYSBzeW50aGVzaXplZCAlc2VsZWN0e2dldHRlcnxzZXR0ZXJ9MSB3aXRoIGEgdXNlciBkZWZpbmVkICVzZWxlY3R7Z2V0dGVyfHNldHRlcn0yIiwgNDUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F0dHJfYWJpX3RhZ19uYW1lc3BhY2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidhYmlfdGFnJyBhdHRyaWJ1dGUgb24gJXNlbGVjdHtub24taW5saW5lfGFub255bW91c30wIG5hbWVzcGFjZSBpZ25vcmVkIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hdHRyX29uX3VuY29uc3VtYWJsZV9jbGFzcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY29uc3VtZWQgYW5hbHlzaXMgYXR0cmlidXRlIGlzIGF0dGFjaGVkIHRvIG1lbWJlciBvZiBjbGFzcyAnJTAnIHdoaWNoIGlzbid0IG1hcmtlZCBhcyBjb25zdW1hYmxlIiwgMTM1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hdHRyaWJ1dGVfYWRkcmVzc19tdWx0aXBsZV9pZGVudGljYWxfcXVhbGlmaWVycywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibXVsdGlwbGUgaWRlbnRpY2FsIGFkZHJlc3Mgc3BhY2VzIHNwZWNpZmllZCBmb3IgdHlwZSIsIDE4NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fYXR0cmlidXRlX2FmdGVyX2RlZmluaXRpb25faWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXR0cmlidXRlICUwIGFmdGVyIGRlZmluaXRpb24gaXMgaWdub3JlZCIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fYXR0cmlidXRlX2FyZ3VtZW50X25fbmVnYXRpdmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGF0dHJpYnV0ZSBwYXJhbWV0ZXIgJTEgaXMgbmVnYXRpdmUgYW5kIHdpbGwgYmUgaWdub3JlZCIsIDE0NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fYXR0cmlidXRlX2RsbF9pbnN0YW50aWF0ZWRfYmFzZV9jbGFzcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicHJvcGFnYXRpbmcgZGxsIGF0dHJpYnV0ZSB0byAlc2VsZWN0e2FscmVhZHkgaW5zdGFudGlhdGVkfGV4cGxpY2l0bHkgc3BlY2lhbGl6ZWR9MCBiYXNlIGNsYXNzIHRlbXBsYXRlIHdpdGhvdXQgZGxsIGF0dHJpYnV0ZSBpcyBub3Qgc3VwcG9ydGVkIiwgNjk4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hdHRyaWJ1dGVfZGxsX3JlZGVjbGFyYXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlZGVjbGFyYXRpb24gb2YgJXEwIHNob3VsZCBub3QgYWRkICVxMSBhdHRyaWJ1dGUiLCAxNzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F0dHJpYnV0ZV9kbGxleHBvcnRfZXhwbGljaXRfaW5zdGFudGlhdGlvbl9kZWNsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBsaWNpdCBpbnN0YW50aWF0aW9uIGRlY2xhcmF0aW9uIHNob3VsZCBub3QgYmUgJ2RsbGV4cG9ydCciLCAxNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F0dHJpYnV0ZV9kbGxpbXBvcnRfc3RhdGljX2ZpZWxkX2RlZmluaXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlZmluaXRpb24gb2YgZGxsaW1wb3J0IHN0YXRpYyBmaWVsZCIsIDE3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fYXR0cmlidXRlX2lib3V0bGV0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBhdHRyaWJ1dGUgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBpbnN0YW5jZSB2YXJpYWJsZXMgb3IgcHJvcGVydGllcyIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fYXR0cmlidXRlX2lnbm9yZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGF0dHJpYnV0ZSBpZ25vcmVkIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hdHRyaWJ1dGVfaWdub3JlZF9mb3JfZmllbGRfb2ZfdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgYXR0cmlidXRlIGlnbm9yZWQgZm9yIGZpZWxkIG9mIHR5cGUgJTEiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F0dHJpYnV0ZV9pZ25vcmVkX29uX2lubGluZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgYXR0cmlidXRlIGlnbm9yZWQgb24gaW5saW5lIGZ1bmN0aW9uIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hdHRyaWJ1dGVfaW52YWxpZF9vbl9kZWZpbml0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInJTAnIGF0dHJpYnV0ZSBjYW5ub3QgYmUgc3BlY2lmaWVkIG9uIGEgZGVmaW5pdGlvbiIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fYXR0cmlidXRlX25vbm51bGxfbm9fcG9pbnRlcnMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidub25udWxsJyBhdHRyaWJ1dGUgYXBwbGllZCB0byBmdW5jdGlvbiB3aXRoIG5vIHBvaW50ZXIgYXJndW1lbnRzIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hdHRyaWJ1dGVfbm9ubnVsbF9wYXJtX25vX2FyZ3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidub25udWxsJyBhdHRyaWJ1dGUgd2hlbiB1c2VkIG9uIHBhcmFtZXRlcnMgdGFrZXMgbm8gYXJndW1lbnRzIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hdHRyaWJ1dGVfbm90X29uX2RlY2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGF0dHJpYnV0ZSBpZ25vcmVkIHdoZW4gcGFyc2luZyB0eXBlIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9hdHRyX2FiaV90YWdfbmFtZXNwYWNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInYWJpX3RhZycgYXR0cmlidXRlIG9uICVzZWxlY3R7bm9uLWlubGluZXxhbm9ueW1vdXN9MCBuYW1lc3BhY2UgaWdub3JlZCIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cl9vbl91bmNvbnN1bWFibGVfY2xhc3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbnN1bWVkIGFuYWx5c2lzIGF0dHJpYnV0ZSBpcyBhdHRhY2hlZCB0byBtZW1iZXIgb2YgY2xhc3MgJyUwJyB3aGljaCBpc24ndCBtYXJrZWQgYXMgY29uc3VtYWJsZSIsIDEzNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cmlidXRlX2FkZHJlc3NfbXVsdGlwbGVfaWRlbnRpY2FsX3F1YWxpZmllcnMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm11bHRpcGxlIGlkZW50aWNhbCBhZGRyZXNzIHNwYWNlcyBzcGVjaWZpZWQgZm9yIHR5cGUiLCAxOTMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2F0dHJpYnV0ZV9hZnRlcl9kZWZpbml0aW9uX2lnbm9yZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImF0dHJpYnV0ZSAlMCBhZnRlciBkZWZpbml0aW9uIGlzIGlnbm9yZWQiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2F0dHJpYnV0ZV9hcmd1bWVudF9uX25lZ2F0aXZlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBhdHRyaWJ1dGUgcGFyYW1ldGVyICUxIGlzIG5lZ2F0aXZlIGFuZCB3aWxsIGJlIGlnbm9yZWQiLCAxNDcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2F0dHJpYnV0ZV9kbGxfaW5zdGFudGlhdGVkX2Jhc2VfY2xhc3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInByb3BhZ2F0aW5nIGRsbCBhdHRyaWJ1dGUgdG8gJXNlbGVjdHthbHJlYWR5IGluc3RhbnRpYXRlZHxleHBsaWNpdGx5IHNwZWNpYWxpemVkfTAgYmFzZSBjbGFzcyB0ZW1wbGF0ZSB3aXRob3V0IGRsbCBhdHRyaWJ1dGUgaXMgbm90IHN1cHBvcnRlZCIsIDcxMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cmlidXRlX2RsbF9yZWRlY2xhcmF0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZWRlY2xhcmF0aW9uIG9mICVxMCBzaG91bGQgbm90IGFkZCAlcTEgYXR0cmlidXRlIiwgMTgzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9hdHRyaWJ1dGVfZGxsZXhwb3J0X2V4cGxpY2l0X2luc3RhbnRpYXRpb25fZGVjbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwbGljaXQgaW5zdGFudGlhdGlvbiBkZWNsYXJhdGlvbiBzaG91bGQgbm90IGJlICdkbGxleHBvcnQnIiwgMTg0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9hdHRyaWJ1dGVfZGxsaW1wb3J0X3N0YXRpY19maWVsZF9kZWZpbml0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZWZpbml0aW9uIG9mIGRsbGltcG9ydCBzdGF0aWMgZmllbGQiLCAxODUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2F0dHJpYnV0ZV9pYm91dGxldCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgYXR0cmlidXRlIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gaW5zdGFuY2UgdmFyaWFibGVzIG9yIHByb3BlcnRpZXMiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2F0dHJpYnV0ZV9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBhdHRyaWJ1dGUgaWdub3JlZCIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cmlidXRlX2lnbm9yZWRfZm9yX2ZpZWxkX29mX3R5cGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGF0dHJpYnV0ZSBpZ25vcmVkIGZvciBmaWVsZCBvZiB0eXBlICUxIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9hdHRyaWJ1dGVfaWdub3JlZF9vbl9pbmxpbmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGF0dHJpYnV0ZSBpZ25vcmVkIG9uIGlubGluZSBmdW5jdGlvbiIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cmlidXRlX2ludmFsaWRfb25fZGVmaW5pdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJyUwJyBhdHRyaWJ1dGUgY2Fubm90IGJlIHNwZWNpZmllZCBvbiBhIGRlZmluaXRpb24iLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2F0dHJpYnV0ZV9ub25udWxsX25vX3BvaW50ZXJzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInbm9ubnVsbCcgYXR0cmlidXRlIGFwcGxpZWQgdG8gZnVuY3Rpb24gd2l0aCBubyBwb2ludGVyIGFyZ3VtZW50cyIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cmlidXRlX25vbm51bGxfcGFybV9ub19hcmdzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInbm9ubnVsbCcgYXR0cmlidXRlIHdoZW4gdXNlZCBvbiBwYXJhbWV0ZXJzIHRha2VzIG5vIGFyZ3VtZW50cyIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cmlidXRlX25vdF9vbl9kZWNsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBhdHRyaWJ1dGUgaWdub3JlZCB3aGVuIHBhcnNpbmcgdHlwZSIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fYXR0cmlidXRlX3BhY2tlZF9mb3JfYml0ZmllbGQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidwYWNrZWQnIGF0dHJpYnV0ZSB3YXMgaWdub3JlZCBvbiBiaXQtZmllbGRzIHdpdGggc2luZ2xlLWJ5dGUgYWxpZ25tZW50IGluIG9sZGVyIHZlcnNpb25zIG9mIEdDQyBhbmQgQ2xhbmciLCA0NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fYXR0cmlidXRlX3BvaW50ZXJfb3JfcmVmZXJlbmNlX29ubHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGF0dHJpYnV0ZSBvbmx5IGFwcGxpZXMgdG8gYSBwb2ludGVyIG9yIHJlZmVyZW5jZSAoJTEgaXMgaW52YWxpZCkiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F0dHJpYnV0ZV9wb2ludGVyc19vbmx5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBhdHRyaWJ1dGUgb25seSBhcHBsaWVzIHRvJXNlbGVjdHt8IGNvbnN0YW50fTEgcG9pbnRlciBhcmd1bWVudHMiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F0dHJpYnV0ZV9wcmVjZWRlX2RlZmluaXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImF0dHJpYnV0ZSBkZWNsYXJhdGlvbiBtdXN0IHByZWNlZGUgZGVmaW5pdGlvbiIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fYXR0cmlidXRlX3Byb3RlY3RlZF92aXNpYmlsaXR5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0YXJnZXQgZG9lcyBub3Qgc3VwcG9ydCAncHJvdGVjdGVkJyB2aXNpYmlsaXR5OyB1c2luZyAnZGVmYXVsdCciLCA3MDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F0dHJpYnV0ZV9yZXR1cm5fcG9pbnRlcnNfb25seSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgYXR0cmlidXRlIG9ubHkgYXBwbGllcyB0byByZXR1cm4gdmFsdWVzIHRoYXQgYXJlIHBvaW50ZXJzIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hdHRyaWJ1dGVfcmV0dXJuX3BvaW50ZXJzX3JlZnNfb25seSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgYXR0cmlidXRlIG9ubHkgYXBwbGllcyB0byByZXR1cm4gdmFsdWVzIHRoYXQgYXJlIHBvaW50ZXJzIG9yIHJlZmVyZW5jZXMiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F0dHJpYnV0ZV9zZWN0aW9uX29uX3JlZGVjbGFyYXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInNlY3Rpb24gYXR0cmlidXRlIGlzIHNwZWNpZmllZCBvbiByZWRlY2xhcmVkIHZhcmlhYmxlIiwgNTY2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hdHRyaWJ1dGVfc2VudGluZWxfbmFtZWRfYXJndW1lbnRzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInc2VudGluZWwnIGF0dHJpYnV0ZSByZXF1aXJlcyBuYW1lZCBhcmd1bWVudHMiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F0dHJpYnV0ZV9zZW50aW5lbF9ub3RfdmFyaWFkaWMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidzZW50aW5lbCcgYXR0cmlidXRlIG9ubHkgc3VwcG9ydGVkIGZvciB2YXJpYWRpYyAlc2VsZWN0e2Z1bmN0aW9uc3xibG9ja3N9MCIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fYXR0cmlidXRlX3R5cGVfbm90X3N1cHBvcnRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgYXR0cmlidXRlIGFyZ3VtZW50IG5vdCBzdXBwb3J0ZWQ6ICUxIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hdHRyaWJ1dGVfdW5rbm93bl92aXNpYmlsaXR5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmtub3duIHZpc2liaWxpdHkgJTAiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F0dHJpYnV0ZV92b2lkX2Z1bmN0aW9uX21ldGhvZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXR0cmlidXRlICUwIGNhbm5vdCBiZSBhcHBsaWVkIHRvICVzZWxlY3R7ZnVuY3Rpb25zfE9iamVjdGl2ZS1DIG1ldGhvZH0xIHdpdGhvdXQgcmV0dXJuIHZhbHVlIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hdHRyaWJ1dGVfd2Vha19vbl9maWVsZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiX193ZWFrIGF0dHJpYnV0ZSBjYW5ub3QgYmUgc3BlY2lmaWVkIG9uIGEgZmllbGQgZGVjbGFyYXRpb24iLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F0dHJpYnV0ZV93ZWFrX29uX2xvY2FsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJfX3dlYWsgYXR0cmlidXRlIGNhbm5vdCBiZSBzcGVjaWZpZWQgb24gYW4gYXV0b21hdGljIHZhcmlhYmxlIHdoZW4gQVJDIGlzIG5vdCBlbmFibGVkIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hdHRyaWJ1dGVfd3JvbmdfZGVjbF90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBhdHRyaWJ1dGUgb25seSBhcHBsaWVzIHRvICVzZWxlY3R7ZnVuY3Rpb25zfHVuaW9uc3x2YXJpYWJsZXMgYW5kIGZ1bmN0aW9uc3xmdW5jdGlvbnMgYW5kIG1ldGhvZHN8ZnVuY3Rpb25zLCBtZXRob2RzIGFuZCBibG9ja3N8ZnVuY3Rpb25zLCBtZXRob2RzLCBhbmQgcGFyYW1ldGVyc3x2YXJpYWJsZXN8dmFyaWFibGVzIGFuZCBmaWVsZHN8dmFyaWFibGVzLCBkYXRhIG1lbWJlcnMgYW5kIHRhZyB0eXBlc3x0eXBlcyBhbmQgbmFtZXNwYWNlc3x2YXJpYWJsZXMsIGZ1bmN0aW9ucyBhbmQgY2xhc3Nlc3xrZXJuZWwgZnVuY3Rpb25zfG5vbi1LJlItc3R5bGUgZnVuY3Rpb25zfTEiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F0dHJpYnV0ZV93cm9uZ19kZWNsX3R5cGVfc3RyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBhdHRyaWJ1dGUgb25seSBhcHBsaWVzIHRvICUxIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hdXRvX2ltcGxpY2l0X2F0b21pY19wcm9wZXJ0eSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicHJvcGVydHkgaXMgYXNzdW1lZCBhdG9taWMgd2hlbiBhdXRvLXN5bnRoZXNpemluZyB0aGUgcHJvcGVydHkiLCAyODEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F1dG9fcmVhZG9ubHlfaWJvdXRsZXRfcHJvcGVydHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlYWRvbmx5IElCT3V0bGV0IHByb3BlcnR5ICUwIHdoZW4gYXV0by1zeW50aGVzaXplZCBtYXkgbm90IHdvcmsgY29ycmVjdGx5IHdpdGggJ25pYicgbG9hZGVyIiwgNTQ1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9hdHRyaWJ1dGVfcG9pbnRlcl9vcl9yZWZlcmVuY2Vfb25seSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgYXR0cmlidXRlIG9ubHkgYXBwbGllcyB0byBhIHBvaW50ZXIgb3IgcmVmZXJlbmNlICglMSBpcyBpbnZhbGlkKSIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cmlidXRlX3BvaW50ZXJzX29ubHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGF0dHJpYnV0ZSBvbmx5IGFwcGxpZXMgdG8lc2VsZWN0e3wgY29uc3RhbnR9MSBwb2ludGVyIGFyZ3VtZW50cyIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cmlidXRlX3ByZWNlZGVfZGVmaW5pdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXR0cmlidXRlIGRlY2xhcmF0aW9uIG11c3QgcHJlY2VkZSBkZWZpbml0aW9uIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9hdHRyaWJ1dGVfcHJvdGVjdGVkX3Zpc2liaWxpdHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRhcmdldCBkb2VzIG5vdCBzdXBwb3J0ICdwcm90ZWN0ZWQnIHZpc2liaWxpdHk7IHVzaW5nICdkZWZhdWx0JyIsIDcxNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cmlidXRlX3JldHVybl9wb2ludGVyc19vbmx5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBhdHRyaWJ1dGUgb25seSBhcHBsaWVzIHRvIHJldHVybiB2YWx1ZXMgdGhhdCBhcmUgcG9pbnRlcnMiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2F0dHJpYnV0ZV9yZXR1cm5fcG9pbnRlcnNfcmVmc19vbmx5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBhdHRyaWJ1dGUgb25seSBhcHBsaWVzIHRvIHJldHVybiB2YWx1ZXMgdGhhdCBhcmUgcG9pbnRlcnMgb3IgcmVmZXJlbmNlcyIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cmlidXRlX3NlY3Rpb25fb25fcmVkZWNsYXJhdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic2VjdGlvbiBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIG9uIHJlZGVjbGFyZWQgdmFyaWFibGUiLCA1NzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2F0dHJpYnV0ZV9zZW50aW5lbF9uYW1lZF9hcmd1bWVudHMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidzZW50aW5lbCcgYXR0cmlidXRlIHJlcXVpcmVzIG5hbWVkIGFyZ3VtZW50cyIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cmlidXRlX3NlbnRpbmVsX25vdF92YXJpYWRpYywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ3NlbnRpbmVsJyBhdHRyaWJ1dGUgb25seSBzdXBwb3J0ZWQgZm9yIHZhcmlhZGljICVzZWxlY3R7ZnVuY3Rpb25zfGJsb2Nrc30wIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9hdHRyaWJ1dGVfdHlwZV9ub3Rfc3VwcG9ydGVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBhdHRyaWJ1dGUgYXJndW1lbnQgbm90IHN1cHBvcnRlZDogJTEiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2F0dHJpYnV0ZV91bmtub3duX3Zpc2liaWxpdHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVua25vd24gdmlzaWJpbGl0eSAlMCIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cmlidXRlX3ZvaWRfZnVuY3Rpb25fbWV0aG9kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhdHRyaWJ1dGUgJTAgY2Fubm90IGJlIGFwcGxpZWQgdG8gJXNlbGVjdHtmdW5jdGlvbnN8T2JqZWN0aXZlLUMgbWV0aG9kfTEgd2l0aG91dCByZXR1cm4gdmFsdWUiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2F0dHJpYnV0ZV93ZWFrX29uX2ZpZWxkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJfX3dlYWsgYXR0cmlidXRlIGNhbm5vdCBiZSBzcGVjaWZpZWQgb24gYSBmaWVsZCBkZWNsYXJhdGlvbiIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cmlidXRlX3dlYWtfb25fbG9jYWwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIl9fd2VhayBhdHRyaWJ1dGUgY2Fubm90IGJlIHNwZWNpZmllZCBvbiBhbiBhdXRvbWF0aWMgdmFyaWFibGUgd2hlbiBBUkMgaXMgbm90IGVuYWJsZWQiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2F0dHJpYnV0ZV93cm9uZ19kZWNsX3R5cGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGF0dHJpYnV0ZSBvbmx5IGFwcGxpZXMgdG8gJXNlbGVjdHtmdW5jdGlvbnN8dW5pb25zfHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zfGZ1bmN0aW9ucyBhbmQgbWV0aG9kc3xmdW5jdGlvbnMsIG1ldGhvZHMgYW5kIGJsb2Nrc3xmdW5jdGlvbnMsIG1ldGhvZHMsIGFuZCBwYXJhbWV0ZXJzfHZhcmlhYmxlc3x2YXJpYWJsZXMgYW5kIGZpZWxkc3x2YXJpYWJsZXMsIGRhdGEgbWVtYmVycyBhbmQgdGFnIHR5cGVzfHR5cGVzIGFuZCBuYW1lc3BhY2VzfHZhcmlhYmxlcywgZnVuY3Rpb25zIGFuZCBjbGFzc2VzfGtlcm5lbCBmdW5jdGlvbnN8bm9uLUsmUi1zdHlsZSBmdW5jdGlvbnN9MSIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXR0cmlidXRlX3dyb25nX2RlY2xfdHlwZV9zdHIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGF0dHJpYnV0ZSBvbmx5IGFwcGxpZXMgdG8gJTEiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2F1dG9faW1wbGljaXRfYXRvbWljX3Byb3BlcnR5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwcm9wZXJ0eSBpcyBhc3N1bWVkIGF0b21pYyB3aGVuIGF1dG8tc3ludGhlc2l6aW5nIHRoZSBwcm9wZXJ0eSIsIDI4OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXV0b19yZWFkb25seV9pYm91dGxldF9wcm9wZXJ0eSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmVhZG9ubHkgSUJPdXRsZXQgcHJvcGVydHkgJTAgd2hlbiBhdXRvLXN5bnRoZXNpemVkIG1heSBub3Qgd29yayBjb3JyZWN0bHkgd2l0aCAnbmliJyBsb2FkZXIiLCA1NTcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2F1dG9fc3RvcmFnZV9jbGFzcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJ2F1dG8nIHN0b3JhZ2UgY2xhc3Mgc3BlY2lmaWVyIGlzIHJlZHVuZGFudCBhbmQgaW5jb21wYXRpYmxlIHdpdGggQysrMTEiLCA3NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fYXV0b19zeW50aGVzaXppbmdfcHJvdG9jb2xfcHJvcGVydHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImF1dG8gcHJvcGVydHkgc3ludGhlc2lzIHdpbGwgbm90IHN5bnRoZXNpemUgcHJvcGVydHkgJTAgZGVjbGFyZWQgaW4gcHJvdG9jb2wgJTEiLCA0NzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2F1dG9fc3ludGhlc2l6aW5nX3Byb3RvY29sX3Byb3BlcnR5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhdXRvIHByb3BlcnR5IHN5bnRoZXNpcyB3aWxsIG5vdCBzeW50aGVzaXplIHByb3BlcnR5ICUwIGRlY2xhcmVkIGluIHByb3RvY29sICUxIiwgNDg4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9hdXRvX3Zhcl9pc19pZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ2F1dG8nIGRlZHVjZWQgYXMgJ2lkJyBpbiBkZWNsYXJhdGlvbiBvZiAlMCIsIDUxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9hdXRvc3ludGhlc2lzX3Byb3BlcnR5X2luX3N1cGVyY2xhc3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImF1dG8gcHJvcGVydHkgc3ludGhlc2lzIHdpbGwgbm90IHN5bnRoZXNpemUgcHJvcGVydHkgJTA7IGl0IHdpbGwgYmUgaW1wbGVtZW50ZWQgYnkgaXRzIHN1cGVyY2xhc3MsIHVzZSBAZHluYW1pYyB0byBhY2tub3dsZWRnZSBpbnRlbnRpb24iLCA0NzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2F1dG9zeW50aGVzaXNfcHJvcGVydHlfaXZhcl9tYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXV0b3N5bnRoZXNpemVkIHByb3BlcnR5ICUwIHdpbGwgdXNlICVzZWxlY3R7fHN5bnRoZXNpemVkfTEgaW5zdGFuY2UgdmFyaWFibGUgJTIsIG5vdCBleGlzdGluZyBpbnN0YW5jZSB2YXJpYWJsZSAlMyIsIDQ1NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXV0b3N5bnRoZXNpc19wcm9wZXJ0eV9pbl9zdXBlcmNsYXNzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhdXRvIHByb3BlcnR5IHN5bnRoZXNpcyB3aWxsIG5vdCBzeW50aGVzaXplIHByb3BlcnR5ICUwOyBpdCB3aWxsIGJlIGltcGxlbWVudGVkIGJ5IGl0cyBzdXBlcmNsYXNzLCB1c2UgQGR5bmFtaWMgdG8gYWNrbm93bGVkZ2UgaW50ZW50aW9uIiwgNDg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9hdXRvc3ludGhlc2lzX3Byb3BlcnR5X2l2YXJfbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImF1dG9zeW50aGVzaXplZCBwcm9wZXJ0eSAlMCB3aWxsIHVzZSAlc2VsZWN0e3xzeW50aGVzaXplZH0xIGluc3RhbmNlIHZhcmlhYmxlICUyLCBub3QgZXhpc3RpbmcgaW5zdGFuY2UgdmFyaWFibGUgJTMiLCA0NjQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2F2YWlsYWJpbGl0eV9vbl9zdGF0aWNfaW5pdGlhbGl6ZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImlnbm9yaW5nIGF2YWlsYWJpbGl0eSBhdHRyaWJ1dGUgJXNlbGVjdHtvbiAnK2xvYWQnIG1ldGhvZHx3aXRoIGNvbnN0cnVjdG9yIGF0dHJpYnV0ZXx3aXRoIGRlc3RydWN0b3IgYXR0cmlidXRlfTAiLCA1MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYXZhaWxhYmlsaXR5X3N3aWZ0X3VuYXZhaWxhYmxlX2RlcHJlY2F0ZWRfb25seSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib25seSAndW5hdmFpbGFibGUnIGFuZCAnZGVwcmVjYXRlZCcgYXJlIHN1cHBvcnRlZCBmb3IgU3dpZnQgYXZhaWxhYmlsaXR5IiwgNTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2F2YWlsYWJpbGl0eV91bmtub3duX3BsYXRmb3JtLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmtub3duIHBsYXRmb3JtICUwIGluIGF2YWlsYWJpbGl0eSBtYWNybyIsIDUyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9hdmFpbGFiaWxpdHlfdmVyc2lvbl9vcmRlcmluZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZmVhdHVyZSBjYW5ub3QgYmUgJXNlbGVjdHtpbnRyb2R1Y2VkfGRlcHJlY2F0ZWR8b2Jzb2xldGVkfTAgaW4gJTEgdmVyc2lvbiAlMiBiZWZvcmUgaXQgd2FzICVzZWxlY3R7aW50cm9kdWNlZHxkZXByZWNhdGVkfG9ic29sZXRlZH0zIGluIHZlcnNpb24gJTQ7IGF0dHJpYnV0ZSBpZ25vcmVkIiwgNTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2JhZF9mdW5jdGlvbl9jYXN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjYXN0IGZyb20gZnVuY3Rpb24gY2FsbCBvZiB0eXBlICUwIHRvIG5vbi1tYXRjaGluZyB0eXBlICUxIiwgNTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2JhZF9yZWNlaXZlcl90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZWNlaXZlciB0eXBlICUwIGlzIG5vdCAnaWQnIG9yIGludGVyZmFjZSBwb2ludGVyLCBjb25zaWRlciBjYXN0aW5nIGl0IHRvICdpZCciLCA1NDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2Jhc2VfY2xhc3NfaXNfdW5pbml0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJiYXNlIGNsYXNzICUwIGlzIHVuaW5pdGlhbGl6ZWQgd2hlbiB1c2VkIGhlcmUgdG8gYWNjZXNzICVxMSIsIDY3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fYmluZF9yZWZfbWVtYmVyX3RvX3BhcmFtZXRlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYmluZGluZyByZWZlcmVuY2UgbWVtYmVyICUwIHRvIHN0YWNrIGFsbG9jYXRlZCAlc2VsZWN0e3ZhcmlhYmxlfHBhcmFtZXRlcn0yICUxIiwgMTQ4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9iaW5kaW5nX251bGxfdG9fcmVmZXJlbmNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJiaW5kaW5nIGRlcmVmZXJlbmNlZCBudWxsIHBvaW50ZXIgdG8gcmVmZXJlbmNlIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IiLCA0NDUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2JhZF9yZWNlaXZlcl90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZWNlaXZlciB0eXBlICUwIGlzIG5vdCAnaWQnIG9yIGludGVyZmFjZSBwb2ludGVyLCBjb25zaWRlciBjYXN0aW5nIGl0IHRvICdpZCciLCA1NTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Jhc2VfY2xhc3NfaXNfdW5pbml0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJiYXNlIGNsYXNzICUwIGlzIHVuaW5pdGlhbGl6ZWQgd2hlbiB1c2VkIGhlcmUgdG8gYWNjZXNzICVxMSIsIDY5MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYmluZF9yZWZfbWVtYmVyX3RvX3BhcmFtZXRlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYmluZGluZyByZWZlcmVuY2UgbWVtYmVyICUwIHRvIHN0YWNrIGFsbG9jYXRlZCAlc2VsZWN0e3ZhcmlhYmxlfHBhcmFtZXRlcn0yICUxIiwgMTUxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9iaW5kaW5nX251bGxfdG9fcmVmZXJlbmNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJiaW5kaW5nIGRlcmVmZXJlbmNlZCBudWxsIHBvaW50ZXIgdG8gcmVmZXJlbmNlIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IiLCA0NTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2JpdGZpZWxkX3Rvb19zbWFsbF9mb3JfZW51bSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYml0LWZpZWxkICUwIGlzIG5vdCB3aWRlIGVub3VnaCB0byBzdG9yZSBhbGwgZW51bWVyYXRvcnMgb2YgJTEiLCA2MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQogRElBRyh3YXJuX2JpdGZpZWxkX3dpZHRoX2V4Y2VlZHNfdHlwZV93aWR0aCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAid2lkdGggb2YgYml0LWZpZWxkICUwICglMSBiaXRzKSBleGNlZWRzIHRoZSB3aWR0aCBvZiBpdHMgdHlwZTsgdmFsdWUgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gJTIgYml0JXMyIiwgNjEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2JpdHdpc2Vfb3BfaW5fYml0d2lzZV9vcCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJyUwJyB3aXRoaW4gJyUxJyIsIDYyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9ibG9ja19jYXB0dXJlX2F1dG9yZWxlYXNpbmcsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImJsb2NrIGNhcHR1cmVzIGFuIGF1dG9yZWxlYXNpbmcgb3V0LXBhcmFtZXRlciwgd2hpY2ggbWF5IHJlc3VsdCBpbiB1c2UtYWZ0ZXItZnJlZSBidWdzIiwgNjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA1KQotRElBRyh3YXJuX2Jsb2NrX2xpdGVyYWxfYXR0cmlidXRlc19vbl9vbWl0dGVkX3JldHVybl90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhdHRyaWJ1dGUgJTAgaWdub3JlZCwgYmVjYXVzZSBpdCBjYW5ub3QgYmUgYXBwbGllZCB0byBvbWl0dGVkIHJldHVybiB0eXBlIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9ibG9ja19saXRlcmFsX3F1YWxpZmllcnNfb25fb21pdHRlZF9yZXR1cm5fdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJyUwJyBxdWFsaWZpZXIgb24gb21pdHRlZCByZXR1cm4gdHlwZSAlMSBoYXMgbm8gZWZmZWN0IiwgMjc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKLURJQUcod2Fybl9ib29sX3N3aXRjaF9jb25kaXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInN3aXRjaCBjb25kaXRpb24gaGFzIGJvb2xlYW4gdmFsdWUiLCA2MzIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Jsb2NrX2xpdGVyYWxfYXR0cmlidXRlc19vbl9vbWl0dGVkX3JldHVybl90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhdHRyaWJ1dGUgJTAgaWdub3JlZCwgYmVjYXVzZSBpdCBjYW5ub3QgYmUgYXBwbGllZCB0byBvbWl0dGVkIHJldHVybiB0eXBlIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9ibG9ja19saXRlcmFsX3F1YWxpZmllcnNfb25fb21pdHRlZF9yZXR1cm5fdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJyUwJyBxdWFsaWZpZXIgb24gb21pdHRlZCByZXR1cm4gdHlwZSAlMSBoYXMgbm8gZWZmZWN0IiwgMjg3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9ib29sX3N3aXRjaF9jb25kaXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInN3aXRjaCBjb25kaXRpb24gaGFzIGJvb2xlYW4gdmFsdWUiLCA2NDUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2JyYWNlc19hcm91bmRfc2NhbGFyX2luaXQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImJyYWNlcyBhcm91bmQgc2NhbGFyIGluaXRpYWxpemVyIiwgNjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2JyZWFrX2JpbmRzX3RvX3N3aXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ2JyZWFrJyBpcyBib3VuZCB0byBsb29wLCBHQ0MgYmluZHMgaXQgdG8gc3dpdGNoIiwgMjQyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9idWlsdGluX3Vua25vd24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJ1c2Ugb2YgdW5rbm93biBidWlsdGluICUwIiwgMjg3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jYWxsX3RvX3B1cmVfdmlydHVhbF9tZW1iZXJfZnVuY3Rpb25fZnJvbV9jdG9yX2R0b3IsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNhbGwgdG8gcHVyZSB2aXJ0dWFsIG1lbWJlciBmdW5jdGlvbiAlMCBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yOyBvdmVycmlkZXMgb2YgJTAgaW4gc3ViY2xhc3NlcyBhcmUgbm90IGF2YWlsYWJsZSBpbiB0aGUgJXNlbGVjdHtjb25zdHJ1Y3RvcnxkZXN0cnVjdG9yfTEgb2YgJTIiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9icmVha19iaW5kc190b19zd2l0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidicmVhaycgaXMgYm91bmQgdG8gbG9vcCwgR0NDIGJpbmRzIGl0IHRvIHN3aXRjaCIsIDI1MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fYnVpbHRpbl91bmtub3duLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidXNlIG9mIHVua25vd24gYnVpbHRpbiAlMCIsIDI5NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fY2FsbF90b19wdXJlX3ZpcnR1YWxfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fY3Rvcl9kdG9yLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjYWxsIHRvIHB1cmUgdmlydHVhbCBtZW1iZXIgZnVuY3Rpb24gJTAgaGFzIHVuZGVmaW5lZCBiZWhhdmlvcjsgb3ZlcnJpZGVzIG9mICUwIGluIHN1YmNsYXNzZXMgYXJlIG5vdCBhdmFpbGFibGUgaW4gdGhlICVzZWxlY3R7Y29uc3RydWN0b3J8ZGVzdHJ1Y3Rvcn0xIG9mICUyIiwgMTE1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9jYWxsX3dyb25nX251bWJlcl9vZl9hcmd1bWVudHMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRvbyAlc2VsZWN0e2Zld3xtYW55fTAgYXJndW1lbnRzIGluIGNhbGwgdG8gJTEiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jYW5ub3RfcGFzc19ub25fcG9kX2FyZ190b192YXJhcmcsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjYW5ub3QgcGFzcyBvYmplY3Qgb2YgJXNlbGVjdHtub24tUE9EfG5vbi10cml2aWFsfTAgdHlwZSAlMSB0aHJvdWdoIHZhcmlhZGljICVzZWxlY3R7ZnVuY3Rpb258YmxvY2t8bWV0aG9kfGNvbnN0cnVjdG9yfTI7IGNhbGwgd2lsbCBhYm9ydCBhdCBydW50aW1lIiwgNDMyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jYW5ub3RfcmVzb2x2ZV9sb2NrLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjYW5ub3QgcmVzb2x2ZSBsb2NrIGV4cHJlc3Npb24iLCA2NDksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Nhbm5vdF9wYXNzX25vbl9wb2RfYXJnX3RvX3ZhcmFyZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNhbm5vdCBwYXNzIG9iamVjdCBvZiAlc2VsZWN0e25vbi1QT0R8bm9uLXRyaXZpYWx9MCB0eXBlICUxIHRocm91Z2ggdmFyaWFkaWMgJXNlbGVjdHtmdW5jdGlvbnxibG9ja3xtZXRob2R8Y29uc3RydWN0b3J9MjsgY2FsbCB3aWxsIGFib3J0IGF0IHJ1bnRpbWUiLCA0NDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Nhbm5vdF9yZXNvbHZlX2xvY2ssIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNhbm5vdCByZXNvbHZlIGxvY2sgZXhwcmVzc2lvbiIsIDY2MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fY2FzZV9lbXB0eV9yYW5nZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZW1wdHkgY2FzZSByYW5nZSBzcGVjaWZpZWQiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jYXNlX3ZhbHVlX292ZXJmbG93LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvdmVyZmxvdyBjb252ZXJ0aW5nIGNhc2UgdmFsdWUgdG8gc3dpdGNoIGNvbmRpdGlvbiB0eXBlICglMCB0byAlMSkiLCA2MzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2Nhc3RfYWxpZ24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNhc3QgZnJvbSAlMCB0byAlMSBpbmNyZWFzZXMgcmVxdWlyZWQgYWxpZ25tZW50IGZyb20gJTIgdG8gJTMiLCAxMTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2Nhc3RfY2FsbGluZ19jb252LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjYXN0IGJldHdlZW4gaW5jb21wYXRpYmxlIGNhbGxpbmcgY29udmVudGlvbnMgJyUwJyBhbmQgJyUxJzsgY2FsbHMgdGhyb3VnaCB0aGlzIHBvaW50ZXIgbWF5IGFib3J0IGF0IHJ1bnRpbWUiLCAxMTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2Nhc3Rfbm9ubnVsbF90b19ib29sLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJub25udWxsICVzZWxlY3R7ZnVuY3Rpb24gY2FsbHxwYXJhbWV0ZXJ9MCAnJTEnIHdpbGwgZXZhbHVhdGUgdG8gJ3RydWUnIG9uIGZpcnN0IGVuY291bnRlciIsIDUyMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQotRElBRyh3YXJuX2Nhc3RfcG9pbnRlcl9mcm9tX3NlbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2FzdCBvZiB0eXBlICUwIHRvICUxIGlzIGRlcHJlY2F0ZWQ7IHVzZSBzZWxfZ2V0TmFtZSBpbnN0ZWFkIiwgMTE3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jYXN0X3F1YWwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNhc3QgZnJvbSAlMCB0byAlMSBkcm9wcyAlc2VsZWN0e2NvbnN0IGFuZCB2b2xhdGlsZSBxdWFsaWZpZXJzfGNvbnN0IHF1YWxpZmllcnx2b2xhdGlsZSBxdWFsaWZpZXJ9MiIsIDExOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY2FzdF9xdWFsMiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY2FzdCBmcm9tICUwIHRvICUxIG11c3QgaGF2ZSBhbGwgaW50ZXJtZWRpYXRlIHBvaW50ZXJzIGNvbnN0IHF1YWxpZmllZCB0byBiZSBzYWZlIiwgMTE4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jYXRlZ29yeV9tZXRob2RfaW1wbF9tYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2F0ZWdvcnkgaXMgaW1wbGVtZW50aW5nIGEgbWV0aG9kIHdoaWNoIHdpbGwgYWxzbyBiZSBpbXBsZW1lbnRlZCBieSBpdHMgcHJpbWFyeSBjbGFzcyIsIDQ3NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY2NvbnZfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2FsbGluZyBjb252ZW50aW9uICUwIGlnbm9yZWQgZm9yIHRoaXMgdGFyZ2V0IiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jY29udl9rbnIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZ1bmN0aW9uIHdpdGggbm8gcHJvdG90eXBlIGNhbm5vdCB1c2UgdGhlICUwIGNhbGxpbmcgY29udmVudGlvbiIsIDQwNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY2NvbnZfc3RydWN0b3JzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBjYWxsaW5nIGNvbnZlbnRpb24gaWdub3JlZCBvbiBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jY29udl92YXJhcmdzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBjYWxsaW5nIGNvbnZlbnRpb24gaWdub3JlZCBvbiB2YXJpYWRpYyBmdW5jdGlvbiIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY2R0b3JfZnVuY3Rpb25fdHJ5X2hhbmRsZXJfbWVtX2V4cHIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNhbm5vdCByZWZlciB0byBhIG5vbi1zdGF0aWMgbWVtYmVyIGZyb20gdGhlIGhhbmRsZXIgb2YgYSAlc2VsZWN0e2NvbnN0cnVjdG9yfGRlc3RydWN0b3J9MCBmdW5jdGlvbiB0cnkgYmxvY2siLCAyMDUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Nhc2VfdmFsdWVfb3ZlcmZsb3csIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm92ZXJmbG93IGNvbnZlcnRpbmcgY2FzZSB2YWx1ZSB0byBzd2l0Y2ggY29uZGl0aW9uIHR5cGUgKCUwIHRvICUxKSIsIDY0NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fY2FzdF9hbGlnbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY2FzdCBmcm9tICUwIHRvICUxIGluY3JlYXNlcyByZXF1aXJlZCBhbGlnbm1lbnQgZnJvbSAlMiB0byAlMyIsIDExNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fY2FzdF9jYWxsaW5nX2NvbnYsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNhc3QgYmV0d2VlbiBpbmNvbXBhdGlibGUgY2FsbGluZyBjb252ZW50aW9ucyAnJTAnIGFuZCAnJTEnOyBjYWxscyB0aHJvdWdoIHRoaXMgcG9pbnRlciBtYXkgYWJvcnQgYXQgcnVudGltZSIsIDExNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fY2FzdF9ub25udWxsX3RvX2Jvb2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm5vbm51bGwgJXNlbGVjdHtmdW5jdGlvbiBjYWxsfHBhcmFtZXRlcn0wICclMScgd2lsbCBldmFsdWF0ZSB0byAndHJ1ZScgb24gZmlyc3QgZW5jb3VudGVyIiwgNTMxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCitESUFHKHdhcm5fY2FzdF9wb2ludGVyX2Zyb21fc2VsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjYXN0IG9mIHR5cGUgJTAgdG8gJTEgaXMgZGVwcmVjYXRlZDsgdXNlIHNlbF9nZXROYW1lIGluc3RlYWQiLCAxMTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Nhc3RfcXVhbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY2FzdCBmcm9tICUwIHRvICUxIGRyb3BzICVzZWxlY3R7Y29uc3QgYW5kIHZvbGF0aWxlIHF1YWxpZmllcnN8Y29uc3QgcXVhbGlmaWVyfHZvbGF0aWxlIHF1YWxpZmllcn0yIiwgMTE5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jYXN0X3F1YWwyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjYXN0IGZyb20gJTAgdG8gJTEgbXVzdCBoYXZlIGFsbCBpbnRlcm1lZGlhdGUgcG9pbnRlcnMgY29uc3QgcXVhbGlmaWVkIHRvIGJlIHNhZmUiLCAxMTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2NhdGVnb3J5X21ldGhvZF9pbXBsX21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjYXRlZ29yeSBpcyBpbXBsZW1lbnRpbmcgYSBtZXRob2Qgd2hpY2ggd2lsbCBhbHNvIGJlIGltcGxlbWVudGVkIGJ5IGl0cyBwcmltYXJ5IGNsYXNzIiwgNDg3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jY29udl9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjYWxsaW5nIGNvbnZlbnRpb24gJTAgaWdub3JlZCBmb3IgdGhpcyB0YXJnZXQiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Njb252X2tuciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZnVuY3Rpb24gd2l0aCBubyBwcm90b3R5cGUgY2Fubm90IHVzZSB0aGUgJTAgY2FsbGluZyBjb252ZW50aW9uIiwgNDEzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jY29udl9zdHJ1Y3RvcnMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGNhbGxpbmcgY29udmVudGlvbiBpZ25vcmVkIG9uIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Njb252X3ZhcmFyZ3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGNhbGxpbmcgY29udmVudGlvbiBpZ25vcmVkIG9uIHZhcmlhZGljIGZ1bmN0aW9uIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jZHRvcl9mdW5jdGlvbl90cnlfaGFuZGxlcl9tZW1fZXhwciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2Fubm90IHJlZmVyIHRvIGEgbm9uLXN0YXRpYyBtZW1iZXIgZnJvbSB0aGUgaGFuZGxlciBvZiBhICVzZWxlY3R7Y29uc3RydWN0b3J8ZGVzdHJ1Y3Rvcn0wIGZ1bmN0aW9uIHRyeSBibG9jayIsIDIxMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fY2ZzdHJpbmdfdHJ1bmNhdGVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbnB1dCBjb252ZXJzaW9uIHN0b3BwZWQgZHVlIHRvIGFuIGlucHV0IGJ5dGUgdGhhdCBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIGlucHV0IGNvZGVzZXQgVVRGLTgiLCAzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jbGFzc19tZXRob2Rfbm90X2ZvdW5kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjbGFzcyBtZXRob2QgJW9iamNjbGFzczAgbm90IGZvdW5kIChyZXR1cm4gdHlwZSBkZWZhdWx0cyB0byAnaWQnKSIsIDQ2NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY2xhc3NfbWV0aG9kX25vdF9mb3VuZF93aXRoX3R5cG8sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNsYXNzIG1ldGhvZCAlb2JqY2NsYXNzMCBub3QgZm91bmQgKHJldHVybiB0eXBlIGRlZmF1bHRzIHRvICdpZCcpOyBkaWQgeW91IG1lYW4gJW9iamNjbGFzczI/IiwgNDY1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jbGVhbnVwX2V4dCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiR0NDIGRvZXMgbm90IGFsbG93IHRoZSAnY2xlYW51cCcgYXR0cmlidXRlIGFyZ3VtZW50IHRvIGJlIGFueXRoaW5nIG90aGVyIHRoYW4gYSBzaW1wbGUgaWRlbnRpZmllciIsIDI0MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY29jb2FfbmFtaW5nX293bmVkX3J1bGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInByb3BlcnR5IGZvbGxvd3MgQ29jb2EgbmFtaW5nIGNvbnZlbnRpb24gZm9yIHJldHVybmluZyAnb3duZWQnIG9iamVjdHMiLCA0NzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2NsYXNzX21ldGhvZF9ub3RfZm91bmQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNsYXNzIG1ldGhvZCAlb2JqY2NsYXNzMCBub3QgZm91bmQgKHJldHVybiB0eXBlIGRlZmF1bHRzIHRvICdpZCcpIiwgNDc1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jbGFzc19tZXRob2Rfbm90X2ZvdW5kX3dpdGhfdHlwbywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2xhc3MgbWV0aG9kICVvYmpjY2xhc3MwIG5vdCBmb3VuZCAocmV0dXJuIHR5cGUgZGVmYXVsdHMgdG8gJ2lkJyk7IGRpZCB5b3UgbWVhbiAlb2JqY2NsYXNzMj8iLCA0NzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2NsZWFudXBfZXh0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJHQ0MgZG9lcyBub3QgYWxsb3cgdGhlICdjbGVhbnVwJyBhdHRyaWJ1dGUgYXJndW1lbnQgdG8gYmUgYW55dGhpbmcgb3RoZXIgdGhhbiBhIHNpbXBsZSBpZGVudGlmaWVyIiwgMjUwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jb2NvYV9uYW1pbmdfb3duZWRfcnVsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJvcGVydHkgZm9sbG93cyBDb2NvYSBuYW1pbmcgY29udmVudGlvbiBmb3IgcmV0dXJuaW5nICdvd25lZCcgb2JqZWN0cyIsIDQ4NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fY29sbGVjdGlvbl9leHByX3R5cGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbGxlY3Rpb24gZXhwcmVzc2lvbiB0eXBlICUwIG1heSBub3QgcmVzcG9uZCB0byAlMSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2NvbW1hX29wZXJhdG9yLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwb3NzaWJsZSBtaXN1c2Ugb2YgY29tbWEgb3BlcmF0b3IgaGVyZSIsIDEyNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY29tcGFyaXNvbl9hbHdheXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7c2VsZi18YXJyYXkgfTBjb21wYXJpc29uIGFsd2F5cyBldmFsdWF0ZXMgdG8gJXNlbGVjdHthIGNvbnN0YW50fCUyfTEiLCA2MzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2NvbXBhcmlzb25fYml0d2lzZV9hbHdheXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImJpdHdpc2UgY29tcGFyaXNvbiBhbHdheXMgZXZhbHVhdGVzIHRvICVzZWxlY3R7ZmFsc2V8dHJ1ZX0wIiwgNjM3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jb21wYXJpc29uX29mX21peGVkX2VudW1fdHlwZXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbXBhcmlzb24gb2YgdHdvIHZhbHVlcyB3aXRoIGRpZmZlcmVudCBlbnVtZXJhdGlvbiB0eXBlcyVkaWZmeyAoJCBhbmQgJCl8fTAsMSIsIDIwMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY29tcGFyaXNvbl9vZl9taXhlZF9lbnVtX3R5cGVzX3N3aXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29tcGFyaXNvbiBvZiB0d28gdmFsdWVzIHdpdGggZGlmZmVyZW50IGVudW1lcmF0aW9uIHR5cGVzIGluIHN3aXRjaCBzdGF0ZW1lbnQlZGlmZnsgKCQgYW5kICQpfH0wLDEiLCAyMDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2NvbmNhdGVuYXRlZF9uc2FycmF5X2xpdGVyYWwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbmNhdGVuYXRlZCBOU1N0cmluZyBsaXRlcmFsIGZvciBhbiBOU0FycmF5IGV4cHJlc3Npb24gLSBwb3NzaWJseSBtaXNzaW5nIGEgY29tbWEiLCA0ODUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2NvbmRpdGlvbl9pc19hc3NpZ25tZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2luZyB0aGUgcmVzdWx0IG9mIGFuIGFzc2lnbm1lbnQgYXMgYSBjb25kaXRpb24gd2l0aG91dCBwYXJlbnRoZXNlcyIsIDUwOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY29uZGl0aW9uX2lzX2lkaW9tYXRpY19hc3NpZ25tZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2luZyB0aGUgcmVzdWx0IG9mIGFuIGFzc2lnbm1lbnQgYXMgYSBjb25kaXRpb24gd2l0aG91dCBwYXJlbnRoZXNlcyIsIDI3MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY29uZmxpY3Rpbmdfb3ZlcnJpZGluZ19wYXJhbV9tb2RpZmllcnMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbmZsaWN0aW5nIGRpc3RyaWJ1dGVkIG9iamVjdCBtb2RpZmllcnMgb24gcGFyYW1ldGVyIHR5cGUgaW4gZGVjbGFyYXRpb24gb2YgJTAiLCA1MDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2NvbmZsaWN0aW5nX292ZXJyaWRpbmdfcGFyYW1fdHlwZXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbmZsaWN0aW5nIHBhcmFtZXRlciB0eXBlcyBpbiBkZWNsYXJhdGlvbiBvZiAlMCVkaWZmezogJCB2cyAkfH0xLDIiLCA1MDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2NvbmZsaWN0aW5nX292ZXJyaWRpbmdfcmV0X3R5cGVfbW9kaWZpZXJzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjb25mbGljdGluZyBkaXN0cmlidXRlZCBvYmplY3QgbW9kaWZpZXJzIG9uIHJldHVybiB0eXBlIGluIGRlY2xhcmF0aW9uIG9mICUwIiwgNTA0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jb25mbGljdGluZ19vdmVycmlkaW5nX3JldF90eXBlcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY29uZmxpY3RpbmcgcmV0dXJuIHR5cGUgaW4gZGVjbGFyYXRpb24gb2YgJTAlZGlmZns6ICQgdnMgJHx9MSwyIiwgNTA0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jb25mbGljdGluZ19vdmVycmlkaW5nX3ZhcmlhZGljLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjb25mbGljdGluZyB2YXJpYWRpYyBkZWNsYXJhdGlvbiBvZiBtZXRob2QgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiIsIDUwNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY29uZmxpY3RpbmdfcGFyYW1fbW9kaWZpZXJzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb25mbGljdGluZyBkaXN0cmlidXRlZCBvYmplY3QgbW9kaWZpZXJzIG9uIHBhcmFtZXRlciB0eXBlIGluIGltcGxlbWVudGF0aW9uIG9mICUwIiwgMTc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jb25mbGljdGluZ19wYXJhbV90eXBlcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29uZmxpY3RpbmcgcGFyYW1ldGVyIHR5cGVzIGluIGltcGxlbWVudGF0aW9uIG9mICUwJWRpZmZ7OiAkIHZzICR8fTEsMiIsIDM5MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY29uZmxpY3RpbmdfcmV0X3R5cGVfbW9kaWZpZXJzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb25mbGljdGluZyBkaXN0cmlidXRlZCBvYmplY3QgbW9kaWZpZXJzIG9uIHJldHVybiB0eXBlIGluIGltcGxlbWVudGF0aW9uIG9mICUwIiwgMTc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jb25mbGljdGluZ19yZXRfdHlwZXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbmZsaWN0aW5nIHJldHVybiB0eXBlIGluIGltcGxlbWVudGF0aW9uIG9mICUwJWRpZmZ7OiAkIHZzICR8fTEsMiIsIDM5MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fY29tbWFfb3BlcmF0b3IsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInBvc3NpYmxlIG1pc3VzZSBvZiBjb21tYSBvcGVyYXRvciBoZXJlIiwgMTI1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jb21wYXJpc29uX2Fsd2F5cywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHtzZWxmLXxhcnJheSB9MGNvbXBhcmlzb24gYWx3YXlzIGV2YWx1YXRlcyB0byAlc2VsZWN0e2EgY29uc3RhbnR8JTJ9MSIsIDY1MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fY29tcGFyaXNvbl9iaXR3aXNlX2Fsd2F5cywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYml0d2lzZSBjb21wYXJpc29uIGFsd2F5cyBldmFsdWF0ZXMgdG8gJXNlbGVjdHtmYWxzZXx0cnVlfTAiLCA2NTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2NvbXBhcmlzb25fb2ZfbWl4ZWRfZW51bV90eXBlcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29tcGFyaXNvbiBvZiB0d28gdmFsdWVzIHdpdGggZGlmZmVyZW50IGVudW1lcmF0aW9uIHR5cGVzJWRpZmZ7ICgkIGFuZCAkKXx9MCwxIiwgMjA4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jb21wYXJpc29uX29mX21peGVkX2VudW1fdHlwZXNfc3dpdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb21wYXJpc29uIG9mIHR3byB2YWx1ZXMgd2l0aCBkaWZmZXJlbnQgZW51bWVyYXRpb24gdHlwZXMgaW4gc3dpdGNoIHN0YXRlbWVudCVkaWZmeyAoJCBhbmQgJCl8fTAsMSIsIDIwOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fY29uY2F0ZW5hdGVkX25zYXJyYXlfbGl0ZXJhbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29uY2F0ZW5hdGVkIE5TU3RyaW5nIGxpdGVyYWwgZm9yIGFuIE5TQXJyYXkgZXhwcmVzc2lvbiAtIHBvc3NpYmx5IG1pc3NpbmcgYSBjb21tYSIsIDQ5NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fY29uZGl0aW9uX2lzX2Fzc2lnbm1lbnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzaW5nIHRoZSByZXN1bHQgb2YgYW4gYXNzaWdubWVudCBhcyBhIGNvbmRpdGlvbiB3aXRob3V0IHBhcmVudGhlc2VzIiwgNTE5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jb25kaXRpb25faXNfaWRpb21hdGljX2Fzc2lnbm1lbnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVzaW5nIHRoZSByZXN1bHQgb2YgYW4gYXNzaWdubWVudCBhcyBhIGNvbmRpdGlvbiB3aXRob3V0IHBhcmVudGhlc2VzIiwgMjgxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jb25mbGljdGluZ19vdmVycmlkaW5nX3BhcmFtX21vZGlmaWVycywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY29uZmxpY3RpbmcgZGlzdHJpYnV0ZWQgb2JqZWN0IG1vZGlmaWVycyBvbiBwYXJhbWV0ZXIgdHlwZSBpbiBkZWNsYXJhdGlvbiBvZiAlMCIsIDUxNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fY29uZmxpY3Rpbmdfb3ZlcnJpZGluZ19wYXJhbV90eXBlcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY29uZmxpY3RpbmcgcGFyYW1ldGVyIHR5cGVzIGluIGRlY2xhcmF0aW9uIG9mICUwJWRpZmZ7OiAkIHZzICR8fTEsMiIsIDUxNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fY29uZmxpY3Rpbmdfb3ZlcnJpZGluZ19yZXRfdHlwZV9tb2RpZmllcnMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbmZsaWN0aW5nIGRpc3RyaWJ1dGVkIG9iamVjdCBtb2RpZmllcnMgb24gcmV0dXJuIHR5cGUgaW4gZGVjbGFyYXRpb24gb2YgJTAiLCA1MTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2NvbmZsaWN0aW5nX292ZXJyaWRpbmdfcmV0X3R5cGVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjb25mbGljdGluZyByZXR1cm4gdHlwZSBpbiBkZWNsYXJhdGlvbiBvZiAlMCVkaWZmezogJCB2cyAkfH0xLDIiLCA1MTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2NvbmZsaWN0aW5nX292ZXJyaWRpbmdfdmFyaWFkaWMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbmZsaWN0aW5nIHZhcmlhZGljIGRlY2xhcmF0aW9uIG9mIG1ldGhvZCBhbmQgaXRzIGltcGxlbWVudGF0aW9uIiwgNTE1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jb25mbGljdGluZ19wYXJhbV9tb2RpZmllcnMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbmZsaWN0aW5nIGRpc3RyaWJ1dGVkIG9iamVjdCBtb2RpZmllcnMgb24gcGFyYW1ldGVyIHR5cGUgaW4gaW1wbGVtZW50YXRpb24gb2YgJTAiLCAxODAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2NvbmZsaWN0aW5nX3BhcmFtX3R5cGVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb25mbGljdGluZyBwYXJhbWV0ZXIgdHlwZXMgaW4gaW1wbGVtZW50YXRpb24gb2YgJTAlZGlmZns6ICQgdnMgJHx9MSwyIiwgNDAxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jb25mbGljdGluZ19yZXRfdHlwZV9tb2RpZmllcnMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbmZsaWN0aW5nIGRpc3RyaWJ1dGVkIG9iamVjdCBtb2RpZmllcnMgb24gcmV0dXJuIHR5cGUgaW4gaW1wbGVtZW50YXRpb24gb2YgJTAiLCAxODAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2NvbmZsaWN0aW5nX3JldF90eXBlcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29uZmxpY3RpbmcgcmV0dXJuIHR5cGUgaW4gaW1wbGVtZW50YXRpb24gb2YgJTAlZGlmZns6ICQgdnMgJHx9MSwyIiwgNDAyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9jb25mbGljdGluZ192YXJpYWRpYywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29uZmxpY3RpbmcgdmFyaWFkaWMgZGVjbGFyYXRpb24gb2YgbWV0aG9kIGFuZCBpdHMgaW1wbGVtZW50YXRpb24iLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9jb252X3RvX2Jhc2Vfbm90X3VzZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbnZlcnNpb24gZnVuY3Rpb24gY29udmVydGluZyAlMCB0byBpdHMgYmFzZSBjbGFzcyAlMSB3aWxsIG5ldmVyIGJlIHVzZWQiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9jb252X3RvX3NlbGZfbm90X3VzZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbnZlcnNpb24gZnVuY3Rpb24gY29udmVydGluZyAlMCB0byBpdHNlbGYgd2lsbCBuZXZlciBiZSB1c2VkIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fY29udl90b192b2lkX25vdF91c2VkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb252ZXJzaW9uIGZ1bmN0aW9uIGNvbnZlcnRpbmcgJTAgdG8gJTEgd2lsbCBuZXZlciBiZSB1c2VkIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY29yb3V0aW5lX3Byb21pc2VfdW5oYW5kbGVkX2V4Y2VwdGlvbl9yZXF1aXJlZF93aXRoX2V4Y2VwdGlvbnMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGlzIHJlcXVpcmVkIHRvIGRlY2xhcmUgdGhlIG1lbWJlciAndW5oYW5kbGVkX2V4Y2VwdGlvbigpJyB3aGVuIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQiLCAxMzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxNCkKLURJQUcod2Fybl9jc3RydWN0X21lbWFjY2VzcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHtkZXN0aW5hdGlvbiBmb3J8c291cmNlIG9mfGZpcnN0IG9wZXJhbmQgb2Z8c2Vjb25kIG9wZXJhbmQgb2Z9MCB0aGlzICUxIGNhbGwgaXMgYSBwb2ludGVyIHRvIHJlY29yZCAlMiB0aGF0IGlzIG5vdCB0cml2aWFsIHRvICVzZWxlY3R7cHJpbWl0aXZlLWRlZmF1bHQtaW5pdGlhbGl6ZXxwcmltaXRpdmUtY29weX0zIiwgNDM5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9jdG9yX3Bhcm1fc2hhZG93c19maWVsZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY29uc3RydWN0b3IgcGFyYW1ldGVyICUwIHNoYWRvd3MgdGhlIGZpZWxkICUxIG9mICUyIiwgNTgwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jb3JvdXRpbmVfcHJvbWlzZV91bmhhbmRsZWRfZXhjZXB0aW9uX3JlcXVpcmVkX3dpdGhfZXhjZXB0aW9ucywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgaXMgcmVxdWlyZWQgdG8gZGVjbGFyZSB0aGUgbWVtYmVyICd1bmhhbmRsZWRfZXhjZXB0aW9uKCknIHdoZW4gZXhjZXB0aW9ucyBhcmUgZW5hYmxlZCIsIDE0MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE0KQorRElBRyh3YXJuX2NzdHJ1Y3RfbWVtYWNjZXNzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0e2Rlc3RpbmF0aW9uIGZvcnxzb3VyY2Ugb2Z8Zmlyc3Qgb3BlcmFuZCBvZnxzZWNvbmQgb3BlcmFuZCBvZn0wIHRoaXMgJTEgY2FsbCBpcyBhIHBvaW50ZXIgdG8gcmVjb3JkICUyIHRoYXQgaXMgbm90IHRyaXZpYWwgdG8gJXNlbGVjdHtwcmltaXRpdmUtZGVmYXVsdC1pbml0aWFsaXplfHByaW1pdGl2ZS1jb3B5fTMiLCA0NDksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2N0YWRfbWF5YmVfdW5zdXBwb3J0ZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUwIG1heSBub3QgaW50ZW5kIHRvIHN1cHBvcnQgY2xhc3MgdGVtcGxhdGUgYXJndW1lbnQgZGVkdWN0aW9uIiwgMTQ0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jdG9yX3Bhcm1fc2hhZG93c19maWVsZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY29uc3RydWN0b3IgcGFyYW1ldGVyICUwIHNoYWRvd3MgdGhlIGZpZWxkICUxIG9mICUyIiwgNTkyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9jeHgxMV9jb21wYXRfY29uc3RleHByX2JvZHlfaW52YWxpZF9zdG10LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2Ugb2YgdGhpcyBzdGF0ZW1lbnQgaW4gYSBjb25zdGV4cHIgJXNlbGVjdHtmdW5jdGlvbnxjb25zdHJ1Y3Rvcn0wIGlzIGluY29tcGF0aWJsZSB3aXRoIEMrKyBzdGFuZGFyZHMgYmVmb3JlIEMrKzE0IiwgMTAzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9jeHgxMV9jb21wYXRfY29uc3RleHByX2JvZHlfbXVsdGlwbGVfcmV0dXJuLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJtdWx0aXBsZSByZXR1cm4gc3RhdGVtZW50cyBpbiBjb25zdGV4cHIgZnVuY3Rpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggQysrIHN0YW5kYXJkcyBiZWZvcmUgQysrMTQiLCAxMDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2N4eDExX2NvbXBhdF9jb25zdGV4cHJfYm9keV9ub19yZXR1cm4sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbnN0ZXhwciBmdW5jdGlvbiB3aXRoIG5vIHJldHVybiBzdGF0ZW1lbnRzIGlzIGluY29tcGF0aWJsZSB3aXRoIEMrKyBzdGFuZGFyZHMgYmVmb3JlIEMrKzE0IiwgMTAzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKQEAgLTI4MjMsMTQgKzI4MzUsMTUgQEAKIERJQUcod2Fybl9jeHgxMV9jb21wYXRfZ2VuZXJpY19sYW1iZGEsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImdlbmVyaWMgbGFtYmRhcyBhcmUgaW5jb21wYXRpYmxlIHdpdGggQysrMTEiLCAxMDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzKQogRElBRyh3YXJuX2N4eDExX2NvbXBhdF9pbml0X2NhcHR1cmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImluaXRpYWxpemVkIGxhbWJkYSBjYXB0dXJlcyBhcmUgaW5jb21wYXRpYmxlIHdpdGggQysrIHN0YW5kYXJkcyBiZWZvcmUgQysrMTQiLCAxMDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzKQogRElBRyh3YXJuX2N4eDExX2NvbXBhdF92YXJpYWJsZV90ZW1wbGF0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidmFyaWFibGUgdGVtcGxhdGVzIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBDKysgc3RhbmRhcmRzIGJlZm9yZSBDKysxNCIsIDEwMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY3h4MTFfZ251X2F0dHJpYnV0ZV9vbl90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhdHRyaWJ1dGUgJTAgaWdub3JlZCwgYmVjYXVzZSBpdCBjYW5ub3QgYmUgYXBwbGllZCB0byBhIHR5cGUiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2N4eDExX2dudV9hdHRyaWJ1dGVfb25fdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXR0cmlidXRlICUwIGlnbm9yZWQsIGJlY2F1c2UgaXQgY2Fubm90IGJlIGFwcGxpZWQgdG8gYSB0eXBlIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9jeHgxNF9jb21wYXRfY2xhc3NfdGVtcGxhdGVfYXJndW1lbnRfZGVkdWN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjbGFzcyB0ZW1wbGF0ZSBhcmd1bWVudCBkZWR1Y3Rpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggQysrIHN0YW5kYXJkcyBiZWZvcmUgQysrMTclc2VsZWN0e3w7IGZvciBjb21wYXRpYmlsaXR5LCB1c2UgZXhwbGljaXQgdHlwZSBuYW1lICUxfTAiLCAxMDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2N4eDE0X2NvbXBhdF9jb25zdGV4cHJfbm90X2NvbnN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInY29uc3RleHByJyBub24tc3RhdGljIG1lbWJlciBmdW5jdGlvbiB3aWxsIG5vdCBiZSBpbXBsaWNpdGx5ICdjb25zdCcgaW4gQysrMTQ7IGFkZCAnY29uc3QnIHRvIGF2b2lkIGEgY2hhbmdlIGluIGJlaGF2aW9yIiwgMTM0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jeHgxNF9jb21wYXRfY29uc3RleHByX25vdF9jb25zdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ2NvbnN0ZXhwcicgbm9uLXN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gd2lsbCBub3QgYmUgaW1wbGljaXRseSAnY29uc3QnIGluIEMrKzE0OyBhZGQgJ2NvbnN0JyB0byBhdm9pZCBhIGNoYW5nZSBpbiBiZWhhdmlvciIsIDEzNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fY3h4MTRfY29tcGF0X2RlY29tcF9kZWNsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJkZWNvbXBvc2l0aW9uIGRlY2xhcmF0aW9ucyBhcmUgaW5jb21wYXRpYmxlIHdpdGggQysrIHN0YW5kYXJkcyBiZWZvcmUgQysrMTciLCAxMDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2N4eDE0X2NvbXBhdF9pbmxpbmVfdmFyaWFibGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImlubGluZSB2YXJpYWJsZXMgYXJlIGluY29tcGF0aWJsZSB3aXRoIEMrKyBzdGFuZGFyZHMgYmVmb3JlIEMrKzE3IiwgMTAxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9jeHgxNF9jb21wYXRfc3Rhcl90aGlzX2xhbWJkYV9jYXB0dXJlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJieSB2YWx1ZSBjYXB0dXJlIG9mICcqdGhpcycgaXMgaW5jb21wYXRpYmxlIHdpdGggQysrIHN0YW5kYXJkcyBiZWZvcmUgQysrMTciLCAxMDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzKQotRElBRyh3YXJuX2N4eDE0X2NvbXBhdF9zdGF0aWNfYXNzZXJ0X25vX21lc3NhZ2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInN0YXRpY19hc3NlcnQgd2l0aCBubyBtZXNzYWdlIGlzIGluY29tcGF0aWJsZSB3aXRoIEMrKyBzdGFuZGFyZHMgYmVmb3JlIEMrKzE3IiwgMTAxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9jeHgxNF9jb21wYXRfdGVtcGxhdGVfbm9udHlwZV9wYXJtX2F1dG9fdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibm9uLXR5cGUgdGVtcGxhdGUgcGFyYW1ldGVycyBkZWNsYXJlZCB3aXRoICUwIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBDKysgc3RhbmRhcmRzIGJlZm9yZSBDKysxNyIsIDEwMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fY3h4MTdfY29tcGF0X2NvbnN0ZXhwcl9ib2R5X2ludmFsaWRfc3RtdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidXNlIG9mIHRoaXMgc3RhdGVtZW50IGluIGEgY29uc3RleHByICVzZWxlY3R7ZnVuY3Rpb258Y29uc3RydWN0b3J9MCBpcyBpbmNvbXBhdGlibGUgd2l0aCBDKysgc3RhbmRhcmRzIGJlZm9yZSBDKysyYSIsIDk5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9jeHgxN19jb21wYXRfY29uc3RleHByX2Z1bmN0aW9uX3RyeV9ibG9jaywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZnVuY3Rpb24gdHJ5IGJsb2NrIGluIGNvbnN0ZXhwciAlc2VsZWN0e2Z1bmN0aW9ufGNvbnN0cnVjdG9yfTAgaXMgaW5jb21wYXRpYmxlIHdpdGggQysrIHN0YW5kYXJkcyBiZWZvcmUgQysrMmEiLCA5OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fY3h4MTdfY29tcGF0X2RlZmF1bHRlZF9tZXRob2RfdHlwZV9taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZXhwbGljaXRseSBkZWZhdWx0aW5nIHRoaXMgJXNlbGVjdHtkZWZhdWx0IGNvbnN0cnVjdG9yfGNvcHkgY29uc3RydWN0b3J8bW92ZSBjb25zdHJ1Y3Rvcnxjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3J8bW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yfGRlc3RydWN0b3J9MCB3aXRoIGEgdHlwZSBkaWZmZXJlbnQgZnJvbSB0aGUgaW1wbGljaXQgdHlwZSBpcyBpbmNvbXBhdGlibGUgd2l0aCBDKysgc3RhbmRhcmRzIGJlZm9yZSBDKysyYSIsIDk5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9jeHgxN19jb21wYXRfZXF1YWxzX3RoaXNfbGFtYmRhX2NhcHR1cmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImV4cGxpY2l0IGNhcHR1cmUgb2YgJ3RoaXMnIHdpdGggYSBjYXB0dXJlIGRlZmF1bHQgb2YgJz0nIGlzIGluY29tcGF0aWJsZSB3aXRoIEMrKyBzdGFuZGFyZHMgYmVmb3JlIEMrKzJhIiwgOTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzKQogRElBRyh3YXJuX2N4eDE3X2NvbXBhdF9leGNlcHRpb25fc3BlY19pbl9zaWduYXR1cmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm1hbmdsZWQgbmFtZSBvZiAlMCB3aWxsIGNoYW5nZSBpbiBDKysxNyBkdWUgdG8gbm9uLXRocm93aW5nIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uIGluIGZ1bmN0aW9uIHNpZ25hdHVyZSIsIDg5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKQEAgLTI4MzgsNiArMjg1MSw3IEBACiBESUFHKHdhcm5fY3h4MTdfY29tcGF0X3BvaW50ZXJfdG9fY29uc3RfcmVmX21lbWJlcl9vbl9ydmFsdWUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImludm9raW5nIGEgcG9pbnRlciB0byBhICdjb25zdCAmJyBtZW1iZXIgZnVuY3Rpb24gb24gYW4gcnZhbHVlIGlzIGluY29tcGF0aWJsZSB3aXRoIEMrKyBzdGFuZGFyZHMgYmVmb3JlIEMrKzJhIiwgMTAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9jeHgxN19jb21wYXRfdW5pY29kZV90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICInY2hhcjhfdCcgdHlwZSBzcGVjaWZpZXIgaXMgaW5jb21wYXRpYmxlIHdpdGggQysrIHN0YW5kYXJkcyBiZWZvcmUgQysrMjAiLCA5OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fY3h4MmFfY29tcGF0X2FnZ3JlZ2F0ZV9pbml0X3dpdGhfY3RvcnMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImFnZ3JlZ2F0ZSBpbml0aWFsaXphdGlvbiBvZiB0eXBlICUwIHdpdGggdXNlci1kZWNsYXJlZCBjb25zdHJ1Y3RvcnMgaXMgaW5jb21wYXRpYmxlIHdpdGggQysrMmEiLCA5NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fY3h4MmFfY29tcGF0X3V0Zjhfc3RyaW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ0eXBlIG9mIFVURi04IHN0cmluZyBsaXRlcmFsIHdpbGwgY2hhbmdlIGZyb20gYXJyYXkgb2YgY29uc3QgY2hhciB0byBhcnJheSBvZiBjb25zdCBjaGFyOF90IGluIEMrKzJhIiwgOTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2N4eDk4X2NvbXBhdF9hcnJheV9zaXplX2NvbnZlcnNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltcGxpY2l0IGNvbnZlcnNpb24gZnJvbSBhcnJheSBzaXplIGV4cHJlc3Npb24gb2YgdHlwZSAlMCB0byAlc2VsZWN0e2ludGVncmFsfGVudW1lcmF0aW9ufTEgdHlwZSAlMiBpcyBpbmNvbXBhdGlibGUgd2l0aCBDKys5OCIsIDExMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fY3h4OThfY29tcGF0X2F1dG9fdHlwZV9zcGVjaWZpZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIidhdXRvJyB0eXBlIHNwZWNpZmllciBpcyBpbmNvbXBhdGlibGUgd2l0aCBDKys5OCIsIDEwNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fY3h4OThfY29tcGF0X2Nhc3RfZm5fb2JqLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjYXN0IGJldHdlZW4gcG9pbnRlci10by1mdW5jdGlvbiBhbmQgcG9pbnRlci10by1vYmplY3QgaXMgaW5jb21wYXRpYmxlIHdpdGggQysrOTgiLCAxMTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQpAQCAtMjg3Miw1ODAgKzI4ODYsNTc0IEBACiBESUFHKHdhcm5fY3h4OThfY29tcGF0X3VuZWxhYm9yYXRlZF9mcmllbmRfdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYmVmcmllbmRpbmcgJTEgd2l0aG91dCAnJXNlbGVjdHtzdHJ1Y3R8aW50ZXJmYWNlfHVuaW9ufGNsYXNzfGVudW19MCcga2V5d29yZCBpcyBpbmNvbXBhdGlibGUgd2l0aCBDKys5OCIsIDEwNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fY3h4OThfY29tcGF0X3VuaWNvZGVfdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJyUwJyB0eXBlIHNwZWNpZmllciBpcyBpbmNvbXBhdGlibGUgd2l0aCBDKys5OCIsIDEwNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fY3h4OThfY29tcGF0X3VzaW5nX2RlY2xfY29uc3RydWN0b3IsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImluaGVyaXRpbmcgY29uc3RydWN0b3JzIGFyZSBpbmNvbXBhdGlibGUgd2l0aCBDKys5OCIsIDEwNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fY3h4X21zX3N0cnVjdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm1zX3N0cnVjdCBtYXkgbm90IHByb2R1Y2UgTWljcm9zb2Z0LWNvbXBhdGlibGUgbGF5b3V0cyBmb3IgY2xhc3NlcyB3aXRoIGJhc2UgY2xhc3NlcyBvciB2aXJ0dWFsIGZ1bmN0aW9ucyIsIDMwMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZGFuZ2xpbmdfbWVtYmVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0e3JlZmVyZW5jZXxiYWNraW5nIGFycmF5IGZvciAnc3RkOjppbml0aWFsaXplcl9saXN0J30yICVzZWxlY3R7fHN1Ym9iamVjdCBvZiB9MW1lbWJlciAlMCAlc2VsZWN0e2JpbmRzIHRvfGlzfTIgYSB0ZW1wb3Jhcnkgb2JqZWN0IHdob3NlIGxpZmV0aW1lIGlzIHNob3J0ZXIgdGhhbiB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbnN0cnVjdGVkIG9iamVjdCIsIDE0OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZGFuZ2xpbmdfdmFyaWFibGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7dGVtcG9yYXJ5ICVzZWxlY3R7d2hvc2UgYWRkcmVzcyBpcyB1c2VkIGFzIHZhbHVlIG9mfCVzZWxlY3R7fGltcGxpY2l0bHkgfTJib3VuZCB0b300ICVzZWxlY3R7JXNlbGVjdHt8cmVmZXJlbmNlIH00bWVtYmVyIG9mIGxvY2FsIHZhcmlhYmxlfGxvY2FsICVzZWxlY3R7dmFyaWFibGV8cmVmZXJlbmNlfTR9MXxhcnJheSBiYWNraW5nICVzZWxlY3R7aW5pdGlhbGl6ZXIgbGlzdCBzdWJvYmplY3Qgb2YgbG9jYWwgdmFyaWFibGV8bG9jYWwgaW5pdGlhbGl6ZXIgbGlzdH0xfTAgJXNlbGVjdHslMyB8fTJ3aWxsIGJlIGRlc3Ryb3llZCBhdCB0aGUgZW5kIG9mIHRoZSBmdWxsLWV4cHJlc3Npb24iLCAxNDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2RlYWxsb2NfaW5fY2F0ZWdvcnksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIi1kZWFsbG9jIGlzIGJlaW5nIG92ZXJyaWRkZW4gaW4gYSBjYXRlZ29yeSIsIDE1MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZGVjbF9pbl9wYXJhbV9saXN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZWNsYXJhdGlvbiBvZiAlMCB3aWxsIG5vdCBiZSB2aXNpYmxlIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlvbiIsIDczNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZGVjbF9zaGFkb3csIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImRlY2xhcmF0aW9uIHNoYWRvd3MgYSAlc2VsZWN0e2xvY2FsIHZhcmlhYmxlfHZhcmlhYmxlIGluICUyfHN0YXRpYyBkYXRhIG1lbWJlciBvZiAlMnxmaWVsZCBvZiAlMnx0eXBlZGVmIGluICUyfHR5cGUgYWxpYXMgaW4gJTJ9MSIsIDU3NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZGVjbF9zaGFkb3dfdW5jYXB0dXJlZF9sb2NhbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZGVjbGFyYXRpb24gc2hhZG93cyBhICVzZWxlY3R7bG9jYWwgdmFyaWFibGV8dmFyaWFibGUgaW4gJTJ8c3RhdGljIGRhdGEgbWVtYmVyIG9mICUyfGZpZWxkIG9mICUyfHR5cGVkZWYgaW4gJTJ8dHlwZSBhbGlhcyBpbiAlMn0xIiwgNTgzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9kZWNsc3BlY19hdHRyaWJ1dGVfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXR0cmlidXRlICUwIGlzIGlnbm9yZWQsIHBsYWNlIGl0IGFmdGVyIFwiJXNlbGVjdHtjbGFzc3xzdHJ1Y3R8aW50ZXJmYWNlfHVuaW9ufGVudW19MVwiIHRvIGFwcGx5IGF0dHJpYnV0ZSB0byB0eXBlIGRlY2xhcmF0aW9uIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9kZWVwX2V4Y2VwdGlvbl9zcGVjc19kaWZmZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9ucyBvZiAlc2VsZWN0e3JldHVybnxhcmd1bWVudH0wIHR5cGVzIGRpZmZlciIsIDI5NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZGVmX21pc3NpbmdfY2FzZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXBsdXJhbHsxOmVudW1lcmF0aW9uIHZhbHVlICUxIG5vdCBleHBsaWNpdGx5IGhhbmRsZWQgaW4gc3dpdGNofDI6ZW51bWVyYXRpb24gdmFsdWVzICUxIGFuZCAlMiBub3QgZXhwbGljaXRseSBoYW5kbGVkIGluIHN3aXRjaHwzOmVudW1lcmF0aW9uIHZhbHVlcyAlMSwgJTIsIGFuZCAlMyBub3QgZXhwbGljaXRseSBoYW5kbGVkIGluIHN3aXRjaHw6JTAgZW51bWVyYXRpb24gdmFsdWVzIG5vdCBleHBsaWNpdGx5IGhhbmRsZWQgaW4gc3dpdGNoOiAlMSwgJTIsICUzLi4ufTAiLCA2MzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2RlZmF1bHRfYXRvbWljX2N1c3RvbV9nZXR0ZXJfc2V0dGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJhdG9taWMgYnkgZGVmYXVsdCBwcm9wZXJ0eSAlMCBoYXMgYSB1c2VyIGRlZmluZWQgJXNlbGVjdHtnZXR0ZXJ8c2V0dGVyfTEgKHByb3BlcnR5IHNob3VsZCBiZSBtYXJrZWQgJ2F0b21pYycgaWYgdGhpcyBpcyBpbnRlbmRlZCkiLCAxNDUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2RlZmF1bHRlZF9tZXRob2RfZGVsZXRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwbGljaXRseSBkZWZhdWx0ZWQgJXNlbGVjdHtkZWZhdWx0IGNvbnN0cnVjdG9yfGNvcHkgY29uc3RydWN0b3J8bW92ZSBjb25zdHJ1Y3Rvcnxjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3J8bW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yfGRlc3RydWN0b3J9MCBpcyBpbXBsaWNpdGx5IGRlbGV0ZWQiLCAxNTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2RlbGVnYXRpbmdfY3Rvcl9jeWNsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNvbnN0cnVjdG9yIGZvciAlMCBjcmVhdGVzIGEgZGVsZWdhdGlvbiBjeWNsZSIsIDE1NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZGVsZXRlX2Fic3RyYWN0X25vbl92aXJ0dWFsX2R0b3IsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7ZGVsZXRlfGRlc3RydWN0b3J9MCBjYWxsZWQgb24gJTEgdGhhdCBpcyBhYnN0cmFjdCBidXQgaGFzIG5vbi12aXJ0dWFsIGRlc3RydWN0b3IiLCAxNTcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIHRydWUsIDIpCitESUFHKHdhcm5fY3h4X21zX3N0cnVjdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm1zX3N0cnVjdCBtYXkgbm90IHByb2R1Y2UgTWljcm9zb2Z0LWNvbXBhdGlibGUgbGF5b3V0cyBmb3IgY2xhc3NlcyB3aXRoIGJhc2UgY2xhc3NlcyBvciB2aXJ0dWFsIGZ1bmN0aW9ucyIsIDMwOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZGFuZ2xpbmdfbWVtYmVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0e3JlZmVyZW5jZXxiYWNraW5nIGFycmF5IGZvciAnc3RkOjppbml0aWFsaXplcl9saXN0J30yICVzZWxlY3R7fHN1Ym9iamVjdCBvZiB9MW1lbWJlciAlMCAlc2VsZWN0e2JpbmRzIHRvfGlzfTIgYSB0ZW1wb3Jhcnkgb2JqZWN0IHdob3NlIGxpZmV0aW1lIGlzIHNob3J0ZXIgdGhhbiB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbnN0cnVjdGVkIG9iamVjdCIsIDE1MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZGFuZ2xpbmdfdmFyaWFibGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7dGVtcG9yYXJ5ICVzZWxlY3R7d2hvc2UgYWRkcmVzcyBpcyB1c2VkIGFzIHZhbHVlIG9mfCVzZWxlY3R7fGltcGxpY2l0bHkgfTJib3VuZCB0b300ICVzZWxlY3R7JXNlbGVjdHt8cmVmZXJlbmNlIH00bWVtYmVyIG9mIGxvY2FsIHZhcmlhYmxlfGxvY2FsICVzZWxlY3R7dmFyaWFibGV8cmVmZXJlbmNlfTR9MXxhcnJheSBiYWNraW5nICVzZWxlY3R7aW5pdGlhbGl6ZXIgbGlzdCBzdWJvYmplY3Qgb2YgbG9jYWwgdmFyaWFibGV8bG9jYWwgaW5pdGlhbGl6ZXIgbGlzdH0xfTAgJXNlbGVjdHslMyB8fTJ3aWxsIGJlIGRlc3Ryb3llZCBhdCB0aGUgZW5kIG9mIHRoZSBmdWxsLWV4cHJlc3Npb24iLCAxNDksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2RlYWxsb2NfaW5fY2F0ZWdvcnksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIi1kZWFsbG9jIGlzIGJlaW5nIG92ZXJyaWRkZW4gaW4gYSBjYXRlZ29yeSIsIDE1NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZGVjbF9pbl9wYXJhbV9saXN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZWNsYXJhdGlvbiBvZiAlMCB3aWxsIG5vdCBiZSB2aXNpYmxlIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlvbiIsIDc0OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZGVjbF9zaGFkb3csIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImRlY2xhcmF0aW9uIHNoYWRvd3MgYSAlc2VsZWN0e2xvY2FsIHZhcmlhYmxlfHZhcmlhYmxlIGluICUyfHN0YXRpYyBkYXRhIG1lbWJlciBvZiAlMnxmaWVsZCBvZiAlMnx0eXBlZGVmIGluICUyfHR5cGUgYWxpYXMgaW4gJTJ9MSIsIDU4OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZGVjbF9zaGFkb3dfdW5jYXB0dXJlZF9sb2NhbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZGVjbGFyYXRpb24gc2hhZG93cyBhICVzZWxlY3R7bG9jYWwgdmFyaWFibGV8dmFyaWFibGUgaW4gJTJ8c3RhdGljIGRhdGEgbWVtYmVyIG9mICUyfGZpZWxkIG9mICUyfHR5cGVkZWYgaW4gJTJ8dHlwZSBhbGlhcyBpbiAlMn0xIiwgNTk1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9kZWNsc3BlY19hdHRyaWJ1dGVfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXR0cmlidXRlICUwIGlzIGlnbm9yZWQsIHBsYWNlIGl0IGFmdGVyIFwiJXNlbGVjdHtjbGFzc3xzdHJ1Y3R8aW50ZXJmYWNlfHVuaW9ufGVudW19MVwiIHRvIGFwcGx5IGF0dHJpYnV0ZSB0byB0eXBlIGRlY2xhcmF0aW9uIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9kZWVwX2V4Y2VwdGlvbl9zcGVjc19kaWZmZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9ucyBvZiAlc2VsZWN0e3JldHVybnxhcmd1bWVudH0wIHR5cGVzIGRpZmZlciIsIDMwNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZGVmX21pc3NpbmdfY2FzZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXBsdXJhbHsxOmVudW1lcmF0aW9uIHZhbHVlICUxIG5vdCBleHBsaWNpdGx5IGhhbmRsZWQgaW4gc3dpdGNofDI6ZW51bWVyYXRpb24gdmFsdWVzICUxIGFuZCAlMiBub3QgZXhwbGljaXRseSBoYW5kbGVkIGluIHN3aXRjaHwzOmVudW1lcmF0aW9uIHZhbHVlcyAlMSwgJTIsIGFuZCAlMyBub3QgZXhwbGljaXRseSBoYW5kbGVkIGluIHN3aXRjaHw6JTAgZW51bWVyYXRpb24gdmFsdWVzIG5vdCBleHBsaWNpdGx5IGhhbmRsZWQgaW4gc3dpdGNoOiAlMSwgJTIsICUzLi4ufTAiLCA2NDcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2RlZmF1bHRfYXRvbWljX2N1c3RvbV9nZXR0ZXJfc2V0dGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJhdG9taWMgYnkgZGVmYXVsdCBwcm9wZXJ0eSAlMCBoYXMgYSB1c2VyIGRlZmluZWQgJXNlbGVjdHtnZXR0ZXJ8c2V0dGVyfTEgKHByb3BlcnR5IHNob3VsZCBiZSBtYXJrZWQgJ2F0b21pYycgaWYgdGhpcyBpcyBpbnRlbmRlZCkiLCAxNDgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2RlZmF1bHRlZF9tZXRob2RfZGVsZXRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwbGljaXRseSBkZWZhdWx0ZWQgJXNlbGVjdHtkZWZhdWx0IGNvbnN0cnVjdG9yfGNvcHkgY29uc3RydWN0b3J8bW92ZSBjb25zdHJ1Y3Rvcnxjb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3J8bW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yfGRlc3RydWN0b3J9MCBpcyBpbXBsaWNpdGx5IGRlbGV0ZWQiLCAxNTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2RlbGVnYXRpbmdfY3Rvcl9jeWNsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgImNvbnN0cnVjdG9yIGZvciAlMCBjcmVhdGVzIGEgZGVsZWdhdGlvbiBjeWNsZSIsIDE1OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZGVsZXRlX2Fic3RyYWN0X25vbl92aXJ0dWFsX2R0b3IsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7ZGVsZXRlfGRlc3RydWN0b3J9MCBjYWxsZWQgb24gJTEgdGhhdCBpcyBhYnN0cmFjdCBidXQgaGFzIG5vbi12aXJ0dWFsIGRlc3RydWN0b3IiLCAxNjAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIHRydWUsIDIpCiBESUFHKHdhcm5fZGVsZXRlX2FycmF5X3R5cGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidkZWxldGUnIGFwcGxpZWQgdG8gYSBwb2ludGVyLXRvLWFycmF5IHR5cGUgJTAgdHJlYXRlZCBhcyAnZGVsZXRlW10nIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZGVsZXRlX2luY29tcGxldGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlbGV0aW5nIHBvaW50ZXIgdG8gaW5jb21wbGV0ZSB0eXBlICUwIG1heSBjYXVzZSB1bmRlZmluZWQgYmVoYXZpb3IiLCAxNTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2RlbGV0ZV9ub25fdmlydHVhbF9kdG9yLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlc2VsZWN0e2RlbGV0ZXxkZXN0cnVjdG9yfTAgY2FsbGVkIG9uIG5vbi1maW5hbCAlMSB0aGF0IGhhcyB2aXJ0dWFsIGZ1bmN0aW9ucyBidXQgbm9uLXZpcnR1YWwgZGVzdHJ1Y3RvciIsIDE1NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgdHJ1ZSwgMikKLURJQUcod2Fybl9kZXByZWNhdGVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBpcyBkZXByZWNhdGVkIiwgMTYwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjcpCi1ESUFHKHdhcm5fZGVwcmVjYXRlZF9hbm9ueW1vdXNfbmFtZXNwYWNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInZGVwcmVjYXRlZCcgYXR0cmlidXRlIG9uIGFub255bW91cyBuYW1lc3BhY2UgaWdub3JlZCIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZGVwcmVjYXRlZF9jb3B5X29wZXJhdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZGVmaW5pdGlvbiBvZiBpbXBsaWNpdCBjb3B5ICVzZWxlY3R7Y29uc3RydWN0b3J8YXNzaWdubWVudCBvcGVyYXRvcn0xIGZvciAlMCBpcyBkZXByZWNhdGVkIGJlY2F1c2UgaXQgaGFzIGEgdXNlci1kZWNsYXJlZCAlc2VsZWN0e2NvcHkgJXNlbGVjdHthc3NpZ25tZW50IG9wZXJhdG9yfGNvbnN0cnVjdG9yfTF8ZGVzdHJ1Y3Rvcn0yIiwgMTU4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjcpCi1ESUFHKHdhcm5fZGVwcmVjYXRlZF9kZWYsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltcGxlbWVudGluZyBkZXByZWNhdGVkICVzZWxlY3R7bWV0aG9kfGNsYXNzfGNhdGVnb3J5fTAiLCAxNjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2RlcHJlY2F0ZWRfZndkY2xhc3NfbWVzc2FnZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgbWF5IGJlIGRlcHJlY2F0ZWQgYmVjYXVzZSB0aGUgcmVjZWl2ZXIgdHlwZSBpcyB1bmtub3duIiwgMTYwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjcpCi1ESUFHKHdhcm5fZGVwcmVjYXRlZF9tZXNzYWdlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBpcyBkZXByZWNhdGVkOiAlMSIsIDE2MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQotRElBRyh3YXJuX2RlcHJlY2F0ZWRfcmVkdW5kYW50X2NvbnN0ZXhwcl9zdGF0aWNfZGVmLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJvdXQtb2YtbGluZSBkZWZpbml0aW9uIG9mIGNvbnN0ZXhwciBzdGF0aWMgZGF0YSBtZW1iZXIgaXMgcmVkdW5kYW50IGluIEMrKzE3IGFuZCBpcyBkZXByZWNhdGVkIiwgMTU4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjcpCi1ESUFHKHdhcm5fZGVwcmVjYXRlZF9yZWdpc3RlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ3JlZ2lzdGVyJyBzdG9yYWdlIGNsYXNzIHNwZWNpZmllciBpcyBkZXByZWNhdGVkIGFuZCBpbmNvbXBhdGlibGUgd2l0aCBDKysxNyIsIDE2NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQorRElBRyh3YXJuX2RlbGV0ZV9pbmNvbXBsZXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZWxldGluZyBwb2ludGVyIHRvIGluY29tcGxldGUgdHlwZSAlMCBtYXkgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW9yIiwgMTYxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9kZWxldGVfbm9uX3ZpcnR1YWxfZHRvciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHtkZWxldGV8ZGVzdHJ1Y3Rvcn0wIGNhbGxlZCBvbiBub24tZmluYWwgJTEgdGhhdCBoYXMgdmlydHVhbCBmdW5jdGlvbnMgYnV0IG5vbi12aXJ0dWFsIGRlc3RydWN0b3IiLCAxNjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIHRydWUsIDIpCitESUFHKHdhcm5fZGVwcmVjYXRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgaXMgZGVwcmVjYXRlZCIsIDE2NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQorRElBRyh3YXJuX2RlcHJlY2F0ZWRfYW5vbnltb3VzX25hbWVzcGFjZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ2RlcHJlY2F0ZWQnIGF0dHJpYnV0ZSBvbiBhbm9ueW1vdXMgbmFtZXNwYWNlIGlnbm9yZWQiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2RlcHJlY2F0ZWRfY29weV9vcGVyYXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImRlZmluaXRpb24gb2YgaW1wbGljaXQgY29weSAlc2VsZWN0e2NvbnN0cnVjdG9yfGFzc2lnbm1lbnQgb3BlcmF0b3J9MSBmb3IgJTAgaXMgZGVwcmVjYXRlZCBiZWNhdXNlIGl0IGhhcyBhIHVzZXItZGVjbGFyZWQgJXNlbGVjdHtjb3B5ICVzZWxlY3R7YXNzaWdubWVudCBvcGVyYXRvcnxjb25zdHJ1Y3Rvcn0xfGRlc3RydWN0b3J9MiIsIDE2NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQorRElBRyh3YXJuX2RlcHJlY2F0ZWRfZGVmLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbXBsZW1lbnRpbmcgZGVwcmVjYXRlZCAlc2VsZWN0e21ldGhvZHxjbGFzc3xjYXRlZ29yeX0wIiwgMTY4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9kZXByZWNhdGVkX2Z3ZGNsYXNzX21lc3NhZ2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIG1heSBiZSBkZXByZWNhdGVkIGJlY2F1c2UgdGhlIHJlY2VpdmVyIHR5cGUgaXMgdW5rbm93biIsIDE2NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQorRElBRyh3YXJuX2RlcHJlY2F0ZWRfbWVzc2FnZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgaXMgZGVwcmVjYXRlZDogJTEiLCAxNjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNykKK0RJQUcod2Fybl9kZXByZWNhdGVkX3JlZHVuZGFudF9jb25zdGV4cHJfc3RhdGljX2RlZiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAib3V0LW9mLWxpbmUgZGVmaW5pdGlvbiBvZiBjb25zdGV4cHIgc3RhdGljIGRhdGEgbWVtYmVyIGlzIHJlZHVuZGFudCBpbiBDKysxNyBhbmQgaXMgZGVwcmVjYXRlZCIsIDE2NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQorRElBRyh3YXJuX2RlcHJlY2F0ZWRfcmVnaXN0ZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidyZWdpc3Rlcicgc3RvcmFnZSBjbGFzcyBzcGVjaWZpZXIgaXMgZGVwcmVjYXRlZCBhbmQgaW5jb21wYXRpYmxlIHdpdGggQysrMTciLCAxNzMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNykKIERJQUcod2Fybl9kZXByZWNhdGVkX3N0cmluZ19saXRlcmFsX2NvbnZlcnNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbnZlcnNpb24gZnJvbSBzdHJpbmcgbGl0ZXJhbCB0byAlMCBpcyBkZXByZWNhdGVkIiwgNzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNykKLURJQUcod2Fybl9kZXByZWNhdGVkX3RoaXNfY2FwdHVyZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW1wbGljaXQgY2FwdHVyZSBvZiAndGhpcycgd2l0aCBhIGNhcHR1cmUgZGVmYXVsdCBvZiAnPScgaXMgZGVwcmVjYXRlZCIsIDE2OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQotRElBRyh3YXJuX2Rlc3RydWN0b3JfbWFya2VkX25vdF9vdmVycmlkZV9vdmVycmlkaW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlMCBvdmVycmlkZXMgYSBkZXN0cnVjdG9yIGJ1dCBpcyBub3QgbWFya2VkICdvdmVycmlkZSciLCAzMTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2RpYWdub3NlX2lmX3N1Y2NlZWRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAiLCA3MjksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIHRydWUsIDIpCi1ESUFHKHdhcm5fZGlyZWN0X2luaXRpYWxpemVfY2FsbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwbGljaXQgY2FsbCB0byAraW5pdGlhbGl6ZSByZXN1bHRzIGluIGR1cGxpY2F0ZSBjYWxsIHRvICtpbml0aWFsaXplIiwgMjA5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9kaXJlY3RfaXZhcl9hY2Nlc3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImluc3RhbmNlIHZhcmlhYmxlICUwIGlzIGJlaW5nIGRpcmVjdGx5IGFjY2Vzc2VkIiwgMTcwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9kaXJlY3Rfc3VwZXJfaW5pdGlhbGl6ZV9jYWxsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBsaWNpdCBjYWxsIHRvIFtzdXBlciBpbml0aWFsaXplXSBzaG91bGQgb25seSBiZSBpbiBpbXBsZW1lbnRhdGlvbiBvZiAraW5pdGlhbGl6ZSIsIDIwOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZGlzcGF0Y2hfYm9keV9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJib2R5IG9mIGNwdV9kaXNwYXRjaCBmdW5jdGlvbiB3aWxsIGJlIGlnbm9yZWQiLCAyNDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX2RsbGltcG9ydF9kcm9wcGVkX2Zyb21faW5saW5lX2Z1bmN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlcTAgcmVkZWNsYXJlZCBpbmxpbmU7ICUxIGF0dHJpYnV0ZSBpZ25vcmVkIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9kZXByZWNhdGVkX3RoaXNfY2FwdHVyZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW1wbGljaXQgY2FwdHVyZSBvZiAndGhpcycgd2l0aCBhIGNhcHR1cmUgZGVmYXVsdCBvZiAnPScgaXMgZGVwcmVjYXRlZCIsIDE3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQorRElBRyh3YXJuX2RlcmVmZXJlbmNlX29mX25vZGVyZWZfdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGVyZWZlcmVuY2luZyAlMDsgd2FzIGRlY2xhcmVkIHdpdGggYSAnbm9kZXJlZicgdHlwZSIsIDQzNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fZGVyZWZlcmVuY2Vfb2Zfbm9kZXJlZl90eXBlX25vX2RlY2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlcmVmZXJlbmNpbmcgZXhwcmVzc2lvbiBtYXJrZWQgYXMgJ25vZGVyZWYnIiwgNDM2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kZXN0cnVjdG9yX21hcmtlZF9ub3Rfb3ZlcnJpZGVfb3ZlcnJpZGluZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgb3ZlcnJpZGVzIGEgZGVzdHJ1Y3RvciBidXQgaXMgbm90IG1hcmtlZCAnb3ZlcnJpZGUnIiwgMzE5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9kaWFnbm9zZV9pZl9zdWNjZWVkZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIiwgNzQyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCB0cnVlLCAyKQorRElBRyh3YXJuX2RpcmVjdF9pbml0aWFsaXplX2NhbGwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGxpY2l0IGNhbGwgdG8gK2luaXRpYWxpemUgcmVzdWx0cyBpbiBkdXBsaWNhdGUgY2FsbCB0byAraW5pdGlhbGl6ZSIsIDIxNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZGlyZWN0X2l2YXJfYWNjZXNzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbnN0YW5jZSB2YXJpYWJsZSAlMCBpcyBiZWluZyBkaXJlY3RseSBhY2Nlc3NlZCIsIDE3NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZGlyZWN0X3N1cGVyX2luaXRpYWxpemVfY2FsbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwbGljaXQgY2FsbCB0byBbc3VwZXIgaW5pdGlhbGl6ZV0gc2hvdWxkIG9ubHkgYmUgaW4gaW1wbGVtZW50YXRpb24gb2YgK2luaXRpYWxpemUiLCAyMTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Rpc3BhdGNoX2JvZHlfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYm9keSBvZiBjcHVfZGlzcGF0Y2ggZnVuY3Rpb24gd2lsbCBiZSBpZ25vcmVkIiwgMjQ4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMCkKK0RJQUcod2Fybl9kaXZpc2lvbl9zaXplb2ZfcHRyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInJTAnIHdpbGwgcmV0dXJuIHRoZSBzaXplIG9mIHRoZSBwb2ludGVyLCBub3QgdGhlIGFycmF5IGl0c2VsZiIsIDYwOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZGxsaW1wb3J0X2Ryb3BwZWRfZnJvbV9pbmxpbmVfZnVuY3Rpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVxMCByZWRlY2xhcmVkIGlubGluZTsgJTEgYXR0cmlidXRlIGlnbm9yZWQiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2RvdWJsZV9jb25zdF9yZXF1aXJlc19mcDY0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkb3VibGUgcHJlY2lzaW9uIGNvbnN0YW50IHJlcXVpcmVzIGNsX2tocl9mcDY0LCBjYXN0aW5nIHRvIHNpbmdsZSBwcmVjaXNpb24iLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9kb3VibGVfbG9jaywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYWNxdWlyaW5nICUwICclMScgdGhhdCBpcyBhbHJlYWR5IGhlbGQiLCA2NDksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2R1cF9jYXRlZ29yeV9kZWYsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImR1cGxpY2F0ZSBkZWZpbml0aW9uIG9mIGNhdGVnb3J5ICUxIG9uIGludGVyZmFjZSAlMCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2R1cGxpY2F0ZV9hdHRyaWJ1dGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImF0dHJpYnV0ZSAlMCBpcyBhbHJlYWR5IGFwcGxpZWQgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycyIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZHVwbGljYXRlX2F0dHJpYnV0ZV9leGFjdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXR0cmlidXRlICUwIGlzIGFscmVhZHkgYXBwbGllZCIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZHVwbGljYXRlX2NvZGVzZWdfYXR0cmlidXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkdXBsaWNhdGUgY29kZSBzZWdtZW50IHNwZWNpZmllcnMiLCA1NjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2R1cGxpY2F0ZV9kZWNsc3BlYywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZHVwbGljYXRlICclMCcgZGVjbGFyYXRpb24gc3BlY2lmaWVyIiwgMTg3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9kdXBsaWNhdGVfZW51bV92YWx1ZXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImVsZW1lbnQgJTAgaGFzIGJlZW4gaW1wbGljaXRseSBhc3NpZ25lZCAlMSB3aGljaCBhbm90aGVyIGVsZW1lbnQgaGFzIGJlZW4gYXNzaWduZWQiLCAxODgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2R1cGxpY2F0ZV9tZXRob2RfZGVjbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibXVsdGlwbGUgZGVjbGFyYXRpb25zIG9mIG1ldGhvZCAlMCBmb3VuZCBhbmQgaWdub3JlZCIsIDE5MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZHVwbGljYXRlX3Byb3RvY29sX2RlZiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZHVwbGljYXRlIHByb3RvY29sIGRlZmluaXRpb24gb2YgJTAgaXMgaWdub3JlZCIsIDE5MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZHluX2NsYXNzX21lbWFjY2VzcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHtkZXN0aW5hdGlvbiBmb3J8c291cmNlIG9mfGZpcnN0IG9wZXJhbmQgb2Z8c2Vjb25kIG9wZXJhbmQgb2Z9MCB0aGlzICUxIGNhbGwgaXMgYSBwb2ludGVyIHRvICVzZWxlY3R7fGNsYXNzIGNvbnRhaW5pbmcgYSB9MmR5bmFtaWMgY2xhc3MgJTM7IHZ0YWJsZSBwb2ludGVyIHdpbGwgYmUgJXNlbGVjdHtvdmVyd3JpdHRlbnxjb3BpZWR8bW92ZWR8Y29tcGFyZWR9NCIsIDE5MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZW1wdHlfZm9yX2JvZHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZvciBsb29wIGhhcyBlbXB0eSBib2R5IiwgMTk2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9lbXB0eV9mb3JtYXRfc3RyaW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmb3JtYXQgc3RyaW5nIGlzIGVtcHR5IiwgMjM0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCi1ESUFHKHdhcm5fZW1wdHlfaWZfYm9keSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaWYgc3RhdGVtZW50IGhhcyBlbXB0eSBib2R5IiwgMTk2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9lbXB0eV9wYXJlbnNfYXJlX2Z1bmN0aW9uX2RlY2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImVtcHR5IHBhcmVudGhlc2VzIGludGVycHJldGVkIGFzIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24iLCA3MzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2VtcHR5X3JhbmdlX2Jhc2VkX2Zvcl9ib2R5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyYW5nZS1iYXNlZCBmb3IgbG9vcCBoYXMgZW1wdHkgYm9keSIsIDE5NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZW1wdHlfc3dpdGNoX2JvZHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInN3aXRjaCBzdGF0ZW1lbnQgaGFzIGVtcHR5IGJvZHkiLCAxOTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2VtcHR5X3doaWxlX2JvZHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIndoaWxlIGxvb3AgaGFzIGVtcHR5IGJvZHkiLCAxOTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2RvdWJsZV9sb2NrLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJhY3F1aXJpbmcgJTAgJyUxJyB0aGF0IGlzIGFscmVhZHkgaGVsZCIsIDY2MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZHVwbGljYXRlX2F0dHJpYnV0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXR0cmlidXRlICUwIGlzIGFscmVhZHkgYXBwbGllZCB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9kdXBsaWNhdGVfYXR0cmlidXRlX2V4YWN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhdHRyaWJ1dGUgJTAgaXMgYWxyZWFkeSBhcHBsaWVkIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9kdXBsaWNhdGVfY29kZXNlZ19hdHRyaWJ1dGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImR1cGxpY2F0ZSBjb2RlIHNlZ21lbnQgc3BlY2lmaWVycyIsIDU3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZHVwbGljYXRlX2VudW1fdmFsdWVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJlbGVtZW50ICUwIGhhcyBiZWVuIGltcGxpY2l0bHkgYXNzaWduZWQgJTEgd2hpY2ggYW5vdGhlciBlbGVtZW50IGhhcyBiZWVuIGFzc2lnbmVkIiwgMTk0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9kdXBsaWNhdGVfbWV0aG9kX2RlY2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm11bHRpcGxlIGRlY2xhcmF0aW9ucyBvZiBtZXRob2QgJTAgZm91bmQgYW5kIGlnbm9yZWQiLCAxOTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2R1cGxpY2F0ZV9wcm90b2NvbF9kZWYsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImR1cGxpY2F0ZSBwcm90b2NvbCBkZWZpbml0aW9uIG9mICUwIGlzIGlnbm9yZWQiLCAxOTcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2R5bl9jbGFzc19tZW1hY2Nlc3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7ZGVzdGluYXRpb24gZm9yfHNvdXJjZSBvZnxmaXJzdCBvcGVyYW5kIG9mfHNlY29uZCBvcGVyYW5kIG9mfTAgdGhpcyAlMSBjYWxsIGlzIGEgcG9pbnRlciB0byAlc2VsZWN0e3xjbGFzcyBjb250YWluaW5nIGEgfTJkeW5hbWljIGNsYXNzICUzOyB2dGFibGUgcG9pbnRlciB3aWxsIGJlICVzZWxlY3R7b3ZlcndyaXR0ZW58Y29waWVkfG1vdmVkfGNvbXBhcmVkfTQiLCAxOTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2VtcHR5X2Zvcl9ib2R5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmb3IgbG9vcCBoYXMgZW1wdHkgYm9keSIsIDIwMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZW1wdHlfZm9ybWF0X3N0cmluZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZm9ybWF0IHN0cmluZyBpcyBlbXB0eSIsIDI0MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQorRElBRyh3YXJuX2VtcHR5X2lmX2JvZHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImlmIHN0YXRlbWVudCBoYXMgZW1wdHkgYm9keSIsIDIwMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZW1wdHlfcGFyZW5zX2FyZV9mdW5jdGlvbl9kZWNsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJlbXB0eSBwYXJlbnRoZXNlcyBpbnRlcnByZXRlZCBhcyBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIiwgNzQ4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9lbXB0eV9yYW5nZV9iYXNlZF9mb3JfYm9keSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmFuZ2UtYmFzZWQgZm9yIGxvb3AgaGFzIGVtcHR5IGJvZHkiLCAyMDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2VtcHR5X3N3aXRjaF9ib2R5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzd2l0Y2ggc3RhdGVtZW50IGhhcyBlbXB0eSBib2R5IiwgMjAyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9lbXB0eV93aGlsZV9ib2R5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ3aGlsZSBsb29wIGhhcyBlbXB0eSBib2R5IiwgMjAyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9lbnVtX3ZhbHVlX292ZXJmbG93LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvdmVyZmxvdyBpbiBlbnVtZXJhdGlvbiB2YWx1ZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2VxdWFsaXR5X3dpdGhfZXh0cmFfcGFyZW5zLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJlcXVhbGl0eSBjb21wYXJpc29uIHdpdGggZXh0cmFuZW91cyBwYXJlbnRoZXNlcyIsIDUwOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZXhjZXB0aW9uX2NhdWdodF9ieV9lYXJsaWVyX2hhbmRsZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4Y2VwdGlvbiBvZiB0eXBlICUwIHdpbGwgYmUgY2F1Z2h0IGJ5IGVhcmxpZXIgaGFuZGxlciIsIDIwNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZXhjZXB0aW9uX3NwZWNfZGVwcmVjYXRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZHluYW1pYyBleGNlcHRpb24gc3BlY2lmaWNhdGlvbnMgYXJlIGRlcHJlY2F0ZWQiLCAxNjEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNykKLURJQUcod2Fybl9leGl0X3RpbWVfZGVzdHJ1Y3RvciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZGVjbGFyYXRpb24gcmVxdWlyZXMgYW4gZXhpdC10aW1lIGRlc3RydWN0b3IiLCAyMDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2V4cGVjdGluZ19sb2NrX2hlbGRfb25fbG9vcCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZXhwZWN0aW5nICUwICclMScgdG8gYmUgaGVsZCBhdCBzdGFydCBvZiBlYWNoIGxvb3AiLCA2NDksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2V4cGVjdGluZ19sb2NrZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImV4cGVjdGluZyAlMCAnJTEnIHRvIGJlIGhlbGQgYXQgdGhlIGVuZCBvZiBmdW5jdGlvbiIsIDY0OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZXhwbGljaXRfaW5zdGFudGlhdGlvbl9hZnRlcl9zcGVjaWFsaXphdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwbGljaXQgaW5zdGFudGlhdGlvbiBvZiAlMCB0aGF0IG9jY3VycyBhZnRlciBhbiBleHBsaWNpdCBzcGVjaWFsaXphdGlvbiBoYXMgbm8gZWZmZWN0IiwgMzIwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9lcXVhbGl0eV93aXRoX2V4dHJhX3BhcmVucywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXF1YWxpdHkgY29tcGFyaXNvbiB3aXRoIGV4dHJhbmVvdXMgcGFyZW50aGVzZXMiLCA1MjAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2V4Y2VwdGlvbl9jYXVnaHRfYnlfZWFybGllcl9oYW5kbGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleGNlcHRpb24gb2YgdHlwZSAlMCB3aWxsIGJlIGNhdWdodCBieSBlYXJsaWVyIGhhbmRsZXIiLCAyMTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2V4aXRfdGltZV9kZXN0cnVjdG9yLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJkZWNsYXJhdGlvbiByZXF1aXJlcyBhbiBleGl0LXRpbWUgZGVzdHJ1Y3RvciIsIDIxMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZXhwZWN0aW5nX2xvY2tfaGVsZF9vbl9sb29wLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJleHBlY3RpbmcgJTAgJyUxJyB0byBiZSBoZWxkIGF0IHN0YXJ0IG9mIGVhY2ggbG9vcCIsIDY2MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZXhwZWN0aW5nX2xvY2tlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZXhwZWN0aW5nICUwICclMScgdG8gYmUgaGVsZCBhdCB0aGUgZW5kIG9mIGZ1bmN0aW9uIiwgNjYyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9leHBsaWNpdF9pbnN0YW50aWF0aW9uX2FmdGVyX3NwZWNpYWxpemF0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBsaWNpdCBpbnN0YW50aWF0aW9uIG9mICUwIHRoYXQgb2NjdXJzIGFmdGVyIGFuIGV4cGxpY2l0IHNwZWNpYWxpemF0aW9uIGhhcyBubyBlZmZlY3QiLCAzMjksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2V4cGxpY2l0X2luc3RhbnRpYXRpb25faW5saW5lXzB4LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJleHBsaWNpdCBpbnN0YW50aWF0aW9uIGNhbm5vdCBiZSAnaW5saW5lJyIsIDc1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9leHBsaWNpdF9pbnN0YW50aWF0aW9uX211c3RfYmVfZ2xvYmFsXzB4LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJleHBsaWNpdCBpbnN0YW50aWF0aW9uIG9mICUwIG11c3Qgb2NjdXIgYXQgZ2xvYmFsIHNjb3BlIiwgNzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2V4cGxpY2l0X2luc3RhbnRpYXRpb25fb3V0X29mX3Njb3BlXzB4LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJleHBsaWNpdCBpbnN0YW50aWF0aW9uIG9mICUwIG5vdCBpbiBhIG5hbWVzcGFjZSBlbmNsb3NpbmcgJTEiLCA3NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fZXhwbGljaXRfaW5zdGFudGlhdGlvbl91bnF1YWxpZmllZF93cm9uZ19uYW1lc3BhY2VfMHgsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImV4cGxpY2l0IGluc3RhbnRpYXRpb24gb2YgJXEwIG11c3Qgb2NjdXIgaW4gbmFtZXNwYWNlICUxIiwgNzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2V4dGVybl9pbml0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInZXh0ZXJuJyB2YXJpYWJsZSBoYXMgYW4gaW5pdGlhbGl6ZXIiLCAyMTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2ZhbGxvZmZfbm9udm9pZF9jb3JvdXRpbmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbnRyb2wgcmVhY2hlcyBlbmQgb2YgY29yb3V0aW5lOyB3aGljaCBpcyB1bmRlZmluZWQgYmVoYXZpb3IgYmVjYXVzZSB0aGUgcHJvbWlzZSB0eXBlICUwIGRvZXMgbm90IGRlY2xhcmUgJ3JldHVybl92b2lkKCknIiwgNTYzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9mYWxsb2ZmX25vbnZvaWRfZnVuY3Rpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbnRyb2wgcmVhY2hlcyBlbmQgb2Ygbm9uLXZvaWQgZnVuY3Rpb24iLCA1NjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2ZhbGxvZmZfbm9udm9pZF9sYW1iZGEsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbnRyb2wgcmVhY2hlcyBlbmQgb2Ygbm9uLXZvaWQgbGFtYmRhIiwgNTYzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMykKLURJQUcod2Fybl9mYWxsb2ZmX25vcmV0dXJuX2Z1bmN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmdW5jdGlvbiBkZWNsYXJlZCAnbm9yZXR1cm4nIHNob3VsZCBub3QgcmV0dXJuIiwgMzMxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9mYWxsdGhyb3VnaF9hdHRyX3VucmVhY2hhYmxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJmYWxsdGhyb3VnaCBhbm5vdGF0aW9uIGluIHVucmVhY2hhYmxlIGNvZGUiLCAyODQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2ZpZWxkX2lzX3VuaW5pdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZmllbGQgJTAgaXMgdW5pbml0aWFsaXplZCB3aGVuIHVzZWQgaGVyZSIsIDY3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZmxhZ19lbnVtX2NvbnN0YW50X291dF9vZl9yYW5nZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZW51bWVyYXRpb24gdmFsdWUgJTAgaXMgb3V0IG9mIHJhbmdlIG9mIGZsYWdzIGluIGVudW1lcmF0aW9uIHR5cGUgJTEiLCAyMTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2Zsb2F0X292ZXJmbG93LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtYWduaXR1ZGUgb2YgZmxvYXRpbmctcG9pbnQgY29uc3RhbnQgdG9vIGxhcmdlIGZvciB0eXBlICUwOyBtYXhpbXVtIGlzICUxIiwgMzQ3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9mbG9hdF91bmRlcmZsb3csIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm1hZ25pdHVkZSBvZiBmbG9hdGluZy1wb2ludCBjb25zdGFudCB0b28gc21hbGwgZm9yIHR5cGUgJTA7IG1pbmltdW0gaXMgJTEiLCAzNDcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2Zsb2F0aW5ncG9pbnRfZXEsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbXBhcmluZyBmbG9hdGluZyBwb2ludCB3aXRoID09IG9yICE9IGlzIHVuc2FmZSIsIDIyMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZXh0ZXJuX2luaXQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidleHRlcm4nIHZhcmlhYmxlIGhhcyBhbiBpbml0aWFsaXplciIsIDIxOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZmFsbG9mZl9ub252b2lkX2Nvcm91dGluZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29udHJvbCByZWFjaGVzIGVuZCBvZiBjb3JvdXRpbmU7IHdoaWNoIGlzIHVuZGVmaW5lZCBiZWhhdmlvciBiZWNhdXNlIHRoZSBwcm9taXNlIHR5cGUgJTAgZG9lcyBub3QgZGVjbGFyZSAncmV0dXJuX3ZvaWQoKSciLCA1NzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2ZhbGxvZmZfbm9udm9pZF9mdW5jdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29udHJvbCByZWFjaGVzIGVuZCBvZiBub24tdm9pZCBmdW5jdGlvbiIsIDU3NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZmFsbG9mZl9ub252b2lkX2xhbWJkYSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29udHJvbCByZWFjaGVzIGVuZCBvZiBub24tdm9pZCBsYW1iZGEiLCA1NzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzKQorRElBRyh3YXJuX2ZhbGxvZmZfbm9yZXR1cm5fZnVuY3Rpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZ1bmN0aW9uIGRlY2xhcmVkICdub3JldHVybicgc2hvdWxkIG5vdCByZXR1cm4iLCAzNDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2ZhbGx0aHJvdWdoX2F0dHJfdW5yZWFjaGFibGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZhbGx0aHJvdWdoIGFubm90YXRpb24gaW4gdW5yZWFjaGFibGUgY29kZSIsIDI5MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZmllbGRfaXNfdW5pbml0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmaWVsZCAlMCBpcyB1bmluaXRpYWxpemVkIHdoZW4gdXNlZCBoZXJlIiwgNjkyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9mbGFnX2VudW1fY29uc3RhbnRfb3V0X29mX3JhbmdlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJlbnVtZXJhdGlvbiB2YWx1ZSAlMCBpcyBvdXQgb2YgcmFuZ2Ugb2YgZmxhZ3MgaW4gZW51bWVyYXRpb24gdHlwZSAlMSIsIDIyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZmxvYXRfb3ZlcmZsb3csIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm1hZ25pdHVkZSBvZiBmbG9hdGluZy1wb2ludCBjb25zdGFudCB0b28gbGFyZ2UgZm9yIHR5cGUgJTA7IG1heGltdW0gaXMgJTEiLCAzNTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Zsb2F0X3VuZGVyZmxvdywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWFnbml0dWRlIG9mIGZsb2F0aW5nLXBvaW50IGNvbnN0YW50IHRvbyBzbWFsbCBmb3IgdHlwZSAlMDsgbWluaW11bSBpcyAlMSIsIDM1NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZmxvYXRpbmdwb2ludF9lcSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY29tcGFyaW5nIGZsb2F0aW5nIHBvaW50IHdpdGggPT0gb3IgIT0gaXMgdW5zYWZlIiwgMjMwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9mb3JfcmFuZ2VfYmVnaW5fZW5kX3R5cGVzX2RpZmZlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJ2JlZ2luJyBhbmQgJ2VuZCcgcmV0dXJuaW5nIGRpZmZlcmVudCB0eXBlcyAoJTAgYW5kICUxKSBpcyBpbmNvbXBhdGlibGUgd2l0aCBDKysgc3RhbmRhcmRzIGJlZm9yZSBDKysxNyIsIDEwMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZm9yX3JhbmdlX2NvbnN0X3JlZmVyZW5jZV9jb3B5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJsb29wIHZhcmlhYmxlICUwICVkaWZme2hhcyB0eXBlICQgYnV0IGlzIGluaXRpYWxpemVkIHdpdGggdHlwZSAkfCBpcyBpbml0aWFsaXplZCB3aXRoIGEgdmFsdWUgb2YgYSBkaWZmZXJlbnQgdHlwZX0xLDIgcmVzdWx0aW5nIGluIGEgY29weSIsIDU0NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZm9yX3JhbmdlX2NvcHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImxvb3AgdmFyaWFibGUgJTAgb2YgdHlwZSAlMSBjcmVhdGVzIGEgY29weSBmcm9tIHR5cGUgJTIiLCA1NDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2Zvcl9yYW5nZV92YXJpYWJsZV9hbHdheXNfY29weSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibG9vcCB2YXJpYWJsZSAlMCBpcyBhbHdheXMgYSBjb3B5IGJlY2F1c2UgdGhlIHJhbmdlIG9mIHR5cGUgJTEgZG9lcyBub3QgcmV0dXJuIGEgcmVmZXJlbmNlIiwgNTQ0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9mb3JtYXRfUF9ub19wcmVjaXNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzaW5nICclJVAnIGZvcm1hdCBzcGVjaWZpZXIgd2l0aG91dCBwcmVjaXNpb24iLCAyMjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKLURJQUcod2Fybl9mb3JtYXRfYXJndW1lbnRfbmVlZHNfY2FzdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHt2YWx1ZXMgb2YgdHlwZXxlbnVtIHZhbHVlcyB3aXRoIHVuZGVybHlpbmcgdHlwZX0yICclMCcgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIGZvcm1hdCBhcmd1bWVudHM7IGFkZCBhbiBleHBsaWNpdCBjYXN0IHRvICUxIGluc3RlYWQiLCAyMjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKLURJQUcod2Fybl9mb3JtYXRfYXJndW1lbnRfbmVlZHNfY2FzdF9wZWRhbnRpYywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHt2YWx1ZXMgb2YgdHlwZXxlbnVtIHZhbHVlcyB3aXRoIHVuZGVybHlpbmcgdHlwZX0yICclMCcgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIGZvcm1hdCBhcmd1bWVudHM7IGFkZCBhbiBleHBsaWNpdCBjYXN0IHRvICUxIGluc3RlYWQiLCAyMzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2Zvcm1hdF9jb252ZXJzaW9uX2FyZ3VtZW50X3R5cGVfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZvcm1hdCBzcGVjaWZpZXMgdHlwZSAlMCBidXQgdGhlIGFyZ3VtZW50IGhhcyAlc2VsZWN0e3R5cGV8dW5kZXJseWluZyB0eXBlfTIgJTEiLCAyMjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKLURJQUcod2Fybl9mb3JtYXRfY29udmVyc2lvbl9hcmd1bWVudF90eXBlX21pc21hdGNoX3BlZGFudGljLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZvcm1hdCBzcGVjaWZpZXMgdHlwZSAlMCBidXQgdGhlIGFyZ3VtZW50IGhhcyAlc2VsZWN0e3R5cGV8dW5kZXJseWluZyB0eXBlfTIgJTEiLCAyMzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2Zvcm1hdF9pbnZhbGlkX2Fubm90YXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzaW5nICclMCcgZm9ybWF0IHNwZWNpZmllciBhbm5vdGF0aW9uIG91dHNpZGUgb2Ygb3NfbG9nKCkvb3NfdHJhY2UoKSIsIDIyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQotRElBRyh3YXJuX2Zvcm1hdF9pbnZhbGlkX2NvbnZlcnNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImludmFsaWQgY29udmVyc2lvbiBzcGVjaWZpZXIgJyUwJyIsIDIyOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQotRElBRyh3YXJuX2Zvcm1hdF9pbnZhbGlkX3Bvc2l0aW9uYWxfc3BlY2lmaWVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbnZhbGlkIHBvc2l0aW9uIHNwZWNpZmllZCBmb3IgJXNlbGVjdHtmaWVsZCB3aWR0aHxmaWVsZCBwcmVjaXNpb259MCIsIDIyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQotRElBRyh3YXJuX2Zvcm1hdF9taXhfcG9zaXRpb25hbF9ub25wb3NpdGlvbmFsX2FyZ3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNhbm5vdCBtaXggcG9zaXRpb25hbCBhbmQgbm9uLXBvc2l0aW9uYWwgYXJndW1lbnRzIGluIGZvcm1hdCBzdHJpbmciLCAyMjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKLURJQUcod2Fybl9mb3JtYXRfbm9uX3N0YW5kYXJkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICInJTAnICVzZWxlY3R7bGVuZ3RoIG1vZGlmaWVyfGNvbnZlcnNpb24gc3BlY2lmaWVyfTEgaXMgbm90IHN1cHBvcnRlZCBieSBJU08gQyIsIDIyOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZm9ybWF0X25vbl9zdGFuZGFyZF9jb252ZXJzaW9uX3NwZWMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVzaW5nIGxlbmd0aCBtb2RpZmllciAnJTAnIHdpdGggY29udmVyc2lvbiBzcGVjaWZpZXIgJyUxJyBpcyBub3Qgc3VwcG9ydGVkIGJ5IElTTyBDIiwgMjI5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9mb3JtYXRfbm9uX3N0YW5kYXJkX3Bvc2l0aW9uYWxfYXJnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwb3NpdGlvbmFsIGFyZ3VtZW50cyBhcmUgbm90IHN1cHBvcnRlZCBieSBJU08gQyIsIDIyOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZm9ybWF0X25vbmxpdGVyYWwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZvcm1hdCBzdHJpbmcgaXMgbm90IGEgc3RyaW5nIGxpdGVyYWwiLCAyMzAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2Zvcm1hdF9ub25saXRlcmFsX25vYXJncywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZm9ybWF0IHN0cmluZyBpcyBub3QgYSBzdHJpbmcgbGl0ZXJhbCAocG90ZW50aWFsbHkgaW5zZWN1cmUpIiwgMjMyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCi1ESUFHKHdhcm5fZm9ybWF0X25vbnNlbnNpY2FsX2xlbmd0aCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibGVuZ3RoIG1vZGlmaWVyICclMCcgcmVzdWx0cyBpbiB1bmRlZmluZWQgYmVoYXZpb3Igb3Igbm8gZWZmZWN0IHdpdGggJyUxJyBjb252ZXJzaW9uIHNwZWNpZmllciIsIDIyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQotRElBRyh3YXJuX2Zvcm1hdF9zdHJpbmdfaXNfd2lkZV9saXRlcmFsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmb3JtYXQgc3RyaW5nIHNob3VsZCBub3QgYmUgYSB3aWRlIHN0cmluZyIsIDIyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQotRElBRyh3YXJuX2Zvcm1hdF96ZXJvX3Bvc2l0aW9uYWxfc3BlY2lmaWVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwb3NpdGlvbiBhcmd1bWVudHMgaW4gZm9ybWF0IHN0cmluZ3Mgc3RhcnQgY291bnRpbmcgYXQgMSAobm90IDApIiwgMjI2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCi1ESUFHKHdhcm5fZm9yd2FyZF9jbGFzc19yZWRlZmluaXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlZGVmaW5pdGlvbiBvZiBmb3J3YXJkIGNsYXNzICUwIG9mIGEgdHlwZWRlZiBuYW1lIG9mIGFuIG9iamVjdCB0eXBlIGlzIGlnbm9yZWQiLCA0NTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2Z1bl9leGNsdWRlc19tdXRleCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY2Fubm90IGNhbGwgZnVuY3Rpb24gJyUxJyB3aGlsZSAlMCAnJTInIGlzIGhlbGQiLCA2NDksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2Z1bl9yZXF1aXJlc19sb2NrLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjYWxsaW5nIGZ1bmN0aW9uICUxIHJlcXVpcmVzIGhvbGRpbmcgJTAgJXNlbGVjdHsnJTInfCclMicgZXhjbHVzaXZlbHl9MyIsIDY0OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZnVuX3JlcXVpcmVzX2xvY2tfcHJlY2lzZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY2FsbGluZyBmdW5jdGlvbiAlMSByZXF1aXJlcyBob2xkaW5nICUwICVzZWxlY3R7JyUyJ3wnJTInIGV4Y2x1c2l2ZWx5fTMiLCA2NTMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2Z1bmNfdGVtcGxhdGVfbWlzc2luZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW5zdGFudGlhdGlvbiBvZiBmdW5jdGlvbiAlcTAgcmVxdWlyZWQgaGVyZSwgYnV0IG5vIGRlZmluaXRpb24gaXMgYXZhaWxhYmxlIiwgNjY2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9mdW5jdGlvbl9kZWZfaW5fb2JqY19jb250YWluZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZ1bmN0aW9uIGRlZmluaXRpb24gaW5zaWRlIGFuIE9iamVjdGl2ZS1DIGNvbnRhaW5lciBpcyBkZXByZWNhdGVkIiwgMjM5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9mdW5jdGlvbl9tYXJrZWRfbm90X292ZXJyaWRlX292ZXJyaWRpbmcsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIG92ZXJyaWRlcyBhIG1lbWJlciBmdW5jdGlvbiBidXQgaXMgbm90IG1hcmtlZCAnb3ZlcnJpZGUnIiwgMzExLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9nY19hdHRyaWJ1dGVfd2Vha19vbl9sb2NhbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiT2JqZWN0aXZlLUMgR0MgZG9lcyBub3QgYWxsb3cgd2VhayB2YXJpYWJsZXMgb24gdGhlIHN0YWNrIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9nY2NfaWdub3Jlc190eXBlX2F0dHIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIkdDQyBkb2VzIG5vdCBhbGxvdyB0aGUgJTAgYXR0cmlidXRlIHRvIGJlIHdyaXR0ZW4gb24gYSB0eXBlIiwgMjQyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9nbG9iYWxfY29uc3RydWN0b3IsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImRlY2xhcmF0aW9uIHJlcXVpcmVzIGEgZ2xvYmFsIGNvbnN0cnVjdG9yIiwgMjQzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9nbG9iYWxfZGVzdHJ1Y3RvciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZGVjbGFyYXRpb24gcmVxdWlyZXMgYSBnbG9iYWwgZGVzdHJ1Y3RvciIsIDI0MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fZ251X2lubGluZV9hdHRyaWJ1dGVfcmVxdWlyZXNfaW5saW5lLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInZ251X2lubGluZScgYXR0cmlidXRlIHJlcXVpcmVzIGZ1bmN0aW9uIHRvIGJlIG1hcmtlZCAnaW5saW5lJywgYXR0cmlidXRlIGlnbm9yZWQiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2dudV9udWxsX3B0cl9hcml0aCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYXJpdGhtZXRpYyBvbiBhIG51bGwgcG9pbnRlciB0cmVhdGVkIGFzIGEgY2FzdCBmcm9tIGludGVnZXIgdG8gcG9pbnRlciBpcyBhIEdOVSBleHRlbnNpb24iLCA0NDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2d1YXJkZWRfcGFzc19ieV9yZWZlcmVuY2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInBhc3NpbmcgdmFyaWFibGUgJTEgYnkgcmVmZXJlbmNlIHJlcXVpcmVzIGhvbGRpbmcgJTAgJXNlbGVjdHsnJTInfCclMicgZXhjbHVzaXZlbHl9MyIsIDY1NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5faWJvdXRsZXRfb2JqZWN0X3R5cGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7aW5zdGFuY2UgdmFyaWFibGV8cHJvcGVydHl9MiB3aXRoICUwIGF0dHJpYnV0ZSBtdXN0IGJlIGFuIG9iamVjdCB0eXBlIChpbnZhbGlkICUxKSIsIDMyOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5faWJvdXRsZXRjb2xsZWN0aW9uX3Byb3BlcnR5X2Fzc2lnbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiSUJPdXRsZXRDb2xsZWN0aW9uIHByb3BlcnRpZXMgc2hvdWxkIGJlIGNvcHkvc3Ryb25nIGFuZCBub3QgYXNzaWduIiwgMzI4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9pZGVudGl0eV9maWVsZF9hc3NpZ24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFzc2lnbmluZyAlc2VsZWN0e2ZpZWxkfGluc3RhbmNlIHZhcmlhYmxlfTAgdG8gaXRzZWxmIiwgNTcwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9pZ25vcmVkX21zX2luaGVyaXRhbmNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbmhlcml0YW5jZSBtb2RlbCBpZ25vcmVkIG9uICVzZWxlY3R7cHJpbWFyeSB0ZW1wbGF0ZXxwYXJ0aWFsIHNwZWNpYWxpemF0aW9ufTAiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2lsbGVnYWxfY29uc3RhbnRfYXJyYXlfc2l6ZSwgQ0xBU1NfRVhURU5TSU9OLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJzaXplIG9mIHN0YXRpYyBhcnJheSBtdXN0IGJlIGFuIGludGVnZXIgY29uc3RhbnQgZXhwcmVzc2lvbiIsIDUxNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZm9yX3JhbmdlX2NvbnN0X3JlZmVyZW5jZV9jb3B5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJsb29wIHZhcmlhYmxlICUwICVkaWZme2hhcyB0eXBlICQgYnV0IGlzIGluaXRpYWxpemVkIHdpdGggdHlwZSAkfCBpcyBpbml0aWFsaXplZCB3aXRoIGEgdmFsdWUgb2YgYSBkaWZmZXJlbnQgdHlwZX0xLDIgcmVzdWx0aW5nIGluIGEgY29weSIsIDU1NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZm9yX3JhbmdlX2NvcHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImxvb3AgdmFyaWFibGUgJTAgb2YgdHlwZSAlMSBjcmVhdGVzIGEgY29weSBmcm9tIHR5cGUgJTIiLCA1NTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Zvcl9yYW5nZV92YXJpYWJsZV9hbHdheXNfY29weSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibG9vcCB2YXJpYWJsZSAlMCBpcyBhbHdheXMgYSBjb3B5IGJlY2F1c2UgdGhlIHJhbmdlIG9mIHR5cGUgJTEgZG9lcyBub3QgcmV0dXJuIGEgcmVmZXJlbmNlIiwgNTU2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9mb3JtYXRfUF9ub19wcmVjaXNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzaW5nICclJVAnIGZvcm1hdCBzcGVjaWZpZXIgd2l0aG91dCBwcmVjaXNpb24iLCAyMzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKK0RJQUcod2Fybl9mb3JtYXRfYXJndW1lbnRfbmVlZHNfY2FzdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHt2YWx1ZXMgb2YgdHlwZXxlbnVtIHZhbHVlcyB3aXRoIHVuZGVybHlpbmcgdHlwZX0yICclMCcgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIGZvcm1hdCBhcmd1bWVudHM7IGFkZCBhbiBleHBsaWNpdCBjYXN0IHRvICUxIGluc3RlYWQiLCAyMzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKK0RJQUcod2Fybl9mb3JtYXRfYXJndW1lbnRfbmVlZHNfY2FzdF9wZWRhbnRpYywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHt2YWx1ZXMgb2YgdHlwZXxlbnVtIHZhbHVlcyB3aXRoIHVuZGVybHlpbmcgdHlwZX0yICclMCcgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIGZvcm1hdCBhcmd1bWVudHM7IGFkZCBhbiBleHBsaWNpdCBjYXN0IHRvICUxIGluc3RlYWQiLCAyMzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Zvcm1hdF9jb252ZXJzaW9uX2FyZ3VtZW50X3R5cGVfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZvcm1hdCBzcGVjaWZpZXMgdHlwZSAlMCBidXQgdGhlIGFyZ3VtZW50IGhhcyAlc2VsZWN0e3R5cGV8dW5kZXJseWluZyB0eXBlfTIgJTEiLCAyMzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKK0RJQUcod2Fybl9mb3JtYXRfY29udmVyc2lvbl9hcmd1bWVudF90eXBlX21pc21hdGNoX3BlZGFudGljLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZvcm1hdCBzcGVjaWZpZXMgdHlwZSAlMCBidXQgdGhlIGFyZ3VtZW50IGhhcyAlc2VsZWN0e3R5cGV8dW5kZXJseWluZyB0eXBlfTIgJTEiLCAyMzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Zvcm1hdF9pbnZhbGlkX2Fubm90YXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzaW5nICclMCcgZm9ybWF0IHNwZWNpZmllciBhbm5vdGF0aW9uIG91dHNpZGUgb2Ygb3NfbG9nKCkvb3NfdHJhY2UoKSIsIDIzNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQorRElBRyh3YXJuX2Zvcm1hdF9pbnZhbGlkX2NvbnZlcnNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImludmFsaWQgY29udmVyc2lvbiBzcGVjaWZpZXIgJyUwJyIsIDIzNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQorRElBRyh3YXJuX2Zvcm1hdF9pbnZhbGlkX3Bvc2l0aW9uYWxfc3BlY2lmaWVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbnZhbGlkIHBvc2l0aW9uIHNwZWNpZmllZCBmb3IgJXNlbGVjdHtmaWVsZCB3aWR0aHxmaWVsZCBwcmVjaXNpb259MCIsIDIzNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQorRElBRyh3YXJuX2Zvcm1hdF9taXhfcG9zaXRpb25hbF9ub25wb3NpdGlvbmFsX2FyZ3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNhbm5vdCBtaXggcG9zaXRpb25hbCBhbmQgbm9uLXBvc2l0aW9uYWwgYXJndW1lbnRzIGluIGZvcm1hdCBzdHJpbmciLCAyMzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKK0RJQUcod2Fybl9mb3JtYXRfbm9uX3N0YW5kYXJkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICInJTAnICVzZWxlY3R7bGVuZ3RoIG1vZGlmaWVyfGNvbnZlcnNpb24gc3BlY2lmaWVyfTEgaXMgbm90IHN1cHBvcnRlZCBieSBJU08gQyIsIDIzNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZm9ybWF0X25vbl9zdGFuZGFyZF9jb252ZXJzaW9uX3NwZWMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVzaW5nIGxlbmd0aCBtb2RpZmllciAnJTAnIHdpdGggY29udmVyc2lvbiBzcGVjaWZpZXIgJyUxJyBpcyBub3Qgc3VwcG9ydGVkIGJ5IElTTyBDIiwgMjM3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9mb3JtYXRfbm9uX3N0YW5kYXJkX3Bvc2l0aW9uYWxfYXJnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwb3NpdGlvbmFsIGFyZ3VtZW50cyBhcmUgbm90IHN1cHBvcnRlZCBieSBJU08gQyIsIDIzNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZm9ybWF0X25vbmxpdGVyYWwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImZvcm1hdCBzdHJpbmcgaXMgbm90IGEgc3RyaW5nIGxpdGVyYWwiLCAyMzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Zvcm1hdF9ub25saXRlcmFsX25vYXJncywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZm9ybWF0IHN0cmluZyBpcyBub3QgYSBzdHJpbmcgbGl0ZXJhbCAocG90ZW50aWFsbHkgaW5zZWN1cmUpIiwgMjQwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCitESUFHKHdhcm5fZm9ybWF0X25vbnNlbnNpY2FsX2xlbmd0aCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibGVuZ3RoIG1vZGlmaWVyICclMCcgcmVzdWx0cyBpbiB1bmRlZmluZWQgYmVoYXZpb3Igb3Igbm8gZWZmZWN0IHdpdGggJyUxJyBjb252ZXJzaW9uIHNwZWNpZmllciIsIDIzNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQorRElBRyh3YXJuX2Zvcm1hdF9zdHJpbmdfaXNfd2lkZV9saXRlcmFsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmb3JtYXQgc3RyaW5nIHNob3VsZCBub3QgYmUgYSB3aWRlIHN0cmluZyIsIDIzNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQorRElBRyh3YXJuX2Zvcm1hdF96ZXJvX3Bvc2l0aW9uYWxfc3BlY2lmaWVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwb3NpdGlvbiBhcmd1bWVudHMgaW4gZm9ybWF0IHN0cmluZ3Mgc3RhcnQgY291bnRpbmcgYXQgMSAobm90IDApIiwgMjM0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCitESUFHKHdhcm5fZm9yd2FyZF9jbGFzc19yZWRlZmluaXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlZGVmaW5pdGlvbiBvZiBmb3J3YXJkIGNsYXNzICUwIG9mIGEgdHlwZWRlZiBuYW1lIG9mIGFuIG9iamVjdCB0eXBlIGlzIGlnbm9yZWQiLCA0NjksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Z1bl9leGNsdWRlc19tdXRleCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY2Fubm90IGNhbGwgZnVuY3Rpb24gJyUxJyB3aGlsZSAlMCAnJTInIGlzIGhlbGQiLCA2NjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Z1bl9yZXF1aXJlc19sb2NrLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjYWxsaW5nIGZ1bmN0aW9uICUxIHJlcXVpcmVzIGhvbGRpbmcgJTAgJXNlbGVjdHsnJTInfCclMicgZXhjbHVzaXZlbHl9MyIsIDY2MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZnVuX3JlcXVpcmVzX2xvY2tfcHJlY2lzZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY2FsbGluZyBmdW5jdGlvbiAlMSByZXF1aXJlcyBob2xkaW5nICUwICVzZWxlY3R7JyUyJ3wnJTInIGV4Y2x1c2l2ZWx5fTMiLCA2NjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2Z1bmNfdGVtcGxhdGVfbWlzc2luZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW5zdGFudGlhdGlvbiBvZiBmdW5jdGlvbiAlcTAgcmVxdWlyZWQgaGVyZSwgYnV0IG5vIGRlZmluaXRpb24gaXMgYXZhaWxhYmxlIiwgNjc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9mdW5jdGlvbl9kZWZfaW5fb2JqY19jb250YWluZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZ1bmN0aW9uIGRlZmluaXRpb24gaW5zaWRlIGFuIE9iamVjdGl2ZS1DIGNvbnRhaW5lciBpcyBkZXByZWNhdGVkIiwgMjQ3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9mdW5jdGlvbl9tYXJrZWRfbm90X292ZXJyaWRlX292ZXJyaWRpbmcsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIG92ZXJyaWRlcyBhIG1lbWJlciBmdW5jdGlvbiBidXQgaXMgbm90IG1hcmtlZCAnb3ZlcnJpZGUnIiwgMzIwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9nY19hdHRyaWJ1dGVfd2Vha19vbl9sb2NhbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiT2JqZWN0aXZlLUMgR0MgZG9lcyBub3QgYWxsb3cgd2VhayB2YXJpYWJsZXMgb24gdGhlIHN0YWNrIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9nY2NfaWdub3Jlc190eXBlX2F0dHIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIkdDQyBkb2VzIG5vdCBhbGxvdyB0aGUgJTAgYXR0cmlidXRlIHRvIGJlIHdyaXR0ZW4gb24gYSB0eXBlIiwgMjUwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9nbG9iYWxfY29uc3RydWN0b3IsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImRlY2xhcmF0aW9uIHJlcXVpcmVzIGEgZ2xvYmFsIGNvbnN0cnVjdG9yIiwgMjUxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9nbG9iYWxfZGVzdHJ1Y3RvciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZGVjbGFyYXRpb24gcmVxdWlyZXMgYSBnbG9iYWwgZGVzdHJ1Y3RvciIsIDI1MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fZ251X2lubGluZV9hdHRyaWJ1dGVfcmVxdWlyZXNfaW5saW5lLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInZ251X2lubGluZScgYXR0cmlidXRlIHJlcXVpcmVzIGZ1bmN0aW9uIHRvIGJlIG1hcmtlZCAnaW5saW5lJywgYXR0cmlidXRlIGlnbm9yZWQiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2dudV9udWxsX3B0cl9hcml0aCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYXJpdGhtZXRpYyBvbiBhIG51bGwgcG9pbnRlciB0cmVhdGVkIGFzIGEgY2FzdCBmcm9tIGludGVnZXIgdG8gcG9pbnRlciBpcyBhIEdOVSBleHRlbnNpb24iLCA0NTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2d1YXJkZWRfcGFzc19ieV9yZWZlcmVuY2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInBhc3NpbmcgdmFyaWFibGUgJTEgYnkgcmVmZXJlbmNlIHJlcXVpcmVzIGhvbGRpbmcgJTAgJXNlbGVjdHsnJTInfCclMicgZXhjbHVzaXZlbHl9MyIsIDY2NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faWJvdXRsZXRfb2JqZWN0X3R5cGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7aW5zdGFuY2UgdmFyaWFibGV8cHJvcGVydHl9MiB3aXRoICUwIGF0dHJpYnV0ZSBtdXN0IGJlIGFuIG9iamVjdCB0eXBlIChpbnZhbGlkICUxKSIsIDMzNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faWJvdXRsZXRjb2xsZWN0aW9uX3Byb3BlcnR5X2Fzc2lnbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiSUJPdXRsZXRDb2xsZWN0aW9uIHByb3BlcnRpZXMgc2hvdWxkIGJlIGNvcHkvc3Ryb25nIGFuZCBub3QgYXNzaWduIiwgMzM3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9pZGVudGl0eV9maWVsZF9hc3NpZ24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFzc2lnbmluZyAlc2VsZWN0e2ZpZWxkfGluc3RhbmNlIHZhcmlhYmxlfTAgdG8gaXRzZWxmIiwgNTgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9pZ25vcmVkX21zX2luaGVyaXRhbmNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbmhlcml0YW5jZSBtb2RlbCBpZ25vcmVkIG9uICVzZWxlY3R7cHJpbWFyeSB0ZW1wbGF0ZXxwYXJ0aWFsIHNwZWNpYWxpemF0aW9ufTAiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2lnbm9yZWRfb2JqY19leHRlcm5hbGx5X3JldGFpbmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInb2JqY19leHRlcm5hbGx5X3JldGFpbmVkJyBjYW4gb25seSBiZSBhcHBsaWVkIHRvIGxvY2FsIHZhcmlhYmxlcyAlc2VsZWN0e29mIHJldGFpbmFibGUgdHlwZXx3aXRoIHN0cm9uZyBvd25lcnNoaXB9MCIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faWxsZWdhbF9jb25zdGFudF9hcnJheV9zaXplLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInNpemUgb2Ygc3RhdGljIGFycmF5IG11c3QgYmUgYW4gaW50ZWdlciBjb25zdGFudCBleHByZXNzaW9uIiwgNTI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9pbXBjYXN0X2JpdGZpZWxkX3ByZWNpc2lvbl9jb25zdGFudCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW1wbGljaXQgdHJ1bmNhdGlvbiBmcm9tICUyIHRvIGJpdC1maWVsZCBjaGFuZ2VzIHZhbHVlIGZyb20gJTAgdG8gJTEiLCA1OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQogRElBRyh3YXJuX2ltcGNhc3RfYm9vbF90b19udWxsX3BvaW50ZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluaXRpYWxpemF0aW9uIG9mIHBvaW50ZXIgb2YgdHlwZSAlMCB0byBudWxsIGZyb20gYSBjb25zdGFudCBib29sZWFuIGV4cHJlc3Npb24iLCA2NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQotRElBRyh3YXJuX2ltcGNhc3RfY29tcGxleF9zY2FsYXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltcGxpY2l0IGNvbnZlcnNpb24gZGlzY2FyZHMgaW1hZ2luYXJ5IGNvbXBvbmVudDogJTAgdG8gJTEiLCAxMzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKLURJQUcod2Fybl9pbXBjYXN0X2RpZmZlcmVudF9lbnVtX3R5cGVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gZW51bWVyYXRpb24gdHlwZSAlMCB0byBkaWZmZXJlbnQgZW51bWVyYXRpb24gdHlwZSAlMSIsIDIwMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQotRElBRyh3YXJuX2ltcGNhc3RfZG91YmxlX3Byb21vdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW1wbGljaXQgY29udmVyc2lvbiBpbmNyZWFzZXMgZmxvYXRpbmctcG9pbnQgcHJlY2lzaW9uOiAlMCB0byAlMSIsIDE4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5faW1wY2FzdF9mbG9hdF9pbnRlZ2VyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbXBsaWNpdCBjb252ZXJzaW9uIHR1cm5zIGZsb2F0aW5nLXBvaW50IG51bWJlciBpbnRvIGludGVnZXI6ICUwIHRvICUxIiwgMjIxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCi1ESUFHKHdhcm5faW1wY2FzdF9mbG9hdF9wcmVjaXNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltcGxpY2l0IGNvbnZlcnNpb24gbG9zZXMgZmxvYXRpbmctcG9pbnQgcHJlY2lzaW9uOiAlMCB0byAlMSIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQotRElBRyh3YXJuX2ltcGNhc3RfZmxvYXRfcmVzdWx0X3ByZWNpc2lvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW1wbGljaXQgY29udmVyc2lvbiB3aGVuIGFzc2lnbmluZyBjb21wdXRhdGlvbiByZXN1bHQgbG9zZXMgZmxvYXRpbmctcG9pbnQgcHJlY2lzaW9uOiAlMCB0byAlMSIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQotRElBRyh3YXJuX2ltcGNhc3RfZmxvYXRfdG9faW50ZWdlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW1wbGljaXQgY29udmVyc2lvbiBmcm9tICUwIHRvICUxIGNoYW5nZXMgdmFsdWUgZnJvbSAlMiB0byAlMyIsIDIyMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQotRElBRyh3YXJuX2ltcGNhc3RfZmxvYXRfdG9faW50ZWdlcl9vdXRfb2ZfcmFuZ2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltcGxpY2l0IGNvbnZlcnNpb24gb2Ygb3V0IG9mIHJhbmdlIHZhbHVlIGZyb20gJTAgdG8gJTEgaXMgdW5kZWZpbmVkIiwgMjIzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCi1ESUFHKHdhcm5faW1wY2FzdF9mbG9hdF90b19pbnRlZ2VyX3plcm8sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltcGxpY2l0IGNvbnZlcnNpb24gZnJvbSAlMCB0byAlMSBjaGFuZ2VzIG5vbi16ZXJvIHZhbHVlIGZyb20gJTIgdG8gJTMiLCAyMjQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKLURJQUcod2Fybl9pbXBjYXN0X2Zsb2F0aW5nX3BvaW50X3RvX2Jvb2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImltcGxpY2l0IGNvbnZlcnNpb24gdHVybnMgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGludG8gYm9vbDogJTAgdG8gJTEiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2ltcGNhc3RfaGlnaF9vcmRlcl96ZXJvX2JpdHMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImhpZ2hlciBvcmRlciBiaXRzIGFyZSB6ZXJvZXMgYWZ0ZXIgaW1wbGljaXQgY29udmVyc2lvbiIsIDI4OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQotRElBRyh3YXJuX2ltcGNhc3RfaW50ZWdlcl82NF8zMiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW1wbGljaXQgY29udmVyc2lvbiBsb3NlcyBpbnRlZ2VyIHByZWNpc2lvbjogJTAgdG8gJTEiLCA1OTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKLURJQUcod2Fybl9pbXBjYXN0X2ludGVnZXJfcHJlY2lzaW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbXBsaWNpdCBjb252ZXJzaW9uIGxvc2VzIGludGVnZXIgcHJlY2lzaW9uOiAlMCB0byAlMSIsIDI4OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQotRElBRyh3YXJuX2ltcGNhc3RfaW50ZWdlcl9wcmVjaXNpb25fY29uc3RhbnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImltcGxpY2l0IGNvbnZlcnNpb24gZnJvbSAlMiB0byAlMyBjaGFuZ2VzIHZhbHVlIGZyb20gJTAgdG8gJTEiLCAxMzIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKLURJQUcod2Fybl9pbXBjYXN0X2ludGVnZXJfc2lnbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW1wbGljaXQgY29udmVyc2lvbiBjaGFuZ2VzIHNpZ25lZG5lc3M6ICUwIHRvICUxIiwgNTkyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCi1ESUFHKHdhcm5faW1wY2FzdF9pbnRlZ2VyX3NpZ25fY29uZGl0aW9uYWwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm9wZXJhbmQgb2YgPyBjaGFuZ2VzIHNpZ25lZG5lc3M6ICUwIHRvICUxIiwgNTkyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCi1ESUFHKHdhcm5faW1wY2FzdF9saXRlcmFsX2Zsb2F0X3RvX2ludGVnZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImltcGxpY2l0IGNvbnZlcnNpb24gZnJvbSAlMCB0byAlMSBjaGFuZ2VzIHZhbHVlIGZyb20gJTIgdG8gJTMiLCAzNDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKLURJQUcod2Fybl9pbXBjYXN0X2xpdGVyYWxfZmxvYXRfdG9faW50ZWdlcl9vdXRfb2ZfcmFuZ2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImltcGxpY2l0IGNvbnZlcnNpb24gb2Ygb3V0IG9mIHJhbmdlIHZhbHVlIGZyb20gJTAgdG8gJTEgaXMgdW5kZWZpbmVkIiwgMzQ2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCi1ESUFHKHdhcm5faW1wY2FzdF9ub25uZWdhdGl2ZV9yZXN1bHQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInRoZSByZXN1bHRpbmcgdmFsdWUgaXMgYWx3YXlzIG5vbi1uZWdhdGl2ZSBhZnRlciBpbXBsaWNpdCBjb252ZXJzaW9uIiwgNTkyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCi1ESUFHKHdhcm5faW1wY2FzdF9udWxsX3BvaW50ZXJfdG9faW50ZWdlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW1wbGljaXQgY29udmVyc2lvbiBvZiAlc2VsZWN0e05VTEx8bnVsbHB0cn0wIGNvbnN0YW50IHRvICUxIiwgNDQ0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCi1ESUFHKHdhcm5faW1wY2FzdF9vYmplY3RpdmVfY19saXRlcmFsX3RvX2Jvb2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImltcGxpY2l0IGJvb2xlYW4gY29udmVyc2lvbiBvZiBPYmplY3RpdmUtQyBvYmplY3QgbGl0ZXJhbCBhbHdheXMgZXZhbHVhdGVzIHRvIHRydWUiLCA0NjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKLURJQUcod2Fybl9pbXBjYXN0X3BvaW50ZXJfdG9fYm9vbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYWRkcmVzcyBvZiVzZWxlY3R7fCBmdW5jdGlvbnwgYXJyYXl9MCAnJTEnIHdpbGwgYWx3YXlzIGV2YWx1YXRlIHRvICd0cnVlJyIsIDUyMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQotRElBRyh3YXJuX2ltcGNhc3Rfc3RyaW5nX2xpdGVyYWxfdG9fYm9vbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW1wbGljaXQgY29udmVyc2lvbiB0dXJucyBzdHJpbmcgbGl0ZXJhbCBpbnRvIGJvb2w6ICUwIHRvICUxIiwgNjIzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCi1ESUFHKHdhcm5faW1wY2FzdF92ZWN0b3Jfc2NhbGFyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbXBsaWNpdCBjb252ZXJzaW9uIHR1cm5zIHZlY3RvciB0byBzY2FsYXI6ICUwIHRvICUxIiwgMTM2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCi1ESUFHKHdhcm5faW1wbF9yZXF1aXJlZF9mb3JfY2xhc3NfcHJvcGVydHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNsYXNzIHByb3BlcnR5ICUwIHJlcXVpcmVzIG1ldGhvZCAlMSB0byBiZSBkZWZpbmVkIC0gdXNlIEBkeW5hbWljIG9yIHByb3ZpZGUgYSBtZXRob2QgaW1wbGVtZW50YXRpb24gaW4gdGhpcyBjbGFzcyBpbXBsZW1lbnRhdGlvbiIsIDQ3MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5faW1wbF9yZXF1aXJlZF9pbl9jYXRlZ29yeV9mb3JfY2xhc3NfcHJvcGVydHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNsYXNzIHByb3BlcnR5ICUwIHJlcXVpcmVzIG1ldGhvZCAlMSB0byBiZSBkZWZpbmVkIC0gdXNlIEBkeW5hbWljIG9yIHByb3ZpZGUgYSBtZXRob2QgaW1wbGVtZW50YXRpb24gaW4gdGhpcyBjYXRlZ29yeSIsIDQ3MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faW1wY2FzdF9jb21wbGV4X3NjYWxhciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW1wbGljaXQgY29udmVyc2lvbiBkaXNjYXJkcyBpbWFnaW5hcnkgY29tcG9uZW50OiAlMCB0byAlMSIsIDEzNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQorRElBRyh3YXJuX2ltcGNhc3RfZGlmZmVyZW50X2VudW1fdHlwZXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImltcGxpY2l0IGNvbnZlcnNpb24gZnJvbSBlbnVtZXJhdGlvbiB0eXBlICUwIHRvIGRpZmZlcmVudCBlbnVtZXJhdGlvbiB0eXBlICUxIiwgMjEwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCitESUFHKHdhcm5faW1wY2FzdF9kb3VibGVfcHJvbW90aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbXBsaWNpdCBjb252ZXJzaW9uIGluY3JlYXNlcyBmbG9hdGluZy1wb2ludCBwcmVjaXNpb246ICUwIHRvICUxIiwgMTkyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9pbXBjYXN0X2ZpeGVkX3BvaW50X3JhbmdlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gJTAgY2Fubm90IGZpdCB3aXRoaW4gdGhlIHJhbmdlIG9mIHZhbHVlcyBmb3IgJTEiLCAyOTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2ltcGNhc3RfZmxvYXRfaW50ZWdlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW1wbGljaXQgY29udmVyc2lvbiB0dXJucyBmbG9hdGluZy1wb2ludCBudW1iZXIgaW50byBpbnRlZ2VyOiAlMCB0byAlMSIsIDIyOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQorRElBRyh3YXJuX2ltcGNhc3RfZmxvYXRfcHJlY2lzaW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbXBsaWNpdCBjb252ZXJzaW9uIGxvc2VzIGZsb2F0aW5nLXBvaW50IHByZWNpc2lvbjogJTAgdG8gJTEiLCAyOTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKK0RJQUcod2Fybl9pbXBjYXN0X2Zsb2F0X3Jlc3VsdF9wcmVjaXNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltcGxpY2l0IGNvbnZlcnNpb24gd2hlbiBhc3NpZ25pbmcgY29tcHV0YXRpb24gcmVzdWx0IGxvc2VzIGZsb2F0aW5nLXBvaW50IHByZWNpc2lvbjogJTAgdG8gJTEiLCAyOTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKK0RJQUcod2Fybl9pbXBjYXN0X2Zsb2F0X3RvX2ludGVnZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltcGxpY2l0IGNvbnZlcnNpb24gZnJvbSAlMCB0byAlMSBjaGFuZ2VzIHZhbHVlIGZyb20gJTIgdG8gJTMiLCAyMzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKK0RJQUcod2Fybl9pbXBjYXN0X2Zsb2F0X3RvX2ludGVnZXJfb3V0X29mX3JhbmdlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbXBsaWNpdCBjb252ZXJzaW9uIG9mIG91dCBvZiByYW5nZSB2YWx1ZSBmcm9tICUwIHRvICUxIGlzIHVuZGVmaW5lZCIsIDIzMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQorRElBRyh3YXJuX2ltcGNhc3RfZmxvYXRfdG9faW50ZWdlcl96ZXJvLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gJTAgdG8gJTEgY2hhbmdlcyBub24temVybyB2YWx1ZSBmcm9tICUyIHRvICUzIiwgMjMyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCitESUFHKHdhcm5faW1wY2FzdF9mbG9hdGluZ19wb2ludF90b19ib29sLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbXBsaWNpdCBjb252ZXJzaW9uIHR1cm5zIGZsb2F0aW5nLXBvaW50IG51bWJlciBpbnRvIGJvb2w6ICUwIHRvICUxIiwgMjkwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9pbXBjYXN0X2hpZ2hfb3JkZXJfemVyb19iaXRzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJoaWdoZXIgb3JkZXIgYml0cyBhcmUgemVyb2VzIGFmdGVyIGltcGxpY2l0IGNvbnZlcnNpb24iLCAyOTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKK0RJQUcod2Fybl9pbXBjYXN0X2ludGVnZXJfNjRfMzIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltcGxpY2l0IGNvbnZlcnNpb24gbG9zZXMgaW50ZWdlciBwcmVjaXNpb246ICUwIHRvICUxIiwgNjAyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCitESUFHKHdhcm5faW1wY2FzdF9pbnRlZ2VyX3ByZWNpc2lvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW1wbGljaXQgY29udmVyc2lvbiBsb3NlcyBpbnRlZ2VyIHByZWNpc2lvbjogJTAgdG8gJTEiLCAyOTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKK0RJQUcod2Fybl9pbXBjYXN0X2ludGVnZXJfcHJlY2lzaW9uX2NvbnN0YW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gJTIgdG8gJTMgY2hhbmdlcyB2YWx1ZSBmcm9tICUwIHRvICUxIiwgMTMzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCitESUFHKHdhcm5faW1wY2FzdF9pbnRlZ2VyX3NpZ24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltcGxpY2l0IGNvbnZlcnNpb24gY2hhbmdlcyBzaWduZWRuZXNzOiAlMCB0byAlMSIsIDYwNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQorRElBRyh3YXJuX2ltcGNhc3RfaW50ZWdlcl9zaWduX2NvbmRpdGlvbmFsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJvcGVyYW5kIG9mID8gY2hhbmdlcyBzaWduZWRuZXNzOiAlMCB0byAlMSIsIDYwNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQorRElBRyh3YXJuX2ltcGNhc3RfbGl0ZXJhbF9mbG9hdF90b19pbnRlZ2VyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gJTAgdG8gJTEgY2hhbmdlcyB2YWx1ZSBmcm9tICUyIHRvICUzIiwgMzU1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCitESUFHKHdhcm5faW1wY2FzdF9saXRlcmFsX2Zsb2F0X3RvX2ludGVnZXJfb3V0X29mX3JhbmdlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbXBsaWNpdCBjb252ZXJzaW9uIG9mIG91dCBvZiByYW5nZSB2YWx1ZSBmcm9tICUwIHRvICUxIGlzIHVuZGVmaW5lZCIsIDM1NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQorRElBRyh3YXJuX2ltcGNhc3Rfbm9ubmVnYXRpdmVfcmVzdWx0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ0aGUgcmVzdWx0aW5nIHZhbHVlIGlzIGFsd2F5cyBub24tbmVnYXRpdmUgYWZ0ZXIgaW1wbGljaXQgY29udmVyc2lvbiIsIDYwNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQorRElBRyh3YXJuX2ltcGNhc3RfbnVsbF9wb2ludGVyX3RvX2ludGVnZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImltcGxpY2l0IGNvbnZlcnNpb24gb2YgJXNlbGVjdHtOVUxMfG51bGxwdHJ9MCBjb25zdGFudCB0byAlMSIsIDQ1NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQorRElBRyh3YXJuX2ltcGNhc3Rfb2JqZWN0aXZlX2NfbGl0ZXJhbF90b19ib29sLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbXBsaWNpdCBib29sZWFuIGNvbnZlcnNpb24gb2YgT2JqZWN0aXZlLUMgb2JqZWN0IGxpdGVyYWwgYWx3YXlzIGV2YWx1YXRlcyB0byB0cnVlIiwgNDcyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCitESUFHKHdhcm5faW1wY2FzdF9wb2ludGVyX3RvX2Jvb2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFkZHJlc3Mgb2Ylc2VsZWN0e3wgZnVuY3Rpb258IGFycmF5fTAgJyUxJyB3aWxsIGFsd2F5cyBldmFsdWF0ZSB0byAndHJ1ZSciLCA1MzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKK0RJQUcod2Fybl9pbXBjYXN0X3N0cmluZ19saXRlcmFsX3RvX2Jvb2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltcGxpY2l0IGNvbnZlcnNpb24gdHVybnMgc3RyaW5nIGxpdGVyYWwgaW50byBib29sOiAlMCB0byAlMSIsIDYzNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQorRElBRyh3YXJuX2ltcGNhc3RfdmVjdG9yX3NjYWxhciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW1wbGljaXQgY29udmVyc2lvbiB0dXJucyB2ZWN0b3IgdG8gc2NhbGFyOiAlMCB0byAlMSIsIDEzNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQorRElBRyh3YXJuX2ltcGxfcmVxdWlyZWRfZm9yX2NsYXNzX3Byb3BlcnR5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjbGFzcyBwcm9wZXJ0eSAlMCByZXF1aXJlcyBtZXRob2QgJTEgdG8gYmUgZGVmaW5lZCAtIHVzZSBAZHluYW1pYyBvciBwcm92aWRlIGEgbWV0aG9kIGltcGxlbWVudGF0aW9uIGluIHRoaXMgY2xhc3MgaW1wbGVtZW50YXRpb24iLCA0ODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2ltcGxfcmVxdWlyZWRfaW5fY2F0ZWdvcnlfZm9yX2NsYXNzX3Byb3BlcnR5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjbGFzcyBwcm9wZXJ0eSAlMCByZXF1aXJlcyBtZXRob2QgJTEgdG8gYmUgZGVmaW5lZCAtIHVzZSBAZHluYW1pYyBvciBwcm92aWRlIGEgbWV0aG9kIGltcGxlbWVudGF0aW9uIGluIHRoaXMgY2F0ZWdvcnkiLCA0ODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2ltcGxlbWVudHNfbnNjb3B5aW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZWZhdWx0IGFzc2lnbiBhdHRyaWJ1dGUgb24gcHJvcGVydHkgJTAgd2hpY2ggaW1wbGVtZW50cyBOU0NvcHlpbmcgcHJvdG9jb2wgaXMgbm90IGFwcHJvcHJpYXRlIHdpdGggLWZvYmpjLWdjWy1vbmx5XSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2ltcGxpY2l0X2F0b21pY19wcm9wZXJ0eSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicHJvcGVydHkgaXMgYXNzdW1lZCBhdG9taWMgYnkgZGVmYXVsdCIsIDI4MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faW1wbGljaXRfYXRvbWljX3Byb3BlcnR5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwcm9wZXJ0eSBpcyBhc3N1bWVkIGF0b21pYyBieSBkZWZhdWx0IiwgMjg5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9pbXBsaWNpdF9kZWNsX3JlcXVpcmVzX3N5c2hlYWRlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGVjbGFyYXRpb24gb2YgYnVpbHQtaW4gZnVuY3Rpb24gJyUxJyByZXF1aXJlcyBpbmNsdXNpb24gb2YgdGhlIGhlYWRlciA8JTA+IiwgNzAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2ltcGxpY2l0X2Z1bmN0aW9uX2RlY2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICUwIiwgMjg3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9pbXBsaWNpdGx5X3JldGFpbnNfc2VsZiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYmxvY2sgaW1wbGljaXRseSByZXRhaW5zICdzZWxmJzsgZXhwbGljaXRseSBtZW50aW9uICdzZWxmJyB0byBpbmRpY2F0ZSB0aGlzIGlzIGludGVuZGVkIGJlaGF2aW9yIiwgMjkwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9pbmFjY2Vzc2libGVfYmFzZV9jbGFzcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGlyZWN0IGJhc2UgJTAgaXMgaW5hY2Nlc3NpYmxlIGR1ZSB0byBhbWJpZ3VpdHk6JTEiLCAyOTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2luY29tcGF0aWJsZV9leGNlcHRpb25fc3BlY3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRhcmdldCBleGNlcHRpb24gc3BlY2lmaWNhdGlvbiBpcyBub3Qgc3VwZXJzZXQgb2Ygc291cmNlIiwgMjk3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9pbXBsaWNpdF9mdW5jdGlvbl9kZWNsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAlMCIsIDI5NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faW1wbGljaXRseV9yZXRhaW5zX3NlbGYsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImJsb2NrIGltcGxpY2l0bHkgcmV0YWlucyAnc2VsZic7IGV4cGxpY2l0bHkgbWVudGlvbiAnc2VsZicgdG8gaW5kaWNhdGUgdGhpcyBpcyBpbnRlbmRlZCBiZWhhdmlvciIsIDI5OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faW5hY2Nlc3NpYmxlX2Jhc2VfY2xhc3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRpcmVjdCBiYXNlICUwIGlzIGluYWNjZXNzaWJsZSBkdWUgdG8gYW1iaWd1aXR5OiUxIiwgMzAzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9pbmNvbXBhdGlibGVfZXhjZXB0aW9uX3NwZWNzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0YXJnZXQgZXhjZXB0aW9uIHNwZWNpZmljYXRpb24gaXMgbm90IHN1cGVyc2V0IG9mIHNvdXJjZSIsIDMwNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5faW5jb21wYXRpYmxlX3F1YWxpZmllZF9pZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHslZGlmZnthc3NpZ25pbmcgdG8gJCBmcm9tIGluY29tcGF0aWJsZSB0eXBlICR8YXNzaWduaW5nIHRvIHR5cGUgZnJvbSBpbmNvbXBhdGlibGUgdHlwZX0wLDF8JWRpZmZ7cGFzc2luZyAkIHRvIHBhcmFtZXRlciBvZiBpbmNvbXBhdGlibGUgdHlwZSAkfHBhc3NpbmcgdHlwZSB0byBwYXJhbWV0ZXIgb2YgaW5jb21wYXRpYmxlIHR5cGV9MCwxfCVkaWZme3JldHVybmluZyAkIGZyb20gYSBmdW5jdGlvbiB3aXRoIGluY29tcGF0aWJsZSByZXN1bHQgdHlwZSAkfHJldHVybmluZyB0eXBlIGZyb20gYSBmdW5jdGlvbiB3aXRoIGluY29tcGF0aWJsZSByZXN1bHQgdHlwZX0wLDF8JWRpZmZ7Y29udmVydGluZyAkIHRvIGluY29tcGF0aWJsZSB0eXBlICR8Y29udmVydGluZyB0eXBlIHRvIGluY29tcGF0aWJsZSB0eXBlfTAsMXwlZGlmZntpbml0aWFsaXppbmcgJCB3aXRoIGFuIGV4cHJlc3Npb24gb2YgaW5jb21wYXRpYmxlIHR5cGUgJHxpbml0aWFsaXppbmcgdHlwZSB3aXRoIGFuIGV4cHJlc3Npb24gb2YgaW5jb21wYXRpYmxlIHR5cGV9MCwxfCVkaWZme3NlbmRpbmcgJCB0byBwYXJhbWV0ZXIgb2YgaW5jb21wYXRpYmxlIHR5cGUgJHxzZW5kaW5nIHR5cGUgdG8gcGFyYW1ldGVyIG9mIGluY29tcGF0aWJsZSB0eXBlfTAsMXwlZGlmZntjYXN0aW5nICQgdG8gaW5jb21wYXRpYmxlIHR5cGUgJHxjYXN0aW5nIHR5cGUgdG8gaW5jb21wYXRpYmxlIHR5cGV9MCwxfTIiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9pbmNvbXBhdGlibGVfdmVjdG9ycywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW5jb21wYXRpYmxlIHZlY3RvciB0eXBlcyAlc2VsZWN0eyVkaWZme2Fzc2lnbmluZyB0byAkIGZyb20gJHxhc3NpZ25pbmcgdG8gZGlmZmVyZW50IHR5cGVzfTAsMXwlZGlmZntwYXNzaW5nICQgdG8gcGFyYW1ldGVyIG9mIHR5cGUgJHxwYXNzaW5nIHRvIHBhcmFtZXRlciBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7cmV0dXJuaW5nICQgZnJvbSBhIGZ1bmN0aW9uIHdpdGggcmVzdWx0IHR5cGUgJHxyZXR1cm5pbmcgZnJvbSBmdW5jdGlvbiB3aXRoIGRpZmZlcmVudCByZXR1cm4gdHlwZX0wLDF8JWRpZmZ7Y29udmVydGluZyAkIHRvIHR5cGUgJHxjb252ZXJ0aW5nIGJldHdlZW4gdHlwZXN9MCwxfCVkaWZme2luaXRpYWxpemluZyAkIHdpdGggYW4gZXhwcmVzc2lvbiBvZiB0eXBlICR8aW5pdGlhbGl6aW5nIHdpdGggZXhwcmVzc2lvbiBvZiBkaWZmZXJlbnQgdHlwZX0wLDF8JWRpZmZ7c2VuZGluZyAkIHRvIHBhcmFtZXRlciBvZiB0eXBlICR8c2VuZGluZyB0byBwYXJhbWV0ZXIgb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme2Nhc3RpbmcgJCB0byB0eXBlICR8Y2FzdGluZyBiZXR3ZWVuIHR5cGVzfTAsMX0yIiwgNzMzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9pbmNvbXBsZXRlX2VuY29kZWRfdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZW5jb2Rpbmcgb2YgJTAgdHlwZSBpcyBpbmNvbXBsZXRlIGJlY2F1c2UgJTEgY29tcG9uZW50IGhhcyB1bmtub3duIGVuY29kaW5nIiwgMTk5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9pbmNyZW1lbnRfYm9vbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5jcmVtZW50aW5nIGV4cHJlc3Npb24gb2YgdHlwZSBib29sIGlzIGRlcHJlY2F0ZWQgYW5kIGluY29tcGF0aWJsZSB3aXRoIEMrKzE3IiwgMTYzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjcpCitESUFHKHdhcm5faW5jb21wYXRpYmxlX3ZlY3RvcnMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImluY29tcGF0aWJsZSB2ZWN0b3IgdHlwZXMgJXNlbGVjdHslZGlmZnthc3NpZ25pbmcgdG8gJCBmcm9tICR8YXNzaWduaW5nIHRvIGRpZmZlcmVudCB0eXBlc30wLDF8JWRpZmZ7cGFzc2luZyAkIHRvIHBhcmFtZXRlciBvZiB0eXBlICR8cGFzc2luZyB0byBwYXJhbWV0ZXIgb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme3JldHVybmluZyAkIGZyb20gYSBmdW5jdGlvbiB3aXRoIHJlc3VsdCB0eXBlICR8cmV0dXJuaW5nIGZyb20gZnVuY3Rpb24gd2l0aCBkaWZmZXJlbnQgcmV0dXJuIHR5cGV9MCwxfCVkaWZme2NvbnZlcnRpbmcgJCB0byB0eXBlICR8Y29udmVydGluZyBiZXR3ZWVuIHR5cGVzfTAsMXwlZGlmZntpbml0aWFsaXppbmcgJCB3aXRoIGFuIGV4cHJlc3Npb24gb2YgdHlwZSAkfGluaXRpYWxpemluZyB3aXRoIGV4cHJlc3Npb24gb2YgZGlmZmVyZW50IHR5cGV9MCwxfCVkaWZme3NlbmRpbmcgJCB0byBwYXJhbWV0ZXIgb2YgdHlwZSAkfHNlbmRpbmcgdG8gcGFyYW1ldGVyIG9mIGRpZmZlcmVudCB0eXBlfTAsMXwlZGlmZntjYXN0aW5nICQgdG8gdHlwZSAkfGNhc3RpbmcgYmV0d2VlbiB0eXBlc30wLDF9MiIsIDc0NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faW5jb21wbGV0ZV9lbmNvZGVkX3R5cGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImVuY29kaW5nIG9mICUwIHR5cGUgaXMgaW5jb21wbGV0ZSBiZWNhdXNlICUxIGNvbXBvbmVudCBoYXMgdW5rbm93biBlbmNvZGluZyIsIDIwNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faW5jcmVtZW50X2Jvb2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluY3JlbWVudGluZyBleHByZXNzaW9uIG9mIHR5cGUgYm9vbCBpcyBkZXByZWNhdGVkIGFuZCBpbmNvbXBhdGlibGUgd2l0aCBDKysxNyIsIDE2OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQogRElBRyh3YXJuX2luZGVwZW5kZW50Y2xhc3NfYXR0cmlidXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInb2JqY19pbmRlcGVuZGVudF9jbGFzcycgYXR0cmlidXRlIG1heSBiZSBwdXQgb24gYSB0eXBlZGVmIG9ubHk7IGF0dHJpYnV0ZSBpcyBpZ25vcmVkIiwgNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5faW5kaXJlY3Rpb25fdGhyb3VnaF9udWxsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbmRpcmVjdGlvbiBvZiBub24tdm9sYXRpbGUgbnVsbCBwb2ludGVyIHdpbGwgYmUgZGVsZXRlZCwgbm90IHRyYXAiLCA0NDUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2luZmluaXRlX3JlY3Vyc2l2ZV9mdW5jdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYWxsIHBhdGhzIHRocm91Z2ggdGhpcyBmdW5jdGlvbiB3aWxsIGNhbGwgaXRzZWxmIiwgMzEzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9pbmRpcmVjdGlvbl90aHJvdWdoX251bGwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluZGlyZWN0aW9uIG9mIG5vbi12b2xhdGlsZSBudWxsIHBvaW50ZXIgd2lsbCBiZSBkZWxldGVkLCBub3QgdHJhcCIsIDQ1NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faW5maW5pdGVfcmVjdXJzaXZlX2Z1bmN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJhbGwgcGF0aHMgdGhyb3VnaCB0aGlzIGZ1bmN0aW9uIHdpbGwgY2FsbCBpdHNlbGYiLCAzMjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2luaXRfbGlzdF9jb25zdGFudF9uYXJyb3dpbmcsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbnN0YW50IGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvICUwIHdoaWNoIGNhbm5vdCBiZSBuYXJyb3dlZCB0byB0eXBlICUxIGluIEMrKzExIiwgODMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2luaXRfbGlzdF90eXBlX25hcnJvd2luZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidHlwZSAlMCBjYW5ub3QgYmUgbmFycm93ZWQgdG8gJTEgaW4gaW5pdGlhbGl6ZXIgbGlzdCBpbiBDKysxMSIsIDgzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9pbml0X2xpc3RfdmFyaWFibGVfbmFycm93aW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJub24tY29uc3RhbnQtZXhwcmVzc2lvbiBjYW5ub3QgYmUgbmFycm93ZWQgZnJvbSB0eXBlICUwIHRvICUxIGluIGluaXRpYWxpemVyIGxpc3QgaW4gQysrMTEiLCA4MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5faW5pdF9wdHJfbWVtYmVyX3RvX3BhcmFtZXRlcl9hZGRyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbml0aWFsaXppbmcgcG9pbnRlciBtZW1iZXIgJTAgd2l0aCB0aGUgc3RhY2sgYWRkcmVzcyBvZiAlc2VsZWN0e3ZhcmlhYmxlfHBhcmFtZXRlcn0yICUxIiwgMTQ4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9pbml0aWFsaXplcl9vdXRfb2Zfb3JkZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiVzZWxlY3R7ZmllbGR8YmFzZSBjbGFzc30wICUxIHdpbGwgYmUgaW5pdGlhbGl6ZWQgYWZ0ZXIgJXNlbGVjdHtmaWVsZHxiYXNlfTIgJTMiLCA1NTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2luaXRpYWxpemVyX292ZXJyaWRlcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5pdGlhbGl6ZXIgb3ZlcnJpZGVzIHByaW9yIGluaXRpYWxpemF0aW9uIG9mIHRoaXMgc3Vib2JqZWN0IiwgMzE1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9pbml0X3B0cl9tZW1iZXJfdG9fcGFyYW1ldGVyX2FkZHIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluaXRpYWxpemluZyBwb2ludGVyIG1lbWJlciAlMCB3aXRoIHRoZSBzdGFjayBhZGRyZXNzIG9mICVzZWxlY3R7dmFyaWFibGV8cGFyYW1ldGVyfTIgJTEiLCAxNTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2luaXRpYWxpemVyX291dF9vZl9vcmRlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHtmaWVsZHxiYXNlIGNsYXNzfTAgJTEgd2lsbCBiZSBpbml0aWFsaXplZCBhZnRlciAlc2VsZWN0e2ZpZWxkfGJhc2V9MiAlMyIsIDU2NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faW5pdGlhbGl6ZXJfb3ZlcnJpZGVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbml0aWFsaXplciBvdmVycmlkZXMgcHJpb3IgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyBzdWJvYmplY3QiLCAzMjQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX2lubGluZV9uYW1lc3BhY2VfcmVvcGVuZWRfbm9uaW5saW5lLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbmxpbmUgbmFtZXNwYWNlIHJlb3BlbmVkIGFzIGEgbm9uLWlubGluZSBuYW1lc3BhY2UiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9pbnN0X21ldGhvZF9ub3RfZm91bmQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluc3RhbmNlIG1ldGhvZCAlb2JqY2luc3RhbmNlMCBub3QgZm91bmQgKHJldHVybiB0eXBlIGRlZmF1bHRzIHRvICdpZCcpIiwgNDY1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9pbnN0YW5jZV9tZXRob2Rfbm90X2ZvdW5kX3dpdGhfdHlwbywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5zdGFuY2UgbWV0aG9kICVvYmpjaW5zdGFuY2UwIG5vdCBmb3VuZCAocmV0dXJuIHR5cGUgZGVmYXVsdHMgdG8gJ2lkJyk7IGRpZCB5b3UgbWVhbiAlb2JqY2luc3RhbmNlMj8iLCA0NjUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2luc3RhbmNlX21ldGhvZF9vbl9jbGFzc19mb3VuZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5zdGFuY2UgbWV0aG9kICUwIGZvdW5kIGluc3RlYWQgb2YgY2xhc3MgbWV0aG9kICUxIiwgNDY1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9pbnRfdG9fcG9pbnRlcl9jYXN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjYXN0IHRvICUxIGZyb20gc21hbGxlciBpbnRlZ2VyIHR5cGUgJTAiLCAzMjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2ludF90b192b2lkX3BvaW50ZXJfY2FzdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2FzdCB0byAlMSBmcm9tIHNtYWxsZXIgaW50ZWdlciB0eXBlICUwIiwgMzI0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9pbnRlcm5hbF9saW5rYWdlX2xvY2FsX3N0b3JhZ2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidpbnRlcm5hbF9saW5rYWdlJyBhdHRyaWJ1dGUgb24gYSBub24tc3RhdGljIGxvY2FsIHZhcmlhYmxlIGlzIGlnbm9yZWQiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2luc3RfbWV0aG9kX25vdF9mb3VuZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5zdGFuY2UgbWV0aG9kICVvYmpjaW5zdGFuY2UwIG5vdCBmb3VuZCAocmV0dXJuIHR5cGUgZGVmYXVsdHMgdG8gJ2lkJykiLCA0NzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2luc3RhbmNlX21ldGhvZF9ub3RfZm91bmRfd2l0aF90eXBvLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbnN0YW5jZSBtZXRob2QgJW9iamNpbnN0YW5jZTAgbm90IGZvdW5kIChyZXR1cm4gdHlwZSBkZWZhdWx0cyB0byAnaWQnKTsgZGlkIHlvdSBtZWFuICVvYmpjaW5zdGFuY2UyPyIsIDQ3NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faW5zdGFuY2VfbWV0aG9kX29uX2NsYXNzX2ZvdW5kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbnN0YW5jZSBtZXRob2QgJTAgZm91bmQgaW5zdGVhZCBvZiBjbGFzcyBtZXRob2QgJTEiLCA0NzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2ludF90b19wb2ludGVyX2Nhc3QsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNhc3QgdG8gJTEgZnJvbSBzbWFsbGVyIGludGVnZXIgdHlwZSAlMCIsIDMzMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faW50X3RvX3ZvaWRfcG9pbnRlcl9jYXN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjYXN0IHRvICUxIGZyb20gc21hbGxlciBpbnRlZ2VyIHR5cGUgJTAiLCAzMzMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2ludGVybmFsX2xpbmthZ2VfbG9jYWxfc3RvcmFnZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ2ludGVybmFsX2xpbmthZ2UnIGF0dHJpYnV0ZSBvbiBhIG5vbi1zdGF0aWMgbG9jYWwgdmFyaWFibGUgaXMgaWdub3JlZCIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faW50ZXJydXB0X2F0dHJpYnV0ZV9pbnZhbGlkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0e01JUFN8TVNQNDMwfFJJU0MtVn0wICdpbnRlcnJ1cHQnIGF0dHJpYnV0ZSBvbmx5IGFwcGxpZXMgdG8gZnVuY3Rpb25zIHRoYXQgaGF2ZSAlc2VsZWN0e25vIHBhcmFtZXRlcnN8YSAndm9pZCcgcmV0dXJuIHR5cGV9MSIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5faW52YWxpZF9hc21fY2FzdF9sdmFsdWUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImludmFsaWQgdXNlIG9mIGEgY2FzdCBpbiBhbiBpbmxpbmUgYXNtIGNvbnRleHQgcmVxdWlyaW5nIGFuIGwtdmFsdWU6IGFjY2VwdGVkIGR1ZSB0byAtZmhlaW5vdXMtZ251LWV4dGVuc2lvbnMsIGJ1dCBjbGFuZyBtYXkgcmVtb3ZlIHN1cHBvcnQgZm9yIHRoaXMgaW4gdGhlIGZ1dHVyZSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxMikKLURJQUcod2Fybl9pbnZhbGlkX2NhcGFiaWxpdHlfbmFtZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW52YWxpZCBjYXBhYmlsaXR5IG5hbWUgJyUwJzsgY2FwYWJpbGl0eSBuYW1lIG11c3QgYmUgJ211dGV4JyBvciAncm9sZSciLCA2NTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2ludmFsaWRfaW5pdGlhbGl6ZXJfZnJvbV9zeXN0ZW1faGVhZGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbnZhbGlkIGNvbnN0cnVjdG9yIGZvcm0gY2xhc3MgaW4gc3lzdGVtIGhlYWRlciwgc2hvdWxkIG5vdCBiZSBleHBsaWNpdCIsIDMyOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5faXZhcl91c2VfaGlkZGVuLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJsb2NhbCBkZWNsYXJhdGlvbiBvZiAlMCBoaWRlcyBpbnN0YW5jZSB2YXJpYWJsZSIsIDU4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5faXZhcnNfaW5faW50ZXJmYWNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJkZWNsYXJhdGlvbiBvZiBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gdGhlIGludGVyZmFjZSBpcyBkZXByZWNhdGVkIiwgNDYwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9qdW1wX291dF9vZl9zZWhfZmluYWxseSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAianVtcCBvdXQgb2YgX19maW5hbGx5IGJsb2NrIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IiLCAzMzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2tlcm5faXNfaW5saW5lLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpZ25vcmVkICdpbmxpbmUnIGF0dHJpYnV0ZSBvbiBrZXJuZWwgZnVuY3Rpb24gJTAiLCAxNDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2tlcm5faXNfbWV0aG9kLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImtlcm5lbCBmdW5jdGlvbiAlMCBpcyBhIG1lbWJlciBmdW5jdGlvbjsgdGhpcyBtYXkgbm90IGJlIGFjY2VwdGVkIGJ5IG52Y2MiLCAxNDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX2xvY2tfZXhjbHVzaXZlX2FuZF9zaGFyZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUwICclMScgaXMgYWNxdWlyZWQgZXhjbHVzaXZlbHkgYW5kIHNoYXJlZCBpbiB0aGUgc2FtZSBzY29wZSIsIDY0OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbG9ja19zb21lX3ByZWRlY2Vzc29ycywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgJyUxJyBpcyBub3QgaGVsZCBvbiBldmVyeSBwYXRoIHRocm91Z2ggaGVyZSIsIDY0OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbG9naWNhbF9hbmRfaW5fbG9naWNhbF9vciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJyYmJyB3aXRoaW4gJ3x8JyIsIDM1MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbG9naWNhbF9pbnN0ZWFkX29mX2JpdHdpc2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzZSBvZiBsb2dpY2FsICclMCcgd2l0aCBjb25zdGFudCBvcGVyYW5kIiwgMTMzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9sb2dpY2FsX25vdF9vbl9saHNfb2ZfY2hlY2ssIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImxvZ2ljYWwgbm90IGlzIG9ubHkgYXBwbGllZCB0byB0aGUgbGVmdCBoYW5kIHNpZGUgb2YgdGhpcyAlc2VsZWN0e2NvbXBhcmlzb258Yml0d2lzZSBvcGVyYXRvcn0wIiwgMzQ5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9sb29wX2N0cmxfYmluZHNfdG9faW5uZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiclMCcgaXMgYm91bmQgdG8gY3VycmVudCBsb29wLCBHQ0MgYmluZHMgaXQgdG8gdGhlIGVuY2xvc2luZyBsb29wIiwgMjQyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9sb29wX3N0YXRlX21pc21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJzdGF0ZSBvZiB2YXJpYWJsZSAnJTAnIG11c3QgbWF0Y2ggYXQgdGhlIGVudHJ5IGFuZCBleGl0IG9mIGxvb3AiLCAxMzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX21haW5fb25lX2FyZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib25seSBvbmUgcGFyYW1ldGVyIG9uICdtYWluJyBkZWNsYXJhdGlvbiIsIDM1NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbWFpbl9yZWRlZmluZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInZhcmlhYmxlIG5hbWVkICdtYWluJyB3aXRoIGV4dGVybmFsIGxpbmthZ2UgaGFzIHVuZGVmaW5lZCBiZWhhdmlvciIsIDM1NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbWFpbl9yZXR1cm5zX2Jvb2xfbGl0ZXJhbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYm9vbCBsaXRlcmFsIHJldHVybmVkIGZyb20gJ21haW4nIiwgMzU0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9tYXhfdW5zaWduZWRfemVybywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidGFraW5nIHRoZSBtYXggb2YgJXNlbGVjdHthIHZhbHVlIGFuZCB1bnNpZ25lZCB6ZXJvfHVuc2lnbmVkIHplcm8gYW5kIGEgdmFsdWV9MCBpcyBhbHdheXMgZXF1YWwgdG8gdGhlIG90aGVyIHZhbHVlIiwgMzU4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9tYXliZV9mYWxsb2ZmX25vbnZvaWRfY29yb3V0aW5lLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb250cm9sIG1heSByZWFjaCBlbmQgb2YgY29yb3V0aW5lOyB3aGljaCBpcyB1bmRlZmluZWQgYmVoYXZpb3IgYmVjYXVzZSB0aGUgcHJvbWlzZSB0eXBlICUwIGRvZXMgbm90IGRlY2xhcmUgJ3JldHVybl92b2lkKCknIiwgNTYzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9tYXliZV9mYWxsb2ZmX25vbnZvaWRfZnVuY3Rpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbnRyb2wgbWF5IHJlYWNoIGVuZCBvZiBub24tdm9pZCBmdW5jdGlvbiIsIDU2MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbWF5YmVfZmFsbG9mZl9ub252b2lkX2xhbWJkYSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29udHJvbCBtYXkgcmVhY2ggZW5kIG9mIG5vbi12b2lkIGxhbWJkYSIsIDU2MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMpCi1ESUFHKHdhcm5fbWF5YmVfdW5pbml0X3ZhciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidmFyaWFibGUgJTAgbWF5IGJlIHVuaW5pdGlhbGl6ZWQgd2hlbiAlc2VsZWN0e3VzZWQgaGVyZXxjYXB0dXJlZCBieSBibG9ja30xIiwgMTMwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9pbnZhbGlkX2NhcGFiaWxpdHlfbmFtZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW52YWxpZCBjYXBhYmlsaXR5IG5hbWUgJyUwJzsgY2FwYWJpbGl0eSBuYW1lIG11c3QgYmUgJ211dGV4JyBvciAncm9sZSciLCA2NjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2ludmFsaWRfaW5pdGlhbGl6ZXJfZnJvbV9zeXN0ZW1faGVhZGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbnZhbGlkIGNvbnN0cnVjdG9yIGZvcm0gY2xhc3MgaW4gc3lzdGVtIGhlYWRlciwgc2hvdWxkIG5vdCBiZSBleHBsaWNpdCIsIDMzOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faXZhcl91c2VfaGlkZGVuLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJsb2NhbCBkZWNsYXJhdGlvbiBvZiAlMCBoaWRlcyBpbnN0YW5jZSB2YXJpYWJsZSIsIDU5NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5faXZhcnNfaW5faW50ZXJmYWNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJkZWNsYXJhdGlvbiBvZiBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gdGhlIGludGVyZmFjZSBpcyBkZXByZWNhdGVkIiwgNDcwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9qdW1wX291dF9vZl9zZWhfZmluYWxseSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAianVtcCBvdXQgb2YgX19maW5hbGx5IGJsb2NrIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IiLCAzNDgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2tlcm5faXNfaW5saW5lLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpZ25vcmVkICdpbmxpbmUnIGF0dHJpYnV0ZSBvbiBrZXJuZWwgZnVuY3Rpb24gJTAiLCAxNDcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2tlcm5faXNfbWV0aG9kLCBDTEFTU19FWFRFTlNJT04sICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImtlcm5lbCBmdW5jdGlvbiAlMCBpcyBhIG1lbWJlciBmdW5jdGlvbjsgdGhpcyBtYXkgbm90IGJlIGFjY2VwdGVkIGJ5IG52Y2MiLCAxNDcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX2xvY2tfZXhjbHVzaXZlX2FuZF9zaGFyZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUwICclMScgaXMgYWNxdWlyZWQgZXhjbHVzaXZlbHkgYW5kIHNoYXJlZCBpbiB0aGUgc2FtZSBzY29wZSIsIDY2MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbG9ja19zb21lX3ByZWRlY2Vzc29ycywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgJyUxJyBpcyBub3QgaGVsZCBvbiBldmVyeSBwYXRoIHRocm91Z2ggaGVyZSIsIDY2MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbG9naWNhbF9hbmRfaW5fbG9naWNhbF9vciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJyYmJyB3aXRoaW4gJ3x8JyIsIDM1OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbG9naWNhbF9pbnN0ZWFkX29mX2JpdHdpc2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzZSBvZiBsb2dpY2FsICclMCcgd2l0aCBjb25zdGFudCBvcGVyYW5kIiwgMTM0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9sb2dpY2FsX25vdF9vbl9saHNfb2ZfY2hlY2ssIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImxvZ2ljYWwgbm90IGlzIG9ubHkgYXBwbGllZCB0byB0aGUgbGVmdCBoYW5kIHNpZGUgb2YgdGhpcyAlc2VsZWN0e2NvbXBhcmlzb258Yml0d2lzZSBvcGVyYXRvcn0wIiwgMzU4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9sb29wX2N0cmxfYmluZHNfdG9faW5uZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiclMCcgaXMgYm91bmQgdG8gY3VycmVudCBsb29wLCBHQ0MgYmluZHMgaXQgdG8gdGhlIGVuY2xvc2luZyBsb29wIiwgMjUwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9sb29wX3N0YXRlX21pc21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJzdGF0ZSBvZiB2YXJpYWJsZSAnJTAnIG11c3QgbWF0Y2ggYXQgdGhlIGVudHJ5IGFuZCBleGl0IG9mIGxvb3AiLCAxMzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX21haW5fb25lX2FyZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib25seSBvbmUgcGFyYW1ldGVyIG9uICdtYWluJyBkZWNsYXJhdGlvbiIsIDM2MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbWFpbl9yZWRlZmluZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInZhcmlhYmxlIG5hbWVkICdtYWluJyB3aXRoIGV4dGVybmFsIGxpbmthZ2UgaGFzIHVuZGVmaW5lZCBiZWhhdmlvciIsIDM2MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbWFpbl9yZXR1cm5zX2Jvb2xfbGl0ZXJhbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYm9vbCBsaXRlcmFsIHJldHVybmVkIGZyb20gJ21haW4nIiwgMzYzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9tYXhfdW5zaWduZWRfemVybywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidGFraW5nIHRoZSBtYXggb2YgJXNlbGVjdHthIHZhbHVlIGFuZCB1bnNpZ25lZCB6ZXJvfHVuc2lnbmVkIHplcm8gYW5kIGEgdmFsdWV9MCBpcyBhbHdheXMgZXF1YWwgdG8gdGhlIG90aGVyIHZhbHVlIiwgMzY3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9tYXliZV9mYWxsb2ZmX25vbnZvaWRfY29yb3V0aW5lLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb250cm9sIG1heSByZWFjaCBlbmQgb2YgY29yb3V0aW5lOyB3aGljaCBpcyB1bmRlZmluZWQgYmVoYXZpb3IgYmVjYXVzZSB0aGUgcHJvbWlzZSB0eXBlICUwIGRvZXMgbm90IGRlY2xhcmUgJ3JldHVybl92b2lkKCknIiwgNTc1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9tYXliZV9mYWxsb2ZmX25vbnZvaWRfZnVuY3Rpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbnRyb2wgbWF5IHJlYWNoIGVuZCBvZiBub24tdm9pZCBmdW5jdGlvbiIsIDU3NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbWF5YmVfZmFsbG9mZl9ub252b2lkX2xhbWJkYSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29udHJvbCBtYXkgcmVhY2ggZW5kIG9mIG5vbi12b2lkIGxhbWJkYSIsIDU3NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMpCitESUFHKHdhcm5fbWF5YmVfdW5pbml0X3ZhciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidmFyaWFibGUgJTAgbWF5IGJlIHVuaW5pdGlhbGl6ZWQgd2hlbiAlc2VsZWN0e3VzZWQgaGVyZXxjYXB0dXJlZCBieSBibG9ja30xIiwgMTMxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9tYXlub3RfcmVzcG9uZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgbWF5IG5vdCByZXNwb25kIHRvICUxIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbWVtYmVyX2V4dHJhX3F1YWxpZmljYXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4dHJhIHF1YWxpZmljYXRpb24gb24gbWVtYmVyICUwIiwgMzc2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9tZW1iZXJfZXh0cmFfcXVhbGlmaWNhdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXh0cmEgcXVhbGlmaWNhdGlvbiBvbiBtZW1iZXIgJTAiLCAzODUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX21lbWNweV9jaGtfb3ZlcmZsb3csIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiclMCcgd2lsbCBhbHdheXMgb3ZlcmZsb3c7IGRlc3RpbmF0aW9uIGJ1ZmZlciBoYXMgc2l6ZSAlMSwgYnV0IHNpemUgYXJndW1lbnQgaXMgJTIiLCA2OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbWVtc2l6ZV9jb21wYXJpc29uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzaXplIGFyZ3VtZW50IGluICUwIGNhbGwgaXMgYSBjb21wYXJpc29uIiwgMzYwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9tZXNzYWdpbmdfdW5xdWFsaWZpZWRfaWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm1lc3NhZ2luZyB1bnF1YWxpZmllZCBpZCIsIDQ2NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbWlwc19pbnRlcnJ1cHRfYXR0cmlidXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJNSVBTICdpbnRlcnJ1cHQnIGF0dHJpYnV0ZSBvbmx5IGFwcGxpZXMgdG8gZnVuY3Rpb25zIHRoYXQgaGF2ZSAlc2VsZWN0e25vIHBhcmFtZXRlcnN8YSAndm9pZCcgcmV0dXJuIHR5cGV9MCIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbWVtc2l6ZV9jb21wYXJpc29uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzaXplIGFyZ3VtZW50IGluICUwIGNhbGwgaXMgYSBjb21wYXJpc29uIiwgMzY5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9tZXNzYWdpbmdfdW5xdWFsaWZpZWRfaWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm1lc3NhZ2luZyB1bnF1YWxpZmllZCBpZCIsIDQ3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fbWlzbWF0Y2hlZF9hdmFpbGFiaWxpdHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImF2YWlsYWJpbGl0eSBkb2VzIG5vdCBtYXRjaCBwcmV2aW91cyBkZWNsYXJhdGlvbiIsIDUyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9taXNtYXRjaGVkX2F2YWlsYWJpbGl0eV9vdmVycmlkZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHt8b3ZlcnJpZGluZyB9NG1ldGhvZCAlc2VsZWN0e2ludHJvZHVjZWQgYWZ0ZXJ8ZGVwcmVjYXRlZCBiZWZvcmV8b2Jzb2xldGVkIGJlZm9yZX0wICVzZWxlY3R7dGhlIHByb3RvY29sIG1ldGhvZCBpdCBpbXBsZW1lbnRzfG92ZXJyaWRkZW4gbWV0aG9kfTQgb24gJTEgKCUyIHZzLiAlMykiLCA1MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fbWlzbWF0Y2hlZF9hdmFpbGFiaWxpdHlfb3ZlcnJpZGVfdW5hdmFpbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHt8b3ZlcnJpZGluZyB9MW1ldGhvZCBjYW5ub3QgYmUgdW5hdmFpbGFibGUgb24gJTAgd2hlbiAlc2VsZWN0e3RoZSBwcm90b2NvbCBtZXRob2QgaXQgaW1wbGVtZW50c3xpdHMgb3ZlcnJpZGRlbiBtZXRob2R9MSBpcyBhdmFpbGFibGUiLCA1MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbWlzbWF0Y2hlZF9kZWxldGVfbmV3LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInZGVsZXRlJXNlbGVjdHt8W119MCcgYXBwbGllZCB0byBhIHBvaW50ZXIgdGhhdCB3YXMgYWxsb2NhdGVkIHdpdGggJ25ldyVzZWxlY3R7W118fTAnOyBkaWQgeW91IG1lYW4gJ2RlbGV0ZSVzZWxlY3R7W118fTAnPyIsIDM5MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbWlzbWF0Y2hlZF9udWxsYWJpbGl0eV9hdHRyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJudWxsYWJpbGl0eSBzcGVjaWZpZXIgJTAgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcgc3BlY2lmaWVyICUxIiwgNDQ3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTkpCi1ESUFHKHdhcm5fbWlzbWF0Y2hlZF9zZWN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0e2NvZGVzZWd8c2VjdGlvbn0wIGRvZXMgbm90IG1hdGNoIHByZXZpb3VzIGRlY2xhcmF0aW9uIiwgNTY2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9taXNzaW5nX2JyYWNlcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAic3VnZ2VzdCBicmFjZXMgYXJvdW5kIGluaXRpYWxpemF0aW9uIG9mIHN1Ym9iamVjdCIsIDM5NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbWlzc2luZ19jYXNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlcGx1cmFsezE6ZW51bWVyYXRpb24gdmFsdWUgJTEgbm90IGhhbmRsZWQgaW4gc3dpdGNofDI6ZW51bWVyYXRpb24gdmFsdWVzICUxIGFuZCAlMiBub3QgaGFuZGxlZCBpbiBzd2l0Y2h8MzplbnVtZXJhdGlvbiB2YWx1ZXMgJTEsICUyLCBhbmQgJTMgbm90IGhhbmRsZWQgaW4gc3dpdGNofDolMCBlbnVtZXJhdGlvbiB2YWx1ZXMgbm90IGhhbmRsZWQgaW4gc3dpdGNoOiAlMSwgJTIsICUzLi4ufTAiLCA2MzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX21pc21hdGNoZWRfZGVsZXRlX25ldywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ2RlbGV0ZSVzZWxlY3R7fFtdfTAnIGFwcGxpZWQgdG8gYSBwb2ludGVyIHRoYXQgd2FzIGFsbG9jYXRlZCB3aXRoICduZXclc2VsZWN0e1tdfH0wJzsgZGlkIHlvdSBtZWFuICdkZWxldGUlc2VsZWN0e1tdfH0wJz8iLCA0MDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX21pc21hdGNoZWRfbnVsbGFiaWxpdHlfYXR0ciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibnVsbGFiaWxpdHkgc3BlY2lmaWVyICUwIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIHNwZWNpZmllciAlMSIsIDQ1NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE5KQorRElBRyh3YXJuX21pc21hdGNoZWRfc2VjdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHtjb2Rlc2VnfHNlY3Rpb259MCBkb2VzIG5vdCBtYXRjaCBwcmV2aW91cyBkZWNsYXJhdGlvbiIsIDU3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbWlzc2luZ19icmFjZXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInN1Z2dlc3QgYnJhY2VzIGFyb3VuZCBpbml0aWFsaXphdGlvbiBvZiBzdWJvYmplY3QiLCA0MDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX21pc3NpbmdfY2FzZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXBsdXJhbHsxOmVudW1lcmF0aW9uIHZhbHVlICUxIG5vdCBoYW5kbGVkIGluIHN3aXRjaHwyOmVudW1lcmF0aW9uIHZhbHVlcyAlMSBhbmQgJTIgbm90IGhhbmRsZWQgaW4gc3dpdGNofDM6ZW51bWVyYXRpb24gdmFsdWVzICUxLCAlMiwgYW5kICUzIG5vdCBoYW5kbGVkIGluIHN3aXRjaHw6JTAgZW51bWVyYXRpb24gdmFsdWVzIG5vdCBoYW5kbGVkIGluIHN3aXRjaDogJTEsICUyLCAlMy4uLn0wIiwgNjQ0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9taXNzaW5nX2Nhc2VfZm9yX2NvbmRpdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibm8gY2FzZSBtYXRjaGluZyBjb25zdGFudCBzd2l0Y2ggY29uZGl0aW9uICclMCciLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9taXNzaW5nX2V4cGxpY2l0X3N5bnRoZXNpcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYXV0byBwcm9wZXJ0eSBzeW50aGVzaXMgaXMgc3ludGhlc2l6aW5nIHByb3BlcnR5IG5vdCBleHBsaWNpdGx5IHN5bnRoZXNpemVkIiwgNDY2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibWlzc2luZyBmaWVsZCAlMCBpbml0aWFsaXplciIsIDM5OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbWlzc2luZ19mb3JtYXRfc3RyaW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmb3JtYXQgc3RyaW5nIG1pc3NpbmciLCAyMjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKLURJQUcod2Fybl9taXNzaW5nX21ldGhvZF9yZXR1cm5fdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibWV0aG9kIGhhcyBubyByZXR1cm4gdHlwZSBzcGVjaWZpZWQ7IGRlZmF1bHRzIHRvICdpZCciLCA0MDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX21pc3NpbmdfcHJvdG90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJubyBwcmV2aW91cyBwcm90b3R5cGUgZm9yIGZ1bmN0aW9uICUwIiwgNDA1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9taXNzaW5nX3NlbnRpbmVsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtaXNzaW5nIHNlbnRpbmVsIGluICVzZWxlY3R7ZnVuY3Rpb24gY2FsbHxtZXRob2QgZGlzcGF0Y2h8YmxvY2sgY2FsbH0wIiwgNTc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9taXNzaW5nX3ZhcmlhYmxlX2RlY2xhcmF0aW9ucywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibm8gcHJldmlvdXMgZXh0ZXJuIGRlY2xhcmF0aW9uIGZvciBub24tc3RhdGljIHZhcmlhYmxlICUwIiwgNDA4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9taXhlZF9zaWduX2NvbXBhcmlzb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbXBhcmlzb24gb2YgaW50ZWdlcnMgb2YgZGlmZmVyZW50IHNpZ25zOiAlMCBhbmQgJTEiLCA1OTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX21vZGlmeWluZ19zaGFkb3dpbmdfZGVjbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibW9kaWZ5aW5nIGNvbnN0cnVjdG9yIHBhcmFtZXRlciAlMCB0aGF0IHNoYWRvd3MgYSBmaWVsZCBvZiAlMSIsIDU4MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbXVsdGlwbGVfbWV0aG9kX2RlY2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm11bHRpcGxlIG1ldGhvZHMgbmFtZWQgJTAgZm91bmQiLCA0NjgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX211bHRpcGxlX3NlbGVjdG9ycywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAic2V2ZXJhbCBtZXRob2RzIHdpdGggc2VsZWN0b3IgJTAgb2YgbWlzbWF0Y2hlZCB0eXBlcyBhcmUgZm91bmQgZm9yIHRoZSBAc2VsZWN0b3IgZXhwcmVzc2lvbiIsIDU2OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbXVsdGl2ZXJzaW9uX2R1cGxpY2F0ZV9lbnRyaWVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJDUFUgbGlzdCBjb250YWlucyBkdXBsaWNhdGUgZW50cmllczsgYXR0cmlidXRlIGlnbm9yZWQiLCAyNDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX25hbWVzcGFjZV9tZW1iZXJfZXh0cmFfcXVhbGlmaWNhdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXh0cmEgcXVhbGlmaWNhdGlvbiBvbiBtZW1iZXIgJTAiLCAyMTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX25lb25fdmVjdG9yX2luaXRpYWxpemVyX25vbl9wb3J0YWJsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidmVjdG9yIGluaXRpYWxpemVycyBhcmUgbm90IGNvbXBhdGlibGUgd2l0aCBORU9OIGludHJpbnNpY3MgaW4gYmlnIGVuZGlhbiBtb2RlIiwgNDM4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9uZXdfZGFuZ2xpbmdfaW5pdGlhbGl6ZXJfbGlzdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXJyYXkgYmFja2luZyAlc2VsZWN0e2luaXRpYWxpemVyIGxpc3Qgc3Vib2JqZWN0IG9mIHRoZSBhbGxvY2F0ZWQgb2JqZWN0fHRoZSBhbGxvY2F0ZWQgaW5pdGlhbGl6ZXIgbGlzdH0wIHdpbGwgYmUgZGVzdHJveWVkIGF0IHRoZSBlbmQgb2YgdGhlIGZ1bGwtZXhwcmVzc2lvbiIsIDE0OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbmV3X2RhbmdsaW5nX3JlZmVyZW5jZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidGVtcG9yYXJ5IGJvdW5kIHRvIHJlZmVyZW5jZSBtZW1iZXIgb2YgYWxsb2NhdGVkIG9iamVjdCB3aWxsIGJlIGRlc3Ryb3llZCBhdCB0aGUgZW5kIG9mIHRoZSBmdWxsLWV4cHJlc3Npb24iLCAxNDgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX25vX2F1dG9zeW50aGVzaXNfcHJvcGVydHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImF1dG8gcHJvcGVydHkgc3ludGhlc2lzIHdpbGwgbm90IHN5bnRoZXNpemUgcHJvcGVydHkgJTAgYmVjYXVzZSBpdCBpcyAncmVhZHdyaXRlJyBidXQgaXQgd2lsbCBiZSBzeW50aGVzaXplZCAncmVhZG9ubHknIHZpYSBhbm90aGVyIHByb3BlcnR5IiwgNDc2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9ub19hdXRvc3ludGhlc2lzX3NoYXJlZF9pdmFyX3Byb3BlcnR5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhdXRvIHByb3BlcnR5IHN5bnRoZXNpcyB3aWxsIG5vdCBzeW50aGVzaXplIHByb3BlcnR5ICUwIGJlY2F1c2UgaXQgY2Fubm90IHNoYXJlIGFuIGl2YXIgd2l0aCBhbm90aGVyIHN5bnRoZXNpemVkIHByb3BlcnR5IiwgNDc2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9taXNzaW5nX2V4cGxpY2l0X3N5bnRoZXNpcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYXV0byBwcm9wZXJ0eSBzeW50aGVzaXMgaXMgc3ludGhlc2l6aW5nIHByb3BlcnR5IG5vdCBleHBsaWNpdGx5IHN5bnRoZXNpemVkIiwgNDc2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibWlzc2luZyBmaWVsZCAlMCBpbml0aWFsaXplciIsIDQwNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbWlzc2luZ19mb3JtYXRfc3RyaW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmb3JtYXQgc3RyaW5nIG1pc3NpbmciLCAyMzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKK0RJQUcod2Fybl9taXNzaW5nX21ldGhvZF9yZXR1cm5fdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibWV0aG9kIGhhcyBubyByZXR1cm4gdHlwZSBzcGVjaWZpZWQ7IGRlZmF1bHRzIHRvICdpZCciLCA0MTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX21pc3NpbmdfcHJvdG90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJubyBwcmV2aW91cyBwcm90b3R5cGUgZm9yIGZ1bmN0aW9uICUwIiwgNDE0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9taXNzaW5nX3NlbnRpbmVsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtaXNzaW5nIHNlbnRpbmVsIGluICVzZWxlY3R7ZnVuY3Rpb24gY2FsbHxtZXRob2QgZGlzcGF0Y2h8YmxvY2sgY2FsbH0wIiwgNTg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9taXNzaW5nX3ZhcmlhYmxlX2RlY2xhcmF0aW9ucywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibm8gcHJldmlvdXMgZXh0ZXJuIGRlY2xhcmF0aW9uIGZvciBub24tc3RhdGljIHZhcmlhYmxlICUwIiwgNDE3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9taXhlZF9zaWduX2NvbXBhcmlzb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbXBhcmlzb24gb2YgaW50ZWdlcnMgb2YgZGlmZmVyZW50IHNpZ25zOiAlMCBhbmQgJTEiLCA2MDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX21vZGlmeWluZ19zaGFkb3dpbmdfZGVjbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibW9kaWZ5aW5nIGNvbnN0cnVjdG9yIHBhcmFtZXRlciAlMCB0aGF0IHNoYWRvd3MgYSBmaWVsZCBvZiAlMSIsIDU5MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbXVsdGlwbGVfbWV0aG9kX2RlY2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm11bHRpcGxlIG1ldGhvZHMgbmFtZWQgJTAgZm91bmQiLCA0NzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX211bHRpcGxlX3NlbGVjdG9ycywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAic2V2ZXJhbCBtZXRob2RzIHdpdGggc2VsZWN0b3IgJTAgb2YgbWlzbWF0Y2hlZCB0eXBlcyBhcmUgZm91bmQgZm9yIHRoZSBAc2VsZWN0b3IgZXhwcmVzc2lvbiIsIDU4MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbXVsdGl2ZXJzaW9uX2R1cGxpY2F0ZV9lbnRyaWVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJDUFUgbGlzdCBjb250YWlucyBkdXBsaWNhdGUgZW50cmllczsgYXR0cmlidXRlIGlnbm9yZWQiLCAyNDgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX25hbWVzcGFjZV9tZW1iZXJfZXh0cmFfcXVhbGlmaWNhdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXh0cmEgcXVhbGlmaWNhdGlvbiBvbiBtZW1iZXIgJTAiLCAyMjEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX25lb25fdmVjdG9yX2luaXRpYWxpemVyX25vbl9wb3J0YWJsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidmVjdG9yIGluaXRpYWxpemVycyBhcmUgbm90IGNvbXBhdGlibGUgd2l0aCBORU9OIGludHJpbnNpY3MgaW4gYmlnIGVuZGlhbiBtb2RlIiwgNDQ4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9uZXdfZGFuZ2xpbmdfaW5pdGlhbGl6ZXJfbGlzdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXJyYXkgYmFja2luZyAlc2VsZWN0e2luaXRpYWxpemVyIGxpc3Qgc3Vib2JqZWN0IG9mIHRoZSBhbGxvY2F0ZWQgb2JqZWN0fHRoZSBhbGxvY2F0ZWQgaW5pdGlhbGl6ZXIgbGlzdH0wIHdpbGwgYmUgZGVzdHJveWVkIGF0IHRoZSBlbmQgb2YgdGhlIGZ1bGwtZXhwcmVzc2lvbiIsIDE1MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbmV3X2RhbmdsaW5nX3JlZmVyZW5jZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidGVtcG9yYXJ5IGJvdW5kIHRvIHJlZmVyZW5jZSBtZW1iZXIgb2YgYWxsb2NhdGVkIG9iamVjdCB3aWxsIGJlIGRlc3Ryb3llZCBhdCB0aGUgZW5kIG9mIHRoZSBmdWxsLWV4cHJlc3Npb24iLCAxNTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX25vX2F1dG9zeW50aGVzaXNfcHJvcGVydHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImF1dG8gcHJvcGVydHkgc3ludGhlc2lzIHdpbGwgbm90IHN5bnRoZXNpemUgcHJvcGVydHkgJTAgYmVjYXVzZSBpdCBpcyAncmVhZHdyaXRlJyBidXQgaXQgd2lsbCBiZSBzeW50aGVzaXplZCAncmVhZG9ubHknIHZpYSBhbm90aGVyIHByb3BlcnR5IiwgNDg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9ub19hdXRvc3ludGhlc2lzX3NoYXJlZF9pdmFyX3Byb3BlcnR5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhdXRvIHByb3BlcnR5IHN5bnRoZXNpcyB3aWxsIG5vdCBzeW50aGVzaXplIHByb3BlcnR5ICUwIGJlY2F1c2UgaXQgY2Fubm90IHNoYXJlIGFuIGl2YXIgd2l0aCBhbm90aGVyIHN5bnRoZXNpemVkIHByb3BlcnR5IiwgNDg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9ub19jb25zdHJ1Y3Rvcl9mb3JfcmVmY29uc3QsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7c3RydWN0fGludGVyZmFjZXx1bmlvbnxjbGFzc3xlbnVtfTAgJTEgZG9lcyBub3QgZGVjbGFyZSBhbnkgY29uc3RydWN0b3IgdG8gaW5pdGlhbGl6ZSBpdHMgbm9uLW1vZGlmaWFibGUgbWVtYmVycyIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX25vX3VuZGVybHlpbmdfdHlwZV9zcGVjaWZpZWRfZm9yX2VudW1fYml0ZmllbGQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImVudW1zIGluIHRoZSBNaWNyb3NvZnQgQUJJIGFyZSBzaWduZWQgaW50ZWdlcnMgYnkgZGVmYXVsdDsgY29uc2lkZXIgZ2l2aW5nIHRoZSBlbnVtICUwIGFuIHVuc2lnbmVkIHVuZGVybHlpbmcgdHlwZSB0byBtYWtlIHRoaXMgY29kZSBwb3J0YWJsZSIsIDU5NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbm9fdW5sb2NrLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlMCAnJTEnIGlzIHN0aWxsIGhlbGQgYXQgdGhlIGVuZCBvZiBmdW5jdGlvbiIsIDY0OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbm9jZl9jaGVja19hdHRyaWJ1dGVfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ25vY2ZfY2hlY2snIGF0dHJpYnV0ZSBpZ25vcmVkOyB1c2UgLWZjZi1wcm90ZWN0aW9uIHRvIGVuYWJsZSB0aGUgYXR0cmlidXRlIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9ub25fY29udHJhdmFyaWFudF9vdmVycmlkaW5nX3BhcmFtX3R5cGVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjb25mbGljdGluZyBwYXJhbWV0ZXIgdHlwZXMgaW4gZGVjbGFyYXRpb24gb2YgJTA6ICUxIHZzICUyIiwgNTA0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9ub25fY29udHJhdmFyaWFudF9wYXJhbV90eXBlcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY29uZmxpY3RpbmcgcGFyYW1ldGVyIHR5cGVzIGluIGltcGxlbWVudGF0aW9uIG9mICUwOiAlMSB2cyAlMiIsIDM2MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbm9uX2NvdmFyaWFudF9vdmVycmlkaW5nX3JldF90eXBlcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY29uZmxpY3RpbmcgcmV0dXJuIHR5cGUgaW4gZGVjbGFyYXRpb24gb2YgJTA6ICUxIHZzICUyIiwgNTA0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9ub25fY292YXJpYW50X3JldF90eXBlcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY29uZmxpY3RpbmcgcmV0dXJuIHR5cGUgaW4gaW1wbGVtZW50YXRpb24gb2YgJTA6ICUxIHZzICUyIiwgMzYxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9ub25fbGl0ZXJhbF9udWxsX3BvaW50ZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cHJlc3Npb24gd2hpY2ggZXZhbHVhdGVzIHRvIHplcm8gdHJlYXRlZCBhcyBhIG51bGwgcG9pbnRlciBjb25zdGFudCBvZiB0eXBlICUwIiwgNDI5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCi1ESUFHKHdhcm5fbm9uX3BvZF92YXJhcmdfd2l0aF9mb3JtYXRfc3RyaW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAiY2Fubm90IHBhc3MgJXNlbGVjdHtub24tUE9EfG5vbi10cml2aWFsfTAgb2JqZWN0IG9mIHR5cGUgJTEgdG8gdmFyaWFkaWMgJXNlbGVjdHtmdW5jdGlvbnxibG9ja3xtZXRob2R8Y29uc3RydWN0b3J9MjsgZXhwZWN0ZWQgdHlwZSBmcm9tIGZvcm1hdCBzdHJpbmcgd2FzICUzIiwgNDMyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9ub25fdmlydHVhbF9kdG9yLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlMCBoYXMgdmlydHVhbCBmdW5jdGlvbnMgYnV0IG5vbi12aXJ0dWFsIGRlc3RydWN0b3IiLCA0MzMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX25vbm51bGxfZXhwcl9jb21wYXJlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb21wYXJpc29uIG9mIG5vbm51bGwgJXNlbGVjdHtmdW5jdGlvbiBjYWxsfHBhcmFtZXRlcn0wICclMScgJXNlbGVjdHtub3QgfH0yZXF1YWwgdG8gYSBudWxsIHBvaW50ZXIgaXMgJyVzZWxlY3R7dHJ1ZXxmYWxzZX0yJyBvbiBmaXJzdCBlbmNvdW50ZXIiLCA2NDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX25vcmV0dXJuX2Z1bmN0aW9uX2hhc19yZXR1cm5fZXhwciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZnVuY3Rpb24gJTAgZGVjbGFyZWQgJ25vcmV0dXJuJyBzaG91bGQgbm90IHJldHVybiIsIDMzMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbm90X2FfZG94eWdlbl90cmFpbGluZ19tZW1iZXJfY29tbWVudCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibm90IGEgRG94eWdlbiB0cmFpbGluZyBjb21tZW50IiwgMTgwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjUpCitESUFHKHdhcm5fbm9fdW5kZXJseWluZ190eXBlX3NwZWNpZmllZF9mb3JfZW51bV9iaXRmaWVsZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZW51bXMgaW4gdGhlIE1pY3Jvc29mdCBBQkkgYXJlIHNpZ25lZCBpbnRlZ2VycyBieSBkZWZhdWx0OyBjb25zaWRlciBnaXZpbmcgdGhlIGVudW0gJTAgYW4gdW5zaWduZWQgdW5kZXJseWluZyB0eXBlIHRvIG1ha2UgdGhpcyBjb2RlIHBvcnRhYmxlIiwgNjA2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9ub191bmxvY2ssIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUwICclMScgaXMgc3RpbGwgaGVsZCBhdCB0aGUgZW5kIG9mIGZ1bmN0aW9uIiwgNjYyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9ub2NmX2NoZWNrX2F0dHJpYnV0ZV9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInbm9jZl9jaGVjaycgYXR0cmlidXRlIGlnbm9yZWQ7IHVzZSAtZmNmLXByb3RlY3Rpb24gdG8gZW5hYmxlIHRoZSBhdHRyaWJ1dGUiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX25vZGVyZWZfb25fbm9uX3BvaW50ZXJfb3JfYXJyYXksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidub2RlcmVmJyBjYW4gb25seSBiZSB1c2VkIG9uIGFuIGFycmF5IG9yIHBvaW50ZXIgdHlwZSIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fbm9kZXJlZl90b19kZXJlZmVyZW5jZWFibGVfcG9pbnRlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2FzdGluZyB0byBkZXJlZmVyZW5jZWFibGUgcG9pbnRlciByZW1vdmVzICdub2RlcmVmJyBhdHRyaWJ1dGUiLCA0MzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQorRElBRyh3YXJuX25vbl9jb250cmF2YXJpYW50X292ZXJyaWRpbmdfcGFyYW1fdHlwZXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImNvbmZsaWN0aW5nIHBhcmFtZXRlciB0eXBlcyBpbiBkZWNsYXJhdGlvbiBvZiAlMDogJTEgdnMgJTIiLCA1MTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX25vbl9jb250cmF2YXJpYW50X3BhcmFtX3R5cGVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjb25mbGljdGluZyBwYXJhbWV0ZXIgdHlwZXMgaW4gaW1wbGVtZW50YXRpb24gb2YgJTA6ICUxIHZzICUyIiwgMzcwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9ub25fY292YXJpYW50X292ZXJyaWRpbmdfcmV0X3R5cGVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjb25mbGljdGluZyByZXR1cm4gdHlwZSBpbiBkZWNsYXJhdGlvbiBvZiAlMDogJTEgdnMgJTIiLCA1MTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX25vbl9jb3ZhcmlhbnRfcmV0X3R5cGVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjb25mbGljdGluZyByZXR1cm4gdHlwZSBpbiBpbXBsZW1lbnRhdGlvbiBvZiAlMDogJTEgdnMgJTIiLCAzNzAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX25vbl9saXRlcmFsX251bGxfcG9pbnRlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwcmVzc2lvbiB3aGljaCBldmFsdWF0ZXMgdG8gemVybyB0cmVhdGVkIGFzIGEgbnVsbCBwb2ludGVyIGNvbnN0YW50IG9mIHR5cGUgJTAiLCA0MzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKK0RJQUcod2Fybl9ub25fcG9kX3ZhcmFyZ193aXRoX2Zvcm1hdF9zdHJpbmcsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJjYW5ub3QgcGFzcyAlc2VsZWN0e25vbi1QT0R8bm9uLXRyaXZpYWx9MCBvYmplY3Qgb2YgdHlwZSAlMSB0byB2YXJpYWRpYyAlc2VsZWN0e2Z1bmN0aW9ufGJsb2NrfG1ldGhvZHxjb25zdHJ1Y3Rvcn0yOyBleHBlY3RlZCB0eXBlIGZyb20gZm9ybWF0IHN0cmluZyB3YXMgJTMiLCA0NDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX25vbl92aXJ0dWFsX2R0b3IsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUwIGhhcyB2aXJ0dWFsIGZ1bmN0aW9ucyBidXQgbm9uLXZpcnR1YWwgZGVzdHJ1Y3RvciIsIDQ0MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbm9ubnVsbF9leHByX2NvbXBhcmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbXBhcmlzb24gb2Ygbm9ubnVsbCAlc2VsZWN0e2Z1bmN0aW9uIGNhbGx8cGFyYW1ldGVyfTAgJyUxJyAlc2VsZWN0e25vdCB8fTJlcXVhbCB0byBhIG51bGwgcG9pbnRlciBpcyAnJXNlbGVjdHt0cnVlfGZhbHNlfTInIG9uIGZpcnN0IGVuY291bnRlciIsIDY1NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbm9yZXR1cm5fZnVuY3Rpb25faGFzX3JldHVybl9leHByLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmdW5jdGlvbiAlMCBkZWNsYXJlZCAnbm9yZXR1cm4nIHNob3VsZCBub3QgcmV0dXJuIiwgMzQwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9ub3RfYV9kb3h5Z2VuX3RyYWlsaW5nX21lbWJlcl9jb21tZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJub3QgYSBEb3h5Z2VuIHRyYWlsaW5nIGNvbW1lbnQiLCAxODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNSkKIERJQUcod2Fybl9ub3RfY29tcG91bmRfYXNzaWduLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2Ugb2YgdW5hcnkgb3BlcmF0b3IgdGhhdCBtYXkgYmUgaW50ZW5kZWQgYXMgY29tcG91bmQgYXNzaWdubWVudCAoJTA9KSIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX25vdF9lbm91Z2hfYXJndW1lbnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm5vdCBlbm91Z2ggdmFyaWFibGUgYXJndW1lbnRzIGluICUwIGRlY2xhcmF0aW9uIHRvIGZpdCBhIHNlbnRpbmVsIiwgNTc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9ub3RfaW5fZW51bSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2FzZSB2YWx1ZSBub3QgaW4gZW51bWVyYXRlZCB0eXBlICUwIiwgNjMxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9ub3RfZW5vdWdoX2FyZ3VtZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJub3QgZW5vdWdoIHZhcmlhYmxlIGFyZ3VtZW50cyBpbiAlMCBkZWNsYXJhdGlvbiB0byBmaXQgYSBzZW50aW5lbCIsIDU4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbm90X2luX2VudW0sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNhc2UgdmFsdWUgbm90IGluIGVudW1lcmF0ZWQgdHlwZSAlMCIsIDY0NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fbm90X2luX2VudW1fYXNzaWdubWVudCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW50ZWdlciBjb25zdGFudCBub3QgaW4gcmFuZ2Ugb2YgZW51bWVyYXRlZCB0eXBlICUwIiwgMzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX25wb3RfbXNfc3RydWN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAibXNfc3RydWN0IG1heSBub3QgcHJvZHVjZSBNaWNyb3NvZnQtY29tcGF0aWJsZSBsYXlvdXRzIHdpdGggZnVuZGFtZW50YWwgZGF0YSB0eXBlcyB3aXRoIHNpemVzIHRoYXQgYXJlbid0IGEgcG93ZXIgb2YgdHdvIiwgMzAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9uc19hdHRyaWJ1dGVfd3JvbmdfcGFyYW1ldGVyX3R5cGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGF0dHJpYnV0ZSBvbmx5IGFwcGxpZXMgdG8gJXNlbGVjdHtPYmplY3RpdmUtQyBvYmplY3R8cG9pbnRlcnxwb2ludGVyLXRvLUNGLXBvaW50ZXJ9MSBwYXJhbWV0ZXJzIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9uc19hdHRyaWJ1dGVfd3JvbmdfcmV0dXJuX3R5cGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGF0dHJpYnV0ZSBvbmx5IGFwcGxpZXMgdG8gJXNlbGVjdHtmdW5jdGlvbnN8bWV0aG9kc3xwcm9wZXJ0aWVzfTEgdGhhdCByZXR1cm4gJXNlbGVjdHthbiBPYmplY3RpdmUtQyBvYmplY3R8YSBwb2ludGVyfGEgbm9uLXJldGFpbmFibGUgcG9pbnRlcn0yIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9uc2NvbnN1bWVkX2F0dHJpYnV0ZV9taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib3ZlcnJpZGluZyBtZXRob2QgaGFzIG1pc21hdGNoZWQgbnNfY29uc3VtZWQgYXR0cmlidXRlIG9uIGl0cyBwYXJhbWV0ZXIiLCA0NDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX25zX2F0dHJpYnV0ZV93cm9uZ19wYXJhbWV0ZXJfdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgYXR0cmlidXRlIG9ubHkgYXBwbGllcyB0byAlc2VsZWN0e09iamVjdGl2ZS1DIG9iamVjdHxwb2ludGVyfHBvaW50ZXItdG8tQ0YtcG9pbnRlcnxwb2ludGVyL3JlZmVyZW5jZS10by1PU09iamVjdC1wb2ludGVyfTEgcGFyYW1ldGVycyIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbnNfYXR0cmlidXRlX3dyb25nX3JldHVybl90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBhdHRyaWJ1dGUgb25seSBhcHBsaWVzIHRvICVzZWxlY3R7ZnVuY3Rpb25zfG1ldGhvZHN8cHJvcGVydGllc30xIHRoYXQgcmV0dXJuICVzZWxlY3R7YW4gT2JqZWN0aXZlLUMgb2JqZWN0fGEgcG9pbnRlcnxhIG5vbi1yZXRhaW5hYmxlIHBvaW50ZXJ9MiIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbnNjb25zdW1lZF9hdHRyaWJ1dGVfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm92ZXJyaWRpbmcgbWV0aG9kIGhhcyBtaXNtYXRjaGVkIG5zX2NvbnN1bWVkIGF0dHJpYnV0ZSBvbiBpdHMgcGFyYW1ldGVyIiwgNDUwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9uc29iamVjdF9hdHRyaWJ1dGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidOU09iamVjdCcgYXR0cmlidXRlIG1heSBiZSBwdXQgb24gYSB0eXBlZGVmIG9ubHk7IGF0dHJpYnV0ZSBpcyBpZ25vcmVkIiwgNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbnNyZXR1cm5zX3JldGFpbmVkX2F0dHJpYnV0ZV9taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib3ZlcnJpZGluZyBtZXRob2QgaGFzIG1pc21hdGNoZWQgbnNfcmV0dXJuc18lc2VsZWN0e25vdF9yZXRhaW5lZHxyZXRhaW5lZH0wIGF0dHJpYnV0ZXMiLCA0NDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX251bGxfYXJnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJudWxsIHBhc3NlZCB0byBhIGNhbGxlZSB0aGF0IHJlcXVpcmVzIGEgbm9uLW51bGwgYXJndW1lbnQiLCA0MzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKLURJQUcod2Fybl9udWxsX2luX2FyaXRobWV0aWNfb3BlcmF0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2Ugb2YgTlVMTCBpbiBhcml0aG1ldGljIG9wZXJhdGlvbiIsIDQ0MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fbnVsbF9pbl9jb21wYXJpc29uX29wZXJhdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29tcGFyaXNvbiBiZXR3ZWVuIE5VTEwgYW5kIG5vbi1wb2ludGVyICVzZWxlY3R7KCUxIGFuZCBOVUxMKXwoTlVMTCBhbmQgJTEpfTAiLCA0NDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX251bGxfcG9pbnRlcl9jb21wYXJlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb21wYXJpc29uIG9mICVzZWxlY3R7YWRkcmVzcyBvZnxmdW5jdGlvbnxhcnJheX0wICclMScgJXNlbGVjdHtub3QgfH0yZXF1YWwgdG8gYSBudWxsIHBvaW50ZXIgaXMgYWx3YXlzICVzZWxlY3R7dHJ1ZXxmYWxzZX0yIiwgNjQyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9udWxsX3Jlc2V0dGFibGVfc2V0dGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzeW50aGVzaXplZCBzZXR0ZXIgJTAgZm9yIG51bGxfcmVzZXR0YWJsZSBwcm9wZXJ0eSAlMSBkb2VzIG5vdCBoYW5kbGUgbmlsIiwgNDQ3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTkpCi1ESUFHKHdhcm5fbnVsbF9yZXQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm51bGwgcmV0dXJuZWQgZnJvbSAlc2VsZWN0e2Z1bmN0aW9ufG1ldGhvZH0wIHRoYXQgcmVxdWlyZXMgYSBub24tbnVsbCByZXR1cm4gdmFsdWUiLCA0MzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKLURJQUcod2Fybl9udWxsYWJpbGl0eV9kZWNsc3BlYywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm51bGxhYmlsaXR5IHNwZWNpZmllciAlMCBjYW5ub3QgYmUgYXBwbGllZCB0byBub24tcG9pbnRlciB0eXBlICUxOyBkaWQgeW91IG1lYW4gdG8gYXBwbHkgdGhlIHNwZWNpZmllciB0byB0aGUgJXNlbGVjdHtwb2ludGVyfGJsb2NrIHBvaW50ZXJ8bWVtYmVyIHBvaW50ZXJ8ZnVuY3Rpb24gcG9pbnRlcnxtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcn0yPyIsIDQ1MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE5KQotRElBRyh3YXJuX251bGxhYmlsaXR5X2luZmVycmVkX29uX25lc3RlZF90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbmZlcnJpbmcgJ19Ob25udWxsJyBmb3IgcG9pbnRlciB0eXBlIHdpdGhpbiAlc2VsZWN0e2FycmF5fHJlZmVyZW5jZX0wIGlzIGRlcHJlY2F0ZWQiLCA0NTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxOSkKLURJQUcod2Fybl9udWxsYWJpbGl0eV9sb3N0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gbnVsbGFibGUgcG9pbnRlciAlMCB0byBub24tbnVsbGFibGUgcG9pbnRlciB0eXBlICUxIiwgNDUzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTkpCi1ESUFHKHdhcm5fbnVsbGFiaWxpdHlfbWlzc2luZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHtwb2ludGVyfGJsb2NrIHBvaW50ZXJ8bWVtYmVyIHBvaW50ZXJ9MCBpcyBtaXNzaW5nIGEgbnVsbGFiaWxpdHkgdHlwZSBzcGVjaWZpZXIgKF9Ob25udWxsLCBfTnVsbGFibGUsIG9yIF9OdWxsX3Vuc3BlY2lmaWVkKSIsIDQ0OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE5KQotRElBRyh3YXJuX251bGxhYmlsaXR5X21pc3NpbmdfYXJyYXksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFycmF5IHBhcmFtZXRlciBpcyBtaXNzaW5nIGEgbnVsbGFiaWxpdHkgdHlwZSBzcGVjaWZpZXIgKF9Ob25udWxsLCBfTnVsbGFibGUsIG9yIF9OdWxsX3Vuc3BlY2lmaWVkKSIsIDQ0OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE5KQotRElBRyh3YXJuX29iamNfY2RpcmVjdGl2ZV9mb3JtYXRfc3RyaW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2luZyAlMCBkaXJlY3RpdmUgaW4gJXNlbGVjdHtOU1N0cmluZ3xDRlN0cmluZ30xIHdoaWNoIGlzIGJlaW5nIHBhc3NlZCBhcyBhIGZvcm1hdHRpbmcgYXJndW1lbnQgdG8gdGhlIGZvcm1hdHRpbmcgJXNlbGVjdHttZXRob2R8Q0ZmdW5jdGlvbn0yIiwgMTQyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9vYmpjX2NpcmN1bGFyX2NvbnRhaW5lciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYWRkaW5nICUwIHRvICUxIG1pZ2h0IGNhdXNlIGNpcmN1bGFyIGRlcGVuZGVuY3kgaW4gY29udGFpbmVyIiwgNDU1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9vYmpjX2NvbGxlY3Rpb25fbGl0ZXJhbF9lbGVtZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvYmplY3Qgb2YgdHlwZSAlMCBpcyBub3QgY29tcGF0aWJsZSB3aXRoICVzZWxlY3R7YXJyYXkgZWxlbWVudCB0eXBlfGRpY3Rpb25hcnkga2V5IHR5cGV8ZGljdGlvbmFyeSB2YWx1ZSB0eXBlfTEgJTIiLCA0NjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKLURJQUcod2Fybl9vYmpjX2Rlc2lnbmF0ZWRfaW5pdF9taXNzaW5nX3N1cGVyX2NhbGwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXIgbWlzc2luZyBhICdzdXBlcicgY2FsbCB0byBhIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXIgb2YgdGhlIHN1cGVyIGNsYXNzIiwgNDU3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9vYmpjX2Rlc2lnbmF0ZWRfaW5pdF9ub25fZGVzaWduYXRlZF9pbml0X2NhbGwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXIgaW52b2tlZCBhIG5vbi1kZXNpZ25hdGVkIGluaXRpYWxpemVyIiwgNDU3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9vYmpjX2Rlc2lnbmF0ZWRfaW5pdF9ub25fc3VwZXJfZGVzaWduYXRlZF9pbml0X2NhbGwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXIgc2hvdWxkIG9ubHkgaW52b2tlIGEgZGVzaWduYXRlZCBpbml0aWFsaXplciBvbiAnc3VwZXInIiwgNDU3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9vYmpjX2ltcGxlbWVudGF0aW9uX21pc3NpbmdfZGVzaWduYXRlZF9pbml0X292ZXJyaWRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtZXRob2Qgb3ZlcnJpZGUgZm9yIHRoZSBkZXNpZ25hdGVkIGluaXRpYWxpemVyIG9mIHRoZSBzdXBlcmNsYXNzICVvYmpjaW5zdGFuY2UwIG5vdCBmb3VuZCIsIDQ1NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbnNyZXR1cm5zX3JldGFpbmVkX2F0dHJpYnV0ZV9taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib3ZlcnJpZGluZyBtZXRob2QgaGFzIG1pc21hdGNoZWQgbnNfcmV0dXJuc18lc2VsZWN0e25vdF9yZXRhaW5lZHxyZXRhaW5lZH0wIGF0dHJpYnV0ZXMiLCA0NTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX251bGxfYXJnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJudWxsIHBhc3NlZCB0byBhIGNhbGxlZSB0aGF0IHJlcXVpcmVzIGEgbm9uLW51bGwgYXJndW1lbnQiLCA0NDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKK0RJQUcod2Fybl9udWxsX2luX2FyaXRobWV0aWNfb3BlcmF0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2Ugb2YgTlVMTCBpbiBhcml0aG1ldGljIG9wZXJhdGlvbiIsIDQ1MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fbnVsbF9pbl9jb21wYXJpc29uX29wZXJhdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29tcGFyaXNvbiBiZXR3ZWVuIE5VTEwgYW5kIG5vbi1wb2ludGVyICVzZWxlY3R7KCUxIGFuZCBOVUxMKXwoTlVMTCBhbmQgJTEpfTAiLCA0NTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX251bGxfcG9pbnRlcl9jb21wYXJlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb21wYXJpc29uIG9mICVzZWxlY3R7YWRkcmVzcyBvZnxmdW5jdGlvbnxhcnJheX0wICclMScgJXNlbGVjdHtub3QgfH0yZXF1YWwgdG8gYSBudWxsIHBvaW50ZXIgaXMgYWx3YXlzICVzZWxlY3R7dHJ1ZXxmYWxzZX0yIiwgNjU1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9udWxsX3Jlc2V0dGFibGVfc2V0dGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzeW50aGVzaXplZCBzZXR0ZXIgJTAgZm9yIG51bGxfcmVzZXR0YWJsZSBwcm9wZXJ0eSAlMSBkb2VzIG5vdCBoYW5kbGUgbmlsIiwgNDU3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTkpCitESUFHKHdhcm5fbnVsbF9yZXQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm51bGwgcmV0dXJuZWQgZnJvbSAlc2VsZWN0e2Z1bmN0aW9ufG1ldGhvZH0wIHRoYXQgcmVxdWlyZXMgYSBub24tbnVsbCByZXR1cm4gdmFsdWUiLCA0NDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKK0RJQUcod2Fybl9udWxsYWJpbGl0eV9kZWNsc3BlYywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm51bGxhYmlsaXR5IHNwZWNpZmllciAlMCBjYW5ub3QgYmUgYXBwbGllZCB0byBub24tcG9pbnRlciB0eXBlICUxOyBkaWQgeW91IG1lYW4gdG8gYXBwbHkgdGhlIHNwZWNpZmllciB0byB0aGUgJXNlbGVjdHtwb2ludGVyfGJsb2NrIHBvaW50ZXJ8bWVtYmVyIHBvaW50ZXJ8ZnVuY3Rpb24gcG9pbnRlcnxtZW1iZXIgZnVuY3Rpb24gcG9pbnRlcn0yPyIsIDQ2MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE5KQorRElBRyh3YXJuX251bGxhYmlsaXR5X2luZmVycmVkX29uX25lc3RlZF90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbmZlcnJpbmcgJ19Ob25udWxsJyBmb3IgcG9pbnRlciB0eXBlIHdpdGhpbiAlc2VsZWN0e2FycmF5fHJlZmVyZW5jZX0wIGlzIGRlcHJlY2F0ZWQiLCA0NjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxOSkKK0RJQUcod2Fybl9udWxsYWJpbGl0eV9sb3N0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gbnVsbGFibGUgcG9pbnRlciAlMCB0byBub24tbnVsbGFibGUgcG9pbnRlciB0eXBlICUxIiwgNDYzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTkpCitESUFHKHdhcm5fbnVsbGFiaWxpdHlfbWlzc2luZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHtwb2ludGVyfGJsb2NrIHBvaW50ZXJ8bWVtYmVyIHBvaW50ZXJ9MCBpcyBtaXNzaW5nIGEgbnVsbGFiaWxpdHkgdHlwZSBzcGVjaWZpZXIgKF9Ob25udWxsLCBfTnVsbGFibGUsIG9yIF9OdWxsX3Vuc3BlY2lmaWVkKSIsIDQ1OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE5KQorRElBRyh3YXJuX251bGxhYmlsaXR5X21pc3NpbmdfYXJyYXksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFycmF5IHBhcmFtZXRlciBpcyBtaXNzaW5nIGEgbnVsbGFiaWxpdHkgdHlwZSBzcGVjaWZpZXIgKF9Ob25udWxsLCBfTnVsbGFibGUsIG9yIF9OdWxsX3Vuc3BlY2lmaWVkKSIsIDQ1OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE5KQorRElBRyh3YXJuX29iamNfY2RpcmVjdGl2ZV9mb3JtYXRfc3RyaW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1c2luZyAlMCBkaXJlY3RpdmUgaW4gJXNlbGVjdHtOU1N0cmluZ3xDRlN0cmluZ30xIHdoaWNoIGlzIGJlaW5nIHBhc3NlZCBhcyBhIGZvcm1hdHRpbmcgYXJndW1lbnQgdG8gdGhlIGZvcm1hdHRpbmcgJXNlbGVjdHttZXRob2R8Q0ZmdW5jdGlvbn0yIiwgMTQzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vYmpjX2NpcmN1bGFyX2NvbnRhaW5lciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYWRkaW5nICUwIHRvICUxIG1pZ2h0IGNhdXNlIGNpcmN1bGFyIGRlcGVuZGVuY3kgaW4gY29udGFpbmVyIiwgNDY1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vYmpjX2NvbGxlY3Rpb25fbGl0ZXJhbF9lbGVtZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvYmplY3Qgb2YgdHlwZSAlMCBpcyBub3QgY29tcGF0aWJsZSB3aXRoICVzZWxlY3R7YXJyYXkgZWxlbWVudCB0eXBlfGRpY3Rpb25hcnkga2V5IHR5cGV8ZGljdGlvbmFyeSB2YWx1ZSB0eXBlfTEgJTIiLCA0NzIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKK0RJQUcod2Fybl9vYmpjX2Rlc2lnbmF0ZWRfaW5pdF9taXNzaW5nX3N1cGVyX2NhbGwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXIgbWlzc2luZyBhICdzdXBlcicgY2FsbCB0byBhIGRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXIgb2YgdGhlIHN1cGVyIGNsYXNzIiwgNDY3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vYmpjX2Rlc2lnbmF0ZWRfaW5pdF9ub25fZGVzaWduYXRlZF9pbml0X2NhbGwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXIgaW52b2tlZCBhIG5vbi1kZXNpZ25hdGVkIGluaXRpYWxpemVyIiwgNDY3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vYmpjX2Rlc2lnbmF0ZWRfaW5pdF9ub25fc3VwZXJfZGVzaWduYXRlZF9pbml0X2NhbGwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlc2lnbmF0ZWQgaW5pdGlhbGl6ZXIgc2hvdWxkIG9ubHkgaW52b2tlIGEgZGVzaWduYXRlZCBpbml0aWFsaXplciBvbiAnc3VwZXInIiwgNDY3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vYmpjX2ltcGxlbWVudGF0aW9uX21pc3NpbmdfZGVzaWduYXRlZF9pbml0X292ZXJyaWRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtZXRob2Qgb3ZlcnJpZGUgZm9yIHRoZSBkZXNpZ25hdGVkIGluaXRpYWxpemVyIG9mIHRoZSBzdXBlcmNsYXNzICVvYmpjaW5zdGFuY2UwIG5vdCBmb3VuZCIsIDQ2NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fb2JqY19pbnZhbGlkX2JyaWRnZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgYnJpZGdlcyB0byAlMSwgbm90ICUyIiwgNjcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX29iamNfaW52YWxpZF9icmlkZ2VfdG9fY2YsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGNhbm5vdCBicmlkZ2UgdG8gJTEiLCA2NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fb2JqY19pc2FfYXNzaWduLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhc3NpZ25tZW50IHRvIE9iamVjdGl2ZS1DJ3MgaXNhIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb2JqZWN0X3NldENsYXNzKCkiLCAxNjQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX29iamNfaXNhX3VzZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGlyZWN0IGFjY2VzcyB0byBPYmplY3RpdmUtQydzIGlzYSBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9iamVjdF9nZXRDbGFzcygpIiwgMTY0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9vYmpjX2xpdGVyYWxfY29tcGFyaXNvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGlyZWN0IGNvbXBhcmlzb24gb2YgJXNlbGVjdHthbiBhcnJheSBsaXRlcmFsfGEgZGljdGlvbmFyeSBsaXRlcmFsfGEgbnVtZXJpYyBsaXRlcmFsfGEgYm94ZWQgZXhwcmVzc2lvbnx9MCBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yIiwgNDYxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9vYmpjX21pc3Npbmdfc3VwZXJfY2FsbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWV0aG9kIHBvc3NpYmx5IG1pc3NpbmcgYSBbc3VwZXIgJTBdIGNhbGwiLCA0NjcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX29iamNfcG9pbnRlcl9jeHhfY2F0Y2hfZnJhZ2lsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2Fubm90IGNhdGNoIGFuIGV4Y2VwdGlvbiB0aHJvd24gd2l0aCBAdGhyb3cgaW4gQysrIGluIHRoZSBub24tdW5pZmllZCBleGNlcHRpb24gbW9kZWwiLCA0NzAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX29iamNfcG9pbnRlcl9tYXNraW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJiaXRtYXNraW5nIGZvciBpbnRyb3NwZWN0aW9uIG9mIE9iamVjdGl2ZS1DIG9iamVjdCBwb2ludGVycyBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCIsIDE2NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fb2JqY19wb2ludGVyX21hc2tpbmdfcGVyZm9ybVNlbGVjdG9yLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJiaXRtYXNraW5nIGZvciBpbnRyb3NwZWN0aW9uIG9mIE9iamVjdGl2ZS1DIG9iamVjdCBwb2ludGVycyBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCIsIDE2NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fb2JqY19pc2FfYXNzaWduLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhc3NpZ25tZW50IHRvIE9iamVjdGl2ZS1DJ3MgaXNhIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb2JqZWN0X3NldENsYXNzKCkiLCAxNzAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX29iamNfaXNhX3VzZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGlyZWN0IGFjY2VzcyB0byBPYmplY3RpdmUtQydzIGlzYSBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9iamVjdF9nZXRDbGFzcygpIiwgMTcwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vYmpjX2xpdGVyYWxfY29tcGFyaXNvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGlyZWN0IGNvbXBhcmlzb24gb2YgJXNlbGVjdHthbiBhcnJheSBsaXRlcmFsfGEgZGljdGlvbmFyeSBsaXRlcmFsfGEgbnVtZXJpYyBsaXRlcmFsfGEgYm94ZWQgZXhwcmVzc2lvbnx9MCBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yIiwgNDcxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vYmpjX21pc3Npbmdfc3VwZXJfY2FsbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWV0aG9kIHBvc3NpYmx5IG1pc3NpbmcgYSBbc3VwZXIgJTBdIGNhbGwiLCA0NzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX29iamNfcG9pbnRlcl9jeHhfY2F0Y2hfZnJhZ2lsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2Fubm90IGNhdGNoIGFuIGV4Y2VwdGlvbiB0aHJvd24gd2l0aCBAdGhyb3cgaW4gQysrIGluIHRoZSBub24tdW5pZmllZCBleGNlcHRpb24gbW9kZWwiLCA0ODAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX29iamNfcG9pbnRlcl9tYXNraW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJiaXRtYXNraW5nIGZvciBpbnRyb3NwZWN0aW9uIG9mIE9iamVjdGl2ZS1DIG9iamVjdCBwb2ludGVycyBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCIsIDE3MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fb2JqY19wb2ludGVyX21hc2tpbmdfcGVyZm9ybVNlbGVjdG9yLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJiaXRtYXNraW5nIGZvciBpbnRyb3NwZWN0aW9uIG9mIE9iamVjdGl2ZS1DIG9iamVjdCBwb2ludGVycyBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCIsIDE3MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fb2JqY19wcmVjaXNlX2xpZmV0aW1lX21lYW5pbmdsZXNzLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm9iamNfcHJlY2lzZV9saWZldGltZSBpcyBub3QgbWVhbmluZ2Z1bCBmb3IgJXNlbGVjdHtfX3Vuc2FmZV91bnJldGFpbmVkfF9fYXV0b3JlbGVhc2luZ30wIG9iamVjdHMiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCi1ESUFHKHdhcm5fb2JqY19wcm9wZXJ0eV9hc3NpZ25fb25fb2JqZWN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICInYXNzaWduJyBwcm9wZXJ0eSBvZiBvYmplY3QgdHlwZSBtYXkgYmVjb21lIGEgZGFuZ2xpbmcgcmVmZXJlbmNlOyBjb25zaWRlciB1c2luZyAndW5zYWZlX3VucmV0YWluZWQnIiwgNDcxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vYmpjX3Byb3BlcnR5X2Fzc2lnbl9vbl9vYmplY3QsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIidhc3NpZ24nIHByb3BlcnR5IG9mIG9iamVjdCB0eXBlIG1heSBiZWNvbWUgYSBkYW5nbGluZyByZWZlcmVuY2U7IGNvbnNpZGVyIHVzaW5nICd1bnNhZmVfdW5yZXRhaW5lZCciLCA0ODEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX29iamNfcHJvcGVydHlfY29weV9taXNzaW5nX29uX2Jsb2NrLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInY29weScgYXR0cmlidXRlIG11c3QgYmUgc3BlY2lmaWVkIGZvciB0aGUgYmxvY2sgcHJvcGVydHkgd2hlbiAtZm9iamMtZ2Mtb25seSBpcyBzcGVjaWZpZWQiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9vYmpjX3Byb3BlcnR5X2RlZmF1bHRfYXNzaWduX29uX29iamVjdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGVmYXVsdCBwcm9wZXJ0eSBhdHRyaWJ1dGUgJ2Fzc2lnbicgbm90IGFwcHJvcHJpYXRlIGZvciBvYmplY3QiLCA0NzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX29iamNfcHJvcGVydHlfbm9fYXNzaWdubWVudF9hdHRyaWJ1dGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm5vICdhc3NpZ24nLCAncmV0YWluJywgb3IgJ2NvcHknIGF0dHJpYnV0ZSBpcyBzcGVjaWZpZWQgLSAnYXNzaWduJyBpcyBhc3N1bWVkIiwgNDc1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9vYmpjX3Byb3BlcnR5X3JldGFpbl9vZl9ibG9jaywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmV0YWluJ2VkIGJsb2NrIHByb3BlcnR5IGRvZXMgbm90IGNvcHkgdGhlIGJsb2NrIC0gdXNlIGNvcHkgYXR0cmlidXRlIGluc3RlYWQiLCA0NjksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX29iamNfcmVhZG9ubHlfcHJvcGVydHlfaGFzX3NldHRlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic2V0dGVyIGNhbm5vdCBiZSBzcGVjaWZpZWQgZm9yIGEgcmVhZG9ubHkgcHJvcGVydHkiLCA0ODAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX29iamNfcmVkdW5kYW50X2xpdGVyYWxfdXNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2luZyAlMCB3aXRoIGEgbGl0ZXJhbCBpcyByZWR1bmRhbnQiLCA0ODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOSkKLURJQUcod2Fybl9vYmpjX3JlZHVuZGFudF9xdWFsaWZpZWRfY2xhc3NfdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicGFyYW1ldGVyaXplZCBjbGFzcyAlMCBhbHJlYWR5IGNvbmZvcm1zIHRvIHRoZSBwcm90b2NvbHMgbGlzdGVkOyBkaWQgeW91IGZvcmdldCBhICcqJz8iLCA0NzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAwKQotRElBRyh3YXJuX29iamNfcmVxdWlyZXNfc3VwZXJfcHJvdG9jb2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGF0dHJpYnV0ZSBjYW5ub3QgYmUgYXBwbGllZCB0byAlc2VsZWN0e21ldGhvZHMgaW4gcHJvdG9jb2xzfGRlYWxsb2N9MSIsIDU1NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fb2JqY19yb290X2NsYXNzX21pc3NpbmcsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNsYXNzICUwIGRlZmluZWQgd2l0aG91dCBzcGVjaWZ5aW5nIGEgYmFzZSBjbGFzcyIsIDQ4MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fb2JqY19zZWNvbmRhcnlfaW5pdF9taXNzaW5nX2luaXRfY2FsbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY29udmVuaWVuY2UgaW5pdGlhbGl6ZXIgbWlzc2luZyBhICdzZWxmJyBjYWxsIHRvIGFub3RoZXIgaW5pdGlhbGl6ZXIiLCA0NTcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX29iamNfc2Vjb25kYXJ5X2luaXRfc3VwZXJfaW5pdF9jYWxsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb252ZW5pZW5jZSBpbml0aWFsaXplciBzaG91bGQgbm90IGludm9rZSBhbiBpbml0aWFsaXplciBvbiAnc3VwZXInIiwgNDU3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9vYmpjX3N0cmluZ19saXRlcmFsX2NvbXBhcmlzb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRpcmVjdCBjb21wYXJpc29uIG9mIGEgc3RyaW5nIGxpdGVyYWwgaGFzIHVuZGVmaW5lZCBiZWhhdmlvciIsIDQ4NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fb2JqY191bnNhZmVfcGVyZm9ybV9zZWxlY3RvciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgaXMgaW5jb21wYXRpYmxlIHdpdGggc2VsZWN0b3JzIHRoYXQgcmV0dXJuIGEgJXNlbGVjdHtzdHJ1Y3R8dW5pb258dmVjdG9yfTEgdHlwZSIsIDQ4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fb2xkX3N0eWxlX2Nhc3QsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVzZSBvZiBvbGQtc3R5bGUgY2FzdCIsIDQ4OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fb21wX2FsaWdubWVudF9ub3RfcG93ZXJfb2ZfdHdvLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhbGlnbmVkIGNsYXVzZSB3aWxsIGJlIGlnbm9yZWQgYmVjYXVzZSB0aGUgcmVxdWVzdGVkIGFsaWdubWVudCBpcyBub3QgYSBwb3dlciBvZiAyIiwgNDkxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTEpCi1ESUFHKHdhcm5fb21wX2xpbmVhcl9zdGVwX3plcm8sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInplcm8gbGluZWFyIHN0ZXAgKCUwICVzZWxlY3R7fGFuZCBvdGhlciB2YXJpYWJsZXMgaW4gY2xhdXNlIH0xc2hvdWxkIHByb2JhYmx5IGJlIGNvbnN0KSIsIDQ5MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDExKQotRElBRyh3YXJuX29tcF9sb29wXzY0X2JpdF92YXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIk9wZW5NUCBsb29wIGl0ZXJhdGlvbiB2YXJpYWJsZSBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gNjQgYml0cyBzaXplIGFuZCB3aWxsIGJlIG5hcnJvd2VkIiwgNDkyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTEpCi1ESUFHKHdhcm5fb21wX25lc3Rpbmdfc2ltZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiT3Blbk1QIG9ubHkgYWxsb3dzIGFuIG9yZGVyZWQgY29uc3RydWN0IHdpdGggdGhlIHNpbWQgY2xhdXNlIG5lc3RlZCBpbiBhIHNpbWQgY29uc3RydWN0IiwgNjAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTEpCi1ESUFHKHdhcm5fb21wX25vbl90cml2aWFsX3R5cGVfbWFwcGVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJOb24tdHJpdmlhbCB0eXBlICUwIGlzIG1hcHBlZCwgb25seSB0cml2aWFsIHR5cGVzIGFyZSBndWFyYW50ZWVkIHRvIGJlIG1hcHBlZCBjb3JyZWN0bHkiLCA0OTMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxMSkKLURJQUcod2Fybl9vbXBfbm90X2luX3RhcmdldF9jb250ZXh0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZWNsYXJhdGlvbiBpcyBub3QgZGVjbGFyZWQgaW4gYW55IGRlY2xhcmUgdGFyZ2V0IHJlZ2lvbiIsIDQ5MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDExKQotRElBRyh3YXJuX29tcF9zZWN0aW9uX2lzX2NoYXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImFycmF5IHNlY3Rpb24gJXNlbGVjdHtsb3dlciBib3VuZHxsZW5ndGh9MCBpcyBvZiB0eXBlICdjaGFyJyIsIDEyMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDExKQorRElBRyh3YXJuX29iamNfcHJvcGVydHlfZGVmYXVsdF9hc3NpZ25fb25fb2JqZWN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZWZhdWx0IHByb3BlcnR5IGF0dHJpYnV0ZSAnYXNzaWduJyBub3QgYXBwcm9wcmlhdGUgZm9yIG9iamVjdCIsIDQ4NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fb2JqY19wcm9wZXJ0eV9ub19hc3NpZ25tZW50X2F0dHJpYnV0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibm8gJ2Fzc2lnbicsICdyZXRhaW4nLCBvciAnY29weScgYXR0cmlidXRlIGlzIHNwZWNpZmllZCAtICdhc3NpZ24nIGlzIGFzc3VtZWQiLCA0ODUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX29iamNfcHJvcGVydHlfcmV0YWluX29mX2Jsb2NrLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZXRhaW4nZWQgYmxvY2sgcHJvcGVydHkgZG9lcyBub3QgY29weSB0aGUgYmxvY2sgLSB1c2UgY29weSBhdHRyaWJ1dGUgaW5zdGVhZCIsIDQ3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fb2JqY19yZWFkb25seV9wcm9wZXJ0eV9oYXNfc2V0dGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzZXR0ZXIgY2Fubm90IGJlIHNwZWNpZmllZCBmb3IgYSByZWFkb25seSBwcm9wZXJ0eSIsIDQ5MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fb2JqY19yZWR1bmRhbnRfbGl0ZXJhbF91c2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzaW5nICUwIHdpdGggYSBsaXRlcmFsIGlzIHJlZHVuZGFudCIsIDQ5MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI5KQorRElBRyh3YXJuX29iamNfcmVkdW5kYW50X3F1YWxpZmllZF9jbGFzc190eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwYXJhbWV0ZXJpemVkIGNsYXNzICUwIGFscmVhZHkgY29uZm9ybXMgdG8gdGhlIHByb3RvY29scyBsaXN0ZWQ7IGRpZCB5b3UgZm9yZ2V0IGEgJyonPyIsIDQ4OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fb2JqY19yZXF1aXJlc19zdXBlcl9wcm90b2NvbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgYXR0cmlidXRlIGNhbm5vdCBiZSBhcHBsaWVkIHRvICVzZWxlY3R7bWV0aG9kcyBpbiBwcm90b2NvbHN8ZGVhbGxvY30xIiwgNTY4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vYmpjX3Jvb3RfY2xhc3NfbWlzc2luZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2xhc3MgJTAgZGVmaW5lZCB3aXRob3V0IHNwZWNpZnlpbmcgYSBiYXNlIGNsYXNzIiwgNDkzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vYmpjX3NlY29uZGFyeV9pbml0X21pc3NpbmdfaW5pdF9jYWxsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjb252ZW5pZW5jZSBpbml0aWFsaXplciBtaXNzaW5nIGEgJ3NlbGYnIGNhbGwgdG8gYW5vdGhlciBpbml0aWFsaXplciIsIDQ2NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fb2JqY19zZWNvbmRhcnlfaW5pdF9zdXBlcl9pbml0X2NhbGwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbnZlbmllbmNlIGluaXRpYWxpemVyIHNob3VsZCBub3QgaW52b2tlIGFuIGluaXRpYWxpemVyIG9uICdzdXBlciciLCA0NjcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX29iamNfc3RyaW5nX2xpdGVyYWxfY29tcGFyaXNvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGlyZWN0IGNvbXBhcmlzb24gb2YgYSBzdHJpbmcgbGl0ZXJhbCBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yIiwgNDk0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vYmpjX3Vuc2FmZV9wZXJmb3JtX3NlbGVjdG9yLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBpcyBpbmNvbXBhdGlibGUgd2l0aCBzZWxlY3RvcnMgdGhhdCByZXR1cm4gYSAlc2VsZWN0e3N0cnVjdHx1bmlvbnx2ZWN0b3J9MSB0eXBlIiwgNDk2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vbGRfc3R5bGVfY2FzdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidXNlIG9mIG9sZC1zdHlsZSBjYXN0IiwgNDk4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vbXBfYWxpZ25tZW50X25vdF9wb3dlcl9vZl90d28sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFsaWduZWQgY2xhdXNlIHdpbGwgYmUgaWdub3JlZCBiZWNhdXNlIHRoZSByZXF1ZXN0ZWQgYWxpZ25tZW50IGlzIG5vdCBhIHBvd2VyIG9mIDIiLCA1MDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxMSkKK0RJQUcod2Fybl9vbXBfbGluZWFyX3N0ZXBfemVybywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiemVybyBsaW5lYXIgc3RlcCAoJTAgJXNlbGVjdHt8YW5kIG90aGVyIHZhcmlhYmxlcyBpbiBjbGF1c2UgfTFzaG91bGQgcHJvYmFibHkgYmUgY29uc3QpIiwgNTAxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTEpCitESUFHKHdhcm5fb21wX2xvb3BfNjRfYml0X3ZhciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiT3Blbk1QIGxvb3AgaXRlcmF0aW9uIHZhcmlhYmxlIGNhbm5vdCBoYXZlIG1vcmUgdGhhbiA2NCBiaXRzIHNpemUgYW5kIHdpbGwgYmUgbmFycm93ZWQiLCA1MDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxMSkKK0RJQUcod2Fybl9vbXBfbmVzdGluZ19zaW1kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJPcGVuTVAgb25seSBhbGxvd3MgYW4gb3JkZXJlZCBjb25zdHJ1Y3Qgd2l0aCB0aGUgc2ltZCBjbGF1c2UgbmVzdGVkIGluIGEgc2ltZCBjb25zdHJ1Y3QiLCA2MTMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxMSkKK0RJQUcod2Fybl9vbXBfbm9uX3RyaXZpYWxfdHlwZV9tYXBwZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIk5vbi10cml2aWFsIHR5cGUgJTAgaXMgbWFwcGVkLCBvbmx5IHRyaXZpYWwgdHlwZXMgYXJlIGd1YXJhbnRlZWQgdG8gYmUgbWFwcGVkIGNvcnJlY3RseSIsIDUwMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDExKQorRElBRyh3YXJuX29tcF9ub3RfaW5fdGFyZ2V0X2NvbnRleHQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlY2xhcmF0aW9uIGlzIG5vdCBkZWNsYXJlZCBpbiBhbnkgZGVjbGFyZSB0YXJnZXQgcmVnaW9uIiwgNTAzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTEpCitESUFHKHdhcm5fb21wX3NlY3Rpb25faXNfY2hhciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYXJyYXkgc2VjdGlvbiAlc2VsZWN0e2xvd2VyIGJvdW5kfGxlbmd0aH0wIGlzIG9mIHR5cGUgJ2NoYXInIiwgMTIyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTEpCiBESUFHKHdhcm5fb25fc3VwZXJjbGFzc191c2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNsYXNzIGltcGxlbWVudGF0aW9uIG1heSBub3QgaGF2ZSBzdXBlciBjbGFzcyIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX29wZW5jbF9hdHRyX2RlcHJlY2F0ZWRfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgYXR0cmlidXRlIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQgaW4gT3BlbkNMIHZlcnNpb24gJTEiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX29wZW5jbF9nZW5lcmljX2FkZHJlc3Nfc3BhY2VfYXJnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwYXNzaW5nIG5vbi1nZW5lcmljIGFkZHJlc3Mgc3BhY2UgcG9pbnRlciB0byAlMCBtYXkgY2F1c2UgZHluYW1pYyBjb252ZXJzaW9uIGFmZmVjdGluZyBwZXJmb3JtYW5jZSIsIDEzNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQotRElBRyh3YXJuX29wZXJhdG9yX25ld19yZXR1cm5zX251bGwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIHNob3VsZCBub3QgcmV0dXJuIGEgbnVsbCBwb2ludGVyIHVubGVzcyBpdCBpcyBkZWNsYXJlZCAndGhyb3coKSclc2VsZWN0e3wgb3IgJ25vZXhjZXB0J30xIiwgNDI1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vcGVuY2xfYXR0cl9kZXByZWNhdGVkX2lnbm9yZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkIGluIE9wZW5DTCB2ZXJzaW9uICUxIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vcGVuY2xfZ2VuZXJpY19hZGRyZXNzX3NwYWNlX2FyZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicGFzc2luZyBub24tZ2VuZXJpYyBhZGRyZXNzIHNwYWNlIHBvaW50ZXIgdG8gJTAgbWF5IGNhdXNlIGR5bmFtaWMgY29udmVyc2lvbiBhZmZlY3RpbmcgcGVyZm9ybWFuY2UiLCAxMzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKK0RJQUcod2Fybl9vcGVyYXRvcl9uZXdfcmV0dXJuc19udWxsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBzaG91bGQgbm90IHJldHVybiBhIG51bGwgcG9pbnRlciB1bmxlc3MgaXQgaXMgZGVjbGFyZWQgJ3Rocm93KCknJXNlbGVjdHt8IG9yICdub2V4Y2VwdCd9MSIsIDQzNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fb3NfbG9nX2Zvcm1hdF9uYXJnLCBDTEFTU19FUlJPUiwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm9zX2xvZygpICclJW4nIGZvcm1hdCBzcGVjaWZpZXIgaXMgbm90IGFsbG93ZWQiLCAwLCBTRklOQUVfU3Vic3RpdHV0aW9uRmFpbHVyZSwgZmFsc2UsIHRydWUsIDIpCi1ESUFHKHdhcm5fb3V0X29mX3JhbmdlX2NvbXBhcmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlc3VsdCBvZiBjb21wYXJpc29uIG9mICVzZWxlY3R7Y29uc3RhbnQgJTB8dHJ1ZXxmYWxzZX0xIHdpdGggJXNlbGVjdHtleHByZXNzaW9uIG9mIHR5cGUgJTJ8Ym9vbGVhbiBleHByZXNzaW9ufTMgaXMgYWx3YXlzICU0IiwgNjQwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9vdmVyYWxpZ25lZF90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ0eXBlICUwIHJlcXVpcmVzICUxIGJ5dGVzIG9mIGFsaWdubWVudCBhbmQgdGhlIGRlZmF1bHQgYWxsb2NhdG9yIG9ubHkgZ3VhcmFudGVlcyAlMiBieXRlcyIsIDQ5OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fb3ZlcmxvYWRlZF9zaGlmdF9pbl9jb21wYXJpc29uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvdmVybG9hZGVkIG9wZXJhdG9yICVzZWxlY3R7Pj58PDx9MCBoYXMgaGlnaGVyIHByZWNlZGVuY2UgdGhhbiBjb21wYXJpc29uIG9wZXJhdG9yIiwgNTAxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9vdmVybG9hZGVkX3ZpcnR1YWwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiVxMCBoaWRlcyBvdmVybG9hZGVkIHZpcnR1YWwgJXNlbGVjdHtmdW5jdGlvbnxmdW5jdGlvbnN9MSIsIDUwMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fb3ZlcnJpZGluZ19tZXRob2RfbWlzc2luZ19ub2VzY2FwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicGFyYW1ldGVyIG9mIG92ZXJyaWRpbmcgbWV0aG9kIHNob3VsZCBiZSBhbm5vdGF0ZWQgd2l0aCBfX2F0dHJpYnV0ZV9fKChub2VzY2FwZSkpIiwgNDAyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9wYWRkZWRfc3RydWN0X2Fub25fZmllbGQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInBhZGRpbmcgJXNlbGVjdHtzdHJ1Y3R8aW50ZXJmYWNlfGNsYXNzfTAgJTEgd2l0aCAlMiAlc2VsZWN0e2J5dGV8Yml0fTMlczIgdG8gYWxpZ24gYW5vbnltb3VzIGJpdC1maWVsZCIsIDUwNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcGFkZGVkX3N0cnVjdF9maWVsZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicGFkZGluZyAlc2VsZWN0e3N0cnVjdHxpbnRlcmZhY2V8Y2xhc3N9MCAlMSB3aXRoICUyICVzZWxlY3R7Ynl0ZXxiaXR9MyVzMiB0byBhbGlnbiAlNCIsIDUwNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcGFkZGVkX3N0cnVjdF9zaXplLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwYWRkaW5nIHNpemUgb2YgJTAgd2l0aCAlMSAlc2VsZWN0e2J5dGV8Yml0fTIlczEgdG8gYWxpZ25tZW50IGJvdW5kYXJ5IiwgNTA3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9wYXJhbV9yZXR1cm5fdHlwZXN0YXRlX21pc21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwYXJhbWV0ZXIgJyUwJyBub3QgaW4gZXhwZWN0ZWQgc3RhdGUgd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJuczogZXhwZWN0ZWQgJyUxJywgb2JzZXJ2ZWQgJyUyJyIsIDEzNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcGFyYW1fdHlwZXN0YXRlX21pc21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJhcmd1bWVudCBub3QgaW4gZXhwZWN0ZWQgc3RhdGU7IGV4cGVjdGVkICclMCcsIG9ic2VydmVkICclMSciLCAxMzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3BhcmFtZXRlcl9zaXplLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBpcyBhIGxhcmdlICglMSBieXRlcykgcGFzcy1ieS12YWx1ZSBhcmd1bWVudDsgcGFzcyBpdCBieSByZWZlcmVuY2UgaW5zdGVhZCA/IiwgMzQ0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9wYXJlbnNfZGlzYW1iaWd1YXRlZF9hc19mdW5jdGlvbl9kZWNsYXJhdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicGFyZW50aGVzZXMgd2VyZSBkaXNhbWJpZ3VhdGVkIGFzIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24iLCA3MzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3BhcmVuc19kaXNhbWJpZ3VhdGVkX2FzX3ZhcmlhYmxlX2RlY2xhcmF0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwYXJlbnRoZXNlcyB3ZXJlIGRpc2FtYmlndWF0ZWQgYXMgcmVkdW5kYW50IHBhcmVudGhlc2VzIGFyb3VuZCBkZWNsYXJhdGlvbiBvZiB2YXJpYWJsZSBuYW1lZCAlMCIsIDczNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcGFzc19jbGFzc19hcmdfdG9fdmFyYXJnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwYXNzaW5nIG9iamVjdCBvZiBjbGFzcyB0eXBlICUwIHRocm91Z2ggdmFyaWFkaWMgJXNlbGVjdHtmdW5jdGlvbnxibG9ja3xtZXRob2R8Y29uc3RydWN0b3J9MSVzZWxlY3R7fDsgZGlkIHlvdSBtZWFuIHRvIGNhbGwgJyUzJz99MiIsIDEyMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcGVzc2ltaXppbmdfbW92ZV9vbl9pbml0aWFsaXphdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibW92aW5nIGEgdGVtcG9yYXJ5IG9iamVjdCBwcmV2ZW50cyBjb3B5IGVsaXNpb24iLCA1MTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3Blc3NpbWl6aW5nX21vdmVfb25fcmV0dXJuLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJtb3ZpbmcgYSBsb2NhbCBvYmplY3QgaW4gYSByZXR1cm4gc3RhdGVtZW50IHByZXZlbnRzIGNvcHkgZWxpc2lvbiIsIDUxOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fb3V0X29mX3JhbmdlX2NvbXBhcmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlc3VsdCBvZiBjb21wYXJpc29uIG9mICVzZWxlY3R7Y29uc3RhbnQgJTB8dHJ1ZXxmYWxzZX0xIHdpdGggJXNlbGVjdHtleHByZXNzaW9uIG9mIHR5cGUgJTJ8Ym9vbGVhbiBleHByZXNzaW9ufTMgaXMgYWx3YXlzICU0IiwgNjUzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vdmVyYWxpZ25lZF90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ0eXBlICUwIHJlcXVpcmVzICUxIGJ5dGVzIG9mIGFsaWdubWVudCBhbmQgdGhlIGRlZmF1bHQgYWxsb2NhdG9yIG9ubHkgZ3VhcmFudGVlcyAlMiBieXRlcyIsIDUwOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fb3ZlcmxvYWRlZF9zaGlmdF9pbl9jb21wYXJpc29uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvdmVybG9hZGVkIG9wZXJhdG9yICVzZWxlY3R7Pj58PDx9MCBoYXMgaGlnaGVyIHByZWNlZGVuY2UgdGhhbiBjb21wYXJpc29uIG9wZXJhdG9yIiwgNTExLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9vdmVybG9hZGVkX3ZpcnR1YWwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiVxMCBoaWRlcyBvdmVybG9hZGVkIHZpcnR1YWwgJXNlbGVjdHtmdW5jdGlvbnxmdW5jdGlvbnN9MSIsIDUxMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fb3ZlcnJpZGluZ19tZXRob2RfbWlzc2luZ19ub2VzY2FwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicGFyYW1ldGVyIG9mIG92ZXJyaWRpbmcgbWV0aG9kIHNob3VsZCBiZSBhbm5vdGF0ZWQgd2l0aCBfX2F0dHJpYnV0ZV9fKChub2VzY2FwZSkpIiwgNDExLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9wYXJhbV9yZXR1cm5fdHlwZXN0YXRlX21pc21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwYXJhbWV0ZXIgJyUwJyBub3QgaW4gZXhwZWN0ZWQgc3RhdGUgd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJuczogZXhwZWN0ZWQgJyUxJywgb2JzZXJ2ZWQgJyUyJyIsIDEzNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcGFyYW1fdHlwZXN0YXRlX21pc21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJhcmd1bWVudCBub3QgaW4gZXhwZWN0ZWQgc3RhdGU7IGV4cGVjdGVkICclMCcsIG9ic2VydmVkICclMSciLCAxMzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3BhcmFtZXRlcl9zaXplLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBpcyBhIGxhcmdlICglMSBieXRlcykgcGFzcy1ieS12YWx1ZSBhcmd1bWVudDsgcGFzcyBpdCBieSByZWZlcmVuY2UgaW5zdGVhZCA/IiwgMzUzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9wYXJlbnNfZGlzYW1iaWd1YXRlZF9hc19mdW5jdGlvbl9kZWNsYXJhdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicGFyZW50aGVzZXMgd2VyZSBkaXNhbWJpZ3VhdGVkIGFzIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24iLCA3NDgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3BhcmVuc19kaXNhbWJpZ3VhdGVkX2FzX3ZhcmlhYmxlX2RlY2xhcmF0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwYXJlbnRoZXNlcyB3ZXJlIGRpc2FtYmlndWF0ZWQgYXMgcmVkdW5kYW50IHBhcmVudGhlc2VzIGFyb3VuZCBkZWNsYXJhdGlvbiBvZiB2YXJpYWJsZSBuYW1lZCAlMCIsIDc0OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcGFzc19jbGFzc19hcmdfdG9fdmFyYXJnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwYXNzaW5nIG9iamVjdCBvZiBjbGFzcyB0eXBlICUwIHRocm91Z2ggdmFyaWFkaWMgJXNlbGVjdHtmdW5jdGlvbnxibG9ja3xtZXRob2R8Y29uc3RydWN0b3J9MSVzZWxlY3R7fDsgZGlkIHlvdSBtZWFuIHRvIGNhbGwgJyUzJz99MiIsIDEyNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcGVzc2ltaXppbmdfbW92ZV9vbl9pbml0aWFsaXphdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibW92aW5nIGEgdGVtcG9yYXJ5IG9iamVjdCBwcmV2ZW50cyBjb3B5IGVsaXNpb24iLCA1MjksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3Blc3NpbWl6aW5nX21vdmVfb25fcmV0dXJuLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJtb3ZpbmcgYSBsb2NhbCBvYmplY3QgaW4gYSByZXR1cm4gc3RhdGVtZW50IHByZXZlbnRzIGNvcHkgZWxpc2lvbiIsIDUyOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fcG9pbnRlcl9hYnMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRha2luZyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgJXNlbGVjdHtwb2ludGVyfGZ1bmN0aW9ufGFycmF5fTAgdHlwZSAlMSBpcyBzdXNwaWNpb3VzIiwgOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcG9pbnRlcl9hcml0aF9udWxsX3B0ciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicGVyZm9ybWluZyBwb2ludGVyIGFyaXRobWV0aWMgb24gYSBudWxsIHBvaW50ZXIgaGFzIHVuZGVmaW5lZCBiZWhhdmlvciVzZWxlY3R7fCBpZiB0aGUgb2Zmc2V0IGlzIG5vbnplcm99MCIsIDQ0NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcG9pbnRlcl9pbmRpcmVjdGlvbl9mcm9tX2luY29tcGF0aWJsZV90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJkZXJlZmVyZW5jZSBvZiB0eXBlICUxIHRoYXQgd2FzIHJlaW50ZXJwcmV0X2Nhc3QgZnJvbSB0eXBlICUwIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IiLCA2NzAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3ByYWdtYV9hdHRyaWJ1dGVfdW51c2VkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bnVzZWQgYXR0cmlidXRlICUwIGluICcjcHJhZ21hIGNsYW5nIGF0dHJpYnV0ZSBwdXNoJyByZWdpb24iLCA1MjUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3ByYWdtYV9vcHRpb25zX2FsaWduX3Jlc2V0X2ZhaWxlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiI3ByYWdtYSBvcHRpb25zIGFsaWduPXJlc2V0IGZhaWxlZDogJTAiLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3ByYWdtYV9wYWNrX2ludmFsaWRfYWxpZ25tZW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHBlY3RlZCAjcHJhZ21hIHBhY2sgcGFyYW1ldGVyIHRvIGJlICcxJywgJzInLCAnNCcsICc4Jywgb3IgJzE2JyIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcHJhZ21hX3BhY2tfbW9kaWZpZWRfYWZ0ZXJfaW5jbHVkZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidGhlIGN1cnJlbnQgI3ByYWdtYSBwYWNrIGFsaWdubWVudCB2YWx1ZSBpcyBtb2RpZmllZCBpbiB0aGUgaW5jbHVkZWQgZmlsZSIsIDUyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcHJhZ21hX3BhY2tfbm9fcG9wX2VvZiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW50ZXJtaW5hdGVkICcjcHJhZ21hIHBhY2sgKHB1c2gsIC4uLiknIGF0IGVuZCBvZiBmaWxlIiwgNTI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9wcmFnbWFfcGFja19ub25fZGVmYXVsdF9hdF9pbmNsdWRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJub24tZGVmYXVsdCAjcHJhZ21hIHBhY2sgdmFsdWUgY2hhbmdlcyB0aGUgYWxpZ25tZW50IG9mIHN0cnVjdCBvciB1bmlvbiBtZW1iZXJzIGluIHRoZSBpbmNsdWRlZCBmaWxlIiwgNTI4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9wb2ludGVyX2FyaXRoX251bGxfcHRyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwZXJmb3JtaW5nIHBvaW50ZXIgYXJpdGhtZXRpYyBvbiBhIG51bGwgcG9pbnRlciBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yJXNlbGVjdHt8IGlmIHRoZSBvZmZzZXQgaXMgbm9uemVyb30wIiwgNDU2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9wb2ludGVyX2luZGlyZWN0aW9uX2Zyb21faW5jb21wYXRpYmxlX3R5cGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImRlcmVmZXJlbmNlIG9mIHR5cGUgJTEgdGhhdCB3YXMgcmVpbnRlcnByZXRfY2FzdCBmcm9tIHR5cGUgJTAgaGFzIHVuZGVmaW5lZCBiZWhhdmlvciIsIDY4MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcHJhZ21hX2F0dHJpYnV0ZV91bnVzZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVudXNlZCBhdHRyaWJ1dGUgJTAgaW4gJyNwcmFnbWEgY2xhbmcgYXR0cmlidXRlIHB1c2gnIHJlZ2lvbiIsIDUzNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcHJhZ21hX29wdGlvbnNfYWxpZ25fcmVzZXRfZmFpbGVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIjcHJhZ21hIG9wdGlvbnMgYWxpZ249cmVzZXQgZmFpbGVkOiAlMCIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcHJhZ21hX3BhY2tfaW52YWxpZF9hbGlnbm1lbnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cGVjdGVkICNwcmFnbWEgcGFjayBwYXJhbWV0ZXIgdG8gYmUgJzEnLCAnMicsICc0JywgJzgnLCBvciAnMTYnIiwgMjg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9wcmFnbWFfcGFja19tb2RpZmllZF9hZnRlcl9pbmNsdWRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0aGUgY3VycmVudCAjcHJhZ21hIHBhY2sgYWxpZ25tZW50IHZhbHVlIGlzIG1vZGlmaWVkIGluIHRoZSBpbmNsdWRlZCBmaWxlIiwgNTM5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9wcmFnbWFfcGFja19ub19wb3BfZW9mLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bnRlcm1pbmF0ZWQgJyNwcmFnbWEgcGFjayAocHVzaCwgLi4uKScgYXQgZW5kIG9mIGZpbGUiLCA1MzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3ByYWdtYV9wYWNrX25vbl9kZWZhdWx0X2F0X2luY2x1ZGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm5vbi1kZWZhdWx0ICNwcmFnbWEgcGFjayB2YWx1ZSBjaGFuZ2VzIHRoZSBhbGlnbm1lbnQgb2Ygc3RydWN0IG9yIHVuaW9uIG1lbWJlcnMgaW4gdGhlIGluY2x1ZGVkIGZpbGUiLCA1NDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX3ByYWdtYV9wYWNrX3BvcF9pZGVudGlmaWVyX2FuZF9hbGlnbm1lbnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInNwZWNpZnlpbmcgYm90aCBhIG5hbWUgYW5kIGFsaWdubWVudCB0byAncG9wJyBpcyB1bmRlZmluZWQiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9wcmFnbWFfcGFja19zaG93LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ2YWx1ZSBvZiAjcHJhZ21hIHBhY2soc2hvdykgPT0gJTAiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9wcmFnbWFfcG9wX2ZhaWxlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiI3ByYWdtYSAlMChwb3AsIC4uLikgZmFpbGVkOiAlMSIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcHJhZ21hX3VudXNlZF9leHBlY3RlZF92YXJfYXJnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJvbmx5IHZhcmlhYmxlcyBjYW4gYmUgYXJndW1lbnRzIHRvICcjcHJhZ21hIHVudXNlZCciLCAyNzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3ByYWdtYV91bnVzZWRfdW5kZWNsYXJlZF92YXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVuZGVjbGFyZWQgdmFyaWFibGUgJTAgdXNlZCBhcyBhbiBhcmd1bWVudCBmb3IgJyNwcmFnbWEgdW51c2VkJyIsIDI3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcHJlY2VkZW5jZV9iaXR3aXNlX3JlbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgaGFzIGxvd2VyIHByZWNlZGVuY2UgdGhhbiAlMTsgJTEgd2lsbCBiZSBldmFsdWF0ZWQgZmlyc3QiLCA1MDgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3ByZWNlZGVuY2VfY29uZGl0aW9uYWwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm9wZXJhdG9yICc/OicgaGFzIGxvd2VyIHByZWNlZGVuY2UgdGhhbiAnJTAnOyAnJTAnIHdpbGwgYmUgZXZhbHVhdGVkIGZpcnN0IiwgNTA4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9wcmludGZfT2JqQ2ZsYWdzX3dpdGhvdXRfT2JqQ0NvbnZlcnNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm9iamVjdCBmb3JtYXQgZmxhZ3MgY2Fubm90IGJlIHVzZWQgd2l0aCAnJTAnIGNvbnZlcnNpb24gc3BlY2lmaWVyIiwgMjI2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCi1ESUFHKHdhcm5fcHJpbnRmX2FzdGVyaXNrX21pc3NpbmdfYXJnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInJXNlbGVjdHsqfC4qfTAnIHNwZWNpZmllZCBmaWVsZCAlc2VsZWN0e3dpZHRofHByZWNpc2lvbn0wIGlzIG1pc3NpbmcgYSBtYXRjaGluZyAnaW50JyBhcmd1bWVudCIsIDIyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQotRElBRyh3YXJuX3ByaW50Zl9hc3Rlcmlza193cm9uZ190eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmaWVsZCAlc2VsZWN0e3dpZHRofHByZWNpc2lvbn0wIHNob3VsZCBoYXZlIHR5cGUgJTEsIGJ1dCBhcmd1bWVudCBoYXMgdHlwZSAlMiIsIDIyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQotRElBRyh3YXJuX3ByaW50Zl9kYXRhX2FyZ19ub3RfdXNlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGF0YSBhcmd1bWVudCBub3QgdXNlZCBieSBmb3JtYXQgc3RyaW5nIiwgMjI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCi1ESUFHKHdhcm5fcHJpbnRmX2VtcHR5X29iamNfZmxhZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWlzc2luZyBvYmplY3QgZm9ybWF0IGZsYWciLCAyMjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKLURJQUcod2Fybl9wcmludGZfZm9ybWF0X3N0cmluZ19jb250YWluc19udWxsX2NoYXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZvcm1hdCBzdHJpbmcgY29udGFpbnMgJ1xcMCcgd2l0aGluIHRoZSBzdHJpbmcgYm9keSIsIDIyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQotRElBRyh3YXJuX3ByaW50Zl9mb3JtYXRfc3RyaW5nX25vdF9udWxsX3Rlcm1pbmF0ZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZvcm1hdCBzdHJpbmcgaXMgbm90IG51bGwtdGVybWluYXRlZCIsIDIyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQotRElBRyh3YXJuX3ByaW50Zl9pZ25vcmVkX2ZsYWcsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZsYWcgJyUwJyBpcyBpZ25vcmVkIHdoZW4gZmxhZyAnJTEnIGlzIHByZXNlbnQiLCAyMjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKLURJQUcod2Fybl9wcmludGZfaW5jb21wbGV0ZV9zcGVjaWZpZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluY29tcGxldGUgZm9ybWF0IHNwZWNpZmllciIsIDIyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQotRElBRyh3YXJuX3ByaW50Zl9pbnN1ZmZpY2llbnRfZGF0YV9hcmdzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtb3JlICclJScgY29udmVyc2lvbnMgdGhhbiBkYXRhIGFyZ3VtZW50cyIsIDIyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQotRElBRyh3YXJuX3ByaW50Zl9pbnZhbGlkX29iamNfZmxhZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJyUwJyBpcyBub3QgYSB2YWxpZCBvYmplY3QgZm9ybWF0IGZsYWciLCAyMjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKLURJQUcod2Fybl9wcmludGZfbm9uc2Vuc2ljYWxfZmxhZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZmxhZyAnJTAnIHJlc3VsdHMgaW4gdW5kZWZpbmVkIGJlaGF2aW9yIHdpdGggJyUxJyBjb252ZXJzaW9uIHNwZWNpZmllciIsIDIyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQotRElBRyh3YXJuX3ByaW50Zl9ub25zZW5zaWNhbF9vcHRpb25hbF9hbW91bnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7ZmllbGQgd2lkdGh8cHJlY2lzaW9ufTAgdXNlZCB3aXRoICclMScgY29udmVyc2lvbiBzcGVjaWZpZXIsIHJlc3VsdGluZyBpbiB1bmRlZmluZWQgYmVoYXZpb3IiLCAyMjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKLURJQUcod2Fybl9wcmludGZfcG9zaXRpb25hbF9hcmdfZXhjZWVkc19kYXRhX2FyZ3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRhdGEgYXJndW1lbnQgcG9zaXRpb24gJyUwJyBleGNlZWRzIHRoZSBudW1iZXIgb2YgZGF0YSBhcmd1bWVudHMgKCUxKSIsIDIyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQotRElBRyh3YXJuX3ByaXZhdGVfZXh0ZXJuLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2Ugb2YgX19wcml2YXRlX2V4dGVybl9fIG9uIGEgZGVjbGFyYXRpb24gbWF5IG5vdCBwcm9kdWNlIGV4dGVybmFsIHN5bWJvbCBwcml2YXRlIHRvIHRoZSBsaW5rYWdlIHVuaXQgYW5kIGlzIGRlcHJlY2F0ZWQiLCA1MzIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3Byb2ZpbGVfZGF0YV9taXNzaW5nLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwcm9maWxlIGRhdGEgbWF5IGJlIGluY29tcGxldGU6IG9mICUwIGZ1bmN0aW9uJXMwLCAlMSAlcGx1cmFsezE6aGFzfDpoYXZlfTEgbm8gZGF0YSIsIDUzNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMxKQotRElBRyh3YXJuX3Byb2ZpbGVfZGF0YV9vdXRfb2ZfZGF0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJvZmlsZSBkYXRhIG1heSBiZSBvdXQgb2YgZGF0ZTogb2YgJTAgZnVuY3Rpb24lczAsICUxICVwbHVyYWx7MTpoYXN8OmhhdmV9MSBtaXNtYXRjaGVkIGRhdGEgdGhhdCB3aWxsIGJlIGlnbm9yZWQiLCA1MzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMSkKLURJQUcod2Fybl9wcm9maWxlX2RhdGFfdW5wcm9maWxlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibm8gcHJvZmlsZSBkYXRhIGF2YWlsYWJsZSBmb3IgZmlsZSBcIiUwXCIiLCA1MzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMSkKLURJQUcod2Fybl9wcm9wZXJ0eV9hY2Nlc3Nfc3VnZ2VzdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJvcGVydHkgJTAgbm90IGZvdW5kIG9uIG9iamVjdCBvZiB0eXBlICUxOyBkaWQgeW91IG1lYW4gdG8gYWNjZXNzIHByb3BlcnR5ICUyPyIsIDUzOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcHJvcGVydHlfYXR0cl9taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJvcGVydHkgYXR0cmlidXRlIGluIGNsYXNzIGV4dGVuc2lvbiBkb2VzIG5vdCBtYXRjaCB0aGUgcHJpbWFyeSBjbGFzcyIsIDUzOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcHJvcGVydHlfYXR0cmlidXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInJTEnIGF0dHJpYnV0ZSBvbiBwcm9wZXJ0eSAlMCBkb2VzIG5vdCBtYXRjaCB0aGUgcHJvcGVydHkgaW5oZXJpdGVkIGZyb20gJTIiLCA1MzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3ByYWdtYV9wb3BfZmFpbGVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIjcHJhZ21hICUwKHBvcCwgLi4uKSBmYWlsZWQ6ICUxIiwgMjg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9wcmFnbWFfdW51c2VkX2V4cGVjdGVkX3Zhcl9hcmcsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm9ubHkgdmFyaWFibGVzIGNhbiBiZSBhcmd1bWVudHMgdG8gJyNwcmFnbWEgdW51c2VkJyIsIDI4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcHJhZ21hX3VudXNlZF91bmRlY2xhcmVkX3ZhciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5kZWNsYXJlZCB2YXJpYWJsZSAlMCB1c2VkIGFzIGFuIGFyZ3VtZW50IGZvciAnI3ByYWdtYSB1bnVzZWQnIiwgMjg2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9wcmVjZWRlbmNlX2JpdHdpc2VfcmVsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBoYXMgbG93ZXIgcHJlY2VkZW5jZSB0aGFuICUxOyAlMSB3aWxsIGJlIGV2YWx1YXRlZCBmaXJzdCIsIDUxOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcHJlY2VkZW5jZV9jb25kaXRpb25hbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib3BlcmF0b3IgJz86JyBoYXMgbG93ZXIgcHJlY2VkZW5jZSB0aGFuICclMCc7ICclMCcgd2lsbCBiZSBldmFsdWF0ZWQgZmlyc3QiLCA1MTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3ByaW50Zl9PYmpDZmxhZ3Nfd2l0aG91dF9PYmpDQ29udmVyc2lvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAib2JqZWN0IGZvcm1hdCBmbGFncyBjYW5ub3QgYmUgdXNlZCB3aXRoICclMCcgY29udmVyc2lvbiBzcGVjaWZpZXIiLCAyMzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKK0RJQUcod2Fybl9wcmludGZfYXN0ZXJpc2tfbWlzc2luZ19hcmcsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiclc2VsZWN0eyp8Lip9MCcgc3BlY2lmaWVkIGZpZWxkICVzZWxlY3R7d2lkdGh8cHJlY2lzaW9ufTAgaXMgbWlzc2luZyBhIG1hdGNoaW5nICdpbnQnIGFyZ3VtZW50IiwgMjM0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCitESUFHKHdhcm5fcHJpbnRmX2FzdGVyaXNrX3dyb25nX3R5cGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImZpZWxkICVzZWxlY3R7d2lkdGh8cHJlY2lzaW9ufTAgc2hvdWxkIGhhdmUgdHlwZSAlMSwgYnV0IGFyZ3VtZW50IGhhcyB0eXBlICUyIiwgMjM0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCitESUFHKHdhcm5fcHJpbnRmX2RhdGFfYXJnX25vdF91c2VkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkYXRhIGFyZ3VtZW50IG5vdCB1c2VkIGJ5IGZvcm1hdCBzdHJpbmciLCAyMzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKK0RJQUcod2Fybl9wcmludGZfZW1wdHlfb2JqY19mbGFnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtaXNzaW5nIG9iamVjdCBmb3JtYXQgZmxhZyIsIDIzNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQorRElBRyh3YXJuX3ByaW50Zl9mb3JtYXRfc3RyaW5nX2NvbnRhaW5zX251bGxfY2hhciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZm9ybWF0IHN0cmluZyBjb250YWlucyAnXFwwJyB3aXRoaW4gdGhlIHN0cmluZyBib2R5IiwgMjM0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCitESUFHKHdhcm5fcHJpbnRmX2Zvcm1hdF9zdHJpbmdfbm90X251bGxfdGVybWluYXRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZm9ybWF0IHN0cmluZyBpcyBub3QgbnVsbC10ZXJtaW5hdGVkIiwgMjM0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCitESUFHKHdhcm5fcHJpbnRmX2lnbm9yZWRfZmxhZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZmxhZyAnJTAnIGlzIGlnbm9yZWQgd2hlbiBmbGFnICclMScgaXMgcHJlc2VudCIsIDIzNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQorRElBRyh3YXJuX3ByaW50Zl9pbmNvbXBsZXRlX3NwZWNpZmllciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5jb21wbGV0ZSBmb3JtYXQgc3BlY2lmaWVyIiwgMjM0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCitESUFHKHdhcm5fcHJpbnRmX2luc3VmZmljaWVudF9kYXRhX2FyZ3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm1vcmUgJyUlJyBjb252ZXJzaW9ucyB0aGFuIGRhdGEgYXJndW1lbnRzIiwgMjM0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCitESUFHKHdhcm5fcHJpbnRmX2ludmFsaWRfb2JqY19mbGFnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInJTAnIGlzIG5vdCBhIHZhbGlkIG9iamVjdCBmb3JtYXQgZmxhZyIsIDIzNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQorRElBRyh3YXJuX3ByaW50Zl9ub25zZW5zaWNhbF9mbGFnLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmbGFnICclMCcgcmVzdWx0cyBpbiB1bmRlZmluZWQgYmVoYXZpb3Igd2l0aCAnJTEnIGNvbnZlcnNpb24gc3BlY2lmaWVyIiwgMjM0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCitESUFHKHdhcm5fcHJpbnRmX25vbnNlbnNpY2FsX29wdGlvbmFsX2Ftb3VudCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHtmaWVsZCB3aWR0aHxwcmVjaXNpb259MCB1c2VkIHdpdGggJyUxJyBjb252ZXJzaW9uIHNwZWNpZmllciwgcmVzdWx0aW5nIGluIHVuZGVmaW5lZCBiZWhhdmlvciIsIDIzNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQorRElBRyh3YXJuX3ByaW50Zl9wb3NpdGlvbmFsX2FyZ19leGNlZWRzX2RhdGFfYXJncywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGF0YSBhcmd1bWVudCBwb3NpdGlvbiAnJTAnIGV4Y2VlZHMgdGhlIG51bWJlciBvZiBkYXRhIGFyZ3VtZW50cyAoJTEpIiwgMjM0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCitESUFHKHdhcm5fcHJpdmF0ZV9leHRlcm4sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInVzZSBvZiBfX3ByaXZhdGVfZXh0ZXJuX18gb24gYSBkZWNsYXJhdGlvbiBtYXkgbm90IHByb2R1Y2UgZXh0ZXJuYWwgc3ltYm9sIHByaXZhdGUgdG8gdGhlIGxpbmthZ2UgdW5pdCBhbmQgaXMgZGVwcmVjYXRlZCIsIDU0NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcHJvcGVydHlfYWNjZXNzX3N1Z2dlc3QsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInByb3BlcnR5ICUwIG5vdCBmb3VuZCBvbiBvYmplY3Qgb2YgdHlwZSAlMTsgZGlkIHlvdSBtZWFuIHRvIGFjY2VzcyBwcm9wZXJ0eSAlMj8iLCA1NTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3Byb3BlcnR5X2F0dHJfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInByb3BlcnR5IGF0dHJpYnV0ZSBpbiBjbGFzcyBleHRlbnNpb24gZG9lcyBub3QgbWF0Y2ggdGhlIHByaW1hcnkgY2xhc3MiLCA1NTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3Byb3BlcnR5X2F0dHJpYnV0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJyUxJyBhdHRyaWJ1dGUgb24gcHJvcGVydHkgJTAgZG9lcyBub3QgbWF0Y2ggdGhlIHByb3BlcnR5IGluaGVyaXRlZCBmcm9tICUyIiwgNTUxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9wcm9wZXJ0eV9nZXR0ZXJfb3duaW5nX21pc21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcm9wZXJ0eSBkZWNsYXJlZCBhcyByZXR1cm5pbmcgbm9uLXJldGFpbmVkIG9iamVjdHM7IGdldHRlciByZXR1cm5pbmcgcmV0YWluZWQgb2JqZWN0cyIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3Byb3BlcnR5X2ltcGxpY2l0bHlfbWlzbWF0Y2hlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJpbWFyeSBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBpcyBpbXBsaWNpdGx5IHN0cm9uZyB3aGlsZSByZWRlY2xhcmF0aW9uIGluIGNsYXNzIGV4dGVuc2lvbiBpcyB3ZWFrIiwgNDczLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9wcm9wZXJ0eV9tZXRob2RfZGVwcmVjYXRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJvcGVydHkgYWNjZXNzIGlzIHVzaW5nICUwIG1ldGhvZCB3aGljaCBpcyBkZXByZWNhdGVkIiwgMTYwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjcpCi1ESUFHKHdhcm5fcHJvcGVydHlfcmVkZWNsX2dldHRlcl9taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZ2V0dGVyIG5hbWUgbWlzbWF0Y2ggYmV0d2VlbiBwcm9wZXJ0eSByZWRlY2xhcmF0aW9uICglMSkgYW5kIGl0cyBvcmlnaW5hbCBkZWNsYXJhdGlvbiAoJTApIiwgNTM5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9wcm9wZXJ0eV90eXBlc19hcmVfaW5jb21wYXRpYmxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcm9wZXJ0eSB0eXBlICUwIGlzIGluY29tcGF0aWJsZSB3aXRoIHR5cGUgJTEgaW5oZXJpdGVkIGZyb20gJTIiLCAzMDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3Byb3RvY29sX3Byb3BlcnR5X21pc21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcm9wZXJ0eSAlc2VsZWN0e29mIHR5cGUgJTF8d2l0aCBhdHRyaWJ1dGUgJyUxJ3x3aXRob3V0IGF0dHJpYnV0ZSAnJTEnfHdpdGggZ2V0dGVyICUxfHdpdGggc2V0dGVyICUxfTAgd2FzIHNlbGVjdGVkIGZvciBzeW50aGVzaXMiLCA1NDEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3B0X2d1YXJkZWRfcGFzc19ieV9yZWZlcmVuY2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInBhc3NpbmcgdGhlIHZhbHVlIHRoYXQgJTEgcG9pbnRzIHRvIGJ5IHJlZmVyZW5jZSByZXF1aXJlcyBob2xkaW5nICUwICVzZWxlY3R7JyUyJ3wnJTInIGV4Y2x1c2l2ZWx5fTMiLCA2NTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3Byb3BlcnR5X2ltcGxpY2l0bHlfbWlzbWF0Y2hlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJpbWFyeSBwcm9wZXJ0eSBkZWNsYXJhdGlvbiBpcyBpbXBsaWNpdGx5IHN0cm9uZyB3aGlsZSByZWRlY2xhcmF0aW9uIGluIGNsYXNzIGV4dGVuc2lvbiBpcyB3ZWFrIiwgNDgzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9wcm9wZXJ0eV9tZXRob2RfZGVwcmVjYXRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJvcGVydHkgYWNjZXNzIGlzIHVzaW5nICUwIG1ldGhvZCB3aGljaCBpcyBkZXByZWNhdGVkIiwgMTY2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjcpCitESUFHKHdhcm5fcHJvcGVydHlfcmVkZWNsX2dldHRlcl9taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZ2V0dGVyIG5hbWUgbWlzbWF0Y2ggYmV0d2VlbiBwcm9wZXJ0eSByZWRlY2xhcmF0aW9uICglMSkgYW5kIGl0cyBvcmlnaW5hbCBkZWNsYXJhdGlvbiAoJTApIiwgNTUxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9wcm9wZXJ0eV90eXBlc19hcmVfaW5jb21wYXRpYmxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcm9wZXJ0eSB0eXBlICUwIGlzIGluY29tcGF0aWJsZSB3aXRoIHR5cGUgJTEgaW5oZXJpdGVkIGZyb20gJTIiLCAzMTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3Byb3RvY29sX3Byb3BlcnR5X21pc21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcm9wZXJ0eSAlc2VsZWN0e29mIHR5cGUgJTF8d2l0aCBhdHRyaWJ1dGUgJyUxJ3x3aXRob3V0IGF0dHJpYnV0ZSAnJTEnfHdpdGggZ2V0dGVyICUxfHdpdGggc2V0dGVyICUxfTAgd2FzIHNlbGVjdGVkIGZvciBzeW50aGVzaXMiLCA1NTMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3B0X2d1YXJkZWRfcGFzc19ieV9yZWZlcmVuY2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInBhc3NpbmcgdGhlIHZhbHVlIHRoYXQgJTEgcG9pbnRzIHRvIGJ5IHJlZmVyZW5jZSByZXF1aXJlcyBob2xkaW5nICUwICVzZWxlY3R7JyUyJ3wnJTInIGV4Y2x1c2l2ZWx5fTMiLCA2NjcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX3B0cl9hcml0aF9leGNlZWRzX2JvdW5kcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidGhlIHBvaW50ZXIgaW5jcmVtZW50ZWQgYnkgJTAgcmVmZXJzIHBhc3QgdGhlIGVuZCBvZiB0aGUgYXJyYXkgKHRoYXQgY29udGFpbnMgJTEgZWxlbWVudCVzMikiLCAzMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fcHRyX2FyaXRoX3ByZWNlZGVzX2JvdW5kcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidGhlIHBvaW50ZXIgZGVjcmVtZW50ZWQgYnkgJTAgcmVmZXJzIGJlZm9yZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhcnJheSIsIDMzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl9wdHJfaW5kZXBlbmRlbnRjbGFzc19hdHRyaWJ1dGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidvYmpjX2luZGVwZW5kZW50X2NsYXNzJyBhdHRyaWJ1dGUgbWF5IGJlIHB1dCBvbiBPYmplY3RpdmUtQyBvYmplY3QgcG9pbnRlciB0eXBlIG9ubHk7IGF0dHJpYnV0ZSBpcyBpZ25vcmVkIiwgNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcXVhbF9yZXR1cm5fdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJyUwJyB0eXBlIHF1YWxpZmllciVzMSBvbiByZXR1cm4gdHlwZSAlcGx1cmFsezE6aGFzfDpoYXZlfTEgbm8gZWZmZWN0IiwgMjc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9yZWFkb25seV9wcm9wZXJ0eSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXR0cmlidXRlICdyZWFkb25seScgb2YgcHJvcGVydHkgJTAgcmVzdHJpY3RzIGF0dHJpYnV0ZSAncmVhZHdyaXRlJyBvZiBwcm9wZXJ0eSBpbmhlcml0ZWQgZnJvbSAlMSIsIDUzOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcmVjZWl2ZXJfZm9yd2FyZF9jbGFzcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmVjZWl2ZXIgJTAgaXMgYSBmb3J3YXJkIGNsYXNzIGFuZCBjb3JyZXNwb25kaW5nIEBpbnRlcmZhY2UgbWF5IG5vdCBleGlzdCIsIDU0NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcmVjZWl2ZXJfZm9yd2FyZF9pbnN0YW5jZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicmVjZWl2ZXIgdHlwZSAlMCBmb3IgaW5zdGFuY2UgbWVzc2FnZSBpcyBhIGZvcndhcmQgZGVjbGFyYXRpb24iLCA1NDcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCA1KQotRElBRyh3YXJuX3JlZGVjbF9saWJyYXJ5X2J1aWx0aW4sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluY29tcGF0aWJsZSByZWRlY2xhcmF0aW9uIG9mIGxpYnJhcnkgZnVuY3Rpb24gJTAiLCAyOTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3JlZGVjbGFyYXRpb25fd2l0aG91dF9hdHRyaWJ1dGVfcHJldl9hdHRyaWJ1dGVfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXEwIHJlZGVjbGFyZWQgd2l0aG91dCAlMSBhdHRyaWJ1dGU6IHByZXZpb3VzICUxIGlnbm9yZWQiLCAzMDksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3JlZGVjbGFyYXRpb25fd2l0aG91dF9pbXBvcnRfYXR0cmlidXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlcTAgcmVkZWNsYXJlZCB3aXRob3V0ICdkbGxpbXBvcnQnIGF0dHJpYnV0ZTogJ2RsbGV4cG9ydCcgYXR0cmlidXRlIGFkZGVkIiwgMzA5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9yZWRlZmluZV9leHRuYW1lX25vdF9hcHBsaWVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIjcHJhZ21hIHJlZGVmaW5lX2V4dG5hbWUgaXMgYXBwbGljYWJsZSB0byBleHRlcm5hbCBDIGRlY2xhcmF0aW9ucyBvbmx5OyBub3QgYXBwbGllZCB0byAlc2VsZWN0e2Z1bmN0aW9ufHZhcmlhYmxlfTAgJTEiLCA1MzAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3JlZGVmaW5pdGlvbl9pbl9wYXJhbV9saXN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZWRlZmluaXRpb24gb2YgJTAgd2lsbCBub3QgYmUgdmlzaWJsZSBvdXRzaWRlIG9mIHRoaXMgZnVuY3Rpb24iLCA3MzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3JlZHVuZGFudF9sb29wX2l0ZXJhdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidmFyaWFibGUgJTAgaXMgJXNlbGVjdHtkZWNyZW1lbnRlZHxpbmNyZW1lbnRlZH0xIGJvdGggaW4gdGhlIGxvb3AgaGVhZGVyIGFuZCBpbiB0aGUgbG9vcCBib2R5IiwgMjI1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9yZWR1bmRhbnRfbW92ZV9vbl9yZXR1cm4sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInJlZHVuZGFudCBtb3ZlIGluIHJldHVybiBzdGF0ZW1lbnQiLCA1NTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3JlZHVuZGFudF9wYXJlbnNfYXJvdW5kX2RlY2xhcmF0b3IsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInJlZHVuZGFudCBwYXJlbnRoZXNlcyBzdXJyb3VuZGluZyBkZWNsYXJhdG9yIiwgNTUxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9yZWZlcmVuY2VfZmllbGRfaXNfdW5pbml0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZWZlcmVuY2UgJTAgaXMgbm90IHlldCBib3VuZCB0byBhIHZhbHVlIHdoZW4gdXNlZCBoZXJlIiwgNjc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9xdWFsX3JldHVybl90eXBlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICInJTAnIHR5cGUgcXVhbGlmaWVyJXMxIG9uIHJldHVybiB0eXBlICVwbHVyYWx7MTpoYXN8OmhhdmV9MSBubyBlZmZlY3QiLCAyODcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3JlYWRvbmx5X3Byb3BlcnR5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhdHRyaWJ1dGUgJ3JlYWRvbmx5JyBvZiBwcm9wZXJ0eSAlMCByZXN0cmljdHMgYXR0cmlidXRlICdyZWFkd3JpdGUnIG9mIHByb3BlcnR5IGluaGVyaXRlZCBmcm9tICUxIiwgNTUxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9yZWNlaXZlcl9mb3J3YXJkX2NsYXNzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZWNlaXZlciAlMCBpcyBhIGZvcndhcmQgY2xhc3MgYW5kIGNvcnJlc3BvbmRpbmcgQGludGVyZmFjZSBtYXkgbm90IGV4aXN0IiwgNTU5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9yZWNlaXZlcl9mb3J3YXJkX2luc3RhbmNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJyZWNlaXZlciB0eXBlICUwIGZvciBpbnN0YW5jZSBtZXNzYWdlIGlzIGEgZm9yd2FyZCBkZWNsYXJhdGlvbiIsIDU1OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDUpCitESUFHKHdhcm5fcmVkZWNsX2xpYnJhcnlfYnVpbHRpbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5jb21wYXRpYmxlIHJlZGVjbGFyYXRpb24gb2YgbGlicmFyeSBmdW5jdGlvbiAlMCIsIDMwOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcmVkZWNsYXJhdGlvbl93aXRob3V0X2F0dHJpYnV0ZV9wcmV2X2F0dHJpYnV0ZV9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlcTAgcmVkZWNsYXJlZCB3aXRob3V0ICUxIGF0dHJpYnV0ZTogcHJldmlvdXMgJTEgaWdub3JlZCIsIDMxOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcmVkZWNsYXJhdGlvbl93aXRob3V0X2ltcG9ydF9hdHRyaWJ1dGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVxMCByZWRlY2xhcmVkIHdpdGhvdXQgJ2RsbGltcG9ydCcgYXR0cmlidXRlOiAnZGxsZXhwb3J0JyBhdHRyaWJ1dGUgYWRkZWQiLCAzMTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3JlZGVmaW5lX2V4dG5hbWVfbm90X2FwcGxpZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiNwcmFnbWEgcmVkZWZpbmVfZXh0bmFtZSBpcyBhcHBsaWNhYmxlIHRvIGV4dGVybmFsIEMgZGVjbGFyYXRpb25zIG9ubHk7IG5vdCBhcHBsaWVkIHRvICVzZWxlY3R7ZnVuY3Rpb258dmFyaWFibGV9MCAlMSIsIDU0MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcmVkZWZpbml0aW9uX2luX3BhcmFtX2xpc3QsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlZGVmaW5pdGlvbiBvZiAlMCB3aWxsIG5vdCBiZSB2aXNpYmxlIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlvbiIsIDc0OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcmVkdW5kYW50X2xvb3BfaXRlcmF0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ2YXJpYWJsZSAlMCBpcyAlc2VsZWN0e2RlY3JlbWVudGVkfGluY3JlbWVudGVkfTEgYm90aCBpbiB0aGUgbG9vcCBoZWFkZXIgYW5kIGluIHRoZSBsb29wIGJvZHkiLCAyMzMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3JlZHVuZGFudF9tb3ZlX29uX3JldHVybiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicmVkdW5kYW50IG1vdmUgaW4gcmV0dXJuIHN0YXRlbWVudCIsIDU2MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcmVkdW5kYW50X3BhcmVuc19hcm91bmRfZGVjbGFyYXRvciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicmVkdW5kYW50IHBhcmVudGhlc2VzIHN1cnJvdW5kaW5nIGRlY2xhcmF0b3IiLCA1NjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3JlZmVyZW5jZV9maWVsZF9pc191bmluaXQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlZmVyZW5jZSAlMCBpcyBub3QgeWV0IGJvdW5kIHRvIGEgdmFsdWUgd2hlbiB1c2VkIGhlcmUiLCA2OTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX3JlZ2lzdGVyX29iamNfY2F0Y2hfcGFybSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ3JlZ2lzdGVyJyBzdG9yYWdlIHNwZWNpZmllciBvbiBAY2F0Y2ggcGFyYW1ldGVyIHdpbGwgYmUgaWdub3JlZCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3JlaW50ZXJwcmV0X2RpZmZlcmVudF9mcm9tX3N0YXRpYywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ3JlaW50ZXJwcmV0X2Nhc3QnICVzZWxlY3R7ZnJvbXx0b30zIGNsYXNzICUwICVzZWxlY3R7dG98ZnJvbX0zIGl0cyAlc2VsZWN0e3ZpcnR1YWwgYmFzZXxiYXNlIGF0IG5vbi16ZXJvIG9mZnNldH0yICUxIGJlaGF2ZXMgZGlmZmVyZW50bHkgZnJvbSAnc3RhdGljX2Nhc3QnIiwgNTUzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9yZWludGVycHJldF9kaWZmZXJlbnRfZnJvbV9zdGF0aWMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidyZWludGVycHJldF9jYXN0JyAlc2VsZWN0e2Zyb218dG99MyBjbGFzcyAlMCAlc2VsZWN0e3RvfGZyb219MyBpdHMgJXNlbGVjdHt2aXJ0dWFsIGJhc2V8YmFzZSBhdCBub24temVybyBvZmZzZXR9MiAlMSBiZWhhdmVzIGRpZmZlcmVudGx5IGZyb20gJ3N0YXRpY19jYXN0JyIsIDU2NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fcmVsYXRlZF9yZXN1bHRfdHlwZV9jb21wYXRpYmlsaXR5X2NsYXNzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtZXRob2QgaXMgZXhwZWN0ZWQgdG8gcmV0dXJuIGFuIGluc3RhbmNlIG9mIGl0cyBjbGFzcyB0eXBlICVkaWZmeyQsIGJ1dCBpcyBkZWNsYXJlZCB0byByZXR1cm4gJHwsIGJ1dCBpcyBkZWNsYXJlZCB0byByZXR1cm4gZGlmZmVyZW50IHR5cGV9MCwxIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE3KQogRElBRyh3YXJuX3JlbGF0ZWRfcmVzdWx0X3R5cGVfY29tcGF0aWJpbGl0eV9wcm90b2NvbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJvdG9jb2wgbWV0aG9kIGlzIGV4cGVjdGVkIHRvIHJldHVybiBhbiBpbnN0YW5jZSBvZiB0aGUgaW1wbGVtZW50aW5nIGNsYXNzLCBidXQgaXMgZGVjbGFyZWQgdG8gcmV0dXJuICUwIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE3KQotRElBRyh3YXJuX3JlbWFpbmRlcl9kaXZpc2lvbl9ieV96ZXJvLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0e3JlbWFpbmRlcnxkaXZpc2lvbn0wIGJ5IHplcm8gaXMgdW5kZWZpbmVkIiwgMTc2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9yZXRfYWRkcl9sYWJlbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmV0dXJuaW5nIGFkZHJlc3Mgb2YgbGFiZWwsIHdoaWNoIGlzIGxvY2FsIiwgNTYwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9yZXRfbG9jYWxfdGVtcF9hZGRyX3JlZiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmV0dXJuaW5nICVzZWxlY3R7YWRkcmVzcyBvZnxyZWZlcmVuY2UgdG99MCBsb2NhbCB0ZW1wb3Jhcnkgb2JqZWN0IiwgNTYwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9yZXRfc3RhY2tfYWRkcl9yZWYsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7YWRkcmVzcyBvZnxyZWZlcmVuY2UgdG99MCBzdGFjayBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoICVzZWxlY3R7bG9jYWwgdmFyaWFibGV8cGFyYW1ldGVyfTIgJTEgcmV0dXJuZWQiLCA1NjAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3JldHVybl9taXNzaW5nX2V4cHIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJub24tdm9pZCAlc2VsZWN0e2Z1bmN0aW9ufG1ldGhvZH0xICUwIHNob3VsZCByZXR1cm4gYSB2YWx1ZSIsIDU2MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcmV0dXJuX3N0ZF9tb3ZlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJsb2NhbCB2YXJpYWJsZSAlMCB3aWxsIGJlIGNvcGllZCBkZXNwaXRlIGJlaW5nICVzZWxlY3R7cmV0dXJuZWR8dGhyb3dufTEgYnkgbmFtZSIsIDU2MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcmV0dXJuX3N0ZF9tb3ZlX2luX2N4eDExLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJwcmlvciB0byB0aGUgcmVzb2x1dGlvbiBvZiBhIGRlZmVjdCByZXBvcnQgYWdhaW5zdCBJU08gQysrMTEsIGxvY2FsIHZhcmlhYmxlICUwIHdvdWxkIGhhdmUgYmVlbiBjb3BpZWQgZGVzcGl0ZSBiZWluZyByZXR1cm5lZCBieSBuYW1lLCBkdWUgdG8gaXRzIG5vdCBtYXRjaGluZyB0aGUgZnVuY3Rpb24gcmV0dXJuIHR5cGUlZGlmZnsgKCQgdnMgJCl8fTEsMiIsIDU2MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcmV0dXJuX3R5cGVzdGF0ZV9mb3JfdW5jb25zdW1hYmxlX3R5cGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInJldHVybiBzdGF0ZSBzZXQgZm9yIGFuIHVuY29uc3VtYWJsZSB0eXBlICclMCciLCAxMzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3JldHVybl90eXBlc3RhdGVfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInJldHVybiB2YWx1ZSBub3QgaW4gZXhwZWN0ZWQgc3RhdGU7IGV4cGVjdGVkICclMCcsIG9ic2VydmVkICclMSciLCAxMzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3JldHVybl92YWx1ZV9zaXplLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZXR1cm4gdmFsdWUgb2YgJTAgaXMgYSBsYXJnZSAoJTEgYnl0ZXMpIHBhc3MtYnktdmFsdWUgb2JqZWN0OyBwYXNzIGl0IGJ5IHJlZmVyZW5jZSBpbnN0ZWFkID8iLCAzNDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3JldHVybl92YWx1ZV91ZHQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGhhcyBDLWxpbmthZ2Ugc3BlY2lmaWVkLCBidXQgcmV0dXJucyB1c2VyLWRlZmluZWQgdHlwZSAlMSB3aGljaCBpcyBpbmNvbXBhdGlibGUgd2l0aCBDIiwgNTY0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9yZXR1cm5fdmFsdWVfdWR0X2luY29tcGxldGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGhhcyBDLWxpbmthZ2Ugc3BlY2lmaWVkLCBidXQgcmV0dXJucyBpbmNvbXBsZXRlIHR5cGUgJTEgd2hpY2ggY291bGQgYmUgaW5jb21wYXRpYmxlIHdpdGggQyIsIDU2NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcmlzY3ZfaW50ZXJydXB0X2F0dHJpYnV0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiUklTQy1WICdpbnRlcnJ1cHQnIGF0dHJpYnV0ZSBvbmx5IGFwcGxpZXMgdG8gZnVuY3Rpb25zIHRoYXQgaGF2ZSAlc2VsZWN0e25vIHBhcmFtZXRlcnN8YSAndm9pZCcgcmV0dXJuIHR5cGV9MCIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcmlzY3ZfcmVwZWF0ZWRfaW50ZXJydXB0X2F0dHJpYnV0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmVwZWF0ZWQgUklTQy1WICdpbnRlcnJ1cHQnIGF0dHJpYnV0ZSIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fcm9vdF9pbnN0X21ldGhvZF9ub3RfZm91bmQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImluc3RhbmNlIG1ldGhvZCAlMCBpcyBiZWluZyB1c2VkIG9uICdDbGFzcycgd2hpY2ggaXMgbm90IGluIHRoZSByb290IGNsYXNzIiwgNDY1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zYW1wbGVyX2luaXRpYWxpemVyX2ludmFsaWRfYml0cywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAic2FtcGxlciBpbml0aWFsaXplciBoYXMgaW52YWxpZCAlMCBiaXRzIiwgNjAxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zY2FuZl9ub256ZXJvX3dpZHRoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ6ZXJvIGZpZWxkIHdpZHRoIGluIHNjYW5mIGZvcm1hdCBzdHJpbmcgaXMgdW51c2VkIiwgMjI2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjgpCi1ESUFHKHdhcm5fc2NhbmZfc2Nhbmxpc3RfaW5jb21wbGV0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibm8gY2xvc2luZyAnXScgZm9yICclJVsnIGluIHNjYW5mIGZvcm1hdCBzdHJpbmciLCAyMjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKLURJQUcod2Fybl9zZWNvbmRfYXJnX29mX3ZhX3N0YXJ0X25vdF9sYXN0X25hbWVkX3BhcmFtLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzZWNvbmQgYXJndW1lbnQgdG8gJ3ZhX3N0YXJ0JyBpcyBub3QgdGhlIGxhc3QgbmFtZWQgcGFyYW1ldGVyIiwgNzMwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zZWNvbmRfcGFyYW1ldGVyX3RvX3ZhX2FyZ19uZXZlcl9jb21wYXRpYmxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzZWNvbmQgYXJndW1lbnQgdG8gJ3ZhX2FyZycgaXMgb2YgcHJvbW90YWJsZSB0eXBlICUwOyB0aGlzIHZhX2FyZyBoYXMgdW5kZWZpbmVkIGJlaGF2aW9yIGJlY2F1c2UgYXJndW1lbnRzIHdpbGwgYmUgcHJvbW90ZWQgdG8gJTEiLCA3MzAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3NlY29uZF9wYXJhbWV0ZXJfdG9fdmFfYXJnX25vdF9wb2QsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJzZWNvbmQgYXJndW1lbnQgdG8gJ3ZhX2FyZycgaXMgb2Ygbm9uLVBPRCB0eXBlICUwIiwgNDMyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zZWNvbmRfcGFyYW1ldGVyX3RvX3ZhX2FyZ19vd25lcnNoaXBfcXVhbGlmaWVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAic2Vjb25kIGFyZ3VtZW50IHRvICd2YV9hcmcnIGlzIG9mIEFSQyBvd25lcnNoaXAtcXVhbGlmaWVkIHR5cGUgJTAiLCA0MzIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3NlbGZfYXNzaWdubWVudF9idWlsdGluLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJleHBsaWNpdGx5IGFzc2lnbmluZyB2YWx1ZSBvZiB2YXJpYWJsZSBvZiB0eXBlICUwIHRvIGl0c2VsZiIsIDU2OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fc2VsZl9hc3NpZ25tZW50X292ZXJsb2FkZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImV4cGxpY2l0bHkgYXNzaWduaW5nIHZhbHVlIG9mIHZhcmlhYmxlIG9mIHR5cGUgJTAgdG8gaXRzZWxmIiwgNTcxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zZWxmX21vdmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImV4cGxpY2l0bHkgbW92aW5nIHZhcmlhYmxlIG9mIHR5cGUgJTAgdG8gaXRzZWxmIiwgNTcyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zZXR0ZXJfZ2V0dGVyX2ltcGxfcmVxdWlyZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInByb3BlcnR5ICUwIHJlcXVpcmVzIG1ldGhvZCAlMSB0byBiZSBkZWZpbmVkIC0gdXNlIEBzeW50aGVzaXplLCBAZHluYW1pYyBvciBwcm92aWRlIGEgbWV0aG9kIGltcGxlbWVudGF0aW9uIGluIHRoaXMgY2xhc3MgaW1wbGVtZW50YXRpb24iLCA0NzIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3NldHRlcl9nZXR0ZXJfaW1wbF9yZXF1aXJlZF9pbl9jYXRlZ29yeSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJvcGVydHkgJTAgcmVxdWlyZXMgbWV0aG9kICUxIHRvIGJlIGRlZmluZWQgLSB1c2UgQGR5bmFtaWMgb3IgcHJvdmlkZSBhIG1ldGhvZCBpbXBsZW1lbnRhdGlvbiBpbiB0aGlzIGNhdGVnb3J5IiwgNDcyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zaGFkb3dfZmllbGQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm5vbi1zdGF0aWMgZGF0YSBtZW1iZXIgJTAgb2YgJTEgc2hhZG93cyBtZW1iZXIgaW5oZXJpdGVkIGZyb20gdHlwZSAlMiIsIDU3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCi1ESUFHKHdhcm5fc2hpZnRfZ3RfdHlwZXdpZHRoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzaGlmdCBjb3VudCA+PSB3aWR0aCBvZiB0eXBlIiwgNTg1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zaGlmdF9saHNfbmVnYXRpdmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInNoaWZ0aW5nIGEgbmVnYXRpdmUgc2lnbmVkIHZhbHVlIGlzIHVuZGVmaW5lZCIsIDU4NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fc2hpZnRfbmVnYXRpdmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInNoaWZ0IGNvdW50IGlzIG5lZ2F0aXZlIiwgNTg0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zaGlmdF9yZXN1bHRfZ3RfdHlwZXdpZHRoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzaWduZWQgc2hpZnQgcmVzdWx0ICglMCkgcmVxdWlyZXMgJTEgYml0cyB0byByZXByZXNlbnQsIGJ1dCAlMiBvbmx5IGhhcyAlMyBiaXRzIiwgNTg4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zaGlmdF9yZXN1bHRfc2V0c19zaWduX2JpdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAic2lnbmVkIHNoaWZ0IHJlc3VsdCAoJTApIHNldHMgdGhlIHNpZ24gYml0IG9mIHRoZSBzaGlmdCBleHByZXNzaW9uJ3MgdHlwZSAoJTEpIGFuZCBiZWNvbWVzIG5lZ2F0aXZlIiwgNTg5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zaWRlX2VmZmVjdHNfdHlwZWlkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHByZXNzaW9uIHdpdGggc2lkZSBlZmZlY3RzIHdpbGwgYmUgZXZhbHVhdGVkIGRlc3BpdGUgYmVpbmcgdXNlZCBhcyBhbiBvcGVyYW5kIHRvICd0eXBlaWQnIiwgNTI0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMzIpCi1ESUFHKHdhcm5fc2lkZV9lZmZlY3RzX3VuZXZhbHVhdGVkX2NvbnRleHQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cHJlc3Npb24gd2l0aCBzaWRlIGVmZmVjdHMgaGFzIG5vIGVmZmVjdCBpbiBhbiB1bmV2YWx1YXRlZCBjb250ZXh0IiwgNjcyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMzIpCitESUFHKHdhcm5fcmVtYWluZGVyX2RpdmlzaW9uX2J5X3plcm8sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7cmVtYWluZGVyfGRpdmlzaW9ufTAgYnkgemVybyBpcyB1bmRlZmluZWQiLCAxODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3JldF9hZGRyX2xhYmVsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZXR1cm5pbmcgYWRkcmVzcyBvZiBsYWJlbCwgd2hpY2ggaXMgbG9jYWwiLCA1NzIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3JldF9sb2NhbF90ZW1wX2FkZHJfcmVmLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZXR1cm5pbmcgJXNlbGVjdHthZGRyZXNzIG9mfHJlZmVyZW5jZSB0b30wIGxvY2FsIHRlbXBvcmFyeSBvYmplY3QiLCA1NzIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3JldF9zdGFja19hZGRyX3JlZiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHthZGRyZXNzIG9mfHJlZmVyZW5jZSB0b30wIHN0YWNrIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggJXNlbGVjdHtsb2NhbCB2YXJpYWJsZXxwYXJhbWV0ZXJ9MiAlMSByZXR1cm5lZCIsIDU3MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcmV0dXJuX21pc3NpbmdfZXhwciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgIm5vbi12b2lkICVzZWxlY3R7ZnVuY3Rpb258bWV0aG9kfTEgJTAgc2hvdWxkIHJldHVybiBhIHZhbHVlIiwgNTc1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9yZXR1cm5fc3RkX21vdmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImxvY2FsIHZhcmlhYmxlICUwIHdpbGwgYmUgY29waWVkIGRlc3BpdGUgYmVpbmcgJXNlbGVjdHtyZXR1cm5lZHx0aHJvd259MSBieSBuYW1lIiwgNTczLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9yZXR1cm5fc3RkX21vdmVfaW5fY3h4MTEsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInByaW9yIHRvIHRoZSByZXNvbHV0aW9uIG9mIGEgZGVmZWN0IHJlcG9ydCBhZ2FpbnN0IElTTyBDKysxMSwgbG9jYWwgdmFyaWFibGUgJTAgd291bGQgaGF2ZSBiZWVuIGNvcGllZCBkZXNwaXRlIGJlaW5nIHJldHVybmVkIGJ5IG5hbWUsIGR1ZSB0byBpdHMgbm90IG1hdGNoaW5nIHRoZSBmdW5jdGlvbiByZXR1cm4gdHlwZSVkaWZmeyAoJCB2cyAkKXx9MSwyIiwgNTc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9yZXR1cm5fdHlwZXN0YXRlX2Zvcl91bmNvbnN1bWFibGVfdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicmV0dXJuIHN0YXRlIHNldCBmb3IgYW4gdW5jb25zdW1hYmxlIHR5cGUgJyUwJyIsIDEzNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcmV0dXJuX3R5cGVzdGF0ZV9taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicmV0dXJuIHZhbHVlIG5vdCBpbiBleHBlY3RlZCBzdGF0ZTsgZXhwZWN0ZWQgJyUwJywgb2JzZXJ2ZWQgJyUxJyIsIDEzNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcmV0dXJuX3ZhbHVlX3NpemUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJldHVybiB2YWx1ZSBvZiAlMCBpcyBhIGxhcmdlICglMSBieXRlcykgcGFzcy1ieS12YWx1ZSBvYmplY3Q7IHBhc3MgaXQgYnkgcmVmZXJlbmNlIGluc3RlYWQgPyIsIDM1MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fcmV0dXJuX3ZhbHVlX3VkdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgaGFzIEMtbGlua2FnZSBzcGVjaWZpZWQsIGJ1dCByZXR1cm5zIHVzZXItZGVmaW5lZCB0eXBlICUxIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIEMiLCA1NzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3JldHVybl92YWx1ZV91ZHRfaW5jb21wbGV0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgaGFzIEMtbGlua2FnZSBzcGVjaWZpZWQsIGJ1dCByZXR1cm5zIGluY29tcGxldGUgdHlwZSAlMSB3aGljaCBjb3VsZCBiZSBpbmNvbXBhdGlibGUgd2l0aCBDIiwgNTc2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9yaXNjdl9yZXBlYXRlZF9pbnRlcnJ1cHRfYXR0cmlidXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZXBlYXRlZCBSSVNDLVYgJ2ludGVycnVwdCcgYXR0cmlidXRlIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9yb290X2luc3RfbWV0aG9kX25vdF9mb3VuZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5zdGFuY2UgbWV0aG9kICUwIGlzIGJlaW5nIHVzZWQgb24gJ0NsYXNzJyB3aGljaCBpcyBub3QgaW4gdGhlIHJvb3QgY2xhc3MiLCA0NzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3NhbXBsZXJfaW5pdGlhbGl6ZXJfaW52YWxpZF9iaXRzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJzYW1wbGVyIGluaXRpYWxpemVyIGhhcyBpbnZhbGlkICUwIGJpdHMiLCA2MTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3NjYW5mX25vbnplcm9fd2lkdGgsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInplcm8gZmllbGQgd2lkdGggaW4gc2NhbmYgZm9ybWF0IHN0cmluZyBpcyB1bnVzZWQiLCAyMzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyOCkKK0RJQUcod2Fybl9zY2FuZl9zY2FubGlzdF9pbmNvbXBsZXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJubyBjbG9zaW5nICddJyBmb3IgJyUlWycgaW4gc2NhbmYgZm9ybWF0IHN0cmluZyIsIDIzNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI4KQorRElBRyh3YXJuX3NlY29uZF9hcmdfb2ZfdmFfc3RhcnRfbm90X2xhc3RfbmFtZWRfcGFyYW0sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInNlY29uZCBhcmd1bWVudCB0byAndmFfc3RhcnQnIGlzIG5vdCB0aGUgbGFzdCBuYW1lZCBwYXJhbWV0ZXIiLCA3NDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3NlY29uZF9wYXJhbWV0ZXJfdG9fdmFfYXJnX25ldmVyX2NvbXBhdGlibGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInNlY29uZCBhcmd1bWVudCB0byAndmFfYXJnJyBpcyBvZiBwcm9tb3RhYmxlIHR5cGUgJTA7IHRoaXMgdmFfYXJnIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IgYmVjYXVzZSBhcmd1bWVudHMgd2lsbCBiZSBwcm9tb3RlZCB0byAlMSIsIDc0MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc2Vjb25kX3BhcmFtZXRlcl90b192YV9hcmdfbm90X3BvZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInNlY29uZCBhcmd1bWVudCB0byAndmFfYXJnJyBpcyBvZiBub24tUE9EIHR5cGUgJTAiLCA0NDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3NlY29uZF9wYXJhbWV0ZXJfdG9fdmFfYXJnX293bmVyc2hpcF9xdWFsaWZpZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6RXJyb3IsICJzZWNvbmQgYXJndW1lbnQgdG8gJ3ZhX2FyZycgaXMgb2YgQVJDIG93bmVyc2hpcC1xdWFsaWZpZWQgdHlwZSAlMCIsIDQ0MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc2VsZl9hc3NpZ25tZW50X2J1aWx0aW4sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImV4cGxpY2l0bHkgYXNzaWduaW5nIHZhbHVlIG9mIHZhcmlhYmxlIG9mIHR5cGUgJTAgdG8gaXRzZWxmIiwgNTgxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zZWxmX2Fzc2lnbm1lbnRfb3ZlcmxvYWRlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZXhwbGljaXRseSBhc3NpZ25pbmcgdmFsdWUgb2YgdmFyaWFibGUgb2YgdHlwZSAlMCB0byBpdHNlbGYiLCA1ODMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3NlbGZfbW92ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZXhwbGljaXRseSBtb3ZpbmcgdmFyaWFibGUgb2YgdHlwZSAlMCB0byBpdHNlbGYiLCA1ODQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3NldHRlcl9nZXR0ZXJfaW1wbF9yZXF1aXJlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicHJvcGVydHkgJTAgcmVxdWlyZXMgbWV0aG9kICUxIHRvIGJlIGRlZmluZWQgLSB1c2UgQHN5bnRoZXNpemUsIEBkeW5hbWljIG9yIHByb3ZpZGUgYSBtZXRob2QgaW1wbGVtZW50YXRpb24gaW4gdGhpcyBjbGFzcyBpbXBsZW1lbnRhdGlvbiIsIDQ4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc2V0dGVyX2dldHRlcl9pbXBsX3JlcXVpcmVkX2luX2NhdGVnb3J5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcm9wZXJ0eSAlMCByZXF1aXJlcyBtZXRob2QgJTEgdG8gYmUgZGVmaW5lZCAtIHVzZSBAZHluYW1pYyBvciBwcm92aWRlIGEgbWV0aG9kIGltcGxlbWVudGF0aW9uIGluIHRoaXMgY2F0ZWdvcnkiLCA0ODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3NoYWRvd19maWVsZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHtwYXJhbWV0ZXJ8bm9uLXN0YXRpYyBkYXRhIG1lbWJlcn0zICUwICVzZWxlY3R7fG9mICUxIH0zc2hhZG93cyBtZW1iZXIgaW5oZXJpdGVkIGZyb20gdHlwZSAlMiIsIDU5MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDApCitESUFHKHdhcm5fc2hpZnRfZ3RfdHlwZXdpZHRoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzaGlmdCBjb3VudCA+PSB3aWR0aCBvZiB0eXBlIiwgNTk3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zaGlmdF9saHNfbmVnYXRpdmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInNoaWZ0aW5nIGEgbmVnYXRpdmUgc2lnbmVkIHZhbHVlIGlzIHVuZGVmaW5lZCIsIDU5OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc2hpZnRfbmVnYXRpdmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInNoaWZ0IGNvdW50IGlzIG5lZ2F0aXZlIiwgNTk2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zaGlmdF9yZXN1bHRfZ3RfdHlwZXdpZHRoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzaWduZWQgc2hpZnQgcmVzdWx0ICglMCkgcmVxdWlyZXMgJTEgYml0cyB0byByZXByZXNlbnQsIGJ1dCAlMiBvbmx5IGhhcyAlMyBiaXRzIiwgNjAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zaGlmdF9yZXN1bHRfc2V0c19zaWduX2JpdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAic2lnbmVkIHNoaWZ0IHJlc3VsdCAoJTApIHNldHMgdGhlIHNpZ24gYml0IG9mIHRoZSBzaGlmdCBleHByZXNzaW9uJ3MgdHlwZSAoJTEpIGFuZCBiZWNvbWVzIG5lZ2F0aXZlIiwgNjAxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zaWRlX2VmZmVjdHNfdHlwZWlkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHByZXNzaW9uIHdpdGggc2lkZSBlZmZlY3RzIHdpbGwgYmUgZXZhbHVhdGVkIGRlc3BpdGUgYmVpbmcgdXNlZCBhcyBhbiBvcGVyYW5kIHRvICd0eXBlaWQnIiwgNTM2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMzIpCitESUFHKHdhcm5fc2lkZV9lZmZlY3RzX3VuZXZhbHVhdGVkX2NvbnRleHQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cHJlc3Npb24gd2l0aCBzaWRlIGVmZmVjdHMgaGFzIG5vIGVmZmVjdCBpbiBhbiB1bmV2YWx1YXRlZCBjb250ZXh0IiwgNjg1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMzIpCiBESUFHKHdhcm5fc2lnbmVkX2JpdGZpZWxkX2VudW1fY29udmVyc2lvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAic2lnbmVkIGJpdC1maWVsZCAlMCBuZWVkcyBhbiBleHRyYSBiaXQgdG8gcmVwcmVzZW50IHRoZSBsYXJnZXN0IHBvc2l0aXZlIGVudW1lcmF0b3JzIG9mICUxIiwgNjAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKLURJQUcod2Fybl9zaXplb2ZfYXJyYXlfZGVjYXksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInNpemVvZiBvbiBwb2ludGVyIG9wZXJhdGlvbiB3aWxsIHJldHVybiBzaXplIG9mICUwIGluc3RlYWQgb2YgJTEiLCA1OTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3NpemVvZl9hcnJheV9wYXJhbSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic2l6ZW9mIG9uIGFycmF5IGZ1bmN0aW9uIHBhcmFtZXRlciB3aWxsIHJldHVybiBzaXplIG9mICUwIGluc3RlYWQgb2YgJTEiLCA1OTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3NpemVvZl9wb2ludGVyX2V4cHJfbWVtYWNjZXNzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInJTAnIGNhbGwgb3BlcmF0ZXMgb24gb2JqZWN0cyBvZiB0eXBlICUxIHdoaWxlIHRoZSBzaXplIGlzIGJhc2VkIG9uIGEgZGlmZmVyZW50IHR5cGUgJTIiLCA1OTcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3NpemVvZl9hcnJheV9kZWNheSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic2l6ZW9mIG9uIHBvaW50ZXIgb3BlcmF0aW9uIHdpbGwgcmV0dXJuIHNpemUgb2YgJTAgaW5zdGVhZCBvZiAlMSIsIDYwOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc2l6ZW9mX2FycmF5X3BhcmFtLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzaXplb2Ygb24gYXJyYXkgZnVuY3Rpb24gcGFyYW1ldGVyIHdpbGwgcmV0dXJuIHNpemUgb2YgJTAgaW5zdGVhZCBvZiAlMSIsIDYwNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc2l6ZW9mX3BvaW50ZXJfZXhwcl9tZW1hY2Nlc3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiclMCcgY2FsbCBvcGVyYXRlcyBvbiBvYmplY3RzIG9mIHR5cGUgJTEgd2hpbGUgdGhlIHNpemUgaXMgYmFzZWQgb24gYSBkaWZmZXJlbnQgdHlwZSAlMiIsIDYxMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fc2l6ZW9mX3BvaW50ZXJfZXhwcl9tZW1hY2Nlc3Nfbm90ZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImRpZCB5b3UgbWVhbiB0byAlc2VsZWN0e2RlcmVmZXJlbmNlIHRoZSBhcmd1bWVudCB0byAnc2l6ZW9mJyAoYW5kIG11bHRpcGx5IGl0IGJ5IHRoZSBudW1iZXIgb2YgZWxlbWVudHMpfHJlbW92ZSB0aGUgYWRkcmVzc29mIGluIHRoZSBhcmd1bWVudCB0byAnc2l6ZW9mJyAoYW5kIG11bHRpcGx5IGl0IGJ5IHRoZSBudW1iZXIgb2YgZWxlbWVudHMpfHByb3ZpZGUgYW4gZXhwbGljaXQgbGVuZ3RofTA/IiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fc2l6ZW9mX3BvaW50ZXJfdHlwZV9tZW1hY2Nlc3MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFyZ3VtZW50IHRvICdzaXplb2YnIGluICUwIGNhbGwgaXMgdGhlIHNhbWUgcG9pbnRlciB0eXBlICUxIGFzIHRoZSAlc2VsZWN0e2Rlc3RpbmF0aW9ufHNvdXJjZX0yOyBleHBlY3RlZCAlMyBvciBhbiBleHBsaWNpdCBsZW5ndGgiLCA1OTcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3NvbWV0aW1lc191bmluaXRfdmFyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ2YXJpYWJsZSAlMCBpcyAlc2VsZWN0e3VzZWR8Y2FwdHVyZWR9MSB1bmluaXRpYWxpemVkIHdoZW5ldmVyICVzZWxlY3R7JyUzJyBjb25kaXRpb24gaXMgJXNlbGVjdHt0cnVlfGZhbHNlfTR8JyUzJyBsb29wICVzZWxlY3R7aXMgZW50ZXJlZHxleGl0cyBiZWNhdXNlIGl0cyBjb25kaXRpb24gaXMgZmFsc2V9NHwnJTMnIGxvb3AgJXNlbGVjdHtjb25kaXRpb24gaXMgdHJ1ZXxleGl0cyBiZWNhdXNlIGl0cyBjb25kaXRpb24gaXMgZmFsc2V9NHxzd2l0Y2ggJTMgaXMgdGFrZW58aXRzIGRlY2xhcmF0aW9uIGlzIHJlYWNoZWR8JTMgaXMgY2FsbGVkfTIiLCA1OTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3N0YW5kYWxvbmVfc3BlY2lmaWVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInJTAnIGlnbm9yZWQgb24gdGhpcyBkZWNsYXJhdGlvbiIsIDM5NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fc3RhdGljX2FycmF5X3Rvb19zbWFsbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXJyYXkgYXJndW1lbnQgaXMgdG9vIHNtYWxsOyBjb250YWlucyAlMCBlbGVtZW50cywgY2FsbGVlIHJlcXVpcmVzIGF0IGxlYXN0ICUxIiwgMzIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3N0YXRpY19sb2NhbF9pbl9leHRlcm5faW5saW5lLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJub24tY29uc3RhbnQgc3RhdGljIGxvY2FsIHZhcmlhYmxlIGluIGlubGluZSBmdW5jdGlvbiBtYXkgYmUgZGlmZmVyZW50IGluIGRpZmZlcmVudCBmaWxlcyIsIDYwNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fc3RhdGljX21haW4sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidtYWluJyBzaG91bGQgbm90IGJlIGRlY2xhcmVkIHN0YXRpYyIsIDM1NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fc3RhdGljX3NlbGZfcmVmZXJlbmNlX2luX2luaXQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInN0YXRpYyB2YXJpYWJsZSAlMCBpcyBzdXNwaWNpb3VzbHkgdXNlZCB3aXRoaW4gaXRzIG93biBpbml0aWFsaXphdGlvbiIsIDYwNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fc3RyaWN0X211bHRpcGxlX21ldGhvZF9kZWNsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJtdWx0aXBsZSBtZXRob2RzIG5hbWVkICUwIGZvdW5kIiwgNjIxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zdHJpY3RfcHJvdG90eXBlcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidGhpcyAlc2VsZWN0e2Z1bmN0aW9uIGRlY2xhcmF0aW9uIGlzIG5vdHxibG9jayBkZWNsYXJhdGlvbiBpcyBub3R8b2xkLXN0eWxlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgbm90IHByZWNlZGVkIGJ5fTAgYSBwcm90b3R5cGUiLCA2MjAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3N0cmluZ19wbHVzX2NoYXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFkZGluZyAlMCB0byBhIHN0cmluZyBwb2ludGVyIGRvZXMgbm90IGFwcGVuZCB0byB0aGUgc3RyaW5nIiwgNjI0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zdHJpbmdfcGx1c19pbnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFkZGluZyAlMCB0byBhIHN0cmluZyBkb2VzIG5vdCBhcHBlbmQgdG8gdGhlIHN0cmluZyIsIDYyNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fc3RyaW5nY29tcGFyZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmVzdWx0IG9mIGNvbXBhcmlzb24gYWdhaW5zdCAlc2VsZWN0e2Egc3RyaW5nIGxpdGVyYWx8QGVuY29kZX0wIGlzIHVuc3BlY2lmaWVkICh1c2Ugc3RybmNtcCBpbnN0ZWFkKSIsIDYyMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fc3RybGNweWNhdF93cm9uZ19zaXplLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzaXplIGFyZ3VtZW50IGluICUwIGNhbGwgYXBwZWFycyB0byBiZSBzaXplIG9mIHRoZSBzb3VyY2U7IGV4cGVjdGVkIHRoZSBzaXplIG9mIHRoZSBkZXN0aW5hdGlvbiIsIDYyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fc3RybmNhdF9sYXJnZV9zaXplLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0aGUgdmFsdWUgb2YgdGhlIHNpemUgYXJndW1lbnQgaW4gJ3N0cm5jYXQnIGlzIHRvbyBsYXJnZSwgbWlnaHQgbGVhZCB0byBhIGJ1ZmZlciBvdmVyZmxvdyIsIDYyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fc3RybmNhdF9zcmNfc2l6ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic2l6ZSBhcmd1bWVudCBpbiAnc3RybmNhdCcgY2FsbCBhcHBlYXJzIHRvIGJlIHNpemUgb2YgdGhlIHNvdXJjZSIsIDYyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fc3RybmNhdF93cm9uZ19zaXplLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0aGUgdmFsdWUgb2YgdGhlIHNpemUgYXJndW1lbnQgdG8gJ3N0cm5jYXQnIGlzIHdyb25nIiwgNjI3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zdHJ1Y3RfY2xhc3NfcHJldmlvdXNfdGFnX21pc21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlMiBkZWZpbmVkIGFzICVzZWxlY3R7YSBzdHJ1Y3R8YW4gaW50ZXJmYWNlfGEgY2xhc3N9MCVzZWxlY3R7fCB0ZW1wbGF0ZX0xIGhlcmUgYnV0IHByZXZpb3VzbHkgZGVjbGFyZWQgYXMgJXNlbGVjdHthIHN0cnVjdHxhbiBpbnRlcmZhY2V8YSBjbGFzc30zJXNlbGVjdHt8IHRlbXBsYXRlfTEiLCAzOTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3N0cnVjdF9jbGFzc190YWdfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiVzZWxlY3R7c3RydWN0fGludGVyZmFjZXxjbGFzc30wJXNlbGVjdHt8IHRlbXBsYXRlfTEgJTIgd2FzIHByZXZpb3VzbHkgZGVjbGFyZWQgYXMgYSAlc2VsZWN0e3N0cnVjdHxpbnRlcmZhY2V8Y2xhc3N9MyVzZWxlY3R7fCB0ZW1wbGF0ZX0xIiwgMzk0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zdWJfcHRyX3plcm9fc2l6ZV90eXBlcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic3VidHJhY3Rpb24gb2YgcG9pbnRlcnMgdG8gdHlwZSAlMCBvZiB6ZXJvIHNpemUgaGFzIHVuZGVmaW5lZCBiZWhhdmlvciIsIDUxOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fc3Vib2JqZWN0X2luaXRpYWxpemVyX292ZXJyaWRlcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic3Vib2JqZWN0IGluaXRpYWxpemF0aW9uIG92ZXJyaWRlcyBpbml0aWFsaXphdGlvbiBvZiBvdGhlciBmaWVsZHMgd2l0aGluIGl0cyBlbmNsb3Npbmcgc3Vib2JqZWN0IiwgMzE1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zdWJzY3JpcHRfaXNfY2hhciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYXJyYXkgc3Vic2NyaXB0IGlzIG9mIHR5cGUgJ2NoYXInIiwgMTIxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zdWdnZXN0X25vcmV0dXJuX2Jsb2NrLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJibG9jayBjb3VsZCBiZSBkZWNsYXJlZCB3aXRoIGF0dHJpYnV0ZSAnbm9yZXR1cm4nIiwgNDAzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zdWdnZXN0X25vcmV0dXJuX2Z1bmN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlc2VsZWN0e2Z1bmN0aW9ufG1ldGhvZH0wICUxIGNvdWxkIGJlIGRlY2xhcmVkIHdpdGggYXR0cmlidXRlICdub3JldHVybiciLCA0MDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3N1cGVyY2xhc3NfdmFyaWFibGVfc2l6ZWRfdHlwZV9ub3RfYXRfZW5kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmaWVsZCAlMCBjYW4gb3ZlcndyaXRlIGluc3RhbmNlIHZhcmlhYmxlICUxIHdpdGggdmFyaWFibGUgc2l6ZWQgdHlwZSAlMiBpbiBzdXBlcmNsYXNzICUzIiwgNDU4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl9zdXNwaWNpb3VzX2J6ZXJvX3NpemUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIidzaXplJyBhcmd1bWVudCB0byBiemVybyBpcyAnMCciLCA2MjksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3N1c3BpY2lvdXNfc2l6ZW9mX21lbXNldCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHsnc2l6ZScgYXJndW1lbnQgdG8gbWVtc2V0IGlzICcwJ3xzZXR0aW5nIGJ1ZmZlciB0byBhICdzaXplb2YnIGV4cHJlc3Npb259MDsgZGlkIHlvdSBtZWFuIHRvIHRyYW5zcG9zZSB0aGUgbGFzdCB0d28gYXJndW1lbnRzPyIsIDM1OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fc3luY19mZXRjaF9hbmRfbmFuZF9zZW1hbnRpY3NfY2hhbmdlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0aGUgc2VtYW50aWNzIG9mIHRoaXMgaW50cmluc2ljIGNoYW5nZWQgd2l0aCBHQ0MgdmVyc2lvbiA0LjQgLSB0aGUgbmV3ZXIgc2VtYW50aWNzIGFyZSBwcm92aWRlZCBoZXJlIiwgNjM1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zaXplb2ZfcG9pbnRlcl90eXBlX21lbWFjY2VzcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYXJndW1lbnQgdG8gJ3NpemVvZicgaW4gJTAgY2FsbCBpcyB0aGUgc2FtZSBwb2ludGVyIHR5cGUgJTEgYXMgdGhlICVzZWxlY3R7ZGVzdGluYXRpb258c291cmNlfTI7IGV4cGVjdGVkICUzIG9yIGFuIGV4cGxpY2l0IGxlbmd0aCIsIDYxMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc29tZXRpbWVzX3VuaW5pdF92YXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInZhcmlhYmxlICUwIGlzICVzZWxlY3R7dXNlZHxjYXB0dXJlZH0xIHVuaW5pdGlhbGl6ZWQgd2hlbmV2ZXIgJXNlbGVjdHsnJTMnIGNvbmRpdGlvbiBpcyAlc2VsZWN0e3RydWV8ZmFsc2V9NHwnJTMnIGxvb3AgJXNlbGVjdHtpcyBlbnRlcmVkfGV4aXRzIGJlY2F1c2UgaXRzIGNvbmRpdGlvbiBpcyBmYWxzZX00fCclMycgbG9vcCAlc2VsZWN0e2NvbmRpdGlvbiBpcyB0cnVlfGV4aXRzIGJlY2F1c2UgaXRzIGNvbmRpdGlvbiBpcyBmYWxzZX00fHN3aXRjaCAlMyBpcyB0YWtlbnxpdHMgZGVjbGFyYXRpb24gaXMgcmVhY2hlZHwlMyBpcyBjYWxsZWR9MiIsIDYxMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc3RhbmRhbG9uZV9zcGVjaWZpZXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiclMCcgaWdub3JlZCBvbiB0aGlzIGRlY2xhcmF0aW9uIiwgNDA1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zdGF0aWNfYXJyYXlfdG9vX3NtYWxsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhcnJheSBhcmd1bWVudCBpcyB0b28gc21hbGw7ICVzZWxlY3R7Y29udGFpbnMgJTAgZWxlbWVudHN8aXMgb2Ygc2l6ZSAlMH0yLCBjYWxsZWUgcmVxdWlyZXMgYXQgbGVhc3QgJTEiLCAzMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc3RhdGljX2xvY2FsX2luX2V4dGVybl9pbmxpbmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm5vbi1jb25zdGFudCBzdGF0aWMgbG9jYWwgdmFyaWFibGUgaW4gaW5saW5lIGZ1bmN0aW9uIG1heSBiZSBkaWZmZXJlbnQgaW4gZGlmZmVyZW50IGZpbGVzIiwgNjE5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zdGF0aWNfbWFpbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ21haW4nIHNob3VsZCBub3QgYmUgZGVjbGFyZWQgc3RhdGljIiwgMzYzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zdGF0aWNfc2VsZl9yZWZlcmVuY2VfaW5faW5pdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAic3RhdGljIHZhcmlhYmxlICUwIGlzIHN1c3BpY2lvdXNseSB1c2VkIHdpdGhpbiBpdHMgb3duIGluaXRpYWxpemF0aW9uIiwgNjIwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zdHJpY3RfbXVsdGlwbGVfbWV0aG9kX2RlY2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm11bHRpcGxlIG1ldGhvZHMgbmFtZWQgJTAgZm91bmQiLCA2MzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3N0cmljdF9wcm90b3R5cGVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ0aGlzICVzZWxlY3R7ZnVuY3Rpb24gZGVjbGFyYXRpb24gaXMgbm90fGJsb2NrIGRlY2xhcmF0aW9uIGlzIG5vdHxvbGQtc3R5bGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBub3QgcHJlY2VkZWQgYnl9MCBhIHByb3RvdHlwZSIsIDYzMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc3RyaW5nX3BsdXNfY2hhciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYWRkaW5nICUwIHRvIGEgc3RyaW5nIHBvaW50ZXIgZG9lcyBub3QgYXBwZW5kIHRvIHRoZSBzdHJpbmciLCA2MzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3N0cmluZ19wbHVzX2ludCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiYWRkaW5nICUwIHRvIGEgc3RyaW5nIGRvZXMgbm90IGFwcGVuZCB0byB0aGUgc3RyaW5nIiwgNjM4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zdHJpbmdjb21wYXJlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJyZXN1bHQgb2YgY29tcGFyaXNvbiBhZ2FpbnN0ICVzZWxlY3R7YSBzdHJpbmcgbGl0ZXJhbHxAZW5jb2RlfTAgaXMgdW5zcGVjaWZpZWQgKHVzZSBzdHJuY21wIGluc3RlYWQpIiwgNjM1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zdHJsY3B5Y2F0X3dyb25nX3NpemUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInNpemUgYXJndW1lbnQgaW4gJTAgY2FsbCBhcHBlYXJzIHRvIGJlIHNpemUgb2YgdGhlIHNvdXJjZTsgZXhwZWN0ZWQgdGhlIHNpemUgb2YgdGhlIGRlc3RpbmF0aW9uIiwgNjM5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zdHJuY2F0X2xhcmdlX3NpemUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRoZSB2YWx1ZSBvZiB0aGUgc2l6ZSBhcmd1bWVudCBpbiAnc3RybmNhdCcgaXMgdG9vIGxhcmdlLCBtaWdodCBsZWFkIHRvIGEgYnVmZmVyIG92ZXJmbG93IiwgNjQwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zdHJuY2F0X3NyY19zaXplLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzaXplIGFyZ3VtZW50IGluICdzdHJuY2F0JyBjYWxsIGFwcGVhcnMgdG8gYmUgc2l6ZSBvZiB0aGUgc291cmNlIiwgNjQwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zdHJuY2F0X3dyb25nX3NpemUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRoZSB2YWx1ZSBvZiB0aGUgc2l6ZSBhcmd1bWVudCB0byAnc3RybmNhdCcgaXMgd3JvbmciLCA2NDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3N0cnVjdF9jbGFzc19wcmV2aW91c190YWdfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUyIGRlZmluZWQgYXMgJXNlbGVjdHthIHN0cnVjdHxhbiBpbnRlcmZhY2V8YSBjbGFzc30wJXNlbGVjdHt8IHRlbXBsYXRlfTEgaGVyZSBidXQgcHJldmlvdXNseSBkZWNsYXJlZCBhcyAlc2VsZWN0e2Egc3RydWN0fGFuIGludGVyZmFjZXxhIGNsYXNzfTMlc2VsZWN0e3wgdGVtcGxhdGV9MTsgdGhpcyBpcyB2YWxpZCwgYnV0IG1heSByZXN1bHQgaW4gbGlua2VyIGVycm9ycyB1bmRlciB0aGUgTWljcm9zb2Z0IEMrKyBBQkkiLCA0MDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3N0cnVjdF9jbGFzc190YWdfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiVzZWxlY3R7c3RydWN0fGludGVyZmFjZXxjbGFzc30wJXNlbGVjdHt8IHRlbXBsYXRlfTEgJTIgd2FzIHByZXZpb3VzbHkgZGVjbGFyZWQgYXMgYSAlc2VsZWN0e3N0cnVjdHxpbnRlcmZhY2V8Y2xhc3N9MyVzZWxlY3R7fCB0ZW1wbGF0ZX0xOyB0aGlzIGlzIHZhbGlkLCBidXQgbWF5IHJlc3VsdCBpbiBsaW5rZXIgZXJyb3JzIHVuZGVyIHRoZSBNaWNyb3NvZnQgQysrIEFCSSIsIDQwMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc3ViX3B0cl96ZXJvX3NpemVfdHlwZXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInN1YnRyYWN0aW9uIG9mIHBvaW50ZXJzIHRvIHR5cGUgJTAgb2YgemVybyBzaXplIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IiLCA1MzAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3N1Ym9iamVjdF9pbml0aWFsaXplcl9vdmVycmlkZXMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInN1Ym9iamVjdCBpbml0aWFsaXphdGlvbiBvdmVycmlkZXMgaW5pdGlhbGl6YXRpb24gb2Ygb3RoZXIgZmllbGRzIHdpdGhpbiBpdHMgZW5jbG9zaW5nIHN1Ym9iamVjdCIsIDMyNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc3Vic2NyaXB0X2lzX2NoYXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImFycmF5IHN1YnNjcmlwdCBpcyBvZiB0eXBlICdjaGFyJyIsIDEyMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc3VnZ2VzdF9ub3JldHVybl9ibG9jaywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYmxvY2sgY291bGQgYmUgZGVjbGFyZWQgd2l0aCBhdHRyaWJ1dGUgJ25vcmV0dXJuJyIsIDQxMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc3VnZ2VzdF9ub3JldHVybl9mdW5jdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHtmdW5jdGlvbnxtZXRob2R9MCAlMSBjb3VsZCBiZSBkZWNsYXJlZCB3aXRoIGF0dHJpYnV0ZSAnbm9yZXR1cm4nIiwgNDEyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zdXBlcmNsYXNzX3ZhcmlhYmxlX3NpemVkX3R5cGVfbm90X2F0X2VuZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZmllbGQgJTAgY2FuIG92ZXJ3cml0ZSBpbnN0YW5jZSB2YXJpYWJsZSAlMSB3aXRoIHZhcmlhYmxlIHNpemVkIHR5cGUgJTIgaW4gc3VwZXJjbGFzcyAlMyIsIDQ2OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fc3VzcGljaW91c19iemVyb19zaXplLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInc2l6ZScgYXJndW1lbnQgdG8gYnplcm8gaXMgJzAnIiwgNjQyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl9zdXNwaWNpb3VzX3NpemVvZl9tZW1zZXQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7J3NpemUnIGFyZ3VtZW50IHRvIG1lbXNldCBpcyAnMCd8c2V0dGluZyBidWZmZXIgdG8gYSAnc2l6ZW9mJyBleHByZXNzaW9ufTA7IGRpZCB5b3UgbWVhbiB0byB0cmFuc3Bvc2UgdGhlIGxhc3QgdHdvIGFyZ3VtZW50cz8iLCAzNjgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3N5bmNfZmV0Y2hfYW5kX25hbmRfc2VtYW50aWNzX2NoYW5nZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidGhlIHNlbWFudGljcyBvZiB0aGlzIGludHJpbnNpYyBjaGFuZ2VkIHdpdGggR0NDIHZlcnNpb24gNC40IC0gdGhlIG5ld2VyIHNlbWFudGljcyBhcmUgcHJvdmlkZWQgaGVyZSIsIDY0OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fdGFraW5nX2FkZHJlc3Nfb2ZfcGFja2VkX21lbWJlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidGFraW5nIGFkZHJlc3Mgb2YgcGFja2VkIG1lbWJlciAlMCBvZiBjbGFzcyBvciBzdHJ1Y3R1cmUgJXExIG1heSByZXN1bHQgaW4gYW4gdW5hbGlnbmVkIHBvaW50ZXIgdmFsdWUiLCAxMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdGF1dG9sb2dpY2FsX2Jvb2xfY29tcGFyZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmVzdWx0IG9mIGNvbXBhcmlzb24gb2YgJXNlbGVjdHtjb25zdGFudCAlMHx0cnVlfGZhbHNlfTEgd2l0aCAlc2VsZWN0e2V4cHJlc3Npb24gb2YgdHlwZSAlMnxib29sZWFuIGV4cHJlc3Npb259MyBpcyBhbHdheXMgJTQiLCA2MzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3RhdXRvbG9naWNhbF9jb25zdGFudF9jb21wYXJlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJyZXN1bHQgb2YgY29tcGFyaXNvbiAlc2VsZWN0eyUzfCUxfTAgJTIgJXNlbGVjdHslMXwlM30wIGlzIGFsd2F5cyAlNCIsIDY0MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdGF1dG9sb2dpY2FsX292ZXJsYXBfY29tcGFyaXNvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAib3ZlcmxhcHBpbmcgY29tcGFyaXNvbnMgYWx3YXlzIGV2YWx1YXRlIHRvICVzZWxlY3R7ZmFsc2V8dHJ1ZX0wIiwgNjQxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl90ZW1wbGF0ZV9hcmdfbmVnYXRpdmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm5vbi10eXBlIHRlbXBsYXRlIGFyZ3VtZW50IHdpdGggdmFsdWUgJyUwJyBjb252ZXJ0ZWQgdG8gJyUxJyBmb3IgdW5zaWduZWQgdGVtcGxhdGUgcGFyYW1ldGVyIG9mIHR5cGUgJTIiLCAxMzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKLURJQUcod2Fybl90ZW1wbGF0ZV9hcmdfdG9vX2xhcmdlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJub24tdHlwZSB0ZW1wbGF0ZSBhcmd1bWVudCB2YWx1ZSAnJTAnIHRydW5jYXRlZCB0byAnJTEnIGZvciB0ZW1wbGF0ZSBwYXJhbWV0ZXIgb2YgdHlwZSAlMiIsIDEzNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQorRElBRyh3YXJuX3RhdXRvbG9naWNhbF9ib29sX2NvbXBhcmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlc3VsdCBvZiBjb21wYXJpc29uIG9mICVzZWxlY3R7Y29uc3RhbnQgJTB8dHJ1ZXxmYWxzZX0xIHdpdGggJXNlbGVjdHtleHByZXNzaW9uIG9mIHR5cGUgJTJ8Ym9vbGVhbiBleHByZXNzaW9ufTMgaXMgYWx3YXlzICU0IiwgNjUxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl90YXV0b2xvZ2ljYWxfY29uc3RhbnRfY29tcGFyZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicmVzdWx0IG9mIGNvbXBhcmlzb24gJXNlbGVjdHslM3wlMX0wICUyICVzZWxlY3R7JTF8JTN9MCBpcyBhbHdheXMgJTQiLCA2NTYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3RhdXRvbG9naWNhbF9vdmVybGFwX2NvbXBhcmlzb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm92ZXJsYXBwaW5nIGNvbXBhcmlzb25zIGFsd2F5cyBldmFsdWF0ZSB0byAlc2VsZWN0e2ZhbHNlfHRydWV9MCIsIDY1NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdGVtcGxhdGVfYXJnX25lZ2F0aXZlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJub24tdHlwZSB0ZW1wbGF0ZSBhcmd1bWVudCB3aXRoIHZhbHVlICclMCcgY29udmVydGVkIHRvICclMScgZm9yIHVuc2lnbmVkIHRlbXBsYXRlIHBhcmFtZXRlciBvZiB0eXBlICUyIiwgMTM3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCitESUFHKHdhcm5fdGVtcGxhdGVfYXJnX3Rvb19sYXJnZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibm9uLXR5cGUgdGVtcGxhdGUgYXJndW1lbnQgdmFsdWUgJyUwJyB0cnVuY2F0ZWQgdG8gJyUxJyBmb3IgdGVtcGxhdGUgcGFyYW1ldGVyIG9mIHR5cGUgJTIiLCAxMzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNCkKIERJQUcod2Fybl90ZW1wbGF0ZV9leHBvcnRfdW5zdXBwb3J0ZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cG9ydGVkIHRlbXBsYXRlcyBhcmUgdW5zdXBwb3J0ZWQiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl90ZW1wbGF0ZV9xdWFsaWZpZWRfZnJpZW5kX2lnbm9yZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlcGVuZGVudCBuZXN0ZWQgbmFtZSBzcGVjaWZpZXIgJyUwJyBmb3IgZnJpZW5kIHRlbXBsYXRlIGRlY2xhcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQ7IGlnbm9yaW5nIHRoaXMgZnJpZW5kIGRlY2xhcmF0aW9uIiwgNjk5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl90ZW1wbGF0ZV9xdWFsaWZpZWRfZnJpZW5kX3Vuc3VwcG9ydGVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZXBlbmRlbnQgbmVzdGVkIG5hbWUgc3BlY2lmaWVyICclMCcgZm9yIGZyaWVuZCBjbGFzcyBkZWNsYXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkOyB0dXJuaW5nIG9mZiBhY2Nlc3MgY29udHJvbCBmb3IgJTEiLCA2OTksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3RlbXBsYXRlX3F1YWxpZmllZF9mcmllbmRfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZGVwZW5kZW50IG5lc3RlZCBuYW1lIHNwZWNpZmllciAnJTAnIGZvciBmcmllbmQgdGVtcGxhdGUgZGVjbGFyYXRpb24gaXMgbm90IHN1cHBvcnRlZDsgaWdub3JpbmcgdGhpcyBmcmllbmQgZGVjbGFyYXRpb24iLCA3MTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3RlbXBsYXRlX3F1YWxpZmllZF9mcmllbmRfdW5zdXBwb3J0ZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImRlcGVuZGVudCBuZXN0ZWQgbmFtZSBzcGVjaWZpZXIgJyUwJyBmb3IgZnJpZW5kIGNsYXNzIGRlY2xhcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQ7IHR1cm5pbmcgb2ZmIGFjY2VzcyBjb250cm9sIGZvciAlMSIsIDcxMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fdGVtcGxhdGVfc3BlY19leHRyYV9oZWFkZXJzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJleHRyYW5lb3VzIHRlbXBsYXRlIHBhcmFtZXRlciBsaXN0IGluIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fdGVudGF0aXZlX2luY29tcGxldGVfYXJyYXksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRlbnRhdGl2ZSBhcnJheSBkZWZpbml0aW9uIGFzc3VtZWQgdG8gaGF2ZSBvbmUgZWxlbWVudCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3RoaXNfYm9vbF9jb252ZXJzaW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIndGhpcycgcG9pbnRlciBjYW5ub3QgYmUgbnVsbCBpbiB3ZWxsLWRlZmluZWQgQysrIGNvZGU7IHBvaW50ZXIgbWF5IGJlIGFzc3VtZWQgdG8gYWx3YXlzIGNvbnZlcnQgdG8gdHJ1ZSIsIDY2NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQotRElBRyh3YXJuX3RoaXNfbnVsbF9jb21wYXJlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIndGhpcycgcG9pbnRlciBjYW5ub3QgYmUgbnVsbCBpbiB3ZWxsLWRlZmluZWQgQysrIGNvZGU7IGNvbXBhcmlzb24gbWF5IGJlIGFzc3VtZWQgdG8gYWx3YXlzIGV2YWx1YXRlIHRvICVzZWxlY3R7dHJ1ZXxmYWxzZX0wIiwgNjQ0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl90aHJlYWRfYXR0cmlidXRlX2FyZ3VtZW50X25vdF9sb2NrYWJsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgYXR0cmlidXRlIHJlcXVpcmVzIGFyZ3VtZW50cyB3aG9zZSB0eXBlIGlzIGFubm90YXRlZCB3aXRoICdjYXBhYmlsaXR5JyBhdHRyaWJ1dGU7IHR5cGUgaGVyZSBpcyAlMSIsIDY1MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdGhyZWFkX2F0dHJpYnV0ZV9kZWNsX25vdF9sb2NrYWJsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgYXR0cmlidXRlIGNhbiBvbmx5IGJlIGFwcGxpZWQgaW4gYSBjb250ZXh0IGFubm90YXRlZCB3aXRoICdjYXBhYmlsaXR5KFwibXV0ZXhcIiknIGF0dHJpYnV0ZSIsIDY1MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdGhyZWFkX2F0dHJpYnV0ZV9kZWNsX25vdF9wb2ludGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlMCBvbmx5IGFwcGxpZXMgdG8gcG9pbnRlciB0eXBlczsgdHlwZSBoZXJlIGlzICUxIiwgNjUwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl90aHJlYWRfYXR0cmlidXRlX2lnbm9yZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImlnbm9yaW5nICUwIGF0dHJpYnV0ZSBiZWNhdXNlIGl0cyBhcmd1bWVudCBpcyBpbnZhbGlkIiwgNjUwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl90aHJlYWRfYXR0cmlidXRlX25vdF9vbl9jYXBhYmlsaXR5X21lbWJlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgYXR0cmlidXRlIHdpdGhvdXQgY2FwYWJpbGl0eSBhcmd1bWVudHMgcmVmZXJzIHRvICd0aGlzJywgYnV0ICUxIGlzbid0IGFubm90YXRlZCB3aXRoICdjYXBhYmlsaXR5JyBvciAnc2NvcGVkX2xvY2thYmxlJyBhdHRyaWJ1dGUiLCA2NTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3RocmVhZF9hdHRyaWJ1dGVfbm90X29uX25vbl9zdGF0aWNfbWVtYmVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlMCBhdHRyaWJ1dGUgd2l0aG91dCBjYXBhYmlsaXR5IGFyZ3VtZW50cyBjYW4gb25seSBiZSBhcHBsaWVkIHRvIG5vbi1zdGF0aWMgbWV0aG9kcyBvZiBhIGNsYXNzIiwgNjUwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl90aHJlYWRfc2FmZXR5X2JldGEsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIlRocmVhZCBzYWZldHkgYmV0YSB3YXJuaW5nLiIsIDY1MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdGhyZWFkX3NhZmV0eV92ZXJib3NlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJUaHJlYWQgc2FmZXR5IHZlcmJvc2Ugd2FybmluZy4iLCA2NTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3Rocm93X2luX25vZXhjZXB0X2Z1bmMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGhhcyBhIG5vbi10aHJvd2luZyBleGNlcHRpb24gc3BlY2lmaWNhdGlvbiBidXQgY2FuIHN0aWxsIHRocm93IiwgMjA1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl90cmFuc3BhcmVudF91bmlvbl9hdHRyaWJ1dGVfZmllbGRfc2l6ZV9hbGlnbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHthbGlnbm1lbnR8c2l6ZX0wIG9mIGZpZWxkICUxICglMiBiaXRzKSBkb2VzIG5vdCBtYXRjaCB0aGUgJXNlbGVjdHthbGlnbm1lbnR8c2l6ZX0wIG9mIHRoZSBmaXJzdCBmaWVsZCBpbiB0cmFuc3BhcmVudCB1bmlvbjsgdHJhbnNwYXJlbnRfdW5pb24gYXR0cmlidXRlIGlnbm9yZWQiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3RyYW5zcGFyZW50X3VuaW9uX2F0dHJpYnV0ZV9mbG9hdGluZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZmlyc3QgZmllbGQgb2YgYSB0cmFuc3BhcmVudCB1bmlvbiBjYW5ub3QgaGF2ZSAlc2VsZWN0e2Zsb2F0aW5nIHBvaW50fHZlY3Rvcn0wIHR5cGUgJTE7IHRyYW5zcGFyZW50X3VuaW9uIGF0dHJpYnV0ZSBpZ25vcmVkIiwgMjc0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl90cmFuc3BhcmVudF91bmlvbl9hdHRyaWJ1dGVfbm90X2RlZmluaXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRyYW5zcGFyZW50X3VuaW9uIGF0dHJpYnV0ZSBjYW4gb25seSBiZSBhcHBsaWVkIHRvIGEgdW5pb24gZGVmaW5pdGlvbjsgYXR0cmlidXRlIGlnbm9yZWQiLCAyNzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3RyYW5zcGFyZW50X3VuaW9uX2F0dHJpYnV0ZV96ZXJvX2ZpZWxkcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidHJhbnNwYXJlbnQgdW5pb24gZGVmaW5pdGlvbiBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGZpZWxkOyB0cmFuc3BhcmVudF91bmlvbiBhdHRyaWJ1dGUgaWdub3JlZCIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdHlwZV9hdHRyaWJ1dGVfd3JvbmdfdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJyUwJyBvbmx5IGFwcGxpZXMgdG8gJXNlbGVjdHtmdW5jdGlvbnxwb2ludGVyfE9iamVjdGl2ZS1DIG9iamVjdCBvciBibG9jayBwb2ludGVyfTEgdHlwZXM7IHR5cGUgaGVyZSBpcyAlMiIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdHlwZV9zYWZldHlfbnVsbF9wb2ludGVyX3JlcXVpcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzcGVjaWZpZWQgJTAgdHlwZSB0YWcgcmVxdWlyZXMgYSBudWxsIHBvaW50ZXIiLCA2NTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3R5cGVfc2FmZXR5X3R5cGVfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFyZ3VtZW50IHR5cGUgJTAgZG9lc24ndCBtYXRjaCBzcGVjaWZpZWQgJTEgdHlwZSB0YWcgJXNlbGVjdHt0aGF0IHJlcXVpcmVzICUzfH0yIiwgNjU4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl90eXBlX3RhZ19mb3JfZGF0YXR5cGVfd3Jvbmdfa2luZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidGhpcyB0eXBlIHRhZyB3YXMgbm90IGRlc2lnbmVkIHRvIGJlIHVzZWQgd2l0aCB0aGlzIGZ1bmN0aW9uIiwgNjU4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl90eXBlY2hlY2tfZnVuY3Rpb25fcXVhbGlmaWVyc19pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInJTAnIHF1YWxpZmllciBvbiBmdW5jdGlvbiB0eXBlICUxIGhhcyBubyBlZmZlY3QiLCAyNzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3RoaXNfYm9vbF9jb252ZXJzaW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIndGhpcycgcG9pbnRlciBjYW5ub3QgYmUgbnVsbCBpbiB3ZWxsLWRlZmluZWQgQysrIGNvZGU7IHBvaW50ZXIgbWF5IGJlIGFzc3VtZWQgdG8gYWx3YXlzIGNvbnZlcnQgdG8gdHJ1ZSIsIDY3OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI0KQorRElBRyh3YXJuX3RoaXNfbnVsbF9jb21wYXJlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIndGhpcycgcG9pbnRlciBjYW5ub3QgYmUgbnVsbCBpbiB3ZWxsLWRlZmluZWQgQysrIGNvZGU7IGNvbXBhcmlzb24gbWF5IGJlIGFzc3VtZWQgdG8gYWx3YXlzIGV2YWx1YXRlIHRvICVzZWxlY3R7dHJ1ZXxmYWxzZX0wIiwgNjU3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl90aHJlYWRfYXR0cmlidXRlX2FyZ3VtZW50X25vdF9sb2NrYWJsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgYXR0cmlidXRlIHJlcXVpcmVzIGFyZ3VtZW50cyB3aG9zZSB0eXBlIGlzIGFubm90YXRlZCB3aXRoICdjYXBhYmlsaXR5JyBhdHRyaWJ1dGU7IHR5cGUgaGVyZSBpcyAlMSIsIDY2MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdGhyZWFkX2F0dHJpYnV0ZV9kZWNsX25vdF9sb2NrYWJsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgYXR0cmlidXRlIGNhbiBvbmx5IGJlIGFwcGxpZWQgaW4gYSBjb250ZXh0IGFubm90YXRlZCB3aXRoICdjYXBhYmlsaXR5KFwibXV0ZXhcIiknIGF0dHJpYnV0ZSIsIDY2MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdGhyZWFkX2F0dHJpYnV0ZV9kZWNsX25vdF9wb2ludGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlMCBvbmx5IGFwcGxpZXMgdG8gcG9pbnRlciB0eXBlczsgdHlwZSBoZXJlIGlzICUxIiwgNjYzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl90aHJlYWRfYXR0cmlidXRlX2lnbm9yZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImlnbm9yaW5nICUwIGF0dHJpYnV0ZSBiZWNhdXNlIGl0cyBhcmd1bWVudCBpcyBpbnZhbGlkIiwgNjYzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl90aHJlYWRfYXR0cmlidXRlX25vdF9vbl9jYXBhYmlsaXR5X21lbWJlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgYXR0cmlidXRlIHdpdGhvdXQgY2FwYWJpbGl0eSBhcmd1bWVudHMgcmVmZXJzIHRvICd0aGlzJywgYnV0ICUxIGlzbid0IGFubm90YXRlZCB3aXRoICdjYXBhYmlsaXR5JyBvciAnc2NvcGVkX2xvY2thYmxlJyBhdHRyaWJ1dGUiLCA2NjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3RocmVhZF9hdHRyaWJ1dGVfbm90X29uX25vbl9zdGF0aWNfbWVtYmVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlMCBhdHRyaWJ1dGUgd2l0aG91dCBjYXBhYmlsaXR5IGFyZ3VtZW50cyBjYW4gb25seSBiZSBhcHBsaWVkIHRvIG5vbi1zdGF0aWMgbWV0aG9kcyBvZiBhIGNsYXNzIiwgNjYzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl90aHJlYWRfc2FmZXR5X2JldGEsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIlRocmVhZCBzYWZldHkgYmV0YSB3YXJuaW5nLiIsIDY2NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdGhyZWFkX3NhZmV0eV92ZXJib3NlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJUaHJlYWQgc2FmZXR5IHZlcmJvc2Ugd2FybmluZy4iLCA2NjgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3Rocm93X2luX25vZXhjZXB0X2Z1bmMsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIGhhcyBhIG5vbi10aHJvd2luZyBleGNlcHRpb24gc3BlY2lmaWNhdGlvbiBidXQgY2FuIHN0aWxsIHRocm93IiwgMjEyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl90cmFuc3BhcmVudF91bmlvbl9hdHRyaWJ1dGVfZmllbGRfc2l6ZV9hbGlnbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHthbGlnbm1lbnR8c2l6ZX0wIG9mIGZpZWxkICUxICglMiBiaXRzKSBkb2VzIG5vdCBtYXRjaCB0aGUgJXNlbGVjdHthbGlnbm1lbnR8c2l6ZX0wIG9mIHRoZSBmaXJzdCBmaWVsZCBpbiB0cmFuc3BhcmVudCB1bmlvbjsgdHJhbnNwYXJlbnRfdW5pb24gYXR0cmlidXRlIGlnbm9yZWQiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3RyYW5zcGFyZW50X3VuaW9uX2F0dHJpYnV0ZV9mbG9hdGluZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZmlyc3QgZmllbGQgb2YgYSB0cmFuc3BhcmVudCB1bmlvbiBjYW5ub3QgaGF2ZSAlc2VsZWN0e2Zsb2F0aW5nIHBvaW50fHZlY3Rvcn0wIHR5cGUgJTE7IHRyYW5zcGFyZW50X3VuaW9uIGF0dHJpYnV0ZSBpZ25vcmVkIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl90cmFuc3BhcmVudF91bmlvbl9hdHRyaWJ1dGVfbm90X2RlZmluaXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInRyYW5zcGFyZW50X3VuaW9uIGF0dHJpYnV0ZSBjYW4gb25seSBiZSBhcHBsaWVkIHRvIGEgdW5pb24gZGVmaW5pdGlvbjsgYXR0cmlidXRlIGlnbm9yZWQiLCAyODIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3RyYW5zcGFyZW50X3VuaW9uX2F0dHJpYnV0ZV96ZXJvX2ZpZWxkcywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidHJhbnNwYXJlbnQgdW5pb24gZGVmaW5pdGlvbiBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGZpZWxkOyB0cmFuc3BhcmVudF91bmlvbiBhdHRyaWJ1dGUgaWdub3JlZCIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdHlwZV9hdHRyaWJ1dGVfd3JvbmdfdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJyUwJyBvbmx5IGFwcGxpZXMgdG8gJXNlbGVjdHtmdW5jdGlvbnxwb2ludGVyfE9iamVjdGl2ZS1DIG9iamVjdCBvciBibG9jayBwb2ludGVyfTEgdHlwZXM7IHR5cGUgaGVyZSBpcyAlMiIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdHlwZV9zYWZldHlfbnVsbF9wb2ludGVyX3JlcXVpcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzcGVjaWZpZWQgJTAgdHlwZSB0YWcgcmVxdWlyZXMgYSBudWxsIHBvaW50ZXIiLCA2NzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3R5cGVfc2FmZXR5X3R5cGVfbWlzbWF0Y2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImFyZ3VtZW50IHR5cGUgJTAgZG9lc24ndCBtYXRjaCBzcGVjaWZpZWQgJTEgdHlwZSB0YWcgJXNlbGVjdHt0aGF0IHJlcXVpcmVzICUzfH0yIiwgNjcxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl90eXBlX3RhZ19mb3JfZGF0YXR5cGVfd3Jvbmdfa2luZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidGhpcyB0eXBlIHRhZyB3YXMgbm90IGRlc2lnbmVkIHRvIGJlIHVzZWQgd2l0aCB0aGlzIGZ1bmN0aW9uIiwgNjcxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl90eXBlY2hlY2tfZnVuY3Rpb25fcXVhbGlmaWVyc19pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInJTAnIHF1YWxpZmllciBvbiBmdW5jdGlvbiB0eXBlICUxIGhhcyBubyBlZmZlY3QiLCAyODcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX3R5cGVjaGVja19mdW5jdGlvbl9xdWFsaWZpZXJzX3Vuc3BlY2lmaWVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInJTAnIHF1YWxpZmllciBvbiBmdW5jdGlvbiB0eXBlICUxIGhhcyB1bnNwZWNpZmllZCBiZWhhdmlvciIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3R5cGVjaGVja19yZWZlcmVuY2VfcXVhbGlmaWVycywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJyUwJyBxdWFsaWZpZXIgb24gcmVmZXJlbmNlIHR5cGUgJTEgaGFzIG5vIGVmZmVjdCIsIDI3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdHlwZWNoZWNrX3ZlY3Rvcl9lbGVtZW50X3NpemVzX25vdF9lcXVhbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpFcnJvciwgInZlY3RvciBvcGVyYW5kcyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cyBzaXplcyAoJTAgYW5kICUxKSIsIDczMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdHlwZWNoZWNrX3JlZmVyZW5jZV9xdWFsaWZpZXJzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICInJTAnIHF1YWxpZmllciBvbiByZWZlcmVuY2UgdHlwZSAlMSBoYXMgbm8gZWZmZWN0IiwgMjg3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl90eXBlY2hlY2tfdmVjdG9yX2VsZW1lbnRfc2l6ZXNfbm90X2VxdWFsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkVycm9yLCAidmVjdG9yIG9wZXJhbmRzIGRvIG5vdCBoYXZlIHRoZSBzYW1lIGVsZW1lbnRzIHNpemVzICglMCBhbmQgJTEpIiwgNzQ1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl90eXBlY2hlY2tfemVyb19zdGF0aWNfYXJyYXlfc2l6ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJ3N0YXRpYycgaGFzIG5vIGVmZmVjdCBvbiB6ZXJvLWxlbmd0aCBhcnJheXMiLCAzMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW5hbm5vdGF0ZWRfZmFsbHRocm91Z2gsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVuYW5ub3RhdGVkIGZhbGwtdGhyb3VnaCBiZXR3ZWVuIHN3aXRjaCBsYWJlbHMiLCAyODQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3VuYW5ub3RhdGVkX2ZhbGx0aHJvdWdoX3Blcl9mdW5jdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW5hbm5vdGF0ZWQgZmFsbC10aHJvdWdoIGJldHdlZW4gc3dpdGNoIGxhYmVscyBpbiBwYXJ0bHktYW5ub3RhdGVkIGZ1bmN0aW9uIiwgMjg1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl91bmF2YWlsYWJsZV9kZWYsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImltcGxlbWVudGluZyB1bmF2YWlsYWJsZSBtZXRob2QiLCAxNjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3VuYXZhaWxhYmxlX2Z3ZGNsYXNzX21lc3NhZ2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiUwIG1heSBiZSB1bmF2YWlsYWJsZSBiZWNhdXNlIHRoZSByZWNlaXZlciB0eXBlIGlzIHVua25vd24iLCA2NjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3VuZGVjbGFyZWRfc2VsZWN0b3IsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVuZGVjbGFyZWQgc2VsZWN0b3IgJTAiLCA2NjMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3VuZGVjbGFyZWRfc2VsZWN0b3Jfd2l0aF90eXBvLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bmRlY2xhcmVkIHNlbGVjdG9yICUwOyBkaWQgeW91IG1lYW4gJTE/IiwgNjYzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl91bmFubm90YXRlZF9mYWxsdGhyb3VnaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW5hbm5vdGF0ZWQgZmFsbC10aHJvdWdoIGJldHdlZW4gc3dpdGNoIGxhYmVscyIsIDI5MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW5hbm5vdGF0ZWRfZmFsbHRocm91Z2hfcGVyX2Z1bmN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bmFubm90YXRlZCBmYWxsLXRocm91Z2ggYmV0d2VlbiBzd2l0Y2ggbGFiZWxzIGluIHBhcnRseS1hbm5vdGF0ZWQgZnVuY3Rpb24iLCAyOTMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VuYXZhaWxhYmxlX2RlZiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiaW1wbGVtZW50aW5nIHVuYXZhaWxhYmxlIG1ldGhvZCIsIDE2OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW5hdmFpbGFibGVfZndkY2xhc3NfbWVzc2FnZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgbWF5IGJlIHVuYXZhaWxhYmxlIGJlY2F1c2UgdGhlIHJlY2VpdmVyIHR5cGUgaXMgdW5rbm93biIsIDY3NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW5kZWNsYXJlZF9zZWxlY3RvciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW5kZWNsYXJlZCBzZWxlY3RvciAlMCIsIDY3NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW5kZWNsYXJlZF9zZWxlY3Rvcl93aXRoX3R5cG8sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVuZGVjbGFyZWQgc2VsZWN0b3IgJTA7IGRpZCB5b3UgbWVhbiAlMT8iLCA2NzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX3VuZGVmX2ludGVyZmFjZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2Fubm90IGZpbmQgaW50ZXJmYWNlIGRlY2xhcmF0aW9uIGZvciAlMCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX3VuZGVmX2ludGVyZmFjZV9zdWdnZXN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJjYW5ub3QgZmluZCBpbnRlcmZhY2UgZGVjbGFyYXRpb24gZm9yICUwOyBkaWQgeW91IG1lYW4gJTE/IiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW5kZWZfbWV0aG9kX2ltcGwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm1ldGhvZCBkZWZpbml0aW9uIGZvciAlMCBub3QgZm91bmQiLCAzMDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VuZGVmX21ldGhvZF9pbXBsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtZXRob2QgZGVmaW5pdGlvbiBmb3IgJTAgbm90IGZvdW5kIiwgMzE1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl91bmRlZl9wcm90b2NvbHJlZiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiY2Fubm90IGZpbmQgcHJvdG9jb2wgZGVmaW5pdGlvbiBmb3IgJTAiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl91bmRlZmluZWRfaW5saW5lLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJpbmxpbmUgZnVuY3Rpb24gJXEwIGlzIG5vdCBkZWZpbmVkIiwgNjY3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl91bmRlZmluZWRfaW50ZXJuYWwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7ZnVuY3Rpb258dmFyaWFibGV9MCAlcTEgaGFzIGludGVybmFsIGxpbmthZ2UgYnV0IGlzIG5vdCBkZWZpbmVkIiwgNjY4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl91bmRlZmluZWRfcmVpbnRlcnByZXRfY2FzdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicmVpbnRlcnByZXRfY2FzdCBmcm9tICUwIHRvICUxIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IiLCA2NzAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3VuZ3VhcmRlZF9hdmFpbGFiaWxpdHksIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUwIGlzIG9ubHkgYXZhaWxhYmxlIG9uICUxICUyIG9yIG5ld2VyIiwgNjczLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl91bmd1YXJkZWRfYXZhaWxhYmlsaXR5X25ldywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJTAgaXMgb25seSBhdmFpbGFibGUgb24gJTEgJTIgb3IgbmV3ZXIiLCA2NzQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3VuaGFuZGxlZF9tc19hdHRyaWJ1dGVfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiX19kZWNsc3BlYyBhdHRyaWJ1dGUgJTAgaXMgbm90IHN1cHBvcnRlZCIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW5pbXBsZW1lbnRlZF9wcm90b2NvbF9tZXRob2QsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIm1ldGhvZCAlMCBpbiBwcm90b2NvbCAlMSBub3QgaW1wbGVtZW50ZWQiLCA1NDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3VuaW1wbGVtZW50ZWRfc2VsZWN0b3IsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm5vIG1ldGhvZCB3aXRoIHNlbGVjdG9yICUwIGlzIGltcGxlbWVudGVkIGluIHRoaXMgdHJhbnNsYXRpb24gdW5pdCIsIDU2NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW5pbml0X2J5cmVmX2Jsb2NrdmFyX2NhcHR1cmVkX2J5X2Jsb2NrLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJibG9jayBwb2ludGVyIHZhcmlhYmxlICUwIGlzIHVuaW5pdGlhbGl6ZWQgd2hlbiBjYXB0dXJlZCBieSBibG9jayIsIDY3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW5pbml0X3NlbGZfcmVmZXJlbmNlX2luX2luaXQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInZhcmlhYmxlICUwIGlzIHVuaW5pdGlhbGl6ZWQgd2hlbiB1c2VkIHdpdGhpbiBpdHMgb3duIGluaXRpYWxpemF0aW9uIiwgNjc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl91bmluaXRfc2VsZl9yZWZlcmVuY2VfaW5fcmVmZXJlbmNlX2luaXQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInJlZmVyZW5jZSAlMCBpcyBub3QgeWV0IGJvdW5kIHRvIGEgdmFsdWUgd2hlbiB1c2VkIHdpdGhpbiBpdHMgb3duIGluaXRpYWxpemF0aW9uIiwgNjc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl91bmluaXRfdmFyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ2YXJpYWJsZSAlMCBpcyB1bmluaXRpYWxpemVkIHdoZW4gJXNlbGVjdHt1c2VkIGhlcmV8Y2FwdHVyZWQgYnkgYmxvY2t9MSIsIDY3OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW5rbm93bl9hdHRyaWJ1dGVfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5rbm93biBhdHRyaWJ1dGUgJTAgaWdub3JlZCIsIDY4MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW5rbm93bl9zYW5pdGl6ZXJfaWdub3JlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5rbm93biBzYW5pdGl6ZXIgJyUwJyBpZ25vcmVkIiwgNjg0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl91bmxvY2tfYnV0X25vX2xvY2ssIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInJlbGVhc2luZyAlMCAnJTEnIHRoYXQgd2FzIG5vdCBoZWxkIiwgNjQ5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl91bmxvY2tfa2luZF9taXNtYXRjaCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicmVsZWFzaW5nICUwICclMScgdXNpbmcgJXNlbGVjdHtzaGFyZWR8ZXhjbHVzaXZlfTIgYWNjZXNzLCBleHBlY3RlZCAlc2VsZWN0e3NoYXJlZHxleGNsdXNpdmV9MyBhY2Nlc3MiLCA2NDksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3VubmVjZXNzYXJ5X3BhY2tlZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicGFja2VkIGF0dHJpYnV0ZSBpcyB1bm5lY2Vzc2FyeSBmb3IgJTAiLCA1MDYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3VubmVlZGVkX2ludGVybmFsX2RlY2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiVzZWxlY3R7ZnVuY3Rpb258dmFyaWFibGV9MCAlMSBpcyBub3QgbmVlZGVkIGFuZCB3aWxsIG5vdCBiZSBlbWl0dGVkIiwgNjg3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMzIpCi1ESUFHKHdhcm5fdW5uZWVkZWRfbWVtYmVyX2Z1bmN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJtZW1iZXIgZnVuY3Rpb24gJTAgaXMgbm90IG5lZWRlZCBhbmQgd2lsbCBub3QgYmUgZW1pdHRlZCIsIDY4OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW5uZWVkZWRfc3RhdGljX2ludGVybmFsX2RlY2wsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIidzdGF0aWMnIGZ1bmN0aW9uICUwIGRlY2xhcmVkIGluIGhlYWRlciBmaWxlIHNob3VsZCBiZSBkZWNsYXJlZCAnc3RhdGljIGlubGluZSciLCA2ODcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKLURJQUcod2Fybl91bnJlYWNoYWJsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiY29kZSB3aWxsIG5ldmVyIGJlIGV4ZWN1dGVkIiwgNjg5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl91bnJlYWNoYWJsZV9icmVhaywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJ2JyZWFrJyB3aWxsIG5ldmVyIGJlIGV4ZWN1dGVkIiwgNjkxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl91bnJlYWNoYWJsZV9kZWZhdWx0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJkZWZhdWx0IGxhYmVsIGluIHN3aXRjaCB3aGljaCBjb3ZlcnMgYWxsIGVudW1lcmF0aW9uIHZhbHVlcyIsIDE0MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW5yZWFjaGFibGVfbG9vcF9pbmNyZW1lbnQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImxvb3Agd2lsbCBydW4gYXQgbW9zdCBvbmNlIChsb29wIGluY3JlbWVudCBuZXZlciBleGVjdXRlZCkiLCA2OTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3VucmVhY2hhYmxlX3JldHVybiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJ3JldHVybicgd2lsbCBuZXZlciBiZSBleGVjdXRlZCIsIDY5MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW5zZXF1ZW5jZWRfbW9kX21vZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibXVsdGlwbGUgdW5zZXF1ZW5jZWQgbW9kaWZpY2F0aW9ucyB0byAlMCIsIDY5NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW5zZXF1ZW5jZWRfbW9kX3VzZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidW5zZXF1ZW5jZWQgbW9kaWZpY2F0aW9uIGFuZCBhY2Nlc3MgdG8gJTAiLCA2OTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VuZGVmaW5lZF9pbmxpbmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImlubGluZSBmdW5jdGlvbiAlcTAgaXMgbm90IGRlZmluZWQiLCA2ODAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VuZGVmaW5lZF9pbnRlcm5hbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHtmdW5jdGlvbnx2YXJpYWJsZX0wICVxMSBoYXMgaW50ZXJuYWwgbGlua2FnZSBidXQgaXMgbm90IGRlZmluZWQiLCA2ODEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VuZGVmaW5lZF9yZWludGVycHJldF9jYXN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJyZWludGVycHJldF9jYXN0IGZyb20gJTAgdG8gJTEgaGFzIHVuZGVmaW5lZCBiZWhhdmlvciIsIDY4MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW5ndWFyZGVkX2F2YWlsYWJpbGl0eSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgaXMgb25seSBhdmFpbGFibGUgb24gJTEgJTIgb3IgbmV3ZXIiLCA2ODYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VuZ3VhcmRlZF9hdmFpbGFiaWxpdHlfbmV3LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlMCBpcyBvbmx5IGF2YWlsYWJsZSBvbiAlMSAlMiBvciBuZXdlciIsIDY4NywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW5oYW5kbGVkX21zX2F0dHJpYnV0ZV9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJfX2RlY2xzcGVjIGF0dHJpYnV0ZSAlMCBpcyBub3Qgc3VwcG9ydGVkIiwgMjgyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl91bmltcGxlbWVudGVkX3Byb3RvY29sX21ldGhvZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibWV0aG9kICUwIGluIHByb3RvY29sICUxIG5vdCBpbXBsZW1lbnRlZCIsIDU1MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW5pbXBsZW1lbnRlZF9zZWxlY3RvciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibm8gbWV0aG9kIHdpdGggc2VsZWN0b3IgJTAgaXMgaW1wbGVtZW50ZWQgaW4gdGhpcyB0cmFuc2xhdGlvbiB1bml0IiwgNTc5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl91bmluaXRfYnlyZWZfYmxvY2t2YXJfY2FwdHVyZWRfYnlfYmxvY2ssIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImJsb2NrIHBvaW50ZXIgdmFyaWFibGUgJTAgaXMgdW5pbml0aWFsaXplZCB3aGVuIGNhcHR1cmVkIGJ5IGJsb2NrIiwgNjkyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl91bmluaXRfc2VsZl9yZWZlcmVuY2VfaW5faW5pdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidmFyaWFibGUgJTAgaXMgdW5pbml0aWFsaXplZCB3aGVuIHVzZWQgd2l0aGluIGl0cyBvd24gaW5pdGlhbGl6YXRpb24iLCA2OTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VuaW5pdF9zZWxmX3JlZmVyZW5jZV9pbl9yZWZlcmVuY2VfaW5pdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAicmVmZXJlbmNlICUwIGlzIG5vdCB5ZXQgYm91bmQgdG8gYSB2YWx1ZSB3aGVuIHVzZWQgd2l0aGluIGl0cyBvd24gaW5pdGlhbGl6YXRpb24iLCA2OTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VuaW5pdF92YXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInZhcmlhYmxlICUwIGlzIHVuaW5pdGlhbGl6ZWQgd2hlbiAlc2VsZWN0e3VzZWQgaGVyZXxjYXB0dXJlZCBieSBibG9ja30xIiwgNjkyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl91bmtub3duX3Nhbml0aXplcl9pZ25vcmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bmtub3duIHNhbml0aXplciAnJTAnIGlnbm9yZWQiLCA2OTcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VubG9ja19idXRfbm9fbG9jaywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicmVsZWFzaW5nICUwICclMScgdGhhdCB3YXMgbm90IGhlbGQiLCA2NjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VubG9ja19raW5kX21pc21hdGNoLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJyZWxlYXNpbmcgJTAgJyUxJyB1c2luZyAlc2VsZWN0e3NoYXJlZHxleGNsdXNpdmV9MiBhY2Nlc3MsIGV4cGVjdGVkICVzZWxlY3R7c2hhcmVkfGV4Y2x1c2l2ZX0zIGFjY2VzcyIsIDY2MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW5uZWVkZWRfaW50ZXJuYWxfZGVjbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHtmdW5jdGlvbnx2YXJpYWJsZX0wICUxIGlzIG5vdCBuZWVkZWQgYW5kIHdpbGwgbm90IGJlIGVtaXR0ZWQiLCA3MDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKK0RJQUcod2Fybl91bm5lZWRlZF9tZW1iZXJfZnVuY3Rpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIm1lbWJlciBmdW5jdGlvbiAlMCBpcyBub3QgbmVlZGVkIGFuZCB3aWxsIG5vdCBiZSBlbWl0dGVkIiwgNzAxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl91bm5lZWRlZF9zdGF0aWNfaW50ZXJuYWxfZGVjbCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJ3N0YXRpYycgZnVuY3Rpb24gJTAgZGVjbGFyZWQgaW4gaGVhZGVyIGZpbGUgc2hvdWxkIGJlIGRlY2xhcmVkICdzdGF0aWMgaW5saW5lJyIsIDcwMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMyKQorRElBRyh3YXJuX3VucmVhY2hhYmxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJjb2RlIHdpbGwgbmV2ZXIgYmUgZXhlY3V0ZWQiLCA3MDIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VucmVhY2hhYmxlX2JyZWFrLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICInYnJlYWsnIHdpbGwgbmV2ZXIgYmUgZXhlY3V0ZWQiLCA3MDQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VucmVhY2hhYmxlX2RlZmF1bHQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImRlZmF1bHQgbGFiZWwgaW4gc3dpdGNoIHdoaWNoIGNvdmVycyBhbGwgZW51bWVyYXRpb24gdmFsdWVzIiwgMTQxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl91bnJlYWNoYWJsZV9sb29wX2luY3JlbWVudCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAibG9vcCB3aWxsIHJ1biBhdCBtb3N0IG9uY2UgKGxvb3AgaW5jcmVtZW50IG5ldmVyIGV4ZWN1dGVkKSIsIDcwNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW5yZWFjaGFibGVfcmV0dXJuLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIncmV0dXJuJyB3aWxsIG5ldmVyIGJlIGV4ZWN1dGVkIiwgNzA2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl91bnNlcXVlbmNlZF9tb2RfbW9kLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtdWx0aXBsZSB1bnNlcXVlbmNlZCBtb2RpZmljYXRpb25zIHRvICUwIiwgNzA3LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl91bnNlcXVlbmNlZF9tb2RfdXNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1bnNlcXVlbmNlZCBtb2RpZmljYXRpb24gYW5kIGFjY2VzcyB0byAlMCIsIDcwNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fdW5zaWduZWRfYWJzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ0YWtpbmcgdGhlIGFic29sdXRlIHZhbHVlIG9mIHVuc2lnbmVkIHR5cGUgJTAgaGFzIG5vIGVmZmVjdCIsIDgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3Vuc2lnbmVkX2Fsd2F5c190cnVlX2NvbXBhcmlzb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInJlc3VsdCBvZiBjb21wYXJpc29uIG9mICVzZWxlY3R7JTN8dW5zaWduZWQgZXhwcmVzc2lvbn0wICUyICVzZWxlY3R7dW5zaWduZWQgZXhwcmVzc2lvbnwlM30wIGlzIGFsd2F5cyAlNCIsIDY0NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW5zaWduZWRfYWx3YXlzX3RydWVfY29tcGFyaXNvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicmVzdWx0IG9mIGNvbXBhcmlzb24gb2YgJXNlbGVjdHslM3x1bnNpZ25lZCBleHByZXNzaW9ufTAgJTIgJXNlbGVjdHt1bnNpZ25lZCBleHByZXNzaW9ufCUzfTAgaXMgYWx3YXlzICU0IiwgNjU5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKIERJQUcod2Fybl91bnNpZ25lZF9iaXRmaWVsZF9hc3NpZ25lZF9zaWduZWRfZW51bSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiYXNzaWduaW5nIHZhbHVlIG9mIHNpZ25lZCBlbnVtIHR5cGUgJTEgdG8gdW5zaWduZWQgYml0LWZpZWxkICUwOyBuZWdhdGl2ZSBlbnVtZXJhdG9ycyBvZiBlbnVtICUxIHdpbGwgYmUgY29udmVydGVkIHRvIHBvc2l0aXZlIHZhbHVlcyIsIDYwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMjQpCi1ESUFHKHdhcm5fdW5zaWduZWRfZW51bV9hbHdheXNfdHJ1ZV9jb21wYXJpc29uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJyZXN1bHQgb2YgY29tcGFyaXNvbiBvZiAlc2VsZWN0eyUzfHVuc2lnbmVkIGVudW0gZXhwcmVzc2lvbn0wICUyICVzZWxlY3R7dW5zaWduZWQgZW51bSBleHByZXNzaW9ufCUzfTAgaXMgYWx3YXlzICU0IiwgNjQ1LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl91bnN1cHBvcnRlZF9saWZldGltZV9leHRlbnNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInNvcnJ5LCBsaWZldGltZSBleHRlbnNpb24gb2YgJXNlbGVjdHt0ZW1wb3Jhcnl8YmFja2luZyBhcnJheSBvZiBpbml0aWFsaXplciBsaXN0fTAgY3JlYXRlZCBieSBhZ2dyZWdhdGUgaW5pdGlhbGl6YXRpb24gdXNpbmcgZGVmYXVsdCBtZW1iZXIgaW5pdGlhbGl6ZXIgaXMgbm90IHN1cHBvcnRlZDsgbGlmZXRpbWUgb2YgJXNlbGVjdHt0ZW1wb3Jhcnl8YmFja2luZyBhcnJheX0wIHdpbGwgZW5kIGF0IHRoZSBlbmQgb2YgdGhlIGZ1bGwtZXhwcmVzc2lvbiIsIDE0NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW5zdXBwb3J0ZWRfdGFyZ2V0X2F0dHJpYnV0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHt1bnN1cHBvcnRlZHxkdXBsaWNhdGV9MCVzZWxlY3R7fCBhcmNoaXRlY3R1cmV9MSAnJTInIGluIHRoZSAndGFyZ2V0JyBhdHRyaWJ1dGUgc3RyaW5nOyAndGFyZ2V0JyBhdHRyaWJ1dGUgaWdub3JlZCIsIDI3NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW51c2VkX2NhbGwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImlnbm9yaW5nIHJldHVybiB2YWx1ZSBvZiBmdW5jdGlvbiBkZWNsYXJlZCB3aXRoICUwIGF0dHJpYnV0ZSIsIDcyNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMyKQotRElBRyh3YXJuX3VudXNlZF9jb21wYXJpc29uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0e2VxdWFsaXR5fGluZXF1YWxpdHl8cmVsYXRpb25hbHx0aHJlZS13YXl9MCBjb21wYXJpc29uIHJlc3VsdCB1bnVzZWQiLCA3MDgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKLURJQUcod2Fybl91bnVzZWRfY29uc3RfdmFyaWFibGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVudXNlZCB2YXJpYWJsZSAlMCIsIDcwOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMyKQotRElBRyh3YXJuX3VudXNlZF9jb250YWluZXJfc3Vic2NyaXB0X2V4cHIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbnRhaW5lciBhY2Nlc3MgcmVzdWx0IHVudXNlZCAtIGNvbnRhaW5lciBhY2Nlc3Mgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBzaWRlIGVmZmVjdHMiLCA3MjQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKLURJQUcod2Fybl91bnVzZWRfZXhjZXB0aW9uX3BhcmFtLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bnVzZWQgZXhjZXB0aW9uIHBhcmFtZXRlciAlMCIsIDcxMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW51c2VkX2V4cHIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cHJlc3Npb24gcmVzdWx0IHVudXNlZCIsIDcyNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMyKQotRElBRyh3YXJuX3VudXNlZF9mdW5jdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW51c2VkIGZ1bmN0aW9uICUwIiwgNzExLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMzIpCi1ESUFHKHdhcm5fdW51c2VkX2xhYmVsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bnVzZWQgbGFiZWwgJTAiLCA3MTMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKLURJQUcod2Fybl91bnVzZWRfbGFtYmRhX2NhcHR1cmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImxhbWJkYSBjYXB0dXJlICUwIGlzIG5vdCAlc2VsZWN0e3VzZWR8cmVxdWlyZWQgdG8gYmUgY2FwdHVyZWQgZm9yIHRoaXMgdXNlfTEiLCA3MTQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKLURJQUcod2Fybl91bnVzZWRfbG9jYWxfdHlwZWRlZiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW51c2VkICVzZWxlY3R7dHlwZWRlZnx0eXBlIGFsaWFzfTAgJTEiLCA3MTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKLURJQUcod2Fybl91bnVzZWRfbWVtYmVyX2Z1bmN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bnVzZWQgbWVtYmVyIGZ1bmN0aW9uICUwIiwgNzE4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl91bnVzZWRfcGFyYW1ldGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bnVzZWQgcGFyYW1ldGVyICUwIiwgNzE5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl91bnVzZWRfcHJpdmF0ZV9maWVsZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicHJpdmF0ZSBmaWVsZCAlMCBpcyBub3QgdXNlZCIsIDcyMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMyKQotRElBRyh3YXJuX3VudXNlZF9wcm9wZXJ0eV9iYWNraW5nX2l2YXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIml2YXIgJTAgd2hpY2ggYmFja3MgdGhlIHByb3BlcnR5IGlzIG5vdCByZWZlcmVuY2VkIGluIHRoaXMgcHJvcGVydHkncyBhY2Nlc3NvciIsIDcyMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMyKQotRElBRyh3YXJuX3VudXNlZF9wcm9wZXJ0eV9leHByLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcm9wZXJ0eSBhY2Nlc3MgcmVzdWx0IHVudXNlZCAtIGdldHRlcnMgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBzaWRlIGVmZmVjdHMiLCA3MTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3VudXNlZF9yZXN1bHQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImlnbm9yaW5nIHJldHVybiB2YWx1ZSBvZiBmdW5jdGlvbiBkZWNsYXJlZCB3aXRoICUwIGF0dHJpYnV0ZSIsIDcyMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMyKQotRElBRyh3YXJuX3VudXNlZF90ZW1wbGF0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW51c2VkICVzZWxlY3R7ZnVuY3Rpb258dmFyaWFibGV9MCB0ZW1wbGF0ZSAlMSIsIDcyMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdW51c2VkX3ZhcmlhYmxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bnVzZWQgdmFyaWFibGUgJTAiLCA3MjUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKLURJQUcod2Fybl91bnVzZWRfdm9pZHB0ciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwcmVzc2lvbiByZXN1bHQgdW51c2VkOyBzaG91bGQgdGhpcyBjYXN0IGJlIHRvICd2b2lkJz8iLCA3MjQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKLURJQUcod2Fybl91bnVzZWRfdm9sYXRpbGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cHJlc3Npb24gcmVzdWx0IHVudXNlZDsgYXNzaWduIGludG8gYSB2YXJpYWJsZSB0byBmb3JjZSBhIHZvbGF0aWxlIGxvYWQiLCA3MjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3VzZV9pbl9pbnZhbGlkX3N0YXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbnZhbGlkIGludm9jYXRpb24gb2YgbWV0aG9kICclMCcgb24gb2JqZWN0ICclMScgd2hpbGUgaXQgaXMgaW4gdGhlICclMicgc3RhdGUiLCAxMzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3VzZV9vZl90ZW1wX2luX2ludmFsaWRfc3RhdGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImludmFsaWQgaW52b2NhdGlvbiBvZiBtZXRob2QgJyUwJyBvbiBhIHRlbXBvcmFyeSBvYmplY3Qgd2hpbGUgaXQgaXMgaW4gdGhlICclMScgc3RhdGUiLCAxMzUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3VzZWRfYnV0X21hcmtlZF91bnVzZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUwIHdhcyBtYXJrZWQgdW51c2VkIGJ1dCB3YXMgdXNlZCIsIDcyNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdXNlcl9saXRlcmFsX3Jlc2VydmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2VyLWRlZmluZWQgbGl0ZXJhbCBzdWZmaXhlcyBub3Qgc3RhcnRpbmcgd2l0aCAnXycgYXJlIHJlc2VydmVkJXNlbGVjdHs7IG5vIGxpdGVyYWwgd2lsbCBpbnZva2UgdGhpcyBvcGVyYXRvcnx9MCIsIDcyOCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdXNpbmdfZGlyZWN0aXZlX2luX2hlYWRlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidXNpbmcgbmFtZXNwYWNlIGRpcmVjdGl2ZSBpbiBnbG9iYWwgY29udGV4dCBpbiBoZWFkZXIiLCAyNzIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3ZhX3N0YXJ0X3R5cGVfaXNfdW5kZWZpbmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwYXNzaW5nICVzZWxlY3R7YW4gb2JqZWN0IHRoYXQgdW5kZXJnb2VzIGRlZmF1bHQgYXJndW1lbnQgcHJvbW90aW9ufGFuIG9iamVjdCBvZiByZWZlcmVuY2UgdHlwZXxhIHBhcmFtZXRlciBkZWNsYXJlZCB3aXRoIHRoZSAncmVnaXN0ZXInIGtleXdvcmR9MCB0byAndmFfc3RhcnQnIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IiLCA3MzAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3Zhcl9kZXJlZl9yZXF1aXJlc19hbnlfbG9jaywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHtyZWFkaW5nfHdyaXRpbmd9MSB0aGUgdmFsdWUgcG9pbnRlZCB0byBieSAlMCByZXF1aXJlcyBob2xkaW5nICVzZWxlY3R7YW55IG11dGV4fGFueSBtdXRleCBleGNsdXNpdmVseX0xIiwgNjQ5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl92YXJfZGVyZWZfcmVxdWlyZXNfbG9jaywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHtyZWFkaW5nfHdyaXRpbmd9MyB0aGUgdmFsdWUgcG9pbnRlZCB0byBieSAlMSByZXF1aXJlcyBob2xkaW5nICUwICVzZWxlY3R7JyUyJ3wnJTInIGV4Y2x1c2l2ZWx5fTMiLCA2NDksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3Zhcl9kZXJlZl9yZXF1aXJlc19sb2NrX3ByZWNpc2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiVzZWxlY3R7cmVhZGluZ3x3cml0aW5nfTMgdGhlIHZhbHVlIHBvaW50ZWQgdG8gYnkgJTEgcmVxdWlyZXMgaG9sZGluZyAlMCAlc2VsZWN0eyclMid8JyUyJyBleGNsdXNpdmVseX0zIiwgNjUzLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl92YXJfdGVtcGxhdGVfbWlzc2luZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5zdGFudGlhdGlvbiBvZiB2YXJpYWJsZSAlcTAgcmVxdWlyZWQgaGVyZSwgYnV0IG5vIGRlZmluaXRpb24gaXMgYXZhaWxhYmxlIiwgNjcxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl92YXJpYWJsZV9yZXF1aXJlc19hbnlfbG9jaywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHtyZWFkaW5nfHdyaXRpbmd9MSB2YXJpYWJsZSAlMCByZXF1aXJlcyBob2xkaW5nICVzZWxlY3R7YW55IG11dGV4fGFueSBtdXRleCBleGNsdXNpdmVseX0xIiwgNjQ5LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl92YXJpYWJsZV9yZXF1aXJlc19sb2NrLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlc2VsZWN0e3JlYWRpbmd8d3JpdGluZ30zIHZhcmlhYmxlICUxIHJlcXVpcmVzIGhvbGRpbmcgJTAgJXNlbGVjdHsnJTInfCclMicgZXhjbHVzaXZlbHl9MyIsIDY0OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdmFyaWFibGVfcmVxdWlyZXNfbG9ja19wcmVjaXNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlc2VsZWN0e3JlYWRpbmd8d3JpdGluZ30zIHZhcmlhYmxlICUxIHJlcXVpcmVzIGhvbGRpbmcgJTAgJXNlbGVjdHsnJTInfCclMicgZXhjbHVzaXZlbHl9MyIsIDY1MywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCi1ESUFHKHdhcm5fdmFyaWFibGVfc2l6ZWRfaXZhcl92aXNpYmlsaXR5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmaWVsZCAlMCB3aXRoIHZhcmlhYmxlIHNpemVkIHR5cGUgJTEgaXMgbm90IHZpc2libGUgdG8gc3ViY2xhc3NlcyBhbmQgY2FuIGNvbmZsaWN0IHdpdGggdGhlaXIgaW5zdGFuY2UgdmFyaWFibGVzIiwgNDU4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl92YXJpYWJsZXNfbm90X2luX2xvb3BfYm9keSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidmFyaWFibGUlc2VsZWN0e3N8ICUxfHMgJTEgYW5kICUyfHMgJTEsICUyLCBhbmQgJTN8cyAlMSwgJTIsICUzLCBhbmQgJTR9MCB1c2VkIGluIGxvb3AgY29uZGl0aW9uIG5vdCBtb2RpZmllZCBpbiBsb29wIGJvZHkiLCAyMjUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3ZiYXNlX21vdmVkX211bHRpcGxlX3RpbWVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZWZhdWx0ZWQgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yIG9mICUwIHdpbGwgbW92ZSBhc3NpZ24gdmlydHVhbCBiYXNlIGNsYXNzICUxIG11bHRpcGxlIHRpbWVzIiwgNDIxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl92ZWN0b3JfbG9uZ19kZWNsX3NwZWNfY29tYmluYXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIlVzZSBvZiAnbG9uZycgd2l0aCAnX192ZWN0b3InIGlzIGRlcHJlY2F0ZWQiLCAxNTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNykKLURJQUcod2Fybl92ZWN0b3JfbW9kZV9kZXByZWNhdGVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzcGVjaWZ5aW5nIHZlY3RvciB0eXBlcyB3aXRoIHRoZSAnbW9kZScgYXR0cmlidXRlIGlzIGRlcHJlY2F0ZWQ7IHVzZSB0aGUgJ3ZlY3Rvcl9zaXplJyBhdHRyaWJ1dGUgaW5zdGVhZCIsIDE1OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQotRElBRyh3YXJuX3ZsYV91c2VkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ2YXJpYWJsZSBsZW5ndGggYXJyYXkgdXNlZCIsIDczNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW5zaWduZWRfZW51bV9hbHdheXNfdHJ1ZV9jb21wYXJpc29uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJyZXN1bHQgb2YgY29tcGFyaXNvbiBvZiAlc2VsZWN0eyUzfHVuc2lnbmVkIGVudW0gZXhwcmVzc2lvbn0wICUyICVzZWxlY3R7dW5zaWduZWQgZW51bSBleHByZXNzaW9ufCUzfTAgaXMgYWx3YXlzICU0IiwgNjU4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl91bnN1cHBvcnRlZF9saWZldGltZV9leHRlbnNpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgInNvcnJ5LCBsaWZldGltZSBleHRlbnNpb24gb2YgJXNlbGVjdHt0ZW1wb3Jhcnl8YmFja2luZyBhcnJheSBvZiBpbml0aWFsaXplciBsaXN0fTAgY3JlYXRlZCBieSBhZ2dyZWdhdGUgaW5pdGlhbGl6YXRpb24gdXNpbmcgZGVmYXVsdCBtZW1iZXIgaW5pdGlhbGl6ZXIgaXMgbm90IHN1cHBvcnRlZDsgbGlmZXRpbWUgb2YgJXNlbGVjdHt0ZW1wb3Jhcnl8YmFja2luZyBhcnJheX0wIHdpbGwgZW5kIGF0IHRoZSBlbmQgb2YgdGhlIGZ1bGwtZXhwcmVzc2lvbiIsIDE0OSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW5zdXBwb3J0ZWRfdGFyZ2V0X2F0dHJpYnV0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHt1bnN1cHBvcnRlZHxkdXBsaWNhdGV9MCVzZWxlY3R7fCBhcmNoaXRlY3R1cmV9MSAnJTInIGluIHRoZSAndGFyZ2V0JyBhdHRyaWJ1dGUgc3RyaW5nOyAndGFyZ2V0JyBhdHRyaWJ1dGUgaWdub3JlZCIsIDI4MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW51c2VkX2NhbGwsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImlnbm9yaW5nIHJldHVybiB2YWx1ZSBvZiBmdW5jdGlvbiBkZWNsYXJlZCB3aXRoICUwIGF0dHJpYnV0ZSIsIDczNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMyKQorRElBRyh3YXJuX3VudXNlZF9jb21wYXJpc29uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICIlc2VsZWN0e2VxdWFsaXR5fGluZXF1YWxpdHl8cmVsYXRpb25hbHx0aHJlZS13YXl9MCBjb21wYXJpc29uIHJlc3VsdCB1bnVzZWQiLCA3MjEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKK0RJQUcod2Fybl91bnVzZWRfY29uc3RfdmFyaWFibGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgInVudXNlZCB2YXJpYWJsZSAlMCIsIDcyMiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMyKQorRElBRyh3YXJuX3VudXNlZF9jb250YWluZXJfc3Vic2NyaXB0X2V4cHIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImNvbnRhaW5lciBhY2Nlc3MgcmVzdWx0IHVudXNlZCAtIGNvbnRhaW5lciBhY2Nlc3Mgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBzaWRlIGVmZmVjdHMiLCA3MzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKK0RJQUcod2Fybl91bnVzZWRfZXhjZXB0aW9uX3BhcmFtLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bnVzZWQgZXhjZXB0aW9uIHBhcmFtZXRlciAlMCIsIDcyMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW51c2VkX2V4cHIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cHJlc3Npb24gcmVzdWx0IHVudXNlZCIsIDczNywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMyKQorRElBRyh3YXJuX3VudXNlZF9mdW5jdGlvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW51c2VkIGZ1bmN0aW9uICUwIiwgNzI0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMzIpCitESUFHKHdhcm5fdW51c2VkX2xhYmVsLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bnVzZWQgbGFiZWwgJTAiLCA3MjYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKK0RJQUcod2Fybl91bnVzZWRfbGFtYmRhX2NhcHR1cmUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImxhbWJkYSBjYXB0dXJlICUwIGlzIG5vdCAlc2VsZWN0e3VzZWR8cmVxdWlyZWQgdG8gYmUgY2FwdHVyZWQgZm9yIHRoaXMgdXNlfTEiLCA3MjcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKK0RJQUcod2Fybl91bnVzZWRfbG9jYWxfdHlwZWRlZiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW51c2VkICVzZWxlY3R7dHlwZWRlZnx0eXBlIGFsaWFzfTAgJTEiLCA3MjgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKK0RJQUcod2Fybl91bnVzZWRfbWVtYmVyX2Z1bmN0aW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bnVzZWQgbWVtYmVyIGZ1bmN0aW9uICUwIiwgNzMxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl91bnVzZWRfcGFyYW1ldGVyLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bnVzZWQgcGFyYW1ldGVyICUwIiwgNzMyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl91bnVzZWRfcHJpdmF0ZV9maWVsZCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAicHJpdmF0ZSBmaWVsZCAlMCBpcyBub3QgdXNlZCIsIDczMywgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMyKQorRElBRyh3YXJuX3VudXNlZF9wcm9wZXJ0eV9iYWNraW5nX2l2YXIsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIml2YXIgJTAgd2hpY2ggYmFja3MgdGhlIHByb3BlcnR5IGlzIG5vdCByZWZlcmVuY2VkIGluIHRoaXMgcHJvcGVydHkncyBhY2Nlc3NvciIsIDczNCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMyKQorRElBRyh3YXJuX3VudXNlZF9wcm9wZXJ0eV9leHByLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwcm9wZXJ0eSBhY2Nlc3MgcmVzdWx0IHVudXNlZCAtIGdldHRlcnMgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBzaWRlIGVmZmVjdHMiLCA3MjUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VudXNlZF9yZXN1bHQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImlnbm9yaW5nIHJldHVybiB2YWx1ZSBvZiBmdW5jdGlvbiBkZWNsYXJlZCB3aXRoICUwIGF0dHJpYnV0ZSIsIDczNSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDMyKQorRElBRyh3YXJuX3VudXNlZF90ZW1wbGF0ZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidW51c2VkICVzZWxlY3R7ZnVuY3Rpb258dmFyaWFibGV9MCB0ZW1wbGF0ZSAlMSIsIDczNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdW51c2VkX3ZhcmlhYmxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ1bnVzZWQgdmFyaWFibGUgJTAiLCA3MzgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKK0RJQUcod2Fybl91bnVzZWRfdm9pZHB0ciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZXhwcmVzc2lvbiByZXN1bHQgdW51c2VkOyBzaG91bGQgdGhpcyBjYXN0IGJlIHRvICd2b2lkJz8iLCA3MzcsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAzMikKK0RJQUcod2Fybl91bnVzZWRfdm9sYXRpbGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgImV4cHJlc3Npb24gcmVzdWx0IHVudXNlZDsgYXNzaWduIGludG8gYSB2YXJpYWJsZSB0byBmb3JjZSBhIHZvbGF0aWxlIGxvYWQiLCA3MzksIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VzZV9pbl9pbnZhbGlkX3N0YXRlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJpbnZhbGlkIGludm9jYXRpb24gb2YgbWV0aG9kICclMCcgb24gb2JqZWN0ICclMScgd2hpbGUgaXQgaXMgaW4gdGhlICclMicgc3RhdGUiLCAxMzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VzZV9vZl90ZW1wX2luX2ludmFsaWRfc3RhdGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgImludmFsaWQgaW52b2NhdGlvbiBvZiBtZXRob2QgJyUwJyBvbiBhIHRlbXBvcmFyeSBvYmplY3Qgd2hpbGUgaXQgaXMgaW4gdGhlICclMScgc3RhdGUiLCAxMzYsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3VzZWRfYnV0X21hcmtlZF91bnVzZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUwIHdhcyBtYXJrZWQgdW51c2VkIGJ1dCB3YXMgdXNlZCIsIDc0MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdXNlcl9saXRlcmFsX3Jlc2VydmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJ1c2VyLWRlZmluZWQgbGl0ZXJhbCBzdWZmaXhlcyBub3Qgc3RhcnRpbmcgd2l0aCAnXycgYXJlIHJlc2VydmVkJXNlbGVjdHs7IG5vIGxpdGVyYWwgd2lsbCBpbnZva2UgdGhpcyBvcGVyYXRvcnx9MCIsIDc0MSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdXNpbmdfZGlyZWN0aXZlX2luX2hlYWRlciwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidXNpbmcgbmFtZXNwYWNlIGRpcmVjdGl2ZSBpbiBnbG9iYWwgY29udGV4dCBpbiBoZWFkZXIiLCAyODAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3ZhX3N0YXJ0X3R5cGVfaXNfdW5kZWZpbmVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJwYXNzaW5nICVzZWxlY3R7YW4gb2JqZWN0IHRoYXQgdW5kZXJnb2VzIGRlZmF1bHQgYXJndW1lbnQgcHJvbW90aW9ufGFuIG9iamVjdCBvZiByZWZlcmVuY2UgdHlwZXxhIHBhcmFtZXRlciBkZWNsYXJlZCB3aXRoIHRoZSAncmVnaXN0ZXInIGtleXdvcmR9MCB0byAndmFfc3RhcnQnIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IiLCA3NDMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3Zhcl9kZXJlZl9yZXF1aXJlc19hbnlfbG9jaywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHtyZWFkaW5nfHdyaXRpbmd9MSB0aGUgdmFsdWUgcG9pbnRlZCB0byBieSAlMCByZXF1aXJlcyBob2xkaW5nICVzZWxlY3R7YW55IG11dGV4fGFueSBtdXRleCBleGNsdXNpdmVseX0xIiwgNjYyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl92YXJfZGVyZWZfcmVxdWlyZXNfbG9jaywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHtyZWFkaW5nfHdyaXRpbmd9MyB0aGUgdmFsdWUgcG9pbnRlZCB0byBieSAlMSByZXF1aXJlcyBob2xkaW5nICUwICVzZWxlY3R7JyUyJ3wnJTInIGV4Y2x1c2l2ZWx5fTMiLCA2NjIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3Zhcl9kZXJlZl9yZXF1aXJlc19sb2NrX3ByZWNpc2UsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiVzZWxlY3R7cmVhZGluZ3x3cml0aW5nfTMgdGhlIHZhbHVlIHBvaW50ZWQgdG8gYnkgJTEgcmVxdWlyZXMgaG9sZGluZyAlMCAlc2VsZWN0eyclMid8JyUyJyBleGNsdXNpdmVseX0zIiwgNjY2LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl92YXJfdGVtcGxhdGVfbWlzc2luZywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiaW5zdGFudGlhdGlvbiBvZiB2YXJpYWJsZSAlcTAgcmVxdWlyZWQgaGVyZSwgYnV0IG5vIGRlZmluaXRpb24gaXMgYXZhaWxhYmxlIiwgNjg0LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl92YXJpYWJsZV9yZXF1aXJlc19hbnlfbG9jaywgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJXNlbGVjdHtyZWFkaW5nfHdyaXRpbmd9MSB2YXJpYWJsZSAlMCByZXF1aXJlcyBob2xkaW5nICVzZWxlY3R7YW55IG11dGV4fGFueSBtdXRleCBleGNsdXNpdmVseX0xIiwgNjYyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl92YXJpYWJsZV9yZXF1aXJlc19sb2NrLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlc2VsZWN0e3JlYWRpbmd8d3JpdGluZ30zIHZhcmlhYmxlICUxIHJlcXVpcmVzIGhvbGRpbmcgJTAgJXNlbGVjdHsnJTInfCclMicgZXhjbHVzaXZlbHl9MyIsIDY2MiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdmFyaWFibGVfcmVxdWlyZXNfbG9ja19wcmVjaXNlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlc2VsZWN0e3JlYWRpbmd8d3JpdGluZ30zIHZhcmlhYmxlICUxIHJlcXVpcmVzIGhvbGRpbmcgJTAgJXNlbGVjdHsnJTInfCclMicgZXhjbHVzaXZlbHl9MyIsIDY2NiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fdmFyaWFibGVfc2l6ZWRfaXZhcl92aXNpYmlsaXR5LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJmaWVsZCAlMCB3aXRoIHZhcmlhYmxlIHNpemVkIHR5cGUgJTEgaXMgbm90IHZpc2libGUgdG8gc3ViY2xhc3NlcyBhbmQgY2FuIGNvbmZsaWN0IHdpdGggdGhlaXIgaW5zdGFuY2UgdmFyaWFibGVzIiwgNDY4LCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl92YXJpYWJsZXNfbm90X2luX2xvb3BfYm9keSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAidmFyaWFibGUlc2VsZWN0e3N8ICUxfHMgJTEgYW5kICUyfHMgJTEsICUyLCBhbmQgJTN8cyAlMSwgJTIsICUzLCBhbmQgJTR9MCB1c2VkIGluIGxvb3AgY29uZGl0aW9uIG5vdCBtb2RpZmllZCBpbiBsb29wIGJvZHkiLCAyMzMsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3ZiYXNlX21vdmVkX211bHRpcGxlX3RpbWVzLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkZWZhdWx0ZWQgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9yIG9mICUwIHdpbGwgbW92ZSBhc3NpZ24gdmlydHVhbCBiYXNlIGNsYXNzICUxIG11bHRpcGxlIHRpbWVzIiwgNDMwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl92ZWN0b3JfbG9uZ19kZWNsX3NwZWNfY29tYmluYXRpb24sIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIlVzZSBvZiAnbG9uZycgd2l0aCAnX192ZWN0b3InIGlzIGRlcHJlY2F0ZWQiLCAxNjQsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyNykKK0RJQUcod2Fybl92ZWN0b3JfbW9kZV9kZXByZWNhdGVkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJzcGVjaWZ5aW5nIHZlY3RvciB0eXBlcyB3aXRoIHRoZSAnbW9kZScgYXR0cmlidXRlIGlzIGRlcHJlY2F0ZWQ7IHVzZSB0aGUgJ3ZlY3Rvcl9zaXplJyBhdHRyaWJ1dGUgaW5zdGVhZCIsIDE2NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDI3KQorRElBRyh3YXJuX3ZsYV91c2VkLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ2YXJpYWJsZSBsZW5ndGggYXJyYXkgdXNlZCIsIDc1MCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fd2Vha19pZGVudGlmaWVyX3VuZGVjbGFyZWQsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIndlYWsgaWRlbnRpZmllciAlMCBuZXZlciBkZWNsYXJlZCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQogRElBRyh3YXJuX3dlYWtfaW1wb3J0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJhbiBhbHJlYWR5LWRlY2xhcmVkIHZhcmlhYmxlIGlzIG1hZGUgYSB3ZWFrX2ltcG9ydCBkZWNsYXJhdGlvbiAlMCIsIDAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3dlYWtfdGVtcGxhdGVfdnRhYmxlLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJleHBsaWNpdCB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uICUwIHdpbGwgZW1pdCBhIHZ0YWJsZSBpbiBldmVyeSB0cmFuc2xhdGlvbiB1bml0IiwgNzQxLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKLURJQUcod2Fybl93ZWFrX3Z0YWJsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiJTAgaGFzIG5vIG91dC1vZi1saW5lIHZpcnR1YWwgbWV0aG9kIGRlZmluaXRpb25zOyBpdHMgdnRhYmxlIHdpbGwgYmUgZW1pdHRlZCBpbiBldmVyeSB0cmFuc2xhdGlvbiB1bml0IiwgNzQyLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMikKK0RJQUcod2Fybl93ZWFrX3RlbXBsYXRlX3Z0YWJsZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpJZ25vcmVkLCAiZXhwbGljaXQgdGVtcGxhdGUgaW5zdGFudGlhdGlvbiAlMCB3aWxsIGVtaXQgYSB2dGFibGUgaW4gZXZlcnkgdHJhbnNsYXRpb24gdW5pdCIsIDc1NCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCitESUFHKHdhcm5fd2Vha192dGFibGUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6SWdub3JlZCwgIiUwIGhhcyBubyBvdXQtb2YtbGluZSB2aXJ0dWFsIG1ldGhvZCBkZWZpbml0aW9uczsgaXRzIHZ0YWJsZSB3aWxsIGJlIGVtaXR0ZWQgaW4gZXZlcnkgdHJhbnNsYXRpb24gdW5pdCIsIDc1NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDIpCiBESUFHKHdhcm5fd3JvbmdfYWJzb2x1dGVfdmFsdWVfdHlwZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAidXNpbmcgJXNlbGVjdHtpbnRlZ2VyfGZsb2F0aW5nIHBvaW50fGNvbXBsZXh9MSBhYnNvbHV0ZSB2YWx1ZSBmdW5jdGlvbiAlMCB3aGVuIGFyZ3VtZW50IGlzIG9mICVzZWxlY3R7aW50ZWdlcnxmbG9hdGluZyBwb2ludHxjb21wbGV4fTIgdHlwZSIsIDgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3plcm9fYXNfbnVsbF9wb2ludGVyX2NvbnN0YW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ6ZXJvIGFzIG51bGwgcG9pbnRlciBjb25zdGFudCIsIDc0NSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE5KQorRElBRyh3YXJuX3plcm9fYXNfbnVsbF9wb2ludGVyX2NvbnN0YW50LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICJ6ZXJvIGFzIG51bGwgcG9pbnRlciBjb25zdGFudCIsIDc1OCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE5KQogRElBRyh3YXJuX3plcm9fc2l6ZV9zdHJ1Y3RfdW5pb25fY29tcGF0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oklnbm9yZWQsICIlc2VsZWN0e3xlbXB0eSB9MCVzZWxlY3R7c3RydWN0fHVuaW9ufTEgaGFzIHNpemUgMCBpbiBDLCAlc2VsZWN0e3NpemUgMXxub24temVybyBzaXplfTIgaW4gQysrIiwgNzEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQotRElBRyh3YXJuX3plcm9fc2l6ZV9zdHJ1Y3RfdW5pb25faW5fZXh0ZXJuX2MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7fGVtcHR5IH0wJXNlbGVjdHtzdHJ1Y3R8dW5pb259MSBoYXMgc2l6ZSAwIGluIEMsICVzZWxlY3R7c2l6ZSAxfG5vbi16ZXJvIHNpemV9MiBpbiBDKysiLCAyMTEsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQorRElBRyh3YXJuX3plcm9fc2l6ZV9zdHJ1Y3RfdW5pb25faW5fZXh0ZXJuX2MsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7fGVtcHR5IH0wJXNlbGVjdHtzdHJ1Y3R8dW5pb259MSBoYXMgc2l6ZSAwIGluIEMsICVzZWxlY3R7c2l6ZSAxfG5vbi16ZXJvIHNpemV9MiBpbiBDKysiLCAyMTgsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAyKQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY1NlcmlhbGl6YXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNTZXJpYWxpemF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U0NmEzNgotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0RpYWdub3N0aWNTZXJpYWxpemF0aW9uLmgKQEAgLTAsMCArMSwyOCBAQAorLy89PT0tLS0gRGlhZ25vc3RpY1NlcmlhbGl6YXRpb24uaCAtIFNlcmlhbGl6YXRpb24gRGlhZ25vc3RpY3MgLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fQ0xBTkdfQkFTSUNfRElBR05PU1RJQ1NFUklBTElaQVRJT05fSAorI2RlZmluZSBMTFZNX0NMQU5HX0JBU0lDX0RJQUdOT1NUSUNTRVJJQUxJWkFUSU9OX0gKKworI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWMuaCIKKworbmFtZXNwYWNlIGNsYW5nIHsKK25hbWVzcGFjZSBkaWFnIHsKK2VudW0geworI2RlZmluZSBESUFHKEVOVU0sIEZMQUdTLCBERUZBVUxUX01BUFBJTkcsIERFU0MsIEdST1VQLCBTRklOQUUsIE5PV0VSUk9SLCAgICAgIFwKKyAgICAgICAgICAgICBTSE9XSU5TWVNIRUFERVIsIENBVEVHT1JZKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEVOVU0sCisjZGVmaW5lIFNFUklBTElaQVRJT05TVEFSVAorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNTZXJpYWxpemF0aW9uS2luZHMuaW5jIgorI3VuZGVmIERJQUcKKyAgTlVNX0JVSUxUSU5fU0VSSUFMSVpBVElPTl9ESUFHTk9TVElDUworfTsKK30gLy8gZW5kIG5hbWVzcGFjZSBkaWFnCit9IC8vIGVuZCBuYW1lc3BhY2UgY2xhbmcKKworI2VuZGlmIC8vIExMVk1fQ0xBTkdfQkFTSUNfRElBR05PU1RJQ1NFUklBTElaQVRJT05fSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRGlhZ25vc3RpY1NlcmlhbGl6YXRpb25LaW5kcy5pbmMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljU2VyaWFsaXphdGlvbktpbmRzLmluYwppbmRleCAwZTRkYTUwLi5jYmE0YmNjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljU2VyaWFsaXphdGlvbktpbmRzLmluYworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9EaWFnbm9zdGljU2VyaWFsaXphdGlvbktpbmRzLmluYwpAQCAtNjIsNiArNjIsNiBAQAogRElBRyhub3RlX3BjaF9yZWJ1aWxkX3JlcXVpcmVkLCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAicGxlYXNlIHJlYnVpbGQgcHJlY29tcGlsZWQgaGVhZGVyICclMCciLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTUpCiBESUFHKG5vdGVfcGNoX3JlcXVpcmVkX2J5LCBDTEFTU19OT1RFLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6OkZhdGFsLCAiJyUwJyByZXF1aXJlZCBieSAnJTEnIiwgMCwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE1KQogRElBRyhub3RlX3NlY29uZF9tb2R1bGVfZGlmZmVyZW5jZSwgQ0xBU1NfTk9URSwgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpGYXRhbCwgImluIHNlY29uZCBkZWZpbml0aW9uLCBwb3NzaWJsZSBkaWZmZXJlbmNlIGlzIGhlcmUiLCAwLCBTRklOQUVfU3VwcHJlc3MsIGZhbHNlLCBmYWxzZSwgMTUpCi1ESUFHKHdhcm5fZHVwbGljYXRlX21vZHVsZV9maWxlX2V4dGVuc2lvbiwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiZHVwbGljYXRlIG1vZHVsZSBmaWxlIGV4dGVuc2lvbiBibG9jayBuYW1lICclMCciLCA0MTIsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxNSkKLURJQUcod2Fybl9tb2R1bGVfc3lzdGVtX2JpdF9jb25mbGljdCwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAibW9kdWxlIGZpbGUgJyUwJyB3YXMgdmFsaWRhdGVkIGFzIGEgc3lzdGVtIG1vZHVsZSBhbmQgaXMgbm93IGJlaW5nIGltcG9ydGVkIGFzIGEgbm9uLXN5c3RlbSBtb2R1bGU7IGFueSBkaWZmZXJlbmNlIGluIGRpYWdub3N0aWMgb3B0aW9ucyB3aWxsIGJlIGlnbm9yZWQiLCA0MTAsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxNSkKLURJQUcod2Fybl9tb2R1bGVfdXNlc19kYXRlX3RpbWUsIENMQVNTX1dBUk5JTkcsICh1bnNpZ25lZClkaWFnOjpTZXZlcml0eTo6V2FybmluZywgIiVzZWxlY3R7cHJlY29tcGlsZWQgaGVhZGVyfG1vZHVsZX0wIHVzZXMgX19EQVRFX18gb3IgX19USU1FX18iLCA1MTUsIFNGSU5BRV9TdXBwcmVzcywgZmFsc2UsIGZhbHNlLCAxOCkKK0RJQUcod2Fybl9kdXBsaWNhdGVfbW9kdWxlX2ZpbGVfZXh0ZW5zaW9uLCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJkdXBsaWNhdGUgbW9kdWxlIGZpbGUgZXh0ZW5zaW9uIGJsb2NrIG5hbWUgJyUwJyIsIDQyMSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE1KQorRElBRyh3YXJuX21vZHVsZV9zeXN0ZW1fYml0X2NvbmZsaWN0LCBDTEFTU19XQVJOSU5HLCAodW5zaWduZWQpZGlhZzo6U2V2ZXJpdHk6Oldhcm5pbmcsICJtb2R1bGUgZmlsZSAnJTAnIHdhcyB2YWxpZGF0ZWQgYXMgYSBzeXN0ZW0gbW9kdWxlIGFuZCBpcyBub3cgYmVpbmcgaW1wb3J0ZWQgYXMgYSBub24tc3lzdGVtIG1vZHVsZTsgYW55IGRpZmZlcmVuY2UgaW4gZGlhZ25vc3RpYyBvcHRpb25zIHdpbGwgYmUgaWdub3JlZCIsIDQxOSwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE1KQorRElBRyh3YXJuX21vZHVsZV91c2VzX2RhdGVfdGltZSwgQ0xBU1NfV0FSTklORywgKHVuc2lnbmVkKWRpYWc6OlNldmVyaXR5OjpXYXJuaW5nLCAiJXNlbGVjdHtwcmVjb21waWxlZCBoZWFkZXJ8bW9kdWxlfTAgdXNlcyBfX0RBVEVfXyBvciBfX1RJTUVfXyIsIDUyNiwgU0ZJTkFFX1N1cHByZXNzLCBmYWxzZSwgZmFsc2UsIDE4KQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRXhjZXB0aW9uU3BlY2lmaWNhdGlvblR5cGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0V4Y2VwdGlvblNwZWNpZmljYXRpb25UeXBlLmgKaW5kZXggMGMyYzhlNi4uMmY2NWVmZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRXhjZXB0aW9uU3BlY2lmaWNhdGlvblR5cGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9FeGNlcHRpb25TcGVjaWZpY2F0aW9uVHlwZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gRXhjZXB0aW9uU3BlY2lmaWNhdGlvblR5cGUuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRXhwcmVzc2lvblRyYWl0cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRXhwcmVzc2lvblRyYWl0cy5oCmluZGV4IDI5ODNhZGQuLjg1MDA1MzMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0V4cHJlc3Npb25UcmFpdHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9FeHByZXNzaW9uVHJhaXRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRXhwcmVzc2lvblRyYWl0cy5oIC0gQysrIEV4cHJlc3Npb24gVHJhaXRzIFN1cHBvcnQgRW51bXMgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9GZWF0dXJlcy5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9GZWF0dXJlcy5kZWYKaW5kZXggZDYzYzlhMC4uOGZjNGU1YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRmVhdHVyZXMuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0ZlYXR1cmVzLmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEZlYXR1cmVzLmRlZiAtIEZlYXR1cmVzIGFuZCBFeHRlbnNpb25zIGRhdGFiYXNlIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTcsNiArMTYsMTIgQEAKIC8vCiAvLyBUaGUgUHJlZGljYXRlIGZpZWxkIGRpY3RhdGVzIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBmZWF0dXJlIG9yCiAvLyBleHRlbnNpb24gd2lsbCBiZSBtYWRlIGF2YWlsYWJsZS4KKy8vCisvLyBGRUFUVVJFKC4uLikgc2hvdWxkIGJlIHVzZWQgdG8gYWR2ZXJ0aXNlIHN1cHBvcnQgZm9yIHN0YW5kYXJkIGxhbmd1YWdlCisvLyBmZWF0dXJlcywgd2hlcmVhcyBFWFRFTlNJT04oLi4uKSBzaG91bGQgYmUgdXNlZCBmb3IgY2xhbmcgZXh0ZW5zaW9ucy4gTm90ZQorLy8gdGhhdCBtYW55IG9mIHRoZSBpZGVudGlmaWVycyBpbiB0aGlzIGZpbGUgZG9uJ3QgZm9sbG93IHRoaXMgcnVsZSBmb3IgYmFja3dhcmQKKy8vIGNvbXBhdGliaWxpdHkgcmVhc29ucy4KKy8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCiAjaWYgIWRlZmluZWQoRkVBVFVSRSkgJiYgIWRlZmluZWQoRVhURU5TSU9OKQpAQCAtNTEsNiArNTYsNyBAQAogRkVBVFVSRShhdHRyaWJ1dGVfYXZhaWxhYmlsaXR5X3dpdGhfc3RyaWN0LCB0cnVlKQogRkVBVFVSRShhdHRyaWJ1dGVfYXZhaWxhYmlsaXR5X3dpdGhfcmVwbGFjZW1lbnQsIHRydWUpCiBGRUFUVVJFKGF0dHJpYnV0ZV9hdmFpbGFiaWxpdHlfaW5fdGVtcGxhdGVzLCB0cnVlKQorRkVBVFVSRShhdHRyaWJ1dGVfYXZhaWxhYmlsaXR5X3N3aWZ0LCB0cnVlKQogRkVBVFVSRShhdHRyaWJ1dGVfY2ZfcmV0dXJuc19ub3RfcmV0YWluZWQsIHRydWUpCiBGRUFUVVJFKGF0dHJpYnV0ZV9jZl9yZXR1cm5zX3JldGFpbmVkLCB0cnVlKQogRkVBVFVSRShhdHRyaWJ1dGVfY2ZfcmV0dXJuc19vbl9wYXJhbWV0ZXJzLCB0cnVlKQpAQCAtODgsMTEgKzk0LDExIEBACiBGRUFUVVJFKG9iamNfYXJjLCBMYW5nT3B0cy5PYmpDQXV0b1JlZkNvdW50KQogRkVBVFVSRShvYmpjX2FyY19maWVsZHMsIHRydWUpCiBGRUFUVVJFKG9iamNfYXJjX3dlYWssIExhbmdPcHRzLk9iakNXZWFrKQotRkVBVFVSRShvYmpjX2RlZmF1bHRfc3ludGhlc2l6ZV9wcm9wZXJ0aWVzLCBMYW5nT3B0cy5PYmpDMikKLUZFQVRVUkUob2JqY19maXhlZF9lbnVtLCB0cnVlKQotRkVBVFVSRShvYmpjX2luc3RhbmNldHlwZSwgTGFuZ09wdHMuT2JqQzIpCi1GRUFUVVJFKG9iamNfa2luZG9mLCBMYW5nT3B0cy5PYmpDMikKLUZFQVRVUkUob2JqY19tb2R1bGVzLCBMYW5nT3B0cy5PYmpDMiAmJkxhbmdPcHRzLk1vZHVsZXMpCitGRUFUVVJFKG9iamNfZGVmYXVsdF9zeW50aGVzaXplX3Byb3BlcnRpZXMsIExhbmdPcHRzLk9iakMpCitGRUFUVVJFKG9iamNfZml4ZWRfZW51bSwgTGFuZ09wdHMuT2JqQykKK0ZFQVRVUkUob2JqY19pbnN0YW5jZXR5cGUsIExhbmdPcHRzLk9iakMpCitGRUFUVVJFKG9iamNfa2luZG9mLCBMYW5nT3B0cy5PYmpDKQorRkVBVFVSRShvYmpjX21vZHVsZXMsIExhbmdPcHRzLk9iakMgJiYgTGFuZ09wdHMuTW9kdWxlcykKIEZFQVRVUkUob2JqY19ub25mcmFnaWxlX2FiaSwgTGFuZ09wdHMuT2JqQ1J1bnRpbWUuaXNOb25GcmFnaWxlKCkpCiBGRUFUVVJFKG9iamNfcHJvcGVydHlfZXhwbGljaXRfYXRvbWljLCB0cnVlKQogRkVBVFVSRShvYmpjX3Byb3RvY29sX3F1YWxpZmllcl9tYW5nbGluZywgdHJ1ZSkKQEAgLTEwMiwxNiArMTA4LDE2IEBACiBGRUFUVVJFKG93bmVyc2hpcF90YWtlcywgdHJ1ZSkKIEZFQVRVUkUob2JqY19ib29sLCB0cnVlKQogRkVBVFVSRShvYmpjX3N1YnNjcmlwdGluZywgTGFuZ09wdHMuT2JqQ1J1bnRpbWUuaXNOb25GcmFnaWxlKCkpCi1GRUFUVVJFKG9iamNfYXJyYXlfbGl0ZXJhbHMsIExhbmdPcHRzLk9iakMyKQotRkVBVFVSRShvYmpjX2RpY3Rpb25hcnlfbGl0ZXJhbHMsIExhbmdPcHRzLk9iakMyKQotRkVBVFVSRShvYmpjX2JveGVkX2V4cHJlc3Npb25zLCBMYW5nT3B0cy5PYmpDMikKLUZFQVRVUkUob2JqY19ib3hlZF9uc3ZhbHVlX2V4cHJlc3Npb25zLCBMYW5nT3B0cy5PYmpDMikKK0ZFQVRVUkUob2JqY19hcnJheV9saXRlcmFscywgTGFuZ09wdHMuT2JqQykKK0ZFQVRVUkUob2JqY19kaWN0aW9uYXJ5X2xpdGVyYWxzLCBMYW5nT3B0cy5PYmpDKQorRkVBVFVSRShvYmpjX2JveGVkX2V4cHJlc3Npb25zLCBMYW5nT3B0cy5PYmpDKQorRkVBVFVSRShvYmpjX2JveGVkX25zdmFsdWVfZXhwcmVzc2lvbnMsIExhbmdPcHRzLk9iakMpCiBGRUFUVVJFKGFyY19jZl9jb2RlX2F1ZGl0ZWQsIHRydWUpCiBGRUFUVVJFKG9iamNfYnJpZGdlX2lkLCB0cnVlKQogRkVBVFVSRShvYmpjX2JyaWRnZV9pZF9vbl90eXBlZGVmcywgdHJ1ZSkKLUZFQVRVUkUob2JqY19nZW5lcmljcywgTGFuZ09wdHMuT2JqQzIpCi1GRUFUVVJFKG9iamNfZ2VuZXJpY3NfdmFyaWFuY2UsIExhbmdPcHRzLk9iakMyKQotRkVBVFVSRShvYmpjX2NsYXNzX3Byb3BlcnR5LCBMYW5nT3B0cy5PYmpDMikKK0ZFQVRVUkUob2JqY19nZW5lcmljcywgTGFuZ09wdHMuT2JqQykKK0ZFQVRVUkUob2JqY19nZW5lcmljc192YXJpYW5jZSwgTGFuZ09wdHMuT2JqQykKK0ZFQVRVUkUob2JqY19jbGFzc19wcm9wZXJ0eSwgTGFuZ09wdHMuT2JqQykKIC8vIEMxMSBmZWF0dXJlcwogRkVBVFVSRShjX2FsaWduYXMsIExhbmdPcHRzLkMxMSkKIEZFQVRVUkUoY19hbGlnbm9mLCBMYW5nT3B0cy5DMTEpCkBAIC0yMzksNiArMjQ1LDcgQEAKIEVYVEVOU0lPTihjeHhfdmFyaWFibGVfdGVtcGxhdGVzLCBMYW5nT3B0cy5DUGx1c1BsdXMpCiAvLyBNaXNjZWxsYW5lb3VzIGxhbmd1YWdlIGV4dGVuc2lvbnMKIEVYVEVOU0lPTihvdmVybG9hZGFibGVfdW5tYXJrZWQsIHRydWUpCitFWFRFTlNJT04ocHJhZ21hX2NsYW5nX2F0dHJpYnV0ZV9uYW1lc3BhY2VzLCB0cnVlKQogCiAjdW5kZWYgRVhURU5TSU9OCiAjdW5kZWYgRkVBVFVSRQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRmlsZU1hbmFnZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0ZpbGVNYW5hZ2VyLmgKaW5kZXggM2U5MWRkOS4uODhjMTQ2NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRmlsZU1hbmFnZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9GaWxlTWFuYWdlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gRmlsZU1hbmFnZXIuaCAtIEZpbGUgU3lzdGVtIFByb2JpbmcgYW5kIENhY2hpbmcgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpAQCAtMTAzLDYgKzEwMiwxMCBAQAogICB2b2lkIGNsb3NlRmlsZSgpIGNvbnN0IHsKICAgICBGaWxlLnJlc2V0KCk7IC8vIHJlbHkgb24gZGVzdHJ1Y3RvciB0byBjbG9zZSBGaWxlCiAgIH0KKworICAvLyBPbmx5IGZvciB1c2UgaW4gdGVzdHMgdG8gc2VlIGlmIGRlZmVycmVkIG9wZW5zIGFyZSBoYXBwZW5pbmcsIHJhdGhlciB0aGFuCisgIC8vIHJlbHlpbmcgb24gUmVhbFBhdGhOYW1lIGJlaW5nIGVtcHR5LgorICBib29sIGlzT3BlbkZvclRlc3RzKCkgY29uc3QgeyByZXR1cm4gRmlsZSAhPSBudWxscHRyOyB9CiB9OwogCiBzdHJ1Y3QgRmlsZURhdGE7CkBAIC0xNzIsNiArMTc1LDkgQEAKICAgLy8vIG9yIGEgZGlyZWN0b3J5KSBhcyB2aXJ0dWFsIGRpcmVjdG9yaWVzLgogICB2b2lkIGFkZEFuY2VzdG9yc0FzVmlydHVhbERpcnMoU3RyaW5nUmVmIFBhdGgpOwogCisgIC8vLyBGaWxscyB0aGUgUmVhbFBhdGhOYW1lIGluIGZpbGUgZW50cnkuCisgIHZvaWQgZmlsbFJlYWxQYXRoTmFtZShGaWxlRW50cnkgKlVGRSwgbGx2bTo6U3RyaW5nUmVmIEZpbGVOYW1lKTsKKwogcHVibGljOgogICBGaWxlTWFuYWdlcihjb25zdCBGaWxlU3lzdGVtT3B0aW9ucyAmRmlsZVN5c3RlbU9wdHMsCiAgICAgICAgICAgICAgIEludHJ1c2l2ZVJlZkNudFB0cjxsbHZtOjp2ZnM6OkZpbGVTeXN0ZW0+IEZTID0gbnVsbHB0cik7CkBAIC0xODQsMTggKzE5MCwxMCBAQAogICAvLy8KICAgLy8vIFxwYXJhbSBzdGF0Q2FjaGUgdGhlIG5ldyBzdGF0IGNhY2hlIHRvIGluc3RhbGwuIE93bmVyc2hpcCBvZiB0aGlzCiAgIC8vLyBvYmplY3QgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIEZpbGVNYW5hZ2VyLgotICAvLy8KLSAgLy8vIFxwYXJhbSBBdEJlZ2lubmluZyB3aGV0aGVyIHRoaXMgbmV3IHN0YXQgY2FjaGUgbXVzdCBiZSBpbnN0YWxsZWQgYXQgdGhlCi0gIC8vLyBiZWdpbm5pbmcgb2YgdGhlIGNoYWluIG9mIHN0YXQgY2FjaGVzLiBPdGhlcndpc2UsIGl0IHdpbGwgYmUgYWRkZWQgdG8KLSAgLy8vIHRoZSBlbmQgb2YgdGhlIGNoYWluLgotICB2b2lkIGFkZFN0YXRDYWNoZShzdGQ6OnVuaXF1ZV9wdHI8RmlsZVN5c3RlbVN0YXRDYWNoZT4gc3RhdENhY2hlLAotICAgICAgICAgICAgICAgICAgICBib29sIEF0QmVnaW5uaW5nID0gZmFsc2UpOworICB2b2lkIHNldFN0YXRDYWNoZShzdGQ6OnVuaXF1ZV9wdHI8RmlsZVN5c3RlbVN0YXRDYWNoZT4gc3RhdENhY2hlKTsKIAotICAvLy8gUmVtb3ZlcyB0aGUgc3BlY2lmaWVkIEZpbGVTeXN0ZW1TdGF0Q2FjaGUgb2JqZWN0IGZyb20gdGhlIG1hbmFnZXIuCi0gIHZvaWQgcmVtb3ZlU3RhdENhY2hlKEZpbGVTeXN0ZW1TdGF0Q2FjaGUgKnN0YXRDYWNoZSk7Ci0KLSAgLy8vIFJlbW92ZXMgYWxsIEZpbGVTeXN0ZW1TdGF0Q2FjaGUgb2JqZWN0cyBmcm9tIHRoZSBtYW5hZ2VyLgotICB2b2lkIGNsZWFyU3RhdENhY2hlcygpOworICAvLy8gUmVtb3ZlcyB0aGUgRmlsZVN5c3RlbVN0YXRDYWNoZSBvYmplY3QgZnJvbSB0aGUgbWFuYWdlci4KKyAgdm9pZCBjbGVhclN0YXRDYWNoZSgpOwogCiAgIC8vLyBMb29rdXAsIGNhY2hlLCBhbmQgdmVyaWZ5IHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IChyZWFsIG9yCiAgIC8vLyB2aXJ0dWFsKS4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0ZpbGVTeXN0ZW1PcHRpb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9GaWxlU3lzdGVtT3B0aW9ucy5oCmluZGV4IDhiOGIxM2IuLjQ1OGFmMGMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0ZpbGVTeXN0ZW1PcHRpb25zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRmlsZVN5c3RlbU9wdGlvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEZpbGVTeXN0ZW1PcHRpb25zLmggLSBGaWxlIFN5c3RlbSBPcHRpb25zIC0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0ZpbGVTeXN0ZW1TdGF0Q2FjaGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0ZpbGVTeXN0ZW1TdGF0Q2FjaGUuaAppbmRleCBhMDI3NzAwLi4wYWU2YTllIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9GaWxlU3lzdGVtU3RhdENhY2hlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRmlsZVN5c3RlbVN0YXRDYWNoZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEZpbGVTeXN0ZW1TdGF0Q2FjaGUuaCAtIENhY2hpbmcgZm9yICdzdGF0JyBjYWxscyAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC02MCw5ICs1OSw2IEBACiBjbGFzcyBGaWxlU3lzdGVtU3RhdENhY2hlIHsKICAgdmlydHVhbCB2b2lkIGFuY2hvcigpOwogCi1wcm90ZWN0ZWQ6Ci0gIHN0ZDo6dW5pcXVlX3B0cjxGaWxlU3lzdGVtU3RhdENhY2hlPiBOZXh0U3RhdENhY2hlOwotCiBwdWJsaWM6CiAgIHZpcnR1YWwgfkZpbGVTeXN0ZW1TdGF0Q2FjaGUoKSA9IGRlZmF1bHQ7CiAKQEAgLTg4LDIyICs4NCw2IEBACiAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8bGx2bTo6dmZzOjpGaWxlPiAqRiwKICAgICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW1TdGF0Q2FjaGUgKkNhY2hlLCBsbHZtOjp2ZnM6OkZpbGVTeXN0ZW0gJkZTKTsKIAotICAvLy8gU2V0cyB0aGUgbmV4dCBzdGF0IGNhbGwgY2FjaGUgaW4gdGhlIGNoYWluIG9mIHN0YXQgY2FjaGVzLgotICAvLy8gVGFrZXMgb3duZXJzaGlwIG9mIHRoZSBnaXZlbiBzdGF0IGNhY2hlLgotICB2b2lkIHNldE5leHRTdGF0Q2FjaGUoc3RkOjp1bmlxdWVfcHRyPEZpbGVTeXN0ZW1TdGF0Q2FjaGU+IENhY2hlKSB7Ci0gICAgTmV4dFN0YXRDYWNoZSA9IHN0ZDo6bW92ZShDYWNoZSk7Ci0gIH0KLQotICAvLy8gUmV0cmlldmUgdGhlIG5leHQgc3RhdCBjYWxsIGNhY2hlIGluIHRoZSBjaGFpbi4KLSAgRmlsZVN5c3RlbVN0YXRDYWNoZSAqZ2V0TmV4dFN0YXRDYWNoZSgpIHsgcmV0dXJuIE5leHRTdGF0Q2FjaGUuZ2V0KCk7IH0KLQotICAvLy8gUmV0cmlldmUgdGhlIG5leHQgc3RhdCBjYWxsIGNhY2hlIGluIHRoZSBjaGFpbiwgdHJhbnNmZXJyaW5nCi0gIC8vLyBvd25lcnNoaXAgb2YgdGhpcyBjYWNoZSAoYW5kLCB0cmFuc2l0aXZlbHksIGFsbCBvZiB0aGUgcmVtYWluaW5nIGNhY2hlcykKLSAgLy8vIHRvIHRoZSBjYWxsZXIuCi0gIHN0ZDo6dW5pcXVlX3B0cjxGaWxlU3lzdGVtU3RhdENhY2hlPiB0YWtlTmV4dFN0YXRDYWNoZSgpIHsKLSAgICByZXR1cm4gc3RkOjptb3ZlKE5leHRTdGF0Q2FjaGUpOwotICB9Ci0KIHByb3RlY3RlZDoKICAgLy8gRklYTUU6IFRoZSBwb2ludGVyIGhlcmUgaXMgYSBub24tb3duaW5nL29wdGlvbmFsIHJlZmVyZW5jZSB0byB0aGUKICAgLy8gdW5pcXVlX3B0ci4gT3B0aW9uYWw8dW5pcXVlX3B0cjx2ZnM6OkZpbGU+Jj4gbWlnaHQgYmUgbmljZXIsIGJ1dApAQCAtMTExLDE3ICs5MSw2IEBACiAgIHZpcnR1YWwgTG9va3VwUmVzdWx0IGdldFN0YXQoU3RyaW5nUmVmIFBhdGgsIEZpbGVEYXRhICZEYXRhLCBib29sIGlzRmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8bGx2bTo6dmZzOjpGaWxlPiAqRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjp2ZnM6OkZpbGVTeXN0ZW0gJkZTKSA9IDA7Ci0KLSAgTG9va3VwUmVzdWx0IHN0YXRDaGFpbmVkKFN0cmluZ1JlZiBQYXRoLCBGaWxlRGF0YSAmRGF0YSwgYm9vbCBpc0ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8bGx2bTo6dmZzOjpGaWxlPiAqRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OnZmczo6RmlsZVN5c3RlbSAmRlMpIHsKLSAgICBpZiAoRmlsZVN5c3RlbVN0YXRDYWNoZSAqTmV4dCA9IGdldE5leHRTdGF0Q2FjaGUoKSkKLSAgICAgIHJldHVybiBOZXh0LT5nZXRTdGF0KFBhdGgsIERhdGEsIGlzRmlsZSwgRiwgRlMpOwotCi0gICAgLy8gSWYgd2UgaGl0IHRoZSBlbmQgb2YgdGhlIGxpc3Qgb2Ygc3RhdCBjYWNoZXMgdG8gdHJ5LCBqdXN0IGNvbXB1dGUgYW5kCi0gICAgLy8gcmV0dXJuIGl0IHdpdGhvdXQgYSBjYWNoZS4KLSAgICByZXR1cm4gZ2V0KFBhdGgsIERhdGEsIGlzRmlsZSwgRiwgbnVsbHB0ciwgRlMpID8gQ2FjaGVNaXNzaW5nIDogQ2FjaGVFeGlzdHM7Ci0gIH0KIH07CiAKIC8vLyBBIHN0YXQgImNhY2hlIiB0aGF0IGNhbiBiZSB1c2VkIGJ5IEZpbGVNYW5hZ2VyIHRvIGtlZXAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0ZpeGVkUG9pbnQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0ZpeGVkUG9pbnQuaAppbmRleCA5YTliN2NjLi5mNjhlZDU2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9GaXhlZFBvaW50LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvRml4ZWRQb2ludC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEZpeGVkUG9pbnQuaCAtIEZpeGVkIHBvaW50IGNvbnN0YW50IGhhbmRsaW5nIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xOCw2ICsxNyw4IEBACiAjZGVmaW5lIExMVk1fQ0xBTkdfQkFTSUNfRklYRURQT0lOVF9ICiAKICNpbmNsdWRlICJsbHZtL0FEVC9BUFNJbnQuaCIKKyNpbmNsdWRlICJsbHZtL0FEVC9TbWFsbFN0cmluZy5oIgorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9yYXdfb3N0cmVhbS5oIgogCiBuYW1lc3BhY2UgY2xhbmcgewogCkBAIC0zNiw2ICszNyw4IEBACiAgICAgICA6IFdpZHRoKFdpZHRoKSwgU2NhbGUoU2NhbGUpLCBJc1NpZ25lZChJc1NpZ25lZCksCiAgICAgICAgIElzU2F0dXJhdGVkKElzU2F0dXJhdGVkKSwgSGFzVW5zaWduZWRQYWRkaW5nKEhhc1Vuc2lnbmVkUGFkZGluZykgewogICAgIGFzc2VydChXaWR0aCA+PSBTY2FsZSAmJiAiTm90IGVub3VnaCByb29tIGZvciB0aGUgc2NhbGUiKTsKKyAgICBhc3NlcnQoIShJc1NpZ25lZCAmJiBIYXNVbnNpZ25lZFBhZGRpbmcpICYmCisgICAgICAgICAgICJDYW5ub3QgaGF2ZSB1bnNpZ25lZCBwYWRkaW5nIG9uIGEgc2lnbmVkIHR5cGUuIik7CiAgIH0KIAogICB1bnNpZ25lZCBnZXRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIFdpZHRoOyB9CkBAIC00Niw2ICs0OSw5IEBACiAKICAgdm9pZCBzZXRTYXR1cmF0ZWQoYm9vbCBTYXR1cmF0ZWQpIHsgSXNTYXR1cmF0ZWQgPSBTYXR1cmF0ZWQ7IH0KIAorICAvLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgaW50ZWdyYWwgYml0cyByZXByZXNlbnRlZCBieSB0aGVzZSBzZW1hbnRpY3MuIFRoZXNlCisgIC8vLyBhcmUgc2VwYXJhdGUgZnJvbSB0aGUgZnJhY3Rpb25hbCBiaXRzIGFuZCBkbyBub3QgaW5jbHVkZSB0aGUgc2lnbiBvcgorICAvLy8gcGFkZGluZyBiaXQuCiAgIHVuc2lnbmVkIGdldEludGVncmFsQml0cygpIGNvbnN0IHsKICAgICBpZiAoSXNTaWduZWQgfHwgKCFJc1NpZ25lZCAmJiBIYXNVbnNpZ25lZFBhZGRpbmcpKQogICAgICAgcmV0dXJuIFdpZHRoIC0gU2NhbGUgLSAxOwpAQCAtNTMsNiArNTksMjEgQEAKICAgICAgIHJldHVybiBXaWR0aCAtIFNjYWxlOwogICB9CiAKKyAgLy8vIFJldHVybiB0aGUgRml4ZWRQb2ludFNlbWFudGljcyB0aGF0IGFsbG93cyBmb3IgY2FsY3VsYXRpbmcgdGhlIGZ1bGwKKyAgLy8vIHByZWNpc2lvbiBzZW1hbnRpYyB0aGF0IGNhbiBwcmVjaXNlbHkgcmVwcmVzZW50IHRoZSBwcmVjaXNpb24gYW5kIHJhbmdlcworICAvLy8gb2YgYm90aCBpbnB1dCB2YWx1ZXMuIFRoaXMgZG9lcyBub3QgY29tcHV0ZSB0aGUgcmVzdWx0aW5nIHNlbWFudGljcyBmb3IgYQorICAvLy8gZ2l2ZW4gYmluYXJ5IG9wZXJhdGlvbi4KKyAgRml4ZWRQb2ludFNlbWFudGljcworICBnZXRDb21tb25TZW1hbnRpY3MoY29uc3QgRml4ZWRQb2ludFNlbWFudGljcyAmT3RoZXIpIGNvbnN0OworCisgIC8vLyBSZXR1cm4gdGhlIEZpeGVkUG9pbnRTZW1hbnRpY3MgZm9yIGFuIGludGVnZXIgdHlwZS4KKyAgc3RhdGljIEZpeGVkUG9pbnRTZW1hbnRpY3MgR2V0SW50ZWdlclNlbWFudGljcyh1bnNpZ25lZCBXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIElzU2lnbmVkKSB7CisgICAgcmV0dXJuIEZpeGVkUG9pbnRTZW1hbnRpY3MoV2lkdGgsIC8qU2NhbGU9Ki8wLCBJc1NpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKklzU2F0dXJhdGVkPSovZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypIYXNVbnNpZ25lZFBhZGRpbmc9Ki9mYWxzZSk7CisgIH0KKwogcHJpdmF0ZToKICAgdW5zaWduZWQgV2lkdGg7CiAgIHVuc2lnbmVkIFNjYWxlOwpAQCAtODMsMTkgKzEwNCwzOCBAQAogICAgICAgIDogQVBGaXhlZFBvaW50KGxsdm06OkFQSW50KFNlbWEuZ2V0V2lkdGgoKSwgVmFsLCBTZW1hLmlzU2lnbmVkKCkpLAogICAgICAgICAgICAgICAgICAgICAgIFNlbWEpIHt9CiAKKyAgIC8vIFplcm8gaW5pdGlhbGl6YXRpb24uCisgICBBUEZpeGVkUG9pbnQoY29uc3QgRml4ZWRQb2ludFNlbWFudGljcyAmU2VtYSkgOiBBUEZpeGVkUG9pbnQoMCwgU2VtYSkge30KKwogICAgbGx2bTo6QVBTSW50IGdldFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbGx2bTo6QVBTSW50KFZhbCwgIVNlbWEuaXNTaWduZWQoKSk7IH0KICAgIGlubGluZSB1bnNpZ25lZCBnZXRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIFNlbWEuZ2V0V2lkdGgoKTsgfQogICAgaW5saW5lIHVuc2lnbmVkIGdldFNjYWxlKCkgY29uc3QgeyByZXR1cm4gU2VtYS5nZXRTY2FsZSgpOyB9CiAgICBpbmxpbmUgYm9vbCBpc1NhdHVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIFNlbWEuaXNTYXR1cmF0ZWQoKTsgfQogICAgaW5saW5lIGJvb2wgaXNTaWduZWQoKSBjb25zdCB7IHJldHVybiBTZW1hLmlzU2lnbmVkKCk7IH0KICAgIGlubGluZSBib29sIGhhc1BhZGRpbmcoKSBjb25zdCB7IHJldHVybiBTZW1hLmhhc1Vuc2lnbmVkUGFkZGluZygpOyB9CisgICBGaXhlZFBvaW50U2VtYW50aWNzIGdldFNlbWFudGljcygpIGNvbnN0IHsgcmV0dXJuIFNlbWE7IH0KIAotICAgLy8gQ29udmVydCB0aGlzIG51bWJlciB0byBtYXRjaCB0aGUgc2VtYW50aWNzIHByb3ZpZGVkLgotICAgQVBGaXhlZFBvaW50IGNvbnZlcnQoY29uc3QgRml4ZWRQb2ludFNlbWFudGljcyAmRHN0U2VtYSkgY29uc3Q7CisgICBib29sIGdldEJvb2xWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFZhbC5nZXRCb29sVmFsdWUoKTsgfQorCisgICAvLyBDb252ZXJ0IHRoaXMgbnVtYmVyIHRvIG1hdGNoIHRoZSBzZW1hbnRpY3MgcHJvdmlkZWQuIElmIHRoZSBvdmVyZmxvdworICAgLy8gcGFyYW1ldGVyIGlzIHByb3ZpZGVkLCBzZXQgdGhpcyB2YWx1ZSB0byB0cnVlIG9yIGZhbHNlIHRvIGluZGljYXRlIGlmIHRoaXMKKyAgIC8vIG9wZXJhdGlvbiByZXN1bHRzIGluIGFuIG92ZXJmbG93LgorICAgQVBGaXhlZFBvaW50IGNvbnZlcnQoY29uc3QgRml4ZWRQb2ludFNlbWFudGljcyAmRHN0U2VtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKk92ZXJmbG93ID0gbnVsbHB0cikgY29uc3Q7CisKKyAgIC8vIFBlcmZvcm0gYmluYXJ5IG9wZXJhdGlvbnMgb24gYSBmaXhlZCBwb2ludCB0eXBlLiBUaGUgcmVzdWx0aW5nIGZpeGVkIHBvaW50CisgICAvLyB2YWx1ZSB3aWxsIGJlIGluIHRoZSBjb21tb24sIGZ1bGwgcHJlY2lzaW9uIHNlbWFudGljcyB0aGF0IGNhbiByZXByZXNlbnQKKyAgIC8vIHRoZSBwcmVjaXNpb24gYW5kIHJhbmdlcyBvcyBib3RoIGlucHV0IHZhbHVlcy4gU2VlIGNvbnZlcnQoKSBmb3IgYW4KKyAgIC8vIGV4cGxhbmF0aW9uIG9mIHRoZSBPdmVyZmxvdyBwYXJhbWV0ZXIuCisgICBBUEZpeGVkUG9pbnQgYWRkKGNvbnN0IEFQRml4ZWRQb2ludCAmT3RoZXIsIGJvb2wgKk92ZXJmbG93ID0gbnVsbHB0cikgY29uc3Q7CisKKyAgIC8vLyBQZXJmb3JtIGEgdW5hcnkgbmVnYXRpb24gKC1YKSBvbiB0aGlzIGZpeGVkIHBvaW50IHR5cGUsIHRha2luZyBpbnRvCisgICAvLy8gYWNjb3VudCBzYXR1cmF0aW9uIGlmIGFwcGxpY2FibGUuCisgICBBUEZpeGVkUG9pbnQgbmVnYXRlKGJvb2wgKk92ZXJmbG93ID0gbnVsbHB0cikgY29uc3Q7CiAKICAgIEFQRml4ZWRQb2ludCBzaHIodW5zaWduZWQgQW10KSBjb25zdCB7CiAgICAgIHJldHVybiBBUEZpeGVkUG9pbnQoVmFsID4+IEFtdCwgU2VtYSk7Ci0gIH0KKyAgIH0KIAogICBBUEZpeGVkUG9pbnQgc2hsKHVuc2lnbmVkIEFtdCkgY29uc3QgewogICAgIHJldHVybiBBUEZpeGVkUG9pbnQoVmFsIDw8IEFtdCwgU2VtYSk7CkBAIC0xMDgsNiArMTQ4LDEzIEBACiAgICAgICByZXR1cm4gVmFsID4+IGdldFNjYWxlKCk7CiAgIH0KIAorICB2b2lkIHRvU3RyaW5nKGxsdm06OlNtYWxsVmVjdG9ySW1wbDxjaGFyPiAmU3RyKSBjb25zdDsKKyAgc3RkOjpzdHJpbmcgdG9TdHJpbmcoKSBjb25zdCB7CisgICAgbGx2bTo6U21hbGxTdHJpbmc8NDA+IFM7CisgICAgdG9TdHJpbmcoUyk7CisgICAgcmV0dXJuIFMuc3RyKCk7CisgIH0KKwogICAvLyBJZiBMSFMgPiBSSFMsIHJldHVybiAxLiBJZiBMSFMgPT0gUkhTLCByZXR1cm4gMC4gSWYgTEhTIDwgUkhTLCByZXR1cm4gLTEuCiAgIGludCBjb21wYXJlKGNvbnN0IEFQRml4ZWRQb2ludCAmT3RoZXIpIGNvbnN0OwogICBib29sIG9wZXJhdG9yPT0oY29uc3QgQVBGaXhlZFBvaW50ICZPdGhlcikgY29uc3QgewpAQCAtMTMzLDYgKzE4MCwxMiBAQAogICBGaXhlZFBvaW50U2VtYW50aWNzIFNlbWE7CiB9OwogCitpbmxpbmUgbGx2bTo6cmF3X29zdHJlYW0gJm9wZXJhdG9yPDwobGx2bTo6cmF3X29zdHJlYW0gJk9TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFQRml4ZWRQb2ludCAmRlgpIHsKKyAgT1MgPDwgRlgudG9TdHJpbmcoKTsKKyAgcmV0dXJuIE9TOworfQorCiB9ICAvLyBuYW1lc3BhY2UgY2xhbmcKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9JZGVudGlmaWVyVGFibGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0lkZW50aWZpZXJUYWJsZS5oCmluZGV4IDQ3OGMyNWUuLjQ2NTQ4NmUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0lkZW50aWZpZXJUYWJsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0lkZW50aWZpZXJUYWJsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIElkZW50aWZpZXJUYWJsZS5oIC0gSGFzaCB0YWJsZSBmb3IgaWRlbnRpZmllciBsb29rdXAgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMTYsMTAgKzExNSwxOSBAQAogCiAgIGxsdm06OlN0cmluZ01hcEVudHJ5PElkZW50aWZpZXJJbmZvICo+ICpFbnRyeSA9IG51bGxwdHI7CiAKKyAgSWRlbnRpZmllckluZm8oKQorICAgICAgOiBUb2tlbklEKHRvazo6aWRlbnRpZmllciksIE9iakNPckJ1aWx0aW5JRCgwKSwgSGFzTWFjcm8oZmFsc2UpLAorICAgICAgICBIYWRNYWNybyhmYWxzZSksIElzRXh0ZW5zaW9uKGZhbHNlKSwgSXNGdXR1cmVDb21wYXRLZXl3b3JkKGZhbHNlKSwKKyAgICAgICAgSXNQb2lzb25lZChmYWxzZSksIElzQ1BQT3BlcmF0b3JLZXl3b3JkKGZhbHNlKSwKKyAgICAgICAgTmVlZHNIYW5kbGVJZGVudGlmaWVyKGZhbHNlKSwgSXNGcm9tQVNUKGZhbHNlKSwgQ2hhbmdlZEFmdGVyTG9hZChmYWxzZSksCisgICAgICAgIEZFQ2hhbmdlZEFmdGVyTG9hZChmYWxzZSksIFJldmVydGVkVG9rZW5JRChmYWxzZSksIE91dE9mRGF0ZShmYWxzZSksCisgICAgICAgIElzTW9kdWxlc0ltcG9ydChmYWxzZSkge30KKwogcHVibGljOgotICBJZGVudGlmaWVySW5mbygpOwogICBJZGVudGlmaWVySW5mbyhjb25zdCBJZGVudGlmaWVySW5mbyAmKSA9IGRlbGV0ZTsKICAgSWRlbnRpZmllckluZm8gJm9wZXJhdG9yPShjb25zdCBJZGVudGlmaWVySW5mbyAmKSA9IGRlbGV0ZTsKKyAgSWRlbnRpZmllckluZm8oSWRlbnRpZmllckluZm8gJiYpID0gZGVsZXRlOworICBJZGVudGlmaWVySW5mbyAmb3BlcmF0b3I9KElkZW50aWZpZXJJbmZvICYmKSA9IGRlbGV0ZTsKIAogICAvLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBpcyB0aGUgaWRlbnRpZmllciBmb3IgdGhlIHNwZWNpZmllZCBzdHJpbmcuCiAgIC8vLwpAQCAtMTM4LDMxICsxNDYsMTAgQEAKIAogICAvLy8gUmV0dXJuIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFjdHVhbCBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIGZvciB0aGlzCiAgIC8vLyBpZGVudGlmaWVyLgotICBjb25zdCBjaGFyICpnZXROYW1lU3RhcnQoKSBjb25zdCB7Ci0gICAgaWYgKEVudHJ5KSByZXR1cm4gRW50cnktPmdldEtleURhdGEoKTsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBncm9zcy4gSXQgd291bGQgYmUgYmVzdCBub3QgdG8gZW1iZWQgc3BlY2lmaWMgZGV0YWlscwotICAgIC8vIG9mIHRoZSBQVEggZmlsZSBmb3JtYXQgaGVyZS4KLSAgICAvLyBUaGUgJ3RoaXMnIHBvaW50ZXIgcmVhbGx5IHBvaW50cyB0byBhCi0gICAgLy8gc3RkOjpwYWlyPElkZW50aWZpZXJJbmZvLCBjb25zdCBjaGFyKj4sIHdoZXJlIGludGVybmFsIHBvaW50ZXIKLSAgICAvLyBwb2ludHMgdG8gdGhlIGV4dGVybmFsIHN0cmluZyBkYXRhLgotICAgIHVzaW5nIGFjdHVhbHR5cGUgPSBzdGQ6OnBhaXI8SWRlbnRpZmllckluZm8sIGNvbnN0IGNoYXIgKj47Ci0KLSAgICByZXR1cm4gKChjb25zdCBhY3R1YWx0eXBlKikgdGhpcyktPnNlY29uZDsKLSAgfQorICBjb25zdCBjaGFyICpnZXROYW1lU3RhcnQoKSBjb25zdCB7IHJldHVybiBFbnRyeS0+Z2V0S2V5RGF0YSgpOyB9CiAKICAgLy8vIEVmZmljaWVudGx5IHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoaXMgaWRlbnRpZmllciBpbmZvLgotICB1bnNpZ25lZCBnZXRMZW5ndGgoKSBjb25zdCB7Ci0gICAgaWYgKEVudHJ5KSByZXR1cm4gRW50cnktPmdldEtleUxlbmd0aCgpOwotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGdyb3NzLiBJdCB3b3VsZCBiZSBiZXN0IG5vdCB0byBlbWJlZCBzcGVjaWZpYyBkZXRhaWxzCi0gICAgLy8gb2YgdGhlIFBUSCBmaWxlIGZvcm1hdCBoZXJlLgotICAgIC8vIFRoZSAndGhpcycgcG9pbnRlciByZWFsbHkgcG9pbnRzIHRvIGEKLSAgICAvLyBzdGQ6OnBhaXI8SWRlbnRpZmllckluZm8sIGNvbnN0IGNoYXIqPiwgd2hlcmUgaW50ZXJuYWwgcG9pbnRlcgotICAgIC8vIHBvaW50cyB0byB0aGUgZXh0ZXJuYWwgc3RyaW5nIGRhdGEuCi0gICAgdXNpbmcgYWN0dWFsdHlwZSA9IHN0ZDo6cGFpcjxJZGVudGlmaWVySW5mbywgY29uc3QgY2hhciAqPjsKLQotICAgIGNvbnN0IGNoYXIqIHAgPSAoKGNvbnN0IGFjdHVhbHR5cGUqKSB0aGlzKS0+c2Vjb25kIC0gMjsKLSAgICByZXR1cm4gKCgodW5zaWduZWQpIHBbMF0pIHwgKCgodW5zaWduZWQpIHBbMV0pIDw8IDgpKSAtIDE7Ci0gIH0KKyAgdW5zaWduZWQgZ2V0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gRW50cnktPmdldEtleUxlbmd0aCgpOyB9CiAKICAgLy8vIFJldHVybiB0aGUgYWN0dWFsIGlkZW50aWZpZXIgc3RyaW5nLgogICBTdHJpbmdSZWYgZ2V0TmFtZSgpIGNvbnN0IHsKQEAgLTk1MSw5ICs5MzgsNiBAQAogICB9CiB9OwogCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzUG9kTGlrZTxjbGFuZzo6U2VsZWN0b3I+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotCiB0ZW1wbGF0ZTw+CiBzdHJ1Y3QgUG9pbnRlckxpa2VUeXBlVHJhaXRzPGNsYW5nOjpTZWxlY3Rvcj4gewogICBzdGF0aWMgY29uc3Qgdm9pZCAqZ2V0QXNWb2lkUG9pbnRlcihjbGFuZzo6U2VsZWN0b3IgUCkgewpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvTExWTS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvTExWTS5oCmluZGV4IDNmODMzYzYuLmU5YmI5NmEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0xMVk0uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9MTFZNLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBMTFZNLmggLSBJbXBvcnQgdmFyaW91cyBjb21tb24gTExWTSBkYXRhdHlwZXMgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0xhbWJkYS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvTGFtYmRhLmgKaW5kZXggNjc1ODU0ZS4uODUzODIxYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvTGFtYmRhLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvTGFtYmRhLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBMYW1iZGEuaCAtIFR5cGVzIGZvciBDKysgTGFtYmRhcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9MYW5nT3B0aW9ucy5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9MYW5nT3B0aW9ucy5kZWYKaW5kZXggOGI5Mjg0MS4uZDUyZjljMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvTGFuZ09wdGlvbnMuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0xhbmdPcHRpb25zLmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIExhbmdPcHRpb25zLmRlZiAtIExhbmd1YWdlIG9wdGlvbiBkYXRhYmFzZSAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtOTIsOCArOTEsNyBAQAogTEFOR09QVChDUGx1c1BsdXMxNCAgICAgICAsIDEsIDAsICJDKysxNCIpCiBMQU5HT1BUKENQbHVzUGx1czE3ICAgICAgICwgMSwgMCwgIkMrKzE3IikKIExBTkdPUFQoQ1BsdXNQbHVzMmEgICAgICAgLCAxLCAwLCAiQysrMmEiKQotTEFOR09QVChPYmpDMSAgICAgICAgICAgICAsIDEsIDAsICJPYmplY3RpdmUtQyAxIikKLUxBTkdPUFQoT2JqQzIgICAgICAgICAgICAgLCAxLCAwLCAiT2JqZWN0aXZlLUMgMiIpCitMQU5HT1BUKE9iakMgICAgICAgICAgICAgICwgMSwgMCwgIk9iamVjdGl2ZS1DIikKIEJFTklHTl9MQU5HT1BUKE9iakNEZWZhdWx0U3ludGhQcm9wZXJ0aWVzICwgMSwgMCwKICAgICAgICAgICAgICAgICJPYmplY3RpdmUtQyBhdXRvLXN5bnRoZXNpemVkIHByb3BlcnRpZXMiKQogQkVOSUdOX0xBTkdPUFQoRW5jb2RlRXh0ZW5kZWRCbG9ja1NpZyAsIDEsIDAsCkBAIC0xMzksNiArMTM3LDcgQEAKIExBTkdPUFQoTm9NYXRoQnVpbHRpbiAgICAgLCAxLCAwLCAiZGlzYWJsZSBtYXRoIGJ1aWx0aW4gZnVuY3Rpb25zIikKIExBTkdPUFQoR05VQXNtICAgICAgICAgICAgLCAxLCAxLCAiR05VLXN0eWxlIGlubGluZSBhc3NlbWJseSIpCiBMQU5HT1BUKENvcm91dGluZXNUUyAgICAgICwgMSwgMCwgIkMrKyBjb3JvdXRpbmVzIFRTIikKK0xBTkdPUFQoRGxsRXhwb3J0SW5saW5lcyAgLCAxLCAxLCAiZGxsZXhwb3J0ZWQgY2xhc3NlcyBkbGxleHBvcnQgaW5saW5lIG1ldGhvZHMiKQogTEFOR09QVChSZWxheGVkVGVtcGxhdGVUZW1wbGF0ZUFyZ3MsIDEsIDAsICJDKysxNyByZWxheGVkIG1hdGNoaW5nIG9mIHRlbXBsYXRlIHRlbXBsYXRlIGFyZ3VtZW50cyIpCiAKIExBTkdPUFQoRG91YmxlU3F1YXJlQnJhY2tldEF0dHJpYnV0ZXMsIDEsIDAsICInW1tdXScgYXR0cmlidXRlcyBleHRlbnNpb24gZm9yIGFsbCBsYW5ndWFnZSBzdGFuZGFyZCBtb2RlcyIpCkBAIC0yMDQsNyArMjAzLDkgQEAKIExBTkdPUFQoT3Blbk1QSXNEZXZpY2UgICAgLCAxLCAwLCAiR2VuZXJhdGUgY29kZSBvbmx5IGZvciBPcGVuTVAgdGFyZ2V0IGRldmljZSIpCiBMQU5HT1BUKE9wZW5NUENVREFNb2RlICAgICwgMSwgMCwgIkdlbmVyYXRlIGNvZGUgZm9yIE9wZW5NUCBwcmFnbWFzIGluIFNJTVQvU1BNRCBtb2RlIikKIExBTkdPUFQoT3Blbk1QQ1VEQUZvcmNlRnVsbFJ1bnRpbWUgLCAxLCAwLCAiRm9yY2UgdG8gdXNlIGZ1bGwgcnVudGltZSBpbiBhbGwgY29uc3RydWN0cyB3aGVuIG9mZmxvYWRpbmcgdG8gQ1VEQSBkZXZpY2VzIikKLUxBTkdPUFQoT3Blbk1QSG9zdENYWEV4Y2VwdGlvbnMgICAgLCAxLCAwLCAiQysrIGV4Y2VwdGlvbnMgaGFuZGxpbmcgaW4gdGhlIGhvc3QgY29kZS4iKQorTEFOR09QVChPcGVuTVBDVURBTnVtU01zICAsIDMyLCAwLCAiTnVtYmVyIG9mIFNNcyBmb3IgQ1VEQSBkZXZpY2VzLiIpCitMQU5HT1BUKE9wZW5NUENVREFCbG9ja3NQZXJTTSAgLCAzMiwgMCwgIk51bWJlciBvZiBibG9ja3MgcGVyIFNNIGZvciBDVURBIGRldmljZXMuIikKK0xBTkdPUFQoT3Blbk1QT3B0aW1pc3RpY0NvbGxhcHNlICAsIDEsIDAsICJVc2UgYXQgbW9zdCAzMiBiaXRzIHRvIHJlcHJlc2VudCB0aGUgY29sbGFwc2VkIGxvb3AgbmVzdCBjb3VudGVyLiIpCiBMQU5HT1BUKFJlbmRlclNjcmlwdCAgICAgICwgMSwgMCwgIlJlbmRlclNjcmlwdCIpCiAKIExBTkdPUFQoQ1VEQUlzRGV2aWNlICAgICAgLCAxLCAwLCAiY29tcGlsaW5nIGZvciBDVURBIGRldmljZSIpCkBAIC0yMjUsNyArMjI2LDggQEAKIEJFTklHTl9MQU5HT1BUKER1bXBSZWNvcmRMYXlvdXRzU2ltcGxlICwgMSwgMCwgImR1bXBpbmcgdGhlIGxheW91dCBvZiBJUmdlbidkIHJlY29yZHMgaW4gYSBzaW1wbGUgZm9ybSIpCiBCRU5JR05fTEFOR09QVChEdW1wVlRhYmxlTGF5b3V0cyAsIDEsIDAsICJkdW1waW5nIHRoZSBsYXlvdXRzIG9mIGVtaXR0ZWQgdnRhYmxlcyIpCiBMQU5HT1BUKE5vQ29uc3RhbnRDRlN0cmluZ3MgLCAxLCAwLCAibm8gY29uc3RhbnQgQ29yZUZvdW5kYXRpb24gc3RyaW5ncyIpCi1CRU5JR05fTEFOR09QVChJbmxpbmVWaXNpYmlsaXR5SGlkZGVuICwgMSwgMCwgImhpZGRlbiBkZWZhdWx0IHZpc2liaWxpdHkgZm9yIGlubGluZSBDKysgbWV0aG9kcyIpCitCRU5JR05fTEFOR09QVChJbmxpbmVWaXNpYmlsaXR5SGlkZGVuICwgMSwgMCwgImhpZGRlbiB2aXNpYmlsaXR5IGZvciBpbmxpbmUgQysrIG1ldGhvZHMiKQorTEFOR09QVChHbG9iYWxBbGxvY2F0aW9uRnVuY3Rpb25WaXNpYmlsaXR5SGlkZGVuICwgMSwgMCwgImhpZGRlbiB2aXNpYmlsaXR5IGZvciBnbG9iYWwgb3BlcmF0b3IgbmV3IGFuZCBkZWxldGUgZGVjbGFyYXRpb24iKQogQkVOSUdOX0xBTkdPUFQoUGFyc2VVbmtub3duQW55dHlwZSwgMSwgMCwgIl9fdW5rbm93bl9hbnl0eXBlIikKIEJFTklHTl9MQU5HT1BUKERlYnVnZ2VyU3VwcG9ydCAsIDEsIDAsICJkZWJ1Z2dlciBzdXBwb3J0IikKIEJFTklHTl9MQU5HT1BUKERlYnVnZ2VyQ2FzdFJlc3VsdFRvSWQsIDEsIDAsICJmb3IgJ3BvJyBpbiB0aGUgZGVidWdnZXIsIGNhc3QgdGhlIHJlc3VsdCB0byBpZCBpZiBpdCBpcyBvZiB1bmtub3duIHR5cGUiKQpAQCAtMjU1LDExICsyNTcsMTUgQEAKIAogRU5VTV9MQU5HT1BUKEdDLCBHQ01vZGUsIDIsIE5vbkdDLCAiT2JqZWN0aXZlLUMgR2FyYmFnZSBDb2xsZWN0aW9uIG1vZGUiKQogRU5VTV9MQU5HT1BUKFZhbHVlVmlzaWJpbGl0eU1vZGUsIFZpc2liaWxpdHksIDMsIERlZmF1bHRWaXNpYmlsaXR5LAotICAgICAgICAgICAgICJ2YWx1ZSBzeW1ib2wgdmlzaWJpbGl0eSIpCisgICAgICAgICAgICAgImRlZmF1bHQgdmlzaWJpbGl0eSBmb3IgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgWy1mdmlzaWJpbGl0eV0iKQogRU5VTV9MQU5HT1BUKFR5cGVWaXNpYmlsaXR5TW9kZSwgVmlzaWJpbGl0eSwgMywgRGVmYXVsdFZpc2liaWxpdHksCi0gICAgICAgICAgICAgInR5cGUgc3ltYm9sIHZpc2liaWxpdHkiKQorICAgICAgICAgICAgICJkZWZhdWx0IHZpc2liaWxpdHkgZm9yIHR5cGVzIFstZnR5cGUtdmlzaWJpbGl0eV0iKQorTEFOR09QVChTZXRWaXNpYmlsaXR5Rm9yRXh0ZXJuRGVjbHMsIDEsIDAsCisgICAgICAgICJhcHBseSBnbG9iYWwgc3ltYm9sIHZpc2liaWxpdHkgdG8gZXh0ZXJuYWwgZGVjbGFyYXRpb25zIHdpdGhvdXQgYW4gZXhwbGljaXQgdmlzaWJpbGl0eSIpCiBFTlVNX0xBTkdPUFQoU3RhY2tQcm90ZWN0b3IsIFN0YWNrUHJvdGVjdG9yTW9kZSwgMiwgU1NQT2ZmLAogICAgICAgICAgICAgICJzdGFjayBwcm90ZWN0b3IgbW9kZSIpCitFTlVNX0xBTkdPUFQoVHJpdmlhbEF1dG9WYXJJbml0LCBUcml2aWFsQXV0b1ZhckluaXRLaW5kLCAyLCBUcml2aWFsQXV0b1ZhckluaXRLaW5kOjpVbmluaXRpYWxpemVkLAorICAgICAgICAgICAgICJ0cml2aWFsIGF1dG9tYXRpYyB2YXJpYWJsZSBpbml0aWFsaXphdGlvbiIpCiBFTlVNX0xBTkdPUFQoU2lnbmVkT3ZlcmZsb3dCZWhhdmlvciwgU2lnbmVkT3ZlcmZsb3dCZWhhdmlvclR5LCAyLCBTT0JfVW5kZWZpbmVkLAogICAgICAgICAgICAgICJzaWduZWQgaW50ZWdlciBvdmVyZmxvdyBoYW5kbGluZyIpCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0xhbmdPcHRpb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9MYW5nT3B0aW9ucy5oCmluZGV4IDMwZWUyMDMuLmM3ZTI5OTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0xhbmdPcHRpb25zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvTGFuZ09wdGlvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMYW5nT3B0aW9ucy5oIC0gQyBMYW5ndWFnZSBGYW1pbHkgTGFuZ3VhZ2UgT3B0aW9ucyAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNTQsNiArNTMsMTEgQEAKICAgZW51bSBHQ01vZGUgeyBOb25HQywgR0NPbmx5LCBIeWJyaWRHQyB9OwogICBlbnVtIFN0YWNrUHJvdGVjdG9yTW9kZSB7IFNTUE9mZiwgU1NQT24sIFNTUFN0cm9uZywgU1NQUmVxIH07CiAKKyAgLy8gQXV0b21hdGljIHZhcmlhYmxlcyBsaXZlIG9uIHRoZSBzdGFjaywgYW5kIHdoZW4gdHJpdmlhbCB0aGV5J3JlIHVzdWFsbHkKKyAgLy8gdW5pbml0aWFsaXplZCBiZWNhdXNlIGl0J3MgdW5kZWZpbmVkIGJlaGF2aW9yIHRvIHVzZSB0aGVtIHdpdGhvdXQKKyAgLy8gaW5pdGlhbGl6aW5nIHRoZW0uCisgIGVudW0gY2xhc3MgVHJpdmlhbEF1dG9WYXJJbml0S2luZCB7IFVuaW5pdGlhbGl6ZWQsIFplcm8sIFBhdHRlcm4gfTsKKwogICBlbnVtIFNpZ25lZE92ZXJmbG93QmVoYXZpb3JUeSB7CiAgICAgLy8gRGVmYXVsdCBDIHN0YW5kYXJkIGJlaGF2aW9yLgogICAgIFNPQl9VbmRlZmluZWQsCkBAIC05OCwxMSArMTAyLDE0IEBACiAKICAgZW51bSBBZGRyU3BhY2VNYXBNYW5nbGluZyB7IEFTTU1fVGFyZ2V0LCBBU01NX09uLCBBU01NX09mZiB9OwogCisgIC8vIENvcnJlc3BvbmRzIHRvIF9NU0NfVkVSCiAgIGVudW0gTVNWQ01ham9yVmVyc2lvbiB7Ci0gICAgTVNWQzIwMTAgPSAxNiwKLSAgICBNU1ZDMjAxMiA9IDE3LAotICAgIE1TVkMyMDEzID0gMTgsCi0gICAgTVNWQzIwMTUgPSAxOQorICAgIE1TVkMyMDEwID0gMTYwMCwKKyAgICBNU1ZDMjAxMiA9IDE3MDAsCisgICAgTVNWQzIwMTMgPSAxODAwLAorICAgIE1TVkMyMDE1ID0gMTkwMCwKKyAgICBNU1ZDMjAxNyA9IDE5MTAsCisgICAgTVNWQzIwMTdfNSA9IDE5MTIKICAgfTsKIAogICAvLy8gQ2xhbmcgdmVyc2lvbnMgd2l0aCBkaWZmZXJlbnQgcGxhdGZvcm0gQUJJIGNvbmZvcm1hbmNlLgpAQCAtMTI0LDExICsxMzEsMzQgQEAKICAgICAvLy8gd2hldGhlciB3ZSByZXVzZSBiYXNlIGNsYXNzIHRhaWwgcGFkZGluZyBpbiBzb21lIEFCSXMuCiAgICAgVmVyNiwKIAorICAgIC8vLyBBdHRlbXB0IHRvIGJlIEFCSS1jb21wYXRpYmxlIHdpdGggY29kZSBnZW5lcmF0ZWQgYnkgQ2xhbmcgNy4wLngKKyAgICAvLy8gKFNWTiByMzM4NTM2KS4gVGhpcyBjYXVzZXMgYWxpZ25vZiAoQysrKSBhbmQgX0FsaWdub2YgKEMxMSkgdG8gYmUKKyAgICAvLy8gY29tcGF0aWJsZSB3aXRoIF9fYWxpZ25vZiAoaS5lLiwgcmV0dXJuIHRoZSBwcmVmZXJyZWQgYWxpZ25tZW50KQorICAgIC8vLyByYXRoZXIgdGhhbiByZXR1cm5pbmcgdGhlIHJlcXVpcmVkIGFsaWdubWVudC4KKyAgICBWZXI3LAorCiAgICAgLy8vIENvbmZvcm0gdG8gdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0ncyBDIGFuZCBDKysgQUJJcyBhcyBjbG9zZWx5CiAgICAgLy8vIGFzIHdlIGNhbi4KICAgICBMYXRlc3QKICAgfTsKIAorICBlbnVtIGNsYXNzIENvcmVGb3VuZGF0aW9uQUJJIHsKKyAgICAvLy8gTm8gaW50ZXJvcGVyYWJpbGl0eSBBQkkgaGFzIGJlZW4gc3BlY2lmaWVkCisgICAgVW5zcGVjaWZpZWQsCisgICAgLy8vIENvcmVGb3VuZGF0aW9uIGRvZXMgbm90IGhhdmUgYW55IGxhbmd1YWdlIGludGVyb3BlcmFiaWxpdHkKKyAgICBTdGFuZGFsb25lLAorICAgIC8vLyBJbnRlcm9wZXJhYmlsaXR5IHdpdGggdGhlIE9iamVjdGl2ZUMgcnVudGltZQorICAgIE9iamVjdGl2ZUMsCisgICAgLy8vIEludGVyb3BlcmFiaWxpdHkgd2l0aCB0aGUgbGF0ZXN0IGtub3duIHZlcnNpb24gb2YgdGhlIFN3aWZ0IHJ1bnRpbWUKKyAgICBTd2lmdCwKKyAgICAvLy8gSW50ZXJvcGVyYWJpbGl0eSB3aXRoIHRoZSBTd2lmdCA1LjAgcnVudGltZQorICAgIFN3aWZ0NV8wLAorICAgIC8vLyBJbnRlcm9wZXJhYmlsaXR5IHdpdGggdGhlIFN3aWZ0IDQuMiBydW50aW1lCisgICAgU3dpZnQ0XzIsCisgICAgLy8vIEludGVyb3BlcmFiaWxpdHkgd2l0aCB0aGUgU3dpZnQgNC4xIHJ1bnRpbWUKKyAgICBTd2lmdDRfMSwKKyAgfTsKKwogICBlbnVtIEZQQ29udHJhY3RNb2RlS2luZCB7CiAgICAgLy8gRm9ybSBmdXNlZCBGUCBvcHMgb25seSB3aGVyZSByZXN1bHQgd2lsbCBub3QgYmUgYWZmZWN0ZWQuCiAgICAgRlBDX09mZiwKQEAgLTE3NSw2ICsyMDUsOCBAQAogCiAgIGNsYW5nOjpPYmpDUnVudGltZSBPYmpDUnVudGltZTsKIAorICBDb3JlRm91bmRhdGlvbkFCSSBDRlJ1bnRpbWUgPSBDb3JlRm91bmRhdGlvbkFCSTo6VW5zcGVjaWZpZWQ7CisKICAgc3RkOjpzdHJpbmcgT2JqQ0NvbnN0YW50U3RyaW5nQ2xhc3M7CiAKICAgLy8vIFRoZSBuYW1lIG9mIHRoZSBoYW5kbGVyIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIC1mdHJhcHYgaXMKQEAgLTE4Myw3ICsyMTUsNyBAQAogICAvLy8gSWYgbm9uZSBpcyBzcGVjaWZpZWQsIGFib3J0IChHQ0MtY29tcGF0aWJsZSBiZWhhdmlvdXIpLgogICBzdGQ6OnN0cmluZyBPdmVyZmxvd0hhbmRsZXI7CiAKLSAgLy8vIFRoZSBtb2R1bGUgY3VycmVudGx5IGJlaW5nIGNvbXBpbGVkIGFzIHNwZWZpY2llZCBieSAtZm1vZHVsZS1uYW1lLgorICAvLy8gVGhlIG1vZHVsZSBjdXJyZW50bHkgYmVpbmcgY29tcGlsZWQgYXMgc3BlY2lmaWVkIGJ5IC1mbW9kdWxlLW5hbWUuCiAgIHN0ZDo6c3RyaW5nIE1vZHVsZU5hbWU7CiAKICAgLy8vIFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IG1vZHVsZSwgb2Ygd2hpY2ggdGhlIG1haW4gc291cmNlIGZpbGUKQEAgLTI0Niw3ICsyNzgsNyBAQAogICB9CiAKICAgYm9vbCBpc0NvbXBhdGlibGVXaXRoTVNWQyhNU1ZDTWFqb3JWZXJzaW9uIE1ham9yVmVyc2lvbikgY29uc3QgewotICAgIHJldHVybiBNU0NvbXBhdGliaWxpdHlWZXJzaW9uID49IE1ham9yVmVyc2lvbiAqIDEwMDAwMDAwVTsKKyAgICByZXR1cm4gTVNDb21wYXRpYmlsaXR5VmVyc2lvbiA+PSBNYWpvclZlcnNpb24gKiAxMDAwMDBVOwogICB9CiAKICAgLy8vIFJlc2V0IGFsbCBvZiB0aGUgb3B0aW9ucyB0aGF0IGFyZSBub3QgY29uc2lkZXJlZCB3aGVuIGJ1aWxkaW5nIGEKQEAgLTI3Myw3ICszMDUsNyBAQAogLy8vIEZsb2F0aW5nIHBvaW50IGNvbnRyb2wgb3B0aW9ucwogY2xhc3MgRlBPcHRpb25zIHsKIHB1YmxpYzoKLSAgRlBPcHRpb25zKCkgOiBmcF9jb250cmFjdChMYW5nT3B0aW9uczo6RlBDX09mZiksIAorICBGUE9wdGlvbnMoKSA6IGZwX2NvbnRyYWN0KExhbmdPcHRpb25zOjpGUENfT2ZmKSwKICAgICAgICAgICAgICAgICBmZW52X2FjY2VzcyhMYW5nT3B0aW9uczo6RkVBX09mZikge30KIAogICAvLyBVc2VkIGZvciBzZXJpYWxpemluZy4KQEAgLTMxOSw3ICszNTEsNyBAQAogICB1bnNpZ25lZCBnZXRJbnQoKSBjb25zdCB7IHJldHVybiBmcF9jb250cmFjdCB8IChmZW52X2FjY2VzcyA8PCAyKTsgfQogCiBwcml2YXRlOgotICAvLy8gQWRqdXN0IEJpbmFyeU9wZXJhdG9yOjpGUEZlYXR1cmVzIHRvIG1hdGNoIHRoZSB0b3RhbCBiaXQtZmllbGQgc2l6ZSAKKyAgLy8vIEFkanVzdCBCaW5hcnlPcGVyYXRvcjo6RlBGZWF0dXJlcyB0byBtYXRjaCB0aGUgdG90YWwgYml0LWZpZWxkIHNpemUKICAgLy8vIG9mIHRoZXNlIHR3by4KICAgdW5zaWduZWQgZnBfY29udHJhY3QgOiAyOwogICB1bnNpZ25lZCBmZW52X2FjY2VzcyA6IDE7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9MaW5rYWdlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9MaW5rYWdlLmgKaW5kZXggNTI5Y2ZhOS4uNjk2Zjg1YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvTGlua2FnZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL0xpbmthZ2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMaW5rYWdlLmggLSBMaW5rYWdlIGVudW1lcmF0aW9uIGFuZCB1dGlsaXRpZXMgLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvTVNQNDMwVGFyZ2V0LmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL01TUDQzMFRhcmdldC5kZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFlMTkyYwotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL01TUDQzMFRhcmdldC5kZWYKQEAgLTAsMCArMSwyNDYgQEAKKy8vPT09LS0tIE1TUDQzMFRhcmdldC5kZWYgLSBNU1A0MzAgRmVhdHVyZS9Qcm9jZXNzb3IgRGF0YWJhc2UtLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gVGhpcyBmaWxlIGRlZmluZXMgdGhlIE1TUDQzMCBkZXZpY2VzIGFuZCB0aGVpciBmZWF0dXJlcy4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIE1TUDQzMF9NQ1VfRkVBVAorI2RlZmluZSBNU1A0MzBfTUNVX0ZFQVQoTkFNRSwgSFdNVUxUKSBNU1A0MzBfTUNVKE5BTUUpCisjZW5kaWYKKworI2lmbmRlZiBNU1A0MzBfTUNVCisjZGVmaW5lIE1TUDQzMF9NQ1UoTkFNRSkKKyNlbmRpZgorCitNU1A0MzBfTUNVKCJtc3A0MzBjMTExIikKK01TUDQzMF9NQ1UoIm1zcDQzMGMxMTExIikKK01TUDQzMF9NQ1UoIm1zcDQzMGMxMTIiKQorTVNQNDMwX01DVSgibXNwNDMwYzExMjEiKQorTVNQNDMwX01DVSgibXNwNDMwYzEzMzEiKQorTVNQNDMwX01DVSgibXNwNDMwYzEzNTEiKQorTVNQNDMwX01DVSgibXNwNDMwZTExMiIpCitNU1A0MzBfTUNVKCJtc3A0MzBmMTEwIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYxMTAxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYxMTAxYSIpCitNU1A0MzBfTUNVKCJtc3A0MzBmMTExMSIpCitNU1A0MzBfTUNVKCJtc3A0MzBmMTExMWEiKQorTVNQNDMwX01DVSgibXNwNDMwZjExMiIpCitNU1A0MzBfTUNVKCJtc3A0MzBmMTEyMSIpCitNU1A0MzBfTUNVKCJtc3A0MzBmMTEyMWEiKQorTVNQNDMwX01DVSgibXNwNDMwZjExMjIiKQorTVNQNDMwX01DVSgibXNwNDMwZjExMzIiKQorTVNQNDMwX01DVSgibXNwNDMwZjEyMiIpCitNU1A0MzBfTUNVKCJtc3A0MzBmMTIyMiIpCitNU1A0MzBfTUNVKCJtc3A0MzBmMTIzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYxMjMyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYxMzMiKQorTVNQNDMwX01DVSgibXNwNDMwZjEzNSIpCitNU1A0MzBfTUNVKCJtc3A0MzBmMTU1IikKK01TUDQzMF9NQ1UoIm1zcDQzMGYxNTYiKQorTVNQNDMwX01DVSgibXNwNDMwZjE1NyIpCitNU1A0MzBfTUNVKCJtc3A0MzBwMTEyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMDAxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMDExIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMDAyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMDEyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMDAzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMDEzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMTAxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMTExIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMTIxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMTMxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMTEyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMTIyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMTMyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMjMyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMjUyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMjcyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMjM0IikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMjU0IikKK01TUDQzMF9NQ1UoIm1zcDQzMGYyMjc0IikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMjExIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMjAxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMTExIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMTAxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMDAxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMjMxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMjIxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMTMxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMTIxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMTAyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMjAyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMzAyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNDAyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMTMyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMjMyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMzMyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNDMyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMTEyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMjEyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMzEyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNDEyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMTUyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMjUyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMzUyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNDUyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMTEzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMjEzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMzEzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNDEzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNTEzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMTUzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMjUzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMzUzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNDUzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNTUzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMjAzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMzAzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNDAzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMjMzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMzMzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNDMzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNTMzIikKK01TUDQzMF9NQ1UoIm1zcDQzMHRjaDVlIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNDQ0IikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNTQ0IikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNzQ0IikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyNzU1IikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyODU1IikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyOTU1IikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMjMwIikKK01TUDQzMF9NQ1UoIm1zcDQzMGcyMjEwIikKK01TUDQzMF9NQ1UoIm1zcDQzMGMzMTFzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGMzMTIiKQorTVNQNDMwX01DVSgibXNwNDMwYzMxMyIpCitNU1A0MzBfTUNVKCJtc3A0MzBjMzE0IikKK01TUDQzMF9NQ1UoIm1zcDQzMGMzMTUiKQorTVNQNDMwX01DVSgibXNwNDMwYzMyMyIpCitNU1A0MzBfTUNVKCJtc3A0MzBjMzI1IikKK01TUDQzMF9NQ1UoIm1zcDQzMGM0MTIiKQorTVNQNDMwX01DVSgibXNwNDMwYzQxMyIpCitNU1A0MzBfTUNVKCJtc3A0MzBlMzEzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGUzMTUiKQorTVNQNDMwX01DVSgibXNwNDMwZTMyNSIpCitNU1A0MzBfTUNVKCJtc3A0MzBwMzEzIikKK01TUDQzMF9NQ1UoIm1zcDQzMHAzMTUiKQorTVNQNDMwX01DVSgibXNwNDMwcDMxNXMiKQorTVNQNDMwX01DVSgibXNwNDMwcDMyNSIpCitNU1A0MzBfTUNVKCJtc3A0MzBmNDEyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGY0MTMiKQorTVNQNDMwX01DVSgibXNwNDMwZjQxNSIpCitNU1A0MzBfTUNVKCJtc3A0MzBmNDE3IikKK01TUDQzMF9NQ1UoIm1zcDQzMGY0MTMyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGY0MTUyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGY0MzUiKQorTVNQNDMwX01DVSgibXNwNDMwZjQzNiIpCitNU1A0MzBfTUNVKCJtc3A0MzBmNDM3IikKK01TUDQzMF9NQ1UoIm1zcDQzMGY0MzUxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGY0MzYxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGY0MzcxIikKK01TUDQzMF9NQ1UoIm1zcDQzMGZlNDIzIikKK01TUDQzMF9NQ1UoIm1zcDQzMGZlNDI1IikKK01TUDQzMF9NQ1UoIm1zcDQzMGZlNDI3IikKK01TUDQzMF9NQ1UoIm1zcDQzMGZlNDIzYSIpCitNU1A0MzBfTUNVKCJtc3A0MzBmZTQyNWEiKQorTVNQNDMwX01DVSgibXNwNDMwZmU0MjdhIikKK01TUDQzMF9NQ1UoIm1zcDQzMGZlNDIzMiIpCitNU1A0MzBfTUNVKCJtc3A0MzBmZTQyNDIiKQorTVNQNDMwX01DVSgibXNwNDMwZmU0MjUyIikKK01TUDQzMF9NQ1UoIm1zcDQzMGZlNDI3MiIpCitNU1A0MzBfTUNVKCJtc3A0MzBmNDI1MCIpCitNU1A0MzBfTUNVKCJtc3A0MzBmNDI2MCIpCitNU1A0MzBfTUNVKCJtc3A0MzBmNDI3MCIpCitNU1A0MzBfTUNVKCJtc3A0MzBmZzQyNTAiKQorTVNQNDMwX01DVSgibXNwNDMwZmc0MjYwIikKK01TUDQzMF9NQ1UoIm1zcDQzMGZnNDI3MCIpCitNU1A0MzBfTUNVKCJtc3A0MzBmdzQyMyIpCitNU1A0MzBfTUNVKCJtc3A0MzBmdzQyNSIpCitNU1A0MzBfTUNVKCJtc3A0MzBmdzQyNyIpCitNU1A0MzBfTUNVKCJtc3A0MzBmdzQyOCIpCitNU1A0MzBfTUNVKCJtc3A0MzBmdzQyOSIpCitNU1A0MzBfTUNVKCJtc3A0MzBmZzQzNyIpCitNU1A0MzBfTUNVKCJtc3A0MzBmZzQzOCIpCitNU1A0MzBfTUNVKCJtc3A0MzBmZzQzOSIpCitNU1A0MzBfTUNVKCJtc3A0MzBmNDM4IikKK01TUDQzMF9NQ1UoIm1zcDQzMGY0MzkiKQorTVNQNDMwX01DVSgibXNwNDMwZjQ3NyIpCitNU1A0MzBfTUNVKCJtc3A0MzBmNDc4IikKK01TUDQzMF9NQ1UoIm1zcDQzMGY0NzkiKQorTVNQNDMwX01DVSgibXNwNDMwZmc0NzciKQorTVNQNDMwX01DVSgibXNwNDMwZmc0NzgiKQorTVNQNDMwX01DVSgibXNwNDMwZmc0NzkiKQorCisvLyBXaXRoIDE2LWJpdCBoYXJkd2FyZSBtdWx0aXBsaWVyCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGYxNDciLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBmMTQ4IiwgIjE2Yml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwZjE0OSIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGYxNDcxIiwgIjE2Yml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwZjE0ODEiLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBmMTQ5MSIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGYxNjciLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBmMTY4IiwgIjE2Yml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwZjE2OSIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGYxNjEwIiwgIjE2Yml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwZjE2MTEiLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBmMTYxMiIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGMzMzYiLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBjMzM3IiwgIjE2Yml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwZTMzNyIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMHAzMzciLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBmNDIzIiwgIjE2Yml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwZjQyNSIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGY0MjciLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBmNDIzYSIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGY0MjVhIiwgIjE2Yml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwZjQyN2EiLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBmNDQ4MSIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGY0NDkxIiwgIjE2Yml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwZjQ0NyIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGY0NDgiLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBmNDQ5IiwgIjE2Yml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwZjIzMzAiLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBmMjM1MCIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGYyMzcwIiwgIjE2Yml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwZjIzMyIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGYyMzUiLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBmMjQ3IiwgIjE2Yml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwZjI0OCIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGYyNDkiLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBmMjQxMCIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGYyNDcxIiwgIjE2Yml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwZjI0ODEiLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBmMjQ5MSIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGkyMDIwIiwgIjE2Yml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwaTIwMjEiLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBpMjAzMCIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGkyMDMxIiwgIjE2Yml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwaTIwNDAiLCAiMTZiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBpMjA0MSIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGFmZTIyMSIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGFmZTIzMSIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGFmZTI1MSIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGFmZTIyMiIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGFmZTIzMiIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGFmZTI1MiIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGFmZTIyMyIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGFmZTIzMyIsICIxNmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGFmZTI1MyIsICIxNmJpdCIpCisKKy8vIFdpdGggMzIgQml0IEhhcmR3YXJlIE11bHRpcGxpZXIKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwZjQ3ODMiLCAiMzJiaXQiKQorTVNQNDMwX01DVV9GRUFUKCJtc3A0MzBmNDc5MyIsICIzMmJpdCIpCitNU1A0MzBfTUNVX0ZFQVQoIm1zcDQzMGY0Nzg0IiwgIjMyYml0IikKK01TUDQzMF9NQ1VfRkVBVCgibXNwNDMwZjQ3OTQiLCAiMzJiaXQiKQorCisvLyBHZW5lcmljIE1TVXMKK01TUDQzMF9NQ1UoIm1zcDQzMCIpCitNU1A0MzBfTUNVKCJtc3A0MzBpMnh4Z2VuZXJpYyIpCisKKyN1bmRlZiBNU1A0MzBfTUNVCisjdW5kZWYgTVNQNDMwX01DVV9GRUFUCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9NYWNyb0J1aWxkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL01hY3JvQnVpbGRlci5oCmluZGV4IGIyZWRjOTcuLjk2ZTY3Y2IgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL01hY3JvQnVpbGRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL01hY3JvQnVpbGRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gTWFjcm9CdWlsZGVyLmggLSBDUFAgTWFjcm8gYnVpbGRpbmcgdXRpbGl0eSAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvTWVtb3J5QnVmZmVyQ2FjaGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL01lbW9yeUJ1ZmZlckNhY2hlLmgKaW5kZXggYzc5YzNjNC4uOWEyYjYyZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvTWVtb3J5QnVmZmVyQ2FjaGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9NZW1vcnlCdWZmZXJDYWNoZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1lbW9yeUJ1ZmZlckNhY2hlLmggLSBDYWNoZSBmb3IgbG9hZGVkIG1lbW9yeSBidWZmZXJzIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvTW9kdWxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9Nb2R1bGUuaAppbmRleCAwMmE0ZWY2Li4wZTg5MWFmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9Nb2R1bGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9Nb2R1bGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNb2R1bGUuaCAtIERlc2NyaWJlIGEgbW9kdWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT2JqQ1J1bnRpbWUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL09iakNSdW50aW1lLmgKaW5kZXggYzMwN2M5Ni4uOTIxZGY2OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT2JqQ1J1bnRpbWUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PYmpDUnVudGltZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE9iakNSdW50aW1lLmggLSBPYmplY3RpdmUtQyBSdW50aW1lIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNzMsNiArMTcyLDgwIEBACiAgICAgbGx2bV91bnJlYWNoYWJsZSgiYmFkIGtpbmQiKTsKICAgfQogCisgIC8vLyBEb2VzIHRoaXMgcnVudGltZSBwcm92aWRlIEFSQyBlbnRyeXBvaW50cyB0aGF0IGFyZSBsaWtlbHkgdG8gYmUgZmFzdGVyCisgIC8vLyB0aGFuIGFuIG9yZGluYXJ5IG1lc3NhZ2Ugc2VuZCBvZiB0aGUgYXBwcm9wcmlhdGUgc2VsZWN0b3I/CisgIC8vLworICAvLy8gVGhlIEFSQyBlbnRyeXBvaW50cyBhcmUgZ3VhcmFudGVlZCB0byBiZSBlcXVpdmFsZW50IHRvIGp1c3Qgc2VuZGluZyB0aGUKKyAgLy8vIGNvcnJlc3BvbmRpbmcgbWVzc2FnZS4gIElmIHRoZSBlbnRyeXBvaW50IGlzIGltcGxlbWVudGVkIG5haXZlbHkgYXMganVzdCBhCisgIC8vLyBtZXNzYWdlIHNlbmQsIHVzaW5nIGl0IGlzIGEgdHJhZGUtb2ZmOiBpdCBzYWNyaWZpY2VzIGEgZmV3IGN5Y2xlcyBvZgorICAvLy8gb3ZlcmhlYWQgdG8gc2F2ZSBhIHNtYWxsIGFtb3VudCBvZiBjb2RlLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSBmb3IKKyAgLy8vIHJ1bnRpbWVzIHRvIGRldGVjdCBhbmQgc3BlY2lhbC1jYXNlIGNsYXNzZXMgdGhhdCB1c2UgInN0YW5kYXJkIgorICAvLy8gcmV0YWluL3JlbGVhc2UgYmVoYXZpb3I7IGlmIHRoYXQncyBkeW5hbWljYWxseSBhIGxhcmdlIHByb3BvcnRpb24gb2YgYWxsCisgIC8vLyByZXRhaW5lZCBvYmplY3RzLCB1c2luZyB0aGUgZW50cnlwb2ludCB3aWxsIGFsc28gYmUgZmFzdGVyIHRoYW4gdXNpbmcgYQorICAvLy8gbWVzc2FnZSBzZW5kLgorICAvLy8KKyAgLy8vIFdoZW4gdGhpcyBtZXRob2QgcmV0dXJucyB0cnVlLCBDbGFuZyB3aWxsIHR1cm4gbm9uLXN1cGVyIG1lc3NhZ2Ugc2VuZHMgb2YKKyAgLy8vIGNlcnRhaW4gc2VsZWN0b3JzIGludG8gY2FsbHMgdG8gdGhlIGNvcnJlc3BvbmQgZW50cnlwb2ludDoKKyAgLy8vICAgcmV0YWluID0+IG9iamNfcmV0YWluCisgIC8vLyAgIHJlbGVhc2UgPT4gb2JqY19yZWxlYXNlCisgIC8vLyAgIGF1dG9yZWxlYXNlID0+IG9iamNfYXV0b3JlbGVhc2UKKyAgYm9vbCBzaG91bGRVc2VBUkNGdW5jdGlvbnNGb3JSZXRhaW5SZWxlYXNlKCkgY29uc3QgeworICAgIHN3aXRjaCAoZ2V0S2luZCgpKSB7CisgICAgY2FzZSBGcmFnaWxlTWFjT1NYOgorICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgTWFjT1NYOgorICAgICAgcmV0dXJuIGdldFZlcnNpb24oKSA+PSBWZXJzaW9uVHVwbGUoMTAsIDEwKTsKKyAgICBjYXNlIGlPUzoKKyAgICAgIHJldHVybiBnZXRWZXJzaW9uKCkgPj0gVmVyc2lvblR1cGxlKDgpOworICAgIGNhc2UgV2F0Y2hPUzoKKyAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgR0NDOgorICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgR05Vc3RlcDoKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIE9iakZXOgorICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBsbHZtX3VucmVhY2hhYmxlKCJiYWQga2luZCIpOworICB9CisKKyAgLy8vIERvZXMgdGhpcyBydW50aW1lIHByb3ZpZGUgZW50cnlwb2ludHMgdGhhdCBhcmUgbGlrZWx5IHRvIGJlIGZhc3RlcgorICAvLy8gdGhhbiBhbiBvcmRpbmFyeSBtZXNzYWdlIHNlbmQgb2YgdGhlICJhbGxvYyIgc2VsZWN0b3I/CisgIC8vLworICAvLy8gVGhlICJhbGxvYyIgZW50cnlwb2ludCBpcyBndWFyYW50ZWVkIHRvIGJlIGVxdWl2YWxlbnQgdG8ganVzdCBzZW5kaW5nIHRoZQorICAvLy8gY29ycmVzcG9uZGluZyBtZXNzYWdlLiAgSWYgdGhlIGVudHJ5cG9pbnQgaXMgaW1wbGVtZW50ZWQgbmFpdmVseSBhcyBqdXN0IGEKKyAgLy8vIG1lc3NhZ2Ugc2VuZCwgdXNpbmcgaXQgaXMgYSB0cmFkZS1vZmY6IGl0IHNhY3JpZmljZXMgYSBmZXcgY3ljbGVzIG9mCisgIC8vLyBvdmVyaGVhZCB0byBzYXZlIGEgc21hbGwgYW1vdW50IG9mIGNvZGUuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIGZvcgorICAvLy8gcnVudGltZXMgdG8gZGV0ZWN0IGFuZCBzcGVjaWFsLWNhc2UgY2xhc3NlcyB0aGF0IHVzZSAic3RhbmRhcmQiCisgIC8vLyBhbGxvYyBiZWhhdmlvcjsgaWYgdGhhdCdzIGR5bmFtaWNhbGx5IGEgbGFyZ2UgcHJvcG9ydGlvbiBvZiBhbGwKKyAgLy8vIG9iamVjdHMsIHVzaW5nIHRoZSBlbnRyeXBvaW50IHdpbGwgYWxzbyBiZSBmYXN0ZXIgdGhhbiB1c2luZyBhIG1lc3NhZ2UKKyAgLy8vIHNlbmQuCisgIC8vLworICAvLy8gV2hlbiB0aGlzIG1ldGhvZCByZXR1cm5zIHRydWUsIENsYW5nIHdpbGwgdHVybiBub24tc3VwZXIgbWVzc2FnZSBzZW5kcyBvZgorICAvLy8gY2VydGFpbiBzZWxlY3RvcnMgaW50byBjYWxscyB0byB0aGUgY29ycmVzcG9uZGluZyBlbnRyeXBvaW50OgorICAvLy8gICBhbGxvYyA9PiBvYmpjX2FsbG9jCisgIC8vLyAgIGFsbG9jV2l0aFpvbmU6bmlsID0+IG9iamNfYWxsb2NXaXRoWm9uZQorICBib29sIHNob3VsZFVzZVJ1bnRpbWVGdW5jdGlvbnNGb3JBbGxvYygpIGNvbnN0IHsKKyAgICBzd2l0Y2ggKGdldEtpbmQoKSkgeworICAgIGNhc2UgRnJhZ2lsZU1hY09TWDoKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIE1hY09TWDoKKyAgICAgIHJldHVybiBnZXRWZXJzaW9uKCkgPj0gVmVyc2lvblR1cGxlKDEwLCAxMCk7CisgICAgY2FzZSBpT1M6CisgICAgICByZXR1cm4gZ2V0VmVyc2lvbigpID49IFZlcnNpb25UdXBsZSg4KTsKKyAgICBjYXNlIFdhdGNoT1M6CisgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgR0NDOgorICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgR05Vc3RlcDoKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIE9iakZXOgorICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBsbHZtX3VucmVhY2hhYmxlKCJiYWQga2luZCIpOworICB9CisKICAgLy8vIERvZXMgdGhpcyBydW50aW1lIHN1cHBvcnRzIG9wdGltaXplZCBzZXR0ZXIgZW50cnlwb2ludHM/CiAgIGJvb2wgaGFzT3B0aW1pemVkU2V0dGVyKCkgY29uc3QgewogICAgIHN3aXRjaCAoZ2V0S2luZCgpKSB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PcGVuQ0xFeHRlbnNpb25UeXBlcy5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PcGVuQ0xFeHRlbnNpb25UeXBlcy5kZWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRmZmJlOQotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL09wZW5DTEV4dGVuc2lvblR5cGVzLmRlZgpAQCAtMCwwICsxLDQwIEBACisvLz09PS0tIE9wZW5DTEV4dGVuc2lvblR5cGVzLmRlZiAtIE1ldGFkYXRhIGFib3V0IEJ1aWx0aW5UeXBlcyAtLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vICBUaGlzIGZpbGUgZXh0ZW5kcyBidWlsdGluIHR5cGVzIGRhdGFiYXNlIHdpdGggT3BlbkNMIGV4dGVuc2lvbiB0eXBlcy4KKy8vICBDdXN0b20gY29kZSBzaG91bGQgZGVmaW5lIHRoaXMgbWFjcm86CisvLyAgICBFWFRfT1BBUVVFX1RZUEUoTmFtZSwgSWQsIEV4dCkKKworI2lmZGVmIEVYVF9PUEFRVUVfVFlQRQorCisjaWZuZGVmIElOVEVMX1NVQkdST1VQX0FWQ19UWVBFCisjZGVmaW5lIElOVEVMX1NVQkdST1VQX0FWQ19UWVBFKE5hbWUsIElkKSBcCisgIEVYVF9PUEFRVUVfVFlQRShpbnRlbF9zdWJfZ3JvdXBfYXZjXyMjTmFtZSwgT0NMSW50ZWxTdWJncm91cEFWQyMjSWQsIFwKKyAgICBjbF9pbnRlbF9kZXZpY2Vfc2lkZV9hdmNfbW90aW9uX2VzdGltYXRpb24pCisjZW5kaWYKKworI2VuZGlmCisKKyNpZmRlZiBJTlRFTF9TVUJHUk9VUF9BVkNfVFlQRQorSU5URUxfU1VCR1JPVVBfQVZDX1RZUEUobWNlX3BheWxvYWRfdCwgTWNlUGF5bG9hZCkKK0lOVEVMX1NVQkdST1VQX0FWQ19UWVBFKGltZV9wYXlsb2FkX3QsIEltZVBheWxvYWQpCitJTlRFTF9TVUJHUk9VUF9BVkNfVFlQRShyZWZfcGF5bG9hZF90LCBSZWZQYXlsb2FkKQorSU5URUxfU1VCR1JPVVBfQVZDX1RZUEUoc2ljX3BheWxvYWRfdCwgU2ljUGF5bG9hZCkKK0lOVEVMX1NVQkdST1VQX0FWQ19UWVBFKG1jZV9yZXN1bHRfdCwgTWNlUmVzdWx0KQorSU5URUxfU1VCR1JPVVBfQVZDX1RZUEUoaW1lX3Jlc3VsdF90LCBJbWVSZXN1bHQpCitJTlRFTF9TVUJHUk9VUF9BVkNfVFlQRShyZWZfcmVzdWx0X3QsIFJlZlJlc3VsdCkKK0lOVEVMX1NVQkdST1VQX0FWQ19UWVBFKHNpY19yZXN1bHRfdCwgU2ljUmVzdWx0KQorSU5URUxfU1VCR1JPVVBfQVZDX1RZUEUoaW1lX3Jlc3VsdF9zaW5nbGVfcmVmZXJlbmNlX3N0cmVhbW91dF90LCBJbWVSZXN1bHRTaW5nbGVSZWZTdHJlYW1vdXQpCitJTlRFTF9TVUJHUk9VUF9BVkNfVFlQRShpbWVfcmVzdWx0X2R1YWxfcmVmZXJlbmNlX3N0cmVhbW91dF90LCBJbWVSZXN1bHREdWFsUmVmU3RyZWFtb3V0KQorSU5URUxfU1VCR1JPVVBfQVZDX1RZUEUoaW1lX3NpbmdsZV9yZWZlcmVuY2Vfc3RyZWFtaW5fdCwgSW1lU2luZ2xlUmVmU3RyZWFtaW4pCitJTlRFTF9TVUJHUk9VUF9BVkNfVFlQRShpbWVfZHVhbF9yZWZlcmVuY2Vfc3RyZWFtaW5fdCwgSW1lRHVhbFJlZlN0cmVhbWluKQorCisjdW5kZWYgSU5URUxfU1VCR1JPVVBfQVZDX1RZUEUKKyNlbmRpZiAvLyBJTlRFTF9TVUJHUk9VUF9BVkNfVFlQRQorCisjdW5kZWYgRVhUX09QQVFVRV9UWVBFCisKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL09wZW5DTEV4dGVuc2lvbnMuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT3BlbkNMRXh0ZW5zaW9ucy5kZWYKaW5kZXggMTNjYjEyZS4uNDBhYzg4ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT3BlbkNMRXh0ZW5zaW9ucy5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT3BlbkNMRXh0ZW5zaW9ucy5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBPcGVuQ0xFeHRlbnNpb25zLmRlZiAtIE9wZW5DTCBleHRlbnNpb24gbGlzdCAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTg1LDYgKzg0LDcgQEAKIC8vIEludGVsIE9wZW5DTCBleHRlbnNpb25zCiBPUEVOQ0xFWFRfSU5URVJOQUwoY2xfaW50ZWxfc3ViZ3JvdXBzLCAxMjAsIH4wVSkKIE9QRU5DTEVYVF9JTlRFUk5BTChjbF9pbnRlbF9zdWJncm91cHNfc2hvcnQsIDEyMCwgfjBVKQorT1BFTkNMRVhUX0lOVEVSTkFMKGNsX2ludGVsX2RldmljZV9zaWRlX2F2Y19tb3Rpb25fZXN0aW1hdGlvbiwgMTIwLCB+MFUpCiAKICN1bmRlZiBPUEVOQ0xFWFRfSU5URVJOQUwKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT3BlbkNMSW1hZ2VUeXBlcy5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PcGVuQ0xJbWFnZVR5cGVzLmRlZgppbmRleCAwZWZlZDk5Li5jZmIwMThhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PcGVuQ0xJbWFnZVR5cGVzLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PcGVuQ0xJbWFnZVR5cGVzLmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gT3BlbkNMSW1hZ2VUeXBlcy5kZWYgLSBNZXRhZGF0YSBhYm91dCBCdWlsdGluVHlwZXMgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLyAgVGhpcyBmaWxlIGV4dGVuZHMgYnVpbHRpbiB0eXBlcyBkYXRhYmFzZSB3aXRoIE9wZW5DTCBpbWFnZSBzaW5nbGV0b24gdHlwZXMuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PcGVuQ0xPcHRpb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PcGVuQ0xPcHRpb25zLmgKaW5kZXggY2M0ZTk5Mi4uNDczMTBkYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT3BlbkNMT3B0aW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL09wZW5DTE9wdGlvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIE9wZW5DTE9wdGlvbnMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KQEAgLTE1LDYgKzE0LDcgQEAKICNpZm5kZWYgTExWTV9DTEFOR19CQVNJQ19PUEVOQ0xPUFRJT05TX0gKICNkZWZpbmUgTExWTV9DTEFOR19CQVNJQ19PUEVOQ0xPUFRJT05TX0gKIAorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0xhbmdPcHRpb25zLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvU3RyaW5nTWFwLmgiCiAKIG5hbWVzcGFjZSBjbGFuZyB7CkBAIC00MiwyNSArNDIsMjkgQEAKIAogICAvLyBJcyBzdXBwb3J0ZWQgYXMgZWl0aGVyIGFuIGV4dGVuc2lvbiBvciBhbiAob3B0aW9uYWwpIGNvcmUgZmVhdHVyZSBmb3IKICAgLy8gT3BlbkNMIHZlcnNpb24gXHAgQ0xWZXIuCi0gIGJvb2wgaXNTdXBwb3J0ZWQobGx2bTo6U3RyaW5nUmVmIEV4dCwgdW5zaWduZWQgQ0xWZXIpIGNvbnN0IHsKKyAgYm9vbCBpc1N1cHBvcnRlZChsbHZtOjpTdHJpbmdSZWYgRXh0LCBMYW5nT3B0aW9ucyBMTykgY29uc3QgeworICAgIC8vIEluIEMrKyBtb2RlIGFsbCBleHRlbnNpb25zIHNob3VsZCB3b3JrIGF0IGxlYXN0IGFzIGluIHYyLjAuCisgICAgYXV0byBDTFZlciA9IExPLk9wZW5DTENQbHVzUGx1cyA/IDIwMCA6IExPLk9wZW5DTFZlcnNpb247CiAgICAgYXV0byBJID0gT3B0TWFwLmZpbmQoRXh0KS0+Z2V0VmFsdWUoKTsKICAgICByZXR1cm4gSS5TdXBwb3J0ZWQgJiYgSS5BdmFpbCA8PSBDTFZlcjsKICAgfQogCiAgIC8vIElzIHN1cHBvcnRlZCAob3B0aW9uYWwpIE9wZW5DTCBjb3JlIGZlYXR1cmVzIGZvciBPcGVuQ0wgdmVyc2lvbiBccCBDTFZlci4KICAgLy8gRm9yIHN1cHBvcnRlZCBleHRlbnNpb24sIHJldHVybiBmYWxzZS4KLSAgYm9vbCBpc1N1cHBvcnRlZENvcmUobGx2bTo6U3RyaW5nUmVmIEV4dCwgdW5zaWduZWQgQ0xWZXIpIGNvbnN0IHsKKyAgYm9vbCBpc1N1cHBvcnRlZENvcmUobGx2bTo6U3RyaW5nUmVmIEV4dCwgTGFuZ09wdGlvbnMgTE8pIGNvbnN0IHsKKyAgICAvLyBJbiBDKysgbW9kZSBhbGwgZXh0ZW5zaW9ucyBzaG91bGQgd29yayBhdCBsZWFzdCBhcyBpbiB2Mi4wLgorICAgIGF1dG8gQ0xWZXIgPSBMTy5PcGVuQ0xDUGx1c1BsdXMgPyAyMDAgOiBMTy5PcGVuQ0xWZXJzaW9uOwogICAgIGF1dG8gSSA9IE9wdE1hcC5maW5kKEV4dCktPmdldFZhbHVlKCk7Ci0gICAgcmV0dXJuIEkuU3VwcG9ydGVkICYmIEkuQXZhaWwgPD0gQ0xWZXIgJiYKLSAgICAgIEkuQ29yZSAhPSB+MFUgJiYgQ0xWZXIgPj0gSS5Db3JlOworICAgIHJldHVybiBJLlN1cHBvcnRlZCAmJiBJLkF2YWlsIDw9IENMVmVyICYmIEkuQ29yZSAhPSB+MFUgJiYgQ0xWZXIgPj0gSS5Db3JlOwogICB9CiAKICAgLy8gSXMgc3VwcG9ydGVkIE9wZW5DTCBleHRlbnNpb24gZm9yIE9wZW5DTCB2ZXJzaW9uIFxwIENMVmVyLgogICAvLyBGb3Igc3VwcG9ydGVkIChvcHRpb25hbCkgY29yZSBmZWF0dXJlLCByZXR1cm4gZmFsc2UuCi0gYm9vbCBpc1N1cHBvcnRlZEV4dGVuc2lvbihsbHZtOjpTdHJpbmdSZWYgRXh0LCB1bnNpZ25lZCBDTFZlcikgY29uc3QgeworICBib29sIGlzU3VwcG9ydGVkRXh0ZW5zaW9uKGxsdm06OlN0cmluZ1JlZiBFeHQsIExhbmdPcHRpb25zIExPKSBjb25zdCB7CisgICAgLy8gSW4gQysrIG1vZGUgYWxsIGV4dGVuc2lvbnMgc2hvdWxkIHdvcmsgYXQgbGVhc3QgYXMgaW4gdjIuMC4KKyAgICBhdXRvIENMVmVyID0gTE8uT3BlbkNMQ1BsdXNQbHVzID8gMjAwIDogTE8uT3BlbkNMVmVyc2lvbjsKICAgICBhdXRvIEkgPSBPcHRNYXAuZmluZChFeHQpLT5nZXRWYWx1ZSgpOwotICAgIHJldHVybiBJLlN1cHBvcnRlZCAmJiBJLkF2YWlsIDw9IENMVmVyICYmCi0gICAgICAoSS5Db3JlID09IH4wVSB8fCBDTFZlciA8IEkuQ29yZSk7CisgICAgcmV0dXJuIEkuU3VwcG9ydGVkICYmIEkuQXZhaWwgPD0gQ0xWZXIgJiYgKEkuQ29yZSA9PSB+MFUgfHwgQ0xWZXIgPCBJLkNvcmUpOwogICB9CiAKICAgdm9pZCBlbmFibGUobGx2bTo6U3RyaW5nUmVmIEV4dCwgYm9vbCBWID0gdHJ1ZSkgewpAQCAtMTIyLDEwICsxMjYsMTAgQEAKICAgICAgIEktPnNlY29uZC5FbmFibGVkID0gZmFsc2U7CiAgIH0KIAotICB2b2lkIGVuYWJsZVN1cHBvcnRlZENvcmUodW5zaWduZWQgQ0xWZXIpIHsKLSAgICBmb3IgKGxsdm06OlN0cmluZ01hcDxJbmZvPjo6aXRlcmF0b3IgSSA9IE9wdE1hcC5iZWdpbigpLAotICAgICAgICAgRSA9IE9wdE1hcC5lbmQoKTsgSSAhPSBFOyArK0kpCi0gICAgICBpZiAoaXNTdXBwb3J0ZWRDb3JlKEktPmdldEtleSgpLCBDTFZlcikpCisgIHZvaWQgZW5hYmxlU3VwcG9ydGVkQ29yZShMYW5nT3B0aW9ucyBMTykgeworICAgIGZvciAobGx2bTo6U3RyaW5nTWFwPEluZm8+OjppdGVyYXRvciBJID0gT3B0TWFwLmJlZ2luKCksIEUgPSBPcHRNYXAuZW5kKCk7CisgICAgICAgICBJICE9IEU7ICsrSSkKKyAgICAgIGlmIChpc1N1cHBvcnRlZENvcmUoSS0+Z2V0S2V5KCksIExPKSkKICAgICAgICAgSS0+c2Vjb25kLkVuYWJsZWQgPSB0cnVlOwogICB9CiAKQEAgLTEzMyw2ICsxMzcsNiBAQAogICBmcmllbmQgY2xhc3MgQVNUUmVhZGVyOwogfTsKIAotfSAgLy8gZW5kIG5hbWVzcGFjZSBjbGFuZworfSAvLyBlbmQgbmFtZXNwYWNlIGNsYW5nCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT3Blbk1QS2luZHMuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT3Blbk1QS2luZHMuZGVmCmluZGV4IDM3NWVkZGYuLmVjYjJjOGQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL09wZW5NUEtpbmRzLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PcGVuTVBLaW5kcy5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBPcGVuTVBLaW5kcy5kZWYgLSBPcGVuTVAgZGlyZWN0aXZlcyBhbmQgY2xhdXNlcyBsaXN0IC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCkBAIC0xMjAsMTIgKzExOSwxOCBAQAogI2lmbmRlZiBPUEVOTVBfTUFQX0tJTkQKICNkZWZpbmUgT1BFTk1QX01BUF9LSU5EKE5hbWUpCiAjZW5kaWYKKyNpZm5kZWYgT1BFTk1QX01BUF9NT0RJRklFUl9LSU5ECisjZGVmaW5lIE9QRU5NUF9NQVBfTU9ESUZJRVJfS0lORChOYW1lKQorI2VuZGlmCiAjaWZuZGVmIE9QRU5NUF9ESVNUX1NDSEVEVUxFX0tJTkQKICNkZWZpbmUgT1BFTk1QX0RJU1RfU0NIRURVTEVfS0lORChOYW1lKQogI2VuZGlmCiAjaWZuZGVmIE9QRU5NUF9ERUZBVUxUTUFQX0tJTkQKICNkZWZpbmUgT1BFTk1QX0RFRkFVTFRNQVBfS0lORChOYW1lKQogI2VuZGlmCisjaWZuZGVmIE9QRU5NUF9BVE9NSUNfREVGQVVMVF9NRU1fT1JERVJfS0lORAorI2RlZmluZSBPUEVOTVBfQVRPTUlDX0RFRkFVTFRfTUVNX09SREVSX0tJTkQoTmFtZSkKKyNlbmRpZgogI2lmbmRlZiBPUEVOTVBfREVGQVVMVE1BUF9NT0RJRklFUgogI2RlZmluZSBPUEVOTVBfREVGQVVMVE1BUF9NT0RJRklFUihOYW1lKQogI2VuZGlmCkBAIC0xNzQsNiArMTc5LDkgQEAKICNpZm5kZWYgT1BFTk1QX1RBU0tHUk9VUF9DTEFVU0UKICNkZWZpbmUgT1BFTk1QX1RBU0tHUk9VUF9DTEFVU0UoTmFtZSkKICNlbmRpZgorI2lmbmRlZiBPUEVOTVBfREVDTEFSRV9NQVBQRVJfQ0xBVVNFCisjZGVmaW5lIE9QRU5NUF9ERUNMQVJFX01BUFBFUl9DTEFVU0UoTmFtZSkKKyNlbmRpZgogCiAvLyBPcGVuTVAgZGlyZWN0aXZlcy4KIE9QRU5NUF9ESVJFQ1RJVkUodGhyZWFkcHJpdmF0ZSkKQEAgLTIwOSw2ICsyMTcsNyBAQAogT1BFTk1QX0RJUkVDVElWRV9FWFQoZm9yX3NpbWQsICJmb3Igc2ltZCIpCiBPUEVOTVBfRElSRUNUSVZFX0VYVChjYW5jZWxsYXRpb25fcG9pbnQsICJjYW5jZWxsYXRpb24gcG9pbnQiKQogT1BFTk1QX0RJUkVDVElWRV9FWFQoZGVjbGFyZV9yZWR1Y3Rpb24sICJkZWNsYXJlIHJlZHVjdGlvbiIpCitPUEVOTVBfRElSRUNUSVZFX0VYVChkZWNsYXJlX21hcHBlciwgImRlY2xhcmUgbWFwcGVyIikKIE9QRU5NUF9ESVJFQ1RJVkVfRVhUKGRlY2xhcmVfc2ltZCwgImRlY2xhcmUgc2ltZCIpCiBPUEVOTVBfRElSRUNUSVZFKHRhc2tsb29wKQogT1BFTk1QX0RJUkVDVElWRV9FWFQodGFza2xvb3Bfc2ltZCwgInRhc2tsb29wIHNpbWQiKQpAQCAtMjUzLDcgKzI2Miw2IEBACiBPUEVOTVBfQ0xBVVNFKG5vd2FpdCwgT01QTm93YWl0Q2xhdXNlKQogT1BFTk1QX0NMQVVTRSh1bnRpZWQsIE9NUFVudGllZENsYXVzZSkKIE9QRU5NUF9DTEFVU0UobWVyZ2VhYmxlLCBPTVBNZXJnZWFibGVDbGF1c2UpCi1PUEVOTVBfQ0xBVVNFKGZsdXNoLCBPTVBGbHVzaENsYXVzZSkKIE9QRU5NUF9DTEFVU0UocmVhZCwgT01QUmVhZENsYXVzZSkKIE9QRU5NUF9DTEFVU0Uod3JpdGUsIE9NUFdyaXRlQ2xhdXNlKQogT1BFTk1QX0NMQVVTRSh1cGRhdGUsIE9NUFVwZGF0ZUNsYXVzZSkKQEAgLTI4Miw2ICsyOTAsOCBAQAogT1BFTk1QX0NMQVVTRSh1bmlmaWVkX2FkZHJlc3MsIE9NUFVuaWZpZWRBZGRyZXNzQ2xhdXNlKQogT1BFTk1QX0NMQVVTRSh1bmlmaWVkX3NoYXJlZF9tZW1vcnksIE9NUFVuaWZpZWRTaGFyZWRNZW1vcnlDbGF1c2UpCiBPUEVOTVBfQ0xBVVNFKHJldmVyc2Vfb2ZmbG9hZCwgT01QUmV2ZXJzZU9mZmxvYWRDbGF1c2UpCitPUEVOTVBfQ0xBVVNFKGR5bmFtaWNfYWxsb2NhdG9ycywgT01QRHluYW1pY0FsbG9jYXRvcnNDbGF1c2UpCitPUEVOTVBfQ0xBVVNFKGF0b21pY19kZWZhdWx0X21lbV9vcmRlciwgT01QQXRvbWljRGVmYXVsdE1lbU9yZGVyQ2xhdXNlKQogCiAvLyBDbGF1c2VzIGFsbG93ZWQgZm9yIE9wZW5NUCBkaXJlY3RpdmUgJ3BhcmFsbGVsJy4KIE9QRU5NUF9QQVJBTExFTF9DTEFVU0UoaWYpCkBAIC0zNzYsNiArMzg2LDcgQEAKIE9QRU5NUF9ERVBFTkRfS0lORChpbikKIE9QRU5NUF9ERVBFTkRfS0lORChvdXQpCiBPUEVOTVBfREVQRU5EX0tJTkQoaW5vdXQpCitPUEVOTVBfREVQRU5EX0tJTkQobXV0ZXhpbm91dHNldCkKIE9QRU5NUF9ERVBFTkRfS0lORChzb3VyY2UpCiBPUEVOTVBfREVQRU5EX0tJTkQoc2luaykKIApAQCAtNDY3LDYgKzQ3OCwxMyBAQAogT1BFTk1QX1JFUVVJUkVTX0NMQVVTRSh1bmlmaWVkX2FkZHJlc3MpCiBPUEVOTVBfUkVRVUlSRVNfQ0xBVVNFKHVuaWZpZWRfc2hhcmVkX21lbW9yeSkKIE9QRU5NUF9SRVFVSVJFU19DTEFVU0UocmV2ZXJzZV9vZmZsb2FkKQorT1BFTk1QX1JFUVVJUkVTX0NMQVVTRShkeW5hbWljX2FsbG9jYXRvcnMpCitPUEVOTVBfUkVRVUlSRVNfQ0xBVVNFKGF0b21pY19kZWZhdWx0X21lbV9vcmRlcikKKworLy8gTW9kaWZpZXJzIGZvciAnYXRvbWljX2RlZmF1bHRfbWVtX29yZGVyJyBjbGF1c2UuCitPUEVOTVBfQVRPTUlDX0RFRkFVTFRfTUVNX09SREVSX0tJTkQoc2VxX2NzdCkKK09QRU5NUF9BVE9NSUNfREVGQVVMVF9NRU1fT1JERVJfS0lORChhY3FfcmVsKQorT1BFTk1QX0FUT01JQ19ERUZBVUxUX01FTV9PUkRFUl9LSU5EKHJlbGF4ZWQpCiAKIC8vIENsYXVzZXMgYWxsb3dlZCBmb3IgT3Blbk1QIGRpcmVjdGl2ZSAndGFyZ2V0IGRhdGEnLgogT1BFTk1QX1RBUkdFVF9EQVRBX0NMQVVTRShpZikKQEAgLTU0NywxNCArNTY1LDE3IEBACiBPUEVOTVBfT1JERVJFRF9DTEFVU0Uoc2ltZCkKIE9QRU5NUF9PUkRFUkVEX0NMQVVTRShkZXBlbmQpCiAKLS8vIE1hcCB0eXBlcyBhbmQgbWFwIHR5cGUgbW9kaWZpZXIgZm9yICdtYXAnIGNsYXVzZS4KKy8vIE1hcCB0eXBlcyBmb3IgJ21hcCcgY2xhdXNlLgogT1BFTk1QX01BUF9LSU5EKGFsbG9jKQogT1BFTk1QX01BUF9LSU5EKHRvKQogT1BFTk1QX01BUF9LSU5EKGZyb20pCiBPUEVOTVBfTUFQX0tJTkQodG9mcm9tKQogT1BFTk1QX01BUF9LSU5EKGRlbGV0ZSkKIE9QRU5NUF9NQVBfS0lORChyZWxlYXNlKQotT1BFTk1QX01BUF9LSU5EKGFsd2F5cykKKworLy8gTWFwLXR5cGUtbW9kaWZpZXJzIGZvciAnbWFwJyBjbGF1c2UuCitPUEVOTVBfTUFQX01PRElGSUVSX0tJTkQoYWx3YXlzKQorT1BFTk1QX01BUF9NT0RJRklFUl9LSU5EKGNsb3NlKQogCiAvLyBDbGF1c2VzIGFsbG93ZWQgZm9yIE9wZW5NUCBkaXJlY3RpdmUgJ3Rhc2tsb29wJy4KIE9QRU5NUF9UQVNLTE9PUF9DTEFVU0UoaWYpCkBAIC04NzEsNiArODkyLDEwIEBACiAvLyBDbGF1c2VzIGFsbG93ZWQgZm9yIE9wZW5NUCBkaXJlY3RpdmUgJ3Rhc2tncm91cCcuCiBPUEVOTVBfVEFTS0dST1VQX0NMQVVTRSh0YXNrX3JlZHVjdGlvbikKIAorLy8gQ2xhdXNlcyBhbGxvd2VkIGZvciBPcGVuTVAgZGlyZWN0aXZlICdkZWNsYXJlIG1hcHBlcicuCitPUEVOTVBfREVDTEFSRV9NQVBQRVJfQ0xBVVNFKG1hcCkKKworI3VuZGVmIE9QRU5NUF9ERUNMQVJFX01BUFBFUl9DTEFVU0UKICN1bmRlZiBPUEVOTVBfVEFTS0dST1VQX0NMQVVTRQogI3VuZGVmIE9QRU5NUF9UQVNLTE9PUF9TSU1EX0NMQVVTRQogI3VuZGVmIE9QRU5NUF9UQVNLTE9PUF9DTEFVU0UKQEAgLTg5Niw2ICs5MjEsNyBAQAogI3VuZGVmIE9QRU5NUF9BVE9NSUNfQ0xBVVNFCiAjdW5kZWYgT1BFTk1QX1RBUkdFVF9DTEFVU0UKICN1bmRlZiBPUEVOTVBfUkVRVUlSRVNfQ0xBVVNFCisjdW5kZWYgT1BFTk1QX0FUT01JQ19ERUZBVUxUX01FTV9PUkRFUl9LSU5ECiAjdW5kZWYgT1BFTk1QX1RBUkdFVF9EQVRBX0NMQVVTRQogI3VuZGVmIE9QRU5NUF9UQVJHRVRfRU5URVJfREFUQV9DTEFVU0UKICN1bmRlZiBPUEVOTVBfVEFSR0VUX0VYSVRfREFUQV9DTEFVU0UKQEAgLTkwNiw2ICs5MzIsNyBAQAogI3VuZGVmIE9QRU5NUF9GT1JfQ0xBVVNFCiAjdW5kZWYgT1BFTk1QX0ZPUl9TSU1EX0NMQVVTRQogI3VuZGVmIE9QRU5NUF9NQVBfS0lORAorI3VuZGVmIE9QRU5NUF9NQVBfTU9ESUZJRVJfS0lORAogI3VuZGVmIE9QRU5NUF9ESVNUUklCVVRFX0NMQVVTRQogI3VuZGVmIE9QRU5NUF9ESVNUX1NDSEVEVUxFX0tJTkQKICN1bmRlZiBPUEVOTVBfREVGQVVMVE1BUF9LSU5ECmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PcGVuTVBLaW5kcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT3Blbk1QS2luZHMuaAppbmRleCBjNDc5NzNlLi4xN2U2NmE1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PcGVuTVBLaW5kcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL09wZW5NUEtpbmRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBPcGVuTVBLaW5kcy5oIC0gT3Blbk1QIGVudW1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCkBAIC0zNCw2ICszMyw3IEBACiAjZGVmaW5lIE9QRU5NUF9DTEFVU0UoTmFtZSwgQ2xhc3MpIFwKICAgT01QQ18jI05hbWUsCiAjaW5jbHVkZSAiY2xhbmcvQmFzaWMvT3Blbk1QS2luZHMuZGVmIgorICBPTVBDX2ZsdXNoLAogICBPTVBDX3RocmVhZHByaXZhdGUsCiAgIE9NUENfdW5pZm9ybSwKICAgT01QQ191bmtub3duCkBAIC05Niw2ICs5NiwxNSBAQAogICBPTVBDX01BUF91bmtub3duCiB9OwogCisvLy8gT3Blbk1QIG1vZGlmaWVyIGtpbmQgZm9yICdtYXAnIGNsYXVzZS4KK2VudW0gT3Blbk1QTWFwTW9kaWZpZXJLaW5kIHsKKyAgT01QQ19NQVBfTU9ESUZJRVJfdW5rbm93biA9IE9NUENfTUFQX3Vua25vd24sCisjZGVmaW5lIE9QRU5NUF9NQVBfTU9ESUZJRVJfS0lORChOYW1lKSBcCisgIE9NUENfTUFQX01PRElGSUVSXyMjTmFtZSwKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9PcGVuTVBLaW5kcy5kZWYiCisgIE9NUENfTUFQX01PRElGSUVSX2xhc3QKK307CisKIC8vLyBPcGVuTVAgYXR0cmlidXRlcyBmb3IgJ2Rpc3Rfc2NoZWR1bGUnIGNsYXVzZS4KIGVudW0gT3Blbk1QRGlzdFNjaGVkdWxlQ2xhdXNlS2luZCB7CiAjZGVmaW5lIE9QRU5NUF9ESVNUX1NDSEVEVUxFX0tJTkQoTmFtZSkgT01QQ19ESVNUX1NDSEVEVUxFXyMjTmFtZSwKQEAgLTEyMCw2ICsxMjksMTQgQEAKICAgT01QQ19ERUZBVUxUTUFQX01PRElGSUVSX2xhc3QKIH07CiAKKy8vLyBPcGVuTVAgYXR0cmlidXRlcyBmb3IgJ2F0b21pY19kZWZhdWx0X21lbV9vcmRlcicgY2xhdXNlLgorZW51bSBPcGVuTVBBdG9taWNEZWZhdWx0TWVtT3JkZXJDbGF1c2VLaW5kIHsKKyNkZWZpbmUgT1BFTk1QX0FUT01JQ19ERUZBVUxUX01FTV9PUkRFUl9LSU5EKE5hbWUpICBcCisgIE9NUENfQVRPTUlDX0RFRkFVTFRfTUVNX09SREVSXyMjTmFtZSwKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9PcGVuTVBLaW5kcy5kZWYiCisgIE9NUENfQVRPTUlDX0RFRkFVTFRfTUVNX09SREVSX3Vua25vd24KK307CisKIC8vLyBTY2hlZHVsaW5nIGRhdGEgZm9yIGxvb3AtYmFzZWQgT3Blbk1QIGRpcmVjdGl2ZXMuCiBzdHJ1Y3QgT3Blbk1QU2NoZWR1bGVUeSBmaW5hbCB7CiAgIE9wZW5NUFNjaGVkdWxlQ2xhdXNlS2luZCBTY2hlZHVsZSA9IE9NUENfU0NIRURVTEVfdW5rbm93bjsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL09wZXJhdG9yS2luZHMuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT3BlcmF0b3JLaW5kcy5kZWYKaW5kZXggZDg2Mjk0Yi4uZDQ2NGRiMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT3BlcmF0b3JLaW5kcy5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT3BlcmF0b3JLaW5kcy5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBPcGVyYXRvcktpbmRzLmRlZiAtIEMrKyBPdmVybG9hZGVkIE9wZXJhdG9yIERhdGFiYXNlIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL09wZXJhdG9yS2luZHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL09wZXJhdG9yS2luZHMuaAppbmRleCAzMDk2ZjgzLi45NzU3YWNhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PcGVyYXRvcktpbmRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT3BlcmF0b3JLaW5kcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gT3BlcmF0b3JLaW5kcy5oIC0gQysrIE92ZXJsb2FkZWQgT3BlcmF0b3JzIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvT3BlcmF0b3JQcmVjZWRlbmNlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PcGVyYXRvclByZWNlZGVuY2UuaAppbmRleCA0Mzg5ZTNiLi42MWFjN2FkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PcGVyYXRvclByZWNlZGVuY2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9PcGVyYXRvclByZWNlZGVuY2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIE9wZXJhdG9yUHJlY2VkZW5jZS5oIC0gT3BlcmF0b3IgcHJlY2VkZW5jZSBsZXZlbHMgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1BhcnRpYWxEaWFnbm9zdGljLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9QYXJ0aWFsRGlhZ25vc3RpYy5oCmluZGV4IDk3MjdhZjguLjc5OTk1MWIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1BhcnRpYWxEaWFnbm9zdGljLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvUGFydGlhbERpYWdub3N0aWMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQYXJ0aWFsRGlhZ25vc3RpYy5oIC0gRGlhZ25vc3RpYyAiY2xvc3VyZXMiIC0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvUGxpc3RTdXBwb3J0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9QbGlzdFN1cHBvcnQuaAppbmRleCBlNDFjMjQ3Li5mODFiNDY5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9QbGlzdFN1cHBvcnQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9QbGlzdFN1cHBvcnQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQbGlzdFN1cHBvcnQuaCAtIFBsaXN0IE91dHB1dCBVdGlsaXRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1ByYWdtYUtpbmRzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9QcmFnbWFLaW5kcy5oCmluZGV4IGIzNzNhOWUuLjEwM2I5N2QgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1ByYWdtYUtpbmRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvUHJhZ21hS2luZHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFByYWdtYUtpbmRzLmggLSAjcHJhZ21hIGNvbW1lbnQoKSBraW5kcyAgLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1ByZXR0eVN0YWNrVHJhY2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1ByZXR0eVN0YWNrVHJhY2UuaAppbmRleCBlNjUyZjUyLi41NDVhNjNiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9QcmV0dHlTdGFja1RyYWNlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvUHJldHR5U3RhY2tUcmFjZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGNsYW5nL0Jhc2ljL1ByZXR0eVN0YWNrVHJhY2UuaCAtIFByZXR0eSBDcmFzaCBIYW5kbGluZyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9TYW5pdGl6ZXJCbGFja2xpc3QuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1Nhbml0aXplckJsYWNrbGlzdC5oCmluZGV4IDFhZTVjMzYuLjI5YWYyOGIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1Nhbml0aXplckJsYWNrbGlzdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1Nhbml0aXplckJsYWNrbGlzdC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gU2FuaXRpemVyQmxhY2tsaXN0LmggLSBCbGFja2xpc3QgZm9yIHNhbml0aXplcnMgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9TYW5pdGl6ZXJTcGVjaWFsQ2FzZUxpc3QuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1Nhbml0aXplclNwZWNpYWxDYXNlTGlzdC5oCmluZGV4IGUzMjUyMDIuLmZiMGRiMzIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1Nhbml0aXplclNwZWNpYWxDYXNlTGlzdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1Nhbml0aXplclNwZWNpYWxDYXNlTGlzdC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gU2FuaXRpemVyU3BlY2lhbENhc2VMaXN0LmggLSBTQ0wgZm9yIHNhbml0aXplcnMgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9TYW5pdGl6ZXJzLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1Nhbml0aXplcnMuZGVmCmluZGV4IGMzZmMxNzUuLjM0YmQ2ZmMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1Nhbml0aXplcnMuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1Nhbml0aXplcnMuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gU2FuaXRpemVycy5kZWYgLSBSdW50aW1lIHNhbml0aXplciBvcHRpb25zIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMzUsMTIgKzEzNCwzMiBAQAogU0FOSVRJWkVSX0dST1VQKCJ1bmRlZmluZWQtdHJhcCIsIFVuZGVmaW5lZFRyYXAsIFVuZGVmaW5lZCkKIAogLy8gSW1wbGljaXRDb252ZXJzaW9uU2FuaXRpemVyCi1TQU5JVElaRVIoImltcGxpY2l0LWludGVnZXItdHJ1bmNhdGlvbiIsIEltcGxpY2l0SW50ZWdlclRydW5jYXRpb24pCitTQU5JVElaRVIoImltcGxpY2l0LXVuc2lnbmVkLWludGVnZXItdHJ1bmNhdGlvbiIsCisgICAgICAgICAgSW1wbGljaXRVbnNpZ25lZEludGVnZXJUcnVuY2F0aW9uKQorU0FOSVRJWkVSKCJpbXBsaWNpdC1zaWduZWQtaW50ZWdlci10cnVuY2F0aW9uIiwgSW1wbGljaXRTaWduZWRJbnRlZ2VyVHJ1bmNhdGlvbikKK1NBTklUSVpFUl9HUk9VUCgiaW1wbGljaXQtaW50ZWdlci10cnVuY2F0aW9uIiwgSW1wbGljaXRJbnRlZ2VyVHJ1bmNhdGlvbiwKKyAgICAgICAgICAgICAgICBJbXBsaWNpdFVuc2lnbmVkSW50ZWdlclRydW5jYXRpb24gfAorICAgICAgICAgICAgICAgICAgICBJbXBsaWNpdFNpZ25lZEludGVnZXJUcnVuY2F0aW9uKQorCitTQU5JVElaRVIoImltcGxpY2l0LWludGVnZXItc2lnbi1jaGFuZ2UiLCBJbXBsaWNpdEludGVnZXJTaWduQ2hhbmdlKQorCitTQU5JVElaRVJfR1JPVVAoImltcGxpY2l0LWludGVnZXItYXJpdGhtZXRpYy12YWx1ZS1jaGFuZ2UiLAorICAgICAgICAgICAgICAgIEltcGxpY2l0SW50ZWdlckFyaXRobWV0aWNWYWx1ZUNoYW5nZSwKKyAgICAgICAgICAgICAgICBJbXBsaWNpdEludGVnZXJTaWduQ2hhbmdlIHwgSW1wbGljaXRTaWduZWRJbnRlZ2VyVHJ1bmNhdGlvbikKKworLy8gRklYTUU6CisvL1NBTklUSVpFUl9HUk9VUCgiaW1wbGljaXQtaW50ZWdlci1jb252ZXJzaW9uIiwgSW1wbGljaXRJbnRlZ2VyQ29udmVyc2lvbiwKKy8vICAgICAgICAgICAgICAgIEltcGxpY2l0SW50ZWdlckFyaXRobWV0aWNWYWx1ZUNoYW5nZSB8CisvLyAgICAgICAgICAgICAgICAgICAgSW1wbGljaXRVbnNpZ25lZEludGVnZXJUcnVuY2F0aW9uKQorLy9TQU5JVElaRVJfR1JPVVAoImltcGxpY2l0LWNvbnZlcnNpb24iLCBJbXBsaWNpdENvbnZlcnNpb24sCisvLyAgICAgICAgICAgICAgICBJbXBsaWNpdEludGVnZXJDb252ZXJzaW9uKQorCiBTQU5JVElaRVJfR1JPVVAoImltcGxpY2l0LWNvbnZlcnNpb24iLCBJbXBsaWNpdENvbnZlcnNpb24sCi0gICAgICAgICAgICAgICAgSW1wbGljaXRJbnRlZ2VyVHJ1bmNhdGlvbikKKyAgICAgICAgICAgICAgICBJbXBsaWNpdEludGVnZXJBcml0aG1ldGljVmFsdWVDaGFuZ2UgfAorICAgICAgICAgICAgICAgICAgICBJbXBsaWNpdFVuc2lnbmVkSW50ZWdlclRydW5jYXRpb24pCiAKIFNBTklUSVpFUl9HUk9VUCgiaW50ZWdlciIsIEludGVnZXIsCi0gICAgICAgICAgICAgICAgSW1wbGljaXRJbnRlZ2VyVHJ1bmNhdGlvbiB8IEludGVnZXJEaXZpZGVCeVplcm8gfCBTaGlmdCB8CisgICAgICAgICAgICAgICAgSW1wbGljaXRDb252ZXJzaW9uIHwgSW50ZWdlckRpdmlkZUJ5WmVybyB8IFNoaWZ0IHwKICAgICAgICAgICAgICAgICAgICAgU2lnbmVkSW50ZWdlck92ZXJmbG93IHwgVW5zaWduZWRJbnRlZ2VyT3ZlcmZsb3cpCiAKIFNBTklUSVpFUigibG9jYWwtYm91bmRzIiwgTG9jYWxCb3VuZHMpCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9TYW5pdGl6ZXJzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9TYW5pdGl6ZXJzLmgKaW5kZXggMmVjYmRlOC4uZjJjZmFkYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvU2FuaXRpemVycy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1Nhbml0aXplcnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTYW5pdGl6ZXJzLmggLSBDIExhbmd1YWdlIEZhbWlseSBMYW5ndWFnZSBPcHRpb25zIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNjYsNyArNjUsNyBAQAogICAvLy8gRGlzYWJsZSB0aGUgc2FuaXRpemVycyBzcGVjaWZpZWQgaW4gXHAgSy4KICAgdm9pZCBjbGVhcihTYW5pdGl6ZXJNYXNrIEsgPSBTYW5pdGl6ZXJLaW5kOjpBbGwpIHsgTWFzayAmPSB+SzsgfQogCi0gIC8vLyBSZXR1cm5zIHRydWUgaWYgYXQgbGVhc3Qgb25lIHNhbml0aXplciBpcyBlbmFibGVkLgorICAvLy8gUmV0dXJucyB0cnVlIGlmIG5vIHNhbml0aXplcnMgYXJlIGVuYWJsZWQuCiAgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiBNYXNrID09IDA7IH0KIAogICAvLy8gQml0bWFzayBvZiBlbmFibGVkIHNhbml0aXplcnMuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9Tb3VyY2VMb2NhdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvU291cmNlTG9jYXRpb24uaAppbmRleCAwMTRiZGMzLi5jZWViZGY0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9Tb3VyY2VMb2NhdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1NvdXJjZUxvY2F0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU291cmNlTG9jYXRpb24uaCAtIENvbXBhY3QgaWRlbnRpZmllciBmb3IgU291cmNlIEZpbGVzIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI2LDcgKzI1LDYgQEAKIG5hbWVzcGFjZSBsbHZtIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZW5zZU1hcEluZm87Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzUG9kTGlrZTsKIAogfSAvLyBuYW1lc3BhY2UgbGx2bQogCkBAIC00NTgsMTEgKzQ1Niw2IEBACiAgICAgfQogICB9OwogCi0gIHRlbXBsYXRlIDw+Ci0gIHN0cnVjdCBpc1BvZExpa2U8Y2xhbmc6OlNvdXJjZUxvY2F0aW9uPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLSAgdGVtcGxhdGUgPD4KLSAgc3RydWN0IGlzUG9kTGlrZTxjbGFuZzo6RmlsZUlEPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLQogICAvLyBUZWFjaCBTbWFsbFB0clNldCBob3cgdG8gaGFuZGxlIFNvdXJjZUxvY2F0aW9uLgogICB0ZW1wbGF0ZTw+CiAgIHN0cnVjdCBQb2ludGVyTGlrZVR5cGVUcmFpdHM8Y2xhbmc6OlNvdXJjZUxvY2F0aW9uPiB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9Tb3VyY2VNYW5hZ2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9Tb3VyY2VNYW5hZ2VyLmgKaW5kZXggYzVhNTM5Ni4uMmJkZjFkNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvU291cmNlTWFuYWdlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1NvdXJjZU1hbmFnZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTb3VyY2VNYW5hZ2VyLmggLSBUcmFjayBhbmQgY2FjaGUgc291cmNlIGZpbGVzIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTAyNCwxMyArMTAyMywxNCBAQAogCiAgIC8vLyBTZXQgdGhlIG51bWJlciBvZiBGaWxlSURzIChmaWxlcyBhbmQgbWFjcm9zKSB0aGF0IHdlcmUgY3JlYXRlZAogICAvLy8gZHVyaW5nIHByZXByb2Nlc3Npbmcgb2YgXHAgRklELCBpbmNsdWRpbmcgaXQuCi0gIHZvaWQgc2V0TnVtQ3JlYXRlZEZJRHNGb3JGaWxlSUQoRmlsZUlEIEZJRCwgdW5zaWduZWQgTnVtRklEcykgY29uc3QgeworICB2b2lkIHNldE51bUNyZWF0ZWRGSURzRm9yRmlsZUlEKEZpbGVJRCBGSUQsIHVuc2lnbmVkIE51bUZJRHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBGb3JjZSA9IGZhbHNlKSBjb25zdCB7CiAgICAgYm9vbCBJbnZhbGlkID0gZmFsc2U7CiAgICAgY29uc3QgU3JjTWdyOjpTTG9jRW50cnkgJkVudHJ5ID0gZ2V0U0xvY0VudHJ5KEZJRCwgJkludmFsaWQpOwogICAgIGlmIChJbnZhbGlkIHx8ICFFbnRyeS5pc0ZpbGUoKSkKICAgICAgIHJldHVybjsKIAotICAgIGFzc2VydChFbnRyeS5nZXRGaWxlKCkuTnVtQ3JlYXRlZEZJRHMgPT0gMCAmJiAiQWxyZWFkeSBzZXQhIik7CisgICAgYXNzZXJ0KChGb3JjZSB8fCBFbnRyeS5nZXRGaWxlKCkuTnVtQ3JlYXRlZEZJRHMgPT0gMCkgJiYgIkFscmVhZHkgc2V0ISIpOwogICAgIGNvbnN0X2Nhc3Q8U3JjTWdyOjpGaWxlSW5mbyAmPihFbnRyeS5nZXRGaWxlKCkpLk51bUNyZWF0ZWRGSURzID0gTnVtRklEczsKICAgfQogCkBAIC0xNDI4LDYgKzE0MjgsMjQgQEAKICAgICByZXR1cm4gZ2V0RmlsZUlEKExvYykgPT0gZ2V0TWFpbkZpbGVJRCgpOwogICB9CiAKKyAgLy8vIFJldHVybnMgd2hldGhlciBccCBMb2MgaXMgbG9jYXRlZCBpbiBhIDxidWlsdC1pbj4gZmlsZS4KKyAgYm9vbCBpc1dyaXR0ZW5JbkJ1aWx0aW5GaWxlKFNvdXJjZUxvY2F0aW9uIExvYykgY29uc3QgeworICAgIFN0cmluZ1JlZiBGaWxlbmFtZShnZXRQcmVzdW1lZExvYyhMb2MpLmdldEZpbGVuYW1lKCkpOworICAgIHJldHVybiBGaWxlbmFtZS5lcXVhbHMoIjxidWlsdC1pbj4iKTsKKyAgfQorCisgIC8vLyBSZXR1cm5zIHdoZXRoZXIgXHAgTG9jIGlzIGxvY2F0ZWQgaW4gYSA8Y29tbWFuZCBsaW5lPiBmaWxlLgorICBib29sIGlzV3JpdHRlbkluQ29tbWFuZExpbmVGaWxlKFNvdXJjZUxvY2F0aW9uIExvYykgY29uc3QgeworICAgIFN0cmluZ1JlZiBGaWxlbmFtZShnZXRQcmVzdW1lZExvYyhMb2MpLmdldEZpbGVuYW1lKCkpOworICAgIHJldHVybiBGaWxlbmFtZS5lcXVhbHMoIjxjb21tYW5kIGxpbmU+Iik7CisgIH0KKworICAvLy8gUmV0dXJucyB3aGV0aGVyIFxwIExvYyBpcyBsb2NhdGVkIGluIGEgPHNjcmF0Y2ggc3BhY2U+IGZpbGUuCisgIGJvb2wgaXNXcml0dGVuSW5TY3JhdGNoU3BhY2UoU291cmNlTG9jYXRpb24gTG9jKSBjb25zdCB7CisgICAgU3RyaW5nUmVmIEZpbGVuYW1lKGdldFByZXN1bWVkTG9jKExvYykuZ2V0RmlsZW5hbWUoKSk7CisgICAgcmV0dXJuIEZpbGVuYW1lLmVxdWFscygiPHNjcmF0Y2ggc3BhY2U+Iik7CisgIH0KKwogICAvLy8gUmV0dXJucyBpZiBhIFNvdXJjZUxvY2F0aW9uIGlzIGluIGEgc3lzdGVtIGhlYWRlci4KICAgYm9vbCBpc0luU3lzdGVtSGVhZGVyKFNvdXJjZUxvY2F0aW9uIExvYykgY29uc3QgewogICAgIHJldHVybiBpc1N5c3RlbShnZXRGaWxlQ2hhcmFjdGVyaXN0aWMoTG9jKSk7CkBAIC0xNDQwLDcgKzE0NTgsMTUgQEAKIAogICAvLy8gUmV0dXJucyB3aGV0aGVyIFxwIExvYyBpcyBleHBhbmRlZCBmcm9tIGEgbWFjcm8gaW4gYSBzeXN0ZW0gaGVhZGVyLgogICBib29sIGlzSW5TeXN0ZW1NYWNybyhTb3VyY2VMb2NhdGlvbiBsb2MpIGNvbnN0IHsKLSAgICByZXR1cm4gbG9jLmlzTWFjcm9JRCgpICYmIGlzSW5TeXN0ZW1IZWFkZXIoZ2V0U3BlbGxpbmdMb2MobG9jKSk7CisgICAgaWYgKCFsb2MuaXNNYWNyb0lEKCkpCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBUaGlzIGhhcHBlbnMgd2hlbiB0aGUgbWFjcm8gaXMgdGhlIHJlc3VsdCBvZiBhIHBhc3RlLCBpbiB0aGF0IGNhc2UKKyAgICAvLyBpdHMgc3BlbGxpbmcgaXMgdGhlIHNjcmF0Y2ggbWVtb3J5LCBzbyB3ZSB0YWtlIHRoZSBwYXJlbnQgY29udGV4dC4KKyAgICBpZiAoaXNXcml0dGVuSW5TY3JhdGNoU3BhY2UoZ2V0U3BlbGxpbmdMb2MobG9jKSkpCisgICAgICByZXR1cm4gaXNJblN5c3RlbUhlYWRlcihnZXRTcGVsbGluZ0xvYyhnZXRJbW1lZGlhdGVNYWNyb0NhbGxlckxvYyhsb2MpKSk7CisKKyAgICByZXR1cm4gaXNJblN5c3RlbUhlYWRlcihnZXRTcGVsbGluZ0xvYyhsb2MpKTsKICAgfQogCiAgIC8vLyBUaGUgc2l6ZSBvZiB0aGUgU0xvY0VudHJ5IHRoYXQgXHAgRklEIHJlcHJlc2VudHMuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9Tb3VyY2VNYW5hZ2VySW50ZXJuYWxzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9Tb3VyY2VNYW5hZ2VySW50ZXJuYWxzLmgKaW5kZXggZGRjNThmZi4uZTY3YjkzYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvU291cmNlTWFuYWdlckludGVybmFscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1NvdXJjZU1hbmFnZXJJbnRlcm5hbHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTb3VyY2VNYW5hZ2VySW50ZXJuYWxzLmggLSBTb3VyY2VNYW5hZ2VyIEludGVybmFscyAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvU3BlY2lmaWVycy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvU3BlY2lmaWVycy5oCmluZGV4IGNkODIxM2YuLjcyNTZhY2EgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1NwZWNpZmllcnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9TcGVjaWZpZXJzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBTcGVjaWZpZXJzLmggLSBEZWNsYXJhdGlvbiBhbmQgVHlwZSBTcGVjaWZpZXJzIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCkBAIC0yNTEsNiArMjUwLDcgQEAKICAgICBDQ19Td2lmdCwgICAgICAgIC8vIF9fYXR0cmlidXRlX18oKHN3aWZ0Y2FsbCkpCiAgICAgQ0NfUHJlc2VydmVNb3N0LCAvLyBfX2F0dHJpYnV0ZV9fKChwcmVzZXJ2ZV9tb3N0KSkKICAgICBDQ19QcmVzZXJ2ZUFsbCwgIC8vIF9fYXR0cmlidXRlX18oKHByZXNlcnZlX2FsbCkpCisgICAgQ0NfQUFyY2g2NFZlY3RvckNhbGwsIC8vIF9fYXR0cmlidXRlX18oKGFhcmNoNjRfdmVjdG9yX3BjcykpCiAgIH07CiAKICAgLy8vIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBjYWxsaW5nIGNvbnZlbnRpb24gc3VwcG9ydHMgdmFyaWFkaWMKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1N0YWNrLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9TdGFjay5oCmluZGV4IDE1YTM3YzYuLmUwYjA0MDkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1N0YWNrLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvU3RhY2suaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFN0YWNrLmggLSBVdGlsaXRpZXMgZm9yIGRlYWxpbmcgd2l0aCBzdGFjayBzcGFjZSAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1N5bmNTY29wZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvU3luY1Njb3BlLmgKaW5kZXggZGI0NDYxZS4uM2ViZjQwZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvU3luY1Njb3BlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvU3luY1Njb3BlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBTeW5jU2NvcGUuaCAtIEF0b21pYyBzeW5jaHJvbml6YXRpb24gc2NvcGVzIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9UYXJnZXRCdWlsdGlucy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVGFyZ2V0QnVpbHRpbnMuaAppbmRleCA3NWEzODExLi41MDI2MmZhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9UYXJnZXRCdWlsdGlucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1RhcmdldEJ1aWx0aW5zLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBUYXJnZXRCdWlsdGlucy5oIC0gVGFyZ2V0IHNwZWNpZmljIGJ1aWx0aW4gSURzIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCkBAIC0xNTAsMTYgKzE0OSw2IEBACiAgICAgfTsKICAgfQogCi0gIC8vLyBOaW9zMiBidWlsdGlucwotICBuYW1lc3BhY2UgTmlvczIgewotICBlbnVtIHsKLSAgICBMYXN0VElCdWlsdGluID0gY2xhbmc6OkJ1aWx0aW46OkZpcnN0VFNCdWlsdGluIC0gMSwKLSNkZWZpbmUgQlVJTFRJTihJRCwgVFlQRSwgQVRUUlMpIEJJIyNJRCwKLSNpbmNsdWRlICJjbGFuZy9CYXNpYy9CdWlsdGluc05pb3MyLmRlZiIKLSAgICBMYXN0VFNCdWlsdGluCi0gIH07Ci0gIH0KLQogICAvLy8gTUlQUyBidWlsdGlucwogICBuYW1lc3BhY2UgTWlwcyB7CiAgICAgZW51bSB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9UYXJnZXRDWFhBQkkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1RhcmdldENYWEFCSS5oCmluZGV4IDQ1NTEyMWEuLmIxYmU0MDIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1RhcmdldENYWEFCSS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1RhcmdldENYWEFCSS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gVGFyZ2V0Q1hYQUJJLmggLSBDKysgQUJJIFRhcmdldCBDb25maWd1cmF0aW9uIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVGFyZ2V0SW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVGFyZ2V0SW5mby5oCmluZGV4IGMzZWY1NjEuLmQ0MWY0YzYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1RhcmdldEluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9UYXJnZXRJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBUYXJnZXRJbmZvLmggLSBFeHBvc2UgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhcmdldCAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCkBAIC00OSwyMSArNDgsMTAgQEAKIAogbmFtZXNwYWNlIEJ1aWx0aW4geyBzdHJ1Y3QgSW5mbzsgfQogCi0vLy8gRXhwb3NlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCB0YXJnZXQuCi0vLy8KLWNsYXNzIFRhcmdldEluZm8gOiBwdWJsaWMgUmVmQ291bnRlZEJhc2U8VGFyZ2V0SW5mbz4gewotICBzdGQ6OnNoYXJlZF9wdHI8VGFyZ2V0T3B0aW9ucz4gVGFyZ2V0T3B0czsKLSAgbGx2bTo6VHJpcGxlIFRyaXBsZTsKLXByb3RlY3RlZDoKLSAgLy8gVGFyZ2V0IHZhbHVlcyBzZXQgYnkgdGhlIGN0b3Igb2YgdGhlIGFjdHVhbCB0YXJnZXQgaW1wbGVtZW50YXRpb24uICBEZWZhdWx0Ci0gIC8vIHZhbHVlcyBhcmUgc3BlY2lmaWVkIGJ5IHRoZSBUYXJnZXRJbmZvIGNvbnN0cnVjdG9yLgotICBib29sIEJpZ0VuZGlhbjsKLSAgYm9vbCBUTFNTdXBwb3J0ZWQ7Ci0gIGJvb2wgVkxBU3VwcG9ydGVkOwotICBib29sIE5vQXNtVmFyaWFudHM7ICAvLyBUcnVlIGlmIHt8fSBhcmUgbm9ybWFsIGNoYXJhY3RlcnMuCi0gIGJvb2wgSGFzTGVnYWxIYWxmVHlwZTsgLy8gVHJ1ZSBpZiB0aGUgYmFja2VuZCBzdXBwb3J0cyBvcGVyYXRpb25zIG9uIHRoZSBoYWxmCi0gICAgICAgICAgICAgICAgICAgICAgICAgLy8gTExWTSBJUiB0eXBlLgotICBib29sIEhhc0Zsb2F0MTI4OworLy8vIEZpZWxkcyBjb250cm9sbGluZyBob3cgdHlwZXMgYXJlIGxhaWQgb3V0IGluIG1lbW9yeTsgdGhlc2UgbWF5IG5lZWQgdG8KKy8vLyBiZSBjb3BpZWQgZm9yIHRhcmdldHMgbGlrZSBBTURHUFUgdGhhdCBiYXNlIHRoZWlyIEFCSXMgb24gYW4gYXV4aWxpYXJ5CisvLy8gQ1BVIHRhcmdldC4KK3N0cnVjdCBUcmFuc2ZlcnJhYmxlVGFyZ2V0SW5mbyB7CiAgIHVuc2lnbmVkIGNoYXIgUG9pbnRlcldpZHRoLCBQb2ludGVyQWxpZ247CiAgIHVuc2lnbmVkIGNoYXIgQm9vbFdpZHRoLCBCb29sQWxpZ247CiAgIHVuc2lnbmVkIGNoYXIgSW50V2lkdGgsIEludEFsaWduOwpAQCAtMTA0LDE1ICs5Miw5MiBAQAogICB1bnNpZ25lZCBjaGFyIFN1aXRhYmxlQWxpZ247CiAgIHVuc2lnbmVkIGNoYXIgRGVmYXVsdEFsaWduRm9yQXR0cmlidXRlQWxpZ25lZDsKICAgdW5zaWduZWQgY2hhciBNaW5HbG9iYWxBbGlnbjsKLSAgdW5zaWduZWQgY2hhciBNYXhBdG9taWNQcm9tb3RlV2lkdGgsIE1heEF0b21pY0lubGluZVdpZHRoOworCisgIHVuc2lnbmVkIHNob3J0IE5ld0FsaWduOwogICB1bnNpZ25lZCBzaG9ydCBNYXhWZWN0b3JBbGlnbjsKICAgdW5zaWduZWQgc2hvcnQgTWF4VExTQWxpZ247Ci0gIHVuc2lnbmVkIHNob3J0IFNpbWREZWZhdWx0QWxpZ247Ci0gIHVuc2lnbmVkIHNob3J0IE5ld0FsaWduOwotICBzdGQ6OnVuaXF1ZV9wdHI8bGx2bTo6RGF0YUxheW91dD4gRGF0YUxheW91dDsKLSAgY29uc3QgY2hhciAqTUNvdW50TmFtZTsKKwogICBjb25zdCBsbHZtOjpmbHRTZW1hbnRpY3MgKkhhbGZGb3JtYXQsICpGbG9hdEZvcm1hdCwgKkRvdWJsZUZvcm1hdCwKICAgICAqTG9uZ0RvdWJsZUZvcm1hdCwgKkZsb2F0MTI4Rm9ybWF0OworCisgIC8vLz09PS0tLS0gVGFyZ2V0IERhdGEgVHlwZSBRdWVyeSBNZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworICBlbnVtIEludFR5cGUgeworICAgIE5vSW50ID0gMCwKKyAgICBTaWduZWRDaGFyLAorICAgIFVuc2lnbmVkQ2hhciwKKyAgICBTaWduZWRTaG9ydCwKKyAgICBVbnNpZ25lZFNob3J0LAorICAgIFNpZ25lZEludCwKKyAgICBVbnNpZ25lZEludCwKKyAgICBTaWduZWRMb25nLAorICAgIFVuc2lnbmVkTG9uZywKKyAgICBTaWduZWRMb25nTG9uZywKKyAgICBVbnNpZ25lZExvbmdMb25nCisgIH07CisKKyAgZW51bSBSZWFsVHlwZSB7CisgICAgTm9GbG9hdCA9IDI1NSwKKyAgICBGbG9hdCA9IDAsCisgICAgRG91YmxlLAorICAgIExvbmdEb3VibGUsCisgICAgRmxvYXQxMjgKKyAgfTsKK3Byb3RlY3RlZDoKKyAgSW50VHlwZSBTaXplVHlwZSwgSW50TWF4VHlwZSwgUHRyRGlmZlR5cGUsIEludFB0clR5cGUsIFdDaGFyVHlwZSwKKyAgICAgICAgICBXSW50VHlwZSwgQ2hhcjE2VHlwZSwgQ2hhcjMyVHlwZSwgSW50NjRUeXBlLCBTaWdBdG9taWNUeXBlLAorICAgICAgICAgIFByb2Nlc3NJRFR5cGU7CisKKyAgLy8vIFdoZXRoZXIgT2JqZWN0aXZlLUMncyBidWlsdC1pbiBib29sZWFuIHR5cGUgc2hvdWxkIGJlIHNpZ25lZCBjaGFyLgorICAvLy8KKyAgLy8vIE90aGVyd2lzZSwgd2hlbiB0aGlzIGZsYWcgaXMgbm90IHNldCwgdGhlIG5vcm1hbCBidWlsdC1pbiBib29sZWFuIHR5cGUgaXMKKyAgLy8vIHVzZWQuCisgIHVuc2lnbmVkIFVzZVNpZ25lZENoYXJGb3JPYmpDQm9vbCA6IDE7CisKKyAgLy8vIENvbnRyb2wgd2hldGhlciB0aGUgYWxpZ25tZW50IG9mIGJpdC1maWVsZCB0eXBlcyBpcyByZXNwZWN0ZWQgd2hlbiBsYXlpbmcKKyAgLy8vIG91dCBzdHJ1Y3R1cmVzLiBJZiB0cnVlLCB0aGVuIHRoZSBhbGlnbm1lbnQgb2YgdGhlIGJpdC1maWVsZCB0eXBlIHdpbGwgYmUKKyAgLy8vIHVzZWQgdG8gKGEpIGltcGFjdCB0aGUgYWxpZ25tZW50IG9mIHRoZSBjb250YWluaW5nIHN0cnVjdHVyZSwgYW5kIChiKQorICAvLy8gZW5zdXJlIHRoYXQgdGhlIGluZGl2aWR1YWwgYml0LWZpZWxkIHdpbGwgbm90IHN0cmFkZGxlIGFuIGFsaWdubWVudAorICAvLy8gYm91bmRhcnkuCisgIHVuc2lnbmVkIFVzZUJpdEZpZWxkVHlwZUFsaWdubWVudCA6IDE7CisKKyAgLy8vIFdoZXRoZXIgemVybyBsZW5ndGggYml0ZmllbGRzIChlLmcuLCBpbnQgOiAwOykgZm9yY2UgYWxpZ25tZW50IG9mCisgIC8vLyB0aGUgbmV4dCBiaXRmaWVsZC4KKyAgLy8vCisgIC8vLyBJZiB0aGUgYWxpZ25tZW50IG9mIHRoZSB6ZXJvIGxlbmd0aCBiaXRmaWVsZCBpcyBncmVhdGVyIHRoYW4gdGhlIG1lbWJlcgorICAvLy8gdGhhdCBmb2xsb3dzIGl0LCBgYmFyJywgYGJhcicgd2lsbCBiZSBhbGlnbmVkIGFzIHRoZSB0eXBlIG9mIHRoZQorICAvLy8gemVyby1sZW5ndGggYml0ZmllbGQuCisgIHVuc2lnbmVkIFVzZVplcm9MZW5ndGhCaXRmaWVsZEFsaWdubWVudCA6IDE7CisKKyAgLy8vICBXaGV0aGVyIGV4cGxpY2l0IGJpdCBmaWVsZCBhbGlnbm1lbnQgYXR0cmlidXRlcyBhcmUgaG9ub3JlZC4KKyAgdW5zaWduZWQgVXNlRXhwbGljaXRCaXRGaWVsZEFsaWdubWVudCA6IDE7CisKKyAgLy8vIElmIG5vbi16ZXJvLCBzcGVjaWZpZXMgYSBmaXhlZCBhbGlnbm1lbnQgdmFsdWUgZm9yIGJpdGZpZWxkcyB0aGF0IGZvbGxvdworICAvLy8gemVybyBsZW5ndGggYml0ZmllbGQsIHJlZ2FyZGxlc3Mgb2YgdGhlIHplcm8gbGVuZ3RoIGJpdGZpZWxkIHR5cGUuCisgIHVuc2lnbmVkIFplcm9MZW5ndGhCaXRmaWVsZEJvdW5kYXJ5OworfTsKKworLy8vIEV4cG9zZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgdGFyZ2V0LgorLy8vCitjbGFzcyBUYXJnZXRJbmZvIDogcHVibGljIHZpcnR1YWwgVHJhbnNmZXJyYWJsZVRhcmdldEluZm8sCisgICAgICAgICAgICAgICAgICAgcHVibGljIFJlZkNvdW50ZWRCYXNlPFRhcmdldEluZm8+IHsKKyAgc3RkOjpzaGFyZWRfcHRyPFRhcmdldE9wdGlvbnM+IFRhcmdldE9wdHM7CisgIGxsdm06OlRyaXBsZSBUcmlwbGU7Citwcm90ZWN0ZWQ6CisgIC8vIFRhcmdldCB2YWx1ZXMgc2V0IGJ5IHRoZSBjdG9yIG9mIHRoZSBhY3R1YWwgdGFyZ2V0IGltcGxlbWVudGF0aW9uLiAgRGVmYXVsdAorICAvLyB2YWx1ZXMgYXJlIHNwZWNpZmllZCBieSB0aGUgVGFyZ2V0SW5mbyBjb25zdHJ1Y3Rvci4KKyAgYm9vbCBCaWdFbmRpYW47CisgIGJvb2wgVExTU3VwcG9ydGVkOworICBib29sIFZMQVN1cHBvcnRlZDsKKyAgYm9vbCBOb0FzbVZhcmlhbnRzOyAgLy8gVHJ1ZSBpZiB7fH0gYXJlIG5vcm1hbCBjaGFyYWN0ZXJzLgorICBib29sIEhhc0xlZ2FsSGFsZlR5cGU7IC8vIFRydWUgaWYgdGhlIGJhY2tlbmQgc3VwcG9ydHMgb3BlcmF0aW9ucyBvbiB0aGUgaGFsZgorICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExMVk0gSVIgdHlwZS4KKyAgYm9vbCBIYXNGbG9hdDEyODsKKyAgYm9vbCBIYXNGbG9hdDE2OworCisgIHVuc2lnbmVkIGNoYXIgTWF4QXRvbWljUHJvbW90ZVdpZHRoLCBNYXhBdG9taWNJbmxpbmVXaWR0aDsKKyAgdW5zaWduZWQgc2hvcnQgU2ltZERlZmF1bHRBbGlnbjsKKyAgc3RkOjp1bmlxdWVfcHRyPGxsdm06OkRhdGFMYXlvdXQ+IERhdGFMYXlvdXQ7CisgIGNvbnN0IGNoYXIgKk1Db3VudE5hbWU7CiAgIHVuc2lnbmVkIGNoYXIgUmVnUGFybU1heCwgU1NFUmVnUGFybU1heDsKICAgVGFyZ2V0Q1hYQUJJIFRoZUNYWEFCSTsKICAgY29uc3QgTGFuZ0FTTWFwICpBZGRyU3BhY2VNYXA7CkBAIC0xNTMsMjkgKzIxOCw2IEBACiAgICAgcmV0dXJuICpUYXJnZXRPcHRzOwogICB9CiAKLSAgLy8vPT09LS0tLSBUYXJnZXQgRGF0YSBUeXBlIFF1ZXJ5IE1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi0gIGVudW0gSW50VHlwZSB7Ci0gICAgTm9JbnQgPSAwLAotICAgIFNpZ25lZENoYXIsCi0gICAgVW5zaWduZWRDaGFyLAotICAgIFNpZ25lZFNob3J0LAotICAgIFVuc2lnbmVkU2hvcnQsCi0gICAgU2lnbmVkSW50LAotICAgIFVuc2lnbmVkSW50LAotICAgIFNpZ25lZExvbmcsCi0gICAgVW5zaWduZWRMb25nLAotICAgIFNpZ25lZExvbmdMb25nLAotICAgIFVuc2lnbmVkTG9uZ0xvbmcKLSAgfTsKLQotICBlbnVtIFJlYWxUeXBlIHsKLSAgICBOb0Zsb2F0ID0gMjU1LAotICAgIEZsb2F0ID0gMCwKLSAgICBEb3VibGUsCi0gICAgTG9uZ0RvdWJsZSwKLSAgICBGbG9hdDEyOAotICB9OwotCiAgIC8vLyBUaGUgZGlmZmVyZW50IGtpbmRzIG9mIF9fYnVpbHRpbl92YV9saXN0IHR5cGVzIGRlZmluZWQgYnkKICAgLy8vIHRoZSB0YXJnZXQgaW1wbGVtZW50YXRpb24uCiAgIGVudW0gQnVpbHRpblZhTGlzdEtpbmQgewpAQCAtMjE4LDM4ICsyNjAsNiBAQAogICB9OwogCiBwcm90ZWN0ZWQ6Ci0gIEludFR5cGUgU2l6ZVR5cGUsIEludE1heFR5cGUsIFB0ckRpZmZUeXBlLCBJbnRQdHJUeXBlLCBXQ2hhclR5cGUsCi0gICAgICAgICAgV0ludFR5cGUsIENoYXIxNlR5cGUsIENoYXIzMlR5cGUsIEludDY0VHlwZSwgU2lnQXRvbWljVHlwZSwKLSAgICAgICAgICBQcm9jZXNzSURUeXBlOwotCi0gIC8vLyBXaGV0aGVyIE9iamVjdGl2ZS1DJ3MgYnVpbHQtaW4gYm9vbGVhbiB0eXBlIHNob3VsZCBiZSBzaWduZWQgY2hhci4KLSAgLy8vCi0gIC8vLyBPdGhlcndpc2UsIHdoZW4gdGhpcyBmbGFnIGlzIG5vdCBzZXQsIHRoZSBub3JtYWwgYnVpbHQtaW4gYm9vbGVhbiB0eXBlIGlzCi0gIC8vLyB1c2VkLgotICB1bnNpZ25lZCBVc2VTaWduZWRDaGFyRm9yT2JqQ0Jvb2wgOiAxOwotCi0gIC8vLyBDb250cm9sIHdoZXRoZXIgdGhlIGFsaWdubWVudCBvZiBiaXQtZmllbGQgdHlwZXMgaXMgcmVzcGVjdGVkIHdoZW4gbGF5aW5nCi0gIC8vLyBvdXQgc3RydWN0dXJlcy4gSWYgdHJ1ZSwgdGhlbiB0aGUgYWxpZ25tZW50IG9mIHRoZSBiaXQtZmllbGQgdHlwZSB3aWxsIGJlCi0gIC8vLyB1c2VkIHRvIChhKSBpbXBhY3QgdGhlIGFsaWdubWVudCBvZiB0aGUgY29udGFpbmluZyBzdHJ1Y3R1cmUsIGFuZCAoYikKLSAgLy8vIGVuc3VyZSB0aGF0IHRoZSBpbmRpdmlkdWFsIGJpdC1maWVsZCB3aWxsIG5vdCBzdHJhZGRsZSBhbiBhbGlnbm1lbnQKLSAgLy8vIGJvdW5kYXJ5LgotICB1bnNpZ25lZCBVc2VCaXRGaWVsZFR5cGVBbGlnbm1lbnQgOiAxOwotCi0gIC8vLyBXaGV0aGVyIHplcm8gbGVuZ3RoIGJpdGZpZWxkcyAoZS5nLiwgaW50IDogMDspIGZvcmNlIGFsaWdubWVudCBvZgotICAvLy8gdGhlIG5leHQgYml0ZmllbGQuCi0gIC8vLwotICAvLy8gSWYgdGhlIGFsaWdubWVudCBvZiB0aGUgemVybyBsZW5ndGggYml0ZmllbGQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtZW1iZXIKLSAgLy8vIHRoYXQgZm9sbG93cyBpdCwgYGJhcicsIGBiYXInIHdpbGwgYmUgYWxpZ25lZCBhcyB0aGUgdHlwZSBvZiB0aGUKLSAgLy8vIHplcm8tbGVuZ3RoIGJpdGZpZWxkLgotICB1bnNpZ25lZCBVc2VaZXJvTGVuZ3RoQml0ZmllbGRBbGlnbm1lbnQgOiAxOwotCi0gIC8vLyAgV2hldGhlciBleHBsaWNpdCBiaXQgZmllbGQgYWxpZ25tZW50IGF0dHJpYnV0ZXMgYXJlIGhvbm9yZWQuCi0gIHVuc2lnbmVkIFVzZUV4cGxpY2l0Qml0RmllbGRBbGlnbm1lbnQgOiAxOwotCi0gIC8vLyBJZiBub24temVybywgc3BlY2lmaWVzIGEgZml4ZWQgYWxpZ25tZW50IHZhbHVlIGZvciBiaXRmaWVsZHMgdGhhdCBmb2xsb3cKLSAgLy8vIHplcm8gbGVuZ3RoIGJpdGZpZWxkLCByZWdhcmRsZXNzIG9mIHRoZSB6ZXJvIGxlbmd0aCBiaXRmaWVsZCB0eXBlLgotICB1bnNpZ25lZCBaZXJvTGVuZ3RoQml0ZmllbGRCb3VuZGFyeTsKLQogICAvLy8gU3BlY2lmeSBpZiBtYW5nbGluZyBiYXNlZCBvbiBhZGRyZXNzIHNwYWNlIG1hcCBzaG91bGQgYmUgdXNlZCBvcgogICAvLy8gbm90IGZvciBsYW5ndWFnZSBzcGVjaWZpYyBhZGRyZXNzIHNwYWNlcwogICBib29sIFVzZUFkZHJTcGFjZU1hcE1hbmdsaW5nOwpAQCAtNTE3LDYgKzUyNyw5IEBACiAgIC8vLyBEZXRlcm1pbmUgd2hldGhlciB0aGUgX19mbG9hdDEyOCB0eXBlIGlzIHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldC4KICAgdmlydHVhbCBib29sIGhhc0Zsb2F0MTI4VHlwZSgpIGNvbnN0IHsgcmV0dXJuIEhhc0Zsb2F0MTI4OyB9CiAKKyAgLy8vIERldGVybWluZSB3aGV0aGVyIHRoZSBfRmxvYXQxNiB0eXBlIGlzIHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldC4KKyAgdmlydHVhbCBib29sIGhhc0Zsb2F0MTZUeXBlKCkgY29uc3QgeyByZXR1cm4gSGFzRmxvYXQxNjsgfQorCiAgIC8vLyBSZXR1cm4gdGhlIGFsaWdubWVudCB0aGF0IGlzIHN1aXRhYmxlIGZvciBzdG9yaW5nIGFueQogICAvLy8gb2JqZWN0IHdpdGggYSBmdW5kYW1lbnRhbCBhbGlnbm1lbnQgcmVxdWlyZW1lbnQuCiAgIHVuc2lnbmVkIGdldFN1aXRhYmxlQWxpZ24oKSBjb25zdCB7IHJldHVybiBTdWl0YWJsZUFsaWduOyB9CkBAIC04MDMsNiArODE2LDcgQEAKICAgICBzdHJ1Y3QgewogICAgICAgaW50IE1pbjsKICAgICAgIGludCBNYXg7CisgICAgICBib29sIGlzQ29uc3RyYWluZWQ7CiAgICAgfSBJbW1SYW5nZTsKICAgICBsbHZtOjpTbWFsbFNldDxpbnQsIDQ+IEltbVNldDsKIApAQCAtODEzLDYgKzgyNyw3IEBACiAgICAgICAgIDogRmxhZ3MoMCksIFRpZWRPcGVyYW5kKC0xKSwgQ29uc3RyYWludFN0cihDb25zdHJhaW50U3RyLnN0cigpKSwKICAgICAgICAgICBOYW1lKE5hbWUuc3RyKCkpIHsKICAgICAgIEltbVJhbmdlLk1pbiA9IEltbVJhbmdlLk1heCA9IDA7CisgICAgICBJbW1SYW5nZS5pc0NvbnN0cmFpbmVkID0gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldENvbnN0cmFpbnRTdHIoKSBjb25zdCB7IHJldHVybiBDb25zdHJhaW50U3RyOyB9CkBAIC04NDEsOCArODU2LDkgQEAKICAgICAgIHJldHVybiAoRmxhZ3MgJiBDSV9JbW1lZGlhdGVDb25zdGFudCkgIT0gMDsKICAgICB9CiAgICAgYm9vbCBpc1ZhbGlkQXNtSW1tZWRpYXRlKGNvbnN0IGxsdm06OkFQSW50ICZWYWx1ZSkgY29uc3QgewotICAgICAgcmV0dXJuIChWYWx1ZS5zZ2UoSW1tUmFuZ2UuTWluKSAmJiBWYWx1ZS5zbGUoSW1tUmFuZ2UuTWF4KSkgfHwKLSAgICAgICAgICAgICBJbW1TZXQuY291bnQoVmFsdWUuZ2V0WkV4dFZhbHVlKCkpICE9IDA7CisgICAgICBpZiAoIUltbVNldC5lbXB0eSgpKQorICAgICAgICByZXR1cm4gSW1tU2V0LmNvdW50KFZhbHVlLmdldFpFeHRWYWx1ZSgpKSAhPSAwOworICAgICAgcmV0dXJuICFJbW1SYW5nZS5pc0NvbnN0cmFpbmVkIHx8IChWYWx1ZS5zZ2UoSW1tUmFuZ2UuTWluKSAmJiBWYWx1ZS5zbGUoSW1tUmFuZ2UuTWF4KSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRJc1JlYWRXcml0ZSgpIHsgRmxhZ3MgfD0gQ0lfUmVhZFdyaXRlOyB9CkBAIC04NTQsNiArODcwLDcgQEAKICAgICAgIEZsYWdzIHw9IENJX0ltbWVkaWF0ZUNvbnN0YW50OwogICAgICAgSW1tUmFuZ2UuTWluID0gTWluOwogICAgICAgSW1tUmFuZ2UuTWF4ID0gTWF4OworICAgICAgSW1tUmFuZ2UuaXNDb25zdHJhaW5lZCA9IHRydWU7CiAgICAgfQogICAgIHZvaWQgc2V0UmVxdWlyZXNJbW1lZGlhdGUobGx2bTo6QXJyYXlSZWY8aW50PiBFeGFjdHMpIHsKICAgICAgIEZsYWdzIHw9IENJX0ltbWVkaWF0ZUNvbnN0YW50OwpAQCAtODY2LDggKzg4Myw2IEBACiAgICAgfQogICAgIHZvaWQgc2V0UmVxdWlyZXNJbW1lZGlhdGUoKSB7CiAgICAgICBGbGFncyB8PSBDSV9JbW1lZGlhdGVDb25zdGFudDsKLSAgICAgIEltbVJhbmdlLk1pbiA9IElOVF9NSU47Ci0gICAgICBJbW1SYW5nZS5NYXggPSBJTlRfTUFYOwogICAgIH0KIAogICAgIC8vLyBJbmRpY2F0ZSB0aGF0IHRoaXMgaXMgYW4gaW5wdXQgb3BlcmFuZCB0aGF0IGlzIHRpZWQgdG8KQEAgLTEwODIsOSArMTA5NywxNSBAQAogICAgIHJldHVybiBmYWxzZTsKICAgfQogCi0gIC8vLyBJZGVudGlmeSB3aGV0aGVyIHRoaXMgdGFyZXQgc3VwcG9ydHMgbXVsdGl2ZXJzaW9uaW5nIG9mIGZ1bmN0aW9ucywKKyAgLy8vIElkZW50aWZ5IHdoZXRoZXIgdGhpcyB0YXJnZXQgc3VwcG9ydHMgbXVsdGl2ZXJzaW9uaW5nIG9mIGZ1bmN0aW9ucywKICAgLy8vIHdoaWNoIHJlcXVpcmVzIHN1cHBvcnQgZm9yIGNwdV9zdXBwb3J0cyBhbmQgY3B1X2lzIGZ1bmN0aW9uYWxpdHkuCi0gIHZpcnR1YWwgYm9vbCBzdXBwb3J0c011bHRpVmVyc2lvbmluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgIGJvb2wgc3VwcG9ydHNNdWx0aVZlcnNpb25pbmcoKSBjb25zdCB7CisgICAgcmV0dXJuIGdldFRyaXBsZSgpLmdldEFyY2goKSA9PSBsbHZtOjpUcmlwbGU6Ong4NiB8fAorICAgICAgICAgICBnZXRUcmlwbGUoKS5nZXRBcmNoKCkgPT0gbGx2bTo6VHJpcGxlOjp4ODZfNjQ7CisgIH0KKworICAvLy8gSWRlbnRpZnkgd2hldGhlciB0aGlzIHRhcmdldCBzdXBwb3J0cyBJRnVuY3MuCisgIGJvb2wgc3VwcG9ydHNJRnVuYygpIGNvbnN0IHsgcmV0dXJuIGdldFRyaXBsZSgpLmlzT1NCaW5Gb3JtYXRFTEYoKTsgfQogCiAgIC8vIFZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgX19idWlsdGluX2NwdV9zdXBwb3J0cyhjb25zdCBjaGFyKikKICAgLy8gYXJndW1lbnQuCkBAIC0xMzE1LDEyICsxMzM2LDIyIEBACiAgICAgcmV0dXJuIE5vbmU7CiAgIH0KIAorICAvLy8gXHJldHVybnMgVGhlIHZlcnNpb24gb2YgdGhlIFNESyB3aGljaCB3YXMgdXNlZCBkdXJpbmcgdGhlIGNvbXBpbGF0aW9uIGlmCisgIC8vLyBvbmUgd2FzIHNwZWNpZmllZCwgb3IgYW4gZW1wdHkgdmVyc2lvbiBvdGhlcndpc2UuCisgIGNvbnN0IGxsdm06OlZlcnNpb25UdXBsZSAmZ2V0U0RLVmVyc2lvbigpIGNvbnN0IHsKKyAgICByZXR1cm4gZ2V0VGFyZ2V0T3B0cygpLlNES1ZlcnNpb247CisgIH0KKwogICAvLy8gQ2hlY2sgdGhlIHRhcmdldCBpcyB2YWxpZCBhZnRlciBpdCBpcyBmdWxseSBpbml0aWFsaXplZC4KICAgdmlydHVhbCBib29sIHZhbGlkYXRlVGFyZ2V0KERpYWdub3N0aWNzRW5naW5lICZEaWFncykgY29uc3QgewogICAgIHJldHVybiB0cnVlOwogICB9CiAKKyAgdmlydHVhbCB2b2lkIHNldEF1eFRhcmdldChjb25zdCBUYXJnZXRJbmZvICpBdXgpIHt9CisKIHByb3RlY3RlZDoKKyAgLy8vIENvcHkgdHlwZSBhbmQgbGF5b3V0IHJlbGF0ZWQgaW5mby4KKyAgdm9pZCBjb3B5QXV4VGFyZ2V0KGNvbnN0IFRhcmdldEluZm8gKkF1eCk7CiAgIHZpcnR1YWwgdWludDY0X3QgZ2V0UG9pbnRlcldpZHRoVih1bnNpZ25lZCBBZGRyU3BhY2UpIGNvbnN0IHsKICAgICByZXR1cm4gUG9pbnRlcldpZHRoOwogICB9CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9UYXJnZXRPcHRpb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9UYXJnZXRPcHRpb25zLmgKaW5kZXggNzU1OWUzMS4uYmJlODZhZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVGFyZ2V0T3B0aW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1RhcmdldE9wdGlvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFRhcmdldE9wdGlvbnMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KQEAgLTE1LDEwICsxNCwxMSBAQAogI2lmbmRlZiBMTFZNX0NMQU5HX0JBU0lDX1RBUkdFVE9QVElPTlNfSAogI2RlZmluZSBMTFZNX0NMQU5HX0JBU0lDX1RBUkdFVE9QVElPTlNfSAogCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvT3BlbkNMT3B0aW9ucy5oIgorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9WZXJzaW9uVHVwbGUuaCIKKyNpbmNsdWRlICJsbHZtL1RhcmdldC9UYXJnZXRPcHRpb25zLmgiCiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlICJjbGFuZy9CYXNpYy9PcGVuQ0xPcHRpb25zLmgiCi0jaW5jbHVkZSAibGx2bS9UYXJnZXQvVGFyZ2V0T3B0aW9ucy5oIgogCiBuYW1lc3BhY2UgY2xhbmcgewogCkBAIC03Myw2ICs3MywxNCBAQAogICAvLyAiZGVmYXVsdCIgZm9yIHRoZSBjYXNlIHdoZW4gdGhlIHVzZXIgaGFzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhCiAgIC8vIGNvZGUgbW9kZWwuCiAgIHN0ZDo6c3RyaW5nIENvZGVNb2RlbDsKKworICAvLy8gVGhlIHZlcnNpb24gb2YgdGhlIFNESyB3aGljaCB3YXMgdXNlZCBkdXJpbmcgdGhlIGNvbXBpbGF0aW9uLgorICAvLy8gVGhlIG9wdGlvbiBpcyB1c2VkIGZvciB0d28gZGlmZmVyZW50IHB1cnBvc2VzOgorICAvLy8gKiBvbiBkYXJ3aW4gdGhlIHZlcnNpb24gaXMgcHJvcGFnYXRlZCB0byBMTFZNIHdoZXJlIGl0J3MgdXNlZAorICAvLy8gICB0byBzdXBwb3J0IFNESyBWZXJzaW9uIG1ldGFkYXRhIChTZWUgRDU1NjczKS4KKyAgLy8vICogQ1VEQSBjb21waWxhdGlvbiB1c2VzIGl0IHRvIGNvbnRyb2wgcGFydHMgb2YgQ1VEQSBjb21waWxhdGlvbgorICAvLy8gICBpbiBjbGFuZyB0aGF0IGRlcGVuZCBvbiBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBDVURBIFNESy4KKyAgbGx2bTo6VmVyc2lvblR1cGxlIFNES1ZlcnNpb247CiB9OwogCiB9ICAvLyBlbmQgbmFtZXNwYWNlIGNsYW5nCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9UZW1wbGF0ZUtpbmRzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9UZW1wbGF0ZUtpbmRzLmgKaW5kZXggYTBiYzM2Mi4uY2ZlZDA5ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVGVtcGxhdGVLaW5kcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1RlbXBsYXRlS2luZHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFRlbXBsYXRlS2luZHMuaCAtIEVudW0gdmFsdWVzIGZvciBDKysgVGVtcGxhdGUgS2luZHMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1Rva2VuS2luZHMuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVG9rZW5LaW5kcy5kZWYKaW5kZXggY2FlYTY3YS4uMmE0MWQxMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVG9rZW5LaW5kcy5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVG9rZW5LaW5kcy5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBUb2tlbktpbmRzLmRlZiAtIEMgRmFtaWx5IFRva2VuIEtpbmQgRGF0YWJhc2UgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTU3LDExICs1Niw4IEBACiAjaWZuZGVmIENYWF9LRVlXT1JEX09QRVJBVE9SCiAjZGVmaW5lIENYWF9LRVlXT1JEX09QRVJBVE9SKFgsWSkKICNlbmRpZgotI2lmbmRlZiBPQkpDMV9BVF9LRVlXT1JECi0jZGVmaW5lIE9CSkMxX0FUX0tFWVdPUkQoWCkKLSNlbmRpZgotI2lmbmRlZiBPQkpDMl9BVF9LRVlXT1JECi0jZGVmaW5lIE9CSkMyX0FUX0tFWVdPUkQoWCkKKyNpZm5kZWYgT0JKQ19BVF9LRVlXT1JECisjZGVmaW5lIE9CSkNfQVRfS0VZV09SRChYKQogI2VuZGlmCiAjaWZuZGVmIFRFU1RJTkdfS0VZV09SRAogI2RlZmluZSBURVNUSU5HX0tFWVdPUkQoWCwgTCkgS0VZV09SRChYLCBMKQpAQCAtNTc5LDE1ICs1NzUsMTUgQEAKIEtFWVdPUkQoaGFsZiAgICAgICAgICAgICAgICAgICAgICAgICwgSEFMRlNVUFBPUlQpCiAKIC8vIE9iamVjdGl2ZS1DIEFSQyBrZXl3b3Jkcy4KLUtFWVdPUkQoX19icmlkZ2UgICAgICAgICAgICAgICAgICAgICAsIEtFWUFSQykKLUtFWVdPUkQoX19icmlkZ2VfdHJhbnNmZXIgICAgICAgICAgICAsIEtFWUFSQykKLUtFWVdPUkQoX19icmlkZ2VfcmV0YWluZWQgICAgICAgICAgICAsIEtFWUFSQykKLUtFWVdPUkQoX19icmlkZ2VfcmV0YWluICAgICAgICAgICAgICAsIEtFWUFSQykKK0tFWVdPUkQoX19icmlkZ2UgICAgICAgICAgICAgICAgICAgICAsIEtFWU9CSkMpCitLRVlXT1JEKF9fYnJpZGdlX3RyYW5zZmVyICAgICAgICAgICAgLCBLRVlPQkpDKQorS0VZV09SRChfX2JyaWRnZV9yZXRhaW5lZCAgICAgICAgICAgICwgS0VZT0JKQykKK0tFWVdPUkQoX19icmlkZ2VfcmV0YWluICAgICAgICAgICAgICAsIEtFWU9CSkMpCiAKIC8vIE9iamVjdGl2ZS1DIGtleXdvcmRzLgotS0VZV09SRChfX2NvdmFyaWFudCAgICAgICAgICAgICAgICAgICwgS0VZT0JKQzIpCi1LRVlXT1JEKF9fY29udHJhdmFyaWFudCAgICAgICAgICAgICAgLCBLRVlPQkpDMikKLUtFWVdPUkQoX19raW5kb2YgICAgICAgICAgICAgICAgICAgICAsIEtFWU9CSkMyKQorS0VZV09SRChfX2NvdmFyaWFudCAgICAgICAgICAgICAgICAgICwgS0VZT0JKQykKK0tFWVdPUkQoX19jb250cmF2YXJpYW50ICAgICAgICAgICAgICAsIEtFWU9CSkMpCitLRVlXT1JEKF9fa2luZG9mICAgICAgICAgICAgICAgICAgICAgLCBLRVlPQkpDKQogCiAvLyBBbHRlcm5hdGUgc3BlbGxpbmcgZm9yIHZhcmlvdXMgdG9rZW5zLiAgVGhlcmUgYXJlIEdDQyBleHRlbnNpb25zIGluIGFsbAogLy8gbGFuZ3VhZ2VzLCBidXQgc2hvdWxkIG5vdCBiZSBkaXNhYmxlZCBpbiBzdHJpY3QgY29uZm9ybWFuY2UgbW9kZS4KQEAgLTY3NywzNCArNjczLDM0IEBACiAvLyBUaGVzZSBoYXZlIG1lYW5pbmcgYWZ0ZXIgYW4gJ0AnIGluIE9iamVjdGl2ZS1DIG1vZGUuIFRoZXNlIGRlZmluZSBlbnVtcyBpbgogLy8gdGhlIHRvazo6b2JqY18qIG5hbWVzcGFjZS4KIAotT0JKQzFfQVRfS0VZV09SRChub3Rfa2V5d29yZCkKLU9CSkMxX0FUX0tFWVdPUkQoY2xhc3MpCi1PQkpDMV9BVF9LRVlXT1JEKGNvbXBhdGliaWxpdHlfYWxpYXMpCi1PQkpDMV9BVF9LRVlXT1JEKGRlZnMpCi1PQkpDMV9BVF9LRVlXT1JEKGVuY29kZSkKLU9CSkMxX0FUX0tFWVdPUkQoZW5kKQotT0JKQzFfQVRfS0VZV09SRChpbXBsZW1lbnRhdGlvbikKLU9CSkMxX0FUX0tFWVdPUkQoaW50ZXJmYWNlKQotT0JKQzFfQVRfS0VZV09SRChwcml2YXRlKQotT0JKQzFfQVRfS0VZV09SRChwcm90ZWN0ZWQpCi1PQkpDMV9BVF9LRVlXT1JEKHByb3RvY29sKQotT0JKQzFfQVRfS0VZV09SRChwdWJsaWMpCi1PQkpDMV9BVF9LRVlXT1JEKHNlbGVjdG9yKQotT0JKQzFfQVRfS0VZV09SRCh0aHJvdykKLU9CSkMxX0FUX0tFWVdPUkQodHJ5KQotT0JKQzFfQVRfS0VZV09SRChjYXRjaCkKLU9CSkMxX0FUX0tFWVdPUkQoZmluYWxseSkKLU9CSkMxX0FUX0tFWVdPUkQoc3luY2hyb25pemVkKQotT0JKQzFfQVRfS0VZV09SRChhdXRvcmVsZWFzZXBvb2wpCitPQkpDX0FUX0tFWVdPUkQobm90X2tleXdvcmQpCitPQkpDX0FUX0tFWVdPUkQoY2xhc3MpCitPQkpDX0FUX0tFWVdPUkQoY29tcGF0aWJpbGl0eV9hbGlhcykKK09CSkNfQVRfS0VZV09SRChkZWZzKQorT0JKQ19BVF9LRVlXT1JEKGVuY29kZSkKK09CSkNfQVRfS0VZV09SRChlbmQpCitPQkpDX0FUX0tFWVdPUkQoaW1wbGVtZW50YXRpb24pCitPQkpDX0FUX0tFWVdPUkQoaW50ZXJmYWNlKQorT0JKQ19BVF9LRVlXT1JEKHByaXZhdGUpCitPQkpDX0FUX0tFWVdPUkQocHJvdGVjdGVkKQorT0JKQ19BVF9LRVlXT1JEKHByb3RvY29sKQorT0JKQ19BVF9LRVlXT1JEKHB1YmxpYykKK09CSkNfQVRfS0VZV09SRChzZWxlY3RvcikKK09CSkNfQVRfS0VZV09SRCh0aHJvdykKK09CSkNfQVRfS0VZV09SRCh0cnkpCitPQkpDX0FUX0tFWVdPUkQoY2F0Y2gpCitPQkpDX0FUX0tFWVdPUkQoZmluYWxseSkKK09CSkNfQVRfS0VZV09SRChzeW5jaHJvbml6ZWQpCitPQkpDX0FUX0tFWVdPUkQoYXV0b3JlbGVhc2Vwb29sKQogCi1PQkpDMl9BVF9LRVlXT1JEKHByb3BlcnR5KQotT0JKQzJfQVRfS0VZV09SRChwYWNrYWdlKQotT0JKQzJfQVRfS0VZV09SRChyZXF1aXJlZCkKLU9CSkMyX0FUX0tFWVdPUkQob3B0aW9uYWwpCi1PQkpDMl9BVF9LRVlXT1JEKHN5bnRoZXNpemUpCi1PQkpDMl9BVF9LRVlXT1JEKGR5bmFtaWMpCi1PQkpDMl9BVF9LRVlXT1JEKGltcG9ydCkKLU9CSkMyX0FUX0tFWVdPUkQoYXZhaWxhYmxlKQorT0JKQ19BVF9LRVlXT1JEKHByb3BlcnR5KQorT0JKQ19BVF9LRVlXT1JEKHBhY2thZ2UpCitPQkpDX0FUX0tFWVdPUkQocmVxdWlyZWQpCitPQkpDX0FUX0tFWVdPUkQob3B0aW9uYWwpCitPQkpDX0FUX0tFWVdPUkQoc3ludGhlc2l6ZSkKK09CSkNfQVRfS0VZV09SRChkeW5hbWljKQorT0JKQ19BVF9LRVlXT1JEKGltcG9ydCkKK09CSkNfQVRfS0VZV09SRChhdmFpbGFibGUpCiAKIC8vIFRPRE86IFdoYXQgdG8gZG8gYWJvdXQgY29udGV4dC1zZW5zaXRpdmUga2V5d29yZHMgbGlrZToKIC8vICAgICAgIGJ5Y29weS9ieXJlZi9pbi9pbm91dC9vbmV3YXkvb3V0PwpAQCAtODI4LDggKzgyNCw3IEBACiAKICN1bmRlZiBBTk5PVEFUSU9OCiAjdW5kZWYgVEVTVElOR19LRVlXT1JECi0jdW5kZWYgT0JKQzJfQVRfS0VZV09SRAotI3VuZGVmIE9CSkMxX0FUX0tFWVdPUkQKKyN1bmRlZiBPQkpDX0FUX0tFWVdPUkQKICN1bmRlZiBDWFhfS0VZV09SRF9PUEVSQVRPUgogI3VuZGVmIFBQS0VZV09SRAogI3VuZGVmIEFMSUFTCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9Ub2tlbktpbmRzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9Ub2tlbktpbmRzLmgKaW5kZXggZmI0YjUyNS4uMjY0YThlMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVG9rZW5LaW5kcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1Rva2VuS2luZHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFRva2VuS2luZHMuaCAtIEVudW0gdmFsdWVzIGZvciBDIFRva2VuIEtpbmRzIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KQEAgLTM5LDggKzM4LDcgQEAKIC8vLyBQcm92aWRlcyBhIG5hbWVzcGFjZSBmb3IgT2JqZWN0aXZlLUMga2V5d29yZHMgd2hpY2ggc3RhcnQgd2l0aAogLy8vIGFuICdAJy4KIGVudW0gT2JqQ0tleXdvcmRLaW5kIHsKLSNkZWZpbmUgT0JKQzFfQVRfS0VZV09SRChYKSBvYmpjXyMjWCwKLSNkZWZpbmUgT0JKQzJfQVRfS0VZV09SRChYKSBvYmpjXyMjWCwKKyNkZWZpbmUgT0JKQ19BVF9LRVlXT1JEKFgpIG9iamNfIyNYLAogI2luY2x1ZGUgImNsYW5nL0Jhc2ljL1Rva2VuS2luZHMuZGVmIgogICBOVU1fT0JKQ19LRVlXT1JEUwogfTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1R5cGVUcmFpdHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1R5cGVUcmFpdHMuaAppbmRleCBiZGI0MjY4Li43YzFiNTcxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9UeXBlVHJhaXRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVHlwZVRyYWl0cy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gVHlwZVRyYWl0cy5oIC0gQysrIFR5cGUgVHJhaXRzIFN1cHBvcnQgRW51bWVyYXRpb25zIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpAQCAtOTYsOSArOTUsMTUgQEAKICAgLy8vIE5hbWVzIGZvciB0aGUgImV4cHJlc3Npb24gb3IgdHlwZSIgdHJhaXRzLgogICBlbnVtIFVuYXJ5RXhwck9yVHlwZVRyYWl0IHsKICAgICBVRVRUX1NpemVPZiwKKyAgICAvLy8gVXNlZCBmb3IgQydzIF9BbGlnbm9mIGFuZCBDKysncyBhbGlnbm9mLgorICAgIC8vLyBfQWxpZ25vZiBhbmQgYWxpZ25vZiByZXR1cm4gdGhlIHJlcXVpcmVkIEFCSSBhbGlnbm1lbnQuCiAgICAgVUVUVF9BbGlnbk9mLAogICAgIFVFVFRfVmVjU3RlcCwKICAgICBVRVRUX09wZW5NUFJlcXVpcmVkU2ltZEFsaWduLAorICAgIC8vLyBVc2VkIGZvciBHQ0MncyBfX2FsaWdub2YuCisgICAgLy8vIF9fYWxpZ25vZiByZXR1cm5zIHRoZSBwcmVmZXJyZWQgYWxpZ25tZW50IG9mIGEgdHlwZSwgdGhlIGFsaWdubWVudAorICAgIC8vLyBjbGFuZyB3aWxsIGF0dGVtcHQgdG8gZ2l2ZSBhbiBvYmplY3Qgb2YgdGhlIHR5cGUgaWYgYWxsb3dlZCBieSBBQkkuCisgICAgVUVUVF9QcmVmZXJyZWRBbGlnbk9mLAogICB9OwogfQogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9WZXJzaW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9WZXJzaW9uLmgKaW5kZXggNmQ2MjVjNi4uMjg4MWQ4ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVmVyc2lvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1ZlcnNpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBWZXJzaW9uLmggLSBDbGFuZyBWZXJzaW9uIE51bWJlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1ZlcnNpb24uaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVmVyc2lvbi5pbmMKaW5kZXggZWJlMjdjNS4uNmJjZGE4ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVmVyc2lvbi5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVmVyc2lvbi5pbmMKQEAgLTEsNSArMSw1IEBACi0jZGVmaW5lIENMQU5HX1ZFUlNJT04gOC4wLjQKLSNkZWZpbmUgQ0xBTkdfVkVSU0lPTl9TVFJJTkcgIjguMC40IgotI2RlZmluZSBDTEFOR19WRVJTSU9OX01BSk9SIDgKKyNkZWZpbmUgQ0xBTkdfVkVSU0lPTiA5LjAuMworI2RlZmluZSBDTEFOR19WRVJTSU9OX1NUUklORyAiOS4wLjMiCisjZGVmaW5lIENMQU5HX1ZFUlNJT05fTUFKT1IgOQogI2RlZmluZSBDTEFOR19WRVJTSU9OX01JTk9SIDAKLSNkZWZpbmUgQ0xBTkdfVkVSU0lPTl9QQVRDSExFVkVMIDQKKyNkZWZpbmUgQ0xBTkdfVkVSU0lPTl9QQVRDSExFVkVMIDMKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1Zpc2liaWxpdHkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1Zpc2liaWxpdHkuaAppbmRleCBjNWFiNjI0Li41N2Q5NzU0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9WaXNpYmlsaXR5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvVmlzaWJpbGl0eS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gVmlzaWJpbGl0eS5oIC0gVmlzaWJpbGl0eSBlbnVtZXJhdGlvbiBhbmQgdXRpbGl0aWVzIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvWDg2VGFyZ2V0LmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL1g4NlRhcmdldC5kZWYKaW5kZXggZDJkMjU0MC4uYzY3MTlmZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvWDg2VGFyZ2V0LmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9YODZUYXJnZXQuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gWDg2VGFyZ2V0LmRlZiAtIFg4NiBGZWF0dXJlL1Byb2Nlc3NvciBEYXRhYmFzZSAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNTQsNiArMTUzLDEwIEBACiBQUk9DX1dJVEhfRkVBVChTa3lsYWtlU2VydmVyLCAic2t5bGFrZS1hdng1MTIiLCBQUk9DXzY0X0JJVCwgRkVBVFVSRV9BVlg1MTJGKQogUFJPQ19BTElBUyhTa3lsYWtlU2VydmVyLCAic2t4IikKIAorLy8vIFxuYW1lIENhc2NhZGVsYWtlIFNlcnZlcgorLy8vIENhc2NhZGVsYWtlIFNlcnZlciBtaWNyb2FyY2hpdGVjdHVyZSBiYXNlZCBwcm9jZXNzb3JzLgorUFJPQ19XSVRIX0ZFQVQoQ2FzY2FkZWxha2UsICJjYXNjYWRlbGFrZSIsIFBST0NfNjRfQklULCBGRUFUVVJFX0FWWDUxMlZOTkkpCisKIC8vLyBcbmFtZSBDYW5ub25sYWtlIENsaWVudAogLy8vIENhbm5vbmxha2UgY2xpZW50IG1pY3JvYXJjaGl0ZWN0dXJlIGJhc2VkIHByb2Nlc3NvcnMuCiBQUk9DX1dJVEhfRkVBVChDYW5ub25sYWtlLCAiY2Fubm9ubGFrZSIsIFBST0NfNjRfQklULCBGRUFUVVJFX0FWWDUxMlZCTUkpCkBAIC0yODMsNiArMjg2LDExIEBACiBGRUFUVVJFKEZFQVRVUkVfQVZYNTEyNFZOTklXKQogRkVBVFVSRShGRUFUVVJFX0FWWDUxMjRGTUFQUykKIEZFQVRVUkUoRkVBVFVSRV9BVlg1MTJWUE9QQ05URFEpCitGRUFUVVJFKEZFQVRVUkVfQVZYNTEyVkJNSTIpCitGRUFUVVJFKEZFQVRVUkVfR0ZOSSkKK0ZFQVRVUkUoRkVBVFVSRV9WUENMTVVMUURRKQorRkVBVFVSRShGRUFUVVJFX0FWWDUxMlZOTkkpCitGRUFUVVJFKEZFQVRVUkVfQVZYNTEyQklUQUxHKQogCiAKIC8vIEZJWE1FOiBXaGVuIGNvbW1lbnRlZCBvdXQgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZCBpbiBMTFZNLCBlbmFibGUgdGhlbSBoZXJlLgpAQCAtMjkyLDcgKzMwMCw3IEBACiBDUFVfU1BFQ0lGSUMoInBlbnRpdW1fbW14IiwgJ0QnLCAiK21teCIpCiBDUFVfU1BFQ0lGSUMoInBlbnRpdW1faWkiLCAnRScsICIrY21vdiwrbW14IikKIENQVV9TUEVDSUZJQygicGVudGl1bV9paWkiLCAnSCcsICIrY21vdiwrbW14LCtzc2UiKQotQ1BVX1NQRUNJRklDKCJwZW50aXVtX2lpaV9ub194bW1fcmVncyIsICdIJywiK2Ntb3YsK3NzZSIpCitDUFVfU1BFQ0lGSUNfQUxJQVMoInBlbnRpdW1faWlpX25vX3htbV9yZWdzIiwgInBlbnRpdW1faWlpIikKIENQVV9TUEVDSUZJQygicGVudGl1bV80IiwgJ0onLCAiK2Ntb3YsK21teCwrc3NlLCtzc2UyIikKIENQVV9TUEVDSUZJQygicGVudGl1bV9tIiwgJ0snLCAiK2Ntb3YsK21teCwrc3NlLCtzc2UyIikKIENQVV9TUEVDSUZJQygicGVudGl1bV80X3NzZTMiLCAnTCcsICIrY21vdiwrbW14LCtzc2UsK3NzZTIsK3NzZTMiKQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvWFJheUluc3RyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9YUmF5SW5zdHIuaAppbmRleCA2ZWZlZmNiLi40OGU4ODg0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9YUmF5SW5zdHIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9YUmF5SW5zdHIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFhSYXlJbnN0ci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvWFJheUxpc3RzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9YUmF5TGlzdHMuaAppbmRleCAyNDRiMWQ1Li5jZjQ2NGY5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9YUmF5TGlzdHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9YUmF5TGlzdHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFhSYXlMaXN0cy5oIC0gWFJheSBhdXRvbWF0aWMgYXR0cmlidXRpb24gLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvYXJtX25lb24uaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQmFzaWMvYXJtX25lb24uaW5jCmluZGV4IGE0ODJlNjMuLmQ2MmMxYzYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Jhc2ljL2FybV9uZW9uLmluYworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9CYXNpYy9hcm1fbmVvbi5pbmMKQEAgLTI2NCw2ICsyNjQsMTQgQEAKIEJVSUxUSU4oX19idWlsdGluX25lb25fdmZtYXFfdiwgIlYxNlNjVjE2U2NWMTZTY1YxNlNjaSIsICJuIikKIEJVSUxUSU4oX19idWlsdGluX25lb25fdmZtYXNfbGFuZV9mMzIsICJmZmZWMmZJaSIsICJuIikKIEJVSUxUSU4oX19idWlsdGluX25lb25fdmZtYXNfbGFuZXFfZjMyLCAiZmZmVjRmSWkiLCAibiIpCitCVUlMVElOKF9fYnVpbHRpbl9uZW9uX3ZmbWxhbF9oaWdoX3YsICJWMmZWMmZWOFNjVjhTY2kiLCAibiIpCitCVUlMVElOKF9fYnVpbHRpbl9uZW9uX3ZmbWxhbF9sb3dfdiwgIlYyZlYyZlY4U2NWOFNjaSIsICJuIikKK0JVSUxUSU4oX19idWlsdGluX25lb25fdmZtbGFscV9oaWdoX3YsICJWNGZWNGZWMTZTY1YxNlNjaSIsICJuIikKK0JVSUxUSU4oX19idWlsdGluX25lb25fdmZtbGFscV9sb3dfdiwgIlY0ZlY0ZlYxNlNjVjE2U2NpIiwgIm4iKQorQlVJTFRJTihfX2J1aWx0aW5fbmVvbl92Zm1sc2xfaGlnaF92LCAiVjJmVjJmVjhTY1Y4U2NpIiwgIm4iKQorQlVJTFRJTihfX2J1aWx0aW5fbmVvbl92Zm1sc2xfbG93X3YsICJWMmZWMmZWOFNjVjhTY2kiLCAibiIpCitCVUlMVElOKF9fYnVpbHRpbl9uZW9uX3ZmbWxzbHFfaGlnaF92LCAiVjRmVjRmVjE2U2NWMTZTY2kiLCAibiIpCitCVUlMVElOKF9fYnVpbHRpbl9uZW9uX3ZmbWxzbHFfbG93X3YsICJWNGZWNGZWMTZTY1YxNlNjaSIsICJuIikKIEJVSUxUSU4oX19idWlsdGluX25lb25fdmdldF9sYW5lX2YzMiwgImZWMmZJaSIsICJuIikKIEJVSUxUSU4oX19idWlsdGluX25lb25fdmdldF9sYW5lX2Y2NCwgImRWMWRJaSIsICJuIikKIEJVSUxUSU4oX19idWlsdGluX25lb25fdmdldF9sYW5lX2kxNiwgIlVzVjRzSWkiLCAibiIpCkBAIC04NDIsNiArODUwLDE0IEBACiBjYXNlIE5FT046OkJJX19idWlsdGluX25lb25fdmZtYXFfbGFuZV92OiBtYXNrID0gMHg3MDAwMDAwMDAwMFVMTDsgYnJlYWs7CiBjYXNlIE5FT046OkJJX19idWlsdGluX25lb25fdmZtYXFfbGFuZXFfdjogbWFzayA9IDB4NzAwMDAwMDAwMDBVTEw7IGJyZWFrOwogY2FzZSBORU9OOjpCSV9fYnVpbHRpbl9uZW9uX3ZmbWFxX3Y6IG1hc2sgPSAweDcwMDAwMDAwMDAwVUxMOyBicmVhazsKK2Nhc2UgTkVPTjo6QklfX2J1aWx0aW5fbmVvbl92Zm1sYWxfaGlnaF92OiBtYXNrID0gMHgyMDBVTEw7IGJyZWFrOworY2FzZSBORU9OOjpCSV9fYnVpbHRpbl9uZW9uX3ZmbWxhbF9sb3dfdjogbWFzayA9IDB4MjAwVUxMOyBicmVhazsKK2Nhc2UgTkVPTjo6QklfX2J1aWx0aW5fbmVvbl92Zm1sYWxxX2hpZ2hfdjogbWFzayA9IDB4MjAwMDAwMDAwMDBVTEw7IGJyZWFrOworY2FzZSBORU9OOjpCSV9fYnVpbHRpbl9uZW9uX3ZmbWxhbHFfbG93X3Y6IG1hc2sgPSAweDIwMDAwMDAwMDAwVUxMOyBicmVhazsKK2Nhc2UgTkVPTjo6QklfX2J1aWx0aW5fbmVvbl92Zm1sc2xfaGlnaF92OiBtYXNrID0gMHgyMDBVTEw7IGJyZWFrOworY2FzZSBORU9OOjpCSV9fYnVpbHRpbl9uZW9uX3ZmbWxzbF9sb3dfdjogbWFzayA9IDB4MjAwVUxMOyBicmVhazsKK2Nhc2UgTkVPTjo6QklfX2J1aWx0aW5fbmVvbl92Zm1sc2xxX2hpZ2hfdjogbWFzayA9IDB4MjAwMDAwMDAwMDBVTEw7IGJyZWFrOworY2FzZSBORU9OOjpCSV9fYnVpbHRpbl9uZW9uX3ZmbWxzbHFfbG93X3Y6IG1hc2sgPSAweDIwMDAwMDAwMDAwVUxMOyBicmVhazsKIGNhc2UgTkVPTjo6QklfX2J1aWx0aW5fbmVvbl92aGFkZF92OiBtYXNrID0gMHg3MDAwN1VMTDsgYnJlYWs7CiBjYXNlIE5FT046OkJJX19idWlsdGluX25lb25fdmhhZGRxX3Y6IG1hc2sgPSAweDcwMDA3MDAwMDAwMDBVTEw7IGJyZWFrOwogY2FzZSBORU9OOjpCSV9fYnVpbHRpbl9uZW9uX3Zoc3ViX3Y6IG1hc2sgPSAweDcwMDA3VUxMOyBicmVhazsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0NvZGVHZW4vQmFja2VuZFV0aWwuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0NvZGVHZW4vQmFja2VuZFV0aWwuaAppbmRleCAzZDEyMjFhLi4wMWIxZjViIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Db2RlR2VuL0JhY2tlbmRVdGlsLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29kZUdlbi9CYWNrZW5kVXRpbC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQmFja2VuZFV0aWwuaCAtIExMVk0gQmFja2VuZCBVdGlsaXRpZXMgLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29kZUdlbi9DR0Z1bmN0aW9uSW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29kZUdlbi9DR0Z1bmN0aW9uSW5mby5oCmluZGV4IDU4ZDFmMGQuLjUyMTU3ZjAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0NvZGVHZW4vQ0dGdW5jdGlvbkluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Db2RlR2VuL0NHRnVuY3Rpb25JbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09LS0gQ0dGdW5jdGlvbkluZm8uaCAtIFJlcHJlc2VudGF0aW9uIG9mIGZ1bmN0aW9uIGFyZ3VtZW50L3JldHVybiB0eXBlcyAtPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTQ0MSwzMSArNDQwLDMwIEBACiAgIC8vLwogICAvLy8gSWYgRkQgaXMgbm90IG51bGwsIHRoaXMgd2lsbCBjb25zaWRlciBwYXNzX29iamVjdF9zaXplIHBhcmFtcyBpbiBGRC4KICAgc3RhdGljIFJlcXVpcmVkQXJncyBmb3JQcm90b3R5cGVQbHVzKGNvbnN0IEZ1bmN0aW9uUHJvdG9UeXBlICpwcm90b3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhZGRpdGlvbmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25EZWNsICpGRCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgYWRkaXRpb25hbCkgewogICAgIGlmICghcHJvdG90eXBlLT5pc1ZhcmlhZGljKCkpIHJldHVybiBBbGw7Ci0gICAgaWYgKEZEKQotICAgICAgYWRkaXRpb25hbCArPQotICAgICAgICAgIGxsdm06OmNvdW50X2lmKEZELT5wYXJhbWV0ZXJzKCksIFtdKGNvbnN0IFBhcm1WYXJEZWNsICpQVkQpIHsKLSAgICAgICAgICAgIHJldHVybiBQVkQtPmhhc0F0dHI8UGFzc09iamVjdFNpemVBdHRyPigpOworCisgICAgaWYgKHByb3RvdHlwZS0+aGFzRXh0UGFyYW1ldGVySW5mb3MoKSkKKyAgICAgIGFkZGl0aW9uYWwgKz0gbGx2bTo6Y291bnRfaWYoCisgICAgICAgICAgcHJvdG90eXBlLT5nZXRFeHRQYXJhbWV0ZXJJbmZvcygpLAorICAgICAgICAgIFtdKGNvbnN0IEZ1bmN0aW9uUHJvdG9UeXBlOjpFeHRQYXJhbWV0ZXJJbmZvICZFeHRJbmZvKSB7CisgICAgICAgICAgICByZXR1cm4gRXh0SW5mby5oYXNQYXNzT2JqZWN0U2l6ZSgpOwogICAgICAgICAgIH0pOworCiAgICAgcmV0dXJuIFJlcXVpcmVkQXJncyhwcm90b3R5cGUtPmdldE51bVBhcmFtcygpICsgYWRkaXRpb25hbCk7CiAgIH0KIAotICBzdGF0aWMgUmVxdWlyZWRBcmdzIGZvclByb3RvdHlwZShjb25zdCBGdW5jdGlvblByb3RvVHlwZSAqcHJvdG90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbkRlY2wgKkZEKSB7Ci0gICAgcmV0dXJuIGZvclByb3RvdHlwZVBsdXMocHJvdG90eXBlLCAwLCBGRCk7Ci0gIH0KLQotICBzdGF0aWMgUmVxdWlyZWRBcmdzIGZvclByb3RvdHlwZShDYW5RdWFsPEZ1bmN0aW9uUHJvdG9UeXBlPiBwcm90b3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uRGVjbCAqRkQpIHsKLSAgICByZXR1cm4gZm9yUHJvdG90eXBlKHByb3RvdHlwZS5nZXRUeXBlUHRyKCksIEZEKTsKLSAgfQotCiAgIHN0YXRpYyBSZXF1aXJlZEFyZ3MgZm9yUHJvdG90eXBlUGx1cyhDYW5RdWFsPEZ1bmN0aW9uUHJvdG9UeXBlPiBwcm90b3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhZGRpdGlvbmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25EZWNsICpGRCkgewotICAgIHJldHVybiBmb3JQcm90b3R5cGVQbHVzKHByb3RvdHlwZS5nZXRUeXBlUHRyKCksIGFkZGl0aW9uYWwsIEZEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGFkZGl0aW9uYWwpIHsKKyAgICByZXR1cm4gZm9yUHJvdG90eXBlUGx1cyhwcm90b3R5cGUuZ2V0VHlwZVB0cigpLCBhZGRpdGlvbmFsKTsKKyAgfQorCisgIHN0YXRpYyBSZXF1aXJlZEFyZ3MgZm9yUHJvdG90eXBlKGNvbnN0IEZ1bmN0aW9uUHJvdG9UeXBlICpwcm90b3R5cGUpIHsKKyAgICByZXR1cm4gZm9yUHJvdG90eXBlUGx1cyhwcm90b3R5cGUsIDApOworICB9CisKKyAgc3RhdGljIFJlcXVpcmVkQXJncyBmb3JQcm90b3R5cGUoQ2FuUXVhbDxGdW5jdGlvblByb3RvVHlwZT4gcHJvdG90eXBlKSB7CisgICAgcmV0dXJuIGZvclByb3RvdHlwZVBsdXMocHJvdG90eXBlLmdldFR5cGVQdHIoKSwgMCk7CiAgIH0KIAogICBib29sIGFsbG93c09wdGlvbmFsQXJncygpIGNvbnN0IHsgcmV0dXJuIE51bVJlcXVpcmVkICE9IH4wVTsgfQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29kZUdlbi9Db2RlR2VuQUJJVHlwZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0NvZGVHZW4vQ29kZUdlbkFCSVR5cGVzLmgKaW5kZXggNTM2MTlmYS4uZmViYjI1YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29kZUdlbi9Db2RlR2VuQUJJVHlwZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Db2RlR2VuL0NvZGVHZW5BQklUeXBlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0tLS0gQ29kZUdlbkFCSVR5cGVzLmggLSBDb252ZXJ0IENsYW5nIHR5cGVzIHRvIExMVk0gdHlwZXMgZm9yIEFCSSAtLS0tLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC01NSw4ICs1NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSByZWNlaXZlclR5cGUpOwogCiBjb25zdCBDR0Z1bmN0aW9uSW5mbyAmYXJyYW5nZUZyZWVGdW5jdGlvblR5cGUoQ29kZUdlbk1vZHVsZSAmQ0dNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhblF1YWw8RnVuY3Rpb25Qcm90b1R5cGU+IFR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uRGVjbCAqRkQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhblF1YWw8RnVuY3Rpb25Qcm90b1R5cGU+IFR5KTsKIAogY29uc3QgQ0dGdW5jdGlvbkluZm8gJmFycmFuZ2VGcmVlRnVuY3Rpb25UeXBlKENvZGVHZW5Nb2R1bGUgJkNHTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5RdWFsPEZ1bmN0aW9uTm9Qcm90b1R5cGU+IFR5KTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0NvZGVHZW4vQ29kZUdlbkFjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29kZUdlbi9Db2RlR2VuQWN0aW9uLmgKaW5kZXggNWExOGE5ZC4uMWRiOTA0ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29kZUdlbi9Db2RlR2VuQWN0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29kZUdlbi9Db2RlR2VuQWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBDb2RlR2VuQWN0aW9uLmggLSBMTFZNIENvZGUgR2VuZXJhdGlvbiBGcm9udGVuZCBBY3Rpb24gLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Db2RlR2VuL0NvbnN0YW50SW5pdEJ1aWxkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0NvZGVHZW4vQ29uc3RhbnRJbml0QnVpbGRlci5oCmluZGV4IGYyZTc4YWQuLmZkMDdlOTEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0NvZGVHZW4vQ29uc3RhbnRJbml0QnVpbGRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0NvZGVHZW4vQ29uc3RhbnRJbml0QnVpbGRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvbnN0YW50SW5pdEJ1aWxkZXIuaCAtIEJ1aWxkZXIgZm9yIExMVk0gSVIgY29uc3RhbnRzIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Db2RlR2VuL0NvbnN0YW50SW5pdEZ1dHVyZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29kZUdlbi9Db25zdGFudEluaXRGdXR1cmUuaAppbmRleCBmMWE3ZTIyLi5iMDhmNTI4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Db2RlR2VuL0NvbnN0YW50SW5pdEZ1dHVyZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0NvZGVHZW4vQ29uc3RhbnRJbml0RnV0dXJlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29uc3RhbnRJbml0RnV0dXJlLmggLSAiRnV0dXJlIiBjb25zdGFudCBpbml0aWFsaXplcnMgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0NvZGVHZW4vTW9kdWxlQnVpbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29kZUdlbi9Nb2R1bGVCdWlsZGVyLmgKaW5kZXggZTExMGY2Zi4uZjlkMDU2ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29kZUdlbi9Nb2R1bGVCdWlsZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29kZUdlbi9Nb2R1bGVCdWlsZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBDb2RlR2VuL01vZHVsZUJ1aWxkZXIuaCAtIEJ1aWxkIExMVk0gZnJvbSBBU1RzIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0NvZGVHZW4vT2JqZWN0RmlsZVBDSENvbnRhaW5lck9wZXJhdGlvbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0NvZGVHZW4vT2JqZWN0RmlsZVBDSENvbnRhaW5lck9wZXJhdGlvbnMuaAppbmRleCA2N2JlNjcxLi44ODIxY2Q3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Db2RlR2VuL09iamVjdEZpbGVQQ0hDb250YWluZXJPcGVyYXRpb25zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29kZUdlbi9PYmplY3RGaWxlUENIQ29udGFpbmVyT3BlcmF0aW9ucy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBDb2RlR2VuL09iamVjdEZpbGVQQ0hDb250YWluZXJPcGVyYXRpb25zLmggLSAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29kZUdlbi9Td2lmdENhbGxpbmdDb252LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Db2RlR2VuL1N3aWZ0Q2FsbGluZ0NvbnYuaAppbmRleCA0NWIzMTQ1Li4yYzVlOWE2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Db2RlR2VuL1N3aWZ0Q2FsbGluZ0NvbnYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Db2RlR2VuL1N3aWZ0Q2FsbGluZ0NvbnYuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tLSBTd2lmdENhbGxpbmdDb252LmggLSBTd2lmdCBBQkkgbG93ZXJpbmcgLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTE0LDYgKzExMyw5IEBACiAgIHZvaWQgYWRkTGVnYWxUeXBlZERhdGEobGx2bTo6VHlwZSAqdHlwZSwgQ2hhclVuaXRzIGJlZ2luLCBDaGFyVW5pdHMgZW5kKTsKICAgdm9pZCBhZGRFbnRyeShsbHZtOjpUeXBlICp0eXBlLCBDaGFyVW5pdHMgYmVnaW4sIENoYXJVbml0cyBlbmQpOwogICB2b2lkIHNwbGl0VmVjdG9yRW50cnkodW5zaWduZWQgaW5kZXgpOworICBzdGF0aWMgYm9vbCBzaG91bGRNZXJnZUVudHJpZXMoY29uc3QgU3RvcmFnZUVudHJ5ICZmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0b3JhZ2VFbnRyeSAmc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhclVuaXRzIGNodW5rU2l6ZSk7CiB9OwogCiAvLy8gU2hvdWxkIGFuIGFnZ3JlZ2F0ZSB3aGljaCBleHBhbmRzIHRvIHRoZSBnaXZlbiB0eXBlIHNlcXVlbmNlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Db25maWcvY29uZmlnLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Db25maWcvY29uZmlnLmgKaW5kZXggZTJlNDVjZS4uY2ZmODRiMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ29uZmlnL2NvbmZpZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0NvbmZpZy9jb25maWcuaApAQCAtNiw3ICs2LDcgQEAKICNkZWZpbmUgQ0xBTkdfQ09ORklHX0gKIAogLyogQnVnIHJlcG9ydCBVUkwuICovCi0jZGVmaW5lIEJVR19SRVBPUlRfVVJMICJodHRwczovL2J1Z3MubGx2bS5vcmcvIgorI2RlZmluZSBCVUdfUkVQT1JUX1VSTCAiaHR0cHM6Ly9naXRodWIuY29tL2FuZHJvaWQtbmRrL25kay9pc3N1ZXMiCiAKIC8qIERlZmF1bHQgbGlua2VyIHRvIHVzZS4gKi8KICNkZWZpbmUgQ0xBTkdfREVGQVVMVF9MSU5LRVIgIiIKQEAgLTYxLDcgKzYxLDcgQEAKICNkZWZpbmUgQ0xBTkdfSEFWRV9STElNSVRTIDEKIAogLyogVGhlIExMVk0gcHJvZHVjdCBuYW1lIGFuZCB2ZXJzaW9uICovCi0jZGVmaW5lIEJBQ0tFTkRfUEFDS0FHRV9TVFJJTkcgIkxMVk0gOC4wLjRzdm4iCisjZGVmaW5lIEJBQ0tFTkRfUEFDS0FHRV9TVFJJTkcgIkxMVk0gOS4wLjNzdm4iCiAKIC8qIExpbmtlciB2ZXJzaW9uIGRldGVjdGVkIGF0IGNvbXBpbGUgdGltZS4gKi8KIC8qICN1bmRlZiBIT1NUX0xJTktfVkVSU0lPTiAqLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ3Jvc3NUVS9Dcm9zc1RVRGlhZ25vc3RpYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ3Jvc3NUVS9Dcm9zc1RVRGlhZ25vc3RpYy5oCmluZGV4IGRhZDM4MzAuLjk1YTY0OGEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Nyb3NzVFUvQ3Jvc3NUVURpYWdub3N0aWMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Dcm9zc1RVL0Nyb3NzVFVEaWFnbm9zdGljLmgKQEAgLTEsMjkgKzEsMTQgQEAKIC8vPT09LS0tIENyb3NzVFVEaWFnbm9zdGljLmggLSBEaWFnbm9zdGljcyBmb3IgQ3Jvc3MgVFUgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKICNpZm5kZWYgTExWTV9DTEFOR19DUk9TU1RVX0NST1NTVFVESUFHTk9TVElDX0gKICNkZWZpbmUgTExWTV9DTEFOR19DUk9TU1RVX0NST1NTVFVESUFHTk9TVElDX0gKIAotI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWMuaCIKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljQ3Jvc3NUVS5oIgogCi1uYW1lc3BhY2UgY2xhbmcgewotbmFtZXNwYWNlIGRpYWcgewotZW51bSB7Ci0jZGVmaW5lIERJQUcoRU5VTSwgRkxBR1MsIERFRkFVTFRfTUFQUElORywgREVTQywgR1JPVVAsIFNGSU5BRSwgTk9XRVJST1IsICAgICAgXAotICAgICAgICAgICAgIFNIT1dJTlNZU0hFQURFUiwgQ0FURUdPUlkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgRU5VTSwKLSNkZWZpbmUgQ1JPU1NUVVNUQVJUCi0jaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0Nyb3NzVFVLaW5kcy5pbmMiCi0jdW5kZWYgRElBRwotICBOVU1fQlVJTFRJTl9DUk9TU1RVX0RJQUdOT1NUSUNTCi19OwotfSAvLyBlbmQgbmFtZXNwYWNlIGRpYWcKLX0gLy8gZW5kIG5hbWVzcGFjZSBjbGFuZwotCi0jZW5kaWYgLy8gTExWTV9DTEFOR19GUk9OVEVORF9GUk9OVEVORERJQUdOT1NUSUNfSAorI2VuZGlmIC8vIExMVk1fQ0xBTkdfQ1JPU1NUVV9DUk9TU1RVRElBR05PU1RJQ19ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Dcm9zc1RVL0Nyb3NzVHJhbnNsYXRpb25Vbml0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Dcm9zc1RVL0Nyb3NzVHJhbnNsYXRpb25Vbml0LmgKaW5kZXggMDQxZjFhOC4uNTA3Y2YyOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvQ3Jvc3NUVS9Dcm9zc1RyYW5zbGF0aW9uVW5pdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Nyb3NzVFUvQ3Jvc3NUcmFuc2xhdGlvblVuaXQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIENyb3NzVHJhbnNsYXRpb25Vbml0LmggLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTUsNiArMTQsNyBAQAogI2lmbmRlZiBMTFZNX0NMQU5HX0NST1NTVFVfQ1JPU1NUUkFOU0xBVElPTlVOSVRfSAogI2RlZmluZSBMTFZNX0NMQU5HX0NST1NTVFVfQ1JPU1NUUkFOU0xBVElPTlVOSVRfSAogCisjaW5jbHVkZSAiY2xhbmcvQVNUL0FTVEltcG9ydGVyTG9va3VwVGFibGUuaCIKICNpbmNsdWRlICJjbGFuZy9CYXNpYy9MTFZNLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvRGVuc2VNYXAuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9TbWFsbFB0clNldC5oIgpAQCAtNDEsNyArNDEsOSBAQAogICBtaXNzaW5nX2RlZmluaXRpb24sCiAgIGZhaWxlZF9pbXBvcnQsCiAgIGZhaWxlZF90b19nZXRfZXh0ZXJuYWxfYXN0LAotICBmYWlsZWRfdG9fZ2VuZXJhdGVfdXNyCisgIGZhaWxlZF90b19nZW5lcmF0ZV91c3IsCisgIHRyaXBsZV9taXNtYXRjaCwKKyAgbGFuZ19taXNtYXRjaAogfTsKIAogY2xhc3MgSW5kZXhFcnJvciA6IHB1YmxpYyBsbHZtOjpFcnJvckluZm88SW5kZXhFcnJvcj4gewpAQCAtNTAsMTYgKzUyLDI1IEBACiAgIEluZGV4RXJyb3IoaW5kZXhfZXJyb3JfY29kZSBDKSA6IENvZGUoQyksIExpbmVObygwKSB7fQogICBJbmRleEVycm9yKGluZGV4X2Vycm9yX2NvZGUgQywgc3RkOjpzdHJpbmcgRmlsZU5hbWUsIGludCBMaW5lTm8gPSAwKQogICAgICAgOiBDb2RlKEMpLCBGaWxlTmFtZShzdGQ6Om1vdmUoRmlsZU5hbWUpKSwgTGluZU5vKExpbmVObykge30KKyAgSW5kZXhFcnJvcihpbmRleF9lcnJvcl9jb2RlIEMsIHN0ZDo6c3RyaW5nIEZpbGVOYW1lLCBzdGQ6OnN0cmluZyBUcmlwbGVUb05hbWUsCisgICAgICAgICAgICAgc3RkOjpzdHJpbmcgVHJpcGxlRnJvbU5hbWUpCisgICAgICA6IENvZGUoQyksIEZpbGVOYW1lKHN0ZDo6bW92ZShGaWxlTmFtZSkpLAorICAgICAgICBUcmlwbGVUb05hbWUoc3RkOjptb3ZlKFRyaXBsZVRvTmFtZSkpLAorICAgICAgICBUcmlwbGVGcm9tTmFtZShzdGQ6Om1vdmUoVHJpcGxlRnJvbU5hbWUpKSB7fQogICB2b2lkIGxvZyhyYXdfb3N0cmVhbSAmT1MpIGNvbnN0IG92ZXJyaWRlOwogICBzdGQ6OmVycm9yX2NvZGUgY29udmVydFRvRXJyb3JDb2RlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgIGluZGV4X2Vycm9yX2NvZGUgZ2V0Q29kZSgpIGNvbnN0IHsgcmV0dXJuIENvZGU7IH0KICAgaW50IGdldExpbmVOdW0oKSBjb25zdCB7IHJldHVybiBMaW5lTm87IH0KICAgc3RkOjpzdHJpbmcgZ2V0RmlsZU5hbWUoKSBjb25zdCB7IHJldHVybiBGaWxlTmFtZTsgfQorICBzdGQ6OnN0cmluZyBnZXRUcmlwbGVUb05hbWUoKSBjb25zdCB7IHJldHVybiBUcmlwbGVUb05hbWU7IH0KKyAgc3RkOjpzdHJpbmcgZ2V0VHJpcGxlRnJvbU5hbWUoKSBjb25zdCB7IHJldHVybiBUcmlwbGVGcm9tTmFtZTsgfQogCiBwcml2YXRlOgogICBpbmRleF9lcnJvcl9jb2RlIENvZGU7CiAgIHN0ZDo6c3RyaW5nIEZpbGVOYW1lOwogICBpbnQgTGluZU5vOworICBzdGQ6OnN0cmluZyBUcmlwbGVUb05hbWU7CisgIHN0ZDo6c3RyaW5nIFRyaXBsZUZyb21OYW1lOwogfTsKIAogLy8vIFRoaXMgZnVuY3Rpb24gcGFyc2VzIGFuIGluZGV4IGZpbGUgdGhhdCBkZXRlcm1pbmVzIHdoaWNoCkBAIC03OCwxMSArODksMTEgQEAKIC8vLyBUaGlzIGNsYXNzIGlzIHVzZWQgZm9yIHRvb2xzIHRoYXQgcmVxdWlyZXMgY3Jvc3MgdHJhbnNsYXRpb24KIC8vLyAgICAgICAgdW5pdCBjYXBhYmlsaXR5LgogLy8vCi0vLy8gVGhpcyBjbGFzcyBjYW4gbG9hZCBmdW5jdGlvbiBkZWZpbml0aW9ucyBmcm9tIGV4dGVybmFsIEFTVCBmaWxlcy4KKy8vLyBUaGlzIGNsYXNzIGNhbiBsb2FkIGRlZmluaXRpb25zIGZyb20gZXh0ZXJuYWwgQVNUIGZpbGVzLgogLy8vIFRoZSBsb2FkZWQgZGVmaW5pdGlvbiB3aWxsIGJlIG1lcmdlZCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBBU1QgdXNpbmcgdGhlCiAvLy8gQVNUIEltcG9ydGVyLgogLy8vIEluIG9yZGVyIHRvIHVzZSB0aGlzIGNsYXNzLCBhbiBpbmRleCBmaWxlIGlzIHJlcXVpcmVkIHRoYXQgZGVzY3JpYmVzCi0vLy8gdGhlIGxvY2F0aW9ucyBvZiB0aGUgQVNUIGZpbGVzIGZvciBlYWNoIGZ1bmN0aW9uIGRlZmluaXRpb24uCisvLy8gdGhlIGxvY2F0aW9ucyBvZiB0aGUgQVNUIGZpbGVzIGZvciBlYWNoIGRlZmluaXRpb24uCiAvLy8KIC8vLyBOb3RlIHRoYXQgdGhpcyBjbGFzcyBhbHNvIGltcGxlbWVudHMgY2FjaGluZy4KIGNsYXNzIENyb3NzVHJhbnNsYXRpb25Vbml0Q29udGV4dCB7CkBAIC0xMDgsNyArMTE5LDcgQEAKICAgLy8vIE5vdGUgdGhhdCB0aGUgQVNUIGZpbGVzIHNob3VsZCBhbHNvIGJlIGluIHRoZSBccCBDcm9zc1RVRGlyLgogICBsbHZtOjpFeHBlY3RlZDxjb25zdCBGdW5jdGlvbkRlY2wgKj4KICAgZ2V0Q3Jvc3NUVURlZmluaXRpb24oY29uc3QgRnVuY3Rpb25EZWNsICpGRCwgU3RyaW5nUmVmIENyb3NzVFVEaXIsCi0gICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1JlZiBJbmRleE5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgSW5kZXhOYW1lLCBib29sIERpc3BsYXlDVFVQcm9ncmVzcyA9IGZhbHNlKTsKIAogICAvLy8gVGhpcyBmdW5jdGlvbiBsb2FkcyBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZnJvbSBhbiBleHRlcm5hbCBBU1QKICAgLy8vICAgICAgICBmaWxlLgpAQCAtMTE4LDEzICsxMjksMTUgQEAKICAgLy8vIFxwIEluZGV4TmFtZS4gSW4gY2FzZSB0aGUgZGVjbGFyYXRpb24gaXMgZm91bmQgaW4gdGhlIGluZGV4IHRoZQogICAvLy8gY29ycmVzcG9uZGluZyBBU1QgZmlsZSB3aWxsIGJlIGxvYWRlZC4KICAgLy8vCi0gIC8vLyBccmV0dXJuIFJldHVybnMgYW4gQVNUVW5pdCB0aGF0IGNvbnRhaW5zIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBsb29rZWQgdXAKLSAgLy8vIGZ1bmN0aW9uLgorICAvLy8gXHJldHVybiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgQVNUVW5pdCB0aGF0IGNvbnRhaW5zIHRoZSBkZWZpbml0aW9uIG9mCisgIC8vLyB0aGUgbG9va2VkIHVwIGZ1bmN0aW9uIG9yIGFuIEVycm9yLgorICAvLy8gVGhlIHJldHVybmVkIHBvaW50ZXIgaXMgbmV2ZXIgYSBudWxscHRyLgogICAvLy8KICAgLy8vIE5vdGUgdGhhdCB0aGUgQVNUIGZpbGVzIHNob3VsZCBhbHNvIGJlIGluIHRoZSBccCBDcm9zc1RVRGlyLgogICBsbHZtOjpFeHBlY3RlZDxBU1RVbml0ICo+IGxvYWRFeHRlcm5hbEFTVChTdHJpbmdSZWYgTG9va3VwTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nUmVmIENyb3NzVFVEaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1JlZiBJbmRleE5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgSW5kZXhOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIERpc3BsYXlDVFVQcm9ncmVzcyA9IGZhbHNlKTsKIAogICAvLy8gVGhpcyBmdW5jdGlvbiBtZXJnZXMgYSBkZWZpbml0aW9uIGZyb20gYSBzZXBhcmF0ZSBBU1QgVW5pdCBpbnRvCiAgIC8vLyAgICAgICAgdGhlIGN1cnJlbnQgb25lIHdoaWNoIHdhcyBjcmVhdGVkIGJ5IHRoZSBjb21waWxlciBpbnN0YW5jZSB0aGF0CkBAIC0xNDAsNiArMTUzLDcgQEAKICAgdm9pZCBlbWl0Q3Jvc3NUVURpYWdub3N0aWNzKGNvbnN0IEluZGV4RXJyb3IgJklFKTsKIAogcHJpdmF0ZToKKyAgdm9pZCBsYXp5SW5pdExvb2t1cFRhYmxlKFRyYW5zbGF0aW9uVW5pdERlY2wgKlRvVFUpOwogICBBU1RJbXBvcnRlciAmZ2V0T3JDcmVhdGVBU1RJbXBvcnRlcihBU1RDb250ZXh0ICZGcm9tKTsKICAgY29uc3QgRnVuY3Rpb25EZWNsICpmaW5kRnVuY3Rpb25JbkRlY2xDb250ZXh0KGNvbnN0IERlY2xDb250ZXh0ICpEQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1JlZiBMb29rdXBGbk5hbWUpOwpAQCAtMTUxLDYgKzE2NSw3IEBACiAgICAgICBBU1RVbml0SW1wb3J0ZXJNYXA7CiAgIENvbXBpbGVySW5zdGFuY2UgJkNJOwogICBBU1RDb250ZXh0ICZDb250ZXh0OworICBzdGQ6OnVuaXF1ZV9wdHI8QVNUSW1wb3J0ZXJMb29rdXBUYWJsZT4gTG9va3VwVGFibGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBjcm9zc190dQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL0FjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL0FjdGlvbi5oCmluZGV4IGY0YWFhNmMuLmMxZmYwYjEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9BY3Rpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvQWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQWN0aW9uLmggLSBBYnN0cmFjdCBjb21waWxhdGlvbiBzdGVwcyAtLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvQ29tcGlsYXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9Db21waWxhdGlvbi5oCmluZGV4IDIwZWIwN2YuLjMzYWUxMzMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9Db21waWxhdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9Db21waWxhdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvbXBpbGF0aW9uLmggLSBDb21waWxhdGlvbiBUYXNrIERhdGEgU3RydWN0dXJlIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL0RhcndpblNES0luZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9EYXJ3aW5TREtJbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcwNzVhOAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9EYXJ3aW5TREtJbmZvLmgKQEAgLTAsMCArMSw0MSBAQAorLy89PT0tLS0gRGFyd2luU0RLSW5mby5oIC0gU0RLIEluZm9ybWF0aW9uIHBhcnNlciBmb3IgZGFyd2luIC0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0NMQU5HX0RSSVZFUl9EQVJXSU5fU0RLX0lORk9fSAorI2RlZmluZSBMTFZNX0NMQU5HX0RSSVZFUl9EQVJXSU5fU0RLX0lORk9fSAorCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvTExWTS5oIgorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9FcnJvci5oIgorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9WZXJzaW9uVHVwbGUuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvVmlydHVhbEZpbGVTeXN0ZW0uaCIKKworbmFtZXNwYWNlIGNsYW5nIHsKK25hbWVzcGFjZSBkcml2ZXIgeworCisvLy8gVGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkYXJ3aW4gU0RLIHRoYXQgd2FzIHVzZWQgZHVyaW5nIHRoaXMgY29tcGlsYXRpb24uCitjbGFzcyBEYXJ3aW5TREtJbmZvIHsKK3B1YmxpYzoKKyAgRGFyd2luU0RLSW5mbyhsbHZtOjpWZXJzaW9uVHVwbGUgVmVyc2lvbikgOiBWZXJzaW9uKFZlcnNpb24pIHt9CisKKyAgY29uc3QgbGx2bTo6VmVyc2lvblR1cGxlICZnZXRWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gVmVyc2lvbjsgfQorCitwcml2YXRlOgorICBsbHZtOjpWZXJzaW9uVHVwbGUgVmVyc2lvbjsKK307CisKKy8vLyBQYXJzZSB0aGUgU0RLIGluZm9ybWF0aW9uIGZyb20gdGhlIFNES1NldHRpbmdzLmpzb24gZmlsZS4KKy8vLworLy8vIFxyZXR1cm5zIGFuIGVycm9yIGlmIHRoZSBTREtTZXR0aW5ncy5qc29uIGZpbGUgaXMgaW52YWxpZCwgTm9uZSBpZiB0aGUKKy8vLyBTREsgaGFzIG5vIFNES1NldHRpbmdzLmpzb24sIG9yIGEgdmFsaWQgXGMgRGFyd2luU0RLSW5mbyBvdGhlcndpc2UuCitFeHBlY3RlZDxPcHRpb25hbDxEYXJ3aW5TREtJbmZvPj4gcGFyc2VEYXJ3aW5TREtJbmZvKGxsdm06OnZmczo6RmlsZVN5c3RlbSAmVkZTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgU0RLUm9vdFBhdGgpOworCit9IC8vIGVuZCBuYW1lc3BhY2UgZHJpdmVyCit9IC8vIGVuZCBuYW1lc3BhY2UgY2xhbmcKKworI2VuZGlmIC8vIExMVk1fQ0xBTkdfRFJJVkVSX0RBUldJTl9TREtfSU5GT19ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvRGlzdHJvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvRGlzdHJvLmgKaW5kZXggZDNiMGJjOS4uZDlhMzFmMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL0Rpc3Ryby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9EaXN0cm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIERpc3Ryby5oIC0gTGludXggZGlzdHJpYnV0aW9uIGRldGVjdGlvbiBzdXBwb3J0IC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTM5LDYgKzM4LDcgQEAKICAgICBSSEVMNiwKICAgICBSSEVMNywKICAgICBGZWRvcmEsCisgICAgR2VudG9vLAogICAgIE9wZW5TVVNFLAogICAgIFVidW50dUhhcmR5LAogICAgIFVidW50dUludHJlcGlkLApAQCAtNjIsNiArNjIsNyBAQAogICAgIFVidW50dUFydGZ1bCwKICAgICBVYnVudHVCaW9uaWMsCiAgICAgVWJ1bnR1Q29zbWljLAorICAgIFVidW50dURpc2NvLAogICAgIFVua25vd25EaXN0cm8KICAgfTsKIApAQCAtMTE1LDEzICsxMTYsMTcgQEAKICAgfQogCiAgIGJvb2wgSXNVYnVudHUoKSBjb25zdCB7Ci0gICAgcmV0dXJuIERpc3Ryb1ZhbCA+PSBVYnVudHVIYXJkeSAmJiBEaXN0cm9WYWwgPD0gVWJ1bnR1Q29zbWljOworICAgIHJldHVybiBEaXN0cm9WYWwgPj0gVWJ1bnR1SGFyZHkgJiYgRGlzdHJvVmFsIDw9IFVidW50dURpc2NvOwogICB9CiAKICAgYm9vbCBJc0FscGluZUxpbnV4KCkgY29uc3QgewogICAgIHJldHVybiBEaXN0cm9WYWwgPT0gQWxwaW5lTGludXg7CiAgIH0KIAorICBib29sIElzR2VudG9vKCkgY29uc3QgeworICAgIHJldHVybiBEaXN0cm9WYWwgPT0gR2VudG9vOworICB9CisKICAgLy8vIEB9CiB9OwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvRHJpdmVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvRHJpdmVyLmgKaW5kZXggMjlmZDMxYy4uMDNlNjQ1OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL0RyaXZlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9Ecml2ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIERyaXZlci5oIC0gQ2xhbmcgR0NDIENvbXBhdGlibGUgRHJpdmVyIC0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTIyNyw5ICsyMjYsNiBAQAogICB1bnNpZ25lZCBDaGVja0lucHV0c0V4aXN0IDogMTsKIAogcHVibGljOgotICAvLy8gVXNlIGxhenkgcHJlY29tcGlsZWQgaGVhZGVycyBmb3IgUENIIHN1cHBvcnQuCi0gIHVuc2lnbmVkIENDQ1VzZVBDSCA6IDE7Ci0KICAgLy8vIEZvcmNlIGNsYW5nIHRvIGVtaXQgcmVwcm9kdWNlciBmb3IgZHJpdmVyIGludm9jYXRpb24uIFRoaXMgaXMgZW5hYmxlZAogICAvLy8gaW5kaXJlY3RseSBieSBzZXR0aW5nIEZPUkNFX0NMQU5HX0RJQUdOT1NUSUNTX0NSQVNIIGVudmlyb25tZW50IHZhcmlhYmxlCiAgIC8vLyBvciB3aGVuIHVzaW5nIHRoZSAtZ2VuLXJlcHJvZHVjZXIgZHJpdmVyIGZsYWcuCkBAIC0yODEsNiArMjc3LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWFsbFN0cmluZzwxMjg+ICZDcmFzaERpYWdEaXIpOwogCiBwdWJsaWM6CisKKyAgLy8vIFRha2VzIHRoZSBwYXRoIHRvIGEgYmluYXJ5IHRoYXQncyBlaXRoZXIgaW4gYmluLyBvciBsaWIvIGFuZCByZXR1cm5zCisgIC8vLyB0aGUgcGF0aCB0byBjbGFuZydzIHJlc291cmNlIGRpcmVjdG9yeS4KKyAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldFJlc291cmNlc1BhdGgoU3RyaW5nUmVmIEJpbmFyeVBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1JlZiBDdXN0b21SZXNvdXJjZURpciA9ICIiKTsKKwogICBEcml2ZXIoU3RyaW5nUmVmIENsYW5nRXhlY3V0YWJsZSwgU3RyaW5nUmVmIFRhcmdldFRyaXBsZSwKICAgICAgICAgIERpYWdub3N0aWNzRW5naW5lICZEaWFncywKICAgICAgICAgIEludHJ1c2l2ZVJlZkNudFB0cjxsbHZtOjp2ZnM6OkZpbGVTeXN0ZW0+IFZGUyA9IG51bGxwdHIpOwpAQCAtMzYyLDYgKzM2NCw3IEBACiAgIC8vLyBQYXJzZUFyZ1N0cmluZ3MgLSBQYXJzZSB0aGUgZ2l2ZW4gbGlzdCBvZiBzdHJpbmdzIGludG8gYW4KICAgLy8vIEFyZ0xpc3QuCiAgIGxsdm06Om9wdDo6SW5wdXRBcmdMaXN0IFBhcnNlQXJnU3RyaW5ncyhBcnJheVJlZjxjb25zdCBjaGFyICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIElzQ2xDb21wYXRNb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAmQ29udGFpbnNFcnJvcik7CiAKICAgLy8vIEJ1aWxkSW5wdXRzIC0gQ29uc3RydWN0IHRoZSBsaXN0IG9mIGlucHV0cyBhbmQgdGhlaXIgdHlwZXMgZnJvbQpAQCAtNTA3LDYgKzUxMCwxMCBAQAogICAvLy8gR0NDIGdvZXMgdG8gZXh0cmEgbGVuZ3RocyBoZXJlIHRvIGJlIGEgYml0IG1vcmUgcm9idXN0LgogICBzdGQ6OnN0cmluZyBHZXRUZW1wb3JhcnlQYXRoKFN0cmluZ1JlZiBQcmVmaXgsIFN0cmluZ1JlZiBTdWZmaXgpIGNvbnN0OwogCisgIC8vLyBHZXRUZW1wb3JhcnlEaXJlY3RvcnkgLSBSZXR1cm4gdGhlIHBhdGhuYW1lIG9mIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0bworICAvLy8gdXNlIGFzIHBhcnQgb2YgY29tcGlsYXRpb247IHRoZSBkaXJlY3Rvcnkgd2lsbCBoYXZlIHRoZSBnaXZlbiBwcmVmaXguCisgIHN0ZDo6c3RyaW5nIEdldFRlbXBvcmFyeURpcmVjdG9yeShTdHJpbmdSZWYgUHJlZml4KSBjb25zdDsKKwogICAvLy8gUmV0dXJuIHRoZSBwYXRobmFtZSBvZiB0aGUgcGNoIGZpbGUgaW4gY2xhbmctY2wgbW9kZS4KICAgc3RkOjpzdHJpbmcgR2V0Q2xQY2hQYXRoKENvbXBpbGF0aW9uICZDLCBTdHJpbmdSZWYgQmFzZU5hbWUpIGNvbnN0OwogCkBAIC01NTIsNyArNTU5LDcgQEAKIAogICAvLy8gR2V0IGJpdG1hc2tzIGZvciB3aGljaCBvcHRpb24gZmxhZ3MgdG8gaW5jbHVkZSBhbmQgZXhjbHVkZSBiYXNlZCBvbgogICAvLy8gdGhlIGRyaXZlciBtb2RlLgotICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBnZXRJbmNsdWRlRXhjbHVkZU9wdGlvbkZsYWdNYXNrcygpIGNvbnN0OworICBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBnZXRJbmNsdWRlRXhjbHVkZU9wdGlvbkZsYWdNYXNrcyhib29sIElzQ2xDb21wYXRNb2RlKSBjb25zdDsKIAogICAvLy8gSGVscGVyIHVzZWQgaW4gQnVpbGRKb2JzRm9yQWN0aW9uLiAgRG9lc24ndCB1c2UgdGhlIGNhY2hlIHdoZW4gYnVpbGRpbmcKICAgLy8vIGpvYnMgc3BlY2lmaWNhbGx5IGZvciB0aGUgZ2l2ZW4gYWN0aW9uLCBidXQgd2lsbCB1c2UgdGhlIGNhY2hlIHdoZW4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9Ecml2ZXJEaWFnbm9zdGljLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvRHJpdmVyRGlhZ25vc3RpYy5oCmluZGV4IDY4MDMzOGEuLmVjMmY4YjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9Ecml2ZXJEaWFnbm9zdGljLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL0RyaXZlckRpYWdub3N0aWMuaApAQCAtMSwyOCArMSwxNCBAQAogLy89PT0tLS0gRGlhZ25vc3RpY0RyaXZlci5oIC0gRGlhZ25vc3RpY3MgZm9yIGxpYmRyaXZlciAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIAogI2lmbmRlZiBMTFZNX0NMQU5HX0RSSVZFUl9EUklWRVJESUFHTk9TVElDX0gKICNkZWZpbmUgTExWTV9DTEFOR19EUklWRVJfRFJJVkVSRElBR05PU1RJQ19ICiAKLSNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljLmgiCi0KLW5hbWVzcGFjZSBjbGFuZyB7Ci0gIG5hbWVzcGFjZSBkaWFnIHsKLSAgICBlbnVtIHsKLSNkZWZpbmUgRElBRyhFTlVNLEZMQUdTLERFRkFVTFRfTUFQUElORyxERVNDLEdST1VQLFwKLSAgICAgICAgICAgICBTRklOQUUsTk9XRVJST1IsU0hPV0lOU1lTSEVBREVSLENBVEVHT1JZKSBFTlVNLAotI2RlZmluZSBEUklWRVJTVEFSVAotI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNEcml2ZXJLaW5kcy5pbmMiCi0jdW5kZWYgRElBRwotICAgICAgTlVNX0JVSUxUSU5fRFJJVkVSX0RJQUdOT1NUSUNTCi0gICAgfTsKLSAgfSAgLy8gZW5kIG5hbWVzcGFjZSBkaWFnCi19ICAvLyBlbmQgbmFtZXNwYWNlIGNsYW5nCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0RyaXZlci5oIgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9Kb2IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9Kb2IuaAppbmRleCA0N2Q5ZTk5Li40MWQ5NzIyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvSm9iLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL0pvYi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEpvYi5oIC0gQ29tbWFuZHMgdG8gRXhlY3V0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMjksOSArMjgsNiBAQAogY2xhc3MgSW5wdXRJbmZvOwogY2xhc3MgVG9vbDsKIAotLy8gUmUtZXhwb3J0IHRoaXMgYXMgY2xhbmc6OmRyaXZlcjo6QXJnU3RyaW5nTGlzdC4KLXVzaW5nIGxsdm06Om9wdDo6QXJnU3RyaW5nTGlzdDsKLQogc3RydWN0IENyYXNoUmVwb3J0SW5mbyB7CiAgIFN0cmluZ1JlZiBGaWxlbmFtZTsKICAgU3RyaW5nUmVmIFZGU1BhdGg7CkBAIC01OSw2ICs1NSw5IEBACiAgIC8vLyBUaGUgbGlzdCBvZiBwcm9ncmFtIGFyZ3VtZW50cyB3aGljaCBhcmUgaW5wdXRzLgogICBsbHZtOjpvcHQ6OkFyZ1N0cmluZ0xpc3QgSW5wdXRGaWxlbmFtZXM7CiAKKyAgLy8vIFdoZXRoZXIgdG8gcHJpbnQgdGhlIGlucHV0IGZpbGVuYW1lcyB3aGVuIGV4ZWN1dGluZy4KKyAgYm9vbCBQcmludElucHV0RmlsZW5hbWVzID0gZmFsc2U7CisKICAgLy8vIFJlc3BvbnNlIGZpbGUgbmFtZSwgaWYgdGhpcyBjb21tYW5kIGlzIHNldCB0byB1c2Ugb25lLCBvciBudWxscHRyCiAgIC8vLyBvdGhlcndpc2UKICAgY29uc3QgY2hhciAqUmVzcG9uc2VGaWxlID0gbnVsbHB0cjsKQEAgLTEyOCw2ICsxMjcsOSBAQAogCiAgIC8vLyBQcmludCBhIGNvbW1hbmQgYXJndW1lbnQsIGFuZCBvcHRpb25hbGx5IHF1b3RlIGl0LgogICBzdGF0aWMgdm9pZCBwcmludEFyZyhsbHZtOjpyYXdfb3N0cmVhbSAmT1MsIFN0cmluZ1JlZiBBcmcsIGJvb2wgUXVvdGUpOworCisgIC8vLyBTZXQgd2hldGhlciB0byBwcmludCB0aGUgaW5wdXQgZmlsZW5hbWVzIHdoZW4gZXhlY3V0aW5nLgorICB2b2lkIHNldFByaW50SW5wdXRGaWxlbmFtZXMoYm9vbCBQKSB7IFByaW50SW5wdXRGaWxlbmFtZXMgPSBQOyB9CiB9OwogCiAvLy8gTGlrZSBDb21tYW5kLCBidXQgd2l0aCBhIGZhbGxiYWNrIHdoaWNoIGlzIGV4ZWN1dGVkIGluIGNhc2UKQEAgLTEzNSw3ICsxMzcsOCBAQAogY2xhc3MgRmFsbGJhY2tDb21tYW5kIDogcHVibGljIENvbW1hbmQgewogcHVibGljOgogICBGYWxsYmFja0NvbW1hbmQoY29uc3QgQWN0aW9uICZTb3VyY2VfLCBjb25zdCBUb29sICZDcmVhdG9yXywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKkV4ZWN1dGFibGVfLCBjb25zdCBBcmdTdHJpbmdMaXN0ICZBcmd1bWVudHNfLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqRXhlY3V0YWJsZV8sCisgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpvcHQ6OkFyZ1N0cmluZ0xpc3QgJkFyZ3VtZW50c18sCiAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxJbnB1dEluZm8+IElucHV0cywKICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDb21tYW5kPiBGYWxsYmFja18pOwogCkBAIC0xNTMsNyArMTU2LDggQEAKIGNsYXNzIEZvcmNlU3VjY2Vzc0NvbW1hbmQgOiBwdWJsaWMgQ29tbWFuZCB7CiBwdWJsaWM6CiAgIEZvcmNlU3VjY2Vzc0NvbW1hbmQoY29uc3QgQWN0aW9uICZTb3VyY2VfLCBjb25zdCBUb29sICZDcmVhdG9yXywKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpFeGVjdXRhYmxlXywgY29uc3QgQXJnU3RyaW5nTGlzdCAmQXJndW1lbnRzXywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpFeGVjdXRhYmxlXywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpvcHQ6OkFyZ1N0cmluZ0xpc3QgJkFyZ3VtZW50c18sCiAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8SW5wdXRJbmZvPiBJbnB1dHMpOwogCiAgIHZvaWQgUHJpbnQobGx2bTo6cmF3X29zdHJlYW0gJk9TLCBjb25zdCBjaGFyICpUZXJtaW5hdG9yLCBib29sIFF1b3RlLApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL011bHRpbGliLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvTXVsdGlsaWIuaAppbmRleCAxMzJkOTgxLi4zNTNhZWZkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvTXVsdGlsaWIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvTXVsdGlsaWIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNdWx0aWxpYi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9PcHRpb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvT3B0aW9ucy5oCmluZGV4IDJkYTNjYjQuLmY4OTYzZDQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9PcHRpb25zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL09wdGlvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIE9wdGlvbnMuaCAtIE9wdGlvbiBpbmZvICYgdGFibGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9PcHRpb25zLmluYyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9PcHRpb25zLmluYwppbmRleCA0Nzg0MzRiLi5jYWNhYmU0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvT3B0aW9ucy5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL09wdGlvbnMuaW5jCkBAIC05NCw3ICs5NCw3IEBACiBPUFRJT04ocHJlZml4XzEsICJBLSIsIEFfREFTSCwgSm9pbmVkLCBnZm9ydHJhbl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImFkZC1wbHVnaW4iLCBhZGRfcGx1Z2luLCBTZXBhcmF0ZSwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCiAgICAgICAgIlVzZSB0aGUgbmFtZWQgcGx1Z2luIGFjdGlvbiBpbiBhZGRpdGlvbiB0byB0aGUgZGVmYXVsdCBhY3Rpb24iLCAiPG5hbWU+IiwgbnVsbHB0cikKLU9QVElPTihwcmVmaXhfMiwgIkFJIiwgX1NMQVNIX0FJLCBKb2luZWQsIGNsX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8yLCAiQUkiLCBfU0xBU0hfQUksIEpvaW5lZE9yU2VwYXJhdGUsIGNsX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8zLCAiYWxsLXdhcm5pbmdzIiwgX2FsbF93YXJuaW5ncywgRmxhZywgSU5WQUxJRCwgV2FsbCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImFsbF9sb2FkIiwgYWxsX19sb2FkLCBGbGFnLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiYWxsb3dhYmxlX2NsaWVudCIsIGFsbG93YWJsZV9fY2xpZW50LCBTZXBhcmF0ZSwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTEwOCw2ICsxMDgsMTEgQEAKIE9QVElPTihwcmVmaXhfMSwgImFuYWx5emVyLWNoZWNrZXI9IiwgYW5hbHl6ZXJfY2hlY2tlcl9FUSwgSm9pbmVkLCBJTlZBTElELCBhbmFseXplcl9jaGVja2VyLCBudWxscHRyLCBDQzFPcHRpb24gfCBOb0RyaXZlck9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImFuYWx5emVyLWNoZWNrZXIiLCBhbmFseXplcl9jaGVja2VyLCBTZXBhcmF0ZSwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCiAgICAgICAgIkNob29zZSBhbmFseXplciBjaGVja2VycyB0byBlbmFibGUiLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiYW5hbHl6ZXItY29uZmlnLWNvbXBhdGliaWxpdHktbW9kZT0iLCBhbmFseXplcl9jb25maWdfY29tcGF0aWJpbGl0eV9tb2RlX0VRLCBKb2luZWQsIElOVkFMSUQsIGFuYWx5emVyX2NvbmZpZ19jb21wYXRpYmlsaXR5X21vZGUsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiYW5hbHl6ZXItY29uZmlnLWNvbXBhdGliaWxpdHktbW9kZSIsIGFuYWx5emVyX2NvbmZpZ19jb21wYXRpYmlsaXR5X21vZGUsIFNlcGFyYXRlLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBOb0RyaXZlck9wdGlvbiwgMCwKKyAgICAgICAiRG9uJ3QgZW1pdCBlcnJvcnMgb24gaW52YWxpZCBhbmFseXplci1jb25maWcgaW5wdXRzIiwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImFuYWx5emVyLWNvbmZpZy1oZWxwIiwgYW5hbHl6ZXJfY29uZmlnX2hlbHAsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLAorICAgICAgICJEaXNwbGF5IHRoZSBsaXN0IG9mIC1hbmFseXplci1jb25maWcgb3B0aW9ucyIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJhbmFseXplci1jb25maWciLCBhbmFseXplcl9jb25maWcsIFNlcGFyYXRlLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBOb0RyaXZlck9wdGlvbiwgMCwKICAgICAgICAiQ2hvb3NlIGFuYWx5emVyIG9wdGlvbnMgdG8gZW5hYmxlIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImFuYWx5emVyLWNvbnN0cmFpbnRzPSIsIGFuYWx5emVyX2NvbnN0cmFpbnRzX0VRLCBKb2luZWQsIElOVkFMSUQsIGFuYWx5emVyX2NvbnN0cmFpbnRzLCBudWxscHRyLCBDQzFPcHRpb24gfCBOb0RyaXZlck9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTIzMiwxMCArMjM3LDYgQEAKICAgICAgICAiU2ltdWxhdGUgaW5zdGFsbGF0aW9uIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiY2NjLW9iamNtdC1taWdyYXRlIiwgY2NjX29iamNtdF9taWdyYXRlLCBTZXBhcmF0ZSwgaW50ZXJuYWxfZHJpdmVyX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBEcml2ZXJPcHRpb24gfCBIZWxwSGlkZGVuLCAwLAogICAgICAgICJBcHBseSBtb2RpZmljYXRpb25zIGFuZCBwcm9kdWNlcyB0ZW1wb3JhcnkgZmlsZXMgdG8gbWlncmF0ZSB0byBtb2Rlcm4gT2JqQyBzeW50YXgiLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8xLCAiY2NjLXBjaC1pcy1wY2giLCBjY2NfcGNoX2lzX3BjaCwgRmxhZywgaW50ZXJuYWxfZHJpdmVyX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBEcml2ZXJPcHRpb24gfCBIZWxwSGlkZGVuLCAwLAotICAgICAgICJVc2UgbGF6eSBQQ0ggZm9yIHByZWNvbXBpbGVkIGhlYWRlcnMiLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8xLCAiY2NjLXBjaC1pcy1wdGgiLCBjY2NfcGNoX2lzX3B0aCwgRmxhZywgaW50ZXJuYWxfZHJpdmVyX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBEcml2ZXJPcHRpb24gfCBIZWxwSGlkZGVuLCAwLAotICAgICAgICJVc2UgcHJldG9rZW5pemVkIGhlYWRlcnMgZm9yIHByZWNvbXBpbGVkIGhlYWRlcnMiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiY2NjLXByaW50LWJpbmRpbmdzIiwgY2NjX3ByaW50X2JpbmRpbmdzLCBGbGFnLCBpbnRlcm5hbF9kZWJ1Z19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgRHJpdmVyT3B0aW9uIHwgSGVscEhpZGRlbiB8IENvcmVPcHRpb24sIDAsCiAgICAgICAgIlNob3cgYmluZGluZ3Mgb2YgdG9vbHMgdG8gYWN0aW9ucyIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJjY2MtcHJpbnQtcGhhc2VzIiwgY2NjX3ByaW50X3BoYXNlcywgRmxhZywgaW50ZXJuYWxfZGVidWdfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIERyaXZlck9wdGlvbiB8IEhlbHBIaWRkZW4gfCBDb3JlT3B0aW9uLCAwLApAQCAtMjc4LDYgKzI3OSw4IEBACiAgICAgICAgIk9wZW5DTCBvbmx5LiBEZWZpbmVzIHRoYXQgdGhlIGdsb2JhbCB3b3JrLXNpemUgYmUgYSBtdWx0aXBsZSBvZiB0aGUgd29yay1ncm91cCBzaXplIHNwZWNpZmllZCB0byBjbEVucXVldWVORFJhbmdlS2VybmVsIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImNsLXVuc2FmZS1tYXRoLW9wdGltaXphdGlvbnMiLCBjbF91bnNhZmVfbWF0aF9vcHRpbWl6YXRpb25zLCBGbGFnLCBvcGVuY2xfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwKICAgICAgICAiT3BlbkNMIG9ubHkuIEFsbG93IHVuc2FmZSBmbG9hdGluZy1wb2ludCBvcHRpbWl6YXRpb25zLiAgQWxzbyBpbXBsaWVzIC1jbC1uby1zaWduZWQtemVyb3MgYW5kIC1jbC1tYWQtZW5hYmxlLiIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzIsICJjbGFuZzoiLCBfU0xBU0hfY2xhbmcsIEpvaW5lZCwgY2xfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCisgICAgICAgIlBhc3MgPGFyZz4gdG8gdGhlIGNsYW5nIGRyaXZlciIsICI8YXJnPiIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzMsICJDTEFTU1BBVEg9IiwgX0NMQVNTUEFUSF9FUSwgSm9pbmVkLCBJTlZBTElELCBmY2xhc3NwYXRoX0VRLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8zLCAiY2xhc3NwYXRoPSIsIF9jbGFzc3BhdGhfRVEsIEpvaW5lZCwgSU5WQUxJRCwgZmNsYXNzcGF0aF9FUSwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMywgIkNMQVNTUEFUSCIsIF9DTEFTU1BBVEgsIFNlcGFyYXRlLCBJTlZBTElELCBmY2xhc3NwYXRoX0VRLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQpAQCAtMzM5LDcgKzM0Miw3IEBACiBPUFRJT04ocHJlZml4XzMsICJjdWRhLWhvc3Qtb25seSIsIGN1ZGFfaG9zdF9vbmx5LCBGbGFnLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCAwLCAwLAogICAgICAgICJDb21waWxlIENVREEgY29kZSBmb3IgaG9zdCBvbmx5LiAgSGFzIG5vIGVmZmVjdCBvbiBub24tQ1VEQSBjb21waWxhdGlvbnMuIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMywgImN1ZGEtaW5jbHVkZS1wdHg9IiwgY3VkYV9pbmNsdWRlX3B0eF9FUSwgSm9pbmVkLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBEcml2ZXJPcHRpb24sIDAsCi0gICAgICAgIkluY2x1ZGUgUFRYIGZvciB0aGUgZm9sbHdpbmcgR1BVIGFyY2hpdGVjdHVyZSAoZS5nLiBzbV8zNSkgb3IgJ2FsbCcuIE1heSBiZSBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UuIiwgbnVsbHB0ciwgbnVsbHB0cikKKyAgICAgICAiSW5jbHVkZSBQVFggZm9yIHRoZSBmb2xsb3dpbmcgR1BVIGFyY2hpdGVjdHVyZSAoZS5nLiBzbV8zNSkgb3IgJ2FsbCcuIE1heSBiZSBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UuIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMywgImN1ZGEtbm9vcHQtZGV2aWNlLWRlYnVnIiwgY3VkYV9ub29wdF9kZXZpY2VfZGVidWcsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsCiAgICAgICAgIkVuYWJsZSBkZXZpY2Utc2lkZSBkZWJ1ZyBpbmZvIGdlbmVyYXRpb24uIERpc2FibGVzIHB0eGFzIG9wdGltaXphdGlvbnMuIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMywgImN1ZGEtcGF0aC1pZ25vcmUtZW52IiwgY3VkYV9wYXRoX2lnbm9yZV9lbnYsIEZsYWcsIGlfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsCkBAIC0zNzUsNiArMzc4LDggQEAKIE9QVElPTihwcmVmaXhfMywgImRlYnVnPSIsIF9kZWJ1Z19FUSwgSm9pbmVkLCBJTlZBTElELCBnX0ZsYWcsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJkZWJ1Z2dlci10dW5pbmc9IiwgZGVidWdnZXJfdHVuaW5nX0VRLCBKb2luZWQsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IENDMUFzT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzMsICJkZWJ1ZyIsIF9kZWJ1ZywgRmxhZywgSU5WQUxJRCwgZ19GbGFnLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZGVmYXVsdC1mdW5jdGlvbi1hdHRyIiwgZGVmYXVsdF9mdW5jdGlvbl9hdHRyLCBTZXBhcmF0ZSwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgQ0MxQXNPcHRpb24gfCBOb0RyaXZlck9wdGlvbiwgMCwKKyAgICAgICAiQXBwbHkgZ2l2ZW4gYXR0cmlidXRlIHRvIGFsbCBmdW5jdGlvbnMiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8zLCAiZGVmaW5lLW1hY3JvPSIsIF9kZWZpbmVfbWFjcm9fRVEsIEpvaW5lZCwgSU5WQUxJRCwgRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMywgImRlZmluZS1tYWNybyIsIF9kZWZpbmVfbWFjcm8sIFNlcGFyYXRlLCBJTlZBTElELCBELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZGVmc3ltIiwgZGVmc3ltLCBTZXBhcmF0ZSwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxQXNPcHRpb24gfCBOb0RyaXZlck9wdGlvbiwgMCwKQEAgLTQ4MywxMCArNDg4LDEyIEBACiAgICAgICAgIkVtaXQgbmF0aXZlIG9iamVjdCBmaWxlcyIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJlbWl0LXBjaCIsIGVtaXRfcGNoLCBGbGFnLCBBY3Rpb25fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLAogICAgICAgICJHZW5lcmF0ZSBwcmUtY29tcGlsZWQgaGVhZGVyIGZpbGUiLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8xLCAiZW1pdC1wdGgiLCBlbWl0X3B0aCwgRmxhZywgQWN0aW9uX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBOb0RyaXZlck9wdGlvbiwgMCwKLSAgICAgICAiR2VuZXJhdGUgcHJlLXRva2VuaXplZCBoZWFkZXIgZmlsZSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJlbmFibGUtc3BsaXQtZHdhcmY9IiwgZW5hYmxlX3NwbGl0X2R3YXJmX0VRLCBKb2luZWQsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLAorICAgICAgICJTZXQgRFdBUkYgZmlzc2lvbiBtb2RlIHRvIGVpdGhlciAnc3BsaXQnIG9yICdzaW5nbGUnIiwgbnVsbHB0ciwgInNwbGl0LHNpbmdsZSIpCiBPUFRJT04ocHJlZml4XzEsICJlbmFibGUtc3BsaXQtZHdhcmYiLCBlbmFibGVfc3BsaXRfZHdhcmYsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLAotICAgICAgICJVc2Ugc3BsaXQgZHdhcmYvRmlzc2lvbiIsIG51bGxwdHIsIG51bGxwdHIpCisgICAgICAgIlVzZSBEV0FSRiBmaXNzaW9uIGluICdzcGxpdCcgbW9kZSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJlbmFibGUtdHJpdmlhbC1hdXRvLXZhci1pbml0LXplcm8ta25vd2luZy1pdC13aWxsLWJlLXJlbW92ZWQtZnJvbS1jbGFuZyIsIGVuYWJsZV90cml2aWFsX3Zhcl9pbml0X3plcm8sIEpvaW5lZCwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLAorICAgICAgICJUcml2aWFsIGF1dG9tYXRpYyB2YXJpYWJsZSBpbml0aWFsaXphdGlvbiB0byB6ZXJvIGlzIG9ubHkgaGVyZSBmb3IgYmVuY2htYXJrcywgaXQnbGwgZXZlbnR1YWxseSBiZSByZW1vdmVkLCBhbmQgSSdtIE9LIHdpdGggdGhhdCBiZWNhdXNlIEknbSBvbmx5IHVzaW5nIGl0IHRvIGJlbmNobWFyayIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzMsICJlbmNvZGluZz0iLCBfZW5jb2RpbmdfRVEsIEpvaW5lZCwgSU5WQUxJRCwgZmVuY29kaW5nX0VRLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8zLCAiZW5jb2RpbmciLCBfZW5jb2RpbmcsIFNlcGFyYXRlLCBJTlZBTElELCBmZW5jb2RpbmdfRVEsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzMsICJlbnRyeSIsIF9lbnRyeSwgRmxhZywgSU5WQUxJRCwgZSwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTUyOSw3ICs1MzYsNyBAQAogT1BUSU9OKHByZWZpeF8xLCAiZmFsaWduZWQtYWxsb2NhdGlvbiIsIGZhbGlnbmVkX2FsbG9jYXRpb24sIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwKICAgICAgICAiRW5hYmxlIEMrKzE3IGFsaWduZWQgYWxsb2NhdGlvbiBmdW5jdGlvbnMiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZmFsaWduZWQtbmV3PSIsIGZhbGlnbmVkX25ld19FUSwgSm9pbmVkLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8xLCAiZmFsaWduZWQtbmV3IiwgYW5vbnltb3VzXzE4LCBGbGFnLCBJTlZBTElELCBmYWxpZ25lZF9hbGxvY2F0aW9uLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZmFsaWduZWQtbmV3IiwgYW5vbnltb3VzXzIwLCBGbGFnLCBJTlZBTElELCBmYWxpZ25lZF9hbGxvY2F0aW9uLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZmFsbC1pbnRyaW5zaWNzIiwgYWxsX2ludHJpbnNpY3NfZiwgRmxhZywgZ2ZvcnRyYW5fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzIsICJmYWxsYmFjayIsIF9TTEFTSF9mYWxsYmFjaywgRmxhZywgY2xfY29tcGlsZV9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24sIDAsCiAgICAgICAgIkZhbGwgYmFjayB0byBjbC5leGUgaWYgY2xhbmctY2wgZmFpbHMgdG8gY29tcGlsZSIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC01NDksNiArNTU2LDggQEAKICAgICAgICAiRW5hYmxlIEFwcGxlIGdjYy1jb21wYXRpYmxlICNwcmFnbWEgcGFjayBoYW5kbGluZyIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmYXBwbGljYXRpb24tZXh0ZW5zaW9uIiwgZmFwcGxpY2F0aW9uX2V4dGVuc2lvbiwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLAogICAgICAgICJSZXN0cmljdCBjb2RlIHRvIHRob3NlIGF2YWlsYWJsZSBmb3IgQXBwIEV4dGVuc2lvbnMiLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZmFwcGx5LWdsb2JhbC12aXNpYmlsaXR5LXRvLWV4dGVybnMiLCBmYXBwbHlfZ2xvYmFsX3Zpc2liaWxpdHlfdG9fZXh0ZXJucywgRmxhZywgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCisgICAgICAgIkFwcGx5IGdsb2JhbCBzeW1ib2wgdmlzaWJpbGl0eSB0byBleHRlcm5hbCBkZWNsYXJhdGlvbnMgd2l0aG91dCBhbiBleHBsaWNpdCB2aXNpYmlsaXR5IiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZhc20tYmxvY2tzIiwgZmFzbV9ibG9ja3MsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZhc20iLCBmYXNtLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZmFzc29jaWF0aXZlLW1hdGgiLCBmYXNzb2NpYXRpdmVfbWF0aCwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTYxOCw2ICs2MjcsNyBAQAogICAgICAgICJJbnN0cnVtZW50IGNvbnRyb2wtZmxvdyBhcmNoaXRlY3R1cmUgcHJvdGVjdGlvbi4gT3B0aW9uczogcmV0dXJuLCBicmFuY2gsIGZ1bGwsIG5vbmUuIiwgbnVsbHB0ciwgInJldHVybixicmFuY2gsZnVsbCxub25lIikKIE9QVElPTihwcmVmaXhfMSwgImZjZi1wcm90ZWN0aW9uIiwgZmNmX3Byb3RlY3Rpb24sIEZsYWcsIGZfR3JvdXAsIGZjZl9wcm90ZWN0aW9uX0VRLCAiZnVsbFwwIiwgQ29yZU9wdGlvbiB8IENDMU9wdGlvbiwgMCwKICAgICAgICAiRW5hYmxlIGNmLXByb3RlY3Rpb24gaW4gJ2Z1bGwnIG1vZGUiLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZmNmLXJ1bnRpbWUtYWJpPSIsIGZjZl9ydW50aW1lX2FiaV9FUSwgSm9pbmVkLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmY2hhcjhfdCIsIGZjaGFyOF9fdCwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLAogICAgICAgICJFbmFibGUgQysrIGJ1aWx0aW4gdHlwZSBjaGFyOF90IiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZjaGVjay1hcnJheS10ZW1wb3JhcmllcyIsIGNoZWNrX2FycmF5X3RlbXBvcmFyaWVzX2YsIEZsYWcsIGdmb3J0cmFuX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQpAQCAtNjkzLDYgKzcwMyw4IEBACiBPUFRJT04ocHJlZml4XzEsICJmZGVidWctcGFzcy1zdHJ1Y3R1cmUiLCBmZGVidWdfcGFzc19zdHJ1Y3R1cmUsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmZGVidWctcHJlZml4LW1hcD0iLCBmZGVidWdfcHJlZml4X21hcF9FUSwgSm9pbmVkLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBDQzFBc09wdGlvbiwgMCwKICAgICAgICAicmVtYXAgZmlsZSBzb3VyY2UgcGF0aHMgaW4gZGVidWcgaW5mbyIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZGVidWctcmFuZ2VzLWJhc2UtYWRkcmVzcyIsIGZkZWJ1Z19yYW5nZXNfYmFzZV9hZGRyZXNzLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCisgICAgICAgIlVzZSBEV0FSRiBiYXNlIGFkZHJlc3Mgc2VsZWN0aW9uIGVudHJpZXMgaW4gZGVidWdfcmFuZ2VzIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZkZWJ1Zy10eXBlcy1zZWN0aW9uIiwgZmRlYnVnX3R5cGVzX3NlY3Rpb24sIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwKICAgICAgICAiUGxhY2UgZGVidWcgdHlwZXMgaW4gdGhlaXIgb3duIHNlY3Rpb24gKEVMRiBPbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmZGVidWdnZXItY2FzdC1yZXN1bHQtdG8taWQiLCBmZGVidWdnZXJfY2FzdF9yZXN1bHRfdG9faWQsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLApAQCAtNzA5LDcgKzcyMSw3IEBACiBPUFRJT04ocHJlZml4XzEsICJmZGVmYXVsdC1pbmxpbmUiLCBkZWZhdWx0X2lubGluZV9mLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2djY19vcHRpbWl6YXRpb25fZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSWdub3JlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZkZWZhdWx0LWludGVnZXItOCIsIGRlZmF1bHRfaW50ZWdlcl84X2YsIEZsYWcsIGdmb3J0cmFuX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZmRlZmF1bHQtcmVhbC04IiwgZGVmYXVsdF9yZWFsXzhfZiwgRmxhZywgZ2ZvcnRyYW5fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJmZGVmZXItcG9wIiwgYW5vbnltb3VzXzEwLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2djY19vcHRpbWl6YXRpb25fZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSWdub3JlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZkZWZlci1wb3AiLCBhbm9ueW1vdXNfMTIsIEZsYWcsIGNsYW5nX2lnbm9yZWRfZ2NjX29wdGltaXphdGlvbl9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZmRlbGF5ZWQtdGVtcGxhdGUtcGFyc2luZyIsIGZkZWxheWVkX3RlbXBsYXRlX3BhcnNpbmcsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IENvcmVPcHRpb24sIDAsCiAgICAgICAgIlBhcnNlIHRlbXBsYXRlZCBmdW5jdGlvbiBkZWZpbml0aW9ucyBhdCB0aGUgZW5kIG9mIHRoZSB0cmFuc2xhdGlvbiB1bml0IiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZkZWxldGUtbnVsbC1wb2ludGVyLWNoZWNrcyIsIGZkZWxldGVfbnVsbF9wb2ludGVyX2NoZWNrcywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwKQEAgLTc3Niw3ICs3ODgsNyBAQAogT1BUSU9OKHByZWZpeF8xLCAiZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMiLCBlbGltaW5hdGVfdW51c2VkX2RlYnVnX3R5cGVzX2YsIEZsYWcsIGNsYW5nX2lnbm9yZWRfZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSWdub3JlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZlbWJlZC1iaXRjb2RlLW1hcmtlciIsIGZlbWJlZF9iaXRjb2RlX21hcmtlciwgRmxhZywgSU5WQUxJRCwgZmVtYmVkX2JpdGNvZGVfRVEsICJtYXJrZXJcMCIsIDAsIDAsCiAgICAgICAgIkVtYmVkIHBsYWNlaG9sZGVyIExMVk0gSVIgZGF0YSBhcyBhIG1hcmtlciIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJmZW1iZWQtYml0Y29kZT0iLCBmZW1iZWRfYml0Y29kZV9FUSwgSm9pbmVkLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBEcml2ZXJPcHRpb24gfCBDQzFPcHRpb24sIDAsCitPUFRJT04ocHJlZml4XzEsICJmZW1iZWQtYml0Y29kZT0iLCBmZW1iZWRfYml0Y29kZV9FUSwgSm9pbmVkLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBEcml2ZXJPcHRpb24gfCBDQzFPcHRpb24gfCBDQzFBc09wdGlvbiwgMCwKICAgICAgICAiRW1iZWQgTExWTSBiaXRjb2RlIChvcHRpb246IG9mZiwgYWxsLCBiaXRjb2RlLCBtYXJrZXIpIiwgIjxvcHRpb24+IiwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZlbWJlZC1iaXRjb2RlIiwgZmVtYmVkX2JpdGNvZGUsIEZsYWcsIGZfR3JvdXAsIGZlbWJlZF9iaXRjb2RlX0VRLCAiYWxsXDAiLCAwLCAwLAogICAgICAgICJFbWJlZCBMTFZNIElSIGJpdGNvZGUgYXMgZGF0YSIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC03OTksMTMgKzgxMSwxMyBAQAogICAgICAgICJFbmFibGUgc3VwcG9ydCBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZleGNlc3MtcHJlY2lzaW9uPSIsIGZleGNlc3NfcHJlY2lzaW9uX0VRLCBKb2luZWQsIGNsYW5nX2lnbm9yZWRfZ2NjX29wdGltaXphdGlvbl9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZmV4ZWMtY2hhcnNldD0iLCBmZXhlY19jaGFyc2V0X0VRLCBKb2luZWQsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJmZXhwZW5zaXZlLW9wdGltaXphdGlvbnMiLCBhbm9ueW1vdXNfOCwgRmxhZywgY2xhbmdfaWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZXhwZW5zaXZlLW9wdGltaXphdGlvbnMiLCBhbm9ueW1vdXNfMTAsIEZsYWcsIGNsYW5nX2lnbm9yZWRfZ2NjX29wdGltaXphdGlvbl9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZmV4cGVyaW1lbnRhbC1pc2VsIiwgZmV4cGVyaW1lbnRhbF9pc2VsLCBGbGFnLCBmX2NsYW5nX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAogICAgICAgICJFbmFibGVzIHRoZSBleHBlcmltZW50YWwgZ2xvYmFsIGluc3RydWN0aW9uIHNlbGVjdG9yIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZleHBlcmltZW50YWwtbmV3LXBhc3MtbWFuYWdlciIsIGZleHBlcmltZW50YWxfbmV3X3Bhc3NfbWFuYWdlciwgRmxhZywgZl9jbGFuZ19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLAogICAgICAgICJFbmFibGVzIGFuIGV4cGVyaW1lbnRhbCBuZXcgcGFzcyBtYW5hZ2VyIGluIExMVk0uIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZleHRkaXJzPSIsIGZleHRkaXJzX0VRLCBKb2luZWQsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJmZXh0ZW5kZWQtaWRlbnRpZmllcnMiLCBhbm9ueW1vdXNfMTIsIEZsYWcsIGNsYW5nX2lnbm9yZWRfZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSWdub3JlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZleHRlbmRlZC1pZGVudGlmaWVycyIsIGFub255bW91c18xNCwgRmxhZywgY2xhbmdfaWdub3JlZF9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZmV4dGVybmFsLWJsYXMiLCBleHRlcm5hbF9ibGFzX2YsIEZsYWcsIGdmb3J0cmFuX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZmV4dGVybmMtbm91bndpbmQiLCBmZXh0ZXJuY19ub3Vud2luZCwgRmxhZywgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCiAgICAgICAgIkFzc3VtZSBhbGwgZnVuY3Rpb25zIHdpdGggQyBsaW5rYWdlIGRvIG5vdCB1bndpbmQiLCBudWxscHRyLCBudWxscHRyKQpAQCAtODI4LDEyICs4NDAsNDAgQEAKICAgICAgICAiUmVzZXJ2ZSByZWdpc3RlciByMTkgKEhleGFnb24gb25seSkiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZmZpeGVkLXI5IiwgZmZpeGVkX3I5LCBGbGFnLCBtX2FybV9GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwKICAgICAgICAiUmVzZXJ2ZSB0aGUgcjkgcmVnaXN0ZXIgKEFSTSBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDEwIiwgZmZpeGVkX3gxMCwgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSAxMCByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDExIiwgZmZpeGVkX3gxMSwgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSAxMSByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDEyIiwgZmZpeGVkX3gxMiwgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSAxMiByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDEzIiwgZmZpeGVkX3gxMywgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSAxMyByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDE0IiwgZmZpeGVkX3gxNCwgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSAxNCByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDE1IiwgZmZpeGVkX3gxNSwgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSAxNSByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDE4IiwgZmZpeGVkX3gxOCwgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAogICAgICAgICJSZXNlcnZlIHRoZSAxOCByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDEiLCBmZml4ZWRfeDEsIEZsYWcsIG1fYWFyY2g2NF9GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwKICAgICAgICAiUmVzZXJ2ZSB0aGUgMSByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDIwIiwgZmZpeGVkX3gyMCwgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAogICAgICAgICJSZXNlcnZlIHRoZSAyMCByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDIxIiwgZmZpeGVkX3gyMSwgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSAyMSByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDIyIiwgZmZpeGVkX3gyMiwgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSAyMiByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDIzIiwgZmZpeGVkX3gyMywgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSAyMyByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDI0IiwgZmZpeGVkX3gyNCwgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSAyNCByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDI1IiwgZmZpeGVkX3gyNSwgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSAyNSByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDI2IiwgZmZpeGVkX3gyNiwgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSAyNiByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDI3IiwgZmZpeGVkX3gyNywgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSAyNyByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDI4IiwgZmZpeGVkX3gyOCwgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSAyOCByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDIiLCBmZml4ZWRfeDIsIEZsYWcsIG1fYWFyY2g2NF9GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwKICAgICAgICAiUmVzZXJ2ZSB0aGUgMiByZWdpc3RlciAoQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmZml4ZWQteDMiLCBmZml4ZWRfeDMsIEZsYWcsIG1fYWFyY2g2NF9GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwKQEAgLTg0Niw2ICs4ODYsOCBAQAogICAgICAgICJSZXNlcnZlIHRoZSA2IHJlZ2lzdGVyIChBQXJjaDY0IG9ubHkpIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZmaXhlZC14NyIsIGZmaXhlZF94NywgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAogICAgICAgICJSZXNlcnZlIHRoZSA3IHJlZ2lzdGVyIChBQXJjaDY0IG9ubHkpIiwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZmaXhlZC14OSIsIGZmaXhlZF94OSwgRmxhZywgbV9hYXJjaDY0X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJSZXNlcnZlIHRoZSA5IHJlZ2lzdGVyIChBQXJjaDY0IG9ubHkpIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZmbG9hdC1zdG9yZSIsIGZsb2F0X3N0b3JlX2YsIEZsYWcsIGNsYW5nX2lnbm9yZWRfZ2NjX29wdGltaXphdGlvbl9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZmZvci1zY29wZSIsIGZmb3Jfc2NvcGUsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmZm9yYmlkLWd1YXJkLXZhcmlhYmxlcyIsIGZmb3JiaWRfZ3VhcmRfdmFyaWFibGVzLCBGbGFnLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBOb0RyaXZlck9wdGlvbiwgMCwKQEAgLTg4Myw3ICs5MjUsNyBAQAogICAgICAgICJHZW5lcmF0ZSByZWxvY2F0YWJsZSBkZXZpY2UgY29kZSwgYWxzbyBrbm93biBhcyBzZXBhcmF0ZSBjb21waWxhdGlvbiBtb2RlLiIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmaGVpbm91cy1nbnUtZXh0ZW5zaW9ucyIsIGZoZWlub3VzX2dudV9leHRlbnNpb25zLCBGbGFnLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmaGlwLWR1bXAtb2ZmbG9hZC1saW5rZXItc2NyaXB0IiwgZmhpcF9kdW1wX29mZmxvYWRfbGlua2VyX3NjcmlwdCwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgTm9Bcmd1bWVudFVudXNlZCB8IEhlbHBIaWRkZW4sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJmaG9ub3ItaW5maW5pdGVzIiwgYW5vbnltb3VzXzE0LCBGbGFnLCBJTlZBTElELCBmaG9ub3JfaW5maW5pdGllcywgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZob25vci1pbmZpbml0ZXMiLCBhbm9ueW1vdXNfMTYsIEZsYWcsIElOVkFMSUQsIGZob25vcl9pbmZpbml0aWVzLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZmhvbm9yLWluZmluaXRpZXMiLCBmaG9ub3JfaW5maW5pdGllcywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZob25vci1uYW5zIiwgZmhvbm9yX25hbnMsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmaG9zdGVkIiwgZmhvc3RlZCwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTg5OSw3ICs5NDEsNyBAQAogT1BUSU9OKHByZWZpeF8xLCAiZmltcGxpY2l0LXRlbXBsYXRlcyIsIGltcGxpY2l0X3RlbXBsYXRlc19mLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmaW5jbHVkZS1kZWZhdWx0LWhlYWRlciIsIGZpbmNsdWRlX2RlZmF1bHRfaGVhZGVyLCBGbGFnLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBOb0RyaXZlck9wdGlvbiwgMCwKICAgICAgICAiSW5jbHVkZSB0aGUgZGVmYXVsdCBoZWFkZXIgZmlsZSBmb3IgT3BlbkNMIiwgbnVsbHB0ciwgbnVsbHB0cikKLU9QVElPTihwcmVmaXhfMSwgImZpbmRpcmVjdC12aXJ0dWFsLWNhbGxzIiwgYW5vbnltb3VzXzE2LCBGbGFnLCBJTlZBTElELCBmYXBwbGVfa2V4dCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZpbmRpcmVjdC12aXJ0dWFsLWNhbGxzIiwgYW5vbnltb3VzXzE4LCBGbGFnLCBJTlZBTElELCBmYXBwbGVfa2V4dCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZpbml0LWNoYXJhY3Rlcj0iLCBmaW5pdF9jaGFyYWN0ZXJfRVEsIEpvaW5lZCwgZ2ZvcnRyYW5fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmaW5pdC1pbnRlZ2VyPSIsIGZpbml0X2ludGVnZXJfRVEsIEpvaW5lZCwgZ2ZvcnRyYW5fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmaW5pdC1sb2NhbC16ZXJvIiwgaW5pdF9sb2NhbF96ZXJvX2YsIEZsYWcsIGdmb3J0cmFuX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQpAQCAtOTQ0LDcgKzk4Niw3IEBACiBPUFRJT04ocHJlZml4XzIsICJGaSIsIF9TTEFTSF9GaSwgSm9pbmVkLCBjbF9jb21waWxlX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiwgMCwKICAgICAgICAiU2V0IHByZXByb2Nlc3Mgb3V0cHV0IGZpbGUgbmFtZSAod2l0aCAvUCkiLCAiPGZpbGU+IiwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZqdW1wLXRhYmxlcyIsIGZqdW1wX3RhYmxlcywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKLU9QVElPTihwcmVmaXhfMSwgImZrZWVwLWlubGluZS1mdW5jdGlvbnMiLCBhbm9ueW1vdXNfMzBfZiwgRmxhZywgY2xhbmdfaWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJma2VlcC1pbmxpbmUtZnVuY3Rpb25zIiwgYW5vbnltb3VzXzM0X2YsIEZsYWcsIGNsYW5nX2lnbm9yZWRfZ2NjX29wdGltaXphdGlvbl9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZmtlZXAtc3RhdGljLWNvbnN0cyIsIGZrZWVwX3N0YXRpY19jb25zdHMsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwKICAgICAgICAiS2VlcCBzdGF0aWMgY29uc3QgdmFyaWFibGVzIGV2ZW4gaWYgdW51c2VkIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZsYXRfbmFtZXNwYWNlIiwgZmxhdF9fbmFtZXNwYWNlLCBGbGFnLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQpAQCAtMTA1OCw3ICsxMTAwLDcgQEAKIE9QVElPTihwcmVmaXhfMSwgImZuZXN0ZWQtZnVuY3Rpb25zIiwgZm5lc3RlZF9mdW5jdGlvbnMsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbmV3LWFsaWdubWVudD0iLCBmbmV3X2FsaWdubWVudF9FUSwgSm9pbmVkLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCiAgICAgICAgIlNwZWNpZmllcyB0aGUgbGFyZ2VzdCBhbGlnbm1lbnQgZ3VhcmFudGVlZCBieSAnOjpvcGVyYXRvciBuZXcoc2l6ZV90KSciLCAiPGFsaWduPiIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJmbmV3LWFsaWdubWVudCIsIGFub255bW91c18xNywgU2VwYXJhdGUsIElOVkFMSUQsIGZuZXdfYWxpZ25tZW50X0VRLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZm5ldy1hbGlnbm1lbnQiLCBhbm9ueW1vdXNfMTksIFNlcGFyYXRlLCBJTlZBTElELCBmbmV3X2FsaWdubWVudF9FUSwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuZXh0LXJ1bnRpbWUiLCBmbmV4dF9ydW50aW1lLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLWFjY2Vzcy1jb250cm9sIiwgZm5vX2FjY2Vzc19jb250cm9sLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCiAgICAgICAgIkRpc2FibGUgQysrIGFjY2VzcyBjb250cm9sIiwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTEwNzEsNyArMTExMyw3IEBACiBPUFRJT04ocHJlZml4XzEsICJmbm8tYWxpZ24tbGFiZWxzIiwgYWxpZ25fbGFiZWxzX2ZubywgRmxhZywgY2xhbmdfaWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tYWxpZ24tbG9vcHMiLCBhbGlnbl9sb29wc19mbm8sIEZsYWcsIGNsYW5nX2lnbm9yZWRfZ2NjX29wdGltaXphdGlvbl9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLWFsaWduZWQtYWxsb2NhdGlvbiIsIGZub19hbGlnbmVkX2FsbG9jYXRpb24sIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKLU9QVElPTihwcmVmaXhfMSwgImZuby1hbGlnbmVkLW5ldyIsIGFub255bW91c18xOSwgRmxhZywgSU5WQUxJRCwgZm5vX2FsaWduZWRfYWxsb2NhdGlvbiwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZuby1hbGlnbmVkLW5ldyIsIGFub255bW91c18yMSwgRmxhZywgSU5WQUxJRCwgZm5vX2FsaWduZWRfYWxsb2NhdGlvbiwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1hbGwtaW50cmluc2ljcyIsIGFsbF9pbnRyaW5zaWNzX2ZubywgRmxhZywgZ2ZvcnRyYW5fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tYWxsb3ctZWRpdG9yLXBsYWNlaG9sZGVycyIsIGZub19hbGxvd19lZGl0b3JfcGxhY2Vob2xkZXJzLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLWFsdGl2ZWMiLCBmbm9fYWx0aXZlYywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgRHJpdmVyT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQpAQCAtMTEwNCw3ICsxMTQ2LDcgQEAKICAgICAgICAiRGlzYWJsZSBDKysgc3RhdGljIGRlc3RydWN0b3IgcmVnaXN0cmF0aW9uIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1jYWxsZXItc2F2ZXMiLCBjYWxsZXJfc2F2ZXNfZm5vLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2djY19vcHRpbWl6YXRpb25fZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSWdub3JlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1jYXJldC1kaWFnbm9zdGljcyIsIGZub19jYXJldF9kaWFnbm9zdGljcywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8xLCAiZm5vLWNoYXI4X3QiLCBmbm9fY2hhcjhfX3QsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsCitPUFRJT04ocHJlZml4XzEsICJmbm8tY2hhcjhfdCIsIGZub19jaGFyOF9fdCwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLAogICAgICAgICJEaXNhYmxlIEMrKyBidWlsdGluIHR5cGUgY2hhcjhfdCIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tY2hlY2stYXJyYXktdGVtcG9yYXJpZXMiLCBjaGVja19hcnJheV90ZW1wb3Jhcmllc19mbm8sIEZsYWcsIGdmb3J0cmFuX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLWNoZWNrLW5ldyIsIGZjaGVja19uZXdfZm5vLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC0xMTQwLDYgKzExODIsNyBAQAogICAgICAgICJEbyBub3QgZW1pdCBtYWNybyBkZWJ1ZyBpbmZvcm1hdGlvbiIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tZGVidWctcGFzcy1tYW5hZ2VyIiwgZm5vX2RlYnVnX3Bhc3NfbWFuYWdlciwgRmxhZywgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCiAgICAgICAgIkRpc2FibGVzIGRlYnVnIHByaW50aW5nIGZvciB0aGUgbmV3IHBhc3MgbWFuYWdlciIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmbm8tZGVidWctcmFuZ2VzLWJhc2UtYWRkcmVzcyIsIGZub19kZWJ1Z19yYW5nZXNfYmFzZV9hZGRyZXNzLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tZGVidWctdHlwZXMtc2VjdGlvbiIsIGZub19kZWJ1Z190eXBlc19zZWN0aW9uLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tZGVjbHNwZWMiLCBmbm9fZGVjbHNwZWMsIEZsYWcsIGZfY2xhbmdfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwKICAgICAgICAiRGlzYWxsb3cgX19kZWNsc3BlYyBhcyBhIGtleXdvcmQiLCBudWxscHRyLCBudWxscHRyKQpAQCAtMTE0Nyw3ICsxMTkwLDcgQEAKIE9QVElPTihwcmVmaXhfMSwgImZuby1kZWZhdWx0LWlubGluZSIsIGRlZmF1bHRfaW5saW5lX2ZubywgRmxhZywgY2xhbmdfaWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tZGVmYXVsdC1pbnRlZ2VyLTgiLCBkZWZhdWx0X2ludGVnZXJfOF9mbm8sIEZsYWcsIGdmb3J0cmFuX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLWRlZmF1bHQtcmVhbC04IiwgZGVmYXVsdF9yZWFsXzhfZm5vLCBGbGFnLCBnZm9ydHJhbl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKLU9QVElPTihwcmVmaXhfMSwgImZuby1kZWZlci1wb3AiLCBhbm9ueW1vdXNfMTEsIEZsYWcsIGNsYW5nX2lnbm9yZWRfZ2NjX29wdGltaXphdGlvbl9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZm5vLWRlZmVyLXBvcCIsIGFub255bW91c18xMywgRmxhZywgY2xhbmdfaWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tZGVsYXllZC10ZW1wbGF0ZS1wYXJzaW5nIiwgZm5vX2RlbGF5ZWRfdGVtcGxhdGVfcGFyc2luZywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgRHJpdmVyT3B0aW9uIHwgQ29yZU9wdGlvbiwgMCwKICAgICAgICAiRGlzYWJsZSBkZWxheWVkIHRlbXBsYXRlIHBhcnNpbmciLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLWRlbGV0ZS1udWxsLXBvaW50ZXItY2hlY2tzIiwgZm5vX2RlbGV0ZV9udWxsX3BvaW50ZXJfY2hlY2tzLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCkBAIC0xMTY4LDYgKzEyMTEsNyBAQAogICAgICAgICJEaXNhbGxvdyBhbHRlcm5hdGl2ZSB0b2tlbiByZXByZXNlbnRhdGlvbnMgJzw6JywgJzo+JywgJzwlJywgJyU+JywgJyU6JywgJyU6JTonIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1kaXNjYXJkLXZhbHVlLW5hbWVzIiwgZm5vX2Rpc2NhcmRfdmFsdWVfbmFtZXMsIEZsYWcsIGZfY2xhbmdfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIERyaXZlck9wdGlvbiwgMCwKICAgICAgICAiRG8gbm90IGRpc2NhcmQgdmFsdWUgbmFtZXMgaW4gTExWTSBJUiIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmbm8tZGxsZXhwb3J0LWlubGluZXMiLCBmbm9fZGxsZXhwb3J0X2lubGluZXMsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLWRvbGxhci1vayIsIGRvbGxhcl9va19mbm8sIEZsYWcsIGdmb3J0cmFuX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLWRvbGxhcnMtaW4taWRlbnRpZmllcnMiLCBmbm9fZG9sbGFyc19pbl9pZGVudGlmaWVycywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLAogICAgICAgICJEaXNhbGxvdyAnJCcgaW4gaWRlbnRpZmllcnMiLCBudWxscHRyLCBudWxscHRyKQpAQCAtMTE4NywxMiArMTIzMSwxMiBAQAogT1BUSU9OKHByZWZpeF8xLCAiZm5vLWVtdWxhdGVkLXRscyIsIGZub19lbXVsYXRlZF90bHMsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1lc2NhcGluZy1ibG9jay10YWlsLWNhbGxzIiwgZm5vX2VzY2FwaW5nX2Jsb2NrX3RhaWxfY2FsbHMsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1leGNlcHRpb25zIiwgZm5vX2V4Y2VwdGlvbnMsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJmbm8tZXhwZW5zaXZlLW9wdGltaXphdGlvbnMiLCBhbm9ueW1vdXNfOSwgRmxhZywgY2xhbmdfaWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmbm8tZXhwZW5zaXZlLW9wdGltaXphdGlvbnMiLCBhbm9ueW1vdXNfMTEsIEZsYWcsIGNsYW5nX2lnbm9yZWRfZ2NjX29wdGltaXphdGlvbl9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLWV4cGVyaW1lbnRhbC1pc2VsIiwgZm5vX2V4cGVyaW1lbnRhbF9pc2VsLCBGbGFnLCBmX2NsYW5nX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAogICAgICAgICJEaXNhYmxlcyB0aGUgZXhwZXJpbWVudGFsIGdsb2JhbCBpbnN0cnVjdGlvbiBzZWxlY3RvciIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tZXhwZXJpbWVudGFsLW5ldy1wYXNzLW1hbmFnZXIiLCBmbm9fZXhwZXJpbWVudGFsX25ld19wYXNzX21hbmFnZXIsIEZsYWcsIGZfY2xhbmdfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwKICAgICAgICAiRGlzYWJsZXMgYW4gZXhwZXJpbWVudGFsIG5ldyBwYXNzIG1hbmFnZXIgaW4gTExWTS4iLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8xLCAiZm5vLWV4dGVuZGVkLWlkZW50aWZpZXJzIiwgYW5vbnltb3VzXzEzLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBVbnN1cHBvcnRlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZuby1leHRlbmRlZC1pZGVudGlmaWVycyIsIGFub255bW91c18xNSwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgVW5zdXBwb3J0ZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tZXh0ZXJuYWwtYmxhcyIsIGV4dGVybmFsX2JsYXNfZm5vLCBGbGFnLCBnZm9ydHJhbl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1mMmMiLCBmMmNfZm5vLCBGbGFnLCBnZm9ydHJhbl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1mYXN0LW1hdGgiLCBmbm9fZmFzdF9tYXRoLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQpAQCAtMTIyMyw3ICsxMjY3LDcgQEAKIE9QVElPTihwcmVmaXhfMSwgImZuby1nbnU4OS1pbmxpbmUiLCBmbm9fZ251ODlfaW5saW5lLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLWdudSIsIGdudV9mbm8sIEZsYWcsIGNsYW5nX2lnbm9yZWRfZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSWdub3JlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1ncHUtcmRjIiwgZm5vX2dwdV9yZGMsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJmbm8taG9ub3ItaW5maW5pdGVzIiwgYW5vbnltb3VzXzE1LCBGbGFnLCBJTlZBTElELCBmbm9faG9ub3JfaW5maW5pdGllcywgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZuby1ob25vci1pbmZpbml0ZXMiLCBhbm9ueW1vdXNfMTcsIEZsYWcsIElOVkFMSUQsIGZub19ob25vcl9pbmZpbml0aWVzLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLWhvbm9yLWluZmluaXRpZXMiLCBmbm9faG9ub3JfaW5maW5pdGllcywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1ob25vci1uYW5zIiwgZm5vX2hvbm9yX25hbnMsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8taWRlbnQiLCBhbm9ueW1vdXNfNCwgRmxhZywgZl9Hcm91cCwgUW4sIG51bGxwdHIsIENDMU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTEyNDYsNyArMTI5MCw3IEBACiBPUFRJT04ocHJlZml4XzEsICJmbm8taXZvcHRzIiwgaXZvcHRzX2ZubywgRmxhZywgY2xhbmdfaWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tanVtcC10YWJsZXMiLCBmbm9fanVtcF90YWJsZXMsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwKICAgICAgICAiRG8gbm90IHVzZSBqdW1wIHRhYmxlcyBmb3IgbG93ZXJpbmcgc3dpdGNoZXMiLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8xLCAiZm5vLWtlZXAtaW5saW5lLWZ1bmN0aW9ucyIsIGFub255bW91c18zMF9mbm8sIEZsYWcsIGNsYW5nX2lnbm9yZWRfZ2NjX29wdGltaXphdGlvbl9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZm5vLWtlZXAtaW5saW5lLWZ1bmN0aW9ucyIsIGFub255bW91c18zNF9mbm8sIEZsYWcsIGNsYW5nX2lnbm9yZWRfZ2NjX29wdGltaXphdGlvbl9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLWxheC12ZWN0b3ItY29udmVyc2lvbnMiLCBmbm9fbGF4X3ZlY3Rvcl9jb252ZXJzaW9ucywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLAogICAgICAgICJEaXNhbGxvdyBpbXBsaWNpdCBjb252ZXJzaW9ucyBiZXR3ZWVuIHZlY3RvcnMgd2l0aCBhIGRpZmZlcmVudCBudW1iZXIgb2YgZWxlbWVudHMgb3IgZGlmZmVyZW50IGVsZW1lbnQgdHlwZXMiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLWxpbWl0LWRlYnVnLWluZm8iLCBmbm9fbGltaXRfZGVidWdfaW5mbywgRmxhZywgSU5WQUxJRCwgZnN0YW5kYWxvbmVfZGVidWcsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC0xMjc5LDYgKzEzMjMsNyBAQAogT1BUSU9OKHByZWZpeF8xLCAiZm5vLW5vbi1jYWxsLWV4Y2VwdGlvbnMiLCBub25fY2FsbF9leGNlcHRpb25zX2ZubywgRmxhZywgY2xhbmdfaWdub3JlZF9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLW9iamMtYXJjLWV4Y2VwdGlvbnMiLCBmbm9fb2JqY19hcmNfZXhjZXB0aW9ucywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1vYmpjLWFyYyIsIGZub19vYmpjX2FyYywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZuby1vYmpjLWNvbnZlcnQtbWVzc2FnZXMtdG8tcnVudGltZS1jYWxscyIsIGZub19vYmpjX2NvbnZlcnRfbWVzc2FnZXNfdG9fcnVudGltZV9jYWxscywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLW9iamMtZXhjZXB0aW9ucyIsIGZub19vYmpjX2V4Y2VwdGlvbnMsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tb2JqYy1pbmZlci1yZWxhdGVkLXJlc3VsdC10eXBlIiwgZm5vX29iamNfaW5mZXJfcmVsYXRlZF9yZXN1bHRfdHlwZSwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLAogICAgICAgICJkbyBub3QgaW5mZXIgT2JqZWN0aXZlLUMgcmVsYXRlZCByZXN1bHQgdHlwZSBiYXNlZCBvbiBtZXRob2QgZmFtaWx5IiwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTEyODgsNiArMTMzMyw3IEBACiBPUFRJT04ocHJlZml4XzEsICJmbm8tb21pdC1mcmFtZS1wb2ludGVyIiwgZm5vX29taXRfZnJhbWVfcG9pbnRlciwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1vcGVubXAtY3VkYS1mb3JjZS1mdWxsLXJ1bnRpbWUiLCBmbm9fb3Blbm1wX2N1ZGFfZm9yY2VfZnVsbF9ydW50aW1lLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBOb0FyZ3VtZW50VW51c2VkIHwgSGVscEhpZGRlbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1vcGVubXAtY3VkYS1tb2RlIiwgZm5vX29wZW5tcF9jdWRhX21vZGUsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIE5vQXJndW1lbnRVbnVzZWQgfCBIZWxwSGlkZGVuLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZm5vLW9wZW5tcC1vcHRpbWlzdGljLWNvbGxhcHNlIiwgZm5vX29wZW5tcF9vcHRpbWlzdGljX2NvbGxhcHNlLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBOb0FyZ3VtZW50VW51c2VkIHwgSGVscEhpZGRlbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1vcGVubXAtc2ltZCIsIGZub19vcGVubXBfc2ltZCwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Bcmd1bWVudFVudXNlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1vcGVubXAiLCBmbm9fb3Blbm1wLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBOb0FyZ3VtZW50VW51c2VkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLW9wZXJhdG9yLW5hbWVzIiwgZm5vX29wZXJhdG9yX25hbWVzLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCkBAIC0xMzM2LDYgKzEzODIsOCBAQAogT1BUSU9OKHByZWZpeF8xLCAiZm5vLXJlYWwtOC1yZWFsLTQiLCByZWFsXzhfcmVhbF80X2ZubywgRmxhZywgZ2ZvcnRyYW5fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tcmVhbGxvYy1saHMiLCByZWFsbG9jX2xoc19mbm8sIEZsYWcsIGdmb3J0cmFuX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLXJlY2lwcm9jYWwtbWF0aCIsIGZub19yZWNpcHJvY2FsX21hdGgsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmbm8tcmVjb3JkLWNvbW1hbmQtbGluZSIsIGZub19yZWNvcmRfY29tbWFuZF9saW5lLCBGbGFnLCBmX2NsYW5nX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZm5vLXJlY29yZC1nY2Mtc3dpdGNoZXMiLCBhbm9ueW1vdXNfOSwgRmxhZywgSU5WQUxJRCwgZm5vX3JlY29yZF9jb21tYW5kX2xpbmUsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tcmVjdXJzaXZlIiwgcmVjdXJzaXZlX2ZubywgRmxhZywgZ2ZvcnRyYW5fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tcmVnaXN0ZXItZ2xvYmFsLWR0b3JzLXdpdGgtYXRleGl0IiwgZm5vX3JlZ2lzdGVyX2dsb2JhbF9kdG9yc193aXRoX2F0ZXhpdCwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwKICAgICAgICAiRG9uJ3QgdXNlIGF0ZXhpdCBvciBfX2N4YV9hdGV4aXQgdG8gcmVnaXN0ZXIgZ2xvYmFsIGRlc3RydWN0b3JzIiwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTEzNTgsMTAgKzE0MDYsMTIgQEAKIE9QVElPTihwcmVmaXhfMSwgImZuby1ydHRpIiwgZm5vX3J0dGksIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwKICAgICAgICAiRGlzYWJsZSBnZW5lcmF0aW9uIG9mIHJ0dGkgaW5mb3JtYXRpb24iLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLXJ3cGkiLCBmbm9fcndwaSwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKLU9QVElPTihwcmVmaXhfMSwgImZuby1zYW5pdGl6ZS1hZGRyZXNzLXBvaXNvbi1jbGFzcy1tZW1iZXItYXJyYXktbmV3LWNvb2tpZSIsIGZub19zYW5pdGl6ZV9hZGRyZXNzX3BvaXNvbl9jbGFzc19tZW1iZXJfYXJyYXlfbmV3X2Nvb2tpZSwgRmxhZywgZl9jbGFuZ19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgQ29yZU9wdGlvbiwgMCwKLSAgICAgICAiRGlzYWJsZSBwb2lzb25pbmcgYXJyYXkgY29va2llcyB3aGVuIHVzaW5nIGNsYXNzIG1lbWJlciBvcGVyYXRvciBuZXdbXSBpbiBBZGRyZXNzU2FuaXRpemVyIiwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZuby1zYW5pdGl6ZS1hZGRyZXNzLXBvaXNvbi1jdXN0b20tYXJyYXktY29va2llIiwgZm5vX3Nhbml0aXplX2FkZHJlc3NfcG9pc29uX2N1c3RvbV9hcnJheV9jb29raWUsIEZsYWcsIGZfY2xhbmdfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IENvcmVPcHRpb24sIDAsCisgICAgICAgIkRpc2FibGUgcG9pc29uaW5nIGFycmF5IGNvb2tpZXMgd2hlbiB1c2luZyBjdXN0b20gb3BlcmF0b3IgbmV3W10gaW4gQWRkcmVzc1Nhbml0aXplciIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tc2FuaXRpemUtYWRkcmVzcy11c2UtYWZ0ZXItc2NvcGUiLCBmbm9fc2FuaXRpemVfYWRkcmVzc191c2VfYWZ0ZXJfc2NvcGUsIEZsYWcsIGZfY2xhbmdfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IENvcmVPcHRpb24sIDAsCiAgICAgICAgIkRpc2FibGUgdXNlLWFmdGVyLXNjb3BlIGRldGVjdGlvbiBpbiBBZGRyZXNzU2FuaXRpemVyIiwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZuby1zYW5pdGl6ZS1hZGRyZXNzLXVzZS1vZHItaW5kaWNhdG9yIiwgZm5vX3Nhbml0aXplX2FkZHJlc3NfdXNlX29kcl9pbmRpY2F0b3IsIEZsYWcsIGZfY2xhbmdfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IENvcmVPcHRpb24sIDAsCisgICAgICAgIkRpc2FibGUgT0RSIGluZGljYXRvciBnbG9iYWxzIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1zYW5pdGl6ZS1ibGFja2xpc3QiLCBmbm9fc2FuaXRpemVfYmxhY2tsaXN0LCBGbGFnLCBmX2NsYW5nX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBDb3JlT3B0aW9uLCAwLAogICAgICAgICJEb24ndCB1c2UgYmxhY2tsaXN0IGZpbGUgZm9yIHNhbml0aXplcnMiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLXNhbml0aXplLWNmaS1jcm9zcy1kc28iLCBmbm9fc2FuaXRpemVfY2ZpX2Nyb3NzX2RzbywgRmxhZywgZl9jbGFuZ19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgQ29yZU9wdGlvbiwgMCwKQEAgLTE0MTcsNiArMTQ2Nyw3IEBACiBPUFRJT04ocHJlZml4XzEsICJmbm8tc3BlbGwtY2hlY2tpbmciLCBmbm9fc3BlbGxfY2hlY2tpbmcsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwKICAgICAgICAiRGlzYWJsZSBzcGVsbC1jaGVja2luZyIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tc3BsaXQtZHdhcmYtaW5saW5pbmciLCBmbm9fc3BsaXRfZHdhcmZfaW5saW5pbmcsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZuby1zcGxpdC1sdG8tdW5pdCIsIGZub19zcGxpdF9sdG9fdW5pdCwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ29yZU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1zdGFjay1hcnJheXMiLCBzdGFja19hcnJheXNfZm5vLCBGbGFnLCBnZm9ydHJhbl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby1zdGFjay1jaGVjayIsIHN0YWNrX2NoZWNrX2ZubywgRmxhZywgY2xhbmdfaWdub3JlZF9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLXN0YWNrLXByb3RlY3RvciIsIGZub19zdGFja19wcm90ZWN0b3IsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsCkBAIC0xNDQyLDEwICsxNDkzLDEwIEBACiBPUFRJT04ocHJlZml4XzEsICJmbm8tdHJhcHBpbmctbWF0aCIsIGZub190cmFwcGluZ19tYXRoLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmbm8tdHJlZS1kY2UiLCB0cmVlX2RjZV9mbm8sIEZsYWcsIGNsYW5nX2lnbm9yZWRfZ2NjX29wdGltaXphdGlvbl9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLXRyZWUtc2FsaWFzIiwgdHJlZV9zYWxpYXNfZm5vLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJmbm8tdHJlZS1zbHAtdmVjdG9yaXplIiwgYW5vbnltb3VzXzI0LCBGbGFnLCBJTlZBTElELCBmbm9fc2xwX3ZlY3Rvcml6ZSwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZuby10cmVlLXNscC12ZWN0b3JpemUiLCBhbm9ueW1vdXNfMjYsIEZsYWcsIElOVkFMSUQsIGZub19zbHBfdmVjdG9yaXplLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLXRyZWUtdGVyIiwgdHJlZV90ZXJfZm5vLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2djY19vcHRpbWl6YXRpb25fZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSWdub3JlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby10cmVlLXZlY3Rvcml6ZXItdmVyYm9zZSIsIHRyZWVfdmVjdG9yaXplcl92ZXJib3NlX2ZubywgRmxhZywgY2xhbmdfaWdub3JlZF9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8xLCAiZm5vLXRyZWUtdmVjdG9yaXplIiwgYW5vbnltb3VzXzIyLCBGbGFnLCBJTlZBTElELCBmbm9fdmVjdG9yaXplLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZm5vLXRyZWUtdmVjdG9yaXplIiwgYW5vbnltb3VzXzI0LCBGbGFnLCBJTlZBTElELCBmbm9fdmVjdG9yaXplLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm5vLXRyZWUtdnJwIiwgdHJlZV92cnBfZm5vLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2djY19vcHRpbWl6YXRpb25fZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSWdub3JlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby10cmVlX2xvb3BfaW0iLCB0cmVlX2xvb3BfaW1fZm5vLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2djY19vcHRpbWl6YXRpb25fZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSWdub3JlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZuby10cmVlX2xvb3BfaXZjYW5vbiIsIHRyZWVfbG9vcF9pdmNhbm9uX2ZubywgRmxhZywgY2xhbmdfaWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC0xNTAyLDYgKzE1NTMsNyBAQAogICAgICAgICJTeW50aGVzaXplIHJldGFpbiBhbmQgcmVsZWFzZSBjYWxscyBmb3IgT2JqZWN0aXZlLUMgcG9pbnRlcnMiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm9iamMtYXRkZWZzIiwgZm9iamNfYXRkZWZzLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmb2JqYy1jYWxsLWN4eC1jZHRvcnMiLCBmb2JqY19jYWxsX2N4eF9jZHRvcnMsIEZsYWcsIGNsYW5nX2lnbm9yZWRfZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSWdub3JlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZvYmpjLWNvbnZlcnQtbWVzc2FnZXMtdG8tcnVudGltZS1jYWxscyIsIGZvYmpjX2NvbnZlcnRfbWVzc2FnZXNfdG9fcnVudGltZV9jYWxscywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZvYmpjLWRpc3BhdGNoLW1ldGhvZD0iLCBmb2JqY19kaXNwYXRjaF9tZXRob2RfRVEsIEpvaW5lZCwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCiAgICAgICAgIk9iamVjdGl2ZS1DIGRpc3BhdGNoIG1ldGhvZCB0byB1c2UiLCBudWxscHRyLCAibGVnYWN5LG5vbi1sZWdhY3ksbWl4ZWQiKQogT1BUSU9OKHByZWZpeF8xLCAiZm9iamMtZXhjZXB0aW9ucyIsIGZvYmpjX2V4Y2VwdGlvbnMsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwKQEAgLTE1MjYsMTMgKzE1NzgsMTYgQEAKIE9QVElPTihwcmVmaXhfMSwgImZvYmpjLXdlYWsiLCBmb2JqY193ZWFrLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCiAgICAgICAgIkVuYWJsZSBBUkMtc3R5bGUgd2VhayByZWZlcmVuY2VzIGluIE9iamVjdGl2ZS1DIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZvbWl0LWZyYW1lLXBvaW50ZXIiLCBmb21pdF9mcmFtZV9wb2ludGVyLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZm9wZW5tcC1jdWRhLWJsb2Nrcy1wZXItc209IiwgZm9wZW5tcF9jdWRhX2Jsb2Nrc19wZXJfc21fRVEsIEpvaW5lZCwgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Bcmd1bWVudFVudXNlZCB8IEhlbHBIaWRkZW4sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmb3Blbm1wLWN1ZGEtZm9yY2UtZnVsbC1ydW50aW1lIiwgZm9wZW5tcF9jdWRhX2ZvcmNlX2Z1bGxfcnVudGltZSwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Bcmd1bWVudFVudXNlZCB8IEhlbHBIaWRkZW4sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmb3Blbm1wLWN1ZGEtbW9kZSIsIGZvcGVubXBfY3VkYV9tb2RlLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBOb0FyZ3VtZW50VW51c2VkIHwgSGVscEhpZGRlbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZvcGVubXAtY3VkYS1udW1iZXItb2Ytc209IiwgZm9wZW5tcF9jdWRhX251bWJlcl9vZl9zbV9FUSwgSm9pbmVkLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBOb0FyZ3VtZW50VW51c2VkIHwgSGVscEhpZGRlbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZvcGVubXAtZHVtcC1vZmZsb2FkLWxpbmtlci1zY3JpcHQiLCBmb3Blbm1wX2R1bXBfb2ZmbG9hZF9saW5rZXJfc2NyaXB0LCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBOb0FyZ3VtZW50VW51c2VkIHwgSGVscEhpZGRlbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZvcGVubXAtaG9zdC1pci1maWxlLXBhdGgiLCBmb3Blbm1wX2hvc3RfaXJfZmlsZV9wYXRoLCBTZXBhcmF0ZSwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCiAgICAgICAgIlBhdGggdG8gdGhlIElSIGZpbGUgcHJvZHVjZWQgYnkgdGhlIGZyb250ZW5kIGZvciB0aGUgaG9zdC4iLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZm9wZW5tcC1pcy1kZXZpY2UiLCBmb3Blbm1wX2lzX2RldmljZSwgRmxhZywgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCiAgICAgICAgIkdlbmVyYXRlIGNvZGUgb25seSBmb3IgYW4gT3Blbk1QIHRhcmdldCBkZXZpY2UuIiwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZvcGVubXAtb3B0aW1pc3RpYy1jb2xsYXBzZSIsIGZvcGVubXBfb3B0aW1pc3RpY19jb2xsYXBzZSwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Bcmd1bWVudFVudXNlZCB8IEhlbHBIaWRkZW4sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmb3Blbm1wLXJlbG9jYXRhYmxlLXRhcmdldCIsIGZvcGVubXBfcmVsb2NhdGFibGVfdGFyZ2V0LCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBOb0FyZ3VtZW50VW51c2VkIHwgSGVscEhpZGRlbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZvcGVubXAtc2ltZCIsIGZvcGVubXBfc2ltZCwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Bcmd1bWVudFVudXNlZCwgMCwKICAgICAgICAiRW1pdCBPcGVuTVAgY29kZSBvbmx5IGZvciBTSU1ELWJhc2VkIGNvbnN0cnVjdHMuIiwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTE1ODAsNiArMTYzNSw4IEBACiBPUFRJT04ocHJlZml4XzEsICJmcGFyc2UtYWxsLWNvbW1lbnRzIiwgZnBhcnNlX2FsbF9jb21tZW50cywgRmxhZywgZl9jbGFuZ19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZnBhc2NhbC1zdHJpbmdzIiwgZnBhc2NhbF9zdHJpbmdzLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCiAgICAgICAgIlJlY29nbml6ZSBhbmQgY29uc3RydWN0IFBhc2NhbC1zdHlsZSBzdHJpbmcgbGl0ZXJhbHMiLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZnBhc3MtcGx1Z2luPSIsIGZwYXNzX3BsdWdpbl9FUSwgSm9pbmVkLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCisgICAgICAgIkxvYWQgcGFzcyBwbHVnaW4gZnJvbSBhIGR5bmFtaWMgc2hhcmVkIG9iamVjdCBmaWxlIChvbmx5IHdpdGggbmV3IHBhc3MgbWFuYWdlcikuIiwgIjxkc29wYXRoPiIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmcGNjLXN0cnVjdC1yZXR1cm4iLCBmcGNjX3N0cnVjdF9yZXR1cm4sIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwKICAgICAgICAiT3ZlcnJpZGUgdGhlIGRlZmF1bHQgQUJJIHRvIHJldHVybiBhbGwgc3RydWN0cyBvbiB0aGUgc3RhY2siLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZnBjaC1wcmVwcm9jZXNzIiwgZnBjaF9wcmVwcm9jZXNzLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQpAQCAtMTYwMyw2ICsxNjYwLDEwIEBACiBPUFRJT04ocHJlZml4XzEsICJmcHJvZmlsZS1hcmNzIiwgZnByb2ZpbGVfYXJjcywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZwcm9maWxlLWNvcnJlY3Rpb24iLCBwcm9maWxlX2NvcnJlY3Rpb25fZiwgRmxhZywgY2xhbmdfaWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmcHJvZmlsZS1kaXI9IiwgZnByb2ZpbGVfZGlyLCBKb2luZWQsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmcHJvZmlsZS1leGNsdWRlLWZpbGVzPSIsIGZwcm9maWxlX2V4Y2x1ZGVfZmlsZXNfRVEsIEpvaW5lZCwgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgQ29yZU9wdGlvbiwgMCwKKyAgICAgICAiSW5zdHJ1bWVudCBvbmx5IGZ1bmN0aW9ucyBmcm9tIGZpbGVzIHdoZXJlIG5hbWVzIGRvbid0IG1hdGNoIGFsbCB0aGUgcmVnZXhlcyBzZXBhcmF0ZWQgYnkgYSBzZW1pLWNvbG9uIiwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZwcm9maWxlLWZpbHRlci1maWxlcz0iLCBmcHJvZmlsZV9maWx0ZXJfZmlsZXNfRVEsIEpvaW5lZCwgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgQ29yZU9wdGlvbiwgMCwKKyAgICAgICAiSW5zdHJ1bWVudCBvbmx5IGZ1bmN0aW9ucyBmcm9tIGZpbGVzIHdoZXJlIG5hbWVzIG1hdGNoIGFueSByZWdleCBzZXBhcmF0ZWQgYnkgYSBzZW1pLWNvbG9uIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZwcm9maWxlLWdlbmVyYXRlLXNhbXBsaW5nIiwgcHJvZmlsZV9nZW5lcmF0ZV9zYW1wbGluZ19mLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmcHJvZmlsZS1nZW5lcmF0ZT0iLCBmcHJvZmlsZV9nZW5lcmF0ZV9FUSwgSm9pbmVkLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBEcml2ZXJPcHRpb24sIDAsCiAgICAgICAgIkdlbmVyYXRlIGluc3RydW1lbnRlZCBjb2RlIHRvIGNvbGxlY3QgZXhlY3V0aW9uIGNvdW50cyBpbnRvIDxkaXJlY3Rvcnk+L2RlZmF1bHQucHJvZnJhdyAob3ZlcnJpZGRlbiBieSBMTFZNX1BST0ZJTEVfRklMRSBlbnYgdmFyKSIsICI8ZGlyZWN0b3J5PiIsIG51bGxwdHIpCkBAIC0xNjIxLDYgKzE2ODIsOSBAQAogICAgICAgICJTcGVjaWZ5IHRoZSBwcm9maWxlIHBhdGggaW4gUEdPIHVzZSBjb21waWxhdGlvbiIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmcHJvZmlsZS1pbnN0cnVtZW50PSIsIGZwcm9maWxlX2luc3RydW1lbnRfRVEsIEpvaW5lZCwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCiAgICAgICAgIkVuYWJsZSBQR08gaW5zdHJ1bWVudGF0aW9uLiBUaGUgYWNjZXB0ZWQgdmFsdWUgaXMgY2xhbmcsIGxsdm0sIG9yIG5vbmUiLCBudWxscHRyLCAibm9uZSxjbGFuZyxsbHZtIikKK09QVElPTihwcmVmaXhfMSwgImZwcm9maWxlLXJlbWFwcGluZy1maWxlPSIsIGZwcm9maWxlX3JlbWFwcGluZ19maWxlX0VRLCBKb2luZWQsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IENvcmVPcHRpb24sIDAsCisgICAgICAgIlVzZSB0aGUgcmVtYXBwaW5ncyBkZXNjcmliZWQgaW4gPGZpbGU+IHRvIG1hdGNoIHRoZSBwcm9maWxlIGRhdGEgYWdhaW5zdCBuYW1lcyBpbiB0aGUgcHJvZ3JhbSIsICI8ZmlsZT4iLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZnByb2ZpbGUtcmVtYXBwaW5nLWZpbGUiLCBmcHJvZmlsZV9yZW1hcHBpbmdfZmlsZSwgU2VwYXJhdGUsIGZfR3JvdXAsIGZwcm9maWxlX3JlbWFwcGluZ19maWxlX0VRLCBudWxscHRyLCBDb3JlT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZnByb2ZpbGUtcmV1c2VkaXN0IiwgcHJvZmlsZV9yZXVzZWRpc3RfZiwgRmxhZywgY2xhbmdfaWdub3JlZF9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZnByb2ZpbGUtc2FtcGxlLWFjY3VyYXRlIiwgZnByb2ZpbGVfc2FtcGxlX2FjY3VyYXRlLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBEcml2ZXJPcHRpb24gfCBDQzFPcHRpb24sIDAsCiAgICAgICAgIlNwZWNpZmllcyB0aGF0IHRoZSBzYW1wbGUgcHJvZmlsZSBpcyBhY2N1cmF0ZSIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC0xNjQ3LDYgKzE3MTEsOCBAQAogT1BUSU9OKHByZWZpeF8xLCAiZnJlYWxsb2MtbGhzIiwgcmVhbGxvY19saHNfZiwgRmxhZywgZ2ZvcnRyYW5fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmcmVjaXByb2NhbC1tYXRoIiwgZnJlY2lwcm9jYWxfbWF0aCwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLAogICAgICAgICJBbGxvdyBkaXZpc2lvbiBvcGVyYXRpb25zIHRvIGJlIHJlYXNzb2NpYXRlZCIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmcmVjb3JkLWNvbW1hbmQtbGluZSIsIGZyZWNvcmRfY29tbWFuZF9saW5lLCBGbGFnLCBmX2NsYW5nX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZnJlY29yZC1nY2Mtc3dpdGNoZXMiLCBhbm9ueW1vdXNfOCwgRmxhZywgSU5WQUxJRCwgZnJlY29yZF9jb21tYW5kX2xpbmUsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmcmVjb3JkLW1hcmtlcj0iLCBmcmVjb3JkX21hcmtlcl9FUSwgSm9pbmVkLCBnZm9ydHJhbl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZyZWN1cnNpdmUiLCByZWN1cnNpdmVfZiwgRmxhZywgZ2ZvcnRyYW5fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmcmVnLXN0cnVjdC1yZXR1cm4iLCBmcmVnX3N0cnVjdF9yZXR1cm4sIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwKQEAgLTE2NzksMTAgKzE3NDUsMTIgQEAKICAgICAgICAiTGV2ZWwgb2YgZmllbGQgcGFkZGluZyBmb3IgQWRkcmVzc1Nhbml0aXplciIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmc2FuaXRpemUtYWRkcmVzcy1nbG9iYWxzLWRlYWQtc3RyaXBwaW5nIiwgZnNhbml0aXplX2FkZHJlc3NfZ2xvYmFsc19kZWFkX3N0cmlwcGluZywgRmxhZywgZl9jbGFuZ19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgQ29yZU9wdGlvbiwgMCwKICAgICAgICAiRW5hYmxlIGxpbmtlciBkZWFkIHN0cmlwcGluZyBvZiBnbG9iYWxzIGluIEFkZHJlc3NTYW5pdGl6ZXIiLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8xLCAiZnNhbml0aXplLWFkZHJlc3MtcG9pc29uLWNsYXNzLW1lbWJlci1hcnJheS1uZXctY29va2llIiwgZnNhbml0aXplX2FkZHJlc3NfcG9pc29uX2NsYXNzX21lbWJlcl9hcnJheV9uZXdfY29va2llLCBGbGFnLCBmX2NsYW5nX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBDb3JlT3B0aW9uLCAwLAotICAgICAgICJFbmFibGUgcG9pc29uaW5nIGFycmF5IGNvb2tpZXMgd2hlbiB1c2luZyBjbGFzcyBtZW1iZXIgb3BlcmF0b3IgbmV3W10gaW4gQWRkcmVzc1Nhbml0aXplciIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmc2FuaXRpemUtYWRkcmVzcy1wb2lzb24tY3VzdG9tLWFycmF5LWNvb2tpZSIsIGZzYW5pdGl6ZV9hZGRyZXNzX3BvaXNvbl9jdXN0b21fYXJyYXlfY29va2llLCBGbGFnLCBmX2NsYW5nX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBDb3JlT3B0aW9uLCAwLAorICAgICAgICJFbmFibGUgcG9pc29uaW5nIGFycmF5IGNvb2tpZXMgd2hlbiB1c2luZyBjdXN0b20gb3BlcmF0b3IgbmV3W10gaW4gQWRkcmVzc1Nhbml0aXplciIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmc2FuaXRpemUtYWRkcmVzcy11c2UtYWZ0ZXItc2NvcGUiLCBmc2FuaXRpemVfYWRkcmVzc191c2VfYWZ0ZXJfc2NvcGUsIEZsYWcsIGZfY2xhbmdfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IENvcmVPcHRpb24sIDAsCiAgICAgICAgIkVuYWJsZSB1c2UtYWZ0ZXItc2NvcGUgZGV0ZWN0aW9uIGluIEFkZHJlc3NTYW5pdGl6ZXIiLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZnNhbml0aXplLWFkZHJlc3MtdXNlLW9kci1pbmRpY2F0b3IiLCBmc2FuaXRpemVfYWRkcmVzc191c2Vfb2RyX2luZGljYXRvciwgRmxhZywgZl9jbGFuZ19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgQ29yZU9wdGlvbiwgMCwKKyAgICAgICAiRW5hYmxlIE9EUiBpbmRpY2F0b3IgZ2xvYmFscyB0byBhdm9pZCBmYWxzZSBPRFIgdmlvbGF0aW9uIHJlcG9ydHMgaW4gcGFydGlhbGx5IHNhbml0aXplZCBwcm9ncmFtcyBhdCB0aGUgY29zdCBvZiBhbiBpbmNyZWFzZSBpbiBiaW5hcnkgc2l6ZSIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmc2FuaXRpemUtYmxhY2tsaXN0PSIsIGZzYW5pdGl6ZV9ibGFja2xpc3QsIEpvaW5lZCwgZl9jbGFuZ19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgQ29yZU9wdGlvbiwgMCwKICAgICAgICAiUGF0aCB0byBibGFja2xpc3QgZmlsZSBmb3Igc2FuaXRpemVycyIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmc2FuaXRpemUtY2ZpLWNyb3NzLWRzbyIsIGZzYW5pdGl6ZV9jZmlfY3Jvc3NfZHNvLCBGbGFnLCBmX2NsYW5nX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBDb3JlT3B0aW9uLCAwLApAQCAtMTcxNyw2ICsxNzg1LDggQEAKICAgICAgICAiU2FuaXRpemVyIGNvdmVyYWdlIHR5cGUiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZnNhbml0aXplLWNvdmVyYWdlPSIsIGZzYW5pdGl6ZV9jb3ZlcmFnZSwgQ29tbWFKb2luZWQsIGZfY2xhbmdfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IENvcmVPcHRpb24sIDAsCiAgICAgICAgIlNwZWNpZnkgdGhlIHR5cGUgb2YgY292ZXJhZ2UgaW5zdHJ1bWVudGF0aW9uIGZvciBTYW5pdGl6ZXJzIiwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZzYW5pdGl6ZS1od2FkZHJlc3MtYWJpPSIsIGZzYW5pdGl6ZV9od2FkZHJlc3NfYWJpX0VRLCBKb2luZWQsIGZfY2xhbmdfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IENvcmVPcHRpb24sIDAsCisgICAgICAgIlNlbGVjdCB0aGUgSFdBZGRyZXNzU2FuaXRpemVyIEFCSSB0byB0YXJnZXQgKGludGVyY2VwdG9yIG9yIHBsYXRmb3JtLCBkZWZhdWx0IGludGVyY2VwdG9yKSIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmc2FuaXRpemUtbGluay1jKystcnVudGltZSIsIGZzYW5pdGl6ZV9saW5rX2N4eF9ydW50aW1lLCBGbGFnLCBmX2NsYW5nX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBDb3JlT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZnNhbml0aXplLW1lbW9yeS10cmFjay1vcmlnaW5zPSIsIGZzYW5pdGl6ZV9tZW1vcnlfdHJhY2tfb3JpZ2luc19FUSwgSm9pbmVkLCBmX2NsYW5nX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBDb3JlT3B0aW9uLCAwLAogICAgICAgICJFbmFibGUgb3JpZ2lucyB0cmFja2luZyBpbiBNZW1vcnlTYW5pdGl6ZXIiLCBudWxscHRyLCBudWxscHRyKQpAQCAtMTc0NSw3ICsxODE1LDcgQEAKICAgICAgICAiVHVybiBvbiBydW50aW1lIGNoZWNrcyBmb3IgdmFyaW91cyBmb3JtcyBvZiB1bmRlZmluZWQgb3Igc3VzcGljaW91cyBiZWhhdmlvci4gU2VlIHVzZXIgbWFudWFsIGZvciBhdmFpbGFibGUgY2hlY2tzIiwgIjxjaGVjaz4iLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZnNhdmUtb3B0aW1pemF0aW9uLXJlY29yZCIsIGZzYXZlX29wdGltaXphdGlvbl9yZWNvcmQsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsCiAgICAgICAgIkdlbmVyYXRlIGEgWUFNTCBvcHRpbWl6YXRpb24gcmVjb3JkIGZpbGUiLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8xLCAiZnNjaGVkLWludGVyYmxvY2siLCBhbm9ueW1vdXNfMjAsIEZsYWcsIGNsYW5nX2lnbm9yZWRfZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSWdub3JlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZzY2hlZC1pbnRlcmJsb2NrIiwgYW5vbnltb3VzXzIyLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmc2NoZWR1bGUtaW5zbnMyIiwgc2NoZWR1bGVfaW5zbnMyX2YsIEZsYWcsIGNsYW5nX2lnbm9yZWRfZ2NjX29wdGltaXphdGlvbl9mX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZnNjaGVkdWxlLWluc25zIiwgc2NoZWR1bGVfaW5zbnNfZiwgRmxhZywgY2xhbmdfaWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmc2Vjb25kLXVuZGVyc2NvcmUiLCBzZWNvbmRfdW5kZXJzY29yZV9mLCBGbGFnLCBnZm9ydHJhbl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTE3ODMsMTUgKzE4NTMsMTcgQEAKIE9QVElPTihwcmVmaXhfMSwgImZzcGVsbC1jaGVja2luZyIsIGZzcGVsbF9jaGVja2luZywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZzcGxpdC1kd2FyZi1pbmxpbmluZyIsIGZzcGxpdF9kd2FyZl9pbmxpbmluZywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLAogICAgICAgICJQcm92aWRlIG1pbmltYWwgZGVidWcgaW5mbyBpbiB0aGUgb2JqZWN0L2V4ZWN1dGFibGUgdG8gZmFjaWxpdGF0ZSBvbmxpbmUgc3ltYm9saWNhdGlvbi9zdGFjayB0cmFjZXMgaW4gdGhlIGFic2VuY2Ugb2YgLmR3by8uZHdwIGZpbGVzIHdoZW4gdXNpbmcgU3BsaXQgRFdBUkYiLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZnNwbGl0LWx0by11bml0IiwgZnNwbGl0X2x0b191bml0LCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDb3JlT3B0aW9uIHwgQ0MxT3B0aW9uLCAwLAorICAgICAgICJFbmFibGVzIHNwbGl0dGluZyBvZiB0aGUgTFRPIHVuaXQuIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZzcGxpdC1zdGFjayIsIGZzcGxpdF9zdGFjaywgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZzdGFjay1hcnJheXMiLCBzdGFja19hcnJheXNfZiwgRmxhZywgZ2ZvcnRyYW5fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmc3RhY2stY2hlY2siLCBzdGFja19jaGVja19mLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmc3RhY2stcHJvdGVjdG9yLWFsbCIsIGZzdGFja19wcm90ZWN0b3JfYWxsLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAotICAgICAgICJGb3JjZSB0aGUgdXNhZ2Ugb2Ygc3RhY2sgcHJvdGVjdG9ycyBmb3IgYWxsIGZ1bmN0aW9ucyIsIG51bGxwdHIsIG51bGxwdHIpCisgICAgICAgIkVuYWJsZSBzdGFjayBwcm90ZWN0b3JzIGZvciBhbGwgZnVuY3Rpb25zIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIiwgZnN0YWNrX3Byb3RlY3Rvcl9zdHJvbmcsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsCi0gICAgICAgIlVzZSBhIHN0cm9uZyBoZXVyaXN0aWMgdG8gYXBwbHkgc3RhY2sgcHJvdGVjdG9ycyB0byBmdW5jdGlvbnMiLCBudWxscHRyLCBudWxscHRyKQorICAgICAgICJFbmFibGUgc3RhY2sgcHJvdGVjdG9ycyBmb3Igc29tZSBmdW5jdGlvbnMgdnVsbmVyYWJsZSB0byBzdGFjayBzbWFzaGluZy4gQ29tcGFyZWQgdG8gLWZzdGFjay1wcm90ZWN0b3IsIHRoaXMgdXNlcyBhIHN0cm9uZ2VyIGhldXJpc3RpYyB0aGF0IGluY2x1ZGVzIGZ1bmN0aW9ucyBjb250YWluaW5nIGFycmF5cyBvZiBhbnkgc2l6ZSAoYW5kIGFueSB0eXBlKSwgYXMgd2VsbCBhcyBhbnkgY2FsbHMgdG8gYWxsb2NhIG9yIHRoZSB0YWtpbmcgb2YgYW4gYWRkcmVzcyBmcm9tIGEgbG9jYWwgdmFyaWFibGUiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZnN0YWNrLXByb3RlY3RvciIsIGZzdGFja19wcm90ZWN0b3IsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsCi0gICAgICAgIkVuYWJsZSBzdGFjayBwcm90ZWN0b3JzIGZvciBmdW5jdGlvbnMgcG90ZW50aWFsbHkgdnVsbmVyYWJsZSB0byBzdGFjayBzbWFzaGluZyIsIG51bGxwdHIsIG51bGxwdHIpCisgICAgICAgIkVuYWJsZSBzdGFjayBwcm90ZWN0b3JzIGZvciBzb21lIGZ1bmN0aW9ucyB2dWxuZXJhYmxlIHRvIHN0YWNrIHNtYXNoaW5nLiBUaGlzIHVzZXMgYSBsb29zZSBoZXVyaXN0aWMgd2hpY2ggY29uc2lkZXJzIGZ1bmN0aW9ucyB2dWxuZXJhYmxlIGlmIHRoZXkgY29udGFpbiBhIGNoYXIgKG9yIDhiaXQgaW50ZWdlcikgYXJyYXkgb3IgY29uc3RhbnQgc2l6ZWQgY2FsbHMgdG8gYWxsb2NhLCB3aGljaCBhcmUgb2YgZ3JlYXRlciBzaXplIHRoYW4gc3NwLWJ1ZmZlci1zaXplIChkZWZhdWx0OiA4IGJ5dGVzKS4gQWxsIHZhcmlhYmxlIHNpemVkIGNhbGxzIHRvIGFsbG9jYSBhcmUgY29uc2lkZXJlZCB2dWxuZXJhYmxlIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZzdGFjay1zaXplLXNlY3Rpb24iLCBmc3RhY2tfc2l6ZV9zZWN0aW9uLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCiAgICAgICAgIkVtaXQgc2VjdGlvbiBjb250YWluaW5nIG1ldGFkYXRhIG9uIGZ1bmN0aW9uIHN0YWNrIHNpemVzIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZzdGFuZGFsb25lLWRlYnVnIiwgZnN0YW5kYWxvbmVfZGVidWcsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsCkBAIC0xODIwLDcgKzE4OTIsNyBAQAogT1BUSU9OKHByZWZpeF8xLCAiZnRlbXBsYXRlLWRlcHRoPSIsIGZ0ZW1wbGF0ZV9kZXB0aF9FUSwgSm9pbmVkLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZnRlbXBsYXRlLWRlcHRoIiwgZnRlbXBsYXRlX2RlcHRoLCBTZXBhcmF0ZSwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCiAgICAgICAgIk1heGltdW0gZGVwdGggb2YgcmVjdXJzaXZlIHRlbXBsYXRlIGluc3RhbnRpYXRpb24iLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8xLCAiZnRlcm1pbmF0ZWQtdnRhYmxlcyIsIGFub255bW91c18yNSwgRmxhZywgSU5WQUxJRCwgZmFwcGxlX2tleHQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmdGVybWluYXRlZC12dGFibGVzIiwgYW5vbnltb3VzXzI3LCBGbGFnLCBJTlZBTElELCBmYXBwbGVfa2V4dCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZ0ZXN0LWNvdmVyYWdlIiwgZnRlc3RfY292ZXJhZ2UsIEZsYWcsIGZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmdGVzdC1tb2R1bGUtZmlsZS1leHRlbnNpb249IiwgZnRlc3RfbW9kdWxlX2ZpbGVfZXh0ZW5zaW9uX0VRLCBKb2luZWQsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLAogICAgICAgICJpbnRyb2R1Y2UgYSBtb2R1bGUgZmlsZSBleHRlbnNpb24gZm9yIHRlc3RpbmcgcHVycG9zZXMuIFRoZSBhcmd1bWVudCBpcyBwYXJzZWQgYXMgYmxvY2tuYW1lOm1ham9yOm1pbm9yOmhhc2hlZDp1c2VyIGluZm8iLCBudWxscHRyLCBudWxscHRyKQpAQCAtMTg0MywxNiArMTkxNSwxOCBAQAogICAgICAgICJUcmFwIG9uIGludGVnZXIgb3ZlcmZsb3ciLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZnRyZWUtZGNlIiwgdHJlZV9kY2VfZiwgRmxhZywgY2xhbmdfaWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmdHJlZS1zYWxpYXMiLCB0cmVlX3NhbGlhc19mLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJmdHJlZS1zbHAtdmVjdG9yaXplIiwgYW5vbnltb3VzXzIzLCBGbGFnLCBJTlZBTElELCBmc2xwX3ZlY3Rvcml6ZSwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZ0cmVlLXNscC12ZWN0b3JpemUiLCBhbm9ueW1vdXNfMjUsIEZsYWcsIElOVkFMSUQsIGZzbHBfdmVjdG9yaXplLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZnRyZWUtdGVyIiwgdHJlZV90ZXJfZiwgRmxhZywgY2xhbmdfaWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmdHJlZS12ZWN0b3JpemVyLXZlcmJvc2UiLCB0cmVlX3ZlY3Rvcml6ZXJfdmVyYm9zZV9mLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJmdHJlZS12ZWN0b3JpemUiLCBhbm9ueW1vdXNfMjEsIEZsYWcsIElOVkFMSUQsIGZ2ZWN0b3JpemUsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJmdHJlZS12ZWN0b3JpemUiLCBhbm9ueW1vdXNfMjMsIEZsYWcsIElOVkFMSUQsIGZ2ZWN0b3JpemUsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmdHJlZS12cnAiLCB0cmVlX3ZycF9mLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2djY19vcHRpbWl6YXRpb25fZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSWdub3JlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZ0cmVlX2xvb3BfaW0iLCB0cmVlX2xvb3BfaW1fZiwgRmxhZywgY2xhbmdfaWdub3JlZF9nY2Nfb3B0aW1pemF0aW9uX2ZfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIElnbm9yZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJmdHJlZV9sb29wX2l2Y2Fub24iLCB0cmVlX2xvb3BfaXZjYW5vbl9mLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2djY19vcHRpbWl6YXRpb25fZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSWdub3JlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZ0cmVlX2xvb3BfbGluZWFyIiwgdHJlZV9sb29wX2xpbmVhcl9mLCBGbGFnLCBjbGFuZ19pZ25vcmVkX2djY19vcHRpbWl6YXRpb25fZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSWdub3JlZCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZ0cmlncmFwaHMiLCBmdHJpZ3JhcGhzLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCiAgICAgICAgIlByb2Nlc3MgdHJpZ3JhcGggc2VxdWVuY2VzIiwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9IiwgZnRyaXZpYWxfYXV0b192YXJfaW5pdCwgSm9pbmVkLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCisgICAgICAgIkluaXRpYWxpemUgdHJpdmlhbCBhdXRvbWF0aWMgc3RhY2sgdmFyaWFibGVzOiB1bmluaXRpYWxpemVkIChkZWZhdWx0KSB8IHBhdHRlcm4iLCBudWxscHRyLCAidW5pbml0aWFsaXplZCxwYXR0ZXJuIikKIE9QVElPTihwcmVmaXhfMSwgImZ0eXBlLXZpc2liaWxpdHkiLCBmdHlwZV92aXNpYmlsaXR5LCBTZXBhcmF0ZSwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCiAgICAgICAgIkRlZmF1bHQgdHlwZSB2aXNpYmlsaXR5IiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZ1bmN0aW9uLWFsaWdubWVudCIsIGZ1bmN0aW9uX2FsaWdubWVudCwgU2VwYXJhdGUsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLApAQCAtMTg4OCw2ICsxOTYyLDggQEAKIE9QVElPTihwcmVmaXhfMSwgImZ2ZWN0b3JpemUiLCBmdmVjdG9yaXplLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAogICAgICAgICJFbmFibGUgdGhlIGxvb3AgdmVjdG9yaXphdGlvbiBwYXNzZXMiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZnZlcmJvc2UtYXNtIiwgZnZlcmJvc2VfYXNtLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZnZpc2liaWxpdHktZ2xvYmFsLW5ldy1kZWxldGUtaGlkZGVuIiwgZnZpc2liaWxpdHlfZ2xvYmFsX25ld19kZWxldGVfaGlkZGVuLCBGbGFnLCBmX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCisgICAgICAgIkdpdmUgZ2xvYmFsIEMrKyBvcGVyYXRvciBuZXcgYW5kIGRlbGV0ZSBkZWNsYXJhdGlvbnMgaGlkZGVuIHZpc2liaWxpdHkiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4iLCBmdmlzaWJpbGl0eV9pbmxpbmVzX2hpZGRlbiwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLAogICAgICAgICJHaXZlIGlubGluZSBDKysgbWVtYmVyIGZ1bmN0aW9ucyBoaWRkZW4gdmlzaWJpbGl0eSBieSBkZWZhdWx0IiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImZ2aXNpYmlsaXR5LW1zLWNvbXBhdCIsIGZ2aXNpYmlsaXR5X21zX2NvbXBhdCwgRmxhZywgZl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwKQEAgLTE5NDcsNiArMjAyMyw4IEBACiBPUFRJT04ocHJlZml4XzMsICJnY2MtdG9vbGNoYWluPSIsIGdjY190b29sY2hhaW4sIEpvaW5lZCwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgRHJpdmVyT3B0aW9uLCAwLAogICAgICAgICJVc2UgdGhlIGdjYyB0b29sY2hhaW4gYXQgdGhlIGdpdmVuIGRpcmVjdG9yeSIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJnY2MtdG9vbGNoYWluIiwgZ2NjX3Rvb2xjaGFpbl9sZWdhY3lfc3BlbGxpbmcsIFNlcGFyYXRlLCBJTlZBTElELCBnY2NfdG9vbGNoYWluLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZ2NvZGV2aWV3LWdoYXNoIiwgZ2NvZGV2aWV3X2doYXNoLCBGbGFnLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBDb3JlT3B0aW9uLCAwLAorICAgICAgICJFbWl0IHR5cGUgcmVjb3JkIGhhc2hlcyBpbiBhIC5kZWJ1ZyRIIHNlY3Rpb24iLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZ2NvZGV2aWV3IiwgZ2NvZGV2aWV3LCBGbGFnLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBDQzFBc09wdGlvbiB8IENvcmVPcHRpb24sIDAsCiAgICAgICAgIkdlbmVyYXRlIENvZGVWaWV3IGRlYnVnIGluZm9ybWF0aW9uIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImdjb2ZmIiwgZ2NvZmYsIEpvaW5lZCwgZ19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgVW5zdXBwb3J0ZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC0xOTkzLDE3ICsyMDcxLDIwIEBACiBPUFRJT04ocHJlZml4XzEsICJnbW9kdWxlcyIsIGdtb2R1bGVzLCBGbGFnLCBnTl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwKICAgICAgICAiR2VuZXJhdGUgZGVidWcgaW5mbyB3aXRoIGV4dGVybmFsIHJlZmVyZW5jZXMgdG8gY2xhbmcgbW9kdWxlcyBvciBwcmVjb21waWxlZCBoZWFkZXJzIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMiwgIkdtIiwgX1NMQVNIX0dtLCBGbGFnLCBjbF9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImduby1jb2Rldmlldy1naGFzaCIsIGdub19jb2Rldmlld19naGFzaCwgRmxhZywgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ29yZU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImduby1jb2x1bW4taW5mbyIsIGdub19jb2x1bW5faW5mbywgRmxhZywgZ19mbGFnc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ29yZU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImduby1lbWJlZC1zb3VyY2UiLCBnbm9fZW1iZWRfc291cmNlLCBGbGFnLCBnX2ZsYWdzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBEcml2ZXJPcHRpb24sIDAsCiAgICAgICAgIlJlc3RvcmUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2Ygbm90IGVtYmVkZGluZyBzb3VyY2UgdGV4dCBpbiBEV0FSRiBkZWJ1ZyBzZWN0aW9ucyIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJnbm8tZ251LXB1Ym5hbWVzIiwgZ25vX2dudV9wdWJuYW1lcywgRmxhZywgZ19mbGFnc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZ25vLXB1Ym5hbWVzIiwgZ25vX3B1Ym5hbWVzLCBGbGFnLCBnX2ZsYWdzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJnbm8tcmVjb3JkLWdjYy1zd2l0Y2hlcyIsIGdub19yZWNvcmRfZ2NjX3N3aXRjaGVzLCBGbGFnLCBnX2ZsYWdzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZ25vLXJlY29yZC1jb21tYW5kLWxpbmUiLCBnbm9fcmVjb3JkX2NvbW1hbmRfbGluZSwgRmxhZywgZ19mbGFnc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImduby1yZWNvcmQtZ2NjLXN3aXRjaGVzIiwgYW5vbnltb3VzXzI5LCBGbGFnLCBJTlZBTElELCBnbm9fcmVjb3JkX2NvbW1hbmRfbGluZSwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImduby1zdHJpY3QtZHdhcmYiLCBnbm9fc3RyaWN0X2R3YXJmLCBGbGFnLCBnX2ZsYWdzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZ3B1Ym5hbWVzIiwgZ3B1Ym5hbWVzLCBGbGFnLCBnX2ZsYWdzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzIsICJHUi0iLCBfU0xBU0hfR1JfLCBGbGFnLCBjbF9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwKICAgICAgICAiRGlzYWJsZSBlbWlzc2lvbiBvZiBSVFRJIGRhdGEiLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8xLCAiZ3JlY29yZC1nY2Mtc3dpdGNoZXMiLCBncmVjb3JkX2djY19zd2l0Y2hlcywgRmxhZywgZ19mbGFnc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgImdyZWNvcmQtY29tbWFuZC1saW5lIiwgZ3JlY29yZF9jb21tYW5kX2xpbmUsIEZsYWcsIGdfZmxhZ3NfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJncmVjb3JkLWdjYy1zd2l0Y2hlcyIsIGFub255bW91c18yOCwgRmxhZywgSU5WQUxJRCwgZ3JlY29yZF9jb21tYW5kX2xpbmUsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzIsICJHcmVnY2FsbCIsIF9TTEFTSF9HcmVnY2FsbCwgRmxhZywgY2xfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCiAgICAgICAgIlNldCBfX3JlZ2NhbGwgYXMgYSBkZWZhdWx0IGNhbGxpbmcgY29udmVudGlvbiIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzIsICJHUiIsIF9TTEFTSF9HUiwgRmxhZywgY2xfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCkBAIC0yMDEzLDEyICsyMDk0LDE0IEBACiBPUFRJT04ocHJlZml4XzIsICJHUy0iLCBfU0xBU0hfR1NfLCBGbGFnLCBjbF9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwKICAgICAgICAiRGlzYWJsZSBidWZmZXIgc2VjdXJpdHkgY2hlY2siLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiZ3NjZSIsIGdzY2UsIEZsYWcsIGdUdW5lX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiZ3NwbGl0LWR3YXJmPSIsIGdzcGxpdF9kd2FyZl9FUSwgSm9pbmVkLCBnX2ZsYWdzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJTZXQgRFdBUkYgZmlzc2lvbiBtb2RlIHRvIGVpdGhlciAnc3BsaXQnIG9yICdzaW5nbGUnIiwgbnVsbHB0ciwgInNwbGl0LHNpbmdsZSIpCiBPUFRJT04ocHJlZml4XzEsICJnc3BsaXQtZHdhcmYiLCBnc3BsaXRfZHdhcmYsIEZsYWcsIGdfZmxhZ3NfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJnc3RhYnMiLCBnc3RhYnMsIEpvaW5lZCwgZ19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgVW5zdXBwb3J0ZWQsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJnc3RyaWN0LWR3YXJmIiwgZ3N0cmljdF9kd2FyZiwgRmxhZywgZ19mbGFnc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMiwgIkdTIiwgX1NMQVNIX0dTLCBGbGFnLCBjbF9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwKICAgICAgICAiRW5hYmxlIGJ1ZmZlciBzZWN1cml0eSBjaGVjayAoZGVmYXVsdCkiLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8yLCAiR3MiLCBhbm9ueW1vdXNfMzEsIEZsYWcsIGNsX0dyb3VwLCBtc3RhY2tfcHJvYmVfc2l6ZSwgIjQwOTZcMCIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCitPUFRJT04ocHJlZml4XzIsICJHcyIsIGFub255bW91c18zNSwgRmxhZywgY2xfR3JvdXAsIG1zdGFja19wcm9iZV9zaXplLCAiNDA5NlwwIiwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwKICAgICAgICAiVXNlIHN0YWNrIHByb2JlcyAoZGVmYXVsdCkiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8yLCAiR3MiLCBfU0xBU0hfR3MsIEpvaW5lZCwgY2xfR3JvdXAsIG1zdGFja19wcm9iZV9zaXplLCBudWxscHRyLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAogICAgICAgICJTZXQgc3RhY2sgcHJvYmUgc2l6ZSAoZGVmYXVsdCA0MDk2KSIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC0yMDk5LDggKzIxODIsNiBAQAogICAgICAgICJJbmNsdWRlIHByZWNvbXBpbGVkIGhlYWRlciBmaWxlIiwgIjxmaWxlPiIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzMsICJpbmNsdWRlLXByZWZpeD0iLCBfaW5jbHVkZV9wcmVmaXhfRVEsIEpvaW5lZCwgSU5WQUxJRCwgaXByZWZpeCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMywgImluY2x1ZGUtcHJlZml4IiwgX2luY2x1ZGVfcHJlZml4LCBTZXBhcmF0ZSwgSU5WQUxJRCwgaXByZWZpeCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKLU9QVElPTihwcmVmaXhfMSwgImluY2x1ZGUtcHRoIiwgaW5jbHVkZV9wdGgsIFNlcGFyYXRlLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBOb0RyaXZlck9wdGlvbiwgMCwKLSAgICAgICAiSW5jbHVkZSBmaWxlIGJlZm9yZSBwYXJzaW5nIiwgIjxmaWxlPiIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzMsICJpbmNsdWRlLXdpdGgtcHJlZml4LWFmdGVyPSIsIF9pbmNsdWRlX3dpdGhfcHJlZml4X2FmdGVyX0VRLCBKb2luZWQsIElOVkFMSUQsIGl3aXRocHJlZml4LCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8zLCAiaW5jbHVkZS13aXRoLXByZWZpeC1hZnRlciIsIF9pbmNsdWRlX3dpdGhfcHJlZml4X2FmdGVyLCBTZXBhcmF0ZSwgSU5WQUxJRCwgaXdpdGhwcmVmaXgsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzMsICJpbmNsdWRlLXdpdGgtcHJlZml4LWJlZm9yZT0iLCBfaW5jbHVkZV93aXRoX3ByZWZpeF9iZWZvcmVfRVEsIEpvaW5lZCwgSU5WQUxJRCwgaXdpdGhwcmVmaXhiZWZvcmUsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC0yMTE2LDcgKzIxOTcsNyBAQAogICAgICAgICJPbmx5IGV4ZWN1dGUgZnJvbnRlbmQgaW5pdGlhbGl6YXRpb24iLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiaW5pdCIsIGluaXQsIFNlcGFyYXRlLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiaW5zdGFsbF9uYW1lIiwgaW5zdGFsbF9fbmFtZSwgU2VwYXJhdGUsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJpbnRlZ3JhdGVkLWFzIiwgYW5vbnltb3VzXzI4LCBGbGFnLCBJTlZBTElELCBmaW50ZWdyYXRlZF9hcywgbnVsbHB0ciwgRHJpdmVyT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAiaW50ZWdyYXRlZC1hcyIsIGFub255bW91c18zMiwgRmxhZywgSU5WQUxJRCwgZmludGVncmF0ZWRfYXMsIG51bGxwdHIsIERyaXZlck9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImludGVybmFsLWV4dGVybmMtaXN5c3RlbSIsIGludGVybmFsX2V4dGVybmNfaXN5c3RlbSwgSm9pbmVkT3JTZXBhcmF0ZSwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCiAgICAgICAgIkFkZCBkaXJlY3RvcnkgdG8gdGhlIGludGVybmFsIHN5c3RlbSBpbmNsdWRlIHNlYXJjaCBwYXRoIHdpdGggaW1wbGljaXQgZXh0ZXJuIFwiQ1wiIHNlbWFudGljczsgdGhlc2UgYXJlIGFzc3VtZWQgdG8gbm90IGJlIHVzZXItcHJvdmlkZWQgYW5kIGFyZSB1c2VkIHRvIG1vZGVsIHN5c3RlbSBhbmQgc3RhbmRhcmQgaGVhZGVycycgcGF0aHMuIiwgIjxkaXJlY3Rvcnk+IiwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgImludGVybmFsLWlzeXN0ZW0iLCBpbnRlcm5hbF9pc3lzdGVtLCBKb2luZWRPclNlcGFyYXRlLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBOb0RyaXZlck9wdGlvbiwgMCwKQEAgLTIyMjUsNiArMjMwNiwxMCBAQAogT1BUSU9OKHByZWZpeF8xLCAibWJtaTIiLCBtYm1pMiwgRmxhZywgbV94ODZfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtYm1pIiwgbWJtaSwgRmxhZywgbV94ODZfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtYnJhbmNoLWxpa2VseSIsIG1icmFuY2hfbGlrZWx5LCBGbGFnLCBtX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBIZWxwSGlkZGVuLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAibWJyYW5jaC1wcm90ZWN0aW9uPSIsIG1icmFuY2hfcHJvdGVjdGlvbl9FUSwgSm9pbmVkLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJFbmZvcmNlIHRhcmdldHMgb2YgaW5kaXJlY3QgYnJhbmNoZXMgYW5kIGZ1bmN0aW9uIHJldHVybnMiLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAibWJyYW5jaC10YXJnZXQtZW5mb3JjZSIsIG1icmFuY2hfdGFyZ2V0X2VuZm9yY2UsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAibWJ1bGstbWVtb3J5IiwgbWJ1bGtfbWVtb3J5LCBGbGFnLCBtX3dhc21fRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtY2hlY2stemVyby1kaXZpc2lvbiIsIG1jaGVja196ZXJvX2RpdmlzaW9uLCBGbGFnLCBtX21pcHNfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtY2xkZW1vdGUiLCBtY2xkZW1vdGUsIEZsYWcsIG1feDg2X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDb3JlT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibWNsZmx1c2hvcHQiLCBtY2xmbHVzaG9wdCwgRmxhZywgbV94ODZfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC0yMjM0LDYgKzIzMTksOCBAQAogT1BUSU9OKHByZWZpeF8xLCAibWNtcGIiLCBtY21wYiwgRmxhZywgbV9wcGNfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtY29kZS1tb2RlbCIsIG1jb2RlX21vZGVsLCBTZXBhcmF0ZSwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCiAgICAgICAgIlRoZSBjb2RlIG1vZGVsIHRvIHVzZSIsIG51bGxwdHIsICJ0aW55LHNtYWxsLGtlcm5lbCxtZWRpdW0sbGFyZ2UiKQorT1BUSU9OKHByZWZpeF8xLCAibWNvZGUtb2JqZWN0LXYzIiwgbWNvZGVfb2JqZWN0X3YzLCBGbGFnLCBtX2FtZGdwdV9GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwKKyAgICAgICAiRW5hYmxlIGNvZGUgb2JqZWN0IHYzIChBTURHUFUgb25seSkiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibWNvbXBhY3QtYnJhbmNoZXM9IiwgbWNvbXBhY3RfYnJhbmNoZXNfRVEsIEpvaW5lZCwgbV9taXBzX0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibWNvbnNvbGUiLCBtY29uc29sZSwgSm9pbmVkLCBtX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBEcml2ZXJPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtY29uc3RhbnQtY2ZzdHJpbmdzIiwgbWNvbnN0YW50X2Nmc3RyaW5ncywgRmxhZywgY2xhbmdfaWdub3JlZF9tX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQpAQCAtMjMyOSw2ICsyNDE2LDcgQEAKIE9QVElPTihwcmVmaXhfMywgIm1od2Rpdj0iLCBfbWh3ZGl2X0VRLCBKb2luZWQsIElOVkFMSUQsIG1od2Rpdl9FUSwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm1od2Rpdj0iLCBtaHdkaXZfRVEsIEpvaW5lZCwgbV9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMywgIm1od2RpdiIsIF9taHdkaXYsIFNlcGFyYXRlLCBJTlZBTElELCBtaHdkaXZfRVEsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJtaHdtdWx0PSIsIG1od211bHRfRVEsIEpvaW5lZCwgbV9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm1pYW1jdSIsIG1pYW1jdSwgRmxhZywgbV9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgRHJpdmVyT3B0aW9uIHwgQ29yZU9wdGlvbiwgMCwKICAgICAgICAiVXNlIEludGVsIE1DVSBBQkkiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibWllZWUtZnAiLCBtaWVlZV9mcCwgRmxhZywgY2xhbmdfaWdub3JlZF9tX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBJZ25vcmVkLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQpAQCAtMjQ2MCwxMiArMjU0OCwxNSBAQAogT1BUSU9OKHByZWZpeF8xLCAibW5vLWJtaTIiLCBtbm9fYm1pMiwgRmxhZywgbV94ODZfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtbm8tYm1pIiwgbW5vX2JtaSwgRmxhZywgbV94ODZfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtbm8tYnJhbmNoLWxpa2VseSIsIG1ub19icmFuY2hfbGlrZWx5LCBGbGFnLCBtX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBIZWxwSGlkZGVuLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAibW5vLWJ1bGstbWVtb3J5IiwgbW5vX2J1bGtfbWVtb3J5LCBGbGFnLCBtX3dhc21fRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtbm8tY2hlY2stemVyby1kaXZpc2lvbiIsIG1ub19jaGVja196ZXJvX2RpdmlzaW9uLCBGbGFnLCBtX21pcHNfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtbm8tY2xkZW1vdGUiLCBtbm9fY2xkZW1vdGUsIEZsYWcsIG1feDg2X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDb3JlT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibW5vLWNsZmx1c2hvcHQiLCBtbm9fY2xmbHVzaG9wdCwgRmxhZywgbV94ODZfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtbm8tY2x3YiIsIG1ub19jbHdiLCBGbGFnLCBtX3g4Nl9GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ29yZU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm1uby1jbHplcm8iLCBtbm9fY2x6ZXJvLCBGbGFnLCBtX3g4Nl9GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ29yZU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm1uby1jbXBiIiwgbW5vX2NtcGIsIEZsYWcsIG1fcHBjX0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAibW5vLWNvZGUtb2JqZWN0LXYzIiwgbW5vX2NvZGVfb2JqZWN0X3YzLCBGbGFnLCBtX2FtZGdwdV9GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwKKyAgICAgICAiRGlzYWJsZSBjb2RlIG9iamVjdCB2MyAoQU1ER1BVIG9ubHkpIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm1uby1jb25zdGFudC1jZnN0cmluZ3MiLCBtbm9fY29uc3RhbnRfY2ZzdHJpbmdzLCBGbGFnLCBtX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibW5vLWNyYml0cyIsIG1ub19jcmJpdHMsIEZsYWcsIG1fcHBjX0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibW5vLWNyYyIsIG1ub19jcmMsIEZsYWcsIG1fbWlwc19GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwKQEAgLTI1NzMsNiArMjY2NCw4IEBACiBPUFRJT04ocHJlZml4XzEsICJtbm8tcmRzZWVkIiwgbW5vX3Jkc2VlZCwgRmxhZywgbV94ODZfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtbm8tcmVkLXpvbmUiLCBtbm9fcmVkX3pvbmUsIEZsYWcsIG1fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtbm8tcmVsYXgtYWxsIiwgbW5vX3JlbGF4X2FsbCwgRmxhZywgbV9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgIm1uby1yZWxheC1waWMtY2FsbHMiLCBtbm9fcmVsYXhfcGljX2NhbGxzLCBGbGFnLCBtX21pcHNfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIEhlbHBIaWRkZW4sIDAsCisgICAgICAgIkRvIG5vdCBwcm9kdWNlIHJlbGF4YXRpb24gaGludHMgZm9yIGxpbmtlcnMgdG8gdHJ5IG9wdGltaXppbmcgUElDIGNhbGwgc2VxdWVuY2VzIGludG8gZGlyZWN0IGNhbGxzIChNSVBTIG9ubHkpIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm1uby1yZWxheCIsIG1ub19yZWxheCwgRmxhZywgbV9yaXNjdl9GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwKICAgICAgICAiRGlzYWJsZSBsaW5rZXIgcmVsYXhhdGlvbiIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtbm8tcmVzdHJpY3QtaXQiLCBtbm9fcmVzdHJpY3RfaXQsIEZsYWcsIG1fYXJtX0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLApAQCAtMjU4OSw2ICsyNjgyLDggQEAKIE9QVElPTihwcmVmaXhfMSwgIm1uby1zaW1kMTI4IiwgbW5vX3NpbWQxMjgsIEZsYWcsIG1fd2FzbV9GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm1uby1zb2Z0LWZsb2F0IiwgbW5vX3NvZnRfZmxvYXQsIEZsYWcsIG1fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtbm8tc3BlY3VsYXRpdmUtbG9hZC1oYXJkZW5pbmciLCBtbm9fc3BlY3VsYXRpdmVfbG9hZF9oYXJkZW5pbmcsIEZsYWcsIG1fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJtbm8tc3JhbS1lY2MiLCBtbm9fc3JhbV9lY2MsIEZsYWcsIG1fYW1kZ3B1X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJEaXNhYmxlIFNSQU0gRUNDIChBTURHUFUgb25seSkiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibW5vLXNzZTIiLCBtbm9fc3NlMiwgRmxhZywgbV94ODZfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtbm8tc3NlMyIsIG1ub19zc2UzLCBGbGFnLCBtX3g4Nl9GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ29yZU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm1uby1zc2U0LjEiLCBtbm9fc3NlNF8xLCBGbGFnLCBtX3g4Nl9GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ29yZU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTI2MDIsOCArMjY5NywxMSBAQAogT1BUSU9OKHByZWZpeF8xLCAibW5vLXN0YWNrcmVhbGlnbiIsIG1ub19zdGFja3JlYWxpZ24sIEZsYWcsIG1fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtbm8tdGJtIiwgbW5vX3RibSwgRmxhZywgbV94ODZfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtbm8tdGh1bWIiLCBtbm9fdGh1bWIsIEZsYWcsIG1fYXJtX0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAibW5vLXRscy1kaXJlY3Qtc2VnLXJlZnMiLCBtbm9fdGxzX2RpcmVjdF9zZWdfcmVmcywgRmxhZywgbV9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLAorICAgICAgICJEaXNhYmxlIGRpcmVjdCBUTFMgYWNjZXNzIHRocm91Z2ggc2VnbWVudCByZWdpc3RlcnMiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibW5vLXVuYWxpZ25lZC1hY2Nlc3MiLCBtbm9fdW5hbGlnbmVkX2FjY2VzcywgRmxhZywgbV9hcm1fRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsCiAgICAgICAgIkZvcmNlIGFsbCBtZW1vcnkgYWNjZXNzZXMgdG8gYmUgYWxpZ25lZCAoQUFyY2gzMi9BQXJjaDY0IG9ubHkpIiwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgIm1uby11bmltcGxlbWVudGVkLXNpbWQxMjgiLCBtbm9fdW5pbXBsZW1lbnRlZF9zaW1kMTI4LCBGbGFnLCBtX3dhc21fRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtbm8tdmFlcyIsIG1ub192YWVzLCBGbGFnLCBtX3g4Nl9GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ29yZU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm1uby12aXJ0IiwgbW5vX3ZpcnQsIEZsYWcsIG1fbWlwc19GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm1uby12cGNsbXVscWRxIiwgbW5vX3ZwY2xtdWxxZHEsIEZsYWcsIG1feDg2X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDb3JlT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQpAQCAtMjY4NSw2ICsyNzgzLDggQEAKICAgICAgICAiTGltaXQgdGhlIG51bWJlciBvZiByZWdpc3RlcnMgYXZhaWxhYmxlIGZvciBpbnRlZ2VyIGFyZ3VtZW50cyIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtcmVsYXgtYWxsIiwgbXJlbGF4X2FsbCwgRmxhZywgbV9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgQ0MxQXNPcHRpb24sIDAsCiAgICAgICAgIihpbnRlZ3JhdGVkLWFzKSBSZWxheCBhbGwgbWFjaGluZSBpbnN0cnVjdGlvbnMiLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAibXJlbGF4LXBpYy1jYWxscyIsIG1yZWxheF9waWNfY2FsbHMsIEZsYWcsIG1fbWlwc19GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgSGVscEhpZGRlbiwgMCwKKyAgICAgICAiUHJvZHVjZSByZWxheGF0aW9uIGhpbnRzIGZvciBsaW5rZXJzIHRvIHRyeSBvcHRpbWl6aW5nIFBJQyBjYWxsIHNlcXVlbmNlcyBpbnRvIGRpcmVjdCBjYWxscyAoTUlQUyBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzMsICJtcmVsYXgtcmVsb2NhdGlvbnMiLCBtcmVsYXhfcmVsb2NhdGlvbnMsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IENDMUFzT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCiAgICAgICAgIlVzZSByZWxheGFibGUgZWxmIHJlbG9jYXRpb25zIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm1yZWxheCIsIG1yZWxheCwgRmxhZywgbV9yaXNjdl9GZWF0dXJlc19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwKQEAgLTI3MDYsNyArMjgwNiw4IEBACiBPUFRJT04ocHJlZml4XzEsICJtc2hhIiwgbXNoYSwgRmxhZywgbV94ODZfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtc2hzdGsiLCBtc2hzdGssIEZsYWcsIG1feDg2X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDb3JlT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibXNpZ24tZXh0IiwgbXNpZ25fZXh0LCBGbGFnLCBtX3dhc21fRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJtc2lnbi1yZXR1cm4tYWRkcmVzcz0iLCBtc2lnbl9yZXR1cm5fYWRkcmVzcywgSm9pbmVkLCBtX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCitPUFRJT04ocHJlZml4XzEsICJtc2lnbi1yZXR1cm4tYWRkcmVzcy1rZXk9IiwgbXNpZ25fcmV0dXJuX2FkZHJlc3Nfa2V5X0VRLCBKb2luZWQsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCAiYV9rZXksYl9rZXkiKQorT1BUSU9OKHByZWZpeF8xLCAibXNpZ24tcmV0dXJuLWFkZHJlc3M9IiwgbXNpZ25fcmV0dXJuX2FkZHJlc3NfRVEsIEpvaW5lZCwgbV9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLAogICAgICAgICJTZWxlY3QgcmV0dXJuIGFkZHJlc3Mgc2lnbmluZyBzY29wZSIsIG51bGxwdHIsICJub25lLGFsbCxub24tbGVhZiIpCiBPUFRJT04ocHJlZml4XzEsICJtc2ltZDEyOCIsIG1zaW1kMTI4LCBGbGFnLCBtX3dhc21fRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtc2luZ2xlLWZsb2F0IiwgbXNpbmdsZV9mbG9hdCwgRmxhZywgbV9taXBzX0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQpAQCAtMjcxNCw2ICsyODE1LDggQEAKIE9QVElPTihwcmVmaXhfMSwgIm1zb2Z0LWZsb2F0IiwgbXNvZnRfZmxvYXQsIEZsYWcsIG1fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwKICAgICAgICAiVXNlIHNvZnR3YXJlIGZsb2F0aW5nIHBvaW50IiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm1zcGVjdWxhdGl2ZS1sb2FkLWhhcmRlbmluZyIsIG1zcGVjdWxhdGl2ZV9sb2FkX2hhcmRlbmluZywgRmxhZywgbV9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ29yZU9wdGlvbiB8IENDMU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgIm1zcmFtLWVjYyIsIG1zcmFtX2VjYywgRmxhZywgbV9hbWRncHVfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsCisgICAgICAgIkVuYWJsZSBTUkFNIEVDQyAoQU1ER1BVIG9ubHkpIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm1zc2UyIiwgbXNzZTIsIEZsYWcsIG1feDg2X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDb3JlT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibXNzZTMiLCBtc3NlMywgRmxhZywgbV94ODZfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtc3NlNC4xIiwgbXNzZTRfMSwgRmxhZywgbV94ODZfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC0yNzQxLDYgKzI4NDQsOCBAQAogICAgICAgICJUaGUgdGhyZWFkIG1vZGVsIHRvIHVzZSwgZS5nLiBwb3NpeCwgc2luZ2xlIChwb3NpeCBieSBkZWZhdWx0KSIsIG51bGxwdHIsICJwb3NpeCxzaW5nbGUiKQogT1BUSU9OKHByZWZpeF8xLCAibXRocmVhZHMiLCBtdGhyZWFkcywgSm9pbmVkLCBtX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBEcml2ZXJPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtdGh1bWIiLCBtdGh1bWIsIEZsYWcsIG1fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJtdGxzLWRpcmVjdC1zZWctcmVmcyIsIG10bHNfZGlyZWN0X3NlZ19yZWZzLCBGbGFnLCBtX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAorICAgICAgICJFbmFibGUgZGlyZWN0IFRMUyBhY2Nlc3MgdGhyb3VnaCBzZWdtZW50IHJlZ2lzdGVycyAoZGVmYXVsdCkiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibXRwPSIsIG10cF9tb2RlX0VRLCBKb2luZWQsIG1fYXJtX0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLAogICAgICAgICJSZWFkIHRocmVhZCBwb2ludGVyIGZyb20gY29wcm9jZXNzb3IgcmVnaXN0ZXIgKEFSTSBvbmx5KSIsIG51bGxwdHIsICJzb2Z0LCBjcDE1IikKIE9QVElPTihwcmVmaXhfMSwgIm10cCIsIG10cCwgU2VwYXJhdGUsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLApAQCAtMjc1OSwxNCArMjg2NCwxNSBAQAogT1BUSU9OKHByZWZpeF8xLCAibXVuYWxpZ25lZC1hY2Nlc3MiLCBtdW5hbGlnbmVkX2FjY2VzcywgRmxhZywgbV9hcm1fRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsCiAgICAgICAgIkFsbG93IG1lbW9yeSBhY2Nlc3NlcyB0byBiZSB1bmFsaWduZWQgKEFBcmNoMzIvQUFyY2g2NCBvbmx5KSIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtdW5pY29kZSIsIG11bmljb2RlLCBKb2luZWQsIG1fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIERyaXZlck9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgIm11bmltcGxlbWVudGVkLXNpbWQxMjgiLCBtdW5pbXBsZW1lbnRlZF9zaW1kMTI4LCBGbGFnLCBtX3dhc21fRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtdW53aW5kLXRhYmxlcyIsIG11bndpbmRfdGFibGVzLCBGbGFnLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBOb0RyaXZlck9wdGlvbiwgMCwKICAgICAgICAiR2VuZXJhdGUgdW53aW5kaW5nIHRhYmxlcyBmb3IgYWxsIGZ1bmN0aW9ucyIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJtdjQiLCBtdjQsIEZsYWcsIG1faGV4YWdvbl9GZWF0dXJlc19Hcm91cCwgbWNwdV9FUSwgImhleGFnb252NFwwIiwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm12NTUiLCBtdjU1LCBGbGFnLCBtX2hleGFnb25fRmVhdHVyZXNfR3JvdXAsIG1jcHVfRVEsICJoZXhhZ29udjU1XDAiLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibXY1IiwgbXY1LCBGbGFnLCBtX2hleGFnb25fRmVhdHVyZXNfR3JvdXAsIG1jcHVfRVEsICJoZXhhZ29udjVcMCIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJtdjYwIiwgbXY2MCwgRmxhZywgbV9oZXhhZ29uX0ZlYXR1cmVzX0dyb3VwLCBtY3B1X0VRLCAiaGV4YWdvbnY2MFwwIiwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm12NjIiLCBtdjYyLCBGbGFnLCBtX2hleGFnb25fRmVhdHVyZXNfR3JvdXAsIG1jcHVfRVEsICJoZXhhZ29udjYyXDAiLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibXY2NSIsIG12NjUsIEZsYWcsIG1faGV4YWdvbl9GZWF0dXJlc19Hcm91cCwgbWNwdV9FUSwgImhleGFnb252NjVcMCIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzEsICJtdjY2IiwgbXY2NiwgRmxhZywgbV9oZXhhZ29uX0ZlYXR1cmVzX0dyb3VwLCBtY3B1X0VRLCAiaGV4YWdvbnY2NlwwIiwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm12YWVzIiwgbXZhZXMsIEZsYWcsIG1feDg2X0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDb3JlT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibXZpcnQiLCBtdmlydCwgRmxhZywgbV9taXBzX0ZlYXR1cmVzX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAibXZwY2xtdWxxZHEiLCBtdnBjbG11bHFkcSwgRmxhZywgbV94ODZfRmVhdHVyZXNfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENvcmVPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC0yODA2LDcgKzI5MTIsNyBAQAogT1BUSU9OKHByZWZpeF8zLCAibm8tY3VkYS1ncHUtYXJjaD0iLCBub19jdWRhX2dwdV9hcmNoX0VRLCBKb2luZWQsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIERyaXZlck9wdGlvbiwgMCwKICAgICAgICAiUmVtb3ZlIEdQVSBhcmNoaXRlY3R1cmUgKGUuZy4gc21fMzUpIGZyb20gdGhlIGxpc3Qgb2YgR1BVcyB0byBjb21waWxlIGZvci4gJ2FsbCcgcmVzZXRzIHRoZSBsaXN0IHRvIGl0cyBkZWZhdWx0IHZhbHVlLiIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzMsICJuby1jdWRhLWluY2x1ZGUtcHR4PSIsIG5vX2N1ZGFfaW5jbHVkZV9wdHhfRVEsIEpvaW5lZCwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgRHJpdmVyT3B0aW9uLCAwLAotICAgICAgICJEbyBub3QgaW5jbHVkZSBQVFggZm9yIHRoZSBmb2xsd2luZyBHUFUgYXJjaGl0ZWN0dXJlIChlLmcuIHNtXzM1KSBvciAnYWxsJy4gTWF5IGJlIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZS4iLCBudWxscHRyLCBudWxscHRyKQorICAgICAgICJEbyBub3QgaW5jbHVkZSBQVFggZm9yIHRoZSBmb2xsb3dpbmcgR1BVIGFyY2hpdGVjdHVyZSAoZS5nLiBzbV8zNSkgb3IgJ2FsbCcuIE1heSBiZSBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UuIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMywgIm5vLWN1ZGEtbm9vcHQtZGV2aWNlLWRlYnVnIiwgbm9fY3VkYV9ub29wdF9kZXZpY2VfZGVidWcsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzMsICJuby1jdWRhLXZlcnNpb24tY2hlY2siLCBub19jdWRhX3ZlcnNpb25fY2hlY2ssIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsCiAgICAgICAgIkRvbid0IGVycm9yIG91dCBpZiB0aGUgZGV0ZWN0ZWQgdmVyc2lvbiBvZiB0aGUgQ1VEQSBpbnN0YWxsIGlzIHRvbyBsb3cgZm9yIHRoZSByZXF1ZXN0ZWQgQ1VEQSBncHUgYXJjaGl0ZWN0dXJlLiIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC0yODE2LDcgKzI5MjIsNyBAQAogICAgICAgICJEbyBub3QgcmVtb3ZlIGZpbmFsaXplIG1ldGhvZCBpbiBnYyBtb2RlIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm5vLWltcGxpY2l0LWZsb2F0Iiwgbm9faW1wbGljaXRfZmxvYXQsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLAogICAgICAgICJEb24ndCBnZW5lcmF0ZSBpbXBsaWNpdCBmbG9hdGluZyBwb2ludCBpbnN0cnVjdGlvbnMiLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8xLCAibm8taW50ZWdyYXRlZC1hcyIsIGFub255bW91c18yOSwgRmxhZywgSU5WQUxJRCwgZm5vX2ludGVncmF0ZWRfYXMsIG51bGxwdHIsIENDMU9wdGlvbiB8IERyaXZlck9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMSwgIm5vLWludGVncmF0ZWQtYXMiLCBhbm9ueW1vdXNfMzMsIEZsYWcsIElOVkFMSUQsIGZub19pbnRlZ3JhdGVkX2FzLCBudWxscHRyLCBDQzFPcHRpb24gfCBEcml2ZXJPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzQsICJuby1pbnRlZ3JhdGVkLWNwcCIsIG5vX2ludGVncmF0ZWRfY3BwLCBGbGFnLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBEcml2ZXJPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzMsICJuby1saW5lLWNvbW1hbmRzIiwgX25vX2xpbmVfY29tbWFuZHMsIEZsYWcsIElOVkFMSUQsIFAsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJuby1ucy1hbGxvYy1lcnJvciIsIG1pZ3JhdG9yX25vX25zYWxsb2NfZXJyb3IsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLApAQCAtMjgzMCw3ICsyOTM2LDcgQEAKICAgICAgICAiVHVybiBvZmYgc3RydWN0LXBhdGggYXdhcmUgVHlwZSBCYXNlZCBBbGlhcyBBbmFseXNpcyIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzMsICJuby1zeXN0ZW0taGVhZGVyLXByZWZpeD0iLCBub19zeXN0ZW1faGVhZGVyX3ByZWZpeCwgSm9pbmVkLCBjbGFuZ19pX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCiAgICAgICAgIlRyZWF0IGFsbCAjaW5jbHVkZSBwYXRocyBzdGFydGluZyB3aXRoIDxwcmVmaXg+IGFzIG5vdCBpbmNsdWRpbmcgYSBzeXN0ZW0gaGVhZGVyLiIsICI8cHJlZml4PiIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzMsICJuby1zeXN0ZW0taGVhZGVyLXByZWZpeCIsIGFub255bW91c18yNywgU2VwYXJhdGUsIElOVkFMSUQsIG5vX3N5c3RlbV9oZWFkZXJfcHJlZml4LCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8zLCAibm8tc3lzdGVtLWhlYWRlci1wcmVmaXgiLCBhbm9ueW1vdXNfMzEsIFNlcGFyYXRlLCBJTlZBTElELCBub19zeXN0ZW1faGVhZGVyX3ByZWZpeCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMywgIm5vLXVuZGVmaW5lZCIsIF9ub191bmRlZmluZWQsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIExpbmtlcklucHV0LCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8zLCAibm8td2FybmluZ3MiLCBfbm9fd2FybmluZ3MsIEZsYWcsIElOVkFMSUQsIHcsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJub19kZWFkX3N0cmlwX2luaXRzX2FuZF90ZXJtcyIsIG5vX19kZWFkX19zdHJpcF9faW5pdHNfX2FuZF9fdGVybXMsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC0yODU5LDE4ICsyOTY1LDE4IEBACiBPUFRJT04ocHJlZml4XzEsICJuIiwgbiwgRmxhZywgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxQXNPcHRpb24gfCBOb0RyaXZlck9wdGlvbiwgMCwKICAgICAgICAiRG9uJ3QgYXV0b21hdGljYWxseSBzdGFydCBhc3NlbWJseSBmaWxlIHdpdGggYSB0ZXh0IHNlY3Rpb24iLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiTzAiLCBPMCwgRmxhZywgT19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgSGVscEhpZGRlbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKLU9QVElPTihwcmVmaXhfMiwgIk8wIiwgYW5vbnltb3VzXzMyLCBGbGFnLCBjbF9Hcm91cCwgTzAsIG51bGxwdHIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCitPUFRJT04ocHJlZml4XzIsICJPMCIsIGFub255bW91c18zNiwgRmxhZywgY2xfR3JvdXAsIE8wLCBudWxscHRyLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAogICAgICAgICJEaXNhYmxlIG9wdGltaXphdGlvbiIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzIsICJPMSIsIGFub255bW91c18zMywgRmxhZywgY2xfR3JvdXAsIF9TTEFTSF9PLCAiMVwwIiwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwKLSAgICAgICAiT3B0aW1pemUgZm9yIHNpemUgKGVxdWl2YWxlbnQgdG8gL09nIC9PcyAvT3kgL09iMiAvR0YgL0d5KSIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzIsICJPMiIsIGFub255bW91c18zNCwgRmxhZywgY2xfR3JvdXAsIF9TTEFTSF9PLCAiMlwwIiwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwKLSAgICAgICAiT3B0aW1pemUgZm9yIHNwZWVkIChlcXVpdmFsZW50IHRvIC9PZyAvT2kgL090IC9PeSAvT2IyIC9HRiAvR3kpIiwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMiwgIk8xIiwgYW5vbnltb3VzXzM3LCBGbGFnLCBjbF9Hcm91cCwgX1NMQVNIX08sICIxXDAiLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAorICAgICAgICJPcHRpbWl6ZSBmb3Igc2l6ZSAgKHNhbWUgYXMgL09nICAgICAvT3MgL095IC9PYjIgL0dGIC9HeSkiLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8yLCAiTzIiLCBhbm9ueW1vdXNfMzgsIEZsYWcsIGNsX0dyb3VwLCBfU0xBU0hfTywgIjJcMCIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCisgICAgICAgIk9wdGltaXplIGZvciBzcGVlZCAoc2FtZSBhcyAvT2cgL09pIC9PdCAvT3kgL09iMiAvR0YgL0d5KSIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJPNCIsIE80LCBGbGFnLCBPX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBIZWxwSGlkZGVuLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8yLCAiT2IwIiwgYW5vbnltb3VzXzM1LCBGbGFnLCBjbF9Hcm91cCwgX1NMQVNIX08sICJiMFwwIiwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwKK09QVElPTihwcmVmaXhfMiwgIk9iMCIsIGFub255bW91c18zOSwgRmxhZywgY2xfR3JvdXAsIF9TTEFTSF9PLCAiYjBcMCIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCiAgICAgICAgIkRpc2FibGUgZnVuY3Rpb24gaW5saW5pbmciLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8yLCAiT2IxIiwgYW5vbnltb3VzXzM2LCBGbGFnLCBjbF9Hcm91cCwgX1NMQVNIX08sICJiMVwwIiwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwKK09QVElPTihwcmVmaXhfMiwgIk9iMSIsIGFub255bW91c180MCwgRmxhZywgY2xfR3JvdXAsIF9TTEFTSF9PLCAiYjFcMCIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCiAgICAgICAgIk9ubHkgaW5saW5lIGZ1bmN0aW9ucyB3aGljaCBhcmUgKGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSkgbWFya2VkIGlubGluZSIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzIsICJPYjIiLCBhbm9ueW1vdXNfMzcsIEZsYWcsIGNsX0dyb3VwLCBfU0xBU0hfTywgImIyXDAiLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAorT1BUSU9OKHByZWZpeF8yLCAiT2IyIiwgYW5vbnltb3VzXzQxLCBGbGFnLCBjbF9Hcm91cCwgX1NMQVNIX08sICJiMlwwIiwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwKICAgICAgICAiSW5saW5lIGZ1bmN0aW9ucyBhcyBkZWVtZWQgYmVuZWZpY2lhbCBieSB0aGUgY29tcGlsZXIiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiT2JqQysrIiwgT2JqQ1hYLCBGbGFnLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBEcml2ZXJPcHRpb24sIDAsCiAgICAgICAgIlRyZWF0IHNvdXJjZSBpbnB1dCBmaWxlcyBhcyBPYmplY3RpdmUtQysrIGlucHV0cyIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC0yOTE0LDE0ICszMDIwLDE0IEBACiBPUFRJT04ocHJlZml4XzEsICJPYmpDIiwgT2JqQywgRmxhZywgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgRHJpdmVyT3B0aW9uLCAwLAogICAgICAgICJUcmVhdCBzb3VyY2UgaW5wdXQgZmlsZXMgYXMgT2JqZWN0aXZlLUMgaW5wdXRzIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIm9iamVjdCIsIG9iamVjdCwgRmxhZywgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKLU9QVElPTihwcmVmaXhfMiwgIk9kIiwgYW5vbnltb3VzXzM4LCBGbGFnLCBjbF9Hcm91cCwgX1NMQVNIX08sICJkXDAiLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAorT1BUSU9OKHByZWZpeF8yLCAiT2QiLCBhbm9ueW1vdXNfNDIsIEZsYWcsIGNsX0dyb3VwLCBfU0xBU0hfTywgImRcMCIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCiAgICAgICAgIkRpc2FibGUgb3B0aW1pemF0aW9uIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIk9mYXN0IiwgT2Zhc3QsIEpvaW5lZCwgT19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8yLCAiT2ciLCBhbm9ueW1vdXNfMzksIEZsYWcsIGNsX0dyb3VwLCBfU0xBU0hfTywgImdcMCIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCitPUFRJT04ocHJlZml4XzIsICJPZyIsIGFub255bW91c180MywgRmxhZywgY2xfR3JvdXAsIF9TTEFTSF9PLCAiZ1wwIiwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwKICAgICAgICAiTm8gZWZmZWN0IiwgbnVsbHB0ciwgbnVsbHB0cikKLU9QVElPTihwcmVmaXhfMiwgIk9pLSIsIGFub255bW91c180MSwgRmxhZywgY2xfR3JvdXAsIF9TTEFTSF9PLCAiaS1cMCIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCitPUFRJT04ocHJlZml4XzIsICJPaS0iLCBhbm9ueW1vdXNfNDUsIEZsYWcsIGNsX0dyb3VwLCBfU0xBU0hfTywgImktXDAiLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAogICAgICAgICJEaXNhYmxlIHVzZSBvZiBidWlsdGluIGZ1bmN0aW9ucyIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzIsICJPaSIsIGFub255bW91c180MCwgRmxhZywgY2xfR3JvdXAsIF9TTEFTSF9PLCAiaVwwIiwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwKK09QVElPTihwcmVmaXhfMiwgIk9pIiwgYW5vbnltb3VzXzQ0LCBGbGFnLCBjbF9Hcm91cCwgX1NMQVNIX08sICJpXDAiLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAogICAgICAgICJFbmFibGUgdXNlIG9mIGJ1aWx0aW4gZnVuY3Rpb25zIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMiwgIm9wZW5tcC0iLCBfU0xBU0hfb3Blbm1wXywgRmxhZywgY2xfaWdub3JlZF9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzIsICJvcGVubXAiLCBfU0xBU0hfb3Blbm1wLCBGbGFnLCBjbF9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTI5MjksOSArMzAzNSw5IEBACiAgICAgICAgIkZpbGUgbmFtZSB0byB1c2UgZm9yIFlBTUwgb3B0aW1pemF0aW9uIHJlY29yZCBvdXRwdXQiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8zLCAib3B0aW1pemU9IiwgX29wdGltaXplX0VRLCBKb2luZWQsIElOVkFMSUQsIE8sIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzMsICJvcHRpbWl6ZSIsIF9vcHRpbWl6ZSwgRmxhZywgSU5WQUxJRCwgTywgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKLU9QVElPTihwcmVmaXhfMiwgIk9zIiwgYW5vbnltb3VzXzQyLCBGbGFnLCBjbF9Hcm91cCwgX1NMQVNIX08sICJzXDAiLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAorT1BUSU9OKHByZWZpeF8yLCAiT3MiLCBhbm9ueW1vdXNfNDYsIEZsYWcsIGNsX0dyb3VwLCBfU0xBU0hfTywgInNcMCIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCiAgICAgICAgIk9wdGltaXplIGZvciBzaXplIiwgbnVsbHB0ciwgbnVsbHB0cikKLU9QVElPTihwcmVmaXhfMiwgIk90IiwgYW5vbnltb3VzXzQzLCBGbGFnLCBjbF9Hcm91cCwgX1NMQVNIX08sICJ0XDAiLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAorT1BUSU9OKHByZWZpeF8yLCAiT3QiLCBhbm9ueW1vdXNfNDcsIEZsYWcsIGNsX0dyb3VwLCBfU0xBU0hfTywgInRcMCIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCiAgICAgICAgIk9wdGltaXplIGZvciBzcGVlZCIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJvdXRwdXQtYXNtLXZhcmlhbnQiLCBvdXRwdXRfYXNtX3ZhcmlhbnQsIFNlcGFyYXRlLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBDQzFBc09wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLAogICAgICAgICJTZWxlY3QgdGhlIGFzbSB2YXJpYW50IGluZGV4IHRvIHVzZSBmb3Igb3V0cHV0IiwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTI5MzksMTYgKzMwNDUsMTYgQEAKIE9QVElPTihwcmVmaXhfMywgIm91dHB1dC1jbGFzcy1kaXJlY3RvcnkiLCBfb3V0cHV0X2NsYXNzX2RpcmVjdG9yeSwgU2VwYXJhdGUsIElOVkFMSUQsIGZvdXRwdXRfY2xhc3NfZGlyX0VRLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8zLCAib3V0cHV0PSIsIF9vdXRwdXRfRVEsIEpvaW5lZCwgSU5WQUxJRCwgbywgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMywgIm91dHB1dCIsIF9vdXRwdXQsIFNlcGFyYXRlLCBJTlZBTElELCBvLCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8yLCAiT3giLCBhbm9ueW1vdXNfNDQsIEZsYWcsIGNsX0dyb3VwLCBfU0xBU0hfTywgInhcMCIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCi0gICAgICAgIkRlcHJlY2F0ZWQgKGVxdWl2YWxlbnQgdG8gL09nIC9PaSAvT3QgL095IC9PYjIpOyB1c2UgL08yIGluc3RlYWQiLCBudWxscHRyLCBudWxscHRyKQotT1BUSU9OKHByZWZpeF8yLCAiT3ktIiwgYW5vbnltb3VzXzQ2LCBGbGFnLCBjbF9Hcm91cCwgX1NMQVNIX08sICJ5LVwwIiwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwKK09QVElPTihwcmVmaXhfMiwgIk94IiwgYW5vbnltb3VzXzQ4LCBGbGFnLCBjbF9Hcm91cCwgX1NMQVNIX08sICJ4XDAiLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAorICAgICAgICJEZXByZWNhdGVkIChzYW1lIGFzIC9PZyAvT2kgL090IC9PeSAvT2IyKTsgdXNlIC9PMiBpbnN0ZWFkIiwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMiwgIk95LSIsIGFub255bW91c181MCwgRmxhZywgY2xfR3JvdXAsIF9TTEFTSF9PLCAieS1cMCIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCiAgICAgICAgIkRpc2FibGUgZnJhbWUgcG9pbnRlciBvbWlzc2lvbiAoeDg2IG9ubHksIGRlZmF1bHQpIiwgbnVsbHB0ciwgbnVsbHB0cikKLU9QVElPTihwcmVmaXhfMiwgIk95IiwgYW5vbnltb3VzXzQ1LCBGbGFnLCBjbF9Hcm91cCwgX1NMQVNIX08sICJ5XDAiLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAorT1BUSU9OKHByZWZpeF8yLCAiT3kiLCBhbm9ueW1vdXNfNDksIEZsYWcsIGNsX0dyb3VwLCBfU0xBU0hfTywgInlcMCIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCiAgICAgICAgIkVuYWJsZSBmcmFtZSBwb2ludGVyIG9taXNzaW9uICh4ODYgb25seSkiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiTyIsIE9fZmxhZywgRmxhZywgSU5WQUxJRCwgTywgIjJcMCIsIENDMU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgIk8iLCBPLCBKb2luZWQsIE9fR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMiwgIk8iLCBfU0xBU0hfTywgSm9pbmVkLCBjbF9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwKLSAgICAgICAiU2V0IG11bHRpcGxlIC9PIGZsYWdzIGF0IG9uY2U7IGUuZy4gJy9PMnktJyBpcyB0aGUgc2FtZSBhcyAnL08yIC95LSciLCAiPGZsYWdzPiIsIG51bGxwdHIpCisgICAgICAgIlNldCBtdWx0aXBsZSAvTyBmbGFncyBhdCBvbmNlOyBlLmcuICcvTzJ5LScgZm9yICcvTzIgL095LSciLCAiPGZsYWdzPiIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJvIiwgbywgSm9pbmVkT3JTZXBhcmF0ZSwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgRHJpdmVyT3B0aW9uIHwgUmVuZGVyQXNJbnB1dCB8IENDMU9wdGlvbiB8IENDMUFzT3B0aW9uLCAwLAogICAgICAgICJXcml0ZSBvdXRwdXQgdG8gPGZpbGU+IiwgIjxmaWxlPiIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzIsICJvIiwgX1NMQVNIX28sIEpvaW5lZE9yU2VwYXJhdGUsIGNsX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLApAQCAtMzA0Nyw2ICszMTUzLDggQEAKIE9QVElPTihwcmVmaXhfMSwgIlEiLCBRLCBGbGFnLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBIZWxwSGlkZGVuLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAicmR5bmFtaWMiLCByZHluYW1pYywgRmxhZywgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgInJlYWRfb25seV9yZWxvY3MiLCByZWFkX19vbmx5X19yZWxvY3MsIFNlcGFyYXRlLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAicmVjb3JkLWNvbW1hbmQtbGluZSIsIHJlY29yZF9jb21tYW5kX2xpbmUsIFNlcGFyYXRlLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBDQzFBc09wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLAorICAgICAgICJUaGUgc3RyaW5nIHRvIGVtYmVkIGluIHRoZSAuTExWTS5jb21tYW5kLmxpbmUgc2VjdGlvbi4iLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAicmVsYXhlZC1hbGlhc2luZyIsIHJlbGF4ZWRfYWxpYXNpbmcsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLAogICAgICAgICJUdXJuIG9mZiBUeXBlIEJhc2VkIEFsaWFzIEFuYWx5c2lzIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfNCwgInJlbG9jYXRhYmxlLXBjaCIsIHJlbG9jYXRhYmxlX3BjaCwgRmxhZywgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uLCAwLApAQCAtMzEyMiw2ICszMjMwLDEwIEBACiAgICAgICAgIlByaW50IGNsLmV4ZSBzdHlsZSAvc2hvd0luY2x1ZGVzIHRvIHN0ZG91dCIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJzaG93LWluc3QiLCBzaG93X2luc3QsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMUFzT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCiAgICAgICAgIlNob3cgaW50ZXJuYWwgaW5zdHJ1Y3Rpb24gcmVwcmVzZW50YXRpb24gaW4gdHJhbnNsaXRlcmF0ZSBtb2RlIiwgbnVsbHB0ciwgbnVsbHB0cikKK09QVElPTihwcmVmaXhfMiwgInNob3dGaWxlbmFtZXMtIiwgX1NMQVNIX3Nob3dGaWxlbmFtZXNfLCBGbGFnLCBjbF9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24gfCBDTE9wdGlvbiwgMCwKKyAgICAgICAiRG9uJ3QgcHJpbnQgdGhlIG5hbWUgb2YgZWFjaCBjb21waWxlZCBmaWxlIChkZWZhdWx0KSIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzIsICJzaG93RmlsZW5hbWVzIiwgX1NMQVNIX3Nob3dGaWxlbmFtZXMsIEZsYWcsIGNsX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAorICAgICAgICJQcmludCB0aGUgbmFtZSBvZiBlYWNoIGNvbXBpbGVkIGZpbGUiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8yLCAic2hvd0luY2x1ZGVzIiwgX1NMQVNIX3Nob3dJbmNsdWRlcywgRmxhZywgY2xfR3JvdXAsIHNob3dfaW5jbHVkZXMsIG51bGxwdHIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCiAgICAgICAgIlByaW50IGluZm8gYWJvdXQgaW5jbHVkZWQgZmlsZXMgdG8gc3RkZXJyIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMywgInNpZ25lZC1jaGFyIiwgX3NpZ25lZF9jaGFyLCBGbGFnLCBJTlZBTElELCBmc2lnbmVkX2NoYXIsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCkBAIC0zMTY3LDcgKzMyNzksNyBAQAogT1BUSU9OKHByZWZpeF8zLCAic3lzcm9vdCIsIF9zeXNyb290LCBTZXBhcmF0ZSwgSU5WQUxJRCwgX3N5c3Jvb3RfRVEsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzMsICJzeXN0ZW0taGVhZGVyLXByZWZpeD0iLCBzeXN0ZW1faGVhZGVyX3ByZWZpeCwgSm9pbmVkLCBjbGFuZ19pX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24sIDAsCiAgICAgICAgIlRyZWF0IGFsbCAjaW5jbHVkZSBwYXRocyBzdGFydGluZyB3aXRoIDxwcmVmaXg+IGFzIGluY2x1ZGluZyBhIHN5c3RlbSBoZWFkZXIuIiwgIjxwcmVmaXg+IiwgbnVsbHB0cikKLU9QVElPTihwcmVmaXhfMywgInN5c3RlbS1oZWFkZXItcHJlZml4IiwgYW5vbnltb3VzXzI2LCBTZXBhcmF0ZSwgSU5WQUxJRCwgc3lzdGVtX2hlYWRlcl9wcmVmaXgsIG51bGxwdHIsIDAsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzMsICJzeXN0ZW0taGVhZGVyLXByZWZpeCIsIGFub255bW91c18zMCwgU2VwYXJhdGUsIElOVkFMSUQsIHN5c3RlbV9oZWFkZXJfcHJlZml4LCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAiUyIsIFMsIEZsYWcsIEFjdGlvbl9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgRHJpdmVyT3B0aW9uIHwgQ0MxT3B0aW9uLCAwLAogICAgICAgICJPbmx5IHJ1biBwcmVwcm9jZXNzIGFuZCBjb21waWxhdGlvbiBzdGVwcyIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJzIiwgcywgRmxhZywgTGlua19Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKQEAgLTMxODAsNiArMzI5Miw4IEBACiBPUFRJT04ocHJlZml4XzMsICJ0YXJnZXQtaGVscCIsIF90YXJnZXRfaGVscCwgRmxhZywgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgMCwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMSwgInRhcmdldC1saW5rZXItdmVyc2lvbiIsIHRhcmdldF9saW5rZXJfdmVyc2lvbiwgU2VwYXJhdGUsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIENDMU9wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLAogICAgICAgICJUYXJnZXQgbGlua2VyIHZlcnNpb24iLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8xLCAidGFyZ2V0LXNkay12ZXJzaW9uPSIsIHRhcmdldF9zZGtfdmVyc2lvbl9FUSwgSm9pbmVkLCBJTlZBTElELCBJTlZBTElELCBudWxscHRyLCBDQzFPcHRpb24gfCBDQzFBc09wdGlvbiB8IE5vRHJpdmVyT3B0aW9uLCAwLAorICAgICAgICJUaGUgdmVyc2lvbiBvZiB0YXJnZXQgU0RLIHVzZWQgZm9yIGNvbXBpbGF0aW9uIiwgbnVsbHB0ciwgbnVsbHB0cikKIE9QVElPTihwcmVmaXhfMywgInRhcmdldD0iLCB0YXJnZXQsIEpvaW5lZCwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgRHJpdmVyT3B0aW9uIHwgQ29yZU9wdGlvbiwgMCwKICAgICAgICAiR2VuZXJhdGUgY29kZSBmb3IgdGhlIGdpdmVuIHRhcmdldCIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzEsICJ0YXJnZXQiLCB0YXJnZXRfbGVnYWN5X3NwZWxsaW5nLCBTZXBhcmF0ZSwgSU5WQUxJRCwgdGFyZ2V0LCBudWxscHRyLCAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQpAQCAtMzE5Nyw4ICszMzExLDYgQEAKICAgICAgICAiRG8gbm90IGdlbmVyYXRlIGNvdmVyYWdlIGZpbGVzIG9yIHJlbW92ZSBjb3ZlcmFnZSBjaGFuZ2VzIGZyb20gSVIiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8xLCAidGltZSIsIHRpbWUsIEZsYWcsIElOVkFMSUQsIElOVkFMSUQsIG51bGxwdHIsIDAsIDAsCiAgICAgICAgIlRpbWUgaW5kaXZpZHVhbCBjb21tYW5kcyIsIG51bGxwdHIsIG51bGxwdHIpCi1PUFRJT04ocHJlZml4XzEsICJ0b2tlbi1jYWNoZSIsIHRva2VuX2NhY2hlLCBTZXBhcmF0ZSwgSU5WQUxJRCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0MxT3B0aW9uIHwgTm9Ecml2ZXJPcHRpb24sIDAsCi0gICAgICAgIlVzZSBzcGVjaWZpZWQgdG9rZW4gY2FjaGUgZmlsZSIsICI8cGF0aD4iLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8yLCAiVFAiLCBfU0xBU0hfVFAsIEZsYWcsIGNsX2NvbXBpbGVfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uLCAwLAogICAgICAgICJUcmVhdCBhbGwgc291cmNlIGZpbGVzIGFzIEMrKyIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzIsICJUcCIsIF9TTEFTSF9UcCwgSm9pbmVkT3JTZXBhcmF0ZSwgY2xfY29tcGlsZV9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24sIDAsCkBAIC0zMzk0LDcgKzM1MDYsMTUgQEAKICAgICAgICAiRW5hYmxlIENvZGVWaWV3IGRlYnVnIGluZm9ybWF0aW9uIGluIG9iamVjdCBmaWxlcyIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzIsICJaYSIsIF9TTEFTSF9aYSwgRmxhZywgY2xfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzIsICJaYzpfX2NwbHVzcGx1cyIsIF9TTEFTSF9aY19fX2NwbHVzcGx1cywgRmxhZywgY2xfaWdub3JlZF9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzIsICJaYzphbGlnbmVkTmV3LSIsIF9TTEFTSF9aY19hbGlnbmVkTmV3XywgRmxhZywgY2xfR3JvdXAsIGZub19hbGlnbmVkX2FsbG9jYXRpb24sIG51bGxwdHIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uIHwgQ0xPcHRpb24sIDAsCisgICAgICAgIkRpc2FibGUgQysrMTcgYWxpZ25lZCBhbGxvY2F0aW9uIGZ1bmN0aW9ucyIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzIsICJaYzphbGlnbmVkTmV3IiwgX1NMQVNIX1pjX2FsaWduZWROZXcsIEZsYWcsIGNsX0dyb3VwLCBmYWxpZ25lZF9hbGxvY2F0aW9uLCBudWxscHRyLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAorICAgICAgICJFbmFibGUgQysrMTcgYWxpZ25lZCBhbGxvY2F0aW9uIGZ1bmN0aW9ucyIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzIsICJaYzphdXRvIiwgX1NMQVNIX1pjX2F1dG8sIEZsYWcsIGNsX2lnbm9yZWRfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQorT1BUSU9OKHByZWZpeF8yLCAiWmM6ZGxsZXhwb3J0SW5saW5lcy0iLCBfU0xBU0hfWmNfZGxsZXhwb3J0SW5saW5lc18sIEZsYWcsIGNsX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAorICAgICAgICJEb24ndCBkbGxleHBvcnQvZGxsaW1wb3J0IGlubGluZSBtZW1iZXIgZnVuY3Rpb25zIG9mIGRsbGV4cG9ydC9pbXBvcnQgY2xhc3NlcyIsIG51bGxwdHIsIG51bGxwdHIpCitPUFRJT04ocHJlZml4XzIsICJaYzpkbGxleHBvcnRJbmxpbmVzIiwgX1NMQVNIX1pjX2RsbGV4cG9ydElubGluZXMsIEZsYWcsIGNsX0dyb3VwLCBJTlZBTElELCBudWxscHRyLCBDTE9wdGlvbiB8IERyaXZlck9wdGlvbiB8IENMT3B0aW9uLCAwLAorICAgICAgICJkbGxleHBvcnQvZGxsaW1wb3J0IGlubGluZSBtZW1iZXIgZnVuY3Rpb25zIG9mIGRsbGV4cG9ydC9pbXBvcnQgY2xhc3NlcyAoZGVmYXVsdCkiLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8yLCAiWmM6Zm9yU2NvcGUiLCBfU0xBU0hfWmNfZm9yU2NvcGUsIEZsYWcsIGNsX2lnbm9yZWRfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQogT1BUSU9OKHByZWZpeF8yLCAiWmM6aW5saW5lIiwgX1NMQVNIX1pjX2lubGluZSwgRmxhZywgY2xfaWdub3JlZF9Hcm91cCwgSU5WQUxJRCwgbnVsbHB0ciwgQ0xPcHRpb24gfCBEcml2ZXJPcHRpb24sIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpCiBPUFRJT04ocHJlZml4XzIsICJaYzpydmFsdWVDYXN0IiwgX1NMQVNIX1pjX3J2YWx1ZUNhc3QsIEZsYWcsIGNsX2lnbm9yZWRfR3JvdXAsIElOVkFMSUQsIG51bGxwdHIsIENMT3B0aW9uIHwgRHJpdmVyT3B0aW9uLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKQpAQCAtMzQ1NiwxMSArMzU3NiwxMSBAQAogCiAgICAgY29uc3QgY2hhciAqVmFsdWVzID0KICAgICAjZGVmaW5lIEdFVF9DSEVDS0VSUwotICAgICNkZWZpbmUgQ0hFQ0tFUihGVUxMTkFNRSwgQ0xBU1MsIERFU0NGSUxFLCBIVCwgRywgSCkgIEZVTExOQU1FICIsIgorICAgICNkZWZpbmUgQ0hFQ0tFUihGVUxMTkFNRSwgQ0xBU1MsIEhULCBET0NfVVJJKSAgRlVMTE5BTUUgIiwiCiAgICAgI2luY2x1ZGUgImNsYW5nL1N0YXRpY0FuYWx5emVyL0NoZWNrZXJzL0NoZWNrZXJzLmluYyIKICAgICAjdW5kZWYgR0VUX0NIRUNLRVJTCiAgICAgI2RlZmluZSBHRVRfUEFDS0FHRVMKLSAgICAjZGVmaW5lIFBBQ0tBR0UoRlVMTE5BTUUsIEcsIEQpICBGVUxMTkFNRSAiLCIKKyAgICAjZGVmaW5lIFBBQ0tBR0UoRlVMTE5BTUUpICBGVUxMTkFNRSAiLCIKICAgICAjaW5jbHVkZSAiY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ2hlY2tlcnMvQ2hlY2tlcnMuaW5jIgogICAgICN1bmRlZiBHRVRfUEFDS0FHRVMKICAgICA7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvUGhhc2VzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvUGhhc2VzLmgKaW5kZXggY2Q2YjViNS4uNzE5OWM2NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL1BoYXNlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9QaGFzZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFBoYXNlcy5oIC0gVHJhbnNmb3JtYXRpb25zIG9uIERyaXZlciBUeXBlcyAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9TYW5pdGl6ZXJBcmdzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvU2FuaXRpemVyQXJncy5oCmluZGV4IGQxNDRlNDguLjE4ZThlNGYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9TYW5pdGl6ZXJBcmdzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL1Nhbml0aXplckFyZ3MuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFNhbml0aXplckFyZ3MuaCAtIEFyZ3VtZW50cyBmb3Igc2FuaXRpemVyIHRvb2xzICAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAjaWZuZGVmIExMVk1fQ0xBTkdfRFJJVkVSX1NBTklUSVpFUkFSR1NfSApAQCAtMzYsNyArMzUsMTAgQEAKICAgaW50IEFzYW5GaWVsZFBhZGRpbmcgPSAwOwogICBib29sIFNoYXJlZFJ1bnRpbWUgPSBmYWxzZTsKICAgYm9vbCBBc2FuVXNlQWZ0ZXJTY29wZSA9IHRydWU7CisgIGJvb2wgQXNhblBvaXNvbkN1c3RvbUFycmF5Q29va2llID0gZmFsc2U7CiAgIGJvb2wgQXNhbkdsb2JhbHNEZWFkU3RyaXBwaW5nID0gZmFsc2U7CisgIGJvb2wgQXNhblVzZU9kckluZGljYXRvciA9IGZhbHNlOworICBzdGQ6OnN0cmluZyBId2FzYW5BYmk7CiAgIGJvb2wgTGlua0NYWFJ1bnRpbWVzID0gZmFsc2U7CiAgIGJvb2wgTmVlZFBJRSA9IGZhbHNlOwogICBib29sIFNhZmVTdGFja1J1bnRpbWUgPSBmYWxzZTsKQEAgLTc4LDggKzgwLDEwIEBACiAKICAgYm9vbCByZXF1aXJlc1BJRSgpIGNvbnN0OwogICBib29sIG5lZWRzVW53aW5kVGFibGVzKCkgY29uc3Q7CisgIGJvb2wgbmVlZHNMVE8oKSBjb25zdDsKICAgYm9vbCBsaW5rQ1hYUnVudGltZXMoKSBjb25zdCB7IHJldHVybiBMaW5rQ1hYUnVudGltZXM7IH0KICAgYm9vbCBoYXNDcm9zc0Rzb0NmaSgpIGNvbnN0IHsgcmV0dXJuIENmaUNyb3NzRHNvOyB9CisgIGJvb2wgaGFzQW55U2FuaXRpemVyKCkgY29uc3QgeyByZXR1cm4gIVNhbml0aXplcnMuZW1wdHkoKTsgfQogICB2b2lkIGFkZEFyZ3MoY29uc3QgVG9vbENoYWluICZUQywgY29uc3QgbGx2bTo6b3B0OjpBcmdMaXN0ICZBcmdzLAogICAgICAgICAgICAgICAgbGx2bTo6b3B0OjpBcmdTdHJpbmdMaXN0ICZDbWRBcmdzLCB0eXBlczo6SUQgSW5wdXRUeXBlKSBjb25zdDsKIH07CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvVG9vbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL1Rvb2wuaAppbmRleCBiMDJhYzY2Li44ZDA0OTE2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvVG9vbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9Ub29sLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBUb29sLmggLSBDb21waWxhdGlvbiBUb29scyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvVG9vbENoYWluLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvVG9vbENoYWluLmgKaW5kZXggYmM2MWJjNi4uZTgyNjc1ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL1Rvb2xDaGFpbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9Ub29sQ2hhaW4uaApAQCAtMSwxNiArMSwxNyBAQAogLy89PT0tIFRvb2xDaGFpbi5oIC0gQ29sbGVjdGlvbnMgb2YgdG9vbHMgZm9yIG9uZSBwbGF0Zm9ybSAtLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIAogI2lmbmRlZiBMTFZNX0NMQU5HX0RSSVZFUl9UT09MQ0hBSU5fSAogI2RlZmluZSBMTFZNX0NMQU5HX0RSSVZFUl9UT09MQ0hBSU5fSAogCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGVidWdJbmZvT3B0aW9ucy5oIgogI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0xMVk0uaCIKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9MYW5nT3B0aW9ucy5oIgogI2luY2x1ZGUgImNsYW5nL0Jhc2ljL1Nhbml0aXplcnMuaCIKICNpbmNsdWRlICJjbGFuZy9Ecml2ZXIvQWN0aW9uLmgiCiAjaW5jbHVkZSAiY2xhbmcvRHJpdmVyL011bHRpbGliLmgiCkBAIC0zNDgsNiArMzQ5LDEyIEBACiAgICAgcmV0dXJuIDA7CiAgIH0KIAorICAvLy8gR2V0IHRoZSBkZWZhdWx0IHRyaXZpYWwgYXV0b21hdGljIHZhcmlhYmxlIGluaXRpYWxpemF0aW9uLgorICB2aXJ0dWFsIExhbmdPcHRpb25zOjpUcml2aWFsQXV0b1ZhckluaXRLaW5kCisgIEdldERlZmF1bHRUcml2aWFsQXV0b1ZhckluaXQoKSBjb25zdCB7CisgICAgcmV0dXJuIExhbmdPcHRpb25zOjpUcml2aWFsQXV0b1ZhckluaXRLaW5kOjpVbmluaXRpYWxpemVkOworICB9CisKICAgLy8vIEdldERlZmF1bHRMaW5rZXIgLSBHZXQgdGhlIGRlZmF1bHQgbGlua2VyIHRvIHVzZS4KICAgdmlydHVhbCBjb25zdCBjaGFyICpnZXREZWZhdWx0TGlua2VyKCkgY29uc3QgeyByZXR1cm4gImxkIjsgfQogCkBAIC0zODAsNiArMzg3LDkgQEAKICAgLy8vIG5lZWRzUHJvZmlsZVJUIC0gcmV0dXJucyB0cnVlIGlmIGluc3RydW1lbnRhdGlvbiBwcm9maWxlIGlzIG9uLgogICBzdGF0aWMgYm9vbCBuZWVkc1Byb2ZpbGVSVChjb25zdCBsbHZtOjpvcHQ6OkFyZ0xpc3QgJkFyZ3MpOwogCisgIC8vLyBSZXR1cm5zIHRydWUgaWYgZ2NvdiBpbnN0cnVtZW50YXRpb24gKC1mcHJvZmlsZS1hcmNzIG9yIC0tY292ZXJhZ2UpIGlzIG9uLgorICBzdGF0aWMgYm9vbCBuZWVkc0dDb3ZJbnN0cnVtZW50YXRpb24oY29uc3QgbGx2bTo6b3B0OjpBcmdMaXN0ICZBcmdzKTsKKwogICAvLy8gSXNVbndpbmRUYWJsZXNEZWZhdWx0IC0gRG9lcyB0aGlzIHRvb2wgY2hhaW4gdXNlIC1mdW53aW5kLXRhYmxlcwogICAvLy8gYnkgZGVmYXVsdC4KICAgdmlydHVhbCBib29sIElzVW53aW5kVGFibGVzRGVmYXVsdChjb25zdCBsbHZtOjpvcHQ6OkFyZ0xpc3QgJkFyZ3MpIGNvbnN0OwpAQCAtNDAyLDYgKzQxMiwxMSBAQAogICAvLy8gQ29tcGxhaW4gaWYgdGhpcyB0b29sIGNoYWluIGRvZXNuJ3Qgc3VwcG9ydCBPYmplY3RpdmUtQyBBUkMuCiAgIHZpcnR1YWwgdm9pZCBDaGVja09iakNBUkMoKSBjb25zdCB7fQogCisgIC8vLyBHZXQgdGhlIGRlZmF1bHQgZGVidWcgaW5mbyBmb3JtYXQuIFR5cGljYWxseSwgdGhpcyBpcyBEV0FSRi4KKyAgdmlydHVhbCBjb2RlZ2Vub3B0aW9uczo6RGVidWdJbmZvRm9ybWF0IGdldERlZmF1bHREZWJ1Z0Zvcm1hdCgpIGNvbnN0IHsKKyAgICByZXR1cm4gY29kZWdlbm9wdGlvbnM6OkRJRl9EV0FSRjsKKyAgfQorCiAgIC8vLyBVc2VEd2FyZkRlYnVnRmxhZ3MgLSBFbWJlZCB0aGUgY29tcGlsZSBvcHRpb25zIHRvIGNsYW5nIGludG8gdGhlIER3YXJmCiAgIC8vLyBjb21waWxlIHVuaXQgaW5mb3JtYXRpb24uCiAgIHZpcnR1YWwgYm9vbCBVc2VEd2FyZkRlYnVnRmxhZ3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtNDI2LDYgKzQ0MSwxMCBAQAogICAgIHJldHVybiB0cnVlOwogICB9CiAKKyAgLy8vIEFkanVzdCBkZWJ1ZyBpbmZvcm1hdGlvbiBraW5kIGNvbnNpZGVyaW5nIGFsbCBwYXNzZWQgb3B0aW9ucy4KKyAgdmlydHVhbCB2b2lkIGFkanVzdERlYnVnSW5mb0tpbmQoY29kZWdlbm9wdGlvbnM6OkRlYnVnSW5mb0tpbmQgJkRlYnVnSW5mb0tpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06Om9wdDo6QXJnTGlzdCAmQXJncykgY29uc3Qge30KKwogICAvLy8gR2V0RXhjZXB0aW9uTW9kZWwgLSBSZXR1cm4gdGhlIHRvb2wgY2hhaW4gZXhjZXB0aW9uIG1vZGVsLgogICB2aXJ0dWFsIGxsdm06OkV4Y2VwdGlvbkhhbmRsaW5nCiAgIEdldEV4Y2VwdGlvbk1vZGVsKGNvbnN0IGxsdm06Om9wdDo6QXJnTGlzdCAmQXJncykgY29uc3Q7CkBAIC00MzQsNyArNDUzLDkgQEAKICAgdmlydHVhbCBib29sIFN1cHBvcnRzRW1iZWRkZWRCaXRjb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAvLy8gZ2V0VGhyZWFkTW9kZWwoKSAtIFdoaWNoIHRocmVhZCBtb2RlbCBkb2VzIHRoaXMgdGFyZ2V0IHVzZT8KLSAgdmlydHVhbCBzdGQ6OnN0cmluZyBnZXRUaHJlYWRNb2RlbCgpIGNvbnN0IHsgcmV0dXJuICJwb3NpeCI7IH0KKyAgdmlydHVhbCBzdGQ6OnN0cmluZyBnZXRUaHJlYWRNb2RlbChjb25zdCBsbHZtOjpvcHQ6OkFyZ0xpc3QgJikgY29uc3QgeworICAgIHJldHVybiAicG9zaXgiOworICB9CiAKICAgLy8vIGlzVGhyZWFkTW9kZWxTdXBwb3J0ZWQoKSAtIERvZXMgdGhpcyB0YXJnZXQgc3VwcG9ydCBhIHRocmVhZCBtb2RlbD8KICAgdmlydHVhbCBib29sIGlzVGhyZWFkTW9kZWxTdXBwb3J0ZWQoY29uc3QgU3RyaW5nUmVmIE1vZGVsKSBjb25zdDsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9UeXBlcy5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvVHlwZXMuZGVmCmluZGV4IGMyNWJjNGIuLmQyYWFmNTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9UeXBlcy5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL1R5cGVzLmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFR5cGVzLmRlZiAtIERyaXZlciBUeXBlIGluZm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL1R5cGVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvVHlwZXMuaAppbmRleCA1YmM2NjY4Li41M2FmYWRhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvVHlwZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvVHlwZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFR5cGVzLmggLSBJbnB1dCAmIFRlbXBvcmFyeSBEcml2ZXIgVHlwZXMgLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9VdGlsLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ecml2ZXIvVXRpbC5oCmluZGV4IDA3NDk1YTEuLjY3ODg0MjAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9VdGlsLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL1V0aWwuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFV0aWwuaCAtIENvbW1vbiBEcml2ZXIgVXRpbGl0aWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0RyaXZlci9YUmF5QXJncy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL1hSYXlBcmdzLmgKaW5kZXggYzdjYTk0NS4uZmEyNTgzZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL1hSYXlBcmdzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRHJpdmVyL1hSYXlBcmdzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBYUmF5QXJncy5oIC0gQXJndW1lbnRzIGZvciBYUmF5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogI2lmbmRlZiBMTFZNX0NMQU5HX0RSSVZFUl9YUkFZQVJHU19ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9FZGl0L0NvbW1pdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRWRpdC9Db21taXQuaAppbmRleCBkNmViNmNkLi5mNmM3OTg4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9FZGl0L0NvbW1pdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0VkaXQvQ29tbWl0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29tbWl0LmggLSBBIHVuaXQgb2YgZWRpdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9FZGl0L0VkaXRlZFNvdXJjZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRWRpdC9FZGl0ZWRTb3VyY2UuaAppbmRleCA1Mjg3M2MzLi42MDA3MmY2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9FZGl0L0VkaXRlZFNvdXJjZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0VkaXQvRWRpdGVkU291cmNlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRWRpdGVkU291cmNlLmggLSBDb2xsZWN0aW9uIG9mIHNvdXJjZSBlZGl0cyAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9FZGl0L0VkaXRzUmVjZWl2ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0VkaXQvRWRpdHNSZWNlaXZlci5oCmluZGV4IDFiZWJiZWIuLjc1ZTczMTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0VkaXQvRWRpdHNSZWNlaXZlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0VkaXQvRWRpdHNSZWNlaXZlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEVkaXRlZFNvdXJjZS5oIC0gQ29sbGVjdGlvbiBvZiBzb3VyY2UgZWRpdHMgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRWRpdC9GaWxlT2Zmc2V0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9FZGl0L0ZpbGVPZmZzZXQuaAppbmRleCAwMmMxYjk2Li5iMWY2MTc2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9FZGl0L0ZpbGVPZmZzZXQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9FZGl0L0ZpbGVPZmZzZXQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBGaWxlT2Zmc2V0LmggLSBPZmZzZXQgaW4gYSBmaWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0VkaXQvUmV3cml0ZXJzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9FZGl0L1Jld3JpdGVycy5oCmluZGV4IDgzMzhkNzEuLjIxMGY5YTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0VkaXQvUmV3cml0ZXJzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRWRpdC9SZXdyaXRlcnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFJld3JpdGVycy5oIC0gUmV3cml0aW5ncyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zvcm1hdC9Gb3JtYXQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zvcm1hdC9Gb3JtYXQuaAppbmRleCBjYjU4ODZmLi40YmMwYTVjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gb3JtYXQvRm9ybWF0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRm9ybWF0L0Zvcm1hdC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gRm9ybWF0LmggLSBGb3JtYXQgQysrIGNvZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpAQCAtNTMzLDIwICs1MzIsMTcgQEAKICAgICAvLy8gXGNvZGUKICAgICAvLy8gICB0cnkgewogICAgIC8vLyAgICAgZm9vKCk7Ci0gICAgLy8vICAgfSBjYXRjaCAoKSB7CisgICAgLy8vICAgfQorICAgIC8vLyAgIGNhdGNoICgpIHsKICAgICAvLy8gICB9CiAgICAgLy8vICAgdm9pZCBmb28oKSB7IGJhcigpOyB9Ci0gICAgLy8vICAgY2xhc3MgZm9vCi0gICAgLy8vICAgeworICAgIC8vLyAgIGNsYXNzIGZvbyB7CiAgICAgLy8vICAgfTsKICAgICAvLy8gICBpZiAoZm9vKCkpIHsKLSAgICAvLy8gICB9IGVsc2UgewogICAgIC8vLyAgIH0KLSAgICAvLy8gICBlbnVtIFggOiBpbnQKLSAgICAvLy8gICB7Ci0gICAgLy8vICAgICBBLAotICAgIC8vLyAgICAgQgotICAgIC8vLyAgIH07CisgICAgLy8vICAgZWxzZSB7CisgICAgLy8vICAgfQorICAgIC8vLyAgIGVudW0gWCA6IGludCB7IEEsIEIgfTsKICAgICAvLy8gXGVuZGNvZGUKICAgICBCU19TdHJvdXN0cnVwLAogICAgIC8vLyBBbHdheXMgYnJlYWsgYmVmb3JlIGJyYWNlcy4KQEAgLTExMzksMTEgKzExMzUsMTMgQEAKICAgLy8vIGNhbiBiZSBhIHN1YnNldCBvZiBhbm90aGVyIC0gdGhlIGxvbmdlc3QgcHJlZml4IGlzIGFsd2F5cyBtYXRjaGVkLiBXaXRoaW4KICAgLy8vIGEgZ3JvdXAsIHRoZSBpbXBvcnRzIGFyZSBvcmRlcmVkIGxleGljb2dyYXBoaWNhbGx5LgogICAvLy8KLSAgLy8vIEluIHRoZSAuY2xhbmctZm9ybWF0IGNvbmZpZ3VyYXRpb24gZmlsZSwgdGhpcyBjYW4gYmUgY29uZmlndXJlZCBsaWtlOgorICAvLy8gSW4gdGhlIC5jbGFuZy1mb3JtYXQgY29uZmlndXJhdGlvbiBmaWxlLCB0aGlzIGNhbiBiZSBjb25maWd1cmVkIGxpa2UKKyAgLy8vIGluIHRoZSBmb2xsb3dpbmcgeWFtbCBleGFtcGxlLiBUaGlzIHdpbGwgcmVzdWx0IGluIGltcG9ydHMgYmVpbmcKKyAgLy8vIGZvcm1hdHRlZCBhcyBpbiB0aGUgSmF2YSBleGFtcGxlIGJlbG93LgogICAvLy8gXGNvZGV7LnlhbWx9CiAgIC8vLyAgIEphdmFJbXBvcnRHcm91cHM6IFsnY29tLmV4YW1wbGUnLCAnY29tJywgJ29yZyddCiAgIC8vLyBcZW5kY29kZQotICAvLy8gV2hpY2ggd2lsbCByZXN1bHQgaW4gaW1wb3J0cyBiZWluZyBmb3JtYXR0ZWQgYXMgc286CisgIC8vLwogICAvLy8gXGNvZGV7LmphdmF9CiAgIC8vLyAgICBpbXBvcnQgc3RhdGljIGNvbS5leGFtcGxlLmZ1bmN0aW9uMTsKICAgLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9BU1RDb25zdW1lcnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0FTVENvbnN1bWVycy5oCmluZGV4IGMyMTQ0ZGEuLjM0OTU4ZWUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0FTVENvbnN1bWVycy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0FTVENvbnN1bWVycy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQVNUQ29uc3VtZXJzLmggLSBBU1RDb25zdW1lciBpbXBsZW1lbnRhdGlvbnMgLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9BU1RVbml0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9BU1RVbml0LmgKaW5kZXggZDBiNTMyYy4uY2VmNjM4ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvQVNUVW5pdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0FTVFVuaXQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBBU1RVbml0LmggLSBBU1RVbml0IHV0aWxpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvQ2hhaW5lZERpYWdub3N0aWNDb25zdW1lci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvQ2hhaW5lZERpYWdub3N0aWNDb25zdW1lci5oCmluZGV4IDA0YzYwNzcuLmNhMjg0NTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0NoYWluZWREaWFnbm9zdGljQ29uc3VtZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9DaGFpbmVkRGlhZ25vc3RpY0NvbnN1bWVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ2hhaW5lZERpYWdub3N0aWNDb25zdW1lci5oIC0gQ2hhaW4gRGlhZ25vc3RpYyBDbGllbnRzIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9Db21tYW5kTGluZVNvdXJjZUxvYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvQ29tbWFuZExpbmVTb3VyY2VMb2MuaAppbmRleCA3YWU5OGUwLi5lOTVkMTAwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9Db21tYW5kTGluZVNvdXJjZUxvYy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0NvbW1hbmRMaW5lU291cmNlTG9jLmgKQEAgLTEsMTAgKzEsOSBAQAogCiAvLz09PS0tLSBDb21tYW5kTGluZVNvdXJjZUxvYy5oIC0gUGFyc2luZyBmb3Igc291cmNlIGxvY2F0aW9ucy0qLSBDKysgLSotLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0NvbXBpbGVySW5zdGFuY2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0NvbXBpbGVySW5zdGFuY2UuaAppbmRleCBhZDk3ODRiLi4wMDJjYzYxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9Db21waWxlckluc3RhbmNlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvQ29tcGlsZXJJbnN0YW5jZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBDb21waWxlckluc3RhbmNlLmggLSBDbGFuZyBDb21waWxlciBJbnN0YW5jZSAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMjIsNiArMjEsNyBAQAogI2luY2x1ZGUgImxsdm0vQURUL0RlbnNlTWFwLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvSW50cnVzaXZlUmVmQ250UHRyLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvU3RyaW5nUmVmLmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0J1cnlQb2ludGVyLmgiCiAjaW5jbHVkZSA8Y2Fzc2VydD4KICNpbmNsdWRlIDxsaXN0PgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTQxMSw3ICs0MTEsNyBAQAogICB9CiAKICAgdm9pZCByZXNldEFuZExlYWtGaWxlTWFuYWdlcigpIHsKLSAgICBCdXJ5UG9pbnRlcihGaWxlTWdyLmdldCgpKTsKKyAgICBsbHZtOjpCdXJ5UG9pbnRlcihGaWxlTWdyLmdldCgpKTsKICAgICBGaWxlTWdyLnJlc2V0V2l0aG91dFJlbGVhc2UoKTsKICAgfQogCkBAIC00MzEsNyArNDMxLDcgQEAKICAgfQogCiAgIHZvaWQgcmVzZXRBbmRMZWFrU291cmNlTWFuYWdlcigpIHsKLSAgICBCdXJ5UG9pbnRlcihTb3VyY2VNZ3IuZ2V0KCkpOworICAgIGxsdm06OkJ1cnlQb2ludGVyKFNvdXJjZU1nci5nZXQoKSk7CiAgICAgU291cmNlTWdyLnJlc2V0V2l0aG91dFJlbGVhc2UoKTsKICAgfQogCkBAIC00NTMsNyArNDUzLDcgQEAKICAgc3RkOjpzaGFyZWRfcHRyPFByZXByb2Nlc3Nvcj4gZ2V0UHJlcHJvY2Vzc29yUHRyKCkgeyByZXR1cm4gUFA7IH0KIAogICB2b2lkIHJlc2V0QW5kTGVha1ByZXByb2Nlc3NvcigpIHsKLSAgICBCdXJ5UG9pbnRlcihuZXcgc3RkOjpzaGFyZWRfcHRyPFByZXByb2Nlc3Nvcj4oUFApKTsKKyAgICBsbHZtOjpCdXJ5UG9pbnRlcihuZXcgc3RkOjpzaGFyZWRfcHRyPFByZXByb2Nlc3Nvcj4oUFApKTsKICAgfQogCiAgIC8vLyBSZXBsYWNlIHRoZSBjdXJyZW50IHByZXByb2Nlc3Nvci4KQEAgLTQ3MSw3ICs0NzEsNyBAQAogICB9CiAKICAgdm9pZCByZXNldEFuZExlYWtBU1RDb250ZXh0KCkgewotICAgIEJ1cnlQb2ludGVyKENvbnRleHQuZ2V0KCkpOworICAgIGxsdm06OkJ1cnlQb2ludGVyKENvbnRleHQuZ2V0KCkpOwogICAgIENvbnRleHQucmVzZXRXaXRob3V0UmVsZWFzZSgpOwogICB9CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0NvbXBpbGVySW52b2NhdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvQ29tcGlsZXJJbnZvY2F0aW9uLmgKaW5kZXggYzJmM2E0My4uNDEzMTM0YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvQ29tcGlsZXJJbnZvY2F0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvQ29tcGlsZXJJbnZvY2F0aW9uLmgKQEAgLTEsMjAgKzEsMTkgQEAKIC8vPT09LSBDb21waWxlckludm9jYXRpb24uaCAtIENvbXBpbGVyIEludm9jYXRpb24gSGVscGVyIERhdGEgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKICNpZm5kZWYgTExWTV9DTEFOR19GUk9OVEVORF9DT01QSUxFUklOVk9DQVRJT05fSAogI2RlZmluZSBMTFZNX0NMQU5HX0ZST05URU5EX0NPTVBJTEVSSU5WT0NBVElPTl9ICiAKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9Db2RlR2VuT3B0aW9ucy5oIgogI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNPcHRpb25zLmgiCiAjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRmlsZVN5c3RlbU9wdGlvbnMuaCIKICNpbmNsdWRlICJjbGFuZy9CYXNpYy9MTFZNLmgiCiAjaW5jbHVkZSAiY2xhbmcvQmFzaWMvTGFuZ09wdGlvbnMuaCIKLSNpbmNsdWRlICJjbGFuZy9Gcm9udGVuZC9Db2RlR2VuT3B0aW9ucy5oIgogI2luY2x1ZGUgImNsYW5nL0Zyb250ZW5kL0RlcGVuZGVuY3lPdXRwdXRPcHRpb25zLmgiCiAjaW5jbHVkZSAiY2xhbmcvRnJvbnRlbmQvRnJvbnRlbmRPcHRpb25zLmgiCiAjaW5jbHVkZSAiY2xhbmcvRnJvbnRlbmQvTGFuZ1N0YW5kYXJkLmgiCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9EZXBlbmRlbmN5T3V0cHV0T3B0aW9ucy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvRGVwZW5kZW5jeU91dHB1dE9wdGlvbnMuaAppbmRleCBmNDE5ZDI2Li43YTRmMzMzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9EZXBlbmRlbmN5T3V0cHV0T3B0aW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0RlcGVuZGVuY3lPdXRwdXRPcHRpb25zLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBEZXBlbmRlbmN5T3V0cHV0T3B0aW9ucy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9EaWFnbm9zdGljUmVuZGVyZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0RpYWdub3N0aWNSZW5kZXJlci5oCmluZGV4IDNiYmYzNzkuLmI5MzllYmUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0RpYWdub3N0aWNSZW5kZXJlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0RpYWdub3N0aWNSZW5kZXJlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERpYWdub3N0aWNSZW5kZXJlci5oIC0gRGlhZ25vc3RpYyBQcmV0dHktUHJpbnRpbmcgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9Gcm9udGVuZEFjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvRnJvbnRlbmRBY3Rpb24uaAppbmRleCAyMjMxNDM4Li4zYTEwN2Q1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9Gcm9udGVuZEFjdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0Zyb250ZW5kQWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIEZyb250ZW5kQWN0aW9uLmggLSBHZW5lcmljIEZyb250ZW5kIEFjdGlvbiBJbnRlcmZhY2UgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCkBAIC0zMDUsNiArMzA0LDcgQEAKICAgc3RkOjp1bmlxdWVfcHRyPEZyb250ZW5kQWN0aW9uPiBXcmFwcGVkQWN0aW9uOwogCiBwcm90ZWN0ZWQ6CisgIGJvb2wgUHJlcGFyZVRvRXhlY3V0ZUFjdGlvbihDb21waWxlckluc3RhbmNlICZDSSkgb3ZlcnJpZGU7CiAgIHN0ZDo6dW5pcXVlX3B0cjxBU1RDb25zdW1lcj4gQ3JlYXRlQVNUQ29uc3VtZXIoQ29tcGlsZXJJbnN0YW5jZSAmQ0ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nUmVmIEluRmlsZSkgb3ZlcnJpZGU7CiAgIGJvb2wgQmVnaW5JbnZvY2F0aW9uKENvbXBpbGVySW5zdGFuY2UgJkNJKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0Zyb250ZW5kQWN0aW9ucy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvRnJvbnRlbmRBY3Rpb25zLmgKaW5kZXggMzk4NjA4MC4uM2FjZDFlNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvRnJvbnRlbmRBY3Rpb25zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvRnJvbnRlbmRBY3Rpb25zLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIEZyb250ZW5kQWN0aW9ucy5oIC0gVXNlZnVsIEZyb250ZW5kIEFjdGlvbnMgLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0yNjEsMTEgKzI2MCw2IEBACiAgIHZvaWQgRXhlY3V0ZUFjdGlvbigpIG92ZXJyaWRlOwogfTsKIAotY2xhc3MgR2VuZXJhdGVQVEhBY3Rpb24gOiBwdWJsaWMgUHJlcHJvY2Vzc29yRnJvbnRlbmRBY3Rpb24gewotcHJvdGVjdGVkOgotICB2b2lkIEV4ZWN1dGVBY3Rpb24oKSBvdmVycmlkZTsKLX07Ci0KIGNsYXNzIFByZXByb2Nlc3NPbmx5QWN0aW9uIDogcHVibGljIFByZXByb2Nlc3NvckZyb250ZW5kQWN0aW9uIHsKIHByb3RlY3RlZDoKICAgdm9pZCBFeGVjdXRlQWN0aW9uKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9Gcm9udGVuZERpYWdub3N0aWMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0Zyb250ZW5kRGlhZ25vc3RpYy5oCmluZGV4IDBmMzdiN2UuLmY0MTUwNGQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0Zyb250ZW5kRGlhZ25vc3RpYy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0Zyb250ZW5kRGlhZ25vc3RpYy5oCkBAIC0xLDI4ICsxLDE0IEBACiAvLz09PS0tLSBEaWFnbm9zdGljRnJvbnRlbmQuaCAtIERpYWdub3N0aWNzIGZvciBmcm9udGVuZCAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCiAjaWZuZGVmIExMVk1fQ0xBTkdfRlJPTlRFTkRfRlJPTlRFTkRESUFHTk9TVElDX0gKICNkZWZpbmUgTExWTV9DTEFOR19GUk9OVEVORF9GUk9OVEVORERJQUdOT1NUSUNfSAogCi0jaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpYy5oIgotCi1uYW1lc3BhY2UgY2xhbmcgewotICBuYW1lc3BhY2UgZGlhZyB7Ci0gICAgZW51bSB7Ci0jZGVmaW5lIERJQUcoRU5VTSxGTEFHUyxERUZBVUxUX01BUFBJTkcsREVTQyxHUk9VUCxcCi0gICAgICAgICAgICAgU0ZJTkFFLE5PV0VSUk9SLFNIT1dJTlNZU0hFQURFUixDQVRFR09SWSkgRU5VTSwKLSNkZWZpbmUgRlJPTlRFTkRTVEFSVAotI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNGcm9udGVuZEtpbmRzLmluYyIKLSN1bmRlZiBESUFHCi0gICAgICBOVU1fQlVJTFRJTl9GUk9OVEVORF9ESUFHTk9TVElDUwotICAgIH07Ci0gIH0gIC8vIGVuZCBuYW1lc3BhY2UgZGlhZwotfSAgLy8gZW5kIG5hbWVzcGFjZSBjbGFuZworI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNGcm9udGVuZC5oIgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0Zyb250ZW5kT3B0aW9ucy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvRnJvbnRlbmRPcHRpb25zLmgKaW5kZXggYmM1NjgzOC4uNGM0ZWQ5NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvRnJvbnRlbmRPcHRpb25zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvRnJvbnRlbmRPcHRpb25zLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRnJvbnRlbmRPcHRpb25zLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC04OCw5ICs4Nyw2IEBACiAgIC8vLyBHZW5lcmF0ZSBwcmUtY29tcGlsZWQgaGVhZGVyLgogICBHZW5lcmF0ZVBDSCwKIAotICAvLy8gR2VuZXJhdGUgcHJlLXRva2VuaXplZCBoZWFkZXIuCi0gIEdlbmVyYXRlUFRILAotCiAgIC8vLyBPbmx5IGV4ZWN1dGUgZnJvbnRlbmQgaW5pdGlhbGl6YXRpb24uCiAgIEluaXRPbmx5LAogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9Gcm9udGVuZFBsdWdpblJlZ2lzdHJ5LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9Gcm9udGVuZFBsdWdpblJlZ2lzdHJ5LmgKaW5kZXggOWE4NWU4OS4uODEwNTc4NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvRnJvbnRlbmRQbHVnaW5SZWdpc3RyeS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0Zyb250ZW5kUGx1Z2luUmVnaXN0cnkuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBGcm9udGVuZFBsdWdpblJlZ2lzdHJ5LmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvTGFuZ1N0YW5kYXJkLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9MYW5nU3RhbmRhcmQuaAppbmRleCA4M2U0NTJkLi40MDZjYTU2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9MYW5nU3RhbmRhcmQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9MYW5nU3RhbmRhcmQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIExhbmdTdGFuZGFyZC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0xhbmdTdGFuZGFyZHMuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvTGFuZ1N0YW5kYXJkcy5kZWYKaW5kZXggMWU4OTVkNy4uMTk2Y2I0MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvTGFuZ1N0YW5kYXJkcy5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvTGFuZ1N0YW5kYXJkcy5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIExhbmdTdGFuZGFyZHMuZGVmIC0gTGFuZ3VhZ2UgU3RhbmRhcmQgRGF0YSAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC04Miw5ICs4MSwxMiBAQAogICAgICAgICAgICAgIEMsICJJU08gQyAyMDE3IiwKICAgICAgICAgICAgICBMaW5lQ29tbWVudCB8IEM5OSB8IEMxMSB8IEMxNyB8IERpZ3JhcGhzIHwgSGV4RmxvYXQpCiBMQU5HU1RBTkRBUkRfQUxJQVMoYzE3LCAiaXNvOTg5OToyMDE3IikKK0xBTkdTVEFOREFSRF9BTElBUyhjMTcsICJjMTgiKQorTEFOR1NUQU5EQVJEX0FMSUFTKGMxNywgImlzbzk4OTk6MjAxOCIpCiBMQU5HU1RBTkRBUkQoZ251MTcsICJnbnUxNyIsCiAgICAgICAgICAgICAgQywgIklTTyBDIDIwMTcgd2l0aCBHTlUgZXh0ZW5zaW9ucyIsCiAgICAgICAgICAgICAgTGluZUNvbW1lbnQgfCBDOTkgfCBDMTEgfCBDMTcgfCBEaWdyYXBocyB8IEdOVU1vZGUgfCBIZXhGbG9hdCkKK0xBTkdTVEFOREFSRF9BTElBUyhnbnUxNywgImdudTE4IikKIAogLy8gQysrIG1vZGVzCiBMQU5HU1RBTkRBUkQoY3h4OTgsICJjKys5OCIsCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9MYXlvdXRPdmVycmlkZVNvdXJjZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvTGF5b3V0T3ZlcnJpZGVTb3VyY2UuaAppbmRleCAyOGUzY2YwLi5lYTE2MTE0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9MYXlvdXRPdmVycmlkZVNvdXJjZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0xheW91dE92ZXJyaWRlU291cmNlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBMYXlvdXRPdmVycmlkZVNvdXJjZS5oIC0tT3ZlcnJpZGUgUmVjb3JkIExheW91dHMgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9Mb2dEaWFnbm9zdGljUHJpbnRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvTG9nRGlhZ25vc3RpY1ByaW50ZXIuaAppbmRleCAzMjg2ZWNmLi40ODE2Mjc1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9Mb2dEaWFnbm9zdGljUHJpbnRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL0xvZ0RpYWdub3N0aWNQcmludGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBMb2dEaWFnbm9zdGljUHJpbnRlci5oIC0gTG9nIERpYWdub3N0aWMgQ2xpZW50IC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9NaWdyYXRvck9wdGlvbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL01pZ3JhdG9yT3B0aW9ucy5oCmluZGV4IDhlYjcxYjEuLmNmNTBmZmMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL01pZ3JhdG9yT3B0aW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL01pZ3JhdG9yT3B0aW9ucy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gTWlncmF0b3JPcHRpb25zLmggLSBNaWdyYXRvck9wdGlvbnMgT3B0aW9ucyAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9NdWx0aXBsZXhDb25zdW1lci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvTXVsdGlwbGV4Q29uc3VtZXIuaAppbmRleCAyMTRmZWZiLi5jYTZlZDgzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9NdWx0aXBsZXhDb25zdW1lci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL011bHRpcGxleENvbnN1bWVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIE11bHRpcGxleENvbnN1bWVyLmggLSBBU1QgQ29uc3VtZXIgZm9yIFBDSCBHZW5lcmF0aW9uIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL1BDSENvbnRhaW5lck9wZXJhdGlvbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL1BDSENvbnRhaW5lck9wZXJhdGlvbnMuaAppbmRleCA3YTEyZWJjLi5mYTk3N2E2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9QQ0hDb250YWluZXJPcGVyYXRpb25zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvUENIQ29udGFpbmVyT3BlcmF0aW9ucy5oCkBAIC0xLDExOSArMSwxNCBAQAogLy89PT0tLS0gRnJvbnRlbmQvUENIQ29udGFpbmVyT3BlcmF0aW9ucy5oIC0gUENIIENvbnRhaW5lcnMgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIAogI2lmbmRlZiBMTFZNX0NMQU5HX1BDSF9DT05UQUlORVJfT1BFUkFUSU9OU19ICiAjZGVmaW5lIExMVk1fQ0xBTkdfUENIX0NPTlRBSU5FUl9PUEVSQVRJT05TX0gKIAotI2luY2x1ZGUgImNsYW5nL0Jhc2ljL01vZHVsZS5oIgotI2luY2x1ZGUgImxsdm0vQURUL1NtYWxsVmVjdG9yLmgiCi0jaW5jbHVkZSAibGx2bS9BRFQvU3RyaW5nTWFwLmgiCi0jaW5jbHVkZSAibGx2bS9TdXBwb3J0L01lbW9yeUJ1ZmZlci5oIgotI2luY2x1ZGUgPG1lbW9yeT4KLQotbmFtZXNwYWNlIGxsdm0gewotY2xhc3MgcmF3X3B3cml0ZV9zdHJlYW07Ci19Ci0KLXVzaW5nIGxsdm06OlN0cmluZ1JlZjsKLQotbmFtZXNwYWNlIGNsYW5nIHsKLQotY2xhc3MgQVNUQ29uc3VtZXI7Ci1jbGFzcyBDb2RlR2VuT3B0aW9uczsKLWNsYXNzIERpYWdub3N0aWNzRW5naW5lOwotY2xhc3MgQ29tcGlsZXJJbnN0YW5jZTsKLQotc3RydWN0IFBDSEJ1ZmZlciB7Ci0gIEFTVEZpbGVTaWduYXR1cmUgU2lnbmF0dXJlOwotICBsbHZtOjpTbWFsbFZlY3RvcjxjaGFyLCAwPiBEYXRhOwotICBib29sIElzQ29tcGxldGU7Ci19OwotCi0vLy8gVGhpcyBhYnN0cmFjdCBpbnRlcmZhY2UgcHJvdmlkZXMgb3BlcmF0aW9ucyBmb3IgY3JlYXRpbmcKLS8vLyBjb250YWluZXJzIGZvciBzZXJpYWxpemVkIEFTVHMgKHByZWNvbXBpbGVkIGhlYWRlcnMgYW5kIGNsYW5nCi0vLy8gbW9kdWxlcykuCi1jbGFzcyBQQ0hDb250YWluZXJXcml0ZXIgewotcHVibGljOgotICB2aXJ0dWFsIH5QQ0hDb250YWluZXJXcml0ZXIoKSA9IDA7Ci0gIHZpcnR1YWwgU3RyaW5nUmVmIGdldEZvcm1hdCgpIGNvbnN0ID0gMDsKLQotICAvLy8gUmV0dXJuIGFuIEFTVENvbnN1bWVyIHRoYXQgY2FuIGJlIGNoYWluZWQgd2l0aCBhCi0gIC8vLyBQQ0hHZW5lcmF0b3IgdGhhdCBwcm9kdWNlcyBhIHdyYXBwZXIgZmlsZSBmb3JtYXQgY29udGFpbmluZyBhCi0gIC8vLyBzZXJpYWxpemVkIEFTVCBiaXRzdHJlYW0uCi0gIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEFTVENvbnN1bWVyPgotICBDcmVhdGVQQ0hDb250YWluZXJHZW5lcmF0b3IoQ29tcGlsZXJJbnN0YW5jZSAmQ0ksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmTWFpbkZpbGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJk91dHB1dEZpbGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGxsdm06OnJhd19wd3JpdGVfc3RyZWFtPiBPUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2hhcmVkX3B0cjxQQ0hCdWZmZXI+IEJ1ZmZlcikgY29uc3QgPSAwOwotfTsKLQotLy8vIFRoaXMgYWJzdHJhY3QgaW50ZXJmYWNlIHByb3ZpZGVzIG9wZXJhdGlvbnMgZm9yIHVud3JhcHBpbmcKLS8vLyBjb250YWluZXJzIGZvciBzZXJpYWxpemVkIEFTVHMgKHByZWNvbXBpbGVkIGhlYWRlcnMgYW5kIGNsYW5nCi0vLy8gbW9kdWxlcykuCi1jbGFzcyBQQ0hDb250YWluZXJSZWFkZXIgewotcHVibGljOgotICB2aXJ0dWFsIH5QQ0hDb250YWluZXJSZWFkZXIoKSA9IDA7Ci0gIC8vLyBFcXVpdmFsZW50IHRvIHRoZSBmb3JtYXQgcGFzc2VkIHRvIC1mbW9kdWxlLWZvcm1hdD0KLSAgdmlydHVhbCBTdHJpbmdSZWYgZ2V0Rm9ybWF0KCkgY29uc3QgPSAwOwotCi0gIC8vLyBSZXR1cm5zIHRoZSBzZXJpYWxpemVkIEFTVCBpbnNpZGUgdGhlIFBDSCBjb250YWluZXIgQnVmZmVyLgotICB2aXJ0dWFsIFN0cmluZ1JlZiBFeHRyYWN0UENIKGxsdm06Ok1lbW9yeUJ1ZmZlclJlZiBCdWZmZXIpIGNvbnN0ID0gMDsKLX07Ci0KLS8vLyBJbXBsZW1lbnRzIHdyaXRlIG9wZXJhdGlvbnMgZm9yIGEgcmF3IHBhc3MtdGhyb3VnaCBQQ0ggY29udGFpbmVyLgotY2xhc3MgUmF3UENIQ29udGFpbmVyV3JpdGVyIDogcHVibGljIFBDSENvbnRhaW5lcldyaXRlciB7Ci0gIFN0cmluZ1JlZiBnZXRGb3JtYXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAicmF3IjsgfQotCi0gIC8vLyBSZXR1cm4gYW4gQVNUQ29uc3VtZXIgdGhhdCBjYW4gYmUgY2hhaW5lZCB3aXRoIGEKLSAgLy8vIFBDSEdlbmVyYXRvciB0aGF0IHdyaXRlcyB0aGUgbW9kdWxlIHRvIGEgZmxhdCBmaWxlLgotICBzdGQ6OnVuaXF1ZV9wdHI8QVNUQ29uc3VtZXI+Ci0gIENyZWF0ZVBDSENvbnRhaW5lckdlbmVyYXRvcihDb21waWxlckluc3RhbmNlICZDSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZNYWluRmlsZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmT3V0cHV0RmlsZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8bGx2bTo6cmF3X3B3cml0ZV9zdHJlYW0+IE9TLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzaGFyZWRfcHRyPFBDSEJ1ZmZlcj4gQnVmZmVyKSBjb25zdCBvdmVycmlkZTsKLX07Ci0KLS8vLyBJbXBsZW1lbnRzIHJlYWQgb3BlcmF0aW9ucyBmb3IgYSByYXcgcGFzcy10aHJvdWdoIFBDSCBjb250YWluZXIuCi1jbGFzcyBSYXdQQ0hDb250YWluZXJSZWFkZXIgOiBwdWJsaWMgUENIQ29udGFpbmVyUmVhZGVyIHsKLSAgU3RyaW5nUmVmIGdldEZvcm1hdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJyYXciOyB9Ci0KLSAgLy8vIFNpbXBseSByZXR1cm5zIHRoZSBidWZmZXIgY29udGFpbmVkIGluIEJ1ZmZlci4KLSAgU3RyaW5nUmVmIEV4dHJhY3RQQ0gobGx2bTo6TWVtb3J5QnVmZmVyUmVmIEJ1ZmZlcikgY29uc3Qgb3ZlcnJpZGU7Ci19OwotCi0vLy8gQSByZWdpc3RyeSBvZiBQQ0hDb250YWluZXJXcml0ZXIgYW5kIC1SZWFkZXIgb2JqZWN0cyBmb3IgZGlmZmVyZW50IGZvcm1hdHMuCi1jbGFzcyBQQ0hDb250YWluZXJPcGVyYXRpb25zIHsKLSAgbGx2bTo6U3RyaW5nTWFwPHN0ZDo6dW5pcXVlX3B0cjxQQ0hDb250YWluZXJXcml0ZXI+PiBXcml0ZXJzOwotICBsbHZtOjpTdHJpbmdNYXA8c3RkOjp1bmlxdWVfcHRyPFBDSENvbnRhaW5lclJlYWRlcj4+IFJlYWRlcnM7Ci1wdWJsaWM6Ci0gIC8vLyBBdXRvbWF0aWNhbGx5IHJlZ2lzdGVycyBhIFJhd1BDSENvbnRhaW5lcldyaXRlciBhbmQKLSAgLy8vIFJhd1BDSENvbnRhaW5lclJlYWRlci4KLSAgUENIQ29udGFpbmVyT3BlcmF0aW9ucygpOwotICB2b2lkIHJlZ2lzdGVyV3JpdGVyKHN0ZDo6dW5pcXVlX3B0cjxQQ0hDb250YWluZXJXcml0ZXI+IFdyaXRlcikgewotICAgIFdyaXRlcnNbV3JpdGVyLT5nZXRGb3JtYXQoKV0gPSBzdGQ6Om1vdmUoV3JpdGVyKTsKLSAgfQotICB2b2lkIHJlZ2lzdGVyUmVhZGVyKHN0ZDo6dW5pcXVlX3B0cjxQQ0hDb250YWluZXJSZWFkZXI+IFJlYWRlcikgewotICAgIFJlYWRlcnNbUmVhZGVyLT5nZXRGb3JtYXQoKV0gPSBzdGQ6Om1vdmUoUmVhZGVyKTsKLSAgfQotICBjb25zdCBQQ0hDb250YWluZXJXcml0ZXIgKmdldFdyaXRlck9yTnVsbChTdHJpbmdSZWYgRm9ybWF0KSB7Ci0gICAgcmV0dXJuIFdyaXRlcnNbRm9ybWF0XS5nZXQoKTsKLSAgfQotICBjb25zdCBQQ0hDb250YWluZXJSZWFkZXIgKmdldFJlYWRlck9yTnVsbChTdHJpbmdSZWYgRm9ybWF0KSB7Ci0gICAgcmV0dXJuIFJlYWRlcnNbRm9ybWF0XS5nZXQoKTsKLSAgfQotICBjb25zdCBQQ0hDb250YWluZXJSZWFkZXIgJmdldFJhd1JlYWRlcigpIHsKLSAgICByZXR1cm4gKmdldFJlYWRlck9yTnVsbCgicmF3Iik7Ci0gIH0KLX07Ci0KLX0KKyNpbmNsdWRlICJjbGFuZy9TZXJpYWxpemF0aW9uL1BDSENvbnRhaW5lck9wZXJhdGlvbnMuaCIKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9QcmVjb21waWxlZFByZWFtYmxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9QcmVjb21waWxlZFByZWFtYmxlLmgKaW5kZXggNmM3OTg5NS4uYjFkNTVkOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvUHJlY29tcGlsZWRQcmVhbWJsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL1ByZWNvbXBpbGVkUHJlYW1ibGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFByZWNvbXBpbGVkUHJlYW1ibGUuaCAtIEJ1aWxkIHByZWNvbXBpbGVkIHByZWFtYmxlcyAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjg0LDYgKzI4Myw4IEBACiAgIC8vLyBDcmVhdGVzIHdyYXBwZXIgY2xhc3MgZm9yIFBQQ2FsbGJhY2tzIHNvIHdlIGNhbiBhbHNvIHByb2Nlc3MgaW5mb3JtYXRpb24KICAgLy8vIGFib3V0IGluY2x1ZGVzIHRoYXQgYXJlIGluc2lkZSBvZiBhIHByZWFtYmxlCiAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBQQ2FsbGJhY2tzPiBjcmVhdGVQUENhbGxiYWNrcygpOworICAvLy8gVGhlIHJldHVybmVkIENvbW1lbnRIYW5kbGVyIHdpbGwgYmUgYWRkZWQgdG8gdGhlIHByZXByb2Nlc3NvciBpZiBub3QgbnVsbC4KKyAgdmlydHVhbCBDb21tZW50SGFuZGxlciAqZ2V0Q29tbWVudEhhbmRsZXIoKTsKIH07CiAKIGVudW0gY2xhc3MgQnVpbGRQcmVhbWJsZUVycm9yIHsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL1ByZXByb2Nlc3Nvck91dHB1dE9wdGlvbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL1ByZXByb2Nlc3Nvck91dHB1dE9wdGlvbnMuaAppbmRleCA5NGFmY2QwLi43MmU1YWQxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9QcmVwcm9jZXNzb3JPdXRwdXRPcHRpb25zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvUHJlcHJvY2Vzc29yT3V0cHV0T3B0aW9ucy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gUHJlcHJvY2Vzc29yT3V0cHV0T3B0aW9ucy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvU2VyaWFsaXplZERpYWdub3N0aWNQcmludGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9TZXJpYWxpemVkRGlhZ25vc3RpY1ByaW50ZXIuaAppbmRleCBkYzY4YzMyLi41YzFmZjdhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9TZXJpYWxpemVkRGlhZ25vc3RpY1ByaW50ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9TZXJpYWxpemVkRGlhZ25vc3RpY1ByaW50ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFNlcmlhbGl6ZWREaWFnbm9zdGljUHJpbnRlci5oIC0gRGlhZ25vc3RpY3Mgc2VyaWFsaXplciAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL1NlcmlhbGl6ZWREaWFnbm9zdGljUmVhZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9TZXJpYWxpemVkRGlhZ25vc3RpY1JlYWRlci5oCmluZGV4IDU5NWJkZjEuLjdiM2E2ZGIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL1NlcmlhbGl6ZWREaWFnbm9zdGljUmVhZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvU2VyaWFsaXplZERpYWdub3N0aWNSZWFkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTZXJpYWxpemVkRGlhZ25vc3RpY1JlYWRlci5oIC0gUmVhZHMgZGlhZ25vc3RpY3MgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL1NlcmlhbGl6ZWREaWFnbm9zdGljcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvU2VyaWFsaXplZERpYWdub3N0aWNzLmgKaW5kZXggZGFjYmM2Ny4uNmZmY2Y1MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvU2VyaWFsaXplZERpYWdub3N0aWNzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvU2VyaWFsaXplZERpYWdub3N0aWNzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBTZXJpYWxpemVkRGlhZ25vc3RpY3MuaCAtIENvbW1vbiBkYXRhIGZvciBzZXJpYWxpemVkIGRpYWdub3N0aWNzIC09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9UZXh0RGlhZ25vc3RpYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvVGV4dERpYWdub3N0aWMuaAppbmRleCA5ZjMzYjg2Li43Y2Y1NDgzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9UZXh0RGlhZ25vc3RpYy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL1RleHREaWFnbm9zdGljLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBUZXh0RGlhZ25vc3RpYy5oIC0gVGV4dCBEaWFnbm9zdGljIFByZXR0eS1QcmludGluZyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL1RleHREaWFnbm9zdGljQnVmZmVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9UZXh0RGlhZ25vc3RpY0J1ZmZlci5oCmluZGV4IDIyOTVmOWQuLjU5NDVjYWYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL1RleHREaWFnbm9zdGljQnVmZmVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvVGV4dERpYWdub3N0aWNCdWZmZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUZXh0RGlhZ25vc3RpY0J1ZmZlci5oIC0gQnVmZmVyIFRleHQgRGlhZ25vc3RpY3MgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvVGV4dERpYWdub3N0aWNQcmludGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9UZXh0RGlhZ25vc3RpY1ByaW50ZXIuaAppbmRleCAzY2I0ZTAyLi5iYTc1NmZhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9UZXh0RGlhZ25vc3RpY1ByaW50ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9UZXh0RGlhZ25vc3RpY1ByaW50ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFRleHREaWFnbm9zdGljUHJpbnRlci5oIC0gVGV4dCBEaWFnbm9zdGljIENsaWVudCAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvVXRpbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kL1V0aWxzLmgKaW5kZXggZDFkZDQ0ZS4uMTI0ZDRhOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvVXRpbHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9VdGlscy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFV0aWxzLmggLSBNaXNjIHV0aWxpdGllcyBmb3IgdGhlIGZyb250LWVuZCAtLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNDYsMTggKzE0NSwxOCBAQAogICB+TW9kdWxlRGVwZW5kZW5jeUNvbGxlY3RvcigpIG92ZXJyaWRlIHsgd3JpdGVGaWxlTWFwKCk7IH0KIAogICBTdHJpbmdSZWYgZ2V0RGVzdCgpIHsgcmV0dXJuIERlc3REaXI7IH0KLSAgYm9vbCBpbnNlcnRTZWVuKFN0cmluZ1JlZiBGaWxlbmFtZSkgeyByZXR1cm4gU2Vlbi5pbnNlcnQoRmlsZW5hbWUpLnNlY29uZDsgfQotICB2b2lkIGFkZEZpbGUoU3RyaW5nUmVmIEZpbGVuYW1lLCBTdHJpbmdSZWYgRmlsZURzdCA9IHt9KTsKKyAgdmlydHVhbCBib29sIGluc2VydFNlZW4oU3RyaW5nUmVmIEZpbGVuYW1lKSB7IHJldHVybiBTZWVuLmluc2VydChGaWxlbmFtZSkuc2Vjb25kOyB9CisgIHZpcnR1YWwgdm9pZCBhZGRGaWxlKFN0cmluZ1JlZiBGaWxlbmFtZSwgU3RyaW5nUmVmIEZpbGVEc3QgPSB7fSk7CiAKLSAgdm9pZCBhZGRGaWxlTWFwcGluZyhTdHJpbmdSZWYgVlBhdGgsIFN0cmluZ1JlZiBSUGF0aCkgeworICB2aXJ0dWFsIHZvaWQgYWRkRmlsZU1hcHBpbmcoU3RyaW5nUmVmIFZQYXRoLCBTdHJpbmdSZWYgUlBhdGgpIHsKICAgICBWRlNXcml0ZXIuYWRkRmlsZU1hcHBpbmcoVlBhdGgsIFJQYXRoKTsKICAgfQogCiAgIHZvaWQgYXR0YWNoVG9QcmVwcm9jZXNzb3IoUHJlcHJvY2Vzc29yICZQUCkgb3ZlcnJpZGU7CiAgIHZvaWQgYXR0YWNoVG9BU1RSZWFkZXIoQVNUUmVhZGVyICZSKSBvdmVycmlkZTsKIAotICB2b2lkIHdyaXRlRmlsZU1hcCgpOwotICBib29sIGhhc0Vycm9ycygpIHsgcmV0dXJuIEhhc0Vycm9yczsgfQorICB2aXJ0dWFsIHZvaWQgd3JpdGVGaWxlTWFwKCk7CisgIHZpcnR1YWwgYm9vbCBoYXNFcnJvcnMoKSB7IHJldHVybiBIYXNFcnJvcnM7IH0KIH07CiAKIC8vLyBBdHRhY2hEZXBlbmRlbmN5R3JhcGhHZW4gLSBDcmVhdGUgYSBkZXBlbmRlbmN5IGdyYXBoIGdlbmVyYXRvciwgYW5kIGF0dGFjaApAQCAtMTgzLDkgKzE4Miw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nUmVmIE91dHB1dFBhdGggPSB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFNob3dEZXB0aCA9IHRydWUsIGJvb2wgTVNTdHlsZSA9IGZhbHNlKTsKIAotLy8vIENhY2hlIHRva2VucyBmb3IgdXNlIHdpdGggUENILiBOb3RlIHRoYXQgdGhpcyByZXF1aXJlcyBhIHNlZWthYmxlIHN0cmVhbS4KLXZvaWQgQ2FjaGVUb2tlbnMoUHJlcHJvY2Vzc29yICZQUCwgcmF3X3B3cml0ZV9zdHJlYW0gKk9TKTsKLQogLy8vIFRoZSBDaGFpbmVkSW5jbHVkZXNTb3VyY2UgY2xhc3MgY29udmVydHMgaGVhZGVycyB0byBjaGFpbmVkIFBDSHMgaW4KIC8vLyBtZW1vcnksIG1haW5seSBmb3IgdGVzdGluZy4KIEludHJ1c2l2ZVJlZkNudFB0cjxFeHRlcm5hbFNlbWFTb3VyY2U+CkBAIC0yMjYsMTQgKzIyMiw2IEBACiAgIHJldHVybiBnZXRMYXN0QXJnVUludDY0VmFsdWUoQXJncywgSWQsIERlZmF1bHQsICZEaWFncyk7CiB9CiAKLS8vIFdoZW4gQ2xhbmctPmdldEZyb250ZW5kT3B0cygpLkRpc2FibGVGcmVlIGlzIHNldCB3ZSBkb24ndCBkZWxldGUgc29tZSBvZiB0aGUKLS8vIGdsb2JhbCBvYmplY3RzLCBidXQgd2UgZG9uJ3Qgd2FudCBMZWFrRGV0ZWN0b3JzIHRvIGNvbXBsYWluLCBzbyB3ZSBidXJ5IHRoZW0KLS8vIGluIGEgZ2xvYmFsbHkgdmlzaWJsZSBhcnJheS4KLXZvaWQgQnVyeVBvaW50ZXIoY29uc3Qgdm9pZCAqUHRyKTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIEJ1cnlQb2ludGVyKHN0ZDo6dW5pcXVlX3B0cjxUPiBQdHIpIHsKLSAgQnVyeVBvaW50ZXIoUHRyLnJlbGVhc2UoKSk7Ci19Ci0KIC8vIEZyb250ZW5kIHRpbWluZyB1dGlscwogCiAvLy8gSWYgdGhlIHVzZXIgc3BlY2lmaWVzIHRoZSAtZnRpbWUtcmVwb3J0IGFyZ3VtZW50IG9uIGFuIENsYW5nIGNvbW1hbmQgbGluZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmQvVmVyaWZ5RGlhZ25vc3RpY0NvbnN1bWVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9WZXJpZnlEaWFnbm9zdGljQ29uc3VtZXIuaAppbmRleCBmMzY5NzBmLi45NTVlYWViIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9WZXJpZnlEaWFnbm9zdGljQ29uc3VtZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Gcm9udGVuZC9WZXJpZnlEaWFnbm9zdGljQ29uc3VtZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBWZXJpZnlEaWFnbm9zdGljQ29uc3VtZXIuaCAtIFZlcmlmeWluZyBEaWFnbm9zdGljIENsaWVudCAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0Zyb250ZW5kVG9vbC9VdGlscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmRUb29sL1V0aWxzLmgKaW5kZXggMmU2YjdiNS4uMjJkZGVjMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmRUb29sL1V0aWxzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvRnJvbnRlbmRUb29sL1V0aWxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBVdGlscy5oIC0gTWlzYyB1dGlsaXRpZXMgZm9yIHRoZSBmcm9udC1lbmQgLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0luZGV4L0NvZGVnZW5OYW1lR2VuZXJhdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9JbmRleC9Db2RlZ2VuTmFtZUdlbmVyYXRvci5oCmluZGV4IGU4ZGMxOTYuLmQyNTI4YTEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0luZGV4L0NvZGVnZW5OYW1lR2VuZXJhdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvSW5kZXgvQ29kZWdlbk5hbWVHZW5lcmF0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDb2RlZ2VuTmFtZUdlbmVyYXRvci5oIC0gQ29kZWdlbiBuYW1lIGdlbmVyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvSW5kZXgvQ29tbWVudFRvWE1MLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9JbmRleC9Db21tZW50VG9YTUwuaAppbmRleCAwNGY5NTAxLi42NmI4NjUwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9JbmRleC9Db21tZW50VG9YTUwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9JbmRleC9Db21tZW50VG9YTUwuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIENvbW1lbnRUb1hNTC5oIC0gQ29udmVydCBjb21tZW50cyB0byBYTUwgcmVwcmVzZW50YXRpb24gLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0luZGV4L0luZGV4RGF0YUNvbnN1bWVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9JbmRleC9JbmRleERhdGFDb25zdW1lci5oCmluZGV4IGM3OWY2YmUuLmJjMWQ4NjYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0luZGV4L0luZGV4RGF0YUNvbnN1bWVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvSW5kZXgvSW5kZXhEYXRhQ29uc3VtZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEluZGV4RGF0YUNvbnN1bWVyLmggLSBBYnN0cmFjdCBpbmRleCBkYXRhIGNvbnN1bWVyIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0luZGV4L0luZGV4U3ltYm9sLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9JbmRleC9JbmRleFN5bWJvbC5oCmluZGV4IDhhYWFhNjkuLjBiMTViNmMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0luZGV4L0luZGV4U3ltYm9sLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvSW5kZXgvSW5kZXhTeW1ib2wuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJbmRleFN5bWJvbC5oIC0gVHlwZXMgYW5kIGZ1bmN0aW9ucyBmb3IgaW5kZXhpbmcgc3ltYm9scyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0luZGV4L0luZGV4aW5nQWN0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9JbmRleC9JbmRleGluZ0FjdGlvbi5oCmluZGV4IDYzZTM4OTcuLjhiM2Q1NDEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0luZGV4L0luZGV4aW5nQWN0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvSW5kZXgvSW5kZXhpbmdBY3Rpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEluZGV4aW5nQWN0aW9uLmggLSBGcm9udGVuZCBpbmRleCBhY3Rpb24gLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTQ1LDYgKzQ0LDggQEAKICAgLy8gY2FsbGJhY2sgaXMgbm90IGF2YWlsYWJsZSAoZS5nLiBhZnRlciBwYXJzaW5nIGhhcyBmaW5pc2hlZCkuIE5vdGUgdGhhdAogICAvLyBtYWNybyByZWZlcmVuY2VzIGFyZSBub3QgYXZhaWxhYmxlIGluIFByb3Byb2Nlc3Nvci4KICAgYm9vbCBJbmRleE1hY3Jvc0luUHJlcHJvY2Vzc29yID0gZmFsc2U7CisgIC8vIEhhcyBubyBlZmZlY3QgaWYgSW5kZXhGdW5jdGlvbkxvY2FscyBhcmUgZmFsc2UuCisgIGJvb2wgSW5kZXhQYXJhbWV0ZXJzSW5EZWNsYXJhdGlvbnMgPSBmYWxzZTsKIH07CiAKIC8vLyBDcmVhdGVzIGEgZnJvbnRlbmQgYWN0aW9uIHRoYXQgaW5kZXhlcyBhbGwgc3ltYm9scyAobWFjcm9zIGFuZCBBU1QgZGVjbHMpLgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvSW5kZXgvVVNSR2VuZXJhdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvSW5kZXgvVVNSR2VuZXJhdGlvbi5oCmluZGV4IDBiYjcxMjMuLmY4OWZjNWMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0luZGV4L1VTUkdlbmVyYXRpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9JbmRleC9VU1JHZW5lcmF0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVVNSR2VuZXJhdGlvbi5oIC0gUm91dGluZXMgZm9yIFVTUiBnZW5lcmF0aW9uIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xNCwxMSArMTMsMTMgQEAKICNpbmNsdWRlICJsbHZtL0FEVC9TdHJpbmdSZWYuaCIKIAogbmFtZXNwYWNlIGNsYW5nIHsKK2NsYXNzIEFTVENvbnRleHQ7CiBjbGFzcyBEZWNsOwogY2xhc3MgTWFjcm9EZWZpbml0aW9uUmVjb3JkOwogY2xhc3MgTW9kdWxlOwogY2xhc3MgU291cmNlTG9jYXRpb247CiBjbGFzcyBTb3VyY2VNYW5hZ2VyOworY2xhc3MgUXVhbFR5cGU7CiAKIG5hbWVzcGFjZSBpbmRleCB7CiAKQEAgLTcxLDYgKzcyLDExIEBACiBib29sIGdlbmVyYXRlVVNSRm9yTWFjcm8oU3RyaW5nUmVmIE1hY3JvTmFtZSwgU291cmNlTG9jYXRpb24gTG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNvdXJjZU1hbmFnZXIgJlNNLCBTbWFsbFZlY3RvckltcGw8Y2hhcj4gJkJ1Zik7CiAKKy8vLyBHZW5lcmF0ZXMgYSBVU1IgZm9yIGEgdHlwZS4KKy8vLworLy8vIFxyZXR1cm4gdHJ1ZSBvbiBlcnJvciwgZmFsc2Ugb24gc3VjY2Vzcy4KK2Jvb2wgZ2VuZXJhdGVVU1JGb3JUeXBlKFF1YWxUeXBlIFQsIEFTVENvbnRleHQgJkN0eCwgU21hbGxWZWN0b3JJbXBsPGNoYXI+ICZCdWYpOworCiAvLy8gR2VuZXJhdGUgYSBVU1IgZm9yIGEgbW9kdWxlLCBpbmNsdWRpbmcgdGhlIFVTUiBwcmVmaXguCiAvLy8gXHJldHVybnMgdHJ1ZSBvbiBlcnJvciwgZmFsc2Ugb24gc3VjY2Vzcy4KIGJvb2wgZ2VuZXJhdGVGdWxsVVNSRm9yTW9kdWxlKGNvbnN0IE1vZHVsZSAqTW9kLCByYXdfb3N0cmVhbSAmT1MpOwpAQCAtODcsNiArOTMsNyBAQAogLy8vIFxyZXR1cm5zIHRydWUgb24gZXJyb3IsIGZhbHNlIG9uIHN1Y2Nlc3MuCiBib29sIGdlbmVyYXRlVVNSRnJhZ21lbnRGb3JNb2R1bGVOYW1lKFN0cmluZ1JlZiBNb2ROYW1lLCByYXdfb3N0cmVhbSAmT1MpOwogCisKIH0gLy8gbmFtZXNwYWNlIGluZGV4CiB9IC8vIG5hbWVzcGFjZSBjbGFuZwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvQ29kZUNvbXBsZXRpb25IYW5kbGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvQ29kZUNvbXBsZXRpb25IYW5kbGVyLmgKaW5kZXggYmVmODA0Yi4uYmQzZTA1YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0NvZGVDb21wbGV0aW9uSGFuZGxlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9Db2RlQ29tcGxldGlvbkhhbmRsZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIENvZGVDb21wbGV0aW9uSGFuZGxlci5oIC0gUHJlcHJvY2Vzc29yIGNvZGUgY29tcGxldGlvbiAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0RpcmVjdG9yeUxvb2t1cC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0RpcmVjdG9yeUxvb2t1cC5oCmluZGV4IGJmYjQ5NmIuLjdjNTU2YWMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9EaXJlY3RvcnlMb29rdXAuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvRGlyZWN0b3J5TG9va3VwLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBEaXJlY3RvcnlMb29rdXAuaCAtIEluZm8gZm9yIHNlYXJjaGluZyBmb3IgaGVhZGVycyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE3MSw2ICsxNzAsOSBAQAogICAvLy8gc2V0IHRvIHRydWUgaWYgdGhlIGZpbGUgaXMgbG9jYXRlZCBpbiBhIGZyYW1ld29yayB0aGF0IGhhcyBiZWVuCiAgIC8vLyB1c2VyLXNwZWNpZmllZCB0byBiZSB0cmVhdGVkIGFzIGEgc3lzdGVtIGZyYW1ld29yay4KICAgLy8vCisgIC8vLyBccGFyYW0gW291dF0gSXNGcmFtZXdvcmtGb3VuZCBGb3IgYSBmcmFtZXdvcmsgZGlyZWN0b3J5IHNldCB0byB0cnVlIGlmCisgIC8vLyBzcGVjaWZpZWQgJy5mcmFtZXdvcmsnIGRpcmVjdG9yeSBpcyBmb3VuZC4KKyAgLy8vCiAgIC8vLyBccGFyYW0gW291dF0gTWFwcGVkTmFtZSBpZiB0aGlzIGlzIGEgaGVhZGVybWFwIHdoaWNoIG1hcHMgdGhlIGZpbGVuYW1lIHRvCiAgIC8vLyBhIGZyYW1ld29yayBpbmNsdWRlICgiRm9vLmgiIC0+ICJGb28vRm9vLmgiKSwgc2V0IHRoZSBuZXcgbmFtZSB0byB0aGlzCiAgIC8vLyB2ZWN0b3IgYW5kIHBvaW50IEZpbGVuYW1lIHRvIGl0LgpAQCAtMTgxLDYgKzE4Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2R1bGUgKlJlcXVlc3RpbmdNb2R1bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2R1bGVNYXA6Oktub3duSGVhZGVyICpTdWdnZXN0ZWRNb2R1bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICZJblVzZXJTcGVjaWZpZWRTeXN0ZW1GcmFtZXdvcmssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICZJc0ZyYW1ld29ya0ZvdW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAmSGFzQmVlbk1hcHBlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNtYWxsVmVjdG9ySW1wbDxjaGFyPiAmTWFwcGVkTmFtZSkgY29uc3Q7CiAKQEAgLTE5MSw3ICsxOTQsOCBAQAogICAgICAgU21hbGxWZWN0b3JJbXBsPGNoYXI+ICpSZWxhdGl2ZVBhdGgsCiAgICAgICBNb2R1bGUgKlJlcXVlc3RpbmdNb2R1bGUsCiAgICAgICBNb2R1bGVNYXA6Oktub3duSGVhZGVyICpTdWdnZXN0ZWRNb2R1bGUsCi0gICAgICBib29sICZJblVzZXJTcGVjaWZpZWRTeXN0ZW1GcmFtZXdvcmspIGNvbnN0OworICAgICAgYm9vbCAmSW5Vc2VyU3BlY2lmaWVkU3lzdGVtRnJhbWV3b3JrLAorICAgICAgYm9vbCAmSXNGcmFtZXdvcmtGb3VuZCkgY29uc3Q7CiAKIH07CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9FeHRlcm5hbFByZXByb2Nlc3NvclNvdXJjZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0V4dGVybmFsUHJlcHJvY2Vzc29yU291cmNlLmgKaW5kZXggZDg0OWJiZC4uNjg1OTQxYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0V4dGVybmFsUHJlcHJvY2Vzc29yU291cmNlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0V4dGVybmFsUHJlcHJvY2Vzc29yU291cmNlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRXh0ZXJuYWxQcmVwcm9jZXNzb3JTb3VyY2UuaCAtIEFic3RyYWN0IE1hY3JvIEludGVyZmFjZSAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9IZWFkZXJNYXAuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9IZWFkZXJNYXAuaAppbmRleCA3OTNlN2VkLi5lY2E4NzU1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvSGVhZGVyTWFwLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0hlYWRlck1hcC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gSGVhZGVyTWFwLmggLSBBIGZpbGUgdGhhdCBhY3RzIGxpa2UgZGlyIG9mIHN5bWxpbmtzIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvSGVhZGVyTWFwVHlwZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9IZWFkZXJNYXBUeXBlcy5oCmluZGV4IGZiYWY0YmEuLmQ4ODgxZDggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9IZWFkZXJNYXBUeXBlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9IZWFkZXJNYXBUeXBlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEhlYWRlck1hcFR5cGVzLmggLSBUeXBlcyBmb3IgdGhlIGhlYWRlciBtYXAgZm9ybWF0IC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0hlYWRlclNlYXJjaC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0hlYWRlclNlYXJjaC5oCmluZGV4IDdjNjllMjEuLjg3OWQyNGQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9IZWFkZXJTZWFyY2guaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvSGVhZGVyU2VhcmNoLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSGVhZGVyU2VhcmNoLmggLSBSZXNvbHZlIEhlYWRlciBGaWxlIExvY2F0aW9ucyAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE0MywyMiArMTQyLDIyIEBACiAgIHZpcnR1YWwgSGVhZGVyRmlsZUluZm8gR2V0SGVhZGVyRmlsZUluZm8oY29uc3QgRmlsZUVudHJ5ICpGRSkgPSAwOwogfTsKIAorLy8vIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgdG8gcmVjb3JkIGVudHJpZXMgaW4gb3VyIGZyYW1ld29yayBjYWNoZS4KK3N0cnVjdCBGcmFtZXdvcmtDYWNoZUVudHJ5IHsKKyAgLy8vIFRoZSBkaXJlY3RvcnkgZW50cnkgd2hpY2ggc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBjYWNoZWQgZnJhbWV3b3JrLgorICBjb25zdCBEaXJlY3RvcnlFbnRyeSAqRGlyZWN0b3J5OworCisgIC8vLyBXaGV0aGVyIHRoaXMgZnJhbWV3b3JrIGhhcyBiZWVuICJ1c2VyLXNwZWNpZmllZCIgdG8gYmUgdHJlYXRlZCBhcyBpZiBpdAorICAvLy8gd2VyZSBhIHN5c3RlbSBmcmFtZXdvcmsgKGV2ZW4gaWYgaXQgd2FzIGZvdW5kIG91dHNpZGUgYSBzeXN0ZW0gZnJhbWV3b3JrCisgIC8vLyBkaXJlY3RvcnkpLgorICBib29sIElzVXNlclNwZWNpZmllZFN5c3RlbUZyYW1ld29yazsKK307CisKIC8vLyBFbmNhcHN1bGF0ZXMgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBmaW5kIHRoZSBmaWxlIHJlZmVyZW5jZWQKIC8vLyBieSBhIFwjaW5jbHVkZSBvciBcI2luY2x1ZGVfbmV4dCwgKHN1Yi0pZnJhbWV3b3JrIGxvb2t1cCwgZXRjLgogY2xhc3MgSGVhZGVyU2VhcmNoIHsKICAgZnJpZW5kIGNsYXNzIERpcmVjdG9yeUxvb2t1cDsKIAotICAvLy8gVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byByZWNvcmQgZW50cmllcyBpbiBvdXIgZnJhbWV3b3JrIGNhY2hlLgotICBzdHJ1Y3QgRnJhbWV3b3JrQ2FjaGVFbnRyeSB7Ci0gICAgLy8vIFRoZSBkaXJlY3RvcnkgZW50cnkgd2hpY2ggc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBjYWNoZWQgZnJhbWV3b3JrLgotICAgIGNvbnN0IERpcmVjdG9yeUVudHJ5ICpEaXJlY3Rvcnk7Ci0KLSAgICAvLy8gV2hldGhlciB0aGlzIGZyYW1ld29yayBoYXMgYmVlbiAidXNlci1zcGVjaWZpZWQiIHRvIGJlIHRyZWF0ZWQgYXMgaWYgaXQKLSAgICAvLy8gd2VyZSBhIHN5c3RlbSBmcmFtZXdvcmsgKGV2ZW4gaWYgaXQgd2FzIGZvdW5kIG91dHNpZGUgYSBzeXN0ZW0gZnJhbWV3b3JrCi0gICAgLy8vIGRpcmVjdG9yeSkuCi0gICAgYm9vbCBJc1VzZXJTcGVjaWZpZWRTeXN0ZW1GcmFtZXdvcms7Ci0gIH07Ci0KICAgLy8vIEhlYWRlci1zZWFyY2ggb3B0aW9ucyB1c2VkIHRvIGluaXRpYWxpemUgdGhpcyBoZWFkZXIgc2VhcmNoLgogICBzdGQ6OnNoYXJlZF9wdHI8SGVhZGVyU2VhcmNoT3B0aW9ucz4gSFNPcHRzOwogCkBAIC0zOTEsMTMgKzM5MCwxOCBAQAogICAvLy8KICAgLy8vIFxwYXJhbSBJc01hcHBlZCBJZiBub24tbnVsbCwgYW5kIHRoZSBzZWFyY2ggaW52b2x2ZWQgaGVhZGVyIG1hcHMsIHNldCB0bwogICAvLy8gdHJ1ZS4KKyAgLy8vCisgIC8vLyBccGFyYW0gSXNGcmFtZXdvcmtGb3VuZCBJZiBub24tbnVsbCwgd2lsbCBiZSBzZXQgdG8gdHJ1ZSBpZiBhIGZyYW1ld29yayBpcworICAvLy8gZm91bmQgaW4gYW55IG9mIHNlYXJjaGVkIFNlYXJjaERpcnMuIERvZXNuJ3QgZ3VhcmFudGVlIHRoZSByZXF1ZXN0ZWQgZmlsZQorICAvLy8gaXMgZm91bmQuCiAgIGNvbnN0IEZpbGVFbnRyeSAqTG9va3VwRmlsZSgKICAgICAgIFN0cmluZ1JlZiBGaWxlbmFtZSwgU291cmNlTG9jYXRpb24gSW5jbHVkZUxvYywgYm9vbCBpc0FuZ2xlZCwKICAgICAgIGNvbnN0IERpcmVjdG9yeUxvb2t1cCAqRnJvbURpciwgY29uc3QgRGlyZWN0b3J5TG9va3VwIComQ3VyRGlyLAogICAgICAgQXJyYXlSZWY8c3RkOjpwYWlyPGNvbnN0IEZpbGVFbnRyeSAqLCBjb25zdCBEaXJlY3RvcnlFbnRyeSAqPj4gSW5jbHVkZXJzLAogICAgICAgU21hbGxWZWN0b3JJbXBsPGNoYXI+ICpTZWFyY2hQYXRoLCBTbWFsbFZlY3RvckltcGw8Y2hhcj4gKlJlbGF0aXZlUGF0aCwKICAgICAgIE1vZHVsZSAqUmVxdWVzdGluZ01vZHVsZSwgTW9kdWxlTWFwOjpLbm93bkhlYWRlciAqU3VnZ2VzdGVkTW9kdWxlLAotICAgICAgYm9vbCAqSXNNYXBwZWQsIGJvb2wgU2tpcENhY2hlID0gZmFsc2UsIGJvb2wgQnVpbGRTeXN0ZW1Nb2R1bGUgPSBmYWxzZSk7CisgICAgICBib29sICpJc01hcHBlZCwgYm9vbCAqSXNGcmFtZXdvcmtGb3VuZCwgYm9vbCBTa2lwQ2FjaGUgPSBmYWxzZSwKKyAgICAgIGJvb2wgQnVpbGRTeXN0ZW1Nb2R1bGUgPSBmYWxzZSk7CiAKICAgLy8vIExvb2sgdXAgYSBzdWJmcmFtZXdvcmsgZm9yIHRoZSBzcGVjaWZpZWQgXCNpbmNsdWRlIGZpbGUuCiAgIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0hlYWRlclNlYXJjaE9wdGlvbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9IZWFkZXJTZWFyY2hPcHRpb25zLmgKaW5kZXggZTViNTJiMy4uZWQxMjhiYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0hlYWRlclNlYXJjaE9wdGlvbnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvSGVhZGVyU2VhcmNoT3B0aW9ucy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEhlYWRlclNlYXJjaE9wdGlvbnMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0xleERpYWdub3N0aWMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9MZXhEaWFnbm9zdGljLmgKaW5kZXggNWQ3MjRjMC4uODZjZTE2MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0xleERpYWdub3N0aWMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvTGV4RGlhZ25vc3RpYy5oCkBAIC0xLDI4ICsxLDE0IEBACiAvLz09PS0tLSBEaWFnbm9zdGljTGV4LmggLSBEaWFnbm9zdGljcyBmb3IgbGlibGV4IC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCiAjaWZuZGVmIExMVk1fQ0xBTkdfTEVYX0xFWERJQUdOT1NUSUNfSAogI2RlZmluZSBMTFZNX0NMQU5HX0xFWF9MRVhESUFHTk9TVElDX0gKIAotI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWMuaCIKLQotbmFtZXNwYWNlIGNsYW5nIHsKLSAgbmFtZXNwYWNlIGRpYWcgewotICAgIGVudW0gewotI2RlZmluZSBESUFHKEVOVU0sRkxBR1MsREVGQVVMVF9NQVBQSU5HLERFU0MsR1JPVVAsXAotICAgICAgICAgICAgIFNGSU5BRSxOT1dFUlJPUixTSE9XSU5TWVNIRUFERVIsQ0FURUdPUlkpIEVOVU0sCi0jZGVmaW5lIExFWFNUQVJUCi0jaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpY0xleEtpbmRzLmluYyIKLSN1bmRlZiBESUFHCi0gICAgICBOVU1fQlVJTFRJTl9MRVhfRElBR05PU1RJQ1MKLSAgICB9OwotICB9ICAvLyBlbmQgbmFtZXNwYWNlIGRpYWcKLX0gIC8vIGVuZCBuYW1lc3BhY2UgY2xhbmcKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljTGV4LmgiCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0xleGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvTGV4ZXIuaAppbmRleCBhOWIxMGI2Li40YThhMGY2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvTGV4ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvTGV4ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMZXhlci5oIC0gQyBMYW5ndWFnZSBGYW1pbHkgTGV4ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L0xpdGVyYWxTdXBwb3J0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvTGl0ZXJhbFN1cHBvcnQuaAppbmRleCAzODQzYTVhLi5iOWQ2NGMyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvTGl0ZXJhbFN1cHBvcnQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvTGl0ZXJhbFN1cHBvcnQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIExpdGVyYWxTdXBwb3J0LmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L01hY3JvQXJncy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L01hY3JvQXJncy5oCmluZGV4IDg1M2VlZTIuLmMyYmE0ZWIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9NYWNyb0FyZ3MuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvTWFjcm9BcmdzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBNYWNyb0FyZ3MuaCAtIEZvcm1hbCBhcmd1bWVudCBpbmZvIGZvciBNYWNyb3MgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9NYWNyb0luZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9NYWNyb0luZm8uaAppbmRleCAwY2MxY2I5Li41NTBhYmYzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvTWFjcm9JbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L01hY3JvSW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1hY3JvSW5mby5oIC0gSW5mb3JtYXRpb24gYWJvdXQgI2RlZmluZWQgaWRlbnRpZmllcnMgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zOTUsNyArMzk0LDggQEAKIAogICAvLy8gRmluZCBtYWNybyBkZWZpbml0aW9uIGFjdGl2ZSBpbiB0aGUgc3BlY2lmaWVkIHNvdXJjZSBsb2NhdGlvbi4gSWYKICAgLy8vIHRoaXMgbWFjcm8gd2FzIG5vdCBkZWZpbmVkIHRoZXJlLCByZXR1cm4gTlVMTC4KLSAgY29uc3QgRGVmSW5mbyBmaW5kRGlyZWN0aXZlQXRMb2MoU291cmNlTG9jYXRpb24gTCwgU291cmNlTWFuYWdlciAmU00pIGNvbnN0OworICBjb25zdCBEZWZJbmZvIGZpbmREaXJlY3RpdmVBdExvYyhTb3VyY2VMb2NhdGlvbiBMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTb3VyY2VNYW5hZ2VyICZTTSkgY29uc3Q7CiAKICAgdm9pZCBkdW1wKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9Nb2R1bGVMb2FkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9Nb2R1bGVMb2FkZXIuaAppbmRleCAwNTM5NmRkLi5jOTM1MDFhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvTW9kdWxlTG9hZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L01vZHVsZUxvYWRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1vZHVsZUxvYWRlci5oIC0gTW9kdWxlIExvYWRlciBJbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvTW9kdWxlTWFwLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvTW9kdWxlTWFwLmgKaW5kZXggNGRhYTFkZC4uYWYyMzZmNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L01vZHVsZU1hcC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9Nb2R1bGVNYXAuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNb2R1bGVNYXAuaCAtIERlc2NyaWJlIHRoZSBsYXlvdXQgb2YgbW9kdWxlcyAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNDUsNiArNDQsOCBAQAogLy8vIEEgbWVjaGFuaXNtIHRvIG9ic2VydmUgdGhlIGFjdGlvbnMgb2YgdGhlIG1vZHVsZSBtYXAgcGFyc2VyIGFzIGl0CiAvLy8gcmVhZHMgbW9kdWxlIG1hcCBmaWxlcy4KIGNsYXNzIE1vZHVsZU1hcENhbGxiYWNrcyB7CisgIHZpcnR1YWwgdm9pZCBhbmNob3IoKTsKKwogcHVibGljOgogICB2aXJ0dWFsIH5Nb2R1bGVNYXBDYWxsYmFja3MoKSA9IGRlZmF1bHQ7CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9NdWx0aXBsZUluY2x1ZGVPcHQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9NdWx0aXBsZUluY2x1ZGVPcHQuaAppbmRleCBhYzBkY2M3Li43Y2ViN2U1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvTXVsdGlwbGVJbmNsdWRlT3B0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L011bHRpcGxlSW5jbHVkZU9wdC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gTXVsdGlwbGVJbmNsdWRlT3B0LmggLSBIZWFkZXIgTXVsdGlwbGUtSW5jbHVkZSBPcHR6biAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1BQQ2FsbGJhY2tzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvUFBDYWxsYmFja3MuaAppbmRleCAyNDQ4YjM0Li45Mjk0M2JkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvUFBDYWxsYmFja3MuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvUFBDYWxsYmFja3MuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFBQQ2FsbGJhY2tzLmggLSBDYWxsYmFja3MgZm9yIFByZXByb2Nlc3NvciBhY3Rpb25zIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9QUENvbmRpdGlvbmFsRGlyZWN0aXZlUmVjb3JkLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvUFBDb25kaXRpb25hbERpcmVjdGl2ZVJlY29yZC5oCmluZGV4IGEyY2NmMTQuLjA3NzQzNzQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9QUENvbmRpdGlvbmFsRGlyZWN0aXZlUmVjb3JkLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1BQQ29uZGl0aW9uYWxEaXJlY3RpdmVSZWNvcmQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFBQQ29uZGl0aW9uYWxEaXJlY3RpdmVSZWNvcmQuaCAtIFByZXByb2Nlc3NpbmcgRGlyZWN0aXZlcy0qLSBDKysgLSotPS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1BUSExleGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvUFRITGV4ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI4NGRmMS4uMDAwMDAwMAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvUFRITGV4ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0vLz09PS0gUFRITGV4ZXIuaCAtIExleGVyIGJhc2VkIG9uIFByZS10b2tlbml6ZWQgaW5wdXQgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KLS8vCi0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotLy8KLS8vIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBQVEhMZXhlciBpbnRlcmZhY2UuCi0vLwotLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLQotI2lmbmRlZiBMTFZNX0NMQU5HX0xFWF9QVEhMRVhFUl9ICi0jZGVmaW5lIExMVk1fQ0xBTkdfTEVYX1BUSExFWEVSX0gKLQotI2luY2x1ZGUgImNsYW5nL0Jhc2ljL1NvdXJjZUxvY2F0aW9uLmgiCi0jaW5jbHVkZSAiY2xhbmcvQmFzaWMvVG9rZW5LaW5kcy5oIgotI2luY2x1ZGUgImNsYW5nL0xleC9QcmVwcm9jZXNzb3JMZXhlci5oIgotI2luY2x1ZGUgImNsYW5nL0xleC9Ub2tlbi5oIgotCi1uYW1lc3BhY2UgY2xhbmcgewotCi1jbGFzcyBQcmVwcm9jZXNzb3I7Ci1jbGFzcyBQVEhNYW5hZ2VyOwotCi1jbGFzcyBQVEhMZXhlciA6IHB1YmxpYyBQcmVwcm9jZXNzb3JMZXhlciB7Ci0gIFNvdXJjZUxvY2F0aW9uIEZpbGVTdGFydExvYzsKLQotICAvLy8gVG9rQnVmIC0gQnVmZmVyIGZyb20gUFRIIGZpbGUgY29udGFpbmluZyByYXcgdG9rZW4gZGF0YS4KLSAgY29uc3QgdW5zaWduZWQgY2hhciogVG9rQnVmOwotCi0gIC8vLyBDdXJQdHIgLSBQb2ludGVyIGludG8gY3VycmVudCBvZmZzZXQgb2YgdGhlIHRva2VuIGJ1ZmZlciB3aGVyZQotICAvLy8gIHRoZSBuZXh0IHRva2VuIHdpbGwgYmUgcmVhZC4KLSAgY29uc3QgdW5zaWduZWQgY2hhciogQ3VyUHRyOwotCi0gIC8vLyBMYXN0SGFzaFRva1B0ciAtIFBvaW50ZXIgaW50byBUb2tCdWYgb2YgdGhlIGxhc3QgcHJvY2Vzc2VkICcjJwotICAvLy8gIHRva2VuIHRoYXQgYXBwZWFycyBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lLgotICBjb25zdCB1bnNpZ25lZCBjaGFyKiBMYXN0SGFzaFRva1B0ciA9IG51bGxwdHI7Ci0KLSAgLy8vIFBQQ29uZCAtIFBvaW50ZXIgdG8gYSBzaWRlIHRhYmxlIGluIHRoZSBQVEggZmlsZSB0aGF0IHByb3ZpZGVzIGEKLSAgLy8vICBhIGNvbmNpc2Ugc3VtbWFyeSBvZiB0aGUgcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFsIGJsb2NrIHN0cnVjdHVyZS4KLSAgLy8vICBUaGlzIGlzIHVzZWQgdG8gcGVyZm9ybSBxdWljayBza2lwcGluZyBvZiBjb25kaXRpb25hbCBibG9ja3MuCi0gIGNvbnN0IHVuc2lnbmVkIGNoYXIqIFBQQ29uZDsKLQotICAvLy8gQ3VyUFBDb25kUHRyIC0gUG9pbnRlciBpbnNpZGUgUFBDb25kIHRoYXQgcmVmZXJzIHRvIHRoZSBuZXh0IGVudHJ5Ci0gIC8vLyAgdG8gcHJvY2VzcyB3aGVuIGRvaW5nIHF1aWNrIHNraXBwaW5nIG9mIHByZXByb2Nlc3NvciBibG9ja3MuCi0gIGNvbnN0IHVuc2lnbmVkIGNoYXIqIEN1clBQQ29uZFB0cjsKLQotICAvLy8gUmVhZFRva2VuIC0gVXNlZCBieSBQVEhMZXhlciB0byByZWFkIHRva2VucyBUb2tCdWYuCi0gIHZvaWQgUmVhZFRva2VuKFRva2VuICZUKTsKLQotICBib29sIExleEVuZE9mRmlsZShUb2tlbiAmUmVzdWx0KTsKLQotICAvLy8gUFRITWdyIC0gVGhlIFBUSE1hbmFnZXIgb2JqZWN0IHRoYXQgY3JlYXRlZCB0aGlzIFBUSExleGVyLgotICBQVEhNYW5hZ2VyJiBQVEhNZ3I7Ci0KLSAgVG9rZW4gRW9mVG9rZW47Ci0KLXByb3RlY3RlZDoKLSAgZnJpZW5kIGNsYXNzIFBUSE1hbmFnZXI7Ci0KLSAgLy8vIENyZWF0ZSBhIFBUSExleGVyIGZvciB0aGUgc3BlY2lmaWVkIHRva2VuIHN0cmVhbS4KLSAgUFRITGV4ZXIoUHJlcHJvY2Vzc29yICZwcCwgRmlsZUlEIEZJRCwgY29uc3QgdW5zaWduZWQgY2hhciAqRCwKLSAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogcHBjb25kLCBQVEhNYW5hZ2VyICZQTSk7Ci0KLXB1YmxpYzoKLSAgUFRITGV4ZXIoY29uc3QgUFRITGV4ZXIgJikgPSBkZWxldGU7Ci0gIFBUSExleGVyICZvcGVyYXRvcj0oY29uc3QgUFRITGV4ZXIgJikgPSBkZWxldGU7Ci0gIH5QVEhMZXhlcigpIG92ZXJyaWRlID0gZGVmYXVsdDsKLQotICAvLy8gTGV4IC0gUmV0dXJuIHRoZSBuZXh0IHRva2VuLgotICBib29sIExleChUb2tlbiAmVG9rKTsKLQotICB2b2lkIGdldEVPRihUb2tlbiAmVG9rKTsKLQotICAvLy8gRGlzY2FyZFRvRW5kT2ZMaW5lIC0gUmVhZCB0aGUgcmVzdCBvZiB0aGUgY3VycmVudCBwcmVwcm9jZXNzb3IgbGluZSBhcyBhbgotICAvLy8gdW5pbnRlcnByZXRlZCBzdHJpbmcuICBUaGlzIHN3aXRjaGVzIHRoZSBsZXhlciBvdXQgb2YgZGlyZWN0aXZlIG1vZGUuCi0gIHZvaWQgRGlzY2FyZFRvRW5kT2ZMaW5lKCk7Ci0KLSAgLy8vIGlzTmV4dFBQVG9rZW5MUGFyZW4gLSBSZXR1cm4gMSBpZiB0aGUgbmV4dCB1bmV4cGFuZGVkIHRva2VuIHdpbGwgcmV0dXJuIGEKLSAgLy8vIHRvazo6bF9wYXJlbiB0b2tlbiwgMCBpZiBpdCBpcyBzb21ldGhpbmcgZWxzZSBhbmQgMiBpZiB0aGVyZSBhcmUgbm8gbW9yZQotICAvLy8gdG9rZW5zIGNvbnRyb2xsZWQgYnkgdGhpcyBsZXhlci4KLSAgdW5zaWduZWQgaXNOZXh0UFBUb2tlbkxQYXJlbigpIHsKLSAgICAvLyBpc05leHRQUFRva2VuTFBhcmVuIGlzIG5vdCBvbiB0aGUgaG90IHBhdGgsIGFuZCBhbGwgd2UgY2FyZSBhYm91dCBpcwotICAgIC8vIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBhdCBhIHRva2VuIHdpdGgga2luZCB0b2s6OmVvZiBvciB0b2s6OmxfcGFyZW4uCi0gICAgLy8gSnVzdCByZWFkIHRoZSBmaXJzdCBieXRlIGZyb20gdGhlIGN1cnJlbnQgdG9rZW4gcG9pbnRlciB0byBkZXRlcm1pbmUKLSAgICAvLyBpdHMga2luZC4KLSAgICB0b2s6OlRva2VuS2luZCB4ID0gKHRvazo6VG9rZW5LaW5kKSpDdXJQdHI7Ci0gICAgcmV0dXJuIHggPT0gdG9rOjplb2YgPyAyIDogeCA9PSB0b2s6OmxfcGFyZW47Ci0gIH0KLQotICAvLy8gSW5kaXJlY3RMZXggLSBBbiBpbmRpcmVjdCBjYWxsIHRvICdMZXgnIHRoYXQgY2FuIGJlIGludm9rZWQgdmlhCi0gIC8vLyAgdGhlIFByZXByb2Nlc3NvckxleGVyIGludGVyZmFjZS4KLSAgdm9pZCBJbmRpcmVjdExleChUb2tlbiAmUmVzdWx0KSBvdmVycmlkZSB7IExleChSZXN1bHQpOyB9Ci0KLSAgLy8vIGdldFNvdXJjZUxvY2F0aW9uIC0gUmV0dXJuIGEgc291cmNlIGxvY2F0aW9uIGZvciB0aGUgdG9rZW4gaW4KLSAgLy8vIHRoZSBjdXJyZW50IGZpbGUuCi0gIFNvdXJjZUxvY2F0aW9uIGdldFNvdXJjZUxvY2F0aW9uKCkgb3ZlcnJpZGU7Ci0KLSAgLy8vIFNraXBCbG9jayAtIFVzZWQgYnkgUHJlcHJvY2Vzc29yIHRvIHNraXAgdGhlIGN1cnJlbnQgY29uZGl0aW9uYWwgYmxvY2suCi0gIGJvb2wgU2tpcEJsb2NrKCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBjbGFuZwotCi0jZW5kaWYgLy8gTExWTV9DTEFOR19MRVhfUFRITEVYRVJfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1BUSE1hbmFnZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9QVEhNYW5hZ2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4M2I2OWYuLjAwMDAwMDAKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1BUSE1hbmFnZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0vLz09PS0gUFRITWFuYWdlci5oIC0gTWFuYWdlciBvYmplY3QgZm9yIFBUSCBwcm9jZXNzaW5nIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KLS8vCi0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotLy8KLS8vICBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgUFRITWFuYWdlciBpbnRlcmZhY2UuCi0vLwotLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLQotI2lmbmRlZiBMTFZNX0NMQU5HX0xFWF9QVEhNQU5BR0VSX0gKLSNkZWZpbmUgTExWTV9DTEFOR19MRVhfUFRITUFOQUdFUl9ICi0KLSNpbmNsdWRlICJjbGFuZy9CYXNpYy9JZGVudGlmaWVyVGFibGUuaCIKLSNpbmNsdWRlICJjbGFuZy9CYXNpYy9Tb3VyY2VMb2NhdGlvbi5oIgotI2luY2x1ZGUgImxsdm0vQURUL1NUTEV4dHJhcy5oIgotI2luY2x1ZGUgImxsdm0vQURUL1N0cmluZ1JlZi5oIgotI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9BbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJsbHZtL1N1cHBvcnQvT25EaXNrSGFzaFRhYmxlLmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotCi1uYW1lc3BhY2UgbGx2bSB7Ci0KLWNsYXNzIE1lbW9yeUJ1ZmZlcjsKLQotfSAvLyBuYW1lc3BhY2UgbGx2bQotCi1uYW1lc3BhY2UgY2xhbmcgewotCi1jbGFzcyBEaWFnbm9zdGljc0VuZ2luZTsKLWNsYXNzIEZpbGVTeXN0ZW1TdGF0Q2FjaGU7Ci1jbGFzcyBQcmVwcm9jZXNzb3I7Ci1jbGFzcyBQVEhMZXhlcjsKLQotY2xhc3MgUFRITWFuYWdlciA6IHB1YmxpYyBJZGVudGlmaWVySW5mb0xvb2t1cCB7Ci0gIGZyaWVuZCBjbGFzcyBQVEhMZXhlcjsKLSAgZnJpZW5kIGNsYXNzIFBUSFN0YXRDYWNoZTsKLQotICBjbGFzcyBQVEhGaWxlTG9va3VwVHJhaXQ7Ci0gIGNsYXNzIFBUSFN0cmluZ0xvb2t1cFRyYWl0OwotCi0gIHVzaW5nIFBUSFN0cmluZ0lkTG9va3VwID0gbGx2bTo6T25EaXNrQ2hhaW5lZEhhc2hUYWJsZTxQVEhTdHJpbmdMb29rdXBUcmFpdD47Ci0gIHVzaW5nIFBUSEZpbGVMb29rdXAgPSBsbHZtOjpPbkRpc2tDaGFpbmVkSGFzaFRhYmxlPFBUSEZpbGVMb29rdXBUcmFpdD47Ci0KLSAgLy8vIFRoZSBtZW1vcnkgbWFwcGVkIFBUSCBmaWxlLgotICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgbGx2bTo6TWVtb3J5QnVmZmVyPiBCdWY7Ci0KLSAgLy8vIEFsbG9jIC0gQWxsb2NhdG9yIHVzZWQgZm9yIElkZW50aWZpZXJJbmZvIG9iamVjdHMuCi0gIGxsdm06OkJ1bXBQdHJBbGxvY2F0b3IgQWxsb2M7Ci0KLSAgLy8vIElkTWFwIC0gQSBsYXppbHkgZ2VuZXJhdGVkIGNhY2hlIG1hcHBpbmcgZnJvbSBwZXJzaXN0ZW50IGlkZW50aWZpZXJzIHRvCi0gIC8vLyAgSWRlbnRpZmllckluZm8qLgotICBzdGQ6OnVuaXF1ZV9wdHI8SWRlbnRpZmllckluZm8gKltdLCBsbHZtOjpGcmVlRGVsZXRlcj4gUGVySURDYWNoZTsKLQotICAvLy8gRmlsZUxvb2t1cCAtIEFic3RyYWN0IGRhdGEgc3RydWN0dXJlIHVzZWQgZm9yIG1hcHBpbmcgYmV0d2VlbiBmaWxlcwotICAvLy8gIGFuZCB0b2tlbiBkYXRhIGluIHRoZSBQVEggZmlsZS4KLSAgc3RkOjp1bmlxdWVfcHRyPFBUSEZpbGVMb29rdXA+IEZpbGVMb29rdXA7Ci0KLSAgLy8vIElkRGF0YVRhYmxlIC0gQXJyYXkgcmVwcmVzZW50aW5nIHRoZSBtYXBwaW5nIGZyb20gcGVyc2lzdGVudCBJRHMgdG8gdGhlCi0gIC8vLyAgZGF0YSBvZmZzZXQgd2l0aGluIHRoZSBQVEggZmlsZSBjb250YWluaW5nIHRoZSBpbmZvcm1hdGlvbiB0bwotICAvLy8gIHJlY29uc2l0dXRlIGFuIElkZW50aWZpZXJJbmZvLgotICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjb25zdCBJZERhdGFUYWJsZTsKLQotICAvLy8gU29ydGVkSWRUYWJsZSAtIEFic3RyYWN0IGRhdGEgc3RydWN0dXJlIG1hcHBpbmcgZnJvbSBzdHJpbmdzIHRvCi0gIC8vLyAgcGVyc2lzdGVudCBJRHMuICBUaGlzIGlzIHVzZWQgYnkgZ2V0KCkuCi0gIHN0ZDo6dW5pcXVlX3B0cjxQVEhTdHJpbmdJZExvb2t1cD4gU3RyaW5nSWRMb29rdXA7Ci0KLSAgLy8vIE51bUlkcyAtIFRoZSBudW1iZXIgb2YgaWRlbnRpZmllcnMgaW4gdGhlIFBUSCBmaWxlLgotICBjb25zdCB1bnNpZ25lZCBOdW1JZHM7Ci0KLSAgLy8vIFBQIC0gVGhlIFByZXByb2Nlc3NvciBvYmplY3QgdGhhdCB3aWxsIHVzZSB0aGlzIFBUSE1hbmFnZXIgdG8gY3JlYXRlCi0gIC8vLyAgUFRITGV4ZXIgb2JqZWN0cy4KLSAgUHJlcHJvY2Vzc29yKiBQUCA9IG51bGxwdHI7Ci0KLSAgLy8vIFNwZWxsaW5nQmFzZSAtIFRoZSBiYXNlIG9mZnNldCB3aXRoaW4gdGhlIFBUSCBtZW1vcnkgYnVmZmVyIHRoYXQKLSAgLy8vICBjb250YWlucyB0aGUgY2FjaGVkIHNwZWxsaW5ncyBmb3IgbGl0ZXJhbHMuCi0gIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNvbnN0IFNwZWxsaW5nQmFzZTsKLQotICAvLy8gT3JpZ2luYWxTb3VyY2VGaWxlIC0gQSBudWxsLXRlcm1pbmF0ZWQgQy1zdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG5hbWUKLSAgLy8vICBpZiB0aGUgZmlsZSAoaWYgYW55KSB0aGF0IHdhcyB0byB1c2VkIHRvIGdlbmVyYXRlIHRoZSBQVEggY2FjaGUuCi0gIGNvbnN0IGNoYXIqIE9yaWdpbmFsU291cmNlRmlsZTsKLQotICAvLy8gVGhpcyBjb25zdHJ1Y3RvciBpcyBpbnRlbmRlZCB0byBvbmx5IGJlIGNhbGxlZCBieSB0aGUgc3RhdGljICdDcmVhdGUnCi0gIC8vLyBtZXRob2QuCi0gIFBUSE1hbmFnZXIoc3RkOjp1bmlxdWVfcHRyPGNvbnN0IGxsdm06Ok1lbW9yeUJ1ZmZlcj4gYnVmLAotICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQVEhGaWxlTG9va3VwPiBmaWxlTG9va3VwLAotICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlkRGF0YVRhYmxlLAotICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJZGVudGlmaWVySW5mbyAqW10sIGxsdm06OkZyZWVEZWxldGVyPiBwZXJJRENhY2hlLAotICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQVEhTdHJpbmdJZExvb2t1cD4gc3RyaW5nSWRMb29rdXAsIHVuc2lnbmVkIG51bUlkcywKLSAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzcGVsbGluZ0Jhc2UsIGNvbnN0IGNoYXIgKm9yaWdpbmFsU291cmNlRmlsZSk7Ci0KLSAgLy8vIGdldFNwZWxsaW5nQXRQVEhPZmZzZXQgLSBVc2VkIGJ5IFBUSExleGVyIGNsYXNzZXMgdG8gZ2V0IHRoZSBjYWNoZWQKLSAgLy8vICBzcGVsbGluZyBmb3IgYSB0b2tlbi4KLSAgdW5zaWduZWQgZ2V0U3BlbGxpbmdBdFBUSE9mZnNldCh1bnNpZ25lZCBQVEhPZmZzZXQsIGNvbnN0IGNoYXIqJiBCdWZmZXIpOwotCi0gIC8vLyBHZXRJZGVudGlmaWVySW5mbyAtIFVzZWQgdG8gcmVjb25zdHJ1Y3QgSWRlbnRpZmllckluZm8gb2JqZWN0cyBmcm9tIHRoZQotICAvLy8gIFBUSCBmaWxlLgotICBJZGVudGlmaWVySW5mbyAqR2V0SWRlbnRpZmllckluZm8odW5zaWduZWQgUGVyc2lzdGVudElEKSB7Ci0gICAgLy8gQ2hlY2sgaWYgdGhlIElkZW50aWZpZXJJbmZvIGhhcyBhbHJlYWR5IGJlZW4gcmVzb2x2ZWQuCi0gICAgaWYgKElkZW50aWZpZXJJbmZvKiBJSSA9IFBlcklEQ2FjaGVbUGVyc2lzdGVudElEXSkKLSAgICAgIHJldHVybiBJSTsKLSAgICByZXR1cm4gTGF6aWx5Q3JlYXRlSWRlbnRpZmllckluZm8oUGVyc2lzdGVudElEKTsKLSAgfQotICBJZGVudGlmaWVySW5mbyogTGF6aWx5Q3JlYXRlSWRlbnRpZmllckluZm8odW5zaWduZWQgUGVyc2lzdGVudElEKTsKLQotcHVibGljOgotICAvLyBUaGUgY3VycmVudCBQVEggdmVyc2lvbi4KLSAgZW51bSB7IFZlcnNpb24gPSAxMCB9OwotCi0gIFBUSE1hbmFnZXIoY29uc3QgUFRITWFuYWdlciAmKSA9IGRlbGV0ZTsKLSAgUFRITWFuYWdlciAmb3BlcmF0b3I9KGNvbnN0IFBUSE1hbmFnZXIgJikgPSBkZWxldGU7Ci0gIH5QVEhNYW5hZ2VyKCkgb3ZlcnJpZGU7Ci0KLSAgLy8vIGdldE9yaWdpbmFsU291cmNlRmlsZSAtIFJldHVybiB0aGUgZnVsbCBwYXRoIHRvIHRoZSBvcmlnaW5hbCBoZWFkZXIKLSAgLy8vICBmaWxlIG5hbWUgdGhhdCB3YXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgUFRIIGNhY2hlLgotICBjb25zdCBjaGFyKiBnZXRPcmlnaW5hbFNvdXJjZUZpbGUoKSBjb25zdCB7Ci0gICAgcmV0dXJuIE9yaWdpbmFsU291cmNlRmlsZTsKLSAgfQotCi0gIC8vLyBnZXQgLSBSZXR1cm4gdGhlIGlkZW50aWZpZXIgdG9rZW4gaW5mbyBmb3IgdGhlIHNwZWNpZmllZCBuYW1lZCBpZGVudGlmaWVyLgotICAvLy8gIFVubGlrZSB0aGUgdmVyc2lvbiBpbiBJZGVudGlmaWVyVGFibGUsIHRoaXMgcmV0dXJucyBhIHBvaW50ZXIgaW5zdGVhZAotICAvLy8gIG9mIGEgcmVmZXJlbmNlLiAgSWYgdGhlIHBvaW50ZXIgaXMgbnVsbHB0ciB0aGVuIHRoZSBJZGVudGlmaWVySW5mbyBjYW5ub3QKLSAgLy8vICBiZSBmb3VuZC4KLSAgSWRlbnRpZmllckluZm8gKmdldChTdHJpbmdSZWYgTmFtZSkgb3ZlcnJpZGU7Ci0KLSAgLy8vIENyZWF0ZSAtIFRoaXMgbWV0aG9kIGNyZWF0ZXMgUFRITWFuYWdlciBvYmplY3RzLiAgVGhlICdmaWxlJyBhcmd1bWVudAotICAvLy8gIGlzIHRoZSBuYW1lIG9mIHRoZSBQVEggZmlsZS4gIFRoaXMgbWV0aG9kIHJldHVybnMgbnVsbHB0ciB1cG9uIGZhaWx1cmUuCi0gIHN0YXRpYyBQVEhNYW5hZ2VyICpDcmVhdGUoU3RyaW5nUmVmIGZpbGUsIERpYWdub3N0aWNzRW5naW5lICZEaWFncyk7Ci0KLSAgdm9pZCBzZXRQcmVwcm9jZXNzb3IoUHJlcHJvY2Vzc29yICpwcCkgeyBQUCA9IHBwOyB9Ci0KLSAgLy8vIENyZWF0ZUxleGVyIC0gUmV0dXJuIGEgUFRITGV4ZXIgdGhhdCAibGV4ZXMiIHRoZSBjYWNoZWQgdG9rZW5zIGZvciB0aGUKLSAgLy8vICBzcGVjaWZpZWQgZmlsZS4gIFRoaXMgbWV0aG9kIHJldHVybnMgbnVsbHB0ciBpZiBubyBjYWNoZWQgdG9rZW5zIGV4aXN0LgotICAvLy8gIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyIHRvICdkZWxldGUnIHRoZSByZXR1cm5lZCBvYmplY3QuCi0gIFBUSExleGVyICpDcmVhdGVMZXhlcihGaWxlSUQgRklEKTsKLQotICAvLy8gY3JlYXRlU3RhdENhY2hlIC0gUmV0dXJucyBhIEZpbGVTeXN0ZW1TdGF0Q2FjaGUgb2JqZWN0IGZvciB1c2Ugd2l0aAotICAvLy8gIEZpbGVNYW5hZ2VyIG9iamVjdHMuICBUaGVzZSBvYmplY3RzIHVzZSB0aGUgUFRIIGRhdGEgdG8gc3BlZWQgdXAKLSAgLy8vICBjYWxscyB0byBzdGF0IGJ5IG1lbW9pemluZyB0aGVpciByZXN1bHRzIGZyb20gd2hlbiB0aGUgUFRIIGZpbGUKLSAgLy8vICB3YXMgZ2VuZXJhdGVkLgotICBzdGQ6OnVuaXF1ZV9wdHI8RmlsZVN5c3RlbVN0YXRDYWNoZT4gY3JlYXRlU3RhdENhY2hlKCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBjbGFuZwotCi0jZW5kaWYgLy8gTExWTV9DTEFOR19MRVhfUFRITUFOQUdFUl9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvUHJhZ21hLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvUHJhZ21hLmgKaW5kZXggZmIyOTQyZi4uMzY1Yjk1ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1ByYWdtYS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9QcmFnbWEuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQcmFnbWEuaCAtIFByYWdtYSByZWdpc3RyYXRpb24gYW5kIGhhbmRsaW5nIC0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1ByZXByb2Nlc3NpbmdSZWNvcmQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9QcmVwcm9jZXNzaW5nUmVjb3JkLmgKaW5kZXggNDRkNzlkOS4uMTE2MDc4MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1ByZXByb2Nlc3NpbmdSZWNvcmQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvUHJlcHJvY2Vzc2luZ1JlY29yZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFByZXByb2Nlc3NpbmdSZWNvcmQuaCAtIFJlY29yZCBvZiBQcmVwcm9jZXNzaW5nIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNSw2ICsxNCw3IEBACiAjaWZuZGVmIExMVk1fQ0xBTkdfTEVYX1BSRVBST0NFU1NJTkdSRUNPUkRfSAogI2RlZmluZSBMTFZNX0NMQU5HX0xFWF9QUkVQUk9DRVNTSU5HUkVDT1JEX0gKIAorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0lkZW50aWZpZXJUYWJsZS5oIgogI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0xMVk0uaCIKICNpbmNsdWRlICJjbGFuZy9CYXNpYy9Tb3VyY2VMb2NhdGlvbi5oIgogI2luY2x1ZGUgImNsYW5nL0xleC9QUENhbGxiYWNrcy5oIgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1ByZXByb2Nlc3Nvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1ByZXByb2Nlc3Nvci5oCmluZGV4IDc1OTEwMDEuLmU3MDFmMTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9QcmVwcm9jZXNzb3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvUHJlcHJvY2Vzc29yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUHJlcHJvY2Vzc29yLmggLSBDIExhbmd1YWdlIEZhbWlseSBQcmVwcm9jZXNzb3IgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI5LDcgKzI4LDYgQEAKICNpbmNsdWRlICJjbGFuZy9MZXgvTW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiY2xhbmcvTGV4L01vZHVsZU1hcC5oIgogI2luY2x1ZGUgImNsYW5nL0xleC9QUENhbGxiYWNrcy5oIgotI2luY2x1ZGUgImNsYW5nL0xleC9QVEhMZXhlci5oIgogI2luY2x1ZGUgImNsYW5nL0xleC9Ub2tlbi5oIgogI2luY2x1ZGUgImNsYW5nL0xleC9Ub2tlbkxleGVyLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvQXJyYXlSZWYuaCIKQEAgLTc5LDcgKzc3LDYgQEAKIGNsYXNzIFByZXByb2Nlc3NpbmdSZWNvcmQ7CiBjbGFzcyBQcmVwcm9jZXNzb3JMZXhlcjsKIGNsYXNzIFByZXByb2Nlc3Nvck9wdGlvbnM7Ci1jbGFzcyBQVEhNYW5hZ2VyOwogY2xhc3MgU2NyYXRjaEJ1ZmZlcjsKIGNsYXNzIFRhcmdldEluZm87CiAKQEAgLTE0MywxMCArMTQwLDYgQEAKICAgLy8vIEV4dGVybmFsIHNvdXJjZSBvZiBtYWNyb3MuCiAgIEV4dGVybmFsUHJlcHJvY2Vzc29yU291cmNlICpFeHRlcm5hbFNvdXJjZTsKIAotICAvLy8gQW4gb3B0aW9uYWwgUFRITWFuYWdlciBvYmplY3QgdXNlZCBmb3IgZ2V0dGluZyB0b2tlbnMgZnJvbQotICAvLy8gYSB0b2tlbiBjYWNoZSByYXRoZXIgdGhhbiBsZXhpbmcgdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLgotICBzdGQ6OnVuaXF1ZV9wdHI8UFRITWFuYWdlcj4gUFRIOwotCiAgIC8vLyBBIEJ1bXBQdHJBbGxvY2F0b3Igb2JqZWN0IHVzZWQgdG8gcXVpY2tseSBhbGxvY2F0ZSBhbmQgcmVsZWFzZQogICAvLy8gb2JqZWN0cyBpbnRlcm5hbCB0byB0aGUgUHJlcHJvY2Vzc29yLgogICBsbHZtOjpCdW1wUHRyQWxsb2NhdG9yIEJQOwpAQCAtMzI1LDYgKzMxOCwxMCBAQAogICAvLy8gVGhpcyBpcyB1c2VkIHdoZW4gbG9hZGluZyBhIHByZWNvbXBpbGVkIHByZWFtYmxlLgogICBzdGQ6OnBhaXI8aW50LCBib29sPiBTa2lwTWFpbkZpbGVQcmVhbWJsZTsKIAorICAvLy8gV2hldGhlciB3ZSBoaXQgYW4gZXJyb3IgZHVlIHRvIHJlYWNoaW5nIG1heCBhbGxvd2VkIGluY2x1ZGUgZGVwdGguIEFsbG93cworICAvLy8gdG8gYXZvaWQgaGl0dGluZyB0aGUgc2FtZSBlcnJvciBvdmVyIGFuZCBvdmVyIGFnYWluLgorICBib29sIEhhc1JlYWNoZWRNYXhJbmNsdWRlRGVwdGggPSBmYWxzZTsKKwogcHVibGljOgogICBzdHJ1Y3QgUHJlYW1ibGVTa2lwSW5mbyB7CiAgICAgU291cmNlTG9jYXRpb24gSGFzaFRva2VuTG9jOwpAQCAtMzkyLDE5ICszODksMTMgQEAKICAgLy8vIFRoZSBjdXJyZW50IHRvcCBvZiB0aGUgc3RhY2sgdGhhdCB3ZSdyZSBsZXhpbmcgZnJvbSBpZgogICAvLy8gbm90IGV4cGFuZGluZyBhIG1hY3JvIGFuZCB3ZSBhcmUgbGV4aW5nIGRpcmVjdGx5IGZyb20gc291cmNlIGNvZGUuCiAgIC8vLwotICAvLy8gT25seSBvbmUgb2YgQ3VyTGV4ZXIsIEN1clBUSExleGVyLCBvciBDdXJUb2tlbkxleGVyIHdpbGwgYmUgbm9uLW51bGwuCisgIC8vLyBPbmx5IG9uZSBvZiBDdXJMZXhlciwgb3IgQ3VyVG9rZW5MZXhlciB3aWxsIGJlIG5vbi1udWxsLgogICBzdGQ6OnVuaXF1ZV9wdHI8TGV4ZXI+IEN1ckxleGVyOwogCi0gIC8vLyBUaGUgY3VycmVudCB0b3Agb2Ygc3RhY2sgdGhhdCB3ZSdyZSBsZXhpbmcgZnJvbSBpZgotICAvLy8gbm90IGV4cGFuZGluZyBmcm9tIGEgbWFjcm8gYW5kIHdlIGFyZSBsZXhpbmcgZnJvbSBhIFBUSCBjYWNoZS4KLSAgLy8vCi0gIC8vLyBPbmx5IG9uZSBvZiBDdXJMZXhlciwgQ3VyUFRITGV4ZXIsIG9yIEN1clRva2VuTGV4ZXIgd2lsbCBiZSBub24tbnVsbC4KLSAgc3RkOjp1bmlxdWVfcHRyPFBUSExleGVyPiBDdXJQVEhMZXhlcjsKLQogICAvLy8gVGhlIGN1cnJlbnQgdG9wIG9mIHRoZSBzdGFjayB3aGF0IHdlJ3JlIGxleGluZyBmcm9tCiAgIC8vLyBpZiBub3QgZXhwYW5kaW5nIGEgbWFjcm8uCiAgIC8vLwotICAvLy8gVGhpcyBpcyBhbiBhbGlhcyBmb3IgZWl0aGVyIEN1ckxleGVyIG9yICBDdXJQVEhMZXhlci4KKyAgLy8vIFRoaXMgaXMgYW4gYWxpYXMgZm9yIEN1ckxleGVyLgogICBQcmVwcm9jZXNzb3JMZXhlciAqQ3VyUFBMZXhlciA9IG51bGxwdHI7CiAKICAgLy8vIFVzZWQgdG8gZmluZCB0aGUgY3VycmVudCBGaWxlRW50cnksIGlmIEN1ckxleGVyIGlzIG5vbi1udWxsCkBAIC00MjIsNyArNDEzLDYgQEAKICAgLy8vIFRoZSBraW5kIG9mIGxleGVyIHdlJ3JlIGN1cnJlbnRseSB3b3JraW5nIHdpdGguCiAgIGVudW0gQ3VyTGV4ZXJLaW5kIHsKICAgICBDTEtfTGV4ZXIsCi0gICAgQ0xLX1BUSExleGVyLAogICAgIENMS19Ub2tlbkxleGVyLAogICAgIENMS19DYWNoaW5nTGV4ZXIsCiAgICAgQ0xLX0xleEFmdGVyTW9kdWxlSW1wb3J0CkBAIC00MzksNyArNDI5LDYgQEAKICAgICBlbnVtIEN1ckxleGVyS2luZCAgICAgICAgICAgQ3VyTGV4ZXJLaW5kOwogICAgIE1vZHVsZSAgICAgICAgICAgICAgICAgICAgICpUaGVTdWJtb2R1bGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExleGVyPiAgICAgIFRoZUxleGVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQVEhMZXhlcj4gICBUaGVQVEhMZXhlcjsKICAgICBQcmVwcm9jZXNzb3JMZXhlciAgICAgICAgICAqVGhlUFBMZXhlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VG9rZW5MZXhlcj4gVGhlVG9rZW5MZXhlcjsKICAgICBjb25zdCBEaXJlY3RvcnlMb29rdXAgICAgICAqVGhlRGlyTG9va3VwOwpAQCAtNDQ4LDEzICs0MzcsMTEgQEAKICAgICAvLyB2ZXJzaW9ucywgb25seSBuZWVkZWQgdG8gcGFjaWZ5IE1TVkMuCiAgICAgSW5jbHVkZVN0YWNrSW5mbyhlbnVtIEN1ckxleGVyS2luZCBDdXJMZXhlcktpbmQsIE1vZHVsZSAqVGhlU3VibW9kdWxlLAogICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExleGVyPiAmJlRoZUxleGVyLAotICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBUSExleGVyPiAmJlRoZVBUSExleGVyLAogICAgICAgICAgICAgICAgICAgICAgUHJlcHJvY2Vzc29yTGV4ZXIgKlRoZVBQTGV4ZXIsCiAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VG9rZW5MZXhlcj4gJiZUaGVUb2tlbkxleGVyLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgRGlyZWN0b3J5TG9va3VwICpUaGVEaXJMb29rdXApCiAgICAgICAgIDogQ3VyTGV4ZXJLaW5kKHN0ZDo6bW92ZShDdXJMZXhlcktpbmQpKSwKICAgICAgICAgICBUaGVTdWJtb2R1bGUoc3RkOjptb3ZlKFRoZVN1Ym1vZHVsZSkpLCBUaGVMZXhlcihzdGQ6Om1vdmUoVGhlTGV4ZXIpKSwKLSAgICAgICAgICBUaGVQVEhMZXhlcihzdGQ6Om1vdmUoVGhlUFRITGV4ZXIpKSwKICAgICAgICAgICBUaGVQUExleGVyKHN0ZDo6bW92ZShUaGVQUExleGVyKSksCiAgICAgICAgICAgVGhlVG9rZW5MZXhlcihzdGQ6Om1vdmUoVGhlVG9rZW5MZXhlcikpLAogICAgICAgICAgIFRoZURpckxvb2t1cChzdGQ6Om1vdmUoVGhlRGlyTG9va3VwKSkge30KQEAgLTgzOCwxMCArODI1LDYgQEAKICAgQnVpbHRpbjo6Q29udGV4dCAmZ2V0QnVpbHRpbkluZm8oKSB7IHJldHVybiBCdWlsdGluSW5mbzsgfQogICBsbHZtOjpCdW1wUHRyQWxsb2NhdG9yICZnZXRQcmVwcm9jZXNzb3JBbGxvY2F0b3IoKSB7IHJldHVybiBCUDsgfQogCi0gIHZvaWQgc2V0UFRITWFuYWdlcihQVEhNYW5hZ2VyKiBwbSk7Ci0KLSAgUFRITWFuYWdlciAqZ2V0UFRITWFuYWdlcigpIHsgcmV0dXJuIFBUSC5nZXQoKTsgfQotCiAgIHZvaWQgc2V0RXh0ZXJuYWxTb3VyY2UoRXh0ZXJuYWxQcmVwcm9jZXNzb3JTb3VyY2UgKlNvdXJjZSkgewogICAgIEV4dGVybmFsU291cmNlID0gU291cmNlOwogICB9CkBAIC0xNDU2LDcgKzE0MzksNyBAQAogICAgICAgQ2FjaGVkVG9rZW5zW0NhY2hlZExleFBvcy0xXSA9IFRvazsKICAgfQogCi0gIC8vLyBSZWNvbXB1dGUgdGhlIGN1cnJlbnQgbGV4ZXIga2luZCBiYXNlZCBvbiB0aGUgQ3VyTGV4ZXIvQ3VyUFRITGV4ZXIvCisgIC8vLyBSZWNvbXB1dGUgdGhlIGN1cnJlbnQgbGV4ZXIga2luZCBiYXNlZCBvbiB0aGUgQ3VyTGV4ZXIvCiAgIC8vLyBDdXJUb2tlbkxleGVyIHBvaW50ZXJzLgogICB2b2lkIHJlY29tcHV0ZUN1ckxleGVyS2luZCgpOwogCkBAIC0xODMyLDggKzE4MTUsOCBAQAogICB2b2lkIENoZWNrRW5kT2ZEaXJlY3RpdmUoY29uc3QgY2hhciAqRGlyVHlwZSwgYm9vbCBFbmFibGVNYWNyb3MgPSBmYWxzZSk7CiAKICAgLy8vIFJlYWQgYW5kIGRpc2NhcmQgYWxsIHRva2VucyByZW1haW5pbmcgb24gdGhlIGN1cnJlbnQgbGluZSB1bnRpbAotICAvLy8gdGhlIHRvazo6ZW9kIHRva2VuIGlzIGZvdW5kLgotICB2b2lkIERpc2NhcmRVbnRpbEVuZE9mRGlyZWN0aXZlKCk7CisgIC8vLyB0aGUgdG9rOjplb2QgdG9rZW4gaXMgZm91bmQuIFJldHVybnMgdGhlIHJhbmdlIG9mIHRoZSBza2lwcGVkIHRva2Vucy4KKyAgU291cmNlUmFuZ2UgRGlzY2FyZFVudGlsRW5kT2ZEaXJlY3RpdmUoKTsKIAogICAvLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBwcmVwcm9jZXNzb3IgaGFzIHNlZW4gYSB1c2Ugb2YKICAgLy8vIF9fREFURV9fIG9yIF9fVElNRV9fIGluIHRoZSBmaWxlIHNvIGZhci4KQEAgLTE4NzEsNyArMTg1NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8Y2hhcj4gKlNlYXJjaFBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8Y2hhcj4gKlJlbGF0aXZlUGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZHVsZU1hcDo6S25vd25IZWFkZXIgKlN1Z2dlc3RlZE1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKklzTWFwcGVkLCBib29sIFNraXBDYWNoZSA9IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKklzTWFwcGVkLCBib29sICpJc0ZyYW1ld29ya0ZvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBTa2lwQ2FjaGUgPSBmYWxzZSk7CiAKICAgLy8vIEdldCB0aGUgRGlyZWN0b3J5TG9va3VwIHN0cnVjdHVyZSB1c2VkIHRvIGZpbmQgdGhlIGN1cnJlbnQKICAgLy8vIEZpbGVFbnRyeSwgaWYgQ3VyTGV4ZXIgaXMgbm9uLW51bGwgYW5kIGlmIGFwcGxpY2FibGUuCkBAIC0xOTE1LDE1ICsxODk5LDEzIEBACiAgIHZvaWQgUHVzaEluY2x1ZGVNYWNyb1N0YWNrKCkgewogICAgIGFzc2VydChDdXJMZXhlcktpbmQgIT0gQ0xLX0NhY2hpbmdMZXhlciAmJiAiY2Fubm90IHB1c2ggYSBjYWNoaW5nIGxleGVyIik7CiAgICAgSW5jbHVkZU1hY3JvU3RhY2suZW1wbGFjZV9iYWNrKEN1ckxleGVyS2luZCwgQ3VyTGV4ZXJTdWJtb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShDdXJMZXhlciksIHN0ZDo6bW92ZShDdXJQVEhMZXhlciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1clBQTGV4ZXIsIHN0ZDo6bW92ZShDdXJUb2tlbkxleGVyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VyRGlyTG9va3VwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKEN1ckxleGVyKSwgQ3VyUFBMZXhlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKEN1clRva2VuTGV4ZXIpLCBDdXJEaXJMb29rdXApOwogICAgIEN1clBQTGV4ZXIgPSBudWxscHRyOwogICB9CiAKICAgdm9pZCBQb3BJbmNsdWRlTWFjcm9TdGFjaygpIHsKICAgICBDdXJMZXhlciA9IHN0ZDo6bW92ZShJbmNsdWRlTWFjcm9TdGFjay5iYWNrKCkuVGhlTGV4ZXIpOwotICAgIEN1clBUSExleGVyID0gc3RkOjptb3ZlKEluY2x1ZGVNYWNyb1N0YWNrLmJhY2soKS5UaGVQVEhMZXhlcik7CiAgICAgQ3VyUFBMZXhlciA9IEluY2x1ZGVNYWNyb1N0YWNrLmJhY2soKS5UaGVQUExleGVyOwogICAgIEN1clRva2VuTGV4ZXIgPSBzdGQ6Om1vdmUoSW5jbHVkZU1hY3JvU3RhY2suYmFjaygpLlRoZVRva2VuTGV4ZXIpOwogICAgIEN1ckRpckxvb2t1cCAgPSBJbmNsdWRlTWFjcm9TdGFjay5iYWNrKCkuVGhlRGlyTG9va3VwOwpAQCAtMTk5Miw5ICsxOTc0LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgRm91bmROb25Ta2lwUG9ydGlvbiwgYm9vbCBGb3VuZEVsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBFbHNlTG9jID0gU291cmNlTG9jYXRpb24oKSk7CiAKLSAgLy8vIEEgZmFzdCBQVEggdmVyc2lvbiBvZiBTa2lwRXhjbHVkZWRDb25kaXRpb25hbEJsb2NrLgotICB2b2lkIFBUSFNraXBFeGNsdWRlZENvbmRpdGlvbmFsQmxvY2soKTsKLQogICAvLy8gSW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlc3VsdCBmb3IgZXZhbHVhdGluZyBhbiBleHByZXNzaW9uIGZvciBhCiAgIC8vLyBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlLgogICBzdHJ1Y3QgRGlyZWN0aXZlRXZhbFJlc3VsdCB7CkBAIC0yMDAzLDYgKzE5ODIsOSBAQAogCiAgICAgLy8vIFRydWUgaWYgdGhlIGV4cHJlc3Npb24gY29udGFpbmVkIGlkZW50aWZpZXJzIHRoYXQgd2VyZSB1bmRlZmluZWQuCiAgICAgYm9vbCBJbmNsdWRlZFVuZGVmaW5lZElkczsKKworICAgIC8vLyBUaGUgc291cmNlIHJhbmdlIGZvciB0aGUgZXhwcmVzc2lvbi4KKyAgICBTb3VyY2VSYW5nZSBFeHByUmFuZ2U7CiAgIH07CiAKICAgLy8vIEV2YWx1YXRlIGFuIGludGVnZXIgY29uc3RhbnQgZXhwcmVzc2lvbiB0aGF0IG1heSBvY2N1ciBhZnRlciBhCkBAIC0yMDYwLDEwICsyMDQyLDYgQEAKICAgLy8vIHN0YXJ0IGxleGluZyB0b2tlbnMgZnJvbSBpdCBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IGJ1ZmZlci4KICAgdm9pZCBFbnRlclNvdXJjZUZpbGVXaXRoTGV4ZXIoTGV4ZXIgKlRoZUxleGVyLCBjb25zdCBEaXJlY3RvcnlMb29rdXAgKkRpcik7CiAKLSAgLy8vIEFkZCBhIGxleGVyIHRvIHRoZSB0b3Agb2YgdGhlIGluY2x1ZGUgc3RhY2sgYW5kCi0gIC8vLyBzdGFydCBnZXR0aW5nIHRva2VucyBmcm9tIGl0IHVzaW5nIHRoZSBQVEggY2FjaGUuCi0gIHZvaWQgRW50ZXJTb3VyY2VGaWxlV2l0aFBUSChQVEhMZXhlciAqUEwsIGNvbnN0IERpcmVjdG9yeUxvb2t1cCAqRGlyKTsKLQogICAvLy8gU2V0IHRoZSBGaWxlSUQgZm9yIHRoZSBwcmVwcm9jZXNzb3IgcHJlZGVmaW5lcy4KICAgdm9pZCBzZXRQcmVkZWZpbmVzRmlsZUlEKEZpbGVJRCBGSUQpIHsKICAgICBhc3NlcnQoUHJlZGVmaW5lc0ZpbGVJRC5pc0ludmFsaWQoKSAmJiAiUHJlZGVmaW5lc0ZpbGVJRCBhbHJlYWR5IHNldCEiKTsKQEAgLTIwOTQsOCArMjA3Miw3IEBACiAgIGJvb2wgSW5DYWNoaW5nTGV4TW9kZSgpIGNvbnN0IHsKICAgICAvLyBJZiB0aGUgTGV4ZXIgcG9pbnRlcnMgYXJlIDAgYW5kIEluY2x1ZGVNYWNyb1N0YWNrIGlzIGVtcHR5LCBpdCBtZWFucwogICAgIC8vIHRoYXQgd2UgYXJlIHBhc3QgRU9GLCBub3QgdGhhdCB3ZSBhcmUgaW4gQ2FjaGluZ0xleCBtb2RlLgotICAgIHJldHVybiAhQ3VyUFBMZXhlciAmJiAhQ3VyVG9rZW5MZXhlciAmJiAhQ3VyUFRITGV4ZXIgJiYKLSAgICAgICAgICAgIUluY2x1ZGVNYWNyb1N0YWNrLmVtcHR5KCk7CisgICAgcmV0dXJuICFDdXJQUExleGVyICYmICFDdXJUb2tlbkxleGVyICYmICFJbmNsdWRlTWFjcm9TdGFjay5lbXB0eSgpOwogICB9CiAKICAgdm9pZCBFbnRlckNhY2hpbmdMZXhNb2RlKCk7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvUHJlcHJvY2Vzc29yTGV4ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9QcmVwcm9jZXNzb3JMZXhlci5oCmluZGV4IGRlOTE4YTIuLjVlZmU1ZmMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9QcmVwcm9jZXNzb3JMZXhlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9QcmVwcm9jZXNzb3JMZXhlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFByZXByb2Nlc3NvckxleGVyLmggLSBDIExhbmd1YWdlIEZhbWlseSBMZXhlciAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvUHJlcHJvY2Vzc29yT3B0aW9ucy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1ByZXByb2Nlc3Nvck9wdGlvbnMuaAppbmRleCA2YjM4MjM5Li4xNDgwNTQ4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvUHJlcHJvY2Vzc29yT3B0aW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9QcmVwcm9jZXNzb3JPcHRpb25zLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUHJlcHJvY2Vzc29yT3B0aW9ucy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xMTAsMTMgKzEwOSw2IEBACiAgIC8vLyBjbGllbnRzIGRvbid0IHVzZSB0aGVtLgogICBib29sIFdyaXRlQ29tbWVudExpc3RUb1BDSCA9IHRydWU7CiAKLSAgLy8vIFRoZSBpbXBsaWNpdCBQVEggaW5wdXQgaW5jbHVkZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0cmFuc2xhdGlvbiB1bml0LCBvcgotICAvLy8gZW1wdHkuCi0gIHN0ZDo6c3RyaW5nIEltcGxpY2l0UFRISW5jbHVkZTsKLQotICAvLy8gSWYgZ2l2ZW4sIGEgUFRIIGNhY2hlIGZpbGUgdG8gdXNlIGZvciBzcGVlZGluZyB1cCBoZWFkZXIgcGFyc2luZy4KLSAgc3RkOjpzdHJpbmcgVG9rZW5DYWNoZTsKLQogICAvLy8gV2hlbiBlbmFibGVkLCBwcmVwcm9jZXNzb3IgaXMgaW4gYSBtb2RlIGZvciBwYXJzaW5nIGEgc2luZ2xlIGZpbGUgb25seS4KICAgLy8vCiAgIC8vLyBEaXNhYmxlcyAjaW5jbHVkZXMgb2Ygb3RoZXIgZmlsZXMgYW5kIGlmIHRoZXJlIGFyZSB1bnJlc29sdmVkIGlkZW50aWZpZXJzCkBAIC0yMDQsOCArMTk2LDYgQEAKICAgICBDaGFpbmVkSW5jbHVkZXMuY2xlYXIoKTsKICAgICBEdW1wRGVzZXJpYWxpemVkUENIRGVjbHMgPSBmYWxzZTsKICAgICBJbXBsaWNpdFBDSEluY2x1ZGUuY2xlYXIoKTsKLSAgICBJbXBsaWNpdFBUSEluY2x1ZGUuY2xlYXIoKTsKLSAgICBUb2tlbkNhY2hlLmNsZWFyKCk7CiAgICAgU2luZ2xlRmlsZVBhcnNlTW9kZSA9IGZhbHNlOwogICAgIExleEVkaXRvclBsYWNlaG9sZGVycyA9IHRydWU7CiAgICAgUmV0YWluUmVtYXBwZWRGaWxlQnVmZmVycyA9IHRydWU7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvU2NyYXRjaEJ1ZmZlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1NjcmF0Y2hCdWZmZXIuaAppbmRleCBhM2Q2MDk2Li5mNTI2ZjIyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvU2NyYXRjaEJ1ZmZlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9TY3JhdGNoQnVmZmVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBTY3JhdGNoQnVmZmVyLmggLSBTY3JhdGNoIHNwYWNlIGZvciBmb3JtaW5nIHRva2VucyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9Ub2tlbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1Rva2VuLmgKaW5kZXggODViZWY3Mi4uMjA0ODNlMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1Rva2VuLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1Rva2VuLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBUb2tlbi5oIC0gVG9rZW4gaW50ZXJmYWNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTMyOSw5ICszMjgsNCBAQAogCiB9IC8vIGVuZCBuYW1lc3BhY2UgY2xhbmcKIAotbmFtZXNwYWNlIGxsdm0gewotICB0ZW1wbGF0ZSA8PgotICBzdHJ1Y3QgaXNQb2RMaWtlPGNsYW5nOjpUb2tlbj4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07Ci19IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQotCiAjZW5kaWYgLy8gTExWTV9DTEFOR19MRVhfVE9LRU5fSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1Rva2VuQ29uY2F0ZW5hdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1Rva2VuQ29uY2F0ZW5hdGlvbi5oCmluZGV4IDMxOTllMzYuLmJkNDMxNzIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9Ub2tlbkNvbmNhdGVuYXRpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvVG9rZW5Db25jYXRlbmF0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBUb2tlbkNvbmNhdGVuYXRpb24uaCAtIFRva2VuIENvbmNhdGVuYXRpb24gQXZvaWRhbmNlIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9Ub2tlbkxleGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvVG9rZW5MZXhlci5oCmluZGV4IDZhYWU5ZWUuLjEzYjNjM2UgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL0xleC9Ub2tlbkxleGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1Rva2VuTGV4ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUb2tlbkxleGVyLmggLSBMZXggZnJvbSBhIHRva2VuIGJ1ZmZlciAtLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvTGV4L1ZhcmlhZGljTWFjcm9TdXBwb3J0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvVmFyaWFkaWNNYWNyb1N1cHBvcnQuaAppbmRleCAzYTdhOTU1Li40Mjc0YTRkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvVmFyaWFkaWNNYWNyb1N1cHBvcnQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9MZXgvVmFyaWFkaWNNYWNyb1N1cHBvcnQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBWYXJpYWRpY01hY3JvU3VwcG9ydC5oIC0gc3RhdGUgbWFjaGluZXMgYW5kIHNjb3BlIGd1YXJkcyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUGFyc2UvQXR0clBhcnNlclN0cmluZ1N3aXRjaGVzLmluYyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1BhcnNlL0F0dHJQYXJzZXJTdHJpbmdTd2l0Y2hlcy5pbmMKaW5kZXggMTkxM2JiOS4uMmU5MGFlZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUGFyc2UvQXR0clBhcnNlclN0cmluZ1N3aXRjaGVzLmluYworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9QYXJzZS9BdHRyUGFyc2VyU3RyaW5nU3dpdGNoZXMuaW5jCkBAIC03Nyw4ICs3NywxMyBAQAogI2lmIGRlZmluZWQoQ0xBTkdfQVRUUl9WQVJJQURJQ19JREVOVElGSUVSX0FSR19MSVNUKQogLkNhc2UoImNwdV9kaXNwYXRjaCIsIHRydWUpCiAuQ2FzZSgiY3B1X3NwZWNpZmljIiwgdHJ1ZSkKKy5DYXNlKCJjYWxsYmFjayIsIHRydWUpCiAjZW5kaWYgLy8gQ0xBTkdfQVRUUl9WQVJJQURJQ19JREVOVElGSUVSX0FSR19MSVNUCiAKKyNpZiBkZWZpbmVkKENMQU5HX0FUVFJfVEhJU19JU0FfSURFTlRJRklFUl9BUkdfTElTVCkKKy5DYXNlKCJjYWxsYmFjayIsIHRydWUpCisjZW5kaWYgLy8gQ0xBTkdfQVRUUl9USElTX0lTQV9JREVOVElGSUVSX0FSR19MSVNUCisKICNpZiBkZWZpbmVkKENMQU5HX0FUVFJfVFlQRV9BUkdfTElTVCkKIC5DYXNlKCJpYm91dGxldGNvbGxlY3Rpb24iLCB0cnVlKQogLkNhc2UoInZlY190eXBlX2hpbnQiLCB0cnVlKQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9Mb29wSGludC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUGFyc2UvTG9vcEhpbnQuaApzaW1pbGFyaXR5IGluZGV4IDc5JQpyZW5hbWUgZnJvbSBsaW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0xvb3BIaW50LmgKcmVuYW1lIHRvIGxpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1BhcnNlL0xvb3BIaW50LmgKaW5kZXggMTcxNDM1ZS4uNmUzNjNmNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9Mb29wSGludC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1BhcnNlL0xvb3BIaW50LmgKQEAgLTEsMTQgKzEsMTMgQEAKIC8vPT09LS0tIExvb3BIaW50LmggLSBUeXBlcyBmb3IgTG9vcEhpbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKLSNpZm5kZWYgTExWTV9DTEFOR19TRU1BX0xPT1BISU5UX0gKLSNkZWZpbmUgTExWTV9DTEFOR19TRU1BX0xPT1BISU5UX0gKKyNpZm5kZWYgTExWTV9DTEFOR19QQVJTRV9MT09QSElOVF9ICisjZGVmaW5lIExMVk1fQ0xBTkdfUEFSU0VfTE9PUEhJTlRfSAogCiAjaW5jbHVkZSAiY2xhbmcvQmFzaWMvSWRlbnRpZmllclRhYmxlLmgiCiAjaW5jbHVkZSAiY2xhbmcvQmFzaWMvU291cmNlTG9jYXRpb24uaCIKQEAgLTQyLDQgKzQxLDQgQEAKIAogfSAvLyBlbmQgbmFtZXNwYWNlIGNsYW5nCiAKLSNlbmRpZiAvLyBMTFZNX0NMQU5HX1NFTUFfTE9PUEhJTlRfSAorI2VuZGlmIC8vIExMVk1fQ0xBTkdfUEFSU0VfTE9PUEhJTlRfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUGFyc2UvUGFyc2VBU1QuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1BhcnNlL1BhcnNlQVNULmgKaW5kZXggZjZlNzhhYy4uM2EyMWYwNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUGFyc2UvUGFyc2VBU1QuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9QYXJzZS9QYXJzZUFTVC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gUGFyc2VBU1QuaCAtIERlZmluZSB0aGUgUGFyc2VBU1QgbWV0aG9kIC0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9QYXJzZS9QYXJzZURpYWdub3N0aWMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1BhcnNlL1BhcnNlRGlhZ25vc3RpYy5oCmluZGV4IGYzYTdmM2IuLmYxNzQ0NjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1BhcnNlL1BhcnNlRGlhZ25vc3RpYy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1BhcnNlL1BhcnNlRGlhZ25vc3RpYy5oCkBAIC0xLDI4ICsxLDE0IEBACiAvLz09PS0tLSBEaWFnbm9zdGljUGFyc2UuaCAtIERpYWdub3N0aWNzIGZvciBsaWJwYXJzZSAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCiAjaWZuZGVmIExMVk1fQ0xBTkdfUEFSU0VfUEFSU0VESUFHTk9TVElDX0gKICNkZWZpbmUgTExWTV9DTEFOR19QQVJTRV9QQVJTRURJQUdOT1NUSUNfSAogCi0jaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpYy5oIgotCi1uYW1lc3BhY2UgY2xhbmcgewotICBuYW1lc3BhY2UgZGlhZyB7Ci0gICAgZW51bSB7Ci0jZGVmaW5lIERJQUcoRU5VTSxGTEFHUyxERUZBVUxUX01BUFBJTkcsREVTQyxHUk9VUCxcCi0gICAgICAgICAgICAgU0ZJTkFFLE5PV0VSUk9SLFNIT1dJTlNZU0hFQURFUixDQVRFR09SWSkgRU5VTSwKLSNkZWZpbmUgUEFSU0VTVEFSVAotI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNQYXJzZUtpbmRzLmluYyIKLSN1bmRlZiBESUFHCi0gICAgICBOVU1fQlVJTFRJTl9QQVJTRV9ESUFHTk9TVElDUwotICAgIH07Ci0gIH0gIC8vIGVuZCBuYW1lc3BhY2UgZGlhZwotfSAgLy8gZW5kIG5hbWVzcGFjZSBjbGFuZworI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNQYXJzZS5oIgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1BhcnNlL1BhcnNlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUGFyc2UvUGFyc2VyLmgKaW5kZXggOGRmNjMwMC4uZjVjNzBlNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUGFyc2UvUGFyc2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUGFyc2UvUGFyc2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBQYXJzZXIuaCAtIEMgTGFuZ3VhZ2UgUGFyc2VyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE0LDYgKzEzLDcgQEAKICNpZm5kZWYgTExWTV9DTEFOR19QQVJTRV9QQVJTRVJfSAogI2RlZmluZSBMTFZNX0NMQU5HX1BBUlNFX1BBUlNFUl9ICiAKKyNpbmNsdWRlICJjbGFuZy9BU1QvT3Blbk1QQ2xhdXNlLmgiCiAjaW5jbHVkZSAiY2xhbmcvQVNUL0F2YWlsYWJpbGl0eS5oIgogI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0JpdG1hc2tFbnVtLmgiCiAjaW5jbHVkZSAiY2xhbmcvQmFzaWMvT3Blbk1QS2luZHMuaCIKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJjbGFuZy9MZXgvQ29kZUNvbXBsZXRpb25IYW5kbGVyLmgiCiAjaW5jbHVkZSAiY2xhbmcvTGV4L1ByZXByb2Nlc3Nvci5oIgogI2luY2x1ZGUgImNsYW5nL1NlbWEvRGVjbFNwZWMuaCIKLSNpbmNsdWRlICJjbGFuZy9TZW1hL0xvb3BIaW50LmgiCiAjaW5jbHVkZSAiY2xhbmcvU2VtYS9TZW1hLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvU21hbGxWZWN0b3IuaCIKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvQ29tcGlsZXIuaCIKQEAgLTM4LDYgKzM3LDcgQEAKICAgY2xhc3MgQ29ycmVjdGlvbkNhbmRpZGF0ZUNhbGxiYWNrOwogICBjbGFzcyBEZWNsR3JvdXBSZWY7CiAgIGNsYXNzIERpYWdub3N0aWNCdWlsZGVyOworICBzdHJ1Y3QgTG9vcEhpbnQ7CiAgIGNsYXNzIFBhcnNlcjsKICAgY2xhc3MgUGFyc2luZ0RlY2xSQUlJT2JqZWN0OwogICBjbGFzcyBQYXJzaW5nRGVjbFNwZWM7CkBAIC03NCw2ICs3NCwxMCBAQAogICAvLyBhIHN0YXRlbWVudCkuCiAgIFNvdXJjZUxvY2F0aW9uIFByZXZUb2tMb2NhdGlvbjsKIAorICAvLy8gVHJhY2tzIGFuIGV4cGVjdGVkIHR5cGUgZm9yIHRoZSBjdXJyZW50IHRva2VuIHdoZW4gcGFyc2luZyBhbiBleHByZXNzaW9uLgorICAvLy8gVXNlZCBieSBjb2RlIGNvbXBsZXRpb24gZm9yIHJhbmtpbmcuCisgIFByZWZlcnJlZFR5cGVCdWlsZGVyIFByZWZlcnJlZFR5cGU7CisKICAgdW5zaWduZWQgc2hvcnQgUGFyZW5Db3VudCA9IDAsIEJyYWNrZXRDb3VudCA9IDAsIEJyYWNlQ291bnQgPSAwOwogICB1bnNpZ25lZCBzaG9ydCBNaXNwbGFjZWRNb2R1bGVCZWdpbkNvdW50ID0gMDsKIApAQCAtMzU5LDYgKzM2MywxMSBAQAogICAvLy8ganVzdCBhIHJlZ3VsYXIgc3ViLWV4cHJlc3Npb24uCiAgIFNvdXJjZUxvY2F0aW9uIEV4cHJTdGF0ZW1lbnRUb2tMb2M7CiAKKyAgLy8vIFRlc3RzIHdoZXRoZXIgYW4gZXhwcmVzc2lvbiB2YWx1ZSBpcyBkaXNjYXJkZWQgYmFzZWQgb24gdG9rZW4gbG9va2FoZWFkLgorICAvLy8gSXQgd2lsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgbGV4ZXIgaXMgY3VycmVudGx5IHByb2Nlc3NpbmcgdGhlIH0pCisgIC8vLyB0ZXJtaW5hdGluZyBhIEdOVSBzdGF0ZW1lbnQgZXhwcmVzc2lvbiBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgorICBib29sIGlzRXhwclZhbHVlRGlzY2FyZGVkKCk7CisKIHB1YmxpYzoKICAgUGFyc2VyKFByZXByb2Nlc3NvciAmUFAsIFNlbWEgJkFjdGlvbnMsIGJvb2wgU2tpcEZ1bmN0aW9uQm9kaWVzKTsKICAgflBhcnNlcigpIG92ZXJyaWRlOwpAQCAtODA0LDcgKzgxMyw3IEBACiAgIC8vLwogICAvLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBPYmplY3RpdmUtQyBsYW5ndWFnZSBtb2Rlcy4KICAgYm9vbCBpc09iakNJbnN0YW5jZXR5cGUoKSB7Ci0gICAgYXNzZXJ0KGdldExhbmdPcHRzKCkuT2JqQzEpOworICAgIGFzc2VydChnZXRMYW5nT3B0cygpLk9iakMpOwogICAgIGlmIChUb2suaXNBbm5vdGF0aW9uKCkpCiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFJZGVudF9pbnN0YW5jZXR5cGUpCkBAIC04MzUsNiArODQ0LDcgQEAKICAgLy8vCiAgIGNsYXNzIFRlbnRhdGl2ZVBhcnNpbmdBY3Rpb24gewogICAgIFBhcnNlciAmUDsKKyAgICBQcmVmZXJyZWRUeXBlQnVpbGRlciBQcmV2UHJlZmVycmVkVHlwZTsKICAgICBUb2tlbiBQcmV2VG9rOwogICAgIHNpemVfdCBQcmV2VGVudGF0aXZlbHlEZWNsYXJlZElkZW50aWZpZXJDb3VudDsKICAgICB1bnNpZ25lZCBzaG9ydCBQcmV2UGFyZW5Db3VudCwgUHJldkJyYWNrZXRDb3VudCwgUHJldkJyYWNlQ291bnQ7CkBAIC04NDIsNiArODUyLDcgQEAKIAogICBwdWJsaWM6CiAgICAgZXhwbGljaXQgVGVudGF0aXZlUGFyc2luZ0FjdGlvbihQYXJzZXImIHApIDogUChwKSB7CisgICAgICBQcmV2UHJlZmVycmVkVHlwZSA9IFAuUHJlZmVycmVkVHlwZTsKICAgICAgIFByZXZUb2sgPSBQLlRvazsKICAgICAgIFByZXZUZW50YXRpdmVseURlY2xhcmVkSWRlbnRpZmllckNvdW50ID0KICAgICAgICAgICBQLlRlbnRhdGl2ZWx5RGVjbGFyZWRJZGVudGlmaWVycy5zaXplKCk7CkBAIC04NjEsNiArODcyLDcgQEAKICAgICB2b2lkIFJldmVydCgpIHsKICAgICAgIGFzc2VydChpc0FjdGl2ZSAmJiAiUGFyc2luZyBhY3Rpb24gd2FzIGZpbmlzaGVkISIpOwogICAgICAgUC5QUC5CYWNrdHJhY2soKTsKKyAgICAgIFAuUHJlZmVycmVkVHlwZSA9IFByZXZQcmVmZXJyZWRUeXBlOwogICAgICAgUC5Ub2sgPSBQcmV2VG9rOwogICAgICAgUC5UZW50YXRpdmVseURlY2xhcmVkSWRlbnRpZmllcnMucmVzaXplKAogICAgICAgICAgIFByZXZUZW50YXRpdmVseURlY2xhcmVkSWRlbnRpZmllckNvdW50KTsKQEAgLTE4ODgsNiArMTkwMCw3IEBACiAgIFN0bXRSZXN1bHQgUGFyc2VDb21wb3VuZFN0YXRlbWVudChib29sIGlzU3RtdEV4cHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBTY29wZUZsYWdzKTsKICAgdm9pZCBQYXJzZUNvbXBvdW5kU3RhdGVtZW50TGVhZGluZ1ByYWdtYXMoKTsKKyAgYm9vbCBDb25zdW1lTnVsbFN0bXQoU3RtdFZlY3RvciAmU3RtdHMpOwogICBTdG10UmVzdWx0IFBhcnNlQ29tcG91bmRTdGF0ZW1lbnRCb2R5KGJvb2wgaXNTdG10RXhwciA9IGZhbHNlKTsKICAgYm9vbCBQYXJzZVBhcmVuRXhwck9yQ29uZGl0aW9uKFN0bXRSZXN1bHQgKkluaXRTdG10LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VtYTo6Q29uZGl0aW9uUmVzdWx0ICZDb25kUmVzdWx0LApAQCAtMjE0NCw2ICsyMTU3LDggQEAKICAgLy8gJ2Zvci1pbml0LXN0YXRlbWVudCcgcGFydCBvZiBhICdmb3InIHN0YXRlbWVudC4KICAgLy8vIFJldHVybnMgdHJ1ZSBmb3IgZGVjbGFyYXRpb24sIGZhbHNlIGZvciBleHByZXNzaW9uLgogICBib29sIGlzRm9ySW5pdERlY2xhcmF0aW9uKCkgeworICAgIGlmIChnZXRMYW5nT3B0cygpLk9wZW5NUCkKKyAgICAgIEFjdGlvbnMuc3RhcnRPcGVuTVBMb29wKCk7CiAgICAgaWYgKGdldExhbmdPcHRzKCkuQ1BsdXNQbHVzKQogICAgICAgcmV0dXJuIGlzQ1hYU2ltcGxlRGVjbGFyYXRpb24oLypBbGxvd0ZvclJhbmdlRGVjbD0qL3RydWUpOwogICAgIHJldHVybiBpc0RlY2xhcmF0aW9uU3BlY2lmaWVyKHRydWUpOwpAQCAtMjY1Nyw5ICsyNjcyLDE2IEBACiAgIERlY2xHcm91cFB0clR5IFBhcnNlTmFtZXNwYWNlKERlY2xhcmF0b3JDb250ZXh0IENvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uICZEZWNsRW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBJbmxpbmVMb2MgPSBTb3VyY2VMb2NhdGlvbigpKTsKLSAgdm9pZCBQYXJzZUlubmVyTmFtZXNwYWNlKHN0ZDo6dmVjdG9yPFNvdXJjZUxvY2F0aW9uPiAmSWRlbnRMb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxJZGVudGlmaWVySW5mbyAqPiAmSWRlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxTb3VyY2VMb2NhdGlvbj4gJk5hbWVzcGFjZUxvYywKKworICBzdHJ1Y3QgSW5uZXJOYW1lc3BhY2VJbmZvIHsKKyAgICBTb3VyY2VMb2NhdGlvbiBOYW1lc3BhY2VMb2M7CisgICAgU291cmNlTG9jYXRpb24gSW5saW5lTG9jOworICAgIFNvdXJjZUxvY2F0aW9uIElkZW50TG9jOworICAgIElkZW50aWZpZXJJbmZvICpJZGVudDsKKyAgfTsKKyAgdXNpbmcgSW5uZXJOYW1lc3BhY2VJbmZvTGlzdCA9IGxsdm06OlNtYWxsVmVjdG9yPElubmVyTmFtZXNwYWNlSW5mbywgND47CisKKyAgdm9pZCBQYXJzZUlubmVyTmFtZXNwYWNlKGNvbnN0IElubmVyTmFtZXNwYWNlSW5mb0xpc3QgJklubmVyTlNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGluZGV4LCBTb3VyY2VMb2NhdGlvbiAmSW5saW5lTG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyc2VkQXR0cmlidXRlcyAmYXR0cnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWxhbmNlZERlbGltaXRlclRyYWNrZXIgJlRyYWNrZXIpOwpAQCAtMjc2NSw2ICsyNzg3LDExIEBACiAgIERlY2xHcm91cFB0clR5IFBhcnNlT01QRGVjbGFyZVNpbWRDbGF1c2VzKERlY2xHcm91cFB0clR5IFB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FjaGVkVG9rZW5zICZUb2tzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBMb2MpOworICAvLy8gUGFyc2UgY2xhdXNlcyBmb3IgJyNwcmFnbWEgb21wIGRlY2xhcmUgdGFyZ2V0Jy4KKyAgRGVjbEdyb3VwUHRyVHkgUGFyc2VPTVBEZWNsYXJlVGFyZ2V0Q2xhdXNlcygpOworICAvLy8gUGFyc2UgJyNwcmFnbWEgb21wIGVuZCBkZWNsYXJlIHRhcmdldCcuCisgIHZvaWQgUGFyc2VPTVBFbmREZWNsYXJlVGFyZ2V0RGlyZWN0aXZlKE9wZW5NUERpcmVjdGl2ZUtpbmQgREtpbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIExvYyk7CiAgIC8vLyBQYXJzZXMgZGVjbGFyYXRpdmUgT3Blbk1QIGRpcmVjdGl2ZXMuCiAgIERlY2xHcm91cFB0clR5IFBhcnNlT3Blbk1QRGVjbGFyYXRpdmVEaXJlY3RpdmVXaXRoRXh0RGVjbCgKICAgICAgIEFjY2Vzc1NwZWNpZmllciAmQVMsIFBhcnNlZEF0dHJpYnV0ZXNXaXRoUmFuZ2UgJkF0dHJzLApAQCAtMjc3Niw2ICsyODAzLDEzIEBACiAgIC8vLyBpbml0aWFsaXplci4KICAgdm9pZCBQYXJzZU9wZW5NUFJlZHVjdGlvbkluaXRpYWxpemVyRm9yRGVjbChWYXJEZWNsICpPbXBQcml2UGFybSk7CiAKKyAgLy8vIFBhcnNlcyAnb21wIGRlY2xhcmUgbWFwcGVyJyBkaXJlY3RpdmUuCisgIERlY2xHcm91cFB0clR5IFBhcnNlT3Blbk1QRGVjbGFyZU1hcHBlckRpcmVjdGl2ZShBY2Nlc3NTcGVjaWZpZXIgQVMpOworICAvLy8gUGFyc2VzIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGluICdvbXAgZGVjbGFyZSBtYXBwZXInIGRpcmVjdGl2ZS4KKyAgVHlwZVJlc3VsdCBwYXJzZU9wZW5NUERlY2xhcmVNYXBwZXJWYXJEZWNsKFNvdXJjZVJhbmdlICZSYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2xhcmF0aW9uTmFtZSAmTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1NwZWNpZmllciBBUyA9IEFTX25vbmUpOworCiAgIC8vLyBQYXJzZXMgc2ltcGxlIGxpc3Qgb2YgdmFyaWFibGVzLgogICAvLy8KICAgLy8vIFxwYXJhbSBLaW5kIEtpbmQgb2YgdGhlIGRpcmVjdGl2ZS4KQEAgLTI4NjEsNyArMjg5NSwxMCBAQAogICAgIERlY2xhcmF0aW9uTmFtZUluZm8gUmVkdWN0aW9uSWQ7CiAgICAgT3Blbk1QRGVwZW5kQ2xhdXNlS2luZCBEZXBLaW5kID0gT01QQ19ERVBFTkRfdW5rbm93bjsKICAgICBPcGVuTVBMaW5lYXJDbGF1c2VLaW5kIExpbktpbmQgPSBPTVBDX0xJTkVBUl92YWw7Ci0gICAgT3Blbk1QTWFwQ2xhdXNlS2luZCBNYXBUeXBlTW9kaWZpZXIgPSBPTVBDX01BUF91bmtub3duOworICAgIFNtYWxsVmVjdG9yPE9wZW5NUE1hcE1vZGlmaWVyS2luZCwgT01QTWFwQ2xhdXNlOjpOdW1iZXJPZk1vZGlmaWVycz4KKyAgICBNYXBUeXBlTW9kaWZpZXJzOworICAgIFNtYWxsVmVjdG9yPFNvdXJjZUxvY2F0aW9uLCBPTVBNYXBDbGF1c2U6Ok51bWJlck9mTW9kaWZpZXJzPgorICAgIE1hcFR5cGVNb2RpZmllcnNMb2M7CiAgICAgT3Blbk1QTWFwQ2xhdXNlS2luZCBNYXBUeXBlID0gT01QQ19NQVBfdW5rbm93bjsKICAgICBib29sIElzTWFwVHlwZUltcGxpY2l0ID0gZmFsc2U7CiAgICAgU291cmNlTG9jYXRpb24gRGVwTGluTWFwTG9jOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUGFyc2UvUkFJSU9iamVjdHNGb3JQYXJzZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1BhcnNlL1JBSUlPYmplY3RzRm9yUGFyc2VyLmgKaW5kZXggYmE1ZTVmZS4uNTU4MTA2ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUGFyc2UvUkFJSU9iamVjdHNGb3JQYXJzZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9QYXJzZS9SQUlJT2JqZWN0c0ZvclBhcnNlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gUkFJSU9iamVjdHNGb3JQYXJzZXIuaCAtIFJBSUkgaGVscGVycyBmb3IgdGhlIHBhcnNlciAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0NvcmUvRGVsdGFUcmVlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0NvcmUvRGVsdGFUcmVlLmgKaW5kZXggZjc5OGU5Zi4uZTU2NmM5MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUmV3cml0ZS9Db3JlL0RlbHRhVHJlZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Jld3JpdGUvQ29yZS9EZWx0YVRyZWUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEZWx0YVRyZWUuaCAtIEItVHJlZSBmb3IgUmV3cml0ZSBEZWx0YSB0cmFja2luZyAtLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUmV3cml0ZS9Db3JlL0hUTUxSZXdyaXRlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0NvcmUvSFRNTFJld3JpdGUuaAppbmRleCAwZjFmNDkwLi4zNDA0MTFlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0NvcmUvSFRNTFJld3JpdGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0NvcmUvSFRNTFJld3JpdGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIEhUTUxSZXdyaXRlLmggLSBUcmFuc2xhdGUgc291cmNlIGNvZGUgaW50byBwcmV0dGlmaWVkIEhUTUwgLS0tKi0gQysrIC0qLS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUmV3cml0ZS9Db3JlL1Jld3JpdGVCdWZmZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Jld3JpdGUvQ29yZS9SZXdyaXRlQnVmZmVyLmgKaW5kZXggYzYxODI5OC4uYjhmMzQxNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUmV3cml0ZS9Db3JlL1Jld3JpdGVCdWZmZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0NvcmUvUmV3cml0ZUJ1ZmZlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFJld3JpdGVCdWZmZXIuaCAtIEJ1ZmZlciByZXdyaXRpbmcgaW50ZXJmYWNlIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUmV3cml0ZS9Db3JlL1Jld3JpdGVSb3BlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0NvcmUvUmV3cml0ZVJvcGUuaAppbmRleCAyYTBlMGE0Li4wMzk5MjdjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0NvcmUvUmV3cml0ZVJvcGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0NvcmUvUmV3cml0ZVJvcGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBSZXdyaXRlUm9wZS5oIC0gUm9wZSBzcGVjaWFsaXplZCBmb3IgcmV3cml0ZXIgLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUmV3cml0ZS9Db3JlL1Jld3JpdGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0NvcmUvUmV3cml0ZXIuaAppbmRleCAxMDc5NjhhLi41YTNmZjZjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0NvcmUvUmV3cml0ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0NvcmUvUmV3cml0ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBSZXdyaXRlci5oIC0gQ29kZSByZXdyaXRpbmcgaW50ZXJmYWNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUmV3cml0ZS9Db3JlL1Rva2VuUmV3cml0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Jld3JpdGUvQ29yZS9Ub2tlblJld3JpdGVyLmgKaW5kZXggYWIyYzJjOC4uMTNjYTJkZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUmV3cml0ZS9Db3JlL1Rva2VuUmV3cml0ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0NvcmUvVG9rZW5SZXdyaXRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFRva2VuUmV3cml0ZXIuaCAtIFRva2VuLWJhc2VkIFJld3JpdGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0Zyb250ZW5kL0FTVENvbnN1bWVycy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUmV3cml0ZS9Gcm9udGVuZC9BU1RDb25zdW1lcnMuaAppbmRleCBlMDU0ZTc1Li42MThiMzgwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0Zyb250ZW5kL0FTVENvbnN1bWVycy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Jld3JpdGUvRnJvbnRlbmQvQVNUQ29uc3VtZXJzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBBU1RDb25zdW1lcnMuaCAtIEFTVENvbnN1bWVyIGltcGxlbWVudGF0aW9ucyAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Jld3JpdGUvRnJvbnRlbmQvRml4SXRSZXdyaXRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUmV3cml0ZS9Gcm9udGVuZC9GaXhJdFJld3JpdGVyLmgKaW5kZXggNzQ1Njg0MC4uZjUxNGYzNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUmV3cml0ZS9Gcm9udGVuZC9GaXhJdFJld3JpdGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUmV3cml0ZS9Gcm9udGVuZC9GaXhJdFJld3JpdGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRml4SXRSZXdyaXRlci5oIC0gRml4LUl0IFJld3JpdGVyIERpYWdub3N0aWMgQ2xpZW50IC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Jld3JpdGUvRnJvbnRlbmQvRnJvbnRlbmRBY3Rpb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0Zyb250ZW5kL0Zyb250ZW5kQWN0aW9ucy5oCmluZGV4IDQwZDJmNGMuLjRlOWQxOTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Jld3JpdGUvRnJvbnRlbmQvRnJvbnRlbmRBY3Rpb25zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUmV3cml0ZS9Gcm9udGVuZC9Gcm9udGVuZEFjdGlvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gRnJvbnRlbmRBY3Rpb25zLmggLSBVc2VmdWwgRnJvbnRlbmQgQWN0aW9ucyAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Jld3JpdGUvRnJvbnRlbmQvUmV3cml0ZXJzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9SZXdyaXRlL0Zyb250ZW5kL1Jld3JpdGVycy5oCmluZGV4IDNhZDc2ZGYuLjNmOTMzMjIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Jld3JpdGUvRnJvbnRlbmQvUmV3cml0ZXJzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvUmV3cml0ZS9Gcm9udGVuZC9SZXdyaXRlcnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFJld3JpdGVycy5oIC0gUmV3cml0ZXIgaW1wbGVtZW50YXRpb25zICAgICAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9BbmFseXNpc0Jhc2VkV2FybmluZ3MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvQW5hbHlzaXNCYXNlZFdhcm5pbmdzLmgKaW5kZXggNmU4ZDgzOS4uZDVkZjUzNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9BbmFseXNpc0Jhc2VkV2FybmluZ3MuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0FuYWx5c2lzQmFzZWRXYXJuaW5ncy5oCkBAIC0xLDkgKzEsOCBAQAogLy89LSBBbmFseXNpc0Jhc2VkV2FybmluZ3MuaCAtIFNlbWEgd2FybmluZ3MgYmFzZWQgb24gbGliQW5hbHlzaXMgLSotIEMrKyAtKi09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0F0dHJQYXJzZWRBdHRySW1wbC5pbmMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0F0dHJQYXJzZWRBdHRySW1wbC5pbmMKaW5kZXggMmI0YjY0OS4uYjY1NzkzNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9BdHRyUGFyc2VkQXR0ckltcGwuaW5jCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvQXR0clBhcnNlZEF0dHJJbXBsLmluYwpAQCAtMzM4LDcgKzMzOCw3IEBACiB9CiAKIHN0YXRpYyB2b2lkIG1hdGNoUnVsZXNGb3JBcmNXZWFrcmVmVW5hdmFpbGFibGUobGx2bTo6U21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlLCBib29sPj4gJk1hdGNoUnVsZXMsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nT3B0cykgewotICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfaW50ZXJmYWNlLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQzEpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX2ludGVyZmFjZSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKIH0KIAogc3RhdGljIGJvb2wgY2hlY2tBcmd1bWVudFdpdGhUeXBlVGFnQXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKQEAgLTQ0Miw3ICs0NDIsNyBAQAogfQogCiBzdGF0aWMgdm9pZCBtYXRjaFJ1bGVzRm9yQXNzdW1lQWxpZ25lZChsbHZtOjpTbWFsbFZlY3RvckltcGw8c3RkOjpwYWlyPGF0dHI6OlN1YmplY3RNYXRjaFJ1bGUsIGJvb2w+PiAmTWF0Y2hSdWxlcywgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzKSB7Ci0gIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2QsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDMSkpOworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfbWV0aG9kLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQykpOwogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2Z1bmN0aW9uLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwogfQogCkBAIC00NjIsMTEgKzQ2MiwxMSBAQAogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2ZpZWxkLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2Z1bmN0aW9uLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX25hbWVzcGFjZSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLkNQbHVzUGx1cykpOwotICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfY2F0ZWdvcnksIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDMSkpOwotICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfaW50ZXJmYWNlLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQzEpKTsKLSAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7Ci0gIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19wcm9wZXJ0eSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7Ci0gIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19wcm90b2NvbCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19jYXRlZ29yeSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX2ludGVyZmFjZSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX3Byb3BlcnR5LCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQykpOworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfcHJvdG9jb2wsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7CiAgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfcmVjb3JkLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX3R5cGVfYWxpYXMsIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7CiAgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfdmFyaWFibGUsIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7CkBAIC02MTcsNyArNjE3LDcgQEAKIH0KIAogc3RhdGljIHZvaWQgbWF0Y2hSdWxlc0ZvckNVREFMYXVuY2hCb3VuZHMobGx2bTo6U21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlLCBib29sPj4gJk1hdGNoUnVsZXMsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nT3B0cykgewotICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfbWV0aG9kLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQzEpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKICAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9oYXNUeXBlX2Z1bmN0aW9uVHlwZSwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKIH0KIApAQCAtNjYwLDYgKzY2MCwxOSBAQAogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2Z1bmN0aW9uX2lzX21lbWJlciwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLkNQbHVzUGx1cykpOwogfQogCitzdGF0aWMgYm9vbCBjaGVja0NhbGxiYWNrQXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKKyAgaWYgKCFEIHx8ICghaXNhPEZ1bmN0aW9uRGVjbD4oRCkpKSB7CisgICAgUy5EaWFnKEF0dHIuZ2V0TG9jKCksIGRpYWc6Ondhcm5fYXR0cmlidXRlX3dyb25nX2RlY2xfdHlwZV9zdHIpCisgICAgICA8PCBBdHRyIDw8ICJmdW5jdGlvbnMiOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgbWF0Y2hSdWxlc0ZvckNhbGxiYWNrKGxsdm06OlNtYWxsVmVjdG9ySW1wbDxzdGQ6OnBhaXI8YXR0cjo6U3ViamVjdE1hdGNoUnVsZSwgYm9vbD4+ICZNYXRjaFJ1bGVzLCBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpIHsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9mdW5jdGlvbiwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKK30KKwogc3RhdGljIGJvb2wgY2hlY2tDYXBhYmlsaXR5QXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKICAgaWYgKCFEIHx8ICghaXNhPFJlY29yZERlY2w+KEQpICYmICFpc2E8VHlwZWRlZk5hbWVEZWNsPihEKSkpIHsKICAgICBTLkRpYWcoQXR0ci5nZXRMb2MoKSwgZGlhZzo6ZXJyX2F0dHJpYnV0ZV93cm9uZ19kZWNsX3R5cGVfc3RyKQpAQCAtNzAzLDcgKzcxNiw3IEBACiAKIHN0YXRpYyB2b2lkIG1hdGNoUnVsZXNGb3JDYXJyaWVzRGVwZW5kZW5jeShsbHZtOjpTbWFsbFZlY3RvckltcGw8c3RkOjpwYWlyPGF0dHI6OlN1YmplY3RNYXRjaFJ1bGUsIGJvb2w+PiAmTWF0Y2hSdWxlcywgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzKSB7CiAgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfdmFyaWFibGVfaXNfcGFyYW1ldGVyLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwotICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfbWV0aG9kLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQzEpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKICAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9mdW5jdGlvbiwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKIH0KIApAQCAtODQwLDcgKzg1MywxNiBAQAogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2Z1bmN0aW9uLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX3ZhcmlhYmxlLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX3JlY29yZCwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKLSAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX2ludGVyZmFjZSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19pbnRlcmZhY2UsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7Cit9CisKK3N0YXRpYyBib29sIGNoZWNrRExMRXhwb3J0U3RhdGljTG9jYWxBcHBlcnRhaW5zVG8oU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0ciwgY29uc3QgRGVjbCAqRCkgeworICBpZiAoIUQgfHwgKCFpc2E8RnVuY3Rpb25EZWNsPihEKSkpIHsKKyAgICBTLkRpYWcoQXR0ci5nZXRMb2MoKSwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfd3JvbmdfZGVjbF90eXBlX3N0cikKKyAgICAgIDw8IEF0dHIgPDwgImZ1bmN0aW9ucyI7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBjaGVja0RMTEltcG9ydEFwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CkBAIC04NTYsNyArODc4LDE2IEBACiAgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfZnVuY3Rpb24sIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7CiAgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfdmFyaWFibGUsIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7CiAgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfcmVjb3JkLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwotICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfaW50ZXJmYWNlLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQzEpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX2ludGVyZmFjZSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKK30KKworc3RhdGljIGJvb2wgY2hlY2tETExJbXBvcnRTdGF0aWNMb2NhbEFwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CisgIGlmICghRCB8fCAoIWlzYTxGdW5jdGlvbkRlY2w+KEQpKSkgeworICAgIFMuRGlhZyhBdHRyLmdldExvYygpLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV93cm9uZ19kZWNsX3R5cGVfc3RyKQorICAgICAgPDwgQXR0ciA8PCAiZnVuY3Rpb25zIjsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBib29sIGNoZWNrRGVzdHJ1Y3RvckFwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CkBAIC04OTIsNyArOTIzLDcgQEAKIAogc3RhdGljIHZvaWQgbWF0Y2hSdWxlc0ZvckRpc2FibGVUYWlsQ2FsbHMobGx2bTo6U21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlLCBib29sPj4gJk1hdGNoUnVsZXMsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nT3B0cykgewogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2Z1bmN0aW9uLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwotICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfbWV0aG9kLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQzEpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKIH0KIAogc3RhdGljIGJvb2wgY2hlY2tFbXB0eUJhc2VzQXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKQEAgLTk4NCwxMSArMTAxNSwxMSBAQAogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2ZpZWxkLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2Z1bmN0aW9uLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX25hbWVzcGFjZSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLkNQbHVzUGx1cykpOwotICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfY2F0ZWdvcnksIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDMSkpOwotICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfaW50ZXJmYWNlLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQzEpKTsKLSAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7Ci0gIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19wcm9wZXJ0eSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7Ci0gIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19wcm90b2NvbCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19jYXRlZ29yeSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX2ludGVyZmFjZSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX3Byb3BlcnR5LCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQykpOworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfcHJvdG9jb2wsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7CiAgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfcmVjb3JkLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX3R5cGVfYWxpYXMsIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7CiAgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfdmFyaWFibGUsIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7CkBAIC0xMDM4LDYgKzEwNjksMTkgQEAKICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sIGNoZWNrRm9ydGlmeVN0ZExpYkFwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CisgIGlmICghRCB8fCAoIWlzYTxGdW5jdGlvbkRlY2w+KEQpKSkgeworICAgIFMuRGlhZyhBdHRyLmdldExvYygpLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV93cm9uZ19kZWNsX3R5cGVfc3RyKQorICAgICAgPDwgQXR0ciA8PCAiZnVuY3Rpb25zIjsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIG1hdGNoUnVsZXNGb3JGb3J0aWZ5U3RkTGliKGxsdm06OlNtYWxsVmVjdG9ySW1wbDxzdGQ6OnBhaXI8YXR0cjo6U3ViamVjdE1hdGNoUnVsZSwgYm9vbD4+ICZNYXRjaFJ1bGVzLCBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpIHsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9mdW5jdGlvbiwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKK30KKwogc3RhdGljIGJvb2wgY2hlY2tHTlVJbmxpbmVBcHBlcnRhaW5zVG8oU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0ciwgY29uc3QgRGVjbCAqRCkgewogICBpZiAoIUQgfHwgKCFpc2E8RnVuY3Rpb25EZWNsPihEKSkpIHsKICAgICBTLkRpYWcoQXR0ci5nZXRMb2MoKSwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfd3JvbmdfZGVjbF90eXBlX3N0cikKQEAgLTEwOTgsNyArMTE0Miw3IEBACiB9CiAKIHN0YXRpYyB2b2lkIG1hdGNoUnVsZXNGb3JJQkFjdGlvbihsbHZtOjpTbWFsbFZlY3RvckltcGw8c3RkOjpwYWlyPGF0dHI6OlN1YmplY3RNYXRjaFJ1bGUsIGJvb2w+PiAmTWF0Y2hSdWxlcywgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzKSB7Ci0gIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2RfaXNfaW5zdGFuY2UsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDMSkpOworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfbWV0aG9kX2lzX2luc3RhbmNlLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQykpOwogfQogCiBzdGF0aWMgYm9vbCBjaGVja0lGdW5jQXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKQEAgLTEzMjAsNyArMTM2NCw3IEBACiAKIHN0YXRpYyB2b2lkIG1hdGNoUnVsZXNGb3JNaW5TaXplKGxsdm06OlNtYWxsVmVjdG9ySW1wbDxzdGQ6OnBhaXI8YXR0cjo6U3ViamVjdE1hdGNoUnVsZSwgYm9vbD4+ICZNYXRjaFJ1bGVzLCBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpIHsKICAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9mdW5jdGlvbiwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKLSAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2QsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7CiB9CiAKIHN0YXRpYyBib29sIGNoZWNrTWluVmVjdG9yV2lkdGhBcHBlcnRhaW5zVG8oU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0ciwgY29uc3QgRGVjbCAqRCkgewpAQCAtMTQ0OCw3ICsxNDkyLDcgQEAKIH0KIAogc3RhdGljIHZvaWQgbWF0Y2hSdWxlc0Zvck5TQ29uc3VtZXNTZWxmKGxsdm06OlNtYWxsVmVjdG9ySW1wbDxzdGQ6OnBhaXI8YXR0cjo6U3ViamVjdE1hdGNoUnVsZSwgYm9vbD4+ICZNYXRjaFJ1bGVzLCBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpIHsKLSAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2QsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7CiB9CiAKIHN0YXRpYyBib29sIGNoZWNrTmFrZWRBcHBlcnRhaW5zVG8oU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0ciwgY29uc3QgRGVjbCAqRCkgewpAQCAtMTUwMyw3ICsxNTQ3LDcgQEAKIAogc3RhdGljIHZvaWQgbWF0Y2hSdWxlc0Zvck5vRGVidWcobGx2bTo6U21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlLCBib29sPj4gJk1hdGNoUnVsZXMsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nT3B0cykgewogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2hhc1R5cGVfZnVuY3Rpb25UeXBlLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwotICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfbWV0aG9kLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQzEpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKICAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV92YXJpYWJsZV9ub3RfaXNfcGFyYW1ldGVyLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwogfQogCkBAIC0xNjA5LDcgKzE2NTMsNyBAQAogCiBzdGF0aWMgdm9pZCBtYXRjaFJ1bGVzRm9yTm9TYW5pdGl6ZShsbHZtOjpTbWFsbFZlY3RvckltcGw8c3RkOjpwYWlyPGF0dHI6OlN1YmplY3RNYXRjaFJ1bGUsIGJvb2w+PiAmTWF0Y2hSdWxlcywgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzKSB7CiAgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfZnVuY3Rpb24sIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7Ci0gIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2QsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDMSkpOworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfbWV0aG9kLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQykpOwogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX3ZhcmlhYmxlX2lzX2dsb2JhbCwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKIH0KIApAQCAtMTYyNyw2ICsxNjcxLDIwIEBACiAgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfdmFyaWFibGVfaXNfZ2xvYmFsLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwogfQogCitzdGF0aWMgYm9vbCBjaGVja05vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKKyAgaWYgKCFEIHx8ICghaXNhPEZ1bmN0aW9uRGVjbD4oRCkgJiYgIWlzYTxPYmpDTWV0aG9kRGVjbD4oRCkpKSB7CisgICAgUy5EaWFnKEF0dHIuZ2V0TG9jKCksIGRpYWc6OmVycl9hdHRyaWJ1dGVfd3JvbmdfZGVjbF90eXBlX3N0cikKKyAgICAgIDw8IEF0dHIgPDwgImZ1bmN0aW9ucyBhbmQgT2JqZWN0aXZlLUMgbWV0aG9kcyI7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBtYXRjaFJ1bGVzRm9yTm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmcobGx2bTo6U21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlLCBib29sPj4gJk1hdGNoUnVsZXMsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nT3B0cykgeworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2Z1bmN0aW9uLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfbWV0aG9kLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQykpOworfQorCiBzdGF0aWMgYm9vbCBjaGVja05vU3BsaXRTdGFja0FwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CiAgIGlmICghRCB8fCAoIWlzYTxGdW5jdGlvbkRlY2w+KEQpKSkgewogICAgIFMuRGlhZyhBdHRyLmdldExvYygpLCBkaWFnOjplcnJfYXR0cmlidXRlX3dyb25nX2RlY2xfdHlwZV9zdHIpCkBAIC0xNzAxLDYgKzE3NTksOTIgQEAKICAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9mdW5jdGlvbiwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKIH0KIAorc3RhdGljIGJvb2wgY2hlY2tPU0NvbnN1bWVkQXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKKyAgaWYgKCFEIHx8ICghaXNhPFBhcm1WYXJEZWNsPihEKSkpIHsKKyAgICBTLkRpYWcoQXR0ci5nZXRMb2MoKSwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfd3JvbmdfZGVjbF90eXBlX3N0cikKKyAgICAgIDw8IEF0dHIgPDwgInBhcmFtZXRlcnMiOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgbWF0Y2hSdWxlc0Zvck9TQ29uc3VtZWQobGx2bTo6U21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlLCBib29sPj4gJk1hdGNoUnVsZXMsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nT3B0cykgeworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX3ZhcmlhYmxlX2lzX3BhcmFtZXRlciwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKK30KKworc3RhdGljIGJvb2wgaXNOb25TdGF0aWNDWFhNZXRob2QoY29uc3QgRGVjbCAqRCkgeworICBpZiAoY29uc3QgYXV0byAqUyA9IGR5bl9jYXN0PENYWE1ldGhvZERlY2w+KEQpKQorICAgIHJldHVybiAhUy0+aXNTdGF0aWMoKTsKKyAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbCBjaGVja09TQ29uc3VtZXNUaGlzQXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKKyAgaWYgKCFEIHx8ICghaXNOb25TdGF0aWNDWFhNZXRob2QoRCkpKSB7CisgICAgUy5EaWFnKEF0dHIuZ2V0TG9jKCksIGRpYWc6Ondhcm5fYXR0cmlidXRlX3dyb25nX2RlY2xfdHlwZV9zdHIpCisgICAgICA8PCBBdHRyIDw8ICJub24tc3RhdGljIG1lbWJlciBmdW5jdGlvbnMiOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY2hlY2tPU1JldHVybnNOb3RSZXRhaW5lZEFwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CisgIGlmICghRCB8fCAoIWlzYTxGdW5jdGlvbkRlY2w+KEQpICYmICFpc2E8T2JqQ01ldGhvZERlY2w+KEQpICYmICFpc2E8T2JqQ1Byb3BlcnR5RGVjbD4oRCkgJiYgIWlzYTxQYXJtVmFyRGVjbD4oRCkpKSB7CisgICAgUy5EaWFnKEF0dHIuZ2V0TG9jKCksIGRpYWc6Ondhcm5fYXR0cmlidXRlX3dyb25nX2RlY2xfdHlwZV9zdHIpCisgICAgICA8PCBBdHRyIDw8ICJmdW5jdGlvbnMsIE9iamVjdGl2ZS1DIG1ldGhvZHMsIE9iamVjdGl2ZS1DIHByb3BlcnRpZXMsIGFuZCBwYXJhbWV0ZXJzIjsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIG1hdGNoUnVsZXNGb3JPU1JldHVybnNOb3RSZXRhaW5lZChsbHZtOjpTbWFsbFZlY3RvckltcGw8c3RkOjpwYWlyPGF0dHI6OlN1YmplY3RNYXRjaFJ1bGUsIGJvb2w+PiAmTWF0Y2hSdWxlcywgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzKSB7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfZnVuY3Rpb24sIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2QsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19wcm9wZXJ0eSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV92YXJpYWJsZV9pc19wYXJhbWV0ZXIsIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7Cit9CisKK3N0YXRpYyBib29sIGNoZWNrT1NSZXR1cm5zUmV0YWluZWRBcHBlcnRhaW5zVG8oU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0ciwgY29uc3QgRGVjbCAqRCkgeworICBpZiAoIUQgfHwgKCFpc2E8RnVuY3Rpb25EZWNsPihEKSAmJiAhaXNhPE9iakNNZXRob2REZWNsPihEKSAmJiAhaXNhPE9iakNQcm9wZXJ0eURlY2w+KEQpICYmICFpc2E8UGFybVZhckRlY2w+KEQpKSkgeworICAgIFMuRGlhZyhBdHRyLmdldExvYygpLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV93cm9uZ19kZWNsX3R5cGVfc3RyKQorICAgICAgPDwgQXR0ciA8PCAiZnVuY3Rpb25zLCBPYmplY3RpdmUtQyBtZXRob2RzLCBPYmplY3RpdmUtQyBwcm9wZXJ0aWVzLCBhbmQgcGFyYW1ldGVycyI7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBtYXRjaFJ1bGVzRm9yT1NSZXR1cm5zUmV0YWluZWQobGx2bTo6U21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlLCBib29sPj4gJk1hdGNoUnVsZXMsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nT3B0cykgeworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2Z1bmN0aW9uLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfbWV0aG9kLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQykpOworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfcHJvcGVydHksIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfdmFyaWFibGVfaXNfcGFyYW1ldGVyLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOworfQorCitzdGF0aWMgYm9vbCBjaGVja09TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvQXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKKyAgaWYgKCFEIHx8ICghaXNhPFBhcm1WYXJEZWNsPihEKSkpIHsKKyAgICBTLkRpYWcoQXR0ci5nZXRMb2MoKSwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfd3JvbmdfZGVjbF90eXBlX3N0cikKKyAgICAgIDw8IEF0dHIgPDwgInBhcmFtZXRlcnMiOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgbWF0Y2hSdWxlc0Zvck9TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvKGxsdm06OlNtYWxsVmVjdG9ySW1wbDxzdGQ6OnBhaXI8YXR0cjo6U3ViamVjdE1hdGNoUnVsZSwgYm9vbD4+ICZNYXRjaFJ1bGVzLCBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpIHsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV92YXJpYWJsZV9pc19wYXJhbWV0ZXIsIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7Cit9CisKK3N0YXRpYyBib29sIGNoZWNrT1NSZXR1cm5zUmV0YWluZWRPblplcm9BcHBlcnRhaW5zVG8oU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0ciwgY29uc3QgRGVjbCAqRCkgeworICBpZiAoIUQgfHwgKCFpc2E8UGFybVZhckRlY2w+KEQpKSkgeworICAgIFMuRGlhZyhBdHRyLmdldExvYygpLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV93cm9uZ19kZWNsX3R5cGVfc3RyKQorICAgICAgPDwgQXR0ciA8PCAicGFyYW1ldGVycyI7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBtYXRjaFJ1bGVzRm9yT1NSZXR1cm5zUmV0YWluZWRPblplcm8obGx2bTo6U21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlLCBib29sPj4gJk1hdGNoUnVsZXMsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nT3B0cykgeworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX3ZhcmlhYmxlX2lzX3BhcmFtZXRlciwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKK30KKwogc3RhdGljIGJvb2wgY2hlY2tPYmpDQm94YWJsZUFwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CiAgIGlmICghRCB8fCAoIWlzYTxSZWNvcmREZWNsPihEKSkpIHsKICAgICBTLkRpYWcoQXR0ci5nZXRMb2MoKSwgZGlhZzo6ZXJyX2F0dHJpYnV0ZV93cm9uZ19kZWNsX3R5cGVfc3RyKQpAQCAtMTc1NCwyNCArMTg5OCwxOSBAQAogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX3JlY29yZCwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKIH0KIAotc3RhdGljIGJvb2wgaXNPYmpDSW50ZXJmYWNlRGVjbEluaXRNZXRob2QoY29uc3QgRGVjbCAqRCkgewotICBpZiAoY29uc3QgYXV0byAqUyA9IGR5bl9jYXN0PE9iakNNZXRob2REZWNsPihEKSkKLSAgICByZXR1cm4gUy0+Z2V0TWV0aG9kRmFtaWx5KCkgPT0gT01GX2luaXQgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc2E8T2JqQ0ludGVyZmFjZURlY2w+KFMtPmdldERlY2xDb250ZXh0KCkpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzYTxPYmpDQ2F0ZWdvcnlEZWNsPihTLT5nZXREZWNsQ29udGV4dCgpKSAmJgotICAgICAgICAgICAgY2FzdDxPYmpDQ2F0ZWdvcnlEZWNsPihTLT5nZXREZWNsQ29udGV4dCgpKS0+SXNDbGFzc0V4dGVuc2lvbigpKSk7Ci0gIHJldHVybiBmYWxzZTsKLX0KLQogc3RhdGljIGJvb2wgY2hlY2tPYmpDRGVzaWduYXRlZEluaXRpYWxpemVyQXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKLSAgaWYgKCFEIHx8ICghaXNPYmpDSW50ZXJmYWNlRGVjbEluaXRNZXRob2QoRCkpKSB7CisgIGlmICghRCB8fCAoIWlzYTxPYmpDTWV0aG9kRGVjbD4oRCkpKSB7CiAgICAgUy5EaWFnKEF0dHIuZ2V0TG9jKCksIGRpYWc6OmVycl9hdHRyaWJ1dGVfd3JvbmdfZGVjbF90eXBlX3N0cikKLSAgICAgIDw8IEF0dHIgPDwgImluaXQgbWV0aG9kcyBvZiBpbnRlcmZhY2Ugb3IgY2xhc3MgZXh0ZW5zaW9uIGRlY2xhcmF0aW9ucyI7CisgICAgICA8PCBBdHRyIDw8ICJPYmplY3RpdmUtQyBtZXRob2RzIjsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyB2b2lkIG1hdGNoUnVsZXNGb3JPYmpDRGVzaWduYXRlZEluaXRpYWxpemVyKGxsdm06OlNtYWxsVmVjdG9ySW1wbDxzdGQ6OnBhaXI8YXR0cjo6U3ViamVjdE1hdGNoUnVsZSwgYm9vbD4+ICZNYXRjaFJ1bGVzLCBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpIHsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKK30KKwogc3RhdGljIGJvb2wgY2hlY2tPYmpDRXhjZXB0aW9uQXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKICAgaWYgKCFEIHx8ICghaXNhPE9iakNJbnRlcmZhY2VEZWNsPihEKSkpIHsKICAgICBTLkRpYWcoQXR0ci5nZXRMb2MoKSwgZGlhZzo6ZXJyX2F0dHJpYnV0ZV93cm9uZ19kZWNsX3R5cGVfc3RyKQpAQCAtMTc4Miw3ICsxOTIxLDcgQEAKIH0KIAogc3RhdGljIHZvaWQgbWF0Y2hSdWxlc0Zvck9iakNFeGNlcHRpb24obGx2bTo6U21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlLCBib29sPj4gJk1hdGNoUnVsZXMsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nT3B0cykgewotICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfaW50ZXJmYWNlLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQzEpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX2ludGVyZmFjZSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKIH0KIAogc3RhdGljIGJvb2wgY2hlY2tPYmpDRXhwbGljaXRQcm90b2NvbEltcGxBcHBlcnRhaW5zVG8oU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0ciwgY29uc3QgRGVjbCAqRCkgewpAQCAtMTc5NSw3ICsxOTM0LDMxIEBACiB9CiAKIHN0YXRpYyB2b2lkIG1hdGNoUnVsZXNGb3JPYmpDRXhwbGljaXRQcm90b2NvbEltcGwobGx2bTo6U21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlLCBib29sPj4gJk1hdGNoUnVsZXMsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nT3B0cykgewotICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfcHJvdG9jb2wsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDMSkpOworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfcHJvdG9jb2wsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7Cit9CisKK3N0YXRpYyBib29sIGNoZWNrT2JqQ0V4dGVybmFsbHlSZXRhaW5lZEFwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CisgIGlmICghRCB8fCAoIWlzTm9uUGFybVZhcihEKSAmJiAhaXNhPEZ1bmN0aW9uRGVjbD4oRCkgJiYgIWlzYTxCbG9ja0RlY2w+KEQpICYmICFpc2E8T2JqQ01ldGhvZERlY2w+KEQpKSkgeworICAgIFMuRGlhZyhBdHRyLmdldExvYygpLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV93cm9uZ19kZWNsX3R5cGVfc3RyKQorICAgICAgPDwgQXR0ciA8PCAidmFyaWFibGVzLCBmdW5jdGlvbnMsIGJsb2NrcywgYW5kIE9iamVjdGl2ZS1DIG1ldGhvZHMiOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY2hlY2tPYmpDQXV0b1JlZkNvdW50TGFuZ09wdHMoU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0cikgeworICBpZiAoUy5MYW5nT3B0cy5PYmpDQXV0b1JlZkNvdW50KQorICAgIHJldHVybiB0cnVlOworCisgIFMuRGlhZyhBdHRyLmdldExvYygpLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9pZ25vcmVkKSA8PCBBdHRyLmdldE5hbWUoKTsKKyAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBtYXRjaFJ1bGVzRm9yT2JqQ0V4dGVybmFsbHlSZXRhaW5lZChsbHZtOjpTbWFsbFZlY3RvckltcGw8c3RkOjpwYWlyPGF0dHI6OlN1YmplY3RNYXRjaFJ1bGUsIGJvb2w+PiAmTWF0Y2hSdWxlcywgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzKSB7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfdmFyaWFibGVfbm90X2lzX3BhcmFtZXRlciwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9mdW5jdGlvbiwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9ibG9jaywgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLkJsb2NrcykpOworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfbWV0aG9kLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQykpOwogfQogCiBzdGF0aWMgYm9vbCBjaGVja09iakNNZXRob2RGYW1pbHlBcHBlcnRhaW5zVG8oU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0ciwgY29uc3QgRGVjbCAqRCkgewpAQCAtMTgwOCw3ICsxOTcxLDI4IEBACiB9CiAKIHN0YXRpYyB2b2lkIG1hdGNoUnVsZXNGb3JPYmpDTWV0aG9kRmFtaWx5KGxsdm06OlNtYWxsVmVjdG9ySW1wbDxzdGQ6OnBhaXI8YXR0cjo6U3ViamVjdE1hdGNoUnVsZSwgYm9vbD4+ICZNYXRjaFJ1bGVzLCBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpIHsKLSAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2QsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7Cit9CisKK3N0YXRpYyBib29sIGNoZWNrT2JqQ05vbkxhenlDbGFzc0FwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CisgIGlmICghRCB8fCAoIWlzYTxPYmpDSW50ZXJmYWNlRGVjbD4oRCkpKSB7CisgICAgUy5EaWFnKEF0dHIuZ2V0TG9jKCksIGRpYWc6OmVycl9hdHRyaWJ1dGVfd3JvbmdfZGVjbF90eXBlX3N0cikKKyAgICAgIDw8IEF0dHIgPDwgIk9iamVjdGl2ZS1DIGludGVyZmFjZXMiOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY2hlY2tPYmpDTGFuZ09wdHMoU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0cikgeworICBpZiAoUy5MYW5nT3B0cy5PYmpDKQorICAgIHJldHVybiB0cnVlOworCisgIFMuRGlhZyhBdHRyLmdldExvYygpLCBkaWFnOjp3YXJuX2F0dHJpYnV0ZV9pZ25vcmVkKSA8PCBBdHRyLmdldE5hbWUoKTsKKyAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBtYXRjaFJ1bGVzRm9yT2JqQ05vbkxhenlDbGFzcyhsbHZtOjpTbWFsbFZlY3RvckltcGw8c3RkOjpwYWlyPGF0dHI6OlN1YmplY3RNYXRjaFJ1bGUsIGJvb2w+PiAmTWF0Y2hSdWxlcywgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzKSB7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19pbnRlcmZhY2UsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7CiB9CiAKIHN0YXRpYyBib29sIGNoZWNrT2JqQ1ByZWNpc2VMaWZldGltZUFwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CkBAIC0xODM0LDcgKzIwMTgsNyBAQAogfQogCiBzdGF0aWMgdm9pZCBtYXRjaFJ1bGVzRm9yT2JqQ1JlcXVpcmVzUHJvcGVydHlEZWZzKGxsdm06OlNtYWxsVmVjdG9ySW1wbDxzdGQ6OnBhaXI8YXR0cjo6U3ViamVjdE1hdGNoUnVsZSwgYm9vbD4+ICZNYXRjaFJ1bGVzLCBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpIHsKLSAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX2ludGVyZmFjZSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19pbnRlcmZhY2UsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7CiB9CiAKIHN0YXRpYyBib29sIGNoZWNrT2JqQ1JlcXVpcmVzU3VwZXJBcHBlcnRhaW5zVG8oU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0ciwgY29uc3QgRGVjbCAqRCkgewpAQCAtMTg0Nyw3ICsyMDMxLDcgQEAKIH0KIAogc3RhdGljIHZvaWQgbWF0Y2hSdWxlc0Zvck9iakNSZXF1aXJlc1N1cGVyKGxsdm06OlNtYWxsVmVjdG9ySW1wbDxzdGQ6OnBhaXI8YXR0cjo6U3ViamVjdE1hdGNoUnVsZSwgYm9vbD4+ICZNYXRjaFJ1bGVzLCBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpIHsKLSAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2QsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7CiB9CiAKIHN0YXRpYyBib29sIGNoZWNrT2JqQ1JldHVybnNJbm5lclBvaW50ZXJBcHBlcnRhaW5zVG8oU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0ciwgY29uc3QgRGVjbCAqRCkgewpAQCAtMTg2MCw4ICsyMDQ0LDggQEAKIH0KIAogc3RhdGljIHZvaWQgbWF0Y2hSdWxlc0Zvck9iakNSZXR1cm5zSW5uZXJQb2ludGVyKGxsdm06OlNtYWxsVmVjdG9ySW1wbDxzdGQ6OnBhaXI8YXR0cjo6U3ViamVjdE1hdGNoUnVsZSwgYm9vbD4+ICZNYXRjaFJ1bGVzLCBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpIHsKLSAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7Ci0gIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19wcm9wZXJ0eSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2QsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19wcm9wZXJ0eSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKIH0KIAogc3RhdGljIGJvb2wgY2hlY2tPYmpDUm9vdENsYXNzQXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKQEAgLTE4NzQsNyArMjA1OCw3IEBACiB9CiAKIHN0YXRpYyB2b2lkIG1hdGNoUnVsZXNGb3JPYmpDUm9vdENsYXNzKGxsdm06OlNtYWxsVmVjdG9ySW1wbDxzdGQ6OnBhaXI8YXR0cjo6U3ViamVjdE1hdGNoUnVsZSwgYm9vbD4+ICZNYXRjaFJ1bGVzLCBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpIHsKLSAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX2ludGVyZmFjZSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19pbnRlcmZhY2UsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7CiB9CiAKIHN0YXRpYyBib29sIGNoZWNrT2JqQ1J1bnRpbWVOYW1lQXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKQEAgLTE4ODcsOCArMjA3MSw4IEBACiB9CiAKIHN0YXRpYyB2b2lkIG1hdGNoUnVsZXNGb3JPYmpDUnVudGltZU5hbWUobGx2bTo6U21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlLCBib29sPj4gJk1hdGNoUnVsZXMsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nT3B0cykgewotICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfaW50ZXJmYWNlLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQzEpKTsKLSAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX3Byb3RvY29sLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQzEpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX2ludGVyZmFjZSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX3Byb3RvY29sLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQykpOwogfQogCiBzdGF0aWMgYm9vbCBjaGVja09iakNSdW50aW1lVmlzaWJsZUFwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CkBAIC0xOTAxLDcgKzIwODUsNyBAQAogfQogCiBzdGF0aWMgdm9pZCBtYXRjaFJ1bGVzRm9yT2JqQ1J1bnRpbWVWaXNpYmxlKGxsdm06OlNtYWxsVmVjdG9ySW1wbDxzdGQ6OnBhaXI8YXR0cjo6U3ViamVjdE1hdGNoUnVsZSwgYm9vbD4+ICZNYXRjaFJ1bGVzLCBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpIHsKLSAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX2ludGVyZmFjZSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19pbnRlcmZhY2UsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7CiB9CiAKIHN0YXRpYyBib29sIGNoZWNrT2JqQ1N1YmNsYXNzaW5nUmVzdHJpY3RlZEFwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CkBAIC0xOTE0LDcgKzIwOTgsNyBAQAogfQogCiBzdGF0aWMgdm9pZCBtYXRjaFJ1bGVzRm9yT2JqQ1N1YmNsYXNzaW5nUmVzdHJpY3RlZChsbHZtOjpTbWFsbFZlY3RvckltcGw8c3RkOjpwYWlyPGF0dHI6OlN1YmplY3RNYXRjaFJ1bGUsIGJvb2w+PiAmTWF0Y2hSdWxlcywgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzKSB7Ci0gIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19pbnRlcmZhY2UsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDMSkpOworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfaW50ZXJmYWNlLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQykpOwogfQogCiBzdGF0aWMgYm9vbCBjaGVja09wZW5DTEFjY2Vzc0FwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CkBAIC0xOTk5LDcgKzIxODMsNyBAQAogCiBzdGF0aWMgdm9pZCBtYXRjaFJ1bGVzRm9yT3B0aW1pemVOb25lKGxsdm06OlNtYWxsVmVjdG9ySW1wbDxzdGQ6OnBhaXI8YXR0cjo6U3ViamVjdE1hdGNoUnVsZSwgYm9vbD4+ICZNYXRjaFJ1bGVzLCBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpIHsKICAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9mdW5jdGlvbiwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKLSAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2QsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7CiB9CiAKIHN0YXRpYyBib29sIGNoZWNrT3ZlcmxvYWRhYmxlQXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKQEAgLTIzMTcsNyArMjUwMSw3IEBACiB9CiAKIHN0YXRpYyB2b2lkIG1hdGNoUnVsZXNGb3JSZXR1cm5zTm9uTnVsbChsbHZtOjpTbWFsbFZlY3RvckltcGw8c3RkOjpwYWlyPGF0dHI6OlN1YmplY3RNYXRjaFJ1bGUsIGJvb2w+PiAmTWF0Y2hSdWxlcywgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzKSB7Ci0gIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2QsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDMSkpOworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfbWV0aG9kLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQykpOwogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2Z1bmN0aW9uLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwogfQogCkBAIC0yMzc1LDggKzI1NTksOCBAQAogc3RhdGljIHZvaWQgbWF0Y2hSdWxlc0ZvclNlY3Rpb24obGx2bTo6U21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlLCBib29sPj4gJk1hdGNoUnVsZXMsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nT3B0cykgewogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2Z1bmN0aW9uLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX3ZhcmlhYmxlX2lzX2dsb2JhbCwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKLSAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7Ci0gIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19wcm9wZXJ0eSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMxKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2QsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19wcm9wZXJ0eSwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKIH0KIAogc3RhdGljIGJvb2wgY2hlY2tTZXRUeXBlc3RhdGVBcHBlcnRhaW5zVG8oU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0ciwgY29uc3QgRGVjbCAqRCkgewpAQCAtMjQwMSw2ICsyNTg1LDIwIEBACiAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9vbCBjaGVja1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0FwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CisgIGlmICghRCB8fCAoIWlzYTxGdW5jdGlvbkRlY2w+KEQpICYmICFpc2E8T2JqQ01ldGhvZERlY2w+KEQpKSkgeworICAgIFMuRGlhZyhBdHRyLmdldExvYygpLCBkaWFnOjplcnJfYXR0cmlidXRlX3dyb25nX2RlY2xfdHlwZV9zdHIpCisgICAgICA8PCBBdHRyIDw8ICJmdW5jdGlvbnMgYW5kIE9iamVjdGl2ZS1DIG1ldGhvZHMiOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgbWF0Y2hSdWxlc0ZvclNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZyhsbHZtOjpTbWFsbFZlY3RvckltcGw8c3RkOjpwYWlyPGF0dHI6OlN1YmplY3RNYXRjaFJ1bGUsIGJvb2w+PiAmTWF0Y2hSdWxlcywgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzKSB7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfZnVuY3Rpb24sIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2QsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDKSk7Cit9CisKIHN0YXRpYyBib29sIGNoZWNrU3dpZnRDb250ZXh0QXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKICAgaWYgKCFEIHx8ICghaXNhPFBhcm1WYXJEZWNsPihEKSkpIHsKICAgICBTLkRpYWcoQXR0ci5nZXRMb2MoKSwgZGlhZzo6d2Fybl9hdHRyaWJ1dGVfd3JvbmdfZGVjbF90eXBlX3N0cikKQEAgLTI1NDIsNiArMjc0MCwxNSBAQAogICB9CiB9CiAKK3N0YXRpYyBib29sIGNoZWNrVW5pbml0aWFsaXplZEFwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CisgIGlmICghRCB8fCAoIWlzTG9jYWxWYXIoRCkpKSB7CisgICAgUy5EaWFnKEF0dHIuZ2V0TG9jKCksIGRpYWc6Ondhcm5fYXR0cmlidXRlX3dyb25nX2RlY2xfdHlwZV9zdHIpCisgICAgICA8PCBBdHRyIDw8ICJsb2NhbCB2YXJpYWJsZXMiOworICAgIHJldHVybiBmYWxzZTsKKyAgfQorICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIGJvb2wgY2hlY2tVbnVzZWRBcHBlcnRhaW5zVG8oU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0ciwgY29uc3QgRGVjbCAqRCkgewogICBpZiAoIUQgfHwgKCFpc2E8VmFyRGVjbD4oRCkgJiYgIWlzYTxPYmpDSXZhckRlY2w+KEQpICYmICFpc2E8VHlwZURlY2w+KEQpICYmICFpc2E8RW51bURlY2w+KEQpICYmICFpc2E8RW51bUNvbnN0YW50RGVjbD4oRCkgJiYgIWlzYTxMYWJlbERlY2w+KEQpICYmICFpc2E8RmllbGREZWNsPihEKSAmJiAhaXNhPE9iakNNZXRob2REZWNsPihEKSAmJiAhaXNGdW5jdGlvbkxpa2UoRCkpKSB7CiAgICAgUy5EaWFnKEF0dHIuZ2V0TG9jKCksIGRpYWc6Ondhcm5fYXR0cmlidXRlX3dyb25nX2RlY2xfdHlwZV9zdHIpCkBAIC0yNjcwLDcgKzI4NzcsNyBAQAogfQogCiBzdGF0aWMgdm9pZCBtYXRjaFJ1bGVzRm9yV2FyblVudXNlZFJlc3VsdChsbHZtOjpTbWFsbFZlY3RvckltcGw8c3RkOjpwYWlyPGF0dHI6OlN1YmplY3RNYXRjaFJ1bGUsIGJvb2w+PiAmTWF0Y2hSdWxlcywgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzKSB7Ci0gIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2QsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDMSkpOworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfbWV0aG9kLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQykpOwogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2VudW0sIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7CiAgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfcmVjb3JkLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2hhc1R5cGVfZnVuY3Rpb25UeXBlLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwpAQCAtMjcwNSw2ICsyOTEyLDM3IEBACiAgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfZnVuY3Rpb24sIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7CiB9CiAKK3N0YXRpYyBib29sIGNoZWNrV2ViQXNzZW1ibHlJbXBvcnRNb2R1bGVBcHBlcnRhaW5zVG8oU2VtYSAmUywgY29uc3QgUGFyc2VkQXR0ciAmQXR0ciwgY29uc3QgRGVjbCAqRCkgeworICBpZiAoIUQgfHwgKCFpc2E8RnVuY3Rpb25EZWNsPihEKSkpIHsKKyAgICBTLkRpYWcoQXR0ci5nZXRMb2MoKSwgZGlhZzo6ZXJyX2F0dHJpYnV0ZV93cm9uZ19kZWNsX3R5cGVfc3RyKQorICAgICAgPDwgQXR0ciA8PCAiZnVuY3Rpb25zIjsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGlzVGFyZ2V0d2FzbTMyd2FzbTY0KGNvbnN0IFRhcmdldEluZm8gJlRhcmdldCkgeworICBjb25zdCBsbHZtOjpUcmlwbGUgJlQgPSBUYXJnZXQuZ2V0VHJpcGxlKCk7CisgIHJldHVybiB0cnVlICYmIChULmdldEFyY2goKSA9PSBsbHZtOjpUcmlwbGU6Ondhc20zMiB8fCBULmdldEFyY2goKSA9PSBsbHZtOjpUcmlwbGU6Ondhc202NCk7Cit9CisKK3N0YXRpYyB2b2lkIG1hdGNoUnVsZXNGb3JXZWJBc3NlbWJseUltcG9ydE1vZHVsZShsbHZtOjpTbWFsbFZlY3RvckltcGw8c3RkOjpwYWlyPGF0dHI6OlN1YmplY3RNYXRjaFJ1bGUsIGJvb2w+PiAmTWF0Y2hSdWxlcywgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzKSB7CisgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfZnVuY3Rpb24sIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7Cit9CisKK3N0YXRpYyBib29sIGNoZWNrV2ViQXNzZW1ibHlJbXBvcnROYW1lQXBwZXJ0YWluc1RvKFNlbWEgJlMsIGNvbnN0IFBhcnNlZEF0dHIgJkF0dHIsIGNvbnN0IERlY2wgKkQpIHsKKyAgaWYgKCFEIHx8ICghaXNhPEZ1bmN0aW9uRGVjbD4oRCkpKSB7CisgICAgUy5EaWFnKEF0dHIuZ2V0TG9jKCksIGRpYWc6OmVycl9hdHRyaWJ1dGVfd3JvbmdfZGVjbF90eXBlX3N0cikKKyAgICAgIDw8IEF0dHIgPDwgImZ1bmN0aW9ucyI7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBtYXRjaFJ1bGVzRm9yV2ViQXNzZW1ibHlJbXBvcnROYW1lKGxsdm06OlNtYWxsVmVjdG9ySW1wbDxzdGQ6OnBhaXI8YXR0cjo6U3ViamVjdE1hdGNoUnVsZSwgYm9vbD4+ICZNYXRjaFJ1bGVzLCBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpIHsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9mdW5jdGlvbiwgLypJc1N1cHBvcnRlZD0qL3RydWUpKTsKK30KKwogc3RhdGljIGJvb2wgY2hlY2tXb3JrR3JvdXBTaXplSGludEFwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CiAgIGlmICghRCB8fCAoIWlzYTxGdW5jdGlvbkRlY2w+KEQpKSkgewogICAgIFMuRGlhZyhBdHRyLmdldExvYygpLCBkaWFnOjplcnJfYXR0cmlidXRlX3dyb25nX2RlY2xfdHlwZV9zdHIpCkBAIC0yNzUxLDcgKzI5ODksNyBAQAogCiBzdGF0aWMgdm9pZCBtYXRjaFJ1bGVzRm9yWFJheUluc3RydW1lbnQobGx2bTo6U21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlLCBib29sPj4gJk1hdGNoUnVsZXMsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nT3B0cykgewogICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX2Z1bmN0aW9uLCAvKklzU3VwcG9ydGVkPSovdHJ1ZSkpOwotICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfbWV0aG9kLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQzEpKTsKKyAgTWF0Y2hSdWxlcy5wdXNoX2JhY2soc3RkOjptYWtlX3BhaXIoYXR0cjo6U3ViamVjdE1hdGNoUnVsZV9vYmpjX21ldGhvZCwgLypJc1N1cHBvcnRlZD0qL0xhbmdPcHRzLk9iakMpKTsKIH0KIAogc3RhdGljIGJvb2wgY2hlY2tYUmF5TG9nQXJnc0FwcGVydGFpbnNUbyhTZW1hICZTLCBjb25zdCBQYXJzZWRBdHRyICZBdHRyLCBjb25zdCBEZWNsICpEKSB7CkBAIC0yNzY1LDEwICszMDAzLDExIEBACiAKIHN0YXRpYyB2b2lkIG1hdGNoUnVsZXNGb3JYUmF5TG9nQXJncyhsbHZtOjpTbWFsbFZlY3RvckltcGw8c3RkOjpwYWlyPGF0dHI6OlN1YmplY3RNYXRjaFJ1bGUsIGJvb2w+PiAmTWF0Y2hSdWxlcywgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzKSB7CiAgIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfZnVuY3Rpb24sIC8qSXNTdXBwb3J0ZWQ9Ki90cnVlKSk7Ci0gIE1hdGNoUnVsZXMucHVzaF9iYWNrKHN0ZDo6bWFrZV9wYWlyKGF0dHI6OlN1YmplY3RNYXRjaFJ1bGVfb2JqY19tZXRob2QsIC8qSXNTdXBwb3J0ZWQ9Ki9MYW5nT3B0cy5PYmpDMSkpOworICBNYXRjaFJ1bGVzLnB1c2hfYmFjayhzdGQ6Om1ha2VfcGFpcihhdHRyOjpTdWJqZWN0TWF0Y2hSdWxlX29iamNfbWV0aG9kLCAvKklzU3VwcG9ydGVkPSovTGFuZ09wdHMuT2JqQykpOwogfQogCiBzdGF0aWMgY29uc3QgUGFyc2VkQXR0ckluZm8gQXR0ckluZm9NYXBbUGFyc2VkQXR0cjo6VW5rbm93bkF0dHJpYnV0ZSArIDFdID0geworICB7IDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIGRlZmF1bHRBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfQUFyY2g2NFZlY3RvclBjcwogICB7IDIsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrQU1ER1BVRmxhdFdvcmtHcm91cFNpemVBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbWF0Y2hSdWxlc0ZvckFNREdQVUZsYXRXb3JrR3JvdXBTaXplIH0sICAvLyBBVF9BTURHUFVGbGF0V29ya0dyb3VwU2l6ZQogICB7IDEsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrQU1ER1BVTnVtU0dQUkFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yQU1ER1BVTnVtU0dQUiB9LCAgLy8gQVRfQU1ER1BVTnVtU0dQUgogICB7IDEsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrQU1ER1BVTnVtVkdQUkFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yQU1ER1BVTnVtVkdQUiB9LCAgLy8gQVRfQU1ER1BVTnVtVkdQUgpAQCAtMjc5OCw3ICszMDM3LDcgQEAKICAgeyAwLCAxNSwgMCwgMCwgMCwgMCwgMCwgMCwgY2hlY2tBc3NlcnRFeGNsdXNpdmVMb2NrQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG51bGxwdHIgfSwgIC8vIEFUX0Fzc2VydEV4Y2x1c2l2ZUxvY2sKICAgeyAwLCAxNSwgMCwgMCwgMCwgMCwgMCwgMCwgY2hlY2tBc3NlcnRTaGFyZWRMb2NrQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG51bGxwdHIgfSwgIC8vIEFUX0Fzc2VydFNoYXJlZExvY2sKICAgeyAxLCAxLCAwLCAwLCAwLCAwLCAxLCAxLCBjaGVja0Fzc3VtZUFsaWduZWRBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbWF0Y2hSdWxlc0ZvckFzc3VtZUFsaWduZWQgfSwgIC8vIEFUX0Fzc3VtZUFsaWduZWQKLSAgeyA4LCAwLCAxLCAwLCAwLCAwLCAwLCAxLCBjaGVja0F2YWlsYWJpbGl0eUFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yQXZhaWxhYmlsaXR5IH0sICAvLyBBVF9BdmFpbGFiaWxpdHkKKyAgeyA5LCAwLCAxLCAwLCAwLCAwLCAwLCAxLCBjaGVja0F2YWlsYWJpbGl0eUFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yQXZhaWxhYmlsaXR5IH0sICAvLyBBVF9BdmFpbGFiaWxpdHkKICAgeyAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBkZWZhdWx0QXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG51bGxwdHIgfSwgIC8vIEFUX0Jsb2NrcwogICB7IDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIGRlZmF1bHRBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfQ0RlY2wKICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja0NGQXVkaXRlZFRyYW5zZmVyQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JDRkF1ZGl0ZWRUcmFuc2ZlciB9LCAgLy8gQVRfQ0ZBdWRpdGVkVHJhbnNmZXIKQEAgLTI4MTcsNiArMzA1Niw3IEBACiAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgY2hlY2tDVURBU2hhcmVkQXBwZXJ0YWluc1RvLCBjaGVja0NVREFMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JDVURBU2hhcmVkIH0sICAvLyBBVF9DVURBU2hhcmVkCiAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgY2hlY2tDWFgxMU5vUmV0dXJuQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JDWFgxMU5vUmV0dXJuIH0sICAvLyBBVF9DWFgxMU5vUmV0dXJuCiAgIHsgMCwgMTUsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrQ2FsbGFibGVXaGVuQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JDYWxsYWJsZVdoZW4gfSwgIC8vIEFUX0NhbGxhYmxlV2hlbgorICB7IDAsIDE1LCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja0NhbGxiYWNrQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JDYWxsYmFjayB9LCAgLy8gQVRfQ2FsbGJhY2sKICAgeyAxLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja0NhcGFiaWxpdHlBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBDYXBhYmlsaXR5QXR0clNwZWxsaW5nTWFwLCBtYXRjaFJ1bGVzRm9yQ2FwYWJpbGl0eSB9LCAgLy8gQVRfQ2FwYWJpbGl0eQogICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrQ2Fycmllc0RlcGVuZGVuY3lBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbWF0Y2hSdWxlc0ZvckNhcnJpZXNEZXBlbmRlbmN5IH0sICAvLyBBVF9DYXJyaWVzRGVwZW5kZW5jeQogICB7IDEsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIGNoZWNrQ2xlYW51cEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBudWxscHRyIH0sICAvLyBBVF9DbGVhbnVwCkBAIC0yODMwLDcgKzMwNzAsOSBAQAogICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrQ29uc3VtYWJsZVNldE9uUmVhZEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yQ29uc3VtYWJsZVNldE9uUmVhZCB9LCAgLy8gQVRfQ29uc3VtYWJsZVNldE9uUmVhZAogICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrQ29udmVyZ2VudEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yQ29udmVyZ2VudCB9LCAgLy8gQVRfQ29udmVyZ2VudAogICB7IDAsIDAsIDAsIDEsIDAsIDAsIDEsIDEsIGNoZWNrRExMRXhwb3J0QXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgaXNUYXJnZXR4ODZ4ODZfNjRhcm10aHVtYmFhcmNoNjRXaW4zMiwgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JETExFeHBvcnQgfSwgIC8vIEFUX0RMTEV4cG9ydAorICB7IDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIGNoZWNrRExMRXhwb3J0U3RhdGljTG9jYWxBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBpc1RhcmdldHg4Nng4Nl82NGFybXRodW1iYWFyY2g2NFdpbjMyLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfRExMRXhwb3J0U3RhdGljTG9jYWwKICAgeyAwLCAwLCAwLCAxLCAwLCAwLCAxLCAxLCBjaGVja0RMTEltcG9ydEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGlzVGFyZ2V0eDg2eDg2XzY0YXJtdGh1bWJhYXJjaDY0V2luMzIsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yRExMSW1wb3J0IH0sICAvLyBBVF9ETExJbXBvcnQKKyAgeyAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCBjaGVja0RMTEltcG9ydFN0YXRpY0xvY2FsQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgaXNUYXJnZXR4ODZ4ODZfNjRhcm10aHVtYmFhcmNoNjRXaW4zMiwgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG51bGxwdHIgfSwgIC8vIEFUX0RMTEltcG9ydFN0YXRpY0xvY2FsCiAgIHsgMCwgMiwgMCwgMCwgMCwgMCwgMSwgMCwgZGVmYXVsdEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBudWxscHRyIH0sICAvLyBBVF9EZXByZWNhdGVkCiAgIHsgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMSwgY2hlY2tEZXN0cnVjdG9yQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JEZXN0cnVjdG9yIH0sICAvLyBBVF9EZXN0cnVjdG9yCiAgIHsgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgY2hlY2tEaWFnbm9zZUlmQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG51bGxwdHIgfSwgIC8vIEFUX0RpYWdub3NlSWYKQEAgLTI4NDgsNiArMzA5MCw3IEBACiAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgY2hlY2tGbGF0dGVuQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JGbGF0dGVuIH0sICAvLyBBVF9GbGF0dGVuCiAgIHsgMywgMCwgMCwgMCwgMCwgMCwgMSwgMCwgY2hlY2tGb3JtYXRBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfRm9ybWF0CiAgIHsgMSwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgY2hlY2tGb3JtYXRBcmdBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfRm9ybWF0QXJnCisgIHsgMiwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgY2hlY2tGb3J0aWZ5U3RkTGliQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JGb3J0aWZ5U3RkTGliIH0sICAvLyBBVF9Gb3J0aWZ5U3RkTGliCiAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgY2hlY2tHTlVJbmxpbmVBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbWF0Y2hSdWxlc0ZvckdOVUlubGluZSB9LCAgLy8gQVRfR05VSW5saW5lCiAgIHsgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgY2hlY2tHdWFyZGVkQnlBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfR3VhcmRlZEJ5CiAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgY2hlY2tHdWFyZGVkVmFyQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG51bGxwdHIgfSwgIC8vIEFUX0d1YXJkZWRWYXIKQEAgLTI4ODksNiArMzEzMiw3IEBACiAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgY2hlY2tOb0FsaWFzQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG51bGxwdHIgfSwgIC8vIEFUX05vQWxpYXMKICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCBjaGVja05vQ29tbW9uQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JOb0NvbW1vbiB9LCAgLy8gQVRfTm9Db21tb24KICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCBjaGVja05vRGVidWdBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbWF0Y2hSdWxlc0Zvck5vRGVidWcgfSwgIC8vIEFUX05vRGVidWcKKyAgeyAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCBkZWZhdWx0QXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG51bGxwdHIgfSwgIC8vIEFUX05vRGVyZWYKICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja05vRGVzdHJveUFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yTm9EZXN0cm95IH0sICAvLyBBVF9Ob0Rlc3Ryb3kKICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja05vRHVwbGljYXRlQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JOb0R1cGxpY2F0ZSB9LCAgLy8gQVRfTm9EdXBsaWNhdGUKICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja05vRXNjYXBlQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JOb0VzY2FwZSB9LCAgLy8gQVRfTm9Fc2NhcGUKQEAgLTI4OTksMjUgKzMxNDMsMzQgQEAKICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCBkZWZhdWx0QXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG51bGxwdHIgfSwgIC8vIEFUX05vUmV0dXJuCiAgIHsgMCwgMTUsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrTm9TYW5pdGl6ZUFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yTm9TYW5pdGl6ZSB9LCAgLy8gQVRfTm9TYW5pdGl6ZQogICB7IDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIGNoZWNrTm9TYW5pdGl6ZVNwZWNpZmljQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JOb1Nhbml0aXplU3BlY2lmaWMgfSwgIC8vIEFUX05vU2FuaXRpemVTcGVjaWZpYworICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrTm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbWF0Y2hSdWxlc0Zvck5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nIH0sICAvLyBBVF9Ob1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZwogICB7IDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIGNoZWNrTm9TcGxpdFN0YWNrQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JOb1NwbGl0U3RhY2sgfSwgIC8vIEFUX05vU3BsaXRTdGFjawogICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrTm9TdGFja1Byb3RlY3RvckFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yTm9TdGFja1Byb3RlY3RvciB9LCAgLy8gQVRfTm9TdGFja1Byb3RlY3RvcgogICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrTm9UaHJlYWRTYWZldHlBbmFseXNpc0FwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yTm9UaHJlYWRTYWZldHlBbmFseXNpcyB9LCAgLy8gQVRfTm9UaHJlYWRTYWZldHlBbmFseXNpcwogICB7IDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIGNoZWNrTm9UaHJvd0FwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yTm9UaHJvdyB9LCAgLy8gQVRfTm9UaHJvdwogICB7IDAsIDE1LCAwLCAwLCAwLCAwLCAxLCAwLCBjaGVja05vbk51bGxBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfTm9uTnVsbAogICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrTm90VGFpbENhbGxlZEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yTm90VGFpbENhbGxlZCB9LCAgLy8gQVRfTm90VGFpbENhbGxlZAorICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrT1NDb25zdW1lZEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yT1NDb25zdW1lZCB9LCAgLy8gQVRfT1NDb25zdW1lZAorICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIGNoZWNrT1NDb25zdW1lc1RoaXNBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfT1NDb25zdW1lc1RoaXMKKyAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja09TUmV0dXJuc05vdFJldGFpbmVkQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JPU1JldHVybnNOb3RSZXRhaW5lZCB9LCAgLy8gQVRfT1NSZXR1cm5zTm90UmV0YWluZWQKKyAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja09TUmV0dXJuc1JldGFpbmVkQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JPU1JldHVybnNSZXRhaW5lZCB9LCAgLy8gQVRfT1NSZXR1cm5zUmV0YWluZWQKKyAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja09TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JPU1JldHVybnNSZXRhaW5lZE9uTm9uWmVybyB9LCAgLy8gQVRfT1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm8KKyAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja09TUmV0dXJuc1JldGFpbmVkT25aZXJvQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JPU1JldHVybnNSZXRhaW5lZE9uWmVybyB9LCAgLy8gQVRfT1NSZXR1cm5zUmV0YWluZWRPblplcm8KICAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja09iakNCb3hhYmxlQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JPYmpDQm94YWJsZSB9LCAgLy8gQVRfT2JqQ0JveGFibGUKICAgeyAxLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja09iakNCcmlkZ2VBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbWF0Y2hSdWxlc0Zvck9iakNCcmlkZ2UgfSwgIC8vIEFUX09iakNCcmlkZ2UKICAgeyAxLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja09iakNCcmlkZ2VNdXRhYmxlQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JPYmpDQnJpZGdlTXV0YWJsZSB9LCAgLy8gQVRfT2JqQ0JyaWRnZU11dGFibGUKICAgeyAzLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCBjaGVja09iakNCcmlkZ2VSZWxhdGVkQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JPYmpDQnJpZGdlUmVsYXRlZCB9LCAgLy8gQVRfT2JqQ0JyaWRnZVJlbGF0ZWQKLSAgeyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBjaGVja09iakNEZXNpZ25hdGVkSW5pdGlhbGl6ZXJBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfT2JqQ0Rlc2lnbmF0ZWRJbml0aWFsaXplcgorICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrT2JqQ0Rlc2lnbmF0ZWRJbml0aWFsaXplckFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yT2JqQ0Rlc2lnbmF0ZWRJbml0aWFsaXplciB9LCAgLy8gQVRfT2JqQ0Rlc2lnbmF0ZWRJbml0aWFsaXplcgogICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrT2JqQ0V4Y2VwdGlvbkFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yT2JqQ0V4Y2VwdGlvbiB9LCAgLy8gQVRfT2JqQ0V4Y2VwdGlvbgogICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrT2JqQ0V4cGxpY2l0UHJvdG9jb2xJbXBsQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JPYmpDRXhwbGljaXRQcm90b2NvbEltcGwgfSwgIC8vIEFUX09iakNFeHBsaWNpdFByb3RvY29sSW1wbAorICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrT2JqQ0V4dGVybmFsbHlSZXRhaW5lZEFwcGVydGFpbnNUbywgY2hlY2tPYmpDQXV0b1JlZkNvdW50TGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yT2JqQ0V4dGVybmFsbHlSZXRhaW5lZCB9LCAgLy8gQVRfT2JqQ0V4dGVybmFsbHlSZXRhaW5lZAogICB7IDEsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIGRlZmF1bHRBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfT2JqQ0dDCiAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZGVmYXVsdEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBudWxscHRyIH0sICAvLyBBVF9PYmpDSW5kZXBlbmRlbnRDbGFzcwogICB7IDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIGRlZmF1bHRBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfT2JqQ0luZXJ0VW5zYWZlVW5yZXRhaW5lZAogICB7IDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIGRlZmF1bHRBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfT2JqQ0tpbmRPZgogICB7IDEsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrT2JqQ01ldGhvZEZhbWlseUFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yT2JqQ01ldGhvZEZhbWlseSB9LCAgLy8gQVRfT2JqQ01ldGhvZEZhbWlseQogICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIGRlZmF1bHRBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfT2JqQ05TT2JqZWN0CisgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgY2hlY2tPYmpDTm9uTGF6eUNsYXNzQXBwZXJ0YWluc1RvLCBjaGVja09iakNMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JPYmpDTm9uTGF6eUNsYXNzIH0sICAvLyBBVF9PYmpDTm9uTGF6eUNsYXNzCiAgIHsgMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgZGVmYXVsdEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBudWxscHRyIH0sICAvLyBBVF9PYmpDT3duZXJzaGlwCiAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgY2hlY2tPYmpDUHJlY2lzZUxpZmV0aW1lQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JPYmpDUHJlY2lzZUxpZmV0aW1lIH0sICAvLyBBVF9PYmpDUHJlY2lzZUxpZmV0aW1lCiAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgY2hlY2tPYmpDUmVxdWlyZXNQcm9wZXJ0eURlZnNBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbWF0Y2hSdWxlc0Zvck9iakNSZXF1aXJlc1Byb3BlcnR5RGVmcyB9LCAgLy8gQVRfT2JqQ1JlcXVpcmVzUHJvcGVydHlEZWZzCkBAIC0yOTc1LDYgKzMyMjgsNyBAQAogICB7IDAsIDIsIDAsIDAsIDAsIDAsIDEsIDAsIGRlZmF1bHRBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfU2VudGluZWwKICAgeyAxLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja1NldFR5cGVzdGF0ZUFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yU2V0VHlwZXN0YXRlIH0sICAvLyBBVF9TZXRUeXBlc3RhdGUKICAgeyAxLCAxNSwgMCwgMCwgMCwgMCwgMCwgMCwgY2hlY2tTaGFyZWRUcnlsb2NrRnVuY3Rpb25BcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfU2hhcmVkVHJ5bG9ja0Z1bmN0aW9uCisgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgY2hlY2tTcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbWF0Y2hSdWxlc0ZvclNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZyB9LCAgLy8gQVRfU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nCiAgIHsgMCwgMCwgMCwgMCwgMSwgMCwgMSwgMCwgZGVmYXVsdEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBudWxscHRyIH0sICAvLyBBVF9TdGRDYWxsCiAgIHsgMCwgMTUsIDAsIDAsIDAsIDEsIDAsIDAsIGRlZmF1bHRBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbnVsbHB0ciB9LCAgLy8gQVRfU3VwcHJlc3MKICAgeyAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCBkZWZhdWx0QXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG51bGxwdHIgfSwgIC8vIEFUX1N3aWZ0Q2FsbApAQCAtMjk5Nyw2ICszMjUxLDcgQEAKICAgeyAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBkZWZhdWx0QXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG51bGxwdHIgfSwgIC8vIEFUX1R5cGVWaXNpYmlsaXR5CiAgIHsgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgZGVmYXVsdEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBudWxscHRyIH0sICAvLyBBVF9VUHRyCiAgIHsgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgZGVmYXVsdEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBudWxscHRyIH0sICAvLyBBVF9VbmF2YWlsYWJsZQorICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIGNoZWNrVW5pbml0aWFsaXplZEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBudWxscHRyIH0sICAvLyBBVF9VbmluaXRpYWxpemVkCiAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgY2hlY2tVbnVzZWRBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBVbnVzZWRBdHRyU3BlbGxpbmdNYXAsIG51bGxwdHIgfSwgIC8vIEFUX1VudXNlZAogICB7IDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIGNoZWNrVXNlZEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBudWxscHRyIH0sICAvLyBBVF9Vc2VkCiAgIHsgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgY2hlY2tVdWlkQXBwZXJ0YWluc1RvLCBjaGVja01pY3Jvc29mdEV4dEJvcmxhbmRMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG51bGxwdHIgfSwgIC8vIEFUX1V1aWQKQEAgLTMwMTAsNiArMzI2NSw4IEBACiAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgY2hlY2tXZWFrQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JXZWFrIH0sICAvLyBBVF9XZWFrCiAgIHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZGVmYXVsdEFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGRlZmF1bHRUYXJnZXRSZXF1aXJlbWVudHMsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBudWxscHRyIH0sICAvLyBBVF9XZWFrSW1wb3J0CiAgIHsgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMSwgY2hlY2tXZWFrUmVmQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JXZWFrUmVmIH0sICAvLyBBVF9XZWFrUmVmCisgIHsgMSwgMCwgMCwgMSwgMCwgMCwgMCwgMSwgY2hlY2tXZWJBc3NlbWJseUltcG9ydE1vZHVsZUFwcGVydGFpbnNUbywgZGVmYXVsdERpYWdub3NlTGFuZ09wdHMsIGlzVGFyZ2V0d2FzbTMyd2FzbTY0LCBkZWZhdWx0U3BlbGxpbmdJbmRleFRvU2VtYW50aWNTcGVsbGluZywgbWF0Y2hSdWxlc0ZvcldlYkFzc2VtYmx5SW1wb3J0TW9kdWxlIH0sICAvLyBBVF9XZWJBc3NlbWJseUltcG9ydE1vZHVsZQorICB7IDEsIDAsIDAsIDEsIDAsIDAsIDAsIDEsIGNoZWNrV2ViQXNzZW1ibHlJbXBvcnROYW1lQXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgaXNUYXJnZXR3YXNtMzJ3YXNtNjQsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBtYXRjaFJ1bGVzRm9yV2ViQXNzZW1ibHlJbXBvcnROYW1lIH0sICAvLyBBVF9XZWJBc3NlbWJseUltcG9ydE5hbWUKICAgeyAzLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCBjaGVja1dvcmtHcm91cFNpemVIaW50QXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgZGVmYXVsdFRhcmdldFJlcXVpcmVtZW50cywgZGVmYXVsdFNwZWxsaW5nSW5kZXhUb1NlbWFudGljU3BlbGxpbmcsIG1hdGNoUnVsZXNGb3JXb3JrR3JvdXBTaXplSGludCB9LCAgLy8gQVRfV29ya0dyb3VwU2l6ZUhpbnQKICAgeyAwLCAwLCAwLCAxLCAwLCAwLCAxLCAwLCBkZWZhdWx0QXBwZXJ0YWluc1RvLCBkZWZhdWx0RGlhZ25vc2VMYW5nT3B0cywgaXNUYXJnZXR4ODZ4ODZfNjQsIGRlZmF1bHRTcGVsbGluZ0luZGV4VG9TZW1hbnRpY1NwZWxsaW5nLCBudWxscHRyIH0sICAvLyBBVF9YODZGb3JjZUFsaWduQXJnUG9pbnRlcgogICB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIGNoZWNrWFJheUluc3RydW1lbnRBcHBlcnRhaW5zVG8sIGRlZmF1bHREaWFnbm9zZUxhbmdPcHRzLCBkZWZhdWx0VGFyZ2V0UmVxdWlyZW1lbnRzLCBYUmF5SW5zdHJ1bWVudEF0dHJTcGVsbGluZ01hcCwgbWF0Y2hSdWxlc0ZvclhSYXlJbnN0cnVtZW50IH0sICAvLyBBVF9YUmF5SW5zdHJ1bWVudApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9BdHRyUGFyc2VkQXR0cktpbmRzLmluYyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvQXR0clBhcnNlZEF0dHJLaW5kcy5pbmMKaW5kZXggOTk5MDIyMi4uOWVkMDAxMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9BdHRyUGFyc2VkQXR0cktpbmRzLmluYworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0F0dHJQYXJzZWRBdHRyS2luZHMuaW5jCkBAIC0xODEsNyArMTgxLDcgQEAKICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9VbnVzZWQ7CSAvLyAidW51c2VkIgogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSA3OgkgLy8gMTggc3RyaW5ncyB0byBtYXRjaC4KKyAgY2FzZSA3OgkgLy8gMTkgc3RyaW5ncyB0byBtYXRjaC4KICAgICBzd2l0Y2ggKE5hbWVbMF0pIHsKICAgICBkZWZhdWx0OiBicmVhazsKICAgICBjYXNlICdfJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgpAQCAtMjE3LDE2ICsyMTcsMjcgQEAKICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMSwgImluc2l6ZSIsIDYpICE9IDApCiAgICAgICAgIGJyZWFrOwogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX01pblNpemU7CSAvLyAibWluc2l6ZSIKLSAgICBjYXNlICduJzoJIC8vIDQgc3RyaW5ncyB0byBtYXRjaC4KKyAgICBjYXNlICduJzoJIC8vIDUgc3RyaW5ncyB0byBtYXRjaC4KICAgICAgIHN3aXRjaCAoTmFtZVsxXSkgewogICAgICAgZGVmYXVsdDogYnJlYWs7Ci0gICAgICBjYXNlICdvJzoJIC8vIDMgc3RyaW5ncyB0byBtYXRjaC4KKyAgICAgIGNhc2UgJ28nOgkgLy8gNCBzdHJpbmdzIHRvIG1hdGNoLgogICAgICAgICBzd2l0Y2ggKE5hbWVbMl0pIHsKICAgICAgICAgZGVmYXVsdDogYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2QnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCi0gICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSszLCAiZWJ1ZyIsIDQpICE9IDApCisgICAgICAgIGNhc2UgJ2QnOgkgLy8gMiBzdHJpbmdzIHRvIG1hdGNoLgorICAgICAgICAgIGlmIChOYW1lWzNdICE9ICdlJykKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9Ob0RlYnVnOwkgLy8gIm5vZGVidWciCisgICAgICAgICAgc3dpdGNoIChOYW1lWzRdKSB7CisgICAgICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICAgICAgY2FzZSAnYic6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrNSwgInVnIiwgMikgIT0gMCkKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfTm9EZWJ1ZzsJIC8vICJub2RlYnVnIgorICAgICAgICAgIGNhc2UgJ3InOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzUsICJlZiIsIDIpICE9IDApCisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX05vRGVyZWY7CSAvLyAibm9kZXJlZiIKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ24nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSszLCAibnVsbCIsIDQpICE9IDApCiAgICAgICAgICAgICBicmVhazsKQEAgLTI5MCw3ICszMDEsNyBAQAogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1dlYWtSZWY7CSAvLyAid2Vha3JlZiIKICAgICB9CiAgICAgYnJlYWs7Ci0gIGNhc2UgODoJIC8vIDE1IHN0cmluZ3MgdG8gbWF0Y2guCisgIGNhc2UgODoJIC8vIDE2IHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgc3dpdGNoIChOYW1lWzBdKSB7CiAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgY2FzZSAnTic6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KQEAgLTMwMSwxMCArMzEyLDE5IEBACiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJubm90YXRlIiwgNykgIT0gMCkKICAgICAgICAgYnJlYWs7CiAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfQW5ub3RhdGU7CSAvLyAiYW5ub3RhdGUiCi0gICAgY2FzZSAnYyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KLSAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMSwgIm9uc3RhbnQiLCA3KSAhPSAwKQotICAgICAgICBicmVhazsKLSAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9DVURBQ29uc3RhbnQ7CSAvLyAiY29uc3RhbnQiCisgICAgY2FzZSAnYyc6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCisgICAgICBzd2l0Y2ggKE5hbWVbMV0pIHsKKyAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgY2FzZSAnYSc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsyLCAibGxiYWNrIiwgNikgIT0gMCkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0NhbGxiYWNrOwkgLy8gImNhbGxiYWNrIgorICAgICAgY2FzZSAnbyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsyLCAibnN0YW50IiwgNikgIT0gMCkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0NVREFDb25zdGFudDsJIC8vICJjb25zdGFudCIKKyAgICAgIH0KKyAgICAgIGJyZWFrOwogICAgIGNhc2UgJ2YnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJhc3RjYWxsIiwgNykgIT0gMCkKICAgICAgICAgYnJlYWs7CkBAIC01NTQsNyArNTc0LDcgQEAKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSAxMToJIC8vIDE2IHN0cmluZ3MgdG8gbWF0Y2guCisgIGNhc2UgMTE6CSAvLyAxOCBzdHJpbmdzIHRvIG1hdGNoLgogICAgIHN3aXRjaCAoTmFtZVswXSkgewogICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgIGNhc2UgJ2EnOgkgLy8gMiBzdHJpbmdzIHRvIG1hdGNoLgpAQCAtNTkzLDYgKzYxMywxMCBAQAogICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxLCAidWFyZGVkX3ZhciIsIDEwKSAhPSAwKQogICAgICAgICBicmVhazsKICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9HdWFyZGVkVmFyOwkgLy8gImd1YXJkZWRfdmFyIgorICAgIGNhc2UgJ2knOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJtcG9ydF9uYW1lIiwgMTApICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1dlYkFzc2VtYmx5SW1wb3J0TmFtZTsJIC8vICJpbXBvcnRfbmFtZSIKICAgICBjYXNlICduJzoJIC8vIDQgc3RyaW5ncyB0byBtYXRjaC4KICAgICAgIHN3aXRjaCAoTmFtZVsxXSkgewogICAgICAgZGVmYXVsdDogYnJlYWs7CkBAIC02MTksMTAgKzY0MywxOSBAQAogICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfTlNDb25zdW1lZDsJIC8vICJuc19jb25zdW1lZCIKICAgICAgIH0KICAgICAgIGJyZWFrOwotICAgIGNhc2UgJ28nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCi0gICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJiamNfYnJpZGdlIiwgMTApICE9IDApCi0gICAgICAgIGJyZWFrOwotICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09iakNCcmlkZ2U7CSAvLyAib2JqY19icmlkZ2UiCisgICAgY2FzZSAnbyc6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCisgICAgICBzd2l0Y2ggKE5hbWVbMV0pIHsKKyAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgY2FzZSAnYic6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsyLCAiamNfYnJpZGdlIiwgOSkgIT0gMCkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09iakNCcmlkZ2U7CSAvLyAib2JqY19icmlkZ2UiCisgICAgICBjYXNlICdzJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzIsICJfY29uc3VtZWQiLCA5KSAhPSAwKQorICAgICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT1NDb25zdW1lZDsJIC8vICJvc19jb25zdW1lZCIKKyAgICAgIH0KKyAgICAgIGJyZWFrOwogICAgIGNhc2UgJ3QnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJyaXZpYWxfYWJpIiwgMTApICE9IDApCiAgICAgICAgIGJyZWFrOwpAQCAtNjkxLDcgKzcyNCw3IEBACiAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfUHJlc2VydmVBbGw7CSAvLyAicHJlc2VydmVfYWxsIgogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSAxMzoJIC8vIDE1IHN0cmluZ3MgdG8gbWF0Y2guCisgIGNhc2UgMTM6CSAvLyAxNyBzdHJpbmdzIHRvIG1hdGNoLgogICAgIHN3aXRjaCAoTmFtZVswXSkgewogICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgIGNhc2UgJ2EnOgkgLy8gMiBzdHJpbmdzIHRvIG1hdGNoLgpAQCAtNzExLDEwICs3NDQsMTkgQEAKICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMSwgImFsbGFibGVfd2hlbiIsIDEyKSAhPSAwKQogICAgICAgICBicmVhazsKICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9DYWxsYWJsZVdoZW47CSAvLyAiY2FsbGFibGVfd2hlbiIKLSAgICBjYXNlICdpJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgotICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxLCAibml0X3ByaW9yaXR5IiwgMTIpICE9IDApCi0gICAgICAgIGJyZWFrOwotICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0luaXRQcmlvcml0eTsJIC8vICJpbml0X3ByaW9yaXR5IgorICAgIGNhc2UgJ2knOgkgLy8gMiBzdHJpbmdzIHRvIG1hdGNoLgorICAgICAgc3dpdGNoIChOYW1lWzFdKSB7CisgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgIGNhc2UgJ20nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMiwgInBvcnRfbW9kdWxlIiwgMTEpICE9IDApCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9XZWJBc3NlbWJseUltcG9ydE1vZHVsZTsJIC8vICJpbXBvcnRfbW9kdWxlIgorICAgICAgY2FzZSAnbic6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsyLCAiaXRfcHJpb3JpdHkiLCAxMSkgIT0gMCkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0luaXRQcmlvcml0eTsJIC8vICJpbml0X3ByaW9yaXR5IgorICAgICAgfQorICAgICAgYnJlYWs7CiAgICAgY2FzZSAnbCc6CSAvLyAzIHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgICBzd2l0Y2ggKE5hbWVbMV0pIHsKICAgICAgIGRlZmF1bHQ6IGJyZWFrOwpAQCAtNzczLDYgKzgxNSwxMCBAQAogICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfU3dpZnRDb250ZXh0OwkgLy8gInN3aWZ0X2NvbnRleHQiCiAgICAgICB9CiAgICAgICBicmVhazsKKyAgICBjYXNlICd1JzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxLCAibmluaXRpYWxpemVkIiwgMTIpICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1VuaW5pdGlhbGl6ZWQ7CSAvLyAidW5pbml0aWFsaXplZCIKICAgICBjYXNlICd2JzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgogICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxLCAiZWNfdHlwZV9oaW50IiwgMTIpICE9IDApCiAgICAgICAgIGJyZWFrOwpAQCAtNzgzLDcgKzgyOSw3IEBACiAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfWFJheUxvZ0FyZ3M7CSAvLyAieHJheV9sb2dfYXJncyIKICAgICB9CiAgICAgYnJlYWs7Ci0gIGNhc2UgMTQ6CSAvLyAxMiBzdHJpbmdzIHRvIG1hdGNoLgorICBjYXNlIDE0OgkgLy8gMTMgc3RyaW5ncyB0byBtYXRjaC4KICAgICBzd2l0Y2ggKE5hbWVbMF0pIHsKICAgICBkZWZhdWx0OiBicmVhazsKICAgICBjYXNlICdhJzoJIC8vIDMgc3RyaW5ncyB0byBtYXRjaC4KQEAgLTgxMSw2ICs4NTcsMTAgQEAKICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMSwgImV2aWNlX2J1aWx0aW4iLCAxMykgIT0gMCkKICAgICAgICAgYnJlYWs7CiAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6SWdub3JlZEF0dHJpYnV0ZTsJIC8vICJkZXZpY2VfYnVpbHRpbiIKKyAgICBjYXNlICdmJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxLCAib3J0aWZ5X3N0ZGxpYiIsIDEzKSAhPSAwKQorICAgICAgICBicmVhazsKKyAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9Gb3J0aWZ5U3RkTGliOwkgLy8gImZvcnRpZnlfc3RkbGliIgogICAgIGNhc2UgJ2knOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJudGVsX29jbF9iaWNjIiwgMTMpICE9IDApCiAgICAgICAgIGJyZWFrOwpAQCAtOTI5LDcgKzk3OSw3IEBACiAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfUmVsZWFzZUNhcGFiaWxpdHk7CSAvLyAidW5sb2NrX2Z1bmN0aW9uIgogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSAxNjoJIC8vIDYgc3RyaW5ncyB0byBtYXRjaC4KKyAgY2FzZSAxNjoJIC8vIDcgc3RyaW5ncyB0byBtYXRjaC4KICAgICBzd2l0Y2ggKE5hbWVbMF0pIHsKICAgICBkZWZhdWx0OiBicmVhazsKICAgICBjYXNlICdpJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgpAQCAtOTUzLDYgKzEwMDMsMTAgQEAKICAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX05TQ29uc3VtZXNTZWxmOwkgLy8gIm5zX2NvbnN1bWVzX3NlbGYiCiAgICAgICB9CiAgICAgICBicmVhazsKKyAgICBjYXNlICdvJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxLCAic19jb25zdW1lc190aGlzIiwgMTUpICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09TQ29uc3VtZXNUaGlzOwkgLy8gIm9zX2NvbnN1bWVzX3RoaXMiCiAgICAgY2FzZSAncCc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMSwgImFzc19vYmplY3Rfc2l6ZSIsIDE1KSAhPSAwKQogICAgICAgICBicmVhazsKQEAgLTEwMDIsMTIgKzEwNTYsMTYgQEAKICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9UcmFuc3BhcmVudFVuaW9uOwkgLy8gInRyYW5zcGFyZW50X3VuaW9uIgogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSAxODoJIC8vIDE0IHN0cmluZ3MgdG8gbWF0Y2guCisgIGNhc2UgMTg6CSAvLyAxNiBzdHJpbmdzIHRvIG1hdGNoLgogICAgIHN3aXRjaCAoTmFtZVswXSkgewogICAgIGRlZmF1bHQ6IGJyZWFrOwotICAgIGNhc2UgJ2EnOgkgLy8gMiBzdHJpbmdzIHRvIG1hdGNoLgorICAgIGNhc2UgJ2EnOgkgLy8gMyBzdHJpbmdzIHRvIG1hdGNoLgogICAgICAgc3dpdGNoIChOYW1lWzFdKSB7CiAgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgIGNhc2UgJ2EnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMiwgInJjaDY0X3ZlY3Rvcl9wY3MiLCAxNikgIT0gMCkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0FBcmNoNjRWZWN0b3JQY3M7CSAvLyAiYWFyY2g2NF92ZWN0b3JfcGNzIgogICAgICAgY2FzZSAnYyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsyLCAicXVpcmVfY2FwYWJpbGl0eSIsIDE2KSAhPSAwKQogICAgICAgICAgIGJyZWFrOwpAQCAtMTA2MCwxMyArMTExOCwyNCBAQAogICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfTm9TdGFja1Byb3RlY3RvcjsJIC8vICJub19zdGFja19wcm90ZWN0b3IiCiAgICAgICB9CiAgICAgICBicmVhazsKLSAgICBjYXNlICdvJzoJIC8vIDIgc3RyaW5ncyB0byBtYXRjaC4KKyAgICBjYXNlICdvJzoJIC8vIDMgc3RyaW5ncyB0byBtYXRjaC4KICAgICAgIHN3aXRjaCAoTmFtZVsxXSkgewogICAgICAgZGVmYXVsdDogYnJlYWs7Ci0gICAgICBjYXNlICdiJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgotICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzIsICJqY19tZXRob2RfZmFtaWx5IiwgMTYpICE9IDApCisgICAgICBjYXNlICdiJzoJIC8vIDIgc3RyaW5ncyB0byBtYXRjaC4KKyAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsyLCAiamNfIiwgMykgIT0gMCkKICAgICAgICAgICBicmVhazsKLSAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09iakNNZXRob2RGYW1pbHk7CSAvLyAib2JqY19tZXRob2RfZmFtaWx5IgorICAgICAgICBzd2l0Y2ggKE5hbWVbNV0pIHsKKyAgICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICAgIGNhc2UgJ20nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs2LCAiZXRob2RfZmFtaWx5IiwgMTIpICE9IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ01ldGhvZEZhbWlseTsJIC8vICJvYmpjX21ldGhvZF9mYW1pbHkiCisgICAgICAgIGNhc2UgJ24nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs2LCAib25sYXp5X2NsYXNzIiwgMTIpICE9IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ05vbkxhenlDbGFzczsJIC8vICJvYmpjX25vbmxhenlfY2xhc3MiCisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlICdwJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgogICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzIsICJlbmNsX3Vucm9sbF9oaW50IiwgMTYpICE9IDApCiAgICAgICAgICAgYnJlYWs7CkBAIC0xMDg3LDcgKzExNTYsNyBAQAogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1dhcm5VbnVzZWRSZXN1bHQ7CSAvLyAid2Fybl91bnVzZWRfcmVzdWx0IgogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSAxOToJIC8vIDEwIHN0cmluZ3MgdG8gbWF0Y2guCisgIGNhc2UgMTk6CSAvLyAxMSBzdHJpbmdzIHRvIG1hdGNoLgogICAgIHN3aXRjaCAoTmFtZVswXSkgewogICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgIGNhc2UgJ2EnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCkBAIC0xMTI2LDMwICsxMTk1LDM5IEBACiAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9OU1JldHVybnNSZXRhaW5lZDsJIC8vICJuc19yZXR1cm5zX3JldGFpbmVkIgogICAgICAgfQogICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnbyc6CSAvLyAzIHN0cmluZ3MgdG8gbWF0Y2guCi0gICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJiamNfIiwgNCkgIT0gMCkKLSAgICAgICAgYnJlYWs7Ci0gICAgICBzd2l0Y2ggKE5hbWVbNV0pIHsKKyAgICBjYXNlICdvJzoJIC8vIDQgc3RyaW5ncyB0byBtYXRjaC4KKyAgICAgIHN3aXRjaCAoTmFtZVsxXSkgewogICAgICAgZGVmYXVsdDogYnJlYWs7Ci0gICAgICBjYXNlICdiJzoJIC8vIDIgc3RyaW5ncyB0byBtYXRjaC4KLSAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs2LCAicmlkZ2VfIiwgNikgIT0gMCkKKyAgICAgIGNhc2UgJ2InOgkgLy8gMyBzdHJpbmdzIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzIsICJqY18iLCAzKSAhPSAwKQogICAgICAgICAgIGJyZWFrOwotICAgICAgICBzd2l0Y2ggKE5hbWVbMTJdKSB7CisgICAgICAgIHN3aXRjaCAoTmFtZVs1XSkgewogICAgICAgICBkZWZhdWx0OiBicmVhazsKLSAgICAgICAgY2FzZSAnbSc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KLSAgICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEzLCAidXRhYmxlIiwgNikgIT0gMCkKKyAgICAgICAgY2FzZSAnYic6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCisgICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs2LCAicmlkZ2VfIiwgNikgIT0gMCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDQnJpZGdlTXV0YWJsZTsJIC8vICJvYmpjX2JyaWRnZV9tdXRhYmxlIgorICAgICAgICAgIHN3aXRjaCAoTmFtZVsxMl0pIHsKKyAgICAgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgICAgICBjYXNlICdtJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxMywgInV0YWJsZSIsIDYpICE9IDApCisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09iakNCcmlkZ2VNdXRhYmxlOwkgLy8gIm9iamNfYnJpZGdlX211dGFibGUiCisgICAgICAgICAgY2FzZSAncic6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMTMsICJlbGF0ZWQiLCA2KSAhPSAwKQorICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDQnJpZGdlUmVsYXRlZDsJIC8vICJvYmpjX2JyaWRnZV9yZWxhdGVkIgorICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAncic6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KLSAgICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEzLCAiZWxhdGVkIiwgNikgIT0gMCkKKyAgICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzYsICJlcXVpcmVzX3N1cGVyIiwgMTMpICE9IDApCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ0JyaWRnZVJlbGF0ZWQ7CSAvLyAib2JqY19icmlkZ2VfcmVsYXRlZCIKKyAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ1JlcXVpcmVzU3VwZXI7CSAvLyAib2JqY19yZXF1aXJlc19zdXBlciIKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJ3InOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCi0gICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrNiwgImVxdWlyZXNfc3VwZXIiLCAxMykgIT0gMCkKKyAgICAgIGNhc2UgJ3MnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMiwgIl9yZXR1cm5zX3JldGFpbmVkIiwgMTcpICE9IDApCiAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDUmVxdWlyZXNTdXBlcjsJIC8vICJvYmpjX3JlcXVpcmVzX3N1cGVyIgorICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT1NSZXR1cm5zUmV0YWluZWQ7CSAvLyAib3NfcmV0dXJuc19yZXRhaW5lZCIKICAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ3InOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCkBAIC0xMjU0LDcgKzEzMzIsNyBAQAogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1hSYXlJbnN0cnVtZW50OwkgLy8gInhyYXlfYWx3YXlzX2luc3RydW1lbnQiCiAgICAgfQogICAgIGJyZWFrOwotICBjYXNlIDIzOgkgLy8gNiBzdHJpbmdzIHRvIG1hdGNoLgorICBjYXNlIDIzOgkgLy8gNyBzdHJpbmdzIHRvIG1hdGNoLgogICAgIHN3aXRjaCAoTmFtZVswXSkgewogICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgIGNhc2UgJ2MnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCkBAIC0xMjg0LDEzICsxMzYyLDE3IEBACiAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9OU1JldHVybnNOb3RSZXRhaW5lZDsJIC8vICJuc19yZXR1cm5zX25vdF9yZXRhaW5lZCIKICAgICAgIH0KICAgICAgIGJyZWFrOworICAgIGNhc2UgJ28nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJzX3JldHVybnNfbm90X3JldGFpbmVkIiwgMjIpICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09TUmV0dXJuc05vdFJldGFpbmVkOwkgLy8gIm9zX3JldHVybnNfbm90X3JldGFpbmVkIgogICAgIGNhc2UgJ3MnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJoYXJlZF90cnlsb2NrX2Z1bmN0aW9uIiwgMjIpICE9IDApCiAgICAgICAgIGJyZWFrOwogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1NoYXJlZFRyeWxvY2tGdW5jdGlvbjsJIC8vICJzaGFyZWRfdHJ5bG9ja19mdW5jdGlvbiIKICAgICB9CiAgICAgYnJlYWs7Ci0gIGNhc2UgMjQ6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCisgIGNhc2UgMjQ6CSAvLyAzIHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgc3dpdGNoIChOYW1lWzBdKSB7CiAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgY2FzZSAnYSc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KQEAgLTEzMDEsNiArMTM4MywxMCBAQAogICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxLCAieGNsdXNpdmVfbG9ja3NfcmVxdWlyZWQiLCAyMykgIT0gMCkKICAgICAgICAgYnJlYWs7CiAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfUmVxdWlyZXNDYXBhYmlsaXR5OwkgLy8gImV4Y2x1c2l2ZV9sb2Nrc19yZXF1aXJlZCIKKyAgICBjYXNlICdvJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxLCAiYmpjX2V4dGVybmFsbHlfcmV0YWluZWQiLCAyMykgIT0gMCkKKyAgICAgICAgYnJlYWs7CisgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ0V4dGVybmFsbHlSZXRhaW5lZDsJIC8vICJvYmpjX2V4dGVybmFsbHlfcmV0YWluZWQiCiAgICAgfQogICAgIGJyZWFrOwogICBjYXNlIDI1OgkgLy8gNSBzdHJpbmdzIHRvIG1hdGNoLgpAQCAtMTMzNSw3ICsxNDIxLDcgQEAKICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9SZWxlYXNlQ2FwYWJpbGl0eTsJIC8vICJyZWxlYXNlX3NoYXJlZF9jYXBhYmlsaXR5IgogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSAyNjoJIC8vIDYgc3RyaW5ncyB0byBtYXRjaC4KKyAgY2FzZSAyNjoJIC8vIDcgc3RyaW5ncyB0byBtYXRjaC4KICAgICBzd2l0Y2ggKE5hbWVbMF0pIHsKICAgICBkZWZhdWx0OiBicmVhazsKICAgICBjYXNlICdjJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgpAQCAtMTM2OSw5ICsxNDU1LDEzIEBACiAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9SZXF1aXJlc0NhcGFiaWxpdHk7CSAvLyAicmVxdWlyZXNfc2hhcmVkX2NhcGFiaWxpdHkiCiAgICAgICB9CiAgICAgICBicmVhazsKKyAgICBjYXNlICdzJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxLCAicGVjdWxhdGl2ZV9sb2FkX2hhcmRlbmluZyIsIDI1KSAhPSAwKQorICAgICAgICBicmVhazsKKyAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmc7CSAvLyAic3BlY3VsYXRpdmVfbG9hZF9oYXJkZW5pbmciCiAgICAgfQogICAgIGJyZWFrOwotICBjYXNlIDI3OgkgLy8gNSBzdHJpbmdzIHRvIG1hdGNoLgorICBjYXNlIDI3OgkgLy8gNiBzdHJpbmdzIHRvIG1hdGNoLgogICAgIHN3aXRjaCAoTmFtZVswXSkgewogICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgIGNhc2UgJ2EnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCkBAIC0xMzkzLDE5ICsxNDgzLDI4IEBACiAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpJZ25vcmVkQXR0cmlidXRlOwkgLy8gImRldmljZV9idWlsdGluX3RleHR1cmVfdHlwZSIKICAgICAgIH0KICAgICAgIGJyZWFrOwotICAgIGNhc2UgJ28nOgkgLy8gMiBzdHJpbmdzIHRvIG1hdGNoLgotICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxLCAiYmpjXyIsIDQpICE9IDApCi0gICAgICAgIGJyZWFrOwotICAgICAgc3dpdGNoIChOYW1lWzVdKSB7CisgICAgY2FzZSAnbyc6CSAvLyAzIHN0cmluZ3MgdG8gbWF0Y2guCisgICAgICBzd2l0Y2ggKE5hbWVbMV0pIHsKICAgICAgIGRlZmF1bHQ6IGJyZWFrOwotICAgICAgY2FzZSAnZCc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KLSAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs2LCAiZXNpZ25hdGVkX2luaXRpYWxpemVyIiwgMjEpICE9IDApCisgICAgICBjYXNlICdiJzoJIC8vIDIgc3RyaW5ncyB0byBtYXRjaC4KKyAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsyLCAiamNfIiwgMykgIT0gMCkKICAgICAgICAgICBicmVhazsKLSAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09iakNEZXNpZ25hdGVkSW5pdGlhbGl6ZXI7CSAvLyAib2JqY19kZXNpZ25hdGVkX2luaXRpYWxpemVyIgorICAgICAgICBzd2l0Y2ggKE5hbWVbNV0pIHsKKyAgICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICAgIGNhc2UgJ2QnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs2LCAiZXNpZ25hdGVkX2luaXRpYWxpemVyIiwgMjEpICE9IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ0Rlc2lnbmF0ZWRJbml0aWFsaXplcjsJIC8vICJvYmpjX2Rlc2lnbmF0ZWRfaW5pdGlhbGl6ZXIiCisgICAgICAgIGNhc2UgJ3MnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs2LCAidWJjbGFzc2luZ19yZXN0cmljdGVkIiwgMjEpICE9IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ1N1YmNsYXNzaW5nUmVzdHJpY3RlZDsJIC8vICJvYmpjX3N1YmNsYXNzaW5nX3Jlc3RyaWN0ZWQiCisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlICdzJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgotICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzYsICJ1YmNsYXNzaW5nX3Jlc3RyaWN0ZWQiLCAyMSkgIT0gMCkKKyAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsyLCAiX3JldHVybnNfcmV0YWluZWRfb25femVybyIsIDI1KSAhPSAwKQogICAgICAgICAgIGJyZWFrOwotICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ1N1YmNsYXNzaW5nUmVzdHJpY3RlZDsJIC8vICJvYmpjX3N1YmNsYXNzaW5nX3Jlc3RyaWN0ZWQiCisgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PU1JldHVybnNSZXRhaW5lZE9uWmVybzsJIC8vICJvc19yZXR1cm5zX3JldGFpbmVkX29uX3plcm8iCiAgICAgICB9CiAgICAgICBicmVhazsKICAgICB9CkBAIC0xNDE0LDE0ICsxNTEzLDMyIEBACiAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSswLCAiY29uc3VtYWJsZV9zZXRfc3RhdGVfb25fcmVhZCIsIDI4KSAhPSAwKQogICAgICAgYnJlYWs7CiAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0NvbnN1bWFibGVTZXRPblJlYWQ7CSAvLyAiY29uc3VtYWJsZV9zZXRfc3RhdGVfb25fcmVhZCIKLSAgY2FzZSAyOToJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgotICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMCwgInRyeV9hY3F1aXJlX3NoYXJlZF9jYXBhYmlsaXR5IiwgMjkpICE9IDApCi0gICAgICBicmVhazsKLSAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfVHJ5QWNxdWlyZUNhcGFiaWxpdHk7CSAvLyAidHJ5X2FjcXVpcmVfc2hhcmVkX2NhcGFiaWxpdHkiCi0gIGNhc2UgMzE6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KLSAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzAsICJyZXF1aXJlX2NvbnN0YW50X2luaXRpYWxpemF0aW9uIiwgMzEpICE9IDApCi0gICAgICBicmVhazsKLSAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfUmVxdWlyZUNvbnN0YW50SW5pdDsJIC8vICJyZXF1aXJlX2NvbnN0YW50X2luaXRpYWxpemF0aW9uIgorICBjYXNlIDI5OgkgLy8gMiBzdHJpbmdzIHRvIG1hdGNoLgorICAgIHN3aXRjaCAoTmFtZVswXSkgeworICAgIGRlZmF1bHQ6IGJyZWFrOworICAgIGNhc2UgJ24nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJvX3NwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nIiwgMjgpICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX05vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nOwkgLy8gIm5vX3NwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nIgorICAgIGNhc2UgJ3QnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJyeV9hY3F1aXJlX3NoYXJlZF9jYXBhYmlsaXR5IiwgMjgpICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1RyeUFjcXVpcmVDYXBhYmlsaXR5OwkgLy8gInRyeV9hY3F1aXJlX3NoYXJlZF9jYXBhYmlsaXR5IgorICAgIH0KKyAgICBicmVhazsKKyAgY2FzZSAzMToJIC8vIDIgc3RyaW5ncyB0byBtYXRjaC4KKyAgICBzd2l0Y2ggKE5hbWVbMF0pIHsKKyAgICBkZWZhdWx0OiBicmVhazsKKyAgICBjYXNlICdvJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxLCAic19yZXR1cm5zX3JldGFpbmVkX29uX25vbl96ZXJvIiwgMzApICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09TUmV0dXJuc1JldGFpbmVkT25Ob25aZXJvOwkgLy8gIm9zX3JldHVybnNfcmV0YWluZWRfb25fbm9uX3plcm8iCisgICAgY2FzZSAncic6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMSwgImVxdWlyZV9jb25zdGFudF9pbml0aWFsaXphdGlvbiIsIDMwKSAhPSAwKQorICAgICAgICBicmVhazsKKyAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9SZXF1aXJlQ29uc3RhbnRJbml0OwkgLy8gInJlcXVpcmVfY29uc3RhbnRfaW5pdGlhbGl6YXRpb24iCisgICAgfQorICAgIGJyZWFrOwogICBjYXNlIDM0OgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSswLCAib2JqY19yZXF1aXJlc19wcm9wZXJ0eV9kZWZpbml0aW9ucyIsIDM0KSAhPSAwKQogICAgICAgYnJlYWs7CkBAIC0xNTgzLDEwICsxNzAwLDMwIEBACiAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSswLCAiZW1wdHlfYmFzZXMiLCAxMSkgIT0gMCkKICAgICAgIGJyZWFrOwogICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9FbXB0eUJhc2VzOwkgLy8gImVtcHR5X2Jhc2VzIgotICBjYXNlIDEyOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCi0gICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSswLCAiX19jb25zdGFudF9fIiwgMTIpICE9IDApCisgIGNhc2UgMTI6CSAvLyAzIHN0cmluZ3MgdG8gbWF0Y2guCisgICAgc3dpdGNoIChOYW1lWzBdKSB7CisgICAgZGVmYXVsdDogYnJlYWs7CisgICAgY2FzZSAnXyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMSwgIl9jb25zdGFudF9fIiwgMTEpICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0NVREFDb25zdGFudDsJIC8vICJfX2NvbnN0YW50X18iCisgICAgY2FzZSAnYyc6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCisgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJwdV8iLCAzKSAhPSAwKQorICAgICAgICBicmVhazsKKyAgICAgIHN3aXRjaCAoTmFtZVs0XSkgeworICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICBjYXNlICdkJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzUsICJpc3BhdGNoIiwgNykgIT0gMCkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0NQVURpc3BhdGNoOwkgLy8gImNwdV9kaXNwYXRjaCIKKyAgICAgIGNhc2UgJ3MnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrNSwgInBlY2lmaWMiLCA3KSAhPSAwKQorICAgICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfQ1BVU3BlY2lmaWM7CSAvLyAiY3B1X3NwZWNpZmljIgorICAgICAgfQogICAgICAgYnJlYWs7Ci0gICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0NVREFDb25zdGFudDsJIC8vICJfX2NvbnN0YW50X18iCisgICAgfQorICAgIGJyZWFrOwogICBjYXNlIDE0OgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSswLCAibGF5b3V0X3ZlcnNpb24iLCAxNCkgIT0gMCkKICAgICAgIGJyZWFrOwpAQCAtMTk2MSwxNCArMjA5OCwxNCBAQAogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGJyZWFrOwotICBjYXNlIDE0OgkgLy8gMTMgc3RyaW5ncyB0byBtYXRjaC4KKyAgY2FzZSAxNDoJIC8vIDE0IHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgc3dpdGNoIChOYW1lWzBdKSB7CiAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgY2FzZSAnOic6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMSwgIjptYXliZV91bnVzZWQiLCAxMykgIT0gMCkKICAgICAgICAgYnJlYWs7CiAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfVW51c2VkOwkgLy8gIjo6bWF5YmVfdW51c2VkIgotICAgIGNhc2UgJ2MnOgkgLy8gMyBzdHJpbmdzIHRvIG1hdGNoLgorICAgIGNhc2UgJ2MnOgkgLy8gNCBzdHJpbmdzIHRvIG1hdGNoLgogICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxLCAibGFuZzo6IiwgNikgIT0gMCkKICAgICAgICAgYnJlYWs7CiAgICAgICBzd2l0Y2ggKE5hbWVbN10pIHsKQEAgLTE5NzcsNiArMjExNCwxMCBAQAogICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJpbnNpemUiLCA2KSAhPSAwKQogICAgICAgICAgIGJyZWFrOwogICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfTWluU2l6ZTsJIC8vICJjbGFuZzo6bWluc2l6ZSIKKyAgICAgIGNhc2UgJ24nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgIm9kZXJlZiIsIDYpICE9IDApCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9Ob0RlcmVmOwkgLy8gImNsYW5nOjpub2RlcmVmIgogICAgICAgY2FzZSAnbyc6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgICAgIHN3aXRjaCAoTmFtZVs4XSkgewogICAgICAgICBkZWZhdWx0OiBicmVhazsKQEAgLTIwNDksMTAgKzIxOTAsMTAgQEAKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSAxNToJIC8vIDE0IHN0cmluZ3MgdG8gbWF0Y2guCisgIGNhc2UgMTU6CSAvLyAxNSBzdHJpbmdzIHRvIG1hdGNoLgogICAgIHN3aXRjaCAoTmFtZVswXSkgewogICAgIGRlZmF1bHQ6IGJyZWFrOwotICAgIGNhc2UgJ2MnOgkgLy8gNSBzdHJpbmdzIHRvIG1hdGNoLgorICAgIGNhc2UgJ2MnOgkgLy8gNiBzdHJpbmdzIHRvIG1hdGNoLgogICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxLCAibGFuZzo6IiwgNikgIT0gMCkKICAgICAgICAgYnJlYWs7CiAgICAgICBzd2l0Y2ggKE5hbWVbN10pIHsKQEAgLTIwNjUsNiArMjIwNiwxMCBAQAogICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJubm90YXRlIiwgNykgIT0gMCkKICAgICAgICAgICBicmVhazsKICAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0Fubm90YXRlOwkgLy8gImNsYW5nOjphbm5vdGF0ZSIKKyAgICAgIGNhc2UgJ2MnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgImFsbGJhY2siLCA3KSAhPSAwKQorICAgICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfQ2FsbGJhY2s7CSAvLyAiY2xhbmc6OmNhbGxiYWNrIgogICAgICAgY2FzZSAnaSc6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgICAgIGlmIChOYW1lWzhdICE9ICdiJykKICAgICAgICAgICBicmVhazsKQEAgLTIyMzMsMTAgKzIzNzgsMTAgQEAKICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9WZWN0b3JDYWxsOwkgLy8gImNsYW5nOjp2ZWN0b3JjYWxsIgogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSAxODoJIC8vIDEzIHN0cmluZ3MgdG8gbWF0Y2guCisgIGNhc2UgMTg6CSAvLyAxNSBzdHJpbmdzIHRvIG1hdGNoLgogICAgIHN3aXRjaCAoTmFtZVswXSkgewogICAgIGRlZmF1bHQ6IGJyZWFrOwotICAgIGNhc2UgJ2MnOgkgLy8gMTAgc3RyaW5ncyB0byBtYXRjaC4KKyAgICBjYXNlICdjJzoJIC8vIDEyIHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJsYW5nOjoiLCA2KSAhPSAwKQogICAgICAgICBicmVhazsKICAgICAgIHN3aXRjaCAoTmFtZVs3XSkgewpAQCAtMjI1Myw2ICsyMzk4LDEwIEBACiAgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgInVhcmRlZF92YXIiLCAxMCkgIT0gMCkKICAgICAgICAgICBicmVhazsKICAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0d1YXJkZWRWYXI7CSAvLyAiY2xhbmc6Omd1YXJkZWRfdmFyIgorICAgICAgY2FzZSAnaSc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAibXBvcnRfbmFtZSIsIDEwKSAhPSAwKQorICAgICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfV2ViQXNzZW1ibHlJbXBvcnROYW1lOwkgLy8gImNsYW5nOjppbXBvcnRfbmFtZSIKICAgICAgIGNhc2UgJ24nOgkgLy8gMyBzdHJpbmdzIHRvIG1hdGNoLgogICAgICAgICBzd2l0Y2ggKE5hbWVbOF0pIHsKICAgICAgICAgZGVmYXVsdDogYnJlYWs7CkBAIC0yMjc1LDEwICsyNDI0LDE5IEBACiAgICAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX05TQ29uc3VtZWQ7CSAvLyAiY2xhbmc6Om5zX2NvbnN1bWVkIgogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnbyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KLSAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiYmpjX2JyaWRnZSIsIDEwKSAhPSAwKQotICAgICAgICAgIGJyZWFrOwotICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ0JyaWRnZTsJIC8vICJjbGFuZzo6b2JqY19icmlkZ2UiCisgICAgICBjYXNlICdvJzoJIC8vIDIgc3RyaW5ncyB0byBtYXRjaC4KKyAgICAgICAgc3dpdGNoIChOYW1lWzhdKSB7CisgICAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgICBjYXNlICdiJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOSwgImpjX2JyaWRnZSIsIDkpICE9IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ0JyaWRnZTsJIC8vICJjbGFuZzo6b2JqY19icmlkZ2UiCisgICAgICAgIGNhc2UgJ3MnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs5LCAiX2NvbnN1bWVkIiwgOSkgIT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PU0NvbnN1bWVkOwkgLy8gImNsYW5nOjpvc19jb25zdW1lZCIKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICAgIGNhc2UgJ3QnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgInJpdmlhbF9hYmkiLCAxMCkgIT0gMCkKICAgICAgICAgICBicmVhazsKQEAgLTIzNzcsMTQgKzI1MzUsMTQgQEAKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSAyMDoJIC8vIDEwIHN0cmluZ3MgdG8gbWF0Y2guCisgIGNhc2UgMjA6CSAvLyAxMiBzdHJpbmdzIHRvIG1hdGNoLgogICAgIHN3aXRjaCAoTmFtZVswXSkgewogICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgIGNhc2UgJzonOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICI6Y2Fycmllc19kZXBlbmRlbmN5IiwgMTkpICE9IDApCiAgICAgICAgIGJyZWFrOwogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0NhcnJpZXNEZXBlbmRlbmN5OwkgLy8gIjo6Y2Fycmllc19kZXBlbmRlbmN5IgotICAgIGNhc2UgJ2MnOgkgLy8gOCBzdHJpbmdzIHRvIG1hdGNoLgorICAgIGNhc2UgJ2MnOgkgLy8gMTAgc3RyaW5ncyB0byBtYXRjaC4KICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMSwgImxhbmc6OiIsIDYpICE9IDApCiAgICAgICAgIGJyZWFrOwogICAgICAgc3dpdGNoIChOYW1lWzddKSB7CkBAIC0yMzk3LDYgKzI1NTUsMTAgQEAKICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiYWxsYWJsZV93aGVuIiwgMTIpICE9IDApCiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9DYWxsYWJsZVdoZW47CSAvLyAiY2xhbmc6OmNhbGxhYmxlX3doZW4iCisgICAgICBjYXNlICdpJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJtcG9ydF9tb2R1bGUiLCAxMikgIT0gMCkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1dlYkFzc2VtYmx5SW1wb3J0TW9kdWxlOwkgLy8gImNsYW5nOjppbXBvcnRfbW9kdWxlIgogICAgICAgY2FzZSAnbCc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiaWZldGltZWJvdW5kIiwgMTIpICE9IDApCiAgICAgICAgICAgYnJlYWs7CkBAIC0yNDIyLDYgKzI1ODQsMTAgQEAKICAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfU3dpZnRDb250ZXh0OwkgLy8gImNsYW5nOjpzd2lmdF9jb250ZXh0IgogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAndSc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAibmluaXRpYWxpemVkIiwgMTIpICE9IDApCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9VbmluaXRpYWxpemVkOwkgLy8gImNsYW5nOjp1bmluaXRpYWxpemVkIgogICAgICAgY2FzZSAneCc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAicmF5X2xvZ19hcmdzIiwgMTIpICE9IDApCiAgICAgICAgICAgYnJlYWs7CkBAIC0yNDM0LDcgKzI2MDAsNyBAQAogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1JldHVybnNOb25OdWxsOwkgLy8gImdudTo6cmV0dXJuc19ub25udWxsIgogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSAyMToJIC8vIDYgc3RyaW5ncyB0byBtYXRjaC4KKyAgY2FzZSAyMToJIC8vIDcgc3RyaW5ncyB0byBtYXRjaC4KICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzAsICJjbGFuZzo6IiwgNykgIT0gMCkKICAgICAgIGJyZWFrOwogICAgIHN3aXRjaCAoTmFtZVs3XSkgewpAQCAtMjQ0Myw2ICsyNjA5LDEwIEBACiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJsd2F5c19kZXN0cm95IiwgMTMpICE9IDApCiAgICAgICAgIGJyZWFrOwogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0Fsd2F5c0Rlc3Ryb3k7CSAvLyAiY2xhbmc6OmFsd2F5c19kZXN0cm95IgorICAgIGNhc2UgJ2YnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJvcnRpZnlfc3RkbGliIiwgMTMpICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0ZvcnRpZnlTdGRMaWI7CSAvLyAiY2xhbmc6OmZvcnRpZnlfc3RkbGliIgogICAgIGNhc2UgJ2knOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJudGVsX29jbF9iaWNjIiwgMTMpICE9IDApCiAgICAgICAgIGJyZWFrOwpAQCAtMjU0NywxMCArMjcxNywxMCBAQAogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1RyYW5zcGFyZW50VW5pb247CSAvLyAiZ251Ojp0cmFuc3BhcmVudF91bmlvbiIKICAgICB9CiAgICAgYnJlYWs7Ci0gIGNhc2UgMjM6CSAvLyA4IHN0cmluZ3MgdG8gbWF0Y2guCisgIGNhc2UgMjM6CSAvLyA5IHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgc3dpdGNoIChOYW1lWzBdKSB7CiAgICAgZGVmYXVsdDogYnJlYWs7Ci0gICAgY2FzZSAnYyc6CSAvLyA2IHN0cmluZ3MgdG8gbWF0Y2guCisgICAgY2FzZSAnYyc6CSAvLyA3IHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJsYW5nOjoiLCA2KSAhPSAwKQogICAgICAgICBicmVhazsKICAgICAgIHN3aXRjaCAoTmFtZVs3XSkgewpAQCAtMjU3Niw2ICsyNzQ2LDEwIEBACiAgICAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX05TQ29uc3VtZXNTZWxmOwkgLy8gImNsYW5nOjpuc19jb25zdW1lc19zZWxmIgogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnbyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAic19jb25zdW1lc190aGlzIiwgMTUpICE9IDApCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PU0NvbnN1bWVzVGhpczsJIC8vICJjbGFuZzo6b3NfY29uc3VtZXNfdGhpcyIKICAgICAgIGNhc2UgJ3AnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgImFzc19vYmplY3Rfc2l6ZSIsIDE1KSAhPSAwKQogICAgICAgICAgIGJyZWFrOwpAQCAtMjY0MCwxNSArMjgxNCwyNCBAQAogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX05vU2FuaXRpemVTcGVjaWZpYzsJIC8vICJnbnU6Om5vX3Nhbml0aXplX2FkZHJlc3MiCiAgICAgfQogICAgIGJyZWFrOwotICBjYXNlIDI1OgkgLy8gMTAgc3RyaW5ncyB0byBtYXRjaC4KKyAgY2FzZSAyNToJIC8vIDEyIHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSswLCAiY2xhbmc6OiIsIDcpICE9IDApCiAgICAgICBicmVhazsKICAgICBzd2l0Y2ggKE5hbWVbN10pIHsKICAgICBkZWZhdWx0OiBicmVhazsKLSAgICBjYXNlICdhJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgotICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiY3F1aXJlX2NhcGFiaWxpdHkiLCAxNykgIT0gMCkKLSAgICAgICAgYnJlYWs7Ci0gICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfQWNxdWlyZUNhcGFiaWxpdHk7CSAvLyAiY2xhbmc6OmFjcXVpcmVfY2FwYWJpbGl0eSIKKyAgICBjYXNlICdhJzoJIC8vIDIgc3RyaW5ncyB0byBtYXRjaC4KKyAgICAgIHN3aXRjaCAoTmFtZVs4XSkgeworICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICBjYXNlICdhJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzksICJyY2g2NF92ZWN0b3JfcGNzIiwgMTYpICE9IDApCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9BQXJjaDY0VmVjdG9yUGNzOwkgLy8gImNsYW5nOjphYXJjaDY0X3ZlY3Rvcl9wY3MiCisgICAgICBjYXNlICdjJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzksICJxdWlyZV9jYXBhYmlsaXR5IiwgMTYpICE9IDApCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9BY3F1aXJlQ2FwYWJpbGl0eTsJIC8vICJjbGFuZzo6YWNxdWlyZV9jYXBhYmlsaXR5IgorICAgICAgfQorICAgICAgYnJlYWs7CiAgICAgY2FzZSAnZCc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgImlzYWJsZV90YWlsX2NhbGxzIiwgMTcpICE9IDApCiAgICAgICAgIGJyZWFrOwpAQCAtMjY3NiwxMCArMjg1OSwyMSBAQAogICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfTm9TdGFja1Byb3RlY3RvcjsJIC8vICJjbGFuZzo6bm9fc3RhY2tfcHJvdGVjdG9yIgogICAgICAgfQogICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnbyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KLSAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgImJqY19tZXRob2RfZmFtaWx5IiwgMTcpICE9IDApCisgICAgY2FzZSAnbyc6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCisgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJiamNfIiwgNCkgIT0gMCkKICAgICAgICAgYnJlYWs7Ci0gICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ01ldGhvZEZhbWlseTsJIC8vICJjbGFuZzo6b2JqY19tZXRob2RfZmFtaWx5IgorICAgICAgc3dpdGNoIChOYW1lWzEyXSkgeworICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICBjYXNlICdtJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEzLCAiZXRob2RfZmFtaWx5IiwgMTIpICE9IDApCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDTWV0aG9kRmFtaWx5OwkgLy8gImNsYW5nOjpvYmpjX21ldGhvZF9mYW1pbHkiCisgICAgICBjYXNlICduJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEzLCAib25sYXp5X2NsYXNzIiwgMTIpICE9IDApCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDTm9uTGF6eUNsYXNzOwkgLy8gImNsYW5nOjpvYmpjX25vbmxhenlfY2xhc3MiCisgICAgICB9CisgICAgICBicmVhazsKICAgICBjYXNlICdyJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgogICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiZWxlYXNlX2NhcGFiaWxpdHkiLCAxNykgIT0gMCkKICAgICAgICAgYnJlYWs7CkBAIC0yNjk0LDcgKzI4ODgsNyBAQAogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1dhcm5VbnVzZWRSZXN1bHQ7CSAvLyAiY2xhbmc6Ondhcm5fdW51c2VkX3Jlc3VsdCIKICAgICB9CiAgICAgYnJlYWs7Ci0gIGNhc2UgMjY6CSAvLyA5IHN0cmluZ3MgdG8gbWF0Y2guCisgIGNhc2UgMjY6CSAvLyAxMCBzdHJpbmdzIHRvIG1hdGNoLgogICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMCwgImNsYW5nOjoiLCA3KSAhPSAwKQogICAgICAgYnJlYWs7CiAgICAgc3dpdGNoIChOYW1lWzddKSB7CkBAIC0yNzI2LDMwICsyOTIwLDM5IEBACiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJzX3JldHVybnNfcmV0YWluZWQiLCAxOCkgIT0gMCkKICAgICAgICAgYnJlYWs7CiAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfTlNSZXR1cm5zUmV0YWluZWQ7CSAvLyAiY2xhbmc6Om5zX3JldHVybnNfcmV0YWluZWQiCi0gICAgY2FzZSAnbyc6CSAvLyAzIHN0cmluZ3MgdG8gbWF0Y2guCi0gICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJiamNfIiwgNCkgIT0gMCkKLSAgICAgICAgYnJlYWs7Ci0gICAgICBzd2l0Y2ggKE5hbWVbMTJdKSB7CisgICAgY2FzZSAnbyc6CSAvLyA0IHN0cmluZ3MgdG8gbWF0Y2guCisgICAgICBzd2l0Y2ggKE5hbWVbOF0pIHsKICAgICAgIGRlZmF1bHQ6IGJyZWFrOwotICAgICAgY2FzZSAnYic6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCi0gICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMTMsICJyaWRnZV8iLCA2KSAhPSAwKQorICAgICAgY2FzZSAnYic6CSAvLyAzIHN0cmluZ3MgdG8gbWF0Y2guCisgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOSwgImpjXyIsIDMpICE9IDApCiAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHN3aXRjaCAoTmFtZVsxOV0pIHsKKyAgICAgICAgc3dpdGNoIChOYW1lWzEyXSkgewogICAgICAgICBkZWZhdWx0OiBicmVhazsKLSAgICAgICAgY2FzZSAnbSc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KLSAgICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzIwLCAidXRhYmxlIiwgNikgIT0gMCkKKyAgICAgICAgY2FzZSAnYic6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCisgICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxMywgInJpZGdlXyIsIDYpICE9IDApCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ0JyaWRnZU11dGFibGU7CSAvLyAiY2xhbmc6Om9iamNfYnJpZGdlX211dGFibGUiCisgICAgICAgICAgc3dpdGNoIChOYW1lWzE5XSkgeworICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgICAgIGNhc2UgJ20nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzIwLCAidXRhYmxlIiwgNikgIT0gMCkKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ0JyaWRnZU11dGFibGU7CSAvLyAiY2xhbmc6Om9iamNfYnJpZGdlX211dGFibGUiCisgICAgICAgICAgY2FzZSAncic6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMjAsICJlbGF0ZWQiLCA2KSAhPSAwKQorICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDQnJpZGdlUmVsYXRlZDsJIC8vICJjbGFuZzo6b2JqY19icmlkZ2VfcmVsYXRlZCIKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ3InOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCi0gICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsyMCwgImVsYXRlZCIsIDYpICE9IDApCisgICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxMywgImVxdWlyZXNfc3VwZXIiLCAxMykgIT0gMCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDQnJpZGdlUmVsYXRlZDsJIC8vICJjbGFuZzo6b2JqY19icmlkZ2VfcmVsYXRlZCIKKyAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ1JlcXVpcmVzU3VwZXI7CSAvLyAiY2xhbmc6Om9iamNfcmVxdWlyZXNfc3VwZXIiCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdyJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgotICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEzLCAiZXF1aXJlc19zdXBlciIsIDEzKSAhPSAwKQorICAgICAgY2FzZSAncyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs5LCAiX3JldHVybnNfcmV0YWluZWQiLCAxNykgIT0gMCkKICAgICAgICAgICBicmVhazsKLSAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09iakNSZXF1aXJlc1N1cGVyOwkgLy8gImNsYW5nOjpvYmpjX3JlcXVpcmVzX3N1cGVyIgorICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT1NSZXR1cm5zUmV0YWluZWQ7CSAvLyAiY2xhbmc6Om9zX3JldHVybnNfcmV0YWluZWQiCiAgICAgICB9CiAgICAgICBicmVhazsKICAgICBjYXNlICdyJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgpAQCAtMjg1OCwxMCArMzA2MSwxMCBAQAogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1hSYXlJbnN0cnVtZW50OwkgLy8gImNsYW5nOjp4cmF5X2Fsd2F5c19pbnN0cnVtZW50IgogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSAzMDoJIC8vIDQgc3RyaW5ncyB0byBtYXRjaC4KKyAgY2FzZSAzMDoJIC8vIDUgc3RyaW5ncyB0byBtYXRjaC4KICAgICBzd2l0Y2ggKE5hbWVbMF0pIHsKICAgICBkZWZhdWx0OiBicmVhazsKLSAgICBjYXNlICdjJzoJIC8vIDMgc3RyaW5ncyB0byBtYXRjaC4KKyAgICBjYXNlICdjJzoJIC8vIDQgc3RyaW5ncyB0byBtYXRjaC4KICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMSwgImxhbmc6OiIsIDYpICE9IDApCiAgICAgICAgIGJyZWFrOwogICAgICAgc3dpdGNoIChOYW1lWzddKSB7CkBAIC0yODg1LDYgKzMwODgsMTAgQEAKICAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfTlNSZXR1cm5zTm90UmV0YWluZWQ7CSAvLyAiY2xhbmc6Om5zX3JldHVybnNfbm90X3JldGFpbmVkIgogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAnbyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAic19yZXR1cm5zX25vdF9yZXRhaW5lZCIsIDIyKSAhPSAwKQorICAgICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT1NSZXR1cm5zTm90UmV0YWluZWQ7CSAvLyAiY2xhbmc6Om9zX3JldHVybnNfbm90X3JldGFpbmVkIgogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSAnZyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KQEAgLTI4OTMsMTAgKzMxMDAsMTAgQEAKICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9BbnlYODZOb0NhbGxlclNhdmVkUmVnaXN0ZXJzOwkgLy8gImdudTo6bm9fY2FsbGVyX3NhdmVkX3JlZ2lzdGVycyIKICAgICB9CiAgICAgYnJlYWs7Ci0gIGNhc2UgMzE6CSAvLyAzIHN0cmluZ3MgdG8gbWF0Y2guCisgIGNhc2UgMzE6CSAvLyA0IHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgc3dpdGNoIChOYW1lWzBdKSB7CiAgICAgZGVmYXVsdDogYnJlYWs7Ci0gICAgY2FzZSAnYyc6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCisgICAgY2FzZSAnYyc6CSAvLyAzIHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICJsYW5nOjoiLCA2KSAhPSAwKQogICAgICAgICBicmVhazsKICAgICAgIHN3aXRjaCAoTmFtZVs3XSkgewpAQCAtMjkwOSw2ICszMTE2LDEwIEBACiAgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgInhjbHVzaXZlX2xvY2tzX3JlcXVpcmVkIiwgMjMpICE9IDApCiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9SZXF1aXJlc0NhcGFiaWxpdHk7CSAvLyAiY2xhbmc6OmV4Y2x1c2l2ZV9sb2Nrc19yZXF1aXJlZCIKKyAgICAgIGNhc2UgJ28nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgImJqY19leHRlcm5hbGx5X3JldGFpbmVkIiwgMjMpICE9IDApCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDRXh0ZXJuYWxseVJldGFpbmVkOwkgLy8gImNsYW5nOjpvYmpjX2V4dGVybmFsbHlfcmV0YWluZWQiCiAgICAgICB9CiAgICAgICBicmVhazsKICAgICBjYXNlICdnJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgpAQCAtMjkzNiw3ICszMTQ3LDcgQEAKICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9SZWxlYXNlQ2FwYWJpbGl0eTsJIC8vICJjbGFuZzo6cmVsZWFzZV9zaGFyZWRfY2FwYWJpbGl0eSIKICAgICB9CiAgICAgYnJlYWs7Ci0gIGNhc2UgMzM6CSAvLyA0IHN0cmluZ3MgdG8gbWF0Y2guCisgIGNhc2UgMzM6CSAvLyA1IHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSswLCAiY2xhbmc6OiIsIDcpICE9IDApCiAgICAgICBicmVhazsKICAgICBzd2l0Y2ggKE5hbWVbN10pIHsKQEAgLTI5NjQsOSArMzE3NSwxMyBAQAogICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfUmVxdWlyZXNDYXBhYmlsaXR5OwkgLy8gImNsYW5nOjpyZXF1aXJlc19zaGFyZWRfY2FwYWJpbGl0eSIKICAgICAgIH0KICAgICAgIGJyZWFrOworICAgIGNhc2UgJ3MnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nIiwgMjUpICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZzsJIC8vICJjbGFuZzo6c3BlY3VsYXRpdmVfbG9hZF9oYXJkZW5pbmciCiAgICAgfQogICAgIGJyZWFrOwotICBjYXNlIDM0OgkgLy8gMyBzdHJpbmdzIHRvIG1hdGNoLgorICBjYXNlIDM0OgkgLy8gNCBzdHJpbmdzIHRvIG1hdGNoLgogICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMCwgImNsYW5nOjoiLCA3KSAhPSAwKQogICAgICAgYnJlYWs7CiAgICAgc3dpdGNoIChOYW1lWzddKSB7CkBAIC0yOTc1LDE5ICszMTkwLDI4IEBACiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJtZGdwdV9mbGF0X3dvcmtfZ3JvdXBfc2l6ZSIsIDI2KSAhPSAwKQogICAgICAgICBicmVhazsKICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9BTURHUFVGbGF0V29ya0dyb3VwU2l6ZTsJIC8vICJjbGFuZzo6YW1kZ3B1X2ZsYXRfd29ya19ncm91cF9zaXplIgotICAgIGNhc2UgJ28nOgkgLy8gMiBzdHJpbmdzIHRvIG1hdGNoLgotICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiYmpjXyIsIDQpICE9IDApCi0gICAgICAgIGJyZWFrOwotICAgICAgc3dpdGNoIChOYW1lWzEyXSkgeworICAgIGNhc2UgJ28nOgkgLy8gMyBzdHJpbmdzIHRvIG1hdGNoLgorICAgICAgc3dpdGNoIChOYW1lWzhdKSB7CiAgICAgICBkZWZhdWx0OiBicmVhazsKLSAgICAgIGNhc2UgJ2QnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCi0gICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMTMsICJlc2lnbmF0ZWRfaW5pdGlhbGl6ZXIiLCAyMSkgIT0gMCkKKyAgICAgIGNhc2UgJ2InOgkgLy8gMiBzdHJpbmdzIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzksICJqY18iLCAzKSAhPSAwKQogICAgICAgICAgIGJyZWFrOwotICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ0Rlc2lnbmF0ZWRJbml0aWFsaXplcjsJIC8vICJjbGFuZzo6b2JqY19kZXNpZ25hdGVkX2luaXRpYWxpemVyIgorICAgICAgICBzd2l0Y2ggKE5hbWVbMTJdKSB7CisgICAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgICBjYXNlICdkJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMTMsICJlc2lnbmF0ZWRfaW5pdGlhbGl6ZXIiLCAyMSkgIT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDRGVzaWduYXRlZEluaXRpYWxpemVyOwkgLy8gImNsYW5nOjpvYmpjX2Rlc2lnbmF0ZWRfaW5pdGlhbGl6ZXIiCisgICAgICAgIGNhc2UgJ3MnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxMywgInViY2xhc3NpbmdfcmVzdHJpY3RlZCIsIDIxKSAhPSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09iakNTdWJjbGFzc2luZ1Jlc3RyaWN0ZWQ7CSAvLyAiY2xhbmc6Om9iamNfc3ViY2xhc3NpbmdfcmVzdHJpY3RlZCIKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICAgIGNhc2UgJ3MnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCi0gICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMTMsICJ1YmNsYXNzaW5nX3Jlc3RyaWN0ZWQiLCAyMSkgIT0gMCkKKyAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs5LCAiX3JldHVybnNfcmV0YWluZWRfb25femVybyIsIDI1KSAhPSAwKQogICAgICAgICAgIGJyZWFrOwotICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ1N1YmNsYXNzaW5nUmVzdHJpY3RlZDsJIC8vICJjbGFuZzo6b2JqY19zdWJjbGFzc2luZ19yZXN0cmljdGVkIgorICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT1NSZXR1cm5zUmV0YWluZWRPblplcm87CSAvLyAiY2xhbmc6Om9zX3JldHVybnNfcmV0YWluZWRfb25femVybyIKICAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI5OTYsMTQgKzMyMjAsMzYgQEAKICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzAsICJjbGFuZzo6Y29uc3VtYWJsZV9zZXRfc3RhdGVfb25fcmVhZCIsIDM1KSAhPSAwKQogICAgICAgYnJlYWs7CiAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0NvbnN1bWFibGVTZXRPblJlYWQ7CSAvLyAiY2xhbmc6OmNvbnN1bWFibGVfc2V0X3N0YXRlX29uX3JlYWQiCi0gIGNhc2UgMzY6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KLSAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzAsICJjbGFuZzo6dHJ5X2FjcXVpcmVfc2hhcmVkX2NhcGFiaWxpdHkiLCAzNikgIT0gMCkKKyAgY2FzZSAzNjoJIC8vIDIgc3RyaW5ncyB0byBtYXRjaC4KKyAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzAsICJjbGFuZzo6IiwgNykgIT0gMCkKICAgICAgIGJyZWFrOwotICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9UcnlBY3F1aXJlQ2FwYWJpbGl0eTsJIC8vICJjbGFuZzo6dHJ5X2FjcXVpcmVfc2hhcmVkX2NhcGFiaWxpdHkiCi0gIGNhc2UgMzg6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KLSAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzAsICJjbGFuZzo6cmVxdWlyZV9jb25zdGFudF9pbml0aWFsaXphdGlvbiIsIDM4KSAhPSAwKQorICAgIHN3aXRjaCAoTmFtZVs3XSkgeworICAgIGRlZmF1bHQ6IGJyZWFrOworICAgIGNhc2UgJ24nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJvX3NwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nIiwgMjgpICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX05vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nOwkgLy8gImNsYW5nOjpub19zcGVjdWxhdGl2ZV9sb2FkX2hhcmRlbmluZyIKKyAgICBjYXNlICd0JzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAicnlfYWNxdWlyZV9zaGFyZWRfY2FwYWJpbGl0eSIsIDI4KSAhPSAwKQorICAgICAgICBicmVhazsKKyAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9UcnlBY3F1aXJlQ2FwYWJpbGl0eTsJIC8vICJjbGFuZzo6dHJ5X2FjcXVpcmVfc2hhcmVkX2NhcGFiaWxpdHkiCisgICAgfQorICAgIGJyZWFrOworICBjYXNlIDM4OgkgLy8gMiBzdHJpbmdzIHRvIG1hdGNoLgorICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMCwgImNsYW5nOjoiLCA3KSAhPSAwKQogICAgICAgYnJlYWs7Ci0gICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1JlcXVpcmVDb25zdGFudEluaXQ7CSAvLyAiY2xhbmc6OnJlcXVpcmVfY29uc3RhbnRfaW5pdGlhbGl6YXRpb24iCisgICAgc3dpdGNoIChOYW1lWzddKSB7CisgICAgZGVmYXVsdDogYnJlYWs7CisgICAgY2FzZSAnbyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgInNfcmV0dXJuc19yZXRhaW5lZF9vbl9ub25femVybyIsIDMwKSAhPSAwKQorICAgICAgICBicmVhazsKKyAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PU1JldHVybnNSZXRhaW5lZE9uTm9uWmVybzsJIC8vICJjbGFuZzo6b3NfcmV0dXJuc19yZXRhaW5lZF9vbl9ub25femVybyIKKyAgICBjYXNlICdyJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiZXF1aXJlX2NvbnN0YW50X2luaXRpYWxpemF0aW9uIiwgMzApICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1JlcXVpcmVDb25zdGFudEluaXQ7CSAvLyAiY2xhbmc6OnJlcXVpcmVfY29uc3RhbnRfaW5pdGlhbGl6YXRpb24iCisgICAgfQorICAgIGJyZWFrOwogICBjYXNlIDQxOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSswLCAiY2xhbmc6Om9iamNfcmVxdWlyZXNfcHJvcGVydHlfZGVmaW5pdGlvbnMiLCA0MSkgIT0gMCkKICAgICAgIGJyZWFrOwpAQCAtMzA2MywxNCArMzMwOSwxNCBAQAogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGJyZWFrOwotICBjYXNlIDE0OgkgLy8gNCBzdHJpbmdzIHRvIG1hdGNoLgorICBjYXNlIDE0OgkgLy8gNSBzdHJpbmdzIHRvIG1hdGNoLgogICAgIHN3aXRjaCAoTmFtZVswXSkgewogICAgIGRlZmF1bHQ6IGJyZWFrOwogICAgIGNhc2UgJzonOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEsICI6bWF5YmVfdW51c2VkIiwgMTMpICE9IDApCiAgICAgICAgIGJyZWFrOwogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1VudXNlZDsJIC8vICI6Om1heWJlX3VudXNlZCIKLSAgICBjYXNlICdjJzoJIC8vIDMgc3RyaW5ncyB0byBtYXRjaC4KKyAgICBjYXNlICdjJzoJIC8vIDQgc3RyaW5ncyB0byBtYXRjaC4KICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMSwgImxhbmc6OiIsIDYpICE9IDApCiAgICAgICAgIGJyZWFrOwogICAgICAgc3dpdGNoIChOYW1lWzddKSB7CkBAIC0zMDc5LDYgKzMzMjUsMTAgQEAKICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiaW5zaXplIiwgNikgIT0gMCkKICAgICAgICAgICBicmVhazsKICAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX01pblNpemU7CSAvLyAiY2xhbmc6Om1pbnNpemUiCisgICAgICBjYXNlICduJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJvZGVyZWYiLCA2KSAhPSAwKQorICAgICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfTm9EZXJlZjsJIC8vICJjbGFuZzo6bm9kZXJlZiIKICAgICAgIGNhc2UgJ28nOgkgLy8gMiBzdHJpbmdzIHRvIG1hdGNoLgogICAgICAgICBzd2l0Y2ggKE5hbWVbOF0pIHsKICAgICAgICAgZGVmYXVsdDogYnJlYWs7CkBAIC0zMDk2LDcgKzMzNDYsNyBAQAogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGJyZWFrOwotICBjYXNlIDE1OgkgLy8gNSBzdHJpbmdzIHRvIG1hdGNoLgorICBjYXNlIDE1OgkgLy8gNiBzdHJpbmdzIHRvIG1hdGNoLgogICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMCwgImNsYW5nOjoiLCA3KSAhPSAwKQogICAgICAgYnJlYWs7CiAgICAgc3dpdGNoIChOYW1lWzddKSB7CkBAIC0zMTA5LDYgKzMzNTksMTAgQEAKICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgIm5ub3RhdGUiLCA3KSAhPSAwKQogICAgICAgICBicmVhazsKICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9Bbm5vdGF0ZTsJIC8vICJjbGFuZzo6YW5ub3RhdGUiCisgICAgY2FzZSAnYyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgImFsbGJhY2siLCA3KSAhPSAwKQorICAgICAgICBicmVhazsKKyAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9DYWxsYmFjazsJIC8vICJjbGFuZzo6Y2FsbGJhY2siCiAgICAgY2FzZSAnaSc6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgICBpZiAoTmFtZVs4XSAhPSAnYicpCiAgICAgICAgIGJyZWFrOwpAQCAtMzE2MCw3ICszNDE0LDcgQEAKICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9WZWN0b3JDYWxsOwkgLy8gImNsYW5nOjp2ZWN0b3JjYWxsIgogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSAxODoJIC8vIDcgc3RyaW5ncyB0byBtYXRjaC4KKyAgY2FzZSAxODoJIC8vIDkgc3RyaW5ncyB0byBtYXRjaC4KICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzAsICJjbGFuZzo6IiwgNykgIT0gMCkKICAgICAgIGJyZWFrOwogICAgIHN3aXRjaCAoTmFtZVs3XSkgewpAQCAtMzE2OSw2ICszNDIzLDEwIEBACiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJmX2NvbnN1bWVkIiwgMTApICE9IDApCiAgICAgICAgIGJyZWFrOwogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0NGQ29uc3VtZWQ7CSAvLyAiY2xhbmc6OmNmX2NvbnN1bWVkIgorICAgIGNhc2UgJ2knOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJtcG9ydF9uYW1lIiwgMTApICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1dlYkFzc2VtYmx5SW1wb3J0TmFtZTsJIC8vICJjbGFuZzo6aW1wb3J0X25hbWUiCiAgICAgY2FzZSAnbic6CSAvLyAzIHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgICBzd2l0Y2ggKE5hbWVbOF0pIHsKICAgICAgIGRlZmF1bHQ6IGJyZWFrOwpAQCAtMzE5MSwxMCArMzQ0OSwxOSBAQAogICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfTlNDb25zdW1lZDsJIC8vICJjbGFuZzo6bnNfY29uc3VtZWQiCiAgICAgICB9CiAgICAgICBicmVhazsKLSAgICBjYXNlICdvJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgotICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiYmpjX2JyaWRnZSIsIDEwKSAhPSAwKQotICAgICAgICBicmVhazsKLSAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDQnJpZGdlOwkgLy8gImNsYW5nOjpvYmpjX2JyaWRnZSIKKyAgICBjYXNlICdvJzoJIC8vIDIgc3RyaW5ncyB0byBtYXRjaC4KKyAgICAgIHN3aXRjaCAoTmFtZVs4XSkgeworICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICBjYXNlICdiJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzksICJqY19icmlkZ2UiLCA5KSAhPSAwKQorICAgICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ0JyaWRnZTsJIC8vICJjbGFuZzo6b2JqY19icmlkZ2UiCisgICAgICBjYXNlICdzJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzksICJfY29uc3VtZWQiLCA5KSAhPSAwKQorICAgICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT1NDb25zdW1lZDsJIC8vICJjbGFuZzo6b3NfY29uc3VtZWQiCisgICAgICB9CisgICAgICBicmVhazsKICAgICBjYXNlICd1JzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgogICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAibmF2YWlsYWJsZSIsIDEwKSAhPSAwKQogICAgICAgICBicmVhazsKQEAgLTMyNDgsNyArMzUxNSw3IEBACiAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfUHJlc2VydmVBbGw7CSAvLyAiY2xhbmc6OnByZXNlcnZlX2FsbCIKICAgICB9CiAgICAgYnJlYWs7Ci0gIGNhc2UgMjA6CSAvLyA0IHN0cmluZ3MgdG8gbWF0Y2guCisgIGNhc2UgMjA6CSAvLyA1IHN0cmluZ3MgdG8gbWF0Y2guCiAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSswLCAiY2xhbmc6OiIsIDcpICE9IDApCiAgICAgICBicmVhazsKICAgICBzd2l0Y2ggKE5hbWVbN10pIHsKQEAgLTMyNTcsNiArMzUyNCwxMCBAQAogICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiZGRyZXNzX3NwYWNlIiwgMTIpICE9IDApCiAgICAgICAgIGJyZWFrOwogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0FkZHJlc3NTcGFjZTsJIC8vICJjbGFuZzo6YWRkcmVzc19zcGFjZSIKKyAgICBjYXNlICdpJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAibXBvcnRfbW9kdWxlIiwgMTIpICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1dlYkFzc2VtYmx5SW1wb3J0TW9kdWxlOwkgLy8gImNsYW5nOjppbXBvcnRfbW9kdWxlIgogICAgIGNhc2UgJ3AnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJyZXNlcnZlX21vc3QiLCAxMikgIT0gMCkKICAgICAgICAgYnJlYWs7CkBAIC0zMjcxLDE5ICszNTQyLDMwIEBACiAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfWFJheUxvZ0FyZ3M7CSAvLyAiY2xhbmc6OnhyYXlfbG9nX2FyZ3MiCiAgICAgfQogICAgIGJyZWFrOwotICBjYXNlIDIxOgkgLy8gMiBzdHJpbmdzIHRvIG1hdGNoLgotICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMCwgImNsYW5nOjpvYmpjXyIsIDEyKSAhPSAwKQorICBjYXNlIDIxOgkgLy8gMyBzdHJpbmdzIHRvIG1hdGNoLgorICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMCwgImNsYW5nOjoiLCA3KSAhPSAwKQogICAgICAgYnJlYWs7Ci0gICAgc3dpdGNoIChOYW1lWzEyXSkgeworICAgIHN3aXRjaCAoTmFtZVs3XSkgewogICAgIGRlZmF1bHQ6IGJyZWFrOwotICAgIGNhc2UgJ2UnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCi0gICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEzLCAieGNlcHRpb24iLCA4KSAhPSAwKQorICAgIGNhc2UgJ2YnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJvcnRpZnlfc3RkbGliIiwgMTMpICE9IDApCiAgICAgICAgIGJyZWFrOwotICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09iakNFeGNlcHRpb247CSAvLyAiY2xhbmc6Om9iamNfZXhjZXB0aW9uIgotICAgIGNhc2UgJ28nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCi0gICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEzLCAid25lcnNoaXAiLCA4KSAhPSAwKQorICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0ZvcnRpZnlTdGRMaWI7CSAvLyAiY2xhbmc6OmZvcnRpZnlfc3RkbGliIgorICAgIGNhc2UgJ28nOgkgLy8gMiBzdHJpbmdzIHRvIG1hdGNoLgorICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiYmpjXyIsIDQpICE9IDApCiAgICAgICAgIGJyZWFrOwotICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09iakNPd25lcnNoaXA7CSAvLyAiY2xhbmc6Om9iamNfb3duZXJzaGlwIgorICAgICAgc3dpdGNoIChOYW1lWzEyXSkgeworICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICBjYXNlICdlJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEzLCAieGNlcHRpb24iLCA4KSAhPSAwKQorICAgICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ0V4Y2VwdGlvbjsJIC8vICJjbGFuZzo6b2JqY19leGNlcHRpb24iCisgICAgICBjYXNlICdvJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEzLCAid25lcnNoaXAiLCA4KSAhPSAwKQorICAgICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ093bmVyc2hpcDsJIC8vICJjbGFuZzo6b2JqY19vd25lcnNoaXAiCisgICAgICB9CisgICAgICBicmVhazsKICAgICB9CiAgICAgYnJlYWs7CiAgIGNhc2UgMjI6CSAvLyA1IHN0cmluZ3MgdG8gbWF0Y2guCkBAIC0zMzI1LDcgKzM2MDcsNyBAQAogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1R5cGVWaXNpYmlsaXR5OwkgLy8gImNsYW5nOjp0eXBlX3Zpc2liaWxpdHkiCiAgICAgfQogICAgIGJyZWFrOwotICBjYXNlIDIzOgkgLy8gNSBzdHJpbmdzIHRvIG1hdGNoLgorICBjYXNlIDIzOgkgLy8gNiBzdHJpbmdzIHRvIG1hdGNoLgogICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMCwgImNsYW5nOjoiLCA3KSAhPSAwKQogICAgICAgYnJlYWs7CiAgICAgc3dpdGNoIChOYW1lWzddKSB7CkBAIC0zMzUxLDYgKzM2MzMsMTAgQEAKICAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX05TQ29uc3VtZXNTZWxmOwkgLy8gImNsYW5nOjpuc19jb25zdW1lc19zZWxmIgogICAgICAgfQogICAgICAgYnJlYWs7CisgICAgY2FzZSAnbyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgInNfY29uc3VtZXNfdGhpcyIsIDE1KSAhPSAwKQorICAgICAgICBicmVhazsKKyAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PU0NvbnN1bWVzVGhpczsJIC8vICJjbGFuZzo6b3NfY29uc3VtZXNfdGhpcyIKICAgICBjYXNlICdwJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgogICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiYXNzX29iamVjdF9zaXplIiwgMTUpICE9IDApCiAgICAgICAgIGJyZWFrOwpAQCAtMzM3MiwxMSArMzY1OCwxNSBAQAogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX093bmVyc2hpcDsJIC8vICJjbGFuZzo6b3duZXJzaGlwX3JldHVybnMiCiAgICAgfQogICAgIGJyZWFrOwotICBjYXNlIDI1OgkgLy8gNyBzdHJpbmdzIHRvIG1hdGNoLgorICBjYXNlIDI1OgkgLy8gOSBzdHJpbmdzIHRvIG1hdGNoLgogICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMCwgImNsYW5nOjoiLCA3KSAhPSAwKQogICAgICAgYnJlYWs7CiAgICAgc3dpdGNoIChOYW1lWzddKSB7CiAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgY2FzZSAnYSc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgImFyY2g2NF92ZWN0b3JfcGNzIiwgMTcpICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX0FBcmNoNjRWZWN0b3JQY3M7CSAvLyAiY2xhbmc6OmFhcmNoNjRfdmVjdG9yX3BjcyIKICAgICBjYXNlICdkJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgogICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiaXNhYmxlX3RhaWxfY2FsbHMiLCAxNykgIT0gMCkKICAgICAgICAgYnJlYWs7CkBAIC0zNDA0LDE3ICszNjk0LDI4IEBACiAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9Ob1N0YWNrUHJvdGVjdG9yOwkgLy8gImNsYW5nOjpub19zdGFja19wcm90ZWN0b3IiCiAgICAgICB9CiAgICAgICBicmVhazsKLSAgICBjYXNlICdvJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgotICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiYmpjX21ldGhvZF9mYW1pbHkiLCAxNykgIT0gMCkKKyAgICBjYXNlICdvJzoJIC8vIDIgc3RyaW5ncyB0byBtYXRjaC4KKyAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgImJqY18iLCA0KSAhPSAwKQogICAgICAgICBicmVhazsKLSAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDTWV0aG9kRmFtaWx5OwkgLy8gImNsYW5nOjpvYmpjX21ldGhvZF9mYW1pbHkiCisgICAgICBzd2l0Y2ggKE5hbWVbMTJdKSB7CisgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgIGNhc2UgJ20nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMTMsICJldGhvZF9mYW1pbHkiLCAxMikgIT0gMCkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09iakNNZXRob2RGYW1pbHk7CSAvLyAiY2xhbmc6Om9iamNfbWV0aG9kX2ZhbWlseSIKKyAgICAgIGNhc2UgJ24nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMTMsICJvbmxhenlfY2xhc3MiLCAxMikgIT0gMCkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09iakNOb25MYXp5Q2xhc3M7CSAvLyAiY2xhbmc6Om9iamNfbm9ubGF6eV9jbGFzcyIKKyAgICAgIH0KKyAgICAgIGJyZWFrOwogICAgIGNhc2UgJ3MnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJ3aWZ0X2Vycm9yX3Jlc3VsdCIsIDE3KSAhPSAwKQogICAgICAgICBicmVhazsKICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9Td2lmdEVycm9yUmVzdWx0OwkgLy8gImNsYW5nOjpzd2lmdF9lcnJvcl9yZXN1bHQiCiAgICAgfQogICAgIGJyZWFrOwotICBjYXNlIDI2OgkgLy8gNyBzdHJpbmdzIHRvIG1hdGNoLgorICBjYXNlIDI2OgkgLy8gOCBzdHJpbmdzIHRvIG1hdGNoLgogICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMCwgImNsYW5nOjoiLCA3KSAhPSAwKQogICAgICAgYnJlYWs7CiAgICAgc3dpdGNoIChOYW1lWzddKSB7CkBAIC0zNDQyLDMwICszNzQzLDM5IEBACiAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJzX3JldHVybnNfcmV0YWluZWQiLCAxOCkgIT0gMCkKICAgICAgICAgYnJlYWs7CiAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfTlNSZXR1cm5zUmV0YWluZWQ7CSAvLyAiY2xhbmc6Om5zX3JldHVybnNfcmV0YWluZWQiCi0gICAgY2FzZSAnbyc6CSAvLyAzIHN0cmluZ3MgdG8gbWF0Y2guCi0gICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJiamNfIiwgNCkgIT0gMCkKLSAgICAgICAgYnJlYWs7Ci0gICAgICBzd2l0Y2ggKE5hbWVbMTJdKSB7CisgICAgY2FzZSAnbyc6CSAvLyA0IHN0cmluZ3MgdG8gbWF0Y2guCisgICAgICBzd2l0Y2ggKE5hbWVbOF0pIHsKICAgICAgIGRlZmF1bHQ6IGJyZWFrOwotICAgICAgY2FzZSAnYic6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCi0gICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMTMsICJyaWRnZV8iLCA2KSAhPSAwKQorICAgICAgY2FzZSAnYic6CSAvLyAzIHN0cmluZ3MgdG8gbWF0Y2guCisgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOSwgImpjXyIsIDMpICE9IDApCiAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHN3aXRjaCAoTmFtZVsxOV0pIHsKKyAgICAgICAgc3dpdGNoIChOYW1lWzEyXSkgewogICAgICAgICBkZWZhdWx0OiBicmVhazsKLSAgICAgICAgY2FzZSAnbSc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KLSAgICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzIwLCAidXRhYmxlIiwgNikgIT0gMCkKKyAgICAgICAgY2FzZSAnYic6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCisgICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxMywgInJpZGdlXyIsIDYpICE9IDApCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ0JyaWRnZU11dGFibGU7CSAvLyAiY2xhbmc6Om9iamNfYnJpZGdlX211dGFibGUiCisgICAgICAgICAgc3dpdGNoIChOYW1lWzE5XSkgeworICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgICAgIGNhc2UgJ20nOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCisgICAgICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzIwLCAidXRhYmxlIiwgNikgIT0gMCkKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ0JyaWRnZU11dGFibGU7CSAvLyAiY2xhbmc6Om9iamNfYnJpZGdlX211dGFibGUiCisgICAgICAgICAgY2FzZSAncic6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgICAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMjAsICJlbGF0ZWQiLCA2KSAhPSAwKQorICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDQnJpZGdlUmVsYXRlZDsJIC8vICJjbGFuZzo6b2JqY19icmlkZ2VfcmVsYXRlZCIKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ3InOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCi0gICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsyMCwgImVsYXRlZCIsIDYpICE9IDApCisgICAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSsxMywgImVxdWlyZXNfc3VwZXIiLCAxMykgIT0gMCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDQnJpZGdlUmVsYXRlZDsJIC8vICJjbGFuZzo6b2JqY19icmlkZ2VfcmVsYXRlZCIKKyAgICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ1JlcXVpcmVzU3VwZXI7CSAvLyAiY2xhbmc6Om9iamNfcmVxdWlyZXNfc3VwZXIiCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdyJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgotICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEzLCAiZXF1aXJlc19zdXBlciIsIDEzKSAhPSAwKQorICAgICAgY2FzZSAncyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs5LCAiX3JldHVybnNfcmV0YWluZWQiLCAxNykgIT0gMCkKICAgICAgICAgICBicmVhazsKLSAgICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09iakNSZXF1aXJlc1N1cGVyOwkgLy8gImNsYW5nOjpvYmpjX3JlcXVpcmVzX3N1cGVyIgorICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT1NSZXR1cm5zUmV0YWluZWQ7CSAvLyAiY2xhbmc6Om9zX3JldHVybnNfcmV0YWluZWQiCiAgICAgICB9CiAgICAgICBicmVhazsKICAgICB9CkBAIC0zNTM5LDcgKzM4NDksNyBAQAogICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX1hSYXlJbnN0cnVtZW50OwkgLy8gImNsYW5nOjp4cmF5X2Fsd2F5c19pbnN0cnVtZW50IgogICAgIH0KICAgICBicmVhazsKLSAgY2FzZSAzMDoJIC8vIDMgc3RyaW5ncyB0byBtYXRjaC4KKyAgY2FzZSAzMDoJIC8vIDQgc3RyaW5ncyB0byBtYXRjaC4KICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzAsICJjbGFuZzo6IiwgNykgIT0gMCkKICAgICAgIGJyZWFrOwogICAgIHN3aXRjaCAoTmFtZVs3XSkgewpAQCAtMzU2MywzMSArMzg3Myw2OSBAQAogICAgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfTlNSZXR1cm5zTm90UmV0YWluZWQ7CSAvLyAiY2xhbmc6Om5zX3JldHVybnNfbm90X3JldGFpbmVkIgogICAgICAgfQogICAgICAgYnJlYWs7CisgICAgY2FzZSAnbyc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KKyAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOCwgInNfcmV0dXJuc19ub3RfcmV0YWluZWQiLCAyMikgIT0gMCkKKyAgICAgICAgYnJlYWs7CisgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT1NSZXR1cm5zTm90UmV0YWluZWQ7CSAvLyAiY2xhbmc6Om9zX3JldHVybnNfbm90X3JldGFpbmVkIgogICAgIH0KICAgICBicmVhazsKKyAgY2FzZSAzMToJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMCwgImNsYW5nOjpvYmpjX2V4dGVybmFsbHlfcmV0YWluZWQiLCAzMSkgIT0gMCkKKyAgICAgIGJyZWFrOworICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDRXh0ZXJuYWxseVJldGFpbmVkOwkgLy8gImNsYW5nOjpvYmpjX2V4dGVybmFsbHlfcmV0YWluZWQiCiAgIGNhc2UgMzI6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzAsICJjbGFuZzo6bm9fdGhyZWFkX3NhZmV0eV9hbmFseXNpcyIsIDMyKSAhPSAwKQogICAgICAgYnJlYWs7CiAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX05vVGhyZWFkU2FmZXR5QW5hbHlzaXM7CSAvLyAiY2xhbmc6Om5vX3RocmVhZF9zYWZldHlfYW5hbHlzaXMiCi0gIGNhc2UgMzM6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KLSAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzAsICJjbGFuZzo6b2JqY19yZXR1cm5zX2lubmVyX3BvaW50ZXIiLCAzMykgIT0gMCkKKyAgY2FzZSAzMzoJIC8vIDIgc3RyaW5ncyB0byBtYXRjaC4KKyAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzAsICJjbGFuZzo6IiwgNykgIT0gMCkKICAgICAgIGJyZWFrOwotICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDUmV0dXJuc0lubmVyUG9pbnRlcjsJIC8vICJjbGFuZzo6b2JqY19yZXR1cm5zX2lubmVyX3BvaW50ZXIiCi0gIGNhc2UgMzQ6CSAvLyAyIHN0cmluZ3MgdG8gbWF0Y2guCi0gICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSswLCAiY2xhbmc6Om9iamNfIiwgMTIpICE9IDApCi0gICAgICBicmVhazsKLSAgICBzd2l0Y2ggKE5hbWVbMTJdKSB7CisgICAgc3dpdGNoIChOYW1lWzddKSB7CiAgICAgZGVmYXVsdDogYnJlYWs7Ci0gICAgY2FzZSAnZCc6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KLSAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMTMsICJlc2lnbmF0ZWRfaW5pdGlhbGl6ZXIiLCAyMSkgIT0gMCkKKyAgICBjYXNlICdvJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs4LCAiYmpjX3JldHVybnNfaW5uZXJfcG9pbnRlciIsIDI1KSAhPSAwKQogICAgICAgICBicmVhazsKLSAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDRGVzaWduYXRlZEluaXRpYWxpemVyOwkgLy8gImNsYW5nOjpvYmpjX2Rlc2lnbmF0ZWRfaW5pdGlhbGl6ZXIiCisgICAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT2JqQ1JldHVybnNJbm5lclBvaW50ZXI7CSAvLyAiY2xhbmc6Om9iamNfcmV0dXJuc19pbm5lcl9wb2ludGVyIgogICAgIGNhc2UgJ3MnOgkgLy8gMSBzdHJpbmcgdG8gbWF0Y2guCi0gICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEzLCAidWJjbGFzc2luZ19yZXN0cmljdGVkIiwgMjEpICE9IDApCisgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzgsICJwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nIiwgMjUpICE9IDApCiAgICAgICAgIGJyZWFrOwotICAgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX09iakNTdWJjbGFzc2luZ1Jlc3RyaWN0ZWQ7CSAvLyAiY2xhbmc6Om9iamNfc3ViY2xhc3NpbmdfcmVzdHJpY3RlZCIKKyAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmc7CSAvLyAiY2xhbmc6OnNwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nIgogICAgIH0KICAgICBicmVhazsKKyAgY2FzZSAzNDoJIC8vIDMgc3RyaW5ncyB0byBtYXRjaC4KKyAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzAsICJjbGFuZzo6byIsIDgpICE9IDApCisgICAgICBicmVhazsKKyAgICBzd2l0Y2ggKE5hbWVbOF0pIHsKKyAgICBkZWZhdWx0OiBicmVhazsKKyAgICBjYXNlICdiJzoJIC8vIDIgc3RyaW5ncyB0byBtYXRjaC4KKyAgICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrOSwgImpjXyIsIDMpICE9IDApCisgICAgICAgIGJyZWFrOworICAgICAgc3dpdGNoIChOYW1lWzEyXSkgeworICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICBjYXNlICdkJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEzLCAiZXNpZ25hdGVkX2luaXRpYWxpemVyIiwgMjEpICE9IDApCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDRGVzaWduYXRlZEluaXRpYWxpemVyOwkgLy8gImNsYW5nOjpvYmpjX2Rlc2lnbmF0ZWRfaW5pdGlhbGl6ZXIiCisgICAgICBjYXNlICdzJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzEzLCAidWJjbGFzc2luZ19yZXN0cmljdGVkIiwgMjEpICE9IDApCisgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PYmpDU3ViY2xhc3NpbmdSZXN0cmljdGVkOwkgLy8gImNsYW5nOjpvYmpjX3N1YmNsYXNzaW5nX3Jlc3RyaWN0ZWQiCisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlICdzJzoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgICAgaWYgKG1lbWNtcChOYW1lLmRhdGEoKSs5LCAiX3JldHVybnNfcmV0YWluZWRfb25femVybyIsIDI1KSAhPSAwKQorICAgICAgICBicmVhazsKKyAgICAgIHJldHVybiBQYXJzZWRBdHRyOjpBVF9PU1JldHVybnNSZXRhaW5lZE9uWmVybzsJIC8vICJjbGFuZzo6b3NfcmV0dXJuc19yZXRhaW5lZF9vbl96ZXJvIgorICAgIH0KKyAgICBicmVhazsKKyAgY2FzZSAzNjoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMCwgImNsYW5nOjpub19zcGVjdWxhdGl2ZV9sb2FkX2hhcmRlbmluZyIsIDM2KSAhPSAwKQorICAgICAgYnJlYWs7CisgICAgcmV0dXJuIFBhcnNlZEF0dHI6OkFUX05vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nOwkgLy8gImNsYW5nOjpub19zcGVjdWxhdGl2ZV9sb2FkX2hhcmRlbmluZyIKKyAgY2FzZSAzODoJIC8vIDEgc3RyaW5nIHRvIG1hdGNoLgorICAgIGlmIChtZW1jbXAoTmFtZS5kYXRhKCkrMCwgImNsYW5nOjpvc19yZXR1cm5zX3JldGFpbmVkX29uX25vbl96ZXJvIiwgMzgpICE9IDApCisgICAgICBicmVhazsKKyAgICByZXR1cm4gUGFyc2VkQXR0cjo6QVRfT1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm87CSAvLyAiY2xhbmc6Om9zX3JldHVybnNfcmV0YWluZWRfb25fbm9uX3plcm8iCiAgIGNhc2UgNDE6CSAvLyAxIHN0cmluZyB0byBtYXRjaC4KICAgICBpZiAobWVtY21wKE5hbWUuZGF0YSgpKzAsICJjbGFuZzo6b2JqY19yZXF1aXJlc19wcm9wZXJ0eV9kZWZpbml0aW9ucyIsIDQxKSAhPSAwKQogICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0F0dHJQYXJzZWRBdHRyTGlzdC5pbmMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0F0dHJQYXJzZWRBdHRyTGlzdC5pbmMKaW5kZXggOGJhYzI0OS4uZDRmM2ZkMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9BdHRyUGFyc2VkQXR0ckxpc3QuaW5jCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvQXR0clBhcnNlZEF0dHJMaXN0LmluYwpAQCAtMTAsNiArMTAsNyBAQAogI2RlZmluZSBQQVJTRURfQVRUUihOQU1FKSBOQU1FCiAjZW5kaWYKIAorUEFSU0VEX0FUVFIoQUFyY2g2NFZlY3RvclBjcykKIFBBUlNFRF9BVFRSKEFNREdQVUZsYXRXb3JrR3JvdXBTaXplKQogUEFSU0VEX0FUVFIoQU1ER1BVTnVtU0dQUikKIFBBUlNFRF9BVFRSKEFNREdQVU51bVZHUFIpCkBAIC01OCw2ICs1OSw3IEBACiBQQVJTRURfQVRUUihDVURBU2hhcmVkKQogUEFSU0VEX0FUVFIoQ1hYMTFOb1JldHVybikKIFBBUlNFRF9BVFRSKENhbGxhYmxlV2hlbikKK1BBUlNFRF9BVFRSKENhbGxiYWNrKQogUEFSU0VEX0FUVFIoQ2FwYWJpbGl0eSkKIFBBUlNFRF9BVFRSKENhcnJpZXNEZXBlbmRlbmN5KQogUEFSU0VEX0FUVFIoQ2xlYW51cCkKQEAgLTcxLDcgKzczLDkgQEAKIFBBUlNFRF9BVFRSKENvbnN1bWFibGVTZXRPblJlYWQpCiBQQVJTRURfQVRUUihDb252ZXJnZW50KQogUEFSU0VEX0FUVFIoRExMRXhwb3J0KQorUEFSU0VEX0FUVFIoRExMRXhwb3J0U3RhdGljTG9jYWwpCiBQQVJTRURfQVRUUihETExJbXBvcnQpCitQQVJTRURfQVRUUihETExJbXBvcnRTdGF0aWNMb2NhbCkKIFBBUlNFRF9BVFRSKERlcHJlY2F0ZWQpCiBQQVJTRURfQVRUUihEZXN0cnVjdG9yKQogUEFSU0VEX0FUVFIoRGlhZ25vc2VJZikKQEAgLTg5LDYgKzkzLDcgQEAKIFBBUlNFRF9BVFRSKEZsYXR0ZW4pCiBQQVJTRURfQVRUUihGb3JtYXQpCiBQQVJTRURfQVRUUihGb3JtYXRBcmcpCitQQVJTRURfQVRUUihGb3J0aWZ5U3RkTGliKQogUEFSU0VEX0FUVFIoR05VSW5saW5lKQogUEFSU0VEX0FUVFIoR3VhcmRlZEJ5KQogUEFSU0VEX0FUVFIoR3VhcmRlZFZhcikKQEAgLTEzMCw2ICsxMzUsNyBAQAogUEFSU0VEX0FUVFIoTm9BbGlhcykKIFBBUlNFRF9BVFRSKE5vQ29tbW9uKQogUEFSU0VEX0FUVFIoTm9EZWJ1ZykKK1BBUlNFRF9BVFRSKE5vRGVyZWYpCiBQQVJTRURfQVRUUihOb0Rlc3Ryb3kpCiBQQVJTRURfQVRUUihOb0R1cGxpY2F0ZSkKIFBBUlNFRF9BVFRSKE5vRXNjYXBlKQpAQCAtMTQwLDEyICsxNDYsMTkgQEAKIFBBUlNFRF9BVFRSKE5vUmV0dXJuKQogUEFSU0VEX0FUVFIoTm9TYW5pdGl6ZSkKIFBBUlNFRF9BVFRSKE5vU2FuaXRpemVTcGVjaWZpYykKK1BBUlNFRF9BVFRSKE5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nKQogUEFSU0VEX0FUVFIoTm9TcGxpdFN0YWNrKQogUEFSU0VEX0FUVFIoTm9TdGFja1Byb3RlY3RvcikKIFBBUlNFRF9BVFRSKE5vVGhyZWFkU2FmZXR5QW5hbHlzaXMpCiBQQVJTRURfQVRUUihOb1Rocm93KQogUEFSU0VEX0FUVFIoTm9uTnVsbCkKIFBBUlNFRF9BVFRSKE5vdFRhaWxDYWxsZWQpCitQQVJTRURfQVRUUihPU0NvbnN1bWVkKQorUEFSU0VEX0FUVFIoT1NDb25zdW1lc1RoaXMpCitQQVJTRURfQVRUUihPU1JldHVybnNOb3RSZXRhaW5lZCkKK1BBUlNFRF9BVFRSKE9TUmV0dXJuc1JldGFpbmVkKQorUEFSU0VEX0FUVFIoT1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm8pCitQQVJTRURfQVRUUihPU1JldHVybnNSZXRhaW5lZE9uWmVybykKIFBBUlNFRF9BVFRSKE9iakNCb3hhYmxlKQogUEFSU0VEX0FUVFIoT2JqQ0JyaWRnZSkKIFBBUlNFRF9BVFRSKE9iakNCcmlkZ2VNdXRhYmxlKQpAQCAtMTUzLDEyICsxNjYsMTQgQEAKIFBBUlNFRF9BVFRSKE9iakNEZXNpZ25hdGVkSW5pdGlhbGl6ZXIpCiBQQVJTRURfQVRUUihPYmpDRXhjZXB0aW9uKQogUEFSU0VEX0FUVFIoT2JqQ0V4cGxpY2l0UHJvdG9jb2xJbXBsKQorUEFSU0VEX0FUVFIoT2JqQ0V4dGVybmFsbHlSZXRhaW5lZCkKIFBBUlNFRF9BVFRSKE9iakNHQykKIFBBUlNFRF9BVFRSKE9iakNJbmRlcGVuZGVudENsYXNzKQogUEFSU0VEX0FUVFIoT2JqQ0luZXJ0VW5zYWZlVW5yZXRhaW5lZCkKIFBBUlNFRF9BVFRSKE9iakNLaW5kT2YpCiBQQVJTRURfQVRUUihPYmpDTWV0aG9kRmFtaWx5KQogUEFSU0VEX0FUVFIoT2JqQ05TT2JqZWN0KQorUEFSU0VEX0FUVFIoT2JqQ05vbkxhenlDbGFzcykKIFBBUlNFRF9BVFRSKE9iakNPd25lcnNoaXApCiBQQVJTRURfQVRUUihPYmpDUHJlY2lzZUxpZmV0aW1lKQogUEFSU0VEX0FUVFIoT2JqQ1JlcXVpcmVzUHJvcGVydHlEZWZzKQpAQCAtMjE2LDYgKzIzMSw3IEBACiBQQVJTRURfQVRUUihTZW50aW5lbCkKIFBBUlNFRF9BVFRSKFNldFR5cGVzdGF0ZSkKIFBBUlNFRF9BVFRSKFNoYXJlZFRyeWxvY2tGdW5jdGlvbikKK1BBUlNFRF9BVFRSKFNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZykKIFBBUlNFRF9BVFRSKFN0ZENhbGwpCiBQQVJTRURfQVRUUihTdXBwcmVzcykKIFBBUlNFRF9BVFRSKFN3aWZ0Q2FsbCkKQEAgLTIzOCw2ICsyNTQsNyBAQAogUEFSU0VEX0FUVFIoVHlwZVZpc2liaWxpdHkpCiBQQVJTRURfQVRUUihVUHRyKQogUEFSU0VEX0FUVFIoVW5hdmFpbGFibGUpCitQQVJTRURfQVRUUihVbmluaXRpYWxpemVkKQogUEFSU0VEX0FUVFIoVW51c2VkKQogUEFSU0VEX0FUVFIoVXNlZCkKIFBBUlNFRF9BVFRSKFV1aWQpCkBAIC0yNTEsNiArMjY4LDggQEAKIFBBUlNFRF9BVFRSKFdlYWspCiBQQVJTRURfQVRUUihXZWFrSW1wb3J0KQogUEFSU0VEX0FUVFIoV2Vha1JlZikKK1BBUlNFRF9BVFRSKFdlYkFzc2VtYmx5SW1wb3J0TW9kdWxlKQorUEFSU0VEX0FUVFIoV2ViQXNzZW1ibHlJbXBvcnROYW1lKQogUEFSU0VEX0FUVFIoV29ya0dyb3VwU2l6ZUhpbnQpCiBQQVJTRURfQVRUUihYODZGb3JjZUFsaWduQXJnUG9pbnRlcikKIFBBUlNFRF9BVFRSKFhSYXlJbnN0cnVtZW50KQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9BdHRyU3BlbGxpbmdMaXN0SW5kZXguaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9BdHRyU3BlbGxpbmdMaXN0SW5kZXguaW5jCmluZGV4IDI5NGZjNmMuLjkwNTYzODggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvQXR0clNwZWxsaW5nTGlzdEluZGV4LmluYworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0F0dHJTcGVsbGluZ0xpc3RJbmRleC5pbmMKQEAgLTcsNiArNywxNSBAQAogXCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ki8KIAogICBzd2l0Y2ggKEF0dHJLaW5kKSB7CisgIGNhc2UgQVRfQUFyY2g2NFZlY3RvclBjczogeworICAgIGlmIChOYW1lID09ICJhYXJjaDY0X3ZlY3Rvcl9wY3MiICYmIFN5bnRheFVzZWQgPT0gMCAmJiBTY29wZSA9PSAiIikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKE5hbWUgPT0gImFhcmNoNjRfdmVjdG9yX3BjcyIgJiYgU3ludGF4VXNlZCA9PSAxICYmIFNjb3BlID09ICJjbGFuZyIpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChOYW1lID09ICJhYXJjaDY0X3ZlY3Rvcl9wY3MiICYmIFN5bnRheFVzZWQgPT0gMiAmJiBTY29wZSA9PSAiY2xhbmciKQorICAgICAgICByZXR1cm4gMjsKKyAgICBicmVhazsKKyAgfQogICBjYXNlIEFUX0FNREdQVUZsYXRXb3JrR3JvdXBTaXplOiB7CiAgICAgaWYgKE5hbWUgPT0gImFtZGdwdV9mbGF0X3dvcmtfZ3JvdXBfc2l6ZSIgJiYgU3ludGF4VXNlZCA9PSAwICYmIFNjb3BlID09ICIiKQogICAgICAgICByZXR1cm4gMDsKQEAgLTMxMyw2ICszMjIsOCBAQAogICAgICAgICByZXR1cm4gMTsKICAgICBpZiAoTmFtZSA9PSAiY3B1X2Rpc3BhdGNoIiAmJiBTeW50YXhVc2VkID09IDIgJiYgU2NvcGUgPT0gImNsYW5nIikKICAgICAgICAgcmV0dXJuIDI7CisgICAgaWYgKE5hbWUgPT0gImNwdV9kaXNwYXRjaCIgJiYgU3ludGF4VXNlZCA9PSAzICYmIFNjb3BlID09ICIiKQorICAgICAgICByZXR1cm4gMzsKICAgICBicmVhazsKICAgfQogICBjYXNlIEFUX0NQVVNwZWNpZmljOiB7CkBAIC0zMjIsNiArMzMzLDggQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgaWYgKE5hbWUgPT0gImNwdV9zcGVjaWZpYyIgJiYgU3ludGF4VXNlZCA9PSAyICYmIFNjb3BlID09ICJjbGFuZyIpCiAgICAgICAgIHJldHVybiAyOworICAgIGlmIChOYW1lID09ICJjcHVfc3BlY2lmaWMiICYmIFN5bnRheFVzZWQgPT0gMyAmJiBTY29wZSA9PSAiIikKKyAgICAgICAgcmV0dXJuIDM7CiAgICAgYnJlYWs7CiAgIH0KICAgY2FzZSBBVF9DVURBQ29uc3RhbnQ6IHsKQEAgLTM4MSw2ICszOTQsMTUgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgYnJlYWs7CiAgIH0KKyAgY2FzZSBBVF9DYWxsYmFjazogeworICAgIGlmIChOYW1lID09ICJjYWxsYmFjayIgJiYgU3ludGF4VXNlZCA9PSAwICYmIFNjb3BlID09ICIiKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoTmFtZSA9PSAiY2FsbGJhY2siICYmIFN5bnRheFVzZWQgPT0gMSAmJiBTY29wZSA9PSAiY2xhbmciKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoTmFtZSA9PSAiY2FsbGJhY2siICYmIFN5bnRheFVzZWQgPT0gMiAmJiBTY29wZSA9PSAiY2xhbmciKQorICAgICAgICByZXR1cm4gMjsKKyAgICBicmVhazsKKyAgfQogICBjYXNlIEFUX0NhcGFiaWxpdHk6IHsKICAgICBpZiAoTmFtZSA9PSAiY2FwYWJpbGl0eSIgJiYgU3ludGF4VXNlZCA9PSAwICYmIFNjb3BlID09ICIiKQogICAgICAgICByZXR1cm4gMDsKQEAgLTQ4Miw2ICs1MDQsOSBAQAogICAgICAgICByZXR1cm4gMjsKICAgICBicmVhazsKICAgfQorICBjYXNlIEFUX0RMTEV4cG9ydFN0YXRpY0xvY2FsOiB7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBBVF9ETExJbXBvcnQ6IHsKICAgICBpZiAoTmFtZSA9PSAiZGxsaW1wb3J0IiAmJiBTeW50YXhVc2VkID09IDMgJiYgU2NvcGUgPT0gIiIpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNDkxLDYgKzUxNiw5IEBACiAgICAgICAgIHJldHVybiAyOwogICAgIGJyZWFrOwogICB9CisgIGNhc2UgQVRfRExMSW1wb3J0U3RhdGljTG9jYWw6IHsKKyAgICBicmVhazsKKyAgfQogICBjYXNlIEFUX0RlcHJlY2F0ZWQ6IHsKICAgICBpZiAoTmFtZSA9PSAiZGVwcmVjYXRlZCIgJiYgU3ludGF4VXNlZCA9PSAwICYmIFNjb3BlID09ICIiKQogICAgICAgICByZXR1cm4gMDsKQEAgLTYyMiw2ICs2NTAsMTUgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgYnJlYWs7CiAgIH0KKyAgY2FzZSBBVF9Gb3J0aWZ5U3RkTGliOiB7CisgICAgaWYgKE5hbWUgPT0gImZvcnRpZnlfc3RkbGliIiAmJiBTeW50YXhVc2VkID09IDAgJiYgU2NvcGUgPT0gIiIpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChOYW1lID09ICJmb3J0aWZ5X3N0ZGxpYiIgJiYgU3ludGF4VXNlZCA9PSAxICYmIFNjb3BlID09ICJjbGFuZyIpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChOYW1lID09ICJmb3J0aWZ5X3N0ZGxpYiIgJiYgU3ludGF4VXNlZCA9PSAyICYmIFNjb3BlID09ICJjbGFuZyIpCisgICAgICAgIHJldHVybiAyOworICAgIGJyZWFrOworICB9CiAgIGNhc2UgQVRfR05VSW5saW5lOiB7CiAgICAgaWYgKE5hbWUgPT0gImdudV9pbmxpbmUiICYmIFN5bnRheFVzZWQgPT0gMCAmJiBTY29wZSA9PSAiIikKICAgICAgICAgcmV0dXJuIDA7CkBAIC05NDMsNiArOTgwLDE1IEBACiAgICAgICAgIHJldHVybiAxOwogICAgIGJyZWFrOwogICB9CisgIGNhc2UgQVRfTm9EZXJlZjogeworICAgIGlmIChOYW1lID09ICJub2RlcmVmIiAmJiBTeW50YXhVc2VkID09IDAgJiYgU2NvcGUgPT0gIiIpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChOYW1lID09ICJub2RlcmVmIiAmJiBTeW50YXhVc2VkID09IDEgJiYgU2NvcGUgPT0gImNsYW5nIikKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKE5hbWUgPT0gIm5vZGVyZWYiICYmIFN5bnRheFVzZWQgPT0gMiAmJiBTY29wZSA9PSAiY2xhbmciKQorICAgICAgICByZXR1cm4gMjsKKyAgICBicmVhazsKKyAgfQogICBjYXNlIEFUX05vRGVzdHJveTogewogICAgIGlmIChOYW1lID09ICJub19kZXN0cm95IiAmJiBTeW50YXhVc2VkID09IDAgJiYgU2NvcGUgPT0gIiIpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTAzNyw2ICsxMDgzLDE1IEBACiAgICAgICAgIHJldHVybiA4OwogICAgIGJyZWFrOwogICB9CisgIGNhc2UgQVRfTm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmc6IHsKKyAgICBpZiAoTmFtZSA9PSAibm9fc3BlY3VsYXRpdmVfbG9hZF9oYXJkZW5pbmciICYmIFN5bnRheFVzZWQgPT0gMCAmJiBTY29wZSA9PSAiIikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKE5hbWUgPT0gIm5vX3NwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nIiAmJiBTeW50YXhVc2VkID09IDEgJiYgU2NvcGUgPT0gImNsYW5nIikKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKE5hbWUgPT0gIm5vX3NwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nIiAmJiBTeW50YXhVc2VkID09IDIgJiYgU2NvcGUgPT0gImNsYW5nIikKKyAgICAgICAgcmV0dXJuIDI7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBBVF9Ob1NwbGl0U3RhY2s6IHsKICAgICBpZiAoTmFtZSA9PSAibm9fc3BsaXRfc3RhY2siICYmIFN5bnRheFVzZWQgPT0gMCAmJiBTY29wZSA9PSAiIikKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDg3LDYgKzExNDIsNjAgQEAKICAgICAgICAgcmV0dXJuIDI7CiAgICAgYnJlYWs7CiAgIH0KKyAgY2FzZSBBVF9PU0NvbnN1bWVkOiB7CisgICAgaWYgKE5hbWUgPT0gIm9zX2NvbnN1bWVkIiAmJiBTeW50YXhVc2VkID09IDAgJiYgU2NvcGUgPT0gIiIpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChOYW1lID09ICJvc19jb25zdW1lZCIgJiYgU3ludGF4VXNlZCA9PSAxICYmIFNjb3BlID09ICJjbGFuZyIpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChOYW1lID09ICJvc19jb25zdW1lZCIgJiYgU3ludGF4VXNlZCA9PSAyICYmIFNjb3BlID09ICJjbGFuZyIpCisgICAgICAgIHJldHVybiAyOworICAgIGJyZWFrOworICB9CisgIGNhc2UgQVRfT1NDb25zdW1lc1RoaXM6IHsKKyAgICBpZiAoTmFtZSA9PSAib3NfY29uc3VtZXNfdGhpcyIgJiYgU3ludGF4VXNlZCA9PSAwICYmIFNjb3BlID09ICIiKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoTmFtZSA9PSAib3NfY29uc3VtZXNfdGhpcyIgJiYgU3ludGF4VXNlZCA9PSAxICYmIFNjb3BlID09ICJjbGFuZyIpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChOYW1lID09ICJvc19jb25zdW1lc190aGlzIiAmJiBTeW50YXhVc2VkID09IDIgJiYgU2NvcGUgPT0gImNsYW5nIikKKyAgICAgICAgcmV0dXJuIDI7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSBBVF9PU1JldHVybnNOb3RSZXRhaW5lZDogeworICAgIGlmIChOYW1lID09ICJvc19yZXR1cm5zX25vdF9yZXRhaW5lZCIgJiYgU3ludGF4VXNlZCA9PSAwICYmIFNjb3BlID09ICIiKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoTmFtZSA9PSAib3NfcmV0dXJuc19ub3RfcmV0YWluZWQiICYmIFN5bnRheFVzZWQgPT0gMSAmJiBTY29wZSA9PSAiY2xhbmciKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoTmFtZSA9PSAib3NfcmV0dXJuc19ub3RfcmV0YWluZWQiICYmIFN5bnRheFVzZWQgPT0gMiAmJiBTY29wZSA9PSAiY2xhbmciKQorICAgICAgICByZXR1cm4gMjsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIEFUX09TUmV0dXJuc1JldGFpbmVkOiB7CisgICAgaWYgKE5hbWUgPT0gIm9zX3JldHVybnNfcmV0YWluZWQiICYmIFN5bnRheFVzZWQgPT0gMCAmJiBTY29wZSA9PSAiIikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKE5hbWUgPT0gIm9zX3JldHVybnNfcmV0YWluZWQiICYmIFN5bnRheFVzZWQgPT0gMSAmJiBTY29wZSA9PSAiY2xhbmciKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoTmFtZSA9PSAib3NfcmV0dXJuc19yZXRhaW5lZCIgJiYgU3ludGF4VXNlZCA9PSAyICYmIFNjb3BlID09ICJjbGFuZyIpCisgICAgICAgIHJldHVybiAyOworICAgIGJyZWFrOworICB9CisgIGNhc2UgQVRfT1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm86IHsKKyAgICBpZiAoTmFtZSA9PSAib3NfcmV0dXJuc19yZXRhaW5lZF9vbl9ub25femVybyIgJiYgU3ludGF4VXNlZCA9PSAwICYmIFNjb3BlID09ICIiKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoTmFtZSA9PSAib3NfcmV0dXJuc19yZXRhaW5lZF9vbl9ub25femVybyIgJiYgU3ludGF4VXNlZCA9PSAxICYmIFNjb3BlID09ICJjbGFuZyIpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChOYW1lID09ICJvc19yZXR1cm5zX3JldGFpbmVkX29uX25vbl96ZXJvIiAmJiBTeW50YXhVc2VkID09IDIgJiYgU2NvcGUgPT0gImNsYW5nIikKKyAgICAgICAgcmV0dXJuIDI7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSBBVF9PU1JldHVybnNSZXRhaW5lZE9uWmVybzogeworICAgIGlmIChOYW1lID09ICJvc19yZXR1cm5zX3JldGFpbmVkX29uX3plcm8iICYmIFN5bnRheFVzZWQgPT0gMCAmJiBTY29wZSA9PSAiIikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKE5hbWUgPT0gIm9zX3JldHVybnNfcmV0YWluZWRfb25femVybyIgJiYgU3ludGF4VXNlZCA9PSAxICYmIFNjb3BlID09ICJjbGFuZyIpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChOYW1lID09ICJvc19yZXR1cm5zX3JldGFpbmVkX29uX3plcm8iICYmIFN5bnRheFVzZWQgPT0gMiAmJiBTY29wZSA9PSAiY2xhbmciKQorICAgICAgICByZXR1cm4gMjsKKyAgICBicmVhazsKKyAgfQogICBjYXNlIEFUX09iakNCb3hhYmxlOiB7CiAgICAgaWYgKE5hbWUgPT0gIm9iamNfYm94YWJsZSIgJiYgU3ludGF4VXNlZCA9PSAwICYmIFNjb3BlID09ICIiKQogICAgICAgICByZXR1cm4gMDsKQEAgLTExNTAsNiArMTI1OSwxNSBAQAogICAgICAgICByZXR1cm4gMjsKICAgICBicmVhazsKICAgfQorICBjYXNlIEFUX09iakNFeHRlcm5hbGx5UmV0YWluZWQ6IHsKKyAgICBpZiAoTmFtZSA9PSAib2JqY19leHRlcm5hbGx5X3JldGFpbmVkIiAmJiBTeW50YXhVc2VkID09IDAgJiYgU2NvcGUgPT0gIiIpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChOYW1lID09ICJvYmpjX2V4dGVybmFsbHlfcmV0YWluZWQiICYmIFN5bnRheFVzZWQgPT0gMSAmJiBTY29wZSA9PSAiY2xhbmciKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoTmFtZSA9PSAib2JqY19leHRlcm5hbGx5X3JldGFpbmVkIiAmJiBTeW50YXhVc2VkID09IDIgJiYgU2NvcGUgPT0gImNsYW5nIikKKyAgICAgICAgcmV0dXJuIDI7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBBVF9PYmpDR0M6IHsKICAgICBpZiAoTmFtZSA9PSAib2JqY19nYyIgJiYgU3ludGF4VXNlZCA9PSAwICYmIFNjb3BlID09ICIiKQogICAgICAgICByZXR1cm4gMDsKQEAgLTExOTYsNiArMTMxNCwxNSBAQAogICAgICAgICByZXR1cm4gMjsKICAgICBicmVhazsKICAgfQorICBjYXNlIEFUX09iakNOb25MYXp5Q2xhc3M6IHsKKyAgICBpZiAoTmFtZSA9PSAib2JqY19ub25sYXp5X2NsYXNzIiAmJiBTeW50YXhVc2VkID09IDAgJiYgU2NvcGUgPT0gIiIpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChOYW1lID09ICJvYmpjX25vbmxhenlfY2xhc3MiICYmIFN5bnRheFVzZWQgPT0gMSAmJiBTY29wZSA9PSAiY2xhbmciKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoTmFtZSA9PSAib2JqY19ub25sYXp5X2NsYXNzIiAmJiBTeW50YXhVc2VkID09IDIgJiYgU2NvcGUgPT0gImNsYW5nIikKKyAgICAgICAgcmV0dXJuIDI7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBBVF9PYmpDT3duZXJzaGlwOiB7CiAgICAgaWYgKE5hbWUgPT0gIm9iamNfb3duZXJzaGlwIiAmJiBTeW50YXhVc2VkID09IDAgJiYgU2NvcGUgPT0gIiIpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTY0Nyw2ICsxNzc0LDE1IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIGJyZWFrOwogICB9CisgIGNhc2UgQVRfU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nOiB7CisgICAgaWYgKE5hbWUgPT0gInNwZWN1bGF0aXZlX2xvYWRfaGFyZGVuaW5nIiAmJiBTeW50YXhVc2VkID09IDAgJiYgU2NvcGUgPT0gIiIpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChOYW1lID09ICJzcGVjdWxhdGl2ZV9sb2FkX2hhcmRlbmluZyIgJiYgU3ludGF4VXNlZCA9PSAxICYmIFNjb3BlID09ICJjbGFuZyIpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChOYW1lID09ICJzcGVjdWxhdGl2ZV9sb2FkX2hhcmRlbmluZyIgJiYgU3ludGF4VXNlZCA9PSAyICYmIFNjb3BlID09ICJjbGFuZyIpCisgICAgICAgIHJldHVybiAyOworICAgIGJyZWFrOworICB9CiAgIGNhc2UgQVRfU3RkQ2FsbDogewogICAgIGlmIChOYW1lID09ICJzdGRjYWxsIiAmJiBTeW50YXhVc2VkID09IDAgJiYgU2NvcGUgPT0gIiIpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTgxNSw2ICsxOTUxLDEzIEBACiAgICAgICAgIHJldHVybiAyOwogICAgIGJyZWFrOwogICB9CisgIGNhc2UgQVRfVW5pbml0aWFsaXplZDogeworICAgIGlmIChOYW1lID09ICJ1bmluaXRpYWxpemVkIiAmJiBTeW50YXhVc2VkID09IDAgJiYgU2NvcGUgPT0gIiIpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChOYW1lID09ICJ1bmluaXRpYWxpemVkIiAmJiBTeW50YXhVc2VkID09IDEgJiYgU2NvcGUgPT0gImNsYW5nIikKKyAgICAgICAgcmV0dXJuIDE7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBBVF9VbnVzZWQ6IHsKICAgICBpZiAoTmFtZSA9PSAibWF5YmVfdW51c2VkIiAmJiBTeW50YXhVc2VkID09IDEgJiYgU2NvcGUgPT0gIiIpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTkyMiw2ICsyMDY1LDI0IEBACiAgICAgICAgIHJldHVybiAxOwogICAgIGJyZWFrOwogICB9CisgIGNhc2UgQVRfV2ViQXNzZW1ibHlJbXBvcnRNb2R1bGU6IHsKKyAgICBpZiAoTmFtZSA9PSAiaW1wb3J0X21vZHVsZSIgJiYgU3ludGF4VXNlZCA9PSAwICYmIFNjb3BlID09ICIiKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoTmFtZSA9PSAiaW1wb3J0X21vZHVsZSIgJiYgU3ludGF4VXNlZCA9PSAxICYmIFNjb3BlID09ICJjbGFuZyIpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChOYW1lID09ICJpbXBvcnRfbW9kdWxlIiAmJiBTeW50YXhVc2VkID09IDIgJiYgU2NvcGUgPT0gImNsYW5nIikKKyAgICAgICAgcmV0dXJuIDI7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSBBVF9XZWJBc3NlbWJseUltcG9ydE5hbWU6IHsKKyAgICBpZiAoTmFtZSA9PSAiaW1wb3J0X25hbWUiICYmIFN5bnRheFVzZWQgPT0gMCAmJiBTY29wZSA9PSAiIikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKE5hbWUgPT0gImltcG9ydF9uYW1lIiAmJiBTeW50YXhVc2VkID09IDEgJiYgU2NvcGUgPT0gImNsYW5nIikKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKE5hbWUgPT0gImltcG9ydF9uYW1lIiAmJiBTeW50YXhVc2VkID09IDIgJiYgU2NvcGUgPT0gImNsYW5nIikKKyAgICAgICAgcmV0dXJuIDI7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBBVF9Xb3JrR3JvdXBTaXplSGludDogewogICAgIGlmIChOYW1lID09ICJ3b3JrX2dyb3VwX3NpemVfaGludCIgJiYgU3ludGF4VXNlZCA9PSAwICYmIFNjb3BlID09ICIiKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvQXR0clRlbXBsYXRlSW5zdGFudGlhdGUuaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9BdHRyVGVtcGxhdGVJbnN0YW50aWF0ZS5pbmMKaW5kZXggZWYwZTkyZC4uODYwYjljNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9BdHRyVGVtcGxhdGVJbnN0YW50aWF0ZS5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9BdHRyVGVtcGxhdGVJbnN0YW50aWF0ZS5pbmMKQEAgLTEyLDYgKzEyLDEwIEBACiBBdHRyICppbnN0YW50aWF0ZVRlbXBsYXRlQXR0cmlidXRlKGNvbnN0IEF0dHIgKkF0LCBBU1RDb250ZXh0ICZDLCBTZW1hICZTLAogICAgICAgICBjb25zdCBNdWx0aUxldmVsVGVtcGxhdGVBcmd1bWVudExpc3QgJlRlbXBsYXRlQXJncykgewogICBzd2l0Y2ggKEF0LT5nZXRLaW5kKCkpIHsKKyAgICBjYXNlIGF0dHI6OkFBcmNoNjRWZWN0b3JQY3M6IHsKKyAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PEFBcmNoNjRWZWN0b3JQY3NBdHRyPihBdCk7CisgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CisgICAgfQogICAgIGNhc2UgYXR0cjo6QU1ER1BVRmxhdFdvcmtHcm91cFNpemU6IHsKICAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PEFNREdQVUZsYXRXb3JrR3JvdXBTaXplQXR0cj4oQXQpOwogICAgICAgcmV0dXJuIEEtPmNsb25lKEMpOwpAQCAtMjkwLDYgKzI5NCwxMCBAQAogICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8Q2FsbGFibGVXaGVuQXR0cj4oQXQpOwogICAgICAgcmV0dXJuIEEtPmNsb25lKEMpOwogICAgIH0KKyAgICBjYXNlIGF0dHI6OkNhbGxiYWNrOiB7CisgICAgICBjb25zdCBhdXRvICpBID0gY2FzdDxDYWxsYmFja0F0dHI+KEF0KTsKKyAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKKyAgICB9CiAgICAgY2FzZSBhdHRyOjpDYXBhYmlsaXR5OiB7CiAgICAgICBjb25zdCBhdXRvICpBID0gY2FzdDxDYXBhYmlsaXR5QXR0cj4oQXQpOwogICAgICAgcmV0dXJuIEEtPmNsb25lKEMpOwpAQCAtMzQ2LDEwICszNTQsMTggQEAKICAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PERMTEV4cG9ydEF0dHI+KEF0KTsKICAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKICAgICB9CisgICAgY2FzZSBhdHRyOjpETExFeHBvcnRTdGF0aWNMb2NhbDogeworICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8RExMRXhwb3J0U3RhdGljTG9jYWxBdHRyPihBdCk7CisgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CisgICAgfQogICAgIGNhc2UgYXR0cjo6RExMSW1wb3J0OiB7CiAgICAgICBjb25zdCBhdXRvICpBID0gY2FzdDxETExJbXBvcnRBdHRyPihBdCk7CiAgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CiAgICAgfQorICAgIGNhc2UgYXR0cjo6RExMSW1wb3J0U3RhdGljTG9jYWw6IHsKKyAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PERMTEltcG9ydFN0YXRpY0xvY2FsQXR0cj4oQXQpOworICAgICAgcmV0dXJuIEEtPmNsb25lKEMpOworICAgIH0KICAgICBjYXNlIGF0dHI6OkRlcHJlY2F0ZWQ6IHsKICAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PERlcHJlY2F0ZWRBdHRyPihBdCk7CiAgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CkBAIC00NDcsNiArNDYzLDEwIEBACiAgICAgICBjb25zdCBhdXRvICpBID0gY2FzdDxGb3JtYXRBcmdBdHRyPihBdCk7CiAgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CiAgICAgfQorICAgIGNhc2UgYXR0cjo6Rm9ydGlmeVN0ZExpYjogeworICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8Rm9ydGlmeVN0ZExpYkF0dHI+KEF0KTsKKyAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKKyAgICB9CiAgICAgY2FzZSBhdHRyOjpHTlVJbmxpbmU6IHsKICAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PEdOVUlubGluZUF0dHI+KEF0KTsKICAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKQEAgLTY0Miw2ICs2NjIsMTAgQEAKICAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PE5vRGVidWdBdHRyPihBdCk7CiAgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CiAgICAgfQorICAgIGNhc2UgYXR0cjo6Tm9EZXJlZjogeworICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8Tm9EZXJlZkF0dHI+KEF0KTsKKyAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKKyAgICB9CiAgICAgY2FzZSBhdHRyOjpOb0Rlc3Ryb3k6IHsKICAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PE5vRGVzdHJveUF0dHI+KEF0KTsKICAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKQEAgLTY3OCw2ICs3MDIsMTAgQEAKICAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PE5vU2FuaXRpemVBdHRyPihBdCk7CiAgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CiAgICAgfQorICAgIGNhc2UgYXR0cjo6Tm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmc6IHsKKyAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PE5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0cj4oQXQpOworICAgICAgcmV0dXJuIEEtPmNsb25lKEMpOworICAgIH0KICAgICBjYXNlIGF0dHI6Ok5vU3BsaXRTdGFjazogewogICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8Tm9TcGxpdFN0YWNrQXR0cj4oQXQpOwogICAgICAgcmV0dXJuIEEtPmNsb25lKEMpOwpAQCAtNzI2LDYgKzc1NCwzMCBAQAogICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8T01QVGhyZWFkUHJpdmF0ZURlY2xBdHRyPihBdCk7CiAgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CiAgICAgfQorICAgIGNhc2UgYXR0cjo6T1NDb25zdW1lZDogeworICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8T1NDb25zdW1lZEF0dHI+KEF0KTsKKyAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKKyAgICB9CisgICAgY2FzZSBhdHRyOjpPU0NvbnN1bWVzVGhpczogeworICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8T1NDb25zdW1lc1RoaXNBdHRyPihBdCk7CisgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CisgICAgfQorICAgIGNhc2UgYXR0cjo6T1NSZXR1cm5zTm90UmV0YWluZWQ6IHsKKyAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PE9TUmV0dXJuc05vdFJldGFpbmVkQXR0cj4oQXQpOworICAgICAgcmV0dXJuIEEtPmNsb25lKEMpOworICAgIH0KKyAgICBjYXNlIGF0dHI6Ok9TUmV0dXJuc1JldGFpbmVkOiB7CisgICAgICBjb25zdCBhdXRvICpBID0gY2FzdDxPU1JldHVybnNSZXRhaW5lZEF0dHI+KEF0KTsKKyAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKKyAgICB9CisgICAgY2FzZSBhdHRyOjpPU1JldHVybnNSZXRhaW5lZE9uTm9uWmVybzogeworICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8T1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm9BdHRyPihBdCk7CisgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CisgICAgfQorICAgIGNhc2UgYXR0cjo6T1NSZXR1cm5zUmV0YWluZWRPblplcm86IHsKKyAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PE9TUmV0dXJuc1JldGFpbmVkT25aZXJvQXR0cj4oQXQpOworICAgICAgcmV0dXJuIEEtPmNsb25lKEMpOworICAgIH0KICAgICBjYXNlIGF0dHI6Ok9iakNCb3hhYmxlOiB7CiAgICAgICBjb25zdCBhdXRvICpBID0gY2FzdDxPYmpDQm94YWJsZUF0dHI+KEF0KTsKICAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKQEAgLTc1NCw2ICs4MDYsMTAgQEAKICAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PE9iakNFeHBsaWNpdFByb3RvY29sSW1wbEF0dHI+KEF0KTsKICAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKICAgICB9CisgICAgY2FzZSBhdHRyOjpPYmpDRXh0ZXJuYWxseVJldGFpbmVkOiB7CisgICAgICBjb25zdCBhdXRvICpBID0gY2FzdDxPYmpDRXh0ZXJuYWxseVJldGFpbmVkQXR0cj4oQXQpOworICAgICAgcmV0dXJuIEEtPmNsb25lKEMpOworICAgIH0KICAgICBjYXNlIGF0dHI6Ok9iakNHQzogewogICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8T2JqQ0dDQXR0cj4oQXQpOwogICAgICAgcmV0dXJuIEEtPmNsb25lKEMpOwpAQCAtNzc4LDYgKzgzNCwxMCBAQAogICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8T2JqQ05TT2JqZWN0QXR0cj4oQXQpOwogICAgICAgcmV0dXJuIEEtPmNsb25lKEMpOwogICAgIH0KKyAgICBjYXNlIGF0dHI6Ok9iakNOb25MYXp5Q2xhc3M6IHsKKyAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PE9iakNOb25MYXp5Q2xhc3NBdHRyPihBdCk7CisgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CisgICAgfQogICAgIGNhc2UgYXR0cjo6T2JqQ093bmVyc2hpcDogewogICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8T2JqQ093bmVyc2hpcEF0dHI+KEF0KTsKICAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKQEAgLTEwNTEsNiArMTExMSwxMCBAQAogICAgICAgfQogICAgICAgcmV0dXJuIG5ldyAoQykgU2hhcmVkVHJ5bG9ja0Z1bmN0aW9uQXR0cihBLT5nZXRMb2NhdGlvbigpLCBDLCB0ZW1wSW5zdFN1Y2Nlc3NWYWx1ZSwgdGVtcEluc3RBcmdzLCBBLT5hcmdzX3NpemUoKSwgQS0+Z2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CiAgICAgfQorICAgIGNhc2UgYXR0cjo6U3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nOiB7CisgICAgICBjb25zdCBhdXRvICpBID0gY2FzdDxTcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBdHRyPihBdCk7CisgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CisgICAgfQogICAgIGNhc2UgYXR0cjo6U3RkQ2FsbDogewogICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8U3RkQ2FsbEF0dHI+KEF0KTsKICAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKQEAgLTExNTUsNiArMTIxOSwxMCBAQAogICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8VW5hdmFpbGFibGVBdHRyPihBdCk7CiAgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CiAgICAgfQorICAgIGNhc2UgYXR0cjo6VW5pbml0aWFsaXplZDogeworICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8VW5pbml0aWFsaXplZEF0dHI+KEF0KTsKKyAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKKyAgICB9CiAgICAgY2FzZSBhdHRyOjpVbnVzZWQ6IHsKICAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PFVudXNlZEF0dHI+KEF0KTsKICAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKQEAgLTEyMDIsNiArMTI3MCwxNCBAQAogICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8V2Vha1JlZkF0dHI+KEF0KTsKICAgICAgIHJldHVybiBBLT5jbG9uZShDKTsKICAgICB9CisgICAgY2FzZSBhdHRyOjpXZWJBc3NlbWJseUltcG9ydE1vZHVsZTogeworICAgICAgY29uc3QgYXV0byAqQSA9IGNhc3Q8V2ViQXNzZW1ibHlJbXBvcnRNb2R1bGVBdHRyPihBdCk7CisgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CisgICAgfQorICAgIGNhc2UgYXR0cjo6V2ViQXNzZW1ibHlJbXBvcnROYW1lOiB7CisgICAgICBjb25zdCBhdXRvICpBID0gY2FzdDxXZWJBc3NlbWJseUltcG9ydE5hbWVBdHRyPihBdCk7CisgICAgICByZXR1cm4gQS0+Y2xvbmUoQyk7CisgICAgfQogICAgIGNhc2UgYXR0cjo6V29ya0dyb3VwU2l6ZUhpbnQ6IHsKICAgICAgIGNvbnN0IGF1dG8gKkEgPSBjYXN0PFdvcmtHcm91cFNpemVIaW50QXR0cj4oQXQpOwogICAgICAgcmV0dXJuIEEtPmNsb25lKEMpOwpAQCAtMTIyNyw2ICsxMzAzLDkgQEAKICBBU1RDb250ZXh0ICZDLCBTZW1hICZTLAogICAgICAgICBjb25zdCBNdWx0aUxldmVsVGVtcGxhdGVBcmd1bWVudExpc3QgJlRlbXBsYXRlQXJncykgewogICBzd2l0Y2ggKEF0LT5nZXRLaW5kKCkpIHsKKyAgICBjYXNlIGF0dHI6OkFBcmNoNjRWZWN0b3JQY3M6IHsKKyAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICBjYXNlIGF0dHI6OkFNREdQVUZsYXRXb3JrR3JvdXBTaXplOiB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xMzg3LDYgKzE0NjYsOSBAQAogICAgIGNhc2UgYXR0cjo6Q2FsbGFibGVXaGVuOiB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CisgICAgY2FzZSBhdHRyOjpDYWxsYmFjazogeworICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAgIGNhc2UgYXR0cjo6Q2FwYWJpbGl0eTogewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTQyOSw5ICsxNTExLDE1IEBACiAgICAgY2FzZSBhdHRyOjpETExFeHBvcnQ6IHsKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KKyAgICBjYXNlIGF0dHI6OkRMTEV4cG9ydFN0YXRpY0xvY2FsOiB7CisgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAgY2FzZSBhdHRyOjpETExJbXBvcnQ6IHsKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KKyAgICBjYXNlIGF0dHI6OkRMTEltcG9ydFN0YXRpY0xvY2FsOiB7CisgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAgY2FzZSBhdHRyOjpEZXByZWNhdGVkOiB7CiAgICAgICBjb25zdCBhdXRvICpBID0gY2FzdDxEZXByZWNhdGVkQXR0cj4oQXQpOwogICAgICAgcmV0dXJuIEEtPmNsb25lKEMpOwpAQCAtMTQ4NSw2ICsxNTczLDkgQEAKICAgICBjYXNlIGF0dHI6OkZvcm1hdEFyZzogewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAgIGNhc2UgYXR0cjo6Rm9ydGlmeVN0ZExpYjogeworICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAgIGNhc2UgYXR0cjo6R05VSW5saW5lOiB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xNjE0LDYgKzE3MDUsOSBAQAogICAgIGNhc2UgYXR0cjo6Tm9EZWJ1ZzogewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAgIGNhc2UgYXR0cjo6Tm9EZXJlZjogeworICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAgIGNhc2UgYXR0cjo6Tm9EZXN0cm95OiB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xNjQxLDYgKzE3MzUsOSBAQAogICAgIGNhc2UgYXR0cjo6Tm9TYW5pdGl6ZTogewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAgIGNhc2UgYXR0cjo6Tm9TcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmc6IHsKKyAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICBjYXNlIGF0dHI6Ok5vU3BsaXRTdGFjazogewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTY3Nyw2ICsxNzc0LDI0IEBACiAgICAgY2FzZSBhdHRyOjpPTVBUaHJlYWRQcml2YXRlRGVjbDogewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAgIGNhc2UgYXR0cjo6T1NDb25zdW1lZDogeworICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGNhc2UgYXR0cjo6T1NDb25zdW1lc1RoaXM6IHsKKyAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBjYXNlIGF0dHI6Ok9TUmV0dXJuc05vdFJldGFpbmVkOiB7CisgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgY2FzZSBhdHRyOjpPU1JldHVybnNSZXRhaW5lZDogeworICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGNhc2UgYXR0cjo6T1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm86IHsKKyAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBjYXNlIGF0dHI6Ok9TUmV0dXJuc1JldGFpbmVkT25aZXJvOiB7CisgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAgY2FzZSBhdHRyOjpPYmpDQm94YWJsZTogewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMTY5OCw2ICsxODEzLDkgQEAKICAgICBjYXNlIGF0dHI6Ok9iakNFeHBsaWNpdFByb3RvY29sSW1wbDogewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAgIGNhc2UgYXR0cjo6T2JqQ0V4dGVybmFsbHlSZXRhaW5lZDogeworICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAgIGNhc2UgYXR0cjo6T2JqQ0dDOiB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xNzE2LDYgKzE4MzQsOSBAQAogICAgIGNhc2UgYXR0cjo6T2JqQ05TT2JqZWN0OiB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CisgICAgY2FzZSBhdHRyOjpPYmpDTm9uTGF6eUNsYXNzOiB7CisgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAgY2FzZSBhdHRyOjpPYmpDT3duZXJzaGlwOiB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xODg3LDYgKzIwMDgsOSBAQAogICAgIGNhc2UgYXR0cjo6U2hhcmVkVHJ5bG9ja0Z1bmN0aW9uOiB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CisgICAgY2FzZSBhdHRyOjpTcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmc6IHsKKyAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICBjYXNlIGF0dHI6OlN0ZENhbGw6IHsKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTE5NTMsNiArMjA3Nyw5IEBACiAgICAgY2FzZSBhdHRyOjpVbmF2YWlsYWJsZTogewogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAgIGNhc2UgYXR0cjo6VW5pbml0aWFsaXplZDogeworICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAgIGNhc2UgYXR0cjo6VW51c2VkOiB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC0xOTg5LDYgKzIxMTYsMTIgQEAKICAgICBjYXNlIGF0dHI6OldlYWtSZWY6IHsKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KKyAgICBjYXNlIGF0dHI6OldlYkFzc2VtYmx5SW1wb3J0TW9kdWxlOiB7CisgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgY2FzZSBhdHRyOjpXZWJBc3NlbWJseUltcG9ydE5hbWU6IHsKKyAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICBjYXNlIGF0dHI6OldvcmtHcm91cFNpemVIaW50OiB7CiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0NYWEZpZWxkQ29sbGVjdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0NYWEZpZWxkQ29sbGVjdG9yLmgKaW5kZXggNjY4NTc1MS4uZjZlY2Q5ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9DWFhGaWVsZENvbGxlY3Rvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvQ1hYRmllbGRDb2xsZWN0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDWFhGaWVsZENvbGxlY3Rvci5oIC0gVXRpbGl0eSBjbGFzcyBmb3IgQysrIGNsYXNzIHNlbWFudGljIGFuYWx5c2lzID09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9DbGVhbnVwSW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9DbGVhbnVwSW5mby5oCmluZGV4IDc1MWJmYjYuLmVhOWRmNDkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvQ2xlYW51cEluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0NsZWFudXBJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBDbGVhbnVwSW5mby5jcHAgLSBDbGVhbnVwIENvbnRyb2wgaW4gU2VtYSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvQ29kZUNvbXBsZXRlQ29uc3VtZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvQ29kZUNvbXBsZXRlQ29uc3VtZXIuaAppbmRleCBjODAwYjYyLi43MmJhOGJmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0NvZGVDb21wbGV0ZUNvbnN1bWVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9Db2RlQ29tcGxldGVDb25zdW1lci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvZGVDb21wbGV0ZUNvbnN1bWVyLmggLSBDb2RlIENvbXBsZXRpb24gSW50ZXJmYWNlIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yNzIsMTEgKzI3MSwxNSBAQAogICAgIENDQ19UeXBlLAogCiAgICAgLy8vIENvZGUgY29tcGxldGlvbiBvY2N1cnJlZCB3aGVyZSBhIG5ldyBuYW1lIGlzIGV4cGVjdGVkLgotICAgIENDQ19OYW1lLAorICAgIENDQ19OZXdOYW1lLAogCi0gICAgLy8vIENvZGUgY29tcGxldGlvbiBvY2N1cnJlZCB3aGVyZSBhIG5ldyBuYW1lIGlzIGV4cGVjdGVkIGFuZCBhCi0gICAgLy8vIHF1YWxpZmllZCBuYW1lIGlzIHBlcm1pc3NpYmxlLgotICAgIENDQ19Qb3RlbnRpYWxseVF1YWxpZmllZE5hbWUsCisgICAgLy8vIENvZGUgY29tcGxldGlvbiBvY2N1cnJlZCB3aGVyZSBib3RoIGEgbmV3IG5hbWUgYW5kIGFuIGV4aXN0aW5nIHN5bWJvbCBpcworICAgIC8vLyBwZXJtaXNzaWJsZS4KKyAgICBDQ0NfU3ltYm9sT3JOZXdOYW1lLAorCisgICAgLy8vIENvZGUgY29tcGxldGlvbiBvY2N1cnJlZCB3aGVyZSBhbiBleGlzdGluZyBuYW1lKHN1Y2ggYXMgdHlwZSwgZnVuY3Rpb24KKyAgICAvLy8gb3IgdmFyaWFibGUpIGlzIGV4cGVjdGVkLgorICAgIENDQ19TeW1ib2wsCiAKICAgICAvLy8gQ29kZSBjb21wbGV0aW9uIG9jY3VycmVkIHdoZXJlIGFuIG1hY3JvIGlzIGJlaW5nIGRlZmluZWQuCiAgICAgQ0NDX01hY3JvTmFtZSwKQEAgLTM3Nyw2ICszODAsNyBAQAogICAvLy8gaWYgdGhlIGV4cHJlc3Npb24gaXMgYSB2YXJpYWJsZSBpbml0aWFsaXplciBvciBhIGZ1bmN0aW9uIGFyZ3VtZW50LCB0aGUKICAgLy8vIHR5cGUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFyaWFibGUgb3IgZnVuY3Rpb24gcGFyYW1ldGVyLgogICBRdWFsVHlwZSBnZXRQcmVmZXJyZWRUeXBlKCkgY29uc3QgeyByZXR1cm4gUHJlZmVycmVkVHlwZTsgfQorICB2b2lkIHNldFByZWZlcnJlZFR5cGUoUXVhbFR5cGUgVCkgeyBQcmVmZXJyZWRUeXBlID0gVDsgfQogCiAgIC8vLyBSZXRyaWV2ZSB0aGUgdHlwZSBvZiB0aGUgYmFzZSBvYmplY3QgaW4gYSBtZW1iZXItYWNjZXNzCiAgIC8vLyBleHByZXNzaW9uLgpAQCAtNjUyLDE0ICs2NTYsNiBAQAogCiB9IC8vIG5hbWVzcGFjZSBjbGFuZwogCi1uYW1lc3BhY2UgbGx2bSB7Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBpc1BvZExpa2U8Y2xhbmc6OkNvZGVDb21wbGV0aW9uU3RyaW5nOjpDaHVuaz4gewotICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBsbHZtCi0KIG5hbWVzcGFjZSBjbGFuZyB7CiAKIC8vLyBBIGJ1aWxkZXIgY2xhc3MgdXNlZCB0byBjb25zdHJ1Y3QgbmV3IGNvZGUtY29tcGxldGlvbiBzdHJpbmdzLgpAQCAtODIxLDYgKzgxNyw5IEBACiAgIC8vLyBXaGV0aGVyIHRoaXMgcmVzdWx0IGlzIGhpZGRlbiBieSBhbm90aGVyIG5hbWUuCiAgIGJvb2wgSGlkZGVuIDogMTsKIAorICAvLy8gV2hldGhlciB0aGlzIGlzIGEgY2xhc3MgbWVtYmVyIGZyb20gYmFzZSBjbGFzcy4KKyAgYm9vbCBJbkJhc2VDbGFzcyA6IDE7CisKICAgLy8vIFdoZXRoZXIgdGhpcyByZXN1bHQgd2FzIGZvdW5kIHZpYSBsb29rdXAgaW50byBhIGJhc2UgY2xhc3MuCiAgIGJvb2wgUXVhbGlmaWVySXNJbmZvcm1hdGl2ZSA6IDE7CiAKQEAgLTg1OSw3ICs4NTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBib29sIEFjY2Vzc2libGUgPSB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxGaXhJdEhpbnQ+IEZpeEl0cyA9IHN0ZDo6dmVjdG9yPEZpeEl0SGludD4oKSkKICAgICAgIDogRGVjbGFyYXRpb24oRGVjbGFyYXRpb24pLCBQcmlvcml0eShQcmlvcml0eSksIEtpbmQoUktfRGVjbGFyYXRpb24pLAotICAgICAgICBGaXhJdHMoc3RkOjptb3ZlKEZpeEl0cykpLCBIaWRkZW4oZmFsc2UpLAorICAgICAgICBGaXhJdHMoc3RkOjptb3ZlKEZpeEl0cykpLCBIaWRkZW4oZmFsc2UpLCBJbkJhc2VDbGFzcyhmYWxzZSksCiAgICAgICAgIFF1YWxpZmllcklzSW5mb3JtYXRpdmUoUXVhbGlmaWVySXNJbmZvcm1hdGl2ZSksCiAgICAgICAgIFN0YXJ0c05lc3RlZE5hbWVTcGVjaWZpZXIoZmFsc2UpLCBBbGxQYXJhbWV0ZXJzQXJlSW5mb3JtYXRpdmUoZmFsc2UpLAogICAgICAgICBEZWNsYXJpbmdFbnRpdHkoZmFsc2UpLCBRdWFsaWZpZXIoUXVhbGlmaWVyKSB7CkBAIC04NzAsNyArODY5LDcgQEAKICAgLy8vIEJ1aWxkIGEgcmVzdWx0IHRoYXQgcmVmZXJzIHRvIGEga2V5d29yZCBvciBzeW1ib2wuCiAgIENvZGVDb21wbGV0aW9uUmVzdWx0KGNvbnN0IGNoYXIgKktleXdvcmQsIHVuc2lnbmVkIFByaW9yaXR5ID0gQ0NQX0tleXdvcmQpCiAgICAgICA6IEtleXdvcmQoS2V5d29yZCksIFByaW9yaXR5KFByaW9yaXR5KSwgS2luZChSS19LZXl3b3JkKSwKLSAgICAgICAgQ3Vyc29yS2luZChDWEN1cnNvcl9Ob3RJbXBsZW1lbnRlZCksIEhpZGRlbihmYWxzZSksCisgICAgICAgIEN1cnNvcktpbmQoQ1hDdXJzb3JfTm90SW1wbGVtZW50ZWQpLCBIaWRkZW4oZmFsc2UpLCBJbkJhc2VDbGFzcyhmYWxzZSksCiAgICAgICAgIFF1YWxpZmllcklzSW5mb3JtYXRpdmUoZmFsc2UpLCBTdGFydHNOZXN0ZWROYW1lU3BlY2lmaWVyKGZhbHNlKSwKICAgICAgICAgQWxsUGFyYW1ldGVyc0FyZUluZm9ybWF0aXZlKGZhbHNlKSwgRGVjbGFyaW5nRW50aXR5KGZhbHNlKSB7fQogCkBAIC04NzksMjggKzg3OCwyOSBAQAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNYWNyb0luZm8gKk1JID0gbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgUHJpb3JpdHkgPSBDQ1BfTWFjcm8pCiAgICAgICA6IE1hY3JvKE1hY3JvKSwgUHJpb3JpdHkoUHJpb3JpdHkpLCBLaW5kKFJLX01hY3JvKSwKLSAgICAgICAgQ3Vyc29yS2luZChDWEN1cnNvcl9NYWNyb0RlZmluaXRpb24pLCBIaWRkZW4oZmFsc2UpLAorICAgICAgICBDdXJzb3JLaW5kKENYQ3Vyc29yX01hY3JvRGVmaW5pdGlvbiksIEhpZGRlbihmYWxzZSksIEluQmFzZUNsYXNzKGZhbHNlKSwKICAgICAgICAgUXVhbGlmaWVySXNJbmZvcm1hdGl2ZShmYWxzZSksIFN0YXJ0c05lc3RlZE5hbWVTcGVjaWZpZXIoZmFsc2UpLAogICAgICAgICBBbGxQYXJhbWV0ZXJzQXJlSW5mb3JtYXRpdmUoZmFsc2UpLCBEZWNsYXJpbmdFbnRpdHkoZmFsc2UpLAogICAgICAgICBNYWNyb0RlZkluZm8oTUkpIHt9CiAKICAgLy8vIEJ1aWxkIGEgcmVzdWx0IHRoYXQgcmVmZXJzIHRvIGEgcGF0dGVybi4KLSAgQ29kZUNvbXBsZXRpb25SZXN1bHQoQ29kZUNvbXBsZXRpb25TdHJpbmcgKlBhdHRlcm4sCi0gICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFByaW9yaXR5ID0gQ0NQX0NvZGVQYXR0ZXJuLAotICAgICAgICAgICAgICAgICAgICAgICBDWEN1cnNvcktpbmQgQ3Vyc29yS2luZCA9IENYQ3Vyc29yX05vdEltcGxlbWVudGVkLAotICAgICAgICAgICAgICAgICAgIENYQXZhaWxhYmlsaXR5S2luZCBBdmFpbGFiaWxpdHkgPSBDWEF2YWlsYWJpbGl0eV9BdmFpbGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE5hbWVkRGVjbCAqRCA9IG51bGxwdHIpCisgIENvZGVDb21wbGV0aW9uUmVzdWx0KAorICAgICAgQ29kZUNvbXBsZXRpb25TdHJpbmcgKlBhdHRlcm4sIHVuc2lnbmVkIFByaW9yaXR5ID0gQ0NQX0NvZGVQYXR0ZXJuLAorICAgICAgQ1hDdXJzb3JLaW5kIEN1cnNvcktpbmQgPSBDWEN1cnNvcl9Ob3RJbXBsZW1lbnRlZCwKKyAgICAgIENYQXZhaWxhYmlsaXR5S2luZCBBdmFpbGFiaWxpdHkgPSBDWEF2YWlsYWJpbGl0eV9BdmFpbGFibGUsCisgICAgICBjb25zdCBOYW1lZERlY2wgKkQgPSBudWxscHRyKQogICAgICAgOiBEZWNsYXJhdGlvbihEKSwgUGF0dGVybihQYXR0ZXJuKSwgUHJpb3JpdHkoUHJpb3JpdHkpLCBLaW5kKFJLX1BhdHRlcm4pLAogICAgICAgICBDdXJzb3JLaW5kKEN1cnNvcktpbmQpLCBBdmFpbGFiaWxpdHkoQXZhaWxhYmlsaXR5KSwgSGlkZGVuKGZhbHNlKSwKLSAgICAgICAgUXVhbGlmaWVySXNJbmZvcm1hdGl2ZShmYWxzZSksIFN0YXJ0c05lc3RlZE5hbWVTcGVjaWZpZXIoZmFsc2UpLAotICAgICAgICBBbGxQYXJhbWV0ZXJzQXJlSW5mb3JtYXRpdmUoZmFsc2UpLCBEZWNsYXJpbmdFbnRpdHkoZmFsc2UpIHt9CisgICAgICAgIEluQmFzZUNsYXNzKGZhbHNlKSwgUXVhbGlmaWVySXNJbmZvcm1hdGl2ZShmYWxzZSksCisgICAgICAgIFN0YXJ0c05lc3RlZE5hbWVTcGVjaWZpZXIoZmFsc2UpLCBBbGxQYXJhbWV0ZXJzQXJlSW5mb3JtYXRpdmUoZmFsc2UpLAorICAgICAgICBEZWNsYXJpbmdFbnRpdHkoZmFsc2UpIHt9CiAKICAgLy8vIEJ1aWxkIGEgcmVzdWx0IHRoYXQgcmVmZXJzIHRvIGEgcGF0dGVybiB3aXRoIGFuIGFzc29jaWF0ZWQKICAgLy8vIGRlY2xhcmF0aW9uLgogICBDb2RlQ29tcGxldGlvblJlc3VsdChDb2RlQ29tcGxldGlvblN0cmluZyAqUGF0dGVybiwgY29uc3QgTmFtZWREZWNsICpELAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBQcmlvcml0eSkKICAgICAgIDogRGVjbGFyYXRpb24oRCksIFBhdHRlcm4oUGF0dGVybiksIFByaW9yaXR5KFByaW9yaXR5KSwgS2luZChSS19QYXR0ZXJuKSwKLSAgICAgICAgSGlkZGVuKGZhbHNlKSwgUXVhbGlmaWVySXNJbmZvcm1hdGl2ZShmYWxzZSksCisgICAgICAgIEhpZGRlbihmYWxzZSksIEluQmFzZUNsYXNzKGZhbHNlKSwgUXVhbGlmaWVySXNJbmZvcm1hdGl2ZShmYWxzZSksCiAgICAgICAgIFN0YXJ0c05lc3RlZE5hbWVTcGVjaWZpZXIoZmFsc2UpLCBBbGxQYXJhbWV0ZXJzQXJlSW5mb3JtYXRpdmUoZmFsc2UpLAogICAgICAgICBEZWNsYXJpbmdFbnRpdHkoZmFsc2UpIHsKICAgICBjb21wdXRlQ3Vyc29yS2luZEFuZEF2YWlsYWJpbGl0eSgpOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9Db2RlQ29tcGxldGVPcHRpb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0NvZGVDb21wbGV0ZU9wdGlvbnMuaAppbmRleCAyNmY3ZjlkLi5hMzQwM2IwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0NvZGVDb21wbGV0ZU9wdGlvbnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0NvZGVDb21wbGV0ZU9wdGlvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tLSBDb2RlQ29tcGxldGVPcHRpb25zLmggLSBDb2RlIENvbXBsZXRpb24gT3B0aW9ucyAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvRGVjbFNwZWMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvRGVjbFNwZWMuaAppbmRleCBiNjY3ZTA3Li5iYWJkYzlkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0RlY2xTcGVjLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9EZWNsU3BlYy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gRGVjbFNwZWMuaCAtIFBhcnNlZCBkZWNsYXJhdGlvbiBzcGVjaWZpZXJzIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpAQCAtNTkzLDYgKzU5MiwxOCBAQAogICAgIEZTX25vcmV0dXJuTG9jID0gU291cmNlTG9jYXRpb24oKTsKICAgfQogCisgIC8vLyBUaGlzIG1ldGhvZCBjYWxscyB0aGUgcGFzc2VkIGluIGhhbmRsZXIgb24gZWFjaCBDVlJVIHF1YWwgYmVpbmcKKyAgLy8vIHNldC4KKyAgLy8vIEhhbmRsZSAtIGEgaGFuZGxlciB0byBiZSBpbnZva2VkLgorICB2b2lkIGZvckVhY2hDVlJVUXVhbGlmaWVyKAorICAgICAgbGx2bTo6ZnVuY3Rpb25fcmVmPHZvaWQoVFEsIFN0cmluZ1JlZiwgU291cmNlTG9jYXRpb24pPiBIYW5kbGUpOworCisgIC8vLyBUaGlzIG1ldGhvZCBjYWxscyB0aGUgcGFzc2VkIGluIGhhbmRsZXIgb24gZWFjaCBxdWFsIGJlaW5nCisgIC8vLyBzZXQuCisgIC8vLyBIYW5kbGUgLSBhIGhhbmRsZXIgdG8gYmUgaW52b2tlZC4KKyAgdm9pZCBmb3JFYWNoUXVhbGlmaWVyKAorICAgICAgbGx2bTo6ZnVuY3Rpb25fcmVmPHZvaWQoVFEsIFN0cmluZ1JlZiwgU291cmNlTG9jYXRpb24pPiBIYW5kbGUpOworCiAgIC8vLyBSZXR1cm4gdHJ1ZSBpZiBhbnkgdHlwZS1zcGVjaWZpZXIgaGFzIGJlZW4gZm91bmQuCiAgIGJvb2wgaGFzVHlwZVNwZWNpZmllcigpIGNvbnN0IHsKICAgICByZXR1cm4gZ2V0VHlwZVNwZWNUeXBlKCkgIT0gRGVjbFNwZWM6OlRTVF91bnNwZWNpZmllZCB8fApAQCAtNjgzLDYgKzY5NCw4IEBACiAgICAgRXhwclJlcCA9IFJlcDsKICAgfQogCisgIGJvb2wgU2V0VHlwZVF1YWwoVFEgVCwgU291cmNlTG9jYXRpb24gTG9jKTsKKwogICBib29sIFNldFR5cGVRdWFsKFRRIFQsIFNvdXJjZUxvY2F0aW9uIExvYywgY29uc3QgY2hhciAqJlByZXZTcGVjLAogICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkICZEaWFnSUQsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nKTsKIApAQCAtMTI1MCwxMCArMTI2Myw2IEBACiAgICAgLy8vIE90aGVyd2lzZSwgaXQncyBhbiBydmFsdWUgcmVmZXJlbmNlLgogICAgIHVuc2lnbmVkIFJlZlF1YWxpZmllcklzTFZhbHVlUmVmIDogMTsKIAotICAgIC8vLyBUaGUgdHlwZSBxdWFsaWZpZXJzOiBjb25zdC92b2xhdGlsZS9yZXN0cmljdC9fX3VuYWxpZ25lZAotICAgIC8vLyBUaGUgcXVhbGlmaWVyIGJpdG1hc2sgdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyBpbiBRdWFsVHlwZS4KLSAgICB1bnNpZ25lZCBUeXBlUXVhbHMgOiA0OwotCiAgICAgLy8vIEV4Y2VwdGlvblNwZWNUeXBlIC0gQW4gRXhjZXB0aW9uU3BlY2lmaWNhdGlvblR5cGUgdmFsdWUuCiAgICAgdW5zaWduZWQgRXhjZXB0aW9uU3BlY1R5cGUgOiA0OwogCkBAIC0xMjg3LDIxICsxMjk2LDYgQEAKICAgICAvLy8gSWYgdGhpcyBpcyBhbiBpbnZhbGlkIGxvY2F0aW9uLCB0aGVyZSBpcyBubyByZWYtcXVhbGlmaWVyLgogICAgIHVuc2lnbmVkIFJlZlF1YWxpZmllckxvYzsKIAotICAgIC8vLyBUaGUgbG9jYXRpb24gb2YgdGhlIGNvbnN0LXF1YWxpZmllciwgaWYgYW55LgotICAgIC8vLwotICAgIC8vLyBJZiB0aGlzIGlzIGFuIGludmFsaWQgbG9jYXRpb24sIHRoZXJlIGlzIG5vIGNvbnN0LXF1YWxpZmllci4KLSAgICB1bnNpZ25lZCBDb25zdFF1YWxpZmllckxvYzsKLQotICAgIC8vLyBUaGUgbG9jYXRpb24gb2YgdGhlIHZvbGF0aWxlLXF1YWxpZmllciwgaWYgYW55LgotICAgIC8vLwotICAgIC8vLyBJZiB0aGlzIGlzIGFuIGludmFsaWQgbG9jYXRpb24sIHRoZXJlIGlzIG5vIHZvbGF0aWxlLXF1YWxpZmllci4KLSAgICB1bnNpZ25lZCBWb2xhdGlsZVF1YWxpZmllckxvYzsKLQotICAgIC8vLyBUaGUgbG9jYXRpb24gb2YgdGhlIHJlc3RyaWN0LXF1YWxpZmllciwgaWYgYW55LgotICAgIC8vLwotICAgIC8vLyBJZiB0aGlzIGlzIGFuIGludmFsaWQgbG9jYXRpb24sIHRoZXJlIGlzIG5vIHJlc3RyaWN0LXF1YWxpZmllci4KLSAgICB1bnNpZ25lZCBSZXN0cmljdFF1YWxpZmllckxvYzsKLQogICAgIC8vLyBUaGUgbG9jYXRpb24gb2YgdGhlICdtdXRhYmxlJyBxdWFsaWZlciBpbiBhIGxhbWJkYS1kZWNsYXJhdG9yLCBpZgogICAgIC8vLyBhbnkuCiAgICAgdW5zaWduZWQgTXV0YWJsZUxvYzsKQEAgLTEzMTcsNiArMTMxMSwxMiBAQAogICAgIC8vLyB0aGVyZSBhcmUgbm8gcGFyYW1ldGVycyBzcGVjaWZpZWQuCiAgICAgUGFyYW1JbmZvICpQYXJhbXM7CiAKKyAgICAvLy8gRGVjbFNwZWMgZm9yIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBxdWFsaWZpZXIgcmVsYXRlZCBpbmZvLgorICAgIERlY2xTcGVjICpNZXRob2RRdWFsaWZpZXJzOworCisgICAgLy8vIEF0dHRpYnV0ZUZhY3RvcnkgZm9yIHRoZSBNZXRob2RRdWFsaWZpZXJzLgorICAgIEF0dHJpYnV0ZUZhY3RvcnkgKlF1YWxBdHRyRmFjdG9yeTsKKwogICAgIHVuaW9uIHsKICAgICAgIC8vLyBQb2ludGVyIHRvIGEgbmV3W10nZCBhcnJheSBvZiBUeXBlQW5kUmFuZ2Ugb2JqZWN0cyB0aGF0CiAgICAgICAvLy8gY29udGFpbiB0aGUgdHlwZXMgaW4gdGhlIGZ1bmN0aW9uJ3MgZHluYW1pYyBleGNlcHRpb24gc3BlY2lmaWNhdGlvbgpAQCAtMTM1Niw2ICsxMzU2LDggQEAKIAogICAgIHZvaWQgZGVzdHJveSgpIHsKICAgICAgIGZyZWVQYXJhbXMoKTsKKyAgICAgIGRlbGV0ZSBRdWFsQXR0ckZhY3Rvcnk7CisgICAgICBkZWxldGUgTWV0aG9kUXVhbGlmaWVyczsKICAgICAgIHN3aXRjaCAoZ2V0RXhjZXB0aW9uU3BlY1R5cGUoKSkgewogICAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC0xMzcyLDYgKzEzNzQsMTQgQEAKICAgICAgIH0KICAgICB9CiAKKyAgICBEZWNsU3BlYyAmZ2V0T3JDcmVhdGVNZXRob2RRdWFsaWZpZXJzKCkgeworICAgICAgaWYgKCFNZXRob2RRdWFsaWZpZXJzKSB7CisgICAgICAgIFF1YWxBdHRyRmFjdG9yeSA9IG5ldyBBdHRyaWJ1dGVGYWN0b3J5KCk7CisgICAgICAgIE1ldGhvZFF1YWxpZmllcnMgPSBuZXcgRGVjbFNwZWMoKlF1YWxBdHRyRmFjdG9yeSk7CisgICAgICB9CisgICAgICByZXR1cm4gKk1ldGhvZFF1YWxpZmllcnM7CisgICAgfQorCiAgICAgLy8vIGlzS05SUHJvdG90eXBlIC0gUmV0dXJuIHRydWUgaWYgdGhpcyBpcyBhIEsmUiBzdHlsZSBpZGVudGlmaWVyIGxpc3QsCiAgICAgLy8vIGxpa2UgInZvaWQgZm9vKGEsYixjKSIuICBJbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24sIHRoaXMgd2lsbCBiZSBmb2xsb3dlZAogICAgIC8vLyBieSB0aGUgcGFyYW1ldGVyIHR5cGUgZGVmaW5pdGlvbnMuCkBAIC0xNDA2LDE5ICsxNDE2LDIyIEBACiAgICAgICByZXR1cm4gU291cmNlTG9jYXRpb246OmdldEZyb21SYXdFbmNvZGluZyhSZWZRdWFsaWZpZXJMb2MpOwogICAgIH0KIAotICAgIC8vLyBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhlICdjb25zdCcgcXVhbGlmaWVyLCBpZiBhbnkuCisgICAgLy8vIFJldHJpZXZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgJ2NvbnN0JyBxdWFsaWZpZXIuCiAgICAgU291cmNlTG9jYXRpb24gZ2V0Q29uc3RRdWFsaWZpZXJMb2MoKSBjb25zdCB7Ci0gICAgICByZXR1cm4gU291cmNlTG9jYXRpb246OmdldEZyb21SYXdFbmNvZGluZyhDb25zdFF1YWxpZmllckxvYyk7CisgICAgICBhc3NlcnQoTWV0aG9kUXVhbGlmaWVycyk7CisgICAgICByZXR1cm4gTWV0aG9kUXVhbGlmaWVycy0+Z2V0Q29uc3RTcGVjTG9jKCk7CiAgICAgfQogCi0gICAgLy8vIFJldHJpZXZlIHRoZSBsb2NhdGlvbiBvZiB0aGUgJ3ZvbGF0aWxlJyBxdWFsaWZpZXIsIGlmIGFueS4KKyAgICAvLy8gUmV0cmlldmUgdGhlIGxvY2F0aW9uIG9mIHRoZSAndm9sYXRpbGUnIHF1YWxpZmllci4KICAgICBTb3VyY2VMb2NhdGlvbiBnZXRWb2xhdGlsZVF1YWxpZmllckxvYygpIGNvbnN0IHsKLSAgICAgIHJldHVybiBTb3VyY2VMb2NhdGlvbjo6Z2V0RnJvbVJhd0VuY29kaW5nKFZvbGF0aWxlUXVhbGlmaWVyTG9jKTsKKyAgICAgIGFzc2VydChNZXRob2RRdWFsaWZpZXJzKTsKKyAgICAgIHJldHVybiBNZXRob2RRdWFsaWZpZXJzLT5nZXRWb2xhdGlsZVNwZWNMb2MoKTsKICAgICB9CiAKLSAgICAvLy8gUmV0cmlldmUgdGhlIGxvY2F0aW9uIG9mIHRoZSAncmVzdHJpY3QnIHF1YWxpZmllciwgaWYgYW55LgorICAgIC8vLyBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhlICdyZXN0cmljdCcgcXVhbGlmaWVyLgogICAgIFNvdXJjZUxvY2F0aW9uIGdldFJlc3RyaWN0UXVhbGlmaWVyTG9jKCkgY29uc3QgewotICAgICAgcmV0dXJuIFNvdXJjZUxvY2F0aW9uOjpnZXRGcm9tUmF3RW5jb2RpbmcoUmVzdHJpY3RRdWFsaWZpZXJMb2MpOworICAgICAgYXNzZXJ0KE1ldGhvZFF1YWxpZmllcnMpOworICAgICAgcmV0dXJuIE1ldGhvZFF1YWxpZmllcnMtPmdldFJlc3RyaWN0U3BlY0xvYygpOwogICAgIH0KIAogICAgIC8vLyBSZXRyaWV2ZSB0aGUgbG9jYXRpb24gb2YgdGhlICdtdXRhYmxlJyBxdWFsaWZpZXIsIGlmIGFueS4KQEAgLTE0MzQsNiArMTQ0NywxMiBAQAogICAgIC8vLyBxdWFsaWZpZXIuCiAgICAgYm9vbCBoYXNNdXRhYmxlUXVhbGlmaWVyKCkgY29uc3QgeyByZXR1cm4gZ2V0TXV0YWJsZUxvYygpLmlzVmFsaWQoKTsgfQogCisgICAgLy8vIERldGVybWluZSB3aGV0aGVyIHRoaXMgbWV0aG9kIGhhcyBxdWFsaWZpZXJzLgorICAgIGJvb2wgaGFzTWV0aG9kVHlwZVF1YWxpZmllcnMoKSBjb25zdCB7CisgICAgICByZXR1cm4gTWV0aG9kUXVhbGlmaWVycyAmJiAoTWV0aG9kUXVhbGlmaWVycy0+Z2V0VHlwZVF1YWxpZmllcnMoKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGhvZFF1YWxpZmllcnMtPmdldEF0dHJpYnV0ZXMoKS5zaXplKCkpOworICAgIH0KKwogICAgIC8vLyBHZXQgdGhlIHR5cGUgb2YgZXhjZXB0aW9uIHNwZWNpZmljYXRpb24gdGhpcyBmdW5jdGlvbiBoYXMuCiAgICAgRXhjZXB0aW9uU3BlY2lmaWNhdGlvblR5cGUgZ2V0RXhjZXB0aW9uU3BlY1R5cGUoKSBjb25zdCB7CiAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXhjZXB0aW9uU3BlY2lmaWNhdGlvblR5cGU+KEV4Y2VwdGlvblNwZWNUeXBlKTsKQEAgLTE1NzQsMTIgKzE1OTMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtSW5mbyAqUGFyYW1zLCB1bnNpZ25lZCBOdW1QYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gRWxsaXBzaXNMb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gUlBhcmVuTG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFR5cGVRdWFscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFJlZlF1YWxpZmllcklzTHZhbHVlUmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFJlZlF1YWxpZmllckxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBDb25zdFF1YWxpZmllckxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBWb2xhdGlsZVF1YWxpZmllckxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBSZXN0cmljdFF1YWxpZmllckxvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBNdXRhYmxlTG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblNwZWNpZmljYXRpb25UeXBlIEVTcGVjVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VSYW5nZSBFU3BlY1JhbmdlLApAQCAtMTU5Myw3ICsxNjA4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBMb2NhbFJhbmdlRW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2xhcmF0b3IgJlRoZURlY2xhcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVJlc3VsdCBUcmFpbGluZ1JldHVyblR5cGUgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVSZXN1bHQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZVJlc3VsdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2xTcGVjICpNZXRob2RRdWFsaWZpZXJzID0gbnVsbHB0cik7CiAKICAgLy8vIFJldHVybiBhIERlY2xhcmF0b3JDaHVuayBmb3IgYSBibG9jay4KICAgc3RhdGljIERlY2xhcmF0b3JDaHVuayBnZXRCbG9ja1BvaW50ZXIodW5zaWduZWQgVHlwZVF1YWxzLApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9EZWxheWVkRGlhZ25vc3RpYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9EZWxheWVkRGlhZ25vc3RpYy5oCmluZGV4IGEyNmI2ZmYuLjkyOWRiNWQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvRGVsYXllZERpYWdub3N0aWMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0RlbGF5ZWREaWFnbm9zdGljLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGVsYXllZERpYWdub3N0aWMuaCAtIERlbGF5ZWQgZGVjbGFyYXRvciBkaWFnbm9zdGljcyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvRGVzaWduYXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9EZXNpZ25hdG9yLmgKaW5kZXggNTU2MDNmZS4uMDVmNjYxMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9EZXNpZ25hdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9EZXNpZ25hdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBEZXNpZ25hdG9yLmggLSBJbml0aWFsaXphdGlvbiBEZXNpZ25hdG9yIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvRXh0ZXJuYWxTZW1hU291cmNlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0V4dGVybmFsU2VtYVNvdXJjZS5oCmluZGV4IDAwZjgwZTIuLjg4ZmE2ZjUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvRXh0ZXJuYWxTZW1hU291cmNlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9FeHRlcm5hbFNlbWFTb3VyY2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEV4dGVybmFsU2VtYVNvdXJjZS5oIC0gRXh0ZXJuYWwgU2VtYSBJbnRlcmZhY2UgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9JZGVudGlmaWVyUmVzb2x2ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvSWRlbnRpZmllclJlc29sdmVyLmgKaW5kZXggMWM0NmUxZC4uN2M4ZGM0NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9JZGVudGlmaWVyUmVzb2x2ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0lkZW50aWZpZXJSZXNvbHZlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIElkZW50aWZpZXJSZXNvbHZlci5oIC0gTGV4aWNhbCBTY29wZSBOYW1lIGxvb2t1cCAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0luaXRpYWxpemF0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0luaXRpYWxpemF0aW9uLmgKaW5kZXggZmI0MmU1Mi4uOGVmYTJlNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9Jbml0aWFsaXphdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvSW5pdGlhbGl6YXRpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJbml0aWFsaXphdGlvbi5oIC0gU2VtYW50aWMgQW5hbHlzaXMgZm9yIEluaXRpYWxpemVycyAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtODkzLDExICs4OTIsOCBAQAogICAgIC8vLyBJbml0aWFsaXplIGFuIE9wZW5DTCBzYW1wbGVyIGZyb20gYW4gaW50ZWdlci4KICAgICBTS19PQ0xTYW1wbGVySW5pdCwKIAotICAgIC8vLyBJbml0aWFsaXplIHF1ZXVlX3QgZnJvbSAwLgotICAgIFNLX09DTFplcm9RdWV1ZSwKLQotICAgIC8vLyBQYXNzaW5nIHplcm8gdG8gYSBmdW5jdGlvbiB3aGVyZSBPcGVuQ0wgZXZlbnRfdCBpcyBleHBlY3RlZC4KLSAgICBTS19PQ0xaZXJvRXZlbnQKKyAgICAvLy8gSW5pdGlhbGl6ZSBhbiBvcGFxdWUgT3BlbkNMIHR5cGUgKGV2ZW50X3QsIHF1ZXVlX3QsIGV0Yy4pIHdpdGggemVybworICAgIFNLX09DTFplcm9PcGFxdWVUeXBlCiAgIH07CiAKICAgLy8vIEEgc2luZ2xlIHN0ZXAgaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLgpAQCAtMTMzNCwxMiArMTMzMCwxMyBAQAogICAvLy8gY29uc3RhbnQuCiAgIHZvaWQgQWRkT0NMU2FtcGxlckluaXRTdGVwKFF1YWxUeXBlIFQpOwogCi0gIC8vLyBBZGQgYSBzdGVwIHRvIGluaXRpYWxpemUgYW4gT3BlbkNMIGV2ZW50X3QgZnJvbSBhIE5VTEwKLSAgLy8vIGNvbnN0YW50LgotICB2b2lkIEFkZE9DTFplcm9FdmVudFN0ZXAoUXVhbFR5cGUgVCk7CisgIC8vLyBBZGQgYSBzdGVwIHRvIGluaXRpYWx6aWUgYW4gT3BlbkNMIG9wYXF1ZSB0eXBlIChldmVudF90LCBxdWV1ZV90LCBldGMuKQorICAvLy8gZnJvbSBhIHplcm8gY29uc3RhbnQuCisgIHZvaWQgQWRkT0NMWmVyb09wYXF1ZVR5cGVTdGVwKFF1YWxUeXBlIFQpOwogCi0gIC8vLyBBZGQgYSBzdGVwIHRvIGluaXRpYWxpemUgYW4gT3BlbkNMIHF1ZXVlX3QgZnJvbSAwLgotICB2b2lkIEFkZE9DTFplcm9RdWV1ZVN0ZXAoUXVhbFR5cGUgVCk7CisgIC8vLyBBZGQgYSBzdGVwIHRvIGluaXRpYWxpemUgYnkgemVybyB0eXBlcyBkZWZpbmVkIGluIHRoZQorICAvLy8gY2xfaW50ZWxfZGV2aWNlX3NpZGVfYXZjX21vdGlvbl9lc3RpbWF0aW9uIE9wZW5DTCBleHRlbnNpb24KKyAgdm9pZCBBZGRPQ0xJbnRlbFN1Ymdyb3VwQVZDWmVyb0luaXRTdGVwKFF1YWxUeXBlIFQpOwogCiAgIC8vLyBBZGQgc3RlcHMgdG8gdW53cmFwIGEgaW5pdGlhbGl6ZXIgbGlzdCBmb3IgYSByZWZlcmVuY2UgYXJvdW5kIGEKICAgLy8vIHNpbmdsZSBlbGVtZW50IGFuZCByZXdyYXAgaXQgYXQgdGhlIGVuZC4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvTG9va3VwLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL0xvb2t1cC5oCmluZGV4IDRmN2RhODUuLjk5MDAwNWYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvTG9va3VwLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9Mb29rdXAuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMb29rdXAuaCAtIENsYXNzZXMgZm9yIG5hbWUgbG9va3VwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9NdWx0aXBsZXhFeHRlcm5hbFNlbWFTb3VyY2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvTXVsdGlwbGV4RXh0ZXJuYWxTZW1hU291cmNlLmgKaW5kZXggODZiZGRlYi4uODE1N2U0OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9NdWx0aXBsZXhFeHRlcm5hbFNlbWFTb3VyY2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL011bHRpcGxleEV4dGVybmFsU2VtYVNvdXJjZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gTXVsdGlwbGV4RXh0ZXJuYWxTZW1hU291cmNlLmggLSBFeHRlcm5hbCBTZW1hIEludGVyZmFjZS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL09iakNNZXRob2RMaXN0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL09iakNNZXRob2RMaXN0LmgKaW5kZXggZDBhZjRkMS4uYmQyY2UyYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9PYmpDTWV0aG9kTGlzdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvT2JqQ01ldGhvZExpc3QuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIE9iakNNZXRob2RMaXN0LmggLSBBIHNpbmdseSBsaW5rZWQgbGlzdCBvZiBtZXRob2RzIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9PdmVybG9hZC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9PdmVybG9hZC5oCmluZGV4IDZkZWQwMTAuLmY1NDkwZTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvT3ZlcmxvYWQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL092ZXJsb2FkLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gT3ZlcmxvYWQuaCAtIEMrKyBPdmVybG9hZGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTc1NSwxMiArNzU0LDEyIEBACiAgICAgQ29udmVyc2lvbkZpeEl0R2VuZXJhdG9yIEZpeDsKIAogICAgIC8vLyBWaWFibGUgLSBUcnVlIHRvIGluZGljYXRlIHRoYXQgdGhpcyBvdmVybG9hZCBjYW5kaWRhdGUgaXMgdmlhYmxlLgotICAgIGJvb2wgVmlhYmxlOworICAgIGJvb2wgVmlhYmxlIDogMTsKIAogICAgIC8vLyBJc1N1cnJvZ2F0ZSAtIFRydWUgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIGNhbmRpZGF0ZSBpcyBhCiAgICAgLy8vIHN1cnJvZ2F0ZSBmb3IgYSBjb252ZXJzaW9uIHRvIGEgZnVuY3Rpb24gcG9pbnRlciBvciByZWZlcmVuY2UKICAgICAvLy8gKEMrKyBbb3Zlci5jYWxsLm9iamVjdF0pLgotICAgIGJvb2wgSXNTdXJyb2dhdGU7CisgICAgYm9vbCBJc1N1cnJvZ2F0ZSA6IDE7CiAKICAgICAvLy8gSWdub3JlT2JqZWN0QXJndW1lbnQgLSBUcnVlIHRvIGluZGljYXRlIHRoYXQgdGhlIGZpcnN0CiAgICAgLy8vIGFyZ3VtZW50J3MgY29udmVyc2lvbiwgd2hpY2ggZm9yIHRoaXMgZnVuY3Rpb24gcmVwcmVzZW50cyB0aGUKQEAgLTc2OSw3ICs3NjgsMTAgQEAKICAgICAvLy8gaW1wbGljaXQgb2JqZWN0IGFyZ3VtZW50IGlzIGp1c3QgYSBwbGFjZWhvbGRlcikgb3IgYQogICAgIC8vLyBub24tc3RhdGljIG1lbWJlciBmdW5jdGlvbiB3aGVuIHRoZSBjYWxsIGRvZXNuJ3QgaGF2ZSBhbgogICAgIC8vLyBvYmplY3QgYXJndW1lbnQuCi0gICAgYm9vbCBJZ25vcmVPYmplY3RBcmd1bWVudDsKKyAgICBib29sIElnbm9yZU9iamVjdEFyZ3VtZW50IDogMTsKKworICAgIC8vLyBUcnVlIGlmIHRoZSBjYW5kaWRhdGUgd2FzIGZvdW5kIHVzaW5nIEFETC4KKyAgICBDYWxsRXhwcjo6QURMQ2FsbEtpbmQgSXNBRExDYW5kaWRhdGUgOiAxOwogCiAgICAgLy8vIEZhaWx1cmVLaW5kIC0gVGhlIHJlYXNvbiB3aHkgdGhpcyBjYW5kaWRhdGUgaXMgbm90IHZpYWJsZS4KICAgICAvLy8gQWN0dWFsbHkgYW4gT3ZlcmxvYWRGYWlsdXJlS2luZC4KQEAgLTgyMyw2ICs4MjUsMTAgQEAKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uLT5nZXROdW1QYXJhbXMoKTsKICAgICAgIHJldHVybiBFeHBsaWNpdENhbGxBcmd1bWVudHM7CiAgICAgfQorCisgIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE92ZXJsb2FkQ2FuZGlkYXRlU2V0OworICAgIE92ZXJsb2FkQ2FuZGlkYXRlKCkgOiBJc0FETENhbmRpZGF0ZShDYWxsRXhwcjo6Tm90QURMKSB7fQogICB9OwogCiAgIC8vLyBPdmVybG9hZENhbmRpZGF0ZVNldCAtIEEgc2V0IG9mIG92ZXJsb2FkIGNhbmRpZGF0ZXMsIHVzZWQgaW4gQysrCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL093bmVyc2hpcC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9Pd25lcnNoaXAuaAppbmRleCBhZTJmMTc4Li5mMzk1MjgyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL093bmVyc2hpcC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvT3duZXJzaGlwLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gT3duZXJzaGlwLmggLSBQYXJzZXIgb3duZXJzaGlwIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTEyOSw5ICsxMjgsNiBAQAogICAgIH0KICAgfTsKIAotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgc3RydWN0IGlzUG9kTGlrZTxjbGFuZzo6T3BhcXVlUHRyPFQ+PiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLQogfSAvLyBuYW1lc3BhY2UgbGx2bQogCiBuYW1lc3BhY2UgY2xhbmcgewpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9QYXJzZWRBdHRyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1BhcnNlZEF0dHIuaAppbmRleCA3NTYxZTgzLi5kMTI1ZDNiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1BhcnNlZEF0dHIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1BhcnNlZEF0dHIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09PT09LSBQYXJzZWRBdHRyLmggLSBQYXJzZWQgYXR0cmlidXRlIHNldHMgLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjA4LDYgKzIwNyw5IEBACiAgIC8vLyBBIGNhY2hlZCB2YWx1ZS4KICAgbXV0YWJsZSB1bnNpZ25lZCBQcm9jZXNzaW5nQ2FjaGUgOiA4OwogCisgIC8vLyBUcnVlIGlmIHRoZSBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIHVzaW5nICcjcHJhZ21hIGNsYW5nIGF0dHJpYnV0ZScuCisgIG11dGFibGUgdW5zaWduZWQgSXNQcmFnbWFDbGFuZ0F0dHJpYnV0ZSA6IDE7CisKICAgLy8vIFRoZSBsb2NhdGlvbiBvZiB0aGUgJ3VuYXZhaWxhYmxlJyBrZXl3b3JkIGluIGFuCiAgIC8vLyBhdmFpbGFiaWxpdHkgYXR0cmlidXRlLgogICBTb3VyY2VMb2NhdGlvbiBVbmF2YWlsYWJsZUxvYzsKQEAgLTIzOSw3ICsyNDEsOCBAQAogICAgICAgICBTY29wZUxvYyhzY29wZUxvYyksIEVsbGlwc2lzTG9jKGVsbGlwc2lzTG9jKSwgTnVtQXJncyhudW1BcmdzKSwKICAgICAgICAgU3ludGF4VXNlZChzeW50YXhVc2VkKSwgSW52YWxpZChmYWxzZSksIFVzZWRBc1R5cGVBdHRyKGZhbHNlKSwKICAgICAgICAgSXNBdmFpbGFiaWxpdHkoZmFsc2UpLCBJc1R5cGVUYWdGb3JEYXRhdHlwZShmYWxzZSksIElzUHJvcGVydHkoZmFsc2UpLAotICAgICAgICBIYXNQYXJzZWRUeXBlKGZhbHNlKSwgSGFzUHJvY2Vzc2luZ0NhY2hlKGZhbHNlKSB7CisgICAgICAgIEhhc1BhcnNlZFR5cGUoZmFsc2UpLCBIYXNQcm9jZXNzaW5nQ2FjaGUoZmFsc2UpLAorICAgICAgICBJc1ByYWdtYUNsYW5nQXR0cmlidXRlKGZhbHNlKSB7CiAgICAgaWYgKG51bUFyZ3MpIG1lbWNweShnZXRBcmdzQnVmZmVyKCksIGFyZ3MsIG51bUFyZ3MgKiBzaXplb2YoQXJnc1VuaW9uKSk7CiAgICAgQXR0cktpbmQgPSBnZXRLaW5kKGdldE5hbWUoKSwgZ2V0U2NvcGVOYW1lKCksIHN5bnRheFVzZWQpOwogICB9CkBAIC0yNTYsOCArMjU5LDggQEAKICAgICAgICAgU2NvcGVMb2Moc2NvcGVMb2MpLCBOdW1BcmdzKDEpLCBTeW50YXhVc2VkKHN5bnRheFVzZWQpLCBJbnZhbGlkKGZhbHNlKSwKICAgICAgICAgVXNlZEFzVHlwZUF0dHIoZmFsc2UpLCBJc0F2YWlsYWJpbGl0eSh0cnVlKSwKICAgICAgICAgSXNUeXBlVGFnRm9yRGF0YXR5cGUoZmFsc2UpLCBJc1Byb3BlcnR5KGZhbHNlKSwgSGFzUGFyc2VkVHlwZShmYWxzZSksCi0gICAgICAgIEhhc1Byb2Nlc3NpbmdDYWNoZShmYWxzZSksIFVuYXZhaWxhYmxlTG9jKHVuYXZhaWxhYmxlKSwKLSAgICAgICAgTWVzc2FnZUV4cHIobWVzc2FnZUV4cHIpIHsKKyAgICAgICAgSGFzUHJvY2Vzc2luZ0NhY2hlKGZhbHNlKSwgSXNQcmFnbWFDbGFuZ0F0dHJpYnV0ZShmYWxzZSksCisgICAgICAgIFVuYXZhaWxhYmxlTG9jKHVuYXZhaWxhYmxlKSwgTWVzc2FnZUV4cHIobWVzc2FnZUV4cHIpIHsKICAgICBBcmdzVW5pb24gUFZhbChQYXJtKTsKICAgICBtZW1jcHkoZ2V0QXJnc0J1ZmZlcigpLCAmUFZhbCwgc2l6ZW9mKEFyZ3NVbmlvbikpOwogICAgIG5ldyAoZ2V0QXZhaWxhYmlsaXR5RGF0YSgpKSBkZXRhaWw6OkF2YWlsYWJpbGl0eURhdGEoCkBAIC0yNzQsNyArMjc3LDcgQEAKICAgICAgICAgU2NvcGVMb2Moc2NvcGVMb2MpLCBOdW1BcmdzKDMpLCBTeW50YXhVc2VkKHN5bnRheFVzZWQpLCBJbnZhbGlkKGZhbHNlKSwKICAgICAgICAgVXNlZEFzVHlwZUF0dHIoZmFsc2UpLCBJc0F2YWlsYWJpbGl0eShmYWxzZSksCiAgICAgICAgIElzVHlwZVRhZ0ZvckRhdGF0eXBlKGZhbHNlKSwgSXNQcm9wZXJ0eShmYWxzZSksIEhhc1BhcnNlZFR5cGUoZmFsc2UpLAotICAgICAgICBIYXNQcm9jZXNzaW5nQ2FjaGUoZmFsc2UpIHsKKyAgICAgICAgSGFzUHJvY2Vzc2luZ0NhY2hlKGZhbHNlKSwgSXNQcmFnbWFDbGFuZ0F0dHJpYnV0ZShmYWxzZSkgewogICAgIEFyZ3NVbmlvbiAqQXJncyA9IGdldEFyZ3NCdWZmZXIoKTsKICAgICBBcmdzWzBdID0gUGFybTE7CiAgICAgQXJnc1sxXSA9IFBhcm0yOwpAQCAtMjkxLDcgKzI5NCw3IEBACiAgICAgICAgIFNjb3BlTG9jKHNjb3BlTG9jKSwgTnVtQXJncygxKSwgU3ludGF4VXNlZChzeW50YXhVc2VkKSwgSW52YWxpZChmYWxzZSksCiAgICAgICAgIFVzZWRBc1R5cGVBdHRyKGZhbHNlKSwgSXNBdmFpbGFiaWxpdHkoZmFsc2UpLAogICAgICAgICBJc1R5cGVUYWdGb3JEYXRhdHlwZSh0cnVlKSwgSXNQcm9wZXJ0eShmYWxzZSksIEhhc1BhcnNlZFR5cGUoZmFsc2UpLAotICAgICAgICBIYXNQcm9jZXNzaW5nQ2FjaGUoZmFsc2UpIHsKKyAgICAgICAgSGFzUHJvY2Vzc2luZ0NhY2hlKGZhbHNlKSwgSXNQcmFnbWFDbGFuZ0F0dHJpYnV0ZShmYWxzZSkgewogICAgIEFyZ3NVbmlvbiBQVmFsKEFyZ0tpbmQpOwogICAgIG1lbWNweShnZXRBcmdzQnVmZmVyKCksICZQVmFsLCBzaXplb2YoQXJnc1VuaW9uKSk7CiAgICAgZGV0YWlsOjpUeXBlVGFnRm9yRGF0YXR5cGVEYXRhICZFeHRyYURhdGEgPSBnZXRUeXBlVGFnRm9yRGF0YXR5cGVEYXRhU2xvdCgpOwpAQCAtMzA5LDcgKzMxMiw3IEBACiAgICAgICAgIFNjb3BlTG9jKHNjb3BlTG9jKSwgTnVtQXJncygwKSwgU3ludGF4VXNlZChzeW50YXhVc2VkKSwgSW52YWxpZChmYWxzZSksCiAgICAgICAgIFVzZWRBc1R5cGVBdHRyKGZhbHNlKSwgSXNBdmFpbGFiaWxpdHkoZmFsc2UpLAogICAgICAgICBJc1R5cGVUYWdGb3JEYXRhdHlwZShmYWxzZSksIElzUHJvcGVydHkoZmFsc2UpLCBIYXNQYXJzZWRUeXBlKHRydWUpLAotICAgICAgICBIYXNQcm9jZXNzaW5nQ2FjaGUoZmFsc2UpIHsKKyAgICAgICAgSGFzUHJvY2Vzc2luZ0NhY2hlKGZhbHNlKSwgSXNQcmFnbWFDbGFuZ0F0dHJpYnV0ZShmYWxzZSkgewogICAgIG5ldyAoJmdldFR5cGVCdWZmZXIoKSkgUGFyc2VkVHlwZSh0eXBlQXJnKTsKICAgICBBdHRyS2luZCA9IGdldEtpbmQoZ2V0TmFtZSgpLCBnZXRTY29wZU5hbWUoKSwgc3ludGF4VXNlZCk7CiAgIH0KQEAgLTMyMyw3ICszMjYsNyBAQAogICAgICAgICBTY29wZUxvYyhzY29wZUxvYyksIE51bUFyZ3MoMCksIFN5bnRheFVzZWQoc3ludGF4VXNlZCksIEludmFsaWQoZmFsc2UpLAogICAgICAgICBVc2VkQXNUeXBlQXR0cihmYWxzZSksIElzQXZhaWxhYmlsaXR5KGZhbHNlKSwKICAgICAgICAgSXNUeXBlVGFnRm9yRGF0YXR5cGUoZmFsc2UpLCBJc1Byb3BlcnR5KHRydWUpLCBIYXNQYXJzZWRUeXBlKGZhbHNlKSwKLSAgICAgICAgSGFzUHJvY2Vzc2luZ0NhY2hlKGZhbHNlKSB7CisgICAgICAgIEhhc1Byb2Nlc3NpbmdDYWNoZShmYWxzZSksIElzUHJhZ21hQ2xhbmdBdHRyaWJ1dGUoZmFsc2UpIHsKICAgICBuZXcgKCZnZXRQcm9wZXJ0eURhdGFCdWZmZXIoKSkgZGV0YWlsOjpQcm9wZXJ0eURhdGEoZ2V0dGVySWQsIHNldHRlcklkKTsKICAgICBBdHRyS2luZCA9IGdldEtpbmQoZ2V0TmFtZSgpLCBnZXRTY29wZU5hbWUoKSwgc3ludGF4VXNlZCk7CiAgIH0KQEAgLTM4Myw2ICszODYsMTEgQEAKICAgSWRlbnRpZmllckluZm8gKmdldFNjb3BlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIFNjb3BlTmFtZTsgfQogICBTb3VyY2VMb2NhdGlvbiBnZXRTY29wZUxvYygpIGNvbnN0IHsgcmV0dXJuIFNjb3BlTG9jOyB9CiAKKyAgYm9vbCBpc0dOVVNjb3BlKCkgY29uc3QgeworICAgIHJldHVybiBTY29wZU5hbWUgJiYKKyAgICAgICAgICAgKFNjb3BlTmFtZS0+aXNTdHIoImdudSIpIHx8IFNjb3BlTmFtZS0+aXNTdHIoIl9fZ251X18iKSk7CisgIH0KKwogICBib29sIGhhc1BhcnNlZFR5cGUoKSBjb25zdCB7IHJldHVybiBIYXNQYXJzZWRUeXBlOyB9CiAKICAgLy8vIElzIHRoaXMgdGhlIE1pY3Jvc29mdCBfX2RlY2xzcGVjKHByb3BlcnR5KSBhdHRyaWJ1dGU/CkBAIC00MzIsNiArNDQwLDExIEBACiAgIGJvb2wgaXNVc2VkQXNUeXBlQXR0cigpIGNvbnN0IHsgcmV0dXJuIFVzZWRBc1R5cGVBdHRyOyB9CiAgIHZvaWQgc2V0VXNlZEFzVHlwZUF0dHIoKSB7IFVzZWRBc1R5cGVBdHRyID0gdHJ1ZTsgfQogCisgIC8vLyBUcnVlIGlmIHRoZSBhdHRyaWJ1dGUgaXMgc3BlY2lmaWVkIHVzaW5nICcjcHJhZ21hIGNsYW5nIGF0dHJpYnV0ZScuCisgIGJvb2wgaXNQcmFnbWFDbGFuZ0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIElzUHJhZ21hQ2xhbmdBdHRyaWJ1dGU7IH0KKworICB2b2lkIHNldElzUHJhZ21hQ2xhbmdBdHRyaWJ1dGUoKSB7IElzUHJhZ21hQ2xhbmdBdHRyaWJ1dGUgPSB0cnVlOyB9CisKICAgYm9vbCBpc1BhY2tFeHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBFbGxpcHNpc0xvYy5pc1ZhbGlkKCk7IH0KICAgU291cmNlTG9jYXRpb24gZ2V0RWxsaXBzaXNMb2MoKSBjb25zdCB7IHJldHVybiBFbGxpcHNpc0xvYzsgfQogCkBAIC01NjMsNiArNTc2LDI1IEBACiAgIC8vLyBwYXJzZWQgYXR0cmlidXRlIGRvZXMgbm90IGhhdmUgYSBzZW1hbnRpYyBlcXVpdmFsZW50LCBvciB3b3VsZCBub3QgaGF2ZQogICAvLy8gYSBTcGVsbGluZyBlbnVtZXJhdGlvbiwgdGhlIHZhbHVlIFVJTlRfTUFYIGlzIHJldHVybmVkLgogICB1bnNpZ25lZCBnZXRTZW1hbnRpY1NwZWxsaW5nKCkgY29uc3Q7CisKKyAgLy8vIElmIHRoaXMgaXMgYW4gT3BlbkNMIGFkZHIgc3BhY2UgYXR0cmlidXRlIHJldHVybnMgaXRzIHJlcHJlc2VudGF0aW9uCisgIC8vLyBpbiBMYW5nQVMsIG90aGVyd2lzZSByZXR1cm5zIGRlZmF1bHQgYWRkciBzcGFjZS4KKyAgTGFuZ0FTIGFzT3BlbkNMTGFuZ0FTKCkgY29uc3QgeworICAgIHN3aXRjaCAoZ2V0S2luZCgpKSB7CisgICAgY2FzZSBQYXJzZWRBdHRyOjpBVF9PcGVuQ0xDb25zdGFudEFkZHJlc3NTcGFjZToKKyAgICAgIHJldHVybiBMYW5nQVM6Om9wZW5jbF9jb25zdGFudDsKKyAgICBjYXNlIFBhcnNlZEF0dHI6OkFUX09wZW5DTEdsb2JhbEFkZHJlc3NTcGFjZToKKyAgICAgIHJldHVybiBMYW5nQVM6Om9wZW5jbF9nbG9iYWw7CisgICAgY2FzZSBQYXJzZWRBdHRyOjpBVF9PcGVuQ0xMb2NhbEFkZHJlc3NTcGFjZToKKyAgICAgIHJldHVybiBMYW5nQVM6Om9wZW5jbF9sb2NhbDsKKyAgICBjYXNlIFBhcnNlZEF0dHI6OkFUX09wZW5DTFByaXZhdGVBZGRyZXNzU3BhY2U6CisgICAgICByZXR1cm4gTGFuZ0FTOjpvcGVuY2xfcHJpdmF0ZTsKKyAgICBjYXNlIFBhcnNlZEF0dHI6OkFUX09wZW5DTEdlbmVyaWNBZGRyZXNzU3BhY2U6CisgICAgICByZXR1cm4gTGFuZ0FTOjpvcGVuY2xfZ2VuZXJpYzsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIExhbmdBUzo6RGVmYXVsdDsKKyAgICB9CisgIH0KIH07CiAKIGNsYXNzIEF0dHJpYnV0ZVBvb2w7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1BhcnNlZFRlbXBsYXRlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1BhcnNlZFRlbXBsYXRlLmgKaW5kZXggMjU4YjIyOS4uMmVlZDMwMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9QYXJzZWRUZW1wbGF0ZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvUGFyc2VkVGVtcGxhdGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFBhcnNlZFRlbXBsYXRlLmggLSBUZW1wbGF0ZSBQYXJzaW5nIERhdGEgVHlwZXMgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9TY29wZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9TY29wZS5oCmluZGV4IDExZmEwMzYuLmExYjQ1MWMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvU2NvcGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1Njb3BlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU2NvcGUuaCAtIFNjb3BlIGludGVyZmFjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE0LDYgKzEzLDcgQEAKICNpZm5kZWYgTExWTV9DTEFOR19TRU1BX1NDT1BFX0gKICNkZWZpbmUgTExWTV9DTEFOR19TRU1BX1NDT1BFX0gKIAorI2luY2x1ZGUgImNsYW5nL0FTVC9EZWNsLmgiCiAjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpYy5oIgogI2luY2x1ZGUgImxsdm0vQURUL1BvaW50ZXJJbnRQYWlyLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvU21hbGxQdHJTZXQuaCIKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvU2NvcGVJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1Njb3BlSW5mby5oCmluZGV4IGUwOWE2OGEuLmUyMzQ2ZmQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvU2NvcGVJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9TY29wZUluZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTY29wZUluZm8uaCAtIEluZm9ybWF0aW9uIGFib3V0IGEgc2VtYW50aWMgY29udGV4dCAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9TZW1hLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1NlbWEuaAppbmRleCBlMWU2ZGFlLi4wYzI0NzlhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1NlbWEuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1NlbWEuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFNlbWEuaCAtIFNlbWFudGljIEFuYWx5c2lzICYgQVNUIEJ1aWxkaW5nIC0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjc0LDYgKzI3Myw0MSBAQAogICB9CiB9OwogCisvLy8gS2VlcHMgdHJhY2sgb2YgZXhwZWN0ZWQgdHlwZSBkdXJpbmcgZXhwcmVzc2lvbiBwYXJzaW5nLiBUaGUgdHlwZSBpcyB0aWVkIHRvCisvLy8gYSBwYXJ0aWN1bGFyIHRva2VuLCBhbGwgZnVuY3Rpb25zIHRoYXQgdXBkYXRlIG9yIGNvbnN1bWUgdGhlIHR5cGUgdGFrZSBhCisvLy8gc3RhcnQgbG9jYXRpb24gb2YgdGhlIHRva2VuIHRoZXkgYXJlIGxvb2tpbmcgYXQgYXMgYSBwYXJhbWV0ZXIuIFRoaXMgYWxsb3dzCisvLy8gdG8gYXZvaWQgdXBkYXRpbmcgdGhlIHR5cGUgb24gaG90IHBhdGhzIGluIHRoZSBwYXJzZXIuCitjbGFzcyBQcmVmZXJyZWRUeXBlQnVpbGRlciB7CitwdWJsaWM6CisgIFByZWZlcnJlZFR5cGVCdWlsZGVyKCkgPSBkZWZhdWx0OworICBleHBsaWNpdCBQcmVmZXJyZWRUeXBlQnVpbGRlcihRdWFsVHlwZSBUeXBlKSA6IFR5cGUoVHlwZSkge30KKworICB2b2lkIGVudGVyQ29uZGl0aW9uKFNlbWEgJlMsIFNvdXJjZUxvY2F0aW9uIFRvayk7CisgIHZvaWQgZW50ZXJSZXR1cm4oU2VtYSAmUywgU291cmNlTG9jYXRpb24gVG9rKTsKKyAgdm9pZCBlbnRlclZhcmlhYmxlSW5pdChTb3VyY2VMb2NhdGlvbiBUb2ssIERlY2wgKkQpOworCisgIHZvaWQgZW50ZXJQYXJlbkV4cHIoU291cmNlTG9jYXRpb24gVG9rLCBTb3VyY2VMb2NhdGlvbiBMUGFyTG9jKTsKKyAgdm9pZCBlbnRlclVuYXJ5KFNlbWEgJlMsIFNvdXJjZUxvY2F0aW9uIFRvaywgdG9rOjpUb2tlbktpbmQgT3BLaW5kLAorICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gT3BMb2MpOworICB2b2lkIGVudGVyQmluYXJ5KFNlbWEgJlMsIFNvdXJjZUxvY2F0aW9uIFRvaywgRXhwciAqTEhTLCB0b2s6OlRva2VuS2luZCBPcCk7CisgIHZvaWQgZW50ZXJNZW1BY2Nlc3MoU2VtYSAmUywgU291cmNlTG9jYXRpb24gVG9rLCBFeHByICpCYXNlKTsKKyAgdm9pZCBlbnRlclN1YnNjcmlwdChTZW1hICZTLCBTb3VyY2VMb2NhdGlvbiBUb2ssIEV4cHIgKkxIUyk7CisgIC8vLyBIYW5kbGVzIGFsbCB0eXBlIGNhc3RzLCBpbmNsdWRpbmcgQy1zdHlsZSBjYXN0LCBDKysgY2FzdHMsIGV0Yy4KKyAgdm9pZCBlbnRlclR5cGVDYXN0KFNvdXJjZUxvY2F0aW9uIFRvaywgUXVhbFR5cGUgQ2FzdFR5cGUpOworCisgIFF1YWxUeXBlIGdldChTb3VyY2VMb2NhdGlvbiBUb2spIGNvbnN0IHsKKyAgICBpZiAoVG9rID09IEV4cGVjdGVkTG9jKQorICAgICAgcmV0dXJuIFR5cGU7CisgICAgcmV0dXJuIFF1YWxUeXBlKCk7CisgIH0KKworcHJpdmF0ZToKKyAgLy8vIFN0YXJ0IHBvc2l0aW9uIG9mIGEgdG9rZW4gZm9yIHdoaWNoIHdlIHN0b3JlIGV4cGVjdGVkIHR5cGUuCisgIFNvdXJjZUxvY2F0aW9uIEV4cGVjdGVkTG9jOworICAvLy8gRXhwZWN0ZWQgdHlwZSBmb3IgYSB0b2tlbiBzdGFydGluZyBhdCBFeHBlY3RlZExvYy4KKyAgUXVhbFR5cGUgVHlwZTsKK307CisKIC8vLyBTZW1hIC0gVGhpcyBpbXBsZW1lbnRzIHNlbWFudGljIGFuYWx5c2lzIGFuZCBBU1QgYnVpbGRpbmcgZm9yIEMuCiBjbGFzcyBTZW1hIHsKICAgU2VtYShjb25zdCBTZW1hICYpID0gZGVsZXRlOwpAQCAtMzA3LDYgKzM0MSwxMCBAQAogICB9CiAgIGJvb2wgc2hvdWxkTGlua1Bvc3NpYmx5SGlkZGVuRGVjbChMb29rdXBSZXN1bHQgJk9sZCwgY29uc3QgTmFtZWREZWNsICpOZXcpOwogCisgIHZvaWQgc2V0dXBJbXBsaWNpdFNwZWNpYWxNZW1iZXJUeXBlKENYWE1ldGhvZERlY2wgKlNwZWNpYWxNZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIFJlc3VsdFR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxRdWFsVHlwZT4gQXJncyk7CisKIHB1YmxpYzoKICAgdHlwZWRlZiBPcGFxdWVQdHI8RGVjbEdyb3VwUmVmPiBEZWNsR3JvdXBQdHJUeTsKICAgdHlwZWRlZiBPcGFxdWVQdHI8VGVtcGxhdGVOYW1lPiBUZW1wbGF0ZVR5OwpAQCAtNDkxLDE1ICs1MjksMjQgQEAKICAgLy8vIFZpc0NvbnRleHQgLSBNYW5hZ2VzIHRoZSBzdGFjayBmb3IgXCNwcmFnbWEgR0NDIHZpc2liaWxpdHkuCiAgIHZvaWQgKlZpc0NvbnRleHQ7IC8vIFJlYWxseSBhICJQcmFnbWFWaXNTdGFjayoiCiAKLSAgLy8vIFRoaXMgcmVwcmVzZW50cyB0aGUgc3RhY2sgb2YgYXR0cmlidXRlcyB0aGF0IHdlcmUgcHVzaGVkIGJ5Ci0gIC8vLyBcI3ByYWdtYSBjbGFuZyBhdHRyaWJ1dGUuCisgIC8vLyBUaGlzIGFuIGF0dHJpYnV0ZSBpbnRyb2R1Y2VkIGJ5IFwjcHJhZ21hIGNsYW5nIGF0dHJpYnV0ZS4KICAgc3RydWN0IFByYWdtYUF0dHJpYnV0ZUVudHJ5IHsKICAgICBTb3VyY2VMb2NhdGlvbiBMb2M7CiAgICAgUGFyc2VkQXR0ciAqQXR0cmlidXRlOwogICAgIFNtYWxsVmVjdG9yPGF0dHI6OlN1YmplY3RNYXRjaFJ1bGUsIDQ+IE1hdGNoUnVsZXM7CiAgICAgYm9vbCBJc1VzZWQ7CiAgIH07Ci0gIFNtYWxsVmVjdG9yPFByYWdtYUF0dHJpYnV0ZUVudHJ5LCAyPiBQcmFnbWFBdHRyaWJ1dGVTdGFjazsKKworICAvLy8gQSBwdXNoJ2QgZ3JvdXAgb2YgUHJhZ21hQXR0cmlidXRlRW50cmllcy4KKyAgc3RydWN0IFByYWdtYUF0dHJpYnV0ZUdyb3VwIHsKKyAgICAvLy8gVGhlIGxvY2F0aW9uIG9mIHRoZSBwdXNoIGF0dHJpYnV0ZS4KKyAgICBTb3VyY2VMb2NhdGlvbiBMb2M7CisgICAgLy8vIFRoZSBuYW1lc3BhY2Ugb2YgdGhpcyBwdXNoIGdyb3VwLgorICAgIGNvbnN0IElkZW50aWZpZXJJbmZvICpOYW1lc3BhY2U7CisgICAgU21hbGxWZWN0b3I8UHJhZ21hQXR0cmlidXRlRW50cnksIDI+IEVudHJpZXM7CisgIH07CisKKyAgU21hbGxWZWN0b3I8UHJhZ21hQXR0cmlidXRlR3JvdXAsIDI+IFByYWdtYUF0dHJpYnV0ZVN0YWNrOwogCiAgIC8vLyBUaGUgZGVjbGFyYXRpb24gdGhhdCBpcyBjdXJyZW50bHkgcmVjZWl2aW5nIGFuIGF0dHJpYnV0ZSBmcm9tIHRoZQogICAvLy8gI3ByYWdtYSBhdHRyaWJ1dGUgc3RhY2suCkBAIC05OTIsNiArMTAzOSw4IEBACiAgICAgLy8vIGV4cHJlc3Npb25zIGZvciB3aGljaCB3ZSBoYXZlIGRlZmVycmVkIGNoZWNraW5nIHRoZSBkZXN0cnVjdG9yLgogICAgIFNtYWxsVmVjdG9yPENYWEJpbmRUZW1wb3JhcnlFeHByICosIDg+IERlbGF5ZWREZWNsdHlwZUJpbmRzOwogCisgICAgbGx2bTo6U21hbGxQdHJTZXQ8Y29uc3QgRXhwciAqLCA4PiBQb3NzaWJsZURlcmVmczsKKwogICAgIC8vLyBcYnJpZWYgRGVzY3JpYmVzIHdoZXRoZXIgd2UgYXJlIGluIGFuIGV4cHJlc3Npb24gY29uc3RleHQgd2hpY2ggd2UgaGF2ZQogICAgIC8vLyB0byBoYW5kbGUgZGlmZmVyZW50bHkuCiAgICAgZW51bSBFeHByZXNzaW9uS2luZCB7CkBAIC0xMDI1LDYgKzEwNzQsOSBAQAogICAvLy8gQSBzdGFjayBvZiBleHByZXNzaW9uIGV2YWx1YXRpb24gY29udGV4dHMuCiAgIFNtYWxsVmVjdG9yPEV4cHJlc3Npb25FdmFsdWF0aW9uQ29udGV4dFJlY29yZCwgOD4gRXhwckV2YWxDb250ZXh0czsKIAorICAvLy8gRW1pdCBhIHdhcm5pbmcgZm9yIGFsbCBwZW5kaW5nIG5vZGVyZWYgZXhwcmVzc2lvbnMgdGhhdCB3ZSByZWNvcmRlZC4KKyAgdm9pZCBXYXJuT25QZW5kaW5nTm9EZXJlZnMoRXhwcmVzc2lvbkV2YWx1YXRpb25Db250ZXh0UmVjb3JkICZSZWMpOworCiAgIC8vLyBDb21wdXRlIHRoZSBtYW5nbGluZyBudW1iZXIgY29udGV4dCBmb3IgYSBsYW1iZGEgZXhwcmVzc2lvbiBvcgogICAvLy8gYmxvY2sgbGl0ZXJhbC4KICAgLy8vCkBAIC0xMzUxLDYgKzE0MDMsNyBAQAogICB2b2lkIFBvcENvbXBvdW5kU2NvcGUoKTsKIAogICBzZW1hOjpDb21wb3VuZFNjb3BlSW5mbyAmZ2V0Q3VyQ29tcG91bmRTY29wZSgpIGNvbnN0OworICBib29sIGlzQ3VyQ29tcG91bmRTdG10QVN0bXRFeHByKCkgY29uc3Q7CiAKICAgYm9vbCBoYXNBbnlVbnJlY292ZXJhYmxlRXJyb3JzSW5UaGlzRnVuY3Rpb24oKSBjb25zdDsKIApAQCAtMTM5Myw2ICsxNDQ2LDEwIEBACiAgIFF1YWxUeXBlIEJ1aWxkVmVjdG9yVHlwZShRdWFsVHlwZSBULCBFeHByICpWZWNTaXplLCBTb3VyY2VMb2NhdGlvbiBBdHRyTG9jKTsKICAgUXVhbFR5cGUgQnVpbGRFeHRWZWN0b3JUeXBlKFF1YWxUeXBlIFQsIEV4cHIgKkFycmF5U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIEF0dHJMb2MpOworICBRdWFsVHlwZSBCdWlsZEFkZHJlc3NTcGFjZUF0dHIoUXVhbFR5cGUgJlQsIExhbmdBUyBBU0lkeCwgRXhwciAqQWRkclNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gQXR0ckxvYyk7CisKKyAgLy8vIFNhbWUgYXMgYWJvdmUsIGJ1dCBjb25zdHJ1Y3RzIHRoZSBBZGRyZXNzU3BhY2UgaW5kZXggaWYgbm90IHByb3ZpZGVkLgogICBRdWFsVHlwZSBCdWlsZEFkZHJlc3NTcGFjZUF0dHIoUXVhbFR5cGUgJlQsIEV4cHIgKkFkZHJTcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIEF0dHJMb2MpOwogCkBAIC0xNTM3LDYgKzE1OTQsMTcgQEAKICAgfTsKIAogcHJpdmF0ZToKKyAgLy8vIE1ldGhvZHMgZm9yIG1hcmtpbmcgd2hpY2ggZXhwcmVzc2lvbnMgaW52b2x2ZSBkZXJlZmVyZW5jaW5nIGEgcG9pbnRlcgorICAvLy8gbWFya2VkIHdpdGggdGhlICdub2RlcmVmJyBhdHRyaWJ1dGUuIEV4cHJlc3Npb25zIGFyZSBjaGVja2VkIGJvdHRvbSB1cCBhcworICAvLy8gdGhleSBhcmUgcGFyc2VkLCBtZWFuaW5nIHRoYXQgYSBub2RlcmVmIHBvaW50ZXIgbWF5IG5vdCBiZSBhY2Nlc3NlZC4gRm9yCisgIC8vLyBleGFtcGxlLCBpbiBgJipwYCB3aGVyZSBgcGAgaXMgYSBub2RlcmVmIHBvaW50ZXIsIHdlIHdpbGwgZmlyc3QgcGFyc2UgdGhlCisgIC8vLyBgKnBgLCBidXQgbmVlZCB0byBjaGVjayB0aGF0IGBhZGRyZXNzIG9mYCBpcyBjYWxsZWQgb24gaXQuIFRoaXMgcmVxdWlyZXMKKyAgLy8vIGtlZXBpbmcgYSBjb250YWluZXIgb2YgYWxsIHBlbmRpbmcgZXhwcmVzc2lvbnMgYW5kIGNoZWNraW5nIGlmIHRoZSBhZGRyZXNzCisgIC8vLyBvZiB0aGVtIGFyZSBldmVudHVhbGx5IHRha2VuLgorICB2b2lkIENoZWNrU3Vic2NyaXB0QWNjZXNzT2ZOb0RlcmVmKGNvbnN0IEFycmF5U3Vic2NyaXB0RXhwciAqRSk7CisgIHZvaWQgQ2hlY2tBZGRyZXNzT2ZOb0RlcmVmKGNvbnN0IEV4cHIgKkUpOworICB2b2lkIENoZWNrTWVtYmVyQWNjZXNzT2ZOb0RlcmVmKGNvbnN0IE1lbWJlckV4cHIgKkUpOworCiAgIGJvb2wgUmVxdWlyZUNvbXBsZXRlVHlwZUltcGwoU291cmNlTG9jYXRpb24gTG9jLCBRdWFsVHlwZSBULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVEaWFnbm9zZXIgKkRpYWdub3Nlcik7CiAKQEAgLTE5MzQsNyArMjAwMiw3IEBACiAgIGJvb2wgQ2hlY2tWYXJpYWJsZURlY2xhcmF0aW9uKFZhckRlY2wgKk5ld1ZELCBMb29rdXBSZXN1bHQgJlByZXZpb3VzKTsKICAgdm9pZCBDaGVja1ZhcmlhYmxlRGVjbGFyYXRpb25UeXBlKFZhckRlY2wgKk5ld1ZEKTsKICAgYm9vbCBEZWR1Y2VWYXJpYWJsZURlY2xhcmF0aW9uVHlwZShWYXJEZWNsICpWRGVjbCwgYm9vbCBEaXJlY3RJbml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHIgKkluaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHIgKiZJbml0KTsKICAgdm9pZCBDaGVja0NvbXBsZXRlVmFyaWFibGVEZWNsYXJhdGlvbihWYXJEZWNsICpWRCk7CiAgIHZvaWQgQ2hlY2tDb21wbGV0ZURlY29tcG9zaXRpb25EZWNsYXJhdGlvbihEZWNvbXBvc2l0aW9uRGVjbCAqREQpOwogICB2b2lkIE1heWJlU3VnZ2VzdEFkZGluZ1N0YXRpY1RvRGVjbChjb25zdCBGdW5jdGlvbkRlY2wgKkQpOwpAQCAtMTk5NCw2ICsyMDYyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBBdHRyRW5kKTsKICAgdm9pZCBTZXREZWNsRGVsZXRlZChEZWNsICpkY2wsIFNvdXJjZUxvY2F0aW9uIERlbExvYyk7CiAgIHZvaWQgU2V0RGVjbERlZmF1bHRlZChEZWNsICpkY2wsIFNvdXJjZUxvY2F0aW9uIERlZmF1bHRMb2MpOworICB2b2lkIENoZWNrU3RhdGljTG9jYWxGb3JEbGxFeHBvcnQoVmFyRGVjbCAqVkQpOwogICB2b2lkIEZpbmFsaXplRGVjbGFyYXRpb24oRGVjbCAqRCk7CiAgIERlY2xHcm91cFB0clR5IEZpbmFsaXplRGVjbGFyYXRvckdyb3VwKFNjb3BlICpTLCBjb25zdCBEZWNsU3BlYyAmRFMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPERlY2wgKj4gR3JvdXApOwpAQCAtMjQyNSwxOCArMjQ5NCwzOCBAQAogICAgIEFNS19Qcm90b2NvbEltcGxlbWVudGF0aW9uLAogICB9OwogCisgIC8vLyBEZXNjcmliZXMgdGhlIGtpbmQgb2YgcHJpb3JpdHkgZ2l2ZW4gdG8gYW4gYXZhaWxhYmlsaXR5IGF0dHJpYnV0ZS4KKyAgLy8vCisgIC8vLyBUaGUgc3VtIG9mIHByaW9yaXRpZXMgZGV0ZXJlbWluZXMgdGhlIGZpbmFsIHByaW9yaXR5IG9mIHRoZSBhdHRyaWJ1dGUuCisgIC8vLyBUaGUgZmluYWwgcHJpb3JpdHkgZGV0ZXJtaW5lcyBob3cgdGhlIGF0dHJpYnV0ZSB3aWxsIGJlIG1lcmdlZC4KKyAgLy8vIEFuIGF0dHJpYnV0ZSB3aXRoIGEgbG93ZXIgcHJpb3JpdHkgd2lsbCBhbHdheXMgcmVtb3ZlIGhpZ2hlciBwcmlvcml0eQorICAvLy8gYXR0cmlidXRlcyBmb3IgdGhlIHNwZWNpZmllZCBwbGF0Zm9ybSB3aGVuIGl0IGlzIGJlaW5nIGFwcGxpZWQuIEFuCisgIC8vLyBhdHRyaWJ1dGUgd2l0aCBhIGhpZ2hlciBwcmlvcml0eSB3aWxsIG5vdCBiZSBhcHBsaWVkIGlmIHRoZSBkZWNsYXJhdGlvbgorICAvLy8gYWxyZWFkeSBoYXMgYW4gYXZhaWxhYmlsaXR5IGF0dHJpYnV0ZSB3aXRoIGEgbG93ZXIgcHJpb3JpdHkgZm9yIHRoZQorICAvLy8gc3BlY2lmaWVkIHBsYXRmb3JtLiBUaGUgZmluYWwgcHJpcm9yaXR5IHZhbHVlcyBhcmUgbm90IGV4cGVjdGVkIHRvIG1hdGNoCisgIC8vLyB0aGUgdmFsdWVzIGluIHRoaXMgZW51bWVyYXRpb24sIGJ1dCBpbnN0ZWFkIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgcGxhaW4KKyAgLy8vIGludGVnZXIgdmFsdWUuIFRoaXMgZW51bWVyYXRpb24ganVzdCBuYW1lcyB0aGUgcHJpb3JpdHkgd2VpZ2h0cyB0aGF0IGFyZQorICAvLy8gdXNlZCB0byBjYWxjdWxhdGUgdGhhdCBmaW5hbCB2YXVlLgorICBlbnVtIEF2YWlsYWJpbGl0eVByaW9yaXR5IDogaW50IHsKKyAgICAvLy8gVGhlIGF2YWlsYWJpbGl0eSBhdHRyaWJ1dGUgd2FzIHNwZWNpZmllZCBleHBsaWNpdGx5IG5leHQgdG8gdGhlCisgICAgLy8vIGRlY2xhcmF0aW9uLgorICAgIEFQX0V4cGxpY2l0ID0gMCwKKworICAgIC8vLyBUaGUgYXZhaWxhYmlsaXR5IGF0dHJpYnV0ZSB3YXMgYXBwbGllZCB1c2luZyAnI3ByYWdtYSBjbGFuZyBhdHRyaWJ1dGUnLgorICAgIEFQX1ByYWdtYUNsYW5nQXR0cmlidXRlID0gMSwKKworICAgIC8vLyBUaGUgYXZhaWxhYmlsaXR5IGF0dHJpYnV0ZSBmb3IgYSBzcGVjaWZpYyBwbGF0Zm9ybSB3YXMgaW5mZXJyZWQgZnJvbQorICAgIC8vLyBhbiBhdmFpbGFiaWxpdHkgYXR0cmlidXRlIGZvciBhbm90aGVyIHBsYXRmb3JtLgorICAgIEFQX0luZmVycmVkRnJvbU90aGVyUGxhdGZvcm0gPSAyCisgIH07CisKICAgLy8vIEF0dHJpYnV0ZSBtZXJnaW5nIG1ldGhvZHMuIFJldHVybiB0cnVlIGlmIGEgbmV3IGF0dHJpYnV0ZSB3YXMgYWRkZWQuCi0gIEF2YWlsYWJpbGl0eUF0dHIgKm1lcmdlQXZhaWxhYmlsaXR5QXR0cihOYW1lZERlY2wgKkQsIFNvdXJjZVJhbmdlIFJhbmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllckluZm8gKlBsYXRmb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBJbXBsaWNpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25UdXBsZSBJbnRyb2R1Y2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvblR1cGxlIERlcHJlY2F0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uVHVwbGUgT2Jzb2xldGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBJc1VuYXZhaWxhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nUmVmIE1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIElzU3RyaWN0LCBTdHJpbmdSZWYgUmVwbGFjZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlNZXJnZUtpbmQgQU1LLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgQXR0clNwZWxsaW5nTGlzdEluZGV4KTsKKyAgQXZhaWxhYmlsaXR5QXR0ciAqbWVyZ2VBdmFpbGFiaWxpdHlBdHRyKAorICAgICAgTmFtZWREZWNsICpELCBTb3VyY2VSYW5nZSBSYW5nZSwgSWRlbnRpZmllckluZm8gKlBsYXRmb3JtLCBib29sIEltcGxpY2l0LAorICAgICAgVmVyc2lvblR1cGxlIEludHJvZHVjZWQsIFZlcnNpb25UdXBsZSBEZXByZWNhdGVkLCBWZXJzaW9uVHVwbGUgT2Jzb2xldGVkLAorICAgICAgYm9vbCBJc1VuYXZhaWxhYmxlLCBTdHJpbmdSZWYgTWVzc2FnZSwgYm9vbCBJc1N0cmljdCwKKyAgICAgIFN0cmluZ1JlZiBSZXBsYWNlbWVudCwgQXZhaWxhYmlsaXR5TWVyZ2VLaW5kIEFNSywgaW50IFByaW9yaXR5LAorICAgICAgdW5zaWduZWQgQXR0clNwZWxsaW5nTGlzdEluZGV4KTsKICAgVHlwZVZpc2liaWxpdHlBdHRyICptZXJnZVR5cGVWaXNpYmlsaXR5QXR0cihEZWNsICpELCBTb3VyY2VSYW5nZSBSYW5nZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVWaXNpYmlsaXR5QXR0cjo6VmlzaWJpbGl0eVR5cGUgVmlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEF0dHJTcGVsbGluZ0xpc3RJbmRleCk7CkBAIC0yNDY1LDYgKzI1NTQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEF0dHJTcGVsbGluZ0xpc3RJbmRleCk7CiAgIE1pblNpemVBdHRyICptZXJnZU1pblNpemVBdHRyKERlY2wgKkQsIFNvdXJjZVJhbmdlIFJhbmdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBBdHRyU3BlbGxpbmdMaXN0SW5kZXgpOworICBOb1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHIgKgorICBtZXJnZU5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0cihEZWNsICpELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBOb1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHIgJkFMKTsKKyAgU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0ciAqCisgIG1lcmdlU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0cihEZWNsICpELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nQXR0ciAmQUwpOwogICBPcHRpbWl6ZU5vbmVBdHRyICptZXJnZU9wdGltaXplTm9uZUF0dHIoRGVjbCAqRCwgU291cmNlUmFuZ2UgUmFuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBBdHRyU3BlbGxpbmdMaXN0SW5kZXgpOwogICBJbnRlcm5hbExpbmthZ2VBdHRyICptZXJnZUludGVybmFsTGlua2FnZUF0dHIoRGVjbCAqRCwgY29uc3QgUGFyc2VkQXR0ciAmQUwpOwpAQCAtMjcyNSwxMyArMjgyMCwxNSBAQAogICB0eXBlZGVmIGxsdm06OlNtYWxsU2V0VmVjdG9yPERlY2xDb250ZXh0ICAgKiwgMTY+IEFzc29jaWF0ZWROYW1lc3BhY2VTZXQ7CiAgIHR5cGVkZWYgbGx2bTo6U21hbGxTZXRWZWN0b3I8Q1hYUmVjb3JkRGVjbCAqLCAxNj4gQXNzb2NpYXRlZENsYXNzU2V0OwogCi0gIHZvaWQgQWRkT3ZlcmxvYWRDYW5kaWRhdGUoRnVuY3Rpb25EZWNsICpGdW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNsQWNjZXNzUGFpciBGb3VuZERlY2wsCisgIHVzaW5nIEFETENhbGxLaW5kID0gQ2FsbEV4cHI6OkFETENhbGxLaW5kOworCisgIHZvaWQgQWRkT3ZlcmxvYWRDYW5kaWRhdGUoRnVuY3Rpb25EZWNsICpGdW5jdGlvbiwgRGVjbEFjY2Vzc1BhaXIgRm91bmREZWNsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEV4cHIgKj4gQXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdmVybG9hZENhbmRpZGF0ZVNldCAmQ2FuZGlkYXRlU2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgU3VwcHJlc3NVc2VyQ29udmVyc2lvbnMgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFBhcnRpYWxPdmVybG9hZGluZyA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgQWxsb3dFeHBsaWNpdCA9IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFETENhbGxLaW5kIElzQURMQ2FuZGlkYXRlID0gQURMQ2FsbEtpbmQ6Ok5vdEFETCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9uU2VxdWVuY2VMaXN0IEVhcmx5Q29udmVyc2lvbnMgPSBOb25lKTsKICAgdm9pZCBBZGRGdW5jdGlvbkNhbmRpZGF0ZXMoY29uc3QgVW5yZXNvbHZlZFNldEltcGwgJkZ1bmN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxFeHByICo+IEFyZ3MsCkBAIC0yNzY1LDEzICsyODYyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcmxvYWRDYW5kaWRhdGVTZXQmIENhbmRpZGF0ZVNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFN1cHByZXNzVXNlckNvbnZlcnNpb25zID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBQYXJ0aWFsT3ZlcmxvYWRpbmcgPSBmYWxzZSk7Ci0gIHZvaWQgQWRkVGVtcGxhdGVPdmVybG9hZENhbmRpZGF0ZShGdW5jdGlvblRlbXBsYXRlRGVjbCAqRnVuY3Rpb25UZW1wbGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2xBY2Nlc3NQYWlyIEZvdW5kRGVjbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlQXJndW1lbnRMaXN0SW5mbyAqRXhwbGljaXRUZW1wbGF0ZUFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxFeHByICo+IEFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdmVybG9hZENhbmRpZGF0ZVNldCYgQ2FuZGlkYXRlU2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBTdXBwcmVzc1VzZXJDb252ZXJzaW9ucyA9IGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBQYXJ0aWFsT3ZlcmxvYWRpbmcgPSBmYWxzZSk7CisgIHZvaWQgQWRkVGVtcGxhdGVPdmVybG9hZENhbmRpZGF0ZSgKKyAgICAgIEZ1bmN0aW9uVGVtcGxhdGVEZWNsICpGdW5jdGlvblRlbXBsYXRlLCBEZWNsQWNjZXNzUGFpciBGb3VuZERlY2wsCisgICAgICBUZW1wbGF0ZUFyZ3VtZW50TGlzdEluZm8gKkV4cGxpY2l0VGVtcGxhdGVBcmdzLCBBcnJheVJlZjxFeHByICo+IEFyZ3MsCisgICAgICBPdmVybG9hZENhbmRpZGF0ZVNldCAmQ2FuZGlkYXRlU2V0LCBib29sIFN1cHByZXNzVXNlckNvbnZlcnNpb25zID0gZmFsc2UsCisgICAgICBib29sIFBhcnRpYWxPdmVybG9hZGluZyA9IGZhbHNlLAorICAgICAgQURMQ2FsbEtpbmQgSXNBRExDYW5kaWRhdGUgPSBBRExDYWxsS2luZDo6Tm90QURMKTsKICAgYm9vbCBDaGVja05vbkRlcGVuZGVudENvbnZlcnNpb25zKEZ1bmN0aW9uVGVtcGxhdGVEZWNsICpGdW5jdGlvblRlbXBsYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8UXVhbFR5cGU+IFBhcmFtVHlwZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxFeHByICo+IEFyZ3MsCkBAIC0yODM3LDExICsyOTMzLDcgQEAKIAogICAvLy8gRmluZCB0aGUgZmFpbGVkIEJvb2xlYW4gY29uZGl0aW9uIHdpdGhpbiBhIGdpdmVuIEJvb2xlYW4KICAgLy8vIGNvbnN0YW50IGV4cHJlc3Npb24sIGFuZCBkZXNjcmliZSBpdCB3aXRoIGEgc3RyaW5nLgotICAvLy8KLSAgLy8vIFxwYXJhbSBBbGxvd1RvcExldmVsQ29uZCBXaGV0aGVyIHRvIGFsbG93IHRoZSByZXN1bHQgdG8gYmUgdGhlCi0gIC8vLyBjb21wbGV0ZSB0b3AtbGV2ZWwgY29uZGl0aW9uLgotICBzdGQ6OnBhaXI8RXhwciAqLCBzdGQ6OnN0cmluZz4KLSAgZmluZEZhaWxlZEJvb2xlYW5Db25kaXRpb24oRXhwciAqQ29uZCwgYm9vbCBBbGxvd1RvcExldmVsQ29uZCk7CisgIHN0ZDo6cGFpcjxFeHByICosIHN0ZDo6c3RyaW5nPiBmaW5kRmFpbGVkQm9vbGVhbkNvbmRpdGlvbihFeHByICpDb25kKTsKIAogICAvLy8gRW1pdCBkaWFnbm9zdGljcyBmb3IgdGhlIGRpYWdub3NlX2lmIGF0dHJpYnV0ZXMgb24gRnVuY3Rpb24sIGlnbm9yaW5nIGFueQogICAvLy8gbm9uLUFyZ0RlcGVuZGVudCBEaWFnbm9zZUlmQXR0cnMuCkBAIC0zMDYzLDYgKzMxNTUsOCBAQAogICAgIExvb2t1cE9iakNJbXBsaWNpdFNlbGZQYXJhbSwKICAgICAvLy8gTG9vayB1cCB0aGUgbmFtZSBvZiBhbiBPcGVuTVAgdXNlci1kZWZpbmVkIHJlZHVjdGlvbiBvcGVyYXRpb24uCiAgICAgTG9va3VwT01QUmVkdWN0aW9uTmFtZSwKKyAgICAvLy8gTG9vayB1cCB0aGUgbmFtZSBvZiBhbiBPcGVuTVAgdXNlci1kZWZpbmVkIG1hcHBlci4KKyAgICBMb29rdXBPTVBNYXBwZXJOYW1lLAogICAgIC8vLyBMb29rIHVwIGFueSBkZWNsYXJhdGlvbiB3aXRoIGFueSBuYW1lLgogICAgIExvb2t1cEFueU5hbWUKICAgfTsKQEAgLTM2NjIsMTYgKzM3NTYsMTcgQEAKICAgICByZXR1cm4gTWFrZUZ1bGxFeHByKEFyZywgQXJnID8gQXJnLT5nZXRFeHByTG9jKCkgOiBTb3VyY2VMb2NhdGlvbigpKTsKICAgfQogICBGdWxsRXhwckFyZyBNYWtlRnVsbEV4cHIoRXhwciAqQXJnLCBTb3VyY2VMb2NhdGlvbiBDQykgewotICAgIHJldHVybiBGdWxsRXhwckFyZyhBY3RPbkZpbmlzaEZ1bGxFeHByKEFyZywgQ0MpLmdldCgpKTsKKyAgICByZXR1cm4gRnVsbEV4cHJBcmcoCisgICAgICAgIEFjdE9uRmluaXNoRnVsbEV4cHIoQXJnLCBDQywgLypEaXNjYXJkZWRWYWx1ZSovIGZhbHNlKS5nZXQoKSk7CiAgIH0KICAgRnVsbEV4cHJBcmcgTWFrZUZ1bGxEaXNjYXJkZWRWYWx1ZUV4cHIoRXhwciAqQXJnKSB7CiAgICAgRXhwclJlc3VsdCBGRSA9Ci0gICAgICBBY3RPbkZpbmlzaEZ1bGxFeHByKEFyZywgQXJnID8gQXJnLT5nZXRFeHByTG9jKCkgOiBTb3VyY2VMb2NhdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAvKkRpc2NhcmRlZFZhbHVlKi8gdHJ1ZSk7CisgICAgICAgIEFjdE9uRmluaXNoRnVsbEV4cHIoQXJnLCBBcmcgPyBBcmctPmdldEV4cHJMb2MoKSA6IFNvdXJjZUxvY2F0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypEaXNjYXJkZWRWYWx1ZSovIHRydWUpOwogICAgIHJldHVybiBGdWxsRXhwckFyZyhGRS5nZXQoKSk7CiAgIH0KIAotICBTdG10UmVzdWx0IEFjdE9uRXhwclN0bXQoRXhwclJlc3VsdCBBcmcpOworICBTdG10UmVzdWx0IEFjdE9uRXhwclN0bXQoRXhwclJlc3VsdCBBcmcsIGJvb2wgRGlzY2FyZGVkVmFsdWUgPSB0cnVlKTsKICAgU3RtdFJlc3VsdCBBY3RPbkV4cHJTdG10RXJyb3IoKTsKIAogICBTdG10UmVzdWx0IEFjdE9uTnVsbFN0bXQoU291cmNlTG9jYXRpb24gU2VtaUxvYywKQEAgLTQyMTQsNyArNDMwOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVBcmd1bWVudExpc3RJbmZvICpFeHBsaWNpdFRlbXBsYXRlQXJncyA9IG51bGxwdHIpOwogCiAgIEV4cHJSZXN1bHQgQnVpbGRQcmVkZWZpbmVkRXhwcihTb3VyY2VMb2NhdGlvbiBMb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVkZWZpbmVkRXhwcjo6SWRlbnRUeXBlIElUKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWRlZmluZWRFeHByOjpJZGVudEtpbmQgSUspOwogICBFeHByUmVzdWx0IEFjdE9uUHJlZGVmaW5lZEV4cHIoU291cmNlTG9jYXRpb24gTG9jLCB0b2s6OlRva2VuS2luZCBLaW5kKTsKICAgRXhwclJlc3VsdCBBY3RPbkludGVnZXJDb25zdGFudChTb3VyY2VMb2NhdGlvbiBMb2MsIHVpbnQ2NF90IFZhbCk7CiAKQEAgLTQzNjcsMTIgKzQ0NjIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11bHRpRXhwckFyZyBBcmdFeHBycywgU291cmNlTG9jYXRpb24gUlBhcmVuTG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwciAqRXhlY0NvbmZpZyA9IG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIElzRXhlY0NvbmZpZyA9IGZhbHNlKTsKLSAgRXhwclJlc3VsdCBCdWlsZFJlc29sdmVkQ2FsbEV4cHIoRXhwciAqRm4sIE5hbWVkRGVjbCAqTkRlY2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIExQYXJlbkxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8RXhwciAqPiBBcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFJQYXJlbkxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwciAqQ29uZmlnID0gbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBJc0V4ZWNDb25maWcgPSBmYWxzZSk7CisgIEV4cHJSZXN1bHQKKyAgQnVpbGRSZXNvbHZlZENhbGxFeHByKEV4cHIgKkZuLCBOYW1lZERlY2wgKk5EZWNsLCBTb3VyY2VMb2NhdGlvbiBMUGFyZW5Mb2MsCisgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxFeHByICo+IEFyZywgU291cmNlTG9jYXRpb24gUlBhcmVuTG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgRXhwciAqQ29uZmlnID0gbnVsbHB0ciwgYm9vbCBJc0V4ZWNDb25maWcgPSBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEFETENhbGxLaW5kIFVzZXNBREwgPSBBRExDYWxsS2luZDo6Tm90QURMKTsKIAogICBFeHByUmVzdWx0IEFjdE9uQ1VEQUV4ZWNDb25maWdFeHByKFNjb3BlICpTLCBTb3VyY2VMb2NhdGlvbiBMTExMb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVsdGlFeHByQXJnIEV4ZWNDb25maWcsCkBAIC00Nzk1LDcgKzQ4ODksNyBAQAogICBJbXBsaWNpdEV4Y2VwdGlvblNwZWNpZmljYXRpb24KICAgQ29tcHV0ZURlZmF1bHRlZENvcHlDdG9yRXhjZXB0aW9uU3BlYyhDWFhNZXRob2REZWNsICpNRCk7CiAKLSAgLy8vIERldGVybWluZSB3aGF0IHNvcnQgb2YgZXhjZXB0aW9uIHNwZWNpZmljYXRpb24gYSBkZWZhdXRsZWQKKyAgLy8vIERldGVybWluZSB3aGF0IHNvcnQgb2YgZXhjZXB0aW9uIHNwZWNpZmljYXRpb24gYSBkZWZhdWx0ZWQKICAgLy8vIGNvcHkgYXNzaWdubWVudCBvcGVyYXRvciBvZiBhIGNsYXNzIHdpbGwgaGF2ZSwgYW5kIHdoZXRoZXIgdGhlCiAgIC8vLyBwYXJhbWV0ZXIgd2lsbCBiZSBjb25zdC4KICAgSW1wbGljaXRFeGNlcHRpb25TcGVjaWZpY2F0aW9uCkBAIC01MDk1LDcgKzUxODksNyBAQAogICAgIC8vLyB1c2luZyB0aGUgZ2l2ZW4gZGVjbGFyYXRpb24gKHdoaWNoIGlzIGVpdGhlciBhIGNsYXNzIHRlbXBsYXRlIG9yIGEKICAgICAvLy8gY2xhc3MpIGFsb25nIHdpdGggdGhlIGdpdmVuIHF1YWxpZmllcnMuCiAgICAgLy8vIGFsb25nIHdpdGggdGhlIHF1YWxpZmllcnMgcGxhY2VkIG9uICcqdGhpcycuCi0gICAgQ1hYVGhpc1Njb3BlUkFJSShTZW1hICZTLCBEZWNsICpDb250ZXh0RGVjbCwgdW5zaWduZWQgQ1hYVGhpc1R5cGVRdWFscywKKyAgICBDWFhUaGlzU2NvcGVSQUlJKFNlbWEgJlMsIERlY2wgKkNvbnRleHREZWNsLCBRdWFsaWZpZXJzIENYWFRoaXNUeXBlUXVhbHMsCiAgICAgICAgICAgICAgICAgICAgICBib29sIEVuYWJsZWQgPSB0cnVlKTsKIAogICAgIH5DWFhUaGlzU2NvcGVSQUlJKCk7CkBAIC01MTgwLDYgKzUyNzQsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VSYW5nZSBEaXJlY3RJbml0UmFuZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwciAqSW5pdGlhbGl6ZXIpOwogCisgIC8vLyBEZXRlcm1pbmUgd2hldGhlciBccCBGRCBpcyBhbiBhbGlnbmVkIGFsbG9jYXRpb24gb3IgZGVhbGxvY2F0aW9uCisgIC8vLyBmdW5jdGlvbiB0aGF0IGlzIHVuYXZhaWxhYmxlLgorICBib29sIGlzVW5hdmFpbGFibGVBbGlnbmVkQWxsb2NhdGlvbkZ1bmN0aW9uKGNvbnN0IEZ1bmN0aW9uRGVjbCAmRkQpIGNvbnN0OworCisgIC8vLyBQcm9kdWNlIGRpYWdub3N0aWNzIGlmIFxwIEZEIGlzIGFuIGFsaWduZWQgYWxsb2NhdGlvbiBvciBkZWFsbG9jYXRpb24KKyAgLy8vIGZ1bmN0aW9uIHRoYXQgaXMgdW5hdmFpbGFibGUuCisgIHZvaWQgZGlhZ25vc2VVbmF2YWlsYWJsZUFsaWduZWRBbGxvY2F0aW9uKGNvbnN0IEZ1bmN0aW9uRGVjbCAmRkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIExvYyk7CisKICAgYm9vbCBDaGVja0FsbG9jYXRlZFR5cGUoUXVhbFR5cGUgQWxsb2NUeXBlLCBTb3VyY2VMb2NhdGlvbiBMb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZVJhbmdlIFIpOwogCkBAIC01MzA5LDE0ICs1NDEyLDEyIEBACiAgIENyZWF0ZU1hdGVyaWFsaXplVGVtcG9yYXJ5RXhwcihRdWFsVHlwZSBULCBFeHByICpUZW1wb3JhcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIEJvdW5kVG9MdmFsdWVSZWZlcmVuY2UpOwogCi0gIEV4cHJSZXN1bHQgQWN0T25GaW5pc2hGdWxsRXhwcihFeHByICpFeHByKSB7Ci0gICAgcmV0dXJuIEFjdE9uRmluaXNoRnVsbEV4cHIoRXhwciwgRXhwciA/IEV4cHItPmdldEV4cHJMb2MoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTb3VyY2VMb2NhdGlvbigpKTsKKyAgRXhwclJlc3VsdCBBY3RPbkZpbmlzaEZ1bGxFeHByKEV4cHIgKkV4cHIsIGJvb2wgRGlzY2FyZGVkVmFsdWUpIHsKKyAgICByZXR1cm4gQWN0T25GaW5pc2hGdWxsRXhwcigKKyAgICAgICAgRXhwciwgRXhwciA/IEV4cHItPmdldEV4cHJMb2MoKSA6IFNvdXJjZUxvY2F0aW9uKCksIERpc2NhcmRlZFZhbHVlKTsKICAgfQogICBFeHByUmVzdWx0IEFjdE9uRmluaXNoRnVsbEV4cHIoRXhwciAqRXhwciwgU291cmNlTG9jYXRpb24gQ0MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIERpc2NhcmRlZFZhbHVlID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIElzQ29uc3RleHByID0gZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIElzTGFtYmRhSW5pdENhcHR1cmVJbml0aWFsaXplciA9IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgRGlzY2FyZGVkVmFsdWUsIGJvb2wgSXNDb25zdGV4cHIgPSBmYWxzZSk7CiAgIFN0bXRSZXN1bHQgQWN0T25GaW5pc2hGdWxsU3RtdChTdG10ICpTdG10KTsKIAogICAvLyBNYXJrcyBTUyBpbnZhbGlkIGlmIGl0IHJlcHJlc2VudHMgYW4gaW5jb21wbGV0ZSB0eXBlLgpAQCAtNTU4MSw3ICs1NjgyLDkgQEAKICAgdm9pZCBmaW5pc2hMYW1iZGFFeHBsaWNpdENhcHR1cmVzKHNlbWE6OkxhbWJkYVNjb3BlSW5mbyAqTFNJKTsKIAogICAvLy8gSW50cm9kdWNlIHRoZSBsYW1iZGEgcGFyYW1ldGVycyBpbnRvIHNjb3BlLgotICB2b2lkIGFkZExhbWJkYVBhcmFtZXRlcnMoQ1hYTWV0aG9kRGVjbCAqQ2FsbE9wZXJhdG9yLCBTY29wZSAqQ3VyU2NvcGUpOworICB2b2lkIGFkZExhbWJkYVBhcmFtZXRlcnMoCisgICAgICBBcnJheVJlZjxMYW1iZGFJbnRyb2R1Y2VyOjpMYW1iZGFDYXB0dXJlPiBDYXB0dXJlcywKKyAgICAgIENYWE1ldGhvZERlY2wgKkNhbGxPcGVyYXRvciwgU2NvcGUgKkN1clNjb3BlKTsKIAogICAvLy8gRGVkdWNlIGEgYmxvY2sgb3IgbGFtYmRhJ3MgcmV0dXJuIHR5cGUgYmFzZWQgb24gdGhlIHJldHVybgogICAvLy8gc3RhdGVtZW50cyBwcmVzZW50IGluIHRoZSBib2R5LgpAQCAtNjA1Niw3ICs2MTU5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgRm9yY2VDaGVjayA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBGb3JjZVVucHJpdmlsZWdlZCA9IGZhbHNlKTsKICAgdm9pZCBDaGVja0xvb2t1cEFjY2Vzcyhjb25zdCBMb29rdXBSZXN1bHQgJlIpOwotICBib29sIElzU2ltcGx5QWNjZXNzaWJsZShOYW1lZERlY2wgKmRlY2wsIERlY2xDb250ZXh0ICpDdHgpOworICBib29sIElzU2ltcGx5QWNjZXNzaWJsZShOYW1lZERlY2wgKkRlY2wsIENYWFJlY29yZERlY2wgKk5hbWluZ0NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBCYXNlVHlwZSk7CiAgIGJvb2wgaXNTcGVjaWFsTWVtYmVyQWNjZXNzaWJsZUZvckRlbGV0aW9uKENYWE1ldGhvZERlY2wgKmRlY2wsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjY2Vzc1NwZWNpZmllciBhY2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIG9iamVjdFR5cGUpOwpAQCAtNjMyMiw5ICs2NDI2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGVtcGxhdGVBcmd1bWVudExpc3RJbmZvICZFeHBsaWNpdFRlbXBsYXRlQXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb29rdXBSZXN1bHQgJlByZXZpb3VzKTsKIAotICBib29sIENoZWNrRnVuY3Rpb25UZW1wbGF0ZVNwZWNpYWxpemF0aW9uKEZ1bmN0aW9uRGVjbCAqRkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVBcmd1bWVudExpc3RJbmZvICpFeHBsaWNpdFRlbXBsYXRlQXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb29rdXBSZXN1bHQgJlByZXZpb3VzKTsKKyAgYm9vbCBDaGVja0Z1bmN0aW9uVGVtcGxhdGVTcGVjaWFsaXphdGlvbigKKyAgICAgIEZ1bmN0aW9uRGVjbCAqRkQsIFRlbXBsYXRlQXJndW1lbnRMaXN0SW5mbyAqRXhwbGljaXRUZW1wbGF0ZUFyZ3MsCisgICAgICBMb29rdXBSZXN1bHQgJlByZXZpb3VzLCBib29sIFF1YWxpZmllZEZyaWVuZCA9IGZhbHNlKTsKICAgYm9vbCBDaGVja01lbWJlclNwZWNpYWxpemF0aW9uKE5hbWVkRGVjbCAqTWVtYmVyLCBMb29rdXBSZXN1bHQgJlByZXZpb3VzKTsKICAgdm9pZCBDb21wbGV0ZU1lbWJlclNwZWNpYWxpemF0aW9uKE5hbWVkRGVjbCAqTWVtYmVyLCBMb29rdXBSZXN1bHQgJlByZXZpb3VzKTsKIApAQCAtNzA2MSw3ICs3MTY1LDcgQEAKICAgUXVhbFR5cGUgZGVkdWNlVmFyVHlwZUZyb21Jbml0aWFsaXplcihWYXJEZWNsICpWRGVjbCwgRGVjbGFyYXRpb25OYW1lIE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgVHlwZSwgVHlwZVNvdXJjZUluZm8gKlRTSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VSYW5nZSBSYW5nZSwgYm9vbCBEaXJlY3RJbml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHIgKkluaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cHIgKiZJbml0KTsKIAogICBUeXBlTG9jIGdldFJldHVyblR5cGVMb2MoRnVuY3Rpb25EZWNsICpGRCkgY29uc3Q7CiAKQEAgLTc3MzAsNyArNzgzNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2xhcmF0aW9uTmFtZSBFbnRpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1hYUmVjb3JkRGVjbCAqVGhpc0NvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgVGhpc1R5cGVRdWFscyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVhbGlmaWVycyBUaGlzVHlwZVF1YWxzKTsKICAgdm9pZCBTdWJzdEV4Y2VwdGlvblNwZWMoRnVuY3Rpb25EZWNsICpOZXcsIGNvbnN0IEZ1bmN0aW9uUHJvdG9UeXBlICpQcm90bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTXVsdGlMZXZlbFRlbXBsYXRlQXJndW1lbnRMaXN0ICZBcmdzKTsKICAgYm9vbCBTdWJzdEV4Y2VwdGlvblNwZWMoU291cmNlTG9jYXRpb24gTG9jLApAQCAtODQ2OSwxMiArODU3MywxNSBAQAogICAvLy8gdGhlIGFwcHJvcHJpYXRlIGF0dHJpYnV0ZS4KICAgdm9pZCBBZGRDRkF1ZGl0ZWRBdHRyaWJ1dGUoRGVjbCAqRCk7CiAKLSAgLy8vIENhbGxlZCBvbiB3ZWxsLWZvcm1lZCAnXCNwcmFnbWEgY2xhbmcgYXR0cmlidXRlIHB1c2gnLgotICB2b2lkIEFjdE9uUHJhZ21hQXR0cmlidXRlUHVzaChQYXJzZWRBdHRyICZBdHRyaWJ1dGUsIFNvdXJjZUxvY2F0aW9uIFByYWdtYUxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cjo6UGFyc2VkU3ViamVjdE1hdGNoUnVsZVNldCBSdWxlcyk7CisgIHZvaWQgQWN0T25QcmFnbWFBdHRyaWJ1dGVBdHRyaWJ1dGUoUGFyc2VkQXR0ciAmQXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIFByYWdtYUxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyOjpQYXJzZWRTdWJqZWN0TWF0Y2hSdWxlU2V0IFJ1bGVzKTsKKyAgdm9pZCBBY3RPblByYWdtYUF0dHJpYnV0ZUVtcHR5UHVzaChTb3VyY2VMb2NhdGlvbiBQcmFnbWFMb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllckluZm8gKk5hbWVzcGFjZSk7CiAKICAgLy8vIENhbGxlZCBvbiB3ZWxsLWZvcm1lZCAnXCNwcmFnbWEgY2xhbmcgYXR0cmlidXRlIHBvcCcuCi0gIHZvaWQgQWN0T25QcmFnbWFBdHRyaWJ1dGVQb3AoU291cmNlTG9jYXRpb24gUHJhZ21hTG9jKTsKKyAgdm9pZCBBY3RPblByYWdtYUF0dHJpYnV0ZVBvcChTb3VyY2VMb2NhdGlvbiBQcmFnbWFMb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllckluZm8gKk5hbWVzcGFjZSk7CiAKICAgLy8vIEFkZHMgdGhlIGF0dHJpYnV0ZXMgdGhhdCBoYXZlIGJlZW4gc3BlY2lmaWVkIHVzaW5nIHRoZQogICAvLy8gJ1wjcHJhZ21hIGNsYW5nIGF0dHJpYnV0ZSBwdXNoJyBkaXJlY3RpdmVzIHRvIHRoZSBnaXZlbiBkZWNsYXJhdGlvbi4KQEAgLTg1MzQsOSArODY0MSw5IEBACiAgIHZvaWQgQWRkUGFyYW1ldGVyQUJJQXR0cihTb3VyY2VSYW5nZSBBdHRyUmFuZ2UsIERlY2wgKkQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbWV0ZXJBQkkgQUJJLCB1bnNpZ25lZCBTcGVsbGluZ0xpc3RJbmRleCk7CiAKLSAgdm9pZCBBZGROU0NvbnN1bWVkQXR0cihTb3VyY2VSYW5nZSBBdHRyUmFuZ2UsIERlY2wgKkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgU3BlbGxpbmdMaXN0SW5kZXgsIGJvb2wgaXNOU0NvbnN1bWVkLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNUZW1wbGF0ZUluc3RhbnRpYXRpb24pOworICBlbnVtIGNsYXNzIFJldGFpbk93bmVyc2hpcEtpbmQge05TLCBDRiwgT1N9OworICB2b2lkIEFkZFhDb25zdW1lZEF0dHIoRGVjbCAqRCwgU291cmNlUmFuZ2UgU1IsIHVuc2lnbmVkIFNwZWxsaW5nSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICBSZXRhaW5Pd25lcnNoaXBLaW5kIEssIGJvb2wgSXNUZW1wbGF0ZUluc3RhbnRpYXRpb24pOwogCiAgIGJvb2wgY2hlY2tOU1JldHVybnNSZXRhaW5lZFJldHVyblR5cGUoU291cmNlTG9jYXRpb24gbG9jLCBRdWFsVHlwZSB0eXBlKTsKIApAQCAtODU3Niw2ICs4NjgzLDIxIEBACiAgIGxsdm06OlN0cmluZ1JlZiBnZXRDdXJyZW50T3BlbkNMRXh0ZW5zaW9uKCkgY29uc3QgewogICAgIHJldHVybiBDdXJyT3BlbkNMRXh0ZW5zaW9uOwogICB9CisKKyAgLy8vIENoZWNrIGlmIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24gXHAgRkQgYXNzb2NpYXRlcyB3aXRoIGFueQorICAvLy8gZXh0ZW5zaW9ucyBwcmVzZW50IGluIE9wZW5DTERlY2xFeHRNYXAgYW5kIGlmIHNvIHJldHVybiB0aGUKKyAgLy8vIGV4dGVuc2lvbihzKSBuYW1lKHMpLgorICBzdGQ6OnN0cmluZyBnZXRPcGVuQ0xFeHRlbnNpb25zRnJvbURlY2xFeHRNYXAoRnVuY3Rpb25EZWNsICpGRCk7CisKKyAgLy8vIENoZWNrIGlmIGEgZnVuY3Rpb24gdHlwZSBccCBGVCBhc3NvY2lhdGVzIHdpdGggYW55CisgIC8vLyBleHRlbnNpb25zIHByZXNlbnQgaW4gT3BlbkNMVHlwZUV4dE1hcCBhbmQgaWYgc28gcmV0dXJuIHRoZQorICAvLy8gZXh0ZW5zaW9uKHMpIG5hbWUocykuCisgIHN0ZDo6c3RyaW5nIGdldE9wZW5DTEV4dGVuc2lvbnNGcm9tVHlwZUV4dE1hcChGdW5jdGlvblR5cGUgKkZUKTsKKworICAvLy8gRmluZCBhbiBleHRlbnNpb24gaW4gYW4gYXBwcm9wcmlhdGUgZXh0ZW5zaW9uIG1hcCBhbmQgcmV0dXJuIGl0cyBuYW1lCisgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE1hcFQ+CisgIHN0ZDo6c3RyaW5nIGdldE9wZW5DTEV4dGVuc2lvbnNGcm9tRXh0TWFwKFQqIEZULCBNYXBUICZNYXApOworCiAgIHZvaWQgc2V0Q3VycmVudE9wZW5DTEV4dGVuc2lvbihsbHZtOjpTdHJpbmdSZWYgRXh0KSB7CiAgICAgQ3Vyck9wZW5DTEV4dGVuc2lvbiA9IEV4dDsKICAgfQpAQCAtODY0MSw2ICs4NzYzLDkgQEAKICAgLy8vIFBvcCBPcGVuTVAgZnVuY3Rpb24gcmVnaW9uIGZvciBub24tY2FwdHVyaW5nIGZ1bmN0aW9uLgogICB2b2lkIHBvcE9wZW5NUEZ1bmN0aW9uUmVnaW9uKGNvbnN0IHNlbWE6OkZ1bmN0aW9uU2NvcGVJbmZvICpPbGRGU0kpOwogCisgIC8vLyBDaGVjayB3aGV0aGVyIHdlJ3JlIGFsbG93ZWQgdG8gY2FsbCBDYWxsZWUgZnJvbSB0aGUgY3VycmVudCBmdW5jdGlvbi4KKyAgdm9pZCBjaGVja09wZW5NUERldmljZUZ1bmN0aW9uKFNvdXJjZUxvY2F0aW9uIExvYywgRnVuY3Rpb25EZWNsICpDYWxsZWUpOworCiAgIC8vLyBDaGVja3MgaWYgYSB0eXBlIG9yIGEgZGVjbGFyYXRpb24gaXMgZGlzYWJsZWQgZHVlIHRvIHRoZSBvd25pbmcgZXh0ZW5zaW9uCiAgIC8vLyBiZWluZyBkaXNhYmxlZCwgYW5kIGVtaXRzIGRpYWdub3N0aWMgbWVzc2FnZXMgaWYgaXQgaXMgZGlzYWJsZWQuCiAgIC8vLyBccGFyYW0gRCB0eXBlIG9yIGRlY2xhcmF0aW9uIHRvIGJlIGNoZWNrZWQuCkBAIC04NjcwLDYgKzg3OTUsMTAgQEAKICAgRXhwclJlc3VsdCBnZXRPcGVuTVBDYXB0dXJlZEV4cHIoVmFyRGVjbCAqQ2FwdHVyZSwgRXhwclZhbHVlS2luZCBWSywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwck9iamVjdEtpbmQgT0ssIFNvdXJjZUxvY2F0aW9uIExvYyk7CiAKKyAgLy8vIElmIHRoZSBjdXJyZW50IHJlZ2lvbiBpcyBhIGxvb3AtYmFzZWQgcmVnaW9uLCBtYXJrIHRoZSBzdGFydCBvZiB0aGUgbG9vcAorICAvLy8gY29uc3RydWN0LgorICB2b2lkIHN0YXJ0T3Blbk1QTG9vcCgpOworCiAgIC8vLyBDaGVjayBpZiB0aGUgc3BlY2lmaWVkIHZhcmlhYmxlIGlzIHVzZWQgaW4gJ3ByaXZhdGUnIGNsYXVzZS4KICAgLy8vIFxwYXJhbSBMZXZlbCBSZWxhdGl2ZSBsZXZlbCBvZiBuZXN0ZWQgT3Blbk1QIGNvbnN0cnVjdCBmb3IgdGhhdCB0aGUgY2hlY2sKICAgLy8vIGlzIHBlcmZvcm1lZC4KQEAgLTg3NDYsNiArODg3NSwyNyBAQAogICBEZWNsR3JvdXBQdHJUeSBBY3RPbk9wZW5NUERlY2xhcmVSZWR1Y3Rpb25EaXJlY3RpdmVFbmQoCiAgICAgICBTY29wZSAqUywgRGVjbEdyb3VwUHRyVHkgRGVjbFJlZHVjdGlvbnMsIGJvb2wgSXNWYWxpZCk7CiAKKyAgLy8vIENoZWNrIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGluICdvbXAgZGVjbGFyZSBtYXBwZXInIGNvbnN0cnVjdC4KKyAgVHlwZVJlc3VsdCBBY3RPbk9wZW5NUERlY2xhcmVNYXBwZXJWYXJEZWNsKFNjb3BlICpTLCBEZWNsYXJhdG9yICZEKTsKKyAgLy8vIENoZWNrIGlmIHRoZSBzcGVjaWZpZWQgdHlwZSBpcyBhbGxvd2VkIHRvIGJlIHVzZWQgaW4gJ29tcCBkZWNsYXJlCisgIC8vLyBtYXBwZXInIGNvbnN0cnVjdC4KKyAgUXVhbFR5cGUgQWN0T25PcGVuTVBEZWNsYXJlTWFwcGVyVHlwZShTb3VyY2VMb2NhdGlvbiBUeUxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlUmVzdWx0IFBhcnNlZFR5cGUpOworICAvLy8gQ2FsbGVkIG9uIHN0YXJ0IG9mICcjcHJhZ21hIG9tcCBkZWNsYXJlIG1hcHBlcicuCisgIE9NUERlY2xhcmVNYXBwZXJEZWNsICpBY3RPbk9wZW5NUERlY2xhcmVNYXBwZXJEaXJlY3RpdmVTdGFydCgKKyAgICAgIFNjb3BlICpTLCBEZWNsQ29udGV4dCAqREMsIERlY2xhcmF0aW9uTmFtZSBOYW1lLCBRdWFsVHlwZSBNYXBwZXJUeXBlLAorICAgICAgU291cmNlTG9jYXRpb24gU3RhcnRMb2MsIERlY2xhcmF0aW9uTmFtZSBWTiwgQWNjZXNzU3BlY2lmaWVyIEFTLAorICAgICAgRGVjbCAqUHJldkRlY2xJblNjb3BlID0gbnVsbHB0cik7CisgIC8vLyBCdWlsZCB0aGUgbWFwcGVyIHZhcmlhYmxlIG9mICcjcHJhZ21hIG9tcCBkZWNsYXJlIG1hcHBlcicuCisgIHZvaWQgQWN0T25PcGVuTVBEZWNsYXJlTWFwcGVyRGlyZWN0aXZlVmFyRGVjbChPTVBEZWNsYXJlTWFwcGVyRGVjbCAqRE1ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NvcGUgKlMsIFF1YWxUeXBlIE1hcHBlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBTdGFydExvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2xhcmF0aW9uTmFtZSBWTik7CisgIC8vLyBDYWxsZWQgYXQgdGhlIGVuZCBvZiAnI3ByYWdtYSBvbXAgZGVjbGFyZSBtYXBwZXInLgorICBEZWNsR3JvdXBQdHJUeQorICBBY3RPbk9wZW5NUERlY2xhcmVNYXBwZXJEaXJlY3RpdmVFbmQoT01QRGVjbGFyZU1hcHBlckRlY2wgKkQsIFNjb3BlICpTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T01QQ2xhdXNlICo+IENsYXVzZUxpc3QpOworCiAgIC8vLyBDYWxsZWQgb24gdGhlIHN0YXJ0IG9mIHRhcmdldCByZWdpb24gaS5lLiAnI3ByYWdtYSBvbXAgZGVjbGFyZSB0YXJnZXQnLgogICBib29sIEFjdE9uU3RhcnRPcGVuTVBEZWNsYXJlVGFyZ2V0RGlyZWN0aXZlKFNvdXJjZUxvY2F0aW9uIExvYyk7CiAgIC8vLyBDYWxsZWQgYXQgdGhlIGVuZCBvZiB0YXJnZXQgcmVnaW9uIGkuZS4gJyNwcmFnbWUgb21wIGVuZCBkZWNsYXJlIHRhcmdldCcuCkBAIC05MTc2LDEzICs5MzI2LDI0IEBACiAgIE9NUENsYXVzZSAqQWN0T25PcGVuTVBSZXZlcnNlT2ZmbG9hZENsYXVzZShTb3VyY2VMb2NhdGlvbiBTdGFydExvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIEVuZExvYyk7CiAKKyAgLy8vIENhbGxlZCBvbiB3ZWxsLWZvcm1lZCAnZHluYW1pY19hbGxvY2F0b3JzJyBjbGF1c2UuCisgIE9NUENsYXVzZSAqQWN0T25PcGVuTVBEeW5hbWljQWxsb2NhdG9yc0NsYXVzZShTb3VyY2VMb2NhdGlvbiBTdGFydExvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIEVuZExvYyk7CisKKyAgLy8vIENhbGxlZCBvbiB3ZWxsLWZvcm1lZCAnYXRvbWljX2RlZmF1bHRfbWVtX29yZGVyJyBjbGF1c2UuCisgIE9NUENsYXVzZSAqQWN0T25PcGVuTVBBdG9taWNEZWZhdWx0TWVtT3JkZXJDbGF1c2UoCisgICAgICBPcGVuTVBBdG9taWNEZWZhdWx0TWVtT3JkZXJDbGF1c2VLaW5kIEtpbmQsIFNvdXJjZUxvY2F0aW9uIEtpbmRMb2MsCisgICAgICBTb3VyY2VMb2NhdGlvbiBTdGFydExvYywgU291cmNlTG9jYXRpb24gTFBhcmVuTG9jLCBTb3VyY2VMb2NhdGlvbiBFbmRMb2MpOworCiAgIE9NUENsYXVzZSAqQWN0T25PcGVuTVBWYXJMaXN0Q2xhdXNlKAogICAgICAgT3Blbk1QQ2xhdXNlS2luZCBLaW5kLCBBcnJheVJlZjxFeHByICo+IFZhcnMsIEV4cHIgKlRhaWxFeHByLAogICAgICAgU291cmNlTG9jYXRpb24gU3RhcnRMb2MsIFNvdXJjZUxvY2F0aW9uIExQYXJlbkxvYywKICAgICAgIFNvdXJjZUxvY2F0aW9uIENvbG9uTG9jLCBTb3VyY2VMb2NhdGlvbiBFbmRMb2MsCiAgICAgICBDWFhTY29wZVNwZWMgJlJlZHVjdGlvbklkU2NvcGVTcGVjLAogICAgICAgY29uc3QgRGVjbGFyYXRpb25OYW1lSW5mbyAmUmVkdWN0aW9uSWQsIE9wZW5NUERlcGVuZENsYXVzZUtpbmQgRGVwS2luZCwKLSAgICAgIE9wZW5NUExpbmVhckNsYXVzZUtpbmQgTGluS2luZCwgT3Blbk1QTWFwQ2xhdXNlS2luZCBNYXBUeXBlTW9kaWZpZXIsCisgICAgICBPcGVuTVBMaW5lYXJDbGF1c2VLaW5kIExpbktpbmQsCisgICAgICBBcnJheVJlZjxPcGVuTVBNYXBNb2RpZmllcktpbmQ+IE1hcFR5cGVNb2RpZmllcnMsCisgICAgICBBcnJheVJlZjxTb3VyY2VMb2NhdGlvbj4gTWFwVHlwZU1vZGlmaWVyc0xvYywKICAgICAgIE9wZW5NUE1hcENsYXVzZUtpbmQgTWFwVHlwZSwgYm9vbCBJc01hcFR5cGVJbXBsaWNpdCwKICAgICAgIFNvdXJjZUxvY2F0aW9uIERlcExpbk1hcExvYyk7CiAgIC8vLyBDYWxsZWQgb24gd2VsbC1mb3JtZWQgJ3ByaXZhdGUnIGNsYXVzZS4KQEAgLTkyNjYsNyArOTQyNyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gRW5kTG9jKTsKICAgLy8vIENhbGxlZCBvbiB3ZWxsLWZvcm1lZCAnbWFwJyBjbGF1c2UuCiAgIE9NUENsYXVzZSAqCi0gIEFjdE9uT3Blbk1QTWFwQ2xhdXNlKE9wZW5NUE1hcENsYXVzZUtpbmQgTWFwVHlwZU1vZGlmaWVyLAorICBBY3RPbk9wZW5NUE1hcENsYXVzZShBcnJheVJlZjxPcGVuTVBNYXBNb2RpZmllcktpbmQ+IE1hcFR5cGVNb2RpZmllcnMsCisgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFNvdXJjZUxvY2F0aW9uPiBNYXBUeXBlTW9kaWZpZXJzTG9jLAogICAgICAgICAgICAgICAgICAgICAgICBPcGVuTVBNYXBDbGF1c2VLaW5kIE1hcFR5cGUsIGJvb2wgSXNNYXBUeXBlSW1wbGljaXQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIE1hcExvYywgU291cmNlTG9jYXRpb24gQ29sb25Mb2MsCiAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEV4cHIgKj4gVmFyTGlzdCwgU291cmNlTG9jYXRpb24gU3RhcnRMb2MsCkBAIC05NTkzLDYgKzk3NTUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzc2lnbm1lbnRBY3Rpb24gQWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlZENvbnZlcnNpb25LaW5kIENDSyk7CiAKKyAgRXhwclJlc3VsdCBQZXJmb3JtUXVhbGlmaWNhdGlvbkNvbnZlcnNpb24oCisgICAgICBFeHByICpFLCBRdWFsVHlwZSBUeSwgRXhwclZhbHVlS2luZCBWSyA9IFZLX1JWYWx1ZSwKKyAgICAgIENoZWNrZWRDb252ZXJzaW9uS2luZCBDQ0sgPSBDQ0tfSW1wbGljaXRDb252ZXJzaW9uKTsKKwogICAvLy8gdGhlIGZvbGxvd2luZyAiQ2hlY2siIG1ldGhvZHMgd2lsbCByZXR1cm4gYSB2YWxpZC9jb252ZXJ0ZWQgUXVhbFR5cGUKICAgLy8vIG9yIGEgbnVsbCBRdWFsVHlwZSAoaW5kaWNhdGluZyBhbiBlcnJvciBkaWFnbm9zdGljIHdhcyBpc3N1ZWQpLgogCkBAIC05Nzg0LDIxICs5OTUwLDIwIEBACiAgIC8vLyBccGFyYW0gTWV0aG9kIC0gTWF5IGJlIG51bGwuCiAgIC8vLyBccGFyYW0gW291dF0gUmV0dXJuVHlwZSAtIFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgc2VuZC4KICAgLy8vIFxyZXR1cm4gdHJ1ZSBpZmYgdGhlcmUgd2VyZSBhbnkgaW5jb21wYXRpYmxlIHR5cGVzLgotICBib29sIENoZWNrTWVzc2FnZUFyZ3VtZW50VHlwZXMoUXVhbFR5cGUgUmVjZWl2ZXJUeXBlLAorICBib29sIENoZWNrTWVzc2FnZUFyZ3VtZW50VHlwZXMoY29uc3QgRXhwciAqUmVjZWl2ZXIsIFF1YWxUeXBlIFJlY2VpdmVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11bHRpRXhwckFyZyBBcmdzLCBTZWxlY3RvciBTZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxTb3VyY2VMb2NhdGlvbj4gU2VsZWN0b3JMb2NzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqQ01ldGhvZERlY2wgKk1ldGhvZCwgYm9vbCBpc0NsYXNzTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTdXBlck1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBsYnJhYywgU291cmNlTG9jYXRpb24gcmJyYWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VSYW5nZSBSZWNSYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTdXBlck1lc3NhZ2UsIFNvdXJjZUxvY2F0aW9uIGxicmFjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gcmJyYWMsIFNvdXJjZVJhbmdlIFJlY1JhbmdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgJlJldHVyblR5cGUsIEV4cHJWYWx1ZUtpbmQgJlZLKTsKIAogICAvLy8gRGV0ZXJtaW5lIHRoZSByZXN1bHQgb2YgYSBtZXNzYWdlIHNlbmQgZXhwcmVzc2lvbiBiYXNlZCBvbgogICAvLy8gdGhlIHR5cGUgb2YgdGhlIHJlY2VpdmVyLCB0aGUgbWV0aG9kIGV4cGVjdGVkIHRvIHJlY2VpdmUgdGhlIG1lc3NhZ2UsCiAgIC8vLyBhbmQgdGhlIGZvcm0gb2YgdGhlIG1lc3NhZ2Ugc2VuZC4KLSAgUXVhbFR5cGUgZ2V0TWVzc2FnZVNlbmRSZXN1bHRUeXBlKFF1YWxUeXBlIFJlY2VpdmVyVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iakNNZXRob2REZWNsICpNZXRob2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ2xhc3NNZXNzYWdlLCBib29sIGlzU3VwZXJNZXNzYWdlKTsKKyAgUXVhbFR5cGUgZ2V0TWVzc2FnZVNlbmRSZXN1bHRUeXBlKGNvbnN0IEV4cHIgKlJlY2VpdmVyLCBRdWFsVHlwZSBSZWNlaXZlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmpDTWV0aG9kRGVjbCAqTWV0aG9kLCBib29sIGlzQ2xhc3NNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1N1cGVyTWVzc2FnZSk7CiAKICAgLy8vIElmIHRoZSBnaXZlbiBleHByZXNzaW9uIGludm9sdmVzIGEgbWVzc2FnZSBzZW5kIHRvIGEgbWV0aG9kCiAgIC8vLyB3aXRoIGEgcmVsYXRlZCByZXN1bHQgdHlwZSwgZW1pdCBhIG5vdGUgZGVzY3JpYmluZyB3aGF0IGhhcHBlbmVkLgpAQCAtOTk0OSw3ICsxMDExNCw3IEBACiAgIC8vLyBjb21waWxhdGlvbiwgdGhpcyBpcyBjdXJyZW50bHkgb25seSBlbmFibGVkIGZvciBDVURBIGNvbXBpbGF0aW9ucy4KICAgbGx2bTo6RGVuc2VNYXA8Q2Fub25pY2FsRGVjbFB0cjxGdW5jdGlvbkRlY2w+LAogICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxQYXJ0aWFsRGlhZ25vc3RpY0F0Pj4KLSAgICAgIENVREFEZWZlcnJlZERpYWdzOworICAgICAgRGV2aWNlRGVmZXJyZWREaWFnczsKIAogICAvLy8gQSBwYWlyIG9mIGEgY2Fub25pY2FsIEZ1bmN0aW9uRGVjbCBhbmQgYSBTb3VyY2VMb2NhdGlvbi4gIFdoZW4gdXNlZCBhcyB0aGUKICAgLy8vIGtleSBpbiBhIGhhc2h0YWJsZSwgYm90aCB0aGUgRkQgYW5kIGxvY2F0aW9uIGFyZSBoYXNoZWQuCkBAIC05OTcwLDIxICsxMDEzNSwyMiBAQAogICAvLy8gbWFwLgogICBsbHZtOjpEZW5zZU1hcDwvKiBDYWxsZWUgPSAqLyBDYW5vbmljYWxEZWNsUHRyPEZ1bmN0aW9uRGVjbD4sCiAgICAgICAgICAgICAgICAgIC8qIENhbGxlciA9ICovIEZ1bmN0aW9uRGVjbEFuZExvYz4KLSAgICAgIENVREFLbm93bkVtaXR0ZWRGbnM7CisgICAgICBEZXZpY2VLbm93bkVtaXR0ZWRGbnM7CiAKLSAgLy8vIEEgcGFydGlhbCBjYWxsIGdyYXBoIG1haW50YWluZWQgZHVyaW5nIENVREEgY29tcGlsYXRpb24gdG8gc3VwcG9ydAotICAvLy8gZGVmZXJyZWQgZGlhZ25vc3RpY3MuCisgIC8vLyBBIHBhcnRpYWwgY2FsbCBncmFwaCBtYWludGFpbmVkIGR1cmluZyBDVURBL09wZW5NUCBkZXZpY2UgY29kZSBjb21waWxhdGlvbgorICAvLy8gdG8gc3VwcG9ydCBkZWZlcnJlZCBkaWFnbm9zdGljcy4KICAgLy8vCiAgIC8vLyBGdW5jdGlvbnMgYXJlIG9ubHkgYWRkZWQgaGVyZSBpZiwgYXQgdGhlIHRpbWUgdGhleSdyZSBjb25zaWRlcmVkLCB0aGV5IGFyZQogICAvLy8gbm90IGtub3duLWVtaXR0ZWQuICBBcyBzb29uIGFzIHdlIGRpc2NvdmVyIHRoYXQgYSBmdW5jdGlvbiBpcwogICAvLy8ga25vd24tZW1pdHRlZCwgd2UgcmVtb3ZlIGl0IGFuZCBldmVyeXRoaW5nIGl0IHRyYW5zaXRpdmVseSBjYWxscyBmcm9tIHRoaXMKLSAgLy8vIHNldCBhbmQgYWRkIHRob3NlIGZ1bmN0aW9ucyB0byBDVURBS25vd25FbWl0dGVkRm5zLgorICAvLy8gc2V0IGFuZCBhZGQgdGhvc2UgZnVuY3Rpb25zIHRvIERldmljZUtub3duRW1pdHRlZEZucy4KICAgbGx2bTo6RGVuc2VNYXA8LyogQ2FsbGVyID0gKi8gQ2Fub25pY2FsRGVjbFB0cjxGdW5jdGlvbkRlY2w+LAogICAgICAgICAgICAgICAgICAvKiBDYWxsZWVzID0gKi8gbGx2bTo6TWFwVmVjdG9yPENhbm9uaWNhbERlY2xQdHI8RnVuY3Rpb25EZWNsPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbj4+Ci0gICAgICBDVURBQ2FsbEdyYXBoOworICAgICAgRGV2aWNlQ2FsbEdyYXBoOwogCi0gIC8vLyBEaWFnbm9zdGljIGJ1aWxkZXIgZm9yIENVREEgZXJyb3JzIHdoaWNoIG1heSBvciBtYXkgbm90IGJlIGRlZmVycmVkLgorICAvLy8gRGlhZ25vc3RpYyBidWlsZGVyIGZvciBDVURBL09wZW5NUCBkZXZpY2VzIGVycm9ycyB3aGljaCBtYXkgb3IgbWF5IG5vdCBiZQorICAvLy8gZGVmZXJyZWQuCiAgIC8vLwogICAvLy8gSW4gQ1VEQSwgdGhlcmUgZXhpc3QgY29uc3RydWN0cyAoZS5nLiB2YXJpYWJsZS1sZW5ndGggYXJyYXlzLCB0cnkvY2F0Y2gpCiAgIC8vLyB3aGljaCBhcmUgbm90IGFsbG93ZWQgdG8gYXBwZWFyIGluc2lkZSBfX2RldmljZV9fIGZ1bmN0aW9ucyBhbmQgYXJlCkBAIC05OTk4LDcgKzEwMTY0LDcgQEAKICAgLy8vIGRpYWdub3N0aWMsIG9yIG5vIGRpYWdub3N0aWMgYXQgYWxsLCBhY2NvcmRpbmcgdG8gYW4gYXJndW1lbnQgeW91IHBhc3MgdG8KICAgLy8vIGl0cyBjb25zdHJ1Y3RvciwgdGh1cyBzaW1wbGlmeWluZyB0aGUgcHJvY2VzcyBvZiBjcmVhdGluZyB0aGVzZSAibWF5YmUKICAgLy8vIGRlZmVycmVkIiBkaWFnbm9zdGljcy4KLSAgY2xhc3MgQ1VEQURpYWdCdWlsZGVyIHsKKyAgY2xhc3MgRGV2aWNlRGlhZ0J1aWxkZXIgewogICBwdWJsaWM6CiAgICAgZW51bSBLaW5kIHsKICAgICAgIC8vLyBFbWl0IG5vIGRpYWdub3N0aWNzLgpAQCAtMTAwMTUsMjUgKzEwMTgxLDI1IEBACiAgICAgICBLX0RlZmVycmVkCiAgICAgfTsKIAotICAgIENVREFEaWFnQnVpbGRlcihLaW5kIEssIFNvdXJjZUxvY2F0aW9uIExvYywgdW5zaWduZWQgRGlhZ0lELAotICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkRlY2wgKkZuLCBTZW1hICZTKTsKLSAgICB+Q1VEQURpYWdCdWlsZGVyKCk7CisgICAgRGV2aWNlRGlhZ0J1aWxkZXIoS2luZCBLLCBTb3VyY2VMb2NhdGlvbiBMb2MsIHVuc2lnbmVkIERpYWdJRCwKKyAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkRlY2wgKkZuLCBTZW1hICZTKTsKKyAgICB+RGV2aWNlRGlhZ0J1aWxkZXIoKTsKIAogICAgIC8vLyBDb252ZXJ0aWJsZSB0byBib29sOiBUcnVlIGlmIHdlIGltbWVkaWF0ZWx5IGVtaXR0ZWQgYW4gZXJyb3IsIGZhbHNlIGlmCiAgICAgLy8vIHdlIGRpZG4ndCBlbWl0IGFuIGVycm9yIG9yIHdlIGNyZWF0ZWQgYSBkZWZlcnJlZCBlcnJvci4KICAgICAvLy8KICAgICAvLy8gRXhhbXBsZSB1c2FnZToKICAgICAvLy8KLSAgICAvLy8gICBpZiAoQ1VEQURpYWdCdWlsZGVyKC4uLikgPDwgZm9vIDw8IGJhcikKKyAgICAvLy8gICBpZiAoRGV2aWNlRGlhZ0J1aWxkZXIoLi4uKSA8PCBmb28gPDwgYmFyKQogICAgIC8vLyAgICAgcmV0dXJuIEV4cHJFcnJvcigpOwogICAgIC8vLwogICAgIC8vLyBCdXQgc2VlIENVREFEaWFnSWZEZXZpY2VDb2RlKCkgYW5kIENVREFEaWFnSWZIb3N0Q29kZSgpIC0tIHlvdSBwcm9iYWJseQotICAgIC8vLyB3YW50IHRvIHVzZSB0aGVzZSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgQ1VEQURpYWdCdWlsZGVyIHlvdXJzZWxmLgorICAgIC8vLyB3YW50IHRvIHVzZSB0aGVzZSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgRGV2aWNlRGlhZ0J1aWxkZXIgeW91cnNlbGYuCiAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIEltbWVkaWF0ZURpYWcuaGFzVmFsdWUoKTsgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgZnJpZW5kIGNvbnN0IENVREFEaWFnQnVpbGRlciAmb3BlcmF0b3I8PChjb25zdCBDVURBRGlhZ0J1aWxkZXIgJkRpYWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUICZWYWx1ZSkgeworICAgIGZyaWVuZCBjb25zdCBEZXZpY2VEaWFnQnVpbGRlciAmb3BlcmF0b3I8PChjb25zdCBEZXZpY2VEaWFnQnVpbGRlciAmRGlhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCAmVmFsdWUpIHsKICAgICAgIGlmIChEaWFnLkltbWVkaWF0ZURpYWcuaGFzVmFsdWUoKSkKICAgICAgICAgKkRpYWcuSW1tZWRpYXRlRGlhZyA8PCBWYWx1ZTsKICAgICAgIGVsc2UgaWYgKERpYWcuUGFydGlhbERpYWcuaGFzVmFsdWUoKSkKQEAgLTEwMDU0LDcgKzEwMjIwLDE1IEBACiAgICAgbGx2bTo6T3B0aW9uYWw8UGFydGlhbERpYWdub3N0aWM+IFBhcnRpYWxEaWFnOwogICB9OwogCi0gIC8vLyBDcmVhdGVzIGEgQ1VEQURpYWdCdWlsZGVyIHRoYXQgZW1pdHMgdGhlIGRpYWdub3N0aWMgaWYgdGhlIGN1cnJlbnQgY29udGV4dAorICAvLy8gSW5kaWNhdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIChhbmQgdGh1cyBldmVyeXRoaW5nIGl0IHRyYW5zdGl2ZWx5IGNhbGxzKQorICAvLy8gd2lsbCBiZSBjb2RlZ2VuJ2VkLCBhbmQgZW1pdCBhbnkgZGVmZXJyZWQgZGlhZ25vc3RpY3Mgb24gdGhpcyBmdW5jdGlvbiBhbmQKKyAgLy8vIGl0cyAodHJhbnNpdGl2ZSkgY2FsbGVlcy4KKyAgdm9pZCBtYXJrS25vd25FbWl0dGVkKAorICAgICAgU2VtYSAmUywgRnVuY3Rpb25EZWNsICpPcmlnQ2FsbGVyLCBGdW5jdGlvbkRlY2wgKk9yaWdDYWxsZWUsCisgICAgICBTb3VyY2VMb2NhdGlvbiBPcmlnTG9jLAorICAgICAgY29uc3QgbGx2bTo6ZnVuY3Rpb25fcmVmPGJvb2woU2VtYSAmLCBGdW5jdGlvbkRlY2wgKik+IElzS25vd25FbWl0dGVkKTsKKworICAvLy8gQ3JlYXRlcyBhIERldmljZURpYWdCdWlsZGVyIHRoYXQgZW1pdHMgdGhlIGRpYWdub3N0aWMgaWYgdGhlIGN1cnJlbnQgY29udGV4dAogICAvLy8gaXMgInVzZWQgYXMgZGV2aWNlIGNvZGUiLgogICAvLy8KICAgLy8vIC0gSWYgQ3VyQ29udGV4dCBpcyBhIF9faG9zdF9fIGZ1bmN0aW9uLCBkb2VzIG5vdCBlbWl0IGFueSBkaWFnbm9zdGljcy4KQEAgLTEwMDcwLDEzICsxMDI0NCwzMCBAQAogICAvLy8gIGlmIChDVURBRGlhZ0lmRGV2aWNlQ29kZShMb2MsIGRpYWc6OmVycl9jdWRhX3ZsYSkgPDwgQ3VycmVudENVREFUYXJnZXQoKSkKICAgLy8vICAgIHJldHVybiBFeHByRXJyb3IoKTsKICAgLy8vICAvLyBPdGhlcndpc2UsIGNvbnRpbnVlIHBhcnNpbmcgYXMgbm9ybWFsLgotICBDVURBRGlhZ0J1aWxkZXIgQ1VEQURpYWdJZkRldmljZUNvZGUoU291cmNlTG9jYXRpb24gTG9jLCB1bnNpZ25lZCBEaWFnSUQpOworICBEZXZpY2VEaWFnQnVpbGRlciBDVURBRGlhZ0lmRGV2aWNlQ29kZShTb3VyY2VMb2NhdGlvbiBMb2MsIHVuc2lnbmVkIERpYWdJRCk7CiAKLSAgLy8vIENyZWF0ZXMgYSBDVURBRGlhZ0J1aWxkZXIgdGhhdCBlbWl0cyB0aGUgZGlhZ25vc3RpYyBpZiB0aGUgY3VycmVudCBjb250ZXh0CisgIC8vLyBDcmVhdGVzIGEgRGV2aWNlRGlhZ0J1aWxkZXIgdGhhdCBlbWl0cyB0aGUgZGlhZ25vc3RpYyBpZiB0aGUgY3VycmVudCBjb250ZXh0CiAgIC8vLyBpcyAidXNlZCBhcyBob3N0IGNvZGUiLgogICAvLy8KICAgLy8vIFNhbWUgYXMgQ1VEQURpYWdJZkRldmljZUNvZGUsIHdpdGggImhvc3QiIGFuZCAiZGV2aWNlIiBzd2l0Y2hlZC4KLSAgQ1VEQURpYWdCdWlsZGVyIENVREFEaWFnSWZIb3N0Q29kZShTb3VyY2VMb2NhdGlvbiBMb2MsIHVuc2lnbmVkIERpYWdJRCk7CisgIERldmljZURpYWdCdWlsZGVyIENVREFEaWFnSWZIb3N0Q29kZShTb3VyY2VMb2NhdGlvbiBMb2MsIHVuc2lnbmVkIERpYWdJRCk7CisKKyAgLy8vIENyZWF0ZXMgYSBEZXZpY2VEaWFnQnVpbGRlciB0aGF0IGVtaXRzIHRoZSBkaWFnbm9zdGljIGlmIHRoZSBjdXJyZW50CisgIC8vLyBjb250ZXh0IGlzICJ1c2VkIGFzIGRldmljZSBjb2RlIi4KKyAgLy8vCisgIC8vLyAtIElmIEN1ckNvbnRleHQgaXMgYSBgZGVjbGFyZSB0YXJnZXRgIGZ1bmN0aW9uIG9yIGl0IGlzIGtub3duIHRoYXQgdGhlCisgIC8vLyBmdW5jdGlvbiBpcyBlbWl0dGVkIGZvciB0aGUgZGV2aWNlLCBlbWl0cyB0aGUgZGlhZ25vc3RpY3MgaW1tZWRpYXRlbHkuCisgIC8vLyAtIElmIEN1ckNvbnRleHQgaXMgYSBub24tYGRlY2xhcmUgdGFyZ2V0YCBmdW5jdGlvbiBhbmQgd2UgYXJlIGNvbXBpbGluZworICAvLy8gICBmb3IgdGhlIGRldmljZSwgY3JlYXRlcyBhIGRpYWdub3N0aWMgd2hpY2ggaXMgZW1pdHRlZCBpZiBhbmQgd2hlbiB3ZQorICAvLy8gICByZWFsaXplIHRoYXQgdGhlIGZ1bmN0aW9uIHdpbGwgYmUgY29kZWdlbidlZC4KKyAgLy8vCisgIC8vLyBFeGFtcGxlIHVzYWdlOgorICAvLy8KKyAgLy8vICAvLyBWYXJpYWJsZS1sZW5ndGggYXJyYXlzIGFyZSBub3QgYWxsb3dlZCBpbiBOVlBUWCBkZXZpY2UgY29kZS4KKyAgLy8vICBpZiAoZGlhZ0lmT3Blbk1QRGV2aWNlQ29kZShMb2MsIGRpYWc6OmVycl92bGFfdW5zdXBwb3J0ZWQpKQorICAvLy8gICAgcmV0dXJuIEV4cHJFcnJvcigpOworICAvLy8gIC8vIE90aGVyd2lzZSwgY29udGludWUgcGFyc2luZyBhcyBub3JtYWwuCisgIERldmljZURpYWdCdWlsZGVyIGRpYWdJZk9wZW5NUERldmljZUNvZGUoU291cmNlTG9jYXRpb24gTG9jLCB1bnNpZ25lZCBEaWFnSUQpOwogCiAgIGVudW0gQ1VEQUZ1bmN0aW9uVGFyZ2V0IHsKICAgICBDRlRfRGV2aWNlLApAQCAtMTAyMDksNiArMTA0MDAsMTEgQEAKICAgLy8vIENvcGllcyB0YXJnZXQgYXR0cmlidXRlcyBmcm9tIHRoZSB0ZW1wbGF0ZSBURCB0byB0aGUgZnVuY3Rpb24gRkQuCiAgIHZvaWQgaW5oZXJpdENVREFUYXJnZXRBdHRycyhGdW5jdGlvbkRlY2wgKkZELCBjb25zdCBGdW5jdGlvblRlbXBsYXRlRGVjbCAmVEQpOwogCisgIC8vLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBsYXVuY2ggY29uZmlndXJhdGlvbiBmdW5jdGlvbi4gIFRoaXMgaXMgdGhlIG5hbWUKKyAgLy8vIG9mIHRoZSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHRvIGNvbmZpZ3VyZSBrZXJuZWwgY2FsbCwgd2l0aCB0aGUKKyAgLy8vIHBhcmFtZXRlcnMgc3BlY2lmaWVkIHZpYSA8PDw+Pj4uCisgIHN0ZDo6c3RyaW5nIGdldEN1ZGFDb25maWd1cmVGdW5jTmFtZSgpIGNvbnN0OworCiAgIC8vLyBcbmFtZSBDb2RlIGNvbXBsZXRpb24KICAgLy9AewogICAvLy8gRGVzY3JpYmVzIHRoZSBjb250ZXh0IGluIHdoaWNoIGNvZGUgY29tcGxldGlvbiBvY2N1cnMuCkBAIC0xMDI2NywxMSArMTA0NjMsMTQgQEAKICAgc3RydWN0IENvZGVDb21wbGV0ZUV4cHJlc3Npb25EYXRhOwogICB2b2lkIENvZGVDb21wbGV0ZUV4cHJlc3Npb24oU2NvcGUgKlMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb2RlQ29tcGxldGVFeHByZXNzaW9uRGF0YSAmRGF0YSk7Ci0gIHZvaWQgQ29kZUNvbXBsZXRlRXhwcmVzc2lvbihTY29wZSAqUywgUXVhbFR5cGUgUHJlZmVycmVkVHlwZSk7CisgIHZvaWQgQ29kZUNvbXBsZXRlRXhwcmVzc2lvbihTY29wZSAqUywgUXVhbFR5cGUgUHJlZmVycmVkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgSXNQYXJlbnRoZXNpemVkID0gZmFsc2UpOwogICB2b2lkIENvZGVDb21wbGV0ZU1lbWJlclJlZmVyZW5jZUV4cHIoU2NvcGUgKlMsIEV4cHIgKkJhc2UsIEV4cHIgKk90aGVyT3BCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gT3BMb2MsIGJvb2wgSXNBcnJvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgSXNCYXNlRXhwclN0YXRlbWVudCk7Ci0gIHZvaWQgQ29kZUNvbXBsZXRlUG9zdGZpeEV4cHJlc3Npb24oU2NvcGUgKlMsIEV4cHJSZXN1bHQgTEhTKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgSXNCYXNlRXhwclN0YXRlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIFByZWZlcnJlZFR5cGUpOworICB2b2lkIENvZGVDb21wbGV0ZVBvc3RmaXhFeHByZXNzaW9uKFNjb3BlICpTLCBFeHByUmVzdWx0IExIUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBQcmVmZXJyZWRUeXBlKTsKICAgdm9pZCBDb2RlQ29tcGxldGVUYWcoU2NvcGUgKlMsIHVuc2lnbmVkIFRhZ1NwZWMpOwogICB2b2lkIENvZGVDb21wbGV0ZVR5cGVRdWFsaWZpZXJzKERlY2xTcGVjICZEUyk7CiAgIHZvaWQgQ29kZUNvbXBsZXRlRnVuY3Rpb25RdWFsaWZpZXJzKERlY2xTcGVjICZEUywgRGVjbGFyYXRvciAmRCwKQEAgLTEwMjkzLDEyICsxMDQ5MiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXJJbmZvICpJSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2NhdGlvbiBPcGVuUGFyTG9jKTsKICAgdm9pZCBDb2RlQ29tcGxldGVJbml0aWFsaXplcihTY29wZSAqUywgRGVjbCAqRCk7Ci0gIHZvaWQgQ29kZUNvbXBsZXRlUmV0dXJuKFNjb3BlICpTKTsKICAgdm9pZCBDb2RlQ29tcGxldGVBZnRlcklmKFNjb3BlICpTKTsKLSAgdm9pZCBDb2RlQ29tcGxldGVBc3NpZ25tZW50UkhTKFNjb3BlICpTLCBFeHByICpMSFMpOwogCiAgIHZvaWQgQ29kZUNvbXBsZXRlUXVhbGlmaWVkSWQoU2NvcGUgKlMsIENYWFNjb3BlU3BlYyAmU1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBFbnRlcmluZ0NvbnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgRW50ZXJpbmdDb250ZXh0LCBRdWFsVHlwZSBCYXNlVHlwZSk7CiAgIHZvaWQgQ29kZUNvbXBsZXRlVXNpbmcoU2NvcGUgKlMpOwogICB2b2lkIENvZGVDb21wbGV0ZVVzaW5nRGlyZWN0aXZlKFNjb3BlICpTKTsKICAgdm9pZCBDb2RlQ29tcGxldGVOYW1lc3BhY2VEZWNsKFNjb3BlICpTKTsKQEAgLTEwNTUwLDcgKzEwNzQ3LDggQEAKICAgLy8vIENoZWNrIGlmIHRoZXJlIGlzIGEgZmllbGQgc2hhZG93aW5nLgogICB2b2lkIENoZWNrU2hhZG93SW5oZXJpdGVkRmllbGRzKGNvbnN0IFNvdXJjZUxvY2F0aW9uICZMb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjbGFyYXRpb25OYW1lIEZpZWxkTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDWFhSZWNvcmREZWNsICpSRCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1hYUmVjb3JkRGVjbCAqUkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBEZWNsSXNGaWVsZCA9IHRydWUpOwogCiAgIC8vLyBDaGVjayBpZiB0aGUgZ2l2ZW4gZXhwcmVzc2lvbiBjb250YWlucyAnYnJlYWsnIG9yICdjb250aW51ZScKICAgLy8vIHN0YXRlbWVudCB0aGF0IHByb2R1Y2VzIGNvbnRyb2wgZmxvdyBkaWZmZXJlbnQgZnJvbSBHQ0MuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1NlbWFDb25zdW1lci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9TZW1hQ29uc3VtZXIuaAppbmRleCBhMmNhZjg2Li4xYzU5NjJlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1NlbWFDb25zdW1lci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvU2VtYUNvbnN1bWVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBTZW1hQ29uc3VtZXIuaCAtIEFic3RyYWN0IGludGVyZmFjZSBmb3IgQVNUIHNlbWFudGljcyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvU2VtYURpYWdub3N0aWMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvU2VtYURpYWdub3N0aWMuaAppbmRleCA3NzQwZDVlLi5hZTAyN2VjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1NlbWFEaWFnbm9zdGljLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9TZW1hRGlhZ25vc3RpYy5oCkBAIC0xLDI4ICsxLDE0IEBACiAvLz09PS0tLSBEaWFnbm9zdGljU2VtYS5oIC0gRGlhZ25vc3RpY3MgZm9yIGxpYnNlbWEgLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCiAjaWZuZGVmIExMVk1fQ0xBTkdfU0VNQV9TRU1BRElBR05PU1RJQ19ICiAjZGVmaW5lIExMVk1fQ0xBTkdfU0VNQV9TRU1BRElBR05PU1RJQ19ICiAKLSNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljLmgiCi0KLW5hbWVzcGFjZSBjbGFuZyB7Ci0gIG5hbWVzcGFjZSBkaWFnIHsKLSAgICBlbnVtIHsKLSNkZWZpbmUgRElBRyhFTlVNLEZMQUdTLERFRkFVTFRfTUFQUElORyxERVNDLEdST1VQLFwKLSAgICAgICAgICAgICBTRklOQUUsTk9XRVJST1IsU0hPV0lOU1lTSEVBREVSLENBVEVHT1JZKSBFTlVNLAotI2RlZmluZSBTRU1BU1RBUlQKLSNpbmNsdWRlICJjbGFuZy9CYXNpYy9EaWFnbm9zdGljU2VtYUtpbmRzLmluYyIKLSN1bmRlZiBESUFHCi0gICAgICBOVU1fQlVJTFRJTl9TRU1BX0RJQUdOT1NUSUNTCi0gICAgfTsKLSAgfSAgLy8gZW5kIG5hbWVzcGFjZSBkaWFnCi19ICAvLyBlbmQgbmFtZXNwYWNlIGNsYW5nCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpY1NlbWEuaCIKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1NlbWFGaXhJdFV0aWxzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1NlbWFGaXhJdFV0aWxzLmgKaW5kZXggODRkYzU4Ny4uZGY5YmM0MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9TZW1hRml4SXRVdGlscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvU2VtYUZpeEl0VXRpbHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFNlbWFGaXhJdFV0aWxzLmggLSBTZW1hIEZpeEl0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9TZW1hSW50ZXJuYWwuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvU2VtYUludGVybmFsLmgKaW5kZXggYzU1ZTE2YS4uMDdlNjMzYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9TZW1hSW50ZXJuYWwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1NlbWFJbnRlcm5hbC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gU2VtYUludGVybmFsLmggLSBJbnRlcm5hbCBTZW1hIEludGVyZmFjZXMgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1NlbWFMYW1iZGEuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvU2VtYUxhbWJkYS5oCmluZGV4IDhlZGI5YjUuLmU4ZWFhNDYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvU2VtYUxhbWJkYS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvU2VtYUxhbWJkYS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gU2VtYUxhbWJkYS5oIC0gTGFtYmRhIEhlbHBlciBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9UZW1wbGF0ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9UZW1wbGF0ZS5oCmluZGV4IDM5YjA4ZTkuLmIyZjBmYmIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvVGVtcGxhdGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1RlbXBsYXRlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU2VtYVRlbXBsYXRlLmggLSBDKysgVGVtcGxhdGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwogLy8gVGhpcyBmaWxlIHByb3ZpZGVzIHR5cGVzIHVzZWQgaW4gdGhlIHNlbWFudGljIGFuYWx5c2lzIG9mIEMrKyB0ZW1wbGF0ZXMuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1RlbXBsYXRlRGVkdWN0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1RlbXBsYXRlRGVkdWN0aW9uLmgKaW5kZXggOTMzOTViNC4uNjYyYzQwNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9UZW1wbGF0ZURlZHVjdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvVGVtcGxhdGVEZWR1Y3Rpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUZW1wbGF0ZURlZHVjdGlvbi5oIC0gQysrIHRlbXBsYXRlIGFyZ3VtZW50IGRlZHVjdGlvbiAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9UZW1wbGF0ZUluc3RDYWxsYmFjay5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9UZW1wbGF0ZUluc3RDYWxsYmFjay5oCmluZGV4IGRjNzI5ZDUuLjNhYjBlOGMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvVGVtcGxhdGVJbnN0Q2FsbGJhY2suaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1RlbXBsYXRlSW5zdENhbGxiYWNrLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVGVtcGxhdGVJbnN0Q2FsbGJhY2suaCAtIFRlbXBsYXRlIEluc3RhbnRpYXRpb24gQ2FsbGJhY2sgLSBDKysgLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9UeXBvQ29ycmVjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9UeXBvQ29ycmVjdGlvbi5oCmluZGV4IGQ4ZmU4MjcuLmRhNTdkMWIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvVHlwb0NvcnJlY3Rpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZW1hL1R5cG9Db3JyZWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVHlwb0NvcnJlY3Rpb24uaCAtIENsYXNzIGZvciB0eXBvIGNvcnJlY3Rpb24gcmVzdWx0cyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlbWEvV2Vhay5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9XZWFrLmgKaW5kZXggMTE1ZTk3Yi4uNDM0MzkzNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9XZWFrLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VtYS9XZWFrLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFVucmVzb2x2ZWRTZXQuaCAtIFVucmVzb2x2ZWQgc2V0cyBvZiBkZWNsYXJhdGlvbnMgIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vQVNUQml0Q29kZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vQVNUQml0Q29kZXMuaAppbmRleCA1MWEzOTk5Li5hMWFiNjExIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL0FTVEJpdENvZGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9BU1RCaXRDb2Rlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEFTVEJpdENvZGVzLmggLSBFbnVtIHZhbHVlcyBmb3IgdGhlIFBDSCBiaXRjb2RlIGZvcm1hdCAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMDE1LDYgKzEwMTQsMTAgQEAKICNkZWZpbmUgSU1BR0VfVFlQRShJbWdUeXBlLCBJZCwgU2luZ2xldG9uSWQsIEFjY2VzcywgU3VmZml4KSBcCiAgICAgICBQUkVERUZfVFlQRV8jI0lkIyNfSUQsCiAjaW5jbHVkZSAiY2xhbmcvQmFzaWMvT3BlbkNMSW1hZ2VUeXBlcy5kZWYiCisgICAgICAvLy8gXGJyaWVmIE9wZW5DTCBleHRlbnNpb24gdHlwZXMgd2l0aCBhdXRvIG51bWVyYXRpb24KKyNkZWZpbmUgRVhUX09QQVFVRV9UWVBFKEV4dFR5cGUsIElkLCBFeHQpIFwKKyAgICAgIFBSRURFRl9UWVBFXyMjSWQjI19JRCwKKyNpbmNsdWRlICJjbGFuZy9CYXNpYy9PcGVuQ0xFeHRlbnNpb25UeXBlcy5kZWYiCiAgICAgfTsKIAogICAgIC8vLyBUaGUgbnVtYmVyIG9mIHByZWRlZmluZWQgdHlwZSBJRHMgdGhhdCBhcmUgcmVzZXJ2ZWQgZm9yCkBAIC0xNTM0LDggKzE1MzcsMTMgQEAKICAgICAgIC8vLyBBIFByYWdtYURldGVjdE1pc21hdGNoRGVjbCByZWNvcmQuCiAgICAgICBERUNMX1BSQUdNQV9ERVRFQ1RfTUlTTUFUQ0gsCiAKKyAgICAgIC8vLyBBbiBPTVBEZWNsYXJlTWFwcGVyRGVjbCByZWNvcmQuCisgICAgICBERUNMX09NUF9ERUNMQVJFX01BUFBFUiwKKwogICAgICAgLy8vIEFuIE9NUERlY2xhcmVSZWR1Y3Rpb25EZWNsIHJlY29yZC4KICAgICAgIERFQ0xfT01QX0RFQ0xBUkVfUkVEVUNUSU9OLAorCisgICAgICBERUNMX0xBU1QgPSBERUNMX09NUF9ERUNMQVJFX1JFRFVDVElPTgogICAgIH07CiAKICAgICAvLy8gUmVjb3JkIGNvZGVzIGZvciBlYWNoIGtpbmQgb2Ygc3RhdGVtZW50IG9yIGV4cHJlc3Npb24uCkBAIC0xNTQ4LDcgKzE1NTYsNyBAQAogICAgIGVudW0gU3RtdENvZGUgewogICAgICAgLy8vIEEgbWFya2VyIHJlY29yZCB0aGF0IGluZGljYXRlcyB0aGF0IHdlIGFyZSBhdCB0aGUgZW5kCiAgICAgICAvLy8gb2YgYW4gZXhwcmVzc2lvbi4KLSAgICAgIFNUTVRfU1RPUCA9IDEyOCwKKyAgICAgIFNUTVRfU1RPUCA9IERFQ0xfTEFTVCArIDEsCiAKICAgICAgIC8vLyBBIE5VTEwgZXhwcmVzc2lvbi4KICAgICAgIFNUTVRfTlVMTF9QVFIsCkBAIC0xNjE2LDYgKzE2MjQsOSBAQAogICAgICAgLy8vIEEgTVMtc3R5bGUgQXNtU3RtdCByZWNvcmQuCiAgICAgICBTVE1UX01TQVNNLAogCisgICAgICAvLy8gQSBjb25zdGFudCBleHByZXNzaW9uIGNvbnRleHQuCisgICAgICBFWFBSX0NPTlNUQU5ULAorCiAgICAgICAvLy8gQSBQcmVkZWZpbmVkRXhwciByZWNvcmQuCiAgICAgICBFWFBSX1BSRURFRklORUQsCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vQVNURGVzZXJpYWxpemF0aW9uTGlzdGVuZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vQVNURGVzZXJpYWxpemF0aW9uTGlzdGVuZXIuaAppbmRleCBjNDYyYTkwLi5mM2EwMWE0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL0FTVERlc2VyaWFsaXphdGlvbkxpc3RlbmVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9BU1REZXNlcmlhbGl6YXRpb25MaXN0ZW5lci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEFTVERlc2VyaWFsaXphdGlvbkxpc3RlbmVyLmggLSBEZWNsL1R5cGUgUENIIFJlYWQgRXZlbnRzIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL0FTVFJlYWRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9BU1RSZWFkZXIuaAppbmRleCBmOTdmNTQ1Li43OThhZGVlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL0FTVFJlYWRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vQVNUUmVhZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQVNUUmVhZGVyLmggLSBBU1QgRmlsZSBSZWFkZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI2ODcsNiArMjY4Niw3IEBACiAgICAgICA6IFJlY29yZChSZWNvcmQpLCBDb250ZXh0KFJlY29yZC5nZXRDb250ZXh0KCkpIHt9CiAKICNkZWZpbmUgT1BFTk1QX0NMQVVTRShOYW1lLCBDbGFzcykgdm9pZCBWaXNpdCMjQ2xhc3MoQ2xhc3MgKkMpOworICBPUEVOTVBfQ0xBVVNFKGZsdXNoLCBPTVBGbHVzaENsYXVzZSkKICNpbmNsdWRlICJjbGFuZy9CYXNpYy9PcGVuTVBLaW5kcy5kZWYiCiAgIE9NUENsYXVzZSAqcmVhZENsYXVzZSgpOwogICB2b2lkIFZpc2l0T01QQ2xhdXNlV2l0aFByZUluaXQoT01QQ2xhdXNlV2l0aFByZUluaXQgKkMpOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9BU1RXcml0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vQVNUV3JpdGVyLmgKaW5kZXggZGE4YjEwYS4uMmQxMmY2YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9BU1RXcml0ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL0FTVFdyaXRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEFTVFdyaXRlci5oIC0gQVNUIEZpbGUgV3JpdGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yNiwxMCArMjUsMTAgQEAKICNpbmNsdWRlICJjbGFuZy9BU1QvVHlwZUxvYy5oIgogI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0xMVk0uaCIKICNpbmNsdWRlICJjbGFuZy9CYXNpYy9Tb3VyY2VMb2NhdGlvbi5oIgotI2luY2x1ZGUgImNsYW5nL0Zyb250ZW5kL1BDSENvbnRhaW5lck9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJjbGFuZy9TZW1hL1NlbWFDb25zdW1lci5oIgogI2luY2x1ZGUgImNsYW5nL1NlcmlhbGl6YXRpb24vQVNUQml0Q29kZXMuaCIKICNpbmNsdWRlICJjbGFuZy9TZXJpYWxpemF0aW9uL0FTVERlc2VyaWFsaXphdGlvbkxpc3RlbmVyLmgiCisjaW5jbHVkZSAiY2xhbmcvU2VyaWFsaXphdGlvbi9QQ0hDb250YWluZXJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvQXJyYXlSZWYuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9EZW5zZU1hcC5oIgogI2luY2x1ZGUgImxsdm0vQURUL0RlbnNlU2V0LmgiCkBAIC0xMDAwLDYgKzk5OSw3IEBACiBwdWJsaWM6CiAgIE9NUENsYXVzZVdyaXRlcihBU1RSZWNvcmRXcml0ZXIgJlJlY29yZCkgOiBSZWNvcmQoUmVjb3JkKSB7fQogI2RlZmluZSBPUEVOTVBfQ0xBVVNFKE5hbWUsIENsYXNzKSB2b2lkIFZpc2l0IyNDbGFzcyhDbGFzcyAqUyk7CisgIE9QRU5NUF9DTEFVU0UoZmx1c2gsIE9NUEZsdXNoQ2xhdXNlKQogI2luY2x1ZGUgImNsYW5nL0Jhc2ljL09wZW5NUEtpbmRzLmRlZiIKICAgdm9pZCB3cml0ZUNsYXVzZShPTVBDbGF1c2UgKkMpOwogICB2b2lkIFZpc2l0T01QQ2xhdXNlV2l0aFByZUluaXQoT01QQ2xhdXNlV2l0aFByZUluaXQgKkMpOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9BdHRyUENIUmVhZC5pbmMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL0F0dHJQQ0hSZWFkLmluYwppbmRleCAxNTlmZjRiLi43YzZmMDlmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL0F0dHJQQ0hSZWFkLmluYworKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL0F0dHJQQ0hSZWFkLmluYwpAQCAtNyw2ICs3LDE1IEBACiBcKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qLwogCiAgIHN3aXRjaCAoS2luZCkgeworICBjYXNlIGF0dHI6OkFBcmNoNjRWZWN0b3JQY3M6IHsKKyAgICBib29sIGlzSW5oZXJpdGVkID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICBib29sIGlzSW1wbGljaXQgPSBSZWNvcmQucmVhZEludCgpOworICAgIHVuc2lnbmVkIFNwZWxsaW5nID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICBOZXcgPSBuZXcgKENvbnRleHQpIEFBcmNoNjRWZWN0b3JQY3NBdHRyKFJhbmdlLCBDb250ZXh0LCBTcGVsbGluZyk7CisgICAgY2FzdDxJbmhlcml0YWJsZUF0dHI+KE5ldyktPnNldEluaGVyaXRlZChpc0luaGVyaXRlZCk7CisgICAgTmV3LT5zZXRJbXBsaWNpdChpc0ltcGxpY2l0KTsKKyAgICBicmVhazsKKyAgfQogICBjYXNlIGF0dHI6OkFNREdQVUZsYXRXb3JrR3JvdXBTaXplOiB7CiAgICAgYm9vbCBpc0luaGVyaXRlZCA9IFJlY29yZC5yZWFkSW50KCk7CiAgICAgYm9vbCBpc0ltcGxpY2l0ID0gUmVjb3JkLnJlYWRJbnQoKTsKQEAgLTM3NCw3ICszODMsOCBAQAogICAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2U9IFJlY29yZC5yZWFkU3RyaW5nKCk7CiAgICAgYm9vbCBzdHJpY3QgPSBSZWNvcmQucmVhZEludCgpOwogICAgIHN0ZDo6c3RyaW5nIHJlcGxhY2VtZW50PSBSZWNvcmQucmVhZFN0cmluZygpOwotICAgIE5ldyA9IG5ldyAoQ29udGV4dCkgQXZhaWxhYmlsaXR5QXR0cihSYW5nZSwgQ29udGV4dCwgcGxhdGZvcm0sIGludHJvZHVjZWQsIGRlcHJlY2F0ZWQsIG9ic29sZXRlZCwgdW5hdmFpbGFibGUsIG1lc3NhZ2UsIHN0cmljdCwgcmVwbGFjZW1lbnQsIFNwZWxsaW5nKTsKKyAgICBpbnQgcHJpb3JpdHkgPSBSZWNvcmQucmVhZEludCgpOworICAgIE5ldyA9IG5ldyAoQ29udGV4dCkgQXZhaWxhYmlsaXR5QXR0cihSYW5nZSwgQ29udGV4dCwgcGxhdGZvcm0sIGludHJvZHVjZWQsIGRlcHJlY2F0ZWQsIG9ic29sZXRlZCwgdW5hdmFpbGFibGUsIG1lc3NhZ2UsIHN0cmljdCwgcmVwbGFjZW1lbnQsIHByaW9yaXR5LCBTcGVsbGluZyk7CiAgICAgY2FzdDxJbmhlcml0YWJsZUF0dHI+KE5ldyktPnNldEluaGVyaXRlZChpc0luaGVyaXRlZCk7CiAgICAgTmV3LT5zZXRJbXBsaWNpdChpc0ltcGxpY2l0KTsKICAgICBicmVhazsKQEAgLTU2OCw2ICs1NzgsMjAgQEAKICAgICBOZXctPnNldEltcGxpY2l0KGlzSW1wbGljaXQpOwogICAgIGJyZWFrOwogICB9CisgIGNhc2UgYXR0cjo6Q2FsbGJhY2s6IHsKKyAgICBib29sIGlzSW5oZXJpdGVkID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICBib29sIGlzSW1wbGljaXQgPSBSZWNvcmQucmVhZEludCgpOworICAgIHVuc2lnbmVkIFNwZWxsaW5nID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICB1bnNpZ25lZCBlbmNvZGluZ1NpemUgPSBSZWNvcmQucmVhZEludCgpOworICAgIFNtYWxsVmVjdG9yPGludCwgND4gZW5jb2Rpbmc7CisgICAgZW5jb2RpbmcucmVzZXJ2ZShlbmNvZGluZ1NpemUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gZW5jb2RpbmdTaXplOyArK2kpCisgICAgICBlbmNvZGluZy5wdXNoX2JhY2soUmVjb3JkLnJlYWRJbnQoKSk7CisgICAgTmV3ID0gbmV3IChDb250ZXh0KSBDYWxsYmFja0F0dHIoUmFuZ2UsIENvbnRleHQsIGVuY29kaW5nLmRhdGEoKSwgZW5jb2RpbmdTaXplLCBTcGVsbGluZyk7CisgICAgY2FzdDxJbmhlcml0YWJsZUF0dHI+KE5ldyktPnNldEluaGVyaXRlZChpc0luaGVyaXRlZCk7CisgICAgTmV3LT5zZXRJbXBsaWNpdChpc0ltcGxpY2l0KTsKKyAgICBicmVhazsKKyAgfQogICBjYXNlIGF0dHI6OkNhcGFiaWxpdHk6IHsKICAgICBib29sIGlzSW5oZXJpdGVkID0gUmVjb3JkLnJlYWRJbnQoKTsKICAgICBib29sIGlzSW1wbGljaXQgPSBSZWNvcmQucmVhZEludCgpOwpAQCAtNjk5LDYgKzcyMywxNSBAQAogICAgIE5ldy0+c2V0SW1wbGljaXQoaXNJbXBsaWNpdCk7CiAgICAgYnJlYWs7CiAgIH0KKyAgY2FzZSBhdHRyOjpETExFeHBvcnRTdGF0aWNMb2NhbDogeworICAgIGJvb2wgaXNJbmhlcml0ZWQgPSBSZWNvcmQucmVhZEludCgpOworICAgIGJvb2wgaXNJbXBsaWNpdCA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgdW5zaWduZWQgU3BlbGxpbmcgPSBSZWNvcmQucmVhZEludCgpOworICAgIE5ldyA9IG5ldyAoQ29udGV4dCkgRExMRXhwb3J0U3RhdGljTG9jYWxBdHRyKFJhbmdlLCBDb250ZXh0LCBTcGVsbGluZyk7CisgICAgY2FzdDxJbmhlcml0YWJsZUF0dHI+KE5ldyktPnNldEluaGVyaXRlZChpc0luaGVyaXRlZCk7CisgICAgTmV3LT5zZXRJbXBsaWNpdChpc0ltcGxpY2l0KTsKKyAgICBicmVhazsKKyAgfQogICBjYXNlIGF0dHI6OkRMTEltcG9ydDogewogICAgIGJvb2wgaXNJbmhlcml0ZWQgPSBSZWNvcmQucmVhZEludCgpOwogICAgIGJvb2wgaXNJbXBsaWNpdCA9IFJlY29yZC5yZWFkSW50KCk7CkBAIC03MDgsNiArNzQxLDE1IEBACiAgICAgTmV3LT5zZXRJbXBsaWNpdChpc0ltcGxpY2l0KTsKICAgICBicmVhazsKICAgfQorICBjYXNlIGF0dHI6OkRMTEltcG9ydFN0YXRpY0xvY2FsOiB7CisgICAgYm9vbCBpc0luaGVyaXRlZCA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgYm9vbCBpc0ltcGxpY2l0ID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICB1bnNpZ25lZCBTcGVsbGluZyA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgTmV3ID0gbmV3IChDb250ZXh0KSBETExJbXBvcnRTdGF0aWNMb2NhbEF0dHIoUmFuZ2UsIENvbnRleHQsIFNwZWxsaW5nKTsKKyAgICBjYXN0PEluaGVyaXRhYmxlQXR0cj4oTmV3KS0+c2V0SW5oZXJpdGVkKGlzSW5oZXJpdGVkKTsKKyAgICBOZXctPnNldEltcGxpY2l0KGlzSW1wbGljaXQpOworICAgIGJyZWFrOworICB9CiAgIGNhc2UgYXR0cjo6RGVwcmVjYXRlZDogewogICAgIGJvb2wgaXNJbmhlcml0ZWQgPSBSZWNvcmQucmVhZEludCgpOwogICAgIGJvb2wgaXNJbXBsaWNpdCA9IFJlY29yZC5yZWFkSW50KCk7CkBAIC04ODMsNiArOTI1LDE3IEBACiAgICAgTmV3LT5zZXRJbXBsaWNpdChpc0ltcGxpY2l0KTsKICAgICBicmVhazsKICAgfQorICBjYXNlIGF0dHI6OkZvcnRpZnlTdGRMaWI6IHsKKyAgICBib29sIGlzSW5oZXJpdGVkID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICBib29sIGlzSW1wbGljaXQgPSBSZWNvcmQucmVhZEludCgpOworICAgIHVuc2lnbmVkIFNwZWxsaW5nID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICBpbnQgdHlwZSA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgaW50IGZsYWcgPSBSZWNvcmQucmVhZEludCgpOworICAgIE5ldyA9IG5ldyAoQ29udGV4dCkgRm9ydGlmeVN0ZExpYkF0dHIoUmFuZ2UsIENvbnRleHQsIHR5cGUsIGZsYWcsIFNwZWxsaW5nKTsKKyAgICBjYXN0PEluaGVyaXRhYmxlQXR0cj4oTmV3KS0+c2V0SW5oZXJpdGVkKGlzSW5oZXJpdGVkKTsKKyAgICBOZXctPnNldEltcGxpY2l0KGlzSW1wbGljaXQpOworICAgIGJyZWFrOworICB9CiAgIGNhc2UgYXR0cjo6R05VSW5saW5lOiB7CiAgICAgYm9vbCBpc0luaGVyaXRlZCA9IFJlY29yZC5yZWFkSW50KCk7CiAgICAgYm9vbCBpc0ltcGxpY2l0ID0gUmVjb3JkLnJlYWRJbnQoKTsKQEAgLTEyODQsNiArMTMzNywxMyBAQAogICAgIE5ldy0+c2V0SW1wbGljaXQoaXNJbXBsaWNpdCk7CiAgICAgYnJlYWs7CiAgIH0KKyAgY2FzZSBhdHRyOjpOb0RlcmVmOiB7CisgICAgYm9vbCBpc0ltcGxpY2l0ID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICB1bnNpZ25lZCBTcGVsbGluZyA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgTmV3ID0gbmV3IChDb250ZXh0KSBOb0RlcmVmQXR0cihSYW5nZSwgQ29udGV4dCwgU3BlbGxpbmcpOworICAgIE5ldy0+c2V0SW1wbGljaXQoaXNJbXBsaWNpdCk7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBhdHRyOjpOb0Rlc3Ryb3k6IHsKICAgICBib29sIGlzSW5oZXJpdGVkID0gUmVjb3JkLnJlYWRJbnQoKTsKICAgICBib29sIGlzSW1wbGljaXQgPSBSZWNvcmQucmVhZEludCgpOwpAQCAtMTM3Miw2ICsxNDMyLDE1IEBACiAgICAgTmV3LT5zZXRJbXBsaWNpdChpc0ltcGxpY2l0KTsKICAgICBicmVhazsKICAgfQorICBjYXNlIGF0dHI6Ok5vU3BlY3VsYXRpdmVMb2FkSGFyZGVuaW5nOiB7CisgICAgYm9vbCBpc0luaGVyaXRlZCA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgYm9vbCBpc0ltcGxpY2l0ID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICB1bnNpZ25lZCBTcGVsbGluZyA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgTmV3ID0gbmV3IChDb250ZXh0KSBOb1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHIoUmFuZ2UsIENvbnRleHQsIFNwZWxsaW5nKTsKKyAgICBjYXN0PEluaGVyaXRhYmxlQXR0cj4oTmV3KS0+c2V0SW5oZXJpdGVkKGlzSW5oZXJpdGVkKTsKKyAgICBOZXctPnNldEltcGxpY2l0KGlzSW1wbGljaXQpOworICAgIGJyZWFrOworICB9CiAgIGNhc2UgYXR0cjo6Tm9TcGxpdFN0YWNrOiB7CiAgICAgYm9vbCBpc0luaGVyaXRlZCA9IFJlY29yZC5yZWFkSW50KCk7CiAgICAgYm9vbCBpc0ltcGxpY2l0ID0gUmVjb3JkLnJlYWRJbnQoKTsKQEAgLTE1MTQsNiArMTU4Myw2MCBAQAogICAgIE5ldy0+c2V0SW1wbGljaXQoaXNJbXBsaWNpdCk7CiAgICAgYnJlYWs7CiAgIH0KKyAgY2FzZSBhdHRyOjpPU0NvbnN1bWVkOiB7CisgICAgYm9vbCBpc0luaGVyaXRlZCA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgYm9vbCBpc0ltcGxpY2l0ID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICB1bnNpZ25lZCBTcGVsbGluZyA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgTmV3ID0gbmV3IChDb250ZXh0KSBPU0NvbnN1bWVkQXR0cihSYW5nZSwgQ29udGV4dCwgU3BlbGxpbmcpOworICAgIGNhc3Q8SW5oZXJpdGFibGVBdHRyPihOZXcpLT5zZXRJbmhlcml0ZWQoaXNJbmhlcml0ZWQpOworICAgIE5ldy0+c2V0SW1wbGljaXQoaXNJbXBsaWNpdCk7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSBhdHRyOjpPU0NvbnN1bWVzVGhpczogeworICAgIGJvb2wgaXNJbmhlcml0ZWQgPSBSZWNvcmQucmVhZEludCgpOworICAgIGJvb2wgaXNJbXBsaWNpdCA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgdW5zaWduZWQgU3BlbGxpbmcgPSBSZWNvcmQucmVhZEludCgpOworICAgIE5ldyA9IG5ldyAoQ29udGV4dCkgT1NDb25zdW1lc1RoaXNBdHRyKFJhbmdlLCBDb250ZXh0LCBTcGVsbGluZyk7CisgICAgY2FzdDxJbmhlcml0YWJsZUF0dHI+KE5ldyktPnNldEluaGVyaXRlZChpc0luaGVyaXRlZCk7CisgICAgTmV3LT5zZXRJbXBsaWNpdChpc0ltcGxpY2l0KTsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIGF0dHI6Ok9TUmV0dXJuc05vdFJldGFpbmVkOiB7CisgICAgYm9vbCBpc0luaGVyaXRlZCA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgYm9vbCBpc0ltcGxpY2l0ID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICB1bnNpZ25lZCBTcGVsbGluZyA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgTmV3ID0gbmV3IChDb250ZXh0KSBPU1JldHVybnNOb3RSZXRhaW5lZEF0dHIoUmFuZ2UsIENvbnRleHQsIFNwZWxsaW5nKTsKKyAgICBjYXN0PEluaGVyaXRhYmxlQXR0cj4oTmV3KS0+c2V0SW5oZXJpdGVkKGlzSW5oZXJpdGVkKTsKKyAgICBOZXctPnNldEltcGxpY2l0KGlzSW1wbGljaXQpOworICAgIGJyZWFrOworICB9CisgIGNhc2UgYXR0cjo6T1NSZXR1cm5zUmV0YWluZWQ6IHsKKyAgICBib29sIGlzSW5oZXJpdGVkID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICBib29sIGlzSW1wbGljaXQgPSBSZWNvcmQucmVhZEludCgpOworICAgIHVuc2lnbmVkIFNwZWxsaW5nID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICBOZXcgPSBuZXcgKENvbnRleHQpIE9TUmV0dXJuc1JldGFpbmVkQXR0cihSYW5nZSwgQ29udGV4dCwgU3BlbGxpbmcpOworICAgIGNhc3Q8SW5oZXJpdGFibGVBdHRyPihOZXcpLT5zZXRJbmhlcml0ZWQoaXNJbmhlcml0ZWQpOworICAgIE5ldy0+c2V0SW1wbGljaXQoaXNJbXBsaWNpdCk7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSBhdHRyOjpPU1JldHVybnNSZXRhaW5lZE9uTm9uWmVybzogeworICAgIGJvb2wgaXNJbmhlcml0ZWQgPSBSZWNvcmQucmVhZEludCgpOworICAgIGJvb2wgaXNJbXBsaWNpdCA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgdW5zaWduZWQgU3BlbGxpbmcgPSBSZWNvcmQucmVhZEludCgpOworICAgIE5ldyA9IG5ldyAoQ29udGV4dCkgT1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm9BdHRyKFJhbmdlLCBDb250ZXh0LCBTcGVsbGluZyk7CisgICAgY2FzdDxJbmhlcml0YWJsZUF0dHI+KE5ldyktPnNldEluaGVyaXRlZChpc0luaGVyaXRlZCk7CisgICAgTmV3LT5zZXRJbXBsaWNpdChpc0ltcGxpY2l0KTsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIGF0dHI6Ok9TUmV0dXJuc1JldGFpbmVkT25aZXJvOiB7CisgICAgYm9vbCBpc0luaGVyaXRlZCA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgYm9vbCBpc0ltcGxpY2l0ID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICB1bnNpZ25lZCBTcGVsbGluZyA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgTmV3ID0gbmV3IChDb250ZXh0KSBPU1JldHVybnNSZXRhaW5lZE9uWmVyb0F0dHIoUmFuZ2UsIENvbnRleHQsIFNwZWxsaW5nKTsKKyAgICBjYXN0PEluaGVyaXRhYmxlQXR0cj4oTmV3KS0+c2V0SW5oZXJpdGVkKGlzSW5oZXJpdGVkKTsKKyAgICBOZXctPnNldEltcGxpY2l0KGlzSW1wbGljaXQpOworICAgIGJyZWFrOworICB9CiAgIGNhc2UgYXR0cjo6T2JqQ0JveGFibGU6IHsKICAgICBib29sIGlzSW1wbGljaXQgPSBSZWNvcmQucmVhZEludCgpOwogICAgIHVuc2lnbmVkIFNwZWxsaW5nID0gUmVjb3JkLnJlYWRJbnQoKTsKQEAgLTE1NzgsNiArMTcwMSwxNSBAQAogICAgIE5ldy0+c2V0SW1wbGljaXQoaXNJbXBsaWNpdCk7CiAgICAgYnJlYWs7CiAgIH0KKyAgY2FzZSBhdHRyOjpPYmpDRXh0ZXJuYWxseVJldGFpbmVkOiB7CisgICAgYm9vbCBpc0luaGVyaXRlZCA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgYm9vbCBpc0ltcGxpY2l0ID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICB1bnNpZ25lZCBTcGVsbGluZyA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgTmV3ID0gbmV3IChDb250ZXh0KSBPYmpDRXh0ZXJuYWxseVJldGFpbmVkQXR0cihSYW5nZSwgQ29udGV4dCwgU3BlbGxpbmcpOworICAgIGNhc3Q8SW5oZXJpdGFibGVBdHRyPihOZXcpLT5zZXRJbmhlcml0ZWQoaXNJbmhlcml0ZWQpOworICAgIE5ldy0+c2V0SW1wbGljaXQoaXNJbXBsaWNpdCk7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBhdHRyOjpPYmpDR0M6IHsKICAgICBib29sIGlzSW1wbGljaXQgPSBSZWNvcmQucmVhZEludCgpOwogICAgIHVuc2lnbmVkIFNwZWxsaW5nID0gUmVjb3JkLnJlYWRJbnQoKTsKQEAgLTE2MjgsNiArMTc2MCwxMyBAQAogICAgIE5ldy0+c2V0SW1wbGljaXQoaXNJbXBsaWNpdCk7CiAgICAgYnJlYWs7CiAgIH0KKyAgY2FzZSBhdHRyOjpPYmpDTm9uTGF6eUNsYXNzOiB7CisgICAgYm9vbCBpc0ltcGxpY2l0ID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICB1bnNpZ25lZCBTcGVsbGluZyA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgTmV3ID0gbmV3IChDb250ZXh0KSBPYmpDTm9uTGF6eUNsYXNzQXR0cihSYW5nZSwgQ29udGV4dCwgU3BlbGxpbmcpOworICAgIE5ldy0+c2V0SW1wbGljaXQoaXNJbXBsaWNpdCk7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBhdHRyOjpPYmpDT3duZXJzaGlwOiB7CiAgICAgYm9vbCBpc0luaGVyaXRlZCA9IFJlY29yZC5yZWFkSW50KCk7CiAgICAgYm9vbCBpc0ltcGxpY2l0ID0gUmVjb3JkLnJlYWRJbnQoKTsKQEAgLTIxNTgsNiArMjI5NywxNSBAQAogICAgIE5ldy0+c2V0SW1wbGljaXQoaXNJbXBsaWNpdCk7CiAgICAgYnJlYWs7CiAgIH0KKyAgY2FzZSBhdHRyOjpTcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmc6IHsKKyAgICBib29sIGlzSW5oZXJpdGVkID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICBib29sIGlzSW1wbGljaXQgPSBSZWNvcmQucmVhZEludCgpOworICAgIHVuc2lnbmVkIFNwZWxsaW5nID0gUmVjb3JkLnJlYWRJbnQoKTsKKyAgICBOZXcgPSBuZXcgKENvbnRleHQpIFNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHIoUmFuZ2UsIENvbnRleHQsIFNwZWxsaW5nKTsKKyAgICBjYXN0PEluaGVyaXRhYmxlQXR0cj4oTmV3KS0+c2V0SW5oZXJpdGVkKGlzSW5oZXJpdGVkKTsKKyAgICBOZXctPnNldEltcGxpY2l0KGlzSW1wbGljaXQpOworICAgIGJyZWFrOworICB9CiAgIGNhc2UgYXR0cjo6U3RkQ2FsbDogewogICAgIGJvb2wgaXNJbmhlcml0ZWQgPSBSZWNvcmQucmVhZEludCgpOwogICAgIGJvb2wgaXNJbXBsaWNpdCA9IFJlY29yZC5yZWFkSW50KCk7CkBAIC0yMzY5LDYgKzI1MTcsMTUgQEAKICAgICBOZXctPnNldEltcGxpY2l0KGlzSW1wbGljaXQpOwogICAgIGJyZWFrOwogICB9CisgIGNhc2UgYXR0cjo6VW5pbml0aWFsaXplZDogeworICAgIGJvb2wgaXNJbmhlcml0ZWQgPSBSZWNvcmQucmVhZEludCgpOworICAgIGJvb2wgaXNJbXBsaWNpdCA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgdW5zaWduZWQgU3BlbGxpbmcgPSBSZWNvcmQucmVhZEludCgpOworICAgIE5ldyA9IG5ldyAoQ29udGV4dCkgVW5pbml0aWFsaXplZEF0dHIoUmFuZ2UsIENvbnRleHQsIFNwZWxsaW5nKTsKKyAgICBjYXN0PEluaGVyaXRhYmxlQXR0cj4oTmV3KS0+c2V0SW5oZXJpdGVkKGlzSW5oZXJpdGVkKTsKKyAgICBOZXctPnNldEltcGxpY2l0KGlzSW1wbGljaXQpOworICAgIGJyZWFrOworICB9CiAgIGNhc2UgYXR0cjo6VW51c2VkOiB7CiAgICAgYm9vbCBpc0luaGVyaXRlZCA9IFJlY29yZC5yZWFkSW50KCk7CiAgICAgYm9vbCBpc0ltcGxpY2l0ID0gUmVjb3JkLnJlYWRJbnQoKTsKQEAgLTI0ODEsNiArMjYzOCwyNiBAQAogICAgIE5ldy0+c2V0SW1wbGljaXQoaXNJbXBsaWNpdCk7CiAgICAgYnJlYWs7CiAgIH0KKyAgY2FzZSBhdHRyOjpXZWJBc3NlbWJseUltcG9ydE1vZHVsZTogeworICAgIGJvb2wgaXNJbmhlcml0ZWQgPSBSZWNvcmQucmVhZEludCgpOworICAgIGJvb2wgaXNJbXBsaWNpdCA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgdW5zaWduZWQgU3BlbGxpbmcgPSBSZWNvcmQucmVhZEludCgpOworICAgIHN0ZDo6c3RyaW5nIGltcG9ydE1vZHVsZT0gUmVjb3JkLnJlYWRTdHJpbmcoKTsKKyAgICBOZXcgPSBuZXcgKENvbnRleHQpIFdlYkFzc2VtYmx5SW1wb3J0TW9kdWxlQXR0cihSYW5nZSwgQ29udGV4dCwgaW1wb3J0TW9kdWxlLCBTcGVsbGluZyk7CisgICAgY2FzdDxJbmhlcml0YWJsZUF0dHI+KE5ldyktPnNldEluaGVyaXRlZChpc0luaGVyaXRlZCk7CisgICAgTmV3LT5zZXRJbXBsaWNpdChpc0ltcGxpY2l0KTsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIGF0dHI6OldlYkFzc2VtYmx5SW1wb3J0TmFtZTogeworICAgIGJvb2wgaXNJbmhlcml0ZWQgPSBSZWNvcmQucmVhZEludCgpOworICAgIGJvb2wgaXNJbXBsaWNpdCA9IFJlY29yZC5yZWFkSW50KCk7CisgICAgdW5zaWduZWQgU3BlbGxpbmcgPSBSZWNvcmQucmVhZEludCgpOworICAgIHN0ZDo6c3RyaW5nIGltcG9ydE5hbWU9IFJlY29yZC5yZWFkU3RyaW5nKCk7CisgICAgTmV3ID0gbmV3IChDb250ZXh0KSBXZWJBc3NlbWJseUltcG9ydE5hbWVBdHRyKFJhbmdlLCBDb250ZXh0LCBpbXBvcnROYW1lLCBTcGVsbGluZyk7CisgICAgY2FzdDxJbmhlcml0YWJsZUF0dHI+KE5ldyktPnNldEluaGVyaXRlZChpc0luaGVyaXRlZCk7CisgICAgTmV3LT5zZXRJbXBsaWNpdChpc0ltcGxpY2l0KTsKKyAgICBicmVhazsKKyAgfQogICBjYXNlIGF0dHI6OldvcmtHcm91cFNpemVIaW50OiB7CiAgICAgYm9vbCBpc0luaGVyaXRlZCA9IFJlY29yZC5yZWFkSW50KCk7CiAgICAgYm9vbCBpc0ltcGxpY2l0ID0gUmVjb3JkLnJlYWRJbnQoKTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vQXR0clBDSFdyaXRlLmluYyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vQXR0clBDSFdyaXRlLmluYwppbmRleCA5OTAzMzNkLi4wOWE5YWYwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL0F0dHJQQ0hXcml0ZS5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9BdHRyUENIV3JpdGUuaW5jCkBAIC03LDYgKzcsMTMgQEAKIFwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSovCiAKICAgc3dpdGNoIChBLT5nZXRLaW5kKCkpIHsKKyAgY2FzZSBhdHRyOjpBQXJjaDY0VmVjdG9yUGNzOiB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFBcmNoNjRWZWN0b3JQY3NBdHRyPihBKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKFNBLT5pc0luaGVyaXRlZCgpKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKEEtPmlzSW1wbGljaXQoKSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5nZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKKyAgICBicmVhazsKKyAgfQogICBjYXNlIGF0dHI6OkFNREdQVUZsYXRXb3JrR3JvdXBTaXplOiB7CiAgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEFNREdQVUZsYXRXb3JrR3JvdXBTaXplQXR0cj4oQSk7CiAgICAgUmVjb3JkLnB1c2hfYmFjayhTQS0+aXNJbmhlcml0ZWQoKSk7CkBAIC0yOTQsNiArMzAxLDcgQEAKICAgICBSZWNvcmQuQWRkU3RyaW5nKFNBLT5nZXRNZXNzYWdlKCkpOwogICAgIFJlY29yZC5wdXNoX2JhY2soU0EtPmdldFN0cmljdCgpKTsKICAgICBSZWNvcmQuQWRkU3RyaW5nKFNBLT5nZXRSZXBsYWNlbWVudCgpKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKFNBLT5nZXRQcmlvcml0eSgpKTsKICAgICBicmVhazsKICAgfQogICBjYXNlIGF0dHI6OkJsb2NrczogewpAQCAtNDQxLDYgKzQ0OSwxNiBAQAogICAgICAgUmVjb3JkLnB1c2hfYmFjaygoKmkpKTsKICAgICBicmVhazsKICAgfQorICBjYXNlIGF0dHI6OkNhbGxiYWNrOiB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PENhbGxiYWNrQXR0cj4oQSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhTQS0+aXNJbmhlcml0ZWQoKSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5pc0ltcGxpY2l0KCkpOworICAgIFJlY29yZC5wdXNoX2JhY2soQS0+Z2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhTQS0+ZW5jb2Rpbmdfc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8gJlZhbCA6IFNBLT5lbmNvZGluZygpKQorICAgICAgUmVjb3JkLnB1c2hfYmFjayhWYWwpOworICAgIGJyZWFrOworICB9CiAgIGNhc2UgYXR0cjo6Q2FwYWJpbGl0eTogewogICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxDYXBhYmlsaXR5QXR0cj4oQSk7CiAgICAgUmVjb3JkLnB1c2hfYmFjayhTQS0+aXNJbmhlcml0ZWQoKSk7CkBAIC01NDQsNiArNTYyLDEzIEBACiAgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5nZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKICAgICBicmVhazsKICAgfQorICBjYXNlIGF0dHI6OkRMTEV4cG9ydFN0YXRpY0xvY2FsOiB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PERMTEV4cG9ydFN0YXRpY0xvY2FsQXR0cj4oQSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhTQS0+aXNJbmhlcml0ZWQoKSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5pc0ltcGxpY2l0KCkpOworICAgIFJlY29yZC5wdXNoX2JhY2soQS0+Z2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBhdHRyOjpETExJbXBvcnQ6IHsKICAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8RExMSW1wb3J0QXR0cj4oQSk7CiAgICAgUmVjb3JkLnB1c2hfYmFjayhTQS0+aXNJbmhlcml0ZWQoKSk7CkBAIC01NTEsNiArNTc2LDEzIEBACiAgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5nZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKICAgICBicmVhazsKICAgfQorICBjYXNlIGF0dHI6OkRMTEltcG9ydFN0YXRpY0xvY2FsOiB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PERMTEltcG9ydFN0YXRpY0xvY2FsQXR0cj4oQSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhTQS0+aXNJbmhlcml0ZWQoKSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5pc0ltcGxpY2l0KCkpOworICAgIFJlY29yZC5wdXNoX2JhY2soQS0+Z2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBhdHRyOjpEZXByZWNhdGVkOiB7CiAgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PERlcHJlY2F0ZWRBdHRyPihBKTsKICAgICBSZWNvcmQucHVzaF9iYWNrKFNBLT5pc0luaGVyaXRlZCgpKTsKQEAgLTY5MCw2ICs3MjIsMTUgQEAKICAgICBSZWNvcmQucHVzaF9iYWNrKFNBLT5nZXRGb3JtYXRJZHgoKS5zZXJpYWxpemUoKSk7CiAgICAgYnJlYWs7CiAgIH0KKyAgY2FzZSBhdHRyOjpGb3J0aWZ5U3RkTGliOiB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PEZvcnRpZnlTdGRMaWJBdHRyPihBKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKFNBLT5pc0luaGVyaXRlZCgpKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKEEtPmlzSW1wbGljaXQoKSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5nZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKFNBLT5nZXRUeXBlKCkpOworICAgIFJlY29yZC5wdXNoX2JhY2soU0EtPmdldEZsYWcoKSk7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBhdHRyOjpHTlVJbmxpbmU6IHsKICAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8R05VSW5saW5lQXR0cj4oQSk7CiAgICAgUmVjb3JkLnB1c2hfYmFjayhTQS0+aXNJbmhlcml0ZWQoKSk7CkBAIC0xMDA3LDYgKzEwNDgsMTEgQEAKICAgICBSZWNvcmQucHVzaF9iYWNrKEEtPmdldFNwZWxsaW5nTGlzdEluZGV4KCkpOwogICAgIGJyZWFrOwogICB9CisgIGNhc2UgYXR0cjo6Tm9EZXJlZjogeworICAgIFJlY29yZC5wdXNoX2JhY2soQS0+aXNJbXBsaWNpdCgpKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKEEtPmdldFNwZWxsaW5nTGlzdEluZGV4KCkpOworICAgIGJyZWFrOworICB9CiAgIGNhc2UgYXR0cjo6Tm9EZXN0cm95OiB7CiAgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE5vRGVzdHJveUF0dHI+KEEpOwogICAgIFJlY29yZC5wdXNoX2JhY2soU0EtPmlzSW5oZXJpdGVkKCkpOwpAQCAtMTA3MSw2ICsxMTE3LDEzIEBACiAgICAgICBSZWNvcmQuQWRkU3RyaW5nKFZhbCk7CiAgICAgYnJlYWs7CiAgIH0KKyAgY2FzZSBhdHRyOjpOb1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZzogeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxOb1NwZWN1bGF0aXZlTG9hZEhhcmRlbmluZ0F0dHI+KEEpOworICAgIFJlY29yZC5wdXNoX2JhY2soU0EtPmlzSW5oZXJpdGVkKCkpOworICAgIFJlY29yZC5wdXNoX2JhY2soQS0+aXNJbXBsaWNpdCgpKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKEEtPmdldFNwZWxsaW5nTGlzdEluZGV4KCkpOworICAgIGJyZWFrOworICB9CiAgIGNhc2UgYXR0cjo6Tm9TcGxpdFN0YWNrOiB7CiAgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE5vU3BsaXRTdGFja0F0dHI+KEEpOwogICAgIFJlY29yZC5wdXNoX2JhY2soU0EtPmlzSW5oZXJpdGVkKCkpOwpAQCAtMTE3OCw2ICsxMjMxLDQ4IEBACiAgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5nZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKICAgICBicmVhazsKICAgfQorICBjYXNlIGF0dHI6Ok9TQ29uc3VtZWQ6IHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T1NDb25zdW1lZEF0dHI+KEEpOworICAgIFJlY29yZC5wdXNoX2JhY2soU0EtPmlzSW5oZXJpdGVkKCkpOworICAgIFJlY29yZC5wdXNoX2JhY2soQS0+aXNJbXBsaWNpdCgpKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKEEtPmdldFNwZWxsaW5nTGlzdEluZGV4KCkpOworICAgIGJyZWFrOworICB9CisgIGNhc2UgYXR0cjo6T1NDb25zdW1lc1RoaXM6IHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T1NDb25zdW1lc1RoaXNBdHRyPihBKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKFNBLT5pc0luaGVyaXRlZCgpKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKEEtPmlzSW1wbGljaXQoKSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5nZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIGF0dHI6Ok9TUmV0dXJuc05vdFJldGFpbmVkOiB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE9TUmV0dXJuc05vdFJldGFpbmVkQXR0cj4oQSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhTQS0+aXNJbmhlcml0ZWQoKSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5pc0ltcGxpY2l0KCkpOworICAgIFJlY29yZC5wdXNoX2JhY2soQS0+Z2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgICAgYnJlYWs7CisgIH0KKyAgY2FzZSBhdHRyOjpPU1JldHVybnNSZXRhaW5lZDogeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxPU1JldHVybnNSZXRhaW5lZEF0dHI+KEEpOworICAgIFJlY29yZC5wdXNoX2JhY2soU0EtPmlzSW5oZXJpdGVkKCkpOworICAgIFJlY29yZC5wdXNoX2JhY2soQS0+aXNJbXBsaWNpdCgpKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKEEtPmdldFNwZWxsaW5nTGlzdEluZGV4KCkpOworICAgIGJyZWFrOworICB9CisgIGNhc2UgYXR0cjo6T1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm86IHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T1NSZXR1cm5zUmV0YWluZWRPbk5vblplcm9BdHRyPihBKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKFNBLT5pc0luaGVyaXRlZCgpKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKEEtPmlzSW1wbGljaXQoKSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5nZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKKyAgICBicmVhazsKKyAgfQorICBjYXNlIGF0dHI6Ok9TUmV0dXJuc1JldGFpbmVkT25aZXJvOiB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE9TUmV0dXJuc1JldGFpbmVkT25aZXJvQXR0cj4oQSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhTQS0+aXNJbmhlcml0ZWQoKSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5pc0ltcGxpY2l0KCkpOworICAgIFJlY29yZC5wdXNoX2JhY2soQS0+Z2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBhdHRyOjpPYmpDQm94YWJsZTogewogICAgIFJlY29yZC5wdXNoX2JhY2soQS0+aXNJbXBsaWNpdCgpKTsKICAgICBSZWNvcmQucHVzaF9iYWNrKEEtPmdldFNwZWxsaW5nTGlzdEluZGV4KCkpOwpAQCAtMTIyOCw2ICsxMzIzLDEzIEBACiAgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5nZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKICAgICBicmVhazsKICAgfQorICBjYXNlIGF0dHI6Ok9iakNFeHRlcm5hbGx5UmV0YWluZWQ6IHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8T2JqQ0V4dGVybmFsbHlSZXRhaW5lZEF0dHI+KEEpOworICAgIFJlY29yZC5wdXNoX2JhY2soU0EtPmlzSW5oZXJpdGVkKCkpOworICAgIFJlY29yZC5wdXNoX2JhY2soQS0+aXNJbXBsaWNpdCgpKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKEEtPmdldFNwZWxsaW5nTGlzdEluZGV4KCkpOworICAgIGJyZWFrOworICB9CiAgIGNhc2UgYXR0cjo6T2JqQ0dDOiB7CiAgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE9iakNHQ0F0dHI+KEEpOwogICAgIFJlY29yZC5wdXNoX2JhY2soQS0+aXNJbXBsaWNpdCgpKTsKQEAgLTEyNjcsNiArMTM2OSwxMSBAQAogICAgIFJlY29yZC5wdXNoX2JhY2soQS0+Z2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CiAgICAgYnJlYWs7CiAgIH0KKyAgY2FzZSBhdHRyOjpPYmpDTm9uTGF6eUNsYXNzOiB7CisgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5pc0ltcGxpY2l0KCkpOworICAgIFJlY29yZC5wdXNoX2JhY2soQS0+Z2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBhdHRyOjpPYmpDT3duZXJzaGlwOiB7CiAgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PE9iakNPd25lcnNoaXBBdHRyPihBKTsKICAgICBSZWNvcmQucHVzaF9iYWNrKFNBLT5pc0luaGVyaXRlZCgpKTsKQEAgLTE2NzYsNiArMTc4MywxMyBAQAogICAgICAgUmVjb3JkLkFkZFN0bXQoVmFsKTsKICAgICBicmVhazsKICAgfQorICBjYXNlIGF0dHI6OlNwZWN1bGF0aXZlTG9hZEhhcmRlbmluZzogeworICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxTcGVjdWxhdGl2ZUxvYWRIYXJkZW5pbmdBdHRyPihBKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKFNBLT5pc0luaGVyaXRlZCgpKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKEEtPmlzSW1wbGljaXQoKSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5nZXRTcGVsbGluZ0xpc3RJbmRleCgpKTsKKyAgICBicmVhazsKKyAgfQogICBjYXNlIGF0dHI6OlN0ZENhbGw6IHsKICAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8U3RkQ2FsbEF0dHI+KEEpOwogICAgIFJlY29yZC5wdXNoX2JhY2soU0EtPmlzSW5oZXJpdGVkKCkpOwpAQCAtMTgzNiw2ICsxOTUwLDEzIEBACiBSZWNvcmQucHVzaF9iYWNrKFNBLT5nZXRJbXBsaWNpdFJlYXNvbigpKTsKICAgICBicmVhazsKICAgfQorICBjYXNlIGF0dHI6OlVuaW5pdGlhbGl6ZWQ6IHsKKyAgICBjb25zdCBhdXRvICpTQSA9IGNhc3Q8VW5pbml0aWFsaXplZEF0dHI+KEEpOworICAgIFJlY29yZC5wdXNoX2JhY2soU0EtPmlzSW5oZXJpdGVkKCkpOworICAgIFJlY29yZC5wdXNoX2JhY2soQS0+aXNJbXBsaWNpdCgpKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKEEtPmdldFNwZWxsaW5nTGlzdEluZGV4KCkpOworICAgIGJyZWFrOworICB9CiAgIGNhc2UgYXR0cjo6VW51c2VkOiB7CiAgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFVudXNlZEF0dHI+KEEpOwogICAgIFJlY29yZC5wdXNoX2JhY2soU0EtPmlzSW5oZXJpdGVkKCkpOwpAQCAtMTkyNCw2ICsyMDQ1LDIyIEBACiAgICAgUmVjb3JkLkFkZFN0cmluZyhTQS0+Z2V0QWxpYXNlZSgpKTsKICAgICBicmVhazsKICAgfQorICBjYXNlIGF0dHI6OldlYkFzc2VtYmx5SW1wb3J0TW9kdWxlOiB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFdlYkFzc2VtYmx5SW1wb3J0TW9kdWxlQXR0cj4oQSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhTQS0+aXNJbmhlcml0ZWQoKSk7CisgICAgUmVjb3JkLnB1c2hfYmFjayhBLT5pc0ltcGxpY2l0KCkpOworICAgIFJlY29yZC5wdXNoX2JhY2soQS0+Z2V0U3BlbGxpbmdMaXN0SW5kZXgoKSk7CisgICAgUmVjb3JkLkFkZFN0cmluZyhTQS0+Z2V0SW1wb3J0TW9kdWxlKCkpOworICAgIGJyZWFrOworICB9CisgIGNhc2UgYXR0cjo6V2ViQXNzZW1ibHlJbXBvcnROYW1lOiB7CisgICAgY29uc3QgYXV0byAqU0EgPSBjYXN0PFdlYkFzc2VtYmx5SW1wb3J0TmFtZUF0dHI+KEEpOworICAgIFJlY29yZC5wdXNoX2JhY2soU0EtPmlzSW5oZXJpdGVkKCkpOworICAgIFJlY29yZC5wdXNoX2JhY2soQS0+aXNJbXBsaWNpdCgpKTsKKyAgICBSZWNvcmQucHVzaF9iYWNrKEEtPmdldFNwZWxsaW5nTGlzdEluZGV4KCkpOworICAgIFJlY29yZC5BZGRTdHJpbmcoU0EtPmdldEltcG9ydE5hbWUoKSk7CisgICAgYnJlYWs7CisgIH0KICAgY2FzZSBhdHRyOjpXb3JrR3JvdXBTaXplSGludDogewogICAgIGNvbnN0IGF1dG8gKlNBID0gY2FzdDxXb3JrR3JvdXBTaXplSGludEF0dHI+KEEpOwogICAgIFJlY29yZC5wdXNoX2JhY2soU0EtPmlzSW5oZXJpdGVkKCkpOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9Db250aW51b3VzUmFuZ2VNYXAuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vQ29udGludW91c1JhbmdlTWFwLmgKaW5kZXggYWQ4MjdlMy4uY2U1NzQ4YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9Db250aW51b3VzUmFuZ2VNYXAuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL0NvbnRpbnVvdXNSYW5nZU1hcC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvbnRpbnVvdXNSYW5nZU1hcC5oIC0gTWFwIHdpdGggaW50IHJhbmdlIGFzIGtleSAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL0dsb2JhbE1vZHVsZUluZGV4LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL0dsb2JhbE1vZHVsZUluZGV4LmgKaW5kZXggZDQ3ZmU5NS4uMmY5YTcwZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9HbG9iYWxNb2R1bGVJbmRleC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vR2xvYmFsTW9kdWxlSW5kZXguaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEdsb2JhbE1vZHVsZUluZGV4LmggLSBHbG9iYWwgTW9kdWxlIEluZGV4IC0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNDIsMTEgKzQxLDYgQEAKICAgY2xhc3MgTW9kdWxlRmlsZTsKIH0KIAotdXNpbmcgbGx2bTo6U21hbGxWZWN0b3I7Ci11c2luZyBsbHZtOjpTbWFsbFZlY3RvckltcGw7Ci11c2luZyBsbHZtOjpTdHJpbmdSZWY7Ci11c2luZyBzZXJpYWxpemF0aW9uOjpNb2R1bGVGaWxlOwotCiAvLy8gQSBnbG9iYWwgaW5kZXggZm9yIGEgc2V0IG9mIG1vZHVsZSBmaWxlcywgcHJvdmlkaW5nIGluZm9ybWF0aW9uIGFib3V0CiAvLy8gdGhlIGlkZW50aWZpZXJzIHdpdGhpbiB0aG9zZSBtb2R1bGUgZmlsZXMuCiAvLy8KQEAgLTU5LDYgKzUzLDggQEAKIC8vLyBpbXBvcnRlZCwgYW5kIGNhbiBiZSBxdWVyaWVkIHRvIGRldGVybWluZSB3aGljaCBtb2R1bGVzIHRoZSBjdXJyZW50CiAvLy8gdHJhbnNsYXRpb24gY291bGQgb3Igc2hvdWxkIGxvYWQgdG8gZml4IGEgcHJvYmxlbS4KIGNsYXNzIEdsb2JhbE1vZHVsZUluZGV4IHsKKyAgdXNpbmcgTW9kdWxlRmlsZSA9IHNlcmlhbGl6YXRpb246Ok1vZHVsZUZpbGU7CisKICAgLy8vIEJ1ZmZlciBjb250YWluaW5nIHRoZSBpbmRleCBmaWxlLCB3aGljaCBpcyBsYXppbHkgYWNjZXNzZWQgc28gbG9uZwogICAvLy8gYXMgdGhlIGdsb2JhbCBtb2R1bGUgaW5kZXggaXMgbGl2ZS4KICAgc3RkOjp1bmlxdWVfcHRyPGxsdm06Ok1lbW9yeUJ1ZmZlcj4gQnVmZmVyOwpAQCAtMTQ3LDcgKzE0Myw3IEBACiAgIC8vLyBccmV0dXJucyBBIHBhaXIgY29udGFpbmluZyB0aGUgZ2xvYmFsIG1vZHVsZSBpbmRleCAoaWYgaXQgZXhpc3RzKSBhbmQKICAgLy8vIHRoZSBlcnJvciBjb2RlLgogICBzdGF0aWMgc3RkOjpwYWlyPEdsb2JhbE1vZHVsZUluZGV4ICosIEVycm9yQ29kZT4KLSAgcmVhZEluZGV4KFN0cmluZ1JlZiBQYXRoKTsKKyAgcmVhZEluZGV4KGxsdm06OlN0cmluZ1JlZiBQYXRoKTsKIAogICAvLy8gUmV0dXJucyBhbiBpdGVyYXRvciBmb3IgaWRlbnRpZmllcnMgc3RvcmVkIGluIHRoZSBpbmRleCB0YWJsZS4KICAgLy8vCkBAIC0xNTgsMTIgKzE1NCwxMiBAQAogICAvLy8KICAgLy8vIFxwYXJhbSBNb2R1bGVGaWxlcyBXaWxsIGJlIHBvcHVsYXRlZCB3aXRoIHRoZSBzZXQgb2YgbW9kdWxlIGZpbGVzIHRoYXQKICAgLy8vIGhhdmUgYmVlbiBpbmRleGVkLgotICB2b2lkIGdldEtub3duTW9kdWxlcyhTbWFsbFZlY3RvckltcGw8TW9kdWxlRmlsZSAqPiAmTW9kdWxlRmlsZXMpOworICB2b2lkIGdldEtub3duTW9kdWxlcyhsbHZtOjpTbWFsbFZlY3RvckltcGw8TW9kdWxlRmlsZSAqPiAmTW9kdWxlRmlsZXMpOwogCiAgIC8vLyBSZXRyaWV2ZSB0aGUgc2V0IG9mIG1vZHVsZSBmaWxlcyBvbiB3aGljaCB0aGUgZ2l2ZW4gbW9kdWxlIGZpbGUKICAgLy8vIGRpcmVjdGx5IGRlcGVuZHMuCiAgIHZvaWQgZ2V0TW9kdWxlRGVwZW5kZW5jaWVzKE1vZHVsZUZpbGUgKkZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNtYWxsVmVjdG9ySW1wbDxNb2R1bGVGaWxlICo+ICZEZXBlbmRlbmNpZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpTbWFsbFZlY3RvckltcGw8TW9kdWxlRmlsZSAqPiAmRGVwZW5kZW5jaWVzKTsKIAogICAvLy8gQSBzZXQgb2YgbW9kdWxlIGZpbGVzIGluIHdoaWNoIHdlIGZvdW5kIGEgcmVzdWx0LgogICB0eXBlZGVmIGxsdm06OlNtYWxsUHRyU2V0PE1vZHVsZUZpbGUgKiwgND4gSGl0U2V0OwpAQCAtMTc3LDcgKzE3Myw3IEBACiAgIC8vLyBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIG5hbWUuCiAgIC8vLwogICAvLy8gXHJldHVybnMgdHJ1ZSBpZiB0aGUgaWRlbnRpZmllciBpcyBrbm93biB0byB0aGUgaW5kZXgsIGZhbHNlIG90aGVyd2lzZS4KLSAgYm9vbCBsb29rdXBJZGVudGlmaWVyKFN0cmluZ1JlZiBOYW1lLCBIaXRTZXQgJkhpdHMpOworICBib29sIGxvb2t1cElkZW50aWZpZXIobGx2bTo6U3RyaW5nUmVmIE5hbWUsIEhpdFNldCAmSGl0cyk7CiAKICAgLy8vIE5vdGUgdGhhdCB0aGUgZ2l2ZW4gbW9kdWxlIGZpbGUgaGFzIGJlZW4gbG9hZGVkLgogICAvLy8KQEAgLTIwMCw3ICsxOTYsNyBAQAogICAvLy8gd2hpY2ggdGhlIGdsb2JhbCBpbmRleCB3aWxsIGJlIHdyaXR0ZW4uCiAgIHN0YXRpYyBFcnJvckNvZGUgd3JpdGVJbmRleChGaWxlTWFuYWdlciAmRmlsZU1nciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBDSENvbnRhaW5lclJlYWRlciAmUENIQ29udGFpbmVyUmRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nUmVmIFBhdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6U3RyaW5nUmVmIFBhdGgpOwogfTsKIH0KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9Nb2R1bGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vTW9kdWxlLmgKaW5kZXggZDZlNzhlNi4uNDVmODJkNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9Nb2R1bGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL01vZHVsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1vZHVsZS5oIC0gTW9kdWxlIGRlc2NyaXB0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL01vZHVsZUZpbGVFeHRlbnNpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vTW9kdWxlRmlsZUV4dGVuc2lvbi5oCmluZGV4IGY3MDIxOGUuLjYzNTYyYzAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vTW9kdWxlRmlsZUV4dGVuc2lvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vTW9kdWxlRmlsZUV4dGVuc2lvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBNb2R1bGVGaWxlRXh0ZW5zaW9uLmggLSBNb2R1bGUgRmlsZSBFeHRlbnNpb25zIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9Nb2R1bGVNYW5hZ2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL01vZHVsZU1hbmFnZXIuaAppbmRleCBjZmM5YTJlLi43YmQ3ZGMyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL01vZHVsZU1hbmFnZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL01vZHVsZU1hbmFnZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNb2R1bGVNYW5hZ2VyLmNwcCAtIE1vZHVsZSBNYW5hZ2VyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9QQ0hDb250YWluZXJPcGVyYXRpb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL1BDSENvbnRhaW5lck9wZXJhdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2ZjNGEwCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9QQ0hDb250YWluZXJPcGVyYXRpb25zLmgKQEAgLTAsMCArMSwxMTYgQEAKKy8vPT09LS0tIFNlcmlhbGl6YXRpb24vUENIQ29udGFpbmVyT3BlcmF0aW9ucy5oIC0gUENIIENvbnRhaW5lcnMgLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0NMQU5HX1NFUklBTElaQVRJT05fUENIQ09OVEFJTkVST1BFUkFUSU9OU19ICisjZGVmaW5lIExMVk1fQ0xBTkdfU0VSSUFMSVpBVElPTl9QQ0hDT05UQUlORVJPUEVSQVRJT05TX0gKKworI2luY2x1ZGUgImNsYW5nL0Jhc2ljL01vZHVsZS5oIgorI2luY2x1ZGUgImxsdm0vQURUL1NtYWxsVmVjdG9yLmgiCisjaW5jbHVkZSAibGx2bS9BRFQvU3RyaW5nTWFwLmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L01lbW9yeUJ1ZmZlci5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIGxsdm0geworY2xhc3MgcmF3X3B3cml0ZV9zdHJlYW07Cit9CisKK25hbWVzcGFjZSBjbGFuZyB7CisKK2NsYXNzIEFTVENvbnN1bWVyOworY2xhc3MgQ29kZUdlbk9wdGlvbnM7CitjbGFzcyBEaWFnbm9zdGljc0VuZ2luZTsKK2NsYXNzIENvbXBpbGVySW5zdGFuY2U7CisKK3N0cnVjdCBQQ0hCdWZmZXIgeworICBBU1RGaWxlU2lnbmF0dXJlIFNpZ25hdHVyZTsKKyAgbGx2bTo6U21hbGxWZWN0b3I8Y2hhciwgMD4gRGF0YTsKKyAgYm9vbCBJc0NvbXBsZXRlOworfTsKKworLy8vIFRoaXMgYWJzdHJhY3QgaW50ZXJmYWNlIHByb3ZpZGVzIG9wZXJhdGlvbnMgZm9yIGNyZWF0aW5nCisvLy8gY29udGFpbmVycyBmb3Igc2VyaWFsaXplZCBBU1RzIChwcmVjb21waWxlZCBoZWFkZXJzIGFuZCBjbGFuZworLy8vIG1vZHVsZXMpLgorY2xhc3MgUENIQ29udGFpbmVyV3JpdGVyIHsKK3B1YmxpYzoKKyAgdmlydHVhbCB+UENIQ29udGFpbmVyV3JpdGVyKCkgPSAwOworICB2aXJ0dWFsIGxsdm06OlN0cmluZ1JlZiBnZXRGb3JtYXQoKSBjb25zdCA9IDA7CisKKyAgLy8vIFJldHVybiBhbiBBU1RDb25zdW1lciB0aGF0IGNhbiBiZSBjaGFpbmVkIHdpdGggYQorICAvLy8gUENIR2VuZXJhdG9yIHRoYXQgcHJvZHVjZXMgYSB3cmFwcGVyIGZpbGUgZm9ybWF0IGNvbnRhaW5pbmcgYQorICAvLy8gc2VyaWFsaXplZCBBU1QgYml0c3RyZWFtLgorICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxBU1RDb25zdW1lcj4KKyAgQ3JlYXRlUENIQ29udGFpbmVyR2VuZXJhdG9yKENvbXBpbGVySW5zdGFuY2UgJkNJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJk1haW5GaWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZPdXRwdXRGaWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxsbHZtOjpyYXdfcHdyaXRlX3N0cmVhbT4gT1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNoYXJlZF9wdHI8UENIQnVmZmVyPiBCdWZmZXIpIGNvbnN0ID0gMDsKK307CisKKy8vLyBUaGlzIGFic3RyYWN0IGludGVyZmFjZSBwcm92aWRlcyBvcGVyYXRpb25zIGZvciB1bndyYXBwaW5nCisvLy8gY29udGFpbmVycyBmb3Igc2VyaWFsaXplZCBBU1RzIChwcmVjb21waWxlZCBoZWFkZXJzIGFuZCBjbGFuZworLy8vIG1vZHVsZXMpLgorY2xhc3MgUENIQ29udGFpbmVyUmVhZGVyIHsKK3B1YmxpYzoKKyAgdmlydHVhbCB+UENIQ29udGFpbmVyUmVhZGVyKCkgPSAwOworICAvLy8gRXF1aXZhbGVudCB0byB0aGUgZm9ybWF0IHBhc3NlZCB0byAtZm1vZHVsZS1mb3JtYXQ9CisgIHZpcnR1YWwgbGx2bTo6U3RyaW5nUmVmIGdldEZvcm1hdCgpIGNvbnN0ID0gMDsKKworICAvLy8gUmV0dXJucyB0aGUgc2VyaWFsaXplZCBBU1QgaW5zaWRlIHRoZSBQQ0ggY29udGFpbmVyIEJ1ZmZlci4KKyAgdmlydHVhbCBsbHZtOjpTdHJpbmdSZWYgRXh0cmFjdFBDSChsbHZtOjpNZW1vcnlCdWZmZXJSZWYgQnVmZmVyKSBjb25zdCA9IDA7Cit9OworCisvLy8gSW1wbGVtZW50cyB3cml0ZSBvcGVyYXRpb25zIGZvciBhIHJhdyBwYXNzLXRocm91Z2ggUENIIGNvbnRhaW5lci4KK2NsYXNzIFJhd1BDSENvbnRhaW5lcldyaXRlciA6IHB1YmxpYyBQQ0hDb250YWluZXJXcml0ZXIgeworICBsbHZtOjpTdHJpbmdSZWYgZ2V0Rm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gInJhdyI7IH0KKworICAvLy8gUmV0dXJuIGFuIEFTVENvbnN1bWVyIHRoYXQgY2FuIGJlIGNoYWluZWQgd2l0aCBhCisgIC8vLyBQQ0hHZW5lcmF0b3IgdGhhdCB3cml0ZXMgdGhlIG1vZHVsZSB0byBhIGZsYXQgZmlsZS4KKyAgc3RkOjp1bmlxdWVfcHRyPEFTVENvbnN1bWVyPgorICBDcmVhdGVQQ0hDb250YWluZXJHZW5lcmF0b3IoQ29tcGlsZXJJbnN0YW5jZSAmQ0ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmTWFpbkZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJk91dHB1dEZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPGxsdm06OnJhd19wd3JpdGVfc3RyZWFtPiBPUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2hhcmVkX3B0cjxQQ0hCdWZmZXI+IEJ1ZmZlcikgY29uc3Qgb3ZlcnJpZGU7Cit9OworCisvLy8gSW1wbGVtZW50cyByZWFkIG9wZXJhdGlvbnMgZm9yIGEgcmF3IHBhc3MtdGhyb3VnaCBQQ0ggY29udGFpbmVyLgorY2xhc3MgUmF3UENIQ29udGFpbmVyUmVhZGVyIDogcHVibGljIFBDSENvbnRhaW5lclJlYWRlciB7CisgIGxsdm06OlN0cmluZ1JlZiBnZXRGb3JtYXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAicmF3IjsgfQorCisgIC8vLyBTaW1wbHkgcmV0dXJucyB0aGUgYnVmZmVyIGNvbnRhaW5lZCBpbiBCdWZmZXIuCisgIGxsdm06OlN0cmluZ1JlZiBFeHRyYWN0UENIKGxsdm06Ok1lbW9yeUJ1ZmZlclJlZiBCdWZmZXIpIGNvbnN0IG92ZXJyaWRlOworfTsKKworLy8vIEEgcmVnaXN0cnkgb2YgUENIQ29udGFpbmVyV3JpdGVyIGFuZCAtUmVhZGVyIG9iamVjdHMgZm9yIGRpZmZlcmVudCBmb3JtYXRzLgorY2xhc3MgUENIQ29udGFpbmVyT3BlcmF0aW9ucyB7CisgIGxsdm06OlN0cmluZ01hcDxzdGQ6OnVuaXF1ZV9wdHI8UENIQ29udGFpbmVyV3JpdGVyPj4gV3JpdGVyczsKKyAgbGx2bTo6U3RyaW5nTWFwPHN0ZDo6dW5pcXVlX3B0cjxQQ0hDb250YWluZXJSZWFkZXI+PiBSZWFkZXJzOworcHVibGljOgorICAvLy8gQXV0b21hdGljYWxseSByZWdpc3RlcnMgYSBSYXdQQ0hDb250YWluZXJXcml0ZXIgYW5kCisgIC8vLyBSYXdQQ0hDb250YWluZXJSZWFkZXIuCisgIFBDSENvbnRhaW5lck9wZXJhdGlvbnMoKTsKKyAgdm9pZCByZWdpc3RlcldyaXRlcihzdGQ6OnVuaXF1ZV9wdHI8UENIQ29udGFpbmVyV3JpdGVyPiBXcml0ZXIpIHsKKyAgICBXcml0ZXJzW1dyaXRlci0+Z2V0Rm9ybWF0KCldID0gc3RkOjptb3ZlKFdyaXRlcik7CisgIH0KKyAgdm9pZCByZWdpc3RlclJlYWRlcihzdGQ6OnVuaXF1ZV9wdHI8UENIQ29udGFpbmVyUmVhZGVyPiBSZWFkZXIpIHsKKyAgICBSZWFkZXJzW1JlYWRlci0+Z2V0Rm9ybWF0KCldID0gc3RkOjptb3ZlKFJlYWRlcik7CisgIH0KKyAgY29uc3QgUENIQ29udGFpbmVyV3JpdGVyICpnZXRXcml0ZXJPck51bGwobGx2bTo6U3RyaW5nUmVmIEZvcm1hdCkgeworICAgIHJldHVybiBXcml0ZXJzW0Zvcm1hdF0uZ2V0KCk7CisgIH0KKyAgY29uc3QgUENIQ29udGFpbmVyUmVhZGVyICpnZXRSZWFkZXJPck51bGwobGx2bTo6U3RyaW5nUmVmIEZvcm1hdCkgeworICAgIHJldHVybiBSZWFkZXJzW0Zvcm1hdF0uZ2V0KCk7CisgIH0KKyAgY29uc3QgUENIQ29udGFpbmVyUmVhZGVyICZnZXRSYXdSZWFkZXIoKSB7CisgICAgcmV0dXJuICpnZXRSZWFkZXJPck51bGwoInJhdyIpOworICB9Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9TZXJpYWxpemF0aW9uRGlhZ25vc3RpYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU2VyaWFsaXphdGlvbi9TZXJpYWxpemF0aW9uRGlhZ25vc3RpYy5oCmluZGV4IGQ1MDQyMmEuLjdmYzkzYzEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1NlcmlhbGl6YXRpb24vU2VyaWFsaXphdGlvbkRpYWdub3N0aWMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TZXJpYWxpemF0aW9uL1NlcmlhbGl6YXRpb25EaWFnbm9zdGljLmgKQEAgLTEsMjggKzEsMTQgQEAKIC8vPT09LS0tIFNlcmlhbGl6YXRpb25EaWFnbm9zdGljLmggLSBTZXJpYWxpemF0aW9uIERpYWdub3N0aWNzIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIAogI2lmbmRlZiBMTFZNX0NMQU5HX1NFUklBTElaQVRJT05fU0VSSUFMSVpBVElPTkRJQUdOT1NUSUNfSAogI2RlZmluZSBMTFZNX0NMQU5HX1NFUklBTElaQVRJT05fU0VSSUFMSVpBVElPTkRJQUdOT1NUSUNfSAogCi0jaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpYy5oIgotCi1uYW1lc3BhY2UgY2xhbmcgewotICBuYW1lc3BhY2UgZGlhZyB7Ci0gICAgZW51bSB7Ci0jZGVmaW5lIERJQUcoRU5VTSxGTEFHUyxERUZBVUxUX01BUFBJTkcsREVTQyxHUk9VUCxcCi0gICAgICAgICAgICAgU0ZJTkFFLE5PV0VSUk9SLFNIT1dJTlNZU0hFQURFUixDQVRFR09SWSkgRU5VTSwKLSNkZWZpbmUgU0VSSUFMSVpBVElPTlNUQVJUCi0jaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpY1NlcmlhbGl6YXRpb25LaW5kcy5pbmMiCi0jdW5kZWYgRElBRwotICAgICAgTlVNX0JVSUxUSU5fU0VSSUFMSVpBVElPTl9ESUFHTk9TVElDUwotICAgIH07Ci0gIH0gIC8vIGVuZCBuYW1lc3BhY2UgZGlhZwotfSAgLy8gZW5kIG5hbWVzcGFjZSBjbGFuZworI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0RpYWdub3N0aWNTZXJpYWxpemF0aW9uLmgiCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ2hlY2tlcnMvQnVpbHRpbkNoZWNrZXJSZWdpc3RyYXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NoZWNrZXJzL0J1aWx0aW5DaGVja2VyUmVnaXN0cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFiMzAwMgotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NoZWNrZXJzL0J1aWx0aW5DaGVja2VyUmVnaXN0cmF0aW9uLmgKQEAgLTAsMCArMSw0MCBAQAorLy89PT0tLS0gQ2xhbmdTQUNoZWNrZXJzLmggLSBSZWdpc3RyYXRpb24gZnVuY3Rpb25zIGZvciBDaGVja2VycyAqLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCisvLyBEZWNsYXJlcyB0aGUgcmVnaXN0YXRpb24gZnVuY3Rpb25zIGZvciB0aGUgY2hlY2tlcnMgZGVmaW5lZCBpbgorLy8gbGliY2xhbmdTdGF0aWNBbmFseXplckNoZWNrZXJzLgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9DTEFOR19MSUJfU1RBVElDQU5BTFlaRVJfQ0hFQ0tFUlNfQ0xBTkdTQUNIRUNLRVJTX0gKKyNkZWZpbmUgTExWTV9DTEFOR19MSUJfU1RBVElDQU5BTFlaRVJfQ0hFQ0tFUlNfQ0xBTkdTQUNIRUNLRVJTX0gKKworI2luY2x1ZGUgImNsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvQnVnUmVwb3J0ZXIvQ29tbW9uQnVnQ2F0ZWdvcmllcy5oIgorCituYW1lc3BhY2UgY2xhbmcgeworCitjbGFzcyBMYW5nT3B0aW9uczsKKworbmFtZXNwYWNlIGVudG8geworCitjbGFzcyBDaGVja2VyTWFuYWdlcjsKK2NsYXNzIENoZWNrZXJSZWdpc3RyeTsKKworI2RlZmluZSBHRVRfQ0hFQ0tFUlMKKyNkZWZpbmUgQ0hFQ0tFUihGVUxMTkFNRSwgQ0xBU1MsIEhFTFBURVhULCBET0NfVVJJKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHZvaWQgcmVnaXN0ZXIjI0NMQVNTKENoZWNrZXJNYW5hZ2VyICZtZ3IpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBib29sIHNob3VsZFJlZ2lzdGVyIyNDTEFTUyhjb25zdCBMYW5nT3B0aW9ucyAmTE8pOworI2luY2x1ZGUgImNsYW5nL1N0YXRpY0FuYWx5emVyL0NoZWNrZXJzL0NoZWNrZXJzLmluYyIKKyN1bmRlZiBDSEVDS0VSCisjdW5kZWYgR0VUX0NIRUNLRVJTCisKK30gLy8gZW5kIGVudG8gbmFtZXNwYWNlCisKK30gLy8gZW5kIGNsYW5nIG5hbWVzcGFjZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NoZWNrZXJzL0NoZWNrZXJzLmluYyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NoZWNrZXJzL0NoZWNrZXJzLmluYwppbmRleCA2NzI2ZWE1Li40MTgyZTg0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9DaGVja2Vycy9DaGVja2Vycy5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ2hlY2tlcnMvQ2hlY2tlcnMuaW5jCkBAIC0xLDU1NyArMSwyNTUgQEAKLQotI2lmZGVmIEdFVF9HUk9VUFMKLSNlbmRpZiAvLyBHRVRfR1JPVVBTCi0KKy8vIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZC4gRG8gbm90IGVkaXQgdGhpcyBmaWxlIGJ5IGhhbmQuCiAKICNpZmRlZiBHRVRfUEFDS0FHRVMKLVBBQ0tBR0UoImFscGhhIiwgLTEsIGZhbHNlKQotUEFDS0FHRSgiYWxwaGEuY2xvbmUiLCAtMSwgdHJ1ZSkKLVBBQ0tBR0UoImFscGhhLmNvcmUiLCAtMSwgdHJ1ZSkKLVBBQ0tBR0UoImFscGhhLmNwbHVzcGx1cyIsIC0xLCB0cnVlKQotUEFDS0FHRSgiYWxwaGEuZGVhZGNvZGUiLCAtMSwgdHJ1ZSkKLVBBQ0tBR0UoImFscGhhLm9zeCIsIC0xLCB0cnVlKQotUEFDS0FHRSgiYWxwaGEub3N4LmNvY29hIiwgLTEsIHRydWUpCi1QQUNLQUdFKCJhbHBoYS5vc3guY29jb2EubG9jYWxpemFiaWxpdHkiLCAtMSwgdHJ1ZSkKLVBBQ0tBR0UoImFscGhhLnNlY3VyaXR5IiwgLTEsIHRydWUpCi1QQUNLQUdFKCJhbHBoYS5zZWN1cml0eS50YWludCIsIC0xLCB0cnVlKQotUEFDS0FHRSgiYWxwaGEudW5peCIsIC0xLCB0cnVlKQotUEFDS0FHRSgiYWxwaGEudW5peC5jc3RyaW5nIiwgLTEsIHRydWUpCi1QQUNLQUdFKCJhcGlNb2RlbGluZyIsIC0xLCB0cnVlKQotUEFDS0FHRSgiYXBpTW9kZWxpbmcuZ29vZ2xlIiwgLTEsIHRydWUpCi1QQUNLQUdFKCJjb3JlIiwgLTEsIGZhbHNlKQotUEFDS0FHRSgiY29yZS5idWlsdGluIiwgLTEsIGZhbHNlKQotUEFDS0FHRSgiY29yZS51bmluaXRpYWxpemVkIiwgLTEsIGZhbHNlKQotUEFDS0FHRSgiY3BsdXNwbHVzIiwgLTEsIGZhbHNlKQotUEFDS0FHRSgiZGVhZGNvZGUiLCAtMSwgZmFsc2UpCi1QQUNLQUdFKCJkZWJ1ZyIsIC0xLCBmYWxzZSkKLVBBQ0tBR0UoImxsdm0iLCAtMSwgZmFsc2UpCi1QQUNLQUdFKCJudWxsYWJpbGl0eSIsIC0xLCBmYWxzZSkKLVBBQ0tBR0UoIm9wdGluIiwgLTEsIGZhbHNlKQotUEFDS0FHRSgib3B0aW4uY3BsdXNwbHVzIiwgLTEsIGZhbHNlKQotUEFDS0FHRSgib3B0aW4ubXBpIiwgLTEsIGZhbHNlKQotUEFDS0FHRSgib3B0aW4ub3N4IiwgLTEsIGZhbHNlKQotUEFDS0FHRSgib3B0aW4ub3N4LmNvY29hIiwgLTEsIGZhbHNlKQotUEFDS0FHRSgib3B0aW4ub3N4LmNvY29hLmxvY2FsaXphYmlsaXR5IiwgLTEsIGZhbHNlKQotUEFDS0FHRSgib3B0aW4ucGVyZm9ybWFuY2UiLCAtMSwgZmFsc2UpCi1QQUNLQUdFKCJvcHRpbi5wb3J0YWJpbGl0eSIsIC0xLCBmYWxzZSkKLVBBQ0tBR0UoIm9zeCIsIC0xLCBmYWxzZSkKLVBBQ0tBR0UoIm9zeC5jb2NvYSIsIC0xLCBmYWxzZSkKLVBBQ0tBR0UoIm9zeC5jb3JlRm91bmRhdGlvbiIsIC0xLCBmYWxzZSkKLVBBQ0tBR0UoIm9zeC5jb3JlRm91bmRhdGlvbi5jb250YWluZXJzIiwgLTEsIGZhbHNlKQotUEFDS0FHRSgic2VjdXJpdHkiLCAtMSwgZmFsc2UpCi1QQUNLQUdFKCJzZWN1cml0eS5pbnNlY3VyZUFQSSIsIC0xLCBmYWxzZSkKLVBBQ0tBR0UoInVuaXgiLCAtMSwgZmFsc2UpCi1QQUNLQUdFKCJ1bml4LmNzdHJpbmciLCAtMSwgdHJ1ZSkKLVBBQ0tBR0UoInZhbGlzdCIsIC0xLCBmYWxzZSkKK1BBQ0tBR0UoImFscGhhLnVuaXguY3N0cmluZyIpCitQQUNLQUdFKCJ1bml4IikKK1BBQ0tBR0UoImFscGhhLmNsb25lIikKK1BBQ0tBR0UoImFscGhhIikKK1BBQ0tBR0UoImRlYnVnIikKK1BBQ0tBR0UoIm9zeC5jb3JlRm91bmRhdGlvbiIpCitQQUNLQUdFKCJhcGlNb2RlbGluZyIpCitQQUNLQUdFKCJjb3JlIikKK1BBQ0tBR0UoIm9wdGluIikKK1BBQ0tBR0UoInVuaXguY3N0cmluZyIpCitQQUNLQUdFKCJvcHRpbi5wb3J0YWJpbGl0eSIpCitQQUNLQUdFKCJudWxsYWJpbGl0eSIpCitQQUNLQUdFKCJjb3JlLnVuaW5pdGlhbGl6ZWQiKQorUEFDS0FHRSgiYXBpTW9kZWxpbmcuZ29vZ2xlIikKK1BBQ0tBR0UoImFscGhhLnNlY3VyaXR5LnRhaW50IikKK1BBQ0tBR0UoImFscGhhLmRlYWRjb2RlIikKK1BBQ0tBR0UoImFscGhhLmNwbHVzcGx1cyIpCitQQUNLQUdFKCJhbHBoYS5vc3guY29jb2EiKQorUEFDS0FHRSgib3B0aW4uY3BsdXNwbHVzIikKK1BBQ0tBR0UoIm9wdGluLm9zeC5jb2NvYSIpCitQQUNLQUdFKCJkZWFkY29kZSIpCitQQUNLQUdFKCJvcHRpbi5wZXJmb3JtYW5jZSIpCitQQUNLQUdFKCJjcGx1c3BsdXMiKQorUEFDS0FHRSgib3N4LmNvcmVGb3VuZGF0aW9uLmNvbnRhaW5lcnMiKQorUEFDS0FHRSgib3N4LmNvY29hIikKK1BBQ0tBR0UoImNvcmUuYnVpbHRpbiIpCitQQUNLQUdFKCJhbHBoYS5sbHZtIikKK1BBQ0tBR0UoIm9wdGluLm9zeC5jb2NvYS5sb2NhbGl6YWJpbGl0eSIpCitQQUNLQUdFKCJhbHBoYS5vc3guY29jb2EubG9jYWxpemFiaWxpdHkiKQorUEFDS0FHRSgib3B0aW4ub3N4IikKK1BBQ0tBR0UoInZhbGlzdCIpCitQQUNLQUdFKCJhbHBoYS5vc3giKQorUEFDS0FHRSgiYWxwaGEuc2VjdXJpdHkiKQorUEFDS0FHRSgic2VjdXJpdHkiKQorUEFDS0FHRSgiYWxwaGEudW5peCIpCitQQUNLQUdFKCJvc3giKQorUEFDS0FHRSgibGx2bSIpCitQQUNLQUdFKCJhbHBoYS5jb3JlIikKK1BBQ0tBR0UoInNlY3VyaXR5Lmluc2VjdXJlQVBJIikKK1BBQ0tBR0UoIm9wdGluLm1waSIpCiAjZW5kaWYgLy8gR0VUX1BBQ0tBR0VTCiAKIAogI2lmZGVmIEdFVF9DSEVDS0VSUwotQ0hFQ0tFUigiZGVidWcuQW5hbHlzaXNPcmRlciIsIEFuYWx5c2lzT3JkZXJDaGVja2VyLCBBbmFseXNpc09yZGVyLmNwcCwgIlByaW50IGNhbGxiYWNrcyB0aGF0IGFyZSBjYWxsZWQgZHVyaW5nIGFuYWx5c2lzIGluIG9yZGVyIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiZGVidWcuU3RhdHMiLCBBbmFseXplclN0YXRzQ2hlY2tlciwgQW5hbHl6ZXJTdGF0c0NoZWNrZXIuY3BwLCAiRW1pdCB3YXJuaW5ncyB3aXRoIGFuYWx5emVyIHN0YXRpc3RpY3MiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJhbHBoYS5zZWN1cml0eS5BcnJheUJvdW5kIiwgQXJyYXlCb3VuZENoZWNrZXIsIEFycmF5Qm91bmRDaGVja2VyLmNwcCwgIldhcm4gYWJvdXQgYnVmZmVyIG92ZXJmbG93cyAob2xkZXIgY2hlY2tlcikiLCAtMSwgdHJ1ZSkKLUNIRUNLRVIoImFscGhhLnNlY3VyaXR5LkFycmF5Qm91bmRWMiIsIEFycmF5Qm91bmRDaGVja2VyVjIsIEFycmF5Qm91bmRDaGVja2VyVjIuY3BwLCAiV2FybiBhYm91dCBidWZmZXIgb3ZlcmZsb3dzIChuZXdlciBjaGVja2VyKSIsIC0xLCB0cnVlKQotQ0hFQ0tFUigib3N4LmNvY29hLkF1dG9yZWxlYXNlV3JpdGUiLCBBdXRvcmVsZWFzZVdyaXRlQ2hlY2tlciwgT2JqQ0F1dG9yZWxlYXNlV3JpdGVDaGVja2VyLmNwcCwgIldhcm4gYWJvdXQgcG90ZW50aWFsbHkgY3Jhc2hpbmcgd3JpdGVzIHRvIGF1dG9yZWxlYXNpbmcgb2JqZWN0cyBmcm9tIGRpZmZlcmVudCBhdXRvcmVsZWFzaW5nIHBvb2xzIGluIE9iamVjdGl2ZS1DIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiYWxwaGEudW5peC5CbG9ja0luQ3JpdGljYWxTZWN0aW9uIiwgQmxvY2tJbkNyaXRpY2FsU2VjdGlvbkNoZWNrZXIsIEJsb2NrSW5Dcml0aWNhbFNlY3Rpb25DaGVja2VyLmNwcCwgIkNoZWNrIGZvciBjYWxscyB0byBibG9ja2luZyBmdW5jdGlvbnMgaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbiIsIC0xLCB0cnVlKQotQ0hFQ0tFUigiYWxwaGEuY29yZS5Cb29sQXNzaWdubWVudCIsIEJvb2xBc3NpZ25tZW50Q2hlY2tlciwgQm9vbEFzc2lnbm1lbnRDaGVja2VyLmNwcCwgIldhcm4gYWJvdXQgYXNzaWduaW5nIG5vbi17MCwxfSB2YWx1ZXMgdG8gQm9vbGVhbiB2YXJpYWJsZXMiLCAtMSwgdHJ1ZSkKLUNIRUNLRVIoImNvcmUuYnVpbHRpbi5CdWlsdGluRnVuY3Rpb25zIiwgQnVpbHRpbkZ1bmN0aW9uQ2hlY2tlciwgQnVpbHRpbkZ1bmN0aW9uQ2hlY2tlci5jcHAsICJFdmFsdWF0ZSBjb21waWxlciBidWlsdGluIGZ1bmN0aW9ucyAoZS5nLiwgYWxsb2NhKCkpIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigib3N4LmNvcmVGb3VuZGF0aW9uLkNGRXJyb3IiLCBDRkVycm9yQ2hlY2tlciwgTlNFcnJvckNoZWNrZXIuY3BwLCAiQ2hlY2sgdXNhZ2Ugb2YgQ0ZFcnJvclJlZiogcGFyYW1ldGVycyIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoImRlYnVnLkR1bXBDRkciLCBDRkdEdW1wZXIsIERlYnVnQ2hlY2tlcnMuY3BwLCAiRGlzcGxheSBDb250cm9sLUZsb3cgR3JhcGhzIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiZGVidWcuVmlld0NGRyIsIENGR1ZpZXdlciwgRGVidWdDaGVja2Vycy5jcHAsICJWaWV3IENvbnRyb2wtRmxvdyBHcmFwaHMgdXNpbmcgR3JhcGhWaXoiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJvc3guY29yZUZvdW5kYXRpb24uQ0ZOdW1iZXIiLCBDRk51bWJlckNoZWNrZXIsIEJhc2ljT2JqQ0ZvdW5kYXRpb25DaGVja3MuY3BwLCAiQ2hlY2sgZm9yIHByb3BlciB1c2VzIG9mIENGTnVtYmVyIEFQSXMiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJvc3guY29yZUZvdW5kYXRpb24uQ0ZSZXRhaW5SZWxlYXNlIiwgQ0ZSZXRhaW5SZWxlYXNlQ2hlY2tlciwgQmFzaWNPYmpDRm91bmRhdGlvbkNoZWNrcy5jcHAsICJDaGVjayBmb3IgbnVsbCBhcmd1bWVudHMgdG8gQ0ZSZXRhaW4vQ0ZSZWxlYXNlL0NGTWFrZUNvbGxlY3RhYmxlIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiYWxwaGEudW5peC5jc3RyaW5nLkJ1ZmZlck92ZXJsYXAiLCBDU3RyaW5nQnVmZmVyT3ZlcmxhcCwgQ1N0cmluZ0NoZWNrZXIuY3BwLCAiQ2hlY2tzIGZvciBvdmVybGFwIGluIHR3byBidWZmZXIgYXJndW1lbnRzIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJhbHBoYS51bml4LmNzdHJpbmcuTm90TnVsbFRlcm1pbmF0ZWQiLCBDU3RyaW5nTm90TnVsbFRlcm0sIENTdHJpbmdDaGVja2VyLmNwcCwgIkNoZWNrIGZvciBhcmd1bWVudHMgd2hpY2ggYXJlIG5vdCBudWxsLXRlcm1pbmF0aW5nIHN0cmluZ3MiLCAtMSwgdHJ1ZSkKLUNIRUNLRVIoInVuaXguY3N0cmluZy5OdWxsQXJnIiwgQ1N0cmluZ051bGxBcmcsIENTdHJpbmdDaGVja2VyLmNwcCwgIkNoZWNrIGZvciBudWxsIHBvaW50ZXJzIGJlaW5nIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gQyBzdHJpbmcgZnVuY3Rpb25zIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJhbHBoYS51bml4LmNzdHJpbmcuT3V0T2ZCb3VuZHMiLCBDU3RyaW5nT3V0T2ZCb3VuZHMsIENTdHJpbmdDaGVja2VyLmNwcCwgIkNoZWNrIGZvciBvdXQtb2YtYm91bmRzIGFjY2VzcyBpbiBzdHJpbmcgZnVuY3Rpb25zIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJ1bml4LmNzdHJpbmcuQmFkU2l6ZUFyZyIsIENTdHJpbmdTeW50YXhDaGVja2VyLCBDU3RyaW5nU3ludGF4Q2hlY2tlci5jcHAsICJDaGVjayB0aGUgc2l6ZSBhcmd1bWVudCBwYXNzZWQgaW50byBDIHN0cmluZyBmdW5jdGlvbnMgZm9yIGNvbW1vbiBlcnJvbmVvdXMgcGF0dGVybnMiLCAtMSwgdHJ1ZSkKLUNIRUNLRVIoImNwbHVzcGx1cy5TZWxmQXNzaWdubWVudCIsIENYWFNlbGZBc3NpZ25tZW50Q2hlY2tlciwgQ1hYU2VsZkFzc2lnbm1lbnRDaGVja2VyLmNwcCwgIkNoZWNrcyBDKysgY29weSBhbmQgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9ycyBmb3Igc2VsZiBhc3NpZ25tZW50IiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiY29yZS5DYWxsQW5kTWVzc2FnZSIsIENhbGxBbmRNZXNzYWdlQ2hlY2tlciwgQ2FsbEFuZE1lc3NhZ2VDaGVja2VyLmNwcCwgIkNoZWNrIGZvciBsb2dpY2FsIGVycm9ycyBmb3IgZnVuY3Rpb24gY2FsbHMgYW5kIE9iamVjdGl2ZS1DIG1lc3NhZ2UgZXhwcmVzc2lvbnMgKGUuZy4sIHVuaW5pdGlhbGl6ZWQgYXJndW1lbnRzLCBudWxsIGZ1bmN0aW9uIHBvaW50ZXJzKSIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoImFscGhhLmNvcmUuQ2FsbEFuZE1lc3NhZ2VVbkluaXRSZWZBcmciLCBDYWxsQW5kTWVzc2FnZVVuSW5pdFJlZkFyZywgQ2FsbEFuZE1lc3NhZ2VDaGVja2VyLmNwcCwgIkNoZWNrIGZvciBsb2dpY2FsIGVycm9ycyBmb3IgZnVuY3Rpb24gY2FsbHMgYW5kIE9iamVjdGl2ZS1DIG1lc3NhZ2UgZXhwcmVzc2lvbnMgKGUuZy4sIHVuaW5pdGlhbGl6ZWQgYXJndW1lbnRzLCBudWxsIGZ1bmN0aW9uIHBvaW50ZXJzLCBhbmQgcG9pbnRlciB0byB1bmRlZmluZWQgdmFyaWFibGVzKSIsIC0xLCB0cnVlKQotQ0hFQ0tFUigiZGVidWcuRHVtcENhbGxzIiwgQ2FsbER1bXBlciwgVHJhdmVyc2FsQ2hlY2tlci5jcHAsICJQcmludCBjYWxscyBhcyB0aGV5IGFyZSB0cmF2ZXJzZWQgYnkgdGhlIGVuZ2luZSIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoImRlYnVnLkR1bXBDYWxsR3JhcGgiLCBDYWxsR3JhcGhEdW1wZXIsIERlYnVnQ2hlY2tlcnMuY3BwLCAiRGlzcGxheSBDYWxsIEdyYXBoIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiZGVidWcuVmlld0NhbGxHcmFwaCIsIENhbGxHcmFwaFZpZXdlciwgRGVidWdDaGVja2Vycy5jcHAsICJWaWV3IENhbGwgR3JhcGggdXNpbmcgR3JhcGhWaXoiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJhbHBoYS5jb3JlLkNhc3RTaXplIiwgQ2FzdFNpemVDaGVja2VyLCBDYXN0U2l6ZUNoZWNrZXIuY3BwLCAiQ2hlY2sgd2hlbiBjYXN0aW5nIGEgbWFsbG9jJ2VkIHR5cGUgVCwgd2hldGhlciB0aGUgc2l6ZSBpcyBhIG11bHRpcGxlIG9mIHRoZSBzaXplIG9mIFQiLCAtMSwgdHJ1ZSkKLUNIRUNLRVIoImFscGhhLmNvcmUuQ2FzdFRvU3RydWN0IiwgQ2FzdFRvU3RydWN0Q2hlY2tlciwgQ2FzdFRvU3RydWN0Q2hlY2tlci5jcHAsICJDaGVjayBmb3IgY2FzdCBmcm9tIG5vbi1zdHJ1Y3QgcG9pbnRlciB0byBzdHJ1Y3QgcG9pbnRlciIsIC0xLCB0cnVlKQotQ0hFQ0tFUigiYWxwaGEudW5peC5DaHJvb3QiLCBDaHJvb3RDaGVja2VyLCBDaHJvb3RDaGVja2VyLmNwcCwgIkNoZWNrIGltcHJvcGVyIHVzZSBvZiBjaHJvb3QiLCAtMSwgdHJ1ZSkKLUNIRUNLRVIoIm9zeC5jb2NvYS5DbGFzc1JlbGVhc2UiLCBDbGFzc1JlbGVhc2VDaGVja2VyLCBCYXNpY09iakNGb3VuZGF0aW9uQ2hlY2tzLmNwcCwgIkNoZWNrIGZvciBzZW5kaW5nICdyZXRhaW4nLCAncmVsZWFzZScsIG9yICdhdXRvcmVsZWFzZScgZGlyZWN0bHkgdG8gYSBDbGFzcyIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoImFscGhhLmNsb25lLkNsb25lQ2hlY2tlciIsIENsb25lQ2hlY2tlciwgQ2xvbmVDaGVja2VyLmNwcCwgIlJlcG9ydHMgc2ltaWxhciBwaWVjZXMgb2YgY29kZS4iLCAtMSwgdHJ1ZSkKLUNIRUNLRVIoImRlYnVnLkNvbmZpZ0R1bXBlciIsIENvbmZpZ0R1bXBlciwgRGVidWdDaGVja2Vycy5jcHAsICJEdW1wIGNvbmZpZyB0YWJsZSIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoImFscGhhLmNvcmUuQ29udmVyc2lvbiIsIENvbnZlcnNpb25DaGVja2VyLCBDb252ZXJzaW9uQ2hlY2tlci5jcHAsICJMb3NzIG9mIHNpZ24vcHJlY2lzaW9uIGluIGltcGxpY2l0IGNvbnZlcnNpb25zIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJ2YWxpc3QuQ29weVRvU2VsZiIsIENvcHlUb1NlbGZDaGVja2VyLCBWYWxpc3RDaGVja2VyLmNwcCwgIkNoZWNrIGZvciB2YV9saXN0cyB3aGljaCBhcmUgY29waWVkIG9udG8gaXRzZWxmLiIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoImRlYWRjb2RlLkRlYWRTdG9yZXMiLCBEZWFkU3RvcmVzQ2hlY2tlciwgRGVhZFN0b3Jlc0NoZWNrZXIuY3BwLCAiQ2hlY2sgZm9yIHZhbHVlcyBzdG9yZWQgdG8gdmFyaWFibGVzIHRoYXQgYXJlIG5ldmVyIHJlYWQgYWZ0ZXJ3YXJkcyIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoImFscGhhLmNwbHVzcGx1cy5EZWxldGVXaXRoTm9uVmlydHVhbER0b3IiLCBEZWxldGVXaXRoTm9uVmlydHVhbER0b3JDaGVja2VyLCBEZWxldGVXaXRoTm9uVmlydHVhbER0b3JDaGVja2VyLmNwcCwgIlJlcG9ydHMgZGVzdHJ1Y3Rpb25zIG9mIHBvbHltb3JwaGljIG9iamVjdHMgd2l0aCBhIG5vbi12aXJ0dWFsIGRlc3RydWN0b3IgaW4gdGhlaXIgYmFzZSBjbGFzcyIsIC0xLCB0cnVlKQotQ0hFQ0tFUigiY29yZS5OdWxsRGVyZWZlcmVuY2UiLCBEZXJlZmVyZW5jZUNoZWNrZXIsIERlcmVmZXJlbmNlQ2hlY2tlci5jcHAsICJDaGVjayBmb3IgZGVyZWZlcmVuY2VzIG9mIG51bGwgcG9pbnRlcnMiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJhbHBoYS5vc3guY29jb2EuRGlyZWN0SXZhckFzc2lnbm1lbnQiLCBEaXJlY3RJdmFyQXNzaWdubWVudCwgRGlyZWN0SXZhckFzc2lnbm1lbnQuY3BwLCAiQ2hlY2sgZm9yIGRpcmVjdCBhc3NpZ25tZW50cyB0byBpbnN0YW5jZSB2YXJpYWJsZXMiLCAtMSwgdHJ1ZSkKLUNIRUNLRVIoImFscGhhLm9zeC5jb2NvYS5EaXJlY3RJdmFyQXNzaWdubWVudEZvckFubm90YXRlZEZ1bmN0aW9ucyIsIERpcmVjdEl2YXJBc3NpZ25tZW50Rm9yQW5ub3RhdGVkRnVuY3Rpb25zLCBEaXJlY3RJdmFyQXNzaWdubWVudC5jcHAsICJDaGVjayBmb3IgZGlyZWN0IGFzc2lnbm1lbnRzIHRvIGluc3RhbmNlIHZhcmlhYmxlcyBpbiB0aGUgbWV0aG9kcyBhbm5vdGF0ZWQgd2l0aCBvYmpjX25vX2RpcmVjdF9pbnN0YW5jZV92YXJpYWJsZV9hc3NpZ25tZW50IiwgLTEsIHRydWUpCi1DSEVDS0VSKCJjb3JlLkRpdmlkZVplcm8iLCBEaXZaZXJvQ2hlY2tlciwgRGl2WmVyb0NoZWNrZXIuY3BwLCAiQ2hlY2sgZm9yIGRpdmlzaW9uIGJ5IHplcm8iLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJkZWJ1Zy5EdW1wRG9taW5hdG9ycyIsIERvbWluYXRvcnNUcmVlRHVtcGVyLCBEZWJ1Z0NoZWNrZXJzLmNwcCwgIlByaW50IHRoZSBkb21pbmFuY2UgdHJlZSBmb3IgYSBnaXZlbiBDRkciLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJhbHBoYS5jb3JlLkR5bmFtaWNUeXBlQ2hlY2tlciIsIER5bmFtaWNUeXBlQ2hlY2tlciwgRHluYW1pY1R5cGVDaGVja2VyLmNwcCwgIkNoZWNrIGZvciBjYXNlcyB3aGVyZSB0aGUgZHluYW1pYyBhbmQgdGhlIHN0YXRpYyB0eXBlIG9mIGFuIG9iamVjdCBhcmUgdW5yZWxhdGVkLiIsIC0xLCB0cnVlKQotQ0hFQ0tFUigiY29yZS5EeW5hbWljVHlwZVByb3BhZ2F0aW9uIiwgRHluYW1pY1R5cGVQcm9wYWdhdGlvbiwgRHluYW1pY1R5cGVQcm9wYWdhdGlvbi5jcHAsICJHZW5lcmF0ZSBkeW5hbWljIHR5cGUgaW5mb3JtYXRpb24iLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJvcHRpbi5vc3guY29jb2EubG9jYWxpemFiaWxpdHkuRW1wdHlMb2NhbGl6YXRpb25Db250ZXh0Q2hlY2tlciIsIEVtcHR5TG9jYWxpemF0aW9uQ29udGV4dENoZWNrZXIsIExvY2FsaXphdGlvbkNoZWNrZXIuY3BwLCAiQ2hlY2sgdGhhdCBOU0xvY2FsaXplZFN0cmluZyBtYWNyb3MgaW5jbHVkZSBhIGNvbW1lbnQgZm9yIGNvbnRleHQiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJkZWJ1Zy5WaWV3RXhwbG9kZWRHcmFwaCIsIEV4cGxvZGVkR3JhcGhWaWV3ZXIsIERlYnVnQ2hlY2tlcnMuY3BwLCAiVmlldyBFeHBsb2RlZCBHcmFwaHMgdXNpbmcgR3JhcGhWaXoiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJkZWJ1Zy5FeHBySW5zcGVjdGlvbiIsIEV4cHJJbnNwZWN0aW9uQ2hlY2tlciwgRXhwckluc3BlY3Rpb25DaGVja2VyLmNwcCwgIkNoZWNrIHRoZSBhbmFseXplcidzIHVuZGVyc3RhbmRpbmcgb2YgZXhwcmVzc2lvbnMiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJhbHBoYS5jb3JlLkZpeGVkQWRkciIsIEZpeGVkQWRkcmVzc0NoZWNrZXIsIEZpeGVkQWRkcmVzc0NoZWNrZXIuY3BwLCAiQ2hlY2sgZm9yIGFzc2lnbm1lbnQgb2YgYSBmaXhlZCBhZGRyZXNzIHRvIGEgcG9pbnRlciIsIC0xLCB0cnVlKQotQ0hFQ0tFUigic2VjdXJpdHkuRmxvYXRMb29wQ291bnRlciIsIEZsb2F0TG9vcENvdW50ZXIsIENoZWNrU2VjdXJpdHlTeW50YXhPbmx5LmNwcCwgIldhcm4gb24gdXNpbmcgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSBhcyBhIGxvb3AgY291bnRlciAoQ0VSVDogRkxQMzAtQywgRkxQMzAtQ1BQKSIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoIm9wdGluLnBlcmZvcm1hbmNlLkdDREFudGlwYXR0ZXJuIiwgR0NEQW50aXBhdHRlcm4sIEdDREFudGlwYXR0ZXJuQ2hlY2tlci5jcHAsICJDaGVjayBmb3IgcGVyZm9ybWFuY2UgYW50aS1wYXR0ZXJucyB3aGVuIHVzaW5nIEdyYW5kIENlbnRyYWwgRGlzcGF0Y2giLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJhcGlNb2RlbGluZy5nb29nbGUuR1Rlc3QiLCBHVGVzdENoZWNrZXIsIEdUZXN0Q2hlY2tlci5jcHAsICJNb2RlbCBndGVzdCBhc3NlcnRpb24gQVBJcyIsIC0xLCB0cnVlKQotQ0hFQ0tFUigiYWxwaGEuc2VjdXJpdHkudGFpbnQuVGFpbnRQcm9wYWdhdGlvbiIsIEdlbmVyaWNUYWludENoZWNrZXIsIEdlbmVyaWNUYWludENoZWNrZXIuY3BwLCAiR2VuZXJhdGUgdGFpbnQgaW5mb3JtYXRpb24gdXNlZCBieSBvdGhlciBjaGVja2VycyIsIC0xLCB0cnVlKQotQ0hFQ0tFUigiYWxwaGEuY29yZS5JZGVudGljYWxFeHByIiwgSWRlbnRpY2FsRXhwckNoZWNrZXIsIElkZW50aWNhbEV4cHJDaGVja2VyLmNwcCwgIldhcm4gYWJvdXQgdW5pbnRlbmRlZCB1c2Ugb2YgaWRlbnRpY2FsIGV4cHJlc3Npb25zIGluIG9wZXJhdG9ycyIsIC0xLCB0cnVlKQotQ0hFQ0tFUigiY3BsdXNwbHVzLklubmVyUG9pbnRlciIsIElubmVyUG9pbnRlckNoZWNrZXIsIElubmVyUG9pbnRlckNoZWNrZXIuY3BwLCAiQ2hlY2sgZm9yIGlubmVyIHBvaW50ZXJzIG9mIEMrKyBjb250YWluZXJzIHVzZWQgYWZ0ZXIgcmUvZGVhbGxvY2F0aW9uIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiYWxwaGEub3N4LmNvY29hLkluc3RhbmNlVmFyaWFibGVJbnZhbGlkYXRpb24iLCBJbnN0YW5jZVZhcmlhYmxlSW52YWxpZGF0aW9uLCBJdmFySW52YWxpZGF0aW9uQ2hlY2tlci5jcHAsICJDaGVjayB0aGF0IHRoZSBpbnZhbGlkYXRhYmxlIGluc3RhbmNlIHZhcmlhYmxlcyBhcmUgaW52YWxpZGF0ZWQgaW4gdGhlIG1ldGhvZHMgYW5ub3RhdGVkIHdpdGggb2JqY19pbnN0YW5jZV92YXJpYWJsZV9pbnZhbGlkYXRvciIsIC0xLCB0cnVlKQotQ0hFQ0tFUigiYWxwaGEuY3BsdXNwbHVzLkludmFsaWRhdGVkSXRlcmF0b3IiLCBJbnZhbGlkYXRlZEl0ZXJhdG9yQ2hlY2tlciwgSXRlcmF0b3JDaGVja2VyLmNwcCwgIkNoZWNrIGZvciB1c2Ugb2YgaW52YWxpZGF0ZWQgaXRlcmF0b3JzIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJhbHBoYS5jcGx1c3BsdXMuSXRlcmF0b3JSYW5nZSIsIEl0ZXJhdG9yUmFuZ2VDaGVja2VyLCBJdGVyYXRvckNoZWNrZXIuY3BwLCAiQ2hlY2sgZm9yIGl0ZXJhdG9ycyB1c2VkIG91dHNpZGUgdGhlaXIgdmFsaWQgcmFuZ2VzIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJsbHZtLkNvbnZlbnRpb25zIiwgTExWTUNvbnZlbnRpb25zQ2hlY2tlciwgTExWTUNvbnZlbnRpb25zQ2hlY2tlci5jcHAsICJDaGVjayBjb2RlIGZvciBMTFZNIGNvZGViYXNlIGNvbnZlbnRpb25zIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiZGVidWcuRHVtcExpdmVWYXJzIiwgTGl2ZVZhcmlhYmxlc0R1bXBlciwgRGVidWdDaGVja2Vycy5jcHAsICJQcmludCByZXN1bHRzIG9mIGxpdmUgdmFyaWFibGUgYW5hbHlzaXMiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJvcHRpbi5tcGkuTVBJLUNoZWNrZXIiLCBNUElDaGVja2VyLCBNUElDaGVja2VyLmNwcCwgIkNoZWNrcyBNUEkgY29kZSIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoIm9zeC5TZWNLZXljaGFpbkFQSSIsIE1hY09TS2V5Y2hhaW5BUElDaGVja2VyLCBNYWNPU0tleWNoYWluQVBJQ2hlY2tlci5jcHAsICJDaGVjayBmb3IgcHJvcGVyIHVzZXMgb2YgU2VjdXJlIEtleWNoYWluIEFQSXMiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJvc3guQVBJIiwgTWFjT1NYQVBJQ2hlY2tlciwgTWFjT1NYQVBJQ2hlY2tlci5jcHAsICJDaGVjayBmb3IgcHJvcGVyIHVzZXMgb2YgdmFyaW91cyBBcHBsZSBBUElzIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigidW5peC5NYWxsb2MiLCBNYWxsb2NDaGVja2VyLCBNYWxsb2NDaGVja2VyLmNwcCwgIkNoZWNrIGZvciBtZW1vcnkgbGVha3MsIGRvdWJsZSBmcmVlLCBhbmQgdXNlLWFmdGVyLWZyZWUgcHJvYmxlbXMuIFRyYWNlcyBtZW1vcnkgbWFuYWdlZCBieSBtYWxsb2MoKS9mcmVlKCkuIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiYWxwaGEuc2VjdXJpdHkuTWFsbG9jT3ZlcmZsb3ciLCBNYWxsb2NPdmVyZmxvd1NlY3VyaXR5Q2hlY2tlciwgTWFsbG9jT3ZlcmZsb3dTZWN1cml0eUNoZWNrZXIuY3BwLCAiQ2hlY2sgZm9yIG92ZXJmbG93cyBpbiB0aGUgYXJndW1lbnRzIHRvIG1hbGxvYygpIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJ1bml4Lk1hbGxvY1NpemVvZiIsIE1hbGxvY1NpemVvZkNoZWNrZXIsIE1hbGxvY1NpemVvZkNoZWNrZXIuY3BwLCAiQ2hlY2sgZm9yIGR1YmlvdXMgbWFsbG9jIGFyZ3VtZW50cyBpbnZvbHZpbmcgc2l6ZW9mIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigidW5peC5NaXNtYXRjaGVkRGVhbGxvY2F0b3IiLCBNaXNtYXRjaGVkRGVhbGxvY2F0b3JDaGVja2VyLCBNYWxsb2NDaGVja2VyLmNwcCwgIkNoZWNrIGZvciBtaXNtYXRjaGVkIGRlYWxsb2NhdG9ycy4iLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJhbHBoYS5jcGx1c3BsdXMuTWlzbWF0Y2hlZEl0ZXJhdG9yIiwgTWlzbWF0Y2hlZEl0ZXJhdG9yQ2hlY2tlciwgSXRlcmF0b3JDaGVja2VyLmNwcCwgIkNoZWNrIGZvciB1c2Ugb2YgaXRlcmF0b3JzIG9mIGRpZmZlcmVudCBjb250YWluZXJzIHdoZXJlIGl0ZXJhdG9ycyBvZiB0aGUgc2FtZSBjb250YWluZXIgYXJlIGV4cGVjdGVkIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJhbHBoYS5vc3guY29jb2EuTWlzc2luZ0ludmFsaWRhdGlvbk1ldGhvZCIsIE1pc3NpbmdJbnZhbGlkYXRpb25NZXRob2QsIEl2YXJJbnZhbGlkYXRpb25DaGVja2VyLmNwcCwgIkNoZWNrIHRoYXQgdGhlIGludmFsaWRhdGlvbiBtZXRob2RzIGFyZSBwcmVzZW50IGluIGNsYXNzZXMgdGhhdCBjb250YWluIGludmFsaWRhdGFibGUgaW5zdGFuY2UgdmFyaWFibGVzIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJhbHBoYS5jcGx1c3BsdXMuTWlzdXNlZE1vdmVkT2JqZWN0IiwgTWlzdXNlZE1vdmVkT2JqZWN0Q2hlY2tlciwgTWlzdXNlZE1vdmVkT2JqZWN0Q2hlY2tlci5jcHAsICJNZXRob2QgY2FsbHMgb24gYSBtb3ZlZC1mcm9tIG9iamVjdCBhbmQgY29weWluZyBhIG1vdmVkLWZyb20gb2JqZWN0IHdpbGwgYmUgcmVwb3J0ZWQiLCAtMSwgdHJ1ZSkKLUNIRUNLRVIoImFscGhhLnNlY3VyaXR5Lk1tYXBXcml0ZUV4ZWMiLCBNbWFwV3JpdGVFeGVjQ2hlY2tlciwgTW1hcFdyaXRlRXhlY0NoZWNrZXIuY3BwLCAiV2FybiBvbiBtbWFwKCkgY2FsbHMgdGhhdCBhcmUgYm90aCB3cml0YWJsZSBhbmQgZXhlY3V0YWJsZSIsIC0xLCB0cnVlKQotQ0hFQ0tFUigib3N4LmNvY29hLk5TQXV0b3JlbGVhc2VQb29sIiwgTlNBdXRvcmVsZWFzZVBvb2xDaGVja2VyLCBOU0F1dG9yZWxlYXNlUG9vbENoZWNrZXIuY3BwLCAiV2FybiBmb3Igc3Vib3B0aW1hbCB1c2VzIG9mIE5TQXV0b3JlbGVhc2VQb29sIGluIE9iamVjdGl2ZS1DIEdDIG1vZGUiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJvc3guY29jb2EuTlNFcnJvciIsIE5TRXJyb3JDaGVja2VyLCBOU0Vycm9yQ2hlY2tlci5jcHAsICJDaGVjayB1c2FnZSBvZiBOU0Vycm9yKiogcGFyYW1ldGVycyIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoImNwbHVzcGx1cy5OZXdEZWxldGUiLCBOZXdEZWxldGVDaGVja2VyLCBNYWxsb2NDaGVja2VyLmNwcCwgIkNoZWNrIGZvciBkb3VibGUtZnJlZSBhbmQgdXNlLWFmdGVyLWZyZWUgcHJvYmxlbXMuIFRyYWNlcyBtZW1vcnkgbWFuYWdlZCBieSBuZXcvZGVsZXRlLiIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoImNwbHVzcGx1cy5OZXdEZWxldGVMZWFrcyIsIE5ld0RlbGV0ZUxlYWtzQ2hlY2tlciwgTWFsbG9jQ2hlY2tlci5jcHAsICJDaGVjayBmb3IgbWVtb3J5IGxlYWtzLiBUcmFjZXMgbWVtb3J5IG1hbmFnZWQgYnkgbmV3L2RlbGV0ZS4iLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJvc3guY29jb2EuTmlsQXJnIiwgTmlsQXJnQ2hlY2tlciwgQmFzaWNPYmpDRm91bmRhdGlvbkNoZWNrcy5jcHAsICJDaGVjayBmb3IgcHJvaGliaXRlZCBuaWwgYXJndW1lbnRzIHRvIE9iakMgbWV0aG9kIGNhbGxzIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiY29yZS5idWlsdGluLk5vUmV0dXJuRnVuY3Rpb25zIiwgTm9SZXR1cm5GdW5jdGlvbkNoZWNrZXIsIE5vUmV0dXJuRnVuY3Rpb25DaGVja2VyLmNwcCwgIkV2YWx1YXRlIFwicGFuaWNcIiBmdW5jdGlvbnMgdGhhdCBhcmUga25vd24gdG8gbm90IHJldHVybiB0byB0aGUgY2FsbGVyIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigib3B0aW4ub3N4LmNvY29hLmxvY2FsaXphYmlsaXR5Lk5vbkxvY2FsaXplZFN0cmluZ0NoZWNrZXIiLCBOb25Mb2NhbGl6ZWRTdHJpbmdDaGVja2VyLCBMb2NhbGl6YXRpb25DaGVja2VyLmNwcCwgIldhcm5zIGFib3V0IHVzZXMgb2Ygbm9uLWxvY2FsaXplZCBOU1N0cmluZ3MgcGFzc2VkIHRvIFVJIG1ldGhvZHMgZXhwZWN0aW5nIGxvY2FsaXplZCBOU1N0cmluZ3MiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJjb3JlLk5vbk51bGxQYXJhbUNoZWNrZXIiLCBOb25OdWxsUGFyYW1DaGVja2VyLCBOb25OdWxsUGFyYW1DaGVja2VyLmNwcCwgIkNoZWNrIGZvciBudWxsIHBvaW50ZXJzIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gYSBmdW5jdGlvbiB3aG9zZSBhcmd1bWVudHMgYXJlIHJlZmVyZW5jZXMgb3IgbWFya2VkIHdpdGggdGhlICdub25udWxsJyBhdHRyaWJ1dGUiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJjb3JlLk5vbm5pbFN0cmluZ0NvbnN0YW50cyIsIE5vbm51bGxHbG9iYWxDb25zdGFudHNDaGVja2VyLCBOb25pbFN0cmluZ0NvbnN0YW50c0NoZWNrZXIuY3BwLCAiQXNzdW1lIHRoYXQgY29uc3Qgc3RyaW5nLWxpa2UgZ2xvYmFscyBhcmUgbm9uLW51bGwiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJudWxsYWJpbGl0eS5OdWxsUGFzc2VkVG9Ob25udWxsIiwgTnVsbFBhc3NlZFRvTm9ubnVsbENoZWNrZXIsIE51bGxhYmlsaXR5Q2hlY2tlci5jcHAsICJXYXJucyB3aGVuIGEgbnVsbCBwb2ludGVyIGlzIHBhc3NlZCB0byBhIHBvaW50ZXIgd2hpY2ggaGFzIGEgX05vbm51bGwgdHlwZS4iLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJudWxsYWJpbGl0eS5OdWxsUmV0dXJuZWRGcm9tTm9ubnVsbCIsIE51bGxSZXR1cm5lZEZyb21Ob25udWxsQ2hlY2tlciwgTnVsbGFiaWxpdHlDaGVja2VyLmNwcCwgIldhcm5zIHdoZW4gYSBudWxsIHBvaW50ZXIgaXMgcmV0dXJuZWQgZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFzIF9Ob25udWxsIHJldHVybiB0eXBlLiIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoIm51bGxhYmlsaXR5Lk51bGxhYmxlRGVyZWZlcmVuY2VkIiwgTnVsbGFibGVEZXJlZmVyZW5jZWRDaGVja2VyLCBOdWxsYWJpbGl0eUNoZWNrZXIuY3BwLCAiV2FybnMgd2hlbiBhIG51bGxhYmxlIHBvaW50ZXIgaXMgZGVyZWZlcmVuY2VkLiIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoIm51bGxhYmlsaXR5Lk51bGxhYmxlUGFzc2VkVG9Ob25udWxsIiwgTnVsbGFibGVQYXNzZWRUb05vbm51bGxDaGVja2VyLCBOdWxsYWJpbGl0eUNoZWNrZXIuY3BwLCAiV2FybnMgd2hlbiBhIG51bGxhYmxlIHBvaW50ZXIgaXMgcGFzc2VkIHRvIGEgcG9pbnRlciB3aGljaCBoYXMgYSBfTm9ubnVsbCB0eXBlLiIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoIm51bGxhYmlsaXR5Lk51bGxhYmxlUmV0dXJuZWRGcm9tTm9ubnVsbCIsIE51bGxhYmxlUmV0dXJuZWRGcm9tTm9ubnVsbENoZWNrZXIsIE51bGxhYmlsaXR5Q2hlY2tlci5jcHAsICJXYXJucyB3aGVuIGEgbnVsbGFibGUgcG9pbnRlciBpcyByZXR1cm5lZCBmcm9tIGEgZnVuY3Rpb24gdGhhdCBoYXMgX05vbm51bGwgcmV0dXJuIHR5cGUuIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigib3N4Lk51bWJlck9iamVjdENvbnZlcnNpb24iLCBOdW1iZXJPYmplY3RDb252ZXJzaW9uQ2hlY2tlciwgTnVtYmVyT2JqZWN0Q29udmVyc2lvbkNoZWNrZXIuY3BwLCAiQ2hlY2sgZm9yIGVycm9uZW91cyBjb252ZXJzaW9ucyBvZiBvYmplY3RzIHJlcHJlc2VudGluZyBudW1iZXJzIGludG8gbnVtYmVycyIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoIm9zeC5jb2NvYS5BdFN5bmMiLCBPYmpDQXRTeW5jQ2hlY2tlciwgT2JqQ0F0U3luY0NoZWNrZXIuY3BwLCAiQ2hlY2sgZm9yIG5pbCBwb2ludGVycyB1c2VkIGFzIG11dGV4ZXMgZm9yIEBzeW5jaHJvbml6ZWQiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJvc3guY29yZUZvdW5kYXRpb24uY29udGFpbmVycy5Qb2ludGVyU2l6ZWRWYWx1ZXMiLCBPYmpDQ29udGFpbmVyc0FTVENoZWNrZXIsIE9iakNDb250YWluZXJzQVNUQ2hlY2tlci5jcHAsICJXYXJucyBpZiAnQ0ZBcnJheScsICdDRkRpY3Rpb25hcnknLCAnQ0ZTZXQnIGFyZSBjcmVhdGVkIHdpdGggbm9uLXBvaW50ZXItc2l6ZSB2YWx1ZXMiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJvc3guY29yZUZvdW5kYXRpb24uY29udGFpbmVycy5PdXRPZkJvdW5kcyIsIE9iakNDb250YWluZXJzQ2hlY2tlciwgT2JqQ0NvbnRhaW5lcnNDaGVja2VyLmNwcCwgIkNoZWNrcyBmb3IgaW5kZXggb3V0LW9mLWJvdW5kcyB3aGVuIHVzaW5nICdDRkFycmF5JyBBUEkiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJvc3guY29jb2EuRGVhbGxvYyIsIE9iakNEZWFsbG9jQ2hlY2tlciwgQ2hlY2tPYmpDRGVhbGxvYy5jcHAsICJXYXJuIGFib3V0IE9iamVjdGl2ZS1DIGNsYXNzZXMgdGhhdCBsYWNrIGEgY29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiAtZGVhbGxvYyIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoIm9zeC5jb2NvYS5PYmpDR2VuZXJpY3MiLCBPYmpDR2VuZXJpY3NDaGVja2VyLCBEeW5hbWljVHlwZVByb3BhZ2F0aW9uLmNwcCwgIkNoZWNrIGZvciB0eXBlIGVycm9ycyB3aGVuIHVzaW5nIE9iamVjdGl2ZS1DIGdlbmVyaWNzIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigib3N4LmNvY29hLkxvb3BzIiwgT2JqQ0xvb3BDaGVja2VyLCBCYXNpY09iakNGb3VuZGF0aW9uQ2hlY2tzLmNwcCwgIkltcHJvdmVkIG1vZGVsaW5nIG9mIGxvb3BzIHVzaW5nIENvY29hIGNvbGxlY3Rpb24gdHlwZXMiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJvc3guY29jb2EuSW5jb21wYXRpYmxlTWV0aG9kVHlwZXMiLCBPYmpDTWV0aFNpZ3NDaGVja2VyLCBDaGVja09iakNJbnN0TWV0aFNpZ25hdHVyZS5jcHAsICJXYXJuIGFib3V0IE9iamVjdGl2ZS1DIG1ldGhvZCBzaWduYXR1cmVzIHdpdGggdHlwZSBpbmNvbXBhdGliaWxpdGllcyIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoIm9zeC5jb2NvYS5Ob25OaWxSZXR1cm5WYWx1ZSIsIE9iakNOb25OaWxSZXR1cm5WYWx1ZUNoZWNrZXIsIEJhc2ljT2JqQ0ZvdW5kYXRpb25DaGVja3MuY3BwLCAiTW9kZWwgdGhlIEFQSXMgdGhhdCBhcmUgZ3VhcmFudGVlZCB0byByZXR1cm4gYSBub24tbmlsIHZhbHVlIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigib3N4Lk9iakNQcm9wZXJ0eSIsIE9iakNQcm9wZXJ0eUNoZWNrZXIsIE9iakNQcm9wZXJ0eUNoZWNrZXIuY3BwLCAiQ2hlY2sgZm9yIHByb3BlciB1c2VzIG9mIE9iamVjdGl2ZS1DIHByb3BlcnRpZXMiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJvc3guY29jb2EuU2VsZkluaXQiLCBPYmpDU2VsZkluaXRDaGVja2VyLCBPYmpDU2VsZkluaXRDaGVja2VyLmNwcCwgIkNoZWNrIHRoYXQgJ3NlbGYnIGlzIHByb3Blcmx5IGluaXRpYWxpemVkIGluc2lkZSBhbiBpbml0aWFsaXplciBtZXRob2QiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJvc3guY29jb2EuTWlzc2luZ1N1cGVyQ2FsbCIsIE9iakNTdXBlckNhbGxDaGVja2VyLCBPYmpDTWlzc2luZ1N1cGVyQ2FsbENoZWNrZXIuY3BwLCAiV2FybiBhYm91dCBPYmplY3RpdmUtQyBtZXRob2RzIHRoYXQgbGFjayBhIG5lY2Vzc2FyeSBjYWxsIHRvIHN1cGVyIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigib3N4LmNvY29hLlN1cGVyRGVhbGxvYyIsIE9iakNTdXBlckRlYWxsb2NDaGVja2VyLCBPYmpDU3VwZXJEZWFsbG9jQ2hlY2tlci5jcHAsICJXYXJuIGFib3V0IGltcHJvcGVyIHVzZSBvZiAnW3N1cGVyIGRlYWxsb2NdJyBpbiBPYmplY3RpdmUtQyIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoIm9zeC5jb2NvYS5VbnVzZWRJdmFycyIsIE9iakNVbnVzZWRJdmFyc0NoZWNrZXIsIE9iakNVbnVzZWRJVmFyc0NoZWNrZXIuY3BwLCAiV2FybiBhYm91dCBwcml2YXRlIGl2YXJzIHRoYXQgYXJlIG5ldmVyIHVzZWQiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJvcHRpbi5wZXJmb3JtYW5jZS5QYWRkaW5nIiwgUGFkZGluZ0NoZWNrZXIsIFBhZGRpbmdDaGVja2VyLmNwcCwgIkNoZWNrIGZvciBleGNlc3NpdmVseSBwYWRkZWQgc3RydWN0cy4iLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJhbHBoYS5vc3guY29jb2EubG9jYWxpemFiaWxpdHkuUGx1cmFsTWlzdXNlQ2hlY2tlciIsIFBsdXJhbE1pc3VzZUNoZWNrZXIsIExvY2FsaXphdGlvbkNoZWNrZXIuY3BwLCAiV2FybnMgYWdhaW5zdCB1c2luZyBvbmUgdnMuIG1hbnkgcGx1cmFsIHBhdHRlcm4gaW4gY29kZSB3aGVuIGdlbmVyYXRpbmcgbG9jYWxpemVkIHN0cmluZ3MuIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJhbHBoYS5jb3JlLlBvaW50ZXJBcml0aG0iLCBQb2ludGVyQXJpdGhDaGVja2VyLCBQb2ludGVyQXJpdGhDaGVja2VyLCAiQ2hlY2sgZm9yIHBvaW50ZXIgYXJpdGhtZXRpYyBvbiBsb2NhdGlvbnMgb3RoZXIgdGhhbiBhcnJheSBlbGVtZW50cyIsIC0xLCB0cnVlKQotQ0hFQ0tFUigiYWxwaGEuY29yZS5Qb2ludGVyU3ViIiwgUG9pbnRlclN1YkNoZWNrZXIsIFBvaW50ZXJTdWJDaGVja2VyLCAiQ2hlY2sgZm9yIHBvaW50ZXIgc3VidHJhY3Rpb25zIG9uIHR3byBwb2ludGVycyBwb2ludGluZyB0byBkaWZmZXJlbnQgbWVtb3J5IGNodW5rcyIsIC0xLCB0cnVlKQotQ0hFQ0tFUigiYWxwaGEudW5peC5QdGhyZWFkTG9jayIsIFB0aHJlYWRMb2NrQ2hlY2tlciwgUHRocmVhZExvY2tDaGVja2VyLmNwcCwgIlNpbXBsZSBsb2NrIC0+IHVubG9jayBjaGVja2VyIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJvc3guY29jb2EuUmV0YWluQ291bnQiLCBSZXRhaW5Db3VudENoZWNrZXIsIFJldGFpbkNvdW50Q2hlY2tlci5jcHAsICJDaGVjayBmb3IgbGVha3MgYW5kIGltcHJvcGVyIHJlZmVyZW5jZSBjb3VudCBtYW5hZ2VtZW50IiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiYWxwaGEuc2VjdXJpdHkuUmV0dXJuUHRyUmFuZ2UiLCBSZXR1cm5Qb2ludGVyUmFuZ2VDaGVja2VyLCBSZXR1cm5Qb2ludGVyUmFuZ2VDaGVja2VyLmNwcCwgIkNoZWNrIGZvciBhbiBvdXQtb2YtYm91bmQgcG9pbnRlciBiZWluZyByZXR1cm5lZCB0byBjYWxsZXJzIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJjb3JlLnVuaW5pdGlhbGl6ZWQuVW5kZWZSZXR1cm4iLCBSZXR1cm5VbmRlZkNoZWNrZXIsIFJldHVyblVuZGVmQ2hlY2tlci5jcHAsICJDaGVjayBmb3IgdW5pbml0aWFsaXplZCB2YWx1ZXMgYmVpbmcgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoIm9zeC5jb2NvYS5SdW5Mb29wQXV0b3JlbGVhc2VMZWFrIiwgUnVuTG9vcEF1dG9yZWxlYXNlTGVha0NoZWNrZXIsIFJ1bkxvb3BBdXRvcmVsZWFzZUxlYWtDaGVja2VyLmNwcCwgIkNoZWNrIGZvciBsZWFrZWQgbWVtb3J5IGluIGF1dG9yZWxlYXNlIHBvb2xzIHRoYXQgd2lsbCBuZXZlciBiZSBkcmFpbmVkIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiYWxwaGEudW5peC5TaW1wbGVTdHJlYW0iLCBTaW1wbGVTdHJlYW1DaGVja2VyLCBTaW1wbGVTdHJlYW1DaGVja2VyLmNwcCwgIkNoZWNrIGZvciBtaXN1c2VzIG9mIHN0cmVhbSBBUElzIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJhbHBoYS5jb3JlLlNpemVvZlB0ciIsIFNpemVvZlBvaW50ZXJDaGVja2VyLCBDaGVja1NpemVvZlBvaW50ZXIuY3BwLCAiV2FybiBhYm91dCB1bmludGVuZGVkIHVzZSBvZiBzaXplb2YoKSBvbiBwb2ludGVyIGV4cHJlc3Npb25zIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJhbHBoYS5jb3JlLlN0YWNrQWRkcmVzc0FzeW5jRXNjYXBlIiwgU3RhY2tBZGRyQXN5bmNFc2NhcGVDaGVja2VyLCBTdGFja0FkZHJFc2NhcGVDaGVja2VyLmNwcCwgIkNoZWNrIHRoYXQgYWRkcmVzc2VzIHRvIHN0YWNrIG1lbW9yeSBkbyBub3QgZXNjYXBlIHRoZSBmdW5jdGlvbiIsIC0xLCB0cnVlKQotQ0hFQ0tFUigiY29yZS5TdGFja0FkZHJlc3NFc2NhcGUiLCBTdGFja0FkZHJFc2NhcGVDaGVja2VyLCBTdGFja0FkZHJFc2NhcGVDaGVja2VyLmNwcCwgIkNoZWNrIHRoYXQgYWRkcmVzc2VzIHRvIHN0YWNrIG1lbW9yeSBkbyBub3QgZXNjYXBlIHRoZSBmdW5jdGlvbiIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoImFwaU1vZGVsaW5nLlN0ZENMaWJyYXJ5RnVuY3Rpb25zIiwgU3RkQ0xpYnJhcnlGdW5jdGlvbnNDaGVja2VyLCBTdGRMaWJyYXJ5RnVuY3Rpb25zQ2hlY2tlci5jcHAsICJJbXByb3ZlIG1vZGVsaW5nIG9mIHRoZSBDIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb25zIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJhbHBoYS51bml4LlN0cmVhbSIsIFN0cmVhbUNoZWNrZXIsIFN0cmVhbUNoZWNrZXIuY3BwLCAiQ2hlY2sgc3RyZWFtIGhhbmRsaW5nIGZ1bmN0aW9ucyIsIC0xLCB0cnVlKQotQ0hFQ0tFUigiZGVidWcuVGFpbnRUZXN0IiwgVGFpbnRUZXN0ZXJDaGVja2VyLCBUYWludFRlc3RlckNoZWNrZXIuY3BwLCAiTWFyayB0YWludGVkIHN5bWJvbHMgYXMgc3VjaC4iLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJhbHBoYS5jb3JlLlRlc3RBZnRlckRpdlplcm8iLCBUZXN0QWZ0ZXJEaXZaZXJvQ2hlY2tlciwgVGVzdEFmdGVyRGl2WmVyb0NoZWNrZXIuY3BwLCAiQ2hlY2sgZm9yIGRpdmlzaW9uIGJ5IHZhcmlhYmxlIHRoYXQgaXMgbGF0ZXIgY29tcGFyZWQgYWdhaW5zdCAwLiBFaXRoZXIgdGhlIGNvbXBhcmlzb24gaXMgdXNlbGVzcyBvciB0aGVyZSBpcyBkaXZpc2lvbiBieSB6ZXJvLiIsIC0xLCB0cnVlKQotQ0hFQ0tFUigiZGVidWcuRHVtcFRyYXZlcnNhbCIsIFRyYXZlcnNhbER1bXBlciwgVHJhdmVyc2FsQ2hlY2tlci5jcHAsICJQcmludCBicmFuY2ggY29uZGl0aW9ucyBhcyB0aGV5IGFyZSB0cmF2ZXJzZWQgYnkgdGhlIGVuZ2luZSIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoImFwaU1vZGVsaW5nLlRydXN0Tm9ubnVsbCIsIFRydXN0Tm9ubnVsbENoZWNrZXIsIFRydXN0Tm9ubnVsbENoZWNrZXIuY3BwLCAiVHJ1c3QgdGhhdCByZXR1cm5zIGZyb20gZnJhbWV3b3JrIG1ldGhvZHMgYW5ub3RhdGVkIHdpdGggX05vbm51bGwgYXJlIG5vdCBudWxsIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJzZWN1cml0eS5pbnNlY3VyZUFQSS5VbmNoZWNrZWRSZXR1cm4iLCBVbmNoZWNrZWRSZXR1cm4sIENoZWNrU2VjdXJpdHlTeW50YXhPbmx5LmNwcCwgIldhcm4gb24gdXNlcyBvZiBmdW5jdGlvbnMgd2hvc2UgcmV0dXJuIHZhbHVlcyBtdXN0IGJlIGFsd2F5cyBjaGVja2VkIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiY29yZS51bmluaXRpYWxpemVkLkJyYW5jaCIsIFVuZGVmQnJhbmNoQ2hlY2tlciwgVW5kZWZCcmFuY2hDaGVja2VyLmNwcCwgIkNoZWNrIGZvciB1bmluaXRpYWxpemVkIHZhbHVlcyB1c2VkIGFzIGJyYW5jaCBjb25kaXRpb25zIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiY29yZS51bmluaXRpYWxpemVkLkNhcHR1cmVkQmxvY2tWYXJpYWJsZSIsIFVuZGVmQ2FwdHVyZWRCbG9ja1ZhckNoZWNrZXIsIFVuZGVmQ2FwdHVyZWRCbG9ja1ZhckNoZWNrZXIuY3BwLCAiQ2hlY2sgZm9yIGJsb2NrcyB0aGF0IGNhcHR1cmUgdW5pbml0aWFsaXplZCB2YWx1ZXMiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJjb3JlLlVuZGVmaW5lZEJpbmFyeU9wZXJhdG9yUmVzdWx0IiwgVW5kZWZSZXN1bHRDaGVja2VyLCBVbmRlZlJlc3VsdENoZWNrZXIuY3BwLCAiQ2hlY2sgZm9yIHVuZGVmaW5lZCByZXN1bHRzIG9mIGJpbmFyeSBvcGVyYXRvcnMiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJjb3JlLnVuaW5pdGlhbGl6ZWQuQXJyYXlTdWJzY3JpcHQiLCBVbmRlZmluZWRBcnJheVN1YnNjcmlwdENoZWNrZXIsIFVuZGVmaW5lZEFycmF5U3Vic2NyaXB0Q2hlY2tlci5jcHAsICJDaGVjayBmb3IgdW5pbml0aWFsaXplZCB2YWx1ZXMgdXNlZCBhcyBhcnJheSBzdWJzY3JpcHRzIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiY29yZS51bmluaXRpYWxpemVkLkFzc2lnbiIsIFVuZGVmaW5lZEFzc2lnbm1lbnRDaGVja2VyLCBVbmRlZmluZWRBc3NpZ25tZW50Q2hlY2tlci5jcHAsICJDaGVjayBmb3IgYXNzaWduaW5nIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigidmFsaXN0LlVuaW5pdGlhbGl6ZWQiLCBVbmluaXRpYWxpemVkQ2hlY2tlciwgVmFsaXN0Q2hlY2tlci5jcHAsICJDaGVjayBmb3IgdXNhZ2VzIG9mIHVuaW5pdGlhbGl6ZWQgKG9yIGFscmVhZHkgcmVsZWFzZWQpIHZhX2xpc3RzLiIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoImFscGhhLmNwbHVzcGx1cy5VbmluaXRpYWxpemVkT2JqZWN0IiwgVW5pbml0aWFsaXplZE9iamVjdENoZWNrZXIsIFVuaW5pdGlhbGl6ZWRPYmplY3RDaGVja2VyLmNwcCwgIlJlcG9ydHMgdW5pbml0aWFsaXplZCBmaWVsZHMgYWZ0ZXIgb2JqZWN0IGNvbnN0cnVjdGlvbiIsIC0xLCB0cnVlKQotQ0hFQ0tFUigidW5peC5BUEkiLCBVbml4QVBJTWlzdXNlQ2hlY2tlciwgVW5peEFQSUNoZWNrZXIuY3BwLCAiQ2hlY2sgY2FsbHMgdG8gdmFyaW91cyBVTklYL1Bvc2l4IGZ1bmN0aW9ucyIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoIm9wdGluLnBvcnRhYmlsaXR5LlVuaXhBUEkiLCBVbml4QVBJUG9ydGFiaWxpdHlDaGVja2VyLCBVbml4QVBJQ2hlY2tlci5jcHAsICJGaW5kcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIGJlaGF2aW9yIGluIFVOSVgvUG9zaXggZnVuY3Rpb25zIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigiYWxwaGEuZGVhZGNvZGUuVW5yZWFjaGFibGVDb2RlIiwgVW5yZWFjaGFibGVDb2RlQ2hlY2tlciwgVW5yZWFjaGFibGVDb2RlQ2hlY2tlci5jcHAsICJDaGVjayB1bnJlYWNoYWJsZSBjb2RlIiwgLTEsIHRydWUpCi1DSEVDS0VSKCJ2YWxpc3QuVW50ZXJtaW5hdGVkIiwgVW50ZXJtaW5hdGVkQ2hlY2tlciwgVmFsaXN0Q2hlY2tlci5jcHAsICJDaGVjayBmb3IgdmFfbGlzdHMgd2hpY2ggYXJlIG5vdCByZWxlYXNlZCBieSBhIHZhX2VuZCBjYWxsLiIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoImNvcmUuVkxBU2l6ZSIsIFZMQVNpemVDaGVja2VyLCBWTEFTaXplQ2hlY2tlci5jcHAsICJDaGVjayBmb3IgZGVjbGFyYXRpb25zIG9mIFZMQSBvZiB1bmRlZmluZWQgb3IgemVybyBzaXplIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigib3N4LmNvY29hLlZhcmlhZGljTWV0aG9kVHlwZXMiLCBWYXJpYWRpY01ldGhvZFR5cGVDaGVja2VyLCBCYXNpY09iakNGb3VuZGF0aW9uQ2hlY2tzLmNwcCwgIkNoZWNrIGZvciBwYXNzaW5nIG5vbi1PYmplY3RpdmUtQyB0eXBlcyB0byB2YXJpYWRpYyBjb2xsZWN0aW9uIGluaXRpYWxpemF0aW9uIG1ldGhvZHMgdGhhdCBleHBlY3Qgb25seSBPYmplY3RpdmUtQyB0eXBlcyIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoInVuaXguVmZvcmsiLCBWZm9ya0NoZWNrZXIsIFZmb3JrQ2hlY2tlci5jcHAsICJDaGVjayBmb3IgcHJvcGVyIHVzYWdlIG9mIHZmb3JrIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigib3B0aW4uY3BsdXNwbHVzLlZpcnR1YWxDYWxsIiwgVmlydHVhbENhbGxDaGVja2VyLCBWaXJ0dWFsQ2FsbENoZWNrZXIuY3BwLCAiQ2hlY2sgdmlydHVhbCBmdW5jdGlvbiBjYWxscyBkdXJpbmcgY29uc3RydWN0aW9uIG9yIGRlc3RydWN0aW9uIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigic2VjdXJpdHkuaW5zZWN1cmVBUEkuYmNtcCIsIGJjbXAsIENoZWNrU2VjdXJpdHlTeW50YXhPbmx5LmNwcCwgIldhcm4gb24gdXNlcyBvZiB0aGUgJ2JjbXAnIGZ1bmN0aW9uIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigic2VjdXJpdHkuaW5zZWN1cmVBUEkuYmNvcHkiLCBiY29weSwgQ2hlY2tTZWN1cml0eVN5bnRheE9ubHkuY3BwLCAiV2FybiBvbiB1c2VzIG9mIHRoZSAnYmNvcHknIGZ1bmN0aW9uIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigic2VjdXJpdHkuaW5zZWN1cmVBUEkuYnplcm8iLCBiemVybywgQ2hlY2tTZWN1cml0eVN5bnRheE9ubHkuY3BwLCAiV2FybiBvbiB1c2VzIG9mIHRoZSAnYnplcm8nIGZ1bmN0aW9uIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigic2VjdXJpdHkuaW5zZWN1cmVBUEkuZ2V0cHciLCBnZXRwdywgQ2hlY2tTZWN1cml0eVN5bnRheE9ubHkuY3BwLCAiV2FybiBvbiB1c2VzIG9mIHRoZSAnZ2V0cHcnIGZ1bmN0aW9uIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigic2VjdXJpdHkuaW5zZWN1cmVBUEkuZ2V0cyIsIGdldHMsIENoZWNrU2VjdXJpdHlTeW50YXhPbmx5LmNwcCwgIldhcm4gb24gdXNlcyBvZiB0aGUgJ2dldHMnIGZ1bmN0aW9uIiwgLTEsIGZhbHNlKQotQ0hFQ0tFUigic2VjdXJpdHkuaW5zZWN1cmVBUEkubWtzdGVtcCIsIG1rc3RlbXAsIENoZWNrU2VjdXJpdHlTeW50YXhPbmx5LmNwcCwgIldhcm4gd2hlbiAnbWtzdGVtcCcgaXMgcGFzc2VkIGZld2VyIHRoYW4gNiBYJ3MgaW4gdGhlIGZvcm1hdCBzdHJpbmciLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJzZWN1cml0eS5pbnNlY3VyZUFQSS5ta3RlbXAiLCBta3RlbXAsIENoZWNrU2VjdXJpdHlTeW50YXhPbmx5LmNwcCwgIldhcm4gb24gdXNlcyBvZiB0aGUgJ21rdGVtcCcgZnVuY3Rpb24iLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJzZWN1cml0eS5pbnNlY3VyZUFQSS5yYW5kIiwgcmFuZCwgQ2hlY2tTZWN1cml0eVN5bnRheE9ubHkuY3BwLCAiV2FybiBvbiB1c2VzIG9mIHRoZSAncmFuZCcsICdyYW5kb20nLCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMiLCAtMSwgZmFsc2UpCi1DSEVDS0VSKCJzZWN1cml0eS5pbnNlY3VyZUFQSS5zdHJjcHkiLCBzdHJjcHksIENoZWNrU2VjdXJpdHlTeW50YXhPbmx5LmNwcCwgIldhcm4gb24gdXNlcyBvZiB0aGUgJ3N0cmNweScgYW5kICdzdHJjYXQnIGZ1bmN0aW9ucyIsIC0xLCBmYWxzZSkKLUNIRUNLRVIoInNlY3VyaXR5Lmluc2VjdXJlQVBJLnZmb3JrIiwgdmZvcmssIENoZWNrU2VjdXJpdHlTeW50YXhPbmx5LmNwcCwgIldhcm4gb24gdXNlcyBvZiB0aGUgJ3Zmb3JrJyBmdW5jdGlvbiIsIC0xLCBmYWxzZSkKKworQ0hFQ0tFUigiZGVidWcuQW5hbHlzaXNPcmRlciIsIEFuYWx5c2lzT3JkZXJDaGVja2VyLCAiUHJpbnQgY2FsbGJhY2tzIHRoYXQgYXJlIGNhbGxlZCBkdXJpbmcgYW5hbHlzaXMgaW4gb3JkZXIiLCAiIikKK0NIRUNLRVIoImRlYnVnLlN0YXRzIiwgQW5hbHl6ZXJTdGF0c0NoZWNrZXIsICJFbWl0IHdhcm5pbmdzIHdpdGggYW5hbHl6ZXIgc3RhdGlzdGljcyIsICIiKQorQ0hFQ0tFUigiYWxwaGEuc2VjdXJpdHkuQXJyYXlCb3VuZCIsIEFycmF5Qm91bmRDaGVja2VyLCAiV2FybiBhYm91dCBidWZmZXIgb3ZlcmZsb3dzIChvbGRlciBjaGVja2VyKSIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2FscGhhX2NoZWNrcy5odG1sI2FscGhhLnNlY3VyaXR5LkFycmF5Qm91bmQiKQorQ0hFQ0tFUigiYWxwaGEuc2VjdXJpdHkuQXJyYXlCb3VuZFYyIiwgQXJyYXlCb3VuZENoZWNrZXJWMiwgIldhcm4gYWJvdXQgYnVmZmVyIG92ZXJmbG93cyAobmV3ZXIgY2hlY2tlcikiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hbHBoYV9jaGVja3MuaHRtbCNhbHBoYS5zZWN1cml0eS5BcnJheUJvdW5kVjIiKQorQ0hFQ0tFUigib3N4LmNvY29hLkF1dG9yZWxlYXNlV3JpdGUiLCBBdXRvcmVsZWFzZVdyaXRlQ2hlY2tlciwgIldhcm4gYWJvdXQgcG90ZW50aWFsbHkgY3Jhc2hpbmcgd3JpdGVzIHRvIGF1dG9yZWxlYXNpbmcgb2JqZWN0cyBmcm9tIGRpZmZlcmVudCBhdXRvcmVsZWFzaW5nIHBvb2xzIGluIE9iamVjdGl2ZS1DIiwgIiIpCitDSEVDS0VSKCJhbHBoYS51bml4LkJsb2NrSW5Dcml0aWNhbFNlY3Rpb24iLCBCbG9ja0luQ3JpdGljYWxTZWN0aW9uQ2hlY2tlciwgIkNoZWNrIGZvciBjYWxscyB0byBibG9ja2luZyBmdW5jdGlvbnMgaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbiIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2FscGhhX2NoZWNrcy5odG1sI2FscGhhLnVuaXguQmxvY2tJbkNyaXRpY2FsU2VjdGlvbiIpCitDSEVDS0VSKCJhbHBoYS5jb3JlLkJvb2xBc3NpZ25tZW50IiwgQm9vbEFzc2lnbm1lbnRDaGVja2VyLCAiV2FybiBhYm91dCBhc3NpZ25pbmcgbm9uLXswLDF9IHZhbHVlcyB0byBCb29sZWFuIHZhcmlhYmxlcyIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2FscGhhX2NoZWNrcy5odG1sI2FscGhhLmNvcmUuQm9vbEFzc2lnbm1lbnQiKQorQ0hFQ0tFUigiY29yZS5idWlsdGluLkJ1aWx0aW5GdW5jdGlvbnMiLCBCdWlsdGluRnVuY3Rpb25DaGVja2VyLCAiRXZhbHVhdGUgY29tcGlsZXIgYnVpbHRpbiBmdW5jdGlvbnMgKGUuZy4sIGFsbG9jYSgpKSIsICIiKQorQ0hFQ0tFUigib3N4LmNvcmVGb3VuZGF0aW9uLkNGRXJyb3IiLCBDRkVycm9yQ2hlY2tlciwgIkNoZWNrIHVzYWdlIG9mIENGRXJyb3JSZWYqIHBhcmFtZXRlcnMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjb3N4LmNvcmVGb3VuZGF0aW9uLkNGRXJyb3IiKQorQ0hFQ0tFUigiZGVidWcuRHVtcENGRyIsIENGR0R1bXBlciwgIkRpc3BsYXkgQ29udHJvbC1GbG93IEdyYXBocyIsICIiKQorQ0hFQ0tFUigiZGVidWcuVmlld0NGRyIsIENGR1ZpZXdlciwgIlZpZXcgQ29udHJvbC1GbG93IEdyYXBocyB1c2luZyBHcmFwaFZpeiIsICIiKQorQ0hFQ0tFUigib3N4LmNvcmVGb3VuZGF0aW9uLkNGTnVtYmVyIiwgQ0ZOdW1iZXJDaGVja2VyLCAiQ2hlY2sgZm9yIHByb3BlciB1c2VzIG9mIENGTnVtYmVyIEFQSXMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjb3N4LmNvcmVGb3VuZGF0aW9uLkNGTnVtYmVyIikKK0NIRUNLRVIoIm9zeC5jb3JlRm91bmRhdGlvbi5DRlJldGFpblJlbGVhc2UiLCBDRlJldGFpblJlbGVhc2VDaGVja2VyLCAiQ2hlY2sgZm9yIG51bGwgYXJndW1lbnRzIHRvIENGUmV0YWluL0NGUmVsZWFzZS9DRk1ha2VDb2xsZWN0YWJsZSIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNvc3guY29yZUZvdW5kYXRpb24uQ0ZSZXRhaW5SZWxlYXNlIikKK0NIRUNLRVIoImFscGhhLnVuaXguY3N0cmluZy5CdWZmZXJPdmVybGFwIiwgQ1N0cmluZ0J1ZmZlck92ZXJsYXAsICJDaGVja3MgZm9yIG92ZXJsYXAgaW4gdHdvIGJ1ZmZlciBhcmd1bWVudHMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hbHBoYV9jaGVja3MuaHRtbCNhbHBoYS51bml4LmNzdHJpbmcuQnVmZmVyT3ZlcmxhcCIpCitDSEVDS0VSKCJ1bml4LmNzdHJpbmcuQ1N0cmluZ01vZGVsaW5nIiwgQ1N0cmluZ01vZGVsaW5nLCAiVGhlIGJhc2Ugb2Ygc2V2ZXJhbCBDU3RyaW5nIHJlbGF0ZWQgY2hlY2tlcnMuIE9uIGl0J3Mgb3duIGl0IGVtaXRzIG5vIHJlcG9ydHMsIGJ1dCBhZGRzIHZhbHVhYmxlIGluZm9ybWF0aW9uIHRvIHRoZSBhbmFseXNpcyB3aGVuIGVuYWJsZWQuIiwgIiIpCitDSEVDS0VSKCJhbHBoYS51bml4LmNzdHJpbmcuTm90TnVsbFRlcm1pbmF0ZWQiLCBDU3RyaW5nTm90TnVsbFRlcm0sICJDaGVjayBmb3IgYXJndW1lbnRzIHdoaWNoIGFyZSBub3QgbnVsbC10ZXJtaW5hdGluZyBzdHJpbmdzIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYWxwaGFfY2hlY2tzLmh0bWwjYWxwaGEudW5peC5jc3RyaW5nLk5vdE51bGxUZXJtaW5hdGVkIikKK0NIRUNLRVIoInVuaXguY3N0cmluZy5OdWxsQXJnIiwgQ1N0cmluZ051bGxBcmcsICJDaGVjayBmb3IgbnVsbCBwb2ludGVycyBiZWluZyBwYXNzZWQgYXMgYXJndW1lbnRzIHRvIEMgc3RyaW5nIGZ1bmN0aW9ucyIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCN1bml4LmNzdHJpbmcuTnVsbEFyZyIpCitDSEVDS0VSKCJhbHBoYS51bml4LmNzdHJpbmcuT3V0T2ZCb3VuZHMiLCBDU3RyaW5nT3V0T2ZCb3VuZHMsICJDaGVjayBmb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaW4gc3RyaW5nIGZ1bmN0aW9ucyIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2FscGhhX2NoZWNrcy5odG1sI2FscGhhLnVuaXguY3N0cmluZy5PdXRPZkJvdW5kcyIpCitDSEVDS0VSKCJ1bml4LmNzdHJpbmcuQmFkU2l6ZUFyZyIsIENTdHJpbmdTeW50YXhDaGVja2VyLCAiQ2hlY2sgdGhlIHNpemUgYXJndW1lbnQgcGFzc2VkIGludG8gQyBzdHJpbmcgZnVuY3Rpb25zIGZvciBjb21tb24gZXJyb25lb3VzIHBhdHRlcm5zIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYXZhaWxhYmxlX2NoZWNrcy5odG1sI3VuaXguY3N0cmluZy5CYWRTaXplQXJnIikKK0NIRUNLRVIoImNwbHVzcGx1cy5TZWxmQXNzaWdubWVudCIsIENYWFNlbGZBc3NpZ25tZW50Q2hlY2tlciwgIkNoZWNrcyBDKysgY29weSBhbmQgbW92ZSBhc3NpZ25tZW50IG9wZXJhdG9ycyBmb3Igc2VsZiBhc3NpZ25tZW50IiwgIiIpCitDSEVDS0VSKCJjb3JlLkNhbGxBbmRNZXNzYWdlIiwgQ2FsbEFuZE1lc3NhZ2VDaGVja2VyLCAiQ2hlY2sgZm9yIGxvZ2ljYWwgZXJyb3JzIGZvciBmdW5jdGlvbiBjYWxscyBhbmQgT2JqZWN0aXZlLUMgbWVzc2FnZSBleHByZXNzaW9ucyAoZS5nLiwgdW5pbml0aWFsaXplZCBhcmd1bWVudHMsIG51bGwgZnVuY3Rpb24gcG9pbnRlcnMpIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYXZhaWxhYmxlX2NoZWNrcy5odG1sI2NvcmUuQ2FsbEFuZE1lc3NhZ2UiKQorQ0hFQ0tFUigiYWxwaGEuY29yZS5DYWxsQW5kTWVzc2FnZVVuSW5pdFJlZkFyZyIsIENhbGxBbmRNZXNzYWdlVW5Jbml0UmVmQXJnLCAiQ2hlY2sgZm9yIGxvZ2ljYWwgZXJyb3JzIGZvciBmdW5jdGlvbiBjYWxscyBhbmQgT2JqZWN0aXZlLUMgbWVzc2FnZSBleHByZXNzaW9ucyAoZS5nLiwgdW5pbml0aWFsaXplZCBhcmd1bWVudHMsIG51bGwgZnVuY3Rpb24gcG9pbnRlcnMsIGFuZCBwb2ludGVyIHRvIHVuZGVmaW5lZCB2YXJpYWJsZXMpIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYWxwaGFfY2hlY2tzLmh0bWwjYWxwaGEuY29yZS5DYWxsQW5kTWVzc2FnZVVuSW5pdFJlZkFyZyIpCitDSEVDS0VSKCJkZWJ1Zy5EdW1wQ2FsbHMiLCBDYWxsRHVtcGVyLCAiUHJpbnQgY2FsbHMgYXMgdGhleSBhcmUgdHJhdmVyc2VkIGJ5IHRoZSBlbmdpbmUiLCAiIikKK0NIRUNLRVIoImRlYnVnLkR1bXBDYWxsR3JhcGgiLCBDYWxsR3JhcGhEdW1wZXIsICJEaXNwbGF5IENhbGwgR3JhcGgiLCAiIikKK0NIRUNLRVIoImRlYnVnLlZpZXdDYWxsR3JhcGgiLCBDYWxsR3JhcGhWaWV3ZXIsICJWaWV3IENhbGwgR3JhcGggdXNpbmcgR3JhcGhWaXoiLCAiIikKK0NIRUNLRVIoImFscGhhLmNvcmUuQ2FzdFNpemUiLCBDYXN0U2l6ZUNoZWNrZXIsICJDaGVjayB3aGVuIGNhc3RpbmcgYSBtYWxsb2MnZWQgdHlwZSBULCB3aGV0aGVyIHRoZSBzaXplIGlzIGEgbXVsdGlwbGUgb2YgdGhlIHNpemUgb2YgVCIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2FscGhhX2NoZWNrcy5odG1sI2FscGhhLmNvcmUuQ2FzdFNpemUiKQorQ0hFQ0tFUigiYWxwaGEuY29yZS5DYXN0VG9TdHJ1Y3QiLCBDYXN0VG9TdHJ1Y3RDaGVja2VyLCAiQ2hlY2sgZm9yIGNhc3QgZnJvbSBub24tc3RydWN0IHBvaW50ZXIgdG8gc3RydWN0IHBvaW50ZXIiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hbHBoYV9jaGVja3MuaHRtbCNhbHBoYS5jb3JlLkNhc3RUb1N0cnVjdCIpCitDSEVDS0VSKCJhbHBoYS51bml4LkNocm9vdCIsIENocm9vdENoZWNrZXIsICJDaGVjayBpbXByb3BlciB1c2Ugb2YgY2hyb290IiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYWxwaGFfY2hlY2tzLmh0bWwjYWxwaGEudW5peC5DaHJvb3QiKQorQ0hFQ0tFUigib3N4LmNvY29hLkNsYXNzUmVsZWFzZSIsIENsYXNzUmVsZWFzZUNoZWNrZXIsICJDaGVjayBmb3Igc2VuZGluZyAncmV0YWluJywgJ3JlbGVhc2UnLCBvciAnYXV0b3JlbGVhc2UnIGRpcmVjdGx5IHRvIGEgQ2xhc3MiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjb3N4LmNvY29hLkNsYXNzUmVsZWFzZSIpCitDSEVDS0VSKCJhbHBoYS5jbG9uZS5DbG9uZUNoZWNrZXIiLCBDbG9uZUNoZWNrZXIsICJSZXBvcnRzIHNpbWlsYXIgcGllY2VzIG9mIGNvZGUuIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYWxwaGFfY2hlY2tzLmh0bWwjYWxwaGEuY2xvbmUuQ2xvbmVDaGVja2VyIikKK0NIRUNLRVIoImRlYnVnLkNvbmZpZ0R1bXBlciIsIENvbmZpZ0R1bXBlciwgIkR1bXAgY29uZmlnIHRhYmxlIiwgIiIpCitDSEVDS0VSKCJhbHBoYS5jb3JlLkNvbnZlcnNpb24iLCBDb252ZXJzaW9uQ2hlY2tlciwgIkxvc3Mgb2Ygc2lnbi9wcmVjaXNpb24gaW4gaW1wbGljaXQgY29udmVyc2lvbnMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hbHBoYV9jaGVja3MuaHRtbCNhbHBoYS5jb3JlLkNvbnZlcnNpb24iKQorQ0hFQ0tFUigidmFsaXN0LkNvcHlUb1NlbGYiLCBDb3B5VG9TZWxmQ2hlY2tlciwgIkNoZWNrIGZvciB2YV9saXN0cyB3aGljaCBhcmUgY29waWVkIG9udG8gaXRzZWxmLiIsICIiKQorQ0hFQ0tFUigiZGVhZGNvZGUuRGVhZFN0b3JlcyIsIERlYWRTdG9yZXNDaGVja2VyLCAiQ2hlY2sgZm9yIHZhbHVlcyBzdG9yZWQgdG8gdmFyaWFibGVzIHRoYXQgYXJlIG5ldmVyIHJlYWQgYWZ0ZXJ3YXJkcyIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNkZWFkY29kZS5EZWFkU3RvcmVzIikKK0NIRUNLRVIoImFscGhhLmNwbHVzcGx1cy5EZWxldGVXaXRoTm9uVmlydHVhbER0b3IiLCBEZWxldGVXaXRoTm9uVmlydHVhbER0b3JDaGVja2VyLCAiUmVwb3J0cyBkZXN0cnVjdGlvbnMgb2YgcG9seW1vcnBoaWMgb2JqZWN0cyB3aXRoIGEgbm9uLXZpcnR1YWwgZGVzdHJ1Y3RvciBpbiB0aGVpciBiYXNlIGNsYXNzIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYWxwaGFfY2hlY2tzLmh0bWwjYWxwaGEuY3BsdXNwbHVzLkRlbGV0ZVdpdGhOb25WaXJ0dWFsRHRvciIpCitDSEVDS0VSKCJzZWN1cml0eS5pbnNlY3VyZUFQSS5EZXByZWNhdGVkT3JVbnNhZmVCdWZmZXJIYW5kbGluZyIsIERlcHJlY2F0ZWRPclVuc2FmZUJ1ZmZlckhhbmRsaW5nLCAiV2FybiBvbiB1c2VzIG9mIHVuc2VjdXJlIG9yIGRlcHJlY2F0ZWQgYnVmZmVyIG1hbmlwdWxhdGluZyBmdW5jdGlvbnMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjc2VjdXJpdHkuaW5zZWN1cmVBUEkuRGVwcmVjYXRlZE9yVW5zYWZlQnVmZmVySGFuZGxpbmciKQorQ0hFQ0tFUigiY29yZS5OdWxsRGVyZWZlcmVuY2UiLCBEZXJlZmVyZW5jZUNoZWNrZXIsICJDaGVjayBmb3IgZGVyZWZlcmVuY2VzIG9mIG51bGwgcG9pbnRlcnMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjY29yZS5OdWxsRGVyZWZlcmVuY2UiKQorQ0hFQ0tFUigiYWxwaGEub3N4LmNvY29hLkRpcmVjdEl2YXJBc3NpZ25tZW50IiwgRGlyZWN0SXZhckFzc2lnbm1lbnQsICJDaGVjayBmb3IgZGlyZWN0IGFzc2lnbm1lbnRzIHRvIGluc3RhbmNlIHZhcmlhYmxlcyIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2FscGhhX2NoZWNrcy5odG1sI2FscGhhLm9zeC5jb2NvYS5EaXJlY3RJdmFyQXNzaWdubWVudCIpCitDSEVDS0VSKCJhbHBoYS5vc3guY29jb2EuRGlyZWN0SXZhckFzc2lnbm1lbnRGb3JBbm5vdGF0ZWRGdW5jdGlvbnMiLCBEaXJlY3RJdmFyQXNzaWdubWVudEZvckFubm90YXRlZEZ1bmN0aW9ucywgIkNoZWNrIGZvciBkaXJlY3QgYXNzaWdubWVudHMgdG8gaW5zdGFuY2UgdmFyaWFibGVzIGluIHRoZSBtZXRob2RzIGFubm90YXRlZCB3aXRoIG9iamNfbm9fZGlyZWN0X2luc3RhbmNlX3ZhcmlhYmxlX2Fzc2lnbm1lbnQiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hbHBoYV9jaGVja3MuaHRtbCNhbHBoYS5vc3guY29jb2EuRGlyZWN0SXZhckFzc2lnbm1lbnRGb3JBbm5vdGF0ZWRGdW5jdGlvbnMiKQorQ0hFQ0tFUigiY29yZS5EaXZpZGVaZXJvIiwgRGl2WmVyb0NoZWNrZXIsICJDaGVjayBmb3IgZGl2aXNpb24gYnkgemVybyIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNjb3JlLkRpdmlkZVplcm8iKQorQ0hFQ0tFUigiZGVidWcuRHVtcERvbWluYXRvcnMiLCBEb21pbmF0b3JzVHJlZUR1bXBlciwgIlByaW50IHRoZSBkb21pbmFuY2UgdHJlZSBmb3IgYSBnaXZlbiBDRkciLCAiIikKK0NIRUNLRVIoInVuaXguRHluYW1pY01lbW9yeU1vZGVsaW5nIiwgRHluYW1pY01lbW9yeU1vZGVsaW5nLCAiVGhlIGJhc2Ugb2Ygc2V2ZXJhbCBtYWxsb2MoKSByZWxhdGVkIGNoZWNrZXJzLiBPbiBpdCdzIG93biBpdCBlbWl0cyBubyByZXBvcnRzLCBidXQgYWRkcyB2YWx1YWJsZSBpbmZvcm1hdGlvbiB0byB0aGUgYW5hbHlzaXMgd2hlbiBlbmFibGVkLiIsICIiKQorQ0hFQ0tFUigiYWxwaGEuY29yZS5EeW5hbWljVHlwZUNoZWNrZXIiLCBEeW5hbWljVHlwZUNoZWNrZXIsICJDaGVjayBmb3IgY2FzZXMgd2hlcmUgdGhlIGR5bmFtaWMgYW5kIHRoZSBzdGF0aWMgdHlwZSBvZiBhbiBvYmplY3QgYXJlIHVucmVsYXRlZC4iLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hbHBoYV9jaGVja3MuaHRtbCNhbHBoYS5jb3JlLkR5bmFtaWNUeXBlQ2hlY2tlciIpCitDSEVDS0VSKCJjb3JlLkR5bmFtaWNUeXBlUHJvcGFnYXRpb24iLCBEeW5hbWljVHlwZVByb3BhZ2F0aW9uLCAiR2VuZXJhdGUgZHluYW1pYyB0eXBlIGluZm9ybWF0aW9uIiwgIiIpCitDSEVDS0VSKCJvcHRpbi5vc3guY29jb2EubG9jYWxpemFiaWxpdHkuRW1wdHlMb2NhbGl6YXRpb25Db250ZXh0Q2hlY2tlciIsIEVtcHR5TG9jYWxpemF0aW9uQ29udGV4dENoZWNrZXIsICJDaGVjayB0aGF0IE5TTG9jYWxpemVkU3RyaW5nIG1hY3JvcyBpbmNsdWRlIGEgY29tbWVudCBmb3IgY29udGV4dCIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNvcHRpbi5vc3guY29jb2EubG9jYWxpemFiaWxpdHkuRW1wdHlMb2NhbGl6YXRpb25Db250ZXh0Q2hlY2tlciIpCitDSEVDS0VSKCJhbHBoYS5jcGx1c3BsdXMuRW51bUNhc3RPdXRPZlJhbmdlIiwgRW51bUNhc3RPdXRPZlJhbmdlQ2hlY2tlciwgIkNoZWNrIGludGVnZXIgdG8gZW51bWVyYXRpb24gY2FzdHMgZm9yIG91dCBvZiByYW5nZSB2YWx1ZXMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hbHBoYV9jaGVja3MuaHRtbCNhbHBoYS5jcGx1c3BsdXMuRW51bUNhc3RPdXRPZlJhbmdlIikKK0NIRUNLRVIoImRlYnVnLlZpZXdFeHBsb2RlZEdyYXBoIiwgRXhwbG9kZWRHcmFwaFZpZXdlciwgIlZpZXcgRXhwbG9kZWQgR3JhcGhzIHVzaW5nIEdyYXBoVml6IiwgIiIpCitDSEVDS0VSKCJkZWJ1Zy5FeHBySW5zcGVjdGlvbiIsIEV4cHJJbnNwZWN0aW9uQ2hlY2tlciwgIkNoZWNrIHRoZSBhbmFseXplcidzIHVuZGVyc3RhbmRpbmcgb2YgZXhwcmVzc2lvbnMiLCAiIikKK0NIRUNLRVIoImFscGhhLmNvcmUuRml4ZWRBZGRyIiwgRml4ZWRBZGRyZXNzQ2hlY2tlciwgIkNoZWNrIGZvciBhc3NpZ25tZW50IG9mIGEgZml4ZWQgYWRkcmVzcyB0byBhIHBvaW50ZXIiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hbHBoYV9jaGVja3MuaHRtbCNhbHBoYS5jb3JlLkZpeGVkQWRkciIpCitDSEVDS0VSKCJzZWN1cml0eS5GbG9hdExvb3BDb3VudGVyIiwgRmxvYXRMb29wQ291bnRlciwgIldhcm4gb24gdXNpbmcgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSBhcyBhIGxvb3AgY291bnRlciAoQ0VSVDogRkxQMzAtQywgRkxQMzAtQ1BQKSIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNzZWN1cml0eS5GbG9hdExvb3BDb3VudGVyIikKK0NIRUNLRVIoIm9wdGluLnBlcmZvcm1hbmNlLkdDREFudGlwYXR0ZXJuIiwgR0NEQW50aXBhdHRlcm4sICJDaGVjayBmb3IgcGVyZm9ybWFuY2UgYW50aS1wYXR0ZXJucyB3aGVuIHVzaW5nIEdyYW5kIENlbnRyYWwgRGlzcGF0Y2giLCAiIikKK0NIRUNLRVIoImFwaU1vZGVsaW5nLmdvb2dsZS5HVGVzdCIsIEdUZXN0Q2hlY2tlciwgIk1vZGVsIGd0ZXN0IGFzc2VydGlvbiBBUElzIiwgIiIpCitDSEVDS0VSKCJhbHBoYS5zZWN1cml0eS50YWludC5UYWludFByb3BhZ2F0aW9uIiwgR2VuZXJpY1RhaW50Q2hlY2tlciwgIkdlbmVyYXRlIHRhaW50IGluZm9ybWF0aW9uIHVzZWQgYnkgb3RoZXIgY2hlY2tlcnMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hbHBoYV9jaGVja3MuaHRtbCNhbHBoYS5zZWN1cml0eS50YWludC5UYWludFByb3BhZ2F0aW9uIikKK0NIRUNLRVIoImFscGhhLmNvcmUuSWRlbnRpY2FsRXhwciIsIElkZW50aWNhbEV4cHJDaGVja2VyLCAiV2FybiBhYm91dCB1bmludGVuZGVkIHVzZSBvZiBpZGVudGljYWwgZXhwcmVzc2lvbnMgaW4gb3BlcmF0b3JzIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYWxwaGFfY2hlY2tzLmh0bWwjYWxwaGEuY29yZS5JZGVudGljYWxFeHByIikKK0NIRUNLRVIoImNwbHVzcGx1cy5Jbm5lclBvaW50ZXIiLCBJbm5lclBvaW50ZXJDaGVja2VyLCAiQ2hlY2sgZm9yIGlubmVyIHBvaW50ZXJzIG9mIEMrKyBjb250YWluZXJzIHVzZWQgYWZ0ZXIgcmUvZGVhbGxvY2F0aW9uIiwgIiIpCitDSEVDS0VSKCJhbHBoYS5vc3guY29jb2EuSW5zdGFuY2VWYXJpYWJsZUludmFsaWRhdGlvbiIsIEluc3RhbmNlVmFyaWFibGVJbnZhbGlkYXRpb24sICJDaGVjayB0aGF0IHRoZSBpbnZhbGlkYXRhYmxlIGluc3RhbmNlIHZhcmlhYmxlcyBhcmUgaW52YWxpZGF0ZWQgaW4gdGhlIG1ldGhvZHMgYW5ub3RhdGVkIHdpdGggb2JqY19pbnN0YW5jZV92YXJpYWJsZV9pbnZhbGlkYXRvciIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2FscGhhX2NoZWNrcy5odG1sI2FscGhhLm9zeC5jb2NvYS5JbnN0YW5jZVZhcmlhYmxlSW52YWxpZGF0aW9uIikKK0NIRUNLRVIoImFscGhhLmNwbHVzcGx1cy5JbnZhbGlkYXRlZEl0ZXJhdG9yIiwgSW52YWxpZGF0ZWRJdGVyYXRvckNoZWNrZXIsICJDaGVjayBmb3IgdXNlIG9mIGludmFsaWRhdGVkIGl0ZXJhdG9ycyIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2FscGhhX2NoZWNrcy5odG1sI2FscGhhLmNwbHVzcGx1cy5JbnZhbGlkYXRlZEl0ZXJhdG9yIikKK0NIRUNLRVIoImFscGhhLmNwbHVzcGx1cy5JdGVyYXRvck1vZGVsaW5nIiwgSXRlcmF0b3JNb2RlbGluZywgIk1vZGVscyBpdGVyYXRvcnMgb2YgQysrIGNvbnRhaW5lcnMiLCAiIikKK0NIRUNLRVIoImFscGhhLmNwbHVzcGx1cy5JdGVyYXRvclJhbmdlIiwgSXRlcmF0b3JSYW5nZUNoZWNrZXIsICJDaGVjayBmb3IgaXRlcmF0b3JzIHVzZWQgb3V0c2lkZSB0aGVpciB2YWxpZCByYW5nZXMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hbHBoYV9jaGVja3MuaHRtbCNhbHBoYS5jcGx1c3BsdXMuSXRlcmF0b3JSYW5nZSIpCitDSEVDS0VSKCJhbHBoYS5vc3guY29jb2EuSXZhckludmFsaWRhdGlvbk1vZGVsaW5nIiwgSXZhckludmFsaWRhdGlvbk1vZGVsaW5nLCAiR2F0aGVycyBpbmZvcm1hdGlvbiBmb3IgYW5ub3RhdGlvbiBkcml2ZW4gaW52YWxpZGF0aW9uIGNoZWNraW5nIGZvciBjbGFzc2VzIHRoYXQgY29udGFpbnMgYSBtZXRob2QgYW5ub3RhdGVkIHdpdGggJ29iamNfaW5zdGFuY2VfdmFyaWFibGVfaW52YWxpZGF0b3InIiwgIiIpCitDSEVDS0VSKCJhbHBoYS5sbHZtLkNvbnZlbnRpb25zIiwgTExWTUNvbnZlbnRpb25zQ2hlY2tlciwgIkNoZWNrIGNvZGUgZm9yIExMVk0gY29kZWJhc2UgY29udmVudGlvbnMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hbHBoYV9jaGVja3MuaHRtbCNhbHBoYS5sbHZtLkNvbnZlbnRpb25zIikKK0NIRUNLRVIoImRlYnVnLkR1bXBMaXZlU3RtdHMiLCBMaXZlU3RhdGVtZW50c0R1bXBlciwgIlByaW50IHJlc3VsdHMgb2YgbGl2ZSBzdGF0ZW1lbnQgYW5hbHlzaXMiLCAiIikKK0NIRUNLRVIoImRlYnVnLkR1bXBMaXZlVmFycyIsIExpdmVWYXJpYWJsZXNEdW1wZXIsICJQcmludCByZXN1bHRzIG9mIGxpdmUgdmFyaWFibGUgYW5hbHlzaXMiLCAiIikKK0NIRUNLRVIoIm9wdGluLm1waS5NUEktQ2hlY2tlciIsIE1QSUNoZWNrZXIsICJDaGVja3MgTVBJIGNvZGUiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjb3B0aW4ubXBpLk1QSS1DaGVja2VyIikKK0NIRUNLRVIoIm9zeC5TZWNLZXljaGFpbkFQSSIsIE1hY09TS2V5Y2hhaW5BUElDaGVja2VyLCAiQ2hlY2sgZm9yIHByb3BlciB1c2VzIG9mIFNlY3VyZSBLZXljaGFpbiBBUElzIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYXZhaWxhYmxlX2NoZWNrcy5odG1sI29zeC5TZWNLZXljaGFpbkFQSSIpCitDSEVDS0VSKCJvc3guQVBJIiwgTWFjT1NYQVBJQ2hlY2tlciwgIkNoZWNrIGZvciBwcm9wZXIgdXNlcyBvZiB2YXJpb3VzIEFwcGxlIEFQSXMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjb3N4LkFQSSIpCitDSEVDS0VSKCJ1bml4Lk1hbGxvYyIsIE1hbGxvY0NoZWNrZXIsICJDaGVjayBmb3IgbWVtb3J5IGxlYWtzLCBkb3VibGUgZnJlZSwgYW5kIHVzZS1hZnRlci1mcmVlIHByb2JsZW1zLiBUcmFjZXMgbWVtb3J5IG1hbmFnZWQgYnkgbWFsbG9jKCkvZnJlZSgpLiIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCN1bml4Lk1hbGxvYyIpCitDSEVDS0VSKCJhbHBoYS5zZWN1cml0eS5NYWxsb2NPdmVyZmxvdyIsIE1hbGxvY092ZXJmbG93U2VjdXJpdHlDaGVja2VyLCAiQ2hlY2sgZm9yIG92ZXJmbG93cyBpbiB0aGUgYXJndW1lbnRzIHRvIG1hbGxvYygpIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYWxwaGFfY2hlY2tzLmh0bWwjYWxwaGEuc2VjdXJpdHkuTWFsbG9jT3ZlcmZsb3ciKQorQ0hFQ0tFUigidW5peC5NYWxsb2NTaXplb2YiLCBNYWxsb2NTaXplb2ZDaGVja2VyLCAiQ2hlY2sgZm9yIGR1YmlvdXMgbWFsbG9jIGFyZ3VtZW50cyBpbnZvbHZpbmcgc2l6ZW9mIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYXZhaWxhYmxlX2NoZWNrcy5odG1sI3VuaXguTWFsbG9jU2l6ZW9mIikKK0NIRUNLRVIoInVuaXguTWlzbWF0Y2hlZERlYWxsb2NhdG9yIiwgTWlzbWF0Y2hlZERlYWxsb2NhdG9yQ2hlY2tlciwgIkNoZWNrIGZvciBtaXNtYXRjaGVkIGRlYWxsb2NhdG9ycy4iLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjdW5peC5NaXNtYXRjaGVkRGVhbGxvY2F0b3IiKQorQ0hFQ0tFUigiYWxwaGEuY3BsdXNwbHVzLk1pc21hdGNoZWRJdGVyYXRvciIsIE1pc21hdGNoZWRJdGVyYXRvckNoZWNrZXIsICJDaGVjayBmb3IgdXNlIG9mIGl0ZXJhdG9ycyBvZiBkaWZmZXJlbnQgY29udGFpbmVycyB3aGVyZSBpdGVyYXRvcnMgb2YgdGhlIHNhbWUgY29udGFpbmVyIGFyZSBleHBlY3RlZCIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2FscGhhX2NoZWNrcy5odG1sI2FscGhhLmNwbHVzcGx1cy5NaXNtYXRjaGVkSXRlcmF0b3IiKQorQ0hFQ0tFUigiYWxwaGEub3N4LmNvY29hLk1pc3NpbmdJbnZhbGlkYXRpb25NZXRob2QiLCBNaXNzaW5nSW52YWxpZGF0aW9uTWV0aG9kLCAiQ2hlY2sgdGhhdCB0aGUgaW52YWxpZGF0aW9uIG1ldGhvZHMgYXJlIHByZXNlbnQgaW4gY2xhc3NlcyB0aGF0IGNvbnRhaW4gaW52YWxpZGF0YWJsZSBpbnN0YW5jZSB2YXJpYWJsZXMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hbHBoYV9jaGVja3MuaHRtbCNhbHBoYS5vc3guY29jb2EuTWlzc2luZ0ludmFsaWRhdGlvbk1ldGhvZCIpCitDSEVDS0VSKCJhbHBoYS5zZWN1cml0eS5NbWFwV3JpdGVFeGVjIiwgTW1hcFdyaXRlRXhlY0NoZWNrZXIsICJXYXJuIG9uIG1tYXAoKSBjYWxscyB0aGF0IGFyZSBib3RoIHdyaXRhYmxlIGFuZCBleGVjdXRhYmxlIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYWxwaGFfY2hlY2tzLmh0bWwjYWxwaGEuc2VjdXJpdHkuTW1hcFdyaXRlRXhlYyIpCitDSEVDS0VSKCJjcGx1c3BsdXMuTW92ZSIsIE1vdmVDaGVja2VyLCAiRmluZCB1c2UtYWZ0ZXItbW92ZSBidWdzIGluIEMrKyIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNjcGx1c3BsdXMuTW92ZSIpCitDSEVDS0VSKCJvc3guY29jb2EuTlNBdXRvcmVsZWFzZVBvb2wiLCBOU0F1dG9yZWxlYXNlUG9vbENoZWNrZXIsICJXYXJuIGZvciBzdWJvcHRpbWFsIHVzZXMgb2YgTlNBdXRvcmVsZWFzZVBvb2wgaW4gT2JqZWN0aXZlLUMgR0MgbW9kZSIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNvc3guY29jb2EuTlNBdXRvcmVsZWFzZVBvb2wiKQorQ0hFQ0tFUigib3N4LmNvY29hLk5TRXJyb3IiLCBOU0Vycm9yQ2hlY2tlciwgIkNoZWNrIHVzYWdlIG9mIE5TRXJyb3IqKiBwYXJhbWV0ZXJzIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYXZhaWxhYmxlX2NoZWNrcy5odG1sI29zeC5jb2NvYS5OU0Vycm9yIikKK0NIRUNLRVIoIm9zeC5OU09yQ0ZFcnJvckRlcmVmQ2hlY2tlciIsIE5TT3JDRkVycm9yRGVyZWZDaGVja2VyLCAiSW1wbGVtZW50YXRpb24gY2hlY2tlciBmb3IgTlNFcnJvckNoZWNrZXIgYW5kIENGRXJyb3JDaGVja2VyIiwgIiIpCitDSEVDS0VSKCJjcGx1c3BsdXMuTmV3RGVsZXRlIiwgTmV3RGVsZXRlQ2hlY2tlciwgIkNoZWNrIGZvciBkb3VibGUtZnJlZSBhbmQgdXNlLWFmdGVyLWZyZWUgcHJvYmxlbXMuIFRyYWNlcyBtZW1vcnkgbWFuYWdlZCBieSBuZXcvZGVsZXRlLiIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNjcGx1c3BsdXMuTmV3RGVsZXRlIikKK0NIRUNLRVIoImNwbHVzcGx1cy5OZXdEZWxldGVMZWFrcyIsIE5ld0RlbGV0ZUxlYWtzQ2hlY2tlciwgIkNoZWNrIGZvciBtZW1vcnkgbGVha3MuIFRyYWNlcyBtZW1vcnkgbWFuYWdlZCBieSBuZXcvZGVsZXRlLiIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNjcGx1c3BsdXMuTmV3RGVsZXRlTGVha3MiKQorQ0hFQ0tFUigib3N4LmNvY29hLk5pbEFyZyIsIE5pbEFyZ0NoZWNrZXIsICJDaGVjayBmb3IgcHJvaGliaXRlZCBuaWwgYXJndW1lbnRzIHRvIE9iakMgbWV0aG9kIGNhbGxzIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYXZhaWxhYmxlX2NoZWNrcy5odG1sI29zeC5jb2NvYS5OaWxBcmciKQorQ0hFQ0tFUigiY29yZS5idWlsdGluLk5vUmV0dXJuRnVuY3Rpb25zIiwgTm9SZXR1cm5GdW5jdGlvbkNoZWNrZXIsICJFdmFsdWF0ZSBcInBhbmljXCIgZnVuY3Rpb25zIHRoYXQgYXJlIGtub3duIHRvIG5vdCByZXR1cm4gdG8gdGhlIGNhbGxlciIsICIiKQorQ0hFQ0tFUigib3B0aW4ub3N4LmNvY29hLmxvY2FsaXphYmlsaXR5Lk5vbkxvY2FsaXplZFN0cmluZ0NoZWNrZXIiLCBOb25Mb2NhbGl6ZWRTdHJpbmdDaGVja2VyLCAiV2FybnMgYWJvdXQgdXNlcyBvZiBub24tbG9jYWxpemVkIE5TU3RyaW5ncyBwYXNzZWQgdG8gVUkgbWV0aG9kcyBleHBlY3RpbmcgbG9jYWxpemVkIE5TU3RyaW5ncyIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNvcHRpbi5vc3guY29jb2EubG9jYWxpemFiaWxpdHkuTm9uTG9jYWxpemVkU3RyaW5nQ2hlY2tlciIpCitDSEVDS0VSKCJjb3JlLk5vbk51bGxQYXJhbUNoZWNrZXIiLCBOb25OdWxsUGFyYW1DaGVja2VyLCAiQ2hlY2sgZm9yIG51bGwgcG9pbnRlcnMgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byBhIGZ1bmN0aW9uIHdob3NlIGFyZ3VtZW50cyBhcmUgcmVmZXJlbmNlcyBvciBtYXJrZWQgd2l0aCB0aGUgJ25vbm51bGwnIGF0dHJpYnV0ZSIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNjb3JlLk5vbk51bGxQYXJhbUNoZWNrZXIiKQorQ0hFQ0tFUigiY29yZS5Ob25uaWxTdHJpbmdDb25zdGFudHMiLCBOb25udWxsR2xvYmFsQ29uc3RhbnRzQ2hlY2tlciwgIkFzc3VtZSB0aGF0IGNvbnN0IHN0cmluZy1saWtlIGdsb2JhbHMgYXJlIG5vbi1udWxsIiwgIiIpCitDSEVDS0VSKCJudWxsYWJpbGl0eS5OdWxsUGFzc2VkVG9Ob25udWxsIiwgTnVsbFBhc3NlZFRvTm9ubnVsbENoZWNrZXIsICJXYXJucyB3aGVuIGEgbnVsbCBwb2ludGVyIGlzIHBhc3NlZCB0byBhIHBvaW50ZXIgd2hpY2ggaGFzIGEgX05vbm51bGwgdHlwZS4iLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjbnVsbGFiaWxpdHkuTnVsbFBhc3NlZFRvTm9ubnVsbCIpCitDSEVDS0VSKCJudWxsYWJpbGl0eS5OdWxsUmV0dXJuZWRGcm9tTm9ubnVsbCIsIE51bGxSZXR1cm5lZEZyb21Ob25udWxsQ2hlY2tlciwgIldhcm5zIHdoZW4gYSBudWxsIHBvaW50ZXIgaXMgcmV0dXJuZWQgZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFzIF9Ob25udWxsIHJldHVybiB0eXBlLiIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNudWxsYWJpbGl0eS5OdWxsUmV0dXJuZWRGcm9tTm9ubnVsbCIpCitDSEVDS0VSKCJudWxsYWJpbGl0eS5OdWxsYWJpbGl0eUJhc2UiLCBOdWxsYWJpbGl0eUJhc2UsICJTdG9yZXMgaW5mb3JtYXRpb24gZHVyaW5nIHRoZSBhbmFseXNpcyBhYm91dCBudWxsYWJpbGl0eS4iLCAiIikKK0NIRUNLRVIoIm51bGxhYmlsaXR5Lk51bGxhYmxlRGVyZWZlcmVuY2VkIiwgTnVsbGFibGVEZXJlZmVyZW5jZWRDaGVja2VyLCAiV2FybnMgd2hlbiBhIG51bGxhYmxlIHBvaW50ZXIgaXMgZGVyZWZlcmVuY2VkLiIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNudWxsYWJpbGl0eS5OdWxsYWJsZURlcmVmZXJlbmNlZCIpCitDSEVDS0VSKCJudWxsYWJpbGl0eS5OdWxsYWJsZVBhc3NlZFRvTm9ubnVsbCIsIE51bGxhYmxlUGFzc2VkVG9Ob25udWxsQ2hlY2tlciwgIldhcm5zIHdoZW4gYSBudWxsYWJsZSBwb2ludGVyIGlzIHBhc3NlZCB0byBhIHBvaW50ZXIgd2hpY2ggaGFzIGEgX05vbm51bGwgdHlwZS4iLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjbnVsbGFiaWxpdHkuTnVsbGFibGVQYXNzZWRUb05vbm51bGwiKQorQ0hFQ0tFUigibnVsbGFiaWxpdHkuTnVsbGFibGVSZXR1cm5lZEZyb21Ob25udWxsIiwgTnVsbGFibGVSZXR1cm5lZEZyb21Ob25udWxsQ2hlY2tlciwgIldhcm5zIHdoZW4gYSBudWxsYWJsZSBwb2ludGVyIGlzIHJldHVybmVkIGZyb20gYSBmdW5jdGlvbiB0aGF0IGhhcyBfTm9ubnVsbCByZXR1cm4gdHlwZS4iLCAiIikKK0NIRUNLRVIoIm9zeC5OdW1iZXJPYmplY3RDb252ZXJzaW9uIiwgTnVtYmVyT2JqZWN0Q29udmVyc2lvbkNoZWNrZXIsICJDaGVjayBmb3IgZXJyb25lb3VzIGNvbnZlcnNpb25zIG9mIG9iamVjdHMgcmVwcmVzZW50aW5nIG51bWJlcnMgaW50byBudW1iZXJzIiwgIiIpCitDSEVDS0VSKCJvcHRpbi5vc3guT1NPYmplY3RDU3R5bGVDYXN0IiwgT1NPYmplY3RDU3R5bGVDYXN0LCAiQ2hlY2tlciBmb3IgQy1zdHlsZSBjYXN0cyBvZiBPU09iamVjdHMiLCAiIikKK0NIRUNLRVIoIm9zeC5PU09iamVjdFJldGFpbkNvdW50IiwgT1NPYmplY3RSZXRhaW5Db3VudENoZWNrZXIsICJDaGVjayBmb3IgbGVha3MgYW5kIGltcHJvcGVyIHJlZmVyZW5jZSBjb3VudCBtYW5hZ2VtZW50IGZvciBPU09iamVjdCIsICIiKQorQ0hFQ0tFUigib3N4LmNvY29hLkF0U3luYyIsIE9iakNBdFN5bmNDaGVja2VyLCAiQ2hlY2sgZm9yIG5pbCBwb2ludGVycyB1c2VkIGFzIG11dGV4ZXMgZm9yIEBzeW5jaHJvbml6ZWQiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjb3N4LmNvY29hLkF0U3luYyIpCitDSEVDS0VSKCJvc3guY29yZUZvdW5kYXRpb24uY29udGFpbmVycy5Qb2ludGVyU2l6ZWRWYWx1ZXMiLCBPYmpDQ29udGFpbmVyc0FTVENoZWNrZXIsICJXYXJucyBpZiAnQ0ZBcnJheScsICdDRkRpY3Rpb25hcnknLCAnQ0ZTZXQnIGFyZSBjcmVhdGVkIHdpdGggbm9uLXBvaW50ZXItc2l6ZSB2YWx1ZXMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjb3N4LmNvcmVGb3VuZGF0aW9uLmNvbnRhaW5lcnMuUG9pbnRlclNpemVkVmFsdWVzIikKK0NIRUNLRVIoIm9zeC5jb3JlRm91bmRhdGlvbi5jb250YWluZXJzLk91dE9mQm91bmRzIiwgT2JqQ0NvbnRhaW5lcnNDaGVja2VyLCAiQ2hlY2tzIGZvciBpbmRleCBvdXQtb2YtYm91bmRzIHdoZW4gdXNpbmcgJ0NGQXJyYXknIEFQSSIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNvc3guY29yZUZvdW5kYXRpb24uY29udGFpbmVycy5PdXRPZkJvdW5kcyIpCitDSEVDS0VSKCJvc3guY29jb2EuRGVhbGxvYyIsIE9iakNEZWFsbG9jQ2hlY2tlciwgIldhcm4gYWJvdXQgT2JqZWN0aXZlLUMgY2xhc3NlcyB0aGF0IGxhY2sgYSBjb3JyZWN0IGltcGxlbWVudGF0aW9uIG9mIC1kZWFsbG9jIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYXZhaWxhYmxlX2NoZWNrcy5odG1sI29zeC5jb2NvYS5EZWFsbG9jIikKK0NIRUNLRVIoIm9zeC5jb2NvYS5PYmpDR2VuZXJpY3MiLCBPYmpDR2VuZXJpY3NDaGVja2VyLCAiQ2hlY2sgZm9yIHR5cGUgZXJyb3JzIHdoZW4gdXNpbmcgT2JqZWN0aXZlLUMgZ2VuZXJpY3MiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjb3N4LmNvY29hLk9iakNHZW5lcmljcyIpCitDSEVDS0VSKCJvc3guY29jb2EuTG9vcHMiLCBPYmpDTG9vcENoZWNrZXIsICJJbXByb3ZlZCBtb2RlbGluZyBvZiBsb29wcyB1c2luZyBDb2NvYSBjb2xsZWN0aW9uIHR5cGVzIiwgIiIpCitDSEVDS0VSKCJvc3guY29jb2EuSW5jb21wYXRpYmxlTWV0aG9kVHlwZXMiLCBPYmpDTWV0aFNpZ3NDaGVja2VyLCAiV2FybiBhYm91dCBPYmplY3RpdmUtQyBtZXRob2Qgc2lnbmF0dXJlcyB3aXRoIHR5cGUgaW5jb21wYXRpYmlsaXRpZXMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjb3N4LmNvY29hLkluY29tcGF0aWJsZU1ldGhvZFR5cGVzIikKK0NIRUNLRVIoIm9zeC5jb2NvYS5Ob25OaWxSZXR1cm5WYWx1ZSIsIE9iakNOb25OaWxSZXR1cm5WYWx1ZUNoZWNrZXIsICJNb2RlbCB0aGUgQVBJcyB0aGF0IGFyZSBndWFyYW50ZWVkIHRvIHJldHVybiBhIG5vbi1uaWwgdmFsdWUiLCAiIikKK0NIRUNLRVIoIm9zeC5PYmpDUHJvcGVydHkiLCBPYmpDUHJvcGVydHlDaGVja2VyLCAiQ2hlY2sgZm9yIHByb3BlciB1c2VzIG9mIE9iamVjdGl2ZS1DIHByb3BlcnRpZXMiLCAiIikKK0NIRUNLRVIoIm9zeC5jb2NvYS5TZWxmSW5pdCIsIE9iakNTZWxmSW5pdENoZWNrZXIsICJDaGVjayB0aGF0ICdzZWxmJyBpcyBwcm9wZXJseSBpbml0aWFsaXplZCBpbnNpZGUgYW4gaW5pdGlhbGl6ZXIgbWV0aG9kIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYXZhaWxhYmxlX2NoZWNrcy5odG1sI29zeC5jb2NvYS5TZWxmSW5pdCIpCitDSEVDS0VSKCJvc3guY29jb2EuTWlzc2luZ1N1cGVyQ2FsbCIsIE9iakNTdXBlckNhbGxDaGVja2VyLCAiV2FybiBhYm91dCBPYmplY3RpdmUtQyBtZXRob2RzIHRoYXQgbGFjayBhIG5lY2Vzc2FyeSBjYWxsIHRvIHN1cGVyIiwgIiIpCitDSEVDS0VSKCJvc3guY29jb2EuU3VwZXJEZWFsbG9jIiwgT2JqQ1N1cGVyRGVhbGxvY0NoZWNrZXIsICJXYXJuIGFib3V0IGltcHJvcGVyIHVzZSBvZiAnW3N1cGVyIGRlYWxsb2NdJyBpbiBPYmplY3RpdmUtQyIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNvc3guY29jb2EuU3VwZXJEZWFsbG9jIikKK0NIRUNLRVIoIm9zeC5jb2NvYS5VbnVzZWRJdmFycyIsIE9iakNVbnVzZWRJdmFyc0NoZWNrZXIsICJXYXJuIGFib3V0IHByaXZhdGUgaXZhcnMgdGhhdCBhcmUgbmV2ZXIgdXNlZCIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNvc3guY29jb2EuVW51c2VkSXZhcnMiKQorQ0hFQ0tFUigib3B0aW4ucGVyZm9ybWFuY2UuUGFkZGluZyIsIFBhZGRpbmdDaGVja2VyLCAiQ2hlY2sgZm9yIGV4Y2Vzc2l2ZWx5IHBhZGRlZCBzdHJ1Y3RzLiIsICIiKQorQ0hFQ0tFUigiYWxwaGEub3N4LmNvY29hLmxvY2FsaXphYmlsaXR5LlBsdXJhbE1pc3VzZUNoZWNrZXIiLCBQbHVyYWxNaXN1c2VDaGVja2VyLCAiV2FybnMgYWdhaW5zdCB1c2luZyBvbmUgdnMuIG1hbnkgcGx1cmFsIHBhdHRlcm4gaW4gY29kZSB3aGVuIGdlbmVyYXRpbmcgbG9jYWxpemVkIHN0cmluZ3MuIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYWxwaGFfY2hlY2tzLmh0bWwjYWxwaGEub3N4LmNvY29hLmxvY2FsaXphYmlsaXR5LlBsdXJhbE1pc3VzZUNoZWNrZXIiKQorQ0hFQ0tFUigiYWxwaGEuY29yZS5Qb2ludGVyQXJpdGhtIiwgUG9pbnRlckFyaXRoQ2hlY2tlciwgIkNoZWNrIGZvciBwb2ludGVyIGFyaXRobWV0aWMgb24gbG9jYXRpb25zIG90aGVyIHRoYW4gYXJyYXkgZWxlbWVudHMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hbHBoYV9jaGVja3MuaHRtbCNhbHBoYS5jb3JlLlBvaW50ZXJBcml0aG0iKQorQ0hFQ0tFUigiYWxwaGEuY29yZS5Qb2ludGVyU3ViIiwgUG9pbnRlclN1YkNoZWNrZXIsICJDaGVjayBmb3IgcG9pbnRlciBzdWJ0cmFjdGlvbnMgb24gdHdvIHBvaW50ZXJzIHBvaW50aW5nIHRvIGRpZmZlcmVudCBtZW1vcnkgY2h1bmtzIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYWxwaGFfY2hlY2tzLmh0bWwjYWxwaGEuY29yZS5Qb2ludGVyU3ViIikKK0NIRUNLRVIoImFscGhhLnVuaXguUHRocmVhZExvY2siLCBQdGhyZWFkTG9ja0NoZWNrZXIsICJTaW1wbGUgbG9jayAtPiB1bmxvY2sgY2hlY2tlciIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2FscGhhX2NoZWNrcy5odG1sI2FscGhhLnVuaXguUHRocmVhZExvY2siKQorQ0hFQ0tFUigib3N4LmNvY29hLlJldGFpbkNvdW50QmFzZSIsIFJldGFpbkNvdW50QmFzZSwgIkNvbW1vbiBiYXNlIG9mIHZhcmlvdXMgcmV0YWluIGNvdW50IHJlbGF0ZWQgY2hlY2tlcnMiLCAiIikKK0NIRUNLRVIoIm9zeC5jb2NvYS5SZXRhaW5Db3VudCIsIFJldGFpbkNvdW50Q2hlY2tlciwgIkNoZWNrIGZvciBsZWFrcyBhbmQgaW1wcm9wZXIgcmVmZXJlbmNlIGNvdW50IG1hbmFnZW1lbnQiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjb3N4LmNvY29hLlJldGFpbkNvdW50IikKK0NIRUNLRVIoImFscGhhLnNlY3VyaXR5LlJldHVyblB0clJhbmdlIiwgUmV0dXJuUG9pbnRlclJhbmdlQ2hlY2tlciwgIkNoZWNrIGZvciBhbiBvdXQtb2YtYm91bmQgcG9pbnRlciBiZWluZyByZXR1cm5lZCB0byBjYWxsZXJzIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYWxwaGFfY2hlY2tzLmh0bWwjYWxwaGEuc2VjdXJpdHkuUmV0dXJuUHRyUmFuZ2UiKQorQ0hFQ0tFUigiY29yZS51bmluaXRpYWxpemVkLlVuZGVmUmV0dXJuIiwgUmV0dXJuVW5kZWZDaGVja2VyLCAiQ2hlY2sgZm9yIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIGJlaW5nIHJldHVybmVkIHRvIHRoZSBjYWxsZXIiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjY29yZS51bmluaXRpYWxpemVkLlVuZGVmUmV0dXJuIikKK0NIRUNLRVIoIm9zeC5jb2NvYS5SdW5Mb29wQXV0b3JlbGVhc2VMZWFrIiwgUnVuTG9vcEF1dG9yZWxlYXNlTGVha0NoZWNrZXIsICJDaGVjayBmb3IgbGVha2VkIG1lbW9yeSBpbiBhdXRvcmVsZWFzZSBwb29scyB0aGF0IHdpbGwgbmV2ZXIgYmUgZHJhaW5lZCIsICIiKQorQ0hFQ0tFUigic2VjdXJpdHkuaW5zZWN1cmVBUEkuU2VjdXJpdHlTeW50YXhDaGVja2VyIiwgU2VjdXJpdHlTeW50YXhDaGVja2VyLCAiQmFzZSBvZiB2YXJpb3VzIHNlY3VyaXR5IGZ1bmN0aW9uIHJlbGF0ZWQgY2hlY2tlcnMiLCAiIikKK0NIRUNLRVIoImFscGhhLnVuaXguU2ltcGxlU3RyZWFtIiwgU2ltcGxlU3RyZWFtQ2hlY2tlciwgIkNoZWNrIGZvciBtaXN1c2VzIG9mIHN0cmVhbSBBUElzIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYWxwaGFfY2hlY2tzLmh0bWwjYWxwaGEudW5peC5TaW1wbGVTdHJlYW0iKQorQ0hFQ0tFUigiYWxwaGEuY29yZS5TaXplb2ZQdHIiLCBTaXplb2ZQb2ludGVyQ2hlY2tlciwgIldhcm4gYWJvdXQgdW5pbnRlbmRlZCB1c2Ugb2Ygc2l6ZW9mKCkgb24gcG9pbnRlciBleHByZXNzaW9ucyIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2FscGhhX2NoZWNrcy5odG1sI2FscGhhLmNvcmUuU2l6ZW9mUHRyIikKK0NIRUNLRVIoImFscGhhLmNvcmUuU3RhY2tBZGRyZXNzQXN5bmNFc2NhcGUiLCBTdGFja0FkZHJBc3luY0VzY2FwZUNoZWNrZXIsICJDaGVjayB0aGF0IGFkZHJlc3NlcyB0byBzdGFjayBtZW1vcnkgZG8gbm90IGVzY2FwZSB0aGUgZnVuY3Rpb24iLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hbHBoYV9jaGVja3MuaHRtbCNhbHBoYS5jb3JlLlN0YWNrQWRkcmVzc0FzeW5jRXNjYXBlIikKK0NIRUNLRVIoImNvcmUuU3RhY2tBZGRyRXNjYXBlQmFzZSIsIFN0YWNrQWRkckVzY2FwZUJhc2UsICJHZW5lcmF0ZSBpbmZvcm1hdGlvbiBhYm91dCBzdGFjayBhZGRyZXNzIGVzY2FwZXMuIiwgIiIpCitDSEVDS0VSKCJjb3JlLlN0YWNrQWRkcmVzc0VzY2FwZSIsIFN0YWNrQWRkckVzY2FwZUNoZWNrZXIsICJDaGVjayB0aGF0IGFkZHJlc3NlcyB0byBzdGFjayBtZW1vcnkgZG8gbm90IGVzY2FwZSB0aGUgZnVuY3Rpb24iLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjY29yZS5TdGFja0FkZHJlc3NFc2NhcGUiKQorQ0hFQ0tFUigiYXBpTW9kZWxpbmcuU3RkQ0xpYnJhcnlGdW5jdGlvbnMiLCBTdGRDTGlicmFyeUZ1bmN0aW9uc0NoZWNrZXIsICJJbXByb3ZlIG1vZGVsaW5nIG9mIHRoZSBDIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb25zIiwgIiIpCitDSEVDS0VSKCJhbHBoYS51bml4LlN0cmVhbSIsIFN0cmVhbUNoZWNrZXIsICJDaGVjayBzdHJlYW0gaGFuZGxpbmcgZnVuY3Rpb25zIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYWxwaGFfY2hlY2tzLmh0bWwjYWxwaGEudW5peC5TdHJlYW0iKQorQ0hFQ0tFUigiZGVidWcuVGFpbnRUZXN0IiwgVGFpbnRUZXN0ZXJDaGVja2VyLCAiTWFyayB0YWludGVkIHN5bWJvbHMgYXMgc3VjaC4iLCAiIikKK0NIRUNLRVIoImFscGhhLmNvcmUuVGVzdEFmdGVyRGl2WmVybyIsIFRlc3RBZnRlckRpdlplcm9DaGVja2VyLCAiQ2hlY2sgZm9yIGRpdmlzaW9uIGJ5IHZhcmlhYmxlIHRoYXQgaXMgbGF0ZXIgY29tcGFyZWQgYWdhaW5zdCAwLiBFaXRoZXIgdGhlIGNvbXBhcmlzb24gaXMgdXNlbGVzcyBvciB0aGVyZSBpcyBkaXZpc2lvbiBieSB6ZXJvLiIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2FscGhhX2NoZWNrcy5odG1sI2FscGhhLmNvcmUuVGVzdEFmdGVyRGl2WmVybyIpCitDSEVDS0VSKCJkZWJ1Zy5EdW1wVHJhdmVyc2FsIiwgVHJhdmVyc2FsRHVtcGVyLCAiUHJpbnQgYnJhbmNoIGNvbmRpdGlvbnMgYXMgdGhleSBhcmUgdHJhdmVyc2VkIGJ5IHRoZSBlbmdpbmUiLCAiIikKK0NIRUNLRVIoImFwaU1vZGVsaW5nLlRydXN0Tm9ubnVsbCIsIFRydXN0Tm9ubnVsbENoZWNrZXIsICJUcnVzdCB0aGF0IHJldHVybnMgZnJvbSBmcmFtZXdvcmsgbWV0aG9kcyBhbm5vdGF0ZWQgd2l0aCBfTm9ubnVsbCBhcmUgbm90IG51bGwiLCAiIikKK0NIRUNLRVIoInNlY3VyaXR5Lmluc2VjdXJlQVBJLlVuY2hlY2tlZFJldHVybiIsIFVuY2hlY2tlZFJldHVybiwgIldhcm4gb24gdXNlcyBvZiBmdW5jdGlvbnMgd2hvc2UgcmV0dXJuIHZhbHVlcyBtdXN0IGJlIGFsd2F5cyBjaGVja2VkIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYXZhaWxhYmxlX2NoZWNrcy5odG1sI3NlY3VyaXR5Lmluc2VjdXJlQVBJLlVuY2hlY2tlZFJldHVybiIpCitDSEVDS0VSKCJjb3JlLnVuaW5pdGlhbGl6ZWQuQnJhbmNoIiwgVW5kZWZCcmFuY2hDaGVja2VyLCAiQ2hlY2sgZm9yIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIHVzZWQgYXMgYnJhbmNoIGNvbmRpdGlvbnMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjY29yZS51bmluaXRpYWxpemVkLkJyYW5jaCIpCitDSEVDS0VSKCJjb3JlLnVuaW5pdGlhbGl6ZWQuQ2FwdHVyZWRCbG9ja1ZhcmlhYmxlIiwgVW5kZWZDYXB0dXJlZEJsb2NrVmFyQ2hlY2tlciwgIkNoZWNrIGZvciBibG9ja3MgdGhhdCBjYXB0dXJlIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIiwgIiIpCitDSEVDS0VSKCJjb3JlLlVuZGVmaW5lZEJpbmFyeU9wZXJhdG9yUmVzdWx0IiwgVW5kZWZSZXN1bHRDaGVja2VyLCAiQ2hlY2sgZm9yIHVuZGVmaW5lZCByZXN1bHRzIG9mIGJpbmFyeSBvcGVyYXRvcnMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjY29yZS5VbmRlZmluZWRCaW5hcnlPcGVyYXRvclJlc3VsdCIpCitDSEVDS0VSKCJjb3JlLnVuaW5pdGlhbGl6ZWQuQXJyYXlTdWJzY3JpcHQiLCBVbmRlZmluZWRBcnJheVN1YnNjcmlwdENoZWNrZXIsICJDaGVjayBmb3IgdW5pbml0aWFsaXplZCB2YWx1ZXMgdXNlZCBhcyBhcnJheSBzdWJzY3JpcHRzIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYXZhaWxhYmxlX2NoZWNrcy5odG1sI2NvcmUudW5pbml0aWFsaXplZC5BcnJheVN1YnNjcmlwdCIpCitDSEVDS0VSKCJjb3JlLnVuaW5pdGlhbGl6ZWQuQXNzaWduIiwgVW5kZWZpbmVkQXNzaWdubWVudENoZWNrZXIsICJDaGVjayBmb3IgYXNzaWduaW5nIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYXZhaWxhYmxlX2NoZWNrcy5odG1sI2NvcmUudW5pbml0aWFsaXplZC5Bc3NpZ24iKQorQ0hFQ0tFUigidmFsaXN0LlVuaW5pdGlhbGl6ZWQiLCBVbmluaXRpYWxpemVkQ2hlY2tlciwgIkNoZWNrIGZvciB1c2FnZXMgb2YgdW5pbml0aWFsaXplZCAob3IgYWxyZWFkeSByZWxlYXNlZCkgdmFfbGlzdHMuIiwgIiIpCitDSEVDS0VSKCJhbHBoYS5jcGx1c3BsdXMuVW5pbml0aWFsaXplZE9iamVjdCIsIFVuaW5pdGlhbGl6ZWRPYmplY3RDaGVja2VyLCAiUmVwb3J0cyB1bmluaXRpYWxpemVkIGZpZWxkcyBhZnRlciBvYmplY3QgY29uc3RydWN0aW9uIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYWxwaGFfY2hlY2tzLmh0bWwjYWxwaGEuY3BsdXNwbHVzLlVuaW5pdGlhbGl6ZWRPYmplY3QiKQorQ0hFQ0tFUigidW5peC5BUEkiLCBVbml4QVBJTWlzdXNlQ2hlY2tlciwgIkNoZWNrIGNhbGxzIHRvIHZhcmlvdXMgVU5JWC9Qb3NpeCBmdW5jdGlvbnMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjdW5peC5BUEkiKQorQ0hFQ0tFUigib3B0aW4ucG9ydGFiaWxpdHkuVW5peEFQSSIsIFVuaXhBUElQb3J0YWJpbGl0eUNoZWNrZXIsICJGaW5kcyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkIGJlaGF2aW9yIGluIFVOSVgvUG9zaXggZnVuY3Rpb25zIiwgIiIpCitDSEVDS0VSKCJhbHBoYS5kZWFkY29kZS5VbnJlYWNoYWJsZUNvZGUiLCBVbnJlYWNoYWJsZUNvZGVDaGVja2VyLCAiQ2hlY2sgdW5yZWFjaGFibGUgY29kZSIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2FscGhhX2NoZWNrcy5odG1sI2FscGhhLmRlYWRjb2RlLlVucmVhY2hhYmxlQ29kZSIpCitDSEVDS0VSKCJ2YWxpc3QuVW50ZXJtaW5hdGVkIiwgVW50ZXJtaW5hdGVkQ2hlY2tlciwgIkNoZWNrIGZvciB2YV9saXN0cyB3aGljaCBhcmUgbm90IHJlbGVhc2VkIGJ5IGEgdmFfZW5kIGNhbGwuIiwgIiIpCitDSEVDS0VSKCJjb3JlLlZMQVNpemUiLCBWTEFTaXplQ2hlY2tlciwgIkNoZWNrIGZvciBkZWNsYXJhdGlvbnMgb2YgVkxBIG9mIHVuZGVmaW5lZCBvciB6ZXJvIHNpemUiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjY29yZS5WTEFTaXplIikKK0NIRUNLRVIoInZhbGlzdC5WYWxpc3RCYXNlIiwgVmFsaXN0QmFzZSwgIkdhdGhlcnMgaW5mb3JtYXRpb24gYWJvdXQgdmFfbGlzdHMuIiwgIiIpCitDSEVDS0VSKCJvc3guY29jb2EuVmFyaWFkaWNNZXRob2RUeXBlcyIsIFZhcmlhZGljTWV0aG9kVHlwZUNoZWNrZXIsICJDaGVjayBmb3IgcGFzc2luZyBub24tT2JqZWN0aXZlLUMgdHlwZXMgdG8gdmFyaWFkaWMgY29sbGVjdGlvbiBpbml0aWFsaXphdGlvbiBtZXRob2RzIHRoYXQgZXhwZWN0IG9ubHkgT2JqZWN0aXZlLUMgdHlwZXMiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjb3N4LmNvY29hLlZhcmlhZGljTWV0aG9kVHlwZXMiKQorQ0hFQ0tFUigidW5peC5WZm9yayIsIFZmb3JrQ2hlY2tlciwgIkNoZWNrIGZvciBwcm9wZXIgdXNhZ2Ugb2YgdmZvcmsiLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjdW5peC5WZm9yayIpCitDSEVDS0VSKCJvcHRpbi5jcGx1c3BsdXMuVmlydHVhbENhbGwiLCBWaXJ0dWFsQ2FsbENoZWNrZXIsICJDaGVjayB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxzIGR1cmluZyBjb25zdHJ1Y3Rpb24gb3IgZGVzdHJ1Y3Rpb24iLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjb3B0aW4uY3BsdXNwbHVzLlZpcnR1YWxDYWxsIikKK0NIRUNLRVIoInNlY3VyaXR5Lmluc2VjdXJlQVBJLmJjbXAiLCBiY21wLCAiV2FybiBvbiB1c2VzIG9mIHRoZSAnYmNtcCcgZnVuY3Rpb24iLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjc2VjdXJpdHkuaW5zZWN1cmVBUEkuYmNtcCIpCitDSEVDS0VSKCJzZWN1cml0eS5pbnNlY3VyZUFQSS5iY29weSIsIGJjb3B5LCAiV2FybiBvbiB1c2VzIG9mIHRoZSAnYmNvcHknIGZ1bmN0aW9uIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYXZhaWxhYmxlX2NoZWNrcy5odG1sI3NlY3VyaXR5Lmluc2VjdXJlQVBJLmJjb3B5IikKK0NIRUNLRVIoInNlY3VyaXR5Lmluc2VjdXJlQVBJLmJ6ZXJvIiwgYnplcm8sICJXYXJuIG9uIHVzZXMgb2YgdGhlICdiemVybycgZnVuY3Rpb24iLCAiaHR0cHM6Ly9jbGFuZy1hbmFseXplci5sbHZtLm9yZy9hdmFpbGFibGVfY2hlY2tzLmh0bWwjc2VjdXJpdHkuaW5zZWN1cmVBUEkuYnplcm8iKQorQ0hFQ0tFUigic2VjdXJpdHkuaW5zZWN1cmVBUEkuZ2V0cHciLCBnZXRwdywgIldhcm4gb24gdXNlcyBvZiB0aGUgJ2dldHB3JyBmdW5jdGlvbiIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNzZWN1cml0eS5pbnNlY3VyZUFQSS5nZXRwdyIpCitDSEVDS0VSKCJzZWN1cml0eS5pbnNlY3VyZUFQSS5nZXRzIiwgZ2V0cywgIldhcm4gb24gdXNlcyBvZiB0aGUgJ2dldHMnIGZ1bmN0aW9uIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYXZhaWxhYmxlX2NoZWNrcy5odG1sI3NlY3VyaXR5Lmluc2VjdXJlQVBJLmdldHMiKQorQ0hFQ0tFUigic2VjdXJpdHkuaW5zZWN1cmVBUEkubWtzdGVtcCIsIG1rc3RlbXAsICJXYXJuIHdoZW4gJ21rc3RlbXAnIGlzIHBhc3NlZCBmZXdlciB0aGFuIDYgWCdzIGluIHRoZSBmb3JtYXQgc3RyaW5nIiwgImh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvYXZhaWxhYmxlX2NoZWNrcy5odG1sI3NlY3VyaXR5Lmluc2VjdXJlQVBJLm1rc3RlbXAiKQorQ0hFQ0tFUigic2VjdXJpdHkuaW5zZWN1cmVBUEkubWt0ZW1wIiwgbWt0ZW1wLCAiV2FybiBvbiB1c2VzIG9mIHRoZSAnbWt0ZW1wJyBmdW5jdGlvbiIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNzZWN1cml0eS5pbnNlY3VyZUFQSS5ta3RlbXAiKQorQ0hFQ0tFUigic2VjdXJpdHkuaW5zZWN1cmVBUEkucmFuZCIsIHJhbmQsICJXYXJuIG9uIHVzZXMgb2YgdGhlICdyYW5kJywgJ3JhbmRvbScsIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNzZWN1cml0eS5pbnNlY3VyZUFQSS5yYW5kIikKK0NIRUNLRVIoInNlY3VyaXR5Lmluc2VjdXJlQVBJLnN0cmNweSIsIHN0cmNweSwgIldhcm4gb24gdXNlcyBvZiB0aGUgJ3N0cmNweScgYW5kICdzdHJjYXQnIGZ1bmN0aW9ucyIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNzZWN1cml0eS5pbnNlY3VyZUFQSS5zdHJjcHkiKQorQ0hFQ0tFUigic2VjdXJpdHkuaW5zZWN1cmVBUEkudmZvcmsiLCB2Zm9yaywgIldhcm4gb24gdXNlcyBvZiB0aGUgJ3Zmb3JrJyBmdW5jdGlvbiIsICJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnL2F2YWlsYWJsZV9jaGVja3MuaHRtbCNzZWN1cml0eS5pbnNlY3VyZUFQSS52Zm9yayIpCisKICNlbmRpZiAvLyBHRVRfQ0hFQ0tFUlMKIAogCi0jaWZkZWYgR0VUX01FTUJFUl9BUlJBWVMKLXN0YXRpYyBjb25zdCBzaG9ydCBTdWJQYWNrYWdlQXJyYXkwW10gPSB7IDMsIDE3LCAyNCwgMzQsIDQyLCAyNiwgMSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBTdWJQYWNrYWdlQXJyYXkxW10gPSB7IDIsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MltdID0geyAyOCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBTdWJQYWNrYWdlQXJyYXkzW10gPSB7IDQsIDYsIDcsIDgsIDExLCAxMCwgMTIsIDEzLCAxNCwgNSwgMTYsIDksIDE1LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTRbXSA9IHsgNiwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXk1W10gPSB7IDIwLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTZbXSA9IHsgMjQsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5N1tdID0geyAyNSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXk4W10gPSB7IDMwLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTlbXSA9IHsgMzksIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTBbXSA9IHsgNDQsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTFbXSA9IHsgNDksIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTJbXSA9IHsgOTcsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTNbXSA9IHsgOTgsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTRbXSA9IHsgMTA1LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTE1W10gPSB7IDEwNiwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxNltdID0geyAxMTEsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgU3ViUGFja2FnZUFycmF5MTdbXSA9IHsgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxOFtdID0geyAzMywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxOVtdID0geyA1MiwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkyMFtdID0geyA1MywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkyMVtdID0geyA2MywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkyMltdID0geyA2NSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkyM1tdID0geyAxMjEsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgU3ViUGFja2FnZUFycmF5MjRbXSA9IHsgMjUsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MjVbXSA9IHsgMTI0LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IFN1YlBhY2thZ2VBcnJheTI2W10gPSB7IDI3LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IFN1YlBhY2thZ2VBcnJheTI3W10gPSB7IDMyLCAzMCwgMzEsIDI4LCAyOSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkyOFtdID0geyAzNSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkyOVtdID0geyAzNiwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkzMFtdID0geyA1MSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkzMVtdID0geyA2NCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBTdWJQYWNrYWdlQXJyYXkzMltdID0geyAzMywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkzM1tdID0geyA5NiwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBTdWJQYWNrYWdlQXJyYXkzNFtdID0geyA0MCwgMzUsIDM2LCAzOSwgMzcsIDM4LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTM1W10gPSB7IDIsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MzZbXSA9IHsgMywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkzN1tdID0geyA2MCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkzOFtdID0geyA2NiwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkzOVtdID0geyAxMDEsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgU3ViUGFja2FnZUFycmF5NDBbXSA9IHsgNDEsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5NDFbXSA9IHsgNDgsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgU3ViUGFja2FnZUFycmF5NDJbXSA9IHsgNDgsIDQ0LCA0NSwgNDcsIDQ2LCA0MywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXk0M1tdID0geyA1LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTQ0W10gPSB7IDI2LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTQ1W10gPSB7IDk5LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTQ2W10gPSB7IDEwNCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXk0N1tdID0geyAxMDksIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgU3ViUGFja2FnZUFycmF5NDhbXSA9IHsgNTEsIDQ5LCA1MCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXk0OVtdID0geyAxMywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXk1MFtdID0geyAxNCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXk1MVtdID0geyAxNiwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBTdWJQYWNrYWdlQXJyYXk1MltdID0geyA1NSwgNTMsIDU0LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTUzW10gPSB7IDEwOCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXk1NFtdID0geyAxMTMsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgU3ViUGFja2FnZUFycmF5NTVbXSA9IHsgNTYsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5NTZbXSA9IHsgNDcsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgU3ViUGFja2FnZUFycmF5NTdbXSA9IHsgNjcsIDcwLCA2MywgNTgsIDYxLCA2NiwgNTksIDY1LCA2NCwgNjAsIDYyLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTU4W10gPSB7IDE5LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTU5W10gPSB7IDM3LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTYwW10gPSB7IDQwLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTYxW10gPSB7IDc0LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTYyW10gPSB7IDc1LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTYzW10gPSB7IDM0LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTY0W10gPSB7IDEwNywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXk2NVtdID0geyAxMTcsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5NjZbXSA9IHsgMTI2LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IFN1YlBhY2thZ2VBcnJheTY3W10gPSB7IDY5LCA2OCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXk2OFtdID0geyA3LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTY5W10gPSB7IDcyLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IFN1YlBhY2thZ2VBcnJheTcwW10gPSB7IDcxLCA3MiwgNzMsIDc0LCA3NSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXk3MVtdID0geyAxMTgsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5NzJbXSA9IHsgMTE5LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTczW10gPSB7IDExNSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXk3NFtdID0geyAxMTYsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5NzVbXSA9IHsgMTAyLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IFN1YlBhY2thZ2VBcnJheTc2W10gPSB7IDc3LCA3OCwgNzksIDgwLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTc3W10gPSB7IDUwLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTc4W10gPSB7IDY5LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTc5W10gPSB7IDcwLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTgwW10gPSB7IDE4LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IFN1YlBhY2thZ2VBcnJheTgxW10gPSB7IDgyLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTgyW10gPSB7IDMyLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IFN1YlBhY2thZ2VBcnJheTgzW10gPSB7IDg0LCA4OSwgOTAsIDk1LCA4NiwgOTYsIDg3LCA4NSwgOTEsIDg4LCA5MywgOTQsIDkyLCA5NywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXk4NFtdID0geyAwLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTg1W10gPSB7IDI5LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTg2W10gPSB7IDksIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5ODdbXSA9IHsgMjIsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5ODhbXSA9IHsgMjEsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5ODlbXSA9IHsgMzgsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5OTBbXSA9IHsgNTUsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5OTFbXSA9IHsgMTEyLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTkyW10gPSB7IDQzLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTkzW10gPSB7IDEsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5OTRbXSA9IHsgMTEwLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTk1W10gPSB7IDEwLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTk2W10gPSB7IDIzLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTk3W10gPSB7IDQyLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IFN1YlBhY2thZ2VBcnJheTk4W10gPSB7IDk5LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTk5W10gPSB7IDU0LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IFN1YlBhY2thZ2VBcnJheTEwMFtdID0geyAxMDEsIDEwMiwgMTAzLCAxMDQsIDEwNSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxMDFbXSA9IHsgNzYsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTAyW10gPSB7IDc3LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTEwM1tdID0geyA3OCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxMDRbXSA9IHsgNzksIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTA1W10gPSB7IDgwLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IFN1YlBhY2thZ2VBcnJheTEwNltdID0geyAxMTksIDEwNywgMTE2LCAxMTEsIDEwOSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBTdWJQYWNrYWdlQXJyYXkxMDdbXSA9IHsgMTA4LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTEwOFtdID0geyAxMjksIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgU3ViUGFja2FnZUFycmF5MTA5W10gPSB7IDExMCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxMTBbXSA9IHsgNTYsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgU3ViUGFja2FnZUFycmF5MTExW10gPSB7IDExMiwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBTdWJQYWNrYWdlQXJyYXkxMTJbXSA9IHsgMTEzLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IFN1YlBhY2thZ2VBcnJheTExM1tdID0geyAxMTUsIDExNCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxMTRbXSA9IHsgNDEsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTE1W10gPSB7IDczLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IFN1YlBhY2thZ2VBcnJheTExNltdID0geyAxMTgsIDExNywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxMTdbXSA9IHsgNDYsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTE4W10gPSB7IDk1LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IFN1YlBhY2thZ2VBcnJheTExOVtdID0geyAxMjAsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTIwW10gPSB7IDEyMywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBTdWJQYWNrYWdlQXJyYXkxMjFbXSA9IHsgMTI2LCAxNDUsIDEyMywgMTIyLCAxMjUsIDEyNCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxMjJbXSA9IHsgNTgsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTIzW10gPSB7IDgxLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTEyNFtdID0geyA5MCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxMjVbXSA9IHsgNTcsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgU3ViUGFja2FnZUFycmF5MTI2W10gPSB7IDE0MCwgMTI3LCAxMzYsIDEyOSwgMTQ0LCAxMzQsIDEzMSwgMTQzLCAxNDEsIDEzMiwgMTM3LCAxMzMsIDEzNSwgMTM5LCAxMzgsIDEzMCwgMTQyLCAxMjgsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTI3W10gPSB7IDgyLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTEyOFtdID0geyA0LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTEyOVtdID0geyAyNywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxMzBbXSA9IHsgODUsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTMxW10gPSB7IDg4LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTEzMltdID0geyA4NywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxMzNbXSA9IHsgOTIsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTM0W10gPSB7IDY3LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTEzNVtdID0geyA2OCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxMzZbXSA9IHsgNzEsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTM3W10gPSB7IDg5LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTEzOFtdID0geyA4NiwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxMzlbXSA9IHsgMTAwLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTE0MFtdID0geyAxMDMsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTQxW10gPSB7IDkxLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTE0MltdID0geyA5MywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxNDNbXSA9IHsgOTQsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTQ0W10gPSB7IDEyNywgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBTdWJQYWNrYWdlQXJyYXkxNDVbXSA9IHsgMTQ5LCAxNDcsIDE0OCwgMTQ2LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTE0NltdID0geyA4LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTE0N1tdID0geyAxMSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxNDhbXSA9IHsgMTIsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgU3ViUGFja2FnZUFycmF5MTQ5W10gPSB7IDE1MSwgMTUwLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTE1MFtdID0geyA4NCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxNTFbXSA9IHsgODMsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgU3ViUGFja2FnZUFycmF5MTUyW10gPSB7IDE1NCwgMTUzLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTE1M1tdID0geyA0NSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBTdWJQYWNrYWdlQXJyYXkxNTRbXSA9IHsgMTU2LCAxNTcsIDE1OCwgMTYwLCAxNTksIDE2MiwgMTYxLCAxNjMsIDE2NCwgMTY1LCAxNTUsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTU1W10gPSB7IDExNCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxNTZbXSA9IHsgMTMwLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTE1N1tdID0geyAxMzEsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTU4W10gPSB7IDEzMiwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxNTlbXSA9IHsgMTMzLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTE2MFtdID0geyAxMzQsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTYxW10gPSB7IDEzNSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxNjJbXSA9IHsgMTM2LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTE2M1tdID0geyAxMzcsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTY0W10gPSB7IDEzOCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxNjVbXSA9IHsgMTM5LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IFN1YlBhY2thZ2VBcnJheTE2NltdID0geyAxNzIsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcxLCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTE2N1tdID0geyAxMjIsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTY4W10gPSB7IDU5LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTE2OVtdID0geyA2MSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxNzBbXSA9IHsgNjIsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTcxW10gPSB7IDEyOCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBTdWJQYWNrYWdlQXJyYXkxNzJbXSA9IHsgMTc0LCAxNzMsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTczW10gPSB7IDE3LCAtMSB9Owotc3RhdGljIGNvbnN0IHNob3J0IENoZWNrZXJBcnJheTE3NFtdID0geyAxNSwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBTdWJQYWNrYWdlQXJyYXkxNzVbXSA9IHsgMTc3LCAxNzgsIDE3NiwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxNzZbXSA9IHsgMzEsIC0xIH07Ci1zdGF0aWMgY29uc3Qgc2hvcnQgQ2hlY2tlckFycmF5MTc3W10gPSB7IDEyMCwgLTEgfTsKLXN0YXRpYyBjb25zdCBzaG9ydCBDaGVja2VyQXJyYXkxNzhbXSA9IHsgMTI1LCAtMSB9OwotI2VuZGlmIC8vIEdFVF9NRU1CRVJfQVJSQVlTCisjaWZkZWYgR0VUX0NIRUNLRVJfREVQRU5ERU5DSUVTCitDSEVDS0VSX0RFUEVOREVOQ1koIm9zeC5jb3JlRm91bmRhdGlvbi5DRkVycm9yIiwgIm9zeC5OU09yQ0ZFcnJvckRlcmVmQ2hlY2tlciIpCitDSEVDS0VSX0RFUEVOREVOQ1koImFscGhhLnVuaXguY3N0cmluZy5CdWZmZXJPdmVybGFwIiwgInVuaXguY3N0cmluZy5DU3RyaW5nTW9kZWxpbmciKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJhbHBoYS51bml4LmNzdHJpbmcuTm90TnVsbFRlcm1pbmF0ZWQiLCAidW5peC5jc3RyaW5nLkNTdHJpbmdNb2RlbGluZyIpCitDSEVDS0VSX0RFUEVOREVOQ1koInVuaXguY3N0cmluZy5OdWxsQXJnIiwgInVuaXguY3N0cmluZy5DU3RyaW5nTW9kZWxpbmciKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJhbHBoYS51bml4LmNzdHJpbmcuT3V0T2ZCb3VuZHMiLCAidW5peC5jc3RyaW5nLkNTdHJpbmdNb2RlbGluZyIpCitDSEVDS0VSX0RFUEVOREVOQ1koInVuaXguY3N0cmluZy5CYWRTaXplQXJnIiwgInVuaXguY3N0cmluZy5DU3RyaW5nTW9kZWxpbmciKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJhbHBoYS5jb3JlLkNhbGxBbmRNZXNzYWdlVW5Jbml0UmVmQXJnIiwgImNvcmUuQ2FsbEFuZE1lc3NhZ2UiKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJ2YWxpc3QuQ29weVRvU2VsZiIsICJ2YWxpc3QuVmFsaXN0QmFzZSIpCitDSEVDS0VSX0RFUEVOREVOQ1koInNlY3VyaXR5Lmluc2VjdXJlQVBJLkRlcHJlY2F0ZWRPclVuc2FmZUJ1ZmZlckhhbmRsaW5nIiwgInNlY3VyaXR5Lmluc2VjdXJlQVBJLlNlY3VyaXR5U3ludGF4Q2hlY2tlciIpCitDSEVDS0VSX0RFUEVOREVOQ1koImFscGhhLm9zeC5jb2NvYS5EaXJlY3RJdmFyQXNzaWdubWVudEZvckFubm90YXRlZEZ1bmN0aW9ucyIsICJhbHBoYS5vc3guY29jb2EuRGlyZWN0SXZhckFzc2lnbm1lbnQiKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJ1bml4LkR5bmFtaWNNZW1vcnlNb2RlbGluZyIsICJ1bml4LmNzdHJpbmcuQ1N0cmluZ01vZGVsaW5nIikKK0NIRUNLRVJfREVQRU5ERU5DWSgic2VjdXJpdHkuRmxvYXRMb29wQ291bnRlciIsICJzZWN1cml0eS5pbnNlY3VyZUFQSS5TZWN1cml0eVN5bnRheENoZWNrZXIiKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJjcGx1c3BsdXMuSW5uZXJQb2ludGVyIiwgInVuaXguRHluYW1pY01lbW9yeU1vZGVsaW5nIikKK0NIRUNLRVJfREVQRU5ERU5DWSgiYWxwaGEub3N4LmNvY29hLkluc3RhbmNlVmFyaWFibGVJbnZhbGlkYXRpb24iLCAiYWxwaGEub3N4LmNvY29hLkl2YXJJbnZhbGlkYXRpb25Nb2RlbGluZyIpCitDSEVDS0VSX0RFUEVOREVOQ1koImFscGhhLmNwbHVzcGx1cy5JbnZhbGlkYXRlZEl0ZXJhdG9yIiwgImFscGhhLmNwbHVzcGx1cy5JdGVyYXRvck1vZGVsaW5nIikKK0NIRUNLRVJfREVQRU5ERU5DWSgiYWxwaGEuY3BsdXNwbHVzLkl0ZXJhdG9yUmFuZ2UiLCAiYWxwaGEuY3BsdXNwbHVzLkl0ZXJhdG9yTW9kZWxpbmciKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJ1bml4Lk1hbGxvYyIsICJ1bml4LkR5bmFtaWNNZW1vcnlNb2RlbGluZyIpCitDSEVDS0VSX0RFUEVOREVOQ1koInVuaXguTWlzbWF0Y2hlZERlYWxsb2NhdG9yIiwgInVuaXguRHluYW1pY01lbW9yeU1vZGVsaW5nIikKK0NIRUNLRVJfREVQRU5ERU5DWSgiYWxwaGEuY3BsdXNwbHVzLk1pc21hdGNoZWRJdGVyYXRvciIsICJhbHBoYS5jcGx1c3BsdXMuSXRlcmF0b3JNb2RlbGluZyIpCitDSEVDS0VSX0RFUEVOREVOQ1koImFscGhhLm9zeC5jb2NvYS5NaXNzaW5nSW52YWxpZGF0aW9uTWV0aG9kIiwgImFscGhhLm9zeC5jb2NvYS5JdmFySW52YWxpZGF0aW9uTW9kZWxpbmciKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJvc3guY29jb2EuTlNFcnJvciIsICJvc3guTlNPckNGRXJyb3JEZXJlZkNoZWNrZXIiKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJjcGx1c3BsdXMuTmV3RGVsZXRlIiwgInVuaXguRHluYW1pY01lbW9yeU1vZGVsaW5nIikKK0NIRUNLRVJfREVQRU5ERU5DWSgiY3BsdXNwbHVzLk5ld0RlbGV0ZUxlYWtzIiwgImNwbHVzcGx1cy5OZXdEZWxldGUiKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJudWxsYWJpbGl0eS5OdWxsUGFzc2VkVG9Ob25udWxsIiwgIm51bGxhYmlsaXR5Lk51bGxhYmlsaXR5QmFzZSIpCitDSEVDS0VSX0RFUEVOREVOQ1koIm51bGxhYmlsaXR5Lk51bGxSZXR1cm5lZEZyb21Ob25udWxsIiwgIm51bGxhYmlsaXR5Lk51bGxhYmlsaXR5QmFzZSIpCitDSEVDS0VSX0RFUEVOREVOQ1koIm51bGxhYmlsaXR5Lk51bGxhYmxlRGVyZWZlcmVuY2VkIiwgIm51bGxhYmlsaXR5Lk51bGxhYmlsaXR5QmFzZSIpCitDSEVDS0VSX0RFUEVOREVOQ1koIm51bGxhYmlsaXR5Lk51bGxhYmxlUGFzc2VkVG9Ob25udWxsIiwgIm51bGxhYmlsaXR5Lk51bGxhYmlsaXR5QmFzZSIpCitDSEVDS0VSX0RFUEVOREVOQ1koIm51bGxhYmlsaXR5Lk51bGxhYmxlUmV0dXJuZWRGcm9tTm9ubnVsbCIsICJudWxsYWJpbGl0eS5OdWxsYWJpbGl0eUJhc2UiKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJvc3guT1NPYmplY3RSZXRhaW5Db3VudCIsICJvc3guY29jb2EuUmV0YWluQ291bnRCYXNlIikKK0NIRUNLRVJfREVQRU5ERU5DWSgib3N4LmNvY29hLk9iakNHZW5lcmljcyIsICJjb3JlLkR5bmFtaWNUeXBlUHJvcGFnYXRpb24iKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJvc3guY29jb2EuUmV0YWluQ291bnQiLCAib3N4LmNvY29hLlJldGFpbkNvdW50QmFzZSIpCitDSEVDS0VSX0RFUEVOREVOQ1koImFscGhhLmNvcmUuU3RhY2tBZGRyZXNzQXN5bmNFc2NhcGUiLCAiY29yZS5TdGFja0FkZHJFc2NhcGVCYXNlIikKK0NIRUNLRVJfREVQRU5ERU5DWSgiY29yZS5TdGFja0FkZHJlc3NFc2NhcGUiLCAiY29yZS5TdGFja0FkZHJFc2NhcGVCYXNlIikKK0NIRUNLRVJfREVQRU5ERU5DWSgic2VjdXJpdHkuaW5zZWN1cmVBUEkuVW5jaGVja2VkUmV0dXJuIiwgInNlY3VyaXR5Lmluc2VjdXJlQVBJLlNlY3VyaXR5U3ludGF4Q2hlY2tlciIpCitDSEVDS0VSX0RFUEVOREVOQ1koInZhbGlzdC5VbnRlcm1pbmF0ZWQiLCAidmFsaXN0LlZhbGlzdEJhc2UiKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJzZWN1cml0eS5pbnNlY3VyZUFQSS5iY21wIiwgInNlY3VyaXR5Lmluc2VjdXJlQVBJLlNlY3VyaXR5U3ludGF4Q2hlY2tlciIpCitDSEVDS0VSX0RFUEVOREVOQ1koInNlY3VyaXR5Lmluc2VjdXJlQVBJLmJjb3B5IiwgInNlY3VyaXR5Lmluc2VjdXJlQVBJLlNlY3VyaXR5U3ludGF4Q2hlY2tlciIpCitDSEVDS0VSX0RFUEVOREVOQ1koInNlY3VyaXR5Lmluc2VjdXJlQVBJLmJ6ZXJvIiwgInNlY3VyaXR5Lmluc2VjdXJlQVBJLlNlY3VyaXR5U3ludGF4Q2hlY2tlciIpCitDSEVDS0VSX0RFUEVOREVOQ1koInNlY3VyaXR5Lmluc2VjdXJlQVBJLmdldHB3IiwgInNlY3VyaXR5Lmluc2VjdXJlQVBJLlNlY3VyaXR5U3ludGF4Q2hlY2tlciIpCitDSEVDS0VSX0RFUEVOREVOQ1koInNlY3VyaXR5Lmluc2VjdXJlQVBJLmdldHMiLCAic2VjdXJpdHkuaW5zZWN1cmVBUEkuU2VjdXJpdHlTeW50YXhDaGVja2VyIikKK0NIRUNLRVJfREVQRU5ERU5DWSgic2VjdXJpdHkuaW5zZWN1cmVBUEkubWtzdGVtcCIsICJzZWN1cml0eS5pbnNlY3VyZUFQSS5TZWN1cml0eVN5bnRheENoZWNrZXIiKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJzZWN1cml0eS5pbnNlY3VyZUFQSS5ta3RlbXAiLCAic2VjdXJpdHkuaW5zZWN1cmVBUEkuU2VjdXJpdHlTeW50YXhDaGVja2VyIikKK0NIRUNLRVJfREVQRU5ERU5DWSgic2VjdXJpdHkuaW5zZWN1cmVBUEkucmFuZCIsICJzZWN1cml0eS5pbnNlY3VyZUFQSS5TZWN1cml0eVN5bnRheENoZWNrZXIiKQorQ0hFQ0tFUl9ERVBFTkRFTkNZKCJzZWN1cml0eS5pbnNlY3VyZUFQSS5zdHJjcHkiLCAic2VjdXJpdHkuaW5zZWN1cmVBUEkuU2VjdXJpdHlTeW50YXhDaGVja2VyIikKK0NIRUNLRVJfREVQRU5ERU5DWSgic2VjdXJpdHkuaW5zZWN1cmVBUEkudmZvcmsiLCAic2VjdXJpdHkuaW5zZWN1cmVBUEkuU2VjdXJpdHlTeW50YXhDaGVja2VyIikKIAotCi0jaWZkZWYgR0VUX0NIRUNLTkFNRV9UQUJMRQotICB7ICJhbHBoYSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFN1YlBhY2thZ2VBcnJheTAsIGZhbHNlIH0sCi0gIHsgImFscGhhLmNsb25lIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgU3ViUGFja2FnZUFycmF5MSwgdHJ1ZSB9LAotICB7ICJhbHBoYS5jbG9uZS5DbG9uZUNoZWNrZXIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTIsIDAsIGZhbHNlIH0sCi0gIHsgImFscGhhLmNvcmUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgU3ViUGFja2FnZUFycmF5MywgdHJ1ZSB9LAotICB7ICJhbHBoYS5jb3JlLkJvb2xBc3NpZ25tZW50IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTQsIDAsIGZhbHNlIH0sCi0gIHsgImFscGhhLmNvcmUuQ2FsbEFuZE1lc3NhZ2VVbkluaXRSZWZBcmciLCAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5NSwgMCwgZmFsc2UgfSwKLSAgeyAiYWxwaGEuY29yZS5DYXN0U2l6ZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk2LCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS5jb3JlLkNhc3RUb1N0cnVjdCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTcsIDAsIGZhbHNlIH0sCi0gIHsgImFscGhhLmNvcmUuQ29udmVyc2lvbiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5OCwgMCwgZmFsc2UgfSwKLSAgeyAiYWxwaGEuY29yZS5EeW5hbWljVHlwZUNoZWNrZXIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk5LCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS5jb3JlLkZpeGVkQWRkciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTEwLCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS5jb3JlLklkZW50aWNhbEV4cHIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTExLCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS5jb3JlLlBvaW50ZXJBcml0aG0iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTEyLCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS5jb3JlLlBvaW50ZXJTdWIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTEzLCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS5jb3JlLlNpemVvZlB0ciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE0LCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS5jb3JlLlN0YWNrQWRkcmVzc0FzeW5jRXNjYXBlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE1LCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS5jb3JlLlRlc3RBZnRlckRpdlplcm8iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE2LCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS5jcGx1c3BsdXMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFN1YlBhY2thZ2VBcnJheTE3LCB0cnVlIH0sCi0gIHsgImFscGhhLmNwbHVzcGx1cy5EZWxldGVXaXRoTm9uVmlydHVhbER0b3IiLCAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTgsIDAsIGZhbHNlIH0sCi0gIHsgImFscGhhLmNwbHVzcGx1cy5JbnZhbGlkYXRlZEl0ZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTksIDAsIGZhbHNlIH0sCi0gIHsgImFscGhhLmNwbHVzcGx1cy5JdGVyYXRvclJhbmdlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MjAsIDAsIGZhbHNlIH0sCi0gIHsgImFscGhhLmNwbHVzcGx1cy5NaXNtYXRjaGVkSXRlcmF0b3IiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MjEsIDAsIGZhbHNlIH0sCi0gIHsgImFscGhhLmNwbHVzcGx1cy5NaXN1c2VkTW92ZWRPYmplY3QiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MjIsIDAsIGZhbHNlIH0sCi0gIHsgImFscGhhLmNwbHVzcGx1cy5VbmluaXRpYWxpemVkT2JqZWN0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MjMsIDAsIGZhbHNlIH0sCi0gIHsgImFscGhhLmRlYWRjb2RlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgU3ViUGFja2FnZUFycmF5MjQsIHRydWUgfSwKLSAgeyAiYWxwaGEuZGVhZGNvZGUuVW5yZWFjaGFibGVDb2RlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkyNSwgMCwgZmFsc2UgfSwKLSAgeyAiYWxwaGEub3N4IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXkyNiwgdHJ1ZSB9LAotICB7ICJhbHBoYS5vc3guY29jb2EiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFN1YlBhY2thZ2VBcnJheTI3LCB0cnVlIH0sCi0gIHsgImFscGhhLm9zeC5jb2NvYS5EaXJlY3RJdmFyQXNzaWdubWVudCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MjgsIDAsIGZhbHNlIH0sCi0gIHsgImFscGhhLm9zeC5jb2NvYS5EaXJlY3RJdmFyQXNzaWdubWVudEZvckFubm90YXRlZEZ1bmN0aW9ucyIsICAgICAgQ2hlY2tlckFycmF5MjksIDAsIGZhbHNlIH0sCi0gIHsgImFscGhhLm9zeC5jb2NvYS5JbnN0YW5jZVZhcmlhYmxlSW52YWxpZGF0aW9uIiwgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MzAsIDAsIGZhbHNlIH0sCi0gIHsgImFscGhhLm9zeC5jb2NvYS5NaXNzaW5nSW52YWxpZGF0aW9uTWV0aG9kIiwgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MzEsIDAsIGZhbHNlIH0sCi0gIHsgImFscGhhLm9zeC5jb2NvYS5sb2NhbGl6YWJpbGl0eSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgU3ViUGFja2FnZUFycmF5MzIsIHRydWUgfSwKLSAgeyAiYWxwaGEub3N4LmNvY29hLmxvY2FsaXphYmlsaXR5LlBsdXJhbE1pc3VzZUNoZWNrZXIiLCAgICAgICAgICAgICBDaGVja2VyQXJyYXkzMywgMCwgZmFsc2UgfSwKLSAgeyAiYWxwaGEuc2VjdXJpdHkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXkzNCwgdHJ1ZSB9LAotICB7ICJhbHBoYS5zZWN1cml0eS5BcnJheUJvdW5kIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTM1LCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS5zZWN1cml0eS5BcnJheUJvdW5kVjIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTM2LCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS5zZWN1cml0eS5NYWxsb2NPdmVyZmxvdyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTM3LCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS5zZWN1cml0eS5NbWFwV3JpdGVFeGVjIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTM4LCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS5zZWN1cml0eS5SZXR1cm5QdHJSYW5nZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTM5LCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS5zZWN1cml0eS50YWludCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFN1YlBhY2thZ2VBcnJheTQwLCB0cnVlIH0sCi0gIHsgImFscGhhLnNlY3VyaXR5LnRhaW50LlRhaW50UHJvcGFnYXRpb24iLCAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5NDEsIDAsIGZhbHNlIH0sCi0gIHsgImFscGhhLnVuaXgiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgU3ViUGFja2FnZUFycmF5NDIsIHRydWUgfSwKLSAgeyAiYWxwaGEudW5peC5CbG9ja0luQ3JpdGljYWxTZWN0aW9uIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk0MywgMCwgZmFsc2UgfSwKLSAgeyAiYWxwaGEudW5peC5DaHJvb3QiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk0NCwgMCwgZmFsc2UgfSwKLSAgeyAiYWxwaGEudW5peC5QdGhyZWFkTG9jayIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk0NSwgMCwgZmFsc2UgfSwKLSAgeyAiYWxwaGEudW5peC5TaW1wbGVTdHJlYW0iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk0NiwgMCwgZmFsc2UgfSwKLSAgeyAiYWxwaGEudW5peC5TdHJlYW0iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk0NywgMCwgZmFsc2UgfSwKLSAgeyAiYWxwaGEudW5peC5jc3RyaW5nIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXk0OCwgdHJ1ZSB9LAotICB7ICJhbHBoYS51bml4LmNzdHJpbmcuQnVmZmVyT3ZlcmxhcCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTQ5LCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS51bml4LmNzdHJpbmcuTm90TnVsbFRlcm1pbmF0ZWQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTUwLCAwLCBmYWxzZSB9LAotICB7ICJhbHBoYS51bml4LmNzdHJpbmcuT3V0T2ZCb3VuZHMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTUxLCAwLCBmYWxzZSB9LAotICB7ICJhcGlNb2RlbGluZyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFN1YlBhY2thZ2VBcnJheTUyLCB0cnVlIH0sCi0gIHsgImFwaU1vZGVsaW5nLlN0ZENMaWJyYXJ5RnVuY3Rpb25zIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5NTMsIDAsIGZhbHNlIH0sCi0gIHsgImFwaU1vZGVsaW5nLlRydXN0Tm9ubnVsbCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5NTQsIDAsIGZhbHNlIH0sCi0gIHsgImFwaU1vZGVsaW5nLmdvb2dsZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgU3ViUGFja2FnZUFycmF5NTUsIHRydWUgfSwKLSAgeyAiYXBpTW9kZWxpbmcuZ29vZ2xlLkdUZXN0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk1NiwgMCwgZmFsc2UgfSwKLSAgeyAiY29yZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXk1NywgZmFsc2UgfSwKLSAgeyAiY29yZS5DYWxsQW5kTWVzc2FnZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk1OCwgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS5EaXZpZGVaZXJvIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk1OSwgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS5EeW5hbWljVHlwZVByb3BhZ2F0aW9uIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk2MCwgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS5Ob25OdWxsUGFyYW1DaGVja2VyIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk2MSwgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS5Ob25uaWxTdHJpbmdDb25zdGFudHMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk2MiwgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS5OdWxsRGVyZWZlcmVuY2UiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk2MywgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS5TdGFja0FkZHJlc3NFc2NhcGUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk2NCwgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS5VbmRlZmluZWRCaW5hcnlPcGVyYXRvclJlc3VsdCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk2NSwgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS5WTEFTaXplIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk2NiwgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS5idWlsdGluIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXk2NywgZmFsc2UgfSwKLSAgeyAiY29yZS5idWlsdGluLkJ1aWx0aW5GdW5jdGlvbnMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk2OCwgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS5idWlsdGluLk5vUmV0dXJuRnVuY3Rpb25zIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk2OSwgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS51bmluaXRpYWxpemVkIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXk3MCwgZmFsc2UgfSwKLSAgeyAiY29yZS51bmluaXRpYWxpemVkLkFycmF5U3Vic2NyaXB0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk3MSwgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS51bmluaXRpYWxpemVkLkFzc2lnbiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk3MiwgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS51bmluaXRpYWxpemVkLkJyYW5jaCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk3MywgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS51bmluaXRpYWxpemVkLkNhcHR1cmVkQmxvY2tWYXJpYWJsZSIsICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk3NCwgMCwgZmFsc2UgfSwKLSAgeyAiY29yZS51bmluaXRpYWxpemVkLlVuZGVmUmV0dXJuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk3NSwgMCwgZmFsc2UgfSwKLSAgeyAiY3BsdXNwbHVzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXk3NiwgZmFsc2UgfSwKLSAgeyAiY3BsdXNwbHVzLklubmVyUG9pbnRlciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk3NywgMCwgZmFsc2UgfSwKLSAgeyAiY3BsdXNwbHVzLk5ld0RlbGV0ZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk3OCwgMCwgZmFsc2UgfSwKLSAgeyAiY3BsdXNwbHVzLk5ld0RlbGV0ZUxlYWtzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk3OSwgMCwgZmFsc2UgfSwKLSAgeyAiY3BsdXNwbHVzLlNlbGZBc3NpZ25tZW50IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk4MCwgMCwgZmFsc2UgfSwKLSAgeyAiZGVhZGNvZGUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXk4MSwgZmFsc2UgfSwKLSAgeyAiZGVhZGNvZGUuRGVhZFN0b3JlcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk4MiwgMCwgZmFsc2UgfSwKLSAgeyAiZGVidWciLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXk4MywgZmFsc2UgfSwKLSAgeyAiZGVidWcuQW5hbHlzaXNPcmRlciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk4NCwgMCwgZmFsc2UgfSwKLSAgeyAiZGVidWcuQ29uZmlnRHVtcGVyIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk4NSwgMCwgZmFsc2UgfSwKLSAgeyAiZGVidWcuRHVtcENGRyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk4NiwgMCwgZmFsc2UgfSwKLSAgeyAiZGVidWcuRHVtcENhbGxHcmFwaCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk4NywgMCwgZmFsc2UgfSwKLSAgeyAiZGVidWcuRHVtcENhbGxzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk4OCwgMCwgZmFsc2UgfSwKLSAgeyAiZGVidWcuRHVtcERvbWluYXRvcnMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk4OSwgMCwgZmFsc2UgfSwKLSAgeyAiZGVidWcuRHVtcExpdmVWYXJzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk5MCwgMCwgZmFsc2UgfSwKLSAgeyAiZGVidWcuRHVtcFRyYXZlcnNhbCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk5MSwgMCwgZmFsc2UgfSwKLSAgeyAiZGVidWcuRXhwckluc3BlY3Rpb24iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk5MiwgMCwgZmFsc2UgfSwKLSAgeyAiZGVidWcuU3RhdHMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk5MywgMCwgZmFsc2UgfSwKLSAgeyAiZGVidWcuVGFpbnRUZXN0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk5NCwgMCwgZmFsc2UgfSwKLSAgeyAiZGVidWcuVmlld0NGRyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk5NSwgMCwgZmFsc2UgfSwKLSAgeyAiZGVidWcuVmlld0NhbGxHcmFwaCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk5NiwgMCwgZmFsc2UgfSwKLSAgeyAiZGVidWcuVmlld0V4cGxvZGVkR3JhcGgiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk5NywgMCwgZmFsc2UgfSwKLSAgeyAibGx2bSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXk5OCwgZmFsc2UgfSwKLSAgeyAibGx2bS5Db252ZW50aW9ucyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXk5OSwgMCwgZmFsc2UgfSwKLSAgeyAibnVsbGFiaWxpdHkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXkxMDAsIGZhbHNlIH0sCi0gIHsgIm51bGxhYmlsaXR5Lk51bGxQYXNzZWRUb05vbm51bGwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTAxLCAwLCBmYWxzZSB9LAotICB7ICJudWxsYWJpbGl0eS5OdWxsUmV0dXJuZWRGcm9tTm9ubnVsbCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTEwMiwgMCwgZmFsc2UgfSwKLSAgeyAibnVsbGFiaWxpdHkuTnVsbGFibGVEZXJlZmVyZW5jZWQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxMDMsIDAsIGZhbHNlIH0sCi0gIHsgIm51bGxhYmlsaXR5Lk51bGxhYmxlUGFzc2VkVG9Ob25udWxsIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTA0LCAwLCBmYWxzZSB9LAotICB7ICJudWxsYWJpbGl0eS5OdWxsYWJsZVJldHVybmVkRnJvbU5vbm51bGwiLCAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTEwNSwgMCwgZmFsc2UgfSwKLSAgeyAib3B0aW4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXkxMDYsIGZhbHNlIH0sCi0gIHsgIm9wdGluLmNwbHVzcGx1cyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgU3ViUGFja2FnZUFycmF5MTA3LCBmYWxzZSB9LAotICB7ICJvcHRpbi5jcGx1c3BsdXMuVmlydHVhbENhbGwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTEwOCwgMCwgZmFsc2UgfSwKLSAgeyAib3B0aW4ubXBpIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXkxMDksIGZhbHNlIH0sCi0gIHsgIm9wdGluLm1waS5NUEktQ2hlY2tlciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTEwLCAwLCBmYWxzZSB9LAotICB7ICJvcHRpbi5vc3giLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFN1YlBhY2thZ2VBcnJheTExMSwgZmFsc2UgfSwKLSAgeyAib3B0aW4ub3N4LmNvY29hIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXkxMTIsIGZhbHNlIH0sCi0gIHsgIm9wdGluLm9zeC5jb2NvYS5sb2NhbGl6YWJpbGl0eSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgU3ViUGFja2FnZUFycmF5MTEzLCBmYWxzZSB9LAotICB7ICJvcHRpbi5vc3guY29jb2EubG9jYWxpemFiaWxpdHkuRW1wdHlMb2NhbGl6YXRpb25Db250ZXh0Q2hlY2tlciIsIENoZWNrZXJBcnJheTExNCwgMCwgZmFsc2UgfSwKLSAgeyAib3B0aW4ub3N4LmNvY29hLmxvY2FsaXphYmlsaXR5Lk5vbkxvY2FsaXplZFN0cmluZ0NoZWNrZXIiLCAgICAgICBDaGVja2VyQXJyYXkxMTUsIDAsIGZhbHNlIH0sCi0gIHsgIm9wdGluLnBlcmZvcm1hbmNlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgU3ViUGFja2FnZUFycmF5MTE2LCBmYWxzZSB9LAotICB7ICJvcHRpbi5wZXJmb3JtYW5jZS5HQ0RBbnRpcGF0dGVybiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTExNywgMCwgZmFsc2UgfSwKLSAgeyAib3B0aW4ucGVyZm9ybWFuY2UuUGFkZGluZyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxMTgsIDAsIGZhbHNlIH0sCi0gIHsgIm9wdGluLnBvcnRhYmlsaXR5IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgU3ViUGFja2FnZUFycmF5MTE5LCBmYWxzZSB9LAotICB7ICJvcHRpbi5wb3J0YWJpbGl0eS5Vbml4QVBJIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTEyMCwgMCwgZmFsc2UgfSwKLSAgeyAib3N4IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXkxMjEsIGZhbHNlIH0sCi0gIHsgIm9zeC5BUEkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTIyLCAwLCBmYWxzZSB9LAotICB7ICJvc3guTnVtYmVyT2JqZWN0Q29udmVyc2lvbiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTEyMywgMCwgZmFsc2UgfSwKLSAgeyAib3N4Lk9iakNQcm9wZXJ0eSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxMjQsIDAsIGZhbHNlIH0sCi0gIHsgIm9zeC5TZWNLZXljaGFpbkFQSSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTI1LCAwLCBmYWxzZSB9LAotICB7ICJvc3guY29jb2EiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFN1YlBhY2thZ2VBcnJheTEyNiwgZmFsc2UgfSwKLSAgeyAib3N4LmNvY29hLkF0U3luYyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxMjcsIDAsIGZhbHNlIH0sCi0gIHsgIm9zeC5jb2NvYS5BdXRvcmVsZWFzZVdyaXRlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTI4LCAwLCBmYWxzZSB9LAotICB7ICJvc3guY29jb2EuQ2xhc3NSZWxlYXNlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTEyOSwgMCwgZmFsc2UgfSwKLSAgeyAib3N4LmNvY29hLkRlYWxsb2MiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxMzAsIDAsIGZhbHNlIH0sCi0gIHsgIm9zeC5jb2NvYS5JbmNvbXBhdGlibGVNZXRob2RUeXBlcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTMxLCAwLCBmYWxzZSB9LAotICB7ICJvc3guY29jb2EuTG9vcHMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTEzMiwgMCwgZmFsc2UgfSwKLSAgeyAib3N4LmNvY29hLk1pc3NpbmdTdXBlckNhbGwiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxMzMsIDAsIGZhbHNlIH0sCi0gIHsgIm9zeC5jb2NvYS5OU0F1dG9yZWxlYXNlUG9vbCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTM0LCAwLCBmYWxzZSB9LAotICB7ICJvc3guY29jb2EuTlNFcnJvciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTEzNSwgMCwgZmFsc2UgfSwKLSAgeyAib3N4LmNvY29hLk5pbEFyZyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxMzYsIDAsIGZhbHNlIH0sCi0gIHsgIm9zeC5jb2NvYS5Ob25OaWxSZXR1cm5WYWx1ZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTM3LCAwLCBmYWxzZSB9LAotICB7ICJvc3guY29jb2EuT2JqQ0dlbmVyaWNzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTEzOCwgMCwgZmFsc2UgfSwKLSAgeyAib3N4LmNvY29hLlJldGFpbkNvdW50IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxMzksIDAsIGZhbHNlIH0sCi0gIHsgIm9zeC5jb2NvYS5SdW5Mb29wQXV0b3JlbGVhc2VMZWFrIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTQwLCAwLCBmYWxzZSB9LAotICB7ICJvc3guY29jb2EuU2VsZkluaXQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE0MSwgMCwgZmFsc2UgfSwKLSAgeyAib3N4LmNvY29hLlN1cGVyRGVhbGxvYyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxNDIsIDAsIGZhbHNlIH0sCi0gIHsgIm9zeC5jb2NvYS5VbnVzZWRJdmFycyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTQzLCAwLCBmYWxzZSB9LAotICB7ICJvc3guY29jb2EuVmFyaWFkaWNNZXRob2RUeXBlcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE0NCwgMCwgZmFsc2UgfSwKLSAgeyAib3N4LmNvcmVGb3VuZGF0aW9uIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXkxNDUsIGZhbHNlIH0sCi0gIHsgIm9zeC5jb3JlRm91bmRhdGlvbi5DRkVycm9yIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTQ2LCAwLCBmYWxzZSB9LAotICB7ICJvc3guY29yZUZvdW5kYXRpb24uQ0ZOdW1iZXIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE0NywgMCwgZmFsc2UgfSwKLSAgeyAib3N4LmNvcmVGb3VuZGF0aW9uLkNGUmV0YWluUmVsZWFzZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxNDgsIDAsIGZhbHNlIH0sCi0gIHsgIm9zeC5jb3JlRm91bmRhdGlvbi5jb250YWluZXJzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgU3ViUGFja2FnZUFycmF5MTQ5LCBmYWxzZSB9LAotICB7ICJvc3guY29yZUZvdW5kYXRpb24uY29udGFpbmVycy5PdXRPZkJvdW5kcyIsICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE1MCwgMCwgZmFsc2UgfSwKLSAgeyAib3N4LmNvcmVGb3VuZGF0aW9uLmNvbnRhaW5lcnMuUG9pbnRlclNpemVkVmFsdWVzIiwgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxNTEsIDAsIGZhbHNlIH0sCi0gIHsgInNlY3VyaXR5IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgU3ViUGFja2FnZUFycmF5MTUyLCBmYWxzZSB9LAotICB7ICJzZWN1cml0eS5GbG9hdExvb3BDb3VudGVyIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE1MywgMCwgZmFsc2UgfSwKLSAgeyAic2VjdXJpdHkuaW5zZWN1cmVBUEkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXkxNTQsIGZhbHNlIH0sCi0gIHsgInNlY3VyaXR5Lmluc2VjdXJlQVBJLlVuY2hlY2tlZFJldHVybiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTU1LCAwLCBmYWxzZSB9LAotICB7ICJzZWN1cml0eS5pbnNlY3VyZUFQSS5iY21wIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE1NiwgMCwgZmFsc2UgfSwKLSAgeyAic2VjdXJpdHkuaW5zZWN1cmVBUEkuYmNvcHkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxNTcsIDAsIGZhbHNlIH0sCi0gIHsgInNlY3VyaXR5Lmluc2VjdXJlQVBJLmJ6ZXJvIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTU4LCAwLCBmYWxzZSB9LAotICB7ICJzZWN1cml0eS5pbnNlY3VyZUFQSS5nZXRwdyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE1OSwgMCwgZmFsc2UgfSwKLSAgeyAic2VjdXJpdHkuaW5zZWN1cmVBUEkuZ2V0cyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxNjAsIDAsIGZhbHNlIH0sCi0gIHsgInNlY3VyaXR5Lmluc2VjdXJlQVBJLm1rc3RlbXAiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTYxLCAwLCBmYWxzZSB9LAotICB7ICJzZWN1cml0eS5pbnNlY3VyZUFQSS5ta3RlbXAiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE2MiwgMCwgZmFsc2UgfSwKLSAgeyAic2VjdXJpdHkuaW5zZWN1cmVBUEkucmFuZCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxNjMsIDAsIGZhbHNlIH0sCi0gIHsgInNlY3VyaXR5Lmluc2VjdXJlQVBJLnN0cmNweSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTY0LCAwLCBmYWxzZSB9LAotICB7ICJzZWN1cml0eS5pbnNlY3VyZUFQSS52Zm9yayIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE2NSwgMCwgZmFsc2UgfSwKLSAgeyAidW5peCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXkxNjYsIGZhbHNlIH0sCi0gIHsgInVuaXguQVBJIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTY3LCAwLCBmYWxzZSB9LAotICB7ICJ1bml4Lk1hbGxvYyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE2OCwgMCwgZmFsc2UgfSwKLSAgeyAidW5peC5NYWxsb2NTaXplb2YiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxNjksIDAsIGZhbHNlIH0sCi0gIHsgInVuaXguTWlzbWF0Y2hlZERlYWxsb2NhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTcwLCAwLCBmYWxzZSB9LAotICB7ICJ1bml4LlZmb3JrIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE3MSwgMCwgZmFsc2UgfSwKLSAgeyAidW5peC5jc3RyaW5nIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBTdWJQYWNrYWdlQXJyYXkxNzIsIHRydWUgfSwKLSAgeyAidW5peC5jc3RyaW5nLkJhZFNpemVBcmciLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxNzMsIDAsIGZhbHNlIH0sCi0gIHsgInVuaXguY3N0cmluZy5OdWxsQXJnIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTc0LCAwLCBmYWxzZSB9LAotICB7ICJ2YWxpc3QiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFN1YlBhY2thZ2VBcnJheTE3NSwgZmFsc2UgfSwKLSAgeyAidmFsaXN0LkNvcHlUb1NlbGYiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja2VyQXJyYXkxNzYsIDAsIGZhbHNlIH0sCi0gIHsgInZhbGlzdC5VbmluaXRpYWxpemVkIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hlY2tlckFycmF5MTc3LCAwLCBmYWxzZSB9LAotICB7ICJ2YWxpc3QuVW50ZXJtaW5hdGVkIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrZXJBcnJheTE3OCwgMCwgZmFsc2UgfSwKLSNlbmRpZiAvLyBHRVRfQ0hFQ0tOQU1FX1RBQkxFCi0KKyNlbmRpZiAvLyBHRVRfQ0hFQ0tFUl9ERVBFTkRFTkNJRVMKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NoZWNrZXJzL0NsYW5nQ2hlY2tlcnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NoZWNrZXJzL0NsYW5nQ2hlY2tlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YwYTMwYS4uMDAwMDAwMAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9DaGVja2Vycy9DbGFuZ0NoZWNrZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0vLz09PS0tLSBDbGFuZ0NoZWNrZXJzLmggLSBQcm92aWRlcyBidWlsdGluIGNoZWNrZXJzIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KLS8vCi0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotCi0jaWZuZGVmIExMVk1fQ0xBTkdfU1RBVElDQU5BTFlaRVJfQ0hFQ0tFUlNfQ0xBTkdDSEVDS0VSU19ICi0jZGVmaW5lIExMVk1fQ0xBTkdfU1RBVElDQU5BTFlaRVJfQ0hFQ0tFUlNfQ0xBTkdDSEVDS0VSU19ICi0KLW5hbWVzcGFjZSBjbGFuZyB7Ci1uYW1lc3BhY2UgZW50byB7Ci1jbGFzcyBDaGVja2VyUmVnaXN0cnk7Ci0KLXZvaWQgcmVnaXN0ZXJCdWlsdGluQ2hlY2tlcnMoQ2hlY2tlclJlZ2lzdHJ5ICZyZWdpc3RyeSk7Ci0KLX0gLy8gZW5kIG5hbWVzcGFjZSBlbnRvCi19IC8vIGVuZCBuYW1lc3BhY2UgY2xhbmcKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9DaGVja2Vycy9Mb2NhbENoZWNrZXJzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9DaGVja2Vycy9Mb2NhbENoZWNrZXJzLmgKaW5kZXggNDYzZjA0YS4uOGY3MTQ4ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ2hlY2tlcnMvTG9jYWxDaGVja2Vycy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NoZWNrZXJzL0xvY2FsQ2hlY2tlcnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIExvY2FsQ2hlY2tlcnMuaCAtIEludHJhLVByb2NlZHVyYWwrRmxvdy1TZW5zaXRpdmUgQ2hlY2tlcnMgLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ2hlY2tlcnMvTVBJRnVuY3Rpb25DbGFzc2lmaWVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9DaGVja2Vycy9NUElGdW5jdGlvbkNsYXNzaWZpZXIuaAppbmRleCA2NWU5MDg5Li5iYmM1MTExIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9DaGVja2Vycy9NUElGdW5jdGlvbkNsYXNzaWZpZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9DaGVja2Vycy9NUElGdW5jdGlvbkNsYXNzaWZpZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gTVBJRnVuY3Rpb25DbGFzc2lmaWVyLmggLSBjbGFzc2lmaWVzIE1QSSBmdW5jdGlvbnMgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9DaGVja2Vycy9TVmFsRXhwbGFpbmVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9DaGVja2Vycy9TVmFsRXhwbGFpbmVyLmgKaW5kZXggNjJiYjBmNi4uMTBjODkwMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ2hlY2tlcnMvU1ZhbEV4cGxhaW5lci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NoZWNrZXJzL1NWYWxFeHBsYWluZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0gU1ZhbEV4cGxhaW5lci5oIC0gU3ltYm9saWMgdmFsdWUgZXhwbGFpbmVyIC0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLS09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9BbmFseXNlcy5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0FuYWx5c2VzLmRlZgppbmRleCAyODFhMmFjLi4zNzc0NTE1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0FuYWx5c2VzLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0FuYWx5c2VzLmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gQW5hbHlzZXMuZGVmIC0gTWV0YWRhdGEgYWJvdXQgU3RhdGljIEFuYWx5c2VzIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzMsNiArMzIsNyBAQAogQU5BTFlTSVNfRElBR05PU1RJQ1MoUExJU1QsICJwbGlzdCIsICJPdXRwdXQgYW5hbHlzaXMgcmVzdWx0cyB1c2luZyBQbGlzdHMiLCBjcmVhdGVQbGlzdERpYWdub3N0aWNDb25zdW1lcikKIEFOQUxZU0lTX0RJQUdOT1NUSUNTKFBMSVNUX01VTFRJX0ZJTEUsICJwbGlzdC1tdWx0aS1maWxlIiwgIk91dHB1dCBhbmFseXNpcyByZXN1bHRzIHVzaW5nIFBsaXN0cyAoYWxsb3dpbmcgZm9yIG11bHRpLWZpbGUgYnVncykiLCBjcmVhdGVQbGlzdE11bHRpRmlsZURpYWdub3N0aWNDb25zdW1lcikKIEFOQUxZU0lTX0RJQUdOT1NUSUNTKFBMSVNUX0hUTUwsICJwbGlzdC1odG1sIiwgIk91dHB1dCBhbmFseXNpcyByZXN1bHRzIHVzaW5nIEhUTUwgd3JhcHBlZCB3aXRoIFBsaXN0cyIsIGNyZWF0ZVBsaXN0SFRNTERpYWdub3N0aWNDb25zdW1lcikKK0FOQUxZU0lTX0RJQUdOT1NUSUNTKFNBUklGLCAic2FyaWYiLCAiT3V0cHV0IGFuYWx5c2lzIHJlc3VsdHMgaW4gYSBTQVJJRiBmaWxlIiwgY3JlYXRlU2FyaWZEaWFnbm9zdGljQ29uc3VtZXIpCiBBTkFMWVNJU19ESUFHTk9TVElDUyhURVhULCAidGV4dCIsICJUZXh0IG91dHB1dCBvZiBhbmFseXNpcyByZXN1bHRzIiwgY3JlYXRlVGV4dFBhdGhEaWFnbm9zdGljQ29uc3VtZXIpCiAKICNpZm5kZWYgQU5BTFlTSVNfUFVSR0UKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvQW5hbHl6ZXJPcHRpb25zLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvQW5hbHl6ZXJPcHRpb25zLmRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzhiNzBiCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9BbmFseXplck9wdGlvbnMuZGVmCkBAIC0wLDAgKzEsMzc2IEBACisvLz09PS0tIEFuYWx5emVyT3B0aW9ucy5kZWYgLSBNZXRhZGF0YSBhYm91dCBTdGF0aWMgQW5hbHlzZXMgLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vICBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgYW5hbHl6ZXIgb3B0aW9ucyBhdmFpYmxlIHdpdGggLWFuYWx5emVyLWNvbmZpZy4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fQURUX1NUUklOR1JFRl9ICisjZXJyb3IgVGhpcyAuZGVmIGZpbGUgaXMgZXhwZWN0ZWQgdG8gYmUgaW5jbHVkZWQgaW4gdHJhbnNsYXRpb24gdW5pdHMgd2hlcmUgXAorImxsdm0vQURUL1N0cmluZ1JlZi5oIiBpcyBhbHJlYWR5IGluY2x1ZGVkIQorI2VuZGlmCisKKyNpZmRlZiBBTkFMWVpFUl9PUFRJT04KKyNpZm5kZWYgQU5BTFlaRVJfT1BUSU9OX0RFUEVORFNfT05fVVNFUl9NT0RFCisjZXJyb3IgSWYgeW91IGRpZG50IGluY2x1ZGUgdGhpcyBmaWxlIHdpdGggdGhlIGludGVudCBvZiBnZW5lcmF0aW5nIG1ldGhvZHMsIFwKK2RlZmluZSBib3RoICdBTkFMWVpFUl9PUFRJT04nIGFuZCAnQU5BTFlaRVJfT1BUSU9OX0RFUEVORFNfT05fVVNFUl9NT0RFJyBtYWNyb3MhCisjZW5kaWYKKyNlbmRpZgorCisjaWZuZGVmIEFOQUxZWkVSX09QVElPTl9ERVBFTkRTX09OX1VTRVJfTU9ERQorI2lmZGVmIEFOQUxZWkVSX09QVElPTgorI2Vycm9yIElmIHlvdSBkaWRudCBpbmNsdWRlIHRoaXMgZmlsZSB3aXRoIHRoZSBpbnRlbnQgb2YgZ2VuZXJhdGluZyBtZXRob2RzLCBcCitkZWZpbmUgYm90aCAnQU5BTFlaRVJfT1BUSU9OJyBhbmQgJ0FOQUxZWkVSX09QVElPTl9ERVBFTkRTX09OX1VTRVJfTU9ERScgbWFjcm9zIQorI2VuZGlmCisjZW5kaWYKKworI2lmbmRlZiBBTkFMWVpFUl9PUFRJT04KKy8vLyBDcmVhdGUgYSBuZXcgYW5hbHl6ZXIgb3B0aW9uLCBidXQgZG9udCBnZW5lcmF0ZSBhIG1ldGhvZCBmb3IgaXQgaW4KKy8vLyBBbmFseXplck9wdGlvbnMuCisvLy8KKy8vLyAgIFRZUEUgLSBUaGUgdHlwZSBvZiB0aGUgb3B0aW9uIG9iamVjdCB0aGF0IHdpbGwgYmUgc3RvcmVkIGluCisvLy8gICAgICAgICAgQW5hbHl6ZXJPcHRpb25zLiBUaGlzIGZpbGUgaXMgZXhwZWN0ZWQgdG8gYmUgaWNsdWRlZCBpbiB0cmFuc2xhdGlvbgorLy8vICAgICAgICAgIHVuaXRzIHdoZXJlIEFuYWx5emVyT3B0aW9ucy5oIGlzIGluY2x1ZGVkLCBzbyB0eXBlcyBmcm9tIHRoYXQKKy8vLyAgICAgICAgICBoZWFkZXIgc2hvdWxkIGJlIHVzZWQuCisvLy8gICBOQU1FIC0gVGhlIG5hbWUgb2YgdGhlIG9wdGlvbiBvYmplY3QuCisvLy8gICBDTURGTEFHIC0gVGhlIGNvbW1hbmQgbGluZSBmbGFnIGZvciB0aGUgb3B0aW9uLgorLy8vICAgICAgICAgICAgICgtYW5hbHl6ZXItY29uZmlnIENNREZMQUc9VkFMVUUpCisvLy8gICBERVNDIC0gRGVzY3JpcHRpb24gb2YgdGhlIGZsYWcuCisvLy8gICBERUZBVUxUX1ZBTCAtIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBDTURGTEFHLgorI2RlZmluZSBBTkFMWVpFUl9PUFRJT04oVFlQRSwgTkFNRSwgQ01ERkxBRywgREVTQywgREVGQVVMVF9WQUwpCisjZW5kaWYKKworI2lmbmRlZiBBTkFMWVpFUl9PUFRJT05fREVQRU5EU19PTl9VU0VSX01PREUKKy8vLyBDcmVhdGUgYSBuZXcgYW5hbHl6ZXIgb3B0aW9uLCBidXQgZG9udCBnZW5lcmF0ZSBhIG1ldGhvZCBmb3IgaXQgaW4KKy8vLyBBbmFseXplck9wdGlvbnMuIEl0J3MgdmFsdWUgZGVwZW5kcyBvbiB0aGUgb3B0aW9uICJ1c2VyLW1vZGUiLgorLy8vCisvLy8gICBUWVBFIC0gVGhlIHR5cGUgb2YgdGhlIG9wdGlvbiBvYmplY3QgdGhhdCB3aWxsIGJlIHN0b3JlZCBpbgorLy8vICAgICAgICAgIEFuYWx5emVyT3B0aW9ucy4gVGhpcyBmaWxlIGlzIGV4cGVjdGVkIHRvIGJlIGljbHVkZWQgaW4gdHJhbnNsYXRpb24KKy8vLyAgICAgICAgICB1bml0cyB3aGVyZSBBbmFseXplck9wdGlvbnMuaCBpcyBpbmNsdWRlZCwgc28gdHlwZXMgZnJvbSB0aGF0CisvLy8gICAgICAgICAgaGVhZGVyIHNob3VsZCBiZSB1c2VkLgorLy8vICAgTkFNRSAtIFRoZSBuYW1lIG9mIHRoZSBvcHRpb24gb2JqZWN0LgorLy8vICAgQ01ERkxBRyAtIFRoZSBjb21tYW5kIGxpbmUgZmxhZyBmb3IgdGhlIG9wdGlvbi4KKy8vLyAgICAgICAgICAgICAoLWFuYWx5emVyLWNvbmZpZyBDTURGTEFHPVZBTFVFKQorLy8vICAgREVTQyAtIERlc2NyaXB0aW9uIG9mIHRoZSBmbGFnLgorLy8vICAgU0hBTExPV19WQUwgLSBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgQ01ERkxBRywgd2hlbiAidXNlci1tb2RlIiB3YXMgc2V0IHRvCisvLy8gICAgICAgICAgICAgICAgICJzaGFsbG93Ii4KKy8vLyAgIERFRVBfVkFMIC0gVGhlIGRlZmF1bHQgdmFsdWUgZm9yIENNREZMQUcsIHdoZW4gInVzZXItbW9kZSIgd2FzIHNldCB0bworLy8vICAgICAgICAgICAgICAiZGVlcCIuCisjZGVmaW5lIEFOQUxZWkVSX09QVElPTl9ERVBFTkRTX09OX1VTRVJfTU9ERShUWVBFLCBOQU1FLCBDTURGTEFHLCBERVNDLCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBTExPV19WQUwsIERFRVBfVkFMKQorI2VuZGlmCisKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLyBUaGUgIm1vZGUiIG9wdGlvbi4gU2luY2Ugc29tZSBvcHRpb25zIGRlcGVuZCBvbiB0aGlzLCB3ZSBsaXN0IGl0IG9uIHRvcCBvZgorLy8gdGhpcyBmaWxlIGluIG9yZGVyIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBnZW5lcmF0ZWQgZmllbGQgZm9yIGl0IGlzCisvLyBpbml0aWFsaXplZCBiZWZvcmUgdGhlIHJlc3QuCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCitBTkFMWVpFUl9PUFRJT04oCisgICAgU3RyaW5nUmVmLCBVc2VyTW9kZSwgIm1vZGUiLAorICAgICIoc3RyaW5nKSBDb250cm9scyB0aGUgaGlnaC1sZXZlbCBhbmFseXplciBtb2RlLCB3aGljaCBpbmZsdWVuY2VzIHRoZSAiCisgICAgImRlZmF1bHQgc2V0dGluZ3MgZm9yIHNvbWUgb2YgdGhlIGxvd2VyLWxldmVsIGNvbmZpZyBvcHRpb25zIChzdWNoIGFzICIKKyAgICAiSVBBTW9kZSkuIFZhbHVlOiBcImRlZXBcIiwgXCJzaGFsbG93XCIuIiwKKyAgICAiZGVlcCIpCisKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLyBCb29sZWFuIGFuYWx5emVyIG9wdGlvbnMuCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCitBTkFMWVpFUl9PUFRJT04oYm9vbCwgU2hvdWxkSW5jbHVkZUltcGxpY2l0RHRvcnNJbkNGRywgImNmZy1pbXBsaWNpdC1kdG9ycyIsCisgICAgICAgICAgICAgICAgIldoZXRoZXIgb3Igbm90IGltcGxpY2l0IGRlc3RydWN0b3JzIGZvciBDKysgb2JqZWN0cyAiCisgICAgICAgICAgICAgICAgInNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgQ0ZHLiIsCisgICAgICAgICAgICAgICAgdHJ1ZSkKKworQU5BTFlaRVJfT1BUSU9OKGJvb2wsIFNob3VsZEluY2x1ZGVUZW1wb3JhcnlEdG9yc0luQ0ZHLCAiY2ZnLXRlbXBvcmFyeS1kdG9ycyIsCisgICAgICAgICAgICAgICAgIldoZXRoZXIgb3Igbm90IHRoZSBkZXN0cnVjdG9ycyBmb3IgQysrIHRlbXBvcmFyeSAiCisgICAgICAgICAgICAgICAgIm9iamVjdHMgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBDRkcuIiwKKyAgICAgICAgICAgICAgICB0cnVlKQorCitBTkFMWVpFUl9PUFRJT04oCisgICAgYm9vbCwgU2hvdWxkSW5jbHVkZUxpZmV0aW1lSW5DRkcsICJjZmctbGlmZXRpbWUiLAorICAgICJXaGV0aGVyIG9yIG5vdCBlbmQtb2YtbGlmZXRpbWUgaW5mb3JtYXRpb24gc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBDRkcuIiwKKyAgICBmYWxzZSkKKworQU5BTFlaRVJfT1BUSU9OKGJvb2wsIFNob3VsZEluY2x1ZGVMb29wRXhpdEluQ0ZHLCAiY2ZnLWxvb3BleGl0IiwKKyAgICAgICAgICAgICAgICAiV2hldGhlciBvciBub3QgdGhlIGVuZCBvZiB0aGUgbG9vcCBpbmZvcm1hdGlvbiBzaG91bGQgIgorICAgICAgICAgICAgICAgICJiZSBpbmNsdWRlZCBpbiB0aGUgQ0ZHLiIsCisgICAgICAgICAgICAgICAgZmFsc2UpCisKK0FOQUxZWkVSX09QVElPTihib29sLCBTaG91bGRJbmNsdWRlUmljaENvbnN0cnVjdG9yc0luQ0ZHLAorICAgICAgICAgICAgICAgICJjZmctcmljaC1jb25zdHJ1Y3RvcnMiLAorICAgICAgICAgICAgICAgICJXaGV0aGVyIG9yIG5vdCBjb25zdHJ1Y3Rpb24gc2l0ZSBpbmZvcm1hdGlvbiBzaG91bGQgYmUgIgorICAgICAgICAgICAgICAgICJpbmNsdWRlZCBpbiB0aGUgQ0ZHIEMrKyBjb25zdHJ1Y3RvciBlbGVtZW50cy4iLAorICAgICAgICAgICAgICAgIHRydWUpCisKK0FOQUxZWkVSX09QVElPTigKKyAgICBib29sLCBTaG91bGRJbmNsdWRlU2NvcGVzSW5DRkcsICJjZmctc2NvcGVzIiwKKyAgICAiV2hldGhlciBvciBub3Qgc2NvcGUgaW5mb3JtYXRpb24gc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBDRkcuIiwgZmFsc2UpCisKK0FOQUxZWkVSX09QVElPTigKKyAgICBib29sLCBNYXlJbmxpbmVUZW1wbGF0ZUZ1bmN0aW9ucywgImMrKy10ZW1wbGF0ZS1pbmxpbmluZyIsCisgICAgIldoZXRoZXIgb3Igbm90IHRlbXBsYXRlZCBmdW5jdGlvbnMgbWF5IGJlIGNvbnNpZGVyZWQgZm9yIGlubGluaW5nLiIsIHRydWUpCisKK0FOQUxZWkVSX09QVElPTihib29sLCBNYXlJbmxpbmVDWFhTdGFuZGFyZExpYnJhcnksICJjKystc3RkbGliLWlubGluaW5nIiwKKyAgICAgICAgICAgICAgICAiV2hldGhlciBvciBub3QgQysrIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb25zIG1heSBiZSAiCisgICAgICAgICAgICAgICAgImNvbnNpZGVyZWQgZm9yIGlubGluaW5nLiIsCisgICAgICAgICAgICAgICAgdHJ1ZSkKKworQU5BTFlaRVJfT1BUSU9OKGJvb2wsIE1heUlubGluZUNYWEFsbG9jYXRvciwgImMrKy1hbGxvY2F0b3ItaW5saW5pbmciLAorICAgICAgICAgICAgICAgICJXaGV0aGVyIG9yIG5vdCBhbGxvY2F0b3IgY2FsbCBtYXkgYmUgY29uc2lkZXJlZCBmb3IgaW5saW5pbmcuIiwKKyAgICAgICAgICAgICAgICB0cnVlKQorCitBTkFMWVpFUl9PUFRJT04oCisgICAgYm9vbCwgTWF5SW5saW5lQ1hYU2hhcmVkUHRyRHRvciwgImMrKy1zaGFyZWRfcHRyLWlubGluaW5nIiwKKyAgICAiV2hldGhlciBvciBub3QgdGhlIGRlc3RydWN0b3Igb2YgQysrICdzaGFyZWRfcHRyJyBtYXkgYmUgY29uc2lkZXJlZCBmb3IgIgorICAgICJpbmxpbmluZy4gVGhpcyBjb3ZlcnMgc3RkOjpzaGFyZWRfcHRyLCBzdGQ6OnRyMTo6c2hhcmVkX3B0ciwgYW5kICIKKyAgICAiYm9vc3Q6OnNoYXJlZF9wdHIsIGFuZCBpbmRlZWQgYW55IGRlc3RydWN0b3IgbmFtZWQgJ35zaGFyZWRfcHRyJy4iLAorICAgIGZhbHNlKQorCitBTkFMWVpFUl9PUFRJT04oYm9vbCwgTWF5SW5saW5lQ1hYVGVtcG9yYXJ5RHRvcnMsICJjKystdGVtcC1kdG9yLWlubGluaW5nIiwKKyAgICAgICAgICAgICAgICAiV2hldGhlciBDKysgdGVtcG9yYXJ5IGRlc3RydWN0b3JzIHNob3VsZCBiZSBpbmxpbmVkICIKKyAgICAgICAgICAgICAgICAiZHVyaW5nIGFuYWx5c2lzLiBJZiB0ZW1wb3JhcnkgZGVzdHJ1Y3RvcnMgYXJlIGRpc2FibGVkICIKKyAgICAgICAgICAgICAgICAiaW4gdGhlIENGRyB2aWEgdGhlICdjZmctdGVtcG9yYXJ5LWR0b3JzJyBvcHRpb24sICIKKyAgICAgICAgICAgICAgICAidGVtcG9yYXJ5IGRlc3RydWN0b3JzIHdvdWxkIG5vdCBiZSBpbmxpbmVkIGFueXdheS4iLAorICAgICAgICAgICAgICAgIHRydWUpCisKK0FOQUxZWkVSX09QVElPTigKKyAgICBib29sLCBTaG91bGRTdXBwcmVzc051bGxSZXR1cm5QYXRocywgInN1cHByZXNzLW51bGwtcmV0dXJuLXBhdGhzIiwKKyAgICAiV2hldGhlciBvciBub3QgcGF0aHMgdGhhdCBnbyB0aHJvdWdoIG51bGwgcmV0dXJucyBzaG91bGQgYmUgc3VwcHJlc3NlZC4gIgorICAgICJUaGlzIGlzIGEgaGV1cmlzdGljIGZvciBhdm9pZGluZyBidWcgcmVwb3J0cyB3aXRoIHBhdGhzIHRoYXQgZ28gdGhyb3VnaCAiCisgICAgImlubGluZWQgZnVuY3Rpb25zIHRoYXQgYXJlIG1vcmUgZGVmZW5zaXZlIHRoYW4gdGhlaXIgY2FsbGVycy4iLAorICAgIHRydWUpCisKK0FOQUxZWkVSX09QVElPTigKKyAgICBib29sLCBTaG91bGRBdm9pZFN1cHByZXNzaW5nTnVsbEFyZ3VtZW50UGF0aHMsCisgICAgImF2b2lkLXN1cHByZXNzaW5nLW51bGwtYXJndW1lbnQtcGF0aHMiLAorICAgICJXaGV0aGVyIGEgYnVnIHJlcG9ydCBzaG91bGQgbm90IGJlIHN1cHByZXNzZWQgaWYgaXRzIHBhdGggaW5jbHVkZXMgYSBjYWxsICIKKyAgICAid2l0aCBhIG51bGwgYXJndW1lbnQsIGV2ZW4gaWYgdGhhdCBjYWxsIGhhcyBhIG51bGwgcmV0dXJuLiBUaGlzIG9wdGlvbiAiCisgICAgImhhcyBubyBlZmZlY3Qgd2hlbiBTaG91bGRTdXBwcmVzc051bGxSZXR1cm5QYXRocyBpcyBmYWxzZS4gVGhpcyBpcyBhICIKKyAgICAiY291bnRlci1oZXVyaXN0aWMgdG8gYXZvaWQgZmFsc2UgbmVnYXRpdmVzLiIsCisgICAgZmFsc2UpCisKK0FOQUxZWkVSX09QVElPTihib29sLCBTaG91bGRTdXBwcmVzc0lubGluZWREZWZlbnNpdmVDaGVja3MsCisgICAgICAgICAgICAgICAgInN1cHByZXNzLWlubGluZWQtZGVmZW5zaXZlLWNoZWNrcyIsCisgICAgICAgICAgICAgICAgIldoZXRoZXIgb3Igbm90IGRpYWdub3N0aWNzIGNvbnRhaW5pbmcgaW5saW5lZCAiCisgICAgICAgICAgICAgICAgImRlZmVuc2l2ZSBOVUxMIGNoZWNrcyBzaG91bGQgYmUgc3VwcHJlc3NlZC4iLAorICAgICAgICAgICAgICAgIHRydWUpCisKK0FOQUxZWkVSX09QVElPTihib29sLCBNYXlJbmxpbmVDWFhDb250YWluZXJNZXRob2RzLCAiYysrLWNvbnRhaW5lci1pbmxpbmluZyIsCisgICAgICAgICAgICAgICAgIldoZXRoZXIgb3Igbm90IG1ldGhvZHMgb2YgQysrIGNvbnRhaW5lciBvYmplY3RzIG1heSBiZSAiCisgICAgICAgICAgICAgICAgImNvbnNpZGVyZWQgZm9yIGlubGluaW5nLiIsCisgICAgICAgICAgICAgICAgZmFsc2UpCisKK0FOQUxZWkVSX09QVElPTihib29sLCBTaG91bGRTdXBwcmVzc0Zyb21DWFhTdGFuZGFyZExpYnJhcnksCisgICAgICAgICAgICAgICAgInN1cHByZXNzLWMrKy1zdGRsaWIiLAorICAgICAgICAgICAgICAgICJXaGV0aGVyIG9yIG5vdCBkaWFnbm9zdGljcyByZXBvcnRlZCB3aXRoaW4gdGhlIEMrKyAiCisgICAgICAgICAgICAgICAgInN0YW5kYXJkIGxpYnJhcnkgc2hvdWxkIGJlIHN1cHByZXNzZWQuIiwKKyAgICAgICAgICAgICAgICB0cnVlKQorCitBTkFMWVpFUl9PUFRJT04oYm9vbCwgU2hvdWxkQ3Jvc3NjaGVja1dpdGhaMywgImNyb3NzY2hlY2std2l0aC16MyIsCisgICAgICAgICAgICAgICAgIldoZXRoZXIgYnVnIHJlcG9ydHMgc2hvdWxkIGJlIGNyb3NzY2hlY2tlZCB3aXRoIHRoZSBaMyAiCisgICAgICAgICAgICAgICAgImNvbnN0cmFpbnQgbWFuYWdlciBiYWNrZW5kLiIsCisgICAgICAgICAgICAgICAgZmFsc2UpCisKK0FOQUxZWkVSX09QVElPTihib29sLCBTaG91bGRSZXBvcnRJc3N1ZXNJbk1haW5Tb3VyY2VGaWxlLAorICAgICAgICAgICAgICAgICJyZXBvcnQtaW4tbWFpbi1zb3VyY2UtZmlsZSIsCisgICAgICAgICAgICAgICAgIldoZXRoZXIgb3Igbm90IHRoZSBkaWFnbm9zdGljIHJlcG9ydCBzaG91bGQgYmUgYWx3YXlzICIKKyAgICAgICAgICAgICAgICAicmVwb3J0ZWQgaW4gdGhlIG1haW4gc291cmNlIGZpbGUgYW5kIG5vdCB0aGUgaGVhZGVycy4iLAorICAgICAgICAgICAgICAgIGZhbHNlKQorCitBTkFMWVpFUl9PUFRJT04oYm9vbCwgU2hvdWxkV3JpdGVTdGFibGVSZXBvcnRGaWxlbmFtZSwgInN0YWJsZS1yZXBvcnQtZmlsZW5hbWUiLAorICAgICAgICAgICAgICAgICJXaGV0aGVyIG9yIG5vdCB0aGUgcmVwb3J0IGZpbGVuYW1lIHNob3VsZCBiZSByYW5kb20gb3Igbm90LiIsCisgICAgICAgICAgICAgICAgZmFsc2UpCisKK0FOQUxZWkVSX09QVElPTigKKyAgICBib29sLCBTaG91bGRTZXJpYWxpemVTdGF0cywgInNlcmlhbGl6ZS1zdGF0cyIsCisgICAgIldoZXRoZXIgdGhlIGFuYWx5emVyIHNob3VsZCBzZXJpYWxpemUgc3RhdGlzdGljcyB0byBwbGlzdCBvdXRwdXQuICIKKyAgICAiU3RhdGlzdGljcyB3b3VsZCBiZSBzZXJpYWxpemVkIGluIEpTT04gZm9ybWF0IGluc2lkZSB0aGUgbWFpbiBkaWN0aW9uYXJ5ICIKKyAgICAidW5kZXIgdGhlIHN0YXRpc3RpY3Mga2V5LiBBdmFpbGFibGUgb25seSBpZiBjb21waWxlZCBpbiBhc3NlcnQgbW9kZSBvciAiCisgICAgIndpdGggTExWTSBzdGF0aXN0aWNzIGV4cGxpY2l0bHkgZW5hYmxlZC4iLAorICAgIGZhbHNlKQorCitBTkFMWVpFUl9PUFRJT04oYm9vbCwgTWF5SW5saW5lT2JqQ01ldGhvZCwgIm9iamMtaW5saW5pbmciLAorICAgICAgICAgICAgICAgICJXaGV0aGVyIE9iamVjdGl2ZUMgaW5saW5pbmcgaXMgZW5hYmxlZCwgZmFsc2Ugb3RoZXJ3aXNlLiIsCisgICAgICAgICAgICAgICAgdHJ1ZSkKKworQU5BTFlaRVJfT1BUSU9OKGJvb2wsIFNob3VsZFBydW5lUGF0aHMsICJwcnVuZS1wYXRocyIsCisgICAgICAgICAgICAgICAgIldoZXRoZXIgaXJyZWxldmFudCBwYXJ0cyBvZiBhIGJ1ZyByZXBvcnQgcGF0aCBzaG91bGQgIgorICAgICAgICAgICAgICAgICJiZSBwcnVuZWQgb3V0IG9mIHRoZSBmaW5hbCBvdXRwdXQuIiwKKyAgICAgICAgICAgICAgICB0cnVlKQorCitBTkFMWVpFUl9PUFRJT04oCisgICAgYm9vbCwgU2hvdWxkQ29uZGl0aW9uYWxpemVTdGF0aWNJbml0aWFsaXplcnMsCisgICAgImNmZy1jb25kaXRpb25hbC1zdGF0aWMtaW5pdGlhbGl6ZXJzIiwKKyAgICAiV2hldGhlciAnc3RhdGljJyBpbml0aWFsaXplcnMgc2hvdWxkIGJlIGluIGNvbmRpdGlvbmFsIGxvZ2ljIGluIHRoZSBDRkcuIiwKKyAgICB0cnVlKQorCitBTkFMWVpFUl9PUFRJT04oYm9vbCwgU2hvdWxkU3ludGhlc2l6ZUJvZGllcywgImZhdXgtYm9kaWVzIiwKKyAgICAgICAgICAgICAgICAiV2hldGhlciB0aGUgYW5hbHl6ZXIgZW5naW5lIHNob3VsZCBzeW50aGVzaXplIGZha2UgIgorICAgICAgICAgICAgICAgICJib2RpZXMgZm9yIHdlbGwta25vd24gZnVuY3Rpb25zLiIsCisgICAgICAgICAgICAgICAgdHJ1ZSkKKworQU5BTFlaRVJfT1BUSU9OKAorICAgIGJvb2wsIFNob3VsZEVsaWRlQ29uc3RydWN0b3JzLCAiZWxpZGUtY29uc3RydWN0b3JzIiwKKyAgICAiV2hldGhlciBlbGlkYWJsZSBDKysgY29weS1jb25zdHJ1Y3RvcnMgYW5kIG1vdmUtY29uc3RydWN0b3JzIHNob3VsZCBiZSAiCisgICAgImFjdHVhbGx5IGVsaWRlZCBkdXJpbmcgYW5hbHlzaXMuIEJvdGggYmVoYXZpb3JzIGFyZSBhbGxvd2VkIGJ5IHRoZSBDKysgIgorICAgICJzdGFuZGFyZCwgYW5kIHRoZSBhbmFseXplciwgbGlrZSBDb2RlR2VuLCBkZWZhdWx0cyB0byBlbGlkaW5nLiBTdGFydGluZyAiCisgICAgIndpdGggQysrMTcgc29tZSBlbGlzaW9ucyBiZWNvbWUgbWFuZGF0b3J5LCBhbmQgaW4gdGhlc2UgY2FzZXMgdGhlIG9wdGlvbiAiCisgICAgIndpbGwgYmUgaWdub3JlZC4iLAorICAgIHRydWUpCisKK0FOQUxZWkVSX09QVElPTigKKyAgICBib29sLCBTaG91bGRJbmxpbmVMYW1iZGFzLCAiaW5saW5lLWxhbWJkYXMiLAorICAgICJXaGV0aGVyIGxhbWJkYXMgc2hvdWxkIGJlIGlubGluZWQuIE90aGVyd2lzZSBhIHNpbmsgbm9kZSB3aWxsIGJlICIKKyAgICAiZ2VuZXJhdGVkIGVhY2ggdGltZSBhIExhbWJkYUV4cHIgaXMgdmlzaXRlZC4iLAorICAgIHRydWUpCisKK0FOQUxZWkVSX09QVElPTihib29sLCBTaG91bGRXaWRlbkxvb3BzLCAid2lkZW4tbG9vcHMiLAorICAgICAgICAgICAgICAgICJXaGV0aGVyIHRoZSBhbmFseXNpcyBzaG91bGQgdHJ5IHRvIHdpZGVuIGxvb3BzLiIsIGZhbHNlKQorCitBTkFMWVpFUl9PUFRJT04oCisgICAgYm9vbCwgU2hvdWxkVW5yb2xsTG9vcHMsICJ1bnJvbGwtbG9vcHMiLAorICAgICJXaGV0aGVyIHRoZSBhbmFseXNpcyBzaG91bGQgdHJ5IHRvIHVucm9sbCBsb29wcyB3aXRoIGtub3duIGJvdW5kcy4iLCBmYWxzZSkKKworQU5BTFlaRVJfT1BUSU9OKAorICAgIGJvb2wsIFNob3VsZERpc3BsYXlOb3Rlc0FzRXZlbnRzLCAibm90ZXMtYXMtZXZlbnRzIiwKKyAgICAiV2hldGhlciB0aGUgYnVnIHJlcG9ydGVyIHNob3VsZCB0cmFuc3BhcmVudGx5IHRyZWF0IGV4dHJhIG5vdGUgZGlhZ25vc3RpYyAiCisgICAgInBpZWNlcyBhcyBldmVudCBkaWFnbm9zdGljIHBpZWNlcy4gVXNlZnVsIHdoZW4gdGhlIGRpYWdub3N0aWMgY29uc3VtZXIgIgorICAgICJkb2Vzbid0IHN1cHBvcnQgdGhlIGV4dHJhIG5vdGUgcGllY2VzLiIsCisgICAgZmFsc2UpCisKK0FOQUxZWkVSX09QVElPTigKKyAgICBib29sLCBTaG91bGRBZ2dyZXNzaXZlbHlTaW1wbGlmeUJpbmFyeU9wZXJhdGlvbiwKKyAgICAiYWdncmVzc2l2ZS1iaW5hcnktb3BlcmF0aW9uLXNpbXBsaWZpY2F0aW9uIiwKKyAgICAiV2hldGhlciBTVmFsQnVpbGRlciBzaG91bGQgcmVhcnJhbmdlIGNvbXBhcmlzb25zIGFuZCBhZGRpdGl2ZSBvcGVyYXRpb25zICIKKyAgICAib2Ygc3ltYm9saWMgZXhwcmVzc2lvbnMgd2hpY2ggY29uc2lzdCBvZiBhIHN1bSBvZiBhIHN5bWJvbCBhbmQgYSBjb25jcmV0ZSAiCisgICAgImludGVnZXIgaW50byB0aGUgZm9ybWF0IHdoZXJlIHN5bWJvbHMgYXJlIG9uIHRoZSBsZWZ0LWhhbmQgc2lkZSBhbmQgdGhlICIKKyAgICAiaW50ZWdlciBpcyBvbiB0aGUgcmlnaHQuIFRoaXMgaXMgb25seSBkb25lIGlmIGJvdGggc3ltYm9scyBhbmQgYm90aCAiCisgICAgImNvbmNyZXRlIGludGVnZXJzIGFyZSBzaWduZWQsIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgcXVhcnRlciBvZiB0aGUgIgorICAgICJtaW5pbXVtIHZhbHVlIG9mIHRoZSB0eXBlIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHF1YXJ0ZXIgb2YgdGhlICIKKyAgICAibWF4aW11bSB2YWx1ZSBvZiB0aGF0IHR5cGUuIEEgKyBuIDxPUD4gQiArIG0gYmVjb21lcyBBIC0gQiA8T1A+IG0gLSBuLCAiCisgICAgIndoZXJlIEEgYW5kIEIgc3ltYm9saWMsIG4gYW5kIG0gYXJlIGludGVnZXJzLiA8T1A+IGlzIGFueSBvZiAnPT0nLCAnIT0nLCAiCisgICAgIic8JywgJzw9JywgJz4nLCAnPj0nLCAnKycgb3IgJy0nLiBUaGUgcmVhcnJhbmdlbWVudCBhbHNvIGhhcHBlbnMgd2l0aCAnLScgIgorICAgICJpbnN0ZWFkIG9mICcrJyBvbiBlaXRoZXIgb3IgYm90aCBzaWRlIGFuZCBhbHNvIGlmIGFueSBvciBib3RoIGludGVnZXJzICIKKyAgICAiYXJlIG1pc3NpbmcuIiwKKyAgICBmYWxzZSkKKworQU5BTFlaRVJfT1BUSU9OKAorICAgIGJvb2wsIFNob3VsZEVhZ2VybHlBc3N1bWUsICJlYWdlcmx5LWFzc3VtZSIsCisgICAgIldoZXRoZXIgd2Ugc2hvdWxkIGVhZ2VybHkgYXNzdW1lIGV2YWx1YXRpb25zIG9mIGNvbmRpdGlvbmFscywgdGh1cywgIgorICAgICJiaWZ1cmNhdGluZyB0aGUgcGF0aC4gVGhpcyBpbmRpY2F0ZXMgaG93IHRoZSBlbmdpbmUgc2hvdWxkIGhhbmRsZSAiCisgICAgImV4cHJlc3Npb25zIHN1Y2ggYXM6ICd4ID0gKHkgIT0gMCknLiBXaGVuIHRoaXMgaXMgdHJ1ZSB0aGVuIHRoZSAiCisgICAgInN1YmV4cHJlc3Npb24gJ3kgIT0gMCcgd2lsbCBiZSBlYWdlcmx5IGFzc3VtZWQgdG8gYmUgdHJ1ZSBvciBmYWxzZSwgdGh1cyAiCisgICAgImV2YWx1YXRpbmcgaXQgdG8gdGhlIGludGVnZXJzIDAgb3IgMSByZXNwZWN0aXZlbHkuIFRoZSB1cHNpZGUgaXMgdGhhdCAiCisgICAgInRoaXMgY2FuIGluY3JlYXNlIGFuYWx5c2lzIHByZWNpc2lvbiB1bnRpbCB3ZSBoYXZlIGEgYmV0dGVyIHdheSB0byBsYXppbHkgIgorICAgICJldmFsdWF0ZSBzdWNoIGxvZ2ljLiBUaGUgZG93bnNpZGUgaXMgdGhhdCBpdCBlYWdlcmx5IGJpZnVyY2F0ZXMgcGF0aHMuIiwKKyAgICB0cnVlKQorCitBTkFMWVpFUl9PUFRJT04oCisgICAgYm9vbCwgSXNOYWl2ZUNUVUVuYWJsZWQsICJleHBlcmltZW50YWwtZW5hYmxlLW5haXZlLWN0dS1hbmFseXNpcyIsCisgICAgIldoZXRoZXIgbmFpdmUgY3Jvc3MgdHJhbnNsYXRpb24gdW5pdCBhbmFseXNpcyBpcyBlbmFibGVkLiBUaGlzIGlzIGFuICIKKyAgICAiZXhwZXJpbWVudGFsIGZlYXR1cmUgdG8gaW5saW5lIGZ1bmN0aW9ucyBmcm9tIG90aGVyIHRyYW5zbGF0aW9uIHVuaXRzLiIsCisgICAgZmFsc2UpCisKK0FOQUxZWkVSX09QVElPTihib29sLCBTaG91bGREaXNwbGF5TWFjcm9FeHBhbnNpb25zLCAiZXhwYW5kLW1hY3JvcyIsCisgICAgICAgICAgICAgICAgIldoZXRoZXIgbWFjcm9zIHJlbGF0ZWQgdG8gdGhlIGJ1Z3BhdGggc2hvdWxkIGJlICIKKyAgICAgICAgICAgICAgICAiZXhwYW5kZWQgYW5kIGluY2x1ZGVkIGluIHRoZSBwbGlzdCBvdXRwdXQuIiwKKyAgICAgICAgICAgICAgICBmYWxzZSkKKworQU5BTFlaRVJfT1BUSU9OKGJvb2wsIERpc3BsYXlDVFVQcm9ncmVzcywgImRpc3BsYXktY3R1LXByb2dyZXNzIiwKKyAgICAgICAgICAgICAgICAiV2hldGhlciB0byBlbWl0IHZlcmJvc2Ugb3V0cHV0IGFib3V0ICIKKyAgICAgICAgICAgICAgICAidGhlIGFuYWx5emVyJ3MgcHJvZ3Jlc3MgcmVsYXRlZCB0byBjdHUuIiwKKyAgICAgICAgICAgICAgICBmYWxzZSkKKworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vIFVuc2luZ2VkIGFuYWx5emVyIG9wdGlvbnMuCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCitBTkFMWVpFUl9PUFRJT04oCisgICAgdW5zaWduZWQsIEFsd2F5c0lubGluZVNpemUsICJpcGEtYWx3YXlzLWlubGluZS1zaXplIiwKKyAgICAiVGhlIHNpemUgb2YgdGhlIGZ1bmN0aW9ucyAoaW4gYmFzaWMgYmxvY2tzKSwgd2hpY2ggc2hvdWxkIGJlIGNvbnNpZGVyZWQgIgorICAgICJ0byBiZSBzbWFsbCBlbm91Z2ggdG8gYWx3YXlzIGlubGluZS4iLAorICAgIDMpCisKK0FOQUxZWkVSX09QVElPTigKKyAgICB1bnNpZ25lZCwgR3JhcGhUcmltSW50ZXJ2YWwsICJncmFwaC10cmltLWludGVydmFsIiwKKyAgICAiSG93IG9mdGVuIG5vZGVzIGluIHRoZSBFeHBsb2RlZEdyYXBoIHNob3VsZCBiZSByZWN5Y2xlZCB0byBzYXZlIG1lbW9yeS4gIgorICAgICJUbyBkaXNhYmxlIG5vZGUgcmVjbGFtYXRpb24sIHNldCB0aGUgb3B0aW9uIHRvIDAuIiwKKyAgICAxMDAwKQorCitBTkFMWVpFUl9PUFRJT04oCisgICAgdW5zaWduZWQsIE1pbkNGR1NpemVUcmVhdEZ1bmN0aW9uc0FzTGFyZ2UsCisgICAgIm1pbi1jZmctc2l6ZS10cmVhdC1mdW5jdGlvbnMtYXMtbGFyZ2UiLAorICAgICJUaGUgbnVtYmVyIG9mIGJhc2ljIGJsb2NrcyBhIGZ1bmN0aW9uIG5lZWRzIHRvIGhhdmUgdG8gYmUgY29uc2lkZXJlZCAiCisgICAgImxhcmdlIGZvciB0aGUgJ21heC10aW1lcy1pbmxpbmUtbGFyZ2UnIGNvbmZpZyBvcHRpb24uIiwKKyAgICAxNCkKKworQU5BTFlaRVJfT1BUSU9OKHVuc2lnbmVkLCBNYXhTeW1ib2xDb21wbGV4aXR5LCAibWF4LXN5bWJvbC1jb21wbGV4aXR5IiwKKyAgICAgICAgICAgICAgICAiVGhlIG1heGltdW0gY29tcGxleGl0eSBvZiBzeW1ib2xpYyBjb25zdHJhaW50LiIsIDM1KQorCitBTkFMWVpFUl9PUFRJT04odW5zaWduZWQsIE1heFRpbWVzSW5saW5lTGFyZ2UsICJtYXgtdGltZXMtaW5saW5lLWxhcmdlIiwKKyAgICAgICAgICAgICAgICAiVGhlIG1heGltdW0gdGltZXMgYSBsYXJnZSBmdW5jdGlvbiBjb3VsZCBiZSBpbmxpbmVkLiIsIDMyKQorCitBTkFMWVpFUl9PUFRJT05fREVQRU5EU19PTl9VU0VSX01PREUoCisgICAgdW5zaWduZWQsIE1heElubGluYWJsZVNpemUsICJtYXgtaW5saW5hYmxlLXNpemUiLAorICAgICJUaGUgYm91bmQgb24gdGhlIG51bWJlciBvZiBiYXNpYyBibG9ja3MgaW4gYW4gaW5saW5lZCBmdW5jdGlvbi4iLAorICAgIC8qIFNIQUxMT1dfVkFMICovIDQsIC8qIERFRVBfVkFMICovIDEwMCkKKworQU5BTFlaRVJfT1BUSU9OX0RFUEVORFNfT05fVVNFUl9NT0RFKAorICAgIHVuc2lnbmVkLCBNYXhOb2Rlc1BlclRvcExldmVsRnVuY3Rpb24sICJtYXgtbm9kZXMiLAorICAgICJUaGUgbWF4aW11bSBudW1iZXIgb2Ygbm9kZXMgdGhlIGFuYWx5emVyIGNhbiBnZW5lcmF0ZSB3aGlsZSBleHBsb3JpbmcgYSAiCisgICAgInRvcCBsZXZlbCBmdW5jdGlvbiAoZm9yIGVhY2ggZXhwbG9kZWQgZ3JhcGgpLiAwIG1lYW5zIG5vIGxpbWl0LiIsCisgICAgLyogU0hBTExPV19WQUwgKi8gNzUwMDAsIC8qIERFRVBfVkFMICovIDIyNTAwMCkKKworQU5BTFlaRVJfT1BUSU9OKAorICAgIHVuc2lnbmVkLCBSZWdpb25TdG9yZVNtYWxsU3RydWN0TGltaXQsICJyZWdpb24tc3RvcmUtc21hbGwtc3RydWN0LWxpbWl0IiwKKyAgICAiVGhlIGxhcmdlc3QgbnVtYmVyIG9mIGZpZWxkcyBhIHN0cnVjdCBjYW4gaGF2ZSBhbmQgc3RpbGwgYmUgY29uc2lkZXJlZCAiCisgICAgInNtYWxsIFRoaXMgaXMgY3VycmVudGx5IHVzZWQgdG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IGl0IGlzIHdvcnRoIGZvcmNpbmcgIgorICAgICJhIExhenlDb21wb3VuZFZhbCBvbiBiaW5kLiBUbyBkaXNhYmxlIGFsbCBzbWFsbC1zdHJ1Y3QtZGVwZW5kZW50ICIKKyAgICAiYmVoYXZpb3IsIHNldCB0aGUgb3B0aW9uIHRvIDAuIiwKKyAgICAyKQorCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8gU3RyaW5nIGFuYWx5emVyIG9wdGlvbnMuCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCitBTkFMWVpFUl9PUFRJT04oU3RyaW5nUmVmLCBDVFVEaXIsICJjdHUtZGlyIiwKKyAgICAgICAgICAgICAgICAiVGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBDVFUgcmVsYXRlZCBmaWxlcy4iLCAiIikKKworQU5BTFlaRVJfT1BUSU9OKFN0cmluZ1JlZiwgQ1RVSW5kZXhOYW1lLCAiY3R1LWluZGV4LW5hbWUiLAorICAgICAgICAgICAgICAgICJ0aGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBDVFUgaW5kZXggb2YgZGVmaW5pdGlvbnMuIiwKKyAgICAgICAgICAgICAgICAiZXh0ZXJuYWxEZWZNYXAudHh0IikKKworQU5BTFlaRVJfT1BUSU9OKAorICAgIFN0cmluZ1JlZiwgTW9kZWxQYXRoLCAibW9kZWwtcGF0aCIsCisgICAgIlRoZSBhbmFseXplciBjYW4gaW5saW5lIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIHdyaXR0ZW4gaW4gQyBhdCB0aGUgIgorICAgICJjYWxsIHNpdGUgaWYgdGhlIGNhbGxlZCBmdW5jdGlvbidzIGJvZHkgaXMgbm90IGF2YWlsYWJsZS4gVGhpcyBpcyBhIHBhdGggIgorICAgICJ3aGVyZSB0byBsb29rIGZvciB0aG9zZSBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbnMgKGNhbGxlZCBtb2RlbHMpLiIsCisgICAgIiIpCisKK0FOQUxZWkVSX09QVElPTigKKyAgICBTdHJpbmdSZWYsIENYWE1lbWJlcklubGluaW5nTW9kZSwgImMrKy1pbmxpbmluZyIsCisgICAgIkNvbnRyb2xzIHdoaWNoIEMrKyBtZW1iZXIgZnVuY3Rpb25zIHdpbGwgYmUgY29uc2lkZXJlZCBmb3IgaW5saW5pbmcuICIKKyAgICAiVmFsdWU6IFwiY29uc3RydWN0b3JzXCIsIFwiZGVzdHJ1Y3RvcnNcIiwgXCJtZXRob2RzXCIuIiwKKyAgICAiZGVzdHJ1Y3RvcnMiKQorCitBTkFMWVpFUl9PUFRJT05fREVQRU5EU19PTl9VU0VSX01PREUoCisgICAgU3RyaW5nUmVmLCBJUEFNb2RlLCAiaXBhIiwKKyAgICAiQ29udHJvbHMgdGhlIG1vZGUgb2YgaW50ZXItcHJvY2VkdXJhbCBhbmFseXNpcy4gVmFsdWU6IFwibm9uZVwiLCAiCisgICAgIlwiYmFzaWMtaW5saW5pbmdcIiwgXCJpbmxpbmluZ1wiLCBcImR5bmFtaWNcIiwgXCJkeW5hbWljLWJpZnVyY2F0ZVwiLiIsCisgICAgLyogU0hBTExPV19WQUwgKi8gImlubGluaW5nIiwgLyogREVFUF9WQUwgKi8gImR5bmFtaWMtYmlmdXJjYXRlIikKKworQU5BTFlaRVJfT1BUSU9OKAorICAgIFN0cmluZ1JlZiwgRXhwbG9yYXRpb25TdHJhdGVneSwgImV4cGxvcmF0aW9uX3N0cmF0ZWd5IiwKKyAgICAiVmFsdWU6IFwiZGZzXCIsIFwiYmZzXCIsIFwidW5leHBsb3JlZF9maXJzdFwiLCAiCisgICAgIlwidW5leHBsb3JlZF9maXJzdF9xdWV1ZVwiLCBcInVuZXhwbG9yZWRfZmlyc3RfbG9jYXRpb25fcXVldWVcIiwgIgorICAgICJcImJmc19ibG9ja19kZnNfY29udGVudHNcIi4iLAorICAgICJ1bmV4cGxvcmVkX2ZpcnN0X3F1ZXVlIikKKworI3VuZGVmIEFOQUxZWkVSX09QVElPTl9ERVBFTkRTX09OX1VTRVJfTU9ERQorI3VuZGVmIEFOQUxZWkVSX09QVElPTgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9BbmFseXplck9wdGlvbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvQW5hbHl6ZXJPcHRpb25zLmgKaW5kZXggNzE1Y2MyYi4uNzc1ZjBkZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9BbmFseXplck9wdGlvbnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0FuYWx5emVyT3B0aW9ucy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEFuYWx5emVyT3B0aW9ucy5oIC0gQW5hbHlzaXMgRW5naW5lIE9wdGlvbnMgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yMCw2ICsxOSw3IEBACiAjaW5jbHVkZSAibGx2bS9BRFQvT3B0aW9uYWwuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9TdHJpbmdNYXAuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9TdHJpbmdSZWYuaCIKKyNpbmNsdWRlICJsbHZtL0FEVC9TdHJpbmdTd2l0Y2guaCIKICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx2ZWN0b3I+CkBAIC04NSw3ICs4NSw3IEBACiAgIC8vIFVuaW5pdGlhbGl6ZWQgPSAwLAogCiAgIC8vLyBBIGR1bW15IG1vZGUgaW4gd2hpY2ggbm8gQysrIGlubGluaW5nIGlzIGVuYWJsZWQuCi0gIENJTUtfTm9uZSA9IDEsCisgIENJTUtfTm9uZSwKIAogICAvLy8gUmVmZXJzIHRvIHJlZ3VsYXIgbWVtYmVyIGZ1bmN0aW9uIGFuZCBvcGVyYXRvciBjYWxscy4KICAgQ0lNS19NZW1iZXJGdW5jdGlvbnMsCkBAIC0xMDIsOCArMTAyLDYgQEAKIAogLy8vIERlc2NyaWJlcyB0aGUgZGlmZmVyZW50IG1vZGVzIG9mIGludGVyLXByb2NlZHVyYWwgYW5hbHlzaXMuCiBlbnVtIElQQUtpbmQgewotICBJUEFLX05vdFNldCA9IDAsCi0KICAgLy8vIFBlcmZvcm0gb25seSBpbnRyYS1wcm9jZWR1cmFsIGFuYWx5c2lzLgogICBJUEFLX05vbmUgPSAxLAogCkBAIC0xMjEsNiArMTE5LDQ2IEBACiAgIElQQUtfRHluYW1pY0Rpc3BhdGNoQmlmdXJjYXRlID0gNQogfTsKIAorZW51bSBjbGFzcyBFeHBsb3JhdGlvblN0cmF0ZWd5S2luZCB7CisgIERGUywKKyAgQkZTLAorICBVbmV4cGxvcmVkRmlyc3QsCisgIFVuZXhwbG9yZWRGaXJzdFF1ZXVlLAorICBVbmV4cGxvcmVkRmlyc3RMb2NhdGlvblF1ZXVlLAorICBCRlNCbG9ja0RGU0NvbnRlbnRzLAorfTsKKworLy8vIERlc2NyaWJlcyB0aGUga2luZHMgZm9yIGhpZ2gtbGV2ZWwgYW5hbHl6ZXIgbW9kZS4KK2VudW0gVXNlck1vZGVLaW5kIHsKKyAgLy8vIFBlcmZvcm0gc2hhbGxvdyBidXQgZmFzdCBhbmFseXplcy4KKyAgVU1LX1NoYWxsb3cgPSAxLAorCisgIC8vLyBQZXJmb3JtIGRlZXAgYW5hbHl6ZXMuCisgIFVNS19EZWVwID0gMgorfTsKKworLy8vIFN0b3JlcyBvcHRpb25zIGZvciB0aGUgYW5hbHl6ZXIgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgorLy8vCisvLy8gU29tZSBvcHRpb25zIGFyZSBmcm9udGVuZCBmbGFncyAoZS5nLjogLWFuYWx5emVyLW91dHB1dCksIGJ1dCBzb21lIGFyZQorLy8vIGFuYWx5emVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgd2hpY2ggYXJlIHByZWNlZGVkIGJ5IC1hbmFseXplci1jb25maWcKKy8vLyAoZS5nLjogLWFuYWx5emVyLWNvbmZpZyBub3Rlcy1hcy1ldmVudHM9dHJ1ZSkuCisvLy8KKy8vLyBJZiB5b3UnZCBsaWtlIHRvIGFkZCBhIG5ldyBmcm9udGVuZCBmbGFnLCBhZGQgaXQgdG8KKy8vLyBpbmNsdWRlL2NsYW5nL0RyaXZlci9DQzFPcHRpb25zLnRkLCBhZGQgYSBuZXcgZmllbGQgdG8gc3RvcmUgdGhlIHZhbHVlIG9mCisvLy8gdGhhdCBmbGFnIGluIHRoaXMgY2xhc3MsIGFuZCBpbml0aWFsaXplIGl0IGluCisvLy8gbGliL0Zyb250ZW5kL0NvbXBpbGVySW52b2NhdGlvbi5jcHAuCisvLy8KKy8vLyBJZiB5b3UnZCBsaWtlIHRvIGFkZCBhIG5ldyBub24tY2hlY2tlciBjb25maWd1cmF0aW9uLCByZWdpc3RlciBpdCBpbgorLy8vIGluY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9BbmFseXplck9wdGlvbnMuZGVmLCBhbmQgcmVmZXIgdG8gdGhlCisvLy8gdG9wIG9mIHRoZSBmaWxlIGZvciBkb2N1bWVudGF0aW9uLgorLy8vCisvLy8gSWYgeW91J2QgbGlrZSB0byBhZGQgYSBuZXcgY2hlY2tlciBvcHRpb24sIGNhbGwgZ2V0Q2hlY2tlcipPcHRpb24oKQorLy8vIHdoZW5ldmVyLgorLy8vCisvLy8gU29tZSBvZiB0aGUgb3B0aW9ucyBhcmUgY29udHJvbGxlZCBieSByYXcgZnJvbnRlbmQgZmxhZ3MgZm9yIG5vIGdvb2QgcmVhc29uLAorLy8vIGFuZCBzaG91bGQgYmUgZXZlbnR1YWxseSBjb252ZXJ0ZWQgaW50byAtYW5hbHl6ZXItY29uZmlnIGZsYWdzLiBOZXcgYW5hbHl6ZXIKKy8vLyBvcHRpb25zIHNob3VsZCBub3QgYmUgaW1wbGVtZW50ZWQgYXMgZnJvbnRlbmQgZmxhZ3MuIEZyb250ZW5kIGZsYWdzIHN0aWxsCisvLy8gbWFrZSBzZW5zZSBmb3IgdGhpbmdzIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgYWN0dWFsIGFuYWx5c2lzLgogY2xhc3MgQW5hbHl6ZXJPcHRpb25zIDogcHVibGljIFJlZkNvdW50ZWRCYXNlPEFuYWx5emVyT3B0aW9ucz4gewogcHVibGljOgogICB1c2luZyBDb25maWdUYWJsZSA9IGxsdm06OlN0cmluZ01hcDxzdGQ6OnN0cmluZz47CkBAIC0xMzIsNiArMTcwLDcgQEAKICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBib29sPj4gQ2hlY2tlcnNDb250cm9sTGlzdDsKIAogICAvLy8gQSBrZXktdmFsdWUgdGFibGUgb2YgdXNlLXNwZWNpZmllZCBjb25maWd1cmF0aW9uIHZhbHVlcy4KKyAgLy8gVE9ETzogVGhpcyBzaG91bGRuJ3QgYmUgcHVibGljLgogICBDb25maWdUYWJsZSBDb25maWc7CiAgIEFuYWx5c2lzU3RvcmVzIEFuYWx5c2lzU3RvcmVPcHQgPSBSZWdpb25TdG9yZU1vZGVsOwogICBBbmFseXNpc0NvbnN0cmFpbnRzIEFuYWx5c2lzQ29uc3RyYWludHNPcHQgPSBSYW5nZUNvbnN0cmFpbnRzTW9kZWw7CkBAIC0xNTksNiArMTk4LDggQEAKIAogICB1bnNpZ25lZCBTaG93Q2hlY2tlckhlbHAgOiAxOwogICB1bnNpZ25lZCBTaG93RW5hYmxlZENoZWNrZXJMaXN0IDogMTsKKyAgdW5zaWduZWQgU2hvd0NvbmZpZ09wdGlvbnNMaXN0IDogMTsKKyAgdW5zaWduZWQgU2hvdWxkRW1pdEVycm9yc09uSW52YWxpZENvbmZpZ1ZhbHVlIDogMTsKICAgdW5zaWduZWQgQW5hbHl6ZUFsbCA6IDE7CiAgIHVuc2lnbmVkIEFuYWx5emVyRGlzcGxheVByb2dyZXNzIDogMTsKICAgdW5zaWduZWQgQW5hbHl6ZU5lc3RlZEJsb2NrcyA6IDE7CkBAIC0xODEsMTkwICsyMjIsNTEgQEAKICAgLy8vIFRoZSBtb2RlIG9mIGZ1bmN0aW9uIHNlbGVjdGlvbiB1c2VkIGR1cmluZyBpbmxpbmluZy4KICAgQW5hbHlzaXNJbmxpbmluZ01vZGUgSW5saW5pbmdNb2RlID0gTm9SZWR1bmRhbmN5OwogCi0gIGVudW0gY2xhc3MgRXhwbG9yYXRpb25TdHJhdGVneUtpbmQgewotICAgIERGUywKLSAgICBCRlMsCi0gICAgVW5leHBsb3JlZEZpcnN0LAotICAgIFVuZXhwbG9yZWRGaXJzdFF1ZXVlLAotICAgIEJGU0Jsb2NrREZTQ29udGVudHMsCi0gICAgTm90U2V0CisgIC8vIENyZWF0ZSBhIGZpZWxkIGZvciBlYWNoIC1hbmFseXplci1jb25maWcgb3B0aW9uLgorI2RlZmluZSBBTkFMWVpFUl9PUFRJT05fREVQRU5EU19PTl9VU0VSX01PREUoVFlQRSwgTkFNRSwgQ01ERkxBRywgREVTQywgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQUxMT1dfVkFMLCBERUVQX1ZBTCkgICAgICAgICAgICBcCisgIEFOQUxZWkVSX09QVElPTihUWVBFLCBOQU1FLCBDTURGTEFHLCBERVNDLCBTSEFMTE9XX1ZBTCkKKworI2RlZmluZSBBTkFMWVpFUl9PUFRJT04oVFlQRSwgTkFNRSwgQ01ERkxBRywgREVTQywgREVGQVVMVF9WQUwpICAgICAgICAgICAgICAgIFwKKyAgVFlQRSBOQU1FOworCisjaW5jbHVkZSAiY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9BbmFseXplck9wdGlvbnMuZGVmIgorI3VuZGVmIEFOQUxZWkVSX09QVElPTgorI3VuZGVmIEFOQUxZWkVSX09QVElPTl9ERVBFTkRTX09OX1VTRVJfTU9ERQorCisgIC8vIENyZWF0ZSBhbiBhcnJheSBvZiBhbGwgLWFuYWx5emVyLWNvbmZpZyBjb21tYW5kIGxpbmUgb3B0aW9ucy4gU29ydCBpdCBpbgorICAvLyB0aGUgY29uc3RydWN0b3IuCisgIHN0ZDo6dmVjdG9yPFN0cmluZ1JlZj4gQW5hbHl6ZXJDb25maWdDbWRGbGFncyA9IHsKKyNkZWZpbmUgQU5BTFlaRVJfT1BUSU9OX0RFUEVORFNfT05fVVNFUl9NT0RFKFRZUEUsIE5BTUUsIENNREZMQUcsIERFU0MsICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFMTE9XX1ZBTCwgREVFUF9WQUwpICAgICAgICAgICAgXAorICBBTkFMWVpFUl9PUFRJT04oVFlQRSwgTkFNRSwgQ01ERkxBRywgREVTQywgU0hBTExPV19WQUwpCisKKyNkZWZpbmUgQU5BTFlaRVJfT1BUSU9OKFRZUEUsIE5BTUUsIENNREZMQUcsIERFU0MsIERFRkFVTFRfVkFMKSAgICAgICAgICAgICAgICBcCisgICAgQ01ERkxBRywKKworI2luY2x1ZGUgImNsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvQW5hbHl6ZXJPcHRpb25zLmRlZiIKKyN1bmRlZiBBTkFMWVpFUl9PUFRJT04KKyN1bmRlZiBBTkFMWVpFUl9PUFRJT05fREVQRU5EU19PTl9VU0VSX01PREUKICAgfTsKIAotcHJpdmF0ZToKLSAgRXhwbG9yYXRpb25TdHJhdGVneUtpbmQgRXhwbG9yYXRpb25TdHJhdGVneSA9IEV4cGxvcmF0aW9uU3RyYXRlZ3lLaW5kOjpOb3RTZXQ7CisgIGJvb2wgaXNVbmtub3duQW5hbHl6ZXJDb25maWcoU3RyaW5nUmVmIE5hbWUpIGNvbnN0IHsKIAotICAvLy8gRGVzY3JpYmVzIHRoZSBraW5kcyBmb3IgaGlnaC1sZXZlbCBhbmFseXplciBtb2RlLgotICBlbnVtIFVzZXJNb2RlS2luZCB7Ci0gICAgVU1LX05vdFNldCA9IDAsCisgICAgYXNzZXJ0KHN0ZDo6aXNfc29ydGVkKEFuYWx5emVyQ29uZmlnQ21kRmxhZ3MuYmVnaW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQW5hbHl6ZXJDb25maWdDbWRGbGFncy5lbmQoKSkpOwogCi0gICAgLy8vIFBlcmZvcm0gc2hhbGxvdyBidXQgZmFzdCBhbmFseXplcy4KLSAgICBVTUtfU2hhbGxvdyA9IDEsCisgICAgcmV0dXJuICFzdGQ6OmJpbmFyeV9zZWFyY2goQW5hbHl6ZXJDb25maWdDbWRGbGFncy5iZWdpbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuYWx5emVyQ29uZmlnQ21kRmxhZ3MuZW5kKCksIE5hbWUpOworICB9CiAKLSAgICAvLy8gUGVyZm9ybSBkZWVwIGFuYWx5emVzLgotICAgIFVNS19EZWVwID0gMgotICB9OwotCi0gIC8vLyBDb250cm9scyB0aGUgaGlnaC1sZXZlbCBhbmFseXplciBtb2RlLCB3aGljaCBpbmZsdWVuY2VzIHRoZSBkZWZhdWx0Ci0gIC8vLyBzZXR0aW5ncyBmb3Igc29tZSBvZiB0aGUgbG93ZXItbGV2ZWwgY29uZmlnIG9wdGlvbnMgKHN1Y2ggYXMgSVBBTW9kZSkuCi0gIC8vLyBcc2EgZ2V0VXNlck1vZGUKLSAgVXNlck1vZGVLaW5kIFVzZXJNb2RlID0gVU1LX05vdFNldDsKLQotICAvLy8gQ29udHJvbHMgdGhlIG1vZGUgb2YgaW50ZXItcHJvY2VkdXJhbCBhbmFseXNpcy4KLSAgSVBBS2luZCBJUEFNb2RlID0gSVBBS19Ob3RTZXQ7Ci0KLSAgLy8vIENvbnRyb2xzIHdoaWNoIEMrKyBtZW1iZXIgZnVuY3Rpb25zIHdpbGwgYmUgY29uc2lkZXJlZCBmb3IgaW5saW5pbmcuCi0gIENYWElubGluZWFibGVNZW1iZXJLaW5kIENYWE1lbWJlcklubGluaW5nTW9kZTsKLQotICAvLy8gXHNhIGluY2x1ZGVJbXBsaWNpdER0b3JzSW5DRkcKLSAgT3B0aW9uYWw8Ym9vbD4gSW5jbHVkZUltcGxpY2l0RHRvcnNJbkNGRzsKLQotICAvLy8gXHNhIGluY2x1ZGVUZW1wb3JhcnlEdG9yc0luQ0ZHCi0gIE9wdGlvbmFsPGJvb2w+IEluY2x1ZGVUZW1wb3JhcnlEdG9yc0luQ0ZHOwotCi0gIC8vLyBcc2EgSW5jbHVkZUxpZmV0aW1lSW5DRkcKLSAgT3B0aW9uYWw8Ym9vbD4gSW5jbHVkZUxpZmV0aW1lSW5DRkc7Ci0KLSAgLy8vIFxzYSBJbmNsdWRlTG9vcEV4aXRJbkNGRwotICBPcHRpb25hbDxib29sPiBJbmNsdWRlTG9vcEV4aXRJbkNGRzsKLQotICAvLy8gXHNhIEluY2x1ZGVSaWNoQ29uc3RydWN0b3JzSW5DRkcKLSAgT3B0aW9uYWw8Ym9vbD4gSW5jbHVkZVJpY2hDb25zdHJ1Y3RvcnNJbkNGRzsKLQotICAvLy8gXHNhIG1heUlubGluZUNYWFN0YW5kYXJkTGlicmFyeQotICBPcHRpb25hbDxib29sPiBJbmxpbmVDWFhTdGFuZGFyZExpYnJhcnk7Ci0KLSAgLy8vIFxzYSBpbmNsdWRlU2NvcGVzSW5DRkcKLSAgT3B0aW9uYWw8Ym9vbD4gSW5jbHVkZVNjb3Blc0luQ0ZHOwotCi0gIC8vLyBcc2EgbWF5SW5saW5lVGVtcGxhdGVGdW5jdGlvbnMKLSAgT3B0aW9uYWw8Ym9vbD4gSW5saW5lVGVtcGxhdGVGdW5jdGlvbnM7Ci0KLSAgLy8vIFxzYSBtYXlJbmxpbmVDWFhBbGxvY2F0b3IKLSAgT3B0aW9uYWw8Ym9vbD4gSW5saW5lQ1hYQWxsb2NhdG9yOwotCi0gIC8vLyBcc2EgbWF5SW5saW5lQ1hYQ29udGFpbmVyTWV0aG9kcwotICBPcHRpb25hbDxib29sPiBJbmxpbmVDWFhDb250YWluZXJNZXRob2RzOwotCi0gIC8vLyBcc2EgbWF5SW5saW5lQ1hYU2hhcmVkUHRyRHRvcgotICBPcHRpb25hbDxib29sPiBJbmxpbmVDWFhTaGFyZWRQdHJEdG9yOwotCi0gIC8vLyBcc2EgbWF5SW5saW5lQ1hYVGVtcG9yYXJ5RHRvcnMKLSAgT3B0aW9uYWw8Ym9vbD4gSW5saW5lQ1hYVGVtcG9yYXJ5RHRvcnM7Ci0KLSAgLy8vIFxzYSBtYXlJbmxpbmVPYmpDTWV0aG9kCi0gIE9wdGlvbmFsPGJvb2w+IE9iakNJbmxpbmluZ01vZGU7Ci0KLSAgLy8gQ2FjaGUgb2YgdGhlICJpcGEtYWx3YXlzLWlubGluZS1zaXplIiBzZXR0aW5nLgotICAvLyBcc2EgZ2V0QWx3YXlzSW5saW5lU2l6ZQotICBPcHRpb25hbDx1bnNpZ25lZD4gQWx3YXlzSW5saW5lU2l6ZTsKLQotICAvLy8gXHNhIHNob3VsZFN1cHByZXNzTnVsbFJldHVyblBhdGhzCi0gIE9wdGlvbmFsPGJvb2w+IFN1cHByZXNzTnVsbFJldHVyblBhdGhzOwotCi0gIC8vIFxzYSBnZXRNYXhJbmxpbmFibGVTaXplCi0gIE9wdGlvbmFsPHVuc2lnbmVkPiBNYXhJbmxpbmFibGVTaXplOwotCi0gIC8vLyBcc2Egc2hvdWxkQXZvaWRTdXBwcmVzc2luZ051bGxBcmd1bWVudFBhdGhzCi0gIE9wdGlvbmFsPGJvb2w+IEF2b2lkU3VwcHJlc3NpbmdOdWxsQXJndW1lbnRQYXRoczsKLQotICAvLy8gXHNhIHNob3VsZFN1cHByZXNzSW5saW5lZERlZmVuc2l2ZUNoZWNrcwotICBPcHRpb25hbDxib29sPiBTdXBwcmVzc0lubGluZWREZWZlbnNpdmVDaGVja3M7Ci0KLSAgLy8vIFxzYSBzaG91bGRTdXBwcmVzc0Zyb21DWFhTdGFuZGFyZExpYnJhcnkKLSAgT3B0aW9uYWw8Ym9vbD4gU3VwcHJlc3NGcm9tQ1hYU3RhbmRhcmRMaWJyYXJ5OwotCi0gIC8vLyBcc2Egc2hvdWxkQ3Jvc3NjaGVja1dpdGhaMwotICBPcHRpb25hbDxib29sPiBDcm9zc2NoZWNrV2l0aFozOwotCi0gIC8vLyBcc2EgcmVwb3J0SXNzdWVzSW5NYWluU291cmNlRmlsZQotICBPcHRpb25hbDxib29sPiBSZXBvcnRJc3N1ZXNJbk1haW5Tb3VyY2VGaWxlOwotCi0gIC8vLyBcc2EgU3RhYmxlUmVwb3J0RmlsZW5hbWUKLSAgT3B0aW9uYWw8Ym9vbD4gU3RhYmxlUmVwb3J0RmlsZW5hbWU7Ci0KLSAgT3B0aW9uYWw8Ym9vbD4gU2VyaWFsaXplU3RhdHM7Ci0KLSAgLy8vIFxzYSBnZXRHcmFwaFRyaW1JbnRlcnZhbAotICBPcHRpb25hbDx1bnNpZ25lZD4gR3JhcGhUcmltSW50ZXJ2YWw7Ci0KLSAgLy8vIFxzYSBnZXRNYXhTeW1ib2xDb21wbGV4aXR5Ci0gIE9wdGlvbmFsPHVuc2lnbmVkPiBNYXhTeW1ib2xDb21wbGV4aXR5OwotCi0gIC8vLyBcc2EgZ2V0TWF4VGltZXNJbmxpbmVMYXJnZQotICBPcHRpb25hbDx1bnNpZ25lZD4gTWF4VGltZXNJbmxpbmVMYXJnZTsKLQotICAvLy8gXHNhIGdldE1pbkNGR1NpemVUcmVhdEZ1bmN0aW9uc0FzTGFyZ2UKLSAgT3B0aW9uYWw8dW5zaWduZWQ+IE1pbkNGR1NpemVUcmVhdEZ1bmN0aW9uc0FzTGFyZ2U7Ci0KLSAgLy8vIFxzYSBnZXRNYXhOb2Rlc1BlclRvcExldmVsRnVuY3Rpb24KLSAgT3B0aW9uYWw8dW5zaWduZWQ+IE1heE5vZGVzUGVyVG9wTGV2ZWxGdW5jdGlvbjsKLQotICAvLy8gXHNhIHNob3VsZElubGluZUxhbWJkYXMKLSAgT3B0aW9uYWw8Ym9vbD4gSW5saW5lTGFtYmRhczsKLQotICAvLy8gXHNhIHNob3VsZFdpZGVuTG9vcHMKLSAgT3B0aW9uYWw8Ym9vbD4gV2lkZW5Mb29wczsKLQotICAvLy8gXHNhIHNob3VsZFVucm9sbExvb3BzCi0gIE9wdGlvbmFsPGJvb2w+IFVucm9sbExvb3BzOwotCi0gIC8vLyBcc2Egc2hvdWxkRGlzcGxheU5vdGVzQXNFdmVudHMKLSAgT3B0aW9uYWw8Ym9vbD4gRGlzcGxheU5vdGVzQXNFdmVudHM7Ci0KLSAgLy8vIFxzYSBzaG91bGRBZ2dyZXNzaXZlbHlTaW1wbGlmeUJpbmFyeU9wZXJhdGlvbgotICBPcHRpb25hbDxib29sPiBBZ2dyZXNzaXZlQmluYXJ5T3BlcmF0aW9uU2ltcGxpZmljYXRpb247Ci0KLSAgLy8vIFxzYSBzaG91bGRFYWdlcmx5QXNzdW1lCi0gIE9wdGlvbmFsPGJvb2w+IEVhZ2VybHlBc3N1bWVCaW5PcEJpZnVyY2F0aW9uOwotCi0gIC8vLyBcc2EgZ2V0Q1RVRGlyCi0gIE9wdGlvbmFsPFN0cmluZ1JlZj4gQ1RVRGlyOwotCi0gIC8vLyBcc2EgZ2V0Q1RVSW5kZXhOYW1lCi0gIE9wdGlvbmFsPFN0cmluZ1JlZj4gQ1RVSW5kZXhOYW1lOwotCi0gIC8vLyBcc2EgbmFpdmVDVFVFbmFibGVkCi0gIE9wdGlvbmFsPGJvb2w+IE5haXZlQ1RVOwotCi0gIC8vLyBcc2Egc2hvdWxkRWxpZGVDb25zdHJ1Y3RvcnMKLSAgT3B0aW9uYWw8Ym9vbD4gRWxpZGVDb25zdHJ1Y3RvcnM7Ci0KLQotICAvLy8gQSBoZWxwZXIgZnVuY3Rpb24gdGhhdCByZXRyaWV2ZXMgb3B0aW9uIGZvciBhIGdpdmVuIGZ1bGwtcXVhbGlmaWVkCi0gIC8vLyBjaGVja2VyIG5hbWUuCi0gIC8vLyBPcHRpb25zIGZvciBjaGVja2VycyBjYW4gYmUgc3BlY2lmaWVkIHZpYSAnYW5hbHl6ZXItY29uZmlnJyBjb21tYW5kLWxpbmUKLSAgLy8vIG9wdGlvbi4KLSAgLy8vIEV4YW1wbGU6Ci0gIC8vLyBAY29kZS1hbmFseXplci1jb25maWcgdW5peC5NYWxsb2M6T3B0aW9uTmFtZT1DaGVja2VyT3B0aW9uVmFsdWUgQGVuZGNvZGUKLSAgLy8vIG9yIEBjb2RlLWFuYWx5emVyLWNvbmZpZyB1bml4Ok9wdGlvbk5hbWU9R3JvdXBPcHRpb25WYWx1ZSBAZW5kY29kZQotICAvLy8gZm9yIGdyb3VwcyBvZiBjaGVja2Vycy4KLSAgLy8vIEBwYXJhbSBbaW5dIENoZWNrZXJOYW1lICBGdWxsLXF1YWxpZmllZCBjaGVja2VyIG5hbWUsIGxpa2UKLSAgLy8vIGFscGhhLnVuaXguU3RyZWFtQ2hlY2tlci4KLSAgLy8vIEBwYXJhbSBbaW5dIE9wdGlvbk5hbWUgIE5hbWUgb2YgdGhlIG9wdGlvbiB0byBnZXQuCi0gIC8vLyBAcGFyYW0gW2luXSBEZWZhdWx0ICBEZWZhdWx0IHZhbHVlIGlmIG5vIG9wdGlvbiBpcyBzcGVjaWZpZWQuCi0gIC8vLyBAcGFyYW0gW2luXSBTZWFyY2hJblBhcmVudHMgSWYgc2V0IHRvIHRydWUgYW5kIHRoZSBzZWFyY2hlZCBvcHRpb24gd2FzIG5vdAotICAvLy8gc3BlY2lmaWVkIGZvciB0aGUgZ2l2ZW4gY2hlY2tlciB0aGUgb3B0aW9ucyBmb3IgdGhlIHBhcmVudCBwYWNrYWdlcyB3aWxsCi0gIC8vLyBiZSBzZWFyY2hlZCBhcyB3ZWxsLiBUaGUgaW5uZXIgcGFja2FnZXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIG91dGVyCi0gIC8vLyBvbmVzLgotICAvLy8gQHJldHZhbCBDaGVja2VyT3B0aW9uVmFsdWUgIEFuIG9wdGlvbiBmb3IgYSBjaGVja2VyIGlmIGl0IHdhcyBzcGVjaWZpZWQuCi0gIC8vLyBAcmV0dmFsIEdyb3VwT3B0aW9uVmFsdWUgIEFuIG9wdGlvbiBmb3IgZ3JvdXAgaWYgaXQgd2FzIHNwZWNpZmllZCBhbmQgbm8KLSAgLy8vIGNoZWNrZXItc3BlY2lmaWMgb3B0aW9ucyB3ZXJlIGZvdW5kLiBUaGUgY2xvc2VyIGdyb3VwIHRvIGNoZWNrZXIsCi0gIC8vLyB0aGUgbW9yZSBwcmlvcml0eSBpdCBoYXMuIEZvciBleGFtcGxlLCBAYyBjb3JlZ3JvdXAuc3ViZ3JvdXAgaGFzIG1vcmUKLSAgLy8vIHByaW9yaXR5IHRoYW4gQGMgY29yZWdyb3VwIGZvciBAYyBjb3JlZ3JvdXAuc3ViZ3JvdXAuQ2hlY2tlck5hbWUgY2hlY2tlci4KLSAgLy8vIEByZXR2YWwgRGVmYXVsdCAgSWYgbm9yIGNoZWNrZXIgb3B0aW9uLCBub3IgZ3JvdXAgb3B0aW9uIHdhcyBmb3VuZC4KLSAgU3RyaW5nUmVmIGdldENoZWNrZXJPcHRpb24oU3RyaW5nUmVmIENoZWNrZXJOYW1lLCBTdHJpbmdSZWYgT3B0aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nUmVmIERlZmF1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgU2VhcmNoSW5QYXJlbnRzID0gZmFsc2UpOwotCi1wdWJsaWM6CiAgIEFuYWx5emVyT3B0aW9ucygpCiAgICAgICA6IERpc2FibGVBbGxDaGVja3MoZmFsc2UpLCBTaG93Q2hlY2tlckhlbHAoZmFsc2UpLAotICAgICAgICBTaG93RW5hYmxlZENoZWNrZXJMaXN0KGZhbHNlKSwgQW5hbHl6ZUFsbChmYWxzZSksCi0gICAgICAgIEFuYWx5emVyRGlzcGxheVByb2dyZXNzKGZhbHNlKSwgQW5hbHl6ZU5lc3RlZEJsb2NrcyhmYWxzZSksCi0gICAgICAgIGVhZ2VybHlBc3N1bWVCaW5PcEJpZnVyY2F0aW9uKGZhbHNlKSwgVHJpbUdyYXBoKGZhbHNlKSwKLSAgICAgICAgdmlzdWFsaXplRXhwbG9kZWRHcmFwaFdpdGhHcmFwaFZpeihmYWxzZSksCi0gICAgICAgIFVub3B0aW1pemVkQ0ZHKGZhbHNlKSwKLSAgICAgICAgUHJpbnRTdGF0cyhmYWxzZSksIE5vUmV0cnlFeGhhdXN0ZWQoZmFsc2UpLCBDWFhNZW1iZXJJbmxpbmluZ01vZGUoKSB7fQorICAgICAgICBTaG93RW5hYmxlZENoZWNrZXJMaXN0KGZhbHNlKSwgU2hvd0NvbmZpZ09wdGlvbnNMaXN0KGZhbHNlKSwKKyAgICAgICAgQW5hbHl6ZUFsbChmYWxzZSksIEFuYWx5emVyRGlzcGxheVByb2dyZXNzKGZhbHNlKSwKKyAgICAgICAgQW5hbHl6ZU5lc3RlZEJsb2NrcyhmYWxzZSksIGVhZ2VybHlBc3N1bWVCaW5PcEJpZnVyY2F0aW9uKGZhbHNlKSwKKyAgICAgICAgVHJpbUdyYXBoKGZhbHNlKSwgdmlzdWFsaXplRXhwbG9kZWRHcmFwaFdpdGhHcmFwaFZpeihmYWxzZSksCisgICAgICAgIFVub3B0aW1pemVkQ0ZHKGZhbHNlKSwgUHJpbnRTdGF0cyhmYWxzZSksIE5vUmV0cnlFeGhhdXN0ZWQoZmFsc2UpIHsKKyAgICBsbHZtOjpzb3J0KEFuYWx5emVyQ29uZmlnQ21kRmxhZ3MpOworICB9CiAKICAgLy8vIEludGVycHJldHMgYW4gb3B0aW9uJ3Mgc3RyaW5nIHZhbHVlIGFzIGEgYm9vbGVhbi4gVGhlICJ0cnVlIiBzdHJpbmcgaXMKICAgLy8vIGludGVycHJldGVkIGFzIHRydWUgYW5kIHRoZSAiZmFsc2UiIHN0cmluZyBpcyBpbnRlcnByZXRlZCBhcyBmYWxzZS4KQEAgLTM3MywzNCArMjc1LDE3IEBACiAgIC8vLyBAcGFyYW0gW2luXSBOYW1lIE5hbWUgZm9yIG9wdGlvbiB0byByZXRyaWV2ZS4KICAgLy8vIEBwYXJhbSBbaW5dIERlZmF1bHRWYWwgRGVmYXVsdCB2YWx1ZSByZXR1cm5lZCBpZiBubyBzdWNoIG9wdGlvbiB3YXMKICAgLy8vIHNwZWNpZmllZC4KLSAgLy8vIEBwYXJhbSBbaW5dIEMgVGhlIG9wdGlvbmFsIGNoZWNrZXIgcGFyYW1ldGVyIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVzdHJpY3QKLSAgLy8vIHRoZSBzZWFyY2ggdG8gdGhlIG9wdGlvbnMgb2YgdGhpcyBwYXJ0aWN1bGFyIGNoZWNrZXIgKGFuZCBpdHMgcGFyZW50cwotICAvLy8gZGVwZW5kaW5nIG9uIHNlYXJjaCBtb2RlKS4KKyAgLy8vIEBwYXJhbSBbaW5dIEMgVGhlIGNoZWNrZXIgb2JqZWN0IHRoZSBvcHRpb24gYmVsb25ncyB0by4gQ2hlY2tlciBvcHRpb25zCisgIC8vLyBhcmUgcmV0cmlldmVkIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgorICAvLy8gYC1hbmFseXplci1jb25maWcgPHBhY2thZ2UgYW5kIGNoZWNrZXIgbmFtZT46T3B0aW9uTmFtZT1WYWx1ZS4KICAgLy8vIEBwYXJhbSBbaW5dIFNlYXJjaEluUGFyZW50cyBJZiBzZXQgdG8gdHJ1ZSBhbmQgdGhlIHNlYXJjaGVkIG9wdGlvbiB3YXMgbm90CiAgIC8vLyBzcGVjaWZpZWQgZm9yIHRoZSBnaXZlbiBjaGVja2VyIHRoZSBvcHRpb25zIGZvciB0aGUgcGFyZW50IHBhY2thZ2VzIHdpbGwKICAgLy8vIGJlIHNlYXJjaGVkIGFzIHdlbGwuIFRoZSBpbm5lciBwYWNrYWdlcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgb3V0ZXIKICAgLy8vIG9uZXMuCi0gIGJvb2wgZ2V0Qm9vbGVhbk9wdGlvbihTdHJpbmdSZWYgTmFtZSwgYm9vbCBEZWZhdWx0VmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW50bzo6Q2hlY2tlckJhc2UgKkMgPSBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBTZWFyY2hJblBhcmVudHMgPSBmYWxzZSk7CisgIGJvb2wgZ2V0Q2hlY2tlckJvb2xlYW5PcHRpb24oU3RyaW5nUmVmIE5hbWUsIGJvb2wgRGVmYXVsdFZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudG86OkNoZWNrZXJCYXNlICpDLAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBTZWFyY2hJblBhcmVudHMgPSBmYWxzZSkgY29uc3Q7CiAKLSAgLy8vIFZhcmlhbnQgdGhhdCBhY2NlcHRzIGEgT3B0aW9uYWwgdmFsdWUgdG8gY2FjaGUgdGhlIHJlc3VsdC4KLSAgLy8vCi0gIC8vLyBAcGFyYW0gW2luLG91dF0gViBSZXR1cm4gdmFsdWUgc3RvcmFnZSwgcmV0dXJuZWQgaWYgcGFyYW1ldGVyIGNvbnRhaW5zCi0gIC8vLyBhbiBleGlzdGluZyB2YWxpZCBvcHRpb24sIGVsc2UgaXQgaXMgdXNlZCB0byBzdG9yZSBhIHJldHVybiB2YWx1ZQotICAvLy8gQHBhcmFtIFtpbl0gTmFtZSBOYW1lIGZvciBvcHRpb24gdG8gcmV0cmlldmUuCi0gIC8vLyBAcGFyYW0gW2luXSBEZWZhdWx0VmFsIERlZmF1bHQgdmFsdWUgcmV0dXJuZWQgaWYgbm8gc3VjaCBvcHRpb24gd2FzCi0gIC8vLyBzcGVjaWZpZWQuCi0gIC8vLyBAcGFyYW0gW2luXSBDIFRoZSBvcHRpb25hbCBjaGVja2VyIHBhcmFtZXRlciB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlc3RyaWN0Ci0gIC8vLyB0aGUgc2VhcmNoIHRvIHRoZSBvcHRpb25zIG9mIHRoaXMgcGFydGljdWxhciBjaGVja2VyIChhbmQgaXRzIHBhcmVudHMKLSAgLy8vIGRlcGVuZGluZyBvbiBzZWFyY2ggbW9kZSkuCi0gIC8vLyBAcGFyYW0gW2luXSBTZWFyY2hJblBhcmVudHMgSWYgc2V0IHRvIHRydWUgYW5kIHRoZSBzZWFyY2hlZCBvcHRpb24gd2FzIG5vdAotICAvLy8gc3BlY2lmaWVkIGZvciB0aGUgZ2l2ZW4gY2hlY2tlciB0aGUgb3B0aW9ucyBmb3IgdGhlIHBhcmVudCBwYWNrYWdlcyB3aWxsCi0gIC8vLyBiZSBzZWFyY2hlZCBhcyB3ZWxsLiBUaGUgaW5uZXIgcGFja2FnZXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIG91dGVyCi0gIC8vLyBvbmVzLgotICBib29sIGdldEJvb2xlYW5PcHRpb24oT3B0aW9uYWw8Ym9vbD4gJlYsIFN0cmluZ1JlZiBOYW1lLCBib29sIERlZmF1bHRWYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnRvOjpDaGVja2VyQmFzZSAqQyAgPSBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBTZWFyY2hJblBhcmVudHMgPSBmYWxzZSk7CiAKICAgLy8vIEludGVycHJldHMgYW4gb3B0aW9uJ3Mgc3RyaW5nIHZhbHVlIGFzIGFuIGludGVnZXIgdmFsdWUuCiAgIC8vLwpAQCAtNDA4LDE2ICsyOTMsMTYgQEAKICAgLy8vIEBwYXJhbSBbaW5dIE5hbWUgTmFtZSBmb3Igb3B0aW9uIHRvIHJldHJpZXZlLgogICAvLy8gQHBhcmFtIFtpbl0gRGVmYXVsdFZhbCBEZWZhdWx0IHZhbHVlIHJldHVybmVkIGlmIG5vIHN1Y2ggb3B0aW9uIHdhcwogICAvLy8gc3BlY2lmaWVkLgotICAvLy8gQHBhcmFtIFtpbl0gQyBUaGUgb3B0aW9uYWwgY2hlY2tlciBwYXJhbWV0ZXIgdGhhdCBjYW4gYmUgdXNlZCB0byByZXN0cmljdAotICAvLy8gdGhlIHNlYXJjaCB0byB0aGUgb3B0aW9ucyBvZiB0aGlzIHBhcnRpY3VsYXIgY2hlY2tlciAoYW5kIGl0cyBwYXJlbnRzCi0gIC8vLyBkZXBlbmRpbmcgb24gc2VhcmNoIG1vZGUpLgorICAvLy8gQHBhcmFtIFtpbl0gQyBUaGUgY2hlY2tlciBvYmplY3QgdGhlIG9wdGlvbiBiZWxvbmdzIHRvLiBDaGVja2VyIG9wdGlvbnMKKyAgLy8vIGFyZSByZXRyaWV2ZWQgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6CisgIC8vLyBgLWFuYWx5emVyLWNvbmZpZyA8cGFja2FnZSBhbmQgY2hlY2tlciBuYW1lPjpPcHRpb25OYW1lPVZhbHVlLgogICAvLy8gQHBhcmFtIFtpbl0gU2VhcmNoSW5QYXJlbnRzIElmIHNldCB0byB0cnVlIGFuZCB0aGUgc2VhcmNoZWQgb3B0aW9uIHdhcyBub3QKICAgLy8vIHNwZWNpZmllZCBmb3IgdGhlIGdpdmVuIGNoZWNrZXIgdGhlIG9wdGlvbnMgZm9yIHRoZSBwYXJlbnQgcGFja2FnZXMgd2lsbAogICAvLy8gYmUgc2VhcmNoZWQgYXMgd2VsbC4gVGhlIGlubmVyIHBhY2thZ2VzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBvdXRlcgogICAvLy8gb25lcy4KLSAgaW50IGdldE9wdGlvbkFzSW50ZWdlcihTdHJpbmdSZWYgTmFtZSwgaW50IERlZmF1bHRWYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW50bzo6Q2hlY2tlckJhc2UgKkMgPSBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgU2VhcmNoSW5QYXJlbnRzID0gZmFsc2UpOworICBpbnQgZ2V0Q2hlY2tlckludGVnZXJPcHRpb24oU3RyaW5nUmVmIE5hbWUsIGludCBEZWZhdWx0VmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudG86OkNoZWNrZXJCYXNlICpDLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgU2VhcmNoSW5QYXJlbnRzID0gZmFsc2UpIGNvbnN0OwogCiAgIC8vLyBRdWVyeSBhbiBvcHRpb24ncyBzdHJpbmcgdmFsdWUuCiAgIC8vLwpAQCAtNDI1LDI2ICszMTAsMjYgQEAKICAgLy8vIEBwYXJhbSBbaW5dIE5hbWUgTmFtZSBmb3Igb3B0aW9uIHRvIHJldHJpZXZlLgogICAvLy8gQHBhcmFtIFtpbl0gRGVmYXVsdFZhbCBEZWZhdWx0IHZhbHVlIHJldHVybmVkIGlmIG5vIHN1Y2ggb3B0aW9uIHdhcwogICAvLy8gc3BlY2lmaWVkLgotICAvLy8gQHBhcmFtIFtpbl0gQyBUaGUgb3B0aW9uYWwgY2hlY2tlciBwYXJhbWV0ZXIgdGhhdCBjYW4gYmUgdXNlZCB0byByZXN0cmljdAotICAvLy8gdGhlIHNlYXJjaCB0byB0aGUgb3B0aW9ucyBvZiB0aGlzIHBhcnRpY3VsYXIgY2hlY2tlciAoYW5kIGl0cyBwYXJlbnRzCi0gIC8vLyBkZXBlbmRpbmcgb24gc2VhcmNoIG1vZGUpLgorICAvLy8gQHBhcmFtIFtpbl0gQyBUaGUgY2hlY2tlciBvYmplY3QgdGhlIG9wdGlvbiBiZWxvbmdzIHRvLiBDaGVja2VyIG9wdGlvbnMKKyAgLy8vIGFyZSByZXRyaWV2ZWQgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6CisgIC8vLyBgLWFuYWx5emVyLWNvbmZpZyA8cGFja2FnZSBhbmQgY2hlY2tlciBuYW1lPjpPcHRpb25OYW1lPVZhbHVlLgogICAvLy8gQHBhcmFtIFtpbl0gU2VhcmNoSW5QYXJlbnRzIElmIHNldCB0byB0cnVlIGFuZCB0aGUgc2VhcmNoZWQgb3B0aW9uIHdhcyBub3QKICAgLy8vIHNwZWNpZmllZCBmb3IgdGhlIGdpdmVuIGNoZWNrZXIgdGhlIG9wdGlvbnMgZm9yIHRoZSBwYXJlbnQgcGFja2FnZXMgd2lsbAogICAvLy8gYmUgc2VhcmNoZWQgYXMgd2VsbC4gVGhlIGlubmVyIHBhY2thZ2VzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBvdXRlcgogICAvLy8gb25lcy4KLSAgU3RyaW5nUmVmIGdldE9wdGlvbkFzU3RyaW5nKFN0cmluZ1JlZiBOYW1lLCBTdHJpbmdSZWYgRGVmYXVsdFZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudG86OkNoZWNrZXJCYXNlICpDID0gbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgU2VhcmNoSW5QYXJlbnRzID0gZmFsc2UpOworICBTdHJpbmdSZWYgZ2V0Q2hlY2tlclN0cmluZ09wdGlvbihTdHJpbmdSZWYgTmFtZSwgU3RyaW5nUmVmIERlZmF1bHRWYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbnRvOjpDaGVja2VyQmFzZSAqQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgU2VhcmNoSW5QYXJlbnRzID0gZmFsc2UpIGNvbnN0OwogCiAgIC8vLyBSZXRyaWV2ZXMgYW5kIHNldHMgdGhlIFVzZXJNb2RlLiBUaGlzIGlzIGEgaGlnaC1sZXZlbCBvcHRpb24sCiAgIC8vLyB3aGljaCBpcyB1c2VkIHRvIHNldCBvdGhlciBsb3ctbGV2ZWwgb3B0aW9ucy4gSXQgaXMgbm90IGFjY2Vzc2libGUKICAgLy8vIG91dHNpZGUgb2YgQW5hbHl6ZXJPcHRpb25zLgotICBVc2VyTW9kZUtpbmQgZ2V0VXNlck1vZGUoKTsKKyAgVXNlck1vZGVLaW5kIGdldFVzZXJNb2RlKCkgY29uc3Q7CiAKLSAgRXhwbG9yYXRpb25TdHJhdGVneUtpbmQgZ2V0RXhwbG9yYXRpb25TdHJhdGVneSgpOworICBFeHBsb3JhdGlvblN0cmF0ZWd5S2luZCBnZXRFeHBsb3JhdGlvblN0cmF0ZWd5KCkgY29uc3Q7CiAKICAgLy8vIFJldHVybnMgdGhlIGludGVyLXByb2NlZHVyYWwgYW5hbHlzaXMgbW9kZS4KLSAgSVBBS2luZCBnZXRJUEFNb2RlKCk7CisgIElQQUtpbmQgZ2V0SVBBTW9kZSgpIGNvbnN0OwogCiAgIC8vLyBSZXR1cm5zIHRoZSBvcHRpb24gY29udHJvbGxpbmcgd2hpY2ggQysrIG1lbWJlciBmdW5jdGlvbnMgd2lsbCBiZQogICAvLy8gY29uc2lkZXJlZCBmb3IgaW5saW5pbmcuCkBAIC00NTIsMjg2ICszMzcsMjggQEAKICAgLy8vIFRoaXMgaXMgY29udHJvbGxlZCBieSB0aGUgJ2MrKy1pbmxpbmluZycgY29uZmlnIG9wdGlvbi4KICAgLy8vCiAgIC8vLyBcc2EgQ1hYTWVtYmVySW5saW5pbmdNb2RlCi0gIGJvb2wgbWF5SW5saW5lQ1hYTWVtYmVyRnVuY3Rpb24oQ1hYSW5saW5lYWJsZU1lbWJlcktpbmQgSyk7Ci0KLSAgLy8vIFJldHVybnMgdHJ1ZSBpZiBPYmplY3RpdmVDIGlubGluaW5nIGlzIGVuYWJsZWQsIGZhbHNlIG90aGVyd2lzZS4KLSAgYm9vbCBtYXlJbmxpbmVPYmpDTWV0aG9kKCk7Ci0KLSAgLy8vIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGRlc3RydWN0b3JzIGZvciBDKysgdGVtcG9yYXJ5IG9iamVjdHMgc2hvdWxkCi0gIC8vLyBiZSBpbmNsdWRlZCBpbiB0aGUgQ0ZHLgotICAvLy8KLSAgLy8vIFRoaXMgaXMgY29udHJvbGxlZCBieSB0aGUgJ2NmZy10ZW1wb3JhcnktZHRvcnMnIGNvbmZpZyBvcHRpb24sIHdoaWNoCi0gIC8vLyBhY2NlcHRzIHRoZSB2YWx1ZXMgInRydWUiIGFuZCAiZmFsc2UiLgotICBib29sIGluY2x1ZGVUZW1wb3JhcnlEdG9yc0luQ0ZHKCk7Ci0KLSAgLy8vIFJldHVybnMgd2hldGhlciBvciBub3QgaW1wbGljaXQgZGVzdHJ1Y3RvcnMgZm9yIEMrKyBvYmplY3RzIHNob3VsZAotICAvLy8gYmUgaW5jbHVkZWQgaW4gdGhlIENGRy4KLSAgLy8vCi0gIC8vLyBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICdjZmctaW1wbGljaXQtZHRvcnMnIGNvbmZpZyBvcHRpb24sIHdoaWNoCi0gIC8vLyBhY2NlcHRzIHRoZSB2YWx1ZXMgInRydWUiIGFuZCAiZmFsc2UiLgotICBib29sIGluY2x1ZGVJbXBsaWNpdER0b3JzSW5DRkcoKTsKLQotICAvLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCBlbmQtb2YtbGlmZXRpbWUgaW5mb3JtYXRpb24gc2hvdWxkIGJlIGluY2x1ZGVkIGluCi0gIC8vLyB0aGUgQ0ZHLgotICAvLy8KLSAgLy8vIFRoaXMgaXMgY29udHJvbGxlZCBieSB0aGUgJ2NmZy1saWZldGltZScgY29uZmlnIG9wdGlvbiwgd2hpY2ggYWNjZXB0cwotICAvLy8gdGhlIHZhbHVlcyAidHJ1ZSIgYW5kICJmYWxzZSIuCi0gIGJvb2wgaW5jbHVkZUxpZmV0aW1lSW5DRkcoKTsKLQotICAvLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgZW5kIG9mIHRoZSBsb29wIGluZm9ybWF0aW9uIHNob3VsZCBiZSBpbmNsdWRlZAotICAvLy8gaW4gdGhlIENGRy4KLSAgLy8vCi0gIC8vLyBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICdjZmctbG9vcGV4aXQnIGNvbmZpZyBvcHRpb24sIHdoaWNoIGFjY2VwdHMKLSAgLy8vIHRoZSB2YWx1ZXMgInRydWUiIGFuZCAiZmFsc2UiLgotICBib29sIGluY2x1ZGVMb29wRXhpdEluQ0ZHKCk7Ci0KLSAgLy8vIFJldHVybnMgd2hldGhlciBvciBub3QgY29uc3RydWN0aW9uIHNpdGUgaW5mb3JtYXRpb24gc2hvdWxkIGJlIGluY2x1ZGVkCi0gIC8vLyBpbiB0aGUgQ0ZHIEMrKyBjb25zdHJ1Y3RvciBlbGVtZW50cy4KLSAgLy8vCi0gIC8vLyBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICdjZmctcmljaC1jb25zdHJ1Y3RvcnMnIGNvbmZpZyBvcHRpb25zLAotICAvLy8gd2hpY2ggYWNjZXB0cyB0aGUgdmFsdWVzICJ0cnVlIiBhbmQgImZhbHNlIi4KLSAgYm9vbCBpbmNsdWRlUmljaENvbnN0cnVjdG9yc0luQ0ZHKCk7Ci0KLSAgLy8vIFJldHVybnMgd2hldGhlciBvciBub3Qgc2NvcGUgaW5mb3JtYXRpb24gc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSBDRkcuCi0gIC8vLwotICAvLy8gVGhpcyBpcyBjb250cm9sbGVkIGJ5IHRoZSAnY2ZnLXNjb3BlLWluZm8nIGNvbmZpZyBvcHRpb24sIHdoaWNoIGFjY2VwdHMKLSAgLy8vIHRoZSB2YWx1ZXMgInRydWUiIGFuZCAiZmFsc2UiLgotICBib29sIGluY2x1ZGVTY29wZXNJbkNGRygpOwotCi0gIC8vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IEMrKyBzdGFuZGFyZCBsaWJyYXJ5IGZ1bmN0aW9ucyBtYXkgYmUgY29uc2lkZXJlZAotICAvLy8gZm9yIGlubGluaW5nLgotICAvLy8KLSAgLy8vIFRoaXMgaXMgY29udHJvbGxlZCBieSB0aGUgJ2MrKy1zdGRsaWItaW5saW5pbmcnIGNvbmZpZyBvcHRpb24sIHdoaWNoCi0gIC8vLyBhY2NlcHRzIHRoZSB2YWx1ZXMgInRydWUiIGFuZCAiZmFsc2UiLgotICBib29sIG1heUlubGluZUNYWFN0YW5kYXJkTGlicmFyeSgpOwotCi0gIC8vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRlbXBsYXRlZCBmdW5jdGlvbnMgbWF5IGJlIGNvbnNpZGVyZWQgZm9yIGlubGluaW5nLgotICAvLy8KLSAgLy8vIFRoaXMgaXMgY29udHJvbGxlZCBieSB0aGUgJ2MrKy10ZW1wbGF0ZS1pbmxpbmluZycgY29uZmlnIG9wdGlvbiwgd2hpY2gKLSAgLy8vIGFjY2VwdHMgdGhlIHZhbHVlcyAidHJ1ZSIgYW5kICJmYWxzZSIuCi0gIGJvb2wgbWF5SW5saW5lVGVtcGxhdGVGdW5jdGlvbnMoKTsKLQotICAvLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCBhbGxvY2F0b3IgY2FsbCBtYXkgYmUgY29uc2lkZXJlZCBmb3IgaW5saW5pbmcuCi0gIC8vLwotICAvLy8gVGhpcyBpcyBjb250cm9sbGVkIGJ5IHRoZSAnYysrLWFsbG9jYXRvci1pbmxpbmluZycgY29uZmlnIG9wdGlvbiwgd2hpY2gKLSAgLy8vIGFjY2VwdHMgdGhlIHZhbHVlcyAidHJ1ZSIgYW5kICJmYWxzZSIuCi0gIGJvb2wgbWF5SW5saW5lQ1hYQWxsb2NhdG9yKCk7Ci0KLSAgLy8vIFJldHVybnMgd2hldGhlciBvciBub3QgbWV0aG9kcyBvZiBDKysgY29udGFpbmVyIG9iamVjdHMgbWF5IGJlIGNvbnNpZGVyZWQKLSAgLy8vIGZvciBpbmxpbmluZy4KLSAgLy8vCi0gIC8vLyBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICdjKystY29udGFpbmVyLWlubGluaW5nJyBjb25maWcgb3B0aW9uLCB3aGljaAotICAvLy8gYWNjZXB0cyB0aGUgdmFsdWVzICJ0cnVlIiBhbmQgImZhbHNlIi4KLSAgYm9vbCBtYXlJbmxpbmVDWFhDb250YWluZXJNZXRob2RzKCk7Ci0KLSAgLy8vIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGRlc3RydWN0b3Igb2YgQysrICdzaGFyZWRfcHRyJyBtYXkgYmUKLSAgLy8vIGNvbnNpZGVyZWQgZm9yIGlubGluaW5nLgotICAvLy8KLSAgLy8vIFRoaXMgY292ZXJzIHN0ZDo6c2hhcmVkX3B0ciwgc3RkOjp0cjE6OnNoYXJlZF9wdHIsIGFuZCBib29zdDo6c2hhcmVkX3B0ciwKLSAgLy8vIGFuZCBpbmRlZWQgYW55IGRlc3RydWN0b3IgbmFtZWQgIn5zaGFyZWRfcHRyIi4KLSAgLy8vCi0gIC8vLyBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICdjKystc2hhcmVkX3B0ci1pbmxpbmluZycgY29uZmlnIG9wdGlvbiwgd2hpY2gKLSAgLy8vIGFjY2VwdHMgdGhlIHZhbHVlcyAidHJ1ZSIgYW5kICJmYWxzZSIuCi0gIGJvb2wgbWF5SW5saW5lQ1hYU2hhcmVkUHRyRHRvcigpOwotCi0gIC8vLyBSZXR1cm5zIHRydWUgaWYgQysrIHRlbXBvcmFyeSBkZXN0cnVjdG9ycyBzaG91bGQgYmUgaW5saW5lZCBkdXJpbmcKLSAgLy8vIGFuYWx5c2lzLgotICAvLy8KLSAgLy8vIElmIHRlbXBvcmFyeSBkZXN0cnVjdG9ycyBhcmUgZGlzYWJsZWQgaW4gdGhlIENGRyB2aWEgdGhlCi0gIC8vLyAnY2ZnLXRlbXBvcmFyeS1kdG9ycycgb3B0aW9uLCB0ZW1wb3JhcnkgZGVzdHJ1Y3RvcnMgd291bGQgbm90IGJlCi0gIC8vLyBpbmxpbmVkIGFueXdheS4KLSAgLy8vCi0gIC8vLyBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICdjKystdGVtcC1kdG9yLWlubGluaW5nJyBjb25maWcgb3B0aW9uLCB3aGljaAotICAvLy8gYWNjZXB0cyB0aGUgdmFsdWVzICJ0cnVlIiBhbmQgImZhbHNlIi4KLSAgYm9vbCBtYXlJbmxpbmVDWFhUZW1wb3JhcnlEdG9ycygpOwotCi0gIC8vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHBhdGhzIHRoYXQgZ28gdGhyb3VnaCBudWxsIHJldHVybnMgc2hvdWxkIGJlCi0gIC8vLyBzdXBwcmVzc2VkLgotICAvLy8KLSAgLy8vIFRoaXMgaXMgYSBoZXVyaXN0aWMgZm9yIGF2b2lkaW5nIGJ1ZyByZXBvcnRzIHdpdGggcGF0aHMgdGhhdCBnbyB0aHJvdWdoCi0gIC8vLyBpbmxpbmVkIGZ1bmN0aW9ucyB0aGF0IGFyZSBtb3JlIGRlZmVuc2l2ZSB0aGFuIHRoZWlyIGNhbGxlcnMuCi0gIC8vLwotICAvLy8gVGhpcyBpcyBjb250cm9sbGVkIGJ5IHRoZSAnc3VwcHJlc3MtbnVsbC1yZXR1cm4tcGF0aHMnIGNvbmZpZyBvcHRpb24sCi0gIC8vLyB3aGljaCBhY2NlcHRzIHRoZSB2YWx1ZXMgInRydWUiIGFuZCAiZmFsc2UiLgotICBib29sIHNob3VsZFN1cHByZXNzTnVsbFJldHVyblBhdGhzKCk7Ci0KLSAgLy8vIFJldHVybnMgd2hldGhlciBhIGJ1ZyByZXBvcnQgc2hvdWxkIFxlbSBub3QgYmUgc3VwcHJlc3NlZCBpZiBpdHMgcGF0aAotICAvLy8gaW5jbHVkZXMgYSBjYWxsIHdpdGggYSBudWxsIGFyZ3VtZW50LCBldmVuIGlmIHRoYXQgY2FsbCBoYXMgYSBudWxsIHJldHVybi4KLSAgLy8vCi0gIC8vLyBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IHdoZW4gI3Nob3VsZFN1cHByZXNzTnVsbFJldHVyblBhdGhzKCkgaXMgZmFsc2UuCi0gIC8vLwotICAvLy8gVGhpcyBpcyBhIGNvdW50ZXItaGV1cmlzdGljIHRvIGF2b2lkIGZhbHNlIG5lZ2F0aXZlcy4KLSAgLy8vCi0gIC8vLyBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICdhdm9pZC1zdXBwcmVzc2luZy1udWxsLWFyZ3VtZW50LXBhdGhzJyBjb25maWcKLSAgLy8vIG9wdGlvbiwgd2hpY2ggYWNjZXB0cyB0aGUgdmFsdWVzICJ0cnVlIiBhbmQgImZhbHNlIi4KLSAgYm9vbCBzaG91bGRBdm9pZFN1cHByZXNzaW5nTnVsbEFyZ3VtZW50UGF0aHMoKTsKLQotICAvLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCBkaWFnbm9zdGljcyBjb250YWluaW5nIGlubGluZWQgZGVmZW5zaXZlIE5VTEwKLSAgLy8vIGNoZWNrcyBzaG91bGQgYmUgc3VwcHJlc3NlZC4KLSAgLy8vCi0gIC8vLyBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICdzdXBwcmVzcy1pbmxpbmVkLWRlZmVuc2l2ZS1jaGVja3MnIGNvbmZpZwotICAvLy8gb3B0aW9uLCB3aGljaCBhY2NlcHRzIHRoZSB2YWx1ZXMgInRydWUiIGFuZCAiZmFsc2UiLgotICBib29sIHNob3VsZFN1cHByZXNzSW5saW5lZERlZmVuc2l2ZUNoZWNrcygpOwotCi0gIC8vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IGRpYWdub3N0aWNzIHJlcG9ydGVkIHdpdGhpbiB0aGUgQysrIHN0YW5kYXJkCi0gIC8vLyBsaWJyYXJ5IHNob3VsZCBiZSBzdXBwcmVzc2VkLgotICAvLy8KLSAgLy8vIFRoaXMgaXMgY29udHJvbGxlZCBieSB0aGUgJ3N1cHByZXNzLWMrKy1zdGRsaWInIGNvbmZpZyBvcHRpb24sCi0gIC8vLyB3aGljaCBhY2NlcHRzIHRoZSB2YWx1ZXMgInRydWUiIGFuZCAiZmFsc2UiLgotICBib29sIHNob3VsZFN1cHByZXNzRnJvbUNYWFN0YW5kYXJkTGlicmFyeSgpOwotCi0gIC8vLyBSZXR1cm5zIHdoZXRoZXIgYnVnIHJlcG9ydHMgc2hvdWxkIGJlIGNyb3NzY2hlY2tlZCB3aXRoIHRoZSBaMwotICAvLy8gY29uc3RyYWludCBtYW5hZ2VyIGJhY2tlbmQuCi0gIC8vLwotICAvLy8gVGhpcyBpcyBjb250cm9sbGVkIGJ5IHRoZSAnY3Jvc3NjaGVjay13aXRoLXozJyBjb25maWcgb3B0aW9uLAotICAvLy8gd2hpY2ggYWNjZXB0cyB0aGUgdmFsdWVzICJ0cnVlIiBhbmQgImZhbHNlIi4KLSAgYm9vbCBzaG91bGRDcm9zc2NoZWNrV2l0aFozKCk7Ci0KLSAgLy8vIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIGRpYWdub3N0aWMgcmVwb3J0IHNob3VsZCBiZSBhbHdheXMgcmVwb3J0ZWQKLSAgLy8vIGluIHRoZSBtYWluIHNvdXJjZSBmaWxlIGFuZCBub3QgdGhlIGhlYWRlcnMuCi0gIC8vLwotICAvLy8gVGhpcyBpcyBjb250cm9sbGVkIGJ5IHRoZSAncmVwb3J0LWluLW1haW4tc291cmNlLWZpbGUnIGNvbmZpZyBvcHRpb24sCi0gIC8vLyB3aGljaCBhY2NlcHRzIHRoZSB2YWx1ZXMgInRydWUiIGFuZCAiZmFsc2UiLgotICBib29sIHNob3VsZFJlcG9ydElzc3Vlc0luTWFpblNvdXJjZUZpbGUoKTsKLQotICAvLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgcmVwb3J0IGZpbGVuYW1lIHNob3VsZCBiZSByYW5kb20gb3Igbm90LgotICAvLy8KLSAgLy8vIFRoaXMgaXMgY29udHJvbGxlZCBieSB0aGUgJ3N0YWJsZS1yZXBvcnQtZmlsZW5hbWUnIGNvbmZpZyBvcHRpb24sCi0gIC8vLyB3aGljaCBhY2NlcHRzIHRoZSB2YWx1ZXMgInRydWUiIGFuZCAiZmFsc2UiLiBEZWZhdWx0ID0gZmFsc2UKLSAgYm9vbCBzaG91bGRXcml0ZVN0YWJsZVJlcG9ydEZpbGVuYW1lKCk7Ci0KLSAgLy8vIFxyZXR1cm4gV2hldGhlciB0aGUgYW5hbHl6ZXIgc2hvdWxkCi0gIC8vLyBzZXJpYWxpemUgc3RhdGlzdGljcyB0byBwbGlzdCBvdXRwdXQuCi0gIC8vLyBTdGF0aXN0aWNzIHdvdWxkIGJlIHNlcmlhbGl6ZWQgaW4gSlNPTiBmb3JtYXQgaW5zaWRlIHRoZSBtYWluIGRpY3Rpb25hcnkKLSAgLy8vIHVuZGVyIHRoZSBcYyBzdGF0aXN0aWNzIGtleS4KLSAgLy8vIEF2YWlsYWJsZSBvbmx5IGlmIGNvbXBpbGVkIGluIGFzc2VydCBtb2RlIG9yIHdpdGggTExWTSBzdGF0aXN0aWNzCi0gIC8vLyBleHBsaWNpdGx5IGVuYWJsZWQuCi0gIGJvb2wgc2hvdWxkU2VyaWFsaXplU3RhdHMoKTsKLQotICAvLy8gUmV0dXJucyB3aGV0aGVyIGlycmVsZXZhbnQgcGFydHMgb2YgYSBidWcgcmVwb3J0IHBhdGggc2hvdWxkIGJlIHBydW5lZAotICAvLy8gb3V0IG9mIHRoZSBmaW5hbCBvdXRwdXQuCi0gIC8vLwotICAvLy8gVGhpcyBpcyBjb250cm9sbGVkIGJ5IHRoZSAncHJ1bmUtcGF0aHMnIGNvbmZpZyBvcHRpb24sIHdoaWNoIGFjY2VwdHMgdGhlCi0gIC8vLyB2YWx1ZXMgInRydWUiIGFuZCAiZmFsc2UiLgotICBib29sIHNob3VsZFBydW5lUGF0aHMoKTsKLQotICAvLy8gUmV0dXJucyB0cnVlIGlmICdzdGF0aWMnIGluaXRpYWxpemVycyBzaG91bGQgYmUgaW4gY29uZGl0aW9uYWwgbG9naWMKLSAgLy8vIGluIHRoZSBDRkcuCi0gIGJvb2wgc2hvdWxkQ29uZGl0aW9uYWxpemVTdGF0aWNJbml0aWFsaXplcnMoKTsKLQotICAvLyBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBmdW5jdGlvbnMgKGluIGJhc2ljIGJsb2NrcyksIHdoaWNoIHNob3VsZCBiZQotICAvLyBjb25zaWRlcmVkIHRvIGJlIHNtYWxsIGVub3VnaCB0byBhbHdheXMgaW5saW5lLgotICAvLwotICAvLyBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgImlwYS1hbHdheXMtaW5saW5lLXNpemUiIGFuYWx5emVyLWNvbmZpZyBvcHRpb24uCi0gIHVuc2lnbmVkIGdldEFsd2F5c0lubGluZVNpemUoKTsKLQotICAvLyBSZXR1cm5zIHRoZSBib3VuZCBvbiB0aGUgbnVtYmVyIG9mIGJhc2ljIGJsb2NrcyBpbiBhbiBpbmxpbmVkIGZ1bmN0aW9uCi0gIC8vICg1MCBieSBkZWZhdWx0KS4KLSAgLy8KLSAgLy8gVGhpcyBpcyBjb250cm9sbGVkIGJ5ICItYW5hbHl6ZXItY29uZmlnIG1heC1pbmxpbmFibGUtc2l6ZSIgb3B0aW9uLgotICB1bnNpZ25lZCBnZXRNYXhJbmxpbmFibGVTaXplKCk7Ci0KLSAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgYW5hbHl6ZXIgZW5naW5lIHNob3VsZCBzeW50aGVzaXplIGZha2UgYm9kaWVzCi0gIC8vLyBmb3Igd2VsbC1rbm93biBmdW5jdGlvbnMuCi0gIGJvb2wgc2hvdWxkU3ludGhlc2l6ZUJvZGllcygpOwotCi0gIC8vLyBSZXR1cm5zIGhvdyBvZnRlbiBub2RlcyBpbiB0aGUgRXhwbG9kZWRHcmFwaCBzaG91bGQgYmUgcmVjeWNsZWQgdG8gc2F2ZQotICAvLy8gbWVtb3J5LgotICAvLy8KLSAgLy8vIFRoaXMgaXMgY29udHJvbGxlZCBieSB0aGUgJ2dyYXBoLXRyaW0taW50ZXJ2YWwnIGNvbmZpZyBvcHRpb24uIFRvIGRpc2FibGUKLSAgLy8vIG5vZGUgcmVjbGFtYXRpb24sIHNldCB0aGUgb3B0aW9uIHRvICIwIi4KLSAgdW5zaWduZWQgZ2V0R3JhcGhUcmltSW50ZXJ2YWwoKTsKLQotICAvLy8gUmV0dXJucyB0aGUgbWF4aW11bSBjb21wbGV4aXR5IG9mIHN5bWJvbGljIGNvbnN0cmFpbnQgKDUwIGJ5IGRlZmF1bHQpLgotICAvLy8KLSAgLy8vIFRoaXMgaXMgY29udHJvbGxlZCBieSAiLWFuYWx5emVyLWNvbmZpZyBtYXgtc3ltYm9sLWNvbXBsZXhpdHkiIG9wdGlvbi4KLSAgdW5zaWduZWQgZ2V0TWF4U3ltYm9sQ29tcGxleGl0eSgpOwotCi0gIC8vLyBSZXR1cm5zIHRoZSBtYXhpbXVtIHRpbWVzIGEgbGFyZ2UgZnVuY3Rpb24gY291bGQgYmUgaW5saW5lZC4KLSAgLy8vCi0gIC8vLyBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICdtYXgtdGltZXMtaW5saW5lLWxhcmdlJyBjb25maWcgb3B0aW9uLgotICB1bnNpZ25lZCBnZXRNYXhUaW1lc0lubGluZUxhcmdlKCk7Ci0KLSAgLy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBiYXNpYyBibG9ja3MgYSBmdW5jdGlvbiBuZWVkcyB0byBoYXZlIHRvIGJlCi0gIC8vLyBjb25zaWRlcmVkIGxhcmdlIGZvciB0aGUgJ21heC10aW1lcy1pbmxpbmUtbGFyZ2UnIGNvbmZpZyBvcHRpb24uCi0gIC8vLwotICAvLy8gVGhpcyBpcyBjb250cm9sbGVkIGJ5IHRoZSAnbWluLWNmZy1zaXplLXRyZWF0LWZ1bmN0aW9ucy1hcy1sYXJnZScgY29uZmlnCi0gIC8vLyBvcHRpb24uCi0gIHVuc2lnbmVkIGdldE1pbkNGR1NpemVUcmVhdEZ1bmN0aW9uc0FzTGFyZ2UoKTsKLQotICAvLy8gUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygbm9kZXMgdGhlIGFuYWx5emVyIGNhbiBnZW5lcmF0ZSB3aGlsZQotICAvLy8gZXhwbG9yaW5nIGEgdG9wIGxldmVsIGZ1bmN0aW9uIChmb3IgZWFjaCBleHBsb2RlZCBncmFwaCkuCi0gIC8vLyAxNTAwMDAgaXMgZGVmYXVsdDsgMCBtZWFucyBubyBsaW1pdC4KLSAgLy8vCi0gIC8vLyBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICdtYXgtbm9kZXMnIGNvbmZpZyBvcHRpb24uCi0gIHVuc2lnbmVkIGdldE1heE5vZGVzUGVyVG9wTGV2ZWxGdW5jdGlvbigpOwotCi0gIC8vLyBSZXR1cm5zIHRydWUgaWYgbGFtYmRhcyBzaG91bGQgYmUgaW5saW5lZC4gT3RoZXJ3aXNlIGEgc2luayBub2RlIHdpbGwgYmUKLSAgLy8vIGdlbmVyYXRlZCBlYWNoIHRpbWUgYSBMYW1iZGFFeHByIGlzIHZpc2l0ZWQuCi0gIGJvb2wgc2hvdWxkSW5saW5lTGFtYmRhcygpOwotCi0gIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhlIGFuYWx5c2lzIHNob3VsZCB0cnkgdG8gd2lkZW4gbG9vcHMuCi0gIC8vLyBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICd3aWRlbi1sb29wcycgY29uZmlnIG9wdGlvbi4KLSAgYm9vbCBzaG91bGRXaWRlbkxvb3BzKCk7Ci0KLSAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgYW5hbHlzaXMgc2hvdWxkIHRyeSB0byB1bnJvbGwgbG9vcHMgd2l0aCBrbm93biBib3VuZHMuCi0gIC8vLyBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICd1bnJvbGwtbG9vcHMnIGNvbmZpZyBvcHRpb24uCi0gIGJvb2wgc2hvdWxkVW5yb2xsTG9vcHMoKTsKLQotICAvLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBidWcgcmVwb3J0ZXIgc2hvdWxkIHRyYW5zcGFyZW50bHkgdHJlYXQgZXh0cmEgbm90ZQotICAvLy8gZGlhZ25vc3RpYyBwaWVjZXMgYXMgZXZlbnQgZGlhZ25vc3RpYyBwaWVjZXMuIFVzZWZ1bCB3aGVuIHRoZSBkaWFnbm9zdGljCi0gIC8vLyBjb25zdW1lciBkb2Vzbid0IHN1cHBvcnQgdGhlIGV4dHJhIG5vdGUgcGllY2VzLgotICAvLy8KLSAgLy8vIFRoaXMgaXMgY29udHJvbGxlZCBieSB0aGUgJ2V4dHJhLW5vdGVzLWFzLWV2ZW50cycgb3B0aW9uLCB3aGljaCBkZWZhdWx0cwotICAvLy8gdG8gZmFsc2Ugd2hlbiB1bnNldC4KLSAgYm9vbCBzaG91bGREaXNwbGF5Tm90ZXNBc0V2ZW50cygpOwotCi0gIC8vLyBSZXR1cm5zIHRydWUgaWYgU1ZhbEJ1aWxkZXIgc2hvdWxkIHJlYXJyYW5nZSBjb21wYXJpc29ucyBhbmQgYWRkaXRpdmUKLSAgLy8vIG9wZXJhdGlvbnMgb2Ygc3ltYm9saWMgZXhwcmVzc2lvbnMgd2hpY2ggY29uc2lzdCBvZiBhIHN1bSBvZiBhIHN5bWJvbCBhbmQKLSAgLy8vIGEgY29uY3JldGUgaW50ZWdlciBpbnRvIHRoZSBmb3JtYXQgd2hlcmUgc3ltYm9scyBhcmUgb24gdGhlIGxlZnQtaGFuZAotICAvLy8gc2lkZSBhbmQgdGhlIGludGVnZXIgaXMgb24gdGhlIHJpZ2h0LiBUaGlzIGlzIG9ubHkgZG9uZSBpZiBib3RoIHN5bWJvbHMKLSAgLy8vIGFuZCBib3RoIGNvbmNyZXRlIGludGVnZXJzIGFyZSBzaWduZWQsIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUKLSAgLy8vIHF1YXJ0ZXIgb2YgdGhlIG1pbmltdW0gdmFsdWUgb2YgdGhlIHR5cGUgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUKLSAgLy8vIHF1YXJ0ZXIgb2YgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhhdCB0eXBlLgotICAvLy8KLSAgLy8vIEEgKyBuIDxPUD4gQiArIG0gYmVjb21lcyBBIC0gQiA8T1A+IG0gLSBuLCB3aGVyZSBBIGFuZCBCIHN5bWJvbGljLAotICAvLy8gbiBhbmQgbSBhcmUgaW50ZWdlcnMuIDxPUD4gaXMgYW55IG9mICc9PScsICchPScsICc8JywgJzw9JywgJz4nLCAnPj0nLAotICAvLy8gJysnIG9yICctJy4gVGhlIHJlYXJyYW5nZW1lbnQgYWxzbyBoYXBwZW5zIHdpdGggJy0nIGluc3RlYWQgb2YgJysnIG9uCi0gIC8vIGVpdGhlciBvciBib3RoIHNpZGUgYW5kIGFsc28gaWYgYW55IG9yIGJvdGggaW50ZWdlcnMgYXJlIG1pc3NpbmcuCi0gIGJvb2wgc2hvdWxkQWdncmVzc2l2ZWx5U2ltcGxpZnlCaW5hcnlPcGVyYXRpb24oKTsKLQotICAvLy8gUmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCBlYWdlcmx5IGFzc3VtZSBldmFsdWF0aW9ucyBvZgotICAvLy8gY29uZGl0aW9uYWxzLCB0aHVzLCBiaWZ1cmNhdGluZyB0aGUgcGF0aC4KLSAgLy8vCi0gIC8vLyBUaGlzIGluZGljYXRlcyBob3cgdGhlIGVuZ2luZSBzaG91bGQgaGFuZGxlIGV4cHJlc3Npb25zIHN1Y2ggYXM6ICd4ID0KLSAgLy8vICh5ICE9IDApJy4gIFdoZW4gdGhpcyBpcyB0cnVlIHRoZW4gdGhlIHN1YmV4cHJlc3Npb24gJ3kgIT0gMCcgd2lsbCBiZQotICAvLy8gZWFnZXJseSBhc3N1bWVkIHRvIGJlIHRydWUgb3IgZmFsc2UsIHRodXMgZXZhbHVhdGluZyBpdCB0byB0aGUgaW50ZWdlcnMgMAotICAvLy8gb3IgMSByZXNwZWN0aXZlbHkuICBUaGUgdXBzaWRlIGlzIHRoYXQgdGhpcyBjYW4gaW5jcmVhc2UgYW5hbHlzaXMKLSAgLy8vIHByZWNpc2lvbiB1bnRpbCB3ZSBoYXZlIGEgYmV0dGVyIHdheSB0byBsYXppbHkgZXZhbHVhdGUgc3VjaCBsb2dpYy4gIFRoZQotICAvLy8gZG93bnNpZGUgaXMgdGhhdCBpdCBlYWdlcmx5IGJpZnVyY2F0ZXMgcGF0aHMuCi0gIGJvb2wgc2hvdWxkRWFnZXJseUFzc3VtZSgpOwotCi0gIC8vLyBSZXR1cm5zIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgQ1RVIHJlbGF0ZWQgZmlsZXMuCi0gIFN0cmluZ1JlZiBnZXRDVFVEaXIoKTsKLQotICAvLy8gUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBDVFUgaW5kZXggb2YgZnVuY3Rpb25zLgotICBTdHJpbmdSZWYgZ2V0Q1RVSW5kZXhOYW1lKCk7Ci0KLSAgLy8vIFJldHVybnMgdHJ1ZSB3aGVuIG5haXZlIGNyb3NzIHRyYW5zbGF0aW9uIHVuaXQgYW5hbHlzaXMgaXMgZW5hYmxlZC4KLSAgLy8vIFRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUgdG8gaW5saW5lIGZ1bmN0aW9ucyBmcm9tIGFub3RoZXIKLSAgLy8vIHRyYW5zbGF0aW9uIHVuaXRzLgotICBib29sIG5haXZlQ1RVRW5hYmxlZCgpOwotCi0gIC8vLyBSZXR1cm5zIHRydWUgaWYgZWxpZGFibGUgQysrIGNvcHktY29uc3RydWN0b3JzIGFuZCBtb3ZlLWNvbnN0cnVjdG9ycwotICAvLy8gc2hvdWxkIGJlIGFjdHVhbGx5IGVsaWRlZCBkdXJpbmcgYW5hbHlzaXMuIEJvdGggYmVoYXZpb3JzIGFyZSBhbGxvd2VkCi0gIC8vLyBieSB0aGUgQysrIHN0YW5kYXJkLCBhbmQgdGhlIGFuYWx5emVyLCBsaWtlIENvZGVHZW4sIGRlZmF1bHRzIHRvIGVsaWRpbmcuCi0gIC8vLyBTdGFydGluZyB3aXRoIEMrKzE3IHNvbWUgZWxpc2lvbnMgYmVjb21lIG1hbmRhdG9yeSwgYW5kIGluIHRoZXNlIGNhc2VzCi0gIC8vLyB0aGUgb3B0aW9uIHdpbGwgYmUgaWdub3JlZC4KLSAgYm9vbCBzaG91bGRFbGlkZUNvbnN0cnVjdG9ycygpOworICBib29sIG1heUlubGluZUNYWE1lbWJlckZ1bmN0aW9uKENYWElubGluZWFibGVNZW1iZXJLaW5kIEspIGNvbnN0OwogfTsKIAogdXNpbmcgQW5hbHl6ZXJPcHRpb25zUmVmID0gSW50cnVzaXZlUmVmQ250UHRyPEFuYWx5emVyT3B0aW9ucz47CiAKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLyBXZSdsbCB1c2UgQW5hbHl6ZXJPcHRpb25zIGluIHRoZSBmcm9udGVuZCwgYnV0IHdlIGNhbid0IGxpbmsgdGhlIGZyb250ZW5kCisvLyB3aXRoIGNsYW5nU3RhdGljQW5hbHl6ZXJDb3JlLCBiZWNhdXNlIGNsYW5nU3RhdGljQW5hbHl6ZXJDb3JlIGRlcGVuZHMgb24KKy8vIGNsYW5nRnJvbnRlbmQuCisvLworLy8gRm9yIHRoaXMgcmVhc29uLCBpbXBsZW1lbnQgc29tZSBtZXRob2RzIGluIHRoaXMgaGVhZGVyIGZpbGUuCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCitpbmxpbmUgVXNlck1vZGVLaW5kIEFuYWx5emVyT3B0aW9uczo6Z2V0VXNlck1vZGUoKSBjb25zdCB7CisgIGF1dG8gSyA9IGxsdm06OlN0cmluZ1N3aXRjaDxsbHZtOjpPcHRpb25hbDxVc2VyTW9kZUtpbmQ+PihVc2VyTW9kZSkKKyAgICAuQ2FzZSgic2hhbGxvdyIsIFVNS19TaGFsbG93KQorICAgIC5DYXNlKCJkZWVwIiwgVU1LX0RlZXApCisgICAgLkRlZmF1bHQoTm9uZSk7CisgIGFzc2VydChLLmhhc1ZhbHVlKCkgJiYgIlVzZXIgbW9kZSBpcyBpbnZhbGlkLiIpOworICByZXR1cm4gSy5nZXRWYWx1ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBjbGFuZwogCiAjZW5kaWYgLy8gTExWTV9DTEFOR19TVEFUSUNBTkFMWVpFUl9DT1JFX0FOQUxZWkVST1BUSU9OU19ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0J1Z1JlcG9ydGVyL0J1Z1JlcG9ydGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0J1Z1JlcG9ydGVyL0J1Z1JlcG9ydGVyLmgKaW5kZXggOTA0MWY0Yy4uYTUzZWZiYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9CdWdSZXBvcnRlci9CdWdSZXBvcnRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvQnVnUmVwb3J0ZXIvQnVnUmVwb3J0ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBCdWdSZXBvcnRlci5oIC0gR2VuZXJhdGUgUGF0aERpYWdub3N0aWNzIC0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtOTUsNyArOTQsNyBAQAogICBmcmllbmQgY2xhc3MgQnVnUmVwb3J0RXF1aXZDbGFzczsKICAgZnJpZW5kIGNsYXNzIEJ1Z1JlcG9ydGVyOwogCi0gIEJ1Z1R5cGUmIEJUOworICBjb25zdCBCdWdUeXBlJiBCVDsKICAgY29uc3QgRGVjbCAqRGVjbFdpdGhJc3N1ZSA9IG51bGxwdHI7CiAgIHN0ZDo6c3RyaW5nIFNob3J0RGVzY3JpcHRpb247CiAgIHN0ZDo6c3RyaW5nIERlc2NyaXB0aW9uOwpAQCAtMTY0LDE1ICsxNjMsMTUgQEAKICAgdm9pZCBwb3BJbnRlcmVzdGluZ1N5bWJvbHNBbmRSZWdpb25zKCk7CiAKIHB1YmxpYzoKLSAgQnVnUmVwb3J0KEJ1Z1R5cGUmIGJ0LCBTdHJpbmdSZWYgZGVzYywgY29uc3QgRXhwbG9kZWROb2RlICplcnJvcm5vZGUpCisgIEJ1Z1JlcG9ydChjb25zdCBCdWdUeXBlJiBidCwgU3RyaW5nUmVmIGRlc2MsIGNvbnN0IEV4cGxvZGVkTm9kZSAqZXJyb3Jub2RlKQogICAgICAgOiBCVChidCksIERlc2NyaXB0aW9uKGRlc2MpLCBFcnJvck5vZGUoZXJyb3Jub2RlKSB7fQogCi0gIEJ1Z1JlcG9ydChCdWdUeXBlJiBidCwgU3RyaW5nUmVmIHNob3J0RGVzYywgU3RyaW5nUmVmIGRlc2MsCisgIEJ1Z1JlcG9ydChjb25zdCBCdWdUeXBlJiBidCwgU3RyaW5nUmVmIHNob3J0RGVzYywgU3RyaW5nUmVmIGRlc2MsCiAgICAgICAgICAgICBjb25zdCBFeHBsb2RlZE5vZGUgKmVycm9ybm9kZSkKICAgICAgIDogQlQoYnQpLCBTaG9ydERlc2NyaXB0aW9uKHNob3J0RGVzYyksIERlc2NyaXB0aW9uKGRlc2MpLAogICAgICAgICBFcnJvck5vZGUoZXJyb3Jub2RlKSB7fQogCi0gIEJ1Z1JlcG9ydChCdWdUeXBlICZidCwgU3RyaW5nUmVmIGRlc2MsIFBhdGhEaWFnbm9zdGljTG9jYXRpb24gbCkKKyAgQnVnUmVwb3J0KGNvbnN0IEJ1Z1R5cGUgJmJ0LCBTdHJpbmdSZWYgZGVzYywgUGF0aERpYWdub3N0aWNMb2NhdGlvbiBsKQogICAgICAgOiBCVChidCksIERlc2NyaXB0aW9uKGRlc2MpLCBMb2NhdGlvbihsKSB7fQogCiAgIC8vLyBDcmVhdGUgYSBCdWdSZXBvcnQgd2l0aCBhIGN1c3RvbSB1bmlxdWVpbmcgbG9jYXRpb24uCkBAIC0xOTAsNyArMTg5LDcgQEAKICAgdmlydHVhbCB+QnVnUmVwb3J0KCk7CiAKICAgY29uc3QgQnVnVHlwZSYgZ2V0QnVnVHlwZSgpIGNvbnN0IHsgcmV0dXJuIEJUOyB9Ci0gIEJ1Z1R5cGUmIGdldEJ1Z1R5cGUoKSB7IHJldHVybiBCVDsgfQorICAvL0J1Z1R5cGUmIGdldEJ1Z1R5cGUoKSB7IHJldHVybiBCVDsgfQogCiAgIC8vLyBUcnVlIHdoZW4gdGhlIHJlcG9ydCBoYXMgYW4gZXhlY3V0aW9uIHBhdGggYXNzb2NpYXRlZCB3aXRoIGl0LgogICAvLy8KQEAgLTQ4MSw3ICs0ODAsNyBAQAogICAgIHJldHVybiB7fTsKICAgfQogCi0gIHZvaWQgUmVnaXN0ZXIoQnVnVHlwZSAqQlQpOworICB2b2lkIFJlZ2lzdGVyKGNvbnN0IEJ1Z1R5cGUgKkJUKTsKIAogICAvLy8gQWRkIHRoZSBnaXZlbiByZXBvcnQgdG8gdGhlIHNldCBvZiByZXBvcnRzIHRyYWNrZWQgYnkgQnVnUmVwb3J0ZXIuCiAgIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9CdWdSZXBvcnRlci9CdWdSZXBvcnRlclZpc2l0b3JzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0J1Z1JlcG9ydGVyL0J1Z1JlcG9ydGVyVmlzaXRvcnMuaAppbmRleCBlZTE2NTIyLi45MWY3Y2VlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0J1Z1JlcG9ydGVyL0J1Z1JlcG9ydGVyVmlzaXRvcnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0J1Z1JlcG9ydGVyL0J1Z1JlcG9ydGVyVmlzaXRvcnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBCdWdSZXBvcnRlclZpc2l0b3JzLmggLSBHZW5lcmF0ZSBQYXRoRGlhZ25vc3RpY3MgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzQ1LDEyICszNDQsMTEgQEAKIAogbmFtZXNwYWNlIGJ1Z3JlcG9ydGVyIHsKIAotLy8vIEF0dGVtcHRzIHRvIGFkZCB2aXNpdG9ycyB0byB0cmFjZSBhIG51bGwgb3IgdW5kZWZpbmVkIHZhbHVlIGJhY2sgdG8gaXRzCi0vLy8gcG9pbnQgb2Ygb3JpZ2luLCB3aGV0aGVyIGl0IGlzIGEgc3ltYm9sIGNvbnN0cmFpbmVkIHRvIG51bGwgb3IgYW4gZXhwbGljaXQKLS8vLyBhc3NpZ25tZW50LgorLy8vIEF0dGVtcHRzIHRvIGFkZCB2aXNpdG9ycyB0byB0cmFjayBleHByZXNzaW9uIHZhbHVlIGJhY2sgdG8gaXRzIHBvaW50IG9mCisvLy8gb3JpZ2luLgogLy8vCiAvLy8gXHBhcmFtIE4gQSBub2RlICJkb3duc3RyZWFtIiBmcm9tIHRoZSBldmFsdWF0aW9uIG9mIHRoZSBzdGF0ZW1lbnQuCi0vLy8gXHBhcmFtIFMgVGhlIHN0YXRlbWVudCB3aG9zZSB2YWx1ZSBpcyBudWxsIG9yIHVuZGVmaW5lZC4KKy8vLyBccGFyYW0gRSBUaGUgZXhwcmVzc2lvbiB2YWx1ZSB3aGljaCB3ZSBhcmUgdHJhY2tpbmcKIC8vLyBccGFyYW0gUiBUaGUgYnVnIHJlcG9ydCB0byB3aGljaCB2aXNpdG9ycyBzaG91bGQgYmUgYXR0YWNoZWQuCiAvLy8gXHBhcmFtIEVuYWJsZU51bGxGUFN1cHByZXNzaW9uIFdoZXRoZXIgd2Ugc2hvdWxkIGVtcGxveSBmYWxzZSBwb3NpdGl2ZQogLy8vICAgICAgICAgc3VwcHJlc3Npb24gKGlubGluZWQgZGVmZW5zaXZlIGNoZWNrcywgcmV0dXJuZWQgbnVsbCkuCkBAIC0zNTgsMTMgKzM1NiwxMCBAQAogLy8vIFxyZXR1cm4gV2hldGhlciBvciBub3QgdGhlIGZ1bmN0aW9uIHdhcyBhYmxlIHRvIGFkZCB2aXNpdG9ycyBmb3IgdGhpcwogLy8vICAgICAgICAgc3RhdGVtZW50LiBOb3RlIHRoYXQgcmV0dXJuaW5nIFxjIHRydWUgZG9lcyBub3QgYWN0dWFsbHkgaW1wbHkKIC8vLyAgICAgICAgIHRoYXQgYW55IHZpc2l0b3JzIHdlcmUgYWRkZWQuCi1ib29sIHRyYWNrTnVsbE9yVW5kZWZWYWx1ZShjb25zdCBFeHBsb2RlZE5vZGUgKk4sIGNvbnN0IFN0bXQgKlMsIEJ1Z1JlcG9ydCAmUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgRW5hYmxlTnVsbEZQU3VwcHJlc3Npb24gPSB0cnVlKTsKK2Jvb2wgdHJhY2tFeHByZXNzaW9uVmFsdWUoY29uc3QgRXhwbG9kZWROb2RlICpOLCBjb25zdCBFeHByICpFLCBCdWdSZXBvcnQgJlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgRW5hYmxlTnVsbEZQU3VwcHJlc3Npb24gPSB0cnVlKTsKIAogY29uc3QgRXhwciAqZ2V0RGVyZWZFeHByKGNvbnN0IFN0bXQgKlMpOwotY29uc3QgU3RtdCAqR2V0RGVub21FeHByKGNvbnN0IEV4cGxvZGVkTm9kZSAqTik7Ci1jb25zdCBTdG10ICpHZXRSZXRWYWxFeHByKGNvbnN0IEV4cGxvZGVkTm9kZSAqTik7Ci1ib29sIGlzRGVjbFJlZkV4cHJUb1JlZmVyZW5jZShjb25zdCBFeHByICpFKTsKIAogfSAvLyBuYW1lc3BhY2UgYnVncmVwb3J0ZXIKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9CdWdSZXBvcnRlci9CdWdUeXBlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0J1Z1JlcG9ydGVyL0J1Z1R5cGUuaAppbmRleCA3MjdlYzdjLi4zMjRiNTMxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0J1Z1JlcG9ydGVyL0J1Z1R5cGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0J1Z1JlcG9ydGVyL0J1Z1R5cGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tICBCdWdUeXBlLmggLSBCdWcgSW5mb3JtYXRpb24gRGVzY3JpcHRpb24gLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzgsMTIgKzM3LDE0IEBACiAgIHZpcnR1YWwgdm9pZCBhbmNob3IoKTsKIAogcHVibGljOgotICBCdWdUeXBlKENoZWNrTmFtZSBDaGVjaywgU3RyaW5nUmVmIE5hbWUsIFN0cmluZ1JlZiBDYXQpCisgIEJ1Z1R5cGUoQ2hlY2tOYW1lIENoZWNrLCBTdHJpbmdSZWYgTmFtZSwgU3RyaW5nUmVmIENhdCwKKyAgICAgICAgICBib29sIFN1cHByZXNzT25TaW5rPWZhbHNlKQogICAgICAgOiBDaGVjayhDaGVjayksIE5hbWUoTmFtZSksIENhdGVnb3J5KENhdCksIENoZWNrZXIobnVsbHB0ciksCi0gICAgICAgIFN1cHByZXNzT25TaW5rKGZhbHNlKSB7fQotICBCdWdUeXBlKGNvbnN0IENoZWNrZXJCYXNlICpDaGVja2VyLCBTdHJpbmdSZWYgTmFtZSwgU3RyaW5nUmVmIENhdCkKKyAgICAgICAgU3VwcHJlc3NPblNpbmsoU3VwcHJlc3NPblNpbmspIHt9CisgIEJ1Z1R5cGUoY29uc3QgQ2hlY2tlckJhc2UgKkNoZWNrZXIsIFN0cmluZ1JlZiBOYW1lLCBTdHJpbmdSZWYgQ2F0LAorICAgICAgICAgIGJvb2wgU3VwcHJlc3NPblNpbms9ZmFsc2UpCiAgICAgICA6IENoZWNrKENoZWNrZXItPmdldENoZWNrTmFtZSgpKSwgTmFtZShOYW1lKSwgQ2F0ZWdvcnkoQ2F0KSwKLSAgICAgICAgQ2hlY2tlcihDaGVja2VyKSwgU3VwcHJlc3NPblNpbmsoZmFsc2UpIHt9CisgICAgICAgIENoZWNrZXIoQ2hlY2tlciksIFN1cHByZXNzT25TaW5rKFN1cHByZXNzT25TaW5rKSB7fQogICB2aXJ0dWFsIH5CdWdUeXBlKCkgPSBkZWZhdWx0OwogCiAgIFN0cmluZ1JlZiBnZXROYW1lKCkgY29uc3QgeyByZXR1cm4gTmFtZTsgfQpAQCAtNjQsNyArNjUsNiBAQAogICAvLy8gIHR5cGUgc2hvdWxkIGJlIHN1cHByZXNzZWQgaWYgdGhlIGVuZCBub2RlIG9mIHRoZSByZXBvcnQgaXMgcG9zdC1kb21pbmF0ZWQKICAgLy8vICBieSBhIHNpbmsgbm9kZS4KICAgYm9vbCBpc1N1cHByZXNzT25TaW5rKCkgY29uc3QgeyByZXR1cm4gU3VwcHJlc3NPblNpbms7IH0KLSAgdm9pZCBzZXRTdXBwcmVzc09uU2luayhib29sIHgpIHsgU3VwcHJlc3NPblNpbmsgPSB4OyB9CiB9OwogCiBjbGFzcyBCdWlsdGluQnVnIDogcHVibGljIEJ1Z1R5cGUgewpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9CdWdSZXBvcnRlci9Db21tb25CdWdDYXRlZ29yaWVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0J1Z1JlcG9ydGVyL0NvbW1vbkJ1Z0NhdGVnb3JpZXMuaAppbmRleCAwZTgwZTdiLi44NTUyNmViIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0J1Z1JlcG9ydGVyL0NvbW1vbkJ1Z0NhdGVnb3JpZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0J1Z1JlcG9ydGVyL0NvbW1vbkJ1Z0NhdGVnb3JpZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPS0tLSBDb21tb25CdWdDYXRlZ29yaWVzLmggLSBQcm92aWRlcyBjb21tb24gaXNzdWUgY2F0ZWdvcmllcyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTE2LDcgKzE1LDcgQEAKICAgICBuYW1lc3BhY2UgY2F0ZWdvcmllcyB7CiAgICAgICBleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IENvcmVGb3VuZGF0aW9uT2JqZWN0aXZlQzsKICAgICAgIGV4dGVybiBjb25zdCBjaGFyICogY29uc3QgTG9naWNFcnJvcjsKLSAgICAgIGV4dGVybiBjb25zdCBjaGFyICogY29uc3QgTWVtb3J5Q29yZUZvdW5kYXRpb25PYmplY3RpdmVDOworICAgICAgZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb25zdCBNZW1vcnlSZWZDb3VudDsKICAgICAgIGV4dGVybiBjb25zdCBjaGFyICogY29uc3QgTWVtb3J5RXJyb3I7CiAgICAgICBleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IFVuaXhBUEk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9CdWdSZXBvcnRlci9QYXRoRGlhZ25vc3RpYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9CdWdSZXBvcnRlci9QYXRoRGlhZ25vc3RpYy5oCmluZGV4IDdmZmY0MjkuLjNjOGY4NWUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvQnVnUmVwb3J0ZXIvUGF0aERpYWdub3N0aWMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0J1Z1JlcG9ydGVyL1BhdGhEaWFnbm9zdGljLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUGF0aERpYWdub3N0aWMuaCAtIFBhdGgtU3BlY2lmaWMgRGlhZ25vc3RpYyBIYW5kbGluZyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTExOCw3ICsxMTcsNyBAQAogICAgIC8vLyBPbmx5IHJ1bnMgdmlzaXRvcnMsIG5vIG91dHB1dCBnZW5lcmF0ZWQuCiAgICAgTm9uZSwKIAotICAgIC8vLyBVc2VkIGZvciBIVE1MIGFuZCB0ZXh0IG91dHB1dC4KKyAgICAvLy8gVXNlZCBmb3IgSFRNTCwgU0FSSUYsIGFuZCB0ZXh0IG91dHB1dC4KICAgICBNaW5pbWFsLAogCiAgICAgLy8vIFVzZWQgZm9yIHBsaXN0IG91dHB1dCwgdXNlZCBmb3IgImFycm93cyIgZ2VuZXJhdGlvbi4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvQ2hlY2tlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9DaGVja2VyLmgKaW5kZXggODQ4NGNmZS4uZGIzYWU3NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9DaGVja2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9DaGVja2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09IENoZWNrZXIuaCAtIFJlZ2lzdHJhdGlvbiBtZWNoYW5pc20gZm9yIGNoZWNrZXJzIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotLT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE1LDYgKzE0LDcgQEAKICNkZWZpbmUgTExWTV9DTEFOR19TVEFUSUNBTkFMWVpFUl9DT1JFX0NIRUNLRVJfSAogCiAjaW5jbHVkZSAiY2xhbmcvQW5hbHlzaXMvUHJvZ3JhbVBvaW50LmgiCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvTGFuZ09wdGlvbnMuaCIKICNpbmNsdWRlICJjbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0NoZWNrZXJNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NWYWxzLmgiCiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0Nhc3RpbmcuaCIKQEAgLTU1OCw2ICs1NTgsOCBAQAogICAvLyBkZXJlZmVyZW5jZSBtaWdodCBoYXBwZW4gbGF0ZXIgKGZvciBleGFtcGxlIHBvaW50ZXIgcGFzc2VkIHRvIGEgcGFyYW1ldGVyCiAgIC8vIHRoYXQgaXMgbWFya2VkIHdpdGggbm9ubnVsbCBhdHRyaWJ1dGUuKQogICBib29sIElzRGlyZWN0RGVyZWZlcmVuY2U7CisKKyAgc3RhdGljIGludCBUYWc7CiB9OwogCiAvLy8gQSBoZWxwZXIgY2xhc3Mgd2hpY2ggd3JhcHMgYSBib29sZWFuIHZhbHVlIHNldCB0byBmYWxzZSBieSBkZWZhdWx0LgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9DaGVja2VyTWFuYWdlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9DaGVja2VyTWFuYWdlci5oCmluZGV4IDQ2M2M4NDIuLmI0ZGUyNmQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvQ2hlY2tlck1hbmFnZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0NoZWNrZXJNYW5hZ2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ2hlY2tlck1hbmFnZXIuaCAtIFN0YXRpYyBBbmFseXplciBDaGVja2VyIE1hbmFnZXIgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE0Miw3ICsxNDEsNyBAQAogICB1c2luZyBDaGVja2VyRHRvciA9IENoZWNrZXJGbjx2b2lkICgpPjsKIAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLS8vIHJlZ2lzdGVyQ2hlY2tlcgorLy8gQ2hlY2tlciByZWdpc3RyYXRpb24uCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCiAgIC8vLyBVc2VkIHRvIHJlZ2lzdGVyIGNoZWNrZXJzLgpAQCAtMTU0LDggKzE1Myw3IEBACiAgIENIRUNLRVIgKnJlZ2lzdGVyQ2hlY2tlcihBVCAmJi4uLiBBcmdzKSB7CiAgICAgQ2hlY2tlclRhZyB0YWcgPSBnZXRUYWc8Q0hFQ0tFUj4oKTsKICAgICBDaGVja2VyUmVmICZyZWYgPSBDaGVja2VyVGFnc1t0YWddOwotICAgIGlmIChyZWYpCi0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0hFQ0tFUiAqPihyZWYpOyAvLyBhbHJlYWR5IHJlZ2lzdGVyZWQuCisgICAgYXNzZXJ0KCFyZWYgJiYgIkNoZWNrZXIgYWxyZWFkeSByZWdpc3RlcmVkLCB1c2UgZ2V0Q2hlY2tlciEiKTsKIAogICAgIENIRUNLRVIgKmNoZWNrZXIgPSBuZXcgQ0hFQ0tFUihzdGQ6OmZvcndhcmQ8QVQ+KEFyZ3MpLi4uKTsKICAgICBjaGVja2VyLT5OYW1lID0gQ3VycmVudENoZWNrTmFtZTsKQEAgLTE2NSw4ICsxNjMsMTcgQEAKICAgICByZXR1cm4gY2hlY2tlcjsKICAgfQogCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBDSEVDS0VSPgorICBDSEVDS0VSICpnZXRDaGVja2VyKCkgeworICAgIENoZWNrZXJUYWcgdGFnID0gZ2V0VGFnPENIRUNLRVI+KCk7CisgICAgYXNzZXJ0KENoZWNrZXJUYWdzLmNvdW50KHRhZykgIT0gMCAmJgorICAgICAgICAgICAiUmVxdWVzdGVkIGNoZWNrZXIgaXMgbm90IHJlZ2lzdGVyZWQhIE1heWJlIHlvdSBzaG91bGQgYWRkIGl0IGFzIGEgIgorICAgICAgICAgICAiZGVwZW5kZW5jeSBpbiBDaGVja2Vycy50ZD8iKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0hFQ0tFUiAqPihDaGVja2VyVGFnc1t0YWddKTsKKyAgfQorCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotLy8gRnVuY3Rpb25zIGZvciBydW5uaW5nIGNoZWNrZXJzIGZvciBBU1QgdHJhdmVyc2luZy4uCisvLyBGdW5jdGlvbnMgZm9yIHJ1bm5pbmcgY2hlY2tlcnMgZm9yIEFTVCB0cmF2ZXJzaW5nLgogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIAogICAvLy8gUnVuIGNoZWNrZXJzIGhhbmRsaW5nIERlY2xzLgpAQCAtNTMyLDE5ICs1MzksMTkgQEAKIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRVZFTlQ+CiAgIHZvaWQgX3JlZ2lzdGVyTGlzdGVuZXJGb3JFdmVudChDaGVja0V2ZW50RnVuYyBjaGVja2ZuKSB7Ci0gICAgRXZlbnRJbmZvICZpbmZvID0gRXZlbnRzW2dldFRhZzxFVkVOVD4oKV07CisgICAgRXZlbnRJbmZvICZpbmZvID0gRXZlbnRzWyZFVkVOVDo6VGFnXTsKICAgICBpbmZvLkNoZWNrZXJzLnB1c2hfYmFjayhjaGVja2ZuKTsKICAgfQogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBFVkVOVD4KICAgdm9pZCBfcmVnaXN0ZXJEaXNwYXRjaGVyRm9yRXZlbnQoKSB7Ci0gICAgRXZlbnRJbmZvICZpbmZvID0gRXZlbnRzW2dldFRhZzxFVkVOVD4oKV07CisgICAgRXZlbnRJbmZvICZpbmZvID0gRXZlbnRzWyZFVkVOVDo6VGFnXTsKICAgICBpbmZvLkhhc0Rpc3BhdGNoZXIgPSB0cnVlOwogICB9CiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIEVWRU5UPgogICB2b2lkIF9kaXNwYXRjaEV2ZW50KGNvbnN0IEVWRU5UICZldmVudCkgY29uc3QgewotICAgIEV2ZW50c1R5Ojpjb25zdF9pdGVyYXRvciBJID0gRXZlbnRzLmZpbmQoZ2V0VGFnPEVWRU5UPigpKTsKKyAgICBFdmVudHNUeTo6Y29uc3RfaXRlcmF0b3IgSSA9IEV2ZW50cy5maW5kKCZFVkVOVDo6VGFnKTsKICAgICBpZiAoSSA9PSBFdmVudHMuZW5kKCkpCiAgICAgICByZXR1cm47CiAgICAgY29uc3QgRXZlbnRJbmZvICZpbmZvID0gSS0+c2Vjb25kOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9DaGVja2VyT3B0SW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9DaGVja2VyT3B0SW5mby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDEzYmYzLi4wMDAwMDAwCi0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvQ2hlY2tlck9wdEluZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8vPT09LS0tIENoZWNrZXJPcHRJbmZvLmggLSBTcGVjaWZpZXMgd2hpY2ggY2hlY2tlcnMgdG8gdXNlIC0tLS0tKi0gQysrIC0qLT09PS8vCi0vLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgotLy8KLS8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi0KLSNpZm5kZWYgTExWTV9DTEFOR19TVEFUSUNBTkFMWVpFUl9DT1JFX0NIRUNLRVJPUFRJTkZPX0gKLSNkZWZpbmUgTExWTV9DTEFOR19TVEFUSUNBTkFMWVpFUl9DT1JFX0NIRUNLRVJPUFRJTkZPX0gKLQotI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0xMVk0uaCIKLSNpbmNsdWRlICJsbHZtL0FEVC9TdHJpbmdSZWYuaCIKLQotbmFtZXNwYWNlIGNsYW5nIHsKLW5hbWVzcGFjZSBlbnRvIHsKLQotLy8vIFJlcHJlc2VudHMgYSByZXF1ZXN0IHRvIGluY2x1ZGUgb3IgZXhjbHVkZSBhIGNoZWNrZXIgb3IgcGFja2FnZSBmcm9tIGEKLS8vLyBzcGVjaWZpYyBhbmFseXNpcyBydW4uCi0vLy8KLS8vLyBcc2EgQ2hlY2tlclJlZ2lzdHJ5Ojppbml0aWFsaXplTWFuYWdlcgotY2xhc3MgQ2hlY2tlck9wdEluZm8gewotICBTdHJpbmdSZWYgTmFtZTsKLSAgYm9vbCBFbmFibGU7Ci0gIGJvb2wgQ2xhaW1lZDsKLQotcHVibGljOgotICBDaGVja2VyT3B0SW5mbyhTdHJpbmdSZWYgbmFtZSwgYm9vbCBlbmFibGUpCi0gICAgOiBOYW1lKG5hbWUpLCBFbmFibGUoZW5hYmxlKSwgQ2xhaW1lZChmYWxzZSkgeyB9Ci0KLSAgU3RyaW5nUmVmIGdldE5hbWUoKSBjb25zdCB7IHJldHVybiBOYW1lOyB9Ci0gIGJvb2wgaXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gRW5hYmxlOyB9Ci0gIGJvb2wgaXNEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuICFpc0VuYWJsZWQoKTsgfQotCi0gIGJvb2wgaXNDbGFpbWVkKCkgY29uc3QgeyByZXR1cm4gQ2xhaW1lZDsgfQotICBib29sIGlzVW5jbGFpbWVkKCkgY29uc3QgeyByZXR1cm4gIWlzQ2xhaW1lZCgpOyB9Ci0gIHZvaWQgY2xhaW0oKSB7IENsYWltZWQgPSB0cnVlOyB9Ci19OwotCi19IC8vIGVuZCBuYW1lc3BhY2UgZW50bwotfSAvLyBlbmQgbmFtZXNwYWNlIGNsYW5nCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9DaGVja2VyUmVnaXN0cnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvQ2hlY2tlclJlZ2lzdHJ5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ODBkZGEuLjAwMDAwMDAKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9DaGVja2VyUmVnaXN0cnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi0vLz09PS0gQ2hlY2tlclJlZ2lzdHJ5LmggLSBNYWludGFpbnMgYWxsIGF2YWlsYWJsZSBjaGVja2VycyAtLS0tLSotIEMrKyAtKi09PT0vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KLS8vCi0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotCi0jaWZuZGVmIExMVk1fQ0xBTkdfU1RBVElDQU5BTFlaRVJfQ09SRV9DSEVDS0VSUkVHSVNUUllfSAotI2RlZmluZSBMTFZNX0NMQU5HX1NUQVRJQ0FOQUxZWkVSX0NPUkVfQ0hFQ0tFUlJFR0lTVFJZX0gKLQotI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0xMVk0uaCIKLSNpbmNsdWRlICJjbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0NoZWNrZXJNYW5hZ2VyLmgiCi0jaW5jbHVkZSAibGx2bS9BRFQvU3RyaW5nTWFwLmgiCi0jaW5jbHVkZSAibGx2bS9BRFQvU3RyaW5nUmVmLmgiCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLS8vIEZJWE1FOiBtb3ZlIHRoaXMgaW5mb3JtYXRpb24gdG8gYW4gSFRNTCBmaWxlIGluIGRvY3MvLgotLy8gQXQgdGhlIHZlcnkgbGVhc3QsIGEgY2hlY2tlciBwbHVnaW4gaXMgYSBkeW5hbWljIGxpYnJhcnkgdGhhdCBleHBvcnRzCi0vLyBjbGFuZ19hbmFseXplckFQSVZlcnNpb25TdHJpbmcuIFRoaXMgc2hvdWxkIGJlIGRlZmluZWQgYXMgZm9sbG93czoKLS8vCi0vLyAgIGV4dGVybiAiQyIKLS8vICAgY29uc3QgY2hhciBjbGFuZ19hbmFseXplckFQSVZlcnNpb25TdHJpbmdbXSA9Ci0vLyAgICAgQ0xBTkdfQU5BTFlaRVJfQVBJX1ZFUlNJT05fU1RSSU5HOwotLy8KLS8vIFRoaXMgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIGFuYWx5emVyIGlzIGtub3duIHRvCi0vLyBiZSBpbmNvbXBhdGlibGUgd2l0aCBhIHBsdWdpbi4gUGx1Z2lucyB3aXRoIGluY29tcGF0aWJsZSB2ZXJzaW9uIHN0cmluZ3MsCi0vLyBvciB3aXRob3V0IGEgdmVyc2lvbiBzdHJpbmcgYXQgYWxsLCB3aWxsIG5vdCBiZSBsb2FkZWQuCi0vLwotLy8gVG8gYWRkIGEgY3VzdG9tIGNoZWNrZXIgdG8gdGhlIGFuYWx5emVyLCB0aGUgcGx1Z2luIG11c3QgYWxzbyBkZWZpbmUgdGhlCi0vLyBmdW5jdGlvbiBjbGFuZ19yZWdpc3RlckNoZWNrZXJzLiBGb3IgZXhhbXBsZToKLS8vCi0vLyAgICBleHRlcm4gIkMiCi0vLyAgICB2b2lkIGNsYW5nX3JlZ2lzdGVyQ2hlY2tlcnMgKENoZWNrZXJSZWdpc3RyeSAmcmVnaXN0cnkpIHsKLS8vICAgICAgcmVnaXN0cnkuYWRkQ2hlY2tlcjxNYWluQ2FsbENoZWNrZXI+KCJleGFtcGxlLk1haW5DYWxsQ2hlY2tlciIsCi0vLyAgICAgICAgIkRpc2FsbG93cyBjYWxscyB0byBmdW5jdGlvbnMgY2FsbGVkIG1haW4iKTsKLS8vICAgIH0KLS8vCi0vLyBUaGUgZmlyc3QgbWV0aG9kIGFyZ3VtZW50IGlzIHRoZSBmdWxsIG5hbWUgb2YgdGhlIGNoZWNrZXIsIGluY2x1ZGluZyBpdHMKLS8vIGVuY2xvc2luZyBwYWNrYWdlLiBCeSBjb252ZW50aW9uLCB0aGUgcmVnaXN0ZXJlZCBuYW1lIG9mIGEgY2hlY2tlciBpcyB0aGUKLS8vIG5hbWUgb2YgdGhlIGFzc29jaWF0ZWQgY2xhc3MgKHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCkuCi0vLyBUaGUgc2Vjb25kIG1ldGhvZCBhcmd1bWVudCBpcyBhIHNob3J0IGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZQotLy8gY2hlY2tlci4KLS8vCi0vLyBUaGUgY2xhbmdfcmVnaXN0ZXJDaGVja2VycyBmdW5jdGlvbiBtYXkgYWRkIGFueSBudW1iZXIgb2YgY2hlY2tlcnMgdG8gdGhlCi0vLyByZWdpc3RyeS4gSWYgYW55IGNoZWNrZXJzIHJlcXVpcmUgYWRkaXRpb25hbCBpbml0aWFsaXphdGlvbiwgdXNlIHRoZSB0aHJlZS0KLS8vIGFyZ3VtZW50IGZvcm0gb2YgQ2hlY2tlclJlZ2lzdHJ5OjphZGRDaGVja2VyLgotLy8KLS8vIFRvIGxvYWQgYSBjaGVja2VyIHBsdWdpbiwgc3BlY2lmeSB0aGUgZnVsbCBwYXRoIHRvIHRoZSBkeW5hbWljIGxpYnJhcnkgYXMKLS8vIHRoZSBhcmd1bWVudCB0byB0aGUgLWxvYWQgb3B0aW9uIGluIHRoZSBjYzEgZnJvbnRlbmQuIFlvdSBjYW4gdGhlbiBlbmFibGUKLS8vIHlvdXIgY3VzdG9tIGNoZWNrZXIgdXNpbmcgdGhlIC1hbmFseXplci1jaGVja2VyOgotLy8KLS8vICAgY2xhbmcgLWNjMSAtbG9hZCA8L3BhdGgvdG8vcGx1Z2luLmR5bGliPiAtYW5hbHl6ZQotLy8gICAgIC1hbmFseXplci1jaGVja2VyPTxleGFtcGxlLk1haW5DYWxsQ2hlY2tlcj4KLS8vCi0vLyBGb3IgYSBjb21wbGV0ZSB3b3JraW5nIGV4YW1wbGUsIHNlZSBleGFtcGxlcy9hbmFseXplci1wbHVnaW4uCi0KLSNpZm5kZWYgQ0xBTkdfQU5BTFlaRVJfQVBJX1ZFUlNJT05fU1RSSU5HCi0vLyBGSVhNRTogVGhlIENsYW5nIHZlcnNpb24gc3RyaW5nIGlzIG5vdCBwYXJ0aWN1bGFybHkgZ3JhbnVsYXI7Ci0vLyB0aGUgYW5hbHl6ZXIgaW5mcmFzdHJ1Y3R1cmUgY2FuIGNoYW5nZSBhIGxvdCBiZXR3ZWVuIHJlbGVhc2VzLgotLy8gVW5mb3J0dW5hdGVseSwgdGhpcyBzdHJpbmcgaGFzIHRvIGJlIHN0YXRpY2FsbHkgZW1iZWRkZWQgaW4gZWFjaCBwbHVnaW4sCi0vLyBzbyB3ZSBjYW4ndCBqdXN0IHVzZSB0aGUgZnVuY3Rpb25zIGRlZmluZWQgaW4gVmVyc2lvbi5oLgotI2luY2x1ZGUgImNsYW5nL0Jhc2ljL1ZlcnNpb24uaCIKLSNkZWZpbmUgQ0xBTkdfQU5BTFlaRVJfQVBJX1ZFUlNJT05fU1RSSU5HIENMQU5HX1ZFUlNJT05fU1RSSU5HCi0jZW5kaWYKLQotbmFtZXNwYWNlIGNsYW5nIHsKLQotY2xhc3MgQW5hbHl6ZXJPcHRpb25zOwotY2xhc3MgRGlhZ25vc3RpY3NFbmdpbmU7Ci0KLW5hbWVzcGFjZSBlbnRvIHsKLQotY2xhc3MgQ2hlY2tlck9wdEluZm87Ci0KLS8vLyBNYW5hZ2VzIGEgc2V0IG9mIGF2YWlsYWJsZSBjaGVja2VycyBmb3IgcnVubmluZyBhIHN0YXRpYyBhbmFseXNpcy4KLS8vLyBUaGUgY2hlY2tlcnMgYXJlIG9yZ2FuaXplZCBpbnRvIHBhY2thZ2VzIGJ5IGZ1bGwgbmFtZSwgd2hlcmUgaW5jbHVkaW5nCi0vLy8gYSBwYWNrYWdlIHdpbGwgcmVjdXJzaXZlbHkgaW5jbHVkZSBhbGwgc3VicGFja2FnZXMgYW5kIGNoZWNrZXJzIHdpdGhpbiBpdC4KLS8vLyBGb3IgZXhhbXBsZSwgdGhlIGNoZWNrZXIgImNvcmUuYnVpbHRpbi5Ob1JldHVybkZ1bmN0aW9uQ2hlY2tlciIgd2lsbCBiZQotLy8vIGluY2x1ZGVkIGlmIGluaXRpYWxpemVNYW5hZ2VyKCkgaXMgY2FsbGVkIHdpdGggYW4gb3B0aW9uIG9mICJjb3JlIiwKLS8vLyAiY29yZS5idWlsdGluIiwgb3IgdGhlIGZ1bGwgbmFtZSAiY29yZS5idWlsdGluLk5vUmV0dXJuRnVuY3Rpb25DaGVja2VyIi4KLWNsYXNzIENoZWNrZXJSZWdpc3RyeSB7Ci1wdWJsaWM6Ci0gIC8vLyBJbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgcGVyZm9ybSBhbnkgbmVjZXNzYXJ5IHNldHVwIGZvciBhIGNoZWNrZXIuCi0gIC8vLyBUaGV5IHNob3VsZCBpbmNsdWRlIGEgY2FsbCB0byBDaGVja2VyTWFuYWdlcjo6cmVnaXN0ZXJDaGVja2VyLgotICB1c2luZyBJbml0aWFsaXphdGlvbkZ1bmN0aW9uID0gdm9pZCAoKikoQ2hlY2tlck1hbmFnZXIgJik7Ci0KLSAgc3RydWN0IENoZWNrZXJJbmZvIHsKLSAgICBJbml0aWFsaXphdGlvbkZ1bmN0aW9uIEluaXRpYWxpemU7Ci0gICAgU3RyaW5nUmVmIEZ1bGxOYW1lOwotICAgIFN0cmluZ1JlZiBEZXNjOwotCi0gICAgQ2hlY2tlckluZm8oSW5pdGlhbGl6YXRpb25GdW5jdGlvbiBmbiwgU3RyaW5nUmVmIG5hbWUsIFN0cmluZ1JlZiBkZXNjKQotICAgICAgICA6IEluaXRpYWxpemUoZm4pLCBGdWxsTmFtZShuYW1lKSwgRGVzYyhkZXNjKSB7fQotICB9OwotCi0gIHVzaW5nIENoZWNrZXJJbmZvTGlzdCA9IHN0ZDo6dmVjdG9yPENoZWNrZXJJbmZvPjsKLQotcHJpdmF0ZToKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIHN0YXRpYyB2b2lkIGluaXRpYWxpemVNYW5hZ2VyKENoZWNrZXJNYW5hZ2VyICZtZ3IpIHsKLSAgICBtZ3IucmVnaXN0ZXJDaGVja2VyPFQ+KCk7Ci0gIH0KLQotcHVibGljOgotICAvLy8gQWRkcyBhIGNoZWNrZXIgdG8gdGhlIHJlZ2lzdHJ5LiBVc2UgdGhpcyBub24tdGVtcGxhdGVkIG92ZXJsb2FkIHdoZW4geW91cgotICAvLy8gY2hlY2tlciByZXF1aXJlcyBjdXN0b20gaW5pdGlhbGl6YXRpb24uCi0gIHZvaWQgYWRkQ2hlY2tlcihJbml0aWFsaXphdGlvbkZ1bmN0aW9uIGZuLCBTdHJpbmdSZWYgZnVsbE5hbWUsCi0gICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgZGVzYyk7Ci0KLSAgLy8vIEFkZHMgYSBjaGVja2VyIHRvIHRoZSByZWdpc3RyeS4gVXNlIHRoaXMgdGVtcGxhdGVkIG92ZXJsb2FkIHdoZW4geW91cgotICAvLy8gY2hlY2tlciBkb2VzIG5vdCByZXF1aXJlIGFueSBjdXN0b20gaW5pdGlhbGl6YXRpb24uCi0gIHRlbXBsYXRlIDxjbGFzcyBUPgotICB2b2lkIGFkZENoZWNrZXIoU3RyaW5nUmVmIGZ1bGxOYW1lLCBTdHJpbmdSZWYgZGVzYykgewotICAgIC8vIEF2b2lkIE1TVkMncyBDb21waWxlciBFcnJvciBDMjI3NjoKLSAgICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvODUwY3N0dzEodj1WUy44MCkuYXNweAotICAgIGFkZENoZWNrZXIoJkNoZWNrZXJSZWdpc3RyeTo6aW5pdGlhbGl6ZU1hbmFnZXI8VD4sIGZ1bGxOYW1lLCBkZXNjKTsKLSAgfQotCi0gIC8vLyBJbml0aWFsaXplcyBhIENoZWNrZXJNYW5hZ2VyIGJ5IGNhbGxpbmcgdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBmb3IKLSAgLy8vIGFsbCBjaGVja2VycyBzcGVjaWZpZWQgYnkgdGhlIGdpdmVuIENoZWNrZXJPcHRJbmZvIGxpc3QuIFRoZSBvcmRlciBvZiB0aGlzCi0gIC8vLyBsaXN0IGlzIHNpZ25pZmljYW50OyBsYXRlciBvcHRpb25zIGNhbiBiZSB1c2VkIHRvIHJldmVyc2UgZWFybGllciBvbmVzLgotICAvLy8gVGhpcyBjYW4gYmUgdXNlZCB0byBleGNsdWRlIGNlcnRhaW4gY2hlY2tlcnMgaW4gYW4gaW5jbHVkZWQgcGFja2FnZS4KLSAgdm9pZCBpbml0aWFsaXplTWFuYWdlcihDaGVja2VyTWFuYWdlciAmbWdyLAotICAgICAgICAgICAgICAgICAgICAgICAgIFNtYWxsVmVjdG9ySW1wbDxDaGVja2VyT3B0SW5mbz4gJm9wdHMpIGNvbnN0OwotCi0gIC8vLyBDaGVjayBpZiBldmVyeSBvcHRpb24gY29ycmVzcG9uZHMgdG8gYSBzcGVjaWZpYyBjaGVja2VyIG9yIHBhY2thZ2UuCi0gIHZvaWQgdmFsaWRhdGVDaGVja2VyT3B0aW9ucyhjb25zdCBBbmFseXplck9wdGlvbnMgJm9wdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWFnbm9zdGljc0VuZ2luZSAmZGlhZ3MpIGNvbnN0OwotCi0gIC8vLyBQcmludHMgdGhlIG5hbWUgYW5kIGRlc2NyaXB0aW9uIG9mIGFsbCBjaGVja2VycyBpbiB0aGlzIHJlZ2lzdHJ5LgotICAvLy8gVGhpcyBvdXRwdXQgaXMgbm90IGludGVuZGVkIHRvIGJlIG1hY2hpbmUtcGFyc2VhYmxlLgotICB2b2lkIHByaW50SGVscChyYXdfb3N0cmVhbSAmb3V0LCBzaXplX3QgbWF4TmFtZUNoYXJzID0gMzApIGNvbnN0OwotICB2b2lkIHByaW50TGlzdChyYXdfb3N0cmVhbSAmb3V0LAotICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8Q2hlY2tlck9wdEluZm8+ICZvcHRzKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgbXV0YWJsZSBDaGVja2VySW5mb0xpc3QgQ2hlY2tlcnM7Ci0gIG11dGFibGUgbGx2bTo6U3RyaW5nTWFwPHNpemVfdD4gUGFja2FnZXM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBlbnRvCi0KLX0gLy8gbmFtZXNwYWNlIGNsYW5nCi0KLSNlbmRpZiAvLyBMTFZNX0NMQU5HX1NUQVRJQ0FOQUxZWkVSX0NPUkVfQ0hFQ0tFUlJFR0lTVFJZX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvSXNzdWVIYXNoLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0lzc3VlSGFzaC5oCmluZGV4IDAzOTk3YWEuLjM4ZDVmODQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvSXNzdWVIYXNoLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9Jc3N1ZUhhc2guaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tLS0tLS0tLSBJc3N1ZUhhc2guaCAtIEdlbmVyYXRlIGlkZW50aWZpY2F0aW9uIGhhc2hlcyAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAjaWZuZGVmIExMVk1fQ0xBTkdfU1RBVElDQU5BTFlaRVJfQ09SRV9JU1NVRV9IQVNIX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aERpYWdub3N0aWNDb25zdW1lcnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aERpYWdub3N0aWNDb25zdW1lcnMuaAppbmRleCAyZTgxYWEzLi5lZjZlN2UwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhEaWFnbm9zdGljQ29uc3VtZXJzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoRGlhZ25vc3RpY0NvbnN1bWVycy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gUGF0aERpYWdub3N0aWNDb25zdW1lcnMuaCAtIFBhdGggRGlhZ25vc3RpYyBDbGllbnRzIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9BUFNJbnRUeXBlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvQVBTSW50VHlwZS5oCmluZGV4IDI0Mzc5NWUuLjRiN2Q2MDUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9BUFNJbnRUeXBlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0FQU0ludFR5cGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0gQVBTSW50VHlwZS5oIC0gU2ltcGxlIHJlY29yZCBvZiB0aGUgdHlwZSBvZiBBUFNJbnRzIC0tLS0tLS0tKi0gQysrIC0qLS09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9BbmFseXNpc01hbmFnZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9BbmFseXNpc01hbmFnZXIuaAppbmRleCA1MGI5YjU2Li5iMGRkYTc4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvQW5hbHlzaXNNYW5hZ2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0FuYWx5c2lzTWFuYWdlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PSBBbmFseXNpc01hbmFnZXIuaCAtIFBhdGggc2Vuc2l0aXZlIGFuYWx5c2lzIGRhdGEgbWFuYWdlciAtLS0tLS0qLSBDKysgLSotLy8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvQmFzaWNWYWx1ZUZhY3RvcnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9CYXNpY1ZhbHVlRmFjdG9yeS5oCmluZGV4IDFjNWQ0ZWIuLmFjMjE4YmMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9CYXNpY1ZhbHVlRmFjdG9yeS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9CYXNpY1ZhbHVlRmFjdG9yeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0gQmFzaWNWYWx1ZUZhY3RvcnkuaCAtIEJhc2ljIHZhbHVlcyBmb3IgUGF0aCBTZW5zIGFuYWx5c2lzIC0tKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvQmxvY2tDb3VudGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvQmxvY2tDb3VudGVyLmgKaW5kZXggNWU4MzEwOS4uNDZmZjY5ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0Jsb2NrQ291bnRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9CbG9ja0NvdW50ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIEJsb2NrQ291bnRlci5oIC0gQURUIGZvciBjb3VudGluZyBibG9jayB2aXNpdHMgLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0NhbGxFdmVudC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0NhbGxFdmVudC5oCmluZGV4IDRjNTBlYWYuLjE5OTk2Y2YgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9DYWxsRXZlbnQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvQ2FsbEV2ZW50LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ2FsbEV2ZW50LmggLSBXcmFwcGVyIGZvciBhbGwgZnVuY3Rpb24gYW5kIG1ldGhvZCBjYWxscyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTkyMSwxNSArOTIwLDMwIEBACiAgICAgcmV0dXJuIGdldE9yaWdpbkV4cHIoKS0+Z2V0T3BlcmF0b3JOZXcoKTsKICAgfQogCisgIC8vLyBOdW1iZXIgb2Ygbm9uLXBsYWNlbWVudCBhcmd1bWVudHMgdG8gdGhlIGNhbGwuIEl0IGlzIGVxdWFsIHRvIDIgZm9yCisgIC8vLyBDKysxNyBhbGlnbmVkIG9wZXJhdG9yIG5ldygpIGNhbGxzIHRoYXQgaGF2ZSBhbGlnbm1lbnQgaW1wbGljaXRseQorICAvLy8gcGFzc2VkIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQsIGFuZCB0byAxIGZvciBvdGhlciBvcGVyYXRvciBuZXcoKSBjYWxscy4KKyAgdW5zaWduZWQgZ2V0TnVtSW1wbGljaXRBcmdzKCkgY29uc3QgeworICAgIHJldHVybiBnZXRPcmlnaW5FeHByKCktPnBhc3NBbGlnbm1lbnQoKSA/IDIgOiAxOworICB9CisKICAgdW5zaWduZWQgZ2V0TnVtQXJncygpIGNvbnN0IG92ZXJyaWRlIHsKLSAgICByZXR1cm4gZ2V0T3JpZ2luRXhwcigpLT5nZXROdW1QbGFjZW1lbnRBcmdzKCkgKyAxOworICAgIHJldHVybiBnZXRPcmlnaW5FeHByKCktPmdldE51bVBsYWNlbWVudEFyZ3MoKSArIGdldE51bUltcGxpY2l0QXJncygpOwogICB9CiAKICAgY29uc3QgRXhwciAqZ2V0QXJnRXhwcih1bnNpZ25lZCBJbmRleCkgY29uc3Qgb3ZlcnJpZGUgewogICAgIC8vIFRoZSBmaXJzdCBhcmd1bWVudCBvZiBhbiBhbGxvY2F0b3IgY2FsbCBpcyB0aGUgc2l6ZSBvZiB0aGUgYWxsb2NhdGlvbi4KLSAgICBpZiAoSW5kZXggPT0gMCkKKyAgICBpZiAoSW5kZXggPCBnZXROdW1JbXBsaWNpdEFyZ3MoKSkKICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBnZXRPcmlnaW5FeHByKCktPmdldFBsYWNlbWVudEFyZyhJbmRleCAtIDEpOworICAgIHJldHVybiBnZXRPcmlnaW5FeHByKCktPmdldFBsYWNlbWVudEFyZyhJbmRleCAtIGdldE51bUltcGxpY2l0QXJncygpKTsKKyAgfQorCisgIC8vLyBOdW1iZXIgb2YgcGxhY2VtZW50IGFyZ3VtZW50cyB0byB0aGUgb3BlcmF0b3IgbmV3KCkgY2FsbC4gRm9yIGV4YW1wbGUsCisgIC8vLyBzdGFuZGFyZCBzdGQ6Om5vdGhyb3cgb3BlcmF0b3IgbmV3IGFuZCBzdGFuZGFyZCBwbGFjZW1lbnQgbmV3IGJvdGggaGF2ZQorICAvLy8gMSBpbXBsaWNpdCBhcmd1bWVudCAoc2l6ZSkgYW5kIDEgcGxhY2VtZW50IGFyZ3VtZW50LCB3aGlsZSByZWd1bGFyCisgIC8vLyBvcGVyYXRvciBuZXcoKSBoYXMgMSBpbXBsaWNpdCBhcmd1bWVudCBhbmQgMCBwbGFjZW1lbnQgYXJndW1lbnRzLgorICBjb25zdCBFeHByICpnZXRQbGFjZW1lbnRBcmdFeHByKHVuc2lnbmVkIEluZGV4KSBjb25zdCB7CisgICAgcmV0dXJuIGdldE9yaWdpbkV4cHIoKS0+Z2V0UGxhY2VtZW50QXJnKEluZGV4KTsKICAgfQogCiAgIEtpbmQgZ2V0S2luZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENFX0NYWEFsbG9jYXRvcjsgfQpAQCAtMTEyMyw5ICsxMTM3LDE2IEBACiBwdWJsaWM6CiAgIENhbGxFdmVudE1hbmFnZXIobGx2bTo6QnVtcFB0ckFsbG9jYXRvciAmYWxsb2MpIDogQWxsb2MoYWxsb2MpIHt9CiAKKyAgLy8vIEdldHMgYW4gb3V0c2lkZSBjYWxsZXIgZ2l2ZW4gYSBjYWxsZWUgY29udGV4dC4KICAgQ2FsbEV2ZW50UmVmPD4KICAgZ2V0Q2FsbGVyKGNvbnN0IFN0YWNrRnJhbWVDb250ZXh0ICpDYWxsZWVDdHgsIFByb2dyYW1TdGF0ZVJlZiBTdGF0ZSk7CiAKKyAgLy8vIEdldHMgYSBjYWxsIGV2ZW50IGZvciBhIGZ1bmN0aW9uIGNhbGwsIE9iamVjdGl2ZS1DIG1ldGhvZCBjYWxsLAorICAvLy8gb3IgYSAnbmV3JyBjYWxsLgorICBDYWxsRXZlbnRSZWY8PgorICBnZXRDYWxsKGNvbnN0IFN0bXQgKlMsIFByb2dyYW1TdGF0ZVJlZiBTdGF0ZSwKKyAgICAgICAgICBjb25zdCBMb2NhdGlvbkNvbnRleHQgKkxDKTsKKwogICBDYWxsRXZlbnRSZWY8PgogICBnZXRTaW1wbGVDYWxsKGNvbnN0IENhbGxFeHByICpFLCBQcm9ncmFtU3RhdGVSZWYgU3RhdGUsCiAgICAgICAgICAgICAgICAgY29uc3QgTG9jYXRpb25Db250ZXh0ICpMQ3R4KTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9DaGVja2VyQ29udGV4dC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0NoZWNrZXJDb250ZXh0LmgKaW5kZXggNmVlNzViNy4uNTcxMGVlNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0NoZWNrZXJDb250ZXh0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0NoZWNrZXJDb250ZXh0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09IENoZWNrZXJDb250ZXh0LmggLSBDb250ZXh0IGluZm8gZm9yIHBhdGgtc2Vuc2l0aXZlIGNoZWNrZXJzLS0qLSBDKysgLSotLT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9DaGVja2VySGVscGVycy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0NoZWNrZXJIZWxwZXJzLmgKaW5kZXggN2YzNGE3YS4uYjUzYzA0MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0NoZWNrZXJIZWxwZXJzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0NoZWNrZXJIZWxwZXJzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09IENoZWNrZXJIZWxwZXJzLmggLSBIZWxwZXIgZnVuY3Rpb25zIGZvciBjaGVja2VycyAtLS0tLS0tLS0tLS0qLSBDKysgLSotLT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Db25zdHJhaW50TWFuYWdlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0NvbnN0cmFpbnRNYW5hZ2VyLmgKaW5kZXggZDRmOGZiYS4uMGE4NzEyZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0NvbnN0cmFpbnRNYW5hZ2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0NvbnN0cmFpbnRNYW5hZ2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29uc3RyYWludE1hbmFnZXIuaCAtIENvbnN0cmFpbnRzIG9uIHN5bWJvbGljIHZhbHVlcy4gLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Db3JlRW5naW5lLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvQ29yZUVuZ2luZS5oCmluZGV4IDE3MzY5YTguLmEwMTY3OGUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Db3JlRW5naW5lLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0NvcmVFbmdpbmUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDb3JlRW5naW5lLmggLSBQYXRoLVNlbnNpdGl2ZSBEYXRhZmxvdyBFbmdpbmUgLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0R5bmFtaWNUeXBlSW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0R5bmFtaWNUeXBlSW5mby5oCmluZGV4IDA5MmUyM2MuLjliYjFlMjEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9EeW5hbWljVHlwZUluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvRHluYW1pY1R5cGVJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09IER5bmFtaWNUeXBlSW5mby5oIC0gUnVudGltZSB0eXBlIGluZm9ybWF0aW9uIC0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotLT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogI2lmbmRlZiBMTFZNX0NMQU5HX1NUQVRJQ0FOQUxZWkVSX0NPUkVfUEFUSFNFTlNJVElWRV9EWU5BTUlDVFlQRUlORk9fSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0R5bmFtaWNUeXBlTWFwLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvRHluYW1pY1R5cGVNYXAuaAppbmRleCAyZjhlYWQwLi42NjA4ZjI2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvRHluYW1pY1R5cGVNYXAuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvRHluYW1pY1R5cGVNYXAuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEeW5hbWljVHlwZU1hcC5oIC0gRHluYW1pYyB0eXBlIG1hcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzYsMTAgKzM1LDcgQEAKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgUHJvZ3JhbVN0YXRlVHJhaXQ8RHluYW1pY1R5cGVNYXA+CiAgICAgOiBwdWJsaWMgUHJvZ3JhbVN0YXRlUGFydGlhbFRyYWl0PER5bmFtaWNUeXBlTWFwSW1wbD4gewotICBzdGF0aWMgdm9pZCAqR0RNSW5kZXgoKSB7Ci0gICAgc3RhdGljIGludCBpbmRleCA9IDA7Ci0gICAgcmV0dXJuICZpbmRleDsKLSAgfQorICBzdGF0aWMgdm9pZCAqR0RNSW5kZXgoKTsKIH07CiAKIC8vLyBHZXQgZHluYW1pYyB0eXBlIGluZm9ybWF0aW9uIGZvciBhIHJlZ2lvbi4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9FbnZpcm9ubWVudC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0Vudmlyb25tZW50LmgKaW5kZXggNmQ0OTgwMy4uNmZjNTg5YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0Vudmlyb25tZW50LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0Vudmlyb25tZW50LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRW52aXJvbm1lbnQuaCAtIE1hcCBmcm9tIFN0bXQqIHRvIExvY2F0aW9ucy9WYWx1ZXMgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9FeHBsb2RlZEdyYXBoLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvRXhwbG9kZWRHcmFwaC5oCmluZGV4IGNmNDE2NGQuLjcyN2QwNGMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9FeHBsb2RlZEdyYXBoLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0V4cGxvZGVkR3JhcGguaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBFeHBsb2RlZEdyYXBoLmggLSBMb2NhbCwgUGF0aC1TZW5zLiAiRXhwbG9kZWQgR3JhcGgiIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjEwLDEwICsyMDksMTQgQEAKICAgICByZXR1cm4gY29uc3RfY2FzdDxFeHBsb2RlZE5vZGUqPih0aGlzKS0+Z2V0Rmlyc3RQcmVkKCk7CiAgIH0KIAotICBjb25zdCBFeHBsb2RlZE5vZGUgKmdldEZpcnN0U3VjYygpIGNvbnN0IHsKKyAgRXhwbG9kZWROb2RlICpnZXRGaXJzdFN1Y2MoKSB7CiAgICAgcmV0dXJuIHN1Y2NfZW1wdHkoKSA/IG51bGxwdHIgOiAqKHN1Y2NfYmVnaW4oKSk7CiAgIH0KIAorICBjb25zdCBFeHBsb2RlZE5vZGUgKmdldEZpcnN0U3VjYygpIGNvbnN0IHsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxFeHBsb2RlZE5vZGUqPih0aGlzKS0+Z2V0Rmlyc3RTdWNjKCk7CisgIH0KKwogICAvLyBJdGVyYXRvcnMgb3ZlciBzdWNjZXNzb3IgYW5kIHByZWRlY2Vzc29yIHZlcnRpY2VzLgogICB1c2luZyBzdWNjX2l0ZXJhdG9yID0gRXhwbG9kZWROb2RlICogY29uc3QgKjsKICAgdXNpbmcgY29uc3Rfc3VjY19pdGVyYXRvciA9IGNvbnN0IEV4cGxvZGVkTm9kZSAqIGNvbnN0ICo7CkBAIC0yNDMsOCArMjQ2LDEwIEBACiAgIGludDY0X3QgZ2V0SUQoRXhwbG9kZWRHcmFwaCAqRykgY29uc3Q7CiAKICAgLy8vIFRoZSBub2RlIGlzIHRyaXZpYWwgaWYgaXQgaGFzIG9ubHkgb25lIHN1Y2Nlc3Nvciwgb25seSBvbmUgcHJlZGVjZXNzb3IsCisgIC8vLyBpdCdzIHByZWRlY2Vzc29yIGhhcyBvbmx5IG9uZSBzdWNjZXNzb3IsCiAgIC8vLyBhbmQgaXRzIHByb2dyYW0gc3RhdGUgaXMgdGhlIHNhbWUgYXMgdGhlIHByb2dyYW0gc3RhdGUgb2YgdGhlIHByZXZpb3VzCiAgIC8vLyBub2RlLgorICAvLy8gVHJpdmlhbCBub2RlcyBtYXkgYmUgc2tpcHBlZCB3aGlsZSBwcmludGluZyBleHBsb2RlZCBncmFwaC4KICAgYm9vbCBpc1RyaXZpYWwoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTQ2MCw3ICs0NjUsNiBAQAogLy8gR3JhcGhUcmFpdHMKIAogbmFtZXNwYWNlIGxsdm0gewotCiAgIHRlbXBsYXRlIDw+IHN0cnVjdCBHcmFwaFRyYWl0czxjbGFuZzo6ZW50bzo6RXhwbG9kZWRHcmFwaCAqPiB7CiAgICAgdXNpbmcgR3JhcGhUeSA9IGNsYW5nOjplbnRvOjpFeHBsb2RlZEdyYXBoICo7CiAgICAgdXNpbmcgTm9kZVJlZiA9IGNsYW5nOjplbnRvOjpFeHBsb2RlZE5vZGUgKjsKQEAgLTQ3MSwxNyArNDc1LDE5IEBACiAgICAgICByZXR1cm4gKkctPnJvb3RzX2JlZ2luKCk7CiAgICAgfQogCisgICAgc3RhdGljIGJvb2wgcHJlZGVjZXNzb3JPZlRyaXZpYWwoTm9kZVJlZiBOKSB7CisgICAgICByZXR1cm4gTi0+c3VjY19zaXplKCkgPT0gMSAmJiBOLT5nZXRGaXJzdFN1Y2MoKS0+aXNUcml2aWFsKCk7CisgICAgfQorCiAgICAgc3RhdGljIENoaWxkSXRlcmF0b3JUeXBlIGNoaWxkX2JlZ2luKE5vZGVSZWYgTikgewotICAgICAgaWYgKE4tPnN1Y2Nfc2l6ZSgpID09IDEgJiYgKCpOLT5zdWNjX2JlZ2luKCkpLT5pc1RyaXZpYWwoKSkgeworICAgICAgaWYgKHByZWRlY2Vzc29yT2ZUcml2aWFsKE4pKQogICAgICAgICByZXR1cm4gY2hpbGRfYmVnaW4oKk4tPnN1Y2NfYmVnaW4oKSk7Ci0gICAgICB9CiAgICAgICByZXR1cm4gTi0+c3VjY19iZWdpbigpOwogICAgIH0KIAogICAgIHN0YXRpYyBDaGlsZEl0ZXJhdG9yVHlwZSBjaGlsZF9lbmQoTm9kZVJlZiBOKSB7Ci0gICAgICBpZiAoTi0+c3VjY19zaXplKCkgPT0gMSAmJiAoKk4tPnN1Y2NfYmVnaW4oKSktPmlzVHJpdmlhbCgpKSB7Ci0gICAgICAgIHJldHVybiBjaGlsZF9lbmQoKk4tPnN1Y2NfYmVnaW4oKSk7Ci0gICAgICB9CisgICAgICBpZiAocHJlZGVjZXNzb3JPZlRyaXZpYWwoTikpCisgICAgICAgIHJldHVybiBjaGlsZF9lbmQoTi0+Z2V0Rmlyc3RTdWNjKCkpOwogICAgICAgcmV0dXJuIE4tPnN1Y2NfZW5kKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvRXhwckVuZ2luZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0V4cHJFbmdpbmUuaAppbmRleCA5MWU0N2IzLi42MDVlMWM3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvRXhwckVuZ2luZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9FeHByRW5naW5lLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRXhwckVuZ2luZS5oIC0gUGF0aC1TZW5zaXRpdmUgRXhwcmVzc2lvbi1MZXZlbCBEYXRhZmxvdyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTEzMSw2ICsxMzAsOSBAQAogICAvLy8gU3ltTWdyIC0gT2JqZWN0IHRoYXQgbWFuYWdlcyB0aGUgc3ltYm9sIGluZm9ybWF0aW9uLgogICBTeW1ib2xNYW5hZ2VyICZTeW1NZ3I7CiAKKyAgLy8vIE1STWdyIC0gTWVtUmVnaW9uTWFuYWdlciBvYmplY3QgdGhhdCBjcmVhdGVzIG1lbW9yeSByZWdpb25zLgorICBNZW1SZWdpb25NYW5hZ2VyICZNUk1ncjsKKwogICAvLy8gc3ZhbEJ1aWxkZXIgLSBTVmFsQnVpbGRlciBvYmplY3QgdGhhdCBjcmVhdGVzIFNWYWxzIGZyb20gZXhwcmVzc2lvbnMuCiAgIFNWYWxCdWlsZGVyICZzdmFsQnVpbGRlcjsKIApAQCAtMTgwLDYgKzE4MiwxMCBAQAogCiAgIEFuYWx5c2lzTWFuYWdlciAmZ2V0QW5hbHlzaXNNYW5hZ2VyKCkgb3ZlcnJpZGUgeyByZXR1cm4gQU1ncjsgfQogCisgIEFuYWx5c2lzRGVjbENvbnRleHRNYW5hZ2VyICZnZXRBbmFseXNpc0RlY2xDb250ZXh0TWFuYWdlcigpIHsKKyAgICByZXR1cm4gQU1nci5nZXRBbmFseXNpc0RlY2xDb250ZXh0TWFuYWdlcigpOworICB9CisKICAgQ2hlY2tlck1hbmFnZXIgJmdldENoZWNrZXJNYW5hZ2VyKCkgY29uc3QgewogICAgIHJldHVybiAqQU1nci5nZXRDaGVja2VyTWFuYWdlcigpOwogICB9CkBAIC0zODcsOSArMzkzLDkgQEAKICAgICByZXR1cm4gU3RhdGVNZ3IuZ2V0QmFzaWNWYWxzKCk7CiAgIH0KIAotICAvLyBGSVhNRTogUmVtb3ZlIHdoZW4gd2UgbWlncmF0ZSBvdmVyIHRvIGp1c3QgdXNpbmcgVmFsdWVNYW5hZ2VyLgogICBTeW1ib2xNYW5hZ2VyICZnZXRTeW1ib2xNYW5hZ2VyKCkgeyByZXR1cm4gU3ltTWdyOyB9Ci0gIGNvbnN0IFN5bWJvbE1hbmFnZXIgJmdldFN5bWJvbE1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBTeW1NZ3I7IH0KKyAgTWVtUmVnaW9uTWFuYWdlciAmZ2V0UmVnaW9uTWFuYWdlcigpIHsgcmV0dXJuIE1STWdyOyB9CisKIAogICAvLyBGdW5jdGlvbnMgZm9yIGV4dGVybmFsIGNoZWNraW5nIG9mIHdoZXRoZXIgd2UgaGF2ZSB1bmZpbmlzaGVkIHdvcmsKICAgYm9vbCB3YXNCbG9ja3NFeGhhdXN0ZWQoKSBjb25zdCB7IHJldHVybiBFbmdpbmUud2FzQmxvY2tzRXhoYXVzdGVkKCk7IH0KQEAgLTgzMiw3ICs4MzgsNyBAQAogdGVtcGxhdGUgPD4KIHN0cnVjdCBQcm9ncmFtU3RhdGVUcmFpdDxSZXBsYXlXaXRob3V0SW5saW5pbmc+IDoKICAgcHVibGljIFByb2dyYW1TdGF0ZVBhcnRpYWxUcmFpdDxjb25zdCB2b2lkKj4gewotICBzdGF0aWMgdm9pZCAqR0RNSW5kZXgoKSB7IHN0YXRpYyBpbnQgaW5kZXggPSAwOyByZXR1cm4gJmluZGV4OyB9CisgIHN0YXRpYyB2b2lkICpHRE1JbmRleCgpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgZW50bwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0Z1bmN0aW9uU3VtbWFyeS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0Z1bmN0aW9uU3VtbWFyeS5oCmluZGV4IGI3MGZhYTEuLjUzYjRiZjYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9GdW5jdGlvblN1bW1hcnkuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvRnVuY3Rpb25TdW1tYXJ5LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRnVuY3Rpb25TdW1tYXJ5LmggLSBTdG9yZXMgc3VtbWFyaWVzIG9mIGZ1bmN0aW9ucy4gLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Mb29wVW5yb2xsaW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvTG9vcFVucm9sbGluZy5oCmluZGV4IGE0YzUwNWMuLmQyNWQyNjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Mb29wVW5yb2xsaW5nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0xvb3BVbnJvbGxpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIExvb3BVbnJvbGxpbmcuaCAtIFVucm9sbCBsb29wcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Mb29wV2lkZW5pbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Mb29wV2lkZW5pbmcuaAppbmRleCBmNDk0YzVkLi43NDg0YTUxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvTG9vcFdpZGVuaW5nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL0xvb3BXaWRlbmluZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gTG9vcFdpZGVuaW5nLmggLSBXaWRlbiBsb29wcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL01lbVJlZ2lvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL01lbVJlZ2lvbi5oCmluZGV4IDBiMGUzMmIuLjA3MWUzNTAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9NZW1SZWdpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvTWVtUmVnaW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09LSBNZW1SZWdpb24uaCAtIEFic3RyYWN0IG1lbW9yeSByZWdpb25zIGZvciBzdGF0aWMgYW5hbHlzaXMgLSotIEMrKyAtKi0tPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI0LDYgKzIzLDcgQEAKICNpbmNsdWRlICJjbGFuZy9BU1QvRXhwci5oIgogI2luY2x1ZGUgImNsYW5nL0FTVC9FeHByT2JqQy5oIgogI2luY2x1ZGUgImNsYW5nL0FTVC9UeXBlLmgiCisjaW5jbHVkZSAiY2xhbmcvQW5hbHlzaXMvQW5hbHlzaXNEZWNsQ29udGV4dC5oIgogI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0xMVk0uaCIKICNpbmNsdWRlICJjbGFuZy9CYXNpYy9Tb3VyY2VMb2NhdGlvbi5oIgogI2luY2x1ZGUgImNsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TVmFscy5oIgpAQCAtMTE4LDYgKzExOCwxMCBAQAogCiAgIGNvbnN0IE1lbVJlZ2lvbiAqZ2V0QmFzZVJlZ2lvbigpIGNvbnN0OwogCisgIC8vLyBSZWN1cnNpdmVseSByZXRyaWV2ZSB0aGUgcmVnaW9uIG9mIHRoZSBtb3N0IGRlcml2ZWQgY2xhc3MgaW5zdGFuY2Ugb2YKKyAgLy8vIHJlZ2lvbnMgb2YgQysrIGJhc2UgY2xhc3MgaW5zdGFuY2VzLgorICBjb25zdCBNZW1SZWdpb24gKmdldE1vc3REZXJpdmVkT2JqZWN0UmVnaW9uKCkgY29uc3Q7CisKICAgLy8vIENoZWNrIGlmIHRoZSByZWdpb24gaXMgYSBzdWJyZWdpb24gb2YgdGhlIGdpdmVuIHJlZ2lvbi4KICAgLy8vIEVhY2ggcmVnaW9uIGlzIGEgc3VicmVnaW9uIG9mIGl0c2VsZi4KICAgdmlydHVhbCBib29sIGlzU3ViUmVnaW9uT2YoY29uc3QgTWVtUmVnaW9uICpSKSBjb25zdDsKQEAgLTc2OSw5ICs3NzMsNiBAQAogICAgIGFzc2VydChzLT5nZXRUeXBlKCktPmlzQW55UG9pbnRlclR5cGUoKSB8fAogICAgICAgICAgICBzLT5nZXRUeXBlKCktPmlzUmVmZXJlbmNlVHlwZSgpIHx8CiAgICAgICAgICAgIHMtPmdldFR5cGUoKS0+aXNCbG9ja1BvaW50ZXJUeXBlKCkpOwotCi0gICAgLy8gcG9wdWxhdGVXb3JrbGlzdEZyb21TeW1ib2woKSByZWxpZXMgb24gdGhpcyBhc3NlcnRpb24sIGFuZCBuZWVkcyB0byBiZQotICAgIC8vIHVwZGF0ZWQgaWYgbW9yZSBjYXNlcyBhcmUgaW50cm9kdWNlZC4KICAgICBhc3NlcnQoaXNhPFVua25vd25TcGFjZVJlZ2lvbj4oc3JlZykgfHwgaXNhPEhlYXBTcGFjZVJlZ2lvbj4oc3JlZykpOwogICB9CiAKQEAgLTkwNyw3ICs5MDgsNyBAQAogICBEZWNsUmVnaW9uKGNvbnN0IFZhbHVlRGVjbCAqZCwgY29uc3QgTWVtUmVnaW9uICpzUmVnLCBLaW5kIGspCiAgICAgICA6IFR5cGVkVmFsdWVSZWdpb24oc1JlZywgayksIEQoZCkgewogICAgIGFzc2VydChjbGFzc29mKHRoaXMpKTsKLSAgICBhc3NlcnQoZCk7CisgICAgYXNzZXJ0KGQgJiYgZC0+aXNDYW5vbmljYWxEZWNsKCkpOwogICB9CiAKICAgc3RhdGljIHZvaWQgUHJvZmlsZVJlZ2lvbihsbHZtOjpGb2xkaW5nU2V0Tm9kZUlEJiBJRCwgY29uc3QgRGVjbCAqRCwKQEAgLTEwNzcsNyArMTA3OCw3IEBACiAgIHZvaWQgZHVtcCgpIGNvbnN0OwogfTsKIAotLy8vIEVsZW1lbnRSZWdpbiBpcyB1c2VkIHRvIHJlcHJlc2VudCBib3RoIGFycmF5IGVsZW1lbnRzIGFuZCBjYXN0cy4KKy8vLyBFbGVtZW50UmVnaW9uIGlzIHVzZWQgdG8gcmVwcmVzZW50IGJvdGggYXJyYXkgZWxlbWVudHMgYW5kIGNhc3RzLgogY2xhc3MgRWxlbWVudFJlZ2lvbiA6IHB1YmxpYyBUeXBlZFZhbHVlUmVnaW9uIHsKICAgZnJpZW5kIGNsYXNzIE1lbVJlZ2lvbk1hbmFnZXI7CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Qcm9ncmFtU3RhdGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Qcm9ncmFtU3RhdGUuaAppbmRleCAxM2Y1YjE0Li4zYjFjNjM4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvUHJvZ3JhbVN0YXRlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1Byb2dyYW1TdGF0ZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PSBQcm9ncmFtU3RhdGUuaCAtIFBhdGgtc2Vuc2l0aXZlICJTdGF0ZSIgZm9yIHRyYWNraW5nIHZhbHVlcyAtKi0gQysrIC0qLS09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zNDgsNiArMzQ3LDggQEAKICAgLy8vIGEgdmFsdWUgb2Ygc3VjaCB0eXBlLgogICBTVmFsIGdldFNWYWxBc1NjYWxhck9yTG9jKGNvbnN0IE1lbVJlZ2lvbiAqUikgY29uc3Q7CiAKKyAgdXNpbmcgcmVnaW9uX2l0ZXJhdG9yID0gY29uc3QgTWVtUmVnaW9uICoqOworCiAgIC8vLyBWaXNpdHMgdGhlIHN5bWJvbHMgcmVhY2hhYmxlIGZyb20gdGhlIGdpdmVuIFNWYWwgdXNpbmcgdGhlIHByb3ZpZGVkCiAgIC8vLyBTeW1ib2xWaXNpdG9yLgogICAvLy8KQEAgLTM1NywyNCArMzU4LDE0IEBACiAgIC8vLyBcc2EgU2NhblJlYWNoYWJsZVN5bWJvbHMKICAgYm9vbCBzY2FuUmVhY2hhYmxlU3ltYm9scyhTVmFsIHZhbCwgU3ltYm9sVmlzaXRvciYgdmlzaXRvcikgY29uc3Q7CiAKLSAgLy8vIFZpc2l0cyB0aGUgc3ltYm9scyByZWFjaGFibGUgZnJvbSB0aGUgU1ZhbHMgaW4gdGhlIGdpdmVuIHJhbmdlCi0gIC8vLyB1c2luZyB0aGUgcHJvdmlkZWQgU3ltYm9sVmlzaXRvci4KLSAgYm9vbCBzY2FuUmVhY2hhYmxlU3ltYm9scyhjb25zdCBTVmFsICpJLCBjb25zdCBTVmFsICpFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbFZpc2l0b3IgJnZpc2l0b3IpIGNvbnN0OwotCiAgIC8vLyBWaXNpdHMgdGhlIHN5bWJvbHMgcmVhY2hhYmxlIGZyb20gdGhlIHJlZ2lvbnMgaW4gdGhlIGdpdmVuCiAgIC8vLyBNZW1SZWdpb25zIHJhbmdlIHVzaW5nIHRoZSBwcm92aWRlZCBTeW1ib2xWaXNpdG9yLgotICBib29sIHNjYW5SZWFjaGFibGVTeW1ib2xzKGNvbnN0IE1lbVJlZ2lvbiAqIGNvbnN0ICpJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lbVJlZ2lvbiAqIGNvbnN0ICpFLAorICBib29sIHNjYW5SZWFjaGFibGVTeW1ib2xzKGxsdm06Oml0ZXJhdG9yX3JhbmdlPHJlZ2lvbl9pdGVyYXRvcj4gUmVhY2hhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbFZpc2l0b3IgJnZpc2l0b3IpIGNvbnN0OwogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDQj4gQ0Igc2NhblJlYWNoYWJsZVN5bWJvbHMoU1ZhbCB2YWwpIGNvbnN0OwotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ0I+IENCIHNjYW5SZWFjaGFibGVTeW1ib2xzKGNvbnN0IFNWYWwgKmJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVmFsICplbmQpIGNvbnN0OwotCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDQj4gQ0IKLSAgc2NhblJlYWNoYWJsZVN5bWJvbHMoY29uc3QgTWVtUmVnaW9uICogY29uc3QgKmJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVtUmVnaW9uICogY29uc3QgKmVuZCkgY29uc3Q7CisgIHNjYW5SZWFjaGFibGVTeW1ib2xzKGxsdm06Oml0ZXJhdG9yX3JhbmdlPHJlZ2lvbl9pdGVyYXRvcj4gUmVhY2hhYmxlKSBjb25zdDsKIAogICAvLy8gQ3JlYXRlIGEgbmV3IHN0YXRlIGluIHdoaWNoIHRoZSBzdGF0ZW1lbnQgaXMgbWFya2VkIGFzIHRhaW50ZWQuCiAgIExMVk1fTk9ESVNDQVJEIFByb2dyYW1TdGF0ZVJlZgpAQCAtNTYzLDE1ICs1NTQsMTUgQEAKICAgTWVtUmVnaW9uTWFuYWdlciYgZ2V0UmVnaW9uTWFuYWdlcigpIHsKICAgICByZXR1cm4gc3ZhbEJ1aWxkZXItPmdldFJlZ2lvbk1hbmFnZXIoKTsKICAgfQotICBjb25zdCBNZW1SZWdpb25NYW5hZ2VyJiBnZXRSZWdpb25NYW5hZ2VyKCkgY29uc3QgeworICBjb25zdCBNZW1SZWdpb25NYW5hZ2VyICZnZXRSZWdpb25NYW5hZ2VyKCkgY29uc3QgewogICAgIHJldHVybiBzdmFsQnVpbGRlci0+Z2V0UmVnaW9uTWFuYWdlcigpOwogICB9CiAKICAgQ2FsbEV2ZW50TWFuYWdlciAmZ2V0Q2FsbEV2ZW50TWFuYWdlcigpIHsgcmV0dXJuICpDYWxsRXZlbnRNZ3I7IH0KIAotICBTdG9yZU1hbmFnZXImIGdldFN0b3JlTWFuYWdlcigpIHsgcmV0dXJuICpTdG9yZU1ncjsgfQotICBDb25zdHJhaW50TWFuYWdlciYgZ2V0Q29uc3RyYWludE1hbmFnZXIoKSB7IHJldHVybiAqQ29uc3RyYWludE1ncjsgfQotICBTdWJFbmdpbmUqIGdldE93bmluZ0VuZ2luZSgpIHsgcmV0dXJuIEVuZzsgfQorICBTdG9yZU1hbmFnZXIgJmdldFN0b3JlTWFuYWdlcigpIHsgcmV0dXJuICpTdG9yZU1ncjsgfQorICBDb25zdHJhaW50TWFuYWdlciAmZ2V0Q29uc3RyYWludE1hbmFnZXIoKSB7IHJldHVybiAqQ29uc3RyYWludE1ncjsgfQorICBTdWJFbmdpbmUgJmdldE93bmluZ0VuZ2luZSgpIHsgcmV0dXJuICpFbmc7IH0KIAogICBQcm9ncmFtU3RhdGVSZWYgcmVtb3ZlRGVhZEJpbmRpbmdzKFByb2dyYW1TdGF0ZVJlZiBTdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0YWNrRnJhbWVDb250ZXh0ICpMQ3R4LApAQCAtODgzLDE3ICs4NzQsMTAgQEAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENCPgotQ0IgUHJvZ3JhbVN0YXRlOjpzY2FuUmVhY2hhYmxlU3ltYm9scyhjb25zdCBTVmFsICpiZWcsIGNvbnN0IFNWYWwgKmVuZCkgY29uc3QgeworQ0IgUHJvZ3JhbVN0YXRlOjpzY2FuUmVhY2hhYmxlU3ltYm9scygKKyAgICBsbHZtOjppdGVyYXRvcl9yYW5nZTxyZWdpb25faXRlcmF0b3I+IFJlYWNoYWJsZSkgY29uc3QgewogICBDQiBjYih0aGlzKTsKLSAgc2NhblJlYWNoYWJsZVN5bWJvbHMoYmVnLCBlbmQsIGNiKTsKLSAgcmV0dXJuIGNiOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ0I+Ci1DQiBQcm9ncmFtU3RhdGU6OnNjYW5SZWFjaGFibGVTeW1ib2xzKGNvbnN0IE1lbVJlZ2lvbiAqIGNvbnN0ICpiZWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZW1SZWdpb24gKiBjb25zdCAqZW5kKSBjb25zdCB7Ci0gIENCIGNiKHRoaXMpOwotICBzY2FuUmVhY2hhYmxlU3ltYm9scyhiZWcsIGVuZCwgY2IpOworICBzY2FuUmVhY2hhYmxlU3ltYm9scyhSZWFjaGFibGUsIGNiKTsKICAgcmV0dXJuIGNiOwogfQogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvUHJvZ3JhbVN0YXRlVHJhaXQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Qcm9ncmFtU3RhdGVUcmFpdC5oCmluZGV4IDY0ZGU3MzYuLmRhODJhNTUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Qcm9ncmFtU3RhdGVUcmFpdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Qcm9ncmFtU3RhdGVUcmFpdC5oCkBAIC0xLDkgKzEsOCBAQAogLy9Qcm9ncmFtU3RhdGVUcmFpdC5oIC0gUGFydGlhbCBpbXBsZW1lbnRhdGlvbnMgb2YgUHJvZ3JhbVN0YXRlVHJhaXQgLSotIEMrKyAtKi0KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvUHJvZ3JhbVN0YXRlX0Z3ZC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1Byb2dyYW1TdGF0ZV9Gd2QuaAppbmRleCA0MTViYjc3Li4wZWEyNmJmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvUHJvZ3JhbVN0YXRlX0Z3ZC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Qcm9ncmFtU3RhdGVfRndkLmgKQEAgLTEsOSArMSw4IEBACiAvLz09IFByb2dyYW1TdGF0ZV9Gd2QuaCAtIEluY29tcGxldGUgZGVjbGFyYXRpb25zIG9mIFByb2dyYW1TdGF0ZSAtKi0gQysrIC0qLS09LwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvUmFuZ2VkQ29uc3RyYWludE1hbmFnZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9SYW5nZWRDb25zdHJhaW50TWFuYWdlci5oCmluZGV4IGQyYmExZjcuLjE2YzMwZWMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9SYW5nZWRDb25zdHJhaW50TWFuYWdlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9SYW5nZWRDb25zdHJhaW50TWFuYWdlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PSBSYW5nZWRDb25zdHJhaW50TWFuYWdlci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMzEsNyArMTMwLDcgQEAKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgUHJvZ3JhbVN0YXRlVHJhaXQ8Q29uc3RyYWludFJhbmdlPgogICA6IHB1YmxpYyBQcm9ncmFtU3RhdGVQYXJ0aWFsVHJhaXQ8Q29uc3RyYWludFJhbmdlVHk+IHsKLSAgc3RhdGljIHZvaWQgKkdETUluZGV4KCkgeyBzdGF0aWMgaW50IEluZGV4OyByZXR1cm4gJkluZGV4OyB9CisgIHN0YXRpYyB2b2lkICpHRE1JbmRleCgpOwogfTsKIAogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvUmVnaW9ucy5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvUmVnaW9ucy5kZWYKaW5kZXggMTBmODllYy4uM2M1MmMyYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1JlZ2lvbnMuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9SZWdpb25zLmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gUmVnaW9ucy5kZWYgLSBNZXRhZGF0YSBhYm91dCBNZW1SZWdpb24ga2luZHMgLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NNVFNvbHZlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NNVEFQSS5oCnNpbWlsYXJpdHkgaW5kZXggNzMlCnJlbmFtZSBmcm9tIGxpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TTVRTb2x2ZXIuaApyZW5hbWUgdG8gbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NNVEFQSS5oCmluZGV4IDYyZDFkNjUuLjUxNjQ4OTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TTVRTb2x2ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU01UQVBJLmgKQEAgLTEsOSArMSw4IEBACi0vLz09IFNNVFNvbHZlci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi0tPT0vLworLy89PT0tIFNNVEFQSS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNSwxMyArMTQsMTE5IEBACiAjaWZuZGVmIExMVk1fQ0xBTkdfU1RBVElDQU5BTFlaRVJfQ09SRV9QQVRIU0VOU0lUSVZFX1NNVFNPTFZFUl9ICiAjZGVmaW5lIExMVk1fQ0xBTkdfU1RBVElDQU5BTFlaRVJfQ09SRV9QQVRIU0VOU0lUSVZFX1NNVFNPTFZFUl9ICiAKLSNpbmNsdWRlICJjbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU01URXhwci5oIgotI2luY2x1ZGUgImNsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TTVRTb3J0LmgiCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvVGFyZ2V0SW5mby5oIgogI2luY2x1ZGUgImxsdm0vQURUL0FQU0ludC5oIgorI2luY2x1ZGUgImxsdm0vQURUL0ZvbGRpbmdTZXQuaCIKIAogbmFtZXNwYWNlIGNsYW5nIHsKIG5hbWVzcGFjZSBlbnRvIHsKIAorLy8vIEdlbmVyaWMgYmFzZSBjbGFzcyBmb3IgU01UIHNvcnRzCitjbGFzcyBTTVRTb3J0IHsKK3B1YmxpYzoKKyAgU01UU29ydCgpID0gZGVmYXVsdDsKKyAgdmlydHVhbCB+U01UU29ydCgpID0gZGVmYXVsdDsKKworICAvLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzb3J0IGlzIGEgYml0dmVjdG9yLCBjYWxscyBpc0JpdHZlY3RvclNvcnRJbXBsKCkuCisgIHZpcnR1YWwgYm9vbCBpc0JpdHZlY3RvclNvcnQoKSBjb25zdCB7IHJldHVybiBpc0JpdHZlY3RvclNvcnRJbXBsKCk7IH0KKworICAvLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzb3J0IGlzIGEgZmxvYXRpbmctcG9pbnQsIGNhbGxzIGlzRmxvYXRTb3J0SW1wbCgpLgorICB2aXJ0dWFsIGJvb2wgaXNGbG9hdFNvcnQoKSBjb25zdCB7IHJldHVybiBpc0Zsb2F0U29ydEltcGwoKTsgfQorCisgIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHNvcnQgaXMgYSBib29sZWFuLCBjYWxscyBpc0Jvb2xlYW5Tb3J0SW1wbCgpLgorICB2aXJ0dWFsIGJvb2wgaXNCb29sZWFuU29ydCgpIGNvbnN0IHsgcmV0dXJuIGlzQm9vbGVhblNvcnRJbXBsKCk7IH0KKworICAvLy8gUmV0dXJucyB0aGUgYml0dmVjdG9yIHNpemUsIGZhaWxzIGlmIHRoZSBzb3J0IGlzIG5vdCBhIGJpdHZlY3RvcgorICAvLy8gQ2FsbHMgZ2V0Qml0dmVjdG9yU29ydFNpemVJbXBsKCkuCisgIHZpcnR1YWwgdW5zaWduZWQgZ2V0Qml0dmVjdG9yU29ydFNpemUoKSBjb25zdCB7CisgICAgYXNzZXJ0KGlzQml0dmVjdG9yU29ydCgpICYmICJOb3QgYSBiaXR2ZWN0b3Igc29ydCEiKTsKKyAgICB1bnNpZ25lZCBTaXplID0gZ2V0Qml0dmVjdG9yU29ydFNpemVJbXBsKCk7CisgICAgYXNzZXJ0KFNpemUgJiYgIlNpemUgaXMgemVybyEiKTsKKyAgICByZXR1cm4gU2l6ZTsKKyAgfTsKKworICAvLy8gUmV0dXJucyB0aGUgZmxvYXRpbmctcG9pbnQgc2l6ZSwgZmFpbHMgaWYgdGhlIHNvcnQgaXMgbm90IGEgZmxvYXRpbmctcG9pbnQKKyAgLy8vIENhbGxzIGdldEZsb2F0U29ydFNpemVJbXBsKCkuCisgIHZpcnR1YWwgdW5zaWduZWQgZ2V0RmxvYXRTb3J0U2l6ZSgpIGNvbnN0IHsKKyAgICBhc3NlcnQoaXNGbG9hdFNvcnQoKSAmJiAiTm90IGEgZmxvYXRpbmctcG9pbnQgc29ydCEiKTsKKyAgICB1bnNpZ25lZCBTaXplID0gZ2V0RmxvYXRTb3J0U2l6ZUltcGwoKTsKKyAgICBhc3NlcnQoU2l6ZSAmJiAiU2l6ZSBpcyB6ZXJvISIpOworICAgIHJldHVybiBTaXplOworICB9OworCisgIHZpcnR1YWwgdm9pZCBQcm9maWxlKGxsdm06OkZvbGRpbmdTZXROb2RlSUQgJklEKSBjb25zdCA9IDA7CisKKyAgYm9vbCBvcGVyYXRvcjwoY29uc3QgU01UU29ydCAmT3RoZXIpIGNvbnN0IHsKKyAgICBsbHZtOjpGb2xkaW5nU2V0Tm9kZUlEIElEMSwgSUQyOworICAgIFByb2ZpbGUoSUQxKTsKKyAgICBPdGhlci5Qcm9maWxlKElEMik7CisgICAgcmV0dXJuIElEMSA8IElEMjsKKyAgfQorCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oU01UU29ydCBjb25zdCAmTEhTLCBTTVRTb3J0IGNvbnN0ICZSSFMpIHsKKyAgICByZXR1cm4gTEhTLmVxdWFsX3RvKFJIUyk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgcHJpbnQocmF3X29zdHJlYW0gJk9TKSBjb25zdCA9IDA7CisKKyAgTExWTV9EVU1QX01FVEhPRCB2b2lkIGR1bXAoKSBjb25zdCB7IHByaW50KGxsdm06OmVycnMoKSk7IH0KKworcHJvdGVjdGVkOgorICAvLy8gUXVlcnkgdGhlIFNNVCBzb2x2ZXIgYW5kIHJldHVybnMgdHJ1ZSBpZiB0d28gc29ydHMgYXJlIGVxdWFsIChzYW1lIGtpbmQKKyAgLy8vIGFuZCBiaXQgd2lkdGgpLiBUaGlzIGRvZXMgbm90IGNoZWNrIGlmIHRoZSB0d28gc29ydHMgYXJlIHRoZSBzYW1lIG9iamVjdHMuCisgIHZpcnR1YWwgYm9vbCBlcXVhbF90byhTTVRTb3J0IGNvbnN0ICZvdGhlcikgY29uc3QgPSAwOworCisgIC8vLyBRdWVyeSB0aGUgU01UIHNvbHZlciBhbmQgY2hlY2tzIGlmIGEgc29ydCBpcyBiaXR2ZWN0b3IuCisgIHZpcnR1YWwgYm9vbCBpc0JpdHZlY3RvclNvcnRJbXBsKCkgY29uc3QgPSAwOworCisgIC8vLyBRdWVyeSB0aGUgU01UIHNvbHZlciBhbmQgY2hlY2tzIGlmIGEgc29ydCBpcyBmbG9hdGluZy1wb2ludC4KKyAgdmlydHVhbCBib29sIGlzRmxvYXRTb3J0SW1wbCgpIGNvbnN0ID0gMDsKKworICAvLy8gUXVlcnkgdGhlIFNNVCBzb2x2ZXIgYW5kIGNoZWNrcyBpZiBhIHNvcnQgaXMgYm9vbGVhbi4KKyAgdmlydHVhbCBib29sIGlzQm9vbGVhblNvcnRJbXBsKCkgY29uc3QgPSAwOworCisgIC8vLyBRdWVyeSB0aGUgU01UIHNvbHZlciBhbmQgcmV0dXJucyB0aGUgc29ydCBiaXQgd2lkdGguCisgIHZpcnR1YWwgdW5zaWduZWQgZ2V0Qml0dmVjdG9yU29ydFNpemVJbXBsKCkgY29uc3QgPSAwOworCisgIC8vLyBRdWVyeSB0aGUgU01UIHNvbHZlciBhbmQgcmV0dXJucyB0aGUgc29ydCBiaXQgd2lkdGguCisgIHZpcnR1YWwgdW5zaWduZWQgZ2V0RmxvYXRTb3J0U2l6ZUltcGwoKSBjb25zdCA9IDA7Cit9OworCisvLy8gU2hhcmVkIHBvaW50ZXIgZm9yIFNNVFNvcnRzLCB1c2VkIGJ5IFNNVFNvbHZlciBBUEkuCit1c2luZyBTTVRTb3J0UmVmID0gY29uc3QgU01UU29ydCAqOworCisvLy8gR2VuZXJpYyBiYXNlIGNsYXNzIGZvciBTTVQgZXhwcnMKK2NsYXNzIFNNVEV4cHIgeworcHVibGljOgorICBTTVRFeHByKCkgPSBkZWZhdWx0OworICB2aXJ0dWFsIH5TTVRFeHByKCkgPSBkZWZhdWx0OworCisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFNNVEV4cHIgJk90aGVyKSBjb25zdCB7CisgICAgbGx2bTo6Rm9sZGluZ1NldE5vZGVJRCBJRDEsIElEMjsKKyAgICBQcm9maWxlKElEMSk7CisgICAgT3RoZXIuUHJvZmlsZShJRDIpOworICAgIHJldHVybiBJRDEgPCBJRDI7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgUHJvZmlsZShsbHZtOjpGb2xkaW5nU2V0Tm9kZUlEICZJRCkgY29uc3QgPSAwOworCisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oU01URXhwciBjb25zdCAmTEhTLCBTTVRFeHByIGNvbnN0ICZSSFMpIHsKKyAgICByZXR1cm4gTEhTLmVxdWFsX3RvKFJIUyk7CisgIH0KKworICB2aXJ0dWFsIHZvaWQgcHJpbnQocmF3X29zdHJlYW0gJk9TKSBjb25zdCA9IDA7CisKKyAgTExWTV9EVU1QX01FVEhPRCB2b2lkIGR1bXAoKSBjb25zdCB7IHByaW50KGxsdm06OmVycnMoKSk7IH0KKworcHJvdGVjdGVkOgorICAvLy8gUXVlcnkgdGhlIFNNVCBzb2x2ZXIgYW5kIHJldHVybnMgdHJ1ZSBpZiB0d28gc29ydHMgYXJlIGVxdWFsIChzYW1lIGtpbmQKKyAgLy8vIGFuZCBiaXQgd2lkdGgpLiBUaGlzIGRvZXMgbm90IGNoZWNrIGlmIHRoZSB0d28gc29ydHMgYXJlIHRoZSBzYW1lIG9iamVjdHMuCisgIHZpcnR1YWwgYm9vbCBlcXVhbF90byhTTVRFeHByIGNvbnN0ICZvdGhlcikgY29uc3QgPSAwOworfTsKKworLy8vIFNoYXJlZCBwb2ludGVyIGZvciBTTVRFeHBycywgdXNlZCBieSBTTVRTb2x2ZXIgQVBJLgordXNpbmcgU01URXhwclJlZiA9IGNvbnN0IFNNVEV4cHIgKjsKKwogLy8vIEdlbmVyaWMgYmFzZSBjbGFzcyBmb3IgU01UIFNvbHZlcnMKIC8vLwogLy8vIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIHdyYXBwaW5nIGFsbCBzb3J0cyBhbmQgZXhwcmVzc2lvbiBnZW5lcmF0aW9uLApAQCAtNzEsOSArMTc2LDYgQEAKICAgLy8gUmV0dXJucyBhbiBhcHByb3ByaWF0ZSBzb3J0IGZvciB0aGUgZ2l2ZW4gQVNULgogICB2aXJ0dWFsIFNNVFNvcnRSZWYgZ2V0U29ydChjb25zdCBTTVRFeHByUmVmICZBU1QpID0gMDsKIAotICAvLyBSZXR1cm5zIGEgbmV3IFNNVEV4cHJSZWYgZnJvbSBhbiBTTVRFeHByCi0gIHZpcnR1YWwgU01URXhwclJlZiBuZXdFeHByUmVmKGNvbnN0IFNNVEV4cHIgJkUpIGNvbnN0ID0gMDsKLQogICAvLy8gR2l2ZW4gYSBjb25zdHJhaW50LCBhZGRzIGl0IHRvIHRoZSBzb2x2ZXIKICAgdmlydHVhbCB2b2lkIGFkZENvbnN0cmFpbnQoY29uc3QgU01URXhwclJlZiAmRXhwKSBjb25zdCA9IDA7CiAKQEAgLTI4Myw3ICszODUsMTAgQEAKICAgdmlydHVhbCB2b2lkIHBvcCh1bnNpZ25lZCBOdW1TdGF0ZXMgPSAxKSA9IDA7CiAKICAgLy8vIFJlc2V0IHRoZSBzb2x2ZXIgYW5kIHJlbW92ZSBhbGwgY29uc3RyYWludHMuCi0gIHZpcnR1YWwgdm9pZCByZXNldCgpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCB2b2lkIHJlc2V0KCkgPSAwOworCisgIC8vLyBDaGVja3MgaWYgdGhlIHNvbHZlciBzdXBwb3J0cyBmbG9hdGluZy1wb2ludHMuCisgIHZpcnR1YWwgYm9vbCBpc0ZQU3VwcG9ydGVkKCkgPSAwOwogCiAgIHZpcnR1YWwgdm9pZCBwcmludChyYXdfb3N0cmVhbSAmT1MpIGNvbnN0ID0gMDsKIH07CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU01UQ29uc3RyYWludE1hbmFnZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TTVRDb25zdHJhaW50TWFuYWdlci5oCmluZGV4IGRiMDViZGEuLjcyZjM2MDEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TTVRDb25zdHJhaW50TWFuYWdlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TTVRDb25zdHJhaW50TWFuYWdlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PSBTTVRDb25zdHJhaW50TWFuYWdlci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xOCwxNyArMTcsMjAgQEAKICNpbmNsdWRlICJjbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvUmFuZ2VkQ29uc3RyYWludE1hbmFnZXIuaCIKICNpbmNsdWRlICJjbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU01UQ29udi5oIgogCit0eXBlZGVmIGxsdm06OkltbXV0YWJsZVNldDwKKyAgICBzdGQ6OnBhaXI8Y2xhbmc6OmVudG86OlN5bWJvbFJlZiwgY29uc3QgY2xhbmc6OmVudG86OlNNVEV4cHIgKj4+CisgICAgQ29uc3RyYWludFNNVFR5cGU7CitSRUdJU1RFUl9UUkFJVF9XSVRIX1BST0dSQU1TVEFURShDb25zdHJhaW50U01ULCBDb25zdHJhaW50U01UVHlwZSkKKwogbmFtZXNwYWNlIGNsYW5nIHsKIG5hbWVzcGFjZSBlbnRvIHsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnN0cmFpbnRTTVQsIHR5cGVuYW1lIFNNVEV4cHJUeT4KIGNsYXNzIFNNVENvbnN0cmFpbnRNYW5hZ2VyIDogcHVibGljIGNsYW5nOjplbnRvOjpTaW1wbGVDb25zdHJhaW50TWFuYWdlciB7Ci0gIFNNVFNvbHZlclJlZiAmU29sdmVyOworICBtdXRhYmxlIFNNVFNvbHZlclJlZiBTb2x2ZXIgPSBDcmVhdGVaM1NvbHZlcigpOwogCiBwdWJsaWM6Ci0gIFNNVENvbnN0cmFpbnRNYW5hZ2VyKGNsYW5nOjplbnRvOjpTdWJFbmdpbmUgKlNFLCBjbGFuZzo6ZW50bzo6U1ZhbEJ1aWxkZXIgJlNCLAotICAgICAgICAgICAgICAgICAgICAgICBTTVRTb2x2ZXJSZWYgJlMpCi0gICAgICA6IFNpbXBsZUNvbnN0cmFpbnRNYW5hZ2VyKFNFLCBTQiksIFNvbHZlcihTKSB7fQorICBTTVRDb25zdHJhaW50TWFuYWdlcihjbGFuZzo6ZW50bzo6U3ViRW5naW5lICpTRSwgY2xhbmc6OmVudG86OlNWYWxCdWlsZGVyICZTQikKKyAgICAgIDogU2ltcGxlQ29uc3RyYWludE1hbmFnZXIoU0UsIFNCKSB7fQogICB2aXJ0dWFsIH5TTVRDb25zdHJhaW50TWFuYWdlcigpID0gZGVmYXVsdDsKIAogICAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCkBAIC0xOTgsNyArMjAwLDcgQEAKICAgICBhdXRvICZDWkZhY3RvcnkgPSBTdGF0ZS0+Z2V0X2NvbnRleHQ8Q29uc3RyYWludFNNVD4oKTsKIAogICAgIGZvciAoYXV0byBJID0gQ1ouYmVnaW4oKSwgRSA9IENaLmVuZCgpOyBJICE9IEU7ICsrSSkgewotICAgICAgaWYgKFN5bVJlYXBlci5tYXliZURlYWQoSS0+Zmlyc3QpKQorICAgICAgaWYgKFN5bVJlYXBlci5pc0RlYWQoSS0+Zmlyc3QpKQogICAgICAgICBDWiA9IENaRmFjdG9yeS5yZW1vdmUoQ1osICpJKTsKICAgICB9CiAKQEAgLTIxMywxMSArMjE1LDU3IEBACiAgICAgT1MgPDwgbmwgPDwgc2VwIDw8ICJDb25zdHJhaW50czoiOwogICAgIGZvciAoYXV0byBJID0gQ1ouYmVnaW4oKSwgRSA9IENaLmVuZCgpOyBJICE9IEU7ICsrSSkgewogICAgICAgT1MgPDwgbmwgPDwgJyAnIDw8IEktPmZpcnN0IDw8ICIgOiAiOwotICAgICAgSS0+c2Vjb25kLnByaW50KE9TKTsKKyAgICAgIEktPnNlY29uZC0+cHJpbnQoT1MpOwogICAgIH0KICAgICBPUyA8PCBubDsKICAgfQogCisgIGJvb2wgY2FuUmVhc29uQWJvdXQoU1ZhbCBYKSBjb25zdCBvdmVycmlkZSB7CisgICAgY29uc3QgVGFyZ2V0SW5mbyAmVEkgPSBnZXRCYXNpY1ZhbHMoKS5nZXRDb250ZXh0KCkuZ2V0VGFyZ2V0SW5mbygpOworCisgICAgT3B0aW9uYWw8bm9ubG9jOjpTeW1ib2xWYWw+IFN5bVZhbCA9IFguZ2V0QXM8bm9ubG9jOjpTeW1ib2xWYWw+KCk7CisgICAgaWYgKCFTeW1WYWwpCisgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNvbnN0IFN5bUV4cHIgKlN5bSA9IFN5bVZhbC0+Z2V0U3ltYm9sKCk7CisgICAgUXVhbFR5cGUgVHkgPSBTeW0tPmdldFR5cGUoKTsKKworICAgIC8vIENvbXBsZXggdHlwZXMgYXJlIG5vdCBtb2RlbGVkCisgICAgaWYgKFR5LT5pc0NvbXBsZXhUeXBlKCkgfHwgVHktPmlzQ29tcGxleEludGVnZXJUeXBlKCkpCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBOb24tSUVFRSA3NTQgZmxvYXRpbmctcG9pbnQgdHlwZXMgYXJlIG5vdCBtb2RlbGVkCisgICAgaWYgKChUeS0+aXNTcGVjaWZpY0J1aWx0aW5UeXBlKEJ1aWx0aW5UeXBlOjpMb25nRG91YmxlKSAmJgorICAgICAgICAgKCZUSS5nZXRMb25nRG91YmxlRm9ybWF0KCkgPT0gJmxsdm06OkFQRmxvYXQ6Ong4N0RvdWJsZUV4dGVuZGVkKCkgfHwKKyAgICAgICAgICAmVEkuZ2V0TG9uZ0RvdWJsZUZvcm1hdCgpID09ICZsbHZtOjpBUEZsb2F0OjpQUENEb3VibGVEb3VibGUoKSkpKQorICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKFR5LT5pc1JlYWxGbG9hdGluZ1R5cGUoKSkKKyAgICAgIHJldHVybiBTb2x2ZXItPmlzRlBTdXBwb3J0ZWQoKTsKKworICAgIGlmIChpc2E8U3ltYm9sRGF0YT4oU3ltKSkKKyAgICAgIHJldHVybiB0cnVlOworCisgICAgU1ZhbEJ1aWxkZXIgJlNWQiA9IGdldFNWYWxCdWlsZGVyKCk7CisKKyAgICBpZiAoY29uc3QgU3ltYm9sQ2FzdCAqU0MgPSBkeW5fY2FzdDxTeW1ib2xDYXN0PihTeW0pKQorICAgICAgcmV0dXJuIGNhblJlYXNvbkFib3V0KFNWQi5tYWtlU3ltYm9sVmFsKFNDLT5nZXRPcGVyYW5kKCkpKTsKKworICAgIGlmIChjb25zdCBCaW5hcnlTeW1FeHByICpCU0UgPSBkeW5fY2FzdDxCaW5hcnlTeW1FeHByPihTeW0pKSB7CisgICAgICBpZiAoY29uc3QgU3ltSW50RXhwciAqU0lFID0gZHluX2Nhc3Q8U3ltSW50RXhwcj4oQlNFKSkKKyAgICAgICAgcmV0dXJuIGNhblJlYXNvbkFib3V0KFNWQi5tYWtlU3ltYm9sVmFsKFNJRS0+Z2V0TEhTKCkpKTsKKworICAgICAgaWYgKGNvbnN0IEludFN5bUV4cHIgKklTRSA9IGR5bl9jYXN0PEludFN5bUV4cHI+KEJTRSkpCisgICAgICAgIHJldHVybiBjYW5SZWFzb25BYm91dChTVkIubWFrZVN5bWJvbFZhbChJU0UtPmdldFJIUygpKSk7CisKKyAgICAgIGlmIChjb25zdCBTeW1TeW1FeHByICpTU0UgPSBkeW5fY2FzdDxTeW1TeW1FeHByPihCU0UpKQorICAgICAgICByZXR1cm4gY2FuUmVhc29uQWJvdXQoU1ZCLm1ha2VTeW1ib2xWYWwoU1NFLT5nZXRMSFMoKSkpICYmCisgICAgICAgICAgICAgICBjYW5SZWFzb25BYm91dChTVkIubWFrZVN5bWJvbFZhbChTU0UtPmdldFJIUygpKSk7CisgICAgfQorCisgICAgbGx2bV91bnJlYWNoYWJsZSgiVW5zdXBwb3J0ZWQgZXhwcmVzc2lvbiB0byByZWFzb24gYWJvdXQhIik7CisgIH0KKwogICAvLy8gRHVtcHMgU01UIGZvcm11bGEKICAgTExWTV9EVU1QX01FVEhPRCB2b2lkIGR1bXAoKSBjb25zdCB7IFNvbHZlci0+ZHVtcCgpOyB9CiAKQEAgLTIyNyw4ICsyNzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNNVEV4cHJSZWYgJkV4cCkgewogICAgIC8vIENoZWNrIHRoZSBtb2RlbCwgYXZvaWQgc2ltcGxpZnlpbmcgQVNUIHRvIHNhdmUgdGltZQogICAgIGlmIChjaGVja01vZGVsKFN0YXRlLCBTeW0sIEV4cCkuaXNDb25zdHJhaW5lZFRydWUoKSkKLSAgICAgIHJldHVybiBTdGF0ZS0+YWRkPENvbnN0cmFpbnRTTVQ+KAotICAgICAgICAgIHN0ZDo6bWFrZV9wYWlyKFN5bSwgc3RhdGljX2Nhc3Q8Y29uc3QgU01URXhwclR5ICY+KCpFeHApKSk7CisgICAgICByZXR1cm4gU3RhdGUtPmFkZDxDb25zdHJhaW50U01UPihzdGQ6Om1ha2VfcGFpcihTeW0sIEV4cCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KQEAgLTI0NCw5ICsyOTEsOSBAQAogICAgIGlmIChJICE9IElFKSB7CiAgICAgICBzdGQ6OnZlY3RvcjxTTVRFeHByUmVmPiBBU1RzOwogCi0gICAgICBTTVRFeHByUmVmIENvbnN0cmFpbnQgPSBTb2x2ZXItPm5ld0V4cHJSZWYoSSsrLT5zZWNvbmQpOworICAgICAgU01URXhwclJlZiBDb25zdHJhaW50ID0gSSsrLT5zZWNvbmQ7CiAgICAgICB3aGlsZSAoSSAhPSBJRSkgewotICAgICAgICBDb25zdHJhaW50ID0gU29sdmVyLT5ta0FuZChDb25zdHJhaW50LCBTb2x2ZXItPm5ld0V4cHJSZWYoSSsrLT5zZWNvbmQpKTsKKyAgICAgICAgQ29uc3RyYWludCA9IFNvbHZlci0+bWtBbmQoQ29uc3RyYWludCwgSSsrLT5zZWNvbmQpOwogICAgICAgfQogCiAgICAgICBTb2x2ZXItPmFkZENvbnN0cmFpbnQoQ29uc3RyYWludCk7CkBAIC0yNTYsOCArMzAzLDggQEAKICAgLy8gR2VuZXJhdGUgYW5kIGNoZWNrIGEgWjMgbW9kZWwsIHVzaW5nIHRoZSBnaXZlbiBjb25zdHJhaW50LgogICBDb25kaXRpb25UcnV0aFZhbCBjaGVja01vZGVsKFByb2dyYW1TdGF0ZVJlZiBTdGF0ZSwgU3ltYm9sUmVmIFN5bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTTVRFeHByUmVmICZFeHApIGNvbnN0IHsKLSAgICBQcm9ncmFtU3RhdGVSZWYgTmV3U3RhdGUgPSBTdGF0ZS0+YWRkPENvbnN0cmFpbnRTTVQ+KAotICAgICAgICBzdGQ6Om1ha2VfcGFpcihTeW0sIHN0YXRpY19jYXN0PGNvbnN0IFNNVEV4cHJUeSAmPigqRXhwKSkpOworICAgIFByb2dyYW1TdGF0ZVJlZiBOZXdTdGF0ZSA9CisgICAgICAgIFN0YXRlLT5hZGQ8Q29uc3RyYWludFNNVD4oc3RkOjptYWtlX3BhaXIoU3ltLCBFeHApKTsKIAogICAgIGxsdm06OkZvbGRpbmdTZXROb2RlSUQgSUQ7CiAgICAgTmV3U3RhdGUtPmdldDxDb25zdHJhaW50U01UPigpLlByb2ZpbGUoSUQpOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NNVENvbnYuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TTVRDb252LmgKaW5kZXggY2RjYTJhMC4uZjUxNDU2OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NNVENvbnYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU01UQ29udi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PSBTTVRDb252LmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNiw3ICsxNSw3IEBACiAKICNpbmNsdWRlICJjbGFuZy9BU1QvRXhwci5oIgogI2luY2x1ZGUgImNsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9BUFNJbnRUeXBlLmgiCi0jaW5jbHVkZSAiY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NNVFNvbHZlci5oIgorI2luY2x1ZGUgImNsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TTVRBUEkuaCIKICNpbmNsdWRlICJjbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU3ltYm9sTWFuYWdlci5oIgogCiBuYW1lc3BhY2UgY2xhbmcgewpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NNVEV4cHIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TTVRFeHByLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZWRmOTYuLjAwMDAwMDAKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NNVEV4cHIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8vPT0gU01URXhwci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLS09PS8vCi0vLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgotLy8KLS8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi0vLwotLy8gIFRoaXMgZmlsZSBkZWZpbmVzIGEgU01UIGdlbmVyaWMgRXhwciBBUEksIHdoaWNoIHdpbGwgYmUgdGhlIGJhc2UgY2xhc3MKLS8vICBmb3IgZXZlcnkgU01UIHNvbHZlciBleHByIHNwZWNpZmljIGNsYXNzLgotLy8KLS8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi0KLSNpZm5kZWYgTExWTV9DTEFOR19TVEFUSUNBTkFMWVpFUl9DT1JFX1BBVEhTRU5TSVRJVkVfU01URVhQUl9ICi0jZGVmaW5lIExMVk1fQ0xBTkdfU1RBVElDQU5BTFlaRVJfQ09SRV9QQVRIU0VOU0lUSVZFX1NNVEVYUFJfSAotCi0jaW5jbHVkZSAiY2xhbmcvQmFzaWMvVGFyZ2V0SW5mby5oIgotI2luY2x1ZGUgImxsdm0vQURUL0ZvbGRpbmdTZXQuaCIKLQotbmFtZXNwYWNlIGNsYW5nIHsKLW5hbWVzcGFjZSBlbnRvIHsKLQotLy8vIEdlbmVyaWMgYmFzZSBjbGFzcyBmb3IgU01UIGV4cHJzCi1jbGFzcyBTTVRFeHByIHsKLXB1YmxpYzoKLSAgU01URXhwcigpID0gZGVmYXVsdDsKLSAgdmlydHVhbCB+U01URXhwcigpID0gZGVmYXVsdDsKLQotICBib29sIG9wZXJhdG9yPChjb25zdCBTTVRFeHByICZPdGhlcikgY29uc3QgewotICAgIGxsdm06OkZvbGRpbmdTZXROb2RlSUQgSUQxLCBJRDI7Ci0gICAgUHJvZmlsZShJRDEpOwotICAgIE90aGVyLlByb2ZpbGUoSUQyKTsKLSAgICByZXR1cm4gSUQxIDwgSUQyOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIFByb2ZpbGUobGx2bTo6Rm9sZGluZ1NldE5vZGVJRCAmSUQpIGNvbnN0IHsKLSAgICBzdGF0aWMgaW50IFRhZyA9IDA7Ci0gICAgSUQuQWRkUG9pbnRlcigmVGFnKTsKLSAgfQotCi0gIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oU01URXhwciBjb25zdCAmTEhTLCBTTVRFeHByIGNvbnN0ICZSSFMpIHsKLSAgICByZXR1cm4gTEhTLmVxdWFsX3RvKFJIUyk7Ci0gIH0KLQotICB2aXJ0dWFsIHZvaWQgcHJpbnQocmF3X29zdHJlYW0gJk9TKSBjb25zdCA9IDA7Ci0KLSAgTExWTV9EVU1QX01FVEhPRCB2b2lkIGR1bXAoKSBjb25zdCB7IHByaW50KGxsdm06OmVycnMoKSk7IH0KLQotcHJvdGVjdGVkOgotICAvLy8gUXVlcnkgdGhlIFNNVCBzb2x2ZXIgYW5kIHJldHVybnMgdHJ1ZSBpZiB0d28gc29ydHMgYXJlIGVxdWFsIChzYW1lIGtpbmQKLSAgLy8vIGFuZCBiaXQgd2lkdGgpLiBUaGlzIGRvZXMgbm90IGNoZWNrIGlmIHRoZSB0d28gc29ydHMgYXJlIHRoZSBzYW1lIG9iamVjdHMuCi0gIHZpcnR1YWwgYm9vbCBlcXVhbF90byhTTVRFeHByIGNvbnN0ICZvdGhlcikgY29uc3QgPSAwOwotfTsKLQotLy8vIFNoYXJlZCBwb2ludGVyIGZvciBTTVRFeHBycywgdXNlZCBieSBTTVRTb2x2ZXIgQVBJLgotdXNpbmcgU01URXhwclJlZiA9IHN0ZDo6c2hhcmVkX3B0cjxTTVRFeHByPjsKLQotfSAvLyBuYW1lc3BhY2UgZW50bwotfSAvLyBuYW1lc3BhY2UgY2xhbmcKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU01UU29ydC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NNVFNvcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFlZjU3My4uMDAwMDAwMAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU01UU29ydC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLy89PSBTTVRTb3J0LmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotLT09Ly8KLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCi0vLwotLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLS8vCi0vLyAgVGhpcyBmaWxlIGRlZmluZXMgYSBTTVQgZ2VuZXJpYyBTb3J0IEFQSSwgd2hpY2ggd2lsbCBiZSB0aGUgYmFzZSBjbGFzcwotLy8gIGZvciBldmVyeSBTTVQgc29sdmVyIHNvcnQgc3BlY2lmaWMgY2xhc3MuCi0vLwotLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLQotI2lmbmRlZiBMTFZNX0NMQU5HX1NUQVRJQ0FOQUxZWkVSX0NPUkVfUEFUSFNFTlNJVElWRV9TTVRTT1JUX0gKLSNkZWZpbmUgTExWTV9DTEFOR19TVEFUSUNBTkFMWVpFUl9DT1JFX1BBVEhTRU5TSVRJVkVfU01UU09SVF9ICi0KLSNpbmNsdWRlICJjbGFuZy9CYXNpYy9UYXJnZXRJbmZvLmgiCi0KLW5hbWVzcGFjZSBjbGFuZyB7Ci1uYW1lc3BhY2UgZW50byB7Ci0KLS8vLyBHZW5lcmljIGJhc2UgY2xhc3MgZm9yIFNNVCBzb3J0cwotY2xhc3MgU01UU29ydCB7Ci1wdWJsaWM6Ci0gIFNNVFNvcnQoKSA9IGRlZmF1bHQ7Ci0gIHZpcnR1YWwgflNNVFNvcnQoKSA9IGRlZmF1bHQ7Ci0KLSAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc29ydCBpcyBhIGJpdHZlY3RvciwgY2FsbHMgaXNCaXR2ZWN0b3JTb3J0SW1wbCgpLgotICB2aXJ0dWFsIGJvb2wgaXNCaXR2ZWN0b3JTb3J0KCkgY29uc3QgeyByZXR1cm4gaXNCaXR2ZWN0b3JTb3J0SW1wbCgpOyB9Ci0KLSAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc29ydCBpcyBhIGZsb2F0aW5nLXBvaW50LCBjYWxscyBpc0Zsb2F0U29ydEltcGwoKS4KLSAgdmlydHVhbCBib29sIGlzRmxvYXRTb3J0KCkgY29uc3QgeyByZXR1cm4gaXNGbG9hdFNvcnRJbXBsKCk7IH0KLQotICAvLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzb3J0IGlzIGEgYm9vbGVhbiwgY2FsbHMgaXNCb29sZWFuU29ydEltcGwoKS4KLSAgdmlydHVhbCBib29sIGlzQm9vbGVhblNvcnQoKSBjb25zdCB7IHJldHVybiBpc0Jvb2xlYW5Tb3J0SW1wbCgpOyB9Ci0KLSAgLy8vIFJldHVybnMgdGhlIGJpdHZlY3RvciBzaXplLCBmYWlscyBpZiB0aGUgc29ydCBpcyBub3QgYSBiaXR2ZWN0b3IKLSAgLy8vIENhbGxzIGdldEJpdHZlY3RvclNvcnRTaXplSW1wbCgpLgotICB2aXJ0dWFsIHVuc2lnbmVkIGdldEJpdHZlY3RvclNvcnRTaXplKCkgY29uc3QgewotICAgIGFzc2VydChpc0JpdHZlY3RvclNvcnQoKSAmJiAiTm90IGEgYml0dmVjdG9yIHNvcnQhIik7Ci0gICAgdW5zaWduZWQgU2l6ZSA9IGdldEJpdHZlY3RvclNvcnRTaXplSW1wbCgpOwotICAgIGFzc2VydChTaXplICYmICJTaXplIGlzIHplcm8hIik7Ci0gICAgcmV0dXJuIFNpemU7Ci0gIH07Ci0KLSAgLy8vIFJldHVybnMgdGhlIGZsb2F0aW5nLXBvaW50IHNpemUsIGZhaWxzIGlmIHRoZSBzb3J0IGlzIG5vdCBhIGZsb2F0aW5nLXBvaW50Ci0gIC8vLyBDYWxscyBnZXRGbG9hdFNvcnRTaXplSW1wbCgpLgotICB2aXJ0dWFsIHVuc2lnbmVkIGdldEZsb2F0U29ydFNpemUoKSBjb25zdCB7Ci0gICAgYXNzZXJ0KGlzRmxvYXRTb3J0KCkgJiYgIk5vdCBhIGZsb2F0aW5nLXBvaW50IHNvcnQhIik7Ci0gICAgdW5zaWduZWQgU2l6ZSA9IGdldEZsb2F0U29ydFNpemVJbXBsKCk7Ci0gICAgYXNzZXJ0KFNpemUgJiYgIlNpemUgaXMgemVybyEiKTsKLSAgICByZXR1cm4gU2l6ZTsKLSAgfTsKLQotICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KFNNVFNvcnQgY29uc3QgJkxIUywgU01UU29ydCBjb25zdCAmUkhTKSB7Ci0gICAgcmV0dXJuIExIUy5lcXVhbF90byhSSFMpOwotICB9Ci0KLSAgdmlydHVhbCB2b2lkIHByaW50KHJhd19vc3RyZWFtICZPUykgY29uc3QgPSAwOwotCi0gIExMVk1fRFVNUF9NRVRIT0Qgdm9pZCBkdW1wKCkgY29uc3QgeyBwcmludChsbHZtOjplcnJzKCkpOyB9Ci0KLXByb3RlY3RlZDoKLSAgLy8vIFF1ZXJ5IHRoZSBTTVQgc29sdmVyIGFuZCByZXR1cm5zIHRydWUgaWYgdHdvIHNvcnRzIGFyZSBlcXVhbCAoc2FtZSBraW5kCi0gIC8vLyBhbmQgYml0IHdpZHRoKS4gVGhpcyBkb2VzIG5vdCBjaGVjayBpZiB0aGUgdHdvIHNvcnRzIGFyZSB0aGUgc2FtZSBvYmplY3RzLgotICB2aXJ0dWFsIGJvb2wgZXF1YWxfdG8oU01UU29ydCBjb25zdCAmb3RoZXIpIGNvbnN0ID0gMDsKLQotICAvLy8gUXVlcnkgdGhlIFNNVCBzb2x2ZXIgYW5kIGNoZWNrcyBpZiBhIHNvcnQgaXMgYml0dmVjdG9yLgotICB2aXJ0dWFsIGJvb2wgaXNCaXR2ZWN0b3JTb3J0SW1wbCgpIGNvbnN0ID0gMDsKLQotICAvLy8gUXVlcnkgdGhlIFNNVCBzb2x2ZXIgYW5kIGNoZWNrcyBpZiBhIHNvcnQgaXMgZmxvYXRpbmctcG9pbnQuCi0gIHZpcnR1YWwgYm9vbCBpc0Zsb2F0U29ydEltcGwoKSBjb25zdCA9IDA7Ci0KLSAgLy8vIFF1ZXJ5IHRoZSBTTVQgc29sdmVyIGFuZCBjaGVja3MgaWYgYSBzb3J0IGlzIGJvb2xlYW4uCi0gIHZpcnR1YWwgYm9vbCBpc0Jvb2xlYW5Tb3J0SW1wbCgpIGNvbnN0ID0gMDsKLQotICAvLy8gUXVlcnkgdGhlIFNNVCBzb2x2ZXIgYW5kIHJldHVybnMgdGhlIHNvcnQgYml0IHdpZHRoLgotICB2aXJ0dWFsIHVuc2lnbmVkIGdldEJpdHZlY3RvclNvcnRTaXplSW1wbCgpIGNvbnN0ID0gMDsKLQotICAvLy8gUXVlcnkgdGhlIFNNVCBzb2x2ZXIgYW5kIHJldHVybnMgdGhlIHNvcnQgYml0IHdpZHRoLgotICB2aXJ0dWFsIHVuc2lnbmVkIGdldEZsb2F0U29ydFNpemVJbXBsKCkgY29uc3QgPSAwOwotfTsKLQotLy8vIFNoYXJlZCBwb2ludGVyIGZvciBTTVRTb3J0cywgdXNlZCBieSBTTVRTb2x2ZXIgQVBJLgotdXNpbmcgU01UU29ydFJlZiA9IHN0ZDo6c2hhcmVkX3B0cjxTTVRTb3J0PjsKLQotfSAvLyBuYW1lc3BhY2UgZW50bwotfSAvLyBuYW1lc3BhY2UgY2xhbmcKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU1ZhbEJ1aWxkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TVmFsQnVpbGRlci5oCmluZGV4IGM5ZTI4NGEuLjM1ZWJlZmQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TVmFsQnVpbGRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TVmFsQnVpbGRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy8gU1ZhbEJ1aWxkZXIuaCAtIENvbnN0cnVjdGlvbiBvZiBTVmFscyBmcm9tIGV2YWx1YXRpbmcgZXhwcmVzc2lvbnMgLSotIEMrKyAtKi0KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU1ZhbFZpc2l0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TVmFsVmlzaXRvci5oCmluZGV4IGY4N2ZkY2UuLmZjODNlMjYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TVmFsVmlzaXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TVmFsVmlzaXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gU1ZhbFZpc2l0b3IuaCAtIFZpc2l0b3IgZm9yIFNWYWwgc3ViY2xhc3NlcyAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU1ZhbHMuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NWYWxzLmRlZgppbmRleCBhMGUzMDk5Li5lYjA1ZGU2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU1ZhbHMuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TVmFscy5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFNWYWxzLmRlZiAtIE1ldGFkYXRhIGFib3V0IFNWYWwga2luZHMgLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TVmFscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NWYWxzLmgKaW5kZXggMWI3OWJmYy4uZTg1OTkzNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NWYWxzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NWYWxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU1ZhbHMuaCAtIEFic3RyYWN0IFZhbHVlcyBmb3IgU3RhdGljIEFuYWx5c2lzIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTUzMCw5ICs1MjksNyBAQAogICAgIHJldHVybiBQVE1EYXRhVHlwZTo6Z2V0RnJvbU9wYXF1ZVZhbHVlKGNvbnN0X2Nhc3Q8dm9pZCAqPihEYXRhKSk7CiAgIH0KIAotICBib29sIGlzTnVsbE1lbWJlclBvaW50ZXIoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGdldFBUTURhdGEoKS5pc051bGwoKTsKLSAgfQorICBib29sIGlzTnVsbE1lbWJlclBvaW50ZXIoKSBjb25zdDsKIAogICBjb25zdCBEZWNsYXJhdG9yRGVjbCAqZ2V0RGVjbCgpIGNvbnN0OwogCkBAIC02NzAsMTMgKzY2Nyw0IEBACiAKIH0gLy8gbmFtZXNwYWNlIGNsYW5nCiAKLW5hbWVzcGFjZSBsbHZtIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBpc1BvZExpa2U7Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNQb2RMaWtlPGNsYW5nOjplbnRvOjpTVmFsPiB7Ci0gIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGxsdm0KLQogI2VuZGlmIC8vIExMVk1fQ0xBTkdfU1RBVElDQU5BTFlaRVJfQ09SRV9QQVRIU0VOU0lUSVZFX1NWQUxTX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TaW1wbGVDb25zdHJhaW50TWFuYWdlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NpbXBsZUNvbnN0cmFpbnRNYW5hZ2VyLmgKaW5kZXggZDY0YjkwZS4uNmJmNWU5NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NpbXBsZUNvbnN0cmFpbnRNYW5hZ2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1NpbXBsZUNvbnN0cmFpbnRNYW5hZ2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09IFNpbXBsZUNvbnN0cmFpbnRNYW5hZ2VyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi0tPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TdG9yZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1N0b3JlLmgKaW5kZXggNGFiNzE2MS4uMTc3MzY4MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1N0b3JlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1N0b3JlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3RvcmUuaCAtIEludGVyZmFjZSBmb3IgbWFwcyBmcm9tIExvY2F0aW9ucyB0byBWYWx1ZXMgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI2MCwxMiArMjU5LDEyIEBACiAgIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5CaW5kaW5nc0hhbmRsZXIoKTsKIAorICAgIC8vLyBccmV0dXJuIHdoZXRoZXIgdGhlIGl0ZXJhdGlvbiBzaG91bGQgY29udGludWUuCiAgICAgdmlydHVhbCBib29sIEhhbmRsZUJpbmRpbmcoU3RvcmVNYW5hZ2VyJiBTTWdyLCBTdG9yZSBzdG9yZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZW1SZWdpb24gKnJlZ2lvbiwgU1ZhbCB2YWwpID0gMDsKICAgfTsKIAotICBjbGFzcyBGaW5kVW5pcXVlQmluZGluZyA6Ci0gIHB1YmxpYyBCaW5kaW5nc0hhbmRsZXIgeworICBjbGFzcyBGaW5kVW5pcXVlQmluZGluZyA6IHB1YmxpYyBCaW5kaW5nc0hhbmRsZXIgewogICAgIFN5bWJvbFJlZiBTeW07CiAgICAgY29uc3QgTWVtUmVnaW9uKiBCaW5kaW5nID0gbnVsbHB0cjsKICAgICBib29sIEZpcnN0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TdG9yZVJlZi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1N0b3JlUmVmLmgKaW5kZXggMjIyNTlhMi4uYTJkZDA1YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1N0b3JlUmVmLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1N0b3JlUmVmLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3RvcmVSZWYuaCAtIFNtYXJ0IHBvaW50ZXIgZm9yIHN0b3JlIG9iamVjdHMgLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TdWJFbmdpbmUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TdWJFbmdpbmUuaAppbmRleCBkNzQ1YjBmLi45Mjk2ZTE3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU3ViRW5naW5lLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1N1YkVuZ2luZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PSBTdWJFbmdpbmUuaCAtIEludGVyZmFjZSBvZiB0aGUgc3ViZW5naW5lIG9mIENvcmVFbmdpbmUgLS0tLS0tLS0qLSBDKysgLSotLy8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU3VtbWFyeU1hbmFnZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TdW1tYXJ5TWFuYWdlci5oCmluZGV4IDBhNzVlZWIuLjFhNTYxNTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TdW1tYXJ5TWFuYWdlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TdW1tYXJ5TWFuYWdlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PSBTdW1tYXJ5TWFuYWdlci5oIC0gR2VuZXJpYyBoYW5kbGluZyBvZiBmdW5jdGlvbiBzdW1tYXJpZXMgLS0qLSBDKysgLSotLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU3ltRXhwci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1N5bUV4cHIuaAppbmRleCA2OWI5ODU4Li5hYmZjZDFkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU3ltRXhwci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TeW1FeHByLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3ltRXhwci5oIC0gTWFuYWdlbWVudCBvZiBTeW1ib2xpYyBWYWx1ZXMgLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TeW1ib2xNYW5hZ2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU3ltYm9sTWFuYWdlci5oCmluZGV4IGIwMTRjNjMuLmQyMTJlMjMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TeW1ib2xNYW5hZ2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1N5bWJvbE1hbmFnZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTeW1ib2xNYW5hZ2VyLmggLSBNYW5hZ2VtZW50IG9mIFN5bWJvbGljIFZhbHVlcyAtLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNTU4LDcgKzU1Nyw2IEBACiAKICAgU3ltYm9sTWFwVHkgVGhlTGl2aW5nOwogICBTeW1ib2xTZXRUeSBNZXRhZGF0YUluVXNlOwotICBTeW1ib2xTZXRUeSBUaGVEZWFkOwogCiAgIFJlZ2lvblNldFR5IFJlZ2lvblJvb3RzOwogCkBAIC02MDMsMjEgKzYwMSw2IEBACiAgIC8vLyBzeW1ib2wgbWFya2luZyBoYXMgb2NjdXJyZWQsIGkuZS4gaW4gdGhlIE1hcmtMaXZlU3ltYm9scyBjYWxsYmFjay4KICAgdm9pZCBtYXJrSW5Vc2UoU3ltYm9sUmVmIHN5bSk7CiAKLSAgLy8vIElmIGEgc3ltYm9sIGlzIGtub3duIHRvIGJlIGxpdmUsIG1hcmtzIHRoZSBzeW1ib2wgYXMgbGl2ZS4KLSAgLy8vCi0gIC8vLyAgT3RoZXJ3aXNlLCBpZiB0aGUgc3ltYm9sIGNhbm5vdCBiZSBwcm92ZW4gbGl2ZSwgaXQgaXMgbWFya2VkIGFzIGRlYWQuCi0gIC8vLyAgUmV0dXJucyB0cnVlIGlmIHRoZSBzeW1ib2wgaXMgZGVhZCwgZmFsc2UgaWYgbGl2ZS4KLSAgYm9vbCBtYXliZURlYWQoU3ltYm9sUmVmIHN5bSk7Ci0KLSAgdXNpbmcgZGVhZF9pdGVyYXRvciA9IFN5bWJvbFNldFR5Ojpjb25zdF9pdGVyYXRvcjsKLQotICBkZWFkX2l0ZXJhdG9yIGRlYWRfYmVnaW4oKSBjb25zdCB7IHJldHVybiBUaGVEZWFkLmJlZ2luKCk7IH0KLSAgZGVhZF9pdGVyYXRvciBkZWFkX2VuZCgpIGNvbnN0IHsgcmV0dXJuIFRoZURlYWQuZW5kKCk7IH0KLQotICBib29sIGhhc0RlYWRTeW1ib2xzKCkgY29uc3QgewotICAgIHJldHVybiAhVGhlRGVhZC5lbXB0eSgpOwotICB9Ci0KICAgdXNpbmcgcmVnaW9uX2l0ZXJhdG9yID0gUmVnaW9uU2V0VHk6OmNvbnN0X2l0ZXJhdG9yOwogCiAgIHJlZ2lvbl9pdGVyYXRvciByZWdpb25fYmVnaW4oKSBjb25zdCB7IHJldHVybiBSZWdpb25Sb290cy5iZWdpbigpOyB9CkBAIC02MjYsOSArNjA5LDkgQEAKICAgLy8vIFJldHVybnMgd2hldGhlciBvciBub3QgYSBzeW1ib2wgaGFzIGJlZW4gY29uZmlybWVkIGRlYWQuCiAgIC8vLwogICAvLy8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZSBhbGwgbWFya2luZyBvZiBkZWFkIHN5bWJvbHMgaGFzIGNvbXBsZXRlZC4KLSAgLy8vIChGb3IgY2hlY2tlcnMsIHRoaXMgbWVhbnMgb25seSBpbiB0aGUgZXZhbERlYWRTeW1ib2xzIGNhbGxiYWNrLikKLSAgYm9vbCBpc0RlYWQoU3ltYm9sUmVmIHN5bSkgY29uc3QgewotICAgIHJldHVybiBUaGVEZWFkLmNvdW50KHN5bSk7CisgIC8vLyAoRm9yIGNoZWNrZXJzLCB0aGlzIG1lYW5zIG9ubHkgaW4gdGhlIGNoZWNrRGVhZFN5bWJvbHMgY2FsbGJhY2suKQorICBib29sIGlzRGVhZChTeW1ib2xSZWYgc3ltKSB7CisgICAgcmV0dXJuICFpc0xpdmUoc3ltKTsKICAgfQogCiAgIHZvaWQgbWFya0xpdmUoY29uc3QgTWVtUmVnaW9uICpyZWdpb24pOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1N5bWJvbHMuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1N5bWJvbHMuZGVmCmluZGV4IDdkNGQ4ZmUuLjcxNjNhMTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9TeW1ib2xzLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvU3ltYm9scy5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFN5bWJvbHMuZGVmIC0gTWV0YWRhdGEgYWJvdXQgU3ltRXhwciBraW5kcyAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9UYWludE1hbmFnZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9UYWludE1hbmFnZXIuaAppbmRleCBjZTE5YjcxLi45NDI0MzkyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvVGFpbnRNYW5hZ2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvQ29yZS9QYXRoU2Vuc2l0aXZlL1RhaW50TWFuYWdlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFRhaW50TWFuYWdlci5oIC0gTWFuYWdpbmcgdGFpbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zNCwxMCArMzMsNyBAQAogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBQcm9ncmFtU3RhdGVUcmFpdDxUYWludE1hcD4KICAgICA6ICBwdWJsaWMgUHJvZ3JhbVN0YXRlUGFydGlhbFRyYWl0PFRhaW50TWFwSW1wbD4gewotICBzdGF0aWMgdm9pZCAqR0RNSW5kZXgoKSB7Ci0gICAgc3RhdGljIGludCBpbmRleCA9IDA7Ci0gICAgcmV0dXJuICZpbmRleDsKLSAgfQorICBzdGF0aWMgdm9pZCAqR0RNSW5kZXgoKTsKIH07CiAKIC8vLyBUaGUgR0RNIGNvbXBvbmVudCBtYXBwaW5nIGRlcml2ZWQgc3ltYm9scycgcGFyZW50IHN5bWJvbHMgdG8gdGhlaXIKQEAgLTQ5LDEwICs0NSw3IEBACiAKIHRlbXBsYXRlPD4gc3RydWN0IFByb2dyYW1TdGF0ZVRyYWl0PERlcml2ZWRTeW1UYWludD4KICAgICA6ICBwdWJsaWMgUHJvZ3JhbVN0YXRlUGFydGlhbFRyYWl0PERlcml2ZWRTeW1UYWludEltcGw+IHsKLSAgc3RhdGljIHZvaWQgKkdETUluZGV4KCkgewotICAgIHN0YXRpYyBpbnQgaW5kZXg7Ci0gICAgcmV0dXJuICZpbmRleDsKLSAgfQorICBzdGF0aWMgdm9pZCAqR0RNSW5kZXgoKTsKIH07CiAKIGNsYXNzIFRhaW50TWFuYWdlciB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvVGFpbnRUYWcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9UYWludFRhZy5oCmluZGV4IDUwYzRiODEuLmQxMDE4ZjkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9UYWludFRhZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9UYWludFRhZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFRhaW50VGFnLmggLSBQYXRoLXNlbnNpdGl2ZSAiU3RhdGUiIGZvciB0cmFja2luZyB2YWx1ZXMgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL1BhdGhTZW5zaXRpdmUvV29ya0xpc3QuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Xb3JrTGlzdC5oCmluZGV4IDA3ZWRkMzUuLjdiZWI3ZGQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Xb3JrTGlzdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0NvcmUvUGF0aFNlbnNpdGl2ZS9Xb3JrTGlzdC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0gV29ya0xpc3QuaCAtIFdvcmtsaXN0IGNsYXNzIHVzZWQgYnkgQ29yZUVuZ2luZSAtLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotLy8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC04NSw2ICs4NCw3IEBACiAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V29ya0xpc3Q+IG1ha2VCRlNCbG9ja0RGU0NvbnRlbnRzKCk7CiAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V29ya0xpc3Q+IG1ha2VVbmV4cGxvcmVkRmlyc3QoKTsKICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXb3JrTGlzdD4gbWFrZVVuZXhwbG9yZWRGaXJzdFByaW9yaXR5UXVldWUoKTsKKyAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxXb3JrTGlzdD4gbWFrZVVuZXhwbG9yZWRGaXJzdFByaW9yaXR5TG9jYXRpb25RdWV1ZSgpOwogfTsKIAogfSAvLyBlbmQgZW50byBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0Zyb250ZW5kL0FuYWx5c2lzQ29uc3VtZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0Zyb250ZW5kL0FuYWx5c2lzQ29uc3VtZXIuaAppbmRleCA1OWZiYmMzLi4yZDI0ZTZhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Gcm9udGVuZC9BbmFseXNpc0NvbnN1bWVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvRnJvbnRlbmQvQW5hbHlzaXNDb25zdW1lci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQW5hbHlzaXNDb25zdW1lci5oIC0gRnJvbnQtZW5kIEFuYWx5c2lzIEVuZ2luZSBIb29rcyAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Gcm9udGVuZC9DaGVja2VyUmVnaXN0cmF0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Gcm9udGVuZC9DaGVja2VyUmVnaXN0cmF0aW9uLmgKaW5kZXggNjE3MDk1NC4uNTJhNTM0NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvRnJvbnRlbmQvQ2hlY2tlclJlZ2lzdHJhdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0Zyb250ZW5kL0NoZWNrZXJSZWdpc3RyYXRpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gQ2hlY2tlclJlZ2lzdHJhdGlvbi5oIC0gQ2hlY2tlciBSZWdpc3RyYXRpb24gRnVuY3Rpb24gLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0Zyb250ZW5kL0NoZWNrZXJSZWdpc3RyeS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvRnJvbnRlbmQvQ2hlY2tlclJlZ2lzdHJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ4NzMzNAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0Zyb250ZW5kL0NoZWNrZXJSZWdpc3RyeS5oCkBAIC0wLDAgKzEsMjI1IEBACisvLz09PS0gQ2hlY2tlclJlZ2lzdHJ5LmggLSBNYWludGFpbnMgYWxsIGF2YWlsYWJsZSBjaGVja2VycyAtLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fQ0xBTkdfU1RBVElDQU5BTFlaRVJfQ09SRV9DSEVDS0VSUkVHSVNUUllfSAorI2RlZmluZSBMTFZNX0NMQU5HX1NUQVRJQ0FOQUxZWkVSX0NPUkVfQ0hFQ0tFUlJFR0lTVFJZX0gKKworI2luY2x1ZGUgImNsYW5nL0Jhc2ljL0xMVk0uaCIKKyNpbmNsdWRlICJjbGFuZy9TdGF0aWNBbmFseXplci9Db3JlL0NoZWNrZXJNYW5hZ2VyLmgiCisjaW5jbHVkZSAibGx2bS9BRFQvU3RyaW5nTWFwLmgiCisjaW5jbHVkZSAibGx2bS9BRFQvU3RyaW5nUmVmLmgiCisjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKy8vIEZJWE1FOiBtb3ZlIHRoaXMgaW5mb3JtYXRpb24gdG8gYW4gSFRNTCBmaWxlIGluIGRvY3MvLgorLy8gQXQgdGhlIHZlcnkgbGVhc3QsIGEgY2hlY2tlciBwbHVnaW4gaXMgYSBkeW5hbWljIGxpYnJhcnkgdGhhdCBleHBvcnRzCisvLyBjbGFuZ19hbmFseXplckFQSVZlcnNpb25TdHJpbmcuIFRoaXMgc2hvdWxkIGJlIGRlZmluZWQgYXMgZm9sbG93czoKKy8vCisvLyAgIGV4dGVybiAiQyIKKy8vICAgY29uc3QgY2hhciBjbGFuZ19hbmFseXplckFQSVZlcnNpb25TdHJpbmdbXSA9CisvLyAgICAgQ0xBTkdfQU5BTFlaRVJfQVBJX1ZFUlNJT05fU1RSSU5HOworLy8KKy8vIFRoaXMgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIGFuYWx5emVyIGlzIGtub3duIHRvCisvLyBiZSBpbmNvbXBhdGlibGUgd2l0aCBhIHBsdWdpbi4gUGx1Z2lucyB3aXRoIGluY29tcGF0aWJsZSB2ZXJzaW9uIHN0cmluZ3MsCisvLyBvciB3aXRob3V0IGEgdmVyc2lvbiBzdHJpbmcgYXQgYWxsLCB3aWxsIG5vdCBiZSBsb2FkZWQuCisvLworLy8gVG8gYWRkIGEgY3VzdG9tIGNoZWNrZXIgdG8gdGhlIGFuYWx5emVyLCB0aGUgcGx1Z2luIG11c3QgYWxzbyBkZWZpbmUgdGhlCisvLyBmdW5jdGlvbiBjbGFuZ19yZWdpc3RlckNoZWNrZXJzLiBGb3IgZXhhbXBsZToKKy8vCisvLyAgICBleHRlcm4gIkMiCisvLyAgICB2b2lkIGNsYW5nX3JlZ2lzdGVyQ2hlY2tlcnMgKENoZWNrZXJSZWdpc3RyeSAmcmVnaXN0cnkpIHsKKy8vICAgICAgcmVnaXN0cnkuYWRkQ2hlY2tlcjxNYWluQ2FsbENoZWNrZXI+KCJleGFtcGxlLk1haW5DYWxsQ2hlY2tlciIsCisvLyAgICAgICAgIkRpc2FsbG93cyBjYWxscyB0byBmdW5jdGlvbnMgY2FsbGVkIG1haW4iKTsKKy8vICAgIH0KKy8vCisvLyBUaGUgZmlyc3QgbWV0aG9kIGFyZ3VtZW50IGlzIHRoZSBmdWxsIG5hbWUgb2YgdGhlIGNoZWNrZXIsIGluY2x1ZGluZyBpdHMKKy8vIGVuY2xvc2luZyBwYWNrYWdlLiBCeSBjb252ZW50aW9uLCB0aGUgcmVnaXN0ZXJlZCBuYW1lIG9mIGEgY2hlY2tlciBpcyB0aGUKKy8vIG5hbWUgb2YgdGhlIGFzc29jaWF0ZWQgY2xhc3MgKHRoZSB0ZW1wbGF0ZSBhcmd1bWVudCkuCisvLyBUaGUgc2Vjb25kIG1ldGhvZCBhcmd1bWVudCBpcyBhIHNob3J0IGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZQorLy8gY2hlY2tlci4KKy8vCisvLyBUaGUgY2xhbmdfcmVnaXN0ZXJDaGVja2VycyBmdW5jdGlvbiBtYXkgYWRkIGFueSBudW1iZXIgb2YgY2hlY2tlcnMgdG8gdGhlCisvLyByZWdpc3RyeS4gSWYgYW55IGNoZWNrZXJzIHJlcXVpcmUgYWRkaXRpb25hbCBpbml0aWFsaXphdGlvbiwgdXNlIHRoZSB0aHJlZS0KKy8vIGFyZ3VtZW50IGZvcm0gb2YgQ2hlY2tlclJlZ2lzdHJ5OjphZGRDaGVja2VyLgorLy8KKy8vIFRvIGxvYWQgYSBjaGVja2VyIHBsdWdpbiwgc3BlY2lmeSB0aGUgZnVsbCBwYXRoIHRvIHRoZSBkeW5hbWljIGxpYnJhcnkgYXMKKy8vIHRoZSBhcmd1bWVudCB0byB0aGUgLWxvYWQgb3B0aW9uIGluIHRoZSBjYzEgZnJvbnRlbmQuIFlvdSBjYW4gdGhlbiBlbmFibGUKKy8vIHlvdXIgY3VzdG9tIGNoZWNrZXIgdXNpbmcgdGhlIC1hbmFseXplci1jaGVja2VyOgorLy8KKy8vICAgY2xhbmcgLWNjMSAtbG9hZCA8L3BhdGgvdG8vcGx1Z2luLmR5bGliPiAtYW5hbHl6ZQorLy8gICAgIC1hbmFseXplci1jaGVja2VyPTxleGFtcGxlLk1haW5DYWxsQ2hlY2tlcj4KKy8vCisvLyBGb3IgYSBjb21wbGV0ZSB3b3JraW5nIGV4YW1wbGUsIHNlZSBleGFtcGxlcy9hbmFseXplci1wbHVnaW4uCisKKyNpZm5kZWYgQ0xBTkdfQU5BTFlaRVJfQVBJX1ZFUlNJT05fU1RSSU5HCisvLyBGSVhNRTogVGhlIENsYW5nIHZlcnNpb24gc3RyaW5nIGlzIG5vdCBwYXJ0aWN1bGFybHkgZ3JhbnVsYXI7CisvLyB0aGUgYW5hbHl6ZXIgaW5mcmFzdHJ1Y3R1cmUgY2FuIGNoYW5nZSBhIGxvdCBiZXR3ZWVuIHJlbGVhc2VzLgorLy8gVW5mb3J0dW5hdGVseSwgdGhpcyBzdHJpbmcgaGFzIHRvIGJlIHN0YXRpY2FsbHkgZW1iZWRkZWQgaW4gZWFjaCBwbHVnaW4sCisvLyBzbyB3ZSBjYW4ndCBqdXN0IHVzZSB0aGUgZnVuY3Rpb25zIGRlZmluZWQgaW4gVmVyc2lvbi5oLgorI2luY2x1ZGUgImNsYW5nL0Jhc2ljL1ZlcnNpb24uaCIKKyNkZWZpbmUgQ0xBTkdfQU5BTFlaRVJfQVBJX1ZFUlNJT05fU1RSSU5HIENMQU5HX1ZFUlNJT05fU1RSSU5HCisjZW5kaWYKKworbmFtZXNwYWNlIGNsYW5nIHsKKworY2xhc3MgQW5hbHl6ZXJPcHRpb25zOworY2xhc3MgRGlhZ25vc3RpY3NFbmdpbmU7CitjbGFzcyBMYW5nT3B0aW9uczsKKworbmFtZXNwYWNlIGVudG8geworCisvLy8gTWFuYWdlcyBhIHNldCBvZiBhdmFpbGFibGUgY2hlY2tlcnMgZm9yIHJ1bm5pbmcgYSBzdGF0aWMgYW5hbHlzaXMuCisvLy8gVGhlIGNoZWNrZXJzIGFyZSBvcmdhbml6ZWQgaW50byBwYWNrYWdlcyBieSBmdWxsIG5hbWUsIHdoZXJlIGluY2x1ZGluZworLy8vIGEgcGFja2FnZSB3aWxsIHJlY3Vyc2l2ZWx5IGluY2x1ZGUgYWxsIHN1YnBhY2thZ2VzIGFuZCBjaGVja2VycyB3aXRoaW4gaXQuCisvLy8gRm9yIGV4YW1wbGUsIHRoZSBjaGVja2VyICJjb3JlLmJ1aWx0aW4uTm9SZXR1cm5GdW5jdGlvbkNoZWNrZXIiIHdpbGwgYmUKKy8vLyBpbmNsdWRlZCBpZiBpbml0aWFsaXplTWFuYWdlcigpIGlzIGNhbGxlZCB3aXRoIGFuIG9wdGlvbiBvZiAiY29yZSIsCisvLy8gImNvcmUuYnVpbHRpbiIsIG9yIHRoZSBmdWxsIG5hbWUgImNvcmUuYnVpbHRpbi5Ob1JldHVybkZ1bmN0aW9uQ2hlY2tlciIuCitjbGFzcyBDaGVja2VyUmVnaXN0cnkgeworcHVibGljOgorICBDaGVja2VyUmVnaXN0cnkoCisgICAgICBBcnJheVJlZjxzdGQ6OnN0cmluZz4gcGx1Z2lucywgRGlhZ25vc3RpY3NFbmdpbmUgJmRpYWdzLAorICAgICAgQW5hbHl6ZXJPcHRpb25zICZBbk9wdHMsIGNvbnN0IExhbmdPcHRpb25zICZMYW5nT3B0cywKKyAgICAgIEFycmF5UmVmPHN0ZDo6ZnVuY3Rpb248dm9pZChDaGVja2VyUmVnaXN0cnkgJik+PgorICAgICAgICAgIGNoZWNrZXJSZWdpc3RyYXRpb25GbnMgPSB7fSk7CisKKyAgLy8vIEluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBwZXJmb3JtIGFueSBuZWNlc3Nhcnkgc2V0dXAgZm9yIGEgY2hlY2tlci4KKyAgLy8vIFRoZXkgc2hvdWxkIGluY2x1ZGUgYSBjYWxsIHRvIENoZWNrZXJNYW5hZ2VyOjpyZWdpc3RlckNoZWNrZXIuCisgIHVzaW5nIEluaXRpYWxpemF0aW9uRnVuY3Rpb24gPSB2b2lkICgqKShDaGVja2VyTWFuYWdlciAmKTsKKyAgdXNpbmcgU2hvdWxkUmVnaXN0ZXJGdW5jdGlvbiA9IGJvb2wgKCopKGNvbnN0IExhbmdPcHRpb25zICYpOworCisgIHN0cnVjdCBDaGVja2VySW5mbzsKKworICB1c2luZyBDaGVja2VySW5mb0xpc3QgPSBzdGQ6OnZlY3RvcjxDaGVja2VySW5mbz47CisgIHVzaW5nIENoZWNrZXJJbmZvTGlzdFJhbmdlID0gbGx2bTo6aXRlcmF0b3JfcmFuZ2U8Q2hlY2tlckluZm9MaXN0OjppdGVyYXRvcj47CisgIHVzaW5nIENvbnN0Q2hlY2tlckluZm9MaXN0ID0gbGx2bTo6U21hbGxWZWN0b3I8Y29uc3QgQ2hlY2tlckluZm8gKiwgMD47CisgIHVzaW5nIENoZWNrZXJJbmZvU2V0ID0gbGx2bTo6U2V0VmVjdG9yPGNvbnN0IENoZWNrZXJJbmZvICo+OworCisgIHN0cnVjdCBDaGVja2VySW5mbyB7CisgICAgZW51bSBjbGFzcyBTdGF0ZUZyb21DbWRMaW5lIHsKKyAgICAgIC8vIFRoaXMgY2hlY2tlciB3YXNuJ3QgZXhwbGljaXRseSBlbmFibGVkIG9yIGRpc2FibGVkLgorICAgICAgU3RhdGVfVW5zcGVjaWZpZWQsCisgICAgICAvLyBUaGlzIGNoZWNrZXIgd2FzIGV4cGxpY2l0bHkgZGlzYWJsZWQuCisgICAgICBTdGF0ZV9EaXNhYmxlZCwKKyAgICAgIC8vIFRoaXMgY2hlY2tlciB3YXMgZXhwbGljaXRseSBlbmFibGVkLgorICAgICAgU3RhdGVfRW5hYmxlZAorICAgIH07CisKKyAgICBJbml0aWFsaXphdGlvbkZ1bmN0aW9uIEluaXRpYWxpemU7CisgICAgU2hvdWxkUmVnaXN0ZXJGdW5jdGlvbiBTaG91bGRSZWdpc3RlcjsKKyAgICBTdHJpbmdSZWYgRnVsbE5hbWU7CisgICAgU3RyaW5nUmVmIERlc2M7CisgICAgU3RyaW5nUmVmIERvY3VtZW50YXRpb25Vcmk7CisgICAgU3RhdGVGcm9tQ21kTGluZSBTdGF0ZSA9IFN0YXRlRnJvbUNtZExpbmU6OlN0YXRlX1Vuc3BlY2lmaWVkOworCisgICAgQ29uc3RDaGVja2VySW5mb0xpc3QgRGVwZW5kZW5jaWVzOworCisgICAgYm9vbCBpc0VuYWJsZWQoY29uc3QgTGFuZ09wdGlvbnMgJkxPKSBjb25zdCB7CisgICAgICByZXR1cm4gU3RhdGUgPT0gU3RhdGVGcm9tQ21kTGluZTo6U3RhdGVfRW5hYmxlZCAmJiBTaG91bGRSZWdpc3RlcihMTyk7CisgICAgfQorCisgICAgYm9vbCBpc0Rpc2FibGVkKGNvbnN0IExhbmdPcHRpb25zICZMTykgY29uc3QgeworICAgICAgcmV0dXJuIFN0YXRlID09IFN0YXRlRnJvbUNtZExpbmU6OlN0YXRlX0Rpc2FibGVkICYmIFNob3VsZFJlZ2lzdGVyKExPKTsKKyAgICB9CisKKyAgICBDaGVja2VySW5mbyhJbml0aWFsaXphdGlvbkZ1bmN0aW9uIEZuLCBTaG91bGRSZWdpc3RlckZ1bmN0aW9uIHNmbiwKKyAgICAgICAgICAgICAgICBTdHJpbmdSZWYgTmFtZSwgU3RyaW5nUmVmIERlc2MsIFN0cmluZ1JlZiBEb2NzVXJpKQorICAgICAgICA6IEluaXRpYWxpemUoRm4pLCBTaG91bGRSZWdpc3RlcihzZm4pLCBGdWxsTmFtZShOYW1lKSwgRGVzYyhEZXNjKSwKKyAgICAgICAgICBEb2N1bWVudGF0aW9uVXJpKERvY3NVcmkpIHt9CisgIH07CisKKyAgdXNpbmcgU3RhdGVGcm9tQ21kTGluZSA9IENoZWNrZXJJbmZvOjpTdGF0ZUZyb21DbWRMaW5lOworCitwcml2YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU1hbmFnZXIoQ2hlY2tlck1hbmFnZXIgJm1ncikgeworICAgIG1nci5yZWdpc3RlckNoZWNrZXI8VD4oKTsKKyAgfQorCisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgIHN0YXRpYyBib29sIHJldHVyblRydWUoY29uc3QgTGFuZ09wdGlvbnMgJkxPKSB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworcHVibGljOgorICAvLy8gQWRkcyBhIGNoZWNrZXIgdG8gdGhlIHJlZ2lzdHJ5LiBVc2UgdGhpcyBub24tdGVtcGxhdGVkIG92ZXJsb2FkIHdoZW4geW91cgorICAvLy8gY2hlY2tlciByZXF1aXJlcyBjdXN0b20gaW5pdGlhbGl6YXRpb24uCisgIHZvaWQgYWRkQ2hlY2tlcihJbml0aWFsaXphdGlvbkZ1bmN0aW9uIEZuLCBTaG91bGRSZWdpc3RlckZ1bmN0aW9uIHNmbiwKKyAgICAgICAgICAgICAgICAgIFN0cmluZ1JlZiBGdWxsTmFtZSwgU3RyaW5nUmVmIERlc2MsIFN0cmluZ1JlZiBEb2NzVXJpKTsKKworICAvLy8gQWRkcyBhIGNoZWNrZXIgdG8gdGhlIHJlZ2lzdHJ5LiBVc2UgdGhpcyB0ZW1wbGF0ZWQgb3ZlcmxvYWQgd2hlbiB5b3VyCisgIC8vLyBjaGVja2VyIGRvZXMgbm90IHJlcXVpcmUgYW55IGN1c3RvbSBpbml0aWFsaXphdGlvbi4KKyAgdGVtcGxhdGUgPGNsYXNzIFQ+CisgIHZvaWQgYWRkQ2hlY2tlcihTdHJpbmdSZWYgRnVsbE5hbWUsIFN0cmluZ1JlZiBEZXNjLCBTdHJpbmdSZWYgRG9jc1VyaSkgeworICAgIC8vIEF2b2lkIE1TVkMncyBDb21waWxlciBFcnJvciBDMjI3NjoKKyAgICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvODUwY3N0dzEodj1WUy44MCkuYXNweAorICAgIGFkZENoZWNrZXIoJkNoZWNrZXJSZWdpc3RyeTo6aW5pdGlhbGl6ZU1hbmFnZXI8VD4sCisgICAgICAgICAgICAgICAmQ2hlY2tlclJlZ2lzdHJ5OjpyZXR1cm5UcnVlPFQ+LCBGdWxsTmFtZSwgRGVzYywgRG9jc1VyaSk7CisgIH0KKworICAvLy8gTWFrZXMgdGhlIGNoZWNrZXIgd2l0aCB0aGUgZnVsbCBuYW1lIFxwIGZ1bGxOYW1lIGRlcGVuZHMgb24gdGhlIGNoZWNrZXIKKyAgLy8vIGNhbGxlZCBccCBkZXBlbmRlbmN5LgorICB2b2lkIGFkZERlcGVuZGVuY3koU3RyaW5nUmVmIGZ1bGxOYW1lLCBTdHJpbmdSZWYgZGVwZW5kZW5jeSkgeworICAgIGF1dG8gQ2hlY2tlclRoYXROZWVkc0RlcHMgPQorICAgICAgIFsmZnVsbE5hbWVdKGNvbnN0IENoZWNrZXJJbmZvICZDaGspIHsgcmV0dXJuIENoay5GdWxsTmFtZSA9PSBmdWxsTmFtZTsgfTsKKyAgICBhdXRvIERlcGVuZGVuY3kgPQorICAgICAgWyZkZXBlbmRlbmN5XShjb25zdCBDaGVja2VySW5mbyAmQ2hrKSB7CisgICAgICAgIHJldHVybiBDaGsuRnVsbE5hbWUgPT0gZGVwZW5kZW5jeTsKKyAgICAgIH07CisKKyAgICBhdXRvIENoZWNrZXJJdCA9IGxsdm06OmZpbmRfaWYoQ2hlY2tlcnMsIENoZWNrZXJUaGF0TmVlZHNEZXBzKTsKKyAgICBhc3NlcnQoQ2hlY2tlckl0ICE9IENoZWNrZXJzLmVuZCgpICYmCisgICAgICAgICAgICJGYWlsZWQgdG8gZmluZCB0aGUgY2hlY2tlciB3aGlsZSBhdHRlbXB0aW5nIHRvIHNldCB1cCBpdCdzICIKKyAgICAgICAgICAgImRlcGVuZGVuY2llcyEiKTsKKworICAgIGF1dG8gRGVwZW5kZW5jeUl0ID0gbGx2bTo6ZmluZF9pZihDaGVja2VycywgRGVwZW5kZW5jeSk7CisgICAgYXNzZXJ0KERlcGVuZGVuY3lJdCAhPSBDaGVja2Vycy5lbmQoKSAmJgorICAgICAgICAgICAiRmFpbGVkIHRvIGZpbmQgdGhlIGRlcGVuZGVuY3kgb2YgYSBjaGVja2VyISIpOworCisgICAgQ2hlY2tlckl0LT5EZXBlbmRlbmNpZXMucHVzaF9iYWNrKCYqRGVwZW5kZW5jeUl0KTsKKyAgfQorCisgIC8vIEZJWE1FOiBUaGlzICpyZWFsbHkqIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZnJvbnRlbmQgZmxhZyBkZXNjcmlwdGlvbnMuCisgIC8vLyBJbml0aWFsaXplcyBhIENoZWNrZXJNYW5hZ2VyIGJ5IGNhbGxpbmcgdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBmb3IKKyAgLy8vIGFsbCBjaGVja2VycyBzcGVjaWZpZWQgYnkgdGhlIGdpdmVuIENoZWNrZXJPcHRJbmZvIGxpc3QuIFRoZSBvcmRlciBvZiB0aGlzCisgIC8vLyBsaXN0IGlzIHNpZ25pZmljYW50OyBsYXRlciBvcHRpb25zIGNhbiBiZSB1c2VkIHRvIHJldmVyc2UgZWFybGllciBvbmVzLgorICAvLy8gVGhpcyBjYW4gYmUgdXNlZCB0byBleGNsdWRlIGNlcnRhaW4gY2hlY2tlcnMgaW4gYW4gaW5jbHVkZWQgcGFja2FnZS4KKyAgdm9pZCBpbml0aWFsaXplTWFuYWdlcihDaGVja2VyTWFuYWdlciAmbWdyKSBjb25zdDsKKworICAvLy8gQ2hlY2sgaWYgZXZlcnkgb3B0aW9uIGNvcnJlc3BvbmRzIHRvIGEgc3BlY2lmaWMgY2hlY2tlciBvciBwYWNrYWdlLgorICB2b2lkIHZhbGlkYXRlQ2hlY2tlck9wdGlvbnMoKSBjb25zdDsKKworICAvLy8gUHJpbnRzIHRoZSBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiBhbGwgY2hlY2tlcnMgaW4gdGhpcyByZWdpc3RyeS4KKyAgLy8vIFRoaXMgb3V0cHV0IGlzIG5vdCBpbnRlbmRlZCB0byBiZSBtYWNoaW5lLXBhcnNlYWJsZS4KKyAgdm9pZCBwcmludEhlbHAocmF3X29zdHJlYW0gJm91dCwgc2l6ZV90IG1heE5hbWVDaGFycyA9IDMwKSBjb25zdDsKKyAgdm9pZCBwcmludExpc3QocmF3X29zdHJlYW0gJm91dCkgY29uc3Q7CisKK3ByaXZhdGU6CisgIC8vLyBDb2xsZWN0IGFsbCBlbmFibGVkIGNoZWNrZXJzLiBUaGUgcmV0dXJuZWQgY29udGFpbmVyIHByZXNlcnZlcyB0aGUgb3JkZXIKKyAgLy8vIG9mIGluc2VydGlvbiwgYXMgZGVwZW5kZW5jaWVzIGhhdmUgdG8gYmUgZW5hYmxlZCBiZWZvcmUgdGhlIGNoZWNrZXJzIHRoYXQKKyAgLy8vIGRlcGVuZCBvbiB0aGVtLgorICBDaGVja2VySW5mb1NldCBnZXRFbmFibGVkQ2hlY2tlcnMoKSBjb25zdDsKKworICAvLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHJhbmdlIG9mIG11dGFibGUgQ2hlY2tlckluZm9zIFxwIENtZExpbmVBcmcgYXBwbGllcyB0by4KKyAgLy8vIEZvciBleGFtcGxlLCBpdCdsbCByZXR1cm4gdGhlIGNoZWNrZXJzIGZvciB0aGUgY29yZSBwYWNrYWdlLCBpZgorICAvLy8gXHAgQ21kTGluZUFyZyBpcyAiY29yZSIuCisgIENoZWNrZXJJbmZvTGlzdFJhbmdlIGdldE11dGFibGVDaGVja2Vyc0ZvckNtZExpbmVBcmcoU3RyaW5nUmVmIENtZExpbmVBcmcpOworCisgIENoZWNrZXJJbmZvTGlzdCBDaGVja2VyczsKKyAgbGx2bTo6U3RyaW5nTWFwPHNpemVfdD4gUGFja2FnZXM7CisKKyAgRGlhZ25vc3RpY3NFbmdpbmUgJkRpYWdzOworICBBbmFseXplck9wdGlvbnMgJkFuT3B0czsKKyAgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgZW50bworCit9IC8vIG5hbWVzcGFjZSBjbGFuZworCisjZW5kaWYgLy8gTExWTV9DTEFOR19TVEFUSUNBTkFMWVpFUl9DT1JFX0NIRUNLRVJSRUdJU1RSWV9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Gcm9udGVuZC9Gcm9udGVuZEFjdGlvbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0Zyb250ZW5kL0Zyb250ZW5kQWN0aW9ucy5oCmluZGV4IGJhMzdiN2YuLjVmMjZhNDggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0Zyb250ZW5kL0Zyb250ZW5kQWN0aW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0Zyb250ZW5kL0Zyb250ZW5kQWN0aW9ucy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBGcm9udGVuZEFjdGlvbnMuaCAtIFVzZWZ1bCBGcm9udGVuZCBBY3Rpb25zIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNTIsOSArNTEsMTYgQEAKICAgbGx2bTo6U3RyaW5nTWFwPFN0bXQgKj4gJkJvZGllczsKIH07CiAKLXZvaWQgcHJpbnRDaGVja2VySGVscChyYXdfb3N0cmVhbSAmT1MsIEFycmF5UmVmPHN0ZDo6c3RyaW5nPiBwbHVnaW5zKTsKK3ZvaWQgcHJpbnRDaGVja2VySGVscChyYXdfb3N0cmVhbSAmT1MsCisgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8c3RkOjpzdHJpbmc+IHBsdWdpbnMsCisgICAgICAgICAgICAgICAgICAgICAgQW5hbHl6ZXJPcHRpb25zICZvcHRzLAorICAgICAgICAgICAgICAgICAgICAgIERpYWdub3N0aWNzRW5naW5lICZkaWFncywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYW5nT3B0aW9ucyAmTGFuZ09wdHMpOwogdm9pZCBwcmludEVuYWJsZWRDaGVja2VyTGlzdChyYXdfb3N0cmVhbSAmT1MsIEFycmF5UmVmPHN0ZDo6c3RyaW5nPiBwbHVnaW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBbmFseXplck9wdGlvbnMgJm9wdHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbmFseXplck9wdGlvbnMgJm9wdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpYWdub3N0aWNzRW5naW5lICZkaWFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGFuZ09wdGlvbnMgJkxhbmdPcHRzKTsKK3ZvaWQgcHJpbnRBbmFseXplckNvbmZpZ0xpc3QocmF3X29zdHJlYW0gJk9TKTsKIAogfSAvLyBlbmQgR1IgbmFtZXNwYWNlCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0Zyb250ZW5kL01vZGVsQ29uc3VtZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1N0YXRpY0FuYWx5emVyL0Zyb250ZW5kL01vZGVsQ29uc3VtZXIuaAppbmRleCBmYTAwZmZkLi41ZjlhZTc4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9TdGF0aWNBbmFseXplci9Gcm9udGVuZC9Nb2RlbENvbnN1bWVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvU3RhdGljQW5hbHl6ZXIvRnJvbnRlbmQvTW9kZWxDb25zdW1lci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBNb2RlbENvbnN1bWVyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9BU1REaWZmL0FTVERpZmYuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQVNURGlmZi9BU1REaWZmLmgKaW5kZXggZGQxMWM5MS4uZDZjYmMwOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9BU1REaWZmL0FTVERpZmYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0FTVERpZmYvQVNURGlmZi5oCkBAIC0xLDEwICsxLDkgQEAKIC8vPT09LSBBU1REaWZmLmggLSBBU1QgZGlmZmVyZW5jaW5nIEFQSSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi0gLT09PS8vCiAvLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQVNURGlmZi9BU1REaWZmSW50ZXJuYWwuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQVNURGlmZi9BU1REaWZmSW50ZXJuYWwuaAppbmRleCBhNzZhZDM3Li4wYzE1YjMwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0FTVERpZmYvQVNURGlmZkludGVybmFsLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9BU1REaWZmL0FTVERpZmZJbnRlcm5hbC5oCkBAIC0xLDEwICsxLDkgQEAKIC8vPT09LSBBU1REaWZmSW50ZXJuYWwuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi0gLT09PS8vCiAvLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0FsbFRVc0V4ZWN1dGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9BbGxUVXNFeGVjdXRpb24uaAppbmRleCBlZTM4NDMzLi5lNjcwZjU0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0FsbFRVc0V4ZWN1dGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQWxsVFVzRXhlY3V0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBBbGxUVXNFeGVjdXRpb24uaCAtIEV4ZWN1dGUgYWN0aW9ucyBvbiBhbGwgVFVzLiAtKi0gQysrIC0tLS0tLS0tKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTcyLDYgKzcxLDggQEAKICAgdW5zaWduZWQgVGhyZWFkQ291bnQ7CiB9OwogCitleHRlcm4gbGx2bTo6Y2w6Om9wdDxzdGQ6OnN0cmluZz4gRmlsdGVyOworCiB9IC8vIGVuZCBuYW1lc3BhY2UgdG9vbGluZwogfSAvLyBlbmQgbmFtZXNwYWNlIGNsYW5nCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQXJndW1lbnRzQWRqdXN0ZXJzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0FyZ3VtZW50c0FkanVzdGVycy5oCmluZGV4IDk0Y2NmMWYuLmJmMDg4NjAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQXJndW1lbnRzQWRqdXN0ZXJzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9Bcmd1bWVudHNBZGp1c3RlcnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBBcmd1bWVudHNBZGp1c3RlcnMuaCAtIENvbW1hbmQgbGluZSBhcmd1bWVudHMgYWRqdXN0ZXIgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNjEsNiArNjAsMTAgQEAKICAgICBjb25zdCBjaGFyICpFeHRyYSwKICAgICBBcmd1bWVudEluc2VydFBvc2l0aW9uIFBvcyA9IEFyZ3VtZW50SW5zZXJ0UG9zaXRpb246OkVORCk7CiAKKy8vLyBHZXRzIGFuIGFyZ3VtZW50IGFkanVzdGVyIHdoaWNoIHN0cmlwcyBwbHVnaW4gcmVsYXRlZCBjb21tYW5kIGxpbmUKKy8vLyBhcmd1bWVudHMuCitBcmd1bWVudHNBZGp1c3RlciBnZXRTdHJpcFBsdWdpbnNBZGp1c3RlcigpOworCiAvLy8gR2V0cyBhbiBhcmd1bWVudCBhZGp1c3RlciB3aGljaCBhZGp1c3RzIHRoZSBhcmd1bWVudHMgaW4gc2VxdWVuY2UKIC8vLyB3aXRoIHRoZSBccCBGaXJzdCBhZGp1c3RlciBhbmQgdGhlbiB3aXRoIHRoZSBccCBTZWNvbmQgb25lLgogQXJndW1lbnRzQWRqdXN0ZXIgY29tYmluZUFkanVzdGVycyhBcmd1bWVudHNBZGp1c3RlciBGaXJzdCwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQ29tbW9uT3B0aW9uc1BhcnNlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9Db21tb25PcHRpb25zUGFyc2VyLmgKaW5kZXggN2FhYTcxMi4uYTViZmVlZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9Db21tb25PcHRpb25zUGFyc2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9Db21tb25PcHRpb25zUGFyc2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29tbW9uT3B0aW9uc1BhcnNlci5oIC0gY29tbW9uIG9wdGlvbnMgZm9yIGNsYW5nIHRvb2xzIC0qLSBDKysgLSotPT09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQ29tcGlsYXRpb25EYXRhYmFzZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9Db21waWxhdGlvbkRhdGFiYXNlLmgKaW5kZXggMzdlNTE1Zi4uOTg0ZTg2NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9Db21waWxhdGlvbkRhdGFiYXNlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9Db21waWxhdGlvbkRhdGFiYXNlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29tcGlsYXRpb25EYXRhYmFzZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE0MSwyNyArMTQwLDYgQEAKICAgdmlydHVhbCBzdGQ6OnZlY3RvcjxDb21waWxlQ29tbWFuZD4gZ2V0QWxsQ29tcGlsZUNvbW1hbmRzKCkgY29uc3Q7CiB9OwogCi0vLy8gSW50ZXJmYWNlIGZvciBjb21waWxhdGlvbiBkYXRhYmFzZSBwbHVnaW5zLgotLy8vCi0vLy8gQSBjb21waWxhdGlvbiBkYXRhYmFzZSBwbHVnaW4gYWxsb3dzIHRoZSB1c2VyIHRvIHJlZ2lzdGVyIGN1c3RvbSBjb21waWxhdGlvbgotLy8vIGRhdGFiYXNlcyB0aGF0IGFyZSBwaWNrZWQgdXAgYXMgY29tcGlsYXRpb24gZGF0YWJhc2UgaWYgdGhlIGNvcnJlc3BvbmRpbmcKLS8vLyBsaWJyYXJ5IGlzIGxpbmtlZCBpbi4gVG8gcmVnaXN0ZXIgYSBwbHVnaW4sIGRlY2xhcmUgYSBzdGF0aWMgdmFyaWFibGUgbGlrZToKLS8vLwotLy8vIFxjb2RlCi0vLy8gc3RhdGljIENvbXBpbGF0aW9uRGF0YWJhc2VQbHVnaW5SZWdpc3RyeTo6QWRkPE15RGF0YWJhc2VQbHVnaW4+Ci0vLy8gWCgibXktY29tcGlsYXRpb24tZGF0YWJhc2UiLCAiUmVhZHMgbXkgb3duIGNvbXBpbGF0aW9uIGRhdGFiYXNlIik7Ci0vLy8gXGVuZGNvZGUKLWNsYXNzIENvbXBpbGF0aW9uRGF0YWJhc2VQbHVnaW4gewotcHVibGljOgotICB2aXJ0dWFsIH5Db21waWxhdGlvbkRhdGFiYXNlUGx1Z2luKCk7Ci0KLSAgLy8vIExvYWRzIGEgY29tcGlsYXRpb24gZGF0YWJhc2UgZnJvbSBhIGJ1aWxkIGRpcmVjdG9yeS4KLSAgLy8vCi0gIC8vLyBcc2VlIENvbXBpbGF0aW9uRGF0YWJhc2U6OmxvYWRGcm9tRGlyZWN0b3J5KCkuCi0gIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENvbXBpbGF0aW9uRGF0YWJhc2U+Ci0gIGxvYWRGcm9tRGlyZWN0b3J5KFN0cmluZ1JlZiBEaXJlY3RvcnksIHN0ZDo6c3RyaW5nICZFcnJvck1lc3NhZ2UpID0gMDsKLX07Ci0KIC8vLyBBIGNvbXBpbGF0aW9uIGRhdGFiYXNlIHRoYXQgcmV0dXJucyBhIHNpbmdsZSBjb21waWxlIGNvbW1hbmQgbGluZS4KIC8vLwogLy8vIFVzZWZ1bCB3aGVuIHdlIHdhbnQgYSB0b29sIHRvIGJlaGF2ZSBtb3JlIGxpa2UgYSBjb21waWxlciBpbnZvY2F0aW9uLgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9Db21waWxhdGlvbkRhdGFiYXNlUGx1Z2luUmVnaXN0cnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQ29tcGlsYXRpb25EYXRhYmFzZVBsdWdpblJlZ2lzdHJ5LmgKaW5kZXggMDUxYTA4ZS4uOGM1OGFkOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9Db21waWxhdGlvbkRhdGFiYXNlUGx1Z2luUmVnaXN0cnkuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0NvbXBpbGF0aW9uRGF0YWJhc2VQbHVnaW5SZWdpc3RyeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvbXBpbGF0aW9uRGF0YWJhc2VQbHVnaW5SZWdpc3RyeS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTYsNiArMTUsMjcgQEAKIG5hbWVzcGFjZSBjbGFuZyB7CiBuYW1lc3BhY2UgdG9vbGluZyB7CiAKKy8vLyBJbnRlcmZhY2UgZm9yIGNvbXBpbGF0aW9uIGRhdGFiYXNlIHBsdWdpbnMuCisvLy8KKy8vLyBBIGNvbXBpbGF0aW9uIGRhdGFiYXNlIHBsdWdpbiBhbGxvd3MgdGhlIHVzZXIgdG8gcmVnaXN0ZXIgY3VzdG9tIGNvbXBpbGF0aW9uCisvLy8gZGF0YWJhc2VzIHRoYXQgYXJlIHBpY2tlZCB1cCBhcyBjb21waWxhdGlvbiBkYXRhYmFzZSBpZiB0aGUgY29ycmVzcG9uZGluZworLy8vIGxpYnJhcnkgaXMgbGlua2VkIGluLiBUbyByZWdpc3RlciBhIHBsdWdpbiwgZGVjbGFyZSBhIHN0YXRpYyB2YXJpYWJsZSBsaWtlOgorLy8vCisvLy8gXGNvZGUKKy8vLyBzdGF0aWMgQ29tcGlsYXRpb25EYXRhYmFzZVBsdWdpblJlZ2lzdHJ5OjpBZGQ8TXlEYXRhYmFzZVBsdWdpbj4KKy8vLyBYKCJteS1jb21waWxhdGlvbi1kYXRhYmFzZSIsICJSZWFkcyBteSBvd24gY29tcGlsYXRpb24gZGF0YWJhc2UiKTsKKy8vLyBcZW5kY29kZQorY2xhc3MgQ29tcGlsYXRpb25EYXRhYmFzZVBsdWdpbiB7CitwdWJsaWM6CisgIHZpcnR1YWwgfkNvbXBpbGF0aW9uRGF0YWJhc2VQbHVnaW4oKTsKKworICAvLy8gTG9hZHMgYSBjb21waWxhdGlvbiBkYXRhYmFzZSBmcm9tIGEgYnVpbGQgZGlyZWN0b3J5LgorICAvLy8KKyAgLy8vIFxzZWUgQ29tcGlsYXRpb25EYXRhYmFzZTo6bG9hZEZyb21EaXJlY3RvcnkoKS4KKyAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8Q29tcGlsYXRpb25EYXRhYmFzZT4KKyAgbG9hZEZyb21EaXJlY3RvcnkoU3RyaW5nUmVmIERpcmVjdG9yeSwgc3RkOjpzdHJpbmcgJkVycm9yTWVzc2FnZSkgPSAwOworfTsKKwogdXNpbmcgQ29tcGlsYXRpb25EYXRhYmFzZVBsdWdpblJlZ2lzdHJ5ID0KICAgICBsbHZtOjpSZWdpc3RyeTxDb21waWxhdGlvbkRhdGFiYXNlUGx1Z2luPjsKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9Db3JlL0RpYWdub3N0aWMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQ29yZS9EaWFnbm9zdGljLmgKaW5kZXggZGRiNDAxMC4uNjQ2YmI1NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9Db3JlL0RpYWdub3N0aWMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0NvcmUvRGlhZ25vc3RpYy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gRGlhZ25vc3RpYy5oIC0gRnJhbWV3b3JrIGZvciBjbGFuZyBkaWFnbm9zdGljcyB0b29scyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQ29yZS9Mb29rdXAuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQ29yZS9Mb29rdXAuaAppbmRleCBiYzJiNGRiLi5hMjdlOTE1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0NvcmUvTG9va3VwLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9Db3JlL0xvb2t1cC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gTG9va3VwLmggLSBGcmFtZXdvcmsgZm9yIGNsYW5nIHJlZmFjdG9yaW5nIHRvb2xzIC0tKi0gQysrIC0qLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0NvcmUvUmVwbGFjZW1lbnQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQ29yZS9SZXBsYWNlbWVudC5oCmluZGV4IGJhMTFjYTQuLjA5Mzc0YzUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQ29yZS9SZXBsYWNlbWVudC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvQ29yZS9SZXBsYWNlbWVudC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFJlcGxhY2VtZW50LmggLSBGcmFtZXdvcmsgZm9yIGNsYW5nIHJlZmFjdG9yaW5nIHRvb2xzIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0RpYWdub3N0aWNzWWFtbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9EaWFnbm9zdGljc1lhbWwuaAppbmRleCBiZjA3MzJiLi4xY2QyYTRlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0RpYWdub3N0aWNzWWFtbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvRGlhZ25vc3RpY3NZYW1sLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIERpYWdub3N0aWNzWWFtbC5oIC0tIFNlcmlhbGlhemF0aW9uIGZvciBEaWFnbm9zdGljc3MgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KQEAgLTIyLDEwICsyMSwxOSBAQAogI2luY2x1ZGUgPHN0cmluZz4KIAogTExWTV9ZQU1MX0lTX1NFUVVFTkNFX1ZFQ1RPUihjbGFuZzo6dG9vbGluZzo6RGlhZ25vc3RpYykKK0xMVk1fWUFNTF9JU19TRVFVRU5DRV9WRUNUT1IoY2xhbmc6OnRvb2xpbmc6OkRpYWdub3N0aWNNZXNzYWdlKQogCiBuYW1lc3BhY2UgbGx2bSB7CiBuYW1lc3BhY2UgeWFtbCB7CiAKK3RlbXBsYXRlIDw+IHN0cnVjdCBNYXBwaW5nVHJhaXRzPGNsYW5nOjp0b29saW5nOjpEaWFnbm9zdGljTWVzc2FnZT4geworICBzdGF0aWMgdm9pZCBtYXBwaW5nKElPICZJbywgY2xhbmc6OnRvb2xpbmc6OkRpYWdub3N0aWNNZXNzYWdlICZNKSB7CisgICAgSW8ubWFwUmVxdWlyZWQoIk1lc3NhZ2UiLCBNLk1lc3NhZ2UpOworICAgIElvLm1hcE9wdGlvbmFsKCJGaWxlUGF0aCIsIE0uRmlsZVBhdGgpOworICAgIElvLm1hcE9wdGlvbmFsKCJGaWxlT2Zmc2V0IiwgTS5GaWxlT2Zmc2V0KTsKKyAgfQorfTsKKwogdGVtcGxhdGUgPD4gc3RydWN0IE1hcHBpbmdUcmFpdHM8Y2xhbmc6OnRvb2xpbmc6OkRpYWdub3N0aWM+IHsKICAgLy8vIEhlbHBlciB0byAoZGUpc2VyaWFsaXplIGEgRGlhZ25vc3RpYyBzaW5jZSB3ZSBkb24ndCBoYXZlIGRpcmVjdAogICAvLy8gYWNjZXNzIHRvIGl0cyBkYXRhIG1lbWJlcnMuCkBAIC01OSw2ICs2Nyw3IEBACiAgICAgSW8ubWFwUmVxdWlyZWQoIk1lc3NhZ2UiLCBLZXlzLT5NZXNzYWdlLk1lc3NhZ2UpOwogICAgIElvLm1hcFJlcXVpcmVkKCJGaWxlT2Zmc2V0IiwgS2V5cy0+TWVzc2FnZS5GaWxlT2Zmc2V0KTsKICAgICBJby5tYXBSZXF1aXJlZCgiRmlsZVBhdGgiLCBLZXlzLT5NZXNzYWdlLkZpbGVQYXRoKTsKKyAgICBJby5tYXBPcHRpb25hbCgiTm90ZXMiLCBLZXlzLT5Ob3Rlcyk7CiAKICAgICAvLyBGSVhNRTogRXhwb3J0IHByb3Blcmx5IGFsbCB0aGUgZGlmZmVyZW50IGZpZWxkcy4KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9FeGVjdXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvRXhlY3V0aW9uLmgKaW5kZXggN2Y0YjE0NS4uNzRmMGRmNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9FeGVjdXRpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0V4ZWN1dGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gRXhlY3V0aW9uLmggLSBFeGVjdXRpbmcgY2xhbmcgZnJvbnRlbmQgYWN0aW9ucyAtKi0gQysrIC0tLS0tLS0tLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zNyw2ICszNiw4IEBACiBuYW1lc3BhY2UgY2xhbmcgewogbmFtZXNwYWNlIHRvb2xpbmcgewogCitleHRlcm4gbGx2bTo6Y2w6Om9wdDxzdGQ6OnN0cmluZz4gRXhlY3V0b3JOYW1lOworCiAvLy8gQW4gYWJzdHJhY3Rpb24gZm9yIHRoZSByZXN1bHQgb2YgYSB0b29sIGV4ZWN1dGlvbi4gRm9yIGV4YW1wbGUsIHRoZQogLy8vIHVuZGVybHlpbmcgcmVzdWx0IGNhbiBiZSBpbi1tZW1vcnkgb3Igb24tZGlzay4KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9GaWxlTWF0Y2hUcmllLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0ZpbGVNYXRjaFRyaWUuaAppbmRleCAxMWQxMmYzLi42ZjVjOGRhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0ZpbGVNYXRjaFRyaWUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0ZpbGVNYXRjaFRyaWUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBGaWxlTWF0Y2hUcmllLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9GaXhJdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9GaXhJdC5oCmluZGV4IGIzNmYzNzguLjhjNzYyMzYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvRml4SXQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0ZpeEl0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBGaXhJdC5oIC0gRml4SXQgSGludCB1dGlsaXRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvSW5jbHVzaW9ucy9IZWFkZXJJbmNsdWRlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9JbmNsdXNpb25zL0hlYWRlckluY2x1ZGVzLmgKaW5kZXggZDk5YTMyOC4uZWM2ZjBlYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9JbmNsdXNpb25zL0hlYWRlckluY2x1ZGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9JbmNsdXNpb25zL0hlYWRlckluY2x1ZGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBIZWFkZXJJbmNsdWRlcy5oIC0gSW5zZXJ0L0RlbGV0ZSAjaW5jbHVkZXMgZm9yIEMrKyBjb2RlLS0qLSBDKystKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0luY2x1c2lvbnMvSW5jbHVkZVN0eWxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0luY2x1c2lvbnMvSW5jbHVkZVN0eWxlLmgKaW5kZXggYTA5M2RmZi4uNzE5MTM4MCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9JbmNsdXNpb25zL0luY2x1ZGVTdHlsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvSW5jbHVzaW9ucy9JbmNsdWRlU3R5bGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEluY2x1ZGVTdHlsZS5oIC0gU3R5bGUgb2YgQysrICNpbmNsdWRlIGRpcmVjdGl2ZXMgLS0tLS0tLSotIEMrKy0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvSlNPTkNvbXBpbGF0aW9uRGF0YWJhc2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvSlNPTkNvbXBpbGF0aW9uRGF0YWJhc2UuaAppbmRleCA4ODJhZmM2Li45NjU4MjQ1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL0pTT05Db21waWxhdGlvbkRhdGFiYXNlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9KU09OQ29tcGlsYXRpb25EYXRhYmFzZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEpTT05Db21waWxhdGlvbkRhdGFiYXNlLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nLmgKaW5kZXggNjRiMDE4ZS4uYjgyYjA5ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFJlZmFjdG9yaW5nLmggLSBGcmFtZXdvcmsgZm9yIGNsYW5nIHJlZmFjdG9yaW5nIHRvb2xzIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9BU1RTZWxlY3Rpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvQVNUU2VsZWN0aW9uLmgKaW5kZXggYWEwMmE2OC4uYjg3ZWQyOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9BU1RTZWxlY3Rpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL0FTVFNlbGVjdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQVNUU2VsZWN0aW9uLmggLSBDbGFuZyByZWZhY3RvcmluZyBsaWJyYXJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9BdG9taWNDaGFuZ2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvQXRvbWljQ2hhbmdlLmgKaW5kZXggYmZlMDQyZi4uMzJlNDYyNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9BdG9taWNDaGFuZ2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL0F0b21pY0NoYW5nZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQXRvbWljQ2hhbmdlLmggLSBBdG9taWNDaGFuZ2UgY2xhc3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL0V4dHJhY3QvRXh0cmFjdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9FeHRyYWN0L0V4dHJhY3QuaAppbmRleCAyZmQ3NmQyLi45MzA5OTEzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL0V4dHJhY3QvRXh0cmFjdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvRXh0cmFjdC9FeHRyYWN0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBFeHRyYWN0LmggLSBDbGFuZyByZWZhY3RvcmluZyBsaWJyYXJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlY3Vyc2l2ZVN5bWJvbFZpc2l0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVjdXJzaXZlU3ltYm9sVmlzaXRvci5oCmluZGV4IGJkMzE0ZjAuLjQxYTQ0OGYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVjdXJzaXZlU3ltYm9sVmlzaXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVjdXJzaXZlU3ltYm9sVmlzaXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gUmVjdXJzaXZlU3ltYm9sVmlzaXRvci5oIC0gQ2xhbmcgcmVmYWN0b3JpbmcgbGlicmFyeSAtLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ0FjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ0FjdGlvbi5oCmluZGV4IGM0MDgwMjMuLmQ0Mjk0ZGQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVmYWN0b3JpbmdBY3Rpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nQWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBSZWZhY3RvcmluZ0FjdGlvbi5oIC0gQ2xhbmcgcmVmYWN0b3JpbmcgbGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nQWN0aW9uUnVsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ0FjdGlvblJ1bGUuaAppbmRleCBjZTRhOTFjLi4wYzZlMzhhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nQWN0aW9uUnVsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVmYWN0b3JpbmdBY3Rpb25SdWxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBSZWZhY3RvcmluZ0FjdGlvblJ1bGUuaCAtIENsYW5nIHJlZmFjdG9yaW5nIGxpYnJhcnkgLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVmYWN0b3JpbmdBY3Rpb25SdWxlUmVxdWlyZW1lbnRzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nQWN0aW9uUnVsZVJlcXVpcmVtZW50cy5oCmluZGV4IDM1NWE2YTUuLjZhNmRkODMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVmYWN0b3JpbmdBY3Rpb25SdWxlUmVxdWlyZW1lbnRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ0FjdGlvblJ1bGVSZXF1aXJlbWVudHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFJlZmFjdG9yaW5nQWN0aW9uUnVsZVJlcXVpcmVtZW50cy5oIC0gQ2xhbmcgcmVmYWN0b3JpbmcgbGlicmFyeSAtLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVmYWN0b3JpbmdBY3Rpb25SdWxlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ0FjdGlvblJ1bGVzLmgKaW5kZXggMzMyMDZkOS4uZTk2MDZmZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ0FjdGlvblJ1bGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ0FjdGlvblJ1bGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBSZWZhY3RvcmluZ0FjdGlvblJ1bGVzLmggLSBDbGFuZyByZWZhY3RvcmluZyBsaWJyYXJ5IC0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nQWN0aW9uUnVsZXNJbnRlcm5hbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ0FjdGlvblJ1bGVzSW50ZXJuYWwuaAppbmRleCA3NWI2YzhmLi5jYzZhZTgzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nQWN0aW9uUnVsZXNJbnRlcm5hbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVmYWN0b3JpbmdBY3Rpb25SdWxlc0ludGVybmFsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBSZWZhY3RvcmluZ0FjdGlvblJ1bGVzSW50ZXJuYWwuaCAtIENsYW5nIHJlZmFjdG9yaW5nIGxpYnJhcnkgLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nRGlhZ25vc3RpYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ0RpYWdub3N0aWMuaAppbmRleCA2NzY3ZGM3Li45NjdlN2I1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nRGlhZ25vc3RpYy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVmYWN0b3JpbmdEaWFnbm9zdGljLmgKQEAgLTEsMzAgKzEsMTQgQEAKIC8vPT09LS0tIFJlZmFjdG9yaW5nRGlhZ25vc3RpYy5oIC0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKICNpZm5kZWYgTExWTV9DTEFOR19UT09MSU5HX1JFRkFDVE9SSU5HX1JFRkFDVE9SSU5HRElBR05PU1RJQ19ICiAjZGVmaW5lIExMVk1fQ0xBTkdfVE9PTElOR19SRUZBQ1RPUklOR19SRUZBQ1RPUklOR0RJQUdOT1NUSUNfSAogCi0jaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpYy5oIgotI2luY2x1ZGUgImNsYW5nL0Jhc2ljL1BhcnRpYWxEaWFnbm9zdGljLmgiCi0KLW5hbWVzcGFjZSBjbGFuZyB7Ci1uYW1lc3BhY2UgZGlhZyB7Ci1lbnVtIHsKLSNkZWZpbmUgRElBRyhFTlVNLCBGTEFHUywgREVGQVVMVF9NQVBQSU5HLCBERVNDLCBHUk9VUCwgU0ZJTkFFLCBOT1dFUlJPUiwgICAgICBcCi0gICAgICAgICAgICAgU0hPV0lOU1lTSEVBREVSLCBDQVRFR09SWSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBFTlVNLAotI2RlZmluZSBSRUZBQ1RPUklOR1NUQVJUCi0jaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpY1JlZmFjdG9yaW5nS2luZHMuaW5jIgotI3VuZGVmIERJQUcKLSAgTlVNX0JVSUxUSU5fUkVGQUNUT1JJTkdfRElBR05PU1RJQ1MKLX07Ci19IC8vIGVuZCBuYW1lc3BhY2UgZGlhZwotfSAvLyBlbmQgbmFtZXNwYWNlIGNsYW5nCisjaW5jbHVkZSAiY2xhbmcvQmFzaWMvRGlhZ25vc3RpY1JlZmFjdG9yaW5nLmgiCiAKICNlbmRpZiAvLyBMTFZNX0NMQU5HX1RPT0xJTkdfUkVGQUNUT1JJTkdfUkVGQUNUT1JJTkdESUFHTk9TVElDX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVmYWN0b3JpbmdPcHRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVmYWN0b3JpbmdPcHRpb24uaAppbmRleCA1MDExMjIzLi42NTllMDJiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nT3B0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ09wdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gUmVmYWN0b3JpbmdPcHRpb24uaCAtIENsYW5nIHJlZmFjdG9yaW5nIGxpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ09wdGlvblZpc2l0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVmYWN0b3JpbmdPcHRpb25WaXNpdG9yLmgKaW5kZXggYWVhOGZhNS4uZDU4YjExMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ09wdGlvblZpc2l0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nT3B0aW9uVmlzaXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gUmVmYWN0b3JpbmdPcHRpb25WaXNpdG9yLmggLSBDbGFuZyByZWZhY3RvcmluZyBsaWJyYXJ5IC0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ09wdGlvbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVmYWN0b3JpbmdPcHRpb25zLmgKaW5kZXggZTQ1YzBhMC4uZjI1ZjUyNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ09wdGlvbnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nT3B0aW9ucy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gUmVmYWN0b3JpbmdPcHRpb25zLmggLSBDbGFuZyByZWZhY3RvcmluZyBsaWJyYXJ5IC0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ1Jlc3VsdENvbnN1bWVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nUmVzdWx0Q29uc3VtZXIuaAppbmRleCAwMDVlYjg3Li4yMDM1YzAyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nUmVzdWx0Q29uc3VtZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlZmFjdG9yaW5nUmVzdWx0Q29uc3VtZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFJlZmFjdG9yaW5nUmVzdWx0Q29uc3VtZXIuaCAtIENsYW5nIHJlZmFjdG9yaW5nIGxpYnJhcnkgLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVmYWN0b3JpbmdSdWxlQ29udGV4dC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ1J1bGVDb250ZXh0LmgKaW5kZXggODgyYWI4Mi4uNTI3MWE1NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ1J1bGVDb250ZXh0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZWZhY3RvcmluZ1J1bGVDb250ZXh0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBSZWZhY3RvcmluZ1J1bGVDb250ZXh0LmggLSBDbGFuZyByZWZhY3RvcmluZyBsaWJyYXJ5IC0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlbmFtZS9SZW5hbWluZ0FjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZW5hbWUvUmVuYW1pbmdBY3Rpb24uaAppbmRleCA1NzcxYTFjLi4zMTVjZTk5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlbmFtZS9SZW5hbWluZ0FjdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVuYW1lL1JlbmFtaW5nQWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBSZW5hbWluZ0FjdGlvbi5oIC0gQ2xhbmcgcmVmYWN0b3JpbmcgbGlicmFyeSAtLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlbmFtZS9TeW1ib2xOYW1lLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlbmFtZS9TeW1ib2xOYW1lLmgKaW5kZXggNDJlMGE1Yy4uOTEzMWE0NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZW5hbWUvU3ltYm9sTmFtZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVuYW1lL1N5bWJvbE5hbWUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFN5bWJvbE5hbWUuaCAtIENsYW5nIHJlZmFjdG9yaW5nIGxpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVuYW1lL1N5bWJvbE9jY3VycmVuY2VzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlbmFtZS9TeW1ib2xPY2N1cnJlbmNlcy5oCmluZGV4IDBmODUzMDEuLjNiOTAzY2IgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVuYW1lL1N5bWJvbE9jY3VycmVuY2VzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZW5hbWUvU3ltYm9sT2NjdXJyZW5jZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFN5bWJvbE9jY3VycmVuY2VzLmggLSBDbGFuZyByZWZhY3RvcmluZyBsaWJyYXJ5IC0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVuYW1lL1VTUkZpbmRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZW5hbWUvVVNSRmluZGVyLmgKaW5kZXggMzYyMmJkMC4uMzBmN2YwYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZW5hbWUvVVNSRmluZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZW5hbWUvVVNSRmluZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBVU1JGaW5kZXIuaCAtIENsYW5nIHJlZmFjdG9yaW5nIGxpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlbmFtZS9VU1JGaW5kaW5nQWN0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nL1JlbmFtZS9VU1JGaW5kaW5nQWN0aW9uLmgKaW5kZXggZWJjOTc5MC4uNzI2OTg3ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZW5hbWUvVVNSRmluZGluZ0FjdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVuYW1lL1VTUkZpbmRpbmdBY3Rpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFVTUkZpbmRpbmdBY3Rpb24uaCAtIENsYW5nIHJlZmFjdG9yaW5nIGxpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmcvUmVuYW1lL1VTUkxvY0ZpbmRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZW5hbWUvVVNSTG9jRmluZGVyLmgKaW5kZXggZTEyMjhlOS4uN2E3ZGQ3NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZW5hbWUvVVNSTG9jRmluZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZy9SZW5hbWUvVVNSTG9jRmluZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBVU1JMb2NGaW5kZXIuaCAtIENsYW5nIHJlZmFjdG9yaW5nIGxpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nQ2FsbGJhY2tzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlZmFjdG9yaW5nQ2FsbGJhY2tzLmgKaW5kZXggMjEzN2UwMC4uYWMzZjI4ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZWZhY3RvcmluZ0NhbGxiYWNrcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvUmVmYWN0b3JpbmdDYWxsYmFja3MuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFJlZmFjdG9yaW5nQ2FsbGJhY2tzLmggLSBTdHJ1Y3R1cmFsIHF1ZXJ5IGZyYW1ld29yayAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9SZXBsYWNlbWVudHNZYW1sLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlcGxhY2VtZW50c1lhbWwuaAppbmRleCA4ZTQxNTI1Li44M2UzNWQ2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlcGxhY2VtZW50c1lhbWwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1JlcGxhY2VtZW50c1lhbWwuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gUmVwbGFjZW1lbnRzWWFtbC5oIC0tIFNlcmlhbGlhemF0aW9uIGZvciBSZXBsYWNlbWVudHMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvU3RhbmRhbG9uZUV4ZWN1dGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9TdGFuZGFsb25lRXhlY3V0aW9uLmgKaW5kZXggOTY0ODdiNC4uNWZiYzFlNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9TdGFuZGFsb25lRXhlY3V0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9TdGFuZGFsb25lRXhlY3V0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBTdGFuZGFsb25lRXhlY3V0aW9uLmggLSBTdGFuZGFsb25lIGV4ZWN1dGlvbi4gLSotIEMrKyAtLS0tLS0tLS0tKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvVG9vbEV4ZWN1dG9yUGx1Z2luUmVnaXN0cnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2NsYW5nL1Rvb2xpbmcvVG9vbEV4ZWN1dG9yUGx1Z2luUmVnaXN0cnkuaAppbmRleCA5MjE2ODlkLi41MzA0ZmYyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1Rvb2xFeGVjdXRvclBsdWdpblJlZ2lzdHJ5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9Ub29sRXhlY3V0b3JQbHVnaW5SZWdpc3RyeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFRvb2xFeGVjdXRvclBsdWdpblJlZ2lzdHJ5LmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvY2xhbmcvVG9vbGluZy9Ub29saW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1Rvb2xpbmcuaAppbmRleCAzNThhY2YzLi5mNzY0ODRhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1Rvb2xpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9jbGFuZy9Ub29saW5nL1Rvb2xpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUb29saW5nLmggLSBGcmFtZXdvcmsgZm9yIHN0YW5kYWxvbmUgQ2xhbmcgdG9vbHMgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjA1LDcgKzIwNCw3IEBACiAvLy8KIC8vLyBccmV0dXJuIFRoZSByZXN1bHRpbmcgQVNUIG9yIG51bGwgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCiBzdGQ6OnVuaXF1ZV9wdHI8QVNUVW5pdD4KLWJ1aWxkQVNURnJvbUNvZGUoY29uc3QgVHdpbmUgJkNvZGUsIGNvbnN0IFR3aW5lICZGaWxlTmFtZSA9ICJpbnB1dC5jYyIsCitidWlsZEFTVEZyb21Db2RlKFN0cmluZ1JlZiBDb2RlLCBTdHJpbmdSZWYgRmlsZU5hbWUgPSAiaW5wdXQuY2MiLAogICAgICAgICAgICAgICAgICBzdGQ6OnNoYXJlZF9wdHI8UENIQ29udGFpbmVyT3BlcmF0aW9ucz4gUENIQ29udGFpbmVyT3BzID0KICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWFrZV9zaGFyZWQ8UENIQ29udGFpbmVyT3BlcmF0aW9ucz4oKSk7CiAKQEAgLTIyMywxMCArMjIyLDEwIEBACiAvLy8KIC8vLyBccmV0dXJuIFRoZSByZXN1bHRpbmcgQVNUIG9yIG51bGwgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCiBzdGQ6OnVuaXF1ZV9wdHI8QVNUVW5pdD4gYnVpbGRBU1RGcm9tQ29kZVdpdGhBcmdzKAotICAgIGNvbnN0IFR3aW5lICZDb2RlLCBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJkFyZ3MsCi0gICAgY29uc3QgVHdpbmUgJkZpbGVOYW1lID0gImlucHV0LmNjIiwgY29uc3QgVHdpbmUgJlRvb2xOYW1lID0gImNsYW5nLXRvb2wiLAorICAgIFN0cmluZ1JlZiBDb2RlLCBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJkFyZ3MsCisgICAgU3RyaW5nUmVmIEZpbGVOYW1lID0gImlucHV0LmNjIiwgU3RyaW5nUmVmIFRvb2xOYW1lID0gImNsYW5nLXRvb2wiLAogICAgIHN0ZDo6c2hhcmVkX3B0cjxQQ0hDb250YWluZXJPcGVyYXRpb25zPiBQQ0hDb250YWluZXJPcHMgPQotICAgICAgc3RkOjptYWtlX3NoYXJlZDxQQ0hDb250YWluZXJPcGVyYXRpb25zPigpLAorICAgICAgICBzdGQ6Om1ha2Vfc2hhcmVkPFBDSENvbnRhaW5lck9wZXJhdGlvbnM+KCksCiAgICAgQXJndW1lbnRzQWRqdXN0ZXIgQWRqdXN0ZXIgPSBnZXRDbGFuZ1N0cmlwRGVwZW5kZW5jeUZpbGVBZGp1c3RlcigpKTsKIAogLy8vIFV0aWxpdHkgdG8gcnVuIGEgRnJvbnRlbmRBY3Rpb24gaW4gYSBzaW5nbGUgY2xhbmcgaW52b2NhdGlvbi4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vQXJncy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9BcmdzLmgKaW5kZXggNzY5ZDQ4NC4uZDk0MzY0NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9BcmdzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9BcmdzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQXJncy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBMaW5rZXIKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xMSw2ICsxMCw3IEBACiAjZGVmaW5lIExMRF9BUkdTX0gKIAogI2luY2x1ZGUgImxsZC9Db21tb24vTExWTS5oIgorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9Db2RlR2VuLmgiCiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L01lbW9yeUJ1ZmZlci5oIgogI2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAtMjIsNyArMjIsMTEgQEAKIAogbmFtZXNwYWNlIGxsZCB7CiBuYW1lc3BhY2UgYXJncyB7CisKK2xsdm06OkNvZGVHZW5PcHQ6OkxldmVsIGdldENHT3B0TGV2ZWwoaW50IE9wdExldmVsTFRPKTsKKwogaW50IGdldEludGVnZXIobGx2bTo6b3B0OjpJbnB1dEFyZ0xpc3QgJkFyZ3MsIHVuc2lnbmVkIEtleSwgaW50IERlZmF1bHQpOworCiBzdGQ6OnZlY3RvcjxTdHJpbmdSZWY+IGdldFN0cmluZ3MobGx2bTo6b3B0OjpJbnB1dEFyZ0xpc3QgJkFyZ3MsIGludCBJZCk7CiAKIHVpbnQ2NF90IGdldFpPcHRpb25WYWx1ZShsbHZtOjpvcHQ6OklucHV0QXJnTGlzdCAmQXJncywgaW50IElkLCBTdHJpbmdSZWYgS2V5LApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9Ecml2ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vRHJpdmVyLmgKaW5kZXggZjZkOTI5My4uNzQ1ZWY3MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9Ecml2ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29tbW9uL0RyaXZlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsZC9Db21tb24vRHJpdmVyLmggLSBMaW5rZXIgRHJpdmVyIEVtdWxhdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gTGlua2VyCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9FcnJvckhhbmRsZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vRXJyb3JIYW5kbGVyLmgKaW5kZXggYzE2OWY3Yi4uYmQ5YzI1NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9FcnJvckhhbmRsZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29tbW9uL0Vycm9ySGFuZGxlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEVycm9ySGFuZGxlci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gTGlua2VyCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29tbW9uL0xMVk0uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vTExWTS5oCmluZGV4IGI1ZDBlMmIuLjk0NGJiNDEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vTExWTS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vTExWTS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gTExWTS5oIC0gSW1wb3J0IHZhcmlvdXMgY29tbW9uIExMVk0gZGF0YXR5cGVzIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yMiw1MyArMjEsNjkgQEAKICNpbmNsdWRlIDx1dGlsaXR5PgogCiBuYW1lc3BhY2UgbGx2bSB7Ci0gIC8vIEFEVCdzLgotICBjbGFzcyBFcnJvcjsKLSAgY2xhc3MgU3RyaW5nUmVmOwotICBjbGFzcyBUd2luZTsKLSAgY2xhc3MgTWVtb3J5QnVmZmVyOwotICBjbGFzcyBNZW1vcnlCdWZmZXJSZWY7Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEFycmF5UmVmOwotICB0ZW1wbGF0ZTx1bnNpZ25lZCBJbnRlcm5hbExlbj4gY2xhc3MgU21hbGxTdHJpbmc7Ci0gIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHVuc2lnbmVkIE4+IGNsYXNzIFNtYWxsVmVjdG9yOwotICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBTbWFsbFZlY3RvckltcGw7CisvLyBBRFQncy4KK2NsYXNzIHJhd19vc3RyZWFtOworY2xhc3MgRXJyb3I7CitjbGFzcyBTdHJpbmdSZWY7CitjbGFzcyBUd2luZTsKK2NsYXNzIE1lbW9yeUJ1ZmZlcjsKK2NsYXNzIE1lbW9yeUJ1ZmZlclJlZjsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBBcnJheVJlZjsKK3RlbXBsYXRlIDx1bnNpZ25lZCBJbnRlcm5hbExlbj4gY2xhc3MgU21hbGxTdHJpbmc7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdW5zaWduZWQgTj4gY2xhc3MgU21hbGxWZWN0b3I7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgRXJyb3JPcjsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBFeHBlY3RlZDsKIAotICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICBzdHJ1Y3QgU2F2ZUFuZFJlc3RvcmU7CituYW1lc3BhY2Ugb2JqZWN0IHsKK2NsYXNzIFdhc21PYmplY3RGaWxlOworc3RydWN0IFdhc21TZWN0aW9uOworc3RydWN0IFdhc21TZWdtZW50OworY2xhc3MgV2FzbVN5bWJvbDsKK30gLy8gbmFtZXNwYWNlIG9iamVjdAogCi0gIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gIGNsYXNzIEVycm9yT3I7Ci0KLSAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgY2xhc3MgRXhwZWN0ZWQ7Ci0KLSAgY2xhc3MgcmF3X29zdHJlYW07Ci0gIC8vIFRPRE86IERlbnNlTWFwLCAuLi4KLX0KK25hbWVzcGFjZSB3YXNtIHsKK3N0cnVjdCBXYXNtRXZlbnQ7CitzdHJ1Y3QgV2FzbUV2ZW50VHlwZTsKK3N0cnVjdCBXYXNtRnVuY3Rpb247CitzdHJ1Y3QgV2FzbUdsb2JhbDsKK3N0cnVjdCBXYXNtR2xvYmFsVHlwZTsKK3N0cnVjdCBXYXNtUmVsb2NhdGlvbjsKK3N0cnVjdCBXYXNtU2lnbmF0dXJlOworfSAvLyBuYW1lc3BhY2Ugd2FzbQorfSAvLyBuYW1lc3BhY2UgbGx2bQogCiBuYW1lc3BhY2UgbGxkIHsKLSAgLy8gQ2FzdGluZyBvcGVyYXRvcnMuCi0gIHVzaW5nIGxsdm06OmlzYTsKLSAgdXNpbmcgbGx2bTo6Y2FzdDsKLSAgdXNpbmcgbGx2bTo6ZHluX2Nhc3Q7Ci0gIHVzaW5nIGxsdm06OmR5bl9jYXN0X29yX251bGw7Ci0gIHVzaW5nIGxsdm06OmNhc3Rfb3JfbnVsbDsKKy8vIENhc3Rpbmcgb3BlcmF0b3JzLgordXNpbmcgbGx2bTo6Y2FzdDsKK3VzaW5nIGxsdm06OmNhc3Rfb3JfbnVsbDsKK3VzaW5nIGxsdm06OmR5bl9jYXN0OwordXNpbmcgbGx2bTo6ZHluX2Nhc3Rfb3JfbnVsbDsKK3VzaW5nIGxsdm06OmlzYTsKIAotICAvLyBBRFQncy4KLSAgdXNpbmcgbGx2bTo6RXJyb3I7Ci0gIHVzaW5nIGxsdm06OlN0cmluZ1JlZjsKLSAgdXNpbmcgbGx2bTo6VHdpbmU7Ci0gIHVzaW5nIGxsdm06Ok1lbW9yeUJ1ZmZlcjsKLSAgdXNpbmcgbGx2bTo6TWVtb3J5QnVmZmVyUmVmOwotICB1c2luZyBsbHZtOjpBcnJheVJlZjsKLSAgdXNpbmcgbGx2bTo6U21hbGxTdHJpbmc7Ci0gIHVzaW5nIGxsdm06OlNtYWxsVmVjdG9yOwotICB1c2luZyBsbHZtOjpTbWFsbFZlY3RvckltcGw7Ci0gIHVzaW5nIGxsdm06OlNhdmVBbmRSZXN0b3JlOwotICB1c2luZyBsbHZtOjpFcnJvck9yOwotICB1c2luZyBsbHZtOjpFeHBlY3RlZDsKKy8vIEFEVCdzLgordXNpbmcgbGx2bTo6QXJyYXlSZWY7Cit1c2luZyBsbHZtOjpFcnJvcjsKK3VzaW5nIGxsdm06OkVycm9yT3I7Cit1c2luZyBsbHZtOjpFeHBlY3RlZDsKK3VzaW5nIGxsdm06Ok1lbW9yeUJ1ZmZlcjsKK3VzaW5nIGxsdm06Ok1lbW9yeUJ1ZmZlclJlZjsKK3VzaW5nIGxsdm06OnJhd19vc3RyZWFtOwordXNpbmcgbGx2bTo6U21hbGxTdHJpbmc7Cit1c2luZyBsbHZtOjpTbWFsbFZlY3RvcjsKK3VzaW5nIGxsdm06OlN0cmluZ1JlZjsKK3VzaW5nIGxsdm06OlR3aW5lOwogCi0gIHVzaW5nIGxsdm06OnJhd19vc3RyZWFtOwordXNpbmcgbGx2bTo6b2JqZWN0OjpXYXNtT2JqZWN0RmlsZTsKK3VzaW5nIGxsdm06Om9iamVjdDo6V2FzbVNlY3Rpb247Cit1c2luZyBsbHZtOjpvYmplY3Q6Oldhc21TZWdtZW50OwordXNpbmcgbGx2bTo6b2JqZWN0OjpXYXNtU3ltYm9sOwordXNpbmcgbGx2bTo6d2FzbTo6V2FzbUV2ZW50OwordXNpbmcgbGx2bTo6d2FzbTo6V2FzbUV2ZW50VHlwZTsKK3VzaW5nIGxsdm06Ondhc206Oldhc21GdW5jdGlvbjsKK3VzaW5nIGxsdm06Ondhc206Oldhc21HbG9iYWw7Cit1c2luZyBsbHZtOjp3YXNtOjpXYXNtR2xvYmFsVHlwZTsKK3VzaW5nIGxsdm06Ondhc206Oldhc21SZWxvY2F0aW9uOwordXNpbmcgbGx2bTo6d2FzbTo6V2FzbVNpZ25hdHVyZTsKIH0gLy8gZW5kIG5hbWVzcGFjZSBsbGQuCiAKIG5hbWVzcGFjZSBzdGQgewpAQCAtNzgsNiArOTMsNiBAQAogICAgIHJldHVybiBsbHZtOjpoYXNoX3ZhbHVlKHMpOwogICB9CiB9OwotfQorfSAvLyBuYW1lc3BhY2Ugc3RkCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9NZW1vcnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vTWVtb3J5LmgKaW5kZXggNjk5ZjdjMS4uNzhmNmUyNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9NZW1vcnkuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29tbW9uL01lbW9yeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1lbW9yeS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gTGlua2VyCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29tbW9uL1JlcHJvZHVjZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9SZXByb2R1Y2UuaAppbmRleCAwZjQyNWRlLi5hYzdhODIyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29tbW9uL1JlcHJvZHVjZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vUmVwcm9kdWNlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUmVwcm9kdWNlLmggLSBVdGlsaXRpZXMgZm9yIGNyZWF0aW5nIHJlcHJvZHVjZXJzIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBMaW5rZXIKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29tbW9uL1N0cmluZ3MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vU3RyaW5ncy5oCmluZGV4IGUxN2IyNTcuLmVmYzkyNDUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vU3RyaW5ncy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vU3RyaW5ncy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFN0cmluZ3MuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gTGlua2VyCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNDEsOSArNDAsNiBAQAogICBzdGQ6OnZlY3RvcjxsbHZtOjpHbG9iUGF0dGVybj4gUGF0dGVybnM7CiB9OwogCi1pbmxpbmUgbGx2bTo6QXJyYXlSZWY8dWludDhfdD4gdG9BcnJheVJlZihsbHZtOjpTdHJpbmdSZWYgUykgewotICByZXR1cm4ge3JlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihTLmRhdGEoKSksIFMuc2l6ZSgpfTsKLX0KIH0gLy8gbmFtZXNwYWNlIGxsZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vVGFyZ2V0T3B0aW9uc0NvbW1hbmRGbGFncy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9UYXJnZXRPcHRpb25zQ29tbWFuZEZsYWdzLmgKaW5kZXggODQ0M2IxOC4uOTM0NWU2MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9UYXJnZXRPcHRpb25zQ29tbWFuZEZsYWdzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9UYXJnZXRPcHRpb25zQ29tbWFuZEZsYWdzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFRhcmdldE9wdGlvbnNDb21tYW5kRmxhZ3MuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTYsNyArMTUsOCBAQAogI2luY2x1ZGUgImxsdm0vVGFyZ2V0L1RhcmdldE9wdGlvbnMuaCIKIAogbmFtZXNwYWNlIGxsZCB7Ci1sbHZtOjpUYXJnZXRPcHRpb25zIEluaXRUYXJnZXRPcHRpb25zRnJvbUNvZGVHZW5GbGFncygpOwotbGx2bTo6T3B0aW9uYWw8bGx2bTo6Q29kZU1vZGVsOjpNb2RlbD4gR2V0Q29kZU1vZGVsRnJvbUNNTW9kZWwoKTsKLXN0ZDo6c3RyaW5nIEdldENQVVN0cigpOworbGx2bTo6VGFyZ2V0T3B0aW9ucyBpbml0VGFyZ2V0T3B0aW9uc0Zyb21Db2RlR2VuRmxhZ3MoKTsKK2xsdm06Ok9wdGlvbmFsPGxsdm06OkNvZGVNb2RlbDo6TW9kZWw+IGdldENvZGVNb2RlbEZyb21DTU1vZGVsKCk7CitzdGQ6OnN0cmluZyBnZXRDUFVTdHIoKTsKK3N0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBnZXRNQXR0cnMoKTsKIH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vVGhyZWFkcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9UaHJlYWRzLmgKaW5kZXggODU0NTkwNy4uZTM1NmZjZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9UaHJlYWRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9UaHJlYWRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVGhyZWFkcy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBMaW5rZXIKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTc0LDcgKzczLDcgQEAKIH0KIAogaW5saW5lIHZvaWQgcGFyYWxsZWxGb3JFYWNoTihzaXplX3QgQmVnaW4sIHNpemVfdCBFbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChzaXplX3QpPiBGbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpmdW5jdGlvbl9yZWY8dm9pZChzaXplX3QpPiBGbikgewogICBpZiAoVGhyZWFkc0VuYWJsZWQpCiAgICAgZm9yX2VhY2hfbihsbHZtOjpwYXJhbGxlbDo6cGFyLCBCZWdpbiwgRW5kLCBGbik7CiAgIGVsc2UKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vVGltZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vVGltZXIuaAppbmRleCA2NjU0YWY2Li5lMmI2OTUxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29tbW9uL1RpbWVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvbW1vbi9UaW1lci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFRpbWVyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBMaW5rZXIKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29tbW9uL1ZlcnNpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vVmVyc2lvbi5oCmluZGV4IDIzYTEwZWQuLjk1NzFhYTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vVmVyc2lvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db21tb24vVmVyc2lvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsZC9Db21tb24vVmVyc2lvbi5oIC0gTExEIFZlcnNpb24gTnVtYmVyIC0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9BYnNvbHV0ZUF0b20uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL0Fic29sdXRlQXRvbS5oCmluZGV4IGVkMjUyOTcuLjUyMTRiNDEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL0Fic29sdXRlQXRvbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL0Fic29sdXRlQXRvbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvcmUvQWJzb2x1dGVBdG9tLmggLSBBbiBhYnNvbHV0ZSBBdG9tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gTGlua2VyCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvQXJjaGl2ZUxpYnJhcnlGaWxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9BcmNoaXZlTGlicmFyeUZpbGUuaAppbmRleCAyYzczNmU3Li4wYWJlZjQwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9BcmNoaXZlTGlicmFyeUZpbGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9BcmNoaXZlTGlicmFyeUZpbGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDb3JlL0FyY2hpdmVMaWJyYXJ5RmlsZS5oIC0gTW9kZWxzIHN0YXRpYyBsaWJyYXJ5IC0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIExpbmtlcgotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL0F0b20uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL0F0b20uaAppbmRleCAxNDljM2Q1Li40ZDNkMjdhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9BdG9tLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvQXRvbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvcmUvQXRvbS5oIC0gQSBub2RlIGluIGxpbmtpbmcgZ3JhcGggLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gTGlua2VyCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvRGVmaW5lZEF0b20uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL0RlZmluZWRBdG9tLmgKaW5kZXggYmExMGI0NS4uNGIxZGU3ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvRGVmaW5lZEF0b20uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9EZWZpbmVkQXRvbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvcmUvRGVmaW5lZEF0b20uaCAtIEFuIEF0b20gd2l0aCBjb250ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gTGlua2VyCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvRXJyb3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL0Vycm9yLmgKaW5kZXggMzZhMzY3Mi4uYzE4ZmU5NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvRXJyb3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9FcnJvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEVycm9yLmggLSBzeXN0ZW1fZXJyb3IgZXh0ZW5zaW9ucyBmb3IgbGxkIC0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gTGlua2VyCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9GaWxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9GaWxlLmgKaW5kZXggNTRmNTMzNS4uNDkyZjM1OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvRmlsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL0ZpbGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDb3JlL0ZpbGUuaCAtIEEgQ29udGFpbmVyIG9mIEF0b21zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIExpbmtlcgotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL0luc3RydW1lbnRhdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvSW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggOTM5ZDY0NS4uNjAyYTM3YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvSW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvSW5zdHJ1bWVudGF0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gaW5jbHVkZS9Db3JlL0luc3RydW1lbnRhdGlvbi5oIC0gSW5zdHJ1bWVudGF0aW9uIEFQSSAtLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBMaW5rZXIKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9MaW5raW5nQ29udGV4dC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvTGlua2luZ0NvbnRleHQuaAppbmRleCA1MmFiMWEyLi5lMDkwZmY5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9MaW5raW5nQ29udGV4dC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL0xpbmtpbmdDb250ZXh0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGxkL0NvcmUvTGlua2luZ0NvbnRleHQuaCAtIExpbmtlciBUYXJnZXQgSW5mbyBJbnRlcmZhY2UgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBMaW5rZXIKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9Ob2RlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9Ob2RlLmgKaW5kZXggYzMwNDgyNC4uYTIyNDc5MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvTm9kZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL05vZGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbGQvQ29yZS9Ob2RlLmggLSBJbnB1dCBmaWxlIGNsYXNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIExpbmtlcgotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1Bhc3MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1Bhc3MuaAppbmRleCBiZmUzZjliLi41N2Q1YTQwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9QYXNzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvUGFzcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tLS0gQ29yZS9QYXNzLmggLSBCYXNlIGNsYXNzIGZvciBsaW5rZXIgcGFzc2VzIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gTGlua2VyCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvUGFzc01hbmFnZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1Bhc3NNYW5hZ2VyLmgKaW5kZXggZjJlZjEwZi4uMDI0OTlkMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvUGFzc01hbmFnZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9QYXNzTWFuYWdlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsZC9Db3JlL1Bhc3NNYW5hZ2VyLmggLSBNYW5hZ2UgbGlua2VyIHBhc3NlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gTGlua2VyCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvUmVhZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9SZWFkZXIuaAppbmRleCA2Y2Y2MjgyLi5hMmQ3OTEyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9SZWFkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9SZWFkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbGQvQ29yZS9SZWFkZXIuaCAtIEFic3RyYWN0IEZpbGUgRm9ybWF0IFJlYWRpbmcgSW50ZXJmYWNlIC0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIExpbmtlcgotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1JlZmVyZW5jZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvUmVmZXJlbmNlLmgKaW5kZXggMWQzMDAzYy4uMTkxZTBmMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvUmVmZXJlbmNlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvUmVmZXJlbmNlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29yZS9SZWZlcmVuY2VzLmggLSBBIFJlZmVyZW5jZSB0byBBbm90aGVyIEF0b20gLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBMaW5rZXIKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9SZXNvbHZlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvUmVzb2x2ZXIuaAppbmRleCA1MTU3YzlmLi45YWIyMTk1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9SZXNvbHZlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1Jlc29sdmVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29yZS9SZXNvbHZlci5oIC0gUmVzb2x2ZXMgQXRvbSBSZWZlcmVuY2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBMaW5rZXIKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9TaGFyZWRMaWJyYXJ5QXRvbS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvU2hhcmVkTGlicmFyeUF0b20uaAppbmRleCA3ZmVjN2EzLi4xNzFkMTU0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9TaGFyZWRMaWJyYXJ5QXRvbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1NoYXJlZExpYnJhcnlBdG9tLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29yZS9TaGFyZWRMaWJyYXJ5QXRvbS5oIC0gQSBTaGFyZWQgTGlicmFyeSBBdG9tIC0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBMaW5rZXIKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9TaGFyZWRMaWJyYXJ5RmlsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvU2hhcmVkTGlicmFyeUZpbGUuaAppbmRleCA1M2JmOTY3Li44NDZkMWYyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9TaGFyZWRMaWJyYXJ5RmlsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1NoYXJlZExpYnJhcnlGaWxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29yZS9TaGFyZWRMaWJyYXJ5RmlsZS5oIC0gTW9kZWxzIHNoYXJlZCBsaWJyYXJpZXMgYXMgQXRvbXMgLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBMaW5rZXIKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9TaW1wbGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1NpbXBsZS5oCmluZGV4IGZlZWVkNmEuLmYyMTFiZWIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1NpbXBsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1NpbXBsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsZC9Db3JlL1NpbXBsZS5oIC0gU2ltcGxlIGltcGxlbWVudGF0aW9ucyBvZiBBdG9tIGFuZCBGaWxlIC0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gTGlua2VyCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvU3ltYm9sVGFibGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1N5bWJvbFRhYmxlLmgKaW5kZXggMTU2YzU2ZS4uYzc1MDJhNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvU3ltYm9sVGFibGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9TeW1ib2xUYWJsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvcmUvU3ltYm9sVGFibGUuaCAtIE1haW4gU3ltYm9sIFRhYmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gTGlua2VyCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvVW5kZWZpbmVkQXRvbS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL0NvcmUvVW5kZWZpbmVkQXRvbS5oCmluZGV4IGY0NWQ2ZWMuLmE0MGRiMzYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1VuZGVmaW5lZEF0b20uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9VbmRlZmluZWRBdG9tLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29yZS9VbmRlZmluZWRBdG9tLmggLSBBbiBVbmRlZmluZWQgQXRvbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBMaW5rZXIKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvQ29yZS9Xcml0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1dyaXRlci5oCmluZGV4IDFjZGZhYmUuLjBkZTVmY2EgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1dyaXRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9Db3JlL1dyaXRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsZC9Db3JlL1dyaXRlci5oIC0gQWJzdHJhY3QgRmlsZSBGb3JtYXQgSW50ZXJmYWNlIC0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gTGlua2VyCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL1JlYWRlcldyaXRlci9NYWNoT0xpbmtpbmdDb250ZXh0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvUmVhZGVyV3JpdGVyL01hY2hPTGlua2luZ0NvbnRleHQuaAppbmRleCBmZGU2NTg4Li5mNDhhZDc3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvUmVhZGVyV3JpdGVyL01hY2hPTGlua2luZ0NvbnRleHQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvUmVhZGVyV3JpdGVyL01hY2hPTGlua2luZ0NvbnRleHQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbGQvUmVhZGVyV3JpdGVyL01hY2hPTGlua2luZ0NvbnRleHQuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIExpbmtlcgotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9SZWFkZXJXcml0ZXIvWWFtbENvbnRleHQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsZC9SZWFkZXJXcml0ZXIvWWFtbENvbnRleHQuaAppbmRleCBiOTdkMjFmLi5kYzEzM2UzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbGQvUmVhZGVyV3JpdGVyL1lhbWxDb250ZXh0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGxkL1JlYWRlcldyaXRlci9ZYW1sQ29udGV4dC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsZC9SZWFkZXJXcml0ZXIvWWFtbENvbnRleHQuaCAtIG9iamVjdCB1c2VkIGluIFlBTUwgSS9PIGNvbnRleHQgLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gTGlua2VyCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0FuYWx5c2lzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvQW5hbHlzaXMuaAppbmRleCAzNmRjYjg5Li5jYjllOGVjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvQW5hbHlzaXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvQW5hbHlzaXMuaApAQCAtMSw5ICsxLDkgQEAKIC8qPT09LS0gbGx2bS1jL0FuYWx5c2lzLmggLSBBbmFseXNpcyBMaWJyYXJ5IEMgSW50ZXJmYWNlIC0tLS0tLS0tKi0gQysrIC0qLT09PSpcCiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UgICAgICAqfAotfCogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICp8Cit8KiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKnwKK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAogfCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09KnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvQml0UmVhZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvQml0UmVhZGVyLmgKaW5kZXggZDFmYzMwMi4uYjMwN2VlOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0JpdFJlYWRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9CaXRSZWFkZXIuaApAQCAtMSw5ICsxLDkgQEAKIC8qPT09LS0gbGx2bS1jL0JpdFJlYWRlci5oIC0gQml0UmVhZGVyIExpYnJhcnkgQyBJbnRlcmZhY2UgLS0tLS0tKi0gQysrIC0qLT09PSpcCiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UgICAgICAqfAotfCogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICp8Cit8KiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKnwKK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAogfCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09KnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvQml0V3JpdGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvQml0V3JpdGVyLmgKaW5kZXggNzk3ZDAzMS4uMTg3MDUxNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0JpdFdyaXRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9CaXRXcml0ZXIuaApAQCAtMSw5ICsxLDkgQEAKIC8qPT09LS0gbGx2bS1jL0JpdFdyaXRlci5oIC0gQml0V3JpdGVyIExpYnJhcnkgQyBJbnRlcmZhY2UgLS0tLS0tKi0gQysrIC0qLT09PSpcCiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UgICAgICAqfAotfCogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICp8Cit8KiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKnwKK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAogfCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09KnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvQ29tZGF0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvQ29tZGF0LmgKaW5kZXggNDk5OTk2ZC4uODFmZWUzZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0NvbWRhdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9Db21kYXQuaApAQCAtMSw5ICsxLDkgQEAKIC8qPT09LS0gbGx2bS1jL0NvbWRhdC5oIC0gTW9kdWxlIENvbWRhdCBDIEludGVyZmFjZSAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PSpcCiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UgICAgICAqfAotfCogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICp8Cit8KiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKnwKK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAogfCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09KnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvQ29yZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0NvcmUuaAppbmRleCBmN2YyMjM4Li45YzUyMTg5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvQ29yZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9Db3JlLmgKQEAgLTEsOSArMSw5IEBACiAvKj09PS0tIGxsdm0tYy9Db3JlLmggLSBDb3JlIExpYnJhcnkgQyBJbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tKi0gQyAtKi09PT0qXAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlICAgICAgKnwKLXwqIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSAgICAgICAgICAqfAorfCogRXhjZXB0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICp8Cit8KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAqfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKIHwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfApAQCAtNTQsNiArNTQsOCBAQAogICogQHsKICAqLwogCisvLy8gRXh0ZXJuYWwgdXNlcnMgZGVwZW5kIG9uIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGJlaW5nIHN0YWJsZS4gSXQgaXMgbm90IHNhZmUKKy8vLyB0byByZW9yZGVyIHRoZW0uCiB0eXBlZGVmIGVudW0gewogICAvKiBUZXJtaW5hdG9yIEluc3RydWN0aW9ucyAqLwogICBMTFZNUmV0ICAgICAgICAgICAgPSAxLApAQCAtNjMsNiArNjUsMTAgQEAKICAgTExWTUludm9rZSAgICAgICAgID0gNSwKICAgLyogcmVtb3ZlZCA2IGR1ZSB0byBBUEkgY2hhbmdlcyAqLwogICBMTFZNVW5yZWFjaGFibGUgICAgPSA3LAorICBMTFZNQ2FsbEJyICAgICAgICAgPSA2NywKKworICAvKiBTdGFuZGFyZCBVbmFyeSBPcGVyYXRvcnMgKi8KKyAgTExWTUZOZWcgICAgICAgICAgID0gNjYsCiAKICAgLyogU3RhbmRhcmQgQmluYXJ5IE9wZXJhdG9ycyAqLwogICBMTFZNQWRkICAgICAgICAgICAgPSA4LApAQCAtNTE2LDYgKzUyMiwyMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqT3BhcXVlSGFuZGxlKTsKIAogLyoqCisgKiBSZXRyaWV2ZSB3aGV0aGVyIHRoZSBnaXZlbiBjb250ZXh0IGlzIHNldCB0byBkaXNjYXJkIGFsbCB2YWx1ZSBuYW1lcy4KKyAqCisgKiBAc2VlIExMVk1Db250ZXh0OjpzaG91bGREaXNjYXJkVmFsdWVOYW1lcygpCisgKi8KK0xMVk1Cb29sIExMVk1Db250ZXh0U2hvdWxkRGlzY2FyZFZhbHVlTmFtZXMoTExWTUNvbnRleHRSZWYgQyk7CisKKy8qKgorICogU2V0IHdoZXRoZXIgdGhlIGdpdmVuIGNvbnRleHQgZGlzY2FyZHMgYWxsIHZhbHVlIG5hbWVzLgorICoKKyAqIElmIHRydWUsIG9ubHkgdGhlIG5hbWVzIG9mIEdsb2JhbFZhbHVlIG9iamVjdHMgd2lsbCBiZSBhdmFpbGFibGUgaW4gdGhlIElSLgorICogVGhpcyBjYW4gYmUgdXNlZCB0byBzYXZlIG1lbW9yeSBhbmQgcnVudGltZSwgZXNwZWNpYWxseSBpbiByZWxlYXNlIG1vZGUuCisgKgorICogQHNlZSBMTFZNQ29udGV4dDo6c2V0RGlzY2FyZFZhbHVlTmFtZXMoKQorICovCit2b2lkIExMVk1Db250ZXh0U2V0RGlzY2FyZFZhbHVlTmFtZXMoTExWTUNvbnRleHRSZWYgQywgTExWTUJvb2wgRGlzY2FyZCk7CisKKy8qKgogICogRGVzdHJveSBhIGNvbnRleHQgaW5zdGFuY2UuCiAgKgogICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIGZvciBldmVyeSBjYWxsIHRvIExMVk1Db250ZXh0Q3JlYXRlKCkgb3IgbWVtb3J5CkBAIC05MzAsNiArOTUzLDQ0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVmFsdWVSZWYgVmFsKTsKIAogLyoqCisgKiBSZXR1cm4gdGhlIGRpcmVjdG9yeSBvZiB0aGUgZGVidWcgbG9jYXRpb24gZm9yIHRoaXMgdmFsdWUsIHdoaWNoIG11c3QgYmUKKyAqIGFuIGxsdm06Okluc3RydWN0aW9uLCBsbHZtOjpHbG9iYWxWYXJpYWJsZSwgb3IgbGx2bTo6RnVuY3Rpb24uCisgKgorICogQHNlZSBsbHZtOjpJbnN0cnVjdGlvbjo6Z2V0RGVidWdMb2MoKQorICogQHNlZSBsbHZtOjpHbG9iYWxWYXJpYWJsZTo6Z2V0RGVidWdJbmZvKCkKKyAqIEBzZWUgbGx2bTo6RnVuY3Rpb246OmdldFN1YnByb2dyYW0oKQorICovCitjb25zdCBjaGFyICpMTFZNR2V0RGVidWdMb2NEaXJlY3RvcnkoTExWTVZhbHVlUmVmIFZhbCwgdW5zaWduZWQgKkxlbmd0aCk7CisKKy8qKgorICogUmV0dXJuIHRoZSBmaWxlbmFtZSBvZiB0aGUgZGVidWcgbG9jYXRpb24gZm9yIHRoaXMgdmFsdWUsIHdoaWNoIG11c3QgYmUKKyAqIGFuIGxsdm06Okluc3RydWN0aW9uLCBsbHZtOjpHbG9iYWxWYXJpYWJsZSwgb3IgbGx2bTo6RnVuY3Rpb24uCisgKgorICogQHNlZSBsbHZtOjpJbnN0cnVjdGlvbjo6Z2V0RGVidWdMb2MoKQorICogQHNlZSBsbHZtOjpHbG9iYWxWYXJpYWJsZTo6Z2V0RGVidWdJbmZvKCkKKyAqIEBzZWUgbGx2bTo6RnVuY3Rpb246OmdldFN1YnByb2dyYW0oKQorICovCitjb25zdCBjaGFyICpMTFZNR2V0RGVidWdMb2NGaWxlbmFtZShMTFZNVmFsdWVSZWYgVmFsLCB1bnNpZ25lZCAqTGVuZ3RoKTsKKworLyoqCisgKiBSZXR1cm4gdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSBkZWJ1ZyBsb2NhdGlvbiBmb3IgdGhpcyB2YWx1ZSwgd2hpY2ggbXVzdCBiZQorICogYW4gbGx2bTo6SW5zdHJ1Y3Rpb24sIGxsdm06Okdsb2JhbFZhcmlhYmxlLCBvciBsbHZtOjpGdW5jdGlvbi4KKyAqCisgKiBAc2VlIGxsdm06Okluc3RydWN0aW9uOjpnZXREZWJ1Z0xvYygpCisgKiBAc2VlIGxsdm06Okdsb2JhbFZhcmlhYmxlOjpnZXREZWJ1Z0luZm8oKQorICogQHNlZSBsbHZtOjpGdW5jdGlvbjo6Z2V0U3VicHJvZ3JhbSgpCisgKi8KK3Vuc2lnbmVkIExMVk1HZXREZWJ1Z0xvY0xpbmUoTExWTVZhbHVlUmVmIFZhbCk7CisKKy8qKgorICogUmV0dXJuIHRoZSBjb2x1bW4gbnVtYmVyIG9mIHRoZSBkZWJ1ZyBsb2NhdGlvbiBmb3IgdGhpcyB2YWx1ZSwgd2hpY2ggbXVzdCBiZQorICogYW4gbGx2bTo6SW5zdHJ1Y3Rpb24uCisgKgorICogQHNlZSBsbHZtOjpJbnN0cnVjdGlvbjo6Z2V0RGVidWdMb2MoKQorICovCit1bnNpZ25lZCBMTFZNR2V0RGVidWdMb2NDb2x1bW4oTExWTVZhbHVlUmVmIFZhbCk7CisKKy8qKgogICogQWRkIGEgZnVuY3Rpb24gdG8gYSBtb2R1bGUgdW5kZXIgYSBzcGVjaWZpZWQgbmFtZS4KICAqCiAgKiBAc2VlIGxsdm06OkZ1bmN0aW9uOjpDcmVhdGUoKQpAQCAtMTUwMSwxNiArMTU2MiwxNSBAQAogICAgICAgbWFjcm8oU2VsZWN0SW5zdCkgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICBtYWNybyhTaHVmZmxlVmVjdG9ySW5zdCkgICAgICAgICAgICAgIFwKICAgICAgIG1hY3JvKFN0b3JlSW5zdCkgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgbWFjcm8oVGVybWluYXRvckluc3QpICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG1hY3JvKEJyYW5jaEluc3QpICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbWFjcm8oSW5kaXJlY3RCckluc3QpICAgICAgICAgICAgICAgXAotICAgICAgICBtYWNybyhJbnZva2VJbnN0KSAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG1hY3JvKFJldHVybkluc3QpICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbWFjcm8oU3dpdGNoSW5zdCkgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBtYWNybyhVbnJlYWNoYWJsZUluc3QpICAgICAgICAgICAgICBcCi0gICAgICAgIG1hY3JvKFJlc3VtZUluc3QpICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbWFjcm8oQ2xlYW51cFJldHVybkluc3QpICAgICAgICAgICAgXAotICAgICAgICBtYWNybyhDYXRjaFJldHVybkluc3QpICAgICAgICAgICAgICBcCisgICAgICBtYWNybyhCcmFuY2hJbnN0KSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIG1hY3JvKEluZGlyZWN0QnJJbnN0KSAgICAgICAgICAgICAgICAgXAorICAgICAgbWFjcm8oSW52b2tlSW5zdCkgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBtYWNybyhSZXR1cm5JbnN0KSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIG1hY3JvKFN3aXRjaEluc3QpICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgbWFjcm8oVW5yZWFjaGFibGVJbnN0KSAgICAgICAgICAgICAgICBcCisgICAgICBtYWNybyhSZXN1bWVJbnN0KSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIG1hY3JvKENsZWFudXBSZXR1cm5JbnN0KSAgICAgICAgICAgICAgXAorICAgICAgbWFjcm8oQ2F0Y2hSZXR1cm5JbnN0KSAgICAgICAgICAgICAgICBcCiAgICAgICBtYWNybyhGdW5jbGV0UGFkSW5zdCkgICAgICAgICAgICAgICAgIFwKICAgICAgICAgbWFjcm8oQ2F0Y2hQYWRJbnN0KSAgICAgICAgICAgICAgICAgXAogICAgICAgICBtYWNybyhDbGVhbnVwUGFkSW5zdCkgICAgICAgICAgICAgICBcCkBAIC0yMDI2LDkgKzIwODYsMTQgQEAKIExMVk1WYWx1ZVJlZiBMTFZNQ29uc3RBU2hyKExMVk1WYWx1ZVJlZiBMSFNDb25zdGFudCwgTExWTVZhbHVlUmVmIFJIU0NvbnN0YW50KTsKIExMVk1WYWx1ZVJlZiBMTFZNQ29uc3RHRVAoTExWTVZhbHVlUmVmIENvbnN0YW50VmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVmFsdWVSZWYgKkNvbnN0YW50SW5kaWNlcywgdW5zaWduZWQgTnVtSW5kaWNlcyk7CitMTFZNVmFsdWVSZWYgTExWTUNvbnN0R0VQMihMTFZNVHlwZVJlZiBUeSwgTExWTVZhbHVlUmVmIENvbnN0YW50VmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVZhbHVlUmVmICpDb25zdGFudEluZGljZXMsIHVuc2lnbmVkIE51bUluZGljZXMpOwogTExWTVZhbHVlUmVmIExMVk1Db25zdEluQm91bmRzR0VQKExMVk1WYWx1ZVJlZiBDb25zdGFudFZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVmFsdWVSZWYgKkNvbnN0YW50SW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBOdW1JbmRpY2VzKTsKK0xMVk1WYWx1ZVJlZiBMTFZNQ29uc3RJbkJvdW5kc0dFUDIoTExWTVR5cGVSZWYgVHksIExMVk1WYWx1ZVJlZiBDb25zdGFudFZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVZhbHVlUmVmICpDb25zdGFudEluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE51bUluZGljZXMpOwogTExWTVZhbHVlUmVmIExMVk1Db25zdFRydW5jKExMVk1WYWx1ZVJlZiBDb25zdGFudFZhbCwgTExWTVR5cGVSZWYgVG9UeXBlKTsKIExMVk1WYWx1ZVJlZiBMTFZNQ29uc3RTRXh0KExMVk1WYWx1ZVJlZiBDb25zdGFudFZhbCwgTExWTVR5cGVSZWYgVG9UeXBlKTsKIExMVk1WYWx1ZVJlZiBMTFZNQ29uc3RaRXh0KExMVk1WYWx1ZVJlZiBDb25zdGFudFZhbCwgTExWTVR5cGVSZWYgVG9UeXBlKTsKQEAgLTIzNDUsNiArMjQxMCw1NCBAQAogdW5zaWduZWQgTExWTUdldEludHJpbnNpY0lEKExMVk1WYWx1ZVJlZiBGbik7CiAKIC8qKgorICogQ3JlYXRlIG9yIGluc2VydCB0aGUgZGVjbGFyYXRpb24gb2YgYW4gaW50cmluc2ljLiAgRm9yIG92ZXJsb2FkZWQgaW50cmluc2ljcywKKyAqIHBhcmFtZXRlciB0eXBlcyBtdXN0IGJlIHByb3ZpZGVkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGFuIG92ZXJsb2FkLgorICoKKyAqIEBzZWUgbGx2bTo6SW50cmluc2ljOjpnZXREZWNsYXJhdGlvbigpCisgKi8KK0xMVk1WYWx1ZVJlZiBMTFZNR2V0SW50cmluc2ljRGVjbGFyYXRpb24oTExWTU1vZHVsZVJlZiBNb2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVHlwZVJlZiAqUGFyYW1UeXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IFBhcmFtQ291bnQpOworCisvKioKKyAqIFJldHJpZXZlcyB0aGUgdHlwZSBvZiBhbiBpbnRyaW5zaWMuICBGb3Igb3ZlcmxvYWRlZCBpbnRyaW5zaWNzLCBwYXJhbWV0ZXIKKyAqIHR5cGVzIG11c3QgYmUgcHJvdmlkZWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgYW4gb3ZlcmxvYWQuCisgKgorICogQHNlZSBsbHZtOjpJbnRyaW5zaWM6OmdldFR5cGUoKQorICovCitMTFZNVHlwZVJlZiBMTFZNSW50cmluc2ljR2V0VHlwZShMTFZNQ29udGV4dFJlZiBDdHgsIHVuc2lnbmVkIElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVR5cGVSZWYgKlBhcmFtVHlwZXMsIHNpemVfdCBQYXJhbUNvdW50KTsKKworLyoqCisgKiBSZXRyaWV2ZXMgdGhlIG5hbWUgb2YgYW4gaW50cmluc2ljLgorICoKKyAqIEBzZWUgbGx2bTo6SW50cmluc2ljOjpnZXROYW1lKCkKKyAqLworY29uc3QgY2hhciAqTExWTUludHJpbnNpY0dldE5hbWUodW5zaWduZWQgSUQsIHNpemVfdCAqTmFtZUxlbmd0aCk7CisKKy8qKgorICogQ29waWVzIHRoZSBuYW1lIG9mIGFuIG92ZXJsb2FkZWQgaW50cmluc2ljIGlkZW50aWZpZWQgYnkgYSBnaXZlbiBsaXN0IG9mCisgKiBwYXJhbWV0ZXIgdHlwZXMuCisgKgorICogVW5saWtlIExMVk1JbnRyaW5zaWNHZXROYW1lLCB0aGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZQorICogcmV0dXJuZWQgc3RyaW5nLgorICoKKyAqIEBzZWUgbGx2bTo6SW50cmluc2ljOjpnZXROYW1lKCkKKyAqLworY29uc3QgY2hhciAqTExWTUludHJpbnNpY0NvcHlPdmVybG9hZGVkTmFtZSh1bnNpZ25lZCBJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVR5cGVSZWYgKlBhcmFtVHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBQYXJhbUNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKk5hbWVMZW5ndGgpOworCisvKioKKyAqIE9idGFpbiBpZiB0aGUgaW50cmluc2ljIGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIElEIGlzIG92ZXJsb2FkZWQuCisgKgorICogQHNlZSBsbHZtOjpJbnRyaW5zaWM6OmlzT3ZlcmxvYWRlZCgpCisgKi8KK0xMVk1Cb29sIExMVk1JbnRyaW5zaWNJc092ZXJsb2FkZWQodW5zaWduZWQgSUQpOworCisvKioKICAqIE9idGFpbiB0aGUgY2FsbGluZyBmdW5jdGlvbiBvZiBhIGZ1bmN0aW9uLgogICoKICAqIFRoZSByZXR1cm5lZCB2YWx1ZSBjb3JyZXNwb25kcyB0byB0aGUgTExWTUNhbGxDb252IGVudW1lcmF0aW9uLgpAQCAtMjUwMCw2ICsyNjEzLDEwMyBAQAogICovCiAKIC8qKgorICogQGRlZmdyb3VwIExMVk1DQ29yZVZhbHVlR2xvYmFsSUZ1bmMgSUZ1bmNzCisgKgorICogRnVuY3Rpb25zIGluIHRoaXMgZ3JvdXAgcmVsYXRlIHRvIGluZGlyZWN0IGZ1bmN0aW9ucy4KKyAqCisgKiBGdW5jdGlvbnMgaW4gdGhpcyBncm91cCBleHBlY3QgTExWTVZhbHVlUmVmIGluc3RhbmNlcyB0aGF0IGNvcnJlc3BvbmQKKyAqIHRvIGxsdm06Okdsb2JhbElGdW5jIGluc3RhbmNlcy4KKyAqCisgKiBAeworICovCisKKy8qKgorICogQWRkIGEgZ2xvYmFsIGluZGlyZWN0IGZ1bmN0aW9uIHRvIGEgbW9kdWxlIHVuZGVyIGEgc3BlY2lmaWVkIG5hbWUuCisgKgorICogQHNlZSBsbHZtOjpHbG9iYWxJRnVuYzo6Y3JlYXRlKCkKKyAqLworTExWTVZhbHVlUmVmIExMVk1BZGRHbG9iYWxJRnVuYyhMTFZNTW9kdWxlUmVmIE0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKk5hbWUsIHNpemVfdCBOYW1lTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVHlwZVJlZiBUeSwgdW5zaWduZWQgQWRkclNwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVmFsdWVSZWYgUmVzb2x2ZXIpOworCisvKioKKyAqIE9idGFpbiBhIEdsb2JhbElGdW5jIHZhbHVlIGZyb20gYSBNb2R1bGUgYnkgaXRzIG5hbWUuCisgKgorICogVGhlIHJldHVybmVkIHZhbHVlIGNvcnJlc3BvbmRzIHRvIGEgbGx2bTo6R2xvYmFsSUZ1bmMgdmFsdWUuCisgKgorICogQHNlZSBsbHZtOjpNb2R1bGU6OmdldE5hbWVkSUZ1bmMoKQorICovCitMTFZNVmFsdWVSZWYgTExWTUdldE5hbWVkR2xvYmFsSUZ1bmMoTExWTU1vZHVsZVJlZiBNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKk5hbWUsIHNpemVfdCBOYW1lTGVuKTsKKworLyoqCisgKiBPYnRhaW4gYW4gaXRlcmF0b3IgdG8gdGhlIGZpcnN0IEdsb2JhbElGdW5jIGluIGEgTW9kdWxlLgorICoKKyAqIEBzZWUgbGx2bTo6TW9kdWxlOjppZnVuY19iZWdpbigpCisgKi8KK0xMVk1WYWx1ZVJlZiBMTFZNR2V0Rmlyc3RHbG9iYWxJRnVuYyhMTFZNTW9kdWxlUmVmIE0pOworCisvKioKKyAqIE9idGFpbiBhbiBpdGVyYXRvciB0byB0aGUgbGFzdCBHbG9iYWxJRnVuYyBpbiBhIE1vZHVsZS4KKyAqCisgKiBAc2VlIGxsdm06Ok1vZHVsZTo6aWZ1bmNfZW5kKCkKKyAqLworTExWTVZhbHVlUmVmIExMVk1HZXRMYXN0R2xvYmFsSUZ1bmMoTExWTU1vZHVsZVJlZiBNKTsKKworLyoqCisgKiBBZHZhbmNlIGEgR2xvYmFsSUZ1bmMgaXRlcmF0b3IgdG8gdGhlIG5leHQgR2xvYmFsSUZ1bmMuCisgKgorICogUmV0dXJucyBOVUxMIGlmIHRoZSBpdGVyYXRvciB3YXMgYWxyZWFkeSBhdCB0aGUgZW5kIGFuZCB0aGVyZSBhcmUgbm8gbW9yZQorICogZ2xvYmFsIGFsaWFzZXMuCisgKi8KK0xMVk1WYWx1ZVJlZiBMTFZNR2V0TmV4dEdsb2JhbElGdW5jKExMVk1WYWx1ZVJlZiBJRnVuYyk7CisKKy8qKgorICogRGVjcmVtZW50IGEgR2xvYmFsSUZ1bmMgaXRlcmF0b3IgdG8gdGhlIHByZXZpb3VzIEdsb2JhbElGdW5jLgorICoKKyAqIFJldHVybnMgTlVMTCBpZiB0aGUgaXRlcmF0b3Igd2FzIGFscmVhZHkgYXQgdGhlIGJlZ2lubmluZyBhbmQgdGhlcmUgYXJlCisgKiBubyBwcmV2aW91cyBnbG9iYWwgYWxpYXNlcy4KKyAqLworTExWTVZhbHVlUmVmIExMVk1HZXRQcmV2aW91c0dsb2JhbElGdW5jKExMVk1WYWx1ZVJlZiBJRnVuYyk7CisgIAorLyoqCisgKiBSZXRyaWV2ZXMgdGhlIHJlc29sdmVyIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGluZGlyZWN0IGZ1bmN0aW9uLCBvcgorICogTlVMTCBpZiBpdCBkb2Vzbid0IG5vdCBleGlzdC4KKyAqCisgKiBAc2VlIGxsdm06Okdsb2JhbElGdW5jOjpnZXRSZXNvbHZlcigpCisgKi8KK0xMVk1WYWx1ZVJlZiBMTFZNR2V0R2xvYmFsSUZ1bmNSZXNvbHZlcihMTFZNVmFsdWVSZWYgSUZ1bmMpOworCisvKioKKyAqIFNldHMgdGhlIHJlc29sdmVyIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGluZGlyZWN0IGZ1bmN0aW9uLgorICoKKyAqIEBzZWUgbGx2bTo6R2xvYmFsSUZ1bmM6OnNldFJlc29sdmVyKCkKKyAqLwordm9pZCBMTFZNU2V0R2xvYmFsSUZ1bmNSZXNvbHZlcihMTFZNVmFsdWVSZWYgSUZ1bmMsIExMVk1WYWx1ZVJlZiBSZXNvbHZlcik7CisKKy8qKgorICogUmVtb3ZlIGEgZ2xvYmFsIGluZGlyZWN0IGZ1bmN0aW9uIGZyb20gaXRzIHBhcmVudCBtb2R1bGUgYW5kIGRlbGV0ZSBpdC4KKyAqCisgKiBAc2VlIGxsdm06Okdsb2JhbElGdW5jOjplcmFzZUZyb21QYXJlbnQoKQorICovCit2b2lkIExMVk1FcmFzZUdsb2JhbElGdW5jKExMVk1WYWx1ZVJlZiBJRnVuYyk7CisKKy8qKgorICogUmVtb3ZlIGEgZ2xvYmFsIGluZGlyZWN0IGZ1bmN0aW9uIGZyb20gaXRzIHBhcmVudCBtb2R1bGUuCisgKgorICogVGhpcyB1bmxpbmtzIHRoZSBnbG9iYWwgaW5kaXJlY3QgZnVuY3Rpb24gZnJvbSBpdHMgY29udGFpbmluZyBtb2R1bGUgYnV0CisgKiBrZWVwcyBpdCBhbGl2ZS4KKyAqCisgKiBAc2VlIGxsdm06Okdsb2JhbElGdW5jOjpyZW1vdmVGcm9tUGFyZW50KCkKKyAqLwordm9pZCBMTFZNUmVtb3ZlR2xvYmFsSUZ1bmMoTExWTVZhbHVlUmVmIElGdW5jKTsKKworLyoqCisgKiBAfQorICovCisKKy8qKgogICogQH0KICAqLwogCkBAIC0yNjQxLDcgKzI4NTEsNyBAQAogICogSWYgdGhlIGJhc2ljIGJsb2NrIGRvZXMgbm90IGhhdmUgYSB0ZXJtaW5hdG9yIChpdCBpcyBub3Qgd2VsbC1mb3JtZWQKICAqIGlmIGl0IGRvZXNuJ3QpLCB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuCiAgKgotICogVGhlIHJldHVybmVkIExMVk1WYWx1ZVJlZiBjb3JyZXNwb25kcyB0byBhIGxsdm06OlRlcm1pbmF0b3JJbnN0LgorICogVGhlIHJldHVybmVkIExMVk1WYWx1ZVJlZiBjb3JyZXNwb25kcyB0byBhbiBsbHZtOjpJbnN0cnVjdGlvbi4KICAqCiAgKiBAc2VlIGxsdm06OkJhc2ljQmxvY2s6OmdldFRlcm1pbmF0b3IoKQogICovCkBAIC0yNzAwLDYgKzI5MTAsMTQgQEAKIExMVk1CYXNpY0Jsb2NrUmVmIExMVk1HZXRFbnRyeUJhc2ljQmxvY2soTExWTVZhbHVlUmVmIEZuKTsKIAogLyoqCisgKiBDcmVhdGUgYSBuZXcgYmFzaWMgYmxvY2sgd2l0aG91dCBpbnNlcnRpbmcgaXQgaW50byBhIGZ1bmN0aW9uLgorICoKKyAqIEBzZWUgbGx2bTo6QmFzaWNCbG9jazo6Q3JlYXRlKCkKKyAqLworTExWTUJhc2ljQmxvY2tSZWYgTExWTUNyZWF0ZUJhc2ljQmxvY2tJbkNvbnRleHQoTExWTUNvbnRleHRSZWYgQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKk5hbWUpOworCisvKioKICAqIEFwcGVuZCBhIGJhc2ljIGJsb2NrIHRvIHRoZSBlbmQgb2YgYSBmdW5jdGlvbi4KICAqCiAgKiBAc2VlIGxsdm06OkJhc2ljQmxvY2s6OkNyZWF0ZSgpCkBAIC0yOTE0LDYgKzMxMzIsMTUgQEAKIExMVk1WYWx1ZVJlZiBMTFZNSW5zdHJ1Y3Rpb25DbG9uZShMTFZNVmFsdWVSZWYgSW5zdCk7CiAKIC8qKgorICogRGV0ZXJtaW5lIHdoZXRoZXIgYW4gaW5zdHJ1Y3Rpb24gaXMgYSB0ZXJtaW5hdG9yLiBUaGlzIHJvdXRpbmUgaXMgbmFtZWQgdG8KKyAqIGJlIGNvbXBhdGlibGUgd2l0aCBoaXN0b3JpY2FsIGZ1bmN0aW9ucyB0aGF0IGRpZCB0aGlzIGJ5IHF1ZXJ5aW5nIHRoZQorICogdW5kZXJseWluZyBDKysgdHlwZS4KKyAqCisgKiBAc2VlIGxsdm06Okluc3RydWN0aW9uOjppc1Rlcm1pbmF0b3IoKQorICovCitMTFZNVmFsdWVSZWYgTExWTUlzQVRlcm1pbmF0b3JJbnN0KExMVk1WYWx1ZVJlZiBJbnN0KTsKKworLyoqCiAgKiBAZGVmZ3JvdXAgTExWTUNDb3JlVmFsdWVJbnN0cnVjdGlvbkNhbGwgQ2FsbCBTaXRlcyBhbmQgSW52b2NhdGlvbnMKICAqCiAgKiBGdW5jdGlvbnMgaW4gdGhpcyBncm91cCBhcHBseSB0byBpbnN0cnVjdGlvbnMgdGhhdCByZWZlciB0byBjYWxsCkBAIC0yOTc2LDYgKzMyMDMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKkssIHVuc2lnbmVkIEtMZW4pOwogCiAvKioKKyAqIE9idGFpbiB0aGUgZnVuY3Rpb24gdHlwZSBjYWxsZWQgYnkgdGhpcyBpbnN0cnVjdGlvbi4KKyAqCisgKiBAc2VlIGxsdm06OkNhbGxCYXNlOjpnZXRGdW5jdGlvblR5cGUoKQorICovCitMTFZNVHlwZVJlZiBMTFZNR2V0Q2FsbGVkRnVuY3Rpb25UeXBlKExMVk1WYWx1ZVJlZiBDKTsKKworLyoqCiAgKiBPYnRhaW4gdGhlIHBvaW50ZXIgdG8gdGhlIGZ1bmN0aW9uIGludm9rZWQgYnkgdGhpcyBpbnN0cnVjdGlvbi4KICAqCiAgKiBUaGlzIGV4cGVjdHMgYW4gTExWTVZhbHVlUmVmIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBsbHZtOjpDYWxsSW5zdCBvcgpAQCAtMzA1Myw4ICszMjg3LDggQEAKIC8qKgogICogQGRlZmdyb3VwIExMVk1DQ29yZVZhbHVlSW5zdHJ1Y3Rpb25UZXJtaW5hdG9yIFRlcm1pbmF0b3JzCiAgKgotICogRnVuY3Rpb25zIGluIHRoaXMgZ3JvdXAgb25seSBhcHBseSB0byBpbnN0cnVjdGlvbnMgdGhhdCBtYXAgdG8KLSAqIGxsdm06OlRlcm1pbmF0b3JJbnN0IGluc3RhbmNlcy4KKyAqIEZ1bmN0aW9ucyBpbiB0aGlzIGdyb3VwIG9ubHkgYXBwbHkgdG8gaW5zdHJ1Y3Rpb25zIGZvciB3aGljaAorICogTExWTUlzQVRlcm1pbmF0b3JJbnN0IHJldHVybnMgdHJ1ZS4KICAqCiAgKiBAewogICovCkBAIC0zMDYyLDIxICszMjk2LDIxIEBACiAvKioKICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NvcnMgdGhhdCB0aGlzIHRlcm1pbmF0b3IgaGFzLgogICoKLSAqIEBzZWUgbGx2bTo6VGVybWluYXRvckluc3Q6OmdldE51bVN1Y2Nlc3NvcnMKKyAqIEBzZWUgbGx2bTo6SW5zdHJ1Y3Rpb246OmdldE51bVN1Y2Nlc3NvcnMKICAqLwogdW5zaWduZWQgTExWTUdldE51bVN1Y2Nlc3NvcnMoTExWTVZhbHVlUmVmIFRlcm0pOwogCiAvKioKICAqIFJldHVybiB0aGUgc3BlY2lmaWVkIHN1Y2Nlc3Nvci4KICAqCi0gKiBAc2VlIGxsdm06OlRlcm1pbmF0b3JJbnN0OjpnZXRTdWNjZXNzb3IKKyAqIEBzZWUgbGx2bTo6SW5zdHJ1Y3Rpb246OmdldFN1Y2Nlc3NvcgogICovCiBMTFZNQmFzaWNCbG9ja1JlZiBMTFZNR2V0U3VjY2Vzc29yKExMVk1WYWx1ZVJlZiBUZXJtLCB1bnNpZ25lZCBpKTsKIAogLyoqCiAgKiBVcGRhdGUgdGhlIHNwZWNpZmllZCBzdWNjZXNzb3IgdG8gcG9pbnQgYXQgdGhlIHByb3ZpZGVkIGJsb2NrLgogICoKLSAqIEBzZWUgbGx2bTo6VGVybWluYXRvckluc3Q6OnNldFN1Y2Nlc3NvcgorICogQHNlZSBsbHZtOjpJbnN0cnVjdGlvbjo6c2V0U3VjY2Vzc29yCiAgKi8KIHZvaWQgTExWTVNldFN1Y2Nlc3NvcihMTFZNVmFsdWVSZWYgVGVybSwgdW5zaWduZWQgaSwgTExWTUJhc2ljQmxvY2tSZWYgYmxvY2spOwogCkBAIC0zMjY3LDEwICszNTAxLDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1CYXNpY0Jsb2NrUmVmIEVsc2UsIHVuc2lnbmVkIE51bUNhc2VzKTsKIExMVk1WYWx1ZVJlZiBMTFZNQnVpbGRJbmRpcmVjdEJyKExMVk1CdWlsZGVyUmVmIEIsIExMVk1WYWx1ZVJlZiBBZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTnVtRGVzdHMpOworLy8gTExWTUJ1aWxkSW52b2tlIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgTExWTUJ1aWxkSW52b2tlMiwgaW4gcHJlcGFyYXRpb24KKy8vIGZvciBvcGFxdWUgcG9pbnRlciB0eXBlcy4KIExMVk1WYWx1ZVJlZiBMTFZNQnVpbGRJbnZva2UoTExWTUJ1aWxkZXJSZWYsIExMVk1WYWx1ZVJlZiBGbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVZhbHVlUmVmICpBcmdzLCB1bnNpZ25lZCBOdW1BcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNQmFzaWNCbG9ja1JlZiBUaGVuLCBMTFZNQmFzaWNCbG9ja1JlZiBDYXRjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqTmFtZSk7CitMTFZNVmFsdWVSZWYgTExWTUJ1aWxkSW52b2tlMihMTFZNQnVpbGRlclJlZiwgTExWTVR5cGVSZWYgVHksIExMVk1WYWx1ZVJlZiBGbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1WYWx1ZVJlZiAqQXJncywgdW5zaWduZWQgTnVtQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1CYXNpY0Jsb2NrUmVmIFRoZW4sIExMVk1CYXNpY0Jsb2NrUmVmIENhdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqTmFtZSk7CiBMTFZNVmFsdWVSZWYgTExWTUJ1aWxkVW5yZWFjaGFibGUoTExWTUJ1aWxkZXJSZWYpOwogCiAvKiBFeGNlcHRpb24gSGFuZGxpbmcgKi8KQEAgLTM0MjcsMTMgKzM2NjcsNDggQEAKIExMVk1WYWx1ZVJlZiBMTFZNQnVpbGRNYWxsb2MoTExWTUJ1aWxkZXJSZWYsIExMVk1UeXBlUmVmIFR5LCBjb25zdCBjaGFyICpOYW1lKTsKIExMVk1WYWx1ZVJlZiBMTFZNQnVpbGRBcnJheU1hbGxvYyhMTFZNQnVpbGRlclJlZiwgTExWTVR5cGVSZWYgVHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVZhbHVlUmVmIFZhbCwgY29uc3QgY2hhciAqTmFtZSk7CisKKy8qKgorICogQ3JlYXRlcyBhbmQgaW5zZXJ0cyBhIG1lbXNldCB0byB0aGUgc3BlY2lmaWVkIHBvaW50ZXIgYW5kIHRoZSAKKyAqIHNwZWNpZmllZCB2YWx1ZS4KKyAqCisgKiBAc2VlIGxsdm06OklSUkJ1aWxkZXI6OkNyZWF0ZU1lbVNldCgpCisgKi8KK0xMVk1WYWx1ZVJlZiBMTFZNQnVpbGRNZW1TZXQoTExWTUJ1aWxkZXJSZWYgQiwgTExWTVZhbHVlUmVmIFB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVZhbHVlUmVmIFZhbCwgTExWTVZhbHVlUmVmIExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgQWxpZ24pOworLyoqCisgKiBDcmVhdGVzIGFuZCBpbnNlcnRzIGEgbWVtY3B5IGJldHdlZW4gdGhlIHNwZWNpZmllZCBwb2ludGVycy4KKyAqCisgKiBAc2VlIGxsdm06OklSUkJ1aWxkZXI6OkNyZWF0ZU1lbUNweSgpCisgKi8KK0xMVk1WYWx1ZVJlZiBMTFZNQnVpbGRNZW1DcHkoTExWTUJ1aWxkZXJSZWYgQiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1WYWx1ZVJlZiBEc3QsIHVuc2lnbmVkIERzdEFsaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVmFsdWVSZWYgU3JjLCB1bnNpZ25lZCBTcmNBbGlnbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVZhbHVlUmVmIFNpemUpOworLyoqCisgKiBDcmVhdGVzIGFuZCBpbnNlcnRzIGEgbWVtbW92ZSBiZXR3ZWVuIHRoZSBzcGVjaWZpZWQgcG9pbnRlcnMuCisgKgorICogQHNlZSBsbHZtOjpJUlJCdWlsZGVyOjpDcmVhdGVNZW1Nb3ZlKCkKKyAqLworTExWTVZhbHVlUmVmIExMVk1CdWlsZE1lbU1vdmUoTExWTUJ1aWxkZXJSZWYgQiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVmFsdWVSZWYgRHN0LCB1bnNpZ25lZCBEc3RBbGlnbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1WYWx1ZVJlZiBTcmMsIHVuc2lnbmVkIFNyY0FsaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVZhbHVlUmVmIFNpemUpOworCiBMTFZNVmFsdWVSZWYgTExWTUJ1aWxkQWxsb2NhKExMVk1CdWlsZGVyUmVmLCBMTFZNVHlwZVJlZiBUeSwgY29uc3QgY2hhciAqTmFtZSk7CiBMTFZNVmFsdWVSZWYgTExWTUJ1aWxkQXJyYXlBbGxvY2EoTExWTUJ1aWxkZXJSZWYsIExMVk1UeXBlUmVmIFR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1WYWx1ZVJlZiBWYWwsIGNvbnN0IGNoYXIgKk5hbWUpOwogTExWTVZhbHVlUmVmIExMVk1CdWlsZEZyZWUoTExWTUJ1aWxkZXJSZWYsIExMVk1WYWx1ZVJlZiBQb2ludGVyVmFsKTsKKy8vIExMVk1CdWlsZExvYWQgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBMTFZNQnVpbGRMb2FkMiwgaW4gcHJlcGFyYXRpb24gZm9yCisvLyBvcGFxdWUgcG9pbnRlciB0eXBlcy4KIExMVk1WYWx1ZVJlZiBMTFZNQnVpbGRMb2FkKExMVk1CdWlsZGVyUmVmLCBMTFZNVmFsdWVSZWYgUG9pbnRlclZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKk5hbWUpOworTExWTVZhbHVlUmVmIExMVk1CdWlsZExvYWQyKExMVk1CdWlsZGVyUmVmLCBMTFZNVHlwZVJlZiBUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVmFsdWVSZWYgUG9pbnRlclZhbCwgY29uc3QgY2hhciAqTmFtZSk7CiBMTFZNVmFsdWVSZWYgTExWTUJ1aWxkU3RvcmUoTExWTUJ1aWxkZXJSZWYsIExMVk1WYWx1ZVJlZiBWYWwsIExMVk1WYWx1ZVJlZiBQdHIpOworLy8gTExWTUJ1aWxkR0VQLCBMTFZNQnVpbGRJbkJvdW5kc0dFUCwgYW5kIExMVk1CdWlsZFN0cnVjdEdFUCBhcmUgZGVwcmVjYXRlZCBpbgorLy8gZmF2b3Igb2YgTExWTUJ1aWxkKkdFUDIsIGluIHByZXBhcmF0aW9uIGZvciBvcGFxdWUgcG9pbnRlciB0eXBlcy4KIExMVk1WYWx1ZVJlZiBMTFZNQnVpbGRHRVAoTExWTUJ1aWxkZXJSZWYgQiwgTExWTVZhbHVlUmVmIFBvaW50ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1WYWx1ZVJlZiAqSW5kaWNlcywgdW5zaWduZWQgTnVtSW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqTmFtZSk7CkBAIC0zNDQyLDYgKzM3MTcsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpOYW1lKTsKIExMVk1WYWx1ZVJlZiBMTFZNQnVpbGRTdHJ1Y3RHRVAoTExWTUJ1aWxkZXJSZWYgQiwgTExWTVZhbHVlUmVmIFBvaW50ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIElkeCwgY29uc3QgY2hhciAqTmFtZSk7CitMTFZNVmFsdWVSZWYgTExWTUJ1aWxkR0VQMihMTFZNQnVpbGRlclJlZiBCLCBMTFZNVHlwZVJlZiBUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1WYWx1ZVJlZiBQb2ludGVyLCBMTFZNVmFsdWVSZWYgKkluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBOdW1JbmRpY2VzLCBjb25zdCBjaGFyICpOYW1lKTsKK0xMVk1WYWx1ZVJlZiBMTFZNQnVpbGRJbkJvdW5kc0dFUDIoTExWTUJ1aWxkZXJSZWYgQiwgTExWTVR5cGVSZWYgVHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1WYWx1ZVJlZiBQb2ludGVyLCBMTFZNVmFsdWVSZWYgKkluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE51bUluZGljZXMsIGNvbnN0IGNoYXIgKk5hbWUpOworTExWTVZhbHVlUmVmIExMVk1CdWlsZFN0cnVjdEdFUDIoTExWTUJ1aWxkZXJSZWYgQiwgTExWTVR5cGVSZWYgVHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVmFsdWVSZWYgUG9pbnRlciwgdW5zaWduZWQgSWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqTmFtZSk7CiBMTFZNVmFsdWVSZWYgTExWTUJ1aWxkR2xvYmFsU3RyaW5nKExMVk1CdWlsZGVyUmVmIEIsIGNvbnN0IGNoYXIgKlN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqTmFtZSk7CiBMTFZNVmFsdWVSZWYgTExWTUJ1aWxkR2xvYmFsU3RyaW5nUHRyKExMVk1CdWlsZGVyUmVmIEIsIGNvbnN0IGNoYXIgKlN0ciwKQEAgLTM0ODgsMTEgKzM3NzIsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1UeXBlUmVmIERlc3RUeSwgY29uc3QgY2hhciAqTmFtZSk7CiBMTFZNVmFsdWVSZWYgTExWTUJ1aWxkUG9pbnRlckNhc3QoTExWTUJ1aWxkZXJSZWYsIExMVk1WYWx1ZVJlZiBWYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVR5cGVSZWYgRGVzdFR5LCBjb25zdCBjaGFyICpOYW1lKTsKLUxMVk1WYWx1ZVJlZiBMTFZNQnVpbGRJbnRDYXN0KExMVk1CdWlsZGVyUmVmLCBMTFZNVmFsdWVSZWYgVmFsLCAvKlNpZ25lZCBjYXN0ISovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVHlwZVJlZiBEZXN0VHksIGNvbnN0IGNoYXIgKk5hbWUpOworTExWTVZhbHVlUmVmIExMVk1CdWlsZEludENhc3QyKExMVk1CdWlsZGVyUmVmLCBMTFZNVmFsdWVSZWYgVmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1UeXBlUmVmIERlc3RUeSwgTExWTUJvb2wgSXNTaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqTmFtZSk7CiBMTFZNVmFsdWVSZWYgTExWTUJ1aWxkRlBDYXN0KExMVk1CdWlsZGVyUmVmLCBMTFZNVmFsdWVSZWYgVmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVHlwZVJlZiBEZXN0VHksIGNvbnN0IGNoYXIgKk5hbWUpOwogCisvKiogRGVwcmVjYXRlZDogVGhpcyBjYXN0IGlzIGFsd2F5cyBzaWduZWQuIFVzZSBMTFZNQnVpbGRJbnRDYXN0MiBpbnN0ZWFkLiAqLworTExWTVZhbHVlUmVmIExMVk1CdWlsZEludENhc3QoTExWTUJ1aWxkZXJSZWYsIExMVk1WYWx1ZVJlZiBWYWwsIC8qU2lnbmVkIGNhc3QhKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1UeXBlUmVmIERlc3RUeSwgY29uc3QgY2hhciAqTmFtZSk7CisKIC8qIENvbXBhcmlzb25zICovCiBMTFZNVmFsdWVSZWYgTExWTUJ1aWxkSUNtcChMTFZNQnVpbGRlclJlZiwgTExWTUludFByZWRpY2F0ZSBPcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1WYWx1ZVJlZiBMSFMsIExMVk1WYWx1ZVJlZiBSSFMsCkBAIC0zNTAzLDkgKzM3OTIsMTQgQEAKIAogLyogTWlzY2VsbGFuZW91cyBpbnN0cnVjdGlvbnMgKi8KIExMVk1WYWx1ZVJlZiBMTFZNQnVpbGRQaGkoTExWTUJ1aWxkZXJSZWYsIExMVk1UeXBlUmVmIFR5LCBjb25zdCBjaGFyICpOYW1lKTsKKy8vIExMVk1CdWlsZENhbGwgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBMTFZNQnVpbGRDYWxsMiwgaW4gcHJlcGFyYXRpb24gZm9yCisvLyBvcGFxdWUgcG9pbnRlciB0eXBlcy4KIExMVk1WYWx1ZVJlZiBMTFZNQnVpbGRDYWxsKExMVk1CdWlsZGVyUmVmLCBMTFZNVmFsdWVSZWYgRm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVmFsdWVSZWYgKkFyZ3MsIHVuc2lnbmVkIE51bUFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpOYW1lKTsKK0xMVk1WYWx1ZVJlZiBMTFZNQnVpbGRDYWxsMihMTFZNQnVpbGRlclJlZiwgTExWTVR5cGVSZWYsIExMVk1WYWx1ZVJlZiBGbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVmFsdWVSZWYgKkFyZ3MsIHVuc2lnbmVkIE51bUFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqTmFtZSk7CiBMTFZNVmFsdWVSZWYgTExWTUJ1aWxkU2VsZWN0KExMVk1CdWlsZGVyUmVmLCBMTFZNVmFsdWVSZWYgSWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1WYWx1ZVJlZiBUaGVuLCBMTFZNVmFsdWVSZWYgRWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqTmFtZSk7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvRGF0YVR5cGVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvRGF0YVR5cGVzLmgKaW5kZXggNzA4MWM4My4uODkzYjIyYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0RhdGFUeXBlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9EYXRhVHlwZXMuaApAQCAtMSw5ICsxLDkgQEAKIC8qPT09LS0gaW5jbHVkZS9sbHZtLWMvRGF0YVR5cGVzLmggLSBEZWZpbmUgZml4ZWQgc2l6ZSB0eXBlcyAtLS0tLS0qLSBDIC0qLT09PSpcCiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UgICAgICAqfAotfCogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICp8Cit8KiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKnwKK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAogfCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09KnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvRGVidWdJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvRGVidWdJbmZvLmgKaW5kZXggYmMzNDFkYS4uZjg0MGNlOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0RlYnVnSW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9EZWJ1Z0luZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tLS0tLS0tLS0tIERlYnVnSW5mby5oIC0gTExWTSBDIEFQSSBEZWJ1ZyBJbmZvIEFQSSAtLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KQEAgLTU0LDcgKzUzLDggQEAKICAgTExWTURJRmxhZ01haW5TdWJwcm9ncmFtID0gMSA8PCAyMSwKICAgTExWTURJRmxhZ1R5cGVQYXNzQnlWYWx1ZSA9IDEgPDwgMjIsCiAgIExMVk1ESUZsYWdUeXBlUGFzc0J5UmVmZXJlbmNlID0gMSA8PCAyMywKLSAgTExWTURJRmxhZ0ZpeGVkRW51bSA9IDEgPDwgMjQsCisgIExMVk1ESUZsYWdFbnVtQ2xhc3MgPSAxIDw8IDI0LAorICBMTFZNRElGbGFnRml4ZWRFbnVtID0gTExWTURJRmxhZ0VudW1DbGFzcywgLy8gRGVwcmVjYXRlZC4KICAgTExWTURJRmxhZ1RodW5rID0gMSA8PCAyNSwKICAgTExWTURJRmxhZ1RyaXZpYWwgPSAxIDw8IDI2LAogICBMTFZNRElGbGFnQmlnRW5kaWFuID0gMSA8PCAyNywKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9EaXNhc3NlbWJsZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9EaXNhc3NlbWJsZXIuaAppbmRleCA1ZTgwYjk1Li4zYWRjYzNjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvRGlzYXNzZW1ibGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0Rpc2Fzc2VtYmxlci5oCkBAIC0xLDkgKzEsOSBAQAogLyo9PT0tLSBsbHZtLWMvRGlzYXNzZW1ibGVyLmggLSBEaXNhc3NlbWJsZXIgUHVibGljIEMgSW50ZXJmYWNlIC0tLSotIEMgLSotPT09KlwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZSAgICAgICp8Ci18KiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gICAgICAgICAgKnwKK3wqIEV4Y2VwdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAqfAorfCogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgKnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CiB8Kj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9EaXNhc3NlbWJsZXJUeXBlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0Rpc2Fzc2VtYmxlclR5cGVzLmgKaW5kZXggZTg3NTRhYy4uMzg5ZTVlZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0Rpc2Fzc2VtYmxlclR5cGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0Rpc2Fzc2VtYmxlclR5cGVzLmgKQEAgLTEsOSArMSw5IEBACiAvKj09PS0tIGxsdm0tYy9EaXNhc3NlbWJsZXJUeXBlZGVmcy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQyAtKi09PT0qXAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlICAgICAgKnwKLXwqIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSAgICAgICAgICAqfAorfCogRXhjZXB0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICp8Cit8KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAqfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKIHwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSovCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9FcnJvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0Vycm9yLmgKaW5kZXggNzFlODQ2Ni4uNDBlYTFmYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0Vycm9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0Vycm9yLmgKQEAgLTEsOSArMSw5IEBACiAvKj09PS0tLS0tLS0gbGx2bS1jL0Vycm9yLmggLSBsbHZtOjpFcnJvciBjbGFzcyBDIEludGVyZmFjZSAtLS0tLS0tKi0gQyAtKi09PT0qXAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlICAgICAgKnwKLXwqIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSAgICAgICAgICAqfAorfCogRXhjZXB0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICp8Cit8KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAqfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKIHwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0Vycm9ySGFuZGxpbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9FcnJvckhhbmRsaW5nLmgKaW5kZXggMjA1OWIzYS4uNDkyNzM0OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0Vycm9ySGFuZGxpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvRXJyb3JIYW5kbGluZy5oCkBAIC0xLDkgKzEsOSBAQAogLyo9PT0tLSBsbHZtLWMvRXJyb3JIYW5kbGluZy5oIC0gRXJyb3IgSGFuZGxpbmcgQyBJbnRlcmZhY2UgLS0tLS0tLSotIEMgLSotPT09KlwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZSAgICAgICp8Ci18KiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gICAgICAgICAgKnwKK3wqIEV4Y2VwdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAqfAorfCogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgKnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CiB8Kj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9FeGVjdXRpb25FbmdpbmUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9FeGVjdXRpb25FbmdpbmUuaAppbmRleCA0OWFlNmZlLi5lZjcxNGNkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvRXhlY3V0aW9uRW5naW5lLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0V4ZWN1dGlvbkVuZ2luZS5oCkBAIC0xLDkgKzEsOSBAQAogLyo9PT0tLSBsbHZtLWMvRXhlY3V0aW9uRW5naW5lLmggLSBFeGVjdXRpb25FbmdpbmUgTGliIEMgSWZhY2UgLS0qLSBDKysgLSotPT09KlwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZSAgICAgICp8Ci18KiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gICAgICAgICAgKnwKK3wqIEV4Y2VwdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAqfAorfCogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgKnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CiB8Kj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKQEAgLTE4Niw3ICsxODYsNyBAQAogCiBMTFZNSklURXZlbnRMaXN0ZW5lclJlZiBMTFZNQ3JlYXRlR0RCUmVnaXN0cmF0aW9uTGlzdGVuZXIodm9pZCk7CiBMTFZNSklURXZlbnRMaXN0ZW5lclJlZiBMTFZNQ3JlYXRlSW50ZWxKSVRFdmVudExpc3RlbmVyKHZvaWQpOwotTExWTUpJVEV2ZW50TGlzdGVuZXJSZWYgTExWTUNyZWF0ZU9wcm9maWxlSklURXZlbnRMaXN0ZW5lcih2b2lkKTsKK0xMVk1KSVRFdmVudExpc3RlbmVyUmVmIExMVk1DcmVhdGVPUHJvZmlsZUpJVEV2ZW50TGlzdGVuZXIodm9pZCk7CiBMTFZNSklURXZlbnRMaXN0ZW5lclJlZiBMTFZNQ3JlYXRlUGVyZkpJVEV2ZW50TGlzdGVuZXIodm9pZCk7CiAKIC8qKgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0lSUmVhZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvSVJSZWFkZXIuaAppbmRleCA1YjU4ZDk5Li40ZDBiNjk2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvSVJSZWFkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvSVJSZWFkZXIuaApAQCAtMSw5ICsxLDkgQEAKIC8qPT09LS0gbGx2bS1jL0lSUmVhZGVyLmggLSBJUiBSZWFkZXIgQyBJbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0qLSBDIC0qLT09PSpcCiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UgICAgICAqfAotfCogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICp8Cit8KiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKnwKK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAogfCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09KnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvSW5pdGlhbGl6YXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9Jbml0aWFsaXphdGlvbi5oCmluZGV4IGU0NWVhZmIuLjM2YzQxZGIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9Jbml0aWFsaXphdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9Jbml0aWFsaXphdGlvbi5oCkBAIC0xLDkgKzEsOSBAQAogLyo9PT0tLSBsbHZtLWMvSW5pdGlhbGl6YXRpb24uaCAtIEluaXRpYWxpemF0aW9uIEMgSW50ZXJmYWNlIC0tLS0tLSotIEMgLSotPT09KlwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZSAgICAgICp8Ci18KiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gICAgICAgICAgKnwKK3wqIEV4Y2VwdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAqfAorfCogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgKnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CiB8Kj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9MaW5rVGltZU9wdGltaXplci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0xpbmtUaW1lT3B0aW1pemVyLmgKaW5kZXggOGJjZjU5OS4uMTliNGY1YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0xpbmtUaW1lT3B0aW1pemVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0xpbmtUaW1lT3B0aW1pemVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vTGlua1RpbWVPcHRpbWl6ZXIuaCAtIExUTyBQdWJsaWMgQyBJbnRlcmZhY2UgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9MaW5rZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9MaW5rZXIuaAppbmRleCBkMDJjMzdmLi45MDg1MTMwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvTGlua2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL0xpbmtlci5oCkBAIC0xLDkgKzEsOSBAQAogLyo9PT0tLSBsbHZtLWMvTGlua2VyLmggLSBNb2R1bGUgTGlua2VyIEMgSW50ZXJmYWNlIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09KlwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZSAgICAgICp8Ci18KiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gICAgICAgICAgKnwKK3wqIEV4Y2VwdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAqfAorfCogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgKnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CiB8Kj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9PYmplY3QuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9PYmplY3QuaAppbmRleCBhMjk4MGU4Li5iYmVhNDU1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvT2JqZWN0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL09iamVjdC5oCkBAIC0xLDkgKzEsOSBAQAogLyo9PT0tLSBsbHZtLWMvT2JqZWN0LmggLSBPYmplY3QgTGliIEMgSWZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ki8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZSAgICAgICovCi0vKiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gICAgICAgICAgKi8KKy8qIEV4Y2VwdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAqLworLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qLwogLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9PcHRSZW1hcmtzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvT3B0UmVtYXJrcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2Y2ZmYzcKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvT3B0UmVtYXJrcy5oCkBAIC0wLDAgKzEsMjA0IEBACisvKj09PS0tIGxsdm0tYy9PcHRSZW1hcmtzLmggLSBPcHRSZW1hcmtzIFB1YmxpYyBDIEludGVyZmFjZSAtLS0tLS0tKi0gQyAtKi09PT0qXAorfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICp8Cit8KiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKnwKK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICp8Cit8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09KnwKK3wqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBUaGlzIGhlYWRlciBwcm92aWRlcyBhIHB1YmxpYyBpbnRlcmZhY2UgdG8gYW4gb3B0LXJlbWFyayBsaWJyYXJ5LiAgICAgICAgICAqfAorfCogTExWTSBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CitcKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qLworCisjaWZuZGVmIExMVk1fQ19PUFRfUkVNQVJLU19ICisjZGVmaW5lIExMVk1fQ19PUFRfUkVNQVJLU19ICisKKyNpbmNsdWRlICJsbHZtLWMvQ29yZS5oIgorI2luY2x1ZGUgImxsdm0tYy9UeXBlcy5oIgorI2lmZGVmIF9fY3BsdXNwbHVzCisjaW5jbHVkZSA8Y3N0ZGRlZj4KK2V4dGVybiAiQyIgeworI2Vsc2UKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbmRpZiAvKiAhZGVmaW5lZChfX2NwbHVzcGx1cykgKi8KKworLyoqCisgKiBAZGVmZ3JvdXAgTExWTUNPUFRSRU1BUktTIE9wdFJlbWFya3MKKyAqIEBpbmdyb3VwIExMVk1DCisgKgorICogQHsKKyAqLworCisjZGVmaW5lIE9QVF9SRU1BUktTX0FQSV9WRVJTSU9OIDAKKworLyoqCisgKiBTdHJpbmcgY29udGFpbmluZyBhIGJ1ZmZlciBhbmQgYSBsZW5ndGguIFRoZSBidWZmZXIgaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUKKyAqIHplcm8tdGVybWluYXRlZC4KKyAqCisgKiBcc2luY2UgT1BUX1JFTUFSS1NfQVBJX1ZFUlNJT049MAorICovCit0eXBlZGVmIHN0cnVjdCB7CisgIGNvbnN0IGNoYXIgKlN0cjsKKyAgdWludDMyX3QgTGVuOworfSBMTFZNT3B0UmVtYXJrU3RyaW5nUmVmOworCisvKioKKyAqIERlYnVnTG9jIGNvbnRhaW5pbmcgRmlsZSwgTGluZSBhbmQgQ29sdW1uLgorICoKKyAqIFxzaW5jZSBPUFRfUkVNQVJLU19BUElfVkVSU0lPTj0wCisgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgLy8gRmlsZToKKyAgTExWTU9wdFJlbWFya1N0cmluZ1JlZiBTb3VyY2VGaWxlOworICAvLyBMaW5lOgorICB1aW50MzJfdCBTb3VyY2VMaW5lTnVtYmVyOworICAvLyBDb2x1bW46CisgIHVpbnQzMl90IFNvdXJjZUNvbHVtbk51bWJlcjsKK30gTExWTU9wdFJlbWFya0RlYnVnTG9jOworCisvKioKKyAqIEVsZW1lbnQgb2YgdGhlICJBcmdzIiBsaXN0LiBUaGUga2V5IG1pZ2h0IGdpdmUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB3aGF0CisgKiBhcmUgdGhlIHNlbWFudGljcyBvZiB0aGUgdmFsdWUsIGUuZy4gIkNhbGxlZSIgd2lsbCB0ZWxsIHlvdSB0aGF0IHRoZSB2YWx1ZQorICogaXMgYSBzeW1ib2wgdGhhdCBuYW1lcyBhIGZ1bmN0aW9uLgorICoKKyAqIFxzaW5jZSBPUFRfUkVNQVJLU19BUElfVkVSU0lPTj0wCisgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgLy8gZS5nLiAiQ2FsbGVlIgorICBMTFZNT3B0UmVtYXJrU3RyaW5nUmVmIEtleTsKKyAgLy8gZS5nLiAibWFsbG9jIgorICBMTFZNT3B0UmVtYXJrU3RyaW5nUmVmIFZhbHVlOworCisgIC8vICJEZWJ1Z0xvYyI6IE9wdGlvbmFsCisgIExMVk1PcHRSZW1hcmtEZWJ1Z0xvYyBEZWJ1Z0xvYzsKK30gTExWTU9wdFJlbWFya0FyZzsKKworLyoqCisgKiBPbmUgcmVtYXJrIGVudHJ5LgorICoKKyAqIFxzaW5jZSBPUFRfUkVNQVJLU19BUElfVkVSU0lPTj0wCisgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgLy8gZS5nLiAhTWlzc2VkLCAhUGFzc2VkCisgIExMVk1PcHRSZW1hcmtTdHJpbmdSZWYgUmVtYXJrVHlwZTsKKyAgLy8gIlBhc3MiOiBSZXF1aXJlZAorICBMTFZNT3B0UmVtYXJrU3RyaW5nUmVmIFBhc3NOYW1lOworICAvLyAiTmFtZSI6IFJlcXVpcmVkCisgIExMVk1PcHRSZW1hcmtTdHJpbmdSZWYgUmVtYXJrTmFtZTsKKyAgLy8gIkZ1bmN0aW9uIjogUmVxdWlyZWQKKyAgTExWTU9wdFJlbWFya1N0cmluZ1JlZiBGdW5jdGlvbk5hbWU7CisKKyAgLy8gIkRlYnVnTG9jIjogT3B0aW9uYWwKKyAgTExWTU9wdFJlbWFya0RlYnVnTG9jIERlYnVnTG9jOworICAvLyAiSG90bmVzcyI6IE9wdGlvbmFsCisgIHVpbnQzMl90IEhvdG5lc3M7CisgIC8vICJBcmdzIjogT3B0aW9uYWwuIEl0IGlzIGFuIGFycmF5IG9mIGBudW1fYXJnc2AgZWxlbWVudHMuCisgIHVpbnQzMl90IE51bUFyZ3M7CisgIExMVk1PcHRSZW1hcmtBcmcgKkFyZ3M7Cit9IExMVk1PcHRSZW1hcmtFbnRyeTsKKwordHlwZWRlZiBzdHJ1Y3QgTExWTU9wdFJlbWFya09wYXF1ZVBhcnNlciAqTExWTU9wdFJlbWFya1BhcnNlclJlZjsKKworLyoqCisgKiBDcmVhdGVzIGEgcmVtYXJrIHBhcnNlciB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlYWQgYW5kIHBhcnNlIHRoZSBidWZmZXIgbG9jYXRlZAorICogaW4gXHAgQnVmIG9mIHNpemUgXHAgU2l6ZS4KKyAqCisgKiBccCBCdWYgY2Fubm90IGJlIE5VTEwuCisgKgorICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgcGFpcmVkIHdpdGggTExWTU9wdFJlbWFya1BhcnNlckRpc3Bvc2UoKSB0byBhdm9pZAorICogbGVha2luZyByZXNvdXJjZXMuCisgKgorICogXHNpbmNlIE9QVF9SRU1BUktTX0FQSV9WRVJTSU9OPTAKKyAqLworZXh0ZXJuIExMVk1PcHRSZW1hcmtQYXJzZXJSZWYgTExWTU9wdFJlbWFya1BhcnNlckNyZWF0ZShjb25zdCB2b2lkICpCdWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IFNpemUpOworCisvKioKKyAqIFJldHVybnMgdGhlIG5leHQgcmVtYXJrIGluIHRoZSBmaWxlLgorICoKKyAqIFRoZSB2YWx1ZSBwb2ludGVkIHRvIGJ5IHRoZSByZXR1cm4gdmFsdWUgaXMgaW52YWxpZGF0ZWQgYnkgdGhlIG5leHQgY2FsbCB0bworICogTExWTU9wdFJlbWFya1BhcnNlckdldE5leHQoKS4KKyAqCisgKiBJZiB0aGUgcGFyc2VyIHJlYWNoZXMgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgTlVMTC4KKyAqCisgKiBJbiB0aGUgY2FzZSBvZiBhbiBlcnJvciwgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGJlIE5VTEwsIGFuZDoKKyAqCisgKiAxKSBMTFZNT3B0UmVtYXJrUGFyc2VySGFzRXJyb3IoKSB3aWxsIHJldHVybiBgMWAuCisgKgorICogMikgTExWTU9wdFJlbWFya1BhcnNlckdldEVycm9yTWVzc2FnZSgpIHdpbGwgcmV0dXJuIGEgZGVzY3JpcHRpdmUgZXJyb3IKKyAqICAgIG1lc3NhZ2UuCisgKgorICogQW4gZXJyb3IgbWF5IG9jY3VyIGlmOgorICoKKyAqIDEpIEFuIGFyZ3VtZW50IGlzIGludmFsaWQuCisgKgorICogMikgVGhlcmUgaXMgYSBZQU1MIHBhcnNpbmcgZXJyb3IuIFRoaXMgdHlwZSBvZiBlcnJvciBhYm9ydHMgcGFyc2luZworICogICAgaW1tZWRpYXRlbHkgYW5kIHJldHVybnMgYDFgLiBJdCBjYW4gb2NjdXIgb24gbWFsZm9ybWVkIFlBTUwuCisgKgorICogMykgUmVtYXJrIHBhcnNpbmcgZXJyb3IuIElmIHRoaXMgdHlwZSBvZiBlcnJvciBvY2N1cnMsIHRoZSBwYXJzZXIgd29uJ3QgY2FsbAorICogICAgdGhlIGhhbmRsZXIgYW5kIHdpbGwgY29udGludWUgdG8gdGhlIG5leHQgb25lLiBJdCBjYW4gb2NjdXIgb24gbWFsZm9ybWVkCisgKiAgICByZW1hcmtzLCBsaWtlIG1pc3Npbmcgb3IgZXh0cmEgZmllbGRzIGluIHRoZSBmaWxlLgorICoKKyAqIEhlcmUgaXMgYSBxdWljayBleGFtcGxlIG9mIHRoZSB1c2FnZToKKyAqCisgKiBgYGAKKyAqICBMTFZNT3B0UmVtYXJrUGFyc2VyUmVmIFBhcnNlciA9IExMVk1PcHRSZW1hcmtQYXJzZXJDcmVhdGUoQnVmLCBTaXplKTsKKyAqICBMTFZNT3B0UmVtYXJrRW50cnkgKlJlbWFyayA9IE5VTEw7CisgKiAgd2hpbGUgKChSZW1hcmsgPT0gTExWTU9wdFJlbWFya1BhcnNlckdldE5leHQoUGFyc2VyKSkpIHsKKyAqICAgIC8vIHVzZSBSZW1hcmsKKyAqICB9CisgKiAgYm9vbCBIYXNFcnJvciA9IExMVk1PcHRSZW1hcmtQYXJzZXJIYXNFcnJvcihQYXJzZXIpOworICogIExMVk1PcHRSZW1hcmtQYXJzZXJEaXNwb3NlKFBhcnNlcik7CisgKiBgYGAKKyAqCisgKiBcc2luY2UgT1BUX1JFTUFSS1NfQVBJX1ZFUlNJT049MAorICovCitleHRlcm4gTExWTU9wdFJlbWFya0VudHJ5ICoKK0xMVk1PcHRSZW1hcmtQYXJzZXJHZXROZXh0KExMVk1PcHRSZW1hcmtQYXJzZXJSZWYgUGFyc2VyKTsKKworLyoqCisgKiBSZXR1cm5zIGAxYCBpZiB0aGUgcGFyc2VyIGVuY291bnRlcmVkIGFuIGVycm9yIHdoaWxlIHBhcnNpbmcgdGhlIGJ1ZmZlci4KKyAqCisgKiBcc2luY2UgT1BUX1JFTUFSS1NfQVBJX1ZFUlNJT049MAorICovCitleHRlcm4gTExWTUJvb2wgTExWTU9wdFJlbWFya1BhcnNlckhhc0Vycm9yKExMVk1PcHRSZW1hcmtQYXJzZXJSZWYgUGFyc2VyKTsKKworLyoqCisgKiBSZXR1cm5zIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyBjb250YWluaW5nIGFuIGVycm9yIG1lc3NhZ2UuCisgKgorICogSW4gY2FzZSBvZiBubyBlcnJvciwgdGhlIHJlc3VsdCBpcyBgTlVMTGAuCisgKgorICogVGhlIG1lbW9yeSBvZiB0aGUgc3RyaW5nIGlzIGJvdW5kIHRvIHRoZSBsaWZldGltZSBvZiBccCBQYXJzZXIuIElmCisgKiBMTFZNT3B0UmVtYXJrUGFyc2VyRGlzcG9zZSgpIGlzIGNhbGxlZCwgdGhlIG1lbW9yeSBvZiB0aGUgc3RyaW5nIHdpbGwgYmUKKyAqIHJlbGVhc2VkLgorICoKKyAqIFxzaW5jZSBPUFRfUkVNQVJLU19BUElfVkVSU0lPTj0wCisgKi8KK2V4dGVybiBjb25zdCBjaGFyICoKK0xMVk1PcHRSZW1hcmtQYXJzZXJHZXRFcnJvck1lc3NhZ2UoTExWTU9wdFJlbWFya1BhcnNlclJlZiBQYXJzZXIpOworCisvKioKKyAqIFJlbGVhc2VzIGFsbCB0aGUgcmVzb3VyY2VzIHVzZWQgYnkgXHAgUGFyc2VyLgorICoKKyAqIFxzaW5jZSBPUFRfUkVNQVJLU19BUElfVkVSU0lPTj0wCisgKi8KK2V4dGVybiB2b2lkIExMVk1PcHRSZW1hcmtQYXJzZXJEaXNwb3NlKExMVk1PcHRSZW1hcmtQYXJzZXJSZWYgUGFyc2VyKTsKKworLyoqCisgKiBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBvcHQtcmVtYXJrcyBkeWxpYi4KKyAqCisgKiBcc2luY2UgT1BUX1JFTUFSS1NfQVBJX1ZFUlNJT049MAorICovCitleHRlcm4gdWludDMyX3QgTExWTU9wdFJlbWFya1ZlcnNpb24odm9pZCk7CisKKy8qKgorICogQH0gLy8gZW5kZ291cCBMTFZNQ09QVFJFTUFSS1MKKyAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZiAvKiAhZGVmaW5lZChfX2NwbHVzcGx1cykgKi8KKworI2VuZGlmIC8qIExMVk1fQ19PUFRfUkVNQVJLU19IICovCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvT3JjQmluZGluZ3MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9PcmNCaW5kaW5ncy5oCmluZGV4IDU3MGRiODcuLjllOTIzNzEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9PcmNCaW5kaW5ncy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9PcmNCaW5kaW5ncy5oCkBAIC0xLDkgKzEsOSBAQAogLyo9PT0tLS0tLS0tLS0tLSBsbHZtLWMvT3JjQmluZGluZ3MuaCAtIE9yYyBMaWIgQyBJZmFjZSAtLS0tLS0tLS0qLSBDKysgLSotPT09KlwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZSAgICAgICp8Ci18KiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gICAgICAgICAgKnwKK3wqIEV4Y2VwdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAqfAorfCogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgKnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CiB8Kj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9TdXBwb3J0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvU3VwcG9ydC5oCmluZGV4IDM3ZDVkNzIuLjA5N2Y3ODQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9TdXBwb3J0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1N1cHBvcnQuaApAQCAtMSw5ICsxLDkgQEAKIC8qPT09LS0gbGx2bS1jL1N1cHBvcnQuaCAtIFN1cHBvcnQgQyBJbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDIC0qLT09PSpcCiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UgICAgICAqfAotfCogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICp8Cit8KiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKnwKK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAogfCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09KnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVGFyZ2V0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVGFyZ2V0LmgKaW5kZXggMDMwMDRiYS4uOWE3OTJhMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1RhcmdldC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9UYXJnZXQuaApAQCAtMSw5ICsxLDkgQEAKIC8qPT09LS0gbGx2bS1jL1RhcmdldC5oIC0gVGFyZ2V0IExpYiBDIElmYWNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PSovCiAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UgICAgICAqLwotLyogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICovCisvKiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKi8KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICovCiAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ki8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVGFyZ2V0TWFjaGluZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1RhcmdldE1hY2hpbmUuaAppbmRleCBiY2ZhMDAxLi4yOGQ3YzA5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVGFyZ2V0TWFjaGluZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9UYXJnZXRNYWNoaW5lLmgKQEAgLTEsOSArMSw5IEBACiAvKj09PS0tIGxsdm0tYy9UYXJnZXRNYWNoaW5lLmggLSBUYXJnZXQgTWFjaGluZSBMaWJyYXJ5IEMgSW50ZXJmYWNlIC0gQysrIC0qLT0qXAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlICAgICAgKnwKLXwqIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSAgICAgICAgICAqfAorfCogRXhjZXB0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICp8Cit8KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAqfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKIHwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfApAQCAtMzksNyArMzksMTAgQEAKICAgICBMTFZNUmVsb2NEZWZhdWx0LAogICAgIExMVk1SZWxvY1N0YXRpYywKICAgICBMTFZNUmVsb2NQSUMsCi0gICAgTExWTVJlbG9jRHluYW1pY05vUGljCisgICAgTExWTVJlbG9jRHluYW1pY05vUGljLAorICAgIExMVk1SZWxvY1JPUEksCisgICAgTExWTVJlbG9jUldQSSwKKyAgICBMTFZNUmVsb2NST1BJX1JXUEkKIH0gTExWTVJlbG9jTW9kZTsKIAogdHlwZWRlZiBlbnVtIHsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9UcmFuc2Zvcm1zL0FnZ3Jlc3NpdmVJbnN0Q29tYmluZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1RyYW5zZm9ybXMvQWdncmVzc2l2ZUluc3RDb21iaW5lLmgKaW5kZXggODc1NmEyMi4uYzBiMDE0MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1RyYW5zZm9ybXMvQWdncmVzc2l2ZUluc3RDb21iaW5lLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1RyYW5zZm9ybXMvQWdncmVzc2l2ZUluc3RDb21iaW5lLmgKQEAgLTEsOSArMSw5IEBACiAvKj09PS0tIEFnZ3Jlc3NpdmVJbnN0Q29tYmluZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0qXAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlICAgICAgKnwKLXwqIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSAgICAgICAgICAqfAorfCogRXhjZXB0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICp8Cit8KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAqfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKIHwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1RyYW5zZm9ybXMvQ29yb3V0aW5lcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1RyYW5zZm9ybXMvQ29yb3V0aW5lcy5oCmluZGV4IDgyN2UzMGYuLjIyN2U3Y2YgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9UcmFuc2Zvcm1zL0Nvcm91dGluZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVHJhbnNmb3Jtcy9Db3JvdXRpbmVzLmgKQEAgLTEsOSArMSw5IEBACiAvKj09PS0tIENvcm91dGluZXMuaCAtIENvcm91dGluZXMgTGlicmFyeSBDIEludGVyZmFjZSAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0qXAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlICAgICAgKnwKLXwqIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSAgICAgICAgICAqfAorfCogRXhjZXB0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICp8Cit8KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAqfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKIHwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1RyYW5zZm9ybXMvSVBPLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVHJhbnNmb3Jtcy9JUE8uaAppbmRleCA3NzA1YjE4Li43YTgyZWQ0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVHJhbnNmb3Jtcy9JUE8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVHJhbnNmb3Jtcy9JUE8uaApAQCAtMSw5ICsxLDkgQEAKIC8qPT09LS0gSVBPLmggLSBJbnRlcnByb2NlZHVyYWwgVHJhbnNmb3JtYXRpb25zIEMgSW50ZXJmYWNlIC0tLS0tKi0gQysrIC0qLT09PSpcCiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UgICAgICAqfAotfCogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICp8Cit8KiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKnwKK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAogfCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09KnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVHJhbnNmb3Jtcy9JbnN0Q29tYmluZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1RyYW5zZm9ybXMvSW5zdENvbWJpbmUuaAppbmRleCBlMWMxNTcyLi4xNjZmMjc4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVHJhbnNmb3Jtcy9JbnN0Q29tYmluZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9UcmFuc2Zvcm1zL0luc3RDb21iaW5lLmgKQEAgLTEsOSArMSw5IEBACiAvKj09PS0tIFNjYWxhci5oIC0gU2NhbGFyIFRyYW5zZm9ybWF0aW9uIExpYnJhcnkgQyBJbnRlcmZhY2UgLS0tLSotIEMrKyAtKi09PT0qXAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlICAgICAgKnwKLXwqIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSAgICAgICAgICAqfAorfCogRXhjZXB0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICp8Cit8KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAqfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKIHwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1RyYW5zZm9ybXMvUGFzc01hbmFnZXJCdWlsZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVHJhbnNmb3Jtcy9QYXNzTWFuYWdlckJ1aWxkZXIuaAppbmRleCA2OTc4NmIzLi5kMTY0YzAwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVHJhbnNmb3Jtcy9QYXNzTWFuYWdlckJ1aWxkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVHJhbnNmb3Jtcy9QYXNzTWFuYWdlckJ1aWxkZXIuaApAQCAtMSw5ICsxLDkgQEAKIC8qPT09LS0gbGx2bS1jL1RyYW5zZm9ybS9QYXNzTWFuYWdlckJ1aWxkZXIuaCAtIFBNQiBDIEludGVyZmFjZSAtLS0qLSBDIC0qLT09PSpcCiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UgICAgICAqfAotfCogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICp8Cit8KiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKnwKK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAogfCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09KnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVHJhbnNmb3Jtcy9TY2FsYXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9UcmFuc2Zvcm1zL1NjYWxhci5oCmluZGV4IDNjM2JiNGUuLjAzMWNmOTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9UcmFuc2Zvcm1zL1NjYWxhci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9UcmFuc2Zvcm1zL1NjYWxhci5oCkBAIC0xLDkgKzEsOSBAQAogLyo9PT0tLSBTY2FsYXIuaCAtIFNjYWxhciBUcmFuc2Zvcm1hdGlvbiBMaWJyYXJ5IEMgSW50ZXJmYWNlIC0tLS0qLSBDKysgLSotPT09KlwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZSAgICAgICp8Ci18KiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gICAgICAgICAgKnwKK3wqIEV4Y2VwdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAqfAorfCogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgKnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CiB8Kj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9UcmFuc2Zvcm1zL1V0aWxzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVHJhbnNmb3Jtcy9VdGlscy5oCmluZGV4IGYxNzFmN2YuLmZmMjg4MzMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9UcmFuc2Zvcm1zL1V0aWxzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1RyYW5zZm9ybXMvVXRpbHMuaApAQCAtMSw5ICsxLDkgQEAKIC8qPT09LS0gVXRpbHMuaCAtIFRyYW5zZm9ybWF0aW9uIFV0aWxzIExpYnJhcnkgQyBJbnRlcmZhY2UgLS0tLS0tKi0gQysrIC0qLT09PSpcCiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UgICAgICAqfAotfCogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICp8Cit8KiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKnwKK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAogfCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09KnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvVHJhbnNmb3Jtcy9WZWN0b3JpemUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9UcmFuc2Zvcm1zL1ZlY3Rvcml6ZS5oCmluZGV4IGUzZjk5NjEuLmUzODM0ODEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9UcmFuc2Zvcm1zL1ZlY3Rvcml6ZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9UcmFuc2Zvcm1zL1ZlY3Rvcml6ZS5oCkBAIC0xLDEwICsxLDEwIEBACiAvKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVZlY3Rvcml6ZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtKi0gQyAtKi09PT0qXAogfCo9PT0tLS0tLS0tLS0tLSBWZWN0b3JpemF0aW9uIFRyYW5zZm9ybWF0aW9uIExpYnJhcnkgQyBJbnRlcmZhY2UgLS0tLS0tLS0tPT09KnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZSAgICAgICp8Ci18KiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gICAgICAgICAgKnwKK3wqIEV4Y2VwdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAqfAorfCogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgKnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CiB8Kj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9UeXBlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1R5cGVzLmgKaW5kZXggY2UxYWNmMy4uYTI5NzliZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1R5cGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL1R5cGVzLmgKQEAgLTEsOSArMSw5IEBACiAvKj09PS0tIGxsdm0tYy9TdXBwb3J0LmggLSBDIEludGVyZmFjZSBUeXBlcyBkZWNsYXJhdGlvbnMgLS0tLS0tLS0tKi0gQyAtKi09PT0qXAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlICAgICAgKnwKLXwqIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSAgICAgICAgICAqfAorfCogRXhjZXB0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICp8Cit8KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAqfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKIHwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL2x0by5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS1jL2x0by5oCmluZGV4IDA5MGNkMzQuLmEyMmYwYmIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0tYy9sdG8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtLWMvbHRvLmgKQEAgLTEsOSArMSw5IEBACiAvKj09PS0tIGxsdm0tYy9sdG8uaCAtIExUTyBQdWJsaWMgQyBJbnRlcmZhY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQyAtKi09PT0qXAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlICAgICAgKnwKLXwqIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSAgICAgICAgICAqfAorfCogRXhjZXB0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICp8Cit8KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAqfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKIHwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQVBGbG9hdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQVBGbG9hdC5oCmluZGV4IDVjNTlhZjQuLjYyNTU4MjMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0FQRmxvYXQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9BUEZsb2F0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvQVBGbG9hdC5oIC0gQXJiaXRyYXJ5IFByZWNpc2lvbiBGbG9hdGluZyBQb2ludCAtLS0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCkBAIC04NzAsMTMgKzg2OSwxMyBAQAogICAvLy8gRmFjdG9yeSBmb3IgTmFOIHZhbHVlcy4KICAgLy8vCiAgIC8vLyBccGFyYW0gTmVnYXRpdmUgLSBUcnVlIGlmZiB0aGUgTmFOIGdlbmVyYXRlZCBzaG91bGQgYmUgbmVnYXRpdmUuCi0gIC8vLyBccGFyYW0gdHlwZSAtIFRoZSB1bnNwZWNpZmllZCBmaWxsIGJpdHMgZm9yIGNyZWF0aW5nIHRoZSBOYU4sIDAgYnkKKyAgLy8vIFxwYXJhbSBwYXlsb2FkIC0gVGhlIHVuc3BlY2lmaWVkIGZpbGwgYml0cyBmb3IgY3JlYXRpbmcgdGhlIE5hTiwgMCBieQogICAvLy8gZGVmYXVsdC4gIFRoZSB2YWx1ZSBpcyB0cnVuY2F0ZWQgYXMgbmVjZXNzYXJ5LgogICBzdGF0aWMgQVBGbG9hdCBnZXROYU4oY29uc3QgZmx0U2VtYW50aWNzICZTZW0sIGJvb2wgTmVnYXRpdmUgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHR5cGUgPSAwKSB7Ci0gICAgaWYgKHR5cGUpIHsKLSAgICAgIEFQSW50IGZpbGwoNjQsIHR5cGUpOwotICAgICAgcmV0dXJuIGdldFFOYU4oU2VtLCBOZWdhdGl2ZSwgJmZpbGwpOworICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgcGF5bG9hZCA9IDApIHsKKyAgICBpZiAocGF5bG9hZCkgeworICAgICAgQVBJbnQgaW50UGF5bG9hZCg2NCwgcGF5bG9hZCk7CisgICAgICByZXR1cm4gZ2V0UU5hTihTZW0sIE5lZ2F0aXZlLCAmaW50UGF5bG9hZCk7CiAgICAgfSBlbHNlIHsKICAgICAgIHJldHVybiBnZXRRTmFOKFNlbSwgTmVnYXRpdmUsIG51bGxwdHIpOwogICAgIH0KQEAgLTEyNDMsNiArMTI0MiwzMiBAQAogICByZXR1cm4gKEEuY29tcGFyZShCKSA9PSBBUEZsb2F0OjpjbXBMZXNzVGhhbikgPyBCIDogQTsKIH0KIAorLy8vIEltcGxlbWVudHMgSUVFRSA3NTQtMjAxOCBtaW5pbXVtIHNlbWFudGljcy4gUmV0dXJucyB0aGUgc21hbGxlciBvZiAyCisvLy8gYXJndW1lbnRzLCBwcm9wYWdhdGluZyBOYU5zIGFuZCB0cmVhdGluZyAtMCBhcyBsZXNzIHRoYW4gKzAuCitMTFZNX1JFQURPTkxZCitpbmxpbmUgQVBGbG9hdCBtaW5pbXVtKGNvbnN0IEFQRmxvYXQgJkEsIGNvbnN0IEFQRmxvYXQgJkIpIHsKKyAgaWYgKEEuaXNOYU4oKSkKKyAgICByZXR1cm4gQTsKKyAgaWYgKEIuaXNOYU4oKSkKKyAgICByZXR1cm4gQjsKKyAgaWYgKEEuaXNaZXJvKCkgJiYgQi5pc1plcm8oKSAmJiAoQS5pc05lZ2F0aXZlKCkgIT0gQi5pc05lZ2F0aXZlKCkpKQorICAgIHJldHVybiBBLmlzTmVnYXRpdmUoKSA/IEEgOiBCOworICByZXR1cm4gKEIuY29tcGFyZShBKSA9PSBBUEZsb2F0OjpjbXBMZXNzVGhhbikgPyBCIDogQTsKK30KKworLy8vIEltcGxlbWVudHMgSUVFRSA3NTQtMjAxOCBtYXhpbXVtIHNlbWFudGljcy4gUmV0dXJucyB0aGUgbGFyZ2VyIG9mIDIKKy8vLyBhcmd1bWVudHMsIHByb3BhZ2F0aW5nIE5hTnMgYW5kIHRyZWF0aW5nIC0wIGFzIGxlc3MgdGhhbiArMC4KK0xMVk1fUkVBRE9OTFkKK2lubGluZSBBUEZsb2F0IG1heGltdW0oY29uc3QgQVBGbG9hdCAmQSwgY29uc3QgQVBGbG9hdCAmQikgeworICBpZiAoQS5pc05hTigpKQorICAgIHJldHVybiBBOworICBpZiAoQi5pc05hTigpKQorICAgIHJldHVybiBCOworICBpZiAoQS5pc1plcm8oKSAmJiBCLmlzWmVybygpICYmIChBLmlzTmVnYXRpdmUoKSAhPSBCLmlzTmVnYXRpdmUoKSkpCisgICAgcmV0dXJuIEEuaXNOZWdhdGl2ZSgpID8gQiA6IEE7CisgIHJldHVybiAoQS5jb21wYXJlKEIpID09IEFQRmxvYXQ6OmNtcExlc3NUaGFuKSA/IEIgOiBBOworfQorCiB9IC8vIG5hbWVzcGFjZSBsbHZtCiAKICN1bmRlZiBBUEZMT0FUX0RJU1BBVENIX09OX1NFTUFOVElDUwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQVBJbnQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0FQSW50LmgKaW5kZXggMWJlZmU3YS4uMGYyN2RiZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQVBJbnQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9BUEludC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0FEVC9BUEludC5oIC0gRm9yIEFyYml0cmFyeSBQcmVjaXNpb24gSW50ZWdlciAtLS0tLSotIEMrKyAtKi0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpAQCAtMTEwNSw2ICsxMTA0LDEyIEBACiAgIEFQSW50IHNzaGxfb3YoY29uc3QgQVBJbnQgJkFtdCwgYm9vbCAmT3ZlcmZsb3cpIGNvbnN0OwogICBBUEludCB1c2hsX292KGNvbnN0IEFQSW50ICZBbXQsIGJvb2wgJk92ZXJmbG93KSBjb25zdDsKIAorICAvLyBPcGVyYXRpb25zIHRoYXQgc2F0dXJhdGUKKyAgQVBJbnQgc2FkZF9zYXQoY29uc3QgQVBJbnQgJlJIUykgY29uc3Q7CisgIEFQSW50IHVhZGRfc2F0KGNvbnN0IEFQSW50ICZSSFMpIGNvbnN0OworICBBUEludCBzc3ViX3NhdChjb25zdCBBUEludCAmUkhTKSBjb25zdDsKKyAgQVBJbnQgdXN1Yl9zYXQoY29uc3QgQVBJbnQgJlJIUykgY29uc3Q7CisKICAgLy8vIEFycmF5LWluZGV4aW5nIHN1cHBvcnQuCiAgIC8vLwogICAvLy8gXHJldHVybnMgdGhlIGJpdCB2YWx1ZSBhdCBiaXRQb3NpdGlvbgpAQCAtMTM5NSw3ICsxNDAwLDcgQEAKICAgLy8vCiAgIC8vLyBTZXQgdGhlIGdpdmVuIGJpdCB0byAxIHdob3NlIHBvc2l0aW9uIGlzIGdpdmVuIGFzICJiaXRQb3NpdGlvbiIuCiAgIHZvaWQgc2V0Qml0KHVuc2lnbmVkIEJpdFBvc2l0aW9uKSB7Ci0gICAgYXNzZXJ0KEJpdFBvc2l0aW9uIDw9IEJpdFdpZHRoICYmICJCaXRQb3NpdGlvbiBvdXQgb2YgcmFuZ2UiKTsKKyAgICBhc3NlcnQoQml0UG9zaXRpb24gPCBCaXRXaWR0aCAmJiAiQml0UG9zaXRpb24gb3V0IG9mIHJhbmdlIik7CiAgICAgV29yZFR5cGUgTWFzayA9IG1hc2tCaXQoQml0UG9zaXRpb24pOwogICAgIGlmIChpc1NpbmdsZVdvcmQoKSkKICAgICAgIFUuVkFMIHw9IE1hc2s7CkBAIC0xNDU0LDcgKzE0NTksNyBAQAogICAvLy8KICAgLy8vIFNldCB0aGUgZ2l2ZW4gYml0IHRvIDAgd2hvc2UgcG9zaXRpb24gaXMgZ2l2ZW4gYXMgImJpdFBvc2l0aW9uIi4KICAgdm9pZCBjbGVhckJpdCh1bnNpZ25lZCBCaXRQb3NpdGlvbikgewotICAgIGFzc2VydChCaXRQb3NpdGlvbiA8PSBCaXRXaWR0aCAmJiAiQml0UG9zaXRpb24gb3V0IG9mIHJhbmdlIik7CisgICAgYXNzZXJ0KEJpdFBvc2l0aW9uIDwgQml0V2lkdGggJiYgIkJpdFBvc2l0aW9uIG91dCBvZiByYW5nZSIpOwogICAgIFdvcmRUeXBlIE1hc2sgPSB+bWFza0JpdChCaXRQb3NpdGlvbik7CiAgICAgaWYgKGlzU2luZ2xlV29yZCgpKQogICAgICAgVS5WQUwgJj0gTWFzazsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0FQU0ludC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQVBTSW50LmgKaW5kZXggN2VlMmM0Yy4uYmUzNjYxMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQVBTSW50LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQVBTSW50LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vQURUL0FQU0ludC5oIC0gQXJiaXRyYXJ5IFByZWNpc2lvbiBTaWduZWQgSW50IC0tLS0tKi0gQysrIC0qLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0FsbG9jYXRvckxpc3QuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0FsbG9jYXRvckxpc3QuaAppbmRleCAxNzhjNjc0Li40MDVhMmU0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9BbGxvY2F0b3JMaXN0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQWxsb2NhdG9yTGlzdC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQURUL0FsbG9jYXRvckxpc3QuaCAtIEN1c3RvbSBhbGxvY2F0b3IgbGlzdCAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQW55LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9BbnkuaAppbmRleCA3ZmFhNGM5Li41ZGNkNmU3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9BbnkuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9BbnkuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBBbnkuaCAtIEdlbmVyaWMgdHlwZSBlcmFzZWQgaG9sZGVyIG9mIGFueSB0eXBlIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQXJyYXlSZWYuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0FycmF5UmVmLmgKaW5kZXggOWNiMjViMC4uNzViYjdkNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQXJyYXlSZWYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9BcnJheVJlZi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEFycmF5UmVmLmggLSBBcnJheSBSZWZlcmVuY2UgV3JhcHBlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNTI2LDEyICs1MjUsNiBAQAogCiAgIC8vLyBAfQogCi0gIC8vIEFycmF5UmVmcyBjYW4gYmUgdHJlYXRlZCBsaWtlIGEgUE9EIHR5cGUuCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXNQb2RMaWtlOwotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzUG9kTGlrZTxBcnJheVJlZjxUPj4gewotICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsKLSAgfTsKLQogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaGFzaF9jb2RlIGhhc2hfdmFsdWUoQXJyYXlSZWY8VD4gUykgewogICAgIHJldHVybiBoYXNoX2NvbWJpbmVfcmFuZ2UoUy5iZWdpbigpLCBTLmVuZCgpKTsKICAgfQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQml0VmVjdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9CaXRWZWN0b3IuaAppbmRleCA5YWIxZGE3Li5mYWJmNWQ5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9CaXRWZWN0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9CaXRWZWN0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FEVC9CaXRWZWN0b3IuaCAtIEJpdCB2ZWN0b3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQml0bWFza0VudW0uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0JpdG1hc2tFbnVtLmgKaW5kZXggMThjNmJhNS4uMWExOGJjNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQml0bWFza0VudW0uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9CaXRtYXNrRW51bS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0FEVC9CaXRtYXNrRW51bS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQnJlYWR0aEZpcnN0SXRlcmF0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0JyZWFkdGhGaXJzdEl0ZXJhdG9yLmgKaW5kZXggNmJjNjNjMi4uY2M2Yzg2MCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQnJlYWR0aEZpcnN0SXRlcmF0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9CcmVhZHRoRmlyc3RJdGVyYXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQURUL0JyZWFkdGhGaXJzdEl0ZXJhdG9yLmggLSBCcmVhZHRoIEZpcnN0IGl0ZXJhdG9yIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9DYWNoZWRIYXNoU3RyaW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9DYWNoZWRIYXNoU3RyaW5nLmgKaW5kZXggZDhmMGU3YS4uODAxNDRmYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvQ2FjaGVkSGFzaFN0cmluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0NhY2hlZEhhc2hTdHJpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FEVC9DYWNoZWRIYXNoU3RyaW5nLmggLSBQcmVoYXNoZWQgc3RyaW5nL1N0cmluZ1JlZiAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvREFHRGVsdGFBbGdvcml0aG0uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0RBR0RlbHRhQWxnb3JpdGhtLmgKaW5kZXggNDFmZGQ0My4uZDRjZGMzYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvREFHRGVsdGFBbGdvcml0aG0uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9EQUdEZWx0YUFsZ29yaXRobS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERBR0RlbHRhQWxnb3JpdGhtLmggLSBBIERBRyBNaW5pbWl6YXRpb24gQWxnb3JpdGhtIC0tLS0tLSotIEMrKyAtKi0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCiAjaWZuZGVmIExMVk1fQURUX0RBR0RFTFRBQUxHT1JJVEhNX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0RlbHRhQWxnb3JpdGhtLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9EZWx0YUFsZ29yaXRobS5oCmluZGV4IDZiZWNiMmEuLjExNGI5NTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0RlbHRhQWxnb3JpdGhtLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvRGVsdGFBbGdvcml0aG0uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEZWx0YUFsZ29yaXRobS5oIC0gQSBTZXQgTWluaW1pemF0aW9uIEFsZ29yaXRobSAtLS0tLS0tLS0qLSBDKysgLSotLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIAogI2lmbmRlZiBMTFZNX0FEVF9ERUxUQUFMR09SSVRITV9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9EZW5zZU1hcC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvRGVuc2VNYXAuaAppbmRleCAzODBmMWRiLi5lN2NkMzcwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9EZW5zZU1hcC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0RlbnNlTWFwLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvRGVuc2VNYXAuaCAtIERlbnNlIHByb2JlZCBoYXNoIHRhYmxlIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI1LDYgKzI0LDcgQEAKICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNzdGRkZWY+CiAjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgogI2luY2x1ZGUgPGl0ZXJhdG9yPgogI2luY2x1ZGUgPG5ldz4KICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KQEAgLTM4LDYgKzM4LDM0IEBACiAvLyBpbXBsZW1lbnRhdGlvbiB3aXRob3V0IHJlcXVpcmluZyB0d28gbWVtYmVycy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBLZXlULCB0eXBlbmFtZSBWYWx1ZVQ+CiBzdHJ1Y3QgRGVuc2VNYXBQYWlyIDogcHVibGljIHN0ZDo6cGFpcjxLZXlULCBWYWx1ZVQ+IHsKKworICAvLyBGSVhNRTogU3dpdGNoIHRvIGluaGVyaXRpbmcgY29uc3RydWN0b3JzIHdoZW4gd2UgZHJvcCBzdXBwb3J0IGZvciBvbGRlcgorICAvLyAgICAgICAgY2xhbmcgdmVyc2lvbnMuCisgIC8vIE5PVEU6IFRoaXMgZGVmYXVsdCBjb25zdHJ1Y3RvciBpcyBkZWNsYXJlZCB3aXRoICd7fScgcmF0aGVyIHRoYW4KKyAgLy8gICAgICAgJz0gZGVmYXVsdCcgdG8gd29yayBhcm91bmQgYSBzZXBhcmF0ZSBidWcgaW4gY2xhbmctMy44LiBUaGlzIGNhbgorICAvLyAgICAgICBhbHNvIGdvIHdoZW4gd2Ugc3dpdGNoIHRvIGluaGVyaXRpbmcgY29uc3RydWN0b3JzLgorICBEZW5zZU1hcFBhaXIoKSB7fQorCisgIERlbnNlTWFwUGFpcihjb25zdCBLZXlUICZLZXksIGNvbnN0IFZhbHVlVCAmVmFsdWUpCisgICAgICA6IHN0ZDo6cGFpcjxLZXlULCBWYWx1ZVQ+KEtleSwgVmFsdWUpIHt9CisKKyAgRGVuc2VNYXBQYWlyKEtleVQgJiZLZXksIFZhbHVlVCAmJlZhbHVlKQorICAgICAgOiBzdGQ6OnBhaXI8S2V5VCwgVmFsdWVUPihzdGQ6Om1vdmUoS2V5KSwgc3RkOjptb3ZlKFZhbHVlKSkge30KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWx0S2V5VCwgdHlwZW5hbWUgQWx0VmFsdWVUPgorICBEZW5zZU1hcFBhaXIoQWx0S2V5VCAmJkFsdEtleSwgQWx0VmFsdWVUICYmQWx0VmFsdWUsCisgICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICAgICAgICAgICAgICBzdGQ6OmlzX2NvbnZlcnRpYmxlPEFsdEtleVQsIEtleVQ+Ojp2YWx1ZSAmJgorICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfY29udmVydGlibGU8QWx0VmFsdWVULCBWYWx1ZVQ+Ojp2YWx1ZT46OnR5cGUgKiA9IDApCisgICAgICA6IHN0ZDo6cGFpcjxLZXlULCBWYWx1ZVQ+KHN0ZDo6Zm9yd2FyZDxBbHRLZXlUPihBbHRLZXkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZvcndhcmQ8QWx0VmFsdWVUPihBbHRWYWx1ZSkpIHt9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsdFBhaXJUPgorICBEZW5zZU1hcFBhaXIoQWx0UGFpclQgJiZBbHRQYWlyLAorICAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19jb252ZXJ0aWJsZTwKKyAgICAgICAgICAgICAgICAgICBBbHRQYWlyVCwgc3RkOjpwYWlyPEtleVQsIFZhbHVlVD4+Ojp2YWx1ZT46OnR5cGUgKiA9IDApCisgICAgICA6IHN0ZDo6cGFpcjxLZXlULCBWYWx1ZVQ+KHN0ZDo6Zm9yd2FyZDxBbHRQYWlyVD4oQWx0UGFpcikpIHt9CisKICAgS2V5VCAmZ2V0Rmlyc3QoKSB7IHJldHVybiBzdGQ6OnBhaXI8S2V5VCwgVmFsdWVUPjo6Zmlyc3Q7IH0KICAgY29uc3QgS2V5VCAmZ2V0Rmlyc3QoKSBjb25zdCB7IHJldHVybiBzdGQ6OnBhaXI8S2V5VCwgVmFsdWVUPjo6Zmlyc3Q7IH0KICAgVmFsdWVUICZnZXRTZWNvbmQoKSB7IHJldHVybiBzdGQ6OnBhaXI8S2V5VCwgVmFsdWVUPjo6c2Vjb25kOyB9CkBAIC00Niw5ICs3NCwxMCBAQAogCiB9IC8vIGVuZCBuYW1lc3BhY2UgZGV0YWlsCiAKLXRlbXBsYXRlIDwKLSAgICB0eXBlbmFtZSBLZXlULCB0eXBlbmFtZSBWYWx1ZVQsIHR5cGVuYW1lIEtleUluZm9UID0gRGVuc2VNYXBJbmZvPEtleVQ+LAotICAgIHR5cGVuYW1lIEJ1Y2tldCA9IGRldGFpbDo6RGVuc2VNYXBQYWlyPEtleVQsIFZhbHVlVD4sIGJvb2wgSXNDb25zdCA9IGZhbHNlPgordGVtcGxhdGUgPHR5cGVuYW1lIEtleVQsIHR5cGVuYW1lIFZhbHVlVCwKKyAgICAgICAgICB0eXBlbmFtZSBLZXlJbmZvVCA9IERlbnNlTWFwSW5mbzxLZXlUPiwKKyAgICAgICAgICB0eXBlbmFtZSBCdWNrZXQgPSBsbHZtOjpkZXRhaWw6OkRlbnNlTWFwUGFpcjxLZXlULCBWYWx1ZVQ+LAorICAgICAgICAgIGJvb2wgSXNDb25zdCA9IGZhbHNlPgogY2xhc3MgRGVuc2VNYXBJdGVyYXRvcjsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWRULCB0eXBlbmFtZSBLZXlULCB0eXBlbmFtZSBWYWx1ZVQsIHR5cGVuYW1lIEtleUluZm9ULApAQCAtMTE2LDcgKzE0NSw4IEBACiAgICAgfQogCiAgICAgY29uc3QgS2V5VCBFbXB0eUtleSA9IGdldEVtcHR5S2V5KCksIFRvbWJzdG9uZUtleSA9IGdldFRvbWJzdG9uZUtleSgpOwotICAgIGlmIChpc1BvZExpa2U8S2V5VD46OnZhbHVlICYmIGlzUG9kTGlrZTxWYWx1ZVQ+Ojp2YWx1ZSkgeworICAgIGlmIChpc190cml2aWFsbHlfY29weWFibGU8S2V5VD46OnZhbHVlICYmCisgICAgICAgIGlzX3RyaXZpYWxseV9jb3B5YWJsZTxWYWx1ZVQ+Ojp2YWx1ZSkgewogICAgICAgLy8gVXNlIGEgc2ltcGxlciBsb29wIHdoZW4gdGhlc2UgYXJlIHRyaXZpYWwgdHlwZXMuCiAgICAgICBmb3IgKEJ1Y2tldFQgKlAgPSBnZXRCdWNrZXRzKCksICpFID0gZ2V0QnVja2V0c0VuZCgpOyBQICE9IEU7ICsrUCkKICAgICAgICAgUC0+Z2V0Rmlyc3QoKSA9IEVtcHR5S2V5OwpAQCAtMzkyLDcgKzQyMiw4IEBACiAgICAgc2V0TnVtRW50cmllcyhvdGhlci5nZXROdW1FbnRyaWVzKCkpOwogICAgIHNldE51bVRvbWJzdG9uZXMob3RoZXIuZ2V0TnVtVG9tYnN0b25lcygpKTsKIAotICAgIGlmIChpc1BvZExpa2U8S2V5VD46OnZhbHVlICYmIGlzUG9kTGlrZTxWYWx1ZVQ+Ojp2YWx1ZSkKKyAgICBpZiAoaXNfdHJpdmlhbGx5X2NvcHlhYmxlPEtleVQ+Ojp2YWx1ZSAmJgorICAgICAgICBpc190cml2aWFsbHlfY29weWFibGU8VmFsdWVUPjo6dmFsdWUpCiAgICAgICBtZW1jcHkocmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KGdldEJ1Y2tldHMoKSksIG90aGVyLmdldEJ1Y2tldHMoKSwKICAgICAgICAgICAgICBnZXROdW1CdWNrZXRzKCkgKiBzaXplb2YoQnVja2V0VCkpOwogICAgIGVsc2UKQEAgLTYzOSw5ICs2NzAsNDMgQEAKICAgfQogfTsKIAorLy8vIEVxdWFsaXR5IGNvbXBhcmlzb24gZm9yIERlbnNlTWFwLgorLy8vCisvLy8gSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBMSFMgY29uZmlybWluZyB0aGF0IGVhY2ggKGtleSwgdmFsdWUpIHBhaXIgaW4gTEhTCisvLy8gaXMgYWxzbyBpbiBSSFMsIGFuZCB0aGF0IG5vIGFkZGl0aW9uYWwgcGFpcnMgYXJlIGluIFJIUy4KKy8vLyBFcXVpdmFsZW50IHRvIE4gY2FsbHMgdG8gUkhTLmZpbmQgYW5kIE4gdmFsdWUgY29tcGFyaXNvbnMuIEFtb3J0aXplZAorLy8vIGNvbXBsZXhpdHkgaXMgbGluZWFyLCB3b3JzdCBjYXNlIGlzIE8oTl4yKSAoaWYgZXZlcnkgaGFzaCBjb2xsaWRlcykuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZFQsIHR5cGVuYW1lIEtleVQsIHR5cGVuYW1lIFZhbHVlVCwgdHlwZW5hbWUgS2V5SW5mb1QsCisgICAgICAgICAgdHlwZW5hbWUgQnVja2V0VD4KK2Jvb2wgb3BlcmF0b3I9PSgKKyAgICBjb25zdCBEZW5zZU1hcEJhc2U8RGVyaXZlZFQsIEtleVQsIFZhbHVlVCwgS2V5SW5mb1QsIEJ1Y2tldFQ+ICZMSFMsCisgICAgY29uc3QgRGVuc2VNYXBCYXNlPERlcml2ZWRULCBLZXlULCBWYWx1ZVQsIEtleUluZm9ULCBCdWNrZXRUPiAmUkhTKSB7CisgIGlmIChMSFMuc2l6ZSgpICE9IFJIUy5zaXplKCkpCisgICAgcmV0dXJuIGZhbHNlOworCisgIGZvciAoYXV0byAmS1YgOiBMSFMpIHsKKyAgICBhdXRvIEkgPSBSSFMuZmluZChLVi5maXJzdCk7CisgICAgaWYgKEkgPT0gUkhTLmVuZCgpIHx8IEktPnNlY29uZCAhPSBLVi5zZWNvbmQpCisgICAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKworLy8vIEluZXF1YWxpdHkgY29tcGFyaXNvbiBmb3IgRGVuc2VNYXAuCisvLy8KKy8vLyBFcXVpdmFsZW50IHRvICEoTEhTID09IFJIUykuIFNlZSBvcGVyYXRvcj09IGZvciBwZXJmb3JtYW5jZSBub3Rlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkVCwgdHlwZW5hbWUgS2V5VCwgdHlwZW5hbWUgVmFsdWVULCB0eXBlbmFtZSBLZXlJbmZvVCwKKyAgICAgICAgICB0eXBlbmFtZSBCdWNrZXRUPgorYm9vbCBvcGVyYXRvciE9KAorICAgIGNvbnN0IERlbnNlTWFwQmFzZTxEZXJpdmVkVCwgS2V5VCwgVmFsdWVULCBLZXlJbmZvVCwgQnVja2V0VD4gJkxIUywKKyAgICBjb25zdCBEZW5zZU1hcEJhc2U8RGVyaXZlZFQsIEtleVQsIFZhbHVlVCwgS2V5SW5mb1QsIEJ1Y2tldFQ+ICZSSFMpIHsKKyAgcmV0dXJuICEoTEhTID09IFJIUyk7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBLZXlULCB0eXBlbmFtZSBWYWx1ZVQsCiAgICAgICAgICAgdHlwZW5hbWUgS2V5SW5mb1QgPSBEZW5zZU1hcEluZm88S2V5VD4sCi0gICAgICAgICAgdHlwZW5hbWUgQnVja2V0VCA9IGRldGFpbDo6RGVuc2VNYXBQYWlyPEtleVQsIFZhbHVlVD4+CisgICAgICAgICAgdHlwZW5hbWUgQnVja2V0VCA9IGxsdm06OmRldGFpbDo6RGVuc2VNYXBQYWlyPEtleVQsIFZhbHVlVD4+CiBjbGFzcyBEZW5zZU1hcCA6IHB1YmxpYyBEZW5zZU1hcEJhc2U8RGVuc2VNYXA8S2V5VCwgVmFsdWVULCBLZXlJbmZvVCwgQnVja2V0VD4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5VCwgVmFsdWVULCBLZXlJbmZvVCwgQnVja2V0VD4gewogICBmcmllbmQgY2xhc3MgRGVuc2VNYXBCYXNlPERlbnNlTWFwLCBLZXlULCBWYWx1ZVQsIEtleUluZm9ULCBCdWNrZXRUPjsKQEAgLTY3Niw2ICs3NDEsMTEgQEAKICAgICB0aGlzLT5pbnNlcnQoSSwgRSk7CiAgIH0KIAorICBEZW5zZU1hcChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dHlwZW5hbWUgQmFzZVQ6OnZhbHVlX3R5cGU+IFZhbHMpIHsKKyAgICBpbml0KFZhbHMuc2l6ZSgpKTsKKyAgICB0aGlzLT5pbnNlcnQoVmFscy5iZWdpbigpLCBWYWxzLmVuZCgpKTsKKyAgfQorCiAgIH5EZW5zZU1hcCgpIHsKICAgICB0aGlzLT5kZXN0cm95QWxsKCk7CiAgICAgb3BlcmF0b3IgZGVsZXRlKEJ1Y2tldHMpOwpAQCAtNzk4LDcgKzg2OCw3IEBACiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBLZXlULCB0eXBlbmFtZSBWYWx1ZVQsIHVuc2lnbmVkIElubGluZUJ1Y2tldHMgPSA0LAogICAgICAgICAgIHR5cGVuYW1lIEtleUluZm9UID0gRGVuc2VNYXBJbmZvPEtleVQ+LAotICAgICAgICAgIHR5cGVuYW1lIEJ1Y2tldFQgPSBkZXRhaWw6OkRlbnNlTWFwUGFpcjxLZXlULCBWYWx1ZVQ+PgorICAgICAgICAgIHR5cGVuYW1lIEJ1Y2tldFQgPSBsbHZtOjpkZXRhaWw6OkRlbnNlTWFwUGFpcjxLZXlULCBWYWx1ZVQ+PgogY2xhc3MgU21hbGxEZW5zZU1hcAogICAgIDogcHVibGljIERlbnNlTWFwQmFzZTwKICAgICAgICAgICBTbWFsbERlbnNlTWFwPEtleVQsIFZhbHVlVCwgSW5saW5lQnVja2V0cywgS2V5SW5mb1QsIEJ1Y2tldFQ+LCBLZXlULApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvRGVuc2VNYXBJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9EZW5zZU1hcEluZm8uaAppbmRleCA1ZDEyYjQyLi4xOGQ2ZGZmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9EZW5zZU1hcEluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9EZW5zZU1hcEluZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FEVC9EZW5zZU1hcEluZm8uaCAtIFR5cGUgdHJhaXRzIGZvciBEZW5zZU1hcCAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvRGVuc2VTZXQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0RlbnNlU2V0LmgKaW5kZXggNTJmZTRhZC4uNWVhYWYyNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvRGVuc2VTZXQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9EZW5zZVNldC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQURUL0RlbnNlU2V0LmggLSBEZW5zZSBwcm9iZWQgaGFzaCB0YWJsZSAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNiw2ICsxNSw3IEBACiAKICNpbmNsdWRlICJsbHZtL0FEVC9EZW5zZU1hcC5oIgogI2luY2x1ZGUgImxsdm0vQURUL0RlbnNlTWFwSW5mby5oIgorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9NYXRoRXh0cmFzLmgiCiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L3R5cGVfdHJhaXRzLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNzdGRkZWY+CkBAIC02Nyw3ICs2Nyw3IEBACiAgIGV4cGxpY2l0IERlbnNlU2V0SW1wbCh1bnNpZ25lZCBJbml0aWFsUmVzZXJ2ZSA9IDApIDogVGhlTWFwKEluaXRpYWxSZXNlcnZlKSB7fQogCiAgIERlbnNlU2V0SW1wbChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VmFsdWVUPiBFbGVtcykKLSAgICAgIDogRGVuc2VTZXRJbXBsKEVsZW1zLnNpemUoKSkgeworICAgICAgOiBEZW5zZVNldEltcGwoUG93ZXJPZjJDZWlsKEVsZW1zLnNpemUoKSkpIHsKICAgICBpbnNlcnQoRWxlbXMuYmVnaW4oKSwgRWxlbXMuZW5kKCkpOwogICB9CiAKQEAgLTIxNCw2ICsyMTQsMzQgQEAKICAgfQogfTsKIAorLy8vIEVxdWFsaXR5IGNvbXBhcmlzb24gZm9yIERlbnNlU2V0LgorLy8vCisvLy8gSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBMSFMgY29uZmlybWluZyB0aGF0IGVhY2ggZWxlbWVudCBpcyBhbHNvIGEgbWVtYmVyCisvLy8gb2YgUkhTLCBhbmQgdGhhdCBSSFMgY29udGFpbnMgbm8gYWRkaXRpb25hbCB2YWx1ZXMuCisvLy8gRXF1aXZhbGVudCB0byBOIGNhbGxzIHRvIFJIUy5jb3VudC4gQW1vcnRpemVkIGNvbXBsZXhpdHkgaXMgbGluZWFyLCB3b3JzdAorLy8vIGNhc2UgaXMgTyhOXjIpIChpZiBldmVyeSBoYXNoIGNvbGxpZGVzKS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZVQsIHR5cGVuYW1lIE1hcFR5LCB0eXBlbmFtZSBWYWx1ZUluZm9UPgorYm9vbCBvcGVyYXRvcj09KGNvbnN0IERlbnNlU2V0SW1wbDxWYWx1ZVQsIE1hcFR5LCBWYWx1ZUluZm9UPiAmTEhTLAorICAgICAgICAgICAgICAgIGNvbnN0IERlbnNlU2V0SW1wbDxWYWx1ZVQsIE1hcFR5LCBWYWx1ZUluZm9UPiAmUkhTKSB7CisgIGlmIChMSFMuc2l6ZSgpICE9IFJIUy5zaXplKCkpCisgICAgcmV0dXJuIGZhbHNlOworCisgIGZvciAoYXV0byAmRSA6IExIUykKKyAgICBpZiAoIVJIUy5jb3VudChFKSkKKyAgICAgIHJldHVybiBmYWxzZTsKKworICByZXR1cm4gdHJ1ZTsKK30KKworLy8vIEluZXF1YWxpdHkgY29tcGFyaXNvbiBmb3IgRGVuc2VTZXQuCisvLy8KKy8vLyBFcXVpdmFsZW50IHRvICEoTEhTID09IFJIUykuIFNlZSBvcGVyYXRvcj09IGZvciBwZXJmb3JtYW5jZSBub3Rlcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBWYWx1ZVQsIHR5cGVuYW1lIE1hcFR5LCB0eXBlbmFtZSBWYWx1ZUluZm9UPgorYm9vbCBvcGVyYXRvciE9KGNvbnN0IERlbnNlU2V0SW1wbDxWYWx1ZVQsIE1hcFR5LCBWYWx1ZUluZm9UPiAmTEhTLAorICAgICAgICAgICAgICAgIGNvbnN0IERlbnNlU2V0SW1wbDxWYWx1ZVQsIE1hcFR5LCBWYWx1ZUluZm9UPiAmUkhTKSB7CisgIHJldHVybiAhKExIUyA9PSBSSFMpOworfQorCiB9IC8vIGVuZCBuYW1lc3BhY2UgZGV0YWlsCiAKIC8vLyBJbXBsZW1lbnRzIGEgZGVuc2UgcHJvYmVkIGhhc2gtdGFibGUgYmFzZWQgc2V0LgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvRGVwdGhGaXJzdEl0ZXJhdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9EZXB0aEZpcnN0SXRlcmF0b3IuaAppbmRleCAxZjM3NjZkLi4xMTk2N2Y1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9EZXB0aEZpcnN0SXRlcmF0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9EZXB0aEZpcnN0SXRlcmF0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FEVC9EZXB0aEZpcnN0SXRlcmF0b3IuaCAtIERlcHRoIEZpcnN0IGl0ZXJhdG9yIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvRXBvY2hUcmFja2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9FcG9jaFRyYWNrZXIuaAppbmRleCA0OWVmMTkyLi5hNzgyYjQ3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9FcG9jaFRyYWNrZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9FcG9jaFRyYWNrZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FEVC9FcG9jaFRyYWNrZXIuaCAtIEFEVCBlcG9jaCB0cmFja2luZyAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvRXF1aXZhbGVuY2VDbGFzc2VzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9FcXVpdmFsZW5jZUNsYXNzZXMuaAppbmRleCBlM2Y0ODQzLi4yY2I3MTA4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9FcXVpdmFsZW5jZUNsYXNzZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9FcXVpdmFsZW5jZUNsYXNzZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FEVC9FcXVpdmFsZW5jZUNsYXNzZXMuaCAtIEdlbmVyaWMgRXF1aXYuIENsYXNzZXMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvRm9sZGluZ1NldC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvRm9sZGluZ1NldC5oCmluZGV4IGUzNjNlNjkuLmQ1ODM3ZTUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0ZvbGRpbmdTZXQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9Gb2xkaW5nU2V0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvRm9sZGluZ1NldC5oIC0gVW5pcXVpbmcgSGFzaCBTZXQgLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0Z1bmN0aW9uRXh0cmFzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9GdW5jdGlvbkV4dHJhcy5oCmluZGV4IDJiNzVkYzYuLjEyMWFhNTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0Z1bmN0aW9uRXh0cmFzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvRnVuY3Rpb25FeHRyYXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBGdW5jdGlvbkV4dHJhcy5oIC0gRnVuY3Rpb24gdHlwZSBlcmFzdXJlIHV0aWxpdGllcyAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0dyYXBoVHJhaXRzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9HcmFwaFRyYWl0cy5oCmluZGV4IGQzOWI1MGYuLjNjZTkxMjIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0dyYXBoVHJhaXRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvR3JhcGhUcmFpdHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FEVC9HcmFwaFRyYWl0cy5oIC0gR3JhcGggdHJhaXRzIHRlbXBsYXRlIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvSGFzaGluZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvSGFzaGluZy5oCmluZGV4IDkxNzVjNTQuLmY2MzlhYTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0hhc2hpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9IYXNoaW5nLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vQURUL0hhc2hpbmcuaCAtIFV0aWxpdGllcyBmb3IgaGFzaGluZyAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0ltbXV0YWJsZUxpc3QuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0ltbXV0YWJsZUxpc3QuaAppbmRleCAwNTQxZGMyLi5jOWVlNDk0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9JbW11dGFibGVMaXN0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvSW1tdXRhYmxlTGlzdC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0tLSBJbW11dGFibGVMaXN0LmggLSBJbW11dGFibGUgKGZ1bmN0aW9uYWwpIGxpc3QgaW50ZXJmYWNlIC0tKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yNDIsMTAgKzI0MSw2IEBACiAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXNQb2RMaWtlOwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNQb2RMaWtlPEltbXV0YWJsZUxpc3Q8VD4+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotCiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQogCiAjZW5kaWYgLy8gTExWTV9BRFRfSU1NVVRBQkxFTElTVF9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9JbW11dGFibGVNYXAuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0ltbXV0YWJsZU1hcC5oCmluZGV4IGNiYzI3ZmYuLjg2ZmQ3ZmUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0ltbXV0YWJsZU1hcC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0ltbXV0YWJsZU1hcC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gSW1tdXRhYmxlTWFwLmggLSBJbW11dGFibGUgKGZ1bmN0aW9uYWwpIG1hcCBpbnRlcmZhY2UgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9JbW11dGFibGVTZXQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0ltbXV0YWJsZVNldC5oCmluZGV4IGIxZDVmNGEuLjU4NzEwNTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0ltbXV0YWJsZVNldC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0ltbXV0YWJsZVNldC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gSW1tdXRhYmxlU2V0LmggLSBJbW11dGFibGUgKGZ1bmN0aW9uYWwpIHNldCBpbnRlcmZhY2UgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9JbmRleGVkTWFwLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9JbmRleGVkTWFwLmgKaW5kZXggMmVlODBkMi4uYjQ0ZjE2YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvSW5kZXhlZE1hcC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0luZGV4ZWRNYXAuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FEVC9JbmRleGVkTWFwLmggLSBBbiBpbmRleCBtYXAgaW1wbGVtZW50YXRpb24gLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvSW50RXFDbGFzc2VzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9JbnRFcUNsYXNzZXMuaAppbmRleCAwYmFlZTJmLi4wOGY0NmEzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9JbnRFcUNsYXNzZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9JbnRFcUNsYXNzZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9BRFQvSW50RXFDbGFzc2VzLmggLSBFcXVpdi4gQ2xhc3NlcyBvZiBJbnRlZ2VycyAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvSW50ZXJ2YWxNYXAuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0ludGVydmFsTWFwLmgKaW5kZXggYjc1YzQ5Mi4uMTI4MjhjNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvSW50ZXJ2YWxNYXAuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9JbnRlcnZhbE1hcC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQURUL0ludGVydmFsTWFwLmggLSBBIHNvcnRlZCBpbnRlcnZhbCBtYXAgLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMTM0LDYgKzExMzMsMTkgQEAKICAgICBJLmZpbmQoeCk7CiAgICAgcmV0dXJuIEk7CiAgIH0KKworICAvLy8gb3ZlcmxhcHMoYSwgYikgLSBSZXR1cm4gdHJ1ZSBpZiB0aGUgaW50ZXJ2YWxzIGluIHRoaXMgbWFwIG92ZXJsYXAgd2l0aCB0aGUKKyAgLy8vIGludGVydmFsIFthO2JdLgorICBib29sIG92ZXJsYXBzKEtleVQgYSwgS2V5VCBiKSB7CisgICAgYXNzZXJ0KFRyYWl0czo6bm9uRW1wdHkoYSwgYikpOworICAgIGNvbnN0X2l0ZXJhdG9yIEkgPSBmaW5kKGEpOworICAgIGlmICghSS52YWxpZCgpKQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIFthO2JdIGFuZCBbeDt5XSBvdmVybGFwIGlmZiB4PD1iIGFuZCBhPD15LiBUaGUgZmluZCgpIGNhbGwgZ3VhcmFudGVlcyB0aGUKKyAgICAvLyBzZWNvbmQgcGFydCAoeSA9IGZpbmQoYSkuc3RvcCgpKSwgc28gaXQgaXMgc3VmZmljaWVudCB0byBjaGVjayB0aGUgZmlyc3QKKyAgICAvLyBvbmUuCisgICAgcmV0dXJuICFUcmFpdHM6OnN0b3BMZXNzKGIsIEkuc3RhcnQoKSk7CisgIH0KIH07CiAKIC8vLyB0cmVlU2FmZUxvb2t1cCAtIFJldHVybiB0aGUgbWFwcGVkIHZhbHVlIGF0IHggb3IgTm90Rm91bmQsIGFzc3VtaW5nIGEKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL0ludHJ1c2l2ZVJlZkNudFB0ci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvSW50cnVzaXZlUmVmQ250UHRyLmgKaW5kZXggNDMwZWY4Ni4uNmQ5N2ZlMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvSW50cnVzaXZlUmVmQ250UHRyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvSW50cnVzaXZlUmVmQ250UHRyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09LSBsbHZtL0FEVC9JbnRydXNpdmVSZWZDbnRQdHIuaCAtIFNtYXJ0IFJlZmNvdW50aW5nIFBvaW50ZXIgLS0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL01hcFZlY3Rvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvTWFwVmVjdG9yLmgKaW5kZXggNDdiNDk4Ny4uMWRlMTEyNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvTWFwVmVjdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvTWFwVmVjdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvTWFwVmVjdG9yLmggLSBNYXAgdy8gZGV0ZXJtaW5pc3RpYyB2YWx1ZSBvcmRlciAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL05vbmUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL05vbmUuaAppbmRleCA0YjZiYzFlLi4wMDRjYTBhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9Ob25lLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvTm9uZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBOb25lLmggLSBTaW1wbGUgbnVsbCB2YWx1ZSBmb3IgaW1wbGljaXQgY29uc3RydWN0aW9uIC0tLS0tLSotIEMrKyAtKi09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9PcHRpb25hbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvT3B0aW9uYWwuaAppbmRleCAzNTNlNWQwLi4yNWEzMTg1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9PcHRpb25hbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL09wdGlvbmFsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gT3B0aW9uYWwuaCAtIFNpbXBsZSB2YXJpYW50IGZvciBwYXNzaW5nIG9wdGlvbmFsIHZhbHVlcyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI3LDkgKzI2LDExIEBACiAKIG5hbWVzcGFjZSBsbHZtIHsKIAorY2xhc3MgcmF3X29zdHJlYW07CisKIG5hbWVzcGFjZSBvcHRpb25hbF9kZXRhaWwgewogLy8vIFN0b3JhZ2UgZm9yIGFueSB0eXBlLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgSXNQb2RMaWtlPiBzdHJ1Y3QgT3B0aW9uYWxTdG9yYWdlIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sID0gaXNfdHJpdmlhbGx5X2NvcHlhYmxlPFQ+Ojp2YWx1ZT4gc3RydWN0IE9wdGlvbmFsU3RvcmFnZSB7CiAgIEFsaWduZWRDaGFyQXJyYXlVbmlvbjxUPiBzdG9yYWdlOwogICBib29sIGhhc1ZhbCA9IGZhbHNlOwogCkBAIC0xMDgsMjggKzEwOSwxMCBAQAogICB9CiB9OwogCi0jaWYgIWRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX19jbGFuZ19fKSAvLyBHQ0MgdXAgdG8gR0NDNyBtaXNjb21waWxlcyB0aGlzLgotLy8vIFN0b3JhZ2UgZm9yIHRyaXZpYWxseSBjb3B5YWJsZSB0eXBlcyBvbmx5LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBPcHRpb25hbFN0b3JhZ2U8VCwgdHJ1ZT4gewotICBBbGlnbmVkQ2hhckFycmF5VW5pb248VD4gc3RvcmFnZTsKLSAgYm9vbCBoYXNWYWwgPSBmYWxzZTsKLQotICBPcHRpb25hbFN0b3JhZ2UoKSA9IGRlZmF1bHQ7Ci0KLSAgT3B0aW9uYWxTdG9yYWdlKGNvbnN0IFQgJnkpIDogaGFzVmFsKHRydWUpIHsgbmV3IChzdG9yYWdlLmJ1ZmZlcikgVCh5KTsgfQotICBPcHRpb25hbFN0b3JhZ2UgJm9wZXJhdG9yPShjb25zdCBUICZ5KSB7Ci0gICAgKnJlaW50ZXJwcmV0X2Nhc3Q8VCAqPihzdG9yYWdlLmJ1ZmZlcikgPSB5OwotICAgIGhhc1ZhbCA9IHRydWU7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgdm9pZCByZXNldCgpIHsgaGFzVmFsID0gZmFsc2U7IH0KLX07Ci0jZW5kaWYKIH0gLy8gbmFtZXNwYWNlIG9wdGlvbmFsX2RldGFpbAogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgT3B0aW9uYWwgewotICBvcHRpb25hbF9kZXRhaWw6Ok9wdGlvbmFsU3RvcmFnZTxULCBpc1BvZExpa2U8VD46OnZhbHVlPiBTdG9yYWdlOworICBvcHRpb25hbF9kZXRhaWw6Ok9wdGlvbmFsU3RvcmFnZTxUPiBTdG9yYWdlOwogCiBwdWJsaWM6CiAgIHVzaW5nIHZhbHVlX3R5cGUgPSBUOwpAQCAtMjAyLDExICsxODUsNiBAQAogI2VuZGlmCiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzUG9kTGlrZTxPcHRpb25hbDxUPj4gewotICAvLyBBbiBPcHRpb25hbDxUPiBpcyBwb2QtbGlrZSBpZiBUIGlzLgotICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGlzUG9kTGlrZTxUPjo6dmFsdWU7Ci19OwotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPcHRpb25hbDxUPiAmWCwgY29uc3QgT3B0aW9uYWw8VT4gJlkpIHsKICAgaWYgKFggJiYgWSkKQEAgLTM0MSw2ICszMTksMTggQEAKICAgcmV0dXJuICEoWCA8IFkpOwogfQogCityYXdfb3N0cmVhbSAmb3BlcmF0b3I8PChyYXdfb3N0cmVhbSAmT1MsIE5vbmVUeXBlKTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gZGVjbHR5cGUoc3RkOjpkZWNsdmFsPHJhd19vc3RyZWFtICY+KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZGVjbHZhbDxjb25zdCBUICY+KCkpPgorcmF3X29zdHJlYW0gJm9wZXJhdG9yPDwocmF3X29zdHJlYW0gJk9TLCBjb25zdCBPcHRpb25hbDxUPiAmTykgeworICBpZiAoTykKKyAgICBPUyA8PCAqTzsKKyAgZWxzZQorICAgIE9TIDw8IE5vbmU7CisgIHJldHVybiBPUzsKK30KKwogfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KIAogI2VuZGlmIC8vIExMVk1fQURUX09QVElPTkFMX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1BhY2tlZFZlY3Rvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvUGFja2VkVmVjdG9yLmgKaW5kZXggM2Q1M2M0OS4uYWU3ZjhjYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvUGFja2VkVmVjdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvUGFja2VkVmVjdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvUGFja2VkVmVjdG9yLmggLSBQYWNrZWQgdmFsdWVzIHZlY3RvciAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1BvaW50ZXJFbWJlZGRlZEludC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvUG9pbnRlckVtYmVkZGVkSW50LmgKaW5kZXggYWI0ZTEwNC4uM2ViNmVkYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvUG9pbnRlckVtYmVkZGVkSW50LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvUG9pbnRlckVtYmVkZGVkSW50LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvUG9pbnRlckVtYmVkZGVkSW50LmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9Qb2ludGVySW50UGFpci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvUG9pbnRlckludFBhaXIuaAppbmRleCA4ODRkMDUxLi4yNGEyYmI2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9Qb2ludGVySW50UGFpci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1BvaW50ZXJJbnRQYWlyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvUG9pbnRlckludFBhaXIuaCAtIFBhaXIgZm9yIHBvaW50ZXIgYW5kIGludCAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE1LDYgKzE0LDcgQEAKICNkZWZpbmUgTExWTV9BRFRfUE9JTlRFUklOVFBBSVJfSAogCiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L1BvaW50ZXJMaWtlVHlwZVRyYWl0cy5oIgorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC90eXBlX3RyYWl0cy5oIgogI2luY2x1ZGUgPGNhc3NlcnQ+CiAjaW5jbHVkZSA8Y3N0ZGludD4KICNpbmNsdWRlIDxsaW1pdHM+CkBAIC00Miw2ICs0Miw4IEBACiAgICAgICAgICAgdHlwZW5hbWUgUHRyVHJhaXRzID0gUG9pbnRlckxpa2VUeXBlVHJhaXRzPFBvaW50ZXJUeT4sCiAgICAgICAgICAgdHlwZW5hbWUgSW5mbyA9IFBvaW50ZXJJbnRQYWlySW5mbzxQb2ludGVyVHksIEludEJpdHMsIFB0clRyYWl0cz4+CiBjbGFzcyBQb2ludGVySW50UGFpciB7CisgIC8vIFVzZWQgYnkgTVNWQyB2aXN1YWxpemVyIGFuZCBnZW5lcmFsbHkgaGVscGZ1bCBmb3IgZGVidWdnaW5nL3Zpc3VhbGl6aW5nLgorICB1c2luZyBJbmZvVHkgPSBJbmZvOwogICBpbnRwdHJfdCBWYWx1ZSA9IDA7CiAKIHB1YmxpYzoKQEAgLTEyNCw2ICsxMjYsMTkgQEAKICAgfQogfTsKIAorLy8gU3BlY2lhbGl6ZSBpc190cml2aWFsbHlfY29weWFibGUgdG8gYXZvaWQgbGltaXRhdGlvbiBvZiBsbHZtOjppc190cml2aWFsbHlfY29weWFibGUKKy8vIHdoZW4gY29tcGlsZWQgd2l0aCBnY2MgNC45LgordGVtcGxhdGUgPHR5cGVuYW1lIFBvaW50ZXJUeSwgdW5zaWduZWQgSW50Qml0cywgdHlwZW5hbWUgSW50VHlwZSwKKyAgICAgICAgICB0eXBlbmFtZSBQdHJUcmFpdHMsCisgICAgICAgICAgdHlwZW5hbWUgSW5mbz4KK3N0cnVjdCBpc190cml2aWFsbHlfY29weWFibGU8UG9pbnRlckludFBhaXI8UG9pbnRlclR5LCBJbnRCaXRzLCBJbnRUeXBlLCBQdHJUcmFpdHMsIEluZm8+PiA6IHN0ZDo6dHJ1ZV90eXBlIHsKKyNpZmRlZiBIQVZFX1NURF9JU19UUklWSUFMTFlfQ09QWUFCTEUKKyAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxQb2ludGVySW50UGFpcjxQb2ludGVyVHksIEludEJpdHMsIEludFR5cGUsIFB0clRyYWl0cywgSW5mbz4+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAiaW5jb25zaXN0ZW50IGJlaGF2aW9yIGJldHdlZW4gbGx2bTo6IGFuZCBzdGQ6OiBpbXBsZW1lbnRhdGlvbiBvZiBpc190cml2aWFsbHlfY29weWFibGUiKTsKKyNlbmRpZgorfTsKKworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUG9pbnRlclQsIHVuc2lnbmVkIEludEJpdHMsIHR5cGVuYW1lIFB0clRyYWl0cz4KIHN0cnVjdCBQb2ludGVySW50UGFpckluZm8gewogICBzdGF0aWNfYXNzZXJ0KFB0clRyYWl0czo6TnVtTG93Qml0c0F2YWlsYWJsZSA8CkBAIC0xNzQsMTIgKzE4OSw2IEBACiAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXNQb2RMaWtlOwotdGVtcGxhdGUgPHR5cGVuYW1lIFBvaW50ZXJUeSwgdW5zaWduZWQgSW50Qml0cywgdHlwZW5hbWUgSW50VHlwZT4KLXN0cnVjdCBpc1BvZExpa2U8UG9pbnRlckludFBhaXI8UG9pbnRlclR5LCBJbnRCaXRzLCBJbnRUeXBlPj4gewotICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7Ci19OwotCiAvLyBQcm92aWRlIHNwZWNpYWxpemF0aW9uIG9mIERlbnNlTWFwSW5mbyBmb3IgUG9pbnRlckludFBhaXIuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgUG9pbnRlclR5LCB1bnNpZ25lZCBJbnRCaXRzLCB0eXBlbmFtZSBJbnRUeXBlPgogc3RydWN0IERlbnNlTWFwSW5mbzxQb2ludGVySW50UGFpcjxQb2ludGVyVHksIEludEJpdHMsIEludFR5cGU+PiB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9Qb2ludGVyU3VtVHlwZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvUG9pbnRlclN1bVR5cGUuaAppbmRleCBhMTllNDVhLi5kNDY3ZjgzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9Qb2ludGVyU3VtVHlwZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1BvaW50ZXJTdW1UeXBlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvUG9pbnRlclN1bVR5cGUuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9Qb2ludGVyVW5pb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1BvaW50ZXJVbmlvbi5oCmluZGV4IDMxNWU1ODMuLjA2MDU0MjkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1BvaW50ZXJVbmlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1BvaW50ZXJVbmlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQURUL1BvaW50ZXJVbmlvbi5oIC0gRGlzY3JpbWluYXRlZCBVbmlvbiBvZiAyIFB0cnMgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9Qb3N0T3JkZXJJdGVyYXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvUG9zdE9yZGVySXRlcmF0b3IuaAppbmRleCBkYzhhOWI2Li4yZmU3NDQ3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9Qb3N0T3JkZXJJdGVyYXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1Bvc3RPcmRlckl0ZXJhdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvUG9zdE9yZGVySXRlcmF0b3IuaCAtIFBvc3RPcmRlciBpdGVyYXRvciAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI5NiwxMiArMjk1LDE1IEBACiAKIHB1YmxpYzoKICAgdXNpbmcgcnBvX2l0ZXJhdG9yID0gdHlwZW5hbWUgc3RkOjp2ZWN0b3I8Tm9kZVJlZj46OnJldmVyc2VfaXRlcmF0b3I7CisgIHVzaW5nIGNvbnN0X3Jwb19pdGVyYXRvciA9IHR5cGVuYW1lIHN0ZDo6dmVjdG9yPE5vZGVSZWY+Ojpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwogCiAgIFJldmVyc2VQb3N0T3JkZXJUcmF2ZXJzYWwoR3JhcGhUIEcpIHsgSW5pdGlhbGl6ZShHVDo6Z2V0RW50cnlOb2RlKEcpKTsgfQogCiAgIC8vIEJlY2F1c2Ugd2Ugd2FudCBhIHJldmVyc2UgcG9zdCBvcmRlciwgdXNlIHJldmVyc2UgaXRlcmF0b3JzIGZyb20gdGhlIHZlY3RvcgogICBycG9faXRlcmF0b3IgYmVnaW4oKSB7IHJldHVybiBCbG9ja3MucmJlZ2luKCk7IH0KKyAgY29uc3RfcnBvX2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gQmxvY2tzLmNyYmVnaW4oKTsgfQogICBycG9faXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gQmxvY2tzLnJlbmQoKTsgfQorICBjb25zdF9ycG9faXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gQmxvY2tzLmNyZW5kKCk7IH0KIH07CiAKIH0gLy8gZW5kIG5hbWVzcGFjZSBsbHZtCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9Qcmlvcml0eVF1ZXVlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9Qcmlvcml0eVF1ZXVlLmgKaW5kZXggOGJhODcxZS4uY2Y3OWVlMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvUHJpb3JpdHlRdWV1ZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1ByaW9yaXR5UXVldWUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FEVC9Qcmlvcml0eVF1ZXVlLmggLSBQcmlvcml0eSBxdWV1ZXMgLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvUHJpb3JpdHlXb3JrbGlzdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvUHJpb3JpdHlXb3JrbGlzdC5oCmluZGV4IGFhNTMxZjMuLjk2ZDIyYzggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1ByaW9yaXR5V29ya2xpc3QuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9Qcmlvcml0eVdvcmtsaXN0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUHJpb3JpdHlXb3JrbGlzdC5oIC0gV29ya2xpc3Qgd2l0aCBpbnNlcnRpb24gcHJpb3JpdHkgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TQ0NJdGVyYXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU0NDSXRlcmF0b3IuaAppbmRleCBhYjFkYzQ2Li5lYjFhNWQwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TQ0NJdGVyYXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NDQ0l0ZXJhdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQURUL1NDQ0l0ZXJhdG9yLmggLSBTdHJvbmdseSBDb25uZWN0ZWQgQ29tcC4gSXRlci4gLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TVExFeHRyYXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NUTEV4dHJhcy5oCmluZGV4IGMyMDljNGEuLjlhODkxZDEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NUTEV4dHJhcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NUTEV4dHJhcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQURUL1NUTEV4dHJhcy5oIC0gVXNlZnVsIFNUTCByZWxhdGVkIGZ1bmN0aW9ucyAtLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC03MSw2ICs3MCwxNiBAQAogc3RydWN0IGNvbmp1bmN0aW9uPEIxLCBCbi4uLj4KICAgICA6IHN0ZDo6Y29uZGl0aW9uYWw8Ym9vbChCMTo6dmFsdWUpLCBjb25qdW5jdGlvbjxCbi4uLj4sIEIxPjo6dHlwZSB7fTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBtYWtlX2NvbnN0X3B0ciB7CisgIHVzaW5nIHR5cGUgPQorICAgICAgdHlwZW5hbWUgc3RkOjphZGRfcG9pbnRlcjx0eXBlbmFtZSBzdGQ6OmFkZF9jb25zdDxUPjo6dHlwZT46OnR5cGU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IG1ha2VfY29uc3RfcmVmIHsKKyAgdXNpbmcgdHlwZSA9IHR5cGVuYW1lIHN0ZDo6YWRkX2x2YWx1ZV9yZWZlcmVuY2U8CisgICAgICB0eXBlbmFtZSBzdGQ6OmFkZF9jb25zdDxUPjo6dHlwZT46OnR5cGU7Cit9OworCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gICAgIEV4dHJhIGFkZGl0aW9ucyB0byA8ZnVuY3Rpb25hbD4KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCkBAIC0xOTUsNiArMjA0LDEyIEBACiAgIGFkbF9kZXRhaWw6OmFkbF9zd2FwKHN0ZDo6Zm9yd2FyZDxUPihsaHMpLCBzdGQ6OmZvcndhcmQ8VD4ocmhzKSk7CiB9CiAKKy8vLyBUZXN0IHdoZXRoZXIgXHAgUmFuZ2VPckNvbnRhaW5lciBpcyBlbXB0eS4gU2ltaWxhciB0byBDKysxNyBzdGQ6OmVtcHR5LgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Citjb25zdGV4cHIgYm9vbCBlbXB0eShjb25zdCBUICZSYW5nZU9yQ29udGFpbmVyKSB7CisgIHJldHVybiBhZGxfYmVnaW4oUmFuZ2VPckNvbnRhaW5lcikgPT0gYWRsX2VuZChSYW5nZU9yQ29udGFpbmVyKTsKK30KKwogLy8gbWFwcGVkX2l0ZXJhdG9yIC0gVGhpcyBpcyBhIHNpbXBsZSBpdGVyYXRvciBhZGFwdGVyIHRoYXQgY2F1c2VzIGEgZnVuY3Rpb24gdG8KIC8vIGJlIGFwcGxpZWQgd2hlbmV2ZXIgb3BlcmF0b3IqIGlzIGludm9rZWQgb24gdGhlIGl0ZXJhdG9yLgogCkBAIC01MDIsOSArNTE3LDExIEBACiAgICAgICAgICAgICAgICAgICAgIEVhcmx5SW5jSXRlcmF0b3JUKHN0ZDo6ZW5kKHN0ZDo6Zm9yd2FyZDxSYW5nZVQ+KFJhbmdlKSkpKTsKIH0KIAotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbnMgcmVxdWlyZWQgYnkgemlwX3Nob3J0ZXN0L3ppcF9maXJzdAorLy8gZm9yd2FyZCBkZWNsYXJhdGlvbnMgcmVxdWlyZWQgYnkgemlwX3Nob3J0ZXN0L3ppcF9maXJzdC96aXBfbG9uZ2VzdAogdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFVuYXJ5UHJlZGljYXRlPgogYm9vbCBhbGxfb2YoUiAmJnJhbmdlLCBVbmFyeVByZWRpY2F0ZSBQKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZSBVbmFyeVByZWRpY2F0ZT4KK2Jvb2wgYW55X29mKFIgJiZyYW5nZSwgVW5hcnlQcmVkaWNhdGUgUCk7CiAKIHRlbXBsYXRlIDxzaXplX3QuLi4gST4gc3RydWN0IGluZGV4X3NlcXVlbmNlOwogCkBAIC02NTUsNiArNjcyLDEzMiBAQAogICAgICAgc3RkOjpmb3J3YXJkPFQ+KHQpLCBzdGQ6OmZvcndhcmQ8VT4odSksIHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CiB9CiAKK25hbWVzcGFjZSBkZXRhaWwgewordGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXI+CitzdGF0aWMgSXRlciBuZXh0X29yX2VuZChjb25zdCBJdGVyICZJLCBjb25zdCBJdGVyICZFbmQpIHsKKyAgaWYgKEkgPT0gRW5kKQorICAgIHJldHVybiBFbmQ7CisgIHJldHVybiBzdGQ6Om5leHQoSSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJdGVyPgorc3RhdGljIGF1dG8gZGVyZWZfb3Jfbm9uZShjb25zdCBJdGVyICZJLCBjb25zdCBJdGVyICZFbmQpCisgICAgLT4gbGx2bTo6T3B0aW9uYWw8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8CisgICAgICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZSgqSSk+Ojp0eXBlPjo6dHlwZT4geworICBpZiAoSSA9PSBFbmQpCisgICAgcmV0dXJuIE5vbmU7CisgIHJldHVybiAqSTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXI+IHN0cnVjdCBaaXBMb25nZXN0SXRlbVR5cGUgeworICB1c2luZyB0eXBlID0KKyAgICAgIGxsdm06Ok9wdGlvbmFsPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZTwKKyAgICAgICAgICBkZWNsdHlwZSgqc3RkOjpkZWNsdmFsPEl0ZXI+KCkpPjo6dHlwZT46OnR5cGU+OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIEl0ZXJzPiBzdHJ1Y3QgWmlwTG9uZ2VzdFR1cGxlVHlwZSB7CisgIHVzaW5nIHR5cGUgPSBzdGQ6OnR1cGxlPHR5cGVuYW1lIFppcExvbmdlc3RJdGVtVHlwZTxJdGVycz46OnR5cGUuLi4+OworfTsKKwordGVtcGxhdGUgPHR5cGVuYW1lLi4uIEl0ZXJzPgorY2xhc3MgemlwX2xvbmdlc3RfaXRlcmF0b3IKKyAgICA6IHB1YmxpYyBpdGVyYXRvcl9mYWNhZGVfYmFzZTwKKyAgICAgICAgICB6aXBfbG9uZ2VzdF9pdGVyYXRvcjxJdGVycy4uLj4sCisgICAgICAgICAgdHlwZW5hbWUgc3RkOjpjb21tb25fdHlwZTwKKyAgICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywKKyAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8SXRlcnM+OjppdGVyYXRvcl9jYXRlZ29yeS4uLj46OnR5cGUsCisgICAgICAgICAgdHlwZW5hbWUgWmlwTG9uZ2VzdFR1cGxlVHlwZTxJdGVycy4uLj46OnR5cGUsCisgICAgICAgICAgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8dHlwZW5hbWUgc3RkOjp0dXBsZV9lbGVtZW50PAorICAgICAgICAgICAgICAwLCBzdGQ6OnR1cGxlPEl0ZXJzLi4uPj46OnR5cGU+OjpkaWZmZXJlbmNlX3R5cGUsCisgICAgICAgICAgdHlwZW5hbWUgWmlwTG9uZ2VzdFR1cGxlVHlwZTxJdGVycy4uLj46OnR5cGUgKiwKKyAgICAgICAgICB0eXBlbmFtZSBaaXBMb25nZXN0VHVwbGVUeXBlPEl0ZXJzLi4uPjo6dHlwZT4geworcHVibGljOgorICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgWmlwTG9uZ2VzdFR1cGxlVHlwZTxJdGVycy4uLj46OnR5cGU7CisKK3ByaXZhdGU6CisgIHN0ZDo6dHVwbGU8SXRlcnMuLi4+IGl0ZXJhdG9yczsKKyAgc3RkOjp0dXBsZTxJdGVycy4uLj4gZW5kX2l0ZXJhdG9yczsKKworICB0ZW1wbGF0ZSA8c2l6ZV90Li4uIE5zPgorICBib29sIHRlc3QoY29uc3QgemlwX2xvbmdlc3RfaXRlcmF0b3I8SXRlcnMuLi4+ICZvdGhlciwKKyAgICAgICAgICAgIGluZGV4X3NlcXVlbmNlPE5zLi4uPikgY29uc3QgeworICAgIHJldHVybiBsbHZtOjphbnlfb2YoCisgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxib29sPntzdGQ6OmdldDxOcz4odGhpcy0+aXRlcmF0b3JzKSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpnZXQ8TnM+KG90aGVyLml0ZXJhdG9ycykuLi59LAorICAgICAgICBpZGVudGl0eTxib29sPnt9KTsKKyAgfQorCisgIHRlbXBsYXRlIDxzaXplX3QuLi4gTnM+IHZhbHVlX3R5cGUgZGVyZWYoaW5kZXhfc2VxdWVuY2U8TnMuLi4+KSBjb25zdCB7CisgICAgcmV0dXJuIHZhbHVlX3R5cGUoCisgICAgICAgIGRlcmVmX29yX25vbmUoc3RkOjpnZXQ8TnM+KGl0ZXJhdG9ycyksIHN0ZDo6Z2V0PE5zPihlbmRfaXRlcmF0b3JzKSkuLi4pOworICB9CisKKyAgdGVtcGxhdGUgPHNpemVfdC4uLiBOcz4KKyAgZGVjbHR5cGUoaXRlcmF0b3JzKSB0dXBfaW5jKGluZGV4X3NlcXVlbmNlPE5zLi4uPikgY29uc3QgeworICAgIHJldHVybiBzdGQ6OnR1cGxlPEl0ZXJzLi4uPigKKyAgICAgICAgbmV4dF9vcl9lbmQoc3RkOjpnZXQ8TnM+KGl0ZXJhdG9ycyksIHN0ZDo6Z2V0PE5zPihlbmRfaXRlcmF0b3JzKSkuLi4pOworICB9CisKK3B1YmxpYzoKKyAgemlwX2xvbmdlc3RfaXRlcmF0b3Ioc3RkOjpwYWlyPEl0ZXJzICYmLCBJdGVycyAmJj4uLi4gdHMpCisgICAgICA6IGl0ZXJhdG9ycyhzdGQ6OmZvcndhcmQ8SXRlcnM+KHRzLmZpcnN0KS4uLiksCisgICAgICAgIGVuZF9pdGVyYXRvcnMoc3RkOjpmb3J3YXJkPEl0ZXJzPih0cy5zZWNvbmQpLi4uKSB7fQorCisgIHZhbHVlX3R5cGUgb3BlcmF0b3IqKCkgeyByZXR1cm4gZGVyZWYoaW5kZXhfc2VxdWVuY2VfZm9yPEl0ZXJzLi4uPnt9KTsgfQorCisgIHZhbHVlX3R5cGUgb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gZGVyZWYoaW5kZXhfc2VxdWVuY2VfZm9yPEl0ZXJzLi4uPnt9KTsgfQorCisgIHppcF9sb25nZXN0X2l0ZXJhdG9yPEl0ZXJzLi4uPiAmb3BlcmF0b3IrKygpIHsKKyAgICBpdGVyYXRvcnMgPSB0dXBfaW5jKGluZGV4X3NlcXVlbmNlX2ZvcjxJdGVycy4uLj57fSk7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHppcF9sb25nZXN0X2l0ZXJhdG9yPEl0ZXJzLi4uPiAmb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gIXRlc3Qob3RoZXIsIGluZGV4X3NlcXVlbmNlX2ZvcjxJdGVycy4uLj57fSk7CisgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPiBjbGFzcyB6aXBfbG9uZ2VzdF9yYW5nZSB7CitwdWJsaWM6CisgIHVzaW5nIGl0ZXJhdG9yID0KKyAgICAgIHppcF9sb25nZXN0X2l0ZXJhdG9yPGRlY2x0eXBlKGFkbF9iZWdpbihzdGQ6OmRlY2x2YWw8QXJncz4oKSkpLi4uPjsKKyAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdvcnkgPSB0eXBlbmFtZSBpdGVyYXRvcjo6aXRlcmF0b3JfY2F0ZWdvcnk7CisgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBpdGVyYXRvcjo6dmFsdWVfdHlwZTsKKyAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gdHlwZW5hbWUgaXRlcmF0b3I6OmRpZmZlcmVuY2VfdHlwZTsKKyAgdXNpbmcgcG9pbnRlciA9IHR5cGVuYW1lIGl0ZXJhdG9yOjpwb2ludGVyOworICB1c2luZyByZWZlcmVuY2UgPSB0eXBlbmFtZSBpdGVyYXRvcjo6cmVmZXJlbmNlOworCitwcml2YXRlOgorICBzdGQ6OnR1cGxlPEFyZ3MuLi4+IHRzOworCisgIHRlbXBsYXRlIDxzaXplX3QuLi4gTnM+IGl0ZXJhdG9yIGJlZ2luX2ltcGwoaW5kZXhfc2VxdWVuY2U8TnMuLi4+KSBjb25zdCB7CisgICAgcmV0dXJuIGl0ZXJhdG9yKHN0ZDo6bWFrZV9wYWlyKGFkbF9iZWdpbihzdGQ6OmdldDxOcz4odHMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRsX2VuZChzdGQ6OmdldDxOcz4odHMpKSkuLi4pOworICB9CisKKyAgdGVtcGxhdGUgPHNpemVfdC4uLiBOcz4gaXRlcmF0b3IgZW5kX2ltcGwoaW5kZXhfc2VxdWVuY2U8TnMuLi4+KSBjb25zdCB7CisgICAgcmV0dXJuIGl0ZXJhdG9yKHN0ZDo6bWFrZV9wYWlyKGFkbF9lbmQoc3RkOjpnZXQ8TnM+KHRzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkbF9lbmQoc3RkOjpnZXQ8TnM+KHRzKSkpLi4uKTsKKyAgfQorCitwdWJsaWM6CisgIHppcF9sb25nZXN0X3JhbmdlKEFyZ3MgJiYuLi4gdHNfKSA6IHRzKHN0ZDo6Zm9yd2FyZDxBcmdzPih0c18pLi4uKSB7fQorCisgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gYmVnaW5faW1wbChpbmRleF9zZXF1ZW5jZV9mb3I8QXJncy4uLj57fSk7IH0KKyAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gZW5kX2ltcGwoaW5kZXhfc2VxdWVuY2VfZm9yPEFyZ3MuLi4+e30pOyB9Cit9OworfSAvLyBuYW1lc3BhY2UgZGV0YWlsCisKKy8vLyBJdGVyYXRlIG92ZXIgdHdvIG9yIG1vcmUgaXRlcmF0b3JzIGF0IHRoZSBzYW1lIHRpbWUuIEl0ZXJhdGlvbiBjb250aW51ZXMKKy8vLyB1bnRpbCBhbGwgaXRlcmF0b3JzIHJlYWNoIHRoZSBlbmQuIFRoZSBsbHZtOjpPcHRpb25hbCBvbmx5IGNvbnRhaW5zIGEgdmFsdWUKKy8vLyBpZiB0aGUgaXRlcmF0b3IgaGFzIG5vdCByZWFjaGVkIHRoZSBlbmQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUuLi4gQXJncz4KK2RldGFpbDo6emlwX2xvbmdlc3RfcmFuZ2U8VCwgVSwgQXJncy4uLj4gemlwX2xvbmdlc3QoVCAmJnQsIFUgJiZ1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmdzICYmLi4uIGFyZ3MpIHsKKyAgcmV0dXJuIGRldGFpbDo6emlwX2xvbmdlc3RfcmFuZ2U8VCwgVSwgQXJncy4uLj4oCisgICAgICBzdGQ6OmZvcndhcmQ8VD4odCksIHN0ZDo6Zm9yd2FyZDxVPih1KSwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKK30KKwogLy8vIEl0ZXJhdG9yIHdyYXBwZXIgdGhhdCBjb25jYXRlbmF0ZXMgc2VxdWVuY2VzIHRvZ2V0aGVyLgogLy8vCiAvLy8gVGhpcyBjYW4gY29uY2F0ZW5hdGUgZGlmZmVyZW50IGl0ZXJhdG9ycywgZXZlbiB3aXRoIGRpZmZlcmVudCB0eXBlcywgaW50bwpAQCAtMTM5OSw2ICsxNTQyLDQwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kaWNlc3t9KTsKIH0KIAorLy8vIFJldHVybiB0cnVlIGlmIHRoZSBzZXF1ZW5jZSBbQmVnaW4sIEVuZCkgaGFzIGV4YWN0bHkgTiBpdGVtcy4gUnVucyBpbiBPKE4pCisvLy8gdGltZS4gTm90IG1lYW50IGZvciB1c2Ugd2l0aCByYW5kb20tYWNjZXNzIGl0ZXJhdG9ycy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBJdGVyVHk+Citib29sIGhhc05JdGVtcygKKyAgICBJdGVyVHkgJiZCZWdpbiwgSXRlclR5ICYmRW5kLCB1bnNpZ25lZCBOLAorICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPAorICAgICAgICAhc3RkOjppc19zYW1lPAorICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcmVmZXJlbmNlPAorICAgICAgICAgICAgICAgIGRlY2x0eXBlKEJlZ2luKT46OnR5cGU+OjppdGVyYXRvcl9jYXRlZ29yeSwKKyAgICAgICAgICAgIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWc+Ojp2YWx1ZSwKKyAgICAgICAgdm9pZD46OnR5cGUgKiA9IG51bGxwdHIpIHsKKyAgZm9yICg7IE47IC0tTiwgKytCZWdpbikKKyAgICBpZiAoQmVnaW4gPT0gRW5kKQorICAgICAgcmV0dXJuIGZhbHNlOyAvLyBUb28gZmV3LgorICByZXR1cm4gQmVnaW4gPT0gRW5kOworfQorCisvLy8gUmV0dXJuIHRydWUgaWYgdGhlIHNlcXVlbmNlIFtCZWdpbiwgRW5kKSBoYXMgTiBvciBtb3JlIGl0ZW1zLiBSdW5zIGluIE8oTikKKy8vLyB0aW1lLiBOb3QgbWVhbnQgZm9yIHVzZSB3aXRoIHJhbmRvbS1hY2Nlc3MgaXRlcmF0b3JzLgordGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJUeT4KK2Jvb2wgaGFzTkl0ZW1zT3JNb3JlKAorICAgIEl0ZXJUeSAmJkJlZ2luLCBJdGVyVHkgJiZFbmQsIHVuc2lnbmVkIE4sCisgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8CisgICAgICAgICFzdGQ6OmlzX3NhbWU8CisgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9yZWZlcmVuY2U8CisgICAgICAgICAgICAgICAgZGVjbHR5cGUoQmVnaW4pPjo6dHlwZT46Oml0ZXJhdG9yX2NhdGVnb3J5LAorICAgICAgICAgICAgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZz46OnZhbHVlLAorICAgICAgICB2b2lkPjo6dHlwZSAqID0gbnVsbHB0cikgeworICBmb3IgKDsgTjsgLS1OLCArK0JlZ2luKQorICAgIGlmIChCZWdpbiA9PSBFbmQpCisgICAgICByZXR1cm4gZmFsc2U7IC8vIFRvbyBmZXcuCisgIHJldHVybiB0cnVlOworfQorCiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQogCiAjZW5kaWYgLy8gTExWTV9BRFRfU1RMRVhUUkFTX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1Njb3BlRXhpdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU2NvcGVFeGl0LmgKaW5kZXggYmQxMzc1NS4uNzEyZDkxMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU2NvcGVFeGl0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU2NvcGVFeGl0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvU2NvcGVFeGl0LmggLSBFeGVjdXRlIGNvZGUgYXQgc2NvcGUgZXhpdCAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1Njb3BlZEhhc2hUYWJsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU2NvcGVkSGFzaFRhYmxlLmgKaW5kZXggMjJiMGMxYi4uNDBjNDllYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU2NvcGVkSGFzaFRhYmxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU2NvcGVkSGFzaFRhYmxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU2NvcGVkSGFzaFRhYmxlLmggLSBBIHNpbXBsZSBzY29wZWQgaGFzaCB0YWJsZSAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NlcXVlbmNlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TZXF1ZW5jZS5oCmluZGV4IDNkNGE4OTcuLjhjNTA1ZjIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NlcXVlbmNlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU2VxdWVuY2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTZXF1ZW5jZS5oIC0gVXRpbGl0eSBmb3IgcHJvZHVjaW5nIHNlcXVlbmNlcyBvZiB2YWx1ZXMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NldE9wZXJhdGlvbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NldE9wZXJhdGlvbnMuaAppbmRleCA3YzlmMmZiLi4wMzcyNTZhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TZXRPcGVyYXRpb25zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU2V0T3BlcmF0aW9ucy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0FEVC9TZXRPcGVyYXRpb25zLmggLSBHZW5lcmljIFNldCBPcGVyYXRpb25zIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TZXRWZWN0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NldFZlY3Rvci5oCmluZGV4IDNkNjc4MTAuLmQwYTBkMjggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NldFZlY3Rvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NldFZlY3Rvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQURUL1NldFZlY3Rvci5oIC0gU2V0IHdpdGggaW5zZXJ0IG9yZGVyIGl0ZXJhdGlvbiAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TbWFsbEJpdFZlY3Rvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU21hbGxCaXRWZWN0b3IuaAppbmRleCBmODZiZWJkLi43NDI0NTBlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TbWFsbEJpdFZlY3Rvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NtYWxsQml0VmVjdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvU21hbGxCaXRWZWN0b3IuaCAtICdOb3JtYWxseSBzbWFsbCcgYml0IHZlY3RvcnMgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTkyLDEwICs5MSw2IEBACiAgIH07CiAKIHByaXZhdGU6Ci0gIGJvb2wgaXNTbWFsbCgpIGNvbnN0IHsKLSAgICByZXR1cm4gWCAmIHVpbnRwdHJfdCgxKTsKLSAgfQotCiAgIEJpdFZlY3RvciAqZ2V0UG9pbnRlcigpIGNvbnN0IHsKICAgICBhc3NlcnQoIWlzU21hbGwoKSk7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Qml0VmVjdG9yICo+KFgpOwpAQCAtMTg2LDYgKzE4MSw4IEBACiAgICAgcmV0dXJuIG1ha2VfcmFuZ2Uoc2V0X2JpdHNfYmVnaW4oKSwgc2V0X2JpdHNfZW5kKCkpOwogICB9CiAKKyAgYm9vbCBpc1NtYWxsKCkgY29uc3QgeyByZXR1cm4gWCAmIHVpbnRwdHJfdCgxKTsgfQorCiAgIC8vLyBUZXN0cyB3aGV0aGVyIHRoZXJlIGFyZSBubyBiaXRzIGluIHRoaXMgYml0dmVjdG9yLgogICBib29sIGVtcHR5KCkgY29uc3QgewogICAgIHJldHVybiBpc1NtYWxsKCkgPyBnZXRTbWFsbFNpemUoKSA9PSAwIDogZ2V0UG9pbnRlcigpLT5lbXB0eSgpOwpAQCAtMjQyLDcgKzIzOSw3IEBACiAgICAgICB1aW50cHRyX3QgQml0cyA9IGdldFNtYWxsQml0cygpOwogICAgICAgaWYgKEJpdHMgPT0gMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgcmV0dXJuIE51bUJhc2VCaXRzIC0gY291bnRMZWFkaW5nWmVyb3MoQml0cyk7CisgICAgICByZXR1cm4gTnVtQmFzZUJpdHMgLSBjb3VudExlYWRpbmdaZXJvcyhCaXRzKSAtIDE7CiAgICAgfQogICAgIHJldHVybiBnZXRQb2ludGVyKCktPmZpbmRfbGFzdCgpOwogICB9CkBAIC0yNjUsNyArMjYyLDkgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgICB1aW50cHRyX3QgQml0cyA9IGdldFNtYWxsQml0cygpOwotICAgICAgcmV0dXJuIE51bUJhc2VCaXRzIC0gY291bnRMZWFkaW5nT25lcyhCaXRzKTsKKyAgICAgIC8vIFNldCB1bnVzZWQgYml0cy4KKyAgICAgIEJpdHMgfD0gfnVpbnRwdHJfdCgwKSA8PCBnZXRTbWFsbFNpemUoKTsKKyAgICAgIHJldHVybiBOdW1CYXNlQml0cyAtIGNvdW50TGVhZGluZ09uZXMoQml0cykgLSAxOwogICAgIH0KICAgICByZXR1cm4gZ2V0UG9pbnRlcigpLT5maW5kX2xhc3RfdW5zZXQoKTsKICAgfQpAQCAtNDg3LDEwICs0ODYsMTcgQEAKICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNtYWxsQml0VmVjdG9yICZSSFMpIGNvbnN0IHsKICAgICBpZiAoc2l6ZSgpICE9IFJIUy5zaXplKCkpCiAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGlzU21hbGwoKSkKKyAgICBpZiAoaXNTbWFsbCgpICYmIFJIUy5pc1NtYWxsKCkpCiAgICAgICByZXR1cm4gZ2V0U21hbGxCaXRzKCkgPT0gUkhTLmdldFNtYWxsQml0cygpOwotICAgIGVsc2UKKyAgICBlbHNlIGlmICghaXNTbWFsbCgpICYmICFSSFMuaXNTbWFsbCgpKQogICAgICAgcmV0dXJuICpnZXRQb2ludGVyKCkgPT0gKlJIUy5nZXRQb2ludGVyKCk7CisgICAgZWxzZSB7CisgICAgICBmb3IgKHNpemVfdCBpID0gMCwgZSA9IHNpemUoKTsgaSAhPSBlOyArK2kpIHsKKyAgICAgICAgaWYgKCgqdGhpcylbaV0gIT0gUkhTW2ldKQorICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgfQogCiAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTbWFsbEJpdFZlY3RvciAmUkhTKSBjb25zdCB7CkBAIC00OTgsMTYgKzUwNCwxOSBAQAogICB9CiAKICAgLy8gSW50ZXJzZWN0aW9uLCB1bmlvbiwgZGlzam9pbnQgdW5pb24uCisgIC8vIEZJWE1FIEJpdFZlY3Rvcjo6b3BlcmF0b3ImPSBkb2VzIG5vdCByZXNpemUgdGhlIExIUyBidXQgdGhpcyBkb2VzCiAgIFNtYWxsQml0VmVjdG9yICZvcGVyYXRvciY9KGNvbnN0IFNtYWxsQml0VmVjdG9yICZSSFMpIHsKICAgICByZXNpemUoc3RkOjptYXgoc2l6ZSgpLCBSSFMuc2l6ZSgpKSk7Ci0gICAgaWYgKGlzU21hbGwoKSkKKyAgICBpZiAoaXNTbWFsbCgpICYmIFJIUy5pc1NtYWxsKCkpCiAgICAgICBzZXRTbWFsbEJpdHMoZ2V0U21hbGxCaXRzKCkgJiBSSFMuZ2V0U21hbGxCaXRzKCkpOwotICAgIGVsc2UgaWYgKCFSSFMuaXNTbWFsbCgpKQorICAgIGVsc2UgaWYgKCFpc1NtYWxsKCkgJiYgIVJIUy5pc1NtYWxsKCkpCiAgICAgICBnZXRQb2ludGVyKCktPm9wZXJhdG9yJj0oKlJIUy5nZXRQb2ludGVyKCkpOwogICAgIGVsc2UgewotICAgICAgU21hbGxCaXRWZWN0b3IgQ29weSA9IFJIUzsKLSAgICAgIENvcHkucmVzaXplKHNpemUoKSk7Ci0gICAgICBnZXRQb2ludGVyKCktPm9wZXJhdG9yJj0oKkNvcHkuZ2V0UG9pbnRlcigpKTsKKyAgICAgIHNpemVfdCBpLCBlOworICAgICAgZm9yIChpID0gMCwgZSA9IHN0ZDo6bWluKHNpemUoKSwgUkhTLnNpemUoKSk7IGkgIT0gZTsgKytpKQorICAgICAgICAoKnRoaXMpW2ldID0gdGVzdChpKSAmJiBSSFMudGVzdChpKTsKKyAgICAgIGZvciAoZSA9IHNpemUoKTsgaSAhPSBlOyArK2kpCisgICAgICAgIHJlc2V0KGkpOwogICAgIH0KICAgICByZXR1cm4gKnRoaXM7CiAgIH0KQEAgLTU0NywyOCArNTU2LDI2IEBACiAKICAgU21hbGxCaXRWZWN0b3IgJm9wZXJhdG9yfD0oY29uc3QgU21hbGxCaXRWZWN0b3IgJlJIUykgewogICAgIHJlc2l6ZShzdGQ6Om1heChzaXplKCksIFJIUy5zaXplKCkpKTsKLSAgICBpZiAoaXNTbWFsbCgpKQorICAgIGlmIChpc1NtYWxsKCkgJiYgUkhTLmlzU21hbGwoKSkKICAgICAgIHNldFNtYWxsQml0cyhnZXRTbWFsbEJpdHMoKSB8IFJIUy5nZXRTbWFsbEJpdHMoKSk7Ci0gICAgZWxzZSBpZiAoIVJIUy5pc1NtYWxsKCkpCisgICAgZWxzZSBpZiAoIWlzU21hbGwoKSAmJiAhUkhTLmlzU21hbGwoKSkKICAgICAgIGdldFBvaW50ZXIoKS0+b3BlcmF0b3J8PSgqUkhTLmdldFBvaW50ZXIoKSk7CiAgICAgZWxzZSB7Ci0gICAgICBTbWFsbEJpdFZlY3RvciBDb3B5ID0gUkhTOwotICAgICAgQ29weS5yZXNpemUoc2l6ZSgpKTsKLSAgICAgIGdldFBvaW50ZXIoKS0+b3BlcmF0b3J8PSgqQ29weS5nZXRQb2ludGVyKCkpOworICAgICAgZm9yIChzaXplX3QgaSA9IDAsIGUgPSBSSFMuc2l6ZSgpOyBpICE9IGU7ICsraSkKKyAgICAgICAgKCp0aGlzKVtpXSA9IHRlc3QoaSkgfHwgUkhTLnRlc3QoaSk7CiAgICAgfQogICAgIHJldHVybiAqdGhpczsKICAgfQogCiAgIFNtYWxsQml0VmVjdG9yICZvcGVyYXRvcl49KGNvbnN0IFNtYWxsQml0VmVjdG9yICZSSFMpIHsKICAgICByZXNpemUoc3RkOjptYXgoc2l6ZSgpLCBSSFMuc2l6ZSgpKSk7Ci0gICAgaWYgKGlzU21hbGwoKSkKKyAgICBpZiAoaXNTbWFsbCgpICYmIFJIUy5pc1NtYWxsKCkpCiAgICAgICBzZXRTbWFsbEJpdHMoZ2V0U21hbGxCaXRzKCkgXiBSSFMuZ2V0U21hbGxCaXRzKCkpOwotICAgIGVsc2UgaWYgKCFSSFMuaXNTbWFsbCgpKQorICAgIGVsc2UgaWYgKCFpc1NtYWxsKCkgJiYgIVJIUy5pc1NtYWxsKCkpCiAgICAgICBnZXRQb2ludGVyKCktPm9wZXJhdG9yXj0oKlJIUy5nZXRQb2ludGVyKCkpOwogICAgIGVsc2UgewotICAgICAgU21hbGxCaXRWZWN0b3IgQ29weSA9IFJIUzsKLSAgICAgIENvcHkucmVzaXplKHNpemUoKSk7Ci0gICAgICBnZXRQb2ludGVyKCktPm9wZXJhdG9yXj0oKkNvcHkuZ2V0UG9pbnRlcigpKTsKKyAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBlID0gUkhTLnNpemUoKTsgaSAhPSBlOyArK2kpCisgICAgICAgICgqdGhpcylbaV0gPSB0ZXN0KGkpICE9IFJIUy50ZXN0KGkpOwogICAgIH0KICAgICByZXR1cm4gKnRoaXM7CiAgIH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NtYWxsUHRyU2V0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TbWFsbFB0clNldC5oCmluZGV4IGRiMDhlNDAuLjkxMzUxODIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NtYWxsUHRyU2V0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU21hbGxQdHJTZXQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FEVC9TbWFsbFB0clNldC5oIC0gJ05vcm1hbGx5IHNtYWxsJyBwb2ludGVyIHNldCAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU21hbGxTZXQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NtYWxsU2V0LmgKaW5kZXggNWQ4NDYyNy4uNmIxMjhjMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU21hbGxTZXQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TbWFsbFNldC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQURUL1NtYWxsU2V0LmggLSAnTm9ybWFsbHkgc21hbGwnIHNldHMgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TbWFsbFN0cmluZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU21hbGxTdHJpbmcuaAppbmRleCBmZjQ2ZTg1Li44OThiZTgwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TbWFsbFN0cmluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NtYWxsU3RyaW5nLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvU21hbGxTdHJpbmcuaCAtICdOb3JtYWxseSBzbWFsbCcgc3RyaW5ncyAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NtYWxsVmVjdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TbWFsbFZlY3Rvci5oCmluZGV4IGU0ZGRkMTIuLmUzYmZiOTAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NtYWxsVmVjdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU21hbGxWZWN0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FEVC9TbWFsbFZlY3Rvci5oIC0gJ05vcm1hbGx5IHNtYWxsJyB2ZWN0b3JzIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTI1LDEzICsxMjQsOSBAQAogICB1c2luZyBjb25zdF9wb2ludGVyID0gY29uc3QgVCAqOwogCiAgIC8vIGZvcndhcmQgaXRlcmF0b3IgY3JlYXRpb24gbWV0aG9kcy4KLSAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIChpdGVyYXRvcil0aGlzLT5CZWdpblg7IH0KLSAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIChjb25zdF9pdGVyYXRvcil0aGlzLT5CZWdpblg7IH0KLSAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBiZWdpbigpICsgc2l6ZSgpOyB9Ci0gIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gYmVnaW4oKSArIHNpemUoKTsgfQogCiAgIC8vIHJldmVyc2UgaXRlcmF0b3IgY3JlYXRpb24gbWV0aG9kcy4KQEAgLTE1MCwxMiArMTQ1LDEwIEBACiAgIC8vLyBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSB2ZWN0b3IncyBidWZmZXIsIGV2ZW4gaWYgZW1wdHkoKS4KICAgY29uc3RfcG9pbnRlciBkYXRhKCkgY29uc3QgeyByZXR1cm4gY29uc3RfcG9pbnRlcihiZWdpbigpKTsgfQogCi0gIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgcmVmZXJlbmNlIG9wZXJhdG9yW10oc2l6ZV90eXBlIGlkeCkgewogICAgIGFzc2VydChpZHggPCBzaXplKCkpOwogICAgIHJldHVybiBiZWdpbigpW2lkeF07CiAgIH0KLSAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICBjb25zdF9yZWZlcmVuY2Ugb3BlcmF0b3JbXShzaXplX3R5cGUgaWR4KSBjb25zdCB7CiAgICAgYXNzZXJ0KGlkeCA8IHNpemUoKSk7CiAgICAgcmV0dXJuIGJlZ2luKClbaWR4XTsKQEAgLTE4MCw5ICsxNzMsOSBAQAogICB9CiB9OwogCi0vLy8gU21hbGxWZWN0b3JUZW1wbGF0ZUJhc2U8aXNQb2RMaWtlID0gZmFsc2U+IC0gVGhpcyBpcyB3aGVyZSB3ZSBwdXQgbWV0aG9kCisvLy8gU21hbGxWZWN0b3JUZW1wbGF0ZUJhc2U8VHJpdmlhbGx5Q29weWFibGUgPSBmYWxzZT4gLSBUaGlzIGlzIHdoZXJlIHdlIHB1dCBtZXRob2QKIC8vLyBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhcmUgZGVzaWduZWQgdG8gd29yayB3aXRoIG5vbi1QT0QtbGlrZSBUJ3MuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBpc1BvZExpa2U+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCA9IGlzX3RyaXZpYWxseV9jb3B5YWJsZTxUPjo6dmFsdWU+CiBjbGFzcyBTbWFsbFZlY3RvclRlbXBsYXRlQmFzZSA6IHB1YmxpYyBTbWFsbFZlY3RvclRlbXBsYXRlQ29tbW9uPFQ+IHsKIHByb3RlY3RlZDoKICAgU21hbGxWZWN0b3JUZW1wbGF0ZUJhc2Uoc2l6ZV90IFNpemUpIDogU21hbGxWZWN0b3JUZW1wbGF0ZUNvbW1vbjxUPihTaXplKSB7fQpAQCAtMjM2LDggKzIyOSw4IEBACiB9OwogCiAvLyBEZWZpbmUgdGhpcyBvdXQtb2YtbGluZSB0byBkaXNzdWFkZSB0aGUgQysrIGNvbXBpbGVyIGZyb20gaW5saW5pbmcgaXQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBpc1BvZExpa2U+Ci12b2lkIFNtYWxsVmVjdG9yVGVtcGxhdGVCYXNlPFQsIGlzUG9kTGlrZT46Omdyb3coc2l6ZV90IE1pblNpemUpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBULCBib29sIFRyaXZpYWxseUNvcHlhYmxlPgordm9pZCBTbWFsbFZlY3RvclRlbXBsYXRlQmFzZTxULCBUcml2aWFsbHlDb3B5YWJsZT46Omdyb3coc2l6ZV90IE1pblNpemUpIHsKICAgaWYgKE1pblNpemUgPiBVSU5UMzJfTUFYKQogICAgIHJlcG9ydF9iYWRfYWxsb2NfZXJyb3IoIlNtYWxsVmVjdG9yIGNhcGFjaXR5IG92ZXJmbG93IGR1cmluZyBhbGxvY2F0aW9uIik7CiAKQEAgLTI2MCw5ICsyNTMsOCBAQAogICB0aGlzLT5DYXBhY2l0eSA9IE5ld0NhcGFjaXR5OwogfQogCi0KLS8vLyBTbWFsbFZlY3RvclRlbXBsYXRlQmFzZTxpc1BvZExpa2UgPSB0cnVlPiAtIFRoaXMgaXMgd2hlcmUgd2UgcHV0IG1ldGhvZAotLy8vIGltcGxlbWVudGF0aW9ucyB0aGF0IGFyZSBkZXNpZ25lZCB0byB3b3JrIHdpdGggUE9ELWxpa2UgVCdzLgorLy8vIFNtYWxsVmVjdG9yVGVtcGxhdGVCYXNlPFRyaXZpYWxseUNvcHlhYmxlID0gdHJ1ZT4gLSBUaGlzIGlzIHdoZXJlIHdlIHB1dAorLy8vIG1ldGhvZCBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhcmUgZGVzaWduZWQgdG8gd29yayB3aXRoIFBPRC1saWtlIFQncy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgU21hbGxWZWN0b3JUZW1wbGF0ZUJhc2U8VCwgdHJ1ZT4gOiBwdWJsaWMgU21hbGxWZWN0b3JUZW1wbGF0ZUNvbW1vbjxUPiB7CiBwcm90ZWN0ZWQ6CkBAIC0zMjAsOCArMzEyLDggQEAKIC8vLyBUaGlzIGNsYXNzIGNvbnNpc3RzIG9mIGNvbW1vbiBjb2RlIGZhY3RvcmVkIG91dCBvZiB0aGUgU21hbGxWZWN0b3IgY2xhc3MgdG8KIC8vLyByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbiBiYXNlZCBvbiB0aGUgU21hbGxWZWN0b3IgJ04nIHRlbXBsYXRlIHBhcmFtZXRlci4KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgU21hbGxWZWN0b3JJbXBsIDogcHVibGljIFNtYWxsVmVjdG9yVGVtcGxhdGVCYXNlPFQsIGlzUG9kTGlrZTxUPjo6dmFsdWU+IHsKLSAgdXNpbmcgU3VwZXJDbGFzcyA9IFNtYWxsVmVjdG9yVGVtcGxhdGVCYXNlPFQsIGlzUG9kTGlrZTxUPjo6dmFsdWU+OworY2xhc3MgU21hbGxWZWN0b3JJbXBsIDogcHVibGljIFNtYWxsVmVjdG9yVGVtcGxhdGVCYXNlPFQ+IHsKKyAgdXNpbmcgU3VwZXJDbGFzcyA9IFNtYWxsVmVjdG9yVGVtcGxhdGVCYXNlPFQ+OwogCiBwdWJsaWM6CiAgIHVzaW5nIGl0ZXJhdG9yID0gdHlwZW5hbWUgU3VwZXJDbGFzczo6aXRlcmF0b3I7CkBAIC0zMzEsNyArMzIzLDcgQEAKIHByb3RlY3RlZDoKICAgLy8gRGVmYXVsdCBjdG9yIC0gSW5pdGlhbGl6ZSB0byBlbXB0eS4KICAgZXhwbGljaXQgU21hbGxWZWN0b3JJbXBsKHVuc2lnbmVkIE4pCi0gICAgICA6IFNtYWxsVmVjdG9yVGVtcGxhdGVCYXNlPFQsIGlzUG9kTGlrZTxUPjo6dmFsdWU+KE4pIHt9CisgICAgICA6IFNtYWxsVmVjdG9yVGVtcGxhdGVCYXNlPFQ+KE4pIHt9CiAKIHB1YmxpYzoKICAgU21hbGxWZWN0b3JJbXBsKGNvbnN0IFNtYWxsVmVjdG9ySW1wbCAmKSA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NwYXJzZUJpdFZlY3Rvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3BhcnNlQml0VmVjdG9yLmgKaW5kZXggNGNiZjQwYy4uMTI4NTBlMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3BhcnNlQml0VmVjdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3BhcnNlQml0VmVjdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvU3BhcnNlQml0VmVjdG9yLmggLSBFZmZpY2llbnQgU3BhcnNlIEJpdFZlY3RvciAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI2MSwyMSArMjYwLDMzIEBACiAgICAgQklUV09SRF9TSVpFID0gU3BhcnNlQml0VmVjdG9yRWxlbWVudDxFbGVtZW50U2l6ZT46OkJJVFdPUkRfU0laRQogICB9OwogCi0gIC8vIFBvaW50ZXIgdG8gb3VyIGN1cnJlbnQgRWxlbWVudC4KLSAgRWxlbWVudExpc3RJdGVyIEN1cnJFbGVtZW50SXRlcjsKICAgRWxlbWVudExpc3QgRWxlbWVudHM7CisgIC8vIFBvaW50ZXIgdG8gb3VyIGN1cnJlbnQgRWxlbWVudC4gVGhpcyBoYXMgbm8gdmlzaWJsZSBlZmZlY3Qgb24gdGhlIGV4dGVybmFsCisgIC8vIHN0YXRlIG9mIGEgU3BhcnNlQml0VmVjdG9yLCBpdCdzIGp1c3QgdXNlZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIGluIHRoZQorICAvLyBjb21tb24gY2FzZSBvZiB0ZXN0aW5nL21vZGlmeWluZyBiaXRzIHdpdGggc2ltaWxhciBpbmRpY2VzLgorICBtdXRhYmxlIEVsZW1lbnRMaXN0SXRlciBDdXJyRWxlbWVudEl0ZXI7CiAKICAgLy8gVGhpcyBpcyBsaWtlIHN0ZDo6bG93ZXJfYm91bmQsIGV4Y2VwdCB3ZSBkbyBsaW5lYXIgc2VhcmNoaW5nIGZyb20gdGhlCiAgIC8vIGN1cnJlbnQgcG9zaXRpb24uCi0gIEVsZW1lbnRMaXN0SXRlciBGaW5kTG93ZXJCb3VuZCh1bnNpZ25lZCBFbGVtZW50SW5kZXgpIHsKKyAgRWxlbWVudExpc3RJdGVyIEZpbmRMb3dlckJvdW5kSW1wbCh1bnNpZ25lZCBFbGVtZW50SW5kZXgpIGNvbnN0IHsKKworICAgIC8vIFdlIGNhY2hlIGEgbm9uLWNvbnN0IGl0ZXJhdG9yIHNvIHdlJ3JlIGZvcmNlZCB0byByZXNvcnQgdG8gY29uc3RfY2FzdCB0bworICAgIC8vIGdldCB0aGUgYmVnaW4vZW5kIGluIHRoZSBjYXNlIHdoZXJlICd0aGlzJyBpcyBjb25zdC4gVG8gYXZvaWQgZHVwbGljYXRpb24KKyAgICAvLyBvZiBjb2RlIHdpdGggdGhlIG9ubHkgZGlmZmVyZW5jZSBiZWluZyB3aGV0aGVyIHRoZSBjb25zdCBjYXN0IGlzIHByZXNlbnQKKyAgICAvLyAndGhpcycgaXMgYWx3YXlzIGNvbnN0IGluIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBhbmQgd2Ugc29ydCBvdXQgdGhlCisgICAgLy8gZGlmZmVyZW5jZSBpbiBGaW5kTG93ZXJCb3VuZCBhbmQgRmluZExvd2VyQm91bmRDb25zdC4KKyAgICBFbGVtZW50TGlzdEl0ZXIgQmVnaW4gPQorICAgICAgICBjb25zdF9jYXN0PFNwYXJzZUJpdFZlY3RvcjxFbGVtZW50U2l6ZT4gKj4odGhpcyktPkVsZW1lbnRzLmJlZ2luKCk7CisgICAgRWxlbWVudExpc3RJdGVyIEVuZCA9CisgICAgICAgIGNvbnN0X2Nhc3Q8U3BhcnNlQml0VmVjdG9yPEVsZW1lbnRTaXplPiAqPih0aGlzKS0+RWxlbWVudHMuZW5kKCk7CiAKICAgICBpZiAoRWxlbWVudHMuZW1wdHkoKSkgewotICAgICAgQ3VyckVsZW1lbnRJdGVyID0gRWxlbWVudHMuYmVnaW4oKTsKLSAgICAgIHJldHVybiBFbGVtZW50cy5iZWdpbigpOworICAgICAgQ3VyckVsZW1lbnRJdGVyID0gQmVnaW47CisgICAgICByZXR1cm4gQ3VyckVsZW1lbnRJdGVyOwogICAgIH0KIAogICAgIC8vIE1ha2Ugc3VyZSBvdXIgY3VycmVudCBpdGVyYXRvciBpcyB2YWxpZC4KLSAgICBpZiAoQ3VyckVsZW1lbnRJdGVyID09IEVsZW1lbnRzLmVuZCgpKQorICAgIGlmIChDdXJyRWxlbWVudEl0ZXIgPT0gRW5kKQogICAgICAgLS1DdXJyRWxlbWVudEl0ZXI7CiAKICAgICAvLyBTZWFyY2ggZnJvbSBvdXIgY3VycmVudCBpdGVyYXRvciwgZWl0aGVyIGJhY2t3YXJkcyBvciBmb3J3YXJkcywKQEAgLTI4NCwxNyArMjk1LDIzIEBACiAgICAgaWYgKEN1cnJFbGVtZW50SXRlci0+aW5kZXgoKSA9PSBFbGVtZW50SW5kZXgpIHsKICAgICAgIHJldHVybiBFbGVtZW50SXRlcjsKICAgICB9IGVsc2UgaWYgKEN1cnJFbGVtZW50SXRlci0+aW5kZXgoKSA+IEVsZW1lbnRJbmRleCkgewotICAgICAgd2hpbGUgKEVsZW1lbnRJdGVyICE9IEVsZW1lbnRzLmJlZ2luKCkKKyAgICAgIHdoaWxlIChFbGVtZW50SXRlciAhPSBCZWdpbgogICAgICAgICAgICAgICYmIEVsZW1lbnRJdGVyLT5pbmRleCgpID4gRWxlbWVudEluZGV4KQogICAgICAgICAtLUVsZW1lbnRJdGVyOwogICAgIH0gZWxzZSB7Ci0gICAgICB3aGlsZSAoRWxlbWVudEl0ZXIgIT0gRWxlbWVudHMuZW5kKCkgJiYKKyAgICAgIHdoaWxlIChFbGVtZW50SXRlciAhPSBFbmQgJiYKICAgICAgICAgICAgICBFbGVtZW50SXRlci0+aW5kZXgoKSA8IEVsZW1lbnRJbmRleCkKICAgICAgICAgKytFbGVtZW50SXRlcjsKICAgICB9CiAgICAgQ3VyckVsZW1lbnRJdGVyID0gRWxlbWVudEl0ZXI7CiAgICAgcmV0dXJuIEVsZW1lbnRJdGVyOwogICB9CisgIEVsZW1lbnRMaXN0Q29uc3RJdGVyIEZpbmRMb3dlckJvdW5kQ29uc3QodW5zaWduZWQgRWxlbWVudEluZGV4KSBjb25zdCB7CisgICAgcmV0dXJuIEZpbmRMb3dlckJvdW5kSW1wbChFbGVtZW50SW5kZXgpOworICB9CisgIEVsZW1lbnRMaXN0SXRlciBGaW5kTG93ZXJCb3VuZCh1bnNpZ25lZCBFbGVtZW50SW5kZXgpIHsKKyAgICByZXR1cm4gRmluZExvd2VyQm91bmRJbXBsKEVsZW1lbnRJbmRleCk7CisgIH0KIAogICAvLyBJdGVyYXRvciB0byB3YWxrIHNldCBiaXRzIGluIHRoZSBiaXRtYXAuICBUaGlzIGl0ZXJhdG9yIGlzIGEgbG90IHVnbGllcgogICAvLyB0aGFuIGl0IHdvdWxkIGJlLCBpbiBvcmRlciB0byBiZSBlZmZpY2llbnQuCkBAIC00MjMsMjIgKzQ0MCwxMiBAQAogcHVibGljOgogICB1c2luZyBpdGVyYXRvciA9IFNwYXJzZUJpdFZlY3Rvckl0ZXJhdG9yOwogCi0gIFNwYXJzZUJpdFZlY3RvcigpIHsKLSAgICBDdXJyRWxlbWVudEl0ZXIgPSBFbGVtZW50cy5iZWdpbigpOwotICB9CisgIFNwYXJzZUJpdFZlY3RvcigpIDogRWxlbWVudHMoKSwgQ3VyckVsZW1lbnRJdGVyKEVsZW1lbnRzLmJlZ2luKCkpIHt9CiAKLSAgLy8gU3BhcnNlQml0VmVjdG9yIGNvcHkgY3Rvci4KLSAgU3BhcnNlQml0VmVjdG9yKGNvbnN0IFNwYXJzZUJpdFZlY3RvciAmUkhTKSB7Ci0gICAgRWxlbWVudExpc3RDb25zdEl0ZXIgRWxlbWVudEl0ZXIgPSBSSFMuRWxlbWVudHMuYmVnaW4oKTsKLSAgICB3aGlsZSAoRWxlbWVudEl0ZXIgIT0gUkhTLkVsZW1lbnRzLmVuZCgpKSB7Ci0gICAgICBFbGVtZW50cy5wdXNoX2JhY2soU3BhcnNlQml0VmVjdG9yRWxlbWVudDxFbGVtZW50U2l6ZT4oKkVsZW1lbnRJdGVyKSk7Ci0gICAgICArK0VsZW1lbnRJdGVyOwotICAgIH0KLQotICAgIEN1cnJFbGVtZW50SXRlciA9IEVsZW1lbnRzLmJlZ2luICgpOwotICB9Ci0KLSAgflNwYXJzZUJpdFZlY3RvcigpID0gZGVmYXVsdDsKKyAgU3BhcnNlQml0VmVjdG9yKGNvbnN0IFNwYXJzZUJpdFZlY3RvciAmUkhTKQorICAgICAgOiBFbGVtZW50cyhSSFMuRWxlbWVudHMpLCBDdXJyRWxlbWVudEl0ZXIoRWxlbWVudHMuYmVnaW4oKSkge30KKyAgU3BhcnNlQml0VmVjdG9yKFNwYXJzZUJpdFZlY3RvciAmJlJIUykKKyAgICAgIDogRWxlbWVudHMoc3RkOjptb3ZlKFJIUy5FbGVtZW50cykpLCBDdXJyRWxlbWVudEl0ZXIoRWxlbWVudHMuYmVnaW4oKSkge30KIAogICAvLyBDbGVhci4KICAgdm9pZCBjbGVhcigpIHsKQEAgLTQ1MCwyNiArNDU3LDIzIEBACiAgICAgaWYgKHRoaXMgPT0gJlJIUykKICAgICAgIHJldHVybiAqdGhpczsKIAotICAgIEVsZW1lbnRzLmNsZWFyKCk7Ci0KLSAgICBFbGVtZW50TGlzdENvbnN0SXRlciBFbGVtZW50SXRlciA9IFJIUy5FbGVtZW50cy5iZWdpbigpOwotICAgIHdoaWxlIChFbGVtZW50SXRlciAhPSBSSFMuRWxlbWVudHMuZW5kKCkpIHsKLSAgICAgIEVsZW1lbnRzLnB1c2hfYmFjayhTcGFyc2VCaXRWZWN0b3JFbGVtZW50PEVsZW1lbnRTaXplPigqRWxlbWVudEl0ZXIpKTsKLSAgICAgICsrRWxlbWVudEl0ZXI7Ci0gICAgfQotCi0gICAgQ3VyckVsZW1lbnRJdGVyID0gRWxlbWVudHMuYmVnaW4gKCk7Ci0KKyAgICBFbGVtZW50cyA9IFJIUy5FbGVtZW50czsKKyAgICBDdXJyRWxlbWVudEl0ZXIgPSBFbGVtZW50cy5iZWdpbigpOworICAgIHJldHVybiAqdGhpczsKKyAgfQorICBTcGFyc2VCaXRWZWN0b3IgJm9wZXJhdG9yPShTcGFyc2VCaXRWZWN0b3IgJiZSSFMpIHsKKyAgICBFbGVtZW50cyA9IHN0ZDo6bW92ZShSSFMuRWxlbWVudHMpOworICAgIEN1cnJFbGVtZW50SXRlciA9IEVsZW1lbnRzLmJlZ2luKCk7CiAgICAgcmV0dXJuICp0aGlzOwogICB9CiAKICAgLy8gVGVzdCwgUmVzZXQsIGFuZCBTZXQgYSBiaXQgaW4gdGhlIGJpdG1hcC4KLSAgYm9vbCB0ZXN0KHVuc2lnbmVkIElkeCkgeworICBib29sIHRlc3QodW5zaWduZWQgSWR4KSBjb25zdCB7CiAgICAgaWYgKEVsZW1lbnRzLmVtcHR5KCkpCiAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB1bnNpZ25lZCBFbGVtZW50SW5kZXggPSBJZHggLyBFbGVtZW50U2l6ZTsKLSAgICBFbGVtZW50TGlzdEl0ZXIgRWxlbWVudEl0ZXIgPSBGaW5kTG93ZXJCb3VuZChFbGVtZW50SW5kZXgpOworICAgIEVsZW1lbnRMaXN0Q29uc3RJdGVyIEVsZW1lbnRJdGVyID0gRmluZExvd2VyQm91bmRDb25zdChFbGVtZW50SW5kZXgpOwogCiAgICAgLy8gSWYgd2UgY2FuJ3QgZmluZCBhbiBlbGVtZW50IHRoYXQgaXMgc3VwcG9zZWQgdG8gY29udGFpbiB0aGlzIGJpdCwgdGhlcmUKICAgICAvLyBpcyBub3RoaW5nIG1vcmUgdG8gZG8uCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TcGFyc2VNdWx0aVNldC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3BhcnNlTXVsdGlTZXQuaAppbmRleCAzYzg2Mzc2Li5kOWQzZmY0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9TcGFyc2VNdWx0aVNldC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NwYXJzZU11bHRpU2V0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvU3BhcnNlTXVsdGlTZXQuaCAtIFNwYXJzZSBtdWx0aXNldCAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1NwYXJzZVNldC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3BhcnNlU2V0LmgKaW5kZXggNzRjYzZkYS4uYTZlYjliOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3BhcnNlU2V0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3BhcnNlU2V0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvU3BhcnNlU2V0LmggLSBTcGFyc2Ugc2V0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1N0YXRpc3RpYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RhdGlzdGljLmgKaW5kZXggOTBjMmVlZi4uMmFjNTlkYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RhdGlzdGljLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RhdGlzdGljLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vQURUL1N0YXRpc3RpYy5oIC0gRWFzeSB3YXkgdG8gZXhwb3NlIHN0YXRzIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1N0cmluZ0V4dHJhcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nRXh0cmFzLmgKaW5kZXggNjBhMDM2My4uMTZhYzkwYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nRXh0cmFzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nRXh0cmFzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvU3RyaW5nRXh0cmFzLmggLSBVc2VmdWwgc3RyaW5nIGZ1bmN0aW9ucyAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1N0cmluZ01hcC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nTWFwLmgKaW5kZXggYTlmODNkMy4uZDk0ZTQ4MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nTWFwLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nTWFwLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3RyaW5nTWFwLmggLSBTdHJpbmcgSGFzaCB0YWJsZSBtYXAgaW50ZXJmYWNlIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1N0cmluZ1JlZi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nUmVmLmgKaW5kZXggYTViYTViNS4uNDY2MWIxZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nUmVmLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nUmVmLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3RyaW5nUmVmLmggLSBDb25zdGFudCBTdHJpbmcgUmVmZXJlbmNlIFdyYXBwZXIgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC02Myw3ICs2Miw2IEBACiAKICAgICAvLyBXb3JrYXJvdW5kIG1lbWNtcCBpc3N1ZSB3aXRoIG51bGwgcG9pbnRlcnMgKHVuZGVmaW5lZCBiZWhhdmlvcikKICAgICAvLyBieSBwcm92aWRpbmcgYSBzcGVjaWFsaXplZCB2ZXJzaW9uCi0gICAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICAgIHN0YXRpYyBpbnQgY29tcGFyZU1lbW9yeShjb25zdCBjaGFyICpMaHMsIGNvbnN0IGNoYXIgKlJocywgc2l6ZV90IExlbmd0aCkgewogICAgICAgaWYgKExlbmd0aCA9PSAwKSB7IHJldHVybiAwOyB9CiAgICAgICByZXR1cm4gOjptZW1jbXAoTGhzLFJocyxMZW5ndGgpOwpAQCAtODEsMTcgKzc5LDE0IEBACiAgICAgU3RyaW5nUmVmKHN0ZDo6bnVsbHB0cl90KSA9IGRlbGV0ZTsKIAogICAgIC8vLyBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVmIGZyb20gYSBjc3RyaW5nLgotICAgIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgICAvKmltcGxpY2l0Ki8gU3RyaW5nUmVmKGNvbnN0IGNoYXIgKlN0cikKICAgICAgICAgOiBEYXRhKFN0ciksIExlbmd0aChTdHIgPyA6OnN0cmxlbihTdHIpIDogMCkge30KIAogICAgIC8vLyBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVmIGZyb20gYSBwb2ludGVyIGFuZCBsZW5ndGguCi0gICAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICAgIC8qaW1wbGljaXQqLyBjb25zdGV4cHIgU3RyaW5nUmVmKGNvbnN0IGNoYXIgKmRhdGEsIHNpemVfdCBsZW5ndGgpCiAgICAgICAgIDogRGF0YShkYXRhKSwgTGVuZ3RoKGxlbmd0aCkge30KIAogICAgIC8vLyBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVmIGZyb20gYW4gc3RkOjpzdHJpbmcuCi0gICAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICAgIC8qaW1wbGljaXQqLyBTdHJpbmdSZWYoY29uc3Qgc3RkOjpzdHJpbmcgJlN0cikKICAgICAgIDogRGF0YShTdHIuZGF0YSgpKSwgTGVuZ3RoKFN0ci5sZW5ndGgoKSkge30KIApAQCAtMTI0LDE3ICsxMTksMTQgQEAKICAgICAvLy8gZGF0YSAtIEdldCBhIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcgKHdoaWNoIG1heSBub3QgYmUgbnVsbAogICAgIC8vLyB0ZXJtaW5hdGVkKS4KICAgICBMTFZNX05PRElTQ0FSRAotICAgIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgICBjb25zdCBjaGFyICpkYXRhKCkgY29uc3QgeyByZXR1cm4gRGF0YTsgfQogCiAgICAgLy8vIGVtcHR5IC0gQ2hlY2sgaWYgdGhlIHN0cmluZyBpcyBlbXB0eS4KICAgICBMTFZNX05PRElTQ0FSRAotICAgIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gTGVuZ3RoID09IDA7IH0KIAogICAgIC8vLyBzaXplIC0gR2V0IHRoZSBzdHJpbmcgc2l6ZS4KICAgICBMTFZNX05PRElTQ0FSRAotICAgIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIExlbmd0aDsgfQogCiAgICAgLy8vIGZyb250IC0gR2V0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4KQEAgLTE2NSw3ICsxNTcsNiBAQAogICAgIC8vLyBlcXVhbHMgLSBDaGVjayBmb3Igc3RyaW5nIGVxdWFsaXR5LCB0aGlzIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4KICAgICAvLy8gY29tcGFyZSgpIHdoZW4gdGhlIHJlbGF0aXZlIG9yZGVyaW5nIG9mIGluZXF1YWwgc3RyaW5ncyBpc24ndCBuZWVkZWQuCiAgICAgTExWTV9OT0RJU0NBUkQKLSAgICBMTFZNX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCiAgICAgYm9vbCBlcXVhbHMoU3RyaW5nUmVmIFJIUykgY29uc3QgewogICAgICAgcmV0dXJuIChMZW5ndGggPT0gUkhTLkxlbmd0aCAmJgogICAgICAgICAgICAgICBjb21wYXJlTWVtb3J5KERhdGEsIFJIUy5EYXRhLCBSSFMuTGVuZ3RoKSA9PSAwKTsKQEAgLTE4MCw3ICsxNzEsNiBAQAogICAgIC8vLyBjb21wYXJlIC0gQ29tcGFyZSB0d28gc3RyaW5nczsgdGhlIHJlc3VsdCBpcyAtMSwgMCwgb3IgMSBpZiB0aGlzIHN0cmluZwogICAgIC8vLyBpcyBsZXhpY29ncmFwaGljYWxseSBsZXNzIHRoYW4sIGVxdWFsIHRvLCBvciBncmVhdGVyIHRoYW4gdGhlIFxwIFJIUy4KICAgICBMTFZNX05PRElTQ0FSRAotICAgIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgICBpbnQgY29tcGFyZShTdHJpbmdSZWYgUkhTKSBjb25zdCB7CiAgICAgICAvLyBDaGVjayB0aGUgcHJlZml4IGZvciBhIG1pc21hdGNoLgogICAgICAgaWYgKGludCBSZXMgPSBjb21wYXJlTWVtb3J5KERhdGEsIFJIUy5EYXRhLCBzdGQ6Om1pbihMZW5ndGgsIFJIUy5MZW5ndGgpKSkKQEAgLTI2Myw3ICsyNTMsNiBAQAogCiAgICAgLy8vIENoZWNrIGlmIHRoaXMgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSBnaXZlbiBccCBQcmVmaXguCiAgICAgTExWTV9OT0RJU0NBUkQKLSAgICBMTFZNX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCiAgICAgYm9vbCBzdGFydHN3aXRoKFN0cmluZ1JlZiBQcmVmaXgpIGNvbnN0IHsKICAgICAgIHJldHVybiBMZW5ndGggPj0gUHJlZml4Lkxlbmd0aCAmJgogICAgICAgICAgICAgIGNvbXBhcmVNZW1vcnkoRGF0YSwgUHJlZml4LkRhdGEsIFByZWZpeC5MZW5ndGgpID09IDA7CkBAIC0yNzUsNyArMjY0LDYgQEAKIAogICAgIC8vLyBDaGVjayBpZiB0aGlzIHN0cmluZyBlbmRzIHdpdGggdGhlIGdpdmVuIFxwIFN1ZmZpeC4KICAgICBMTFZNX05PRElTQ0FSRAotICAgIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgICBib29sIGVuZHN3aXRoKFN0cmluZ1JlZiBTdWZmaXgpIGNvbnN0IHsKICAgICAgIHJldHVybiBMZW5ndGggPj0gU3VmZml4Lkxlbmd0aCAmJgogICAgICAgICBjb21wYXJlTWVtb3J5KGVuZCgpIC0gU3VmZml4Lkxlbmd0aCwgU3VmZml4LkRhdGEsIFN1ZmZpeC5MZW5ndGgpID09IDA7CkBAIC0yOTQsNyArMjgyLDYgQEAKICAgICAvLy8gXHJldHVybnMgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFxwIEMsIG9yIG5wb3MgaWYgbm90CiAgICAgLy8vIGZvdW5kLgogICAgIExMVk1fTk9ESVNDQVJECi0gICAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICAgIHNpemVfdCBmaW5kKGNoYXIgQywgc2l6ZV90IEZyb20gPSAwKSBjb25zdCB7CiAgICAgICBzaXplX3QgRmluZEJlZ2luID0gc3RkOjptaW4oRnJvbSwgTGVuZ3RoKTsKICAgICAgIGlmIChGaW5kQmVnaW4gPCBMZW5ndGgpIHsgLy8gQXZvaWQgY2FsbGluZyBtZW1jaHIgd2l0aCBudWxscHRyLgpAQCAtMzE3LDcgKzMwNCw2IEBACiAgICAgLy8vIFxyZXR1cm5zIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIHNhdGlzZnlpbmcgXHAgRiBzdGFydGluZyBmcm9tCiAgICAgLy8vIFxwIEZyb20sIG9yIG5wb3MgaWYgbm90IGZvdW5kLgogICAgIExMVk1fTk9ESVNDQVJECi0gICAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICAgIHNpemVfdCBmaW5kX2lmKGZ1bmN0aW9uX3JlZjxib29sKGNoYXIpPiBGLCBzaXplX3QgRnJvbSA9IDApIGNvbnN0IHsKICAgICAgIFN0cmluZ1JlZiBTID0gZHJvcF9mcm9udChGcm9tKTsKICAgICAgIHdoaWxlICghUy5lbXB0eSgpKSB7CkBAIC0zMzMsNyArMzE5LDYgQEAKICAgICAvLy8gXHJldHVybnMgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgbm90IHNhdGlzZnlpbmcgXHAgRiBzdGFydGluZwogICAgIC8vLyBmcm9tIFxwIEZyb20sIG9yIG5wb3MgaWYgbm90IGZvdW5kLgogICAgIExMVk1fTk9ESVNDQVJECi0gICAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICAgIHNpemVfdCBmaW5kX2lmX25vdChmdW5jdGlvbl9yZWY8Ym9vbChjaGFyKT4gRiwgc2l6ZV90IEZyb20gPSAwKSBjb25zdCB7CiAgICAgICByZXR1cm4gZmluZF9pZihbRl0oY2hhciBjKSB7IHJldHVybiAhRihjKTsgfSwgRnJvbSk7CiAgICAgfQpAQCAtNDQ0LDE5ICs0MjksMTYgQEAKICAgICAvLy8gUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHN1YnN0cmluZyBvZiAqdGhpcywgYW5kIGZhbHNlCiAgICAgLy8vIG90aGVyd2lzZS4KICAgICBMTFZNX05PRElTQ0FSRAotICAgIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgICBib29sIGNvbnRhaW5zKFN0cmluZ1JlZiBPdGhlcikgY29uc3QgeyByZXR1cm4gZmluZChPdGhlcikgIT0gbnBvczsgfQogCiAgICAgLy8vIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBjaGFyYWN0ZXIgaXMgY29udGFpbmVkIGluICp0aGlzLCBhbmQgZmFsc2UKICAgICAvLy8gb3RoZXJ3aXNlLgogICAgIExMVk1fTk9ESVNDQVJECi0gICAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICAgIGJvb2wgY29udGFpbnMoY2hhciBDKSBjb25zdCB7IHJldHVybiBmaW5kX2ZpcnN0X29mKEMpICE9IG5wb3M7IH0KIAogICAgIC8vLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIGEgc3Vic3RyaW5nIG9mICp0aGlzLCBhbmQgZmFsc2UKICAgICAvLy8gb3RoZXJ3aXNlLgogICAgIExMVk1fTk9ESVNDQVJECi0gICAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICAgIGJvb2wgY29udGFpbnNfbG93ZXIoU3RyaW5nUmVmIE90aGVyKSBjb25zdCB7CiAgICAgICByZXR1cm4gZmluZF9sb3dlcihPdGhlcikgIT0gbnBvczsKICAgICB9CkBAIC00NjQsNyArNDQ2LDYgQEAKICAgICAvLy8gUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGNoYXJhY3RlciBpcyBjb250YWluZWQgaW4gKnRoaXMsIGFuZCBmYWxzZQogICAgIC8vLyBvdGhlcndpc2UuCiAgICAgTExWTV9OT0RJU0NBUkQKLSAgICBMTFZNX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCiAgICAgYm9vbCBjb250YWluc19sb3dlcihjaGFyIEMpIGNvbnN0IHsgcmV0dXJuIGZpbmRfbG93ZXIoQykgIT0gbnBvczsgfQogCiAgICAgLy8vIEB9CkBAIC01OTQsNyArNTc1LDYgQEAKICAgICAvLy8gZXhjZWVkcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVtYWluaW5nIGluIHRoZSBzdHJpbmcsIHRoZSBzdHJpbmcKICAgICAvLy8gc3VmZml4IChzdGFydGluZyB3aXRoIFxwIFN0YXJ0KSB3aWxsIGJlIHJldHVybmVkLgogICAgIExMVk1fTk9ESVNDQVJECi0gICAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICAgIFN0cmluZ1JlZiBzdWJzdHIoc2l6ZV90IFN0YXJ0LCBzaXplX3QgTiA9IG5wb3MpIGNvbnN0IHsKICAgICAgIFN0YXJ0ID0gc3RkOjptaW4oU3RhcnQsIExlbmd0aCk7CiAgICAgICByZXR1cm4gU3RyaW5nUmVmKERhdGEgKyBTdGFydCwgc3RkOjptaW4oTiwgTGVuZ3RoIC0gU3RhcnQpKTsKQEAgLTYwNCw3ICs1ODQsNiBAQAogICAgIC8vLyBlbGVtZW50cyByZW1haW5pbmcuICBJZiBccCBOIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZQogICAgIC8vLyBzdHJpbmcsIHRoZSBlbnRpcmUgc3RyaW5nIGlzIHJldHVybmVkLgogICAgIExMVk1fTk9ESVNDQVJECi0gICAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICAgIFN0cmluZ1JlZiB0YWtlX2Zyb250KHNpemVfdCBOID0gMSkgY29uc3QgewogICAgICAgaWYgKE4gPj0gc2l6ZSgpKQogICAgICAgICByZXR1cm4gKnRoaXM7CkBAIC02MTUsNyArNTk0LDYgQEAKICAgICAvLy8gZWxlbWVudHMgcmVtYWluaW5nLiAgSWYgXHAgTiBpcyBncmVhdGVyIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUKICAgICAvLy8gc3RyaW5nLCB0aGUgZW50aXJlIHN0cmluZyBpcyByZXR1cm5lZC4KICAgICBMTFZNX05PRElTQ0FSRAotICAgIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgICBTdHJpbmdSZWYgdGFrZV9iYWNrKHNpemVfdCBOID0gMSkgY29uc3QgewogICAgICAgaWYgKE4gPj0gc2l6ZSgpKQogICAgICAgICByZXR1cm4gKnRoaXM7CkBAIC02MjUsNyArNjAzLDYgQEAKICAgICAvLy8gUmV0dXJuIHRoZSBsb25nZXN0IHByZWZpeCBvZiAndGhpcycgc3VjaCB0aGF0IGV2ZXJ5IGNoYXJhY3RlcgogICAgIC8vLyBpbiB0aGUgcHJlZml4IHNhdGlzZmllcyB0aGUgZ2l2ZW4gcHJlZGljYXRlLgogICAgIExMVk1fTk9ESVNDQVJECi0gICAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICAgIFN0cmluZ1JlZiB0YWtlX3doaWxlKGZ1bmN0aW9uX3JlZjxib29sKGNoYXIpPiBGKSBjb25zdCB7CiAgICAgICByZXR1cm4gc3Vic3RyKDAsIGZpbmRfaWZfbm90KEYpKTsKICAgICB9CkBAIC02MzMsNyArNjEwLDYgQEAKICAgICAvLy8gUmV0dXJuIHRoZSBsb25nZXN0IHByZWZpeCBvZiAndGhpcycgc3VjaCB0aGF0IG5vIGNoYXJhY3RlciBpbgogICAgIC8vLyB0aGUgcHJlZml4IHNhdGlzZmllcyB0aGUgZ2l2ZW4gcHJlZGljYXRlLgogICAgIExMVk1fTk9ESVNDQVJECi0gICAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICAgIFN0cmluZ1JlZiB0YWtlX3VudGlsKGZ1bmN0aW9uX3JlZjxib29sKGNoYXIpPiBGKSBjb25zdCB7CiAgICAgICByZXR1cm4gc3Vic3RyKDAsIGZpbmRfaWYoRikpOwogICAgIH0KQEAgLTY0MSw3ICs2MTcsNiBAQAogICAgIC8vLyBSZXR1cm4gYSBTdHJpbmdSZWYgZXF1YWwgdG8gJ3RoaXMnIGJ1dCB3aXRoIHRoZSBmaXJzdCBccCBOIGVsZW1lbnRzCiAgICAgLy8vIGRyb3BwZWQuCiAgICAgTExWTV9OT0RJU0NBUkQKLSAgICBMTFZNX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCiAgICAgU3RyaW5nUmVmIGRyb3BfZnJvbnQoc2l6ZV90IE4gPSAxKSBjb25zdCB7CiAgICAgICBhc3NlcnQoc2l6ZSgpID49IE4gJiYgIkRyb3BwaW5nIG1vcmUgZWxlbWVudHMgdGhhbiBleGlzdCIpOwogICAgICAgcmV0dXJuIHN1YnN0cihOKTsKQEAgLTY1MCw3ICs2MjUsNiBAQAogICAgIC8vLyBSZXR1cm4gYSBTdHJpbmdSZWYgZXF1YWwgdG8gJ3RoaXMnIGJ1dCB3aXRoIHRoZSBsYXN0IFxwIE4gZWxlbWVudHMKICAgICAvLy8gZHJvcHBlZC4KICAgICBMTFZNX05PRElTQ0FSRAotICAgIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgICBTdHJpbmdSZWYgZHJvcF9iYWNrKHNpemVfdCBOID0gMSkgY29uc3QgewogICAgICAgYXNzZXJ0KHNpemUoKSA+PSBOICYmICJEcm9wcGluZyBtb3JlIGVsZW1lbnRzIHRoYW4gZXhpc3QiKTsKICAgICAgIHJldHVybiBzdWJzdHIoMCwgc2l6ZSgpLU4pOwpAQCAtNjU5LDcgKzYzMyw2IEBACiAgICAgLy8vIFJldHVybiBhIFN0cmluZ1JlZiBlcXVhbCB0byAndGhpcycsIGJ1dCB3aXRoIGFsbCBjaGFyYWN0ZXJzIHNhdGlzZnlpbmcKICAgICAvLy8gdGhlIGdpdmVuIHByZWRpY2F0ZSBkcm9wcGVkIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgogICAgIExMVk1fTk9ESVNDQVJECi0gICAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICAgIFN0cmluZ1JlZiBkcm9wX3doaWxlKGZ1bmN0aW9uX3JlZjxib29sKGNoYXIpPiBGKSBjb25zdCB7CiAgICAgICByZXR1cm4gc3Vic3RyKGZpbmRfaWZfbm90KEYpKTsKICAgICB9CkBAIC02NjcsMTQgKzY0MCwxMiBAQAogICAgIC8vLyBSZXR1cm4gYSBTdHJpbmdSZWYgZXF1YWwgdG8gJ3RoaXMnLCBidXQgd2l0aCBhbGwgY2hhcmFjdGVycyBub3QKICAgICAvLy8gc2F0aXNmeWluZyB0aGUgZ2l2ZW4gcHJlZGljYXRlIGRyb3BwZWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCiAgICAgTExWTV9OT0RJU0NBUkQKLSAgICBMTFZNX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCiAgICAgU3RyaW5nUmVmIGRyb3BfdW50aWwoZnVuY3Rpb25fcmVmPGJvb2woY2hhcik+IEYpIGNvbnN0IHsKICAgICAgIHJldHVybiBzdWJzdHIoZmluZF9pZihGKSk7CiAgICAgfQogCiAgICAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFN0cmluZ1JlZiBoYXMgdGhlIGdpdmVuIHByZWZpeCBhbmQgcmVtb3ZlcyB0aGF0CiAgICAgLy8vIHByZWZpeC4KLSAgICBMTFZNX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCiAgICAgYm9vbCBjb25zdW1lX2Zyb250KFN0cmluZ1JlZiBQcmVmaXgpIHsKICAgICAgIGlmICghc3RhcnRzd2l0aChQcmVmaXgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02ODUsNyArNjU2LDYgQEAKIAogICAgIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBTdHJpbmdSZWYgaGFzIHRoZSBnaXZlbiBzdWZmaXggYW5kIHJlbW92ZXMgdGhhdAogICAgIC8vLyBzdWZmaXguCi0gICAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICAgIGJvb2wgY29uc3VtZV9iYWNrKFN0cmluZ1JlZiBTdWZmaXgpIHsKICAgICAgIGlmICghZW5kc3dpdGgoU3VmZml4KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzA2LDcgKzY3Niw2IEBACiAgICAgLy8vIHdpbGwgYmUgcmV0dXJuZWQuIElmIHRoaXMgaXMgbGVzcyB0aGFuIFxwIFN0YXJ0LCBhbiBlbXB0eSBzdHJpbmcgd2lsbAogICAgIC8vLyBiZSByZXR1cm5lZC4KICAgICBMTFZNX05PRElTQ0FSRAotICAgIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgICBTdHJpbmdSZWYgc2xpY2Uoc2l6ZV90IFN0YXJ0LCBzaXplX3QgRW5kKSBjb25zdCB7CiAgICAgICBTdGFydCA9IHN0ZDo6bWluKFN0YXJ0LCBMZW5ndGgpOwogICAgICAgRW5kID0gc3RkOjptaW4oc3RkOjptYXgoU3RhcnQsIEVuZCksIExlbmd0aCk7CkBAIC04OTQsMTIgKzg2MywxMCBAQAogICAvLy8gQG5hbWUgU3RyaW5nUmVmIENvbXBhcmlzb24gT3BlcmF0b3JzCiAgIC8vLyBAewogCi0gIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShTdHJpbmdSZWYgTEhTLCBTdHJpbmdSZWYgUkhTKSB7CiAgICAgcmV0dXJuIExIUy5lcXVhbHMoUkhTKTsKICAgfQogCi0gIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShTdHJpbmdSZWYgTEhTLCBTdHJpbmdSZWYgUkhTKSB7IHJldHVybiAhKExIUyA9PSBSSFMpOyB9CiAKICAgaW5saW5lIGJvb2wgb3BlcmF0b3I8KFN0cmluZ1JlZiBMSFMsIFN0cmluZ1JlZiBSSFMpIHsKQEAgLTkyOCwxMCArODk1LDYgQEAKICAgTExWTV9OT0RJU0NBUkQKICAgaGFzaF9jb2RlIGhhc2hfdmFsdWUoU3RyaW5nUmVmIFMpOwogCi0gIC8vIFN0cmluZ1JlZnMgY2FuIGJlIHRyZWF0ZWQgbGlrZSBhIFBPRCB0eXBlLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzUG9kTGlrZTsKLSAgdGVtcGxhdGUgPD4gc3RydWN0IGlzUG9kTGlrZTxTdHJpbmdSZWY+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotCiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQogCiAjZW5kaWYgLy8gTExWTV9BRFRfU1RSSU5HUkVGX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1N0cmluZ1NldC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nU2V0LmgKaW5kZXggOWFmNDRjMC4uZmNmOTUxOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nU2V0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nU2V0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3RyaW5nU2V0LmggLSBUaGUgTExWTSBDb21waWxlciBEcml2ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1N0cmluZ1N3aXRjaC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nU3dpdGNoLmgKaW5kZXggYjc4NjBiOS4uZmVhOTExZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nU3dpdGNoLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvU3RyaW5nU3dpdGNoLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBTdHJpbmdTd2l0Y2guaCAtIFN3aXRjaC1vbi1saXRlcmFsLXN0cmluZyBDb25zdHJ1Y3QgLS0tLS0tLS0tLS0tLS09PT0vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09LwogLy8KIC8vICBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgU3RyaW5nU3dpdGNoIHRlbXBsYXRlLCB3aGljaCBtaW1pY3MgYSBzd2l0Y2goKQpAQCAtNDksNyArNDgsNiBAQAogICBPcHRpb25hbDxUPiBSZXN1bHQ7CiAKIHB1YmxpYzoKLSAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICBleHBsaWNpdCBTdHJpbmdTd2l0Y2goU3RyaW5nUmVmIFMpCiAgIDogU3RyKFMpLCBSZXN1bHQoKSB7IH0KIApAQCAtNjYsNyArNjQsNiBAQAogICB+U3RyaW5nU3dpdGNoKCkgPSBkZWZhdWx0OwogCiAgIC8vIENhc2Utc2Vuc2l0aXZlIGNhc2UgbWF0Y2hlcnMKLSAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICBTdHJpbmdTd2l0Y2ggJkNhc2UoU3RyaW5nTGl0ZXJhbCBTLCBUIFZhbHVlKSB7CiAgICAgaWYgKCFSZXN1bHQgJiYgU3RyID09IFMpIHsKICAgICAgIFJlc3VsdCA9IHN0ZDo6bW92ZShWYWx1ZSk7CkBAIC03NCw3ICs3MSw2IEBACiAgICAgcmV0dXJuICp0aGlzOwogICB9CiAKLSAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICBTdHJpbmdTd2l0Y2gmIEVuZHNXaXRoKFN0cmluZ0xpdGVyYWwgUywgVCBWYWx1ZSkgewogICAgIGlmICghUmVzdWx0ICYmIFN0ci5lbmRzd2l0aChTKSkgewogICAgICAgUmVzdWx0ID0gc3RkOjptb3ZlKFZhbHVlKTsKQEAgLTgyLDcgKzc4LDYgQEAKICAgICByZXR1cm4gKnRoaXM7CiAgIH0KIAotICBMTFZNX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCiAgIFN0cmluZ1N3aXRjaCYgU3RhcnRzV2l0aChTdHJpbmdMaXRlcmFsIFMsIFQgVmFsdWUpIHsKICAgICBpZiAoIVJlc3VsdCAmJiBTdHIuc3RhcnRzd2l0aChTKSkgewogICAgICAgUmVzdWx0ID0gc3RkOjptb3ZlKFZhbHVlKTsKQEAgLTkwLDUxICs4NSw0MyBAQAogICAgIHJldHVybiAqdGhpczsKICAgfQogCi0gIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgU3RyaW5nU3dpdGNoICZDYXNlcyhTdHJpbmdMaXRlcmFsIFMwLCBTdHJpbmdMaXRlcmFsIFMxLCBUIFZhbHVlKSB7CiAgICAgcmV0dXJuIENhc2UoUzAsIFZhbHVlKS5DYXNlKFMxLCBWYWx1ZSk7CiAgIH0KIAotICBMTFZNX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCiAgIFN0cmluZ1N3aXRjaCAmQ2FzZXMoU3RyaW5nTGl0ZXJhbCBTMCwgU3RyaW5nTGl0ZXJhbCBTMSwgU3RyaW5nTGl0ZXJhbCBTMiwKICAgICAgICAgICAgICAgICAgICAgICBUIFZhbHVlKSB7CiAgICAgcmV0dXJuIENhc2UoUzAsIFZhbHVlKS5DYXNlcyhTMSwgUzIsIFZhbHVlKTsKICAgfQogCi0gIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgU3RyaW5nU3dpdGNoICZDYXNlcyhTdHJpbmdMaXRlcmFsIFMwLCBTdHJpbmdMaXRlcmFsIFMxLCBTdHJpbmdMaXRlcmFsIFMyLAogICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0xpdGVyYWwgUzMsIFQgVmFsdWUpIHsKICAgICByZXR1cm4gQ2FzZShTMCwgVmFsdWUpLkNhc2VzKFMxLCBTMiwgUzMsIFZhbHVlKTsKICAgfQogCi0gIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgU3RyaW5nU3dpdGNoICZDYXNlcyhTdHJpbmdMaXRlcmFsIFMwLCBTdHJpbmdMaXRlcmFsIFMxLCBTdHJpbmdMaXRlcmFsIFMyLAogICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0xpdGVyYWwgUzMsIFN0cmluZ0xpdGVyYWwgUzQsIFQgVmFsdWUpIHsKICAgICByZXR1cm4gQ2FzZShTMCwgVmFsdWUpLkNhc2VzKFMxLCBTMiwgUzMsIFM0LCBWYWx1ZSk7CiAgIH0KIAotICBMTFZNX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCiAgIFN0cmluZ1N3aXRjaCAmQ2FzZXMoU3RyaW5nTGl0ZXJhbCBTMCwgU3RyaW5nTGl0ZXJhbCBTMSwgU3RyaW5nTGl0ZXJhbCBTMiwKICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdMaXRlcmFsIFMzLCBTdHJpbmdMaXRlcmFsIFM0LCBTdHJpbmdMaXRlcmFsIFM1LAogICAgICAgICAgICAgICAgICAgICAgIFQgVmFsdWUpIHsKICAgICByZXR1cm4gQ2FzZShTMCwgVmFsdWUpLkNhc2VzKFMxLCBTMiwgUzMsIFM0LCBTNSwgVmFsdWUpOwogICB9CiAKLSAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICBTdHJpbmdTd2l0Y2ggJkNhc2VzKFN0cmluZ0xpdGVyYWwgUzAsIFN0cmluZ0xpdGVyYWwgUzEsIFN0cmluZ0xpdGVyYWwgUzIsCiAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nTGl0ZXJhbCBTMywgU3RyaW5nTGl0ZXJhbCBTNCwgU3RyaW5nTGl0ZXJhbCBTNSwKICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdMaXRlcmFsIFM2LCBUIFZhbHVlKSB7CiAgICAgcmV0dXJuIENhc2UoUzAsIFZhbHVlKS5DYXNlcyhTMSwgUzIsIFMzLCBTNCwgUzUsIFM2LCBWYWx1ZSk7CiAgIH0KIAotICBMTFZNX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCiAgIFN0cmluZ1N3aXRjaCAmQ2FzZXMoU3RyaW5nTGl0ZXJhbCBTMCwgU3RyaW5nTGl0ZXJhbCBTMSwgU3RyaW5nTGl0ZXJhbCBTMiwKICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdMaXRlcmFsIFMzLCBTdHJpbmdMaXRlcmFsIFM0LCBTdHJpbmdMaXRlcmFsIFM1LAogICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0xpdGVyYWwgUzYsIFN0cmluZ0xpdGVyYWwgUzcsIFQgVmFsdWUpIHsKICAgICByZXR1cm4gQ2FzZShTMCwgVmFsdWUpLkNhc2VzKFMxLCBTMiwgUzMsIFM0LCBTNSwgUzYsIFM3LCBWYWx1ZSk7CiAgIH0KIAotICBMTFZNX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCiAgIFN0cmluZ1N3aXRjaCAmQ2FzZXMoU3RyaW5nTGl0ZXJhbCBTMCwgU3RyaW5nTGl0ZXJhbCBTMSwgU3RyaW5nTGl0ZXJhbCBTMiwKICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdMaXRlcmFsIFMzLCBTdHJpbmdMaXRlcmFsIFM0LCBTdHJpbmdMaXRlcmFsIFM1LAogICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0xpdGVyYWwgUzYsIFN0cmluZ0xpdGVyYWwgUzcsIFN0cmluZ0xpdGVyYWwgUzgsCkBAIC0xNDIsNyArMTI5LDYgQEAKICAgICByZXR1cm4gQ2FzZShTMCwgVmFsdWUpLkNhc2VzKFMxLCBTMiwgUzMsIFM0LCBTNSwgUzYsIFM3LCBTOCwgVmFsdWUpOwogICB9CiAKLSAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICBTdHJpbmdTd2l0Y2ggJkNhc2VzKFN0cmluZ0xpdGVyYWwgUzAsIFN0cmluZ0xpdGVyYWwgUzEsIFN0cmluZ0xpdGVyYWwgUzIsCiAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nTGl0ZXJhbCBTMywgU3RyaW5nTGl0ZXJhbCBTNCwgU3RyaW5nTGl0ZXJhbCBTNSwKICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdMaXRlcmFsIFM2LCBTdHJpbmdMaXRlcmFsIFM3LCBTdHJpbmdMaXRlcmFsIFM4LApAQCAtMTUxLDcgKzEzNyw2IEBACiAgIH0KIAogICAvLyBDYXNlLWluc2Vuc2l0aXZlIGNhc2UgbWF0Y2hlcnMuCi0gIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgU3RyaW5nU3dpdGNoICZDYXNlTG93ZXIoU3RyaW5nTGl0ZXJhbCBTLCBUIFZhbHVlKSB7CiAgICAgaWYgKCFSZXN1bHQgJiYgU3RyLmVxdWFsc19sb3dlcihTKSkKICAgICAgIFJlc3VsdCA9IHN0ZDo6bW92ZShWYWx1ZSk7CkBAIC0xNTksNyArMTQ0LDYgQEAKICAgICByZXR1cm4gKnRoaXM7CiAgIH0KIAotICBMTFZNX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCiAgIFN0cmluZ1N3aXRjaCAmRW5kc1dpdGhMb3dlcihTdHJpbmdMaXRlcmFsIFMsIFQgVmFsdWUpIHsKICAgICBpZiAoIVJlc3VsdCAmJiBTdHIuZW5kc3dpdGhfbG93ZXIoUykpCiAgICAgICBSZXN1bHQgPSBWYWx1ZTsKQEAgLTE2Nyw3ICsxNTEsNiBAQAogICAgIHJldHVybiAqdGhpczsKICAgfQogCi0gIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgU3RyaW5nU3dpdGNoICZTdGFydHNXaXRoTG93ZXIoU3RyaW5nTGl0ZXJhbCBTLCBUIFZhbHVlKSB7CiAgICAgaWYgKCFSZXN1bHQgJiYgU3RyLnN0YXJ0c3dpdGhfbG93ZXIoUykpCiAgICAgICBSZXN1bHQgPSBzdGQ6Om1vdmUoVmFsdWUpOwpAQCAtMTc1LDMxICsxNTgsMjYgQEAKICAgICByZXR1cm4gKnRoaXM7CiAgIH0KIAotICBMTFZNX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCiAgIFN0cmluZ1N3aXRjaCAmQ2FzZXNMb3dlcihTdHJpbmdMaXRlcmFsIFMwLCBTdHJpbmdMaXRlcmFsIFMxLCBUIFZhbHVlKSB7CiAgICAgcmV0dXJuIENhc2VMb3dlcihTMCwgVmFsdWUpLkNhc2VMb3dlcihTMSwgVmFsdWUpOwogICB9CiAKLSAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICBTdHJpbmdTd2l0Y2ggJkNhc2VzTG93ZXIoU3RyaW5nTGl0ZXJhbCBTMCwgU3RyaW5nTGl0ZXJhbCBTMSwgU3RyaW5nTGl0ZXJhbCBTMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQgVmFsdWUpIHsKICAgICByZXR1cm4gQ2FzZUxvd2VyKFMwLCBWYWx1ZSkuQ2FzZXNMb3dlcihTMSwgUzIsIFZhbHVlKTsKICAgfQogCi0gIExMVk1fQVRUUklCVVRFX0FMV0FZU19JTkxJTkUKICAgU3RyaW5nU3dpdGNoICZDYXNlc0xvd2VyKFN0cmluZ0xpdGVyYWwgUzAsIFN0cmluZ0xpdGVyYWwgUzEsIFN0cmluZ0xpdGVyYWwgUzIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdMaXRlcmFsIFMzLCBUIFZhbHVlKSB7CiAgICAgcmV0dXJuIENhc2VMb3dlcihTMCwgVmFsdWUpLkNhc2VzTG93ZXIoUzEsIFMyLCBTMywgVmFsdWUpOwogICB9CiAKLSAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICBTdHJpbmdTd2l0Y2ggJkNhc2VzTG93ZXIoU3RyaW5nTGl0ZXJhbCBTMCwgU3RyaW5nTGl0ZXJhbCBTMSwgU3RyaW5nTGl0ZXJhbCBTMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0xpdGVyYWwgUzMsIFN0cmluZ0xpdGVyYWwgUzQsIFQgVmFsdWUpIHsKICAgICByZXR1cm4gQ2FzZUxvd2VyKFMwLCBWYWx1ZSkuQ2FzZXNMb3dlcihTMSwgUzIsIFMzLCBTNCwgVmFsdWUpOwogICB9CiAKICAgTExWTV9OT0RJU0NBUkQKLSAgTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORQogICBSIERlZmF1bHQoVCBWYWx1ZSkgewogICAgIGlmIChSZXN1bHQpCiAgICAgICByZXR1cm4gc3RkOjptb3ZlKCpSZXN1bHQpOwpAQCAtMjA3LDcgKzE4NSw2IEBACiAgIH0KIAogICBMTFZNX05PRElTQ0FSRAotICBMTFZNX0FUVFJJQlVURV9BTFdBWVNfSU5MSU5FCiAgIG9wZXJhdG9yIFIoKSB7CiAgICAgYXNzZXJ0KFJlc3VsdCAmJiAiRmVsbCBvZmYgdGhlIGVuZCBvZiBhIHN0cmluZy1zd2l0Y2giKTsKICAgICByZXR1cm4gc3RkOjptb3ZlKCpSZXN1bHQpOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvVGlueVB0clZlY3Rvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvVGlueVB0clZlY3Rvci5oCmluZGV4IDFiOGU5YWEuLmFjODI0NTEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1RpbnlQdHJWZWN0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9UaW55UHRyVmVjdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvVGlueVB0clZlY3Rvci5oIC0gJ05vcm1hbGx5IHRpbnknIHZlY3RvcnMgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9UcmlwbGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1RyaXBsZS5oCmluZGV4IGZlNzhmNzguLjcwZDg4NzkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1RyaXBsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1RyaXBsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0FEVC9UcmlwbGUuaCAtIFRhcmdldCB0cmlwbGUgaGVscGVyIGNsYXNzIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNjAsNyArNTksNiBAQAogICAgIG1pcHM2NCwgICAgICAgICAvLyBNSVBTNjQ6IG1pcHM2NCwgbWlwczY0cjYsIG1pcHNuMzIsIG1pcHNuMzJyNgogICAgIG1pcHM2NGVsLCAgICAgICAvLyBNSVBTNjRFTDogbWlwczY0ZWwsIG1pcHM2NHI2ZWwsIG1pcHNuMzJlbCwgbWlwc24zMnI2ZWwKICAgICBtc3A0MzAsICAgICAgICAgLy8gTVNQNDMwOiBtc3A0MzAKLSAgICBuaW9zMiwgICAgICAgICAgLy8gTklPU0lJOiBuaW9zMgogICAgIHBwYywgICAgICAgICAgICAvLyBQUEM6IHBvd2VycGMKICAgICBwcGM2NCwgICAgICAgICAgLy8gUFBDNjQ6IHBvd2VycGM2NCwgcHB1CiAgICAgcHBjNjRsZSwgICAgICAgIC8vIFBQQzY0TEU6IHBvd2VycGM2NGxlCkBAIC0xODYsNyArMTg0LDkgQEAKICAgICBDb250aWtpLAogICAgIEFNRFBBTCwgICAgIC8vIEFNRCBQQUwgUnVudGltZQogICAgIEhlcm1pdENvcmUsIC8vIEhlcm1pdENvcmUgVW5pa2VybmVsL011bHRpa2VybmVsCi0gICAgTGFzdE9TVHlwZSA9IEhlcm1pdENvcmUKKyAgICBIdXJkLCAgICAgICAvLyBHTlUvSHVyZAorICAgIFdBU0ksICAgICAgIC8vIEV4cGVyaW1lbnRhbCBXZWJBc3NlbWJseSBPUworICAgIExhc3RPU1R5cGUgPSBXQVNJCiAgIH07CiAgIGVudW0gRW52aXJvbm1lbnRUeXBlIHsKICAgICBVbmtub3duRW52aXJvbm1lbnQsCkBAIC00MTQsNyArNDE0LDcgQEAKICAgICBpZiAoTEhTWzFdICE9IE1pbm9yKQogICAgICAgcmV0dXJuIExIU1sxXSA8IE1pbm9yOwogICAgIGlmIChMSFNbMl0gIT0gTWljcm8pCi0gICAgICByZXR1cm4gTEhTWzFdIDwgTWljcm87CisgICAgICByZXR1cm4gTEhTWzJdIDwgTWljcm87CiAKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KQEAgLTUyMywzMiArNTIzLDM2IEBACiAgICAgcmV0dXJuIGdldE9TKCkgPT0gVHJpcGxlOjpIYWlrdTsKICAgfQogCi0gIC8vLyBDaGVja3MgaWYgdGhlIGVudmlyb25tZW50IGNvdWxkIGJlIE1TVkMuCi0gIGJvb2wgaXNXaW5kb3dzTVNWQ0Vudmlyb25tZW50KCkgY29uc3QgewotICAgIHJldHVybiBnZXRPUygpID09IFRyaXBsZTo6V2luMzIgJiYKLSAgICAgICAgICAgKGdldEVudmlyb25tZW50KCkgPT0gVHJpcGxlOjpVbmtub3duRW52aXJvbm1lbnQgfHwKLSAgICAgICAgICAgIGdldEVudmlyb25tZW50KCkgPT0gVHJpcGxlOjpNU1ZDKTsKKyAgLy8vIFRlc3RzIHdoZXRoZXIgdGhlIE9TIGlzIFdpbmRvd3MuCisgIGJvb2wgaXNPU1dpbmRvd3MoKSBjb25zdCB7CisgICAgcmV0dXJuIGdldE9TKCkgPT0gVHJpcGxlOjpXaW4zMjsKICAgfQogCiAgIC8vLyBDaGVja3MgaWYgdGhlIGVudmlyb25tZW50IGlzIE1TVkMuCiAgIGJvb2wgaXNLbm93bldpbmRvd3NNU1ZDRW52aXJvbm1lbnQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGdldE9TKCkgPT0gVHJpcGxlOjpXaW4zMiAmJiBnZXRFbnZpcm9ubWVudCgpID09IFRyaXBsZTo6TVNWQzsKKyAgICByZXR1cm4gaXNPU1dpbmRvd3MoKSAmJiBnZXRFbnZpcm9ubWVudCgpID09IFRyaXBsZTo6TVNWQzsKKyAgfQorCisgIC8vLyBDaGVja3MgaWYgdGhlIGVudmlyb25tZW50IGNvdWxkIGJlIE1TVkMuCisgIGJvb2wgaXNXaW5kb3dzTVNWQ0Vudmlyb25tZW50KCkgY29uc3QgeworICAgIHJldHVybiBpc0tub3duV2luZG93c01TVkNFbnZpcm9ubWVudCgpIHx8CisgICAgICAgICAgIChpc09TV2luZG93cygpICYmIGdldEVudmlyb25tZW50KCkgPT0gVHJpcGxlOjpVbmtub3duRW52aXJvbm1lbnQpOwogICB9CiAKICAgYm9vbCBpc1dpbmRvd3NDb3JlQ0xSRW52aXJvbm1lbnQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGdldE9TKCkgPT0gVHJpcGxlOjpXaW4zMiAmJiBnZXRFbnZpcm9ubWVudCgpID09IFRyaXBsZTo6Q29yZUNMUjsKKyAgICByZXR1cm4gaXNPU1dpbmRvd3MoKSAmJiBnZXRFbnZpcm9ubWVudCgpID09IFRyaXBsZTo6Q29yZUNMUjsKICAgfQogCiAgIGJvb2wgaXNXaW5kb3dzSXRhbml1bUVudmlyb25tZW50KCkgY29uc3QgewotICAgIHJldHVybiBnZXRPUygpID09IFRyaXBsZTo6V2luMzIgJiYgZ2V0RW52aXJvbm1lbnQoKSA9PSBUcmlwbGU6Okl0YW5pdW07CisgICAgcmV0dXJuIGlzT1NXaW5kb3dzKCkgJiYgZ2V0RW52aXJvbm1lbnQoKSA9PSBUcmlwbGU6Okl0YW5pdW07CiAgIH0KIAogICBib29sIGlzV2luZG93c0N5Z3dpbkVudmlyb25tZW50KCkgY29uc3QgewotICAgIHJldHVybiBnZXRPUygpID09IFRyaXBsZTo6V2luMzIgJiYgZ2V0RW52aXJvbm1lbnQoKSA9PSBUcmlwbGU6OkN5Z251czsKKyAgICByZXR1cm4gaXNPU1dpbmRvd3MoKSAmJiBnZXRFbnZpcm9ubWVudCgpID09IFRyaXBsZTo6Q3lnbnVzOwogICB9CiAKICAgYm9vbCBpc1dpbmRvd3NHTlVFbnZpcm9ubWVudCgpIGNvbnN0IHsKLSAgICByZXR1cm4gZ2V0T1MoKSA9PSBUcmlwbGU6OldpbjMyICYmIGdldEVudmlyb25tZW50KCkgPT0gVHJpcGxlOjpHTlU7CisgICAgcmV0dXJuIGlzT1NXaW5kb3dzKCkgJiYgZ2V0RW52aXJvbm1lbnQoKSA9PSBUcmlwbGU6OkdOVTsKICAgfQogCiAgIC8vLyBUZXN0cyBmb3IgZWl0aGVyIEN5Z3dpbiBvciBNaW5HVyBPUwpAQCAtNTYyLDExICs1NjYsNiBAQAogICAgICAgICAgICBpc1dpbmRvd3NJdGFuaXVtRW52aXJvbm1lbnQoKTsKICAgfQogCi0gIC8vLyBUZXN0cyB3aGV0aGVyIHRoZSBPUyBpcyBXaW5kb3dzLgotICBib29sIGlzT1NXaW5kb3dzKCkgY29uc3QgewotICAgIHJldHVybiBnZXRPUygpID09IFRyaXBsZTo6V2luMzI7Ci0gIH0KLQogICAvLy8gVGVzdHMgd2hldGhlciB0aGUgT1MgaXMgTmFDbCAoTmF0aXZlIENsaWVudCkKICAgYm9vbCBpc09TTmFDbCgpIGNvbnN0IHsKICAgICByZXR1cm4gZ2V0T1MoKSA9PSBUcmlwbGU6Ok5hQ2w7CkBAIC01ODIsOSArNTgxLDIwIEBACiAgICAgcmV0dXJuIGdldE9TKCkgPT0gVHJpcGxlOjpLRnJlZUJTRDsKICAgfQogCisgIC8vLyBUZXN0cyB3aGV0aGVyIHRoZSBPUyBpcyBIdXJkLgorICBib29sIGlzT1NIdXJkKCkgY29uc3QgeworICAgIHJldHVybiBnZXRPUygpID09IFRyaXBsZTo6SHVyZDsKKyAgfQorCisgIC8vLyBUZXN0cyB3aGV0aGVyIHRoZSBPUyBpcyBXQVNJLgorICBib29sIGlzT1NXQVNJKCkgY29uc3QgeworICAgIHJldHVybiBnZXRPUygpID09IFRyaXBsZTo6V0FTSTsKKyAgfQorCiAgIC8vLyBUZXN0cyB3aGV0aGVyIHRoZSBPUyB1c2VzIGdsaWJjLgogICBib29sIGlzT1NHbGliYygpIGNvbnN0IHsKLSAgICByZXR1cm4gKGdldE9TKCkgPT0gVHJpcGxlOjpMaW51eCB8fCBnZXRPUygpID09IFRyaXBsZTo6S0ZyZWVCU0QpICYmCisgICAgcmV0dXJuIChnZXRPUygpID09IFRyaXBsZTo6TGludXggfHwgZ2V0T1MoKSA9PSBUcmlwbGU6OktGcmVlQlNEIHx8CisgICAgICAgICAgICBnZXRPUygpID09IFRyaXBsZTo6SHVyZCkgJiYKICAgICAgICAgICAgIWlzQW5kcm9pZCgpOwogICB9CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1R3aW5lLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9Ud2luZS5oCmluZGV4IGI2MGZkMDkuLjQxNDBjMjIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1R3aW5lLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvVHdpbmUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUd2luZS5oIC0gRmFzdCBUZW1wb3JhcnkgU3RyaW5nIENvbmNhdGVuYXRpb24gLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTI3NCw2ICsyNzMsOSBAQAogCiAgICAgICBhc3NlcnQoaXNWYWxpZCgpICYmICJJbnZhbGlkIHR3aW5lISIpOwogICAgIH0KKyAgICAvLy8gRGVsZXRlIHRoZSBpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gbnVsbHB0ciBhcyBUd2luZShjb25zdCBjaGFyICopCisgICAgLy8vIGNhbm5vdCB0YWtlIG51bGxwdHIuCisgICAgLyppbXBsaWNpdCovIFR3aW5lKHN0ZDo6bnVsbHB0cl90KSA9IGRlbGV0ZTsKIAogICAgIC8vLyBDb25zdHJ1Y3QgZnJvbSBhbiBzdGQ6OnN0cmluZy4KICAgICAvKmltcGxpY2l0Ki8gVHdpbmUoY29uc3Qgc3RkOjpzdHJpbmcgJlN0cikgOiBMSFNLaW5kKFN0ZFN0cmluZ0tpbmQpIHsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1VuaXF1ZVZlY3Rvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvVW5pcXVlVmVjdG9yLmgKaW5kZXggYzg2YmVkZC4uYmZlYTk4OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvVW5pcXVlVmVjdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvVW5pcXVlVmVjdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvVW5pcXVlVmVjdG9yLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9WYXJpYWRpY0Z1bmN0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9WYXJpYWRpY0Z1bmN0aW9uLmgKaW5kZXggOTAyOGFiZS4uNWFlZmIwNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvVmFyaWFkaWNGdW5jdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL1ZhcmlhZGljRnVuY3Rpb24uaApAQCAtMSw5ICsxLDggQEAKLS8vPT09LS0tIFZhcmlhZGljRnVuY3Rpb25zLmggLSBWYXJpYWRpYyBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLz09PS0gVmFyaWFkaWNGdW5jdGlvbi5oIC0gVmFyaWFkaWMgRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2JpdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvYml0LmgKaW5kZXggYTRhYmE3Yi4uYTc5MGQ1ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvYml0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvYml0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vQURUL2JpdC5oIC0gQysrMjAgPGJpdD4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTQxLDExICs0MCwxMSBAQAogICAgICAgICAgICwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxfX2lzX3RyaXZpYWxseV9jb3B5YWJsZShUbyk+Ojp0eXBlCiAgICAgICAgICAgLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPF9faXNfdHJpdmlhbGx5X2NvcHlhYmxlKEZyb20pPjo6dHlwZQogI2Vsc2UKLSAgLy8gVGhpcyBjYXNlIGlzIEdDQyA0LnguIGNsYW5nIHdpdGggbGliYysrIG9yIGxpYnN0ZGMrKyBuZXZlciBnZXQgaGVyZS4gVW5saWtlCi0gIC8vIGxsdm0vU3VwcG9ydC90eXBlX3RyYWl0cy5oJ3MgaXNQb2RMaWtlIHdlIGRvbid0IHdhbnQgdG8gcHJvdmlkZSBhCi0gIC8vIGdvb2QtZW5vdWdoIGFuc3dlciBoZXJlOiBkZXZlbG9wZXJzIGluIHRoYXQgY29uZmlndXJhdGlvbiB3aWxsIGhpdAotICAvLyBjb21waWxhdGlvbiBmYWlsdXJlcyBvbiB0aGUgYm90cyBpbnN0ZWFkIG9mIGxvY2FsbHkuIFRoYXQncyBhY2NlcHRhYmxlCi0gIC8vIGJlY2F1c2UgaXQncyB2ZXJ5IGZldyBkZXZlbG9wZXJzLCBhbmQgb25seSB1bnRpbCB3ZSBtb3ZlIHBhc3QgQysrMTEuCisvLyBUaGlzIGNhc2UgaXMgR0NDIDQueC4gY2xhbmcgd2l0aCBsaWJjKysgb3IgbGlic3RkYysrIG5ldmVyIGdldCBoZXJlLiBVbmxpa2UKKy8vIGxsdm0vU3VwcG9ydC90eXBlX3RyYWl0cy5oJ3MgaXNfdHJpdmlhbGx5X2NvcHlhYmxlIHdlIGRvbid0IHdhbnQgdG8KKy8vIHByb3ZpZGUgYSBnb29kLWVub3VnaCBhbnN3ZXIgaGVyZTogZGV2ZWxvcGVycyBpbiB0aGF0IGNvbmZpZ3VyYXRpb24gd2lsbCBoaXQKKy8vIGNvbXBpbGF0aW9uIGZhaWx1cmVzIG9uIHRoZSBib3RzIGluc3RlYWQgb2YgbG9jYWxseS4gVGhhdCdzIGFjY2VwdGFibGUKKy8vIGJlY2F1c2UgaXQncyB2ZXJ5IGZldyBkZXZlbG9wZXJzLCBhbmQgb25seSB1bnRpbCB3ZSBtb3ZlIHBhc3QgQysrMTEuCiAjZW5kaWYKID4KIGlubGluZSBUbyBiaXRfY2FzdChjb25zdCBGcm9tICZmcm9tKSBub2V4Y2VwdCB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9lZGl0X2Rpc3RhbmNlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9lZGl0X2Rpc3RhbmNlLmgKaW5kZXggYjJlOGVjNS4uNGY1MTM0MCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvZWRpdF9kaXN0YW5jZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2VkaXRfZGlzdGFuY2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9BRFQvZWRpdF9kaXN0YW5jZS5oIC0gQXJyYXkgZWRpdCBkaXN0YW5jZSBmdW5jdGlvbiAtLS0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvZmFsbGlibGVfaXRlcmF0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2ZhbGxpYmxlX2l0ZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUwMWFkMgotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2ZhbGxpYmxlX2l0ZXJhdG9yLmgKQEAgLTAsMCArMSwyNDMgQEAKKy8vPT09LS0tIGZhbGxpYmxlX2l0ZXJhdG9yLmggLSBXcmFwcGVyIGZvciBmYWxsaWJsZSBpdGVyYXRvcnMgLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9BRFRfRkFMTElCTEVfSVRFUkFUT1JfSAorI2RlZmluZSBMTFZNX0FEVF9GQUxMSUJMRV9JVEVSQVRPUl9ICisKKyNpbmNsdWRlICJsbHZtL0FEVC9Qb2ludGVySW50UGFpci5oIgorI2luY2x1ZGUgImxsdm0vQURUL2l0ZXJhdG9yX3JhbmdlLmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0Vycm9yLmgiCisKKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworbmFtZXNwYWNlIGxsdm0geworCisvLy8gQSB3cmFwcGVyIGNsYXNzIGZvciBmYWxsaWJsZSBpdGVyYXRvcnMuCisvLy8KKy8vLyAgIFRoZSBmYWxsaWJsZV9pdGVyYXRvciB0ZW1wbGF0ZSB3cmFwcyBhbiB1bmRlcmx5aW5nIGl0ZXJhdG9yLWxpa2UgY2xhc3MKKy8vLyB3aG9zZSBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBvcGVyYXRpb25zIGFyZSByZXBsYWNlZCB3aXRoIGZhbGxpYmxlIHZlcnNpb25zCisvLy8gbGlrZToKKy8vLworLy8vICAgQGNvZGV7LmNwcH0KKy8vLyAgIEVycm9yIGluYygpOworLy8vICAgRXJyb3IgZGVjKCk7CisvLy8gICBAZW5kY29kZQorLy8vCisvLy8gICBJdCBwcm9kdWNlcyBhbiBpbnRlcmZhY2UgdGhhdCBpcyAobW9zdGx5KSBjb21wYXRpYmxlIHdpdGggYSB0cmFkaXRpb25hbAorLy8vIGMrKyBpdGVyYXRvciwgaW5jbHVkaW5nICsrIGFuZCAtLSBvcGVyYXRvcnMgdGhhdCBkbyBub3QgZmFpbC4KKy8vLworLy8vICAgSW5zdGFuY2VzIG9mIHRoZSB3cmFwcGVyIGFyZSBjb25zdHJ1Y3RlZCB3aXRoIGFuIGluc3RhbmNlIG9mIHRoZQorLy8vIHVuZGVybHlpbmcgaXRlcmF0b3IgYW5kIChmb3Igbm9uLWVuZCBpdGVyYXRvcnMpIGEgcmVmZXJlbmNlIHRvIGFuIEVycm9yCisvLy8gaW5zdGFuY2UuIElmIHRoZSB1bmRlcmx5aW5nIGluY3JlbWVudC9kZWNyZW1lbnQgb3BlcmF0aW9ucyBmYWlsLCB0aGUgRXJyb3IKKy8vLyBpcyByZXR1cm5lZCB2aWEgdGhpcyByZWZlcmVuY2UsIGFuZCB0aGUgcmVzdWx0aW5nIGl0ZXJhdG9yIHZhbHVlIHNldCB0byBhbgorLy8vIGVuZC1vZi1yYW5nZSBzZW50aW5lbCB2YWx1ZS4gVGhpcyBlbmFibGVzIHRoZSBmb2xsb3dpbmcgbG9vcCBpZGlvbToKKy8vLworLy8vICAgQGNvZGV7LmNwcH0KKy8vLyAgIGNsYXNzIEFyY2hpdmUgeyAvLyBFLmcuIFBvdGVudGlhbGx5IG1hbGZvcm1lZCBvbi1kaXNrIGFyY2hpdmUKKy8vLyAgIHB1YmxpYzoKKy8vLyAgICAgZmFsbGlibGVfaXRlcmF0b3I8QXJjaGl2ZUNoaWxkSXRyPiBjaGlsZHJlbl9iZWdpbihFcnJvciAmRXJyKTsKKy8vLyAgICAgZmFsbGlibGVfaXRlcmF0b3I8QXJjaGl2ZUNoaWxkSXRyPiBjaGlsZHJlbl9lbmQoKTsKKy8vLyAgICAgaXRlcmF0b3JfcmFuZ2U8ZmFsbGlibGVfaXRlcmF0b3I8QXJjaGl2ZUNoaWxkSXRyPj4KKy8vLyAgICAgY2hpbGRyZW4oRXJyb3IgJkVycikgeworLy8vICAgICAgIHJldHVybiBtYWtlX3JhbmdlKGNoaWxkcmVuX2JlZ2luKEVyciksIGNoaWxkcmVuX2VuZCgpKTsKKy8vLyAgICAgLy8uLi4KKy8vLyAgIH07CisvLy8KKy8vLyAgIHZvaWQgd2FsayhBcmNoaXZlICZBKSB7CisvLy8gICAgIEVycm9yIEVyciA9IEVycm9yOjpzdWNjZXNzKCk7CisvLy8gICAgIGZvciAoYXV0byAmQyA6IEEuY2hpbGRyZW4oRXJyKSkgeworLy8vICAgICAgIC8vIExvb3AgYm9keSBvbmx5IGVudGVyZWQgd2hlbiBpbmNyZW1lbnQgc3VjY2VlZHMuCisvLy8gICAgIH0KKy8vLyAgICAgaWYgKEVycikgeworLy8vICAgICAgIC8vIGhhbmRsZSBlcnJvci4KKy8vLyAgICAgfQorLy8vICAgfQorLy8vICAgQGVuZGNvZGUKKy8vLworLy8vICAgVGhlIHdyYXBwZXIgbWFya3MgdGhlIHJlZmVyZW5jZWQgRXJyb3IgYXMgdW5jaGVja2VkIGFmdGVyIGVhY2ggaW5jcmVtZW50CisvLy8gYW5kL29yIGRlY3JlbWVudCBvcGVyYXRpb24sIGFuZCBjbGVhcnMgdGhlIHVuY2hlY2tlZCBmbGFnIHdoZW4gYSBub24tZW5kCisvLy8gdmFsdWUgaXMgY29tcGFyZWQgYWdhaW5zdCBlbmQgKHNpbmNlLCBieSB0aGUgaW5jcmVtZW50IGludmFyaWFudCwgbm90IGJlaW5nCisvLy8gYW4gZW5kIHZhbHVlIHByb3ZlcyB0aGF0IHRoZXJlIHdhcyBubyBlcnJvciwgYW5kIGlzIGVxdWl2YWxlbnQgdG8gY2hlY2tpbmcKKy8vLyB0aGF0IHRoZSBFcnJvciBpcyBzdWNjZXNzKS4gVGhpcyBhbGxvd3MgZWFybHkgZXhpdHMgZnJvbSB0aGUgbG9vcCBib2R5CisvLy8gd2l0aG91dCByZXF1aXJpbmcgcmVkdW5kYW50IGVycm9yIGNoZWNrcy4KK3RlbXBsYXRlIDx0eXBlbmFtZSBVbmRlcmx5aW5nPiBjbGFzcyBmYWxsaWJsZV9pdGVyYXRvciB7Citwcml2YXRlOgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgdXNpbmcgZW5hYmxlX2lmX3N0cnVjdF9kZXJlZl9zdXBwb3J0ZWQgPSBzdGQ6OmVuYWJsZV9pZjwKKyAgICAgICFzdGQ6OmlzX3ZvaWQ8ZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkub3BlcmF0b3ItPigpKT46OnZhbHVlLAorICAgICAgZGVjbHR5cGUoc3RkOjpkZWNsdmFsPFQ+KCkub3BlcmF0b3ItPigpKT47CisKK3B1YmxpYzoKKyAgLy8vIENvbnN0cnVjdCBhIGZhbGxpYmxlIGl0ZXJhdG9yIHRoYXQgKmNhbm5vdCogYmUgdXNlZCBhcyBhbiBlbmQtb2YtcmFuZ2UKKyAgLy8vIHZhbHVlLgorICAvLy8KKyAgLy8vIEEgdmFsdWUgY3JlYXRlZCBieSB0aGlzIG1ldGhvZCBjYW4gYmUgZGVyZWZlcmVuY2VkLCBpbmNyZW1lbnRlZCwKKyAgLy8vIGRlY3JlbWVudGVkIGFuZCBjb21wYXJlZCwgcHJvdmlkaW5nIHRoZSB1bmRlcmx5aW5nIHR5cGUgc3VwcG9ydHMgaXQuCisgIC8vLworICAvLy8gVGhlIGVycm9yIHRoYXQgaXMgcGFzc2VkIGluIHdpbGwgYmUgaW5pdGlhbGx5IG1hcmtlZCBhcyBjaGVja2VkLCBzbyBpZiB0aGUKKyAgLy8vIGl0ZXJhdG9yIGlzIG5vdCB1c2VkIGF0IGFsbCB0aGUgRXJyb3IgbmVlZCBub3QgYmUgY2hlY2tlZC4KKyAgc3RhdGljIGZhbGxpYmxlX2l0ZXJhdG9yIGl0cihVbmRlcmx5aW5nIEksIEVycm9yICZFcnIpIHsKKyAgICAodm9pZCkhIUVycjsKKyAgICByZXR1cm4gZmFsbGlibGVfaXRlcmF0b3Ioc3RkOjptb3ZlKEkpLCAmRXJyKTsKKyAgfQorCisgIC8vLyBDb25zdHJ1Y3QgYSBmYWxsaWJsZSBpdGVyYXRybyB0aGF0IGNhbiBiZSB1c2VkIGFzIGFuIGVuZC1vZi1yYW5nZSB2YWx1ZS4KKyAgLy8vCisgIC8vLyBBIHZhbHVlIGNyZWF0ZWQgYnkgdGhpcyBtZXRob2QgY2FuIGJlIGRlcmVmZXJlbmNlZCAoaWYgdGhlIHVuZGVybHlpbmcKKyAgLy8vIHZhbHVlIHBvaW50cyBhdCBhIHZhbGlkIHZhbHVlKSBhbmQgY29tcGFyZWQsIGJ1dCBub3QgaW5jcmVtZW50ZWQgb3IKKyAgLy8vIGRlY3JlbWVudGVkLgorICBzdGF0aWMgZmFsbGlibGVfaXRlcmF0b3IgZW5kKFVuZGVybHlpbmcgSSkgeworICAgIHJldHVybiBmYWxsaWJsZV9pdGVyYXRvcihzdGQ6Om1vdmUoSSksIG51bGxwdHIpOworICB9CisKKyAgLy8vIEZvcndhcmQgZGVyZWZlcmVuY2UgdG8gdGhlIHVuZGVybHlpbmcgaXRlcmF0b3IuCisgIGF1dG8gb3BlcmF0b3IqKCkgLT4gZGVjbHR5cGUoKnN0ZDo6ZGVjbHZhbDxVbmRlcmx5aW5nPigpKSB7IHJldHVybiAqSTsgfQorCisgIC8vLyBGb3J3YXJkIGNvbnN0IGRlcmVmZXJlbmNlIHRvIHRoZSB1bmRlcmx5aW5nIGl0ZXJhdG9yLgorICBhdXRvIG9wZXJhdG9yKigpIGNvbnN0IC0+IGRlY2x0eXBlKCpzdGQ6OmRlY2x2YWw8Y29uc3QgVW5kZXJseWluZz4oKSkgeworICAgIHJldHVybiAqSTsKKyAgfQorCisgIC8vLyBGb3J3YXJkIHN0cnVjdHVyZSBkZXJlZmVyZW5jZSB0byB0aGUgdW5kZXJseWluZyBpdGVyYXRvciAoaWYgdGhlCisgIC8vLyB1bmRlcmx5aW5nIGl0ZXJhdG9yIHN1cHBvcnRzIGl0KS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBVbmRlcmx5aW5nPgorICB0eXBlbmFtZSBlbmFibGVfaWZfc3RydWN0X2RlcmVmX3N1cHBvcnRlZDxUPjo6dHlwZSBvcGVyYXRvci0+KCkgeworICAgIHJldHVybiBJLm9wZXJhdG9yLT4oKTsKKyAgfQorCisgIC8vLyBGb3J3YXJkIGNvbnN0IHN0cnVjdHVyZSBkZXJlZmVyZW5jZSB0byB0aGUgdW5kZXJseWluZyBpdGVyYXRvciAoaWYgdGhlCisgIC8vLyB1bmRlcmx5aW5nIGl0ZXJhdG9yIHN1cHBvcnRzIGl0KS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFQgPSBVbmRlcmx5aW5nPgorICB0eXBlbmFtZSBlbmFibGVfaWZfc3RydWN0X2RlcmVmX3N1cHBvcnRlZDxjb25zdCBUPjo6dHlwZSBvcGVyYXRvci0+KCkgY29uc3QgeworICAgIHJldHVybiBJLm9wZXJhdG9yLT4oKTsKKyAgfQorCisgIC8vLyBJbmNyZW1lbnQgdGhlIGZhbGxpYmxlIGl0ZXJhdG9yLgorICAvLy8KKyAgLy8vIElmIHRoZSB1bmRlcmx5aW5nICdpbmMnIG9wZXJhdGlvbiBmYWlscywgdGhpcyB3aWxsIHNldCB0aGUgRXJyb3IgdmFsdWUKKyAgLy8vIGFuZCB1cGRhdGUgdGhpcyBpdGVyYXRvciB2YWx1ZSB0byBwb2ludCB0byBlbmQtb2YtcmFuZ2UuCisgIC8vLworICAvLy8gVGhlIEVycm9yIHZhbHVlIGlzIG1hcmtlZCBhcyBuZWVkaW5nIGNoZWNraW5nLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlCisgIC8vLyAnaW5jJyBvcGVyYXRpb24gc3VjY2VlZHMgb3IgZmFpbHMuCisgIGZhbGxpYmxlX2l0ZXJhdG9yICZvcGVyYXRvcisrKCkgeworICAgIGFzc2VydChnZXRFcnJQdHIoKSAmJiAiQ2Fubm90IGluY3JlbWVudCBlbmQgaXRlcmF0b3IiKTsKKyAgICBpZiAoYXV0byBFcnIgPSBJLmluYygpKQorICAgICAgaGFuZGxlRXJyb3Ioc3RkOjptb3ZlKEVycikpOworICAgIGVsc2UKKyAgICAgIHJlc2V0Q2hlY2tlZEZsYWcoKTsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICAvLy8gRGVjcmVtZW50IHRoZSBmYWxsaWJsZSBpdGVyYXRvci4KKyAgLy8vCisgIC8vLyBJZiB0aGUgdW5kZXJseWluZyAnZGVjJyBvcGVyYXRpb24gZmFpbHMsIHRoaXMgd2lsbCBzZXQgdGhlIEVycm9yIHZhbHVlCisgIC8vLyBhbmQgdXBkYXRlIHRoaXMgaXRlcmF0b3IgdmFsdWUgdG8gcG9pbnQgdG8gZW5kLW9mLXJhbmdlLgorICAvLy8KKyAgLy8vIFRoZSBFcnJvciB2YWx1ZSBpcyBtYXJrZWQgYXMgbmVlZGluZyBjaGVja2luZywgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZQorICAvLy8gJ2RlYycgb3BlcmF0aW9uIHN1Y2NlZWRzIG9yIGZhaWxzLgorICBmYWxsaWJsZV9pdGVyYXRvciAmb3BlcmF0b3ItLSgpIHsKKyAgICBhc3NlcnQoZ2V0RXJyUHRyKCkgJiYgIkNhbm5vdCBkZWNyZW1lbnQgZW5kIGl0ZXJhdG9yIik7CisgICAgaWYgKGF1dG8gRXJyID0gSS5kZWMoKSkKKyAgICAgIGhhbmRsZUVycm9yKHN0ZDo6bW92ZShFcnIpKTsKKyAgICBlbHNlCisgICAgICByZXNldENoZWNrZWRGbGFnKCk7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgLy8vIENvbXBhcmUgZmFsbGlibGUgaXRlcmF0b3JzIGZvciBlcXVhbGl0eS4KKyAgLy8vCisgIC8vLyBSZXR1cm5zIHRydWUgaWYgYm90aCBMSFMgYW5kIFJIUyBhcmUgZW5kLW9mLXJhbmdlIHZhbHVlcywgb3IgaWYgYm90aCBhcmUKKyAgLy8vIG5vbi1lbmQtb2YtcmFuZ2UgdmFsdWVzIHdob3NlIHVuZGVybHlpbmcgaXRlcmF0b3IgdmFsdWVzIGNvbXBhcmUgZXF1YWwuCisgIC8vLworICAvLy8gSWYgdGhpcyBpcyBhIGNvbXBhcmlzb24gYmV0d2VlbiBhbiBlbmQtb2YtcmFuZ2UgaXRlcmF0b3IgYW5kIGEKKyAgLy8vIG5vbi1lbmQtb2YtcmFuZ2UgaXRlcmF0b3IsIHRoZW4gdGhlIEVycm9yIChyZWZlcmVuY2VkIGJ5IHRoZQorICAvLy8gbm9uLWVuZC1vZi1yYW5nZSB2YWx1ZSkgaXMgbWFya2VkIGFzIGNoZWNrZWQ6IFNpbmNlIGFsbAorICAvLy8gaW5jcmVtZW50L2RlY3JlbWVudCBvcGVyYXRpb25zIHJlc3VsdCBpbiBhbiBlbmQtb2YtcmFuZ2UgdmFsdWUsIGNvbXBhcmluZworICAvLy8gZmFsc2UgYWdhaW5zdCBlbmQtb2YtcmFuZ2UgaXMgZXF1aXZhbGVudCB0byBjaGVja2luZyB0aGF0IHRoZSBFcnJvciB2YWx1ZQorICAvLy8gaXMgc3VjY2Vzcy4gVGhpcyBmbGFnIG1hbmFnZW1lbnQgZW5hYmxlcyBlYXJseSByZXR1cm5zIGZyb20gbG9vcCBib2RpZXMKKyAgLy8vIHdpdGhvdXQgcmVkdW5kYW50IEVycm9yIGNoZWNrcy4KKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBmYWxsaWJsZV9pdGVyYXRvciAmTEhTLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZhbGxpYmxlX2l0ZXJhdG9yICZSSFMpIHsKKyAgICAvLyBJZiBib3RoIGl0ZXJhdG9ycyBhcmUgaW4gdGhlIGVuZCBzdGF0ZSB0aGV5IGNvbXBhcmUKKyAgICAvLyBlcXVhbCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGVpdGhlciBpcyB2YWxpZC4KKyAgICBpZiAoTEhTLmlzRW5kKCkgJiYgUkhTLmlzRW5kKCkpCisgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGFzc2VydChMSFMuaXNWYWxpZCgpICYmIFJIUy5pc1ZhbGlkKCkgJiYKKyAgICAgICAgICAgIkludmFsaWQgaXRlcmF0b3JzIGNhbiBvbmx5IGJlIGNvbXBhcmVkIGFnYWluc3QgZW5kIik7CisKKyAgICBib29sIEVxdWFsID0gTEhTLkkgPT0gUkhTLkk7CisKKyAgICAvLyBJZiB0aGUgaXRlcmF0b3JzIGRpZmZlciBhbmQgdGhpcyBpcyBhIGNvbXBhcmlzb24gYWdhaW5zdCBlbmQgdGhlbiBtYXJrCisgICAgLy8gdGhlIEVycm9yIGFzIGNoZWNrZWQuCisgICAgaWYgKCFFcXVhbCkgeworICAgICAgaWYgKExIUy5pc0VuZCgpKQorICAgICAgICAodm9pZCkhISpSSFMuZ2V0RXJyUHRyKCk7CisgICAgICBlbHNlCisgICAgICAgICh2b2lkKSEhKkxIUy5nZXRFcnJQdHIoKTsKKyAgICB9CisKKyAgICByZXR1cm4gRXF1YWw7CisgIH0KKworICAvLy8gQ29tcGFyZSBmYWxsaWJsZSBpdGVyYXRvcnMgZm9yIGluZXF1YWxpdHkuCisgIC8vLworICAvLy8gU2VlIG5vdGVzIGZvciBvcGVyYXRvcj09LgorICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGZhbGxpYmxlX2l0ZXJhdG9yICZMSFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmFsbGlibGVfaXRlcmF0b3IgJlJIUykgeworICAgIHJldHVybiAhKExIUyA9PSBSSFMpOworICB9CisKK3ByaXZhdGU6CisgIGZhbGxpYmxlX2l0ZXJhdG9yKFVuZGVybHlpbmcgSSwgRXJyb3IgKkVycikKKyAgICAgIDogSShzdGQ6Om1vdmUoSSkpLCBFcnJTdGF0ZShFcnIsIGZhbHNlKSB7fQorCisgIEVycm9yICpnZXRFcnJQdHIoKSBjb25zdCB7IHJldHVybiBFcnJTdGF0ZS5nZXRQb2ludGVyKCk7IH0KKworICBib29sIGlzRW5kKCkgY29uc3QgeyByZXR1cm4gZ2V0RXJyUHRyKCkgPT0gbnVsbHB0cjsgfQorCisgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICFFcnJTdGF0ZS5nZXRJbnQoKTsgfQorCisgIHZvaWQgaGFuZGxlRXJyb3IoRXJyb3IgRXJyKSB7CisgICAgKmdldEVyclB0cigpID0gc3RkOjptb3ZlKEVycik7CisgICAgRXJyU3RhdGUuc2V0UG9pbnRlcihudWxscHRyKTsKKyAgICBFcnJTdGF0ZS5zZXRJbnQodHJ1ZSk7CisgIH0KKworICB2b2lkIHJlc2V0Q2hlY2tlZEZsYWcoKSB7CisgICAgKmdldEVyclB0cigpID0gRXJyb3I6OnN1Y2Nlc3MoKTsKKyAgfQorCisgIFVuZGVybHlpbmcgSTsKKyAgbXV0YWJsZSBQb2ludGVySW50UGFpcjxFcnJvciAqLCAxPiBFcnJTdGF0ZTsKK307CisKKy8vLyBDb252ZW5pZW5jZSB3cmFwcGVyIHRvIG1ha2UgYSBmYWxsaWJsZV9pdGVyYXRvciB2YWx1ZSBmcm9tIGFuIGluc3RhbmNlCisvLy8gb2YgYW4gdW5kZXJseWluZyBpdGVyYXRvciBhbmQgYW4gRXJyb3IgcmVmZXJlbmNlLgordGVtcGxhdGUgPHR5cGVuYW1lIFVuZGVybHlpbmc+CitmYWxsaWJsZV9pdGVyYXRvcjxVbmRlcmx5aW5nPiBtYWtlX2ZhbGxpYmxlX2l0cihVbmRlcmx5aW5nIEksIEVycm9yICZFcnIpIHsKKyAgcmV0dXJuIGZhbGxpYmxlX2l0ZXJhdG9yPFVuZGVybHlpbmc+OjppdHIoc3RkOjptb3ZlKEkpLCBFcnIpOworfQorCisvLy8gQ29udmVuaWVuY2Ugd3JhcHBlciB0byBtYWtlIGEgZmFsbGlibGVfaXRlcmF0b3IgZW5kIHZhbHVlIGZyb20gYW4gaW5zdGFuY2UKKy8vLyBvZiBhbiB1bmRlcmx5aW5nIGl0ZXJhdG9yLgordGVtcGxhdGUgPHR5cGVuYW1lIFVuZGVybHlpbmc+CitmYWxsaWJsZV9pdGVyYXRvcjxVbmRlcmx5aW5nPiBtYWtlX2ZhbGxpYmxlX2VuZChVbmRlcmx5aW5nIEUpIHsKKyAgcmV0dXJuIGZhbGxpYmxlX2l0ZXJhdG9yPFVuZGVybHlpbmc+OjplbmQoc3RkOjptb3ZlKEUpKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFVuZGVybHlpbmc+CitpdGVyYXRvcl9yYW5nZTxmYWxsaWJsZV9pdGVyYXRvcjxVbmRlcmx5aW5nPj4KK21ha2VfZmFsbGlibGVfcmFuZ2UoVW5kZXJseWluZyBJLCBVbmRlcmx5aW5nIEUsIEVycm9yICZFcnIpIHsKKyAgcmV0dXJuIG1ha2VfcmFuZ2UobWFrZV9mYWxsaWJsZV9pdHIoc3RkOjptb3ZlKEkpLCBFcnIpLAorICAgICAgICAgICAgICAgICAgICBtYWtlX2ZhbGxpYmxlX2VuZChzdGQ6Om1vdmUoRSkpKTsKK30KKworfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmIC8vIExMVk1fQURUX0ZBTExJQkxFX0lURVJBVE9SX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2lsaXN0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9pbGlzdC5oCmluZGV4IDAwYmI2ZDUuLjA2YzdhYmYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2lsaXN0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvaWxpc3QuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tLSBsbHZtL0FEVC9pbGlzdC5oIC0gSW50cnVzaXZlIExpbmtlZCBMaXN0IFRlbXBsYXRlIC0tLS0tLS0tLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNjYsOSArNjUsOCBAQAogICB2b2lkIGFkZE5vZGVUb0xpc3QoTm9kZVR5ICopIHt9CiAgIHZvaWQgcmVtb3ZlTm9kZUZyb21MaXN0KE5vZGVUeSAqKSB7fQogCi0gIC8vLyBDYWxsYmFjayBiZWZvcmUgdHJhbnNmZXJyaW5nIG5vZGVzIHRvIHRoaXMgbGlzdC4KLSAgLy8vCi0gIC8vLyBccHJlIFxjIHRoaXMhPSZPbGRMaXN0CisgIC8vLyBDYWxsYmFjayBiZWZvcmUgdHJhbnNmZXJyaW5nIG5vZGVzIHRvIHRoaXMgbGlzdC4gVGhlIG5vZGVzIG1heSBhbHJlYWR5IGJlCisgIC8vLyBpbiB0aGlzIHNhbWUgbGlzdC4KICAgdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPgogICB2b2lkIHRyYW5zZmVyTm9kZXNGcm9tTGlzdChpbGlzdF9jYWxsYmFja190cmFpdHMgJk9sZExpc3QsIEl0ZXJhdG9yIC8qZmlyc3QqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3IgLypsYXN0Ki8pIHsKQEAgLTI4Nyw4ICsyODUsOCBAQAogICAgIGlmIChwb3NpdGlvbiA9PSBsYXN0KQogICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHRoaXMgIT0gJkwyKSAvLyBOb3RpZnkgdHJhaXRzIHdlIG1vdmVkIHRoZSBub2Rlcy4uLgotICAgICAgdGhpcy0+dHJhbnNmZXJOb2Rlc0Zyb21MaXN0KEwyLCBmaXJzdCwgbGFzdCk7CisgICAgLy8gTm90aWZ5IHRyYWl0cyB3ZSBtb3ZlZCB0aGUgbm9kZXMuLi4KKyAgICB0aGlzLT50cmFuc2Zlck5vZGVzRnJvbUxpc3QoTDIsIGZpcnN0LCBsYXN0KTsKIAogICAgIGJhc2VfbGlzdF90eXBlOjpzcGxpY2UocG9zaXRpb24sIEwyLCBmaXJzdCwgbGFzdCk7CiAgIH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2lsaXN0X2Jhc2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2lsaXN0X2Jhc2UuaAppbmRleCAzZDgxOGE0Li5iOGMwOThiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9pbGlzdF9iYXNlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvaWxpc3RfYmFzZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQURUL2lsaXN0X2Jhc2UuaCAtIEludHJ1c2l2ZSBMaXN0IEJhc2UgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvaWxpc3RfaXRlcmF0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2lsaXN0X2l0ZXJhdG9yLmgKaW5kZXggNjcxZTY0NC4uY2JlNWNlZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvaWxpc3RfaXRlcmF0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9pbGlzdF9pdGVyYXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQURUL2lsaXN0X2l0ZXJhdG9yLmggLSBJbnRydXNpdmUgTGlzdCBJdGVyYXRvciAtLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvaWxpc3Rfbm9kZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvaWxpc3Rfbm9kZS5oCmluZGV4IGRkMGU2YjQuLmUwNDBkOTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2lsaXN0X25vZGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9pbGlzdF9ub2RlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvaWxpc3Rfbm9kZS5oIC0gSW50cnVzaXZlIExpbmtlZCBMaXN0IEhlbHBlciAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2lsaXN0X25vZGVfYmFzZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvaWxpc3Rfbm9kZV9iYXNlLmgKaW5kZXggZTUwNjJhYy4uZjZjNTE4ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvaWxpc3Rfbm9kZV9iYXNlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvaWxpc3Rfbm9kZV9iYXNlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvaWxpc3Rfbm9kZV9iYXNlLmggLSBJbnRydXNpdmUgTGlzdCBOb2RlIEJhc2UgLS0tLS0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9pbGlzdF9ub2RlX29wdGlvbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2lsaXN0X25vZGVfb3B0aW9ucy5oCmluZGV4IDdmZjQwMDUuLjliOTVjZGIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2lsaXN0X25vZGVfb3B0aW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2lsaXN0X25vZGVfb3B0aW9ucy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQURUL2lsaXN0X25vZGVfb3B0aW9ucy5oIC0gaWxpc3Rfbm9kZSBPcHRpb25zIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvaXRlcmF0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2l0ZXJhdG9yLmgKaW5kZXggY2I0MGZjMS4uNDY3ZmQ0YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvaXRlcmF0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9pdGVyYXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGl0ZXJhdG9yLmggLSBVdGlsaXRpZXMgZm9yIHVzaW5nIGFuZCBkZWZpbmluZyBpdGVyYXRvcnMgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMjAyLDkgKzIwMSw3IEBACiAgICAgdHlwZW5hbWUgUmVmZXJlbmNlVCA9IHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8CiAgICAgICAgIHN0ZDo6aXNfc2FtZTxULCB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcmFwcGVkSXRlcmF0b3JUPjo6dmFsdWVfdHlwZT46OnZhbHVlLAotICAgICAgICB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxXcmFwcGVkSXRlcmF0b3JUPjo6cmVmZXJlbmNlLCBUICY+Ojp0eXBlLAotICAgIC8vIERvbid0IHByb3ZpZGUgdGhlc2UsIHRoZXkgYXJlIG1vc3RseSB0byBhY3QgYXMgYWxpYXNlcyBiZWxvdy4KLSAgICB0eXBlbmFtZSBXcmFwcGVkVHJhaXRzVCA9IHN0ZDo6aXRlcmF0b3JfdHJhaXRzPFdyYXBwZWRJdGVyYXRvclQ+PgorICAgICAgICB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxXcmFwcGVkSXRlcmF0b3JUPjo6cmVmZXJlbmNlLCBUICY+Ojp0eXBlPgogY2xhc3MgaXRlcmF0b3JfYWRhcHRvcl9iYXNlCiAgICAgOiBwdWJsaWMgaXRlcmF0b3JfZmFjYWRlX2Jhc2U8RGVyaXZlZFQsIEl0ZXJhdG9yQ2F0ZWdvcnlULCBULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpZmZlcmVuY2VUeXBlVCwgUG9pbnRlclQsIFJlZmVyZW5jZVQ+IHsKQEAgLTMxMSw4ICszMDgsMTAgQEAKIHRlbXBsYXRlIDx0eXBlbmFtZSBXcmFwcGVkSXRlcmF0b3JULAogICAgICAgICAgIHR5cGVuYW1lIFQgPSBkZWNsdHlwZSgmKnN0ZDo6ZGVjbHZhbDxXcmFwcGVkSXRlcmF0b3JUPigpKT4KIGNsYXNzIHBvaW50ZXJfaXRlcmF0b3IKLSAgICA6IHB1YmxpYyBpdGVyYXRvcl9hZGFwdG9yX2Jhc2U8cG9pbnRlcl9pdGVyYXRvcjxXcmFwcGVkSXRlcmF0b3JULCBUPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JhcHBlZEl0ZXJhdG9yVCwgVD4geworICAgIDogcHVibGljIGl0ZXJhdG9yX2FkYXB0b3JfYmFzZTwKKyAgICAgICAgICBwb2ludGVyX2l0ZXJhdG9yPFdyYXBwZWRJdGVyYXRvclQsIFQ+LCBXcmFwcGVkSXRlcmF0b3JULAorICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPFdyYXBwZWRJdGVyYXRvclQ+OjppdGVyYXRvcl9jYXRlZ29yeSwKKyAgICAgICAgICBUPiB7CiAgIG11dGFibGUgVCBQdHI7CiAKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2l0ZXJhdG9yX3JhbmdlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FEVC9pdGVyYXRvcl9yYW5nZS5oCmluZGV4IDJiYTEyODYuLjc3NGM3YzQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL2l0ZXJhdG9yX3JhbmdlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvaXRlcmF0b3JfcmFuZ2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBpdGVyYXRvcl9yYW5nZS5oIC0gQSByYW5nZSBhZGFwdG9yIGZvciBpdGVyYXRvcnMgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQURUL3NpbXBsZV9pbGlzdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvc2ltcGxlX2lsaXN0LmgKaW5kZXggNGM3NTk4YS4uOTI1N2I0NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvc2ltcGxlX2lsaXN0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BRFQvc2ltcGxlX2lsaXN0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BRFQvc2ltcGxlX2lsaXN0LmggLSBTaW1wbGUgSW50cnVzaXZlIExpc3QgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0FsaWFzQW5hbHlzaXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQWxpYXNBbmFseXNpcy5oCmluZGV4IGJlMzQ5NmIuLjRlNTVmMDEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQWxpYXNBbmFseXNpcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQWxpYXNBbmFseXNpcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQW5hbHlzaXMvQWxpYXNBbmFseXNpcy5oIC0gQWxpYXMgQW5hbHlzaXMgSW50ZXJmYWNlIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00Myw3ICs0Miw2IEBACiAjaW5jbHVkZSAibGx2bS9BRFQvU21hbGxWZWN0b3IuaCIKICNpbmNsdWRlICJsbHZtL0FuYWx5c2lzL01lbW9yeUxvY2F0aW9uLmgiCiAjaW5jbHVkZSAibGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5oIgotI2luY2x1ZGUgImxsdm0vSVIvQ2FsbFNpdGUuaCIKICNpbmNsdWRlICJsbHZtL0lSL0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAibGx2bS9JUi9JbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgImxsdm0vSVIvSW5zdHJ1Y3Rpb25zLmgiCkBAIC0zMzUsOCArMzMzLDcgQEAKIAogICAvLy8gQSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCB0aGUgcHJpbWFyeSBcYyBhbGlhcyBpbnRlcmZhY2UuCiAgIEFsaWFzUmVzdWx0IGFsaWFzKGNvbnN0IFZhbHVlICpWMSwgY29uc3QgVmFsdWUgKlYyKSB7Ci0gICAgcmV0dXJuIGFsaWFzKFYxLCBNZW1vcnlMb2NhdGlvbjo6VW5rbm93blNpemUsIFYyLAotICAgICAgICAgICAgICAgICBNZW1vcnlMb2NhdGlvbjo6VW5rbm93blNpemUpOworICAgIHJldHVybiBhbGlhcyhWMSwgTG9jYXRpb25TaXplOjp1bmtub3duKCksIFYyLCBMb2NhdGlvblNpemU6OnVua25vd24oKSk7CiAgIH0KIAogICAvLy8gQSB0cml2aWFsIGhlbHBlciBmdW5jdGlvbiB0byBjaGVjayB0byBzZWUgaWYgdGhlIHNwZWNpZmllZCBwb2ludGVycyBhcmUKQEAgLTM2NCw3ICszNjEsOCBAQAogCiAgIC8vLyBBIGNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIHRoZSBcYyBpc011c3RBbGlhcyBoZWxwZXIgaW50ZXJmYWNlLgogICBib29sIGlzTXVzdEFsaWFzKGNvbnN0IFZhbHVlICpWMSwgY29uc3QgVmFsdWUgKlYyKSB7Ci0gICAgcmV0dXJuIGFsaWFzKFYxLCAxLCBWMiwgMSkgPT0gTXVzdEFsaWFzOworICAgIHJldHVybiBhbGlhcyhWMSwgTG9jYXRpb25TaXplOjpwcmVjaXNlKDEpLCBWMiwgTG9jYXRpb25TaXplOjpwcmVjaXNlKDEpKSA9PQorICAgICAgICAgICBNdXN0QWxpYXM7CiAgIH0KIAogICAvLy8gQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGxvY2F0aW9uIHBvaW50cyB0byBjb25zdGFudCBtZW1vcnksIG9yIGlmCkBAIC0zODIsMTUgKzM4MCwxNSBAQAogICAvLy8gXG5hbWUgU2ltcGxlIG1vZC9yZWYgaW5mb3JtYXRpb24KICAgLy8vIEB7CiAKLSAgLy8vIEdldCB0aGUgTW9kUmVmIGluZm8gYXNzb2NpYXRlZCB3aXRoIGEgcG9pbnRlciBhcmd1bWVudCBvZiBhIGNhbGxzaXRlLiBUaGUKKyAgLy8vIEdldCB0aGUgTW9kUmVmIGluZm8gYXNzb2NpYXRlZCB3aXRoIGEgcG9pbnRlciBhcmd1bWVudCBvZiBhIGNhbGwuIFRoZQogICAvLy8gcmVzdWx0J3MgYml0cyBhcmUgc2V0IHRvIGluZGljYXRlIHRoZSBhbGxvd2VkIGFsaWFzaW5nIE1vZFJlZiBraW5kcy4gTm90ZQogICAvLy8gdGhhdCB0aGVzZSBiaXRzIGRvIG5vdCBuZWNlc3NhcmlseSBhY2NvdW50IGZvciB0aGUgb3ZlcmFsbCBiZWhhdmlvciBvZgogICAvLy8gdGhlIGZ1bmN0aW9uLCBidXQgcmF0aGVyIG9ubHkgcHJvdmlkZSBhZGRpdGlvbmFsIHBlci1hcmd1bWVudAogICAvLy8gaW5mb3JtYXRpb24uIFRoaXMgbmV2ZXIgc2V0cyBNb2RSZWZJbmZvOjpNdXN0LgotICBNb2RSZWZJbmZvIGdldEFyZ01vZFJlZkluZm8oSW1tdXRhYmxlQ2FsbFNpdGUgQ1MsIHVuc2lnbmVkIEFyZ0lkeCk7CisgIE1vZFJlZkluZm8gZ2V0QXJnTW9kUmVmSW5mbyhjb25zdCBDYWxsQmFzZSAqQ2FsbCwgdW5zaWduZWQgQXJnSWR4KTsKIAogICAvLy8gUmV0dXJuIHRoZSBiZWhhdmlvciBvZiB0aGUgZ2l2ZW4gY2FsbCBzaXRlLgotICBGdW5jdGlvbk1vZFJlZkJlaGF2aW9yIGdldE1vZFJlZkJlaGF2aW9yKEltbXV0YWJsZUNhbGxTaXRlIENTKTsKKyAgRnVuY3Rpb25Nb2RSZWZCZWhhdmlvciBnZXRNb2RSZWZCZWhhdmlvcihjb25zdCBDYWxsQmFzZSAqQ2FsbCk7CiAKICAgLy8vIFJldHVybiB0aGUgYmVoYXZpb3Igd2hlbiBjYWxsaW5nIHRoZSBnaXZlbiBmdW5jdGlvbi4KICAgRnVuY3Rpb25Nb2RSZWZCZWhhdmlvciBnZXRNb2RSZWZCZWhhdmlvcihjb25zdCBGdW5jdGlvbiAqRik7CkBAIC00MDYsOCArNDA0LDggQEAKICAgLy8vIHByb3BlcnR5IChlLmcuIGNhbGxzIHRvICdzaW4nIGFuZCAnY29zJykuCiAgIC8vLwogICAvLy8gVGhpcyBwcm9wZXJ0eSBjb3JyZXNwb25kcyB0byB0aGUgR0NDICdjb25zdCcgYXR0cmlidXRlLgotICBib29sIGRvZXNOb3RBY2Nlc3NNZW1vcnkoSW1tdXRhYmxlQ2FsbFNpdGUgQ1MpIHsKLSAgICByZXR1cm4gZ2V0TW9kUmVmQmVoYXZpb3IoQ1MpID09IEZNUkJfRG9lc05vdEFjY2Vzc01lbW9yeTsKKyAgYm9vbCBkb2VzTm90QWNjZXNzTWVtb3J5KGNvbnN0IENhbGxCYXNlICpDYWxsKSB7CisgICAgcmV0dXJuIGdldE1vZFJlZkJlaGF2aW9yKENhbGwpID09IEZNUkJfRG9lc05vdEFjY2Vzc01lbW9yeTsKICAgfQogCiAgIC8vLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBmdW5jdGlvbiBpcyBrbm93biB0byBuZXZlciByZWFkIG9yIHdyaXRlIG1lbW9yeS4KQEAgLTQzNCw4ICs0MzIsOCBAQAogICAvLy8gYWJzZW5jZSBvZiBpbnRlcmZlcmluZyBzdG9yZSBpbnN0cnVjdGlvbnMsIHN1Y2ggYXMgQ1NFIG9mIHN0cmxlbiBjYWxscy4KICAgLy8vCiAgIC8vLyBUaGlzIHByb3BlcnR5IGNvcnJlc3BvbmRzIHRvIHRoZSBHQ0MgJ3B1cmUnIGF0dHJpYnV0ZS4KLSAgYm9vbCBvbmx5UmVhZHNNZW1vcnkoSW1tdXRhYmxlQ2FsbFNpdGUgQ1MpIHsKLSAgICByZXR1cm4gb25seVJlYWRzTWVtb3J5KGdldE1vZFJlZkJlaGF2aW9yKENTKSk7CisgIGJvb2wgb25seVJlYWRzTWVtb3J5KGNvbnN0IENhbGxCYXNlICpDYWxsKSB7CisgICAgcmV0dXJuIG9ubHlSZWFkc01lbW9yeShnZXRNb2RSZWZCZWhhdmlvcihDYWxsKSk7CiAgIH0KIAogICAvLy8gQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gaXMga25vd24gdG8gb25seSByZWFkIGZyb20gbm9uLXZvbGF0aWxlCkBAIC01MDAsMzYgKzQ5OCwxMiBAQAogCiAgIC8vLyBnZXRNb2RSZWZJbmZvIChmb3IgY2FsbCBzaXRlcykgLSBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgd2hldGhlcgogICAvLy8gYSBwYXJ0aWN1bGFyIGNhbGwgc2l0ZSBtb2RpZmllcyBvciByZWFkcyB0aGUgc3BlY2lmaWVkIG1lbW9yeSBsb2NhdGlvbi4KLSAgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKEltbXV0YWJsZUNhbGxTaXRlIENTLCBjb25zdCBNZW1vcnlMb2NhdGlvbiAmTG9jKTsKKyAgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKGNvbnN0IENhbGxCYXNlICpDYWxsLCBjb25zdCBNZW1vcnlMb2NhdGlvbiAmTG9jKTsKIAogICAvLy8gZ2V0TW9kUmVmSW5mbyAoZm9yIGNhbGwgc2l0ZXMpIC0gQSBjb252ZW5pZW5jZSB3cmFwcGVyLgotICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oSW1tdXRhYmxlQ2FsbFNpdGUgQ1MsIGNvbnN0IFZhbHVlICpQLAorICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oY29uc3QgQ2FsbEJhc2UgKkNhbGwsIGNvbnN0IFZhbHVlICpQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb25TaXplIFNpemUpIHsKLSAgICByZXR1cm4gZ2V0TW9kUmVmSW5mbyhDUywgTWVtb3J5TG9jYXRpb24oUCwgU2l6ZSkpOwotICB9Ci0KLSAgLy8vIGdldE1vZFJlZkluZm8gKGZvciBjYWxscykgLSBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgd2hldGhlcgotICAvLy8gYSBwYXJ0aWN1bGFyIGNhbGwgbW9kaWZpZXMgb3IgcmVhZHMgdGhlIHNwZWNpZmllZCBtZW1vcnkgbG9jYXRpb24uCi0gIE1vZFJlZkluZm8gZ2V0TW9kUmVmSW5mbyhjb25zdCBDYWxsSW5zdCAqQywgY29uc3QgTWVtb3J5TG9jYXRpb24gJkxvYykgewotICAgIHJldHVybiBnZXRNb2RSZWZJbmZvKEltbXV0YWJsZUNhbGxTaXRlKEMpLCBMb2MpOwotICB9Ci0KLSAgLy8vIGdldE1vZFJlZkluZm8gKGZvciBjYWxscykgLSBBIGNvbnZlbmllbmNlIHdyYXBwZXIuCi0gIE1vZFJlZkluZm8gZ2V0TW9kUmVmSW5mbyhjb25zdCBDYWxsSW5zdCAqQywgY29uc3QgVmFsdWUgKlAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvblNpemUgU2l6ZSkgewotICAgIHJldHVybiBnZXRNb2RSZWZJbmZvKEMsIE1lbW9yeUxvY2F0aW9uKFAsIFNpemUpKTsKLSAgfQotCi0gIC8vLyBnZXRNb2RSZWZJbmZvIChmb3IgaW52b2tlcykgLSBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgd2hldGhlcgotICAvLy8gYSBwYXJ0aWN1bGFyIGludm9rZSBtb2RpZmllcyBvciByZWFkcyB0aGUgc3BlY2lmaWVkIG1lbW9yeSBsb2NhdGlvbi4KLSAgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKGNvbnN0IEludm9rZUluc3QgKkksIGNvbnN0IE1lbW9yeUxvY2F0aW9uICZMb2MpIHsKLSAgICByZXR1cm4gZ2V0TW9kUmVmSW5mbyhJbW11dGFibGVDYWxsU2l0ZShJKSwgTG9jKTsKLSAgfQotCi0gIC8vLyBnZXRNb2RSZWZJbmZvIChmb3IgaW52b2tlcykgLSBBIGNvbnZlbmllbmNlIHdyYXBwZXIuCi0gIE1vZFJlZkluZm8gZ2V0TW9kUmVmSW5mbyhjb25zdCBJbnZva2VJbnN0ICpJLCBjb25zdCBWYWx1ZSAqUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9uU2l6ZSBTaXplKSB7Ci0gICAgcmV0dXJuIGdldE1vZFJlZkluZm8oSSwgTWVtb3J5TG9jYXRpb24oUCwgU2l6ZSkpOworICAgIHJldHVybiBnZXRNb2RSZWZJbmZvKENhbGwsIE1lbW9yeUxvY2F0aW9uKFAsIFNpemUpKTsKICAgfQogCiAgIC8vLyBnZXRNb2RSZWZJbmZvIChmb3IgbG9hZHMpIC0gUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHdoZXRoZXIKQEAgLTU2OSw3ICs1NDMsNyBAQAogCiAgIC8vLyBnZXRNb2RSZWZJbmZvIChmb3IgY21weGNoZ2VzKSAtIEEgY29udmVuaWVuY2Ugd3JhcHBlci4KICAgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKGNvbnN0IEF0b21pY0NtcFhjaGdJbnN0ICpDWCwgY29uc3QgVmFsdWUgKlAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBTaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvblNpemUgU2l6ZSkgewogICAgIHJldHVybiBnZXRNb2RSZWZJbmZvKENYLCBNZW1vcnlMb2NhdGlvbihQLCBTaXplKSk7CiAgIH0KIApAQCAtNTc5LDcgKzU1Myw3IEBACiAKICAgLy8vIGdldE1vZFJlZkluZm8gKGZvciBhdG9taWNybXdzKSAtIEEgY29udmVuaWVuY2Ugd3JhcHBlci4KICAgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKGNvbnN0IEF0b21pY1JNV0luc3QgKlJNVywgY29uc3QgVmFsdWUgKlAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBTaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvblNpemUgU2l6ZSkgewogICAgIHJldHVybiBnZXRNb2RSZWZJbmZvKFJNVywgTWVtb3J5TG9jYXRpb24oUCwgU2l6ZSkpOwogICB9CiAKQEAgLTYyNiw4ICs2MDAsOCBAQAogICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oY29uc3QgSW5zdHJ1Y3Rpb24gKkksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPcHRpb25hbDxNZW1vcnlMb2NhdGlvbj4gJk9wdExvYykgewogICAgIGlmIChPcHRMb2MgPT0gTm9uZSkgewotICAgICAgaWYgKGF1dG8gQ1MgPSBJbW11dGFibGVDYWxsU2l0ZShJKSkgewotICAgICAgICByZXR1cm4gY3JlYXRlTW9kUmVmSW5mbyhnZXRNb2RSZWZCZWhhdmlvcihDUykpOworICAgICAgaWYgKGNvbnN0IGF1dG8gKkNhbGwgPSBkeW5fY2FzdDxDYWxsQmFzZT4oSSkpIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU1vZFJlZkluZm8oZ2V0TW9kUmVmQmVoYXZpb3IoQ2FsbCkpOwogICAgICAgfQogICAgIH0KIApAQCAtNjYxLDEyICs2MzUsMTIgQEAKIAogICAvLy8gUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHdoZXRoZXIgYSBjYWxsIGFuZCBhbiBpbnN0cnVjdGlvbiBtYXkgcmVmZXIgdG8KICAgLy8vIHRoZSBzYW1lIG1lbW9yeSBsb2NhdGlvbnMuCi0gIE1vZFJlZkluZm8gZ2V0TW9kUmVmSW5mbyhJbnN0cnVjdGlvbiAqSSwgSW1tdXRhYmxlQ2FsbFNpdGUgQ2FsbCk7CisgIE1vZFJlZkluZm8gZ2V0TW9kUmVmSW5mbyhJbnN0cnVjdGlvbiAqSSwgY29uc3QgQ2FsbEJhc2UgKkNhbGwpOwogCiAgIC8vLyBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgd2hldGhlciB0d28gY2FsbCBzaXRlcyBtYXkgcmVmZXIgdG8gdGhlIHNhbWUgc2V0CiAgIC8vLyBvZiBtZW1vcnkgbG9jYXRpb25zLiBTZWUgdGhlIEFBIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHM6CiAgIC8vLyAgIGh0dHA6Ly9sbHZtLm9yZy9kb2NzL0FsaWFzQW5hbHlzaXMuaHRtbCNNb2RSZWZJbmZvCi0gIE1vZFJlZkluZm8gZ2V0TW9kUmVmSW5mbyhJbW11dGFibGVDYWxsU2l0ZSBDUzEsIEltbXV0YWJsZUNhbGxTaXRlIENTMik7CisgIE1vZFJlZkluZm8gZ2V0TW9kUmVmSW5mbyhjb25zdCBDYWxsQmFzZSAqQ2FsbDEsIGNvbnN0IENhbGxCYXNlICpDYWxsMik7CiAKICAgLy8vIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB3aGV0aGVyIGEgcGFydGljdWxhciBjYWxsIHNpdGUgbW9kaWZpZXMKICAgLy8vIG9yIHJlYWRzIHRoZSBzcGVjaWZpZWQgbWVtb3J5IGxvY2F0aW9uIFxwIE1lbUxvYyBiZWZvcmUgaW5zdHJ1Y3Rpb24gXHAgSQpAQCAtNzc3LDI1ICs3NTEsMjUgQEAKICAgLy8vIHRoYXQgdGhlc2UgYml0cyBkbyBub3QgbmVjZXNzYXJpbHkgYWNjb3VudCBmb3IgdGhlIG92ZXJhbGwgYmVoYXZpb3Igb2YKICAgLy8vIHRoZSBmdW5jdGlvbiwgYnV0IHJhdGhlciBvbmx5IHByb3ZpZGUgYWRkaXRpb25hbCBwZXItYXJndW1lbnQKICAgLy8vIGluZm9ybWF0aW9uLgotICB2aXJ0dWFsIE1vZFJlZkluZm8gZ2V0QXJnTW9kUmVmSW5mbyhJbW11dGFibGVDYWxsU2l0ZSBDUywKKyAgdmlydHVhbCBNb2RSZWZJbmZvIGdldEFyZ01vZFJlZkluZm8oY29uc3QgQ2FsbEJhc2UgKkNhbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEFyZ0lkeCkgPSAwOwogCiAgIC8vLyBSZXR1cm4gdGhlIGJlaGF2aW9yIG9mIHRoZSBnaXZlbiBjYWxsIHNpdGUuCi0gIHZpcnR1YWwgRnVuY3Rpb25Nb2RSZWZCZWhhdmlvciBnZXRNb2RSZWZCZWhhdmlvcihJbW11dGFibGVDYWxsU2l0ZSBDUykgPSAwOworICB2aXJ0dWFsIEZ1bmN0aW9uTW9kUmVmQmVoYXZpb3IgZ2V0TW9kUmVmQmVoYXZpb3IoY29uc3QgQ2FsbEJhc2UgKkNhbGwpID0gMDsKIAogICAvLy8gUmV0dXJuIHRoZSBiZWhhdmlvciB3aGVuIGNhbGxpbmcgdGhlIGdpdmVuIGZ1bmN0aW9uLgogICB2aXJ0dWFsIEZ1bmN0aW9uTW9kUmVmQmVoYXZpb3IgZ2V0TW9kUmVmQmVoYXZpb3IoY29uc3QgRnVuY3Rpb24gKkYpID0gMDsKIAogICAvLy8gZ2V0TW9kUmVmSW5mbyAoZm9yIGNhbGwgc2l0ZXMpIC0gUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHdoZXRoZXIKICAgLy8vIGEgcGFydGljdWxhciBjYWxsIHNpdGUgbW9kaWZpZXMgb3IgcmVhZHMgdGhlIHNwZWNpZmllZCBtZW1vcnkgbG9jYXRpb24uCi0gIHZpcnR1YWwgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKEltbXV0YWJsZUNhbGxTaXRlIENTLAorICB2aXJ0dWFsIE1vZFJlZkluZm8gZ2V0TW9kUmVmSW5mbyhjb25zdCBDYWxsQmFzZSAqQ2FsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVtb3J5TG9jYXRpb24gJkxvYykgPSAwOwogCiAgIC8vLyBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgd2hldGhlciB0d28gY2FsbCBzaXRlcyBtYXkgcmVmZXIgdG8gdGhlIHNhbWUgc2V0CiAgIC8vLyBvZiBtZW1vcnkgbG9jYXRpb25zLiBTZWUgdGhlIEFBIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHM6CiAgIC8vLyAgIGh0dHA6Ly9sbHZtLm9yZy9kb2NzL0FsaWFzQW5hbHlzaXMuaHRtbCNNb2RSZWZJbmZvCi0gIHZpcnR1YWwgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKEltbXV0YWJsZUNhbGxTaXRlIENTMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1tdXRhYmxlQ2FsbFNpdGUgQ1MyKSA9IDA7CisgIHZpcnR1YWwgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKGNvbnN0IENhbGxCYXNlICpDYWxsMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FsbEJhc2UgKkNhbGwyKSA9IDA7CiAKICAgLy8vIEB9CiB9OwpAQCAtODI3LDI2ICs4MDEsMjYgQEAKICAgICByZXR1cm4gUmVzdWx0LnBvaW50c1RvQ29uc3RhbnRNZW1vcnkoTG9jLCBPckxvY2FsKTsKICAgfQogCi0gIE1vZFJlZkluZm8gZ2V0QXJnTW9kUmVmSW5mbyhJbW11dGFibGVDYWxsU2l0ZSBDUywgdW5zaWduZWQgQXJnSWR4KSBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIFJlc3VsdC5nZXRBcmdNb2RSZWZJbmZvKENTLCBBcmdJZHgpOworICBNb2RSZWZJbmZvIGdldEFyZ01vZFJlZkluZm8oY29uc3QgQ2FsbEJhc2UgKkNhbGwsIHVuc2lnbmVkIEFyZ0lkeCkgb3ZlcnJpZGUgeworICAgIHJldHVybiBSZXN1bHQuZ2V0QXJnTW9kUmVmSW5mbyhDYWxsLCBBcmdJZHgpOwogICB9CiAKLSAgRnVuY3Rpb25Nb2RSZWZCZWhhdmlvciBnZXRNb2RSZWZCZWhhdmlvcihJbW11dGFibGVDYWxsU2l0ZSBDUykgb3ZlcnJpZGUgewotICAgIHJldHVybiBSZXN1bHQuZ2V0TW9kUmVmQmVoYXZpb3IoQ1MpOworICBGdW5jdGlvbk1vZFJlZkJlaGF2aW9yIGdldE1vZFJlZkJlaGF2aW9yKGNvbnN0IENhbGxCYXNlICpDYWxsKSBvdmVycmlkZSB7CisgICAgcmV0dXJuIFJlc3VsdC5nZXRNb2RSZWZCZWhhdmlvcihDYWxsKTsKICAgfQogCiAgIEZ1bmN0aW9uTW9kUmVmQmVoYXZpb3IgZ2V0TW9kUmVmQmVoYXZpb3IoY29uc3QgRnVuY3Rpb24gKkYpIG92ZXJyaWRlIHsKICAgICByZXR1cm4gUmVzdWx0LmdldE1vZFJlZkJlaGF2aW9yKEYpOwogICB9CiAKLSAgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKEltbXV0YWJsZUNhbGxTaXRlIENTLAorICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oY29uc3QgQ2FsbEJhc2UgKkNhbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNZW1vcnlMb2NhdGlvbiAmTG9jKSBvdmVycmlkZSB7Ci0gICAgcmV0dXJuIFJlc3VsdC5nZXRNb2RSZWZJbmZvKENTLCBMb2MpOworICAgIHJldHVybiBSZXN1bHQuZ2V0TW9kUmVmSW5mbyhDYWxsLCBMb2MpOwogICB9CiAKLSAgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKEltbXV0YWJsZUNhbGxTaXRlIENTMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEltbXV0YWJsZUNhbGxTaXRlIENTMikgb3ZlcnJpZGUgewotICAgIHJldHVybiBSZXN1bHQuZ2V0TW9kUmVmSW5mbyhDUzEsIENTMik7CisgIE1vZFJlZkluZm8gZ2V0TW9kUmVmSW5mbyhjb25zdCBDYWxsQmFzZSAqQ2FsbDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYWxsQmFzZSAqQ2FsbDIpIG92ZXJyaWRlIHsKKyAgICByZXR1cm4gUmVzdWx0LmdldE1vZFJlZkluZm8oQ2FsbDEsIENhbGwyKTsKICAgfQogfTsKIApAQCAtOTAxLDI1ICs4NzUsMjggQEAKICAgICAgICAgICAgICAgICAgOiBDdXJyZW50UmVzdWx0LnBvaW50c1RvQ29uc3RhbnRNZW1vcnkoTG9jLCBPckxvY2FsKTsKICAgICB9CiAKLSAgICBNb2RSZWZJbmZvIGdldEFyZ01vZFJlZkluZm8oSW1tdXRhYmxlQ2FsbFNpdGUgQ1MsIHVuc2lnbmVkIEFyZ0lkeCkgewotICAgICAgcmV0dXJuIEFBUiA/IEFBUi0+Z2V0QXJnTW9kUmVmSW5mbyhDUywgQXJnSWR4KSA6IEN1cnJlbnRSZXN1bHQuZ2V0QXJnTW9kUmVmSW5mbyhDUywgQXJnSWR4KTsKKyAgICBNb2RSZWZJbmZvIGdldEFyZ01vZFJlZkluZm8oY29uc3QgQ2FsbEJhc2UgKkNhbGwsIHVuc2lnbmVkIEFyZ0lkeCkgeworICAgICAgcmV0dXJuIEFBUiA/IEFBUi0+Z2V0QXJnTW9kUmVmSW5mbyhDYWxsLCBBcmdJZHgpCisgICAgICAgICAgICAgICAgIDogQ3VycmVudFJlc3VsdC5nZXRBcmdNb2RSZWZJbmZvKENhbGwsIEFyZ0lkeCk7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Nb2RSZWZCZWhhdmlvciBnZXRNb2RSZWZCZWhhdmlvcihJbW11dGFibGVDYWxsU2l0ZSBDUykgewotICAgICAgcmV0dXJuIEFBUiA/IEFBUi0+Z2V0TW9kUmVmQmVoYXZpb3IoQ1MpIDogQ3VycmVudFJlc3VsdC5nZXRNb2RSZWZCZWhhdmlvcihDUyk7CisgICAgRnVuY3Rpb25Nb2RSZWZCZWhhdmlvciBnZXRNb2RSZWZCZWhhdmlvcihjb25zdCBDYWxsQmFzZSAqQ2FsbCkgeworICAgICAgcmV0dXJuIEFBUiA/IEFBUi0+Z2V0TW9kUmVmQmVoYXZpb3IoQ2FsbCkKKyAgICAgICAgICAgICAgICAgOiBDdXJyZW50UmVzdWx0LmdldE1vZFJlZkJlaGF2aW9yKENhbGwpOwogICAgIH0KIAogICAgIEZ1bmN0aW9uTW9kUmVmQmVoYXZpb3IgZ2V0TW9kUmVmQmVoYXZpb3IoY29uc3QgRnVuY3Rpb24gKkYpIHsKICAgICAgIHJldHVybiBBQVIgPyBBQVItPmdldE1vZFJlZkJlaGF2aW9yKEYpIDogQ3VycmVudFJlc3VsdC5nZXRNb2RSZWZCZWhhdmlvcihGKTsKICAgICB9CiAKLSAgICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oSW1tdXRhYmxlQ2FsbFNpdGUgQ1MsIGNvbnN0IE1lbW9yeUxvY2F0aW9uICZMb2MpIHsKLSAgICAgIHJldHVybiBBQVIgPyBBQVItPmdldE1vZFJlZkluZm8oQ1MsIExvYykKLSAgICAgICAgICAgICAgICAgOiBDdXJyZW50UmVzdWx0LmdldE1vZFJlZkluZm8oQ1MsIExvYyk7CisgICAgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKGNvbnN0IENhbGxCYXNlICpDYWxsLCBjb25zdCBNZW1vcnlMb2NhdGlvbiAmTG9jKSB7CisgICAgICByZXR1cm4gQUFSID8gQUFSLT5nZXRNb2RSZWZJbmZvKENhbGwsIExvYykKKyAgICAgICAgICAgICAgICAgOiBDdXJyZW50UmVzdWx0LmdldE1vZFJlZkluZm8oQ2FsbCwgTG9jKTsKICAgICB9CiAKLSAgICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oSW1tdXRhYmxlQ2FsbFNpdGUgQ1MxLCBJbW11dGFibGVDYWxsU2l0ZSBDUzIpIHsKLSAgICAgIHJldHVybiBBQVIgPyBBQVItPmdldE1vZFJlZkluZm8oQ1MxLCBDUzIpIDogQ3VycmVudFJlc3VsdC5nZXRNb2RSZWZJbmZvKENTMSwgQ1MyKTsKKyAgICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oY29uc3QgQ2FsbEJhc2UgKkNhbGwxLCBjb25zdCBDYWxsQmFzZSAqQ2FsbDIpIHsKKyAgICAgIHJldHVybiBBQVIgPyBBQVItPmdldE1vZFJlZkluZm8oQ2FsbDEsIENhbGwyKQorICAgICAgICAgICAgICAgICA6IEN1cnJlbnRSZXN1bHQuZ2V0TW9kUmVmSW5mbyhDYWxsMSwgQ2FsbDIpOwogICAgIH0KICAgfTsKIApAQCAtOTUxLDExICs5MjgsMTEgQEAKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAotICBNb2RSZWZJbmZvIGdldEFyZ01vZFJlZkluZm8oSW1tdXRhYmxlQ2FsbFNpdGUgQ1MsIHVuc2lnbmVkIEFyZ0lkeCkgeworICBNb2RSZWZJbmZvIGdldEFyZ01vZFJlZkluZm8oY29uc3QgQ2FsbEJhc2UgKkNhbGwsIHVuc2lnbmVkIEFyZ0lkeCkgewogICAgIHJldHVybiBNb2RSZWZJbmZvOjpNb2RSZWY7CiAgIH0KIAotICBGdW5jdGlvbk1vZFJlZkJlaGF2aW9yIGdldE1vZFJlZkJlaGF2aW9yKEltbXV0YWJsZUNhbGxTaXRlIENTKSB7CisgIEZ1bmN0aW9uTW9kUmVmQmVoYXZpb3IgZ2V0TW9kUmVmQmVoYXZpb3IoY29uc3QgQ2FsbEJhc2UgKkNhbGwpIHsKICAgICByZXR1cm4gRk1SQl9Vbmtub3duTW9kUmVmQmVoYXZpb3I7CiAgIH0KIApAQCAtOTYzLDExICs5NDAsMTEgQEAKICAgICByZXR1cm4gRk1SQl9Vbmtub3duTW9kUmVmQmVoYXZpb3I7CiAgIH0KIAotICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oSW1tdXRhYmxlQ2FsbFNpdGUgQ1MsIGNvbnN0IE1lbW9yeUxvY2F0aW9uICZMb2MpIHsKKyAgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKGNvbnN0IENhbGxCYXNlICpDYWxsLCBjb25zdCBNZW1vcnlMb2NhdGlvbiAmTG9jKSB7CiAgICAgcmV0dXJuIE1vZFJlZkluZm86Ok1vZFJlZjsKICAgfQogCi0gIE1vZFJlZkluZm8gZ2V0TW9kUmVmSW5mbyhJbW11dGFibGVDYWxsU2l0ZSBDUzEsIEltbXV0YWJsZUNhbGxTaXRlIENTMikgeworICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oY29uc3QgQ2FsbEJhc2UgKkNhbGwxLCBjb25zdCBDYWxsQmFzZSAqQ2FsbDIpIHsKICAgICByZXR1cm4gTW9kUmVmSW5mbzo6TW9kUmVmOwogICB9CiB9OwpAQCAtMTA3NSw2ICsxMDUyLDI5IEBACiAgIHZvaWQgZ2V0QW5hbHlzaXNVc2FnZShBbmFseXNpc1VzYWdlICZBVSkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCisvLy8gQSB3cmFwcGVyIHBhc3MgZm9yIGV4dGVybmFsIGFsaWFzIGFuYWx5c2VzLiBUaGlzIGp1c3Qgc3F1aXJyZWxzIGF3YXkgdGhlCisvLy8gY2FsbGJhY2sgdXNlZCB0byBydW4gYW55IGFuYWx5c2VzIGFuZCByZWdpc3RlciB0aGVpciByZXN1bHRzLgorc3RydWN0IEV4dGVybmFsQUFXcmFwcGVyUGFzcyA6IEltbXV0YWJsZVBhc3MgeworICB1c2luZyBDYWxsYmFja1QgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzcyAmLCBGdW5jdGlvbiAmLCBBQVJlc3VsdHMgJik+OworCisgIENhbGxiYWNrVCBDQjsKKworICBzdGF0aWMgY2hhciBJRDsKKworICBFeHRlcm5hbEFBV3JhcHBlclBhc3MoKSA6IEltbXV0YWJsZVBhc3MoSUQpIHsKKyAgICBpbml0aWFsaXplRXh0ZXJuYWxBQVdyYXBwZXJQYXNzUGFzcygqUGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVnaXN0cnkoKSk7CisgIH0KKworICBleHBsaWNpdCBFeHRlcm5hbEFBV3JhcHBlclBhc3MoQ2FsbGJhY2tUIENCKQorICAgICAgOiBJbW11dGFibGVQYXNzKElEKSwgQ0Ioc3RkOjptb3ZlKENCKSkgeworICAgIGluaXRpYWxpemVFeHRlcm5hbEFBV3JhcHBlclBhc3NQYXNzKCpQYXNzUmVnaXN0cnk6OmdldFBhc3NSZWdpc3RyeSgpKTsKKyAgfQorCisgIHZvaWQgZ2V0QW5hbHlzaXNVc2FnZShBbmFseXNpc1VzYWdlICZBVSkgY29uc3Qgb3ZlcnJpZGUgeworICAgIEFVLnNldFByZXNlcnZlc0FsbCgpOworICB9Cit9OworCiBGdW5jdGlvblBhc3MgKmNyZWF0ZUFBUmVzdWx0c1dyYXBwZXJQYXNzKCk7CiAKIC8vLyBBIHdyYXBwZXIgcGFzcyBhcm91bmQgYSBjYWxsYmFjayB3aGljaCBjYW4gYmUgdXNlZCB0byBwb3B1bGF0ZSB0aGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQWxpYXNBbmFseXNpc0V2YWx1YXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9BbGlhc0FuYWx5c2lzRXZhbHVhdG9yLmgKaW5kZXggMDk0MTgxNC4uOTcyZWNlYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9BbGlhc0FuYWx5c2lzRXZhbHVhdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9BbGlhc0FuYWx5c2lzRXZhbHVhdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQWxpYXNBbmFseXNpc0V2YWx1YXRvci5oIC0gQWxpYXMgQW5hbHlzaXMgQWNjdXJhY3kgRXZhbHVhdG9yIC0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0FsaWFzU2V0VHJhY2tlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9BbGlhc1NldFRyYWNrZXIuaAppbmRleCBjZjQ5ODFkLi4zNGE1MDliIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0FsaWFzU2V0VHJhY2tlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQWxpYXNTZXRUcmFja2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BbmFseXNpcy9BbGlhc1NldFRyYWNrZXIuaCAtIEJ1aWxkIEFsaWFzIFNldHMgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTM3LDYgKzM2LDggQEAKIGNsYXNzIEFsaWFzU2V0VHJhY2tlcjsKIGNsYXNzIEJhc2ljQmxvY2s7CiBjbGFzcyBMb2FkSW5zdDsKK2NsYXNzIExvb3A7CitjbGFzcyBNZW1vcnlTU0E7CiBjbGFzcyBBbnlNZW1TZXRJbnN0OwogY2xhc3MgQW55TWVtVHJhbnNmZXJJbnN0OwogY2xhc3MgcmF3X29zdHJlYW07CkBAIC0yOTQsNyArMjk1LDggQEAKICAgdm9pZCByZW1vdmVGcm9tVHJhY2tlcihBbGlhc1NldFRyYWNrZXIgJkFTVCk7CiAKICAgdm9pZCBhZGRQb2ludGVyKEFsaWFzU2V0VHJhY2tlciAmQVNULCBQb2ludGVyUmVjICZFbnRyeSwgTG9jYXRpb25TaXplIFNpemUsCi0gICAgICAgICAgICAgICAgICBjb25zdCBBQU1ETm9kZXMgJkFBSW5mbywgYm9vbCBLbm93bk11c3RBbGlhcyA9IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgIGNvbnN0IEFBTUROb2RlcyAmQUFJbmZvLCBib29sIEtub3duTXVzdEFsaWFzID0gZmFsc2UsCisgICAgICAgICAgICAgICAgICBib29sIFNraXBTaXplVXBkYXRlID0gZmFsc2UpOwogICB2b2lkIGFkZFVua25vd25JbnN0KEluc3RydWN0aW9uICpJLCBBbGlhc0FuYWx5c2lzICZBQSk7CiAKICAgdm9pZCByZW1vdmVVbmtub3duSW5zdChBbGlhc1NldFRyYWNrZXIgJkFTVCwgSW5zdHJ1Y3Rpb24gKkkpIHsKQEAgLTMxMCwxMCArMzEyLDEwIEBACiAgIH0KIAogcHVibGljOgotICAvLy8gUmV0dXJuIHRydWUgaWYgdGhlIHNwZWNpZmllZCBwb2ludGVyICJtYXkiIChvciBtdXN0KSBhbGlhcyBvbmUgb2YgdGhlCi0gIC8vLyBtZW1iZXJzIGluIHRoZSBzZXQuCi0gIGJvb2wgYWxpYXNlc1BvaW50ZXIoY29uc3QgVmFsdWUgKlB0ciwgTG9jYXRpb25TaXplIFNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgQUFNRE5vZGVzICZBQUluZm8sIEFsaWFzQW5hbHlzaXMgJkFBKSBjb25zdDsKKyAgLy8vIElmIHRoZSBzcGVjaWZpZWQgcG9pbnRlciAibWF5IiAob3IgbXVzdCkgYWxpYXMgb25lIG9mIHRoZSBtZW1iZXJzIGluIHRoZQorICAvLy8gc2V0IHJldHVybiB0aGUgYXBwcm9wcmlhdGUgQWxpYXNSZXN1bHQuIE90aGVyd2lzZSByZXR1cm4gTm9BbGlhcy4KKyAgQWxpYXNSZXN1bHQgYWxpYXNlc1BvaW50ZXIoY29uc3QgVmFsdWUgKlB0ciwgTG9jYXRpb25TaXplIFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFBTUROb2RlcyAmQUFJbmZvLCBBbGlhc0FuYWx5c2lzICZBQSkgY29uc3Q7CiAgIGJvb2wgYWxpYXNlc1Vua25vd25JbnN0KGNvbnN0IEluc3RydWN0aW9uICpJbnN0LCBBbGlhc0FuYWx5c2lzICZBQSkgY29uc3Q7CiB9OwogCkBAIC0zNDEsNiArMzQzLDggQEAKICAgc3RydWN0IEFTVENhbGxiYWNrVkhEZW5zZU1hcEluZm8gOiBwdWJsaWMgRGVuc2VNYXBJbmZvPFZhbHVlICo+IHt9OwogCiAgIEFsaWFzQW5hbHlzaXMgJkFBOworICBNZW1vcnlTU0EgKk1TU0E7CisgIExvb3AgKkw7CiAgIGlsaXN0PEFsaWFzU2V0PiBBbGlhc1NldHM7CiAKICAgdXNpbmcgUG9pbnRlck1hcFR5cGUgPSBEZW5zZU1hcDxBU1RDYWxsYmFja1ZILCBBbGlhc1NldDo6UG9pbnRlclJlYyAqLApAQCAtMzUzLDYgKzM1Nyw4IEBACiAgIC8vLyBDcmVhdGUgYW4gZW1wdHkgY29sbGVjdGlvbiBvZiBBbGlhc1NldHMsIGFuZCB1c2UgdGhlIHNwZWNpZmllZCBhbGlhcwogICAvLy8gYW5hbHlzaXMgb2JqZWN0IHRvIGRpc2FtYmlndWF0ZSBsb2FkIGFuZCBzdG9yZSBhZGRyZXNzZXMuCiAgIGV4cGxpY2l0IEFsaWFzU2V0VHJhY2tlcihBbGlhc0FuYWx5c2lzICZhYSkgOiBBQShhYSkge30KKyAgZXhwbGljaXQgQWxpYXNTZXRUcmFja2VyKEFsaWFzQW5hbHlzaXMgJmFhLCBNZW1vcnlTU0EgKm1zc2EsIExvb3AgKmwpCisgICAgICA6IEFBKGFhKSwgTVNTQShtc3NhKSwgTChsKSB7fQogICB+QWxpYXNTZXRUcmFja2VyKCkgeyBjbGVhcigpOyB9CiAKICAgLy8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgdG8gYWRkIGRpZmZlcmVudCB0eXBlcyBvZiBpbnN0cnVjdGlvbnMgdG8gdGhlIGFsaWFzCkBAIC0zNzcsNiArMzgzLDcgQEAKICAgdm9pZCBhZGQoQmFzaWNCbG9jayAmQkIpOyAgICAgICAvLyBBZGQgYWxsIGluc3RydWN0aW9ucyBpbiBiYXNpYyBibG9jawogICB2b2lkIGFkZChjb25zdCBBbGlhc1NldFRyYWNrZXIgJkFTVCk7IC8vIEFkZCBhbGlhcyByZWxhdGlvbnMgZnJvbSBhbm90aGVyIEFTVAogICB2b2lkIGFkZFVua25vd24oSW5zdHJ1Y3Rpb24gKkkpOworICB2b2lkIGFkZEFsbEluc3RydWN0aW9uc0luTG9vcFVzaW5nTVNTQSgpOwogCiAgIHZvaWQgY2xlYXIoKTsKIApAQCAtMzg5LDEwICszOTYsNiBAQAogICAvLy8gc2V0IGlzIHJldHVybmVkLgogICBBbGlhc1NldCAmZ2V0QWxpYXNTZXRGb3IoY29uc3QgTWVtb3J5TG9jYXRpb24gJk1lbUxvYyk7CiAKLSAgLy8vIFJldHVybiB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgaW5zdHJ1Y3Rpb24gIm1heSIgKG9yIG11c3QpIGFsaWFzIG9uZSBvZiB0aGUKLSAgLy8vIG1lbWJlcnMgaW4gYW55IG9mIHRoZSBzZXRzLgotICBib29sIGNvbnRhaW5zVW5rbm93bihjb25zdCBJbnN0cnVjdGlvbiAqSSkgY29uc3Q7Ci0KICAgLy8vIFJldHVybiB0aGUgdW5kZXJseWluZyBhbGlhcyBhbmFseXNpcyBvYmplY3QgdXNlZCBieSB0aGlzIHRyYWNrZXIuCiAgIEFsaWFzQW5hbHlzaXMgJmdldEFsaWFzQW5hbHlzaXMoKSBjb25zdCB7IHJldHVybiBBQTsgfQogCkBAIC00NDEsMTQgKzQ0NCwxMCBAQAogICAgIHJldHVybiAqRW50cnk7CiAgIH0KIAotICBBbGlhc1NldCAmYWRkUG9pbnRlcihWYWx1ZSAqUCwgTG9jYXRpb25TaXplIFNpemUsIGNvbnN0IEFBTUROb2RlcyAmQUFJbmZvLAotICAgICAgICAgICAgICAgICAgICAgICBBbGlhc1NldDo6QWNjZXNzTGF0dGljZSBFKTsKLSAgQWxpYXNTZXQgJmFkZFBvaW50ZXIoTWVtb3J5TG9jYXRpb24gTG9jLAotICAgICAgICAgICAgICAgICAgICAgICBBbGlhc1NldDo6QWNjZXNzTGF0dGljZSBFKSB7Ci0gICAgcmV0dXJuIGFkZFBvaW50ZXIoY29uc3RfY2FzdDxWYWx1ZSo+KExvYy5QdHIpLCBMb2MuU2l6ZSwgTG9jLkFBVGFncywgRSk7Ci0gIH0KKyAgQWxpYXNTZXQgJmFkZFBvaW50ZXIoTWVtb3J5TG9jYXRpb24gTG9jLCBBbGlhc1NldDo6QWNjZXNzTGF0dGljZSBFKTsKICAgQWxpYXNTZXQgKm1lcmdlQWxpYXNTZXRzRm9yUG9pbnRlcihjb25zdCBWYWx1ZSAqUHRyLCBMb2NhdGlvblNpemUgU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBQU1ETm9kZXMgJkFBSW5mbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQUFNRE5vZGVzICZBQUluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAmTXVzdEFsaWFzQWxsKTsKIAogICAvLy8gTWVyZ2UgYWxsIGFsaWFzIHNldHMgaW50byBhIHNpbmdsZSBzZXQgdGhhdCBpcyBjb25zaWRlcmVkIHRvIGFsaWFzIGFueQogICAvLy8gcG9pbnRlci4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQXNzdW1wdGlvbkNhY2hlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0Fzc3VtcHRpb25DYWNoZS5oCmluZGV4IDQ2NTM4YjEuLmI0Mjg0NjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQXNzdW1wdGlvbkNhY2hlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Bc3N1bXB0aW9uQ2FjaGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FuYWx5c2lzL0Fzc3VtcHRpb25DYWNoZS5oIC0gVHJhY2sgQGxsdm0uYXNzdW1lIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTA0LDYgKzEwMywxMCBAQAogICAvLy8gbm90IGFscmVhZHkgYmUgaW4gdGhlIGNhY2hlLgogICB2b2lkIHJlZ2lzdGVyQXNzdW1wdGlvbihDYWxsSW5zdCAqQ0kpOwogCisgIC8vLyBSZW1vdmUgYW4gXEBsbHZtLmFzc3VtZSBpbnRyaW5zaWMgZnJvbSB0aGlzIGZ1bmN0aW9uJ3MgY2FjaGUgaWYgaXQgaGFzCisgIC8vLyBiZWVuIGFkZGVkIHRvIHRoZSBjYWNoZSBlYXJsaWVyLgorICB2b2lkIHVucmVnaXN0ZXJBc3N1bXB0aW9uKENhbGxJbnN0ICpDSSk7CisKICAgLy8vIFVwZGF0ZSB0aGUgY2FjaGUgb2YgdmFsdWVzIGJlaW5nIGFmZmVjdGVkIGJ5IHRoaXMgYXNzdW1wdGlvbiAoaS5lLgogICAvLy8gdGhlIHZhbHVlcyBhYm91dCB3aGljaCB0aGlzIGFzc3VtcHRpb24gcHJvdmlkZXMgaW5mb3JtYXRpb24pLgogICB2b2lkIHVwZGF0ZUFmZmVjdGVkVmFsdWVzKENhbGxJbnN0ICpDSSk7CkBAIC0yMDksNiArMjEyLDEwIEBACiAgIC8vLyBleGlzdGluZyBjYWNoZSB3aWxsIGJlIHJldHVybmVkLgogICBBc3N1bXB0aW9uQ2FjaGUgJmdldEFzc3VtcHRpb25DYWNoZShGdW5jdGlvbiAmRik7CiAKKyAgLy8vIFJldHVybiB0aGUgY2FjaGVkIGFzc3VtcHRpb25zIGZvciBhIGZ1bmN0aW9uIGlmIGl0IGhhcyBhbHJlYWR5IGJlZW4KKyAgLy8vIHNjYW5uZWQuIE90aGVyd2lzZSByZXR1cm4gbnVsbHB0ci4KKyAgQXNzdW1wdGlvbkNhY2hlICpsb29rdXBBc3N1bXB0aW9uQ2FjaGUoRnVuY3Rpb24gJkYpOworCiAgIEFzc3VtcHRpb25DYWNoZVRyYWNrZXIoKTsKICAgfkFzc3VtcHRpb25DYWNoZVRyYWNrZXIoKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9CYXNpY0FsaWFzQW5hbHlzaXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQmFzaWNBbGlhc0FuYWx5c2lzLmgKaW5kZXggNjM0NGU4NC4uMjlmNTg0YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9CYXNpY0FsaWFzQW5hbHlzaXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0Jhc2ljQWxpYXNBbmFseXNpcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEJhc2ljQWxpYXNBbmFseXNpcy5oIC0gU3RhdGVsZXNzLCBsb2NhbCBBbGlhcyBBbmFseXNpcyAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpAQCAtMjEsNyArMjAsNyBAQAogI2luY2x1ZGUgImxsdm0vQW5hbHlzaXMvQWxpYXNBbmFseXNpcy5oIgogI2luY2x1ZGUgImxsdm0vQW5hbHlzaXMvQXNzdW1wdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAibGx2bS9BbmFseXNpcy9NZW1vcnlMb2NhdGlvbi5oIgotI2luY2x1ZGUgImxsdm0vSVIvQ2FsbFNpdGUuaCIKKyNpbmNsdWRlICJsbHZtL0lSL0luc3RyVHlwZXMuaCIKICNpbmNsdWRlICJsbHZtL0lSL1Bhc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAibGx2bS9QYXNzLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpAQCAtODQsMTggKzgzLDE4IEBACiAKICAgQWxpYXNSZXN1bHQgYWxpYXMoY29uc3QgTWVtb3J5TG9jYXRpb24gJkxvY0EsIGNvbnN0IE1lbW9yeUxvY2F0aW9uICZMb2NCKTsKIAotICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oSW1tdXRhYmxlQ2FsbFNpdGUgQ1MsIGNvbnN0IE1lbW9yeUxvY2F0aW9uICZMb2MpOworICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oY29uc3QgQ2FsbEJhc2UgKkNhbGwsIGNvbnN0IE1lbW9yeUxvY2F0aW9uICZMb2MpOwogCi0gIE1vZFJlZkluZm8gZ2V0TW9kUmVmSW5mbyhJbW11dGFibGVDYWxsU2l0ZSBDUzEsIEltbXV0YWJsZUNhbGxTaXRlIENTMik7CisgIE1vZFJlZkluZm8gZ2V0TW9kUmVmSW5mbyhjb25zdCBDYWxsQmFzZSAqQ2FsbDEsIGNvbnN0IENhbGxCYXNlICpDYWxsMik7CiAKICAgLy8vIENoYXNlcyBwb2ludGVycyB1bnRpbCB3ZSBmaW5kIGEgKGNvbnN0YW50IGdsb2JhbCkgb3Igbm90LgogICBib29sIHBvaW50c1RvQ29uc3RhbnRNZW1vcnkoY29uc3QgTWVtb3J5TG9jYXRpb24gJkxvYywgYm9vbCBPckxvY2FsKTsKIAogICAvLy8gR2V0IHRoZSBsb2NhdGlvbiBhc3NvY2lhdGVkIHdpdGggYSBwb2ludGVyIGFyZ3VtZW50IG9mIGEgY2FsbHNpdGUuCi0gIE1vZFJlZkluZm8gZ2V0QXJnTW9kUmVmSW5mbyhJbW11dGFibGVDYWxsU2l0ZSBDUywgdW5zaWduZWQgQXJnSWR4KTsKKyAgTW9kUmVmSW5mbyBnZXRBcmdNb2RSZWZJbmZvKGNvbnN0IENhbGxCYXNlICpDYWxsLCB1bnNpZ25lZCBBcmdJZHgpOwogCiAgIC8vLyBSZXR1cm5zIHRoZSBiZWhhdmlvciB3aGVuIGNhbGxpbmcgdGhlIGdpdmVuIGNhbGwgc2l0ZS4KLSAgRnVuY3Rpb25Nb2RSZWZCZWhhdmlvciBnZXRNb2RSZWZCZWhhdmlvcihJbW11dGFibGVDYWxsU2l0ZSBDUyk7CisgIEZ1bmN0aW9uTW9kUmVmQmVoYXZpb3IgZ2V0TW9kUmVmQmVoYXZpb3IoY29uc3QgQ2FsbEJhc2UgKkNhbGwpOwogCiAgIC8vLyBSZXR1cm5zIHRoZSBiZWhhdmlvciB3aGVuIGNhbGxpbmcgdGhlIGdpdmVuIGZ1bmN0aW9uLiBGb3IgdXNlIHdoZW4gdGhlCiAgIC8vLyBjYWxsIHNpdGUgaXMgbm90IGtub3duLgpAQCAtMTE1LDcgKzExNCw3IEBACiAgICAgdW5zaWduZWQgWkV4dEJpdHM7CiAgICAgdW5zaWduZWQgU0V4dEJpdHM7CiAKLSAgICBpbnQ2NF90IFNjYWxlOworICAgIEFQSW50IFNjYWxlOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZhcmlhYmxlR0VQSW5kZXggJk90aGVyKSBjb25zdCB7CiAgICAgICByZXR1cm4gViA9PSBPdGhlci5WICYmIFpFeHRCaXRzID09IE90aGVyLlpFeHRCaXRzICYmCkBAIC0xMzMsMTAgKzEzMiwxMCBAQAogICAgIC8vIEJhc2UgcG9pbnRlciBvZiB0aGUgR0VQCiAgICAgY29uc3QgVmFsdWUgKkJhc2U7CiAgICAgLy8gVG90YWwgY29uc3RhbnQgb2Zmc2V0IHcuci50IHRoZSBiYXNlIGZyb20gaW5kZXhpbmcgaW50byBzdHJ1Y3RzCi0gICAgaW50NjRfdCBTdHJ1Y3RPZmZzZXQ7CisgICAgQVBJbnQgU3RydWN0T2Zmc2V0OwogICAgIC8vIFRvdGFsIGNvbnN0YW50IG9mZnNldCB3LnIudCB0aGUgYmFzZSBmcm9tIGluZGV4aW5nIHRocm91Z2gKICAgICAvLyBwb2ludGVycy9hcnJheXMvdmVjdG9ycwotICAgIGludDY0X3QgT3RoZXJPZmZzZXQ7CisgICAgQVBJbnQgT3RoZXJPZmZzZXQ7CiAgICAgLy8gU2NhbGVkIHZhcmlhYmxlIChub24tY29uc3RhbnQpIGluZGljZXMuCiAgICAgU21hbGxWZWN0b3I8VmFyaWFibGVHRVBJbmRleCwgND4gVmFySW5kaWNlczsKICAgfTsKQEAgLTE0NSw2ICsxNDQsOCBAQAogICB1c2luZyBMb2NQYWlyID0gc3RkOjpwYWlyPE1lbW9yeUxvY2F0aW9uLCBNZW1vcnlMb2NhdGlvbj47CiAgIHVzaW5nIEFsaWFzQ2FjaGVUeSA9IFNtYWxsRGVuc2VNYXA8TG9jUGFpciwgQWxpYXNSZXN1bHQsIDg+OwogICBBbGlhc0NhY2hlVHkgQWxpYXNDYWNoZTsKKyAgdXNpbmcgSXNDYXB0dXJlZENhY2hlVHkgPSBTbWFsbERlbnNlTWFwPGNvbnN0IFZhbHVlICosIGJvb2wsIDg+OworICBJc0NhcHR1cmVkQ2FjaGVUeSBJc0NhcHR1cmVkQ2FjaGU7CiAKICAgLy8vIFRyYWNrcyBwaGkgbm9kZXMgd2UgaGF2ZSB2aXNpdGVkLgogICAvLy8KQEAgLTE4OSw3ICsxOTAsNyBAQAogICBib29sCiAgIGNvbnN0YW50T2Zmc2V0SGV1cmlzdGljKGNvbnN0IFNtYWxsVmVjdG9ySW1wbDxWYXJpYWJsZUdFUEluZGV4PiAmVmFySW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb25TaXplIFYxU2l6ZSwgTG9jYXRpb25TaXplIFYyU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBCYXNlT2Zmc2V0LCBBc3N1bXB0aW9uQ2FjaGUgKkFDLAorICAgICAgICAgICAgICAgICAgICAgICAgICBBUEludCBCYXNlT2Zmc2V0LCBBc3N1bXB0aW9uQ2FjaGUgKkFDLAogICAgICAgICAgICAgICAgICAgICAgICAgICBEb21pbmF0b3JUcmVlICpEVCk7CiAKICAgYm9vbCBpc1ZhbHVlRXF1YWxJblBvdGVudGlhbEN5Y2xlcyhjb25zdCBWYWx1ZSAqVjEsIGNvbnN0IFZhbHVlICpWMik7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0Jsb2NrRnJlcXVlbmN5SW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9CbG9ja0ZyZXF1ZW5jeUluZm8uaAppbmRleCBjYTEyZGI2Li5jNzNjN2ZhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0Jsb2NrRnJlcXVlbmN5SW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQmxvY2tGcmVxdWVuY3lJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQmxvY2tGcmVxdWVuY3lJbmZvLmggLSBCbG9jayBGcmVxdWVuY3kgQW5hbHlzaXMgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTU2LDcgKzU1LDcgQEAKIAogICBjb25zdCBGdW5jdGlvbiAqZ2V0RnVuY3Rpb24oKSBjb25zdDsKICAgY29uc3QgQnJhbmNoUHJvYmFiaWxpdHlJbmZvICpnZXRCUEkoKSBjb25zdDsKLSAgdm9pZCB2aWV3KCkgY29uc3Q7CisgIHZvaWQgdmlldyhTdHJpbmdSZWYgPSAiQmxvY2tGcmVxdWVuY3lEQUdzIikgY29uc3Q7CiAKICAgLy8vIGdldGJsb2NrRnJlcSAtIFJldHVybiBibG9jayBmcmVxdWVuY3kuIFJldHVybiAwIGlmIHdlIGRvbid0IGhhdmUgdGhlCiAgIC8vLyBpbmZvcm1hdGlvbi4gUGxlYXNlIG5vdGUgdGhhdCBpbml0aWFsIGZyZXF1ZW5jeSBpcyBlcXVhbCB0byBFTlRSWV9GUkVRLiBJdApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9CbG9ja0ZyZXF1ZW5jeUluZm9JbXBsLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0Jsb2NrRnJlcXVlbmN5SW5mb0ltcGwuaAppbmRleCAyNWIyZWZkLi44MTNiYWQ0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0Jsb2NrRnJlcXVlbmN5SW5mb0ltcGwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0Jsb2NrRnJlcXVlbmN5SW5mb0ltcGwuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIEJsb2NrRnJlcXVlbmN5SW5mb0ltcGwuaCAtIEJsb2NrIEZyZXF1ZW5jeSBJbXBsZW1lbnRhdGlvbiAtLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTYwLDEwICsxNTksNiBAQAogCiB9IC8vIGVuZCBuYW1lc3BhY2UgYmZpX2RldGFpbAogCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNQb2RMaWtlPGJmaV9kZXRhaWw6OkJsb2NrTWFzcz4gewotICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7Ci19OwotCiAvLy8gQmFzZSBjbGFzcyBmb3IgQmxvY2tGcmVxdWVuY3lJbmZvSW1wbAogLy8vCiAvLy8gQmxvY2tGcmVxdWVuY3lJbmZvSW1wbEJhc2UgaGFzIHN1cHBvcnRpbmcgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBzb21lCkBAIC0xODcsOSArMTgyLDkgQEAKICAgc3RydWN0IEJsb2NrTm9kZSB7CiAgICAgdXNpbmcgSW5kZXhUeXBlID0gdWludDMyX3Q7CiAKLSAgICBJbmRleFR5cGUgSW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7CisgICAgSW5kZXhUeXBlIEluZGV4OwogCi0gICAgQmxvY2tOb2RlKCkgPSBkZWZhdWx0OworICAgIEJsb2NrTm9kZSgpIDogSW5kZXgoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKSB7fQogICAgIEJsb2NrTm9kZShJbmRleFR5cGUgSW5kZXgpIDogSW5kZXgoSW5kZXgpIHt9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQmxvY2tOb2RlICZYKSBjb25zdCB7IHJldHVybiBJbmRleCA9PSBYLkluZGV4OyB9CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0JyYW5jaFByb2JhYmlsaXR5SW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9CcmFuY2hQcm9iYWJpbGl0eUluZm8uaAppbmRleCA0NTI3N2RiLi45N2NiNzMwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0JyYW5jaFByb2JhYmlsaXR5SW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQnJhbmNoUHJvYmFiaWxpdHlJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQnJhbmNoUHJvYmFiaWxpdHlJbmZvLmggLSBCcmFuY2ggUHJvYmFiaWxpdHkgQW5hbHlzaXMgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ0ZHLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NGRy5oCmluZGV4IGNjY2RkMTYuLmJjZmY0ZmIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ0ZHLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9DRkcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gQW5hbHlzaXMvQ0ZHLmggLSBCYXNpY0Jsb2NrIEFuYWx5c2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjUsNyArMjQsNiBAQAogY2xhc3MgRnVuY3Rpb247CiBjbGFzcyBJbnN0cnVjdGlvbjsKIGNsYXNzIExvb3BJbmZvOwotY2xhc3MgVGVybWluYXRvckluc3Q7CiAKIC8vLyBBbmFseXplIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gdG8gZmluZCBhbGwgb2YgdGhlIGxvb3AgYmFja2VkZ2VzIGluIHRoZQogLy8vIGZ1bmN0aW9uIGFuZCByZXR1cm4gdGhlbS4gIFRoaXMgaXMgYSByZWxhdGl2ZWx5IGNoZWFwIChjb21wYXJlZCB0bwpAQCAtNDYsNyArNDQsNyBAQAogLy8vIGVkZ2VzIGZyb20gYSBibG9jayB3aXRoIG11bHRpcGxlIHN1Y2Nlc3NvcnMgdG8gYSBibG9jayB3aXRoIG11bHRpcGxlCiAvLy8gcHJlZGVjZXNzb3JzLgogLy8vCi1ib29sIGlzQ3JpdGljYWxFZGdlKGNvbnN0IFRlcm1pbmF0b3JJbnN0ICpUSSwgdW5zaWduZWQgU3VjY051bSwKK2Jvb2wgaXNDcml0aWNhbEVkZ2UoY29uc3QgSW5zdHJ1Y3Rpb24gKlRJLCB1bnNpZ25lZCBTdWNjTnVtLAogICAgICAgICAgICAgICAgICAgICBib29sIEFsbG93SWRlbnRpY2FsRWRnZXMgPSBmYWxzZSk7CiAKIC8vLyBEZXRlcm1pbmUgd2hldGhlciBpbnN0cnVjdGlvbiAnVG8nIGlzIHJlYWNoYWJsZSBmcm9tICdGcm9tJywKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ0ZHUHJpbnRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9DRkdQcmludGVyLmgKaW5kZXggYTRiNjQyYi4uYWFlZmMxMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9DRkdQcmludGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9DRkdQcmludGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIENGR1ByaW50ZXIuaCAtIENGRyBwcmludGVyIGV4dGVybmFsIGludGVyZmFjZSAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE1MCw3ICsxNDksNyBAQAogICAvLy8gRGlzcGxheSB0aGUgcmF3IGJyYW5jaCB3ZWlnaHRzIGZyb20gUEdPLgogICBzdGQ6OnN0cmluZyBnZXRFZGdlQXR0cmlidXRlcyhjb25zdCBCYXNpY0Jsb2NrICpOb2RlLCBzdWNjX2NvbnN0X2l0ZXJhdG9yIEksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uICpGKSB7Ci0gICAgY29uc3QgVGVybWluYXRvckluc3QgKlRJID0gTm9kZS0+Z2V0VGVybWluYXRvcigpOworICAgIGNvbnN0IEluc3RydWN0aW9uICpUSSA9IE5vZGUtPmdldFRlcm1pbmF0b3IoKTsKICAgICBpZiAoVEktPmdldE51bVN1Y2Nlc3NvcnMoKSA9PSAxKQogICAgICAgcmV0dXJuICIiOwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NGTEFsaWFzQW5hbHlzaXNVdGlscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9DRkxBbGlhc0FuYWx5c2lzVXRpbHMuaAppbmRleCA5ODFhOGRkLi4wMmY5OTlhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NGTEFsaWFzQW5hbHlzaXNVdGlscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ0ZMQWxpYXNBbmFseXNpc1V0aWxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz0tIENGTEFsaWFzQW5hbHlzaXNVdGlscy5oIC0gVXRpbGl0aWVzIGZvciBDRkwgQWxpYXMgQW5hbHlzaXMgLS0tLSotIEMrKy0qLT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gXGZpbGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ0ZMQW5kZXJzQWxpYXNBbmFseXNpcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9DRkxBbmRlcnNBbGlhc0FuYWx5c2lzLmgKaW5kZXggOGFlNzI1NS4uNjk2YWFlYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9DRkxBbmRlcnNBbGlhc0FuYWx5c2lzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9DRkxBbmRlcnNBbGlhc0FuYWx5c2lzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09LSBDRkxBbmRlcnNBbGlhc0FuYWx5c2lzLmggLSBVbmlmaWNhdGlvbi1iYXNlZCBBbGlhcyBBbmFseXNpcyAtKi0gQysrLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NGTFN0ZWVuc0FsaWFzQW5hbHlzaXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ0ZMU3RlZW5zQWxpYXNBbmFseXNpcy5oCmluZGV4IDA5ZTM2NmYuLjJkM2I0M2MgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ0ZMU3RlZW5zQWxpYXNBbmFseXNpcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ0ZMU3RlZW5zQWxpYXNBbmFseXNpcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0gQ0ZMU3RlZW5zQWxpYXNBbmFseXNpcy5oIC0gVW5pZmljYXRpb24tYmFzZWQgQWxpYXMgQW5hbHlzaXMgLSotIEMrKy0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9DR1NDQ1Bhc3NNYW5hZ2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NHU0NDUGFzc01hbmFnZXIuaAppbmRleCBmMTUwMDY0Li42ZDI2OTU0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NHU0NDUGFzc01hbmFnZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NHU0NDUGFzc01hbmFnZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDR1NDQ1Bhc3NNYW5hZ2VyLmggLSBDYWxsIGdyYXBoIHBhc3MgbWFuYWdlbWVudCAtLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKQEAgLTQ0MSw3ICs0NDAsMTAgQEAKIAogICAgICAgICAgICAgUHJlc2VydmVkQW5hbHlzZXMgUGFzc1BBID0gUGFzcy5ydW4oKkMsIENHQU0sIENHLCBVUik7CiAKLSAgICAgICAgICAgIFBJLnJ1bkFmdGVyUGFzczxMYXp5Q2FsbEdyYXBoOjpTQ0M+KFBhc3MsICpDKTsKKyAgICAgICAgICAgIGlmIChVUi5JbnZhbGlkYXRlZFNDQ3MuY291bnQoQykpCisgICAgICAgICAgICAgIFBJLnJ1bkFmdGVyUGFzc0ludmFsaWRhdGVkPExhenlDYWxsR3JhcGg6OlNDQz4oUGFzcyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIFBJLnJ1bkFmdGVyUGFzczxMYXp5Q2FsbEdyYXBoOjpTQ0M+KFBhc3MsICpDKTsKIAogICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBTQ0MgYW5kIFJlZlNDQyBpZiBuZWNlc3NhcnkuCiAgICAgICAgICAgICBDID0gVVIuVXBkYXRlZEMgPyBVUi5VcGRhdGVkQyA6IEM7CkBAIC03NjIsNyArNzY0LDEwIEBACiAKICAgICAgIFByZXNlcnZlZEFuYWx5c2VzIFBhc3NQQSA9IFBhc3MucnVuKCpDLCBBTSwgQ0csIFVSKTsKIAotICAgICAgUEkucnVuQWZ0ZXJQYXNzPExhenlDYWxsR3JhcGg6OlNDQz4oUGFzcywgKkMpOworICAgICAgaWYgKFVSLkludmFsaWRhdGVkU0NDcy5jb3VudChDKSkKKyAgICAgICAgUEkucnVuQWZ0ZXJQYXNzSW52YWxpZGF0ZWQ8TGF6eUNhbGxHcmFwaDo6U0NDPihQYXNzKTsKKyAgICAgIGVsc2UKKyAgICAgICAgUEkucnVuQWZ0ZXJQYXNzPExhenlDYWxsR3JhcGg6OlNDQz4oUGFzcywgKkMpOwogCiAgICAgICAvLyBJZiB0aGUgU0NDIHN0cnVjdHVyZSBoYXMgY2hhbmdlZCwgYmFpbCBpbW1lZGlhdGVseSBhbmQgbGV0IHRoZSBvdXRlcgogICAgICAgLy8gQ0dTQ0MgbGF5ZXIgaGFuZGxlIGFueSBpdGVyYXRpb24gdG8gcmVmbGVjdCB0aGUgcmVmaW5lZCBzdHJ1Y3R1cmUuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NhbGxHcmFwaC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9DYWxsR3JhcGguaAppbmRleCBmMTA5Y2YyLi5hNzQzY2JjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NhbGxHcmFwaC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ2FsbEdyYXBoLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ2FsbEdyYXBoLmggLSBCdWlsZCBhIE1vZHVsZSdzIGNhbGwgZ3JhcGggLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NhbGxHcmFwaFNDQ1Bhc3MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ2FsbEdyYXBoU0NDUGFzcy5oCmluZGV4IGFjZTU0NjAuLjFiNWI3ZTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ2FsbEdyYXBoU0NDUGFzcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ2FsbEdyYXBoU0NDUGFzcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENhbGxHcmFwaFNDQ1Bhc3MuaCAtIFBhc3MgdGhhdCBvcGVyYXRlcyBCVSBvbiBjYWxsIGdyYXBoIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NhbGxQcmludGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NhbGxQcmludGVyLmgKaW5kZXggOGI2OTdkNS4uOGQ0MTU5ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9DYWxsUHJpbnRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ2FsbFByaW50ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gQ2FsbFByaW50ZXIuaCAtIENhbGwgZ3JhcGggcHJpbnRlciBleHRlcm5hbCBpbnRlcmZhY2UgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ2FwdHVyZVRyYWNraW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NhcHR1cmVUcmFja2luZy5oCmluZGV4IDdhODY5YTUuLmNhN2FiZDMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ2FwdHVyZVRyYWNraW5nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9DYXB0dXJlVHJhY2tpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tLS0gbGx2bS9BbmFseXNpcy9DYXB0dXJlVHJhY2tpbmcuaCAtIFBvaW50ZXIgY2FwdHVyZSAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjIsNiArMjEsMTQgQEAKICAgY2xhc3MgRG9taW5hdG9yVHJlZTsKICAgY2xhc3MgT3JkZXJlZEJhc2ljQmxvY2s7CiAKKyAgLy8vIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBNYXhVc2VzVG9FeHBsb3JlIGFyZ3VtZW50LiBJdCdzIHJlbGF0aXZlbHkgc21hbGwgdG8KKyAgLy8vIGtlZXAgdGhlIGNvc3Qgb2YgYW5hbHlzaXMgcmVhc29uYWJsZSBmb3IgY2xpZW50cyBsaWtlIEJhc2ljQWxpYXNBbmFseXNpcywKKyAgLy8vIHdoZXJlIHRoZSByZXN1bHRzIGNhbid0IGJlIGNhY2hlZC4KKyAgLy8vIFRPRE86IHdlIHNob3VsZCBwcm9iYWJseSBpbnRyb2R1Y2UgYSBjYWNoaW5nIENhcHR1cmVUcmFja2luZyBhbmFseXNpcyBhbmQKKyAgLy8vIHVzZSBpdCB3aGVyZSBwb3NzaWJsZS4gVGhlIGNhY2hpbmcgdmVyc2lvbiBjYW4gdXNlIG11Y2ggaGlnaGVyIGxpbWl0IG9yCisgIC8vLyBkb24ndCBoYXZlIHRoaXMgY2FwIGF0IGFsbC4KKyAgdW5zaWduZWQgY29uc3RleHByIERlZmF1bHRNYXhVc2VzVG9FeHBsb3JlID0gMjA7CisKICAgLy8vIFBvaW50ZXJNYXlCZUNhcHR1cmVkIC0gUmV0dXJuIHRydWUgaWYgdGhpcyBwb2ludGVyIHZhbHVlIG1heSBiZSBjYXB0dXJlZAogICAvLy8gYnkgdGhlIGVuY2xvc2luZyBmdW5jdGlvbiAod2hpY2ggaXMgcmVxdWlyZWQgdG8gZXhpc3QpLiAgVGhpcyByb3V0aW5lIGNhbgogICAvLy8gYmUgZXhwZW5zaXZlLCBzbyBjb25zaWRlciBjYWNoaW5nIHRoZSByZXN1bHRzLiAgVGhlIGJvb2xlYW4gUmV0dXJuQ2FwdHVyZXMKQEAgLTI5LDkgKzM2LDEyIEBACiAgIC8vLyBjb3VudHMgYXMgY2FwdHVyaW5nIGl0IG9yIG5vdC4gIFRoZSBib29sZWFuIFN0b3JlQ2FwdHVyZXMgc3BlY2lmaWVkCiAgIC8vLyB3aGV0aGVyIHN0b3JpbmcgdGhlIHZhbHVlIChvciBwYXJ0IG9mIGl0KSBpbnRvIG1lbW9yeSBhbnl3aGVyZQogICAvLy8gYXV0b21hdGljYWxseSBjb3VudHMgYXMgY2FwdHVyaW5nIGl0IG9yIG5vdC4KKyAgLy8vIE1heFVzZXNUb0V4cGxvcmUgc3BlY2lmaWVzIGhvdyBtYW55IHVzZXMgc2hvdWxkIHRoZSBhbmFseXNpcyBleHBsb3JlIGZvcgorICAvLy8gb25lIHZhbHVlIGJlZm9yZSBnaXZpbmcgdXAgZHVlIHRvbyAidG9vIG1hbnkgdXNlcyIuCiAgIGJvb2wgUG9pbnRlck1heUJlQ2FwdHVyZWQoY29uc3QgVmFsdWUgKlYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBSZXR1cm5DYXB0dXJlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFN0b3JlQ2FwdHVyZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgU3RvcmVDYXB0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBNYXhVc2VzVG9FeHBsb3JlID0gRGVmYXVsdE1heFVzZXNUb0V4cGxvcmUpOwogCiAgIC8vLyBQb2ludGVyTWF5QmVDYXB0dXJlZEJlZm9yZSAtIFJldHVybiB0cnVlIGlmIHRoaXMgcG9pbnRlciB2YWx1ZSBtYXkgYmUKICAgLy8vIGNhcHR1cmVkIGJ5IHRoZSBlbmNsb3NpbmcgZnVuY3Rpb24gKHdoaWNoIGlzIHJlcXVpcmVkIHRvIGV4aXN0KS4gSWYgYQpAQCAtNDQsMTAgKzU0LDEzIEBACiAgIC8vLyBvciBub3QuIENhcHR1cmVzIGJ5IHRoZSBwcm92aWRlZCBpbnN0cnVjdGlvbiBhcmUgY29uc2lkZXJlZCBpZiB0aGUKICAgLy8vIGZpbmFsIHBhcmFtZXRlciBpcyB0cnVlLiBBbiBvcmRlcmVkIGJhc2ljIGJsb2NrIGluIFxwIE9CQiBjb3VsZCBiZSB1c2VkCiAgIC8vLyB0byBzcGVlZCB1cCBjYXB0dXJlLXRyYWNrZXIgcXVlcmllcy4KKyAgLy8vIE1heFVzZXNUb0V4cGxvcmUgc3BlY2lmaWVzIGhvdyBtYW55IHVzZXMgc2hvdWxkIHRoZSBhbmFseXNpcyBleHBsb3JlIGZvcgorICAvLy8gb25lIHZhbHVlIGJlZm9yZSBnaXZpbmcgdXAgZHVlIHRvbyAidG9vIG1hbnkgdXNlcyIuCiAgIGJvb2wgUG9pbnRlck1heUJlQ2FwdHVyZWRCZWZvcmUoY29uc3QgVmFsdWUgKlYsIGJvb2wgUmV0dXJuQ2FwdHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBTdG9yZUNhcHR1cmVzLCBjb25zdCBJbnN0cnVjdGlvbiAqSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEb21pbmF0b3JUcmVlICpEVCwgYm9vbCBJbmNsdWRlSSA9IGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyZWRCYXNpY0Jsb2NrICpPQkIgPSBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlcmVkQmFzaWNCbG9jayAqT0JCID0gbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBNYXhVc2VzVG9FeHBsb3JlID0gRGVmYXVsdE1heFVzZXNUb0V4cGxvcmUpOwogCiAgIC8vLyBUaGlzIGNhbGxiYWNrIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBQb2ludGVyTWF5QmVDYXB0dXJlZC4gSW4KICAgLy8vIGFkZGl0aW9uIHRvIHRoZSBpbnRlcmZhY2UgaGVyZSwgeW91J2xsIG5lZWQgdG8gcHJvdmlkZSB5b3VyIG93biBnZXR0ZXJzCkBAIC03NSw3ICs4OCwxMCBAQAogICAvLy8gUG9pbnRlck1heUJlQ2FwdHVyZWQgLSBWaXNpdCB0aGUgdmFsdWUgYW5kIHRoZSB2YWx1ZXMgZGVyaXZlZCBmcm9tIGl0IGFuZAogICAvLy8gZmluZCB2YWx1ZXMgd2hpY2ggYXBwZWFyIHRvIGJlIGNhcHR1cmluZyB0aGUgcG9pbnRlciB2YWx1ZS4gVGhpcyBmZWVkcwogICAvLy8gcmVzdWx0cyBpbnRvIGFuZCBpcyBjb250cm9sbGVkIGJ5IHRoZSBDYXB0dXJlVHJhY2tlciBvYmplY3QuCi0gIHZvaWQgUG9pbnRlck1heUJlQ2FwdHVyZWQoY29uc3QgVmFsdWUgKlYsIENhcHR1cmVUcmFja2VyICpUcmFja2VyKTsKKyAgLy8vIE1heFVzZXNUb0V4cGxvcmUgc3BlY2lmaWVzIGhvdyBtYW55IHVzZXMgc2hvdWxkIHRoZSBhbmFseXNpcyBleHBsb3JlIGZvcgorICAvLy8gb25lIHZhbHVlIGJlZm9yZSBnaXZpbmcgdXAgZHVlIHRvbyAidG9vIG1hbnkgdXNlcyIuCisgIHZvaWQgUG9pbnRlck1heUJlQ2FwdHVyZWQoY29uc3QgVmFsdWUgKlYsIENhcHR1cmVUcmFja2VyICpUcmFja2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE1heFVzZXNUb0V4cGxvcmUgPSBEZWZhdWx0TWF4VXNlc1RvRXhwbG9yZSk7CiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ21wSW5zdEFuYWx5c2lzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NtcEluc3RBbmFseXNpcy5oCmluZGV4IDNjYzY5ZDkuLjNkMzRjZDEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ21wSW5zdEFuYWx5c2lzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9DbXBJbnN0QW5hbHlzaXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gQ21wSW5zdEFuYWx5c2lzLmggLSBVdGlscyB0byBoZWxwIGZvbGQgY29tcGFyZSBpbnN0cyAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNDYsMTkgKzQ1LDE4IEBACiAgIC8vLwogICB1bnNpZ25lZCBnZXRJQ21wQ29kZShjb25zdCBJQ21wSW5zdCAqSUNJLCBib29sIEludmVydFByZWQgPSBmYWxzZSk7CiAKLSAgLy8vIFRoaXMgaXMgdGhlIGNvbXBsZW1lbnQgb2YgZ2V0SUNtcENvZGUsIHdoaWNoIHR1cm5zIGFuIG9wY29kZSBhbmQgdHdvCi0gIC8vLyBvcGVyYW5kcyBpbnRvIGVpdGhlciBhIGNvbnN0YW50IHRydWUgb3IgZmFsc2UsIG9yIHRoZSBwcmVkaWNhdGUgZm9yIGEgbmV3Ci0gIC8vLyBJQ21wIGluc3RydWN0aW9uLiBUaGUgc2lnbiBpcyBwYXNzZWQgaW4gdG8gZGV0ZXJtaW5lIHdoaWNoIGtpbmQgb2YKLSAgLy8vIHByZWRpY2F0ZSB0byB1c2UgaW4gdGhlIG5ldyBpY21wIGluc3RydWN0aW9uLgorICAvLy8gVGhpcyBpcyB0aGUgY29tcGxlbWVudCBvZiBnZXRJQ21wQ29kZS4gSXQgdHVybnMgYSBwcmVkaWNhdGUgY29kZSBpbnRvCisgIC8vLyBlaXRoZXIgYSBjb25zdGFudCB0cnVlIG9yIGZhbHNlIG9yIHRoZSBwcmVkaWNhdGUgZm9yIGEgbmV3IElDbXAuCisgIC8vLyBUaGUgc2lnbiBpcyBwYXNzZWQgaW4gdG8gZGV0ZXJtaW5lIHdoaWNoIGtpbmQgb2YgcHJlZGljYXRlIHRvIHVzZSBpbiB0aGUKKyAgLy8vIG5ldyBJQ21wIGluc3RydWN0aW9uLgogICAvLy8gTm9uLU5VTEwgcmV0dXJuIHZhbHVlIHdpbGwgYmUgYSB0cnVlIG9yIGZhbHNlIGNvbnN0YW50LgotICAvLy8gTlVMTCByZXR1cm4gbWVhbnMgYSBuZXcgSUNtcCBpcyBuZWVkZWQuIFRoZSBwcmVkaWNhdGUgZm9yIHdoaWNoIGlzIG91dHB1dAotICAvLy8gaW4gTmV3SUNtcFByZWQuCi0gIFZhbHVlICpnZXRJQ21wVmFsdWUoYm9vbCBTaWduLCB1bnNpZ25lZCBDb2RlLCBWYWx1ZSAqTEhTLCBWYWx1ZSAqUkhTLAotICAgICAgICAgICAgICAgICAgICAgIENtcEluc3Q6OlByZWRpY2F0ZSAmTmV3SUNtcFByZWQpOworICAvLy8gTlVMTCByZXR1cm4gbWVhbnMgYSBuZXcgSUNtcCBpcyBuZWVkZWQuIFRoZSBwcmVkaWNhdGUgaXMgb3V0cHV0IGluIFByZWQuCisgIENvbnN0YW50ICpnZXRQcmVkRm9ySUNtcENvZGUodW5zaWduZWQgQ29kZSwgYm9vbCBTaWduLCBUeXBlICpPcFR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENtcEluc3Q6OlByZWRpY2F0ZSAmUHJlZCk7CiAKICAgLy8vIFJldHVybiB0cnVlIGlmIGJvdGggcHJlZGljYXRlcyBtYXRjaCBzaWduIG9yIGlmIGF0IGxlYXN0IG9uZSBvZiB0aGVtIGlzIGFuCiAgIC8vLyBlcXVhbGl0eSBjb21wYXJpc29uICh3aGljaCBpcyBzaWdubGVzcykuCi0gIGJvb2wgUHJlZGljYXRlc0ZvbGRhYmxlKENtcEluc3Q6OlByZWRpY2F0ZSBwMSwgQ21wSW5zdDo6UHJlZGljYXRlIHAyKTsKKyAgYm9vbCBwcmVkaWNhdGVzRm9sZGFibGUoQ21wSW5zdDo6UHJlZGljYXRlIFAxLCBDbXBJbnN0OjpQcmVkaWNhdGUgUDIpOwogCiAgIC8vLyBEZWNvbXBvc2UgYW4gaWNtcCBpbnRvIHRoZSBmb3JtICgoWCAmIE1hc2spIHByZWQgMCkgaWYgcG9zc2libGUuIFRoZQogICAvLy8gcmV0dXJuZWQgcHJlZGljYXRlIGlzIGVpdGhlciA9PSBvciAhPS4gUmV0dXJucyBmYWxzZSBpZiBkZWNvbXBvc2l0aW9uCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NvZGVNZXRyaWNzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NvZGVNZXRyaWNzLmgKaW5kZXggNzUyOTAyMi4uMTQ4MmI2NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Db2RlTWV0cmljcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ29kZU1ldHJpY3MuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDb2RlTWV0cmljcy5oIC0gQ29kZSBjb3N0IG1lYXN1cmVtZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTcsNyArMTYsNiBAQAogCiAjaW5jbHVkZSAibGx2bS9BRFQvRGVuc2VNYXAuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9TbWFsbFB0clNldC5oIgotI2luY2x1ZGUgImxsdm0vSVIvQ2FsbFNpdGUuaCIKIAogbmFtZXNwYWNlIGxsdm0gewogY2xhc3MgQXNzdW1wdGlvbkNhY2hlOwpAQCAtMjksMTQgKzI3LDYgQEAKIGNsYXNzIFRhcmdldFRyYW5zZm9ybUluZm87CiBjbGFzcyBWYWx1ZTsKIAotLy8vIENoZWNrIHdoZXRoZXIgYSBjYWxsIHdpbGwgbG93ZXIgdG8gc29tZXRoaW5nIHNtYWxsLgotLy8vCi0vLy8gVGhpcyB0ZXN0cyBjaGVja3Mgd2hldGhlciB0aGlzIGNhbGxzaXRlIHdpbGwgbG93ZXIgdG8gc29tZXRoaW5nCi0vLy8gc2lnbmlmaWNhbnRseSBjaGVhcGVyIHRoYW4gYSB0cmFkaXRpb25hbCBjYWxsLCBvZnRlbiBhIHNpbmdsZQotLy8vIGluc3RydWN0aW9uLiBOb3RlIHRoYXQgaWYgaXNJbnN0cnVjdGlvbkZyZWUoQ1MuZ2V0SW5zdHJ1Y3Rpb24oKSkgd291bGQKLS8vLyByZXR1cm4gdHJ1ZSwgc28gd2lsbCB0aGlzIGZ1bmN0aW9uLgotYm9vbCBjYWxsSXNTbWFsbChJbW11dGFibGVDYWxsU2l0ZSBDUyk7Ci0KIC8vLyBVdGlsaXR5IHRvIGNhbGN1bGF0ZSB0aGUgc2l6ZSBhbmQgYSBmZXcgc2ltaWxhciBtZXRyaWNzIGZvciBhIHNldAogLy8vIG9mIGJhc2ljIGJsb2Nrcy4KIHN0cnVjdCBDb2RlTWV0cmljcyB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NvbnN0YW50Rm9sZGluZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Db25zdGFudEZvbGRpbmcuaAppbmRleCAxOTJjMWFiLi40M2EyZGYwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0NvbnN0YW50Rm9sZGluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvQ29uc3RhbnRGb2xkaW5nLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIENvbnN0YW50Rm9sZGluZy5oIC0gRm9sZCBpbnN0cnVjdGlvbnMgaW50byBjb25zdGFudHMgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTIzLDcgKzIyLDcgQEAKIG5hbWVzcGFjZSBsbHZtIHsKIGNsYXNzIEFQSW50OwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEFycmF5UmVmOwotY2xhc3MgQ2FsbFNpdGU7CitjbGFzcyBDYWxsQmFzZTsKIGNsYXNzIENvbnN0YW50OwogY2xhc3MgQ29uc3RhbnRFeHByOwogY2xhc3MgQ29uc3RhbnRWZWN0b3I7CkBAIC0zMSw3ICszMCw2IEBACiBjbGFzcyBGdW5jdGlvbjsKIGNsYXNzIEdsb2JhbFZhbHVlOwogY2xhc3MgSW5zdHJ1Y3Rpb247Ci1jbGFzcyBJbW11dGFibGVDYWxsU2l0ZTsKIGNsYXNzIFRhcmdldExpYnJhcnlJbmZvOwogY2xhc3MgVHlwZTsKIApAQCAtMTM5LDExICsxMzcsMTEgQEAKIAogLy8vIGNhbkNvbnN0YW50Rm9sZENhbGxUbyAtIFJldHVybiB0cnVlIGlmIGl0cyBldmVuIHBvc3NpYmxlIHRvIGZvbGQgYSBjYWxsIHRvCiAvLy8gdGhlIHNwZWNpZmllZCBmdW5jdGlvbi4KLWJvb2wgY2FuQ29uc3RhbnRGb2xkQ2FsbFRvKEltbXV0YWJsZUNhbGxTaXRlIENTLCBjb25zdCBGdW5jdGlvbiAqRik7Citib29sIGNhbkNvbnN0YW50Rm9sZENhbGxUbyhjb25zdCBDYWxsQmFzZSAqQ2FsbCwgY29uc3QgRnVuY3Rpb24gKkYpOwogCiAvLy8gQ29uc3RhbnRGb2xkQ2FsbCAtIEF0dGVtcHQgdG8gY29uc3RhbnQgZm9sZCBhIGNhbGwgdG8gdGhlIHNwZWNpZmllZCBmdW5jdGlvbgogLy8vIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMsIHJldHVybmluZyBudWxsIGlmIHVuc3VjY2Vzc2Z1bC4KLUNvbnN0YW50ICpDb25zdGFudEZvbGRDYWxsKEltbXV0YWJsZUNhbGxTaXRlIENTLCBGdW5jdGlvbiAqRiwKK0NvbnN0YW50ICpDb25zdGFudEZvbGRDYWxsKGNvbnN0IENhbGxCYXNlICpDYWxsLCBGdW5jdGlvbiAqRiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPENvbnN0YW50ICo+IE9wZXJhbmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGFyZ2V0TGlicmFyeUluZm8gKlRMSSA9IG51bGxwdHIpOwogCkBAIC0xNTUsNyArMTUzLDcgQEAKIAogLy8vIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIGNhbGwgaGFzIG5vIHNpZGUtZWZmZWN0cy4KIC8vLyBTcGVjaWZpY2FsbHkgY2hlY2tzIGZvciBtYXRoIHJvdXRpbWVzIHdoaWNoIHNvbWV0aW1lcyBzZXQgZXJybm8uCi1ib29sIGlzTWF0aExpYkNhbGxOb29wKENhbGxTaXRlIENTLCBjb25zdCBUYXJnZXRMaWJyYXJ5SW5mbyAqVExJKTsKK2Jvb2wgaXNNYXRoTGliQ2FsbE5vb3AoY29uc3QgQ2FsbEJhc2UgKkNhbGwsIGNvbnN0IFRhcmdldExpYnJhcnlJbmZvICpUTEkpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvRE9UR3JhcGhUcmFpdHNQYXNzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0RPVEdyYXBoVHJhaXRzUGFzcy5oCmluZGV4IGI3NDQ3YTAuLjA0MTBhMzMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvRE9UR3JhcGhUcmFpdHNQYXNzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9ET1RHcmFwaFRyYWl0c1Bhc3MuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gRE9UR3JhcGhUcmFpdHNQYXNzLmggLSBQcmludC9WaWV3IGRvdHR5IGdyYXBocy0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9EZW1hbmRlZEJpdHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvRGVtYW5kZWRCaXRzLmgKaW5kZXggZDQzODQ2MC4uMDRkYjNlYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9EZW1hbmRlZEJpdHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0RlbWFuZGVkQml0cy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQW5hbHlzaXMvRGVtYW5kZWRCaXRzLmggLSBEZXRlcm1pbmUgZGVtYW5kZWQgYml0cyAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00NCwxOSArNDMsMzAgQEAKICAgICBGKEYpLCBBQyhBQyksIERUKERUKSB7fQogCiAgIC8vLyBSZXR1cm4gdGhlIGJpdHMgZGVtYW5kZWQgZnJvbSBpbnN0cnVjdGlvbiBJLgorICAvLy8KKyAgLy8vIEZvciB2ZWN0b3IgaW5zdHJ1Y3Rpb25zIGluZGl2aWR1YWwgdmVjdG9yIGVsZW1lbnRzIGFyZSBub3QgZGlzdGluZ3Vpc2hlZDoKKyAgLy8vIEEgYml0IGlzIGRlbWFuZGVkIGlmIGl0IGlzIGRlbWFuZGVkIGZvciBhbnkgb2YgdGhlIHZlY3RvciBlbGVtZW50cy4gVGhlCisgIC8vLyBzaXplIG9mIHRoZSByZXR1cm4gdmFsdWUgY29ycmVzcG9uZHMgdG8gdGhlIHR5cGUgc2l6ZSBpbiBiaXRzIG9mIHRoZQorICAvLy8gc2NhbGFyIHR5cGUuCisgIC8vLworICAvLy8gSW5zdHJ1Y3Rpb25zIHRoYXQgZG8gbm90IGhhdmUgaW50ZWdlciBvciB2ZWN0b3Igb2YgaW50ZWdlciB0eXBlIGFyZQorICAvLy8gYWNjZXB0ZWQsIGJ1dCB3aWxsIGFsd2F5cyBwcm9kdWNlIGEgbWFzayB3aXRoIGFsbCBiaXRzIHNldC4KICAgQVBJbnQgZ2V0RGVtYW5kZWRCaXRzKEluc3RydWN0aW9uICpJKTsKIAogICAvLy8gUmV0dXJuIHRydWUgaWYsIGR1cmluZyBhbmFseXNpcywgSSBjb3VsZCBub3QgYmUgcmVhY2hlZC4KICAgYm9vbCBpc0luc3RydWN0aW9uRGVhZChJbnN0cnVjdGlvbiAqSSk7CiAKKyAgLy8vIFJldHVybiB3aGV0aGVyIHRoaXMgdXNlIGlzIGRlYWQgYnkgbWVhbnMgb2Ygbm90IGhhdmluZyBhbnkgZGVtYW5kZWQgYml0cy4KKyAgYm9vbCBpc1VzZURlYWQoVXNlICpVKTsKKwogICB2b2lkIHByaW50KHJhd19vc3RyZWFtICZPUyk7CiAKIHByaXZhdGU6CiAgIHZvaWQgcGVyZm9ybUFuYWx5c2lzKCk7CiAgIHZvaWQgZGV0ZXJtaW5lTGl2ZU9wZXJhbmRCaXRzKGNvbnN0IEluc3RydWN0aW9uICpVc2VySSwKLSAgICBjb25zdCBJbnN0cnVjdGlvbiAqSSwgdW5zaWduZWQgT3BlcmFuZE5vLAorICAgIGNvbnN0IFZhbHVlICpWYWwsIHVuc2lnbmVkIE9wZXJhbmRObywKICAgICBjb25zdCBBUEludCAmQU91dCwgQVBJbnQgJkFCLAotICAgIEtub3duQml0cyAmS25vd24sIEtub3duQml0cyAmS25vd24yKTsKKyAgICBLbm93bkJpdHMgJktub3duLCBLbm93bkJpdHMgJktub3duMiwgYm9vbCAmS25vd25CaXRzQ29tcHV0ZWQpOwogCiAgIEZ1bmN0aW9uICZGOwogICBBc3N1bXB0aW9uQ2FjaGUgJkFDOwpAQCAtNjcsNiArNzcsOSBAQAogICAvLyBUaGUgc2V0IG9mIHZpc2l0ZWQgaW5zdHJ1Y3Rpb25zIChub24taW50ZWdlci10eXBlZCBvbmx5KS4KICAgU21hbGxQdHJTZXQ8SW5zdHJ1Y3Rpb24qLCAzMj4gVmlzaXRlZDsKICAgRGVuc2VNYXA8SW5zdHJ1Y3Rpb24gKiwgQVBJbnQ+IEFsaXZlQml0czsKKyAgLy8gVXNlcyB3aXRoIG5vIGRlbWFuZGVkIGJpdHMuIElmIHRoZSB1c2VyIGFsc28gaGFzIG5vIGRlbWFuZGVkIGJpdHMsIHRoZSB1c2UKKyAgLy8gbWlnaHQgbm90IGJlIHN0b3JlZCBleHBsaWNpdGx5IGluIHRoaXMgbWFwLCB0byBzYXZlIG1lbW9yeSBkdXJpbmcgYW5hbHlzaXMuCisgIFNtYWxsUHRyU2V0PFVzZSAqLCAxNj4gRGVhZFVzZXM7CiB9OwogCiBjbGFzcyBEZW1hbmRlZEJpdHNXcmFwcGVyUGFzcyA6IHB1YmxpYyBGdW5jdGlvblBhc3MgewpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9EZXBlbmRlbmNlQW5hbHlzaXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvRGVwZW5kZW5jZUFuYWx5c2lzLmgKaW5kZXggYzhlYzczNy4uOTk3MDEzYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9EZXBlbmRlbmNlQW5hbHlzaXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0RlcGVuZGVuY2VBbmFseXNpcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0FuYWx5c2lzL0RlcGVuZGVuY2VBbmFseXNpcy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yNzUsNiArMjc0LDEwIEBACiAgICAgICAgICAgICAgICAgICAgTG9vcEluZm8gKkxJKQogICAgICAgICA6IEFBKEFBKSwgU0UoU0UpLCBMSShMSSksIEYoRikge30KIAorICAgIC8vLyBIYW5kbGUgdHJhbnNpdGl2ZSBpbnZhbGlkYXRpb24gd2hlbiB0aGUgY2FjaGVkIGFuYWx5c2lzIHJlc3VsdHMgZ28gYXdheS4KKyAgICBib29sIGludmFsaWRhdGUoRnVuY3Rpb24gJkYsIGNvbnN0IFByZXNlcnZlZEFuYWx5c2VzICZQQSwKKyAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25BbmFseXNpc01hbmFnZXI6OkludmFsaWRhdG9yICZJbnYpOworCiAgICAgLy8vIGRlcGVuZHMgLSBUZXN0cyBmb3IgYSBkZXBlbmRlbmNlIGJldHdlZW4gdGhlIFNyYyBhbmQgRHN0IGluc3RydWN0aW9ucy4KICAgICAvLy8gUmV0dXJucyBOVUxMIGlmIG5vIGRlcGVuZGVuY2U7IG90aGVyd2lzZSwgcmV0dXJucyBhIERlcGVuZGVuY2UgKG9yIGEKICAgICAvLy8gRnVsbERlcGVuZGVuY2UpIHdpdGggYXMgbXVjaCBpbmZvcm1hdGlvbiBhcyBjYW4gYmUgZ2xlYW5lZC4KQEAgLTkzNiw2ICs5MzksMTcgQEAKICAgICBmcmllbmQgc3RydWN0IEFuYWx5c2lzSW5mb01peGluPERlcGVuZGVuY2VBbmFseXNpcz47CiAgIH07IC8vIGNsYXNzIERlcGVuZGVuY2VBbmFseXNpcwogCisgIC8vLyBQcmludGVyIHBhc3MgdG8gZHVtcCBEQSByZXN1bHRzLgorICBzdHJ1Y3QgRGVwZW5kZW5jZUFuYWx5c2lzUHJpbnRlclBhc3MKKyAgICAgIDogcHVibGljIFBhc3NJbmZvTWl4aW48RGVwZW5kZW5jZUFuYWx5c2lzUHJpbnRlclBhc3M+IHsKKyAgICBEZXBlbmRlbmNlQW5hbHlzaXNQcmludGVyUGFzcyhyYXdfb3N0cmVhbSAmT1MpIDogT1MoT1MpIHt9CisKKyAgICBQcmVzZXJ2ZWRBbmFseXNlcyBydW4oRnVuY3Rpb24gJkYsIEZ1bmN0aW9uQW5hbHlzaXNNYW5hZ2VyICZGQU0pOworCisgIHByaXZhdGU6CisgICAgcmF3X29zdHJlYW0gJk9TOworICB9OyAvLyBjbGFzcyBEZXBlbmRlbmNlQW5hbHlzaXNQcmludGVyUGFzcworCiAgIC8vLyBMZWdhY3kgcGFzcyBtYW5hZ2VyIHBhc3MgdG8gYWNjZXNzIGRlcGVuZGVuY2UgaW5mb3JtYXRpb24KICAgY2xhc3MgRGVwZW5kZW5jZUFuYWx5c2lzV3JhcHBlclBhc3MgOiBwdWJsaWMgRnVuY3Rpb25QYXNzIHsKICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9EaXZlcmdlbmNlQW5hbHlzaXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvRGl2ZXJnZW5jZUFuYWx5c2lzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NmYjlkMQotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvRGl2ZXJnZW5jZUFuYWx5c2lzLmgKQEAgLTAsMCArMSwyMDQgQEAKKy8vPT09LSBsbHZtL0FuYWx5c2lzL0RpdmVyZ2VuY2VBbmFseXNpcy5oIC0gRGl2ZXJnZW5jZSBBbmFseXNpcyAtKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gXGZpbGUKKy8vIFRoZSBkaXZlcmdlbmNlIGFuYWx5c2lzIGRldGVybWluZXMgd2hpY2ggaW5zdHJ1Y3Rpb25zIGFuZCBicmFuY2hlcyBhcmUKKy8vIGRpdmVyZ2VudCBnaXZlbiBhIHNldCBvZiBkaXZlcmdlbnQgc291cmNlIGluc3RydWN0aW9ucy4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fQU5BTFlTSVNfRElWRVJHRU5DRV9BTkFMWVNJU19ICisjZGVmaW5lIExMVk1fQU5BTFlTSVNfRElWRVJHRU5DRV9BTkFMWVNJU19ICisKKyNpbmNsdWRlICJsbHZtL0FEVC9EZW5zZVNldC5oIgorI2luY2x1ZGUgImxsdm0vQW5hbHlzaXMvU3luY0RlcGVuZGVuY2VBbmFseXNpcy5oIgorI2luY2x1ZGUgImxsdm0vSVIvRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJsbHZtL1Bhc3MuaCIKKyNpbmNsdWRlIDx2ZWN0b3I+CisKK25hbWVzcGFjZSBsbHZtIHsKK2NsYXNzIE1vZHVsZTsKK2NsYXNzIFZhbHVlOworY2xhc3MgSW5zdHJ1Y3Rpb247CitjbGFzcyBMb29wOworY2xhc3MgcmF3X29zdHJlYW07CitjbGFzcyBUYXJnZXRUcmFuc2Zvcm1JbmZvOworCisvLy8gXGJyaWVmIEdlbmVyaWMgZGl2ZXJnZW5jZSBhbmFseXNpcyBmb3IgcmVkdWNpYmxlIENGR3MuCisvLy8KKy8vLyBUaGlzIGFuYWx5c2lzIHByb3BhZ2F0ZXMgZGl2ZXJnZW5jZSBpbiBhIGRhdGEtcGFyYWxsZWwgY29udGV4dCBmcm9tIHNvdXJjZXMKKy8vLyBvZiBkaXZlcmdlbmNlIHRvIGFsbCB1c2Vycy4gSXQgcmVxdWlyZXMgcmVkdWNpYmxlIENGR3MuIEFsbCBhc3NpZ25tZW50cworLy8vIHNob3VsZCBiZSBpbiBTU0EgZm9ybS4KK2NsYXNzIERpdmVyZ2VuY2VBbmFseXNpcyB7CitwdWJsaWM6CisgIC8vLyBcYnJpZWYgVGhpcyBpbnN0YW5jZSB3aWxsIGFuYWx5emUgdGhlIHdob2xlIGZ1bmN0aW9uIFxwIEYgb3IgdGhlIGxvb3AgXHAKKyAgLy8vIFJlZ2lvbkxvb3AuCisgIC8vLworICAvLy8gXHBhcmFtIFJlZ2lvbkxvb3AgaWYgbm9uLW51bGwgdGhlIGFuYWx5c2lzIGlzIHJlc3RyaWN0ZWQgdG8gXHAgUmVnaW9uTG9vcC4KKyAgLy8vIE90aGVyd2lzZSB0aGUgd2hvbGUgZnVuY3Rpb24gaXMgYW5hbHl6ZWQuCisgIC8vLyBccGFyYW0gSXNMQ1NTQUZvcm0gd2hldGhlciB0aGUgYW5hbHlzaXMgbWF5IGFzc3VtZSB0aGF0IHRoZSBJUiBpbiB0aGUKKyAgLy8vIHJlZ2lvbiBpbiBpbiBMQ1NTQSBmb3JtLgorICBEaXZlcmdlbmNlQW5hbHlzaXMoY29uc3QgRnVuY3Rpb24gJkYsIGNvbnN0IExvb3AgKlJlZ2lvbkxvb3AsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBEb21pbmF0b3JUcmVlICZEVCwgY29uc3QgTG9vcEluZm8gJkxJLAorICAgICAgICAgICAgICAgICAgICAgU3luY0RlcGVuZGVuY2VBbmFseXNpcyAmU0RBLCBib29sIElzTENTU0FGb3JtKTsKKworICAvLy8gXGJyaWVmIFRoZSBsb29wIHRoYXQgZGVmaW5lcyB0aGUgYW5hbHl6ZWQgcmVnaW9uIChpZiBhbnkpLgorICBjb25zdCBMb29wICpnZXRSZWdpb25Mb29wKCkgY29uc3QgeyByZXR1cm4gUmVnaW9uTG9vcDsgfQorICBjb25zdCBGdW5jdGlvbiAmZ2V0RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBGOyB9CisKKyAgLy8vIFxicmllZiBXaGV0aGVyIFxwIEJCIGlzIHBhcnQgb2YgdGhlIHJlZ2lvbi4KKyAgYm9vbCBpblJlZ2lvbihjb25zdCBCYXNpY0Jsb2NrICZCQikgY29uc3Q7CisgIC8vLyBcYnJpZWYgV2hldGhlciBccCBJIGlzIHBhcnQgb2YgdGhlIHJlZ2lvbi4KKyAgYm9vbCBpblJlZ2lvbihjb25zdCBJbnN0cnVjdGlvbiAmSSkgY29uc3Q7CisKKyAgLy8vIFxicmllZiBNYXJrIFxwIFVuaVZhbCBhcyBhIHZhbHVlIHRoYXQgaXMgYWx3YXlzIHVuaWZvcm0uCisgIHZvaWQgYWRkVW5pZm9ybU92ZXJyaWRlKGNvbnN0IFZhbHVlICZVbmlWYWwpOworCisgIC8vLyBcYnJpZWYgTWFyayBccCBEaXZWYWwgYXMgYSB2YWx1ZSB0aGF0IGlzIGFsd2F5cyBkaXZlcmdlbnQuCisgIHZvaWQgbWFya0RpdmVyZ2VudChjb25zdCBWYWx1ZSAmRGl2VmFsKTsKKworICAvLy8gXGJyaWVmIFByb3BhZ2F0ZSBkaXZlcmdlbmNlIHRvIGFsbCBpbnN0cnVjdGlvbnMgaW4gdGhlIHJlZ2lvbi4KKyAgLy8vIERpdmVyZ2VuY2UgaXMgc2VlZGVkIGJ5IGNhbGxzIHRvIFxwIG1hcmtEaXZlcmdlbnQuCisgIHZvaWQgY29tcHV0ZSgpOworCisgIC8vLyBcYnJpZWYgV2hldGhlciBhbnkgdmFsdWUgd2FzIG1hcmtlZCBvciBhbmFseXplZCB0byBiZSBkaXZlcmdlbnQuCisgIGJvb2wgaGFzRGV0ZWN0ZWREaXZlcmdlbmNlKCkgY29uc3QgeyByZXR1cm4gIURpdmVyZ2VudFZhbHVlcy5lbXB0eSgpOyB9CisKKyAgLy8vIFxicmllZiBXaGV0aGVyIFxwIFZhbCB3aWxsIGFsd2F5cyByZXR1cm4gYSB1bmlmb3JtIHZhbHVlIHJlZ2FyZGxlc3Mgb2YgaXRzCisgIC8vLyBvcGVyYW5kcworICBib29sIGlzQWx3YXlzVW5pZm9ybShjb25zdCBWYWx1ZSAmVmFsKSBjb25zdDsKKworICAvLy8gXGJyaWVmIFdoZXRoZXIgXHAgVmFsIGlzIGEgZGl2ZXJnZW50IHZhbHVlCisgIGJvb2wgaXNEaXZlcmdlbnQoY29uc3QgVmFsdWUgJlZhbCkgY29uc3Q7CisKKyAgdm9pZCBwcmludChyYXdfb3N0cmVhbSAmT1MsIGNvbnN0IE1vZHVsZSAqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgYm9vbCB1cGRhdGVUZXJtaW5hdG9yKGNvbnN0IEluc3RydWN0aW9uICZUZXJtKSBjb25zdDsKKyAgYm9vbCB1cGRhdGVQSElOb2RlKGNvbnN0IFBISU5vZGUgJlBoaSkgY29uc3Q7CisKKyAgLy8vIFxicmllZiBDb21wdXRlcyB3aGV0aGVyIFxwIEluc3QgaXMgZGl2ZXJnZW50IGJhc2VkIG9uIHRoZQorICAvLy8gZGl2ZXJnZW5jZSBvZiBpdHMgb3BlcmFuZHMuCisgIC8vLworICAvLy8gXHJldHVybnMgV2hldGhlciBccCBJbnN0IGlzIGRpdmVyZ2VudC4KKyAgLy8vCisgIC8vLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmb3Igbm9uLXBoaSwgbm9uLXRlcm1pbmF0b3IgaW5zdHJ1Y3Rpb25zLgorICBib29sIHVwZGF0ZU5vcm1hbEluc3RydWN0aW9uKGNvbnN0IEluc3RydWN0aW9uICZJbnN0KSBjb25zdDsKKworICAvLy8gXGJyaWVmIE1hcmsgdXNlcnMgb2YgbGl2ZS1vdXQgdXNlcnMgYXMgZGl2ZXJnZW50LgorICAvLy8KKyAgLy8vIFxwYXJhbSBMb29wSGVhZGVyIHRoZSBoZWFkZXIgb2YgdGhlIGRpdmVyZ2VudCBsb29wLgorICAvLy8KKyAgLy8vIE1hcmtzIGFsbCB1c2VycyBvZiBsaXZlLW91dCB2YWx1ZXMgb2YgdGhlIGxvb3AgaGVhZGVkIGJ5IFxwIExvb3BIZWFkZXIKKyAgLy8vIGFzIGRpdmVyZ2VudCBhbmQgcHV0cyB0aGVtIG9uIHRoZSB3b3JrbGlzdC4KKyAgdm9pZCB0YWludExvb3BMaXZlT3V0cyhjb25zdCBCYXNpY0Jsb2NrICZMb29wSGVhZGVyKTsKKworICAvLy8gXGJyaWVmIFB1c2ggYWxsIHVzZXJzIG9mIFxwIFZhbCAoaW4gdGhlIHJlZ2lvbikgdG8gdGhlIHdvcmtsaXN0CisgIHZvaWQgcHVzaFVzZXJzKGNvbnN0IFZhbHVlICZJKTsKKworICAvLy8gXGJyaWVmIFB1c2ggYWxsIHBoaSBub2RlcyBpbiBAYmxvY2sgdG8gdGhlIHdvcmtsaXN0CisgIHZvaWQgcHVzaFBISU5vZGVzKGNvbnN0IEJhc2ljQmxvY2sgJkJsb2NrKTsKKworICAvLy8gXGJyaWVmIE1hcmsgXHAgQmxvY2sgYXMgam9pbiBkaXZlcmdlbnQKKyAgLy8vCisgIC8vLyBBIGJsb2NrIGlzIGpvaW4gZGl2ZXJnZW50IGlmIHR3byB0aHJlYWRzIG1heSByZWFjaCBpdCBmcm9tIGRpZmZlcmVudAorICAvLy8gaW5jb21pbmcgYmxvY2tzIGF0IHRoZSBzYW1lIHRpbWUuCisgIHZvaWQgbWFya0Jsb2NrSm9pbkRpdmVyZ2VudChjb25zdCBCYXNpY0Jsb2NrICZCbG9jaykgeworICAgIERpdmVyZ2VudEpvaW5CbG9ja3MuaW5zZXJ0KCZCbG9jayk7CisgIH0KKworICAvLy8gXGJyaWVmIFdoZXRoZXIgXHAgVmFsIGlzIGRpdmVyZ2VudCB3aGVuIHJlYWQgaW4gXHAgT2JzZXJ2aW5nQmxvY2suCisgIGJvb2wgaXNUZW1wb3JhbERpdmVyZ2VudChjb25zdCBCYXNpY0Jsb2NrICZPYnNlcnZpbmdCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZhbHVlICZWYWwpIGNvbnN0OworCisgIC8vLyBcYnJpZWYgV2hldGhlciBccCBCbG9jayBpcyBqb2luIGRpdmVyZ2VudAorICAvLy8KKyAgLy8vIChzZWUgbWFya0Jsb2NrSm9pbkRpdmVyZ2VudCkuCisgIGJvb2wgaXNKb2luRGl2ZXJnZW50KGNvbnN0IEJhc2ljQmxvY2sgJkJsb2NrKSBjb25zdCB7CisgICAgcmV0dXJuIERpdmVyZ2VudEpvaW5CbG9ja3MuZmluZCgmQmxvY2spICE9IERpdmVyZ2VudEpvaW5CbG9ja3MuZW5kKCk7CisgIH0KKworICAvLy8gXGJyaWVmIFByb3BhZ2F0ZSBjb250cm9sLWluZHVjZWQgZGl2ZXJnZW5jZSB0byB1c2VycyAocGhpIG5vZGVzIGFuZAorICAvLy8gaW5zdHJ1Y3Rpb25zKS4KKyAgLy8KKyAgLy8gXHBhcmFtIEpvaW5CbG9jayBpcyBhIGRpdmVyZ2VudCBsb29wIGV4aXQgb3Igam9pbiBwb2ludCBvZiB0d28gZGlzam9pbnQKKyAgLy8gcGF0aHMuCisgIC8vIFxyZXR1cm5zIFdoZXRoZXIgXHAgSm9pbkJsb2NrIGlzIGEgZGl2ZXJnZW50IGxvb3AgZXhpdCBvZiBccCBUZXJtTG9vcC4KKyAgYm9vbCBwcm9wYWdhdGVKb2luRGl2ZXJnZW5jZShjb25zdCBCYXNpY0Jsb2NrICZKb2luQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTG9vcCAqVGVybUxvb3ApOworCisgIC8vLyBcYnJpZWYgUHJvcGFnYXRlIGluZHVjZWQgdmFsdWUgZGl2ZXJnZW5jZSBkdWUgdG8gY29udHJvbCBkaXZlcmdlbmNlIGluIFxwCisgIC8vLyBUZXJtLgorICB2b2lkIHByb3BhZ2F0ZUJyYW5jaERpdmVyZ2VuY2UoY29uc3QgSW5zdHJ1Y3Rpb24gJlRlcm0pOworCisgIC8vLyBcYnJpZWYgUHJvcGFnYXRlIGRpdmVyZ2VudCBjYXVzZWQgYnkgYSBkaXZlcmdlbnQgbG9vcCBleGl0LgorICAvLy8KKyAgLy8vIFxwYXJhbSBFeGl0aW5nTG9vcCBpcyBhIGRpdmVyZ2VudCBsb29wLgorICB2b2lkIHByb3BhZ2F0ZUxvb3BEaXZlcmdlbmNlKGNvbnN0IExvb3AgJkV4aXRpbmdMb29wKTsKKworcHJpdmF0ZToKKyAgY29uc3QgRnVuY3Rpb24gJkY7CisgIC8vIElmIHJlZ2lvbkxvb3AgIT0gbnVsbHB0ciwgYW5hbHlzaXMgaXMgb25seSBwZXJmb3JtZWQgd2l0aGluIFxwIFJlZ2lvbkxvb3AuCisgIC8vIE90dywgYW5hbHl6ZSB0aGUgd2hvbGUgZnVuY3Rpb24KKyAgY29uc3QgTG9vcCAqUmVnaW9uTG9vcDsKKworICBjb25zdCBEb21pbmF0b3JUcmVlICZEVDsKKyAgY29uc3QgTG9vcEluZm8gJkxJOworCisgIC8vIFJlY29nbml6ZWQgZGl2ZXJnZW50IGxvb3BzCisgIERlbnNlU2V0PGNvbnN0IExvb3AgKj4gRGl2ZXJnZW50TG9vcHM7CisKKyAgLy8gVGhlIFNEQSBsaW5rcyBkaXZlcmdlbnQgYnJhbmNoZXMgdG8gZGl2ZXJnZW50IGNvbnRyb2wtZmxvdyBqb2lucy4KKyAgU3luY0RlcGVuZGVuY2VBbmFseXNpcyAmU0RBOworCisgIC8vIFVzZSBzaW1wbGlmaWVkIGNvZGUgcGF0aCBmb3IgTENTU0EgZm9ybS4KKyAgYm9vbCBJc0xDU1NBRm9ybTsKKworICAvLyBTZXQgb2Yga25vd24tdW5pZm9ybSB2YWx1ZXMuCisgIERlbnNlU2V0PGNvbnN0IFZhbHVlICo+IFVuaWZvcm1PdmVycmlkZXM7CisKKyAgLy8gQmxvY2tzIHdpdGggam9pbmluZyBkaXZlcmdlbnQgY29udHJvbCBmcm9tIGRpZmZlcmVudCBwcmVkZWNlc3NvcnMuCisgIERlbnNlU2V0PGNvbnN0IEJhc2ljQmxvY2sgKj4gRGl2ZXJnZW50Sm9pbkJsb2NrczsKKworICAvLyBEZXRlY3RlZC9tYXJrZWQgZGl2ZXJnZW50IHZhbHVlcy4KKyAgRGVuc2VTZXQ8Y29uc3QgVmFsdWUgKj4gRGl2ZXJnZW50VmFsdWVzOworCisgIC8vIEludGVybmFsIHdvcmtsaXN0IGZvciBkaXZlcmdlbmNlIHByb3BhZ2F0aW9uLgorICBzdGQ6OnZlY3Rvcjxjb25zdCBJbnN0cnVjdGlvbiAqPiBXb3JrbGlzdDsKK307CisKKy8vLyBcYnJpZWYgRGl2ZXJnZW5jZSBhbmFseXNpcyBmcm9udGVuZCBmb3IgR1BVIGtlcm5lbHMuCitjbGFzcyBHUFVEaXZlcmdlbmNlQW5hbHlzaXMgeworICBTeW5jRGVwZW5kZW5jZUFuYWx5c2lzIFNEQTsKKyAgRGl2ZXJnZW5jZUFuYWx5c2lzIERBOworCitwdWJsaWM6CisgIC8vLyBSdW5zIHRoZSBkaXZlcmdlbmNlIGFuYWx5c2lzIG9uIEBGLCBhIEdQVSBrZXJuZWwKKyAgR1BVRGl2ZXJnZW5jZUFuYWx5c2lzKEZ1bmN0aW9uICZGLCBjb25zdCBEb21pbmF0b3JUcmVlICZEVCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBvc3REb21pbmF0b3JUcmVlICZQRFQsIGNvbnN0IExvb3BJbmZvICZMSSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRhcmdldFRyYW5zZm9ybUluZm8gJlRUSSk7CisKKyAgLy8vIFdoZXRoZXIgYW55IGRpdmVyZ2VuY2Ugd2FzIGRldGVjdGVkLgorICBib29sIGhhc0RpdmVyZ2VuY2UoKSBjb25zdCB7IHJldHVybiBEQS5oYXNEZXRlY3RlZERpdmVyZ2VuY2UoKTsgfQorCisgIC8vLyBUaGUgR1BVIGtlcm5lbCB0aGlzIGFuYWx5c2lzIHJlc3VsdCBpcyBmb3IKKyAgY29uc3QgRnVuY3Rpb24gJmdldEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gREEuZ2V0RnVuY3Rpb24oKTsgfQorCisgIC8vLyBXaGV0aGVyIFxwIFYgaXMgZGl2ZXJnZW50LgorICBib29sIGlzRGl2ZXJnZW50KGNvbnN0IFZhbHVlICZWKSBjb25zdDsKKworICAvLy8gV2hldGhlciBccCBWIGlzIHVuaWZvcm0vbm9uLWRpdmVyZ2VudAorICBib29sIGlzVW5pZm9ybShjb25zdCBWYWx1ZSAmVikgY29uc3QgeyByZXR1cm4gIWlzRGl2ZXJnZW50KFYpOyB9CisKKyAgLy8vIFByaW50IGFsbCBkaXZlcmdlbnQgdmFsdWVzIGluIHRoZSBrZXJuZWwuCisgIHZvaWQgcHJpbnQocmF3X29zdHJlYW0gJk9TLCBjb25zdCBNb2R1bGUgKikgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZiAvLyBMTFZNX0FOQUxZU0lTX0RJVkVSR0VOQ0VfQU5BTFlTSVNfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Eb21QcmludGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0RvbVByaW50ZXIuaAppbmRleCAwZWQyODk5Li5hMTc3Zjg3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0RvbVByaW50ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0RvbVByaW50ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gRG9tUHJpbnRlci5oIC0gRG9tIHByaW50ZXIgZXh0ZXJuYWwgaW50ZXJmYWNlIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRG9tVHJlZVVwZGF0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvRG9tVHJlZVVwZGF0ZXIuaApzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBsaW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RvbVRyZWVVcGRhdGVyLmgKcmVuYW1lIHRvIGxpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvRG9tVHJlZVVwZGF0ZXIuaAppbmRleCBlNWJiMDkyLi5mY2ZkM2MxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RvbVRyZWVVcGRhdGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Eb21UcmVlVXBkYXRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERvbVRyZWVVcGRhdGVyLmggLSBEb21UcmVlL1Bvc3QgRG9tVHJlZSBVcGRhdGVyIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMiw4ICsxMSw4IEBACiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIAotI2lmbmRlZiBMTFZNX0RPTVRSRUVVUERBVEVSX0gKLSNkZWZpbmUgTExWTV9ET01UUkVFVVBEQVRFUl9ICisjaWZuZGVmIExMVk1fQU5BTFlTSVNfRE9NVFJFRVVQREFURVJfSAorI2RlZmluZSBMTFZNX0FOQUxZU0lTX0RPTVRSRUVVUERBVEVSX0gKIAogI2luY2x1ZGUgImxsdm0vQW5hbHlzaXMvUG9zdERvbWluYXRvcnMuaCIKICNpbmNsdWRlICJsbHZtL0lSL0RvbWluYXRvcnMuaCIKQEAgLTI1NCw0ICsyNTMsNCBAQAogfTsKIH0gLy8gbmFtZXNwYWNlIGxsdm0KIAotI2VuZGlmIC8vIExMVk1fRE9NVFJFRVVQREFURVJfSAorI2VuZGlmIC8vIExMVk1fQU5BTFlTSVNfRE9NVFJFRVVQREFURVJfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Eb21pbmFuY2VGcm9udGllci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Eb21pbmFuY2VGcm9udGllci5oCmluZGV4IGQ5NGM0MjAuLmMwYmYzMGUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvRG9taW5hbmNlRnJvbnRpZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0RvbWluYW5jZUZyb250aWVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BbmFseXNpcy9Eb21pbmFuY2VGcm9udGllci5oIC0gRG9taW5hdG9yIEZyb250aWVycyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvRG9taW5hbmNlRnJvbnRpZXJJbXBsLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0RvbWluYW5jZUZyb250aWVySW1wbC5oCmluZGV4IDk5MjI0YzAuLmFhNzY0YmUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvRG9taW5hbmNlRnJvbnRpZXJJbXBsLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Eb21pbmFuY2VGcm9udGllckltcGwuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FuYWx5c2lzL0RvbWluYW5jZUZyb250aWVyLmggLSBEb21pbmF0b3IgRnJvbnRpZXJzIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9FSFBlcnNvbmFsaXRpZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvRUhQZXJzb25hbGl0aWVzLmgKaW5kZXggZmUwZTY1Yi4uZDg5YWExMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9FSFBlcnNvbmFsaXRpZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0VIUGVyc29uYWxpdGllcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEVIUGVyc29uYWxpdGllcy5oIC0gQ29tcHV0ZSBFSC1yZWxhdGVkIGluZm9ybWF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9HbG9iYWxzTW9kUmVmLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0dsb2JhbHNNb2RSZWYuaAppbmRleCAwOWNlZjY4Li4xNGIyMDk3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0dsb2JhbHNNb2RSZWYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0dsb2JhbHNNb2RSZWYuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBHbG9iYWxzTW9kUmVmLmggLSBTaW1wbGUgTW9kL1JlZiBBQSBmb3IgR2xvYmFscyAtLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKQEAgLTg4LDcgKzg3LDcgQEAKICAgQWxpYXNSZXN1bHQgYWxpYXMoY29uc3QgTWVtb3J5TG9jYXRpb24gJkxvY0EsIGNvbnN0IE1lbW9yeUxvY2F0aW9uICZMb2NCKTsKIAogICB1c2luZyBBQVJlc3VsdEJhc2U6OmdldE1vZFJlZkluZm87Ci0gIE1vZFJlZkluZm8gZ2V0TW9kUmVmSW5mbyhJbW11dGFibGVDYWxsU2l0ZSBDUywgY29uc3QgTWVtb3J5TG9jYXRpb24gJkxvYyk7CisgIE1vZFJlZkluZm8gZ2V0TW9kUmVmSW5mbyhjb25zdCBDYWxsQmFzZSAqQ2FsbCwgY29uc3QgTWVtb3J5TG9jYXRpb24gJkxvYyk7CiAKICAgLy8vIGdldE1vZFJlZkJlaGF2aW9yIC0gUmV0dXJuIHRoZSBiZWhhdmlvciBvZiB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9uIGlmCiAgIC8vLyBjYWxsZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGNhbGwgc2l0ZS4gIFRoZSBjYWxsIHNpdGUgbWF5IGJlIG51bGwgaW4gd2hpY2gKQEAgLTk4LDcgKzk3LDcgQEAKICAgLy8vIGdldE1vZFJlZkJlaGF2aW9yIC0gUmV0dXJuIHRoZSBiZWhhdmlvciBvZiB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9uIGlmCiAgIC8vLyBjYWxsZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGNhbGwgc2l0ZS4gIFRoZSBjYWxsIHNpdGUgbWF5IGJlIG51bGwgaW4gd2hpY2gKICAgLy8vIGNhc2UgdGhlIG1vc3QgZ2VuZXJpYyBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSByZXR1cm5lZC4KLSAgRnVuY3Rpb25Nb2RSZWZCZWhhdmlvciBnZXRNb2RSZWZCZWhhdmlvcihJbW11dGFibGVDYWxsU2l0ZSBDUyk7CisgIEZ1bmN0aW9uTW9kUmVmQmVoYXZpb3IgZ2V0TW9kUmVmQmVoYXZpb3IoY29uc3QgQ2FsbEJhc2UgKkNhbGwpOwogCiBwcml2YXRlOgogICBGdW5jdGlvbkluZm8gKmdldEZ1bmN0aW9uSW5mbyhjb25zdCBGdW5jdGlvbiAqRik7CkBAIC0xMTMsNyArMTEyLDcgQEAKICAgdm9pZCBDb2xsZWN0U0NDTWVtYmVyc2hpcChDYWxsR3JhcGggJkNHKTsKIAogICBib29sIGlzTm9uRXNjYXBpbmdHbG9iYWxOb0FsaWFzKGNvbnN0IEdsb2JhbFZhbHVlICpHViwgY29uc3QgVmFsdWUgKlYpOwotICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm9Gb3JBcmd1bWVudChJbW11dGFibGVDYWxsU2l0ZSBDUywKKyAgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvRm9yQXJndW1lbnQoY29uc3QgQ2FsbEJhc2UgKkNhbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdsb2JhbFZhbHVlICpHVik7CiB9OwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0d1YXJkVXRpbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvR3VhcmRVdGlscy5oCmluZGV4IDNiMTUxZWUuLjQxZTdiN2MgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvR3VhcmRVdGlscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvR3VhcmRVdGlscy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBHdWFyZFV0aWxzLmggLSBVdGlscyBmb3Igd29yayB3aXRoIGd1YXJkcyAtLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vIFV0aWxzIHRoYXQgYXJlIHVzZWQgdG8gcGVyZm9ybSBhbmFseXplcyByZWxhdGVkIHRvIGd1YXJkcyBhbmQgdGhlaXIKQEAgLTE1LDEyICsxNCwzMSBAQAogCiBuYW1lc3BhY2UgbGx2bSB7CiAKK2NsYXNzIEJhc2ljQmxvY2s7CiBjbGFzcyBVc2VyOworY2xhc3MgVmFsdWU7CiAKLS8vLyBSZXR1cm5zIHRydWUgaWZmIFxwIFUgaGFzIHNlbWFudGljcyBvZiBhIGd1YXJkLgorLy8vIFJldHVybnMgdHJ1ZSBpZmYgXHAgVSBoYXMgc2VtYW50aWNzIG9mIGEgZ3VhcmQgZXhwcmVzc2VkIGluIGEgZm9ybSBvZiBjYWxsCisvLy8gb2YgbGx2bS5leHBlcmltZW50YWwuZ3VhcmQgaW50cmluc2ljLgogYm9vbCBpc0d1YXJkKGNvbnN0IFVzZXIgKlUpOwogCisvLy8gUmV0dXJucyB0cnVlIGlmZiBccCBVIGhhcyBzZW1hbnRpY3Mgb2YgYSBndWFyZCBleHByZXNzZWQgaW4gYSBmb3JtIG9mIGEKKy8vLyB3aWRlbmFibGUgY29uZGl0aW9uYWwgYnJhbmNoIHRvIGRlb3B0IGJsb2NrLgorYm9vbCBpc0d1YXJkQXNXaWRlbmFibGVCcmFuY2goY29uc3QgVXNlciAqVSk7CisKKy8vLyBJZiBVIGlzIHdpZGVuYWJsZSBicmFuY2ggbG9va2luZyBsaWtlOgorLy8vICAgJWNvbmQgPSAuLi4KKy8vLyAgICV3YyA9IGNhbGwgaTEgQGxsdm0uZXhwZXJpbWVudGFsLndpZGVuYWJsZS5jb25kaXRpb24oKQorLy8vICAgJWJyYW5jaF9jb25kID0gYW5kIGkxICVjb25kLCAld2MKKy8vLyAgIGJyIGkxICVicmFuY2hfY29uZCwgbGFiZWwgJWlmX3RydWVfYmIsIGxhYmVsICVpZl9mYWxzZV9iYiA7IDwtLS0gVQorLy8vIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUsIGFuZCB0aGUgdmFsdWVzICVjb25kIGFuZCAld2MgYW5kIGJsb2NrcworLy8vICVpZl90cnVlX2JiLCBpZl9mYWxzZV9iYiBhcmUgcmV0dXJuZWQgaW4KKy8vLyB0aGUgcGFyYW1ldGVycyAoQ29uZGl0aW9uLCBXaWRlbmFibGVDb25kaXRpb24sIElmVHJ1ZUJCIGFuZCBJZkZhbHNlRkYpCisvLy8gcmVzcGVjdGl2ZWx5LiBJZiBccCBVIGRvZXMgbm90IG1hdGNoIHRoaXMgcGF0dGVybiwgcmV0dXJuIGZhbHNlLgorYm9vbCBwYXJzZVdpZGVuYWJsZUJyYW5jaChjb25zdCBVc2VyICpVLCBWYWx1ZSAqJkNvbmRpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgKiZXaWRlbmFibGVDb25kaXRpb24sIEJhc2ljQmxvY2sgKiZJZlRydWVCQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqJklmRmFsc2VCQik7CisKIH0gLy8gbGx2bQogCiAjZW5kaWYgLy8gTExWTV9BTkFMWVNJU19HVUFSRFVUSUxTX0gKLQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JVkRlc2NyaXB0b3JzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0lWRGVzY3JpcHRvcnMuaAppbmRleCBkMWQ3ZTVlLi4yNTRjYWJmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0lWRGVzY3JpcHRvcnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0lWRGVzY3JpcHRvcnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FuYWx5c2lzL0lWRGVzY3JpcHRvcnMuaCAtIEluZFZhciBEZXNjcmlwdG9ycyAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTQwLDcgKzEzOSw4IEBACiAKICAgLy8vIFJldHVybnMgdHJ1ZSBpZiBpbnN0cnVjdGlvbiBJIGhhcyBtdWx0aXBsZSB1c2VzIGluIEluc3RzCiAgIHN0YXRpYyBib29sIGhhc011bHRpcGxlVXNlc09mKEluc3RydWN0aW9uICpJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWFsbFB0clNldEltcGw8SW5zdHJ1Y3Rpb24gKj4gJkluc3RzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU21hbGxQdHJTZXRJbXBsPEluc3RydWN0aW9uICo+ICZJbnN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTWF4TnVtVXNlcyk7CiAKICAgLy8vIFJldHVybnMgdHJ1ZSBpZiBhbGwgdXNlcyBvZiB0aGUgaW5zdHJ1Y3Rpb24gSSBpcyB3aXRoaW4gdGhlIFNldC4KICAgc3RhdGljIGJvb2wgYXJlQWxsVXNlc0luKEluc3RydWN0aW9uICpJLCBTbWFsbFB0clNldEltcGw8SW5zdHJ1Y3Rpb24gKj4gJlNldCk7CkBAIC0xNTAsNiArMTUwLDEwIEBACiAgIC8vLyBvciBtYXgoWCwgWSkuCiAgIHN0YXRpYyBJbnN0RGVzYyBpc01pbk1heFNlbGVjdENtcFBhdHRlcm4oSW5zdHJ1Y3Rpb24gKkksIEluc3REZXNjICZQcmV2KTsKIAorICAvLy8gUmV0dXJucyBhIHN0cnVjdCBkZXNjcmliaW5nIGlmIHRoZSBpbnN0cnVjdGlvbiBpcyBhCisgIC8vLyBTZWxlY3QoRkNtcChYLCBZKSwgKFogPSBYIG9wIFBISU5vZGUpLCBQSElOb2RlKSBpbnN0cnVjdGlvbiBwYXR0ZXJuLgorICBzdGF0aWMgSW5zdERlc2MgaXNDb25kaXRpb25hbFJkeFBhdHRlcm4oUmVjdXJyZW5jZUtpbmQgS2luZCwgSW5zdHJ1Y3Rpb24gKkkpOworCiAgIC8vLyBSZXR1cm5zIGlkZW50aXR5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIFJlY3VycmVuY2VLaW5kLgogICBzdGF0aWMgQ29uc3RhbnQgKmdldFJlY3VycmVuY2VJZGVudGl0eShSZWN1cnJlbmNlS2luZCBLLCBUeXBlICpUcCk7CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSVZVc2Vycy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JVlVzZXJzLmgKaW5kZXggMDM1Yjk3NC4uZjhlYTNiYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JVlVzZXJzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JVlVzZXJzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BbmFseXNpcy9JVlVzZXJzLmggLSBJbmR1Y3Rpb24gVmFyaWFibGUgVXNlcnMgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSW5kaXJlY3RDYWxsUHJvbW90aW9uQW5hbHlzaXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSW5kaXJlY3RDYWxsUHJvbW90aW9uQW5hbHlzaXMuaAppbmRleCBiZTNhMjg0Li44YTA1ZTkxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0luZGlyZWN0Q2FsbFByb21vdGlvbkFuYWx5c2lzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JbmRpcmVjdENhbGxQcm9tb3Rpb25BbmFseXNpcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEluZGlyZWN0Q2FsbFByb21vdGlvbkFuYWx5c2lzLmggLSBJbmRpcmVjdCBjYWxsIGFuYWx5c2lzIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JbmRpcmVjdENhbGxTaXRlVmlzaXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JbmRpcmVjdENhbGxTaXRlVmlzaXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzBiNTlmLi4wMDAwMDAwCi0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSW5kaXJlY3RDYWxsU2l0ZVZpc2l0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vPT09LS0gSW5kaXJlY3RDYWxsU2l0ZVZpc2l0b3IuaCAtIGluZGlyZWN0IGNhbGwtc2l0ZXMgdmlzaXRvciAtLS0tLS0tLS0tLT09PS8vCi0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KLS8vCi0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotLy8KLS8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGRlZmluZXMgYSB2aXNpdG9yIGNsYXNzIGFuZCBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IGZpbmQKLS8vIGFsbCBpbmRpcmVjdCBjYWxsLXNpdGVzIGluIGEgZnVuY3Rpb24uCi0KLSNpZm5kZWYgTExWTV9BTkFMWVNJU19JTkRJUkVDVENBTExTSVRFVklTSVRPUl9ICi0jZGVmaW5lIExMVk1fQU5BTFlTSVNfSU5ESVJFQ1RDQUxMU0lURVZJU0lUT1JfSAotCi0jaW5jbHVkZSAibGx2bS9JUi9JbnN0VmlzaXRvci5oIgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotbmFtZXNwYWNlIGxsdm0gewotLy8gVmlzaXRvciBjbGFzcyB0aGF0IGZpbmRzIGFsbCBpbmRpcmVjdCBjYWxsIHNpdGVzLgotc3RydWN0IFBHT0luZGlyZWN0Q2FsbFNpdGVWaXNpdG9yCi0gICAgOiBwdWJsaWMgSW5zdFZpc2l0b3I8UEdPSW5kaXJlY3RDYWxsU2l0ZVZpc2l0b3I+IHsKLSAgc3RkOjp2ZWN0b3I8SW5zdHJ1Y3Rpb24gKj4gSW5kaXJlY3RDYWxsSW5zdHM7Ci0gIFBHT0luZGlyZWN0Q2FsbFNpdGVWaXNpdG9yKCkge30KLQotICB2b2lkIHZpc2l0Q2FsbFNpdGUoQ2FsbFNpdGUgQ1MpIHsKLSAgICBpZiAoQ1MuaXNJbmRpcmVjdENhbGwoKSkKLSAgICAgIEluZGlyZWN0Q2FsbEluc3RzLnB1c2hfYmFjayhDUy5nZXRJbnN0cnVjdGlvbigpKTsKLSAgfQotfTsKLQotLy8gSGVscGVyIGZ1bmN0aW9uIHRoYXQgZmluZHMgYWxsIGluZGlyZWN0IGNhbGwgc2l0ZXMuCi1pbmxpbmUgc3RkOjp2ZWN0b3I8SW5zdHJ1Y3Rpb24gKj4gZmluZEluZGlyZWN0Q2FsbFNpdGVzKEZ1bmN0aW9uICZGKSB7Ci0gIFBHT0luZGlyZWN0Q2FsbFNpdGVWaXNpdG9yIElDVjsKLSAgSUNWLnZpc2l0KEYpOwotICByZXR1cm4gSUNWLkluZGlyZWN0Q2FsbEluc3RzOwotfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSW5kaXJlY3RDYWxsVmlzaXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JbmRpcmVjdENhbGxWaXNpdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQxZjNmNAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSW5kaXJlY3RDYWxsVmlzaXRvci5oCkBAIC0wLDAgKzEsMzggQEAKKy8vPT09LS0gSW5kaXJlY3RDYWxsVmlzaXRvci5oIC0gaW5kaXJlY3QgY2FsbCB2aXNpdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgZGVmaW5lcyBhIHZpc2l0b3IgY2xhc3MgYW5kIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgZmluZAorLy8gYWxsIGluZGlyZWN0IGNhbGwtc2l0ZXMgaW4gYSBmdW5jdGlvbi4KKworI2lmbmRlZiBMTFZNX0FOQUxZU0lTX0lORElSRUNUQ0FMTFZJU0lUT1JfSAorI2RlZmluZSBMTFZNX0FOQUxZU0lTX0lORElSRUNUQ0FMTFZJU0lUT1JfSAorCisjaW5jbHVkZSAibGx2bS9JUi9JbnN0VmlzaXRvci5oIgorI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNwYWNlIGxsdm0geworLy8gVmlzaXRvciBjbGFzcyB0aGF0IGZpbmRzIGFsbCBpbmRpcmVjdCBjYWxsLgorc3RydWN0IFBHT0luZGlyZWN0Q2FsbFZpc2l0b3IgOiBwdWJsaWMgSW5zdFZpc2l0b3I8UEdPSW5kaXJlY3RDYWxsVmlzaXRvcj4geworICBzdGQ6OnZlY3RvcjxJbnN0cnVjdGlvbiAqPiBJbmRpcmVjdENhbGxzOworICBQR09JbmRpcmVjdENhbGxWaXNpdG9yKCkge30KKworICB2b2lkIHZpc2l0Q2FsbEJhc2UoQ2FsbEJhc2UgJkNhbGwpIHsKKyAgICBpZiAoQ2FsbC5pc0luZGlyZWN0Q2FsbCgpKQorICAgICAgSW5kaXJlY3RDYWxscy5wdXNoX2JhY2soJkNhbGwpOworICB9Cit9OworCisvLyBIZWxwZXIgZnVuY3Rpb24gdGhhdCBmaW5kcyBhbGwgaW5kaXJlY3QgY2FsbCBzaXRlcy4KK2lubGluZSBzdGQ6OnZlY3RvcjxJbnN0cnVjdGlvbiAqPiBmaW5kSW5kaXJlY3RDYWxscyhGdW5jdGlvbiAmRikgeworICBQR09JbmRpcmVjdENhbGxWaXNpdG9yIElDVjsKKyAgSUNWLnZpc2l0KEYpOworICByZXR1cm4gSUNWLkluZGlyZWN0Q2FsbHM7Cit9Cit9IC8vIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JbmxpbmVDb3N0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0lubGluZUNvc3QuaAppbmRleCA1MjlmYjc1Li5lMzg2MDkzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0lubGluZUNvc3QuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0lubGluZUNvc3QuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJbmxpbmVDb3N0LmggLSBDb3N0IGFuYWx5c2lzIGZvciBpbmxpbmVyIC0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNDYsNyArNDUsNiBAQAogY29uc3QgaW50IENhbGxQZW5hbHR5ID0gMjU7CiBjb25zdCBpbnQgTGFzdENhbGxUb1N0YXRpY0JvbnVzID0gMTUwMDA7CiBjb25zdCBpbnQgQ29sZGNjUGVuYWx0eSA9IDIwMDA7Ci1jb25zdCBpbnQgTm9yZXR1cm5QZW5hbHR5ID0gMTAwMDA7CiAvLy8gRG8gbm90IGlubGluZSBmdW5jdGlvbnMgd2hpY2ggYWxsb2NhdGUgdGhpcyBtYW55IGJ5dGVzIG9uIHRoZSBzdGFjawogLy8vIHdoZW4gdGhlIGNhbGxlciBpcyByZWN1cnNpdmUuCiBjb25zdCB1bnNpZ25lZCBUb3RhbEFsbG9jYVNpemVSZWN1cnNpdmVDYWxsZXIgPSAxMDI0OwpAQCAtMjMzLDcgKzIzMSw3IEBACiAgICAgICAgICAgICAgIFByb2ZpbGVTdW1tYXJ5SW5mbyAqUFNJLCBPcHRpbWl6YXRpb25SZW1hcmtFbWl0dGVyICpPUkUpOwogCiAvLy8gTWluaW1hbCBmaWx0ZXIgdG8gZGV0ZWN0IGludmFsaWQgY29uc3RydWN0cyBmb3IgaW5saW5pbmcuCi1ib29sIGlzSW5saW5lVmlhYmxlKEZ1bmN0aW9uICZDYWxsZWUpOworSW5saW5lUmVzdWx0IGlzSW5saW5lVmlhYmxlKEZ1bmN0aW9uICZDYWxsZWUpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSW5zdHJ1Y3Rpb25QcmVjZWRlbmNlVHJhY2tpbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSW5zdHJ1Y3Rpb25QcmVjZWRlbmNlVHJhY2tpbmcuaAppbmRleCA1MTc4YTMzLi5lYjcyZWFjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0luc3RydWN0aW9uUHJlY2VkZW5jZVRyYWNraW5nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JbnN0cnVjdGlvblByZWNlZGVuY2VUcmFja2luZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBJbnN0cnVjdGlvblByZWNlZGVuY2VUcmFja2luZy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vIEltcGxlbWVudHMgYSBjbGFzcyB0aGF0IGlzIGFibGUgdG8gZGVmaW5lIHNvbWUgaW5zdHJ1Y3Rpb25zIGFzICJzcGVjaWFsIgpAQCAtNzUsOCArNzQsMTQgQEAKICAgdmlydHVhbCB+SW5zdHJ1Y3Rpb25QcmVjZWRlbmNlVHJhY2tpbmcoKSA9IGRlZmF1bHQ7CiAKIHB1YmxpYzoKLSAgLy8vIENsZWFycyBjYWNoZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBwYXJ0aWN1bGFyIGJsb2NrLgotICB2b2lkIGludmFsaWRhdGVCbG9jayhjb25zdCBCYXNpY0Jsb2NrICpCQik7CisgIC8vLyBOb3RpZmllcyB0aGlzIHRyYWNraW5nIHRoYXQgd2UgYXJlIGdvaW5nIHRvIGluc2VydCBhIG5ldyBpbnN0cnVjdGlvbiBccAorICAvLy8gSW5zdCB0byB0aGUgYmFzaWMgYmxvY2sgXHAgQkIuIEl0IG1ha2VzIGFsbCBuZWNlc3NhcnkgdXBkYXRlcyB0byBpbnRlcm5hbAorICAvLy8gY2FjaGVzIHRvIGtlZXAgdGhlbSBjb25zaXN0ZW50LgorICB2b2lkIGluc2VydEluc3RydWN0aW9uVG8oY29uc3QgSW5zdHJ1Y3Rpb24gKkluc3QsIGNvbnN0IEJhc2ljQmxvY2sgKkJCKTsKKworICAvLy8gTm90aWZpZXMgdGhpcyB0cmFja2luZyB0aGF0IHdlIGFyZSBnb2luZyB0byByZW1vdmUgdGhlIGluc3RydWN0aW9uIFxwIEluc3QKKyAgLy8vIEl0IG1ha2VzIGFsbCBuZWNlc3NhcnkgdXBkYXRlcyB0byBpbnRlcm5hbCBjYWNoZXMgdG8ga2VlcCB0aGVtIGNvbnNpc3RlbnQuCisgIHZvaWQgcmVtb3ZlSW5zdHJ1Y3Rpb24oY29uc3QgSW5zdHJ1Y3Rpb24gKkluc3QpOwogCiAgIC8vLyBJbnZhbGlkYXRlcyBhbGwgaW5mb3JtYXRpb24gZnJvbSB0aGlzIHRyYWNraW5nLgogICB2b2lkIGNsZWFyKCk7CkBAIC0xMTQsNiArMTE5LDMxIEBACiAgIHZpcnR1YWwgYm9vbCBpc1NwZWNpYWxJbnN0cnVjdGlvbihjb25zdCBJbnN0cnVjdGlvbiAqSW5zbikgY29uc3Q7CiB9OwogCitjbGFzcyBNZW1vcnlXcml0ZVRyYWNraW5nIDogcHVibGljIEluc3RydWN0aW9uUHJlY2VkZW5jZVRyYWNraW5nIHsKK3B1YmxpYzoKKyAgTWVtb3J5V3JpdGVUcmFja2luZyhEb21pbmF0b3JUcmVlICpEVCkgOiBJbnN0cnVjdGlvblByZWNlZGVuY2VUcmFja2luZyhEVCkge30KKworICAvLy8gUmV0dXJucyB0aGUgdG9wbW9zdCBpbnN0cnVjdGlvbiB0aGF0IG1heSB3cml0ZSBtZW1vcnkgZnJvbSB0aGUgZ2l2ZW4KKyAgLy8vIGJhc2ljIGJsb2NrLiBSZXR1cm5zIG51bGxwdHIgaWYgdGhlcmUgaXMgbm8gc3VjaCBpbnN0cnVjdGlvbnMgaW4gdGhlIGJsb2NrLgorICBjb25zdCBJbnN0cnVjdGlvbiAqZ2V0Rmlyc3RNZW1vcnlXcml0ZShjb25zdCBCYXNpY0Jsb2NrICpCQikgeworICAgIHJldHVybiBnZXRGaXJzdFNwZWNpYWxJbnN0cnVjdGlvbihCQik7CisgIH0KKworICAvLy8gUmV0dXJucyB0cnVlIGlmIGF0IGxlYXN0IG9uZSBpbnN0cnVjdGlvbiBmcm9tIHRoZSBnaXZlbiBiYXNpYyBibG9jayBtYXkKKyAgLy8vIHdyaXRlIG1lbW9yeS4KKyAgYm9vbCBtYXlXcml0ZVRvTWVtb3J5KGNvbnN0IEJhc2ljQmxvY2sgKkJCKSB7CisgICAgcmV0dXJuIGhhc1NwZWNpYWxJbnN0cnVjdGlvbnMoQkIpOworICB9CisKKyAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZmlyc3QgbWVtb3J5IHdyaXRpbmcgaW5zdHJ1Y3Rpb24gb2YgSW5zbidzIGJsb2NrCisgIC8vLyBleGlzdHMgYW5kIGRvbWluYXRlcyBJbnNuLgorICBib29sIGlzRG9taW5hdGVkQnlNZW1vcnlXcml0ZUZyb21TYW1lQmxvY2soY29uc3QgSW5zdHJ1Y3Rpb24gKkluc24pIHsKKyAgICByZXR1cm4gaXNQcmVjZWVkZWRCeVNwZWNpYWxJbnN0cnVjdGlvbihJbnNuKTsKKyAgfQorCisgIHZpcnR1YWwgYm9vbCBpc1NwZWNpYWxJbnN0cnVjdGlvbihjb25zdCBJbnN0cnVjdGlvbiAqSW5zbikgY29uc3Q7Cit9OworCiB9IC8vIGxsdm0KIAogI2VuZGlmIC8vIExMVk1fQU5BTFlTSVNfSU5TVFJVQ1RJT05QUkVDRURFTkNFVFJBQ0tJTkdfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JbnN0cnVjdGlvblNpbXBsaWZ5LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0luc3RydWN0aW9uU2ltcGxpZnkuaAppbmRleCA2NjYyZTkxLi5hOTA0MDQzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0luc3RydWN0aW9uU2ltcGxpZnkuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0luc3RydWN0aW9uU2ltcGxpZnkuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gSW5zdHJ1Y3Rpb25TaW1wbGlmeS5oIC0gRm9sZCBpbnN0cnMgaW50byBzaW1wbGVyIGZvcm1zIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNDEsOCArNDAsOCBAQAogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIFRBcmdzPiBjbGFzcyBBbmFseXNpc01hbmFnZXI7CiB0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgQXJyYXlSZWY7CiBjbGFzcyBBc3N1bXB0aW9uQ2FjaGU7CitjbGFzcyBDYWxsQmFzZTsKIGNsYXNzIERvbWluYXRvclRyZWU7Ci1jbGFzcyBJbW11dGFibGVDYWxsU2l0ZTsKIGNsYXNzIERhdGFMYXlvdXQ7CiBjbGFzcyBGYXN0TWF0aEZsYWdzOwogc3RydWN0IExvb3BTdGFuZGFyZEFuYWx5c2lzUmVzdWx0czsKQEAgLTIzOSwxNSArMjM4LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgIEZhc3RNYXRoRmxhZ3MgRk1GLCBjb25zdCBTaW1wbGlmeVF1ZXJ5ICZRKTsKIAogLy8vIEdpdmVuIGEgY2FsbHNpdGUsIGZvbGQgdGhlIHJlc3VsdCBvciByZXR1cm4gbnVsbC4KLVZhbHVlICpTaW1wbGlmeUNhbGwoSW1tdXRhYmxlQ2FsbFNpdGUgQ1MsIGNvbnN0IFNpbXBsaWZ5UXVlcnkgJlEpOworVmFsdWUgKlNpbXBsaWZ5Q2FsbChDYWxsQmFzZSAqQ2FsbCwgY29uc3QgU2ltcGxpZnlRdWVyeSAmUSk7CiAKIC8vLyBHaXZlbiBhIGZ1bmN0aW9uIGFuZCBpdGVyYXRvcnMgb3ZlciBhcmd1bWVudHMsIGZvbGQgdGhlIHJlc3VsdCBvciByZXR1cm4KIC8vLyBudWxsLgotVmFsdWUgKlNpbXBsaWZ5Q2FsbChJbW11dGFibGVDYWxsU2l0ZSBDUywgVmFsdWUgKlYsIFVzZXI6Om9wX2l0ZXJhdG9yIEFyZ0JlZ2luLAorVmFsdWUgKlNpbXBsaWZ5Q2FsbChDYWxsQmFzZSAqQ2FsbCwgVmFsdWUgKlYsIFVzZXI6Om9wX2l0ZXJhdG9yIEFyZ0JlZ2luLAogICAgICAgICAgICAgICAgICAgICBVc2VyOjpvcF9pdGVyYXRvciBBcmdFbmQsIGNvbnN0IFNpbXBsaWZ5UXVlcnkgJlEpOwogCiAvLy8gR2l2ZW4gYSBmdW5jdGlvbiBhbmQgc2V0IG9mIGFyZ3VtZW50cywgZm9sZCB0aGUgcmVzdWx0IG9yIHJldHVybiBudWxsLgotVmFsdWUgKlNpbXBsaWZ5Q2FsbChJbW11dGFibGVDYWxsU2l0ZSBDUywgVmFsdWUgKlYsIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCitWYWx1ZSAqU2ltcGxpZnlDYWxsKENhbGxCYXNlICpDYWxsLCBWYWx1ZSAqViwgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2ltcGxpZnlRdWVyeSAmUSk7CiAKIC8vLyBTZWUgaWYgd2UgY2FuIGNvbXB1dGUgYSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgdGhpcyBpbnN0cnVjdGlvbi4gSWYgbm90LApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JbnRlcnZhbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JbnRlcnZhbC5oCmluZGV4IGYzNzE0ZGQuLjVjOWE0NTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSW50ZXJ2YWwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0ludGVydmFsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BbmFseXNpcy9JbnRlcnZhbC5oIC0gSW50ZXJ2YWwgQ2xhc3MgRGVjbGFyYXRpb24gLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSW50ZXJ2YWxJdGVyYXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JbnRlcnZhbEl0ZXJhdG9yLmgKaW5kZXggNmZmY2FlNS4uZWZhYWY5NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JbnRlcnZhbEl0ZXJhdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JbnRlcnZhbEl0ZXJhdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSW50ZXJ2YWxJdGVyYXRvci5oIC0gSW50ZXJ2YWwgSXRlcmF0b3IgRGVjbGFyYXRpb24gLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSW50ZXJ2YWxQYXJ0aXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSW50ZXJ2YWxQYXJ0aXRpb24uaAppbmRleCA1MDMzNTE2Li41YjEyN2MyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0ludGVydmFsUGFydGl0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9JbnRlcnZhbFBhcnRpdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEludGVydmFsUGFydGl0aW9uLmggLSBJbnRlcnZhbCBwYXJ0aXRpb24gQ2FsY3VsYXRpb24gLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0l0ZXJhdGVkRG9taW5hbmNlRnJvbnRpZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSXRlcmF0ZWREb21pbmFuY2VGcm9udGllci5oCmluZGV4IGZkZWJiMWIuLmU3ZDE5ZDEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSXRlcmF0ZWREb21pbmFuY2VGcm9udGllci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvSXRlcmF0ZWREb21pbmFuY2VGcm9udGllci5oCkBAIC0xLDEyICsxLDExIEBACiAvLz09PS0gSXRlcmF0ZWREb21pbmFuY2VGcm9udGllci5oIC0gQ2FsY3VsYXRlIElERiAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotLy8KKy8vLyBcZmlsZQogLy8vIENvbXB1dGUgaXRlcmF0ZWQgZG9taW5hbmNlIGZyb250aWVycyB1c2luZyBhIGxpbmVhciB0aW1lIGFsZ29yaXRobS4KIC8vLwogLy8vIFRoZSBhbGdvcml0aG0gdXNlZCBoZXJlIGlzIGJhc2VkIG9uOgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9MYXp5QmxvY2tGcmVxdWVuY3lJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xhenlCbG9ja0ZyZXF1ZW5jeUluZm8uaAppbmRleCBkMWFmYjYzLi4wZTdkYzk0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xhenlCbG9ja0ZyZXF1ZW5jeUluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xhenlCbG9ja0ZyZXF1ZW5jeUluZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMYXp5QmxvY2tGcmVxdWVuY3lJbmZvLmggLSBMYXp5IEJsb2NrIEZyZXF1ZW5jeSBBbmFseXNpcyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9MYXp5QnJhbmNoUHJvYmFiaWxpdHlJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xhenlCcmFuY2hQcm9iYWJpbGl0eUluZm8uaAppbmRleCA5ZTZiY2ZlLi5jYWUwNzc4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xhenlCcmFuY2hQcm9iYWJpbGl0eUluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xhenlCcmFuY2hQcm9iYWJpbGl0eUluZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMYXp5QnJhbmNoUHJvYmFiaWxpdHlJbmZvLmggLSBMYXp5IEJyYW5jaCBQcm9iYWJpbGl0eSAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9MYXp5Q2FsbEdyYXBoLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xhenlDYWxsR3JhcGguaAppbmRleCBkMWVjNmE5Li4zMjg2NTQ3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xhenlDYWxsR3JhcGguaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xhenlDYWxsR3JhcGguaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMYXp5Q2FsbEdyYXBoLmggLSBBbmFseXNpcyBvZiBhIE1vZHVsZSdzIGNhbGwgZ3JhcGggLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTGF6eVZhbHVlSW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9MYXp5VmFsdWVJbmZvLmgKaW5kZXggMWE0ZmRiNS4uNTcwYTUwNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9MYXp5VmFsdWVJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9MYXp5VmFsdWVJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTGF6eVZhbHVlSW5mby5oIC0gVmFsdWUgY29uc3RyYWludCBhbmFseXNpcyAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTGVnYWN5RGl2ZXJnZW5jZUFuYWx5c2lzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xlZ2FjeURpdmVyZ2VuY2VBbmFseXNpcy5oCmluZGV4IDE3M2NhMjguLjBhMzM4YjggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTGVnYWN5RGl2ZXJnZW5jZUFuYWx5c2lzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9MZWdhY3lEaXZlcmdlbmNlQW5hbHlzaXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FuYWx5c2lzL0xlZ2FjeURpdmVyZ2VuY2VBbmFseXNpcy5oIC0gS2VybmVsRGl2ZXJnZW5jZSBBbmFseXNpcyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTksOSArMTgsMTEgQEAKICNpbmNsdWRlICJsbHZtL0FEVC9EZW5zZVNldC5oIgogI2luY2x1ZGUgImxsdm0vSVIvRnVuY3Rpb24uaCIKICNpbmNsdWRlICJsbHZtL1Bhc3MuaCIKKyNpbmNsdWRlICJsbHZtL0FuYWx5c2lzL0RpdmVyZ2VuY2VBbmFseXNpcy5oIgogCiBuYW1lc3BhY2UgbGx2bSB7CiBjbGFzcyBWYWx1ZTsKK2NsYXNzIEdQVURpdmVyZ2VuY2VBbmFseXNpczsKIGNsYXNzIExlZ2FjeURpdmVyZ2VuY2VBbmFseXNpcyA6IHB1YmxpYyBGdW5jdGlvblBhc3MgewogcHVibGljOgogICBzdGF0aWMgY2hhciBJRDsKQEAgLTQxLDcgKzQyLDcgQEAKICAgLy8KICAgLy8gRXZlbiBpZiB0aGlzIGZ1bmN0aW9uIHJldHVybnMgZmFsc2UsIFYgbWF5IHN0aWxsIGJlIGRpdmVyZ2VudCB3aGVuIHVzZWQKICAgLy8gaW4gYSBkaWZmZXJlbnQgYmFzaWMgYmxvY2suCi0gIGJvb2wgaXNEaXZlcmdlbnQoY29uc3QgVmFsdWUgKlYpIGNvbnN0IHsgcmV0dXJuIERpdmVyZ2VudFZhbHVlcy5jb3VudChWKTsgfQorICBib29sIGlzRGl2ZXJnZW50KGNvbnN0IFZhbHVlICpWKSBjb25zdDsKIAogICAvLyBSZXR1cm5zIHRydWUgaWYgViBpcyB1bmlmb3JtL25vbi1kaXZlcmdlbnQuCiAgIC8vCkBAIC01Myw2ICs1NCwxMiBAQAogICB2b2lkIHJlbW92ZVZhbHVlKGNvbnN0IFZhbHVlICpWKSB7IERpdmVyZ2VudFZhbHVlcy5lcmFzZShWKTsgfQogCiBwcml2YXRlOgorICAvLyBXaGV0aGVyIGFuYWx5c2lzIHNob3VsZCBiZSBwZXJmb3JtZWQgYnkgR1BVRGl2ZXJnZW5jZUFuYWx5c2lzLgorICBib29sIHNob3VsZFVzZUdQVURpdmVyZ2VuY2VBbmFseXNpcyhjb25zdCBGdW5jdGlvbiAmRikgY29uc3Q7CisKKyAgLy8gKG9wdGlvbmFsKSBoYW5kbGUgdG8gbmV3IERpdmVyZ2VuY2VBbmFseXNpcworICBzdGQ6OnVuaXF1ZV9wdHI8R1BVRGl2ZXJnZW5jZUFuYWx5c2lzPiBncHVEQTsKKwogICAvLyBTdG9yZXMgYWxsIGRpdmVyZ2VudCB2YWx1ZXMuCiAgIERlbnNlU2V0PGNvbnN0IFZhbHVlICo+IERpdmVyZ2VudFZhbHVlczsKIH07CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xpbnQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTGludC5oCmluZGV4IGRiNTkxOWYuLjBmZWE4MWUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTGludC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTGludC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0FuYWx5c2lzL0xpbnQuaCAtIExMVk0gSVIgTGludCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xvYWRzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xvYWRzLmgKaW5kZXggZjExMGMyOC4uMDQ0MDExNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Mb2Fkcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTG9hZHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMb2Fkcy5oIC0gTG9jYWwgbG9hZCBhbmFseXNpcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Mb29wQWNjZXNzQW5hbHlzaXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTG9vcEFjY2Vzc0FuYWx5c2lzLmgKaW5kZXggODZiNDAyYi4uZmEzNGFmYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Mb29wQWNjZXNzQW5hbHlzaXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xvb3BBY2Nlc3NBbmFseXNpcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQW5hbHlzaXMvTG9vcEFjY2Vzc0FuYWx5c2lzLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC05Nyw2ICs5NiwxOSBAQAogICAvLy8gU2V0IG9mIHBvdGVudGlhbCBkZXBlbmRlbnQgbWVtb3J5IGFjY2Vzc2VzLgogICB0eXBlZGVmIEVxdWl2YWxlbmNlQ2xhc3NlczxNZW1BY2Nlc3NJbmZvPiBEZXBDYW5kaWRhdGVzOwogCisgIC8vLyBUeXBlIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHN0YXR1cyBvZiB0aGUgZGVwZW5kZW5jZSBjaGVjay4gVGhlIG9yZGVyIG9mCisgIC8vLyB0aGUgZWxlbWVudHMgaXMgaW1wb3J0YW50IGFuZCBoYXMgdG8gYmUgZnJvbSBtb3N0IHBlcm1pc3NpdmUgdG8gbGVhc3QKKyAgLy8vIHBlcm1pc3NpdmUuCisgIGVudW0gY2xhc3MgVmVjdG9yaXphdGlvblNhZmV0eVN0YXR1cyB7CisgICAgLy8gQ2FuIHZlY3Rvcml6ZSBzYWZlbHkgd2l0aG91dCBSVCBjaGVja3MuIEFsbCBkZXBlbmRlbmNlcyBhcmUga25vd24gdG8gYmUKKyAgICAvLyBzYWZlLgorICAgIFNhZmUsCisgICAgLy8gQ2FuIHBvc3NpYmx5IHZlY3Rvcml6ZSB3aXRoIFJUIGNoZWNrcyB0byBvdmVyY29tZSB1bmtub3duIGRlcGVuZGVuY2llcy4KKyAgICBQb3NzaWJseVNhZmVXaXRoUnRDaGVja3MsCisgICAgLy8gQ2Fubm90IHZlY3Rvcml6ZSBkdWUgdG8ga25vd24gdW5zYWZlIGRlcGVuZGVuY2llcy4KKyAgICBVbnNhZmUsCisgIH07CisKICAgLy8vIERlcGVuZGVjZSBiZXR3ZWVuIG1lbW9yeSBhY2Nlc3MgaW5zdHJ1Y3Rpb25zLgogICBzdHJ1Y3QgRGVwZW5kZW5jZSB7CiAgICAgLy8vIFRoZSB0eXBlIG9mIHRoZSBkZXBlbmRlbmNlLgpAQCAtMTQ2LDcgKzE1OCw3IEBACiAgICAgSW5zdHJ1Y3Rpb24gKmdldERlc3RpbmF0aW9uKGNvbnN0IExvb3BBY2Nlc3NJbmZvICZMQUkpIGNvbnN0OwogCiAgICAgLy8vIERlcGVuZGVuY2UgdHlwZXMgdGhhdCBkb24ndCBwcmV2ZW50IHZlY3Rvcml6YXRpb24uCi0gICAgc3RhdGljIGJvb2wgaXNTYWZlRm9yVmVjdG9yaXphdGlvbihEZXBUeXBlIFR5cGUpOworICAgIHN0YXRpYyBWZWN0b3JpemF0aW9uU2FmZXR5U3RhdHVzIGlzU2FmZUZvclZlY3Rvcml6YXRpb24oRGVwVHlwZSBUeXBlKTsKIAogICAgIC8vLyBMZXhpY2FsbHkgZm9yd2FyZCBkZXBlbmRlbmNlLgogICAgIGJvb2wgaXNGb3J3YXJkKCkgY29uc3Q7CkBAIC0xNjQsOCArMTc2LDggQEAKIAogICBNZW1vcnlEZXBDaGVja2VyKFByZWRpY2F0ZWRTY2FsYXJFdm9sdXRpb24gJlBTRSwgY29uc3QgTG9vcCAqTCkKICAgICAgIDogUFNFKFBTRSksIElubmVybW9zdExvb3AoTCksIEFjY2Vzc0lkeCgwKSwgTWF4U2FmZVJlZ2lzdGVyV2lkdGgoLTFVKSwKLSAgICAgICAgU2hvdWxkUmV0cnlXaXRoUnVudGltZUNoZWNrKGZhbHNlKSwgU2FmZUZvclZlY3Rvcml6YXRpb24odHJ1ZSksCi0gICAgICAgIFJlY29yZERlcGVuZGVuY2VzKHRydWUpIHt9CisgICAgICAgIEZvdW5kTm9uQ29uc3RhbnREaXN0YW5jZURlcGVuZGVuY2UoZmFsc2UpLAorICAgICAgICBTdGF0dXMoVmVjdG9yaXphdGlvblNhZmV0eVN0YXR1czo6U2FmZSksIFJlY29yZERlcGVuZGVuY2VzKHRydWUpIHt9CiAKICAgLy8vIFJlZ2lzdGVyIHRoZSBsb2NhdGlvbiAoaW5zdHJ1Y3Rpb25zIGFyZSBnaXZlbiBpbmNyZWFzaW5nIG51bWJlcnMpCiAgIC8vLyBvZiBhIHdyaXRlIGFjY2Vzcy4KQEAgLTE5Myw3ICsyMDUsOSBAQAogCiAgIC8vLyBObyBtZW1vcnkgZGVwZW5kZW5jZSB3YXMgZW5jb3VudGVyZWQgdGhhdCB3b3VsZCBpbmhpYml0CiAgIC8vLyB2ZWN0b3JpemF0aW9uLgotICBib29sIGlzU2FmZUZvclZlY3Rvcml6YXRpb24oKSBjb25zdCB7IHJldHVybiBTYWZlRm9yVmVjdG9yaXphdGlvbjsgfQorICBib29sIGlzU2FmZUZvclZlY3Rvcml6YXRpb24oKSBjb25zdCB7CisgICAgcmV0dXJuIFN0YXR1cyA9PSBWZWN0b3JpemF0aW9uU2FmZXR5U3RhdHVzOjpTYWZlOworICB9CiAKICAgLy8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyBvZiBhIHZlY3RvciByZWdpc3RlciB3ZSBjYW4gdmVjdG9yaXplCiAgIC8vLyB0aGUgYWNjZXNzZXMgc2FmZWx5IHdpdGguCkBAIC0yMDUsNyArMjE5LDEwIEBACiAKICAgLy8vIEluIHNhbWUgY2FzZXMgd2hlbiB0aGUgZGVwZW5kZW5jeSBjaGVjayBmYWlscyB3ZSBjYW4gc3RpbGwKICAgLy8vIHZlY3Rvcml6ZSB0aGUgbG9vcCB3aXRoIGEgZHluYW1pYyBhcnJheSBhY2Nlc3MgY2hlY2suCi0gIGJvb2wgc2hvdWxkUmV0cnlXaXRoUnVudGltZUNoZWNrKCkgeyByZXR1cm4gU2hvdWxkUmV0cnlXaXRoUnVudGltZUNoZWNrOyB9CisgIGJvb2wgc2hvdWxkUmV0cnlXaXRoUnVudGltZUNoZWNrKCkgY29uc3QgeworICAgIHJldHVybiBGb3VuZE5vbkNvbnN0YW50RGlzdGFuY2VEZXBlbmRlbmNlICYmCisgICAgICAgICAgIFN0YXR1cyA9PSBWZWN0b3JpemF0aW9uU2FmZXR5U3RhdHVzOjpQb3NzaWJseVNhZmVXaXRoUnRDaGVja3M7CisgIH0KIAogICAvLy8gUmV0dXJucyB0aGUgbWVtb3J5IGRlcGVuZGVuY2VzLiAgSWYgbnVsbCBpcyByZXR1cm5lZCB3ZSBleGNlZWRlZAogICAvLy8gdGhlIE1heERlcGVuZGVuY2VzIHRocmVzaG9sZCBhbmQgdGhpcyBpbmZvcm1hdGlvbiBpcyBub3QKQEAgLTI2NywxMSArMjg0LDEyIEBACiAKICAgLy8vIElmIHdlIHNlZSBhIG5vbi1jb25zdGFudCBkZXBlbmRlbmNlIGRpc3RhbmNlIHdlIGNhbiBzdGlsbCB0cnkgdG8KICAgLy8vIHZlY3Rvcml6ZSB0aGlzIGxvb3Agd2l0aCBydW50aW1lIGNoZWNrcy4KLSAgYm9vbCBTaG91bGRSZXRyeVdpdGhSdW50aW1lQ2hlY2s7CisgIGJvb2wgRm91bmROb25Db25zdGFudERpc3RhbmNlRGVwZW5kZW5jZTsKIAotICAvLy8gTm8gbWVtb3J5IGRlcGVuZGVuY2Ugd2FzIGVuY291bnRlcmVkIHRoYXQgd291bGQgaW5oaWJpdAotICAvLy8gdmVjdG9yaXphdGlvbi4KLSAgYm9vbCBTYWZlRm9yVmVjdG9yaXphdGlvbjsKKyAgLy8vIFJlc3VsdCBvZiB0aGUgZGVwZW5kZW5jZSBjaGVja3MsIGluZGljYXRpbmcgd2hldGhlciB0aGUgY2hlY2tlZAorICAvLy8gZGVwZW5kZW5jZXMgYXJlIHNhZmUgZm9yIHZlY3Rvcml6YXRpb24sIHJlcXVpcmUgUlQgY2hlY2tzIG9yIGFyZSBrbm93biB0bworICAvLy8gYmUgdW5zYWZlLgorICBWZWN0b3JpemF0aW9uU2FmZXR5U3RhdHVzIFN0YXR1czsKIAogICAvLy8vIFRydWUgaWYgRGVwZW5kZW5jZXMgcmVmbGVjdHMgdGhlIGRlcGVuZGVuY2VzIGluIHRoZQogICAvLy8vIGxvb3AuICBJZiBmYWxzZSB3ZSBleGNlZWRlZCBNYXhEZXBlbmRlbmNlcyBhbmQKQEAgLTMwNCw2ICszMjIsMTEgQEAKICAgLy8vIFxyZXR1cm4gZmFsc2UgaWYgd2Ugc2hvdWxkbid0IHZlY3Rvcml6ZSBhdCBhbGwgb3IgYXZvaWQgbGFyZ2VyCiAgIC8vLyB2ZWN0b3JpemF0aW9uIGZhY3RvcnMgYnkgbGltaXRpbmcgTWF4U2FmZURlcERpc3RCeXRlcy4KICAgYm9vbCBjb3VsZFByZXZlbnRTdG9yZUxvYWRGb3J3YXJkKHVpbnQ2NF90IERpc3RhbmNlLCB1aW50NjRfdCBUeXBlQnl0ZVNpemUpOworCisgIC8vLyBVcGRhdGVzIHRoZSBjdXJyZW50IHNhZmV0eSBzdGF0dXMgd2l0aCBccCBTLiBXZSBjYW4gZ28gZnJvbSBTYWZlIHRvCisgIC8vLyBlaXRoZXIgUG9zc2libHlTYWZlV2l0aFJ0Q2hlY2tzIG9yIFVuc2FmZSBhbmQgZnJvbQorICAvLy8gUG9zc2libHlTYWZlV2l0aFJ0Q2hlY2tzIHRvIFVuc2FmZS4KKyAgdm9pZCBtZXJnZUluU3RhdHVzKFZlY3Rvcml6YXRpb25TYWZldHlTdGF0dXMgUyk7CiB9OwogCiAvLy8gSG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1lbW9yeSBydW50aW1lIGxlZ2FsaXR5IGNoZWNrcyB0byB2ZXJpZnkKQEAgLTU2NCwxMCArNTg3LDEwIEBACiAgIC8vLyBQcmludCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1lbW9yeSBhY2Nlc3NlcyBpbiB0aGUgbG9vcC4KICAgdm9pZCBwcmludChyYXdfb3N0cmVhbSAmT1MsIHVuc2lnbmVkIERlcHRoID0gMCkgY29uc3Q7CiAKLSAgLy8vIElmIHRoZSBsb29wIGhhcyBhbnkgc3RvcmUgb2YgYSB2YXJpYW50IHZhbHVlIHRvIGFuIGludmFyaWFudCBhZGRyZXNzLCB0aGVuCi0gIC8vLyByZXR1cm4gdHJ1ZSwgZWxzZSByZXR1cm4gZmFsc2UuCi0gIGJvb2wgaGFzVmFyaWFudFN0b3JlVG9Mb29wSW52YXJpYW50QWRkcmVzcygpIGNvbnN0IHsKLSAgICByZXR1cm4gSGFzVmFyaWFudFN0b3JlVG9Mb29wSW52YXJpYW50QWRkcmVzczsKKyAgLy8vIElmIHRoZSBsb29wIGhhcyBtZW1vcnkgZGVwZW5kZW5jZSBpbnZvbHZpbmcgYW4gaW52YXJpYW50IGFkZHJlc3MsIGkuZS4gdHdvCisgIC8vLyBzdG9yZXMgb3IgYSBzdG9yZSBhbmQgYSBsb2FkLCB0aGVuIHJldHVybiB0cnVlLCBlbHNlIHJldHVybiBmYWxzZS4KKyAgYm9vbCBoYXNEZXBlbmRlbmNlSW52b2x2aW5nTG9vcEludmFyaWFudEFkZHJlc3MoKSBjb25zdCB7CisgICAgcmV0dXJuIEhhc0RlcGVuZGVuY2VJbnZvbHZpbmdMb29wSW52YXJpYW50QWRkcmVzczsKICAgfQogCiAgIC8vLyBVc2VkIHRvIGFkZCBydW50aW1lIFNDRVYgY2hlY2tzLiBTaW1wbGlmaWVzIFNDRVYgZXhwcmVzc2lvbnMgYW5kIGNvbnZlcnRzCkBAIC02MjAsOCArNjQzLDggQEAKICAgLy8vIENhY2hlIHRoZSByZXN1bHQgb2YgYW5hbHl6ZUxvb3AuCiAgIGJvb2wgQ2FuVmVjTWVtOwogCi0gIC8vLyBJbmRpY2F0b3IgdGhhdCB0aGVyZSBpcyBhIHN0b3JlIG9mIGEgdmFyaWFudCB2YWx1ZSB0byBhIHVuaWZvcm0gYWRkcmVzcy4KLSAgYm9vbCBIYXNWYXJpYW50U3RvcmVUb0xvb3BJbnZhcmlhbnRBZGRyZXNzOworICAvLy8gSW5kaWNhdG9yIHRoYXQgdGhlcmUgYXJlIG5vbiB2ZWN0b3JpemFibGUgc3RvcmVzIHRvIGEgdW5pZm9ybSBhZGRyZXNzLgorICBib29sIEhhc0RlcGVuZGVuY2VJbnZvbHZpbmdMb29wSW52YXJpYW50QWRkcmVzczsKIAogICAvLy8gVGhlIGRpYWdub3N0aWNzIHJlcG9ydCBnZW5lcmF0ZWQgZm9yIHRoZSBhbmFseXNpcy4gIEUuZy4gd2h5IHdlCiAgIC8vLyBjb3VsZG4ndCBhbmFseXplIHRoZSBsb29wLgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Mb29wQW5hbHlzaXNNYW5hZ2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xvb3BBbmFseXNpc01hbmFnZXIuaAppbmRleCAwMGU1NjJjLi5iODdkOTgxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xvb3BBbmFseXNpc01hbmFnZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xvb3BBbmFseXNpc01hbmFnZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMb29wQW5hbHlzaXNNYW5hZ2VyLmggLSBMb29wIGFuYWx5c2lzIG1hbmFnZW1lbnQgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTG9vcEluZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTG9vcEluZm8uaAppbmRleCAzMGIyOWQ2Li4wODk5NjMwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xvb3BJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Mb29wSW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQW5hbHlzaXMvTG9vcEluZm8uaCAtIE5hdHVyYWwgTG9vcCBDYWxjdWxhdG9yIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00MDgsNiArNDA3LDEyIEBACiAgIC8vLyBWZXJpZnkgbG9vcCBzdHJ1Y3R1cmUgb2YgdGhpcyBsb29wIGFuZCBhbGwgbmVzdGVkIGxvb3BzLgogICB2b2lkIHZlcmlmeUxvb3BOZXN0KERlbnNlU2V0PGNvbnN0IExvb3BUICo+ICpMb29wcykgY29uc3Q7CiAKKyAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgbG9vcCBpcyBhbm5vdGF0ZWQgcGFyYWxsZWwuCisgIC8vLworICAvLy8gRGVyaXZlZCBjbGFzc2VzIGNhbiBvdmVycmlkZSB0aGlzIG1ldGhvZCB1c2luZyBzdGF0aWMgdGVtcGxhdGUKKyAgLy8vIHBvbHltb3JwaGlzbS4KKyAgYm9vbCBpc0Fubm90YXRlZFBhcmFsbGVsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAvLy8gUHJpbnQgbG9vcCB3aXRoIGFsbCB0aGUgQkJzIGluc2lkZSBpdC4KICAgdm9pZCBwcmludChyYXdfb3N0cmVhbSAmT1MsIHVuc2lnbmVkIERlcHRoID0gMCwgYm9vbCBWZXJib3NlID0gZmFsc2UpIGNvbnN0OwogCkBAIC05ODksNiArOTk0LDQ2IEBACiAvLy8gRnVuY3Rpb24gdG8gcHJpbnQgYSBsb29wJ3MgY29udGVudHMgYXMgTExWTSdzIHRleHQgSVIgYXNzZW1ibHkuCiB2b2lkIHByaW50TG9vcChMb29wICZMLCByYXdfb3N0cmVhbSAmT1MsIGNvbnN0IHN0ZDo6c3RyaW5nICZCYW5uZXIgPSAiIik7CiAKKy8vLyBGaW5kIGFuZCByZXR1cm4gdGhlIGxvb3AgYXR0cmlidXRlIG5vZGUgZm9yIHRoZSBhdHRyaWJ1dGUgQHAgTmFtZSBpbgorLy8vIEBwIExvb3BJRC4gUmV0dXJuIG51bGxwdHIgaWYgdGhlcmUgaXMgbm8gc3VjaCBhdHRyaWJ1dGUuCitNRE5vZGUgKmZpbmRPcHRpb25NREZvckxvb3BJRChNRE5vZGUgKkxvb3BJRCwgU3RyaW5nUmVmIE5hbWUpOworCisvLy8gRmluZCBzdHJpbmcgbWV0YWRhdGEgZm9yIGEgbG9vcC4KKy8vLworLy8vIFJldHVybnMgdGhlIE1ETm9kZSB3aGVyZSB0aGUgZmlyc3Qgb3BlcmFuZCBpcyB0aGUgbWV0YWRhdGEncyBuYW1lLiBUaGUKKy8vLyBmb2xsb3dpbmcgb3BlcmFuZHMgYXJlIHRoZSBtZXRhZGF0YSdzIHZhbHVlcy4gSWYgbm8gbWV0YWRhdGEgd2l0aCBAcCBOYW1lIGlzCisvLy8gZm91bmQsIHJldHVybiBudWxscHRyLgorTUROb2RlICpmaW5kT3B0aW9uTURGb3JMb29wKGNvbnN0IExvb3AgKlRoZUxvb3AsIFN0cmluZ1JlZiBOYW1lKTsKKworLy8vIFJldHVybiB3aGV0aGVyIGFuIE1ETm9kZSBtaWdodCByZXByZXNlbnQgYW4gYWNjZXNzIGdyb3VwLgorLy8vCisvLy8gQWNjZXNzIGdyb3VwIG1ldGFkYXRhIG5vZGVzIGhhdmUgdG8gYmUgZGlzdGluY3QgYW5kIGVtcHR5LiBCZWluZworLy8vIGFsd2F5cy1lbXB0eSBlbnN1cmVzIHRoYXQgaXQgbmV2ZXIgbmVlZHMgdG8gYmUgY2hhbmdlZCAod2hpY2ggLS0gYmVjYXVzZQorLy8vIE1ETm9kZXMgYXJlIGRlc2lnbmVkIGltbXV0YWJsZSAtLSB3b3VsZCByZXF1aXJlIGNyZWF0aW5nIGEgbmV3IE1ETm9kZSkuIE5vdGUKKy8vLyB0aGF0IHRoaXMgaXMgbm90IGEgc3VmZmljaWVudCBjb25kaXRpb246IG5vdCBldmVyeSBkaXN0aW5jdCBhbmQgZW1wdHkgTkROb2RlCisvLy8gaXMgcmVwcmVzZW50aW5nIGFuIGFjY2VzcyBncm91cC4KK2Jvb2wgaXNWYWxpZEFzQWNjZXNzR3JvdXAoTUROb2RlICpBY2NHcm91cCk7CisKKy8vLyBDcmVhdGUgYSBuZXcgTG9vcElEIGFmdGVyIHRoZSBsb29wIGhhcyBiZWVuIHRyYW5zZm9ybWVkLgorLy8vCisvLy8gVGhpcyBjYW4gYmUgdXNlZCB3aGVuIG5vIGZvbGxvdy11cCBsb29wIGF0dHJpYnV0ZXMgYXJlIGRlZmluZWQKKy8vLyAobGx2bTo6bWFrZUZvbGxvd3VwTG9vcElEIHJldHVybmluZyBOb25lKSB0byBzdG9wIHRyYW5zZm9ybWF0aW9ucyB0byBiZQorLy8vIGFwcGxpZWQgYWdhaW4uCisvLy8KKy8vLyBAcGFyYW0gQ29udGV4dCAgICAgICAgVGhlIExMVk1Db250ZXh0IGluIHdoaWNoIHRvIGNyZWF0ZSB0aGUgbmV3IExvb3BJRC4KKy8vLyBAcGFyYW0gT3JpZ0xvb3BJRCAgICAgVGhlIG9yaWdpbmFsIExvb3BJRDsgY2FuIGJlIG51bGxwdHIgaWYgdGhlIG9yaWdpbmFsCisvLy8gICAgICAgICAgICAgICAgICAgICAgIGxvb3AgaGFzIG5vIExvb3BJRC4KKy8vLyBAcGFyYW0gUmVtb3ZlUHJlZml4ZXMgUmVtb3ZlIGFsbCBsb29wIGF0dHJpYnV0ZXMgdGhhdCBoYXZlIHRoZXNlIHByZWZpeGVzLgorLy8vICAgICAgICAgICAgICAgICAgICAgICBVc2UgdG8gcmVtb3ZlIG1ldGFkYXRhIG9mIHRoZSB0cmFuc2Zvcm1hdGlvbiB0aGF0IGhhcworLy8vICAgICAgICAgICAgICAgICAgICAgICBiZWVuIGFwcGxpZWQuCisvLy8gQHBhcmFtIEFkZEF0dHJzICAgICAgIEFkZCB0aGVzZSBsb29wIGF0dHJpYnV0ZXMgdG8gdGhlIG5ldyBMb29wSUQuCisvLy8KKy8vLyBAcmV0dXJuIEEgbmV3IExvb3BJRCB0aGF0IGNhbiBiZSBhcHBsaWVkIHVzaW5nIExvb3A6OnNldExvb3BJRCgpLgorbGx2bTo6TUROb2RlICoKK21ha2VQb3N0VHJhbnNmb3JtYXRpb25NZXRhZGF0YShsbHZtOjpMTFZNQ29udGV4dCAmQ29udGV4dCwgTUROb2RlICpPcmlnTG9vcElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkFycmF5UmVmPGxsdm06OlN0cmluZ1JlZj4gUmVtb3ZlUHJlZml4ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6QXJyYXlSZWY8bGx2bTo6TUROb2RlICo+IEFkZEF0dHJzKTsKKwogfSAvLyBFbmQgbGx2bSBuYW1lc3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xvb3BJbmZvSW1wbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Mb29wSW5mb0ltcGwuaAppbmRleCBkMzA1NGI3Li5hZDQyNTA4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xvb3BJbmZvSW1wbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTG9vcEluZm9JbXBsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BbmFseXNpcy9Mb29wSW5mb0ltcGwuaCAtIE5hdHVyYWwgTG9vcCBDYWxjdWxhdG9yIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTM5Miw3ICszOTEsMTAgQEAKIHRlbXBsYXRlIDxjbGFzcyBCbG9ja1QsIGNsYXNzIExvb3BUPgogdm9pZCBMb29wQmFzZTxCbG9ja1QsIExvb3BUPjo6cHJpbnQocmF3X29zdHJlYW0gJk9TLCB1bnNpZ25lZCBEZXB0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVmVyYm9zZSkgY29uc3QgewotICBPUy5pbmRlbnQoRGVwdGggKiAyKSA8PCAiTG9vcCBhdCBkZXB0aCAiIDw8IGdldExvb3BEZXB0aCgpIDw8ICIgY29udGFpbmluZzogIjsKKyAgT1MuaW5kZW50KERlcHRoICogMik7CisgIGlmIChzdGF0aWNfY2FzdDxjb25zdCBMb29wVCAqPih0aGlzKS0+aXNBbm5vdGF0ZWRQYXJhbGxlbCgpKQorICAgIE9TIDw8ICJQYXJhbGxlbCAiOworICBPUyA8PCAiTG9vcCBhdCBkZXB0aCAiIDw8IGdldExvb3BEZXB0aCgpIDw8ICIgY29udGFpbmluZzogIjsKIAogICBCbG9ja1QgKkggPSBnZXRIZWFkZXIoKTsKICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdldEJsb2NrcygpLnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xvb3BJdGVyYXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Mb29wSXRlcmF0b3IuaAppbmRleCA5MWM1NGIyLi5mYTRkYTQyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xvb3BJdGVyYXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTG9vcEl0ZXJhdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLS0tLS0tLSBMb29wSXRlcmF0b3IuaCAtIEl0ZXJhdGUgb3ZlciBsb29wIGJsb2NrcyAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gVGhpcyBmaWxlIGRlZmluZXMgaXRlcmF0b3JzIHRvIHZpc2l0IHRoZSBiYXNpYyBibG9ja3Mgd2l0aGluIGEgbG9vcC4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTG9vcFBhc3MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTG9vcFBhc3MuaAppbmRleCA4NmNmZWNkLi45MjE1YWIzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xvb3BQYXNzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Mb29wUGFzcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExvb3BQYXNzLmggLSBMb29wUGFzcyBjbGFzcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xvb3BVbnJvbGxBbmFseXplci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Mb29wVW5yb2xsQW5hbHl6ZXIuaAppbmRleCBmNDViZjBiLi41ZjMzMmUzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL0xvb3BVbnJvbGxBbmFseXplci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTG9vcFVucm9sbEFuYWx5emVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BbmFseXNpcy9Mb29wVW5yb2xsQW5hbHl6ZXIuaCAtIExvb3AgVW5yb2xsIEFuYWx5emVyLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTWVtb3J5QnVpbHRpbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTWVtb3J5QnVpbHRpbnMuaAppbmRleCA1NDE4MTI4Li40OWI4N2E0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL01lbW9yeUJ1aWx0aW5zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9NZW1vcnlCdWlsdGlucy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0gbGx2bS9BbmFseXNpcy9NZW1vcnlCdWlsdGlucy5oIC0gQ2FsbHMgdG8gbWVtb3J5IGJ1aWx0aW5zIC0tKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNzgsMTQgKzE3NywxMyBAQAogICAgICAgICAgICAgICAgICAgIGNvbnN0IFRhcmdldExpYnJhcnlJbmZvICpUTEksIE9iamVjdFNpemVPcHRzIE9wdHMgPSB7fSk7CiAKIC8vLyBUcnkgdG8gdHVybiBhIGNhbGwgdG8gXEBsbHZtLm9iamVjdHNpemUgaW50byBhbiBpbnRlZ2VyIHZhbHVlIG9mIHRoZSBnaXZlbgotLy8vIFR5cGUuIFJldHVybnMgbnVsbCBvbiBmYWlsdXJlLgotLy8vIElmIE11c3RTdWNjZWVkIGlzIHRydWUsIHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgcmV0dXJuIG51bGwsIGFuZCBtYXkgcmV0dXJuCi0vLy8gY29uc2VydmF0aXZlIHZhbHVlcyBnb3Zlcm5lZCBieSB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBjYWxsIHRvCi0vLy8gb2JqZWN0c2l6ZS4KLUNvbnN0YW50SW50ICpsb3dlck9iamVjdFNpemVDYWxsKEludHJpbnNpY0luc3QgKk9iamVjdFNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEYXRhTGF5b3V0ICZETCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRhcmdldExpYnJhcnlJbmZvICpUTEksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIE11c3RTdWNjZWVkKTsKKy8vLyBUeXBlLiBSZXR1cm5zIG51bGwgb24gZmFpbHVyZS4gSWYgTXVzdFN1Y2NlZWQgaXMgdHJ1ZSwgdGhpcyBmdW5jdGlvbiB3aWxsCisvLy8gbm90IHJldHVybiBudWxsLCBhbmQgbWF5IHJldHVybiBjb25zZXJ2YXRpdmUgdmFsdWVzIGdvdmVybmVkIGJ5IHRoZSBzZWNvbmQKKy8vLyBhcmd1bWVudCBvZiB0aGUgY2FsbCB0byBvYmplY3RzaXplLgorVmFsdWUgKmxvd2VyT2JqZWN0U2l6ZUNhbGwoSW50cmluc2ljSW5zdCAqT2JqZWN0U2l6ZSwgY29uc3QgRGF0YUxheW91dCAmREwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUYXJnZXRMaWJyYXJ5SW5mbyAqVExJLCBib29sIE11c3RTdWNjZWVkKTsKKworCiAKIHVzaW5nIFNpemVPZmZzZXRUeXBlID0gc3RkOjpwYWlyPEFQSW50LCBBUEludD47CiAKQEAgLTI2NSwxNyArMjYzLDE3IEBACiAgIFZhbHVlICpaZXJvOwogICBDYWNoZU1hcFR5IENhY2hlTWFwOwogICBQdHJTZXRUeSBTZWVuVmFsczsKLSAgYm9vbCBSb3VuZFRvQWxpZ247Ci0KLSAgU2l6ZU9mZnNldEV2YWxUeXBlIHVua25vd24oKSB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG51bGxwdHIsIG51bGxwdHIpOwotICB9CisgIE9iamVjdFNpemVPcHRzIEV2YWxPcHRzOwogCiAgIFNpemVPZmZzZXRFdmFsVHlwZSBjb21wdXRlXyhWYWx1ZSAqVik7CiAKIHB1YmxpYzoKKyAgc3RhdGljIFNpemVPZmZzZXRFdmFsVHlwZSB1bmtub3duKCkgeworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihudWxscHRyLCBudWxscHRyKTsKKyAgfQorCiAgIE9iamVjdFNpemVPZmZzZXRFdmFsdWF0b3IoY29uc3QgRGF0YUxheW91dCAmREwsIGNvbnN0IFRhcmdldExpYnJhcnlJbmZvICpUTEksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTUNvbnRleHQgJkNvbnRleHQsIGJvb2wgUm91bmRUb0FsaWduID0gZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1Db250ZXh0ICZDb250ZXh0LCBPYmplY3RTaXplT3B0cyBFdmFsT3B0cyA9IHt9KTsKIAogICBTaXplT2Zmc2V0RXZhbFR5cGUgY29tcHV0ZShWYWx1ZSAqVik7CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTWVtb3J5RGVwZW5kZW5jZUFuYWx5c2lzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL01lbW9yeURlcGVuZGVuY2VBbmFseXNpcy5oCmluZGV4IDFjNDBjZmYuLmRlNTc0OTkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTWVtb3J5RGVwZW5kZW5jZUFuYWx5c2lzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9NZW1vcnlEZXBlbmRlbmNlQW5hbHlzaXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FuYWx5c2lzL01lbW9yeURlcGVuZGVuY2VBbmFseXNpcy5oIC0gTWVtb3J5IERlcHMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzcsNyArMzYsNiBAQAogbmFtZXNwYWNlIGxsdm0gewogCiBjbGFzcyBBc3N1bXB0aW9uQ2FjaGU7Ci1jbGFzcyBDYWxsU2l0ZTsKIGNsYXNzIERvbWluYXRvclRyZWU7CiBjbGFzcyBGdW5jdGlvbjsKIGNsYXNzIEluc3RydWN0aW9uOwpAQCAtMzA0LDcgKzMwMiw3IEBACiAgICAgLy8vIFRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGRlcmVmZXJlbmNlcyBvZiB0aGUgcG9pbnRlci4KICAgICAvLy8KICAgICAvLy8gTWF5IGJlIFVua25vd25TaXplIGlmIHRoZSBzaXplcyBhcmUgdW5rbm93bi4KLSAgICBMb2NhdGlvblNpemUgU2l6ZSA9IE1lbW9yeUxvY2F0aW9uOjpVbmtub3duU2l6ZTsKKyAgICBMb2NhdGlvblNpemUgU2l6ZSA9IExvY2F0aW9uU2l6ZTo6dW5rbm93bigpOwogICAgIC8vLyBUaGUgQUEgdGFncyBhc3NvY2lhdGVkIHdpdGggZGVyZWZlcmVuY2VzIG9mIHRoZSBwb2ludGVyLgogICAgIC8vLwogICAgIC8vLyBUaGUgbWVtYmVycyBtYXkgYmUgbnVsbCBpZiB0aGVyZSBhcmUgbm8gdGFncyBvciBjb25mbGljdGluZyB0YWdzLgpAQCAtMzk4LDcgKzM5Niw3IEBACiAgIC8vLyBpbnZhbGlkYXRlZCBvbiB0aGUgbmV4dCBub24tbG9jYWwgcXVlcnkgb3Igd2hlbiBhbiBpbnN0cnVjdGlvbiBpcwogICAvLy8gcmVtb3ZlZC4gIENsaWVudHMgbXVzdCBjb3B5IHRoaXMgZGF0YSBpZiB0aGV5IHdhbnQgaXQgYXJvdW5kIGxvbmdlciB0aGFuCiAgIC8vLyB0aGF0LgotICBjb25zdCBOb25Mb2NhbERlcEluZm8gJmdldE5vbkxvY2FsQ2FsbERlcGVuZGVuY3koQ2FsbFNpdGUgUXVlcnlDUyk7CisgIGNvbnN0IE5vbkxvY2FsRGVwSW5mbyAmZ2V0Tm9uTG9jYWxDYWxsRGVwZW5kZW5jeShDYWxsQmFzZSAqUXVlcnlDYWxsKTsKIAogICAvLy8gUGVyZm9ybSBhIGZ1bGwgZGVwZW5kZW5jeSBxdWVyeSBmb3IgYW4gYWNjZXNzIHRvIHRoZSBRdWVyeUluc3QncwogICAvLy8gc3BlY2lmaWVkIG1lbW9yeSBsb2NhdGlvbiwgcmV0dXJuaW5nIHRoZSBzZXQgb2YgaW5zdHJ1Y3Rpb25zIHRoYXQgZWl0aGVyCkBAIC00ODIsOSArNDgwLDkgQEAKICAgdm9pZCByZWxlYXNlTWVtb3J5KCk7CiAKIHByaXZhdGU6Ci0gIE1lbURlcFJlc3VsdCBnZXRDYWxsU2l0ZURlcGVuZGVuY3lGcm9tKENhbGxTaXRlIEMsIGJvb2wgaXNSZWFkT25seUNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2s6Oml0ZXJhdG9yIFNjYW5JdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqQkIpOworICBNZW1EZXBSZXN1bHQgZ2V0Q2FsbERlcGVuZGVuY3lGcm9tKENhbGxCYXNlICpDYWxsLCBib29sIGlzUmVhZE9ubHlDYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2s6Oml0ZXJhdG9yIFNjYW5JdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpCQik7CiAgIGJvb2wgZ2V0Tm9uTG9jYWxQb2ludGVyRGVwRnJvbUJCKEluc3RydWN0aW9uICpRdWVyeUluc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBISVRyYW5zQWRkciAmUG9pbnRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWVtb3J5TG9jYXRpb24gJkxvYywgYm9vbCBpc0xvYWQsCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL01lbW9yeUxvY2F0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL01lbW9yeUxvY2F0aW9uLmgKaW5kZXggNTA5ZWZhMi4uN2MyNjM1MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9NZW1vcnlMb2NhdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTWVtb3J5TG9jYXRpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNZW1vcnlMb2NhdGlvbi5oIC0gTWVtb3J5IGxvY2F0aW9uIGRlc2NyaXB0aW9ucyAtLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKQEAgLTE2LDkgKzE1LDkgQEAKICNpZm5kZWYgTExWTV9BTkFMWVNJU19NRU1PUllMT0NBVElPTl9ICiAjZGVmaW5lIExMVk1fQU5BTFlTSVNfTUVNT1JZTE9DQVRJT05fSAogCi0jaW5jbHVkZSAibGx2bS9BRFQvT3B0aW9uYWwuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9EZW5zZU1hcEluZm8uaCIKLSNpbmNsdWRlICJsbHZtL0lSL0NhbGxTaXRlLmgiCisjaW5jbHVkZSAibGx2bS9BRFQvT3B0aW9uYWwuaCIKKyNpbmNsdWRlICJsbHZtL0lSL0luc3RydWN0aW9ucy5oIgogI2luY2x1ZGUgImxsdm0vSVIvTWV0YWRhdGEuaCIKIAogbmFtZXNwYWNlIGxsdm0gewpAQCAtMTM1LDYgKzEzNCw5IEBACiAgICAgcmV0dXJuIChWYWx1ZSAmIEltcHJlY2lzZUJpdCkgPT0gMDsKICAgfQogCisgIC8vIENvbnZlbmllbmNlIG1ldGhvZCB0byBjaGVjayBpZiB0aGlzIExvY2F0aW9uU2l6ZSdzIHZhbHVlIGlzIDAuCisgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gaGFzVmFsdWUoKSAmJiBnZXRWYWx1ZSgpID09IDA7IH0KKwogICBib29sIG9wZXJhdG9yPT0oY29uc3QgTG9jYXRpb25TaXplICZPdGhlcikgY29uc3QgewogICAgIHJldHVybiBWYWx1ZSA9PSBPdGhlci5WYWx1ZTsKICAgfQpAQCAtMjMxLDE1ICsyMzMsMTUgQEAKICAgc3RhdGljIE1lbW9yeUxvY2F0aW9uIGdldEZvckRlc3QoY29uc3QgQW55TWVtSW50cmluc2ljICpNSSk7CiAKICAgLy8vIFJldHVybiBhIGxvY2F0aW9uIHJlcHJlc2VudGluZyBhIHBhcnRpY3VsYXIgYXJndW1lbnQgb2YgYSBjYWxsLgotICBzdGF0aWMgTWVtb3J5TG9jYXRpb24gZ2V0Rm9yQXJndW1lbnQoSW1tdXRhYmxlQ2FsbFNpdGUgQ1MsIHVuc2lnbmVkIEFyZ0lkeCwKKyAgc3RhdGljIE1lbW9yeUxvY2F0aW9uIGdldEZvckFyZ3VtZW50KGNvbnN0IENhbGxCYXNlICpDYWxsLCB1bnNpZ25lZCBBcmdJZHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUYXJnZXRMaWJyYXJ5SW5mbyAqVExJKTsKLSAgc3RhdGljIE1lbW9yeUxvY2F0aW9uIGdldEZvckFyZ3VtZW50KEltbXV0YWJsZUNhbGxTaXRlIENTLCB1bnNpZ25lZCBBcmdJZHgsCisgIHN0YXRpYyBNZW1vcnlMb2NhdGlvbiBnZXRGb3JBcmd1bWVudChjb25zdCBDYWxsQmFzZSAqQ2FsbCwgdW5zaWduZWQgQXJnSWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGFyZ2V0TGlicmFyeUluZm8gJlRMSSkgewotICAgIHJldHVybiBnZXRGb3JBcmd1bWVudChDUywgQXJnSWR4LCAmVExJKTsKKyAgICByZXR1cm4gZ2V0Rm9yQXJndW1lbnQoQ2FsbCwgQXJnSWR4LCAmVExJKTsKICAgfQogCiAgIGV4cGxpY2l0IE1lbW9yeUxvY2F0aW9uKGNvbnN0IFZhbHVlICpQdHIgPSBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvblNpemUgU2l6ZSA9IFVua25vd25TaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGlvblNpemUgU2l6ZSA9IExvY2F0aW9uU2l6ZTo6dW5rbm93bigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBQU1ETm9kZXMgJkFBVGFncyA9IEFBTUROb2RlcygpKQogICAgICAgOiBQdHIoUHRyKSwgU2l6ZShTaXplKSwgQUFUYWdzKEFBVGFncykge30KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9NZW1vcnlTU0EuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTWVtb3J5U1NBLmgKaW5kZXggNjIwMDgzNy4uZmE5MmZkMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9NZW1vcnlTU0EuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL01lbW9yeVNTQS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1lbW9yeVNTQS5oIC0gQnVpbGQgTWVtb3J5IFNTQSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00MDQsNiArNDAzLDcgQEAKIAogICB2b2lkIHJlc2V0T3B0aW1pemVkKCkgewogICAgIE9wdGltaXplZElEID0gSU5WQUxJRF9NRU1PUllBQ0NFU1NfSUQ7CisgICAgc2V0T3BlcmFuZCgxLCBudWxscHRyKTsKICAgfQogCiAgIHZvaWQgcHJpbnQocmF3X29zdHJlYW0gJk9TKSBjb25zdDsKQEAgLTcwMyw2ICs3MDMsNyBAQAogICB+TWVtb3J5U1NBKCk7CiAKICAgTWVtb3J5U1NBV2Fsa2VyICpnZXRXYWxrZXIoKTsKKyAgTWVtb3J5U1NBV2Fsa2VyICpnZXRTa2lwU2VsZldhbGtlcigpOwogCiAgIC8vLyBHaXZlbiBhIG1lbW9yeSBNb2QvUmVmJ2luZyBpbnN0cnVjdGlvbiwgZ2V0IHRoZSBNZW1vcnlTU0EKICAgLy8vIGFjY2VzcyBhc3NvY2lhdGVkIHdpdGggaXQuIElmIHBhc3NlZCBhIGJhc2ljIGJsb2NrIGdldHMgdGhlIG1lbW9yeSBwaGkKQEAgLTc3NCw5ICs3NzUsNiBAQAogICAvLy8gYWxsIHVzZXMsIHVzZXMgYXBwZWFyIGluIHRoZSByaWdodCBwbGFjZXMpLiAgVGhpcyBpcyB1c2VkIGJ5IHVuaXQgdGVzdHMuCiAgIHZvaWQgdmVyaWZ5TWVtb3J5U1NBKCkgY29uc3Q7CiAKLSAgLy8vIENoZWNrIGNsb2JiZXIgc2FuaXR5IGZvciBhbiBhY2Nlc3MuCi0gIHZvaWQgY2hlY2tDbG9iYmVyU2FuaXR5QWNjZXNzKGNvbnN0IE1lbW9yeUFjY2VzcyAqTUEpIGNvbnN0OwotCiAgIC8vLyBVc2VkIGluIHZhcmlvdXMgaW5zZXJ0aW9uIGZ1bmN0aW9ucyB0byBzcGVjaWZ5IHdoZXRoZXIgd2UgYXJlIHRhbGtpbmcKICAgLy8vIGFib3V0IHRoZSBiZWdpbm5pbmcgb3IgZW5kIG9mIGEgYmxvY2suCiAgIGVudW0gSW5zZXJ0aW9uUGxhY2UgeyBCZWdpbm5pbmcsIEVuZCB9OwpAQCAtNzkxLDcgKzc4OSw2IEBACiAgIHZvaWQgdmVyaWZ5RG9taW5hdGlvbihGdW5jdGlvbiAmRikgY29uc3Q7CiAgIHZvaWQgdmVyaWZ5T3JkZXJpbmcoRnVuY3Rpb24gJkYpIGNvbnN0OwogICB2b2lkIHZlcmlmeURvbWluYXRpb25OdW1iZXJzKGNvbnN0IEZ1bmN0aW9uICZGKSBjb25zdDsKLSAgdm9pZCB2ZXJpZnlDbG9iYmVyU2FuaXR5KGNvbnN0IEZ1bmN0aW9uICZGKSBjb25zdDsKIAogICAvLyBUaGlzIGlzIHVzZWQgYnkgdGhlIHVzZSBvcHRpbWl6ZXIgYW5kIHVwZGF0ZXIuCiAgIEFjY2Vzc0xpc3QgKmdldFdyaXRhYmxlQmxvY2tBY2Nlc3Nlcyhjb25zdCBCYXNpY0Jsb2NrICpCQikgY29uc3QgewpAQCAtODI4LDcgKzgyNSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1lbW9yeVVzZU9yRGVmICpUZW1wbGF0ZSA9IG51bGxwdHIpOwogCiBwcml2YXRlOgorICBjbGFzcyBDbG9iYmVyV2Fsa2VyQmFzZTsKICAgY2xhc3MgQ2FjaGluZ1dhbGtlcjsKKyAgY2xhc3MgU2tpcFNlbGZXYWxrZXI7CiAgIGNsYXNzIE9wdGltaXplVXNlczsKIAogICBDYWNoaW5nV2Fsa2VyICpnZXRXYWxrZXJJbXBsKCk7CkBAIC04ODIsNyArODgxLDkgQEAKICAgbXV0YWJsZSBEZW5zZU1hcDxjb25zdCBNZW1vcnlBY2Nlc3MgKiwgdW5zaWduZWQgbG9uZz4gQmxvY2tOdW1iZXJpbmc7CiAKICAgLy8gTWVtb3J5IFNTQSBidWlsZGluZyBpbmZvCisgIHN0ZDo6dW5pcXVlX3B0cjxDbG9iYmVyV2Fsa2VyQmFzZT4gV2Fsa2VyQmFzZTsKICAgc3RkOjp1bmlxdWVfcHRyPENhY2hpbmdXYWxrZXI+IFdhbGtlcjsKKyAgc3RkOjp1bmlxdWVfcHRyPFNraXBTZWxmV2Fsa2VyPiBTa2lwV2Fsa2VyOwogICB1bnNpZ25lZCBOZXh0SUQ7CiB9OwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL01lbW9yeVNTQVVwZGF0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTWVtb3J5U1NBVXBkYXRlci5oCmluZGV4IDA5ODg3NmUuLjU4Y2YxY2MgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTWVtb3J5U1NBVXBkYXRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTWVtb3J5U1NBVXBkYXRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1lbW9yeVNTQVVwZGF0ZXIuaCAtIE1lbW9yeSBTU0EgVXBkYXRlci0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zNSw2ICszNCw3IEBACiAjaW5jbHVkZSAibGx2bS9BRFQvU21hbGxQdHJTZXQuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9TbWFsbFNldC5oIgogI2luY2x1ZGUgImxsdm0vQURUL1NtYWxsVmVjdG9yLmgiCisjaW5jbHVkZSAibGx2bS9BbmFseXNpcy9Mb29wSW5mby5oIgogI2luY2x1ZGUgImxsdm0vQW5hbHlzaXMvTG9vcEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAibGx2bS9BbmFseXNpcy9NZW1vcnlTU0EuaCIKICNpbmNsdWRlICJsbHZtL0lSL0Jhc2ljQmxvY2suaCIKQEAgLTIyMSwxNCArMjIxLDE0IEBACiAgIC8vLyBhc3NvY2lhdGVkIHdpdGggaXQgaXMgZXJhc2VkIGZyb20gdGhlIHByb2dyYW0uICBGb3IgZXhhbXBsZSwgaWYgYSBzdG9yZSBvcgogICAvLy8gbG9hZCBpcyBzaW1wbHkgZXJhc2VkIChub3QgcmVwbGFjZWQpLCByZW1vdmVNZW1vcnlBY2Nlc3Mgc2hvdWxkIGJlIGNhbGxlZAogICAvLy8gb24gdGhlIE1lbW9yeUFjY2VzcyBmb3IgdGhhdCBzdG9yZS9sb2FkLgotICB2b2lkIHJlbW92ZU1lbW9yeUFjY2VzcyhNZW1vcnlBY2Nlc3MgKik7CisgIHZvaWQgcmVtb3ZlTWVtb3J5QWNjZXNzKE1lbW9yeUFjY2VzcyAqLCBib29sIE9wdGltaXplUGhpcyA9IGZhbHNlKTsKIAogICAvLy8gUmVtb3ZlIE1lbW9yeUFjY2VzcyBmb3IgYSBnaXZlbiBpbnN0cnVjdGlvbiwgaWYgYSBNZW1vcnlBY2Nlc3MgZXhpc3RzLgogICAvLy8gVGhpcyBzaG91bGQgYmUgY2FsbGVkIHdoZW4gYW4gaW5zdHJ1Y3Rpb24gKGxvYWQvc3RvcmUpIGlzIGRlbGV0ZWQgZnJvbQogICAvLy8gdGhlIHByb2dyYW0uCi0gIHZvaWQgcmVtb3ZlTWVtb3J5QWNjZXNzKGNvbnN0IEluc3RydWN0aW9uICpJKSB7CisgIHZvaWQgcmVtb3ZlTWVtb3J5QWNjZXNzKGNvbnN0IEluc3RydWN0aW9uICpJLCBib29sIE9wdGltaXplUGhpcyA9IGZhbHNlKSB7CiAgICAgaWYgKE1lbW9yeUFjY2VzcyAqTUEgPSBNU1NBLT5nZXRNZW1vcnlBY2Nlc3MoSSkpCi0gICAgICByZW1vdmVNZW1vcnlBY2Nlc3MoTUEpOworICAgICAgcmVtb3ZlTWVtb3J5QWNjZXNzKE1BLCBPcHRpbWl6ZVBoaXMpOwogICB9CiAKICAgLy8vIFJlbW92ZSBhbGwgTWVtb3J5QWNjZXNlcyBpbiBhIHNldCBvZiBCYXNpY0Jsb2NrcyBhYm91dCB0byBiZSBkZWxldGVkLgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Nb2R1bGVTdW1tYXJ5QW5hbHlzaXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTW9kdWxlU3VtbWFyeUFuYWx5c2lzLmgKaW5kZXggOWFmNzg1OS4uMTU3MmE0OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Nb2R1bGVTdW1tYXJ5QW5hbHlzaXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL01vZHVsZVN1bW1hcnlBbmFseXNpcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1vZHVsZVN1bW1hcnlBbmFseXNpcy5oIC0gTW9kdWxlIHN1bW1hcnkgaW5kZXggYnVpbGRlciAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9NdXN0RXhlY3V0ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9NdXN0RXhlY3V0ZS5oCmluZGV4IDQwYTAyNzMuLjNlZjUzOWMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvTXVzdEV4ZWN1dGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL011c3RFeGVjdXRlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTXVzdEV4ZWN1dGUuaCAtIElzIGFuIGluc3RydWN0aW9uIGtub3duIHRvIGV4ZWN1dGUtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCkBAIC0xOSw2ICsxOCw3IEBACiAKICNpbmNsdWRlICJsbHZtL0FEVC9EZW5zZU1hcC5oIgogI2luY2x1ZGUgImxsdm0vQW5hbHlzaXMvRUhQZXJzb25hbGl0aWVzLmgiCisjaW5jbHVkZSAibGx2bS9BbmFseXNpcy9JbnN0cnVjdGlvblByZWNlZGVuY2VUcmFja2luZy5oIgogI2luY2x1ZGUgImxsdm0vQW5hbHlzaXMvTG9vcEluZm8uaCIKICNpbmNsdWRlICJsbHZtL0lSL0Jhc2ljQmxvY2suaCIKICNpbmNsdWRlICJsbHZtL0lSL0RvbWluYXRvcnMuaCIKQEAgLTQ1LDMzICs0NSwzMCBAQAogLy8vIGxvb3Agd2VyZSBtYWRlIGFuZCB0aGUgaW5mbyB3YXNuJ3QgcmVjb21wdXRlZCBwcm9wZXJseSwgdGhlIGJlaGF2aW9yIG9mIGFsbAogLy8vIG1ldGhvZHMgZXhjZXB0IGZvciBjb21wdXRlTG9vcFNhZmV0eUluZm8gaXMgdW5kZWZpbmVkLgogY2xhc3MgTG9vcFNhZmV0eUluZm8gewotICBib29sIE1heVRocm93ID0gZmFsc2U7ICAgICAgIC8vIFRoZSBjdXJyZW50IGxvb3AgY29udGFpbnMgYW4gaW5zdHJ1Y3Rpb24gd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXkgdGhyb3cuCi0gIGJvb2wgSGVhZGVyTWF5VGhyb3cgPSBmYWxzZTsgLy8gU2FtZSBhcyBwcmV2aW91cywgYnV0IHNwZWNpZmljIHRvIGxvb3AgaGVhZGVyCi0KLSAgLy8vIENvbGxlY3QgYWxsIGJsb2NrcyBmcm9tIFxwIEN1ckxvb3Agd2hpY2ggbGllIG9uIGFsbCBwb3NzaWJsZSBwYXRocyBmcm9tCi0gIC8vLyB0aGUgaGVhZGVyIG9mIFxwIEN1ckxvb3AgKGluY2x1c2l2ZSkgdG8gQkIgKGV4Y2x1c2l2ZSkgaW50byB0aGUgc2V0Ci0gIC8vLyBccCBQcmVkZWNlc3NvcnMuIElmIFxwIEJCIGlzIHRoZSBoZWFkZXIsIFxwIFByZWRlY2Vzc29ycyB3aWxsIGJlIGVtcHR5LgotICB2b2lkIGNvbGxlY3RUcmFuc2l0aXZlUHJlZGVjZXNzb3JzKAotICAgICAgY29uc3QgTG9vcCAqQ3VyTG9vcCwgY29uc3QgQmFzaWNCbG9jayAqQkIsCi0gICAgICBTbWFsbFB0clNldEltcGw8Y29uc3QgQmFzaWNCbG9jayAqPiAmUHJlZGVjZXNzb3JzKSBjb25zdDsKLQotcHVibGljOgogICAvLyBVc2VkIHRvIHVwZGF0ZSBmdW5jbGV0IGJ1bmRsZSBvcGVyYW5kcy4KICAgRGVuc2VNYXA8QmFzaWNCbG9jayAqLCBDb2xvclZlY3Rvcj4gQmxvY2tDb2xvcnM7CiAKLSAgLy8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGhlYWRlciBibG9jayBvZiB0aGUgbG9vcCBmb3Igd2hpY2ggdGhpcyBpbmZvIGlzCi0gIC8vLyBjYWxjdWxhdGVkIGNvbnRhaW5zIGFuIGluc3RydWN0aW9uIHRoYXQgbWF5IHRocm93IG9yIG90aGVyd2lzZSBleGl0Ci0gIC8vLyBhYm5vcm1hbGx5LgotICBib29sIGhlYWRlck1heVRocm93KCkgY29uc3Q7Citwcm90ZWN0ZWQ6CisgIC8vLyBDb21wdXRlcyBibG9jayBjb2xvcnMuCisgIHZvaWQgY29tcHV0ZUJsb2NrQ29sb3JzKGNvbnN0IExvb3AgKkN1ckxvb3ApOworCitwdWJsaWM6CisgIC8vLyBSZXR1cm5zIGJsb2NrIGNvbG9ycyBtYXAgdGhhdCBpcyB1c2VkIHRvIHVwZGF0ZSBmdW5jbGV0IG9wZXJhbmQgYnVuZGxlcy4KKyAgY29uc3QgRGVuc2VNYXA8QmFzaWNCbG9jayAqLCBDb2xvclZlY3Rvcj4gJmdldEJsb2NrQ29sb3JzKCkgY29uc3Q7CisKKyAgLy8vIENvcHkgY29sb3JzIG9mIGJsb2NrIFxwIE9sZCBpbnRvIHRoZSBibG9jayBccCBOZXcuCisgIHZvaWQgY29weUNvbG9ycyhCYXNpY0Jsb2NrICpOZXcsIEJhc2ljQmxvY2sgKk9sZCk7CisKKyAgLy8vIFJldHVybnMgdHJ1ZSBpZmYgdGhlIGJsb2NrIFxwIEJCIHBvdGVudGlhbGx5IG1heSB0aHJvdyBleGNlcHRpb24uIEl0IGNhbgorICAvLy8gYmUgZmFsc2UtcG9zaXRpdmUgaW4gY2FzZXMgd2hlbiB3ZSB3YW50IHRvIGF2b2lkIGNvbXBsZXggYW5hbHlzaXMuCisgIHZpcnR1YWwgYm9vbCBibG9ja01heVRocm93KGNvbnN0IEJhc2ljQmxvY2sgKkJCKSBjb25zdCA9IDA7CiAKICAgLy8vIFJldHVybnMgdHJ1ZSBpZmYgYW55IGJsb2NrIG9mIHRoZSBsb29wIGZvciB3aGljaCB0aGlzIGluZm8gaXMgY29udGFpbnMgYW4KICAgLy8vIGluc3RydWN0aW9uIHRoYXQgbWF5IHRocm93IG9yIG90aGVyd2lzZSBleGl0IGFibm9ybWFsbHkuCi0gIGJvb2wgYW55QmxvY2tNYXlUaHJvdygpIGNvbnN0OworICB2aXJ0dWFsIGJvb2wgYW55QmxvY2tNYXlUaHJvdygpIGNvbnN0ID0gMDsKIAogICAvLy8gUmV0dXJuIHRydWUgaWYgd2UgbXVzdCByZWFjaCB0aGUgYmxvY2sgXHAgQkIgdW5kZXIgYXNzdW1wdGlvbiB0aGF0IHRoZQotICAvLy8gbG9vcCBccCBDdXJMb29wIGlzIGVudGVyZWQgYW5kIG5vIGluc3RydWN0aW9uIHRocm93cyBvciBvdGhlcndpc2UgZXhpdHMKLSAgLy8vIGFibm9ybWFsbHkuCisgIC8vLyBsb29wIFxwIEN1ckxvb3AgaXMgZW50ZXJlZC4KICAgYm9vbCBhbGxMb29wUGF0aHNMZWFkVG9CbG9jayhjb25zdCBMb29wICpDdXJMb29wLCBjb25zdCBCYXNpY0Jsb2NrICpCQiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEb21pbmF0b3JUcmVlICpEVCkgY29uc3Q7CiAKQEAgLTgwLDE2ICs3Nyw5MiBAQAogICAvLy8gYXMgYXJndW1lbnQuIFVwZGF0ZXMgc2FmZXR5IGluZm9ybWF0aW9uIGluIExvb3BTYWZldHlJbmZvIGFyZ3VtZW50LgogICAvLy8gTm90ZTogVGhpcyBpcyBkZWZpbmVkIHRvIGNsZWFyIGFuZCByZWluaXRpYWxpemUgYW4gYWxyZWFkeSBpbml0aWFsaXplZAogICAvLy8gTG9vcFNhZmV0eUluZm8uICBTb21lIGNhbGxlcnMgcmVseSBvbiB0aGlzIGZhY3QuCi0gIHZvaWQgY29tcHV0ZUxvb3BTYWZldHlJbmZvKExvb3AgKik7CisgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9vcFNhZmV0eUluZm8oY29uc3QgTG9vcCAqQ3VyTG9vcCkgPSAwOworCisgIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhlIGluc3RydWN0aW9uIGluIGEgbG9vcCBpcyBndWFyYW50ZWVkIHRvIGV4ZWN1dGUgYXQKKyAgLy8vIGxlYXN0IG9uY2UgKHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIGxvb3AgaXMgZW50ZXJlZCkuCisgIHZpcnR1YWwgYm9vbCBpc0d1YXJhbnRlZWRUb0V4ZWN1dGUoY29uc3QgSW5zdHJ1Y3Rpb24gJkluc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRG9taW5hdG9yVHJlZSAqRFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTG9vcCAqQ3VyTG9vcCkgY29uc3QgPSAwOwogCiAgIExvb3BTYWZldHlJbmZvKCkgPSBkZWZhdWx0OworCisgIHZpcnR1YWwgfkxvb3BTYWZldHlJbmZvKCkgPSBkZWZhdWx0OwogfTsKIAotLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgaW5zdHJ1Y3Rpb24gaW4gYSBsb29wIGlzIGd1YXJhbnRlZWQgdG8gZXhlY3V0ZSBhdCBsZWFzdAotLy8vIG9uY2UgKHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIGxvb3AgaXMgZW50ZXJlZCkuCi1ib29sIGlzR3VhcmFudGVlZFRvRXhlY3V0ZShjb25zdCBJbnN0cnVjdGlvbiAmSW5zdCwgY29uc3QgRG9taW5hdG9yVHJlZSAqRFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMb29wICpDdXJMb29wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTG9vcFNhZmV0eUluZm8gKlNhZmV0eUluZm8pOworCisvLy8gU2ltcGxlIGFuZCBjb25zZXJ2YXRpdmUgaW1wbGVtZW50YXRpb24gb2YgTG9vcFNhZmV0eUluZm8gdGhhdCBjYW4gZ2l2ZQorLy8vIGZhbHNlLXBvc2l0aXZlIGFuc3dlcnMgdG8gaXRzIHF1ZXJpZXMgaW4gb3JkZXIgdG8gYXZvaWQgY29tcGxpY2F0ZWQKKy8vLyBhbmFseXNpcy4KK2NsYXNzIFNpbXBsZUxvb3BTYWZldHlJbmZvOiBwdWJsaWMgTG9vcFNhZmV0eUluZm8geworICBib29sIE1heVRocm93ID0gZmFsc2U7ICAgICAgIC8vIFRoZSBjdXJyZW50IGxvb3AgY29udGFpbnMgYW4gaW5zdHJ1Y3Rpb24gd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXkgdGhyb3cuCisgIGJvb2wgSGVhZGVyTWF5VGhyb3cgPSBmYWxzZTsgLy8gU2FtZSBhcyBwcmV2aW91cywgYnV0IHNwZWNpZmljIHRvIGxvb3AgaGVhZGVyCisKK3B1YmxpYzoKKyAgdmlydHVhbCBib29sIGJsb2NrTWF5VGhyb3coY29uc3QgQmFzaWNCbG9jayAqQkIpIGNvbnN0OworCisgIHZpcnR1YWwgYm9vbCBhbnlCbG9ja01heVRocm93KCkgY29uc3Q7CisKKyAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb29wU2FmZXR5SW5mbyhjb25zdCBMb29wICpDdXJMb29wKTsKKworICB2aXJ0dWFsIGJvb2wgaXNHdWFyYW50ZWVkVG9FeGVjdXRlKGNvbnN0IEluc3RydWN0aW9uICZJbnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERvbWluYXRvclRyZWUgKkRULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExvb3AgKkN1ckxvb3ApIGNvbnN0OworCisgIFNpbXBsZUxvb3BTYWZldHlJbmZvKCkgOiBMb29wU2FmZXR5SW5mbygpIHt9OworCisgIHZpcnR1YWwgflNpbXBsZUxvb3BTYWZldHlJbmZvKCkge307Cit9OworCisvLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBMb29wU2FmZXR5SW5mbyB1c2UgSW1wbGljaXRDb250cm9sRmxvd1RyYWNraW5nIHRvCisvLy8gZ2l2ZSBwcmVjaXNlIGFuc3dlcnMgb24gIm1heSB0aHJvdyIgcXVlcmllcy4gVGhpcyBpbXBsZW1lbnRhdGlvbiB1c2VzIGNhY2hlCisvLy8gdGhhdCBzaG91bGQgYmUgaW52YWxpZGF0ZWQgYnkgY2FsbGluZyB0aGUgbWV0aG9kcyBpbnNlcnRJbnN0cnVjdGlvblRvIGFuZAorLy8vIHJlbW92ZUluc3RydWN0aW9uIHdoZW5ldmVyIHdlIG1vZGlmeSBhIGJhc2ljIGJsb2NrJ3MgY29udGVudHMgYnkgYWRkaW5nIG9yCisvLy8gcmVtb3ZpbmcgaW5zdHJ1Y3Rpb25zLgorY2xhc3MgSUNGTG9vcFNhZmV0eUluZm86IHB1YmxpYyBMb29wU2FmZXR5SW5mbyB7CisgIGJvb2wgTWF5VGhyb3cgPSBmYWxzZTsgICAgICAgLy8gVGhlIGN1cnJlbnQgbG9vcCBjb250YWlucyBhbiBpbnN0cnVjdGlvbiB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1heSB0aHJvdy4KKyAgLy8gQ29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgaW1wbGljaXQgY29udHJvbCBmbG93IGluIHRoaXMgbG9vcCdzIGJsb2Nrcy4KKyAgbXV0YWJsZSBJbXBsaWNpdENvbnRyb2xGbG93VHJhY2tpbmcgSUNGOworICAvLyBDb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBpbnN0cnVjdGlvbiB0aGF0IG1heSBwb3NzaWJseSB3cml0ZSBtZW1vcnkuCisgIG11dGFibGUgTWVtb3J5V3JpdGVUcmFja2luZyBNVzsKKworcHVibGljOgorICB2aXJ0dWFsIGJvb2wgYmxvY2tNYXlUaHJvdyhjb25zdCBCYXNpY0Jsb2NrICpCQikgY29uc3Q7CisKKyAgdmlydHVhbCBib29sIGFueUJsb2NrTWF5VGhyb3coKSBjb25zdDsKKworICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvb3BTYWZldHlJbmZvKGNvbnN0IExvb3AgKkN1ckxvb3ApOworCisgIHZpcnR1YWwgYm9vbCBpc0d1YXJhbnRlZWRUb0V4ZWN1dGUoY29uc3QgSW5zdHJ1Y3Rpb24gJkluc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRG9taW5hdG9yVHJlZSAqRFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTG9vcCAqQ3VyTG9vcCkgY29uc3Q7CisKKyAgLy8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBjb3VsZCBub3QgZXhlY3V0ZSBhIG1lbW9yeS1tb2RpZnlpbmcgaW5zdHJ1Y3Rpb24gYmVmb3JlCisgIC8vLyB3ZSBlbnRlciBccCBCQiB1bmRlciBhc3N1bXB0aW9uIHRoYXQgXHAgQ3VyTG9vcCBpcyBlbnRlcmVkLgorICBib29sIGRvZXNOb3RXcml0ZU1lbW9yeUJlZm9yZShjb25zdCBCYXNpY0Jsb2NrICpCQiwgY29uc3QgTG9vcCAqQ3VyTG9vcCkKKyAgICAgIGNvbnN0OworCisgIC8vLyBSZXR1cm5zIHRydWUgaWYgd2UgY291bGQgbm90IGV4ZWN1dGUgYSBtZW1vcnktbW9kaWZ5aW5nIGluc3RydWN0aW9uIGJlZm9yZQorICAvLy8gd2UgZXhlY3V0ZSBccCBJIHVuZGVyIGFzc3VtcHRpb24gdGhhdCBccCBDdXJMb29wIGlzIGVudGVyZWQuCisgIGJvb2wgZG9lc05vdFdyaXRlTWVtb3J5QmVmb3JlKGNvbnN0IEluc3RydWN0aW9uICZJLCBjb25zdCBMb29wICpDdXJMb29wKQorICAgICAgY29uc3Q7CisKKyAgLy8vIEluZm9ybSB0aGUgc2FmZXR5IGluZm8gdGhhdCB3ZSBhcmUgcGxhbm5pbmcgdG8gaW5zZXJ0IGEgbmV3IGluc3RydWN0aW9uCisgIC8vLyBccCBJbnN0IGludG8gdGhlIGJhc2ljIGJsb2NrIFxwIEJCLiBJdCB3aWxsIG1ha2UgYWxsIGNhY2hlIHVwZGF0ZXMgdG8ga2VlcAorICAvLy8gaXQgY29ycmVjdCBhZnRlciB0aGlzIGluc2VydGlvbi4KKyAgdm9pZCBpbnNlcnRJbnN0cnVjdGlvblRvKGNvbnN0IEluc3RydWN0aW9uICpJbnN0LCBjb25zdCBCYXNpY0Jsb2NrICpCQik7CisKKyAgLy8vIEluZm9ybSBzYWZldHkgaW5mbyB0aGF0IHdlIGFyZSBwbGFubmluZyB0byByZW1vdmUgdGhlIGluc3RydWN0aW9uIFxwIEluc3QKKyAgLy8vIGZyb20gaXRzIGJsb2NrLiBJdCB3aWxsIG1ha2UgYWxsIGNhY2hlIHVwZGF0ZXMgdG8ga2VlcCBpdCBjb3JyZWN0IGFmdGVyCisgIC8vLyB0aGlzIHJlbW92YWwuCisgIHZvaWQgcmVtb3ZlSW5zdHJ1Y3Rpb24oY29uc3QgSW5zdHJ1Y3Rpb24gKkluc3QpOworCisgIElDRkxvb3BTYWZldHlJbmZvKERvbWluYXRvclRyZWUgKkRUKSA6IExvb3BTYWZldHlJbmZvKCksIElDRihEVCksIE1XKERUKSB7fTsKKworICB2aXJ0dWFsIH5JQ0ZMb29wU2FmZXR5SW5mbygpIHt9OworfTsKIAogfQogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL09iakNBUkNBbGlhc0FuYWx5c2lzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL09iakNBUkNBbGlhc0FuYWx5c2lzLmgKaW5kZXggNTU5Yzc3Yy4uZWQxNTQ3MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9PYmpDQVJDQWxpYXNBbmFseXNpcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvT2JqQ0FSQ0FsaWFzQW5hbHlzaXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBPYmpDQVJDQWxpYXNBbmFseXNpcy5oIC0gT2JqQyBBUkMgQWxpYXMgQW5hbHlzaXMgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKQEAgLTYwLDcgKzU5LDcgQEAKICAgRnVuY3Rpb25Nb2RSZWZCZWhhdmlvciBnZXRNb2RSZWZCZWhhdmlvcihjb25zdCBGdW5jdGlvbiAqRik7CiAKICAgdXNpbmcgQUFSZXN1bHRCYXNlOjpnZXRNb2RSZWZJbmZvOwotICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oSW1tdXRhYmxlQ2FsbFNpdGUgQ1MsIGNvbnN0IE1lbW9yeUxvY2F0aW9uICZMb2MpOworICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oY29uc3QgQ2FsbEJhc2UgKkNhbGwsIGNvbnN0IE1lbW9yeUxvY2F0aW9uICZMb2MpOwogfTsKIAogLy8vIEFuYWx5c2lzIHBhc3MgcHJvdmlkaW5nIGEgbmV2ZXItaW52YWxpZGF0ZWQgYWxpYXMgYW5hbHlzaXMgcmVzdWx0LgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9PYmpDQVJDQW5hbHlzaXNVdGlscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9PYmpDQVJDQW5hbHlzaXNVdGlscy5oCmluZGV4IDA3YmViMGIuLjUyMmFiZDcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvT2JqQ0FSQ0FuYWx5c2lzVXRpbHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL09iakNBUkNBbmFseXNpc1V0aWxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gT2JqQ0FSQ0FuYWx5c2lzVXRpbHMuaCAtIE9iakMgQVJDIEFuYWx5c2lzIFV0aWxpdGllcyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCkBAIC01MSwyNSArNTAsMjUgQEAKIC8vLyBvbi4KIGlubGluZSBib29sIE1vZHVsZUhhc0FSQyhjb25zdCBNb2R1bGUgJk0pIHsKICAgcmV0dXJuCi0gICAgTS5nZXROYW1lZFZhbHVlKCJvYmpjX3JldGFpbiIpIHx8Ci0gICAgTS5nZXROYW1lZFZhbHVlKCJvYmpjX3JlbGVhc2UiKSB8fAotICAgIE0uZ2V0TmFtZWRWYWx1ZSgib2JqY19hdXRvcmVsZWFzZSIpIHx8Ci0gICAgTS5nZXROYW1lZFZhbHVlKCJvYmpjX3JldGFpbkF1dG9yZWxlYXNlZFJldHVyblZhbHVlIikgfHwKLSAgICBNLmdldE5hbWVkVmFsdWUoIm9iamNfdW5zYWZlQ2xhaW1BdXRvcmVsZWFzZWRSZXR1cm5WYWx1ZSIpIHx8Ci0gICAgTS5nZXROYW1lZFZhbHVlKCJvYmpjX3JldGFpbkJsb2NrIikgfHwKLSAgICBNLmdldE5hbWVkVmFsdWUoIm9iamNfYXV0b3JlbGVhc2VSZXR1cm5WYWx1ZSIpIHx8Ci0gICAgTS5nZXROYW1lZFZhbHVlKCJvYmpjX2F1dG9yZWxlYXNlUG9vbFB1c2giKSB8fAotICAgIE0uZ2V0TmFtZWRWYWx1ZSgib2JqY19sb2FkV2Vha1JldGFpbmVkIikgfHwKLSAgICBNLmdldE5hbWVkVmFsdWUoIm9iamNfbG9hZFdlYWsiKSB8fAotICAgIE0uZ2V0TmFtZWRWYWx1ZSgib2JqY19kZXN0cm95V2VhayIpIHx8Ci0gICAgTS5nZXROYW1lZFZhbHVlKCJvYmpjX3N0b3JlV2VhayIpIHx8Ci0gICAgTS5nZXROYW1lZFZhbHVlKCJvYmpjX2luaXRXZWFrIikgfHwKLSAgICBNLmdldE5hbWVkVmFsdWUoIm9iamNfbW92ZVdlYWsiKSB8fAotICAgIE0uZ2V0TmFtZWRWYWx1ZSgib2JqY19jb3B5V2VhayIpIHx8Ci0gICAgTS5nZXROYW1lZFZhbHVlKCJvYmpjX3JldGFpbmVkT2JqZWN0IikgfHwKLSAgICBNLmdldE5hbWVkVmFsdWUoIm9iamNfdW5yZXRhaW5lZE9iamVjdCIpIHx8Ci0gICAgTS5nZXROYW1lZFZhbHVlKCJvYmpjX3VucmV0YWluZWRQb2ludGVyIikgfHwKLSAgICBNLmdldE5hbWVkVmFsdWUoImNsYW5nLmFyYy51c2UiKTsKKyAgICBNLmdldE5hbWVkVmFsdWUoImxsdm0ub2JqYy5yZXRhaW4iKSB8fAorICAgIE0uZ2V0TmFtZWRWYWx1ZSgibGx2bS5vYmpjLnJlbGVhc2UiKSB8fAorICAgIE0uZ2V0TmFtZWRWYWx1ZSgibGx2bS5vYmpjLmF1dG9yZWxlYXNlIikgfHwKKyAgICBNLmdldE5hbWVkVmFsdWUoImxsdm0ub2JqYy5yZXRhaW5BdXRvcmVsZWFzZWRSZXR1cm5WYWx1ZSIpIHx8CisgICAgTS5nZXROYW1lZFZhbHVlKCJsbHZtLm9iamMudW5zYWZlQ2xhaW1BdXRvcmVsZWFzZWRSZXR1cm5WYWx1ZSIpIHx8CisgICAgTS5nZXROYW1lZFZhbHVlKCJsbHZtLm9iamMucmV0YWluQmxvY2siKSB8fAorICAgIE0uZ2V0TmFtZWRWYWx1ZSgibGx2bS5vYmpjLmF1dG9yZWxlYXNlUmV0dXJuVmFsdWUiKSB8fAorICAgIE0uZ2V0TmFtZWRWYWx1ZSgibGx2bS5vYmpjLmF1dG9yZWxlYXNlUG9vbFB1c2giKSB8fAorICAgIE0uZ2V0TmFtZWRWYWx1ZSgibGx2bS5vYmpjLmxvYWRXZWFrUmV0YWluZWQiKSB8fAorICAgIE0uZ2V0TmFtZWRWYWx1ZSgibGx2bS5vYmpjLmxvYWRXZWFrIikgfHwKKyAgICBNLmdldE5hbWVkVmFsdWUoImxsdm0ub2JqYy5kZXN0cm95V2VhayIpIHx8CisgICAgTS5nZXROYW1lZFZhbHVlKCJsbHZtLm9iamMuc3RvcmVXZWFrIikgfHwKKyAgICBNLmdldE5hbWVkVmFsdWUoImxsdm0ub2JqYy5pbml0V2VhayIpIHx8CisgICAgTS5nZXROYW1lZFZhbHVlKCJsbHZtLm9iamMubW92ZVdlYWsiKSB8fAorICAgIE0uZ2V0TmFtZWRWYWx1ZSgibGx2bS5vYmpjLmNvcHlXZWFrIikgfHwKKyAgICBNLmdldE5hbWVkVmFsdWUoImxsdm0ub2JqYy5yZXRhaW5lZE9iamVjdCIpIHx8CisgICAgTS5nZXROYW1lZFZhbHVlKCJsbHZtLm9iamMudW5yZXRhaW5lZE9iamVjdCIpIHx8CisgICAgTS5nZXROYW1lZFZhbHVlKCJsbHZtLm9iamMudW5yZXRhaW5lZFBvaW50ZXIiKSB8fAorICAgIE0uZ2V0TmFtZWRWYWx1ZSgibGx2bS5vYmpjLmNsYW5nLmFyYy51c2UiKTsKIH0KIAogLy8vIFRoaXMgaXMgYSB3cmFwcGVyIGFyb3VuZCBnZXRVbmRlcmx5aW5nT2JqZWN0IHdoaWNoIGFsc28ga25vd3MgaG93IHRvCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL09iakNBUkNJbnN0S2luZC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9PYmpDQVJDSW5zdEtpbmQuaAppbmRleCAwYjkyZDhiLi45ODkwZDVmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL09iakNBUkNJbnN0S2luZC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvT2JqQ0FSQ0luc3RLaW5kLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gT2JqQ0FSQ0luc3RLaW5kLmggLSBBUkMgaW5zdHJ1Y3Rpb24gZXF1aXZhbGVuY2UgY2xhc3NlcyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xMSw2ICsxMCw3IEBACiAjZGVmaW5lIExMVk1fQU5BTFlTSVNfT0JKQ0FSQ0lOU1RLSU5EX0gKIAogI2luY2x1ZGUgImxsdm0vSVIvRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJsbHZtL0lSL0ludHJpbnNpY3MuaCIKICNpbmNsdWRlICJsbHZtL0lSL0luc3RydWN0aW9ucy5oIgogCiBuYW1lc3BhY2UgbGx2bSB7CkBAIC00OCw3ICs0OCw3IEBACiAgIENvcHlXZWFrLCAgICAgICAgICAgICAgICAgLy8vPCBvYmpjX2NvcHlXZWFrIChkZXJpdmVkKQogICBEZXN0cm95V2VhaywgICAgICAgICAgICAgIC8vLzwgb2JqY19kZXN0cm95V2VhayAoZGVyaXZlZCkKICAgU3RvcmVTdHJvbmcsICAgICAgICAgICAgICAvLy88IG9iamNfc3RvcmVTdHJvbmcgKGRlcml2ZWQpCi0gIEludHJpbnNpY1VzZXIsICAgICAgICAgICAgLy8vPCBjbGFuZy5hcmMudXNlCisgIEludHJpbnNpY1VzZXIsICAgICAgICAgICAgLy8vPCBsbHZtLm9iamMuY2xhbmcuYXJjLnVzZQogICBDYWxsT3JVc2VyLCAgICAgICAgICAgICAgIC8vLzwgY291bGQgY2FsbCBvYmpjX3JlbGVhc2UgYW5kL29yICJ1c2UiIHBvaW50ZXJzCiAgIENhbGwsICAgICAgICAgICAgICAgICAgICAgLy8vPCBjb3VsZCBjYWxsIG9iamNfcmVsZWFzZQogICBVc2VyLCAgICAgICAgICAgICAgICAgICAgIC8vLzwgY291bGQgInVzZSIgYSBwb2ludGVyCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL09wdGltaXphdGlvblJlbWFya0VtaXR0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvT3B0aW1pemF0aW9uUmVtYXJrRW1pdHRlci5oCmluZGV4IGZhODM4NjkuLmEyYjI5NTUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvT3B0aW1pemF0aW9uUmVtYXJrRW1pdHRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvT3B0aW1pemF0aW9uUmVtYXJrRW1pdHRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE9wdGltaXphdGlvblJlbWFya0VtaXR0ZXIuaCAtIE9wdGltaXphdGlvbiBEaWFnbm9zdGljIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL09yZGVyZWRCYXNpY0Jsb2NrLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL09yZGVyZWRCYXNpY0Jsb2NrLmgKaW5kZXggMDc3NmFhNi4uNjgyM2Y2OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9PcmRlcmVkQmFzaWNCbG9jay5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvT3JkZXJlZEJhc2ljQmxvY2suaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FuYWx5c2lzL09yZGVyZWRCYXNpY0Jsb2NrLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL09yZGVyZWRJbnN0cnVjdGlvbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvT3JkZXJlZEluc3RydWN0aW9ucy5oCmluZGV4IDdlMzg1MGIuLjk2N2IxNDYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvT3JkZXJlZEluc3RydWN0aW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvT3JkZXJlZEluc3RydWN0aW9ucy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vVHJhbnNmb3Jtcy9VdGlscy9PcmRlcmVkSW5zdHJ1Y3Rpb25zLmggLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUEhJVHJhbnNBZGRyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1BISVRyYW5zQWRkci5oCmluZGV4IDBhMzM1YjYuLjU0YTA3ZjAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUEhJVHJhbnNBZGRyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9QSElUcmFuc0FkZHIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQSElUcmFuc0FkZHIuaCAtIFBISSBUcmFuc2xhdGlvbiBmb3IgQWRkcmVzc2VzIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9QYXNzZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUGFzc2VzLmgKaW5kZXggMDgxZGQ1MC4uZDljOTdkZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9QYXNzZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1Bhc3Nlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0FuYWx5c2lzL1Bhc3Nlcy5oIC0gQ29uc3RydWN0b3JzIGZvciBhbmFseXNlcyAtLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1BoaVZhbHVlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9QaGlWYWx1ZXMuaAppbmRleCA3NjIwNGFjLi4xMjRmYTIxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1BoaVZhbHVlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUGhpVmFsdWVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUGhpVmFsdWVzLmggLSBQaGkgVmFsdWUgQW5hbHlzaXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUG9zdERvbWluYXRvcnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUG9zdERvbWluYXRvcnMuaAppbmRleCBmMmRjOGQxLi44N2QyZTAzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1Bvc3REb21pbmF0b3JzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Qb3N0RG9taW5hdG9ycy5oCkBAIC0xLDkgKzEsOCBAQAogLy89LSBsbHZtL0FuYWx5c2lzL1Bvc3REb21pbmF0b3JzLmggLSBQb3N0IERvbWluYXRvciBDYWxjdWxhdGlvbiAtLSotIEMrKyAtKi09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1Byb2ZpbGVTdW1tYXJ5SW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9Qcm9maWxlU3VtbWFyeUluZm8uaAppbmRleCA1OGI2N2U3Li42MzZiNWQ2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1Byb2ZpbGVTdW1tYXJ5SW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUHJvZmlsZVN1bW1hcnlJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BbmFseXNpcy9Qcm9maWxlU3VtbWFyeUluZm8uaCAtIHByb2ZpbGUgc3VtbWFyeSAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC05OCwxNCArOTcsMTQgQEAKICAgYm9vbCBpc0Z1bmN0aW9uRW50cnlDb2xkKGNvbnN0IEZ1bmN0aW9uICpGKTsKICAgLy8vIFJldHVybnMgdHJ1ZSBpZiBccCBGIGNvbnRhaW5zIG9ubHkgY29sZCBjb2RlLgogICBib29sIGlzRnVuY3Rpb25Db2xkSW5DYWxsR3JhcGgoY29uc3QgRnVuY3Rpb24gKkYsIEJsb2NrRnJlcXVlbmN5SW5mbyAmQkZJKTsKLSAgLy8vIFJldHVybnMgdHJ1ZSBpZiBccCBGIGlzIGEgaG90IGZ1bmN0aW9uLgorICAvLy8gUmV0dXJucyB0cnVlIGlmIGNvdW50IFxwIEMgaXMgY29uc2lkZXJlZCBob3QuCiAgIGJvb2wgaXNIb3RDb3VudCh1aW50NjRfdCBDKTsKICAgLy8vIFJldHVybnMgdHJ1ZSBpZiBjb3VudCBccCBDIGlzIGNvbnNpZGVyZWQgY29sZC4KICAgYm9vbCBpc0NvbGRDb3VudCh1aW50NjRfdCBDKTsKLSAgLy8vIFJldHVybnMgdHJ1ZSBpZiBCYXNpY0Jsb2NrIFxwIEIgaXMgY29uc2lkZXJlZCBob3QuCi0gIGJvb2wgaXNIb3RCQihjb25zdCBCYXNpY0Jsb2NrICpCLCBCbG9ja0ZyZXF1ZW5jeUluZm8gKkJGSSk7Ci0gIC8vLyBSZXR1cm5zIHRydWUgaWYgQmFzaWNCbG9jayBccCBCIGlzIGNvbnNpZGVyZWQgY29sZC4KLSAgYm9vbCBpc0NvbGRCQihjb25zdCBCYXNpY0Jsb2NrICpCLCBCbG9ja0ZyZXF1ZW5jeUluZm8gKkJGSSk7CisgIC8vLyBSZXR1cm5zIHRydWUgaWYgQmFzaWNCbG9jayBccCBCQiBpcyBjb25zaWRlcmVkIGhvdC4KKyAgYm9vbCBpc0hvdEJsb2NrKGNvbnN0IEJhc2ljQmxvY2sgKkJCLCBCbG9ja0ZyZXF1ZW5jeUluZm8gKkJGSSk7CisgIC8vLyBSZXR1cm5zIHRydWUgaWYgQmFzaWNCbG9jayBccCBCQiBpcyBjb25zaWRlcmVkIGNvbGQuCisgIGJvb2wgaXNDb2xkQmxvY2soY29uc3QgQmFzaWNCbG9jayAqQkIsIEJsb2NrRnJlcXVlbmN5SW5mbyAqQkZJKTsKICAgLy8vIFJldHVybnMgdHJ1ZSBpZiBDYWxsU2l0ZSBccCBDUyBpcyBjb25zaWRlcmVkIGhvdC4KICAgYm9vbCBpc0hvdENhbGxTaXRlKGNvbnN0IENhbGxTaXRlICZDUywgQmxvY2tGcmVxdWVuY3lJbmZvICpCRkkpOwogICAvLy8gUmV0dXJucyB0cnVlIGlmIENhbGxzaXRlIFxwIENTIGlzIGNvbnNpZGVyZWQgY29sZC4KQEAgLTEzNCw5ICsxMzMsOCBAQAogICBzdGF0aWMgY2hhciBJRDsKICAgUHJvZmlsZVN1bW1hcnlJbmZvV3JhcHBlclBhc3MoKTsKIAotICBQcm9maWxlU3VtbWFyeUluZm8gKmdldFBTSSgpIHsKLSAgICByZXR1cm4gJipQU0k7Ci0gIH0KKyAgUHJvZmlsZVN1bW1hcnlJbmZvICZnZXRQU0koKSB7IHJldHVybiAqUFNJOyB9CisgIGNvbnN0IFByb2ZpbGVTdW1tYXJ5SW5mbyAmZ2V0UFNJKCkgY29uc3QgeyByZXR1cm4gKlBTSTsgfQogCiAgIGJvb2wgZG9Jbml0aWFsaXphdGlvbihNb2R1bGUgJk0pIG92ZXJyaWRlOwogICBib29sIGRvRmluYWxpemF0aW9uKE1vZHVsZSAmTSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1B0clVzZVZpc2l0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUHRyVXNlVmlzaXRvci5oCmluZGV4IGIzNGIyNWMuLmRjYTg3MTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUHRyVXNlVmlzaXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUHRyVXNlVmlzaXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFB0clVzZVZpc2l0b3IuaCAtIEluc3RWaXNpdG9ycyBvdmVyIGEgcG9pbnRlcnMgdXNlcyAtLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1JlZ2lvbkluZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUmVnaW9uSW5mby5oCmluZGV4IDI3ZjZjYzEuLjhiY2MzZTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUmVnaW9uSW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUmVnaW9uSW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFJlZ2lvbkluZm8uaCAtIFNFU0UgcmVnaW9uIGFuYWx5c2lzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1JlZ2lvbkluZm9JbXBsLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1JlZ2lvbkluZm9JbXBsLmgKaW5kZXggNTkwNDIxNC4uYzU5YzA5ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9SZWdpb25JbmZvSW1wbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUmVnaW9uSW5mb0ltcGwuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBSZWdpb25JbmZvSW1wbC5oIC0gU0VTRSByZWdpb24gZGV0ZWN0aW9uIGFuYWx5c2lzIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLyBEZXRlY3RzIHNpbmdsZSBlbnRyeSBzaW5nbGUgZXhpdCByZWdpb25zIGluIHRoZSBjb250cm9sIGZsb3cgZ3JhcGguCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1JlZ2lvbkl0ZXJhdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1JlZ2lvbkl0ZXJhdG9yLmgKaW5kZXggNGZkOTJmYy4uNzJiYzViYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9SZWdpb25JdGVyYXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUmVnaW9uSXRlcmF0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBSZWdpb25JdGVyYXRvci5oIC0gSXRlcmF0b3JzIHRvIGl0ZXJhdGF0ZSBvdmVyIFJlZ2lvbnMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLyBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgaXRlcmF0b3JzIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYSBSZWdpb24uCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1JlZ2lvblBhc3MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUmVnaW9uUGFzcy5oCmluZGV4IGIzZGE5MWMuLjViMTg2NGEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUmVnaW9uUGFzcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUmVnaW9uUGFzcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFJlZ2lvblBhc3MuaCAtIFJlZ2lvblBhc3MgY2xhc3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1JlZ2lvblByaW50ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUmVnaW9uUHJpbnRlci5oCmluZGV4IGUxMzJlYWUuLjE1NGFjMzUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUmVnaW9uUHJpbnRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvUmVnaW9uUHJpbnRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBSZWdpb25QcmludGVyLmggLSBSZWdpb24gcHJpbnRlciBleHRlcm5hbCBpbnRlcmZhY2UgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1NjYWxhckV2b2x1dGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9TY2FsYXJFdm9sdXRpb24uaAppbmRleCA4OTkxOGUzLi5mM2EwMzUxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1NjYWxhckV2b2x1dGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvU2NhbGFyRXZvbHV0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BbmFseXNpcy9TY2FsYXJFdm9sdXRpb24uaCAtIFNjYWxhciBFdm9sdXRpb24gLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTg1LDYgKzg0LDkgQEAKICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU0NFVlR5cGU7CiAKIHByb3RlY3RlZDoKKyAgLy8gRXN0aW1hdGVkIGNvbXBsZXhpdHkgb2YgdGhpcyBub2RlJ3MgZXhwcmVzc2lvbiB0cmVlIHNpemUuCisgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEV4cHJlc3Npb25TaXplOworCiAgIC8vLyBUaGlzIGZpZWxkIGlzIGluaXRpYWxpemVkIHRvIHplcm8gYW5kIG1heSBiZSB1c2VkIGluIHN1YmNsYXNzZXMgdG8gc3RvcmUKICAgLy8vIG1pc2NlbGxhbmVvdXMgaW5mb3JtYXRpb24uCiAgIHVuc2lnbmVkIHNob3J0IFN1YmNsYXNzRGF0YSA9IDA7CkBAIC0xMTYsOCArMTE4LDkgQEAKICAgICBOb1dyYXBNYXNrID0gKDEgPDwgMykgLSAxCiAgIH07CiAKLSAgZXhwbGljaXQgU0NFVihjb25zdCBGb2xkaW5nU2V0Tm9kZUlEUmVmIElELCB1bnNpZ25lZCBTQ0VWVHkpCi0gICAgICA6IEZhc3RJRChJRCksIFNDRVZUeXBlKFNDRVZUeSkge30KKyAgZXhwbGljaXQgU0NFVihjb25zdCBGb2xkaW5nU2V0Tm9kZUlEUmVmIElELCB1bnNpZ25lZCBTQ0VWVHksCisgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgRXhwcmVzc2lvblNpemUpCisgICAgICA6IEZhc3RJRChJRCksIFNDRVZUeXBlKFNDRVZUeSksIEV4cHJlc3Npb25TaXplKEV4cHJlc3Npb25TaXplKSB7fQogICBTQ0VWKGNvbnN0IFNDRVYgJikgPSBkZWxldGU7CiAgIFNDRVYgJm9wZXJhdG9yPShjb25zdCBTQ0VWICYpID0gZGVsZXRlOwogCkBAIC0xMzgsNiArMTQxLDE5IEBACiAgIC8vLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIHNjZXYgaXMgbmVnYXRlZCwgYnV0IG5vdCBhIGNvbnN0YW50LgogICBib29sIGlzTm9uQ29uc3RhbnROZWdhdGl2ZSgpIGNvbnN0OwogCisgIC8vIFJldHVybnMgZXN0aW1hdGVkIHNpemUgb2YgdGhlIG1hdGhlbWF0aWNhbCBleHByZXNzaW9uIHJlcHJlc2VudGVkIGJ5IHRoaXMKKyAgLy8gU0NFVi4gVGhlIHJ1bGVzIG9mIGl0cyBjYWxjdWxhdGlvbiBhcmUgZm9sbG93aW5nOgorICAvLyAxKSBTaXplIG9mIGEgU0NFViB3aXRob3V0IG9wZXJhbmRzIChsaWtlIGNvbnN0YW50cyBhbmQgU0NFVlVua25vd24pIGlzIDE7CisgIC8vIDIpIFNpemUgU0NFViB3aXRoIG9wZXJhbmRzIE9wMSwgT3AyLCAuLi4sIE9wTiBpcyBjYWxjdWxhdGVkIGJ5IGZvcm11bGE6CisgIC8vICAgICgxICsgU2l6ZShPcDEpICsgLi4uICsgU2l6ZShPcE4pKS4KKyAgLy8gVGhpcyB2YWx1ZSBnaXZlcyB1cyBhbiBlc3RpbWF0aW9uIG9mIHRpbWUgd2UgbmVlZCB0byB0cmF2ZXJzZSB0aHJvdWdoIHRoaXMKKyAgLy8gU0NFViBhbmQgYWxsIGl0cyBvcGVyYW5kcyByZWN1cnNpdmVseS4gV2UgbWF5IHVzZSBpdCB0byBhdm9pZCBwZXJmb3JtaW5nCisgIC8vIGhlYXZ5IHRyYW5zZm9ybWF0aW9ucyBvbiBTQ0VWcyBvZiBleGNlc3NpdmUgc2l6ZSBmb3Igc2FrZSBvZiBzYXZpbmcgdGhlCisgIC8vIGNvbXBpbGF0aW9uIHRpbWUuCisgIHVuc2lnbmVkIHNob3J0IGdldEV4cHJlc3Npb25TaXplKCkgY29uc3QgeworICAgIHJldHVybiBFeHByZXNzaW9uU2l6ZTsKKyAgfQorCiAgIC8vLyBQcmludCBvdXQgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2NhbGFyIHRvIHRoZSBzcGVjaWZpZWQKICAgLy8vIHN0cmVhbS4gIFRoaXMgc2hvdWxkIHJlYWxseSBvbmx5IGJlIHVzZWQgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KICAgdm9pZCBwcmludChyYXdfb3N0cmVhbSAmT1MpIGNvbnN0OwpAQCAtMTI3Myw3ICsxMjg5LDcgQEAKICAgICB1c2luZyBFZGdlRXhpdEluZm8gPSBzdGQ6OnBhaXI8QmFzaWNCbG9jayAqLCBFeGl0TGltaXQ+OwogCiAgICAgLy8vIEluaXRpYWxpemUgQmFja2VkZ2VUYWtlbkluZm8gZnJvbSBhIGxpc3Qgb2YgZXhhY3QgZXhpdCBjb3VudHMuCi0gICAgQmFja2VkZ2VUYWtlbkluZm8oU21hbGxWZWN0b3JJbXBsPEVkZ2VFeGl0SW5mbz4gJiZFeGl0Q291bnRzLCBib29sIENvbXBsZXRlLAorICAgIEJhY2tlZGdlVGFrZW5JbmZvKEFycmF5UmVmPEVkZ2VFeGl0SW5mbz4gRXhpdENvdW50cywgYm9vbCBDb21wbGV0ZSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTQ0VWICpNYXhDb3VudCwgYm9vbCBNYXhPclplcm8pOwogCiAgICAgLy8vIFRlc3Qgd2hldGhlciB0aGlzIEJhY2tlZGdlVGFrZW5JbmZvIGNvbnRhaW5zIGFueSBjb21wdXRlZCBpbmZvcm1hdGlvbiwKQEAgLTE4MjYsMTMgKzE4NDIsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBOb1dyYXApOwogCiAgIC8vLyBHZXQgYWRkIGV4cHIgYWxyZWFkeSBjcmVhdGVkIG9yIGNyZWF0ZSBhIG5ldyBvbmUuCi0gIGNvbnN0IFNDRVYgKmdldE9yQ3JlYXRlQWRkRXhwcihTbWFsbFZlY3RvckltcGw8Y29uc3QgU0NFViAqPiAmT3BzLAorICBjb25zdCBTQ0VWICpnZXRPckNyZWF0ZUFkZEV4cHIoQXJyYXlSZWY8Y29uc3QgU0NFViAqPiBPcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQ0VWOjpOb1dyYXBGbGFncyBGbGFncyk7CiAKICAgLy8vIEdldCBtdWwgZXhwciBhbHJlYWR5IGNyZWF0ZWQgb3IgY3JlYXRlIGEgbmV3IG9uZS4KLSAgY29uc3QgU0NFViAqZ2V0T3JDcmVhdGVNdWxFeHByKFNtYWxsVmVjdG9ySW1wbDxjb25zdCBTQ0VWICo+ICZPcHMsCisgIGNvbnN0IFNDRVYgKmdldE9yQ3JlYXRlTXVsRXhwcihBcnJheVJlZjxjb25zdCBTQ0VWICo+IE9wcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDRVY6Ok5vV3JhcEZsYWdzIEZsYWdzKTsKIAorICAvLyBHZXQgYWRkcmVjIGV4cHIgYWxyZWFkeSBjcmVhdGVkIG9yIGNyZWF0ZSBhIG5ldyBvbmUuCisgIGNvbnN0IFNDRVYgKmdldE9yQ3JlYXRlQWRkUmVjRXhwcihBcnJheVJlZjxjb25zdCBTQ0VWICo+IE9wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExvb3AgKkwsIFNDRVY6Ok5vV3JhcEZsYWdzIEZsYWdzKTsKKwogICAvLy8gUmV0dXJuIHggaWYgXHAgVmFsIGlzIGYoeCkgd2hlcmUgZiBpcyBhIDEtMSBmdW5jdGlvbi4KICAgY29uc3QgU0NFViAqc3RyaXBJbmplY3RpdmVGdW5jdGlvbnMoY29uc3QgU0NFViAqVmFsKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9TY2FsYXJFdm9sdXRpb25BbGlhc0FuYWx5c2lzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1NjYWxhckV2b2x1dGlvbkFsaWFzQW5hbHlzaXMuaAppbmRleCAzMjliZTUxLi5kNDE3ODUwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1NjYWxhckV2b2x1dGlvbkFsaWFzQW5hbHlzaXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1NjYWxhckV2b2x1dGlvbkFsaWFzQW5hbHlzaXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTY2FsYXJFdm9sdXRpb25BbGlhc0FuYWx5c2lzLmggLSBTQ0VWLWJhc2VkIEFBIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvU2NhbGFyRXZvbHV0aW9uRXhwYW5kZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvU2NhbGFyRXZvbHV0aW9uRXhwYW5kZXIuaAppbmRleCA1OGQ0MjY4Li5hMmMxMjU4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1NjYWxhckV2b2x1dGlvbkV4cGFuZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9TY2FsYXJFdm9sdXRpb25FeHBhbmRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tIGxsdm0vQW5hbHlzaXMvU2NhbGFyRXZvbHV0aW9uRXhwYW5kZXIuaCAtIFNDRVYgRXhwcnMgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1NjYWxhckV2b2x1dGlvbkV4cHJlc3Npb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1NjYWxhckV2b2x1dGlvbkV4cHJlc3Npb25zLmgKaW5kZXggNDJlNzYwOS4uZTE4N2E5NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9TY2FsYXJFdm9sdXRpb25FeHByZXNzaW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvU2NhbGFyRXZvbHV0aW9uRXhwcmVzc2lvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FuYWx5c2lzL1NjYWxhckV2b2x1dGlvbkV4cHJlc3Npb25zLmggLSBTQ0VWIEV4cHJzIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNTEsNyArNTAsNyBAQAogICAgIENvbnN0YW50SW50ICpWOwogCiAgICAgU0NFVkNvbnN0YW50KGNvbnN0IEZvbGRpbmdTZXROb2RlSURSZWYgSUQsIENvbnN0YW50SW50ICp2KSA6Ci0gICAgICBTQ0VWKElELCBzY0NvbnN0YW50KSwgVih2KSB7fQorICAgICAgU0NFVihJRCwgc2NDb25zdGFudCwgMSksIFYodikge30KIAogICBwdWJsaWM6CiAgICAgQ29uc3RhbnRJbnQgKmdldFZhbHVlKCkgY29uc3QgeyByZXR1cm4gVjsgfQpAQCAtNjUsNiArNjQsMTMgQEAKICAgICB9CiAgIH07CiAKKyAgc3RhdGljIHVuc2lnbmVkIHNob3J0IGNvbXB1dGVFeHByZXNzaW9uU2l6ZShBcnJheVJlZjxjb25zdCBTQ0VWICo+IEFyZ3MpIHsKKyAgICBBUEludCBTaXplKDE2LCAxKTsKKyAgICBmb3IgKGF1dG8gKkFyZyA6IEFyZ3MpCisgICAgICBTaXplID0gU2l6ZS51YWRkX3NhdChBUEludCgxNiwgQXJnLT5nZXRFeHByZXNzaW9uU2l6ZSgpKSk7CisgICAgcmV0dXJuICh1bnNpZ25lZCBzaG9ydClTaXplLmdldFpFeHRWYWx1ZSgpOworICB9CisKICAgLy8vIFRoaXMgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIHVuYXJ5IGNhc3Qgb3BlcmF0b3IgY2xhc3Nlcy4KICAgY2xhc3MgU0NFVkNhc3RFeHByIDogcHVibGljIFNDRVYgewogICBwcm90ZWN0ZWQ6CkBAIC0xNDIsOSArMTQ4LDEwIEBACiAgICAgY29uc3QgU0NFViAqY29uc3QgKk9wZXJhbmRzOwogICAgIHNpemVfdCBOdW1PcGVyYW5kczsKIAotICAgIFNDRVZOQXJ5RXhwcihjb25zdCBGb2xkaW5nU2V0Tm9kZUlEUmVmIElELAotICAgICAgICAgICAgICAgICBlbnVtIFNDRVZUeXBlcyBULCBjb25zdCBTQ0VWICpjb25zdCAqTywgc2l6ZV90IE4pCi0gICAgICA6IFNDRVYoSUQsIFQpLCBPcGVyYW5kcyhPKSwgTnVtT3BlcmFuZHMoTikge30KKyAgICBTQ0VWTkFyeUV4cHIoY29uc3QgRm9sZGluZ1NldE5vZGVJRFJlZiBJRCwgZW51bSBTQ0VWVHlwZXMgVCwKKyAgICAgICAgICAgICAgICAgY29uc3QgU0NFViAqY29uc3QgKk8sIHNpemVfdCBOKQorICAgICAgICA6IFNDRVYoSUQsIFQsIGNvbXB1dGVFeHByZXNzaW9uU2l6ZShtYWtlQXJyYXlSZWYoTywgTikpKSwgT3BlcmFuZHMoTyksCisgICAgICAgICAgTnVtT3BlcmFuZHMoTikge30KIAogICBwdWJsaWM6CiAgICAgc2l6ZV90IGdldE51bU9wZXJhbmRzKCkgY29uc3QgeyByZXR1cm4gTnVtT3BlcmFuZHM7IH0KQEAgLTI1OCw3ICsyNjUsOCBAQAogICAgIGNvbnN0IFNDRVYgKlJIUzsKIAogICAgIFNDRVZVRGl2RXhwcihjb25zdCBGb2xkaW5nU2V0Tm9kZUlEUmVmIElELCBjb25zdCBTQ0VWICpsaHMsIGNvbnN0IFNDRVYgKnJocykKLSAgICAgIDogU0NFVihJRCwgc2NVRGl2RXhwciksIExIUyhsaHMpLCBSSFMocmhzKSB7fQorICAgICAgICA6IFNDRVYoSUQsIHNjVURpdkV4cHIsIGNvbXB1dGVFeHByZXNzaW9uU2l6ZSh7bGhzLCByaHN9KSksIExIUyhsaHMpLAorICAgICAgICAgIFJIUyhyaHMpIHt9CiAKICAgcHVibGljOgogICAgIGNvbnN0IFNDRVYgKmdldExIUygpIGNvbnN0IHsgcmV0dXJuIExIUzsgfQpAQCAtNDExLDcgKzQxOSw3IEBACiAKICAgICBTQ0VWVW5rbm93bihjb25zdCBGb2xkaW5nU2V0Tm9kZUlEUmVmIElELCBWYWx1ZSAqViwKICAgICAgICAgICAgICAgICBTY2FsYXJFdm9sdXRpb24gKnNlLCBTQ0VWVW5rbm93biAqbmV4dCkgOgotICAgICAgU0NFVihJRCwgc2NVbmtub3duKSwgQ2FsbGJhY2tWSChWKSwgU0Uoc2UpLCBOZXh0KG5leHQpIHt9CisgICAgICBTQ0VWKElELCBzY1Vua25vd24sIDEpLCBDYWxsYmFja1ZIKFYpLCBTRShzZSksIE5leHQobmV4dCkge30KIAogICAgIC8vIEltcGxlbWVudCBDYWxsYmFja1ZILgogICAgIHZvaWQgZGVsZXRlZCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9TY2FsYXJFdm9sdXRpb25Ob3JtYWxpemF0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1NjYWxhckV2b2x1dGlvbk5vcm1hbGl6YXRpb24uaAppbmRleCA1MWM5MjEyLi4xYTA1NTk0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1NjYWxhckV2b2x1dGlvbk5vcm1hbGl6YXRpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1NjYWxhckV2b2x1dGlvbk5vcm1hbGl6YXRpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FuYWx5c2lzL1NjYWxhckV2b2x1dGlvbk5vcm1hbGl6YXRpb24uaCAtIFNlZSBiZWxvdyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9TY29wZWROb0FsaWFzQUEuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvU2NvcGVkTm9BbGlhc0FBLmgKaW5kZXggNTA4OTY4ZS4uOTRjNjAyMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9TY29wZWROb0FsaWFzQUEuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1Njb3BlZE5vQWxpYXNBQS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFNjb3BlZE5vQWxpYXNBQS5oIC0gU2NvcGVkIE5vLUFsaWFzIEFsaWFzIEFuYWx5c2lzIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNiw3ICsxNSw3IEBACiAjZGVmaW5lIExMVk1fQU5BTFlTSVNfU0NPUEVETk9BTElBU0FBX0gKIAogI2luY2x1ZGUgImxsdm0vQW5hbHlzaXMvQWxpYXNBbmFseXNpcy5oIgotI2luY2x1ZGUgImxsdm0vSVIvQ2FsbFNpdGUuaCIKKyNpbmNsdWRlICJsbHZtL0lSL0luc3RyVHlwZXMuaCIKICNpbmNsdWRlICJsbHZtL0lSL1Bhc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAibGx2bS9QYXNzLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtNDEsOCArNDAsOCBAQAogICB9CiAKICAgQWxpYXNSZXN1bHQgYWxpYXMoY29uc3QgTWVtb3J5TG9jYXRpb24gJkxvY0EsIGNvbnN0IE1lbW9yeUxvY2F0aW9uICZMb2NCKTsKLSAgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKEltbXV0YWJsZUNhbGxTaXRlIENTLCBjb25zdCBNZW1vcnlMb2NhdGlvbiAmTG9jKTsKLSAgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKEltbXV0YWJsZUNhbGxTaXRlIENTMSwgSW1tdXRhYmxlQ2FsbFNpdGUgQ1MyKTsKKyAgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKGNvbnN0IENhbGxCYXNlICpDYWxsLCBjb25zdCBNZW1vcnlMb2NhdGlvbiAmTG9jKTsKKyAgTW9kUmVmSW5mbyBnZXRNb2RSZWZJbmZvKGNvbnN0IENhbGxCYXNlICpDYWxsMSwgY29uc3QgQ2FsbEJhc2UgKkNhbGwyKTsKIAogcHJpdmF0ZToKICAgYm9vbCBtYXlBbGlhc0luU2NvcGVzKGNvbnN0IE1ETm9kZSAqU2NvcGVzLCBjb25zdCBNRE5vZGUgKk5vQWxpYXMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9TcGFyc2VQcm9wYWdhdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9TcGFyc2VQcm9wYWdhdGlvbi5oCmluZGV4IDA0ZTk0ZjcuLmZhYzkyZTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvU3BhcnNlUHJvcGFnYXRpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1NwYXJzZVByb3BhZ2F0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3BhcnNlUHJvcGFnYXRpb24uaCAtIFNwYXJzZSBDb25kaXRpb25hbCBQcm9wZXJ0eSBQcm9wYWdhdGlvbiAtLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE4OSwxMiArMTg4LDEyIEBACiAKICAgLy8vIGdldEZlYXNpYmxlU3VjY2Vzc29ycyAtIFJldHVybiBhIHZlY3RvciBvZiBib29sZWFucyB0byBpbmRpY2F0ZSB3aGljaAogICAvLy8gc3VjY2Vzc29ycyBhcmUgcmVhY2hhYmxlIGZyb20gYSBnaXZlbiB0ZXJtaW5hdG9yIGluc3RydWN0aW9uLgotICB2b2lkIGdldEZlYXNpYmxlU3VjY2Vzc29ycyhUZXJtaW5hdG9ySW5zdCAmVEksIFNtYWxsVmVjdG9ySW1wbDxib29sPiAmU3VjY3MsCisgIHZvaWQgZ2V0RmVhc2libGVTdWNjZXNzb3JzKEluc3RydWN0aW9uICZUSSwgU21hbGxWZWN0b3JJbXBsPGJvb2w+ICZTdWNjcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBBZ2dyZXNzaXZlVW5kZWYpOwogCiAgIHZvaWQgdmlzaXRJbnN0KEluc3RydWN0aW9uICZJKTsKICAgdm9pZCB2aXNpdFBISU5vZGUoUEhJTm9kZSAmSSk7Ci0gIHZvaWQgdmlzaXRUZXJtaW5hdG9ySW5zdChUZXJtaW5hdG9ySW5zdCAmVEkpOworICB2b2lkIHZpc2l0VGVybWluYXRvcihJbnN0cnVjdGlvbiAmVEkpOwogfTsKIAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KQEAgLTI4Niw3ICsyODUsNyBAQAogCiB0ZW1wbGF0ZSA8Y2xhc3MgTGF0dGljZUtleSwgY2xhc3MgTGF0dGljZVZhbCwgY2xhc3MgS2V5SW5mbz4KIHZvaWQgU3BhcnNlU29sdmVyPExhdHRpY2VLZXksIExhdHRpY2VWYWwsIEtleUluZm8+OjpnZXRGZWFzaWJsZVN1Y2Nlc3NvcnMoCi0gICAgVGVybWluYXRvckluc3QgJlRJLCBTbWFsbFZlY3RvckltcGw8Ym9vbD4gJlN1Y2NzLCBib29sIEFnZ3Jlc3NpdmVVbmRlZikgeworICAgIEluc3RydWN0aW9uICZUSSwgU21hbGxWZWN0b3JJbXBsPGJvb2w+ICZTdWNjcywgYm9vbCBBZ2dyZXNzaXZlVW5kZWYpIHsKICAgU3VjY3MucmVzaXplKFRJLmdldE51bVN1Y2Nlc3NvcnMoKSk7CiAgIGlmIChUSS5nZXROdW1TdWNjZXNzb3JzKCkgPT0gMCkKICAgICByZXR1cm47CkBAIC0zMzAsMTIgKzMyOSw4IEBACiAgICAgcmV0dXJuOwogICB9CiAKLSAgaWYgKFRJLmlzRXhjZXB0aW9uYWxUZXJtaW5hdG9yKCkpIHsKLSAgICBTdWNjcy5hc3NpZ24oU3VjY3Muc2l6ZSgpLCB0cnVlKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBpZiAoaXNhPEluZGlyZWN0QnJJbnN0PihUSSkpIHsKKyAgaWYgKFRJLmlzRXhjZXB0aW9uYWxUZXJtaW5hdG9yKCkgfHwKKyAgICAgIFRJLmlzSW5kaXJlY3RUZXJtaW5hdG9yKCkpIHsKICAgICBTdWNjcy5hc3NpZ24oU3VjY3Muc2l6ZSgpLCB0cnVlKTsKICAgICByZXR1cm47CiAgIH0KQEAgLTM3NCw3ICszNjksNyBAQAogYm9vbCBTcGFyc2VTb2x2ZXI8TGF0dGljZUtleSwgTGF0dGljZVZhbCwgS2V5SW5mbz46OmlzRWRnZUZlYXNpYmxlKAogICAgIEJhc2ljQmxvY2sgKkZyb20sIEJhc2ljQmxvY2sgKlRvLCBib29sIEFnZ3Jlc3NpdmVVbmRlZikgewogICBTbWFsbFZlY3Rvcjxib29sLCAxNj4gU3VjY0ZlYXNpYmxlOwotICBUZXJtaW5hdG9ySW5zdCAqVEkgPSBGcm9tLT5nZXRUZXJtaW5hdG9yKCk7CisgIEluc3RydWN0aW9uICpUSSA9IEZyb20tPmdldFRlcm1pbmF0b3IoKTsKICAgZ2V0RmVhc2libGVTdWNjZXNzb3JzKCpUSSwgU3VjY0ZlYXNpYmxlLCBBZ2dyZXNzaXZlVW5kZWYpOwogCiAgIGZvciAodW5zaWduZWQgaSA9IDAsIGUgPSBUSS0+Z2V0TnVtU3VjY2Vzc29ycygpOyBpICE9IGU7ICsraSkKQEAgLTM4NSw4ICszODAsOCBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTGF0dGljZUtleSwgY2xhc3MgTGF0dGljZVZhbCwgY2xhc3MgS2V5SW5mbz4KLXZvaWQgU3BhcnNlU29sdmVyPExhdHRpY2VLZXksIExhdHRpY2VWYWwsIEtleUluZm8+Ojp2aXNpdFRlcm1pbmF0b3JJbnN0KAotICAgIFRlcm1pbmF0b3JJbnN0ICZUSSkgewordm9pZCBTcGFyc2VTb2x2ZXI8TGF0dGljZUtleSwgTGF0dGljZVZhbCwgS2V5SW5mbz46OnZpc2l0VGVybWluYXRvcigKKyAgICBJbnN0cnVjdGlvbiAmVEkpIHsKICAgU21hbGxWZWN0b3I8Ym9vbCwgMTY+IFN1Y2NGZWFzaWJsZTsKICAgZ2V0RmVhc2libGVTdWNjZXNzb3JzKFRJLCBTdWNjRmVhc2libGUsIHRydWUpOwogCkBAIC00NjUsOCArNDYwLDggQEAKICAgICBpZiAoQ2hhbmdlZFZhbHVlLnNlY29uZCAhPSBMYXR0aWNlRnVuYy0+Z2V0VW50cmFja2VkVmFsKCkpCiAgICAgICBVcGRhdGVTdGF0ZShDaGFuZ2VkVmFsdWUuZmlyc3QsIENoYW5nZWRWYWx1ZS5zZWNvbmQpOwogCi0gIGlmIChUZXJtaW5hdG9ySW5zdCAqVEkgPSBkeW5fY2FzdDxUZXJtaW5hdG9ySW5zdD4oJkkpKQotICAgIHZpc2l0VGVybWluYXRvckluc3QoKlRJKTsKKyAgaWYgKEkuaXNUZXJtaW5hdG9yKCkpCisgICAgdmlzaXRUZXJtaW5hdG9yKEkpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgTGF0dGljZUtleSwgY2xhc3MgTGF0dGljZVZhbCwgY2xhc3MgS2V5SW5mbz4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvU3RhY2tTYWZldHlBbmFseXNpcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9TdGFja1NhZmV0eUFuYWx5c2lzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlkOGIwOAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvU3RhY2tTYWZldHlBbmFseXNpcy5oCkBAIC0wLDAgKzEsMTE5IEBACisvLz09PS0gU3RhY2tTYWZldHlBbmFseXNpcy5oIC0gU3RhY2sgbWVtb3J5IHNhZmV0eSBhbmFseXNpcyAtLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIFN0YWNrIFNhZmV0eSBBbmFseXNpcyBkZXRlY3RzIGFsbG9jYXMgYW5kIGFyZ3VtZW50cyB3aXRoIHNhZmUgYWNjZXNzLgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9BTkFMWVNJU19TVEFDS1NBRkVUWUFOQUxZU0lTX0gKKyNkZWZpbmUgTExWTV9BTkFMWVNJU19TVEFDS1NBRkVUWUFOQUxZU0lTX0gKKworI2luY2x1ZGUgImxsdm0vSVIvUGFzc01hbmFnZXIuaCIKKyNpbmNsdWRlICJsbHZtL1Bhc3MuaCIKKworbmFtZXNwYWNlIGxsdm0geworCisvLy8gSW50ZXJmYWNlIHRvIGFjY2VzcyBzdGFjayBzYWZldHkgYW5hbHlzaXMgcmVzdWx0cyBmb3Igc2luZ2xlIGZ1bmN0aW9uLgorY2xhc3MgU3RhY2tTYWZldHlJbmZvIHsKK3B1YmxpYzoKKyAgc3RydWN0IEZ1bmN0aW9uSW5mbzsKKworcHJpdmF0ZToKKyAgc3RkOjp1bmlxdWVfcHRyPEZ1bmN0aW9uSW5mbz4gSW5mbzsKKworcHVibGljOgorICBTdGFja1NhZmV0eUluZm8oKTsKKyAgU3RhY2tTYWZldHlJbmZvKEZ1bmN0aW9uSW5mbyAmJkluZm8pOworICBTdGFja1NhZmV0eUluZm8oU3RhY2tTYWZldHlJbmZvICYmKTsKKyAgU3RhY2tTYWZldHlJbmZvICZvcGVyYXRvcj0oU3RhY2tTYWZldHlJbmZvICYmKTsKKyAgflN0YWNrU2FmZXR5SW5mbygpOworCisgIC8vIFRPRE86IEFkZCB1c2VmdWwgZm9yIGNsaWVudCBtZXRob2RzLgorICB2b2lkIHByaW50KHJhd19vc3RyZWFtICZPKSBjb25zdDsKK307CisKKy8vLyBTdGFja1NhZmV0eUluZm8gd3JhcHBlciBmb3IgdGhlIG5ldyBwYXNzIG1hbmFnZXIuCitjbGFzcyBTdGFja1NhZmV0eUFuYWx5c2lzIDogcHVibGljIEFuYWx5c2lzSW5mb01peGluPFN0YWNrU2FmZXR5QW5hbHlzaXM+IHsKKyAgZnJpZW5kIEFuYWx5c2lzSW5mb01peGluPFN0YWNrU2FmZXR5QW5hbHlzaXM+OworICBzdGF0aWMgQW5hbHlzaXNLZXkgS2V5OworCitwdWJsaWM6CisgIHVzaW5nIFJlc3VsdCA9IFN0YWNrU2FmZXR5SW5mbzsKKyAgU3RhY2tTYWZldHlJbmZvIHJ1bihGdW5jdGlvbiAmRiwgRnVuY3Rpb25BbmFseXNpc01hbmFnZXIgJkFNKTsKK307CisKKy8vLyBQcmludGVyIHBhc3MgZm9yIHRoZSBcYyBTdGFja1NhZmV0eUFuYWx5c2lzIHJlc3VsdHMuCitjbGFzcyBTdGFja1NhZmV0eVByaW50ZXJQYXNzIDogcHVibGljIFBhc3NJbmZvTWl4aW48U3RhY2tTYWZldHlQcmludGVyUGFzcz4geworICByYXdfb3N0cmVhbSAmT1M7CisKK3B1YmxpYzoKKyAgZXhwbGljaXQgU3RhY2tTYWZldHlQcmludGVyUGFzcyhyYXdfb3N0cmVhbSAmT1MpIDogT1MoT1MpIHt9CisgIFByZXNlcnZlZEFuYWx5c2VzIHJ1bihGdW5jdGlvbiAmRiwgRnVuY3Rpb25BbmFseXNpc01hbmFnZXIgJkFNKTsKK307CisKKy8vLyBTdGFja1NhZmV0eUluZm8gd3JhcHBlciBmb3IgdGhlIGxlZ2FjeSBwYXNzIG1hbmFnZXIKK2NsYXNzIFN0YWNrU2FmZXR5SW5mb1dyYXBwZXJQYXNzIDogcHVibGljIEZ1bmN0aW9uUGFzcyB7CisgIFN0YWNrU2FmZXR5SW5mbyBTU0k7CisKK3B1YmxpYzoKKyAgc3RhdGljIGNoYXIgSUQ7CisgIFN0YWNrU2FmZXR5SW5mb1dyYXBwZXJQYXNzKCk7CisKKyAgY29uc3QgU3RhY2tTYWZldHlJbmZvICZnZXRSZXN1bHQoKSBjb25zdCB7IHJldHVybiBTU0k7IH0KKworICB2b2lkIHByaW50KHJhd19vc3RyZWFtICZPLCBjb25zdCBNb2R1bGUgKk0pIGNvbnN0IG92ZXJyaWRlOworICB2b2lkIGdldEFuYWx5c2lzVXNhZ2UoQW5hbHlzaXNVc2FnZSAmQVUpIGNvbnN0IG92ZXJyaWRlOworCisgIGJvb2wgcnVuT25GdW5jdGlvbihGdW5jdGlvbiAmRikgb3ZlcnJpZGU7Cit9OworCit1c2luZyBTdGFja1NhZmV0eUdsb2JhbEluZm8gPSBzdGQ6Om1hcDxjb25zdCBHbG9iYWxWYWx1ZSAqLCBTdGFja1NhZmV0eUluZm8+OworCisvLy8gVGhpcyBwYXNzIHBlcmZvcm1zIHRoZSBnbG9iYWwgKGludGVycHJvY2VkdXJhbCkgc3RhY2sgc2FmZXR5IGFuYWx5c2lzIChuZXcKKy8vLyBwYXNzIG1hbmFnZXIpLgorY2xhc3MgU3RhY2tTYWZldHlHbG9iYWxBbmFseXNpcworICAgIDogcHVibGljIEFuYWx5c2lzSW5mb01peGluPFN0YWNrU2FmZXR5R2xvYmFsQW5hbHlzaXM+IHsKKyAgZnJpZW5kIEFuYWx5c2lzSW5mb01peGluPFN0YWNrU2FmZXR5R2xvYmFsQW5hbHlzaXM+OworICBzdGF0aWMgQW5hbHlzaXNLZXkgS2V5OworCitwdWJsaWM6CisgIHVzaW5nIFJlc3VsdCA9IFN0YWNrU2FmZXR5R2xvYmFsSW5mbzsKKyAgUmVzdWx0IHJ1bihNb2R1bGUgJk0sIE1vZHVsZUFuYWx5c2lzTWFuYWdlciAmQU0pOworfTsKKworLy8vIFByaW50ZXIgcGFzcyBmb3IgdGhlIFxjIFN0YWNrU2FmZXR5R2xvYmFsQW5hbHlzaXMgcmVzdWx0cy4KK2NsYXNzIFN0YWNrU2FmZXR5R2xvYmFsUHJpbnRlclBhc3MKKyAgICA6IHB1YmxpYyBQYXNzSW5mb01peGluPFN0YWNrU2FmZXR5R2xvYmFsUHJpbnRlclBhc3M+IHsKKyAgcmF3X29zdHJlYW0gJk9TOworCitwdWJsaWM6CisgIGV4cGxpY2l0IFN0YWNrU2FmZXR5R2xvYmFsUHJpbnRlclBhc3MocmF3X29zdHJlYW0gJk9TKSA6IE9TKE9TKSB7fQorICBQcmVzZXJ2ZWRBbmFseXNlcyBydW4oTW9kdWxlICZNLCBNb2R1bGVBbmFseXNpc01hbmFnZXIgJkFNKTsKK307CisKKy8vLyBUaGlzIHBhc3MgcGVyZm9ybXMgdGhlIGdsb2JhbCAoaW50ZXJwcm9jZWR1cmFsKSBzdGFjayBzYWZldHkgYW5hbHlzaXMKKy8vLyAobGVnYWN5IHBhc3MgbWFuYWdlcikuCitjbGFzcyBTdGFja1NhZmV0eUdsb2JhbEluZm9XcmFwcGVyUGFzcyA6IHB1YmxpYyBNb2R1bGVQYXNzIHsKKyAgU3RhY2tTYWZldHlHbG9iYWxJbmZvIFNTSTsKKworcHVibGljOgorICBzdGF0aWMgY2hhciBJRDsKKworICBTdGFja1NhZmV0eUdsb2JhbEluZm9XcmFwcGVyUGFzcygpOworCisgIGNvbnN0IFN0YWNrU2FmZXR5R2xvYmFsSW5mbyAmZ2V0UmVzdWx0KCkgY29uc3QgeyByZXR1cm4gU1NJOyB9CisKKyAgdm9pZCBwcmludChyYXdfb3N0cmVhbSAmTywgY29uc3QgTW9kdWxlICpNKSBjb25zdCBvdmVycmlkZTsKKyAgdm9pZCBnZXRBbmFseXNpc1VzYWdlKEFuYWx5c2lzVXNhZ2UgJkFVKSBjb25zdCBvdmVycmlkZTsKKworICBib29sIHJ1bk9uTW9kdWxlKE1vZHVsZSAmTSkgb3ZlcnJpZGU7Cit9OworCit9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQorCisjZW5kaWYgLy8gTExWTV9BTkFMWVNJU19TVEFDS1NBRkVUWUFOQUxZU0lTX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvU3luY0RlcGVuZGVuY2VBbmFseXNpcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9TeW5jRGVwZW5kZW5jZUFuYWx5c2lzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk5NDAzYgotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvU3luY0RlcGVuZGVuY2VBbmFseXNpcy5oCkBAIC0wLDAgKzEsODUgQEAKKy8vPT09LSBTeW5jRGVwZW5kZW5jZUFuYWx5c2lzLmggLSBEaXZlcmdlbnQgQnJhbmNoIERlcGVuZGVuY2UgLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIFxmaWxlCisvLyBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgU3luY0RlcGVuZGVuY2VBbmFseXNpcyBjbGFzcywgd2hpY2ggY29tcHV0ZXMgZm9yCisvLyBldmVyeSBkaXZlcmdlbnQgYnJhbmNoIHRoZSBzZXQgb2YgcGhpIG5vZGVzIHRoYXQgdGhlIGJyYW5jaCB3aWxsIG1ha2UKKy8vIGRpdmVyZ2VudC4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fQU5BTFlTSVNfU1lOQ19ERVBFTkRFTkNFX0FOQUxZU0lTX0gKKyNkZWZpbmUgTExWTV9BTkFMWVNJU19TWU5DX0RFUEVOREVOQ0VfQU5BTFlTSVNfSAorCisjaW5jbHVkZSAibGx2bS9BRFQvRGVuc2VNYXAuaCIKKyNpbmNsdWRlICJsbHZtL0FEVC9Qb3N0T3JkZXJJdGVyYXRvci5oIgorI2luY2x1ZGUgImxsdm0vQURUL1NtYWxsUHRyU2V0LmgiCisjaW5jbHVkZSAibGx2bS9BbmFseXNpcy9Mb29wSW5mby5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIGxsdm0geworCitjbGFzcyBCYXNpY0Jsb2NrOworY2xhc3MgRG9taW5hdG9yVHJlZTsKK2NsYXNzIExvb3A7CitjbGFzcyBQb3N0RG9taW5hdG9yVHJlZTsKKwordXNpbmcgQ29uc3RCbG9ja1NldCA9IFNtYWxsUHRyU2V0PGNvbnN0IEJhc2ljQmxvY2sgKiwgND47CisKKy8vLyBcYnJpZWYgUmVsYXRlcyBwb2ludHMgb2YgZGl2ZXJnZW50IGNvbnRyb2wgdG8gam9pbiBwb2ludHMgaW4KKy8vLyByZWR1Y2libGUgQ0ZHcy4KKy8vLworLy8vIFRoaXMgYW5hbHlzaXMgcmVsYXRlcyBwb2ludHMgb2YgZGl2ZXJnZW50IGNvbnRyb2wgdG8gcG9pbnRzIG9mIGNvbnZlcmdpbmcKKy8vLyBkaXZlcmdlbnQgY29udHJvbC4gVGhlIGFuYWx5c2lzIHJlcXVpcmVzIGFsbCBsb29wcyB0byBiZSByZWR1Y2libGUuCitjbGFzcyBTeW5jRGVwZW5kZW5jZUFuYWx5c2lzIHsKKyAgdm9pZCB2aXNpdFN1Y2Nlc3Nvcihjb25zdCBCYXNpY0Jsb2NrICZzdWNjQmxvY2ssIGNvbnN0IExvb3AgKnRlcm1Mb29wLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhc2ljQmxvY2sgKmRlZkJsb2NrKTsKKworcHVibGljOgorICBib29sIGluUmVnaW9uKGNvbnN0IEJhc2ljQmxvY2sgJkJCKSBjb25zdDsKKworICB+U3luY0RlcGVuZGVuY2VBbmFseXNpcygpOworICBTeW5jRGVwZW5kZW5jZUFuYWx5c2lzKGNvbnN0IERvbWluYXRvclRyZWUgJkRULCBjb25zdCBQb3N0RG9taW5hdG9yVHJlZSAmUERULAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExvb3BJbmZvICZMSSk7CisKKyAgLy8vIFxicmllZiBDb21wdXRlcyBkaXZlcmdlbnQgam9pbiBwb2ludHMgYW5kIGxvb3AgZXhpdHMgY2F1c2VkIGJ5IGJyYW5jaAorICAvLy8gZGl2ZXJnZW5jZSBpbiBccCBUZXJtLgorICAvLy8KKyAgLy8vIFRoZSBzZXQgb2YgYmxvY2tzIHdoaWNoIGFyZSByZWFjaGFibGUgYnkgZGlzam9pbnQgcGF0aHMgZnJvbSBccCBUZXJtLgorICAvLy8gVGhlIHNldCBhbHNvIGNvbnRhaW5zIGxvb3AgZXhpdHMgaWYgdGhlcmUgdHdvIGRpc2pvaW50IHBhdGhzOgorICAvLy8gb25lIGZyb20gXHAgVGVybSB0byB0aGUgbG9vcCBleGl0IGFuZCBhbm90aGVyIGZyb20gXHAgVGVybSB0byB0aGUgbG9vcAorICAvLy8gaGVhZGVyLiBUaG9zZSBleGl0IGJsb2NrcyBhcmUgYWRkZWQgdG8gdGhlIHJldHVybmVkIHNldC4KKyAgLy8vIElmIEwgaXMgdGhlIHBhcmVudCBsb29wIG9mIFxwIFRlcm0gYW5kIGFuIGV4aXQgb2YgTCBpcyBpbiB0aGUgcmV0dXJuZWQKKyAgLy8vIHNldCB0aGVuIEwgaXMgYSBkaXZlcmdlbnQgbG9vcC4KKyAgY29uc3QgQ29uc3RCbG9ja1NldCAmam9pbl9ibG9ja3MoY29uc3QgSW5zdHJ1Y3Rpb24gJlRlcm0pOworCisgIC8vLyBcYnJpZWYgQ29tcHV0ZXMgZGl2ZXJnZW50IGpvaW4gcG9pbnRzIGFuZCBsb29wIGV4aXRzIChpbiB0aGUgc3Vycm91bmRpbmcKKyAgLy8vIGxvb3ApIGNhdXNlZCBieSB0aGUgZGl2ZXJnZW50IGxvb3AgZXhpdHMgb2ZccCBMb29wLgorICAvLy8KKyAgLy8vIFRoZSBzZXQgb2YgYmxvY2tzIHdoaWNoIGFyZSByZWFjaGFibGUgYnkgZGlzam9pbnQgcGF0aHMgZnJvbSB0aGUKKyAgLy8vIGxvb3AgZXhpdHMgb2YgXHAgTG9vcC4KKyAgLy8vIFRoaXMgdHJlYXRzIHRoZSBsb29wIGFzIGEgc2luZ2xlIG5vZGUgaW4gXHAgTG9vcCdzIHBhcmVudCBsb29wLgorICAvLy8gVGhlIHJldHVybmVkIHNldCBoYXMgdGhlIHNhbWUgcHJvcGVydGllcyBhcyBmb3Igam9pbl9ibG9ja3MoVGVybUluc3QmKS4KKyAgY29uc3QgQ29uc3RCbG9ja1NldCAmam9pbl9ibG9ja3MoY29uc3QgTG9vcCAmTG9vcCk7CisKK3ByaXZhdGU6CisgIHN0YXRpYyBDb25zdEJsb2NrU2V0IEVtcHR5QmxvY2tTZXQ7CisKKyAgUmV2ZXJzZVBvc3RPcmRlclRyYXZlcnNhbDxjb25zdCBGdW5jdGlvbiAqPiBGdW5jUlBPVDsKKyAgY29uc3QgRG9taW5hdG9yVHJlZSAmRFQ7CisgIGNvbnN0IFBvc3REb21pbmF0b3JUcmVlICZQRFQ7CisgIGNvbnN0IExvb3BJbmZvICZMSTsKKworICBzdGQ6Om1hcDxjb25zdCBMb29wICosIHN0ZDo6dW5pcXVlX3B0cjxDb25zdEJsb2NrU2V0Pj4gQ2FjaGVkTG9vcEV4aXRKb2luczsKKyAgc3RkOjptYXA8Y29uc3QgSW5zdHJ1Y3Rpb24gKiwgc3RkOjp1bmlxdWVfcHRyPENvbnN0QmxvY2tTZXQ+PgorICAgICAgQ2FjaGVkQnJhbmNoSm9pbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZiAvLyBMTFZNX0FOQUxZU0lTX1NZTkNfREVQRU5ERU5DRV9BTkFMWVNJU19ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1N5bnRoZXRpY0NvdW50c1V0aWxzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1N5bnRoZXRpY0NvdW50c1V0aWxzLmgKaW5kZXggODdmNGEwMS4uYjliNGM5OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9TeW50aGV0aWNDb3VudHNVdGlscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvU3ludGhldGljQ291bnRzVXRpbHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTeW50aGV0aWNDb3VudHNVdGlscy5oIC0gdXRpbGl0aWVzIGZvciBjb3VudCBwcm9wYWdhdGlvbi0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzYsMTYgKzM1LDE3IEBACiAgIHVzaW5nIEVkZ2VSZWYgPSB0eXBlbmFtZSBDR1Q6OkVkZ2VSZWY7CiAgIHVzaW5nIFNjY1R5ID0gc3RkOjp2ZWN0b3I8Tm9kZVJlZj47CiAKLSAgdXNpbmcgR2V0UmVsQkJGcmVxVHkgPSBmdW5jdGlvbl9yZWY8T3B0aW9uYWw8U2NhbGVkNjQ+KEVkZ2VSZWYpPjsKLSAgdXNpbmcgR2V0Q291bnRUeSA9IGZ1bmN0aW9uX3JlZjx1aW50NjRfdChOb2RlUmVmKT47Ci0gIHVzaW5nIEFkZENvdW50VHkgPSBmdW5jdGlvbl9yZWY8dm9pZChOb2RlUmVmLCB1aW50NjRfdCk+OworICAvLyBOb3QgYWxsIEVkZ2VSZWYgaGF2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc291cmNlIG9mIHRoZSBlZGdlLiBIZW5jZQorICAvLyBOb2RlUmVmIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHNvdXJjZSBvZiB0aGUgRWRnZVJlZiBpcyBleHBsaWNpdGx5IHBhc3NlZC4KKyAgdXNpbmcgR2V0UHJvZkNvdW50VHkgPSBmdW5jdGlvbl9yZWY8T3B0aW9uYWw8U2NhbGVkNjQ+KE5vZGVSZWYsIEVkZ2VSZWYpPjsKKyAgdXNpbmcgQWRkQ291bnRUeSA9IGZ1bmN0aW9uX3JlZjx2b2lkKE5vZGVSZWYsIFNjYWxlZDY0KT47CiAKLSAgc3RhdGljIHZvaWQgcHJvcGFnYXRlKGNvbnN0IENhbGxHcmFwaFR5cGUgJkNHLCBHZXRSZWxCQkZyZXFUeSBHZXRSZWxCQkZyZXEsCi0gICAgICAgICAgICAgICAgICAgICAgICBHZXRDb3VudFR5IEdldENvdW50LCBBZGRDb3VudFR5IEFkZENvdW50KTsKKyAgc3RhdGljIHZvaWQgcHJvcGFnYXRlKGNvbnN0IENhbGxHcmFwaFR5cGUgJkNHLCBHZXRQcm9mQ291bnRUeSBHZXRQcm9mQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBBZGRDb3VudFR5IEFkZENvdW50KTsKIAogcHJpdmF0ZToKLSAgc3RhdGljIHZvaWQgcHJvcGFnYXRlRnJvbVNDQyhjb25zdCBTY2NUeSAmU0NDLCBHZXRSZWxCQkZyZXFUeSBHZXRSZWxCQkZyZXEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0Q291bnRUeSBHZXRDb3VudCwgQWRkQ291bnRUeSBBZGRDb3VudCk7CisgIHN0YXRpYyB2b2lkIHByb3BhZ2F0ZUZyb21TQ0MoY29uc3QgU2NjVHkgJlNDQywgR2V0UHJvZkNvdW50VHkgR2V0UHJvZkNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZENvdW50VHkgQWRkQ291bnQpOwogfTsKIH0gLy8gbmFtZXNwYWNlIGxsdm0KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRGb2xkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0Rm9sZGVyLmgKaW5kZXggYWU3NWQzNy4uYjgwNDdhNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRGb2xkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldEZvbGRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT09LSBUYXJnZXRGb2xkZXIuaCAtIENvbnN0YW50IGZvbGRpbmcgaGVscGVyIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uZGVmCmluZGV4IGY5NGRlYmIuLmY3M2M2OWUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBUYXJnZXRMaWJyYXJ5SW5mby5kZWYgLSBMaWJyYXJ5IGluZm9ybWF0aW9uIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNTY1LDYgKzU2NCwzMCBAQAogLy8vIGNoYXIgKmN0ZXJtaWQoY2hhciAqcyk7CiBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoY3Rlcm1pZCkKIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJjdGVybWlkIikKKy8vLyBpbnQgZXhlY2woY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqYXJnLCAuLi4pOworVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGV4ZWNsKQorVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImV4ZWNsIikKKy8vLyBpbnQgZXhlY2xlKGNvbnN0IGNoYXIgKmZpbGUsIGNvbnN0IGNoYXIgKmFyZywgLi4uLCBjaGFyICogY29uc3QgZW52cFtdKTsKK1RMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChleGVjbGUpCitUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZXhlY2xlIikKKy8vLyBpbnQgZXhlY2xwKGNvbnN0IGNoYXIgKmZpbGUsIGNvbnN0IGNoYXIgKmFyZywgLi4uKTsKK1RMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChleGVjbHApCitUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZXhlY2xwIikKKy8vLyBpbnQgZXhlY3YoY29uc3QgY2hhciAqcGF0aCwgY2hhciAqY29uc3QgYXJndltdKTsKK1RMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChleGVjdikKK1RMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJleGVjdiIpCisvLy8gaW50IGV4ZWN2UChjb25zdCBjaGFyICpmaWxlLCBjb25zdCBjaGFyICpzZWFyY2hfcGF0aCwgY2hhciAqY29uc3QgYXJndltdKTsKK1RMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChleGVjdlApCitUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZXhlY3ZQIikKKy8vLyBpbnQgZXhlY3ZlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFyICpjb25zdCBhcmd2W10sIGNoYXIgKmNvbnN0IGVudnBbXSk7CitUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZXhlY3ZlKQorVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImV4ZWN2ZSIpCisvLy8gaW50IGV4ZWN2cChjb25zdCBjaGFyICpmaWxlLCBjaGFyICpjb25zdCBhcmd2W10pOworVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGV4ZWN2cCkKK1RMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJleGVjdnAiKQorLy8vIGludCBleGVjdnBlKGNvbnN0IGNoYXIgKmZpbGUsIGNoYXIgKmNvbnN0IGFyZ3ZbXSwgY2hhciAqY29uc3QgZW52cFtdKTsKK1RMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChleGVjdnBlKQorVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImV4ZWN2cGUiKQogLy8vIGRvdWJsZSBleHAoZG91YmxlIHgpOwogVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGV4cCkKIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJleHAiKQpAQCAtNzA5LDYgKzczMiw5IEBACiAvLy8gRklMRSAqZm9wZW42NChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqb3BlbnR5cGUpCiBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZm9wZW42NCkKIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmb3BlbjY0IikKKy8vLyBpbnQgZm9yaygpOworVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZvcmspCitUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZm9yayIpCiAvLy8gaW50IGZwcmludGYoRklMRSAqc3RyZWFtLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CiBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZnByaW50ZikKIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmcHJpbnRmIikKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaAppbmRleCBhM2ZlODM0Li5mYzY4MTFlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBUYXJnZXRMaWJyYXJ5SW5mby5oIC0gTGlicmFyeSBpbmZvcm1hdGlvbiAtLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRUcmFuc2Zvcm1JbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldFRyYW5zZm9ybUluZm8uaAppbmRleCAxOGI1YTVjLi42MGRiZjY3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldFRyYW5zZm9ybUluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldFRyYW5zZm9ybUluZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUYXJnZXRUcmFuc2Zvcm1JbmZvLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKQEAgLTQ4Nyw2ICs0ODYsMTAgQEAKICAgLy8vIGFkZHJlc3NpbmcgbW9kZSBleHByZXNzaW9ucy4KICAgYm9vbCBzaG91bGRGYXZvclBvc3RJbmMoKSBjb25zdDsKIAorICAvLy8gUmV0dXJuIHRydWUgaWYgTFNSIHNob3VsZCBtYWtlIGVmZm9ydHMgdG8gZ2VuZXJhdGUgaW5kZXhlZCBhZGRyZXNzaW5nCisgIC8vLyBtb2RlcyB0aGF0IG9wZXJhdGUgYWNyb3NzIGxvb3AgaXRlcmF0aW9ucy4KKyAgYm9vbCBzaG91bGRGYXZvckJhY2tlZGdlSW5kZXgoY29uc3QgTG9vcCAqTCkgY29uc3Q7CisKICAgLy8vIFJldHVybiB0cnVlIGlmIHRoZSB0YXJnZXQgc3VwcG9ydHMgbWFza2VkIGxvYWQvc3RvcmUKICAgLy8vIEFWWDIgYW5kIEFWWC01MTIgdGFyZ2V0cyBhbGxvdyBtYXNrcyBmb3IgY29uc2VjdXRpdmUgbG9hZCBhbmQgc3RvcmUKICAgYm9vbCBpc0xlZ2FsTWFza2VkU3RvcmUoVHlwZSAqRGF0YVR5cGUpIGNvbnN0OwpAQCAtNTgxLDEyICs1ODQsMjEgQEAKICAgc3RydWN0IE1lbUNtcEV4cGFuc2lvbk9wdGlvbnMgewogICAgIC8vIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBsb2FkIHNpemVzIChpbiBieXRlcyksIHNvcnRlZCBpbiBkZWNyZWFzaW5nIG9yZGVyLgogICAgIFNtYWxsVmVjdG9yPHVuc2lnbmVkLCA4PiBMb2FkU2l6ZXM7CisgICAgLy8gU2V0IHRvIHRydWUgdG8gYWxsb3cgb3ZlcmxhcHBpbmcgbG9hZHMuIEZvciBleGFtcGxlLCA3LWJ5dGUgY29tcGFyZXMgY2FuCisgICAgLy8gYmUgZG9uZSB3aXRoIHR3byA0LWJ5dGUgY29tcGFyZXMgaW5zdGVhZCBvZiA0KzIrMS1ieXRlIGNvbXBhcmVzLiBUaGlzCisgICAgLy8gcmVxdWlyZXMgYWxsIGxvYWRzIGluIExvYWRTaXplcyB0byBiZSBkb2FibGUgaW4gYW4gdW5hbGlnbmVkIHdheS4KKyAgICBib29sIEFsbG93T3ZlcmxhcHBpbmdMb2FkcyA9IGZhbHNlOwogICB9OwogICBjb25zdCBNZW1DbXBFeHBhbnNpb25PcHRpb25zICplbmFibGVNZW1DbXBFeHBhbnNpb24oYm9vbCBJc1plcm9DbXApIGNvbnN0OwogCiAgIC8vLyBFbmFibGUgbWF0Y2hpbmcgb2YgaW50ZXJsZWF2ZWQgYWNjZXNzIGdyb3Vwcy4KICAgYm9vbCBlbmFibGVJbnRlcmxlYXZlZEFjY2Vzc1ZlY3Rvcml6YXRpb24oKSBjb25zdDsKIAorICAvLy8gRW5hYmxlIG1hdGNoaW5nIG9mIGludGVybGVhdmVkIGFjY2VzcyBncm91cHMgdGhhdCBjb250YWluIHByZWRpY2F0ZWQKKyAgLy8vIGFjY2Vzc2VzIG9yIGdhcHMgYW5kIHRoZXJlZm9yZSB2ZWN0b3JpemVkIHVzaW5nIG1hc2tlZAorICAvLy8gdmVjdG9yIGxvYWRzL3N0b3Jlcy4KKyAgYm9vbCBlbmFibGVNYXNrZWRJbnRlcmxlYXZlZEFjY2Vzc1ZlY3Rvcml6YXRpb24oKSBjb25zdDsKKwogICAvLy8gSW5kaWNhdGUgdGhhdCBpdCBpcyBwb3RlbnRpYWxseSB1bnNhZmUgdG8gYXV0b21hdGljYWxseSB2ZWN0b3JpemUKICAgLy8vIGZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMgYmVjYXVzZSB0aGUgc2VtYW50aWNzIG9mIHZlY3RvciBhbmQgc2NhbGFyCiAgIC8vLyBmbG9hdGluZy1wb2ludCBzZW1hbnRpY3MgbWF5IGRpZmZlci4gRm9yIGV4YW1wbGUsIEFSTSBORU9OIHY3IFNJTUQgbWF0aApAQCAtNzM5LDkgKzc1MSw5IEBACiAgIC8vLyBhbmQgdGhlIG51bWJlciBvZiBleGVjdXRpb24gdW5pdHMgaW4gdGhlIENQVS4KICAgdW5zaWduZWQgZ2V0TWF4SW50ZXJsZWF2ZUZhY3Rvcih1bnNpZ25lZCBWRikgY29uc3Q7CiAKLSAgLy8vIENvbGxlY3QgcHJvcGVydGllcyBvZiBWIHVzZWQgaW4gY29zdCBhbmFseXppcywgZS5nLiBPUF9Qb3dlck9mMi4KLSAgT3BlcmFuZFZhbHVlS2luZCBnZXRPcGVyYW5kSW5mbyhWYWx1ZSAqViwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVyYW5kVmFsdWVQcm9wZXJ0aWVzICZPcFByb3BzKSBjb25zdDsKKyAgLy8vIENvbGxlY3QgcHJvcGVydGllcyBvZiBWIHVzZWQgaW4gY29zdCBhbmFseXNpcywgZS5nLiBPUF9Qb3dlck9mMi4KKyAgc3RhdGljIE9wZXJhbmRWYWx1ZUtpbmQgZ2V0T3BlcmFuZEluZm8oVmFsdWUgKlYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhbmRWYWx1ZVByb3BlcnRpZXMgJk9wUHJvcHMpOwogCiAgIC8vLyBUaGlzIGlzIGFuIGFwcHJveGltYXRpb24gb2YgcmVjaXByb2NhbCB0aHJvdWdocHV0IG9mIGEgbWF0aC9sb2dpYyBvcC4KICAgLy8vIEEgaGlnaGVyIGNvc3QgaW5kaWNhdGVzIGxlc3MgZXhwZWN0ZWQgdGhyb3VnaHB1dC4KQEAgLTc2Niw3ICs3NzgsOSBAQAogCiAgIC8vLyBccmV0dXJuIFRoZSBjb3N0IG9mIGEgc2h1ZmZsZSBpbnN0cnVjdGlvbiBvZiBraW5kIEtpbmQgYW5kIG9mIHR5cGUgVHAuCiAgIC8vLyBUaGUgaW5kZXggYW5kIHN1YnR5cGUgcGFyYW1ldGVycyBhcmUgdXNlZCBieSB0aGUgc3VidmVjdG9yIGluc2VydGlvbiBhbmQKLSAgLy8vIGV4dHJhY3Rpb24gc2h1ZmZsZSBraW5kcy4KKyAgLy8vIGV4dHJhY3Rpb24gc2h1ZmZsZSBraW5kcyB0byBzaG93IHRoZSBpbnNlcnQvZXh0cmFjdCBwb2ludCBhbmQgdGhlIHR5cGUgb2YKKyAgLy8vIHRoZSBzdWJ2ZWN0b3IgYmVpbmcgaW5zZXJ0ZWQvZXh0cmFjdGVkLgorICAvLy8gTk9URTogRm9yIHN1YnZlY3RvciBleHRyYWN0aW9ucyBUcCByZXByZXNlbnRzIHRoZSBzb3VyY2UgdHlwZS4KICAgaW50IGdldFNodWZmbGVDb3N0KFNodWZmbGVLaW5kIEtpbmQsIFR5cGUgKlRwLCBpbnQgSW5kZXggPSAwLAogICAgICAgICAgICAgICAgICAgICAgVHlwZSAqU3ViVHAgPSBudWxscHRyKSBjb25zdDsKIApAQCAtODIxLDkgKzgzNSwxMyBAQAogICAvLy8gICAgbG9hZCBhbGxvd3MgZ2FwcykKICAgLy8vIFxwIEFsaWdubWVudCBpcyB0aGUgYWxpZ25tZW50IG9mIHRoZSBtZW1vcnkgb3BlcmF0aW9uCiAgIC8vLyBccCBBZGRyZXNzU3BhY2UgaXMgYWRkcmVzcyBzcGFjZSBvZiB0aGUgcG9pbnRlci4KKyAgLy8vIFxwIFVzZU1hc2tGb3JDb25kIGluZGljYXRlcyBpZiB0aGUgbWVtb3J5IGFjY2VzcyBpcyBwcmVkaWNhdGVkLgorICAvLy8gXHAgVXNlTWFza0ZvckdhcHMgaW5kaWNhdGVzIGlmIGdhcHMgc2hvdWxkIGJlIG1hc2tlZC4KICAgaW50IGdldEludGVybGVhdmVkTWVtb3J5T3BDb3N0KHVuc2lnbmVkIE9wY29kZSwgVHlwZSAqVmVjVHksIHVuc2lnbmVkIEZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPHVuc2lnbmVkPiBJbmRpY2VzLCB1bnNpZ25lZCBBbGlnbm1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBBZGRyZXNzU3BhY2UpIGNvbnN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgQWRkcmVzc1NwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBVc2VNYXNrRm9yQ29uZCA9IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBVc2VNYXNrRm9yR2FwcyA9IGZhbHNlKSBjb25zdDsKIAogICAvLy8gQ2FsY3VsYXRlIHRoZSBjb3N0IG9mIHBlcmZvcm1pbmcgYSB2ZWN0b3IgcmVkdWN0aW9uLgogICAvLy8KQEAgLTkxOSw2ICs5MzcsMTQgQEAKICAgYm9vbCBhcmVJbmxpbmVDb21wYXRpYmxlKGNvbnN0IEZ1bmN0aW9uICpDYWxsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbiAqQ2FsbGVlKSBjb25zdDsKIAorICAvLy8gXHJldHVybnMgVHJ1ZSBpZiB0aGUgY2FsbGVyIGFuZCBjYWxsZWUgYWdyZWUgb24gaG93IFxwIEFyZ3Mgd2lsbCBiZSBwYXNzZWQKKyAgLy8vIHRvIHRoZSBjYWxsZWUuCisgIC8vLyBccGFyYW1bb3V0XSBBcmdzIFRoZSBsaXN0IG9mIGNvbXBhdGlibGUgYXJndW1lbnRzLiAgVGhlIGltcGxlbWVudGF0aW9uIG1heQorICAvLy8gZmlsdGVyIG91dCBhbnkgaW5jb21wYXRpYmxlIGFyZ3MgZnJvbSB0aGlzIGxpc3QuCisgIGJvb2wgYXJlRnVuY3Rpb25BcmdzQUJJQ29tcGF0aWJsZShjb25zdCBGdW5jdGlvbiAqQ2FsbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb24gKkNhbGxlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNtYWxsUHRyU2V0SW1wbDxBcmd1bWVudCAqPiAmQXJncykgY29uc3Q7CisKICAgLy8vIFRoZSB0eXBlIG9mIGxvYWQvc3RvcmUgaW5kZXhpbmcuCiAgIGVudW0gTWVtSW5kZXhlZE1vZGUgewogICAgIE1JTV9VbmluZGV4ZWQsICAvLy88IE5vIGluZGV4aW5nLgpAQCAtMTA0Myw2ICsxMDY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0VHJhbnNmb3JtSW5mbzo6TFNSQ29zdCAmQzIpID0gMDsKICAgdmlydHVhbCBib29sIGNhbk1hY3JvRnVzZUNtcCgpID0gMDsKICAgdmlydHVhbCBib29sIHNob3VsZEZhdm9yUG9zdEluYygpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCBib29sIHNob3VsZEZhdm9yQmFja2VkZ2VJbmRleChjb25zdCBMb29wICpMKSBjb25zdCA9IDA7CiAgIHZpcnR1YWwgYm9vbCBpc0xlZ2FsTWFza2VkU3RvcmUoVHlwZSAqRGF0YVR5cGUpID0gMDsKICAgdmlydHVhbCBib29sIGlzTGVnYWxNYXNrZWRMb2FkKFR5cGUgKkRhdGFUeXBlKSA9IDA7CiAgIHZpcnR1YWwgYm9vbCBpc0xlZ2FsTWFza2VkU2NhdHRlcihUeXBlICpEYXRhVHlwZSkgPSAwOwpAQCAtMTA3Miw2ICsxMDk5LDcgQEAKICAgdmlydHVhbCBjb25zdCBNZW1DbXBFeHBhbnNpb25PcHRpb25zICplbmFibGVNZW1DbXBFeHBhbnNpb24oCiAgICAgICBib29sIElzWmVyb0NtcCkgY29uc3QgPSAwOwogICB2aXJ0dWFsIGJvb2wgZW5hYmxlSW50ZXJsZWF2ZWRBY2Nlc3NWZWN0b3JpemF0aW9uKCkgPSAwOworICB2aXJ0dWFsIGJvb2wgZW5hYmxlTWFza2VkSW50ZXJsZWF2ZWRBY2Nlc3NWZWN0b3JpemF0aW9uKCkgPSAwOwogICB2aXJ0dWFsIGJvb2wgaXNGUFZlY3Rvcml6YXRpb25Qb3RlbnRpYWxseVVuc2FmZSgpID0gMDsKICAgdmlydHVhbCBib29sIGFsbG93c01pc2FsaWduZWRNZW1vcnlBY2Nlc3NlcyhMTFZNQ29udGV4dCAmQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBCaXRXaWR0aCwKQEAgLTExMzIsNyArMTE2MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8dW5zaWduZWQ+IEluZGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEFsaWdubWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgQWRkcmVzc1NwYWNlKSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEFkZHJlc3NTcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBVc2VNYXNrRm9yQ29uZCA9IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFVzZU1hc2tGb3JHYXBzID0gZmFsc2UpID0gMDsKICAgdmlydHVhbCBpbnQgZ2V0QXJpdGhtZXRpY1JlZHVjdGlvbkNvc3QodW5zaWduZWQgT3Bjb2RlLCBUeXBlICpUeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBJc1BhaXJ3aXNlRm9ybSkgPSAwOwogICB2aXJ0dWFsIGludCBnZXRNaW5NYXhSZWR1Y3Rpb25Db3N0KFR5cGUgKlR5LCBUeXBlICpDb25kVHksCkBAIC0xMTYxLDYgKzExOTEsOSBAQAogICAgICAgdW5zaWduZWQgUmVtYWluaW5nQnl0ZXMsIHVuc2lnbmVkIFNyY0FsaWduLCB1bnNpZ25lZCBEZXN0QWxpZ24pIGNvbnN0ID0gMDsKICAgdmlydHVhbCBib29sIGFyZUlubGluZUNvbXBhdGlibGUoY29uc3QgRnVuY3Rpb24gKkNhbGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb24gKkNhbGxlZSkgY29uc3QgPSAwOworICB2aXJ0dWFsIGJvb2wKKyAgYXJlRnVuY3Rpb25BcmdzQUJJQ29tcGF0aWJsZShjb25zdCBGdW5jdGlvbiAqQ2FsbGVyLCBjb25zdCBGdW5jdGlvbiAqQ2FsbGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNtYWxsUHRyU2V0SW1wbDxBcmd1bWVudCAqPiAmQXJncykgY29uc3QgPSAwOwogICB2aXJ0dWFsIGJvb2wgaXNJbmRleGVkTG9hZExlZ2FsKE1lbUluZGV4ZWRNb2RlIE1vZGUsIFR5cGUgKlR5KSBjb25zdCA9IDA7CiAgIHZpcnR1YWwgYm9vbCBpc0luZGV4ZWRTdG9yZUxlZ2FsKE1lbUluZGV4ZWRNb2RlIE1vZGUsVHlwZSAqVHkpIGNvbnN0ID0gMDsKICAgdmlydHVhbCB1bnNpZ25lZCBnZXRMb2FkU3RvcmVWZWNSZWdCaXRXaWR0aCh1bnNpZ25lZCBBZGRyU3BhY2UpIGNvbnN0ID0gMDsKQEAgLTEyNzMsNiArMTMwNiw5IEBACiAgIGJvb2wgc2hvdWxkRmF2b3JQb3N0SW5jKCkgY29uc3Qgb3ZlcnJpZGUgewogICAgIHJldHVybiBJbXBsLnNob3VsZEZhdm9yUG9zdEluYygpOwogICB9CisgIGJvb2wgc2hvdWxkRmF2b3JCYWNrZWRnZUluZGV4KGNvbnN0IExvb3AgKkwpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICByZXR1cm4gSW1wbC5zaG91bGRGYXZvckJhY2tlZGdlSW5kZXgoTCk7CisgIH0KICAgYm9vbCBpc0xlZ2FsTWFza2VkU3RvcmUoVHlwZSAqRGF0YVR5cGUpIG92ZXJyaWRlIHsKICAgICByZXR1cm4gSW1wbC5pc0xlZ2FsTWFza2VkU3RvcmUoRGF0YVR5cGUpOwogICB9CkBAIC0xMzQ2LDYgKzEzODIsOSBAQAogICBib29sIGVuYWJsZUludGVybGVhdmVkQWNjZXNzVmVjdG9yaXphdGlvbigpIG92ZXJyaWRlIHsKICAgICByZXR1cm4gSW1wbC5lbmFibGVJbnRlcmxlYXZlZEFjY2Vzc1ZlY3Rvcml6YXRpb24oKTsKICAgfQorICBib29sIGVuYWJsZU1hc2tlZEludGVybGVhdmVkQWNjZXNzVmVjdG9yaXphdGlvbigpIG92ZXJyaWRlIHsKKyAgICByZXR1cm4gSW1wbC5lbmFibGVNYXNrZWRJbnRlcmxlYXZlZEFjY2Vzc1ZlY3Rvcml6YXRpb24oKTsKKyAgfQogICBib29sIGlzRlBWZWN0b3JpemF0aW9uUG90ZW50aWFsbHlVbnNhZmUoKSBvdmVycmlkZSB7CiAgICAgcmV0dXJuIEltcGwuaXNGUFZlY3Rvcml6YXRpb25Qb3RlbnRpYWxseVVuc2FmZSgpOwogICB9CkBAIC0xNDcxLDkgKzE1MTAsMTEgQEAKICAgfQogICBpbnQgZ2V0SW50ZXJsZWF2ZWRNZW1vcnlPcENvc3QodW5zaWduZWQgT3Bjb2RlLCBUeXBlICpWZWNUeSwgdW5zaWduZWQgRmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8dW5zaWduZWQ+IEluZGljZXMsIHVuc2lnbmVkIEFsaWdubWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEFkZHJlc3NTcGFjZSkgb3ZlcnJpZGUgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgQWRkcmVzc1NwYWNlLCBib29sIFVzZU1hc2tGb3JDb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBVc2VNYXNrRm9yR2Fwcykgb3ZlcnJpZGUgewogICAgIHJldHVybiBJbXBsLmdldEludGVybGVhdmVkTWVtb3J5T3BDb3N0KE9wY29kZSwgVmVjVHksIEZhY3RvciwgSW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGlnbm1lbnQsIEFkZHJlc3NTcGFjZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxpZ25tZW50LCBBZGRyZXNzU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlTWFza0ZvckNvbmQsIFVzZU1hc2tGb3JHYXBzKTsKICAgfQogICBpbnQgZ2V0QXJpdGhtZXRpY1JlZHVjdGlvbkNvc3QodW5zaWduZWQgT3Bjb2RlLCBUeXBlICpUeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgSXNQYWlyd2lzZUZvcm0pIG92ZXJyaWRlIHsKQEAgLTE1MzQsNiArMTU3NSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb24gKkNhbGxlZSkgY29uc3Qgb3ZlcnJpZGUgewogICAgIHJldHVybiBJbXBsLmFyZUlubGluZUNvbXBhdGlibGUoQ2FsbGVyLCBDYWxsZWUpOwogICB9CisgIGJvb2wgYXJlRnVuY3Rpb25BcmdzQUJJQ29tcGF0aWJsZSgKKyAgICAgIGNvbnN0IEZ1bmN0aW9uICpDYWxsZXIsIGNvbnN0IEZ1bmN0aW9uICpDYWxsZWUsCisgICAgICBTbWFsbFB0clNldEltcGw8QXJndW1lbnQgKj4gJkFyZ3MpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICByZXR1cm4gSW1wbC5hcmVGdW5jdGlvbkFyZ3NBQklDb21wYXRpYmxlKENhbGxlciwgQ2FsbGVlLCBBcmdzKTsKKyAgfQogICBib29sIGlzSW5kZXhlZExvYWRMZWdhbChNZW1JbmRleGVkTW9kZSBNb2RlLCBUeXBlICpUeSkgY29uc3Qgb3ZlcnJpZGUgewogICAgIHJldHVybiBJbXBsLmlzSW5kZXhlZExvYWRMZWdhbChNb2RlLCBUeSwgZ2V0RGF0YUxheW91dCgpKTsKICAgfQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRUcmFuc2Zvcm1JbmZvSW1wbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRUcmFuc2Zvcm1JbmZvSW1wbC5oCmluZGV4IGUzOWZlNjYuLjQ3MDU5MzMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0VHJhbnNmb3JtSW5mb0ltcGwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldFRyYW5zZm9ybUluZm9JbXBsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVGFyZ2V0VHJhbnNmb3JtSW5mb0ltcGwuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCkBAIC0xNjAsNiArMTU5LDcgQEAKICAgICBjYXNlIEludHJpbnNpYzo6aW52YXJpYW50X2VuZDoKICAgICBjYXNlIEludHJpbnNpYzo6bGF1bmRlcl9pbnZhcmlhbnRfZ3JvdXA6CiAgICAgY2FzZSBJbnRyaW5zaWM6OnN0cmlwX2ludmFyaWFudF9ncm91cDoKKyAgICBjYXNlIEludHJpbnNpYzo6aXNfY29uc3RhbnQ6CiAgICAgY2FzZSBJbnRyaW5zaWM6OmxpZmV0aW1lX3N0YXJ0OgogICAgIGNhc2UgSW50cmluc2ljOjpsaWZldGltZV9lbmQ6CiAgICAgY2FzZSBJbnRyaW5zaWM6Om9iamVjdHNpemU6CkBAIC0yNTMsNiArMjUzLDggQEAKIAogICBib29sIHNob3VsZEZhdm9yUG9zdEluYygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKKyAgYm9vbCBzaG91bGRGYXZvckJhY2tlZGdlSW5kZXgoY29uc3QgTG9vcCAqTCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICBib29sIGlzTGVnYWxNYXNrZWRTdG9yZShUeXBlICpEYXRhVHlwZSkgeyByZXR1cm4gZmFsc2U7IH0KIAogICBib29sIGlzTGVnYWxNYXNrZWRMb2FkKFR5cGUgKkRhdGFUeXBlKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtMzEzLDYgKzMxNSw4IEBACiAKICAgYm9vbCBlbmFibGVJbnRlcmxlYXZlZEFjY2Vzc1ZlY3Rvcml6YXRpb24oKSB7IHJldHVybiBmYWxzZTsgfQogCisgIGJvb2wgZW5hYmxlTWFza2VkSW50ZXJsZWF2ZWRBY2Nlc3NWZWN0b3JpemF0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KKwogICBib29sIGlzRlBWZWN0b3JpemF0aW9uUG90ZW50aWFsbHlVbnNhZmUoKSB7IHJldHVybiBmYWxzZTsgfQogCiAgIGJvb2wgYWxsb3dzTWlzYWxpZ25lZE1lbW9yeUFjY2Vzc2VzKExMVk1Db250ZXh0ICZDb250ZXh0LApAQCAtNDUwLDggKzQ1NCw5IEBACiAgIHVuc2lnbmVkIGdldEludGVybGVhdmVkTWVtb3J5T3BDb3N0KHVuc2lnbmVkIE9wY29kZSwgVHlwZSAqVmVjVHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEZhY3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8dW5zaWduZWQ+IEluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEFsaWdubWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgQWRkcmVzc1NwYWNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEFsaWdubWVudCwgdW5zaWduZWQgQWRkcmVzc1NwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFVzZU1hc2tGb3JDb25kID0gZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVXNlTWFza0ZvckdhcHMgPSBmYWxzZSkgewogICAgIHJldHVybiAxOwogICB9CiAKQEAgLTUyMiw2ICs1MjcsMTQgQEAKICAgICAgICAgICAgIENhbGxlZS0+Z2V0Rm5BdHRyaWJ1dGUoInRhcmdldC1mZWF0dXJlcyIpKTsKICAgfQogCisgIGJvb2wgYXJlRnVuY3Rpb25BcmdzQUJJQ29tcGF0aWJsZShjb25zdCBGdW5jdGlvbiAqQ2FsbGVyLCBjb25zdCBGdW5jdGlvbiAqQ2FsbGVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU21hbGxQdHJTZXRJbXBsPEFyZ3VtZW50ICo+ICZBcmdzKSBjb25zdCB7CisgICAgcmV0dXJuIChDYWxsZXItPmdldEZuQXR0cmlidXRlKCJ0YXJnZXQtY3B1IikgPT0KKyAgICAgICAgICAgIENhbGxlZS0+Z2V0Rm5BdHRyaWJ1dGUoInRhcmdldC1jcHUiKSkgJiYKKyAgICAgICAgICAgKENhbGxlci0+Z2V0Rm5BdHRyaWJ1dGUoInRhcmdldC1mZWF0dXJlcyIpID09CisgICAgICAgICAgICBDYWxsZWUtPmdldEZuQXR0cmlidXRlKCJ0YXJnZXQtZmVhdHVyZXMiKSk7CisgIH0KKwogICBib29sIGlzSW5kZXhlZExvYWRMZWdhbChUVEk6Ok1lbUluZGV4ZWRNb2RlIE1vZGUsIFR5cGUgKlR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEYXRhTGF5b3V0ICZETCkgY29uc3QgewogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVHJhY2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVHJhY2UuaAppbmRleCBiMDVkMzg0Li5hMWZmZDAzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RyYWNlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UcmFjZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQW5hbHlzaXMvVHJhY2UuaCAtIFJlcHJlc2VudCBvbmUgdHJhY2Ugb2YgTExWTSBjb2RlIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1R5cGVCYXNlZEFsaWFzQW5hbHlzaXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVHlwZUJhc2VkQWxpYXNBbmFseXNpcy5oCmluZGV4IDdmY2ZkYjMuLjEyMzUwMDUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVHlwZUJhc2VkQWxpYXNBbmFseXNpcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVHlwZUJhc2VkQWxpYXNBbmFseXNpcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFR5cGVCYXNlZEFsaWFzQW5hbHlzaXMuaCAtIFR5cGUtQmFzZWQgQWxpYXMgQW5hbHlzaXMgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNyw3ICsxNiw3IEBACiAjZGVmaW5lIExMVk1fQU5BTFlTSVNfVFlQRUJBU0VEQUxJQVNBTkFMWVNJU19ICiAKICNpbmNsdWRlICJsbHZtL0FuYWx5c2lzL0FsaWFzQW5hbHlzaXMuaCIKLSNpbmNsdWRlICJsbHZtL0lSL0NhbGxTaXRlLmgiCisjaW5jbHVkZSAibGx2bS9JUi9JbnN0clR5cGVzLmgiCiAjaW5jbHVkZSAibGx2bS9JUi9QYXNzTWFuYWdlci5oIgogI2luY2x1ZGUgImxsdm0vUGFzcy5oIgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTQzLDEwICs0MiwxMCBAQAogCiAgIEFsaWFzUmVzdWx0IGFsaWFzKGNvbnN0IE1lbW9yeUxvY2F0aW9uICZMb2NBLCBjb25zdCBNZW1vcnlMb2NhdGlvbiAmTG9jQik7CiAgIGJvb2wgcG9pbnRzVG9Db25zdGFudE1lbW9yeShjb25zdCBNZW1vcnlMb2NhdGlvbiAmTG9jLCBib29sIE9yTG9jYWwpOwotICBGdW5jdGlvbk1vZFJlZkJlaGF2aW9yIGdldE1vZFJlZkJlaGF2aW9yKEltbXV0YWJsZUNhbGxTaXRlIENTKTsKKyAgRnVuY3Rpb25Nb2RSZWZCZWhhdmlvciBnZXRNb2RSZWZCZWhhdmlvcihjb25zdCBDYWxsQmFzZSAqQ2FsbCk7CiAgIEZ1bmN0aW9uTW9kUmVmQmVoYXZpb3IgZ2V0TW9kUmVmQmVoYXZpb3IoY29uc3QgRnVuY3Rpb24gKkYpOwotICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oSW1tdXRhYmxlQ2FsbFNpdGUgQ1MsIGNvbnN0IE1lbW9yeUxvY2F0aW9uICZMb2MpOwotICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oSW1tdXRhYmxlQ2FsbFNpdGUgQ1MxLCBJbW11dGFibGVDYWxsU2l0ZSBDUzIpOworICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oY29uc3QgQ2FsbEJhc2UgKkNhbGwsIGNvbnN0IE1lbW9yeUxvY2F0aW9uICZMb2MpOworICBNb2RSZWZJbmZvIGdldE1vZFJlZkluZm8oY29uc3QgQ2FsbEJhc2UgKkNhbGwxLCBjb25zdCBDYWxsQmFzZSAqQ2FsbDIpOwogCiBwcml2YXRlOgogICBib29sIEFsaWFzZXMoY29uc3QgTUROb2RlICpBLCBjb25zdCBNRE5vZGUgKkIpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UeXBlTWV0YWRhdGFVdGlscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UeXBlTWV0YWRhdGFVdGlscy5oCmluZGV4IDNiZjljNWQuLjgyY2Y4ZWYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVHlwZU1ldGFkYXRhVXRpbHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1R5cGVNZXRhZGF0YVV0aWxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVHlwZU1ldGFkYXRhVXRpbHMuaCAtIFV0aWxpdGllcyByZWxhdGVkIHRvIHR5cGUgbWV0YWRhdGEgLS0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVXRpbHMvTG9jYWwuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVXRpbHMvTG9jYWwuaAppbmRleCBiNDE0MWJiLi5hY2JkZjVkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1V0aWxzL0xvY2FsLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9VdGlscy9Mb2NhbC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExvY2FsLmggLSBGdW5jdGlvbnMgdG8gcGVyZm9ybSBsb2NhbCB0cmFuc2Zvcm1hdGlvbnMgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1ZhbHVlTGF0dGljZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9WYWx1ZUxhdHRpY2UuaAppbmRleCAwNzQ0Y2E2Li41NjUxOWQ3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1ZhbHVlTGF0dGljZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVmFsdWVMYXR0aWNlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVmFsdWVMYXR0aWNlLmggLSBWYWx1ZSBjb25zdHJhaW50IGFuYWx5c2lzIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1ZhbHVlTGF0dGljZVV0aWxzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1ZhbHVlTGF0dGljZVV0aWxzLmgKaW5kZXggMDIwNzI2Ny4uYTNiYmI5NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9WYWx1ZUxhdHRpY2VVdGlscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVmFsdWVMYXR0aWNlVXRpbHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gVmFsdWVMYXR0aWNlVXRpbHMuaCAtIFV0aWxzIGZvciBzb2x2aW5nIGxhdHRpY2VzIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9WYWx1ZVRyYWNraW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1ZhbHVlVHJhY2tpbmcuaAppbmRleCBhOTJiYThlLi5iM2MwN2IxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1ZhbHVlVHJhY2tpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1ZhbHVlVHJhY2tpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0FuYWx5c2lzL1ZhbHVlVHJhY2tpbmcuaCAtIFdhbGsgY29tcHV0YXRpb25zIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjk3LDEwICsyOTYsMTAgQEAKIAogICAvLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIGNhbGwgcG9pbnRlciBhcmd1bWVudCB0aGF0IGlzIGNvbnNpZGVyZWQgdGhlIHNhbWUgYnkKICAgLy8vIGFsaWFzaW5nIHJ1bGVzLiBZb3UgQ0FOJ1QgdXNlIGl0IHRvIHJlcGxhY2Ugb25lIHZhbHVlIHdpdGggYW5vdGhlci4KLSAgY29uc3QgVmFsdWUgKmdldEFyZ3VtZW50QWxpYXNpbmdUb1JldHVybmVkUG9pbnRlcihJbW11dGFibGVDYWxsU2l0ZSBDUyk7Ci0gIGlubGluZSBWYWx1ZSAqZ2V0QXJndW1lbnRBbGlhc2luZ1RvUmV0dXJuZWRQb2ludGVyKENhbGxTaXRlIENTKSB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8VmFsdWUgKj4oCi0gICAgICAgIGdldEFyZ3VtZW50QWxpYXNpbmdUb1JldHVybmVkUG9pbnRlcihJbW11dGFibGVDYWxsU2l0ZShDUykpKTsKKyAgY29uc3QgVmFsdWUgKmdldEFyZ3VtZW50QWxpYXNpbmdUb1JldHVybmVkUG9pbnRlcihjb25zdCBDYWxsQmFzZSAqQ2FsbCk7CisgIGlubGluZSBWYWx1ZSAqZ2V0QXJndW1lbnRBbGlhc2luZ1RvUmV0dXJuZWRQb2ludGVyKENhbGxCYXNlICpDYWxsKSB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8VmFsdWUgKj4oZ2V0QXJndW1lbnRBbGlhc2luZ1RvUmV0dXJuZWRQb2ludGVyKAorICAgICAgICBjb25zdF9jYXN0PGNvbnN0IENhbGxCYXNlICo+KENhbGwpKSk7CiAgIH0KIAogICAvLyB7bGF1bmRlcixzdHJpcH0uaW52YXJpYW50Lmdyb3VwIHJldHVybnMgcG9pbnRlciB0aGF0IGFsaWFzZXMgaXRzIGFyZ3VtZW50LApAQCAtMzA5LDcgKzMwOCw3IEBACiAgIC8vIGNvbnNpZGVyZWQgYXMgY2FwdHVyZS4gVGhlIGFyZ3VtZW50cyBhcmUgbm90IG1hcmtlZCBhcyByZXR1cm5lZCBuZWl0aGVyLAogICAvLyBiZWNhdXNlIGl0IHdvdWxkIG1ha2UgaXQgdXNlbGVzcy4KICAgYm9vbCBpc0ludHJpbnNpY1JldHVybmluZ1BvaW50ZXJBbGlhc2luZ0FyZ3VtZW50V2l0aG91dENhcHR1cmluZygKLSAgICAgIEltbXV0YWJsZUNhbGxTaXRlIENTKTsKKyAgICAgIGNvbnN0IENhbGxCYXNlICpDYWxsKTsKIAogICAvLy8gVGhpcyBtZXRob2Qgc3RyaXBzIG9mZiBhbnkgR0VQIGFkZHJlc3MgYWRqdXN0bWVudHMgYW5kIHBvaW50ZXIgY2FzdHMgZnJvbQogICAvLy8gdGhlIHNwZWNpZmllZCB2YWx1ZSwgcmV0dXJuaW5nIHRoZSBvcmlnaW5hbCBvYmplY3QgYmVpbmcgYWRkcmVzc2VkLiBOb3RlCkBAIC02MTAsNiArNjA5LDEyIEBACiAgIE9wdGlvbmFsPGJvb2w+IGlzSW1wbGllZENvbmRpdGlvbihjb25zdCBWYWx1ZSAqTEhTLCBjb25zdCBWYWx1ZSAqUkhTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRGF0YUxheW91dCAmREwsIGJvb2wgTEhTSXNUcnVlID0gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIERlcHRoID0gMCk7CisKKyAgLy8vIFJldHVybiB0aGUgYm9vbGVhbiBjb25kaXRpb24gdmFsdWUgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGdpdmVuIGluc3RydWN0aW9uCisgIC8vLyBpZiBpdCBpcyBrbm93biBiYXNlZCBvbiBkb21pbmF0aW5nIGNvbmRpdGlvbnMuCisgIE9wdGlvbmFsPGJvb2w+IGlzSW1wbGllZEJ5RG9tQ29uZGl0aW9uKGNvbnN0IFZhbHVlICpDb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiAqQ29udGV4dEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERhdGFMYXlvdXQgJkRMKTsKIH0gLy8gZW5kIG5hbWVzcGFjZSBsbHZtCiAKICNlbmRpZiAvLyBMTFZNX0FOQUxZU0lTX1ZBTFVFVFJBQ0tJTkdfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9WZWN0b3JVdGlscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9WZWN0b3JVdGlscy5oCmluZGV4IDYyMmQ5MzIuLjYwZWY2MzMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVmVjdG9yVXRpbHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1ZlY3RvclV0aWxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BbmFseXNpcy9WZWN0b3JVdGlscy5oIC0gVmVjdG9yIHV0aWxpdGllcyAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI0LDYgKzIzLDcgQEAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBBcnJheVJlZjsKIGNsYXNzIERlbWFuZGVkQml0czsKIGNsYXNzIEdldEVsZW1lbnRQdHJJbnN0OwordGVtcGxhdGUgPHR5cGVuYW1lIEluc3RUeT4gY2xhc3MgSW50ZXJsZWF2ZUdyb3VwOwogY2xhc3MgTG9vcDsKIGNsYXNzIFNjYWxhckV2b2x1dGlvbjsKIGNsYXNzIFRhcmdldFRyYW5zZm9ybUluZm87CkBAIC0xMTYsOCArMTE2LDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgRGVtYW5kZWRCaXRzICZEQiwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUYXJnZXRUcmFuc2Zvcm1JbmZvICpUVEk9bnVsbHB0cik7CiAKKy8vLyBDb21wdXRlIHRoZSB1bmlvbiBvZiB0d28gYWNjZXNzLWdyb3VwIGxpc3RzLgorLy8vCisvLy8gSWYgdGhlIGxpc3QgY29udGFpbnMganVzdCBvbmUgYWNjZXNzIGdyb3VwLCBpdCBpcyByZXR1cm5lZCBkaXJlY3RseS4gSWYgdGhlCisvLy8gbGlzdCBpcyBlbXB0eSwgcmV0dXJucyBudWxscHRyLgorTUROb2RlICp1bml0ZUFjY2Vzc0dyb3VwcyhNRE5vZGUgKkFjY0dyb3VwczEsIE1ETm9kZSAqQWNjR3JvdXBzMik7CisKKy8vLyBDb21wdXRlIHRoZSBhY2Nlc3MtZ3JvdXAgbGlzdCBvZiBhY2Nlc3MgZ3JvdXBzIHRoYXQgQHAgSW5zdDEgYW5kIEBwIEluc3QyCisvLy8gYXJlIGJvdGggaW4uIElmIGVpdGhlciBpbnN0cnVjdGlvbiBkb2VzIG5vdCBhY2Nlc3MgbWVtb3J5IGF0IGFsbCwgaXQgaXMKKy8vLyBjb25zaWRlcmVkIHRvIGJlIGluIGV2ZXJ5IGxpc3QuCisvLy8KKy8vLyBJZiB0aGUgbGlzdCBjb250YWlucyBqdXN0IG9uZSBhY2Nlc3MgZ3JvdXAsIGl0IGlzIHJldHVybmVkIGRpcmVjdGx5LiBJZiB0aGUKKy8vLyBsaXN0IGlzIGVtcHR5LCByZXR1cm5zIG51bGxwdHIuCitNRE5vZGUgKmludGVyc2VjdEFjY2Vzc0dyb3Vwcyhjb25zdCBJbnN0cnVjdGlvbiAqSW5zdDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiAqSW5zdDIpOworCiAvLy8gU3BlY2lmaWNhbGx5LCBsZXQgS2luZHMgPSBbTURfdGJhYSwgTURfYWxpYXNfc2NvcGUsIE1EX25vYWxpYXMsIE1EX2ZwbWF0aCwKLS8vLyBNRF9ub250ZW1wb3JhbF0uICBGb3IgSyBpbiBLaW5kcywgd2UgZ2V0IHRoZSBNRE5vZGUgZm9yIEsgZnJvbSBlYWNoIG9mIHRoZQorLy8vIE1EX25vbnRlbXBvcmFsLCBNRF9hY2Nlc3NfZ3JvdXBdLgorLy8vIEZvciBLIGluIEtpbmRzLCB3ZSBnZXQgdGhlIE1ETm9kZSBmb3IgSyBmcm9tIGVhY2ggb2YgdGhlCiAvLy8gZWxlbWVudHMgb2YgVkwsIGNvbXB1dGUgdGhlaXIgImludGVyc2VjdGlvbiIgKGkuZS4sIHRoZSBtb3N0IGdlbmVyaWMKIC8vLyBtZXRhZGF0YSB2YWx1ZSB0aGF0IGNvdmVycyBhbGwgb2YgdGhlIGluZGl2aWR1YWwgdmFsdWVzKSwgYW5kIHNldCBJJ3MKIC8vLyBtZXRhZGF0YSBmb3IgTSBlcXVhbCB0byB0aGUgaW50ZXJzZWN0aW9uIHZhbHVlLgpAQCAtMTI1LDYgKzE0MSwzNSBAQAogLy8vIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHNldHMgYSAocG9zc2libHkgbnVsbCkgdmFsdWUgZm9yIGVhY2ggSyBpbiBLaW5kcy4KIEluc3RydWN0aW9uICpwcm9wYWdhdGVNZXRhZGF0YShJbnN0cnVjdGlvbiAqSSwgQXJyYXlSZWY8VmFsdWUgKj4gVkwpOwogCisvLy8gQ3JlYXRlIGEgbWFzayB0aGF0IGZpbHRlcnMgdGhlIG1lbWJlcnMgb2YgYW4gaW50ZXJsZWF2ZSBncm91cCB3aGVyZSB0aGVyZQorLy8vIGFyZSBnYXBzLgorLy8vCisvLy8gRm9yIGV4YW1wbGUsIHRoZSBtYXNrIGZvciBccCBHcm91cCB3aXRoIGludGVybGVhdmUtZmFjdG9yIDMKKy8vLyBhbmQgXHAgVkYgNCwgdGhhdCBoYXMgb25seSBpdHMgZmlyc3QgbWVtYmVyIHByZXNlbnQgaXM6CisvLy8KKy8vLyAgIDwxLDAsMCwxLDAsMCwxLDAsMCwxLDAsMD4KKy8vLworLy8vIE5vdGU6IFRoZSByZXN1bHQgaXMgYSBtYXNrIG9mIDAncyBhbmQgMSdzLCBhcyBvcHBvc2VkIHRvIHRoZSBvdGhlcgorLy8vIGNyZWF0ZVsqXU1hc2soKSB1dGlsaXRpZXMgd2hpY2ggY3JlYXRlIGEgc2h1ZmZsZSBtYXNrIChtYXNrIHRoYXQKKy8vLyBjb25zaXN0cyBvZiBpbmRpY2VzKS4KK0NvbnN0YW50ICpjcmVhdGVCaXRNYXNrRm9yR2FwcyhJUkJ1aWxkZXI8PiAmQnVpbGRlciwgdW5zaWduZWQgVkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50ZXJsZWF2ZUdyb3VwPEluc3RydWN0aW9uPiAmR3JvdXApOworCisvLy8gQ3JlYXRlIGEgbWFzayB3aXRoIHJlcGxpY2F0ZWQgZWxlbWVudHMuCisvLy8KKy8vLyBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBzaHVmZmxlIG1hc2sgZm9yIHJlcGxpY2F0aW5nIGVhY2ggb2YgdGhlIFxwIFZGCisvLy8gZWxlbWVudHMgaW4gYSB2ZWN0b3IgXHAgUmVwbGljYXRpb25GYWN0b3IgdGltZXMuIEl0IGNhbiBiZSB1c2VkIHRvCisvLy8gdHJhbnNmb3JtIGEgbWFzayBvZiBccCBWRiBlbGVtZW50cyBpbnRvIGEgbWFzayBvZgorLy8vIFxwIFZGICogXHAgUmVwbGljYXRpb25GYWN0b3IgZWxlbWVudHMgdXNlZCBieSBhIHByZWRpY2F0ZWQKKy8vLyBpbnRlcmxlYXZlZC1ncm91cCBvZiBsb2Fkcy9zdG9yZXMgd2hvc2UgSW50ZXJsZWF2ZWQtZmFjdG9yID09CisvLy8gXHAgUmVwbGljYXRpb25GYWN0b3IuCisvLy8KKy8vLyBGb3IgZXhhbXBsZSwgdGhlIG1hc2sgZm9yIFxwIFJlcGxpY2F0aW9uRmFjdG9yPTMgYW5kIFxwIFZGPTQgaXM6CisvLy8KKy8vLyAgIDwwLDAsMCwxLDEsMSwyLDIsMiwzLDMsMz4KK0NvbnN0YW50ICpjcmVhdGVSZXBsaWNhdGVkTWFzayhJUkJ1aWxkZXI8PiAmQnVpbGRlciwgdW5zaWduZWQgUmVwbGljYXRpb25GYWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgVkYpOworCiAvLy8gQ3JlYXRlIGFuIGludGVybGVhdmUgc2h1ZmZsZSBtYXNrLgogLy8vCiAvLy8gVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgc2h1ZmZsZSBtYXNrIGZvciBpbnRlcmxlYXZpbmcgXHAgTnVtVmVjcyB2ZWN0b3JzIG9mCkBAIC0yMDMsOSArMjQ4LDEyIEBACiAvLy8KIC8vLyBOb3RlOiB0aGUgaW50ZXJsZWF2ZWQgbG9hZCBncm91cCBjb3VsZCBoYXZlIGdhcHMgKG1pc3NpbmcgbWVtYmVycyksIGJ1dAogLy8vIHRoZSBpbnRlcmxlYXZlZCBzdG9yZSBncm91cCBkb2Vzbid0IGFsbG93IGdhcHMuCi1jbGFzcyBJbnRlcmxlYXZlR3JvdXAgewordGVtcGxhdGUgPHR5cGVuYW1lIEluc3RUeT4gY2xhc3MgSW50ZXJsZWF2ZUdyb3VwIHsKIHB1YmxpYzoKLSAgSW50ZXJsZWF2ZUdyb3VwKEluc3RydWN0aW9uICpJbnN0ciwgaW50IFN0cmlkZSwgdW5zaWduZWQgQWxpZ24pCisgIEludGVybGVhdmVHcm91cCh1bnNpZ25lZCBGYWN0b3IsIGJvb2wgUmV2ZXJzZSwgdW5zaWduZWQgQWxpZ24pCisgICAgICA6IEZhY3RvcihGYWN0b3IpLCBSZXZlcnNlKFJldmVyc2UpLCBBbGlnbihBbGlnbiksIEluc2VydFBvcyhudWxscHRyKSB7fQorCisgIEludGVybGVhdmVHcm91cChJbnN0VHkgKkluc3RyLCBpbnQgU3RyaWRlLCB1bnNpZ25lZCBBbGlnbikKICAgICAgIDogQWxpZ24oQWxpZ24pLCBJbnNlcnRQb3MoSW5zdHIpIHsKICAgICBhc3NlcnQoQWxpZ24gJiYgIlRoZSBhbGlnbm1lbnQgc2hvdWxkIGJlIG5vbi16ZXJvIik7CiAKQEAgLTIyNiw3ICsyNzQsNyBAQAogICAvLy8gbmVnYXRpdmUgaWYgaXQgaXMgdGhlIG5ldyBsZWFkZXIuCiAgIC8vLwogICAvLy8gXHJldHVybnMgZmFsc2UgaWYgdGhlIGluc3RydWN0aW9uIGRvZXNuJ3QgYmVsb25nIHRvIHRoZSBncm91cC4KLSAgYm9vbCBpbnNlcnRNZW1iZXIoSW5zdHJ1Y3Rpb24gKkluc3RyLCBpbnQgSW5kZXgsIHVuc2lnbmVkIE5ld0FsaWduKSB7CisgIGJvb2wgaW5zZXJ0TWVtYmVyKEluc3RUeSAqSW5zdHIsIGludCBJbmRleCwgdW5zaWduZWQgTmV3QWxpZ24pIHsKICAgICBhc3NlcnQoTmV3QWxpZ24gJiYgIlRoZSBuZXcgbWVtYmVyJ3MgYWxpZ25tZW50IHNob3VsZCBiZSBub24temVybyIpOwogCiAgICAgaW50IEtleSA9IEluZGV4ICsgU21hbGxlc3RLZXk7CkBAIC0yNTgsNyArMzA2LDcgQEAKICAgLy8vIEdldCB0aGUgbWVtYmVyIHdpdGggdGhlIGdpdmVuIGluZGV4IFxwIEluZGV4CiAgIC8vLwogICAvLy8gXHJldHVybnMgbnVsbHB0ciBpZiBjb250YWlucyBubyBzdWNoIG1lbWJlci4KLSAgSW5zdHJ1Y3Rpb24gKmdldE1lbWJlcih1bnNpZ25lZCBJbmRleCkgY29uc3QgeworICBJbnN0VHkgKmdldE1lbWJlcih1bnNpZ25lZCBJbmRleCkgY29uc3QgewogICAgIGludCBLZXkgPSBTbWFsbGVzdEtleSArIEluZGV4OwogICAgIGF1dG8gTWVtYmVyID0gTWVtYmVycy5maW5kKEtleSk7CiAgICAgaWYgKE1lbWJlciA9PSBNZW1iZXJzLmVuZCgpKQpAQCAtMjY5LDE2ICszMTcsMTcgQEAKIAogICAvLy8gR2V0IHRoZSBpbmRleCBmb3IgdGhlIGdpdmVuIG1lbWJlci4gVW5saWtlIHRoZSBrZXkgaW4gdGhlIG1lbWJlcgogICAvLy8gbWFwLCB0aGUgaW5kZXggc3RhcnRzIGZyb20gMC4KLSAgdW5zaWduZWQgZ2V0SW5kZXgoSW5zdHJ1Y3Rpb24gKkluc3RyKSBjb25zdCB7Ci0gICAgZm9yIChhdXRvIEkgOiBNZW1iZXJzKQorICB1bnNpZ25lZCBnZXRJbmRleChjb25zdCBJbnN0VHkgKkluc3RyKSBjb25zdCB7CisgICAgZm9yIChhdXRvIEkgOiBNZW1iZXJzKSB7CiAgICAgICBpZiAoSS5zZWNvbmQgPT0gSW5zdHIpCiAgICAgICAgIHJldHVybiBJLmZpcnN0IC0gU21hbGxlc3RLZXk7CisgICAgfQogCiAgICAgbGx2bV91bnJlYWNoYWJsZSgiSW50ZXJsZWF2ZUdyb3VwIGNvbnRhaW5zIG5vIHN1Y2ggbWVtYmVyIik7CiAgIH0KIAotICBJbnN0cnVjdGlvbiAqZ2V0SW5zZXJ0UG9zKCkgY29uc3QgeyByZXR1cm4gSW5zZXJ0UG9zOyB9Ci0gIHZvaWQgc2V0SW5zZXJ0UG9zKEluc3RydWN0aW9uICpJbnN0KSB7IEluc2VydFBvcyA9IEluc3Q7IH0KKyAgSW5zdFR5ICpnZXRJbnNlcnRQb3MoKSBjb25zdCB7IHJldHVybiBJbnNlcnRQb3M7IH0KKyAgdm9pZCBzZXRJbnNlcnRQb3MoSW5zdFR5ICpJbnN0KSB7IEluc2VydFBvcyA9IEluc3Q7IH0KIAogICAvLy8gQWRkIG1ldGFkYXRhIChlLmcuIGFsaWFzIGluZm8pIGZyb20gdGhlIGluc3RydWN0aW9ucyBpbiB0aGlzIGdyb3VwIHRvIFxwCiAgIC8vLyBOZXdJbnN0LgpAQCAtMjg2LDE4ICszMzUsMzAgQEAKICAgLy8vIEZJWE1FOiB0aGlzIGZ1bmN0aW9uIGN1cnJlbnRseSBkb2VzIG5vdCBhZGQgbm9hbGlhcyBtZXRhZGF0YSBhJ2xhCiAgIC8vLyBhZGROZXdNZWRhdGEuICBUbyBkbyB0aGF0IHdlIG5lZWQgdG8gY29tcHV0ZSB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZQogICAvLy8gbm9hbGlhcyBpbmZvIGZyb20gYWxsIG1lbWJlcnMuCi0gIHZvaWQgYWRkTWV0YWRhdGEoSW5zdHJ1Y3Rpb24gKk5ld0luc3QpIGNvbnN0IHsKLSAgICBTbWFsbFZlY3RvcjxWYWx1ZSAqLCA0PiBWTDsKLSAgICBzdGQ6OnRyYW5zZm9ybShNZW1iZXJzLmJlZ2luKCksIE1lbWJlcnMuZW5kKCksIHN0ZDo6YmFja19pbnNlcnRlcihWTCksCi0gICAgICAgICAgICAgICAgICAgW10oc3RkOjpwYWlyPGludCwgSW5zdHJ1Y3Rpb24gKj4gcCkgeyByZXR1cm4gcC5zZWNvbmQ7IH0pOwotICAgIHByb3BhZ2F0ZU1ldGFkYXRhKE5ld0luc3QsIFZMKTsKKyAgdm9pZCBhZGRNZXRhZGF0YShJbnN0VHkgKk5ld0luc3QpIGNvbnN0OworCisgIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBHcm91cCByZXF1aXJlcyBhIHNjYWxhciBpdGVyYXRpb24gdG8gaGFuZGxlIGdhcHMuCisgIGJvb2wgcmVxdWlyZXNTY2FsYXJFcGlsb2d1ZSgpIGNvbnN0IHsKKyAgICAvLyBJZiB0aGUgbGFzdCBtZW1iZXIgb2YgdGhlIEdyb3VwIGV4aXN0cywgdGhlbiBhIHNjYWxhciBlcGlsb2cgaXMgbm90CisgICAgLy8gbmVlZGVkIGZvciB0aGlzIGdyb3VwLgorICAgIGlmIChnZXRNZW1iZXIoZ2V0RmFjdG9yKCkgLSAxKSkKKyAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFdlIGhhdmUgYSBncm91cCB3aXRoIGdhcHMuIEl0IHRoZXJlZm9yZSBjYW5ub3QgYmUgYSBncm91cCBvZiBzdG9yZXMsCisgICAgLy8gYW5kIGl0IGNhbid0IGJlIGEgcmV2ZXJzZWQgYWNjZXNzLCBiZWNhdXNlIHN1Y2ggZ3JvdXBzIGdldCBpbnZhbGlkYXRlZC4KKyAgICBhc3NlcnQoIWdldE1lbWJlcigwKS0+bWF5V3JpdGVUb01lbW9yeSgpICYmCisgICAgICAgICAgICJHcm91cCBzaG91bGQgaGF2ZSBiZWVuIGludmFsaWRhdGVkIik7CisgICAgYXNzZXJ0KCFpc1JldmVyc2UoKSAmJiAiR3JvdXAgc2hvdWxkIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCIpOworCisgICAgLy8gVGhpcyBpcyBhIGdyb3VwIG9mIGxvYWRzLCB3aXRoIGdhcHMsIGFuZCB3aXRob3V0IGEgbGFzdC1tZW1iZXIKKyAgICByZXR1cm4gdHJ1ZTsKICAgfQogCiBwcml2YXRlOgogICB1bnNpZ25lZCBGYWN0b3I7IC8vIEludGVybGVhdmUgRmFjdG9yLgogICBib29sIFJldmVyc2U7CiAgIHVuc2lnbmVkIEFsaWduOwotICBEZW5zZU1hcDxpbnQsIEluc3RydWN0aW9uICo+IE1lbWJlcnM7CisgIERlbnNlTWFwPGludCwgSW5zdFR5ICo+IE1lbWJlcnM7CiAgIGludCBTbWFsbGVzdEtleSA9IDA7CiAgIGludCBMYXJnZXN0S2V5ID0gMDsKIApAQCAtMzEyLDcgKzM3Myw3IEBACiAgIC8vICAgICAgc3RvcmUgaTMyICVldmVuCiAgIC8vICAgICAgJW9kZCA9IGFkZCBpMzIgICAgICAgICAgICAgICAvLyBEZWYgb2YgJW9kZAogICAvLyAgICAgIHN0b3JlIGkzMiAlb2RkICAgICAgICAgICAgICAgLy8gSW5zZXJ0IFBvc2l0aW9uCi0gIEluc3RydWN0aW9uICpJbnNlcnRQb3M7CisgIEluc3RUeSAqSW5zZXJ0UG9zOwogfTsKIAogLy8vIERyaXZlIHRoZSBhbmFseXNpcyBvZiBpbnRlcmxlYXZlZCBtZW1vcnkgYWNjZXNzZXMgaW4gdGhlIGxvb3AuCkBAIC0zMjgsMjAgKzM4OSwzMSBAQAogICBJbnRlcmxlYXZlZEFjY2Vzc0luZm8oUHJlZGljYXRlZFNjYWxhckV2b2x1dGlvbiAmUFNFLCBMb29wICpMLAogICAgICAgICAgICAgICAgICAgICAgICAgRG9taW5hdG9yVHJlZSAqRFQsIExvb3BJbmZvICpMSSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExvb3BBY2Nlc3NJbmZvICpMQUkpCi0gICAgOiBQU0UoUFNFKSwgVGhlTG9vcChMKSwgRFQoRFQpLCBMSShMSSksIExBSShMQUkpIHt9CisgICAgICA6IFBTRShQU0UpLCBUaGVMb29wKEwpLCBEVChEVCksIExJKExJKSwgTEFJKExBSSkge30KIAotICB+SW50ZXJsZWF2ZWRBY2Nlc3NJbmZvKCkgewotICAgIFNtYWxsUHRyU2V0PEludGVybGVhdmVHcm91cCAqLCA0PiBEZWxTZXQ7CisgIH5JbnRlcmxlYXZlZEFjY2Vzc0luZm8oKSB7IHJlc2V0KCk7IH0KKworICAvLy8gQW5hbHl6ZSB0aGUgaW50ZXJsZWF2ZWQgYWNjZXNzZXMgYW5kIGNvbGxlY3QgdGhlbSBpbiBpbnRlcmxlYXZlCisgIC8vLyBncm91cHMuIFN1YnN0aXR1dGUgc3ltYm9saWMgc3RyaWRlcyB1c2luZyBccCBTdHJpZGVzLgorICAvLy8gQ29uc2lkZXIgYWxzbyBwcmVkaWNhdGVkIGxvYWRzL3N0b3JlcyBpbiB0aGUgYW5hbHlzaXMgaWYKKyAgLy8vIFxwIEVuYWJsZU1hc2tlZEludGVybGVhdmVkR3JvdXAgaXMgdHJ1ZS4KKyAgdm9pZCBhbmFseXplSW50ZXJsZWF2aW5nKGJvb2wgRW5hYmxlTWFza2VkSW50ZXJsZWF2ZWRHcm91cCk7CisKKyAgLy8vIEludmFsaWRhdGUgZ3JvdXBzLCBlLmcuLCBpbiBjYXNlIGFsbCBibG9ja3MgaW4gbG9vcCB3aWxsIGJlIHByZWRpY2F0ZWQKKyAgLy8vIGNvbnRyYXJ5IHRvIG9yaWdpbmFsIGFzc3VtcHRpb24uIEFsdGhvdWdoIHdlIGN1cnJlbnRseSBwcmV2ZW50IGdyb3VwCisgIC8vLyBmb3JtYXRpb24gZm9yIHByZWRpY2F0ZWQgYWNjZXNzZXMsIHdlIG1heSBiZSBhYmxlIHRvIHJlbGF4IHRoaXMgbGltaXRhdGlvbgorICAvLy8gaW4gdGhlIGZ1dHVyZSBvbmNlIHdlIGhhbmRsZSBtb3JlIGNvbXBsaWNhdGVkIGJsb2Nrcy4KKyAgdm9pZCByZXNldCgpIHsKKyAgICBTbWFsbFB0clNldDxJbnRlcmxlYXZlR3JvdXA8SW5zdHJ1Y3Rpb24+ICosIDQ+IERlbFNldDsKICAgICAvLyBBdm9pZCByZWxlYXNpbmcgYSBwb2ludGVyIHR3aWNlLgogICAgIGZvciAoYXV0byAmSSA6IEludGVybGVhdmVHcm91cE1hcCkKICAgICAgIERlbFNldC5pbnNlcnQoSS5zZWNvbmQpOwogICAgIGZvciAoYXV0byAqUHRyIDogRGVsU2V0KQogICAgICAgZGVsZXRlIFB0cjsKKyAgICBJbnRlcmxlYXZlR3JvdXBNYXAuY2xlYXIoKTsKKyAgICBSZXF1aXJlc1NjYWxhckVwaWxvZ3VlID0gZmFsc2U7CiAgIH0KIAotICAvLy8gQW5hbHl6ZSB0aGUgaW50ZXJsZWF2ZWQgYWNjZXNzZXMgYW5kIGNvbGxlY3QgdGhlbSBpbiBpbnRlcmxlYXZlCi0gIC8vLyBncm91cHMuIFN1YnN0aXR1dGUgc3ltYm9saWMgc3RyaWRlcyB1c2luZyBccCBTdHJpZGVzLgotICB2b2lkIGFuYWx5emVJbnRlcmxlYXZpbmcoKTsKIAogICAvLy8gQ2hlY2sgaWYgXHAgSW5zdHIgYmVsb25ncyB0byBhbnkgaW50ZXJsZWF2ZSBncm91cC4KICAgYm9vbCBpc0ludGVybGVhdmVkKEluc3RydWN0aW9uICpJbnN0cikgY29uc3QgewpAQCAtMzUxLDE3ICs0MjMsMjcgQEAKICAgLy8vIEdldCB0aGUgaW50ZXJsZWF2ZSBncm91cCB0aGF0IFxwIEluc3RyIGJlbG9uZ3MgdG8uCiAgIC8vLwogICAvLy8gXHJldHVybnMgbnVsbHB0ciBpZiBkb2Vzbid0IGhhdmUgc3VjaCBncm91cC4KLSAgSW50ZXJsZWF2ZUdyb3VwICpnZXRJbnRlcmxlYXZlR3JvdXAoSW5zdHJ1Y3Rpb24gKkluc3RyKSBjb25zdCB7Ci0gICAgYXV0byBHcm91cCA9IEludGVybGVhdmVHcm91cE1hcC5maW5kKEluc3RyKTsKLSAgICBpZiAoR3JvdXAgPT0gSW50ZXJsZWF2ZUdyb3VwTWFwLmVuZCgpKQotICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIEdyb3VwLT5zZWNvbmQ7CisgIEludGVybGVhdmVHcm91cDxJbnN0cnVjdGlvbj4gKgorICBnZXRJbnRlcmxlYXZlR3JvdXAoY29uc3QgSW5zdHJ1Y3Rpb24gKkluc3RyKSBjb25zdCB7CisgICAgaWYgKEludGVybGVhdmVHcm91cE1hcC5jb3VudChJbnN0cikpCisgICAgICByZXR1cm4gSW50ZXJsZWF2ZUdyb3VwTWFwLmZpbmQoSW5zdHIpLT5zZWNvbmQ7CisgICAgcmV0dXJuIG51bGxwdHI7CisgIH0KKworICBpdGVyYXRvcl9yYW5nZTxTbWFsbFB0clNldEl0ZXJhdG9yPGxsdm06OkludGVybGVhdmVHcm91cDxJbnN0cnVjdGlvbj4gKj4+CisgIGdldEludGVybGVhdmVHcm91cHMoKSB7CisgICAgcmV0dXJuIG1ha2VfcmFuZ2UoSW50ZXJsZWF2ZUdyb3Vwcy5iZWdpbigpLCBJbnRlcmxlYXZlR3JvdXBzLmVuZCgpKTsKICAgfQogCiAgIC8vLyBSZXR1cm5zIHRydWUgaWYgYW4gaW50ZXJsZWF2ZWQgZ3JvdXAgdGhhdCBtYXkgYWNjZXNzIG1lbW9yeQogICAvLy8gb3V0LW9mLWJvdW5kcyByZXF1aXJlcyBhIHNjYWxhciBlcGlsb2d1ZSBpdGVyYXRpb24gZm9yIGNvcnJlY3RuZXNzLgogICBib29sIHJlcXVpcmVzU2NhbGFyRXBpbG9ndWUoKSBjb25zdCB7IHJldHVybiBSZXF1aXJlc1NjYWxhckVwaWxvZ3VlOyB9CiAKKyAgLy8vIEludmFsaWRhdGUgZ3JvdXBzIHRoYXQgcmVxdWlyZSBhIHNjYWxhciBlcGlsb2d1ZSAoZHVlIHRvIGdhcHMpLiBUaGlzIGNhbgorICAvLy8gaGFwcGVuIHdoZW4gb3B0aW1pemluZyBmb3Igc2l6ZSBmb3JiaWRzIGEgc2NhbGFyIGVwaWxvZ3VlLCBhbmQgdGhlIGdhcAorICAvLy8gY2Fubm90IGJlIGZpbHRlcmVkIGJ5IG1hc2tpbmcgdGhlIGxvYWQvc3RvcmUuCisgIHZvaWQgaW52YWxpZGF0ZUdyb3Vwc1JlcXVpcmluZ1NjYWxhckVwaWxvZ3VlKCk7CisKIHByaXZhdGU6CiAgIC8vLyBBIHdyYXBwZXIgYXJvdW5kIFNjYWxhckV2b2x1dGlvbiwgdXNlZCB0byBhZGQgcnVudGltZSBTQ0VWIGNoZWNrcy4KICAgLy8vIFNpbXBsaWZpZXMgU0NFViBleHByZXNzaW9ucyBpbiB0aGUgY29udGV4dCBvZiBleGlzdGluZyBTQ0VWIGFzc3VtcHRpb25zLgpAQCAtMzgwLDcgKzQ2Miw5IEBACiAgIGJvb2wgUmVxdWlyZXNTY2FsYXJFcGlsb2d1ZSA9IGZhbHNlOwogCiAgIC8vLyBIb2xkcyB0aGUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBtZW1iZXJzIGFuZCB0aGUgaW50ZXJsZWF2ZSBncm91cC4KLSAgRGVuc2VNYXA8SW5zdHJ1Y3Rpb24gKiwgSW50ZXJsZWF2ZUdyb3VwICo+IEludGVybGVhdmVHcm91cE1hcDsKKyAgRGVuc2VNYXA8SW5zdHJ1Y3Rpb24gKiwgSW50ZXJsZWF2ZUdyb3VwPEluc3RydWN0aW9uPiAqPiBJbnRlcmxlYXZlR3JvdXBNYXA7CisKKyAgU21hbGxQdHJTZXQ8SW50ZXJsZWF2ZUdyb3VwPEluc3RydWN0aW9uPiAqLCA0PiBJbnRlcmxlYXZlR3JvdXBzOwogCiAgIC8vLyBIb2xkcyBkZXBlbmRlbmNlcyBhbW9uZyB0aGUgbWVtb3J5IGFjY2Vzc2VzIGluIHRoZSBsb29wLiBJdCBtYXBzIGEgc291cmNlCiAgIC8vLyBhY2Nlc3MgdG8gYSBzZXQgb2YgZGVwZW5kZW50IHNpbmsgYWNjZXNzZXMuCkBAIC00MTMsMTkgKzQ5NywyMyBAQAogICAvLy8gc3RyaWRlIFxwIFN0cmlkZSBhbmQgYWxpZ25tZW50IFxwIEFsaWduLgogICAvLy8KICAgLy8vIFxyZXR1cm5zIHRoZSBuZXdseSBjcmVhdGVkIGludGVybGVhdmUgZ3JvdXAuCi0gIEludGVybGVhdmVHcm91cCAqY3JlYXRlSW50ZXJsZWF2ZUdyb3VwKEluc3RydWN0aW9uICpJbnN0ciwgaW50IFN0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgQWxpZ24pIHsKLSAgICBhc3NlcnQoIWlzSW50ZXJsZWF2ZWQoSW5zdHIpICYmICJBbHJlYWR5IGluIGFuIGludGVybGVhdmVkIGFjY2VzcyBncm91cCIpOwotICAgIEludGVybGVhdmVHcm91cE1hcFtJbnN0cl0gPSBuZXcgSW50ZXJsZWF2ZUdyb3VwKEluc3RyLCBTdHJpZGUsIEFsaWduKTsKKyAgSW50ZXJsZWF2ZUdyb3VwPEluc3RydWN0aW9uPiAqCisgIGNyZWF0ZUludGVybGVhdmVHcm91cChJbnN0cnVjdGlvbiAqSW5zdHIsIGludCBTdHJpZGUsIHVuc2lnbmVkIEFsaWduKSB7CisgICAgYXNzZXJ0KCFJbnRlcmxlYXZlR3JvdXBNYXAuY291bnQoSW5zdHIpICYmCisgICAgICAgICAgICJBbHJlYWR5IGluIGFuIGludGVybGVhdmVkIGFjY2VzcyBncm91cCIpOworICAgIEludGVybGVhdmVHcm91cE1hcFtJbnN0cl0gPQorICAgICAgICBuZXcgSW50ZXJsZWF2ZUdyb3VwPEluc3RydWN0aW9uPihJbnN0ciwgU3RyaWRlLCBBbGlnbik7CisgICAgSW50ZXJsZWF2ZUdyb3Vwcy5pbnNlcnQoSW50ZXJsZWF2ZUdyb3VwTWFwW0luc3RyXSk7CiAgICAgcmV0dXJuIEludGVybGVhdmVHcm91cE1hcFtJbnN0cl07CiAgIH0KIAogICAvLy8gUmVsZWFzZSB0aGUgZ3JvdXAgYW5kIHJlbW92ZSBhbGwgdGhlIHJlbGF0aW9uc2hpcHMuCi0gIHZvaWQgcmVsZWFzZUdyb3VwKEludGVybGVhdmVHcm91cCAqR3JvdXApIHsKKyAgdm9pZCByZWxlYXNlR3JvdXAoSW50ZXJsZWF2ZUdyb3VwPEluc3RydWN0aW9uPiAqR3JvdXApIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgR3JvdXAtPmdldEZhY3RvcigpOyBpKyspCiAgICAgICBpZiAoSW5zdHJ1Y3Rpb24gKk1lbWJlciA9IEdyb3VwLT5nZXRNZW1iZXIoaSkpCiAgICAgICAgIEludGVybGVhdmVHcm91cE1hcC5lcmFzZShNZW1iZXIpOwogCisgICAgSW50ZXJsZWF2ZUdyb3Vwcy5lcmFzZShHcm91cCk7CiAgICAgZGVsZXRlIEdyb3VwOwogICB9CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQXNtUGFyc2VyL1BhcnNlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Bc21QYXJzZXIvUGFyc2VyLmgKaW5kZXggMjg1YTdjMC4uYjBjNjAzNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Bc21QYXJzZXIvUGFyc2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Bc21QYXJzZXIvUGFyc2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFBhcnNlci5oIC0gUGFyc2VyIGZvciBMTFZNIElSIHRleHQgYXNzZW1ibHkgZmlsZXMgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQXNtUGFyc2VyL1Nsb3RNYXBwaW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0FzbVBhcnNlci9TbG90TWFwcGluZy5oCmluZGV4IGJkN2U4ZmMuLjBlOTVlYjggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQXNtUGFyc2VyL1Nsb3RNYXBwaW5nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Bc21QYXJzZXIvU2xvdE1hcHBpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gU2xvdE1hcHBpbmcuaCAtIFNsb3QgbnVtYmVyIG1hcHBpbmcgZm9yIHVubmFtZWQgdmFsdWVzIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvQU1ER1BVTWV0YWRhdGFWZXJpZmllci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvQU1ER1BVTWV0YWRhdGFWZXJpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMjcyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9BTURHUFVNZXRhZGF0YVZlcmlmaWVyLmgKQEAgLTAsMCArMSw2OSBAQAorLy89PT0tIEFNREdQVU1ldGFkYXRhVmVyaWZpZXIuaCAtIE1zZ1BhY2sgVHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCisvLy8gXGZpbGUKKy8vLyBUaGlzIGlzIGEgdmVyaWZpZXIgZm9yIEFNREdQVSBIU0EgbWV0YWRhdGEsIHdoaWNoIGNhbiB2ZXJpZnkgYm90aAorLy8vIHdlbGwtdHlwZWQgbWV0YWRhdGEgYW5kIHVudHlwZWQgbWV0YWRhdGEuIFdoZW4gdmVyaWZ5aW5nIGluIHRoZSBub24tc3RyaWN0CisvLy8gbW9kZSwgdW50eXBlZCBtZXRhZGF0YSBpcyBjb2VyY2VkIGludG8gdGhlIGNvcnJlY3QgdHlwZSBpZiBwb3NzaWJsZS4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fQklOQVJZRk9STUFUX0FNREdQVU1FVEFEQVRBVkVSSUZJRVJfSAorI2RlZmluZSBMTFZNX0JJTkFSWUZPUk1BVF9BTURHUFVNRVRBREFUQVZFUklGSUVSX0gKKworI2luY2x1ZGUgImxsdm0vQmluYXJ5Rm9ybWF0L01zZ1BhY2tUeXBlcy5oIgorCituYW1lc3BhY2UgbGx2bSB7CituYW1lc3BhY2UgQU1ER1BVIHsKK25hbWVzcGFjZSBIU0FNRCB7CituYW1lc3BhY2UgVjMgeworCisvLy8gVmVyaWZpZXIgZm9yIEFNREdQVSBIU0EgbWV0YWRhdGEuCisvLy8KKy8vLyBPcGVyYXRlcyBpbiB0d28gbW9kZXM6CisvLy8KKy8vLyBJbiBzdHJpY3QgbW9kZSwgbWV0YWRhdGEgbXVzdCBhbHJlYWR5IGJlIHdlbGwtdHlwZWQuCisvLy8KKy8vLyBJbiBub24tc3RyaWN0IG1vZGUsIG1ldGFkYXRhIGlzIGNvZXJjZWQgaW50byBleHBlY3RlZCB0eXBlcyB3aGVuIHBvc3NpYmxlLgorY2xhc3MgTWV0YWRhdGFWZXJpZmllciB7CisgIGJvb2wgU3RyaWN0OworCisgIGJvb2wgdmVyaWZ5U2NhbGFyKG1zZ3BhY2s6Ok5vZGUgJk5vZGUsIG1zZ3BhY2s6OlNjYWxhck5vZGU6OlNjYWxhcktpbmQgU0tpbmQsCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX3JlZjxib29sKG1zZ3BhY2s6OlNjYWxhck5vZGUgJik+IHZlcmlmeVZhbHVlID0ge30pOworICBib29sIHZlcmlmeUludGVnZXIobXNncGFjazo6Tm9kZSAmTm9kZSk7CisgIGJvb2wgdmVyaWZ5QXJyYXkobXNncGFjazo6Tm9kZSAmTm9kZSwKKyAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9yZWY8Ym9vbChtc2dwYWNrOjpOb2RlICYpPiB2ZXJpZnlOb2RlLAorICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPHNpemVfdD4gU2l6ZSA9IE5vbmUpOworICBib29sIHZlcmlmeUVudHJ5KG1zZ3BhY2s6Ok1hcE5vZGUgJk1hcE5vZGUsIFN0cmluZ1JlZiBLZXksIGJvb2wgUmVxdWlyZWQsCisgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fcmVmPGJvb2wobXNncGFjazo6Tm9kZSAmKT4gdmVyaWZ5Tm9kZSk7CisgIGJvb2wKKyAgdmVyaWZ5U2NhbGFyRW50cnkobXNncGFjazo6TWFwTm9kZSAmTWFwTm9kZSwgU3RyaW5nUmVmIEtleSwgYm9vbCBSZXF1aXJlZCwKKyAgICAgICAgICAgICAgICAgICAgbXNncGFjazo6U2NhbGFyTm9kZTo6U2NhbGFyS2luZCBTS2luZCwKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fcmVmPGJvb2wobXNncGFjazo6U2NhbGFyTm9kZSAmKT4gdmVyaWZ5VmFsdWUgPSB7fSk7CisgIGJvb2wgdmVyaWZ5SW50ZWdlckVudHJ5KG1zZ3BhY2s6Ok1hcE5vZGUgJk1hcE5vZGUsIFN0cmluZ1JlZiBLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgUmVxdWlyZWQpOworICBib29sIHZlcmlmeUtlcm5lbEFyZ3MobXNncGFjazo6Tm9kZSAmTm9kZSk7CisgIGJvb2wgdmVyaWZ5S2VybmVsKG1zZ3BhY2s6Ok5vZGUgJk5vZGUpOworCitwdWJsaWM6CisgIC8vLyBDb25zdHJ1Y3QgYSBNZXRhZGF0YVZlcmlmaWVyLCBzcGVjaWZ5aW5nIHdoZXRoZXIgaXQgd2lsbCBvcGVyYXRlIGluIFxwCisgIC8vLyBTdHJpY3QgbW9kZS4KKyAgTWV0YWRhdGFWZXJpZmllcihib29sIFN0cmljdCkgOiBTdHJpY3QoU3RyaWN0KSB7fQorCisgIC8vLyBWZXJpZnkgZ2l2ZW4gSFNBIG1ldGFkYXRhLgorICAvLy8KKyAgLy8vIFxyZXR1cm5zIFRydWUgd2hlbiBzdWNjZXNzZnVsLCBmYWxzZSB3aGVuIG1ldGFkYXRhIGlzIGludmFsaWQuCisgIGJvb2wgdmVyaWZ5KG1zZ3BhY2s6Ok5vZGUgJkhTQU1ldGFkYXRhUm9vdCk7Cit9OworCit9IC8vIGVuZCBuYW1lc3BhY2UgVjMKK30gLy8gZW5kIG5hbWVzcGFjZSBIU0FNRAorfSAvLyBlbmQgbmFtZXNwYWNlIEFNREdQVQorfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmIC8vIExMVk1fQklOQVJZRk9STUFUX0FNREdQVU1FVEFEQVRBVkVSSUZJRVJfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvQ09GRi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvQ09GRi5oCmluZGV4IDdiOTczYzAuLmUwNTQzZGUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L0NPRkYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9DT0ZGLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vQmluYXJ5Rm9ybWF0L0NPRkYuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTM3MSwxMyArMzcwLDE1IEBACiAgIElNQUdFX1JFTF9BUk1fVE9LRU4gPSAweDAwMDUsCiAgIElNQUdFX1JFTF9BUk1fQkxYMjQgPSAweDAwMDgsCiAgIElNQUdFX1JFTF9BUk1fQkxYMTEgPSAweDAwMDksCisgIElNQUdFX1JFTF9BUk1fUkVMMzIgPSAweDAwMEEsCiAgIElNQUdFX1JFTF9BUk1fU0VDVElPTiA9IDB4MDAwRSwKICAgSU1BR0VfUkVMX0FSTV9TRUNSRUwgPSAweDAwMEYsCiAgIElNQUdFX1JFTF9BUk1fTU9WMzJBID0gMHgwMDEwLAogICBJTUFHRV9SRUxfQVJNX01PVjMyVCA9IDB4MDAxMSwKICAgSU1BR0VfUkVMX0FSTV9CUkFOQ0gyMFQgPSAweDAwMTIsCiAgIElNQUdFX1JFTF9BUk1fQlJBTkNIMjRUID0gMHgwMDE0LAotICBJTUFHRV9SRUxfQVJNX0JMWDIzVCA9IDB4MDAxNQorICBJTUFHRV9SRUxfQVJNX0JMWDIzVCA9IDB4MDAxNSwKKyAgSU1BR0VfUkVMX0FSTV9QQUlSID0gMHgwMDE2LAogfTsKIAogZW51bSBSZWxvY2F0aW9uVHlwZXNBUk02NCA6IHVuc2lnbmVkIHsKQEAgLTM5OCw2ICszOTksNyBAQAogICBJTUFHRV9SRUxfQVJNNjRfQUREUjY0ID0gMHgwMDBFLAogICBJTUFHRV9SRUxfQVJNNjRfQlJBTkNIMTkgPSAweDAwMEYsCiAgIElNQUdFX1JFTF9BUk02NF9CUkFOQ0gxNCA9IDB4MDAxMCwKKyAgSU1BR0VfUkVMX0FSTTY0X1JFTDMyID0gMHgwMDExLAogfTsKIAogZW51bSBDT01EQVRUeXBlIDogdW5zaWduZWQgewpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvRHdhcmYuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvRHdhcmYuZGVmCmluZGV4IDZiN2E3NDEuLjkwYWUwMjMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L0R3YXJmLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9Ed2FyZi5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L0R3YXJmLmRlZiAtIER3YXJmIGRlZmluaXRpb25zIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE4LDcgKzE3LDggQEAKICAgICBkZWZpbmVkIEhBTkRMRV9EV19WSVJUVUFMSVRZIHx8IGRlZmluZWQgSEFORExFX0RXX0RFRkFVTFRFRCB8fCAgICAgICAgICAgICBcCiAgICAgZGVmaW5lZCBIQU5ETEVfRFdfQ0MgfHwgZGVmaW5lZCBIQU5ETEVfRFdfTE5TIHx8IGRlZmluZWQgSEFORExFX0RXX0xORSB8fCAgXAogICAgIGRlZmluZWQgSEFORExFX0RXX0xOQ1QgfHwgZGVmaW5lZCBIQU5ETEVfRFdfTUFDUk8gfHwgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBkZWZpbmVkIEhBTkRMRV9EV19STEUgfHwgZGVmaW5lZCBIQU5ETEVfRFdfQ0ZBIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZGVmaW5lZCBIQU5ETEVfRFdfUkxFIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChkZWZpbmVkIEhBTkRMRV9EV19DRkEgJiYgZGVmaW5lZCBIQU5ETEVfRFdfQ0ZBX1BSRUQpIHx8ICAgICAgICAgICAgICAgICAgIFwKICAgICBkZWZpbmVkIEhBTkRMRV9EV19BUFBMRV9QUk9QRVJUWSB8fCBkZWZpbmVkIEhBTkRMRV9EV19VVCB8fCAgICAgICAgICAgICAgICBcCiAgICAgZGVmaW5lZCBIQU5ETEVfRFdBUkZfU0VDVElPTiB8fCBkZWZpbmVkIEhBTkRMRV9EV19JRFggfHwgICAgICAgICAgICAgICAgICAgXAogICAgIGRlZmluZWQgSEFORExFX0RXX0VORCkKQEAgLTQyLDcgKzQyLDcgQEAKICNlbmRpZgogCiAjaWZuZGVmIEhBTkRMRV9EV19MQU5HCi0jZGVmaW5lIEhBTkRMRV9EV19MQU5HKElELCBOQU1FLCBWRVJTSU9OLCBWRU5ET1IpCisjZGVmaW5lIEhBTkRMRV9EV19MQU5HKElELCBOQU1FLCBMT1dFUl9CT1VORCwgVkVSU0lPTiwgVkVORE9SKQogI2VuZGlmCiAKICNpZm5kZWYgSEFORExFX0RXX0FURQpAQCAtODUsNiArODUsMTAgQEAKICNkZWZpbmUgSEFORExFX0RXX0NGQShJRCwgTkFNRSkKICNlbmRpZgogCisjaWZuZGVmIEhBTkRMRV9EV19DRkFfUFJFRAorI2RlZmluZSBIQU5ETEVfRFdfQ0ZBX1BSRUQoSUQsIE5BTUUsIFBSRUQpCisjZW5kaWYKKwogI2lmbmRlZiBIQU5ETEVfRFdfQVBQTEVfUFJPUEVSVFkKICNkZWZpbmUgSEFORExFX0RXX0FQUExFX1BST1BFUlRZKElELCBOQU1FKQogI2VuZGlmCkBAIC02MjcsNTAgKzYzMSw1MCBAQAogSEFORExFX0RXX09QKDB4ZmMsIEdOVV9jb25zdF9pbmRleCwgMCwgR05VKQogCiAvLyBEV0FSRiBsYW5ndWFnZXMuCi1IQU5ETEVfRFdfTEFORygweDAwMDEsIEM4OSwgMiwgRFdBUkYpCi1IQU5ETEVfRFdfTEFORygweDAwMDIsIEMsIDIsIERXQVJGKQotSEFORExFX0RXX0xBTkcoMHgwMDAzLCBBZGE4MywgMiwgRFdBUkYpCi1IQU5ETEVfRFdfTEFORygweDAwMDQsIENfcGx1c19wbHVzLCAyLCBEV0FSRikKLUhBTkRMRV9EV19MQU5HKDB4MDAwNSwgQ29ib2w3NCwgMiwgRFdBUkYpCi1IQU5ETEVfRFdfTEFORygweDAwMDYsIENvYm9sODUsIDIsIERXQVJGKQotSEFORExFX0RXX0xBTkcoMHgwMDA3LCBGb3J0cmFuNzcsIDIsIERXQVJGKQotSEFORExFX0RXX0xBTkcoMHgwMDA4LCBGb3J0cmFuOTAsIDIsIERXQVJGKQotSEFORExFX0RXX0xBTkcoMHgwMDA5LCBQYXNjYWw4MywgMiwgRFdBUkYpCi1IQU5ETEVfRFdfTEFORygweDAwMGEsIE1vZHVsYTIsIDIsIERXQVJGKQorSEFORExFX0RXX0xBTkcoMHgwMDAxLCBDODksIDAsIDIsIERXQVJGKQorSEFORExFX0RXX0xBTkcoMHgwMDAyLCBDLCAwLCAyLCBEV0FSRikKK0hBTkRMRV9EV19MQU5HKDB4MDAwMywgQWRhODMsIDEsIDIsIERXQVJGKQorSEFORExFX0RXX0xBTkcoMHgwMDA0LCBDX3BsdXNfcGx1cywgMCwgMiwgRFdBUkYpCitIQU5ETEVfRFdfTEFORygweDAwMDUsIENvYm9sNzQsIDEsIDIsIERXQVJGKQorSEFORExFX0RXX0xBTkcoMHgwMDA2LCBDb2JvbDg1LCAxLCAyLCBEV0FSRikKK0hBTkRMRV9EV19MQU5HKDB4MDAwNywgRm9ydHJhbjc3LCAxLCAyLCBEV0FSRikKK0hBTkRMRV9EV19MQU5HKDB4MDAwOCwgRm9ydHJhbjkwLCAxLCAyLCBEV0FSRikKK0hBTkRMRV9EV19MQU5HKDB4MDAwOSwgUGFzY2FsODMsIDEsIDIsIERXQVJGKQorSEFORExFX0RXX0xBTkcoMHgwMDBhLCBNb2R1bGEyLCAxLCAyLCBEV0FSRikKIC8vIE5ldyBpbiBEV0FSRiB2MzoKLUhBTkRMRV9EV19MQU5HKDB4MDAwYiwgSmF2YSwgMywgRFdBUkYpCi1IQU5ETEVfRFdfTEFORygweDAwMGMsIEM5OSwgMywgRFdBUkYpCi1IQU5ETEVfRFdfTEFORygweDAwMGQsIEFkYTk1LCAzLCBEV0FSRikKLUhBTkRMRV9EV19MQU5HKDB4MDAwZSwgRm9ydHJhbjk1LCAzLCBEV0FSRikKLUhBTkRMRV9EV19MQU5HKDB4MDAwZiwgUExJLCAzLCBEV0FSRikKLUhBTkRMRV9EV19MQU5HKDB4MDAxMCwgT2JqQywgMywgRFdBUkYpCi1IQU5ETEVfRFdfTEFORygweDAwMTEsIE9iakNfcGx1c19wbHVzLCAzLCBEV0FSRikKLUhBTkRMRV9EV19MQU5HKDB4MDAxMiwgVVBDLCAzLCBEV0FSRikKLUhBTkRMRV9EV19MQU5HKDB4MDAxMywgRCwgMywgRFdBUkYpCitIQU5ETEVfRFdfTEFORygweDAwMGIsIEphdmEsIDAsIDMsIERXQVJGKQorSEFORExFX0RXX0xBTkcoMHgwMDBjLCBDOTksIDAsIDMsIERXQVJGKQorSEFORExFX0RXX0xBTkcoMHgwMDBkLCBBZGE5NSwgMSwgMywgRFdBUkYpCitIQU5ETEVfRFdfTEFORygweDAwMGUsIEZvcnRyYW45NSwgMSwgMywgRFdBUkYpCitIQU5ETEVfRFdfTEFORygweDAwMGYsIFBMSSwgMSwgMywgRFdBUkYpCitIQU5ETEVfRFdfTEFORygweDAwMTAsIE9iakMsIDAsIDMsIERXQVJGKQorSEFORExFX0RXX0xBTkcoMHgwMDExLCBPYmpDX3BsdXNfcGx1cywgMCwgMywgRFdBUkYpCitIQU5ETEVfRFdfTEFORygweDAwMTIsIFVQQywgMCwgMywgRFdBUkYpCitIQU5ETEVfRFdfTEFORygweDAwMTMsIEQsIDAsIDMsIERXQVJGKQogLy8gTmV3IGluIERXQVJGIHY0OgotSEFORExFX0RXX0xBTkcoMHgwMDE0LCBQeXRob24sIDQsIERXQVJGKQorSEFORExFX0RXX0xBTkcoMHgwMDE0LCBQeXRob24sIDAsIDQsIERXQVJGKQogLy8gTmV3IGluIERXQVJGIHY1OgotSEFORExFX0RXX0xBTkcoMHgwMDE1LCBPcGVuQ0wsIDUsIERXQVJGKQotSEFORExFX0RXX0xBTkcoMHgwMDE2LCBHbywgNSwgRFdBUkYpCi1IQU5ETEVfRFdfTEFORygweDAwMTcsIE1vZHVsYTMsIDUsIERXQVJGKQotSEFORExFX0RXX0xBTkcoMHgwMDE4LCBIYXNrZWxsLCA1LCBEV0FSRikKLUhBTkRMRV9EV19MQU5HKDB4MDAxOSwgQ19wbHVzX3BsdXNfMDMsIDUsIERXQVJGKQotSEFORExFX0RXX0xBTkcoMHgwMDFhLCBDX3BsdXNfcGx1c18xMSwgNSwgRFdBUkYpCi1IQU5ETEVfRFdfTEFORygweDAwMWIsIE9DYW1sLCA1LCBEV0FSRikKLUhBTkRMRV9EV19MQU5HKDB4MDAxYywgUnVzdCwgNSwgRFdBUkYpCi1IQU5ETEVfRFdfTEFORygweDAwMWQsIEMxMSwgNSwgRFdBUkYpCi1IQU5ETEVfRFdfTEFORygweDAwMWUsIFN3aWZ0LCA1LCBEV0FSRikKLUhBTkRMRV9EV19MQU5HKDB4MDAxZiwgSnVsaWEsIDUsIERXQVJGKQotSEFORExFX0RXX0xBTkcoMHgwMDIwLCBEeWxhbiwgNSwgRFdBUkYpCi1IQU5ETEVfRFdfTEFORygweDAwMjEsIENfcGx1c19wbHVzXzE0LCA1LCBEV0FSRikKLUhBTkRMRV9EV19MQU5HKDB4MDAyMiwgRm9ydHJhbjAzLCA1LCBEV0FSRikKLUhBTkRMRV9EV19MQU5HKDB4MDAyMywgRm9ydHJhbjA4LCA1LCBEV0FSRikKLUhBTkRMRV9EV19MQU5HKDB4MDAyNCwgUmVuZGVyU2NyaXB0LCA1LCBEV0FSRikKLUhBTkRMRV9EV19MQU5HKDB4MDAyNSwgQkxJU1MsIDUsIERXQVJGKQorSEFORExFX0RXX0xBTkcoMHgwMDE1LCBPcGVuQ0wsIDAsIDUsIERXQVJGKQorSEFORExFX0RXX0xBTkcoMHgwMDE2LCBHbywgMCwgNSwgRFdBUkYpCitIQU5ETEVfRFdfTEFORygweDAwMTcsIE1vZHVsYTMsIDEsIDUsIERXQVJGKQorSEFORExFX0RXX0xBTkcoMHgwMDE4LCBIYXNrZWxsLCAwLCA1LCBEV0FSRikKK0hBTkRMRV9EV19MQU5HKDB4MDAxOSwgQ19wbHVzX3BsdXNfMDMsIDAsIDUsIERXQVJGKQorSEFORExFX0RXX0xBTkcoMHgwMDFhLCBDX3BsdXNfcGx1c18xMSwgMCwgNSwgRFdBUkYpCitIQU5ETEVfRFdfTEFORygweDAwMWIsIE9DYW1sLCAwLCA1LCBEV0FSRikKK0hBTkRMRV9EV19MQU5HKDB4MDAxYywgUnVzdCwgMCwgNSwgRFdBUkYpCitIQU5ETEVfRFdfTEFORygweDAwMWQsIEMxMSwgMCwgNSwgRFdBUkYpCitIQU5ETEVfRFdfTEFORygweDAwMWUsIFN3aWZ0LCAwLCA1LCBEV0FSRikKK0hBTkRMRV9EV19MQU5HKDB4MDAxZiwgSnVsaWEsIDEsIDUsIERXQVJGKQorSEFORExFX0RXX0xBTkcoMHgwMDIwLCBEeWxhbiwgMCwgNSwgRFdBUkYpCitIQU5ETEVfRFdfTEFORygweDAwMjEsIENfcGx1c19wbHVzXzE0LCAwLCA1LCBEV0FSRikKK0hBTkRMRV9EV19MQU5HKDB4MDAyMiwgRm9ydHJhbjAzLCAxLCA1LCBEV0FSRikKK0hBTkRMRV9EV19MQU5HKDB4MDAyMywgRm9ydHJhbjA4LCAxLCA1LCBEV0FSRikKK0hBTkRMRV9EV19MQU5HKDB4MDAyNCwgUmVuZGVyU2NyaXB0LCAwLCA1LCBEV0FSRikKK0hBTkRMRV9EV19MQU5HKDB4MDAyNSwgQkxJU1MsIDAsIDUsIERXQVJGKQogLy8gVmVuZG9yIGV4dGVuc2lvbnM6Ci1IQU5ETEVfRFdfTEFORygweDgwMDEsIE1pcHNfQXNzZW1ibGVyLCAwLCBNSVBTKQotSEFORExFX0RXX0xBTkcoMHg4ZTU3LCBHT09HTEVfUmVuZGVyU2NyaXB0LCAwLCBHT09HTEUpCi1IQU5ETEVfRFdfTEFORygweGIwMDAsIEJPUkxBTkRfRGVscGhpLCAwLCBCT1JMQU5EKQorSEFORExFX0RXX0xBTkcoMHg4MDAxLCBNaXBzX0Fzc2VtYmxlciwgTm9uZSwgMCwgTUlQUykKK0hBTkRMRV9EV19MQU5HKDB4OGU1NywgR09PR0xFX1JlbmRlclNjcmlwdCwgMCwgMCwgR09PR0xFKQorSEFORExFX0RXX0xBTkcoMHhiMDAwLCBCT1JMQU5EX0RlbHBoaSwgMCwgMCwgQk9STEFORCkKIAogLy8gRFdBUkYgYXR0cmlidXRlIHR5cGUgZW5jb2RpbmdzLgogSEFORExFX0RXX0FURSgweDAxLCBhZGRyZXNzLCAyLCBEV0FSRikKQEAgLTgzMSw5ICs4MzUsMTAgQEAKIEhBTkRMRV9EV19DRkEoMHgxNSwgdmFsX29mZnNldF9zZikKIEhBTkRMRV9EV19DRkEoMHgxNiwgdmFsX2V4cHJlc3Npb24pCiAvLyBWZW5kb3IgZXh0ZW5zaW9uczoKLUhBTkRMRV9EV19DRkEoMHgxZCwgTUlQU19hZHZhbmNlX2xvYzgpCi1IQU5ETEVfRFdfQ0ZBKDB4MmQsIEdOVV93aW5kb3dfc2F2ZSkKLUhBTkRMRV9EV19DRkEoMHgyZSwgR05VX2FyZ3Nfc2l6ZSkKK0hBTkRMRV9EV19DRkFfUFJFRCgweDFkLCBNSVBTX2FkdmFuY2VfbG9jOCwgU0VMRUNUX01JUFM2NCkKK0hBTkRMRV9EV19DRkFfUFJFRCgweDJkLCBHTlVfd2luZG93X3NhdmUsIFNFTEVDVF9TUEFSQykKK0hBTkRMRV9EV19DRkFfUFJFRCgweDJkLCBBQVJDSDY0X25lZ2F0ZV9yYV9zdGF0ZSwgU0VMRUNUX0FBUkNINjQpCitIQU5ETEVfRFdfQ0ZBX1BSRUQoMHgyZSwgR05VX2FyZ3Nfc2l6ZSwgU0VMRUNUX1g4NikKIAogLy8gQXBwbGUgT2JqZWN0aXZlLUMgUHJvcGVydHkgQXR0cmlidXRlcy4KIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBjbGFuZydzIERlY2xTcGVjLmggT2JqQ1Byb3BlcnR5QXR0cmlidXRlS2luZCEKQEAgLTg3Myw2ICs4NzgsNyBAQAogSEFORExFX0RXQVJGX1NFQ1RJT04oRGVidWdMaW5lLCAiLmRlYnVnX2xpbmUiLCAiZGVidWctbGluZSIpCiBIQU5ETEVfRFdBUkZfU0VDVElPTihEZWJ1Z0xpbmVTdHIsICIuZGVidWdfbGluZV9zdHIiLCAiZGVidWctbGluZS1zdHIiKQogSEFORExFX0RXQVJGX1NFQ1RJT04oRGVidWdMb2MsICIuZGVidWdfbG9jIiwgImRlYnVnLWxvYyIpCitIQU5ETEVfRFdBUkZfU0VDVElPTihEZWJ1Z0xvY2xpc3RzLCAiLmRlYnVnX2xvY2xpc3RzIiwgImRlYnVnLWxvY2xpc3RzIikKIEhBTkRMRV9EV0FSRl9TRUNUSU9OKERlYnVnRnJhbWUsICIuZGVidWdfZnJhbWUiLCAiZGVidWctZnJhbWUiKQogSEFORExFX0RXQVJGX1NFQ1RJT04oRGVidWdNYWNybywgIi5kZWJ1Z19tYWNybyIsICJkZWJ1Zy1tYWNybyIpCiBIQU5ETEVfRFdBUkZfU0VDVElPTihEZWJ1Z05hbWVzLCAiLmRlYnVnX25hbWVzIiwgImRlYnVnLW5hbWVzIikKQEAgLTkxNSw2ICs5MjEsNyBAQAogI3VuZGVmIEhBTkRMRV9EV19NQUNSTwogI3VuZGVmIEhBTkRMRV9EV19STEUKICN1bmRlZiBIQU5ETEVfRFdfQ0ZBCisjdW5kZWYgSEFORExFX0RXX0NGQV9QUkVECiAjdW5kZWYgSEFORExFX0RXX0FQUExFX1BST1BFUlRZCiAjdW5kZWYgSEFORExFX0RXX1VUCiAjdW5kZWYgSEFORExFX0RXQVJGX1NFQ1RJT04KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L0R3YXJmLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9Ed2FyZi5oCmluZGV4IDMzMGUzMWMuLjM3NTdjNzUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L0R3YXJmLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvRHdhcmYuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9CaW5hcnlGb3JtYXQvRHdhcmYuaCAtLS1Ed2FyZiBDb25zdGFudHMtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjYsNiArMjUsNyBAQAogI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9FcnJvckhhbmRsaW5nLmgiCiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0Zvcm1hdC5oIgogI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9Gb3JtYXRWYXJpYWRpY0RldGFpbHMuaCIKKyNpbmNsdWRlICJsbHZtL0FEVC9UcmlwbGUuaCIKIAogbmFtZXNwYWNlIGxsdm0gewogY2xhc3MgU3RyaW5nUmVmOwpAQCAtMTgzLDcgKzE4Myw4IEBACiB9OwogCiBlbnVtIFNvdXJjZUxhbmd1YWdlIHsKLSNkZWZpbmUgSEFORExFX0RXX0xBTkcoSUQsIE5BTUUsIFZFUlNJT04sIFZFTkRPUikgRFdfTEFOR18jI05BTUUgPSBJRCwKKyNkZWZpbmUgSEFORExFX0RXX0xBTkcoSUQsIE5BTUUsIExPV0VSX0JPVU5ELCBWRVJTSU9OLCBWRU5ET1IpICAgICAgICAgICAgICAgICBcCisgIERXX0xBTkdfIyNOQU1FID0gSUQsCiAjaW5jbHVkZSAibGx2bS9CaW5hcnlGb3JtYXQvRHdhcmYuZGVmIgogICBEV19MQU5HX2xvX3VzZXIgPSAweDgwMDAsCiAgIERXX0xBTkdfaGlfdXNlciA9IDB4ZmZmZgpAQCAtMjcyLDYgKzI3Myw3IEBACiAvLy8gQ2FsbCBmcmFtZSBpbnN0cnVjdGlvbiBlbmNvZGluZ3MuCiBlbnVtIENhbGxGcmFtZUluZm8gewogI2RlZmluZSBIQU5ETEVfRFdfQ0ZBKElELCBOQU1FKSBEV19DRkFfIyNOQU1FID0gSUQsCisjZGVmaW5lIEhBTkRMRV9EV19DRkFfUFJFRChJRCwgTkFNRSwgQVJDSCkgRFdfQ0ZBXyMjTkFNRSA9IElELAogI2luY2x1ZGUgImxsdm0vQmluYXJ5Rm9ybWF0L0R3YXJmLmRlZiIKICAgRFdfQ0ZBX2V4dGVuZGVkID0gMHgwMCwKIApAQCAtNDMwLDcgKzQzMiw3IEBACiBTdHJpbmdSZWYgTE5FeHRlbmRlZFN0cmluZyh1bnNpZ25lZCBFbmNvZGluZyk7CiBTdHJpbmdSZWYgTWFjaW5mb1N0cmluZyh1bnNpZ25lZCBFbmNvZGluZyk7CiBTdHJpbmdSZWYgUmFuZ2VMaXN0RW5jb2RpbmdTdHJpbmcodW5zaWduZWQgRW5jb2RpbmcpOwotU3RyaW5nUmVmIENhbGxGcmFtZVN0cmluZyh1bnNpZ25lZCBFbmNvZGluZyk7CitTdHJpbmdSZWYgQ2FsbEZyYW1lU3RyaW5nKHVuc2lnbmVkIEVuY29kaW5nLCBUcmlwbGU6OkFyY2hUeXBlIEFyY2gpOwogU3RyaW5nUmVmIEFwcGxlUHJvcGVydHlTdHJpbmcodW5zaWduZWQpOwogU3RyaW5nUmVmIFVuaXRUeXBlU3RyaW5nKHVuc2lnbmVkKTsKIFN0cmluZ1JlZiBBdG9tVHlwZVN0cmluZyh1bnNpZ25lZCBBdG9tKTsKQEAgLTQ4OCw2ICs0OTAsOCBAQAogdW5zaWduZWQgTGFuZ3VhZ2VWZW5kb3IoU291cmNlTGFuZ3VhZ2UgTCk7CiAvLy8gQH0KIAorT3B0aW9uYWw8dW5zaWduZWQ+IExhbmd1YWdlTG93ZXJCb3VuZChTb3VyY2VMYW5ndWFnZSBMKTsKKwogLy8vIEEgaGVscGVyIHN0cnVjdCBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ5dGUgc2l6ZSBvZiBEV19GT1JNCiAvLy8gdmFsdWVzIHRoYXQgdmFyeSBpbiBzaXplIGRlcGVuZGluZyBvbiB0aGUgRFdBUkYgdmVyc2lvbiwgYWRkcmVzcyBieXRlCiAvLy8gc2l6ZSwgb3IgRFdBUkYzMi9EV0FSRjY0LgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvRUxGLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9FTEYuaAppbmRleCAyZTc3ODc3Li44ZTM4NjBjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9FTEYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9FTEYuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0JpbmFyeUZvcm1hdC9FTEYuaCAtIEVMRiBjb25zdGFudHMgYW5kIHN0cnVjdHVyZXMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNTgyLDYgKzU4MSw3IEBACiAgIEVGX0hFWEFHT05fTUFDSF9WNjAgPSAweDAwMDAwMDYwLCAvLyBIZXhhZ29uIFY2MAogICBFRl9IRVhBR09OX01BQ0hfVjYyID0gMHgwMDAwMDA2MiwgLy8gSGV4YWdvbiBWNjIKICAgRUZfSEVYQUdPTl9NQUNIX1Y2NSA9IDB4MDAwMDAwNjUsIC8vIEhleGFnb24gVjY1CisgIEVGX0hFWEFHT05fTUFDSF9WNjYgPSAweDAwMDAwMDY2LCAvLyBIZXhhZ29uIFY2NgogCiAgIC8vIEhpZ2hlc3QgSVNBIHZlcnNpb24gZmxhZ3MKICAgRUZfSEVYQUdPTl9JU0FfTUFDSCA9IDB4MDAwMDAwMDAsIC8vIFNhbWUgYXMgc3BlY2lmaWVkIGluIGJpdHNbMTE6MF0KQEAgLTU5NCw2ICs1OTQsNyBAQAogICBFRl9IRVhBR09OX0lTQV9WNjAgPSAweDAwMDAwMDYwLCAgLy8gSGV4YWdvbiBWNjAgSVNBCiAgIEVGX0hFWEFHT05fSVNBX1Y2MiA9IDB4MDAwMDAwNjIsICAvLyBIZXhhZ29uIFY2MiBJU0EKICAgRUZfSEVYQUdPTl9JU0FfVjY1ID0gMHgwMDAwMDA2NSwgIC8vIEhleGFnb24gVjY1IElTQQorICBFRl9IRVhBR09OX0lTQV9WNjYgPSAweDAwMDAwMDY2LCAgLy8gSGV4YWdvbiBWNjYgSVNBCiB9OwogCiAvLyBIZXhhZ29uLXNwZWNpZmljIHNlY3Rpb24gaW5kZXhlcyBmb3IgY29tbW9uIHNtYWxsIGRhdGEKQEAgLTcwMSw2ICs3MDIsNyBAQAogICBFRl9BTURHUFVfTUFDSF9BTURHQ05fR0ZYOTAyID0gMHgwMmQsCiAgIEVGX0FNREdQVV9NQUNIX0FNREdDTl9HRlg5MDQgPSAweDAyZSwKICAgRUZfQU1ER1BVX01BQ0hfQU1ER0NOX0dGWDkwNiA9IDB4MDJmLAorICBFRl9BTURHUFVfTUFDSF9BTURHQ05fR0ZYOTA5ID0gMHgwMzEsCiAKICAgLy8gUmVzZXJ2ZWQgZm9yIEFNREdDTi1iYXNlZCBwcm9jZXNzb3JzLgogICBFRl9BTURHUFVfTUFDSF9BTURHQ05fUkVTRVJWRUQwID0gMHgwMjcsCkBAIC03MDgsMTEgKzcxMCwxNCBAQAogCiAgIC8vIEZpcnN0L2xhc3QgQU1ER0NOLWJhc2VkIHByb2Nlc3NvcnMuCiAgIEVGX0FNREdQVV9NQUNIX0FNREdDTl9GSVJTVCA9IEVGX0FNREdQVV9NQUNIX0FNREdDTl9HRlg2MDAsCi0gIEVGX0FNREdQVV9NQUNIX0FNREdDTl9MQVNUID0gRUZfQU1ER1BVX01BQ0hfQU1ER0NOX0dGWDkwNiwKKyAgRUZfQU1ER1BVX01BQ0hfQU1ER0NOX0xBU1QgPSBFRl9BTURHUFVfTUFDSF9BTURHQ05fR0ZYOTA5LAogCi0gIC8vIEluZGljYXRlcyBpZiB0aGUgeG5hY2sgdGFyZ2V0IGZlYXR1cmUgaXMgZW5hYmxlZCBmb3IgYWxsIGNvZGUgY29udGFpbmVkIGluCi0gIC8vIHRoZSBvYmplY3QuCisgIC8vIEluZGljYXRlcyBpZiB0aGUgInhuYWNrIiB0YXJnZXQgZmVhdHVyZSBpcyBlbmFibGVkIGZvciBhbGwgY29kZSBjb250YWluZWQKKyAgLy8gaW4gdGhlIG9iamVjdC4KICAgRUZfQU1ER1BVX1hOQUNLID0gMHgxMDAsCisgIC8vIEluZGljYXRlcyBpZiB0aGUgInNyYW0tZWNjIiB0YXJnZXQgZmVhdHVyZSBpcyBlbmFibGVkIGZvciBhbGwgY29kZQorICAvLyBjb250YWluZWQgaW4gdGhlIG9iamVjdC4KKyAgRUZfQU1ER1BVX1NSQU1fRUNDID0gMHgyMDAsCiB9OwogCiAvLyBFTEYgUmVsb2NhdGlvbiB0eXBlcyBmb3IgQU1ER1BVCkBAIC03MjUsNiArNzMwLDM4IEBACiAjaW5jbHVkZSAiRUxGUmVsb2NzL0JQRi5kZWYiCiB9OwogCisvLyBNU1A0MzAgc3BlY2lmaWMgZV9mbGFncworZW51bSA6IHVuc2lnbmVkIHsKKyAgRUZfTVNQNDMwX01BQ0hfTVNQNDMweDExID0gMTEsCisgIEVGX01TUDQzMF9NQUNIX01TUDQzMHgxMXgxID0gMTEwLAorICBFRl9NU1A0MzBfTUFDSF9NU1A0MzB4MTIgPSAxMiwKKyAgRUZfTVNQNDMwX01BQ0hfTVNQNDMweDEzID0gMTMsCisgIEVGX01TUDQzMF9NQUNIX01TUDQzMHgxNCA9IDE0LAorICBFRl9NU1A0MzBfTUFDSF9NU1A0MzB4MTUgPSAxNSwKKyAgRUZfTVNQNDMwX01BQ0hfTVNQNDMweDE2ID0gMTYsCisgIEVGX01TUDQzMF9NQUNIX01TUDQzMHgyMCA9IDIwLAorICBFRl9NU1A0MzBfTUFDSF9NU1A0MzB4MjIgPSAyMiwKKyAgRUZfTVNQNDMwX01BQ0hfTVNQNDMweDIzID0gMjMsCisgIEVGX01TUDQzMF9NQUNIX01TUDQzMHgyNCA9IDI0LAorICBFRl9NU1A0MzBfTUFDSF9NU1A0MzB4MjYgPSAyNiwKKyAgRUZfTVNQNDMwX01BQ0hfTVNQNDMweDMxID0gMzEsCisgIEVGX01TUDQzMF9NQUNIX01TUDQzMHgzMiA9IDMyLAorICBFRl9NU1A0MzBfTUFDSF9NU1A0MzB4MzMgPSAzMywKKyAgRUZfTVNQNDMwX01BQ0hfTVNQNDMweDQxID0gNDEsCisgIEVGX01TUDQzMF9NQUNIX01TUDQzMHg0MiA9IDQyLAorICBFRl9NU1A0MzBfTUFDSF9NU1A0MzB4NDMgPSA0MywKKyAgRUZfTVNQNDMwX01BQ0hfTVNQNDMweDQ0ID0gNDQsCisgIEVGX01TUDQzMF9NQUNIX01TUDQzMFggPSA0NSwKKyAgRUZfTVNQNDMwX01BQ0hfTVNQNDMweDQ2ID0gNDYsCisgIEVGX01TUDQzMF9NQUNIX01TUDQzMHg0NyA9IDQ3LAorICBFRl9NU1A0MzBfTUFDSF9NU1A0MzB4NTQgPSA1NCwKK307CisKKy8vIEVMRiBSZWxvY2F0aW9uIHR5cGVzIGZvciBNU1A0MzAKK2VudW0geworI2luY2x1ZGUgIkVMRlJlbG9jcy9NU1A0MzAuZGVmIgorfTsKKwogI3VuZGVmIEVMRl9SRUxPQwogCiAvLyBTZWN0aW9uIGhlYWRlci4KQEAgLTgyOSw2ICs4NjYsOCBAQAogICBTSFRfTUlQU19EV0FSRiA9IDB4NzAwMDAwMWUsICAgICAgICAgIC8vIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9uLgogICBTSFRfTUlQU19BQklGTEFHUyA9IDB4NzAwMDAwMmEsICAgICAgIC8vIEFCSSBpbmZvcm1hdGlvbi4KIAorICBTSFRfTVNQNDMwX0FUVFJJQlVURVMgPSAweDcwMDAwMDAzVSwKKwogICBTSFRfSElQUk9DID0gMHg3ZmZmZmZmZiwgICAgICAgICAgICAgIC8vIEhpZ2hlc3QgcHJvY2Vzc29yIGFyY2gtc3BlY2lmaWMgdHlwZS4KICAgU0hUX0xPVVNFUiA9IDB4ODAwMDAwMDAsICAgICAgICAgICAgICAvLyBMb3dlc3QgdHlwZSByZXNlcnZlZCBmb3IgYXBwbGljYXRpb25zLgogICBTSFRfSElVU0VSID0gMHhmZmZmZmZmZiAgICAgICAgICAgICAgIC8vIEhpZ2hlc3QgdHlwZSByZXNlcnZlZCBmb3IgYXBwbGljYXRpb25zLgpAQCAtMTMxMiwxNiArMTM1MSwyOSBAQAogZW51bSA6IHVuc2lnbmVkIHsKICAgR05VX1BST1BFUlRZX1NUQUNLX1NJWkUgPSAxLAogICBHTlVfUFJPUEVSVFlfTk9fQ09QWV9PTl9QUk9URUNURUQgPSAyLAotICBHTlVfUFJPUEVSVFlfWDg2X0ZFQVRVUkVfMV9BTkQgPSAweGMwMDAwMDAyCisgIEdOVV9QUk9QRVJUWV9YODZfRkVBVFVSRV8xX0FORCA9IDB4YzAwMDAwMDIsCisgIEdOVV9QUk9QRVJUWV9YODZfRkVBVFVSRV8yX05FRURFRCA9IDB4YzAwMDgwMDEsCisgIEdOVV9QUk9QRVJUWV9YODZfRkVBVFVSRV8yX1VTRUQgPSAweGMwMDEwMDAxLAogfTsKIAotLy8gQ0VUIHByb3BlcnRpZXMKLWVudW0geworLy8geDg2IHByb2Nlc3NvciBmZWF0dXJlIGJpdHMuCitlbnVtIDogdW5zaWduZWQgewogICBHTlVfUFJPUEVSVFlfWDg2X0ZFQVRVUkVfMV9JQlQgPSAxIDw8IDAsCi0gIEdOVV9QUk9QRVJUWV9YODZfRkVBVFVSRV8xX1NIU1RLID0gMSA8PCAxCisgIEdOVV9QUk9QRVJUWV9YODZfRkVBVFVSRV8xX1NIU1RLID0gMSA8PCAxLAorCisgIEdOVV9QUk9QRVJUWV9YODZfRkVBVFVSRV8yX1g4NiA9IDEgPDwgMCwKKyAgR05VX1BST1BFUlRZX1g4Nl9GRUFUVVJFXzJfWDg3ID0gMSA8PCAxLAorICBHTlVfUFJPUEVSVFlfWDg2X0ZFQVRVUkVfMl9NTVggPSAxIDw8IDIsCisgIEdOVV9QUk9QRVJUWV9YODZfRkVBVFVSRV8yX1hNTSA9IDEgPDwgMywKKyAgR05VX1BST1BFUlRZX1g4Nl9GRUFUVVJFXzJfWU1NID0gMSA8PCA0LAorICBHTlVfUFJPUEVSVFlfWDg2X0ZFQVRVUkVfMl9aTU0gPSAxIDw8IDUsCisgIEdOVV9QUk9QRVJUWV9YODZfRkVBVFVSRV8yX0ZYU1IgPSAxIDw8IDYsCisgIEdOVV9QUk9QRVJUWV9YODZfRkVBVFVSRV8yX1hTQVZFID0gMSA8PCA3LAorICBHTlVfUFJPUEVSVFlfWDg2X0ZFQVRVUkVfMl9YU0FWRU9QVCA9IDEgPDwgOCwKKyAgR05VX1BST1BFUlRZX1g4Nl9GRUFUVVJFXzJfWFNBVkVDID0gMSA8PCA5LAogfTsKIAotLy8gQU1ER1BVIHNwZWNpZmljIG5vdGVzLgorLy8gQU1EIHNwZWNpZmljIG5vdGVzLiAoQ29kZSBPYmplY3QgVjIpCiBlbnVtIHsKICAgLy8gTm90ZSB0eXBlcyB3aXRoIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDkgKGluY2x1c2l2ZSkgYXJlIHJlc2VydmVkLgogICBOVF9BTURfQU1ER1BVX0hTQV9NRVRBREFUQSA9IDEwLApAQCAtMTMyOSw2ICsxMzgxLDEyIEBACiAgIE5UX0FNRF9BTURHUFVfUEFMX01FVEFEQVRBID0gMTIKIH07CiAKKy8vIEFNREdQVSBzcGVjaWZpYyBub3Rlcy4gKENvZGUgT2JqZWN0IFYzKQorZW51bSB7CisgIC8vIE5vdGUgdHlwZXMgd2l0aCB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAzMSAoaW5jbHVzaXZlKSBhcmUgcmVzZXJ2ZWQuCisgIE5UX0FNREdQVV9NRVRBREFUQSA9IDMyCit9OworCiBlbnVtIHsKICAgR05VX0FCSV9UQUdfTElOVVggPSAwLAogICBHTlVfQUJJX1RBR19IVVJEID0gMSwKQEAgLTEzMzksNiArMTM5Nyw4IEBACiAgIEdOVV9BQklfVEFHX05BQ0wgPSA2LAogfTsKIAorY29uc3RleHByIGNvbnN0IGNoYXIgKkVMRl9OT1RFX0dOVSA9ICJHTlUiOworCiAvLyBBbmRyb2lkIHBhY2tlZCByZWxvY2F0aW9uIGdyb3VwIGZsYWdzLgogZW51bSB7CiAgIFJFTE9DQVRJT05fR1JPVVBFRF9CWV9JTkZPX0ZMQUcgPSAxLApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvRUxGUmVsb2NzL01TUDQzMC5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9FTEZSZWxvY3MvTVNQNDMwLmRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Njk5MGFiCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvRUxGUmVsb2NzL01TUDQzMC5kZWYKQEAgLTAsMCArMSwxNiBAQAorCisjaWZuZGVmIEVMRl9SRUxPQworI2Vycm9yICJFTEZfUkVMT0MgbXVzdCBiZSBkZWZpbmVkIgorI2VuZGlmCisKK0VMRl9SRUxPQyhSX01TUDQzMF9OT05FLCAgICAgICAgICAgICAgIDApCitFTEZfUkVMT0MoUl9NU1A0MzBfMzIsICAgICAgICAgICAgICAgICAxKQorRUxGX1JFTE9DKFJfTVNQNDMwXzEwX1BDUkVMLCAgICAgICAgICAgMikKK0VMRl9SRUxPQyhSX01TUDQzMF8xNiwgICAgICAgICAgICAgICAgIDMpCitFTEZfUkVMT0MoUl9NU1A0MzBfMTZfUENSRUwsICAgICAgICAgICA0KQorRUxGX1JFTE9DKFJfTVNQNDMwXzE2X0JZVEUsICAgICAgICAgICAgNSkKK0VMRl9SRUxPQyhSX01TUDQzMF8xNl9QQ1JFTF9CWVRFLCAgICAgIDYpCitFTEZfUkVMT0MoUl9NU1A0MzBfMlhfUENSRUwsICAgICAgICAgICA3KQorRUxGX1JFTE9DKFJfTVNQNDMwX1JMX1BDUkVMLCAgICAgICAgICAgOCkKK0VMRl9SRUxPQyhSX01TUDQzMF84LCAgICAgICAgICAgICAgICAgIDkpCitFTEZfUkVMT0MoUl9NU1A0MzBfU1lNX0RJRkYsICAgICAgICAgICAxMCkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L01hY2hPLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L01hY2hPLmRlZgppbmRleCA5NWRlNDhkLi43NmRjYzU4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9NYWNoTy5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvTWFjaE8uZGVmCkBAIC0xLDkgKzEsOCBAQAogLy8sLCwtLSBsbHZtL1N1cHBvcnQvTWFjaE8uZGVmIC0gVGhlIE1hY2hPIGZpbGUgZGVmaW5pdGlvbnMgLS0tLS0qLSBDKysgLSotLCwsLy8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy8sLCwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLCwsLy8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9NYWNoTy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvTWFjaE8uaAppbmRleCBjNTI5NGM3Li4wOGZlNzgwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9NYWNoTy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L01hY2hPLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vQmluYXJ5Rm9ybWF0L01hY2hPLmggLSBUaGUgTWFjaE8gZmlsZSBmb3JtYXQgLS0tLS0tLSotIEMrKy8tKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTMzNSw2ICszMzQsNyBAQAogICBOX1dFQUtfREVGID0gMHgwMDgwdSwKICAgTl9TWU1CT0xfUkVTT0xWRVIgPSAweDAxMDB1LAogICBOX0FMVF9FTlRSWSA9IDB4MDIwMHUsCisgIE5fQ09MRF9GVU5DID0gMHgwNDAwdSwKICAgLy8gRm9yIHVuZGVmaW5lZCBzeW1ib2xzIGNvbWluZyBmcm9tIGxpYnJhcmllcywgc2VlIEdFVF9MSUJSQVJZX09SRElOQUwoKQogICAvLyBhcyB0aGVzZSBhcmUgaW4gdGhlIHRvcCA4IGJpdHMuCiAgIFNFTEZfTElCUkFSWV9PUkRJTkFMID0gMHgwLApAQCAtNDg2LDcgKzQ4NiwxMCBAQAogICBQTEFURk9STV9JT1MgPSAyLAogICBQTEFURk9STV9UVk9TID0gMywKICAgUExBVEZPUk1fV0FUQ0hPUyA9IDQsCi0gIFBMQVRGT1JNX0JSSURHRU9TID0gNQorICBQTEFURk9STV9CUklER0VPUyA9IDUsCisgIFBMQVRGT1JNX0lPU1NJTVVMQVRPUiA9IDcsCisgIFBMQVRGT1JNX1RWT1NTSU1VTEFUT1IgPSA4LAorICBQTEFURk9STV9XQVRDSE9TU0lNVUxBVE9SID0gOQogfTsKIAogLy8gVmFsdWVzIGZvciB0b29scyBlbnVtIGluIGJ1aWxkX3Rvb2xfdmVyc2lvbi4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L01hZ2ljLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9NYWdpYy5oCmluZGV4IDA0ODAxZjguLjA1YWYyYzMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L01hZ2ljLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvTWFnaWMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0JpbmFyeUZvcm1hdC9NYWdpYy5oIC0gRmlsZSBtYWdpYyBpZGVudGlmaWNhdGlvbiAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L01zZ1BhY2suZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvTXNnUGFjay5kZWYKaW5kZXggNzgxYjQ5Zi4uN2FkODNmZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvTXNnUGFjay5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvTXNnUGFjay5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTXNnUGFjay5kZWYgLSBNZXNzYWdlUGFjayBkZWZpbml0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9Nc2dQYWNrLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9Nc2dQYWNrLmgKaW5kZXggZDQzMTkxMi4uOWZkYTE0YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvTXNnUGFjay5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L01zZ1BhY2suaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gTXNnUGFjay5oIC0gTWVzc2FnZVBhY2sgQ29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L01zZ1BhY2tSZWFkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L01zZ1BhY2tSZWFkZXIuaAppbmRleCA1MTFjMzE0Li4yZDMzMmY1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9Nc2dQYWNrUmVhZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvTXNnUGFja1JlYWRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1zZ1BhY2tSZWFkZXIuaCAtIFNpbXBsZSBNc2dQYWNrIHJlYWRlciAtLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvTXNnUGFja1R5cGVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9Nc2dQYWNrVHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2IxMWFiCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvTXNnUGFja1R5cGVzLmgKQEAgLTAsMCArMSwzNzEgQEAKKy8vPT09LSBNc2dQYWNrVHlwZXMuaCAtIE1zZ1BhY2sgVHlwZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8vIFxmaWxlCisvLy8gVGhpcyBpcyBhIGRhdGEgc3RydWN0dXJlIGZvciByZXByZXNlbnRpbmcgTWVzc2FnZVBhY2sgImRvY3VtZW50cyIsIHdpdGgKKy8vLyBtZXRob2RzIHRvIGdvIHRvIGFuZCBmcm9tIE1lc3NhZ2VQYWNrLiBUaGUgdHlwZXMgYWxzbyBzcGVjaWFsaXplIFlBTUxJTworLy8vIHRyYWl0cyBpbiBvcmRlciB0byBnbyB0byBhbmQgZnJvbSBZQU1MLgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpbmNsdWRlICJsbHZtL0FEVC9PcHRpb25hbC5oIgorI2luY2x1ZGUgImxsdm0vQmluYXJ5Rm9ybWF0L01zZ1BhY2tSZWFkZXIuaCIKKyNpbmNsdWRlICJsbHZtL0JpbmFyeUZvcm1hdC9Nc2dQYWNrV3JpdGVyLmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0Nhc3RpbmcuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvWUFNTFRyYWl0cy5oIgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2lmbmRlZiBMTFZNX0JJTkFSWUZPUk1BVF9NU0dQQUNLVFlQRVNfSAorI2RlZmluZSBMTFZNX0JJTkFSWUZPUk1BVF9NU0dQQUNLVFlQRVNfSAorCituYW1lc3BhY2UgbGx2bSB7CituYW1lc3BhY2UgbXNncGFjayB7CisKK2NsYXNzIE5vZGU7CisKKy8vLyBTaG9ydC1oYW5kIGZvciBhIE5vZGUgcG9pbnRlci4KK3VzaW5nIE5vZGVQdHIgPSBzdGQ6OnNoYXJlZF9wdHI8Tm9kZT47CisKKy8vLyBTaG9ydC1oYW5kIGZvciBhbiBPcHRpb25hbCBOb2RlIHBvaW50ZXIuCit1c2luZyBPcHROb2RlUHRyID0gT3B0aW9uYWw8Tm9kZVB0cj47CisKKy8vLyBBYnN0cmFjdCBiYXNlLWNsYXNzIHdoaWNoIGNhbiBiZSBhbnkgTWVzc2FnZVBhY2sgdHlwZS4KK2NsYXNzIE5vZGUgeworcHVibGljOgorICBlbnVtIE5vZGVLaW5kIHsKKyAgICBOS19TY2FsYXIsCisgICAgTktfQXJyYXksCisgICAgTktfTWFwLAorICB9OworCitwcml2YXRlOgorICB2aXJ0dWFsIHZvaWQgYW5jaG9yKCkgPSAwOworICBjb25zdCBOb2RlS2luZCBLaW5kOworCisgIHN0YXRpYyBFeHBlY3RlZDxPcHROb2RlUHRyPiByZWFkQXJyYXkoUmVhZGVyICZNUFJlYWRlciwgc2l6ZV90IExlbmd0aCk7CisgIHN0YXRpYyBFeHBlY3RlZDxPcHROb2RlUHRyPiByZWFkTWFwKFJlYWRlciAmTVBSZWFkZXIsIHNpemVfdCBMZW5ndGgpOworCitwdWJsaWM6CisgIE5vZGVLaW5kIGdldEtpbmQoKSBjb25zdCB7IHJldHVybiBLaW5kOyB9CisKKyAgLy8vIENvbnN0cnVjdCBhIE5vZGUuIFVzZWQgYnkgZGVyaXZlZCBjbGFzc2VzIHRvIHRyYWNrIGtpbmQgaW5mb3JtYXRpb24uCisgIE5vZGUoTm9kZUtpbmQgS2luZCkgOiBLaW5kKEtpbmQpIHt9CisKKyAgdmlydHVhbCB+Tm9kZSgpID0gZGVmYXVsdDsKKworICAvLy8gUmVhZCBmcm9tIGEgTWVzc2FnZVBhY2sgcmVhZGVyIFxwIE1QUmVhZGVyLCByZXR1cm5pbmcgYW4gZXJyb3IgaWYgb25lIGlzCisgIC8vLyBlbmNvdW50ZXJlZCwgb3IgTm9uZSBpZiBccCBNUFJlYWRlciBpcyBhdCB0aGUgZW5kIG9mIHN0cmVhbSwgb3Igc29tZSBOb2RlCisgIC8vLyBwb2ludGVyIGlmIHNvbWUgdHlwZSBpcyByZWFkLgorICBzdGF0aWMgRXhwZWN0ZWQ8T3B0Tm9kZVB0cj4gcmVhZChSZWFkZXIgJk1QUmVhZGVyKTsKKworICAvLy8gV3JpdGUgdG8gYSBNZXNzYWdlUGFjayB3cml0ZXIgXHAgTVBXcml0ZXIuCisgIHZpcnR1YWwgdm9pZCB3cml0ZShXcml0ZXIgJk1QV3JpdGVyKSA9IDA7Cit9OworCisvLy8gQSBNZXNzYWdlUGFjayBzY2FsYXIuCitjbGFzcyBTY2FsYXJOb2RlIDogcHVibGljIE5vZGUgeworcHVibGljOgorICBlbnVtIFNjYWxhcktpbmQgeworICAgIFNLX0ludCwKKyAgICBTS19VSW50LAorICAgIFNLX05pbCwKKyAgICBTS19Cb29sZWFuLAorICAgIFNLX0Zsb2F0LAorICAgIFNLX1N0cmluZywKKyAgICBTS19CaW5hcnksCisgIH07CisKK3ByaXZhdGU6CisgIHZvaWQgYW5jaG9yKCkgb3ZlcnJpZGU7CisKKyAgdm9pZCBkZXN0cm95KCk7CisKKyAgU2NhbGFyS2luZCBTS2luZDsKKworICB1bmlvbiB7CisgICAgaW50NjRfdCBJbnRWYWx1ZTsKKyAgICB1aW50NjRfdCBVSW50VmFsdWU7CisgICAgYm9vbCBCb29sVmFsdWU7CisgICAgZG91YmxlIEZsb2F0VmFsdWU7CisgICAgc3RkOjpzdHJpbmcgU3RyaW5nVmFsdWU7CisgIH07CisKK3B1YmxpYzoKKyAgLy8vIENvbnN0cnVjdCBhbiBJbnQgU2NhbGFyTm9kZS4KKyAgU2NhbGFyTm9kZShpbnQ2NF90IEludFZhbHVlKTsKKyAgLy8vIENvbnN0cnVjdCBhbiBJbnQgU2NhbGFyTm9kZS4KKyAgU2NhbGFyTm9kZShpbnQzMl90IEludFZhbHVlKTsKKyAgLy8vIENvbnN0cnVjdCBhbiBVSW50IFNjYWxhck5vZGUuCisgIFNjYWxhck5vZGUodWludDY0X3QgVUludFZhbHVlKTsKKyAgLy8vIENvbnN0cnVjdCBhbiBVSW50IFNjYWxhck5vZGUuCisgIFNjYWxhck5vZGUodWludDMyX3QgVUludFZhbHVlKTsKKyAgLy8vIENvbnN0cnVjdCBhIE5pbCBTY2FsYXJOb2RlLgorICBTY2FsYXJOb2RlKCk7CisgIC8vLyBDb25zdHJ1Y3QgYSBCb29sZWFuIFNjYWxhck5vZGUuCisgIFNjYWxhck5vZGUoYm9vbCBCb29sVmFsdWUpOworICAvLy8gQ29uc3RydWN0IGEgRmxvYXQgU2NhbGFyTm9kZS4KKyAgU2NhbGFyTm9kZShkb3VibGUgRmxvYXRWYWx1ZSk7CisgIC8vLyBDb25zdHJ1Y3QgYSBTdHJpbmcgU2NhbGFyTm9kZS4KKyAgU2NhbGFyTm9kZShTdHJpbmdSZWYgU3RyaW5nVmFsdWUpOworICAvLy8gQ29uc3RydWN0IGEgU3RyaW5nIFNjYWxhck5vZGUuCisgIFNjYWxhck5vZGUoY29uc3QgY2hhciAqU3RyaW5nVmFsdWUpOworICAvLy8gQ29uc3RydWN0IGEgU3RyaW5nIFNjYWxhck5vZGUuCisgIFNjYWxhck5vZGUoc3RkOjpzdHJpbmcgJiZTdHJpbmdWYWx1ZSk7CisgIC8vLyBDb25zdHJ1Y3QgYSBCaW5hcnkgU2NhbGFyTm9kZS4KKyAgU2NhbGFyTm9kZShNZW1vcnlCdWZmZXJSZWYgQmluYXJ5VmFsdWUpOworCisgIH5TY2FsYXJOb2RlKCk7CisKKyAgU2NhbGFyTm9kZSAmb3BlcmF0b3I9KGNvbnN0IFNjYWxhck5vZGUgJlJIUykgPSBkZWxldGU7CisgIC8vLyBBIFNjYWxhck5vZGUgY2FuIG9ubHkgYmUgbW92ZSBhc3NpZ25lZC4KKyAgU2NhbGFyTm9kZSAmb3BlcmF0b3I9KFNjYWxhck5vZGUgJiZSSFMpOworCisgIC8vLyBDaGFuZ2UgdGhlIGtpbmQgb2YgdGhpcyBTY2FsYXJOb2RlLCB6ZXJvIGluaXRpYWxpemluZyBpdCB0byB0aGUgbmV3IHR5cGUuCisgIHZvaWQgc2V0U2NhbGFyS2luZChTY2FsYXJLaW5kIFNLaW5kKSB7CisgICAgc3dpdGNoIChTS2luZCkgeworICAgIGNhc2UgU0tfSW50OgorICAgICAgKnRoaXMgPSBpbnQ2NF90KDApOworICAgICAgYnJlYWs7CisgICAgY2FzZSBTS19VSW50OgorICAgICAgKnRoaXMgPSB1aW50NjRfdCgwKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgU0tfQm9vbGVhbjoKKyAgICAgICp0aGlzID0gZmFsc2U7CisgICAgICBicmVhazsKKyAgICBjYXNlIFNLX0Zsb2F0OgorICAgICAgKnRoaXMgPSAwLjA7CisgICAgICBicmVhazsKKyAgICBjYXNlIFNLX1N0cmluZzoKKyAgICAgICp0aGlzID0gU3RyaW5nUmVmKCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFNLX0JpbmFyeToKKyAgICAgICp0aGlzID0gTWVtb3J5QnVmZmVyUmVmKCIiLCAiIik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFNLX05pbDoKKyAgICAgICp0aGlzID0gU2NhbGFyTm9kZSgpOworICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgLy8vIEdldCB0aGUgY3VycmVudCBraW5kIG9mIFNjYWxhck5vZGUuCisgIFNjYWxhcktpbmQgZ2V0U2NhbGFyS2luZCgpIHsgcmV0dXJuIFNLaW5kOyB9CisKKyAgLy8vIEdldCB0aGUgdmFsdWUgb2YgYW4gSW50IHNjYWxhci4KKyAgLy8vCisgIC8vLyBcd2FybmluZyBBc3N1bWVzIGdldFNjYWxhcktpbmQoKSA9PSBTS19JbnQKKyAgaW50NjRfdCBnZXRJbnQoKSB7CisgICAgYXNzZXJ0KFNLaW5kID09IFNLX0ludCk7CisgICAgcmV0dXJuIEludFZhbHVlOworICB9CisKKyAgLy8vIEdldCB0aGUgdmFsdWUgb2YgYSBVSW50IHNjYWxhci4KKyAgLy8vCisgIC8vLyBcd2FybmluZyBBc3N1bWVzIGdldFNjYWxhcktpbmQoKSA9PSBTS19VSW50CisgIHVpbnQ2NF90IGdldFVJbnQoKSB7CisgICAgYXNzZXJ0KFNLaW5kID09IFNLX1VJbnQpOworICAgIHJldHVybiBVSW50VmFsdWU7CisgIH0KKworICAvLy8gR2V0IHRoZSB2YWx1ZSBvZiBhbiBCb29sZWFuIHNjYWxhci4KKyAgLy8vCisgIC8vLyBcd2FybmluZyBBc3N1bWVzIGdldFNjYWxhcktpbmQoKSA9PSBTS19Cb29sZWFuCisgIGJvb2wgZ2V0Qm9vbCgpIHsKKyAgICBhc3NlcnQoU0tpbmQgPT0gU0tfQm9vbGVhbik7CisgICAgcmV0dXJuIEJvb2xWYWx1ZTsKKyAgfQorCisgIC8vLyBHZXQgdGhlIHZhbHVlIG9mIGFuIEZsb2F0IHNjYWxhci4KKyAgLy8vCisgIC8vLyBcd2FybmluZyBBc3N1bWVzIGdldFNjYWxhcktpbmQoKSA9PSBTS19GbG9hdAorICBkb3VibGUgZ2V0RmxvYXQoKSB7CisgICAgYXNzZXJ0KFNLaW5kID09IFNLX0Zsb2F0KTsKKyAgICByZXR1cm4gRmxvYXRWYWx1ZTsKKyAgfQorCisgIC8vLyBHZXQgdGhlIHZhbHVlIG9mIGEgU3RyaW5nIHNjYWxhci4KKyAgLy8vCisgIC8vLyBcd2FybmluZyBBc3N1bWVzIGdldFNjYWxhcktpbmQoKSA9PSBTS19TdHJpbmcKKyAgU3RyaW5nUmVmIGdldFN0cmluZygpIHsKKyAgICBhc3NlcnQoU0tpbmQgPT0gU0tfU3RyaW5nKTsKKyAgICByZXR1cm4gU3RyaW5nVmFsdWU7CisgIH0KKworICAvLy8gR2V0IHRoZSB2YWx1ZSBvZiBhIEJpbmFyeSBzY2FsYXIuCisgIC8vLworICAvLy8gXHdhcm5pbmcgQXNzdW1lcyBnZXRTY2FsYXJLaW5kKCkgPT0gU0tfQmluYXJ5CisgIFN0cmluZ1JlZiBnZXRCaW5hcnkoKSB7CisgICAgYXNzZXJ0KFNLaW5kID09IFNLX0JpbmFyeSk7CisgICAgcmV0dXJuIFN0cmluZ1ZhbHVlOworICB9CisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBOb2RlICpOKSB7IHJldHVybiBOLT5nZXRLaW5kKCkgPT0gTktfU2NhbGFyOyB9CisKKyAgdm9pZCB3cml0ZShXcml0ZXIgJk1QV3JpdGVyKSBvdmVycmlkZTsKKworICAvLy8gUGFyc2UgYSBZQU1MIHNjYWxhciBvZiB0aGUgY3VycmVudCBTY2FsYXJLaW5kIGZyb20gXHAgU2NhbGFyU3RyLgorICAvLy8KKyAgLy8vIFxyZXR1cm5zIEFuIGVtcHR5IHN0cmluZyBvbiBzdWNjZXNzLCBvdGhlcndpc2UgYW4gZXJyb3IgbWVzc2FnZS4KKyAgU3RyaW5nUmVmIGlucHV0WUFNTChTdHJpbmdSZWYgU2NhbGFyU3RyKTsKKworICAvLy8gT3V0cHV0IGEgWUFNTCBzY2FsYXIgb2YgdGhlIGN1cnJlbnQgU2NhbGFyS2luZCBpbnRvIFxwIE9TLgorICB2b2lkIG91dHB1dFlBTUwocmF3X29zdHJlYW0gJk9TKSBjb25zdDsKKworICAvLy8gRGV0ZXJtaW5lIHdoaWNoIFlBTUwgcXVvdGluZyB0eXBlIHRoZSBjdXJyZW50IHZhbHVlIHdvdWxkIG5lZWQgd2hlbgorICAvLy8gb3V0cHV0LgorICB5YW1sOjpRdW90aW5nVHlwZSBtdXN0UXVvdGVZQU1MKFN0cmluZ1JlZiBTY2FsYXJTdHIpIGNvbnN0OworCisgIC8vLyBHZXQgdGhlIFlBTUwgdGFnIGZvciB0aGUgY3VycmVudCBTY2FsYXJLaW5kLgorICBTdHJpbmdSZWYgZ2V0WUFNTFRhZygpIGNvbnN0OworCisgIC8vLyBGbGFnIHdoaWNoIGFmZmVjdHMgaG93IHRoZSB0eXBlIGhhbmRsZXMgWUFNTCB0YWdzIHdoZW4gcmVhZGluZyBhbmQKKyAgLy8vIHdyaXRpbmcuCisgIC8vLworICAvLy8gV2hlbiBmYWxzZSwgdGFncyBhcmUgdXNlZCB3aGVuIHJlYWRpbmcgYW5kIHdyaXRpbmcuIFdoZW4gcmVhZGluZywgdGhlIHRhZworICAvLy8gaXMgdXNlZCB0byBkZWNpZGUgdGhlIFNjYWxhcktpbmQgYmVmb3JlIHBhcnNpbmcuIFdoZW4gd3JpdGluZywgdGhlIHRhZyBpcworICAvLy8gb3V0cHV0IGFsb25nIHdpdGggdGhlIHZhbHVlLgorICAvLy8KKyAgLy8vIFdoZW4gdHJ1ZSwgdGFncyBhcmUgaWdub3JlZCB3aGVuIHJlYWRpbmcgYW5kIHdyaXRpbmcuIFdoZW4gcmVhZGluZywgdGhlCisgIC8vLyBTY2FsYXJLaW5kIGlzIGFsd2F5cyBhc3N1bWVkIHRvIGJlIFN0cmluZy4gV2hlbiB3cml0aW5nLCB0aGUgdGFnIGlzIG5vdAorICAvLy8gb3V0cHV0LgorICBib29sIElnbm9yZVRhZyA9IGZhbHNlOworCisgIHN0YXRpYyBjb25zdCBjaGFyICpJbnRUYWc7CisgIHN0YXRpYyBjb25zdCBjaGFyICpOaWxUYWc7CisgIHN0YXRpYyBjb25zdCBjaGFyICpCb29sZWFuVGFnOworICBzdGF0aWMgY29uc3QgY2hhciAqRmxvYXRUYWc7CisgIHN0YXRpYyBjb25zdCBjaGFyICpTdHJpbmdUYWc7CisgIHN0YXRpYyBjb25zdCBjaGFyICpCaW5hcnlUYWc7Cit9OworCitjbGFzcyBBcnJheU5vZGUgOiBwdWJsaWMgTm9kZSwgcHVibGljIHN0ZDo6dmVjdG9yPE5vZGVQdHI+IHsKKyAgdm9pZCBhbmNob3IoKSBvdmVycmlkZTsKKworcHVibGljOgorICBBcnJheU5vZGUoKSA6IE5vZGUoTktfQXJyYXkpIHt9CisgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgTm9kZSAqTikgeyByZXR1cm4gTi0+Z2V0S2luZCgpID09IE5LX0FycmF5OyB9CisKKyAgdm9pZCB3cml0ZShXcml0ZXIgJk1QV3JpdGVyKSBvdmVycmlkZSB7CisgICAgTVBXcml0ZXIud3JpdGVBcnJheVNpemUodGhpcy0+c2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8gJk4gOiAqdGhpcykKKyAgICAgIE4tPndyaXRlKE1QV3JpdGVyKTsKKyAgfQorfTsKKworY2xhc3MgTWFwTm9kZSA6IHB1YmxpYyBOb2RlLCBwdWJsaWMgU3RyaW5nTWFwPE5vZGVQdHI+IHsKKyAgdm9pZCBhbmNob3IoKSBvdmVycmlkZTsKKworcHVibGljOgorICBNYXBOb2RlKCkgOiBOb2RlKE5LX01hcCkge30KKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBOb2RlICpOKSB7IHJldHVybiBOLT5nZXRLaW5kKCkgPT0gTktfTWFwOyB9CisKKyAgdm9pZCB3cml0ZShXcml0ZXIgJk1QV3JpdGVyKSBvdmVycmlkZSB7CisgICAgTVBXcml0ZXIud3JpdGVNYXBTaXplKHRoaXMtPnNpemUoKSk7CisgICAgZm9yIChhdXRvICZOIDogKnRoaXMpIHsKKyAgICAgIE1QV3JpdGVyLndyaXRlKE4uZmlyc3QoKSk7CisgICAgICBOLnNlY29uZC0+d3JpdGUoTVBXcml0ZXIpOworICAgIH0KKyAgfQorfTsKKworfSAvLyBlbmQgbmFtZXNwYWNlIG1zZ3BhY2sKKworbmFtZXNwYWNlIHlhbWwgeworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgUG9seW1vcnBoaWNUcmFpdHM8bXNncGFjazo6Tm9kZVB0cj4geworICBzdGF0aWMgTm9kZUtpbmQgZ2V0S2luZChjb25zdCBtc2dwYWNrOjpOb2RlUHRyICZOKSB7CisgICAgaWYgKGlzYTxtc2dwYWNrOjpTY2FsYXJOb2RlPigqTikpCisgICAgICByZXR1cm4gTm9kZUtpbmQ6OlNjYWxhcjsKKyAgICBpZiAoaXNhPG1zZ3BhY2s6Ok1hcE5vZGU+KCpOKSkKKyAgICAgIHJldHVybiBOb2RlS2luZDo6TWFwOworICAgIGlmIChpc2E8bXNncGFjazo6QXJyYXlOb2RlPigqTikpCisgICAgICByZXR1cm4gTm9kZUtpbmQ6OlNlcXVlbmNlOworICAgIGxsdm1fdW5yZWFjaGFibGUoIk5vZGVLaW5kIG5vdCBzdXBwb3J0ZWQiKTsKKyAgfQorICBzdGF0aWMgbXNncGFjazo6U2NhbGFyTm9kZSAmZ2V0QXNTY2FsYXIobXNncGFjazo6Tm9kZVB0ciAmTikgeworICAgIGlmICghTiB8fCAhaXNhPG1zZ3BhY2s6OlNjYWxhck5vZGU+KCpOKSkKKyAgICAgIE4ucmVzZXQobmV3IG1zZ3BhY2s6OlNjYWxhck5vZGUoKSk7CisgICAgcmV0dXJuICpjYXN0PG1zZ3BhY2s6OlNjYWxhck5vZGU+KE4uZ2V0KCkpOworICB9CisgIHN0YXRpYyBtc2dwYWNrOjpNYXBOb2RlICZnZXRBc01hcChtc2dwYWNrOjpOb2RlUHRyICZOKSB7CisgICAgaWYgKCFOIHx8ICFpc2E8bXNncGFjazo6TWFwTm9kZT4oKk4pKQorICAgICAgTi5yZXNldChuZXcgbXNncGFjazo6TWFwTm9kZSgpKTsKKyAgICByZXR1cm4gKmNhc3Q8bXNncGFjazo6TWFwTm9kZT4oTi5nZXQoKSk7CisgIH0KKyAgc3RhdGljIG1zZ3BhY2s6OkFycmF5Tm9kZSAmZ2V0QXNTZXF1ZW5jZShtc2dwYWNrOjpOb2RlUHRyICZOKSB7CisgICAgaWYgKCFOIHx8ICFpc2E8bXNncGFjazo6QXJyYXlOb2RlPigqTikpCisgICAgICBOLnJlc2V0KG5ldyBtc2dwYWNrOjpBcnJheU5vZGUoKSk7CisgICAgcmV0dXJuICpjYXN0PG1zZ3BhY2s6OkFycmF5Tm9kZT4oTi5nZXQoKSk7CisgIH0KK307CisKK3RlbXBsYXRlIDw+IHN0cnVjdCBUYWdnZWRTY2FsYXJUcmFpdHM8bXNncGFjazo6U2NhbGFyTm9kZT4geworICBzdGF0aWMgdm9pZCBvdXRwdXQoY29uc3QgbXNncGFjazo6U2NhbGFyTm9kZSAmUywgdm9pZCAqQ3R4dCwKKyAgICAgICAgICAgICAgICAgICAgIHJhd19vc3RyZWFtICZTY2FsYXJPUywgcmF3X29zdHJlYW0gJlRhZ09TKSB7CisgICAgaWYgKCFTLklnbm9yZVRhZykKKyAgICAgIFRhZ09TIDw8IFMuZ2V0WUFNTFRhZygpOworICAgIFMub3V0cHV0WUFNTChTY2FsYXJPUyk7CisgIH0KKworICBzdGF0aWMgU3RyaW5nUmVmIGlucHV0KFN0cmluZ1JlZiBTY2FsYXJTdHIsIFN0cmluZ1JlZiBUYWcsIHZvaWQgKkN0eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgbXNncGFjazo6U2NhbGFyTm9kZSAmUykgeworICAgIGlmIChUYWcgPT0gbXNncGFjazo6U2NhbGFyTm9kZTo6SW50VGFnKSB7CisgICAgICBTLnNldFNjYWxhcktpbmQobXNncGFjazo6U2NhbGFyTm9kZTo6U0tfVUludCk7CisgICAgICBpZiAoUy5pbnB1dFlBTUwoU2NhbGFyU3RyKSA9PSBTdHJpbmdSZWYoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZ1JlZigpOworICAgICAgUy5zZXRTY2FsYXJLaW5kKG1zZ3BhY2s6OlNjYWxhck5vZGU6OlNLX0ludCk7CisgICAgICByZXR1cm4gUy5pbnB1dFlBTUwoU2NhbGFyU3RyKTsKKyAgICB9CisKKyAgICBpZiAoUy5JZ25vcmVUYWcgfHwgVGFnID09IG1zZ3BhY2s6OlNjYWxhck5vZGU6OlN0cmluZ1RhZyB8fAorICAgICAgICBUYWcgPT0gInRhZzp5YW1sLm9yZywyMDAyOnN0ciIpCisgICAgICBTLnNldFNjYWxhcktpbmQobXNncGFjazo6U2NhbGFyTm9kZTo6U0tfU3RyaW5nKTsKKyAgICBlbHNlIGlmIChUYWcgPT0gbXNncGFjazo6U2NhbGFyTm9kZTo6TmlsVGFnKQorICAgICAgUy5zZXRTY2FsYXJLaW5kKG1zZ3BhY2s6OlNjYWxhck5vZGU6OlNLX05pbCk7CisgICAgZWxzZSBpZiAoVGFnID09IG1zZ3BhY2s6OlNjYWxhck5vZGU6OkJvb2xlYW5UYWcpCisgICAgICBTLnNldFNjYWxhcktpbmQobXNncGFjazo6U2NhbGFyTm9kZTo6U0tfQm9vbGVhbik7CisgICAgZWxzZSBpZiAoVGFnID09IG1zZ3BhY2s6OlNjYWxhck5vZGU6OkZsb2F0VGFnKQorICAgICAgUy5zZXRTY2FsYXJLaW5kKG1zZ3BhY2s6OlNjYWxhck5vZGU6OlNLX0Zsb2F0KTsKKyAgICBlbHNlIGlmIChUYWcgPT0gbXNncGFjazo6U2NhbGFyTm9kZTo6U3RyaW5nVGFnKQorICAgICAgUy5zZXRTY2FsYXJLaW5kKG1zZ3BhY2s6OlNjYWxhck5vZGU6OlNLX1N0cmluZyk7CisgICAgZWxzZSBpZiAoVGFnID09IG1zZ3BhY2s6OlNjYWxhck5vZGU6OkJpbmFyeVRhZykKKyAgICAgIFMuc2V0U2NhbGFyS2luZChtc2dwYWNrOjpTY2FsYXJOb2RlOjpTS19CaW5hcnkpOworICAgIGVsc2UKKyAgICAgIHJldHVybiAiVW5zdXBwb3J0ZWQgbWVzc2FnZXBhY2sgdGFnIjsKKworICAgIHJldHVybiBTLmlucHV0WUFNTChTY2FsYXJTdHIpOworICB9CisKKyAgc3RhdGljIFF1b3RpbmdUeXBlIG11c3RRdW90ZShjb25zdCBtc2dwYWNrOjpTY2FsYXJOb2RlICZTLCBTdHJpbmdSZWYgU3RyKSB7CisgICAgcmV0dXJuIFMubXVzdFF1b3RlWUFNTChTdHIpOworICB9Cit9OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgQ3VzdG9tTWFwcGluZ1RyYWl0czxtc2dwYWNrOjpNYXBOb2RlPiB7CisgIHN0YXRpYyB2b2lkIGlucHV0T25lKElPICZJTywgU3RyaW5nUmVmIEtleSwgbXNncGFjazo6TWFwTm9kZSAmTSkgeworICAgIElPLm1hcFJlcXVpcmVkKEtleS5zdHIoKS5jX3N0cigpLCBNW0tleV0pOworICB9CisgIHN0YXRpYyB2b2lkIG91dHB1dChJTyAmSU8sIG1zZ3BhY2s6Ok1hcE5vZGUgJk0pIHsKKyAgICBmb3IgKGF1dG8gJk4gOiBNKQorICAgICAgSU8ubWFwUmVxdWlyZWQoTi5nZXRLZXkoKS5zdHIoKS5jX3N0cigpLCBOLmdldFZhbHVlKCkpOworICB9Cit9OworCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgU2VxdWVuY2VUcmFpdHM8bXNncGFjazo6QXJyYXlOb2RlPiB7CisgIHN0YXRpYyBzaXplX3Qgc2l6ZShJTyAmSU8sIG1zZ3BhY2s6OkFycmF5Tm9kZSAmQSkgeyByZXR1cm4gQS5zaXplKCk7IH0KKyAgc3RhdGljIG1zZ3BhY2s6Ok5vZGVQdHIgJmVsZW1lbnQoSU8gJklPLCBtc2dwYWNrOjpBcnJheU5vZGUgJkEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBJbmRleCkgeworICAgIGlmIChJbmRleCA+PSBBLnNpemUoKSkKKyAgICAgIEEucmVzaXplKEluZGV4ICsgMSk7CisgICAgcmV0dXJuIEFbSW5kZXhdOworICB9Cit9OworCit9IC8vIGVuZCBuYW1lc3BhY2UgeWFtbAorfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmIC8vICBMTFZNX0JJTkFSWUZPUk1BVF9NU0dQQUNLVFlQRVNfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvTXNnUGFja1dyaXRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvTXNnUGFja1dyaXRlci5oCmluZGV4IDk4YWY0MjIuLjNiNjEwYjcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L01zZ1BhY2tXcml0ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9Nc2dQYWNrV3JpdGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTXNnUGFja1dyaXRlci5oIC0gU2ltcGxlIE1zZ1BhY2sgd3JpdGVyIC0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9XYXNtLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpbmFyeUZvcm1hdC9XYXNtLmgKaW5kZXggNDRkZDkyZS4uNTFmNmFiMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvV2FzbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L1dhc20uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBXYXNtLmggLSBXYXNtIG9iamVjdCBmaWxlIGZvcm1hdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjYsNyArMjUsNyBAQAogLy8gV2FzbSBiaW5hcnkgZm9ybWF0IHZlcnNpb24KIGNvbnN0IHVpbnQzMl90IFdhc21WZXJzaW9uID0gMHgxOwogLy8gV2FzbSBsaW5raW5nIG1ldGFkYXRhIHZlcnNpb24KLWNvbnN0IHVpbnQzMl90IFdhc21NZXRhZGF0YVZlcnNpb24gPSAweDE7Citjb25zdCB1aW50MzJfdCBXYXNtTWV0YWRhdGFWZXJzaW9uID0gMHgyOwogLy8gV2FzbSB1c2VzIGEgNjRrIHBhZ2Ugc2l6ZQogY29uc3QgdWludDMyX3QgV2FzbVBhZ2VTaXplID0gNjU1MzY7CiAKQEAgLTM1LDYgKzM0LDIwIEBACiAgIHVpbnQzMl90IFZlcnNpb247CiB9OwogCitzdHJ1Y3QgV2FzbUR5bGlua0luZm8geworICB1aW50MzJfdCBNZW1vcnlTaXplOyAvLyBNZW1vcnkgc2l6ZSBpbiBieXRlcworICB1aW50MzJfdCBNZW1vcnlBbGlnbm1lbnQ7ICAvLyBQMiBhbGlnbm1lbnQgb2YgbWVtb3J5CisgIHVpbnQzMl90IFRhYmxlU2l6ZTsgIC8vIFRhYmxlIHNpemUgaW4gZWxlbWVudHMKKyAgdWludDMyX3QgVGFibGVBbGlnbm1lbnQ7ICAvLyBQMiBhbGlnbm1lbnQgb2YgdGFibGUKKyAgc3RkOjp2ZWN0b3I8U3RyaW5nUmVmPiBOZWVkZWQ7IC8vIFNoYXJlZCBsaWJyYXJ5IGRlcGVuZWRlbmNpZXMKK307CisKK3N0cnVjdCBXYXNtUHJvZHVjZXJJbmZvIHsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IExhbmd1YWdlczsKKyAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4+IFRvb2xzOworICBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPj4gU0RLczsKK307CisKIHN0cnVjdCBXYXNtRXhwb3J0IHsKICAgU3RyaW5nUmVmIE5hbWU7CiAgIHVpbnQ4X3QgS2luZDsKQEAgLTc1LDYgKzg4LDE4IEBACiAgIFN0cmluZ1JlZiBTeW1ib2xOYW1lOyAvLyBmcm9tIHRoZSAibGlua2luZyIgc2VjdGlvbgogfTsKIAorc3RydWN0IFdhc21FdmVudFR5cGUgeworICAvLyBLaW5kIG9mIGV2ZW50LiBDdXJyZW50bHkgb25seSBXQVNNX0VWRU5UX0FUVFJJQlVURV9FWENFUFRJT04gaXMgcG9zc2libGUuCisgIHVpbnQzMl90IEF0dHJpYnV0ZTsKKyAgdWludDMyX3QgU2lnSW5kZXg7Cit9OworCitzdHJ1Y3QgV2FzbUV2ZW50IHsKKyAgdWludDMyX3QgSW5kZXg7CisgIFdhc21FdmVudFR5cGUgVHlwZTsKKyAgU3RyaW5nUmVmIFN5bWJvbE5hbWU7IC8vIGZyb20gdGhlICJsaW5raW5nIiBzZWN0aW9uCit9OworCiBzdHJ1Y3QgV2FzbUltcG9ydCB7CiAgIFN0cmluZ1JlZiBNb2R1bGU7CiAgIFN0cmluZ1JlZiBGaWVsZDsKQEAgLTg0LDYgKzEwOSw3IEBACiAgICAgV2FzbUdsb2JhbFR5cGUgR2xvYmFsOwogICAgIFdhc21UYWJsZSBUYWJsZTsKICAgICBXYXNtTGltaXRzIE1lbW9yeTsKKyAgICBXYXNtRXZlbnRUeXBlIEV2ZW50OwogICB9OwogfTsKIApAQCAtMTQ0LDcgKzE3MCw4IEBACiAgIFN0cmluZ1JlZiBOYW1lOwogICB1aW50OF90IEtpbmQ7CiAgIHVpbnQzMl90IEZsYWdzOwotICBTdHJpbmdSZWYgTW9kdWxlOyAvLyBGb3IgdW5kZWZpbmVkIHN5bWJvbHMgdGhlIG1vZHVsZSBuYW1lIG9mIHRoZSBpbXBvcnQKKyAgU3RyaW5nUmVmIEltcG9ydE1vZHVsZTsgLy8gRm9yIHVuZGVmaW5lZCBzeW1ib2xzIHRoZSBtb2R1bGUgb2YgdGhlIGltcG9ydAorICBTdHJpbmdSZWYgSW1wb3J0TmFtZTsgICAvLyBGb3IgdW5kZWZpbmVkIHN5bWJvbHMgdGhlIG5hbWUgb2YgdGhlIGltcG9ydAogICB1bmlvbiB7CiAgICAgLy8gRm9yIGZ1bmN0aW9uIG9yIGdsb2JhbCBzeW1ib2xzLCB0aGUgaW5kZXggaW4gZnVuY3Rpb24gb3IgZ2xvYmFsIGluZGV4CiAgICAgLy8gc3BhY2UuCkBAIC0xNjcsMTggKzE5NCwyMCBAQAogfTsKIAogZW51bSA6IHVuc2lnbmVkIHsKLSAgV0FTTV9TRUNfQ1VTVE9NID0gMCwgICAvLyBDdXN0b20gLyBVc2VyLWRlZmluZWQgc2VjdGlvbgotICBXQVNNX1NFQ19UWVBFID0gMSwgICAgIC8vIEZ1bmN0aW9uIHNpZ25hdHVyZSBkZWNsYXJhdGlvbnMKLSAgV0FTTV9TRUNfSU1QT1JUID0gMiwgICAvLyBJbXBvcnQgZGVjbGFyYXRpb25zCi0gIFdBU01fU0VDX0ZVTkNUSU9OID0gMywgLy8gRnVuY3Rpb24gZGVjbGFyYXRpb25zCi0gIFdBU01fU0VDX1RBQkxFID0gNCwgICAgLy8gSW5kaXJlY3QgZnVuY3Rpb24gdGFibGUgYW5kIG90aGVyIHRhYmxlcwotICBXQVNNX1NFQ19NRU1PUlkgPSA1LCAgIC8vIE1lbW9yeSBhdHRyaWJ1dGVzCi0gIFdBU01fU0VDX0dMT0JBTCA9IDYsICAgLy8gR2xvYmFsIGRlY2xhcmF0aW9ucwotICBXQVNNX1NFQ19FWFBPUlQgPSA3LCAgIC8vIEV4cG9ydHMKLSAgV0FTTV9TRUNfU1RBUlQgPSA4LCAgICAvLyBTdGFydCBmdW5jdGlvbiBkZWNsYXJhdGlvbgotICBXQVNNX1NFQ19FTEVNID0gOSwgICAgIC8vIEVsZW1lbnRzIHNlY3Rpb24KLSAgV0FTTV9TRUNfQ09ERSA9IDEwLCAgICAvLyBGdW5jdGlvbiBib2RpZXMgKGNvZGUpCi0gIFdBU01fU0VDX0RBVEEgPSAxMSAgICAgLy8gRGF0YSBzZWdtZW50cworICBXQVNNX1NFQ19DVVNUT00gPSAwLCAgICAgLy8gQ3VzdG9tIC8gVXNlci1kZWZpbmVkIHNlY3Rpb24KKyAgV0FTTV9TRUNfVFlQRSA9IDEsICAgICAgIC8vIEZ1bmN0aW9uIHNpZ25hdHVyZSBkZWNsYXJhdGlvbnMKKyAgV0FTTV9TRUNfSU1QT1JUID0gMiwgICAgIC8vIEltcG9ydCBkZWNsYXJhdGlvbnMKKyAgV0FTTV9TRUNfRlVOQ1RJT04gPSAzLCAgIC8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucworICBXQVNNX1NFQ19UQUJMRSA9IDQsICAgICAgLy8gSW5kaXJlY3QgZnVuY3Rpb24gdGFibGUgYW5kIG90aGVyIHRhYmxlcworICBXQVNNX1NFQ19NRU1PUlkgPSA1LCAgICAgLy8gTWVtb3J5IGF0dHJpYnV0ZXMKKyAgV0FTTV9TRUNfR0xPQkFMID0gNiwgICAgIC8vIEdsb2JhbCBkZWNsYXJhdGlvbnMKKyAgV0FTTV9TRUNfRVhQT1JUID0gNywgICAgIC8vIEV4cG9ydHMKKyAgV0FTTV9TRUNfU1RBUlQgPSA4LCAgICAgIC8vIFN0YXJ0IGZ1bmN0aW9uIGRlY2xhcmF0aW9uCisgIFdBU01fU0VDX0VMRU0gPSA5LCAgICAgICAvLyBFbGVtZW50cyBzZWN0aW9uCisgIFdBU01fU0VDX0NPREUgPSAxMCwgICAgICAvLyBGdW5jdGlvbiBib2RpZXMgKGNvZGUpCisgIFdBU01fU0VDX0RBVEEgPSAxMSwgICAgICAvLyBEYXRhIHNlZ21lbnRzCisgIFdBU01fU0VDX0RBVEFDT1VOVCA9IDEyLCAvLyBEYXRhIHNlZ21lbnQgY291bnQKKyAgV0FTTV9TRUNfRVZFTlQgPSAxMyAgICAgIC8vIEV2ZW50IGRlY2xhcmF0aW9ucwogfTsKIAogLy8gVHlwZSBpbW1lZGlhdGUgZW5jb2RpbmdzIHVzZWQgaW4gdmFyaW91cyBjb250ZXh0cy4KQEAgLTE4OCw3ICsyMTcsNyBAQAogICBXQVNNX1RZUEVfRjMyID0gMHg3RCwKICAgV0FTTV9UWVBFX0Y2NCA9IDB4N0MsCiAgIFdBU01fVFlQRV9WMTI4ID0gMHg3QiwKLSAgV0FTTV9UWVBFX0FOWUZVTkMgPSAweDcwLAorICBXQVNNX1RZUEVfRlVOQ1JFRiA9IDB4NzAsCiAgIFdBU01fVFlQRV9FWENFUFRfUkVGID0gMHg2OCwKICAgV0FTTV9UWVBFX0ZVTkMgPSAweDYwLAogICBXQVNNX1RZUEVfTk9SRVNVTFQgPSAweDQwLCAvLyBmb3IgYmxvY2tzIHdpdGggbm8gcmVzdWx0IHZhbHVlcwpAQCAtMjAwLDEyICsyMjksMTMgQEAKICAgV0FTTV9FWFRFUk5BTF9UQUJMRSA9IDB4MSwKICAgV0FTTV9FWFRFUk5BTF9NRU1PUlkgPSAweDIsCiAgIFdBU01fRVhURVJOQUxfR0xPQkFMID0gMHgzLAorICBXQVNNX0VYVEVSTkFMX0VWRU5UID0gMHg0LAogfTsKIAogLy8gT3Bjb2RlcyB1c2VkIGluIGluaXRpYWxpemVyIGV4cHJlc3Npb25zLgogZW51bSA6IHVuc2lnbmVkIHsKICAgV0FTTV9PUENPREVfRU5EID0gMHgwYiwKLSAgV0FTTV9PUENPREVfR0VUX0dMT0JBTCA9IDB4MjMsCisgIFdBU01fT1BDT0RFX0dMT0JBTF9HRVQgPSAweDIzLAogICBXQVNNX09QQ09ERV9JMzJfQ09OU1QgPSAweDQxLAogICBXQVNNX09QQ09ERV9JNjRfQ09OU1QgPSAweDQyLAogICBXQVNNX09QQ09ERV9GMzJfQ09OU1QgPSAweDQzLApAQCAtMjE0LDYgKzI0NCw3IEBACiAKIGVudW0gOiB1bnNpZ25lZCB7CiAgIFdBU01fTElNSVRTX0ZMQUdfSEFTX01BWCA9IDB4MSwKKyAgV0FTTV9MSU1JVFNfRkxBR19JU19TSEFSRUQgPSAweDIsCiB9OwogCiAvLyBLaW5kIGNvZGVzIHVzZWQgaW4gdGhlIGN1c3RvbSAibmFtZSIgc2VjdGlvbgpAQCAtMjQyLDYgKzI3MywxMiBAQAogICBXQVNNX1NZTUJPTF9UWVBFX0RBVEEgPSAweDEsCiAgIFdBU01fU1lNQk9MX1RZUEVfR0xPQkFMID0gMHgyLAogICBXQVNNX1NZTUJPTF9UWVBFX1NFQ1RJT04gPSAweDMsCisgIFdBU01fU1lNQk9MX1RZUEVfRVZFTlQgPSAweDQsCit9OworCisvLyBLaW5kcyBvZiBldmVudCBhdHRyaWJ1dGVzLgorZW51bSBXYXNtRXZlbnRBdHRyaWJ1dGUgOiB1bnNpZ25lZCB7CisgIFdBU01fRVZFTlRfQVRUUklCVVRFX0VYQ0VQVElPTiA9IDB4MCwKIH07CiAKIGNvbnN0IHVuc2lnbmVkIFdBU01fU1lNQk9MX0JJTkRJTkdfTUFTSyA9IDB4MzsKQEAgLTI1Myw2ICsyOTAsOCBAQAogY29uc3QgdW5zaWduZWQgV0FTTV9TWU1CT0xfVklTSUJJTElUWV9ERUZBVUxUID0gMHgwOwogY29uc3QgdW5zaWduZWQgV0FTTV9TWU1CT0xfVklTSUJJTElUWV9ISURERU4gPSAweDQ7CiBjb25zdCB1bnNpZ25lZCBXQVNNX1NZTUJPTF9VTkRFRklORUQgPSAweDEwOworY29uc3QgdW5zaWduZWQgV0FTTV9TWU1CT0xfRVhQT1JURUQgPSAweDIwOworY29uc3QgdW5zaWduZWQgV0FTTV9TWU1CT0xfRVhQTElDSVRfTkFNRSA9IDB4NDA7CiAKICNkZWZpbmUgV0FTTV9SRUxPQyhuYW1lLCB2YWx1ZSkgbmFtZSA9IHZhbHVlLAogCkBAIC0yNzMsMTMgKzMxMiwxMyBAQAogfTsKIAogc3RydWN0IFdhc21TaWduYXR1cmUgewotICBTbWFsbFZlY3Rvcjx3YXNtOjpWYWxUeXBlLCAxPiBSZXR1cm5zOwotICBTbWFsbFZlY3Rvcjx3YXNtOjpWYWxUeXBlLCA0PiBQYXJhbXM7CisgIFNtYWxsVmVjdG9yPFZhbFR5cGUsIDE+IFJldHVybnM7CisgIFNtYWxsVmVjdG9yPFZhbFR5cGUsIDQ+IFBhcmFtczsKICAgLy8gU3VwcG9ydCBlbXB0eSBhbmQgdG9tYnN0b25lIGluc3RhbmNlcywgbmVlZGVkIGJ5IERlbnNlTWFwLgogICBlbnVtIHsgUGxhaW4sIEVtcHR5LCBUb21ic3RvbmUgfSBTdGF0ZSA9IFBsYWluOwogCi0gIFdhc21TaWduYXR1cmUoU21hbGxWZWN0b3I8d2FzbTo6VmFsVHlwZSwgMT4gJiZJblJldHVybnMsCi0gICAgICAgICAgICAgICAgU21hbGxWZWN0b3I8d2FzbTo6VmFsVHlwZSwgND4gJiZJblBhcmFtcykKKyAgV2FzbVNpZ25hdHVyZShTbWFsbFZlY3RvcjxWYWxUeXBlLCAxPiAmJkluUmV0dXJucywKKyAgICAgICAgICAgICAgICBTbWFsbFZlY3RvcjxWYWxUeXBlLCA0PiAmJkluUGFyYW1zKQogICAgICAgOiBSZXR1cm5zKEluUmV0dXJucyksIFBhcmFtcyhJblBhcmFtcykge30KICAgV2FzbVNpZ25hdHVyZSgpID0gZGVmYXVsdDsKIH07CkBAIC0zMDIsNyArMzQxLDcgQEAKICAgcmV0dXJuICEoTEhTID09IFJIUyk7CiB9CiAKLXN0ZDo6c3RyaW5nIHRvU3RyaW5nKHdhc206Oldhc21TeW1ib2xUeXBlIHR5cGUpOworc3RkOjpzdHJpbmcgdG9TdHJpbmcoV2FzbVN5bWJvbFR5cGUgdHlwZSk7CiBzdGQ6OnN0cmluZyByZWxvY1R5cGV0b1N0cmluZyh1aW50MzJfdCB0eXBlKTsKIAogfSAvLyBlbmQgbmFtZXNwYWNlIHdhc20KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQmluYXJ5Rm9ybWF0L1dhc21SZWxvY3MuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvV2FzbVJlbG9jcy5kZWYKaW5kZXggOGZmZDUxZS4uNTlhNzg2YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvV2FzbVJlbG9jcy5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaW5hcnlGb3JtYXQvV2FzbVJlbG9jcy5kZWYKQEAgLTEsMTUgKzEsMTUgQEAKLQogI2lmbmRlZiBXQVNNX1JFTE9DCiAjZXJyb3IgIldBU01fUkVMT0MgbXVzdCBiZSBkZWZpbmVkIgogI2VuZGlmCiAKLVdBU01fUkVMT0MoUl9XRUJBU1NFTUJMWV9GVU5DVElPTl9JTkRFWF9MRUIsICAgMCkKLVdBU01fUkVMT0MoUl9XRUJBU1NFTUJMWV9UQUJMRV9JTkRFWF9TTEVCLCAgICAgMSkKLVdBU01fUkVMT0MoUl9XRUJBU1NFTUJMWV9UQUJMRV9JTkRFWF9JMzIsICAgICAgMikKLVdBU01fUkVMT0MoUl9XRUJBU1NFTUJMWV9NRU1PUllfQUREUl9MRUIsICAgICAgMykKLVdBU01fUkVMT0MoUl9XRUJBU1NFTUJMWV9NRU1PUllfQUREUl9TTEVCLCAgICAgNCkKLVdBU01fUkVMT0MoUl9XRUJBU1NFTUJMWV9NRU1PUllfQUREUl9JMzIsICAgICAgNSkKLVdBU01fUkVMT0MoUl9XRUJBU1NFTUJMWV9UWVBFX0lOREVYX0xFQiwgICAgICAgNikKLVdBU01fUkVMT0MoUl9XRUJBU1NFTUJMWV9HTE9CQUxfSU5ERVhfTEVCLCAgICAgNykKLVdBU01fUkVMT0MoUl9XRUJBU1NFTUJMWV9GVU5DVElPTl9PRkZTRVRfSTMyLCAgOCkKLVdBU01fUkVMT0MoUl9XRUJBU1NFTUJMWV9TRUNUSU9OX09GRlNFVF9JMzIsICAgOSkKK1dBU01fUkVMT0MoUl9XQVNNX0ZVTkNUSU9OX0lOREVYX0xFQiwgICAwKQorV0FTTV9SRUxPQyhSX1dBU01fVEFCTEVfSU5ERVhfU0xFQiwgICAgIDEpCitXQVNNX1JFTE9DKFJfV0FTTV9UQUJMRV9JTkRFWF9JMzIsICAgICAgMikKK1dBU01fUkVMT0MoUl9XQVNNX01FTU9SWV9BRERSX0xFQiwgICAgICAzKQorV0FTTV9SRUxPQyhSX1dBU01fTUVNT1JZX0FERFJfU0xFQiwgICAgIDQpCitXQVNNX1JFTE9DKFJfV0FTTV9NRU1PUllfQUREUl9JMzIsICAgICAgNSkKK1dBU01fUkVMT0MoUl9XQVNNX1RZUEVfSU5ERVhfTEVCLCAgICAgICA2KQorV0FTTV9SRUxPQyhSX1dBU01fR0xPQkFMX0lOREVYX0xFQiwgICAgIDcpCitXQVNNX1JFTE9DKFJfV0FTTV9GVU5DVElPTl9PRkZTRVRfSTMyLCAgOCkKK1dBU01fUkVMT0MoUl9XQVNNX1NFQ1RJT05fT0ZGU0VUX0kzMiwgICA5KQorV0FTTV9SRUxPQyhSX1dBU01fRVZFTlRfSU5ERVhfTEVCLCAgICAgMTApCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpdGNvZGUvQml0Q29kZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQml0Y29kZS9CaXRDb2Rlcy5oCmluZGV4IGJmMjFlMTQuLmEwZDhkZmQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQml0Y29kZS9CaXRDb2Rlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQml0Y29kZS9CaXRDb2Rlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEJpdENvZGVzLmggLSBFbnVtIHZhbHVlcyBmb3IgdGhlIGJpdGNvZGUgZm9ybWF0IC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNjAsOCArMTU5LDYgQEAKIAogfTsKIAotdGVtcGxhdGUgPD4gc3RydWN0IGlzUG9kTGlrZTxCaXRDb2RlQWJicmV2T3A+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWU9dHJ1ZTsgfTsKLQogLy8vIEJpdENvZGVBYmJyZXYgLSBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYW4gYWJicmV2aWF0aW9uIHJlY29yZC4gIEFuCiAvLy8gYWJicmV2aWF0aW9uIGFsbG93cyBhIGNvbXBsZXggcmVjb3JkIHRoYXQgaGFzIHJlZHVuZGFuY3kgdG8gYmUgc3RvcmVkIGluIGEKIC8vLyBzcGVjaWFsaXplZCBmb3JtYXQgaW5zdGVhZCBvZiB0aGUgZnVsbHktZ2VuZXJhbCwgZnVsbHktdmJyLCBmb3JtYXQuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpdGNvZGUvQml0Y29kZVJlYWRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaXRjb2RlL0JpdGNvZGVSZWFkZXIuaAppbmRleCBjZThiZGQ5Li4zZThlN2VkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpdGNvZGUvQml0Y29kZVJlYWRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQml0Y29kZS9CaXRjb2RlUmVhZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9CaXRjb2RlL0JpdGNvZGVSZWFkZXIuaCAtIEJpdGNvZGUgcmVhZGVyIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTUxLDYgKzUwLDcgQEAKICAgc3RydWN0IEJpdGNvZGVMVE9JbmZvIHsKICAgICBib29sIElzVGhpbkxUTzsKICAgICBib29sIEhhc1N1bW1hcnk7CisgICAgYm9vbCBFbmFibGVTcGxpdExUT1VuaXQ7CiAgIH07CiAKICAgLy8vIFJlcHJlc2VudHMgYSBtb2R1bGUgaW4gYSBiaXRjb2RlIGZpbGUuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpdGNvZGUvQml0Y29kZVdyaXRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaXRjb2RlL0JpdGNvZGVXcml0ZXIuaAppbmRleCAwMDEwY2Y2Li4zOTA2MWUwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpdGNvZGUvQml0Y29kZVdyaXRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQml0Y29kZS9CaXRjb2RlV3JpdGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9CaXRjb2RlL0JpdGNvZGVXcml0ZXIuaCAtIEJpdGNvZGUgd3JpdGVycyAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQml0Y29kZS9CaXRjb2RlV3JpdGVyUGFzcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaXRjb2RlL0JpdGNvZGVXcml0ZXJQYXNzLmgKaW5kZXggMDUwNDRjOS4uMTc3M2QxYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaXRjb2RlL0JpdGNvZGVXcml0ZXJQYXNzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaXRjb2RlL0JpdGNvZGVXcml0ZXJQYXNzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIEJpdGNvZGVXcml0ZXJQYXNzLmggLSBCaXRjb2RlIHdyaXRpbmcgcGFzcyAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpdGNvZGUvQml0c3RyZWFtUmVhZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpdGNvZGUvQml0c3RyZWFtUmVhZGVyLmgKaW5kZXggNzJlNzYxOS4uOTBjYmU3YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaXRjb2RlL0JpdHN0cmVhbVJlYWRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQml0Y29kZS9CaXRzdHJlYW1SZWFkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBCaXRzdHJlYW1SZWFkZXIuaCAtIExvdy1sZXZlbCBiaXRzdHJlYW0gcmVhZGVyIGludGVyZmFjZSAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaXRjb2RlL0JpdHN0cmVhbVdyaXRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaXRjb2RlL0JpdHN0cmVhbVdyaXRlci5oCmluZGV4IGM4NTQ3NjkuLjNkZTM5OTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQml0Y29kZS9CaXRzdHJlYW1Xcml0ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpdGNvZGUvQml0c3RyZWFtV3JpdGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQml0c3RyZWFtV3JpdGVyLmggLSBMb3ctbGV2ZWwgYml0c3RyZWFtIHdyaXRlciBpbnRlcmZhY2UgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQml0Y29kZS9MTFZNQml0Q29kZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQml0Y29kZS9MTFZNQml0Q29kZXMuaAppbmRleCA1NDY3ZWNjLi43MTE0OGFjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0JpdGNvZGUvTExWTUJpdENvZGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9CaXRjb2RlL0xMVk1CaXRDb2Rlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExMVk1CaXRDb2Rlcy5oIC0gRW51bSB2YWx1ZXMgZm9yIHRoZSBMTFZNIGJpdGNvZGUgZm9ybWF0IC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zNDIsNiArMzQxLDcgQEAKICAgQ1NUX0NPREVfSU5MSU5FQVNNID0gMjMsICAgICAgIC8vIElOTElORUFTTTogICAgIFtzaWRlZWZmZWN0fGFsaWduc3RhY2t8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgYXNtZGlhbGVjdCxhc21zdHIsY29uc3RzdHJdCiAgIENTVF9DT0RFX0NFX0dFUF9XSVRIX0lOUkFOR0VfSU5ERVggPSAyNCwgLy8gICAgICBbb3B0eSwgZmxhZ3MsIG4geCBvcGVyYW5kc10KKyAgQ1NUX0NPREVfQ0VfVU5PUCA9IDI1LCAgICAgICAgIC8vIENFX1VOT1A6ICAgICAgW29wY29kZSwgb3B2YWxdCiB9OwogCiAvLy8gQ2FzdE9wY29kZXMgLSBUaGVzZSBhcmUgdmFsdWVzIHVzZWQgaW4gdGhlIGJpdGNvZGUgZmlsZXMgdG8gZW5jb2RlIHdoaWNoCkBAIC0zNjQsNiArMzY0LDE0IEBACiAgIENBU1RfQUREUlNQQUNFQ0FTVCA9IDEyCiB9OwogCisvLy8gVW5hcnlPcGNvZGVzIC0gVGhlc2UgYXJlIHZhbHVlcyB1c2VkIGluIHRoZSBiaXRjb2RlIGZpbGVzIHRvIGVuY29kZSB3aGljaAorLy8vIHVub3AgYSBDU1RfQ09ERV9DRV9VTk9QIG9yIGEgWFhYIHJlZmVycyB0by4gIFRoZSB2YWx1ZXMgb2YgdGhlc2UgZW51bXMKKy8vLyBoYXZlIG5vIGZpeGVkIHJlbGF0aW9uIHRvIHRoZSBMTFZNIElSIGVudW0gdmFsdWVzLiAgQ2hhbmdpbmcgdGhlc2Ugd2lsbAorLy8vIGJyZWFrIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgZmlsZXMuCitlbnVtIFVuYXJ5T3Bjb2RlcyB7CisgIFVOT1BfTkVHID0gMAorfTsKKwogLy8vIEJpbmFyeU9wY29kZXMgLSBUaGVzZSBhcmUgdmFsdWVzIHVzZWQgaW4gdGhlIGJpdGNvZGUgZmlsZXMgdG8gZW5jb2RlIHdoaWNoCiAvLy8gYmlub3AgYSBDU1RfQ09ERV9DRV9CSU5PUCBvciBhIFhYWCByZWZlcnMgdG8uICBUaGUgdmFsdWVzIG9mIHRoZXNlIGVudW1zCiAvLy8gaGF2ZSBubyBmaXhlZCByZWxhdGlvbiB0byB0aGUgTExWTSBJUiBlbnVtIHZhbHVlcy4gIENoYW5naW5nIHRoZXNlIHdpbGwKQEAgLTM5OCw3ICs0MDYsOSBAQAogICBSTVdfTUFYID0gNywKICAgUk1XX01JTiA9IDgsCiAgIFJNV19VTUFYID0gOSwKLSAgUk1XX1VNSU4gPSAxMAorICBSTVdfVU1JTiA9IDEwLAorICBSTVdfRkFERCA9IDExLAorICBSTVdfRlNVQiA9IDEyCiB9OwogCiAvLy8gT3ZlcmZsb3dpbmdCaW5hcnlPcGVyYXRvck9wdGlvbmFsRmxhZ3MgLSBGbGFncyBmb3Igc2VyaWFsaXppbmcKQEAgLTUyNCw2ICs1MzQsOSBAQAogICAvLyA1MyBpcyB1bnVzZWQuCiAgIC8vIDU0IGlzIHVudXNlZC4KICAgRlVOQ19DT0RFX09QRVJBTkRfQlVORExFID0gNTUsIC8vIE9QRVJBTkRfQlVORExFOiBbdGFnIywgdmFsdWUuLi5dCisgIEZVTkNfQ09ERV9JTlNUX1VOT1AgPSA1NiwgICAgICAvLyBVTk9QOiAgICAgICBbb3Bjb2RlLCB0eSwgb3B2YWxdCisgIEZVTkNfQ09ERV9JTlNUX0NBTExCUiA9IDU3LCAgICAvLyBDQUxMQlI6ICAgICBbYXR0ciwgY2MsIG5vcm0sIHRyYW5zZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgZm50eSwgZm5pZCwgYXJncy4uLl0KIH07CiAKIGVudW0gVXNlTGlzdENvZGVzIHsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9BY2NlbFRhYmxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vQWNjZWxUYWJsZS5oCmluZGV4IDEzOTI4NTguLjk3MzFhYmQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9BY2NlbFRhYmxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0FjY2VsVGFibGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIGluY2x1ZGUvbGx2bS9Db2RlR2VuL0FjY2VsVGFibGUuaCAtIEFjY2VsZXJhdG9yIFRhYmxlcyAtLS0tLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0FuYWx5c2lzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vQW5hbHlzaXMuaAppbmRleCBkNzdhZWU2Li40Njg3NjhkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vQW5hbHlzaXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vQW5hbHlzaXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDb2RlR2VuL0FuYWx5c2lzLmggLSBDb2RlR2VuIExMVk0gSVIgQW5hbHlzaXMgVXRpbGl0aWVzIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0FzbVByaW50ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9Bc21QcmludGVyLmgKaW5kZXggMTRiYzA4MS4uZmIxMmJiMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0FzbVByaW50ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vQXNtUHJpbnRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ29kZUdlbi9Bc21QcmludGVyLmggLSBBc21QcmludGVyIEZyYW1ld29yayAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC03MSw2ICs3MCw3IEBACiBjbGFzcyBNRE5vZGU7CiBjbGFzcyBNb2R1bGU7CiBjbGFzcyByYXdfb3N0cmVhbTsKK2NsYXNzIFN0YWNrTWFwczsKIGNsYXNzIFRhcmdldExvd2VyaW5nT2JqZWN0RmlsZTsKIGNsYXNzIFRhcmdldE1hY2hpbmU7CiAKQEAgLTEyMSw5ICsxMjEsNiBAQAogICB1c2luZyBHT1RFcXVpdlVzZVBhaXIgPSBzdGQ6OnBhaXI8Y29uc3QgR2xvYmFsVmFyaWFibGUgKiwgdW5zaWduZWQ+OwogICBNYXBWZWN0b3I8Y29uc3QgTUNTeW1ib2wgKiwgR09URXF1aXZVc2VQYWlyPiBHbG9iYWxHT1RFcXVpdnM7CiAKLSAgLy8vIEVuYWJsZSBwcmludCBbbGF0ZW5jeTp0aHJvdWdocHV0XSBpbiBvdXRwdXQuCi0gIGJvb2wgRW5hYmxlUHJpbnRTY2hlZEluZm8gPSBmYWxzZTsKLQogcHJpdmF0ZToKICAgTUNTeW1ib2wgKkN1cnJlbnRGbkJlZ2luID0gbnVsbHB0cjsKICAgTUNTeW1ib2wgKkN1cnJlbnRGbkVuZCA9IG51bGxwdHI7CkBAIC0xMzcsNiArMTM0LDkgQEAKIAogICBzdGF0aWMgY2hhciBJRDsKIAorcHJvdGVjdGVkOgorICAvLy8gUHJvdGVjdGVkIHN0cnVjdCBIYW5kbGVySW5mbyBhbmQgSGFuZGxlcnMgcGVybWl0IHRhcmdldCBleHRlbmRlZAorICAvLy8gQXNtUHJpbnRlciBhZGRzIHRoZWlyIG93biBoYW5kbGVycy4KICAgc3RydWN0IEhhbmRsZXJJbmZvIHsKICAgICBBc21QcmludGVySGFuZGxlciAqSGFuZGxlcjsKICAgICBjb25zdCBjaGFyICpUaW1lck5hbWU7CkBAIC0yMjMsNiArMjIzLDkgQEAKIAogICB2b2lkIEVtaXRUb1N0cmVhbWVyKE1DU3RyZWFtZXIgJlMsIGNvbnN0IE1DSW5zdCAmSW5zdCk7CiAKKyAgLy8vIEVtaXRzIGluaXRhbCBkZWJ1ZyBsb2NhdGlvbiBkaXJlY3RpdmUuCisgIHZvaWQgZW1pdEluaXRpYWxSYXdEd2FyZkxvY0RpcmVjdGl2ZShjb25zdCBNYWNoaW5lRnVuY3Rpb24gJk1GKTsKKwogICAvLy8gUmV0dXJuIHRoZSBjdXJyZW50IHNlY3Rpb24gd2UgYXJlIGVtaXR0aW5nIHRvLgogICBjb25zdCBNQ1NlY3Rpb24gKmdldEN1cnJlbnRTZWN0aW9uKCkgY29uc3Q7CiAKQEAgLTM2NSw2ICszNjgsOSBAQAogICAvLy8gZW1pdCB0aGUgcHJveGllcyB3ZSBwcmV2aW91c2x5IG9taXR0ZWQgaW4gRW1pdEdsb2JhbFZhcmlhYmxlLgogICB2b2lkIGVtaXRHbG9iYWxHT1RFcXVpdnMoKTsKIAorICAvLy8gRW1pdCB0aGUgc3RhY2sgbWFwcy4KKyAgdm9pZCBlbWl0U3RhY2tNYXBzKFN0YWNrTWFwcyAmU00pOworCiAgIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KICAgLy8gT3ZlcnJpZGFibGUgSG9va3MKICAgLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwpAQCAtNTQyLDcgKzU0OCw3IEBACiAgIC8vLwogICAvLy8gXHAgVmFsdWUgLSBUaGUgdmFsdWUgdG8gZW1pdC4KICAgLy8vIFxwIFNpemUgLSBUaGUgc2l6ZSBvZiB0aGUgaW50ZWdlciAoaW4gYnl0ZXMpIHRvIGVtaXQuCi0gIHZpcnR1YWwgdm9pZCBFbWl0RGVidWdUaHJlYWRMb2NhbChjb25zdCBNQ0V4cHIgKlZhbHVlLCB1bnNpZ25lZCBTaXplKSBjb25zdDsKKyAgdmlydHVhbCB2b2lkIEVtaXREZWJ1Z1ZhbHVlKGNvbnN0IE1DRXhwciAqVmFsdWUsIHVuc2lnbmVkIFNpemUpIGNvbnN0OwogCiAgIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KICAgLy8gRHdhcmYgTG93ZXJpbmcgUm91dGluZXMKQEAgLTY1Miw2ICs2NTgsOCBAQAogICB2b2lkIEVtaXRMTFZNVXNlZExpc3QoY29uc3QgQ29uc3RhbnRBcnJheSAqSW5pdExpc3QpOwogICAvLy8gRW1pdCBsbHZtLmlkZW50IG1ldGFkYXRhIGluIGFuICcuaWRlbnQnIGRpcmVjdGl2ZS4KICAgdm9pZCBFbWl0TW9kdWxlSWRlbnRzKE1vZHVsZSAmTSk7CisgIC8vLyBFbWl0IGJ5dGVzIGZvciBsbHZtLmNvbW1hbmRsaW5lIG1ldGFkYXRhLgorICB2b2lkIEVtaXRNb2R1bGVDb21tYW5kTGluZXMoTW9kdWxlICZNKTsKICAgdm9pZCBFbWl0WFhTdHJ1Y3Rvckxpc3QoY29uc3QgRGF0YUxheW91dCAmREwsIGNvbnN0IENvbnN0YW50ICpMaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzQ3Rvcik7CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9Bc21QcmludGVySGFuZGxlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0FzbVByaW50ZXJIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZmYjU1OAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9Bc21QcmludGVySGFuZGxlci5oCkBAIC0wLDAgKzEsNzMgQEAKKy8vPT09LS0gbGx2bS9Db2RlR2VuL0FzbVByaW50ZXJIYW5kbGVyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGEgZ2VuZXJpYyBpbnRlcmZhY2UgZm9yIEFzbVByaW50ZXIgaGFuZGxlcnMsCisvLyBsaWtlIGRlYnVnIGFuZCBFSCBpbmZvIGVtaXR0ZXJzLgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9DT0RFR0VOX0FTTVBSSU5URVJIQU5ETEVSX0gKKyNkZWZpbmUgTExWTV9DT0RFR0VOX0FTTVBSSU5URVJIQU5ETEVSX0gKKworI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9EYXRhVHlwZXMuaCIKKworbmFtZXNwYWNlIGxsdm0geworCitjbGFzcyBBc21QcmludGVyOworY2xhc3MgTWFjaGluZUJhc2ljQmxvY2s7CitjbGFzcyBNYWNoaW5lRnVuY3Rpb247CitjbGFzcyBNYWNoaW5lSW5zdHI7CitjbGFzcyBNQ1N5bWJvbDsKKwordHlwZWRlZiBNQ1N5bWJvbCAqRXhjZXB0aW9uU3ltYm9sUHJvdmlkZXIoQXNtUHJpbnRlciAqQXNtKTsKKworLy8vIENvbGxlY3RzIGFuZCBoYW5kbGVzIEFzbVByaW50ZXIgb2JqZWN0cyByZXF1aXJlZCB0byBidWlsZCBkZWJ1ZworLy8vIG9yIEVIIGluZm9ybWF0aW9uLgorY2xhc3MgQXNtUHJpbnRlckhhbmRsZXIgeworcHVibGljOgorICB2aXJ0dWFsIH5Bc21QcmludGVySGFuZGxlcigpOworCisgIC8vLyBGb3Igc3ltYm9scyB0aGF0IGhhdmUgYSBzaXplIGRlc2lnbmF0ZWQgKGUuZy4gY29tbW9uIHN5bWJvbHMpLAorICAvLy8gdGhpcyB0cmFja3MgdGhhdCBzaXplLgorICB2aXJ0dWFsIHZvaWQgc2V0U3ltYm9sU2l6ZShjb25zdCBNQ1N5bWJvbCAqU3ltLCB1aW50NjRfdCBTaXplKSA9IDA7CisKKyAgLy8vIEVtaXQgYWxsIHNlY3Rpb25zIHRoYXQgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhlIGNvbnRlbnQuCisgIHZpcnR1YWwgdm9pZCBlbmRNb2R1bGUoKSA9IDA7CisKKyAgLy8vIEdhdGhlciBwcmUtZnVuY3Rpb24gZGVidWcgaW5mb3JtYXRpb24uCisgIC8vLyBFdmVyeSBiZWdpbkZ1bmN0aW9uKE1GKSBjYWxsIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhbiBlbmRGdW5jdGlvbihNRikKKyAgLy8vIGNhbGwuCisgIHZpcnR1YWwgdm9pZCBiZWdpbkZ1bmN0aW9uKGNvbnN0IE1hY2hpbmVGdW5jdGlvbiAqTUYpID0gMDsKKworICAvLyBFbWl0IGFueSBvZiBmdW5jdGlvbiBtYXJrZXIgKGxpa2UgLmNmaV9lbmRwcm9jKS4gVGhpcyBpcyBjYWxsZWQKKyAgLy8gYmVmb3JlIGVuZEZ1bmN0aW9uIGFuZCBjYW5ub3Qgc3dpdGNoIHNlY3Rpb25zLgorICB2aXJ0dWFsIHZvaWQgbWFya0Z1bmN0aW9uRW5kKCk7CisKKyAgLy8vIEdhdGhlciBwb3N0LWZ1bmN0aW9uIGRlYnVnIGluZm9ybWF0aW9uLgorICAvLy8gUGxlYXNlIG5vdGUgdGhhdCBzb21lIEFzbVByaW50ZXIgaW1wbGVtZW50YXRpb25zIG1heSBub3QgY2FsbAorICAvLy8gYmVnaW5GdW5jdGlvbiBhdCBhbGwuCisgIHZpcnR1YWwgdm9pZCBlbmRGdW5jdGlvbihjb25zdCBNYWNoaW5lRnVuY3Rpb24gKk1GKSA9IDA7CisKKyAgdmlydHVhbCB2b2lkIGJlZ2luRnJhZ21lbnQoY29uc3QgTWFjaGluZUJhc2ljQmxvY2sgKk1CQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uU3ltYm9sUHJvdmlkZXIgRVNQKSB7fQorICB2aXJ0dWFsIHZvaWQgZW5kRnJhZ21lbnQoKSB7fQorCisgIC8vLyBFbWl0IHRhcmdldC1zcGVjaWZpYyBFSCBmdW5jbGV0IG1hY2hpbmVyeS4KKyAgdmlydHVhbCB2b2lkIGJlZ2luRnVuY2xldChjb25zdCBNYWNoaW5lQmFzaWNCbG9jayAmTUJCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1DU3ltYm9sICpTeW0gPSBudWxscHRyKSB7fQorICB2aXJ0dWFsIHZvaWQgZW5kRnVuY2xldCgpIHt9CisKKyAgLy8vIFByb2Nlc3MgYmVnaW5uaW5nIG9mIGFuIGluc3RydWN0aW9uLgorICB2aXJ0dWFsIHZvaWQgYmVnaW5JbnN0cnVjdGlvbihjb25zdCBNYWNoaW5lSW5zdHIgKk1JKSA9IDA7CisKKyAgLy8vIFByb2Nlc3MgZW5kIG9mIGFuIGluc3RydWN0aW9uLgorICB2aXJ0dWFsIHZvaWQgZW5kSW5zdHJ1Y3Rpb24oKSA9IDA7Cit9OworfSAvLyBFbmQgb2YgbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vQXRvbWljRXhwYW5kVXRpbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9BdG9taWNFeHBhbmRVdGlscy5oCmluZGV4IGIxYWRmNjYuLjhhNDZjNmUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9BdG9taWNFeHBhbmRVdGlscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9BdG9taWNFeHBhbmRVdGlscy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEF0b21pY0V4cGFuZFV0aWxzLmggLSBVdGlsaXRpZXMgZm9yIGV4cGFuZGluZyBhdG9taWMgaW5zdHJ1Y3Rpb25zIC0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0Jhc2ljVFRJSW1wbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0Jhc2ljVFRJSW1wbC5oCmluZGV4IGI0NjBjZGMuLjFlOWFlYWIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9CYXNpY1RUSUltcGwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vQmFzaWNUVElJbXBsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQmFzaWNUVElJbXBsLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTgwLDYgKzc5LDIzIEBACiAgIHVzaW5nIEJhc2VUID0gVGFyZ2V0VHJhbnNmb3JtSW5mb0ltcGxDUlRQQmFzZTxUPjsKICAgdXNpbmcgVFRJID0gVGFyZ2V0VHJhbnNmb3JtSW5mbzsKIAorICAvLy8gRXN0aW1hdGUgYSBjb3N0IG9mIEJyb2FkY2FzdCBhcyBhbiBleHRyYWN0IGFuZCBzZXF1ZW5jZSBvZiBpbnNlcnQKKyAgLy8vIG9wZXJhdGlvbnMuCisgIHVuc2lnbmVkIGdldEJyb2FkY2FzdFNodWZmbGVPdmVyaGVhZChUeXBlICpUeSkgeworICAgIGFzc2VydChUeS0+aXNWZWN0b3JUeSgpICYmICJDYW4gb25seSBzaHVmZmxlIHZlY3RvcnMiKTsKKyAgICB1bnNpZ25lZCBDb3N0ID0gMDsKKyAgICAvLyBCcm9hZGNhc3QgY29zdCBpcyBlcXVhbCB0byB0aGUgY29zdCBvZiBleHRyYWN0aW5nIHRoZSB6ZXJvJ3RoIGVsZW1lbnQKKyAgICAvLyBwbHVzIHRoZSBjb3N0IG9mIGluc2VydGluZyBpdCBpbnRvIGV2ZXJ5IGVsZW1lbnQgb2YgdGhlIHJlc3VsdCB2ZWN0b3IuCisgICAgQ29zdCArPSBzdGF0aWNfY2FzdDxUICo+KHRoaXMpLT5nZXRWZWN0b3JJbnN0ckNvc3QoCisgICAgICAgIEluc3RydWN0aW9uOjpFeHRyYWN0RWxlbWVudCwgVHksIDApOworCisgICAgZm9yIChpbnQgaSA9IDAsIGUgPSBUeS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKTsgaSA8IGU7ICsraSkgeworICAgICAgQ29zdCArPSBzdGF0aWNfY2FzdDxUICo+KHRoaXMpLT5nZXRWZWN0b3JJbnN0ckNvc3QoCisgICAgICAgICAgSW5zdHJ1Y3Rpb246Okluc2VydEVsZW1lbnQsIFR5LCBpKTsKKyAgICB9CisgICAgcmV0dXJuIENvc3Q7CisgIH0KKwogICAvLy8gRXN0aW1hdGUgYSBjb3N0IG9mIHNodWZmbGUgYXMgYSBzZXF1ZW5jZSBvZiBleHRyYWN0IGFuZCBpbnNlcnQKICAgLy8vIG9wZXJhdGlvbnMuCiAgIHVuc2lnbmVkIGdldFBlcm11dGVTaHVmZmxlT3ZlcmhlYWQoVHlwZSAqVHkpIHsKQEAgLTEwMSw2ICsxMTcsNTAgQEAKICAgICByZXR1cm4gQ29zdDsKICAgfQogCisgIC8vLyBFc3RpbWF0ZSBhIGNvc3Qgb2Ygc3VidmVjdG9yIGV4dHJhY3Rpb24gYXMgYSBzZXF1ZW5jZSBvZiBleHRyYWN0IGFuZAorICAvLy8gaW5zZXJ0IG9wZXJhdGlvbnMuCisgIHVuc2lnbmVkIGdldEV4dHJhY3RTdWJ2ZWN0b3JPdmVyaGVhZChUeXBlICpUeSwgaW50IEluZGV4LCBUeXBlICpTdWJUeSkgeworICAgIGFzc2VydChUeSAmJiBUeS0+aXNWZWN0b3JUeSgpICYmIFN1YlR5ICYmIFN1YlR5LT5pc1ZlY3RvclR5KCkgJiYKKyAgICAgICAgICAgIkNhbiBvbmx5IGV4dHJhY3Qgc3VidmVjdG9ycyBmcm9tIHZlY3RvcnMiKTsKKyAgICBpbnQgTnVtU3ViRWx0cyA9IFN1YlR5LT5nZXRWZWN0b3JOdW1FbGVtZW50cygpOworICAgIGFzc2VydCgoSW5kZXggKyBOdW1TdWJFbHRzKSA8PSAoaW50KVR5LT5nZXRWZWN0b3JOdW1FbGVtZW50cygpICYmCisgICAgICAgICAgICJTS19FeHRyYWN0U3VidmVjdG9yIGluZGV4IG91dCBvZiByYW5nZSIpOworCisgICAgdW5zaWduZWQgQ29zdCA9IDA7CisgICAgLy8gU3VidmVjdG9yIGV4dHJhY3Rpb24gY29zdCBpcyBlcXVhbCB0byB0aGUgY29zdCBvZiBleHRyYWN0aW5nIGVsZW1lbnQgZnJvbQorICAgIC8vIHRoZSBzb3VyY2UgdHlwZSBwbHVzIHRoZSBjb3N0IG9mIGluc2VydGluZyB0aGVtIGludG8gdGhlIHJlc3VsdCB2ZWN0b3IKKyAgICAvLyB0eXBlLgorICAgIGZvciAoaW50IGkgPSAwOyBpICE9IE51bVN1YkVsdHM7ICsraSkgeworICAgICAgQ29zdCArPSBzdGF0aWNfY2FzdDxUICo+KHRoaXMpLT5nZXRWZWN0b3JJbnN0ckNvc3QoCisgICAgICAgICAgSW5zdHJ1Y3Rpb246OkV4dHJhY3RFbGVtZW50LCBUeSwgaSArIEluZGV4KTsKKyAgICAgIENvc3QgKz0gc3RhdGljX2Nhc3Q8VCAqPih0aGlzKS0+Z2V0VmVjdG9ySW5zdHJDb3N0KAorICAgICAgICAgIEluc3RydWN0aW9uOjpJbnNlcnRFbGVtZW50LCBTdWJUeSwgaSk7CisgICAgfQorICAgIHJldHVybiBDb3N0OworICB9CisKKyAgLy8vIEVzdGltYXRlIGEgY29zdCBvZiBzdWJ2ZWN0b3IgaW5zZXJ0aW9uIGFzIGEgc2VxdWVuY2Ugb2YgZXh0cmFjdCBhbmQKKyAgLy8vIGluc2VydCBvcGVyYXRpb25zLgorICB1bnNpZ25lZCBnZXRJbnNlcnRTdWJ2ZWN0b3JPdmVyaGVhZChUeXBlICpUeSwgaW50IEluZGV4LCBUeXBlICpTdWJUeSkgeworICAgIGFzc2VydChUeSAmJiBUeS0+aXNWZWN0b3JUeSgpICYmIFN1YlR5ICYmIFN1YlR5LT5pc1ZlY3RvclR5KCkgJiYKKyAgICAgICAgICAgIkNhbiBvbmx5IGluc2VydCBzdWJ2ZWN0b3JzIGludG8gdmVjdG9ycyIpOworICAgIGludCBOdW1TdWJFbHRzID0gU3ViVHktPmdldFZlY3Rvck51bUVsZW1lbnRzKCk7CisgICAgYXNzZXJ0KChJbmRleCArIE51bVN1YkVsdHMpIDw9IChpbnQpVHktPmdldFZlY3Rvck51bUVsZW1lbnRzKCkgJiYKKyAgICAgICAgICAgIlNLX0luc2VydFN1YnZlY3RvciBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKworICAgIHVuc2lnbmVkIENvc3QgPSAwOworICAgIC8vIFN1YnZlY3RvciBpbnNlcnRpb24gY29zdCBpcyBlcXVhbCB0byB0aGUgY29zdCBvZiBleHRyYWN0aW5nIGVsZW1lbnQgZnJvbQorICAgIC8vIHRoZSBzb3VyY2UgdHlwZSBwbHVzIHRoZSBjb3N0IG9mIGluc2VydGluZyB0aGVtIGludG8gdGhlIHJlc3VsdCB2ZWN0b3IKKyAgICAvLyB0eXBlLgorICAgIGZvciAoaW50IGkgPSAwOyBpICE9IE51bVN1YkVsdHM7ICsraSkgeworICAgICAgQ29zdCArPSBzdGF0aWNfY2FzdDxUICo+KHRoaXMpLT5nZXRWZWN0b3JJbnN0ckNvc3QoCisgICAgICAgICAgSW5zdHJ1Y3Rpb246OkV4dHJhY3RFbGVtZW50LCBTdWJUeSwgaSk7CisgICAgICBDb3N0ICs9IHN0YXRpY19jYXN0PFQgKj4odGhpcyktPmdldFZlY3Rvckluc3RyQ29zdCgKKyAgICAgICAgICBJbnN0cnVjdGlvbjo6SW5zZXJ0RWxlbWVudCwgVHksIGkgKyBJbmRleCk7CisgICAgfQorICAgIHJldHVybiBDb3N0OworICB9CisKICAgLy8vIExvY2FsIHF1ZXJ5IG1ldGhvZCBkZWxlZ2F0ZXMgdXAgdG8gVCB3aGljaCAqbXVzdCogaW1wbGVtZW50IHRoaXMhCiAgIGNvbnN0IFRhcmdldFN1YnRhcmdldEluZm8gKmdldFNUKCkgY29uc3QgewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUICo+KHRoaXMpLT5nZXRTVCgpOwpAQCAtNTU0LDE0ICs2MTQsMjAgQEAKICAgdW5zaWduZWQgZ2V0U2h1ZmZsZUNvc3QoVFRJOjpTaHVmZmxlS2luZCBLaW5kLCBUeXBlICpUcCwgaW50IEluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICpTdWJUcCkgewogICAgIHN3aXRjaCAoS2luZCkgeworICAgIGNhc2UgVFRJOjpTS19Ccm9hZGNhc3Q6CisgICAgICByZXR1cm4gZ2V0QnJvYWRjYXN0U2h1ZmZsZU92ZXJoZWFkKFRwKTsKICAgICBjYXNlIFRUSTo6U0tfU2VsZWN0OgorICAgIGNhc2UgVFRJOjpTS19SZXZlcnNlOgogICAgIGNhc2UgVFRJOjpTS19UcmFuc3Bvc2U6CiAgICAgY2FzZSBUVEk6OlNLX1Blcm11dGVTaW5nbGVTcmM6CiAgICAgY2FzZSBUVEk6OlNLX1Blcm11dGVUd29TcmM6CiAgICAgICByZXR1cm4gZ2V0UGVybXV0ZVNodWZmbGVPdmVyaGVhZChUcCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiAxOworICAgIGNhc2UgVFRJOjpTS19FeHRyYWN0U3VidmVjdG9yOgorICAgICAgcmV0dXJuIGdldEV4dHJhY3RTdWJ2ZWN0b3JPdmVyaGVhZChUcCwgSW5kZXgsIFN1YlRwKTsKKyAgICBjYXNlIFRUSTo6U0tfSW5zZXJ0U3VidmVjdG9yOgorICAgICAgcmV0dXJuIGdldEluc2VydFN1YnZlY3Rvck92ZXJoZWFkKFRwLCBJbmRleCwgU3ViVHApOwogICAgIH0KKyAgICBsbHZtX3VucmVhY2hhYmxlKCJVbmtub3duIFRUSTo6U2h1ZmZsZUtpbmQiKTsKICAgfQogCiAgIHVuc2lnbmVkIGdldENhc3RJbnN0ckNvc3QodW5zaWduZWQgT3Bjb2RlLCBUeXBlICpEc3QsIFR5cGUgKlNyYywKQEAgLTc4Myw4ICs4NDksOSBAQAogICB1bnNpZ25lZCBnZXRJbnRlcmxlYXZlZE1lbW9yeU9wQ29zdCh1bnNpZ25lZCBPcGNvZGUsIFR5cGUgKlZlY1R5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBGYWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPHVuc2lnbmVkPiBJbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBBbGlnbm1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEFkZHJlc3NTcGFjZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBBbGlnbm1lbnQsIHVuc2lnbmVkIEFkZHJlc3NTcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBVc2VNYXNrRm9yQ29uZCA9IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFVzZU1hc2tGb3JHYXBzID0gZmFsc2UpIHsKICAgICBWZWN0b3JUeXBlICpWVCA9IGR5bl9jYXN0PFZlY3RvclR5cGU+KFZlY1R5KTsKICAgICBhc3NlcnQoVlQgJiYgIkV4cGVjdCBhIHZlY3RvciB0eXBlIGZvciBpbnRlcmxlYXZlZCBtZW1vcnkgb3AiKTsKIApAQCAtNzk1LDggKzg2MiwxMyBAQAogICAgIFZlY3RvclR5cGUgKlN1YlZUID0gVmVjdG9yVHlwZTo6Z2V0KFZULT5nZXRFbGVtZW50VHlwZSgpLCBOdW1TdWJFbHRzKTsKIAogICAgIC8vIEZpcnN0bHksIHRoZSBjb3N0IG9mIGxvYWQvc3RvcmUgb3BlcmF0aW9uLgotICAgIHVuc2lnbmVkIENvc3QgPSBzdGF0aWNfY2FzdDxUICo+KHRoaXMpLT5nZXRNZW1vcnlPcENvc3QoCi0gICAgICAgIE9wY29kZSwgVmVjVHksIEFsaWdubWVudCwgQWRkcmVzc1NwYWNlKTsKKyAgICB1bnNpZ25lZCBDb3N0OworICAgIGlmIChVc2VNYXNrRm9yQ29uZCB8fCBVc2VNYXNrRm9yR2FwcykKKyAgICAgIENvc3QgPSBzdGF0aWNfY2FzdDxUICo+KHRoaXMpLT5nZXRNYXNrZWRNZW1vcnlPcENvc3QoCisgICAgICAgICAgT3Bjb2RlLCBWZWNUeSwgQWxpZ25tZW50LCBBZGRyZXNzU3BhY2UpOworICAgIGVsc2UKKyAgICAgIENvc3QgPSBzdGF0aWNfY2FzdDxUICo+KHRoaXMpLT5nZXRNZW1vcnlPcENvc3QoT3Bjb2RlLCBWZWNUeSwgQWxpZ25tZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzU3BhY2UpOwogCiAgICAgLy8gTGVnYWxpemUgdGhlIHZlY3RvciB0eXBlLCBhbmQgZ2V0IHRoZSBsZWdhbGl6ZWQgYW5kIHVubGVnYWxpemVkIHR5cGUKICAgICAvLyBzaXplcy4KQEAgLTg5Miw2ICs5NjQsNDAgQEAKICAgICAgICAgICAgICAgICAgICAgLT5nZXRWZWN0b3JJbnN0ckNvc3QoSW5zdHJ1Y3Rpb246Okluc2VydEVsZW1lbnQsIFZULCBpKTsKICAgICB9CiAKKyAgICBpZiAoIVVzZU1hc2tGb3JDb25kKQorICAgICAgcmV0dXJuIENvc3Q7CisKKyAgICBUeXBlICpJOFR5cGUgPSBUeXBlOjpnZXRJbnQ4VHkoVlQtPmdldENvbnRleHQoKSk7CisgICAgVmVjdG9yVHlwZSAqTWFza1ZUID0gVmVjdG9yVHlwZTo6Z2V0KEk4VHlwZSwgTnVtRWx0cyk7CisgICAgU3ViVlQgPSBWZWN0b3JUeXBlOjpnZXQoSThUeXBlLCBOdW1TdWJFbHRzKTsKKworICAgIC8vIFRoZSBNYXNrIHNodWZmbGluZyBjb3N0IGlzIGV4dHJhY3QgYWxsIHRoZSBlbGVtZW50cyBvZiB0aGUgTWFzaworICAgIC8vIGFuZCBpbnNlcnQgZWFjaCBvZiB0aGVtIEZhY3RvciB0aW1lcyBpbnRvIHRoZSB3aWRlIHZlY3RvcjoKKyAgICAvLworICAgIC8vIEUuZy4gYW4gaW50ZXJsZWF2ZWQgZ3JvdXAgd2l0aCBmYWN0b3IgMzoKKyAgICAvLyAgICAlbWFzayA9IGljbXAgdWx0IDw4IHggaTMyPiAldmVjMSwgJXZlYzIKKyAgICAvLyAgICAlaW50ZXJsZWF2ZWQubWFzayA9IHNodWZmbGV2ZWN0b3IgPDggeCBpMT4gJW1hc2ssIDw4IHggaTE+IHVuZGVmLAorICAgIC8vICAgICAgICA8MjQgeCBpMzI+IDwwLDAsMCwxLDEsMSwyLDIsMiwzLDMsMyw0LDQsNCw1LDUsNSw2LDYsNiw3LDcsNz4KKyAgICAvLyBUaGUgY29zdCBpcyBlc3RpbWF0ZWQgYXMgZXh0cmFjdCBhbGwgbWFzayBlbGVtZW50cyBmcm9tIHRoZSA8OHhpMT4gbWFzaworICAgIC8vIHZlY3RvciBhbmQgaW5zZXJ0IHRoZW0gZmFjdG9yIHRpbWVzIGludG8gdGhlIDwyNHhpMT4gc2h1ZmZsZWQgbWFzaworICAgIC8vIHZlY3Rvci4KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTnVtU3ViRWx0czsgaSsrKQorICAgICAgQ29zdCArPSBzdGF0aWNfY2FzdDxUICo+KHRoaXMpLT5nZXRWZWN0b3JJbnN0ckNvc3QoCisgICAgICAgICAgSW5zdHJ1Y3Rpb246OkV4dHJhY3RFbGVtZW50LCBTdWJWVCwgaSk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTnVtRWx0czsgaSsrKQorICAgICAgQ29zdCArPSBzdGF0aWNfY2FzdDxUICo+KHRoaXMpLT5nZXRWZWN0b3JJbnN0ckNvc3QoCisgICAgICAgICAgSW5zdHJ1Y3Rpb246Okluc2VydEVsZW1lbnQsIE1hc2tWVCwgaSk7CisKKyAgICAvLyBUaGUgR2FwcyBtYXNrIGlzIGludmFyaWFudCBhbmQgY3JlYXRlZCBvdXRzaWRlIHRoZSBsb29wLCB0aGVyZWZvcmUgdGhlCisgICAgLy8gY29zdCBvZiBjcmVhdGluZyBpdCBpcyBub3QgYWNjb3VudGVkIGZvciBoZXJlLiBIb3dldmVyIGlmIHdlIGhhdmUgYm90aAorICAgIC8vIGEgTWFza0ZvckdhcHMgYW5kIHNvbWUgb3RoZXIgbWFzayB0aGF0IGd1YXJkcyB0aGUgZXhlY3V0aW9uIG9mIHRoZQorICAgIC8vIG1lbW9yeSBhY2Nlc3MsIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhlIGNvc3Qgb2YgQW5kLWluZyB0aGUgdHdvIG1hc2tzCisgICAgLy8gaW5zaWRlIHRoZSBsb29wLgorICAgIGlmIChVc2VNYXNrRm9yR2FwcykKKyAgICAgIENvc3QgKz0gc3RhdGljX2Nhc3Q8VCAqPih0aGlzKS0+Z2V0QXJpdGhtZXRpY0luc3RyQ29zdCgKKyAgICAgICAgICBCaW5hcnlPcGVyYXRvcjo6QW5kLCBNYXNrVlQpOworCiAgICAgcmV0dXJuIENvc3Q7CiAgIH0KIApAQCAtOTAxLDYgKzEwMDcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgVkYgPSAxKSB7CiAgICAgdW5zaWduZWQgUmV0VkYgPSAoUmV0VHktPmlzVmVjdG9yVHkoKSA/IFJldFR5LT5nZXRWZWN0b3JOdW1FbGVtZW50cygpIDogMSk7CiAgICAgYXNzZXJ0KChSZXRWRiA9PSAxIHx8IFZGID09IDEpICYmICJWRiA+IDEgYW5kIFJldFZGIGlzIGEgdmVjdG9yIHR5cGUiKTsKKyAgICBhdXRvICpDb25jcmV0ZVRUSSA9IHN0YXRpY19jYXN0PFQgKj4odGhpcyk7CiAKICAgICBzd2l0Y2ggKElJRCkgewogICAgIGRlZmF1bHQ6IHsKQEAgLTkyNiwyOSArMTAzMywyNCBAQAogICAgICAgICBTY2FsYXJpemF0aW9uQ29zdCArPSBnZXRPcGVyYW5kc1NjYWxhcml6YXRpb25PdmVyaGVhZChBcmdzLCBWRik7CiAgICAgICB9CiAKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUICo+KHRoaXMpLT4KLSAgICAgICAgZ2V0SW50cmluc2ljSW5zdHJDb3N0KElJRCwgUmV0VHksIFR5cGVzLCBGTUYsIFNjYWxhcml6YXRpb25Db3N0KTsKKyAgICAgIHJldHVybiBDb25jcmV0ZVRUSS0+Z2V0SW50cmluc2ljSW5zdHJDb3N0KElJRCwgUmV0VHksIFR5cGVzLCBGTUYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2FsYXJpemF0aW9uQ29zdCk7CiAgICAgfQogICAgIGNhc2UgSW50cmluc2ljOjptYXNrZWRfc2NhdHRlcjogewogICAgICAgYXNzZXJ0KFZGID09IDEgJiYgIkNhbid0IHZlY3Rvcml6ZSB0eXBlcyBoZXJlLiIpOwogICAgICAgVmFsdWUgKk1hc2sgPSBBcmdzWzNdOwogICAgICAgYm9vbCBWYXJNYXNrID0gIWlzYTxDb25zdGFudD4oTWFzayk7CiAgICAgICB1bnNpZ25lZCBBbGlnbm1lbnQgPSBjYXN0PENvbnN0YW50SW50PihBcmdzWzJdKS0+Z2V0WkV4dFZhbHVlKCk7Ci0gICAgICByZXR1cm4KLSAgICAgICAgc3RhdGljX2Nhc3Q8VCAqPih0aGlzKS0+Z2V0R2F0aGVyU2NhdHRlck9wQ29zdChJbnN0cnVjdGlvbjo6U3RvcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnc1swXS0+Z2V0VHlwZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ3NbMV0sIFZhck1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxpZ25tZW50KTsKKyAgICAgIHJldHVybiBDb25jcmV0ZVRUSS0+Z2V0R2F0aGVyU2NhdHRlck9wQ29zdCgKKyAgICAgICAgICBJbnN0cnVjdGlvbjo6U3RvcmUsIEFyZ3NbMF0tPmdldFR5cGUoKSwgQXJnc1sxXSwgVmFyTWFzaywgQWxpZ25tZW50KTsKICAgICB9CiAgICAgY2FzZSBJbnRyaW5zaWM6Om1hc2tlZF9nYXRoZXI6IHsKICAgICAgIGFzc2VydChWRiA9PSAxICYmICJDYW4ndCB2ZWN0b3JpemUgdHlwZXMgaGVyZS4iKTsKICAgICAgIFZhbHVlICpNYXNrID0gQXJnc1syXTsKICAgICAgIGJvb2wgVmFyTWFzayA9ICFpc2E8Q29uc3RhbnQ+KE1hc2spOwogICAgICAgdW5zaWduZWQgQWxpZ25tZW50ID0gY2FzdDxDb25zdGFudEludD4oQXJnc1sxXSktPmdldFpFeHRWYWx1ZSgpOwotICAgICAgcmV0dXJuCi0gICAgICAgIHN0YXRpY19jYXN0PFQgKj4odGhpcyktPmdldEdhdGhlclNjYXR0ZXJPcENvc3QoSW5zdHJ1Y3Rpb246OkxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0VHksIEFyZ3NbMF0sIFZhck1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxpZ25tZW50KTsKKyAgICAgIHJldHVybiBDb25jcmV0ZVRUSS0+Z2V0R2F0aGVyU2NhdHRlck9wQ29zdChJbnN0cnVjdGlvbjo6TG9hZCwgUmV0VHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnc1swXSwgVmFyTWFzaywgQWxpZ25tZW50KTsKICAgICB9CiAgICAgY2FzZSBJbnRyaW5zaWM6OmV4cGVyaW1lbnRhbF92ZWN0b3JfcmVkdWNlX2FkZDoKICAgICBjYXNlIEludHJpbnNpYzo6ZXhwZXJpbWVudGFsX3ZlY3Rvcl9yZWR1Y2VfbXVsOgpAQCAtOTY0LDYgKzEwNjYsNDUgQEAKICAgICBjYXNlIEludHJpbnNpYzo6ZXhwZXJpbWVudGFsX3ZlY3Rvcl9yZWR1Y2VfdW1heDoKICAgICBjYXNlIEludHJpbnNpYzo6ZXhwZXJpbWVudGFsX3ZlY3Rvcl9yZWR1Y2VfdW1pbjoKICAgICAgIHJldHVybiBnZXRJbnRyaW5zaWNJbnN0ckNvc3QoSUlELCBSZXRUeSwgQXJnc1swXS0+Z2V0VHlwZSgpLCBGTUYpOworICAgIGNhc2UgSW50cmluc2ljOjpmc2hsOgorICAgIGNhc2UgSW50cmluc2ljOjpmc2hyOiB7CisgICAgICBWYWx1ZSAqWCA9IEFyZ3NbMF07CisgICAgICBWYWx1ZSAqWSA9IEFyZ3NbMV07CisgICAgICBWYWx1ZSAqWiA9IEFyZ3NbMl07CisgICAgICBUVEk6Ok9wZXJhbmRWYWx1ZVByb3BlcnRpZXMgT3BQcm9wc1gsIE9wUHJvcHNZLCBPcFByb3BzWiwgT3BQcm9wc0JXOworICAgICAgVFRJOjpPcGVyYW5kVmFsdWVLaW5kIE9wS2luZFggPSBUVEk6OmdldE9wZXJhbmRJbmZvKFgsIE9wUHJvcHNYKTsKKyAgICAgIFRUSTo6T3BlcmFuZFZhbHVlS2luZCBPcEtpbmRZID0gVFRJOjpnZXRPcGVyYW5kSW5mbyhZLCBPcFByb3BzWSk7CisgICAgICBUVEk6Ok9wZXJhbmRWYWx1ZUtpbmQgT3BLaW5kWiA9IFRUSTo6Z2V0T3BlcmFuZEluZm8oWiwgT3BQcm9wc1opOworICAgICAgVFRJOjpPcGVyYW5kVmFsdWVLaW5kIE9wS2luZEJXID0gVFRJOjpPS19Vbmlmb3JtQ29uc3RhbnRWYWx1ZTsKKyAgICAgIE9wUHJvcHNCVyA9IGlzUG93ZXJPZjJfMzIoUmV0VHktPmdldFNjYWxhclNpemVJbkJpdHMoKSkgPyBUVEk6Ok9QX1Bvd2VyT2YyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogVFRJOjpPUF9Ob25lOworICAgICAgLy8gZnNobDogKFggPDwgKFogJSBCVykpIHwgKFkgPj4gKEJXIC0gKFogJSBCVykpKQorICAgICAgLy8gZnNocjogKFggPDwgKEJXIC0gKFogJSBCVykpKSB8IChZID4+IChaICUgQlcpKQorICAgICAgdW5zaWduZWQgQ29zdCA9IDA7CisgICAgICBDb3N0ICs9IENvbmNyZXRlVFRJLT5nZXRBcml0aG1ldGljSW5zdHJDb3N0KEJpbmFyeU9wZXJhdG9yOjpPciwgUmV0VHkpOworICAgICAgQ29zdCArPSBDb25jcmV0ZVRUSS0+Z2V0QXJpdGhtZXRpY0luc3RyQ29zdChCaW5hcnlPcGVyYXRvcjo6U3ViLCBSZXRUeSk7CisgICAgICBDb3N0ICs9IENvbmNyZXRlVFRJLT5nZXRBcml0aG1ldGljSW5zdHJDb3N0KEJpbmFyeU9wZXJhdG9yOjpTaGwsIFJldFR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEtpbmRYLCBPcEtpbmRaLCBPcFByb3BzWCk7CisgICAgICBDb3N0ICs9IENvbmNyZXRlVFRJLT5nZXRBcml0aG1ldGljSW5zdHJDb3N0KEJpbmFyeU9wZXJhdG9yOjpMU2hyLCBSZXRUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BLaW5kWSwgT3BLaW5kWiwgT3BQcm9wc1kpOworICAgICAgLy8gTm9uLWNvbnN0YW50IHNoaWZ0IGFtb3VudHMgcmVxdWlyZXMgYSBtb2R1bG8uCisgICAgICBpZiAoT3BLaW5kWiAhPSBUVEk6Ok9LX1VuaWZvcm1Db25zdGFudFZhbHVlICYmCisgICAgICAgICAgT3BLaW5kWiAhPSBUVEk6Ok9LX05vblVuaWZvcm1Db25zdGFudFZhbHVlKQorICAgICAgICBDb3N0ICs9IENvbmNyZXRlVFRJLT5nZXRBcml0aG1ldGljSW5zdHJDb3N0KEJpbmFyeU9wZXJhdG9yOjpVUmVtLCBSZXRUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEtpbmRaLCBPcEtpbmRCVywgT3BQcm9wc1osCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BQcm9wc0JXKTsKKyAgICAgIC8vIEZvciBub24tcm90YXRlcyAoWCAhPSBZKSB3ZSBtdXN0IGFkZCBzaGlmdC1ieS16ZXJvIGhhbmRsaW5nIGNvc3RzLgorICAgICAgaWYgKFggIT0gWSkgeworICAgICAgICBUeXBlICpDb25kVHkgPSBUeXBlOjpnZXRJbnQxVHkoUmV0VHktPmdldENvbnRleHQoKSk7CisgICAgICAgIGlmIChSZXRWRiA+IDEpCisgICAgICAgICAgQ29uZFR5ID0gVmVjdG9yVHlwZTo6Z2V0KENvbmRUeSwgUmV0VkYpOworICAgICAgICBDb3N0ICs9IENvbmNyZXRlVFRJLT5nZXRDbXBTZWxJbnN0ckNvc3QoQmluYXJ5T3BlcmF0b3I6OklDbXAsIFJldFR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZFR5LCBudWxscHRyKTsKKyAgICAgICAgQ29zdCArPSBDb25jcmV0ZVRUSS0+Z2V0Q21wU2VsSW5zdHJDb3N0KEJpbmFyeU9wZXJhdG9yOjpTZWxlY3QsIFJldFR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZFR5LCBudWxscHRyKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBDb3N0OworICAgIH0KICAgICB9CiAgIH0KIApAQCAtOTc0LDYgKzExMTUsOSBAQAogICB1bnNpZ25lZCBnZXRJbnRyaW5zaWNJbnN0ckNvc3QoCiAgICAgICBJbnRyaW5zaWM6OklEIElJRCwgVHlwZSAqUmV0VHksIEFycmF5UmVmPFR5cGUgKj4gVHlzLCBGYXN0TWF0aEZsYWdzIEZNRiwKICAgICAgIHVuc2lnbmVkIFNjYWxhcml6YXRpb25Db3N0UGFzc2VkID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSB7CisgICAgdW5zaWduZWQgUmV0VkYgPSAoUmV0VHktPmlzVmVjdG9yVHkoKSA/IFJldFR5LT5nZXRWZWN0b3JOdW1FbGVtZW50cygpIDogMSk7CisgICAgYXV0byAqQ29uY3JldGVUVEkgPSBzdGF0aWNfY2FzdDxUICo+KHRoaXMpOworCiAgICAgU21hbGxWZWN0b3I8dW5zaWduZWQsIDI+IElTRHM7CiAgICAgdW5zaWduZWQgU2luZ2xlQ2FsbENvc3QgPSAxMDsgLy8gTGlicmFyeSBjYWxsIGNvc3QuIE1ha2UgaXQgZXhwZW5zaXZlLgogICAgIHN3aXRjaCAoSUlEKSB7CkBAIC0xMDAyLDggKzExNDYsOCBAQAogICAgICAgaWYgKFNjYWxhckNhbGxzID09IDEpCiAgICAgICAgIHJldHVybiAxOyAvLyBSZXR1cm4gY29zdCBvZiBhIHNjYWxhciBpbnRyaW5zaWMuIEFzc3VtZSBpdCB0byBiZSBjaGVhcC4KIAotICAgICAgdW5zaWduZWQgU2NhbGFyQ29zdCA9IHN0YXRpY19jYXN0PFQgKj4odGhpcyktPmdldEludHJpbnNpY0luc3RyQ29zdCgKLSAgICAgICAgICBJSUQsIFNjYWxhclJldFR5LCBTY2FsYXJUeXMsIEZNRik7CisgICAgICB1bnNpZ25lZCBTY2FsYXJDb3N0ID0KKyAgICAgICAgICBDb25jcmV0ZVRUSS0+Z2V0SW50cmluc2ljSW5zdHJDb3N0KElJRCwgU2NhbGFyUmV0VHksIFNjYWxhclR5cywgRk1GKTsKIAogICAgICAgcmV0dXJuIFNjYWxhckNhbGxzICogU2NhbGFyQ29zdCArIFNjYWxhcml6YXRpb25Db3N0OwogICAgIH0KQEAgLTEwNDIsMTIgKzExODYsMTIgQEAKICAgICBjYXNlIEludHJpbnNpYzo6bWlubnVtOgogICAgICAgSVNEcy5wdXNoX2JhY2soSVNEOjpGTUlOTlVNKTsKICAgICAgIGlmIChGTUYubm9OYU5zKCkpCi0gICAgICAgIElTRHMucHVzaF9iYWNrKElTRDo6Rk1JTk5BTik7CisgICAgICAgIElTRHMucHVzaF9iYWNrKElTRDo6Rk1JTklNVU0pOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnRyaW5zaWM6Om1heG51bToKICAgICAgIElTRHMucHVzaF9iYWNrKElTRDo6Rk1BWE5VTSk7CiAgICAgICBpZiAoRk1GLm5vTmFOcygpKQotICAgICAgICBJU0RzLnB1c2hfYmFjayhJU0Q6OkZNQVhOQU4pOworICAgICAgICBJU0RzLnB1c2hfYmFjayhJU0Q6OkZNQVhJTVVNKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW50cmluc2ljOjpjb3B5c2lnbjoKICAgICAgIElTRHMucHVzaF9iYWNrKElTRDo6RkNPUFlTSUdOKTsKQEAgLTEwODUsNDQgKzEyMjksMTIzIEBACiAgICAgY2FzZSBJbnRyaW5zaWM6OnNpZGVlZmZlY3Q6CiAgICAgICByZXR1cm4gMDsKICAgICBjYXNlIEludHJpbnNpYzo6bWFza2VkX3N0b3JlOgotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQgKj4odGhpcykKLSAgICAgICAgICAtPmdldE1hc2tlZE1lbW9yeU9wQ29zdChJbnN0cnVjdGlvbjo6U3RvcmUsIFR5c1swXSwgMCwgMCk7CisgICAgICByZXR1cm4gQ29uY3JldGVUVEktPmdldE1hc2tlZE1lbW9yeU9wQ29zdChJbnN0cnVjdGlvbjo6U3RvcmUsIFR5c1swXSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwogICAgIGNhc2UgSW50cmluc2ljOjptYXNrZWRfbG9hZDoKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUICo+KHRoaXMpCi0gICAgICAgICAgLT5nZXRNYXNrZWRNZW1vcnlPcENvc3QoSW5zdHJ1Y3Rpb246OkxvYWQsIFJldFR5LCAwLCAwKTsKKyAgICAgIHJldHVybiBDb25jcmV0ZVRUSS0+Z2V0TWFza2VkTWVtb3J5T3BDb3N0KEluc3RydWN0aW9uOjpMb2FkLCBSZXRUeSwgMCwgMCk7CiAgICAgY2FzZSBJbnRyaW5zaWM6OmV4cGVyaW1lbnRhbF92ZWN0b3JfcmVkdWNlX2FkZDoKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUICo+KHRoaXMpLT5nZXRBcml0aG1ldGljUmVkdWN0aW9uQ29zdCgKLSAgICAgICAgICBJbnN0cnVjdGlvbjo6QWRkLCBUeXNbMF0sIC8qSXNQYWlyd2lzZUZvcm09Ki9mYWxzZSk7CisgICAgICByZXR1cm4gQ29uY3JldGVUVEktPmdldEFyaXRobWV0aWNSZWR1Y3Rpb25Db3N0KEluc3RydWN0aW9uOjpBZGQsIFR5c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypJc1BhaXJ3aXNlRm9ybT0qL2ZhbHNlKTsKICAgICBjYXNlIEludHJpbnNpYzo6ZXhwZXJpbWVudGFsX3ZlY3Rvcl9yZWR1Y2VfbXVsOgotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQgKj4odGhpcyktPmdldEFyaXRobWV0aWNSZWR1Y3Rpb25Db3N0KAotICAgICAgICAgIEluc3RydWN0aW9uOjpNdWwsIFR5c1swXSwgLypJc1BhaXJ3aXNlRm9ybT0qL2ZhbHNlKTsKKyAgICAgIHJldHVybiBDb25jcmV0ZVRUSS0+Z2V0QXJpdGhtZXRpY1JlZHVjdGlvbkNvc3QoSW5zdHJ1Y3Rpb246Ok11bCwgVHlzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKklzUGFpcndpc2VGb3JtPSovZmFsc2UpOwogICAgIGNhc2UgSW50cmluc2ljOjpleHBlcmltZW50YWxfdmVjdG9yX3JlZHVjZV9hbmQ6Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCAqPih0aGlzKS0+Z2V0QXJpdGhtZXRpY1JlZHVjdGlvbkNvc3QoCi0gICAgICAgICAgSW5zdHJ1Y3Rpb246OkFuZCwgVHlzWzBdLCAvKklzUGFpcndpc2VGb3JtPSovZmFsc2UpOworICAgICAgcmV0dXJuIENvbmNyZXRlVFRJLT5nZXRBcml0aG1ldGljUmVkdWN0aW9uQ29zdChJbnN0cnVjdGlvbjo6QW5kLCBUeXNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qSXNQYWlyd2lzZUZvcm09Ki9mYWxzZSk7CiAgICAgY2FzZSBJbnRyaW5zaWM6OmV4cGVyaW1lbnRhbF92ZWN0b3JfcmVkdWNlX29yOgotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQgKj4odGhpcyktPmdldEFyaXRobWV0aWNSZWR1Y3Rpb25Db3N0KAotICAgICAgICAgIEluc3RydWN0aW9uOjpPciwgVHlzWzBdLCAvKklzUGFpcndpc2VGb3JtPSovZmFsc2UpOworICAgICAgcmV0dXJuIENvbmNyZXRlVFRJLT5nZXRBcml0aG1ldGljUmVkdWN0aW9uQ29zdChJbnN0cnVjdGlvbjo6T3IsIFR5c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypJc1BhaXJ3aXNlRm9ybT0qL2ZhbHNlKTsKICAgICBjYXNlIEludHJpbnNpYzo6ZXhwZXJpbWVudGFsX3ZlY3Rvcl9yZWR1Y2VfeG9yOgotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQgKj4odGhpcyktPmdldEFyaXRobWV0aWNSZWR1Y3Rpb25Db3N0KAotICAgICAgICAgIEluc3RydWN0aW9uOjpYb3IsIFR5c1swXSwgLypJc1BhaXJ3aXNlRm9ybT0qL2ZhbHNlKTsKKyAgICAgIHJldHVybiBDb25jcmV0ZVRUSS0+Z2V0QXJpdGhtZXRpY1JlZHVjdGlvbkNvc3QoSW5zdHJ1Y3Rpb246OlhvciwgVHlzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKklzUGFpcndpc2VGb3JtPSovZmFsc2UpOwogICAgIGNhc2UgSW50cmluc2ljOjpleHBlcmltZW50YWxfdmVjdG9yX3JlZHVjZV9mYWRkOgotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQgKj4odGhpcyktPmdldEFyaXRobWV0aWNSZWR1Y3Rpb25Db3N0KAotICAgICAgICAgIEluc3RydWN0aW9uOjpGQWRkLCBUeXNbMF0sIC8qSXNQYWlyd2lzZUZvcm09Ki9mYWxzZSk7CisgICAgICByZXR1cm4gQ29uY3JldGVUVEktPmdldEFyaXRobWV0aWNSZWR1Y3Rpb25Db3N0KEluc3RydWN0aW9uOjpGQWRkLCBUeXNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qSXNQYWlyd2lzZUZvcm09Ki9mYWxzZSk7CiAgICAgY2FzZSBJbnRyaW5zaWM6OmV4cGVyaW1lbnRhbF92ZWN0b3JfcmVkdWNlX2ZtdWw6Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCAqPih0aGlzKS0+Z2V0QXJpdGhtZXRpY1JlZHVjdGlvbkNvc3QoCi0gICAgICAgICAgSW5zdHJ1Y3Rpb246OkZNdWwsIFR5c1swXSwgLypJc1BhaXJ3aXNlRm9ybT0qL2ZhbHNlKTsKKyAgICAgIHJldHVybiBDb25jcmV0ZVRUSS0+Z2V0QXJpdGhtZXRpY1JlZHVjdGlvbkNvc3QoSW5zdHJ1Y3Rpb246OkZNdWwsIFR5c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypJc1BhaXJ3aXNlRm9ybT0qL2ZhbHNlKTsKICAgICBjYXNlIEludHJpbnNpYzo6ZXhwZXJpbWVudGFsX3ZlY3Rvcl9yZWR1Y2Vfc21heDoKICAgICBjYXNlIEludHJpbnNpYzo6ZXhwZXJpbWVudGFsX3ZlY3Rvcl9yZWR1Y2Vfc21pbjoKICAgICBjYXNlIEludHJpbnNpYzo6ZXhwZXJpbWVudGFsX3ZlY3Rvcl9yZWR1Y2VfZm1heDoKICAgICBjYXNlIEludHJpbnNpYzo6ZXhwZXJpbWVudGFsX3ZlY3Rvcl9yZWR1Y2VfZm1pbjoKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUICo+KHRoaXMpLT5nZXRNaW5NYXhSZWR1Y3Rpb25Db3N0KAorICAgICAgcmV0dXJuIENvbmNyZXRlVFRJLT5nZXRNaW5NYXhSZWR1Y3Rpb25Db3N0KAogICAgICAgICAgIFR5c1swXSwgQ21wSW5zdDo6bWFrZUNtcFJlc3VsdFR5cGUoVHlzWzBdKSwgLypJc1BhaXJ3aXNlRm9ybT0qL2ZhbHNlLAogICAgICAgICAgIC8qSXNTaWduZWQ9Ki90cnVlKTsKICAgICBjYXNlIEludHJpbnNpYzo6ZXhwZXJpbWVudGFsX3ZlY3Rvcl9yZWR1Y2VfdW1heDoKICAgICBjYXNlIEludHJpbnNpYzo6ZXhwZXJpbWVudGFsX3ZlY3Rvcl9yZWR1Y2VfdW1pbjoKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUICo+KHRoaXMpLT5nZXRNaW5NYXhSZWR1Y3Rpb25Db3N0KAorICAgICAgcmV0dXJuIENvbmNyZXRlVFRJLT5nZXRNaW5NYXhSZWR1Y3Rpb25Db3N0KAogICAgICAgICAgIFR5c1swXSwgQ21wSW5zdDo6bWFrZUNtcFJlc3VsdFR5cGUoVHlzWzBdKSwgLypJc1BhaXJ3aXNlRm9ybT0qL2ZhbHNlLAogICAgICAgICAgIC8qSXNTaWduZWQ9Ki9mYWxzZSk7CisgICAgY2FzZSBJbnRyaW5zaWM6OnNhZGRfc2F0OgorICAgIGNhc2UgSW50cmluc2ljOjpzc3ViX3NhdDogeworICAgICAgVHlwZSAqQ29uZFR5ID0gVHlwZTo6Z2V0SW50MVR5KFJldFR5LT5nZXRDb250ZXh0KCkpOworICAgICAgaWYgKFJldFZGID4gMSkKKyAgICAgICAgQ29uZFR5ID0gVmVjdG9yVHlwZTo6Z2V0KENvbmRUeSwgUmV0VkYpOworCisgICAgICBUeXBlICpPcFR5ID0gU3RydWN0VHlwZTo6Y3JlYXRlKHtSZXRUeSwgQ29uZFR5fSk7CisgICAgICBJbnRyaW5zaWM6OklEIE92ZXJmbG93T3AgPSBJSUQgPT0gSW50cmluc2ljOjpzYWRkX3NhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gSW50cmluc2ljOjpzYWRkX3dpdGhfb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEludHJpbnNpYzo6c3N1Yl93aXRoX292ZXJmbG93OworCisgICAgICAvLyBTYXRNYXggLT4gT3ZlcmZsb3cgJiYgU3VtRGlmZiA8IDAKKyAgICAgIC8vIFNhdE1pbiAtPiBPdmVyZmxvdyAmJiBTdW1EaWZmID49IDAKKyAgICAgIHVuc2lnbmVkIENvc3QgPSAwOworICAgICAgQ29zdCArPSBDb25jcmV0ZVRUSS0+Z2V0SW50cmluc2ljSW5zdHJDb3N0KAorICAgICAgICAgIE92ZXJmbG93T3AsIE9wVHksIHtSZXRUeSwgUmV0VHl9LCBGTUYsIFNjYWxhcml6YXRpb25Db3N0UGFzc2VkKTsKKyAgICAgIENvc3QgKz0gQ29uY3JldGVUVEktPmdldENtcFNlbEluc3RyQ29zdChCaW5hcnlPcGVyYXRvcjo6SUNtcCwgUmV0VHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZFR5LCBudWxscHRyKTsKKyAgICAgIENvc3QgKz0gMiAqIENvbmNyZXRlVFRJLT5nZXRDbXBTZWxJbnN0ckNvc3QoQmluYXJ5T3BlcmF0b3I6OlNlbGVjdCwgUmV0VHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmRUeSwgbnVsbHB0cik7CisgICAgICByZXR1cm4gQ29zdDsKKyAgICB9CisgICAgY2FzZSBJbnRyaW5zaWM6OnVhZGRfc2F0OgorICAgIGNhc2UgSW50cmluc2ljOjp1c3ViX3NhdDogeworICAgICAgVHlwZSAqQ29uZFR5ID0gVHlwZTo6Z2V0SW50MVR5KFJldFR5LT5nZXRDb250ZXh0KCkpOworICAgICAgaWYgKFJldFZGID4gMSkKKyAgICAgICAgQ29uZFR5ID0gVmVjdG9yVHlwZTo6Z2V0KENvbmRUeSwgUmV0VkYpOworCisgICAgICBUeXBlICpPcFR5ID0gU3RydWN0VHlwZTo6Y3JlYXRlKHtSZXRUeSwgQ29uZFR5fSk7CisgICAgICBJbnRyaW5zaWM6OklEIE92ZXJmbG93T3AgPSBJSUQgPT0gSW50cmluc2ljOjp1YWRkX3NhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gSW50cmluc2ljOjp1YWRkX3dpdGhfb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEludHJpbnNpYzo6dXN1Yl93aXRoX292ZXJmbG93OworCisgICAgICB1bnNpZ25lZCBDb3N0ID0gMDsKKyAgICAgIENvc3QgKz0gQ29uY3JldGVUVEktPmdldEludHJpbnNpY0luc3RyQ29zdCgKKyAgICAgICAgICBPdmVyZmxvd09wLCBPcFR5LCB7UmV0VHksIFJldFR5fSwgRk1GLCBTY2FsYXJpemF0aW9uQ29zdFBhc3NlZCk7CisgICAgICBDb3N0ICs9IENvbmNyZXRlVFRJLT5nZXRDbXBTZWxJbnN0ckNvc3QoQmluYXJ5T3BlcmF0b3I6OlNlbGVjdCwgUmV0VHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZFR5LCBudWxscHRyKTsKKyAgICAgIHJldHVybiBDb3N0OworICAgIH0KKyAgICBjYXNlIEludHJpbnNpYzo6c2FkZF93aXRoX292ZXJmbG93OgorICAgIGNhc2UgSW50cmluc2ljOjpzc3ViX3dpdGhfb3ZlcmZsb3c6IHsKKyAgICAgIFR5cGUgKlN1bVR5ID0gUmV0VHktPmdldENvbnRhaW5lZFR5cGUoMCk7CisgICAgICBUeXBlICpPdmVyZmxvd1R5ID0gUmV0VHktPmdldENvbnRhaW5lZFR5cGUoMSk7CisgICAgICB1bnNpZ25lZCBPcGNvZGUgPSBJSUQgPT0gSW50cmluc2ljOjpzYWRkX3dpdGhfb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IEJpbmFyeU9wZXJhdG9yOjpBZGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEJpbmFyeU9wZXJhdG9yOjpTdWI7CisKKyAgICAgIC8vICAgTEhTU2lnbiAtPiBMSFMgPj0gMAorICAgICAgLy8gICBSSFNTaWduIC0+IFJIUyA+PSAwCisgICAgICAvLyAgIFN1bVNpZ24gLT4gU3VtID49IDAKKyAgICAgIC8vCisgICAgICAvLyAgIEFkZDoKKyAgICAgIC8vICAgT3ZlcmZsb3cgLT4gKExIU1NpZ24gPT0gUkhTU2lnbikgJiYgKExIU1NpZ24gIT0gU3VtU2lnbikKKyAgICAgIC8vICAgU3ViOgorICAgICAgLy8gICBPdmVyZmxvdyAtPiAoTEhTU2lnbiAhPSBSSFNTaWduKSAmJiAoTEhTU2lnbiAhPSBTdW1TaWduKQorICAgICAgdW5zaWduZWQgQ29zdCA9IDA7CisgICAgICBDb3N0ICs9IENvbmNyZXRlVFRJLT5nZXRBcml0aG1ldGljSW5zdHJDb3N0KE9wY29kZSwgU3VtVHkpOworICAgICAgQ29zdCArPSAzICogQ29uY3JldGVUVEktPmdldENtcFNlbEluc3RyQ29zdChCaW5hcnlPcGVyYXRvcjo6SUNtcCwgU3VtVHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE92ZXJmbG93VHksIG51bGxwdHIpOworICAgICAgQ29zdCArPSAyICogQ29uY3JldGVUVEktPmdldENtcFNlbEluc3RyQ29zdCgKKyAgICAgICAgICAgICAgICAgICAgICBCaW5hcnlPcGVyYXRvcjo6SUNtcCwgT3ZlcmZsb3dUeSwgT3ZlcmZsb3dUeSwgbnVsbHB0cik7CisgICAgICBDb3N0ICs9CisgICAgICAgICAgQ29uY3JldGVUVEktPmdldEFyaXRobWV0aWNJbnN0ckNvc3QoQmluYXJ5T3BlcmF0b3I6OkFuZCwgT3ZlcmZsb3dUeSk7CisgICAgICByZXR1cm4gQ29zdDsKKyAgICB9CisgICAgY2FzZSBJbnRyaW5zaWM6OnVhZGRfd2l0aF9vdmVyZmxvdzoKKyAgICBjYXNlIEludHJpbnNpYzo6dXN1Yl93aXRoX292ZXJmbG93OiB7CisgICAgICBUeXBlICpTdW1UeSA9IFJldFR5LT5nZXRDb250YWluZWRUeXBlKDApOworICAgICAgVHlwZSAqT3ZlcmZsb3dUeSA9IFJldFR5LT5nZXRDb250YWluZWRUeXBlKDEpOworICAgICAgdW5zaWduZWQgT3Bjb2RlID0gSUlEID09IEludHJpbnNpYzo6dWFkZF93aXRoX292ZXJmbG93CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBCaW5hcnlPcGVyYXRvcjo6QWRkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBCaW5hcnlPcGVyYXRvcjo6U3ViOworCisgICAgICB1bnNpZ25lZCBDb3N0ID0gMDsKKyAgICAgIENvc3QgKz0gQ29uY3JldGVUVEktPmdldEFyaXRobWV0aWNJbnN0ckNvc3QoT3Bjb2RlLCBTdW1UeSk7CisgICAgICBDb3N0ICs9IENvbmNyZXRlVFRJLT5nZXRDbXBTZWxJbnN0ckNvc3QoQmluYXJ5T3BlcmF0b3I6OklDbXAsIFN1bVR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE92ZXJmbG93VHksIG51bGxwdHIpOworICAgICAgcmV0dXJuIENvc3Q7CisgICAgfQogICAgIGNhc2UgSW50cmluc2ljOjpjdHBvcDoKICAgICAgIElTRHMucHVzaF9iYWNrKElTRDo6Q1RQT1ApOwogICAgICAgLy8gSW4gY2FzZSBvZiBsZWdhbGl6YXRpb24gdXNlIFRDQ19FeHBlbnNpdmUuIFRoaXMgaXMgY2hlYXBlciB0aGFuIGEKQEAgLTExNjMsMTcgKzEzODYsMTYgQEAKICAgICBpZiAoTWluTGVnYWxDb3N0SSAhPSBMZWdhbENvc3QuZW5kKCkpCiAgICAgICByZXR1cm4gKk1pbkxlZ2FsQ29zdEk7CiAKLSAgICBhdXRvIE1pbkN1c3RvbUNvc3RJID0gc3RkOjptaW5fZWxlbWVudChDdXN0b21Db3N0LmJlZ2luKCksIEN1c3RvbUNvc3QuZW5kKCkpOworICAgIGF1dG8gTWluQ3VzdG9tQ29zdEkgPQorICAgICAgICBzdGQ6Om1pbl9lbGVtZW50KEN1c3RvbUNvc3QuYmVnaW4oKSwgQ3VzdG9tQ29zdC5lbmQoKSk7CiAgICAgaWYgKE1pbkN1c3RvbUNvc3RJICE9IEN1c3RvbUNvc3QuZW5kKCkpCiAgICAgICByZXR1cm4gKk1pbkN1c3RvbUNvc3RJOwogCiAgICAgLy8gSWYgd2UgY2FuJ3QgbG93ZXIgZm11bGFkZCBpbnRvIGFuIEZNQSBlc3RpbWF0ZSB0aGUgY29zdCBhcyBhIGZsb2F0aW5nCiAgICAgLy8gcG9pbnQgbXVsIGZvbGxvd2VkIGJ5IGFuIGFkZC4KICAgICBpZiAoSUlEID09IEludHJpbnNpYzo6Zm11bGFkZCkKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUICo+KHRoaXMpCi0gICAgICAgICAgICAgICAgIC0+Z2V0QXJpdGhtZXRpY0luc3RyQ29zdChCaW5hcnlPcGVyYXRvcjo6Rk11bCwgUmV0VHkpICsKLSAgICAgICAgICAgICBzdGF0aWNfY2FzdDxUICo+KHRoaXMpCi0gICAgICAgICAgICAgICAgIC0+Z2V0QXJpdGhtZXRpY0luc3RyQ29zdChCaW5hcnlPcGVyYXRvcjo6RkFkZCwgUmV0VHkpOworICAgICAgcmV0dXJuIENvbmNyZXRlVFRJLT5nZXRBcml0aG1ldGljSW5zdHJDb3N0KEJpbmFyeU9wZXJhdG9yOjpGTXVsLCBSZXRUeSkgKworICAgICAgICAgICAgIENvbmNyZXRlVFRJLT5nZXRBcml0aG1ldGljSW5zdHJDb3N0KEJpbmFyeU9wZXJhdG9yOjpGQWRkLCBSZXRUeSk7CiAKICAgICAvLyBFbHNlLCBhc3N1bWUgdGhhdCB3ZSBuZWVkIHRvIHNjYWxhcml6ZSB0aGlzIGludHJpbnNpYy4gRm9yIG1hdGggYnVpbHRpbnMKICAgICAvLyB0aGlzIHdpbGwgZW1pdCBhIGNvc3RseSBsaWJjYWxsLCBhZGRpbmcgY2FsbCBvdmVyaGVhZCBhbmQgc3BpbGxzLiBNYWtlIGl0CkBAIC0xMTkxLDcgKzE0MTMsNyBAQAogICAgICAgICAgIFR5ID0gVHktPmdldFNjYWxhclR5cGUoKTsKICAgICAgICAgU2NhbGFyVHlzLnB1c2hfYmFjayhUeSk7CiAgICAgICB9Ci0gICAgICB1bnNpZ25lZCBTY2FsYXJDb3N0ID0gc3RhdGljX2Nhc3Q8VCAqPih0aGlzKS0+Z2V0SW50cmluc2ljSW5zdHJDb3N0KAorICAgICAgdW5zaWduZWQgU2NhbGFyQ29zdCA9IENvbmNyZXRlVFRJLT5nZXRJbnRyaW5zaWNJbnN0ckNvc3QoCiAgICAgICAgICAgSUlELCBSZXRUeS0+Z2V0U2NhbGFyVHlwZSgpLCBTY2FsYXJUeXMsIEZNRik7CiAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBpZSA9IFR5cy5zaXplKCk7IGkgIT0gaWU7ICsraSkgewogICAgICAgICBpZiAoVHlzW2ldLT5pc1ZlY3RvclR5KCkpIHsKQEAgLTEyODQsMjQgKzE1MDYsMzYgQEAKICAgICAgICAgTFQuc2Vjb25kLmlzVmVjdG9yKCkgPyBMVC5zZWNvbmQuZ2V0VmVjdG9yTnVtRWxlbWVudHMoKSA6IDE7CiAgICAgd2hpbGUgKE51bVZlY0VsdHMgPiBNVlRMZW4pIHsKICAgICAgIE51bVZlY0VsdHMgLz0gMjsKKyAgICAgIFR5cGUgKlN1YlR5ID0gVmVjdG9yVHlwZTo6Z2V0KFNjYWxhclR5LCBOdW1WZWNFbHRzKTsKICAgICAgIC8vIEFzc3VtZSB0aGUgcGFpcndpc2Ugc2h1ZmZsZXMgYWRkIGEgY29zdC4KICAgICAgIFNodWZmbGVDb3N0ICs9IChJc1BhaXJ3aXNlICsgMSkgKgogICAgICAgICAgICAgICAgICAgICAgQ29uY3JldGVUVEktPmdldFNodWZmbGVDb3N0KFRUSTo6U0tfRXh0cmFjdFN1YnZlY3RvciwgVHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtVmVjRWx0cywgVHkpOwotICAgICAgQXJpdGhDb3N0ICs9IENvbmNyZXRlVFRJLT5nZXRBcml0aG1ldGljSW5zdHJDb3N0KE9wY29kZSwgVHkpOwotICAgICAgVHkgPSBWZWN0b3JUeXBlOjpnZXQoU2NhbGFyVHksIE51bVZlY0VsdHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bVZlY0VsdHMsIFN1YlR5KTsKKyAgICAgIEFyaXRoQ29zdCArPSBDb25jcmV0ZVRUSS0+Z2V0QXJpdGhtZXRpY0luc3RyQ29zdChPcGNvZGUsIFN1YlR5KTsKKyAgICAgIFR5ID0gU3ViVHk7CiAgICAgICArK0xvbmdWZWN0b3JDb3VudDsKICAgICB9CisKKyAgICBOdW1SZWR1eExldmVscyAtPSBMb25nVmVjdG9yQ291bnQ7CisKICAgICAvLyBUaGUgbWluaW1hbCBsZW5ndGggb2YgdGhlIHZlY3RvciBpcyBsaW1pdGVkIGJ5IHRoZSByZWFsIGxlbmd0aCBvZiB2ZWN0b3IKICAgICAvLyBvcGVyYXRpb25zIHBlcmZvcm1lZCBvbiB0aGUgY3VycmVudCBwbGF0Zm9ybS4gVGhhdCdzIHdoeSBzZXZlcmFsIGZpbmFsCiAgICAgLy8gcmVkdWN0aW9uIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZCBvbiB0aGUgdmVjdG9ycyB3aXRoIHRoZSBzYW1lCiAgICAgLy8gYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBsZW5ndGguCi0gICAgU2h1ZmZsZUNvc3QgKz0gKE51bVJlZHV4TGV2ZWxzIC0gTG9uZ1ZlY3RvckNvdW50KSAqIChJc1BhaXJ3aXNlICsgMSkgKgotICAgICAgICAgICAgICAgICAgIENvbmNyZXRlVFRJLT5nZXRTaHVmZmxlQ29zdChUVEk6OlNLX0V4dHJhY3RTdWJ2ZWN0b3IsIFR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1WZWNFbHRzLCBUeSk7Ci0gICAgQXJpdGhDb3N0ICs9IChOdW1SZWR1eExldmVscyAtIExvbmdWZWN0b3JDb3VudCkgKgorCisgICAgLy8gTm9uIHBhaXJ3aXNlIHJlZHVjdGlvbnMgbmVlZCBvbmUgc2h1ZmZsZSBwZXIgcmVkdWN0aW9uIGxldmVsLiBQYWlyd2lzZQorICAgIC8vIHJlZHVjdGlvbnMgbmVlZCB0d28gc2h1ZmZsZXMgb24gZXZlcnkgbGV2ZWwsIGJ1dCB0aGUgbGFzdCBvbmUuIE9uIHRoYXQKKyAgICAvLyBsZXZlbCBvbmUgb2YgdGhlIHNodWZmbGVzIGlzIDwwLCB1LCB1LCAuLi4+IHdoaWNoIGlzIGlkZW50aXR5LgorICAgIHVuc2lnbmVkIE51bVNodWZmbGVzID0gTnVtUmVkdXhMZXZlbHM7CisgICAgaWYgKElzUGFpcndpc2UgJiYgTnVtUmVkdXhMZXZlbHMgPj0gMSkKKyAgICAgIE51bVNodWZmbGVzICs9IE51bVJlZHV4TGV2ZWxzIC0gMTsKKyAgICBTaHVmZmxlQ29zdCArPSBOdW1TaHVmZmxlcyAqCisgICAgICAgICAgICAgICAgICAgQ29uY3JldGVUVEktPmdldFNodWZmbGVDb3N0KFRUSTo6U0tfUGVybXV0ZVNpbmdsZVNyYywgVHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFR5KTsKKyAgICBBcml0aENvc3QgKz0gTnVtUmVkdXhMZXZlbHMgKgogICAgICAgICAgICAgICAgICBDb25jcmV0ZVRUSS0+Z2V0QXJpdGhtZXRpY0luc3RyQ29zdChPcGNvZGUsIFR5KTsKLSAgICByZXR1cm4gU2h1ZmZsZUNvc3QgKyBBcml0aENvc3QgKyBnZXRTY2FsYXJpemF0aW9uT3ZlcmhlYWQoVHksIGZhbHNlLCB0cnVlKTsKKyAgICByZXR1cm4gU2h1ZmZsZUNvc3QgKyBBcml0aENvc3QgKworICAgICAgICAgICBDb25jcmV0ZVRUSS0+Z2V0VmVjdG9ySW5zdHJDb3N0KEluc3RydWN0aW9uOjpFeHRyYWN0RWxlbWVudCwgVHksIDApOwogICB9CiAKICAgLy8vIFRyeSB0byBjYWxjdWxhdGUgb3AgY29zdHMgZm9yIG1pbi9tYXggcmVkdWN0aW9uIG9wZXJhdGlvbnMuCkBAIC0xMzMxLDM3ICsxNTY1LDQ2IEBACiAgICAgICAgIExULnNlY29uZC5pc1ZlY3RvcigpID8gTFQuc2Vjb25kLmdldFZlY3Rvck51bUVsZW1lbnRzKCkgOiAxOwogICAgIHdoaWxlIChOdW1WZWNFbHRzID4gTVZUTGVuKSB7CiAgICAgICBOdW1WZWNFbHRzIC89IDI7CisgICAgICBUeXBlICpTdWJUeSA9IFZlY3RvclR5cGU6OmdldChTY2FsYXJUeSwgTnVtVmVjRWx0cyk7CisgICAgICBDb25kVHkgPSBWZWN0b3JUeXBlOjpnZXQoU2NhbGFyQ29uZFR5LCBOdW1WZWNFbHRzKTsKKwogICAgICAgLy8gQXNzdW1lIHRoZSBwYWlyd2lzZSBzaHVmZmxlcyBhZGQgYSBjb3N0LgogICAgICAgU2h1ZmZsZUNvc3QgKz0gKElzUGFpcndpc2UgKyAxKSAqCiAgICAgICAgICAgICAgICAgICAgICBDb25jcmV0ZVRUSS0+Z2V0U2h1ZmZsZUNvc3QoVFRJOjpTS19FeHRyYWN0U3VidmVjdG9yLCBUeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1WZWNFbHRzLCBUeSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtVmVjRWx0cywgU3ViVHkpOwogICAgICAgTWluTWF4Q29zdCArPQotICAgICAgICAgIENvbmNyZXRlVFRJLT5nZXRDbXBTZWxJbnN0ckNvc3QoQ21wT3Bjb2RlLCBUeSwgQ29uZFR5LCBudWxscHRyKSArCi0gICAgICAgICAgQ29uY3JldGVUVEktPmdldENtcFNlbEluc3RyQ29zdChJbnN0cnVjdGlvbjo6U2VsZWN0LCBUeSwgQ29uZFR5LAorICAgICAgICAgIENvbmNyZXRlVFRJLT5nZXRDbXBTZWxJbnN0ckNvc3QoQ21wT3Bjb2RlLCBTdWJUeSwgQ29uZFR5LCBudWxscHRyKSArCisgICAgICAgICAgQ29uY3JldGVUVEktPmdldENtcFNlbEluc3RyQ29zdChJbnN0cnVjdGlvbjo6U2VsZWN0LCBTdWJUeSwgQ29uZFR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICBUeSA9IFZlY3RvclR5cGU6OmdldChTY2FsYXJUeSwgTnVtVmVjRWx0cyk7Ci0gICAgICBDb25kVHkgPSBWZWN0b3JUeXBlOjpnZXQoU2NhbGFyQ29uZFR5LCBOdW1WZWNFbHRzKTsKKyAgICAgIFR5ID0gU3ViVHk7CiAgICAgICArK0xvbmdWZWN0b3JDb3VudDsKICAgICB9CisKKyAgICBOdW1SZWR1eExldmVscyAtPSBMb25nVmVjdG9yQ291bnQ7CisKICAgICAvLyBUaGUgbWluaW1hbCBsZW5ndGggb2YgdGhlIHZlY3RvciBpcyBsaW1pdGVkIGJ5IHRoZSByZWFsIGxlbmd0aCBvZiB2ZWN0b3IKICAgICAvLyBvcGVyYXRpb25zIHBlcmZvcm1lZCBvbiB0aGUgY3VycmVudCBwbGF0Zm9ybS4gVGhhdCdzIHdoeSBzZXZlcmFsIGZpbmFsCiAgICAgLy8gcmVkdWN0aW9uIG9wZXJ0aW9ucyBhcmUgcGVyZm9tZWQgb24gdGhlIHZlY3RvcnMgd2l0aCB0aGUgc2FtZQogICAgIC8vIGFyY2hpdGVjdHVyZS1kZXBlbmRlbnQgbGVuZ3RoLgotICAgIFNodWZmbGVDb3N0ICs9IChOdW1SZWR1eExldmVscyAtIExvbmdWZWN0b3JDb3VudCkgKiAoSXNQYWlyd2lzZSArIDEpICoKLSAgICAgICAgICAgICAgICAgICBDb25jcmV0ZVRUSS0+Z2V0U2h1ZmZsZUNvc3QoVFRJOjpTS19FeHRyYWN0U3VidmVjdG9yLCBUeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtVmVjRWx0cywgVHkpOworCisgICAgLy8gTm9uIHBhaXJ3aXNlIHJlZHVjdGlvbnMgbmVlZCBvbmUgc2h1ZmZsZSBwZXIgcmVkdWN0aW9uIGxldmVsLiBQYWlyd2lzZQorICAgIC8vIHJlZHVjdGlvbnMgbmVlZCB0d28gc2h1ZmZsZXMgb24gZXZlcnkgbGV2ZWwsIGJ1dCB0aGUgbGFzdCBvbmUuIE9uIHRoYXQKKyAgICAvLyBsZXZlbCBvbmUgb2YgdGhlIHNodWZmbGVzIGlzIDwwLCB1LCB1LCAuLi4+IHdoaWNoIGlzIGlkZW50aXR5LgorICAgIHVuc2lnbmVkIE51bVNodWZmbGVzID0gTnVtUmVkdXhMZXZlbHM7CisgICAgaWYgKElzUGFpcndpc2UgJiYgTnVtUmVkdXhMZXZlbHMgPj0gMSkKKyAgICAgIE51bVNodWZmbGVzICs9IE51bVJlZHV4TGV2ZWxzIC0gMTsKKyAgICBTaHVmZmxlQ29zdCArPSBOdW1TaHVmZmxlcyAqCisgICAgICAgICAgICAgICAgICAgQ29uY3JldGVUVEktPmdldFNodWZmbGVDb3N0KFRUSTo6U0tfUGVybXV0ZVNpbmdsZVNyYywgVHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFR5KTsKICAgICBNaW5NYXhDb3N0ICs9Ci0gICAgICAgIChOdW1SZWR1eExldmVscyAtIExvbmdWZWN0b3JDb3VudCkgKgorICAgICAgICBOdW1SZWR1eExldmVscyAqCiAgICAgICAgIChDb25jcmV0ZVRUSS0+Z2V0Q21wU2VsSW5zdHJDb3N0KENtcE9wY29kZSwgVHksIENvbmRUeSwgbnVsbHB0cikgKwogICAgICAgICAgQ29uY3JldGVUVEktPmdldENtcFNlbEluc3RyQ29zdChJbnN0cnVjdGlvbjo6U2VsZWN0LCBUeSwgQ29uZFR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKSk7Ci0gICAgLy8gTmVlZCAzIGV4dHJhY3RlbGVtZW50IGluc3RydWN0aW9ucyBmb3Igc2NhbGFyaXphdGlvbiArIGFuIGFkZGl0aW9uYWwKLSAgICAvLyBzY2FsYXIgc2VsZWN0IGluc3RydWN0aW9uLgorICAgIC8vIFRoZSBsYXN0IG1pbi9tYXggc2hvdWxkIGJlIGluIHZlY3RvciByZWdpc3RlcnMgYW5kIHdlIGNvdW50ZWQgaXQgYWJvdmUuCisgICAgLy8gU28ganVzdCBuZWVkIGEgc2luZ2xlIGV4dHJhY3RlbGVtZW50LgogICAgIHJldHVybiBTaHVmZmxlQ29zdCArIE1pbk1heENvc3QgKwotICAgICAgICAgICAzICogZ2V0U2NhbGFyaXphdGlvbk92ZXJoZWFkKFR5LCAvKkluc2VydD0qL2ZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qRXh0cmFjdD0qL3RydWUpICsKLSAgICAgICAgICAgQ29uY3JldGVUVEktPmdldENtcFNlbEluc3RyQ29zdChJbnN0cnVjdGlvbjo6U2VsZWN0LCBTY2FsYXJUeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2FsYXJDb25kVHksIG51bGxwdHIpOworICAgICAgICAgICBDb25jcmV0ZVRUSS0+Z2V0VmVjdG9ySW5zdHJDb3N0KEluc3RydWN0aW9uOjpFeHRyYWN0RWxlbWVudCwgVHksIDApOwogICB9CiAKICAgdW5zaWduZWQgZ2V0VmVjdG9yU3BsaXRDb3N0KCkgeyByZXR1cm4gMTsgfQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0J1aWx0aW5HQ3MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9CdWlsdGluR0NzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ0MTgzZAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9CdWlsdGluR0NzLmgKQEAgLTAsMCArMSwzMiBAQAorLy89PT0tLSBCdWlsdGluR0NzLmggLSBHYXJiYWdlIGNvbGxlY3RvciBsaW5rYWdlIGhhY2tzIC0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCisvLyBUaGlzIGZpbGUgY29udGFpbnMgaGFjayBmdW5jdGlvbnMgdG8gZm9yY2UgbGlua2luZyBpbiB0aGUgYnVpbHRpbiBHQworLy8gY29tcG9uZW50cy4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fQ09ERUdFTl9HQ1NfSAorI2RlZmluZSBMTFZNX0NPREVHRU5fR0NTX0gKKworbmFtZXNwYWNlIGxsdm0geworCisvLy8gRklYTUU6IENvbGxlY3RvciBpbnN0YW5jZXMgYXJlIG5vdCB1c2VmdWwgb24gdGhlaXIgb3duLiBUaGVzZSBubyBsb25nZXIKKy8vLyAgICAgICAgc2VydmUgYW55IHB1cnBvc2UgZXhjZXB0IHRvIGxpbmsgaW4gdGhlIHBsdWdpbnMuCisKKy8vLyBFbnN1cmUgdGhlIGRlZmluaXRpb24gb2YgdGhlIGJ1aWx0aW4gR0NzIGdldHMgbGlua2VkIGluCit2b2lkIGxpbmtBbGxCdWlsdGluR0NzKCk7CisKKy8vLyBDcmVhdGVzIGFuIG9jYW1sLWNvbXBhdGlibGUgbWV0YWRhdGEgcHJpbnRlci4KK3ZvaWQgbGlua09jYW1sR0NQcmludGVyKCk7CisKKy8vLyBDcmVhdGVzIGFuIGVybGFuZy1jb21wYXRpYmxlIG1ldGFkYXRhIHByaW50ZXIuCit2b2lkIGxpbmtFcmxhbmdHQ1ByaW50ZXIoKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vQ2FsY1NwaWxsV2VpZ2h0cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0NhbGNTcGlsbFdlaWdodHMuaAppbmRleCBmODU3NjdmLi45YjhiNzMyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vQ2FsY1NwaWxsV2VpZ2h0cy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9DYWxjU3BpbGxXZWlnaHRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGliL0NvZGVHZW4vQ2FsY1NwaWxsV2VpZ2h0cy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vQ2FsbGluZ0NvbnZMb3dlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0NhbGxpbmdDb252TG93ZXIuaAppbmRleCBlZmNmODBiLi43OGFlYmJlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vQ2FsbGluZ0NvbnZMb3dlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9DYWxsaW5nQ29udkxvd2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9DYWxsaW5nQ29udkxvd2VyLmggLSBDYWxsaW5nIENvbnZlbnRpb25zIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9Db21tYW5kRmxhZ3MuaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0NvbW1hbmRGbGFncy5pbmMKaW5kZXggNjUzNWUwNi4uNWI5NTY0YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0NvbW1hbmRGbGFncy5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0NvbW1hbmRGbGFncy5pbmMKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIENvbW1hbmRGbGFncy5oIC0gQ29tbWFuZCBMaW5lIEZsYWdzIEludGVyZmFjZSAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTExNCwxMCArMTEzLDE2IEBACiAgICAgICAgICAgICAgICBjbEVudW1WYWxOKFRhcmdldE1hY2hpbmU6OkNHRlRfTnVsbCwgIm51bGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1pdCBub3RoaW5nLCBmb3IgcGVyZm9ybWFuY2UgdGVzdGluZyIpKSk7CiAKLXN0YXRpYyBjbDo6b3B0PGJvb2w+Ci0gICAgRGlzYWJsZUZQRWxpbSgiZGlzYWJsZS1mcC1lbGltIiwKLSAgICAgICAgICAgICAgICAgIGNsOjpkZXNjKCJEaXNhYmxlIGZyYW1lIHBvaW50ZXIgZWxpbWluYXRpb24gb3B0aW1pemF0aW9uIiksCi0gICAgICAgICAgICAgICAgICBjbDo6aW5pdChmYWxzZSkpOworc3RhdGljIGNsOjpvcHQ8bGx2bTo6RnJhbWVQb2ludGVyOjpGUD4gRnJhbWVQb2ludGVyVXNhZ2UoCisgICAgImZyYW1lLXBvaW50ZXIiLCBjbDo6ZGVzYygiU3BlY2lmeSBmcmFtZSBwb2ludGVyIGVsaW1pbmF0aW9uIG9wdGltaXphdGlvbiIpLAorICAgIGNsOjppbml0KGxsdm06OkZyYW1lUG9pbnRlcjo6Tm9uZSksCisgICAgY2w6OnZhbHVlcygKKyAgICAgICAgY2xFbnVtVmFsTihsbHZtOjpGcmFtZVBvaW50ZXI6OkFsbCwgImFsbCIsCisgICAgICAgICAgICAgICAgICAgIkRpc2FibGUgZnJhbWUgcG9pbnRlciBlbGltaW5hdGlvbiIpLAorICAgICAgICBjbEVudW1WYWxOKGxsdm06OkZyYW1lUG9pbnRlcjo6Tm9uTGVhZiwgIm5vbi1sZWFmIiwKKyAgICAgICAgICAgICAgICAgICAiRGlzYWJsZSBmcmFtZSBwb2ludGVyIGVsaW1pbmF0aW9uIGZvciBub24tbGVhZiBmcmFtZSIpLAorICAgICAgICBjbEVudW1WYWxOKGxsdm06OkZyYW1lUG9pbnRlcjo6Tm9uZSwgIm5vbmUiLAorICAgICAgICAgICAgICAgICAgICJFbmFibGUgZnJhbWUgcG9pbnRlciBlbGltaW5hdGlvbiIpKSk7CiAKIHN0YXRpYyBjbDo6b3B0PGJvb2w+IEVuYWJsZVVuc2FmZUZQTWF0aCgKICAgICAiZW5hYmxlLXVuc2FmZS1mcC1tYXRoIiwKQEAgLTM2OCw5ICszNzMsMTQgQEAKICAgICAgIE5ld0F0dHJzLmFkZEF0dHJpYnV0ZSgidGFyZ2V0LWNwdSIsIENQVSk7CiAgICAgaWYgKCFGZWF0dXJlcy5lbXB0eSgpKQogICAgICAgTmV3QXR0cnMuYWRkQXR0cmlidXRlKCJ0YXJnZXQtZmVhdHVyZXMiLCBGZWF0dXJlcyk7Ci0gICAgaWYgKERpc2FibGVGUEVsaW0uZ2V0TnVtT2NjdXJyZW5jZXMoKSA+IDApCi0gICAgICBOZXdBdHRycy5hZGRBdHRyaWJ1dGUoIm5vLWZyYW1lLXBvaW50ZXItZWxpbSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZUZQRWxpbSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIGlmIChGcmFtZVBvaW50ZXJVc2FnZS5nZXROdW1PY2N1cnJlbmNlcygpID4gMCkgeworICAgICAgaWYgKEZyYW1lUG9pbnRlclVzYWdlID09IGxsdm06OkZyYW1lUG9pbnRlcjo6QWxsKQorICAgICAgICBOZXdBdHRycy5hZGRBdHRyaWJ1dGUoImZyYW1lLXBvaW50ZXIiLCAiYWxsIik7CisgICAgICBlbHNlIGlmIChGcmFtZVBvaW50ZXJVc2FnZSA9PSBsbHZtOjpGcmFtZVBvaW50ZXI6Ok5vbkxlYWYpCisgICAgICAgIE5ld0F0dHJzLmFkZEF0dHJpYnV0ZSgiZnJhbWUtcG9pbnRlciIsICJub24tbGVhZiIpOworICAgICAgZWxzZSBpZiAoRnJhbWVQb2ludGVyVXNhZ2UgPT0gbGx2bTo6RnJhbWVQb2ludGVyOjpOb25lKQorICAgICAgICBOZXdBdHRycy5hZGRBdHRyaWJ1dGUoImZyYW1lLXBvaW50ZXIiLCAibm9uZSIpOworICAgIH0KICAgICBpZiAoRGlzYWJsZVRhaWxDYWxscy5nZXROdW1PY2N1cnJlbmNlcygpID4gMCkKICAgICAgIE5ld0F0dHJzLmFkZEF0dHJpYnV0ZSgiZGlzYWJsZS10YWlsLWNhbGxzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b1N0cmluZ1JlZihEaXNhYmxlVGFpbENhbGxzKSk7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vQ29zdFRhYmxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vQ29zdFRhYmxlLmgKaW5kZXggNDhhZDc2OS4uNTJmM2JmYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0Nvc3RUYWJsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9Db3N0VGFibGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gQ29zdFRhYmxlLmggLSBJbnN0cnVjdGlvbiBDb3N0IFRhYmxlIGhhbmRsaW5nIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9EQUdDb21iaW5lLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vREFHQ29tYmluZS5oCmluZGV4IDhiNTkxOTAuLjk0NDE4NzMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9EQUdDb21iaW5lLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0RBR0NvbWJpbmUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9Db2RlR2VuL0RBR0NvbWJpbmUuaCAgLS0tLS0tLSBTZWxlY3Rpb25EQUcgTm9kZXMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0RGQVBhY2tldGl6ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9ERkFQYWNrZXRpemVyLmgKaW5kZXggZDNhYWJlMi4uY2Y1OGVlMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0RGQVBhY2tldGl6ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vREZBUGFja2V0aXplci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ29kZUdlbi9ERkFQYWNrZXRpemVyLmggLSBERkEgUGFja2V0aXplciBmb3IgVkxJVyAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIGRldGVybWluaXN0aWMgZmluaXRlIGF1dG9tYXRvbiAoREZBKSBiYXNlZApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0RJRS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0RJRS5oCmluZGV4IDdkNDg2YjEuLjllNzE2N2YgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9ESUUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vRElFLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGliL0NvZGVHZW4vRElFLmggLSBEV0FSRiBJbmZvIEVudHJpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTgwMCw3ICs3OTksNyBAQAogICBjb25zdCB1aW50MTZfdCBWZXJzaW9uOyAvLy8gVGhlIER3YXJmIHZlcnNpb24gbnVtYmVyIGZvciB0aGlzIHVuaXQuCiAgIGNvbnN0IHVpbnQ4X3QgQWRkclNpemU7IC8vLyBUaGUgc2l6ZSBpbiBieXRlcyBvZiBhbiBhZGRyZXNzIGZvciB0aGlzIHVuaXQuCiBwcm90ZWN0ZWQ6Ci0gIH5ESUVVbml0KCkgPSBkZWZhdWx0OworICB2aXJ0dWFsIH5ESUVVbml0KCkgPSBkZWZhdWx0OwogCiBwdWJsaWM6CiAgIERJRVVuaXQodWludDE2X3QgVmVyc2lvbiwgdWludDhfdCBBZGRyU2l6ZSwgZHdhcmY6OlRhZyBVbml0VGFnKTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9ESUVWYWx1ZS5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vRElFVmFsdWUuZGVmCmluZGV4IGEzZmNlOWIuLmM2YzRjOWEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9ESUVWYWx1ZS5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0RJRVZhbHVlLmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vRElFVmFsdWUuZGVmIC0gRElFVmFsdWUgdHlwZXMgLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0RiZ0VudGl0eUhpc3RvcnlDYWxjdWxhdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vRGJnRW50aXR5SGlzdG9yeUNhbGN1bGF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTM3NGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0RiZ0VudGl0eUhpc3RvcnlDYWxjdWxhdG9yLmgKQEAgLTAsMCArMSw4NiBAQAorLy89PT0tIGxsdm0vQ29kZUdlbi9EYmdFbnRpdHlIaXN0b3J5Q2FsY3VsYXRvci5oIC0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0NPREVHRU5fREJHVkFMVUVISVNUT1JZQ0FMQ1VMQVRPUl9ICisjZGVmaW5lIExMVk1fQ09ERUdFTl9EQkdWQUxVRUhJU1RPUllDQUxDVUxBVE9SX0gKKworI2luY2x1ZGUgImxsdm0vQURUL01hcFZlY3Rvci5oIgorI2luY2x1ZGUgImxsdm0vQURUL1NtYWxsVmVjdG9yLmgiCisjaW5jbHVkZSAibGx2bS9JUi9EZWJ1Z0luZm9NZXRhZGF0YS5oIgorI2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFjZSBsbHZtIHsKKworY2xhc3MgRElMb2NhbFZhcmlhYmxlOworY2xhc3MgTWFjaGluZUZ1bmN0aW9uOworY2xhc3MgTWFjaGluZUluc3RyOworY2xhc3MgVGFyZ2V0UmVnaXN0ZXJJbmZvOworCisvLyBGb3IgZWFjaCB1c2VyIHZhcmlhYmxlLCBrZWVwIGEgbGlzdCBvZiBpbnN0cnVjdGlvbiByYW5nZXMgd2hlcmUgdGhpcyB2YXJpYWJsZQorLy8gaXMgYWNjZXNzaWJsZS4gVGhlIHZhcmlhYmxlcyBhcmUgbGlzdGVkIGluIG9yZGVyIG9mIGFwcGVhcmFuY2UuCitjbGFzcyBEYmdWYWx1ZUhpc3RvcnlNYXAgeworICAvLyBFYWNoIGluc3RydWN0aW9uIHJhbmdlIHN0YXJ0cyB3aXRoIGEgREJHX1ZBTFVFIGluc3RydWN0aW9uLCBzcGVjaWZ5aW5nIHRoZQorICAvLyBsb2NhdGlvbiBvZiBhIHZhcmlhYmxlLCB3aGljaCBpcyBhc3N1bWVkIHRvIGJlIHZhbGlkIHVudGlsIHRoZSBlbmQgb2YgdGhlCisgIC8vIHJhbmdlLiBJZiBlbmQgaXMgbm90IHNwZWNpZmllZCwgbG9jYXRpb24gaXMgdmFsaWQgdW50aWwgdGhlIHN0YXJ0CisgIC8vIGluc3RydWN0aW9uIG9mIHRoZSBuZXh0IGluc3RydWN0aW9uIHJhbmdlLCBvciB1bnRpbCB0aGUgZW5kIG9mIHRoZQorICAvLyBmdW5jdGlvbi4KK3B1YmxpYzoKKyAgdXNpbmcgSW5zdHJSYW5nZSA9IHN0ZDo6cGFpcjxjb25zdCBNYWNoaW5lSW5zdHIgKiwgY29uc3QgTWFjaGluZUluc3RyICo+OworICB1c2luZyBJbnN0clJhbmdlcyA9IFNtYWxsVmVjdG9yPEluc3RyUmFuZ2UsIDQ+OworICB1c2luZyBJbmxpbmVkRW50aXR5ID0gc3RkOjpwYWlyPGNvbnN0IERJTm9kZSAqLCBjb25zdCBESUxvY2F0aW9uICo+OworICB1c2luZyBJbnN0clJhbmdlc01hcCA9IE1hcFZlY3RvcjxJbmxpbmVkRW50aXR5LCBJbnN0clJhbmdlcz47CisKK3ByaXZhdGU6CisgIEluc3RyUmFuZ2VzTWFwIFZhckluc3RyUmFuZ2VzOworCitwdWJsaWM6CisgIHZvaWQgc3RhcnRJbnN0clJhbmdlKElubGluZWRFbnRpdHkgVmFyLCBjb25zdCBNYWNoaW5lSW5zdHIgJk1JKTsKKyAgdm9pZCBlbmRJbnN0clJhbmdlKElubGluZWRFbnRpdHkgVmFyLCBjb25zdCBNYWNoaW5lSW5zdHIgJk1JKTsKKworICAvLyBSZXR1cm5zIHJlZ2lzdGVyIGN1cnJlbnRseSBkZXNjcmliaW5nIEBWYXIuIElmIEBWYXIgaXMgY3VycmVudGx5CisgIC8vIHVuYWNjZXNzaWJsZSBvciBpcyBub3QgZGVzY3JpYmVkIGJ5IGEgcmVnaXN0ZXIsIHJldHVybnMgMC4KKyAgdW5zaWduZWQgZ2V0UmVnaXN0ZXJGb3JWYXIoSW5saW5lZEVudGl0eSBWYXIpIGNvbnN0OworCisgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiBWYXJJbnN0clJhbmdlcy5lbXB0eSgpOyB9CisgIHZvaWQgY2xlYXIoKSB7IFZhckluc3RyUmFuZ2VzLmNsZWFyKCk7IH0KKyAgSW5zdHJSYW5nZXNNYXA6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gVmFySW5zdHJSYW5nZXMuYmVnaW4oKTsgfQorICBJbnN0clJhbmdlc01hcDo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gVmFySW5zdHJSYW5nZXMuZW5kKCk7IH0KKworI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgZGVmaW5lZChMTFZNX0VOQUJMRV9EVU1QKQorICBMTFZNX0RVTVBfTUVUSE9EIHZvaWQgZHVtcCgpIGNvbnN0OworI2VuZGlmCit9OworCisvLy8gRm9yIGVhY2ggaW5saW5lZCBpbnN0YW5jZSBvZiBhIHNvdXJjZS1sZXZlbCBsYWJlbCwga2VlcCB0aGUgY29ycmVzcG9uZGluZworLy8vIERCR19MQUJFTCBpbnN0cnVjdGlvbi4gVGhlIERCR19MQUJFTCBpbnN0cnVjdGlvbiBjb3VsZCBiZSB1c2VkIHRvIGdlbmVyYXRlCisvLy8gYSB0ZW1wb3JhcnkgKGFzc2VtYmxlcikgbGFiZWwgYmVmb3JlIGl0LgorY2xhc3MgRGJnTGFiZWxJbnN0ck1hcCB7CitwdWJsaWM6CisgIHVzaW5nIElubGluZWRFbnRpdHkgPSBzdGQ6OnBhaXI8Y29uc3QgRElOb2RlICosIGNvbnN0IERJTG9jYXRpb24gKj47CisgIHVzaW5nIEluc3RyTWFwID0gTWFwVmVjdG9yPElubGluZWRFbnRpdHksIGNvbnN0IE1hY2hpbmVJbnN0ciAqPjsKKworcHJpdmF0ZToKKyAgSW5zdHJNYXAgTGFiZWxJbnN0cjsKKworcHVibGljOgorICB2b2lkICBhZGRJbnN0cihJbmxpbmVkRW50aXR5IExhYmVsLCBjb25zdCBNYWNoaW5lSW5zdHIgJk1JKTsKKworICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gTGFiZWxJbnN0ci5lbXB0eSgpOyB9CisgIHZvaWQgY2xlYXIoKSB7IExhYmVsSW5zdHIuY2xlYXIoKTsgfQorICBJbnN0ck1hcDo6Y29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBMYWJlbEluc3RyLmJlZ2luKCk7IH0KKyAgSW5zdHJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIExhYmVsSW5zdHIuZW5kKCk7IH0KK307CisKK3ZvaWQgY2FsY3VsYXRlRGJnRW50aXR5SGlzdG9yeShjb25zdCBNYWNoaW5lRnVuY3Rpb24gKk1GLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRhcmdldFJlZ2lzdGVySW5mbyAqVFJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERiZ1ZhbHVlSGlzdG9yeU1hcCAmRGJnVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERiZ0xhYmVsSW5zdHJNYXAgJkRiZ0xhYmVscyk7CisKK30gLy8gZW5kIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZiAvLyBMTFZNX0NPREVHRU5fREJHVkFMVUVISVNUT1JZQ0FMQ1VMQVRPUl9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vRGVidWdIYW5kbGVyQmFzZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0RlYnVnSGFuZGxlckJhc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzcxZDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0RlYnVnSGFuZGxlckJhc2UuaApAQCAtMCwwICsxLDEzNyBAQAorLy89PT0tLSBsbHZtL0NvZGVHZW4vRGVidWdIYW5kbGVyQmFzZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLS09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIENvbW1vbiBmdW5jdGlvbmFsaXR5IGZvciBkaWZmZXJlbnQgZGVidWcgaW5mb3JtYXRpb24gZm9ybWF0IGJhY2tlbmRzLgorLy8gTExWTSBjdXJyZW50bHkgc3VwcG9ydHMgRFdBUkYgYW5kIENvZGVWaWV3LgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9DT0RFR0VOX0RFQlVHSEFORExFUkJBU0VfSAorI2RlZmluZSBMTFZNX0NPREVHRU5fREVCVUdIQU5ETEVSQkFTRV9ICisKKyNpbmNsdWRlICJsbHZtL0FEVC9PcHRpb25hbC5oIgorI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9Bc21QcmludGVySGFuZGxlci5oIgorI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9EYmdFbnRpdHlIaXN0b3J5Q2FsY3VsYXRvci5oIgorI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9MZXhpY2FsU2NvcGVzLmgiCisjaW5jbHVkZSAibGx2bS9Db2RlR2VuL01hY2hpbmVJbnN0ci5oIgorI2luY2x1ZGUgImxsdm0vSVIvRGVidWdJbmZvTWV0YWRhdGEuaCIKKworbmFtZXNwYWNlIGxsdm0geworCitjbGFzcyBBc21QcmludGVyOworY2xhc3MgTWFjaGluZUluc3RyOworY2xhc3MgTWFjaGluZU1vZHVsZUluZm87CisKKy8vLyBSZXByZXNlbnRzIHRoZSBsb2NhdGlvbiBhdCB3aGljaCBhIHZhcmlhYmxlIGlzIHN0b3JlZC4KK3N0cnVjdCBEYmdWYXJpYWJsZUxvY2F0aW9uIHsKKyAgLy8vIEJhc2UgcmVnaXN0ZXIuCisgIHVuc2lnbmVkIFJlZ2lzdGVyOworCisgIC8vLyBDaGFpbiBvZiBvZmZzZXR0ZWQgbG9hZHMgbmVjZXNzYXJ5IHRvIGxvYWQgdGhlIHZhbHVlIGlmIGl0IGxpdmVzIGluCisgIC8vLyBtZW1vcnkuIEV2ZXJ5IGxvYWQgZXhjZXB0IGZvciB0aGUgbGFzdCBpcyBwb2ludGVyLXNpemVkLgorICBTbWFsbFZlY3RvcjxpbnQ2NF90LCAxPiBMb2FkQ2hhaW47CisKKyAgLy8vIFByZXNlbnQgaWYgdGhlIGxvY2F0aW9uIGlzIHBhcnQgb2YgYSBsYXJnZXIgdmFyaWFibGUuCisgIGxsdm06Ok9wdGlvbmFsPGxsdm06OkRJRXhwcmVzc2lvbjo6RnJhZ21lbnRJbmZvPiBGcmFnbWVudEluZm87CisKKyAgLy8vIEV4dHJhY3QgYSBWYXJpYWJsZUxvY2F0aW9uIGZyb20gYSBNYWNoaW5lSW5zdHIuCisgIC8vLyBUaGlzIHdpbGwgb25seSB3b3JrIGlmIEluc3RydWN0aW9uIGlzIGEgZGVidWcgdmFsdWUgaW5zdHJ1Y3Rpb24KKyAgLy8vIGFuZCB0aGUgYXNzb2NpYXRlZCBESUV4cHJlc3Npb24gaXMgaW4gb25lIG9mIHRoZSBzdXBwb3J0ZWQgZm9ybXMuCisgIC8vLyBJZiB0aGVzZSByZXF1aXJlbWVudHMgYXJlIG5vdCBtZXQsIHRoZSByZXR1cm5lZCBPcHRpb25hbCB3aWxsIG5vdAorICAvLy8gaGF2ZSBhIHZhbHVlLgorICBzdGF0aWMgT3B0aW9uYWw8RGJnVmFyaWFibGVMb2NhdGlvbj4KKyAgZXh0cmFjdEZyb21NYWNoaW5lSW5zdHJ1Y3Rpb24oY29uc3QgTWFjaGluZUluc3RyICZJbnN0cnVjdGlvbik7Cit9OworCisvLy8gQmFzZSBjbGFzcyBmb3IgZGVidWcgaW5mb3JtYXRpb24gYmFja2VuZHMuIENvbW1vbiBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQgdG8KKy8vLyB0cmFja2luZyB3aGljaCB2YXJpYWJsZXMgYW5kIHNjb3BlcyBhcmUgYWxpdmUgYXQgYSBnaXZlbiBQQyBsaXZlIGhlcmUuCitjbGFzcyBEZWJ1Z0hhbmRsZXJCYXNlIDogcHVibGljIEFzbVByaW50ZXJIYW5kbGVyIHsKK3Byb3RlY3RlZDoKKyAgRGVidWdIYW5kbGVyQmFzZShBc21QcmludGVyICpBKTsKKworICAvLy8gVGFyZ2V0IG9mIGRlYnVnIGluZm8gZW1pc3Npb24uCisgIEFzbVByaW50ZXIgKkFzbTsKKworICAvLy8gQ29sbGVjdGVkIG1hY2hpbmUgbW9kdWxlIGluZm9ybWF0aW9uLgorICBNYWNoaW5lTW9kdWxlSW5mbyAqTU1JOworCisgIC8vLyBQcmV2aW91cyBpbnN0cnVjdGlvbidzIGxvY2F0aW9uIGluZm9ybWF0aW9uLiBUaGlzIGlzIHVzZWQgdG8KKyAgLy8vIGRldGVybWluZSBsYWJlbCBsb2NhdGlvbiB0byBpbmRpY2F0ZSBzY29wZSBib3VuZGFyaWVzIGluIGRlYnVnIGluZm8uCisgIC8vLyBXZSB0cmFjayB0aGUgcHJldmlvdXMgaW5zdHJ1Y3Rpb24ncyBzb3VyY2UgbG9jYXRpb24gKGlmIG5vdCBsaW5lIDApLAorICAvLy8gd2hldGhlciBpdCB3YXMgYSBsYWJlbCwgYW5kIGl0cyBwYXJlbnQgQkIuCisgIERlYnVnTG9jIFByZXZJbnN0TG9jOworICBNQ1N5bWJvbCAqUHJldkxhYmVsID0gbnVsbHB0cjsKKyAgY29uc3QgTWFjaGluZUJhc2ljQmxvY2sgKlByZXZJbnN0QkIgPSBudWxscHRyOworCisgIC8vLyBUaGlzIGxvY2F0aW9uIGluZGljYXRlcyBlbmQgb2YgZnVuY3Rpb24gcHJvbG9ndWUgYW5kIGJlZ2lubmluZyBvZgorICAvLy8gZnVuY3Rpb24gYm9keS4KKyAgRGVidWdMb2MgUHJvbG9nRW5kTG9jOworCisgIC8vLyBJZiBub25udWxsLCBzdG9yZXMgdGhlIGN1cnJlbnQgbWFjaGluZSBpbnN0cnVjdGlvbiB3ZSdyZSBwcm9jZXNzaW5nLgorICBjb25zdCBNYWNoaW5lSW5zdHIgKkN1ck1JID0gbnVsbHB0cjsKKworICBMZXhpY2FsU2NvcGVzIExTY29wZXM7CisKKyAgLy8vIEhpc3Rvcnkgb2YgREJHX1ZBTFVFIGFuZCBjbG9iYmVyIGluc3RydWN0aW9ucyBmb3IgZWFjaCB1c2VyCisgIC8vLyB2YXJpYWJsZS4gIFZhcmlhYmxlcyBhcmUgbGlzdGVkIGluIG9yZGVyIG9mIGFwcGVhcmFuY2UuCisgIERiZ1ZhbHVlSGlzdG9yeU1hcCBEYmdWYWx1ZXM7CisKKyAgLy8vIE1hcHBpbmcgb2YgaW5saW5lZCBsYWJlbHMgYW5kIERCR19MQUJFTCBtYWNoaW5lIGluc3RydWN0aW9uLgorICBEYmdMYWJlbEluc3RyTWFwIERiZ0xhYmVsczsKKworICAvLy8gTWFwcyBpbnN0cnVjdGlvbiB3aXRoIGxhYmVsIGVtaXR0ZWQgYmVmb3JlIGluc3RydWN0aW9uLgorICAvLy8gRklYTUU6IE1ha2UgdGhpcyBwcml2YXRlIGZyb20gRHdhcmZEZWJ1Zywgd2UgaGF2ZSB0aGUgbmVjZXNzYXJ5IGFjY2Vzc29ycworICAvLy8gZm9yIGl0LgorICBEZW5zZU1hcDxjb25zdCBNYWNoaW5lSW5zdHIgKiwgTUNTeW1ib2wgKj4gTGFiZWxzQmVmb3JlSW5zbjsKKworICAvLy8gTWFwcyBpbnN0cnVjdGlvbiB3aXRoIGxhYmVsIGVtaXR0ZWQgYWZ0ZXIgaW5zdHJ1Y3Rpb24uCisgIERlbnNlTWFwPGNvbnN0IE1hY2hpbmVJbnN0ciAqLCBNQ1N5bWJvbCAqPiBMYWJlbHNBZnRlckluc247CisKKyAgLy8vIEluZGVudGlmeSBpbnN0cnVjdGlvbnMgdGhhdCBhcmUgbWFya2luZyB0aGUgYmVnaW5uaW5nIG9mIG9yCisgIC8vLyBlbmRpbmcgb2YgYSBzY29wZS4KKyAgdm9pZCBpZGVudGlmeVNjb3BlTWFya2VycygpOworCisgIC8vLyBFbnN1cmUgdGhhdCBhIGxhYmVsIHdpbGwgYmUgZW1pdHRlZCBiZWZvcmUgTUkuCisgIHZvaWQgcmVxdWVzdExhYmVsQmVmb3JlSW5zbihjb25zdCBNYWNoaW5lSW5zdHIgKk1JKSB7CisgICAgTGFiZWxzQmVmb3JlSW5zbi5pbnNlcnQoc3RkOjptYWtlX3BhaXIoTUksIG51bGxwdHIpKTsKKyAgfQorCisgIC8vLyBFbnN1cmUgdGhhdCBhIGxhYmVsIHdpbGwgYmUgZW1pdHRlZCBhZnRlciBNSS4KKyAgdm9pZCByZXF1ZXN0TGFiZWxBZnRlckluc24oY29uc3QgTWFjaGluZUluc3RyICpNSSkgeworICAgIExhYmVsc0FmdGVySW5zbi5pbnNlcnQoc3RkOjptYWtlX3BhaXIoTUksIG51bGxwdHIpKTsKKyAgfQorCisgIHZpcnR1YWwgdm9pZCBiZWdpbkZ1bmN0aW9uSW1wbChjb25zdCBNYWNoaW5lRnVuY3Rpb24gKk1GKSA9IDA7CisgIHZpcnR1YWwgdm9pZCBlbmRGdW5jdGlvbkltcGwoY29uc3QgTWFjaGluZUZ1bmN0aW9uICpNRikgPSAwOworICB2aXJ0dWFsIHZvaWQgc2tpcHBlZE5vbkRlYnVnRnVuY3Rpb24oKSB7fQorCisgIC8vIEFzbVByaW50ZXJIYW5kbGVyIG92ZXJyaWRlcy4KK3B1YmxpYzoKKyAgdm9pZCBiZWdpbkluc3RydWN0aW9uKGNvbnN0IE1hY2hpbmVJbnN0ciAqTUkpIG92ZXJyaWRlOworICB2b2lkIGVuZEluc3RydWN0aW9uKCkgb3ZlcnJpZGU7CisKKyAgdm9pZCBiZWdpbkZ1bmN0aW9uKGNvbnN0IE1hY2hpbmVGdW5jdGlvbiAqTUYpIG92ZXJyaWRlOworICB2b2lkIGVuZEZ1bmN0aW9uKGNvbnN0IE1hY2hpbmVGdW5jdGlvbiAqTUYpIG92ZXJyaWRlOworCisgIC8vLyBSZXR1cm4gTGFiZWwgcHJlY2VkaW5nIHRoZSBpbnN0cnVjdGlvbi4KKyAgTUNTeW1ib2wgKmdldExhYmVsQmVmb3JlSW5zbihjb25zdCBNYWNoaW5lSW5zdHIgKk1JKTsKKworICAvLy8gUmV0dXJuIExhYmVsIGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgaW5zdHJ1Y3Rpb24uCisgIE1DU3ltYm9sICpnZXRMYWJlbEFmdGVySW5zbihjb25zdCBNYWNoaW5lSW5zdHIgKk1JKTsKKworICAvLy8gUmV0dXJuIHRoZSBmdW5jdGlvbi1sb2NhbCBvZmZzZXQgb2YgYW4gaW5zdHJ1Y3Rpb24uIEEgbGFiZWwgZm9yIHRoZQorICAvLy8gaW5zdHJ1Y3Rpb24gXHAgTUkgc2hvdWxkIGV4aXN0IChccmVmIGdldExhYmVsQWZ0ZXJJbnNuKS4KKyAgY29uc3QgTUNFeHByICpnZXRGdW5jdGlvbkxvY2FsT2Zmc2V0QWZ0ZXJJbnNuKGNvbnN0IE1hY2hpbmVJbnN0ciAqTUkpOworCisgIC8vLyBJZiB0aGlzIHR5cGUgaXMgZGVyaXZlZCBmcm9tIGEgYmFzZSB0eXBlIHRoZW4gcmV0dXJuIGJhc2UgdHlwZSBzaXplLgorICBzdGF0aWMgdWludDY0X3QgZ2V0QmFzZVR5cGVTaXplKGNvbnN0IERJVHlwZVJlZiBUeVJlZik7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0R3YXJmU3RyaW5nUG9vbEVudHJ5LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vRHdhcmZTdHJpbmdQb29sRW50cnkuaAppbmRleCA4YjFhN2FmLi5lMTg5MzUyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vRHdhcmZTdHJpbmdQb29sRW50cnkuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vRHdhcmZTdHJpbmdQb29sRW50cnkuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vRHdhcmZTdHJpbmdQb29sRW50cnkuaCAtIFN0cmluZyBwb29sIGVudHJ5IC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9FZGdlQnVuZGxlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0VkZ2VCdW5kbGVzLmgKaW5kZXggYzMxZmFkMi4uMjhjZGY1NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0VkZ2VCdW5kbGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0VkZ2VCdW5kbGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLS0tLS0tIEVkZ2VCdW5kbGVzLmggLSBCdW5kbGVzIG9mIENGRyBlZGdlcyAtLS0tLS0tLS0tLS0tLSotIGMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9FeGVjdXRpb25Eb21haW5GaXguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9FeGVjdXRpb25Eb21haW5GaXguaAppbmRleCAzMzhjMjE0Li42ODM2Njc4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vRXhlY3V0aW9uRG9tYWluRml4LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0V4ZWN1dGlvbkRvbWFpbkZpeC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0tIGxsdm0vQ29kZUdlbi9FeGVjdXRpb25Eb21haW5GaXguaCAtIEV4ZWN1dGlvbiBEb21haW4gRml4IC0qLSBDKysgLSotLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vRXhwYW5kUmVkdWN0aW9ucy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0V4cGFuZFJlZHVjdGlvbnMuaAppbmRleCBjNmFhYWFkLi41ZGJlZDA3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vRXhwYW5kUmVkdWN0aW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9FeHBhbmRSZWR1Y3Rpb25zLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLS0tIEV4cGFuZFJlZHVjdGlvbnMuaCAtIEV4cGFuZCBleHBlcmltZW50YWwgcmVkdWN0aW9uIGludHJpbnNpY3MgLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vRmFzdElTZWwuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9GYXN0SVNlbC5oCmluZGV4IDg2NWQ4YTguLjM5NDMyNGIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9GYXN0SVNlbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9GYXN0SVNlbC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEZhc3RJU2VsLmggLSBEZWZpbml0aW9uIG9mIHRoZSBGYXN0SVNlbCBjbGFzcyAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0ZhdWx0TWFwcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0ZhdWx0TWFwcy5oCmluZGV4IDU1ZTI1YzkuLmExZTIzNDkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9GYXVsdE1hcHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vRmF1bHRNYXBzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRmF1bHRNYXBzLmggLSBUaGUgIkZhdWx0TWFwcyIgc2VjdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vRnVuY3Rpb25Mb3dlcmluZ0luZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9GdW5jdGlvbkxvd2VyaW5nSW5mby5oCmluZGV4IDVmZTRmODkuLmY1ZjM3ZDEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9GdW5jdGlvbkxvd2VyaW5nSW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9GdW5jdGlvbkxvd2VyaW5nSW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEZ1bmN0aW9uTG93ZXJpbmdJbmZvLmggLSBMb3dlciBmdW5jdGlvbnMgZnJvbSBMTFZNIElSIC0tLSotIEMrKyAtKi0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNiw2ICsxNSw3IEBACiAjZGVmaW5lIExMVk1fQ09ERUdFTl9GVU5DVElPTkxPV0VSSU5HSU5GT19ICiAKICNpbmNsdWRlICJsbHZtL0FEVC9BUEludC5oIgorI2luY2x1ZGUgImxsdm0vQURUL0JpdFZlY3Rvci5oIgogI2luY2x1ZGUgImxsdm0vQURUL0RlbnNlTWFwLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvSW5kZXhlZE1hcC5oIgogI2luY2x1ZGUgImxsdm0vQURUL09wdGlvbmFsLmgiCkBAIC0xNzUsNiArMTc1LDEwIEBACiAgIC8vLyBmdW5jdGlvbiBhcmd1bWVudHMgdGhhdCBhcmUgaW5zZXJ0ZWQgYWZ0ZXIgc2NoZWR1bGluZyBpcyBjb21wbGV0ZWQuCiAgIFNtYWxsVmVjdG9yPE1hY2hpbmVJbnN0ciosIDg+IEFyZ0RiZ1ZhbHVlczsKIAorICAvLy8gQml0dmVjdG9yIHdpdGggYSBiaXQgc2V0IGlmIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgaXMgZGVzY3JpYmVkIGluCisgIC8vLyBBcmdEYmdWYWx1ZXMuIFVzaW5nIGFyZyBudW1iZXJzIGFjY29yZGluZyB0byBBcmd1bWVudCBudW1iZXJpbmcuCisgIEJpdFZlY3RvciBEZXNjcmliZWRBcmdzOworCiAgIC8vLyBSZWdGaXh1cHMgLSBSZWdpc3RlcnMgd2hpY2ggbmVlZCB0byBiZSByZXBsYWNlZCBhZnRlciBpc2VsIGlzIGRvbmUuCiAgIERlbnNlTWFwPHVuc2lnbmVkLCB1bnNpZ25lZD4gUmVnRml4dXBzOwogCkBAIC0yNDYsNiArMjUwLDcgQEAKICAgICAgIHJldHVybiAwOwogICAgIHVuc2lnbmVkICZSID0gVmFsdWVNYXBbVl07CiAgICAgYXNzZXJ0KFIgPT0gMCAmJiAiQWxyZWFkeSBpbml0aWFsaXplZCB0aGlzIHZhbHVlIHJlZ2lzdGVyISIpOworICAgIGFzc2VydChWaXJ0UmVnMlZhbHVlLmVtcHR5KCkpOwogICAgIHJldHVybiBSID0gQ3JlYXRlUmVncyhWLT5nZXRUeXBlKCkpOwogICB9CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HQ01ldGFkYXRhLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR0NNZXRhZGF0YS5oCmluZGV4IGFkMjU5OWYuLjc3Y2QzNTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HQ01ldGFkYXRhLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dDTWV0YWRhdGEuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBHQ01ldGFkYXRhLmggLSBHYXJiYWdlIGNvbGxlY3RvciBtZXRhZGF0YSAtLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNTUsMTIgKzU0LDExIEBACiAvLy8gR0NQb2ludCAtIE1ldGFkYXRhIGZvciBhIGNvbGxlY3Rvci1zYWZlIHBvaW50IGluIG1hY2hpbmUgY29kZS4KIC8vLwogc3RydWN0IEdDUG9pbnQgewotICBHQzo6UG9pbnRLaW5kIEtpbmQ7IC8vLzwgVGhlIGtpbmQgb2YgdGhlIHNhZmUgcG9pbnQuCiAgIE1DU3ltYm9sICpMYWJlbDsgICAgLy8vPCBBIGxhYmVsLgogICBEZWJ1Z0xvYyBMb2M7CiAKLSAgR0NQb2ludChHQzo6UG9pbnRLaW5kIEssIE1DU3ltYm9sICpMLCBEZWJ1Z0xvYyBETCkKLSAgICAgIDogS2luZChLKSwgTGFiZWwoTCksIExvYyhzdGQ6Om1vdmUoREwpKSB7fQorICBHQ1BvaW50KE1DU3ltYm9sICpMLCBEZWJ1Z0xvYyBETCkKKyAgICAgIDogTGFiZWwoTCksIExvYyhzdGQ6Om1vdmUoREwpKSB7fQogfTsKIAogLy8vIEdDUm9vdCAtIE1ldGFkYXRhIGZvciBhIHBvaW50ZXIgdG8gYW4gb2JqZWN0IG1hbmFnZWQgYnkgdGhlIGdhcmJhZ2UKQEAgLTEyNCw4ICsxMjIsOCBAQAogICAvLy8gYWRkU2FmZVBvaW50IC0gTm90ZXMgdGhlIGV4aXN0ZW5jZSBvZiBhIHNhZmUgcG9pbnQuIE51bSBpcyB0aGUgSUQgb2YgdGhlCiAgIC8vLyBsYWJlbCBqdXN0IHByaW9yIHRvIHRoZSBzYWZlIHBvaW50IChpZiB0aGUgY29kZSBnZW5lcmF0b3IgaXMgdXNpbmcKICAgLy8vIE1hY2hpbmVNb2R1bGVJbmZvKS4KLSAgdm9pZCBhZGRTYWZlUG9pbnQoR0M6OlBvaW50S2luZCBLaW5kLCBNQ1N5bWJvbCAqTGFiZWwsIGNvbnN0IERlYnVnTG9jICZETCkgewotICAgIFNhZmVQb2ludHMuZW1wbGFjZV9iYWNrKEtpbmQsIExhYmVsLCBETCk7CisgIHZvaWQgYWRkU2FmZVBvaW50KE1DU3ltYm9sICpMYWJlbCwgY29uc3QgRGVidWdMb2MgJkRMKSB7CisgICAgU2FmZVBvaW50cy5lbXBsYWNlX2JhY2soTGFiZWwsIERMKTsKICAgfQogCiAgIC8vLyBnZXRGcmFtZVNpemUvc2V0RnJhbWVTaXplIC0gUmVjb3JkcyB0aGUgZnVuY3Rpb24ncyBmcmFtZSBzaXplLgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dDTWV0YWRhdGFQcmludGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR0NNZXRhZGF0YVByaW50ZXIuaAppbmRleCAxY2M2OWE3Li5mOTUyN2M5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR0NNZXRhZGF0YVByaW50ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR0NNZXRhZGF0YVByaW50ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vR0NNZXRhZGF0YVByaW50ZXIuaCAtIFByaW50cyBhc20gR0MgdGFibGVzIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjksNiArMjgsNyBAQAogY2xhc3MgR0NNb2R1bGVJbmZvOwogY2xhc3MgR0NTdHJhdGVneTsKIGNsYXNzIE1vZHVsZTsKK2NsYXNzIFN0YWNrTWFwczsKIAogLy8vIEdDTWV0YWRhdGFQcmludGVyUmVnaXN0cnkgLSBUaGUgR0MgYXNzZW1ibHkgcHJpbnRlciByZWdpc3RyeSB1c2VzIGFsbCB0aGUKIC8vLyBkZWZhdWx0cyBmcm9tIFJlZ2lzdHJ5LgpAQCAtNjAsNiArNjAsMTEgQEAKICAgLy8vIENhbGxlZCBhZnRlciB0aGUgYXNzZW1ibHkgZm9yIHRoZSBtb2R1bGUgaXMgZ2VuZXJhdGVkIGJ5CiAgIC8vLyB0aGUgQXNtUHJpbnRlciAoYnV0IGJlZm9yZSB0YXJnZXQgc3BlY2lmaWMgaG9va3MpCiAgIHZpcnR1YWwgdm9pZCBmaW5pc2hBc3NlbWJseShNb2R1bGUgJk0sIEdDTW9kdWxlSW5mbyAmSW5mbywgQXNtUHJpbnRlciAmQVApIHt9CisKKyAgLy8vIENhbGxlZCB3aGVuIHRoZSBzdGFjayBtYXBzIGFyZSBnZW5lcmF0ZWQuIFJldHVybiB0cnVlIGlmCisgIC8vLyBzdGFjayBtYXBzIHdpdGggYSBjdXN0b20gZm9ybWF0IGFyZSBnZW5lcmF0ZWQuIE90aGVyd2lzZQorICAvLy8gcmV0dXJucyBmYWxzZSBhbmQgdGhlIGRlZmF1bHQgZm9ybWF0IHdpbGwgYmUgdXNlZC4KKyAgdmlydHVhbCBib29sIGVtaXRTdGFja01hcHMoU3RhY2tNYXBzICZTTSwgQXNtUHJpbnRlciAmQVApIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dDU3RyYXRlZ3kuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HQ1N0cmF0ZWd5LmgKaW5kZXggZjgzNWJhYy4uYzU3MzE1MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dDU3RyYXRlZ3kuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR0NTdHJhdGVneS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ29kZUdlbi9HQ1N0cmF0ZWd5LmggLSBHYXJiYWdlIGNvbGxlY3Rpb24gLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC01OSwxOSArNTgsNiBAQAogCiBjbGFzcyBUeXBlOwogCi1uYW1lc3BhY2UgR0MgewotCi0vLy8gUG9pbnRLaW5kIC0gVXNlZCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBhZGRyZXNzIG9mIHRoZSBjYWxsIGluc3RydWN0aW9uCi0vLy8gb3IgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIGNhbGwgaW5zdHJ1Y3Rpb24gaXMgbGlzdGVkIGluIHRoZSBzdGFja21hcC4gIEZvcgotLy8vIG1vc3QgcnVudGltZXMsIFBvc3RDYWxsIHNhZmVwb2ludHMgYXJlIGFwcHJvcHJpYXRlLgotLy8vCi1lbnVtIFBvaW50S2luZCB7Ci0gIFByZUNhbGwsIC8vLzwgSW5zdHIgaXMgYSBjYWxsIGluc3RydWN0aW9uLgotICBQb3N0Q2FsbCAvLy88IEluc3RyIGlzIHRoZSByZXR1cm4gYWRkcmVzcyBvZiBhIGNhbGwuCi19OwotCi19IC8vIGVuZCBuYW1lc3BhY2UgR0MKLQogLy8vIEdDU3RyYXRlZ3kgZGVzY3JpYmVzIGEgZ2FyYmFnZSBjb2xsZWN0b3IgYWxnb3JpdGhtJ3MgY29kZSBnZW5lcmF0aW9uCiAvLy8gcmVxdWlyZW1lbnRzLCBhbmQgcHJvdmlkZXMgb3ZlcnJpZGFibGUgaG9va3MgZm9yIHRob3NlIG5lZWRzIHdoaWNoIGNhbm5vdAogLy8vIGJlIGFic3RyYWN0bHkgZGVzY3JpYmVkLiAgR0NTdHJhdGVneSBvYmplY3RzIG11c3QgYmUgbG9va2VkIHVwIHRocm91Z2gKQEAgLTg4LDExICs3NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vIGlmIHNldCwgbm9uZSBvZiB0aGUgb3RoZXIgb3B0aW9ucyBjYW4gYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8gYW55dGhpbmcgYnV0IHRoZWlyIGRlZmF1bHQgdmFsdWVzLgogCi0gIHVuc2lnbmVkIE5lZWRlZFNhZmVQb2ludHMgPSAwOyAgICAvLy88IEJpdG1hc2sgb2YgcmVxdWlyZWQgc2FmZSBwb2ludHMuCi0gIGJvb2wgQ3VzdG9tUmVhZEJhcnJpZXJzID0gZmFsc2U7ICAvLy88IERlZmF1bHQgaXMgdG8gaW5zZXJ0IGxvYWRzLgotICBib29sIEN1c3RvbVdyaXRlQmFycmllcnMgPSBmYWxzZTsgLy8vPCBEZWZhdWx0IGlzIHRvIGluc2VydCBzdG9yZXMuCi0gIGJvb2wgQ3VzdG9tUm9vdHMgPSBmYWxzZTsgICAgICAvLy88IERlZmF1bHQgaXMgdG8gcGFzcyB0aHJvdWdoIHRvIGJhY2tlbmQuCi0gIGJvb2wgSW5pdFJvb3RzPSB0cnVlOyAgICAgICAgICAvLy88IElmIHNldCwgcm9vdHMgYXJlIG51bGxlZCBkdXJpbmcgbG93ZXJpbmcuCisgIGJvb2wgTmVlZGVkU2FmZVBvaW50cyA9IGZhbHNlOyAgICAvLy88IGlmIHNldCwgY2FsbHMgYXJlIGluZmVycmVkIHRvIGJlIHNhZmVwb2ludHMKICAgYm9vbCBVc2VzTWV0YWRhdGEgPSBmYWxzZTsgICAgIC8vLzwgSWYgc2V0LCBiYWNrZW5kIG11c3QgZW1pdCBtZXRhZGF0YSB0YWJsZXMuCiAKIHB1YmxpYzoKQEAgLTEwMywxNiArODUsNiBAQAogICAvLy8gbmFtZSBzdHJpbmcgc3BlY2lmaWVkIG9uIGZ1bmN0aW9ucyB3aGljaCB1c2UgdGhpcyBzdHJhdGVneS4KICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldE5hbWUoKSBjb25zdCB7IHJldHVybiBOYW1lOyB9CiAKLSAgLy8vIEJ5IGRlZmF1bHQsIHdyaXRlIGJhcnJpZXJzIGFyZSByZXBsYWNlZCB3aXRoIHNpbXBsZSBzdG9yZQotICAvLy8gaW5zdHJ1Y3Rpb25zLiBJZiB0cnVlLCB5b3UgbXVzdCBwcm92aWRlIGEgY3VzdG9tIHBhc3MgdG8gbG93ZXIKLSAgLy8vIGNhbGxzIHRvIFxAbGx2bS5nY3dyaXRlLgotICBib29sIGN1c3RvbVdyaXRlQmFycmllcigpIGNvbnN0IHsgcmV0dXJuIEN1c3RvbVdyaXRlQmFycmllcnM7IH0KLQotICAvLy8gQnkgZGVmYXVsdCwgcmVhZCBiYXJyaWVycyBhcmUgcmVwbGFjZWQgd2l0aCBzaW1wbGUgbG9hZAotICAvLy8gaW5zdHJ1Y3Rpb25zLiBJZiB0cnVlLCB5b3UgbXVzdCBwcm92aWRlIGEgY3VzdG9tIHBhc3MgdG8gbG93ZXIKLSAgLy8vIGNhbGxzIHRvIFxAbGx2bS5nY3JlYWQuCi0gIGJvb2wgY3VzdG9tUmVhZEJhcnJpZXIoKSBjb25zdCB7IHJldHVybiBDdXN0b21SZWFkQmFycmllcnM7IH0KLQogICAvLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgc3RyYXRlZ3kgaXMgZXhwZWN0aW5nIHRoZSB1c2Ugb2YgZ2Muc3RhdGVwb2ludHMsCiAgIC8vLyBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgogICBib29sIHVzZVN0YXRlcG9pbnRzKCkgY29uc3QgeyByZXR1cm4gVXNlU3RhdGVwb2ludHM7IH0KQEAgLTEzNSwyNSArMTA3LDggQEAKICAgICovCiAgIC8vL0B7CiAKLSAgLy8vIFRydWUgaWYgc2FmZSBwb2ludHMgb2YgYW55IGtpbmQgYXJlIHJlcXVpcmVkLiBCeSBkZWZhdWx0LCBub25lIGFyZQotICAvLy8gcmVjb3JkZWQuCi0gIGJvb2wgbmVlZHNTYWZlUG9pbnRzKCkgY29uc3QgeyByZXR1cm4gTmVlZGVkU2FmZVBvaW50cyAhPSAwOyB9Ci0KLSAgLy8vIFRydWUgaWYgdGhlIGdpdmVuIGtpbmQgb2Ygc2FmZSBwb2ludCBpcyByZXF1aXJlZC4gQnkgZGVmYXVsdCwgbm9uZSBhcmUKLSAgLy8vIHJlY29yZGVkLgotICBib29sIG5lZWRzU2FmZVBvaW50KEdDOjpQb2ludEtpbmQgS2luZCkgY29uc3QgewotICAgIHJldHVybiAoTmVlZGVkU2FmZVBvaW50cyAmIDEgPDwgS2luZCkgIT0gMDsKLSAgfQotCi0gIC8vLyBCeSBkZWZhdWx0LCByb290cyBhcmUgbGVmdCBmb3IgdGhlIGNvZGUgZ2VuZXJhdG9yIHNvIGl0IGNhbiBnZW5lcmF0ZSBhCi0gIC8vLyBzdGFjayBtYXAuIElmIHRydWUsIHlvdSBtdXN0IHByb3ZpZGUgYSBjdXN0b20gcGFzcyB0byBsb3dlcgotICAvLy8gY2FsbHMgdG8gXEBsbHZtLmdjcm9vdC4KLSAgYm9vbCBjdXN0b21Sb290cygpIGNvbnN0IHsgcmV0dXJuIEN1c3RvbVJvb3RzOyB9Ci0KLSAgLy8vIElmIHNldCwgZ2Nyb290IGludHJpbnNpY3Mgc2hvdWxkIGluaXRpYWxpemUgdGhlaXIgYWxsb2NhcyB0byBudWxsCi0gIC8vLyBiZWZvcmUgdGhlIGZpcnN0IHVzZS4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIG1vc3QgR0NzIGFuZCBpcyBlbmFibGVkIGJ5Ci0gIC8vLyBkZWZhdWx0LgotICBib29sIGluaXRpYWxpemVSb290cygpIGNvbnN0IHsgcmV0dXJuIEluaXRSb290czsgfQorICAvLy8gVHJ1ZSBpZiBzYWZlIHBvaW50cyBuZWVkIHRvIGJlIGluZmVycmVkIG9uIGNhbGwgc2l0ZXMKKyAgYm9vbCBuZWVkc1NhZmVQb2ludHMoKSBjb25zdCB7IHJldHVybiBOZWVkZWRTYWZlUG9pbnRzOyB9CiAKICAgLy8vIElmIHNldCwgYXBwcm9wcmlhdGUgbWV0YWRhdGEgdGFibGVzIG11c3QgYmUgZW1pdHRlZCBieSB0aGUgYmFjay1lbmQKICAgLy8vIChhc3NlbWJsZXIsIEpJVCwgb3Igb3RoZXJ3aXNlKS4gRm9yIHN0YXRlcG9pbnQsIHRoaXMgbWV0aG9kIGlzCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR0NzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR0NzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMDdmODAuLjAwMDAwMDAKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dDcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLy89PT0tLSBHQ3MuaCAtIEdhcmJhZ2UgY29sbGVjdG9yIGxpbmthZ2UgaGFja3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCi0vLwotLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLS8vCi0vLyBUaGlzIGZpbGUgY29udGFpbnMgaGFjayBmdW5jdGlvbnMgdG8gZm9yY2UgbGlua2luZyBpbiB0aGUgR0MgY29tcG9uZW50cy4KLS8vCi0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotCi0jaWZuZGVmIExMVk1fQ09ERUdFTl9HQ1NfSAotI2RlZmluZSBMTFZNX0NPREVHRU5fR0NTX0gKLQotbmFtZXNwYWNlIGxsdm0gewotY2xhc3MgR0NTdHJhdGVneTsKLWNsYXNzIEdDTWV0YWRhdGFQcmludGVyOwotCi0vLy8gRklYTUU6IENvbGxlY3RvciBpbnN0YW5jZXMgYXJlIG5vdCB1c2VmdWwgb24gdGhlaXIgb3duLiBUaGVzZSBubyBsb25nZXIKLS8vLyAgICAgICAgc2VydmUgYW55IHB1cnBvc2UgZXhjZXB0IHRvIGxpbmsgaW4gdGhlIHBsdWdpbnMuCi0KLS8vLyBDcmVhdGVzIGEgQ29yZUNMUi1jb21wYXRpYmxlIGdhcmJhZ2UgY29sbGVjdG9yLgotdm9pZCBsaW5rQ29yZUNMUkdDKCk7Ci0KLS8vLyBDcmVhdGVzIGFuIG9jYW1sLWNvbXBhdGlibGUgZ2FyYmFnZSBjb2xsZWN0b3IuCi12b2lkIGxpbmtPY2FtbEdDKCk7Ci0KLS8vLyBDcmVhdGVzIGFuIG9jYW1sLWNvbXBhdGlibGUgbWV0YWRhdGEgcHJpbnRlci4KLXZvaWQgbGlua09jYW1sR0NQcmludGVyKCk7Ci0KLS8vLyBDcmVhdGVzIGFuIGVybGFuZy1jb21wYXRpYmxlIGdhcmJhZ2UgY29sbGVjdG9yLgotdm9pZCBsaW5rRXJsYW5nR0MoKTsKLQotLy8vIENyZWF0ZXMgYW4gZXJsYW5nLWNvbXBhdGlibGUgbWV0YWRhdGEgcHJpbnRlci4KLXZvaWQgbGlua0VybGFuZ0dDUHJpbnRlcigpOwotCi0vLy8gQ3JlYXRlcyBhIHNoYWRvdyBzdGFjayBnYXJiYWdlIGNvbGxlY3Rvci4gVGhpcyBjb2xsZWN0b3IgcmVxdWlyZXMgbm8gY29kZQotLy8vIGdlbmVyYXRvciBzdXBwb3J0Lgotdm9pZCBsaW5rU2hhZG93U3RhY2tHQygpOwotCi12b2lkIGxpbmtTdGF0ZXBvaW50RXhhbXBsZUdDKCk7Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ1NFSW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ1NFSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZjNjZDUKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9DU0VJbmZvLmgKQEAgLTAsMCArMSwyMzYgQEAKKy8vPT09LSBsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9DU0VJbmZvLmggLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8vIFByb3ZpZGVzIGFuYWx5c2lzIGZvciBjb250aW51b3VzbHkgQ1NFaW5nIGR1cmluZyBHSVNlbCBwYXNzZXMuCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKyNpZm5kZWYgTExWTV9DT0RFR0VOX0dMT0JBTElTRUxfQ1NFSU5GT19ICisjZGVmaW5lIExMVk1fQ09ERUdFTl9HTE9CQUxJU0VMX0NTRUlORk9fSAorCisjaW5jbHVkZSAibGx2bS9BRFQvRm9sZGluZ1NldC5oIgorI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0dJU2VsQ2hhbmdlT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9HSVNlbFdvcmtMaXN0LmgiCisjaW5jbHVkZSAibGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvVXRpbHMuaCIKKyNpbmNsdWRlICJsbHZtL0NvZGVHZW4vTWFjaGluZUJhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJsbHZtL0NvZGVHZW4vTWFjaGluZUZ1bmN0aW9uUGFzcy5oIgorI2luY2x1ZGUgImxsdm0vSVIvUGFzc01hbmFnZXIuaCIKKyNpbmNsdWRlICJsbHZtL1Bhc3MuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvQWxsb2NhdG9yLmgiCisKK25hbWVzcGFjZSBsbHZtIHsKKworLy8vIEEgY2xhc3MgdGhhdCB3cmFwcyBNYWNoaW5lSW5zdHJzIGFuZCBkZXJpdmVzIGZyb20gRm9sZGluZ1NldE5vZGUgaW4gb3JkZXIgdG8KKy8vLyBiZSB1bmlxdWVkIGluIGEgQ1NFTWFwLiBUaGUgdHJhZGVvZmYgaGVyZSBpcyBleHRyYSBtZW1vcnkgYWxsb2NhdGlvbnMgZm9yCisvLy8gVW5pcXVlTWFjaGluZUluc3RyIHZzIG1ha2luZyBNYWNoaW5lSW5zdHIgYmlnZ2VyLgorY2xhc3MgVW5pcXVlTWFjaGluZUluc3RyIDogcHVibGljIEZvbGRpbmdTZXROb2RlIHsKKyAgZnJpZW5kIGNsYXNzIEdJU2VsQ1NFSW5mbzsKKyAgY29uc3QgTWFjaGluZUluc3RyICpNSTsKKyAgZXhwbGljaXQgVW5pcXVlTWFjaGluZUluc3RyKGNvbnN0IE1hY2hpbmVJbnN0ciAqTUkpIDogTUkoTUkpIHt9CisKK3B1YmxpYzoKKyAgdm9pZCBQcm9maWxlKEZvbGRpbmdTZXROb2RlSUQgJklEKTsKK307CisKKy8vIENsYXNzIHJlcHJlc2VudGluZyBzb21lIGNvbmZpZ3VyYXRpb24gdGhhdCBjYW4gYmUgZG9uZSBkdXJpbmcgQ1NFIGFuYWx5c2lzLgorLy8gQ3VycmVudGx5IGl0IG9ubHkgc3VwcG9ydHMgc2hvdWxkQ1NFIG1ldGhvZCB0aGF0IGVhY2ggcGFzcyBjYW4gc2V0LgorY2xhc3MgQ1NFQ29uZmlnIHsKK3B1YmxpYzoKKyAgdmlydHVhbCB+Q1NFQ29uZmlnKCkgPSBkZWZhdWx0OworICAvLyBIb29rIGZvciBkZWZpbmluZyB3aGljaCBHZW5lcmljIGluc3RydWN0aW9ucyBzaG91bGQgYmUgQ1NFZC4KKyAgLy8gR0lTZWxDU0VJbmZvIGN1cnJlbnRseSBvbmx5IGNhbGxzIHRoaXMgaG9vayB3aGVuIGRlYWxpbmcgd2l0aCBnZW5lcmljCisgIC8vIG9wY29kZXMuCisgIHZpcnR1YWwgYm9vbCBzaG91bGRDU0VPcGModW5zaWduZWQgT3BjKTsKK307CisKKy8vIFRPRE86IEZpbmQgYSBiZXR0ZXIgcGxhY2UgZm9yIHRoaXMuCisvLyBDb21tb25seSB1c2VkIGZvciBPMCBjb25maWcuCitjbGFzcyBDU0VDb25maWdDb25zdGFudE9ubHkgOiBwdWJsaWMgQ1NFQ29uZmlnIHsKK3B1YmxpYzoKKyAgdmlydHVhbCB+Q1NFQ29uZmlnQ29uc3RhbnRPbmx5KCkgPSBkZWZhdWx0OworICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ1NFT3BjKHVuc2lnbmVkIE9wYykgb3ZlcnJpZGU7Cit9OworCisvLy8gVGhlIENTRSBBbmFseXNpcyBvYmplY3QuCisvLy8gVGhpcyBpbnN0YWxscyBpdHNlbGYgYXMgYSBkZWxlZ2F0ZSB0byB0aGUgTWFjaGluZUZ1bmN0aW9uIHRvIHRyYWNrCisvLy8gbmV3IGluc3RydWN0aW9ucyBhcyB3ZWxsIGFzIGRlbGV0aW9ucy4gSXQgaG93ZXZlciB3aWxsIG5vdCBiZSBhYmxlIHRvCisvLy8gdHJhY2sgaW5zdHJ1Y3Rpb24gbXV0YXRpb25zLiBJbiBzdWNoIGNhc2VzLCByZWNvcmROZXdJbnN0cnVjdGlvbiBzaG91bGQgYmUKKy8vLyBjYWxsZWQgKGZvciBlZyBpbnNpZGUgTWFjaGluZUlSQnVpbGRlcjo6cmVjb3JkSW5zZXJ0aW9uKS4KKy8vLyBBbHNvIGJlY2F1c2Ugb2YgaG93IGp1c3QgdGhlIGluc3RydWN0aW9uIGNhbiBiZSBpbnNlcnRlZCB3aXRob3V0IGFkZGluZyBhbnkKKy8vLyBvcGVyYW5kcyB0byB0aGUgaW5zdHJ1Y3Rpb24sIGluc3RydWN0aW9ucyBhcmUgdW5pcXVlZCBhbmQgaW5zZXJ0ZWQgbGF6aWx5LgorLy8vIENTRUluZm8gc2hvdWxkIGFzc2VydCB3aGVuIHRyeWluZyB0byBlbnRlciBhbiBpbmNvbXBsZXRlIGluc3RydWN0aW9uIGludG8KKy8vLyB0aGUgQ1NFTWFwLiBUaGVyZSBpcyBPcGNvZGUgbGV2ZWwgZ3JhbnVsYXJpdHkgb24gd2hpY2ggaW5zdHJ1Y3Rpb25zIGNhbiBiZQorLy8vIENTRSdkIGFuZCBmb3Igbm93LCBvbmx5IEdlbmVyaWMgaW5zdHJ1Y3Rpb25zIGFyZSBDU0VhYmxlLgorY2xhc3MgR0lTZWxDU0VJbmZvIDogcHVibGljIEdJU2VsQ2hhbmdlT2JzZXJ2ZXIgeworICAvLyBNYWtlIGl0IGFjY2Vzc2libGUgb25seSB0byBDU0VNSVJCdWlsZGVyLgorICBmcmllbmQgY2xhc3MgQ1NFTUlSQnVpbGRlcjsKKworICBCdW1wUHRyQWxsb2NhdG9yIFVuaXF1ZUluc3RyQWxsb2NhdG9yOworICBGb2xkaW5nU2V0PFVuaXF1ZU1hY2hpbmVJbnN0cj4gQ1NFTWFwOworICBNYWNoaW5lUmVnaXN0ZXJJbmZvICpNUkkgPSBudWxscHRyOworICBNYWNoaW5lRnVuY3Rpb24gKk1GID0gbnVsbHB0cjsKKyAgc3RkOjp1bmlxdWVfcHRyPENTRUNvbmZpZz4gQ1NFT3B0OworICAvLy8gS2VlcCBhIGNhY2hlIG9mIFVuaXF1ZUluc3RycyBmb3IgZWFjaCBNYWNoaW5lSW5zdHIuIEluIEdJU2VsLAorICAvLy8gb2Z0ZW4gaW5zdHJ1Y3Rpb25zIGFyZSBtdXRhdGVkICh3aGlsZSB0aGVpciBJRCBoYXMgY29tcGxldGVseSBjaGFuZ2VkKS4KKyAgLy8vIFdoZW5ldmVyIG11dGF0aW9uIGhhcHBlbnMsIGludmFsaWRhdGUgdGhlIFVuaXF1ZU1hY2hpbmVJbnN0ciBmb3IgdGhlCisgIC8vLyBNYWNoaW5lSW5zdHIKKyAgRGVuc2VNYXA8Y29uc3QgTWFjaGluZUluc3RyICosIFVuaXF1ZU1hY2hpbmVJbnN0ciAqPiBJbnN0ck1hcHBpbmc7CisKKyAgLy8vIFN0b3JlIGluc3RydWN0aW9ucyB0aGF0IGFyZSBub3QgZnVsbHkgZm9ybWVkIGluIFRlbXBvcmFyeUluc3RzLgorICAvLy8gQWxzbyBiZWNhdXNlIENTRSBpbnNlcnRpb24gaGFwcGVucyBsYXppbHksIHdlIGNhbiByZW1vdmUgaW5zdHMgZnJvbSB0aGlzCisgIC8vLyBsaXN0IGFuZCBhdm9pZCBpbnNlcnRpbmcgYW5kIHRoZW4gcmVtb3ZpbmcgZnJvbSB0aGUgQ1NFTWFwLgorICBHSVNlbFdvcmtMaXN0PDg+IFRlbXBvcmFyeUluc3RzOworCisgIC8vIE9ubHkgdXNlZCBpbiBhc3NlcnRzLgorICBEZW5zZU1hcDx1bnNpZ25lZCwgdW5zaWduZWQ+IE9wY29kZUhpdFRhYmxlOworCisgIGJvb2wgaXNVbmlxdWVNYWNoaW5lSW5zdFZhbGlkKGNvbnN0IFVuaXF1ZU1hY2hpbmVJbnN0ciAmVU1JKSBjb25zdDsKKworICB2b2lkIGludmFsaWRhdGVVbmlxdWVNYWNoaW5lSW5zdHIoVW5pcXVlTWFjaGluZUluc3RyICpVTUkpOworCisgIFVuaXF1ZU1hY2hpbmVJbnN0ciAqZ2V0Tm9kZUlmRXhpc3RzKEZvbGRpbmdTZXROb2RlSUQgJklELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQmFzaWNCbG9jayAqTUJCLCB2b2lkIComSW5zZXJ0UG9zKTsKKworICAvLy8gQWxsb2NhdGUgYW5kIGNvbnN0cnVjdCBhIG5ldyBVbmlxdWVNYWNoaW5lSW5zdHIgZm9yIE1JIGFuZCByZXR1cm4uCisgIFVuaXF1ZU1hY2hpbmVJbnN0ciAqZ2V0VW5pcXVlSW5zdHJGb3JNSShjb25zdCBNYWNoaW5lSW5zdHIgKk1JKTsKKworICB2b2lkIGluc2VydE5vZGUoVW5pcXVlTWFjaGluZUluc3RyICpVTUksIHZvaWQgKkluc2VydFBvcyA9IG51bGxwdHIpOworCisgIC8vLyBHZXQgdGhlIE1hY2hpbmVJbnN0cihVbmlxdWUpIGlmIGl0IGV4aXN0cyBhbHJlYWR5IGluIHRoZSBDU0VNYXAgYW5kIHRoZQorICAvLy8gc2FtZSBNYWNoaW5lQmFzaWNCbG9jay4KKyAgTWFjaGluZUluc3RyICpnZXRNYWNoaW5lSW5zdHJJZkV4aXN0cyhGb2xkaW5nU2V0Tm9kZUlEICZJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQmFzaWNCbG9jayAqTUJCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiZJbnNlcnRQb3MpOworCisgIC8vLyBVc2UgdGhpcyBtZXRob2QgdG8gYWxsb2NhdGUgYSBuZXcgVW5pcXVlTWFjaGluZUluc3RyIGZvciBNSSBhbmQgaW5zZXJ0IGl0CisgIC8vLyBpbnRvIHRoZSBDU0VNYXAuIE1JIHNob3VsZCByZXR1cm4gdHJ1ZSBmb3Igc2hvdWxkQ1NFKE1JLT5nZXRPcGNvZGUoKSkKKyAgdm9pZCBpbnNlcnRJbnN0cihNYWNoaW5lSW5zdHIgKk1JLCB2b2lkICpJbnNlcnRQb3MgPSBudWxscHRyKTsKKworcHVibGljOgorICBHSVNlbENTRUluZm8oKSA9IGRlZmF1bHQ7CisKKyAgdmlydHVhbCB+R0lTZWxDU0VJbmZvKCk7CisKKyAgdm9pZCBzZXRNRihNYWNoaW5lRnVuY3Rpb24gJk1GKTsKKworICAvLy8gUmVjb3JkcyBhIG5ld2x5IGNyZWF0ZWQgaW5zdCBpbiBhIGxpc3QgYW5kIGxhemlseSBpbnNlcnQgaXQgdG8gdGhlIENTRU1hcC4KKyAgLy8vIFNvbWV0aW1lcywgdGhpcyBtZXRob2QgbWlnaHQgYmUgY2FsbGVkIHdpdGggYSBwYXJ0aWFsbHkgY29uc3RydWN0ZWQKKyAgLy8vIE1hY2hpbmVJbnN0ciwKKyAgLy8gIChyaWdodCBhZnRlciBCdWlsZE1JIHdpdGhvdXQgYWRkaW5nIGFueSBvcGVyYW5kcykgLSBhbmQgaW4gc3VjaCBjYXNlcywKKyAgLy8gIGRlZmVyIHRoZSBoYXNoaW5nIG9mIHRoZSBpbnN0cnVjdGlvbiB0byBhIGxhdGVyIHN0YWdlLgorICB2b2lkIHJlY29yZE5ld0luc3RydWN0aW9uKE1hY2hpbmVJbnN0ciAqTUkpOworCisgIC8vLyBVc2UgdGhpcyBjYWxsYmFjayB0byBpbmZvcm0gQ1NFIGFib3V0IGEgbmV3bHkgZnVsbHkgY3JlYXRlZCBpbnN0cnVjdGlvbi4KKyAgdm9pZCBoYW5kbGVSZWNvcmRlZEluc3QoTWFjaGluZUluc3RyICpNSSk7CisKKyAgLy8vIFVzZSB0aGlzIGNhbGxiYWNrIHRvIGluc2VydCBhbGwgdGhlIHJlY29yZGVkIGluc3RydWN0aW9ucy4gQXQgdGhpcyBwb2ludCwKKyAgLy8vIGFsbCBvZiB0aGVzZSBpbnN0cyBuZWVkIHRvIGJlIGZ1bGx5IGNvbnN0cnVjdGVkIGFuZCBzaG91bGQgbm90IGJlIG1pc3NpbmcKKyAgLy8vIGFueSBvcGVyYW5kcy4KKyAgdm9pZCBoYW5kbGVSZWNvcmRlZEluc3RzKCk7CisKKyAgLy8vIFJlbW92ZSB0aGlzIGluc3QgZnJvbSB0aGUgQ1NFIG1hcC4gSWYgdGhpcyBpbnN0IGhhcyBub3QgYmVlbiBpbnNlcnRlZCB5ZXQsCisgIC8vLyBpdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgVGVtcGluc3RzIGxpc3QgaWYgaXQgZXhpc3RzLgorICB2b2lkIGhhbmRsZVJlbW92ZUluc3QoTWFjaGluZUluc3RyICpNSSk7CisKKyAgdm9pZCByZWxlYXNlTWVtb3J5KCk7CisKKyAgdm9pZCBzZXRDU0VDb25maWcoc3RkOjp1bmlxdWVfcHRyPENTRUNvbmZpZz4gT3B0KSB7IENTRU9wdCA9IHN0ZDo6bW92ZShPcHQpOyB9CisKKyAgYm9vbCBzaG91bGRDU0UodW5zaWduZWQgT3BjKSBjb25zdDsKKworICB2b2lkIGFuYWx5emUoTWFjaGluZUZ1bmN0aW9uICZNRik7CisKKyAgdm9pZCBjb3VudE9wY29kZUhpdCh1bnNpZ25lZCBPcGMpOworCisgIHZvaWQgcHJpbnQoKTsKKworICAvLyBPYnNlcnZlciBBUEkKKyAgdm9pZCBlcmFzaW5nSW5zdHIoTWFjaGluZUluc3RyICZNSSkgb3ZlcnJpZGU7CisgIHZvaWQgY3JlYXRlZEluc3RyKE1hY2hpbmVJbnN0ciAmTUkpIG92ZXJyaWRlOworICB2b2lkIGNoYW5naW5nSW5zdHIoTWFjaGluZUluc3RyICZNSSkgb3ZlcnJpZGU7CisgIHZvaWQgY2hhbmdlZEluc3RyKE1hY2hpbmVJbnN0ciAmTUkpIG92ZXJyaWRlOworfTsKKworY2xhc3MgVGFyZ2V0UmVnaXN0ZXJDbGFzczsKK2NsYXNzIFJlZ2lzdGVyQmFuazsKKworLy8gU2ltcGxlIGJ1aWxkZXIgY2xhc3MgdG8gZWFzaWx5IHByb2ZpbGUgcHJvcGVydGllcyBhYm91dCBNSXMuCitjbGFzcyBHSVNlbEluc3RQcm9maWxlQnVpbGRlciB7CisgIEZvbGRpbmdTZXROb2RlSUQgJklEOworICBjb25zdCBNYWNoaW5lUmVnaXN0ZXJJbmZvICZNUkk7CisKK3B1YmxpYzoKKyAgR0lTZWxJbnN0UHJvZmlsZUJ1aWxkZXIoRm9sZGluZ1NldE5vZGVJRCAmSUQsIGNvbnN0IE1hY2hpbmVSZWdpc3RlckluZm8gJk1SSSkKKyAgICAgIDogSUQoSUQpLCBNUkkoTVJJKSB7fQorICAvLyBQcm9maWxpbmcgbWV0aG9kcy4KKyAgY29uc3QgR0lTZWxJbnN0UHJvZmlsZUJ1aWxkZXIgJmFkZE5vZGVJRE9wY29kZSh1bnNpZ25lZCBPcGMpIGNvbnN0OworICBjb25zdCBHSVNlbEluc3RQcm9maWxlQnVpbGRlciAmYWRkTm9kZUlEUmVnVHlwZShjb25zdCBMTFQgJlR5KSBjb25zdDsKKyAgY29uc3QgR0lTZWxJbnN0UHJvZmlsZUJ1aWxkZXIgJmFkZE5vZGVJRFJlZ1R5cGUoY29uc3QgdW5zaWduZWQpIGNvbnN0OworCisgIGNvbnN0IEdJU2VsSW5zdFByb2ZpbGVCdWlsZGVyICYKKyAgYWRkTm9kZUlEUmVnVHlwZShjb25zdCBUYXJnZXRSZWdpc3RlckNsYXNzICpSQykgY29uc3Q7CisgIGNvbnN0IEdJU2VsSW5zdFByb2ZpbGVCdWlsZGVyICZhZGROb2RlSURSZWdUeXBlKGNvbnN0IFJlZ2lzdGVyQmFuayAqUkIpIGNvbnN0OworCisgIGNvbnN0IEdJU2VsSW5zdFByb2ZpbGVCdWlsZGVyICZhZGROb2RlSURSZWdOdW0odW5zaWduZWQgUmVnKSBjb25zdDsKKworICBjb25zdCBHSVNlbEluc3RQcm9maWxlQnVpbGRlciAmYWRkTm9kZUlESW1tZWRpYXRlKGludDY0X3QgSW1tKSBjb25zdDsKKyAgY29uc3QgR0lTZWxJbnN0UHJvZmlsZUJ1aWxkZXIgJgorICBhZGROb2RlSURNQkIoY29uc3QgTWFjaGluZUJhc2ljQmxvY2sgKk1CQikgY29uc3Q7CisKKyAgY29uc3QgR0lTZWxJbnN0UHJvZmlsZUJ1aWxkZXIgJgorICBhZGROb2RlSURNYWNoaW5lT3BlcmFuZChjb25zdCBNYWNoaW5lT3BlcmFuZCAmTU8pIGNvbnN0OworCisgIGNvbnN0IEdJU2VsSW5zdFByb2ZpbGVCdWlsZGVyICZhZGROb2RlSURGbGFnKHVuc2lnbmVkIEZsYWcpIGNvbnN0OworICBjb25zdCBHSVNlbEluc3RQcm9maWxlQnVpbGRlciAmYWRkTm9kZUlEKGNvbnN0IE1hY2hpbmVJbnN0ciAqTUkpIGNvbnN0OworfTsKKworLy8vIFNpbXBsZSB3cmFwcGVyIHRoYXQgZG9lcyB0aGUgZm9sbG93aW5nLgorLy8vIDEpIExhemlseSBldmFsdWF0ZSB0aGUgTWFjaGluZUZ1bmN0aW9uIHRvIGNvbXB1dGUgQ1NFYWJsZSBpbnN0cnVjdGlvbnMuCisvLy8gMikgQWxsb3dzIGNvbmZpZ3VyYXRpb24gb2Ygd2hpY2ggaW5zdHJ1Y3Rpb25zIGFyZSBDU0VkIHRocm91Z2ggQ1NFQ29uZmlnCisvLy8gb2JqZWN0LiBQcm92aWRlcyBhIG1ldGhvZCBjYWxsZWQgZ2V0IHdoaWNoIHRha2VzIGEgQ1NFQ29uZmlnIG9iamVjdC4KK2NsYXNzIEdJU2VsQ1NFQW5hbHlzaXNXcmFwcGVyIHsKKyAgR0lTZWxDU0VJbmZvIEluZm87CisgIE1hY2hpbmVGdW5jdGlvbiAqTUYgPSBudWxscHRyOworICBib29sIEFscmVhZHlDb21wdXRlZCA9IGZhbHNlOworCitwdWJsaWM6CisgIC8vLyBUYWtlcyBhIENTRUNvbmZpZyBvYmplY3QgdGhhdCBkZWZpbmVzIHdoYXQgb3Bjb2RlcyBnZXQgQ1NFZC4KKyAgLy8vIElmIENTRUNvbmZpZyBpcyBhbHJlYWR5IHNldCwgYW5kIHRoZSBDU0UgQW5hbHlzaXMgaGFzIGJlZW4gcHJlc2VydmVkLAorICAvLy8gaXQgd2lsbCBub3QgdXNlIHRoZSBuZXcgQ1NFT3B0KHVzZSBSZWNvbXB1dGUgdG8gZm9yY2UgdXNpbmcgdGhlIG5ldworICAvLy8gQ1NFT3B0KS4KKyAgR0lTZWxDU0VJbmZvICZnZXQoc3RkOjp1bmlxdWVfcHRyPENTRUNvbmZpZz4gQ1NFT3B0LCBib29sIFJlQ29tcHV0ZSA9IGZhbHNlKTsKKyAgdm9pZCBzZXRNRihNYWNoaW5lRnVuY3Rpb24gJk1GdW5jKSB7IE1GID0gJk1GdW5jOyB9CisgIHZvaWQgc2V0Q29tcHV0ZWQoYm9vbCBDb21wdXRlZCkgeyBBbHJlYWR5Q29tcHV0ZWQgPSBDb21wdXRlZDsgfQorICB2b2lkIHJlbGVhc2VNZW1vcnkoKSB7IEluZm8ucmVsZWFzZU1lbW9yeSgpOyB9Cit9OworCisvLy8gVGhlIGFjdHVhbCBhbmFseXNpcyBwYXNzIHdyYXBwZXIuCitjbGFzcyBHSVNlbENTRUFuYWx5c2lzV3JhcHBlclBhc3MgOiBwdWJsaWMgTWFjaGluZUZ1bmN0aW9uUGFzcyB7CisgIEdJU2VsQ1NFQW5hbHlzaXNXcmFwcGVyIFdyYXBwZXI7CisKK3B1YmxpYzoKKyAgc3RhdGljIGNoYXIgSUQ7CisgIEdJU2VsQ1NFQW5hbHlzaXNXcmFwcGVyUGFzcygpIDogTWFjaGluZUZ1bmN0aW9uUGFzcyhJRCkgeworICAgIGluaXRpYWxpemVHSVNlbENTRUFuYWx5c2lzV3JhcHBlclBhc3NQYXNzKCpQYXNzUmVnaXN0cnk6OmdldFBhc3NSZWdpc3RyeSgpKTsKKyAgfQorCisgIHZvaWQgZ2V0QW5hbHlzaXNVc2FnZShBbmFseXNpc1VzYWdlICZBVSkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgY29uc3QgR0lTZWxDU0VBbmFseXNpc1dyYXBwZXIgJmdldENTRVdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBXcmFwcGVyOyB9CisgIEdJU2VsQ1NFQW5hbHlzaXNXcmFwcGVyICZnZXRDU0VXcmFwcGVyKCkgeyByZXR1cm4gV3JhcHBlcjsgfQorCisgIGJvb2wgcnVuT25NYWNoaW5lRnVuY3Rpb24oTWFjaGluZUZ1bmN0aW9uICZNRikgb3ZlcnJpZGU7CisKKyAgdm9pZCByZWxlYXNlTWVtb3J5KCkgb3ZlcnJpZGUgeworICAgIFdyYXBwZXIucmVsZWFzZU1lbW9yeSgpOworICAgIFdyYXBwZXIuc2V0Q29tcHV0ZWQoZmFsc2UpOworICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ1NFTUlSQnVpbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ1NFTUlSQnVpbGRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmOTUzMzUKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9DU0VNSVJCdWlsZGVyLmgKQEAgLTAsMCArMSwxMDkgQEAKKy8vPT09LS0gbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ1NFTUlSQnVpbGRlci5oICAtLSotIEMrKyAtKi09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLy8gXGZpbGUKKy8vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBhIHZlcnNpb24gb2YgTWFjaGluZUlSQnVpbGRlciB3aGljaCBDU0VzIGluc3RzIHdpdGhpbgorLy8vIGEgTWFjaGluZUJhc2ljQmxvY2suCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworI2lmbmRlZiBMTFZNX0NPREVHRU5fR0xPQkFMSVNFTF9DU0VNSVJCVUlMREVSX0gKKyNkZWZpbmUgTExWTV9DT0RFR0VOX0dMT0JBTElTRUxfQ1NFTUlSQlVJTERFUl9ICisKKyNpbmNsdWRlICJsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9NYWNoaW5lSVJCdWlsZGVyLmgiCisjaW5jbHVkZSAibGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvVXRpbHMuaCIKKworbmFtZXNwYWNlIGxsdm0geworCisvLy8gRGVmaW5lcyBhIGJ1aWxkZXIgdGhhdCBkb2VzIENTRSBvZiBNYWNoaW5lSW5zdHJ1Y3Rpb25zIHVzaW5nIEdJU2VsQ1NFSW5mby4KKy8vLyBFZyB1c2FnZS4KKy8vLworLy8vCisvLy8gR0lTZWxDU0VJbmZvICpJbmZvID0KKy8vLyAmZ2V0QW5hbHlzaXM8R0lTZWxDU0VBbmFseXNpc1dyYXBwZXJQYXNzPigpLmdldENTRUluZm8oKTsgQ1NFTUlSQnVpbGRlcgorLy8vIENCKEJ1aWxkZXIuZ2V0U3RhdGUoKSk7IENCLnNldENTRUluZm8oSW5mbyk7IGF1dG8gQSA9IENCLmJ1aWxkQ29uc3RhbnQoczMyLAorLy8vIDQyKTsgYXV0byBCID0gQ0IuYnVpbGRDb25zdGFudChzMzIsIDQyKTsgYXNzZXJ0KEEgPT0gQik7IHVuc2lnbmVkIENSZWcgPQorLy8vIE1SSS5jcmVhdGVHZW5lcmljVmlydHVhbFJlZ2lzdGVyKHMzMik7IGF1dG8gQyA9IENCLmJ1aWxkQ29uc3RhbnQoQ1JlZywgNDIpOworLy8vIGFzc2VydChDLT5nZXRPcGNvZGUoKSA9PSBUYXJnZXRPcGNvZGU6OkNPUFkpOworLy8vIEV4cGxpY2l0bHkgcGFzc2luZyBpbiBhIHJlZ2lzdGVyIHdvdWxkIG1hdGVyaWFsaXplIGEgY29weSBpZiBwb3NzaWJsZS4KKy8vLyBDU0VNSVJCdWlsZGVyIGFsc28gZG9lcyB0cml2aWFsIGNvbnN0YW50IGZvbGRpbmcgZm9yIGJpbmFyeSBvcHMuCitjbGFzcyBDU0VNSVJCdWlsZGVyIDogcHVibGljIE1hY2hpbmVJUkJ1aWxkZXIgeworCisgIC8vLyBSZXR1cm5zIHRydWUgaWYgQSBkb21pbmF0ZXMgQiAod2l0aGluIHRoZSBzYW1lIGJhc2ljIGJsb2NrKS4KKyAgLy8vIEJvdGggaXRlcmF0b3JzIG11c3QgYmUgaW4gdGhlIHNhbWUgYmFzaWMgYmxvY2suCisgIC8vCisgIC8vIFRPRE86IEFub3RoZXIgYXBwcm9hY2ggZm9yIGNoZWNraW5nIGRvbWluYW5jZSBpcyBoYXZpbmcgdHdvIGl0ZXJhdG9ycyBhbmQKKyAgLy8gbWFraW5nIHRoZW0gZ28gdG93YXJkcyBlYWNoIG90aGVyIHVudGlsIHRoZXkgbWVldCBvciByZWFjaCBiZWdpbi9lbmQuIFdoaWNoCisgIC8vIGFwcHJvYWNoIGlzIGJldHRlcj8gU2hvdWxkIHRoaXMgZXZlbiBjaGFuZ2UgZHluYW1pY2FsbHk/IEZvciBHX0NPTlNUQU5UUworICAvLyBtb3N0IG9mIHdoaWNoIHdpbGwgYmUgYXQgdGhlIHRvcCBvZiB0aGUgQkIsIHRoZSB0b3AgZG93biBhcHByb2FjaCB3b3VsZCBiZQorICAvLyBhIGJldHRlciBjaG9pY2UuIERvZXMgSVJUcmFuc2xhdG9yIHBsYWNpbmcgY29uc3RhbnRzIGF0IHRoZSBiZWdpbm5pbmcgc3RpbGwKKyAgLy8gbWFrZSBzZW5zZT8gU2hvdWxkIHRoaXMgY2hhbmdlIGJhc2VkIG9uIE9wY29kZT8KKyAgYm9vbCBkb21pbmF0ZXMoTWFjaGluZUJhc2ljQmxvY2s6OmNvbnN0X2l0ZXJhdG9yIEEsCisgICAgICAgICAgICAgICAgIE1hY2hpbmVCYXNpY0Jsb2NrOjpjb25zdF9pdGVyYXRvciBCKSBjb25zdDsKKworICAvLy8gRm9yIGdpdmVuIElELCBmaW5kIGEgbWFjaGluZWluc3RyIGluIHRoZSBDU0UgTWFwLiBJZiBmb3VuZCwgY2hlY2sgaWYgaXQKKyAgLy8vIGRvbWluYXRlcyB0aGUgY3VycmVudCBpbnNlcnRpb24gcG9pbnQgYW5kIGlmIG5vdCwgbW92ZSBpdCBqdXN0IGJlZm9yZSB0aGUKKyAgLy8vIGN1cnJlbnQgaW5zZXJ0aW9uIHBvaW50IGFuZCByZXR1cm4gaXQuIElmIG5vdCBmb3VuZCwgcmV0dXJuIE51bGwKKyAgLy8vIE1hY2hpbmVJbnN0ckJ1aWxkZXIuCisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgZ2V0RG9taW5hdGluZ0luc3RyRm9ySUQoRm9sZGluZ1NldE5vZGVJRCAmSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqJk5vZGVJbnNlcnRQb3MpOworICAvLy8gU2ltcGxlIGNoZWNrIGlmIHdlIGNhbiBDU0UgKHdlIGhhdmUgdGhlIENTRUluZm8pIG9yIGlmIHRoaXMgT3Bjb2RlIGlzCisgIC8vLyBzYWZlIHRvIENTRS4KKyAgYm9vbCBjYW5QZXJmb3JtQ1NFRm9yT3BjKHVuc2lnbmVkIE9wYykgY29uc3Q7CisKKyAgdm9pZCBwcm9maWxlRHN0T3AoY29uc3QgRHN0T3AgJk9wLCBHSVNlbEluc3RQcm9maWxlQnVpbGRlciAmQikgY29uc3Q7CisKKyAgdm9pZCBwcm9maWxlRHN0T3BzKEFycmF5UmVmPERzdE9wPiBPcHMsIEdJU2VsSW5zdFByb2ZpbGVCdWlsZGVyICZCKSBjb25zdCB7CisgICAgZm9yIChjb25zdCBEc3RPcCAmT3AgOiBPcHMpCisgICAgICBwcm9maWxlRHN0T3AoT3AsIEIpOworICB9CisKKyAgdm9pZCBwcm9maWxlU3JjT3AoY29uc3QgU3JjT3AgJk9wLCBHSVNlbEluc3RQcm9maWxlQnVpbGRlciAmQikgY29uc3Q7CisKKyAgdm9pZCBwcm9maWxlU3JjT3BzKEFycmF5UmVmPFNyY09wPiBPcHMsIEdJU2VsSW5zdFByb2ZpbGVCdWlsZGVyICZCKSBjb25zdCB7CisgICAgZm9yIChjb25zdCBTcmNPcCAmT3AgOiBPcHMpCisgICAgICBwcm9maWxlU3JjT3AoT3AsIEIpOworICB9CisKKyAgdm9pZCBwcm9maWxlTUJCT3Bjb2RlKEdJU2VsSW5zdFByb2ZpbGVCdWlsZGVyICZCLCB1bnNpZ25lZCBPcGMpIGNvbnN0OworCisgIHZvaWQgcHJvZmlsZUV2ZXJ5dGhpbmcodW5zaWduZWQgT3BjLCBBcnJheVJlZjxEc3RPcD4gRHN0T3BzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFNyY09wPiBTcmNPcHMsIE9wdGlvbmFsPHVuc2lnbmVkPiBGbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICBHSVNlbEluc3RQcm9maWxlQnVpbGRlciAmQikgY29uc3Q7CisKKyAgLy8gVGFrZXMgYSBNYWNoaW5lSW5zdHJCdWlsZGVyIGFuZCBpbnNlcnRzIGl0IGludG8gdGhlIENTRU1hcCB1c2luZyB0aGUKKyAgLy8gTm9kZUluc2VydFBvcy4KKyAgTWFjaGluZUluc3RyQnVpbGRlciBtZW1vaXplTUkoTWFjaGluZUluc3RyQnVpbGRlciBNSUIsIHZvaWQgKk5vZGVJbnNlcnRQb3MpOworCisgIC8vIElmIHdlIGhhdmUgY2FuIENTRSBhbiBpbnN0cnVjdGlvbiwgYnV0IHN0aWxsIG5lZWQgdG8gbWF0ZXJpYWxpemUgdG8gYSBWUmVnLAorICAvLyB3ZSBlbWl0IGEgY29weSBmcm9tIHRoZSBDU0UnZCBpbnN0IHRvIHRoZSBWUmVnLgorICBNYWNoaW5lSW5zdHJCdWlsZGVyIGdlbmVyYXRlQ29waWVzSWZSZXF1aXJlZChBcnJheVJlZjxEc3RPcD4gRHN0T3BzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lSW5zdHJCdWlsZGVyICZNSUIpOworCisgIC8vIElmIHdlIGhhdmUgY2FuIENTRSBhbiBpbnN0cnVjdGlvbiwgYnV0IHN0aWxsIG5lZWQgdG8gbWF0ZXJpYWxpemUgdG8gYSBWUmVnLAorICAvLyBjaGVjayBpZiB3ZSBjYW4gZ2VuZXJhdGUgY29waWVzLiBJdCdzIG5vdCBwb3NzaWJsZSB0byByZXR1cm4gYSBzaW5nbGUgTUlCLAorICAvLyB3aGlsZSBlbWl0dGluZyBjb3BpZXMgdG8gbXVsdGlwbGUgdnJlZ3MuCisgIGJvb2wgY2hlY2tDb3B5VG9EZWZzUG9zc2libGUoQXJyYXlSZWY8RHN0T3A+IERzdE9wcyk7CisKK3B1YmxpYzoKKyAgLy8gUHVsbCBpbiBiYXNlIGNsYXNzIGNvbnN0cnVjdG9ycy4KKyAgdXNpbmcgTWFjaGluZUlSQnVpbGRlcjo6TWFjaGluZUlSQnVpbGRlcjsKKyAgLy8gVW5oaWRlIGJ1aWxkSW5zdHIKKyAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEluc3RyKHVuc2lnbmVkIE9wYywgQXJyYXlSZWY8RHN0T3A+IERzdE9wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFNyY09wPiBTcmNPcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gRmxhZyA9IE5vbmUpIG92ZXJyaWRlOworICAvLyBCcmluZyBpbiB0aGUgb3RoZXIgb3ZlcmxvYWQgZnJvbSB0aGUgYmFzZSBjbGFzcy4KKyAgdXNpbmcgTWFjaGluZUlSQnVpbGRlcjo6YnVpbGRDb25zdGFudDsKKworICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkQ29uc3RhbnQoY29uc3QgRHN0T3AgJlJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnN0YW50SW50ICZWYWwpIG92ZXJyaWRlOworCisgIC8vIEJyaW5nIGluIHRoZSBvdGhlciBvdmVybG9hZCBmcm9tIHRoZSBiYXNlIGNsYXNzLgorICB1c2luZyBNYWNoaW5lSVJCdWlsZGVyOjpidWlsZEZDb25zdGFudDsKKyAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEZDb25zdGFudChjb25zdCBEc3RPcCAmUmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnN0YW50RlAgJlZhbCkgb3ZlcnJpZGU7Cit9OworfSAvLyBuYW1lc3BhY2UgbGx2bQorI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9DYWxsTG93ZXJpbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0NhbGxMb3dlcmluZy5oCmluZGV4IDMyOTgwY2UuLjliNzJiNzAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0NhbGxMb3dlcmluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0NhbGxMb3dlcmluZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0NhbGxMb3dlcmluZy5oIC0gQ2FsbCBsb3dlcmluZyAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpAQCAtNDAsNiArMzksNyBAQAogY2xhc3MgQ2FsbExvd2VyaW5nIHsKICAgY29uc3QgVGFyZ2V0TG93ZXJpbmcgKlRMSTsKIAorICB2aXJ0dWFsIHZvaWQgYW5jaG9yKCk7CiBwdWJsaWM6CiAgIHN0cnVjdCBBcmdJbmZvIHsKICAgICB1bnNpZ25lZCBSZWc7CkBAIC0xMDgsNiArMTA4LDkgQEAKICAgICBNYWNoaW5lSVJCdWlsZGVyICZNSVJCdWlsZGVyOwogICAgIE1hY2hpbmVSZWdpc3RlckluZm8gJk1SSTsKICAgICBDQ0Fzc2lnbkZuICpBc3NpZ25GbjsKKworICBwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBhbmNob3IoKTsKICAgfTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ29tYmluZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0NvbWJpbmVyLmgKaW5kZXggZmE0OWU4Yy4uMTJhMWY5NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ29tYmluZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9Db21iaW5lci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PSAtLS0tLSBsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9Db21iaW5lci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSA9PSAvLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTIxLDMxICsyMCwyNSBAQAogbmFtZXNwYWNlIGxsdm0gewogY2xhc3MgTWFjaGluZVJlZ2lzdGVySW5mbzsKIGNsYXNzIENvbWJpbmVySW5mbzsKK2NsYXNzIEdJU2VsQ1NFSW5mbzsKIGNsYXNzIFRhcmdldFBhc3NDb25maWc7CiBjbGFzcyBNYWNoaW5lRnVuY3Rpb247CiAKLWNsYXNzIENvbWJpbmVyQ2hhbmdlT2JzZXJ2ZXIgewotcHVibGljOgotICB2aXJ0dWFsIH5Db21iaW5lckNoYW5nZU9ic2VydmVyKCkge30KLQotICAvLy8gQW4gaW5zdHJ1Y3Rpb24gd2FzIGVyYXNlZC4KLSAgdmlydHVhbCB2b2lkIGVyYXNlZEluc3RyKE1hY2hpbmVJbnN0ciAmTUkpID0gMDsKLSAgLy8vIEFuIGluc3RydWN0aW9uIHdhcyBjcmVhdGVkIGFuZCBpbnNlZXJ0ZWQgaW50byB0aGUgZnVuY3Rpb24uCi0gIHZpcnR1YWwgdm9pZCBjcmVhdGVkSW5zdHIoTWFjaGluZUluc3RyICZNSSkgPSAwOwotfTsKLQogY2xhc3MgQ29tYmluZXIgewogcHVibGljOgogICBDb21iaW5lcihDb21iaW5lckluZm8gJkNvbWJpbmVySW5mbywgY29uc3QgVGFyZ2V0UGFzc0NvbmZpZyAqVFBDKTsKIAotICBib29sIGNvbWJpbmVNYWNoaW5lSW5zdHJzKE1hY2hpbmVGdW5jdGlvbiAmTUYpOworICAvLy8gSWYgQ1NFSW5mbyBpcyBub3QgbnVsbCwgdGhlbiB0aGUgQ29tYmluZXIgd2lsbCBzZXR1cCBvYnNlcnZlciBmb3IKKyAgLy8vIENTRUluZm8gYW5kIGluc3RhbnRpYXRlIGEgQ1NFTUlSQnVpbGRlci4gUGFzcyBudWxscHRyIGlmIENTRSBpcyBub3QKKyAgLy8vIG5lZWRlZC4KKyAgYm9vbCBjb21iaW5lTWFjaGluZUluc3RycyhNYWNoaW5lRnVuY3Rpb24gJk1GLCBHSVNlbENTRUluZm8gKkNTRUluZm8pOwogCiBwcm90ZWN0ZWQ6CiAgIENvbWJpbmVySW5mbyAmQ0luZm87CiAKICAgTWFjaGluZVJlZ2lzdGVySW5mbyAqTVJJID0gbnVsbHB0cjsKICAgY29uc3QgVGFyZ2V0UGFzc0NvbmZpZyAqVFBDOwotICBNYWNoaW5lSVJCdWlsZGVyIEJ1aWxkZXI7CisgIHN0ZDo6dW5pcXVlX3B0cjxNYWNoaW5lSVJCdWlsZGVyPiBCdWlsZGVyOwogfTsKIAogfSAvLyBFbmQgbmFtZXNwYWNlIGxsdm0uCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9Db21iaW5lckhlbHBlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ29tYmluZXJIZWxwZXIuaAppbmRleCBlZTY3ZjkwLi5lZTMwYmE5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9Db21iaW5lckhlbHBlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0NvbWJpbmVySGVscGVyLmgKQEAgLTEsOSArMSw4IEBACi0vLz09IGxsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0NvbWJpbmVySGVscGVyLmggLS0tLS0tLS0tLS0tLS0gLSotIEMrKyAtKi09PS8vCisvLz09PS0tIGxsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0NvbWJpbmVySGVscGVyLmggLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjAsMjEgKzE5LDI3IEBACiAKIG5hbWVzcGFjZSBsbHZtIHsKIAotY2xhc3MgQ29tYmluZXJDaGFuZ2VPYnNlcnZlcjsKK2NsYXNzIEdJU2VsQ2hhbmdlT2JzZXJ2ZXI7CiBjbGFzcyBNYWNoaW5lSVJCdWlsZGVyOwogY2xhc3MgTWFjaGluZVJlZ2lzdGVySW5mbzsKIGNsYXNzIE1hY2hpbmVJbnN0cjsKK2NsYXNzIE1hY2hpbmVPcGVyYW5kOwogCiBjbGFzcyBDb21iaW5lckhlbHBlciB7CiAgIE1hY2hpbmVJUkJ1aWxkZXIgJkJ1aWxkZXI7CiAgIE1hY2hpbmVSZWdpc3RlckluZm8gJk1SSTsKLSAgQ29tYmluZXJDaGFuZ2VPYnNlcnZlciAmT2JzZXJ2ZXI7Ci0KLSAgdm9pZCBlcmFzZUluc3RyKE1hY2hpbmVJbnN0ciAmTUkpOwotICB2b2lkIHNjaGVkdWxlRm9yVmlzaXQoTWFjaGluZUluc3RyICZNSSk7CisgIEdJU2VsQ2hhbmdlT2JzZXJ2ZXIgJk9ic2VydmVyOwogCiBwdWJsaWM6Ci0gIENvbWJpbmVySGVscGVyKENvbWJpbmVyQ2hhbmdlT2JzZXJ2ZXIgJk9ic2VydmVyLCBNYWNoaW5lSVJCdWlsZGVyICZCKTsKKyAgQ29tYmluZXJIZWxwZXIoR0lTZWxDaGFuZ2VPYnNlcnZlciAmT2JzZXJ2ZXIsIE1hY2hpbmVJUkJ1aWxkZXIgJkIpOworCisgIC8vLyBNYWNoaW5lUmVnaXN0ZXJJbmZvOjpyZXBsYWNlUmVnV2l0aCgpIGFuZCBpbmZvcm0gdGhlIG9ic2VydmVyIG9mIHRoZSBjaGFuZ2VzCisgIHZvaWQgcmVwbGFjZVJlZ1dpdGgoTWFjaGluZVJlZ2lzdGVySW5mbyAmTVJJLCB1bnNpZ25lZCBGcm9tUmVnLCB1bnNpZ25lZCBUb1JlZykgY29uc3Q7CisKKyAgLy8vIFJlcGxhY2UgYSBzaW5nbGUgcmVnaXN0ZXIgb3BlcmFuZCB3aXRoIGEgbmV3IHJlZ2lzdGVyIGFuZCBpbmZvcm0gdGhlCisgIC8vLyBvYnNlcnZlciBvZiB0aGUgY2hhbmdlcy4KKyAgdm9pZCByZXBsYWNlUmVnT3BXaXRoKE1hY2hpbmVSZWdpc3RlckluZm8gJk1SSSwgTWFjaGluZU9wZXJhbmQgJkZyb21SZWdPcCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFRvUmVnKSBjb25zdDsKIAogICAvLy8gSWYgXHAgTUkgaXMgQ09QWSwgdHJ5IHRvIGNvbWJpbmUgaXQuCiAgIC8vLyBSZXR1cm5zIHRydWUgaWYgTUkgY2hhbmdlZC4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0NvbWJpbmVySW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ29tYmluZXJJbmZvLmgKaW5kZXggOThjNWI5OC4uM2IwOWE4ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ29tYmluZXJJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ29tYmluZXJJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ29tYmluZXJJbmZvLmggLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTcsNyArMTYsNyBAQAogI2luY2x1ZGUgPGNhc3NlcnQ+CiBuYW1lc3BhY2UgbGx2bSB7CiAKLWNsYXNzIENvbWJpbmVyQ2hhbmdlT2JzZXJ2ZXI7CitjbGFzcyBHSVNlbENoYW5nZU9ic2VydmVyOwogY2xhc3MgTGVnYWxpemVySW5mbzsKIGNsYXNzIE1hY2hpbmVJbnN0cjsKIGNsYXNzIE1hY2hpbmVJUkJ1aWxkZXI7CkBAIC00Myw3ICs0MiwxOCBAQAogICAvLy8gaWxsZWdhbCBvcHMgdGhhdCBhcmUgY3JlYXRlZC4KICAgYm9vbCBMZWdhbGl6ZUlsbGVnYWxPcHM7IC8vIFRPRE86IE1ha2UgdXNlIG9mIHRoaXMuCiAgIGNvbnN0IExlZ2FsaXplckluZm8gKkxJbmZvOwotICB2aXJ0dWFsIGJvb2wgY29tYmluZShDb21iaW5lckNoYW5nZU9ic2VydmVyICZPYnNlcnZlciwgTWFjaGluZUluc3RyICZNSSwKKworICAvLy8gQXR0ZW1wdCB0byBjb21iaW5lIGluc3RydWN0aW9ucyB1c2luZyBNSSBhcyB0aGUgcm9vdC4KKyAgLy8vCisgIC8vLyBVc2UgT2JzZXJ2ZXIgdG8gcmVwb3J0IHRoZSBjcmVhdGlvbiwgbW9kaWZpY2F0aW9uLCBhbmQgZXJhc3VyZSBvZgorICAvLy8gaW5zdHJ1Y3Rpb25zLiBHSVNlbENoYW5nZU9ic2VydmVyIHdpbGwgYXV0b21hdGljYWxseSByZXBvcnQgY2VydGFpbgorICAvLy8ga2luZHMgb2Ygb3BlcmF0aW9ucy4gVGhlc2Ugb3BlcmF0aW9ucyBhcmU6CisgIC8vLyAqIEluc3RydWN0aW9ucyB0aGF0IGFyZSBuZXdseSBpbnNlcnRlZCBpbnRvIHRoZSBNYWNoaW5lRnVuY3Rpb24KKyAgLy8vICogSW5zdHJ1Y3Rpb25zIHRoYXQgYXJlIGVyYXNlZCBmcm9tIHRoZSBNYWNoaW5lRnVuY3Rpb24uCisgIC8vLworICAvLy8gSG93ZXZlciwgaXQgaXMgaW1wb3J0YW50IHRvIHJlcG9ydCBpbnN0cnVjdGlvbiBtb2RpZmljYXRpb24gYW5kIHRoaXMgaXMKKyAgLy8vIG5vdCBhdXRvbWF0aWMuCisgIHZpcnR1YWwgYm9vbCBjb21iaW5lKEdJU2VsQ2hhbmdlT2JzZXJ2ZXIgJk9ic2VydmVyLCBNYWNoaW5lSW5zdHIgJk1JLAogICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lSVJCdWlsZGVyICZCKSBjb25zdCA9IDA7CiB9OwogfSAvLyBuYW1lc3BhY2UgbGx2bQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ29uc3RhbnRGb2xkaW5nTUlSQnVpbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ29uc3RhbnRGb2xkaW5nTUlSQnVpbGRlci5oCmluZGV4IDhkNjFmOWEuLmU4MTdkOWIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0NvbnN0YW50Rm9sZGluZ01JUkJ1aWxkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9Db25zdGFudEZvbGRpbmdNSVJCdWlsZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0NvbnN0YW50Rm9sZGluZ01JUkJ1aWxkZXIuaCAgLS0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCkBAIC0xNSw5MSArMTQsMjAgQEAKIAogbmFtZXNwYWNlIGxsdm0gewogCi1zdGF0aWMgT3B0aW9uYWw8QVBJbnQ+IENvbnN0YW50Rm9sZEJpbk9wKHVuc2lnbmVkIE9wY29kZSwgY29uc3QgdW5zaWduZWQgT3AxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBPcDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1hY2hpbmVSZWdpc3RlckluZm8gJk1SSSkgewotICBhdXRvIE1heWJlT3AxQ3N0ID0gZ2V0Q29uc3RhbnRWUmVnVmFsKE9wMSwgTVJJKTsKLSAgYXV0byBNYXliZU9wMkNzdCA9IGdldENvbnN0YW50VlJlZ1ZhbChPcDIsIE1SSSk7Ci0gIGlmIChNYXliZU9wMUNzdCAmJiBNYXliZU9wMkNzdCkgewotICAgIExMVCBUeSA9IE1SSS5nZXRUeXBlKE9wMSk7Ci0gICAgQVBJbnQgQzEoVHkuZ2V0U2l6ZUluQml0cygpLCAqTWF5YmVPcDFDc3QsIHRydWUpOwotICAgIEFQSW50IEMyKFR5LmdldFNpemVJbkJpdHMoKSwgKk1heWJlT3AyQ3N0LCB0cnVlKTsKLSAgICBzd2l0Y2ggKE9wY29kZSkgewotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFRhcmdldE9wY29kZTo6R19BREQ6Ci0gICAgICByZXR1cm4gQzEgKyBDMjsKLSAgICBjYXNlIFRhcmdldE9wY29kZTo6R19BTkQ6Ci0gICAgICByZXR1cm4gQzEgJiBDMjsKLSAgICBjYXNlIFRhcmdldE9wY29kZTo6R19BU0hSOgotICAgICAgcmV0dXJuIEMxLmFzaHIoQzIpOwotICAgIGNhc2UgVGFyZ2V0T3Bjb2RlOjpHX0xTSFI6Ci0gICAgICByZXR1cm4gQzEubHNocihDMik7Ci0gICAgY2FzZSBUYXJnZXRPcGNvZGU6OkdfTVVMOgotICAgICAgcmV0dXJuIEMxICogQzI7Ci0gICAgY2FzZSBUYXJnZXRPcGNvZGU6OkdfT1I6Ci0gICAgICByZXR1cm4gQzEgfCBDMjsKLSAgICBjYXNlIFRhcmdldE9wY29kZTo6R19TSEw6Ci0gICAgICByZXR1cm4gQzEgPDwgQzI7Ci0gICAgY2FzZSBUYXJnZXRPcGNvZGU6OkdfU1VCOgotICAgICAgcmV0dXJuIEMxIC0gQzI7Ci0gICAgY2FzZSBUYXJnZXRPcGNvZGU6OkdfWE9SOgotICAgICAgcmV0dXJuIEMxIF4gQzI7Ci0gICAgY2FzZSBUYXJnZXRPcGNvZGU6OkdfVURJVjoKLSAgICAgIGlmICghQzIuZ2V0Qm9vbFZhbHVlKCkpCi0gICAgICAgIGJyZWFrOwotICAgICAgcmV0dXJuIEMxLnVkaXYoQzIpOwotICAgIGNhc2UgVGFyZ2V0T3Bjb2RlOjpHX1NESVY6Ci0gICAgICBpZiAoIUMyLmdldEJvb2xWYWx1ZSgpKQotICAgICAgICBicmVhazsKLSAgICAgIHJldHVybiBDMS5zZGl2KEMyKTsKLSAgICBjYXNlIFRhcmdldE9wY29kZTo6R19VUkVNOgotICAgICAgaWYgKCFDMi5nZXRCb29sVmFsdWUoKSkKLSAgICAgICAgYnJlYWs7Ci0gICAgICByZXR1cm4gQzEudXJlbShDMik7Ci0gICAgY2FzZSBUYXJnZXRPcGNvZGU6OkdfU1JFTToKLSAgICAgIGlmICghQzIuZ2V0Qm9vbFZhbHVlKCkpCi0gICAgICAgIGJyZWFrOwotICAgICAgcmV0dXJuIEMxLnNyZW0oQzIpOwotICAgIH0KLSAgfQotICByZXR1cm4gTm9uZTsKLX0KLQogLy8vIEFuIE1JUkJ1aWxkZXIgd2hpY2ggZG9lcyB0cml2aWFsIGNvbnN0YW50IGZvbGRpbmcgb2YgYmluYXJ5IG9wcy4KIC8vLyBDYWxscyB0byBidWlsZEluc3RyIHdpbGwgYWxzbyB0cnkgdG8gY29uc3RhbnQgZm9sZCBiaW5hcnkgb3BzLgotY2xhc3MgQ29uc3RhbnRGb2xkaW5nTUlSQnVpbGRlcgotICAgIDogcHVibGljIEZvbGRhYmxlSW5zdHJ1Y3Rpb25zQnVpbGRlcjxDb25zdGFudEZvbGRpbmdNSVJCdWlsZGVyPiB7CitjbGFzcyBDb25zdGFudEZvbGRpbmdNSVJCdWlsZGVyIDogcHVibGljIE1hY2hpbmVJUkJ1aWxkZXIgewogcHVibGljOgogICAvLyBQdWxsIGluIGJhc2UgY2xhc3MgY29uc3RydWN0b3JzLgotICB1c2luZyBGb2xkYWJsZUluc3RydWN0aW9uc0J1aWxkZXI8Ci0gICAgICBDb25zdGFudEZvbGRpbmdNSVJCdWlsZGVyPjo6Rm9sZGFibGVJbnN0cnVjdGlvbnNCdWlsZGVyOwotICAvLyBVbmhpZGUgYnVpbGRJbnN0cgotICB1c2luZyBGb2xkYWJsZUluc3RydWN0aW9uc0J1aWxkZXI8Q29uc3RhbnRGb2xkaW5nTUlSQnVpbGRlcj46OmJ1aWxkSW5zdHI7CisgIHVzaW5nIE1hY2hpbmVJUkJ1aWxkZXI6Ok1hY2hpbmVJUkJ1aWxkZXI7CiAKLSAgLy8gSW1wbGVtZW50IGJ1aWxkQmluYXJ5T3AgcmVxdWlyZWQgYnkgRm9sZGFibGVJbnN0cnVjdGlvbnNCdWlsZGVyIHdoaWNoCi0gIC8vIHRyaWVzIHRvIGNvbnN0YW50IGZvbGQuCi0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRCaW5hcnlPcCh1bnNpZ25lZCBPcGNvZGUsIHVuc2lnbmVkIERzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFNyYzAsIHVuc2lnbmVkIFNyYzEpIHsKLSAgICB2YWxpZGF0ZUJpbmFyeU9wKERzdCwgU3JjMCwgU3JjMSk7Ci0gICAgYXV0byBNYXliZUNzdCA9IENvbnN0YW50Rm9sZEJpbk9wKE9wY29kZSwgU3JjMCwgU3JjMSwgZ2V0TUYoKS5nZXRSZWdJbmZvKCkpOwotICAgIGlmIChNYXliZUNzdCkKLSAgICAgIHJldHVybiBidWlsZENvbnN0YW50KERzdCwgTWF5YmVDc3QtPmdldFNFeHRWYWx1ZSgpKTsKLSAgICByZXR1cm4gYnVpbGRJbnN0cihPcGNvZGUpLmFkZERlZihEc3QpLmFkZFVzZShTcmMwKS5hZGRVc2UoU3JjMSk7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0VHksIHR5cGVuYW1lIFVzZUFyZzFUeSwgdHlwZW5hbWUgVXNlQXJnMlR5PgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkSW5zdHIodW5zaWduZWQgT3BjLCBEc3RUeSAmJlR5LCBVc2VBcmcxVHkgJiZBcmcxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlQXJnMlR5ICYmQXJnMikgewotICAgIHVuc2lnbmVkIERzdCA9IGdldERlc3RGcm9tQXJnKFR5KTsKLSAgICByZXR1cm4gYnVpbGRJbnN0cihPcGMsIERzdCwgZ2V0UmVnRnJvbUFyZyhzdGQ6OmZvcndhcmQ8VXNlQXJnMVR5PihBcmcxKSksCi0gICAgICAgICAgICAgICAgICAgICAgZ2V0UmVnRnJvbUFyZyhzdGQ6OmZvcndhcmQ8VXNlQXJnMlR5PihBcmcyKSkpOwotICB9CisgIHZpcnR1YWwgfkNvbnN0YW50Rm9sZGluZ01JUkJ1aWxkZXIoKSA9IGRlZmF1bHQ7CiAKICAgLy8gVHJ5IHRvIHByb3ZpZGUgYW4gb3ZlcmxvYWQgZm9yIGJ1aWxkSW5zdHIgZm9yIGJpbmFyeSBvcHMgaW4gb3JkZXIgdG8KICAgLy8gY29uc3RhbnQgZm9sZC4KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEluc3RyKHVuc2lnbmVkIE9wYywgdW5zaWduZWQgRHN0LCB1bnNpZ25lZCBTcmMwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgU3JjMSkgeworICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkSW5zdHIodW5zaWduZWQgT3BjLCBBcnJheVJlZjxEc3RPcD4gRHN0T3BzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8U3JjT3A+IFNyY09wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBGbGFncyA9IE5vbmUpIG92ZXJyaWRlIHsKICAgICBzd2l0Y2ggKE9wYykgewogICAgIGRlZmF1bHQ6CiAgICAgICBicmVhazsKQEAgLTExNiwxOSArNDQsMTggQEAKICAgICBjYXNlIFRhcmdldE9wY29kZTo6R19TRElWOgogICAgIGNhc2UgVGFyZ2V0T3Bjb2RlOjpHX1VSRU06CiAgICAgY2FzZSBUYXJnZXRPcGNvZGU6OkdfU1JFTTogewotICAgICAgcmV0dXJuIGJ1aWxkQmluYXJ5T3AoT3BjLCBEc3QsIFNyYzAsIFNyYzEpOworICAgICAgYXNzZXJ0KERzdE9wcy5zaXplKCkgPT0gMSAmJiAiSW52YWxpZCBkc3Qgb3BzIik7CisgICAgICBhc3NlcnQoU3JjT3BzLnNpemUoKSA9PSAyICYmICJJbnZhbGlkIHNyYyBvcHMiKTsKKyAgICAgIGNvbnN0IERzdE9wICZEc3QgPSBEc3RPcHNbMF07CisgICAgICBjb25zdCBTcmNPcCAmU3JjMCA9IFNyY09wc1swXTsKKyAgICAgIGNvbnN0IFNyY09wICZTcmMxID0gU3JjT3BzWzFdOworICAgICAgaWYgKGF1dG8gTWF5YmVDc3QgPQorICAgICAgICAgICAgICBDb25zdGFudEZvbGRCaW5PcChPcGMsIFNyYzAuZ2V0UmVnKCksIFNyYzEuZ2V0UmVnKCksICpnZXRNUkkoKSkpCisgICAgICAgIHJldHVybiBidWlsZENvbnN0YW50KERzdCwgTWF5YmVDc3QtPmdldFNFeHRWYWx1ZSgpKTsKKyAgICAgIGJyZWFrOwogICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIGJ1aWxkSW5zdHIoT3BjKS5hZGREZWYoRHN0KS5hZGRVc2UoU3JjMCkuYWRkVXNlKFNyYzEpOwotICB9Ci0KLSAgLy8gRmFsbGJhY2sgaW1wbGVtZW50YXRpb24gb2YgYnVpbGRJbnN0ci4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIERzdFR5LCB0eXBlbmFtZS4uLiBVc2VBcmdzVHk+Ci0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRJbnN0cih1bnNpZ25lZCBPcGMsIERzdFR5ICYmVHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VBcmdzVHkgJiYuLi4gQXJncykgewotICAgIGF1dG8gTUlCID0gYnVpbGRJbnN0cihPcGMpLmFkZERlZihnZXREZXN0RnJvbUFyZyhUeSkpOwotICAgIGFkZFVzZXNGcm9tQXJncyhNSUIsIHN0ZDo6Zm9yd2FyZDxVc2VBcmdzVHk+KEFyZ3MpLi4uKTsKLSAgICByZXR1cm4gTUlCOworICAgIHJldHVybiBNYWNoaW5lSVJCdWlsZGVyOjpidWlsZEluc3RyKE9wYywgRHN0T3BzLCBTcmNPcHMpOwogICB9CiB9OwogfSAvLyBuYW1lc3BhY2UgbGx2bQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvR0lTZWxDaGFuZ2VPYnNlcnZlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvR0lTZWxDaGFuZ2VPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NjkxY2IKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9HSVNlbENoYW5nZU9ic2VydmVyLmgKQEAgLTAsMCArMSwxMTcgQEAKKy8vPT09LS0tLS0gbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvR0lTZWxDaGFuZ2VPYnNlcnZlci5oIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8vIFRoaXMgY29udGFpbnMgY29tbW9uIGNvZGUgdG8gYWxsb3cgY2xpZW50cyB0byBub3RpZnkgY2hhbmdlcyB0byBtYWNoaW5lCisvLy8gaW5zdHIuCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKyNpZm5kZWYgTExWTV9DT0RFR0VOX0dMT0JBTElTRUxfR0lTRUxDSEFOR0VPQlNFUlZFUl9ICisjZGVmaW5lIExMVk1fQ09ERUdFTl9HTE9CQUxJU0VMX0dJU0VMQ0hBTkdFT0JTRVJWRVJfSAorCisjaW5jbHVkZSAibGx2bS9BRFQvU21hbGxQdHJTZXQuaCIKKyNpbmNsdWRlICJsbHZtL0NvZGVHZW4vTWFjaGluZUZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBsbHZtIHsKK2NsYXNzIE1hY2hpbmVJbnN0cjsKK2NsYXNzIE1hY2hpbmVSZWdpc3RlckluZm87CisKKy8vLyBBYnN0cmFjdCBjbGFzcyB0aGF0IGNvbnRhaW5zIHZhcmlvdXMgbWV0aG9kcyBmb3IgY2xpZW50cyB0byBub3RpZnkgYWJvdXQKKy8vLyBjaGFuZ2VzLiBUaGlzIHNob3VsZCBiZSB0aGUgcHJlZmVycmVkIHdheSBmb3IgQVBJcyB0byBub3RpZnkgY2hhbmdlcy4KKy8vLyBUeXBpY2FsbHkgY2FsbGluZyBlcmFzaW5nSW5zdHIvY3JlYXRlZEluc3RyIG11bHRpcGxlIHRpbWVzIHNob3VsZCBub3QgYWZmZWN0CisvLy8gdGhlIHJlc3VsdC4gVGhlIG9ic2VydmVyIHdvdWxkIGxpa2VseSBuZWVkIHRvIGNoZWNrIGlmIGl0IHdhcyBhbHJlYWR5CisvLy8gbm90aWZpZWQgZWFybGllciAoY29uc2lkZXIgdXNpbmcgR0lTZWxXb3JrTGlzdCkuCitjbGFzcyBHSVNlbENoYW5nZU9ic2VydmVyIHsKKyAgU21hbGxQdHJTZXQ8TWFjaGluZUluc3RyICosIDQ+IENoYW5naW5nQWxsVXNlc09mUmVnOworCitwdWJsaWM6CisgIHZpcnR1YWwgfkdJU2VsQ2hhbmdlT2JzZXJ2ZXIoKSB7fQorCisgIC8vLyBBbiBpbnN0cnVjdGlvbiBpcyBhYm91dCB0byBiZSBlcmFzZWQuCisgIHZpcnR1YWwgdm9pZCBlcmFzaW5nSW5zdHIoTWFjaGluZUluc3RyICZNSSkgPSAwOworCisgIC8vLyBBbiBpbnN0cnVjdGlvbiBoYXMgYmVlbiBjcmVhdGVkIGFuZCBpbnNlcnRlZCBpbnRvIHRoZSBmdW5jdGlvbi4KKyAgLy8vIE5vdGUgdGhhdCB0aGUgaW5zdHJ1Y3Rpb24gbWlnaHQgbm90IGJlIGEgZnVsbHkgZmxlZGdlZCBpbnN0cnVjdGlvbiBhdCB0aGlzCisgIC8vLyBwb2ludCBhbmQgd29uJ3QgYmUgaWYgdGhlIE1hY2hpbmVGdW5jdGlvbjo6RGVsZWdhdGUgaXMgY2FsbGluZyBpdC4gVGhpcyBpcworICAvLy8gYmVjYXVzZSB0aGUgZGVsZWdhdGUgb25seSBzZWVzIHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIE1hY2hpbmVJbnN0ciBiZWZvcmUKKyAgLy8vIG9wZXJhbmRzIGhhdmUgYmVlbiBhZGRlZC4KKyAgdmlydHVhbCB2b2lkIGNyZWF0ZWRJbnN0cihNYWNoaW5lSW5zdHIgJk1JKSA9IDA7CisKKyAgLy8vIFRoaXMgaW5zdHJ1Y3Rpb24gaXMgYWJvdXQgdG8gYmUgbXV0YXRlZCBpbiBzb21lIHdheS4KKyAgdmlydHVhbCB2b2lkIGNoYW5naW5nSW5zdHIoTWFjaGluZUluc3RyICZNSSkgPSAwOworCisgIC8vLyBUaGlzIGluc3RydWN0aW9uIHdhcyBtdXRhdGVkIGluIHNvbWUgd2F5LgorICB2aXJ0dWFsIHZvaWQgY2hhbmdlZEluc3RyKE1hY2hpbmVJbnN0ciAmTUkpID0gMDsKKworICAvLy8gQWxsIHRoZSBpbnN0cnVjdGlvbnMgdXNpbmcgdGhlIGdpdmVuIHJlZ2lzdGVyIGFyZSBiZWluZyBjaGFuZ2VkLgorICAvLy8gRm9yIGNvbnZlbmllbmNlLCBmaW5pc2hlZENoYW5naW5nQWxsVXNlc09mUmVnKCkgd2lsbCByZXBvcnQgdGhlIGNvbXBsZXRpb24KKyAgLy8vIG9mIHRoZSBjaGFuZ2VzLiBUaGUgdXNlIGxpc3QgbWF5IGNoYW5nZSBiZXR3ZWVuIHRoaXMgY2FsbCBhbmQKKyAgLy8vIGZpbmlzaGVkQ2hhbmdpbmdBbGxVc2VzT2ZSZWcoKS4KKyAgdm9pZCBjaGFuZ2luZ0FsbFVzZXNPZlJlZyhjb25zdCBNYWNoaW5lUmVnaXN0ZXJJbmZvICZNUkksIHVuc2lnbmVkIFJlZyk7CisgIC8vLyBBbGwgaW5zdHJ1Y3Rpb25zIHJlcG9ydGVkIGFzIGNoYW5naW5nIGJ5IGNoYW5naW5nQWxsVXNlc09mUmVnKCkgaGF2ZQorICAvLy8gZmluaXNoZWQgYmVpbmcgY2hhbmdlZC4KKyAgdm9pZCBmaW5pc2hlZENoYW5naW5nQWxsVXNlc09mUmVnKCk7CisKK307CisKKy8vLyBTaW1wbGUgd3JhcHBlciBvYnNlcnZlciB0aGF0IHRha2VzIHNldmVyYWwgb2JzZXJ2ZXJzLCBhbmQgY2FsbHMKKy8vLyBlYWNoIG9uZSBmb3IgZWFjaCBldmVudC4gSWYgdGhlcmUgYXJlIG11bHRpcGxlIG9ic2VydmVycyAoc2F5IENTRSwKKy8vLyBMZWdhbGl6ZXIsIENvbWJpbmVyKSwgaXQncyBzdWZmaWNpZW50IHRvIHJlZ2lzdGVyIHRoaXMgdG8gdGhlIG1hY2hpbmUKKy8vLyBmdW5jdGlvbiBhcyB0aGUgZGVsZWdhdGUuCitjbGFzcyBHSVNlbE9ic2VydmVyV3JhcHBlciA6IHB1YmxpYyBNYWNoaW5lRnVuY3Rpb246OkRlbGVnYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgR0lTZWxDaGFuZ2VPYnNlcnZlciB7CisgIFNtYWxsVmVjdG9yPEdJU2VsQ2hhbmdlT2JzZXJ2ZXIgKiwgND4gT2JzZXJ2ZXJzOworCitwdWJsaWM6CisgIEdJU2VsT2JzZXJ2ZXJXcmFwcGVyKCkgPSBkZWZhdWx0OworICBHSVNlbE9ic2VydmVyV3JhcHBlcihBcnJheVJlZjxHSVNlbENoYW5nZU9ic2VydmVyICo+IE9icykKKyAgICAgIDogT2JzZXJ2ZXJzKE9icy5iZWdpbigpLCBPYnMuZW5kKCkpIHt9CisgIC8vIEFkZHMgYW4gb2JzZXJ2ZXIuCisgIHZvaWQgYWRkT2JzZXJ2ZXIoR0lTZWxDaGFuZ2VPYnNlcnZlciAqTykgeyBPYnNlcnZlcnMucHVzaF9iYWNrKE8pOyB9CisgIC8vIFJlbW92ZXMgYW4gb2JzZXJ2ZXIgZnJvbSB0aGUgbGlzdCBhbmQgZG9lcyBub3RoaW5nIGlmIG9ic2VydmVyIGlzIG5vdAorICAvLyBwcmVzZW50LgorICB2b2lkIHJlbW92ZU9ic2VydmVyKEdJU2VsQ2hhbmdlT2JzZXJ2ZXIgKk8pIHsKKyAgICBhdXRvIEl0ID0gc3RkOjpmaW5kKE9ic2VydmVycy5iZWdpbigpLCBPYnNlcnZlcnMuZW5kKCksIE8pOworICAgIGlmIChJdCAhPSBPYnNlcnZlcnMuZW5kKCkpCisgICAgICBPYnNlcnZlcnMuZXJhc2UoSXQpOworICB9CisgIC8vIEFQSSBmb3IgT2JzZXJ2ZXIuCisgIHZvaWQgZXJhc2luZ0luc3RyKE1hY2hpbmVJbnN0ciAmTUkpIG92ZXJyaWRlIHsKKyAgICBmb3IgKGF1dG8gJk8gOiBPYnNlcnZlcnMpCisgICAgICBPLT5lcmFzaW5nSW5zdHIoTUkpOworICB9CisgIHZvaWQgY3JlYXRlZEluc3RyKE1hY2hpbmVJbnN0ciAmTUkpIG92ZXJyaWRlIHsKKyAgICBmb3IgKGF1dG8gJk8gOiBPYnNlcnZlcnMpCisgICAgICBPLT5jcmVhdGVkSW5zdHIoTUkpOworICB9CisgIHZvaWQgY2hhbmdpbmdJbnN0cihNYWNoaW5lSW5zdHIgJk1JKSBvdmVycmlkZSB7CisgICAgZm9yIChhdXRvICZPIDogT2JzZXJ2ZXJzKQorICAgICAgTy0+Y2hhbmdpbmdJbnN0cihNSSk7CisgIH0KKyAgdm9pZCBjaGFuZ2VkSW5zdHIoTWFjaGluZUluc3RyICZNSSkgb3ZlcnJpZGUgeworICAgIGZvciAoYXV0byAmTyA6IE9ic2VydmVycykKKyAgICAgIE8tPmNoYW5nZWRJbnN0cihNSSk7CisgIH0KKyAgLy8gQVBJIGZvciBNYWNoaW5lRnVuY3Rpb246OkRlbGVnYXRlCisgIHZvaWQgTUZfSGFuZGxlSW5zZXJ0aW9uKE1hY2hpbmVJbnN0ciAmTUkpIG92ZXJyaWRlIHsgY3JlYXRlZEluc3RyKE1JKTsgfQorICB2b2lkIE1GX0hhbmRsZVJlbW92YWwoTWFjaGluZUluc3RyICZNSSkgb3ZlcnJpZGUgeyBlcmFzaW5nSW5zdHIoTUkpOyB9Cit9OworCisvLy8gQSBzaW1wbGUgUkFJSSBiYXNlZCBDU0VJbmZvIGluc3RhbGxlci4KKy8vLyBVc2UgdGhpcyBpbiBhIHNjb3BlIHRvIGluc3RhbGwgYSBkZWxlZ2F0ZSB0byB0aGUgTWFjaGluZUZ1bmN0aW9uIGFuZCByZXNldAorLy8vIGl0IGF0IHRoZSBlbmQgb2YgdGhlIHNjb3BlLgorY2xhc3MgUkFJSURlbGVnYXRlSW5zdGFsbGVyIHsKKyAgTWFjaGluZUZ1bmN0aW9uICZNRjsKKyAgTWFjaGluZUZ1bmN0aW9uOjpEZWxlZ2F0ZSAqRGVsZWdhdGU7CisKK3B1YmxpYzoKKyAgUkFJSURlbGVnYXRlSW5zdGFsbGVyKE1hY2hpbmVGdW5jdGlvbiAmTUYsIE1hY2hpbmVGdW5jdGlvbjo6RGVsZWdhdGUgKkRlbCk7CisgIH5SQUlJRGVsZWdhdGVJbnN0YWxsZXIoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIGxsdm0KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvR0lTZWxXb3JrTGlzdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvR0lTZWxXb3JrTGlzdC5oCmluZGV4IDE2NzkwNWQuLjYyNmE2NjYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0dJU2VsV29ya0xpc3QuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9HSVNlbFdvcmtMaXN0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gR0lTZWxXb3JrTGlzdC5oIC0gV29ya2xpc3QgZm9yIEdJU2VsIHBhc3NlcyAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTEyLDM4ICsxMSw0MiBAQAogCiAjaW5jbHVkZSAibGx2bS9BRFQvRGVuc2VNYXAuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9TbWFsbFZlY3Rvci5oIgorI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9NYWNoaW5lQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9NYWNoaW5lSW5zdHIuaCIKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvRGVidWcuaCIKIAogbmFtZXNwYWNlIGxsdm0gewogCiBjbGFzcyBNYWNoaW5lSW5zdHI7CitjbGFzcyBNYWNoaW5lRnVuY3Rpb247CiAKLS8vIFdvcmtsaXN0IHdoaWNoIG1vc3RseSB3b3JrcyBzaW1pbGFyIHRvIEluc3RDb21iaW5lV29ya0xpc3QsIGJ1dCBvbiBNYWNoaW5lSW5zdHJzLgotLy8gVGhlIG1haW4gZGlmZmVyZW5jZSB3aXRoIHNvbWV0aGluZyBsaWtlIGEgU2V0VmVjdG9yIGlzIHRoYXQgZXJhc2luZyBhbiBlbGVtZW50IGRvZXNuJ3QKLS8vIG1vdmUgYWxsIGVsZW1lbnRzIG92ZXIgb25lIHBsYWNlIC0gaW5zdGVhZCBqdXN0IG51bGxzIG91dCB0aGUgZWxlbWVudCBvZiB0aGUgdmVjdG9yLgotLy8gRklYTUU6IERvZXMgaXQgbWFrZSBzZW5zZSB0byBmYWN0b3Igb3V0IGNvbW1vbiBjb2RlIHdpdGggdGhlIGluc3Rjb21iaW5lcldvcmtMaXN0PworLy8gV29ya2xpc3Qgd2hpY2ggbW9zdGx5IHdvcmtzIHNpbWlsYXIgdG8gSW5zdENvbWJpbmVXb3JrTGlzdCwgYnV0IG9uCisvLyBNYWNoaW5lSW5zdHJzLiBUaGUgbWFpbiBkaWZmZXJlbmNlIHdpdGggc29tZXRoaW5nIGxpa2UgYSBTZXRWZWN0b3IgaXMgdGhhdAorLy8gZXJhc2luZyBhbiBlbGVtZW50IGRvZXNuJ3QgbW92ZSBhbGwgZWxlbWVudHMgb3ZlciBvbmUgcGxhY2UgLSBpbnN0ZWFkIGp1c3QKKy8vIG51bGxzIG91dCB0aGUgZWxlbWVudCBvZiB0aGUgdmVjdG9yLgorLy8KKy8vIEZJWE1FOiBEb2VzIGl0IG1ha2Ugc2Vuc2UgdG8gZmFjdG9yIG91dCBjb21tb24gY29kZSB3aXRoIHRoZQorLy8gaW5zdGNvbWJpbmVyV29ya0xpc3Q/CiB0ZW1wbGF0ZTx1bnNpZ25lZCBOPgogY2xhc3MgR0lTZWxXb3JrTGlzdCB7Ci0gIFNtYWxsVmVjdG9yPE1hY2hpbmVJbnN0ciosIE4+IFdvcmtsaXN0OwotICBEZW5zZU1hcDxNYWNoaW5lSW5zdHIqLCB1bnNpZ25lZD4gV29ya2xpc3RNYXA7CisgIFNtYWxsVmVjdG9yPE1hY2hpbmVJbnN0ciAqLCBOPiBXb3JrbGlzdDsKKyAgRGVuc2VNYXA8TWFjaGluZUluc3RyICosIHVuc2lnbmVkPiBXb3JrbGlzdE1hcDsKIAogcHVibGljOgotICBHSVNlbFdvcmtMaXN0KCkgPSBkZWZhdWx0OworICBHSVNlbFdvcmtMaXN0KCkgOiBXb3JrbGlzdE1hcChOKSB7fQogCiAgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiBXb3JrbGlzdE1hcC5lbXB0eSgpOyB9CiAKICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIFdvcmtsaXN0TWFwLnNpemUoKTsgfQogCi0gIC8vLyBBZGQgLSBBZGQgdGhlIHNwZWNpZmllZCBpbnN0cnVjdGlvbiB0byB0aGUgd29ya2xpc3QgaWYgaXQgaXNuJ3QgYWxyZWFkeQotICAvLy8gaW4gaXQuCisgIC8vLyBBZGQgdGhlIHNwZWNpZmllZCBpbnN0cnVjdGlvbiB0byB0aGUgd29ya2xpc3QgaWYgaXQgaXNuJ3QgYWxyZWFkeSBpbiBpdC4KICAgdm9pZCBpbnNlcnQoTWFjaGluZUluc3RyICpJKSB7Ci0gICAgaWYgKFdvcmtsaXN0TWFwLnRyeV9lbXBsYWNlKEksIFdvcmtsaXN0LnNpemUoKSkuc2Vjb25kKSB7CisgICAgaWYgKFdvcmtsaXN0TWFwLnRyeV9lbXBsYWNlKEksIFdvcmtsaXN0LnNpemUoKSkuc2Vjb25kKQogICAgICAgV29ya2xpc3QucHVzaF9iYWNrKEkpOwotICAgIH0KICAgfQogCi0gIC8vLyBSZW1vdmUgLSByZW1vdmUgSSBmcm9tIHRoZSB3b3JrbGlzdCBpZiBpdCBleGlzdHMuCi0gIHZvaWQgcmVtb3ZlKE1hY2hpbmVJbnN0ciAqSSkgeworICAvLy8gUmVtb3ZlIEkgZnJvbSB0aGUgd29ya2xpc3QgaWYgaXQgZXhpc3RzLgorICB2b2lkIHJlbW92ZShjb25zdCBNYWNoaW5lSW5zdHIgKkkpIHsKICAgICBhdXRvIEl0ID0gV29ya2xpc3RNYXAuZmluZChJKTsKICAgICBpZiAoSXQgPT0gV29ya2xpc3RNYXAuZW5kKCkpIHJldHVybjsgLy8gTm90IGluIHdvcmtsaXN0LgogCkBAIC01Myw2ICs1NiwxMSBAQAogICAgIFdvcmtsaXN0TWFwLmVyYXNlKEl0KTsKICAgfQogCisgIHZvaWQgY2xlYXIoKSB7CisgICAgV29ya2xpc3QuY2xlYXIoKTsKKyAgICBXb3JrbGlzdE1hcC5jbGVhcigpOworICB9CisKICAgTWFjaGluZUluc3RyICpwb3BfYmFja192YWwoKSB7CiAgICAgTWFjaGluZUluc3RyICpJOwogICAgIGRvIHsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0lSVHJhbnNsYXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvSVJUcmFuc2xhdG9yLmgKaW5kZXggMjQ5OGVlOS4uYzc1ZDgyMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvSVJUcmFuc2xhdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvSVJUcmFuc2xhdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvSVJUcmFuc2xhdG9yLmggLSBJUlRyYW5zbGF0b3IgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCkBAIC0yMSwxMSArMjAsMTEgQEAKIAogI2luY2x1ZGUgImxsdm0vQURUL0RlbnNlTWFwLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvU21hbGxWZWN0b3IuaCIKLSNpbmNsdWRlICJsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9NYWNoaW5lSVJCdWlsZGVyLmgiCisjaW5jbHVkZSAibGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvQ1NFTUlSQnVpbGRlci5oIgogI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL1R5cGVzLmgiCiAjaW5jbHVkZSAibGx2bS9Db2RlR2VuL01hY2hpbmVGdW5jdGlvblBhc3MuaCIKLSNpbmNsdWRlICJsbHZtL1N1cHBvcnQvQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAibGx2bS9JUi9JbnRyaW5zaWNzLmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0FsbG9jYXRvci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5PgogCkBAIC0yMTcsNiArMjE2LDE3IEBACiAgIGJvb2wgdHJhbnNsYXRlT3ZlcmZsb3dJbnRyaW5zaWMoY29uc3QgQ2FsbEluc3QgJkNJLCB1bnNpZ25lZCBPcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lSVJCdWlsZGVyICZNSVJCdWlsZGVyKTsKIAorICAvLy8gSGVscGVyIGZ1bmN0aW9uIGZvciB0cmFuc2xhdGVTaW1wbGVJbnRyaW5zaWMuCisgIC8vLyBccmV0dXJuIFRoZSBnZW5lcmljIG9wY29kZSBmb3IgXHAgSW50cmluc2ljSUQgaWYgXHAgSW50cmluc2ljSUQgaXMgYQorICAvLy8gc2ltcGxlIGludHJpbnNpYyAoY2VpbCwgZmFicywgZXRjLikuIE90aGVyd2lzZSwgcmV0dXJucworICAvLy8gSW50cmluc2ljOjpub3RfaW50cmluc2ljLgorICB1bnNpZ25lZCBnZXRTaW1wbGVJbnRyaW5zaWNPcGNvZGUoSW50cmluc2ljOjpJRCBJRCk7CisKKyAgLy8vIFRyYW5zbGF0ZXMgdGhlIGludHJpbnNpY3MgZGVmaW5lZCBpbiBnZXRTaW1wbGVJbnRyaW5zaWNPcGNvZGUuCisgIC8vLyBccmV0dXJuIHRydWUgaWYgdGhlIHRyYW5zbGF0aW9uIHN1Y2NlZWRlZC4KKyAgYm9vbCB0cmFuc2xhdGVTaW1wbGVJbnRyaW5zaWMoY29uc3QgQ2FsbEluc3QgJkNJLCBJbnRyaW5zaWM6OklEIElELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lSVJCdWlsZGVyICZNSVJCdWlsZGVyKTsKKwogICBib29sIHRyYW5zbGF0ZUtub3duSW50cmluc2ljKGNvbnN0IENhbGxJbnN0ICZDSSwgSW50cmluc2ljOjpJRCBJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lSVJCdWlsZGVyICZNSVJCdWlsZGVyKTsKIApAQCAtMjQyLDYgKzI1Miw4IEBACiAKICAgYm9vbCB0cmFuc2xhdGVJbnZva2UoY29uc3QgVXNlciAmVSwgTWFjaGluZUlSQnVpbGRlciAmTUlSQnVpbGRlcik7CiAKKyAgYm9vbCB0cmFuc2xhdGVDYWxsQnIoY29uc3QgVXNlciAmVSwgTWFjaGluZUlSQnVpbGRlciAmTUlSQnVpbGRlcik7CisKICAgYm9vbCB0cmFuc2xhdGVMYW5kaW5nUGFkKGNvbnN0IFVzZXIgJlUsIE1hY2hpbmVJUkJ1aWxkZXIgJk1JUkJ1aWxkZXIpOwogCiAgIC8vLyBUcmFuc2xhdGUgb25lIG9mIExMVk0ncyBjYXN0IGluc3RydWN0aW9ucyBpbnRvIE1hY2hpbmVJbnN0cnMsIHdpdGggdGhlCkBAIC0zMDAsNiArMzEyLDggQEAKIAogICBib29sIHRyYW5zbGF0ZUZTdWIoY29uc3QgVXNlciAmVSwgTWFjaGluZUlSQnVpbGRlciAmTUlSQnVpbGRlcik7CiAKKyAgYm9vbCB0cmFuc2xhdGVGTmVnKGNvbnN0IFVzZXIgJlUsIE1hY2hpbmVJUkJ1aWxkZXIgJk1JUkJ1aWxkZXIpOworCiAgIGJvb2wgdHJhbnNsYXRlQWRkKGNvbnN0IFVzZXIgJlUsIE1hY2hpbmVJUkJ1aWxkZXIgJk1JUkJ1aWxkZXIpIHsKICAgICByZXR1cm4gdHJhbnNsYXRlQmluYXJ5T3AoVGFyZ2V0T3Bjb2RlOjpHX0FERCwgVSwgTUlSQnVpbGRlcik7CiAgIH0KQEAgLTQ0MiwxMSArNDU2LDEzIEBACiAgIC8vIEkuZS4sIGNvbXBhcmVkIHRvIHJlZ3VsYXIgTUlCdWlsZGVyLCB0aGlzIG9uZSBhbHNvIGluc2VydHMgdGhlIGluc3RydWN0aW9uCiAgIC8vIGluIHRoZSBjdXJyZW50IGJsb2NrLCBpdCBjYW4gY3JlYXRlcyBibG9jaywgZXRjLiwgYmFzaWNhbGx5IGEga2luZCBvZgogICAvLyBJUkJ1aWxkZXIsIGJ1dCBmb3IgTWFjaGluZSBJUi4KLSAgTWFjaGluZUlSQnVpbGRlciBDdXJCdWlsZGVyOworICAvLyBDU0VNSVJCdWlsZGVyIEN1ckJ1aWxkZXI7CisgIHN0ZDo6dW5pcXVlX3B0cjxNYWNoaW5lSVJCdWlsZGVyPiBDdXJCdWlsZGVyOwogCiAgIC8vIEJ1aWxkZXIgc2V0IHRvIHRoZSBlbnRyeSBibG9jayAoanVzdCBhZnRlciBBQkkgbG93ZXJpbmcgaW5zdHJ1Y3Rpb25zKS4gVXNlZAogICAvLyBhcyBhIGNvbnZlbmllbnQgbG9jYXRpb24gZm9yIENvbnN0YW50cy4KLSAgTWFjaGluZUlSQnVpbGRlciBFbnRyeUJ1aWxkZXI7CisgIC8vIENTRU1JUkJ1aWxkZXIgRW50cnlCdWlsZGVyOworICBzdGQ6OnVuaXF1ZV9wdHI8TWFjaGluZUlSQnVpbGRlcj4gRW50cnlCdWlsZGVyOwogCiAgIC8vIFRoZSBNYWNoaW5lRnVuY3Rpb24gY3VycmVudGx5IGJlaW5nIHRyYW5zbGF0ZWQuCiAgIE1hY2hpbmVGdW5jdGlvbiAqTUY7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9JbnN0cnVjdGlvblNlbGVjdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvSW5zdHJ1Y3Rpb25TZWxlY3QuaAppbmRleCAwMTUyMWM0Li4xYWY0NmUwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9JbnN0cnVjdGlvblNlbGVjdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0luc3RydWN0aW9uU2VsZWN0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09IGxsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0luc3RydWN0aW9uU2VsZWN0LmggLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlIFRoaXMgZmlsZSBkZXNjcmliZXMgdGhlIGludGVyZmFjZSBvZiB0aGUgTWFjaGluZUZ1bmN0aW9uUGFzcwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvSW5zdHJ1Y3Rpb25TZWxlY3Rvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvSW5zdHJ1Y3Rpb25TZWxlY3Rvci5oCmluZGV4IDQ3MWRlZjcuLmU0ZDA1YTUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0luc3RydWN0aW9uU2VsZWN0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9JbnN0cnVjdGlvblNlbGVjdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvSW5zdHJ1Y3Rpb25TZWxlY3Rvci5oIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0luc3RydWN0aW9uU2VsZWN0b3JJbXBsLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9JbnN0cnVjdGlvblNlbGVjdG9ySW1wbC5oCmluZGV4IDIwMDNhNzkuLjg3ZWYyZjggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0luc3RydWN0aW9uU2VsZWN0b3JJbXBsLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvSW5zdHJ1Y3Rpb25TZWxlY3RvckltcGwuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9JbnN0cnVjdGlvblNlbGVjdG9ySW1wbC5oIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTGVnYWxpemF0aW9uQXJ0aWZhY3RDb21iaW5lci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTGVnYWxpemF0aW9uQXJ0aWZhY3RDb21iaW5lci5oCmluZGV4IDg3MzU4NzYuLmU3NjgwZTEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0xlZ2FsaXphdGlvbkFydGlmYWN0Q29tYmluZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9MZWdhbGl6YXRpb25BcnRpZmFjdENvbWJpbmVyLmgKQEAgLTEsOSArMSw4IEBACi0vLz09PS0tIGxsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0xlZ2FsaXphdGlvbkFydGlmYWN0Q29tYmluZXIuaCAtLT09PT09PT09PT09Ly8KKy8vPT09LS0gbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTGVnYWxpemF0aW9uQXJ0aWZhY3RDb21iaW5lci5oIC0tLS0tKi0gQysrIC0qLS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLyBUaGlzIGZpbGUgY29udGFpbnMgc29tZSBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoIHRyeSB0byBjbGVhbnVwIGFydGlmYWN0cwpAQCAtMTQsMTIgKzEzLDE0IEBACiAKICNpbmNsdWRlICJsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9MZWdhbGl6ZXIuaCIKICNpbmNsdWRlICJsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9MZWdhbGl6ZXJJbmZvLmgiCisjaW5jbHVkZSAibGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTUlQYXR0ZXJuTWF0Y2guaCIKICNpbmNsdWRlICJsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9NYWNoaW5lSVJCdWlsZGVyLmgiCiAjaW5jbHVkZSAibGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvVXRpbHMuaCIKICNpbmNsdWRlICJsbHZtL0NvZGVHZW4vTWFjaGluZVJlZ2lzdGVySW5mby5oIgogI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9EZWJ1Zy5oIgogCiAjZGVmaW5lIERFQlVHX1RZUEUgImxlZ2FsaXplciIKK3VzaW5nIG5hbWVzcGFjZSBsbHZtOjpNSVBhdHRlcm5NYXRjaDsKIAogbmFtZXNwYWNlIGxsdm0gewogY2xhc3MgTGVnYWxpemF0aW9uQXJ0aWZhY3RDb21iaW5lciB7CkBAIC0zNiwxNSArMzcsMjkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFNtYWxsVmVjdG9ySW1wbDxNYWNoaW5lSW5zdHIgKj4gJkRlYWRJbnN0cykgewogICAgIGlmIChNSS5nZXRPcGNvZGUoKSAhPSBUYXJnZXRPcGNvZGU6OkdfQU5ZRVhUKQogICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChNYWNoaW5lSW5zdHIgKkRlZk1JID0gZ2V0T3Bjb2RlRGVmKFRhcmdldE9wY29kZTo6R19UUlVOQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSS5nZXRPcGVyYW5kKDEpLmdldFJlZygpLCBNUkkpKSB7CisKKyAgICBCdWlsZGVyLnNldEluc3RyKE1JKTsKKyAgICB1bnNpZ25lZCBEc3RSZWcgPSBNSS5nZXRPcGVyYW5kKDApLmdldFJlZygpOworICAgIHVuc2lnbmVkIFNyY1JlZyA9IGxvb2tUaHJvdWdoQ29weUluc3RycyhNSS5nZXRPcGVyYW5kKDEpLmdldFJlZygpKTsKKworICAgIC8vIGFleHQodHJ1bmMgeCkgLSA+IGFleHQvY29weS90cnVuYyB4CisgICAgdW5zaWduZWQgVHJ1bmNTcmM7CisgICAgaWYgKG1pX21hdGNoKFNyY1JlZywgTVJJLCBtX0dUcnVuYyhtX1JlZyhUcnVuY1NyYykpKSkgewogICAgICAgTExWTV9ERUJVRyhkYmdzKCkgPDwgIi4uIENvbWJpbmUgTUk6ICIgPDwgTUk7KTsKLSAgICAgIHVuc2lnbmVkIERzdFJlZyA9IE1JLmdldE9wZXJhbmQoMCkuZ2V0UmVnKCk7Ci0gICAgICB1bnNpZ25lZCBTcmNSZWcgPSBEZWZNSS0+Z2V0T3BlcmFuZCgxKS5nZXRSZWcoKTsKLSAgICAgIEJ1aWxkZXIuc2V0SW5zdHIoTUkpOwotICAgICAgLy8gV2UgZ2V0IGEgY29weS90cnVuYy9leHRlbmQgZGVwZW5kaW5nIG9uIHRoZSBzaXplcwotICAgICAgQnVpbGRlci5idWlsZEFueUV4dE9yVHJ1bmMoRHN0UmVnLCBTcmNSZWcpOwotICAgICAgbWFya0luc3RBbmREZWZEZWFkKE1JLCAqRGVmTUksIERlYWRJbnN0cyk7CisgICAgICBCdWlsZGVyLmJ1aWxkQW55RXh0T3JUcnVuYyhEc3RSZWcsIFRydW5jU3JjKTsKKyAgICAgIG1hcmtJbnN0QW5kRGVmRGVhZChNSSwgKk1SSS5nZXRWUmVnRGVmKFNyY1JlZyksIERlYWRJbnN0cyk7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBhZXh0KFthc3pdZXh0IHgpIC0+IFthc3pdZXh0IHgKKyAgICB1bnNpZ25lZCBFeHRTcmM7CisgICAgTWFjaGluZUluc3RyICpFeHRNSTsKKyAgICBpZiAobWlfbWF0Y2goU3JjUmVnLCBNUkksCisgICAgICAgICAgICAgICAgIG1fYWxsX29mKG1fTUluc3RyKEV4dE1JKSwgbV9hbnlfb2YobV9HQW55RXh0KG1fUmVnKEV4dFNyYykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fR1NFeHQobV9SZWcoRXh0U3JjKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9HWkV4dChtX1JlZyhFeHRTcmMpKSkpKSkgeworICAgICAgQnVpbGRlci5idWlsZEluc3RyKEV4dE1JLT5nZXRPcGNvZGUoKSwge0RzdFJlZ30sIHtFeHRTcmN9KTsKKyAgICAgIG1hcmtJbnN0QW5kRGVmRGVhZChNSSwgKkV4dE1JLCBEZWFkSW5zdHMpOwogICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiB0cnlGb2xkSW1wbGljaXREZWYoTUksIERlYWRJbnN0cyk7CkBAIC01NSwyNCArNzAsMjUgQEAKIAogICAgIGlmIChNSS5nZXRPcGNvZGUoKSAhPSBUYXJnZXRPcGNvZGU6OkdfWkVYVCkKICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoTWFjaGluZUluc3RyICpEZWZNSSA9IGdldE9wY29kZURlZihUYXJnZXRPcGNvZGU6OkdfVFJVTkMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUkuZ2V0T3BlcmFuZCgxKS5nZXRSZWcoKSwgTVJJKSkgewotICAgICAgdW5zaWduZWQgRHN0UmVnID0gTUkuZ2V0T3BlcmFuZCgwKS5nZXRSZWcoKTsKKworICAgIEJ1aWxkZXIuc2V0SW5zdHIoTUkpOworICAgIHVuc2lnbmVkIERzdFJlZyA9IE1JLmdldE9wZXJhbmQoMCkuZ2V0UmVnKCk7CisgICAgdW5zaWduZWQgU3JjUmVnID0gbG9va1Rocm91Z2hDb3B5SW5zdHJzKE1JLmdldE9wZXJhbmQoMSkuZ2V0UmVnKCkpOworCisgICAgLy8gemV4dCh0cnVuYyB4KSAtID4gYW5kIChhZXh0L2NvcHkvdHJ1bmMgeCksIG1hc2sKKyAgICB1bnNpZ25lZCBUcnVuY1NyYzsKKyAgICBpZiAobWlfbWF0Y2goU3JjUmVnLCBNUkksIG1fR1RydW5jKG1fUmVnKFRydW5jU3JjKSkpKSB7CiAgICAgICBMTFQgRHN0VHkgPSBNUkkuZ2V0VHlwZShEc3RSZWcpOwogICAgICAgaWYgKGlzSW5zdFVuc3VwcG9ydGVkKHtUYXJnZXRPcGNvZGU6OkdfQU5ELCB7RHN0VHl9fSkgfHwKLSAgICAgICAgICBpc0luc3RVbnN1cHBvcnRlZCh7VGFyZ2V0T3Bjb2RlOjpHX0NPTlNUQU5ULCB7RHN0VHl9fSkpCisgICAgICAgICAgaXNDb25zdGFudFVuc3VwcG9ydGVkKERzdFR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgTExWTV9ERUJVRyhkYmdzKCkgPDwgIi4uIENvbWJpbmUgTUk6ICIgPDwgTUk7KTsKLSAgICAgIEJ1aWxkZXIuc2V0SW5zdHIoTUkpOwotICAgICAgdW5zaWduZWQgWkV4dFNyYyA9IE1JLmdldE9wZXJhbmQoMSkuZ2V0UmVnKCk7Ci0gICAgICBMTFQgWkV4dFNyY1R5ID0gTVJJLmdldFR5cGUoWkV4dFNyYyk7Ci0gICAgICBBUEludCBNYXNrID0gQVBJbnQ6OmdldEFsbE9uZXNWYWx1ZShaRXh0U3JjVHkuZ2V0U2l6ZUluQml0cygpKTsKLSAgICAgIGF1dG8gTWFza0NzdE1JQiA9IEJ1aWxkZXIuYnVpbGRDb25zdGFudChEc3RUeSwgTWFzay5nZXRaRXh0VmFsdWUoKSk7Ci0gICAgICB1bnNpZ25lZCBUcnVuY1NyYyA9IERlZk1JLT5nZXRPcGVyYW5kKDEpLmdldFJlZygpOwotICAgICAgLy8gV2UgZ2V0IGEgY29weS90cnVuYy9leHRlbmQgZGVwZW5kaW5nIG9uIHRoZSBzaXplcwotICAgICAgYXV0byBTcmNDb3B5T3JUcnVuYyA9IEJ1aWxkZXIuYnVpbGRBbnlFeHRPclRydW5jKERzdFR5LCBUcnVuY1NyYyk7Ci0gICAgICBCdWlsZGVyLmJ1aWxkQW5kKERzdFJlZywgU3JjQ29weU9yVHJ1bmMsIE1hc2tDc3RNSUIpOwotICAgICAgbWFya0luc3RBbmREZWZEZWFkKE1JLCAqRGVmTUksIERlYWRJbnN0cyk7CisgICAgICBMTFQgU3JjVHkgPSBNUkkuZ2V0VHlwZShTcmNSZWcpOworICAgICAgQVBJbnQgTWFzayA9IEFQSW50OjpnZXRBbGxPbmVzVmFsdWUoU3JjVHkuZ2V0U2NhbGFyU2l6ZUluQml0cygpKTsKKyAgICAgIGF1dG8gTUlCTWFzayA9IEJ1aWxkZXIuYnVpbGRDb25zdGFudChEc3RUeSwgTWFzay5nZXRaRXh0VmFsdWUoKSk7CisgICAgICBCdWlsZGVyLmJ1aWxkQW5kKERzdFJlZywgQnVpbGRlci5idWlsZEFueUV4dE9yVHJ1bmMoRHN0VHksIFRydW5jU3JjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgTUlCTWFzayk7CisgICAgICBtYXJrSW5zdEFuZERlZkRlYWQoTUksICpNUkkuZ2V0VlJlZ0RlZihTcmNSZWcpLCBEZWFkSW5zdHMpOwogICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiB0cnlGb2xkSW1wbGljaXREZWYoTUksIERlYWRJbnN0cyk7CkBAIC04MywzMyArOTksMzYgQEAKIAogICAgIGlmIChNSS5nZXRPcGNvZGUoKSAhPSBUYXJnZXRPcGNvZGU6OkdfU0VYVCkKICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoTWFjaGluZUluc3RyICpEZWZNSSA9IGdldE9wY29kZURlZihUYXJnZXRPcGNvZGU6OkdfVFJVTkMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUkuZ2V0T3BlcmFuZCgxKS5nZXRSZWcoKSwgTVJJKSkgewotICAgICAgdW5zaWduZWQgRHN0UmVnID0gTUkuZ2V0T3BlcmFuZCgwKS5nZXRSZWcoKTsKKworICAgIEJ1aWxkZXIuc2V0SW5zdHIoTUkpOworICAgIHVuc2lnbmVkIERzdFJlZyA9IE1JLmdldE9wZXJhbmQoMCkuZ2V0UmVnKCk7CisgICAgdW5zaWduZWQgU3JjUmVnID0gbG9va1Rocm91Z2hDb3B5SW5zdHJzKE1JLmdldE9wZXJhbmQoMSkuZ2V0UmVnKCkpOworCisgICAgLy8gc2V4dCh0cnVuYyB4KSAtID4gYXNociAoc2hsIChhZXh0L2NvcHkvdHJ1bmMgeCksIGMpLCBjCisgICAgdW5zaWduZWQgVHJ1bmNTcmM7CisgICAgaWYgKG1pX21hdGNoKFNyY1JlZywgTVJJLCBtX0dUcnVuYyhtX1JlZyhUcnVuY1NyYykpKSkgewogICAgICAgTExUIERzdFR5ID0gTVJJLmdldFR5cGUoRHN0UmVnKTsKLSAgICAgIGlmIChpc0luc3RVbnN1cHBvcnRlZCh7VGFyZ2V0T3Bjb2RlOjpHX1NITCwge0RzdFR5fX0pIHx8Ci0gICAgICAgICAgaXNJbnN0VW5zdXBwb3J0ZWQoe1RhcmdldE9wY29kZTo6R19BU0hSLCB7RHN0VHl9fSkgfHwKLSAgICAgICAgICBpc0luc3RVbnN1cHBvcnRlZCh7VGFyZ2V0T3Bjb2RlOjpHX0NPTlNUQU5ULCB7RHN0VHl9fSkpCisgICAgICAvLyBHdWVzcyBvbiB0aGUgUkhTIHNoaWZ0IGFtb3VudCB0eXBlLCB3aGljaCBzaG91bGQgYmUgcmUtbGVnYWxpemVkIGlmCisgICAgICAvLyBhcHBsaWNhYmxlLgorICAgICAgaWYgKGlzSW5zdFVuc3VwcG9ydGVkKHtUYXJnZXRPcGNvZGU6OkdfU0hMLCB7RHN0VHksIERzdFR5fX0pIHx8CisgICAgICAgICAgaXNJbnN0VW5zdXBwb3J0ZWQoe1RhcmdldE9wY29kZTo6R19BU0hSLCB7RHN0VHksIERzdFR5fX0pIHx8CisgICAgICAgICAgaXNDb25zdGFudFVuc3VwcG9ydGVkKERzdFR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgTExWTV9ERUJVRyhkYmdzKCkgPDwgIi4uIENvbWJpbmUgTUk6ICIgPDwgTUk7KTsKLSAgICAgIEJ1aWxkZXIuc2V0SW5zdHIoTUkpOwotICAgICAgdW5zaWduZWQgU0V4dFNyYyA9IE1JLmdldE9wZXJhbmQoMSkuZ2V0UmVnKCk7Ci0gICAgICBMTFQgU0V4dFNyY1R5ID0gTVJJLmdldFR5cGUoU0V4dFNyYyk7Ci0gICAgICB1bnNpZ25lZCBTaXplRGlmZiA9IERzdFR5LmdldFNpemVJbkJpdHMoKSAtIFNFeHRTcmNUeS5nZXRTaXplSW5CaXRzKCk7Ci0gICAgICBhdXRvIFNpemVEaWZmTUlCID0gQnVpbGRlci5idWlsZENvbnN0YW50KERzdFR5LCBTaXplRGlmZik7Ci0gICAgICB1bnNpZ25lZCBUcnVuY1NyY1JlZyA9IERlZk1JLT5nZXRPcGVyYW5kKDEpLmdldFJlZygpOwotICAgICAgLy8gV2UgZ2V0IGEgY29weS90cnVuYy9leHRlbmQgZGVwZW5kaW5nIG9uIHRoZSBzaXplcwotICAgICAgYXV0byBTcmNDb3B5RXh0T3JUcnVuYyA9IEJ1aWxkZXIuYnVpbGRBbnlFeHRPclRydW5jKERzdFR5LCBUcnVuY1NyY1JlZyk7Ci0gICAgICBhdXRvIFNobE1JQiA9IEJ1aWxkZXIuYnVpbGRJbnN0cihUYXJnZXRPcGNvZGU6OkdfU0hMLCBEc3RUeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNyY0NvcHlFeHRPclRydW5jLCBTaXplRGlmZk1JQik7Ci0gICAgICBCdWlsZGVyLmJ1aWxkSW5zdHIoVGFyZ2V0T3Bjb2RlOjpHX0FTSFIsIERzdFJlZywgU2hsTUlCLCBTaXplRGlmZk1JQik7Ci0gICAgICBtYXJrSW5zdEFuZERlZkRlYWQoTUksICpEZWZNSSwgRGVhZEluc3RzKTsKKyAgICAgIExMVCBTcmNUeSA9IE1SSS5nZXRUeXBlKFNyY1JlZyk7CisgICAgICB1bnNpZ25lZCBTaEFtdCA9IERzdFR5LmdldFNjYWxhclNpemVJbkJpdHMoKSAtIFNyY1R5LmdldFNjYWxhclNpemVJbkJpdHMoKTsKKyAgICAgIGF1dG8gTUlCU2hBbXQgPSBCdWlsZGVyLmJ1aWxkQ29uc3RhbnQoRHN0VHksIFNoQW10KTsKKyAgICAgIGF1dG8gTUlCU2hsID0gQnVpbGRlci5idWlsZEluc3RyKAorICAgICAgICAgIFRhcmdldE9wY29kZTo6R19TSEwsIHtEc3RUeX0sCisgICAgICAgICAge0J1aWxkZXIuYnVpbGRBbnlFeHRPclRydW5jKERzdFR5LCBUcnVuY1NyYyksIE1JQlNoQW10fSk7CisgICAgICBCdWlsZGVyLmJ1aWxkSW5zdHIoVGFyZ2V0T3Bjb2RlOjpHX0FTSFIsIHtEc3RSZWd9LCB7TUlCU2hsLCBNSUJTaEFtdH0pOworICAgICAgbWFya0luc3RBbmREZWZEZWFkKE1JLCAqTVJJLmdldFZSZWdEZWYoU3JjUmVnKSwgRGVhZEluc3RzKTsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gdHJ5Rm9sZEltcGxpY2l0RGVmKE1JLCBEZWFkSW5zdHMpOwogICB9CiAKLSAgLy8vIFRyeSB0byBmb2xkIHNiID0gRVhURU5EIChHX0lNUExJQ0lUX0RFRiBzYSkgLT4gc2IgPSBHX0lNUExJQ0lUX0RFRgorICAvLy8gVHJ5IHRvIGZvbGQgR19bQVNaXUVYVCAoR19JTVBMSUNJVF9ERUYpLgogICBib29sIHRyeUZvbGRJbXBsaWNpdERlZihNYWNoaW5lSW5zdHIgJk1JLAogICAgICAgICAgICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8TWFjaGluZUluc3RyICo+ICZEZWFkSW5zdHMpIHsKICAgICB1bnNpZ25lZCBPcGNvZGUgPSBNSS5nZXRPcGNvZGUoKTsKQEAgLTExOSwxOSArMTM4LDQxIEBACiAKICAgICBpZiAoTWFjaGluZUluc3RyICpEZWZNSSA9IGdldE9wY29kZURlZihUYXJnZXRPcGNvZGU6OkdfSU1QTElDSVRfREVGLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JLmdldE9wZXJhbmQoMSkuZ2V0UmVnKCksIE1SSSkpIHsKKyAgICAgIEJ1aWxkZXIuc2V0SW5zdHIoTUkpOwogICAgICAgdW5zaWduZWQgRHN0UmVnID0gTUkuZ2V0T3BlcmFuZCgwKS5nZXRSZWcoKTsKICAgICAgIExMVCBEc3RUeSA9IE1SSS5nZXRUeXBlKERzdFJlZyk7Ci0gICAgICBpZiAoaXNJbnN0VW5zdXBwb3J0ZWQoe1RhcmdldE9wY29kZTo6R19JTVBMSUNJVF9ERUYsIHtEc3RUeX19KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgTExWTV9ERUJVRyhkYmdzKCkgPDwgIi4uIENvbWJpbmUgRVhUKElNUExJQ0lUX0RFRikgIiA8PCBNSTspOwotICAgICAgQnVpbGRlci5zZXRJbnN0cihNSSk7Ci0gICAgICBCdWlsZGVyLmJ1aWxkSW5zdHIoVGFyZ2V0T3Bjb2RlOjpHX0lNUExJQ0lUX0RFRiwgRHN0UmVnKTsKKworICAgICAgaWYgKE9wY29kZSA9PSBUYXJnZXRPcGNvZGU6OkdfQU5ZRVhUKSB7CisgICAgICAgIC8vIEdfQU5ZRVhUIChHX0lNUExJQ0lUX0RFRikgLT4gR19JTVBMSUNJVF9ERUYKKyAgICAgICAgaWYgKGlzSW5zdFVuc3VwcG9ydGVkKHtUYXJnZXRPcGNvZGU6OkdfSU1QTElDSVRfREVGLCB7RHN0VHl9fSkpCisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBMTFZNX0RFQlVHKGRiZ3MoKSA8PCAiLi4gQ29tYmluZSBHX0FOWUVYVChHX0lNUExJQ0lUX0RFRik6ICIgPDwgTUk7KTsKKyAgICAgICAgQnVpbGRlci5idWlsZEluc3RyKFRhcmdldE9wY29kZTo6R19JTVBMSUNJVF9ERUYsIHtEc3RSZWd9LCB7fSk7CisgICAgICB9IGVsc2UgeworICAgICAgICAvLyBHX1tTWl1FWFQgKEdfSU1QTElDSVRfREVGKSAtPiBHX0NPTlNUQU5UIDAgYmVjYXVzZSB0aGUgdG9wCisgICAgICAgIC8vIGJpdHMgd2lsbCBiZSAwIGZvciBHX1pFWFQgYW5kIDAvMSBmb3IgdGhlIEdfU0VYVC4KKyAgICAgICAgaWYgKGlzQ29uc3RhbnRVbnN1cHBvcnRlZChEc3RUeSkpCisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBMTFZNX0RFQlVHKGRiZ3MoKSA8PCAiLi4gQ29tYmluZSBHX1tTWl1FWFQoR19JTVBMSUNJVF9ERUYpOiAiIDw8IE1JOyk7CisgICAgICAgIEJ1aWxkZXIuYnVpbGRDb25zdGFudChEc3RSZWcsIDApOworICAgICAgfQorCiAgICAgICBtYXJrSW5zdEFuZERlZkRlYWQoTUksICpEZWZNSSwgRGVhZEluc3RzKTsKICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAorICBzdGF0aWMgdW5zaWduZWQgZ2V0TWVyZ2VPcGNvZGUoTExUIE9wVHksIExMVCBEZXN0VHkpIHsKKyAgICBpZiAoT3BUeS5pc1ZlY3RvcigpICYmIERlc3RUeS5pc1ZlY3RvcigpKQorICAgICAgcmV0dXJuIFRhcmdldE9wY29kZTo6R19DT05DQVRfVkVDVE9SUzsKKworICAgIGlmIChPcFR5LmlzVmVjdG9yKCkgJiYgIURlc3RUeS5pc1ZlY3RvcigpKQorICAgICAgcmV0dXJuIFRhcmdldE9wY29kZTo6R19CVUlMRF9WRUNUT1I7CisKKyAgICByZXR1cm4gVGFyZ2V0T3Bjb2RlOjpHX01FUkdFX1ZBTFVFUzsKKyAgfQorCiAgIGJvb2wgdHJ5Q29tYmluZU1lcmdlcyhNYWNoaW5lSW5zdHIgJk1JLAogICAgICAgICAgICAgICAgICAgICAgICAgU21hbGxWZWN0b3JJbXBsPE1hY2hpbmVJbnN0ciAqPiAmRGVhZEluc3RzKSB7CiAKQEAgLTEzOSw4ICsxODAsMTQgQEAKICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHVuc2lnbmVkIE51bURlZnMgPSBNSS5nZXROdW1PcGVyYW5kcygpIC0gMTsKLSAgICBNYWNoaW5lSW5zdHIgKk1lcmdlSSA9IGdldE9wY29kZURlZihUYXJnZXRPcGNvZGU6OkdfTUVSR0VfVkFMVUVTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JLmdldE9wZXJhbmQoTnVtRGVmcykuZ2V0UmVnKCksIE1SSSk7CisKKyAgICBMTFQgT3BUeSA9IE1SSS5nZXRUeXBlKE1JLmdldE9wZXJhbmQoTnVtRGVmcykuZ2V0UmVnKCkpOworICAgIExMVCBEZXN0VHkgPSBNUkkuZ2V0VHlwZShNSS5nZXRPcGVyYW5kKDApLmdldFJlZygpKTsKKworICAgIHVuc2lnbmVkIE1lcmdpbmdPcGNvZGUgPSBnZXRNZXJnZU9wY29kZShPcFR5LCBEZXN0VHkpOworICAgIE1hY2hpbmVJbnN0ciAqTWVyZ2VJID0KKyAgICAgICAgZ2V0T3Bjb2RlRGVmKE1lcmdpbmdPcGNvZGUsIE1JLmdldE9wZXJhbmQoTnVtRGVmcykuZ2V0UmVnKCksIE1SSSk7CisKICAgICBpZiAoIU1lcmdlSSkKICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjA2LDYgKzI1Myw2NSBAQAogICAgIHJldHVybiB0cnVlOwogICB9CiAKKyAgc3RhdGljIGJvb2wgaXNNZXJnZUxpa2VPcGNvZGUodW5zaWduZWQgT3BjKSB7CisgICAgc3dpdGNoIChPcGMpIHsKKyAgICBjYXNlIFRhcmdldE9wY29kZTo6R19NRVJHRV9WQUxVRVM6CisgICAgY2FzZSBUYXJnZXRPcGNvZGU6OkdfQlVJTERfVkVDVE9SOgorICAgIGNhc2UgVGFyZ2V0T3Bjb2RlOjpHX0NPTkNBVF9WRUNUT1JTOgorICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKworICBib29sIHRyeUNvbWJpbmVFeHRyYWN0KE1hY2hpbmVJbnN0ciAmTUksCisgICAgICAgICAgICAgICAgICAgICAgICAgU21hbGxWZWN0b3JJbXBsPE1hY2hpbmVJbnN0ciAqPiAmRGVhZEluc3RzKSB7CisgICAgYXNzZXJ0KE1JLmdldE9wY29kZSgpID09IFRhcmdldE9wY29kZTo6R19FWFRSQUNUKTsKKworICAgIC8vIFRyeSB0byB1c2UgdGhlIHNvdXJjZSByZWdpc3RlcnMgZnJvbSBhIEdfTUVSR0VfVkFMVUVTCisgICAgLy8KKyAgICAvLyAlMiA9IEdfTUVSR0VfVkFMVUVTICUwLCAlMQorICAgIC8vICUzID0gR19FWFRSQUNUICUyLCBOCisgICAgLy8gPT4KKyAgICAvLworICAgIC8vIGZvciBOIDwgJTIuZ2V0U2l6ZUluQml0cygpIC8gMgorICAgIC8vICAgICAlMyA9IEdfRVhUUkFDVCAlMCwgTgorICAgIC8vCisgICAgLy8gZm9yIE4gPj0gJTIuZ2V0U2l6ZUluQml0cygpIC8gMgorICAgIC8vICAgICUzID0gR19FWFRSQUNUICUxLCAoTiAtICUwLmdldFNpemVJbkJpdHMoKQorCisgICAgdW5zaWduZWQgU3JjID0gbG9va1Rocm91Z2hDb3B5SW5zdHJzKE1JLmdldE9wZXJhbmQoMSkuZ2V0UmVnKCkpOworICAgIE1hY2hpbmVJbnN0ciAqTWVyZ2VJID0gTVJJLmdldFZSZWdEZWYoU3JjKTsKKyAgICBpZiAoIU1lcmdlSSB8fCAhaXNNZXJnZUxpa2VPcGNvZGUoTWVyZ2VJLT5nZXRPcGNvZGUoKSkpCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBMTFQgRHN0VHkgPSBNUkkuZ2V0VHlwZShNSS5nZXRPcGVyYW5kKDApLmdldFJlZygpKTsKKyAgICBMTFQgU3JjVHkgPSBNUkkuZ2V0VHlwZShTcmMpOworCisgICAgLy8gVE9ETzogRG8gd2UgbmVlZCB0byBjaGVjayBpZiB0aGUgcmVzdWx0aW5nIGV4dHJhY3QgaXMgc3VwcG9ydGVkPworICAgIHVuc2lnbmVkIEV4dHJhY3REc3RTaXplID0gRHN0VHkuZ2V0U2l6ZUluQml0cygpOworICAgIHVuc2lnbmVkIE9mZnNldCA9IE1JLmdldE9wZXJhbmQoMikuZ2V0SW1tKCk7CisgICAgdW5zaWduZWQgTnVtTWVyZ2VTcmNzID0gTWVyZ2VJLT5nZXROdW1PcGVyYW5kcygpIC0gMTsKKyAgICB1bnNpZ25lZCBNZXJnZVNyY1NpemUgPSBTcmNUeS5nZXRTaXplSW5CaXRzKCkgLyBOdW1NZXJnZVNyY3M7CisgICAgdW5zaWduZWQgTWVyZ2VTcmNJZHggPSBPZmZzZXQgLyBNZXJnZVNyY1NpemU7CisKKyAgICAvLyBDb21wdXRlIHRoZSBvZmZzZXQgb2YgdGhlIGxhc3QgYml0IHRoZSBleHRyYWN0IG5lZWRzLgorICAgIHVuc2lnbmVkIEVuZE1lcmdlU3JjSWR4ID0gKE9mZnNldCArIEV4dHJhY3REc3RTaXplIC0gMSkgLyBNZXJnZVNyY1NpemU7CisKKyAgICAvLyBDYW4ndCBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIGV4dHJhY3Qgc3BhbnMgbXVsdGlwbGUgaW5wdXRzLgorICAgIGlmIChNZXJnZVNyY0lkeCAhPSBFbmRNZXJnZVNyY0lkeCkKKyAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIFRPRE86IFdlIGNvdWxkIG1vZGlmeSBNSSBpbiBwbGFjZSBpbiBtb3N0IGNhc2VzLgorICAgIEJ1aWxkZXIuc2V0SW5zdHIoTUkpOworICAgIEJ1aWxkZXIuYnVpbGRFeHRyYWN0KAorICAgICAgTUkuZ2V0T3BlcmFuZCgwKS5nZXRSZWcoKSwKKyAgICAgIE1lcmdlSS0+Z2V0T3BlcmFuZChNZXJnZVNyY0lkeCArIDEpLmdldFJlZygpLAorICAgICAgT2Zmc2V0IC0gTWVyZ2VTcmNJZHggKiBNZXJnZVNyY1NpemUpOworICAgIG1hcmtJbnN0QW5kRGVmRGVhZChNSSwgKk1lcmdlSSwgRGVhZEluc3RzKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorCiAgIC8vLyBUcnkgdG8gY29tYmluZSBhd2F5IE1JLgogICAvLy8gUmV0dXJucyB0cnVlIGlmIGl0IGNvbWJpbmVkIGF3YXkgdGhlIE1JLgogICAvLy8gQWRkcyBpbnN0cnVjdGlvbnMgdGhhdCBhcmUgZGVhZCBhcyBhIHJlc3VsdCBvZiB0aGUgY29tYmluZQpAQCAtMjIzLDYgKzMyOSw4IEBACiAgICAgICByZXR1cm4gdHJ5Q29tYmluZVNFeHQoTUksIERlYWRJbnN0cyk7CiAgICAgY2FzZSBUYXJnZXRPcGNvZGU6OkdfVU5NRVJHRV9WQUxVRVM6CiAgICAgICByZXR1cm4gdHJ5Q29tYmluZU1lcmdlcyhNSSwgRGVhZEluc3RzKTsKKyAgICBjYXNlIFRhcmdldE9wY29kZTo6R19FWFRSQUNUOgorICAgICAgcmV0dXJuIHRyeUNvbWJpbmVFeHRyYWN0KE1JLCBEZWFkSW5zdHMpOwogICAgIGNhc2UgVGFyZ2V0T3Bjb2RlOjpHX1RSVU5DOiB7CiAgICAgICBib29sIENoYW5nZWQgPSBmYWxzZTsKICAgICAgIGZvciAoYXV0byAmVXNlIDogTVJJLnVzZV9pbnN0cnVjdGlvbnMoTUkuZ2V0T3BlcmFuZCgwKS5nZXRSZWcoKSkpCkBAIC0yMzMsNiArMzQxLDIzIEBACiAgIH0KIAogcHJpdmF0ZToKKworICBzdGF0aWMgdW5zaWduZWQgZ2V0QXJ0aWZhY3RTcmNSZWcoY29uc3QgTWFjaGluZUluc3RyICZNSSkgeworICAgIHN3aXRjaCAoTUkuZ2V0T3Bjb2RlKCkpIHsKKyAgICBjYXNlIFRhcmdldE9wY29kZTo6Q09QWToKKyAgICBjYXNlIFRhcmdldE9wY29kZTo6R19UUlVOQzoKKyAgICBjYXNlIFRhcmdldE9wY29kZTo6R19aRVhUOgorICAgIGNhc2UgVGFyZ2V0T3Bjb2RlOjpHX0FOWUVYVDoKKyAgICBjYXNlIFRhcmdldE9wY29kZTo6R19TRVhUOgorICAgIGNhc2UgVGFyZ2V0T3Bjb2RlOjpHX1VOTUVSR0VfVkFMVUVTOgorICAgICAgcmV0dXJuIE1JLmdldE9wZXJhbmQoTUkuZ2V0TnVtT3BlcmFuZHMoKSAtIDEpLmdldFJlZygpOworICAgIGNhc2UgVGFyZ2V0T3Bjb2RlOjpHX0VYVFJBQ1Q6CisgICAgICByZXR1cm4gTUkuZ2V0T3BlcmFuZCgxKS5nZXRSZWcoKTsKKyAgICBkZWZhdWx0OgorICAgICAgbGx2bV91bnJlYWNoYWJsZSgiTm90IGEgbGVnYWxpemF0aW9uIGFydGlmYWN0IGhhcHBlbiIpOworICAgIH0KKyAgfQorCiAgIC8vLyBNYXJrIE1JIGFzIGRlYWQuIElmIGEgZGVmIG9mIG9uZSBvZiBNSSdzIG9wZXJhbmRzLCBEZWZNSSwgd291bGQgYWxzbyBiZQogICAvLy8gZGVhZCBkdWUgdG8gTUkgYmVpbmcga2lsbGVkLCB0aGVuIG1hcmsgRGVmTUkgYXMgZGVhZCB0b28uCiAgIC8vLyBTb21lIG9mIHRoZSBjb21iaW5lcyAoZXh0ZW5kcyh0cnVuYykpLCB0cnkgdG8gd2FsayB0aHJvdWdoIHJlZHVuZGFudApAQCAtMjUzLDggKzM3OCw4IEBACiAgICAgLy8gYW5kIGFzIGEgcmVzdWx0LCAlMywgJTIsICUxIGFyZSBkZWFkLgogICAgIE1hY2hpbmVJbnN0ciAqUHJldk1JID0gJk1JOwogICAgIHdoaWxlIChQcmV2TUkgIT0gJkRlZk1JKSB7Ci0gICAgICB1bnNpZ25lZCBQcmV2UmVnU3JjID0KLSAgICAgICAgICBQcmV2TUktPmdldE9wZXJhbmQoUHJldk1JLT5nZXROdW1PcGVyYW5kcygpIC0gMSkuZ2V0UmVnKCk7CisgICAgICB1bnNpZ25lZCBQcmV2UmVnU3JjID0gZ2V0QXJ0aWZhY3RTcmNSZWcoKlByZXZNSSk7CisKICAgICAgIE1hY2hpbmVJbnN0ciAqVG1wRGVmID0gTVJJLmdldFZSZWdEZWYoUHJldlJlZ1NyYyk7CiAgICAgICBpZiAoTVJJLmhhc09uZVVzZShQcmV2UmVnU3JjKSkgewogICAgICAgICBpZiAoVG1wRGVmICE9ICZEZWZNSSkgewpAQCAtMjc3LDYgKzQwMiwyOCBAQAogICAgIGF1dG8gU3RlcCA9IExJLmdldEFjdGlvbihRdWVyeSk7CiAgICAgcmV0dXJuIFN0ZXAuQWN0aW9uID09IFVuc3VwcG9ydGVkIHx8IFN0ZXAuQWN0aW9uID09IE5vdEZvdW5kOwogICB9CisKKyAgYm9vbCBpc0NvbnN0YW50VW5zdXBwb3J0ZWQoTExUIFR5KSBjb25zdCB7CisgICAgaWYgKCFUeS5pc1ZlY3RvcigpKQorICAgICAgcmV0dXJuIGlzSW5zdFVuc3VwcG9ydGVkKHtUYXJnZXRPcGNvZGU6OkdfQ09OU1RBTlQsIHtUeX19KTsKKworICAgIExMVCBFbHRUeSA9IFR5LmdldEVsZW1lbnRUeXBlKCk7CisgICAgcmV0dXJuIGlzSW5zdFVuc3VwcG9ydGVkKHtUYXJnZXRPcGNvZGU6OkdfQ09OU1RBTlQsIHtFbHRUeX19KSB8fAorICAgICAgICAgICBpc0luc3RVbnN1cHBvcnRlZCh7VGFyZ2V0T3Bjb2RlOjpHX0JVSUxEX1ZFQ1RPUiwge1R5LCBFbHRUeX19KTsKKyAgfQorCisgIC8vLyBMb29rcyB0aHJvdWdoIGNvcHkgaW5zdHJ1Y3Rpb25zIGFuZCByZXR1cm5zIHRoZSBhY3R1YWwKKyAgLy8vIHNvdXJjZSByZWdpc3Rlci4KKyAgdW5zaWduZWQgbG9va1Rocm91Z2hDb3B5SW5zdHJzKHVuc2lnbmVkIFJlZykgeworICAgIHVuc2lnbmVkIFRtcFJlZzsKKyAgICB3aGlsZSAobWlfbWF0Y2goUmVnLCBNUkksIG1fQ29weShtX1JlZyhUbXBSZWcpKSkpIHsKKyAgICAgIGlmIChNUkkuZ2V0VHlwZShUbXBSZWcpLmlzVmFsaWQoKSkKKyAgICAgICAgUmVnID0gVG1wUmVnOworICAgICAgZWxzZQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIFJlZzsKKyAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgbGx2bQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTGVnYWxpemVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9MZWdhbGl6ZXIuaAppbmRleCA4Mjg0YWI2Li4wMTgxNjUwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9MZWdhbGl6ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9MZWdhbGl6ZXIuaApAQCAtMSw5ICsxLDggQEAKLS8vPT0gbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTGVnYWxpemVQYXNzLmggLS0tLS0tLS0tLS0tLSAtKi0gQysrIC0qLT09Ly8KKy8vPT0gbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTGVnYWxpemVyLmggLS0tLS0tLS0tLS0tLS0tLSAtKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9MZWdhbGl6ZXJIZWxwZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0xlZ2FsaXplckhlbHBlci5oCmluZGV4IDRkODA0ZDAuLjEzNjM1NmMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0xlZ2FsaXplckhlbHBlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0xlZ2FsaXplckhlbHBlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PSBsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9MZWdhbGl6ZXJIZWxwZXIuaCAtLS0tLS0tLS0tLS0tLS0tIC0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTMyLDYgKzMxLDcgQEAKIGNsYXNzIExlZ2FsaXplckluZm87CiBjbGFzcyBMZWdhbGl6ZXI7CiBjbGFzcyBNYWNoaW5lUmVnaXN0ZXJJbmZvOworY2xhc3MgR0lTZWxDaGFuZ2VPYnNlcnZlcjsKIAogY2xhc3MgTGVnYWxpemVySGVscGVyIHsKIHB1YmxpYzoKQEAgLTQ4LDggKzQ4LDEwIEBACiAgICAgVW5hYmxlVG9MZWdhbGl6ZSwKICAgfTsKIAotICBMZWdhbGl6ZXJIZWxwZXIoTWFjaGluZUZ1bmN0aW9uICZNRik7Ci0gIExlZ2FsaXplckhlbHBlcihNYWNoaW5lRnVuY3Rpb24gJk1GLCBjb25zdCBMZWdhbGl6ZXJJbmZvICZMSSk7CisgIExlZ2FsaXplckhlbHBlcihNYWNoaW5lRnVuY3Rpb24gJk1GLCBHSVNlbENoYW5nZU9ic2VydmVyICZPYnNlcnZlciwKKyAgICAgICAgICAgICAgICAgIE1hY2hpbmVJUkJ1aWxkZXIgJkIpOworICBMZWdhbGl6ZXJIZWxwZXIoTWFjaGluZUZ1bmN0aW9uICZNRiwgY29uc3QgTGVnYWxpemVySW5mbyAmTEksCisgICAgICAgICAgICAgICAgICBHSVNlbENoYW5nZU9ic2VydmVyICZPYnNlcnZlciwgTWFjaGluZUlSQnVpbGRlciAmQik7CiAKICAgLy8vIFJlcGxhY2UgXHAgTUkgYnkgYSBzZXF1ZW5jZSBvZiBsZWdhbCBpbnN0cnVjdGlvbnMgdGhhdCBjYW4gaW1wbGVtZW50IHRoZQogICAvLy8gc2FtZSBvcGVyYXRpb24uIE5vdGUgdGhhdCB0aGlzIG1lYW5zIFxwIE1JIG1heSBiZSBkZWxldGVkLCBzbyBhbnkgaXRlcmF0b3IKQEAgLTg0LDExICs4NiwxMSBAQAogICAvLy8gTGVnYWxpemUgYSB2ZWN0b3IgaW5zdHJ1Y3Rpb24gYnkgaW5jcmVhc2luZyB0aGUgbnVtYmVyIG9mIHZlY3RvciBlbGVtZW50cwogICAvLy8gaW52b2x2ZWQgYW5kIGlnbm9yaW5nIHRoZSBhZGRlZCBlbGVtZW50cyBsYXRlci4KICAgTGVnYWxpemVSZXN1bHQgbW9yZUVsZW1lbnRzVmVjdG9yKE1hY2hpbmVJbnN0ciAmTUksIHVuc2lnbmVkIFR5cGVJZHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFQgV2lkZVR5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVCBNb3JlVHkpOwogCiAgIC8vLyBFeHBvc2UgTUlSQnVpbGRlciBzbyBjbGllbnRzIGNhbiBzZXQgdGhlaXIgb3duIFJlY29yZEluc2VydEluc3RydWN0aW9uCiAgIC8vLyBmdW5jdGlvbnMKLSAgTWFjaGluZUlSQnVpbGRlciBNSVJCdWlsZGVyOworICBNYWNoaW5lSVJCdWlsZGVyICZNSVJCdWlsZGVyOwogCiAgIC8vLyBFeHBvc2UgTGVnYWxpemVySW5mbyBzbyB0aGUgY2xpZW50cyBjYW4gcmUtdXNlLgogICBjb25zdCBMZWdhbGl6ZXJJbmZvICZnZXRMZWdhbGl6ZXJJbmZvKCkgY29uc3QgeyByZXR1cm4gTEk7IH0KQEAgLTEwMiwyMSArMTA0LDEwMiBAQAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEV4dE9wY29kZSk7CiAKICAgLy8vIExlZ2FsaXplIGEgc2luZ2xlIG9wZXJhbmQgXHAgT3BJZHggb2YgdGhlIG1hY2hpbmUgaW5zdHJ1Y3Rpb24gXHAgTUkgYXMgYQorICAvLy8gVXNlIGJ5IHRydW5jYXRpbmcgdGhlIG9wZXJhbmQncyB0eXBlIHRvIFxwIE5hcnJvd1R5IHVzaW5nIEdfVFJVTkMsIGFuZAorICAvLy8gcmVwbGFjaW5nIHRoZSB2cmVnIG9mIHRoZSBvcGVyYW5kIGluIHBsYWNlLgorICB2b2lkIG5hcnJvd1NjYWxhclNyYyhNYWNoaW5lSW5zdHIgJk1JLCBMTFQgTmFycm93VHksIHVuc2lnbmVkIE9wSWR4KTsKKworICAvLy8gTGVnYWxpemUgYSBzaW5nbGUgb3BlcmFuZCBccCBPcElkeCBvZiB0aGUgbWFjaGluZSBpbnN0cnVjdGlvbiBccCBNSSBhcyBhCiAgIC8vLyBEZWYgYnkgZXh0ZW5kaW5nIHRoZSBvcGVyYW5kJ3MgdHlwZSB0byBccCBXaWRlVHkgYW5kIHRydW5jYXRpbmcgaXQgYmFjawogICAvLy8gd2l0aCB0aGUgXHAgVHJ1bmNPcGNvZGUsIGFuZCByZXBsYWNpbmcgdGhlIHZyZWcgb2YgdGhlIG9wZXJhbmQgaW4gcGxhY2UuCiAgIHZvaWQgd2lkZW5TY2FsYXJEc3QoTWFjaGluZUluc3RyICZNSSwgTExUIFdpZGVUeSwgdW5zaWduZWQgT3BJZHggPSAwLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFRydW5jT3Bjb2RlID0gVGFyZ2V0T3Bjb2RlOjpHX1RSVU5DKTsKIAorICAvLyBMZWdhbGl6ZSBhIHNpbmdsZSBvcGVyYW5kIFxwIE9wSWR4IG9mIHRoZSBtYWNoaW5lIGluc3RydWN0aW9uIFxwIE1JIGFzIGEKKyAgLy8gRGVmIGJ5IHRydW5jYXRpbmcgdGhlIG9wZXJhbmQncyB0eXBlIHRvIFxwIE5hcnJvd1R5LCByZXBsYWNpbmcgaW4gcGxhY2UgYW5kCisgIC8vIGV4dGVuZGluZyBiYWNrIHdpdGggXHAgRXh0T3Bjb2RlLgorICB2b2lkIG5hcnJvd1NjYWxhckRzdChNYWNoaW5lSW5zdHIgJk1JLCBMTFQgTmFycm93VHksIHVuc2lnbmVkIE9wSWR4LAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBFeHRPcGNvZGUpOworICAvLy8gTGVnYWxpemUgYSBzaW5nbGUgb3BlcmFuZCBccCBPcElkeCBvZiB0aGUgbWFjaGluZSBpbnN0cnVjdGlvbiBccCBNSSBhcyBhCisgIC8vLyBEZWYgYnkgcGVyZm9ybWluZyBpdCB3aXRoIGFkZGl0aW9uYWwgdmVjdG9yIGVsZW1lbnRzIGFuZCBleHRyYWN0aW5nIHRoZQorICAvLy8gcmVzdWx0IGVsZW1lbnRzLCBhbmQgcmVwbGFjaW5nIHRoZSB2cmVnIG9mIHRoZSBvcGVyYW5kIGluIHBsYWNlLgorICB2b2lkIG1vcmVFbGVtZW50c1ZlY3RvckRzdChNYWNoaW5lSW5zdHIgJk1JLCBMTFQgTW9yZVR5LCB1bnNpZ25lZCBPcElkeCk7CisKKyAgTGVnYWxpemVSZXN1bHQKKyAgd2lkZW5TY2FsYXJNZXJnZVZhbHVlcyhNYWNoaW5lSW5zdHIgJk1JLCB1bnNpZ25lZCBUeXBlSWR4LCBMTFQgV2lkZVR5KTsKKyAgTGVnYWxpemVSZXN1bHQKKyAgd2lkZW5TY2FsYXJVbm1lcmdlVmFsdWVzKE1hY2hpbmVJbnN0ciAmTUksIHVuc2lnbmVkIFR5cGVJZHgsIExMVCBXaWRlVHkpOworICBMZWdhbGl6ZVJlc3VsdAorICB3aWRlblNjYWxhckV4dHJhY3QoTWFjaGluZUluc3RyICZNSSwgdW5zaWduZWQgVHlwZUlkeCwgTExUIFdpZGVUeSk7CisgIExlZ2FsaXplUmVzdWx0CisgIHdpZGVuU2NhbGFySW5zZXJ0KE1hY2hpbmVJbnN0ciAmTUksIHVuc2lnbmVkIFR5cGVJZHgsIExMVCBXaWRlVHkpOworCiAgIC8vLyBIZWxwZXIgZnVuY3Rpb24gdG8gc3BsaXQgYSB3aWRlIGdlbmVyaWMgcmVnaXN0ZXIgaW50byBiaXR3aXNlIGJsb2NrcyB3aXRoCiAgIC8vLyB0aGUgZ2l2ZW4gVHlwZSAod2hpY2ggaW1wbGllcyB0aGUgbnVtYmVyIG9mIGJsb2NrcyBuZWVkZWQpLiBUaGUgZ2VuZXJpYwogICAvLy8gcmVnaXN0ZXJzIGNyZWF0ZWQgYXJlIGFwcGVuZGVkIHRvIE9wcywgc3RhcnRpbmcgYXQgYml0IDAgb2YgUmVnLgogICB2b2lkIGV4dHJhY3RQYXJ0cyh1bnNpZ25lZCBSZWcsIExMVCBUeSwgaW50IE51bVBhcnRzLAogICAgICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8dW5zaWduZWQ+ICZWUmVncyk7CiAKKyAgLy8vIFZlcnNpb24gd2hpY2ggaGFuZGxlcyBpcnJlZ3VsYXIgc3BsaXRzLgorICBib29sIGV4dHJhY3RQYXJ0cyh1bnNpZ25lZCBSZWcsIExMVCBSZWdUeSwgTExUIE1haW5UeSwKKyAgICAgICAgICAgICAgICAgICAgTExUICZMZWZ0b3ZlclR5LAorICAgICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8dW5zaWduZWQ+ICZWUmVncywKKyAgICAgICAgICAgICAgICAgICAgU21hbGxWZWN0b3JJbXBsPHVuc2lnbmVkPiAmTGVmdG92ZXJWUmVncyk7CisKKyAgLy8vIEhlbHBlciBmdW5jdGlvbiB0byBidWlsZCBhIHdpZGUgZ2VuZXJpYyByZWdpc3RlciBccCBEc3RSZWcgb2YgdHlwZSBccAorICAvLy8gUmVnVHkgZnJvbSBzbWFsbGVyIHBhcnRzLiBUaGlzIHdpbGwgcHJvZHVjZSBhIEdfTUVSR0VfVkFMVUVTLAorICAvLy8gR19CVUlMRF9WRUNUT1IsIEdfQ09OQ0FUX1ZFQ1RPUlMsIG9yIHNlcXVlbmNlIG9mIEdfSU5TRVJUIGFzIGFwcHJvcHJpYXRlCisgIC8vLyBmb3IgdGhlIHR5cGVzLgorICAvLy8KKyAgLy8vIFxwIFBhcnRSZWdzIG11c3QgYmUgcmVnaXN0ZXJzIG9mIHR5cGUgXHAgUGFydFR5LgorICAvLy8KKyAgLy8vIElmIFxwIFJlc3VsdFR5IGRvZXMgbm90IGV2ZW5seSBicmVhayBpbnRvIFxwIFBhcnRUeSBzaXplZCBwaWVjZXMsIHRoZQorICAvLy8gcmVtYWluZGVyIG11c3QgYmUgc3BlY2lmaWVkIHdpdGggXHAgTGVmdG92ZXJSZWdzIG9mIHR5cGUgXHAgTGVmdG92ZXJUeS4KKyAgdm9pZCBpbnNlcnRQYXJ0cyh1bnNpZ25lZCBEc3RSZWcsIExMVCBSZXN1bHRUeSwKKyAgICAgICAgICAgICAgICAgICBMTFQgUGFydFR5LCBBcnJheVJlZjx1bnNpZ25lZD4gUGFydFJlZ3MsCisgICAgICAgICAgICAgICAgICAgTExUIExlZnRvdmVyVHkgPSBMTFQoKSwgQXJyYXlSZWY8dW5zaWduZWQ+IExlZnRvdmVyUmVncyA9IHt9KTsKKworICBMZWdhbGl6ZVJlc3VsdCBmZXdlckVsZW1lbnRzVmVjdG9ySW1wbGljaXREZWYoTWFjaGluZUluc3RyICZNSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFR5cGVJZHgsIExMVCBOYXJyb3dUeSk7CisKKyAgLy8vIExlZ2FsaXplIGEgc2ltcGxlIHZlY3RvciBpbnN0cnVjdGlvbiB3aGVyZSBhbGwgb3BlcmFuZHMgYXJlIHRoZSBzYW1lIHR5cGUKKyAgLy8vIGJ5IHNwbGl0dGluZyBpbnRvIG11bHRpcGxlIGNvbXBvbmVudHMuCisgIExlZ2FsaXplUmVzdWx0IGZld2VyRWxlbWVudHNWZWN0b3JCYXNpYyhNYWNoaW5lSW5zdHIgJk1JLCB1bnNpZ25lZCBUeXBlSWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExUIE5hcnJvd1R5KTsKKworICAvLy8gTGVnYWxpemUgYSBpbnN0cnVjdGlvbiB3aXRoIGEgdmVjdG9yIHR5cGUgd2hlcmUgZWFjaCBvcGVyYW5kIG1heSBoYXZlIGEKKyAgLy8vIGRpZmZlcmVudCBlbGVtZW50IHR5cGUuIEFsbCB0eXBlIGluZGV4ZXMgbXVzdCBoYXZlIHRoZSBzYW1lIG51bWJlciBvZgorICAvLy8gZWxlbWVudHMuCisgIExlZ2FsaXplUmVzdWx0IGZld2VyRWxlbWVudHNWZWN0b3JNdWx0aUVsdFR5cGUoTWFjaGluZUluc3RyICZNSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBUeXBlSWR4LCBMTFQgTmFycm93VHkpOworCisgIExlZ2FsaXplUmVzdWx0IGZld2VyRWxlbWVudHNWZWN0b3JDYXN0cyhNYWNoaW5lSW5zdHIgJk1JLCB1bnNpZ25lZCBUeXBlSWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExUIE5hcnJvd1R5KTsKKworICBMZWdhbGl6ZVJlc3VsdAorICBmZXdlckVsZW1lbnRzVmVjdG9yQ21wKE1hY2hpbmVJbnN0ciAmTUksIHVuc2lnbmVkIFR5cGVJZHgsIExMVCBOYXJyb3dUeSk7CisKKyAgTGVnYWxpemVSZXN1bHQKKyAgZmV3ZXJFbGVtZW50c1ZlY3RvclNlbGVjdChNYWNoaW5lSW5zdHIgJk1JLCB1bnNpZ25lZCBUeXBlSWR4LCBMTFQgTmFycm93VHkpOworCisgIExlZ2FsaXplUmVzdWx0CisgIHJlZHVjZUxvYWRTdG9yZVdpZHRoKE1hY2hpbmVJbnN0ciAmTUksIHVuc2lnbmVkIFR5cGVJZHgsIExMVCBOYXJyb3dUeSk7CisKKyAgTGVnYWxpemVSZXN1bHQgbmFycm93U2NhbGFyU2hpZnRCeUNvbnN0YW50KE1hY2hpbmVJbnN0ciAmTUksIGNvbnN0IEFQSW50ICZBbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFQgSGFsZlR5LCBMTFQgU2hpZnRBbXRUeSk7CisKKyAgTGVnYWxpemVSZXN1bHQgbmFycm93U2NhbGFyU2hpZnQoTWFjaGluZUluc3RyICZNSSwgdW5zaWduZWQgVHlwZUlkeCwgTExUIFR5KTsKKyAgTGVnYWxpemVSZXN1bHQgbmFycm93U2NhbGFyTXVsKE1hY2hpbmVJbnN0ciAmTUksIHVuc2lnbmVkIFR5cGVJZHgsIExMVCBUeSk7CisgIExlZ2FsaXplUmVzdWx0IG5hcnJvd1NjYWxhckV4dHJhY3QoTWFjaGluZUluc3RyICZNSSwgdW5zaWduZWQgVHlwZUlkeCwgTExUIFR5KTsKKyAgTGVnYWxpemVSZXN1bHQgbmFycm93U2NhbGFySW5zZXJ0KE1hY2hpbmVJbnN0ciAmTUksIHVuc2lnbmVkIFR5cGVJZHgsIExMVCBUeSk7CisKKyAgTGVnYWxpemVSZXN1bHQgbmFycm93U2NhbGFyU2VsZWN0KE1hY2hpbmVJbnN0ciAmTUksIHVuc2lnbmVkIFR5cGVJZHgsIExMVCBUeSk7CisKICAgTGVnYWxpemVSZXN1bHQgbG93ZXJCaXRDb3VudChNYWNoaW5lSW5zdHIgJk1JLCB1bnNpZ25lZCBUeXBlSWR4LCBMTFQgVHkpOwogCiAgIE1hY2hpbmVSZWdpc3RlckluZm8gJk1SSTsKICAgY29uc3QgTGVnYWxpemVySW5mbyAmTEk7CisgIC8vLyBUbyBrZWVwIHRyYWNrIG9mIGNoYW5nZXMgbWFkZSBieSB0aGUgTGVnYWxpemVySGVscGVyLgorICBHSVNlbENoYW5nZU9ic2VydmVyICZPYnNlcnZlcjsKIH07CiAKIC8vLyBIZWxwZXIgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIHRoZSBnaXZlbiBsaWJjYWxsLgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTGVnYWxpemVySW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTGVnYWxpemVySW5mby5oCmluZGV4IGE4YzI2MDguLjU5NzkxNzMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL0xlZ2FsaXplckluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9MZWdhbGl6ZXJJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTGVnYWxpemVySW5mby5oIC0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTM5LDYgKzM4LDcgQEAKIGNsYXNzIE1hY2hpbmVJUkJ1aWxkZXI7CiBjbGFzcyBNYWNoaW5lUmVnaXN0ZXJJbmZvOwogY2xhc3MgTUNJbnN0ckluZm87CitjbGFzcyBHSVNlbENoYW5nZU9ic2VydmVyOwogCiBuYW1lc3BhY2UgTGVnYWxpemVBY3Rpb25zIHsKIGVudW0gTGVnYWxpemVBY3Rpb24gOiBzdGQ6OnVpbnQ4X3QgewpAQCAtMTIxLDcgKzEyMSw3IEBACiAgIEFycmF5UmVmPExMVD4gVHlwZXM7CiAKICAgc3RydWN0IE1lbURlc2MgewotICAgIHVpbnQ2NF90IFNpemU7CisgICAgdWludDY0X3QgU2l6ZUluQml0czsKICAgICBBdG9taWNPcmRlcmluZyBPcmRlcmluZzsKICAgfTsKIApAQCAtMjA0LDE1ICsyMDQsNDAgQEAKICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VHlwZVBhaXJBbmRNZW1TaXplPiBUeXBlc0FuZE1lbVNpemVJbml0KTsKIC8vLyBUcnVlIGlmZiB0aGUgc3BlY2lmaWVkIHR5cGUgaW5kZXggaXMgYSBzY2FsYXIuCiBMZWdhbGl0eVByZWRpY2F0ZSBpc1NjYWxhcih1bnNpZ25lZCBUeXBlSWR4KTsKKy8vLyBUcnVlIGlmZiB0aGUgc3BlY2lmaWVkIHR5cGUgaW5kZXggaXMgYSB2ZWN0b3IuCitMZWdhbGl0eVByZWRpY2F0ZSBpc1ZlY3Rvcih1bnNpZ25lZCBUeXBlSWR4KTsKKy8vLyBUcnVlIGlmZiB0aGUgc3BlY2lmaWVkIHR5cGUgaW5kZXggaXMgYSBwb2ludGVyICh3aXRoIGFueSBhZGRyZXNzIHNwYWNlKS4KK0xlZ2FsaXR5UHJlZGljYXRlIGlzUG9pbnRlcih1bnNpZ25lZCBUeXBlSWR4KTsKKy8vLyBUcnVlIGlmZiB0aGUgc3BlY2lmaWVkIHR5cGUgaW5kZXggaXMgYSBwb2ludGVyIHdpdGggdGhlIHNwZWNpZmllZCBhZGRyZXNzCisvLy8gc3BhY2UuCitMZWdhbGl0eVByZWRpY2F0ZSBpc1BvaW50ZXIodW5zaWduZWQgVHlwZUlkeCwgdW5zaWduZWQgQWRkclNwYWNlKTsKKwogLy8vIFRydWUgaWZmIHRoZSBzcGVjaWZpZWQgdHlwZSBpbmRleCBpcyBhIHNjYWxhciB0aGF0J3MgbmFycm93ZXIgdGhhbiB0aGUgZ2l2ZW4KIC8vLyBzaXplLgogTGVnYWxpdHlQcmVkaWNhdGUgbmFycm93ZXJUaGFuKHVuc2lnbmVkIFR5cGVJZHgsIHVuc2lnbmVkIFNpemUpOworCiAvLy8gVHJ1ZSBpZmYgdGhlIHNwZWNpZmllZCB0eXBlIGluZGV4IGlzIGEgc2NhbGFyIHRoYXQncyB3aWRlciB0aGFuIHRoZSBnaXZlbgogLy8vIHNpemUuCiBMZWdhbGl0eVByZWRpY2F0ZSB3aWRlclRoYW4odW5zaWduZWQgVHlwZUlkeCwgdW5zaWduZWQgU2l6ZSk7CisKKy8vLyBUcnVlIGlmZiB0aGUgc3BlY2lmaWVkIHR5cGUgaW5kZXggaXMgYSBzY2FsYXIgb3IgdmVjdG9yIHdpdGggYW4gZWxlbWVudCB0eXBlCisvLy8gdGhhdCdzIG5hcnJvd2VyIHRoYW4gdGhlIGdpdmVuIHNpemUuCitMZWdhbGl0eVByZWRpY2F0ZSBzY2FsYXJPckVsdE5hcnJvd2VyVGhhbih1bnNpZ25lZCBUeXBlSWR4LCB1bnNpZ25lZCBTaXplKTsKKworLy8vIFRydWUgaWZmIHRoZSBzcGVjaWZpZWQgdHlwZSBpbmRleCBpcyBhIHNjYWxhciBvciBhIHZlY3RvciB3aXRoIGFuIGVsZW1lbnQKKy8vLyB0eXBlIHRoYXQncyB3aWRlciB0aGFuIHRoZSBnaXZlbiBzaXplLgorTGVnYWxpdHlQcmVkaWNhdGUgc2NhbGFyT3JFbHRXaWRlclRoYW4odW5zaWduZWQgVHlwZUlkeCwgdW5zaWduZWQgU2l6ZSk7CisKIC8vLyBUcnVlIGlmZiB0aGUgc3BlY2lmaWVkIHR5cGUgaW5kZXggaXMgYSBzY2FsYXIgd2hvc2Ugc2l6ZSBpcyBub3QgYSBwb3dlciBvZgogLy8vIDIuCiBMZWdhbGl0eVByZWRpY2F0ZSBzaXplTm90UG93Mih1bnNpZ25lZCBUeXBlSWR4KTsKKworLy8vIFRydWUgaWZmIHRoZSBzcGVjaWZpZWQgdHlwZSBpbmRleCBpcyBhIHNjYWxhciBvciB2ZWN0b3Igd2hvc2UgZWxlbWVudCBzaXplCisvLy8gaXMgbm90IGEgcG93ZXIgb2YgMi4KK0xlZ2FsaXR5UHJlZGljYXRlIHNjYWxhck9yRWx0U2l6ZU5vdFBvdzIodW5zaWduZWQgVHlwZUlkeCk7CisKKy8vLyBUcnVlIGlmZiB0aGUgc3BlY2lmaWVkIHR5cGUgaW5kaWNlcyBhcmUgYm90aCB0aGUgc2FtZSBiaXQgc2l6ZS4KK0xlZ2FsaXR5UHJlZGljYXRlIHNhbWVTaXplKHVuc2lnbmVkIFR5cGVJZHgwLCB1bnNpZ25lZCBUeXBlSWR4MSk7CiAvLy8gVHJ1ZSBpZmYgdGhlIHNwZWNpZmllZCBNTU8gaW5kZXggaGFzIGEgc2l6ZSB0aGF0IGlzIG5vdCBhIHBvd2VyIG9mIDIKIExlZ2FsaXR5UHJlZGljYXRlIG1lbVNpemVJbkJ5dGVzTm90UG93Mih1bnNpZ25lZCBNTU9JZHgpOwogLy8vIFRydWUgaWZmIHRoZSBzcGVjaWZpZWQgdHlwZSBpbmRleCBpcyBhIHZlY3RvciB3aG9zZSBlbGVtZW50IGNvdW50IGlzIG5vdCBhCkBAIC0yMjcsMTMgKzI1MiwyNSBAQAogbmFtZXNwYWNlIExlZ2FsaXplTXV0YXRpb25zIHsKIC8vLyBTZWxlY3QgdGhpcyBzcGVjaWZpYyB0eXBlIGZvciB0aGUgZ2l2ZW4gdHlwZSBpbmRleC4KIExlZ2FsaXplTXV0YXRpb24gY2hhbmdlVG8odW5zaWduZWQgVHlwZUlkeCwgTExUIFR5KTsKKwogLy8vIEtlZXAgdGhlIHNhbWUgdHlwZSBhcyB0aGUgZ2l2ZW4gdHlwZSBpbmRleC4KIExlZ2FsaXplTXV0YXRpb24gY2hhbmdlVG8odW5zaWduZWQgVHlwZUlkeCwgdW5zaWduZWQgRnJvbVR5cGVJZHgpOwotLy8vIFdpZGVuIHRoZSB0eXBlIGZvciB0aGUgZ2l2ZW4gdHlwZSBpbmRleCB0byB0aGUgbmV4dCBwb3dlciBvZiAyLgotTGVnYWxpemVNdXRhdGlvbiB3aWRlblNjYWxhclRvTmV4dFBvdzIodW5zaWduZWQgVHlwZUlkeCwgdW5zaWduZWQgTWluID0gMCk7CisKKy8vLyBLZWVwIHRoZSBzYW1lIHNjYWxhciBvciBlbGVtZW50IHR5cGUgYXMgdGhlIGdpdmVuIHR5cGUgaW5kZXguCitMZWdhbGl6ZU11dGF0aW9uIGNoYW5nZUVsZW1lbnRUbyh1bnNpZ25lZCBUeXBlSWR4LCB1bnNpZ25lZCBGcm9tVHlwZUlkeCk7CisKKy8vLyBLZWVwIHRoZSBzYW1lIHNjYWxhciBvciBlbGVtZW50IHR5cGUgYXMgdGhlIGdpdmVuIHR5cGUuCitMZWdhbGl6ZU11dGF0aW9uIGNoYW5nZUVsZW1lbnRUbyh1bnNpZ25lZCBUeXBlSWR4LCBMTFQgVHkpOworCisvLy8gV2lkZW4gdGhlIHNjYWxhciB0eXBlIG9yIHZlY3RvciBlbGVtZW50IHR5cGUgZm9yIHRoZSBnaXZlbiB0eXBlIGluZGV4IHRvIHRoZQorLy8vIG5leHQgcG93ZXIgb2YgMi4KK0xlZ2FsaXplTXV0YXRpb24gd2lkZW5TY2FsYXJPckVsdFRvTmV4dFBvdzIodW5zaWduZWQgVHlwZUlkeCwgdW5zaWduZWQgTWluID0gMCk7CisKIC8vLyBBZGQgbW9yZSBlbGVtZW50cyB0byB0aGUgdHlwZSBmb3IgdGhlIGdpdmVuIHR5cGUgaW5kZXggdG8gdGhlIG5leHQgcG93ZXIgb2YKIC8vLyAyLgogTGVnYWxpemVNdXRhdGlvbiBtb3JlRWxlbWVudHNUb05leHRQb3cyKHVuc2lnbmVkIFR5cGVJZHgsIHVuc2lnbmVkIE1pbiA9IDApOworLy8vIEJyZWFrIHVwIHRoZSB2ZWN0b3IgdHlwZSBmb3IgdGhlIGdpdmVuIHR5cGUgaW5kZXggaW50byB0aGUgZWxlbWVudCB0eXBlLgorTGVnYWxpemVNdXRhdGlvbiBzY2FsYXJpemUodW5zaWduZWQgVHlwZUlkeCk7CiB9IC8vIGVuZCBuYW1lc3BhY2UgTGVnYWxpemVNdXRhdGlvbnMKIAogLy8vIEEgc2luZ2xlIHJ1bGUgaW4gYSBsZWdhbGl6ZXIgaW5mbyBydWxlc2V0LgpAQCAtNTk2LDEzICs2MzMsMjkgQEAKICAgICByZXR1cm4gYWN0aW9uRm9yQ2FydGVzaWFuUHJvZHVjdChMZWdhbGl6ZUFjdGlvbjo6Q3VzdG9tLCBUeXBlczAsIFR5cGVzMSk7CiAgIH0KIAorICAvLy8gVW5jb25kaXRpb25hbGx5IGN1c3RvbSBsb3dlci4KKyAgTGVnYWxpemVSdWxlU2V0ICZjdXN0b20oKSB7CisgICAgcmV0dXJuIGN1c3RvbUlmKGFsd2F5cyk7CisgIH0KKwogICAvLy8gV2lkZW4gdGhlIHNjYWxhciB0byB0aGUgbmV4dCBwb3dlciBvZiB0d28gdGhhdCBpcyBhdCBsZWFzdCBNaW5TaXplLgogICAvLy8gTm8gZWZmZWN0IGlmIHRoZSB0eXBlIGlzIG5vdCBhIHNjYWxhciBvciBpcyBhIHBvd2VyIG9mIHR3by4KICAgTGVnYWxpemVSdWxlU2V0ICZ3aWRlblNjYWxhclRvTmV4dFBvdzIodW5zaWduZWQgVHlwZUlkeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTWluU2l6ZSA9IDApIHsKICAgICB1c2luZyBuYW1lc3BhY2UgTGVnYWxpdHlQcmVkaWNhdGVzOwotICAgIHJldHVybiBhY3Rpb25JZihMZWdhbGl6ZUFjdGlvbjo6V2lkZW5TY2FsYXIsIHNpemVOb3RQb3cyKHR5cGVJZHgoVHlwZUlkeCkpLAotICAgICAgICAgICAgICAgICAgICBMZWdhbGl6ZU11dGF0aW9uczo6d2lkZW5TY2FsYXJUb05leHRQb3cyKFR5cGVJZHgsIE1pblNpemUpKTsKKyAgICByZXR1cm4gYWN0aW9uSWYoCisgICAgICAgIExlZ2FsaXplQWN0aW9uOjpXaWRlblNjYWxhciwgc2l6ZU5vdFBvdzIodHlwZUlkeChUeXBlSWR4KSksCisgICAgICAgIExlZ2FsaXplTXV0YXRpb25zOjp3aWRlblNjYWxhck9yRWx0VG9OZXh0UG93MihUeXBlSWR4LCBNaW5TaXplKSk7CisgIH0KKworICAvLy8gV2lkZW4gdGhlIHNjYWxhciBvciB2ZWN0b3IgZWxlbWVudCB0eXBlIHRvIHRoZSBuZXh0IHBvd2VyIG9mIHR3byB0aGF0IGlzCisgIC8vLyBhdCBsZWFzdCBNaW5TaXplLiAgTm8gZWZmZWN0IGlmIHRoZSBzY2FsYXIgc2l6ZSBpcyBhIHBvd2VyIG9mIHR3by4KKyAgTGVnYWxpemVSdWxlU2V0ICZ3aWRlblNjYWxhck9yRWx0VG9OZXh0UG93Mih1bnNpZ25lZCBUeXBlSWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE1pblNpemUgPSAwKSB7CisgICAgdXNpbmcgbmFtZXNwYWNlIExlZ2FsaXR5UHJlZGljYXRlczsKKyAgICByZXR1cm4gYWN0aW9uSWYoCisgICAgICAgIExlZ2FsaXplQWN0aW9uOjpXaWRlblNjYWxhciwgc2NhbGFyT3JFbHRTaXplTm90UG93Mih0eXBlSWR4KFR5cGVJZHgpKSwKKyAgICAgICAgTGVnYWxpemVNdXRhdGlvbnM6OndpZGVuU2NhbGFyT3JFbHRUb05leHRQb3cyKFR5cGVJZHgsIE1pblNpemUpKTsKICAgfQogCiAgIExlZ2FsaXplUnVsZVNldCAmbmFycm93U2NhbGFyKHVuc2lnbmVkIFR5cGVJZHgsIExlZ2FsaXplTXV0YXRpb24gTXV0YXRpb24pIHsKQEAgLTYxMSw2ICs2NjQsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgTXV0YXRpb24pOwogICB9CiAKKyAgTGVnYWxpemVSdWxlU2V0ICZzY2FsYXJpemUodW5zaWduZWQgVHlwZUlkeCkgeworICAgIHVzaW5nIG5hbWVzcGFjZSBMZWdhbGl0eVByZWRpY2F0ZXM7CisgICAgcmV0dXJuIGFjdGlvbklmKExlZ2FsaXplQWN0aW9uOjpGZXdlckVsZW1lbnRzLCBpc1ZlY3Rvcih0eXBlSWR4KFR5cGVJZHgpKSwKKyAgICAgICAgICAgICAgICAgICAgTGVnYWxpemVNdXRhdGlvbnM6OnNjYWxhcml6ZShUeXBlSWR4KSk7CisgIH0KKworICAvLy8gRW5zdXJlIHRoZSBzY2FsYXIgaXMgYXQgbGVhc3QgYXMgd2lkZSBhcyBUeS4KKyAgTGVnYWxpemVSdWxlU2V0ICZtaW5TY2FsYXJPckVsdCh1bnNpZ25lZCBUeXBlSWR4LCBjb25zdCBMTFQgJlR5KSB7CisgICAgdXNpbmcgbmFtZXNwYWNlIExlZ2FsaXR5UHJlZGljYXRlczsKKyAgICB1c2luZyBuYW1lc3BhY2UgTGVnYWxpemVNdXRhdGlvbnM7CisgICAgcmV0dXJuIGFjdGlvbklmKExlZ2FsaXplQWN0aW9uOjpXaWRlblNjYWxhciwKKyAgICAgICAgICAgICAgICAgICAgc2NhbGFyT3JFbHROYXJyb3dlclRoYW4oVHlwZUlkeCwgVHkuZ2V0U2NhbGFyU2l6ZUluQml0cygpKSwKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlRWxlbWVudFRvKHR5cGVJZHgoVHlwZUlkeCksIFR5KSk7CisgIH0KKwogICAvLy8gRW5zdXJlIHRoZSBzY2FsYXIgaXMgYXQgbGVhc3QgYXMgd2lkZSBhcyBUeS4KICAgTGVnYWxpemVSdWxlU2V0ICZtaW5TY2FsYXIodW5zaWduZWQgVHlwZUlkeCwgY29uc3QgTExUICZUeSkgewogICAgIHVzaW5nIG5hbWVzcGFjZSBMZWdhbGl0eVByZWRpY2F0ZXM7CkBAIC02MjEsNiArNjg5LDE1IEBACiAgIH0KIAogICAvLy8gRW5zdXJlIHRoZSBzY2FsYXIgaXMgYXQgbW9zdCBhcyB3aWRlIGFzIFR5LgorICBMZWdhbGl6ZVJ1bGVTZXQgJm1heFNjYWxhck9yRWx0KHVuc2lnbmVkIFR5cGVJZHgsIGNvbnN0IExMVCAmVHkpIHsKKyAgICB1c2luZyBuYW1lc3BhY2UgTGVnYWxpdHlQcmVkaWNhdGVzOworICAgIHVzaW5nIG5hbWVzcGFjZSBMZWdhbGl6ZU11dGF0aW9uczsKKyAgICByZXR1cm4gYWN0aW9uSWYoTGVnYWxpemVBY3Rpb246Ok5hcnJvd1NjYWxhciwKKyAgICAgICAgICAgICAgICAgICAgc2NhbGFyT3JFbHRXaWRlclRoYW4oVHlwZUlkeCwgVHkuZ2V0U2NhbGFyU2l6ZUluQml0cygpKSwKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlRWxlbWVudFRvKHR5cGVJZHgoVHlwZUlkeCksIFR5KSk7CisgIH0KKworICAvLy8gRW5zdXJlIHRoZSBzY2FsYXIgaXMgYXQgbW9zdCBhcyB3aWRlIGFzIFR5LgogICBMZWdhbGl6ZVJ1bGVTZXQgJm1heFNjYWxhcih1bnNpZ25lZCBUeXBlSWR4LCBjb25zdCBMTFQgJlR5KSB7CiAgICAgdXNpbmcgbmFtZXNwYWNlIExlZ2FsaXR5UHJlZGljYXRlczsKICAgICB1c2luZyBuYW1lc3BhY2UgTGVnYWxpemVNdXRhdGlvbnM7CkBAIC02MzYsMTIgKzcxMywxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExMVCAmVHkpIHsKICAgICB1c2luZyBuYW1lc3BhY2UgTGVnYWxpdHlQcmVkaWNhdGVzOwogICAgIHVzaW5nIG5hbWVzcGFjZSBMZWdhbGl6ZU11dGF0aW9uczsKLSAgICByZXR1cm4gYWN0aW9uSWYoTGVnYWxpemVBY3Rpb246Ok5hcnJvd1NjYWxhciwKLSAgICAgICAgICAgICAgICAgICAgWz1dKGNvbnN0IExlZ2FsaXR5UXVlcnkgJlF1ZXJ5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpZGVyVGhhbihUeXBlSWR4LCBUeS5nZXRTaXplSW5CaXRzKCkpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZShRdWVyeSk7Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZVRvKHR5cGVJZHgoVHlwZUlkeCksIFR5KSk7CisgICAgcmV0dXJuIGFjdGlvbklmKAorICAgICAgICBMZWdhbGl6ZUFjdGlvbjo6TmFycm93U2NhbGFyLAorICAgICAgICBbPV0oY29uc3QgTGVnYWxpdHlRdWVyeSAmUXVlcnkpIHsKKyAgICAgICAgICByZXR1cm4gd2lkZXJUaGFuKFR5cGVJZHgsIFR5LmdldFNpemVJbkJpdHMoKSkgJiYgUHJlZGljYXRlKFF1ZXJ5KTsKKyAgICAgICAgfSwKKyAgICAgICAgY2hhbmdlRWxlbWVudFRvKHR5cGVJZHgoVHlwZUlkeCksIFR5KSk7CiAgIH0KIAogICAvLy8gTGltaXQgdGhlIHJhbmdlIG9mIHNjYWxhciBzaXplcyB0byBNaW5UeSBhbmQgTWF4VHkuCkBAIC02NTEsNiArNzI4LDI3IEBACiAgICAgcmV0dXJuIG1pblNjYWxhcihUeXBlSWR4LCBNaW5UeSkubWF4U2NhbGFyKFR5cGVJZHgsIE1heFR5KTsKICAgfQogCisgIC8vLyBMaW1pdCB0aGUgcmFuZ2Ugb2Ygc2NhbGFyIHNpemVzIHRvIE1pblR5IGFuZCBNYXhUeS4KKyAgTGVnYWxpemVSdWxlU2V0ICZjbGFtcFNjYWxhck9yRWx0KHVuc2lnbmVkIFR5cGVJZHgsIGNvbnN0IExMVCAmTWluVHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMTFQgJk1heFR5KSB7CisgICAgcmV0dXJuIG1pblNjYWxhck9yRWx0KFR5cGVJZHgsIE1pblR5KS5tYXhTY2FsYXJPckVsdChUeXBlSWR4LCBNYXhUeSk7CisgIH0KKworICAvLy8gV2lkZW4gdGhlIHNjYWxhciB0byBtYXRjaCB0aGUgc2l6ZSBvZiBhbm90aGVyLgorICBMZWdhbGl6ZVJ1bGVTZXQgJm1pblNjYWxhclNhbWVBcyh1bnNpZ25lZCBUeXBlSWR4LCB1bnNpZ25lZCBMYXJnZVR5cGVJZHgpIHsKKyAgICB0eXBlSWR4KFR5cGVJZHgpOworICAgIHJldHVybiB3aWRlblNjYWxhcklmKAorICAgICAgICBbPV0oY29uc3QgTGVnYWxpdHlRdWVyeSAmUXVlcnkpIHsKKyAgICAgICAgICByZXR1cm4gUXVlcnkuVHlwZXNbTGFyZ2VUeXBlSWR4XS5nZXRTY2FsYXJTaXplSW5CaXRzKCkgPgorICAgICAgICAgICAgICAgICBRdWVyeS5UeXBlc1tUeXBlSWR4XS5nZXRTaXplSW5CaXRzKCk7CisgICAgICAgIH0sCisgICAgICAgIFs9XShjb25zdCBMZWdhbGl0eVF1ZXJ5ICZRdWVyeSkgeworICAgICAgICAgIExMVCBUID0gUXVlcnkuVHlwZXNbTGFyZ2VUeXBlSWR4XTsKKyAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoVHlwZUlkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVC5pc1ZlY3RvcigpID8gVC5nZXRFbGVtZW50VHlwZSgpIDogVCk7CisgICAgICAgIH0pOworICB9CisKICAgLy8vIEFkZCBtb3JlIGVsZW1lbnRzIHRvIHRoZSB2ZWN0b3IgdG8gcmVhY2ggdGhlIG5leHQgcG93ZXIgb2YgdHdvLgogICAvLy8gTm8gZWZmZWN0IGlmIHRoZSB0eXBlIGlzIG5vdCBhIHZlY3RvciBvciB0aGUgZWxlbWVudCBjb3VudCBpcyBhIHBvd2VyIG9mCiAgIC8vLyB0d28uCkBAIC02NzYsNyArNzc0LDcgQEAKICAgICAgICAgWz1dKGNvbnN0IExlZ2FsaXR5UXVlcnkgJlF1ZXJ5KSB7CiAgICAgICAgICAgTExUIFZlY1R5ID0gUXVlcnkuVHlwZXNbVHlwZUlkeF07CiAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKAotICAgICAgICAgICAgICBUeXBlSWR4LCBMTFQ6OnZlY3RvcihNaW5FbGVtZW50cywgVmVjVHkuZ2V0U2NhbGFyU2l6ZUluQml0cygpKSk7CisgICAgICAgICAgICAgIFR5cGVJZHgsIExMVDo6dmVjdG9yKE1pbkVsZW1lbnRzLCBWZWNUeS5nZXRFbGVtZW50VHlwZSgpKSk7CiAgICAgICAgIH0pOwogICB9CiAgIC8vLyBMaW1pdCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIEVsdFR5IHZlY3RvcnMgdG8gYXQgbW9zdCBNYXhFbGVtZW50cy4KQEAgLTY5Myw4ICs3OTEsOCBAQAogICAgICAgICB9LAogICAgICAgICBbPV0oY29uc3QgTGVnYWxpdHlRdWVyeSAmUXVlcnkpIHsKICAgICAgICAgICBMTFQgVmVjVHkgPSBRdWVyeS5UeXBlc1tUeXBlSWR4XTsKLSAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoCi0gICAgICAgICAgICAgIFR5cGVJZHgsIExMVDo6dmVjdG9yKE1heEVsZW1lbnRzLCBWZWNUeS5nZXRTY2FsYXJTaXplSW5CaXRzKCkpKTsKKyAgICAgICAgICBMTFQgTmV3VHkgPSBMTFQ6OnNjYWxhck9yVmVjdG9yKE1heEVsZW1lbnRzLCBWZWNUeS5nZXRFbGVtZW50VHlwZSgpKTsKKyAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoVHlwZUlkeCwgTmV3VHkpOwogICAgICAgICB9KTsKICAgfQogICAvLy8gTGltaXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3IgdGhlIGdpdmVuIHZlY3RvcnMgdG8gYXQgbGVhc3QgTWluVHkncwpAQCAtOTQ3LDkgKzEwNDUsOSBAQAogCiAgIGJvb2wgaXNMZWdhbChjb25zdCBNYWNoaW5lSW5zdHIgJk1JLCBjb25zdCBNYWNoaW5lUmVnaXN0ZXJJbmZvICZNUkkpIGNvbnN0OwogCi0gIHZpcnR1YWwgYm9vbCBsZWdhbGl6ZUN1c3RvbShNYWNoaW5lSW5zdHIgJk1JLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjaGluZVJlZ2lzdGVySW5mbyAmTVJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjaGluZUlSQnVpbGRlciAmTUlSQnVpbGRlcikgY29uc3Q7CisgIHZpcnR1YWwgYm9vbCBsZWdhbGl6ZUN1c3RvbShNYWNoaW5lSW5zdHIgJk1JLCBNYWNoaW5lUmVnaXN0ZXJJbmZvICZNUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lSVJCdWlsZGVyICZNSVJCdWlsZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0lTZWxDaGFuZ2VPYnNlcnZlciAmT2JzZXJ2ZXIpIGNvbnN0OwogCiBwcml2YXRlOgogICAvLy8gRGV0ZXJtaW5lIHdoYXQgYWN0aW9uIHNob3VsZCBiZSB0YWtlbiB0byBsZWdhbGl6ZSB0aGUgZ2l2ZW4gZ2VuZXJpYwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTG9jYWxpemVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9Mb2NhbGl6ZXIuaAppbmRleCAxZTJkNDc2Li5jZmM3YzM1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9Mb2NhbGl6ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9Mb2NhbGl6ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0gbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTG9jYWxpemVyLmggLSBMb2NhbGl6ZXIgLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTUlQYXR0ZXJuTWF0Y2guaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL01JUGF0dGVybk1hdGNoLmgKaW5kZXggZjc3ZjlhOC4uMWY0ZWU4YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTUlQYXR0ZXJuTWF0Y2guaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9NSVBhdHRlcm5NYXRjaC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PSAtLS0tLSBsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9NSVBhdHRlcm5NYXRjaC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSA9PSAvLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL01hY2hpbmVJUkJ1aWxkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL01hY2hpbmVJUkJ1aWxkZXIuaAppbmRleCBhODM3Y2YwLi42ZTFmZjdjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9NYWNoaW5lSVJCdWlsZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvTWFjaGluZUlSQnVpbGRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9NYWNoaW5lSVJCdWlsZGVyLmggLSBNSUJ1aWxkZXIgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpAQCAtMTQsNiArMTMsNyBAQAogI2lmbmRlZiBMTFZNX0NPREVHRU5fR0xPQkFMSVNFTF9NQUNISU5FSVJCVUlMREVSX0gKICNkZWZpbmUgTExWTV9DT0RFR0VOX0dMT0JBTElTRUxfTUFDSElORUlSQlVJTERFUl9ICiAKKyNpbmNsdWRlICJsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9DU0VJbmZvLmgiCiAjaW5jbHVkZSAibGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvVHlwZXMuaCIKIAogI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9Mb3dMZXZlbFR5cGUuaCIKQEAgLTMwLDYgKzMwLDcgQEAKIGNsYXNzIE1hY2hpbmVGdW5jdGlvbjsKIGNsYXNzIE1hY2hpbmVJbnN0cjsKIGNsYXNzIFRhcmdldEluc3RySW5mbzsKK2NsYXNzIEdJU2VsQ2hhbmdlT2JzZXJ2ZXI7CiAKIC8vLyBDbGFzcyB3aGljaCBzdG9yZXMgYWxsIHRoZSBzdGF0ZSByZXF1aXJlZCBpbiBhIE1hY2hpbmVJUkJ1aWxkZXIuCiAvLy8gU2luY2UgTWFjaGluZUlSQnVpbGRlcnMgd2lsbCBvbmx5IHN0b3JlIHN0YXRlIGluIHRoaXMgb2JqZWN0LCBpdCBhbGxvd3MKQEAgLTUwLDU3ICs1MSwxNzUgQEAKICAgTWFjaGluZUJhc2ljQmxvY2s6Oml0ZXJhdG9yIElJOwogICAvLy8gQH0KIAotICBzdGQ6OmZ1bmN0aW9uPHZvaWQoTWFjaGluZUluc3RyICopPiBJbnNlcnRlZEluc3RyOworICBHSVNlbENoYW5nZU9ic2VydmVyICpPYnNlcnZlcjsKKworICBHSVNlbENTRUluZm8gKkNTRUluZm87CiB9OwogCitjbGFzcyBEc3RPcCB7CisgIHVuaW9uIHsKKyAgICBMTFQgTExUVHk7CisgICAgdW5zaWduZWQgUmVnOworICAgIGNvbnN0IFRhcmdldFJlZ2lzdGVyQ2xhc3MgKlJDOworICB9OworCitwdWJsaWM6CisgIGVudW0gY2xhc3MgRHN0VHlwZSB7IFR5X0xMVCwgVHlfUmVnLCBUeV9SQyB9OworICBEc3RPcCh1bnNpZ25lZCBSKSA6IFJlZyhSKSwgVHkoRHN0VHlwZTo6VHlfUmVnKSB7fQorICBEc3RPcChjb25zdCBNYWNoaW5lT3BlcmFuZCAmT3ApIDogUmVnKE9wLmdldFJlZygpKSwgVHkoRHN0VHlwZTo6VHlfUmVnKSB7fQorICBEc3RPcChjb25zdCBMTFQgJlQpIDogTExUVHkoVCksIFR5KERzdFR5cGU6OlR5X0xMVCkge30KKyAgRHN0T3AoY29uc3QgVGFyZ2V0UmVnaXN0ZXJDbGFzcyAqVFJDKSA6IFJDKFRSQyksIFR5KERzdFR5cGU6OlR5X1JDKSB7fQorCisgIHZvaWQgYWRkRGVmVG9NSUIoTWFjaGluZVJlZ2lzdGVySW5mbyAmTVJJLCBNYWNoaW5lSW5zdHJCdWlsZGVyICZNSUIpIGNvbnN0IHsKKyAgICBzd2l0Y2ggKFR5KSB7CisgICAgY2FzZSBEc3RUeXBlOjpUeV9SZWc6CisgICAgICBNSUIuYWRkRGVmKFJlZyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIERzdFR5cGU6OlR5X0xMVDoKKyAgICAgIE1JQi5hZGREZWYoTVJJLmNyZWF0ZUdlbmVyaWNWaXJ0dWFsUmVnaXN0ZXIoTExUVHkpKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRHN0VHlwZTo6VHlfUkM6CisgICAgICBNSUIuYWRkRGVmKE1SSS5jcmVhdGVWaXJ0dWFsUmVnaXN0ZXIoUkMpKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIExMVCBnZXRMTFRUeShjb25zdCBNYWNoaW5lUmVnaXN0ZXJJbmZvICZNUkkpIGNvbnN0IHsKKyAgICBzd2l0Y2ggKFR5KSB7CisgICAgY2FzZSBEc3RUeXBlOjpUeV9SQzoKKyAgICAgIHJldHVybiBMTFR7fTsKKyAgICBjYXNlIERzdFR5cGU6OlR5X0xMVDoKKyAgICAgIHJldHVybiBMTFRUeTsKKyAgICBjYXNlIERzdFR5cGU6OlR5X1JlZzoKKyAgICAgIHJldHVybiBNUkkuZ2V0VHlwZShSZWcpOworICAgIH0KKyAgICBsbHZtX3VucmVhY2hhYmxlKCJVbnJlY29nbmlzZWQgRHN0T3A6OkRzdFR5cGUgZW51bSIpOworICB9CisKKyAgdW5zaWduZWQgZ2V0UmVnKCkgY29uc3QgeworICAgIGFzc2VydChUeSA9PSBEc3RUeXBlOjpUeV9SZWcgJiYgIk5vdCBhIHJlZ2lzdGVyIik7CisgICAgcmV0dXJuIFJlZzsKKyAgfQorCisgIGNvbnN0IFRhcmdldFJlZ2lzdGVyQ2xhc3MgKmdldFJlZ0NsYXNzKCkgY29uc3QgeworICAgIHN3aXRjaCAoVHkpIHsKKyAgICBjYXNlIERzdFR5cGU6OlR5X1JDOgorICAgICAgcmV0dXJuIFJDOworICAgIGRlZmF1bHQ6CisgICAgICBsbHZtX3VucmVhY2hhYmxlKCJOb3QgYSBSQyBPcGVyYW5kIik7CisgICAgfQorICB9CisKKyAgRHN0VHlwZSBnZXREc3RPcEtpbmQoKSBjb25zdCB7IHJldHVybiBUeTsgfQorCitwcml2YXRlOgorICBEc3RUeXBlIFR5OworfTsKKworY2xhc3MgU3JjT3AgeworICB1bmlvbiB7CisgICAgTWFjaGluZUluc3RyQnVpbGRlciBTcmNNSUI7CisgICAgdW5zaWduZWQgUmVnOworICAgIENtcEluc3Q6OlByZWRpY2F0ZSBQcmVkOworICB9OworCitwdWJsaWM6CisgIGVudW0gY2xhc3MgU3JjVHlwZSB7IFR5X1JlZywgVHlfTUlCLCBUeV9QcmVkaWNhdGUgfTsKKyAgU3JjT3AodW5zaWduZWQgUikgOiBSZWcoUiksIFR5KFNyY1R5cGU6OlR5X1JlZykge30KKyAgU3JjT3AoY29uc3QgTWFjaGluZU9wZXJhbmQgJk9wKSA6IFJlZyhPcC5nZXRSZWcoKSksIFR5KFNyY1R5cGU6OlR5X1JlZykge30KKyAgU3JjT3AoY29uc3QgTWFjaGluZUluc3RyQnVpbGRlciAmTUlCKSA6IFNyY01JQihNSUIpLCBUeShTcmNUeXBlOjpUeV9NSUIpIHt9CisgIFNyY09wKGNvbnN0IENtcEluc3Q6OlByZWRpY2F0ZSBQKSA6IFByZWQoUCksIFR5KFNyY1R5cGU6OlR5X1ByZWRpY2F0ZSkge30KKworICB2b2lkIGFkZFNyY1RvTUlCKE1hY2hpbmVJbnN0ckJ1aWxkZXIgJk1JQikgY29uc3QgeworICAgIHN3aXRjaCAoVHkpIHsKKyAgICBjYXNlIFNyY1R5cGU6OlR5X1ByZWRpY2F0ZToKKyAgICAgIE1JQi5hZGRQcmVkaWNhdGUoUHJlZCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFNyY1R5cGU6OlR5X1JlZzoKKyAgICAgIE1JQi5hZGRVc2UoUmVnKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgU3JjVHlwZTo6VHlfTUlCOgorICAgICAgTUlCLmFkZFVzZShTcmNNSUItPmdldE9wZXJhbmQoMCkuZ2V0UmVnKCkpOworICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgTExUIGdldExMVFR5KGNvbnN0IE1hY2hpbmVSZWdpc3RlckluZm8gJk1SSSkgY29uc3QgeworICAgIHN3aXRjaCAoVHkpIHsKKyAgICBjYXNlIFNyY1R5cGU6OlR5X1ByZWRpY2F0ZToKKyAgICAgIGxsdm1fdW5yZWFjaGFibGUoIk5vdCBhIHJlZ2lzdGVyIG9wZXJhbmQiKTsKKyAgICBjYXNlIFNyY1R5cGU6OlR5X1JlZzoKKyAgICAgIHJldHVybiBNUkkuZ2V0VHlwZShSZWcpOworICAgIGNhc2UgU3JjVHlwZTo6VHlfTUlCOgorICAgICAgcmV0dXJuIE1SSS5nZXRUeXBlKFNyY01JQi0+Z2V0T3BlcmFuZCgwKS5nZXRSZWcoKSk7CisgICAgfQorICAgIGxsdm1fdW5yZWFjaGFibGUoIlVucmVjb2duaXNlZCBTcmNPcDo6U3JjVHlwZSBlbnVtIik7CisgIH0KKworICB1bnNpZ25lZCBnZXRSZWcoKSBjb25zdCB7CisgICAgc3dpdGNoIChUeSkgeworICAgIGNhc2UgU3JjVHlwZTo6VHlfUHJlZGljYXRlOgorICAgICAgbGx2bV91bnJlYWNoYWJsZSgiTm90IGEgcmVnaXN0ZXIgb3BlcmFuZCIpOworICAgIGNhc2UgU3JjVHlwZTo6VHlfUmVnOgorICAgICAgcmV0dXJuIFJlZzsKKyAgICBjYXNlIFNyY1R5cGU6OlR5X01JQjoKKyAgICAgIHJldHVybiBTcmNNSUItPmdldE9wZXJhbmQoMCkuZ2V0UmVnKCk7CisgICAgfQorICAgIGxsdm1fdW5yZWFjaGFibGUoIlVucmVjb2duaXNlZCBTcmNPcDo6U3JjVHlwZSBlbnVtIik7CisgIH0KKworICBDbXBJbnN0OjpQcmVkaWNhdGUgZ2V0UHJlZGljYXRlKCkgY29uc3QgeworICAgIHN3aXRjaCAoVHkpIHsKKyAgICBjYXNlIFNyY1R5cGU6OlR5X1ByZWRpY2F0ZToKKyAgICAgIHJldHVybiBQcmVkOworICAgIGRlZmF1bHQ6CisgICAgICBsbHZtX3VucmVhY2hhYmxlKCJOb3QgYSByZWdpc3RlciBvcGVyYW5kIik7CisgICAgfQorICB9CisKKyAgU3JjVHlwZSBnZXRTcmNPcEtpbmQoKSBjb25zdCB7IHJldHVybiBUeTsgfQorCitwcml2YXRlOgorICBTcmNUeXBlIFR5OworfTsKKworY2xhc3MgRmxhZ3NPcCB7CisgIE9wdGlvbmFsPHVuc2lnbmVkPiBGbGFnczsKKworcHVibGljOgorICBleHBsaWNpdCBGbGFnc09wKHVuc2lnbmVkIEYpIDogRmxhZ3MoRikge30KKyAgRmxhZ3NPcCgpIDogRmxhZ3MoTm9uZSkge30KKyAgT3B0aW9uYWw8dW5zaWduZWQ+IGdldEZsYWdzKCkgY29uc3QgeyByZXR1cm4gRmxhZ3M7IH0KK307CiAvLy8gSGVscGVyIGNsYXNzIHRvIGJ1aWxkIE1hY2hpbmVJbnN0ci4KIC8vLyBJdCBrZWVwcyBpbnRlcm5hbGx5IHRoZSBpbnNlcnRpb24gcG9pbnQgYW5kIGRlYnVnIGxvY2F0aW9uIGZvciBhbGwKIC8vLyB0aGUgbmV3IGluc3RydWN0aW9ucyB3ZSB3YW50IHRvIGNyZWF0ZS4KIC8vLyBUaGlzIGluZm9ybWF0aW9uIGNhbiBiZSBtb2RpZnkgdmlhIHRoZSByZWxhdGVkIHNldHRlcnMuCi1jbGFzcyBNYWNoaW5lSVJCdWlsZGVyQmFzZSB7CitjbGFzcyBNYWNoaW5lSVJCdWlsZGVyIHsKIAogICBNYWNoaW5lSVJCdWlsZGVyU3RhdGUgU3RhdGU7Ci0gIHZvaWQgdmFsaWRhdGVUcnVuY0V4dCh1bnNpZ25lZCBEc3QsIHVuc2lnbmVkIFNyYywgYm9vbCBJc0V4dGVuZCk7CiAKIHByb3RlY3RlZDoKLSAgdW5zaWduZWQgZ2V0RGVzdEZyb21BcmcodW5zaWduZWQgUmVnKSB7IHJldHVybiBSZWc7IH0KLSAgdW5zaWduZWQgZ2V0RGVzdEZyb21BcmcoTExUIFR5KSB7Ci0gICAgcmV0dXJuIGdldE1GKCkuZ2V0UmVnSW5mbygpLmNyZWF0ZUdlbmVyaWNWaXJ0dWFsUmVnaXN0ZXIoVHkpOwotICB9Ci0gIHVuc2lnbmVkIGdldERlc3RGcm9tQXJnKGNvbnN0IFRhcmdldFJlZ2lzdGVyQ2xhc3MgKlJDKSB7Ci0gICAgcmV0dXJuIGdldE1GKCkuZ2V0UmVnSW5mbygpLmNyZWF0ZVZpcnR1YWxSZWdpc3RlcihSQyk7Ci0gIH0KKyAgdm9pZCB2YWxpZGF0ZVRydW5jRXh0KGNvbnN0IExMVCAmRHN0LCBjb25zdCBMTFQgJlNyYywgYm9vbCBJc0V4dGVuZCk7CiAKLSAgdm9pZCBhZGRVc2VGcm9tQXJnKE1hY2hpbmVJbnN0ckJ1aWxkZXIgJk1JQiwgdW5zaWduZWQgUmVnKSB7Ci0gICAgTUlCLmFkZFVzZShSZWcpOwotICB9CisgIHZvaWQgdmFsaWRhdGVCaW5hcnlPcChjb25zdCBMTFQgJlJlcywgY29uc3QgTExUICZPcDAsIGNvbnN0IExMVCAmT3AxKTsKKyAgdm9pZCB2YWxpZGF0ZVNoaWZ0T3AoY29uc3QgTExUICZSZXMsIGNvbnN0IExMVCAmT3AwLCBjb25zdCBMTFQgJk9wMSk7CiAKLSAgdm9pZCBhZGRVc2VGcm9tQXJnKE1hY2hpbmVJbnN0ckJ1aWxkZXIgJk1JQiwgY29uc3QgTWFjaGluZUluc3RyQnVpbGRlciAmVXNlTUlCKSB7Ci0gICAgTUlCLmFkZFVzZShVc2VNSUItPmdldE9wZXJhbmQoMCkuZ2V0UmVnKCkpOwotICB9Ci0KLSAgdm9pZCBhZGRVc2VzRnJvbUFyZ3MoTWFjaGluZUluc3RyQnVpbGRlciAmTUlCKSB7IH0KLSAgdGVtcGxhdGU8dHlwZW5hbWUgVXNlQXJnVHksIHR5cGVuYW1lIC4uLiBVc2VBcmdzVHk+Ci0gIHZvaWQgYWRkVXNlc0Zyb21BcmdzKE1hY2hpbmVJbnN0ckJ1aWxkZXIgJk1JQiwgVXNlQXJnVHkgJiZBcmcxLCBVc2VBcmdzVHkgJiYuLi4gQXJncykgewotICAgIGFkZFVzZUZyb21BcmcoTUlCLCBBcmcxKTsKLSAgICBhZGRVc2VzRnJvbUFyZ3MoTUlCLCBzdGQ6OmZvcndhcmQ8VXNlQXJnc1R5PihBcmdzKS4uLik7Ci0gIH0KLSAgdW5zaWduZWQgZ2V0UmVnRnJvbUFyZyh1bnNpZ25lZCBSZWcpIHsgcmV0dXJuIFJlZzsgfQotICB1bnNpZ25lZCBnZXRSZWdGcm9tQXJnKGNvbnN0IE1hY2hpbmVJbnN0ckJ1aWxkZXIgJk1JQikgewotICAgIHJldHVybiBNSUItPmdldE9wZXJhbmQoMCkuZ2V0UmVnKCk7Ci0gIH0KLQotICB2b2lkIHZhbGlkYXRlQmluYXJ5T3AodW5zaWduZWQgUmVzLCB1bnNpZ25lZCBPcDAsIHVuc2lnbmVkIE9wMSk7CisgIHZvaWQgdmFsaWRhdGVTZWxlY3RPcChjb25zdCBMTFQgJlJlc1R5LCBjb25zdCBMTFQgJlRzdFR5LCBjb25zdCBMTFQgJk9wMFR5LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTExUICZPcDFUeSk7CisgIHZvaWQgcmVjb3JkSW5zZXJ0aW9uKE1hY2hpbmVJbnN0ciAqTUkpIGNvbnN0OwogCiBwdWJsaWM6CiAgIC8vLyBTb21lIGNvbnN0cnVjdG9ycyBmb3IgZWFzeSB1c2UuCi0gIE1hY2hpbmVJUkJ1aWxkZXJCYXNlKCkgPSBkZWZhdWx0OwotICBNYWNoaW5lSVJCdWlsZGVyQmFzZShNYWNoaW5lRnVuY3Rpb24gJk1GKSB7IHNldE1GKE1GKTsgfQotICBNYWNoaW5lSVJCdWlsZGVyQmFzZShNYWNoaW5lSW5zdHIgJk1JKSA6IE1hY2hpbmVJUkJ1aWxkZXJCYXNlKCpNSS5nZXRNRigpKSB7CisgIE1hY2hpbmVJUkJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisgIE1hY2hpbmVJUkJ1aWxkZXIoTWFjaGluZUZ1bmN0aW9uICZNRikgeyBzZXRNRihNRik7IH0KKyAgTWFjaGluZUlSQnVpbGRlcihNYWNoaW5lSW5zdHIgJk1JKSA6IE1hY2hpbmVJUkJ1aWxkZXIoKk1JLmdldE1GKCkpIHsKICAgICBzZXRJbnN0cihNSSk7CiAgIH0KIAotICBNYWNoaW5lSVJCdWlsZGVyQmFzZShjb25zdCBNYWNoaW5lSVJCdWlsZGVyU3RhdGUgJkJTdGF0ZSkgOiBTdGF0ZShCU3RhdGUpIHt9CisgIHZpcnR1YWwgfk1hY2hpbmVJUkJ1aWxkZXIoKSA9IGRlZmF1bHQ7CisKKyAgTWFjaGluZUlSQnVpbGRlcihjb25zdCBNYWNoaW5lSVJCdWlsZGVyU3RhdGUgJkJTdGF0ZSkgOiBTdGF0ZShCU3RhdGUpIHt9CiAKICAgY29uc3QgVGFyZ2V0SW5zdHJJbmZvICZnZXRUSUkoKSB7CiAgICAgYXNzZXJ0KFN0YXRlLlRJSSAmJiAiVGFyZ2V0SW5zdHJJbmZvIGlzIG5vdCBzZXQiKTsKQEAgLTExMywyMSArMjMyLDM1IEBACiAgICAgcmV0dXJuICpTdGF0ZS5NRjsKICAgfQogCisgIGNvbnN0IE1hY2hpbmVGdW5jdGlvbiAmZ2V0TUYoKSBjb25zdCB7CisgICAgYXNzZXJ0KFN0YXRlLk1GICYmICJNYWNoaW5lRnVuY3Rpb24gaXMgbm90IHNldCIpOworICAgIHJldHVybiAqU3RhdGUuTUY7CisgIH0KKwogICAvLy8gR2V0dGVyIGZvciBEZWJ1Z0xvYwogICBjb25zdCBEZWJ1Z0xvYyAmZ2V0REwoKSB7IHJldHVybiBTdGF0ZS5ETDsgfQogCiAgIC8vLyBHZXR0ZXIgZm9yIE1SSQogICBNYWNoaW5lUmVnaXN0ZXJJbmZvICpnZXRNUkkoKSB7IHJldHVybiBTdGF0ZS5NUkk7IH0KKyAgY29uc3QgTWFjaGluZVJlZ2lzdGVySW5mbyAqZ2V0TVJJKCkgY29uc3QgeyByZXR1cm4gU3RhdGUuTVJJOyB9CiAKICAgLy8vIEdldHRlciBmb3IgdGhlIFN0YXRlCiAgIE1hY2hpbmVJUkJ1aWxkZXJTdGF0ZSAmZ2V0U3RhdGUoKSB7IHJldHVybiBTdGF0ZTsgfQogCiAgIC8vLyBHZXR0ZXIgZm9yIHRoZSBiYXNpYyBibG9jayB3ZSBjdXJyZW50bHkgYnVpbGQuCi0gIE1hY2hpbmVCYXNpY0Jsb2NrICZnZXRNQkIoKSB7CisgIGNvbnN0IE1hY2hpbmVCYXNpY0Jsb2NrICZnZXRNQkIoKSBjb25zdCB7CiAgICAgYXNzZXJ0KFN0YXRlLk1CQiAmJiAiTWFjaGluZUJhc2ljQmxvY2sgaXMgbm90IHNldCIpOwogICAgIHJldHVybiAqU3RhdGUuTUJCOwogICB9CiAKKyAgTWFjaGluZUJhc2ljQmxvY2sgJmdldE1CQigpIHsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxNYWNoaW5lQmFzaWNCbG9jayAmPigKKyAgICAgICAgY29uc3RfY2FzdDxjb25zdCBNYWNoaW5lSVJCdWlsZGVyICo+KHRoaXMpLT5nZXRNQkIoKSk7CisgIH0KKworICBHSVNlbENTRUluZm8gKmdldENTRUluZm8oKSB7IHJldHVybiBTdGF0ZS5DU0VJbmZvOyB9CisgIGNvbnN0IEdJU2VsQ1NFSW5mbyAqZ2V0Q1NFSW5mbygpIGNvbnN0IHsgcmV0dXJuIFN0YXRlLkNTRUluZm87IH0KKwogICAvLy8gQ3VycmVudCBpbnNlcnRpb24gcG9pbnQgZm9yIG5ldyBpbnN0cnVjdGlvbnMuCiAgIE1hY2hpbmVCYXNpY0Jsb2NrOjppdGVyYXRvciBnZXRJbnNlcnRQdCgpIHsgcmV0dXJuIFN0YXRlLklJOyB9CiAKQEAgLTEzNywxMCArMjcwLDEyIEBACiAgIHZvaWQgc2V0SW5zZXJ0UHQoTWFjaGluZUJhc2ljQmxvY2sgJk1CQiwgTWFjaGluZUJhc2ljQmxvY2s6Oml0ZXJhdG9yIElJKTsKICAgLy8vIEB9CiAKKyAgdm9pZCBzZXRDU0VJbmZvKEdJU2VsQ1NFSW5mbyAqSW5mbyk7CisKICAgLy8vIFxuYW1lIFNldHRlcnMgZm9yIHRoZSBpbnNlcnRpb24gcG9pbnQuCiAgIC8vLyBAewogICAvLy8gU2V0IHRoZSBNYWNoaW5lRnVuY3Rpb24gd2hlcmUgdG8gYnVpbGQgaW5zdHJ1Y3Rpb25zLgotICB2b2lkIHNldE1GKE1hY2hpbmVGdW5jdGlvbiAmKTsKKyAgdm9pZCBzZXRNRihNYWNoaW5lRnVuY3Rpb24gJk1GKTsKIAogICAvLy8gU2V0IHRoZSBpbnNlcnRpb24gcG9pbnQgdG8gdGhlICBlbmQgb2YgXHAgTUJCLgogICAvLy8gXHByZSBccCBNQkIgbXVzdCBiZSBjb250YWluZWQgYnkgZ2V0TUYoKS4KQEAgLTE1MSwxMiArMjg2LDggQEAKICAgdm9pZCBzZXRJbnN0cihNYWNoaW5lSW5zdHIgJk1JKTsKICAgLy8vIEB9CiAKLSAgLy8vIFxuYW1lIENvbnRyb2wgd2hlcmUgaW5zdHJ1Y3Rpb25zIHdlIGNyZWF0ZSBhcmUgcmVjb3JkZWQgKHR5cGljYWxseSBmb3IKLSAgLy8vIHZpc2l0aW5nIGFnYWluIGxhdGVyIGR1cmluZyBsZWdhbGl6YXRpb24pLgotICAvLy8gQHsKLSAgdm9pZCByZWNvcmRJbnNlcnRpb24oTWFjaGluZUluc3RyICpJbnNlcnRlZEluc3RyKSBjb25zdDsKLSAgdm9pZCByZWNvcmRJbnNlcnRpb25zKHN0ZDo6ZnVuY3Rpb248dm9pZChNYWNoaW5lSW5zdHIgKik+IEluc2VydGVkSW5zdHIpOwotICB2b2lkIHN0b3BSZWNvcmRpbmdJbnNlcnRpb25zKCk7CisgIHZvaWQgc2V0Q2hhbmdlT2JzZXJ2ZXIoR0lTZWxDaGFuZ2VPYnNlcnZlciAmT2JzZXJ2ZXIpOworICB2b2lkIHN0b3BPYnNlcnZpbmdDaGFuZ2VzKCk7CiAgIC8vLyBAfQogCiAgIC8vLyBTZXQgdGhlIGRlYnVnIGxvY2F0aW9uIHRvIFxwIERMIGZvciBhbGwgdGhlIG5leHQgYnVpbGQgaW5zdHJ1Y3Rpb25zLgpAQCAtMzAwLDkgKzQzMSw5IEBACiAgIC8vLyAgICAgIHJlZ2lzdGVycyB3aXRoIHRoZSBzYW1lIHNjYWxhciB0eXBlICh0eXBpY2FsbHkgczEpCiAgIC8vLwogICAvLy8gXHJldHVybiBUaGUgbmV3bHkgY3JlYXRlZCBpbnN0cnVjdGlvbi4KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZFVBZGRlKHVuc2lnbmVkIFJlcywgdW5zaWduZWQgQ2FycnlPdXQsIHVuc2lnbmVkIE9wMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE9wMSwgdW5zaWduZWQgQ2FycnlJbik7Ci0KKyAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZFVBZGRlKGNvbnN0IERzdE9wICZSZXMsIGNvbnN0IERzdE9wICZDYXJyeU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNyY09wICZPcDAsIGNvbnN0IFNyY09wICZPcDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTcmNPcCAmQ2FycnlJbik7CiAKICAgLy8vIEJ1aWxkIGFuZCBpbnNlcnQgXHAgUmVzID0gR19BTllFWFQgXHAgT3AwCiAgIC8vLwpAQCAtMzE4LDExICs0NDksNyBAQAogICAvLy8KICAgLy8vIFxyZXR1cm4gVGhlIG5ld2x5IGNyZWF0ZWQgaW5zdHJ1Y3Rpb24uCiAKLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEFueUV4dCh1bnNpZ25lZCBSZXMsIHVuc2lnbmVkIE9wKTsKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIERzdFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGU+Ci0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRBbnlFeHQoRHN0VHlwZSAmJlJlcywgQXJnVHlwZSAmJkFyZykgewotICAgIHJldHVybiBidWlsZEFueUV4dChnZXREZXN0RnJvbUFyZyhSZXMpLCBnZXRSZWdGcm9tQXJnKEFyZykpOwotICB9CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRBbnlFeHQoY29uc3QgRHN0T3AgJlJlcywgY29uc3QgU3JjT3AgJk9wKTsKIAogICAvLy8gQnVpbGQgYW5kIGluc2VydCBccCBSZXMgPSBHX1NFWFQgXHAgT3AKICAgLy8vCkBAIC0zMzYsMTEgKzQ2MywxNiBAQAogICAvLy8gXHByZSBccCBPcCBtdXN0IGJlIHNtYWxsZXIgdGhhbiBccCBSZXMKICAgLy8vCiAgIC8vLyBccmV0dXJuIFRoZSBuZXdseSBjcmVhdGVkIGluc3RydWN0aW9uLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0VHlwZSwgdHlwZW5hbWUgQXJnVHlwZT4KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZFNFeHQoRHN0VHlwZSAmJlJlcywgQXJnVHlwZSAmJkFyZykgewotICAgIHJldHVybiBidWlsZFNFeHQoZ2V0RGVzdEZyb21BcmcoUmVzKSwgZ2V0UmVnRnJvbUFyZyhBcmcpKTsKLSAgfQotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkU0V4dCh1bnNpZ25lZCBSZXMsIHVuc2lnbmVkIE9wKTsKKyAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZFNFeHQoY29uc3QgRHN0T3AgJlJlcywgY29uc3QgU3JjT3AgJk9wKTsKKworICAvLy8gXHJldHVybiBUaGUgb3Bjb2RlIG9mIHRoZSBleHRlbnNpb24gdGhlIHRhcmdldCB3YW50cyB0byB1c2UgZm9yIGJvb2xlYW4KKyAgLy8vIHZhbHVlcy4KKyAgdW5zaWduZWQgZ2V0Qm9vbEV4dE9wKGJvb2wgSXNWZWMsIGJvb2wgSXNGUCkgY29uc3Q7CisKKyAgLy8gQnVpbGQgYW5kIGluc2VydCBccCBSZXMgPSBHX0FOWUVYVCBccCBPcCwgXHAgUmVzID0gR19TRVhUIFxwIE9wLCBvciBccCBSZXMKKyAgLy8gPSBHX1pFWFQgXHAgT3AgZGVwZW5kaW5nIG9uIGhvdyB0aGUgdGFyZ2V0IHdhbnRzIHRvIGV4dGVuZCBib29sZWFuIHZhbHVlcy4KKyAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEJvb2xFeHQoY29uc3QgRHN0T3AgJlJlcywgY29uc3QgU3JjT3AgJk9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIElzRlApOwogCiAgIC8vLyBCdWlsZCBhbmQgaW5zZXJ0IFxwIFJlcyA9IEdfWkVYVCBccCBPcAogICAvLy8KQEAgLTM1NCwxMSArNDg2LDcgQEAKICAgLy8vIFxwcmUgXHAgT3AgbXVzdCBiZSBzbWFsbGVyIHRoYW4gXHAgUmVzCiAgIC8vLwogICAvLy8gXHJldHVybiBUaGUgbmV3bHkgY3JlYXRlZCBpbnN0cnVjdGlvbi4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIERzdFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGU+Ci0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRaRXh0KERzdFR5cGUgJiZSZXMsIEFyZ1R5cGUgJiZBcmcpIHsKLSAgICByZXR1cm4gYnVpbGRaRXh0KGdldERlc3RGcm9tQXJnKFJlcyksIGdldFJlZ0Zyb21BcmcoQXJnKSk7Ci0gIH0KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZFpFeHQodW5zaWduZWQgUmVzLCB1bnNpZ25lZCBPcCk7CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRaRXh0KGNvbnN0IERzdE9wICZSZXMsIGNvbnN0IFNyY09wICZPcCk7CiAKICAgLy8vIEJ1aWxkIGFuZCBpbnNlcnQgXHAgUmVzID0gR19TRVhUIFxwIE9wLCBccCBSZXMgPSBHX1RSVU5DIFxwIE9wLCBvcgogICAvLy8gXHAgUmVzID0gQ09QWSBccCBPcCBkZXBlbmRpbmcgb24gdGhlIGRpZmZlcmluZyBzaXplcyBvZiBccCBSZXMgYW5kIFxwIE9wLgpAQCAtMzY4LDExICs0OTYsNyBAQAogICAvLy8gXHByZSBccCBPcCBtdXN0IGJlIGEgZ2VuZXJpYyB2aXJ0dWFsIHJlZ2lzdGVyIHdpdGggc2NhbGFyIG9yIHZlY3RvciB0eXBlLgogICAvLy8KICAgLy8vIFxyZXR1cm4gVGhlIG5ld2x5IGNyZWF0ZWQgaW5zdHJ1Y3Rpb24uCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBEc3RUeSwgdHlwZW5hbWUgVXNlQXJnVHk+Ci0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRTRXh0T3JUcnVuYyhEc3RUeSAmJkRzdCwgVXNlQXJnVHkgJiZVc2UpIHsKLSAgICByZXR1cm4gYnVpbGRTRXh0T3JUcnVuYyhnZXREZXN0RnJvbUFyZyhEc3QpLCBnZXRSZWdGcm9tQXJnKFVzZSkpOwotICB9Ci0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRTRXh0T3JUcnVuYyh1bnNpZ25lZCBSZXMsIHVuc2lnbmVkIE9wKTsKKyAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZFNFeHRPclRydW5jKGNvbnN0IERzdE9wICZSZXMsIGNvbnN0IFNyY09wICZPcCk7CiAKICAgLy8vIEJ1aWxkIGFuZCBpbnNlcnQgXHAgUmVzID0gR19aRVhUIFxwIE9wLCBccCBSZXMgPSBHX1RSVU5DIFxwIE9wLCBvcgogICAvLy8gXHAgUmVzID0gQ09QWSBccCBPcCBkZXBlbmRpbmcgb24gdGhlIGRpZmZlcmluZyBzaXplcyBvZiBccCBSZXMgYW5kIFxwIE9wLgpAQCAtMzgyLDExICs1MDYsNyBAQAogICAvLy8gXHByZSBccCBPcCBtdXN0IGJlIGEgZ2VuZXJpYyB2aXJ0dWFsIHJlZ2lzdGVyIHdpdGggc2NhbGFyIG9yIHZlY3RvciB0eXBlLgogICAvLy8KICAgLy8vIFxyZXR1cm4gVGhlIG5ld2x5IGNyZWF0ZWQgaW5zdHJ1Y3Rpb24uCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBEc3RUeSwgdHlwZW5hbWUgVXNlQXJnVHk+Ci0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRaRXh0T3JUcnVuYyhEc3RUeSAmJkRzdCwgVXNlQXJnVHkgJiZVc2UpIHsKLSAgICByZXR1cm4gYnVpbGRaRXh0T3JUcnVuYyhnZXREZXN0RnJvbUFyZyhEc3QpLCBnZXRSZWdGcm9tQXJnKFVzZSkpOwotICB9Ci0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRaRXh0T3JUcnVuYyh1bnNpZ25lZCBSZXMsIHVuc2lnbmVkIE9wKTsKKyAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZFpFeHRPclRydW5jKGNvbnN0IERzdE9wICZSZXMsIGNvbnN0IFNyY09wICZPcCk7CiAKICAgLy8gQnVpbGQgYW5kIGluc2VydCBccCBSZXMgPSBHX0FOWUVYVCBccCBPcCwgXHAgUmVzID0gR19UUlVOQyBccCBPcCwgb3IKICAgLy8vIFxwIFJlcyA9IENPUFkgXHAgT3AgZGVwZW5kaW5nIG9uIHRoZSBkaWZmZXJpbmcgc2l6ZXMgb2YgXHAgUmVzIGFuZCBccCBPcC4KQEAgLTM5NiwxMSArNTE2LDcgQEAKICAgLy8vIFxwcmUgXHAgT3AgbXVzdCBiZSBhIGdlbmVyaWMgdmlydHVhbCByZWdpc3RlciB3aXRoIHNjYWxhciBvciB2ZWN0b3IgdHlwZS4KICAgLy8vCiAgIC8vLyBccmV0dXJuIFRoZSBuZXdseSBjcmVhdGVkIGluc3RydWN0aW9uLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0VHksIHR5cGVuYW1lIFVzZUFyZ1R5PgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkQW55RXh0T3JUcnVuYyhEc3RUeSAmJkRzdCwgVXNlQXJnVHkgJiZVc2UpIHsKLSAgICByZXR1cm4gYnVpbGRBbnlFeHRPclRydW5jKGdldERlc3RGcm9tQXJnKERzdCksIGdldFJlZ0Zyb21BcmcoVXNlKSk7Ci0gIH0KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEFueUV4dE9yVHJ1bmModW5zaWduZWQgUmVzLCB1bnNpZ25lZCBPcCk7CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRBbnlFeHRPclRydW5jKGNvbnN0IERzdE9wICZSZXMsIGNvbnN0IFNyY09wICZPcCk7CiAKICAgLy8vIEJ1aWxkIGFuZCBpbnNlcnQgXHAgUmVzID0gXHAgRXh0T3BjLCBccCBSZXMgPSBHX1RSVU5DIFxwCiAgIC8vLyBPcCwgb3IgXHAgUmVzID0gQ09QWSBccCBPcCBkZXBlbmRpbmcgb24gdGhlIGRpZmZlcmluZyBzaXplcyBvZiBccCBSZXMgYW5kCkBAIC00MTEsMTUgKzUyNywxMSBAQAogICAvLy8gXHByZSBccCBPcCBtdXN0IGJlIGEgZ2VuZXJpYyB2aXJ0dWFsIHJlZ2lzdGVyIHdpdGggc2NhbGFyIG9yIHZlY3RvciB0eXBlLgogICAvLy8KICAgLy8vIFxyZXR1cm4gVGhlIG5ld2x5IGNyZWF0ZWQgaW5zdHJ1Y3Rpb24uCi0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRFeHRPclRydW5jKHVuc2lnbmVkIEV4dE9wYywgdW5zaWduZWQgUmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBPcCk7CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRFeHRPclRydW5jKHVuc2lnbmVkIEV4dE9wYywgY29uc3QgRHN0T3AgJlJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3JjT3AgJk9wKTsKIAogICAvLy8gQnVpbGQgYW5kIGluc2VydCBhbiBhcHByb3ByaWF0ZSBjYXN0IGJldHdlZW4gdHdvIHJlZ2lzdGVycyBvZiBlcXVhbCBzaXplLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0VHlwZSwgdHlwZW5hbWUgQXJnVHlwZT4KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZENhc3QoRHN0VHlwZSAmJlJlcywgQXJnVHlwZSAmJkFyZykgewotICAgIHJldHVybiBidWlsZENhc3QoZ2V0RGVzdEZyb21BcmcoUmVzKSwgZ2V0UmVnRnJvbUFyZyhBcmcpKTsKLSAgfQotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkQ2FzdCh1bnNpZ25lZCBEc3QsIHVuc2lnbmVkIFNyYyk7CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRDYXN0KGNvbnN0IERzdE9wICZEc3QsIGNvbnN0IFNyY09wICZTcmMpOwogCiAgIC8vLyBCdWlsZCBhbmQgaW5zZXJ0IEdfQlIgXHAgRGVzdAogICAvLy8KQEAgLTQ2NCw3ICs1NzYsOCBAQAogICAvLy8gICAgICB0eXBlLgogICAvLy8KICAgLy8vIFxyZXR1cm4gVGhlIG5ld2x5IGNyZWF0ZWQgaW5zdHJ1Y3Rpb24uCi0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRDb25zdGFudCh1bnNpZ25lZCBSZXMsIGNvbnN0IENvbnN0YW50SW50ICZWYWwpOworICB2aXJ0dWFsIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRDb25zdGFudChjb25zdCBEc3RPcCAmUmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb25zdGFudEludCAmVmFsKTsKIAogICAvLy8gQnVpbGQgYW5kIGluc2VydCBccCBSZXMgPSBHX0NPTlNUQU5UIFxwIFZhbAogICAvLy8KQEAgLTQ3NCwxMiArNTg3LDkgQEAKICAgLy8vIFxwcmUgXHAgUmVzIG11c3QgYmUgYSBnZW5lcmljIHZpcnR1YWwgcmVnaXN0ZXIgd2l0aCBzY2FsYXIgdHlwZS4KICAgLy8vCiAgIC8vLyBccmV0dXJuIFRoZSBuZXdseSBjcmVhdGVkIGluc3RydWN0aW9uLgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkQ29uc3RhbnQodW5zaWduZWQgUmVzLCBpbnQ2NF90IFZhbCk7CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRDb25zdGFudChjb25zdCBEc3RPcCAmUmVzLCBpbnQ2NF90IFZhbCk7CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRDb25zdGFudChjb25zdCBEc3RPcCAmUmVzLCBjb25zdCBBUEludCAmVmFsKTsKIAotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0VHlwZT4KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZENvbnN0YW50KERzdFR5cGUgJiZSZXMsIGludDY0X3QgVmFsKSB7Ci0gICAgcmV0dXJuIGJ1aWxkQ29uc3RhbnQoZ2V0RGVzdEZyb21BcmcoUmVzKSwgVmFsKTsKLSAgfQogICAvLy8gQnVpbGQgYW5kIGluc2VydCBccCBSZXMgPSBHX0ZDT05TVEFOVCBccCBWYWwKICAgLy8vCiAgIC8vLyBHX0ZDT05TVEFOVCBpcyBhIGZsb2F0aW5nLXBvaW50IGNvbnN0YW50IHdpdGggdGhlIHNwZWNpZmllZCBzaXplIGFuZApAQCAtNDg5LDE3ICs1OTksMTAgQEAKICAgLy8vIFxwcmUgXHAgUmVzIG11c3QgYmUgYSBnZW5lcmljIHZpcnR1YWwgcmVnaXN0ZXIgd2l0aCBzY2FsYXIgdHlwZS4KICAgLy8vCiAgIC8vLyBccmV0dXJuIFRoZSBuZXdseSBjcmVhdGVkIGluc3RydWN0aW9uLgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0VHlwZT4KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEZDb25zdGFudChEc3RUeXBlICYmUmVzLCBjb25zdCBDb25zdGFudEZQICZWYWwpIHsKLSAgICByZXR1cm4gYnVpbGRGQ29uc3RhbnQoZ2V0RGVzdEZyb21BcmcoUmVzKSwgVmFsKTsKLSAgfQotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkRkNvbnN0YW50KHVuc2lnbmVkIFJlcywgY29uc3QgQ29uc3RhbnRGUCAmVmFsKTsKKyAgdmlydHVhbCBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkRkNvbnN0YW50KGNvbnN0IERzdE9wICZSZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb25zdGFudEZQICZWYWwpOwogCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBEc3RUeXBlPgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkRkNvbnN0YW50KERzdFR5cGUgJiZSZXMsIGRvdWJsZSBWYWwpIHsKLSAgICByZXR1cm4gYnVpbGRGQ29uc3RhbnQoZ2V0RGVzdEZyb21BcmcoUmVzKSwgVmFsKTsKLSAgfQotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkRkNvbnN0YW50KHVuc2lnbmVkIFJlcywgZG91YmxlIFZhbCk7CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRGQ29uc3RhbnQoY29uc3QgRHN0T3AgJlJlcywgZG91YmxlIFZhbCk7CiAKICAgLy8vIEJ1aWxkIGFuZCBpbnNlcnQgXHAgUmVzID0gQ09QWSBPcAogICAvLy8KQEAgLTUwOCwxMSArNjExLDcgQEAKICAgLy8vIFxwcmUgc2V0QmFzaWNCbG9jayBvciBzZXRNSSBtdXN0IGhhdmUgYmVlbiBjYWxsZWQuCiAgIC8vLwogICAvLy8gXHJldHVybiBhIE1hY2hpbmVJbnN0ckJ1aWxkZXIgZm9yIHRoZSBuZXdseSBjcmVhdGVkIGluc3RydWN0aW9uLgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkQ29weSh1bnNpZ25lZCBSZXMsIHVuc2lnbmVkIE9wKTsKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIERzdFR5cGUsIHR5cGVuYW1lIFNyY1R5cGU+Ci0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRDb3B5KERzdFR5cGUgJiZSZXMsIFNyY1R5cGUgJiZTcmMpIHsKLSAgICByZXR1cm4gYnVpbGRDb3B5KGdldERlc3RGcm9tQXJnKFJlcyksIGdldFJlZ0Zyb21BcmcoU3JjKSk7Ci0gIH0KKyAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZENvcHkoY29uc3QgRHN0T3AgJlJlcywgY29uc3QgU3JjT3AgJk9wKTsKIAogICAvLy8gQnVpbGQgYW5kIGluc2VydCBgUmVzID0gR19MT0FEIEFkZHIsIE1NT2AuCiAgIC8vLwpAQCAtNTU5LDEwICs2NTgsNyBAQAogICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkRXh0cmFjdCh1bnNpZ25lZCBSZXMsIHVuc2lnbmVkIFNyYywgdWludDY0X3QgSW5kZXgpOwogCiAgIC8vLyBCdWlsZCBhbmQgaW5zZXJ0IFxwIFJlcyA9IElNUExJQ0lUX0RFRi4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIERzdFR5cGU+IE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRVbmRlZihEc3RUeXBlICYmUmVzKSB7Ci0gICAgcmV0dXJuIGJ1aWxkVW5kZWYoZ2V0RGVzdEZyb21BcmcoUmVzKSk7Ci0gIH0KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZFVuZGVmKHVuc2lnbmVkIFJlcyk7CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRVbmRlZihjb25zdCBEc3RPcCAmUmVzKTsKIAogICAvLy8gQnVpbGQgYW5kIGluc2VydCBpbnN0cnVjdGlvbnMgdG8gcHV0IFxwIE9wcyB0b2dldGhlciBhdCB0aGUgc3BlY2lmaWVkIHAKICAgLy8vIEluZGljZXMgdG8gZm9ybSBhIGxhcmdlciByZWdpc3Rlci4KQEAgLTU5MSw3ICs2ODcsNyBAQAogICAvLy8gXHByZSBUaGUgdHlwZSBvZiBhbGwgXHAgT3BzIHJlZ2lzdGVycyBtdXN0IGJlIGlkZW50aWNhbC4KICAgLy8vCiAgIC8vLyBccmV0dXJuIGEgTWFjaGluZUluc3RyQnVpbGRlciBmb3IgdGhlIG5ld2x5IGNyZWF0ZWQgaW5zdHJ1Y3Rpb24uCi0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRNZXJnZSh1bnNpZ25lZCBSZXMsIEFycmF5UmVmPHVuc2lnbmVkPiBPcHMpOworICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkTWVyZ2UoY29uc3QgRHN0T3AgJlJlcywgQXJyYXlSZWY8dW5zaWduZWQ+IE9wcyk7CiAKICAgLy8vIEJ1aWxkIGFuZCBpbnNlcnQgXHAgUmVzMCwgLi4uID0gR19VTk1FUkdFX1ZBTFVFUyBccCBPcAogICAvLy8KQEAgLTYwMyw3ICs2OTksNTUgQEAKICAgLy8vIFxwcmUgVGhlIHR5cGUgb2YgYWxsIFxwIFJlcyByZWdpc3RlcnMgbXVzdCBiZSBpZGVudGljYWwuCiAgIC8vLwogICAvLy8gXHJldHVybiBhIE1hY2hpbmVJbnN0ckJ1aWxkZXIgZm9yIHRoZSBuZXdseSBjcmVhdGVkIGluc3RydWN0aW9uLgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkVW5tZXJnZShBcnJheVJlZjx1bnNpZ25lZD4gUmVzLCB1bnNpZ25lZCBPcCk7CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRVbm1lcmdlKEFycmF5UmVmPExMVD4gUmVzLCBjb25zdCBTcmNPcCAmT3ApOworICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkVW5tZXJnZShBcnJheVJlZjx1bnNpZ25lZD4gUmVzLCBjb25zdCBTcmNPcCAmT3ApOworCisgIC8vLyBCdWlsZCBhbmQgaW5zZXJ0IFxwIFJlcyA9IEdfQlVJTERfVkVDVE9SIFxwIE9wMCwgLi4uCisgIC8vLworICAvLy8gR19CVUlMRF9WRUNUT1IgY3JlYXRlcyBhIHZlY3RvciB2YWx1ZSBmcm9tIG11bHRpcGxlIHNjYWxhciByZWdpc3RlcnMuCisgIC8vLyBccHJlIHNldEJhc2ljQmxvY2sgb3Igc2V0TUkgbXVzdCBoYXZlIGJlZW4gY2FsbGVkLgorICAvLy8gXHByZSBUaGUgZW50aXJlIHJlZ2lzdGVyIFxwIFJlcyAoYW5kIG5vIG1vcmUpIG11c3QgYmUgY292ZXJlZCBieSB0aGUKKyAgLy8vICAgICAgaW5wdXQgc2NhbGFyIHJlZ2lzdGVycy4KKyAgLy8vIFxwcmUgVGhlIHR5cGUgb2YgYWxsIFxwIE9wcyByZWdpc3RlcnMgbXVzdCBiZSBpZGVudGljYWwuCisgIC8vLworICAvLy8gXHJldHVybiBhIE1hY2hpbmVJbnN0ckJ1aWxkZXIgZm9yIHRoZSBuZXdseSBjcmVhdGVkIGluc3RydWN0aW9uLgorICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkQnVpbGRWZWN0b3IoY29uc3QgRHN0T3AgJlJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPHVuc2lnbmVkPiBPcHMpOworCisgIC8vLyBCdWlsZCBhbmQgaW5zZXJ0IFxwIFJlcyA9IEdfQlVJTERfVkVDVE9SIHdpdGggXHAgU3JjIHJlcGxpY2F0ZWQgdG8gZmlsbAorICAvLy8gdGhlIG51bWJlciBvZiBlbGVtZW50cworICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkU3BsYXRWZWN0b3IoY29uc3QgRHN0T3AgJlJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNyY09wICZTcmMpOworCisgIC8vLyBCdWlsZCBhbmQgaW5zZXJ0IFxwIFJlcyA9IEdfQlVJTERfVkVDVE9SX1RSVU5DIFxwIE9wMCwgLi4uCisgIC8vLworICAvLy8gR19CVUlMRF9WRUNUT1JfVFJVTkMgY3JlYXRlcyBhIHZlY3RvciB2YWx1ZSBmcm9tIG11bHRpcGxlIHNjYWxhciByZWdpc3RlcnMKKyAgLy8vIHdoaWNoIGhhdmUgdHlwZXMgbGFyZ2VyIHRoYW4gdGhlIGRlc3RpbmF0aW9uIHZlY3RvciBlbGVtZW50IHR5cGUsIGFuZAorICAvLy8gdHJ1bmNhdGVzIHRoZSB2YWx1ZXMgdG8gZml0LgorICAvLy8KKyAgLy8vIElmIHRoZSBvcGVyYW5kcyBnaXZlbiBhcmUgYWxyZWFkeSB0aGUgc2FtZSBzaXplIGFzIHRoZSB2ZWN0b3IgZWx0IHR5cGUsCisgIC8vLyB0aGVuIHRoaXMgbWV0aG9kIHdpbGwgaW5zdGVhZCBjcmVhdGUgYSBHX0JVSUxEX1ZFQ1RPUiBpbnN0cnVjdGlvbi4KKyAgLy8vCisgIC8vLyBccHJlIHNldEJhc2ljQmxvY2sgb3Igc2V0TUkgbXVzdCBoYXZlIGJlZW4gY2FsbGVkLgorICAvLy8gXHByZSBUaGUgdHlwZSBvZiBhbGwgXHAgT3BzIHJlZ2lzdGVycyBtdXN0IGJlIGlkZW50aWNhbC4KKyAgLy8vCisgIC8vLyBccmV0dXJuIGEgTWFjaGluZUluc3RyQnVpbGRlciBmb3IgdGhlIG5ld2x5IGNyZWF0ZWQgaW5zdHJ1Y3Rpb24uCisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRCdWlsZFZlY3RvclRydW5jKGNvbnN0IERzdE9wICZSZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPHVuc2lnbmVkPiBPcHMpOworCisgIC8vLyBCdWlsZCBhbmQgaW5zZXJ0IFxwIFJlcyA9IEdfQ09OQ0FUX1ZFQ1RPUlMgXHAgT3AwLCAuLi4KKyAgLy8vCisgIC8vLyBHX0NPTkNBVF9WRUNUT1JTIGNyZWF0ZXMgYSB2ZWN0b3IgZnJvbSB0aGUgY29uY2F0ZW5hdGlvbiBvZiAyIG9yIG1vcmUKKyAgLy8vIHZlY3RvcnMuCisgIC8vLworICAvLy8gXHByZSBzZXRCYXNpY0Jsb2NrIG9yIHNldE1JIG11c3QgaGF2ZSBiZWVuIGNhbGxlZC4KKyAgLy8vIFxwcmUgVGhlIGVudGlyZSByZWdpc3RlciBccCBSZXMgKGFuZCBubyBtb3JlKSBtdXN0IGJlIGNvdmVyZWQgYnkgdGhlIGlucHV0CisgIC8vLyAgICAgIHJlZ2lzdGVycy4KKyAgLy8vIFxwcmUgVGhlIHR5cGUgb2YgYWxsIHNvdXJjZSBvcGVyYW5kcyBtdXN0IGJlIGlkZW50aWNhbC4KKyAgLy8vCisgIC8vLyBccmV0dXJuIGEgTWFjaGluZUluc3RyQnVpbGRlciBmb3IgdGhlIG5ld2x5IGNyZWF0ZWQgaW5zdHJ1Y3Rpb24uCisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRDb25jYXRWZWN0b3JzKGNvbnN0IERzdE9wICZSZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPHVuc2lnbmVkPiBPcHMpOwogCiAgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRJbnNlcnQodW5zaWduZWQgUmVzLCB1bnNpZ25lZCBTcmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgT3AsIHVuc2lnbmVkIEluZGV4KTsKQEAgLTYzMSwxMSArNzc1LDcgQEAKICAgLy8vIFxwcmUgXHAgUmVzIG11c3QgYmUgc21hbGxlciB0aGFuIFxwIE9wCiAgIC8vLwogICAvLy8gXHJldHVybiBUaGUgbmV3bHkgY3JlYXRlZCBpbnN0cnVjdGlvbi4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIERzdFR5cGUsIHR5cGVuYW1lIFNyY1R5cGU+Ci0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRGUFRydW5jKERzdFR5cGUgJiZSZXMsIFNyY1R5cGUgJiZTcmMpIHsKLSAgICByZXR1cm4gYnVpbGRGUFRydW5jKGdldERlc3RGcm9tQXJnKFJlcyksIGdldFJlZ0Zyb21BcmcoU3JjKSk7Ci0gIH0KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEZQVHJ1bmModW5zaWduZWQgUmVzLCB1bnNpZ25lZCBPcCk7CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRGUFRydW5jKGNvbnN0IERzdE9wICZSZXMsIGNvbnN0IFNyY09wICZPcCk7CiAKICAgLy8vIEJ1aWxkIGFuZCBpbnNlcnQgXHAgUmVzID0gR19UUlVOQyBccCBPcAogICAvLy8KQEAgLTY0OCwxMSArNzg4LDcgQEAKICAgLy8vIFxwcmUgXHAgUmVzIG11c3QgYmUgc21hbGxlciB0aGFuIFxwIE9wCiAgIC8vLwogICAvLy8gXHJldHVybiBUaGUgbmV3bHkgY3JlYXRlZCBpbnN0cnVjdGlvbi4KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZFRydW5jKHVuc2lnbmVkIFJlcywgdW5zaWduZWQgT3ApOwotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0VHlwZSwgdHlwZW5hbWUgU3JjVHlwZT4KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZFRydW5jKERzdFR5cGUgJiZSZXMsIFNyY1R5cGUgJiZTcmMpIHsKLSAgICByZXR1cm4gYnVpbGRUcnVuYyhnZXREZXN0RnJvbUFyZyhSZXMpLCBnZXRSZWdGcm9tQXJnKFNyYykpOwotICB9CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRUcnVuYyhjb25zdCBEc3RPcCAmUmVzLCBjb25zdCBTcmNPcCAmT3ApOwogCiAgIC8vLyBCdWlsZCBhbmQgaW5zZXJ0IGEgXHAgUmVzID0gR19JQ01QIFxwIFByZWQsIFxwIE9wMCwgXHAgT3AxCiAgIC8vLwpAQCAtNjY2LDEzICs4MDIsOCBAQAogICAvLy8gXHByZSBccCBQcmVkIG11c3QgYmUgYW4gaW50ZWdlciBwcmVkaWNhdGUuCiAgIC8vLwogICAvLy8gXHJldHVybiBhIE1hY2hpbmVJbnN0ckJ1aWxkZXIgZm9yIHRoZSBuZXdseSBjcmVhdGVkIGluc3RydWN0aW9uLgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkSUNtcChDbXBJbnN0OjpQcmVkaWNhdGUgUHJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgUmVzLCB1bnNpZ25lZCBPcDAsIHVuc2lnbmVkIE9wMSk7Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBEc3RUeSwgdHlwZW5hbWUuLi4gVXNlQXJnc1R5PgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkSUNtcChDbXBJbnN0OjpQcmVkaWNhdGUgUHJlZCwgRHN0VHkgJiZEc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZUFyZ3NUeSAmJi4uLiBVc2VBcmdzKSB7Ci0gICAgcmV0dXJuIGJ1aWxkSUNtcChQcmVkLCBnZXREZXN0RnJvbUFyZyhEc3QpLCBnZXRSZWdGcm9tQXJnKFVzZUFyZ3MpLi4uKTsKLSAgfQorICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkSUNtcChDbXBJbnN0OjpQcmVkaWNhdGUgUHJlZCwgY29uc3QgRHN0T3AgJlJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3JjT3AgJk9wMCwgY29uc3QgU3JjT3AgJk9wMSk7CiAKICAgLy8vIEJ1aWxkIGFuZCBpbnNlcnQgYSBccCBSZXMgPSBHX0ZDTVAgXHAgUHJlZFxwIE9wMCwgXHAgT3AxCiAgIC8vLwpAQCAtNjg2LDggKzgxNyw4IEBACiAgIC8vLyBccHJlIFxwIFByZWQgbXVzdCBiZSBhIGZsb2F0aW5nLXBvaW50IHByZWRpY2F0ZS4KICAgLy8vCiAgIC8vLyBccmV0dXJuIGEgTWFjaGluZUluc3RyQnVpbGRlciBmb3IgdGhlIG5ld2x5IGNyZWF0ZWQgaW5zdHJ1Y3Rpb24uCi0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRGQ21wKENtcEluc3Q6OlByZWRpY2F0ZSBQcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBSZXMsIHVuc2lnbmVkIE9wMCwgdW5zaWduZWQgT3AxKTsKKyAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEZDbXAoQ21wSW5zdDo6UHJlZGljYXRlIFByZWQsIGNvbnN0IERzdE9wICZSZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNyY09wICZPcDAsIGNvbnN0IFNyY09wICZPcDEpOwogCiAgIC8vLyBCdWlsZCBhbmQgaW5zZXJ0IGEgXHAgUmVzID0gR19TRUxFQ1QgXHAgVHN0LCBccCBPcDAsIFxwIE9wMQogICAvLy8KQEAgLTY5OSwxMiArODMwLDggQEAKICAgLy8vICAgICAgZWxlbWVudHMgYXMgdGhlIG90aGVyIHBhcmFtZXRlcnMuCiAgIC8vLwogICAvLy8gXHJldHVybiBhIE1hY2hpbmVJbnN0ckJ1aWxkZXIgZm9yIHRoZSBuZXdseSBjcmVhdGVkIGluc3RydWN0aW9uLgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkU2VsZWN0KHVuc2lnbmVkIFJlcywgdW5zaWduZWQgVHN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE9wMCwgdW5zaWduZWQgT3AxKTsKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIERzdFR5LCB0eXBlbmFtZS4uLiBVc2VBcmdzVHk+Ci0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRTZWxlY3QoRHN0VHkgJiZEc3QsIFVzZUFyZ3NUeSAmJi4uLiBVc2VBcmdzKSB7Ci0gICAgcmV0dXJuIGJ1aWxkU2VsZWN0KGdldERlc3RGcm9tQXJnKERzdCksIGdldFJlZ0Zyb21BcmcoVXNlQXJncykuLi4pOwotICB9CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRTZWxlY3QoY29uc3QgRHN0T3AgJlJlcywgY29uc3QgU3JjT3AgJlRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTcmNPcCAmT3AwLCBjb25zdCBTcmNPcCAmT3AxKTsKIAogICAvLy8gQnVpbGQgYW5kIGluc2VydCBccCBSZXMgPSBHX0lOU0VSVF9WRUNUT1JfRUxUIFxwIFZhbCwKICAgLy8vIFxwIEVsdCwgXHAgSWR4CkBAIC03MTYsOCArODQzLDEwIEBACiAgIC8vLyAgICAgIHdpdGggc2NhbGFyIHR5cGUuCiAgIC8vLwogICAvLy8gXHJldHVybiBUaGUgbmV3bHkgY3JlYXRlZCBpbnN0cnVjdGlvbi4KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEluc2VydFZlY3RvckVsZW1lbnQodW5zaWduZWQgUmVzLCB1bnNpZ25lZCBWYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEVsdCwgdW5zaWduZWQgSWR4KTsKKyAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEluc2VydFZlY3RvckVsZW1lbnQoY29uc3QgRHN0T3AgJlJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3JjT3AgJlZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3JjT3AgJkVsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3JjT3AgJklkeCk7CiAKICAgLy8vIEJ1aWxkIGFuZCBpbnNlcnQgXHAgUmVzID0gR19FWFRSQUNUX1ZFQ1RPUl9FTFQgXHAgVmFsLCBccCBJZHgKICAgLy8vCkBAIC03MjcsOCArODU2LDkgQEAKICAgLy8vIFxwcmUgXHAgSWR4IG11c3QgYmUgYSBnZW5lcmljIHZpcnR1YWwgcmVnaXN0ZXIgd2l0aCBzY2FsYXIgdHlwZS4KICAgLy8vCiAgIC8vLyBccmV0dXJuIFRoZSBuZXdseSBjcmVhdGVkIGluc3RydWN0aW9uLgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkRXh0cmFjdFZlY3RvckVsZW1lbnQodW5zaWduZWQgUmVzLCB1bnNpZ25lZCBWYWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBJZHgpOworICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkRXh0cmFjdFZlY3RvckVsZW1lbnQoY29uc3QgRHN0T3AgJlJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNyY09wICZWYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTcmNPcCAmSWR4KTsKIAogICAvLy8gQnVpbGQgYW5kIGluc2VydCBgT2xkVmFsUmVzPGRlZj4sIFN1Y2Nlc3NSZXM8ZGVmPiA9CiAgIC8vLyBHX0FUT01JQ19DTVBYQ0hHX1dJVEhfU1VDQ0VTUyBBZGRyLCBDbXBWYWwsIE5ld1ZhbCwgTU1PYC4KQEAgLTk2NSwxOSArMTA5NSw3IEBACiAgIC8vLwogICAvLy8gXHJldHVybiBUaGUgbmV3bHkgY3JlYXRlZCBpbnN0cnVjdGlvbi4KICAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEJsb2NrQWRkcmVzcyh1bnNpZ25lZCBSZXMsIGNvbnN0IEJsb2NrQWRkcmVzcyAqQkEpOwotfTsKIAotLy8vIEEgQ1JUUCBjbGFzcyB0aGF0IGNvbnRhaW5zIG1ldGhvZHMgZm9yIGJ1aWxkaW5nIGluc3RydWN0aW9ucyB0aGF0IGNhbgotLy8vIGJlIGNvbnN0YW50IGZvbGRlZC4gTWFjaGluZUlSQnVpbGRlcnMgdGhhdCB3YW50IHRvIGluaGVyaXQgZnJvbSB0aGlzIHdpbGwKLS8vLyBuZWVkIHRvIGltcGxlbWVudCBidWlsZEJpbmFyeU9wIChmb3IgY29uc3RhbnQgZm9sZGluZyBiaW5hcnkgb3BzKS4KLS8vLyBBbHRlcm5hdGl2ZWx5LCB0aGV5IGNhbiBpbXBsZW1lbnQgYnVpbGRJbnN0cihPcGMsIERzdCwgVXNlcy4uLikgdG8gcGVyZm9ybQotLy8vIGFkZGl0aW9uYWwgZm9sZGluZyBmb3IgT3BjLgotdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2U+Ci1jbGFzcyBGb2xkYWJsZUluc3RydWN0aW9uc0J1aWxkZXIgOiBwdWJsaWMgTWFjaGluZUlSQnVpbGRlckJhc2UgewotICBCYXNlICZiYXNlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmFzZSAmPigqdGhpcyk7IH0KLQotcHVibGljOgotICB1c2luZyBNYWNoaW5lSVJCdWlsZGVyQmFzZTo6TWFjaGluZUlSQnVpbGRlckJhc2U7CiAgIC8vLyBCdWlsZCBhbmQgaW5zZXJ0IFxwIFJlcyA9IEdfQUREIFxwIE9wMCwgXHAgT3AxCiAgIC8vLwogICAvLy8gR19BREQgc2V0cyBccCBSZXMgdG8gdGhlIHN1bSBvZiBpbnRlZ2VyIHBhcmFtZXRlcnMgXHAgT3AwIGFuZCBccCBPcDEsCkBAIC05ODksMTMgKzExMDcsMTAgQEAKICAgLy8vCiAgIC8vLyBccmV0dXJuIGEgTWFjaGluZUluc3RyQnVpbGRlciBmb3IgdGhlIG5ld2x5IGNyZWF0ZWQgaW5zdHJ1Y3Rpb24uCiAKLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEFkZCh1bnNpZ25lZCBEc3QsIHVuc2lnbmVkIFNyYzAsIHVuc2lnbmVkIFNyYzEpIHsKLSAgICByZXR1cm4gYmFzZSgpLmJ1aWxkQmluYXJ5T3AoVGFyZ2V0T3Bjb2RlOjpHX0FERCwgRHN0LCBTcmMwLCBTcmMxKTsKLSAgfQotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRHN0VHksIHR5cGVuYW1lLi4uIFVzZUFyZ3NUeT4KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEFkZChEc3RUeSAmJlR5LCBVc2VBcmdzVHkgJiYuLi4gVXNlQXJncykgewotICAgIHVuc2lnbmVkIFJlcyA9IGJhc2UoKS5nZXREZXN0RnJvbUFyZyhUeSk7Ci0gICAgcmV0dXJuIGJhc2UoKS5idWlsZEFkZChSZXMsIChiYXNlKCkuZ2V0UmVnRnJvbUFyZyhVc2VBcmdzKSkuLi4pOworICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkQWRkKGNvbnN0IERzdE9wICZEc3QsIGNvbnN0IFNyY09wICZTcmMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNyY09wICZTcmMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBGbGFncyA9IE5vbmUpIHsKKyAgICByZXR1cm4gYnVpbGRJbnN0cihUYXJnZXRPcGNvZGU6OkdfQURELCB7RHN0fSwge1NyYzAsIFNyYzF9LCBGbGFncyk7CiAgIH0KIAogICAvLy8gQnVpbGQgYW5kIGluc2VydCBccCBSZXMgPSBHX1NVQiBccCBPcDAsIFxwIE9wMQpAQCAtMTAwOSwxMyArMTEyNCwxMCBAQAogICAvLy8KICAgLy8vIFxyZXR1cm4gYSBNYWNoaW5lSW5zdHJCdWlsZGVyIGZvciB0aGUgbmV3bHkgY3JlYXRlZCBpbnN0cnVjdGlvbi4KIAotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkU3ViKHVuc2lnbmVkIERzdCwgdW5zaWduZWQgU3JjMCwgdW5zaWduZWQgU3JjMSkgewotICAgIHJldHVybiBiYXNlKCkuYnVpbGRCaW5hcnlPcChUYXJnZXRPcGNvZGU6OkdfU1VCLCBEc3QsIFNyYzAsIFNyYzEpOwotICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBEc3RUeSwgdHlwZW5hbWUuLi4gVXNlQXJnc1R5PgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkU3ViKERzdFR5ICYmVHksIFVzZUFyZ3NUeSAmJi4uLiBVc2VBcmdzKSB7Ci0gICAgdW5zaWduZWQgUmVzID0gYmFzZSgpLmdldERlc3RGcm9tQXJnKFR5KTsKLSAgICByZXR1cm4gYmFzZSgpLmJ1aWxkU3ViKFJlcywgKGJhc2UoKS5nZXRSZWdGcm9tQXJnKFVzZUFyZ3MpKS4uLik7CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRTdWIoY29uc3QgRHN0T3AgJkRzdCwgY29uc3QgU3JjT3AgJlNyYzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3JjT3AgJlNyYzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IEZsYWdzID0gTm9uZSkgeworICAgIHJldHVybiBidWlsZEluc3RyKFRhcmdldE9wY29kZTo6R19TVUIsIHtEc3R9LCB7U3JjMCwgU3JjMX0sIEZsYWdzKTsKICAgfQogCiAgIC8vLyBCdWlsZCBhbmQgaW5zZXJ0IFxwIFJlcyA9IEdfTVVMIFxwIE9wMCwgXHAgT3AxCkBAIC0xMDI4LDEzICsxMTQwLDQwIEBACiAgIC8vLyAgICAgIHdpdGggdGhlIHNhbWUgKHNjYWxhciBvciB2ZWN0b3IpIHR5cGUpLgogICAvLy8KICAgLy8vIFxyZXR1cm4gYSBNYWNoaW5lSW5zdHJCdWlsZGVyIGZvciB0aGUgbmV3bHkgY3JlYXRlZCBpbnN0cnVjdGlvbi4KLSAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZE11bCh1bnNpZ25lZCBEc3QsIHVuc2lnbmVkIFNyYzAsIHVuc2lnbmVkIFNyYzEpIHsKLSAgICByZXR1cm4gYmFzZSgpLmJ1aWxkQmluYXJ5T3AoVGFyZ2V0T3Bjb2RlOjpHX01VTCwgRHN0LCBTcmMwLCBTcmMxKTsKKyAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZE11bChjb25zdCBEc3RPcCAmRHN0LCBjb25zdCBTcmNPcCAmU3JjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTcmNPcCAmU3JjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gRmxhZ3MgPSBOb25lKSB7CisgICAgcmV0dXJuIGJ1aWxkSW5zdHIoVGFyZ2V0T3Bjb2RlOjpHX01VTCwge0RzdH0sIHtTcmMwLCBTcmMxfSwgRmxhZ3MpOwogICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBEc3RUeSwgdHlwZW5hbWUuLi4gVXNlQXJnc1R5PgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkTXVsKERzdFR5ICYmVHksIFVzZUFyZ3NUeSAmJi4uLiBVc2VBcmdzKSB7Ci0gICAgdW5zaWduZWQgUmVzID0gYmFzZSgpLmdldERlc3RGcm9tQXJnKFR5KTsKLSAgICByZXR1cm4gYmFzZSgpLmJ1aWxkTXVsKFJlcywgKGJhc2UoKS5nZXRSZWdGcm9tQXJnKFVzZUFyZ3MpKS4uLik7CisKKyAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZFVNdWxIKGNvbnN0IERzdE9wICZEc3QsIGNvbnN0IFNyY09wICZTcmMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3JjT3AgJlNyYzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbDx1bnNpZ25lZD4gRmxhZ3MgPSBOb25lKSB7CisgICAgcmV0dXJuIGJ1aWxkSW5zdHIoVGFyZ2V0T3Bjb2RlOjpHX1VNVUxILCB7RHN0fSwge1NyYzAsIFNyYzF9LCBGbGFncyk7CisgIH0KKworICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkU011bEgoY29uc3QgRHN0T3AgJkRzdCwgY29uc3QgU3JjT3AgJlNyYzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTcmNPcCAmU3JjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBGbGFncyA9IE5vbmUpIHsKKyAgICByZXR1cm4gYnVpbGRJbnN0cihUYXJnZXRPcGNvZGU6OkdfU01VTEgsIHtEc3R9LCB7U3JjMCwgU3JjMX0sIEZsYWdzKTsKKyAgfQorCisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRTaGwoY29uc3QgRHN0T3AgJkRzdCwgY29uc3QgU3JjT3AgJlNyYzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3JjT3AgJlNyYzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IEZsYWdzID0gTm9uZSkgeworICAgIHJldHVybiBidWlsZEluc3RyKFRhcmdldE9wY29kZTo6R19TSEwsIHtEc3R9LCB7U3JjMCwgU3JjMX0sIEZsYWdzKTsKKyAgfQorCisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRMU2hyKGNvbnN0IERzdE9wICZEc3QsIGNvbnN0IFNyY09wICZTcmMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTcmNPcCAmU3JjMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IEZsYWdzID0gTm9uZSkgeworICAgIHJldHVybiBidWlsZEluc3RyKFRhcmdldE9wY29kZTo6R19MU0hSLCB7RHN0fSwge1NyYzAsIFNyYzF9LCBGbGFncyk7CisgIH0KKworICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkQVNocihjb25zdCBEc3RPcCAmRHN0LCBjb25zdCBTcmNPcCAmU3JjMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3JjT3AgJlNyYzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBGbGFncyA9IE5vbmUpIHsKKyAgICByZXR1cm4gYnVpbGRJbnN0cihUYXJnZXRPcGNvZGU6OkdfQVNIUiwge0RzdH0sIHtTcmMwLCBTcmMxfSwgRmxhZ3MpOwogICB9CiAKICAgLy8vIEJ1aWxkIGFuZCBpbnNlcnQgXHAgUmVzID0gR19BTkQgXHAgT3AwLCBccCBPcDEKQEAgLTEwNDgsMTMgKzExODcsOSBAQAogICAvLy8KICAgLy8vIFxyZXR1cm4gYSBNYWNoaW5lSW5zdHJCdWlsZGVyIGZvciB0aGUgbmV3bHkgY3JlYXRlZCBpbnN0cnVjdGlvbi4KIAotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkQW5kKHVuc2lnbmVkIERzdCwgdW5zaWduZWQgU3JjMCwgdW5zaWduZWQgU3JjMSkgewotICAgIHJldHVybiBiYXNlKCkuYnVpbGRCaW5hcnlPcChUYXJnZXRPcGNvZGU6OkdfQU5ELCBEc3QsIFNyYzAsIFNyYzEpOwotICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBEc3RUeSwgdHlwZW5hbWUuLi4gVXNlQXJnc1R5PgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkQW5kKERzdFR5ICYmVHksIFVzZUFyZ3NUeSAmJi4uLiBVc2VBcmdzKSB7Ci0gICAgdW5zaWduZWQgUmVzID0gYmFzZSgpLmdldERlc3RGcm9tQXJnKFR5KTsKLSAgICByZXR1cm4gYmFzZSgpLmJ1aWxkQW5kKFJlcywgKGJhc2UoKS5nZXRSZWdGcm9tQXJnKFVzZUFyZ3MpKS4uLik7CisgIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRBbmQoY29uc3QgRHN0T3AgJkRzdCwgY29uc3QgU3JjT3AgJlNyYzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3JjT3AgJlNyYzEpIHsKKyAgICByZXR1cm4gYnVpbGRJbnN0cihUYXJnZXRPcGNvZGU6OkdfQU5ELCB7RHN0fSwge1NyYzAsIFNyYzF9KTsKICAgfQogCiAgIC8vLyBCdWlsZCBhbmQgaW5zZXJ0IFxwIFJlcyA9IEdfT1IgXHAgT3AwLCBccCBPcDEKQEAgLTEwNjcsMzkgKzEyMDIsMTQgQEAKICAgLy8vICAgICAgd2l0aCB0aGUgc2FtZSAoc2NhbGFyIG9yIHZlY3RvcikgdHlwZSkuCiAgIC8vLwogICAvLy8gXHJldHVybiBhIE1hY2hpbmVJbnN0ckJ1aWxkZXIgZm9yIHRoZSBuZXdseSBjcmVhdGVkIGluc3RydWN0aW9uLgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkT3IodW5zaWduZWQgRHN0LCB1bnNpZ25lZCBTcmMwLCB1bnNpZ25lZCBTcmMxKSB7Ci0gICAgcmV0dXJuIGJhc2UoKS5idWlsZEJpbmFyeU9wKFRhcmdldE9wY29kZTo6R19PUiwgRHN0LCBTcmMwLCBTcmMxKTsKKyAgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZE9yKGNvbnN0IERzdE9wICZEc3QsIGNvbnN0IFNyY09wICZTcmMwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3JjT3AgJlNyYzEpIHsKKyAgICByZXR1cm4gYnVpbGRJbnN0cihUYXJnZXRPcGNvZGU6OkdfT1IsIHtEc3R9LCB7U3JjMCwgU3JjMX0pOwogICB9Ci0gIHRlbXBsYXRlIDx0eXBlbmFtZSBEc3RUeSwgdHlwZW5hbWUuLi4gVXNlQXJnc1R5PgotICBNYWNoaW5lSW5zdHJCdWlsZGVyIGJ1aWxkT3IoRHN0VHkgJiZUeSwgVXNlQXJnc1R5ICYmLi4uIFVzZUFyZ3MpIHsKLSAgICB1bnNpZ25lZCBSZXMgPSBiYXNlKCkuZ2V0RGVzdEZyb21BcmcoVHkpOwotICAgIHJldHVybiBiYXNlKCkuYnVpbGRPcihSZXMsIChiYXNlKCkuZ2V0UmVnRnJvbUFyZyhVc2VBcmdzKSkuLi4pOwotICB9Ci19OwogCi1jbGFzcyBNYWNoaW5lSVJCdWlsZGVyIDogcHVibGljIEZvbGRhYmxlSW5zdHJ1Y3Rpb25zQnVpbGRlcjxNYWNoaW5lSVJCdWlsZGVyPiB7Ci1wdWJsaWM6Ci0gIHVzaW5nIEZvbGRhYmxlSW5zdHJ1Y3Rpb25zQnVpbGRlcjwKLSAgICAgIE1hY2hpbmVJUkJ1aWxkZXI+OjpGb2xkYWJsZUluc3RydWN0aW9uc0J1aWxkZXI7Ci0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRCaW5hcnlPcCh1bnNpZ25lZCBPcGNvZGUsIHVuc2lnbmVkIERzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFNyYzAsIHVuc2lnbmVkIFNyYzEpIHsKLSAgICB2YWxpZGF0ZUJpbmFyeU9wKERzdCwgU3JjMCwgU3JjMSk7Ci0gICAgcmV0dXJuIGJ1aWxkSW5zdHIoT3Bjb2RlKS5hZGREZWYoRHN0KS5hZGRVc2UoU3JjMCkuYWRkVXNlKFNyYzEpOwotICB9Ci0gIHVzaW5nIEZvbGRhYmxlSW5zdHJ1Y3Rpb25zQnVpbGRlcjxNYWNoaW5lSVJCdWlsZGVyPjo6YnVpbGRJbnN0cjsKLSAgLy8vIERBRyBsaWtlIEdlbmVyaWMgbWV0aG9kIGZvciBidWlsZGluZyBhcmJpdHJhcnkgaW5zdHJ1Y3Rpb25zIGFzIGFib3ZlLgotICAvLy8gXE9wYyBvcGNvZGUgZm9yIHRoZSBpbnN0cnVjdGlvbi4KLSAgLy8vIFxUeSBFaXRoZXIgTExUL1RhcmdldFJlZ2lzdGVyQ2xhc3MvdW5zaWduZWQgdHlwZXMgZm9yIERzdAotICAvLy8gXEFyZ3MgVmFyaWFkaWMgbGlzdCBvZiB1c2VzIG9mIHR5cGVzKHVuc2lnbmVkL01hY2hpbmVJbnN0ckJ1aWxkZXIpCi0gIC8vLyBVc2VzIG9mIHR5cGUgTWFjaGluZUluc3RyQnVpbGRlciB3aWxsIHBlcmZvcm0KLSAgLy8vIGdldE9wZXJhbmQoMCkuZ2V0UmVnKCkgdG8gY29udmVydCB0byByZWdpc3Rlci4KLSAgdGVtcGxhdGUgPHR5cGVuYW1lIERzdFR5LCB0eXBlbmFtZS4uLiBVc2VBcmdzVHk+Ci0gIE1hY2hpbmVJbnN0ckJ1aWxkZXIgYnVpbGRJbnN0cih1bnNpZ25lZCBPcGMsIERzdFR5ICYmVHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VBcmdzVHkgJiYuLi4gQXJncykgewotICAgIGF1dG8gTUlCID0gYnVpbGRJbnN0cihPcGMpLmFkZERlZihnZXREZXN0RnJvbUFyZyhUeSkpOwotICAgIGFkZFVzZXNGcm9tQXJncyhNSUIsIHN0ZDo6Zm9yd2FyZDxVc2VBcmdzVHk+KEFyZ3MpLi4uKTsKLSAgICByZXR1cm4gTUlCOwotICB9CisgIHZpcnR1YWwgTWFjaGluZUluc3RyQnVpbGRlciBidWlsZEluc3RyKHVuc2lnbmVkIE9wYywgQXJyYXlSZWY8RHN0T3A+IERzdE9wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8U3JjT3A+IFNyY09wcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IEZsYWdzID0gTm9uZSk7CiB9OwogCiB9IC8vIEVuZCBuYW1lc3BhY2UgbGx2bS4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL1JlZ0JhbmtTZWxlY3QuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL1JlZ0JhbmtTZWxlY3QuaAppbmRleCBjNTNhZTQxLi5jMzFjYTVjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9SZWdCYW5rU2VsZWN0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvUmVnQmFua1NlbGVjdC5oCkBAIC0xLDkgKzEsOCBAQAogLy89LSBsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9SZWdCYW5rU2VsZWN0LmggLSBSZWcgQmFuayBTZWxlY3RvciAtLSotIEMrKyAtKi09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9SZWdpc3RlckJhbmsuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL1JlZ2lzdGVyQmFuay5oCmluZGV4IGQ1NjEyZTEuLmY1MjhkMWEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL1JlZ2lzdGVyQmFuay5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL1JlZ2lzdGVyQmFuay5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0tIGxsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL1JlZ2lzdGVyQmFuay5oIC0gUmVnaXN0ZXIgQmFuayAtLS0tKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9SZWdpc3RlckJhbmtJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9SZWdpc3RlckJhbmtJbmZvLmgKaW5kZXggODJmZDdlZC4uMzdhNjNkMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvUmVnaXN0ZXJCYW5rSW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL1JlZ2lzdGVyQmFua0luZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9SZWdpc3RlckJhbmtJbmZvLmggLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTAzLDggKzEwMiw4IEBACiAgIC8vLyBDdXJyZW50bHkgdGhlIFRhYmxlR2VuLWxpa2UgZmlsZSB3b3VsZCBsb29rIGxpa2U6CiAgIC8vLyBcY29kZQogICAvLy8gUGFydGlhbE1hcHBpbmdbXSA9IHsKLSAgLy8vIC8qMzItYml0IGFkZCovIHswLCAzMiwgR1BSfSwKLSAgLy8vIC8qMngzMi1iaXQgYWRkKi8gezAsIDMyLCBHUFJ9LCB7MCwgMzIsIEdQUn0sIC8vIDwtLSBTYW1lIGVudHJ5IDN4CisgIC8vLyAvKjMyLWJpdCBhZGQqLyAgICB7MCwgMzIsIEdQUn0sIC8vIFNjYWxhciBlbnRyeSByZXBlYXRlZCBmb3IgZmlyc3QgdmVjIGVsdC4KKyAgLy8vIC8qMngzMi1iaXQgYWRkKi8gIHswLCAzMiwgR1BSfSwgezMyLCAzMiwgR1BSfSwKICAgLy8vIC8qPDJ4MzItYml0PiB2YWRkIHswLCA2NCwgVlBSfQogICAvLy8gfTsgLy8gUGFydGlhbE1hcHBpbmcgZHVwbGljYXRlZC4KICAgLy8vCkBAIC0xMTgsMTQgKzExNywxNSBAQAogICAvLy8gV2l0aCB0aGUgYXJyYXkgb2YgcG9pbnRlciwgd2Ugd291bGQgaGF2ZToKICAgLy8vIFxjb2RlCiAgIC8vLyBQYXJ0aWFsTWFwcGluZ1tdID0gewotICAvLy8gLyozMi1iaXQgYWRkKi8gezAsIDMyLCBHUFJ9LAorICAvLy8gLyozMi1iaXQgYWRkIGxvd2VyICovIHswLCAzMiwgR1BSfSwKKyAgLy8vIC8qMzItYml0IGFkZCB1cHBlciAqLyB7MzIsIDMyLCBHUFJ9LAogICAvLy8gLyo8MngzMi1iaXQ+IHZhZGQgezAsIDY0LCBWUFJ9CiAgIC8vLyB9OyAvLyBObyBtb3JlIGR1cGxpY2F0aW9uLgogICAvLy8KICAgLy8vIEJyZWFrRG93bnNbXSA9IHsKICAgLy8vIC8qQWRkQnJlYWtEb3duKi8gJlBhcnRpYWxNYXBwaW5nWzBdLAotICAvLy8gLyoyeEFkZEJyZWFrRG93biovICZQYXJ0aWFsTWFwcGluZ1swXSwgJlBhcnRpYWxNYXBwaW5nWzBdLAotICAvLy8gLypWQWRkQnJlYWtEb3duKi8gJlBhcnRpYWxNYXBwaW5nWzFdCisgIC8vLyAvKjJ4QWRkQnJlYWtEb3duKi8gJlBhcnRpYWxNYXBwaW5nWzBdLCAmUGFydGlhbE1hcHBpbmdbMV0sCisgIC8vLyAvKlZBZGRCcmVha0Rvd24qLyAmUGFydGlhbE1hcHBpbmdbMl0KICAgLy8vIH07IC8vIEFkZHJlc3NlcyBvZiBQYXJ0aWFsTWFwcGluZyBkdXBsaWNhdGVkIChzbWFsbGVyKS4KICAgLy8vCiAgIC8vLyBWYWx1ZU1hcHBpbmdbXSB7CkBAIC0xNjAsNiArMTYwLDEwIEBACiAgICAgY29uc3QgUGFydGlhbE1hcHBpbmcgKmJlZ2luKCkgY29uc3QgeyByZXR1cm4gQnJlYWtEb3duOyB9CiAgICAgY29uc3QgUGFydGlhbE1hcHBpbmcgKmVuZCgpIGNvbnN0IHsgcmV0dXJuIEJyZWFrRG93biArIE51bUJyZWFrRG93bnM7IH0KIAorICAgIC8vLyBccmV0dXJuIHRydWUgaWYgYWxsIHBhcnRpYWwgbWFwcGluZ3MgYXJlIHRoZSBzYW1lIHNpemUgYW5kIHJlZ2lzdGVyCisgICAgLy8vIGJhbmsuCisgICAgYm9vbCBwYXJ0c0FsbFVuaWZvcm0oKSBjb25zdDsKKwogICAgIC8vLyBDaGVjayBpZiB0aGlzIFZhbHVlTWFwcGluZyBpcyB2YWxpZC4KICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBCcmVha0Rvd24gJiYgTnVtQnJlYWtEb3duczsgfQogCkBAIC02MTcsNiArNjIxLDE1IEBACiAgICAgcmV0dXJuICZBICE9ICZCOwogICB9CiAKKyAgLy8vIEdldCB0aGUgY29zdCBvZiB1c2luZyBccCBWYWxNYXBwaW5nIHRvIGRlY29tcG9zZSBhIHJlZ2lzdGVyLiBUaGlzIGlzCisgIC8vLyBzaW1pbGFyIHRvIDo6Y29weUNvc3QsIGV4Y2VwdCBmb3IgY2FzZXMgd2hlcmUgbXVsdGlwbGUgY29weS1saWtlCisgIC8vLyBvcGVyYXRpb25zIG5lZWQgdG8gYmUgaW5zZXJ0ZWQuIElmIHRoZSByZWdpc3RlciBpcyB1c2VkIGFzIGEgc291cmNlCisgIC8vLyBvcGVyYW5kIGFuZCBhbHJlYWR5IGhhcyBhIGJhbmsgYXNzaWduZWQsIFxwIEN1ckJhbmsgaXMgbm9uLW51bGwuCisgIHZpcnR1YWwgdW5zaWduZWQgZ2V0QnJlYWtEb3duQ29zdChjb25zdCBWYWx1ZU1hcHBpbmcgJlZhbE1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWdpc3RlckJhbmsgKkN1ckJhbmsgPSBudWxscHRyKSBjb25zdCB7CisgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKTsKKyAgfQorCiAgIC8vLyBDb25zdHJhaW4gdGhlIChwb3NzaWJseSBnZW5lcmljKSB2aXJ0dWFsIHJlZ2lzdGVyIFxwIFJlZyB0byBccCBSQy4KICAgLy8vCiAgIC8vLyBccHJlIFxwIFJlZyBpcyBhIHZpcnR1YWwgcmVnaXN0ZXIgdGhhdCBlaXRoZXIgaGFzIGEgYmFuayBvciBhIGNsYXNzLgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvVHlwZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL1R5cGVzLmgKaW5kZXggN2IyMmUzNC4uNGZkNzA0MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvVHlwZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9UeXBlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL1R5cGVzLmggLSBUeXBlcyB1c2VkIGJ5IEdJU2VsIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvVXRpbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL1V0aWxzLmgKaW5kZXggNTFlM2EyNy4uZGQxNGEwYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0dsb2JhbElTZWwvVXRpbHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vR2xvYmFsSVNlbC9VdGlscy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0tIGxsdm0vQ29kZUdlbi9HbG9iYWxJU2VsL1V0aWxzLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMDgsNSArMTA3LDggQEAKIC8vLyBmYWxsYmFjay4KIHZvaWQgZ2V0U2VsZWN0aW9uREFHRmFsbGJhY2tBbmFseXNpc1VzYWdlKEFuYWx5c2lzVXNhZ2UgJkFVKTsKIAorT3B0aW9uYWw8QVBJbnQ+IENvbnN0YW50Rm9sZEJpbk9wKHVuc2lnbmVkIE9wY29kZSwgY29uc3QgdW5zaWduZWQgT3AxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIE9wMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNYWNoaW5lUmVnaXN0ZXJJbmZvICZNUkkpOwogfSAvLyBFbmQgbmFtZXNwYWNlIGxsdm0uCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9JU0RPcGNvZGVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vSVNET3Bjb2Rlcy5oCmluZGV4IGVjOWM0NjEuLmVkNGJmZTcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9JU0RPcGNvZGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0lTRE9wY29kZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9Db2RlR2VuL0lTRE9wY29kZXMuaCAtIENvZGVHZW4gb3Bjb2RlcyAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNzAsNyArNjksNyBAQAogICAgIC8vLyBvZiB0aGUgZnJhbWUgb3IgcmV0dXJuIGFkZHJlc3MgdG8gcmV0dXJuLiAgQW4gaW5kZXggb2YgemVybyBjb3JyZXNwb25kcwogICAgIC8vLyB0byB0aGUgY3VycmVudCBmdW5jdGlvbidzIGZyYW1lIG9yIHJldHVybiBhZGRyZXNzLCBhbiBpbmRleCBvZiBvbmUgdG8KICAgICAvLy8gdGhlIHBhcmVudCdzIGZyYW1lIG9yIHJldHVybiBhZGRyZXNzLCBhbmQgc28gb24uCi0gICAgRlJBTUVBRERSLCBSRVRVUk5BRERSLCBBRERST0ZSRVRVUk5BRERSLAorICAgIEZSQU1FQUREUiwgUkVUVVJOQUREUiwgQUREUk9GUkVUVVJOQUREUiwgU1BPTkVOVFJZLAogCiAgICAgLy8vIExPQ0FMX1JFQ09WRVIgLSBSZXByZXNlbnRzIHRoZSBsbHZtLmxvY2FscmVjb3ZlciBpbnRyaW5zaWMuCiAgICAgLy8vIE1hdGVyaWFsaXplcyB0aGUgb2Zmc2V0IGZyb20gdGhlIGxvY2FsIG9iamVjdCBwb2ludGVyIG9mIGFub3RoZXIKQEAgLTI1Niw2ICsyNTUsMjkgQEAKICAgICAvLy8gU2FtZSBmb3IgbXVsdGlwbGljYXRpb24uCiAgICAgU01VTE8sIFVNVUxPLAogCisgICAgLy8vIFJFU1VMVCA9IFtVU11BRERTQVQoTEhTLCBSSFMpIC0gUGVyZm9ybSBzYXR1cmF0aW9uIGFkZGl0aW9uIG9uIDIKKyAgICAvLy8gaW50ZWdlcnMgd2l0aCB0aGUgc2FtZSBiaXQgd2lkdGggKFcpLiBJZiB0aGUgdHJ1ZSB2YWx1ZSBvZiBMSFMgKyBSSFMKKyAgICAvLy8gZXhjZWVkcyB0aGUgbGFyZ2VzdCB2YWx1ZSB0aGF0IGNhbiBiZSByZXByZXNlbnRlZCBieSBXIGJpdHMsIHRoZQorICAgIC8vLyByZXN1bHRpbmcgdmFsdWUgaXMgdGhpcyBtYXhpbXVtIHZhbHVlLiBPdGhlcndpc2UsIGlmIHRoaXMgdmFsdWUgaXMgbGVzcworICAgIC8vLyB0aGFuIHRoZSBzbWFsbGVzdCB2YWx1ZSB0aGF0IGNhbiBiZSByZXByZXNlbnRlZCBieSBXIGJpdHMsIHRoZQorICAgIC8vLyByZXN1bHRpbmcgdmFsdWUgaXMgdGhpcyBtaW5pbXVtIHZhbHVlLgorICAgIFNBRERTQVQsIFVBRERTQVQsCisKKyAgICAvLy8gUkVTVUxUID0gW1VTXVNVQlNBVChMSFMsIFJIUykgLSBQZXJmb3JtIHNhdHVyYXRpb24gc3VidHJhY3Rpb24gb24gMgorICAgIC8vLyBpbnRlZ2VycyB3aXRoIHRoZSBzYW1lIGJpdCB3aWR0aCAoVykuIElmIHRoZSB0cnVlIHZhbHVlIG9mIExIUyAtIFJIUworICAgIC8vLyBleGNlZWRzIHRoZSBsYXJnZXN0IHZhbHVlIHRoYXQgY2FuIGJlIHJlcHJlc2VudGVkIGJ5IFcgYml0cywgdGhlCisgICAgLy8vIHJlc3VsdGluZyB2YWx1ZSBpcyB0aGlzIG1heGltdW0gdmFsdWUuIE90aGVyd2lzZSwgaWYgdGhpcyB2YWx1ZSBpcyBsZXNzCisgICAgLy8vIHRoYW4gdGhlIHNtYWxsZXN0IHZhbHVlIHRoYXQgY2FuIGJlIHJlcHJlc2VudGVkIGJ5IFcgYml0cywgdGhlCisgICAgLy8vIHJlc3VsdGluZyB2YWx1ZSBpcyB0aGlzIG1pbmltdW0gdmFsdWUuCisgICAgU1NVQlNBVCwgVVNVQlNBVCwKKworICAgIC8vLyBSRVNVTFQgPSBbVVNdTVVMRklYKExIUywgUkhTLCBTQ0FMRSkgLSBQZXJmb3JtIGZpeGVkIHBvaW50IG11bHRpcGxpY2F0aW9uIG9uCisgICAgLy8vIDIgaW50ZWdlcnMgd2l0aCB0aGUgc2FtZSB3aWR0aCBhbmQgc2NhbGUuIFNDQUxFIHJlcHJlc2VudHMgdGhlIHNjYWxlIG9mCisgICAgLy8vIGJvdGggb3BlcmFuZHMgYXMgZml4ZWQgcG9pbnQgbnVtYmVycy4gVGhpcyBTQ0FMRSBwYXJhbWV0ZXIgbXVzdCBiZSBhCisgICAgLy8vIGNvbnN0YW50IGludGVnZXIuIEEgc2NhbGUgb2YgemVybyBpcyBlZmZlY3RpdmVseSBwZXJmb3JtaW5nCisgICAgLy8vIG11bHRpcGxpY2F0aW9uIG9uIDIgaW50ZWdlcnMuCisgICAgU01VTEZJWCwgVU1VTEZJWCwKKwogICAgIC8vLyBTaW1wbGUgYmluYXJ5IGZsb2F0aW5nIHBvaW50IG9wZXJhdG9ycy4KICAgICBGQURELCBGU1VCLCBGTVVMLCBGRElWLCBGUkVNLAogCkBAIC0yNzIsNyArMjk0LDggQEAKICAgICAvLy8gVGhleSBhcmUgdXNlZCB0byBsaW1pdCBvcHRpbWl6YXRpb25zIHdoaWxlIHRoZSBEQUcgaXMgYmVpbmcgb3B0aW1pemVkLgogICAgIFNUUklDVF9GU1FSVCwgU1RSSUNUX0ZQT1csIFNUUklDVF9GUE9XSSwgU1RSSUNUX0ZTSU4sIFNUUklDVF9GQ09TLAogICAgIFNUUklDVF9GRVhQLCBTVFJJQ1RfRkVYUDIsIFNUUklDVF9GTE9HLCBTVFJJQ1RfRkxPRzEwLCBTVFJJQ1RfRkxPRzIsCi0gICAgU1RSSUNUX0ZSSU5ULCBTVFJJQ1RfRk5FQVJCWUlOVCwKKyAgICBTVFJJQ1RfRlJJTlQsIFNUUklDVF9GTkVBUkJZSU5ULCBTVFJJQ1RfRk1BWE5VTSwgU1RSSUNUX0ZNSU5OVU0sCisgICAgU1RSSUNUX0ZDRUlMLCBTVFJJQ1RfRkZMT09SLCBTVFJJQ1RfRlJPVU5ELCBTVFJJQ1RfRlRSVU5DLAogCiAgICAgLy8vIEZNQSAtIFBlcmZvcm0gYSAqIGIgKyBjIHdpdGggbm8gaW50ZXJtZWRpYXRlIHJvdW5kaW5nIHN0ZXAuCiAgICAgRk1BLApAQCAtMzc3LDkgKzQwMCwxMyBAQAogICAgIC8vLyBXaGVuIHRoZSAxc3Qgb3BlcmFuZCBpcyBhIHZlY3RvciwgdGhlIHNoaWZ0IGFtb3VudCBtdXN0IGJlIGluIHRoZSBzYW1lCiAgICAgLy8vIHR5cGUuIChUTEkuZ2V0U2hpZnRBbW91bnRUeSgpIHdpbGwgcmV0dXJuIHRoZSBzYW1lIHR5cGUgd2hlbiB0aGUgaW5wdXQKICAgICAvLy8gdHlwZSBpcyBhIHZlY3Rvci4pCi0gICAgLy8vIEZvciByb3RhdGVzLCB0aGUgc2hpZnQgYW1vdW50IGlzIHRyZWF0ZWQgYXMgYW4gdW5zaWduZWQgYW1vdW50IG1vZHVsbwotICAgIC8vLyB0aGUgZWxlbWVudCBzaXplIG9mIHRoZSBmaXJzdCBvcGVyYW5kLgotICAgIFNITCwgU1JBLCBTUkwsIFJPVEwsIFJPVFIsCisgICAgLy8vIEZvciByb3RhdGVzIGFuZCBmdW5uZWwgc2hpZnRzLCB0aGUgc2hpZnQgYW1vdW50IGlzIHRyZWF0ZWQgYXMgYW4gdW5zaWduZWQKKyAgICAvLy8gYW1vdW50IG1vZHVsbyB0aGUgZWxlbWVudCBzaXplIG9mIHRoZSBmaXJzdCBvcGVyYW5kLgorICAgIC8vLworICAgIC8vLyBGdW5uZWwgJ2RvdWJsZScgc2hpZnRzIHRha2UgMyBvcGVyYW5kcywgMiBpbnB1dHMgYW5kIHRoZSBzaGlmdCBhbW91bnQuCisgICAgLy8vIGZzaGwoWCxZLFopOiAoWCA8PCAoWiAlIEJXKSkgfCAoWSA+PiAoQlcgLSAoWiAlIEJXKSkpCisgICAgLy8vIGZzaHIoWCxZLFopOiAoWCA8PCAoQlcgLSAoWiAlIEJXKSkpIHwgKFkgPj4gKFogJSBCVykpCisgICAgU0hMLCBTUkEsIFNSTCwgUk9UTCwgUk9UUiwgRlNITCwgRlNIUiwKIAogICAgIC8vLyBCeXRlIFN3YXAgYW5kIENvdW50aW5nIG9wZXJhdG9ycy4KICAgICBCU1dBUCwgQ1RUWiwgQ1RMWiwgQ1RQT1AsIEJJVFJFVkVSU0UsCkBAIC00NjEsMzEgKzQ4OCwzMyBAQAogICAgIC8vLyBpbi1yZWdpc3RlciBhbnktZXh0ZW5zaW9uIG9mIHRoZSBsb3cgbGFuZXMgb2YgYW4gaW50ZWdlciB2ZWN0b3IuIFRoZQogICAgIC8vLyByZXN1bHQgdHlwZSBtdXN0IGhhdmUgZmV3ZXIgZWxlbWVudHMgdGhhbiB0aGUgb3BlcmFuZCB0eXBlLCBhbmQgdGhvc2UKICAgICAvLy8gZWxlbWVudHMgbXVzdCBiZSBsYXJnZXIgaW50ZWdlciB0eXBlcyBzdWNoIHRoYXQgdGhlIHRvdGFsIHNpemUgb2YgdGhlCi0gICAgLy8vIG9wZXJhbmQgdHlwZSBhbmQgdGhlIHJlc3VsdCB0eXBlIG1hdGNoLiBFYWNoIG9mIHRoZSBsb3cgb3BlcmFuZAotICAgIC8vLyBlbGVtZW50cyBpcyBhbnktZXh0ZW5kZWQgaW50byB0aGUgY29ycmVzcG9uZGluZywgd2lkZXIgcmVzdWx0Ci0gICAgLy8vIGVsZW1lbnRzIHdpdGggdGhlIGhpZ2ggYml0cyBiZWNvbWluZyB1bmRlZi4KKyAgICAvLy8gb3BlcmFuZCB0eXBlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgc2l6ZSBvZiB0aGUgcmVzdWx0IHR5cGUuIEVhY2gKKyAgICAvLy8gb2YgdGhlIGxvdyBvcGVyYW5kIGVsZW1lbnRzIGlzIGFueS1leHRlbmRlZCBpbnRvIHRoZSBjb3JyZXNwb25kaW5nLAorICAgIC8vLyB3aWRlciByZXN1bHQgZWxlbWVudHMgd2l0aCB0aGUgaGlnaCBiaXRzIGJlY29taW5nIHVuZGVmLgorICAgIC8vLyBOT1RFOiBUaGUgdHlwZSBsZWdhbGl6ZXIgcHJlZmVycyB0byBtYWtlIHRoZSBvcGVyYW5kIGFuZCByZXN1bHQgc2l6ZQorICAgIC8vLyB0aGUgc2FtZSB0byBhbGxvdyBleHBhbnNpb24gdG8gc2h1ZmZsZSB2ZWN0b3IgZHVyaW5nIG9wIGxlZ2FsaXphdGlvbi4KICAgICBBTllfRVhURU5EX1ZFQ1RPUl9JTlJFRywKIAogICAgIC8vLyBTSUdOX0VYVEVORF9WRUNUT1JfSU5SRUcoVmVjdG9yKSAtIFRoaXMgb3BlcmF0b3IgcmVwcmVzZW50cyBhbgogICAgIC8vLyBpbi1yZWdpc3RlciBzaWduLWV4dGVuc2lvbiBvZiB0aGUgbG93IGxhbmVzIG9mIGFuIGludGVnZXIgdmVjdG9yLiBUaGUKICAgICAvLy8gcmVzdWx0IHR5cGUgbXVzdCBoYXZlIGZld2VyIGVsZW1lbnRzIHRoYW4gdGhlIG9wZXJhbmQgdHlwZSwgYW5kIHRob3NlCiAgICAgLy8vIGVsZW1lbnRzIG11c3QgYmUgbGFyZ2VyIGludGVnZXIgdHlwZXMgc3VjaCB0aGF0IHRoZSB0b3RhbCBzaXplIG9mIHRoZQotICAgIC8vLyBvcGVyYW5kIHR5cGUgYW5kIHRoZSByZXN1bHQgdHlwZSBtYXRjaC4gRWFjaCBvZiB0aGUgbG93IG9wZXJhbmQKLSAgICAvLy8gZWxlbWVudHMgaXMgc2lnbi1leHRlbmRlZCBpbnRvIHRoZSBjb3JyZXNwb25kaW5nLCB3aWRlciByZXN1bHQKLSAgICAvLy8gZWxlbWVudHMuCi0gICAgLy8gRklYTUU6IFRoZSBTSUdOX0VYVEVORF9JTlJFRyBub2RlIGlzbid0IHNwZWNpZmljYWxseSBsaW1pdGVkIHRvCi0gICAgLy8gc2NhbGFycywgYnV0IGl0IGFsc28gZG9lc24ndCBoYW5kbGUgdmVjdG9ycyB3ZWxsLiBFaXRoZXIgaXQgc2hvdWxkIGJlCi0gICAgLy8gcmVzdHJpY3RlZCB0byBzY2FsYXJzIG9yIHRoaXMgbm9kZSAoYW5kIGl0cyBoYW5kbGluZykgc2hvdWxkIGJlIG1lcmdlZAotICAgIC8vIGludG8gaXQuCisgICAgLy8vIG9wZXJhbmQgdHlwZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNpemUgb2YgdGhlIHJlc3VsdCB0eXBlLiBFYWNoCisgICAgLy8vIG9mIHRoZSBsb3cgb3BlcmFuZCBlbGVtZW50cyBpcyBzaWduLWV4dGVuZGVkIGludG8gdGhlIGNvcnJlc3BvbmRpbmcsCisgICAgLy8vIHdpZGVyIHJlc3VsdCBlbGVtZW50cy4KKyAgICAvLy8gTk9URTogVGhlIHR5cGUgbGVnYWxpemVyIHByZWZlcnMgdG8gbWFrZSB0aGUgb3BlcmFuZCBhbmQgcmVzdWx0IHNpemUKKyAgICAvLy8gdGhlIHNhbWUgdG8gYWxsb3cgZXhwYW5zaW9uIHRvIHNodWZmbGUgdmVjdG9yIGR1cmluZyBvcCBsZWdhbGl6YXRpb24uCiAgICAgU0lHTl9FWFRFTkRfVkVDVE9SX0lOUkVHLAogCiAgICAgLy8vIFpFUk9fRVhURU5EX1ZFQ1RPUl9JTlJFRyhWZWN0b3IpIC0gVGhpcyBvcGVyYXRvciByZXByZXNlbnRzIGFuCiAgICAgLy8vIGluLXJlZ2lzdGVyIHplcm8tZXh0ZW5zaW9uIG9mIHRoZSBsb3cgbGFuZXMgb2YgYW4gaW50ZWdlciB2ZWN0b3IuIFRoZQogICAgIC8vLyByZXN1bHQgdHlwZSBtdXN0IGhhdmUgZmV3ZXIgZWxlbWVudHMgdGhhbiB0aGUgb3BlcmFuZCB0eXBlLCBhbmQgdGhvc2UKICAgICAvLy8gZWxlbWVudHMgbXVzdCBiZSBsYXJnZXIgaW50ZWdlciB0eXBlcyBzdWNoIHRoYXQgdGhlIHRvdGFsIHNpemUgb2YgdGhlCi0gICAgLy8vIG9wZXJhbmQgdHlwZSBhbmQgdGhlIHJlc3VsdCB0eXBlIG1hdGNoLiBFYWNoIG9mIHRoZSBsb3cgb3BlcmFuZAotICAgIC8vLyBlbGVtZW50cyBpcyB6ZXJvLWV4dGVuZGVkIGludG8gdGhlIGNvcnJlc3BvbmRpbmcsIHdpZGVyIHJlc3VsdAotICAgIC8vLyBlbGVtZW50cy4KKyAgICAvLy8gb3BlcmFuZCB0eXBlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgc2l6ZSBvZiB0aGUgcmVzdWx0IHR5cGUuIEVhY2gKKyAgICAvLy8gb2YgdGhlIGxvdyBvcGVyYW5kIGVsZW1lbnRzIGlzIHplcm8tZXh0ZW5kZWQgaW50byB0aGUgY29ycmVzcG9uZGluZywKKyAgICAvLy8gd2lkZXIgcmVzdWx0IGVsZW1lbnRzLgorICAgIC8vLyBOT1RFOiBUaGUgdHlwZSBsZWdhbGl6ZXIgcHJlZmVycyB0byBtYWtlIHRoZSBvcGVyYW5kIGFuZCByZXN1bHQgc2l6ZQorICAgIC8vLyB0aGUgc2FtZSB0byBhbGxvdyBleHBhbnNpb24gdG8gc2h1ZmZsZSB2ZWN0b3IgZHVyaW5nIG9wIGxlZ2FsaXphdGlvbi4KICAgICBaRVJPX0VYVEVORF9WRUNUT1JfSU5SRUcsCiAKICAgICAvLy8gRlBfVE9fW1VTXUlOVCAtIENvbnZlcnQgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSB0byBhIHNpZ25lZCBvciB1bnNpZ25lZApAQCAtNTUwLDE5ICs1NzksMzEgQEAKICAgICAvLy8gaXMgb2Z0ZW4gYSBzdG9yYWdlLW9ubHkgdHlwZSBidXQgaGFzIG5hdGl2ZSBjb252ZXJzaW9ucy4KICAgICBGUDE2X1RPX0ZQLCBGUF9UT19GUDE2LAogCi0gICAgLy8vIFBlcmZvcm0gdmFyaW91cyB1bmFyeSBmbG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGluc3BpcmVkIGJ5IGxpYm0uCisgICAgLy8vIFBlcmZvcm0gdmFyaW91cyB1bmFyeSBmbG9hdGluZy1wb2ludCBvcGVyYXRpb25zIGluc3BpcmVkIGJ5IGxpYm0uIEZvcgorICAgIC8vLyBGUE9XSSwgdGhlIHJlc3VsdCBpcyB1bmRlZmluZWQgaWYgaWYgdGhlIGludGVnZXIgb3BlcmFuZCBkb2Vzbid0IGZpdAorICAgIC8vLyBpbnRvIDMyIGJpdHMuCiAgICAgRk5FRywgRkFCUywgRlNRUlQsIEZDQlJULCBGU0lOLCBGQ09TLCBGUE9XSSwgRlBPVywKICAgICBGTE9HLCBGTE9HMiwgRkxPRzEwLCBGRVhQLCBGRVhQMiwKICAgICBGQ0VJTCwgRlRSVU5DLCBGUklOVCwgRk5FQVJCWUlOVCwgRlJPVU5ELCBGRkxPT1IsCiAgICAgLy8vIEZNSU5OVU0vRk1BWE5VTSAtIFBlcmZvcm0gZmxvYXRpbmctcG9pbnQgbWluaW11bSBvciBtYXhpbXVtIG9uIHR3bwogICAgIC8vLyB2YWx1ZXMuCi0gICAgLy8vIEluIHRoZSBjYXNlIHdoZXJlIGEgc2luZ2xlIGlucHV0IGlzIE5hTiwgdGhlIG5vbi1OYU4gaW5wdXQgaXMgcmV0dXJuZWQuCisgICAgLy8KKyAgICAvLy8gSW4gdGhlIGNhc2Ugd2hlcmUgYSBzaW5nbGUgaW5wdXQgaXMgYSBOYU4gKGVpdGhlciBzaWduYWxpbmcgb3IgcXVpZXQpLAorICAgIC8vLyB0aGUgbm9uLU5hTiBpbnB1dCBpcyByZXR1cm5lZC4KICAgICAvLy8KICAgICAvLy8gVGhlIHJldHVybiB2YWx1ZSBvZiAoRk1JTk5VTSAwLjAsIC0wLjApIGNvdWxkIGJlIGVpdGhlciAwLjAgb3IgLTAuMC4KICAgICBGTUlOTlVNLCBGTUFYTlVNLAotICAgIC8vLyBGTUlOTkFOL0ZNQVhOQU4gLSBCZWhhdmUgaWRlbnRpY2FsbHkgdG8gRk1JTk5VTS9GTUFYTlVNLCBleGNlcHQgdGhhdAotICAgIC8vLyB3aGVuIGEgc2luZ2xlIGlucHV0IGlzIE5hTiwgTmFOIGlzIHJldHVybmVkLgotICAgIEZNSU5OQU4sIEZNQVhOQU4sCisKKyAgICAvLy8gRk1JTk5VTV9JRUVFL0ZNQVhOVU1fSUVFRSAtIFBlcmZvcm0gZmxvYXRpbmctcG9pbnQgbWluaW11bSBvciBtYXhpbXVtIG9uCisgICAgLy8vIHR3byB2YWx1ZXMsIGZvbGxvd2luZyB0aGUgSUVFRS03NTQgMjAwOCBkZWZpbml0aW9uLiBUaGlzIGRpZmZlcnMgZnJvbQorICAgIC8vLyBGTUlOTlVNL0ZNQVhOVU0gaW4gdGhlIGhhbmRsaW5nIG9mIHNpZ25hbGluZyBOYU5zLiBJZiBvbmUgaW5wdXQgaXMgYQorICAgIC8vLyBzaWduYWxpbmcgTmFOLCByZXR1cm5zIGEgcXVpZXQgTmFOLgorICAgIEZNSU5OVU1fSUVFRSwgRk1BWE5VTV9JRUVFLAorCisgICAgLy8vIEZNSU5JTVVNL0ZNQVhJTVVNIC0gTmFOLXByb3BhZ2F0aW5nIG1pbmltdW0vbWF4aW11bSB0aGF0IGFsc28gdHJlYXQgLTAuMAorICAgIC8vLyBhcyBsZXNzIHRoYW4gMC4wLiBXaGlsZSBGTUlOTlVNX0lFRUUvRk1BWE5VTV9JRUVFIGZvbGxvdyBJRUVFIDc1NC0yMDA4CisgICAgLy8vIHNlbWFudGljcywgRk1JTklNVU0vRk1BWElNVU0gZm9sbG93IElFRUUgNzU0LTIwMTggZHJhZnQgc2VtYW50aWNzLgorICAgIEZNSU5JTVVNLCBGTUFYSU1VTSwKIAogICAgIC8vLyBGU0lOQ09TIC0gQ29tcHV0ZSBib3RoIGZzaW4gYW5kIGZjb3MgYXMgYSBzaW5nbGUgb3BlcmF0aW9uLgogICAgIEZTSU5DT1MsCkBAIC02MjYsNiArNjY3LDkgQEAKICAgICAvLy8gU0RPcGVyYW5kcy4KICAgICBJTkxJTkVBU00sCiAKKyAgICAvLy8gSU5MSU5FQVNNX0JSIC0gVGVybWluYXRvciB2ZXJzaW9uIG9mIGlubGluZSBhc20uIFVzZWQgYnkgYXNtLWdvdG8uCisgICAgSU5MSU5FQVNNX0JSLAorCiAgICAgLy8vIEVIX0xBQkVMIC0gUmVwcmVzZW50cyBhIGxhYmVsIGluIG1pZCBiYXNpYyBibG9jayB1c2VkIHRvIHRyYWNrCiAgICAgLy8vIGxvY2F0aW9ucyBuZWVkZWQgZm9yIGRlYnVnIGFuZCBleGNlcHRpb24gaGFuZGxpbmcgdGFibGVzLiAgVGhlc2Ugbm9kZXMKICAgICAvLy8gdGFrZSBhIGNoYWluIGFzIGlucHV0IGFuZCByZXR1cm4gYSBjaGFpbi4KQEAgLTc3OSw2ICs4MjMsOCBAQAogICAgIEFUT01JQ19MT0FEX01BWCwKICAgICBBVE9NSUNfTE9BRF9VTUlOLAogICAgIEFUT01JQ19MT0FEX1VNQVgsCisgICAgQVRPTUlDX0xPQURfRkFERCwKKyAgICBBVE9NSUNfTE9BRF9GU1VCLAogCiAgICAgLy8gTWFza2VkIGxvYWQgYW5kIHN0b3JlIC0gY29uc2VjdXRpdmUgdmVjdG9yIGxvYWQgYW5kIHN0b3JlIG9wZXJhdGlvbnMKICAgICAvLyB3aXRoIGFkZGl0aW9uYWwgbWFzayBvcGVyYW5kIHRoYXQgcHJldmVudHMgbWVtb3J5IGFjY2Vzc2VzIHRvIHRoZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0ludHJpbnNpY0xvd2VyaW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vSW50cmluc2ljTG93ZXJpbmcuaAppbmRleCA1OTdkNjg0Li5kYWYyZDlhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vSW50cmluc2ljTG93ZXJpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vSW50cmluc2ljTG93ZXJpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gSW50cmluc2ljTG93ZXJpbmcuaCAtIEludHJpbnNpYyBGdW5jdGlvbiBMb3dlcmluZyAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzEsMTAgKzMwLDYgQEAKIHB1YmxpYzoKICAgZXhwbGljaXQgSW50cmluc2ljTG93ZXJpbmcoY29uc3QgRGF0YUxheW91dCAmREwpIDogREwoREwpLCBXYXJuZWQoZmFsc2UpIHt9CiAKLSAgLy8vIEFkZCBhbGwgb2YgdGhlIHByb3RvdHlwZXMgdGhhdCBtaWdodCBiZSBuZWVkZWQgYnkgYW4gaW50cmluc2ljIGxvd2VyaW5nCi0gIC8vLyBpbXBsZW1lbnRhdGlvbiB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBtb2R1bGUgc3BlY2lmaWVkLgotICB2b2lkIEFkZFByb3RvdHlwZXMoTW9kdWxlICZNKTsKLQogICAvLy8gUmVwbGFjZSBhIGNhbGwgdG8gdGhlIHNwZWNpZmllZCBpbnRyaW5zaWMgZnVuY3Rpb24uCiAgIC8vLyBJZiBhbiBpbnRyaW5zaWMgZnVuY3Rpb24gbXVzdCBiZSBpbXBsZW1lbnRlZCBieSB0aGUgY29kZSBnZW5lcmF0b3IKICAgLy8vIChzdWNoIGFzIHZhX3N0YXJ0KSwgdGhpcyBmdW5jdGlvbiBzaG91bGQgcHJpbnQgYSBtZXNzYWdlIGFuZCBhYm9ydC4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MYXRlbmN5UHJpb3JpdHlRdWV1ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xhdGVuY3lQcmlvcml0eVF1ZXVlLmgKaW5kZXggOWI4ZDgzYy4uOTVmNGM2NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xhdGVuY3lQcmlvcml0eVF1ZXVlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xhdGVuY3lQcmlvcml0eVF1ZXVlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLS0gTGF0ZW5jeVByaW9yaXR5UXVldWUuaCAtIEEgbGF0ZW5jeS1vcmllbnRlZCBwcmlvcml0eSBxdWV1ZSAtLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MYXp5TWFjaGluZUJsb2NrRnJlcXVlbmN5SW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xhenlNYWNoaW5lQmxvY2tGcmVxdWVuY3lJbmZvLmgKaW5kZXggMjIxZjE2YS4uY2E5OWM2YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xhenlNYWNoaW5lQmxvY2tGcmVxdWVuY3lJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xhenlNYWNoaW5lQmxvY2tGcmVxdWVuY3lJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLy89PT0tIExhenlNYWNoaW5lQmxvY2tGcmVxdWVuY3lJbmZvLmggLSBMYXp5IEJsb2NrIEZyZXF1ZW5jeSAtKi0gQysrIC0qLS09PT0vLwogLy8vCi0vLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8vCi0vLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8vCiAvLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTGV4aWNhbFNjb3Blcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xleGljYWxTY29wZXMuaAppbmRleCAzYmE1MDM0Li4yNTNkNDczIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTGV4aWNhbFNjb3Blcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MZXhpY2FsU2NvcGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTGV4aWNhbFNjb3Blcy5jcHAgLSBDb2xsZWN0aW5nIGxleGljYWwgc2NvcGUgaW5mbyAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MaW5rQWxsQXNtV3JpdGVyQ29tcG9uZW50cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpbmtBbGxBc21Xcml0ZXJDb21wb25lbnRzLmgKaW5kZXggYzMwNDZkYS4uNzVhNWMzNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpbmtBbGxBc21Xcml0ZXJDb21wb25lbnRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpbmtBbGxBc21Xcml0ZXJDb21wb25lbnRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9Db2RlZ2VuL0xpbmtBbGxBc21Xcml0ZXJDb21wb25lbnRzLmggLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNSw3ICsxNCw3IEBACiAjaWZuZGVmIExMVk1fQ09ERUdFTl9MSU5LQUxMQVNNV1JJVEVSQ09NUE9ORU5UU19ICiAjZGVmaW5lIExMVk1fQ09ERUdFTl9MSU5LQUxMQVNNV1JJVEVSQ09NUE9ORU5UU19ICiAKLSNpbmNsdWRlICJsbHZtL0NvZGVHZW4vR0NzLmgiCisjaW5jbHVkZSAibGx2bS9Db2RlR2VuL0J1aWx0aW5HQ3MuaCIKICNpbmNsdWRlIDxjc3RkbGliPgogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpbmtBbGxDb2RlZ2VuQ29tcG9uZW50cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpbmtBbGxDb2RlZ2VuQ29tcG9uZW50cy5oCmluZGV4IGZlZTEzMWUuLjU2YzkzYjIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MaW5rQWxsQ29kZWdlbkNvbXBvbmVudHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTGlua0FsbENvZGVnZW5Db21wb25lbnRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9Db2RlZ2VuL0xpbmtBbGxDb2RlZ2VuQ29tcG9uZW50cy5oIC0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNSw3ICsxNCw3IEBACiAjaWZuZGVmIExMVk1fQ09ERUdFTl9MSU5LQUxMQ09ERUdFTkNPTVBPTkVOVFNfSAogI2RlZmluZSBMTFZNX0NPREVHRU5fTElOS0FMTENPREVHRU5DT01QT05FTlRTX0gKIAotI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9HQ3MuaCIKKyNpbmNsdWRlICJsbHZtL0NvZGVHZW4vQnVpbHRpbkdDcy5oIgogI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9QYXNzZXMuaCIKICNpbmNsdWRlICJsbHZtL0NvZGVHZW4vU2NoZWR1bGVyUmVnaXN0cnkuaCIKICNpbmNsdWRlICJsbHZtL1RhcmdldC9UYXJnZXRNYWNoaW5lLmgiCkBAIC0zNiwxMSArMzUsNyBAQAogICAgICAgKHZvaWQpIGxsdm06OmNyZWF0ZUdyZWVkeVJlZ2lzdGVyQWxsb2NhdG9yKCk7CiAgICAgICAodm9pZCkgbGx2bTo6Y3JlYXRlRGVmYXVsdFBCUVBSZWdpc3RlckFsbG9jYXRvcigpOwogCi0gICAgICBsbHZtOjpsaW5rQ29yZUNMUkdDKCk7Ci0gICAgICBsbHZtOjpsaW5rT2NhbWxHQygpOwotICAgICAgbGx2bTo6bGlua0VybGFuZ0dDKCk7Ci0gICAgICBsbHZtOjpsaW5rU2hhZG93U3RhY2tHQygpOwotICAgICAgbGx2bTo6bGlua1N0YXRlcG9pbnRFeGFtcGxlR0MoKTsKKyAgICAgIGxsdm06OmxpbmtBbGxCdWlsdGluR0NzKCk7CiAKICAgICAgICh2b2lkKSBsbHZtOjpjcmVhdGVCVVJSTGlzdERBR1NjaGVkdWxlcihudWxscHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvZGVHZW5PcHQ6OkRlZmF1bHQpOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpdmVJbnRlcnZhbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpdmVJbnRlcnZhbC5oCmluZGV4IGNkZjlhZDIuLjYyMmMxMjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MaXZlSW50ZXJ2YWwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTGl2ZUludGVydmFsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9Db2RlR2VuL0xpdmVJbnRlcnZhbC5oIC0gSW50ZXJ2YWwgcmVwcmVzZW50YXRpb24gLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MaXZlSW50ZXJ2YWxVbmlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpdmVJbnRlcnZhbFVuaW9uLmgKaW5kZXggOWUyNzk5Yi4uMDU1MDZkMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpdmVJbnRlcnZhbFVuaW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpdmVJbnRlcnZhbFVuaW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTGl2ZUludGVydmFsVW5pb24uaCAtIExpdmUgaW50ZXJ2YWwgdW5pb24gZGF0YSBzdHJ1Y3QgLS0tKi0gQysrIC0qLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MaXZlSW50ZXJ2YWxzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTGl2ZUludGVydmFscy5oCmluZGV4IDI5MWEwN2EuLmQwNzkxYmUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MaXZlSW50ZXJ2YWxzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpdmVJbnRlcnZhbHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMaXZlSW50ZXJ2YWxzLmggLSBMaXZlIEludGVydmFsIEFuYWx5c2lzIC0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTk4LDEwICsxOTcsMTAgQEAKICAgICB2b2lkIHBydW5lVmFsdWUoTGl2ZVJhbmdlICZMUiwgU2xvdEluZGV4IEtpbGwsCiAgICAgICAgICAgICAgICAgICAgIFNtYWxsVmVjdG9ySW1wbDxTbG90SW5kZXg+ICpFbmRQb2ludHMpOwogCi0gICAgLy8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSB1c2VkLiBJdHMgaW50ZW5kIGlzIHRvIHRlbGwgeW91IHRoYXQKLSAgICAvLy8geW91IGFyZSBkb2luZyBzb21ldGhpbmcgd3JvbmcgaWYgeW91IGNhbGwgcHJ1dmVWYWx1ZSBkaXJlY3RseSBvbiBhCisgICAgLy8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSB1c2VkLiBJdHMgaW50ZW50IGlzIHRvIHRlbGwgeW91IHRoYXQgeW91IGFyZQorICAgIC8vLyBkb2luZyBzb21ldGhpbmcgd3JvbmcgaWYgeW91IGNhbGwgcHJ1bmVWYWx1ZSBkaXJlY3RseSBvbiBhCiAgICAgLy8vIExpdmVJbnRlcnZhbC4gSW5kZWVkLCB5b3UgYXJlIHN1cHBvc2VkIHRvIGNhbGwgcHJ1bmVWYWx1ZSBvbiB0aGUgbWFpbgotICAgIC8vLyBMaXZlUmFuZ2UgYW5kIGFsbCB0aGUgTGl2ZVJhbmdlIG9mIHRoZSBzdWJyYW5nZXMgaWYgYW55LgorICAgIC8vLyBMaXZlUmFuZ2UgYW5kIGFsbCB0aGUgTGl2ZVJhbmdlcyBvZiB0aGUgc3VicmFuZ2VzIGlmIGFueS4KICAgICBMTFZNX0FUVFJJQlVURV9VTlVTRUQgdm9pZCBwcnVuZVZhbHVlKExpdmVJbnRlcnZhbCAmLCBTbG90SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8U2xvdEluZGV4PiAqKSB7CiAgICAgICBsbHZtX3VucmVhY2hhYmxlKApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpdmVQaHlzUmVncy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpdmVQaHlzUmVncy5oCmluZGV4IDMwMWE0NTAuLjUwZGEwYjMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MaXZlUGh5c1JlZ3MuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTGl2ZVBoeXNSZWdzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9Db2RlR2VuL0xpdmVQaHlzUmVncy5oIC0gTGl2ZSBQaHlzaWNhbCBSZWdpc3RlciBTZXQgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTQ4LDcgKzQ3LDggQEAKIC8vLyB3aGVuIHdhbGtpbmcgYmFja3dhcmQvZm9yd2FyZCB0aHJvdWdoIGEgYmFzaWMgYmxvY2suCiBjbGFzcyBMaXZlUGh5c1JlZ3MgewogICBjb25zdCBUYXJnZXRSZWdpc3RlckluZm8gKlRSSSA9IG51bGxwdHI7Ci0gIFNwYXJzZVNldDx1bnNpZ25lZD4gTGl2ZVJlZ3M7CisgIHVzaW5nIFJlZ2lzdGVyU2V0ID0gU3BhcnNlU2V0PE1DUGh5c1JlZywgaWRlbnRpdHk8TUNQaHlzUmVnPj47CisgIFJlZ2lzdGVyU2V0IExpdmVSZWdzOwogCiBwdWJsaWM6CiAgIC8vLyBDb25zdHJ1Y3RzIGFuIHVuaXRpYWxpemVkIHNldC4gaW5pdCgpIG5lZWRzIHRvIGJlIGNhbGxlZCB0byBpbml0aWFsaXplIGl0LgpAQCAtNzYsNyArNzYsNyBAQAogICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gTGl2ZVJlZ3MuZW1wdHkoKTsgfQogCiAgIC8vLyBBZGRzIGEgcGh5c2ljYWwgcmVnaXN0ZXIgYW5kIGFsbCBpdHMgc3ViLXJlZ2lzdGVycyB0byB0aGUgc2V0LgotICB2b2lkIGFkZFJlZyh1bnNpZ25lZCBSZWcpIHsKKyAgdm9pZCBhZGRSZWcoTUNQaHlzUmVnIFJlZykgewogICAgIGFzc2VydChUUkkgJiYgIkxpdmVQaHlzUmVncyBpcyBub3QgaW5pdGlhbGl6ZWQuIik7CiAgICAgYXNzZXJ0KFJlZyA8PSBUUkktPmdldE51bVJlZ3MoKSAmJiAiRXhwZWN0ZWQgYSBwaHlzaWNhbCByZWdpc3Rlci4iKTsKICAgICBmb3IgKE1DU3ViUmVnSXRlcmF0b3IgU3ViUmVncyhSZWcsIFRSSSwgLypJbmNsdWRlU2VsZj0qL3RydWUpOwpAQCAtODYsNyArODYsNyBAQAogCiAgIC8vLyBSZW1vdmVzIGEgcGh5c2ljYWwgcmVnaXN0ZXIsIGFsbCBpdHMgc3ViLXJlZ2lzdGVycywgYW5kIGFsbCBpdHMKICAgLy8vIHN1cGVyLXJlZ2lzdGVycyBmcm9tIHRoZSBzZXQuCi0gIHZvaWQgcmVtb3ZlUmVnKHVuc2lnbmVkIFJlZykgeworICB2b2lkIHJlbW92ZVJlZyhNQ1BoeXNSZWcgUmVnKSB7CiAgICAgYXNzZXJ0KFRSSSAmJiAiTGl2ZVBoeXNSZWdzIGlzIG5vdCBpbml0aWFsaXplZC4iKTsKICAgICBhc3NlcnQoUmVnIDw9IFRSSS0+Z2V0TnVtUmVncygpICYmICJFeHBlY3RlZCBhIHBoeXNpY2FsIHJlZ2lzdGVyLiIpOwogICAgIGZvciAoTUNSZWdBbGlhc0l0ZXJhdG9yIFIoUmVnLCBUUkksIHRydWUpOyBSLmlzVmFsaWQoKTsgKytSKQpAQCAtOTUsNyArOTUsNyBAQAogCiAgIC8vLyBSZW1vdmVzIHBoeXNpY2FsIHJlZ2lzdGVycyBjbG9iYmVyZWQgYnkgdGhlIHJlZ21hc2sgb3BlcmFuZCBccCBNTy4KICAgdm9pZCByZW1vdmVSZWdzSW5NYXNrKGNvbnN0IE1hY2hpbmVPcGVyYW5kICZNTywKLSAgICAgICAgU21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjx1bnNpZ25lZCwgY29uc3QgTWFjaGluZU9wZXJhbmQqPj4gKkNsb2JiZXJzID0KKyAgICAgICAgU21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxNQ1BoeXNSZWcsIGNvbnN0IE1hY2hpbmVPcGVyYW5kKj4+ICpDbG9iYmVycyA9CiAgICAgICAgIG51bGxwdHIpOwogCiAgIC8vLyBSZXR1cm5zIHRydWUgaWYgcmVnaXN0ZXIgXHAgUmVnIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2V0LiBUaGlzIGFsc28KQEAgLTEwMywxMCArMTAzLDEwIEBACiAgIC8vLyBhZGRSZWcoKSBhbHdheXMgYWRkcyBhbGwgc3ViLXJlZ2lzdGVycyB0byB0aGUgc2V0IGFzIHdlbGwuCiAgIC8vLyBOb3RlOiBSZXR1cm5zIGZhbHNlIGlmIGp1c3Qgc29tZSBzdWIgcmVnaXN0ZXJzIGFyZSBsaXZlLCB1c2UgYXZhaWxhYmxlKCkKICAgLy8vIHdoZW4gc2VhcmNoaW5nIGEgZnJlZSByZWdpc3Rlci4KLSAgYm9vbCBjb250YWlucyh1bnNpZ25lZCBSZWcpIGNvbnN0IHsgcmV0dXJuIExpdmVSZWdzLmNvdW50KFJlZyk7IH0KKyAgYm9vbCBjb250YWlucyhNQ1BoeXNSZWcgUmVnKSBjb25zdCB7IHJldHVybiBMaXZlUmVncy5jb3VudChSZWcpOyB9CiAKICAgLy8vIFJldHVybnMgdHJ1ZSBpZiByZWdpc3RlciBccCBSZWcgYW5kIG5vIGFsaWFzaW5nIHJlZ2lzdGVyIGlzIGluIHRoZSBzZXQuCi0gIGJvb2wgYXZhaWxhYmxlKGNvbnN0IE1hY2hpbmVSZWdpc3RlckluZm8gJk1SSSwgdW5zaWduZWQgUmVnKSBjb25zdDsKKyAgYm9vbCBhdmFpbGFibGUoY29uc3QgTWFjaGluZVJlZ2lzdGVySW5mbyAmTVJJLCBNQ1BoeXNSZWcgUmVnKSBjb25zdDsKIAogICAvLy8gUmVtb3ZlIGRlZmluZWQgcmVnaXN0ZXJzIGFuZCByZWdtYXNrIGtpbGxzIGZyb20gdGhlIHNldC4KICAgdm9pZCByZW1vdmVEZWZzKGNvbnN0IE1hY2hpbmVJbnN0ciAmTUkpOwpAQCAtMTI2LDcgKzEyNiw3IEBACiAgIC8vLyBkZWZpbmVkIG9yIGNsb2JiZXJlZCBieSBhIHJlZ21hc2suICBUaGUgb3BlcmFuZCB3aWxsIGlkZW50aWZ5IHdoZXRoZXIgdGhpcwogICAvLy8gaXMgYSByZWdtYXNrIG9yIHJlZ2lzdGVyIG9wZXJhbmQuCiAgIHZvaWQgc3RlcEZvcndhcmQoY29uc3QgTWFjaGluZUluc3RyICZNSSwKLSAgICAgICAgU21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjx1bnNpZ25lZCwgY29uc3QgTWFjaGluZU9wZXJhbmQqPj4gJkNsb2JiZXJzKTsKKyAgICAgICAgU21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxNQ1BoeXNSZWcsIGNvbnN0IE1hY2hpbmVPcGVyYW5kKj4+ICZDbG9iYmVycyk7CiAKICAgLy8vIEFkZHMgYWxsIGxpdmUtaW4gcmVnaXN0ZXJzIG9mIGJhc2ljIGJsb2NrIFxwIE1CQi4KICAgLy8vIExpdmUgaW4gcmVnaXN0ZXJzIGFyZSB0aGUgcmVnaXN0ZXJzIGluIHRoZSBibG9ja3MgbGl2ZS1pbiBsaXN0IGFuZCB0aGUKQEAgLTE0Myw3ICsxNDMsNyBAQAogICAvLy8gcmVnaXN0ZXJzLgogICB2b2lkIGFkZExpdmVPdXRzTm9QcmlzdGluZXMoY29uc3QgTWFjaGluZUJhc2ljQmxvY2sgJk1CQik7CiAKLSAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBTcGFyc2VTZXQ8dW5zaWduZWQ+Ojpjb25zdF9pdGVyYXRvcjsKKyAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBSZWdpc3RlclNldDo6Y29uc3RfaXRlcmF0b3I7CiAKICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBMaXZlUmVncy5iZWdpbigpOyB9CiAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIExpdmVSZWdzLmVuZCgpOyB9CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTGl2ZVJhbmdlRWRpdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpdmVSYW5nZUVkaXQuaAppbmRleCA1MzgzMDI5Li42NTE5OTM3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTGl2ZVJhbmdlRWRpdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MaXZlUmFuZ2VFZGl0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTGl2ZVJhbmdlRWRpdC5oIC0gQmFzaWMgdG9vbHMgZm9yIHNwbGl0IGFuZCBzcGlsbCAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MaXZlUmVnTWF0cml4LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTGl2ZVJlZ01hdHJpeC5oCmluZGV4IGY2MmE1NWMuLmFiNGQ0NGYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MaXZlUmVnTWF0cml4LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpdmVSZWdNYXRyaXguaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMaXZlUmVnTWF0cml4LmggLSBUcmFjayByZWdpc3RlciBpbnRlcmZlcmVuY2UgLS0tLS0tLS0tLSotIEMrKyAtKi0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpdmVSZWdVbml0cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpdmVSZWdVbml0cy5oCmluZGV4IDI0OTU0NTkuLjdkYmIyZmUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MaXZlUmVnVW5pdHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTGl2ZVJlZ1VuaXRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9Db2RlR2VuL0xpdmVSZWdVbml0cy5oIC0gUmVnaXN0ZXIgVW5pdCBTZXQgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTg1LDE0ICs4NCwxNCBAQAogICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gVW5pdHMubm9uZSgpOyB9CiAKICAgLy8vIEFkZHMgcmVnaXN0ZXIgdW5pdHMgY292ZXJlZCBieSBwaHlzaWNhbCByZWdpc3RlciBccCBSZWcuCi0gIHZvaWQgYWRkUmVnKHVuc2lnbmVkIFJlZykgeworICB2b2lkIGFkZFJlZyhNQ1BoeXNSZWcgUmVnKSB7CiAgICAgZm9yIChNQ1JlZ1VuaXRJdGVyYXRvciBVbml0KFJlZywgVFJJKTsgVW5pdC5pc1ZhbGlkKCk7ICsrVW5pdCkKICAgICAgIFVuaXRzLnNldCgqVW5pdCk7CiAgIH0KIAogICAvLy8gQWRkcyByZWdpc3RlciB1bml0cyBjb3ZlcmVkIGJ5IHBoeXNpY2FsIHJlZ2lzdGVyIFxwIFJlZyB0aGF0IGFyZQogICAvLy8gcGFydCBvZiB0aGUgbGFuZW1hc2sgXHAgTWFzay4KLSAgdm9pZCBhZGRSZWdNYXNrZWQodW5zaWduZWQgUmVnLCBMYW5lQml0bWFzayBNYXNrKSB7CisgIHZvaWQgYWRkUmVnTWFza2VkKE1DUGh5c1JlZyBSZWcsIExhbmVCaXRtYXNrIE1hc2spIHsKICAgICBmb3IgKE1DUmVnVW5pdE1hc2tJdGVyYXRvciBVbml0KFJlZywgVFJJKTsgVW5pdC5pc1ZhbGlkKCk7ICsrVW5pdCkgewogICAgICAgTGFuZUJpdG1hc2sgVW5pdE1hc2sgPSAoKlVuaXQpLnNlY29uZDsKICAgICAgIGlmIChVbml0TWFzay5ub25lKCkgfHwgKFVuaXRNYXNrICYgTWFzaykuYW55KCkpCkBAIC0xMDEsNyArMTAwLDcgQEAKICAgfQogCiAgIC8vLyBSZW1vdmVzIGFsbCByZWdpc3RlciB1bml0cyBjb3ZlcmVkIGJ5IHBoeXNpY2FsIHJlZ2lzdGVyIFxwIFJlZy4KLSAgdm9pZCByZW1vdmVSZWcodW5zaWduZWQgUmVnKSB7CisgIHZvaWQgcmVtb3ZlUmVnKE1DUGh5c1JlZyBSZWcpIHsKICAgICBmb3IgKE1DUmVnVW5pdEl0ZXJhdG9yIFVuaXQoUmVnLCBUUkkpOyBVbml0LmlzVmFsaWQoKTsgKytVbml0KQogICAgICAgVW5pdHMucmVzZXQoKlVuaXQpOwogICB9CkBAIC0xMTUsNyArMTE0LDcgQEAKICAgdm9pZCBhZGRSZWdzSW5NYXNrKGNvbnN0IHVpbnQzMl90ICpSZWdNYXNrKTsKIAogICAvLy8gUmV0dXJucyB0cnVlIGlmIG5vIHBhcnQgb2YgcGh5c2ljYWwgcmVnaXN0ZXIgXHAgUmVnIGlzIGxpdmUuCi0gIGJvb2wgYXZhaWxhYmxlKHVuc2lnbmVkIFJlZykgY29uc3QgeworICBib29sIGF2YWlsYWJsZShNQ1BoeXNSZWcgUmVnKSBjb25zdCB7CiAgICAgZm9yIChNQ1JlZ1VuaXRJdGVyYXRvciBVbml0KFJlZywgVFJJKTsgVW5pdC5pc1ZhbGlkKCk7ICsrVW5pdCkgewogICAgICAgaWYgKFVuaXRzLnRlc3QoKlVuaXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTGl2ZVN0YWNrcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpdmVTdGFja3MuaAppbmRleCA0NGVkNzg1Li43YzRjNjRkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTGl2ZVN0YWNrcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MaXZlU3RhY2tzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTGl2ZVN0YWNrcy5oIC0gTGl2ZSBTdGFjayBTbG90IEFuYWx5c2lzIC0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MaXZlVmFyaWFibGVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTGl2ZVZhcmlhYmxlcy5oCmluZGV4IGVkOGRhODYuLjcxZGUzMDYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9MaXZlVmFyaWFibGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xpdmVWYXJpYWJsZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9Db2RlR2VuL0xpdmVWYXJpYWJsZXMuaCAtIExpdmUgVmFyaWFibGUgQW5hbHlzaXMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xvb3BUcmF2ZXJzYWwuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9Mb29wVHJhdmVyc2FsLmgKaW5kZXggNzUwZGEwMS4uZTU4MTBlZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xvb3BUcmF2ZXJzYWwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTG9vcFRyYXZlcnNhbC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0tLS0tLSBsbHZtL0NvZGVHZW4vTG9vcFRyYXZlcnNhbC5oIC0gTG9vcCBUcmF2ZXJzYWwgLSotIEMrKyAtKi0tLS0tLS0tLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTG93TGV2ZWxUeXBlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTG93TGV2ZWxUeXBlLmgKaW5kZXggYTNjNWM5My4uNjg3MjMzZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL0xvd0xldmVsVHlwZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9Mb3dMZXZlbFR5cGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0gbGx2bS9Db2RlR2VuL0xvd0xldmVsVHlwZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01JUlBhcnNlci9NSVJQYXJzZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NSVJQYXJzZXIvTUlSUGFyc2VyLmgKaW5kZXggZTE5OWExZi4uNmEwNGU0OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01JUlBhcnNlci9NSVJQYXJzZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTUlSUGFyc2VyL01JUlBhcnNlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1JUlBhcnNlci5oIC0gTUlSIHNlcmlhbGl6YXRpb24gZm9ybWF0IHBhcnNlciAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTUlSUHJpbnRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01JUlByaW50ZXIuaAppbmRleCAwNzhjNGIyLi5iOTVjZjBmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTUlSUHJpbnRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NSVJQcmludGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTUlSUHJpbnRlci5oIC0gTUlSIHNlcmlhbGl6YXRpb24gZm9ybWF0IHByaW50ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NSVJZYW1sTWFwcGluZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01JUllhbWxNYXBwaW5nLmgKaW5kZXggZGM5MDU3NS4uYjYwMGVjOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01JUllhbWxNYXBwaW5nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01JUllhbWxNYXBwaW5nLmgKQEAgLTEsOSArMSw4IEBACi0vLz09PS0gTUlSWUFNTE1hcHBpbmcuaCAtIERlc2NyaWJlcyB0aGUgbWFwcGluZyBiZXR3ZWVuIE1JUiBhbmQgWUFNTCAtLS0tLS09PT0vLworLy89PT0tIE1JUllhbWxNYXBwaW5nLmggLSBEZXNjcmliZXMgdGhlIG1hcHBpbmcgYmV0d2VlbiBNSVIgYW5kIFlBTUwgLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00OTQsNiArNDkzLDcgQEAKICAgYm9vbCBGYWlsZWRJU2VsID0gZmFsc2U7CiAgIC8vIFJlZ2lzdGVyIGluZm9ybWF0aW9uCiAgIGJvb2wgVHJhY2tzUmVnTGl2ZW5lc3MgPSBmYWxzZTsKKyAgYm9vbCBIYXNXaW5DRkkgPSBmYWxzZTsKICAgc3RkOjp2ZWN0b3I8VmlydHVhbFJlZ2lzdGVyRGVmaW5pdGlvbj4gVmlydHVhbFJlZ2lzdGVyczsKICAgc3RkOjp2ZWN0b3I8TWFjaGluZUZ1bmN0aW9uTGl2ZUluPiBMaXZlSW5zOwogICBPcHRpb25hbDxzdGQ6OnZlY3RvcjxGbG93U3RyaW5nVmFsdWU+PiBDYWxsZWVTYXZlZFJlZ2lzdGVyczsKQEAgLTUxNyw2ICs1MTcsNyBAQAogICAgIFlhbWxJTy5tYXBPcHRpb25hbCgic2VsZWN0ZWQiLCBNRi5TZWxlY3RlZCwgZmFsc2UpOwogICAgIFlhbWxJTy5tYXBPcHRpb25hbCgiZmFpbGVkSVNlbCIsIE1GLkZhaWxlZElTZWwsIGZhbHNlKTsKICAgICBZYW1sSU8ubWFwT3B0aW9uYWwoInRyYWNrc1JlZ0xpdmVuZXNzIiwgTUYuVHJhY2tzUmVnTGl2ZW5lc3MsIGZhbHNlKTsKKyAgICBZYW1sSU8ubWFwT3B0aW9uYWwoImhhc1dpbkNGSSIsIE1GLkhhc1dpbkNGSSwgZmFsc2UpOwogICAgIFlhbWxJTy5tYXBPcHRpb25hbCgicmVnaXN0ZXJzIiwgTUYuVmlydHVhbFJlZ2lzdGVycywKICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8VmlydHVhbFJlZ2lzdGVyRGVmaW5pdGlvbj4oKSk7CiAgICAgWWFtbElPLm1hcE9wdGlvbmFsKCJsaXZlaW5zIiwgTUYuTGl2ZUlucywKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoT1JlbG9jYXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoT1JlbG9jYXRpb24uaAppbmRleCBjYmI0OTY5Li4wMTg1YzdjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaE9SZWxvY2F0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hPUmVsb2NhdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0gTWFjaE9SZWxvY2F0aW9uLmggLSBNYWNoLU8gUmVsb2NhdGlvbiBJbmZvIC0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZUJhc2ljQmxvY2suaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lQmFzaWNCbG9jay5oCmluZGV4IGVjMmYyNzAuLjM0ZTE4YmEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lQmFzaWNCbG9jay5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lQmFzaWNCbG9jay5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ29kZUdlbi9NYWNoaW5lQmFzaWNCbG9jay5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZUJsb2NrRnJlcXVlbmN5SW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVCbG9ja0ZyZXF1ZW5jeUluZm8uaAppbmRleCA1YjRiOTljLi5hNDM4ZWNmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZUJsb2NrRnJlcXVlbmN5SW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lQmxvY2tGcmVxdWVuY3lJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTWFjaGluZUJsb2NrRnJlcXVlbmN5SW5mby5oIC0gTUJCIEZyZXF1ZW5jeSBBbmFseXNpcyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lQnJhbmNoUHJvYmFiaWxpdHlJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZUJyYW5jaFByb2JhYmlsaXR5SW5mby5oCmluZGV4IDgxYjA1MjQuLjJiOWIyMDMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lQnJhbmNoUHJvYmFiaWxpdHlJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVCcmFuY2hQcm9iYWJpbGl0eUluZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPS0gTWFjaGluZUJyYW5jaFByb2JhYmlsaXR5SW5mby5oIC0gQnJhbmNoIFByb2JhYmlsaXR5IEFuYWx5c2lzIC0qLSBDKysgLSotPS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVDb21iaW5lclBhdHRlcm4uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lQ29tYmluZXJQYXR0ZXJuLmgKaW5kZXggNTg2NTM1Zi4uNGY0MDM0YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVDb21iaW5lclBhdHRlcm4uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZUNvbWJpbmVyUGF0dGVybi5oCkBAIC0xLDEwICsxLDkgQEAKIC8vPT09LS0gbGx2bS9Db2RlR2VuL01hY2hpbmVDb21iaW5lclBhdHRlcm4uaCAtIEluc3RydWN0aW9uIHBhdHRlcm4gc3VwcG9ydGVkIGJ5CiAvLyBjb21iaW5lciAgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVDb25zdGFudFBvb2wuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lQ29uc3RhbnRQb29sLmgKaW5kZXggYjBiNTQyMC4uNGQwN2I2MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVDb25zdGFudFBvb2wuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZUNvbnN0YW50UG9vbC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvZGVHZW4vTWFjaGluZUNvbnN0YW50UG9vbC5oIC0gQWJzdHJhY3QgQ29uc3RhbnQgUG9vbCAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZURvbWluYW5jZUZyb250aWVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZURvbWluYW5jZUZyb250aWVyLmgKaW5kZXggNzVkNzViYy4uZjdiYmQwNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVEb21pbmFuY2VGcm9udGllci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lRG9taW5hbmNlRnJvbnRpZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vTWFjaGluZURvbWluYW5jZUZyb250aWVyLmggLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lRG9taW5hdG9ycy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVEb21pbmF0b3JzLmgKaW5kZXggZTNkM2QxNi4uZDIyMDAwOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVEb21pbmF0b3JzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVEb21pbmF0b3JzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09LSBsbHZtL0NvZGVHZW4vTWFjaGluZURvbWluYXRvcnMuaCAtIE1hY2hpbmUgRG9tIENhbGN1bGF0aW9uIC0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lRnJhbWVJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZUZyYW1lSW5mby5oCmluZGV4IDAyYjJmMWIuLjQwMmEyZGMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lRnJhbWVJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVGcmFtZUluZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gQ29kZUdlbi9NYWNoaW5lRnJhbWVJbmZvLmggLSBBYnN0cmFjdCBTdGFjayBGcmFtZSBSZXAuIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjgsOSArMjcsMTQgQEAKIAogLy8vIFRoZSBDYWxsZWVTYXZlZEluZm8gY2xhc3MgdHJhY2tzIHRoZSBpbmZvcm1hdGlvbiBuZWVkIHRvIGxvY2F0ZSB3aGVyZSBhCiAvLy8gY2FsbGVlIHNhdmVkIHJlZ2lzdGVyIGlzIGluIHRoZSBjdXJyZW50IGZyYW1lLgorLy8vIENhbGxlZSBzYXZlZCByZWcgY2FuIGFsc28gYmUgc2F2ZWQgdG8gYSBkaWZmZXJlbnQgcmVnaXN0ZXIgcmF0aGVyIHRoYW4KKy8vLyBvbiB0aGUgc3RhY2sgYnkgc2V0dGluZyBEc3RSZWcgaW5zdGVhZCBvZiBGcmFtZUlkeC4KIGNsYXNzIENhbGxlZVNhdmVkSW5mbyB7CiAgIHVuc2lnbmVkIFJlZzsKLSAgaW50IEZyYW1lSWR4OworICB1bmlvbiB7CisgICAgaW50IEZyYW1lSWR4OworICAgIHVuc2lnbmVkIERzdFJlZzsKKyAgfTsKICAgLy8vIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByZWdpc3RlciBpcyBhY3R1YWxseSByZXN0b3JlZCBpbiB0aGUgZXBpbG9nLgogICAvLy8gSW4gbW9zdCBjYXNlcywgaWYgYSByZWdpc3RlciBpcyBzYXZlZCwgaXQgaXMgYWxzbyByZXN0b3JlZC4gVGhlcmUgYXJlCiAgIC8vLyBzb21lIHNpdHVhdGlvbnMsIHRob3VnaCwgd2hlbiB0aGlzIGlzIG5vdCB0aGUgY2FzZS4gRm9yIGV4YW1wbGUsIHRoZQpAQCAtNDQsMTcgKzQ4LDI5IEBACiAgIC8vLyBieSBpbXBsaWNpdCB1c2VzIG9uIHRoZSByZXR1cm4gaW5zdHJ1Y3Rpb25zLCBob3dldmVyLCB0aGUgcmVxdWlyZWQKICAgLy8vIGNoYW5nZXMgaW4gdGhlIEFSTSBiYWNrZW5kIHdvdWxkIGJlIHF1aXRlIGV4dGVuc2l2ZS4KICAgYm9vbCBSZXN0b3JlZDsKKyAgLy8vIEZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByZWdpc3RlciBpcyBzcGlsbGVkIHRvIHN0YWNrIG9yIGFub3RoZXIKKyAgLy8vIHJlZ2lzdGVyLgorICBib29sIFNwaWxsZWRUb1JlZzsKIAogcHVibGljOgogICBleHBsaWNpdCBDYWxsZWVTYXZlZEluZm8odW5zaWduZWQgUiwgaW50IEZJID0gMCkKLSAgOiBSZWcoUiksIEZyYW1lSWR4KEZJKSwgUmVzdG9yZWQodHJ1ZSkge30KKyAgOiBSZWcoUiksIEZyYW1lSWR4KEZJKSwgUmVzdG9yZWQodHJ1ZSksIFNwaWxsZWRUb1JlZyhmYWxzZSkge30KIAogICAvLyBBY2Nlc3NvcnMuCiAgIHVuc2lnbmVkIGdldFJlZygpICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyByZXR1cm4gUmVnOyB9CiAgIGludCBnZXRGcmFtZUlkeCgpICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyByZXR1cm4gRnJhbWVJZHg7IH0KLSAgdm9pZCBzZXRGcmFtZUlkeChpbnQgRkkpICAgICAgICAgICAgICAgICAgICAgICB7IEZyYW1lSWR4ID0gRkk7IH0KKyAgdW5zaWduZWQgZ2V0RHN0UmVnKCkgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHJldHVybiBEc3RSZWc7IH0KKyAgdm9pZCBzZXRGcmFtZUlkeChpbnQgRkkpIHsKKyAgICBGcmFtZUlkeCA9IEZJOworICAgIFNwaWxsZWRUb1JlZyA9IGZhbHNlOworICB9CisgIHZvaWQgc2V0RHN0UmVnKHVuc2lnbmVkIFNwaWxsUmVnKSB7CisgICAgRHN0UmVnID0gU3BpbGxSZWc7CisgICAgU3BpbGxlZFRvUmVnID0gdHJ1ZTsKKyAgfQogICBib29sIGlzUmVzdG9yZWQoKSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcmV0dXJuIFJlc3RvcmVkOyB9CiAgIHZvaWQgc2V0UmVzdG9yZWQoYm9vbCBSKSAgICAgICAgICAgICAgICAgICAgICAgeyBSZXN0b3JlZCA9IFI7IH0KKyAgYm9vbCBpc1NwaWxsZWRUb1JlZygpICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHJldHVybiBTcGlsbGVkVG9SZWc7IH0KIH07CiAKIC8vLyBUaGUgTWFjaGluZUZyYW1lSW5mbyBjbGFzcyByZXByZXNlbnRzIGFuIGFic3RyYWN0IHN0YWNrIGZyYW1lIHVudGlsCkBAIC0yNzEsOSArMjg3LDkgQEAKICAgdW5zaWduZWQgQ1ZCeXRlc09mQ2FsbGVlU2F2ZWRSZWdpc3RlcnMgPSAwOwogCiAgIC8vLyBUaGUgcHJvbG9nL2VwaWxvZyBjb2RlIGluc2VydGVyIGZpbGxzIGluIHRoaXMgdmVjdG9yIHdpdGggZWFjaAotICAvLy8gY2FsbGVlIHNhdmVkIHJlZ2lzdGVyIHNhdmVkIGluIHRoZSBmcmFtZS4gIEJleW9uZCBpdHMgdXNlIGJ5IHRoZSBwcm9sb2cvCi0gIC8vLyBlcGlsb2cgY29kZSBpbnNlcnRlciwgdGhpcyBkYXRhIHVzZWQgZm9yIGRlYnVnIGluZm8gYW5kIGV4Y2VwdGlvbgotICAvLy8gaGFuZGxpbmcuCisgIC8vLyBjYWxsZWUgc2F2ZWQgcmVnaXN0ZXIgc2F2ZWQgaW4gZWl0aGVyIHRoZSBmcmFtZSBvciBhIGRpZmZlcmVudAorICAvLy8gcmVnaXN0ZXIuICBCZXlvbmQgaXRzIHVzZSBieSB0aGUgcHJvbG9nLyBlcGlsb2cgY29kZSBpbnNlcnRlciwKKyAgLy8vIHRoaXMgZGF0YSBpcyB1c2VkIGZvciBkZWJ1ZyBpbmZvIGFuZCBleGNlcHRpb24gaGFuZGxpbmcuCiAgIHN0ZDo6dmVjdG9yPENhbGxlZVNhdmVkSW5mbz4gQ1NJbmZvOwogCiAgIC8vLyBIYXMgQ1NJbmZvIGJlZW4gc2V0IHlldD8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lRnVuY3Rpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lRnVuY3Rpb24uaAppbmRleCA3NDcxYjMxLi4zNGNlYjE1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZUZ1bmN0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVGdW5jdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ29kZUdlbi9NYWNoaW5lRnVuY3Rpb24uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC01OCw2ICs1Nyw3IEBACiBjbGFzcyBESUxvY2F0aW9uOwogY2xhc3MgRnVuY3Rpb247CiBjbGFzcyBHbG9iYWxWYWx1ZTsKK2NsYXNzIExMVk1UYXJnZXRNYWNoaW5lOwogY2xhc3MgTWFjaGluZUNvbnN0YW50UG9vbDsKIGNsYXNzIE1hY2hpbmVGcmFtZUluZm87CiBjbGFzcyBNYWNoaW5lRnVuY3Rpb247CkBAIC03MCw3ICs3MCw2IEBACiBjbGFzcyBQc2V1ZG9Tb3VyY2VWYWx1ZU1hbmFnZXI7CiBjbGFzcyByYXdfb3N0cmVhbTsKIGNsYXNzIFNsb3RJbmRleGVzOwotY2xhc3MgVGFyZ2V0TWFjaGluZTsKIGNsYXNzIFRhcmdldFJlZ2lzdGVyQ2xhc3M7CiBjbGFzcyBUYXJnZXRTdWJ0YXJnZXRJbmZvOwogc3RydWN0IFdhc21FSEZ1bmNJbmZvOwpAQCAtODYsNyArODUsNyBAQAogCiAgIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KICAgdm9pZCB0cmFuc2Zlck5vZGVzRnJvbUxpc3QoaWxpc3RfY2FsbGJhY2tfdHJhaXRzICZPbGRMaXN0LCBJdGVyYXRvciwgSXRlcmF0b3IpIHsKLSAgICBsbHZtX3VucmVhY2hhYmxlKCJOZXZlciB0cmFuc2ZlciBiZXR3ZWVuIGxpc3RzIik7CisgICAgYXNzZXJ0KHRoaXMgPT0gJk9sZExpc3QgJiYgIm5ldmVyIHRyYW5zZmVyIE1CQnMgYmV0d2VlbiBmdW5jdGlvbnMiKTsKICAgfQogfTsKIApAQCAtMjI1LDcgKzIyNCw3IEBACiAKIGNsYXNzIE1hY2hpbmVGdW5jdGlvbiB7CiAgIGNvbnN0IEZ1bmN0aW9uICZGOwotICBjb25zdCBUYXJnZXRNYWNoaW5lICZUYXJnZXQ7CisgIGNvbnN0IExMVk1UYXJnZXRNYWNoaW5lICZUYXJnZXQ7CiAgIGNvbnN0IFRhcmdldFN1YnRhcmdldEluZm8gKlNUSTsKICAgTUNDb250ZXh0ICZDdHg7CiAgIE1hY2hpbmVNb2R1bGVJbmZvICZNTUk7CkBAIC0zMTYsNiArMzE1LDkgQEAKICAgLy8vIE1hcCBhIGxhbmRpbmcgcGFkJ3MgRUggc3ltYm9sIHRvIHRoZSBjYWxsIHNpdGUgaW5kZXhlcy4KICAgRGVuc2VNYXA8TUNTeW1ib2wqLCBTbWFsbFZlY3Rvcjx1bnNpZ25lZCwgND4+IExQYWRUb0NhbGxTaXRlTWFwOwogCisgIC8vLyBNYXAgYSBsYW5kaW5nIHBhZCB0byBpdHMgaW5kZXguCisgIERlbnNlTWFwPGNvbnN0IE1hY2hpbmVCYXNpY0Jsb2NrICosIHVuc2lnbmVkPiBXYXNtTFBhZFRvSW5kZXhNYXA7CisKICAgLy8vIE1hcCBvZiBpbnZva2UgY2FsbCBzaXRlIGluZGV4IHZhbHVlcyB0byBhc3NvY2lhdGVkIGJlZ2luIEVIX0xBQkVMLgogICBEZW5zZU1hcDxNQ1N5bWJvbCosIHVuc2lnbmVkPiBDYWxsU2l0ZU1hcDsKIApAQCAtMzY5LDIzICszNzEsMjUgQEAKIAogICBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGVsZWdhdGUoKSA9IGRlZmF1bHQ7Ci0gICAgdmlydHVhbCB2b2lkIE1GX0hhbmRsZUluc2VydGlvbihjb25zdCBNYWNoaW5lSW5zdHIgJk1JKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIE1GX0hhbmRsZVJlbW92YWwoY29uc3QgTWFjaGluZUluc3RyICZNSSkgPSAwOworICAgIC8vLyBDYWxsYmFjayBhZnRlciBhbiBpbnNlcnRpb24uIFRoaXMgc2hvdWxkIG5vdCBtb2RpZnkgdGhlIE1JIGRpcmVjdGx5LgorICAgIHZpcnR1YWwgdm9pZCBNRl9IYW5kbGVJbnNlcnRpb24oTWFjaGluZUluc3RyICZNSSkgPSAwOworICAgIC8vLyBDYWxsYmFjayBiZWZvcmUgYSByZW1vdmFsLiBUaGlzIHNob3VsZCBub3QgbW9kaWZ5IHRoZSBNSSBkaXJlY3RseS4KKyAgICB2aXJ0dWFsIHZvaWQgTUZfSGFuZGxlUmVtb3ZhbChNYWNoaW5lSW5zdHIgJk1JKSA9IDA7CiAgIH07CiAKIHByaXZhdGU6CiAgIERlbGVnYXRlICpUaGVEZWxlZ2F0ZSA9IG51bGxwdHI7CiAKICAgLy8gQ2FsbGJhY2tzIGZvciBpbnNlcnRpb24gYW5kIHJlbW92YWwuCi0gIHZvaWQgaGFuZGxlSW5zZXJ0aW9uKGNvbnN0IE1hY2hpbmVJbnN0ciAmTUkpOwotICB2b2lkIGhhbmRsZVJlbW92YWwoY29uc3QgTWFjaGluZUluc3RyICZNSSk7CisgIHZvaWQgaGFuZGxlSW5zZXJ0aW9uKE1hY2hpbmVJbnN0ciAmTUkpOworICB2b2lkIGhhbmRsZVJlbW92YWwoTWFjaGluZUluc3RyICZNSSk7CiAgIGZyaWVuZCBzdHJ1Y3QgaWxpc3RfdHJhaXRzPE1hY2hpbmVJbnN0cj47CiAKIHB1YmxpYzoKICAgdXNpbmcgVmFyaWFibGVEYmdJbmZvTWFwVHkgPSBTbWFsbFZlY3RvcjxWYXJpYWJsZURiZ0luZm8sIDQ+OwogICBWYXJpYWJsZURiZ0luZm9NYXBUeSBWYXJpYWJsZURiZ0luZm9zOwogCi0gIE1hY2hpbmVGdW5jdGlvbihjb25zdCBGdW5jdGlvbiAmRiwgY29uc3QgVGFyZ2V0TWFjaGluZSAmVGFyZ2V0LAorICBNYWNoaW5lRnVuY3Rpb24oY29uc3QgRnVuY3Rpb24gJkYsIGNvbnN0IExMVk1UYXJnZXRNYWNoaW5lICZUYXJnZXQsCiAgICAgICAgICAgICAgICAgICBjb25zdCBUYXJnZXRTdWJ0YXJnZXRJbmZvICZTVEksIHVuc2lnbmVkIEZ1bmN0aW9uTnVtLAogICAgICAgICAgICAgICAgICAgTWFjaGluZU1vZHVsZUluZm8gJk1NSSk7CiAgIE1hY2hpbmVGdW5jdGlvbihjb25zdCBNYWNoaW5lRnVuY3Rpb24gJikgPSBkZWxldGU7CkBAIC00MzMsNyArNDM3LDcgQEAKICAgdW5zaWduZWQgZ2V0RnVuY3Rpb25OdW1iZXIoKSBjb25zdCB7IHJldHVybiBGdW5jdGlvbk51bWJlcjsgfQogCiAgIC8vLyBnZXRUYXJnZXQgLSBSZXR1cm4gdGhlIHRhcmdldCBtYWNoaW5lIHRoaXMgbWFjaGluZSBjb2RlIGlzIGNvbXBpbGVkIHdpdGgKLSAgY29uc3QgVGFyZ2V0TWFjaGluZSAmZ2V0VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gVGFyZ2V0OyB9CisgIGNvbnN0IExMVk1UYXJnZXRNYWNoaW5lICZnZXRUYXJnZXQoKSBjb25zdCB7IHJldHVybiBUYXJnZXQ7IH0KIAogICAvLy8gZ2V0U3VidGFyZ2V0IC0gUmV0dXJuIHRoZSBzdWJ0YXJnZXQgZm9yIHdoaWNoIHRoaXMgbWFjaGluZSBjb2RlIGlzIGJlaW5nCiAgIC8vLyBjb21waWxlZC4KQEAgLTgxMCw3ICs4MTQsOCBAQAogICBMYW5kaW5nUGFkSW5mbyAmZ2V0T3JDcmVhdGVMYW5kaW5nUGFkSW5mbyhNYWNoaW5lQmFzaWNCbG9jayAqTGFuZGluZ1BhZCk7CiAKICAgLy8vIFJlbWFwIGxhbmRpbmcgcGFkIGxhYmVscyBhbmQgcmVtb3ZlIGFueSBkZWxldGVkIGxhbmRpbmcgcGFkcy4KLSAgdm9pZCB0aWR5TGFuZGluZ1BhZHMoRGVuc2VNYXA8TUNTeW1ib2wqLCB1aW50cHRyX3Q+ICpMUE1hcCA9IG51bGxwdHIpOworICB2b2lkIHRpZHlMYW5kaW5nUGFkcyhEZW5zZU1hcDxNQ1N5bWJvbCAqLCB1aW50cHRyX3Q+ICpMUE1hcCA9IG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVGlkeUlmTm9CZWdpbkxhYmVscyA9IHRydWUpOwogCiAgIC8vLyBSZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIGxhbmRpbmcgcGFkIGluZm8gZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgogICBjb25zdCBzdGQ6OnZlY3RvcjxMYW5kaW5nUGFkSW5mbz4gJmdldExhbmRpbmdQYWRzKCkgY29uc3QgewpAQCAtODUzLDYgKzg1OCwyMiBAQAogICAvLy8gTWFwIHRoZSBsYW5kaW5nIHBhZCdzIEVIIHN5bWJvbCB0byB0aGUgY2FsbCBzaXRlIGluZGV4ZXMuCiAgIHZvaWQgc2V0Q2FsbFNpdGVMYW5kaW5nUGFkKE1DU3ltYm9sICpTeW0sIEFycmF5UmVmPHVuc2lnbmVkPiBTaXRlcyk7CiAKKyAgLy8vIE1hcCB0aGUgbGFuZGluZyBwYWQgdG8gaXRzIGluZGV4LiBVc2VkIGZvciBXYXNtIGV4Y2VwdGlvbiBoYW5kbGluZy4KKyAgdm9pZCBzZXRXYXNtTGFuZGluZ1BhZEluZGV4KGNvbnN0IE1hY2hpbmVCYXNpY0Jsb2NrICpMUGFkLCB1bnNpZ25lZCBJbmRleCkgeworICAgIFdhc21MUGFkVG9JbmRleE1hcFtMUGFkXSA9IEluZGV4OworICB9CisKKyAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgbGFuZGluZyBwYWQgaGFzIGFuIGFzc29jaWF0ZSBpbmRleCBpbiB3YXNtIEVILgorICBib29sIGhhc1dhc21MYW5kaW5nUGFkSW5kZXgoY29uc3QgTWFjaGluZUJhc2ljQmxvY2sgKkxQYWQpIGNvbnN0IHsKKyAgICByZXR1cm4gV2FzbUxQYWRUb0luZGV4TWFwLmNvdW50KExQYWQpOworICB9CisKKyAgLy8vIEdldCB0aGUgaW5kZXggaW4gd2FzbSBFSCBmb3IgYSBnaXZlbiBsYW5kaW5nIHBhZC4KKyAgdW5zaWduZWQgZ2V0V2FzbUxhbmRpbmdQYWRJbmRleChjb25zdCBNYWNoaW5lQmFzaWNCbG9jayAqTFBhZCkgY29uc3QgeworICAgIGFzc2VydChoYXNXYXNtTGFuZGluZ1BhZEluZGV4KExQYWQpKTsKKyAgICByZXR1cm4gV2FzbUxQYWRUb0luZGV4TWFwLmxvb2t1cChMUGFkKTsKKyAgfQorCiAgIC8vLyBHZXQgdGhlIGNhbGwgc2l0ZSBpbmRleGVzIGZvciBhIGxhbmRpbmcgcGFkIEVIIHN5bWJvbC4KICAgU21hbGxWZWN0b3JJbXBsPHVuc2lnbmVkPiAmZ2V0Q2FsbFNpdGVMYW5kaW5nUGFkKE1DU3ltYm9sICpTeW0pIHsKICAgICBhc3NlcnQoaGFzQ2FsbFNpdGVMYW5kaW5nUGFkKFN5bSkgJiYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lRnVuY3Rpb25QYXNzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZUZ1bmN0aW9uUGFzcy5oCmluZGV4IDZkOTc4ZGEuLmNhYWYyMmMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lRnVuY3Rpb25QYXNzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVGdW5jdGlvblBhc3MuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gTWFjaGluZUZ1bmN0aW9uUGFzcy5oIC0gUGFzcyBmb3IgTWFjaGluZUZ1bmN0aW9ucyAtLS0tLS0tLSotQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVJbnN0ci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVJbnN0ci5oCmluZGV4IDdjNGU3NzEuLjRjYjM5YzUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lSW5zdHIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZUluc3RyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9Db2RlR2VuL01hY2hpbmVJbnN0ci5oIC0gTWFjaGluZUluc3RyIGNsYXNzIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTQwOCw3ICs0MDcsNyBAQAogICAvLy8gUmV0dXJucyB0aGUgb3Bjb2RlIG9mIHRoaXMgTWFjaGluZUluc3RyLgogICB1bnNpZ25lZCBnZXRPcGNvZGUoKSBjb25zdCB7IHJldHVybiBNQ0lELT5PcGNvZGU7IH0KIAotICAvLy8gQWNjZXNzIHRvIGV4cGxpY2l0IG9wZXJhbmRzIG9mIHRoZSBpbnN0cnVjdGlvbi4KKyAgLy8vIFJldHVucyB0aGUgdG90YWwgbnVtYmVyIG9mIG9wZXJhbmRzLgogICB1bnNpZ25lZCBnZXROdW1PcGVyYW5kcygpIGNvbnN0IHsgcmV0dXJuIE51bU9wZXJhbmRzOyB9CiAKICAgY29uc3QgTWFjaGluZU9wZXJhbmQmIGdldE9wZXJhbmQodW5zaWduZWQgaSkgY29uc3QgewpAQCAtMTAxMiwxMCArMTAxMSwxMyBAQAogICB9CiAgIGJvb2wgaXNLaWxsKCkgY29uc3QgeyByZXR1cm4gZ2V0T3Bjb2RlKCkgPT0gVGFyZ2V0T3Bjb2RlOjpLSUxMOyB9CiAgIGJvb2wgaXNJbXBsaWNpdERlZigpIGNvbnN0IHsgcmV0dXJuIGdldE9wY29kZSgpPT1UYXJnZXRPcGNvZGU6OklNUExJQ0lUX0RFRjsgfQotICBib29sIGlzSW5saW5lQXNtKCkgY29uc3QgeyByZXR1cm4gZ2V0T3Bjb2RlKCkgPT0gVGFyZ2V0T3Bjb2RlOjpJTkxJTkVBU007IH0KKyAgYm9vbCBpc0lubGluZUFzbSgpIGNvbnN0IHsKKyAgICByZXR1cm4gZ2V0T3Bjb2RlKCkgPT0gVGFyZ2V0T3Bjb2RlOjpJTkxJTkVBU00gfHwKKyAgICAgICAgICAgZ2V0T3Bjb2RlKCkgPT0gVGFyZ2V0T3Bjb2RlOjpJTkxJTkVBU01fQlI7CisgIH0KIAogICBib29sIGlzTVNJbmxpbmVBc20oKSBjb25zdCB7Ci0gICAgcmV0dXJuIGdldE9wY29kZSgpID09IFRhcmdldE9wY29kZTo6SU5MSU5FQVNNICYmIGdldElubGluZUFzbURpYWxlY3QoKTsKKyAgICByZXR1cm4gaXNJbmxpbmVBc20oKSAmJiBnZXRJbmxpbmVBc21EaWFsZWN0KCkgPT0gSW5saW5lQXNtOjpBRF9JbnRlbDsKICAgfQogCiAgIGJvb2wgaXNTdGFja0FsaWduaW5nSW5saW5lQXNtKCkgY29uc3Q7CkBAIC0xNDAwLDYgKzE0MDIsMTkgQEAKICAgLy8vIFJldHVybiB0cnVlIGlmIGFsbCB0aGUgZGVmcyBvZiB0aGlzIGluc3RydWN0aW9uIGFyZSBkZWFkLgogICBib29sIGFsbERlZnNBcmVEZWFkKCkgY29uc3Q7CiAKKyAgLy8vIFJldHVybiBhIHZhbGlkIHNpemUgaWYgdGhlIGluc3RydWN0aW9uIGlzIGEgc3BpbGwgaW5zdHJ1Y3Rpb24uCisgIE9wdGlvbmFsPHVuc2lnbmVkPiBnZXRTcGlsbFNpemUoY29uc3QgVGFyZ2V0SW5zdHJJbmZvICpUSUkpIGNvbnN0OworCisgIC8vLyBSZXR1cm4gYSB2YWxpZCBzaXplIGlmIHRoZSBpbnN0cnVjdGlvbiBpcyBhIGZvbGRlZCBzcGlsbCBpbnN0cnVjdGlvbi4KKyAgT3B0aW9uYWw8dW5zaWduZWQ+IGdldEZvbGRlZFNwaWxsU2l6ZShjb25zdCBUYXJnZXRJbnN0ckluZm8gKlRJSSkgY29uc3Q7CisKKyAgLy8vIFJldHVybiBhIHZhbGlkIHNpemUgaWYgdGhlIGluc3RydWN0aW9uIGlzIGEgcmVzdG9yZSBpbnN0cnVjdGlvbi4KKyAgT3B0aW9uYWw8dW5zaWduZWQ+IGdldFJlc3RvcmVTaXplKGNvbnN0IFRhcmdldEluc3RySW5mbyAqVElJKSBjb25zdDsKKworICAvLy8gUmV0dXJuIGEgdmFsaWQgc2l6ZSBpZiB0aGUgaW5zdHJ1Y3Rpb24gaXMgYSBmb2xkZWQgcmVzdG9yZSBpbnN0cnVjdGlvbi4KKyAgT3B0aW9uYWw8dW5zaWduZWQ+CisgIGdldEZvbGRlZFJlc3RvcmVTaXplKGNvbnN0IFRhcmdldEluc3RySW5mbyAqVElJKSBjb25zdDsKKwogICAvLy8gQ29weSBpbXBsaWNpdCByZWdpc3RlciBvcGVyYW5kcyBmcm9tIHNwZWNpZmllZAogICAvLy8gaW5zdHJ1Y3Rpb24gdG8gdGhpcyBpbnN0cnVjdGlvbi4KICAgdm9pZCBjb3B5SW1wbGljaXRPcHMoTWFjaGluZUZ1bmN0aW9uICZNRiwgY29uc3QgTWFjaGluZUluc3RyICZNSSk7CkBAIC0xNTI2LDYgKzE1NDEsOCBAQAogICAvLy8gbm90IG1vZGlmeSB0aGUgTUlGbGFncyBvZiB0aGlzIE1hY2hpbmVJbnN0ci4KICAgdWludDE2X3QgbWVyZ2VGbGFnc1dpdGgoY29uc3QgTWFjaGluZUluc3RyJiBPdGhlcikgY29uc3Q7CiAKKyAgc3RhdGljIHVpbnQxNl90IGNvcHlGbGFnc0Zyb21JbnN0cnVjdGlvbihjb25zdCBJbnN0cnVjdGlvbiAmSSk7CisKICAgLy8vIENvcHkgYWxsIGZsYWdzIHRvIE1hY2hpbmVJbnN0IE1JRmxhZ3MKICAgdm9pZCBjb3B5SVJGbGFncyhjb25zdCBJbnN0cnVjdGlvbiAmSSk7CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lSW5zdHJCdWlsZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZUluc3RyQnVpbGRlci5oCmluZGV4IGI1ZTUyM2YuLjRhOGNkNjggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lSW5zdHJCdWlsZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVJbnN0ckJ1aWxkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDb2RlR2VuL01hY2hpbmVJbnN0ckJ1aWxkZXIuaCAtIFNpbXBsaWZ5IGNyZWF0aW9uIG9mIE1JcyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTgwLDYgKzc5LDExIEBACiAgIC8vLyBleHBsaWNpdGx5LgogICBNYWNoaW5lSW5zdHIgKmdldEluc3RyKCkgY29uc3QgeyByZXR1cm4gTUk7IH0KIAorICAvLy8gR2V0IHRoZSByZWdpc3RlciBmb3IgdGhlIG9wZXJhbmQgaW5kZXguCisgIC8vLyBUaGUgb3BlcmFuZCBhdCB0aGUgaW5kZXggc2hvdWxkIGJlIGEgcmVnaXN0ZXIgKGFzc2VydGVkIGJ5CisgIC8vLyBNYWNoaW5lT3BlcmFuZCkuCisgIHVuc2lnbmVkIGdldFJlZyh1bnNpZ25lZCBJZHgpIHsgcmV0dXJuIE1JLT5nZXRPcGVyYW5kKElkeCkuZ2V0UmVnKCk7IH0KKwogICAvLy8gQWRkIGEgbmV3IHZpcnR1YWwgcmVnaXN0ZXIgb3BlcmFuZC4KICAgY29uc3QgTWFjaGluZUluc3RyQnVpbGRlciAmYWRkUmVnKHVuc2lnbmVkIFJlZ05vLCB1bnNpZ25lZCBmbGFncyA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBTdWJSZWcgPSAwKSBjb25zdCB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZUluc3RyQnVuZGxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZUluc3RyQnVuZGxlLmgKaW5kZXggYjUzNDFmZC4uOWJiNWI2MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVJbnN0ckJ1bmRsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lSW5zdHJCdW5kbGUuaApAQCAtMSw5ICsxLDggQEAKLS8vPT09LS0gQ29kZUdlbi9NYWNoaW5lSW5zdEJ1bmRsZS5oIC0gTUkgYnVuZGxlIHV0aWxpdGllcyAtLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLz09PS0gbGx2bS9Db2RlR2VuL01hY2hpbmVJbnN0ckJ1bmRsZS5oIC0gTUkgYnVuZGxlIHV0aWxpdGllcyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lSW5zdHJCdW5kbGVJdGVyYXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVJbnN0ckJ1bmRsZUl0ZXJhdG9yLmgKaW5kZXggNWZlNDk2NC4uMGY1OTU2MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVJbnN0ckJ1bmRsZUl0ZXJhdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVJbnN0ckJ1bmRsZUl0ZXJhdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9Db2RlR2VuL01hY2hpbmVJbnN0ckJ1bmRsZUl0ZXJhdG9yLmggLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lSnVtcFRhYmxlSW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVKdW1wVGFibGVJbmZvLmgKaW5kZXggMjVhM2U2Yi4uMTE3ODExNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVKdW1wVGFibGVJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVKdW1wVGFibGVJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIENvZGVHZW4vTWFjaGluZUp1bXBUYWJsZUluZm8uaCAtIEFic3RyYWN0IEp1bXAgVGFibGVzICAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lTG9vcEluZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lTG9vcEluZm8uaAppbmRleCA5MTdmYjkwLi5kYTZkZjU5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZUxvb3BJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVMb29wSW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ29kZUdlbi9NYWNoaW5lTG9vcEluZm8uaCAtIE5hdHVyYWwgTG9vcCBDYWxjdWxhdG9yIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZU1lbU9wZXJhbmQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lTWVtT3BlcmFuZC5oCmluZGV4IDA3OGVmN2MuLjEyZmFlMmYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lTWVtT3BlcmFuZC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lTWVtT3BlcmFuZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0gbGx2bS9Db2RlR2VuL01hY2hpbmVNZW1PcGVyYW5kLmggLSBNYWNoaW5lTWVtT3BlcmFuZCBjbGFzcyAtKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yNjcsMTMgKzI2NiwxMyBAQAogICBib29sIGlzQXRvbWljKCkgY29uc3QgeyByZXR1cm4gZ2V0T3JkZXJpbmcoKSAhPSBBdG9taWNPcmRlcmluZzo6Tm90QXRvbWljOyB9CiAKICAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIG1lbW9yeSBvcGVyYXRpb24gZG9lc24ndCBoYXZlIGFueSBvcmRlcmluZwotICAvLy8gY29uc3RyYWludHMgb3RoZXIgdGhhbiBub3JtYWwgYWxpYXNpbmcuIFZvbGF0aWxlIGFuZCBhdG9taWMgbWVtb3J5Ci0gIC8vLyBvcGVyYXRpb25zIGNhbid0IGJlIHJlb3JkZXJlZC4KLSAgLy8vCi0gIC8vLyBDdXJyZW50bHksIHdlIGRvbid0IG1vZGVsIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdm9sYXRpbGUgYW5kIGF0b21pYwotICAvLy8gb3BlcmF0aW9ucy4gVGhleSBzaG91bGQgcmV0YWluIHRoZWlyIG9yZGVyaW5nIHJlbGF0aXZlIHRvIGFsbCBtZW1vcnkKLSAgLy8vIG9wZXJhdGlvbnMuCi0gIGJvb2wgaXNVbm9yZGVyZWQoKSBjb25zdCB7IHJldHVybiAhaXNWb2xhdGlsZSgpOyB9CisgIC8vLyBjb25zdHJhaW50cyBvdGhlciB0aGFuIG5vcm1hbCBhbGlhc2luZy4gVm9sYXRpbGUgYW5kIChvcmRlcmVkKSBhdG9taWMKKyAgLy8vIG1lbW9yeSBvcGVyYXRpb25zIGNhbid0IGJlIHJlb3JkZXJlZC4gCisgIGJvb2wgaXNVbm9yZGVyZWQoKSBjb25zdCB7CisgICAgcmV0dXJuIChnZXRPcmRlcmluZygpID09IEF0b21pY09yZGVyaW5nOjpOb3RBdG9taWMgfHwKKyAgICAgICAgICAgIGdldE9yZGVyaW5nKCkgPT0gQXRvbWljT3JkZXJpbmc6OlVub3JkZXJlZCkgJiYKKyAgICAgICAgICAgIWlzVm9sYXRpbGUoKTsKKyAgfQogCiAgIC8vLyBVcGRhdGUgdGhpcyBNYWNoaW5lTWVtT3BlcmFuZCB0byByZWZsZWN0IHRoZSBhbGlnbm1lbnQgb2YgTU1PLCBpZiBpdCBoYXMgYQogICAvLy8gZ3JlYXRlciBhbGlnbm1lbnQuIFRoaXMgbXVzdCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgbmV3IGFsaWdubWVudCBhcHBsaWVzCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZU1vZHVsZUluZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lTW9kdWxlSW5mby5oCmluZGV4IDU1NGU4OTAuLjliODFkYzYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lTW9kdWxlSW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lTW9kdWxlSW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0NvZGVHZW4vTWFjaGluZU1vZHVsZUluZm8uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00NiwxMCArNDUsMTAgQEAKIGNsYXNzIEJhc2ljQmxvY2s7CiBjbGFzcyBDYWxsSW5zdDsKIGNsYXNzIEZ1bmN0aW9uOwotY2xhc3MgTWFjaGluZUZ1bmN0aW9uOworY2xhc3MgTExWTVRhcmdldE1hY2hpbmU7CiBjbGFzcyBNTUlBZGRyTGFiZWxNYXA7CitjbGFzcyBNYWNoaW5lRnVuY3Rpb247CiBjbGFzcyBNb2R1bGU7Ci1jbGFzcyBUYXJnZXRNYWNoaW5lOwogCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFRoaXMgY2xhc3MgY2FuIGJlIGRlcml2ZWQgZnJvbSBhbmQgdXNlZCBieSB0YXJnZXRzIHRvIGhvbGQgcHJpdmF0ZQpAQCAtNzYsNyArNzUsNyBAQAogLy8vIGZvciBzcGVjaWZpYyB1c2UuCiAvLy8KIGNsYXNzIE1hY2hpbmVNb2R1bGVJbmZvIDogcHVibGljIEltbXV0YWJsZVBhc3MgewotICBjb25zdCBUYXJnZXRNYWNoaW5lICZUTTsKKyAgY29uc3QgTExWTVRhcmdldE1hY2hpbmUgJlRNOwogCiAgIC8vLyBUaGlzIGlzIHRoZSBNQ0NvbnRleHQgdXNlZCBmb3IgdGhlIGVudGlyZSBjb2RlIGdlbmVyYXRvci4KICAgTUNDb250ZXh0IENvbnRleHQ7CkBAIC0xMTQsMTAgKzExMyw5IEBACiAgIC8vLyBUcnVlIGlmIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhpcyBtb2R1bGUuCiAgIGJvb2wgRGJnSW5mb0F2YWlsYWJsZTsKIAotICAvLy8gVHJ1ZSBpZiB0aGlzIG1vZHVsZSBjYWxscyBWYXJBcmcgZnVuY3Rpb24gd2l0aCBmbG9hdGluZy1wb2ludCBhcmd1bWVudHMuCi0gIC8vLyBUaGlzIGlzIHVzZWQgdG8gZW1pdCBhbiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIF9mbHR1c2VkIG9uIFdpbmRvd3MKLSAgLy8vIHRhcmdldHMuCi0gIGJvb2wgVXNlc1ZBRmxvYXRBcmd1bWVudDsKKyAgLy8vIFRydWUgaWYgdGhpcyBtb2R1bGUgaXMgYmVpbmcgYnVpbHQgZm9yIHdpbmRvd3MvbXN2YywgYW5kIHVzZXMgZmxvYXRpbmcKKyAgLy8vIHBvaW50LiAgVGhpcyBpcyB1c2VkIHRvIGVtaXQgYW4gdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBfZmx0dXNlZC4KKyAgYm9vbCBVc2VzTVNWQ0Zsb2F0aW5nUG9pbnQ7CiAKICAgLy8vIFRydWUgaWYgdGhlIG1vZHVsZSBjYWxscyB0aGUgX19tb3Jlc3RhY2sgZnVuY3Rpb24gaW5kaXJlY3RseSwgYXMgaXMKICAgLy8vIHJlcXVpcmVkIHVuZGVyIHRoZSBsYXJnZSBjb2RlIG1vZGVsIG9uIHg4Ni4gVGhpcyBpcyB1c2VkIHRvIGVtaXQKQEAgLTE0NSw3ICsxNDMsNyBAQAogcHVibGljOgogICBzdGF0aWMgY2hhciBJRDsgLy8gUGFzcyBpZGVudGlmaWNhdGlvbiwgcmVwbGFjZW1lbnQgZm9yIHR5cGVpZAogCi0gIGV4cGxpY2l0IE1hY2hpbmVNb2R1bGVJbmZvKGNvbnN0IFRhcmdldE1hY2hpbmUgKlRNID0gbnVsbHB0cik7CisgIGV4cGxpY2l0IE1hY2hpbmVNb2R1bGVJbmZvKGNvbnN0IExMVk1UYXJnZXRNYWNoaW5lICpUTSA9IG51bGxwdHIpOwogICB+TWFjaGluZU1vZHVsZUluZm8oKSBvdmVycmlkZTsKIAogICAvLyBJbml0aWFsaXphdGlvbiBhbmQgRmluYWxpemF0aW9uCkBAIC0xODcsMTMgKzE4NSw5IEBACiAgIGJvb2wgaGFzRGVidWdJbmZvKCkgY29uc3QgeyByZXR1cm4gRGJnSW5mb0F2YWlsYWJsZTsgfQogICB2b2lkIHNldERlYnVnSW5mb0F2YWlsYWJpbGl0eShib29sIGF2YWlsKSB7IERiZ0luZm9BdmFpbGFibGUgPSBhdmFpbDsgfQogCi0gIGJvb2wgdXNlc1ZBRmxvYXRBcmd1bWVudCgpIGNvbnN0IHsKLSAgICByZXR1cm4gVXNlc1ZBRmxvYXRBcmd1bWVudDsKLSAgfQorICBib29sIHVzZXNNU1ZDRmxvYXRpbmdQb2ludCgpIGNvbnN0IHsgcmV0dXJuIFVzZXNNU1ZDRmxvYXRpbmdQb2ludDsgfQogCi0gIHZvaWQgc2V0VXNlc1ZBRmxvYXRBcmd1bWVudChib29sIGIpIHsKLSAgICBVc2VzVkFGbG9hdEFyZ3VtZW50ID0gYjsKLSAgfQorICB2b2lkIHNldFVzZXNNU1ZDRmxvYXRpbmdQb2ludChib29sIGIpIHsgVXNlc01TVkNGbG9hdGluZ1BvaW50ID0gYjsgfQogCiAgIGJvb2wgdXNlc01vcmVzdGFja0FkZHIoKSBjb25zdCB7CiAgICAgcmV0dXJuIFVzZXNNb3Jlc3RhY2tBZGRyOwpAQCAtMjU4LDE0ICsyNTIsNiBAQAogICAvLy8gXH0KIH07IC8vIEVuZCBjbGFzcyBNYWNoaW5lTW9kdWxlSW5mbwogCi0vLz09PS0gTU1JIGJ1aWxkaW5nIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotCi0vLy8gRGV0ZXJtaW5lIGlmIGFueSBmbG9hdGluZy1wb2ludCB2YWx1ZXMgYXJlIGJlaW5nIHBhc3NlZCB0byB0aGlzIHZhcmlhZGljCi0vLy8gZnVuY3Rpb24sIGFuZCBzZXQgdGhlIE1hY2hpbmVNb2R1bGVJbmZvJ3MgdXNlc1ZBRmxvYXRBcmd1bWVudCBmbGFnIGlmIHNvLgotLy8vIFRoaXMgZmxhZyBpcyB1c2VkIHRvIGVtaXQgYW4gdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBfZmx0dXNlZCBvbiBXaW5kb3dzLAotLy8vIHdoaWNoIHdpbGwgbGluayBpbiBNU1ZDUlQncyBmbG9hdGluZy1wb2ludCBzdXBwb3J0Lgotdm9pZCBjb21wdXRlVXNlc1ZBRmxvYXRBcmd1bWVudChjb25zdCBDYWxsSW5zdCAmSSwgTWFjaGluZU1vZHVsZUluZm8gJk1NSSk7Ci0KIH0gLy8gZW5kIG5hbWVzcGFjZSBsbHZtCiAKICNlbmRpZiAvLyBMTFZNX0NPREVHRU5fTUFDSElORU1PRFVMRUlORk9fSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVNb2R1bGVJbmZvSW1wbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lTW9kdWxlSW5mb0ltcGxzLmgKaW5kZXggMTdkZjFmYS4uNzQ2ZTkyMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVNb2R1bGVJbmZvSW1wbHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZU1vZHVsZUluZm9JbXBscy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ29kZUdlbi9NYWNoaW5lTW9kdWxlSW5mb0ltcGxzLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZU9wZXJhbmQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lT3BlcmFuZC5oCmluZGV4IDUzZTg4ODkuLmRkY2RjMDcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lT3BlcmFuZC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lT3BlcmFuZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0NvZGVHZW4vTWFjaGluZU9wZXJhbmQuaCAtIE1hY2hpbmVPcGVyYW5kIGNsYXNzIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZU9wdGltaXphdGlvblJlbWFya0VtaXR0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lT3B0aW1pemF0aW9uUmVtYXJrRW1pdHRlci5oCmluZGV4IGE3Y2U4NzAuLjlhMGZkNTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lT3B0aW1pemF0aW9uUmVtYXJrRW1pdHRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lT3B0aW1pemF0aW9uUmVtYXJrRW1pdHRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy8vPT09LSBNYWNoaW5lT3B0aW1pemF0aW9uUmVtYXJrRW1pdHRlci5oIC0gT3B0IERpYWdub3N0aWNzIC0qLSBDKysgLSotLS0tPT09Ly8KIC8vLwotLy8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vLwotLy8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vLwogLy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVPdXRsaW5lci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVPdXRsaW5lci5oCmluZGV4IDk1YmZjMjQuLjM3N2RmNGUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lT3V0bGluZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZU91dGxpbmVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLS0gTWFjaGluZU91dGxpbmVyLmggLSBPdXRsaW5lciBkYXRhIHN0cnVjdHVyZXMgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KQEAgLTYxLDkgKzYwLDYgQEAKICAgLy8vIFxwIE91dGxpbmVkRnVuY3Rpb25zLgogICB1bnNpZ25lZCBGdW5jdGlvbklkeDsKIAotICAvLy8gU2V0IHRvIGZhbHNlIGlmIHRoZSBjYW5kaWRhdGUgb3ZlcmxhcHBlZCB3aXRoIGFub3RoZXIgY2FuZGlkYXRlLgotICBib29sIEluQ2FuZGlkYXRlTGlzdCA9IHRydWU7Ci0KICAgLy8vIElkZW50aWZpZXIgZGVub3RpbmcgdGhlIGluc3RydWN0aW9ucyB0byBlbWl0IHRvIGNhbGwgYW4gb3V0bGluZWQgZnVuY3Rpb24KICAgLy8vIGZyb20gdGhpcyBwb2ludC4gRGVmaW5lZCBieSB0aGUgdGFyZ2V0LgogICB1bnNpZ25lZCBDYWxsQ29uc3RydWN0aW9uSUQ7CkBAIC04Miw2ICs3OCwxMiBAQAogICAvLy8gYmVlbiB1c2VkIGFjcm9zcyB0aGUgc2VxdWVuY2UuCiAgIExpdmVSZWdVbml0cyBVc2VkSW5TZXF1ZW5jZTsKIAorICAvLy8gVGFyZ2V0LXNwZWNpZmljIGZsYWdzIGZvciB0aGlzIENhbmRpZGF0ZSdzIE1CQi4KKyAgdW5zaWduZWQgRmxhZ3MgPSAweDA7CisKKyAgLy8vIFRydWUgaWYgaW5pdExSVSBoYXMgYmVlbiBjYWxsZWQgb24gdGhpcyBDYW5kaWRhdGUuCisgIGJvb2wgTFJVV2FzU2V0ID0gZmFsc2U7CisKICAgLy8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBpbiB0aGlzIENhbmRpZGF0ZS4KICAgdW5zaWduZWQgZ2V0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gTGVuOyB9CiAKQEAgLTk5LDkgKzEwMSw3IEBACiAgIH0KIAogICAvLy8gUmV0dXJucyB0aGUgY2FsbCBvdmVyaGVhZCBvZiB0aGlzIGNhbmRpZGF0ZSBpZiBpdCBpcyBpbiB0aGUgbGlzdC4KLSAgdW5zaWduZWQgZ2V0Q2FsbE92ZXJoZWFkKCkgY29uc3QgewotICAgIHJldHVybiBJbkNhbmRpZGF0ZUxpc3QgPyBDYWxsT3ZlcmhlYWQgOiAwOwotICB9CisgIHVuc2lnbmVkIGdldENhbGxPdmVyaGVhZCgpIGNvbnN0IHsgcmV0dXJuIENhbGxPdmVyaGVhZDsgfQogCiAgIE1hY2hpbmVCYXNpY0Jsb2NrOjppdGVyYXRvciAmZnJvbnQoKSB7IHJldHVybiBGaXJzdEluc3Q7IH0KICAgTWFjaGluZUJhc2ljQmxvY2s6Oml0ZXJhdG9yICZiYWNrKCkgeyByZXR1cm4gTGFzdEluc3Q7IH0KQEAgLTEyMCw5ICsxMjAsOSBAQAogICBDYW5kaWRhdGUodW5zaWduZWQgU3RhcnRJZHgsIHVuc2lnbmVkIExlbiwKICAgICAgICAgICAgIE1hY2hpbmVCYXNpY0Jsb2NrOjppdGVyYXRvciAmRmlyc3RJbnN0LAogICAgICAgICAgICAgTWFjaGluZUJhc2ljQmxvY2s6Oml0ZXJhdG9yICZMYXN0SW5zdCwgTWFjaGluZUJhc2ljQmxvY2sgKk1CQiwKLSAgICAgICAgICAgIHVuc2lnbmVkIEZ1bmN0aW9uSWR4KQorICAgICAgICAgICAgdW5zaWduZWQgRnVuY3Rpb25JZHgsIHVuc2lnbmVkIEZsYWdzKQogICAgICAgOiBTdGFydElkeChTdGFydElkeCksIExlbihMZW4pLCBGaXJzdEluc3QoRmlyc3RJbnN0KSwgTGFzdEluc3QoTGFzdEluc3QpLAotICAgICAgICBNQkIoTUJCKSwgRnVuY3Rpb25JZHgoRnVuY3Rpb25JZHgpIHt9CisgICAgICAgIE1CQihNQkIpLCBGdW5jdGlvbklkeChGdW5jdGlvbklkeCksIEZsYWdzKEZsYWdzKSB7fQogICBDYW5kaWRhdGUoKSB7fQogCiAgIC8vLyBVc2VkIHRvIGVuc3VyZSB0aGF0IFxwIENhbmRpZGF0ZXMgYXJlIG91dGxpbmVkIGluIGFuIG9yZGVyIHRoYXQKQEAgLTEzOCw2ICsxMzgsMTAgQEAKICAgdm9pZCBpbml0TFJVKGNvbnN0IFRhcmdldFJlZ2lzdGVySW5mbyAmVFJJKSB7CiAgICAgYXNzZXJ0KE1CQi0+Z2V0UGFyZW50KCktPmdldFJlZ0luZm8oKS50cmFja3NMaXZlbmVzcygpICYmCiAgICAgICAgICAgICJDYW5kaWRhdGUncyBNYWNoaW5lIEZ1bmN0aW9uIG11c3QgdHJhY2sgbGl2ZW5lc3MiKTsKKyAgICAvLyBPbmx5IGluaXRpYWxpemUgb25jZS4KKyAgICBpZiAoTFJVV2FzU2V0KQorICAgICAgcmV0dXJuOworICAgIExSVVdhc1NldCA9IHRydWU7CiAgICAgTFJVLmluaXQoVFJJKTsKICAgICBMUlUuYWRkTGl2ZU91dHMoKk1CQik7CiAKQEAgLTE1OCwyNCArMTYyLDEzIEBACiAvLy8gY2xhc3Mgb2YgY2FuZGlkYXRlLgogc3RydWN0IE91dGxpbmVkRnVuY3Rpb24gewogCi1wcml2YXRlOgotICAvLy8gVGhlIG51bWJlciBvZiBjYW5kaWRhdGVzIGZvciB0aGlzIFxwIE91dGxpbmVkRnVuY3Rpb24uCi0gIHVuc2lnbmVkIE9jY3VycmVuY2VDb3VudCA9IDA7Ci0KIHB1YmxpYzoKLSAgc3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPENhbmRpZGF0ZT4+IENhbmRpZGF0ZXM7CisgIHN0ZDo6dmVjdG9yPENhbmRpZGF0ZT4gQ2FuZGlkYXRlczsKIAogICAvLy8gVGhlIGFjdHVhbCBvdXRsaW5lZCBmdW5jdGlvbiBjcmVhdGVkLgogICAvLy8gVGhpcyBpcyBpbml0aWFsaXplZCBhZnRlciB3ZSBnbyB0aHJvdWdoIGFuZCBjcmVhdGUgdGhlIGFjdHVhbCBmdW5jdGlvbi4KICAgTWFjaGluZUZ1bmN0aW9uICpNRiA9IG51bGxwdHI7CiAKLSAgLy8vIEEgbnVtYmVyIGFzc2lnbmVkIHRvIHRoaXMgZnVuY3Rpb24gd2hpY2ggYXBwZWFycyBhdCB0aGUgZW5kIG9mIGl0cyBuYW1lLgotICB1bnNpZ25lZCBOYW1lOwotCi0gIC8vLyBUaGUgc2VxdWVuY2Ugb2YgaW50ZWdlcnMgY29ycmVzcG9uZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoaXMKLSAgLy8vIGZ1bmN0aW9uLgotICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZD4gU2VxdWVuY2U7Ci0KICAgLy8vIFJlcHJlc2VudHMgdGhlIHNpemUgb2YgYSBzZXF1ZW5jZSBpbiBieXRlcy4gKFNvbWUgaW5zdHJ1Y3Rpb25zIHZhcnkKICAgLy8vIHdpZGVseSBpbiBzaXplLCBzbyBqdXN0IGNvdW50aW5nIHRoZSBpbnN0cnVjdGlvbnMgaXNuJ3QgdmVyeSB1c2VmdWwuKQogICB1bnNpZ25lZCBTZXF1ZW5jZVNpemU7CkBAIC0xODcsNDkgKzE4MCw0MSBAQAogICB1bnNpZ25lZCBGcmFtZUNvbnN0cnVjdGlvbklEOwogCiAgIC8vLyBSZXR1cm4gdGhlIG51bWJlciBvZiBjYW5kaWRhdGVzIGZvciB0aGlzIFxwIE91dGxpbmVkRnVuY3Rpb24uCi0gIHVuc2lnbmVkIGdldE9jY3VycmVuY2VDb3VudCgpIHsgcmV0dXJuIE9jY3VycmVuY2VDb3VudDsgfQotCi0gIC8vLyBEZWNyZW1lbnQgdGhlIG9jY3VycmVuY2UgY291bnQgb2YgdGhpcyBPdXRsaW5lZEZ1bmN0aW9uIGFuZCByZXR1cm4gdGhlCi0gIC8vLyBuZXcgY291bnQuCi0gIHVuc2lnbmVkIGRlY3JlbWVudCgpIHsKLSAgICBhc3NlcnQoT2NjdXJyZW5jZUNvdW50ID4gMCAmJiAiQ2FuJ3QgZGVjcmVtZW50IGFuIGVtcHR5IGZ1bmN0aW9uISIpOwotICAgIE9jY3VycmVuY2VDb3VudC0tOwotICAgIHJldHVybiBnZXRPY2N1cnJlbmNlQ291bnQoKTsKLSAgfQorICB1bnNpZ25lZCBnZXRPY2N1cnJlbmNlQ291bnQoKSBjb25zdCB7IHJldHVybiBDYW5kaWRhdGVzLnNpemUoKTsgfQogCiAgIC8vLyBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBpdCB3b3VsZCB0YWtlIHRvIG91dGxpbmUgdGhpcwogICAvLy8gZnVuY3Rpb24uCi0gIHVuc2lnbmVkIGdldE91dGxpbmluZ0Nvc3QoKSB7CisgIHVuc2lnbmVkIGdldE91dGxpbmluZ0Nvc3QoKSBjb25zdCB7CiAgICAgdW5zaWduZWQgQ2FsbE92ZXJoZWFkID0gMDsKLSAgICBmb3IgKHN0ZDo6c2hhcmVkX3B0cjxDYW5kaWRhdGU+ICZDIDogQ2FuZGlkYXRlcykKLSAgICAgIENhbGxPdmVyaGVhZCArPSBDLT5nZXRDYWxsT3ZlcmhlYWQoKTsKKyAgICBmb3IgKGNvbnN0IENhbmRpZGF0ZSAmQyA6IENhbmRpZGF0ZXMpCisgICAgICBDYWxsT3ZlcmhlYWQgKz0gQy5nZXRDYWxsT3ZlcmhlYWQoKTsKICAgICByZXR1cm4gQ2FsbE92ZXJoZWFkICsgU2VxdWVuY2VTaXplICsgRnJhbWVPdmVyaGVhZDsKICAgfQogCiAgIC8vLyBSZXR1cm4gdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHVub3V0bGluZWQgc2VxdWVuY2VzLgotICB1bnNpZ25lZCBnZXROb3RPdXRsaW5lZENvc3QoKSB7IHJldHVybiBPY2N1cnJlbmNlQ291bnQgKiBTZXF1ZW5jZVNpemU7IH0KKyAgdW5zaWduZWQgZ2V0Tm90T3V0bGluZWRDb3N0KCkgY29uc3QgeworICAgIHJldHVybiBnZXRPY2N1cnJlbmNlQ291bnQoKSAqIFNlcXVlbmNlU2l6ZTsKKyAgfQogCiAgIC8vLyBSZXR1cm4gdGhlIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgdGhhdCB3b3VsZCBiZSBzYXZlZCBieSBvdXRsaW5pbmcKICAgLy8vIHRoaXMgZnVuY3Rpb24uCi0gIHVuc2lnbmVkIGdldEJlbmVmaXQoKSB7CisgIHVuc2lnbmVkIGdldEJlbmVmaXQoKSBjb25zdCB7CiAgICAgdW5zaWduZWQgTm90T3V0bGluZWRDb3N0ID0gZ2V0Tm90T3V0bGluZWRDb3N0KCk7CiAgICAgdW5zaWduZWQgT3V0bGluZWRDb3N0ID0gZ2V0T3V0bGluaW5nQ29zdCgpOwogICAgIHJldHVybiAoTm90T3V0bGluZWRDb3N0IDwgT3V0bGluZWRDb3N0KSA/IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBOb3RPdXRsaW5lZENvc3QgLSBPdXRsaW5lZENvc3Q7CiAgIH0KIAotICBPdXRsaW5lZEZ1bmN0aW9uKHN0ZDo6dmVjdG9yPENhbmRpZGF0ZT4gJkNhbmRzLAotICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFNlcXVlbmNlU2l6ZSwgdW5zaWduZWQgRnJhbWVPdmVyaGVhZCwKLSAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBGcmFtZUNvbnN0cnVjdGlvbklEKQotICAgICAgOiBTZXF1ZW5jZVNpemUoU2VxdWVuY2VTaXplKSwgRnJhbWVPdmVyaGVhZChGcmFtZU92ZXJoZWFkKSwKLSAgICAgICAgRnJhbWVDb25zdHJ1Y3Rpb25JRChGcmFtZUNvbnN0cnVjdGlvbklEKSB7Ci0gICAgT2NjdXJyZW5jZUNvdW50ID0gQ2FuZHMuc2l6ZSgpOwotICAgIGZvciAoQ2FuZGlkYXRlICZDIDogQ2FuZHMpCi0gICAgICBDYW5kaWRhdGVzLnB1c2hfYmFjayhzdGQ6Om1ha2Vfc2hhcmVkPG91dGxpbmVyOjpDYW5kaWRhdGU+KEMpKTsKKyAgLy8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBpbiB0aGlzIHNlcXVlbmNlLgorICB1bnNpZ25lZCBnZXROdW1JbnN0cnMoKSBjb25zdCB7IHJldHVybiBDYW5kaWRhdGVzWzBdLmdldExlbmd0aCgpOyB9CiAKLSAgICB1bnNpZ25lZCBCID0gZ2V0QmVuZWZpdCgpOwotICAgIGZvciAoc3RkOjpzaGFyZWRfcHRyPENhbmRpZGF0ZT4gJkMgOiBDYW5kaWRhdGVzKQotICAgICAgQy0+QmVuZWZpdCA9IEI7CisgIE91dGxpbmVkRnVuY3Rpb24oc3RkOjp2ZWN0b3I8Q2FuZGlkYXRlPiAmQ2FuZGlkYXRlcywgdW5zaWduZWQgU2VxdWVuY2VTaXplLAorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEZyYW1lT3ZlcmhlYWQsIHVuc2lnbmVkIEZyYW1lQ29uc3RydWN0aW9uSUQpCisgICAgICA6IENhbmRpZGF0ZXMoQ2FuZGlkYXRlcyksIFNlcXVlbmNlU2l6ZShTZXF1ZW5jZVNpemUpLAorICAgICAgICBGcmFtZU92ZXJoZWFkKEZyYW1lT3ZlcmhlYWQpLCBGcmFtZUNvbnN0cnVjdGlvbklEKEZyYW1lQ29uc3RydWN0aW9uSUQpIHsKKyAgICBjb25zdCB1bnNpZ25lZCBCID0gZ2V0QmVuZWZpdCgpOworICAgIGZvciAoQ2FuZGlkYXRlICZDIDogQ2FuZGlkYXRlcykKKyAgICAgIEMuQmVuZWZpdCA9IEI7CiAgIH0KIAogICBPdXRsaW5lZEZ1bmN0aW9uKCkge30KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lUGFzc1JlZ2lzdHJ5LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZVBhc3NSZWdpc3RyeS5oCmluZGV4IDNhYmEwYmIuLmY1YjM3MjMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lUGFzc1JlZ2lzdHJ5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVQYXNzUmVnaXN0cnkuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vTWFjaGluZVBhc3NSZWdpc3RyeS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjQsMjIgKzIzLDIwIEBACiAKIG5hbWVzcGFjZSBsbHZtIHsKIAotdXNpbmcgTWFjaGluZVBhc3NDdG9yID0gdm9pZCAqKCopKCk7Ci0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KIC8vLyBNYWNoaW5lUGFzc1JlZ2lzdHJ5TGlzdGVuZXIgLSBMaXN0ZW5lciB0byBhZGRzIGFuZCByZW1vdmFscyBvZiBub2RlcyBpbgogLy8vIHJlZ2lzdHJhdGlvbiBsaXN0LgogLy8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotY2xhc3MgTWFjaGluZVBhc3NSZWdpc3RyeUxpc3RlbmVyIHsKLSAgdmlydHVhbCB2b2lkIGFuY2hvcigpOwordGVtcGxhdGUgPGNsYXNzIFBhc3NDdG9yVHk+IGNsYXNzIE1hY2hpbmVQYXNzUmVnaXN0cnlMaXN0ZW5lciB7CisgIHZpcnR1YWwgdm9pZCBhbmNob3IoKSB7fQogCiBwdWJsaWM6CiAgIE1hY2hpbmVQYXNzUmVnaXN0cnlMaXN0ZW5lcigpID0gZGVmYXVsdDsKICAgdmlydHVhbCB+TWFjaGluZVBhc3NSZWdpc3RyeUxpc3RlbmVyKCkgPSBkZWZhdWx0OwogCi0gIHZpcnR1YWwgdm9pZCBOb3RpZnlBZGQoU3RyaW5nUmVmIE4sIE1hY2hpbmVQYXNzQ3RvciBDLCBTdHJpbmdSZWYgRCkgPSAwOworICB2aXJ0dWFsIHZvaWQgTm90aWZ5QWRkKFN0cmluZ1JlZiBOLCBQYXNzQ3RvclR5IEMsIFN0cmluZ1JlZiBEKSA9IDA7CiAgIHZpcnR1YWwgdm9pZCBOb3RpZnlSZW1vdmUoU3RyaW5nUmVmIE4pID0gMDsKIH07CiAKQEAgLTQ4LDE1ICs0NSwxNSBAQAogLy8vIE1hY2hpbmVQYXNzUmVnaXN0cnlOb2RlIC0gTWFjaGluZSBwYXNzIG5vZGUgc3RvcmVkIGluIHJlZ2lzdHJhdGlvbiBsaXN0LgogLy8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotY2xhc3MgTWFjaGluZVBhc3NSZWdpc3RyeU5vZGUgewordGVtcGxhdGUgPHR5cGVuYW1lIFBhc3NDdG9yVHk+IGNsYXNzIE1hY2hpbmVQYXNzUmVnaXN0cnlOb2RlIHsKIHByaXZhdGU6CiAgIE1hY2hpbmVQYXNzUmVnaXN0cnlOb2RlICpOZXh0ID0gbnVsbHB0cjsgLy8gTmV4dCBmdW5jdGlvbiBwYXNzIGluIGxpc3QuCiAgIFN0cmluZ1JlZiBOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgLy8gTmFtZSBvZiBmdW5jdGlvbiBwYXNzLgogICBTdHJpbmdSZWYgRGVzY3JpcHRpb247ICAgICAgICAgICAgICAgIC8vIERlc2NyaXB0aW9uIHN0cmluZy4KLSAgTWFjaGluZVBhc3NDdG9yIEN0b3I7ICAgICAgICAgICAgICAgICAvLyBGdW5jdGlvbiBwYXNzIGNyZWF0b3IuCisgIFBhc3NDdG9yVHkgQ3RvcjsgICAgICAgICAgICAgICAgICAgICAgLy8gUGFzcyBjcmVhdG9yLgogCiBwdWJsaWM6Ci0gIE1hY2hpbmVQYXNzUmVnaXN0cnlOb2RlKGNvbnN0IGNoYXIgKk4sIGNvbnN0IGNoYXIgKkQsIE1hY2hpbmVQYXNzQ3RvciBDKQorICBNYWNoaW5lUGFzc1JlZ2lzdHJ5Tm9kZShjb25zdCBjaGFyICpOLCBjb25zdCBjaGFyICpELCBQYXNzQ3RvclR5IEMpCiAgICAgICA6IE5hbWUoTiksIERlc2NyaXB0aW9uKEQpLCBDdG9yKEMpIHt9CiAKICAgLy8gQWNjZXNzb3JzCkBAIC02NCw3ICs2MSw3IEBACiAgIE1hY2hpbmVQYXNzUmVnaXN0cnlOb2RlICoqZ2V0TmV4dEFkZHJlc3MoKSAgICB7IHJldHVybiAmTmV4dDsgfQogICBTdHJpbmdSZWYgZ2V0TmFtZSgpICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgcmV0dXJuIE5hbWU7IH0KICAgU3RyaW5nUmVmIGdldERlc2NyaXB0aW9uKCkgICAgICAgICAgICBjb25zdCB7IHJldHVybiBEZXNjcmlwdGlvbjsgfQotICBNYWNoaW5lUGFzc0N0b3IgZ2V0Q3RvcigpICAgICAgICAgICAgICAgY29uc3QgeyByZXR1cm4gQ3RvcjsgfQorICBQYXNzQ3RvclR5IGdldEN0b3IoKSBjb25zdCB7IHJldHVybiBDdG9yOyB9CiAgIHZvaWQgc2V0TmV4dChNYWNoaW5lUGFzc1JlZ2lzdHJ5Tm9kZSAqTikgICAgICB7IE5leHQgPSBOOyB9CiB9OwogCkBAIC03MywxMSArNzAsMTIgQEAKIC8vLyBNYWNoaW5lUGFzc1JlZ2lzdHJ5IC0gVHJhY2sgdGhlIHJlZ2lzdHJhdGlvbiBvZiBtYWNoaW5lIHBhc3Nlcy4KIC8vLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLWNsYXNzIE1hY2hpbmVQYXNzUmVnaXN0cnkgewordGVtcGxhdGUgPHR5cGVuYW1lIFBhc3NDdG9yVHk+IGNsYXNzIE1hY2hpbmVQYXNzUmVnaXN0cnkgewogcHJpdmF0ZToKLSAgTWFjaGluZVBhc3NSZWdpc3RyeU5vZGUgKkxpc3Q7ICAgICAgICAvLyBMaXN0IG9mIHJlZ2lzdHJ5IG5vZGVzLgotICBNYWNoaW5lUGFzc0N0b3IgRGVmYXVsdDsgICAgICAgICAgICAgIC8vIERlZmF1bHQgZnVuY3Rpb24gcGFzcyBjcmVhdG9yLgotICBNYWNoaW5lUGFzc1JlZ2lzdHJ5TGlzdGVuZXIgKkxpc3RlbmVyOyAvLyBMaXN0ZW5lciBmb3IgbGlzdCBhZGRzIGFyZSByZW1vdmVzLgorICBNYWNoaW5lUGFzc1JlZ2lzdHJ5Tm9kZTxQYXNzQ3RvclR5PiAqTGlzdDsgLy8gTGlzdCBvZiByZWdpc3RyeSBub2Rlcy4KKyAgUGFzc0N0b3JUeSBEZWZhdWx0OyAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgZnVuY3Rpb24gcGFzcyBjcmVhdG9yLgorICBNYWNoaW5lUGFzc1JlZ2lzdHJ5TGlzdGVuZXI8UGFzc0N0b3JUeT4KKyAgICAgICpMaXN0ZW5lcjsgLy8gTGlzdGVuZXIgZm9yIGxpc3QgYWRkcyBhcmUgcmVtb3Zlcy4KIAogcHVibGljOgogICAvLyBOTyBDT05TVFJVQ1RPUiAtIHdlIGRvbid0IHdhbnQgc3RhdGljIGNvbnN0cnVjdG9yIG9yZGVyaW5nIHRvIG1lc3MKQEAgLTg1LDE5ICs4Myw0NyBAQAogCiAgIC8vIEFjY2Vzc29ycy4KICAgLy8KLSAgTWFjaGluZVBhc3NSZWdpc3RyeU5vZGUgKmdldExpc3QoKSAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gTGlzdDsgfQotICBNYWNoaW5lUGFzc0N0b3IgZ2V0RGVmYXVsdCgpICAgICAgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBEZWZhdWx0OyB9Ci0gIHZvaWQgc2V0RGVmYXVsdChNYWNoaW5lUGFzc0N0b3IgQykgICAgICAgICAgICAgICAgICAgIHsgRGVmYXVsdCA9IEM7IH0KLSAgdm9pZCBzZXREZWZhdWx0KFN0cmluZ1JlZiBOYW1lKTsKLSAgdm9pZCBzZXRMaXN0ZW5lcihNYWNoaW5lUGFzc1JlZ2lzdHJ5TGlzdGVuZXIgKkwpICAgICAgeyBMaXN0ZW5lciA9IEw7IH0KKyAgTWFjaGluZVBhc3NSZWdpc3RyeU5vZGU8UGFzc0N0b3JUeT4gKmdldExpc3QoKSB7IHJldHVybiBMaXN0OyB9CisgIFBhc3NDdG9yVHkgZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIERlZmF1bHQ7IH0KKyAgdm9pZCBzZXREZWZhdWx0KFBhc3NDdG9yVHkgQykgeyBEZWZhdWx0ID0gQzsgfQorICAvLy8gc2V0RGVmYXVsdCAtIFNldCB0aGUgZGVmYXVsdCBjb25zdHJ1Y3RvciBieSBuYW1lLgorICB2b2lkIHNldERlZmF1bHQoU3RyaW5nUmVmIE5hbWUpIHsKKyAgICBQYXNzQ3RvclR5IEN0b3IgPSBudWxscHRyOworICAgIGZvciAoTWFjaGluZVBhc3NSZWdpc3RyeU5vZGU8UGFzc0N0b3JUeT4gKlIgPSBnZXRMaXN0KCk7IFI7CisgICAgICAgICBSID0gUi0+Z2V0TmV4dCgpKSB7CisgICAgICBpZiAoUi0+Z2V0TmFtZSgpID09IE5hbWUpIHsKKyAgICAgICAgQ3RvciA9IFItPmdldEN0b3IoKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIGFzc2VydChDdG9yICYmICJVbnJlZ2lzdGVyZWQgcGFzcyBuYW1lIik7CisgICAgc2V0RGVmYXVsdChDdG9yKTsKKyAgfQorICB2b2lkIHNldExpc3RlbmVyKE1hY2hpbmVQYXNzUmVnaXN0cnlMaXN0ZW5lcjxQYXNzQ3RvclR5PiAqTCkgeyBMaXN0ZW5lciA9IEw7IH0KIAogICAvLy8gQWRkIC0gQWRkcyBhIGZ1bmN0aW9uIHBhc3MgdG8gdGhlIHJlZ2lzdHJhdGlvbiBsaXN0LgogICAvLy8KLSAgdm9pZCBBZGQoTWFjaGluZVBhc3NSZWdpc3RyeU5vZGUgKk5vZGUpOworICB2b2lkIEFkZChNYWNoaW5lUGFzc1JlZ2lzdHJ5Tm9kZTxQYXNzQ3RvclR5PiAqTm9kZSkgeworICAgIE5vZGUtPnNldE5leHQoTGlzdCk7CisgICAgTGlzdCA9IE5vZGU7CisgICAgaWYgKExpc3RlbmVyKQorICAgICAgTGlzdGVuZXItPk5vdGlmeUFkZChOb2RlLT5nZXROYW1lKCksIE5vZGUtPmdldEN0b3IoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTm9kZS0+Z2V0RGVzY3JpcHRpb24oKSk7CisgIH0KIAogICAvLy8gUmVtb3ZlIC0gUmVtb3ZlcyBhIGZ1bmN0aW9uIHBhc3MgZnJvbSB0aGUgcmVnaXN0cmF0aW9uIGxpc3QuCiAgIC8vLwotICB2b2lkIFJlbW92ZShNYWNoaW5lUGFzc1JlZ2lzdHJ5Tm9kZSAqTm9kZSk7CisgIHZvaWQgUmVtb3ZlKE1hY2hpbmVQYXNzUmVnaXN0cnlOb2RlPFBhc3NDdG9yVHk+ICpOb2RlKSB7CisgICAgZm9yIChNYWNoaW5lUGFzc1JlZ2lzdHJ5Tm9kZTxQYXNzQ3RvclR5PiAqKkkgPSAmTGlzdDsgKkk7CisgICAgICAgICBJID0gKCpJKS0+Z2V0TmV4dEFkZHJlc3MoKSkgeworICAgICAgaWYgKCpJID09IE5vZGUpIHsKKyAgICAgICAgaWYgKExpc3RlbmVyKQorICAgICAgICAgIExpc3RlbmVyLT5Ob3RpZnlSZW1vdmUoTm9kZS0+Z2V0TmFtZSgpKTsKKyAgICAgICAgKkkgPSAoKkkpLT5nZXROZXh0KCk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgfQogfTsKIAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KQEAgLTEwNSw5ICsxMzEsMTEgQEAKIC8vLyBSZWdpc3RlclBhc3NQYXJzZXIgY2xhc3MgLSBIYW5kbGUgdGhlIGFkZGl0aW9uIG9mIG5ldyBtYWNoaW5lIHBhc3Nlcy4KIC8vLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLXRlbXBsYXRlPGNsYXNzIFJlZ2lzdHJ5Q2xhc3M+Ci1jbGFzcyBSZWdpc3RlclBhc3NQYXJzZXIgOiBwdWJsaWMgTWFjaGluZVBhc3NSZWdpc3RyeUxpc3RlbmVyLAotICAgICAgICAgICAgICAgICAgIHB1YmxpYyBjbDo6cGFyc2VyPHR5cGVuYW1lIFJlZ2lzdHJ5Q2xhc3M6OkZ1bmN0aW9uUGFzc0N0b3I+IHsKK3RlbXBsYXRlIDxjbGFzcyBSZWdpc3RyeUNsYXNzPgorY2xhc3MgUmVnaXN0ZXJQYXNzUGFyc2VyCisgICAgOiBwdWJsaWMgTWFjaGluZVBhc3NSZWdpc3RyeUxpc3RlbmVyPAorICAgICAgICAgIHR5cGVuYW1lIFJlZ2lzdHJ5Q2xhc3M6OkZ1bmN0aW9uUGFzc0N0b3I+LAorICAgICAgcHVibGljIGNsOjpwYXJzZXI8dHlwZW5hbWUgUmVnaXN0cnlDbGFzczo6RnVuY3Rpb25QYXNzQ3Rvcj4gewogcHVibGljOgogICBSZWdpc3RlclBhc3NQYXJzZXIoY2w6Ok9wdGlvbiAmTykKICAgICAgIDogY2w6OnBhcnNlcjx0eXBlbmFtZSBSZWdpc3RyeUNsYXNzOjpGdW5jdGlvblBhc3NDdG9yPihPKSB7fQpAQCAtMTI5LDggKzE1Nyw5IEBACiAgIH0KIAogICAvLyBJbXBsZW1lbnQgdGhlIE1hY2hpbmVQYXNzUmVnaXN0cnlMaXN0ZW5lciBjYWxsYmFja3MuCi0gIHZvaWQgTm90aWZ5QWRkKFN0cmluZ1JlZiBOLCBNYWNoaW5lUGFzc0N0b3IgQywgU3RyaW5nUmVmIEQpIG92ZXJyaWRlIHsKLSAgICB0aGlzLT5hZGRMaXRlcmFsT3B0aW9uKE4sICh0eXBlbmFtZSBSZWdpc3RyeUNsYXNzOjpGdW5jdGlvblBhc3NDdG9yKUMsIEQpOworICB2b2lkIE5vdGlmeUFkZChTdHJpbmdSZWYgTiwgdHlwZW5hbWUgUmVnaXN0cnlDbGFzczo6RnVuY3Rpb25QYXNzQ3RvciBDLAorICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgRCkgb3ZlcnJpZGUgeworICAgIHRoaXMtPmFkZExpdGVyYWxPcHRpb24oTiwgQywgRCk7CiAgIH0KICAgdm9pZCBOb3RpZnlSZW1vdmUoU3RyaW5nUmVmIE4pIG92ZXJyaWRlIHsKICAgICB0aGlzLT5yZW1vdmVMaXRlcmFsT3B0aW9uKE4pOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVQaXBlbGluZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lUGlwZWxpbmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMwZTRiOQotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lUGlwZWxpbmVyLmgKQEAgLTAsMCArMSw2MTQgQEAKKy8vPT09LSBNYWNoaW5lUGlwZWxpbmVyLmggLSBNYWNoaW5lIFNvZnR3YXJlIFBpcGVsaW5lciBQYXNzIC0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTd2luZyBNb2R1bG8gU2NoZWR1bGluZyAoU01TKSBzb2Z0d2FyZSBwaXBlbGluZXIuCisvLworLy8gU29mdHdhcmUgcGlwZWxpbmluZyAoU1dQKSBpcyBhbiBpbnN0cnVjdGlvbiBzY2hlZHVsaW5nIHRlY2huaXF1ZSBmb3IgbG9vcHMKKy8vIHRoYXQgb3ZlcmxhcCBsb29wIGl0ZXJhdGlvbnMgYW5kIGV4cGxvaXRzIElMUCB2aWEgYSBjb21waWxlciB0cmFuc2Zvcm1hdGlvbi4KKy8vCisvLyBTd2luZyBNb2R1bG8gU2NoZWR1bGluZyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBzb2Z0d2FyZSBwaXBlbGluaW5nCisvLyB0aGF0IGdlbmVyYXRlcyBzY2hlZHVsZXMgdGhhdCBhcmUgbmVhciBvcHRpbWFsIGluIHRlcm1zIG9mIGluaXRpYXRpb24KKy8vIGludGVydmFsLCByZWdpc3RlciByZXF1aXJlbWVudHMsIGFuZCBzdGFnZSBjb3VudC4gU2VlIHRoZSBwYXBlcnM6CisvLworLy8gIlN3aW5nIE1vZHVsbyBTY2hlZHVsaW5nOiBBIExpZmV0aW1lLVNlbnNpdGl2ZSBBcHByb2FjaCIsIGJ5IEouIExsb3NhLAorLy8gQS4gR29uemFsZXosIEUuIEF5Z3VhZGUsIGFuZCBNLiBWYWxlcm8uIEluIFBBQ1QgJzk2IFByb2NlZWRpbmdzIG9mIHRoZSAxOTk2CisvLyBDb25mZXJlbmNlIG9uIFBhcmFsbGVsIEFyY2hpdGVjdHVyZXMgYW5kIENvbXBpbGF0aW9uIFRlY2hpbmlxdWVzLgorLy8KKy8vICJMaWZldGltZS1TZW5zaXRpdmUgTW9kdWxvIFNjaGVkdWxpbmcgaW4gYSBQcm9kdWN0aW9uIEVudmlyb25tZW50IiwgYnkgSi4KKy8vIExsb3NhLCBFLiBBeWd1YWRlLCBBLiBHb256YWxleiwgTS4gVmFsZXJvLCBhbmQgSi4gRWNraGFyZHQuIEluIElFRUUKKy8vIFRyYW5zYWN0aW9ucyBvbiBDb21wdXRlcnMsIFZvbC4gNTAsIE5vLiAzLCAyMDAxLgorLy8KKy8vICJBbiBJbXBsZW1lbnRhdGlvbiBvZiBTd2luZyBNb2R1bG8gU2NoZWR1bGluZyBXaXRoIEV4dGVuc2lvbnMgZm9yCisvLyBTdXBlcmJsb2NrcyIsIGJ5IFQuIExhdHRuZXIsIE1hc3RlcidzIFRoZXNpcywgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBhdAorLy8gVXJiYW5hLUNoYW1wYWlnbiwgMjAwNS4KKy8vCisvLworLy8gVGhlIFNNUyBhbGdvcml0aG0gY29uc2lzdHMgb2YgdGhyZWUgbWFpbiBzdGVwcyBhZnRlciBjb21wdXRpbmcgdGhlIG1pbmltYWwKKy8vIGluaXRpYXRpb24gaW50ZXJ2YWwgKE1JSSkuCisvLyAxKSBBbmFseXplIHRoZSBkZXBlbmRlbmNlIGdyYXBoIGFuZCBjb21wdXRlIGluZm9ybWF0aW9uIGFib3V0IGVhY2gKKy8vICAgIGluc3RydWN0aW9uIGluIHRoZSBncmFwaC4KKy8vIDIpIE9yZGVyIHRoZSBub2RlcyAoaW5zdHJ1Y3Rpb25zKSBieSBwcmlvcml0eSBiYXNlZCB1cG9uIHRoZSBoZXVyaXN0aWNzCisvLyAgICBkZXNjcmliZWQgaW4gdGhlIGFsZ29yaXRobS4KKy8vIDMpIEF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIG5vZGVzIGluIHRoZSBzcGVjaWZpZWQgb3JkZXIgdXNpbmcgdGhlIE1JSS4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworI2lmbmRlZiBMTFZNX0xJQl9DT0RFR0VOX01BQ0hJTkVQSVBFTElORVJfSAorI2RlZmluZSBMTFZNX0xJQl9DT0RFR0VOX01BQ0hJTkVQSVBFTElORVJfSAorCisjaW5jbHVkZSAibGx2bS9Db2RlR2VuL01hY2hpbmVEb21pbmF0b3JzLmgiCisjaW5jbHVkZSAibGx2bS9Db2RlR2VuL1JlZ2lzdGVyQ2xhc3NJbmZvLmgiCisjaW5jbHVkZSAibGx2bS9Db2RlR2VuL1NjaGVkdWxlREFHSW5zdHJzLmgiCisjaW5jbHVkZSAibGx2bS9Db2RlR2VuL1RhcmdldEluc3RySW5mby5oIgorCituYW1lc3BhY2UgbGx2bSB7CisKK2NsYXNzIE5vZGVTZXQ7CitjbGFzcyBTTVNjaGVkdWxlOworCitleHRlcm4gY2w6Om9wdDxib29sPiBTd3BFbmFibGVDb3B5VG9QaGk7CisKKy8vLyBUaGUgbWFpbiBjbGFzcyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHRhcmdldCBpbmRlcGVuZGVudAorLy8vIHNvZnR3YXJlIHBpcGVsaW5lciBwYXNzLgorY2xhc3MgTWFjaGluZVBpcGVsaW5lciA6IHB1YmxpYyBNYWNoaW5lRnVuY3Rpb25QYXNzIHsKK3B1YmxpYzoKKyAgTWFjaGluZUZ1bmN0aW9uICpNRiA9IG51bGxwdHI7CisgIGNvbnN0IE1hY2hpbmVMb29wSW5mbyAqTUxJID0gbnVsbHB0cjsKKyAgY29uc3QgTWFjaGluZURvbWluYXRvclRyZWUgKk1EVCA9IG51bGxwdHI7CisgIGNvbnN0IEluc3RySXRpbmVyYXJ5RGF0YSAqSW5zdHJJdGluczsKKyAgY29uc3QgVGFyZ2V0SW5zdHJJbmZvICpUSUkgPSBudWxscHRyOworICBSZWdpc3RlckNsYXNzSW5mbyBSZWdDbGFzc0luZm87CisgIGJvb2wgZGlzYWJsZWRCeVByYWdtYSA9IGZhbHNlOworICB1bnNpZ25lZCBJSV9zZXRCeVByYWdtYSA9IDA7CisKKyNpZm5kZWYgTkRFQlVHCisgIHN0YXRpYyBpbnQgTnVtVHJpZXM7CisjZW5kaWYKKworICAvLy8gQ2FjaGUgdGhlIHRhcmdldCBhbmFseXNpcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9vcC4KKyAgc3RydWN0IExvb3BJbmZvIHsKKyAgICBNYWNoaW5lQmFzaWNCbG9jayAqVEJCID0gbnVsbHB0cjsKKyAgICBNYWNoaW5lQmFzaWNCbG9jayAqRkJCID0gbnVsbHB0cjsKKyAgICBTbWFsbFZlY3RvcjxNYWNoaW5lT3BlcmFuZCwgND4gQnJDb25kOworICAgIE1hY2hpbmVJbnN0ciAqTG9vcEluZHVjdGlvblZhciA9IG51bGxwdHI7CisgICAgTWFjaGluZUluc3RyICpMb29wQ29tcGFyZSA9IG51bGxwdHI7CisgIH07CisgIExvb3BJbmZvIExJOworCisgIHN0YXRpYyBjaGFyIElEOworCisgIE1hY2hpbmVQaXBlbGluZXIoKSA6IE1hY2hpbmVGdW5jdGlvblBhc3MoSUQpIHsKKyAgICBpbml0aWFsaXplTWFjaGluZVBpcGVsaW5lclBhc3MoKlBhc3NSZWdpc3RyeTo6Z2V0UGFzc1JlZ2lzdHJ5KCkpOworICB9CisKKyAgYm9vbCBydW5Pbk1hY2hpbmVGdW5jdGlvbihNYWNoaW5lRnVuY3Rpb24gJk1GKSBvdmVycmlkZTsKKworICB2b2lkIGdldEFuYWx5c2lzVXNhZ2UoQW5hbHlzaXNVc2FnZSAmQVUpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICBBVS5hZGRSZXF1aXJlZDxBQVJlc3VsdHNXcmFwcGVyUGFzcz4oKTsKKyAgICBBVS5hZGRQcmVzZXJ2ZWQ8QUFSZXN1bHRzV3JhcHBlclBhc3M+KCk7CisgICAgQVUuYWRkUmVxdWlyZWQ8TWFjaGluZUxvb3BJbmZvPigpOworICAgIEFVLmFkZFJlcXVpcmVkPE1hY2hpbmVEb21pbmF0b3JUcmVlPigpOworICAgIEFVLmFkZFJlcXVpcmVkPExpdmVJbnRlcnZhbHM+KCk7CisgICAgTWFjaGluZUZ1bmN0aW9uUGFzczo6Z2V0QW5hbHlzaXNVc2FnZShBVSk7CisgIH0KKworcHJpdmF0ZToKKyAgdm9pZCBwcmVwcm9jZXNzUGhpTm9kZXMoTWFjaGluZUJhc2ljQmxvY2sgJkIpOworICBib29sIGNhblBpcGVsaW5lTG9vcChNYWNoaW5lTG9vcCAmTCk7CisgIGJvb2wgc2NoZWR1bGVMb29wKE1hY2hpbmVMb29wICZMKTsKKyAgYm9vbCBzd2luZ01vZHVsb1NjaGVkdWxlcihNYWNoaW5lTG9vcCAmTCk7CisgIHZvaWQgc2V0UHJhZ21hUGlwZWxpbmVPcHRpb25zKE1hY2hpbmVMb29wICZMKTsKK307CisKKy8vLyBUaGlzIGNsYXNzIGJ1aWxkcyB0aGUgZGVwZW5kZW5jZSBncmFwaCBmb3IgdGhlIGluc3RydWN0aW9ucyBpbiBhIGxvb3AsCisvLy8gYW5kIGF0dGVtcHRzIHRvIHNjaGVkdWxlIHRoZSBpbnN0cnVjdGlvbnMgdXNpbmcgdGhlIFNNUyBhbGdvcml0aG0uCitjbGFzcyBTd2luZ1NjaGVkdWxlckRBRyA6IHB1YmxpYyBTY2hlZHVsZURBR0luc3RycyB7CisgIE1hY2hpbmVQaXBlbGluZXIgJlBhc3M7CisgIC8vLyBUaGUgbWluaW11bSBpbml0aWF0aW9uIGludGVydmFsIGJldHdlZW4gaXRlcmF0aW9ucyBmb3IgdGhpcyBzY2hlZHVsZS4KKyAgdW5zaWduZWQgTUlJID0gMDsKKyAgLy8vIFRoZSBtYXhpbXVtIGluaXRpYXRpb24gaW50ZXJ2YWwgYmV0d2VlbiBpdGVyYXRpb25zIGZvciB0aGlzIHNjaGVkdWxlLgorICB1bnNpZ25lZCBNQVhfSUkgPSAwOworICAvLy8gU2V0IHRvIHRydWUgaWYgYSB2YWxpZCBwaXBlbGluZWQgc2NoZWR1bGUgaXMgZm91bmQgZm9yIHRoZSBsb29wLgorICBib29sIFNjaGVkdWxlZCA9IGZhbHNlOworICBNYWNoaW5lTG9vcCAmTG9vcDsKKyAgTGl2ZUludGVydmFscyAmTElTOworICBjb25zdCBSZWdpc3RlckNsYXNzSW5mbyAmUmVnQ2xhc3NJbmZvOworICB1bnNpZ25lZCBJSV9zZXRCeVByYWdtYSA9IDA7CisKKyAgLy8vIEEgdG9wbG9naWNhbCBvcmRlcmluZyBvZiB0aGUgU1VuaXRzLCB3aGljaCBpcyBuZWVkZWQgZm9yIGNoYW5naW5nCisgIC8vLyBkZXBlbmRlbmNlcyBhbmQgaXRlcmF0aW5nIG92ZXIgdGhlIFNVbml0cy4KKyAgU2NoZWR1bGVEQUdUb3BvbG9naWNhbFNvcnQgVG9wbzsKKworICBzdHJ1Y3QgTm9kZUluZm8geworICAgIGludCBBU0FQID0gMDsKKyAgICBpbnQgQUxBUCA9IDA7CisgICAgaW50IFplcm9MYXRlbmN5RGVwdGggPSAwOworICAgIGludCBaZXJvTGF0ZW5jeUhlaWdodCA9IDA7CisKKyAgICBOb2RlSW5mbygpID0gZGVmYXVsdDsKKyAgfTsKKyAgLy8vIENvbXB1dGVkIHByb3BlcnRpZXMgZm9yIGVhY2ggbm9kZSBpbiB0aGUgZ3JhcGguCisgIHN0ZDo6dmVjdG9yPE5vZGVJbmZvPiBTY2hlZHVsZUluZm87CisKKyAgZW51bSBPcmRlcktpbmQgeyBCb3R0b21VcCA9IDAsIFRvcERvd24gPSAxIH07CisgIC8vLyBDb21wdXRlZCBub2RlIG9yZGVyaW5nIGZvciBzY2hlZHVsaW5nLgorICBTZXRWZWN0b3I8U1VuaXQgKj4gTm9kZU9yZGVyOworCisgIHVzaW5nIE5vZGVTZXRUeXBlID0gU21hbGxWZWN0b3I8Tm9kZVNldCwgOD47CisgIHVzaW5nIFZhbHVlTWFwVHkgPSBEZW5zZU1hcDx1bnNpZ25lZCwgdW5zaWduZWQ+OworICB1c2luZyBNQkJWZWN0b3JUeSA9IFNtYWxsVmVjdG9ySW1wbDxNYWNoaW5lQmFzaWNCbG9jayAqPjsKKyAgdXNpbmcgSW5zdHJNYXBUeSA9IERlbnNlTWFwPE1hY2hpbmVJbnN0ciAqLCBNYWNoaW5lSW5zdHIgKj47CisKKyAgLy8vIEluc3RydWN0aW9ucyB0byBjaGFuZ2Ugd2hlbiBlbWl0dGluZyB0aGUgZmluYWwgc2NoZWR1bGUuCisgIERlbnNlTWFwPFNVbml0ICosIHN0ZDo6cGFpcjx1bnNpZ25lZCwgaW50NjRfdD4+IEluc3RyQ2hhbmdlczsKKworICAvLy8gV2UgbWF5IGNyZWF0ZSBhIG5ldyBpbnN0cnVjdGlvbiwgc28gcmVtZW1iZXIgaXQgYmVjYXVzZSBpdAorICAvLy8gbXVzdCBiZSBkZWxldGVkIHdoZW4gdGhlIHBhc3MgaXMgZmluaXNoZWQuCisgIFNtYWxsUHRyU2V0PE1hY2hpbmVJbnN0ciAqLCA0PiBOZXdNSXM7CisKKyAgLy8vIE9yZGVyZWQgbGlzdCBvZiBEQUcgcG9zdHByb2Nlc3Npbmcgc3RlcHMuCisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZURBR011dGF0aW9uPj4gTXV0YXRpb25zOworCisgIC8vLyBIZWxwZXIgY2xhc3MgdG8gaW1wbGVtZW50IEpvaG5zb24ncyBjaXJjdWl0IGZpbmRpbmcgYWxnb3JpdGhtLgorICBjbGFzcyBDaXJjdWl0cyB7CisgICAgc3RkOjp2ZWN0b3I8U1VuaXQ+ICZTVW5pdHM7CisgICAgU2V0VmVjdG9yPFNVbml0ICo+IFN0YWNrOworICAgIEJpdFZlY3RvciBCbG9ja2VkOworICAgIFNtYWxsVmVjdG9yPFNtYWxsUHRyU2V0PFNVbml0ICosIDQ+LCAxMD4gQjsKKyAgICBTbWFsbFZlY3RvcjxTbWFsbFZlY3RvcjxpbnQsIDQ+LCAxNj4gQWRqSzsKKyAgICAvLyBOb2RlIHRvIEluZGV4IGZyb20gU2NoZWR1bGVEQUdUb3BvbG9naWNhbFNvcnQKKyAgICBzdGQ6OnZlY3RvcjxpbnQ+ICpOb2RlMklkeDsKKyAgICB1bnNpZ25lZCBOdW1QYXRoczsKKyAgICBzdGF0aWMgdW5zaWduZWQgTWF4UGF0aHM7CisKKyAgcHVibGljOgorICAgIENpcmN1aXRzKHN0ZDo6dmVjdG9yPFNVbml0PiAmU1VzLCBTY2hlZHVsZURBR1RvcG9sb2dpY2FsU29ydCAmVG9wbykKKyAgICAgICAgOiBTVW5pdHMoU1VzKSwgQmxvY2tlZChTVXMuc2l6ZSgpKSwgQihTVXMuc2l6ZSgpKSwgQWRqSyhTVXMuc2l6ZSgpKSB7CisgICAgICBOb2RlMklkeCA9IG5ldyBzdGQ6OnZlY3RvcjxpbnQ+KFNVcy5zaXplKCkpOworICAgICAgdW5zaWduZWQgSWR4ID0gMDsKKyAgICAgIGZvciAoY29uc3QgYXV0byAmTm9kZU51bSA6IFRvcG8pCisgICAgICAgIE5vZGUySWR4LT5hdChOb2RlTnVtKSA9IElkeCsrOworICAgIH0KKworICAgIH5DaXJjdWl0cygpIHsgZGVsZXRlIE5vZGUySWR4OyB9CisKKyAgICAvLy8gUmVzZXQgdGhlIGRhdGEgc3RydWN0dXJlcyB1c2VkIGluIHRoZSBjaXJjdWl0IGFsZ29yaXRobS4KKyAgICB2b2lkIHJlc2V0KCkgeworICAgICAgU3RhY2suY2xlYXIoKTsKKyAgICAgIEJsb2NrZWQucmVzZXQoKTsKKyAgICAgIEIuYXNzaWduKFNVbml0cy5zaXplKCksIFNtYWxsUHRyU2V0PFNVbml0ICosIDQ+KCkpOworICAgICAgTnVtUGF0aHMgPSAwOworICAgIH0KKworICAgIHZvaWQgY3JlYXRlQWRqYWNlbmN5U3RydWN0dXJlKFN3aW5nU2NoZWR1bGVyREFHICpEQUcpOworICAgIGJvb2wgY2lyY3VpdChpbnQgViwgaW50IFMsIE5vZGVTZXRUeXBlICZOb2RlU2V0cywgYm9vbCBIYXNCYWNrZWRnZSA9IGZhbHNlKTsKKyAgICB2b2lkIHVuYmxvY2soaW50IFUpOworICB9OworCisgIHN0cnVjdCBDb3B5VG9QaGlNdXRhdGlvbiA6IHB1YmxpYyBTY2hlZHVsZURBR011dGF0aW9uIHsKKyAgICB2b2lkIGFwcGx5KFNjaGVkdWxlREFHSW5zdHJzICpEQUcpIG92ZXJyaWRlOworICB9OworCitwdWJsaWM6CisgIFN3aW5nU2NoZWR1bGVyREFHKE1hY2hpbmVQaXBlbGluZXIgJlAsIE1hY2hpbmVMb29wICZMLCBMaXZlSW50ZXJ2YWxzICZsaXMsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZ2lzdGVyQ2xhc3NJbmZvICZyY2ksIHVuc2lnbmVkIElJKQorICAgICAgOiBTY2hlZHVsZURBR0luc3RycygqUC5NRiwgUC5NTEksIGZhbHNlKSwgUGFzcyhQKSwgTG9vcChMKSwgTElTKGxpcyksCisgICAgICAgIFJlZ0NsYXNzSW5mbyhyY2kpLCBJSV9zZXRCeVByYWdtYShJSSksIFRvcG8oU1VuaXRzLCAmRXhpdFNVKSB7CisgICAgUC5NRi0+Z2V0U3VidGFyZ2V0KCkuZ2V0U01TTXV0YXRpb25zKE11dGF0aW9ucyk7CisgICAgaWYgKFN3cEVuYWJsZUNvcHlUb1BoaSkKKyAgICAgIE11dGF0aW9ucy5wdXNoX2JhY2sobGx2bTo6bWFrZV91bmlxdWU8Q29weVRvUGhpTXV0YXRpb24+KCkpOworICB9CisKKyAgdm9pZCBzY2hlZHVsZSgpIG92ZXJyaWRlOworICB2b2lkIGZpbmlzaEJsb2NrKCkgb3ZlcnJpZGU7CisKKyAgLy8vIFJldHVybiB0cnVlIGlmIHRoZSBsb29wIGtlcm5lbCBoYXMgYmVlbiBzY2hlZHVsZWQuCisgIGJvb2wgaGFzTmV3U2NoZWR1bGUoKSB7IHJldHVybiBTY2hlZHVsZWQ7IH0KKworICAvLy8gUmV0dXJuIHRoZSBlYXJsaWVzdCB0aW1lIGFuIGluc3RydWN0aW9uIG1heSBiZSBzY2hlZHVsZWQuCisgIGludCBnZXRBU0FQKFNVbml0ICpOb2RlKSB7IHJldHVybiBTY2hlZHVsZUluZm9bTm9kZS0+Tm9kZU51bV0uQVNBUDsgfQorCisgIC8vLyBSZXR1cm4gdGhlIGxhdGVzdCB0aW1lIGFuIGluc3RydWN0aW9uIG15IGJlIHNjaGVkdWxlZC4KKyAgaW50IGdldEFMQVAoU1VuaXQgKk5vZGUpIHsgcmV0dXJuIFNjaGVkdWxlSW5mb1tOb2RlLT5Ob2RlTnVtXS5BTEFQOyB9CisKKyAgLy8vIFRoZSBtb2JpbGl0eSBmdW5jdGlvbiwgd2hpY2ggdGhlIG51bWJlciBvZiBzbG90cyBpbiB3aGljaAorICAvLy8gYW4gaW5zdHJ1Y3Rpb24gbWF5IGJlIHNjaGVkdWxlZC4KKyAgaW50IGdldE1PVihTVW5pdCAqTm9kZSkgeyByZXR1cm4gZ2V0QUxBUChOb2RlKSAtIGdldEFTQVAoTm9kZSk7IH0KKworICAvLy8gVGhlIGRlcHRoLCBpbiB0aGUgZGVwZW5kZW5jZSBncmFwaCwgZm9yIGEgbm9kZS4KKyAgdW5zaWduZWQgZ2V0RGVwdGgoU1VuaXQgKk5vZGUpIHsgcmV0dXJuIE5vZGUtPmdldERlcHRoKCk7IH0KKworICAvLy8gVGhlIG1heGltdW0gdW53ZWlnaHRlZCBsZW5ndGggb2YgYSBwYXRoIGZyb20gYW4gYXJiaXRyYXJ5IG5vZGUgdG8gdGhlCisgIC8vLyBnaXZlbiBub2RlIGluIHdoaWNoIGVhY2ggZWRnZSBoYXMgbGF0ZW5jeSAwCisgIGludCBnZXRaZXJvTGF0ZW5jeURlcHRoKFNVbml0ICpOb2RlKSB7CisgICAgcmV0dXJuIFNjaGVkdWxlSW5mb1tOb2RlLT5Ob2RlTnVtXS5aZXJvTGF0ZW5jeURlcHRoOworICB9CisKKyAgLy8vIFRoZSBoZWlnaHQsIGluIHRoZSBkZXBlbmRlbmNlIGdyYXBoLCBmb3IgYSBub2RlLgorICB1bnNpZ25lZCBnZXRIZWlnaHQoU1VuaXQgKk5vZGUpIHsgcmV0dXJuIE5vZGUtPmdldEhlaWdodCgpOyB9CisKKyAgLy8vIFRoZSBtYXhpbXVtIHVud2VpZ2h0ZWQgbGVuZ3RoIG9mIGEgcGF0aCBmcm9tIHRoZSBnaXZlbiBub2RlIHRvIGFuCisgIC8vLyBhcmJpdHJhcnkgbm9kZSBpbiB3aGljaCBlYWNoIGVkZ2UgaGFzIGxhdGVuY3kgMAorICBpbnQgZ2V0WmVyb0xhdGVuY3lIZWlnaHQoU1VuaXQgKk5vZGUpIHsKKyAgICByZXR1cm4gU2NoZWR1bGVJbmZvW05vZGUtPk5vZGVOdW1dLlplcm9MYXRlbmN5SGVpZ2h0OworICB9CisKKyAgLy8vIFJldHVybiB0cnVlIGlmIHRoZSBkZXBlbmRlbmNlIGlzIGEgYmFjay1lZGdlIGluIHRoZSBkYXRhIGRlcGVuZGVuY2UgZ3JhcGguCisgIC8vLyBTaW5jZSB0aGUgREFHIGRvZXNuJ3QgY29udGFpbiBjeWNsZXMsIHdlIHJlcHJlc2VudCBhIGN5Y2xlIGluIHRoZSBncmFwaAorICAvLy8gdXNpbmcgYW4gYW50aSBkZXBlbmRlbmNlIGZyb20gYSBQaGkgdG8gYW4gaW5zdHJ1Y3Rpb24uCisgIGJvb2wgaXNCYWNrZWRnZShTVW5pdCAqU291cmNlLCBjb25zdCBTRGVwICZEZXApIHsKKyAgICBpZiAoRGVwLmdldEtpbmQoKSAhPSBTRGVwOjpBbnRpKQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBTb3VyY2UtPmdldEluc3RyKCktPmlzUEhJKCkgfHwgRGVwLmdldFNVbml0KCktPmdldEluc3RyKCktPmlzUEhJKCk7CisgIH0KKworICBib29sIGlzTG9vcENhcnJpZWREZXAoU1VuaXQgKlNvdXJjZSwgY29uc3QgU0RlcCAmRGVwLCBib29sIGlzU3VjYyA9IHRydWUpOworCisgIC8vLyBUaGUgZGlzdGFuY2UgZnVuY3Rpb24sIHdoaWNoIGluZGljYXRlcyB0aGF0IG9wZXJhdGlvbiBWIG9mIGl0ZXJhdGlvbiBJCisgIC8vLyBkZXBlbmRzIG9uIG9wZXJhdGlvbnMgVSBvZiBpdGVyYXRpb24gSS1kaXN0YW5jZS4KKyAgdW5zaWduZWQgZ2V0RGlzdGFuY2UoU1VuaXQgKlUsIFNVbml0ICpWLCBjb25zdCBTRGVwICZEZXApIHsKKyAgICAvLyBJbnN0cnVjdGlvbnMgdGhhdCBmZWVkIGEgUGhpIGhhdmUgYSBkaXN0YW5jZSBvZiAxLiBDb21wdXRpbmcgbGFyZ2VyCisgICAgLy8gdmFsdWVzIGZvciBhcnJheXMgcmVxdWlyZXMgZGF0YSBkZXBlbmRlbmNlIGluZm9ybWF0aW9uLgorICAgIGlmIChWLT5nZXRJbnN0cigpLT5pc1BISSgpICYmIERlcC5nZXRLaW5kKCkgPT0gU0RlcDo6QW50aSkKKyAgICAgIHJldHVybiAxOworICAgIHJldHVybiAwOworICB9CisKKyAgdm9pZCBhcHBseUluc3RyQ2hhbmdlKE1hY2hpbmVJbnN0ciAqTUksIFNNU2NoZWR1bGUgJlNjaGVkdWxlKTsKKworICB2b2lkIGZpeHVwUmVnaXN0ZXJPdmVybGFwcyhzdGQ6OmRlcXVlPFNVbml0ICo+ICZJbnN0cnMpOworCisgIC8vLyBSZXR1cm4gdGhlIG5ldyBiYXNlIHJlZ2lzdGVyIHRoYXQgd2FzIHN0b3JlZCBhd2F5IGZvciB0aGUgY2hhbmdlZAorICAvLy8gaW5zdHJ1Y3Rpb24uCisgIHVuc2lnbmVkIGdldEluc3RyQmFzZVJlZyhTVW5pdCAqU1UpIHsKKyAgICBEZW5zZU1hcDxTVW5pdCAqLCBzdGQ6OnBhaXI8dW5zaWduZWQsIGludDY0X3Q+Pjo6aXRlcmF0b3IgSXQgPQorICAgICAgICBJbnN0ckNoYW5nZXMuZmluZChTVSk7CisgICAgaWYgKEl0ICE9IEluc3RyQ2hhbmdlcy5lbmQoKSkKKyAgICAgIHJldHVybiBJdC0+c2Vjb25kLmZpcnN0OworICAgIHJldHVybiAwOworICB9CisKKyAgdm9pZCBhZGRNdXRhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVEQUdNdXRhdGlvbj4gTXV0YXRpb24pIHsKKyAgICBNdXRhdGlvbnMucHVzaF9iYWNrKHN0ZDo6bW92ZShNdXRhdGlvbikpOworICB9CisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBTY2hlZHVsZURBR0luc3RycyAqREFHKSB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZhdGU6CisgIHZvaWQgYWRkTG9vcENhcnJpZWREZXBlbmRlbmNlcyhBbGlhc0FuYWx5c2lzICpBQSk7CisgIHZvaWQgdXBkYXRlUGhpRGVwZW5kZW5jZXMoKTsKKyAgdm9pZCBjaGFuZ2VEZXBlbmRlbmNlcygpOworICB1bnNpZ25lZCBjYWxjdWxhdGVSZXNNSUkoKTsKKyAgdW5zaWduZWQgY2FsY3VsYXRlUmVjTUlJKE5vZGVTZXRUeXBlICZSZWNOb2RlU2V0cyk7CisgIHZvaWQgZmluZENpcmN1aXRzKE5vZGVTZXRUeXBlICZOb2RlU2V0cyk7CisgIHZvaWQgZnVzZVJlY3MoTm9kZVNldFR5cGUgJk5vZGVTZXRzKTsKKyAgdm9pZCByZW1vdmVEdXBsaWNhdGVOb2RlcyhOb2RlU2V0VHlwZSAmTm9kZVNldHMpOworICB2b2lkIGNvbXB1dGVOb2RlRnVuY3Rpb25zKE5vZGVTZXRUeXBlICZOb2RlU2V0cyk7CisgIHZvaWQgcmVnaXN0ZXJQcmVzc3VyZUZpbHRlcihOb2RlU2V0VHlwZSAmTm9kZVNldHMpOworICB2b2lkIGNvbG9jYXRlTm9kZVNldHMoTm9kZVNldFR5cGUgJk5vZGVTZXRzKTsKKyAgdm9pZCBjaGVja05vZGVTZXRzKE5vZGVTZXRUeXBlICZOb2RlU2V0cyk7CisgIHZvaWQgZ3JvdXBSZW1haW5pbmdOb2RlcyhOb2RlU2V0VHlwZSAmTm9kZVNldHMpOworICB2b2lkIGFkZENvbm5lY3RlZE5vZGVzKFNVbml0ICpTVSwgTm9kZVNldCAmTmV3U2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFNldFZlY3RvcjxTVW5pdCAqPiAmTm9kZXNBZGRlZCk7CisgIHZvaWQgY29tcHV0ZU5vZGVPcmRlcihOb2RlU2V0VHlwZSAmTm9kZVNldHMpOworICB2b2lkIGNoZWNrVmFsaWROb2RlT3JkZXIoY29uc3QgTm9kZVNldFR5cGUgJkNpcmN1aXRzKSBjb25zdDsKKyAgYm9vbCBzY2hlZHVsZVBpcGVsaW5lKFNNU2NoZWR1bGUgJlNjaGVkdWxlKTsKKyAgdm9pZCBnZW5lcmF0ZVBpcGVsaW5lZExvb3AoU01TY2hlZHVsZSAmU2NoZWR1bGUpOworICB2b2lkIGdlbmVyYXRlUHJvbG9nKFNNU2NoZWR1bGUgJlNjaGVkdWxlLCB1bnNpZ25lZCBMYXN0U3RhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgTWFjaGluZUJhc2ljQmxvY2sgKktlcm5lbEJCLCBWYWx1ZU1hcFR5ICpWUk1hcCwKKyAgICAgICAgICAgICAgICAgICAgICBNQkJWZWN0b3JUeSAmUHJvbG9nQkJzKTsKKyAgdm9pZCBnZW5lcmF0ZUVwaWxvZyhTTVNjaGVkdWxlICZTY2hlZHVsZSwgdW5zaWduZWQgTGFzdFN0YWdlLAorICAgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVCYXNpY0Jsb2NrICpLZXJuZWxCQiwgVmFsdWVNYXBUeSAqVlJNYXAsCisgICAgICAgICAgICAgICAgICAgICAgTUJCVmVjdG9yVHkgJkVwaWxvZ0JCcywgTUJCVmVjdG9yVHkgJlByb2xvZ0JCcyk7CisgIHZvaWQgZ2VuZXJhdGVFeGlzdGluZ1BoaXMoTWFjaGluZUJhc2ljQmxvY2sgKk5ld0JCLCBNYWNoaW5lQmFzaWNCbG9jayAqQkIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVCYXNpY0Jsb2NrICpCQjIsIE1hY2hpbmVCYXNpY0Jsb2NrICpLZXJuZWxCQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTVNjaGVkdWxlICZTY2hlZHVsZSwgVmFsdWVNYXBUeSAqVlJNYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJNYXBUeSAmSW5zdHJNYXAsIHVuc2lnbmVkIExhc3RTdGFnZU51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBDdXJTdGFnZU51bSwgYm9vbCBJc0xhc3QpOworICB2b2lkIGdlbmVyYXRlUGhpcyhNYWNoaW5lQmFzaWNCbG9jayAqTmV3QkIsIE1hY2hpbmVCYXNpY0Jsb2NrICpCQjEsCisgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVCYXNpY0Jsb2NrICpCQjIsIE1hY2hpbmVCYXNpY0Jsb2NrICpLZXJuZWxCQiwKKyAgICAgICAgICAgICAgICAgICAgU01TY2hlZHVsZSAmU2NoZWR1bGUsIFZhbHVlTWFwVHkgKlZSTWFwLAorICAgICAgICAgICAgICAgICAgICBJbnN0ck1hcFR5ICZJbnN0ck1hcCwgdW5zaWduZWQgTGFzdFN0YWdlTnVtLAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBDdXJTdGFnZU51bSwgYm9vbCBJc0xhc3QpOworICB2b2lkIHJlbW92ZURlYWRJbnN0cnVjdGlvbnMoTWFjaGluZUJhc2ljQmxvY2sgKktlcm5lbEJCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUJCVmVjdG9yVHkgJkVwaWxvZ0JCcyk7CisgIHZvaWQgc3BsaXRMaWZldGltZXMoTWFjaGluZUJhc2ljQmxvY2sgKktlcm5lbEJCLCBNQkJWZWN0b3JUeSAmRXBpbG9nQkJzLAorICAgICAgICAgICAgICAgICAgICAgIFNNU2NoZWR1bGUgJlNjaGVkdWxlKTsKKyAgdm9pZCBhZGRCcmFuY2hlcyhNQkJWZWN0b3JUeSAmUHJvbG9nQkJzLCBNYWNoaW5lQmFzaWNCbG9jayAqS2VybmVsQkIsCisgICAgICAgICAgICAgICAgICAgTUJCVmVjdG9yVHkgJkVwaWxvZ0JCcywgU01TY2hlZHVsZSAmU2NoZWR1bGUsCisgICAgICAgICAgICAgICAgICAgVmFsdWVNYXBUeSAqVlJNYXApOworICBib29sIGNvbXB1dGVEZWx0YShNYWNoaW5lSW5zdHIgJk1JLCB1bnNpZ25lZCAmRGVsdGEpOworICB2b2lkIHVwZGF0ZU1lbU9wZXJhbmRzKE1hY2hpbmVJbnN0ciAmTmV3TUksIE1hY2hpbmVJbnN0ciAmT2xkTUksCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTnVtKTsKKyAgTWFjaGluZUluc3RyICpjbG9uZUluc3RyKE1hY2hpbmVJbnN0ciAqT2xkTUksIHVuc2lnbmVkIEN1clN0YWdlTnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgSW5zdFN0YWdlTnVtKTsKKyAgTWFjaGluZUluc3RyICpjbG9uZUFuZENoYW5nZUluc3RyKE1hY2hpbmVJbnN0ciAqT2xkTUksIHVuc2lnbmVkIEN1clN0YWdlTnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgSW5zdFN0YWdlTnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01TY2hlZHVsZSAmU2NoZWR1bGUpOworICB2b2lkIHVwZGF0ZUluc3RydWN0aW9uKE1hY2hpbmVJbnN0ciAqTmV3TUksIGJvb2wgTGFzdERlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBDdXJTdGFnZU51bSwgdW5zaWduZWQgSW5zdHJTdGFnZU51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTTVNjaGVkdWxlICZTY2hlZHVsZSwgVmFsdWVNYXBUeSAqVlJNYXApOworICBNYWNoaW5lSW5zdHIgKmZpbmREZWZJbkxvb3AodW5zaWduZWQgUmVnKTsKKyAgdW5zaWduZWQgZ2V0UHJldk1hcFZhbCh1bnNpZ25lZCBTdGFnZU51bSwgdW5zaWduZWQgUGhpU3RhZ2UsIHVuc2lnbmVkIExvb3BWYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTG9vcFN0YWdlLCBWYWx1ZU1hcFR5ICpWUk1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lQmFzaWNCbG9jayAqQkIpOworICB2b2lkIHJld3JpdGVQaGlWYWx1ZXMoTWFjaGluZUJhc2ljQmxvY2sgKk5ld0JCLCB1bnNpZ25lZCBTdGFnZU51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNNU2NoZWR1bGUgJlNjaGVkdWxlLCBWYWx1ZU1hcFR5ICpWUk1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3RyTWFwVHkgJkluc3RyTWFwKTsKKyAgdm9pZCByZXdyaXRlU2NoZWR1bGVkSW5zdHIoTWFjaGluZUJhc2ljQmxvY2sgKkJCLCBTTVNjaGVkdWxlICZTY2hlZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJNYXBUeSAmSW5zdHJNYXAsIHVuc2lnbmVkIEN1clN0YWdlTnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBQaGlOdW0sIE1hY2hpbmVJbnN0ciAqUGhpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBPbGRSZWcsIHVuc2lnbmVkIE5ld1JlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgUHJldlJlZyA9IDApOworICBib29sIGNhblVzZUxhc3RPZmZzZXRWYWx1ZShNYWNoaW5lSW5zdHIgKk1JLCB1bnNpZ25lZCAmQmFzZVBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgJk9mZnNldFBvcywgdW5zaWduZWQgJk5ld0Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgJk5ld09mZnNldCk7CisgIHZvaWQgcG9zdHByb2Nlc3NEQUcoKTsKKyAgLy8vIFNldCB0aGUgTWluaW11bSBJbml0aWF0aW9uIEludGVydmFsIGZvciB0aGlzIHNjaGVkdWxlIGF0dGVtcHQuCisgIHZvaWQgc2V0TUlJKHVuc2lnbmVkIFJlc01JSSwgdW5zaWduZWQgUmVjTUlJKTsKKyAgLy8vIFNldCB0aGUgTWF4aW11bSBJbml0aWF0aW9uIEludGVydmFsIGZvciB0aGlzIHNjaGVkdWxlIGF0dGVtcHQuCisgIHZvaWQgc2V0TUFYX0lJKCk7Cit9OworCisvLy8gQSBOb2RlU2V0IGNvbnRhaW5zIGEgc2V0IG9mIFNVbml0IERBRyBub2RlcyB3aXRoIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKy8vLyB0aGF0IGFzc2lnbnMgYSBwcmlvcml0eSB0byB0aGUgc2V0LgorY2xhc3MgTm9kZVNldCB7CisgIFNldFZlY3RvcjxTVW5pdCAqPiBOb2RlczsKKyAgYm9vbCBIYXNSZWN1cnJlbmNlID0gZmFsc2U7CisgIHVuc2lnbmVkIFJlY01JSSA9IDA7CisgIGludCBNYXhNT1YgPSAwOworICB1bnNpZ25lZCBNYXhEZXB0aCA9IDA7CisgIHVuc2lnbmVkIENvbG9jYXRlID0gMDsKKyAgU1VuaXQgKkV4Y2VlZFByZXNzdXJlID0gbnVsbHB0cjsKKyAgdW5zaWduZWQgTGF0ZW5jeSA9IDA7CisKK3B1YmxpYzoKKyAgdXNpbmcgaXRlcmF0b3IgPSBTZXRWZWN0b3I8U1VuaXQgKj46OmNvbnN0X2l0ZXJhdG9yOworCisgIE5vZGVTZXQoKSA9IGRlZmF1bHQ7CisgIE5vZGVTZXQoaXRlcmF0b3IgUywgaXRlcmF0b3IgRSkgOiBOb2RlcyhTLCBFKSwgSGFzUmVjdXJyZW5jZSh0cnVlKSB7CisgICAgTGF0ZW5jeSA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgZSA9IE5vZGVzLnNpemUoKTsgaSA8IGU7ICsraSkKKyAgICAgIGZvciAoY29uc3QgU0RlcCAmU3VjYyA6IE5vZGVzW2ldLT5TdWNjcykKKyAgICAgICAgaWYgKE5vZGVzLmNvdW50KFN1Y2MuZ2V0U1VuaXQoKSkpCisgICAgICAgICAgTGF0ZW5jeSArPSBTdWNjLmdldExhdGVuY3koKTsKKyAgfQorCisgIGJvb2wgaW5zZXJ0KFNVbml0ICpTVSkgeyByZXR1cm4gTm9kZXMuaW5zZXJ0KFNVKTsgfQorCisgIHZvaWQgaW5zZXJ0KGl0ZXJhdG9yIFMsIGl0ZXJhdG9yIEUpIHsgTm9kZXMuaW5zZXJ0KFMsIEUpOyB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFVuYXJ5UHJlZGljYXRlPiBib29sIHJlbW92ZV9pZihVbmFyeVByZWRpY2F0ZSBQKSB7CisgICAgcmV0dXJuIE5vZGVzLnJlbW92ZV9pZihQKTsKKyAgfQorCisgIHVuc2lnbmVkIGNvdW50KFNVbml0ICpTVSkgY29uc3QgeyByZXR1cm4gTm9kZXMuY291bnQoU1UpOyB9CisKKyAgYm9vbCBoYXNSZWN1cnJlbmNlKCkgeyByZXR1cm4gSGFzUmVjdXJyZW5jZTsgfTsKKworICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gTm9kZXMuc2l6ZSgpOyB9CisKKyAgYm9vbCBlbXB0eSgpIGNvbnN0IHsgcmV0dXJuIE5vZGVzLmVtcHR5KCk7IH0KKworICBTVW5pdCAqZ2V0Tm9kZSh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBOb2Rlc1tpXTsgfTsKKworICB2b2lkIHNldFJlY01JSSh1bnNpZ25lZCBtaWkpIHsgUmVjTUlJID0gbWlpOyB9OworCisgIHZvaWQgc2V0Q29sb2NhdGUodW5zaWduZWQgYykgeyBDb2xvY2F0ZSA9IGM7IH07CisKKyAgdm9pZCBzZXRFeGNlZWRQcmVzc3VyZShTVW5pdCAqU1UpIHsgRXhjZWVkUHJlc3N1cmUgPSBTVTsgfQorCisgIGJvb2wgaXNFeGNlZWRTVShTVW5pdCAqU1UpIHsgcmV0dXJuIEV4Y2VlZFByZXNzdXJlID09IFNVOyB9CisKKyAgaW50IGNvbXBhcmVSZWNNSUkoTm9kZVNldCAmUkhTKSB7IHJldHVybiBSZWNNSUkgLSBSSFMuUmVjTUlJOyB9CisKKyAgaW50IGdldFJlY01JSSgpIHsgcmV0dXJuIFJlY01JSTsgfQorCisgIC8vLyBTdW1tYXJpemUgbm9kZSBmdW5jdGlvbnMgZm9yIHRoZSBlbnRpcmUgbm9kZSBzZXQuCisgIHZvaWQgY29tcHV0ZU5vZGVTZXRJbmZvKFN3aW5nU2NoZWR1bGVyREFHICpTU0QpIHsKKyAgICBmb3IgKFNVbml0ICpTVSA6ICp0aGlzKSB7CisgICAgICBNYXhNT1YgPSBzdGQ6Om1heChNYXhNT1YsIFNTRC0+Z2V0TU9WKFNVKSk7CisgICAgICBNYXhEZXB0aCA9IHN0ZDo6bWF4KE1heERlcHRoLCBTU0QtPmdldERlcHRoKFNVKSk7CisgICAgfQorICB9CisKKyAgdW5zaWduZWQgZ2V0TGF0ZW5jeSgpIHsgcmV0dXJuIExhdGVuY3k7IH0KKworICB1bnNpZ25lZCBnZXRNYXhEZXB0aCgpIHsgcmV0dXJuIE1heERlcHRoOyB9CisKKyAgdm9pZCBjbGVhcigpIHsKKyAgICBOb2Rlcy5jbGVhcigpOworICAgIFJlY01JSSA9IDA7CisgICAgSGFzUmVjdXJyZW5jZSA9IGZhbHNlOworICAgIE1heE1PViA9IDA7CisgICAgTWF4RGVwdGggPSAwOworICAgIENvbG9jYXRlID0gMDsKKyAgICBFeGNlZWRQcmVzc3VyZSA9IG51bGxwdHI7CisgIH0KKworICBvcGVyYXRvciBTZXRWZWN0b3I8U1VuaXQgKj4gJigpIHsgcmV0dXJuIE5vZGVzOyB9CisKKyAgLy8vIFNvcnQgdGhlIG5vZGUgc2V0cyBieSBpbXBvcnRhbmNlLiBGaXJzdCwgcmFuayB0aGVtIGJ5IHJlY3VycmVuY2UgTUlJLAorICAvLy8gdGhlbiBieSBtb2JpbGl0eSAobGVhc3QgbW9iaWxlIGRvbmUgZmlyc3QpLCBhbmQgZmluYWxseSBieSBkZXB0aC4KKyAgLy8vIEVhY2ggbm9kZSBzZXQgbWF5IGNvbnRhaW4gYSBjb2xvY2F0ZSB2YWx1ZSB3aGljaCBpcyB1c2VkIGFzIHRoZSBmaXJzdAorICAvLy8gdGllIGJyZWFrZXIsIGlmIGl0J3Mgc2V0LgorICBib29sIG9wZXJhdG9yPihjb25zdCBOb2RlU2V0ICZSSFMpIGNvbnN0IHsKKyAgICBpZiAoUmVjTUlJID09IFJIUy5SZWNNSUkpIHsKKyAgICAgIGlmIChDb2xvY2F0ZSAhPSAwICYmIFJIUy5Db2xvY2F0ZSAhPSAwICYmIENvbG9jYXRlICE9IFJIUy5Db2xvY2F0ZSkKKyAgICAgICAgcmV0dXJuIENvbG9jYXRlIDwgUkhTLkNvbG9jYXRlOworICAgICAgaWYgKE1heE1PViA9PSBSSFMuTWF4TU9WKQorICAgICAgICByZXR1cm4gTWF4RGVwdGggPiBSSFMuTWF4RGVwdGg7CisgICAgICByZXR1cm4gTWF4TU9WIDwgUkhTLk1heE1PVjsKKyAgICB9CisgICAgcmV0dXJuIFJlY01JSSA+IFJIUy5SZWNNSUk7CisgIH0KKworICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm9kZVNldCAmUkhTKSBjb25zdCB7CisgICAgcmV0dXJuIFJlY01JSSA9PSBSSFMuUmVjTUlJICYmIE1heE1PViA9PSBSSFMuTWF4TU9WICYmCisgICAgICAgICAgIE1heERlcHRoID09IFJIUy5NYXhEZXB0aDsKKyAgfQorCisgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBOb2RlU2V0ICZSSFMpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KFJIUyk7IH0KKworICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIE5vZGVzLmJlZ2luKCk7IH0KKyAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gTm9kZXMuZW5kKCk7IH0KKyAgdm9pZCBwcmludChyYXdfb3N0cmVhbSAmb3MpIGNvbnN0OworCisjaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBkZWZpbmVkKExMVk1fRU5BQkxFX0RVTVApCisgIExMVk1fRFVNUF9NRVRIT0Qgdm9pZCBkdW1wKCkgY29uc3Q7CisjZW5kaWYKK307CisKKy8vLyBUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIHNjaGVkdWxlZCBjb2RlLiAgVGhlIG1haW4gZGF0YSBzdHJ1Y3R1cmUgaXMgYQorLy8vIG1hcCBmcm9tIHNjaGVkdWxlZCBjeWNsZSB0byBpbnN0cnVjdGlvbnMuICBEdXJpbmcgc2NoZWR1bGluZywgdGhlCisvLy8gZGF0YSBzdHJ1Y3R1cmUgZXhwbGljaXRseSByZXByZXNlbnRzIGFsbCBzdGFnZXMvaXRlcmF0aW9ucy4gICBXaGVuCisvLy8gdGhlIGFsZ29yaXRobSBmaW5zaGVzLCB0aGUgc2NoZWR1bGUgaXMgY29sbGFwc2VkIGludG8gYSBzaW5nbGUgc3RhZ2UsCisvLy8gd2hpY2ggcmVwcmVzZW50cyBpbnN0cnVjdGlvbnMgZnJvbSBkaWZmZXJlbnQgbG9vcCBpdGVyYXRpb25zLgorLy8vCisvLy8gVGhlIFNNUyBhbGdvcml0aG0gYWxsb3dzIG5lZ2F0aXZlIHZhbHVlcyBmb3IgY3ljbGVzLCBzbyB0aGUgZmlyc3QgY3ljbGUKKy8vLyBpbiB0aGUgc2NoZWR1bGUgaXMgdGhlIHNtYWxsZXN0IGN5Y2xlIHZhbHVlLgorY2xhc3MgU01TY2hlZHVsZSB7Citwcml2YXRlOgorICAvLy8gTWFwIGZyb20gZXhlY3V0aW9uIGN5Y2xlIHRvIGluc3RydWN0aW9ucy4KKyAgRGVuc2VNYXA8aW50LCBzdGQ6OmRlcXVlPFNVbml0ICo+PiBTY2hlZHVsZWRJbnN0cnM7CisKKyAgLy8vIE1hcCBmcm9tIGluc3RydWN0aW9uIHRvIGV4ZWN1dGlvbiBjeWNsZS4KKyAgc3RkOjptYXA8U1VuaXQgKiwgaW50PiBJbnN0clRvQ3ljbGU7CisKKyAgLy8vIE1hcCBmb3IgZWFjaCByZWdpc3RlciBhbmQgdGhlIG1heCBkaWZmZXJlbmNlIGJldHdlZW4gaXRzIHVzZXMgYW5kIGRlZi4KKyAgLy8vIFRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBwYWlyIGlzIHRoZSBtYXggZGlmZmVyZW5jZSBpbiBzdGFnZXMuIFRoZQorICAvLy8gc2Vjb25kIGlzIHRydWUgaWYgdGhlIHJlZ2lzdGVyIGRlZmluZXMgYSBQaGkgdmFsdWUgYW5kIGxvb3AgdmFsdWUgaXMKKyAgLy8vIHNjaGVkdWxlZCBiZWZvcmUgdGhlIFBoaS4KKyAgc3RkOjptYXA8dW5zaWduZWQsIHN0ZDo6cGFpcjx1bnNpZ25lZCwgYm9vbD4+IFJlZ1RvU3RhZ2VEaWZmOworCisgIC8vLyBLZWVwIHRyYWNrIG9mIHRoZSBmaXJzdCBjeWNsZSB2YWx1ZSBpbiB0aGUgc2NoZWR1bGUuICBJdCBzdGFydHMKKyAgLy8vIGFzIHplcm8sIGJ1dCB0aGUgYWxnb3JpdGhtIGFsbG93cyBuZWdhdGl2ZSB2YWx1ZXMuCisgIGludCBGaXJzdEN5Y2xlID0gMDsKKworICAvLy8gS2VlcCB0cmFjayBvZiB0aGUgbGFzdCBjeWNsZSB2YWx1ZSBpbiB0aGUgc2NoZWR1bGUuCisgIGludCBMYXN0Q3ljbGUgPSAwOworCisgIC8vLyBUaGUgaW5pdGlhdGlvbiBpbnRlcnZhbCAoSUkpIGZvciB0aGUgc2NoZWR1bGUuCisgIGludCBJbml0aWF0aW9uSW50ZXJ2YWwgPSAwOworCisgIC8vLyBUYXJnZXQgbWFjaGluZSBpbmZvcm1hdGlvbi4KKyAgY29uc3QgVGFyZ2V0U3VidGFyZ2V0SW5mbyAmU1Q7CisKKyAgLy8vIFZpcnR1YWwgcmVnaXN0ZXIgaW5mb3JtYXRpb24uCisgIE1hY2hpbmVSZWdpc3RlckluZm8gJk1SSTsKKworICBzdGQ6OnVuaXF1ZV9wdHI8REZBUGFja2V0aXplcj4gUmVzb3VyY2VzOworCitwdWJsaWM6CisgIFNNU2NoZWR1bGUoTWFjaGluZUZ1bmN0aW9uICptZikKKyAgICAgIDogU1QobWYtPmdldFN1YnRhcmdldCgpKSwgTVJJKG1mLT5nZXRSZWdJbmZvKCkpLAorICAgICAgICBSZXNvdXJjZXMoU1QuZ2V0SW5zdHJJbmZvKCktPkNyZWF0ZVRhcmdldFNjaGVkdWxlU3RhdGUoU1QpKSB7fQorCisgIHZvaWQgcmVzZXQoKSB7CisgICAgU2NoZWR1bGVkSW5zdHJzLmNsZWFyKCk7CisgICAgSW5zdHJUb0N5Y2xlLmNsZWFyKCk7CisgICAgUmVnVG9TdGFnZURpZmYuY2xlYXIoKTsKKyAgICBGaXJzdEN5Y2xlID0gMDsKKyAgICBMYXN0Q3ljbGUgPSAwOworICAgIEluaXRpYXRpb25JbnRlcnZhbCA9IDA7CisgIH0KKworICAvLy8gU2V0IHRoZSBpbml0aWF0aW9uIGludGVydmFsIGZvciB0aGlzIHNjaGVkdWxlLgorICB2b2lkIHNldEluaXRpYXRpb25JbnRlcnZhbChpbnQgaWkpIHsgSW5pdGlhdGlvbkludGVydmFsID0gaWk7IH0KKworICAvLy8gUmV0dXJuIHRoZSBmaXJzdCBjeWNsZSBpbiB0aGUgY29tcGxldGVkIHNjaGVkdWxlLiAgVGhpcworICAvLy8gY2FuIGJlIGEgbmVnYXRpdmUgdmFsdWUuCisgIGludCBnZXRGaXJzdEN5Y2xlKCkgY29uc3QgeyByZXR1cm4gRmlyc3RDeWNsZTsgfQorCisgIC8vLyBSZXR1cm4gdGhlIGxhc3QgY3ljbGUgaW4gdGhlIGZpbmFsaXplZCBzY2hlZHVsZS4KKyAgaW50IGdldEZpbmFsQ3ljbGUoKSBjb25zdCB7IHJldHVybiBGaXJzdEN5Y2xlICsgSW5pdGlhdGlvbkludGVydmFsIC0gMTsgfQorCisgIC8vLyBSZXR1cm4gdGhlIGN5Y2xlIG9mIHRoZSBlYXJsaWVzdCBzY2hlZHVsZWQgaW5zdHJ1Y3Rpb24gaW4gdGhlIGRlcGVuZGVuY2UKKyAgLy8vIGNoYWluLgorICBpbnQgZWFybGllc3RDeWNsZUluQ2hhaW4oY29uc3QgU0RlcCAmRGVwKTsKKworICAvLy8gUmV0dXJuIHRoZSBjeWNsZSBvZiB0aGUgbGF0ZXN0IHNjaGVkdWxlZCBpbnN0cnVjdGlvbiBpbiB0aGUgZGVwZW5kZW5jZQorICAvLy8gY2hhaW4uCisgIGludCBsYXRlc3RDeWNsZUluQ2hhaW4oY29uc3QgU0RlcCAmRGVwKTsKKworICB2b2lkIGNvbXB1dGVTdGFydChTVW5pdCAqU1UsIGludCAqTWF4RWFybHlTdGFydCwgaW50ICpNaW5MYXRlU3RhcnQsCisgICAgICAgICAgICAgICAgICAgIGludCAqTWluRW5kLCBpbnQgKk1heFN0YXJ0LCBpbnQgSUksIFN3aW5nU2NoZWR1bGVyREFHICpEQUcpOworICBib29sIGluc2VydChTVW5pdCAqU1UsIGludCBTdGFydEN5Y2xlLCBpbnQgRW5kQ3ljbGUsIGludCBJSSk7CisKKyAgLy8vIEl0ZXJhdG9ycyBmb3IgdGhlIGN5Y2xlIHRvIGluc3RydWN0aW9uIG1hcC4KKyAgdXNpbmcgc2NoZWRfaXRlcmF0b3IgPSBEZW5zZU1hcDxpbnQsIHN0ZDo6ZGVxdWU8U1VuaXQgKj4+OjppdGVyYXRvcjsKKyAgdXNpbmcgY29uc3Rfc2NoZWRfaXRlcmF0b3IgPQorICAgICAgRGVuc2VNYXA8aW50LCBzdGQ6OmRlcXVlPFNVbml0ICo+Pjo6Y29uc3RfaXRlcmF0b3I7CisKKyAgLy8vIFJldHVybiB0cnVlIGlmIHRoZSBpbnN0cnVjdGlvbiBpcyBzY2hlZHVsZWQgYXQgdGhlIHNwZWNpZmllZCBzdGFnZS4KKyAgYm9vbCBpc1NjaGVkdWxlZEF0U3RhZ2UoU1VuaXQgKlNVLCB1bnNpZ25lZCBTdGFnZU51bSkgeworICAgIHJldHVybiAoc3RhZ2VTY2hlZHVsZWQoU1UpID09IChpbnQpU3RhZ2VOdW0pOworICB9CisKKyAgLy8vIFJldHVybiB0aGUgc3RhZ2UgZm9yIGEgc2NoZWR1bGVkIGluc3RydWN0aW9uLiAgUmV0dXJuIC0xIGlmCisgIC8vLyB0aGUgaW5zdHJ1Y3Rpb24gaGFzIG5vdCBiZWVuIHNjaGVkdWxlZC4KKyAgaW50IHN0YWdlU2NoZWR1bGVkKFNVbml0ICpTVSkgY29uc3QgeworICAgIHN0ZDo6bWFwPFNVbml0ICosIGludD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gSW5zdHJUb0N5Y2xlLmZpbmQoU1UpOworICAgIGlmIChpdCA9PSBJbnN0clRvQ3ljbGUuZW5kKCkpCisgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIChpdC0+c2Vjb25kIC0gRmlyc3RDeWNsZSkgLyBJbml0aWF0aW9uSW50ZXJ2YWw7CisgIH0KKworICAvLy8gUmV0dXJuIHRoZSBjeWNsZSBmb3IgYSBzY2hlZHVsZWQgaW5zdHJ1Y3Rpb24uIFRoaXMgZnVuY3Rpb24gbm9ybWFsaXplcworICAvLy8gdGhlIGZpcnN0IGN5Y2xlIHRvIGJlIDAuCisgIHVuc2lnbmVkIGN5Y2xlU2NoZWR1bGVkKFNVbml0ICpTVSkgY29uc3QgeworICAgIHN0ZDo6bWFwPFNVbml0ICosIGludD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gSW5zdHJUb0N5Y2xlLmZpbmQoU1UpOworICAgIGFzc2VydChpdCAhPSBJbnN0clRvQ3ljbGUuZW5kKCkgJiYgIkluc3RydWN0aW9uIGhhc24ndCBiZWVuIHNjaGVkdWxlZC4iKTsKKyAgICByZXR1cm4gKGl0LT5zZWNvbmQgLSBGaXJzdEN5Y2xlKSAlIEluaXRpYXRpb25JbnRlcnZhbDsKKyAgfQorCisgIC8vLyBSZXR1cm4gdGhlIG1heGltdW0gc3RhZ2UgY291bnQgbmVlZGVkIGZvciB0aGlzIHNjaGVkdWxlLgorICB1bnNpZ25lZCBnZXRNYXhTdGFnZUNvdW50KCkgeworICAgIHJldHVybiAoTGFzdEN5Y2xlIC0gRmlyc3RDeWNsZSkgLyBJbml0aWF0aW9uSW50ZXJ2YWw7CisgIH0KKworICAvLy8gUmV0dXJuIHRoZSBtYXguIG51bWJlciBvZiBzdGFnZXMvaXRlcmF0aW9ucyB0aGF0IGNhbiBvY2N1ciBiZXR3ZWVuIGEKKyAgLy8vIHJlZ2lzdGVyIGRlZmluaXRpb24gYW5kIGl0cyB1c2VzLgorICB1bnNpZ25lZCBnZXRTdGFnZXNGb3JSZWcoaW50IFJlZywgdW5zaWduZWQgQ3VyU3RhZ2UpIHsKKyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IFN0YWdlcyA9IFJlZ1RvU3RhZ2VEaWZmW1JlZ107CisgICAgaWYgKEN1clN0YWdlID4gZ2V0TWF4U3RhZ2VDb3VudCgpICYmIFN0YWdlcy5maXJzdCA9PSAwICYmIFN0YWdlcy5zZWNvbmQpCisgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gU3RhZ2VzLmZpcnN0OworICB9CisKKyAgLy8vIFRoZSBudW1iZXIgb2Ygc3RhZ2VzIGZvciBhIFBoaSBpcyBhIGxpdHRsZSBkaWZmZXJlbnQgdGhhbiBvdGhlcgorICAvLy8gaW5zdHJ1Y3Rpb25zLiBUaGUgbWluaW11bSB2YWx1ZSBjb21wdXRlZCBpbiBSZWdUb1N0YWdlRGlmZiBpcyAxCisgIC8vLyBiZWNhdXNlIHdlIGFzc3VtZSB0aGUgUGhpIGlzIG5lZWRlZCBmb3IgYXQgbGVhc3QgMSBpdGVyYXRpb24uCisgIC8vLyBUaGlzIGlzIG5vdCB0aGUgY2FzZSBpZiB0aGUgbG9vcCB2YWx1ZSBpcyBzY2hlZHVsZWQgcHJpb3IgdG8gdGhlCisgIC8vLyBQaGkgaW4gdGhlIHNhbWUgc3RhZ2UuICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBzdGFnZXMKKyAgLy8vIG9yIGl0ZXJhdGlvbnMgbmVlZGVkIGJldHdlZW4gdGhlIFBoaSBkZWZpbml0aW9uIGFuZCBhbnkgdXNlcy4KKyAgdW5zaWduZWQgZ2V0U3RhZ2VzRm9yUGhpKGludCBSZWcpIHsKKyAgICBzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IFN0YWdlcyA9IFJlZ1RvU3RhZ2VEaWZmW1JlZ107CisgICAgaWYgKFN0YWdlcy5zZWNvbmQpCisgICAgICByZXR1cm4gU3RhZ2VzLmZpcnN0OworICAgIHJldHVybiBTdGFnZXMuZmlyc3QgLSAxOworICB9CisKKyAgLy8vIFJldHVybiB0aGUgaW5zdHJ1Y3Rpb25zIHRoYXQgYXJlIHNjaGVkdWxlZCBhdCB0aGUgc3BlY2lmaWVkIGN5Y2xlLgorICBzdGQ6OmRlcXVlPFNVbml0ICo+ICZnZXRJbnN0cnVjdGlvbnMoaW50IGN5Y2xlKSB7CisgICAgcmV0dXJuIFNjaGVkdWxlZEluc3Ryc1tjeWNsZV07CisgIH0KKworICBib29sIGlzVmFsaWRTY2hlZHVsZShTd2luZ1NjaGVkdWxlckRBRyAqU1NEKTsKKyAgdm9pZCBmaW5hbGl6ZVNjaGVkdWxlKFN3aW5nU2NoZWR1bGVyREFHICpTU0QpOworICB2b2lkIG9yZGVyRGVwZW5kZW5jZShTd2luZ1NjaGVkdWxlckRBRyAqU1NELCBTVW5pdCAqU1UsCisgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZGVxdWU8U1VuaXQgKj4gJkluc3RzKTsKKyAgYm9vbCBpc0xvb3BDYXJyaWVkKFN3aW5nU2NoZWR1bGVyREFHICpTU0QsIE1hY2hpbmVJbnN0ciAmUGhpKTsKKyAgYm9vbCBpc0xvb3BDYXJyaWVkRGVmT2ZVc2UoU3dpbmdTY2hlZHVsZXJEQUcgKlNTRCwgTWFjaGluZUluc3RyICpEZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVPcGVyYW5kICZNTyk7CisgIHZvaWQgcHJpbnQocmF3X29zdHJlYW0gJm9zKSBjb25zdDsKKyAgdm9pZCBkdW1wKCkgY29uc3Q7Cit9OworCit9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQorCisjZW5kaWYgLy8gTExWTV9MSUJfQ09ERUdFTl9NQUNISU5FUElQRUxJTkVSX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lUG9zdERvbWluYXRvcnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lUG9zdERvbWluYXRvcnMuaAppbmRleCBjNmE0MTU5Li5iNjdlNmI1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZVBvc3REb21pbmF0b3JzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVQb3N0RG9taW5hdG9ycy5oCkBAIC0xLDkgKzEsOCBAQAotLy89LSBsbHZtL0NvZGVHZW4vTWFjaGluZURvbWluYXRvcnMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09Ly8KKy8vPT09LSBsbHZtL0NvZGVHZW4vTWFjaGluZVBvc3REb21pbmF0b3JzLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVSZWdpb25JbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZVJlZ2lvbkluZm8uaAppbmRleCA4Mzk0YjU4Li42ZDlmYjliIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZVJlZ2lvbkluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZVJlZ2lvbkluZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vTWFjaGluZVJlZ2lvbkluZm8uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lUmVnaXN0ZXJJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZVJlZ2lzdGVySW5mby5oCmluZGV4IGE2ODM2YTUuLmQyNWNkOTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lUmVnaXN0ZXJJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVSZWdpc3RlckluZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vTWFjaGluZVJlZ2lzdGVySW5mby5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNjg5LDE1ICs2ODgsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTWluTnVtUmVncyA9IDApOwogCiAgIC8vLyBDb25zdHJhaW4gdGhlIHJlZ2lzdGVyIGNsYXNzIG9yIHRoZSByZWdpc3RlciBiYW5rIG9mIHRoZSB2aXJ0dWFsIHJlZ2lzdGVyCi0gIC8vLyBccCBSZWcgdG8gYmUgYSBjb21tb24gc3ViY2xhc3MgYW5kIGEgY29tbW9uIGJhbmsgb2YgYm90aCByZWdpc3RlcnMKLSAgLy8vIHByb3ZpZGVkIHJlc3BlY3RpdmVseS4gRG8gbm90aGluZyBpZiBhbnkgb2YgdGhlIGF0dHJpYnV0ZXMgKGNsYXNzZXMsCi0gIC8vLyBiYW5rcywgb3IgbG93LWxldmVsIHR5cGVzKSBvZiB0aGUgcmVnaXN0ZXJzIGFyZSBkZWVtZWQgaW5jb21wYXRpYmxlLCBvciBpZgotICAvLy8gdGhlIHJlc3VsdGluZyByZWdpc3RlciB3aWxsIGhhdmUgYSBjbGFzcyBzbWFsbGVyIHRoYW4gYmVmb3JlIGFuZCBvZiBzaXplCi0gIC8vLyBsZXNzIHRoYW4gXHAgTWluTnVtUmVncy4gUmV0dXJuIHRydWUgaWYgc3VjaCByZWdpc3RlciBhdHRyaWJ1dGVzIGV4aXN0LAotICAvLy8gZmFsc2Ugb3RoZXJ3aXNlLgorICAvLy8gXHAgUmVnIChhbmQgbG93LWxldmVsIHR5cGUpIHRvIGJlIGEgY29tbW9uIHN1YmNsYXNzIG9yIGEgY29tbW9uIGJhbmsgb2YKKyAgLy8vIGJvdGggcmVnaXN0ZXJzIHByb3ZpZGVkIHJlc3BlY3RpdmVseSAoYW5kIGEgY29tbW9uIGxvdy1sZXZlbCB0eXBlKS4gRG8KKyAgLy8vIG5vdGhpbmcgaWYgYW55IG9mIHRoZSBhdHRyaWJ1dGVzIChjbGFzc2VzLCBiYW5rcywgb3IgbG93LWxldmVsIHR5cGVzKSBvZgorICAvLy8gdGhlIHJlZ2lzdGVycyBhcmUgZGVlbWVkIGluY29tcGF0aWJsZSwgb3IgaWYgdGhlIHJlc3VsdGluZyByZWdpc3RlciB3aWxsCisgIC8vLyBoYXZlIGEgY2xhc3Mgc21hbGxlciB0aGFuIGJlZm9yZSBhbmQgb2Ygc2l6ZSBsZXNzIHRoYW4gXHAgTWluTnVtUmVncy4KKyAgLy8vIFJldHVybiB0cnVlIGlmIHN1Y2ggcmVnaXN0ZXIgYXR0cmlidXRlcyBleGlzdCwgZmFsc2Ugb3RoZXJ3aXNlLgogICAvLy8KLSAgLy8vIFxub3RlIEFzc3VtZXMgdGhhdCBlYWNoIHJlZ2lzdGVyIGhhcyBlaXRoZXIgYSBsb3ctbGV2ZWwgdHlwZSBvciBhIGNsYXNzCi0gIC8vLyBhc3NpZ25lZCwgYnV0IG5vdCBib3RoLiBVc2UgdGhpcyBtZXRob2QgaW5zdGVhZCBvZiBjb25zdHJhaW5SZWdDbGFzcyBhbmQKKyAgLy8vIFxub3RlIFVzZSB0aGlzIG1ldGhvZCBpbnN0ZWFkIG9mIGNvbnN0cmFpblJlZ0NsYXNzIGFuZAogICAvLy8gUmVnaXN0ZXJCYW5rSW5mbzo6Y29uc3RyYWluR2VuZXJpY1JlZ2lzdGVyIGV2ZXJ5d2hlcmUgYnV0IFNlbGVjdGlvbkRBRwogICAvLy8gSVNlbCAvIEZhc3RJU2VsIGFuZCBHbG9iYWxJU2VsJ3MgSW5zdHJ1Y3Rpb25TZWxlY3QgcGFzcyByZXNwZWN0aXZlbHkuCiAgIGJvb2wgY29uc3RyYWluUmVnQXR0cnModW5zaWduZWQgUmVnLCB1bnNpZ25lZCBDb25zdHJhaW5pbmdSZWcsCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZVNTQVVwZGF0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lU1NBVXBkYXRlci5oCmluZGV4IDVlOTEyNDYuLjAzMTllYzcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lU1NBVXBkYXRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lU1NBVXBkYXRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1hY2hpbmVTU0FVcGRhdGVyLmggLSBVbnN0cnVjdHVyZWQgU1NBIFVwZGF0ZSBUb29sIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZVNjaGVkdWxlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVTY2hlZHVsZXIuaAppbmRleCA2MDAzYjFiLi43MDU3OTk4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZVNjaGVkdWxlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lU2NoZWR1bGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTWFjaGluZVNjaGVkdWxlci5oIC0gTWFjaGluZUluc3RyIFNjaGVkdWxpbmcgUGFzcyAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTEzMiwxNyArMTMxLDE5IEBACiAKIC8vLyBNYWNoaW5lU2NoZWRSZWdpc3RyeSBwcm92aWRlcyBhIHNlbGVjdGlvbiBvZiBhdmFpbGFibGUgbWFjaGluZSBpbnN0cnVjdGlvbgogLy8vIHNjaGVkdWxlcnMuCi1jbGFzcyBNYWNoaW5lU2NoZWRSZWdpc3RyeSA6IHB1YmxpYyBNYWNoaW5lUGFzc1JlZ2lzdHJ5Tm9kZSB7CitjbGFzcyBNYWNoaW5lU2NoZWRSZWdpc3RyeQorICAgIDogcHVibGljIE1hY2hpbmVQYXNzUmVnaXN0cnlOb2RlPAorICAgICAgICAgIFNjaGVkdWxlREFHSW5zdHJzICooKikoTWFjaGluZVNjaGVkQ29udGV4dCAqKT4gewogcHVibGljOgogICB1c2luZyBTY2hlZHVsZURBR0N0b3IgPSBTY2hlZHVsZURBR0luc3RycyAqKCopKE1hY2hpbmVTY2hlZENvbnRleHQgKik7CiAKICAgLy8gUmVnaXN0ZXJQYXNzUGFyc2VyIHJlcXVpcmVzIGEgKG1pc25hbWVkKSBGdW5jdGlvblBhc3NDdG9yIHR5cGUuCiAgIHVzaW5nIEZ1bmN0aW9uUGFzc0N0b3IgPSBTY2hlZHVsZURBR0N0b3I7CiAKLSAgc3RhdGljIE1hY2hpbmVQYXNzUmVnaXN0cnkgUmVnaXN0cnk7CisgIHN0YXRpYyBNYWNoaW5lUGFzc1JlZ2lzdHJ5PFNjaGVkdWxlREFHQ3Rvcj4gUmVnaXN0cnk7CiAKICAgTWFjaGluZVNjaGVkUmVnaXN0cnkoY29uc3QgY2hhciAqTiwgY29uc3QgY2hhciAqRCwgU2NoZWR1bGVEQUdDdG9yIEMpCi0gICAgOiBNYWNoaW5lUGFzc1JlZ2lzdHJ5Tm9kZShOLCBELCAoTWFjaGluZVBhc3NDdG9yKUMpIHsKKyAgICAgIDogTWFjaGluZVBhc3NSZWdpc3RyeU5vZGUoTiwgRCwgQykgewogICAgIFJlZ2lzdHJ5LkFkZCh0aGlzKTsKICAgfQogCkBAIC0xNTgsNyArMTU5LDcgQEAKICAgICByZXR1cm4gKE1hY2hpbmVTY2hlZFJlZ2lzdHJ5ICopUmVnaXN0cnkuZ2V0TGlzdCgpOwogICB9CiAKLSAgc3RhdGljIHZvaWQgc2V0TGlzdGVuZXIoTWFjaGluZVBhc3NSZWdpc3RyeUxpc3RlbmVyICpMKSB7CisgIHN0YXRpYyB2b2lkIHNldExpc3RlbmVyKE1hY2hpbmVQYXNzUmVnaXN0cnlMaXN0ZW5lcjxGdW5jdGlvblBhc3NDdG9yPiAqTCkgewogICAgIFJlZ2lzdHJ5LnNldExpc3RlbmVyKEwpOwogICB9CiB9OwpAQCAtNzkyLDcgKzc5Myw3IEBACiAgIC8vLyBSZXByZXNlbnQgdGhlIHR5cGUgb2YgU2NoZWRDYW5kaWRhdGUgZm91bmQgd2l0aGluIGEgc2luZ2xlIHF1ZXVlLgogICAvLy8gcGlja05vZGVCaWRpcmVjdGlvbmFsIGRlcGVuZHMgb24gdGhlc2UgbGlzdGVkIGJ5IGRlY3JlYXNpbmcgcHJpb3JpdHkuCiAgIGVudW0gQ2FuZFJlYXNvbiA6IHVpbnQ4X3QgewotICAgIE5vQ2FuZCwgT25seTEsIFBoeXNSZWdDb3B5LCBSZWdFeGNlc3MsIFJlZ0NyaXRpY2FsLCBTdGFsbCwgQ2x1c3RlciwgV2VhaywKKyAgICBOb0NhbmQsIE9ubHkxLCBQaHlzUmVnLCBSZWdFeGNlc3MsIFJlZ0NyaXRpY2FsLCBTdGFsbCwgQ2x1c3RlciwgV2VhaywKICAgICBSZWdNYXgsIFJlc291cmNlUmVkdWNlLCBSZXNvdXJjZURlbWFuZCwgQm90SGVpZ2h0UmVkdWNlLCBCb3RQYXRoUmVkdWNlLAogICAgIFRvcERlcHRoUmVkdWNlLCBUb3BQYXRoUmVkdWNlLCBOZXh0RGVmVXNlLCBOb2RlT3JkZXJ9OwogCkBAIC05MjYsNyArOTI3LDcgQEAKICAgICAgICAgICAgICAgICAgY29uc3QgVGFyZ2V0UmVnaXN0ZXJJbmZvICpUUkksCiAgICAgICAgICAgICAgICAgIGNvbnN0IE1hY2hpbmVGdW5jdGlvbiAmTUYpOwogdW5zaWduZWQgZ2V0V2Vha0xlZnQoY29uc3QgU1VuaXQgKlNVLCBib29sIGlzVG9wKTsKLWludCBiaWFzUGh5c1JlZ0NvcHkoY29uc3QgU1VuaXQgKlNVLCBib29sIGlzVG9wKTsKK2ludCBiaWFzUGh5c1JlZyhjb25zdCBTVW5pdCAqU1UsIGJvb2wgaXNUb3ApOwogCiAvLy8gR2VuZXJpY1NjaGVkdWxlciBzaHJpbmtzIHRoZSB1bnNjaGVkdWxlZCB6b25lIHVzaW5nIGhldXJpc3RpY3MgdG8gYmFsYW5jZQogLy8vIHRoZSBzY2hlZHVsZS4KQEAgLTEwMDQsNyArMTAwNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVnUHJlc3N1cmVUcmFja2VyICZSUFRyYWNrZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgU2NoZWRDYW5kaWRhdGUgJkNhbmRpZGF0ZSk7CiAKLSAgdm9pZCByZXNjaGVkdWxlUGh5c1JlZ0NvcGllcyhTVW5pdCAqU1UsIGJvb2wgaXNUb3ApOworICB2b2lkIHJlc2NoZWR1bGVQaHlzUmVnKFNVbml0ICpTVSwgYm9vbCBpc1RvcCk7CiB9OwogCiAvLy8gUG9zdEdlbmVyaWNTY2hlZHVsZXIgLSBJbnRlcmZhY2UgdG8gdGhlIHNjaGVkdWxpbmcgYWxnb3JpdGhtIHVzZWQgYnkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lVHJhY2VNZXRyaWNzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjaGluZVRyYWNlTWV0cmljcy5oCmluZGV4IDlkOGRiMzkuLjAyNTk4OTUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9NYWNoaW5lVHJhY2VNZXRyaWNzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY2hpbmVUcmFjZU1ldHJpY3MuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsaWIvQ29kZUdlbi9NYWNoaW5lVHJhY2VNZXRyaWNzLmggLSBTdXBlci1zY2FsYXIgbWV0cmljcyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL01hY3JvRnVzaW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjcm9GdXNpb24uaAppbmRleCBhNzcyMjZkLi4zYTE0MGZlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjcm9GdXNpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vTWFjcm9GdXNpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNYWNyb0Z1c2lvbi5oIC0gTWFjcm8gRnVzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1BCUVAvQ29zdEFsbG9jYXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1BCUVAvQ29zdEFsbG9jYXRvci5oCmluZGV4IGJkZTQ1MWEuLjBkNmQ4YTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9QQlFQL0Nvc3RBbGxvY2F0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUEJRUC9Db3N0QWxsb2NhdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29zdEFsbG9jYXRvci5oIC0gUEJRUCBDb3N0IEFsbG9jYXRvciAtLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9QQlFQL0dyYXBoLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUEJRUC9HcmFwaC5oCmluZGV4IGE2ZDg4YjAuLmMyY2Q2ZGEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9QQlFQL0dyYXBoLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1BCUVAvR3JhcGguaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBHcmFwaC5oIC0gUEJRUCBHcmFwaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1BCUVAvTWF0aC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1BCUVAvTWF0aC5oCmluZGV4IGQxNDMyYTMuLjhiMDE0Y2MgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9QQlFQL01hdGguaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUEJRUC9NYXRoLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTWF0aC5oIC0gUEJRUCBWZWN0b3IgYW5kIE1hdHJpeCBjbGFzc2VzIC0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUEJRUC9SZWR1Y3Rpb25SdWxlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1BCUVAvUmVkdWN0aW9uUnVsZXMuaAppbmRleCAyMWI5OTAyLi41MTgyMmQwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUEJRUC9SZWR1Y3Rpb25SdWxlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9QQlFQL1JlZHVjdGlvblJ1bGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUmVkdWN0aW9uUnVsZXMuaCAtIFJlZHVjdGlvbiBSdWxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9QQlFQL1NvbHV0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUEJRUC9Tb2x1dGlvbi5oCmluZGV4IDRkNDM3OWYuLmQ1YjE0NzQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9QQlFQL1NvbHV0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1BCUVAvU29sdXRpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTb2x1dGlvbi5oIC0gUEJRUCBTb2x1dGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1BCUVBSQUNvbnN0cmFpbnQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9QQlFQUkFDb25zdHJhaW50LmgKaW5kZXggOTk1NDY3ZC4uODc2YWI5NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1BCUVBSQUNvbnN0cmFpbnQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUEJRUFJBQ29uc3RyYWludC5oCkBAIC0xLDkgKzEsOCBAQAotLy89PT0tIFJlZ0FsbG9jUEJRUC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vPT09LSBsbHZtL0NvZGVHZW4vUEJRUFJBQ29uc3RyYWludC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1BhcmFsbGVsQ0cuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9QYXJhbGxlbENHLmgKaW5kZXggZGJmMDllYS4uYTQ0NzE1ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1BhcmFsbGVsQ0cuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUGFyYWxsZWxDRy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0NvZGVHZW4vUGFyYWxsZWxDRy5oIC0gUGFyYWxsZWwgY29kZSBnZW5lcmF0aW9uIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUGFzc2VzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUGFzc2VzLmgKaW5kZXggY2IxMmIxNC4uYzU5NDczYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1Bhc3Nlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9QYXNzZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gUGFzc2VzLmggLSBUYXJnZXQgaW5kZXBlbmRlbnQgY29kZSBnZW5lcmF0aW9uIHBhc3NlcyAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzc5LDE0ICszNzgsMjAgQEAKICAgLy8vCiAgIEZ1bmN0aW9uUGFzcyAqY3JlYXRlSW50ZXJsZWF2ZWRBY2Nlc3NQYXNzKCk7CiAKKyAgLy8vIEludGVybGVhdmVkTG9hZENvbWJpbmVzIFBhc3MgLSBUaGlzIHBhc3MgaWRlbnRpZmllcyBpbnRlcmxlYXZlZCBsb2FkcyBhbmQKKyAgLy8vIGNvbWJpbmVzIHRoZW0gaW50byB3aWRlIGxvYWRzIGRldGVjdGFibGUgYnkgSW50ZXJsZWF2ZWRBY2Nlc3NQYXNzCisgIC8vLworICBGdW5jdGlvblBhc3MgKmNyZWF0ZUludGVybGVhdmVkTG9hZENvbWJpbmVQYXNzKCk7CisKICAgLy8vIExvd2VyRW11VExTIC0gVGhpcyBwYXNzIGdlbmVyYXRlcyBfX2VtdXRsc19bdnRdLnh5eiB2YXJpYWJsZXMgZm9yIGFsbAogICAvLy8gVExTIHZhcmlhYmxlcyBmb3IgdGhlIGVtdWxhdGVkIFRMUyBtb2RlbC4KICAgLy8vCiAgIE1vZHVsZVBhc3MgKmNyZWF0ZUxvd2VyRW11VExTUGFzcygpOwogCi0gIC8vLyBUaGlzIHBhc3MgbG93ZXJzIHRoZSBcQGxsdm0ubG9hZC5yZWxhdGl2ZSBpbnRyaW5zaWMgdG8gaW5zdHJ1Y3Rpb25zLgotICAvLy8gVGhpcyBpcyB1bnNhZmUgdG8gZG8gZWFybGllciBiZWNhdXNlIGEgcGFzcyBtYXkgY29tYmluZSB0aGUgY29uc3RhbnQKLSAgLy8vIGluaXRpYWxpemVyIGludG8gdGhlIGxvYWQsIHdoaWNoIG1heSByZXN1bHQgaW4gYW4gb3ZlcmZsb3dpbmcgZXZhbHVhdGlvbi4KKyAgLy8vIFRoaXMgcGFzcyBsb3dlcnMgdGhlIFxAbGx2bS5sb2FkLnJlbGF0aXZlIGFuZCBcQGxsdm0ub2JqYy4qIGludHJpbnNpY3MgdG8KKyAgLy8vIGluc3RydWN0aW9ucy4gIFRoaXMgaXMgdW5zYWZlIHRvIGRvIGVhcmxpZXIgYmVjYXVzZSBhIHBhc3MgbWF5IGNvbWJpbmUgdGhlCisgIC8vLyBjb25zdGFudCBpbml0aWFsaXplciBpbnRvIHRoZSBsb2FkLCB3aGljaCBtYXkgcmVzdWx0IGluIGFuIG92ZXJmbG93aW5nCisgIC8vLyBldmFsdWF0aW9uLgogICBNb2R1bGVQYXNzICpjcmVhdGVQcmVJU2VsSW50cmluc2ljTG93ZXJpbmdQYXNzKCk7CiAKICAgLy8vIEdsb2JhbE1lcmdlIC0gVGhpcyBwYXNzIG1lcmdlcyBpbnRlcm5hbCAoYnkgZGVmYXVsdCkgZ2xvYmFscyBpbnRvIHN0cnVjdHMKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9QcmVJU2VsSW50cmluc2ljTG93ZXJpbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9QcmVJU2VsSW50cmluc2ljTG93ZXJpbmcuaAppbmRleCA3YTAwN2ViLi43M2Q3ZDc3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUHJlSVNlbEludHJpbnNpY0xvd2VyaW5nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1ByZUlTZWxJbnRyaW5zaWNMb3dlcmluZy5oCkBAIC0xLDEzICsxLDEzIEBACiAvLz09PS0gUHJlSVNlbEludHJpbnNpY0xvd2VyaW5nLmggLSBQcmUtSVNlbCBpbnRyaW5zaWMgbG93ZXJpbmcgcGFzcyAtLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vIFRoaXMgcGFzcyBpbXBsZW1lbnRzIElSIGxvd2VyaW5nIGZvciB0aGUgbGx2bS5sb2FkLnJlbGF0aXZlIGludHJpbnNpYy4KKy8vIFRoaXMgcGFzcyBpbXBsZW1lbnRzIElSIGxvd2VyaW5nIGZvciB0aGUgbGx2bS5sb2FkLnJlbGF0aXZlIGFuZCBsbHZtLm9iamMuKgorLy8gaW50cmluc2ljcy4KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogI2lmbmRlZiBMTFZNX0NPREVHRU5fUFJFSVNFTElOVFJJTlNJQ0xPV0VSSU5HX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9Qc2V1ZG9Tb3VyY2VWYWx1ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1BzZXVkb1NvdXJjZVZhbHVlLmgKaW5kZXggZjY2MTkxYi4uNDkyMGYyMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1BzZXVkb1NvdXJjZVZhbHVlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1BzZXVkb1NvdXJjZVZhbHVlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vQ29kZUdlbi9Qc2V1ZG9Tb3VyY2VWYWx1ZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9SZWFjaGluZ0RlZkFuYWx5c2lzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUmVhY2hpbmdEZWZBbmFseXNpcy5oCmluZGV4IGIyMWI3NDUuLmE1OTlmYjYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9SZWFjaGluZ0RlZkFuYWx5c2lzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1JlYWNoaW5nRGVmQW5hbHlzaXMuaApAQCAtMSwxNSArMSwxNCBAQAogLy89PS0tLSBsbHZtL0NvZGVHZW4vUmVhY2hpbmdEZWZBbmFseXNpcy5oIC0gUmVhY2hpbmcgRGVmIEFuYWx5c2lzIC0qLSBDKysgLSotLS09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwogLy8vIFxmaWxlIFJlYWNoaW5nIERlZnMgQW5hbHlzaXMgcGFzcy4KIC8vLwotLy8vIFRoaXMgcGFzcyB0cmFja3MgZm9yIGVhY2ggaW5zdHJ1Y3Rpb24gd2hhdCBpcyB0aGUgk2Nsb3Nlc3SUIHJlYWNoaW5nIGRlZiBvZgorLy8vIFRoaXMgcGFzcyB0cmFja3MgZm9yIGVhY2ggaW5zdHJ1Y3Rpb24gd2hhdCBpcyB0aGUgImNsb3Nlc3QiIHJlYWNoaW5nIGRlZiBvZgogLy8vIGEgZ2l2ZW4gcmVnaXN0ZXIuIEl0IGlzIHVzZWQgYnkgQnJlYWtGYWxzZURlcHMgKGZvciBjbGVhcmFuY2UgY2FsY3VsYXRpb24pCiAvLy8gYW5kIEV4ZWN1dGlvbkRvbWFpbkZpeCAoZm9yIGFyYml0cmF0aW5nIGNvbmZsaWN0aW5nIGRvbWFpbnMpLgogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUmVnQWxsb2NQQlFQLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUmVnQWxsb2NQQlFQLmgKaW5kZXggYmE5NzYzMC4uZjdmOTIyNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1JlZ0FsbG9jUEJRUC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9SZWdBbGxvY1BCUVAuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBSZWdBbGxvY1BCUVAuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1JlZ0FsbG9jUmVnaXN0cnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9SZWdBbGxvY1JlZ2lzdHJ5LmgKaW5kZXggNDgxNzQ3ZC4uNzA3N2FhMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1JlZ0FsbG9jUmVnaXN0cnkuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUmVnQWxsb2NSZWdpc3RyeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ29kZUdlbi9SZWdBbGxvY1JlZ2lzdHJ5LmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yNiwxNCArMjUsMTQgQEAKIC8vLyBSZWdpc3RlclJlZ0FsbG9jIGNsYXNzIC0gVHJhY2sgdGhlIHJlZ2lzdHJhdGlvbiBvZiByZWdpc3RlciBhbGxvY2F0b3JzLgogLy8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotY2xhc3MgUmVnaXN0ZXJSZWdBbGxvYyA6IHB1YmxpYyBNYWNoaW5lUGFzc1JlZ2lzdHJ5Tm9kZSB7CitjbGFzcyBSZWdpc3RlclJlZ0FsbG9jIDogcHVibGljIE1hY2hpbmVQYXNzUmVnaXN0cnlOb2RlPEZ1bmN0aW9uUGFzcyAqKCopKCk+IHsKIHB1YmxpYzoKICAgdXNpbmcgRnVuY3Rpb25QYXNzQ3RvciA9IEZ1bmN0aW9uUGFzcyAqKCopKCk7CiAKLSAgc3RhdGljIE1hY2hpbmVQYXNzUmVnaXN0cnkgUmVnaXN0cnk7CisgIHN0YXRpYyBNYWNoaW5lUGFzc1JlZ2lzdHJ5PEZ1bmN0aW9uUGFzc0N0b3I+IFJlZ2lzdHJ5OwogCiAgIFJlZ2lzdGVyUmVnQWxsb2MoY29uc3QgY2hhciAqTiwgY29uc3QgY2hhciAqRCwgRnVuY3Rpb25QYXNzQ3RvciBDKQotICAgICAgOiBNYWNoaW5lUGFzc1JlZ2lzdHJ5Tm9kZShOLCBELCAoTWFjaGluZVBhc3NDdG9yKUMpIHsKKyAgICAgIDogTWFjaGluZVBhc3NSZWdpc3RyeU5vZGUoTiwgRCwgQykgewogICAgIFJlZ2lzdHJ5LkFkZCh0aGlzKTsKICAgfQogCkBAIC00OCwxNSArNDcsMTEgQEAKICAgICByZXR1cm4gKFJlZ2lzdGVyUmVnQWxsb2MgKilSZWdpc3RyeS5nZXRMaXN0KCk7CiAgIH0KIAotICBzdGF0aWMgRnVuY3Rpb25QYXNzQ3RvciBnZXREZWZhdWx0KCkgewotICAgIHJldHVybiAoRnVuY3Rpb25QYXNzQ3RvcilSZWdpc3RyeS5nZXREZWZhdWx0KCk7Ci0gIH0KKyAgc3RhdGljIEZ1bmN0aW9uUGFzc0N0b3IgZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIFJlZ2lzdHJ5LmdldERlZmF1bHQoKTsgfQogCi0gIHN0YXRpYyB2b2lkIHNldERlZmF1bHQoRnVuY3Rpb25QYXNzQ3RvciBDKSB7Ci0gICAgUmVnaXN0cnkuc2V0RGVmYXVsdCgoTWFjaGluZVBhc3NDdG9yKUMpOwotICB9CisgIHN0YXRpYyB2b2lkIHNldERlZmF1bHQoRnVuY3Rpb25QYXNzQ3RvciBDKSB7IFJlZ2lzdHJ5LnNldERlZmF1bHQoQyk7IH0KIAotICBzdGF0aWMgdm9pZCBzZXRMaXN0ZW5lcihNYWNoaW5lUGFzc1JlZ2lzdHJ5TGlzdGVuZXIgKkwpIHsKKyAgc3RhdGljIHZvaWQgc2V0TGlzdGVuZXIoTWFjaGluZVBhc3NSZWdpc3RyeUxpc3RlbmVyPEZ1bmN0aW9uUGFzc0N0b3I+ICpMKSB7CiAgICAgUmVnaXN0cnkuc2V0TGlzdGVuZXIoTCk7CiAgIH0KIH07CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUmVnaXN0ZXJDbGFzc0luZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9SZWdpc3RlckNsYXNzSW5mby5oCmluZGV4IDk3MTEzYzUuLjE0YWY1YzQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9SZWdpc3RlckNsYXNzSW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9SZWdpc3RlckNsYXNzSW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFJlZ2lzdGVyQ2xhc3NJbmZvLmggLSBEeW5hbWljIFJlZ2lzdGVyIENsYXNzIEluZm8gLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUmVnaXN0ZXJQcmVzc3VyZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1JlZ2lzdGVyUHJlc3N1cmUuaAppbmRleCA3OTA1NGI5Li41YmJhYTAzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUmVnaXN0ZXJQcmVzc3VyZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9SZWdpc3RlclByZXNzdXJlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUmVnaXN0ZXJQcmVzc3VyZS5oIC0gRHluYW1pYyBSZWdpc3RlciBQcmVzc3VyZSAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTEzMiwxMCArMTMxLDYgQEAKICAgfQogfTsKIAotdGVtcGxhdGUgPD4gc3RydWN0IGlzUG9kTGlrZTxQcmVzc3VyZUNoYW5nZT4gewotICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOwotfTsKLQogLy8vIExpc3Qgb2YgUHJlc3N1cmVDaGFuZ2VzIGluIG9yZGVyIG9mIGluY3JlYXNpbmcsIHVuaXF1ZSBQU2V0SUQuCiAvLy8KIC8vLyBVc2UgYSBzbWFsbCBmaXhlZCBudW1iZXIsIGJlY2F1c2Ugd2UgY2FuIGZpdCBtb3JlIFByZXNzdXJlQ2hhbmdlcyBpbiBhbgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1JlZ2lzdGVyU2NhdmVuZ2luZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1JlZ2lzdGVyU2NhdmVuZ2luZy5oCmluZGV4IGI2YmQwMjguLjQ3OGVhMzggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9SZWdpc3RlclNjYXZlbmdpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUmVnaXN0ZXJTY2F2ZW5naW5nLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUmVnaXN0ZXJTY2F2ZW5naW5nLmggLSBNYWNoaW5lIHJlZ2lzdGVyIHNjYXZlbmdpbmcgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9SZWdpc3RlclVzYWdlSW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1JlZ2lzdGVyVXNhZ2VJbmZvLmgKaW5kZXggZWZkMTc1ZS4uMzM1NTQ1NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1JlZ2lzdGVyVXNhZ2VJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1JlZ2lzdGVyVXNhZ2VJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09LSBSZWdpc3RlclVzYWdlSW5mby5oIC0gUmVnaXN0ZXIgVXNhZ2UgSW5mb3JtYXJ0aW9uIFN0b3JhZ2UgLS0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCkBAIC0yOSw3ICsyOCw3IEBACiBuYW1lc3BhY2UgbGx2bSB7CiAKIGNsYXNzIEZ1bmN0aW9uOwotY2xhc3MgVGFyZ2V0TWFjaGluZTsKK2NsYXNzIExMVk1UYXJnZXRNYWNoaW5lOwogCiBjbGFzcyBQaHlzaWNhbFJlZ2lzdGVyVXNhZ2VJbmZvIDogcHVibGljIEltbXV0YWJsZVBhc3MgewogcHVibGljOgpAQCAtNDEsNyArNDAsNyBAQAogICB9CiAKICAgLy8vIFNldCBUYXJnZXRNYWNoaW5lIHdoaWNoIGlzIHVzZWQgdG8gcHJpbnQgYW5hbHlzaXMuCi0gIHZvaWQgc2V0VGFyZ2V0TWFjaGluZShjb25zdCBUYXJnZXRNYWNoaW5lICZUTSk7CisgIHZvaWQgc2V0VGFyZ2V0TWFjaGluZShjb25zdCBMTFZNVGFyZ2V0TWFjaGluZSAmVE0pOwogCiAgIGJvb2wgZG9Jbml0aWFsaXphdGlvbihNb2R1bGUgJk0pIG92ZXJyaWRlOwogCkBAIC02Myw3ICs2Miw3IEBACiAgIC8vLyBhbmQgMSBtZWFucyBjb250ZW50IG9mIHJlZ2lzdGVyIHdpbGwgYmUgcHJlc2VydmVkIGFyb3VuZCBmdW5jdGlvbiBjYWxsLgogICBEZW5zZU1hcDxjb25zdCBGdW5jdGlvbiAqLCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4+IFJlZ01hc2tzOwogCi0gIGNvbnN0IFRhcmdldE1hY2hpbmUgKlRNOworICBjb25zdCBMTFZNVGFyZ2V0TWFjaGluZSAqVE07CiB9OwogCiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1Jlc291cmNlUHJpb3JpdHlRdWV1ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1Jlc291cmNlUHJpb3JpdHlRdWV1ZS5oCmluZGV4IDhkNTgyZWUuLjgxNTg3YTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9SZXNvdXJjZVByaW9yaXR5UXVldWUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUmVzb3VyY2VQcmlvcml0eVF1ZXVlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLS0tIFJlc291cmNlUHJpb3JpdHlRdWV1ZS5oIC0gQSBERkEtb3JpZW50ZWQgcHJpb3JpdHkgcXVldWUgLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1J1bnRpbWVMaWJjYWxscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1J1bnRpbWVMaWJjYWxscy5oCmluZGV4IDI4NTY3YTEuLmY3MWYzOWUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9SdW50aW1lTGliY2FsbHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vUnVudGltZUxpYmNhbGxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIENvZGVHZW4vUnVudGltZUxpYmNhbGxzLmggLSBSdW50aW1lIExpYnJhcnkgQ2FsbHMgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TRE5vZGVQcm9wZXJ0aWVzLnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NETm9kZVByb3BlcnRpZXMudGQKaW5kZXggODNiYmFiMi4uZDI1ZTBiZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NETm9kZVByb3BlcnRpZXMudGQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NETm9kZVByb3BlcnRpZXMudGQKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU0ROb2RlUHJvcGVydGllcy50ZCAtIENvbW1vbiBjb2RlIGZvciBEQUcgaXNlbHMgLS0tKi0gdGFibGVnZW4gLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NjaGVkdWxlREFHLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2NoZWR1bGVEQUcuaAppbmRleCBmMmIwNzI3Li42ODYxNGRkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2NoZWR1bGVEQUcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2NoZWR1bGVEQUcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vU2NoZWR1bGVEQUcuaCAtIENvbW1vbiBCYXNlIENsYXNzIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzMsMTUgKzMyLDE1IEBACiBuYW1lc3BhY2UgbGx2bSB7CiAKIHRlbXBsYXRlPGNsYXNzIEdyYXBoPiBjbGFzcyBHcmFwaFdyaXRlcjsKK2NsYXNzIExMVk1UYXJnZXRNYWNoaW5lOwogY2xhc3MgTWFjaGluZUZ1bmN0aW9uOwogY2xhc3MgTWFjaGluZVJlZ2lzdGVySW5mbzsKIGNsYXNzIE1DSW5zdHJEZXNjOwogc3RydWN0IE1DU2NoZWRDbGFzc0Rlc2M7Ci1jbGFzcyBTY2hlZHVsZURBRzsKIGNsYXNzIFNETm9kZTsKIGNsYXNzIFNVbml0OworY2xhc3MgU2NoZWR1bGVEQUc7CiBjbGFzcyBUYXJnZXRJbnN0ckluZm87Ci1jbGFzcyBUYXJnZXRNYWNoaW5lOwogY2xhc3MgVGFyZ2V0UmVnaXN0ZXJDbGFzczsKIGNsYXNzIFRhcmdldFJlZ2lzdGVySW5mbzsKIApAQCAtMjM5LDkgKzIzOCw2IEBACiAgICAgdm9pZCBkdW1wKGNvbnN0IFRhcmdldFJlZ2lzdGVySW5mbyAqVFJJID0gbnVsbHB0cikgY29uc3Q7CiAgIH07CiAKLSAgdGVtcGxhdGUgPD4KLSAgc3RydWN0IGlzUG9kTGlrZTxTRGVwPiB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLQogICAvLy8gU2NoZWR1bGluZyB1bml0LiBUaGlzIGlzIGEgbm9kZSBpbiB0aGUgc2NoZWR1bGluZyBEQUcuCiAgIGNsYXNzIFNVbml0IHsKICAgcHJpdmF0ZToKQEAgLTU1OCw3ICs1NTQsNyBAQAogCiAgIGNsYXNzIFNjaGVkdWxlREFHIHsKICAgcHVibGljOgotICAgIGNvbnN0IFRhcmdldE1hY2hpbmUgJlRNOyAgICAgICAgICAgIC8vLzwgVGFyZ2V0IHByb2Nlc3NvcgorICAgIGNvbnN0IExMVk1UYXJnZXRNYWNoaW5lICZUTTsgICAgICAgIC8vLzwgVGFyZ2V0IHByb2Nlc3NvcgogICAgIGNvbnN0IFRhcmdldEluc3RySW5mbyAqVElJOyAgICAgICAgIC8vLzwgVGFyZ2V0IGluc3RydWN0aW9uIGluZm9ybWF0aW9uCiAgICAgY29uc3QgVGFyZ2V0UmVnaXN0ZXJJbmZvICpUUkk7ICAgICAgLy8vPCBUYXJnZXQgcHJvY2Vzc29yIHJlZ2lzdGVyIGluZm8KICAgICBNYWNoaW5lRnVuY3Rpb24gJk1GOyAgICAgICAgICAgICAgICAvLy88IE1hY2hpbmUgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TY2hlZHVsZURBR0luc3Rycy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NjaGVkdWxlREFHSW5zdHJzLmgKaW5kZXggZGFhZDE4MS4uZmE3Zjg4NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NjaGVkdWxlREFHSW5zdHJzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NjaGVkdWxlREFHSW5zdHJzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU2NoZWR1bGVEQUdJbnN0cnMuaCAtIE1hY2hpbmVJbnN0ciBTY2hlZHVsaW5nIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TY2hlZHVsZURBR011dGF0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2NoZWR1bGVEQUdNdXRhdGlvbi5oCmluZGV4IDVjMjM2NDIuLmQxZGQ3MjggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TY2hlZHVsZURBR011dGF0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NjaGVkdWxlREFHTXV0YXRpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTY2hlZHVsZURBR011dGF0aW9uLmggLSBNYWNoaW5lSW5zdHIgU2NoZWR1bGluZyAtLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NjaGVkdWxlREZTLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2NoZWR1bGVERlMuaAppbmRleCAzZWNjMDMzLi5kNjBkZWFiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2NoZWR1bGVERlMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2NoZWR1bGVERlMuaApAQCAtMSw5ICsxLDggQEAKLS8vPT09LSBTY2hlZHVsZURBR0lMUC5oIC0gSUxQIG1ldHJpYyBmb3IgU2NoZWR1bGVEQUdJbnN0cnMgLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLz09PS0gU2NoZWR1bGVERlMuaCAtIElMUCBtZXRyaWMgZm9yIFNjaGVkdWxlREFHSW5zdHJzIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TY2hlZHVsZUhhemFyZFJlY29nbml6ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TY2hlZHVsZUhhemFyZFJlY29nbml6ZXIuaAppbmRleCBhY2U0YTJkLi4zNzU5MGY0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2NoZWR1bGVIYXphcmRSZWNvZ25pemVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NjaGVkdWxlSGF6YXJkUmVjb2duaXplci5oCkBAIC0xLDkgKzEsOCBAQAogLy89LSBsbHZtL0NvZGVHZW4vU2NoZWR1bGVIYXphcmRSZWNvZ25pemVyLmggLSBTY2hlZHVsaW5nIFN1cHBvcnQgLSotIEMrKyAtKi09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2NoZWR1bGVyUmVnaXN0cnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TY2hlZHVsZXJSZWdpc3RyeS5oCmluZGV4IGJhZGY5MjcuLjBjY2ZhYWYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TY2hlZHVsZXJSZWdpc3RyeS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TY2hlZHVsZXJSZWdpc3RyeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ29kZUdlbi9TY2hlZHVsZXJSZWdpc3RyeS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yOSwxNiArMjgsMTkgQEAKIGNsYXNzIFNjaGVkdWxlREFHU0ROb2RlczsKIGNsYXNzIFNlbGVjdGlvbkRBR0lTZWw7CiAKLWNsYXNzIFJlZ2lzdGVyU2NoZWR1bGVyIDogcHVibGljIE1hY2hpbmVQYXNzUmVnaXN0cnlOb2RlIHsKK2NsYXNzIFJlZ2lzdGVyU2NoZWR1bGVyCisgICAgOiBwdWJsaWMgTWFjaGluZVBhc3NSZWdpc3RyeU5vZGU8CisgICAgICAgICAgU2NoZWR1bGVEQUdTRE5vZGVzICooKikoU2VsZWN0aW9uREFHSVNlbCAqLCBDb2RlR2VuT3B0OjpMZXZlbCk+IHsKIHB1YmxpYzoKICAgdXNpbmcgRnVuY3Rpb25QYXNzQ3RvciA9IFNjaGVkdWxlREFHU0ROb2RlcyAqKCopKFNlbGVjdGlvbkRBR0lTZWwqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZUdlbk9wdDo6TGV2ZWwpOwogCi0gIHN0YXRpYyBNYWNoaW5lUGFzc1JlZ2lzdHJ5IFJlZ2lzdHJ5OworICBzdGF0aWMgTWFjaGluZVBhc3NSZWdpc3RyeTxGdW5jdGlvblBhc3NDdG9yPiBSZWdpc3RyeTsKIAogICBSZWdpc3RlclNjaGVkdWxlcihjb25zdCBjaGFyICpOLCBjb25zdCBjaGFyICpELCBGdW5jdGlvblBhc3NDdG9yIEMpCi0gIDogTWFjaGluZVBhc3NSZWdpc3RyeU5vZGUoTiwgRCwgKE1hY2hpbmVQYXNzQ3RvcilDKQotICB7IFJlZ2lzdHJ5LkFkZCh0aGlzKTsgfQorICAgICAgOiBNYWNoaW5lUGFzc1JlZ2lzdHJ5Tm9kZShOLCBELCBDKSB7CisgICAgUmVnaXN0cnkuQWRkKHRoaXMpOworICB9CiAgIH5SZWdpc3RlclNjaGVkdWxlcigpIHsgUmVnaXN0cnkuUmVtb3ZlKHRoaXMpOyB9CiAKIApAQCAtNTEsNyArNTMsNyBAQAogICAgIHJldHVybiAoUmVnaXN0ZXJTY2hlZHVsZXIgKilSZWdpc3RyeS5nZXRMaXN0KCk7CiAgIH0KIAotICBzdGF0aWMgdm9pZCBzZXRMaXN0ZW5lcihNYWNoaW5lUGFzc1JlZ2lzdHJ5TGlzdGVuZXIgKkwpIHsKKyAgc3RhdGljIHZvaWQgc2V0TGlzdGVuZXIoTWFjaGluZVBhc3NSZWdpc3RyeUxpc3RlbmVyPEZ1bmN0aW9uUGFzc0N0b3I+ICpMKSB7CiAgICAgUmVnaXN0cnkuc2V0TGlzdGVuZXIoTCk7CiAgIH0KIH07CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2NvcmVib2FyZEhhemFyZFJlY29nbml6ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TY29yZWJvYXJkSGF6YXJkUmVjb2duaXplci5oCmluZGV4IDNmNzVkMTAuLmFjNjdmMzAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TY29yZWJvYXJkSGF6YXJkUmVjb2duaXplci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TY29yZWJvYXJkSGF6YXJkUmVjb2duaXplci5oCkBAIC0xLDkgKzEsOCBAQAogLy89LSBsbHZtL0NvZGVHZW4vU2NvcmVib2FyZEhhemFyZFJlY29nbml6ZXIuaCAtIFNjaGVkdWxlIFN1cHBvcnQgLSotIEMrKyAtKi09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2VsZWN0aW9uREFHLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2VsZWN0aW9uREFHLmgKaW5kZXggOTczYTNkZC4uZGZkMWQ0OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NlbGVjdGlvbkRBRy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TZWxlY3Rpb25EQUcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vU2VsZWN0aW9uREFHLmggLSBJbnN0U2VsZWN0aW9uIERBRyAtLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzA4LDYgKzMwNyw5IEBACiAgICAgICAgIDogREFHVXBkYXRlTGlzdGVuZXIoREFHKSwgQ2FsbGJhY2soc3RkOjptb3ZlKENhbGxiYWNrKSkge30KIAogICAgIHZvaWQgTm9kZURlbGV0ZWQoU0ROb2RlICpOLCBTRE5vZGUgKkUpIG92ZXJyaWRlIHsgQ2FsbGJhY2soTiwgRSk7IH0KKworICAgcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgYW5jaG9yKCk7CiAgIH07CiAKICAgLy8vIFdoZW4gdHJ1ZSwgYWRkaXRpb25hbCBzdGVwcyBhcmUgdGFrZW4gdG8KQEAgLTc4NiwyNCArNzg4LDYgQEAKICAgLy8vIHZhbHVlIGFzc3VtaW5nIGl0IHdhcyB0aGUgc21hbGxlciBTcmNUeSB2YWx1ZS4KICAgU0RWYWx1ZSBnZXRaZXJvRXh0ZW5kSW5SZWcoU0RWYWx1ZSBPcCwgY29uc3QgU0RMb2MgJkRMLCBFVlQgVlQpOwogCi0gIC8vLyBSZXR1cm4gYW4gb3BlcmF0aW9uIHdoaWNoIHdpbGwgYW55LWV4dGVuZCB0aGUgbG93IGxhbmVzIG9mIHRoZSBvcGVyYW5kCi0gIC8vLyBpbnRvIHRoZSBzcGVjaWZpZWQgdmVjdG9yIHR5cGUuIEZvciBleGFtcGxlLAotICAvLy8gdGhpcyBjYW4gY29udmVydCBhIHYxNmk4IGludG8gYSB2NGkzMiBieSBhbnktZXh0ZW5kaW5nIHRoZSBsb3cgZm91cgotICAvLy8gbGFuZXMgb2YgdGhlIG9wZXJhbmQgZnJvbSBpOCB0byBpMzIuCi0gIFNEVmFsdWUgZ2V0QW55RXh0ZW5kVmVjdG9ySW5SZWcoU0RWYWx1ZSBPcCwgY29uc3QgU0RMb2MgJkRMLCBFVlQgVlQpOwotCi0gIC8vLyBSZXR1cm4gYW4gb3BlcmF0aW9uIHdoaWNoIHdpbGwgc2lnbiBleHRlbmQgdGhlIGxvdyBsYW5lcyBvZiB0aGUgb3BlcmFuZAotICAvLy8gaW50byB0aGUgc3BlY2lmaWVkIHZlY3RvciB0eXBlLiBGb3IgZXhhbXBsZSwKLSAgLy8vIHRoaXMgY2FuIGNvbnZlcnQgYSB2MTZpOCBpbnRvIGEgdjRpMzIgYnkgc2lnbiBleHRlbmRpbmcgdGhlIGxvdyBmb3VyCi0gIC8vLyBsYW5lcyBvZiB0aGUgb3BlcmFuZCBmcm9tIGk4IHRvIGkzMi4KLSAgU0RWYWx1ZSBnZXRTaWduRXh0ZW5kVmVjdG9ySW5SZWcoU0RWYWx1ZSBPcCwgY29uc3QgU0RMb2MgJkRMLCBFVlQgVlQpOwotCi0gIC8vLyBSZXR1cm4gYW4gb3BlcmF0aW9uIHdoaWNoIHdpbGwgemVybyBleHRlbmQgdGhlIGxvdyBsYW5lcyBvZiB0aGUgb3BlcmFuZAotICAvLy8gaW50byB0aGUgc3BlY2lmaWVkIHZlY3RvciB0eXBlLiBGb3IgZXhhbXBsZSwKLSAgLy8vIHRoaXMgY2FuIGNvbnZlcnQgYSB2MTZpOCBpbnRvIGEgdjRpMzIgYnkgemVybyBleHRlbmRpbmcgdGhlIGxvdyBmb3VyCi0gIC8vLyBsYW5lcyBvZiB0aGUgb3BlcmFuZCBmcm9tIGk4IHRvIGkzMi4KLSAgU0RWYWx1ZSBnZXRaZXJvRXh0ZW5kVmVjdG9ySW5SZWcoU0RWYWx1ZSBPcCwgY29uc3QgU0RMb2MgJkRMLCBFVlQgVlQpOwotCiAgIC8vLyBDb252ZXJ0IE9wLCB3aGljaCBtdXN0IGJlIG9mIGludGVnZXIgdHlwZSwgdG8gdGhlIGludGVnZXIgdHlwZSBWVCwKICAgLy8vIGJ5IHVzaW5nIGFuIGV4dGVuc2lvbiBhcHByb3ByaWF0ZSBmb3IgdGhlIHRhcmdldCdzCiAgIC8vLyBCb29sZWFuQ29udGVudCBmb3IgdHlwZSBPcFZUIG9yIHRydW5jYXRpbmcgaXQuCkBAIC05NDcsNDEgKzkzMSw0NSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICpTaXplVHksIHVuc2lnbmVkIEVsZW1TeiwgYm9vbCBpc1RhaWxDYWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lUG9pbnRlckluZm8gRHN0UHRySW5mbyk7CiAKLSAgLy8vIEhlbHBlciBmdW5jdGlvbiB0byBtYWtlIGl0IGVhc2llciB0byBidWlsZCBTZXRDQydzIGlmIHlvdSBqdXN0Ci0gIC8vLyBoYXZlIGFuIElTRDo6Q29uZENvZGUgaW5zdGVhZCBvZiBhbiBTRFZhbHVlLgotICAvLy8KKyAgLy8vIEhlbHBlciBmdW5jdGlvbiB0byBtYWtlIGl0IGVhc2llciB0byBidWlsZCBTZXRDQydzIGlmIHlvdSBqdXN0IGhhdmUgYW4KKyAgLy8vIElTRDo6Q29uZENvZGUgaW5zdGVhZCBvZiBhbiBTRFZhbHVlLgogICBTRFZhbHVlIGdldFNldENDKGNvbnN0IFNETG9jICZETCwgRVZUIFZULCBTRFZhbHVlIExIUywgU0RWYWx1ZSBSSFMsCiAgICAgICAgICAgICAgICAgICAgSVNEOjpDb25kQ29kZSBDb25kKSB7CiAgICAgYXNzZXJ0KExIUy5nZXRWYWx1ZVR5cGUoKS5pc1ZlY3RvcigpID09IFJIUy5nZXRWYWx1ZVR5cGUoKS5pc1ZlY3RvcigpICYmCi0gICAgICAiQ2Fubm90IGNvbXBhcmUgc2NhbGFycyB0byB2ZWN0b3JzIik7CisgICAgICAgICAgICJDYW5ub3QgY29tcGFyZSBzY2FsYXJzIHRvIHZlY3RvcnMiKTsKICAgICBhc3NlcnQoTEhTLmdldFZhbHVlVHlwZSgpLmlzVmVjdG9yKCkgPT0gVlQuaXNWZWN0b3IoKSAmJgotICAgICAgIkNhbm5vdCBjb21wYXJlIHNjYWxhcnMgdG8gdmVjdG9ycyIpOworICAgICAgICAgICAiQ2Fubm90IGNvbXBhcmUgc2NhbGFycyB0byB2ZWN0b3JzIik7CiAgICAgYXNzZXJ0KENvbmQgIT0gSVNEOjpTRVRDQ19JTlZBTElEICYmCi0gICAgICAgICJDYW5ub3QgY3JlYXRlIGEgc2V0Q0Mgb2YgYW4gaW52YWxpZCBub2RlLiIpOworICAgICAgICAgICAiQ2Fubm90IGNyZWF0ZSBhIHNldENDIG9mIGFuIGludmFsaWQgbm9kZS4iKTsKICAgICByZXR1cm4gZ2V0Tm9kZShJU0Q6OlNFVENDLCBETCwgVlQsIExIUywgUkhTLCBnZXRDb25kQ29kZShDb25kKSk7CiAgIH0KIAotICAvLy8gSGVscGVyIGZ1bmN0aW9uIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGJ1aWxkIFNlbGVjdCdzIGlmIHlvdSBqdXN0Ci0gIC8vLyBoYXZlIG9wZXJhbmRzIGFuZCBkb24ndCB3YW50IHRvIGNoZWNrIGZvciB2ZWN0b3IuCisgIC8vLyBIZWxwZXIgZnVuY3Rpb24gdG8gbWFrZSBpdCBlYXNpZXIgdG8gYnVpbGQgU2VsZWN0J3MgaWYgeW91IGp1c3QgaGF2ZQorICAvLy8gb3BlcmFuZHMgYW5kIGRvbid0IHdhbnQgdG8gY2hlY2sgZm9yIHZlY3Rvci4KICAgU0RWYWx1ZSBnZXRTZWxlY3QoY29uc3QgU0RMb2MgJkRMLCBFVlQgVlQsIFNEVmFsdWUgQ29uZCwgU0RWYWx1ZSBMSFMsCiAgICAgICAgICAgICAgICAgICAgIFNEVmFsdWUgUkhTKSB7CiAgICAgYXNzZXJ0KExIUy5nZXRWYWx1ZVR5cGUoKSA9PSBSSFMuZ2V0VmFsdWVUeXBlKCkgJiYKICAgICAgICAgICAgIkNhbm5vdCB1c2Ugc2VsZWN0IG9uIGRpZmZlcmluZyB0eXBlcyIpOwogICAgIGFzc2VydChWVC5pc1ZlY3RvcigpID09IExIUy5nZXRWYWx1ZVR5cGUoKS5pc1ZlY3RvcigpICYmCiAgICAgICAgICAgICJDYW5ub3QgbWl4IHZlY3RvcnMgYW5kIHNjYWxhcnMiKTsKLSAgICByZXR1cm4gZ2V0Tm9kZShDb25kLmdldFZhbHVlVHlwZSgpLmlzVmVjdG9yKCkgPyBJU0Q6OlZTRUxFQ1QgOiBJU0Q6OlNFTEVDVCwgREwsIFZULAotICAgICAgICAgICAgICAgICAgIENvbmQsIExIUywgUkhTKTsKKyAgICBhdXRvIE9wY29kZSA9IENvbmQuZ2V0VmFsdWVUeXBlKCkuaXNWZWN0b3IoKSA/IElTRDo6VlNFTEVDVCA6IElTRDo6U0VMRUNUOworICAgIHJldHVybiBnZXROb2RlKE9wY29kZSwgREwsIFZULCBDb25kLCBMSFMsIFJIUyk7CiAgIH0KIAotICAvLy8gSGVscGVyIGZ1bmN0aW9uIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGJ1aWxkIFNlbGVjdENDJ3MgaWYgeW91Ci0gIC8vLyBqdXN0IGhhdmUgYW4gSVNEOjpDb25kQ29kZSBpbnN0ZWFkIG9mIGFuIFNEVmFsdWUuCi0gIC8vLworICAvLy8gSGVscGVyIGZ1bmN0aW9uIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGJ1aWxkIFNlbGVjdENDJ3MgaWYgeW91IGp1c3QgaGF2ZSBhbgorICAvLy8gSVNEOjpDb25kQ29kZSBpbnN0ZWFkIG9mIGFuIFNEVmFsdWUuCiAgIFNEVmFsdWUgZ2V0U2VsZWN0Q0MoY29uc3QgU0RMb2MgJkRMLCBTRFZhbHVlIExIUywgU0RWYWx1ZSBSSFMsIFNEVmFsdWUgVHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICBTRFZhbHVlIEZhbHNlLCBJU0Q6OkNvbmRDb2RlIENvbmQpIHsKLSAgICByZXR1cm4gZ2V0Tm9kZShJU0Q6OlNFTEVDVF9DQywgREwsIFRydWUuZ2V0VmFsdWVUeXBlKCksCi0gICAgICAgICAgICAgICAgICAgTEhTLCBSSFMsIFRydWUsIEZhbHNlLCBnZXRDb25kQ29kZShDb25kKSk7CisgICAgcmV0dXJuIGdldE5vZGUoSVNEOjpTRUxFQ1RfQ0MsIERMLCBUcnVlLmdldFZhbHVlVHlwZSgpLCBMSFMsIFJIUywgVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICBGYWxzZSwgZ2V0Q29uZENvZGUoQ29uZCkpOwogICB9CiAKKyAgLy8vIFRyeSB0byBzaW1wbGlmeSBhIHNlbGVjdC92c2VsZWN0IGludG8gMSBvZiBpdHMgb3BlcmFuZHMgb3IgYSBjb25zdGFudC4KKyAgU0RWYWx1ZSBzaW1wbGlmeVNlbGVjdChTRFZhbHVlIENvbmQsIFNEVmFsdWUgVFZhbCwgU0RWYWx1ZSBGVmFsKTsKKworICAvLy8gVHJ5IHRvIHNpbXBsaWZ5IGEgc2hpZnQgaW50byAxIG9mIGl0cyBvcGVyYW5kcyBvciBhIGNvbnN0YW50LgorICBTRFZhbHVlIHNpbXBsaWZ5U2hpZnQoU0RWYWx1ZSBYLCBTRFZhbHVlIFkpOworCiAgIC8vLyBWQUFyZyBwcm9kdWNlcyBhIHJlc3VsdCBhbmQgdG9rZW4gY2hhaW4sIGFuZCB0YWtlcyBhIHBvaW50ZXIKICAgLy8vIGFuZCBhIHNvdXJjZSB2YWx1ZSBhcyBpbnB1dC4KICAgU0RWYWx1ZSBnZXRWQUFyZyhFVlQgVlQsIGNvbnN0IFNETG9jICZkbCwgU0RWYWx1ZSBDaGFpbiwgU0RWYWx1ZSBQdHIsCkBAIC0xMDA0LDEwICs5OTIsNiBAQAogICAvLy8gR2V0cyBhIG5vZGUgZm9yIGFuIGF0b21pYyBvcCwgcHJvZHVjZXMgcmVzdWx0IChpZiByZWxldmFudCkKICAgLy8vIGFuZCBjaGFpbiBhbmQgdGFrZXMgMiBvcGVyYW5kcy4KICAgU0RWYWx1ZSBnZXRBdG9taWModW5zaWduZWQgT3Bjb2RlLCBjb25zdCBTRExvYyAmZGwsIEVWVCBNZW1WVCwgU0RWYWx1ZSBDaGFpbiwKLSAgICAgICAgICAgICAgICAgICAgU0RWYWx1ZSBQdHIsIFNEVmFsdWUgVmFsLCBjb25zdCBWYWx1ZSAqUHRyVmFsLAotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBBbGlnbm1lbnQsIEF0b21pY09yZGVyaW5nIE9yZGVyaW5nLAotICAgICAgICAgICAgICAgICAgICBTeW5jU2NvcGU6OklEIFNTSUQpOwotICBTRFZhbHVlIGdldEF0b21pYyh1bnNpZ25lZCBPcGNvZGUsIGNvbnN0IFNETG9jICZkbCwgRVZUIE1lbVZULCBTRFZhbHVlIENoYWluLAogICAgICAgICAgICAgICAgICAgICBTRFZhbHVlIFB0ciwgU0RWYWx1ZSBWYWwsIE1hY2hpbmVNZW1PcGVyYW5kICpNTU8pOwogCiAgIC8vLyBHZXRzIGEgbm9kZSBmb3IgYW4gYXRvbWljIG9wLCBwcm9kdWNlcyByZXN1bHQgYW5kIGNoYWluIGFuZApAQCAtMTE0Miw2ICsxMTI2LDEzIEBACiAgIC8vLyBFeHBhbmQgdGhlIHNwZWNpZmllZCBcYyBJU0Q6OlZBQ09QWSBub2RlIGFzIHRoZSBMZWdhbGl6ZSBwYXNzIHdvdWxkLgogICBTRFZhbHVlIGV4cGFuZFZBQ29weShTRE5vZGUgKk5vZGUpOwogCisgIC8vLyBSZXR1cnMgYW4gR2xvYmFsQWRkcmVzcyBvZiB0aGUgZnVuY3Rpb24gZnJvbSB0aGUgY3VycmVudCBtb2R1bGUgd2l0aAorICAvLy8gbmFtZSBtYXRjaGluZyB0aGUgZ2l2ZW4gRXh0ZXJuYWxTeW1ib2wuIEFkZGl0aW9uYWxseSBjYW4gcHJvdmlkZSB0aGUKKyAgLy8vIG1hdGNoZWQgZnVuY3Rpb24uCisgIC8vLyBQYW5pY3MgdGhlIGZ1bmN0aW9uIGRvZXNuJ3QgZXhpc3RzLgorICBTRFZhbHVlIGdldFN5bWJvbEZ1bmN0aW9uR2xvYmFsQWRkcmVzcyhTRFZhbHVlIE9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbiAqKlRhcmdldEZ1bmN0aW9uID0gbnVsbHB0cik7CisKICAgLy8vICpNdXRhdGUqIHRoZSBzcGVjaWZpZWQgbm9kZSBpbi1wbGFjZSB0byBoYXZlIHRoZQogICAvLy8gc3BlY2lmaWVkIG9wZXJhbmRzLiAgSWYgdGhlIHJlc3VsdGFudCBub2RlIGFscmVhZHkgZXhpc3RzIGluIHRoZSBEQUcsCiAgIC8vLyB0aGlzIGRvZXMgbm90IG1vZGlmeSB0aGUgc3BlY2lmaWVkIG5vZGUsIGluc3RlYWQgaXQgcmV0dXJucyB0aGUgbm9kZSB0aGF0CkBAIC0xMTU4LDYgKzExNDksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRFZhbHVlIE9wMywgU0RWYWx1ZSBPcDQsIFNEVmFsdWUgT3A1KTsKICAgU0ROb2RlICpVcGRhdGVOb2RlT3BlcmFuZHMoU0ROb2RlICpOLCBBcnJheVJlZjxTRFZhbHVlPiBPcHMpOwogCisgIC8vLyBDcmVhdGVzIGEgbmV3IFRva2VuRmFjdG9yIGNvbnRhaW5pbmcgXHAgVmFscy4gSWYgXHAgVmFscyBjb250YWlucyA2NGsKKyAgLy8vIHZhbHVlcyBvciBtb3JlLCBtb3ZlIHZhbHVlcyBpbnRvIG5ldyBUb2tlbkZhY3RvcnMgaW4gNjRrLTEgYmxvY2tzLCB1bnRpbAorICAvLy8gdGhlIGZpbmFsIFRva2VuRmFjdG9yIGhhcyBsZXNzIHRoYW4gNjRrIG9wZXJhbmRzLgorICBTRFZhbHVlIGdldFRva2VuRmFjdG9yKGNvbnN0IFNETG9jICZETCwgU21hbGxWZWN0b3JJbXBsPFNEVmFsdWU+ICZWYWxzKTsKKwogICAvLy8gKk11dGF0ZSogdGhlIHNwZWNpZmllZCBtYWNoaW5lIG5vZGUncyBtZW1vcnkgcmVmZXJlbmNlcyB0byB0aGUgcHJvdmlkZWQKICAgLy8vIGxpc3QuCiAgIHZvaWQgc2V0Tm9kZU1lbVJlZnMoTWFjaGluZVNETm9kZSAqTiwKQEAgLTEzNjIsMjEgKzEzNTgsMjAgQEAKICAgLy8vIHdpdGggdGhpcyBTZWxlY3Rpb25EQUcuCiAgIGJvb2wgaGFzRGVidWdWYWx1ZXMoKSBjb25zdCB7IHJldHVybiAhRGJnSW5mby0+ZW1wdHkoKTsgfQogCi0gIFNERGJnSW5mbzo6RGJnSXRlcmF0b3IgRGJnQmVnaW4oKSB7IHJldHVybiBEYmdJbmZvLT5EYmdCZWdpbigpOyB9Ci0gIFNERGJnSW5mbzo6RGJnSXRlcmF0b3IgRGJnRW5kKCkgICB7IHJldHVybiBEYmdJbmZvLT5EYmdFbmQoKTsgfQorICBTRERiZ0luZm86OkRiZ0l0ZXJhdG9yIERiZ0JlZ2luKCkgY29uc3QgeyByZXR1cm4gRGJnSW5mby0+RGJnQmVnaW4oKTsgfQorICBTRERiZ0luZm86OkRiZ0l0ZXJhdG9yIERiZ0VuZCgpIGNvbnN0ICB7IHJldHVybiBEYmdJbmZvLT5EYmdFbmQoKTsgfQogCi0gIFNERGJnSW5mbzo6RGJnSXRlcmF0b3IgQnl2YWxQYXJtRGJnQmVnaW4oKSB7CisgIFNERGJnSW5mbzo6RGJnSXRlcmF0b3IgQnl2YWxQYXJtRGJnQmVnaW4oKSBjb25zdCB7CiAgICAgcmV0dXJuIERiZ0luZm8tPkJ5dmFsUGFybURiZ0JlZ2luKCk7CiAgIH0KLQotICBTRERiZ0luZm86OkRiZ0l0ZXJhdG9yIEJ5dmFsUGFybURiZ0VuZCgpICAgeworICBTRERiZ0luZm86OkRiZ0l0ZXJhdG9yIEJ5dmFsUGFybURiZ0VuZCgpIGNvbnN0IHsKICAgICByZXR1cm4gRGJnSW5mby0+Qnl2YWxQYXJtRGJnRW5kKCk7CiAgIH0KIAotICBTRERiZ0luZm86OkRiZ0xhYmVsSXRlcmF0b3IgRGJnTGFiZWxCZWdpbigpIHsKKyAgU0REYmdJbmZvOjpEYmdMYWJlbEl0ZXJhdG9yIERiZ0xhYmVsQmVnaW4oKSBjb25zdCB7CiAgICAgcmV0dXJuIERiZ0luZm8tPkRiZ0xhYmVsQmVnaW4oKTsKICAgfQotICBTRERiZ0luZm86OkRiZ0xhYmVsSXRlcmF0b3IgRGJnTGFiZWxFbmQoKSB7CisgIFNERGJnSW5mbzo6RGJnTGFiZWxJdGVyYXRvciBEYmdMYWJlbEVuZCgpIGNvbnN0IHsKICAgICByZXR1cm4gRGJnSW5mby0+RGJnTGFiZWxFbmQoKTsKICAgfQogCkBAIC0xMzk5LDExICsxMzk0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTRE5vZGUgKk4yKTsKIAogICBTRFZhbHVlIEZvbGRDb25zdGFudEFyaXRobWV0aWModW5zaWduZWQgT3Bjb2RlLCBjb25zdCBTRExvYyAmREwsIEVWVCBWVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNETm9kZSAqQ3N0MSwgU0ROb2RlICpDc3QyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNETm9kZSAqTjEsIFNETm9kZSAqTjIpOwogCiAgIFNEVmFsdWUgRm9sZENvbnN0YW50QXJpdGhtZXRpYyh1bnNpZ25lZCBPcGNvZGUsIGNvbnN0IFNETG9jICZETCwgRVZUIFZULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29uc3RhbnRTRE5vZGUgKkNzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb25zdGFudFNETm9kZSAqQ3N0Mik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb25zdGFudFNETm9kZSAqQzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb25zdGFudFNETm9kZSAqQzIpOwogCiAgIFNEVmFsdWUgRm9sZENvbnN0YW50VmVjdG9yQXJpdGhtZXRpYyh1bnNpZ25lZCBPcGNvZGUsIGNvbnN0IFNETG9jICZETCwgRVZUIFZULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8U0RWYWx1ZT4gT3BzLApAQCAtMTQ0NiwxOCArMTQ0MSw2IEBACiAgIEtub3duQml0cyBjb21wdXRlS25vd25CaXRzKFNEVmFsdWUgT3AsIGNvbnN0IEFQSW50ICZEZW1hbmRlZEVsdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIERlcHRoID0gMCkgY29uc3Q7CiAKLSAgLy8vIFxjb3B5ZG9jIFNlbGVjdGlvbkRBRzo6Y29tcHV0ZUtub3duQml0cyhTRFZhbHVlLHVuc2lnbmVkKQotICB2b2lkIGNvbXB1dGVLbm93bkJpdHMoU0RWYWx1ZSBPcCwgS25vd25CaXRzICZLbm93biwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIERlcHRoID0gMCkgY29uc3QgewotICAgIEtub3duID0gY29tcHV0ZUtub3duQml0cyhPcCwgRGVwdGgpOwotICB9Ci0KLSAgLy8vIFxjb3B5ZG9jIFNlbGVjdGlvbkRBRzo6Y29tcHV0ZUtub3duQml0cyhTRFZhbHVlLGNvbnN0IEFQSW50Jix1bnNpZ25lZCkKLSAgdm9pZCBjb21wdXRlS25vd25CaXRzKFNEVmFsdWUgT3AsIEtub3duQml0cyAmS25vd24sIGNvbnN0IEFQSW50ICZEZW1hbmRlZEVsdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBEZXB0aCA9IDApIGNvbnN0IHsKLSAgICBLbm93biA9IGNvbXB1dGVLbm93bkJpdHMoT3AsIERlbWFuZGVkRWx0cywgRGVwdGgpOwotICB9Ci0KICAgLy8vIFVzZWQgdG8gcmVwcmVzZW50IHRoZSBwb3NzaWJsZSBvdmVyZmxvdyBiZWhhdmlvciBvZiBhbiBvcGVyYXRpb24uCiAgIC8vLyBOZXZlcjogdGhlIG9wZXJhdGlvbiBjYW5ub3Qgb3ZlcmZsb3cuCiAgIC8vLyBBbHdheXM6IHRoZSBvcGVyYXRpb24gd2lsbCBhbHdheXMgb3ZlcmZsb3cuCkBAIC0xNTI5LDYgKzE1MTIsMTggQEAKICAgLy8vIGFsbG93IGFuICdhZGQnIHRvIGJlIHRyYW5zZm9ybWVkIGludG8gYW4gJ29yJy4KICAgYm9vbCBoYXZlTm9Db21tb25CaXRzU2V0KFNEVmFsdWUgQSwgU0RWYWx1ZSBCKSBjb25zdDsKIAorICAvLy8gVGVzdCB3aGV0aGVyIFxwIFYgaGFzIGEgc3BsYXR0ZWQgdmFsdWUgZm9yIGFsbCB0aGUgZGVtYW5kZWQgZWxlbWVudHMuCisgIC8vLworICAvLy8gT24gc3VjY2VzcyBccCBVbmRlZkVsdHMgd2lsbCBpbmRpY2F0ZSB0aGUgZWxlbWVudHMgdGhhdCBoYXZlIFVOREVGCisgIC8vLyB2YWx1ZXMgaW5zdGVhZCBvZiB0aGUgc3BsYXQgdmFsdWUsIHRoaXMgaXMgb25seSBndWFyYW50ZWVkIHRvIGJlIGNvcnJlY3QKKyAgLy8vIGZvciBccCBEZW1hbmRlZEVsdHMuCisgIC8vLworICAvLy8gTk9URTogVGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRydWUgZm9yIGEgZGVtYW5kZWQgc3BsYXQgb2YgVU5ERUYgdmFsdWVzLgorICBib29sIGlzU3BsYXRWYWx1ZShTRFZhbHVlIFYsIGNvbnN0IEFQSW50ICZEZW1hbmRlZEVsdHMsIEFQSW50ICZVbmRlZkVsdHMpOworCisgIC8vLyBUZXN0IHdoZXRoZXIgXHAgViBoYXMgYSBzcGxhdHRlZCB2YWx1ZS4KKyAgYm9vbCBpc1NwbGF0VmFsdWUoU0RWYWx1ZSBWLCBib29sIEFsbG93VW5kZWZzID0gZmFsc2UpOworCiAgIC8vLyBNYXRjaCBhIGJpbm9wICsgc2h1ZmZsZSBweXJhbWlkIHRoYXQgcmVwcmVzZW50cyBhIGhvcml6b250YWwgcmVkdWN0aW9uCiAgIC8vLyBvdmVyIHRoZSBlbGVtZW50cyBvZiBhIHZlY3RvciBzdGFydGluZyBmcm9tIHRoZSBFWFRSQUNUX1ZFQ1RPUl9FTFQgbm9kZSAvcAogICAvLy8gRXh0cmFjdC4gVGhlIHJlZHVjdGlvbiBtdXN0IHVzZSBvbmUgb2YgdGhlIG9wY29kZXMgbGlzdGVkIGluIC9wCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2VsZWN0aW9uREFHQWRkcmVzc0FuYWx5c2lzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2VsZWN0aW9uREFHQWRkcmVzc0FuYWx5c2lzLmgKaW5kZXggNTgwNjA2NC4uZjE2OGI4NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NlbGVjdGlvbkRBR0FkZHJlc3NBbmFseXNpcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TZWxlY3Rpb25EQUdBZGRyZXNzQW5hbHlzaXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTZWxlY3Rpb25EQUdBZGRyZXNzQW5hbHlzaXMuaCAtIERBRyBBZGRyZXNzIEFuYWx5c2lzIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTQ1LDE4ICs0NCwyNCBAQAogICAgICAgICBJc0luZGV4U2lnbkV4dChJc0luZGV4U2lnbkV4dCkge30KIAogICBTRFZhbHVlIGdldEJhc2UoKSB7IHJldHVybiBCYXNlOyB9CisgIFNEVmFsdWUgZ2V0QmFzZSgpIGNvbnN0IHsgcmV0dXJuIEJhc2U7IH0KICAgU0RWYWx1ZSBnZXRJbmRleCgpIHsgcmV0dXJuIEluZGV4OyB9CisgIFNEVmFsdWUgZ2V0SW5kZXgoKSBjb25zdCB7IHJldHVybiBJbmRleDsgfQogCi0gIGJvb2wgZXF1YWxCYXNlSW5kZXgoQmFzZUluZGV4T2Zmc2V0ICZPdGhlciwgY29uc3QgU2VsZWN0aW9uREFHICZEQUcpIHsKKyAgYm9vbCBlcXVhbEJhc2VJbmRleChjb25zdCBCYXNlSW5kZXhPZmZzZXQgJk90aGVyLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNlbGVjdGlvbkRBRyAmREFHKSBjb25zdCB7CiAgICAgaW50NjRfdCBPZmY7CiAgICAgcmV0dXJuIGVxdWFsQmFzZUluZGV4KE90aGVyLCBEQUcsIE9mZik7CiAgIH0KIAotICBib29sIGVxdWFsQmFzZUluZGV4KEJhc2VJbmRleE9mZnNldCAmT3RoZXIsIGNvbnN0IFNlbGVjdGlvbkRBRyAmREFHLAotICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgJk9mZik7CisgIGJvb2wgZXF1YWxCYXNlSW5kZXgoY29uc3QgQmFzZUluZGV4T2Zmc2V0ICZPdGhlciwgY29uc3QgU2VsZWN0aW9uREFHICZEQUcsCisgICAgICAgICAgICAgICAgICAgICAgaW50NjRfdCAmT2ZmKSBjb25zdDsKIAogICAvLy8gUGFyc2VzIHRyZWUgaW4gUHRyIGZvciBiYXNlLCBpbmRleCwgb2Zmc2V0IGFkZHJlc3Nlcy4KLSAgc3RhdGljIEJhc2VJbmRleE9mZnNldCBtYXRjaChMU0Jhc2VTRE5vZGUgKk4sIGNvbnN0IFNlbGVjdGlvbkRBRyAmREFHKTsKKyAgc3RhdGljIEJhc2VJbmRleE9mZnNldCBtYXRjaChjb25zdCBMU0Jhc2VTRE5vZGUgKk4sIGNvbnN0IFNlbGVjdGlvbkRBRyAmREFHKTsKKworICB2b2lkIHByaW50KHJhd19vc3RyZWFtJiBPUykgY29uc3Q7CisgIHZvaWQgZHVtcCgpIGNvbnN0OwogfTsKIAogfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TZWxlY3Rpb25EQUdJU2VsLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2VsZWN0aW9uREFHSVNlbC5oCmluZGV4IDg2ZGYwYWYuLjJhY2I5MjIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TZWxlY3Rpb25EQUdJU2VsLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NlbGVjdGlvbkRBR0lTZWwuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9Db2RlR2VuL1NlbGVjdGlvbkRBR0lTZWwuaCAtIENvbW1vbiBCYXNlIENsYXNzLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTMyLDYgKzEzMSw3IEBACiAgICAgT1BDX0NoZWNrQ2hpbGQyU2FtZSwgT1BDX0NoZWNrQ2hpbGQzU2FtZSwKICAgICBPUENfQ2hlY2tQYXR0ZXJuUHJlZGljYXRlLAogICAgIE9QQ19DaGVja1ByZWRpY2F0ZSwKKyAgICBPUENfQ2hlY2tQcmVkaWNhdGVXaXRoT3BlcmFuZHMsCiAgICAgT1BDX0NoZWNrT3Bjb2RlLAogICAgIE9QQ19Td2l0Y2hPcGNvZGUsCiAgICAgT1BDX0NoZWNrVHlwZSwKQEAgLTI2Nyw2ICsyNjcsMTcgQEAKICAgICBsbHZtX3VucmVhY2hhYmxlKCJUYmxnZW4gc2hvdWxkIGdlbmVyYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzISIpOwogICB9CiAKKyAgLy8vIENoZWNrTm9kZVByZWRpY2F0ZVdpdGhPcGVyYW5kcyAtIFRoaXMgZnVuY3Rpb24gaXMgZ2VuZXJhdGVkIGJ5IHRibGdlbiBpbgorICAvLy8gdGhlIHRhcmdldC4KKyAgLy8vIEl0IHJ1bnMgbm9kZSBwcmVkaWNhdGUgbnVtYmVyIFByZWRObyBhbmQgcmV0dXJucyB0cnVlIGlmIGl0IHN1Y2NlZWRzIG9yCisgIC8vLyBmYWxzZSBpZiBpdCBmYWlscy4gIFRoZSBudW1iZXIgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIGRldGFpbCB0byB0aGUKKyAgLy8vIGNvZGUgdGJsZ2VuIHByb2R1Y2VzLgorICB2aXJ0dWFsIGJvb2wgQ2hlY2tOb2RlUHJlZGljYXRlV2l0aE9wZXJhbmRzKAorICAgICAgU0ROb2RlICpOLCB1bnNpZ25lZCBQcmVkTm8sCisgICAgICBjb25zdCBTbWFsbFZlY3RvckltcGw8U0RWYWx1ZT4gJk9wZXJhbmRzKSBjb25zdCB7CisgICAgbGx2bV91bnJlYWNoYWJsZSgiVGJsZ2VuIHNob3VsZCBnZW5lcmF0ZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyEiKTsKKyAgfQorCiAgIHZpcnR1YWwgYm9vbCBDaGVja0NvbXBsZXhQYXR0ZXJuKFNETm9kZSAqUm9vdCwgU0ROb2RlICpQYXJlbnQsIFNEVmFsdWUgTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgUGF0dGVybk5vLAogICAgICAgICAgICAgICAgICAgICAgICAgU21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxTRFZhbHVlLCBTRE5vZGUqPiA+ICZSZXN1bHQpIHsKQEAgLTI5MSw3ICszMDIsNyBAQAogcHJpdmF0ZToKIAogICAvLyBDYWxscyB0byB0aGVzZSBmdW5jdGlvbnMgYXJlIGdlbmVyYXRlZCBieSB0YmxnZW4uCi0gIHZvaWQgU2VsZWN0X0lOTElORUFTTShTRE5vZGUgKk4pOworICB2b2lkIFNlbGVjdF9JTkxJTkVBU00oU0ROb2RlICpOLCBib29sIEJyYW5jaCk7CiAgIHZvaWQgU2VsZWN0X1JFQURfUkVHSVNURVIoU0ROb2RlICpPcCk7CiAgIHZvaWQgU2VsZWN0X1dSSVRFX1JFR0lTVEVSKFNETm9kZSAqT3ApOwogICB2b2lkIFNlbGVjdF9VTkRFRihTRE5vZGUgKk4pOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NlbGVjdGlvbkRBR05vZGVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2VsZWN0aW9uREFHTm9kZXMuaAppbmRleCAyOGQyN2I3Li5jMGRkOWQxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2VsZWN0aW9uREFHTm9kZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2VsZWN0aW9uREFHTm9kZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vU2VsZWN0aW9uREFHTm9kZXMuaCAtIFNlbGVjdGlvbkRBRyBOb2RlcyAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTg0LDYgKzE4Myw3IEBACiAgIGlubGluZSB1bnNpZ25lZCBnZXROdW1PcGVyYW5kcygpIGNvbnN0OwogICBpbmxpbmUgY29uc3QgU0RWYWx1ZSAmZ2V0T3BlcmFuZCh1bnNpZ25lZCBpKSBjb25zdDsKICAgaW5saW5lIHVpbnQ2NF90IGdldENvbnN0YW50T3BlcmFuZFZhbCh1bnNpZ25lZCBpKSBjb25zdDsKKyAgaW5saW5lIGNvbnN0IEFQSW50ICZnZXRDb25zdGFudE9wZXJhbmRBUEludCh1bnNpZ25lZCBpKSBjb25zdDsKICAgaW5saW5lIGJvb2wgaXNUYXJnZXRNZW1vcnlPcGNvZGUoKSBjb25zdDsKICAgaW5saW5lIGJvb2wgaXNUYXJnZXRPcGNvZGUoKSBjb25zdDsKICAgaW5saW5lIGJvb2wgaXNNYWNoaW5lT3Bjb2RlKCkgY29uc3Q7CkBAIC0yMzIsNyArMjMyLDYgQEAKICAgICByZXR1cm4gTEhTID09IFJIUzsKICAgfQogfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc1BvZExpa2U8U0RWYWx1ZT4geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7IH07CiAKIC8vLyBBbGxvdyBjYXN0aW5nIG9wZXJhdG9ycyB0byB3b3JrIGRpcmVjdGx5IG9uCiAvLy8gU0RWYWx1ZXMgYXMgaWYgdGhleSB3ZXJlIFNETm9kZSoncy4KQEAgLTY3Miw2ICs2NzEsMTIgQEAKICAgICAgIGNhc2UgSVNEOjpTVFJJQ1RfRkxPRzI6CiAgICAgICBjYXNlIElTRDo6U1RSSUNUX0ZSSU5UOgogICAgICAgY2FzZSBJU0Q6OlNUUklDVF9GTkVBUkJZSU5UOgorICAgICAgY2FzZSBJU0Q6OlNUUklDVF9GTUFYTlVNOgorICAgICAgY2FzZSBJU0Q6OlNUUklDVF9GTUlOTlVNOgorICAgICAgY2FzZSBJU0Q6OlNUUklDVF9GQ0VJTDoKKyAgICAgIGNhc2UgSVNEOjpTVFJJQ1RfRkZMT09SOgorICAgICAgY2FzZSBJU0Q6OlNUUklDVF9GUk9VTkQ6CisgICAgICBjYXNlIElTRDo6U1RSSUNUX0ZUUlVOQzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICB9CkBAIC04OTIsOSArODk3LDE3IEBACiAgIC8vLyBSZXR1cm4gdGhlIG51bWJlciBvZiB2YWx1ZXMgdXNlZCBieSB0aGlzIG9wZXJhdGlvbi4KICAgdW5zaWduZWQgZ2V0TnVtT3BlcmFuZHMoKSBjb25zdCB7IHJldHVybiBOdW1PcGVyYW5kczsgfQogCisgIC8vLyBSZXR1cm4gdGhlIG1heGltdW0gbnVtYmVyIG9mIG9wZXJhbmRzIHRoYXQgYSBTRE5vZGUgY2FuIGhvbGQuCisgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGdldE1heE51bU9wZXJhbmRzKCkgeworICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRlY2x0eXBlKFNETm9kZTo6TnVtT3BlcmFuZHMpPjo6bWF4KCk7CisgIH0KKwogICAvLy8gSGVscGVyIG1ldGhvZCByZXR1cm5zIHRoZSBpbnRlZ2VyIHZhbHVlIG9mIGEgQ29uc3RhbnRTRE5vZGUgb3BlcmFuZC4KICAgaW5saW5lIHVpbnQ2NF90IGdldENvbnN0YW50T3BlcmFuZFZhbCh1bnNpZ25lZCBOdW0pIGNvbnN0OwogCisgIC8vLyBIZWxwZXIgbWV0aG9kIHJldHVybnMgdGhlIEFQSW50IG9mIGEgQ29uc3RhbnRTRE5vZGUgb3BlcmFuZC4KKyAgaW5saW5lIGNvbnN0IEFQSW50ICZnZXRDb25zdGFudE9wZXJhbmRBUEludCh1bnNpZ25lZCBOdW0pIGNvbnN0OworCiAgIGNvbnN0IFNEVmFsdWUgJmdldE9wZXJhbmQodW5zaWduZWQgTnVtKSBjb25zdCB7CiAgICAgYXNzZXJ0KE51bSA8IE51bU9wZXJhbmRzICYmICJJbnZhbGlkIGNoaWxkICMgb2YgU0ROb2RlISIpOwogICAgIHJldHVybiBPcGVyYW5kTGlzdFtOdW1dOwpAQCAtMTEyMiw2ICsxMTM1LDEwIEBACiAgIHJldHVybiBOb2RlLT5nZXRDb25zdGFudE9wZXJhbmRWYWwoaSk7CiB9CiAKK2lubGluZSBjb25zdCBBUEludCAmU0RWYWx1ZTo6Z2V0Q29uc3RhbnRPcGVyYW5kQVBJbnQodW5zaWduZWQgaSkgY29uc3QgeworICByZXR1cm4gTm9kZS0+Z2V0Q29uc3RhbnRPcGVyYW5kQVBJbnQoaSk7Cit9CisKIGlubGluZSBib29sIFNEVmFsdWU6OmlzVGFyZ2V0T3Bjb2RlKCkgY29uc3QgewogICByZXR1cm4gTm9kZS0+aXNUYXJnZXRPcGNvZGUoKTsKIH0KQEAgLTEzNTAsNiArMTM2Nyw4IEBACiAgICAgICAgICAgIE4tPmdldE9wY29kZSgpID09IElTRDo6QVRPTUlDX0xPQURfTUFYICAgICB8fAogICAgICAgICAgICBOLT5nZXRPcGNvZGUoKSA9PSBJU0Q6OkFUT01JQ19MT0FEX1VNSU4gICAgfHwKICAgICAgICAgICAgTi0+Z2V0T3Bjb2RlKCkgPT0gSVNEOjpBVE9NSUNfTE9BRF9VTUFYICAgIHx8CisgICAgICAgICAgIE4tPmdldE9wY29kZSgpID09IElTRDo6QVRPTUlDX0xPQURfRkFERCAgICB8fAorICAgICAgICAgICBOLT5nZXRPcGNvZGUoKSA9PSBJU0Q6OkFUT01JQ19MT0FEX0ZTVUIgICAgfHwKICAgICAgICAgICAgTi0+Z2V0T3Bjb2RlKCkgPT0gSVNEOjpBVE9NSUNfTE9BRCAgICAgICAgIHx8CiAgICAgICAgICAgIE4tPmdldE9wY29kZSgpID09IElTRDo6QVRPTUlDX1NUT1JFICAgICAgICB8fAogICAgICAgICAgICBOLT5nZXRPcGNvZGUoKSA9PSBJU0Q6Ok1MT0FEICAgICAgICAgICAgICAgfHwKQEAgLTE0MDIsNiArMTQyMSw4IEBACiAgICAgICAgICAgIE4tPmdldE9wY29kZSgpID09IElTRDo6QVRPTUlDX0xPQURfTUFYICAgICB8fAogICAgICAgICAgICBOLT5nZXRPcGNvZGUoKSA9PSBJU0Q6OkFUT01JQ19MT0FEX1VNSU4gICAgfHwKICAgICAgICAgICAgTi0+Z2V0T3Bjb2RlKCkgPT0gSVNEOjpBVE9NSUNfTE9BRF9VTUFYICAgIHx8CisgICAgICAgICAgIE4tPmdldE9wY29kZSgpID09IElTRDo6QVRPTUlDX0xPQURfRkFERCAgICB8fAorICAgICAgICAgICBOLT5nZXRPcGNvZGUoKSA9PSBJU0Q6OkFUT01JQ19MT0FEX0ZTVUIgICAgfHwKICAgICAgICAgICAgTi0+Z2V0T3Bjb2RlKCkgPT0gSVNEOjpBVE9NSUNfTE9BRCAgICAgICAgIHx8CiAgICAgICAgICAgIE4tPmdldE9wY29kZSgpID09IElTRDo6QVRPTUlDX1NUT1JFOwogICB9CkBAIC0xNTMwLDYgKzE1NTEsMTAgQEAKICAgcmV0dXJuIGNhc3Q8Q29uc3RhbnRTRE5vZGU+KGdldE9wZXJhbmQoTnVtKSktPmdldFpFeHRWYWx1ZSgpOwogfQogCitjb25zdCBBUEludCAmU0ROb2RlOjpnZXRDb25zdGFudE9wZXJhbmRBUEludCh1bnNpZ25lZCBOdW0pIGNvbnN0IHsKKyAgcmV0dXJuIGNhc3Q8Q29uc3RhbnRTRE5vZGU+KGdldE9wZXJhbmQoTnVtKSktPmdldEFQSW50VmFsdWUoKTsKK30KKwogY2xhc3MgQ29uc3RhbnRGUFNETm9kZSA6IHB1YmxpYyBTRE5vZGUgewogICBmcmllbmQgY2xhc3MgU2VsZWN0aW9uREFHOwogCkBAIC0xNjA3LDYgKzE2MzIsMjEgQEAKIC8vLyBSZXR1cm5zIHRoZSBTRE5vZGUgaWYgaXQgaXMgYSBjb25zdGFudCBzcGxhdCBCdWlsZFZlY3RvciBvciBjb25zdGFudCBmbG9hdC4KIENvbnN0YW50RlBTRE5vZGUgKmlzQ29uc3RPckNvbnN0U3BsYXRGUChTRFZhbHVlIE4sIGJvb2wgQWxsb3dVbmRlZnMgPSBmYWxzZSk7CiAKKy8vLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSBjb25zdGFudCAwIGludGVnZXIgb3IgYSBzcGxhdHRlZCB2ZWN0b3Igb2YKKy8vLyBhIGNvbnN0YW50IDAgaW50ZWdlciAod2l0aCBubyB1bmRlZnMgYnkgZGVmYXVsdCkuCisvLy8gQnVpbGQgdmVjdG9yIGltcGxpY2l0IHRydW5jYXRpb24gaXMgbm90IGFuIGlzc3VlIGZvciBudWxsIHZhbHVlcy4KK2Jvb2wgaXNOdWxsT3JOdWxsU3BsYXQoU0RWYWx1ZSBWLCBib29sIEFsbG93VW5kZWZzID0gZmFsc2UpOworCisvLy8gUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIGlzIGEgY29uc3RhbnQgMSBpbnRlZ2VyIG9yIGEgc3BsYXR0ZWQgdmVjdG9yIG9mIGEKKy8vLyBjb25zdGFudCAxIGludGVnZXIgKHdpdGggbm8gdW5kZWZzKS4KKy8vLyBEb2VzIG5vdCBwZXJtaXQgYnVpbGQgdmVjdG9yIGltcGxpY2l0IHRydW5jYXRpb24uCitib29sIGlzT25lT3JPbmVTcGxhdChTRFZhbHVlIFYpOworCisvLy8gUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIGlzIGEgY29uc3RhbnQgLTEgaW50ZWdlciBvciBhIHNwbGF0dGVkIHZlY3RvciBvZiBhCisvLy8gY29uc3RhbnQgLTEgaW50ZWdlciAod2l0aCBubyB1bmRlZnMpLgorLy8vIERvZXMgbm90IHBlcm1pdCBidWlsZCB2ZWN0b3IgaW1wbGljaXQgdHJ1bmNhdGlvbi4KK2Jvb2wgaXNBbGxPbmVzT3JBbGxPbmVzU3BsYXQoU0RWYWx1ZSBWKTsKKwogY2xhc3MgR2xvYmFsQWRkcmVzc1NETm9kZSA6IHB1YmxpYyBTRE5vZGUgewogICBmcmllbmQgY2xhc3MgU2VsZWN0aW9uREFHOwogCkBAIC0yNDY2LDE1ICsyNTA2LDE4IEBACiAKICAgLy8vIEF0dGVtcHQgdG8gbWF0Y2ggYSB1bmFyeSBwcmVkaWNhdGUgYWdhaW5zdCBhIHNjYWxhci9zcGxhdCBjb25zdGFudCBvcgogICAvLy8gZXZlcnkgZWxlbWVudCBvZiBhIGNvbnN0YW50IEJVSUxEX1ZFQ1RPUi4KKyAgLy8vIElmIEFsbG93VW5kZWYgaXMgdHJ1ZSwgdGhlbiBVTkRFRiBlbGVtZW50cyB3aWxsIHBhc3MgbnVsbHB0ciB0byBNYXRjaC4KICAgYm9vbCBtYXRjaFVuYXJ5UHJlZGljYXRlKFNEVmFsdWUgT3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmZ1bmN0aW9uPGJvb2woQ29uc3RhbnRTRE5vZGUgKik+IE1hdGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZnVuY3Rpb248Ym9vbChDb25zdGFudFNETm9kZSAqKT4gTWF0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIEFsbG93VW5kZWZzID0gZmFsc2UpOwogCiAgIC8vLyBBdHRlbXB0IHRvIG1hdGNoIGEgYmluYXJ5IHByZWRpY2F0ZSBhZ2FpbnN0IGEgcGFpciBvZiBzY2FsYXIvc3BsYXQKICAgLy8vIGNvbnN0YW50cyBvciBldmVyeSBlbGVtZW50IG9mIGEgcGFpciBvZiBjb25zdGFudCBCVUlMRF9WRUNUT1JzLgorICAvLy8gSWYgQWxsb3dVbmRlZiBpcyB0cnVlLCB0aGVuIFVOREVGIGVsZW1lbnRzIHdpbGwgcGFzcyBudWxscHRyIHRvIE1hdGNoLgogICBib29sIG1hdGNoQmluYXJ5UHJlZGljYXRlKAogICAgICAgU0RWYWx1ZSBMSFMsIFNEVmFsdWUgUkhTLAotICAgICAgc3RkOjpmdW5jdGlvbjxib29sKENvbnN0YW50U0ROb2RlICosIENvbnN0YW50U0ROb2RlICopPiBNYXRjaCk7Ci0KKyAgICAgIHN0ZDo6ZnVuY3Rpb248Ym9vbChDb25zdGFudFNETm9kZSAqLCBDb25zdGFudFNETm9kZSAqKT4gTWF0Y2gsCisgICAgICBib29sIEFsbG93VW5kZWZzID0gZmFsc2UpOwogfSAvLyBlbmQgbmFtZXNwYWNlIElTRAogCiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NlbGVjdGlvbkRBR1RhcmdldEluZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TZWxlY3Rpb25EQUdUYXJnZXRJbmZvLmgKaW5kZXggNDVjMWRmNC4uN2M5ZjU3YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1NlbGVjdGlvbkRBR1RhcmdldEluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2VsZWN0aW9uREFHVGFyZ2V0SW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0gbGx2bS9Db2RlR2VuL1NlbGVjdGlvbkRBR1RhcmdldEluZm8uaCAtIFNlbGVjdGlvbkRBRyBJbmZvIC0tKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU2xvdEluZGV4ZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TbG90SW5kZXhlcy5oCmluZGV4IDU1MDgyMjIuLjYzNDYxZDYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TbG90SW5kZXhlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TbG90SW5kZXhlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ29kZUdlbi9TbG90SW5kZXhlcy5oIC0gU2xvdCBpbmRleGVzIHJlcHJlc2VudGF0aW9uIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zMDIsOCArMzAxLDYgQEAKICAgICB9CiAgIH07CiAKLSAgdGVtcGxhdGUgPD4gc3RydWN0IGlzUG9kTGlrZTxTbG90SW5kZXg+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotCiAgIGlubGluZSByYXdfb3N0cmVhbSYgb3BlcmF0b3I8PChyYXdfb3N0cmVhbSAmb3MsIFNsb3RJbmRleCBsaSkgewogICAgIGxpLnByaW50KG9zKTsKICAgICByZXR1cm4gb3M7CkBAIC00MTMsMTAgKzQxMCwxNCBAQAogICAgIC8vLyBSZXR1cm5zIHRoZSBiYXNlIGluZGV4IGZvciB0aGUgZ2l2ZW4gaW5zdHJ1Y3Rpb24uCiAgICAgU2xvdEluZGV4IGdldEluc3RydWN0aW9uSW5kZXgoY29uc3QgTWFjaGluZUluc3RyICZNSSkgY29uc3QgewogICAgICAgLy8gSW5zdHJ1Y3Rpb25zIGluc2lkZSBhIGJ1bmRsZSBoYXZlIHRoZSBzYW1lIG51bWJlciBhcyB0aGUgYnVuZGxlIGl0c2VsZi4KLSAgICAgIGNvbnN0IE1hY2hpbmVJbnN0ciAmQnVuZGxlU3RhcnQgPSAqZ2V0QnVuZGxlU3RhcnQoTUkuZ2V0SXRlcmF0b3IoKSk7Ci0gICAgICBhc3NlcnQoIUJ1bmRsZVN0YXJ0LmlzRGVidWdJbnN0cigpICYmCisgICAgICBhdXRvIEJ1bmRsZVN0YXJ0ID0gZ2V0QnVuZGxlU3RhcnQoTUkuZ2V0SXRlcmF0b3IoKSk7CisgICAgICBhdXRvIEJ1bmRsZUVuZCA9IGdldEJ1bmRsZUVuZChNSS5nZXRJdGVyYXRvcigpKTsKKyAgICAgIC8vIFVzZSB0aGUgZmlyc3Qgbm9uLWRlYnVnIGluc3RydWN0aW9uIGluIHRoZSBidW5kbGUgdG8gZ2V0IFNsb3RJbmRleC4KKyAgICAgIGNvbnN0IE1hY2hpbmVJbnN0ciAmQnVuZGxlTm9uRGVidWcgPQorICAgICAgICAgICpza2lwRGVidWdJbnN0cnVjdGlvbnNGb3J3YXJkKEJ1bmRsZVN0YXJ0LCBCdW5kbGVFbmQpOworICAgICAgYXNzZXJ0KCFCdW5kbGVOb25EZWJ1Zy5pc0RlYnVnSW5zdHIoKSAmJgogICAgICAgICAgICAgICJDb3VsZCBub3QgdXNlIGEgZGVidWcgaW5zdHJ1Y3Rpb24gdG8gcXVlcnkgbWkyaU1hcC4iKTsKLSAgICAgIE1pMkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdHIgPSBtaTJpTWFwLmZpbmQoJkJ1bmRsZVN0YXJ0KTsKKyAgICAgIE1pMkluZGV4TWFwOjpjb25zdF9pdGVyYXRvciBpdHIgPSBtaTJpTWFwLmZpbmQoJkJ1bmRsZU5vbkRlYnVnKTsKICAgICAgIGFzc2VydChpdHIgIT0gbWkyaU1hcC5lbmQoKSAmJiAiSW5zdHJ1Y3Rpb24gbm90IGZvdW5kIGluIG1hcHMuIik7CiAgICAgICByZXR1cm4gaXRyLT5zZWNvbmQ7CiAgICAgfQpAQCAtNDQ0LDcgKzQ0NSw3IEBACiAgICAgLy8vIE1JIGlzIG5vdCByZXF1aXJlZCB0byBoYXZlIGFuIGluZGV4LgogICAgIFNsb3RJbmRleCBnZXRJbmRleEJlZm9yZShjb25zdCBNYWNoaW5lSW5zdHIgJk1JKSBjb25zdCB7CiAgICAgICBjb25zdCBNYWNoaW5lQmFzaWNCbG9jayAqTUJCID0gTUkuZ2V0UGFyZW50KCk7Ci0gICAgICBhc3NlcnQoTUJCICYmICJNSSBtdXN0IGJlIGluc2VydGVkIGlubmEgYmFzaWMgYmxvY2siKTsKKyAgICAgIGFzc2VydChNQkIgJiYgIk1JIG11c3QgYmUgaW5zZXJ0ZWQgaW4gYSBiYXNpYyBibG9jayIpOwogICAgICAgTWFjaGluZUJhc2ljQmxvY2s6OmNvbnN0X2l0ZXJhdG9yIEkgPSBNSSwgQiA9IE1CQi0+YmVnaW4oKTsKICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGlmIChJID09IEIpCkBAIC00NjEsNyArNDYyLDcgQEAKICAgICAvLy8gTUkgaXMgbm90IHJlcXVpcmVkIHRvIGhhdmUgYW4gaW5kZXguCiAgICAgU2xvdEluZGV4IGdldEluZGV4QWZ0ZXIoY29uc3QgTWFjaGluZUluc3RyICZNSSkgY29uc3QgewogICAgICAgY29uc3QgTWFjaGluZUJhc2ljQmxvY2sgKk1CQiA9IE1JLmdldFBhcmVudCgpOwotICAgICAgYXNzZXJ0KE1CQiAmJiAiTUkgbXVzdCBiZSBpbnNlcnRlZCBpbm5hIGJhc2ljIGJsb2NrIik7CisgICAgICBhc3NlcnQoTUJCICYmICJNSSBtdXN0IGJlIGluc2VydGVkIGluIGEgYmFzaWMgYmxvY2siKTsKICAgICAgIE1hY2hpbmVCYXNpY0Jsb2NrOjpjb25zdF9pdGVyYXRvciBJID0gTUksIEUgPSBNQkItPmVuZCgpOwogICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgKytJOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1N0YWNrTWFwcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1N0YWNrTWFwcy5oCmluZGV4IGU1ODRhNDEuLmQ3ZDg4ZGUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9TdGFja01hcHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU3RhY2tNYXBzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3RhY2tNYXBzLmggLSBTdGFja01hcHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0yMzYsMjUgKzIzNSw2IEBACiAgICAgRm5JbmZvcy5jbGVhcigpOwogICB9CiAKLSAgLy8vIEdlbmVyYXRlIGEgc3RhY2ttYXAgcmVjb3JkIGZvciBhIHN0YWNrbWFwIGluc3RydWN0aW9uLgotICAvLy8KLSAgLy8vIE1JIG11c3QgYmUgYSByYXcgU1RBQ0tNQVAsIG5vdCBhIFBBVENIUE9JTlQuCi0gIHZvaWQgcmVjb3JkU3RhY2tNYXAoY29uc3QgTWFjaGluZUluc3RyICZNSSk7Ci0KLSAgLy8vIEdlbmVyYXRlIGEgc3RhY2ttYXAgcmVjb3JkIGZvciBhIHBhdGNocG9pbnQgaW5zdHJ1Y3Rpb24uCi0gIHZvaWQgcmVjb3JkUGF0Y2hQb2ludChjb25zdCBNYWNoaW5lSW5zdHIgJk1JKTsKLQotICAvLy8gR2VuZXJhdGUgYSBzdGFja21hcCByZWNvcmQgZm9yIGEgc3RhdGVwb2ludCBpbnN0cnVjdGlvbi4KLSAgdm9pZCByZWNvcmRTdGF0ZXBvaW50KGNvbnN0IE1hY2hpbmVJbnN0ciAmTUkpOwotCi0gIC8vLyBJZiB0aGVyZSBpcyBhbnkgc3RhY2sgbWFwIGRhdGEsIGNyZWF0ZSBhIHN0YWNrIG1hcCBzZWN0aW9uIGFuZCBzZXJpYWxpemUKLSAgLy8vIHRoZSBtYXAgaW5mbyBpbnRvIGl0LiBUaGlzIGNsZWFycyB0aGUgc3RhY2sgbWFwIGRhdGEgc3RydWN0dXJlcwotICAvLy8gYWZ0ZXJ3YXJkcy4KLSAgdm9pZCBzZXJpYWxpemVUb1N0YWNrTWFwU2VjdGlvbigpOwotCi1wcml2YXRlOgotICBzdGF0aWMgY29uc3QgY2hhciAqV1NNUDsKLQogICB1c2luZyBMb2NhdGlvblZlYyA9IFNtYWxsVmVjdG9yPExvY2F0aW9uLCA4PjsKICAgdXNpbmcgTGl2ZU91dFZlYyA9IFNtYWxsVmVjdG9yPExpdmVPdXRSZWcsIDg+OwogICB1c2luZyBDb25zdGFudFBvb2wgPSBNYXBWZWN0b3I8dWludDY0X3QsIHVpbnQ2NF90PjsKQEAgLTI4Myw2ICsyNjMsMzEgQEAKICAgdXNpbmcgRm5JbmZvTWFwID0gTWFwVmVjdG9yPGNvbnN0IE1DU3ltYm9sICosIEZ1bmN0aW9uSW5mbz47CiAgIHVzaW5nIENhbGxzaXRlSW5mb0xpc3QgPSBzdGQ6OnZlY3RvcjxDYWxsc2l0ZUluZm8+OwogCisgIC8vLyBHZW5lcmF0ZSBhIHN0YWNrbWFwIHJlY29yZCBmb3IgYSBzdGFja21hcCBpbnN0cnVjdGlvbi4KKyAgLy8vCisgIC8vLyBNSSBtdXN0IGJlIGEgcmF3IFNUQUNLTUFQLCBub3QgYSBQQVRDSFBPSU5ULgorICB2b2lkIHJlY29yZFN0YWNrTWFwKGNvbnN0IE1hY2hpbmVJbnN0ciAmTUkpOworCisgIC8vLyBHZW5lcmF0ZSBhIHN0YWNrbWFwIHJlY29yZCBmb3IgYSBwYXRjaHBvaW50IGluc3RydWN0aW9uLgorICB2b2lkIHJlY29yZFBhdGNoUG9pbnQoY29uc3QgTWFjaGluZUluc3RyICZNSSk7CisKKyAgLy8vIEdlbmVyYXRlIGEgc3RhY2ttYXAgcmVjb3JkIGZvciBhIHN0YXRlcG9pbnQgaW5zdHJ1Y3Rpb24uCisgIHZvaWQgcmVjb3JkU3RhdGVwb2ludChjb25zdCBNYWNoaW5lSW5zdHIgJk1JKTsKKworICAvLy8gSWYgdGhlcmUgaXMgYW55IHN0YWNrIG1hcCBkYXRhLCBjcmVhdGUgYSBzdGFjayBtYXAgc2VjdGlvbiBhbmQgc2VyaWFsaXplCisgIC8vLyB0aGUgbWFwIGluZm8gaW50byBpdC4gVGhpcyBjbGVhcnMgdGhlIHN0YWNrIG1hcCBkYXRhIHN0cnVjdHVyZXMKKyAgLy8vIGFmdGVyd2FyZHMuCisgIHZvaWQgc2VyaWFsaXplVG9TdGFja01hcFNlY3Rpb24oKTsKKworICAvLy8gR2V0IGNhbGwgc2l0ZSBpbmZvLgorICBDYWxsc2l0ZUluZm9MaXN0ICZnZXRDU0luZm9zKCkgeyByZXR1cm4gQ1NJbmZvczsgfQorCisgIC8vLyBHZXQgZnVuY3Rpb24gaW5mby4KKyAgRm5JbmZvTWFwICZnZXRGbkluZm9zKCkgeyByZXR1cm4gRm5JbmZvczsgfQorCitwcml2YXRlOgorICBzdGF0aWMgY29uc3QgY2hhciAqV1NNUDsKKwogICBBc21QcmludGVyICZBUDsKICAgQ2FsbHNpdGVJbmZvTGlzdCBDU0luZm9zOwogICBDb25zdGFudFBvb2wgQ29uc3RQb29sOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1N0YWNrUHJvdGVjdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU3RhY2tQcm90ZWN0b3IuaAppbmRleCBhNTA2YWM2Li5lZDUyZGIzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU3RhY2tQcm90ZWN0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vU3RhY2tQcm90ZWN0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTdGFja1Byb3RlY3Rvci5oIC0gU3RhY2sgUHJvdGVjdG9yIEluc2VydGlvbiAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1RhaWxEdXBsaWNhdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFpbER1cGxpY2F0b3IuaAppbmRleCBiZTY1NjJjLi4zNTg3OThkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFpbER1cGxpY2F0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFpbER1cGxpY2F0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vVGFpbER1cGxpY2F0b3IuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1RhcmdldENhbGxpbmdDb252LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0Q2FsbGluZ0NvbnYuaAppbmRleCA3ZDEzOGY1Li5mODJjMDVkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0Q2FsbGluZ0NvbnYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0Q2FsbGluZ0NvbnYuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9Db2RlR2VuL1RhcmdldENhbGxpbmdDb252LmggLSBDYWxsaW5nIENvbnZlbnRpb24gLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1RhcmdldEZyYW1lTG93ZXJpbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9UYXJnZXRGcmFtZUxvd2VyaW5nLmgKaW5kZXggZjhlZmZlZS4uNzU0ZWU1YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1RhcmdldEZyYW1lTG93ZXJpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0RnJhbWVMb3dlcmluZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0NvZGVHZW4vVGFyZ2V0RnJhbWVMb3dlcmluZy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yMDcsOCArMjA2LDExIEBACiAgICAgcmV0dXJuIGZhbHNlOwogICB9CiAKLSAgLy8vIFJldHVybiB0cnVlIGlmIHRoZSB0YXJnZXQgbmVlZHMgdG8gZGlzYWJsZSBmcmFtZSBwb2ludGVyIGVsaW1pbmF0aW9uLgotICB2aXJ0dWFsIGJvb2wgbm9GcmFtZVBvaW50ZXJFbGltKGNvbnN0IE1hY2hpbmVGdW5jdGlvbiAmTUYpIGNvbnN0OworICAvLy8gUmV0dXJuIHRydWUgaWYgdGhlIHRhcmdldCB3YW50cyB0byBrZWVwIHRoZSBmcmFtZSBwb2ludGVyIHJlZ2FyZGxlc3Mgb2YKKyAgLy8vIHRoZSBmdW5jdGlvbiBhdHRyaWJ1dGUgImZyYW1lLXBvaW50ZXIiLgorICB2aXJ0dWFsIGJvb2wga2VlcEZyYW1lUG9pbnRlcihjb25zdCBNYWNoaW5lRnVuY3Rpb24gJk1GKSBjb25zdCB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CiAKICAgLy8vIGhhc0ZQIC0gUmV0dXJuIHRydWUgaWYgdGhlIHNwZWNpZmllZCBmdW5jdGlvbiBzaG91bGQgaGF2ZSBhIGRlZGljYXRlZAogICAvLy8gZnJhbWUgcG9pbnRlciByZWdpc3Rlci4gRm9yIG1vc3QgdGFyZ2V0cyB0aGlzIGlzIHRydWUgb25seSBpZiB0aGUgZnVuY3Rpb24KQEAgLTI1OSw2ICsyNjEsMTcgQEAKICAgICByZXR1cm4gZ2V0RnJhbWVJbmRleFJlZmVyZW5jZShNRiwgRkksIEZyYW1lUmVnKTsKICAgfQogCisgIC8vLyBnZXROb25Mb2NhbEZyYW1lSW5kZXhSZWZlcmVuY2UgLSBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBvZmZzZXQgdXNlZCB0bworICAvLy8gcmVmZXJlbmNlIGEgZnJhbWUgaW5kZXggbG9jYXRpb24uIFRoZSBvZmZzZXQgY2FuIGJlIGZyb20gZWl0aGVyIEZQL0JQL1NQCisgIC8vLyBiYXNlZCBvbiB3aGljaCBiYXNlIHJlZ2lzdGVyIGlzIHJldHVybmVkIGJ5IGxsdm0ubG9jYWxhZGRyZXNzLgorICB2aXJ0dWFsIGludCBnZXROb25Mb2NhbEZyYW1lSW5kZXhSZWZlcmVuY2UoY29uc3QgTWFjaGluZUZ1bmN0aW9uICZNRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBGSSkgY29uc3QgeworICAgIC8vIEJ5IGRlZmF1bHQsIGRpc3BhdGNoIHRvIGdldEZyYW1lSW5kZXhSZWZlcmVuY2UuIEludGVyZXN0ZWQgdGFyZ2V0cyBjYW4KKyAgICAvLyBvdmVycmlkZSB0aGlzLgorICAgIHVuc2lnbmVkIEZyYW1lUmVnOworICAgIHJldHVybiBnZXRGcmFtZUluZGV4UmVmZXJlbmNlKE1GLCBGSSwgRnJhbWVSZWcpOworICB9CisKICAgLy8vIFRoaXMgbWV0aG9kIGRldGVybWluZXMgd2hpY2ggb2YgdGhlIHJlZ2lzdGVycyByZXBvcnRlZCBieQogICAvLy8gVGFyZ2V0UmVnaXN0ZXJJbmZvOjpnZXRDYWxsZWVTYXZlZFJlZ3MoKSBzaG91bGQgYWN0dWFsbHkgZ2V0IHNhdmVkLgogICAvLy8gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2hlY2tzIHBvcHVsYXRlcyB0aGUgXHAgU2F2ZWRSZWdzIGJpdHNldCB3aXRoCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0SW5zdHJJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0SW5zdHJJbmZvLmgKaW5kZXggMWZhM2RlNC4uYjczMmJlNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1RhcmdldEluc3RySW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9UYXJnZXRJbnN0ckluZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vVGFyZ2V0SW5zdHJJbmZvLmggLSBJbnN0cnVjdGlvbiBJbmZvIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNDI5LDYgKzQyOCwxMyBAQAogCiAgICAgUmVnU3ViUmVnUGFpcih1bnNpZ25lZCBSZWcgPSAwLCB1bnNpZ25lZCBTdWJSZWcgPSAwKQogICAgICAgICA6IFJlZyhSZWcpLCBTdWJSZWcoU3ViUmVnKSB7fQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ1N1YlJlZ1BhaXImIFApIGNvbnN0IHsKKyAgICAgIHJldHVybiBSZWcgPT0gUC5SZWcgJiYgU3ViUmVnID09IFAuU3ViUmVnOworICAgIH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVnU3ViUmVnUGFpciYgUCkgY29uc3QgeworICAgICAgcmV0dXJuICEoKnRoaXMgPT0gUCk7CisgICAgfQogICB9OwogCiAgIC8vLyBBIHBhaXIgY29tcG9zZWQgb2YgYSBwYWlyIG9mIGEgcmVnaXN0ZXIgYW5kIGEgc3ViLXJlZ2lzdGVyIGluZGV4LApAQCAtMTEzNiwxMSArMTE0MiwxMSBAQAogICAgIHJldHVybiBmYWxzZTsKICAgfQogCi0gIC8vLyBHZXQgdGhlIGJhc2UgcmVnaXN0ZXIgYW5kIGJ5dGUgb2Zmc2V0IG9mIGFuIGluc3RydWN0aW9uIHRoYXQgcmVhZHMvd3JpdGVzCisgIC8vLyBHZXQgdGhlIGJhc2Ugb3BlcmFuZCBhbmQgYnl0ZSBvZmZzZXQgb2YgYW4gaW5zdHJ1Y3Rpb24gdGhhdCByZWFkcy93cml0ZXMKICAgLy8vIG1lbW9yeS4KLSAgdmlydHVhbCBib29sIGdldE1lbU9wQmFzZVJlZ0ltbU9mcyhNYWNoaW5lSW5zdHIgJk1lbU9wLCB1bnNpZ25lZCAmQmFzZVJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90ICZPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGFyZ2V0UmVnaXN0ZXJJbmZvICpUUkkpIGNvbnN0IHsKKyAgdmlydHVhbCBib29sIGdldE1lbU9wZXJhbmRXaXRoT2Zmc2V0KE1hY2hpbmVJbnN0ciAmTUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNoaW5lT3BlcmFuZCAqJkJhc2VPcCwgaW50NjRfdCAmT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGFyZ2V0UmVnaXN0ZXJJbmZvICpUUkkpIGNvbnN0IHsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIApAQCAtMTE2NCw4ICsxMTcwLDggQEAKICAgLy8vIG9yCiAgIC8vLyAgIERBRy0+YWRkTXV0YXRpb24oY3JlYXRlU3RvcmVDbHVzdGVyREFHTXV0YXRpb24oREFHLT5USUksIERBRy0+VFJJKSk7CiAgIC8vLyB0byBUYXJnZXRQYXNzQ29uZmlnOjpjcmVhdGVNYWNoaW5lU2NoZWR1bGVyKCkgdG8gaGF2ZSBhbiBlZmZlY3QuCi0gIHZpcnR1YWwgYm9vbCBzaG91bGRDbHVzdGVyTWVtT3BzKE1hY2hpbmVJbnN0ciAmRmlyc3RMZFN0LCB1bnNpZ25lZCBCYXNlUmVnMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjaGluZUluc3RyICZTZWNvbmRMZFN0LCB1bnNpZ25lZCBCYXNlUmVnMiwKKyAgdmlydHVhbCBib29sIHNob3VsZENsdXN0ZXJNZW1PcHMoTWFjaGluZU9wZXJhbmQgJkJhc2VPcDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY2hpbmVPcGVyYW5kICZCYXNlT3AyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBOdW1Mb2FkcykgY29uc3QgewogICAgIGxsdm1fdW5yZWFjaGFibGUoInRhcmdldCBkaWQgbm90IGltcGxlbWVudCBzaG91bGRDbHVzdGVyTWVtT3BzKCkiKTsKICAgfQpAQCAtMTYzNSwxMCArMTY0MSwxMSBAQAogICAgICAgICAiVGFyZ2V0IGRpZG4ndCBpbXBsZW1lbnQgVGFyZ2V0SW5zdHJJbmZvOjpnZXRPdXRsaW5pbmdUeXBlISIpOwogICB9CiAKLSAgLy8vIFJldHVybnMgdGFyZ2V0LWRlZmluZWQgZmxhZ3MgZGVmaW5pbmcgcHJvcGVydGllcyBvZiB0aGUgTUJCIGZvcgotICAvLy8gdGhlIG91dGxpbmVyLgotICB2aXJ0dWFsIHVuc2lnbmVkIGdldE1hY2hpbmVPdXRsaW5lck1CQkZsYWdzKE1hY2hpbmVCYXNpY0Jsb2NrICZNQkIpIGNvbnN0IHsKLSAgICByZXR1cm4gMHgwOworICAvLy8gT3B0aW9uYWwgdGFyZ2V0IGhvb2sgdGhhdCByZXR1cm5zIHRydWUgaWYgXHAgTUJCIGlzIHNhZmUgdG8gb3V0bGluZSBmcm9tLAorICAvLy8gYW5kIHJldHVybnMgYW55IHRhcmdldC1zcGVjaWZpYyBpbmZvcm1hdGlvbiBpbiBccCBGbGFncy4KKyAgdmlydHVhbCBib29sIGlzTUJCU2FmZVRvT3V0bGluZUZyb20oTWFjaGluZUJhc2ljQmxvY2sgJk1CQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgJkZsYWdzKSBjb25zdCB7CisgICAgcmV0dXJuIHRydWU7CiAgIH0KIAogICAvLy8gSW5zZXJ0IGEgY3VzdG9tIGZyYW1lIGZvciBvdXRsaW5lZCBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0TG93ZXJpbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9UYXJnZXRMb3dlcmluZy5oCmluZGV4IGE1OTM5MDcuLmZhNzEwMjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9UYXJnZXRMb3dlcmluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9UYXJnZXRMb3dlcmluZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ29kZUdlbi9UYXJnZXRMb3dlcmluZy5oIC0gVGFyZ2V0IExvd2VyaW5nIEluZm8gLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpAQCAtMTk1LDcgKzE5NCwxMSBAQAogICAgICAgICAgIElzTmVzdChmYWxzZSksIElzQnlWYWwoZmFsc2UpLCBJc0luQWxsb2NhKGZhbHNlKSwgSXNSZXR1cm5lZChmYWxzZSksCiAgICAgICAgICAgSXNTd2lmdFNlbGYoZmFsc2UpLCBJc1N3aWZ0RXJyb3IoZmFsc2UpIHt9CiAKLSAgICB2b2lkIHNldEF0dHJpYnV0ZXMoSW1tdXRhYmxlQ2FsbFNpdGUgKkNTLCB1bnNpZ25lZCBBcmdJZHgpOworICAgIHZvaWQgc2V0QXR0cmlidXRlcyhjb25zdCBDYWxsQmFzZSAqQ2FsbCwgdW5zaWduZWQgQXJnSWR4KTsKKworICAgIHZvaWQgc2V0QXR0cmlidXRlcyhJbW11dGFibGVDYWxsU2l0ZSAqQ1MsIHVuc2lnbmVkIEFyZ0lkeCkgeworICAgICAgcmV0dXJuIHNldEF0dHJpYnV0ZXMoY2FzdDxDYWxsQmFzZT4oQ1MtPmdldEluc3RydWN0aW9uKCkpLCBBcmdJZHgpOworICAgIH0KICAgfTsKICAgdXNpbmcgQXJnTGlzdFR5ID0gc3RkOjp2ZWN0b3I8QXJnTGlzdEVudHJ5PjsKIApAQCAtMjY5LDYgKzI3MiwxNCBAQAogICAgIHJldHVybiB0cnVlOwogICB9CiAKKyAgLy8vIFJldHVybiB0cnVlIGlmIGl0IGlzIHByb2ZpdGFibGUgdG8gY29udmVydCBhIHNlbGVjdCBvZiBGUCBjb25zdGFudHMgaW50bworICAvLy8gYSBjb25zdGFudCBwb29sIGxvYWQgd2hvc2UgYWRkcmVzcyBkZXBlbmRzIG9uIHRoZSBzZWxlY3QgY29uZGl0aW9uLiBUaGUKKyAgLy8vIHBhcmFtZXRlciBtYXkgYmUgdXNlZCB0byBkaWZmZXJlbnRpYXRlIGEgc2VsZWN0IHdpdGggRlAgY29tcGFyZSBmcm9tCisgIC8vLyBpbnRlZ2VyIGNvbXBhcmUuCisgIHZpcnR1YWwgYm9vbCByZWR1Y2VTZWxlY3RPZkZQQ29uc3RhbnRMb2Fkcyhib29sIElzRlBTZXRDQykgY29uc3QgeworICAgIHJldHVybiB0cnVlOworICB9CisKICAgLy8vIFJldHVybiB0cnVlIGlmIG11bHRpcGxlIGNvbmRpdGlvbiByZWdpc3RlcnMgYXJlIGF2YWlsYWJsZS4KICAgYm9vbCBoYXNNdWx0aXBsZUNvbmRpdGlvblJlZ2lzdGVycygpIGNvbnN0IHsKICAgICByZXR1cm4gSGFzTXVsdGlwbGVDb25kaXRpb25SZWdpc3RlcnM7CkBAIC0yNzksNyArMjkwLDcgQEAKIAogICAvLy8gUmV0dXJuIHRoZSBwcmVmZXJyZWQgdmVjdG9yIHR5cGUgbGVnYWxpemF0aW9uIGFjdGlvbi4KICAgdmlydHVhbCBUYXJnZXRMb3dlcmluZ0Jhc2U6OkxlZ2FsaXplVHlwZUFjdGlvbgotICBnZXRQcmVmZXJyZWRWZWN0b3JBY3Rpb24oRVZUIFZUKSBjb25zdCB7CisgIGdldFByZWZlcnJlZFZlY3RvckFjdGlvbihNVlQgVlQpIGNvbnN0IHsKICAgICAvLyBUaGUgZGVmYXVsdCBhY3Rpb24gZm9yIG9uZSBlbGVtZW50IHZlY3RvcnMgaXMgdG8gc2NhbGFyaXplCiAgICAgaWYgKFZULmdldFZlY3Rvck51bUVsZW1lbnRzKCkgPT0gMSkKICAgICAgIHJldHVybiBUeXBlU2NhbGFyaXplVmVjdG9yOwpAQCAtNjM1LDYgKzY0NiwxMyBAQAogICAgIHJldHVybiBSZXBSZWdDbGFzc0Nvc3RGb3JWVFtWVC5TaW1wbGVUeV07CiAgIH0KIAorICAvLy8gUmV0dXJuIHRydWUgaWYgU0hJRlQgaW5zdHJ1Y3Rpb25zIHNob3VsZCBiZSBleHBhbmRlZCB0byBTSElGVF9QQVJUUworICAvLy8gaW5zdHJ1Y3Rpb25zLCBhbmQgZmFsc2UgaWYgYSBsaWJyYXJ5IGNhbGwgaXMgcHJlZmVycmVkIChlLmcgZm9yIGNvZGUtc2l6ZQorICAvLy8gcmVhc29ucykuCisgIHZpcnR1YWwgYm9vbCBzaG91bGRFeHBhbmRTaGlmdChTZWxlY3Rpb25EQUcgJkRBRywgU0ROb2RlICpOKSBjb25zdCB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKwogICAvLy8gUmV0dXJuIHRydWUgaWYgdGhlIHRhcmdldCBoYXMgbmF0aXZlIHN1cHBvcnQgZm9yIHRoZSBzcGVjaWZpZWQgdmFsdWUgdHlwZS4KICAgLy8vIFRoaXMgbWVhbnMgdGhhdCBpdCBoYXMgYSByZWdpc3RlciB0aGF0IGRpcmVjdGx5IGhvbGRzIGl0IHdpdGhvdXQKICAgLy8vIHByb21vdGlvbnMgb3IgZXhwYW5zaW9ucy4KQEAgLTc5Nyw2ICs4MTUsMzkgQEAKICAgICByZXR1cm4gT3BBY3Rpb25zWyh1bnNpZ25lZClWVC5nZXRTaW1wbGVWVCgpLlNpbXBsZVR5XVtPcF07CiAgIH0KIAorICAvLy8gQ3VzdG9tIG1ldGhvZCBkZWZpbmVkIGJ5IGVhY2ggdGFyZ2V0IHRvIGluZGljYXRlIGlmIGFuIG9wZXJhdGlvbiB3aGljaAorICAvLy8gbWF5IHJlcXVpcmUgYSBzY2FsZSBpcyBzdXBwb3J0ZWQgbmF0aXZlbHkgYnkgdGhlIHRhcmdldC4KKyAgLy8vIElmIG5vdCwgdGhlIG9wZXJhdGlvbiBpcyBpbGxlZ2FsLgorICB2aXJ0dWFsIGJvb2wgaXNTdXBwb3J0ZWRGaXhlZFBvaW50T3BlcmF0aW9uKHVuc2lnbmVkIE9wLCBFVlQgVlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgU2NhbGUpIGNvbnN0IHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICAvLy8gU29tZSBmaXhlZCBwb2ludCBvcGVyYXRpb25zIG1heSBiZSBuYXRpdmVseSBzdXBwb3J0ZWQgYnkgdGhlIHRhcmdldCBidXQKKyAgLy8vIG9ubHkgZm9yIHNwZWNpZmljIHNjYWxlcy4gVGhpcyBtZXRob2QgYWxsb3dzIGZvciBjaGVja2luZworICAvLy8gaWYgdGhlIHdpZHRoIGlzIHN1cHBvcnRlZCBieSB0aGUgdGFyZ2V0IGZvciBhIGdpdmVuIG9wZXJhdGlvbiB0aGF0IG1heQorICAvLy8gZGVwZW5kIG9uIHNjYWxlLgorICBMZWdhbGl6ZUFjdGlvbiBnZXRGaXhlZFBvaW50T3BlcmF0aW9uQWN0aW9uKHVuc2lnbmVkIE9wLCBFVlQgVlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgU2NhbGUpIGNvbnN0IHsKKyAgICBhdXRvIEFjdGlvbiA9IGdldE9wZXJhdGlvbkFjdGlvbihPcCwgVlQpOworICAgIGlmIChBY3Rpb24gIT0gTGVnYWwpCisgICAgICByZXR1cm4gQWN0aW9uOworCisgICAgLy8gVGhpcyBvcGVyYXRpb24gaXMgc3VwcG9ydGVkIGluIHRoaXMgdHlwZSBidXQgbWF5IG9ubHkgd29yayBvbiBzcGVjaWZpYworICAgIC8vIHNjYWxlcy4KKyAgICBib29sIFN1cHBvcnRlZDsKKyAgICBzd2l0Y2ggKE9wKSB7CisgICAgZGVmYXVsdDoKKyAgICAgIGxsdm1fdW5yZWFjaGFibGUoIlVuZXhwZWN0ZWQgZml4ZWQgcG9pbnQgb3BlcmF0aW9uLiIpOworICAgIGNhc2UgSVNEOjpTTVVMRklYOgorICAgIGNhc2UgSVNEOjpVTVVMRklYOgorICAgICAgU3VwcG9ydGVkID0gaXNTdXBwb3J0ZWRGaXhlZFBvaW50T3BlcmF0aW9uKE9wLCBWVCwgU2NhbGUpOworICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIFN1cHBvcnRlZCA/IEFjdGlvbiA6IEV4cGFuZDsKKyAgfQorCiAgIExlZ2FsaXplQWN0aW9uIGdldFN0cmljdEZQT3BlcmF0aW9uQWN0aW9uKHVuc2lnbmVkIE9wLCBFVlQgVlQpIGNvbnN0IHsKICAgICB1bnNpZ25lZCBFcU9wYzsKICAgICBzd2l0Y2ggKE9wKSB7CkBAIC04MTksNiArODcwLDEyIEBACiAgICAgICBjYXNlIElTRDo6U1RSSUNUX0ZMT0cyOiBFcU9wYyA9IElTRDo6RkxPRzI7IGJyZWFrOwogICAgICAgY2FzZSBJU0Q6OlNUUklDVF9GUklOVDogRXFPcGMgPSBJU0Q6OkZSSU5UOyBicmVhazsKICAgICAgIGNhc2UgSVNEOjpTVFJJQ1RfRk5FQVJCWUlOVDogRXFPcGMgPSBJU0Q6OkZORUFSQllJTlQ7IGJyZWFrOworICAgICAgY2FzZSBJU0Q6OlNUUklDVF9GTUFYTlVNOiBFcU9wYyA9IElTRDo6Rk1BWE5VTTsgYnJlYWs7CisgICAgICBjYXNlIElTRDo6U1RSSUNUX0ZNSU5OVU06IEVxT3BjID0gSVNEOjpGTUlOTlVNOyBicmVhazsKKyAgICAgIGNhc2UgSVNEOjpTVFJJQ1RfRkNFSUw6IEVxT3BjID0gSVNEOjpGQ0VJTDsgYnJlYWs7CisgICAgICBjYXNlIElTRDo6U1RSSUNUX0ZGTE9PUjogRXFPcGMgPSBJU0Q6OkZGTE9PUjsgYnJlYWs7CisgICAgICBjYXNlIElTRDo6U1RSSUNUX0ZST1VORDogRXFPcGMgPSBJU0Q6OkZST1VORDsgYnJlYWs7CisgICAgICBjYXNlIElTRDo6U1RSSUNUX0ZUUlVOQzogRXFPcGMgPSBJU0Q6OkZUUlVOQzsgYnJlYWs7CiAgICAgfQogCiAgICAgYXV0byBBY3Rpb24gPSBnZXRPcGVyYXRpb25BY3Rpb24oRXFPcGMsIFZUKTsKQEAgLTEyMDcsMTMgKzEyNjQsMTUgQEAKICAgLy8vIHJlZHVjZSBydW50aW1lLgogICB2aXJ0dWFsIGJvb2wgU2hvdWxkU2hyaW5rRlBDb25zdGFudChFVlQpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAvLyBSZXR1cm4gdHJ1ZSBpZiBpdCBpcyBwcm9maXRhYmxlIHRvIHJlZHVjZSB0aGUgZ2l2ZW4gbG9hZCBub2RlIHRvIGEgc21hbGxlcgotICAvLyB0eXBlLgotICAvLwotICAvLyBlLmcuIChpMTYgKHRydW5jIChpMzIgKGxvYWQgeCkpKSAtPiBpMTYgbG9hZCB4IHNob3VsZCBiZSBwZXJmb3JtZWQKLSAgdmlydHVhbCBib29sIHNob3VsZFJlZHVjZUxvYWRXaWR0aChTRE5vZGUgKkxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNEOjpMb2FkRXh0VHlwZSBFeHRUeSwKKyAgLy8vIFJldHVybiB0cnVlIGlmIGl0IGlzIHByb2ZpdGFibGUgdG8gcmVkdWNlIGEgbG9hZCB0byBhIHNtYWxsZXIgdHlwZS4KKyAgLy8vIEV4YW1wbGU6IChpMTYgKHRydW5jIChpMzIgKGxvYWQgeCkpKSAtPiBpMTYgbG9hZCB4CisgIHZpcnR1YWwgYm9vbCBzaG91bGRSZWR1Y2VMb2FkV2lkdGgoU0ROb2RlICpMb2FkLCBJU0Q6OkxvYWRFeHRUeXBlIEV4dFR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWVCBOZXdWVCkgY29uc3QgeworICAgIC8vIEJ5IGRlZmF1bHQsIGFzc3VtZSB0aGF0IGl0IGlzIGNoZWFwZXIgdG8gZXh0cmFjdCBhIHN1YnZlY3RvciBmcm9tIGEgd2lkZQorICAgIC8vIHZlY3RvciBsb2FkIHJhdGhlciB0aGFuIGNyZWF0aW5nIG11bHRpcGxlIG5hcnJvdyB2ZWN0b3IgbG9hZHMuCisgICAgaWYgKE5ld1ZULmlzVmVjdG9yKCkgJiYgIUxvYWQtPmhhc09uZVVzZSgpKQorICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIApAQCAtMTQ2Nyw3ICsxNTI2LDcgQEAKICAgLy8vIHBlcmZvcm1zIHZhbGlkYXRpb24gYW5kIGVycm9yIGhhbmRsaW5nLCByZXR1cm5zIHRoZSBmdW5jdGlvbi4gT3RoZXJ3aXNlLAogICAvLy8gcmV0dXJucyBudWxscHRyLiBNdXN0IGJlIHByZXZpb3VzbHkgaW5zZXJ0ZWQgYnkgaW5zZXJ0U1NQRGVjbGFyYXRpb25zLgogICAvLy8gU2hvdWxkIGJlIHVzZWQgb25seSB3aGVuIGdldElSU3RhY2tHdWFyZCByZXR1cm5zIG51bGxwdHIuCi0gIHZpcnR1YWwgVmFsdWUgKmdldFNTUFN0YWNrR3VhcmRDaGVjayhjb25zdCBNb2R1bGUgJk0pIGNvbnN0OworICB2aXJ0dWFsIEZ1bmN0aW9uICpnZXRTU1BTdGFja0d1YXJkQ2hlY2soY29uc3QgTW9kdWxlICZNKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICBWYWx1ZSAqZ2V0RGVmYXVsdFNhZmVTdGFja1BvaW50ZXJMb2NhdGlvbihJUkJ1aWxkZXI8PiAmSVJCLApAQCAtMTY2OCw4ICsxNzI3LDkgQEAKIAogICAvLy8gUmV0dXJucyBob3cgdGhlIElSLWxldmVsIEF0b21pY0V4cGFuZCBwYXNzIHNob3VsZCBleHBhbmQgdGhlIGdpdmVuCiAgIC8vLyBBdG9taWNSTVcsIGlmIGF0IGFsbC4gRGVmYXVsdCBpcyB0byBuZXZlciBleHBhbmQuCi0gIHZpcnR1YWwgQXRvbWljRXhwYW5zaW9uS2luZCBzaG91bGRFeHBhbmRBdG9taWNSTVdJbklSKEF0b21pY1JNV0luc3QgKikgY29uc3QgewotICAgIHJldHVybiBBdG9taWNFeHBhbnNpb25LaW5kOjpOb25lOworICB2aXJ0dWFsIEF0b21pY0V4cGFuc2lvbktpbmQgc2hvdWxkRXhwYW5kQXRvbWljUk1XSW5JUihBdG9taWNSTVdJbnN0ICpSTVcpIGNvbnN0IHsKKyAgICByZXR1cm4gUk1XLT5pc0Zsb2F0aW5nUG9pbnRPcGVyYXRpb24oKSA/CisgICAgICBBdG9taWNFeHBhbnNpb25LaW5kOjpDbXBYQ2hnIDogQXRvbWljRXhwYW5zaW9uS2luZDo6Tm9uZTsKICAgfQogCiAgIC8vLyBPbiBzb21lIHBsYXRmb3JtcywgYW4gQXRvbWljUk1XIHRoYXQgbmV2ZXIgYWN0dWFsbHkgbW9kaWZpZXMgdGhlIHZhbHVlCkBAIC0xNzE0LDYgKzE3NzQsOCBAQAogICAgICAgQWN0aW9uICE9IFR5cGVTcGxpdFZlY3RvcjsKICAgfQogCisgIHZpcnR1YWwgYm9vbCBpc1Byb2ZpdGFibGVUb0NvbWJpbmVNaW5OdW1NYXhOdW0oRVZUIFZUKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKICAgLy8vIFJldHVybiB0cnVlIGlmIGEgc2VsZWN0IG9mIGNvbnN0YW50cyAoc2VsZWN0IENvbmQsIEMxLCBDMikgc2hvdWxkIGJlCiAgIC8vLyB0cmFuc2Zvcm1lZCBpbnRvIHNpbXBsZSBtYXRoIG9wcyB3aXRoIHRoZSBjb25kaXRpb24gdmFsdWUuIEZvciBleGFtcGxlOgogICAvLy8gc2VsZWN0IENvbmQsIEMxLCBDMS0xIC0tPiBhZGQgKHpleHQgQ29uZCksIEMxLTEKQEAgLTE3MzAsNiArMTc5MiwxNiBAQAogICAgIHJldHVybiBmYWxzZTsKICAgfQogCisgIC8vLyBSZXR1cm4gdHJ1ZSBpZiBpdCBpcyBtb3JlIGNvcnJlY3QvcHJvZml0YWJsZSB0byB1c2Ugc3RyaWN0IEZQX1RPX0lOVAorICAvLy8gY29udmVyc2lvbiBvcGVyYXRpb25zIC0gY2Fub25pY2FsaXppbmcgdGhlIEZQIHNvdXJjZSB2YWx1ZSBpbnN0ZWFkIG9mCisgIC8vLyBjb252ZXJ0aW5nIGFsbCBjYXNlcyBhbmQgdGhlbiBzZWxlY3RpbmcgYmFzZWQgb24gdmFsdWUuCisgIC8vLyBUaGlzIG1heSBiZSB0cnVlIGlmIHRoZSB0YXJnZXQgdGhyb3dzIGV4Y2VwdGlvbnMgZm9yIG91dCBvZiBib3VuZHMKKyAgLy8vIGNvbnZlcnNpb25zIG9yIGhhcyBmYXN0IEZQIENNT1YuCisgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VTdHJpY3RGUF9UT19JTlQoRVZUIEZwVlQsIEVWVCBJbnRWVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIElzU2lnbmVkKSBjb25zdCB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKICAgLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAgIC8vIFRhcmdldExvd2VyaW5nIENvbmZpZ3VyYXRpb24gTWV0aG9kcyAtIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGJlIGludm9rZWQgYnkKICAgLy8gdGhlIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IgdG8gY29uZmlndXJlIHRoaXMgb2JqZWN0IGZvciB0aGUgdGFyZ2V0LgpAQCAtMjA1OCw2ICsyMTMwLDE0IEBACiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAorICAvLy8gUmV0dXJuIHRydWUgaWYgdGhlIHNwZWNpZmllZCBpbW1lZGlhdGUgaXMgbGVnYWwgZm9yIHRoZSB2YWx1ZSBpbnB1dCBvZiBhCisgIC8vLyBzdG9yZSBpbnN0cnVjdGlvbi4KKyAgdmlydHVhbCBib29sIGlzTGVnYWxTdG9yZUltbWVkaWF0ZShpbnQ2NF90IFZhbHVlKSBjb25zdCB7CisgICAgLy8gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoYXQgYXQgbGVhc3QgMCB3b3JrcyBzaW5jZSBpdCBpcyBsaWtlbHkKKyAgICAvLyB0aGF0IGEgemVybyByZWdpc3RlciBleGlzdHMgb3IgYSB6ZXJvIGltbWVkaWF0ZSBpcyBhbGxvd2VkLgorICAgIHJldHVybiBWYWx1ZSA9PSAwOworICB9CisKICAgLy8vIFJldHVybiB0cnVlIGlmIGl0J3Mgc2lnbmlmaWNhbnRseSBjaGVhcGVyIHRvIHNoaWZ0IGEgdmVjdG9yIGJ5IGEgdW5pZm9ybQogICAvLy8gc2NhbGFyIHRoYW4gYnkgYW4gYW1vdW50IHdoaWNoIHdpbGwgdmFyeSBhY3Jvc3MgZWFjaCBsYW5lLiBPbiB4ODYsIGZvcgogICAvLy8gZXhhbXBsZSwgdGhlcmUgaXMgYSAicHNsbHciIGluc3RydWN0aW9uIGZvciB0aGUgZm9ybWVyIGNhc2UsIGJ1dCBubyBzaW1wbGUKQEAgLTIwODksMTAgKzIxNjksMTIgQEAKICAgICBjYXNlIElTRDo6VUFERE86CiAgICAgY2FzZSBJU0Q6OkFEREM6CiAgICAgY2FzZSBJU0Q6OkFEREU6CisgICAgY2FzZSBJU0Q6OlNBRERTQVQ6CisgICAgY2FzZSBJU0Q6OlVBRERTQVQ6CiAgICAgY2FzZSBJU0Q6OkZNSU5OVU06CiAgICAgY2FzZSBJU0Q6OkZNQVhOVU06Ci0gICAgY2FzZSBJU0Q6OkZNSU5OQU46Ci0gICAgY2FzZSBJU0Q6OkZNQVhOQU46CisgICAgY2FzZSBJU0Q6OkZNSU5JTVVNOgorICAgIGNhc2UgSVNEOjpGTUFYSU1VTToKICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yMTk2LDYgKzIyNzgsMjIgQEAKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAorICAvLy8gUmV0dXJuIHRydWUgaWYgc2lnbi1leHRlbnNpb24gZnJvbSBGcm9tVHkgdG8gVG9UeSBpcyBjaGVhcGVyIHRoYW4KKyAgLy8vIHplcm8tZXh0ZW5zaW9uLgorICB2aXJ0dWFsIGJvb2wgaXNTRXh0Q2hlYXBlclRoYW5aRXh0KEVWVCBGcm9tVHksIEVWVCBUb1R5KSBjb25zdCB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgLy8vIFJldHVybiB0cnVlIGlmIHNpbmtpbmcgSSdzIG9wZXJhbmRzIHRvIHRoZSBzYW1lIGJhc2ljIGJsb2NrIGFzIEkgaXMKKyAgLy8vIHByb2ZpdGFibGUsIGUuZy4gYmVjYXVzZSB0aGUgb3BlcmFuZHMgY2FuIGJlIGZvbGRlZCBpbnRvIGEgdGFyZ2V0CisgIC8vLyBpbnN0cnVjdGlvbiBkdXJpbmcgaW5zdHJ1Y3Rpb24gc2VsZWN0aW9uLiBBZnRlciBjYWxsaW5nIHRoZSBmdW5jdGlvbgorICAvLy8gXHAgT3BzIGNvbnRhaW5zIHRoZSBVc2VzIHRvIHNpbmsgb3JkZXJlZCBieSBkb21pbmFuY2UgKGRvbWluYXRpbmcgdXNlcnMKKyAgLy8vIGNvbWUgZmlyc3QpLgorICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2lua09wZXJhbmRzKEluc3RydWN0aW9uICpJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNtYWxsVmVjdG9ySW1wbDxVc2UgKj4gJk9wcykgY29uc3QgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCiAgIC8vLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgdGFyZ2V0IHN1cHBsaWVzIGFuZCBjb21iaW5lcyB0byBhIHBhaXJlZCBsb2FkCiAgIC8vLyB0d28gbG9hZGVkIHZhbHVlcyBvZiB0eXBlIExvYWRlZFR5cGUgbmV4dCB0byBlYWNoIG90aGVyIGluIG1lbW9yeS4KICAgLy8vIFJlcXVpcmVkQWxpZ25tZW50IGdpdmVzIHRoZSBtaW5pbWFsIGFsaWdubWVudCBjb25zdHJhaW50cyB0aGF0IG11c3QgYmUgbWV0CkBAIC0yMzM1LDYgKzI0MzMsMTIgQEAKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAorICAvLy8gVHJ5IHRvIGNvbnZlcnQgYW4gZXh0cmFjdCBlbGVtZW50IG9mIGEgdmVjdG9yIGJpbmFyeSBvcGVyYXRpb24gaW50byBhbgorICAvLy8gZXh0cmFjdCBlbGVtZW50IGZvbGxvd2VkIGJ5IGEgc2NhbGFyIG9wZXJhdGlvbi4KKyAgdmlydHVhbCBib29sIHNob3VsZFNjYWxhcml6ZUJpbm9wKFNEVmFsdWUgVmVjT3ApIGNvbnN0IHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKwogICAvLyBSZXR1cm4gdHJ1ZSBpZiBpdCBpcyBwcm9maXRhYmxlIHRvIHVzZSBhIHNjYWxhciBpbnB1dCB0byBhIEJVSUxEX1ZFQ1RPUgogICAvLyBldmVuIGlmIHRoZSB2ZWN0b3IgaXRzZWxmIGhhcyBtdWx0aXBsZSB1c2VzLgogICB2aXJ0dWFsIGJvb2wgYWdncmVzc2l2ZWx5UHJlZmVyQnVpbGRWZWN0b3JTb3VyY2VzKEVWVCBWZWNWVCkgY29uc3QgewpAQCAtMjgxNywzMiArMjkyMSwyOCBAQAogICBib29sIFNocmlua0RlbWFuZGVkT3AoU0RWYWx1ZSBPcCwgdW5zaWduZWQgQml0V2lkdGgsIGNvbnN0IEFQSW50ICZEZW1hbmRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldExvd2VyaW5nT3B0ICZUTE8pIGNvbnN0OwogCi0gIC8vLyBIZWxwZXIgZm9yIFNpbXBsaWZ5RGVtYW5kZWRCaXRzIHRoYXQgY2FuIHNpbXBsaWZ5IGFuIG9wZXJhdGlvbiB3aXRoCi0gIC8vLyBtdWx0aXBsZSB1c2VzLiAgVGhpcyBmdW5jdGlvbiBzaW1wbGlmaWVzIG9wZXJhbmQgXHAgT3BJZHggb2YgXHAgVXNlciBhbmQKLSAgLy8vIHRoZW4gdXBkYXRlcyBccCBVc2VyIHdpdGggdGhlIHNpbXBsaWZpZWQgdmVyc2lvbi4gTm8gb3RoZXIgdXNlcyBvZgotICAvLy8gXHAgT3BJZHggYXJlIHVwZGF0ZWQuIElmIFxwIFVzZXIgaXMgdGhlIG9ubHkgdXNlciBvZiBccCBPcElkeCwgdGhpcwotICAvLy8gZnVuY3Rpb24gYmVoYXZlcyBleGFjdGx5IGxpa2UgZnVuY3Rpb24gU2ltcGxpZnlEZW1hbmRlZEJpdHMgZGVjbGFyZWQKLSAgLy8vIGJlbG93IGV4Y2VwdCB0aGF0IGl0IGFsc28gdXBkYXRlcyB0aGUgREFHIGJ5IGNhbGxpbmcKLSAgLy8vIERDSS5Db21taXRUYXJnZXRMb3dlcmluZ09wdC4KLSAgYm9vbCBTaW1wbGlmeURlbWFuZGVkQml0cyhTRE5vZGUgKlVzZXIsIHVuc2lnbmVkIE9wSWR4LCBjb25zdCBBUEludCAmRGVtYW5kZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgREFHQ29tYmluZXJJbmZvICZEQ0ksIFRhcmdldExvd2VyaW5nT3B0ICZUTE8pIGNvbnN0OwotCi0gIC8vLyBMb29rIGF0IE9wLiAgQXQgdGhpcyBwb2ludCwgd2Uga25vdyB0aGF0IG9ubHkgdGhlIERlbWFuZGVkTWFzayBiaXRzIG9mIHRoZQorICAvLy8gTG9vayBhdCBPcC4gIEF0IHRoaXMgcG9pbnQsIHdlIGtub3cgdGhhdCBvbmx5IHRoZSBEZW1hbmRlZEJpdHMgYml0cyBvZiB0aGUKICAgLy8vIHJlc3VsdCBvZiBPcCBhcmUgZXZlciB1c2VkIGRvd25zdHJlYW0uICBJZiB3ZSBjYW4gdXNlIHRoaXMgaW5mb3JtYXRpb24gdG8KICAgLy8vIHNpbXBsaWZ5IE9wLCBjcmVhdGUgYSBuZXcgc2ltcGxpZmllZCBEQUcgbm9kZSBhbmQgcmV0dXJuIHRydWUsIHJldHVybmluZwogICAvLy8gdGhlIG9yaWdpbmFsIGFuZCBuZXcgbm9kZXMgaW4gT2xkIGFuZCBOZXcuICBPdGhlcndpc2UsIGFuYWx5emUgdGhlCiAgIC8vLyBleHByZXNzaW9uIGFuZCByZXR1cm4gYSBtYXNrIG9mIEtub3duT25lIGFuZCBLbm93blplcm8gYml0cyBmb3IgdGhlCiAgIC8vLyBleHByZXNzaW9uICh1c2VkIHRvIHNpbXBsaWZ5IHRoZSBjYWxsZXIpLiAgVGhlIEtub3duWmVyby9PbmUgYml0cyBtYXkgb25seQotICAvLy8gYmUgYWNjdXJhdGUgZm9yIHRob3NlIGJpdHMgaW4gdGhlIERlbWFuZGVkTWFzay4KKyAgLy8vIGJlIGFjY3VyYXRlIGZvciB0aG9zZSBiaXRzIGluIHRoZSBEZW1hbmRlZCBtYXNrcy4KICAgLy8vIFxwIEFzc3VtZVNpbmdsZVVzZSBXaGVuIHRoaXMgcGFyYW1ldGVyIGlzIHRydWUsIHRoaXMgZnVuY3Rpb24gd2lsbAogICAvLy8gICAgYXR0ZW1wdCB0byBzaW1wbGlmeSBccCBPcCBldmVuIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSB1c2VzLgogICAvLy8gICAgQ2FsbGVycyBhcmUgcmVzcG9uc2libGUgZm9yIGNvcnJlY3RseSB1cGRhdGluZyB0aGUgREFHIGJhc2VkIG9uIHRoZQogICAvLy8gICAgcmVzdWx0cyBvZiB0aGlzIGZ1bmN0aW9uLCBiZWNhdXNlIHNpbXBseSByZXBsYWNpbmcgcmVwbGFjaW5nIFRMTy5PbGQKICAgLy8vICAgIHdpdGggVExPLk5ldyB3aWxsIGJlIGluY29ycmVjdCB3aGVuIHRoaXMgcGFyYW1ldGVyIGlzIHRydWUgYW5kIFRMTy5PbGQKICAgLy8vICAgIGhhcyBtdWx0aXBsZSB1c2VzLgotICBib29sIFNpbXBsaWZ5RGVtYW5kZWRCaXRzKFNEVmFsdWUgT3AsIGNvbnN0IEFQSW50ICZEZW1hbmRlZE1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgS25vd25CaXRzICZLbm93biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXRMb3dlcmluZ09wdCAmVExPLAorICBib29sIFNpbXBsaWZ5RGVtYW5kZWRCaXRzKFNEVmFsdWUgT3AsIGNvbnN0IEFQSW50ICZEZW1hbmRlZEJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVBJbnQgJkRlbWFuZGVkRWx0cywgS25vd25CaXRzICZLbm93biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXRMb3dlcmluZ09wdCAmVExPLCB1bnNpZ25lZCBEZXB0aCA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBBc3N1bWVTaW5nbGVVc2UgPSBmYWxzZSkgY29uc3Q7CisKKyAgLy8vIEhlbHBlciB3cmFwcGVyIGFyb3VuZCBTaW1wbGlmeURlbWFuZGVkQml0cywgZGVtYW5kaW5nIGFsbCBlbGVtZW50cy4KKyAgLy8vIEFkZHMgT3AgYmFjayB0byB0aGUgd29ya2xpc3QgdXBvbiBzdWNjZXNzLgorICBib29sIFNpbXBsaWZ5RGVtYW5kZWRCaXRzKFNEVmFsdWUgT3AsIGNvbnN0IEFQSW50ICZEZW1hbmRlZEJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgS25vd25CaXRzICZLbm93biwgVGFyZ2V0TG93ZXJpbmdPcHQgJlRMTywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBEZXB0aCA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBBc3N1bWVTaW5nbGVVc2UgPSBmYWxzZSkgY29uc3Q7CiAKQEAgLTI5MDgsMTEgKzMwMDgsMjMgQEAKICAgLy8vIGVsZW1lbnRzLCByZXR1cm5pbmcgdHJ1ZSBvbiBzdWNjZXNzLiBPdGhlcndpc2UsIGFuYWx5emUgdGhlIGV4cHJlc3Npb24gYW5kCiAgIC8vLyByZXR1cm4gYSBtYXNrIG9mIEtub3duVW5kZWYgYW5kIEtub3duWmVybyBlbGVtZW50cyBmb3IgdGhlIGV4cHJlc3Npb24KICAgLy8vICh1c2VkIHRvIHNpbXBsaWZ5IHRoZSBjYWxsZXIpLiBUaGUgS25vd25VbmRlZi9aZXJvIGVsZW1lbnRzIG1heSBvbmx5IGJlCi0gIC8vLyBhY2N1cmF0ZSBmb3IgdGhvc2UgYml0cyBpbiB0aGUgRGVtYW5kZWRNYXNrCisgIC8vLyBhY2N1cmF0ZSBmb3IgdGhvc2UgYml0cyBpbiB0aGUgRGVtYW5kZWRNYXNrLgogICB2aXJ0dWFsIGJvb2wgU2ltcGxpZnlEZW1hbmRlZFZlY3RvckVsdHNGb3JUYXJnZXROb2RlKAogICAgICAgU0RWYWx1ZSBPcCwgY29uc3QgQVBJbnQgJkRlbWFuZGVkRWx0cywgQVBJbnQgJktub3duVW5kZWYsCiAgICAgICBBUEludCAmS25vd25aZXJvLCBUYXJnZXRMb3dlcmluZ09wdCAmVExPLCB1bnNpZ25lZCBEZXB0aCA9IDApIGNvbnN0OwogCisgIC8vLyBBdHRlbXB0IHRvIHNpbXBsaWZ5IGFueSB0YXJnZXQgbm9kZXMgYmFzZWQgb24gdGhlIGRlbWFuZGVkIGJpdHMvZWx0cywKKyAgLy8vIHJldHVybmluZyB0cnVlIG9uIHN1Y2Nlc3MuIE90aGVyd2lzZSwgYW5hbHl6ZSB0aGUKKyAgLy8vIGV4cHJlc3Npb24gYW5kIHJldHVybiBhIG1hc2sgb2YgS25vd25PbmUgYW5kIEtub3duWmVybyBiaXRzIGZvciB0aGUKKyAgLy8vIGV4cHJlc3Npb24gKHVzZWQgdG8gc2ltcGxpZnkgdGhlIGNhbGxlcikuICBUaGUgS25vd25aZXJvL09uZSBiaXRzIG1heSBvbmx5CisgIC8vLyBiZSBhY2N1cmF0ZSBmb3IgdGhvc2UgYml0cyBpbiB0aGUgRGVtYW5kZWQgbWFza3MuCisgIHZpcnR1YWwgYm9vbCBTaW1wbGlmeURlbWFuZGVkQml0c0ZvclRhcmdldE5vZGUoU0RWYWx1ZSBPcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBUEludCAmRGVtYW5kZWRCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFQSW50ICZEZW1hbmRlZEVsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS25vd25CaXRzICZLbm93biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXRMb3dlcmluZ09wdCAmVExPLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIERlcHRoID0gMCkgY29uc3Q7CisKICAgLy8vIElmIFxwIFNOYU4gaXMgZmFsc2UsIFxyZXR1cm5zIHRydWUgaWYgXHAgT3AgaXMga25vd24gdG8gbmV2ZXIgYmUgYW55CiAgIC8vLyBOYU4uIElmIFxwIHNOYU4gaXMgdHJ1ZSwgcmV0dXJucyBpZiBccCBPcCBpcyBrbm93biB0byBuZXZlciBiZSBhIHNpZ25hbGluZwogICAvLy8gTmFOLgpAQCAtMzAwMCw2ICszMTEyLDE1IEBACiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAorICAvLy8gUmV0dXJuIHRydWUgaWYgaXQgaXMgcHJvZml0YWJsZSB0byBmb2xkIGEgcGFpciBvZiBzaGlmdHMgaW50byBhIG1hc2suCisgIC8vLyBUaGlzIGlzIHVzdWFsbHkgdHJ1ZSBvbiBtb3N0IHRhcmdldHMuIEJ1dCBzb21lIHRhcmdldHMsIGxpa2UgVGh1bWIxLAorICAvLy8gaGF2ZSBpbW1lZGlhdGUgc2hpZnQgaW5zdHJ1Y3Rpb25zLCBidXQgbm8gaW1tZWRpYXRlICJhbmQiIGluc3RydWN0aW9uOworICAvLy8gdGhpcyBtYWtlcyB0aGUgZm9sZCB1bnByb2ZpdGFibGUuCisgIHZpcnR1YWwgYm9vbCBzaG91bGRGb2xkU2hpZnRQYWlyVG9NYXNrKGNvbnN0IFNETm9kZSAqTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tYmluZUxldmVsIExldmVsKSBjb25zdCB7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKwogICAvLyBSZXR1cm4gdHJ1ZSBpZiBpdCBpcyBwcm9maXRhYmxlIHRvIGNvbWJpbmUgYSBCVUlMRF9WRUNUT1Igd2l0aCBhIHN0cmlkZS1wYXR0ZXJuCiAgIC8vIHRvIGEgc2h1ZmZsZSBhbmQgYSB0cnVuY2F0ZS4KICAgLy8gRXhhbXBsZSBvZiBzdWNoIGEgY29tYmluZToKQEAgLTM1NDEsNiArMzY2MiwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxTRFZhbHVlPiAmT3BzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3Rpb25EQUcgJkRBRykgY29uc3Q7CiAKKyAgLy8gTG93ZXIgY3VzdG9tIG91dHB1dCBjb25zdHJhaW50cy4gSWYgaW52YWxpZCwgcmV0dXJuIFNEVmFsdWUoKS4KKyAgdmlydHVhbCBTRFZhbHVlIExvd2VyQXNtT3V0cHV0Rm9yQ29uc3RyYWludChTRFZhbHVlICZDaGFpbiwgU0RWYWx1ZSAqRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRExvYyBETCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBc21PcGVyYW5kSW5mbyAmT3BJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbkRBRyAmREFHKSBjb25zdDsKKwogICAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KICAgLy8gRGl2IHV0aWxpdHkgZnVuY3Rpb25zCiAgIC8vCkBAIC0zNjM4LDEyICszNzY1LDY4IEBACiAgICAgICAgICAgICAgICAgIFNEVmFsdWUgTEwgPSBTRFZhbHVlKCksIFNEVmFsdWUgTEggPSBTRFZhbHVlKCksCiAgICAgICAgICAgICAgICAgIFNEVmFsdWUgUkwgPSBTRFZhbHVlKCksIFNEVmFsdWUgUkggPSBTRFZhbHVlKCkpIGNvbnN0OwogCisgIC8vLyBFeHBhbmQgZnVubmVsIHNoaWZ0LgorICAvLy8gXHBhcmFtIE4gTm9kZSB0byBleHBhbmQKKyAgLy8vIFxwYXJhbSBSZXN1bHQgb3V0cHV0IGFmdGVyIGNvbnZlcnNpb24KKyAgLy8vIFxyZXR1cm5zIFRydWUsIGlmIHRoZSBleHBhbnNpb24gd2FzIHN1Y2Nlc3NmdWwsIGZhbHNlIG90aGVyd2lzZQorICBib29sIGV4cGFuZEZ1bm5lbFNoaWZ0KFNETm9kZSAqTiwgU0RWYWx1ZSAmUmVzdWx0LCBTZWxlY3Rpb25EQUcgJkRBRykgY29uc3Q7CisKKyAgLy8vIEV4cGFuZCByb3RhdGlvbnMuCisgIC8vLyBccGFyYW0gTiBOb2RlIHRvIGV4cGFuZAorICAvLy8gXHBhcmFtIFJlc3VsdCBvdXRwdXQgYWZ0ZXIgY29udmVyc2lvbgorICAvLy8gXHJldHVybnMgVHJ1ZSwgaWYgdGhlIGV4cGFuc2lvbiB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlCisgIGJvb2wgZXhwYW5kUk9UKFNETm9kZSAqTiwgU0RWYWx1ZSAmUmVzdWx0LCBTZWxlY3Rpb25EQUcgJkRBRykgY29uc3Q7CisKICAgLy8vIEV4cGFuZCBmbG9hdChmMzIpIHRvIFNJTlQoaTY0KSBjb252ZXJzaW9uCiAgIC8vLyBccGFyYW0gTiBOb2RlIHRvIGV4cGFuZAogICAvLy8gXHBhcmFtIFJlc3VsdCBvdXRwdXQgYWZ0ZXIgY29udmVyc2lvbgogICAvLy8gXHJldHVybnMgVHJ1ZSwgaWYgdGhlIGV4cGFuc2lvbiB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlCiAgIGJvb2wgZXhwYW5kRlBfVE9fU0lOVChTRE5vZGUgKk4sIFNEVmFsdWUgJlJlc3VsdCwgU2VsZWN0aW9uREFHICZEQUcpIGNvbnN0OwogCisgIC8vLyBFeHBhbmQgZmxvYXQgdG8gVUlOVCBjb252ZXJzaW9uCisgIC8vLyBccGFyYW0gTiBOb2RlIHRvIGV4cGFuZAorICAvLy8gXHBhcmFtIFJlc3VsdCBvdXRwdXQgYWZ0ZXIgY29udmVyc2lvbgorICAvLy8gXHJldHVybnMgVHJ1ZSwgaWYgdGhlIGV4cGFuc2lvbiB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlCisgIGJvb2wgZXhwYW5kRlBfVE9fVUlOVChTRE5vZGUgKk4sIFNEVmFsdWUgJlJlc3VsdCwgU2VsZWN0aW9uREFHICZEQUcpIGNvbnN0OworCisgIC8vLyBFeHBhbmQgVUlOVChpNjQpIHRvIGRvdWJsZShmNjQpIGNvbnZlcnNpb24KKyAgLy8vIFxwYXJhbSBOIE5vZGUgdG8gZXhwYW5kCisgIC8vLyBccGFyYW0gUmVzdWx0IG91dHB1dCBhZnRlciBjb252ZXJzaW9uCisgIC8vLyBccmV0dXJucyBUcnVlLCBpZiB0aGUgZXhwYW5zaW9uIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UKKyAgYm9vbCBleHBhbmRVSU5UX1RPX0ZQKFNETm9kZSAqTiwgU0RWYWx1ZSAmUmVzdWx0LCBTZWxlY3Rpb25EQUcgJkRBRykgY29uc3Q7CisKKyAgLy8vIEV4cGFuZCBmbWlubnVtL2ZtYXhudW0gaW50byBmbWlubnVtX2llZWUvZm1heG51bV9pZWVlIHdpdGggcXVpZXRlZCBpbnB1dHMuCisgIFNEVmFsdWUgZXhwYW5kRk1JTk5VTV9GTUFYTlVNKFNETm9kZSAqTiwgU2VsZWN0aW9uREFHICZEQUcpIGNvbnN0OworCisgIC8vLyBFeHBhbmQgQ1RQT1Agbm9kZXMuIEV4cGFuZHMgdmVjdG9yL3NjYWxhciBDVFBPUCBub2RlcywKKyAgLy8vIHZlY3RvciBub2RlcyBjYW4gb25seSBzdWNjZWVkIGlmIGFsbCBvcGVyYXRpb25zIGFyZSBsZWdhbC9jdXN0b20uCisgIC8vLyBccGFyYW0gTiBOb2RlIHRvIGV4cGFuZAorICAvLy8gXHBhcmFtIFJlc3VsdCBvdXRwdXQgYWZ0ZXIgY29udmVyc2lvbgorICAvLy8gXHJldHVybnMgVHJ1ZSwgaWYgdGhlIGV4cGFuc2lvbiB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlCisgIGJvb2wgZXhwYW5kQ1RQT1AoU0ROb2RlICpOLCBTRFZhbHVlICZSZXN1bHQsIFNlbGVjdGlvbkRBRyAmREFHKSBjb25zdDsKKworICAvLy8gRXhwYW5kIENUTFovQ1RMWl9aRVJPX1VOREVGIG5vZGVzLiBFeHBhbmRzIHZlY3Rvci9zY2FsYXIgQ1RMWiBub2RlcywKKyAgLy8vIHZlY3RvciBub2RlcyBjYW4gb25seSBzdWNjZWVkIGlmIGFsbCBvcGVyYXRpb25zIGFyZSBsZWdhbC9jdXN0b20uCisgIC8vLyBccGFyYW0gTiBOb2RlIHRvIGV4cGFuZAorICAvLy8gXHBhcmFtIFJlc3VsdCBvdXRwdXQgYWZ0ZXIgY29udmVyc2lvbgorICAvLy8gXHJldHVybnMgVHJ1ZSwgaWYgdGhlIGV4cGFuc2lvbiB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlCisgIGJvb2wgZXhwYW5kQ1RMWihTRE5vZGUgKk4sIFNEVmFsdWUgJlJlc3VsdCwgU2VsZWN0aW9uREFHICZEQUcpIGNvbnN0OworCisgIC8vLyBFeHBhbmQgQ1RUWi9DVFRaX1pFUk9fVU5ERUYgbm9kZXMuIEV4cGFuZHMgdmVjdG9yL3NjYWxhciBDVFRaIG5vZGVzLAorICAvLy8gdmVjdG9yIG5vZGVzIGNhbiBvbmx5IHN1Y2NlZWQgaWYgYWxsIG9wZXJhdGlvbnMgYXJlIGxlZ2FsL2N1c3RvbS4KKyAgLy8vIFxwYXJhbSBOIE5vZGUgdG8gZXhwYW5kCisgIC8vLyBccGFyYW0gUmVzdWx0IG91dHB1dCBhZnRlciBjb252ZXJzaW9uCisgIC8vLyBccmV0dXJucyBUcnVlLCBpZiB0aGUgZXhwYW5zaW9uIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UKKyAgYm9vbCBleHBhbmRDVFRaKFNETm9kZSAqTiwgU0RWYWx1ZSAmUmVzdWx0LCBTZWxlY3Rpb25EQUcgJkRBRykgY29uc3Q7CisKKyAgLy8vIEV4cGFuZCBBQlMgbm9kZXMuIEV4cGFuZHMgdmVjdG9yL3NjYWxhciBBQlMgbm9kZXMsCisgIC8vLyB2ZWN0b3Igbm9kZXMgY2FuIG9ubHkgc3VjY2VlZCBpZiBhbGwgb3BlcmF0aW9ucyBhcmUgbGVnYWwvY3VzdG9tLgorICAvLy8gKEFCUyB4KSAtPiAoWE9SIChBREQgeCwgKFNSQSB4LCB0eXBlX3NpemUpKSwgKFNSQSB4LCB0eXBlX3NpemUpKQorICAvLy8gXHBhcmFtIE4gTm9kZSB0byBleHBhbmQKKyAgLy8vIFxwYXJhbSBSZXN1bHQgb3V0cHV0IGFmdGVyIGNvbnZlcnNpb24KKyAgLy8vIFxyZXR1cm5zIFRydWUsIGlmIHRoZSBleHBhbnNpb24gd2FzIHN1Y2Nlc3NmdWwsIGZhbHNlIG90aGVyd2lzZQorICBib29sIGV4cGFuZEFCUyhTRE5vZGUgKk4sIFNEVmFsdWUgJlJlc3VsdCwgU2VsZWN0aW9uREFHICZEQUcpIGNvbnN0OworCiAgIC8vLyBUdXJuIGxvYWQgb2YgdmVjdG9yIHR5cGUgaW50byBhIGxvYWQgb2YgdGhlIGluZGl2aWR1YWwgZWxlbWVudHMuCiAgIC8vLyBccGFyYW0gTEQgbG9hZCB0byBleHBhbmQKICAgLy8vIFxyZXR1cm5zIE1FUkdFX1ZBTFVFcyBvZiB0aGUgc2NhbGFyIGxvYWRzIHdpdGggdGhlaXIgY2hhaW5zLgpAQCAtMzY4MSw2ICszODY0LDE0IEBACiAgIFNEVmFsdWUgZ2V0VmVjdG9yRWxlbWVudFBvaW50ZXIoU2VsZWN0aW9uREFHICZEQUcsIFNEVmFsdWUgVmVjUHRyLCBFVlQgVmVjVlQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0RWYWx1ZSBJbmRleCkgY29uc3Q7CiAKKyAgLy8vIE1ldGhvZCBmb3IgYnVpbGRpbmcgdGhlIERBRyBleHBhbnNpb24gb2YgSVNEOjpbVVNdW0FERHxTVUJdU0FULiBUaGlzCisgIC8vLyBtZXRob2QgYWNjZXB0cyBpbnRlZ2VycyBhcyBpdHMgYXJndW1lbnRzLgorICBTRFZhbHVlIGV4cGFuZEFkZFN1YlNhdChTRE5vZGUgKk5vZGUsIFNlbGVjdGlvbkRBRyAmREFHKSBjb25zdDsKKworICAvLy8gTWV0aG9kIGZvciBidWlsZGluZyB0aGUgREFHIGV4cGFuc2lvbiBvZiBJU0Q6OlNNVUxGSVguIFRoaXMgbWV0aG9kIGFjY2VwdHMKKyAgLy8vIGludGVnZXJzIGFzIGl0cyBhcmd1bWVudHMuCisgIFNEVmFsdWUgZXhwYW5kRml4ZWRQb2ludE11bChTRE5vZGUgKk5vZGUsIFNlbGVjdGlvbkRBRyAmREFHKSBjb25zdDsKKwogICAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KICAgLy8gSW5zdHJ1Y3Rpb24gRW1pdHRpbmcgSG9va3MKICAgLy8KQEAgLTM3MzIsOSArMzkyMywxMCBAQAogICBTRFZhbHVlIGxvd2VyQ21wRXFaZXJvVG9DdGx6U3JsKFNEVmFsdWUgT3AsIFNlbGVjdGlvbkRBRyAmREFHKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgU0RWYWx1ZSBzaW1wbGlmeVNldENDV2l0aEFuZChFVlQgVlQsIFNEVmFsdWUgTjAsIFNEVmFsdWUgTjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNEOjpDb25kQ29kZSBDb25kLCBEQUdDb21iaW5lckluZm8gJkRDSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTRExvYyAmREwpIGNvbnN0OworICBTRFZhbHVlIGZvbGRTZXRDQ1dpdGhBbmQoRVZUIFZULCBTRFZhbHVlIE4wLCBTRFZhbHVlIE4xLCBJU0Q6OkNvbmRDb2RlIENvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTRExvYyAmREwsIERBR0NvbWJpbmVySW5mbyAmRENJKSBjb25zdDsKKyAgU0RWYWx1ZSBmb2xkU2V0Q0NXaXRoQmluT3AoRVZUIFZULCBTRFZhbHVlIE4wLCBTRFZhbHVlIE4xLCBJU0Q6OkNvbmRDb2RlIENvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNETG9jICZETCwgREFHQ29tYmluZXJJbmZvICZEQ0kpIGNvbnN0OwogCiAgIFNEVmFsdWUgb3B0aW1pemVTZXRDQ09mU2lnbmVkVHJ1bmNhdGlvbkNoZWNrKEVWVCBTQ0NWVCwgU0RWYWx1ZSBOMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0RWYWx1ZSBOMSwgSVNEOjpDb25kQ29kZSBDb25kLApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1RhcmdldExvd2VyaW5nT2JqZWN0RmlsZUltcGwuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9UYXJnZXRMb3dlcmluZ09iamVjdEZpbGVJbXBsLmgKaW5kZXggZjVjN2ZjOC4uYTFmYjgxYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1RhcmdldExvd2VyaW5nT2JqZWN0RmlsZUltcGwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0TG93ZXJpbmdPYmplY3RGaWxlSW1wbC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0gbGx2bS9Db2RlR2VuL1RhcmdldExvd2VyaW5nT2JqZWN0RmlsZUltcGwuaCAtIE9iamVjdCBJbmZvIC0tKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC05MCw2ICs4OSw4IEBACiAgIGNvbnN0IE1DRXhwciAqbG93ZXJSZWxhdGl2ZVJlZmVyZW5jZShjb25zdCBHbG9iYWxWYWx1ZSAqTEhTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2xvYmFsVmFsdWUgKlJIUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRhcmdldE1hY2hpbmUgJlRNKSBjb25zdCBvdmVycmlkZTsKKworICBNQ1NlY3Rpb24gKmdldFNlY3Rpb25Gb3JDb21tYW5kTGluZXMoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIGNsYXNzIFRhcmdldExvd2VyaW5nT2JqZWN0RmlsZU1hY2hPIDogcHVibGljIFRhcmdldExvd2VyaW5nT2JqZWN0RmlsZSB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0T3Bjb2Rlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1RhcmdldE9wY29kZXMuaAppbmRleCBkMGQ5NTljLi4wODBhMjQ0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0T3Bjb2Rlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9UYXJnZXRPcGNvZGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vQ29kZUdlbi9UYXJnZXRPcGNvZGVzLmggLSBUYXJnZXQgSW5kZXAgT3Bjb2RlcyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9UYXJnZXRQYXNzQ29uZmlnLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0UGFzc0NvbmZpZy5oCmluZGV4IDhmNWM5Y2IuLjFkZWY1MGQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9UYXJnZXRQYXNzQ29uZmlnLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1RhcmdldFBhc3NDb25maWcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUYXJnZXRQYXNzQ29uZmlnLmggLSBDb2RlIEdlbmVyYXRpb24gcGFzcyBvcHRpb25zIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNzUsOSArNzQsNiBAQAogICB9CiB9OwogCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNQb2RMaWtlPElkZW50aWZ5aW5nUGFzc1B0cj4gewotICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7Ci19OwogCiAvLy8gVGFyZ2V0LUluZGVwZW5kZW50IENvZGUgR2VuZXJhdG9yIFBhc3MgQ29uZmlndXJhdGlvbiBPcHRpb25zLgogLy8vCkBAIC05MCw2ICs4NiwxOSBAQAogICBBbmFseXNpc0lEIFN0YXJ0QWZ0ZXIgPSBudWxscHRyOwogICBBbmFseXNpc0lEIFN0b3BCZWZvcmUgPSBudWxscHRyOwogICBBbmFseXNpc0lEIFN0b3BBZnRlciA9IG51bGxwdHI7CisKKyAgdW5zaWduZWQgU3RhcnRCZWZvcmVJbnN0YW5jZU51bSA9IDA7CisgIHVuc2lnbmVkIFN0YXJ0QmVmb3JlQ291bnQgPSAwOworCisgIHVuc2lnbmVkIFN0YXJ0QWZ0ZXJJbnN0YW5jZU51bSA9IDA7CisgIHVuc2lnbmVkIFN0YXJ0QWZ0ZXJDb3VudCA9IDA7CisKKyAgdW5zaWduZWQgU3RvcEJlZm9yZUluc3RhbmNlTnVtID0gMDsKKyAgdW5zaWduZWQgU3RvcEJlZm9yZUNvdW50ID0gMDsKKworICB1bnNpZ25lZCBTdG9wQWZ0ZXJJbnN0YW5jZU51bSA9IDA7CisgIHVuc2lnbmVkIFN0b3BBZnRlckNvdW50ID0gMDsKKwogICBib29sIFN0YXJ0ZWQgPSB0cnVlOwogICBib29sIFN0b3BwZWQgPSBmYWxzZTsKICAgYm9vbCBBZGRpbmdNYWNoaW5lUGFzc2VzID0gZmFsc2U7CkBAIC0xNDUsMTMgKzE1NCwxMyBAQAogCiAgIENvZGVHZW5PcHQ6OkxldmVsIGdldE9wdExldmVsKCkgY29uc3Q7CiAKLSAgLy8vIERlc2NyaWJlIHRoZSBzdGF0dXMgb2YgdGhlIGNvZGVnZW4KLSAgLy8vIHBpcGVsaW5lIHNldCBieSB0aGlzIHRhcmdldCBwYXNzIGNvbmZpZy4KLSAgLy8vIEhhdmluZyBhIGxpbWl0ZWQgY29kZWdlbiBwaXBlbGluZSBtZWFucyB0aGF0IG9wdGlvbnMKLSAgLy8vIGhhdmUgYmVlbiB1c2VkIHRvIHJlc3RyaWN0IHdoYXQgY29kZWdlbiBpcyBkb2luZy4KLSAgLy8vIEluIHBhcnRpY3VsYXIsIHRoYXQgbWVhbnMgdGhhdCBjb2RlZ2VuIHdvbid0IGVtaXQKLSAgLy8vIGFzc2VtYmx5IGNvZGUuCi0gIGJvb2wgaGFzTGltaXRlZENvZGVHZW5QaXBlbGluZSgpIGNvbnN0OworICAvLy8gUmV0dXJucyB0cnVlIGlmIG9uZSBvZiB0aGUgYC1zdGFydC1hZnRlcmAsIGAtc3RhcnQtYmVmb3JlYCwgYC1zdG9wLWFmdGVyYAorICAvLy8gb3IgYC1zdG9wLWJlZm9yZWAgb3B0aW9ucyBpcyBzZXQuCisgIHN0YXRpYyBib29sIGhhc0xpbWl0ZWRDb2RlR2VuUGlwZWxpbmUoKTsKKworICAvLy8gUmV0dXJucyB0cnVlIGlmIG5vbmUgb2YgdGhlIGAtc3RvcC1iZWZvcmVgIGFuZCBgLXN0b3AtYWZ0ZXJgIG9wdGlvbnMgaXMKKyAgLy8vIHNldC4KKyAgc3RhdGljIGJvb2wgd2lsbENvbXBsZXRlQ29kZUdlblBpcGVsaW5lKCk7CiAKICAgLy8vIElmIGhhc0xpbWl0ZWRDb2RlR2VuUGlwZWxpbmUgaXMgdHJ1ZSwgdGhpcyBtZXRob2QKICAgLy8vIHJldHVybnMgYSBzdHJpbmcgd2l0aCB0aGUgbmFtZSBvZiB0aGUgb3B0aW9ucywgc2VwYXJhdGVkCkBAIC0xNTksMTMgKzE2OCw2IEBACiAgIHN0ZDo6c3RyaW5nCiAgIGdldExpbWl0ZWRDb2RlR2VuUGlwZWxpbmVSZWFzb24oY29uc3QgY2hhciAqU2VwYXJhdG9yID0gIi8iKSBjb25zdDsKIAotICAvLy8gQ2hlY2sgaWYgdGhlIGNvZGVnZW4gcGlwZWxpbmUgaXMgbGltaXRlZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQKLSAgLy8vIHdvbid0IGJlIGNvbXBsZXRlLiBXaGVuIHRoZSBjb2RlZ2VuIHBpcGVsaW5lIGlzIG5vdCBjb21wbGV0ZSwKLSAgLy8vIHRoaXMgbWVhbnMgaXQgbWF5IG5vdCBiZSBwb3NzaWJsZSB0byBnZW5lcmF0ZSBhc3NlbWJseSBmcm9tIGl0LgotICBib29sIHdpbGxDb21wbGV0ZUNvZGVHZW5QaXBlbGluZSgpIGNvbnN0IHsKLSAgICByZXR1cm4gIWhhc0xpbWl0ZWRDb2RlR2VuUGlwZWxpbmUoKSB8fCAoIVN0b3BBZnRlciAmJiAhU3RvcEJlZm9yZSk7Ci0gIH0KLQogICB2b2lkIHNldERpc2FibGVWZXJpZnkoYm9vbCBEaXNhYmxlKSB7IHNldE9wdChEaXNhYmxlVmVyaWZ5LCBEaXNhYmxlKTsgfQogCiAgIGJvb2wgZ2V0RW5hYmxlVGFpbE1lcmdlKCkgY29uc3QgeyByZXR1cm4gRW5hYmxlVGFpbE1lcmdlOyB9CkBAIC0zMTMsNiArMzE1LDEwIEBACiAgIC8vLyB3aGVuIEdsb2JhbElTZWwgZmFpbGVkIGFuZCBpc0dsb2JhbElTZWxBYm9ydEVuYWJsZWQgaXMgZmFsc2UuCiAgIHZpcnR1YWwgYm9vbCByZXBvcnREaWFnbm9zdGljV2hlbkdsb2JhbElTZWxGYWxsYmFjaygpIGNvbnN0OwogCisgIC8vLyBDaGVjayB3aGV0aGVyIGNvbnRpbnVvdXMgQ1NFIHNob3VsZCBiZSBlbmFibGVkIGluIEdJU2VsIHBhc3Nlcy4KKyAgLy8vIEJ5IGRlZmF1bHQsIGl0J3MgZW5hYmxlZCBmb3Igbm9uIE8wIGxldmVscy4KKyAgdmlydHVhbCBib29sIGlzR0lTZWxDU0VFbmFibGVkKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgLy8gSGVscGVyIHRvIHZlcmlmeSB0aGUgYW5hbHlzaXMgaXMgcmVhbGx5IGltbXV0YWJsZS4KICAgdm9pZCBzZXRPcHQoYm9vbCAmT3B0LCBib29sIFZhbCk7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0UmVnaXN0ZXJJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0UmVnaXN0ZXJJbmZvLmgKaW5kZXggMGZiZmYzMS4uNWVkMWU0NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1RhcmdldFJlZ2lzdGVySW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9UYXJnZXRSZWdpc3RlckluZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIENvZGVHZW4vVGFyZ2V0UmVnaXN0ZXJJbmZvLmggLSBUYXJnZXQgUmVnaXN0ZXIgSW5mb3JtYXRpb24gLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1RhcmdldFNjaGVkdWxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0U2NoZWR1bGUuaAppbmRleCA2MTczOTI1Li5jY2U4NWM4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0U2NoZWR1bGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0U2NoZWR1bGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vVGFyZ2V0U2NoZWR1bGUuaCAtIFNjaGVkIE1hY2hpbmUgTW9kZWwgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1RhcmdldFN1YnRhcmdldEluZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9UYXJnZXRTdWJ0YXJnZXRJbmZvLmgKaW5kZXggZTI4NjczZC4uYmYwZTliMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1RhcmdldFN1YnRhcmdldEluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVGFyZ2V0U3VidGFyZ2V0SW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ29kZUdlbi9UYXJnZXRTdWJ0YXJnZXRJbmZvLmggLSBUYXJnZXQgSW5mb3JtYXRpb24gLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNjksNiArMTY4LDE5IEBACiAgICAgcmV0dXJuIGlzWmVyb0lkaW9tKE1JLCBNYXNrKTsKICAgfQogCisgIC8vLyBSZXR1cm5zIHRydWUgaWYgTUkgaXMgYSBjYW5kaWRhdGUgZm9yIG1vdmUgZWxpbWluYXRpb24uCisgIC8vLworICAvLy8gQSBjYW5kaWRhdGUgZm9yIG1vdmUgZWxpbWluYXRpb24gbWF5IGJlIG9wdGltaXplZCBvdXQgYXQgcmVnaXN0ZXIgcmVuYW1pbmcKKyAgLy8vIHN0YWdlLiBTdWJ0YXJnZXRzIGNhbiBzcGVjaWZ5IHRoZSBzZXQgb2Ygb3B0aW1pemFibGUgbW92ZXMgYnkKKyAgLy8vIGluc3RhbnRpYXRpbmcgdGFibGVnZW4gY2xhc3MgYElzT3B0aW1pemFibGVSZWdpc3Rlck1vdmVgIChzZWUKKyAgLy8vIGxsdm0vVGFyZ2V0L1RhcmdldEluc3RyUHJlZGljYXRlLnRkKS4KKyAgLy8vCisgIC8vLyBTdWJ0YXJnZXRFbWl0dGVyIGlzIHJlc3BvbnNpYmxlIGZvciBwcm9jZXNzaW5nIGFsbCB0aGUgZGVmaW5pdGlvbnMgb2YgY2xhc3MKKyAgLy8vIElzT3B0aW1pemFibGVSZWdpc3Rlck1vdmUsIGFuZCBhdXRvLWdlbmVyYXRlIGFuIG92ZXJyaWRlIGZvciB0aGlzIG1ldGhvZC4KKyAgdmlydHVhbCBib29sIGlzT3B0aW1pemFibGVSZWdpc3Rlck1vdmUoY29uc3QgTWFjaGluZUluc3RyICpNSSkgY29uc3QgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCiAgIC8vLyBUcnVlIGlmIHRoZSBzdWJ0YXJnZXQgc2hvdWxkIHJ1biBNYWNoaW5lU2NoZWR1bGVyIGFmdGVyIGFnZ3Jlc3NpdmUKICAgLy8vIGNvYWxlc2NpbmcuCiAgIC8vLwpAQCAtMTc3LDkgKzE4OSw2IEBACiAgIC8vLyBUYXJnZXRMb3dlcmluZyBwcmVmZXJlbmNlKS4gSXQgZG9lcyBub3QgeWV0IGRpc2FibGUgdGhlIHBvc3RSQSBzY2hlZHVsZXIuCiAgIHZpcnR1YWwgYm9vbCBlbmFibGVNYWNoaW5lU2NoZWR1bGVyKCkgY29uc3Q7CiAKLSAgLy8vIFN1cHBvcnQgcHJpbnRpbmcgb2YgW2xhdGVuY3k6dGhyb3VnaHB1dF0gY29tbWVudCBpbiBvdXRwdXQgLlMgZmlsZS4KLSAgdmlydHVhbCBib29sIHN1cHBvcnRQcmludFNjaGVkSW5mbygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KICAgLy8vIFRydWUgaWYgdGhlIG1hY2hpbmUgc2NoZWR1bGVyIHNob3VsZCBkaXNhYmxlIHRoZSBUTEkgcHJlZmVyZW5jZQogICAvLy8gZm9yIHByZVJBIHNjaGVkdWxpbmcgd2l0aCB0aGUgc291cmNlIGxldmVsIHNjaGVkdWxlci4KICAgdmlydHVhbCBib29sIGVuYWJsZU1hY2hpbmVTY2hlZERlZmF1bHRTY2hlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTI3MywxMCArMjgyLDYgQEAKICAgLy8vIHBvc3NpYmxlLgogICB2aXJ0dWFsIGJvb2wgZW5hYmxlU3ViUmVnTGl2ZW5lc3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gIC8vLyBSZXR1cm5zIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBzY2hlZHVsZXIgY29tbWVudAotICBzdGQ6OnN0cmluZyBnZXRTY2hlZEluZm9TdHIoY29uc3QgTWFjaGluZUluc3RyICZNSSkgY29uc3Q7Ci0gIHN0ZDo6c3RyaW5nIGdldFNjaGVkSW5mb1N0cihNQ0luc3QgY29uc3QgJk1DSSkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgLy8vIFRoaXMgaXMgY2FsbGVkIGFmdGVyIGEgLm1pciBmaWxlIHdhcyBsb2FkZWQuCiAgIHZpcnR1YWwgdm9pZCBtaXJGaWxlTG9hZGVkKE1hY2hpbmVGdW5jdGlvbiAmTUYpIGNvbnN0OwogfTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9VbnJlYWNoYWJsZUJsb2NrRWxpbS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1VucmVhY2hhYmxlQmxvY2tFbGltLmgKaW5kZXggM2U3YWZkNC4uZDUyZDdjMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1VucmVhY2hhYmxlQmxvY2tFbGltLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1VucmVhY2hhYmxlQmxvY2tFbGltLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFVucmVhY2hhYmxlQmxvY2tFbGltLmggLSBSZW1vdmUgdW5yZWFjaGFibGUgYmxvY2tzIGZvciBjb2RlZ2VuIC0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVmFsdWVUeXBlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1ZhbHVlVHlwZXMuaAppbmRleCBkMmVmNGE5Li5jNTQwYzk0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVmFsdWVUeXBlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9WYWx1ZVR5cGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29kZUdlbi9WYWx1ZVR5cGVzLmggLSBMb3ctTGV2ZWwgVGFyZ2V0IGluZGVwZW5kLiB0eXBlcyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9WYWx1ZVR5cGVzLnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1ZhbHVlVHlwZXMudGQKaW5kZXggMGFiYjRlYy4uZjgyZmFmMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1ZhbHVlVHlwZXMudGQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1ZhbHVlVHlwZXMudGQKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVmFsdWVUeXBlcy50ZCAtIFZhbHVlVHlwZSBkZWZpbml0aW9ucyAtLS0tLS0tLS0tLS0tLS0qLSB0YWJsZWdlbiAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9WaXJ0UmVnTWFwLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vVmlydFJlZ01hcC5oCmluZGV4IDZhOGU1MGEuLjdiZGVjYmUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9WaXJ0UmVnTWFwLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1ZpcnRSZWdNYXAuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0NvZGVHZW4vVmlydFJlZ01hcC5oIC0gVmlydHVhbCBSZWdpc3RlciBNYXAgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1dhc21FSEZ1bmNJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vV2FzbUVIRnVuY0luZm8uaAppbmRleCBhYTk3OTM0Li5hYWNhODQ3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vV2FzbUVIRnVuY0luZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vV2FzbUVIRnVuY0luZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIGxsdm0vQ29kZUdlbi9XYXNtRUhGdW5jSW5mby5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjEsNiArMjAsOCBAQAogCiBuYW1lc3BhY2UgbGx2bSB7CiAKK2VudW0gRXZlbnRUYWcgeyBDUFBfRVhDRVBUSU9OID0gMCwgQ19MT05HSk1QID0gMSB9OworCiB1c2luZyBCQk9yTUJCID0gUG9pbnRlclVuaW9uPGNvbnN0IEJhc2ljQmxvY2sgKiwgTWFjaGluZUJhc2ljQmxvY2sgKj47CiAKIHN0cnVjdCBXYXNtRUhGdW5jSW5mbyB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vV2luRUhGdW5jSW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db2RlR2VuL1dpbkVIRnVuY0luZm8uaAppbmRleCA4MDQzMDI0Li5mMDk4MzE2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvZGVHZW4vV2luRUhGdW5jSW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29kZUdlbi9XaW5FSEZ1bmNJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9Db2RlR2VuL1dpbkVIRnVuY0luZm8uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29uZmlnL0FzbVBhcnNlcnMuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db25maWcvQXNtUGFyc2Vycy5kZWYKaW5kZXggOTMxODgzYi4uMzAwYWIwZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db25maWcvQXNtUGFyc2Vycy5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db25maWcvQXNtUGFyc2Vycy5kZWYKQEAgLTEsOSArMSw5IEBACiAvKj09PS0gbGx2bS9Db25maWcvQXNtUGFyc2Vycy5kZWYgLSBMTFZNIEFzc2VtYmx5IFBhcnNlcnMgLS0tLS0tLSotIEMrKyAtKi09PT0qXAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlICAgICAgKnwKLXwqIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSAgICAgICAgICAqfAorfCogRXhjZXB0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICp8Cit8KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAqfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKIHwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db25maWcvQXNtUHJpbnRlcnMuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db25maWcvQXNtUHJpbnRlcnMuZGVmCmluZGV4IGUwMWZlMmIuLjQzZmExMzUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29uZmlnL0FzbVByaW50ZXJzLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvbmZpZy9Bc21QcmludGVycy5kZWYKQEAgLTEsOSArMSw5IEBACiAvKj09PS0gbGx2bS9Db25maWcvQXNtUHJpbnRlcnMuZGVmIC0gTExWTSBBc3NlbWJseSBQcmludGVycyAtLS0tLSotIEMrKyAtKi09PT0qXAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlICAgICAgKnwKLXwqIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSAgICAgICAgICAqfAorfCogRXhjZXB0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICp8Cit8KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAqfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKIHwqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db25maWcvRGlzYXNzZW1ibGVycy5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvbmZpZy9EaXNhc3NlbWJsZXJzLmRlZgppbmRleCAyMWY0YjBjLi43NzkzZWU0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvbmZpZy9EaXNhc3NlbWJsZXJzLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvbmZpZy9EaXNhc3NlbWJsZXJzLmRlZgpAQCAtMSw5ICsxLDkgQEAKIC8qPT09LSBsbHZtL0NvbmZpZy9EaXNhc3NlbWJsZXJzLmRlZiAtIExMVk0gQXNzZW1ibHkgUGFyc2VycyAtLS0tKi0gQysrIC0qLT09PSpcCiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UgICAgICAqfAotfCogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNICAgICAgICAgICp8Cit8KiBFeGNlcHRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uICAgICAgICAgICAgICAgICAgKnwKK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gICAgICAgICAgICAgICAgICAgICp8CiB8KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAogfCo9PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09KnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvbmZpZy9UYXJnZXRzLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29uZmlnL1RhcmdldHMuZGVmCmluZGV4IDAyNzI1ZjMuLjYxZjQ2YjcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29uZmlnL1RhcmdldHMuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29uZmlnL1RhcmdldHMuZGVmCkBAIC0xLDkgKzEsOSBAQAogLyo9PT0tIGxsdm0vQ29uZmlnL1RhcmdldHMuZGVmIC0gTExWTSBUYXJnZXQgQXJjaGl0ZWN0dXJlcyAtLS0tLS0qLSBDKysgLSotPT09KlwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Ci18KiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqfAotfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKLXwqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZSAgICAgICp8Ci18KiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqfAorfCogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gICAgICAgICAgKnwKK3wqIEV4Y2VwdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8Cit8KiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAqfAorfCogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgKnwKIHwqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp8CiB8Kj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qfAogfCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29uZmlnL2FiaS1icmVha2luZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db25maWcvYWJpLWJyZWFraW5nLmgKaW5kZXggZDdmODJlMS4uMzMzODAwNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db25maWcvYWJpLWJyZWFraW5nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db25maWcvYWJpLWJyZWFraW5nLmgKQEAgLTEsOSArMSw5IEBACiAvKj09PS0tLS0tLS0gbGx2bS9Db25maWcvYWJpLWJyZWFraW5nLmggLSBsbHZtIGNvbmZpZ3VyYXRpb24gLS0tLS0tLSotIEMgLSotPT09Ki8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZSAgICAgICovCi0vKiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gICAgICAgICAgKi8KKy8qIEV4Y2VwdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAqLworLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiAgICAgICAgICAgICAgICAgICAgKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvbmZpZy9sbHZtLWNvbmZpZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Db25maWcvbGx2bS1jb25maWcuaAppbmRleCA1ODk1ZTg1Li40ODNkNjBjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0NvbmZpZy9sbHZtLWNvbmZpZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vQ29uZmlnL2xsdm0tY29uZmlnLmgKQEAgLTEsOSArMSw5IEBACiAvKj09PS0tLS0tLS0gbGx2bS9Db25maWcvbGx2bS1jb25maWcuaCAtIGxsdm0gY29uZmlndXJhdGlvbiAtLS0tLS0tKi0gQyAtKi09PT0qLwogLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLS8qICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotLyogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlICAgICAgKi8KLS8qIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSAgICAgICAgICAqLworLyogRXhjZXB0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLiAgICAgICAgICAgICAgICAgICovCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAqLwogLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSovCiAKQEAgLTY2LDE2ICs2NiwxNiBAQAogI2RlZmluZSBMTFZNX1VTRV9QRVJGIDAKIAogLyogTWFqb3IgdmVyc2lvbiBvZiB0aGUgTExWTSBBUEkgKi8KLSNkZWZpbmUgTExWTV9WRVJTSU9OX01BSk9SIDgKKyNkZWZpbmUgTExWTV9WRVJTSU9OX01BSk9SIDkKIAogLyogTWlub3IgdmVyc2lvbiBvZiB0aGUgTExWTSBBUEkgKi8KICNkZWZpbmUgTExWTV9WRVJTSU9OX01JTk9SIDAKIAogLyogUGF0Y2ggdmVyc2lvbiBvZiB0aGUgTExWTSBBUEkgKi8KLSNkZWZpbmUgTExWTV9WRVJTSU9OX1BBVENIIDQKKyNkZWZpbmUgTExWTV9WRVJTSU9OX1BBVENIIDMKIAogLyogTExWTSB2ZXJzaW9uIHN0cmluZyAqLwotI2RlZmluZSBMTFZNX1ZFUlNJT05fU1RSSU5HICI4LjAuNHN2biIKKyNkZWZpbmUgTExWTV9WRVJTSU9OX1NUUklORyAiOS4wLjNzdm4iCiAKIC8qIFdoZXRoZXIgTExWTSByZWNvcmRzIHN0YXRpc3RpY3MgZm9yIHVzZSB3aXRoIEdldFN0YXRpc3RpY3MoKSwKICAqIFByaW50U3RhdGlzdGljcygpIG9yIFByaW50U3RhdGlzdGljc0pTT04oKQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvQXBwZW5kaW5nVHlwZVRhYmxlQnVpbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvQXBwZW5kaW5nVHlwZVRhYmxlQnVpbGRlci5oCmluZGV4IGJkMTc0MzUuLjBhYzhiNjUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0FwcGVuZGluZ1R5cGVUYWJsZUJ1aWxkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9BcHBlbmRpbmdUeXBlVGFibGVCdWlsZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQXBwZW5kaW5nVHlwZVRhYmxlQnVpbGRlci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKystKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9DVlJlY29yZC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvQ1ZSZWNvcmQuaAppbmRleCA5ZGJlYjQzLi4xZGYzZDE2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9DVlJlY29yZC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NWUmVjb3JkLmgKQEAgLTEsOSArMSw4IEBACi0vLz09PS0gUmVjb3JkSXRlcmF0b3IuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy89PT0tIENWUmVjb3JkLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNDUsMTMgKzQ0LDggQEAKICAgICByZXR1cm4gUmVjb3JkRGF0YS5kcm9wX2Zyb250KHNpemVvZihSZWNvcmRQcmVmaXgpKTsKICAgfQogCi0gIE9wdGlvbmFsPHVpbnQzMl90PiBoYXNoKCkgY29uc3QgeyByZXR1cm4gSGFzaDsgfQotCi0gIHZvaWQgc2V0SGFzaCh1aW50MzJfdCBWYWx1ZSkgeyBIYXNoID0gVmFsdWU7IH0KLQogICBLaW5kIFR5cGU7CiAgIEFycmF5UmVmPHVpbnQ4X3Q+IFJlY29yZERhdGE7Ci0gIE9wdGlvbmFsPHVpbnQzMl90PiBIYXNoOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEtpbmQ+IHN0cnVjdCBSZW1hcHBlZFJlY29yZCB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9DVlN5bWJvbFZpc2l0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NWU3ltYm9sVmlzaXRvci5oCmluZGV4IDdjOGNkMTIuLjE2MTVmZjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NWU3ltYm9sVmlzaXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NWU3ltYm9sVmlzaXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENWU3ltYm9sVmlzaXRvci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvQ1ZUeXBlVmlzaXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvQ1ZUeXBlVmlzaXRvci5oCmluZGV4IGI3NjViYTEuLjc1MzhjYjIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NWVHlwZVZpc2l0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9DVlR5cGVWaXNpdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ1ZUeXBlVmlzaXRvci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9Db2RlVmlldy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvQ29kZVZpZXcuaAppbmRleCA0Yjk2YmMxLi40ZmJmNTA3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9Db2RlVmlldy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NvZGVWaWV3LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29kZVZpZXcuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTM1OCw3ICszNTcsOSBAQAogICBDb25zdCA9IDB4MDAwMDA0MDAsCiAgIFVuYWxpZ25lZCA9IDB4MDAwMDA4MDAsCiAgIFJlc3RyaWN0ID0gMHgwMDAwMTAwMCwKLSAgV2luUlRTbWFydFBvaW50ZXIgPSAweDAwMDgwMDAwCisgIFdpblJUU21hcnRQb2ludGVyID0gMHgwMDA4MDAwMCwKKyAgTFZhbHVlUmVmVGhpc1BvaW50ZXIgPSAweDAwMTAwMDAwLAorICBSVmFsdWVSZWZUaGlzUG9pbnRlciA9IDB4MDAyMDAwMDAKIH07CiBDVl9ERUZJTkVfRU5VTV9DTEFTU19GTEFHU19PUEVSQVRPUlMoUG9pbnRlck9wdGlvbnMpCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NvZGVWaWV3RXJyb3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NvZGVWaWV3RXJyb3IuaAppbmRleCBkNDYxNWQwLi45OTkwYzhkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9Db2RlVmlld0Vycm9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvQ29kZVZpZXdFcnJvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvZGVWaWV3RXJyb3IuaCAtIEVycm9yIGV4dGVuc2lvbnMgZm9yIENvZGVWaWV3IC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvQ29kZVZpZXdSZWNvcmRJTy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvQ29kZVZpZXdSZWNvcmRJTy5oCmluZGV4IDk0ZjEwNGYuLmIyNDc2ZjEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NvZGVWaWV3UmVjb3JkSU8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9Db2RlVmlld1JlY29yZElPLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29kZVZpZXdSZWNvcmRJTy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9Db2RlVmlld1JlZ2lzdGVycy5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9Db2RlVmlld1JlZ2lzdGVycy5kZWYKaW5kZXggZmRmY2Y0ZC4uMDU5M2JjMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvQ29kZVZpZXdSZWdpc3RlcnMuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NvZGVWaWV3UmVnaXN0ZXJzLmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gQ29kZVZpZXdSZWdpc3RlcnMuZGVmIC0gQ29kZVZpZXcgcmVnaXN0ZXJzIC0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvQ29kZVZpZXdTeW1ib2xzLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NvZGVWaWV3U3ltYm9scy5kZWYKaW5kZXggYjVmMWNjMC4uZTM2ZDgwNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvQ29kZVZpZXdTeW1ib2xzLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9Db2RlVmlld1N5bWJvbHMuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBDb2RlVmlld1N5bWJvbHMuZGVmIC0gQWxsIENvZGVWaWV3IGxlYWYgdHlwZXMgLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9Db2RlVmlld1R5cGVzLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NvZGVWaWV3VHlwZXMuZGVmCmluZGV4IGU5YTQ3OWQuLmEzMTExMWUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NvZGVWaWV3VHlwZXMuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NvZGVWaWV3VHlwZXMuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBDb2RlVmlld1R5cGVzLmRlZiAtIEFsbCBDb2RlVmlldyBsZWFmIHR5cGVzIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9Db250aW51YXRpb25SZWNvcmRCdWlsZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9Db250aW51YXRpb25SZWNvcmRCdWlsZGVyLmgKaW5kZXggN2Y4NTFhMi4uY2Q2N2Y3OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvQ29udGludWF0aW9uUmVjb3JkQnVpbGRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0NvbnRpbnVhdGlvblJlY29yZEJ1aWxkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDb250aW51YXRpb25SZWNvcmRCdWlsZGVyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnQ2hlY2tzdW1zU3Vic2VjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdDaGVja3N1bXNTdWJzZWN0aW9uLmgKaW5kZXggNzhiMjg0NS4uMDFmODM2NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdDaGVja3N1bXNTdWJzZWN0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdDaGVja3N1bXNTdWJzZWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGVidWdDaGVja3N1bXNTdWJzZWN0aW9uLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z0Nyb3NzRXhTdWJzZWN0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z0Nyb3NzRXhTdWJzZWN0aW9uLmgKaW5kZXggMmY5ZTk4MS4uNjRhNzhhNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdDcm9zc0V4U3Vic2VjdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnQ3Jvc3NFeFN1YnNlY3Rpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEZWJ1Z0Nyb3NzRXhTdWJzZWN0aW9uLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnQ3Jvc3NJbXBTdWJzZWN0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z0Nyb3NzSW1wU3Vic2VjdGlvbi5oCmluZGV4IDhiZTdlZjIuLmU3NjgzY2IgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnQ3Jvc3NJbXBTdWJzZWN0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdDcm9zc0ltcFN1YnNlY3Rpb24uaApAQCAtMSw5ICsxLDggQEAKLS8vPT09LSBEZWJ1Z0Nyb3NzRXhTdWJzZWN0aW9uLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLz09PS0gRGVidWdDcm9zc0ltcFN1YnNlY3Rpb24uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z0ZyYW1lRGF0YVN1YnNlY3Rpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnRnJhbWVEYXRhU3Vic2VjdGlvbi5oCmluZGV4IGY3NDEyMGEuLmQ1Y2Q2NDAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnRnJhbWVEYXRhU3Vic2VjdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnRnJhbWVEYXRhU3Vic2VjdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERlYnVnRnJhbWVEYXRhU3Vic2VjdGlvbi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xMyw2ICsxMiw3IEBACiAjaW5jbHVkZSAibGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvQ29kZVZpZXcuaCIKICNpbmNsdWRlICJsbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z1N1YnNlY3Rpb24uaCIKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvQmluYXJ5U3RyZWFtUmVhZGVyLmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0VuZGlhbi5oIgogI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9FcnJvci5oIgogCiBuYW1lc3BhY2UgbGx2bSB7CkBAIC0zMSwxMCArMzEsMTAgQEAKICAgRml4ZWRTdHJlYW1BcnJheTxGcmFtZURhdGE+OjpJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIEZyYW1lcy5iZWdpbigpOyB9CiAgIEZpeGVkU3RyZWFtQXJyYXk8RnJhbWVEYXRhPjo6SXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gRnJhbWVzLmVuZCgpOyB9CiAKLSAgY29uc3QgdWludDMyX3QgKmdldFJlbG9jUHRyKCkgY29uc3QgeyByZXR1cm4gUmVsb2NQdHI7IH0KKyAgY29uc3Qgc3VwcG9ydDo6dWxpdHRsZTMyX3QgKmdldFJlbG9jUHRyKCkgY29uc3QgeyByZXR1cm4gUmVsb2NQdHI7IH0KIAogcHJpdmF0ZToKLSAgY29uc3QgdWludDMyX3QgKlJlbG9jUHRyID0gbnVsbHB0cjsKKyAgY29uc3Qgc3VwcG9ydDo6dWxpdHRsZTMyX3QgKlJlbG9jUHRyID0gbnVsbHB0cjsKICAgRml4ZWRTdHJlYW1BcnJheTxGcmFtZURhdGE+IEZyYW1lczsKIH07CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnSW5saW5lZUxpbmVzU3Vic2VjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdJbmxpbmVlTGluZXNTdWJzZWN0aW9uLmgKaW5kZXggYjg4YzBlYS4uMWNhMmJkMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdJbmxpbmVlTGluZXNTdWJzZWN0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdJbmxpbmVlTGluZXNTdWJzZWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGVidWdJbmxpbmVlTGluZXNTdWJzZWN0aW9uLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z0xpbmVzU3Vic2VjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdMaW5lc1N1YnNlY3Rpb24uaAppbmRleCA1MzA0NGI2Li4xZjhlNTZjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z0xpbmVzU3Vic2VjdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnTGluZXNTdWJzZWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGVidWdMaW5lc1N1YnNlY3Rpb24uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z1N0cmluZ1RhYmxlU3Vic2VjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdTdHJpbmdUYWJsZVN1YnNlY3Rpb24uaAppbmRleCBiZWJjOTYwLi42ZTViOGFkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z1N0cmluZ1RhYmxlU3Vic2VjdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnU3RyaW5nVGFibGVTdWJzZWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGVidWdTdHJpbmdUYWJsZVN1YnNlY3Rpb24uaCAtIENvZGVWaWV3IFN0cmluZyBUYWJsZSAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z1N1YnNlY3Rpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnU3Vic2VjdGlvbi5oCmluZGV4IGU0MjdlMDAuLjY2MjcyODcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnU3Vic2VjdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnU3Vic2VjdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERlYnVnU3Vic2VjdGlvbi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z1N1YnNlY3Rpb25SZWNvcmQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnU3Vic2VjdGlvblJlY29yZC5oCmluZGV4IGZjMGNmMGQuLmJjYjM3OWYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnU3Vic2VjdGlvblJlY29yZC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnU3Vic2VjdGlvblJlY29yZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERlYnVnU3Vic2VjdGlvblJlY29yZC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdTdWJzZWN0aW9uVmlzaXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdTdWJzZWN0aW9uVmlzaXRvci5oCmluZGV4IDc1Zjc0OWQuLjcyMGIxYjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnU3Vic2VjdGlvblZpc2l0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z1N1YnNlY3Rpb25WaXNpdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGVidWdTdWJzZWN0aW9uVmlzaXRvci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnU3ltYm9sUlZBU3Vic2VjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdTeW1ib2xSVkFTdWJzZWN0aW9uLmgKaW5kZXggYTRjMDRiNS4uOTFiNzQwYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdTeW1ib2xSVkFTdWJzZWN0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdTeW1ib2xSVkFTdWJzZWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGVidWdTeW1ib2xSVkFTdWJzZWN0aW9uLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z1N5bWJvbHNTdWJzZWN0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z1N5bWJvbHNTdWJzZWN0aW9uLmgKaW5kZXggZGZkYTdkZS4uNzg0ZmM1OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdTeW1ib2xzU3Vic2VjdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnU3ltYm9sc1N1YnNlY3Rpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEZWJ1Z1N5bWJvbHNTdWJzZWN0aW9uLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdVbmtub3duU3Vic2VjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdVbmtub3duU3Vic2VjdGlvbi5oCmluZGV4IGVhOWE5NmMuLmZhN2RmMzIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0RlYnVnVW5rbm93blN1YnNlY3Rpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9EZWJ1Z1Vua25vd25TdWJzZWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGVidWdVbmtub3duU3Vic2VjdGlvbi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0VudW1UYWJsZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0VudW1UYWJsZXMuaAppbmRleCBlZTBmMGY3Li43NGY4YzcxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9FbnVtVGFibGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRW51bVRhYmxlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEVudW1UYWJsZXMuaCAtIEVudW0gdG8gc3RyaW5nIGNvbnZlcnNpb24gdGFibGVzIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRm9ybWF0dGVycy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRm9ybWF0dGVycy5oCmluZGV4IDI3OGFkMDIuLjdkMDRhNmEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0Zvcm1hdHRlcnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9Gb3JtYXR0ZXJzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRm9ybWF0dGVycy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9GdW5jdGlvbklkLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9GdW5jdGlvbklkLmgKaW5kZXggMWFmM2RhOC4uYmMxMDIyNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRnVuY3Rpb25JZC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0Z1bmN0aW9uSWQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBGdW5jdGlvbklkLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0dVSUQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0dVSUQuaAppbmRleCBhMDU1Y2U5Li41ZjgwN2U2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9HVUlELmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvR1VJRC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEdVSUQuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvR2xvYmFsVHlwZVRhYmxlQnVpbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvR2xvYmFsVHlwZVRhYmxlQnVpbGRlci5oCmluZGV4IGM0NzA0MTYuLmE0M2NlMjAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0dsb2JhbFR5cGVUYWJsZUJ1aWxkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9HbG9iYWxUeXBlVGFibGVCdWlsZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gR2xvYmFsVHlwZVRhYmxlQnVpbGRlci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKystKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC03NCwxNCArNzMsMzAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZUZ1bmMgQ3JlYXRlKSB7CiAgICAgYXV0byBSZXN1bHQgPSBIYXNoZWRSZWNvcmRzLnRyeV9lbXBsYWNlKEhhc2gsIG5leHRUeXBlSW5kZXgoKSk7CiAKLSAgICBpZiAoTExWTV9VTkxJS0VMWShSZXN1bHQuc2Vjb25kKSkgeworICAgIGlmIChMTFZNX1VOTElLRUxZKFJlc3VsdC5zZWNvbmQgLyppbnNlcnRlZCovIHx8CisgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0LmZpcnN0LT5zZWNvbmQuaXNTaW1wbGUoKSkpIHsKICAgICAgIHVpbnQ4X3QgKlN0YWJsZSA9IFJlY29yZFN0b3JhZ2UuQWxsb2NhdGU8dWludDhfdD4oUmVjb3JkU2l6ZSk7CiAgICAgICBNdXRhYmxlQXJyYXlSZWY8dWludDhfdD4gRGF0YShTdGFibGUsIFJlY29yZFNpemUpOwotICAgICAgU2VlblJlY29yZHMucHVzaF9iYWNrKENyZWF0ZShEYXRhKSk7CisgICAgICBBcnJheVJlZjx1aW50OF90PiBTdGFibGVSZWNvcmQgPSBDcmVhdGUoRGF0YSk7CisgICAgICBpZiAoU3RhYmxlUmVjb3JkLmVtcHR5KCkpIHsKKyAgICAgICAgLy8gUmVjb3JkcyB3aXRoIGZvcndhcmQgcmVmZXJlbmNlcyBpbnRvIHRoZSBUeXBlIHN0cmVhbSB3aWxsIGJlIGRlZmVycmVkCisgICAgICAgIC8vIGZvciBpbnNlcnRpb24gYXQgYSBsYXRlciB0aW1lLCBvbiB0aGUgc2Vjb25kIHBhc3MuCisgICAgICAgIFJlc3VsdC5maXJzdC0+Z2V0U2Vjb25kKCkgPSBUeXBlSW5kZXgoU2ltcGxlVHlwZUtpbmQ6Ok5vdFRyYW5zbGF0ZWQpOworICAgICAgICByZXR1cm4gVHlwZUluZGV4KFNpbXBsZVR5cGVLaW5kOjpOb3RUcmFuc2xhdGVkKTsKKyAgICAgIH0KKyAgICAgIGlmIChSZXN1bHQuZmlyc3QtPnNlY29uZC5pc1NpbXBsZSgpKSB7CisgICAgICAgIGFzc2VydChSZXN1bHQuZmlyc3QtPnNlY29uZC5nZXRJbmRleCgpID09CisgICAgICAgICAgICAgICAodWludDMyX3QpU2ltcGxlVHlwZUtpbmQ6Ok5vdFRyYW5zbGF0ZWQpOworICAgICAgICAvLyBPbiB0aGUgc2Vjb25kIHBhc3MsIHVwZGF0ZSB3aXRoIGluZGV4IHRvIHJlbWFwcGVkIHJlY29yZC4gVGhlCisgICAgICAgIC8vIChpbml0aWFsbHkgbWlzYmVoYXZlZCkgcmVjb3JkIHdpbGwgbm93IGNvbWUgKmFmdGVyKiBvdGhlciByZWNvcmRzCisgICAgICAgIC8vIHJlc29sdmVkIGluIHRoZSBmaXJzdCBwYXNzLCB3aXRoIHByb3BlciAqYmFjayogcmVmZXJlbmNlcyBpbiB0aGUKKyAgICAgICAgLy8gc3RyZWFtLgorICAgICAgICBSZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5leHRUeXBlSW5kZXgoKTsKKyAgICAgIH0KKyAgICAgIFNlZW5SZWNvcmRzLnB1c2hfYmFjayhTdGFibGVSZWNvcmQpOwogICAgICAgU2Vlbkhhc2hlcy5wdXNoX2JhY2soSGFzaCk7CiAgICAgfQogCi0gICAgLy8gVXBkYXRlIHRoZSBjYWxsZXIncyBjb3B5IG9mIFJlY29yZCB0byBwb2ludCBhIHN0YWJsZSBjb3B5LgogICAgIHJldHVybiBSZXN1bHQuZmlyc3QtPnNlY29uZDsKICAgfQogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9MYXp5UmFuZG9tVHlwZUNvbGxlY3Rpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0xhenlSYW5kb21UeXBlQ29sbGVjdGlvbi5oCmluZGV4IDM4M2Y3ZGQuLjRlMDM2MjcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0xhenlSYW5kb21UeXBlQ29sbGVjdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0xhenlSYW5kb21UeXBlQ29sbGVjdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExhenlSYW5kb21UeXBlQ29sbGVjdGlvbi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvTGluZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvTGluZS5oCmluZGV4IGFjMjI5YzMuLmViMmFhMTUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L0xpbmUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9MaW5lLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTGluZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9NZXJnaW5nVHlwZVRhYmxlQnVpbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvTWVyZ2luZ1R5cGVUYWJsZUJ1aWxkZXIuaAppbmRleCA5MDMwOTE4Li4xYjJmNmQyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9NZXJnaW5nVHlwZVRhYmxlQnVpbGRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L01lcmdpbmdUeXBlVGFibGVCdWlsZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTWVyZ2luZ1R5cGVUYWJsZUJ1aWxkZXIuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKystKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9SZWNvcmROYW1lLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9SZWNvcmROYW1lLmgKaW5kZXggYjAyMjEwOC4uY2MwOWRiOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvUmVjb3JkTmFtZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1JlY29yZE5hbWUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBSZWNvcmROYW1lLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLSBDKysgLS0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1JlY29yZFNlcmlhbGl6YXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1JlY29yZFNlcmlhbGl6YXRpb24uaAppbmRleCA1ODQ0OWMyLi42MTgxNDZjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9SZWNvcmRTZXJpYWxpemF0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvUmVjb3JkU2VyaWFsaXphdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFJlY29yZFNlcmlhbGl6YXRpb24uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTgwLDI2ICsxNzksNiBAQAogICByZXR1cm4gc2VyaWFsaXplX251bWVyaWNfaW1wbDxUPihJdGVtKTsKIH0KIAotLy8gVGhpcyBmaWVsZCBpcyBvbmx5IHByZXNlbnQgaW4gdGhlIGJ5dGUgcmVjb3JkIGlmIHRoZSBjb25kaXRpb24gaXMgdHJ1ZS4gIFRoZQotLy8gY29uZGl0aW9uIGlzIGV2YWx1YXRlZCBsYXppbHksIHNvIGl0IGNhbiBkZXBlbmQgb24gaXRlbXMgdGhhdCB3ZXJlCi0vLyBkZXNlcmlhbGl6ZWQKLS8vIGVhcmxpZXIuCi0jZGVmaW5lIENWX0NPTkRJVElPTkFMX0ZJRUxEKEksIEMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBzZXJpYWxpemVfY29uZGl0aW9uYWwoSSwgWyZdKCkgeyByZXR1cm4gISEoQyk7IH0pCi0KLS8vIFRoaXMgaXMgYW4gYXJyYXkgb2YgTiBpdGVtcywgd2hlcmUgTiBpcyBldmFsdWF0ZWQgbGF6aWx5LCBzbyBpdCBjYW4gcmVmZXIKLS8vIHRvIGEgZmllbGQgZGVzZXJpYWxpemVkIGVhcmxpZXIuCi0jZGVmaW5lIENWX0FSUkFZX0ZJRUxEX04oSSwgTikgc2VyaWFsaXplX2FycmF5KEksIFsmXSgpIHsgcmV0dXJuIE47IH0pCi0KLS8vIFRoaXMgaXMgYW4gYXJyYXkgdGhhdCBleGhhdXN0cyB0aGUgcmVtYWluZGVyIG9mIHRoZSBpbnB1dCBidWZmZXIuCi0jZGVmaW5lIENWX0FSUkFZX0ZJRUxEX1RBSUwoSSkgc2VyaWFsaXplX2FycmF5X3RhaWwoSSkKLQotLy8gVGhpcyBpcyBhbiBhcnJheSB0aGF0IGNvbnN1bWVzIG51bGwgdGVybWluYXRlZCBzdHJpbmdzIHVudGlsIGEgZG91YmxlIG51bGwKLS8vIGlzIGVuY291bnRlcmVkLgotI2RlZmluZSBDVl9TVFJJTkdfQVJSQVlfTlVMTF9URVJNKEkpIHNlcmlhbGl6ZV9udWxsX3Rlcm1fc3RyaW5nX2FycmF5KEkpCi0KLSNkZWZpbmUgQ1ZfTlVNRVJJQ19GSUVMRChJKSBzZXJpYWxpemVfbnVtZXJpYyhJKQotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KIEVycm9yIGNvbnN1bWUoQmluYXJ5U3RyZWFtUmVhZGVyICZSZWFkZXIsCiAgICAgICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZV9jb25kaXRpb25hbF9pbXBsPFQsIFU+ICZJdGVtKSB7CkBAIC0yNDIsOSArMjIxLDYgQEAKICAgcmV0dXJuIGNvbnN1bWUoUmVhZGVyLCBZLCBzdGQ6OmZvcndhcmQ8QXJncz4oUmVzdCkuLi4pOwogfQogCi0jZGVmaW5lIENWX0RFU0VSSUFMSVpFKC4uLikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpZiAoYXV0byBFQyA9IGNvbnN1bWUoX19WQV9BUkdTX18pKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gc3RkOjptb3ZlKEVDKTsKIH0KIH0KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU2ltcGxlVHlwZVNlcmlhbGl6ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1NpbXBsZVR5cGVTZXJpYWxpemVyLmgKaW5kZXggYTg1ZDkyNy4uM2NhMDliNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU2ltcGxlVHlwZVNlcmlhbGl6ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TaW1wbGVUeXBlU2VyaWFsaXplci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFNpbXBsZVR5cGVTZXJpYWxpemVyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU3RyaW5nc0FuZENoZWNrc3Vtcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU3RyaW5nc0FuZENoZWNrc3Vtcy5oCmluZGV4IDIyYTMzM2UuLjIyYTI4M2UgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N0cmluZ3NBbmRDaGVja3N1bXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TdHJpbmdzQW5kQ2hlY2tzdW1zLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3RyaW5nc0FuZENoZWNrc3Vtcy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TeW1ib2xEZXNlcmlhbGl6ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbERlc2VyaWFsaXplci5oCmluZGV4IGI1NDc5ZGIuLjYyNzYxY2IgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbERlc2VyaWFsaXplci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbERlc2VyaWFsaXplci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFN5bWJvbERlc2VyaWFsaXplci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNDcsNyArNDYsNyBAQAogICAgIHJldHVybiBFcnJvcjo6c3VjY2VzcygpOwogICB9CiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0aWMgRXhwZWN0ZWQ8VD4gZGVzZXJpYWxpemVBcyhDVlN5bWJvbCBTeW1ib2wpIHsKLSAgICBUIFJlY29yZChTeW1ib2wua2luZCgpKTsKKyAgICBUIFJlY29yZChzdGF0aWNfY2FzdDxTeW1ib2xSZWNvcmRLaW5kPihTeW1ib2wua2luZCgpKSk7CiAgICAgaWYgKGF1dG8gRUMgPSBkZXNlcmlhbGl6ZUFzPFQ+KFN5bWJvbCwgUmVjb3JkKSkKICAgICAgIHJldHVybiBzdGQ6Om1vdmUoRUMpOwogICAgIHJldHVybiBSZWNvcmQ7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TeW1ib2xEdW1wRGVsZWdhdGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbER1bXBEZWxlZ2F0ZS5oCmluZGV4IDgyMzYzNmMuLjEyZjQ1ZGMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbER1bXBEZWxlZ2F0ZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbER1bXBEZWxlZ2F0ZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBTeW1ib2xEdW1wRGVsZWdhdGUuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU3ltYm9sRHVtcGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TeW1ib2xEdW1wZXIuaAppbmRleCAyMTVkYTJlLi5kODMyYTQ4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TeW1ib2xEdW1wZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TeW1ib2xEdW1wZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gU3ltYm9sRHVtcGVyLmggLSBDb2RlVmlldyBzeW1ib2wgaW5mbyBkdW1wZXIgLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbFJlY29yZC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU3ltYm9sUmVjb3JkLmgKaW5kZXggYzYzZmI5OC4uYWM3YjEwNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU3ltYm9sUmVjb3JkLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU3ltYm9sUmVjb3JkLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3ltYm9sUmVjb3JkLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC00MDAsNiArMzk5LDcgQEAKICAgdWludDE2X3QgTW9kdWxlOwogICBTdHJpbmdSZWYgTmFtZTsKIAorICB1aW50MTZfdCBtb2RpKCkgY29uc3QgeyByZXR1cm4gTW9kdWxlIC0gMTsgfQogICB1aW50MzJfdCBSZWNvcmRPZmZzZXQ7CiB9OwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TeW1ib2xSZWNvcmRIZWxwZXJzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TeW1ib2xSZWNvcmRIZWxwZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdkYmM1NgotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbFJlY29yZEhlbHBlcnMuaApAQCAtMCwwICsxLDYxIEBACisvLz09PS0gU3ltYm9sUmVjb3JkSGVscGVycy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fREVCVUdJTkZPX0NPREVWSUVXX1NZTUJPTFJFQ09SREhFTFBFUlNfSAorI2RlZmluZSBMTFZNX0RFQlVHSU5GT19DT0RFVklFV19TWU1CT0xSRUNPUkRIRUxQRVJTX0gKKworI2luY2x1ZGUgImxsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbFJlY29yZC5oIgorCituYW1lc3BhY2UgbGx2bSB7CituYW1lc3BhY2UgY29kZXZpZXcgeworLy8vIFJldHVybiB0cnVlIGlmIHRoaXMgc3ltYm9sIG9wZW5zIGEgc2NvcGUuIFRoaXMgaW1wbGllcyB0aGF0IHRoZSBzeW1ib2wgaGFzCisvLy8gInBhcmVudCIgYW5kICJlbmQiIGZpZWxkcywgd2hpY2ggY29udGFpbiB0aGUgb2Zmc2V0IG9mIHRoZSBTX0VORCBvcgorLy8vIFNfSU5MSU5FU0lURV9FTkQgcmVjb3JkLgoraW5saW5lIGJvb2wgc3ltYm9sT3BlbnNTY29wZShTeW1ib2xLaW5kIEtpbmQpIHsKKyAgc3dpdGNoIChLaW5kKSB7CisgIGNhc2UgU3ltYm9sS2luZDo6U19HUFJPQzMyOgorICBjYXNlIFN5bWJvbEtpbmQ6OlNfTFBST0MzMjoKKyAgY2FzZSBTeW1ib2xLaW5kOjpTX0xQUk9DMzJfSUQ6CisgIGNhc2UgU3ltYm9sS2luZDo6U19HUFJPQzMyX0lEOgorICBjYXNlIFN5bWJvbEtpbmQ6OlNfQkxPQ0szMjoKKyAgY2FzZSBTeW1ib2xLaW5kOjpTX1NFUENPREU6CisgIGNhc2UgU3ltYm9sS2luZDo6U19USFVOSzMyOgorICBjYXNlIFN5bWJvbEtpbmQ6OlNfSU5MSU5FU0lURToKKyAgY2FzZSBTeW1ib2xLaW5kOjpTX0lOTElORVNJVEUyOgorICAgIHJldHVybiB0cnVlOworICBkZWZhdWx0OgorICAgIGJyZWFrOworICB9CisgIHJldHVybiBmYWxzZTsKK30KKworLy8vIFJldHVybiB0cnVlIGlmIHRoaXMgc3N5bWJvbCBlbmRzIGEgc2NvcGUuCitpbmxpbmUgYm9vbCBzeW1ib2xFbmRzU2NvcGUoU3ltYm9sS2luZCBLaW5kKSB7CisgIHN3aXRjaCAoS2luZCkgeworICBjYXNlIFN5bWJvbEtpbmQ6OlNfRU5EOgorICBjYXNlIFN5bWJvbEtpbmQ6OlNfUFJPQ19JRF9FTkQ6CisgIGNhc2UgU3ltYm9sS2luZDo6U19JTkxJTkVTSVRFX0VORDoKKyAgICByZXR1cm4gdHJ1ZTsKKyAgZGVmYXVsdDoKKyAgICBicmVhazsKKyAgfQorICByZXR1cm4gZmFsc2U7Cit9CisKKy8vLyBHaXZlbiBhIHN5bWJvbCBQIGZvciB3aGljaCBzeW1ib2xPcGVuc1Njb3BlKFApID09IHRydWUsIHJldHVybiB0aGUKKy8vLyBjb3JyZXNwb25kaW5nIGVuZCBvZmZzZXQuCit1aW50MzJfdCBnZXRTY29wZUVuZE9mZnNldChjb25zdCBDVlN5bWJvbCAmU3ltYm9sKTsKK3VpbnQzMl90IGdldFNjb3BlUGFyZW50T2Zmc2V0KGNvbnN0IENWU3ltYm9sICZTeW1ib2wpOworCitDVlN5bWJvbEFycmF5IGxpbWl0U3ltYm9sQXJyYXlUb1Njb3BlKGNvbnN0IENWU3ltYm9sQXJyYXkgJlN5bWJvbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IFNjb3BlQmVnaW4pOworCit9IC8vIG5hbWVzcGFjZSBjb2RldmlldworfSAvLyBuYW1lc3BhY2UgbGx2bQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbFJlY29yZE1hcHBpbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbFJlY29yZE1hcHBpbmcuaAppbmRleCAzOTFlOGYxLi4zNDM2OGI2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TeW1ib2xSZWNvcmRNYXBwaW5nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU3ltYm9sUmVjb3JkTWFwcGluZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFN5bWJvbFJlY29yZE1hcHBpbmcuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU3ltYm9sU2VyaWFsaXplci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU3ltYm9sU2VyaWFsaXplci5oCmluZGV4IGY0ZDhhYjAuLjA4MjcxYzEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbFNlcmlhbGl6ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TeW1ib2xTZXJpYWxpemVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3ltYm9sU2VyaWFsaXplci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TeW1ib2xWaXNpdG9yQ2FsbGJhY2tQaXBlbGluZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU3ltYm9sVmlzaXRvckNhbGxiYWNrUGlwZWxpbmUuaAppbmRleCBlMjk1MTFhLi4xNDVkNjNhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TeW1ib2xWaXNpdG9yQ2FsbGJhY2tQaXBlbGluZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbFZpc2l0b3JDYWxsYmFja1BpcGVsaW5lLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3ltYm9sVmlzaXRvckNhbGxiYWNrUGlwZWxpbmUuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TeW1ib2xWaXNpdG9yQ2FsbGJhY2tzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9TeW1ib2xWaXNpdG9yQ2FsbGJhY2tzLmgKaW5kZXggMDgxNmY3Yy4uMWE0ZDViOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU3ltYm9sVmlzaXRvckNhbGxiYWNrcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbFZpc2l0b3JDYWxsYmFja3MuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTeW1ib2xWaXNpdG9yQ2FsbGJhY2tzLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1N5bWJvbFZpc2l0b3JEZWxlZ2F0ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU3ltYm9sVmlzaXRvckRlbGVnYXRlLmgKaW5kZXggYTJhM2M2Zi4uMzY4ZDhiMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU3ltYm9sVmlzaXRvckRlbGVnYXRlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvU3ltYm9sVmlzaXRvckRlbGVnYXRlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFN5bWJvbFZpc2l0b3JEZWxlZ2F0ZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlQ29sbGVjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZUNvbGxlY3Rpb24uaAppbmRleCBlOWZjOWIwLi41OGIxZGQwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlQ29sbGVjdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVDb2xsZWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVHlwZUNvbGxlY3Rpb24uaCAtIEEgY29sbGVjdGlvbiBvZiBDb2RlVmlldyB0eXBlIHJlY29yZHMgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlRGVzZXJpYWxpemVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlRGVzZXJpYWxpemVyLmgKaW5kZXggOTg4N2Q5MC4uZDJlZTM0NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZURlc2VyaWFsaXplci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVEZXNlcmlhbGl6ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUeXBlRGVzZXJpYWxpemVyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVEdW1wVmlzaXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZUR1bXBWaXNpdG9yLmgKaW5kZXggYWZiOGIzNi4uNDFhMjE5YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZUR1bXBWaXNpdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZUR1bXBWaXNpdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFR5cGVEdW1wVmlzaXRvci5oIC0gQ29kZVZpZXcgdHlwZSBpbmZvIGR1bXBlciAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlSGFzaGluZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZUhhc2hpbmcuaAppbmRleCAxZjczMmQyLi5jMmZiZmY2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlSGFzaGluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVIYXNoaW5nLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVHlwZUhhc2hpbmcuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKystKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC04NSw2ICs4NCw4IEBACiAgIH0KICAgc3RkOjphcnJheTx1aW50OF90LCA4PiBIYXNoOwogCisgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiAqKGNvbnN0IHVpbnQ2NF90KilIYXNoLmRhdGEoKSA9PSAwOyB9DQorCiAgIC8vLyBHaXZlbiBhIHNlcXVlbmNlIG9mIGJ5dGVzIHJlcHJlc2VudGluZyBhIHJlY29yZCwgY29tcHV0ZSBhIGdsb2JhbCBoYXNoIGZvcgogICAvLy8gdGhpcyByZWNvcmQuICBEdWUgdG8gdGhlIG5hdHVyZSBvZiBnbG9iYWwgaGFzaGVzIGluY29ycG9yYXRpbmcgdGhlIGhhc2hlcwogICAvLy8gb2YgcmVmZXJlbmNlZCByZWNvcmRzLCB0aGlzIGZ1bmN0aW9uIHJlcXVpcmVzIGEgbGlzdCBvZiB0eXBlcyBhbmQgaWRzCkBAIC0xMDgsOCArMTA5LDMzIEBACiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSYW5nZT4KICAgc3RhdGljIHN0ZDo6dmVjdG9yPEdsb2JhbGx5SGFzaGVkVHlwZT4gaGFzaFR5cGVzKFJhbmdlICYmUmVjb3JkcykgewogICAgIHN0ZDo6dmVjdG9yPEdsb2JhbGx5SGFzaGVkVHlwZT4gSGFzaGVzOwotICAgIGZvciAoY29uc3QgYXV0byAmUiA6IFJlY29yZHMpCi0gICAgICBIYXNoZXMucHVzaF9iYWNrKGhhc2hUeXBlKFIsIEhhc2hlcywgSGFzaGVzKSk7CisgICAgYm9vbCBVbnJlc29sdmVkUmVjb3JkcyA9IGZhbHNlOw0KKyAgICBmb3IgKGNvbnN0IGF1dG8gJlIgOiBSZWNvcmRzKSB7DQorICAgICAgR2xvYmFsbHlIYXNoZWRUeXBlIEggPSBoYXNoVHlwZShSLCBIYXNoZXMsIEhhc2hlcyk7CisgICAgICBpZiAoSC5lbXB0eSgpKQorICAgICAgICBVbnJlc29sdmVkUmVjb3JkcyA9IHRydWU7CisgICAgICBIYXNoZXMucHVzaF9iYWNrKEgpOworICAgIH0KKworICAgIC8vIEluIHNvbWUgcmFyZSBjYXNlcywgdGhlcmUgbWlnaHQgYmUgcmVjb3JkcyB3aXRoIGZvcndhcmQgcmVmZXJlbmNlcyBpbiB0aGUKKyAgICAvLyBzdHJlYW0uIFNldmVyYWwgcGFzc2VzIG1pZ2h0IGJlIG5lZWRlZCB0byBmdWxseSBoYXNoIGVhY2ggcmVjb3JkIGluIHRoZQorICAgIC8vIFR5cGUgc3RyZWFtLiBIb3dldmVyIHRoaXMgb2NjdXJzIG9uIHZlcnkgc21hbGwgT0JKcyBnZW5lcmF0ZWQgYnkgTUFTTSwKKyAgICAvLyB3aXRoIGEgZG96ZW4gcmVjb3JkcyBhdCBtb3N0LiBUaGVyZWZvcmUgdGhpcyBjb2RlcGF0aCBpc24ndAorICAgIC8vIHRpbWUtY3JpdGljYWwsIGFzIGl0IGlzbid0IHRha2VuIGluIDk5JSBvZiBjYXNlcy4KKyAgICB3aGlsZSAoVW5yZXNvbHZlZFJlY29yZHMpIHsKKyAgICAgIFVucmVzb2x2ZWRSZWNvcmRzID0gZmFsc2U7CisgICAgICBhdXRvIEhhc2hJdCA9IEhhc2hlcy5iZWdpbigpOworICAgICAgZm9yIChjb25zdCBhdXRvICZSIDogUmVjb3JkcykgeworICAgICAgICBpZiAoSGFzaEl0LT5lbXB0eSgpKSB7CisgICAgICAgICAgR2xvYmFsbHlIYXNoZWRUeXBlIEggPSBoYXNoVHlwZShSLCBIYXNoZXMsIEhhc2hlcyk7CisgICAgICAgICAgaWYgKEguZW1wdHkoKSkKKyAgICAgICAgICAgIFVucmVzb2x2ZWRSZWNvcmRzID0gdHJ1ZTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAqSGFzaEl0ID0gSDsKKyAgICAgICAgfQorICAgICAgICArK0hhc2hJdDsKKyAgICAgIH0KKyAgICB9CiAKICAgICByZXR1cm4gSGFzaGVzOwogICB9CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlSW5kZXguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVJbmRleC5oCmluZGV4IDY4MWI1ZjMuLmI5ZTI1NjIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVJbmRleC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVJbmRleC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFR5cGVJbmRleC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTQ1LDYgKzE0NCwxMyBAQAogICAgIHJldHVybiBUeXBlSW5kZXgoU2ltcGxlVHlwZUtpbmQ6OlZvaWQsIFNpbXBsZVR5cGVNb2RlOjpOZWFyUG9pbnRlcjY0KTsKICAgfQogCisgIHN0YXRpYyBUeXBlSW5kZXggTnVsbHB0clQoKSB7CisgICAgLy8gc3RkOjpudWxscHRyX3QgdXNlcyB0aGUgcG9pbnRlciBtb2RlIHRoYXQgZG9lc24ndCBpbmRpY2F0ZSBiaXQtd2lkdGgsCisgICAgLy8gcHJlc3VtYWJseSBiZWNhdXNlIHN0ZDo6bnVsbHB0cl90IGlzIGludGVuZGVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBhbnkKKyAgICAvLyBwb2ludGVyIHR5cGUuCisgICAgcmV0dXJuIFR5cGVJbmRleChTaW1wbGVUeXBlS2luZDo6Vm9pZCwgU2ltcGxlVHlwZU1vZGU6Ok5lYXJQb2ludGVyKTsKKyAgfQorCiAgIHN0YXRpYyBUeXBlSW5kZXggU2lnbmVkQ2hhcmFjdGVyKCkgewogICAgIHJldHVybiBUeXBlSW5kZXgoU2ltcGxlVHlwZUtpbmQ6OlNpZ25lZENoYXJhY3Rlcik7CiAgIH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVJbmRleERpc2NvdmVyeS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZUluZGV4RGlzY292ZXJ5LmgKaW5kZXggYzQyNGEwOS4uNDY5NzY4NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZUluZGV4RGlzY292ZXJ5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZUluZGV4RGlzY292ZXJ5LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVHlwZUluZGV4RGlzY292ZXJ5LmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlUmVjb3JkLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlUmVjb3JkLmgKaW5kZXggZWU2ZjUzOC4uYjE0N2RkNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZVJlY29yZC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVSZWNvcmQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUeXBlUmVjb3JkLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTk1LDYgKzk0LDExIEBACiAgICAgcmV0dXJuIE1QID09IE1ldGhvZEtpbmQ6OkludHJvZHVjaW5nVmlydHVhbCB8fAogICAgICAgICAgICBNUCA9PSBNZXRob2RLaW5kOjpQdXJlSW50cm9kdWNpbmdWaXJ0dWFsOwogICB9CisKKyAgLy8vIElzIHRoaXMgbWV0aG9kIHN0YXRpYy4KKyAgYm9vbCBpc1N0YXRpYygpIGNvbnN0IHsKKyAgICByZXR1cm4gZ2V0TWV0aG9kS2luZCgpID09IE1ldGhvZEtpbmQ6OlN0YXRpYzsKKyAgfQogfTsKIAogLy8gRG9lcyBub3QgY29ycmVzcG9uZCB0byBhbnkgdGFnLCB0aGlzIGlzIHRoZSB0YWlsIG9mIGFuIExGX1BPSU5URVIgcmVjb3JkCkBAIC0yNjQsMTQgKzI2OCwxOCBAQAogLy8gTEZfUE9JTlRFUgogY2xhc3MgUG9pbnRlclJlY29yZCA6IHB1YmxpYyBUeXBlUmVjb3JkIHsKIHB1YmxpYzoKKyAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tWFhYWFgKICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaW50ZXJLaW5kU2hpZnQgPSAwOwogICBzdGF0aWMgY29uc3QgdWludDMyX3QgUG9pbnRlcktpbmRNYXNrID0gMHgxRjsKIAorICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1YWFgtLS0tLQogICBzdGF0aWMgY29uc3QgdWludDMyX3QgUG9pbnRlck1vZGVTaGlmdCA9IDU7CiAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2ludGVyTW9kZU1hc2sgPSAweDA3OwogCi0gIHN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2ludGVyT3B0aW9uTWFzayA9IDB4RkY7CisgIC8vIC0tLS0tLS0tLS1YWFgtLS0tLS1YWFhYWC0tLS0tLS0tCisgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBQb2ludGVyT3B0aW9uTWFzayA9IDB4MzgxZjAwOwogCisgIC8vIC0tLS0tLS0tLS0tLS1YWFhYWFgtLS0tLS0tLS0tLS0KICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaW50ZXJTaXplU2hpZnQgPSAxMzsKICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IFBvaW50ZXJTaXplTWFzayA9IDB4RkY7CiAKQEAgLTMwNSw3ICszMTMsNyBAQAogICB9CiAKICAgUG9pbnRlck9wdGlvbnMgZ2V0T3B0aW9ucygpIGNvbnN0IHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UG9pbnRlck9wdGlvbnM+KEF0dHJzKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UG9pbnRlck9wdGlvbnM+KEF0dHJzICYgUG9pbnRlck9wdGlvbk1hc2spOwogICB9CiAKICAgdWludDhfdCBnZXRTaXplKCkgY29uc3QgewpAQCAtMzM0LDYgKzM0MiwxNCBAQAogICAgIHJldHVybiAhIShBdHRycyAmIHVpbnQzMl90KFBvaW50ZXJPcHRpb25zOjpSZXN0cmljdCkpOwogICB9CiAKKyAgYm9vbCBpc0xWYWx1ZVJlZmVyZW5jZVRoaXNQdHIoKSBjb25zdCB7CisgICAgcmV0dXJuICEhKEF0dHJzICYgdWludDMyX3QoUG9pbnRlck9wdGlvbnM6OkxWYWx1ZVJlZlRoaXNQb2ludGVyKSk7CisgIH0KKworICBib29sIGlzUlZhbHVlUmVmZXJlbmNlVGhpc1B0cigpIGNvbnN0IHsKKyAgICByZXR1cm4gISEoQXR0cnMgJiB1aW50MzJfdChQb2ludGVyT3B0aW9uczo6UlZhbHVlUmVmVGhpc1BvaW50ZXIpKTsKKyAgfQorCiAgIFR5cGVJbmRleCBSZWZlcmVudFR5cGU7CiAgIHVpbnQzMl90IEF0dHJzOwogICBPcHRpb25hbDxNZW1iZXJQb2ludGVySW5mbz4gTWVtYmVySW5mbzsKQEAgLTQyOSw2ICs0NDUsMTQgQEAKICAgICByZXR1cm4gKE9wdGlvbnMgJiBDbGFzc09wdGlvbnM6OkZvcndhcmRSZWZlcmVuY2UpICE9IENsYXNzT3B0aW9uczo6Tm9uZTsKICAgfQogCisgIGJvb2wgY29udGFpbnNOZXN0ZWRDbGFzcygpIGNvbnN0IHsKKyAgICByZXR1cm4gKE9wdGlvbnMgJiBDbGFzc09wdGlvbnM6OkNvbnRhaW5zTmVzdGVkQ2xhc3MpICE9IENsYXNzT3B0aW9uczo6Tm9uZTsKKyAgfQorCisgIGJvb2wgaXNTY29wZWQoKSBjb25zdCB7CisgICAgcmV0dXJuIChPcHRpb25zICYgQ2xhc3NPcHRpb25zOjpTY29wZWQpICE9IENsYXNzT3B0aW9uczo6Tm9uZTsKKyAgfQorCiAgIHVpbnQxNl90IGdldE1lbWJlckNvdW50KCkgY29uc3QgeyByZXR1cm4gTWVtYmVyQ291bnQ7IH0KICAgQ2xhc3NPcHRpb25zIGdldE9wdGlvbnMoKSBjb25zdCB7IHJldHVybiBPcHRpb25zOyB9CiAgIFR5cGVJbmRleCBnZXRGaWVsZExpc3QoKSBjb25zdCB7IHJldHVybiBGaWVsZExpc3Q7IH0KQEAgLTY1NSw3ICs2NzksMTcgQEAKIAogICBBcnJheVJlZjxUeXBlSW5kZXg+IGdldEFyZ3MoKSBjb25zdCB7IHJldHVybiBBcmdJbmRpY2VzOyB9CiAKLSAgU21hbGxWZWN0b3I8VHlwZUluZGV4LCA0PiBBcmdJbmRpY2VzOworICAvLy8gSW5kaWNlcyBvZiBrbm93biBidWlsZCBpbmZvIGFyZ3VtZW50cy4KKyAgZW51bSBCdWlsZEluZm9BcmcgeworICAgIEN1cnJlbnREaXJlY3RvcnksIC8vLzwgQWJzb2x1dGUgQ1dEIHBhdGgKKyAgICBCdWlsZFRvb2wsICAgICAgICAvLy88IEFic29sdXRlIGNvbXBpbGVyIHBhdGgKKyAgICBTb3VyY2VGaWxlLCAgICAgICAvLy88IFBhdGggdG8gbWFpbiBzb3VyY2UgZmlsZSwgcmVsYXRpdmUgb3IgYWJzb2x1dGUKKyAgICBUeXBlU2VydmVyUERCLCAgICAvLy88IEFic29sdXRlIHBhdGggb2YgdHlwZSBzZXJ2ZXIgUERCICgvRmQpCisgICAgQ29tbWFuZExpbmUsICAgICAgLy8vPCBGdWxsIGNhbm9uaWNhbCBjb21tYW5kIGxpbmUgKG1heWJlIC1jYzEpCisgICAgTWF4QXJncworICB9OworCisgIFNtYWxsVmVjdG9yPFR5cGVJbmRleCwgTWF4QXJncz4gQXJnSW5kaWNlczsKIH07CiAKIC8vIExGX1ZGVEFCTEUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVSZWNvcmRIZWxwZXJzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlUmVjb3JkSGVscGVycy5oCmluZGV4IDM4OTQ3MmUuLmU4NDcwNGQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVSZWNvcmRIZWxwZXJzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZVJlY29yZEhlbHBlcnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUeXBlUmVjb3JkSGVscGVycy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVSZWNvcmRNYXBwaW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlUmVjb3JkTWFwcGluZy5oCmluZGV4IGNiZThkNjAuLmI4ODVkNTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVSZWNvcmRNYXBwaW5nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZVJlY29yZE1hcHBpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUeXBlUmVjb3JkTWFwcGluZy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVTdHJlYW1NZXJnZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVTdHJlYW1NZXJnZXIuaAppbmRleCA1ODM3NDBkLi5kMDUwNmNjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlU3RyZWFtTWVyZ2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZVN0cmVhbU1lcmdlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFR5cGVTdHJlYW1NZXJnZXIuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtODMsMTggKzgyLDIxIEBACiBFcnJvciBtZXJnZVR5cGVBbmRJZFJlY29yZHMoTWVyZ2luZ1R5cGVUYWJsZUJ1aWxkZXIgJkRlc3RJZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVyZ2luZ1R5cGVUYWJsZUJ1aWxkZXIgJkRlc3RUeXBlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8VHlwZUluZGV4PiAmU291cmNlVG9EZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENWVHlwZUFycmF5ICZJZHNBbmRUeXBlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1ZUeXBlQXJyYXkgJklkc0FuZFR5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiAmUENIU2lnbmF0dXJlKTsKIAogRXJyb3IgbWVyZ2VUeXBlQW5kSWRSZWNvcmRzKEdsb2JhbFR5cGVUYWJsZUJ1aWxkZXIgJkRlc3RJZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2xvYmFsVHlwZVRhYmxlQnVpbGRlciAmRGVzdFR5cGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNtYWxsVmVjdG9ySW1wbDxUeXBlSW5kZXg+ICZTb3VyY2VUb0Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1ZUeXBlQXJyYXkgJklkc0FuZFR5cGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEdsb2JhbGx5SGFzaGVkVHlwZT4gSGFzaGVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxHbG9iYWxseUhhc2hlZFR5cGU+IEhhc2hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gJlBDSFNpZ25hdHVyZSk7CiAKIEVycm9yIG1lcmdlVHlwZVJlY29yZHMoR2xvYmFsVHlwZVRhYmxlQnVpbGRlciAmRGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgU21hbGxWZWN0b3JJbXBsPFR5cGVJbmRleD4gJlNvdXJjZVRvRGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ1ZUeXBlQXJyYXkgJlR5cGVzLAotICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxHbG9iYWxseUhhc2hlZFR5cGU+IEhhc2hlcyk7CisgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEdsb2JhbGx5SGFzaGVkVHlwZT4gSGFzaGVzLAorICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gJlBDSFNpZ25hdHVyZSk7CiAKIEVycm9yIG1lcmdlSWRSZWNvcmRzKEdsb2JhbFR5cGVUYWJsZUJ1aWxkZXIgJkRlc3QsIEFycmF5UmVmPFR5cGVJbmRleD4gVHlwZXMsCiAgICAgICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8VHlwZUluZGV4PiAmU291cmNlVG9EZXN0LApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZVN5bWJvbEVtaXR0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVTeW1ib2xFbWl0dGVyLmgKaW5kZXggZGZiYTgzZC4uNGYyZTVkZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZVN5bWJvbEVtaXR0ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlU3ltYm9sRW1pdHRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFR5cGVTeW1ib2xFbWl0dGVyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZVRhYmxlQ29sbGVjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZVRhYmxlQ29sbGVjdGlvbi5oCmluZGV4IDgwMzI2YTAuLjVjYmUzNDAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVUYWJsZUNvbGxlY3Rpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlVGFibGVDb2xsZWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVHlwZVRhYmxlQ29sbGVjdGlvbi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi0gQysrIC0tKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlVmlzaXRvckNhbGxiYWNrUGlwZWxpbmUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVWaXNpdG9yQ2FsbGJhY2tQaXBlbGluZS5oCmluZGV4IDEyNmZiOGEuLmZiMGI1NzkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVWaXNpdG9yQ2FsbGJhY2tQaXBlbGluZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVWaXNpdG9yQ2FsbGJhY2tQaXBlbGluZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFR5cGVWaXNpdG9yQ2FsbGJhY2tQaXBlbGluZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZVZpc2l0b3JDYWxsYmFja3MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0NvZGVWaWV3L1R5cGVWaXNpdG9yQ2FsbGJhY2tzLmgKaW5kZXggZDdhNDczMy4uMzNmOGIxZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvVHlwZVZpc2l0b3JDYWxsYmFja3MuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9Db2RlVmlldy9UeXBlVmlzaXRvckNhbGxiYWNrcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFR5cGVWaXNpdG9yQ2FsbGJhY2tzLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRElDb250ZXh0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9ESUNvbnRleHQuaAppbmRleCBiYmRkNWUwLi5hNDFhYjIxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9ESUNvbnRleHQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9ESUNvbnRleHQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBESUNvbnRleHQuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtODEsNyArODAsNyBAQAogcHVibGljOgogICBESUlubGluaW5nSW5mbygpID0gZGVmYXVsdDsKIAotICBESUxpbmVJbmZvIGdldEZyYW1lKHVuc2lnbmVkIEluZGV4KSBjb25zdCB7CisgIGNvbnN0IERJTGluZUluZm8gJiBnZXRGcmFtZSh1bnNpZ25lZCBJbmRleCkgY29uc3QgewogICAgIGFzc2VydChJbmRleCA8IEZyYW1lcy5zaXplKCkpOwogICAgIHJldHVybiBGcmFtZXNbSW5kZXhdOwogICB9CkBAIC05OCw2ICs5NywxMSBAQAogICB2b2lkIGFkZEZyYW1lKGNvbnN0IERJTGluZUluZm8gJkZyYW1lKSB7CiAgICAgRnJhbWVzLnB1c2hfYmFjayhGcmFtZSk7CiAgIH0KKyAgCisgIHZvaWQgcmVzaXplKHVuc2lnbmVkIGkpIHsKKyAgICBGcmFtZXMucmVzaXplKGkpOworICB9CisgIAogfTsKIAogLy8vIENvbnRhaW5lciBmb3IgZGVzY3JpcHRpb24gb2YgYSBnbG9iYWwgdmFyaWFibGUuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkFiYnJldmlhdGlvbkRlY2xhcmF0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkFiYnJldmlhdGlvbkRlY2xhcmF0aW9uLmgKaW5kZXggODRiMjMzOS4uY2NmMjg5MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZBYmJyZXZpYXRpb25EZWNsYXJhdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGQWJicmV2aWF0aW9uRGVjbGFyYXRpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEV0FSRkFiYnJldmlhdGlvbkRlY2xhcmF0aW9uLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGQWNjZWxlcmF0b3JUYWJsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZBY2NlbGVyYXRvclRhYmxlLmgKaW5kZXggMWQ0NDg3Mi4uMGYwOWE1OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZBY2NlbGVyYXRvclRhYmxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZBY2NlbGVyYXRvclRhYmxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRFdBUkZBY2NlbGVyYXRvclRhYmxlLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkFkZHJlc3NSYW5nZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZBZGRyZXNzUmFuZ2UuaAppbmRleCA1YTdkZjVjLi41NmQ0NmM2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkFkZHJlc3NSYW5nZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGQWRkcmVzc1JhbmdlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRFdBUkZBZGRyZXNzUmFuZ2UuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkF0dHJpYnV0ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZBdHRyaWJ1dGUuaAppbmRleCBmMDY3MmJiLi5mYzZmMGE0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkF0dHJpYnV0ZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGQXR0cmlidXRlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRFdBUkZBdHRyaWJ1dGUuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkNvbXBpbGVVbml0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkNvbXBpbGVVbml0LmgKaW5kZXggMjdkNTZkNy4uMTZiOWJmYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZDb21waWxlVW5pdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGQ29tcGlsZVVuaXQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEV0FSRkNvbXBpbGVVbml0LmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTE4LDEzICsxNywxMyBAQAogY2xhc3MgRFdBUkZDb21waWxlVW5pdCA6IHB1YmxpYyBEV0FSRlVuaXQgewogcHVibGljOgogICBEV0FSRkNvbXBpbGVVbml0KERXQVJGQ29udGV4dCAmQ29udGV4dCwgY29uc3QgRFdBUkZTZWN0aW9uICZTZWN0aW9uLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IERXQVJGVW5pdEhlYWRlciAmSGVhZGVyLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IERXQVJGRGVidWdBYmJyZXYgKkRBLCBjb25zdCBEV0FSRlNlY3Rpb24gKlJTLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IERXQVJGVW5pdEhlYWRlciAmSGVhZGVyLCBjb25zdCBEV0FSRkRlYnVnQWJicmV2ICpEQSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBEV0FSRlNlY3Rpb24gKlJTLCBjb25zdCBEV0FSRlNlY3Rpb24gKkxvY1NlY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgU3RyaW5nUmVmIFNTLCBjb25zdCBEV0FSRlNlY3Rpb24gJlNPUywKICAgICAgICAgICAgICAgICAgICBjb25zdCBEV0FSRlNlY3Rpb24gKkFPUywgY29uc3QgRFdBUkZTZWN0aW9uICZMUywgYm9vbCBMRSwKICAgICAgICAgICAgICAgICAgICBib29sIElzRFdPLCBjb25zdCBEV0FSRlVuaXRWZWN0b3IgJlVuaXRWZWN0b3IpCi0gICAgICA6IERXQVJGVW5pdChDb250ZXh0LCBTZWN0aW9uLCBIZWFkZXIsIERBLCBSUywgU1MsIFNPUywgQU9TLCBMUywgTEUsIElzRFdPLAotICAgICAgICAgICAgICAgICAgVW5pdFZlY3Rvcikge30KKyAgICAgIDogRFdBUkZVbml0KENvbnRleHQsIFNlY3Rpb24sIEhlYWRlciwgREEsIFJTLCBMb2NTZWN0aW9uLCBTUywgU09TLCBBT1MsCisgICAgICAgICAgICAgICAgICBMUywgTEUsIElzRFdPLCBVbml0VmVjdG9yKSB7fQogCiAgIC8vLyBWVGFibGUgYW5jaG9yLgogICB+RFdBUkZDb21waWxlVW5pdCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZDb250ZXh0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkNvbnRleHQuaAppbmRleCBjNWI5OGVhLi5lNDE1OTI3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkNvbnRleHQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkNvbnRleHQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEV0FSRkNvbnRleHQuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8KIApAQCAtNzYsNyArNzUsNyBAQAogCiAgIERXQVJGVW5pdFZlY3RvciBEV09Vbml0czsKICAgc3RkOjp1bmlxdWVfcHRyPERXQVJGRGVidWdBYmJyZXY+IEFiYnJldkRXTzsKLSAgc3RkOjp1bmlxdWVfcHRyPERXQVJGRGVidWdMb2NEV08+IExvY0RXTzsKKyAgc3RkOjp1bmlxdWVfcHRyPERXQVJGRGVidWdMb2NsaXN0cz4gTG9jRFdPOwogCiAgIC8vLyBUaGUgbWF4aW11bSBEV0FSRiB2ZXJzaW9uIG9mIGFsbCB1bml0cy4KICAgdW5zaWduZWQgTWF4VmVyc2lvbiA9IDA7CkBAIC0yNjIsNyArMjYxLDcgQEAKICAgY29uc3QgRFdBUkZEZWJ1Z0FiYnJldiAqZ2V0RGVidWdBYmJyZXZEV08oKTsKIAogICAvLy8gR2V0IGEgcG9pbnRlciB0byB0aGUgcGFyc2VkIERlYnVnTG9jIG9iamVjdC4KLSAgY29uc3QgRFdBUkZEZWJ1Z0xvY0RXTyAqZ2V0RGVidWdMb2NEV08oKTsKKyAgY29uc3QgRFdBUkZEZWJ1Z0xvY2xpc3RzICpnZXREZWJ1Z0xvY0RXTygpOwogCiAgIC8vLyBHZXQgYSBwb2ludGVyIHRvIHRoZSBwYXJzZWQgRGVidWdBcmFuZ2VzIG9iamVjdC4KICAgY29uc3QgRFdBUkZEZWJ1Z0FyYW5nZXMgKmdldERlYnVnQXJhbmdlcygpOwpAQCAtMzYwLDYgKzM1OSwxMCBAQAogICAvLy8gRHVtcCBFcnJvciBhcyB3YXJuaW5nIG1lc3NhZ2UgdG8gc3RkZXJyLgogICBzdGF0aWMgdm9pZCBkdW1wV2FybmluZyhFcnJvciBXYXJuaW5nKTsKIAorICBUcmlwbGU6OkFyY2hUeXBlIGdldEFyY2goKSBjb25zdCB7CisgICAgcmV0dXJuIGdldERXQVJGT2JqKCkuZ2V0RmlsZSgpLT5nZXRBcmNoKCk7CisgIH0KKwogcHJpdmF0ZToKICAgLy8vIFJldHVybiB0aGUgY29tcGlsZSB1bml0IHdoaWNoIGNvbnRhaW5zIGluc3RydWN0aW9uIHdpdGggcHJvdmlkZWQKICAgLy8vIGFkZHJlc3MuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRhdGFFeHRyYWN0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGF0YUV4dHJhY3Rvci5oCmluZGV4IDFlZDA4NzUuLjdjMmExNTkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGF0YUV4dHJhY3Rvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGF0YUV4dHJhY3Rvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERXQVJGRGF0YUV4dHJhY3Rvci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z0FiYnJldi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z0FiYnJldi5oCmluZGV4IGQyNzdlYzMuLjI4ZmQ4NDggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdBYmJyZXYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRlYnVnQWJicmV2LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRFdBUkZEZWJ1Z0FiYnJldi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRlYnVnQWRkci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z0FkZHIuaAppbmRleCBmZmJkMWIwLi5hOThiZjI4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRlYnVnQWRkci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdBZGRyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRFdBUkZEZWJ1Z0FkZHIuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z0FyYW5nZVNldC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z0FyYW5nZVNldC5oCmluZGV4IGFiNDZmYWMuLjViNmM1NzggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdBcmFuZ2VTZXQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRlYnVnQXJhbmdlU2V0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRFdBUkZEZWJ1Z0FyYW5nZVNldC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRlYnVnQXJhbmdlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z0FyYW5nZXMuaAppbmRleCBlYTcxYTUwLi42ZDNhZjI0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRlYnVnQXJhbmdlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdBcmFuZ2VzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRFdBUkZEZWJ1Z0FyYW5nZXMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRlYnVnRnJhbWUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdGcmFtZS5oCmluZGV4IGZmMWM3ZmIuLmQ5NjBmNGIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdGcmFtZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdGcmFtZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERXQVJGRGVidWdGcmFtZS5oIC0gUGFyc2luZyBvZiAuZGVidWdfZnJhbWUgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTMsNiArMTIsNyBAQAogI2luY2x1ZGUgImxsdm0vQURUL0FycmF5UmVmLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvaXRlcmF0b3IuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9TbWFsbFN0cmluZy5oIgorI2luY2x1ZGUgImxsdm0vQURUL1RyaXBsZS5oIgogI2luY2x1ZGUgImxsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGF0YUV4dHJhY3Rvci5oIgogI2luY2x1ZGUgImxsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9FcnJvci5oIgpAQCAtNTksOSArNTksMTEgQEAKICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuICh1bnNpZ25lZClJbnN0cnVjdGlvbnMuc2l6ZSgpOyB9CiAgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiBJbnN0cnVjdGlvbnMuZW1wdHkoKTsgfQogCi0gIENGSVByb2dyYW0odWludDY0X3QgQ29kZUFsaWdubWVudEZhY3RvciwgaW50NjRfdCBEYXRhQWxpZ25tZW50RmFjdG9yKQorICBDRklQcm9ncmFtKHVpbnQ2NF90IENvZGVBbGlnbm1lbnRGYWN0b3IsIGludDY0X3QgRGF0YUFsaWdubWVudEZhY3RvciwKKyAgICAgICAgICAgICBUcmlwbGU6OkFyY2hUeXBlIEFyY2gpCiAgICAgICA6IENvZGVBbGlnbm1lbnRGYWN0b3IoQ29kZUFsaWdubWVudEZhY3RvciksCi0gICAgICAgIERhdGFBbGlnbm1lbnRGYWN0b3IoRGF0YUFsaWdubWVudEZhY3Rvcikge30KKyAgICAgICAgRGF0YUFsaWdubWVudEZhY3RvcihEYXRhQWxpZ25tZW50RmFjdG9yKSwKKyAgICAgICAgQXJjaChBcmNoKSB7fQogCiAgIC8vLyBQYXJzZSBhbmQgc3RvcmUgYSBzZXF1ZW5jZSBvZiBDRkkgaW5zdHJ1Y3Rpb25zIGZyb20gRGF0YSwKICAgLy8vIHN0YXJ0aW5nIGF0ICpPZmZzZXQgYW5kIGVuZGluZyBhdCBFbmRPZmZzZXQuICpPZmZzZXQgaXMgdXBkYXRlZApAQCAtNzYsNiArNzgsNyBAQAogICBzdGQ6OnZlY3RvcjxJbnN0cnVjdGlvbj4gSW5zdHJ1Y3Rpb25zOwogICBjb25zdCB1aW50NjRfdCBDb2RlQWxpZ25tZW50RmFjdG9yOwogICBjb25zdCBpbnQ2NF90IERhdGFBbGlnbm1lbnRGYWN0b3I7CisgIFRyaXBsZTo6QXJjaFR5cGUgQXJjaDsKIAogICAvLy8gQ29udmVuaWVuY2UgbWV0aG9kIHRvIGFkZCBhIG5ldyBpbnN0cnVjdGlvbiB3aXRoIHRoZSBnaXZlbiBvcGNvZGUuCiAgIHZvaWQgYWRkSW5zdHJ1Y3Rpb24odWludDhfdCBPcGNvZGUpIHsKQEAgLTEzMCw4ICsxMzMsOSBAQAogICBlbnVtIEZyYW1lS2luZCB7IEZLX0NJRSwgRktfRkRFIH07CiAKICAgRnJhbWVFbnRyeShGcmFtZUtpbmQgSywgdWludDY0X3QgT2Zmc2V0LCB1aW50NjRfdCBMZW5ndGgsIHVpbnQ2NF90IENvZGVBbGlnbiwKLSAgICAgICAgICAgICBpbnQ2NF90IERhdGFBbGlnbikKLSAgICAgIDogS2luZChLKSwgT2Zmc2V0KE9mZnNldCksIExlbmd0aChMZW5ndGgpLCBDRklzKENvZGVBbGlnbiwgRGF0YUFsaWduKSB7fQorICAgICAgICAgICAgIGludDY0X3QgRGF0YUFsaWduLCBUcmlwbGU6OkFyY2hUeXBlIEFyY2gpCisgICAgICA6IEtpbmQoSyksIE9mZnNldChPZmZzZXQpLCBMZW5ndGgoTGVuZ3RoKSwKKyAgICAgICAgQ0ZJcyhDb2RlQWxpZ24sIERhdGFBbGlnbiwgQXJjaCkge30KIAogICB2aXJ0dWFsIH5GcmFtZUVudHJ5KCkge30KIApAQCAtMTY4LDkgKzE3Miw5IEBACiAgICAgICBpbnQ2NF90IERhdGFBbGlnbm1lbnRGYWN0b3IsIHVpbnQ2NF90IFJldHVybkFkZHJlc3NSZWdpc3RlciwKICAgICAgIFNtYWxsU3RyaW5nPDg+IEF1Z21lbnRhdGlvbkRhdGEsIHVpbnQzMl90IEZERVBvaW50ZXJFbmNvZGluZywKICAgICAgIHVpbnQzMl90IExTREFQb2ludGVyRW5jb2RpbmcsIE9wdGlvbmFsPHVpbnQ2NF90PiBQZXJzb25hbGl0eSwKLSAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBQZXJzb25hbGl0eUVuYykKKyAgICAgIE9wdGlvbmFsPHVpbnQzMl90PiBQZXJzb25hbGl0eUVuYywgVHJpcGxlOjpBcmNoVHlwZSBBcmNoKQogICAgICAgOiBGcmFtZUVudHJ5KEZLX0NJRSwgT2Zmc2V0LCBMZW5ndGgsIENvZGVBbGlnbm1lbnRGYWN0b3IsCi0gICAgICAgICAgICAgICAgICAgRGF0YUFsaWdubWVudEZhY3RvciksCisgICAgICAgICAgICAgICAgICAgRGF0YUFsaWdubWVudEZhY3RvciwgQXJjaCksCiAgICAgICAgIFZlcnNpb24oVmVyc2lvbiksIEF1Z21lbnRhdGlvbihzdGQ6Om1vdmUoQXVnbWVudGF0aW9uKSksCiAgICAgICAgIEFkZHJlc3NTaXplKEFkZHJlc3NTaXplKSwgU2VnbWVudERlc2NyaXB0b3JTaXplKFNlZ21lbnREZXNjcmlwdG9yU2l6ZSksCiAgICAgICAgIENvZGVBbGlnbm1lbnRGYWN0b3IoQ29kZUFsaWdubWVudEZhY3RvciksCkBAIC0yMjQsMTAgKzIyOCwxMSBAQAogICAvLyBpcyBvYnRhaW5lZCBsYXppbHkgb25jZSBpdCdzIGFjdHVhbGx5IHJlcXVpcmVkLgogICBGREUodWludDY0X3QgT2Zmc2V0LCB1aW50NjRfdCBMZW5ndGgsIGludDY0X3QgTGlua2VkQ0lFT2Zmc2V0LAogICAgICAgdWludDY0X3QgSW5pdGlhbExvY2F0aW9uLCB1aW50NjRfdCBBZGRyZXNzUmFuZ2UsIENJRSAqQ2llLAotICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IExTREFBZGRyZXNzKQorICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IExTREFBZGRyZXNzLCBUcmlwbGU6OkFyY2hUeXBlIEFyY2gpCiAgICAgICA6IEZyYW1lRW50cnkoRktfRkRFLCBPZmZzZXQsIExlbmd0aCwKICAgICAgICAgICAgICAgICAgICBDaWUgPyBDaWUtPmdldENvZGVBbGlnbm1lbnRGYWN0b3IoKSA6IDAsCi0gICAgICAgICAgICAgICAgICAgQ2llID8gQ2llLT5nZXREYXRhQWxpZ25tZW50RmFjdG9yKCkgOiAwKSwKKyAgICAgICAgICAgICAgICAgICBDaWUgPyBDaWUtPmdldERhdGFBbGlnbm1lbnRGYWN0b3IoKSA6IDAsCisgICAgICAgICAgICAgICAgICAgQXJjaCksCiAgICAgICAgIExpbmtlZENJRU9mZnNldChMaW5rZWRDSUVPZmZzZXQpLCBJbml0aWFsTG9jYXRpb24oSW5pdGlhbExvY2F0aW9uKSwKICAgICAgICAgQWRkcmVzc1JhbmdlKEFkZHJlc3NSYW5nZSksIExpbmtlZENJRShDaWUpLCBMU0RBQWRkcmVzcyhMU0RBQWRkcmVzcykge30KIApAQCAtMjU2LDYgKzI2MSw3IEBACiAKIC8vLyBBIHBhcnNlZCAuZGVidWdfZnJhbWUgb3IgLmVoX2ZyYW1lIHNlY3Rpb24KIGNsYXNzIERXQVJGRGVidWdGcmFtZSB7CisgIGNvbnN0IFRyaXBsZTo6QXJjaFR5cGUgQXJjaDsKICAgLy8gVHJ1ZSBpZiB0aGlzIGlzIHBhcnNpbmcgYW4gZWhfZnJhbWUgc2VjdGlvbi4KICAgY29uc3QgYm9vbCBJc0VIOwogICAvLyBOb3QgemVybyBmb3Igc2FuZSBwb2ludGVyIHZhbHVlcyBjb21pbmcgb3V0IG9mIGVoX2ZyYW1lCkBAIC0yNzIsNyArMjc4LDggQEAKICAgLy8gaXQgaXMgYSAuZGVidWdfZnJhbWUgc2VjdGlvbi4gRUhGcmFtZUFkZHJlc3Mgc2hvdWxkIGJlIGRpZmZlcmVudAogICAvLyB0aGFuIHplcm8gZm9yIGNvcnJlY3QgcGFyc2luZyBvZiAuZWhfZnJhbWUgYWRkcmVzc2VzIHdoZW4gdGhleQogICAvLyB1c2UgYSBQQy1yZWxhdGl2ZSBlbmNvZGluZy4KLSAgRFdBUkZEZWJ1Z0ZyYW1lKGJvb2wgSXNFSCA9IGZhbHNlLCB1aW50NjRfdCBFSEZyYW1lQWRkcmVzcyA9IDApOworICBEV0FSRkRlYnVnRnJhbWUoVHJpcGxlOjpBcmNoVHlwZSBBcmNoLAorICAgICAgICAgICAgICAgICAgYm9vbCBJc0VIID0gZmFsc2UsIHVpbnQ2NF90IEVIRnJhbWVBZGRyZXNzID0gMCk7CiAgIH5EV0FSRkRlYnVnRnJhbWUoKTsKIAogICAvLy8gRHVtcCB0aGUgc2VjdGlvbiBkYXRhIGludG8gdGhlIGdpdmVuIHN0cmVhbS4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdJbmZvRW50cnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdJbmZvRW50cnkuaAppbmRleCA4OGM4ZjU3Li5mNTAwNjNiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRlYnVnSW5mb0VudHJ5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z0luZm9FbnRyeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERXQVJGRGVidWdJbmZvRW50cnkuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z0xpbmUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdMaW5lLmgKaW5kZXggZDUwYWY1YS4uOWU0MGM4NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z0xpbmUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRlYnVnTGluZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERXQVJGRGVidWdMaW5lLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z0xvYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z0xvYy5oCmluZGV4IDlhNzM3NDUuLmRiZWQ5NTkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdMb2MuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRlYnVnTG9jLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRFdBUkZEZWJ1Z0xvYy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC03MywxOSArNzIsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqT2Zmc2V0KTsKIH07CiAKLWNsYXNzIERXQVJGRGVidWdMb2NEV08geworY2xhc3MgRFdBUkZEZWJ1Z0xvY2xpc3RzIHsKIHB1YmxpYzoKICAgc3RydWN0IEVudHJ5IHsKLSAgICB1aW50NjRfdCBTdGFydDsKLSAgICB1aW50MzJfdCBMZW5ndGg7CisgICAgdWludDhfdCBLaW5kOworICAgIHVpbnQ2NF90IFZhbHVlMDsKKyAgICB1aW50NjRfdCBWYWx1ZTE7CiAgICAgU21hbGxWZWN0b3I8Y2hhciwgND4gTG9jOwogICB9OwogCiAgIHN0cnVjdCBMb2NhdGlvbkxpc3QgewogICAgIHVuc2lnbmVkIE9mZnNldDsKICAgICBTbWFsbFZlY3RvcjxFbnRyeSwgMj4gRW50cmllczsKLSAgICB2b2lkIGR1bXAocmF3X29zdHJlYW0gJk9TLCBib29sIElzTGl0dGxlRW5kaWFuLCB1bnNpZ25lZCBBZGRyZXNzU2l6ZSwKLSAgICAgICAgICAgICAgY29uc3QgTUNSZWdpc3RlckluZm8gKlJlZ0luZm8sIHVuc2lnbmVkIEluZGVudCkgY29uc3Q7CisgICAgdm9pZCBkdW1wKHJhd19vc3RyZWFtICZPUywgdWludDY0X3QgQmFzZUFkZHIsIGJvb2wgSXNMaXR0bGVFbmRpYW4sCisgICAgICAgICAgICAgIHVuc2lnbmVkIEFkZHJlc3NTaXplLCBjb25zdCBNQ1JlZ2lzdGVySW5mbyAqUmVnSW5mbywKKyAgICAgICAgICAgICAgdW5zaWduZWQgSW5kZW50KSBjb25zdDsKICAgfTsKIAogcHJpdmF0ZToKQEAgLTk4LDE1ICs5OSwxNSBAQAogICBib29sIElzTGl0dGxlRW5kaWFuOwogCiBwdWJsaWM6Ci0gIHZvaWQgcGFyc2UoRGF0YUV4dHJhY3RvciBkYXRhKTsKLSAgdm9pZCBkdW1wKHJhd19vc3RyZWFtICZPUywgY29uc3QgTUNSZWdpc3RlckluZm8gKlJlZ0luZm8sCisgIHZvaWQgcGFyc2UoRGF0YUV4dHJhY3RvciBkYXRhLCB1bnNpZ25lZCBWZXJzaW9uKTsKKyAgdm9pZCBkdW1wKHJhd19vc3RyZWFtICZPUywgdWludDY0X3QgQmFzZUFkZHIsIGNvbnN0IE1DUmVnaXN0ZXJJbmZvICpSZWdJbmZvLAogICAgICAgICAgICAgT3B0aW9uYWw8dWludDY0X3Q+IE9mZnNldCkgY29uc3Q7CiAKICAgLy8vIFJldHVybiB0aGUgbG9jYXRpb24gbGlzdCBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IG9yIG51bGxwdHIuCiAgIExvY2F0aW9uTGlzdCBjb25zdCAqZ2V0TG9jYXRpb25MaXN0QXRPZmZzZXQodWludDY0X3QgT2Zmc2V0KSBjb25zdDsKIAotICBzdGF0aWMgT3B0aW9uYWw8TG9jYXRpb25MaXN0PiBwYXJzZU9uZUxvY2F0aW9uTGlzdChEYXRhRXh0cmFjdG9yIERhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpPZmZzZXQpOworICBzdGF0aWMgT3B0aW9uYWw8TG9jYXRpb25MaXN0PgorICBwYXJzZU9uZUxvY2F0aW9uTGlzdChEYXRhRXh0cmFjdG9yIERhdGEsIHVuc2lnbmVkICpPZmZzZXQsIHVuc2lnbmVkIFZlcnNpb24pOwogfTsKIAogfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdNYWNyby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z01hY3JvLmgKaW5kZXggYmZlMmZjMy4uYTZjMTI1OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z01hY3JvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z01hY3JvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRFdBUkZEZWJ1Z01hY3JvLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRlYnVnUHViVGFibGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdQdWJUYWJsZS5oCmluZGV4IGNhZTQ4MDQuLjk5ZTkxY2EgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdQdWJUYWJsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdQdWJUYWJsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERXQVJGRGVidWdQdWJUYWJsZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTMsNiArMTIsNyBAQAogI2luY2x1ZGUgImxsdm0vQURUL0FycmF5UmVmLmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvU3RyaW5nUmVmLmgiCiAjaW5jbHVkZSAibGx2bS9CaW5hcnlGb3JtYXQvRHdhcmYuaCIKKyNpbmNsdWRlICJsbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRk9iamVjdC5oIgogI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCkBAIC02Nyw3ICs2Nyw4IEBACiAgIGJvb2wgR251U3R5bGU7CiAKIHB1YmxpYzoKLSAgRFdBUkZEZWJ1Z1B1YlRhYmxlKFN0cmluZ1JlZiBEYXRhLCBib29sIExpdHRsZUVuZGlhbiwgYm9vbCBHbnVTdHlsZSk7CisgIERXQVJGRGVidWdQdWJUYWJsZShjb25zdCBEV0FSRk9iamVjdCAmT2JqLCBjb25zdCBEV0FSRlNlY3Rpb24gJlNlYywKKyAgICAgICAgICAgICAgICAgICAgIGJvb2wgTGl0dGxlRW5kaWFuLCBib29sIEdudVN0eWxlKTsKIAogICB2b2lkIGR1bXAocmF3X29zdHJlYW0gJk9TKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z1JhbmdlTGlzdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z1JhbmdlTGlzdC5oCmluZGV4IGNlNzQzNmQuLmMxYzBmNDIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdSYW5nZUxpc3QuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRlYnVnUmFuZ2VMaXN0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRFdBUkZEZWJ1Z1JhbmdlTGlzdC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xOCw3ICsxNyw2IEBACiAKIG5hbWVzcGFjZSBsbHZtIHsKIAotc3RydWN0IEJhc2VBZGRyZXNzOwogY2xhc3MgcmF3X29zdHJlYW07CiAKIGNsYXNzIERXQVJGRGVidWdSYW5nZUxpc3QgewpAQCAtNzgsNyArNzYsNyBAQAogICAvLy8gbGlzdC4gSGFzIHRvIGJlIHBhc3NlZCBiYXNlIGFkZHJlc3Mgb2YgdGhlIGNvbXBpbGUgdW5pdCByZWZlcmVuY2luZyB0aGlzCiAgIC8vLyByYW5nZSBsaXN0LgogICBEV0FSRkFkZHJlc3NSYW5nZXNWZWN0b3IKLSAgZ2V0QWJzb2x1dGVSYW5nZXMobGx2bTo6T3B0aW9uYWw8QmFzZUFkZHJlc3M+IEJhc2VBZGRyKSBjb25zdDsKKyAgZ2V0QWJzb2x1dGVSYW5nZXMobGx2bTo6T3B0aW9uYWw8U2VjdGlvbmVkQWRkcmVzcz4gQmFzZUFkZHIpIGNvbnN0OwogfTsKIAogfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGVidWdSbmdsaXN0cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z1JuZ2xpc3RzLmgKaW5kZXggZTJlOGFiNS4uYzY2NjFhOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z1JuZ2xpc3RzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEZWJ1Z1JuZ2xpc3RzLmgKQEAgLTEsMTUgKzEsMTUgQEAKIC8vPT09LSBEV0FSRkRlYnVnUm5nbGlzdHMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKICNpZm5kZWYgTExWTV9ERUJVR0lORk9fRFdBUkZERUJVR1JOR0xJU1RTX0gKICNkZWZpbmUgTExWTV9ERUJVR0lORk9fRFdBUkZERUJVR1JOR0xJU1RTX0gKIAorI2luY2x1ZGUgImxsdm0vQURUL09wdGlvbmFsLmgiCiAjaW5jbHVkZSAibGx2bS9CaW5hcnlGb3JtYXQvRHdhcmYuaCIKICNpbmNsdWRlICJsbHZtL0RlYnVnSW5mby9ESUNvbnRleHQuaCIKICNpbmNsdWRlICJsbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRhdGFFeHRyYWN0b3IuaCIKQEAgLTIzLDYgKzIzLDcgQEAKIAogY2xhc3MgRXJyb3I7CiBjbGFzcyByYXdfb3N0cmVhbTsKK2NsYXNzIERXQVJGVW5pdDsKIAogLy8vIEEgY2xhc3MgcmVwcmVzZW50aW5nIGEgc2luZ2xlIHJhbmdlIGxpc3QgZW50cnkuCiBzdHJ1Y3QgUmFuZ2VMaXN0RW50cnkgOiBwdWJsaWMgRFdBUkZMaXN0RW50cnlCYXNlIHsKQEAgLTM1LDcgKzM2LDkgQEAKIAogICBFcnJvciBleHRyYWN0KERXQVJGRGF0YUV4dHJhY3RvciBEYXRhLCB1aW50MzJfdCBFbmQsIHVpbnQzMl90ICpPZmZzZXRQdHIpOwogICB2b2lkIGR1bXAocmF3X29zdHJlYW0gJk9TLCB1aW50OF90IEFkZHJTaXplLCB1aW50OF90IE1heEVuY29kaW5nU3RyaW5nTGVuZ3RoLAotICAgICAgICAgICAgdWludDY0X3QgJkN1cnJlbnRCYXNlLCBESUR1bXBPcHRpb25zIER1bXBPcHRzKSBjb25zdDsKKyAgICAgICAgICAgIHVpbnQ2NF90ICZDdXJyZW50QmFzZSwgRElEdW1wT3B0aW9ucyBEdW1wT3B0cywKKyAgICAgICAgICAgIGxsdm06OmZ1bmN0aW9uX3JlZjxPcHRpb25hbDxTZWN0aW9uZWRBZGRyZXNzPih1aW50MzJfdCk+CisgICAgICAgICAgICAgICAgTG9va3VwUG9vbGVkQWRkcmVzcykgY29uc3Q7CiAgIGJvb2wgaXNTZW50aW5lbCgpIGNvbnN0IHsgcmV0dXJuIEVudHJ5S2luZCA9PSBkd2FyZjo6RFdfUkxFX2VuZF9vZl9saXN0OyB9CiB9OwogCkBAIC00NCw3ICs0Nyw4IEBACiBwdWJsaWM6CiAgIC8vLyBCdWlsZCBhIERXQVJGQWRkcmVzc1Jhbmdlc1ZlY3RvciBmcm9tIGEgcmFuZ2VsaXN0LgogICBEV0FSRkFkZHJlc3NSYW5nZXNWZWN0b3IKLSAgZ2V0QWJzb2x1dGVSYW5nZXMobGx2bTo6T3B0aW9uYWw8QmFzZUFkZHJlc3M+IEJhc2VBZGRyKSBjb25zdDsKKyAgZ2V0QWJzb2x1dGVSYW5nZXMobGx2bTo6T3B0aW9uYWw8U2VjdGlvbmVkQWRkcmVzcz4gQmFzZUFkZHIsCisgICAgICAgICAgICAgICAgICAgIERXQVJGVW5pdCAmVSkgY29uc3Q7CiB9OwogCiBjbGFzcyBEV0FSRkRlYnVnUm5nbGlzdFRhYmxlIDogcHVibGljIERXQVJGTGlzdFRhYmxlQmFzZTxEV0FSRkRlYnVnUm5nbGlzdD4gewpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEaWUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRGllLmgKaW5kZXggYzc3MDM0Zi4uMjFlNjhmOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZEaWUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkRpZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERXQVJGRGllLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTgwLDYgKzE3OSw3IEBACiAgIC8vLyBccmV0dXJucyBhIHZhbGlkIERXQVJGRGllIGluc3RhbmNlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLCBvciBhbiBpbnZhbGlkCiAgIC8vLyBEV0FSRkRpZSBvYmplY3QgaWYgaXQgZG9lc24ndC4KICAgRFdBUkZEaWUgZ2V0QXR0cmlidXRlVmFsdWVBc1JlZmVyZW5jZWREaWUoZHdhcmY6OkF0dHJpYnV0ZSBBdHRyKSBjb25zdDsKKyAgRFdBUkZEaWUgZ2V0QXR0cmlidXRlVmFsdWVBc1JlZmVyZW5jZWREaWUoY29uc3QgRFdBUkZGb3JtVmFsdWUgJlYpIGNvbnN0OwogCiAgIC8vLyBFeHRyYWN0IHRoZSByYW5nZSBiYXNlIGF0dHJpYnV0ZSBmcm9tIHRoaXMgRElFIGFzIGFic29sdXRlIHNlY3Rpb24gb2Zmc2V0LgogICAvLy8KQEAgLTQwNCw2ICs0MDQsMTAgQEAKICAgICAgIERpZSA9IERpZS5nZXRQcmV2aW91c1NpYmxpbmcoKTsKICAgfQogCisgIGxsdm06OkRXQVJGRGllOjppdGVyYXRvciBiYXNlKCkgY29uc3QgeworICAgIHJldHVybiBsbHZtOjpEV0FSRkRpZTo6aXRlcmF0b3IoQXRFbmQgPyBEaWUgOiBEaWUuZ2V0U2libGluZygpKTsKKyAgfQorCiAgIHJldmVyc2VfaXRlcmF0b3I8bGx2bTo6RFdBUkZEaWU6Oml0ZXJhdG9yPiAmb3BlcmF0b3IrKygpIHsKICAgICBhc3NlcnQoIUF0RW5kICYmICJJbmNyZW1lbnRpbmcgcmVuZCIpOwogICAgIGxsdm06OkRXQVJGRGllIEQgPSBEaWUuZ2V0UHJldmlvdXNTaWJsaW5nKCk7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkV4cHJlc3Npb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRXhwcmVzc2lvbi5oCmluZGV4IDNmYWQ2OGEuLjgwNDkwOTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRXhwcmVzc2lvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRXhwcmVzc2lvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gRFdBUkZFeHByZXNzaW9uLmggLSBEV0FSRiBFeHByZXNzaW9uIGhhbmRsaW5nIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZGb3JtVmFsdWUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGRm9ybVZhbHVlLmgKaW5kZXggMWI1ZjcxYy4uZTA5MmQ5NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZGb3JtVmFsdWUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkZvcm1WYWx1ZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERXQVJGRm9ybVZhbHVlLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNjEsNyArNjAsNiBAQAogCiAgIGR3YXJmOjpGb3JtIGdldEZvcm0oKSBjb25zdCB7IHJldHVybiBGb3JtOyB9CiAgIHVpbnQ2NF90IGdldFJhd1VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFZhbHVlLnV2YWw7IH0KLSAgdWludDY0X3QgZ2V0U2VjdGlvbkluZGV4KCkgY29uc3QgeyByZXR1cm4gVmFsdWUuU2VjdGlvbkluZGV4OyB9CiAgIHZvaWQgc2V0Rm9ybShkd2FyZjo6Rm9ybSBGKSB7IEZvcm0gPSBGOyB9CiAgIHZvaWQgc2V0VVZhbHVlKHVpbnQ2NF90IFYpIHsgVmFsdWUudXZhbCA9IFY7IH0KICAgdm9pZCBzZXRTVmFsdWUoaW50NjRfdCBWKSB7IFZhbHVlLnN2YWwgPSBWOyB9CkBAIC03NSw2ICs3MywxMCBAQAogICBib29sIGlzRm9ybUNsYXNzKEZvcm1DbGFzcyBGQykgY29uc3Q7CiAgIGNvbnN0IERXQVJGVW5pdCAqZ2V0VW5pdCgpIGNvbnN0IHsgcmV0dXJuIFU7IH0KICAgdm9pZCBkdW1wKHJhd19vc3RyZWFtICZPUywgRElEdW1wT3B0aW9ucyBEdW1wT3B0cyA9IERJRHVtcE9wdGlvbnMoKSkgY29uc3Q7CisgIHZvaWQgZHVtcFNlY3Rpb25lZEFkZHJlc3MocmF3X29zdHJlYW0gJk9TLCBESUR1bXBPcHRpb25zIER1bXBPcHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb25lZEFkZHJlc3MgU0EpIGNvbnN0OworICBzdGF0aWMgdm9pZCBkdW1wQWRkcmVzc1NlY3Rpb24oY29uc3QgRFdBUkZPYmplY3QgJk9iaiwgcmF3X29zdHJlYW0gJk9TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRElEdW1wT3B0aW9ucyBEdW1wT3B0cywgdWludDY0X3QgU2VjdGlvbkluZGV4KTsKIAogICAvLy8gRXh0cmFjdHMgYSB2YWx1ZSBpbiBccCBEYXRhIGF0IG9mZnNldCBccCAqT2Zmc2V0UHRyLiBUaGUgaW5mb3JtYXRpb24KICAgLy8vIGluIFxwIEZvcm1QYXJhbXMgaXMgbmVlZGVkIHRvIGludGVycHJldCBzb21lIGZvcm1zLiBUaGUgb3B0aW9uYWwKQEAgLTEwMSw2ICsxMDMsNyBAQAogICBPcHRpb25hbDxpbnQ2NF90PiBnZXRBc1NpZ25lZENvbnN0YW50KCkgY29uc3Q7CiAgIE9wdGlvbmFsPGNvbnN0IGNoYXIgKj4gZ2V0QXNDU3RyaW5nKCkgY29uc3Q7CiAgIE9wdGlvbmFsPHVpbnQ2NF90PiBnZXRBc0FkZHJlc3MoKSBjb25zdDsKKyAgT3B0aW9uYWw8U2VjdGlvbmVkQWRkcmVzcz4gZ2V0QXNTZWN0aW9uZWRBZGRyZXNzKCkgY29uc3Q7CiAgIE9wdGlvbmFsPHVpbnQ2NF90PiBnZXRBc1NlY3Rpb25PZmZzZXQoKSBjb25zdDsKICAgT3B0aW9uYWw8QXJyYXlSZWY8dWludDhfdD4+IGdldEFzQmxvY2soKSBjb25zdDsKICAgT3B0aW9uYWw8dWludDY0X3Q+IGdldEFzQ1N0cmluZ09mZnNldCgpIGNvbnN0OwpAQCAtMjM4LDYgKzI0MSwxMyBAQAogICByZXR1cm4gTm9uZTsKIH0KIAoraW5saW5lIE9wdGlvbmFsPFNlY3Rpb25lZEFkZHJlc3M+Cit0b1NlY3Rpb25lZEFkZHJlc3MoY29uc3QgT3B0aW9uYWw8RFdBUkZGb3JtVmFsdWU+ICZWKSB7CisgIGlmIChWKQorICAgIHJldHVybiBWLT5nZXRBc1NlY3Rpb25lZEFkZHJlc3MoKTsKKyAgcmV0dXJuIE5vbmU7Cit9CisKIC8vLyBUYWtlIGFuIG9wdGlvbmFsIERXQVJGRm9ybVZhbHVlIGFuZCBleHRyYWN0IGEgYWRkcmVzcy4KIC8vLwogLy8vIFxwYXJhbSBWIGFuZCBvcHRpb25hbCBEV0FSRkZvcm1WYWx1ZSB0byBhdHRlbXB0IHRvIGV4dHJhY3QgdGhlIHZhbHVlIGZyb20uCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkdkYkluZGV4LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkdkYkluZGV4LmgKaW5kZXggOGQxYWM1Yy4uMzhjZDQyZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZHZGJJbmRleC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGR2RiSW5kZXguaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEV0FSRkdkYkluZGV4LmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTI0LDYgKzIzLDcgQEAKICAgdWludDMyX3QgVmVyc2lvbjsKIAogICB1aW50MzJfdCBDdUxpc3RPZmZzZXQ7CisgIHVpbnQzMl90IFR1TGlzdE9mZnNldDsKICAgdWludDMyX3QgQWRkcmVzc0FyZWFPZmZzZXQ7CiAgIHVpbnQzMl90IFN5bWJvbFRhYmxlT2Zmc2V0OwogICB1aW50MzJfdCBDb25zdGFudFBvb2xPZmZzZXQ7CkBAIC0zNCw2ICszNCwxMyBAQAogICB9OwogICBTbWFsbFZlY3RvcjxDb21wVW5pdEVudHJ5LCAwPiBDdUxpc3Q7CiAKKyAgc3RydWN0IFR5cGVVbml0RW50cnkgeworICAgIHVpbnQ2NF90IE9mZnNldDsKKyAgICB1aW50NjRfdCBUeXBlT2Zmc2V0OworICAgIHVpbnQ2NF90IFR5cGVTaWduYXR1cmU7CisgIH07CisgIFNtYWxsVmVjdG9yPFR5cGVVbml0RW50cnksIDA+IFR1TGlzdDsKKwogICBzdHJ1Y3QgQWRkcmVzc0VudHJ5IHsKICAgICB1aW50NjRfdCBMb3dBZGRyZXNzOyAgLy8vIFRoZSBsb3cgYWRkcmVzcy4KICAgICB1aW50NjRfdCBIaWdoQWRkcmVzczsgLy8vIFRoZSBoaWdoIGFkZHJlc3MuCkBAIC01NSw2ICs2Miw3IEBACiAgIHVpbnQzMl90IFN0cmluZ1Bvb2xPZmZzZXQ7CiAKICAgdm9pZCBkdW1wQ1VMaXN0KHJhd19vc3RyZWFtICZPUykgY29uc3Q7CisgIHZvaWQgZHVtcFRVTGlzdChyYXdfb3N0cmVhbSAmT1MpIGNvbnN0OwogICB2b2lkIGR1bXBBZGRyZXNzQXJlYShyYXdfb3N0cmVhbSAmT1MpIGNvbnN0OwogICB2b2lkIGR1bXBTeW1ib2xUYWJsZShyYXdfb3N0cmVhbSAmT1MpIGNvbnN0OwogICB2b2lkIGR1bXBDb25zdGFudFBvb2wocmF3X29zdHJlYW0gJk9TKSBjb25zdDsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGTGlzdFRhYmxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRkxpc3RUYWJsZS5oCmluZGV4IDhjZjllNDAuLjZjMTNkYjMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGTGlzdFRhYmxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZMaXN0VGFibGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEV0FSRkxpc3RUYWJsZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTk5LDYgKzk4LDcgQEAKICAgdWludDMyX3QgZ2V0SGVhZGVyT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gSGVhZGVyT2Zmc2V0OyB9CiAgIHVpbnQ4X3QgZ2V0QWRkclNpemUoKSBjb25zdCB7IHJldHVybiBIZWFkZXJEYXRhLkFkZHJTaXplOyB9CiAgIHVpbnQzMl90IGdldExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIEhlYWRlckRhdGEuTGVuZ3RoOyB9CisgIHVpbnQxNl90IGdldFZlcnNpb24oKSBjb25zdCB7IHJldHVybiBIZWFkZXJEYXRhLlZlcnNpb247IH0KICAgU3RyaW5nUmVmIGdldFNlY3Rpb25OYW1lKCkgY29uc3QgeyByZXR1cm4gU2VjdGlvbk5hbWU7IH0KICAgU3RyaW5nUmVmIGdldExpc3RUeXBlU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gTGlzdFR5cGVTdHJpbmc7IH0KICAgZHdhcmY6OkR3YXJmRm9ybWF0IGdldEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIEZvcm1hdDsgfQpAQCAtMTU2LDcgKzE1NiwxMCBAQAogICB1aW50MzJfdCBnZXRIZWFkZXJPZmZzZXQoKSBjb25zdCB7IHJldHVybiBIZWFkZXIuZ2V0SGVhZGVyT2Zmc2V0KCk7IH0KICAgdWludDhfdCBnZXRBZGRyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEhlYWRlci5nZXRBZGRyU2l6ZSgpOyB9CiAKLSAgdm9pZCBkdW1wKHJhd19vc3RyZWFtICZPUywgRElEdW1wT3B0aW9ucyBEdW1wT3B0cyA9IHt9KSBjb25zdDsKKyAgdm9pZCBkdW1wKHJhd19vc3RyZWFtICZPUywKKyAgICAgICAgICAgIGxsdm06OmZ1bmN0aW9uX3JlZjxPcHRpb25hbDxTZWN0aW9uZWRBZGRyZXNzPih1aW50MzJfdCk+CisgICAgICAgICAgICAgICAgTG9va3VwUG9vbGVkQWRkcmVzcywKKyAgICAgICAgICAgIERJRHVtcE9wdGlvbnMgRHVtcE9wdHMgPSB7fSkgY29uc3Q7CiAKICAgLy8vIFJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIG9mZnNldCBlbnRyeSBkZXNpZ25hdGVkIGJ5IGEgZ2l2ZW4gaW5kZXguCiAgIE9wdGlvbmFsPHVpbnQzMl90PiBnZXRPZmZzZXRFbnRyeSh1aW50MzJfdCBJbmRleCkgY29uc3QgewpAQCAtMjI5LDggKzIzMiwxMSBAQAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRFdBUkZMaXN0VHlwZT4KLXZvaWQgRFdBUkZMaXN0VGFibGVCYXNlPERXQVJGTGlzdFR5cGU+OjpkdW1wKHJhd19vc3RyZWFtICZPUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERJRHVtcE9wdGlvbnMgRHVtcE9wdHMpIGNvbnN0IHsKK3ZvaWQgRFdBUkZMaXN0VGFibGVCYXNlPERXQVJGTGlzdFR5cGU+OjpkdW1wKAorICAgIHJhd19vc3RyZWFtICZPUywKKyAgICBsbHZtOjpmdW5jdGlvbl9yZWY8T3B0aW9uYWw8U2VjdGlvbmVkQWRkcmVzcz4odWludDMyX3QpPgorICAgICAgICBMb29rdXBQb29sZWRBZGRyZXNzLAorICAgIERJRHVtcE9wdGlvbnMgRHVtcE9wdHMpIGNvbnN0IHsKICAgSGVhZGVyLmR1bXAoT1MsIER1bXBPcHRzKTsKICAgT1MgPDwgSGVhZGVyU3RyaW5nIDw8ICJcbiI7CiAKQEAgLTI0OSw3ICsyNTUsNyBAQAogICBmb3IgKGNvbnN0IGF1dG8gJkxpc3QgOiBMaXN0TWFwKQogICAgIGZvciAoY29uc3QgYXV0byAmRW50cnkgOiBMaXN0LnNlY29uZC5nZXRFbnRyaWVzKCkpCiAgICAgICBFbnRyeS5kdW1wKE9TLCBnZXRBZGRyU2l6ZSgpLCBNYXhFbmNvZGluZ1N0cmluZ0xlbmd0aCwgQ3VycmVudEJhc2UsCi0gICAgICAgICAgICAgICAgIER1bXBPcHRzKTsKKyAgICAgICAgICAgICAgICAgRHVtcE9wdHMsIExvb2t1cFBvb2xlZEFkZHJlc3MpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRFdBUkZMaXN0VHlwZT4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGT2JqZWN0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRk9iamVjdC5oCmluZGV4IDZlOGYzNzAuLjFiYmE3NGEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGT2JqZWN0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZPYmplY3QuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEV0FSRk9iamVjdC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vCiAKQEAgLTMzLDExICszMiwxMyBAQAogICB2aXJ0dWFsIEFycmF5UmVmPFNlY3Rpb25OYW1lPiBnZXRTZWN0aW9uTmFtZXMoKSBjb25zdCB7IHJldHVybiB7fTsgfQogICB2aXJ0dWFsIGJvb2wgaXNMaXR0bGVFbmRpYW4oKSBjb25zdCA9IDA7CiAgIHZpcnR1YWwgdWludDhfdCBnZXRBZGRyZXNzU2l6ZSgpIGNvbnN0IHsgbGx2bV91bnJlYWNoYWJsZSgidW5pbXBsZW1lbnRlZCIpOyB9Ci0gIHZpcnR1YWwgY29uc3QgRFdBUkZTZWN0aW9uICZnZXRJbmZvU2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuIER1bW15OyB9CisgIHZpcnR1YWwgdm9pZAorICBmb3JFYWNoSW5mb1NlY3Rpb25zKGZ1bmN0aW9uX3JlZjx2b2lkKGNvbnN0IERXQVJGU2VjdGlvbiAmKT4gRikgY29uc3Qge30KICAgdmlydHVhbCB2b2lkCiAgIGZvckVhY2hUeXBlc1NlY3Rpb25zKGZ1bmN0aW9uX3JlZjx2b2lkKGNvbnN0IERXQVJGU2VjdGlvbiAmKT4gRikgY29uc3Qge30KICAgdmlydHVhbCBTdHJpbmdSZWYgZ2V0QWJicmV2U2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuICIiOyB9CiAgIHZpcnR1YWwgY29uc3QgRFdBUkZTZWN0aW9uICZnZXRMb2NTZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gRHVtbXk7IH0KKyAgdmlydHVhbCBjb25zdCBEV0FSRlNlY3Rpb24gJmdldExvY2xpc3RzU2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuIER1bW15OyB9CiAgIHZpcnR1YWwgU3RyaW5nUmVmIGdldEFSYW5nZVNlY3Rpb24oKSBjb25zdCB7IHJldHVybiAiIjsgfQogICB2aXJ0dWFsIFN0cmluZ1JlZiBnZXREZWJ1Z0ZyYW1lU2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuICIiOyB9CiAgIHZpcnR1YWwgU3RyaW5nUmVmIGdldEVIRnJhbWVTZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gIiI7IH0KQEAgLTQ3LDEyICs0OCwxMyBAQAogICB2aXJ0dWFsIGNvbnN0IERXQVJGU2VjdGlvbiAmZ2V0UmFuZ2VTZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gRHVtbXk7IH0KICAgdmlydHVhbCBjb25zdCBEV0FSRlNlY3Rpb24gJmdldFJuZ2xpc3RzU2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuIER1bW15OyB9CiAgIHZpcnR1YWwgU3RyaW5nUmVmIGdldE1hY2luZm9TZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gIiI7IH0KLSAgdmlydHVhbCBTdHJpbmdSZWYgZ2V0UHViTmFtZXNTZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gIiI7IH0KLSAgdmlydHVhbCBTdHJpbmdSZWYgZ2V0UHViVHlwZXNTZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gIiI7IH0KLSAgdmlydHVhbCBTdHJpbmdSZWYgZ2V0R251UHViTmFtZXNTZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gIiI7IH0KLSAgdmlydHVhbCBTdHJpbmdSZWYgZ2V0R251UHViVHlwZXNTZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gIiI7IH0KKyAgdmlydHVhbCBjb25zdCBEV0FSRlNlY3Rpb24gJmdldFB1Yk5hbWVzU2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuIER1bW15OyB9CisgIHZpcnR1YWwgY29uc3QgRFdBUkZTZWN0aW9uICZnZXRQdWJUeXBlc1NlY3Rpb24oKSBjb25zdCB7IHJldHVybiBEdW1teTsgfQorICB2aXJ0dWFsIGNvbnN0IERXQVJGU2VjdGlvbiAmZ2V0R251UHViTmFtZXNTZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gRHVtbXk7IH0KKyAgdmlydHVhbCBjb25zdCBEV0FSRlNlY3Rpb24gJmdldEdudVB1YlR5cGVzU2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuIER1bW15OyB9CiAgIHZpcnR1YWwgY29uc3QgRFdBUkZTZWN0aW9uICZnZXRTdHJpbmdPZmZzZXRTZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gRHVtbXk7IH0KLSAgdmlydHVhbCBjb25zdCBEV0FSRlNlY3Rpb24gJmdldEluZm9EV09TZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gRHVtbXk7IH0KKyAgdmlydHVhbCB2b2lkCisgIGZvckVhY2hJbmZvRFdPU2VjdGlvbnMoZnVuY3Rpb25fcmVmPHZvaWQoY29uc3QgRFdBUkZTZWN0aW9uICYpPiBGKSBjb25zdCB7fQogICB2aXJ0dWFsIHZvaWQKICAgZm9yRWFjaFR5cGVzRFdPU2VjdGlvbnMoZnVuY3Rpb25fcmVmPHZvaWQoY29uc3QgRFdBUkZTZWN0aW9uICYpPiBGKSBjb25zdCB7fQogICB2aXJ0dWFsIFN0cmluZ1JlZiBnZXRBYmJyZXZEV09TZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gIiI7IH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGUmVsb2NNYXAuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGUmVsb2NNYXAuaAppbmRleCBmNTE4Mzg0Li5hOGY1YjI4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRlJlbG9jTWFwLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZSZWxvY01hcC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERXQVJGUmVsb2NNYXAuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZTZWN0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRlNlY3Rpb24uaAppbmRleCA3NzA0NWYwLi5iYjAwMDQ2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRlNlY3Rpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRlNlY3Rpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEV0FSRlNlY3Rpb24uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTIzLDYgKzIyLDExIEBACiAgIGJvb2wgSXNOYW1lVW5pcXVlOwogfTsKIAorc3RydWN0IFNlY3Rpb25lZEFkZHJlc3MgeworICB1aW50NjRfdCBBZGRyZXNzOworICB1aW50NjRfdCBTZWN0aW9uSW5kZXg7Cit9OworCiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQogCiAjZW5kaWYgLy8gTExWTV9ERUJVR0lORk9fRFdBUkZfRFdBUkZTRUNUSU9OX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGVHlwZVVuaXQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGVHlwZVVuaXQuaAppbmRleCAwYTVhMWFhLi45MGQ4OTM3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRlR5cGVVbml0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZUeXBlVW5pdC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERXQVJGVHlwZVVuaXQuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMjYsMTMgKzI1LDEzIEBACiBjbGFzcyBEV0FSRlR5cGVVbml0IDogcHVibGljIERXQVJGVW5pdCB7CiBwdWJsaWM6CiAgIERXQVJGVHlwZVVuaXQoRFdBUkZDb250ZXh0ICZDb250ZXh0LCBjb25zdCBEV0FSRlNlY3Rpb24gJlNlY3Rpb24sCi0gICAgICAgICAgICAgICAgY29uc3QgRFdBUkZVbml0SGVhZGVyICZIZWFkZXIsCi0gICAgICAgICAgICAgICAgY29uc3QgRFdBUkZEZWJ1Z0FiYnJldiAqREEsIGNvbnN0IERXQVJGU2VjdGlvbiAqUlMsCisgICAgICAgICAgICAgICAgY29uc3QgRFdBUkZVbml0SGVhZGVyICZIZWFkZXIsIGNvbnN0IERXQVJGRGVidWdBYmJyZXYgKkRBLAorICAgICAgICAgICAgICAgIGNvbnN0IERXQVJGU2VjdGlvbiAqUlMsIGNvbnN0IERXQVJGU2VjdGlvbiAqTG9jU2VjdGlvbiwKICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgU1MsIGNvbnN0IERXQVJGU2VjdGlvbiAmU09TLCBjb25zdCBEV0FSRlNlY3Rpb24gKkFPUywKICAgICAgICAgICAgICAgICBjb25zdCBEV0FSRlNlY3Rpb24gJkxTLCBib29sIExFLCBib29sIElzRFdPLAogICAgICAgICAgICAgICAgIGNvbnN0IERXQVJGVW5pdFZlY3RvciAmVW5pdFZlY3RvcikKLSAgICAgIDogRFdBUkZVbml0KENvbnRleHQsIFNlY3Rpb24sIEhlYWRlciwgREEsIFJTLCBTUywgU09TLCBBT1MsIExTLCBMRSwgSXNEV08sCi0gICAgICAgICAgICAgICAgICBVbml0VmVjdG9yKSB7fQorICAgICAgOiBEV0FSRlVuaXQoQ29udGV4dCwgU2VjdGlvbiwgSGVhZGVyLCBEQSwgUlMsIExvY1NlY3Rpb24sIFNTLCBTT1MsIEFPUywKKyAgICAgICAgICAgICAgICAgIExTLCBMRSwgSXNEV08sIFVuaXRWZWN0b3IpIHt9CiAKICAgdWludDY0X3QgZ2V0VHlwZUhhc2goKSBjb25zdCB7IHJldHVybiBnZXRIZWFkZXIoKS5nZXRUeXBlSGFzaCgpOyB9CiAgIHVpbnQzMl90IGdldFR5cGVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBnZXRIZWFkZXIoKS5nZXRUeXBlT2Zmc2V0KCk7IH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGVW5pdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZVbml0LmgKaW5kZXggMzlkNDNiOS4uZTgyY2U4ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZVbml0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZVbml0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRFdBUkZVbml0LmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC03Miw3ICs3MSw4IEBACiAgIC8vLyBQYXJzZSBhIHVuaXQgaGVhZGVyIGZyb20gXHAgZGVidWdfaW5mbyBzdGFydGluZyBhdCBccCBvZmZzZXRfcHRyLgogICBib29sIGV4dHJhY3QoRFdBUkZDb250ZXh0ICZDb250ZXh0LCBjb25zdCBEV0FSRkRhdGFFeHRyYWN0b3IgJmRlYnVnX2luZm8sCiAgICAgICAgICAgICAgICB1aW50MzJfdCAqb2Zmc2V0X3B0ciwgRFdBUkZTZWN0aW9uS2luZCBLaW5kID0gRFdfU0VDVF9JTkZPLAotICAgICAgICAgICAgICAgY29uc3QgRFdBUkZVbml0SW5kZXggKkluZGV4ID0gbnVsbHB0cik7CisgICAgICAgICAgICAgICBjb25zdCBEV0FSRlVuaXRJbmRleCAqSW5kZXggPSBudWxscHRyLAorICAgICAgICAgICAgICAgY29uc3QgRFdBUkZVbml0SW5kZXg6OkVudHJ5ICpFbnRyeSA9IG51bGxwdHIpOwogICB1aW50MzJfdCBnZXRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBPZmZzZXQ7IH0KICAgY29uc3QgZHdhcmY6OkZvcm1QYXJhbXMgJmdldEZvcm1QYXJhbXMoKSBjb25zdCB7IHJldHVybiBGb3JtUGFyYW1zOyB9CiAgIHVpbnQxNl90IGdldFZlcnNpb24oKSBjb25zdCB7IHJldHVybiBGb3JtUGFyYW1zLlZlcnNpb247IH0KQEAgLTEwOCw3ICsxMDgsOCBAQAogLy8vIC5kZWJ1Z19pbmZvIGFuZCAuZGVidWdfdHlwZXMsIG9yIGZyb20gLmRlYnVnX2luZm8uZHdvIGFuZCAuZGVidWdfdHlwZXMuZHdvLgogY2xhc3MgRFdBUkZVbml0VmVjdG9yIGZpbmFsIDogcHVibGljIFNtYWxsVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEV0FSRlVuaXQ+LCAxPiB7CiAgIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPERXQVJGVW5pdD4odWludDMyX3QsIERXQVJGU2VjdGlvbktpbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRFdBUkZTZWN0aW9uICopPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERXQVJGU2VjdGlvbiAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERXQVJGVW5pdEluZGV4OjpFbnRyeSAqKT4KICAgICAgIFBhcnNlcjsKICAgaW50IE51bUluZm9Vbml0cyA9IC0xOwogCkBAIC0xNTMsMTggKzE1NCwxMyBAQAogcHJpdmF0ZToKICAgdm9pZCBhZGRVbml0c0ltcGwoRFdBUkZDb250ZXh0ICZDb250ZXh0LCBjb25zdCBEV0FSRk9iamVjdCAmT2JqLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBEV0FSRlNlY3Rpb24gJlNlY3Rpb24sIGNvbnN0IERXQVJGRGVidWdBYmJyZXYgKkRBLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBEV0FSRlNlY3Rpb24gKlJTLCBTdHJpbmdSZWYgU1MsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IERXQVJGU2VjdGlvbiAmU09TLCBjb25zdCBEV0FSRlNlY3Rpb24gKkFPUywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgRFdBUkZTZWN0aW9uICZMUywgYm9vbCBMRSwgYm9vbCBJc0RXTywgYm9vbCBMYXp5LAotICAgICAgICAgICAgICAgICAgICBEV0FSRlNlY3Rpb25LaW5kIFNlY3Rpb25LaW5kKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgRFdBUkZTZWN0aW9uICpSUywgY29uc3QgRFdBUkZTZWN0aW9uICpMb2NTZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgU1MsIGNvbnN0IERXQVJGU2VjdGlvbiAmU09TLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBEV0FSRlNlY3Rpb24gKkFPUywgY29uc3QgRFdBUkZTZWN0aW9uICZMUywgYm9vbCBMRSwKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBJc0RXTywgYm9vbCBMYXp5LCBEV0FSRlNlY3Rpb25LaW5kIFNlY3Rpb25LaW5kKTsKIH07CiAKIC8vLyBSZXByZXNlbnRzIGJhc2UgYWRkcmVzcyBvZiB0aGUgQ1UuCi1zdHJ1Y3QgQmFzZUFkZHJlc3MgewotICB1aW50NjRfdCBBZGRyZXNzOwotICB1aW50NjRfdCBTZWN0aW9uSW5kZXg7Ci19OwotCiAvLy8gUmVwcmVzZW50cyBhIHVuaXQncyBjb250cmlidXRpb24gdG8gdGhlIHN0cmluZyBvZmZzZXRzIHRhYmxlLgogc3RydWN0IFN0ck9mZnNldHNDb250cmlidXRpb25EZXNjcmlwdG9yIHsKICAgdWludDY0X3QgQmFzZSA9IDA7CkBAIC0xOTgsMTMgKzE5NCwxOSBAQAogICBjb25zdCBEV0FSRkRlYnVnQWJicmV2ICpBYmJyZXY7CiAgIGNvbnN0IERXQVJGU2VjdGlvbiAqUmFuZ2VTZWN0aW9uOwogICB1aW50MzJfdCBSYW5nZVNlY3Rpb25CYXNlOworICAvLy8gV2UgZWl0aGVyIGtlZXAgdHJhY2sgb2YgdGhlIGxvY2F0aW9uIGxpc3Qgc2VjdGlvbiBvciBpdHMgZGF0YSwgZGVwZW5kaW5nCisgIC8vLyBvbiB3aGV0aGVyIHdlIGFyZSBoYW5kbGluZyBhIHNwbGl0IERXQVJGIHNlY3Rpb24gb3Igbm90LgorICB1bmlvbiB7CisgICAgY29uc3QgRFdBUkZTZWN0aW9uICpMb2NTZWN0aW9uOworICAgIFN0cmluZ1JlZiBMb2NTZWN0aW9uRGF0YTsKKyAgfTsKICAgY29uc3QgRFdBUkZTZWN0aW9uICZMaW5lU2VjdGlvbjsKICAgU3RyaW5nUmVmIFN0cmluZ1NlY3Rpb247CiAgIGNvbnN0IERXQVJGU2VjdGlvbiAmU3RyaW5nT2Zmc2V0U2VjdGlvbjsKICAgY29uc3QgRFdBUkZTZWN0aW9uICpBZGRyT2Zmc2V0U2VjdGlvbjsKICAgdWludDMyX3QgQWRkck9mZnNldFNlY3Rpb25CYXNlID0gMDsKICAgYm9vbCBpc0xpdHRsZUVuZGlhbjsKLSAgYm9vbCBpc0RXTzsKKyAgYm9vbCBJc0RXTzsKICAgY29uc3QgRFdBUkZVbml0VmVjdG9yICZVbml0VmVjdG9yOwogCiAgIC8vLyBTdGFydCwgbGVuZ3RoLCBhbmQgRFdBUkYgZm9ybWF0IG9mIHRoZSB1bml0J3MgY29udHJpYnV0aW9uIHRvIHRoZSBzdHJpbmcKQEAgLTIxNSw3ICsyMTcsNyBAQAogICBPcHRpb25hbDxEV0FSRkRlYnVnUm5nbGlzdFRhYmxlPiBSbmdMaXN0VGFibGU7CiAKICAgbXV0YWJsZSBjb25zdCBEV0FSRkFiYnJldmlhdGlvbkRlY2xhcmF0aW9uU2V0ICpBYmJyZXZzOwotICBsbHZtOjpPcHRpb25hbDxCYXNlQWRkcmVzcz4gQmFzZUFkZHI7CisgIGxsdm06Ok9wdGlvbmFsPFNlY3Rpb25lZEFkZHJlc3M+IEJhc2VBZGRyOwogICAvLy8gVGhlIGNvbXBpbGUgdW5pdCBkZWJ1ZyBpbmZvcm1hdGlvbiBlbnRyeSBpdGVtcy4KICAgc3RkOjp2ZWN0b3I8RFdBUkZEZWJ1Z0luZm9FbnRyeT4gRGllQXJyYXk7CiAKQEAgLTI0NSwyOSArMjQ3LDMwIEBACiAgIC8vLyBsZW5ndGggYW5kIGZvcm0uIFRoZSBnaXZlbiBvZmZzZXQgaXMgZXhwZWN0ZWQgdG8gYmUgZGVyaXZlZCBmcm9tIHRoZSB1bml0CiAgIC8vLyBESUUncyBEV19BVF9zdHJfb2Zmc2V0c19iYXNlIGF0dHJpYnV0ZS4KICAgT3B0aW9uYWw8U3RyT2Zmc2V0c0NvbnRyaWJ1dGlvbkRlc2NyaXB0b3I+Ci0gIGRldGVybWluZVN0cmluZ09mZnNldHNUYWJsZUNvbnRyaWJ1dGlvbihEV0FSRkRhdGFFeHRyYWN0b3IgJkRBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgT2Zmc2V0KTsKKyAgZGV0ZXJtaW5lU3RyaW5nT2Zmc2V0c1RhYmxlQ29udHJpYnV0aW9uKERXQVJGRGF0YUV4dHJhY3RvciAmREEpOwogCiAgIC8vLyBGaW5kIHRoZSB1bml0J3MgY29udHJpYnV0aW9uIHRvIHRoZSBzdHJpbmcgb2Zmc2V0cyB0YWJsZSBhbmQgZGV0ZXJtaW5lIGl0cwogICAvLy8gbGVuZ3RoIGFuZCBmb3JtLiBUaGUgZ2l2ZW4gb2Zmc2V0IGlzIGV4cGVjdGVkIHRvIGJlIDAgaW4gYSBkd28gZmlsZSBvciwKICAgLy8vIGluIGEgZHdwIGZpbGUsIHRoZSBzdGFydCBvZiB0aGUgdW5pdCdzIGNvbnRyaWJ1dGlvbiB0byB0aGUgc3RyaW5nIG9mZnNldHMKICAgLy8vIHRhYmxlIHNlY3Rpb24gKGFzIGRldGVybWluZWQgYnkgdGhlIGluZGV4IHRhYmxlKS4KICAgT3B0aW9uYWw8U3RyT2Zmc2V0c0NvbnRyaWJ1dGlvbkRlc2NyaXB0b3I+Ci0gIGRldGVybWluZVN0cmluZ09mZnNldHNUYWJsZUNvbnRyaWJ1dGlvbkRXTyhEV0FSRkRhdGFFeHRyYWN0b3IgJkRBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgT2Zmc2V0KTsKKyAgZGV0ZXJtaW5lU3RyaW5nT2Zmc2V0c1RhYmxlQ29udHJpYnV0aW9uRFdPKERXQVJGRGF0YUV4dHJhY3RvciAmREEpOwogCiBwdWJsaWM6CiAgIERXQVJGVW5pdChEV0FSRkNvbnRleHQgJkNvbnRleHQsIGNvbnN0IERXQVJGU2VjdGlvbiAmU2VjdGlvbiwKLSAgICAgICAgICAgIGNvbnN0IERXQVJGVW5pdEhlYWRlciAmSGVhZGVyLAotICAgICAgICAgICAgY29uc3QgRFdBUkZEZWJ1Z0FiYnJldiAqREEsIGNvbnN0IERXQVJGU2VjdGlvbiAqUlMsIFN0cmluZ1JlZiBTUywKLSAgICAgICAgICAgIGNvbnN0IERXQVJGU2VjdGlvbiAmU09TLCBjb25zdCBEV0FSRlNlY3Rpb24gKkFPUywKKyAgICAgICAgICAgIGNvbnN0IERXQVJGVW5pdEhlYWRlciAmSGVhZGVyLCBjb25zdCBEV0FSRkRlYnVnQWJicmV2ICpEQSwKKyAgICAgICAgICAgIGNvbnN0IERXQVJGU2VjdGlvbiAqUlMsIGNvbnN0IERXQVJGU2VjdGlvbiAqTG9jU2VjdGlvbiwKKyAgICAgICAgICAgIFN0cmluZ1JlZiBTUywgY29uc3QgRFdBUkZTZWN0aW9uICZTT1MsIGNvbnN0IERXQVJGU2VjdGlvbiAqQU9TLAogICAgICAgICAgICAgY29uc3QgRFdBUkZTZWN0aW9uICZMUywgYm9vbCBMRSwgYm9vbCBJc0RXTywKICAgICAgICAgICAgIGNvbnN0IERXQVJGVW5pdFZlY3RvciAmVW5pdFZlY3Rvcik7CiAKICAgdmlydHVhbCB+RFdBUkZVbml0KCk7CiAKKyAgYm9vbCBpc0RXT1VuaXQoKSBjb25zdCB7IHJldHVybiBJc0RXTzsgfQogICBEV0FSRkNvbnRleHQmIGdldENvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0OyB9CiAgIGNvbnN0IERXQVJGU2VjdGlvbiAmZ2V0SW5mb1NlY3Rpb24oKSBjb25zdCB7IHJldHVybiBJbmZvU2VjdGlvbjsgfQorICBjb25zdCBEV0FSRlNlY3Rpb24gKmdldExvY1NlY3Rpb24oKSBjb25zdCB7IHJldHVybiBMb2NTZWN0aW9uOyB9CisgIFN0cmluZ1JlZiBnZXRMb2NTZWN0aW9uRGF0YSgpIGNvbnN0IHsgcmV0dXJuIExvY1NlY3Rpb25EYXRhOyB9CiAgIHVpbnQzMl90IGdldE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIEhlYWRlci5nZXRPZmZzZXQoKTsgfQogICBjb25zdCBkd2FyZjo6Rm9ybVBhcmFtcyAmZ2V0Rm9ybVBhcmFtcygpIGNvbnN0IHsKICAgICByZXR1cm4gSGVhZGVyLmdldEZvcm1QYXJhbXMoKTsKQEAgLTMwMSw4ICszMDQsOCBAQAogICAgIFJhbmdlU2VjdGlvbkJhc2UgPSBCYXNlOwogICB9CiAKLSAgYm9vbCBnZXRBZGRyT2Zmc2V0U2VjdGlvbkl0ZW0odWludDMyX3QgSW5kZXgsIHVpbnQ2NF90ICZSZXN1bHQpIGNvbnN0OwotICBib29sIGdldFN0cmluZ09mZnNldFNlY3Rpb25JdGVtKHVpbnQzMl90IEluZGV4LCB1aW50NjRfdCAmUmVzdWx0KSBjb25zdDsKKyAgT3B0aW9uYWw8U2VjdGlvbmVkQWRkcmVzcz4gZ2V0QWRkck9mZnNldFNlY3Rpb25JdGVtKHVpbnQzMl90IEluZGV4KSBjb25zdDsKKyAgT3B0aW9uYWw8dWludDY0X3Q+IGdldFN0cmluZ09mZnNldFNlY3Rpb25JdGVtKHVpbnQzMl90IEluZGV4KSBjb25zdDsKIAogICBEV0FSRkRhdGFFeHRyYWN0b3IgZ2V0RGVidWdJbmZvRXh0cmFjdG9yKCkgY29uc3Q7CiAKQEAgLTM3Miw3ICszNzUsNyBAQAogICAgIGxsdm1fdW5yZWFjaGFibGUoIkludmFsaWQgVW5pdFR5cGUuIik7CiAgIH0KIAotICBsbHZtOjpPcHRpb25hbDxCYXNlQWRkcmVzcz4gZ2V0QmFzZUFkZHJlc3MoKTsKKyAgbGx2bTo6T3B0aW9uYWw8U2VjdGlvbmVkQWRkcmVzcz4gZ2V0QmFzZUFkZHJlc3MoKTsKIAogICBEV0FSRkRpZSBnZXRVbml0RElFKGJvb2wgRXh0cmFjdFVuaXRESUVPbmx5ID0gdHJ1ZSkgewogICAgIGV4dHJhY3RESUVzSWZOZWVkZWQoRXh0cmFjdFVuaXRESUVPbmx5KTsKQEAgLTQwNiw3ICs0MDksNyBAQAogICAgIHJldHVybiBOb25lOwogICB9CiAKLSAgdm9pZCBjb2xsZWN0QWRkcmVzc1JhbmdlcyhEV0FSRkFkZHJlc3NSYW5nZXNWZWN0b3IgJkNVUmFuZ2VzKTsKKyAgRXhwZWN0ZWQ8RFdBUkZBZGRyZXNzUmFuZ2VzVmVjdG9yPiBjb2xsZWN0QWRkcmVzc1JhbmdlcygpOwogCiAgIC8vLyBSZXR1cm5zIHN1YnByb2dyYW0gRElFIHdpdGggYWRkcmVzcyByYW5nZSBlbmNvbXBhc3NpbmcgdGhlIHByb3ZpZGVkCiAgIC8vLyBhZGRyZXNzLiBUaGUgcG9pbnRlciBpcyBhbGl2ZSBhcyBsb25nIGFzIHBhcnNlZCBjb21waWxlIHVuaXQgRElFcyBhcmUgbm90CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRlVuaXRJbmRleC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZVbml0SW5kZXguaAppbmRleCAxNmJlNWY5Li5mYzhjNzA3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRlVuaXRJbmRleC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGVW5pdEluZGV4LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRFdBUkZVbml0SW5kZXguaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRlZlcmlmaWVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9EV0FSRi9EV0FSRlZlcmlmaWVyLmgKaW5kZXggM2FkNjVjZi4uZjEyNjhmMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vRFdBUkYvRFdBUkZWZXJpZmllci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL0RXQVJGL0RXQVJGVmVyaWZpZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEV0FSRlZlcmlmaWVyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTk3LDYgKzk2LDkgQEAKICAgLy8vIGxpZXMgYmV0d2VlbiB0byB2YWxpZCBESUVzLgogICBzdGQ6Om1hcDx1aW50NjRfdCwgc3RkOjpzZXQ8dWludDMyX3Q+PiBSZWZlcmVuY2VUb0RJRU9mZnNldHM7CiAgIHVpbnQzMl90IE51bURlYnVnTGluZUVycm9ycyA9IDA7CisgIC8vIFVzZWQgdG8gcmVsYXggc29tZSBjaGVja3MgdGhhdCBkbyBub3QgY3VycmVudGx5IHdvcmsgcG9ydGFibHkKKyAgYm9vbCBJc09iamVjdEZpbGU7CisgIGJvb2wgSXNNYWNoT09iamVjdDsKIAogICByYXdfb3N0cmVhbSAmZXJyb3IoKSBjb25zdDsKICAgcmF3X29zdHJlYW0gJndhcm4oKSBjb25zdDsKQEAgLTI4Niw4ICsyODgsOCBAQAogCiBwdWJsaWM6CiAgIERXQVJGVmVyaWZpZXIocmF3X29zdHJlYW0gJlMsIERXQVJGQ29udGV4dCAmRCwKLSAgICAgICAgICAgICAgICBESUR1bXBPcHRpb25zIER1bXBPcHRzID0gRElEdW1wT3B0aW9uczo6Z2V0Rm9yU2luZ2xlRElFKCkpCi0gICAgICA6IE9TKFMpLCBEQ3R4KEQpLCBEdW1wT3B0cyhzdGQ6Om1vdmUoRHVtcE9wdHMpKSB7fQorICAgICAgICAgICAgICAgIERJRHVtcE9wdGlvbnMgRHVtcE9wdHMgPSBESUR1bXBPcHRpb25zOjpnZXRGb3JTaW5nbGVESUUoKSk7CisKICAgLy8vIFZlcmlmeSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG9mIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMsIGlmIGF2YWlsYWJsZToKICAgLy8vIC5kZWJ1Z19hYmJyZXYsIGRlYnVnX2FiYnJldi5kd28KICAgLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9NU0YvSU1TRkZpbGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL01TRi9JTVNGRmlsZS5oCmluZGV4IGY5OGU3MTUuLjdlODBmOTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL01TRi9JTVNGRmlsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL01TRi9JTVNGRmlsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIElNU0ZGaWxlLmggLSBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBhbiBNU0YgZmlsZSAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vTVNGL01TRkJ1aWxkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL01TRi9NU0ZCdWlsZGVyLmgKaW5kZXggM2RlOThjNC4uMjgyODcwZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vTVNGL01TRkJ1aWxkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9NU0YvTVNGQnVpbGRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1TRkJ1aWxkZXIuaCAtIE1TRiBEaXJlY3RvcnkgJiBNZXRhZGF0YSBCdWlsZGVyIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vTVNGL01TRkNvbW1vbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vTVNGL01TRkNvbW1vbi5oCmluZGV4IDJkYjJiNzEuLjgzMzMxYjEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL01TRi9NU0ZDb21tb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9NU0YvTVNGQ29tbW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTVNGQ29tbW9uLmggLSBDb21tb24gdHlwZXMgYW5kIGZ1bmN0aW9ucyBmb3IgTVNGIGZpbGVzIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9NU0YvTVNGRXJyb3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL01TRi9NU0ZFcnJvci5oCmluZGV4IDVjMDQzYTcuLmZiYzRlNjkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL01TRi9NU0ZFcnJvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL01TRi9NU0ZFcnJvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1TRkVycm9yLmggLSBFcnJvciBleHRlbnNpb25zIGZvciBNU0YgRmlsZXMgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vTVNGL01hcHBlZEJsb2NrU3RyZWFtLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9NU0YvTWFwcGVkQmxvY2tTdHJlYW0uaAppbmRleCBmNjVlNTI5Li41OTNkNzgxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9NU0YvTWFwcGVkQmxvY2tTdHJlYW0uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9NU0YvTWFwcGVkQmxvY2tTdHJlYW0uaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIE1hcHBlZEJsb2NrU3RyZWFtLmggLSBEaXNjb250aWd1b3VzIHN0cmVhbSBkYXRhIGluIGFuIE1TRiAtLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9Db25jcmV0ZVN5bWJvbEVudW1lcmF0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9Db25jcmV0ZVN5bWJvbEVudW1lcmF0b3IuaAppbmRleCBhYzdmMTk2Li40OWJhMjBhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvQ29uY3JldGVTeW1ib2xFbnVtZXJhdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0NvbmNyZXRlU3ltYm9sRW51bWVyYXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvbmNyZXRlU3ltYm9sRW51bWVyYXRvci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFEYXRhU3RyZWFtLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQURhdGFTdHJlYW0uaAppbmRleCA4ODFkNzMyLi5mMDViNThjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQURhdGFTdHJlYW0uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQURhdGFTdHJlYW0uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBESUFEYXRhU3RyZWFtLmggLSBESUEgaW1wbGVtZW50YXRpb24gb2YgSVBEQkRhdGFTdHJlYW0gLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBRW51bURlYnVnU3RyZWFtcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFFbnVtRGVidWdTdHJlYW1zLmgKaW5kZXggMWYxMjkwNS4uOGEwMGFkNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFFbnVtRGVidWdTdHJlYW1zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFFbnVtRGVidWdTdHJlYW1zLmgKQEAgLTEsOSArMSw4IEBACiAvLz09LSBESUFFbnVtRGVidWdTdHJlYW1zLmggLSBESUEgRGVidWcgU3RyZWFtIEVudW1lcmF0b3IgaW1wbCAtLS0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUVudW1GcmFtZURhdGEuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBRW51bUZyYW1lRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNDE3YzAKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUVudW1GcmFtZURhdGEuaApAQCAtMCwwICsxLDM1IEBACisvLz09LSBESUFFbnVtRnJhbWVEYXRhLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0qLSBDKysgLSotPT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fREVCVUdJTkZPX1BEQl9ESUFfRElBRU5VTUZSQU1FREFUQV9ICisjZGVmaW5lIExMVk1fREVCVUdJTkZPX1BEQl9ESUFfRElBRU5VTUZSQU1FREFUQV9ICisKKyNpbmNsdWRlICJESUFTdXBwb3J0LmgiCisjaW5jbHVkZSAibGx2bS9EZWJ1Z0luZm8vUERCL0lQREJFbnVtQ2hpbGRyZW4uaCIKKyNpbmNsdWRlICJsbHZtL0RlYnVnSW5mby9QREIvSVBEQkZyYW1lRGF0YS5oIgorCituYW1lc3BhY2UgbGx2bSB7CituYW1lc3BhY2UgcGRiIHsKKworY2xhc3MgRElBRW51bUZyYW1lRGF0YSA6IHB1YmxpYyBJUERCRW51bUNoaWxkcmVuPElQREJGcmFtZURhdGE+IHsKK3B1YmxpYzoKKyAgZXhwbGljaXQgRElBRW51bUZyYW1lRGF0YShDQ29tUHRyPElEaWFFbnVtRnJhbWVEYXRhPiBEaWFFbnVtZXJhdG9yKTsKKworICB1aW50MzJfdCBnZXRDaGlsZENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgIENoaWxkVHlwZVB0ciBnZXRDaGlsZEF0SW5kZXgodWludDMyX3QgSW5kZXgpIGNvbnN0IG92ZXJyaWRlOworICBDaGlsZFR5cGVQdHIgZ2V0TmV4dCgpIG92ZXJyaWRlOworICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgIENDb21QdHI8SURpYUVudW1GcmFtZURhdGE+IEVudW1lcmF0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBwZGIKK30gLy8gbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUVudW1JbmplY3RlZFNvdXJjZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBRW51bUluamVjdGVkU291cmNlcy5oCmluZGV4IDQ2NjlhOGQuLjFmNzVjYTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBRW51bUluamVjdGVkU291cmNlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBRW51bUluamVjdGVkU291cmNlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0gRElBRW51bUluamVjdGVkU291cmNlcy5oIC0gRElBIEluamVjdGVkIFNvdXJjZXMgRW51bWVyYXRvciAtKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFFbnVtTGluZU51bWJlcnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBRW51bUxpbmVOdW1iZXJzLmgKaW5kZXggZjFjYjYyNi4uODgwMGJhYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFFbnVtTGluZU51bWJlcnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUVudW1MaW5lTnVtYmVycy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0gRElBRW51bUxpbmVOdW1iZXJzLmggLSBESUEgTGluZSBOdW1iZXIgRW51bWVyYXRvciBpbXBsIC0tLS0tKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFFbnVtU2VjdGlvbkNvbnRyaWJzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUVudW1TZWN0aW9uQ29udHJpYnMuaAppbmRleCBhYzJhZTMxLi5iZTg2MTNiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUVudW1TZWN0aW9uQ29udHJpYnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUVudW1TZWN0aW9uQ29udHJpYnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIERJQUVudW1TZWN0aW9uQ29udHJpYnMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBRW51bVNvdXJjZUZpbGVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUVudW1Tb3VyY2VGaWxlcy5oCmluZGV4IGRhYzNkZjAuLjYxMjc4OTkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBRW51bVNvdXJjZUZpbGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFFbnVtU291cmNlRmlsZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIERJQUVudW1Tb3VyY2VGaWxlcy5oIC0gRElBIFNvdXJjZSBGaWxlIEVudW1lcmF0b3IgaW1wbCAtLS0tLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBRW51bVN5bWJvbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBRW51bVN5bWJvbHMuaAppbmRleCA5Njg5ODU5Li5mNTUzNDJjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUVudW1TeW1ib2xzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFFbnVtU3ltYm9scy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0gRElBRW51bVN5bWJvbHMuaCAtIERJQSBTeW1ib2wgRW51bWVyYXRvciBpbXBsIC0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFFbnVtVGFibGVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUVudW1UYWJsZXMuaAppbmRleCBmNGY4NTZlLi4wNTdjYjA2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUVudW1UYWJsZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUVudW1UYWJsZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBESUFFbnVtVGFibGVzLmggLSBESUEgVGFibGVzIEVudW1lcmF0b3IgSW1wbCAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBRXJyb3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBRXJyb3IuaAppbmRleCAyYjMzYTY1Li45NmQ5NjA1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUVycm9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFFcnJvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERJQUVycm9yLmggLSBFcnJvciBleHRlbnNpb25zIGZvciBQREIgRElBIGltcGxlbWVudGF0aW9uIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFGcmFtZURhdGEuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBRnJhbWVEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA0ZjdjZAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBRnJhbWVEYXRhLmgKQEAgLTAsMCArMSwzOCBAQAorLy89PT0tIERJQUZyYW1lRGF0YS5oIC0gRElBIEltcGwuIG9mIElQREJGcmFtZURhdGEgLS0tLS0tLS0tLS0tLS0tLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0RFQlVHSU5GT19QREJfRElBX0RJQUZSQU1FREFUQV9ICisjZGVmaW5lIExMVk1fREVCVUdJTkZPX1BEQl9ESUFfRElBRlJBTUVEQVRBX0gKKworI2luY2x1ZGUgIkRJQVN1cHBvcnQuaCIKKyNpbmNsdWRlICJsbHZtL0RlYnVnSW5mby9QREIvSVBEQkZyYW1lRGF0YS5oIgorCituYW1lc3BhY2UgbGx2bSB7CituYW1lc3BhY2UgcGRiIHsKKworY2xhc3MgRElBU2Vzc2lvbjsKKworY2xhc3MgRElBRnJhbWVEYXRhIDogcHVibGljIElQREJGcmFtZURhdGEgeworcHVibGljOgorICBleHBsaWNpdCBESUFGcmFtZURhdGEoQ0NvbVB0cjxJRGlhRnJhbWVEYXRhPiBEaWFGcmFtZURhdGEpOworCisgIHVpbnQzMl90IGdldEFkZHJlc3NPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgdWludDMyX3QgZ2V0QWRkcmVzc1NlY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgdWludDMyX3QgZ2V0TGVuZ3RoQmxvY2soKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjpzdHJpbmcgZ2V0UHJvZ3JhbSgpIGNvbnN0IG92ZXJyaWRlOworICB1aW50MzJfdCBnZXRSZWxhdGl2ZVZpcnR1YWxBZGRyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgIHVpbnQ2NF90IGdldFZpcnR1YWxBZGRyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CisKK3ByaXZhdGU6CisgIENDb21QdHI8SURpYUZyYW1lRGF0YT4gRnJhbWVEYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgcGRiCit9IC8vIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFJbmplY3RlZFNvdXJjZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFJbmplY3RlZFNvdXJjZS5oCmluZGV4IDYzNTUwOGQuLjhiZTA2ZjggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBSW5qZWN0ZWRTb3VyY2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUluamVjdGVkU291cmNlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRElBSW5qZWN0ZWRTb3VyY2UuaCAtIERJQSBpbXBsIGZvciBJUERCSW5qZWN0ZWRTb3VyY2UgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQUxpbmVOdW1iZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBTGluZU51bWJlci5oCmluZGV4IGE1OWUzYTEuLmQ4YmIyNzIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBTGluZU51bWJlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBTGluZU51bWJlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERJQUxpbmVOdW1iZXIuaCAtIERJQSBpbXBsZW1lbnRhdGlvbiBvZiBJUERCTGluZU51bWJlciAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFSYXdTeW1ib2wuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBUmF3U3ltYm9sLmgKaW5kZXggNWQ0Zjg1NS4uN2YyMDFkMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFSYXdTeW1ib2wuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQVJhd1N5bWJvbC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERJQVJhd1N5bWJvbC5oIC0gRElBIGltcGxlbWVudGF0aW9uIG9mIElQREJSYXdTeW1ib2wgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQVNlY3Rpb25Db250cmliLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQVNlY3Rpb25Db250cmliLmgKaW5kZXggNDY4OGYxZi4uMDk3MjgzMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFTZWN0aW9uQ29udHJpYi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBU2VjdGlvbkNvbnRyaWIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBESUFTZWN0aW9uQ29udHJpYi5oIC0gRElBIEltcGwuIG9mIElQREJTZWN0aW9uQ29udHJpYiAtLS0tLS0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBU2Vzc2lvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFTZXNzaW9uLmgKaW5kZXggZTM1NTYwNS4uNmY2MmU2MCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFTZXNzaW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFTZXNzaW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRElBU2Vzc2lvbi5oIC0gRElBIGltcGxlbWVudGF0aW9uIG9mIElQREJTZXNzaW9uIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC04NSw2ICs4NCw3IEBACiAKICAgc3RkOjp1bmlxdWVfcHRyPElQREJFbnVtU2VjdGlvbkNvbnRyaWJzPiBnZXRTZWN0aW9uQ29udHJpYnMoKSBjb25zdCBvdmVycmlkZTsKIAorICBzdGQ6OnVuaXF1ZV9wdHI8SVBEQkVudW1GcmFtZURhdGE+IGdldEZyYW1lRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogcHJpdmF0ZToKICAgQ0NvbVB0cjxJRGlhU2Vzc2lvbj4gU2Vzc2lvbjsKIH07CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQVNvdXJjZUZpbGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBU291cmNlRmlsZS5oCmluZGV4IDEwODhlYTUuLjk2ZWRmYzkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBU291cmNlRmlsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBU291cmNlRmlsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERJQVNvdXJjZUZpbGUuaCAtIERJQSBpbXBsZW1lbnRhdGlvbiBvZiBJUERCU291cmNlRmlsZSAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFTdXBwb3J0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQVN1cHBvcnQuaAppbmRleCA5MmViYzA0Li4xYTdjMmYzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQVN1cHBvcnQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQVN1cHBvcnQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBESUFTdXBwb3J0LmggLSBDb21tb24gaGVhZGVyIGluY2x1ZGVzIGZvciBESUEgLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLyBDb21tb24gZGVmaW5lcyBhbmQgaGVhZGVyIGluY2x1ZGVzIGZvciBhbGwgTExWTURlYnVnSW5mb1BEQkRJQS4gIFRoZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFUYWJsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFUYWJsZS5oCmluZGV4IGNlOTNmYTAuLjY1Mzk2YTAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBVGFibGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQVRhYmxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRElBVGFibGUuaCAtIERJQSBpbXBsZW1lbnRhdGlvbiBvZiBJUERCVGFibGUgLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQVV0aWxzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvRElBL0RJQVV0aWxzLmgKaW5kZXggYWE4NDNlMC4uNWUwMWQ4ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0RJQS9ESUFVdGlscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9ESUEvRElBVXRpbHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBESUFVdGlscy5oIC0gVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdvcmtpbmcgd2l0aCBESUEgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9HZW5lcmljRXJyb3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9HZW5lcmljRXJyb3IuaAppbmRleCA0ZTJlOGIxLi5lYzg1ZDkyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvR2VuZXJpY0Vycm9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0dlbmVyaWNFcnJvci5oCkBAIC0xLDkgKzEsOCBAQAotLy89PT0tIEVycm9yLmggLSBzeXN0ZW1fZXJyb3IgZXh0ZW5zaW9ucyBmb3IgUERCIC0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vPT09LSBHZW5lcmljRXJyb3IuaCAtIHN5c3RlbV9lcnJvciBleHRlbnNpb25zIGZvciBQREIgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTIxLDI0ICsyMCwyNCBAQAogICBkaWFfc2RrX25vdF9wcmVzZW50LAogICBkaWFfZmFpbGVkX2xvYWRpbmcsCiAgIHNpZ25hdHVyZV9vdXRfb2ZfZGF0ZSwKLSAgdHlwZV9zZXJ2ZXJfbm90X2ZvdW5kLAorICBleHRlcm5hbF9jbWRsaW5lX3JlZiwKICAgdW5zcGVjaWZpZWQsCiB9OwotfSAvLyBuYW1lc3BhY2UgY29kZXZpZXcKK30gLy8gbmFtZXNwYWNlIHBkYgogfSAvLyBuYW1lc3BhY2UgbGx2bQogCiBuYW1lc3BhY2Ugc3RkIHsKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBpc19lcnJvcl9jb2RlX2VudW08bGx2bTo6cGRiOjpwZGJfZXJyb3JfY29kZT4gOiBzdGQ6OnRydWVfdHlwZSB7fTsKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgaXNfZXJyb3JfY29kZV9lbnVtPGxsdm06OnBkYjo6cGRiX2Vycm9yX2NvZGU+IDogc3RkOjp0cnVlX3R5cGUge307CiB9IC8vIG5hbWVzcGFjZSBzdGQKIAogbmFtZXNwYWNlIGxsdm0gewogbmFtZXNwYWNlIHBkYiB7Ci0gICAgY29uc3Qgc3RkOjplcnJvcl9jYXRlZ29yeSAmUERCRXJyQ2F0ZWdvcnkoKTsKK2NvbnN0IHN0ZDo6ZXJyb3JfY2F0ZWdvcnkgJlBEQkVyckNhdGVnb3J5KCk7CiAKLSAgICBpbmxpbmUgc3RkOjplcnJvcl9jb2RlIG1ha2VfZXJyb3JfY29kZShwZGJfZXJyb3JfY29kZSBFKSB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmVycm9yX2NvZGUoc3RhdGljX2Nhc3Q8aW50PihFKSwgUERCRXJyQ2F0ZWdvcnkoKSk7Ci0gICAgfQoraW5saW5lIHN0ZDo6ZXJyb3JfY29kZSBtYWtlX2Vycm9yX2NvZGUocGRiX2Vycm9yX2NvZGUgRSkgeworICByZXR1cm4gc3RkOjplcnJvcl9jb2RlKHN0YXRpY19jYXN0PGludD4oRSksIFBEQkVyckNhdGVnb3J5KCkpOworfQogCiAvLy8gQmFzZSBjbGFzcyBmb3IgZXJyb3JzIG9yaWdpbmF0aW5nIHdoZW4gcGFyc2luZyByYXcgUERCIGZpbGVzCiBjbGFzcyBQREJFcnJvciA6IHB1YmxpYyBFcnJvckluZm88UERCRXJyb3IsIFN0cmluZ0Vycm9yPiB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvSVBEQkRhdGFTdHJlYW0uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCRGF0YVN0cmVhbS5oCmluZGV4IDBkN2EyODYuLjRkMDU4OWEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCRGF0YVN0cmVhbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCRGF0YVN0cmVhbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIElQREJEYXRhU3RyZWFtLmggLSBiYXNlIGludGVyZmFjZSBmb3IgY2hpbGQgZW51bWVyYXRvciAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0lQREJFbnVtQ2hpbGRyZW4uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCRW51bUNoaWxkcmVuLmgKaW5kZXggNzAxN2YyNi4uYmZhNjdkMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0lQREJFbnVtQ2hpbGRyZW4uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvSVBEQkVudW1DaGlsZHJlbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIElQREJFbnVtQ2hpbGRyZW4uaCAtIGJhc2UgaW50ZXJmYWNlIGZvciBjaGlsZCBlbnVtZXJhdG9yIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0lQREJGcmFtZURhdGEuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCRnJhbWVEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQxMzhiMwotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCRnJhbWVEYXRhLmgKQEAgLTAsMCArMSwzNSBAQAorLy89PT0tIElQREJGcmFtZURhdGEuaCAtIGJhc2UgaW50ZXJmYWNlIGZvciBmcmFtZSBkYXRhIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0RFQlVHSU5GT19QREJfSVBEQkZSQU1FREFUQV9ICisjZGVmaW5lIExMVk1fREVCVUdJTkZPX1BEQl9JUERCRlJBTUVEQVRBX0gKKworI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8c3RyaW5nPgorCituYW1lc3BhY2UgbGx2bSB7CituYW1lc3BhY2UgcGRiIHsKKworLy8vIElQREJGcmFtZURhdGEgZGVmaW5lcyBhbiBpbnRlcmZhY2UgdXNlZCB0byByZXByZXNlbnQgYSBmcmFtZSBkYXRhIG9mIHNvbWUKKy8vLyBjb2RlIGJsb2NrLgorY2xhc3MgSVBEQkZyYW1lRGF0YSB7CitwdWJsaWM6CisgIHZpcnR1YWwgfklQREJGcmFtZURhdGEoKTsKKworICB2aXJ0dWFsIHVpbnQzMl90IGdldEFkZHJlc3NPZmZzZXQoKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgdWludDMyX3QgZ2V0QWRkcmVzc1NlY3Rpb24oKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgdWludDMyX3QgZ2V0TGVuZ3RoQmxvY2soKSBjb25zdCA9IDA7CisgIHZpcnR1YWwgc3RkOjpzdHJpbmcgZ2V0UHJvZ3JhbSgpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCB1aW50MzJfdCBnZXRSZWxhdGl2ZVZpcnR1YWxBZGRyZXNzKCkgY29uc3QgPSAwOworICB2aXJ0dWFsIHVpbnQ2NF90IGdldFZpcnR1YWxBZGRyZXNzKCkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgcGRiCit9IC8vIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0lQREJJbmplY3RlZFNvdXJjZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0lQREJJbmplY3RlZFNvdXJjZS5oCmluZGV4IGU3NWQ2NGEuLjU2ZTg1ZDEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCSW5qZWN0ZWRTb3VyY2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvSVBEQkluamVjdGVkU291cmNlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSVBEQkluamVjdGVkU291cmNlLmggLSBiYXNlIGNsYXNzIGZvciBQREIgaW5qZWN0ZWQgZmlsZSAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvSVBEQkxpbmVOdW1iZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCTGluZU51bWJlci5oCmluZGV4IGUyMDA4MGYuLjc3ZTg4OTkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCTGluZU51bWJlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCTGluZU51bWJlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIElQREJMaW5lTnVtYmVyLmggLSBiYXNlIGludGVyZmFjZSBmb3IgUERCIGxpbmUgbm8uIGluZm8gLS0tKi0gQysrLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0lQREJSYXdTeW1ib2wuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCUmF3U3ltYm9sLmgKaW5kZXggN2M4MThkNy4uYjI0ZTcxMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0lQREJSYXdTeW1ib2wuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvSVBEQlJhd1N5bWJvbC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIElQREJSYXdTeW1ib2wuaCAtIGJhc2UgaW50ZXJmYWNlIGZvciBQREIgc3ltYm9sIHR5cGVzIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0lQREJTZWN0aW9uQ29udHJpYi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0lQREJTZWN0aW9uQ29udHJpYi5oCmluZGV4IDRmZGE2MjQuLmM1Y2Y0YmIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCU2VjdGlvbkNvbnRyaWIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvSVBEQlNlY3Rpb25Db250cmliLmgKQEAgLTEsOSArMSw4IEBACiAvLz09LSBJUERCU2VjdGlvbkNvbnRyaWIuaCAtIEludGVyZmFjZXMgZm9yIFBEQiBTZWN0aW9uQ29udHJpYnMgLS0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvSVBEQlNlc3Npb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCU2Vzc2lvbi5oCmluZGV4IDI0NTczY2QuLmFhOGQ5YzcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCU2Vzc2lvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCU2Vzc2lvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIElQREJTZXNzaW9uLmggLSBiYXNlIGludGVyZmFjZSBmb3IgYSBQREIgc3ltYm9sIGNvbnRleHQgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtOTEsNiArOTAsOSBAQAogCiAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPElQREJFbnVtU2VjdGlvbkNvbnRyaWJzPgogICBnZXRTZWN0aW9uQ29udHJpYnMoKSBjb25zdCA9IDA7CisKKyAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8SVBEQkVudW1GcmFtZURhdGE+CisgIGdldEZyYW1lRGF0YSgpIGNvbnN0ID0gMDsKIH07CiB9IC8vIG5hbWVzcGFjZSBwZGIKIH0gLy8gbmFtZXNwYWNlIGxsdm0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCU291cmNlRmlsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0lQREJTb3VyY2VGaWxlLmgKaW5kZXggMzY3NmM0MC4uZDdlNDlmYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0lQREJTb3VyY2VGaWxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0lQREJTb3VyY2VGaWxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSVBEQlNvdXJjZUZpbGUuaCAtIGJhc2UgaW50ZXJmYWNlIGZvciBhIFBEQiBzb3VyY2UgZmlsZSAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvSVBEQlRhYmxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvSVBEQlRhYmxlLmgKaW5kZXggNDU2MWM0ZS4uNTVjYTIzMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL0lQREJUYWJsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9JUERCVGFibGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJUERCVGFibGUuaCAtIEJhc2UgSW50ZXJmYWNlIGZvciBhIFBEQiBTeW1ib2wgQ29udGV4dCAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvRGJpTW9kdWxlRGVzY3JpcHRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9EYmlNb2R1bGVEZXNjcmlwdG9yLmgKaW5kZXggOWVlZjQwNC4uNTY4ZjBjOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9EYmlNb2R1bGVEZXNjcmlwdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9EYmlNb2R1bGVEZXNjcmlwdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGJpTW9kdWxlRGVzY3JpcHRvci5oIC0gUERCIG1vZHVsZSBpbmZvcm1hdGlvbiAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0RiaU1vZHVsZURlc2NyaXB0b3JCdWlsZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0RiaU1vZHVsZURlc2NyaXB0b3JCdWlsZGVyLmgKaW5kZXggY2U0ZDA3OS4uNGY1ZDI4YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9EYmlNb2R1bGVEZXNjcmlwdG9yQnVpbGRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvRGJpTW9kdWxlRGVzY3JpcHRvckJ1aWxkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEYmlNb2R1bGVEZXNjcmlwdG9yQnVpbGRlci5oIC0gUERCIG1vZHVsZSBpbmZvcm1hdGlvbiAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTUxLDYgKzUwLDcgQEAKICAgdm9pZCBzZXRPYmpGaWxlTmFtZShTdHJpbmdSZWYgTmFtZSk7CiAgIHZvaWQgc2V0Rmlyc3RTZWN0aW9uQ29udHJpYihjb25zdCBTZWN0aW9uQ29udHJpYiAmU0MpOwogICB2b2lkIGFkZFN5bWJvbChjb2Rldmlldzo6Q1ZTeW1ib2wgU3ltYm9sKTsKKyAgdm9pZCBhZGRTeW1ib2xzSW5CdWxrKEFycmF5UmVmPHVpbnQ4X3Q+IEJ1bGtTeW1ib2xzKTsKIAogICB2b2lkCiAgIGFkZERlYnVnU3Vic2VjdGlvbihzdGQ6OnNoYXJlZF9wdHI8Y29kZXZpZXc6OkRlYnVnU3Vic2VjdGlvbj4gU3Vic2VjdGlvbik7CkBAIC05MSw3ICs5MSw3IEBACiAgIHN0ZDo6c3RyaW5nIE1vZHVsZU5hbWU7CiAgIHN0ZDo6c3RyaW5nIE9iakZpbGVOYW1lOwogICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gU291cmNlRmlsZXM7Ci0gIHN0ZDo6dmVjdG9yPGNvZGV2aWV3OjpDVlN5bWJvbD4gU3ltYm9sczsKKyAgc3RkOjp2ZWN0b3I8QXJyYXlSZWY8dWludDhfdD4+IFN5bWJvbHM7CiAKICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPGNvZGV2aWV3OjpEZWJ1Z1N1YnNlY3Rpb25SZWNvcmRCdWlsZGVyPj4KICAgICAgIEMxM0J1aWxkZXJzOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9EYmlNb2R1bGVMaXN0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0RiaU1vZHVsZUxpc3QuaAppbmRleCA1ZjZlN2FiLi4xNDIyMzI3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0RiaU1vZHVsZUxpc3QuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0RiaU1vZHVsZUxpc3QuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEYmlNb2R1bGVMaXN0LmggLSBQREIgbW9kdWxlIGluZm9ybWF0aW9uIGxpc3QgLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvRGJpU3RyZWFtLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0RiaVN0cmVhbS5oCmluZGV4IGEzY2E2MDcuLjdkNzVjMTUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvRGJpU3RyZWFtLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9EYmlTdHJlYW0uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEYmlTdHJlYW0uaCAtIFBEQiBEYmkgU3RyZWFtIChTdHJlYW0gMykgQWNjZXNzIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTExLDYgKzEwLDcgQEAKICNkZWZpbmUgTExWTV9ERUJVR0lORk9fUERCX1JBV19QREJEQklTVFJFQU1fSAogCiAjaW5jbHVkZSAibGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdTdWJzZWN0aW9uLmgiCisjaW5jbHVkZSAibGx2bS9EZWJ1Z0luZm8vQ29kZVZpZXcvRGVidWdGcmFtZURhdGFTdWJzZWN0aW9uLmgiCiAjaW5jbHVkZSAibGx2bS9EZWJ1Z0luZm8vTVNGL01hcHBlZEJsb2NrU3RyZWFtLmgiCiAjaW5jbHVkZSAibGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9EYmlNb2R1bGVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAibGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9EYmlNb2R1bGVMaXN0LmgiCkBAIC04MCw3ICs4MCwxMCBAQAogCiAgIEZpeGVkU3RyZWFtQXJyYXk8b2JqZWN0Ojpjb2ZmX3NlY3Rpb24+IGdldFNlY3Rpb25IZWFkZXJzKCkgY29uc3Q7CiAKLSAgRml4ZWRTdHJlYW1BcnJheTxvYmplY3Q6OkZwb0RhdGE+IGdldEZwb1JlY29yZHMoKTsKKyAgYm9vbCBoYXNPbGRGcG9SZWNvcmRzKCkgY29uc3Q7CisgIEZpeGVkU3RyZWFtQXJyYXk8b2JqZWN0OjpGcG9EYXRhPiBnZXRPbGRGcG9SZWNvcmRzKCkgY29uc3Q7CisgIGJvb2wgaGFzTmV3RnBvUmVjb3JkcygpIGNvbnN0OworICBjb25zdCBjb2Rldmlldzo6RGVidWdGcmFtZURhdGFTdWJzZWN0aW9uUmVmICZnZXROZXdGcG9SZWNvcmRzKCkgY29uc3Q7CiAKICAgRml4ZWRTdHJlYW1BcnJheTxTZWNNYXBFbnRyeT4gZ2V0U2VjdGlvbk1hcCgpIGNvbnN0OwogICB2b2lkIHZpc2l0U2VjdGlvbkNvbnRyaWJ1dGlvbnMoSVNlY3Rpb25Db250cmliVmlzaXRvciAmVmlzaXRvcikgY29uc3Q7CkBAIC05MSw3ICs5NCwxMSBAQAogICBFcnJvciBpbml0aWFsaXplU2VjdGlvbkNvbnRyaWJ1dGlvbkRhdGEoKTsKICAgRXJyb3IgaW5pdGlhbGl6ZVNlY3Rpb25IZWFkZXJzRGF0YShQREJGaWxlICpQZGIpOwogICBFcnJvciBpbml0aWFsaXplU2VjdGlvbk1hcERhdGEoKTsKLSAgRXJyb3IgaW5pdGlhbGl6ZUZwb1JlY29yZHMoUERCRmlsZSAqUGRiKTsKKyAgRXJyb3IgaW5pdGlhbGl6ZU9sZEZwb1JlY29yZHMoUERCRmlsZSAqUGRiKTsKKyAgRXJyb3IgaW5pdGlhbGl6ZU5ld0Zwb1JlY29yZHMoUERCRmlsZSAqUGRiKTsKKworICBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8bXNmOjpNYXBwZWRCbG9ja1N0cmVhbT4+CisgIGNyZWF0ZUluZGV4ZWRTdHJlYW1Gb3JIZWFkZXJUeXBlKFBEQkZpbGUgKlBkYiwgRGJnSGVhZGVyVHlwZSBUeXBlKSBjb25zdDsKIAogICBzdGQ6OnVuaXF1ZV9wdHI8QmluYXJ5U3RyZWFtPiBTdHJlYW07CiAKQEAgLTExNyw4ICsxMjQsMTEgQEAKICAgc3RkOjp1bmlxdWVfcHRyPG1zZjo6TWFwcGVkQmxvY2tTdHJlYW0+IFNlY3Rpb25IZWFkZXJTdHJlYW07CiAgIEZpeGVkU3RyZWFtQXJyYXk8b2JqZWN0Ojpjb2ZmX3NlY3Rpb24+IFNlY3Rpb25IZWFkZXJzOwogCi0gIHN0ZDo6dW5pcXVlX3B0cjxtc2Y6Ok1hcHBlZEJsb2NrU3RyZWFtPiBGcG9TdHJlYW07Ci0gIEZpeGVkU3RyZWFtQXJyYXk8b2JqZWN0OjpGcG9EYXRhPiBGcG9SZWNvcmRzOworICBzdGQ6OnVuaXF1ZV9wdHI8bXNmOjpNYXBwZWRCbG9ja1N0cmVhbT4gT2xkRnBvU3RyZWFtOworICBGaXhlZFN0cmVhbUFycmF5PG9iamVjdDo6RnBvRGF0YT4gT2xkRnBvUmVjb3JkczsKKyAgCisgIHN0ZDo6dW5pcXVlX3B0cjxtc2Y6Ok1hcHBlZEJsb2NrU3RyZWFtPiBOZXdGcG9TdHJlYW07CisgIGNvZGV2aWV3OjpEZWJ1Z0ZyYW1lRGF0YVN1YnNlY3Rpb25SZWYgTmV3RnBvUmVjb3JkczsKIAogICBjb25zdCBEYmlTdHJlYW1IZWFkZXIgKkhlYWRlcjsKIH07CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0RiaVN0cmVhbUJ1aWxkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvRGJpU3RyZWFtQnVpbGRlci5oCmluZGV4IGI1MzhkZTUuLmQ5YmUyMzggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvRGJpU3RyZWFtQnVpbGRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvRGJpU3RyZWFtQnVpbGRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERiaVN0cmVhbUJ1aWxkZXIuaCAtIFBEQiBEYmkgU3RyZWFtIENyZWF0aW9uIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9FbnVtVGFibGVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0VudW1UYWJsZXMuaAppbmRleCBjMDE4NDQ1Li43MDE2MWZhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0VudW1UYWJsZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0VudW1UYWJsZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBFbnVtVGFibGVzLmggLSBFbnVtIHRvIHN0cmluZyBjb252ZXJzaW9uIHRhYmxlcyAtLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvRm9ybWF0dGVycy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9Gb3JtYXR0ZXJzLmgKaW5kZXggN2Q1ZWFiMi4uMjljOTU3ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9Gb3JtYXR0ZXJzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9Gb3JtYXR0ZXJzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRm9ybWF0dGVycy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0dTSVN0cmVhbUJ1aWxkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvR1NJU3RyZWFtQnVpbGRlci5oCmluZGV4IDFhNGY4OWQuLmE0OTc5NTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvR1NJU3RyZWFtQnVpbGRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvR1NJU3RyZWFtQnVpbGRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEdTSVN0cmVhbUJ1aWxkZXIuaCAtIFBEQiBQdWJsaWNzL0dsb2JhbHMgU3RyZWFtIENyZWF0aW9uIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNjEsNyArNjAsNiBAQAogICB2b2lkIGFkZEdsb2JhbFN5bWJvbChjb25zdCBjb2Rldmlldzo6UHJvY1JlZlN5bSAmU3ltKTsKICAgdm9pZCBhZGRHbG9iYWxTeW1ib2woY29uc3QgY29kZXZpZXc6OkRhdGFTeW0gJlN5bSk7CiAgIHZvaWQgYWRkR2xvYmFsU3ltYm9sKGNvbnN0IGNvZGV2aWV3OjpDb25zdGFudFN5bSAmU3ltKTsKLSAgdm9pZCBhZGRHbG9iYWxTeW1ib2woY29uc3QgY29kZXZpZXc6OlVEVFN5bSAmU3ltKTsKICAgdm9pZCBhZGRHbG9iYWxTeW1ib2woY29uc3QgY29kZXZpZXc6OkNWU3ltYm9sICZTeW0pOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9HbG9iYWxzU3RyZWFtLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0dsb2JhbHNTdHJlYW0uaAppbmRleCA3Zjg0NTY0Li40MDRiYWFhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0dsb2JhbHNTdHJlYW0uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0dsb2JhbHNTdHJlYW0uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBHbG9iYWxzU3RyZWFtLmggLSBQREIgSW5kZXggb2YgU3ltYm9scyBieSBOYW1lIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvSGFzaC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9IYXNoLmgKaW5kZXggMWYxMWQ0My4uYjA0OGQ4NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9IYXNoLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9IYXNoLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSGFzaC5oIC0gUERCIGhhc2ggZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0hhc2hUYWJsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9IYXNoVGFibGUuaAppbmRleCAzNGNjNjE3Li5lOGYwOGM2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0hhc2hUYWJsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvSGFzaFRhYmxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSGFzaFRhYmxlLmggLSBQREIgSGFzaCBUYWJsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0lTZWN0aW9uQ29udHJpYlZpc2l0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvSVNlY3Rpb25Db250cmliVmlzaXRvci5oCmluZGV4IGZiMDBkNmEuLjcxN2RjZTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvSVNlY3Rpb25Db250cmliVmlzaXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvSVNlY3Rpb25Db250cmliVmlzaXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIElTZWN0aW9uQ29udHJpYlZpc2l0b3IuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9JbmZvU3RyZWFtLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0luZm9TdHJlYW0uaAppbmRleCA4YzUyYjA0Li4zMTViMDkzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0luZm9TdHJlYW0uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0luZm9TdHJlYW0uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJbmZvU3RyZWFtLmggLSBQREIgSW5mbyBTdHJlYW0gKFN0cmVhbSAxKSBBY2Nlc3MgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvSW5mb1N0cmVhbUJ1aWxkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvSW5mb1N0cmVhbUJ1aWxkZXIuaAppbmRleCAxMDExMjdhLi4yMDhhMzdjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL0luZm9TdHJlYW1CdWlsZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9JbmZvU3RyZWFtQnVpbGRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEluZm9TdHJlYW1CdWlsZGVyLmggLSBQREIgSW5mbyBTdHJlYW0gQ3JlYXRpb24gLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9Nb2R1bGVEZWJ1Z1N0cmVhbS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9Nb2R1bGVEZWJ1Z1N0cmVhbS5oCmluZGV4IDE5YjBlYmQuLjE2MWFhMzIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTW9kdWxlRGVidWdTdHJlYW0uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL01vZHVsZURlYnVnU3RyZWFtLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTW9kdWxlRGVidWdTdHJlYW0uaCAtIFBEQiBNb2R1bGUgSW5mbyBTdHJlYW0gQWNjZXNzIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC00NCw2ICs0Myw4IEBACiAgIHN5bWJvbHMoYm9vbCAqSGFkRXJyb3IpIGNvbnN0OwogCiAgIGNvbnN0IGNvZGV2aWV3OjpDVlN5bWJvbEFycmF5ICZnZXRTeW1ib2xBcnJheSgpIGNvbnN0IHsgcmV0dXJuIFN5bWJvbEFycmF5OyB9CisgIGNvbnN0IGNvZGV2aWV3OjpDVlN5bWJvbEFycmF5CisgIGdldFN5bWJvbEFycmF5Rm9yU2NvcGUodWludDMyX3QgU2NvcGVCZWdpbikgY29uc3Q7CiAKICAgQmluYXJ5U3Vic3RyZWFtUmVmIGdldFN5bWJvbHNTdWJzdHJlYW0oKSBjb25zdDsKICAgQmluYXJ5U3Vic3RyZWFtUmVmIGdldEMxMUxpbmVzU3Vic3RyZWFtKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hbWVkU3RyZWFtTWFwLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hbWVkU3RyZWFtTWFwLmgKaW5kZXggMDFiOGYxYi4uYzQ5ZDc5NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYW1lZFN0cmVhbU1hcC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmFtZWRTdHJlYW1NYXAuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBOYW1lZFN0cmVhbU1hcC5oIC0gUERCIE5hbWVkIFN0cmVhbSBNYXAgLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlQ29tcGlsYW5kU3ltYm9sLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZUNvbXBpbGFuZFN5bWJvbC5oCmluZGV4IDNjZDQ2NTUuLjUwZDQzNzYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlQ29tcGlsYW5kU3ltYm9sLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVDb21waWxhbmRTeW1ib2wuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBOYXRpdmVDb21waWxhbmRTeW1ib2wuaCAtIG5hdGl2ZSBpbXBsIGZvciBjb21waWxhbmQgc3ltcyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlRW51bUdsb2JhbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlRW51bUdsb2JhbHMuaAppbmRleCA0NDQyYTFlLi4wNzM4NzhhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZUVudW1HbG9iYWxzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVFbnVtR2xvYmFscy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0gTmF0aXZlRW51bUdsb2JhbHMuaCAtIE5hdGl2ZSBHbG9iYWwgRW51bWVyYXRvciBpbXBsIC0tLS0tLS0tKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVFbnVtTW9kdWxlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVFbnVtTW9kdWxlcy5oCmluZGV4IGMyNjg2NDEuLjk0ZjFlZTEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlRW51bU1vZHVsZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZUVudW1Nb2R1bGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09LSBOYXRpdmVFbnVtTW9kdWxlcy5oIC0gTmF0aXZlIE1vZHVsZSBFbnVtZXJhdG9yIGltcGwgLS0tLS0tLS0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZUVudW1UeXBlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVFbnVtVHlwZXMuaAppbmRleCBmOGFjMTY1Li4yNWM1NjU2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZUVudW1UeXBlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlRW51bVR5cGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09LSBOYXRpdmVFbnVtVHlwZXMuaCAtIE5hdGl2ZSBUeXBlIEVudW1lcmF0b3IgaW1wbCAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZUV4ZVN5bWJvbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVFeGVTeW1ib2wuaAppbmRleCBmNDAzMGRhLi4yODAzNThkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZUV4ZVN5bWJvbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlRXhlU3ltYm9sLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTmF0aXZlRXhlU3ltYm9sLmggLSBuYXRpdmUgaW1wbCBmb3IgUERCU3ltYm9sRXhlIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZVJhd1N5bWJvbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVSYXdTeW1ib2wuaAppbmRleCA2NTA1YTdkLi40MTMzYmUyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZVJhd1N5bWJvbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlUmF3U3ltYm9sLmgKQEAgLTEsOSArMSw4IEBACiAvLz09LSBOYXRpdmVSYXdTeW1ib2wuaCAtIE5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBvZiBJUERCUmF3U3ltYm9sIC0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZVNlc3Npb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlU2Vzc2lvbi5oCmluZGV4IDA3Y2U4NWUuLmVlN2Q4Y2QgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlU2Vzc2lvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlU2Vzc2lvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE5hdGl2ZVNlc3Npb24uaCAtIE5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBvZiBJUERCU2Vzc2lvbiAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtOTMsNiArOTIsOCBAQAogCiAgIHN0ZDo6dW5pcXVlX3B0cjxJUERCRW51bVNlY3Rpb25Db250cmlicz4gZ2V0U2VjdGlvbkNvbnRyaWJzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgc3RkOjp1bmlxdWVfcHRyPElQREJFbnVtRnJhbWVEYXRhPiBnZXRGcmFtZURhdGEoKSBjb25zdCBvdmVycmlkZTsKKwogICBQREJGaWxlICZnZXRQREJGaWxlKCkgeyByZXR1cm4gKlBkYjsgfQogICBjb25zdCBQREJGaWxlICZnZXRQREJGaWxlKCkgY29uc3QgeyByZXR1cm4gKlBkYjsgfQogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZVN5bWJvbEVudW1lcmF0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlU3ltYm9sRW51bWVyYXRvci5oCmluZGV4IGFjYzVlYjguLjA2MzU4NTAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlU3ltYm9sRW51bWVyYXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlU3ltYm9sRW51bWVyYXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE5hdGl2ZVN5bWJvbEVudW1lcmF0b3IuaCAtIGluZm8gYWJvdXQgZW51bWVyYXRvciB2YWx1ZXMgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVUeXBlQXJyYXkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlVHlwZUFycmF5LmgKaW5kZXggMTBlNjhlNi4uMjYyODY0ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVUeXBlQXJyYXkuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZVR5cGVBcnJheS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE5hdGl2ZVR5cGVBcnJheS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVUeXBlQnVpbHRpbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVUeXBlQnVpbHRpbi5oCmluZGV4IDcyNWRmYjguLjhiYjA5ZjAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlVHlwZUJ1aWx0aW4uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZVR5cGVCdWlsdGluLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTmF0aXZlVHlwZUJ1aWx0aW4uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZVR5cGVFbnVtLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZVR5cGVFbnVtLmgKaW5kZXggYTVjYmVmYy4uMjA2OGM4OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVUeXBlRW51bS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlVHlwZUVudW0uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBOYXRpdmVUeXBlRW51bS5oIC0gaW5mbyBhYm91dCBlbnVtIHR5cGUgLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlVHlwZUZ1bmN0aW9uU2lnLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZVR5cGVGdW5jdGlvblNpZy5oCmluZGV4IDFiMWI4N2YuLmE3ZWEyODcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlVHlwZUZ1bmN0aW9uU2lnLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVUeXBlRnVuY3Rpb25TaWcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBOYXRpdmVUeXBlRnVuY3Rpb25TaWcuaCAtIGluZm8gYWJvdXQgZnVuY3Rpb24gc2lnbmF0dXJlIC0tLSotIEMrKy0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlVHlwZVBvaW50ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlVHlwZVBvaW50ZXIuaAppbmRleCBiY2I3NDMxLi40NDZmNzdkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZVR5cGVQb2ludGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVUeXBlUG9pbnRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE5hdGl2ZVR5cGVQb2ludGVyLmggLSBpbmZvIGFib3V0IHBvaW50ZXIgdHlwZSAtLS0tLS0tLS0tLS0tKi0gQysrLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVUeXBlVHlwZWRlZi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVUeXBlVHlwZWRlZi5oCmluZGV4IDA2ZWI2ZmMuLmZlOGE2ZjcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlVHlwZVR5cGVkZWYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZVR5cGVUeXBlZGVmLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTmF0aXZlVHlwZVR5cGVkZWYuaCAtIGluZm8gYWJvdXQgdHlwZWRlZiAtLS0tLS0tLS0tLS0tLS0tLS0qLSBDKystKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZVR5cGVVRFQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlVHlwZVVEVC5oCmluZGV4IDg0ODIxZDguLjhmNGRlZTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlVHlwZVVEVC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlVHlwZVVEVC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE5hdGl2ZVR5cGVVRFQuaCAtIGluZm8gYWJvdXQgY2xhc3Mvc3RydWN0IHR5cGUgLS0tLS0tLS0tLS0tKi0gQysrLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVUeXBlVlRTaGFwZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9OYXRpdmVUeXBlVlRTaGFwZS5oCmluZGV4IGE5OTZmMzQuLjRlYzBmOWIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvTmF0aXZlVHlwZVZUU2hhcGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL05hdGl2ZVR5cGVWVFNoYXBlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTmF0aXZlVHlwZVZUU2hhcGUuaCAtIGluZm8gYWJvdXQgdmlydHVhbCB0YWJsZSBzaGFwZSAtLS0tLS0qLSBDKystKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1BEQkZpbGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvUERCRmlsZS5oCmluZGV4IDVlMzlhYzMuLmNiOWJkMDcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvUERCRmlsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvUERCRmlsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBEQkZpbGUuaCAtIExvdyBsZXZlbCBpbnRlcmZhY2UgdG8gYSBQREIgZmlsZSAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9QREJGaWxlQnVpbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9QREJGaWxlQnVpbGRlci5oCmluZGV4IDM3NDU4NzQuLjcyMDAwYmQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvUERCRmlsZUJ1aWxkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1BEQkZpbGVCdWlsZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUERCRmlsZUJ1aWxkZXIuaCAtIFBEQiBGaWxlIENyZWF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1BEQlN0cmluZ1RhYmxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1BEQlN0cmluZ1RhYmxlLmgKaW5kZXggMjkxNjdjOS4uNTdmMGI2NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9QREJTdHJpbmdUYWJsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvUERCU3RyaW5nVGFibGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQREJTdHJpbmdUYWJsZS5oIC0gUERCIFN0cmluZyBUYWJsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKy0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvUERCU3RyaW5nVGFibGVCdWlsZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1BEQlN0cmluZ1RhYmxlQnVpbGRlci5oCmluZGV4IDBmODFjMTguLjU3MjY3ZWYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvUERCU3RyaW5nVGFibGVCdWlsZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9QREJTdHJpbmdUYWJsZUJ1aWxkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQREJTdHJpbmdUYWJsZUJ1aWxkZXIuaCAtIFBEQiBTdHJpbmcgVGFibGUgQnVpbGRlciAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9QdWJsaWNzU3RyZWFtLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1B1YmxpY3NTdHJlYW0uaAppbmRleCAyZDAyMjJhLi5lZTI4ZDEwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1B1YmxpY3NTdHJlYW0uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1B1YmxpY3NTdHJlYW0uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQdWJsaWNzU3RyZWFtLmggLSBQREIgUHVibGljIFN5bWJvbCBTdHJlYW0gLS0tLS0tLS0gLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvUmF3Q29uc3RhbnRzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1Jhd0NvbnN0YW50cy5oCmluZGV4IGZiYmQzMzEuLjBkZGU1ZWYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvUmF3Q29uc3RhbnRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9SYXdDb25zdGFudHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBSYXdDb25zdGFudHMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvUmF3RXJyb3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvUmF3RXJyb3IuaAppbmRleCA5N2QxMWI0Li5hYWRiNjRjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1Jhd0Vycm9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9SYXdFcnJvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFJhd0Vycm9yLmggLSBFcnJvciBleHRlbnNpb25zIGZvciByYXcgUERCIGltcGxlbWVudGF0aW9uIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9SYXdUeXBlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9SYXdUeXBlcy5oCmluZGV4IDhmNmQ2NjEuLjg0YjBjYjMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvUmF3VHlwZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1Jhd1R5cGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUmF3VHlwZXMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1N5bWJvbENhY2hlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1N5bWJvbENhY2hlLmgKaW5kZXggMDhlMWQ0MS4uMGIxNWFiNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9TeW1ib2xDYWNoZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvU3ltYm9sQ2FjaGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIFN5bWJvbENhY2hlLmggLSBDYWNoZSBvZiBuYXRpdmUgc3ltYm9scyBhbmQgaWRzIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvU3ltYm9sU3RyZWFtLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1N5bWJvbFN0cmVhbS5oCmluZGV4IGFlOWY3ZDYuLjRmZTFiZDkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvU3ltYm9sU3RyZWFtLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9TeW1ib2xTdHJlYW0uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTeW1ib2xTdHJlYW0uY3BwIC0gUERCIFN5bWJvbCBTdHJlYW0gQWNjZXNzIC0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvVHBpSGFzaGluZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9UcGlIYXNoaW5nLmgKaW5kZXggYzI5OTZjYy4uNGFjNjBhOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9UcGlIYXNoaW5nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9UcGlIYXNoaW5nLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVHBpSGFzaGluZy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1RwaVN0cmVhbS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9UcGlTdHJlYW0uaAppbmRleCAwMGNjNzIwLi4xYjdmZDJkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1RwaVN0cmVhbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9OYXRpdmUvVHBpU3RyZWFtLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVHBpU3RyZWFtLmNwcCAtIFBEQiBUeXBlIEluZm8gKFRQSSkgU3RyZWFtIDIgQWNjZXNzIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC02MSw2ICs2MCwxMCBAQAogICBFeHBlY3RlZDxjb2Rldmlldzo6VHlwZUluZGV4PgogICBmaW5kRnVsbERlY2xGb3JGb3J3YXJkUmVmKGNvZGV2aWV3OjpUeXBlSW5kZXggRm9yd2FyZFJlZlRJKSBjb25zdDsKIAorICBzdGQ6OnZlY3Rvcjxjb2Rldmlldzo6VHlwZUluZGV4PiBmaW5kUmVjb3Jkc0J5TmFtZShTdHJpbmdSZWYgTmFtZSkgY29uc3Q7CisKKyAgY29kZXZpZXc6OkNWVHlwZSBnZXRUeXBlKGNvZGV2aWV3OjpUeXBlSW5kZXggSW5kZXgpOworCiAgIEJpbmFyeVN1YnN0cmVhbVJlZiBnZXRUeXBlUmVjb3Jkc1N1YnN0cmVhbSgpIGNvbnN0OwogCiAgIEVycm9yIGNvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL05hdGl2ZS9UcGlTdHJlYW1CdWlsZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1RwaVN0cmVhbUJ1aWxkZXIuaAppbmRleCA0MTE3MjBkLi43MmQ5OGU5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1RwaVN0cmVhbUJ1aWxkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1RwaVN0cmVhbUJ1aWxkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUcGlTdHJlYW1CdWlsZGVyLmggLSBQREIgVHBpIFN0cmVhbSBDcmVhdGlvbiAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREIuaAppbmRleCA5ZjlkYTM5Li42ZDczNGRjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBEQi5oIC0gYmFzZSBoZWFkZXIgZmlsZSBmb3IgY3JlYXRpbmcgYSBQREIgcmVhZGVyIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQkNvbnRleHQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJDb250ZXh0LmgKaW5kZXggMGNlNDlmNS4uZTQwNGUwNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQkNvbnRleHQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCQ29udGV4dC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBQREJDb250ZXh0LmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09LwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCRXh0cmFzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCRXh0cmFzLmgKaW5kZXggYWFlYzcxYS4uYjlhOGQ4ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQkV4dHJhcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJFeHRyYXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQREJFeHRyYXMuaCAtIGhlbHBlciBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgZm9yIFBEQnMgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1EdW1wZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1EdW1wZXIuaAppbmRleCBjOTc2OTM1Li5mODFiMTVmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltRHVtcGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bUR1bXBlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBEQlN5bUR1bXBlci5oIC0gYmFzZSBpbnRlcmZhY2UgZm9yIFBEQiBzeW1ib2wgZHVtcGVyICotIEMrKyAtLS0tLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbC5oCmluZGV4IDNhNzRmN2MuLmQ5MDA0YTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2wuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUERCU3ltYm9sLmggLSBiYXNlIGNsYXNzIGZvciB1c2VyLWZhY2luZyBzeW1ib2wgdHlwZXMgLS0tLS0qLSBDKystKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sQW5ub3RhdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbEFubm90YXRpb24uaAppbmRleCBlZjAwZGYxLi5jNzY0NjZhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sQW5ub3RhdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xBbm5vdGF0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUERCU3ltYm9sQW5ub3RhdGlvbi5oIC0gQWNjZXNzb3JzIGZvciBxdWVyeWluZyBQREIgYW5ub3RhdGlvbnMgLS0tKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogI2lmbmRlZiBMTFZNX0RFQlVHSU5GT19QREJfUERCU1lNQk9MQU5OT1RBVElPTl9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sQmxvY2suaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xCbG9jay5oCmluZGV4IDJjZjljNzIuLmNmNDcxNDUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xCbG9jay5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xCbG9jay5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBEQlN5bWJvbEJsb2NrLmggLSBBY2Nlc3NvcnMgZm9yIHF1ZXJ5aW5nIFBEQiBibG9ja3MgLS0tLS0tLS0tLS0tLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KICNpZm5kZWYgTExWTV9ERUJVR0lORk9fUERCX1BEQlNZTUJPTEJMT0NLX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xDb21waWxhbmQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xDb21waWxhbmQuaAppbmRleCAwNGRiZDk2Li5jYThiMzlkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sQ29tcGlsYW5kLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbENvbXBpbGFuZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBEQlN5bWJvbENvbXBpbGFuZC5oIC0gQWNjZXNzb3JzIGZvciBxdWVyeWluZyBQREIgY29tcGlsYW5kcyAtLS0tLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KICNpZm5kZWYgTExWTV9ERUJVR0lORk9fUERCX1BEQlNZTUJPTENPTVBJTEFORF9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sQ29tcGlsYW5kRGV0YWlscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbENvbXBpbGFuZERldGFpbHMuaAppbmRleCAzZDY1MWE0Li5iODJiYjZjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sQ29tcGlsYW5kRGV0YWlscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xDb21waWxhbmREZXRhaWxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUERCU3ltYm9sQ29tcGlsYW5kRGV0YWlscy5oIC0gUERCIGNvbXBpbGFuZCBkZXRhaWxzIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sQ29tcGlsYW5kRW52LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sQ29tcGlsYW5kRW52LmgKaW5kZXggZmZjNDA4My4uNjE2MDdhMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbENvbXBpbGFuZEVudi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xDb21waWxhbmRFbnYuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQREJTeW1ib2xDb21waWxhbmRFbnYuaCAtIGNvbXBpbGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xDdXN0b20uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xDdXN0b20uaAppbmRleCBjMjllNGMzLi43NWE4NjQxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sQ3VzdG9tLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbEN1c3RvbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBEQlN5bWJvbEN1c3RvbS5oIC0gY29tcGlsZXItc3BlY2lmaWMgdHlwZXMgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbERhdGEuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xEYXRhLmgKaW5kZXggMjE3ZTFlOS4uN2U5YjY5ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbERhdGEuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sRGF0YS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBEQlN5bWJvbERhdGEuaCAtIFBEQiBkYXRhIChlLmcuIHZhcmlhYmxlKSBhY2Nlc3NvcnMgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbEV4ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbEV4ZS5oCmluZGV4IDM2NmQwY2YuLjFhOWZiMjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xFeGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sRXhlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUERCU3ltYm9sRXhlLmggLSBBY2Nlc3NvcnMgZm9yIHF1ZXJ5aW5nIGV4ZWN1dGFibGVzIGluIGEgUERCIC0tLS0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xGdW5jLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sRnVuYy5oCmluZGV4IDEyOWU1NTcuLjZiZTI3YzggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xGdW5jLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbEZ1bmMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQREJTeW1ib2xGdW5jLmggLSBjbGFzcyByZXByZXNlbnRpbmcgYSBmdW5jdGlvbiBpbnN0YW5jZSAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xGdW5jRGVidWdFbmQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xGdW5jRGVidWdFbmQuaAppbmRleCAxOGRiOGE1Li43MTUyMjQ5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sRnVuY0RlYnVnRW5kLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbEZ1bmNEZWJ1Z0VuZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBEQlN5bWJvbEZ1bmNEZWJ1Z0VuZC5oIC0gZnVuY3Rpb24gZW5kIGJvdW5kcyBpbmZvIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbEZ1bmNEZWJ1Z1N0YXJ0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sRnVuY0RlYnVnU3RhcnQuaAppbmRleCA4M2Q4MmYwLi4zMTI1YzI3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sRnVuY0RlYnVnU3RhcnQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sRnVuY0RlYnVnU3RhcnQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQREJTeW1ib2xGdW5jRGVidWdTdGFydC5oIC0gZnVuY3Rpb24gc3RhcnQgYm91bmRzIGluZm8gLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xMYWJlbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbExhYmVsLmgKaW5kZXggOGIyNjE3Zi4uMzYyNWUyMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbExhYmVsLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbExhYmVsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUERCU3ltYm9sTGFiZWwuaCAtIGxhYmVsIGluZm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sUHVibGljU3ltYm9sLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sUHVibGljU3ltYm9sLmgKaW5kZXggOWRlZjNlZC4uZTJiMjU0NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFB1YmxpY1N5bWJvbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xQdWJsaWNTeW1ib2wuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQREJTeW1ib2xQdWJsaWNTeW1ib2wuaCAtIHB1YmxpYyBzeW1ib2wgaW5mbyAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUaHVuay5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFRodW5rLmgKaW5kZXggN2JiMDU1NS4uMjc0ZGU4YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFRodW5rLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFRodW5rLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUERCU3ltYm9sVGh1bmsuaCAtIFN1cHBvcnQgZm9yIHF1ZXJ5aW5nIFBEQiB0aHVua3MgLS0tLS0tLS0tLS0tLS0tKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZUFycmF5LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZUFycmF5LmgKaW5kZXggNDg4ZjY2OC4uYzAyMTVjOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVBcnJheS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlQXJyYXkuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQREJTeW1ib2xUeXBlQXJyYXkuaCAtIGFycmF5IHR5cGUgaW5mb3JtYXRpb24gLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlQmFzZUNsYXNzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZUJhc2VDbGFzcy5oCmluZGV4IDU1MGRlZWQuLmJhYjI5MmUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlQmFzZUNsYXNzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVCYXNlQ2xhc3MuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQREJTeW1ib2xUeXBlQmFzZUNsYXNzLmggLSBiYXNlIGNsYXNzIHR5cGUgaW5mb3JtYXRpb24gLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlQnVpbHRpbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVCdWlsdGluLmgKaW5kZXggZTA3ZTg4OC4uN2Q5NGMzYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVCdWlsdGluLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVCdWlsdGluLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUERCU3ltYm9sVHlwZUJ1aWx0aW4uaCAtIGJ1aWx0aW4gdHlwZSBpbmZvcm1hdGlvbiAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZUN1c3RvbS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVDdXN0b20uaAppbmRleCAwZDg5NzljLi5kYzY0N2FmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZUN1c3RvbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlQ3VzdG9tLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUERCU3ltYm9sVHlwZUN1c3RvbS5oIC0gY3VzdG9tIGNvbXBpbGVyIHR5cGUgaW5mb3JtYXRpb24gLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZURpbWVuc2lvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVEaW1lbnNpb24uaAppbmRleCA1ODI5MmE2Li43YTllNDM3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZURpbWVuc2lvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlRGltZW5zaW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUERCU3ltYm9sVHlwZURpbWVuc2lvbi5oIC0gYXJyYXkgZGltZW5zaW9uIHR5cGUgaW5mbyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZUVudW0uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlRW51bS5oCmluZGV4IGY0NjMwNDcuLjNhYzcyODAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlRW51bS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlRW51bS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBEQlN5bWJvbFR5cGVFbnVtLmggLSBlbnVtIHR5cGUgaW5mbyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVGcmllbmQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlRnJpZW5kLmgKaW5kZXggNWI5NDBiMC4uYzRkOWRkNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVGcmllbmQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZUZyaWVuZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBEQlN5bWJvbFR5cGVGcmllbmQuaCAtIGZyaWVuZCB0eXBlIGluZm8gLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVGdW5jdGlvbkFyZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVGdW5jdGlvbkFyZy5oCmluZGV4IDA3NGNiNDEuLjIyZDM2MjMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlRnVuY3Rpb25BcmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZUZ1bmN0aW9uQXJnLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUERCU3ltYm9sVHlwZUZ1bmN0aW9uQXJnLmggLSBmdW5jdGlvbiBhcmcgdHlwZSBpbmZvIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZUZ1bmN0aW9uU2lnLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZUZ1bmN0aW9uU2lnLmgKaW5kZXggZGZkZjQzNi4uYTE0OTFjYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVGdW5jdGlvblNpZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlRnVuY3Rpb25TaWcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQREJTeW1ib2xUeXBlRnVuY3Rpb25TaWcuaCAtIGZ1bmN0aW9uIHNpZ25hdHVyZSB0eXBlIGluZm8gKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlTWFuYWdlZC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVNYW5hZ2VkLmgKaW5kZXggZDcxNmFiZC4uNmJjNzBiYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVNYW5hZ2VkLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVNYW5hZ2VkLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUERCU3ltYm9sVHlwZU1hbmFnZWQuaCAtIG1hbmFnZWQgdHlwZSBpbmZvIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZVBvaW50ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlUG9pbnRlci5oCmluZGV4IDMwMGQ2NzIuLmIzNmY0NTkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlUG9pbnRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlUG9pbnRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBEQlN5bWJvbFR5cGVQb2ludGVyLmggLSBwb2ludGVyIHR5cGUgaW5mbyAtLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVUeXBlZGVmLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZVR5cGVkZWYuaAppbmRleCBkNmUyYTM2Li4yNzEyZDA2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZVR5cGVkZWYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZVR5cGVkZWYuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQREJTeW1ib2xUeXBlVHlwZWRlZi5oIC0gdHlwZWRlZiB0eXBlIGluZm8gLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlVURULmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZVVEVC5oCmluZGV4IDkzN2RkNmMuLjNlNzNhZDcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlVURULmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVVRFQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQREJTeW1ib2xUeXBlVURULmggLSBVRFQgdHlwZSBpbmZvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlVlRhYmxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZVZUYWJsZS5oCmluZGV4IDZlZmNlNGIuLmU4MTYxZDMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlVlRhYmxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVWVGFibGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQREJTeW1ib2xUeXBlVlRhYmxlLmggLSBWVGFibGUgdHlwZSBpbmZvIC0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlVlRhYmxlU2hhcGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xUeXBlVlRhYmxlU2hhcGUuaAppbmRleCA4OTQ5MDUyLi42MTQwNjA4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVHlwZVZUYWJsZVNoYXBlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFR5cGVWVGFibGVTaGFwZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBEQlN5bWJvbFR5cGVWVGFibGVTaGFwZS5oIC0gVlRhYmxlIHNoYXBlIGluZm8gLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFVua25vd24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJTeW1ib2xVbmtub3duLmgKaW5kZXggZTkzNWFjNi4uY2MyOWQzOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFVua25vd24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVW5rbm93bi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBEQlN5bWJvbFVua25vd24uaCAtIHVua25vd24gc3ltYm9sIHR5cGUgLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlN5bWJvbFVzaW5nTmFtZXNwYWNlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVXNpbmdOYW1lc3BhY2UuaAppbmRleCA0ZThjOTlmLi5mZDgxMmNiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVXNpbmdOYW1lc3BhY2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvUERCU3ltYm9sVXNpbmdOYW1lc3BhY2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQREJTeW1ib2xVc2luZ05hbWVzcGFjZS5oIC0gdXNpbmcgbmFtZXNwYWNlIGluZm8gLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9QREJUeXBlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlR5cGVzLmgKaW5kZXggNjI0NzAxOC4uNmQyNmI2NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlR5cGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1BEQlR5cGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUERCVHlwZXMuaCAtIERlZmluZXMgZW51bXMgZm9yIHZhcmlvdXMgZmllbGRzIGNvbnRhaW5lZCBpbiBQREIgLS0tLT09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xMiw2ICsxMSw3IEBACiAKICNpbmNsdWRlICJsbHZtL0RlYnVnSW5mby9Db2RlVmlldy9Db2RlVmlldy5oIgogI2luY2x1ZGUgImxsdm0vRGVidWdJbmZvL1BEQi9JUERCRW51bUNoaWxkcmVuLmgiCisjaW5jbHVkZSAibGx2bS9EZWJ1Z0luZm8vUERCL0lQREJGcmFtZURhdGEuaCIKICNpbmNsdWRlICJsbHZtL0RlYnVnSW5mby9QREIvTmF0aXZlL1Jhd1R5cGVzLmgiCiAjaW5jbHVkZSA8Y2N0eXBlPgogI2luY2x1ZGUgPGNzdGRkZWY+CkBAIC03MSw2ICs3MSw3IEBACiB1c2luZyBJUERCRW51bVRhYmxlcyA9IElQREJFbnVtQ2hpbGRyZW48SVBEQlRhYmxlPjsKIHVzaW5nIElQREJFbnVtSW5qZWN0ZWRTb3VyY2VzID0gSVBEQkVudW1DaGlsZHJlbjxJUERCSW5qZWN0ZWRTb3VyY2U+OwogdXNpbmcgSVBEQkVudW1TZWN0aW9uQ29udHJpYnMgPSBJUERCRW51bUNoaWxkcmVuPElQREJTZWN0aW9uQ29udHJpYj47Cit1c2luZyBJUERCRW51bUZyYW1lRGF0YSA9IElQREJFbnVtQ2hpbGRyZW48SVBEQkZyYW1lRGF0YT47CiAKIC8vLyBTcGVjaWZpZXMgd2hpY2ggUERCIHJlYWRlciBpbXBsZW1lbnRhdGlvbiBpcyB0byBiZSB1c2VkLiAgT25seSBhIHZhbHVlCiAvLy8gb2YgUERCX1JlYWRlclR5cGU6OkRJQSBpcyBjdXJyZW50bHkgc3VwcG9ydGVkLCBidXQgTmF0aXZlIGlzIGluIHRoZSB3b3Jrcy4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9VRFRMYXlvdXQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1BEQi9VRFRMYXlvdXQuaAppbmRleCBjNDIzNGMxLi5jNjdiMDkzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9QREIvVURUTGF5b3V0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vUERCL1VEVExheW91dC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFVEVExheW91dC5oIC0gVURUIGxheW91dCBpbmZvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vU3ltYm9saXplL0RJUHJpbnRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vU3ltYm9saXplL0RJUHJpbnRlci5oCmluZGV4IGFiODJiZTMuLjcxNjYzZjMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1N5bWJvbGl6ZS9ESVByaW50ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9TeW1ib2xpemUvRElQcmludGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9EZWJ1Z0luZm8vU3ltYm9saXplL0RJUHJpbnRlci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTMwLDYgKzI5LDcgQEAKICAgYm9vbCBQcmludFByZXR0eTsKICAgaW50IFByaW50U291cmNlQ29udGV4dDsKICAgYm9vbCBWZXJib3NlOworICBib29sIEJhc2VuYW1lczsKIAogICB2b2lkIHByaW50KGNvbnN0IERJTGluZUluZm8gJkluZm8sIGJvb2wgSW5saW5lZCk7CiAgIHZvaWQgcHJpbnRDb250ZXh0KGNvbnN0IHN0ZDo6c3RyaW5nICZGaWxlTmFtZSwgaW50NjRfdCBMaW5lKTsKQEAgLTM3LDEwICszNywxMCBAQAogcHVibGljOgogICBESVByaW50ZXIocmF3X29zdHJlYW0gJk9TLCBib29sIFByaW50RnVuY3Rpb25OYW1lcyA9IHRydWUsCiAgICAgICAgICAgICBib29sIFByaW50UHJldHR5ID0gZmFsc2UsIGludCBQcmludFNvdXJjZUNvbnRleHQgPSAwLAotICAgICAgICAgICAgYm9vbCBWZXJib3NlID0gZmFsc2UpCisgICAgICAgICAgICBib29sIFZlcmJvc2UgPSBmYWxzZSwgYm9vbCBCYXNlbmFtZXMgPSBmYWxzZSkKICAgICAgIDogT1MoT1MpLCBQcmludEZ1bmN0aW9uTmFtZXMoUHJpbnRGdW5jdGlvbk5hbWVzKSwKICAgICAgICAgUHJpbnRQcmV0dHkoUHJpbnRQcmV0dHkpLCBQcmludFNvdXJjZUNvbnRleHQoUHJpbnRTb3VyY2VDb250ZXh0KSwKLSAgICAgICAgVmVyYm9zZShWZXJib3NlKSB7fQorICAgICAgICBWZXJib3NlKFZlcmJvc2UpLCBCYXNlbmFtZXMoQmFzZW5hbWVzKSB7fQogCiAgIERJUHJpbnRlciAmb3BlcmF0b3I8PChjb25zdCBESUxpbmVJbmZvICZJbmZvKTsKICAgRElQcmludGVyICZvcGVyYXRvcjw8KGNvbnN0IERJSW5saW5pbmdJbmZvICZJbmZvKTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1N5bWJvbGl6ZS9TeW1ib2xpemFibGVNb2R1bGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1N5bWJvbGl6ZS9TeW1ib2xpemFibGVNb2R1bGUuaAppbmRleCBlNTc2YTkxLi5mMDg2MmQwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9TeW1ib2xpemUvU3ltYm9saXphYmxlTW9kdWxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vU3ltYm9saXplL1N5bWJvbGl6YWJsZU1vZHVsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFN5bWJvbGl6YWJsZU1vZHVsZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9TeW1ib2xpemUvU3ltYm9saXplLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlYnVnSW5mby9TeW1ib2xpemUvU3ltYm9saXplLmgKaW5kZXggMjg5MTQ4Zi4uNGU1N2ZlNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZWJ1Z0luZm8vU3ltYm9saXplL1N5bWJvbGl6ZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVidWdJbmZvL1N5bWJvbGl6ZS9TeW1ib2xpemUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTeW1ib2xpemUuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNDIsMTMgKzQxLDE2IEBACiAgICAgYm9vbCBSZWxhdGl2ZUFkZHJlc3NlcyA6IDE7CiAgICAgc3RkOjpzdHJpbmcgRGVmYXVsdEFyY2g7CiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IERzeW1IaW50czsKKyAgICBzdGQ6OnN0cmluZyBGYWxsYmFja0RlYnVnUGF0aDsKIAogICAgIE9wdGlvbnMoRnVuY3Rpb25OYW1lS2luZCBQcmludEZ1bmN0aW9ucyA9IEZ1bmN0aW9uTmFtZUtpbmQ6OkxpbmthZ2VOYW1lLAogICAgICAgICAgICAgYm9vbCBVc2VTeW1ib2xUYWJsZSA9IHRydWUsIGJvb2wgRGVtYW5nbGUgPSB0cnVlLAotICAgICAgICAgICAgYm9vbCBSZWxhdGl2ZUFkZHJlc3NlcyA9IGZhbHNlLCBzdGQ6OnN0cmluZyBEZWZhdWx0QXJjaCA9ICIiKQorICAgICAgICAgICAgYm9vbCBSZWxhdGl2ZUFkZHJlc3NlcyA9IGZhbHNlLCBzdGQ6OnN0cmluZyBEZWZhdWx0QXJjaCA9ICIiLAorICAgICAgICAgICAgc3RkOjpzdHJpbmcgRmFsbGJhY2tEZWJ1Z1BhdGggPSAiIikKICAgICAgICAgOiBQcmludEZ1bmN0aW9ucyhQcmludEZ1bmN0aW9ucyksIFVzZVN5bWJvbFRhYmxlKFVzZVN5bWJvbFRhYmxlKSwKICAgICAgICAgICBEZW1hbmdsZShEZW1hbmdsZSksIFJlbGF0aXZlQWRkcmVzc2VzKFJlbGF0aXZlQWRkcmVzc2VzKSwKLSAgICAgICAgICBEZWZhdWx0QXJjaChzdGQ6Om1vdmUoRGVmYXVsdEFyY2gpKSB7fQorICAgICAgICAgIERlZmF1bHRBcmNoKHN0ZDo6bW92ZShEZWZhdWx0QXJjaCkpLAorICAgICAgICAgIEZhbGxiYWNrRGVidWdQYXRoKHN0ZDo6bW92ZShGYWxsYmFja0RlYnVnUGF0aCkpIHt9CiAgIH07CiAKICAgTExWTVN5bWJvbGl6ZXIoY29uc3QgT3B0aW9ucyAmT3B0cyA9IE9wdGlvbnMoKSkgOiBPcHRzKE9wdHMpIHt9CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlbWFuZ2xlL0NvbXBpbGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlbWFuZ2xlL0NvbXBpbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0OGQ2ZTMuLjAwMDAwMDAKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZW1hbmdsZS9Db21waWxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLy89PT0tLS0gQ29tcGlsZXIuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KLS8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCi0vLwotLy8KLS8vIFRoaXMgZmlsZSBjb250YWlucyBhIHZhcmlldHkgb2YgZmVhdHVyZSB0ZXN0IG1hY3JvcyBjb3BpZWQgZnJvbQotLy8gaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ29tcGlsZXIuaCBzbyB0aGF0IExMVk1EZW1hbmdsZSBkb2VzIG5vdCBuZWVkIHRvIHRha2UKLS8vIGEgZGVwZW5kZW5jeSBvbiBMTFZNU3VwcG9ydC4KLS8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi0KLSNpZm5kZWYgTExWTV9ERU1BTkdMRV9DT01QSUxFUl9ICi0jZGVmaW5lIExMVk1fREVNQU5HTEVfQ09NUElMRVJfSAotCi0jaWZkZWYgX01TQ19WRVIKLS8vIHNucHJpbnRmIGlzIGltcGxlbWVudGVkIGluIFZTIDIwMTUKLSNpZiBfTVNDX1ZFUiA8IDE5MDAKLSNkZWZpbmUgc25wcmludGYgX3NucHJpbnRmX3MKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgX19oYXNfZmVhdHVyZQotI2RlZmluZSBfX2hhc19mZWF0dXJlKHgpIDAKLSNlbmRpZgotCi0jaWZuZGVmIF9faGFzX2NwcF9hdHRyaWJ1dGUKLSNkZWZpbmUgX19oYXNfY3BwX2F0dHJpYnV0ZSh4KSAwCi0jZW5kaWYKLQotI2lmbmRlZiBfX2hhc19hdHRyaWJ1dGUKLSNkZWZpbmUgX19oYXNfYXR0cmlidXRlKHgpIDAKLSNlbmRpZgotCi0jaWZuZGVmIF9faGFzX2J1aWx0aW4KLSNkZWZpbmUgX19oYXNfYnVpbHRpbih4KSAwCi0jZW5kaWYKLQotI2lmbmRlZiBMTFZNX0dOVUNfUFJFUkVRCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX0dOVUNfTUlOT1JfXykgJiYgZGVmaW5lZChfX0dOVUNfUEFUQ0hMRVZFTF9fKQotI2RlZmluZSBMTFZNX0dOVUNfUFJFUkVRKG1haiwgbWluLCBwYXRjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChfX0dOVUNfXyA8PCAyMCkgKyAoX19HTlVDX01JTk9SX18gPDwgMTApICsgX19HTlVDX1BBVENITEVWRUxfXyA+PSAgICAgICAgICBcCi0gICAoKG1haikgPDwgMjApICsgKChtaW4pIDw8IDEwKSArIChwYXRjaCkpCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fR05VQ19NSU5PUl9fKQotI2RlZmluZSBMTFZNX0dOVUNfUFJFUkVRKG1haiwgbWluLCBwYXRjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChfX0dOVUNfXyA8PCAyMCkgKyAoX19HTlVDX01JTk9SX18gPDwgMTApID49ICgobWFqKSA8PCAyMCkgKyAoKG1pbikgPDwgMTApKQotI2Vsc2UKLSNkZWZpbmUgTExWTV9HTlVDX1BSRVJFUShtYWosIG1pbiwgcGF0Y2gpIDAKLSNlbmRpZgotI2VuZGlmCi0KLSNpZiBfX2hhc19hdHRyaWJ1dGUodXNlZCkgfHwgTExWTV9HTlVDX1BSRVJFUSgzLCAxLCAwKQotI2RlZmluZSBMTFZNX0FUVFJJQlVURV9VU0VEIF9fYXR0cmlidXRlX18oKF9fdXNlZF9fKSkKLSNlbHNlCi0jZGVmaW5lIExMVk1fQVRUUklCVVRFX1VTRUQKLSNlbmRpZgotCi0jaWYgX19oYXNfYnVpbHRpbihfX2J1aWx0aW5fdW5yZWFjaGFibGUpIHx8IExMVk1fR05VQ19QUkVSRVEoNCwgNSwgMCkKLSNkZWZpbmUgTExWTV9CVUlMVElOX1VOUkVBQ0hBQkxFIF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpCi0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQotI2RlZmluZSBMTFZNX0JVSUxUSU5fVU5SRUFDSEFCTEUgX19hc3N1bWUoZmFsc2UpCi0jZW5kaWYKLQotI2lmIF9faGFzX2F0dHJpYnV0ZShub2lubGluZSkgfHwgTExWTV9HTlVDX1BSRVJFUSgzLCA0LCAwKQotI2RlZmluZSBMTFZNX0FUVFJJQlVURV9OT0lOTElORSBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCi0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQotI2RlZmluZSBMTFZNX0FUVFJJQlVURV9OT0lOTElORSBfX2RlY2xzcGVjKG5vaW5saW5lKQotI2Vsc2UKLSNkZWZpbmUgTExWTV9BVFRSSUJVVEVfTk9JTkxJTkUKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBkZWZpbmVkKExMVk1fRU5BQkxFX0RVTVApCi0jZGVmaW5lIExMVk1fRFVNUF9NRVRIT0QgTExWTV9BVFRSSUJVVEVfTk9JTkxJTkUgTExWTV9BVFRSSUJVVEVfVVNFRAotI2Vsc2UKLSNkZWZpbmUgTExWTV9EVU1QX01FVEhPRCBMTFZNX0FUVFJJQlVURV9OT0lOTElORQotI2VuZGlmCi0KLSNpZiBfX2NwbHVzcGx1cyA+IDIwMTQwMkwgJiYgX19oYXNfY3BwX2F0dHJpYnV0ZShmYWxsdGhyb3VnaCkKLSNkZWZpbmUgTExWTV9GQUxMVEhST1VHSCBbW2ZhbGx0aHJvdWdoXV0KLSNlbGlmIF9faGFzX2NwcF9hdHRyaWJ1dGUoZ251OjpmYWxsdGhyb3VnaCkKLSNkZWZpbmUgTExWTV9GQUxMVEhST1VHSCBbW2dudTo6ZmFsbHRocm91Z2hdXQotI2VsaWYgIV9fY3BsdXNwbHVzCi0vLyBXb3JrYXJvdW5kIGZvciBsbHZtLm9yZy9QUjIzNDM1LCBzaW5jZSBjbGFuZyAzLjYgYW5kIGJlbG93IGVtaXQgYSBzcHVyaW91cwotLy8gZXJyb3Igd2hlbiBfX2hhc19jcHBfYXR0cmlidXRlIGlzIGdpdmVuIGEgc2NvcGVkIGF0dHJpYnV0ZSBpbiBDIG1vZGUuCi0jZGVmaW5lIExMVk1fRkFMTFRIUk9VR0gKLSNlbGlmIF9faGFzX2NwcF9hdHRyaWJ1dGUoY2xhbmc6OmZhbGx0aHJvdWdoKQotI2RlZmluZSBMTFZNX0ZBTExUSFJPVUdIIFtbY2xhbmc6OmZhbGx0aHJvdWdoXV0KLSNlbHNlCi0jZGVmaW5lIExMVk1fRkFMTFRIUk9VR0gKLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVtYW5nbGUvRGVtYW5nbGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVtYW5nbGUvRGVtYW5nbGUuaAppbmRleCBiOWI0ZDE1Li42ZmVhN2VmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlbWFuZ2xlL0RlbWFuZ2xlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZW1hbmdsZS9EZW1hbmdsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gRGVtYW5nbGUuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTEsNiArMTAsNyBAQAogI2RlZmluZSBMTFZNX0RFTUFOR0xFX0RFTUFOR0xFX0gKIAogI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8c3RyaW5nPgogCiBuYW1lc3BhY2UgbGx2bSB7CiAvLy8gVGhpcyBpcyBhIGxsdm0gbG9jYWwgdmVyc2lvbiBvZiBfX2N4YV9kZW1hbmdsZS4gT3RoZXIgdGhhbiB0aGUgbmFtZSBhbmQKQEAgLTMxLDE2ICszMSwxOCBAQAogY2hhciAqaXRhbml1bURlbWFuZ2xlKGNvbnN0IGNoYXIgKm1hbmdsZWRfbmFtZSwgY2hhciAqYnVmLCBzaXplX3QgKm4sCiAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzdGF0dXMpOwogCi0vLy8gQ2FsbHMgdGhlIGNhbGxiYWNrIFxjIENhbGxiYWNrIHdpdGggXGMgQ3R4IGFzIGFuIGFyZ3VtZW50IHdoZW5ldmVyIGEgdHlwZSBpcwotLy8vIGVuY291bnRlcmVkLiBSZXR1cm5zIHRydWUgaWYgXGMgTWFuZ2xlZE5hbWUgY291bGRuJ3QgYmUgcGFyc2VkLgotYm9vbCBpdGFuaXVtRmluZFR5cGVzSW5NYW5nbGVkTmFtZShjb25zdCBjaGFyICpNYW5nbGVkTmFtZSwgdm9pZCAqQ3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqQ2FsbGJhY2spKHZvaWQgKiwgY29uc3QgY2hhciAqKSk7Ci0KIAogZW51bSBNU0RlbWFuZ2xlRmxhZ3MgeyBNU0RGX05vbmUgPSAwLCBNU0RGX0R1bXBCYWNrcmVmcyA9IDEgPDwgMCB9OwogY2hhciAqbWljcm9zb2Z0RGVtYW5nbGUoY29uc3QgY2hhciAqbWFuZ2xlZF9uYW1lLCBjaGFyICpidWYsIHNpemVfdCAqbiwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqc3RhdHVzLCBNU0RlbWFuZ2xlRmxhZ3MgRmxhZ3MgPSBNU0RGX05vbmUpOwogCisvLy8gQXR0ZW1wdCB0byBkZW1hbmdsZSBhIHN0cmluZyB1c2luZyBkaWZmZXJlbnQgZGVtYW5nbGluZyBzY2hlbWVzLgorLy8vIFRoZSBmdW5jdGlvbiB1c2VzIGhldXJpc3RpY3MgdG8gZGV0ZXJtaW5lIHdoaWNoIGRlbWFuZ2xpbmcgc2NoZW1lIHRvIHVzZS4KKy8vLyBccGFyYW0gTWFuZ2xlZE5hbWUgLSByZWZlcmVuY2UgdG8gc3RyaW5nIHRvIGRlbWFuZ2xlLgorLy8vIFxyZXR1cm5zIC0gdGhlIGRlbWFuZ2xlZCBzdHJpbmcsIG9yIGEgY29weSBvZiB0aGUgaW5wdXQgc3RyaW5nIGlmIG5vCisvLy8gZGVtYW5nbGluZyBvY2N1cnJlZC4KK3N0ZDo6c3RyaW5nIGRlbWFuZ2xlKGNvbnN0IHN0ZDo6c3RyaW5nICZNYW5nbGVkTmFtZSk7CisKIC8vLyAiUGFydGlhbCIgZGVtYW5nbGVyLiBUaGlzIHN1cHBvcnRzIGRlbWFuZ2xpbmcgYSBzdHJpbmcgaW50byBhbiBBU1QKIC8vLyAodHlwaWNhbGx5IGFuIGludGVybWVkaWF0ZSBzdGFnZSBpbiBpdGFuaXVtRGVtYW5nbGUpIGFuZCBxdWVyeWluZyBjZXJ0YWluCiAvLy8gcHJvcGVydGllcyBvciBwYXJ0aWFsbHkgcHJpbnRpbmcgdGhlIGRlbWFuZ2xlZCBuYW1lLgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZW1hbmdsZS9EZW1hbmdsZUNvbmZpZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZW1hbmdsZS9EZW1hbmdsZUNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZjg5ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlbWFuZ2xlL0RlbWFuZ2xlQ29uZmlnLmgKQEAgLTAsMCArMSw5OSBAQAorLy89PT0tLS0gRGVtYW5nbGVDb25maWcuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCisvLyBUaGlzIGZpbGUgY29udGFpbnMgYSB2YXJpZXR5IG9mIGZlYXR1cmUgdGVzdCBtYWNyb3MgY29waWVkIGZyb20KKy8vIGluY2x1ZGUvbGx2bS9TdXBwb3J0L0NvbXBpbGVyLmggc28gdGhhdCBMTFZNRGVtYW5nbGUgZG9lcyBub3QgbmVlZCB0byB0YWtlCisvLyBhIGRlcGVuZGVuY3kgb24gTExWTVN1cHBvcnQuCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0RFTUFOR0xFX0NPTVBJTEVSX0gKKyNkZWZpbmUgTExWTV9ERU1BTkdMRV9DT01QSUxFUl9ICisKKyNpZmRlZiBfTVNDX1ZFUgorLy8gc25wcmludGYgaXMgaW1wbGVtZW50ZWQgaW4gVlMgMjAxNQorI2lmIF9NU0NfVkVSIDwgMTkwMAorI2RlZmluZSBzbnByaW50ZiBfc25wcmludGZfcworI2VuZGlmCisjZW5kaWYKKworI2lmbmRlZiBfX2hhc19mZWF0dXJlCisjZGVmaW5lIF9faGFzX2ZlYXR1cmUoeCkgMAorI2VuZGlmCisKKyNpZm5kZWYgX19oYXNfY3BwX2F0dHJpYnV0ZQorI2RlZmluZSBfX2hhc19jcHBfYXR0cmlidXRlKHgpIDAKKyNlbmRpZgorCisjaWZuZGVmIF9faGFzX2F0dHJpYnV0ZQorI2RlZmluZSBfX2hhc19hdHRyaWJ1dGUoeCkgMAorI2VuZGlmCisKKyNpZm5kZWYgX19oYXNfYnVpbHRpbgorI2RlZmluZSBfX2hhc19idWlsdGluKHgpIDAKKyNlbmRpZgorCisjaWZuZGVmIERFTUFOR0xFX0dOVUNfUFJFUkVRCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX0dOVUNfTUlOT1JfXykgJiYgZGVmaW5lZChfX0dOVUNfUEFUQ0hMRVZFTF9fKQorI2RlZmluZSBERU1BTkdMRV9HTlVDX1BSRVJFUShtYWosIG1pbiwgcGF0Y2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoKF9fR05VQ19fIDw8IDIwKSArIChfX0dOVUNfTUlOT1JfXyA8PCAxMCkgKyBfX0dOVUNfUEFUQ0hMRVZFTF9fID49ICAgICAgICAgIFwKKyAgICgobWFqKSA8PCAyMCkgKyAoKG1pbikgPDwgMTApICsgKHBhdGNoKSkKKyNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19HTlVDX01JTk9SX18pCisjZGVmaW5lIERFTUFOR0xFX0dOVUNfUFJFUkVRKG1haiwgbWluLCBwYXRjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICgoX19HTlVDX18gPDwgMjApICsgKF9fR05VQ19NSU5PUl9fIDw8IDEwKSA+PSAoKG1haikgPDwgMjApICsgKChtaW4pIDw8IDEwKSkKKyNlbHNlCisjZGVmaW5lIERFTUFOR0xFX0dOVUNfUFJFUkVRKG1haiwgbWluLCBwYXRjaCkgMAorI2VuZGlmCisjZW5kaWYKKworI2lmIF9faGFzX2F0dHJpYnV0ZSh1c2VkKSB8fCBERU1BTkdMRV9HTlVDX1BSRVJFUSgzLCAxLCAwKQorI2RlZmluZSBERU1BTkdMRV9BVFRSSUJVVEVfVVNFRCBfX2F0dHJpYnV0ZV9fKChfX3VzZWRfXykpCisjZWxzZQorI2RlZmluZSBERU1BTkdMRV9BVFRSSUJVVEVfVVNFRAorI2VuZGlmCisKKyNpZiBfX2hhc19idWlsdGluKF9fYnVpbHRpbl91bnJlYWNoYWJsZSkgfHwgREVNQU5HTEVfR05VQ19QUkVSRVEoNCwgNSwgMCkKKyNkZWZpbmUgREVNQU5HTEVfVU5SRUFDSEFCTEUgX19idWlsdGluX3VucmVhY2hhYmxlKCkKKyNlbGlmIGRlZmluZWQoX01TQ19WRVIpCisjZGVmaW5lIERFTUFOR0xFX1VOUkVBQ0hBQkxFIF9fYXNzdW1lKGZhbHNlKQorI2Vsc2UKKyNkZWZpbmUgREVNQU5HTEVfVU5SRUFDSEFCTEUKKyNlbmRpZgorCisjaWYgX19oYXNfYXR0cmlidXRlKG5vaW5saW5lKSB8fCBERU1BTkdMRV9HTlVDX1BSRVJFUSgzLCA0LCAwKQorI2RlZmluZSBERU1BTkdMRV9BVFRSSUJVVEVfTk9JTkxJTkUgX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQorI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNkZWZpbmUgREVNQU5HTEVfQVRUUklCVVRFX05PSU5MSU5FIF9fZGVjbHNwZWMobm9pbmxpbmUpCisjZWxzZQorI2RlZmluZSBERU1BTkdMRV9BVFRSSUJVVEVfTk9JTkxJTkUKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoTkRFQlVHKQorI2RlZmluZSBERU1BTkdMRV9EVU1QX01FVEhPRCBERU1BTkdMRV9BVFRSSUJVVEVfTk9JTkxJTkUgREVNQU5HTEVfQVRUUklCVVRFX1VTRUQKKyNlbHNlCisjZGVmaW5lIERFTUFOR0xFX0RVTVBfTUVUSE9EIERFTUFOR0xFX0FUVFJJQlVURV9OT0lOTElORQorI2VuZGlmCisKKyNpZiBfX2NwbHVzcGx1cyA+IDIwMTQwMkwgJiYgX19oYXNfY3BwX2F0dHJpYnV0ZShmYWxsdGhyb3VnaCkKKyNkZWZpbmUgREVNQU5HTEVfRkFMTFRIUk9VR0ggW1tmYWxsdGhyb3VnaF1dCisjZWxpZiBfX2hhc19jcHBfYXR0cmlidXRlKGdudTo6ZmFsbHRocm91Z2gpCisjZGVmaW5lIERFTUFOR0xFX0ZBTExUSFJPVUdIIFtbZ251OjpmYWxsdGhyb3VnaF1dCisjZWxpZiAhX19jcGx1c3BsdXMKKy8vIFdvcmthcm91bmQgZm9yIGxsdm0ub3JnL1BSMjM0MzUsIHNpbmNlIGNsYW5nIDMuNiBhbmQgYmVsb3cgZW1pdCBhIHNwdXJpb3VzCisvLyBlcnJvciB3aGVuIF9faGFzX2NwcF9hdHRyaWJ1dGUgaXMgZ2l2ZW4gYSBzY29wZWQgYXR0cmlidXRlIGluIEMgbW9kZS4KKyNkZWZpbmUgREVNQU5HTEVfRkFMTFRIUk9VR0gKKyNlbGlmIF9faGFzX2NwcF9hdHRyaWJ1dGUoY2xhbmc6OmZhbGx0aHJvdWdoKQorI2RlZmluZSBERU1BTkdMRV9GQUxMVEhST1VHSCBbW2NsYW5nOjpmYWxsdGhyb3VnaF1dCisjZWxzZQorI2RlZmluZSBERU1BTkdMRV9GQUxMVEhST1VHSAorI2VuZGlmCisKKyNkZWZpbmUgREVNQU5HTEVfTkFNRVNQQUNFX0JFR0lOIG5hbWVzcGFjZSBsbHZtIHsgbmFtZXNwYWNlIGl0YW5pdW1fZGVtYW5nbGUgeworI2RlZmluZSBERU1BTkdMRV9OQU1FU1BBQ0VfRU5EIH0gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVtYW5nbGUvSXRhbml1bURlbWFuZ2xlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlbWFuZ2xlL0l0YW5pdW1EZW1hbmdsZS5oCmluZGV4IGJjNjBiYzMuLmRmMDZhYTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVtYW5nbGUvSXRhbml1bURlbWFuZ2xlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9EZW1hbmdsZS9JdGFuaXVtRGVtYW5nbGUuaApAQCAtMSwyMyArMSwyNiBAQAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEl0YW5pdW1EZW1hbmdsZS5oIC0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwotLy8gVGhpcyBmaWxlIGlzIGR1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbgotLy8gU291cmNlIExpY2Vuc2VzLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIEdlbmVyaWMgaXRhbml1bSBkZW1hbmdsZXIgbGlicmFyeS4gVGhpcyBmaWxlIGhhcyB0d28gYnl0ZS1wZXItYnl0ZSBpZGVudGljYWwKKy8vIGNvcGllcyBpbiB0aGUgc291cmNlIHRyZWUsIG9uZSBpbiBsaWJjeHhhYmksIGFuZCB0aGUgb3RoZXIgaW4gbGx2bS4KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCi0jaWZuZGVmIExMVk1fREVNQU5HTEVfSVRBTklVTURFTUFOR0xFX0gKLSNkZWZpbmUgTExWTV9ERU1BTkdMRV9JVEFOSVVNREVNQU5HTEVfSAorI2lmbmRlZiBERU1BTkdMRV9JVEFOSVVNREVNQU5HTEVfSAorI2RlZmluZSBERU1BTkdMRV9JVEFOSVVNREVNQU5HTEVfSAogCiAvLyBGSVhNRTogKHBvc3NpYmx5KSBpbmNvbXBsZXRlIGxpc3Qgb2YgZmVhdHVyZXMgdGhhdCBjbGFuZyBtYW5nbGVzIHRoYXQgdGhpcwogLy8gZmlsZSBkb2VzIG5vdCB5ZXQgc3VwcG9ydDoKIC8vICAgLSBDKysgbW9kdWxlcyBUUwogCi0jaW5jbHVkZSAibGx2bS9EZW1hbmdsZS9Db21waWxlci5oIgotI2luY2x1ZGUgImxsdm0vRGVtYW5nbGUvU3RyaW5nVmlldy5oIgotI2luY2x1ZGUgImxsdm0vRGVtYW5nbGUvVXRpbGl0eS5oIgotCisjaW5jbHVkZSAiRGVtYW5nbGVDb25maWcuaCIKKyNpbmNsdWRlICJTdHJpbmdWaWV3LmgiCisjaW5jbHVkZSAiVXRpbGl0eS5oIgogI2luY2x1ZGUgPGNhc3NlcnQ+CiAjaW5jbHVkZSA8Y2N0eXBlPgogI2luY2x1ZGUgPGNzdGRpbz4KQEAgLTk1LDggKzk4LDggQEAKICAgICBYKEJyYWNlZEV4cHIpIFwKICAgICBYKEJyYWNlZFJhbmdlRXhwcikKIAotbmFtZXNwYWNlIGxsdm0gewotbmFtZXNwYWNlIGl0YW5pdW1fZGVtYW5nbGUgeworREVNQU5HTEVfTkFNRVNQQUNFX0JFR0lOCisKIC8vIEJhc2UgY2xhc3Mgb2YgYWxsIEFTVCBub2Rlcy4gVGhlIEFTVCBpcyBidWlsdCBieSB0aGUgcGFyc2VyLCB0aGVuIGlzCiAvLyB0cmF2ZXJzZWQgYnkgdGhlIHByaW50TGVmdC9SaWdodCBmdW5jdGlvbnMgdG8gcHJvZHVjZSBhIGRlbWFuZ2xlZCBzdHJpbmcuCiBjbGFzcyBOb2RlIHsKQEAgLTE5NCw3ICsxOTcsNyBAQAogICB2aXJ0dWFsIH5Ob2RlKCkgPSBkZWZhdWx0OwogCiAjaWZuZGVmIE5ERUJVRwotICBMTFZNX0RVTVBfTUVUSE9EIHZvaWQgZHVtcCgpIGNvbnN0OworICBERU1BTkdMRV9EVU1QX01FVEhPRCB2b2lkIGR1bXAoKSBjb25zdDsKICNlbmRpZgogfTsKIApAQCAtMTI3OCw3ICsxMjgxLDcgQEAKICAgICBjYXNlIFNwZWNpYWxTdWJLaW5kOjppb3N0cmVhbToKICAgICAgIHJldHVybiBTdHJpbmdWaWV3KCJiYXNpY19pb3N0cmVhbSIpOwogICAgIH0KLSAgICBMTFZNX0JVSUxUSU5fVU5SRUFDSEFCTEU7CisgICAgREVNQU5HTEVfVU5SRUFDSEFCTEU7CiAgIH0KIAogICB2b2lkIHByaW50TGVmdChPdXRwdXRTdHJlYW0gJlMpIGNvbnN0IG92ZXJyaWRlIHsKQEAgLTEzMzAsNyArMTMzMyw3IEBACiAgICAgY2FzZSBTcGVjaWFsU3ViS2luZDo6aW9zdHJlYW06CiAgICAgICByZXR1cm4gU3RyaW5nVmlldygiaW9zdHJlYW0iKTsKICAgICB9Ci0gICAgTExWTV9CVUlMVElOX1VOUkVBQ0hBQkxFOworICAgIERFTUFOR0xFX1VOUkVBQ0hBQkxFOwogICB9CiAKICAgdm9pZCBwcmludExlZnQoT3V0cHV0U3RyZWFtICZTKSBjb25zdCBvdmVycmlkZSB7CkBAIC0yMTM0LDggKzIxMzcsNyBAQAogICB9CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+Ci1zdHJ1Y3QgRGIgewordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEFsbG9jPiBzdHJ1Y3QgQWJzdHJhY3RNYW5nbGluZ1BhcnNlciB7CiAgIGNvbnN0IGNoYXIgKkZpcnN0OwogICBjb25zdCBjaGFyICpMYXN0OwogCkBAIC0yMTU4LDE2ICsyMTYwLDE2IEBACiAgIC8vIGNvbnZlcnNpb24gb3BlcmF0b3IncyB0eXBlLCBhbmQgYXJlIHJlc29sdmVkIGluIHRoZSBlbmNsb3NpbmcgPGVuY29kaW5nPi4KICAgUE9EU21hbGxWZWN0b3I8Rm9yd2FyZFRlbXBsYXRlUmVmZXJlbmNlICosIDQ+IEZvcndhcmRUZW1wbGF0ZVJlZnM7CiAKLSAgdm9pZCAoKlR5cGVDYWxsYmFjaykodm9pZCAqLCBjb25zdCBjaGFyICopID0gbnVsbHB0cjsKLSAgdm9pZCAqVHlwZUNhbGxiYWNrQ29udGV4dCA9IG51bGxwdHI7Ci0KICAgYm9vbCBUcnlUb1BhcnNlVGVtcGxhdGVBcmdzID0gdHJ1ZTsKICAgYm9vbCBQZXJtaXRGb3J3YXJkVGVtcGxhdGVSZWZlcmVuY2VzID0gZmFsc2U7CiAgIGJvb2wgUGFyc2luZ0xhbWJkYVBhcmFtcyA9IGZhbHNlOwogCiAgIEFsbG9jIEFTVEFsbG9jYXRvcjsKIAotICBEYihjb25zdCBjaGFyICpGaXJzdF8sIGNvbnN0IGNoYXIgKkxhc3RfKSA6IEZpcnN0KEZpcnN0XyksIExhc3QoTGFzdF8pIHt9CisgIEFic3RyYWN0TWFuZ2xpbmdQYXJzZXIoY29uc3QgY2hhciAqRmlyc3RfLCBjb25zdCBjaGFyICpMYXN0XykKKyAgICAgIDogRmlyc3QoRmlyc3RfKSwgTGFzdChMYXN0Xykge30KKworICBEZXJpdmVkICZnZXREZXJpdmVkKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZCAmPigqdGhpcyk7IH0KIAogICB2b2lkIHJlc2V0KGNvbnN0IGNoYXIgKkZpcnN0XywgY29uc3QgY2hhciAqTGFzdF8pIHsKICAgICBGaXJzdCA9IEZpcnN0XzsKQEAgLTIyNzQsNyArMjI3Niw3IEBACiAgICAgRnVuY3Rpb25SZWZRdWFsIFJlZmVyZW5jZVF1YWxpZmllciA9IEZyZWZRdWFsTm9uZTsKICAgICBzaXplX3QgRm9yd2FyZFRlbXBsYXRlUmVmc0JlZ2luOwogCi0gICAgTmFtZVN0YXRlKERiICpFbmNsb3NpbmcpCisgICAgTmFtZVN0YXRlKEFic3RyYWN0TWFuZ2xpbmdQYXJzZXIgKkVuY2xvc2luZykKICAgICAgICAgOiBGb3J3YXJkVGVtcGxhdGVSZWZzQmVnaW4oRW5jbG9zaW5nLT5Gb3J3YXJkVGVtcGxhdGVSZWZzLnNpemUoKSkge30KICAgfTsKIApAQCAtMjMyNCwzNSArMjMyNiwzNiBAQAogLy8KIC8vIDx1bnNjb3BlZC10ZW1wbGF0ZS1uYW1lPiA6Oj0gPHVuc2NvcGVkLW5hbWU+CiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgOjo9IDxzdWJzdGl0dXRpb24+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZU5hbWUoTmFtZVN0YXRlICpTdGF0ZSkgewordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEFsbG9jPgorTm9kZSAqQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlTmFtZShOYW1lU3RhdGUgKlN0YXRlKSB7CiAgIGNvbnN1bWVJZignTCcpOyAvLyBleHRlbnNpb24KIAogICBpZiAobG9vaygpID09ICdOJykKLSAgICByZXR1cm4gcGFyc2VOZXN0ZWROYW1lKFN0YXRlKTsKKyAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlTmVzdGVkTmFtZShTdGF0ZSk7CiAgIGlmIChsb29rKCkgPT0gJ1onKQotICAgIHJldHVybiBwYXJzZUxvY2FsTmFtZShTdGF0ZSk7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUxvY2FsTmFtZShTdGF0ZSk7CiAKICAgLy8gICAgICAgIDo6PSA8dW5zY29wZWQtdGVtcGxhdGUtbmFtZT4gPHRlbXBsYXRlLWFyZ3M+CiAgIGlmIChsb29rKCkgPT0gJ1MnICYmIGxvb2soMSkgIT0gJ3QnKSB7Ci0gICAgTm9kZSAqUyA9IHBhcnNlU3Vic3RpdHV0aW9uKCk7CisgICAgTm9kZSAqUyA9IGdldERlcml2ZWQoKS5wYXJzZVN1YnN0aXR1dGlvbigpOwogICAgIGlmIChTID09IG51bGxwdHIpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAobG9vaygpICE9ICdJJykKICAgICAgIHJldHVybiBudWxscHRyOwotICAgIE5vZGUgKlRBID0gcGFyc2VUZW1wbGF0ZUFyZ3MoU3RhdGUgIT0gbnVsbHB0cik7CisgICAgTm9kZSAqVEEgPSBnZXREZXJpdmVkKCkucGFyc2VUZW1wbGF0ZUFyZ3MoU3RhdGUgIT0gbnVsbHB0cik7CiAgICAgaWYgKFRBID09IG51bGxwdHIpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoU3RhdGUpIFN0YXRlLT5FbmRzV2l0aFRlbXBsYXRlQXJncyA9IHRydWU7CiAgICAgcmV0dXJuIG1ha2U8TmFtZVdpdGhUZW1wbGF0ZUFyZ3M+KFMsIFRBKTsKICAgfQogCi0gIE5vZGUgKk4gPSBwYXJzZVVuc2NvcGVkTmFtZShTdGF0ZSk7CisgIE5vZGUgKk4gPSBnZXREZXJpdmVkKCkucGFyc2VVbnNjb3BlZE5hbWUoU3RhdGUpOwogICBpZiAoTiA9PSBudWxscHRyKQogICAgIHJldHVybiBudWxscHRyOwogICAvLyAgICAgICAgOjo9IDx1bnNjb3BlZC10ZW1wbGF0ZS1uYW1lPiA8dGVtcGxhdGUtYXJncz4KICAgaWYgKGxvb2soKSA9PSAnSScpIHsKICAgICBTdWJzLnB1c2hfYmFjayhOKTsKLSAgICBOb2RlICpUQSA9IHBhcnNlVGVtcGxhdGVBcmdzKFN0YXRlICE9IG51bGxwdHIpOworICAgIE5vZGUgKlRBID0gZ2V0RGVyaXZlZCgpLnBhcnNlVGVtcGxhdGVBcmdzKFN0YXRlICE9IG51bGxwdHIpOwogICAgIGlmIChUQSA9PSBudWxscHRyKQogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKFN0YXRlKSBTdGF0ZS0+RW5kc1dpdGhUZW1wbGF0ZUFyZ3MgPSB0cnVlOwpAQCAtMjM2NSwxMCArMjM2OCwxMSBAQAogLy8gPGxvY2FsLW5hbWU+IDo9IFogPGZ1bmN0aW9uIGVuY29kaW5nPiBFIDxlbnRpdHkgbmFtZT4gWzxkaXNjcmltaW5hdG9yPl0KIC8vICAgICAgICAgICAgICA6PSBaIDxmdW5jdGlvbiBlbmNvZGluZz4gRSBzIFs8ZGlzY3JpbWluYXRvcj5dCiAvLyAgICAgICAgICAgICAgOj0gWiA8ZnVuY3Rpb24gZW5jb2Rpbmc+IEVkIFsgPHBhcmFtZXRlciBudW1iZXI+IF0gXyA8ZW50aXR5IG5hbWU+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZUxvY2FsTmFtZShOYW1lU3RhdGUgKlN0YXRlKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICpBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPERlcml2ZWQsIEFsbG9jPjo6cGFyc2VMb2NhbE5hbWUoTmFtZVN0YXRlICpTdGF0ZSkgewogICBpZiAoIWNvbnN1bWVJZignWicpKQogICAgIHJldHVybiBudWxscHRyOwotICBOb2RlICpFbmNvZGluZyA9IHBhcnNlRW5jb2RpbmcoKTsKKyAgTm9kZSAqRW5jb2RpbmcgPSBnZXREZXJpdmVkKCkucGFyc2VFbmNvZGluZygpOwogICBpZiAoRW5jb2RpbmcgPT0gbnVsbHB0ciB8fCAhY29uc3VtZUlmKCdFJykpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIzODQsMTMgKzIzODgsMTMgQEAKICAgICBwYXJzZU51bWJlcih0cnVlKTsKICAgICBpZiAoIWNvbnN1bWVJZignXycpKQogICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgTm9kZSAqTiA9IHBhcnNlTmFtZShTdGF0ZSk7CisgICAgTm9kZSAqTiA9IGdldERlcml2ZWQoKS5wYXJzZU5hbWUoU3RhdGUpOwogICAgIGlmIChOID09IG51bGxwdHIpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gbWFrZTxMb2NhbE5hbWU+KEVuY29kaW5nLCBOKTsKICAgfQogCi0gIE5vZGUgKkVudGl0eSA9IHBhcnNlTmFtZShTdGF0ZSk7CisgIE5vZGUgKkVudGl0eSA9IGdldERlcml2ZWQoKS5wYXJzZU5hbWUoU3RhdGUpOwogICBpZiAoRW50aXR5ID09IG51bGxwdHIpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIEZpcnN0ID0gcGFyc2VfZGlzY3JpbWluYXRvcihGaXJzdCwgTGFzdCk7CkBAIC0yNDAwLDE0ICsyNDA0LDE2IEBACiAvLyA8dW5zY29wZWQtbmFtZT4gOjo9IDx1bnF1YWxpZmllZC1uYW1lPgogLy8gICAgICAgICAgICAgICAgIDo6PSBTdCA8dW5xdWFsaWZpZWQtbmFtZT4gICAjIDo6c3RkOjoKIC8vIGV4dGVuc2lvbiAgICAgICA6Oj0gU3RMPHVucXVhbGlmaWVkLW5hbWU+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZVVuc2NvcGVkTmFtZShOYW1lU3RhdGUgKlN0YXRlKSB7Ci0gaWYgKGNvbnN1bWVJZigiU3RMIikgfHwgY29uc3VtZUlmKCJTdCIpKSB7Ci0gICBOb2RlICpSID0gcGFyc2VVbnF1YWxpZmllZE5hbWUoU3RhdGUpOwotICAgaWYgKFIgPT0gbnVsbHB0cikKLSAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICByZXR1cm4gbWFrZTxTdGRRdWFsaWZpZWROYW1lPihSKTsKLSB9Ci0gcmV0dXJuIHBhcnNlVW5xdWFsaWZpZWROYW1lKFN0YXRlKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBBbGxvYz4KK05vZGUgKgorQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlVW5zY29wZWROYW1lKE5hbWVTdGF0ZSAqU3RhdGUpIHsKKyAgaWYgKGNvbnN1bWVJZigiU3RMIikgfHwgY29uc3VtZUlmKCJTdCIpKSB7CisgICAgTm9kZSAqUiA9IGdldERlcml2ZWQoKS5wYXJzZVVucXVhbGlmaWVkTmFtZShTdGF0ZSk7CisgICAgaWYgKFIgPT0gbnVsbHB0cikKKyAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtYWtlPFN0ZFF1YWxpZmllZE5hbWU+KFIpOworICB9CisgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VVbnF1YWxpZmllZE5hbWUoU3RhdGUpOwogfQogCiAvLyA8dW5xdWFsaWZpZWQtbmFtZT4gOjo9IDxvcGVyYXRvci1uYW1lPiBbYWJpLXRhZ3NdCkBAIC0yNDE1LDI3ICsyNDIxLDI4IEBACiAvLyAgICAgICAgICAgICAgICAgICAgOjo9IDxzb3VyY2UtbmFtZT4KIC8vICAgICAgICAgICAgICAgICAgICA6Oj0gPHVubmFtZWQtdHlwZS1uYW1lPgogLy8gICAgICAgICAgICAgICAgICAgIDo6PSBEQyA8c291cmNlLW5hbWU+KyBFICAgICAgIyBzdHJ1Y3R1cmVkIGJpbmRpbmcgZGVjbGFyYXRpb24KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotTm9kZSAqRGI8QWxsb2M+OjpwYXJzZVVucXVhbGlmaWVkTmFtZShOYW1lU3RhdGUgKlN0YXRlKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICoKK0Fic3RyYWN0TWFuZ2xpbmdQYXJzZXI8RGVyaXZlZCwgQWxsb2M+OjpwYXJzZVVucXVhbGlmaWVkTmFtZShOYW1lU3RhdGUgKlN0YXRlKSB7CiAgIC8vIDxjdG9yLWR0b3ItbmFtZT5zIGFyZSBzcGVjaWFsLWNhc2VkIGluIHBhcnNlTmVzdGVkTmFtZSgpLgogICBOb2RlICpSZXN1bHQ7CiAgIGlmIChsb29rKCkgPT0gJ1UnKQotICAgIFJlc3VsdCA9IHBhcnNlVW5uYW1lZFR5cGVOYW1lKFN0YXRlKTsKKyAgICBSZXN1bHQgPSBnZXREZXJpdmVkKCkucGFyc2VVbm5hbWVkVHlwZU5hbWUoU3RhdGUpOwogICBlbHNlIGlmIChsb29rKCkgPj0gJzEnICYmIGxvb2soKSA8PSAnOScpCi0gICAgUmVzdWx0ID0gcGFyc2VTb3VyY2VOYW1lKFN0YXRlKTsKKyAgICBSZXN1bHQgPSBnZXREZXJpdmVkKCkucGFyc2VTb3VyY2VOYW1lKFN0YXRlKTsKICAgZWxzZSBpZiAoY29uc3VtZUlmKCJEQyIpKSB7CiAgICAgc2l6ZV90IEJpbmRpbmdzQmVnaW4gPSBOYW1lcy5zaXplKCk7CiAgICAgZG8gewotICAgICAgTm9kZSAqQmluZGluZyA9IHBhcnNlU291cmNlTmFtZShTdGF0ZSk7CisgICAgICBOb2RlICpCaW5kaW5nID0gZ2V0RGVyaXZlZCgpLnBhcnNlU291cmNlTmFtZShTdGF0ZSk7CiAgICAgICBpZiAoQmluZGluZyA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgIE5hbWVzLnB1c2hfYmFjayhCaW5kaW5nKTsKICAgICB9IHdoaWxlICghY29uc3VtZUlmKCdFJykpOwogICAgIFJlc3VsdCA9IG1ha2U8U3RydWN0dXJlZEJpbmRpbmdOYW1lPihwb3BUcmFpbGluZ05vZGVBcnJheShCaW5kaW5nc0JlZ2luKSk7CiAgIH0gZWxzZQotICAgIFJlc3VsdCA9IHBhcnNlT3BlcmF0b3JOYW1lKFN0YXRlKTsKKyAgICBSZXN1bHQgPSBnZXREZXJpdmVkKCkucGFyc2VPcGVyYXRvck5hbWUoU3RhdGUpOwogICBpZiAoUmVzdWx0ICE9IG51bGxwdHIpCi0gICAgUmVzdWx0ID0gcGFyc2VBYmlUYWdzKFJlc3VsdCk7CisgICAgUmVzdWx0ID0gZ2V0RGVyaXZlZCgpLnBhcnNlQWJpVGFncyhSZXN1bHQpOwogICByZXR1cm4gUmVzdWx0OwogfQogCkBAIC0yNDQ1LDcgKzI0NTIsOSBAQAogLy8gPGNsb3N1cmUtdHlwZS1uYW1lPiA6Oj0gVWwgPGxhbWJkYS1zaWc+IEUgWyA8bm9ubmVnYXRpdmUgbnVtYmVyPiBdIF8KIC8vCiAvLyA8bGFtYmRhLXNpZz4gOjo9IDxwYXJhbWV0ZXIgdHlwZT4rICAjIFBhcmFtZXRlciB0eXBlcyBvciAidiIgaWYgdGhlIGxhbWJkYSBoYXMgbm8gcGFyYW1ldGVycwotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IE5vZGUgKkRiPEFsbG9jPjo6cGFyc2VVbm5hbWVkVHlwZU5hbWUoTmFtZVN0YXRlICopIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBBbGxvYz4KK05vZGUgKgorQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlVW5uYW1lZFR5cGVOYW1lKE5hbWVTdGF0ZSAqKSB7CiAgIGlmIChjb25zdW1lSWYoIlV0IikpIHsKICAgICBTdHJpbmdWaWV3IENvdW50ID0gcGFyc2VOdW1iZXIoKTsKICAgICBpZiAoIWNvbnN1bWVJZignXycpKQpAQCAtMjQ1OCw3ICsyNDY3LDcgQEAKICAgICBpZiAoIWNvbnN1bWVJZigidkUiKSkgewogICAgICAgc2l6ZV90IFBhcmFtc0JlZ2luID0gTmFtZXMuc2l6ZSgpOwogICAgICAgZG8gewotICAgICAgICBOb2RlICpQID0gcGFyc2VUeXBlKCk7CisgICAgICAgIE5vZGUgKlAgPSBnZXREZXJpdmVkKCkucGFyc2VUeXBlKCk7CiAgICAgICAgIGlmIChQID09IG51bGxwdHIpCiAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIE5hbWVzLnB1c2hfYmFjayhQKTsKQEAgLTI0NzAsMTEgKzI0NzksMTggQEAKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtYWtlPENsb3N1cmVUeXBlTmFtZT4oUGFyYW1zLCBDb3VudCk7CiAgIH0KKyAgaWYgKGNvbnN1bWVJZigiVWIiKSkgeworICAgICh2b2lkKXBhcnNlTnVtYmVyKCk7CisgICAgaWYgKCFjb25zdW1lSWYoJ18nKSkKKyAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtYWtlPE5hbWVUeXBlPigiJ2Jsb2NrLWxpdGVyYWwnIik7CisgIH0KICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIC8vIDxzb3VyY2UtbmFtZT4gOjo9IDxwb3NpdGl2ZSBsZW5ndGggbnVtYmVyPiA8aWRlbnRpZmllcj4KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPiBOb2RlICpEYjxBbGxvYz46OnBhcnNlU291cmNlTmFtZShOYW1lU3RhdGUgKikgewordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEFsbG9jPgorTm9kZSAqQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlU291cmNlTmFtZShOYW1lU3RhdGUgKikgewogICBzaXplX3QgTGVuZ3RoID0gMDsKICAgaWYgKHBhcnNlUG9zaXRpdmVJbnRlZ2VyKCZMZW5ndGgpKQogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjUzOCw3ICsyNTU0LDkgQEAKIC8vICAgICAgICAgICAgICAgICAgIDo6PSByUyAgICAjID4+PQogLy8gICAgICAgICAgICAgICAgICAgOjo9IHNzICAgICMgPD0+IEMrKzJhCiAvLyAgICAgICAgICAgICAgICAgICA6Oj0gdiA8ZGlnaXQ+IDxzb3VyY2UtbmFtZT4gICAgICAgICMgdmVuZG9yIGV4dGVuZGVkIG9wZXJhdG9yCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZU9wZXJhdG9yTmFtZShOYW1lU3RhdGUgKlN0YXRlKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICoKK0Fic3RyYWN0TWFuZ2xpbmdQYXJzZXI8RGVyaXZlZCwgQWxsb2M+OjpwYXJzZU9wZXJhdG9yTmFtZShOYW1lU3RhdGUgKlN0YXRlKSB7CiAgIHN3aXRjaCAobG9vaygpKSB7CiAgIGNhc2UgJ2EnOgogICAgIHN3aXRjaCAobG9vaygxKSkgewpAQCAtMjU3OCw3ICsyNTk2LDcgQEAKICAgICAgIFN3YXBBbmRSZXN0b3JlPGJvb2w+IFNhdmVQZXJtaXQoUGVybWl0Rm9yd2FyZFRlbXBsYXRlUmVmZXJlbmNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVybWl0Rm9yd2FyZFRlbXBsYXRlUmVmZXJlbmNlcyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgIT0gbnVsbHB0cik7Ci0gICAgICBOb2RlKiBUeSA9IHBhcnNlVHlwZSgpOworICAgICAgTm9kZSAqVHkgPSBnZXREZXJpdmVkKCkucGFyc2VUeXBlKCk7CiAgICAgICBpZiAoVHkgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICBpZiAoU3RhdGUpIFN0YXRlLT5DdG9yRHRvckNvbnZlcnNpb24gPSB0cnVlOwpAQCAtMjY0Miw3ICsyNjYwLDcgQEAKICAgICAvLyAgICAgICAgICAgICAgICAgICA6Oj0gbGkgPHNvdXJjZS1uYW1lPiAgIyBvcGVyYXRvciAiIgogICAgIGNhc2UgJ2knOiB7CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgTm9kZSAqU04gPSBwYXJzZVNvdXJjZU5hbWUoU3RhdGUpOworICAgICAgTm9kZSAqU04gPSBnZXREZXJpdmVkKCkucGFyc2VTb3VyY2VOYW1lKFN0YXRlKTsKICAgICAgIGlmIChTTiA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgIHJldHVybiBtYWtlPExpdGVyYWxPcGVyYXRvcj4oU04pOwpAQCAtMjc2Myw3ICsyNzgxLDcgQEAKICAgY2FzZSAndic6CiAgICAgaWYgKHN0ZDo6aXNkaWdpdChsb29rKDEpKSkgewogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIE5vZGUgKlNOID0gcGFyc2VTb3VyY2VOYW1lKFN0YXRlKTsKKyAgICAgIE5vZGUgKlNOID0gZ2V0RGVyaXZlZCgpLnBhcnNlU291cmNlTmFtZShTdGF0ZSk7CiAgICAgICBpZiAoU04gPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICByZXR1cm4gbWFrZTxDb252ZXJzaW9uT3BlcmF0b3JUeXBlPihTTik7CkBAIC0yNzgxLDggKzI3OTksMTAgQEAKIC8vICAgICAgICAgICAgICAgICAgOjo9IEQxICAjIGNvbXBsZXRlIG9iamVjdCBkZXN0cnVjdG9yCiAvLyAgICAgICAgICAgICAgICAgIDo6PSBEMiAgIyBiYXNlIG9iamVjdCBkZXN0cnVjdG9yCiAvLyAgIGV4dGVuc2lvbiAgICAgIDo6PSBENSAgICAjID8KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotTm9kZSAqRGI8QWxsb2M+OjpwYXJzZUN0b3JEdG9yTmFtZShOb2RlIComU29GYXIsIE5hbWVTdGF0ZSAqU3RhdGUpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBBbGxvYz4KK05vZGUgKgorQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlQ3RvckR0b3JOYW1lKE5vZGUgKiZTb0ZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lU3RhdGUgKlN0YXRlKSB7CiAgIGlmIChTb0Zhci0+Z2V0S2luZCgpID09IE5vZGU6OktTcGVjaWFsU3Vic3RpdHV0aW9uKSB7CiAgICAgYXV0byBTU0sgPSBzdGF0aWNfY2FzdDxTcGVjaWFsU3Vic3RpdHV0aW9uICo+KFNvRmFyKS0+U1NLOwogICAgIHN3aXRjaCAoU1NLKSB7CkBAIC0yNzkzLDYgKzI4MTMsNyBAQAogICAgICAgU29GYXIgPSBtYWtlPEV4cGFuZGVkU3BlY2lhbFN1YnN0aXR1dGlvbj4oU1NLKTsKICAgICAgIGlmICghU29GYXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI4MDYsNyArMjgyNyw3IEBACiAgICAgKytGaXJzdDsKICAgICBpZiAoU3RhdGUpIFN0YXRlLT5DdG9yRHRvckNvbnZlcnNpb24gPSB0cnVlOwogICAgIGlmIChJc0luaGVyaXRlZCkgewotICAgICAgaWYgKHBhcnNlTmFtZShTdGF0ZSkgPT0gbnVsbHB0cikKKyAgICAgIGlmIChnZXREZXJpdmVkKCkucGFyc2VOYW1lKFN0YXRlKSA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIG1ha2U8Q3RvckR0b3JOYW1lPihTb0ZhciwgZmFsc2UsIFZhcmlhbnQpOwpAQCAtMjg0MCw3ICsyODYxLDkgQEAKIC8vIDx0ZW1wbGF0ZS1wcmVmaXg+IDo6PSA8cHJlZml4PiA8dGVtcGxhdGUgdW5xdWFsaWZpZWQtbmFtZT4KIC8vICAgICAgICAgICAgICAgICAgIDo6PSA8dGVtcGxhdGUtcGFyYW0+CiAvLyAgICAgICAgICAgICAgICAgICA6Oj0gPHN1YnN0aXR1dGlvbj4KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPiBOb2RlICpEYjxBbGxvYz46OnBhcnNlTmVzdGVkTmFtZShOYW1lU3RhdGUgKlN0YXRlKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICoKK0Fic3RyYWN0TWFuZ2xpbmdQYXJzZXI8RGVyaXZlZCwgQWxsb2M+OjpwYXJzZU5lc3RlZE5hbWUoTmFtZVN0YXRlICpTdGF0ZSkgewogICBpZiAoIWNvbnN1bWVJZignTicpKQogICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yODgxLDcgKzI5MDQsNyBAQAogCiAgICAgLy8gICAgICAgICAgOjo9IDx0ZW1wbGF0ZS1wYXJhbT4KICAgICBpZiAobG9vaygpID09ICdUJykgewotICAgICAgaWYgKCFQdXNoQ29tcG9uZW50KHBhcnNlVGVtcGxhdGVQYXJhbSgpKSkKKyAgICAgIGlmICghUHVzaENvbXBvbmVudChnZXREZXJpdmVkKCkucGFyc2VUZW1wbGF0ZVBhcmFtKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgIFN1YnMucHVzaF9iYWNrKFNvRmFyKTsKICAgICAgIGNvbnRpbnVlOwpAQCAtMjg4OSw3ICsyOTEyLDcgQEAKIAogICAgIC8vICAgICAgICAgIDo6PSA8dGVtcGxhdGUtcHJlZml4PiA8dGVtcGxhdGUtYXJncz4KICAgICBpZiAobG9vaygpID09ICdJJykgewotICAgICAgTm9kZSAqVEEgPSBwYXJzZVRlbXBsYXRlQXJncyhTdGF0ZSAhPSBudWxscHRyKTsKKyAgICAgIE5vZGUgKlRBID0gZ2V0RGVyaXZlZCgpLnBhcnNlVGVtcGxhdGVBcmdzKFN0YXRlICE9IG51bGxwdHIpOwogICAgICAgaWYgKFRBID09IG51bGxwdHIgfHwgU29GYXIgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICBTb0ZhciA9IG1ha2U8TmFtZVdpdGhUZW1wbGF0ZUFyZ3M+KFNvRmFyLCBUQSk7CkBAIC0yOTAyLDcgKzI5MjUsNyBAQAogCiAgICAgLy8gICAgICAgICAgOjo9IDxkZWNsdHlwZT4KICAgICBpZiAobG9vaygpID09ICdEJyAmJiAobG9vaygxKSA9PSAndCcgfHwgbG9vaygxKSA9PSAnVCcpKSB7Ci0gICAgICBpZiAoIVB1c2hDb21wb25lbnQocGFyc2VEZWNsdHlwZSgpKSkKKyAgICAgIGlmICghUHVzaENvbXBvbmVudChnZXREZXJpdmVkKCkucGFyc2VEZWNsdHlwZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICBTdWJzLnB1c2hfYmFjayhTb0Zhcik7CiAgICAgICBjb250aW51ZTsKQEAgLTI5MTAsNyArMjkzMyw3IEBACiAKICAgICAvLyAgICAgICAgICA6Oj0gPHN1YnN0aXR1dGlvbj4KICAgICBpZiAobG9vaygpID09ICdTJyAmJiBsb29rKDEpICE9ICd0JykgewotICAgICAgTm9kZSAqUyA9IHBhcnNlU3Vic3RpdHV0aW9uKCk7CisgICAgICBOb2RlICpTID0gZ2V0RGVyaXZlZCgpLnBhcnNlU3Vic3RpdHV0aW9uKCk7CiAgICAgICBpZiAoIVB1c2hDb21wb25lbnQoUykpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgaWYgKFNvRmFyICE9IFMpCkBAIC0yOTIyLDkgKzI5NDUsOSBAQAogICAgIGlmIChsb29rKCkgPT0gJ0MnIHx8IChsb29rKCkgPT0gJ0QnICYmIGxvb2soMSkgIT0gJ0MnKSkgewogICAgICAgaWYgKFNvRmFyID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgaWYgKCFQdXNoQ29tcG9uZW50KHBhcnNlQ3RvckR0b3JOYW1lKFNvRmFyLCBTdGF0ZSkpKQorICAgICAgaWYgKCFQdXNoQ29tcG9uZW50KGdldERlcml2ZWQoKS5wYXJzZUN0b3JEdG9yTmFtZShTb0ZhciwgU3RhdGUpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICBTb0ZhciA9IHBhcnNlQWJpVGFncyhTb0Zhcik7CisgICAgICBTb0ZhciA9IGdldERlcml2ZWQoKS5wYXJzZUFiaVRhZ3MoU29GYXIpOwogICAgICAgaWYgKFNvRmFyID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgU3Vicy5wdXNoX2JhY2soU29GYXIpOwpAQCAtMjkzMiw3ICsyOTU1LDcgQEAKICAgICB9CiAKICAgICAvLyAgICAgICAgICA6Oj0gPHByZWZpeD4gPHVucXVhbGlmaWVkLW5hbWU+Ci0gICAgaWYgKCFQdXNoQ29tcG9uZW50KHBhcnNlVW5xdWFsaWZpZWROYW1lKFN0YXRlKSkpCisgICAgaWYgKCFQdXNoQ29tcG9uZW50KGdldERlcml2ZWQoKS5wYXJzZVVucXVhbGlmaWVkTmFtZShTdGF0ZSkpKQogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgU3Vicy5wdXNoX2JhY2soU29GYXIpOwogICB9CkBAIC0yOTQ1LDEyICsyOTY4LDEzIEBACiB9CiAKIC8vIDxzaW1wbGUtaWQ+IDo6PSA8c291cmNlLW5hbWU+IFsgPHRlbXBsYXRlLWFyZ3M+IF0KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPiBOb2RlICpEYjxBbGxvYz46OnBhcnNlU2ltcGxlSWQoKSB7Ci0gIE5vZGUgKlNOID0gcGFyc2VTb3VyY2VOYW1lKC8qTmFtZVN0YXRlPSovbnVsbHB0cik7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICpBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPERlcml2ZWQsIEFsbG9jPjo6cGFyc2VTaW1wbGVJZCgpIHsKKyAgTm9kZSAqU04gPSBnZXREZXJpdmVkKCkucGFyc2VTb3VyY2VOYW1lKC8qTmFtZVN0YXRlPSovbnVsbHB0cik7CiAgIGlmIChTTiA9PSBudWxscHRyKQogICAgIHJldHVybiBudWxscHRyOwogICBpZiAobG9vaygpID09ICdJJykgewotICAgIE5vZGUgKlRBID0gcGFyc2VUZW1wbGF0ZUFyZ3MoKTsKKyAgICBOb2RlICpUQSA9IGdldERlcml2ZWQoKS5wYXJzZVRlbXBsYXRlQXJncygpOwogICAgIGlmIChUQSA9PSBudWxscHRyKQogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1ha2U8TmFtZVdpdGhUZW1wbGF0ZUFyZ3M+KFNOLCBUQSk7CkBAIC0yOTYwLDEyICsyOTg0LDEzIEBACiAKIC8vIDxkZXN0cnVjdG9yLW5hbWU+IDo6PSA8dW5yZXNvbHZlZC10eXBlPiAgIyBlLmcuLCB+VCBvciB+ZGVjbHR5cGUoZigpKQogLy8gICAgICAgICAgICAgICAgICAgOjo9IDxzaW1wbGUtaWQ+ICAgICAgICAjIGUuZy4sIH5BPDIqTj4KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPiBOb2RlICpEYjxBbGxvYz46OnBhcnNlRGVzdHJ1Y3Rvck5hbWUoKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICpBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPERlcml2ZWQsIEFsbG9jPjo6cGFyc2VEZXN0cnVjdG9yTmFtZSgpIHsKICAgTm9kZSAqUmVzdWx0OwogICBpZiAoc3RkOjppc2RpZ2l0KGxvb2soKSkpCi0gICAgUmVzdWx0ID0gcGFyc2VTaW1wbGVJZCgpOworICAgIFJlc3VsdCA9IGdldERlcml2ZWQoKS5wYXJzZVNpbXBsZUlkKCk7CiAgIGVsc2UKLSAgICBSZXN1bHQgPSBwYXJzZVVucmVzb2x2ZWRUeXBlKCk7CisgICAgUmVzdWx0ID0gZ2V0RGVyaXZlZCgpLnBhcnNlVW5yZXNvbHZlZFR5cGUoKTsKICAgaWYgKFJlc3VsdCA9PSBudWxscHRyKQogICAgIHJldHVybiBudWxscHRyOwogICByZXR1cm4gbWFrZTxEdG9yTmFtZT4oUmVzdWx0KTsKQEAgLTI5NzQsMjIgKzI5OTksMjMgQEAKIC8vIDx1bnJlc29sdmVkLXR5cGU+IDo6PSA8dGVtcGxhdGUtcGFyYW0+CiAvLyAgICAgICAgICAgICAgICAgICA6Oj0gPGRlY2x0eXBlPgogLy8gICAgICAgICAgICAgICAgICAgOjo9IDxzdWJzdGl0dXRpb24+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZVVucmVzb2x2ZWRUeXBlKCkgewordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEFsbG9jPgorTm9kZSAqQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlVW5yZXNvbHZlZFR5cGUoKSB7CiAgIGlmIChsb29rKCkgPT0gJ1QnKSB7Ci0gICAgTm9kZSAqVFAgPSBwYXJzZVRlbXBsYXRlUGFyYW0oKTsKKyAgICBOb2RlICpUUCA9IGdldERlcml2ZWQoKS5wYXJzZVRlbXBsYXRlUGFyYW0oKTsKICAgICBpZiAoVFAgPT0gbnVsbHB0cikKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFN1YnMucHVzaF9iYWNrKFRQKTsKICAgICByZXR1cm4gVFA7CiAgIH0KICAgaWYgKGxvb2soKSA9PSAnRCcpIHsKLSAgICBOb2RlICpEVCA9IHBhcnNlRGVjbHR5cGUoKTsKKyAgICBOb2RlICpEVCA9IGdldERlcml2ZWQoKS5wYXJzZURlY2x0eXBlKCk7CiAgICAgaWYgKERUID09IG51bGxwdHIpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBTdWJzLnB1c2hfYmFjayhEVCk7CiAgICAgcmV0dXJuIERUOwogICB9Ci0gIHJldHVybiBwYXJzZVN1YnN0aXR1dGlvbigpOworICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlU3Vic3RpdHV0aW9uKCk7CiB9CiAKIC8vIDxiYXNlLXVucmVzb2x2ZWQtbmFtZT4gOjo9IDxzaW1wbGUtaWQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVucmVzb2x2ZWQgbmFtZQpAQCAtMjk5OSwyMCArMzAyNSwyMSBAQAogLy8gICAgICAgICAgICAgICAgICAgICAgICA6Oj0gb24gPG9wZXJhdG9yLW5hbWU+IDx0ZW1wbGF0ZS1hcmdzPiAgICAgICAgICMgdW5yZXNvbHZlZCBvcGVyYXRvciB0ZW1wbGF0ZS1pZAogLy8gICAgICAgICAgICAgICAgICAgICAgICA6Oj0gZG4gPGRlc3RydWN0b3ItbmFtZT4gICAgICAgICAgICAgICAgICAgICAgICMgZGVzdHJ1Y3RvciBvciBwc2V1ZG8tZGVzdHJ1Y3RvcjsKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZS5nLiB+WCBvciB+WDxOLTE+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZUJhc2VVbnJlc29sdmVkTmFtZSgpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBBbGxvYz4KK05vZGUgKkFic3RyYWN0TWFuZ2xpbmdQYXJzZXI8RGVyaXZlZCwgQWxsb2M+OjpwYXJzZUJhc2VVbnJlc29sdmVkTmFtZSgpIHsKICAgaWYgKHN0ZDo6aXNkaWdpdChsb29rKCkpKQotICAgIHJldHVybiBwYXJzZVNpbXBsZUlkKCk7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZVNpbXBsZUlkKCk7CiAKICAgaWYgKGNvbnN1bWVJZigiZG4iKSkKLSAgICByZXR1cm4gcGFyc2VEZXN0cnVjdG9yTmFtZSgpOworICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VEZXN0cnVjdG9yTmFtZSgpOwogCiAgIGNvbnN1bWVJZigib24iKTsKIAotICBOb2RlICpPcGVyID0gcGFyc2VPcGVyYXRvck5hbWUoLypOYW1lU3RhdGU9Ki9udWxscHRyKTsKKyAgTm9kZSAqT3BlciA9IGdldERlcml2ZWQoKS5wYXJzZU9wZXJhdG9yTmFtZSgvKk5hbWVTdGF0ZT0qL251bGxwdHIpOwogICBpZiAoT3BlciA9PSBudWxscHRyKQogICAgIHJldHVybiBudWxscHRyOwogICBpZiAobG9vaygpID09ICdJJykgewotICAgIE5vZGUgKlRBID0gcGFyc2VUZW1wbGF0ZUFyZ3MoKTsKKyAgICBOb2RlICpUQSA9IGdldERlcml2ZWQoKS5wYXJzZVRlbXBsYXRlQXJncygpOwogICAgIGlmIChUQSA9PSBudWxscHRyKQogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1ha2U8TmFtZVdpdGhUZW1wbGF0ZUFyZ3M+KE9wZXIsIFRBKTsKQEAgLTMwMzEsMTggKzMwNTgsMTkgQEAKIC8vICAoaWdub3JlZCkgICAgICAgIDo6PSBzck4gPHVucmVzb2x2ZWQtdHlwZT4gIDx1bnJlc29sdmVkLXF1YWxpZmllci1sZXZlbD4rIEUgPGJhc2UtdW5yZXNvbHZlZC1uYW1lPgogLy8KIC8vIDx1bnJlc29sdmVkLXF1YWxpZmllci1sZXZlbD4gOjo9IDxzaW1wbGUtaWQ+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZVVucmVzb2x2ZWROYW1lKCkgewordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEFsbG9jPgorTm9kZSAqQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlVW5yZXNvbHZlZE5hbWUoKSB7CiAgIE5vZGUgKlNvRmFyID0gbnVsbHB0cjsKIAogICAvLyBzck4gPHVucmVzb2x2ZWQtdHlwZT4gWzx0ZW1wbGF0ZS1hcmdzPl0gPHVucmVzb2x2ZWQtcXVhbGlmaWVyLWxldmVsPiogRSA8YmFzZS11bnJlc29sdmVkLW5hbWU+CiAgIC8vIHNyTiA8dW5yZXNvbHZlZC10eXBlPiAgICAgICAgICAgICAgICAgICA8dW5yZXNvbHZlZC1xdWFsaWZpZXItbGV2ZWw+KyBFIDxiYXNlLXVucmVzb2x2ZWQtbmFtZT4KICAgaWYgKGNvbnN1bWVJZigic3JOIikpIHsKLSAgICBTb0ZhciA9IHBhcnNlVW5yZXNvbHZlZFR5cGUoKTsKKyAgICBTb0ZhciA9IGdldERlcml2ZWQoKS5wYXJzZVVucmVzb2x2ZWRUeXBlKCk7CiAgICAgaWYgKFNvRmFyID09IG51bGxwdHIpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChsb29rKCkgPT0gJ0knKSB7Ci0gICAgICBOb2RlICpUQSA9IHBhcnNlVGVtcGxhdGVBcmdzKCk7CisgICAgICBOb2RlICpUQSA9IGdldERlcml2ZWQoKS5wYXJzZVRlbXBsYXRlQXJncygpOwogICAgICAgaWYgKFRBID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgU29GYXIgPSBtYWtlPE5hbWVXaXRoVGVtcGxhdGVBcmdzPihTb0ZhciwgVEEpOwpAQCAtMzA1MSw3ICszMDc5LDcgQEAKICAgICB9CiAKICAgICB3aGlsZSAoIWNvbnN1bWVJZignRScpKSB7Ci0gICAgICBOb2RlICpRdWFsID0gcGFyc2VTaW1wbGVJZCgpOworICAgICAgTm9kZSAqUXVhbCA9IGdldERlcml2ZWQoKS5wYXJzZVNpbXBsZUlkKCk7CiAgICAgICBpZiAoUXVhbCA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgIFNvRmFyID0gbWFrZTxRdWFsaWZpZWROYW1lPihTb0ZhciwgUXVhbCk7CkBAIC0zMDU5LDcgKzMwODcsNyBAQAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBOb2RlICpCYXNlID0gcGFyc2VCYXNlVW5yZXNvbHZlZE5hbWUoKTsKKyAgICBOb2RlICpCYXNlID0gZ2V0RGVyaXZlZCgpLnBhcnNlQmFzZVVucmVzb2x2ZWROYW1lKCk7CiAgICAgaWYgKEJhc2UgPT0gbnVsbHB0cikKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtYWtlPFF1YWxpZmllZE5hbWU+KFNvRmFyLCBCYXNlKTsKQEAgLTMwNjksNyArMzA5Nyw3IEBACiAKICAgLy8gW2dzXSA8YmFzZS11bnJlc29sdmVkLW5hbWU+ICAgICAgICAgICAgICAgICAgICAgIyB4IG9yICh3aXRoICJncyIpIDo6eAogICBpZiAoIWNvbnN1bWVJZigic3IiKSkgewotICAgIFNvRmFyID0gcGFyc2VCYXNlVW5yZXNvbHZlZE5hbWUoKTsKKyAgICBTb0ZhciA9IGdldERlcml2ZWQoKS5wYXJzZUJhc2VVbnJlc29sdmVkTmFtZSgpOwogICAgIGlmIChTb0ZhciA9PSBudWxscHRyKQogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKEdsb2JhbCkKQEAgLTMwODAsNyArMzEwOCw3IEBACiAgIC8vIFtnc10gc3IgPHVucmVzb2x2ZWQtcXVhbGlmaWVyLWxldmVsPisgRSAgIDxiYXNlLXVucmVzb2x2ZWQtbmFtZT4KICAgaWYgKHN0ZDo6aXNkaWdpdChsb29rKCkpKSB7CiAgICAgZG8gewotICAgICAgTm9kZSAqUXVhbCA9IHBhcnNlU2ltcGxlSWQoKTsKKyAgICAgIE5vZGUgKlF1YWwgPSBnZXREZXJpdmVkKCkucGFyc2VTaW1wbGVJZCgpOwogICAgICAgaWYgKFF1YWwgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICBpZiAoU29GYXIpCkBAIC0zMDk2LDEyICszMTI0LDEyIEBACiAgIC8vICAgICAgc3IgPHVucmVzb2x2ZWQtdHlwZT4gICAgICAgICAgICAgICAgIDxiYXNlLXVucmVzb2x2ZWQtbmFtZT4KICAgLy8gICAgICBzciA8dW5yZXNvbHZlZC10eXBlPiA8dGVtcGxhdGUtYXJncz4gPGJhc2UtdW5yZXNvbHZlZC1uYW1lPgogICBlbHNlIHsKLSAgICBTb0ZhciA9IHBhcnNlVW5yZXNvbHZlZFR5cGUoKTsKKyAgICBTb0ZhciA9IGdldERlcml2ZWQoKS5wYXJzZVVucmVzb2x2ZWRUeXBlKCk7CiAgICAgaWYgKFNvRmFyID09IG51bGxwdHIpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChsb29rKCkgPT0gJ0knKSB7Ci0gICAgICBOb2RlICpUQSA9IHBhcnNlVGVtcGxhdGVBcmdzKCk7CisgICAgICBOb2RlICpUQSA9IGdldERlcml2ZWQoKS5wYXJzZVRlbXBsYXRlQXJncygpOwogICAgICAgaWYgKFRBID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgU29GYXIgPSBtYWtlPE5hbWVXaXRoVGVtcGxhdGVBcmdzPihTb0ZhciwgVEEpOwpAQCAtMzExMiw3ICszMTQwLDcgQEAKIAogICBhc3NlcnQoU29GYXIgIT0gbnVsbHB0cik7CiAKLSAgTm9kZSAqQmFzZSA9IHBhcnNlQmFzZVVucmVzb2x2ZWROYW1lKCk7CisgIE5vZGUgKkJhc2UgPSBnZXREZXJpdmVkKCkucGFyc2VCYXNlVW5yZXNvbHZlZE5hbWUoKTsKICAgaWYgKEJhc2UgPT0gbnVsbHB0cikKICAgICByZXR1cm4gbnVsbHB0cjsKICAgcmV0dXJuIG1ha2U8UXVhbGlmaWVkTmFtZT4oU29GYXIsIEJhc2UpOwpAQCAtMzEyMCw3ICszMTQ4LDggQEAKIAogLy8gPGFiaS10YWdzPiA6Oj0gPGFiaS10YWc+IFs8YWJpLXRhZ3M+XQogLy8gPGFiaS10YWc+IDo6PSBCIDxzb3VyY2UtbmFtZT4KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPiBOb2RlICpEYjxBbGxvYz46OnBhcnNlQWJpVGFncyhOb2RlICpOKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICpBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPERlcml2ZWQsIEFsbG9jPjo6cGFyc2VBYmlUYWdzKE5vZGUgKk4pIHsKICAgd2hpbGUgKGNvbnN1bWVJZignQicpKSB7CiAgICAgU3RyaW5nVmlldyBTTiA9IHBhcnNlQmFyZVNvdXJjZU5hbWUoKTsKICAgICBpZiAoU04uZW1wdHkoKSkKQEAgLTMxMzMsOCArMzE2Miw5IEBACiB9CiAKIC8vIDxudW1iZXI+IDo6PSBbbl0gPG5vbi1uZWdhdGl2ZSBkZWNpbWFsIGludGVnZXI+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4KLVN0cmluZ1ZpZXcgRGI8QWxsb2M+OjpwYXJzZU51bWJlcihib29sIEFsbG93TmVnYXRpdmUpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgRGVyaXZlZD4KK1N0cmluZ1ZpZXcKK0Fic3RyYWN0TWFuZ2xpbmdQYXJzZXI8QWxsb2MsIERlcml2ZWQ+OjpwYXJzZU51bWJlcihib29sIEFsbG93TmVnYXRpdmUpIHsKICAgY29uc3QgY2hhciAqVG1wID0gRmlyc3Q7CiAgIGlmIChBbGxvd05lZ2F0aXZlKQogICAgIGNvbnN1bWVJZignbicpOwpAQCAtMzE0Niw3ICszMTc2LDggQEAKIH0KIAogLy8gPHBvc2l0aXZlIGxlbmd0aCBudW1iZXI+IDo6PSBbMC05XSoKLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPiBib29sIERiPEFsbG9jPjo6cGFyc2VQb3NpdGl2ZUludGVnZXIoc2l6ZV90ICpPdXQpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgRGVyaXZlZD4KK2Jvb2wgQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxBbGxvYywgRGVyaXZlZD46OnBhcnNlUG9zaXRpdmVJbnRlZ2VyKHNpemVfdCAqT3V0KSB7CiAgICpPdXQgPSAwOwogICBpZiAobG9vaygpIDwgJzAnIHx8IGxvb2soKSA+ICc5JykKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMxNTcsNyArMzE4OCw4IEBACiAgIHJldHVybiBmYWxzZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IFN0cmluZ1ZpZXcgRGI8QWxsb2M+OjpwYXJzZUJhcmVTb3VyY2VOYW1lKCkgewordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBEZXJpdmVkPgorU3RyaW5nVmlldyBBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPEFsbG9jLCBEZXJpdmVkPjo6cGFyc2VCYXJlU291cmNlTmFtZSgpIHsKICAgc2l6ZV90IEludCA9IDA7CiAgIGlmIChwYXJzZVBvc2l0aXZlSW50ZWdlcigmSW50KSB8fCBudW1MZWZ0KCkgPCBJbnQpCiAgICAgcmV0dXJuIFN0cmluZ1ZpZXcoKTsKQEAgLTMxNzQsNyArMzIwNiw4IEBACiAvLwogLy8gPHJlZi1xdWFsaWZpZXI+IDo6PSBSICAgICAgICAgICAgICAgICAgICMgJiByZWYtcXVhbGlmaWVyCiAvLyA8cmVmLXF1YWxpZmllcj4gOjo9IE8gICAgICAgICAgICAgICAgICAgIyAmJiByZWYtcXVhbGlmaWVyCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZUZ1bmN0aW9uVHlwZSgpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBBbGxvYz4KK05vZGUgKkFic3RyYWN0TWFuZ2xpbmdQYXJzZXI8RGVyaXZlZCwgQWxsb2M+OjpwYXJzZUZ1bmN0aW9uVHlwZSgpIHsKICAgUXVhbGlmaWVycyBDVlF1YWxzID0gcGFyc2VDVlF1YWxpZmllcnMoKTsKIAogICBOb2RlICpFeGNlcHRpb25TcGVjID0gbnVsbHB0cjsKQEAgLTMxODMsNyArMzIxNiw3IEBACiAgICAgaWYgKCFFeGNlcHRpb25TcGVjKQogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0gZWxzZSBpZiAoY29uc3VtZUlmKCJETyIpKSB7Ci0gICAgTm9kZSAqRSA9IHBhcnNlRXhwcigpOworICAgIE5vZGUgKkUgPSBnZXREZXJpdmVkKCkucGFyc2VFeHByKCk7CiAgICAgaWYgKEUgPT0gbnVsbHB0ciB8fCAhY29uc3VtZUlmKCdFJykpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBFeGNlcHRpb25TcGVjID0gbWFrZTxOb2V4Y2VwdFNwZWM+KEUpOwpAQCAtMzE5Miw3ICszMjI1LDcgQEAKICAgfSBlbHNlIGlmIChjb25zdW1lSWYoIkR3IikpIHsKICAgICBzaXplX3QgU3BlY3NCZWdpbiA9IE5hbWVzLnNpemUoKTsKICAgICB3aGlsZSAoIWNvbnN1bWVJZignRScpKSB7Ci0gICAgICBOb2RlICpUID0gcGFyc2VUeXBlKCk7CisgICAgICBOb2RlICpUID0gZ2V0RGVyaXZlZCgpLnBhcnNlVHlwZSgpOwogICAgICAgaWYgKFQgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICBOYW1lcy5wdXNoX2JhY2soVCk7CkBAIC0zMjA4LDcgKzMyNDEsNyBAQAogICBpZiAoIWNvbnN1bWVJZignRicpKQogICAgIHJldHVybiBudWxscHRyOwogICBjb25zdW1lSWYoJ1knKTsgLy8gZXh0ZXJuICJDIgotICBOb2RlICpSZXR1cm5UeXBlID0gcGFyc2VUeXBlKCk7CisgIE5vZGUgKlJldHVyblR5cGUgPSBnZXREZXJpdmVkKCkucGFyc2VUeXBlKCk7CiAgIGlmIChSZXR1cm5UeXBlID09IG51bGxwdHIpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTMyMjcsNyArMzI2MCw3IEBACiAgICAgICBSZWZlcmVuY2VRdWFsaWZpZXIgPSBGcmVmUXVhbFJWYWx1ZTsKICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBOb2RlICpUID0gcGFyc2VUeXBlKCk7CisgICAgTm9kZSAqVCA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgICBpZiAoVCA9PSBudWxscHRyKQogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgTmFtZXMucHVzaF9iYWNrKFQpOwpAQCAtMzI0Myw3ICszMjc2LDggQEAKIC8vICAgICAgICAgICAgICAgICAgICAgICAgIDo6PSBEdiBbPGRpbWVuc2lvbiBleHByZXNzaW9uPl0gXyA8ZWxlbWVudCB0eXBlPgogLy8gPGV4dGVuZGVkIGVsZW1lbnQgdHlwZT4gOjo9IDxlbGVtZW50IHR5cGU+CiAvLyAgICAgICAgICAgICAgICAgICAgICAgICA6Oj0gcCAjIEFsdGlWZWMgdmVjdG9yIHBpeGVsCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZVZlY3RvclR5cGUoKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICpBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPERlcml2ZWQsIEFsbG9jPjo6cGFyc2VWZWN0b3JUeXBlKCkgewogICBpZiAoIWNvbnN1bWVJZigiRHYiKSkKICAgICByZXR1cm4gbnVsbHB0cjsKICAgaWYgKGxvb2soKSA+PSAnMScgJiYgbG9vaygpIDw9ICc5JykgewpAQCAtMzI1MiwyNCArMzI4NiwyNCBAQAogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgaWYgKGNvbnN1bWVJZigncCcpKQogICAgICAgcmV0dXJuIG1ha2U8UGl4ZWxWZWN0b3JUeXBlPihEaW1lbnNpb25OdW1iZXIpOwotICAgIE5vZGUgKkVsZW1UeXBlID0gcGFyc2VUeXBlKCk7CisgICAgTm9kZSAqRWxlbVR5cGUgPSBnZXREZXJpdmVkKCkucGFyc2VUeXBlKCk7CiAgICAgaWYgKEVsZW1UeXBlID09IG51bGxwdHIpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gbWFrZTxWZWN0b3JUeXBlPihFbGVtVHlwZSwgRGltZW5zaW9uTnVtYmVyKTsKICAgfQogCiAgIGlmICghY29uc3VtZUlmKCdfJykpIHsKLSAgICBOb2RlICpEaW1FeHByID0gcGFyc2VFeHByKCk7CisgICAgTm9kZSAqRGltRXhwciA9IGdldERlcml2ZWQoKS5wYXJzZUV4cHIoKTsKICAgICBpZiAoIURpbUV4cHIpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWNvbnN1bWVJZignXycpKQogICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgTm9kZSAqRWxlbVR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICBOb2RlICpFbGVtVHlwZSA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgICBpZiAoIUVsZW1UeXBlKQogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIG1ha2U8VmVjdG9yVHlwZT4oRWxlbVR5cGUsIERpbUV4cHIpOwogICB9Ci0gIE5vZGUgKkVsZW1UeXBlID0gcGFyc2VUeXBlKCk7CisgIE5vZGUgKkVsZW1UeXBlID0gZ2V0RGVyaXZlZCgpLnBhcnNlVHlwZSgpOwogICBpZiAoIUVsZW1UeXBlKQogICAgIHJldHVybiBudWxscHRyOwogICByZXR1cm4gbWFrZTxWZWN0b3JUeXBlPihFbGVtVHlwZSwgU3RyaW5nVmlldygpKTsKQEAgLTMyNzcsMTIgKzMzMTEsMTMgQEAKIAogLy8gPGRlY2x0eXBlPiAgOjo9IER0IDxleHByZXNzaW9uPiBFICAjIGRlY2x0eXBlIG9mIGFuIGlkLWV4cHJlc3Npb24gb3IgY2xhc3MgbWVtYmVyIGFjY2VzcyAoQysrMHgpCiAvLyAgICAgICAgICAgICA6Oj0gRFQgPGV4cHJlc3Npb24+IEUgICMgZGVjbHR5cGUgb2YgYW4gZXhwcmVzc2lvbiAoQysrMHgpCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZURlY2x0eXBlKCkgewordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEFsbG9jPgorTm9kZSAqQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlRGVjbHR5cGUoKSB7CiAgIGlmICghY29uc3VtZUlmKCdEJykpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIGlmICghY29uc3VtZUlmKCd0JykgJiYgIWNvbnN1bWVJZignVCcpKQogICAgIHJldHVybiBudWxscHRyOwotICBOb2RlICpFID0gcGFyc2VFeHByKCk7CisgIE5vZGUgKkUgPSBnZXREZXJpdmVkKCkucGFyc2VFeHByKCk7CiAgIGlmIChFID09IG51bGxwdHIpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIGlmICghY29uc3VtZUlmKCdFJykpCkBAIC0zMjkyLDcgKzMzMjcsOCBAQAogCiAvLyA8YXJyYXktdHlwZT4gOjo9IEEgPHBvc2l0aXZlIGRpbWVuc2lvbiBudW1iZXI+IF8gPGVsZW1lbnQgdHlwZT4KIC8vICAgICAgICAgICAgICA6Oj0gQSBbPGRpbWVuc2lvbiBleHByZXNzaW9uPl0gXyA8ZWxlbWVudCB0eXBlPgotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IE5vZGUgKkRiPEFsbG9jPjo6cGFyc2VBcnJheVR5cGUoKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICpBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPERlcml2ZWQsIEFsbG9jPjo6cGFyc2VBcnJheVR5cGUoKSB7CiAgIGlmICghY29uc3VtZUlmKCdBJykpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTMzMDMsNyArMzMzOSw3IEBACiAgICAgaWYgKCFjb25zdW1lSWYoJ18nKSkKICAgICAgIHJldHVybiBudWxscHRyOwogICB9IGVsc2UgaWYgKCFjb25zdW1lSWYoJ18nKSkgewotICAgIE5vZGUgKkRpbUV4cHIgPSBwYXJzZUV4cHIoKTsKKyAgICBOb2RlICpEaW1FeHByID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgIGlmIChEaW1FeHByID09IG51bGxwdHIpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoIWNvbnN1bWVJZignXycpKQpAQCAtMzMxMSwyMCArMzM0NywyMSBAQAogICAgIERpbWVuc2lvbiA9IERpbUV4cHI7CiAgIH0KIAotICBOb2RlICpUeSA9IHBhcnNlVHlwZSgpOworICBOb2RlICpUeSA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgaWYgKFR5ID09IG51bGxwdHIpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIHJldHVybiBtYWtlPEFycmF5VHlwZT4oVHksIERpbWVuc2lvbik7CiB9CiAKIC8vIDxwb2ludGVyLXRvLW1lbWJlci10eXBlPiA6Oj0gTSA8Y2xhc3MgdHlwZT4gPG1lbWJlciB0eXBlPgotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IE5vZGUgKkRiPEFsbG9jPjo6cGFyc2VQb2ludGVyVG9NZW1iZXJUeXBlKCkgewordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEFsbG9jPgorTm9kZSAqQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlUG9pbnRlclRvTWVtYmVyVHlwZSgpIHsKICAgaWYgKCFjb25zdW1lSWYoJ00nKSkKICAgICByZXR1cm4gbnVsbHB0cjsKLSAgTm9kZSAqQ2xhc3NUeXBlID0gcGFyc2VUeXBlKCk7CisgIE5vZGUgKkNsYXNzVHlwZSA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgaWYgKENsYXNzVHlwZSA9PSBudWxscHRyKQogICAgIHJldHVybiBudWxscHRyOwotICBOb2RlICpNZW1iZXJUeXBlID0gcGFyc2VUeXBlKCk7CisgIE5vZGUgKk1lbWJlclR5cGUgPSBnZXREZXJpdmVkKCkucGFyc2VUeXBlKCk7CiAgIGlmIChNZW1iZXJUeXBlID09IG51bGxwdHIpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIHJldHVybiBtYWtlPFBvaW50ZXJUb01lbWJlclR5cGU+KENsYXNzVHlwZSwgTWVtYmVyVHlwZSk7CkBAIC0zMzM0LDcgKzMzNzEsOCBAQAogLy8gICAgICAgICAgICAgICAgICAgOjo9IFRzIDxuYW1lPiAgIyBkZXBlbmRlbnQgZWxhYm9yYXRlZCB0eXBlIHNwZWNpZmllciB1c2luZyAnc3RydWN0JyBvciAnY2xhc3MnCiAvLyAgICAgICAgICAgICAgICAgICA6Oj0gVHUgPG5hbWU+ICAjIGRlcGVuZGVudCBlbGFib3JhdGVkIHR5cGUgc3BlY2lmaWVyIHVzaW5nICd1bmlvbicKIC8vICAgICAgICAgICAgICAgICAgIDo6PSBUZSA8bmFtZT4gICMgZGVwZW5kZW50IGVsYWJvcmF0ZWQgdHlwZSBzcGVjaWZpZXIgdXNpbmcgJ2VudW0nCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZUNsYXNzRW51bVR5cGUoKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICpBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPERlcml2ZWQsIEFsbG9jPjo6cGFyc2VDbGFzc0VudW1UeXBlKCkgewogICBTdHJpbmdWaWV3IEVsYWJTcGVmOwogICBpZiAoY29uc3VtZUlmKCJUcyIpKQogICAgIEVsYWJTcGVmID0gInN0cnVjdCI7CkBAIC0zMzQzLDcgKzMzODEsNyBAQAogICBlbHNlIGlmIChjb25zdW1lSWYoIlRlIikpCiAgICAgRWxhYlNwZWYgPSAiZW51bSI7CiAKLSAgTm9kZSAqTmFtZSA9IHBhcnNlTmFtZSgpOworICBOb2RlICpOYW1lID0gZ2V0RGVyaXZlZCgpLnBhcnNlTmFtZSgpOwogICBpZiAoTmFtZSA9PSBudWxscHRyKQogICAgIHJldHVybiBudWxscHRyOwogCkBAIC0zMzU2LDcgKzMzOTQsOCBAQAogLy8gPHF1YWxpZmllZC10eXBlPiAgICAgOjo9IDxxdWFsaWZpZXJzPiA8dHlwZT4KIC8vIDxxdWFsaWZpZXJzPiA6Oj0gPGV4dGVuZGVkLXF1YWxpZmllcj4qIDxDVi1xdWFsaWZpZXJzPgogLy8gPGV4dGVuZGVkLXF1YWxpZmllcj4gOjo9IFUgPHNvdXJjZS1uYW1lPiBbPHRlbXBsYXRlLWFyZ3M+XSAjIHZlbmRvciBleHRlbmRlZCB0eXBlIHF1YWxpZmllcgotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IE5vZGUgKkRiPEFsbG9jPjo6cGFyc2VRdWFsaWZpZWRUeXBlKCkgewordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEFsbG9jPgorTm9kZSAqQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlUXVhbGlmaWVkVHlwZSgpIHsKICAgaWYgKGNvbnN1bWVJZignVScpKSB7CiAgICAgU3RyaW5nVmlldyBRdWFsID0gcGFyc2VCYXJlU291cmNlTmFtZSgpOwogICAgIGlmIChRdWFsLmVtcHR5KCkpCkBAIC0zMzc1LDIwICszNDE0LDIwIEBACiAgICAgICB9CiAgICAgICBpZiAoUHJvdG8uZW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICBOb2RlICpDaGlsZCA9IHBhcnNlUXVhbGlmaWVkVHlwZSgpOworICAgICAgTm9kZSAqQ2hpbGQgPSBnZXREZXJpdmVkKCkucGFyc2VRdWFsaWZpZWRUeXBlKCk7CiAgICAgICBpZiAoQ2hpbGQgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICByZXR1cm4gbWFrZTxPYmpDUHJvdG9OYW1lPihDaGlsZCwgUHJvdG8pOwogICAgIH0KIAotICAgIE5vZGUgKkNoaWxkID0gcGFyc2VRdWFsaWZpZWRUeXBlKCk7CisgICAgTm9kZSAqQ2hpbGQgPSBnZXREZXJpdmVkKCkucGFyc2VRdWFsaWZpZWRUeXBlKCk7CiAgICAgaWYgKENoaWxkID09IG51bGxwdHIpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gbWFrZTxWZW5kb3JFeHRRdWFsVHlwZT4oQ2hpbGQsIFF1YWwpOwogICB9CiAKICAgUXVhbGlmaWVycyBRdWFscyA9IHBhcnNlQ1ZRdWFsaWZpZXJzKCk7Ci0gIE5vZGUgKlR5ID0gcGFyc2VUeXBlKCk7CisgIE5vZGUgKlR5ID0gZ2V0RGVyaXZlZCgpLnBhcnNlVHlwZSgpOwogICBpZiAoVHkgPT0gbnVsbHB0cikKICAgICByZXR1cm4gbnVsbHB0cjsKICAgaWYgKFF1YWxzICE9IFF1YWxOb25lKQpAQCAtMzQxNiwxMiArMzQ1NSwxMCBAQAogLy8KIC8vIDxvYmpjLW5hbWU+IDo6PSA8azAgbnVtYmVyPiBvYmpjcHJvdG8gPGsxIG51bWJlcj4gPGlkZW50aWZpZXI+ICAjIGswID0gOSArIDxudW1iZXIgb2YgZGlnaXRzIGluIGsxPiArIGsxCiAvLyA8b2JqYy10eXBlPiA6Oj0gPHNvdXJjZS1uYW1lPiAgIyBQVTwxMSs+b2JqY3Byb3RvIDExb2JqY19vYmplY3Q8c291cmNlLW5hbWU+IDExb2JqY19vYmplY3QgLT4gaWQ8c291cmNlLW5hbWU+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZVR5cGUoKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICpBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPERlcml2ZWQsIEFsbG9jPjo6cGFyc2VUeXBlKCkgewogICBOb2RlICpSZXN1bHQgPSBudWxscHRyOwogCi0gIGlmIChUeXBlQ2FsbGJhY2sgIT0gbnVsbHB0cikKLSAgICBUeXBlQ2FsbGJhY2soVHlwZUNhbGxiYWNrQ29udGV4dCwgRmlyc3QpOwotCiAgIHN3aXRjaCAobG9vaygpKSB7CiAgIC8vICAgICAgICAgICAgIDo6PSA8cXVhbGlmaWVkLXR5cGU+CiAgIGNhc2UgJ3InOgpAQCAtMzQzNiwxMyArMzQ3MywxMyBAQAogICAgICAgICAobG9vayhBZnRlclF1YWxzKSA9PSAnRCcgJiYKICAgICAgICAgIChsb29rKEFmdGVyUXVhbHMgKyAxKSA9PSAnbycgfHwgbG9vayhBZnRlclF1YWxzICsgMSkgPT0gJ08nIHx8CiAgICAgICAgICAgbG9vayhBZnRlclF1YWxzICsgMSkgPT0gJ3cnIHx8IGxvb2soQWZ0ZXJRdWFscyArIDEpID09ICd4JykpKSB7Ci0gICAgICBSZXN1bHQgPSBwYXJzZUZ1bmN0aW9uVHlwZSgpOworICAgICAgUmVzdWx0ID0gZ2V0RGVyaXZlZCgpLnBhcnNlRnVuY3Rpb25UeXBlKCk7CiAgICAgICBicmVhazsKICAgICB9Ci0gICAgTExWTV9GQUxMVEhST1VHSDsKKyAgICBERU1BTkdMRV9GQUxMVEhST1VHSDsKICAgfQogICBjYXNlICdVJzogewotICAgIFJlc3VsdCA9IHBhcnNlUXVhbGlmaWVkVHlwZSgpOworICAgIFJlc3VsdCA9IGdldERlcml2ZWQoKS5wYXJzZVF1YWxpZmllZFR5cGUoKTsKICAgICBicmVhazsKICAgfQogICAvLyA8YnVpbHRpbi10eXBlPiA6Oj0gdiAgICAjIHZvaWQKQEAgLTM1ODAsMTggKzM2MTcsMTggQEAKICAgICAvLyAgICAgICAgICAgICA6Oj0gPGRlY2x0eXBlPgogICAgIGNhc2UgJ3QnOgogICAgIGNhc2UgJ1QnOiB7Ci0gICAgICBSZXN1bHQgPSBwYXJzZURlY2x0eXBlKCk7CisgICAgICBSZXN1bHQgPSBnZXREZXJpdmVkKCkucGFyc2VEZWNsdHlwZSgpOwogICAgICAgYnJlYWs7CiAgICAgfQogICAgIC8vIGV4dGVuc2lvbiAgIDo6PSA8dmVjdG9yLXR5cGU+ICMgPHZlY3Rvci10eXBlPiBzdGFydHMgd2l0aCBEdgogICAgIGNhc2UgJ3YnOiB7Ci0gICAgICBSZXN1bHQgPSBwYXJzZVZlY3RvclR5cGUoKTsKKyAgICAgIFJlc3VsdCA9IGdldERlcml2ZWQoKS5wYXJzZVZlY3RvclR5cGUoKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgICAvLyAgICAgICAgICAgOjo9IERwIDx0eXBlPiAgICAgICAjIHBhY2sgZXhwYW5zaW9uIChDKysweCkKICAgICBjYXNlICdwJzogewogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIE5vZGUgKkNoaWxkID0gcGFyc2VUeXBlKCk7CisgICAgICBOb2RlICpDaGlsZCA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgICAgIGlmICghQ2hpbGQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgUmVzdWx0ID0gbWFrZTxQYXJhbWV0ZXJQYWNrRXhwYW5zaW9uPihDaGlsZCk7CkBAIC0zNjAzLDM0ICszNjQwLDM0IEBACiAgICAgY2FzZSAndyc6CiAgICAgLy8gVHJhbnNhY3Rpb24gc2FmZSBmdW5jdGlvbiB0eXBlLgogICAgIGNhc2UgJ3gnOgotICAgICAgUmVzdWx0ID0gcGFyc2VGdW5jdGlvblR5cGUoKTsKKyAgICAgIFJlc3VsdCA9IGdldERlcml2ZWQoKS5wYXJzZUZ1bmN0aW9uVHlwZSgpOwogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGJyZWFrOwogICAvLyAgICAgICAgICAgICA6Oj0gPGZ1bmN0aW9uLXR5cGU+CiAgIGNhc2UgJ0YnOiB7Ci0gICAgUmVzdWx0ID0gcGFyc2VGdW5jdGlvblR5cGUoKTsKKyAgICBSZXN1bHQgPSBnZXREZXJpdmVkKCkucGFyc2VGdW5jdGlvblR5cGUoKTsKICAgICBicmVhazsKICAgfQogICAvLyAgICAgICAgICAgICA6Oj0gPGFycmF5LXR5cGU+CiAgIGNhc2UgJ0EnOiB7Ci0gICAgUmVzdWx0ID0gcGFyc2VBcnJheVR5cGUoKTsKKyAgICBSZXN1bHQgPSBnZXREZXJpdmVkKCkucGFyc2VBcnJheVR5cGUoKTsKICAgICBicmVhazsKICAgfQogICAvLyAgICAgICAgICAgICA6Oj0gPHBvaW50ZXItdG8tbWVtYmVyLXR5cGU+CiAgIGNhc2UgJ00nOiB7Ci0gICAgUmVzdWx0ID0gcGFyc2VQb2ludGVyVG9NZW1iZXJUeXBlKCk7CisgICAgUmVzdWx0ID0gZ2V0RGVyaXZlZCgpLnBhcnNlUG9pbnRlclRvTWVtYmVyVHlwZSgpOwogICAgIGJyZWFrOwogICB9CiAgIC8vICAgICAgICAgICAgIDo6PSA8dGVtcGxhdGUtcGFyYW0+CiAgIGNhc2UgJ1QnOiB7CiAgICAgLy8gVGhpcyBjb3VsZCBiZSBhbiBlbGFib3JhdGUgdHlwZSBzcGVjaWZpZXIgb24gYSA8Y2xhc3MtZW51bS10eXBlPi4KICAgICBpZiAobG9vaygxKSA9PSAncycgfHwgbG9vaygxKSA9PSAndScgfHwgbG9vaygxKSA9PSAnZScpIHsKLSAgICAgIFJlc3VsdCA9IHBhcnNlQ2xhc3NFbnVtVHlwZSgpOworICAgICAgUmVzdWx0ID0gZ2V0RGVyaXZlZCgpLnBhcnNlQ2xhc3NFbnVtVHlwZSgpOwogICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgUmVzdWx0ID0gcGFyc2VUZW1wbGF0ZVBhcmFtKCk7CisgICAgUmVzdWx0ID0gZ2V0RGVyaXZlZCgpLnBhcnNlVGVtcGxhdGVQYXJhbSgpOwogICAgIGlmIChSZXN1bHQgPT0gbnVsbHB0cikKICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0zNjQ1LDcgKzM2ODIsNyBAQAogICAgIC8vIHBhcnNlIHRoZW0sIHRha2UgdGhlIHNlY29uZCBwcm9kdWN0aW9uLgogCiAgICAgaWYgKFRyeVRvUGFyc2VUZW1wbGF0ZUFyZ3MgJiYgbG9vaygpID09ICdJJykgewotICAgICAgTm9kZSAqVEEgPSBwYXJzZVRlbXBsYXRlQXJncygpOworICAgICAgTm9kZSAqVEEgPSBnZXREZXJpdmVkKCkucGFyc2VUZW1wbGF0ZUFyZ3MoKTsKICAgICAgIGlmIChUQSA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgIFJlc3VsdCA9IG1ha2U8TmFtZVdpdGhUZW1wbGF0ZUFyZ3M+KFJlc3VsdCwgVEEpOwpAQCAtMzY1NSw3ICszNjkyLDcgQEAKICAgLy8gICAgICAgICAgICAgOjo9IFAgPHR5cGU+ICAgICAgICAjIHBvaW50ZXIKICAgY2FzZSAnUCc6IHsKICAgICArK0ZpcnN0OwotICAgIE5vZGUgKlB0ciA9IHBhcnNlVHlwZSgpOworICAgIE5vZGUgKlB0ciA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgICBpZiAoUHRyID09IG51bGxwdHIpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBSZXN1bHQgPSBtYWtlPFBvaW50ZXJUeXBlPihQdHIpOwpAQCAtMzY2NCw3ICszNzAxLDcgQEAKICAgLy8gICAgICAgICAgICAgOjo9IFIgPHR5cGU+ICAgICAgICAjIGwtdmFsdWUgcmVmZXJlbmNlCiAgIGNhc2UgJ1InOiB7CiAgICAgKytGaXJzdDsKLSAgICBOb2RlICpSZWYgPSBwYXJzZVR5cGUoKTsKKyAgICBOb2RlICpSZWYgPSBnZXREZXJpdmVkKCkucGFyc2VUeXBlKCk7CiAgICAgaWYgKFJlZiA9PSBudWxscHRyKQogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVzdWx0ID0gbWFrZTxSZWZlcmVuY2VUeXBlPihSZWYsIFJlZmVyZW5jZUtpbmQ6OkxWYWx1ZSk7CkBAIC0zNjczLDcgKzM3MTAsNyBAQAogICAvLyAgICAgICAgICAgICA6Oj0gTyA8dHlwZT4gICAgICAgICMgci12YWx1ZSByZWZlcmVuY2UgKEMrKzExKQogICBjYXNlICdPJzogewogICAgICsrRmlyc3Q7Ci0gICAgTm9kZSAqUmVmID0gcGFyc2VUeXBlKCk7CisgICAgTm9kZSAqUmVmID0gZ2V0RGVyaXZlZCgpLnBhcnNlVHlwZSgpOwogICAgIGlmIChSZWYgPT0gbnVsbHB0cikKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlc3VsdCA9IG1ha2U8UmVmZXJlbmNlVHlwZT4oUmVmLCBSZWZlcmVuY2VLaW5kOjpSVmFsdWUpOwpAQCAtMzY4Miw3ICszNzE5LDcgQEAKICAgLy8gICAgICAgICAgICAgOjo9IEMgPHR5cGU+ICAgICAgICAjIGNvbXBsZXggcGFpciAoQzk5KQogICBjYXNlICdDJzogewogICAgICsrRmlyc3Q7Ci0gICAgTm9kZSAqUCA9IHBhcnNlVHlwZSgpOworICAgIE5vZGUgKlAgPSBnZXREZXJpdmVkKCkucGFyc2VUeXBlKCk7CiAgICAgaWYgKFAgPT0gbnVsbHB0cikKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlc3VsdCA9IG1ha2U8UG9zdGZpeFF1YWxpZmllZFR5cGU+KFAsICIgY29tcGxleCIpOwpAQCAtMzY5MSw3ICszNzI4LDcgQEAKICAgLy8gICAgICAgICAgICAgOjo9IEcgPHR5cGU+ICAgICAgICAjIGltYWdpbmFyeSAoQzk5KQogICBjYXNlICdHJzogewogICAgICsrRmlyc3Q7Ci0gICAgTm9kZSAqUCA9IHBhcnNlVHlwZSgpOworICAgIE5vZGUgKlAgPSBnZXREZXJpdmVkKCkucGFyc2VUeXBlKCk7CiAgICAgaWYgKFAgPT0gbnVsbHB0cikKICAgICAgIHJldHVybiBQOwogICAgIFJlc3VsdCA9IG1ha2U8UG9zdGZpeFF1YWxpZmllZFR5cGU+KFAsICIgaW1hZ2luYXJ5Iik7CkBAIC0zNzAwLDcgKzM3MzcsNyBAQAogICAvLyAgICAgICAgICAgICA6Oj0gPHN1YnN0aXR1dGlvbj4gICMgU2VlIENvbXByZXNzaW9uIGJlbG93CiAgIGNhc2UgJ1MnOiB7CiAgICAgaWYgKGxvb2soMSkgJiYgbG9vaygxKSAhPSAndCcpIHsKLSAgICAgIE5vZGUgKlN1YiA9IHBhcnNlU3Vic3RpdHV0aW9uKCk7CisgICAgICBOb2RlICpTdWIgPSBnZXREZXJpdmVkKCkucGFyc2VTdWJzdGl0dXRpb24oKTsKICAgICAgIGlmIChTdWIgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTM3MTUsNyArMzc1Miw3IEBACiAgICAgICAvLyBwYXJzZSB0aGVtLCB0YWtlIHRoZSBzZWNvbmQgcHJvZHVjdGlvbi4KIAogICAgICAgaWYgKFRyeVRvUGFyc2VUZW1wbGF0ZUFyZ3MgJiYgbG9vaygpID09ICdJJykgewotICAgICAgICBOb2RlICpUQSA9IHBhcnNlVGVtcGxhdGVBcmdzKCk7CisgICAgICAgIE5vZGUgKlRBID0gZ2V0RGVyaXZlZCgpLnBhcnNlVGVtcGxhdGVBcmdzKCk7CiAgICAgICAgIGlmIChUQSA9PSBudWxscHRyKQogICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBSZXN1bHQgPSBtYWtlPE5hbWVXaXRoVGVtcGxhdGVBcmdzPihTdWIsIFRBKTsKQEAgLTM3MjYsMTEgKzM3NjMsMTEgQEAKICAgICAgIC8vIHN1YnN0aXR1dGlvbiB0YWJsZS4KICAgICAgIHJldHVybiBTdWI7CiAgICAgfQotICAgIExMVk1fRkFMTFRIUk9VR0g7CisgICAgREVNQU5HTEVfRkFMTFRIUk9VR0g7CiAgIH0KICAgLy8gICAgICAgIDo6PSA8Y2xhc3MtZW51bS10eXBlPgogICBkZWZhdWx0OiB7Ci0gICAgUmVzdWx0ID0gcGFyc2VDbGFzc0VudW1UeXBlKCk7CisgICAgUmVzdWx0ID0gZ2V0RGVyaXZlZCgpLnBhcnNlQ2xhc3NFbnVtVHlwZSgpOwogICAgIGJyZWFrOwogICB9CiAgIH0KQEAgLTM3NDMsMjQgKzM3ODAsMjggQEAKICAgcmV0dXJuIFJlc3VsdDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IE5vZGUgKkRiPEFsbG9jPjo6cGFyc2VQcmVmaXhFeHByKFN0cmluZ1ZpZXcgS2luZCkgewotICBOb2RlICpFID0gcGFyc2VFeHByKCk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICpBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPERlcml2ZWQsIEFsbG9jPjo6cGFyc2VQcmVmaXhFeHByKFN0cmluZ1ZpZXcgS2luZCkgeworICBOb2RlICpFID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICBpZiAoRSA9PSBudWxscHRyKQogICAgIHJldHVybiBudWxscHRyOwogICByZXR1cm4gbWFrZTxQcmVmaXhFeHByPihLaW5kLCBFKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IE5vZGUgKkRiPEFsbG9jPjo6cGFyc2VCaW5hcnlFeHByKFN0cmluZ1ZpZXcgS2luZCkgewotICBOb2RlICpMSFMgPSBwYXJzZUV4cHIoKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBBbGxvYz4KK05vZGUgKkFic3RyYWN0TWFuZ2xpbmdQYXJzZXI8RGVyaXZlZCwgQWxsb2M+OjpwYXJzZUJpbmFyeUV4cHIoU3RyaW5nVmlldyBLaW5kKSB7CisgIE5vZGUgKkxIUyA9IGdldERlcml2ZWQoKS5wYXJzZUV4cHIoKTsKICAgaWYgKExIUyA9PSBudWxscHRyKQogICAgIHJldHVybiBudWxscHRyOwotICBOb2RlICpSSFMgPSBwYXJzZUV4cHIoKTsKKyAgTm9kZSAqUkhTID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICBpZiAoUkhTID09IG51bGxwdHIpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIHJldHVybiBtYWtlPEJpbmFyeUV4cHI+KExIUywgS2luZCwgUkhTKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IE5vZGUgKkRiPEFsbG9jPjo6cGFyc2VJbnRlZ2VyTGl0ZXJhbChTdHJpbmdWaWV3IExpdCkgewordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEFsbG9jPgorTm9kZSAqCitBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPERlcml2ZWQsIEFsbG9jPjo6cGFyc2VJbnRlZ2VyTGl0ZXJhbChTdHJpbmdWaWV3IExpdCkgewogICBTdHJpbmdWaWV3IFRtcCA9IHBhcnNlTnVtYmVyKHRydWUpOwogICBpZiAoIVRtcC5lbXB0eSgpICYmIGNvbnN1bWVJZignRScpKQogICAgIHJldHVybiBtYWtlPEludGVnZXJMaXRlcmFsPihMaXQsIFRtcCk7CkBAIC0zNzY4LDcgKzM4MDksOCBAQAogfQogCiAvLyA8Q1YtUXVhbGlmaWVycz4gOjo9IFtyXSBbVl0gW0tdCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gUXVhbGlmaWVycyBEYjxBbGxvYz46OnBhcnNlQ1ZRdWFsaWZpZXJzKCkgewordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBEZXJpdmVkPgorUXVhbGlmaWVycyBBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPEFsbG9jLCBEZXJpdmVkPjo6cGFyc2VDVlF1YWxpZmllcnMoKSB7CiAgIFF1YWxpZmllcnMgQ1ZSID0gUXVhbE5vbmU7CiAgIGlmIChjb25zdW1lSWYoJ3InKSkKICAgICBDVlIgfD0gUXVhbFJlc3RyaWN0OwpAQCAtMzc4Myw3ICszODI1LDggQEAKIC8vICAgICAgICAgICAgICAgICAgOjo9IGZwIDx0b3AtbGV2ZWwgQ1YtUXVhbGlmaWVycz4gPHBhcmFtZXRlci0yIG5vbi1uZWdhdGl2ZSBudW1iZXI+IF8gICAjIEwgPT0gMCwgc2Vjb25kIGFuZCBsYXRlciBwYXJhbWV0ZXJzCiAvLyAgICAgICAgICAgICAgICAgIDo6PSBmTCA8TC0xIG5vbi1uZWdhdGl2ZSBudW1iZXI+IHAgPHRvcC1sZXZlbCBDVi1RdWFsaWZpZXJzPiBfICAgICAgICAgIyBMID4gMCwgZmlyc3QgcGFyYW1ldGVyCiAvLyAgICAgICAgICAgICAgICAgIDo6PSBmTCA8TC0xIG5vbi1uZWdhdGl2ZSBudW1iZXI+IHAgPHRvcC1sZXZlbCBDVi1RdWFsaWZpZXJzPiA8cGFyYW1ldGVyLTIgbm9uLW5lZ2F0aXZlIG51bWJlcj4gXyAgICMgTCA+IDAsIHNlY29uZCBhbmQgbGF0ZXIgcGFyYW1ldGVycwotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IE5vZGUgKkRiPEFsbG9jPjo6cGFyc2VGdW5jdGlvblBhcmFtKCkgewordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEFsbG9jPgorTm9kZSAqQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlRnVuY3Rpb25QYXJhbSgpIHsKICAgaWYgKGNvbnN1bWVJZigiZnAiKSkgewogICAgIHBhcnNlQ1ZRdWFsaWZpZXJzKCk7CiAgICAgU3RyaW5nVmlldyBOdW0gPSBwYXJzZU51bWJlcigpOwpAQCAtMzgxMCwyNiArMzg1MywyNyBAQAogLy8gW2dzXSBuYSA8ZXhwcmVzc2lvbj4qIF8gPHR5cGU+IEUgICAgICAgICAgICAgICAgICAgICAjIG5ld1tdIChleHByLWxpc3QpIHR5cGUKIC8vIFtnc10gbmEgPGV4cHJlc3Npb24+KiBfIDx0eXBlPiA8aW5pdGlhbGl6ZXI+ICAgICAgICAgIyBuZXdbXSAoZXhwci1saXN0KSB0eXBlIChpbml0KQogLy8gPGluaXRpYWxpemVyPiA6Oj0gcGkgPGV4cHJlc3Npb24+KiBFICAgICAgICAgICAgICAgICAjIHBhcmVudGhlc2l6ZWQgaW5pdGlhbGl6YXRpb24KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPiBOb2RlICpEYjxBbGxvYz46OnBhcnNlTmV3RXhwcigpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBBbGxvYz4KK05vZGUgKkFic3RyYWN0TWFuZ2xpbmdQYXJzZXI8RGVyaXZlZCwgQWxsb2M+OjpwYXJzZU5ld0V4cHIoKSB7CiAgIGJvb2wgR2xvYmFsID0gY29uc3VtZUlmKCJncyIpOwogICBib29sIElzQXJyYXkgPSBsb29rKDEpID09ICdhJzsKICAgaWYgKCFjb25zdW1lSWYoIm53IikgJiYgIWNvbnN1bWVJZigibmEiKSkKICAgICByZXR1cm4gbnVsbHB0cjsKICAgc2l6ZV90IEV4cHJzID0gTmFtZXMuc2l6ZSgpOwogICB3aGlsZSAoIWNvbnN1bWVJZignXycpKSB7Ci0gICAgTm9kZSAqRXggPSBwYXJzZUV4cHIoKTsKKyAgICBOb2RlICpFeCA9IGdldERlcml2ZWQoKS5wYXJzZUV4cHIoKTsKICAgICBpZiAoRXggPT0gbnVsbHB0cikKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIE5hbWVzLnB1c2hfYmFjayhFeCk7CiAgIH0KICAgTm9kZUFycmF5IEV4cHJMaXN0ID0gcG9wVHJhaWxpbmdOb2RlQXJyYXkoRXhwcnMpOwotICBOb2RlICpUeSA9IHBhcnNlVHlwZSgpOworICBOb2RlICpUeSA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgaWYgKFR5ID09IG51bGxwdHIpCiAgICAgcmV0dXJuIFR5OwogICBpZiAoY29uc3VtZUlmKCJwaSIpKSB7CiAgICAgc2l6ZV90IEluaXRzQmVnaW4gPSBOYW1lcy5zaXplKCk7CiAgICAgd2hpbGUgKCFjb25zdW1lSWYoJ0UnKSkgewotICAgICAgTm9kZSAqSW5pdCA9IHBhcnNlRXhwcigpOworICAgICAgTm9kZSAqSW5pdCA9IGdldERlcml2ZWQoKS5wYXJzZUV4cHIoKTsKICAgICAgIGlmIChJbml0ID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBJbml0OwogICAgICAgTmFtZXMucHVzaF9iYWNrKEluaXQpOwpAQCAtMzg0MywxMyArMzg4NywxNCBAQAogCiAvLyBjdiA8dHlwZT4gPGV4cHJlc3Npb24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVyc2lvbiB3aXRoIG9uZSBhcmd1bWVudAogLy8gY3YgPHR5cGU+IF8gPGV4cHJlc3Npb24+KiBFICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnNpb24gd2l0aCBhIGRpZmZlcmVudCBudW1iZXIgb2YgYXJndW1lbnRzCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZUNvbnZlcnNpb25FeHByKCkgewordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEFsbG9jPgorTm9kZSAqQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlQ29udmVyc2lvbkV4cHIoKSB7CiAgIGlmICghY29uc3VtZUlmKCJjdiIpKQogICAgIHJldHVybiBudWxscHRyOwogICBOb2RlICpUeTsKICAgewogICAgIFN3YXBBbmRSZXN0b3JlPGJvb2w+IFNhdmVUZW1wKFRyeVRvUGFyc2VUZW1wbGF0ZUFyZ3MsIGZhbHNlKTsKLSAgICBUeSA9IHBhcnNlVHlwZSgpOworICAgIFR5ID0gZ2V0RGVyaXZlZCgpLnBhcnNlVHlwZSgpOwogICB9CiAKICAgaWYgKFR5ID09IG51bGxwdHIpCkBAIC0zODU4LDcgKzM5MDMsNyBAQAogICBpZiAoY29uc3VtZUlmKCdfJykpIHsKICAgICBzaXplX3QgRXhwcnNCZWdpbiA9IE5hbWVzLnNpemUoKTsKICAgICB3aGlsZSAoIWNvbnN1bWVJZignRScpKSB7Ci0gICAgICBOb2RlICpFID0gcGFyc2VFeHByKCk7CisgICAgICBOb2RlICpFID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKEUgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIEU7CiAgICAgICBOYW1lcy5wdXNoX2JhY2soRSk7CkBAIC0zODY3LDcgKzM5MTIsNyBAQAogICAgIHJldHVybiBtYWtlPENvbnZlcnNpb25FeHByPihUeSwgRXhwcnMpOwogICB9CiAKLSAgTm9kZSAqRVsxXSA9IHtwYXJzZUV4cHIoKX07CisgIE5vZGUgKkVbMV0gPSB7Z2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpfTsKICAgaWYgKEVbMF0gPT0gbnVsbHB0cikKICAgICByZXR1cm4gbnVsbHB0cjsKICAgcmV0dXJuIG1ha2U8Q29udmVyc2lvbkV4cHI+KFR5LCBtYWtlTm9kZUFycmF5KEUsIEUgKyAxKSk7CkBAIC0zODc5LDEzICszOTI0LDE0IEBACiAvLyAgICAgICAgICAgICAgICA6Oj0gTCA8bnVsbHB0ciB0eXBlPiBFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBudWxscHRyIGxpdGVyYWwgKGkuZS4sICJMRG5FIikKIC8vIEZJWE1FOiAgICAgICAgIDo6PSBMIDx0eXBlPiA8cmVhbC1wYXJ0IGZsb2F0PiBfIDxpbWFnLXBhcnQgZmxvYXQ+IEUgICAjIGNvbXBsZXggZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbCAoQyAyMDAwKQogLy8gICAgICAgICAgICAgICAgOjo9IEwgPG1hbmdsZWQtbmFtZT4gRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZXh0ZXJuYWwgbmFtZQotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IE5vZGUgKkRiPEFsbG9jPjo6cGFyc2VFeHByUHJpbWFyeSgpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBBbGxvYz4KK05vZGUgKkFic3RyYWN0TWFuZ2xpbmdQYXJzZXI8RGVyaXZlZCwgQWxsb2M+OjpwYXJzZUV4cHJQcmltYXJ5KCkgewogICBpZiAoIWNvbnN1bWVJZignTCcpKQogICAgIHJldHVybiBudWxscHRyOwogICBzd2l0Y2ggKGxvb2soKSkgewogICBjYXNlICd3JzoKICAgICArK0ZpcnN0OwotICAgIHJldHVybiBwYXJzZUludGVnZXJMaXRlcmFsKCJ3Y2hhcl90Iik7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUludGVnZXJMaXRlcmFsKCJ3Y2hhcl90Iik7CiAgIGNhc2UgJ2InOgogICAgIGlmIChjb25zdW1lSWYoImIwRSIpKQogICAgICAgcmV0dXJuIG1ha2U8Qm9vbEV4cHI+KDApOwpAQCAtMzg5NCw1NSArMzk0MCw1NSBAQAogICAgIHJldHVybiBudWxscHRyOwogICBjYXNlICdjJzoKICAgICArK0ZpcnN0OwotICAgIHJldHVybiBwYXJzZUludGVnZXJMaXRlcmFsKCJjaGFyIik7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUludGVnZXJMaXRlcmFsKCJjaGFyIik7CiAgIGNhc2UgJ2EnOgogICAgICsrRmlyc3Q7Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdlckxpdGVyYWwoInNpZ25lZCBjaGFyIik7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUludGVnZXJMaXRlcmFsKCJzaWduZWQgY2hhciIpOwogICBjYXNlICdoJzoKICAgICArK0ZpcnN0OwotICAgIHJldHVybiBwYXJzZUludGVnZXJMaXRlcmFsKCJ1bnNpZ25lZCBjaGFyIik7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUludGVnZXJMaXRlcmFsKCJ1bnNpZ25lZCBjaGFyIik7CiAgIGNhc2UgJ3MnOgogICAgICsrRmlyc3Q7Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdlckxpdGVyYWwoInNob3J0Iik7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUludGVnZXJMaXRlcmFsKCJzaG9ydCIpOwogICBjYXNlICd0JzoKICAgICArK0ZpcnN0OwotICAgIHJldHVybiBwYXJzZUludGVnZXJMaXRlcmFsKCJ1bnNpZ25lZCBzaG9ydCIpOworICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VJbnRlZ2VyTGl0ZXJhbCgidW5zaWduZWQgc2hvcnQiKTsKICAgY2FzZSAnaSc6CiAgICAgKytGaXJzdDsKLSAgICByZXR1cm4gcGFyc2VJbnRlZ2VyTGl0ZXJhbCgiIik7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUludGVnZXJMaXRlcmFsKCIiKTsKICAgY2FzZSAnaic6CiAgICAgKytGaXJzdDsKLSAgICByZXR1cm4gcGFyc2VJbnRlZ2VyTGl0ZXJhbCgidSIpOworICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VJbnRlZ2VyTGl0ZXJhbCgidSIpOwogICBjYXNlICdsJzoKICAgICArK0ZpcnN0OwotICAgIHJldHVybiBwYXJzZUludGVnZXJMaXRlcmFsKCJsIik7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUludGVnZXJMaXRlcmFsKCJsIik7CiAgIGNhc2UgJ20nOgogICAgICsrRmlyc3Q7Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdlckxpdGVyYWwoInVsIik7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUludGVnZXJMaXRlcmFsKCJ1bCIpOwogICBjYXNlICd4JzoKICAgICArK0ZpcnN0OwotICAgIHJldHVybiBwYXJzZUludGVnZXJMaXRlcmFsKCJsbCIpOworICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VJbnRlZ2VyTGl0ZXJhbCgibGwiKTsKICAgY2FzZSAneSc6CiAgICAgKytGaXJzdDsKLSAgICByZXR1cm4gcGFyc2VJbnRlZ2VyTGl0ZXJhbCgidWxsIik7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUludGVnZXJMaXRlcmFsKCJ1bGwiKTsKICAgY2FzZSAnbic6CiAgICAgKytGaXJzdDsKLSAgICByZXR1cm4gcGFyc2VJbnRlZ2VyTGl0ZXJhbCgiX19pbnQxMjgiKTsKKyAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlSW50ZWdlckxpdGVyYWwoIl9faW50MTI4Iik7CiAgIGNhc2UgJ28nOgogICAgICsrRmlyc3Q7Ci0gICAgcmV0dXJuIHBhcnNlSW50ZWdlckxpdGVyYWwoInVuc2lnbmVkIF9faW50MTI4Iik7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUludGVnZXJMaXRlcmFsKCJ1bnNpZ25lZCBfX2ludDEyOCIpOwogICBjYXNlICdmJzoKICAgICArK0ZpcnN0OwotICAgIHJldHVybiBwYXJzZUZsb2F0aW5nTGl0ZXJhbDxmbG9hdD4oKTsKKyAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnRlbXBsYXRlIHBhcnNlRmxvYXRpbmdMaXRlcmFsPGZsb2F0PigpOwogICBjYXNlICdkJzoKICAgICArK0ZpcnN0OwotICAgIHJldHVybiBwYXJzZUZsb2F0aW5nTGl0ZXJhbDxkb3VibGU+KCk7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS50ZW1wbGF0ZSBwYXJzZUZsb2F0aW5nTGl0ZXJhbDxkb3VibGU+KCk7CiAgIGNhc2UgJ2UnOgogICAgICsrRmlyc3Q7Ci0gICAgcmV0dXJuIHBhcnNlRmxvYXRpbmdMaXRlcmFsPGxvbmcgZG91YmxlPigpOworICAgIHJldHVybiBnZXREZXJpdmVkKCkudGVtcGxhdGUgcGFyc2VGbG9hdGluZ0xpdGVyYWw8bG9uZyBkb3VibGU+KCk7CiAgIGNhc2UgJ18nOgogICAgIGlmIChjb25zdW1lSWYoIl9aIikpIHsKLSAgICAgIE5vZGUgKlIgPSBwYXJzZUVuY29kaW5nKCk7CisgICAgICBOb2RlICpSID0gZ2V0RGVyaXZlZCgpLnBhcnNlRW5jb2RpbmcoKTsKICAgICAgIGlmIChSICE9IG51bGxwdHIgJiYgY29uc3VtZUlmKCdFJykpCiAgICAgICAgIHJldHVybiBSOwogICAgIH0KQEAgLTM5NTMsNyArMzk5OSw3IEBACiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIGRlZmF1bHQ6IHsKICAgICAvLyBtaWdodCBiZSBuYW1lZCB0eXBlCi0gICAgTm9kZSAqVCA9IHBhcnNlVHlwZSgpOworICAgIE5vZGUgKlQgPSBnZXREZXJpdmVkKCkucGFyc2VUeXBlKCk7CiAgICAgaWYgKFQgPT0gbnVsbHB0cikKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFN0cmluZ1ZpZXcgTiA9IHBhcnNlTnVtYmVyKCk7CkBAIC0zOTczLDQ1ICs0MDE5LDQ2IEBACiAvLyAgICAgICAgICAgICAgICAgICAgIDo6PSBkaSA8ZmllbGQgc291cmNlLW5hbWU+IDxicmFjZWQtZXhwcmVzc2lvbj4gICAgIyAubmFtZSA9IGV4cHIKIC8vICAgICAgICAgICAgICAgICAgICAgOjo9IGR4IDxpbmRleCBleHByZXNzaW9uPiA8YnJhY2VkLWV4cHJlc3Npb24+ICAgICAjIFtleHByXSA9IGV4cHIKIC8vICAgICAgICAgICAgICAgICAgICAgOjo9IGRYIDxyYW5nZSBiZWdpbiBleHByZXNzaW9uPiA8cmFuZ2UgZW5kIGV4cHJlc3Npb24+IDxicmFjZWQtZXhwcmVzc2lvbj4KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPiBOb2RlICpEYjxBbGxvYz46OnBhcnNlQnJhY2VkRXhwcigpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBBbGxvYz4KK05vZGUgKkFic3RyYWN0TWFuZ2xpbmdQYXJzZXI8RGVyaXZlZCwgQWxsb2M+OjpwYXJzZUJyYWNlZEV4cHIoKSB7CiAgIGlmIChsb29rKCkgPT0gJ2QnKSB7CiAgICAgc3dpdGNoIChsb29rKDEpKSB7CiAgICAgY2FzZSAnaSc6IHsKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICBOb2RlICpGaWVsZCA9IHBhcnNlU291cmNlTmFtZSgvKk5hbWVTdGF0ZT0qL251bGxwdHIpOworICAgICAgTm9kZSAqRmllbGQgPSBnZXREZXJpdmVkKCkucGFyc2VTb3VyY2VOYW1lKC8qTmFtZVN0YXRlPSovbnVsbHB0cik7CiAgICAgICBpZiAoRmllbGQgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICBOb2RlICpJbml0ID0gcGFyc2VCcmFjZWRFeHByKCk7CisgICAgICBOb2RlICpJbml0ID0gZ2V0RGVyaXZlZCgpLnBhcnNlQnJhY2VkRXhwcigpOwogICAgICAgaWYgKEluaXQgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICByZXR1cm4gbWFrZTxCcmFjZWRFeHByPihGaWVsZCwgSW5pdCwgLyppc0FycmF5PSovZmFsc2UpOwogICAgIH0KICAgICBjYXNlICd4JzogewogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIE5vZGUgKkluZGV4ID0gcGFyc2VFeHByKCk7CisgICAgICBOb2RlICpJbmRleCA9IGdldERlcml2ZWQoKS5wYXJzZUV4cHIoKTsKICAgICAgIGlmIChJbmRleCA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgIE5vZGUgKkluaXQgPSBwYXJzZUJyYWNlZEV4cHIoKTsKKyAgICAgIE5vZGUgKkluaXQgPSBnZXREZXJpdmVkKCkucGFyc2VCcmFjZWRFeHByKCk7CiAgICAgICBpZiAoSW5pdCA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgIHJldHVybiBtYWtlPEJyYWNlZEV4cHI+KEluZGV4LCBJbml0LCAvKmlzQXJyYXk9Ki90cnVlKTsKICAgICB9CiAgICAgY2FzZSAnWCc6IHsKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICBOb2RlICpSYW5nZUJlZ2luID0gcGFyc2VFeHByKCk7CisgICAgICBOb2RlICpSYW5nZUJlZ2luID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKFJhbmdlQmVnaW4gPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICBOb2RlICpSYW5nZUVuZCA9IHBhcnNlRXhwcigpOworICAgICAgTm9kZSAqUmFuZ2VFbmQgPSBnZXREZXJpdmVkKCkucGFyc2VFeHByKCk7CiAgICAgICBpZiAoUmFuZ2VFbmQgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICBOb2RlICpJbml0ID0gcGFyc2VCcmFjZWRFeHByKCk7CisgICAgICBOb2RlICpJbml0ID0gZ2V0RGVyaXZlZCgpLnBhcnNlQnJhY2VkRXhwcigpOwogICAgICAgaWYgKEluaXQgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICByZXR1cm4gbWFrZTxCcmFjZWRSYW5nZUV4cHI+KFJhbmdlQmVnaW4sIFJhbmdlRW5kLCBJbml0KTsKICAgICB9CiAgICAgfQogICB9Ci0gIHJldHVybiBwYXJzZUV4cHIoKTsKKyAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUV4cHIoKTsKIH0KIAogLy8gKG5vdCB5ZXQgaW4gdGhlIHNwZWMpCkBAIC00MDE5LDcgKzQwNjYsOCBAQAogLy8gICAgICAgICAgICAgOjo9IGZSIDxiaW5hcnktb3BlcmF0b3ItbmFtZT4gPGV4cHJlc3Npb24+IDxleHByZXNzaW9uPgogLy8gICAgICAgICAgICAgOjo9IGZsIDxiaW5hcnktb3BlcmF0b3ItbmFtZT4gPGV4cHJlc3Npb24+CiAvLyAgICAgICAgICAgICA6Oj0gZnIgPGJpbmFyeS1vcGVyYXRvci1uYW1lPiA8ZXhwcmVzc2lvbj4KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPiBOb2RlICpEYjxBbGxvYz46OnBhcnNlRm9sZEV4cHIoKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICpBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPERlcml2ZWQsIEFsbG9jPjo6cGFyc2VGb2xkRXhwcigpIHsKICAgaWYgKCFjb25zdW1lSWYoJ2YnKSkKICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNDA2OSwxMSArNDExNywxMSBAQAogICBlbHNlIGlmIChjb25zdW1lSWYoInJTIikpIE9wZXJhdG9yTmFtZSA9ICI+Pj0iOwogICBlbHNlIHJldHVybiBudWxscHRyOwogCi0gIE5vZGUgKlBhY2sgPSBwYXJzZUV4cHIoKSwgKkluaXQgPSBudWxscHRyOworICBOb2RlICpQYWNrID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpLCAqSW5pdCA9IG51bGxwdHI7CiAgIGlmIChQYWNrID09IG51bGxwdHIpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIGlmIChIYXNJbml0aWFsaXplcikgewotICAgIEluaXQgPSBwYXJzZUV4cHIoKTsKKyAgICBJbml0ID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgIGlmIChJbml0ID09IG51bGxwdHIpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgfQpAQCAtNDEyOCw0OSArNDE3Niw1MCBAQAogLy8gICAgICAgICAgICAgIDo6PSBmbCA8YmluYXJ5LW9wZXJhdG9yLW5hbWU+IDxleHByZXNzaW9uPgogLy8gICAgICAgICAgICAgIDo6PSBmciA8YmluYXJ5LW9wZXJhdG9yLW5hbWU+IDxleHByZXNzaW9uPgogLy8gICAgICAgICAgICAgIDo6PSA8ZXhwci1wcmltYXJ5PgotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IE5vZGUgKkRiPEFsbG9jPjo6cGFyc2VFeHByKCkgewordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEFsbG9jPgorTm9kZSAqQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlRXhwcigpIHsKICAgYm9vbCBHbG9iYWwgPSBjb25zdW1lSWYoImdzIik7CiAgIGlmIChudW1MZWZ0KCkgPCAyKQogICAgIHJldHVybiBudWxscHRyOwogCiAgIHN3aXRjaCAoKkZpcnN0KSB7CiAgIGNhc2UgJ0wnOgotICAgIHJldHVybiBwYXJzZUV4cHJQcmltYXJ5KCk7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUV4cHJQcmltYXJ5KCk7CiAgIGNhc2UgJ1QnOgotICAgIHJldHVybiBwYXJzZVRlbXBsYXRlUGFyYW0oKTsKKyAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlVGVtcGxhdGVQYXJhbSgpOwogICBjYXNlICdmJzogewogICAgIC8vIERpc2FtYmlndWF0ZSBhIGZvbGQgZXhwcmVzc2lvbiBmcm9tIGEgPGZ1bmN0aW9uLXBhcmFtPi4KICAgICBpZiAobG9vaygxKSA9PSAncCcgfHwgKGxvb2soMSkgPT0gJ0wnICYmIHN0ZDo6aXNkaWdpdChsb29rKDIpKSkpCi0gICAgICByZXR1cm4gcGFyc2VGdW5jdGlvblBhcmFtKCk7Ci0gICAgcmV0dXJuIHBhcnNlRm9sZEV4cHIoKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VGdW5jdGlvblBhcmFtKCk7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUZvbGRFeHByKCk7CiAgIH0KICAgY2FzZSAnYSc6CiAgICAgc3dpdGNoIChGaXJzdFsxXSkgewogICAgIGNhc2UgJ2EnOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZUJpbmFyeUV4cHIoIiYmIik7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlQmluYXJ5RXhwcigiJiYiKTsKICAgICBjYXNlICdkJzoKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICByZXR1cm4gcGFyc2VQcmVmaXhFeHByKCImIik7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlUHJlZml4RXhwcigiJiIpOwogICAgIGNhc2UgJ24nOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZUJpbmFyeUV4cHIoIiYiKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCImIik7CiAgICAgY2FzZSAnTic6CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgcmV0dXJuIHBhcnNlQmluYXJ5RXhwcigiJj0iKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCImPSIpOwogICAgIGNhc2UgJ1MnOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZUJpbmFyeUV4cHIoIj0iKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCI9Iik7CiAgICAgY2FzZSAndCc6IHsKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICBOb2RlICpUeSA9IHBhcnNlVHlwZSgpOworICAgICAgTm9kZSAqVHkgPSBnZXREZXJpdmVkKCkucGFyc2VUeXBlKCk7CiAgICAgICBpZiAoVHkgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICByZXR1cm4gbWFrZTxFbmNsb3NpbmdFeHByPigiYWxpZ25vZiAoIiwgVHksICIpIik7CiAgICAgfQogICAgIGNhc2UgJ3onOiB7CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgTm9kZSAqVHkgPSBwYXJzZUV4cHIoKTsKKyAgICAgIE5vZGUgKlR5ID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKFR5ID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgcmV0dXJuIG1ha2U8RW5jbG9zaW5nRXhwcj4oImFsaWdub2YgKCIsIFR5LCAiKSIpOwpAQCAtNDE4MiwxMCArNDIzMSwxMCBAQAogICAgIC8vIGNjIDx0eXBlPiA8ZXhwcmVzc2lvbj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb25zdF9jYXN0PHR5cGU+KGV4cHJlc3Npb24pCiAgICAgY2FzZSAnYyc6IHsKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICBOb2RlICpUeSA9IHBhcnNlVHlwZSgpOworICAgICAgTm9kZSAqVHkgPSBnZXREZXJpdmVkKCkucGFyc2VUeXBlKCk7CiAgICAgICBpZiAoVHkgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIFR5OwotICAgICAgTm9kZSAqRXggPSBwYXJzZUV4cHIoKTsKKyAgICAgIE5vZGUgKkV4ID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKEV4ID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBFeDsKICAgICAgIHJldHVybiBtYWtlPENhc3RFeHByPigiY29uc3RfY2FzdCIsIFR5LCBFeCk7CkBAIC00MTkzLDEyICs0MjQyLDEyIEBACiAgICAgLy8gY2wgPGV4cHJlc3Npb24+KyBFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNhbGwKICAgICBjYXNlICdsJzogewogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIE5vZGUgKkNhbGxlZSA9IHBhcnNlRXhwcigpOworICAgICAgTm9kZSAqQ2FsbGVlID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKENhbGxlZSA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gQ2FsbGVlOwogICAgICAgc2l6ZV90IEV4cHJzQmVnaW4gPSBOYW1lcy5zaXplKCk7CiAgICAgICB3aGlsZSAoIWNvbnN1bWVJZignRScpKSB7Ci0gICAgICAgIE5vZGUgKkUgPSBwYXJzZUV4cHIoKTsKKyAgICAgICAgTm9kZSAqRSA9IGdldERlcml2ZWQoKS5wYXJzZUV4cHIoKTsKICAgICAgICAgaWYgKEUgPT0gbnVsbHB0cikKICAgICAgICAgICByZXR1cm4gRTsKICAgICAgICAgTmFtZXMucHVzaF9iYWNrKEUpOwpAQCAtNDIwNywxMDQgKzQyNTYsMTA0IEBACiAgICAgfQogICAgIGNhc2UgJ20nOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZUJpbmFyeUV4cHIoIiwiKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCIsIik7CiAgICAgY2FzZSAnbyc6CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgcmV0dXJuIHBhcnNlUHJlZml4RXhwcigifiIpOworICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZVByZWZpeEV4cHIoIn4iKTsKICAgICBjYXNlICd2JzoKLSAgICAgIHJldHVybiBwYXJzZUNvbnZlcnNpb25FeHByKCk7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlQ29udmVyc2lvbkV4cHIoKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIGNhc2UgJ2QnOgogICAgIHN3aXRjaCAoRmlyc3RbMV0pIHsKICAgICBjYXNlICdhJzogewogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIE5vZGUgKkV4ID0gcGFyc2VFeHByKCk7CisgICAgICBOb2RlICpFeCA9IGdldERlcml2ZWQoKS5wYXJzZUV4cHIoKTsKICAgICAgIGlmIChFeCA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gRXg7CiAgICAgICByZXR1cm4gbWFrZTxEZWxldGVFeHByPihFeCwgR2xvYmFsLCAvKmlzX2FycmF5PSovdHJ1ZSk7CiAgICAgfQogICAgIGNhc2UgJ2MnOiB7CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgTm9kZSAqVCA9IHBhcnNlVHlwZSgpOworICAgICAgTm9kZSAqVCA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgICAgIGlmIChUID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBUOwotICAgICAgTm9kZSAqRXggPSBwYXJzZUV4cHIoKTsKKyAgICAgIE5vZGUgKkV4ID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKEV4ID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBFeDsKICAgICAgIHJldHVybiBtYWtlPENhc3RFeHByPigiZHluYW1pY19jYXN0IiwgVCwgRXgpOwogICAgIH0KICAgICBjYXNlICdlJzoKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICByZXR1cm4gcGFyc2VQcmVmaXhFeHByKCIqIik7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlUHJlZml4RXhwcigiKiIpOwogICAgIGNhc2UgJ2wnOiB7CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgTm9kZSAqRSA9IHBhcnNlRXhwcigpOworICAgICAgTm9kZSAqRSA9IGdldERlcml2ZWQoKS5wYXJzZUV4cHIoKTsKICAgICAgIGlmIChFID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBFOwogICAgICAgcmV0dXJuIG1ha2U8RGVsZXRlRXhwcj4oRSwgR2xvYmFsLCAvKmlzX2FycmF5PSovZmFsc2UpOwogICAgIH0KICAgICBjYXNlICduJzoKLSAgICAgIHJldHVybiBwYXJzZVVucmVzb2x2ZWROYW1lKCk7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlVW5yZXNvbHZlZE5hbWUoKTsKICAgICBjYXNlICdzJzogewogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIE5vZGUgKkxIUyA9IHBhcnNlRXhwcigpOworICAgICAgTm9kZSAqTEhTID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKExIUyA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgIE5vZGUgKlJIUyA9IHBhcnNlRXhwcigpOworICAgICAgTm9kZSAqUkhTID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKFJIUyA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgIHJldHVybiBtYWtlPE1lbWJlckV4cHI+KExIUywgIi4qIiwgUkhTKTsKICAgICB9CiAgICAgY2FzZSAndCc6IHsKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICBOb2RlICpMSFMgPSBwYXJzZUV4cHIoKTsKKyAgICAgIE5vZGUgKkxIUyA9IGdldERlcml2ZWQoKS5wYXJzZUV4cHIoKTsKICAgICAgIGlmIChMSFMgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIExIUzsKLSAgICAgIE5vZGUgKlJIUyA9IHBhcnNlRXhwcigpOworICAgICAgTm9kZSAqUkhTID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKFJIUyA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgIHJldHVybiBtYWtlPE1lbWJlckV4cHI+KExIUywgIi4iLCBSSFMpOwogICAgIH0KICAgICBjYXNlICd2JzoKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICByZXR1cm4gcGFyc2VCaW5hcnlFeHByKCIvIik7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlQmluYXJ5RXhwcigiLyIpOwogICAgIGNhc2UgJ1YnOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZUJpbmFyeUV4cHIoIi89Iik7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlQmluYXJ5RXhwcigiLz0iKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIGNhc2UgJ2UnOgogICAgIHN3aXRjaCAoRmlyc3RbMV0pIHsKICAgICBjYXNlICdvJzoKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICByZXR1cm4gcGFyc2VCaW5hcnlFeHByKCJeIik7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlQmluYXJ5RXhwcigiXiIpOwogICAgIGNhc2UgJ08nOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZUJpbmFyeUV4cHIoIl49Iik7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlQmluYXJ5RXhwcigiXj0iKTsKICAgICBjYXNlICdxJzoKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICByZXR1cm4gcGFyc2VCaW5hcnlFeHByKCI9PSIpOworICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUJpbmFyeUV4cHIoIj09Iik7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogICBjYXNlICdnJzoKICAgICBzd2l0Y2ggKEZpcnN0WzFdKSB7CiAgICAgY2FzZSAnZSc6CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgcmV0dXJuIHBhcnNlQmluYXJ5RXhwcigiPj0iKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCI+PSIpOwogICAgIGNhc2UgJ3QnOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZUJpbmFyeUV4cHIoIj4iKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCI+Iik7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwogICBjYXNlICdpJzoKICAgICBzd2l0Y2ggKEZpcnN0WzFdKSB7CiAgICAgY2FzZSAneCc6IHsKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICBOb2RlICpCYXNlID0gcGFyc2VFeHByKCk7CisgICAgICBOb2RlICpCYXNlID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKEJhc2UgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICBOb2RlICpJbmRleCA9IHBhcnNlRXhwcigpOworICAgICAgTm9kZSAqSW5kZXggPSBnZXREZXJpdmVkKCkucGFyc2VFeHByKCk7CiAgICAgICBpZiAoSW5kZXggPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIEluZGV4OwogICAgICAgcmV0dXJuIG1ha2U8QXJyYXlTdWJzY3JpcHRFeHByPihCYXNlLCBJbmRleCk7CkBAIC00MzEzLDcgKzQzNjIsNyBAQAogICAgICAgRmlyc3QgKz0gMjsKICAgICAgIHNpemVfdCBJbml0c0JlZ2luID0gTmFtZXMuc2l6ZSgpOwogICAgICAgd2hpbGUgKCFjb25zdW1lSWYoJ0UnKSkgewotICAgICAgICBOb2RlICpFID0gcGFyc2VCcmFjZWRFeHByKCk7CisgICAgICAgIE5vZGUgKkUgPSBnZXREZXJpdmVkKCkucGFyc2VCcmFjZWRFeHByKCk7CiAgICAgICAgIGlmIChFID09IG51bGxwdHIpCiAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIE5hbWVzLnB1c2hfYmFjayhFKTsKQEAgLTQzMjYsMzcgKzQzNzUsMzcgQEAKICAgICBzd2l0Y2ggKEZpcnN0WzFdKSB7CiAgICAgY2FzZSAnZSc6CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgcmV0dXJuIHBhcnNlQmluYXJ5RXhwcigiPD0iKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCI8PSIpOwogICAgIGNhc2UgJ3MnOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZUJpbmFyeUV4cHIoIjw8Iik7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlQmluYXJ5RXhwcigiPDwiKTsKICAgICBjYXNlICdTJzoKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICByZXR1cm4gcGFyc2VCaW5hcnlFeHByKCI8PD0iKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCI8PD0iKTsKICAgICBjYXNlICd0JzoKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICByZXR1cm4gcGFyc2VCaW5hcnlFeHByKCI8Iik7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlQmluYXJ5RXhwcigiPCIpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKICAgY2FzZSAnbSc6CiAgICAgc3dpdGNoIChGaXJzdFsxXSkgewogICAgIGNhc2UgJ2knOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZUJpbmFyeUV4cHIoIi0iKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCItIik7CiAgICAgY2FzZSAnSSc6CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgcmV0dXJuIHBhcnNlQmluYXJ5RXhwcigiLT0iKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCItPSIpOwogICAgIGNhc2UgJ2wnOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZUJpbmFyeUV4cHIoIioiKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCIqIik7CiAgICAgY2FzZSAnTCc6CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgcmV0dXJuIHBhcnNlQmluYXJ5RXhwcigiKj0iKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCIqPSIpOwogICAgIGNhc2UgJ20nOgogICAgICAgRmlyc3QgKz0gMjsKICAgICAgIGlmIChjb25zdW1lSWYoJ18nKSkKLSAgICAgICAgcmV0dXJuIHBhcnNlUHJlZml4RXhwcigiLS0iKTsKLSAgICAgIE5vZGUgKkV4ID0gcGFyc2VFeHByKCk7CisgICAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VQcmVmaXhFeHByKCItLSIpOworICAgICAgTm9kZSAqRXggPSBnZXREZXJpdmVkKCkucGFyc2VFeHByKCk7CiAgICAgICBpZiAoRXggPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICByZXR1cm4gbWFrZTxQb3N0Zml4RXhwcj4oRXgsICItLSIpOwpAQCAtNDM2NiwxOSArNDQxNSwxOSBAQAogICAgIHN3aXRjaCAoRmlyc3RbMV0pIHsKICAgICBjYXNlICdhJzoKICAgICBjYXNlICd3JzoKLSAgICAgIHJldHVybiBwYXJzZU5ld0V4cHIoKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VOZXdFeHByKCk7CiAgICAgY2FzZSAnZSc6CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgcmV0dXJuIHBhcnNlQmluYXJ5RXhwcigiIT0iKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCIhPSIpOwogICAgIGNhc2UgJ2cnOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZVByZWZpeEV4cHIoIi0iKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VQcmVmaXhFeHByKCItIik7CiAgICAgY2FzZSAndCc6CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgcmV0dXJuIHBhcnNlUHJlZml4RXhwcigiISIpOworICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZVByZWZpeEV4cHIoIiEiKTsKICAgICBjYXNlICd4JzoKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICBOb2RlICpFeCA9IHBhcnNlRXhwcigpOworICAgICAgTm9kZSAqRXggPSBnZXREZXJpdmVkKCkucGFyc2VFeHByKCk7CiAgICAgICBpZiAoRXggPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIEV4OwogICAgICAgcmV0dXJuIG1ha2U8RW5jbG9zaW5nRXhwcj4oIm5vZXhjZXB0ICgiLCBFeCwgIikiKTsKQEAgLTQzODcsNDcgKzQ0MzYsNDcgQEAKICAgY2FzZSAnbyc6CiAgICAgc3dpdGNoIChGaXJzdFsxXSkgewogICAgIGNhc2UgJ24nOgotICAgICAgcmV0dXJuIHBhcnNlVW5yZXNvbHZlZE5hbWUoKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VVbnJlc29sdmVkTmFtZSgpOwogICAgIGNhc2UgJ28nOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZUJpbmFyeUV4cHIoInx8Iik7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlQmluYXJ5RXhwcigifHwiKTsKICAgICBjYXNlICdyJzoKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICByZXR1cm4gcGFyc2VCaW5hcnlFeHByKCJ8Iik7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlQmluYXJ5RXhwcigifCIpOwogICAgIGNhc2UgJ1InOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZUJpbmFyeUV4cHIoInw9Iik7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlQmluYXJ5RXhwcigifD0iKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIGNhc2UgJ3AnOgogICAgIHN3aXRjaCAoRmlyc3RbMV0pIHsKICAgICBjYXNlICdtJzoKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICByZXR1cm4gcGFyc2VCaW5hcnlFeHByKCItPioiKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCItPioiKTsKICAgICBjYXNlICdsJzoKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICByZXR1cm4gcGFyc2VCaW5hcnlFeHByKCIrIik7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlQmluYXJ5RXhwcigiKyIpOwogICAgIGNhc2UgJ0wnOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZUJpbmFyeUV4cHIoIis9Iik7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlQmluYXJ5RXhwcigiKz0iKTsKICAgICBjYXNlICdwJzogewogICAgICAgRmlyc3QgKz0gMjsKICAgICAgIGlmIChjb25zdW1lSWYoJ18nKSkKLSAgICAgICAgcmV0dXJuIHBhcnNlUHJlZml4RXhwcigiKysiKTsKLSAgICAgIE5vZGUgKkV4ID0gcGFyc2VFeHByKCk7CisgICAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VQcmVmaXhFeHByKCIrKyIpOworICAgICAgTm9kZSAqRXggPSBnZXREZXJpdmVkKCkucGFyc2VFeHByKCk7CiAgICAgICBpZiAoRXggPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIEV4OwogICAgICAgcmV0dXJuIG1ha2U8UG9zdGZpeEV4cHI+KEV4LCAiKysiKTsKICAgICB9CiAgICAgY2FzZSAncyc6CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgcmV0dXJuIHBhcnNlUHJlZml4RXhwcigiKyIpOworICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZVByZWZpeEV4cHIoIisiKTsKICAgICBjYXNlICd0JzogewogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIE5vZGUgKkwgPSBwYXJzZUV4cHIoKTsKKyAgICAgIE5vZGUgKkwgPSBnZXREZXJpdmVkKCkucGFyc2VFeHByKCk7CiAgICAgICBpZiAoTCA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgIE5vZGUgKlIgPSBwYXJzZUV4cHIoKTsKKyAgICAgIE5vZGUgKlIgPSBnZXREZXJpdmVkKCkucGFyc2VFeHByKCk7CiAgICAgICBpZiAoUiA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgIHJldHVybiBtYWtlPE1lbWJlckV4cHI+KEwsICItPiIsIFIpOwpAQCAtNDQzNywxMyArNDQ4NiwxMyBAQAogICBjYXNlICdxJzoKICAgICBpZiAoRmlyc3RbMV0gPT0gJ3UnKSB7CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgTm9kZSAqQ29uZCA9IHBhcnNlRXhwcigpOworICAgICAgTm9kZSAqQ29uZCA9IGdldERlcml2ZWQoKS5wYXJzZUV4cHIoKTsKICAgICAgIGlmIChDb25kID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgTm9kZSAqTEhTID0gcGFyc2VFeHByKCk7CisgICAgICBOb2RlICpMSFMgPSBnZXREZXJpdmVkKCkucGFyc2VFeHByKCk7CiAgICAgICBpZiAoTEhTID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgTm9kZSAqUkhTID0gcGFyc2VFeHByKCk7CisgICAgICBOb2RlICpSSFMgPSBnZXREZXJpdmVkKCkucGFyc2VFeHByKCk7CiAgICAgICBpZiAoUkhTID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgcmV0dXJuIG1ha2U8Q29uZGl0aW9uYWxFeHByPihDb25kLCBMSFMsIFJIUyk7CkBAIC00NDUzLDU5ICs0NTAyLDU5IEBACiAgICAgc3dpdGNoIChGaXJzdFsxXSkgewogICAgIGNhc2UgJ2MnOiB7CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgTm9kZSAqVCA9IHBhcnNlVHlwZSgpOworICAgICAgTm9kZSAqVCA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgICAgIGlmIChUID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBUOwotICAgICAgTm9kZSAqRXggPSBwYXJzZUV4cHIoKTsKKyAgICAgIE5vZGUgKkV4ID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKEV4ID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBFeDsKICAgICAgIHJldHVybiBtYWtlPENhc3RFeHByPigicmVpbnRlcnByZXRfY2FzdCIsIFQsIEV4KTsKICAgICB9CiAgICAgY2FzZSAnbSc6CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgcmV0dXJuIHBhcnNlQmluYXJ5RXhwcigiJSIpOworICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUJpbmFyeUV4cHIoIiUiKTsKICAgICBjYXNlICdNJzoKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICByZXR1cm4gcGFyc2VCaW5hcnlFeHByKCIlPSIpOworICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUJpbmFyeUV4cHIoIiU9Iik7CiAgICAgY2FzZSAncyc6CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgcmV0dXJuIHBhcnNlQmluYXJ5RXhwcigiPj4iKTsKKyAgICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VCaW5hcnlFeHByKCI+PiIpOwogICAgIGNhc2UgJ1MnOgogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIHJldHVybiBwYXJzZUJpbmFyeUV4cHIoIj4+PSIpOworICAgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUJpbmFyeUV4cHIoIj4+PSIpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKICAgY2FzZSAncyc6CiAgICAgc3dpdGNoIChGaXJzdFsxXSkgewogICAgIGNhc2UgJ2MnOiB7CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgTm9kZSAqVCA9IHBhcnNlVHlwZSgpOworICAgICAgTm9kZSAqVCA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgICAgIGlmIChUID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBUOwotICAgICAgTm9kZSAqRXggPSBwYXJzZUV4cHIoKTsKKyAgICAgIE5vZGUgKkV4ID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKEV4ID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBFeDsKICAgICAgIHJldHVybiBtYWtlPENhc3RFeHByPigic3RhdGljX2Nhc3QiLCBULCBFeCk7CiAgICAgfQogICAgIGNhc2UgJ3AnOiB7CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgTm9kZSAqQ2hpbGQgPSBwYXJzZUV4cHIoKTsKKyAgICAgIE5vZGUgKkNoaWxkID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKENoaWxkID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgcmV0dXJuIG1ha2U8UGFyYW1ldGVyUGFja0V4cGFuc2lvbj4oQ2hpbGQpOwogICAgIH0KICAgICBjYXNlICdyJzoKLSAgICAgIHJldHVybiBwYXJzZVVucmVzb2x2ZWROYW1lKCk7CisgICAgICByZXR1cm4gZ2V0RGVyaXZlZCgpLnBhcnNlVW5yZXNvbHZlZE5hbWUoKTsKICAgICBjYXNlICd0JzogewogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIE5vZGUgKlR5ID0gcGFyc2VUeXBlKCk7CisgICAgICBOb2RlICpUeSA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgICAgIGlmIChUeSA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gVHk7CiAgICAgICByZXR1cm4gbWFrZTxFbmNsb3NpbmdFeHByPigic2l6ZW9mICgiLCBUeSwgIikiKTsKICAgICB9CiAgICAgY2FzZSAneic6IHsKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICBOb2RlICpFeCA9IHBhcnNlRXhwcigpOworICAgICAgTm9kZSAqRXggPSBnZXREZXJpdmVkKCkucGFyc2VFeHByKCk7CiAgICAgICBpZiAoRXggPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIEV4OwogICAgICAgcmV0dXJuIG1ha2U8RW5jbG9zaW5nRXhwcj4oInNpemVvZiAoIiwgRXgsICIpIik7CkBAIC00NTEzLDEyICs0NTYyLDEyIEBACiAgICAgY2FzZSAnWic6CiAgICAgICBGaXJzdCArPSAyOwogICAgICAgaWYgKGxvb2soKSA9PSAnVCcpIHsKLSAgICAgICAgTm9kZSAqUiA9IHBhcnNlVGVtcGxhdGVQYXJhbSgpOworICAgICAgICBOb2RlICpSID0gZ2V0RGVyaXZlZCgpLnBhcnNlVGVtcGxhdGVQYXJhbSgpOwogICAgICAgICBpZiAoUiA9PSBudWxscHRyKQogICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gbWFrZTxTaXplb2ZQYXJhbVBhY2tFeHByPihSKTsKICAgICAgIH0gZWxzZSBpZiAobG9vaygpID09ICdmJykgewotICAgICAgICBOb2RlICpGUCA9IHBhcnNlRnVuY3Rpb25QYXJhbSgpOworICAgICAgICBOb2RlICpGUCA9IGdldERlcml2ZWQoKS5wYXJzZUZ1bmN0aW9uUGFyYW0oKTsKICAgICAgICAgaWYgKEZQID09IG51bGxwdHIpCiAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBtYWtlPEVuY2xvc2luZ0V4cHI+KCJzaXplb2YuLi4gKCIsIEZQLCAiKSIpOwpAQCAtNDUyOCw3ICs0NTc3LDcgQEAKICAgICAgIEZpcnN0ICs9IDI7CiAgICAgICBzaXplX3QgQXJnc0JlZ2luID0gTmFtZXMuc2l6ZSgpOwogICAgICAgd2hpbGUgKCFjb25zdW1lSWYoJ0UnKSkgewotICAgICAgICBOb2RlICpBcmcgPSBwYXJzZVRlbXBsYXRlQXJnKCk7CisgICAgICAgIE5vZGUgKkFyZyA9IGdldERlcml2ZWQoKS5wYXJzZVRlbXBsYXRlQXJnKCk7CiAgICAgICAgIGlmIChBcmcgPT0gbnVsbHB0cikKICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgTmFtZXMucHVzaF9iYWNrKEFyZyk7CkBAIC00NTQ0LDI2ICs0NTkzLDI2IEBACiAgICAgc3dpdGNoIChGaXJzdFsxXSkgewogICAgIGNhc2UgJ2UnOiB7CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgTm9kZSAqRXggPSBwYXJzZUV4cHIoKTsKKyAgICAgIE5vZGUgKkV4ID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKEV4ID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBFeDsKICAgICAgIHJldHVybiBtYWtlPEVuY2xvc2luZ0V4cHI+KCJ0eXBlaWQgKCIsIEV4LCAiKSIpOwogICAgIH0KICAgICBjYXNlICdpJzogewogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIE5vZGUgKlR5ID0gcGFyc2VUeXBlKCk7CisgICAgICBOb2RlICpUeSA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgICAgIGlmIChUeSA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gVHk7CiAgICAgICByZXR1cm4gbWFrZTxFbmNsb3NpbmdFeHByPigidHlwZWlkICgiLCBUeSwgIikiKTsKICAgICB9CiAgICAgY2FzZSAnbCc6IHsKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICBOb2RlICpUeSA9IHBhcnNlVHlwZSgpOworICAgICAgTm9kZSAqVHkgPSBnZXREZXJpdmVkKCkucGFyc2VUeXBlKCk7CiAgICAgICBpZiAoVHkgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICBzaXplX3QgSW5pdHNCZWdpbiA9IE5hbWVzLnNpemUoKTsKICAgICAgIHdoaWxlICghY29uc3VtZUlmKCdFJykpIHsKLSAgICAgICAgTm9kZSAqRSA9IHBhcnNlQnJhY2VkRXhwcigpOworICAgICAgICBOb2RlICpFID0gZ2V0RGVyaXZlZCgpLnBhcnNlQnJhY2VkRXhwcigpOwogICAgICAgICBpZiAoRSA9PSBudWxscHRyKQogICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBOYW1lcy5wdXNoX2JhY2soRSk7CkBAIC00NTc1LDcgKzQ2MjQsNyBAQAogICAgICAgcmV0dXJuIG1ha2U8TmFtZVR5cGU+KCJ0aHJvdyIpOwogICAgIGNhc2UgJ3cnOiB7CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgTm9kZSAqRXggPSBwYXJzZUV4cHIoKTsKKyAgICAgIE5vZGUgKkV4ID0gZ2V0RGVyaXZlZCgpLnBhcnNlRXhwcigpOwogICAgICAgaWYgKEV4ID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgcmV0dXJuIG1ha2U8VGhyb3dFeHByPihFeCk7CkBAIC00NTkxLDcgKzQ2NDAsNyBAQAogICBjYXNlICc3JzoKICAgY2FzZSAnOCc6CiAgIGNhc2UgJzknOgotICAgIHJldHVybiBwYXJzZVVucmVzb2x2ZWROYW1lKCk7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZVVucmVzb2x2ZWROYW1lKCk7CiAgIH0KICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC00NjA0LDcgKzQ2NTMsOCBAQAogLy8KIC8vIDx2LW9mZnNldD4gIDo6PSA8b2Zmc2V0IG51bWJlcj4gXyA8dmlydHVhbCBvZmZzZXQgbnVtYmVyPgogLy8gICAgICAgICAgICAgICAjIHZpcnR1YWwgYmFzZSBvdmVycmlkZSwgd2l0aCB2Y2FsbCBvZmZzZXQKLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPiBib29sIERiPEFsbG9jPjo6cGFyc2VDYWxsT2Zmc2V0KCkgewordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBEZXJpdmVkPgorYm9vbCBBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPEFsbG9jLCBEZXJpdmVkPjo6cGFyc2VDYWxsT2Zmc2V0KCkgewogICAvLyBKdXN0IHNjYW4gdGhyb3VnaCB0aGUgY2FsbCBvZmZzZXQsIHdlIG5ldmVyIGFkZCB0aGlzIGluZm9ybWF0aW9uIGludG8gdGhlCiAgIC8vIG91dHB1dC4KICAgaWYgKGNvbnN1bWVJZignaCcpKQpAQCAtNDYzMywxNCArNDY4MywxNSBAQAogLy8gICAgICAgICAgICAgICAgOjo9IEdSIDxvYmplY3QgbmFtZT4gPHNlcS1pZD4gXyAgICAjIFN1YnNlcXVlbnQgdGVtcG9yYXJpZXMKIC8vICAgICAgZXh0ZW5zaW9uIDo6PSBUQyA8Zmlyc3QgdHlwZT4gPG51bWJlcj4gXyA8c2Vjb25kIHR5cGU+ICMgY29uc3RydWN0aW9uIHZ0YWJsZSBmb3Igc2Vjb25kLWluLWZpcnN0CiAvLyAgICAgIGV4dGVuc2lvbiA6Oj0gR1IgPG9iamVjdCBuYW1lPiAjIHJlZmVyZW5jZSB0ZW1wb3JhcnkgZm9yIG9iamVjdAotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IE5vZGUgKkRiPEFsbG9jPjo6cGFyc2VTcGVjaWFsTmFtZSgpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBBbGxvYz4KK05vZGUgKkFic3RyYWN0TWFuZ2xpbmdQYXJzZXI8RGVyaXZlZCwgQWxsb2M+OjpwYXJzZVNwZWNpYWxOYW1lKCkgewogICBzd2l0Y2ggKGxvb2soKSkgewogICBjYXNlICdUJzoKICAgICBzd2l0Y2ggKGxvb2soMSkpIHsKICAgICAvLyBUViA8dHlwZT4gICAgIyB2aXJ0dWFsIHRhYmxlCiAgICAgY2FzZSAnVic6IHsKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICBOb2RlICpUeSA9IHBhcnNlVHlwZSgpOworICAgICAgTm9kZSAqVHkgPSBnZXREZXJpdmVkKCkucGFyc2VUeXBlKCk7CiAgICAgICBpZiAoVHkgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICByZXR1cm4gbWFrZTxTcGVjaWFsTmFtZT4oInZ0YWJsZSBmb3IgIiwgVHkpOwpAQCAtNDY0OCw3ICs0Njk5LDcgQEAKICAgICAvLyBUVCA8dHlwZT4gICAgIyBWVFQgc3RydWN0dXJlIChjb25zdHJ1Y3Rpb24gdnRhYmxlIGluZGV4KQogICAgIGNhc2UgJ1QnOiB7CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgTm9kZSAqVHkgPSBwYXJzZVR5cGUoKTsKKyAgICAgIE5vZGUgKlR5ID0gZ2V0RGVyaXZlZCgpLnBhcnNlVHlwZSgpOwogICAgICAgaWYgKFR5ID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgcmV0dXJuIG1ha2U8U3BlY2lhbE5hbWU+KCJWVFQgZm9yICIsIFR5KTsKQEAgLTQ2NTYsNyArNDcwNyw3IEBACiAgICAgLy8gVEkgPHR5cGU+ICAgICMgdHlwZWluZm8gc3RydWN0dXJlCiAgICAgY2FzZSAnSSc6IHsKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICBOb2RlICpUeSA9IHBhcnNlVHlwZSgpOworICAgICAgTm9kZSAqVHkgPSBnZXREZXJpdmVkKCkucGFyc2VUeXBlKCk7CiAgICAgICBpZiAoVHkgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICByZXR1cm4gbWFrZTxTcGVjaWFsTmFtZT4oInR5cGVpbmZvIGZvciAiLCBUeSk7CkBAIC00NjY0LDcgKzQ3MTUsNyBAQAogICAgIC8vIFRTIDx0eXBlPiAgICAjIHR5cGVpbmZvIG5hbWUgKG51bGwtdGVybWluYXRlZCBieXRlIHN0cmluZykKICAgICBjYXNlICdTJzogewogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIE5vZGUgKlR5ID0gcGFyc2VUeXBlKCk7CisgICAgICBOb2RlICpUeSA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgICAgIGlmIChUeSA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgIHJldHVybiBtYWtlPFNwZWNpYWxOYW1lPigidHlwZWluZm8gbmFtZSBmb3IgIiwgVHkpOwpAQCAtNDY3NCw3ICs0NzI1LDcgQEAKICAgICAgIEZpcnN0ICs9IDI7CiAgICAgICBpZiAocGFyc2VDYWxsT2Zmc2V0KCkgfHwgcGFyc2VDYWxsT2Zmc2V0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgTm9kZSAqRW5jb2RpbmcgPSBwYXJzZUVuY29kaW5nKCk7CisgICAgICBOb2RlICpFbmNvZGluZyA9IGdldERlcml2ZWQoKS5wYXJzZUVuY29kaW5nKCk7CiAgICAgICBpZiAoRW5jb2RpbmcgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICByZXR1cm4gbWFrZTxTcGVjaWFsTmFtZT4oImNvdmFyaWFudCByZXR1cm4gdGh1bmsgdG8gIiwgRW5jb2RpbmcpOwpAQCAtNDY4MywxMiArNDczNCwxMiBAQAogICAgIC8vICAgICAgICAgICAgICAgIyBjb25zdHJ1Y3Rpb24gdnRhYmxlIGZvciBzZWNvbmQtaW4tZmlyc3QKICAgICBjYXNlICdDJzogewogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIE5vZGUgKkZpcnN0VHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAgTm9kZSAqRmlyc3RUeXBlID0gZ2V0RGVyaXZlZCgpLnBhcnNlVHlwZSgpOwogICAgICAgaWYgKEZpcnN0VHlwZSA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgIGlmIChwYXJzZU51bWJlcih0cnVlKS5lbXB0eSgpIHx8ICFjb25zdW1lSWYoJ18nKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICBOb2RlICpTZWNvbmRUeXBlID0gcGFyc2VUeXBlKCk7CisgICAgICBOb2RlICpTZWNvbmRUeXBlID0gZ2V0RGVyaXZlZCgpLnBhcnNlVHlwZSgpOwogICAgICAgaWYgKFNlY29uZFR5cGUgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICByZXR1cm4gbWFrZTxDdG9yVnRhYmxlU3BlY2lhbE5hbWU+KFNlY29uZFR5cGUsIEZpcnN0VHlwZSk7CkBAIC00Njk2LDcgKzQ3NDcsNyBAQAogICAgIC8vIFRXIDxvYmplY3QgbmFtZT4gIyBUaHJlYWQtbG9jYWwgd3JhcHBlcgogICAgIGNhc2UgJ1cnOiB7CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgTm9kZSAqTmFtZSA9IHBhcnNlTmFtZSgpOworICAgICAgTm9kZSAqTmFtZSA9IGdldERlcml2ZWQoKS5wYXJzZU5hbWUoKTsKICAgICAgIGlmIChOYW1lID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgcmV0dXJuIG1ha2U8U3BlY2lhbE5hbWU+KCJ0aHJlYWQtbG9jYWwgd3JhcHBlciByb3V0aW5lIGZvciAiLCBOYW1lKTsKQEAgLTQ3MDQsNyArNDc1NSw3IEBACiAgICAgLy8gVEggPG9iamVjdCBuYW1lPiAjIFRocmVhZC1sb2NhbCBpbml0aWFsaXphdGlvbgogICAgIGNhc2UgJ0gnOiB7CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgTm9kZSAqTmFtZSA9IHBhcnNlTmFtZSgpOworICAgICAgTm9kZSAqTmFtZSA9IGdldERlcml2ZWQoKS5wYXJzZU5hbWUoKTsKICAgICAgIGlmIChOYW1lID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgcmV0dXJuIG1ha2U8U3BlY2lhbE5hbWU+KCJ0aHJlYWQtbG9jYWwgaW5pdGlhbGl6YXRpb24gcm91dGluZSBmb3IgIiwgTmFtZSk7CkBAIC00NzE1LDcgKzQ3NjYsNyBAQAogICAgICAgYm9vbCBJc1ZpcnQgPSBsb29rKCkgPT0gJ3YnOwogICAgICAgaWYgKHBhcnNlQ2FsbE9mZnNldCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgIE5vZGUgKkJhc2VFbmNvZGluZyA9IHBhcnNlRW5jb2RpbmcoKTsKKyAgICAgIE5vZGUgKkJhc2VFbmNvZGluZyA9IGdldERlcml2ZWQoKS5wYXJzZUVuY29kaW5nKCk7CiAgICAgICBpZiAoQmFzZUVuY29kaW5nID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgaWYgKElzVmlydCkKQEAgLTQ3MjksNyArNDc4MCw3IEBACiAgICAgLy8gR1YgPG9iamVjdCBuYW1lPiAjIEd1YXJkIHZhcmlhYmxlIGZvciBvbmUtdGltZSBpbml0aWFsaXphdGlvbgogICAgIGNhc2UgJ1YnOiB7CiAgICAgICBGaXJzdCArPSAyOwotICAgICAgTm9kZSAqTmFtZSA9IHBhcnNlTmFtZSgpOworICAgICAgTm9kZSAqTmFtZSA9IGdldERlcml2ZWQoKS5wYXJzZU5hbWUoKTsKICAgICAgIGlmIChOYW1lID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgcmV0dXJuIG1ha2U8U3BlY2lhbE5hbWU+KCJndWFyZCB2YXJpYWJsZSBmb3IgIiwgTmFtZSk7CkBAIC00NzM5LDcgKzQ3OTAsNyBAQAogICAgIC8vIEdSIDxvYmplY3QgbmFtZT4gPHNlcS1pZD4gXyAgICAjIFN1YnNlcXVlbnQgdGVtcG9yYXJpZXMKICAgICBjYXNlICdSJzogewogICAgICAgRmlyc3QgKz0gMjsKLSAgICAgIE5vZGUgKk5hbWUgPSBwYXJzZU5hbWUoKTsKKyAgICAgIE5vZGUgKk5hbWUgPSBnZXREZXJpdmVkKCkucGFyc2VOYW1lKCk7CiAgICAgICBpZiAoTmFtZSA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgIHNpemVfdCBDb3VudDsKQEAgLTQ3NTYsOSArNDgwNywxMCBAQAogLy8gPGVuY29kaW5nPiA6Oj0gPGZ1bmN0aW9uIG5hbWU+IDxiYXJlLWZ1bmN0aW9uLXR5cGU+CiAvLyAgICAgICAgICAgIDo6PSA8ZGF0YSBuYW1lPgogLy8gICAgICAgICAgICA6Oj0gPHNwZWNpYWwtbmFtZT4KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPiBOb2RlICpEYjxBbGxvYz46OnBhcnNlRW5jb2RpbmcoKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICpBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPERlcml2ZWQsIEFsbG9jPjo6cGFyc2VFbmNvZGluZygpIHsKICAgaWYgKGxvb2soKSA9PSAnRycgfHwgbG9vaygpID09ICdUJykKLSAgICByZXR1cm4gcGFyc2VTcGVjaWFsTmFtZSgpOworICAgIHJldHVybiBnZXREZXJpdmVkKCkucGFyc2VTcGVjaWFsTmFtZSgpOwogCiAgIGF1dG8gSXNFbmRPZkVuY29kaW5nID0gWyZdIHsKICAgICAvLyBUaGUgc2V0IG9mIGNoYXJzIHRoYXQgY2FuIHBvdGVudGlhbGx5IGZvbGxvdyBhbiA8ZW5jb2Rpbmc+IChub25lIG9mIHdoaWNoCkBAIC00NzY4LDcgKzQ4MjAsNyBAQAogICB9OwogCiAgIE5hbWVTdGF0ZSBOYW1lSW5mbyh0aGlzKTsKLSAgTm9kZSAqTmFtZSA9IHBhcnNlTmFtZSgmTmFtZUluZm8pOworICBOb2RlICpOYW1lID0gZ2V0RGVyaXZlZCgpLnBhcnNlTmFtZSgmTmFtZUluZm8pOwogICBpZiAoTmFtZSA9PSBudWxscHRyKQogICAgIHJldHVybiBudWxscHRyOwogCkBAIC00NzgyLDcgKzQ4MzQsNyBAQAogICBpZiAoY29uc3VtZUlmKCJVYTllbmFibGVfaWZJIikpIHsKICAgICBzaXplX3QgQmVmb3JlQXJncyA9IE5hbWVzLnNpemUoKTsKICAgICB3aGlsZSAoIWNvbnN1bWVJZignRScpKSB7Ci0gICAgICBOb2RlICpBcmcgPSBwYXJzZVRlbXBsYXRlQXJnKCk7CisgICAgICBOb2RlICpBcmcgPSBnZXREZXJpdmVkKCkucGFyc2VUZW1wbGF0ZUFyZygpOwogICAgICAgaWYgKEFyZyA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgIE5hbWVzLnB1c2hfYmFjayhBcmcpOwpAQCAtNDc5NCw3ICs0ODQ2LDcgQEAKIAogICBOb2RlICpSZXR1cm5UeXBlID0gbnVsbHB0cjsKICAgaWYgKCFOYW1lSW5mby5DdG9yRHRvckNvbnZlcnNpb24gJiYgTmFtZUluZm8uRW5kc1dpdGhUZW1wbGF0ZUFyZ3MpIHsKLSAgICBSZXR1cm5UeXBlID0gcGFyc2VUeXBlKCk7CisgICAgUmV0dXJuVHlwZSA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgICBpZiAoUmV0dXJuVHlwZSA9PSBudWxscHRyKQogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KQEAgLTQ4MDYsNyArNDg1OCw3IEBACiAKICAgc2l6ZV90IFBhcmFtc0JlZ2luID0gTmFtZXMuc2l6ZSgpOwogICBkbyB7Ci0gICAgTm9kZSAqVHkgPSBwYXJzZVR5cGUoKTsKKyAgICBOb2RlICpUeSA9IGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgICBpZiAoVHkgPT0gbnVsbHB0cikKICAgICAgIHJldHVybiBudWxscHRyOwogICAgIE5hbWVzLnB1c2hfYmFjayhUeSk7CkBAIC00ODUyLDkgKzQ5MDQsOSBAQAogICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hhciAqc3BlYyA9ICIlTGFMIjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPgotdGVtcGxhdGU8Y2xhc3MgRmxvYXQ+Ci1Ob2RlICpEYjxBbGxvYz46OnBhcnNlRmxvYXRpbmdMaXRlcmFsKCkgewordGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBEZXJpdmVkPgordGVtcGxhdGUgPGNsYXNzIEZsb2F0PgorTm9kZSAqQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxBbGxvYywgRGVyaXZlZD46OnBhcnNlRmxvYXRpbmdMaXRlcmFsKCkgewogICBjb25zdCBzaXplX3QgTiA9IEZsb2F0RGF0YTxGbG9hdD46Om1hbmdsZWRfc2l6ZTsKICAgaWYgKG51bUxlZnQoKSA8PSBOKQogICAgIHJldHVybiBudWxscHRyOwpAQCAtNDg2OSw3ICs0OTIxLDggQEAKIH0KIAogLy8gPHNlcS1pZD4gOjo9IDwwLTlBLVo+KwotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IGJvb2wgRGI8QWxsb2M+OjpwYXJzZVNlcUlkKHNpemVfdCAqT3V0KSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIERlcml2ZWQ+Citib29sIEFic3RyYWN0TWFuZ2xpbmdQYXJzZXI8QWxsb2MsIERlcml2ZWQ+OjpwYXJzZVNlcUlkKHNpemVfdCAqT3V0KSB7CiAgIGlmICghKGxvb2soKSA+PSAnMCcgJiYgbG9vaygpIDw9ICc5JykgJiYKICAgICAgICEobG9vaygpID49ICdBJyAmJiBsb29rKCkgPD0gJ1onKSkKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ5MDAsNyArNDk1Myw4IEBACiAvLyA8c3Vic3RpdHV0aW9uPiA6Oj0gU2kgIyA6OnN0ZDo6YmFzaWNfaXN0cmVhbTxjaGFyLCAgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiA+CiAvLyA8c3Vic3RpdHV0aW9uPiA6Oj0gU28gIyA6OnN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyLCAgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiA+CiAvLyA8c3Vic3RpdHV0aW9uPiA6Oj0gU2QgIyA6OnN0ZDo6YmFzaWNfaW9zdHJlYW08Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiA+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZVN1YnN0aXR1dGlvbigpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBBbGxvYz4KK05vZGUgKkFic3RyYWN0TWFuZ2xpbmdQYXJzZXI8RGVyaXZlZCwgQWxsb2M+OjpwYXJzZVN1YnN0aXR1dGlvbigpIHsKICAgaWYgKCFjb25zdW1lSWYoJ1MnKSkKICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNDkzOSw3ICs0OTkzLDcgQEAKICAgICAvLyBJdGFuaXVtIEMrKyBBQkkgNS4xLjI6IElmIGEgbmFtZSB0aGF0IHdvdWxkIHVzZSBhIGJ1aWx0LWluIDxzdWJzdGl0dXRpb24+CiAgICAgLy8gaGFzIEFCSSB0YWdzLCB0aGUgdGFncyBhcmUgYXBwZW5kZWQgdG8gdGhlIHN1YnN0aXR1dGlvbjsgdGhlIHJlc3VsdCBpcyBhCiAgICAgLy8gc3Vic3RpdHV0YWJsZSBjb21wb25lbnQuCi0gICAgTm9kZSAqV2l0aFRhZ3MgPSBwYXJzZUFiaVRhZ3MoU3BlY2lhbFN1Yik7CisgICAgTm9kZSAqV2l0aFRhZ3MgPSBnZXREZXJpdmVkKCkucGFyc2VBYmlUYWdzKFNwZWNpYWxTdWIpOwogICAgIGlmIChXaXRoVGFncyAhPSBTcGVjaWFsU3ViKSB7CiAgICAgICBTdWJzLnB1c2hfYmFjayhXaXRoVGFncyk7CiAgICAgICBTcGVjaWFsU3ViID0gV2l0aFRhZ3M7CkBAIC00OTY2LDcgKzUwMjAsOCBAQAogCiAvLyA8dGVtcGxhdGUtcGFyYW0+IDo6PSBUXyAgICAjIGZpcnN0IHRlbXBsYXRlIHBhcmFtZXRlcgogLy8gICAgICAgICAgICAgICAgICA6Oj0gVCA8cGFyYW1ldGVyLTIgbm9uLW5lZ2F0aXZlIG51bWJlcj4gXwotdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2M+IE5vZGUgKkRiPEFsbG9jPjo6cGFyc2VUZW1wbGF0ZVBhcmFtKCkgewordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEFsbG9jPgorTm9kZSAqQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlVGVtcGxhdGVQYXJhbSgpIHsKICAgaWYgKCFjb25zdW1lSWYoJ1QnKSkKICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtNTAwNywxMSArNTA2MiwxMiBAQAogLy8gICAgICAgICAgICAgICAgOjo9IDxleHByLXByaW1hcnk+ICAgICAgICAgICAgIyBzaW1wbGUgZXhwcmVzc2lvbnMKIC8vICAgICAgICAgICAgICAgIDo6PSBKIDx0ZW1wbGF0ZS1hcmc+KiBFICAgICAgICMgYXJndW1lbnQgcGFjawogLy8gICAgICAgICAgICAgICAgOjo9IExaIDxlbmNvZGluZz4gRSAgICAgICAgICAgIyBleHRlbnNpb24KLXRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jPiBOb2RlICpEYjxBbGxvYz46OnBhcnNlVGVtcGxhdGVBcmcoKSB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgQWxsb2M+CitOb2RlICpBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPERlcml2ZWQsIEFsbG9jPjo6cGFyc2VUZW1wbGF0ZUFyZygpIHsKICAgc3dpdGNoIChsb29rKCkpIHsKICAgY2FzZSAnWCc6IHsKICAgICArK0ZpcnN0OwotICAgIE5vZGUgKkFyZyA9IHBhcnNlRXhwcigpOworICAgIE5vZGUgKkFyZyA9IGdldERlcml2ZWQoKS5wYXJzZUV4cHIoKTsKICAgICBpZiAoQXJnID09IG51bGxwdHIgfHwgIWNvbnN1bWVJZignRScpKQogICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIEFyZzsKQEAgLTUwMjAsNyArNTA3Niw3IEBACiAgICAgKytGaXJzdDsKICAgICBzaXplX3QgQXJnc0JlZ2luID0gTmFtZXMuc2l6ZSgpOwogICAgIHdoaWxlICghY29uc3VtZUlmKCdFJykpIHsKLSAgICAgIE5vZGUgKkFyZyA9IHBhcnNlVGVtcGxhdGVBcmcoKTsKKyAgICAgIE5vZGUgKkFyZyA9IGdldERlcml2ZWQoKS5wYXJzZVRlbXBsYXRlQXJnKCk7CiAgICAgICBpZiAoQXJnID09IG51bGxwdHIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgTmFtZXMucHVzaF9iYWNrKEFyZyk7CkBAIC01MDMyLDIzICs1MDg4LDI0IEBACiAgICAgLy8gICAgICAgICAgICAgICAgOjo9IExaIDxlbmNvZGluZz4gRSAgICAgICAgICAgIyBleHRlbnNpb24KICAgICBpZiAobG9vaygxKSA9PSAnWicpIHsKICAgICAgIEZpcnN0ICs9IDI7Ci0gICAgICBOb2RlICpBcmcgPSBwYXJzZUVuY29kaW5nKCk7CisgICAgICBOb2RlICpBcmcgPSBnZXREZXJpdmVkKCkucGFyc2VFbmNvZGluZygpOwogICAgICAgaWYgKEFyZyA9PSBudWxscHRyIHx8ICFjb25zdW1lSWYoJ0UnKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICByZXR1cm4gQXJnOwogICAgIH0KICAgICAvLyAgICAgICAgICAgICAgICA6Oj0gPGV4cHItcHJpbWFyeT4gICAgICAgICAgICAjIHNpbXBsZSBleHByZXNzaW9ucwotICAgIHJldHVybiBwYXJzZUV4cHJQcmltYXJ5KCk7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZUV4cHJQcmltYXJ5KCk7CiAgIH0KICAgZGVmYXVsdDoKLSAgICByZXR1cm4gcGFyc2VUeXBlKCk7CisgICAgcmV0dXJuIGdldERlcml2ZWQoKS5wYXJzZVR5cGUoKTsKICAgfQogfQogCiAvLyA8dGVtcGxhdGUtYXJncz4gOjo9IEkgPHRlbXBsYXRlLWFyZz4qIEUKIC8vICAgICBleHRlbnNpb24sIHRoZSBhYmkgc2F5cyA8dGVtcGxhdGUtYXJnPisKLXRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYz4KLU5vZGUgKkRiPEFsbG9jPjo6cGFyc2VUZW1wbGF0ZUFyZ3MoYm9vbCBUYWdUZW1wbGF0ZXMpIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBBbGxvYz4KK05vZGUgKgorQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlVGVtcGxhdGVBcmdzKGJvb2wgVGFnVGVtcGxhdGVzKSB7CiAgIGlmICghY29uc3VtZUlmKCdJJykpCiAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTUwNjEsNyArNTExOCw3IEBACiAgIHdoaWxlICghY29uc3VtZUlmKCdFJykpIHsKICAgICBpZiAoVGFnVGVtcGxhdGVzKSB7CiAgICAgICBhdXRvIE9sZFBhcmFtcyA9IHN0ZDo6bW92ZShUZW1wbGF0ZVBhcmFtcyk7Ci0gICAgICBOb2RlICpBcmcgPSBwYXJzZVRlbXBsYXRlQXJnKCk7CisgICAgICBOb2RlICpBcmcgPSBnZXREZXJpdmVkKCkucGFyc2VUZW1wbGF0ZUFyZygpOwogICAgICAgVGVtcGxhdGVQYXJhbXMgPSBzdGQ6Om1vdmUoT2xkUGFyYW1zKTsKICAgICAgIGlmIChBcmcgPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MDc1LDcgKzUxMzIsNyBAQAogICAgICAgfQogICAgICAgVGVtcGxhdGVQYXJhbXMucHVzaF9iYWNrKFRhYmxlRW50cnkpOwogICAgIH0gZWxzZSB7Ci0gICAgICBOb2RlICpBcmcgPSBwYXJzZVRlbXBsYXRlQXJnKCk7CisgICAgICBOb2RlICpBcmcgPSBnZXREZXJpdmVkKCkucGFyc2VUZW1wbGF0ZUFyZygpOwogICAgICAgaWYgKEFyZyA9PSBudWxscHRyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgIE5hbWVzLnB1c2hfYmFjayhBcmcpOwpAQCAtNTA4OSw5ICs1MTQ2LDEwIEBACiAvLyBleHRlbnNpb24gICAgICA6Oj0gX19fWiA8ZW5jb2Rpbmc+IF9ibG9ja19pbnZva2UKIC8vIGV4dGVuc2lvbiAgICAgIDo6PSBfX19aIDxlbmNvZGluZz4gX2Jsb2NrX2ludm9rZTxkZWNpbWFsLWRpZ2l0PisKIC8vIGV4dGVuc2lvbiAgICAgIDo6PSBfX19aIDxlbmNvZGluZz4gX2Jsb2NrX2ludm9rZV88ZGVjaW1hbC1kaWdpdD4rCi10ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYz4gTm9kZSAqRGI8QWxsb2M+OjpwYXJzZSgpIHsKLSAgaWYgKGNvbnN1bWVJZigiX1oiKSkgewotICAgIE5vZGUgKkVuY29kaW5nID0gcGFyc2VFbmNvZGluZygpOwordGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEFsbG9jPgorTm9kZSAqQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxEZXJpdmVkLCBBbGxvYz46OnBhcnNlKCkgeworICBpZiAoY29uc3VtZUlmKCJfWiIpIHx8IGNvbnN1bWVJZigiX19aIikpIHsKKyAgICBOb2RlICpFbmNvZGluZyA9IGdldERlcml2ZWQoKS5wYXJzZUVuY29kaW5nKCk7CiAgICAgaWYgKEVuY29kaW5nID09IG51bGxwdHIpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAobG9vaygpID09ICcuJykgewpAQCAtNTEwMyw4ICs1MTYxLDggQEAKICAgICByZXR1cm4gRW5jb2Rpbmc7CiAgIH0KIAotICBpZiAoY29uc3VtZUlmKCJfX19aIikpIHsKLSAgICBOb2RlICpFbmNvZGluZyA9IHBhcnNlRW5jb2RpbmcoKTsKKyAgaWYgKGNvbnN1bWVJZigiX19fWiIpIHx8IGNvbnN1bWVJZigiX19fX1oiKSkgeworICAgIE5vZGUgKkVuY29kaW5nID0gZ2V0RGVyaXZlZCgpLnBhcnNlRW5jb2RpbmcoKTsKICAgICBpZiAoRW5jb2RpbmcgPT0gbnVsbHB0ciB8fCAhY29uc3VtZUlmKCJfYmxvY2tfaW52b2tlIikpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBib29sIFJlcXVpcmVOdW1iZXIgPSBjb25zdW1lSWYoJ18nKTsKQEAgLTUxMTcsMTMgKzUxNzUsMTggQEAKICAgICByZXR1cm4gbWFrZTxTcGVjaWFsTmFtZT4oImludm9jYXRpb24gZnVuY3Rpb24gZm9yIGJsb2NrIGluICIsIEVuY29kaW5nKTsKICAgfQogCi0gIE5vZGUgKlR5ID0gcGFyc2VUeXBlKCk7CisgIE5vZGUgKlR5ID0gZ2V0RGVyaXZlZCgpLnBhcnNlVHlwZSgpOwogICBpZiAobnVtTGVmdCgpICE9IDApCiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIHJldHVybiBUeTsKIH0KIAotfSAgLy8gbmFtZXNwYWNlIGl0YW5pdW1fZGVtYW5nbGUKLX0gIC8vIG5hbWVzcGFjZSBsbHZtCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+CitzdHJ1Y3QgTWFuZ2xpbmdQYXJzZXIgOiBBYnN0cmFjdE1hbmdsaW5nUGFyc2VyPE1hbmdsaW5nUGFyc2VyPEFsbG9jPiwgQWxsb2M+IHsKKyAgdXNpbmcgQWJzdHJhY3RNYW5nbGluZ1BhcnNlcjxNYW5nbGluZ1BhcnNlcjxBbGxvYz4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb2M+OjpBYnN0cmFjdE1hbmdsaW5nUGFyc2VyOworfTsKIAotI2VuZGlmIC8vIExMVk1fREVNQU5HTEVfSVRBTklVTURFTUFOR0xFX0gKK0RFTUFOR0xFX05BTUVTUEFDRV9FTkQKKworI2VuZGlmIC8vIERFTUFOR0xFX0lUQU5JVU1ERU1BTkdMRV9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlbWFuZ2xlL01pY3Jvc29mdERlbWFuZ2xlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlbWFuZ2xlL01pY3Jvc29mdERlbWFuZ2xlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIzZTMyNwotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVtYW5nbGUvTWljcm9zb2Z0RGVtYW5nbGUuaApAQCAtMCwwICsxLDI3NSBAQAorLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE1pY3Jvc29mdERlbWFuZ2xlLmggLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0RFTUFOR0xFX01JQ1JPU09GVF9ERU1BTkdMRV9ICisjZGVmaW5lIExMVk1fREVNQU5HTEVfTUlDUk9TT0ZUX0RFTUFOR0xFX0gKKworI2luY2x1ZGUgImxsdm0vRGVtYW5nbGUvRGVtYW5nbGVDb25maWcuaCIKKyNpbmNsdWRlICJsbHZtL0RlbWFuZ2xlL01pY3Jvc29mdERlbWFuZ2xlTm9kZXMuaCIKKyNpbmNsdWRlICJsbHZtL0RlbWFuZ2xlL1N0cmluZ1ZpZXcuaCIKKyNpbmNsdWRlICJsbHZtL0RlbWFuZ2xlL1V0aWxpdHkuaCIKKworI2luY2x1ZGUgPHV0aWxpdHk+CisKK25hbWVzcGFjZSBsbHZtIHsKK25hbWVzcGFjZSBtc19kZW1hbmdsZSB7CisvLyBUaGlzIG1lbW9yeSBhbGxvY2F0b3IgaXMgZXh0cmVtZWx5IGZhc3QsIGJ1dCBpdCBkb2Vzbid0IGNhbGwgZHRvcnMKKy8vIGZvciBhbGxvY2F0ZWQgb2JqZWN0cy4gVGhhdCBtZWFucyB5b3UgY2FuJ3QgdXNlIFNUTCBjb250YWluZXJzCisvLyAoc3VjaCBhcyBzdGQ6OnZlY3Rvcikgd2l0aCB0aGlzIGFsbG9jYXRvci4gQnV0IGl0IHBheXMgb2ZmIC0tCisvLyB0aGUgZGVtYW5nbGVyIGlzIDN4IGZhc3RlciB3aXRoIHRoaXMgYWxsb2NhdG9yIGNvbXBhcmVkIHRvIG9uZSB3aXRoCisvLyBTVEwgY29udGFpbmVycy4KK2NvbnN0ZXhwciBzaXplX3QgQWxsb2NVbml0ID0gNDA5NjsKKworY2xhc3MgQXJlbmFBbGxvY2F0b3IgeworICBzdHJ1Y3QgQWxsb2NhdG9yTm9kZSB7CisgICAgdWludDhfdCAqQnVmID0gbnVsbHB0cjsKKyAgICBzaXplX3QgVXNlZCA9IDA7CisgICAgc2l6ZV90IENhcGFjaXR5ID0gMDsKKyAgICBBbGxvY2F0b3JOb2RlICpOZXh0ID0gbnVsbHB0cjsKKyAgfTsKKworICB2b2lkIGFkZE5vZGUoc2l6ZV90IENhcGFjaXR5KSB7CisgICAgQWxsb2NhdG9yTm9kZSAqTmV3SGVhZCA9IG5ldyBBbGxvY2F0b3JOb2RlOworICAgIE5ld0hlYWQtPkJ1ZiA9IG5ldyB1aW50OF90W0NhcGFjaXR5XTsKKyAgICBOZXdIZWFkLT5OZXh0ID0gSGVhZDsKKyAgICBOZXdIZWFkLT5DYXBhY2l0eSA9IENhcGFjaXR5OworICAgIEhlYWQgPSBOZXdIZWFkOworICAgIE5ld0hlYWQtPlVzZWQgPSAwOworICB9CisKK3B1YmxpYzoKKyAgQXJlbmFBbGxvY2F0b3IoKSB7IGFkZE5vZGUoQWxsb2NVbml0KTsgfQorCisgIH5BcmVuYUFsbG9jYXRvcigpIHsKKyAgICB3aGlsZSAoSGVhZCkgeworICAgICAgYXNzZXJ0KEhlYWQtPkJ1Zik7CisgICAgICBkZWxldGVbXSBIZWFkLT5CdWY7CisgICAgICBBbGxvY2F0b3JOb2RlICpOZXh0ID0gSGVhZC0+TmV4dDsKKyAgICAgIGRlbGV0ZSBIZWFkOworICAgICAgSGVhZCA9IE5leHQ7CisgICAgfQorICB9CisKKyAgY2hhciAqYWxsb2NVbmFsaWduZWRCdWZmZXIoc2l6ZV90IExlbmd0aCkgeworICAgIHVpbnQ4X3QgKkJ1ZiA9IEhlYWQtPkJ1ZiArIEhlYWQtPlVzZWQ7CisKKyAgICBIZWFkLT5Vc2VkICs9IExlbmd0aDsKKyAgICBpZiAoSGVhZC0+VXNlZCA+IEhlYWQtPkNhcGFjaXR5KSB7CisgICAgICAvLyBJdCdzIHBvc3NpYmxlIHdlIG5lZWQgYSBidWZmZXIgd2hpY2ggaXMgbGFyZ2VyIHRoYW4gb3VyIGRlZmF1bHQgdW5pdAorICAgICAgLy8gc2l6ZSwgc28gd2UgbmVlZCB0byBiZSBjYXJlZnVsIHRvIGFkZCBhIG5vZGUgd2l0aCBjYXBhY2l0eSB0aGF0IGlzIGF0CisgICAgICAvLyBsZWFzdCBhcyBsYXJnZSBhcyB3aGF0IHdlIG5lZWQuCisgICAgICBhZGROb2RlKHN0ZDo6bWF4KEFsbG9jVW5pdCwgTGVuZ3RoKSk7CisgICAgICBIZWFkLT5Vc2VkID0gTGVuZ3RoOworICAgICAgQnVmID0gSGVhZC0+QnVmOworICAgIH0KKworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIgKj4oQnVmKTsKKyAgfQorCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPiBUICphbGxvY0FycmF5KHNpemVfdCBDb3VudCkgeworCisgICAgc2l6ZV90IFNpemUgPSBDb3VudCAqIHNpemVvZihUKTsKKyAgICBhc3NlcnQoSGVhZCAmJiBIZWFkLT5CdWYpOworCisgICAgc2l6ZV90IFAgPSAoc2l6ZV90KUhlYWQtPkJ1ZiArIEhlYWQtPlVzZWQ7CisgICAgdWludHB0cl90IEFsaWduZWRQID0KKyAgICAgICAgKCgoc2l6ZV90KVAgKyBhbGlnbm9mKFQpIC0gMSkgJiB+KHNpemVfdCkoYWxpZ25vZihUKSAtIDEpKTsKKyAgICB1aW50OF90ICpQUCA9ICh1aW50OF90ICopQWxpZ25lZFA7CisgICAgc2l6ZV90IEFkanVzdG1lbnQgPSBBbGlnbmVkUCAtIFA7CisKKyAgICBIZWFkLT5Vc2VkICs9IFNpemUgKyBBZGp1c3RtZW50OworICAgIGlmIChIZWFkLT5Vc2VkIDwgSGVhZC0+Q2FwYWNpdHkpCisgICAgICByZXR1cm4gbmV3IChQUCkgVFtDb3VudF0oKTsKKworICAgIGFkZE5vZGUoQWxsb2NVbml0KTsKKyAgICBIZWFkLT5Vc2VkID0gU2l6ZTsKKyAgICByZXR1cm4gbmV3IChIZWFkLT5CdWYpIFRbQ291bnRdKCk7CisgIH0KKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gVCAqYWxsb2MoQXJncyAmJi4uLiBDb25zdHJ1Y3RvckFyZ3MpIHsKKworICAgIHNpemVfdCBTaXplID0gc2l6ZW9mKFQpOworICAgIGFzc2VydChIZWFkICYmIEhlYWQtPkJ1Zik7CisKKyAgICBzaXplX3QgUCA9IChzaXplX3QpSGVhZC0+QnVmICsgSGVhZC0+VXNlZDsKKyAgICB1aW50cHRyX3QgQWxpZ25lZFAgPQorICAgICAgICAoKChzaXplX3QpUCArIGFsaWdub2YoVCkgLSAxKSAmIH4oc2l6ZV90KShhbGlnbm9mKFQpIC0gMSkpOworICAgIHVpbnQ4X3QgKlBQID0gKHVpbnQ4X3QgKilBbGlnbmVkUDsKKyAgICBzaXplX3QgQWRqdXN0bWVudCA9IEFsaWduZWRQIC0gUDsKKworICAgIEhlYWQtPlVzZWQgKz0gU2l6ZSArIEFkanVzdG1lbnQ7CisgICAgaWYgKEhlYWQtPlVzZWQgPCBIZWFkLT5DYXBhY2l0eSkKKyAgICAgIHJldHVybiBuZXcgKFBQKSBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihDb25zdHJ1Y3RvckFyZ3MpLi4uKTsKKworICAgIGFkZE5vZGUoQWxsb2NVbml0KTsKKyAgICBIZWFkLT5Vc2VkID0gU2l6ZTsKKyAgICByZXR1cm4gbmV3IChIZWFkLT5CdWYpIFQoc3RkOjpmb3J3YXJkPEFyZ3M+KENvbnN0cnVjdG9yQXJncykuLi4pOworICB9CisKK3ByaXZhdGU6CisgIEFsbG9jYXRvck5vZGUgKkhlYWQgPSBudWxscHRyOworfTsKKworc3RydWN0IEJhY2tyZWZDb250ZXh0IHsKKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgTWF4ID0gMTA7CisKKyAgVHlwZU5vZGUgKkZ1bmN0aW9uUGFyYW1zW01heF07CisgIHNpemVfdCBGdW5jdGlvblBhcmFtQ291bnQgPSAwOworCisgIC8vIFRoZSBmaXJzdCAxMCBCYWNrUmVmZXJlbmNlcyBpbiBhIG1hbmdsZWQgbmFtZSBjYW4gYmUgYmFjay1yZWZlcmVuY2VkIGJ5CisgIC8vIHNwZWNpYWwgbmFtZSBAWzAtOV0uIFRoaXMgaXMgYSBzdG9yYWdlIGZvciB0aGUgZmlyc3QgMTAgQmFja1JlZmVyZW5jZXMuCisgIE5hbWVkSWRlbnRpZmllck5vZGUgKk5hbWVzW01heF07CisgIHNpemVfdCBOYW1lc0NvdW50ID0gMDsKK307CisKK2VudW0gY2xhc3MgUXVhbGlmaWVyTWFuZ2xlTW9kZSB7IERyb3AsIE1hbmdsZSwgUmVzdWx0IH07CisKK2VudW0gTmFtZUJhY2tyZWZCZWhhdmlvciA6IHVpbnQ4X3QgeworICBOQkJfTm9uZSA9IDAsICAgICAgICAgIC8vIGRvbid0IHNhdmUgYW55IG5hbWVzIGFzIGJhY2tyZWZzLgorICBOQkJfVGVtcGxhdGUgPSAxIDw8IDAsIC8vIHNhdmUgdGVtcGxhdGUgaW5zdGFuYXRpb25zLgorICBOQkJfU2ltcGxlID0gMSA8PCAxLCAgIC8vIHNhdmUgc2ltcGxlIG5hbWVzLgorfTsKKworZW51bSBjbGFzcyBGdW5jdGlvbklkZW50aWZpZXJDb2RlR3JvdXAgeyBCYXNpYywgVW5kZXIsIERvdWJsZVVuZGVyIH07CisKKy8vIERlbWFuZ2xlciBjbGFzcyB0YWtlcyB0aGUgbWFpbiByb2xlIGluIGRlbWFuZ2xpbmcgc3ltYm9scy4KKy8vIEl0IGhhcyBhIHNldCBvZiBmdW5jdGlvbnMgdG8gcGFyc2UgbWFuZ2xlZCBzeW1ib2xzIGludG8gVHlwZSBpbnN0YW5jZXMuCisvLyBJdCBhbHNvIGhhcyBhIHNldCBvZiBmdW5jdGlvbnMgdG8gY29udmVydCBUeXBlIGluc3RhbmNlcyB0byBzdHJpbmdzLgorY2xhc3MgRGVtYW5nbGVyIHsKK3B1YmxpYzoKKyAgRGVtYW5nbGVyKCkgPSBkZWZhdWx0OworICB2aXJ0dWFsIH5EZW1hbmdsZXIoKSA9IGRlZmF1bHQ7CisKKyAgLy8gWW91IGFyZSBzdXBwb3NlZCB0byBjYWxsIHBhcnNlKCkgZmlyc3QgYW5kIHRoZW4gY2hlY2sgaWYgZXJyb3IgaXMgdHJ1ZS4gIElmCisgIC8vIGl0IGlzIGZhbHNlLCBjYWxsIG91dHB1dCgpIHRvIHdyaXRlIHRoZSBmb3JtYXR0ZWQgbmFtZSB0byB0aGUgZ2l2ZW4gc3RyZWFtLgorICBTeW1ib2xOb2RlICpwYXJzZShTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSk7CisKKyAgVGFnVHlwZU5vZGUgKnBhcnNlVGFnVW5pcXVlTmFtZShTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSk7CisKKyAgLy8gVHJ1ZSBpZiBhbiBlcnJvciBvY2N1cnJlZC4KKyAgYm9vbCBFcnJvciA9IGZhbHNlOworCisgIHZvaWQgZHVtcEJhY2tSZWZlcmVuY2VzKCk7CisKK3ByaXZhdGU6CisgIFN5bWJvbE5vZGUgKmRlbWFuZ2xlRW5jb2RlZFN5bWJvbChTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxpZmllZE5hbWVOb2RlICpRTik7CisKKyAgVmFyaWFibGVTeW1ib2xOb2RlICpkZW1hbmdsZVZhcmlhYmxlRW5jb2RpbmcoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2VDbGFzcyBTQyk7CisgIEZ1bmN0aW9uU3ltYm9sTm9kZSAqZGVtYW5nbGVGdW5jdGlvbkVuY29kaW5nKFN0cmluZ1ZpZXcgJk1hbmdsZWROYW1lKTsKKworICBRdWFsaWZpZXJzIGRlbWFuZ2xlUG9pbnRlckV4dFF1YWxpZmllcnMoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworCisgIC8vIFBhcnNlciBmdW5jdGlvbnMuIFRoaXMgaXMgYSByZWN1cnNpdmUtZGVzY2VudCBwYXJzZXIuCisgIFR5cGVOb2RlICpkZW1hbmdsZVR5cGUoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUsIFF1YWxpZmllck1hbmdsZU1vZGUgUU1NKTsKKyAgUHJpbWl0aXZlVHlwZU5vZGUgKmRlbWFuZ2xlUHJpbWl0aXZlVHlwZShTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSk7CisgIEN1c3RvbVR5cGVOb2RlICpkZW1hbmdsZUN1c3RvbVR5cGUoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworICBUYWdUeXBlTm9kZSAqZGVtYW5nbGVDbGFzc1R5cGUoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworICBQb2ludGVyVHlwZU5vZGUgKmRlbWFuZ2xlUG9pbnRlclR5cGUoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworICBQb2ludGVyVHlwZU5vZGUgKmRlbWFuZ2xlTWVtYmVyUG9pbnRlclR5cGUoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworICBGdW5jdGlvblNpZ25hdHVyZU5vZGUgKmRlbWFuZ2xlRnVuY3Rpb25UeXBlKFN0cmluZ1ZpZXcgJk1hbmdsZWROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgSGFzVGhpc1F1YWxzKTsKKworICBBcnJheVR5cGVOb2RlICpkZW1hbmdsZUFycmF5VHlwZShTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSk7CisKKyAgTm9kZUFycmF5Tm9kZSAqZGVtYW5nbGVUZW1wbGF0ZVBhcmFtZXRlckxpc3QoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworICBOb2RlQXJyYXlOb2RlICpkZW1hbmdsZUZ1bmN0aW9uUGFyYW1ldGVyTGlzdChTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSk7CisKKyAgc3RkOjpwYWlyPHVpbnQ2NF90LCBib29sPiBkZW1hbmdsZU51bWJlcihTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSk7CisgIHVpbnQ2NF90IGRlbWFuZ2xlVW5zaWduZWQoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworICBpbnQ2NF90IGRlbWFuZ2xlU2lnbmVkKFN0cmluZ1ZpZXcgJk1hbmdsZWROYW1lKTsKKworICB2b2lkIG1lbW9yaXplU3RyaW5nKFN0cmluZ1ZpZXcgcyk7CisgIHZvaWQgbWVtb3JpemVJZGVudGlmaWVyKElkZW50aWZpZXJOb2RlICpJZGVudGlmaWVyKTsKKworICAvLy8gQWxsb2NhdGUgYSBjb3B5IG9mIFxwIEJvcnJvd2VkIGludG8gbWVtb3J5IHRoYXQgd2Ugb3duLgorICBTdHJpbmdWaWV3IGNvcHlTdHJpbmcoU3RyaW5nVmlldyBCb3Jyb3dlZCk7CisKKyAgUXVhbGlmaWVkTmFtZU5vZGUgKmRlbWFuZ2xlRnVsbHlRdWFsaWZpZWRUeXBlTmFtZShTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSk7CisgIFF1YWxpZmllZE5hbWVOb2RlICpkZW1hbmdsZUZ1bGx5UXVhbGlmaWVkU3ltYm9sTmFtZShTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSk7CisKKyAgSWRlbnRpZmllck5vZGUgKmRlbWFuZ2xlVW5xdWFsaWZpZWRUeXBlTmFtZShTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIE1lbW9yaXplKTsKKyAgSWRlbnRpZmllck5vZGUgKmRlbWFuZ2xlVW5xdWFsaWZpZWRTeW1ib2xOYW1lKFN0cmluZ1ZpZXcgJk1hbmdsZWROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUJhY2tyZWZCZWhhdmlvciBOQkIpOworCisgIFF1YWxpZmllZE5hbWVOb2RlICpkZW1hbmdsZU5hbWVTY29wZUNoYWluKFN0cmluZ1ZpZXcgJk1hbmdsZWROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyTm9kZSAqVW5xdWFsaWZpZWROYW1lKTsKKyAgSWRlbnRpZmllck5vZGUgKmRlbWFuZ2xlTmFtZVNjb3BlUGllY2UoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworCisgIE5hbWVkSWRlbnRpZmllck5vZGUgKmRlbWFuZ2xlQmFja1JlZk5hbWUoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworICBJZGVudGlmaWVyTm9kZSAqZGVtYW5nbGVUZW1wbGF0ZUluc3RhbnRpYXRpb25OYW1lKFN0cmluZ1ZpZXcgJk1hbmdsZWROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVCYWNrcmVmQmVoYXZpb3IgTkJCKTsKKyAgSWRlbnRpZmllck5vZGUgKmRlbWFuZ2xlRnVuY3Rpb25JZGVudGlmaWVyQ29kZShTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSk7CisgIElkZW50aWZpZXJOb2RlICoKKyAgZGVtYW5nbGVGdW5jdGlvbklkZW50aWZpZXJDb2RlKFN0cmluZ1ZpZXcgJk1hbmdsZWROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25JZGVudGlmaWVyQ29kZUdyb3VwIEdyb3VwKTsKKyAgU3RydWN0b3JJZGVudGlmaWVyTm9kZSAqZGVtYW5nbGVTdHJ1Y3RvcklkZW50aWZpZXIoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgSXNEZXN0cnVjdG9yKTsKKyAgQ29udmVyc2lvbk9wZXJhdG9ySWRlbnRpZmllck5vZGUgKgorICBkZW1hbmdsZUNvbnZlcnNpb25PcGVyYXRvcklkZW50aWZpZXIoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworICBMaXRlcmFsT3BlcmF0b3JJZGVudGlmaWVyTm9kZSAqCisgIGRlbWFuZ2xlTGl0ZXJhbE9wZXJhdG9ySWRlbnRpZmllcihTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSk7CisKKyAgU3ltYm9sTm9kZSAqZGVtYW5nbGVTcGVjaWFsSW50cmluc2ljKFN0cmluZ1ZpZXcgJk1hbmdsZWROYW1lKTsKKyAgU3BlY2lhbFRhYmxlU3ltYm9sTm9kZSAqCisgIGRlbWFuZ2xlU3BlY2lhbFRhYmxlU3ltYm9sTm9kZShTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwZWNpYWxJbnRyaW5zaWNLaW5kIFNJSyk7CisgIExvY2FsU3RhdGljR3VhcmRWYXJpYWJsZU5vZGUgKgorICBkZW1hbmdsZUxvY2FsU3RhdGljR3VhcmQoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworICBWYXJpYWJsZVN5bWJvbE5vZGUgKmRlbWFuZ2xlVW50eXBlZFZhcmlhYmxlKEFyZW5hQWxsb2NhdG9yICZBcmVuYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdWaWV3IFZhcmlhYmxlTmFtZSk7CisgIFZhcmlhYmxlU3ltYm9sTm9kZSAqCisgIGRlbWFuZ2xlUnR0aUJhc2VDbGFzc0Rlc2NyaXB0b3JOb2RlKEFyZW5hQWxsb2NhdG9yICZBcmVuYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworICBGdW5jdGlvblN5bWJvbE5vZGUgKmRlbWFuZ2xlSW5pdEZpbmlTdHViKFN0cmluZ1ZpZXcgJk1hbmdsZWROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgSXNEZXN0cnVjdG9yKTsKKworICBOYW1lZElkZW50aWZpZXJOb2RlICpkZW1hbmdsZVNpbXBsZU5hbWUoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIE1lbW9yaXplKTsKKyAgTmFtZWRJZGVudGlmaWVyTm9kZSAqZGVtYW5nbGVBbm9ueW1vdXNOYW1lc3BhY2VOYW1lKFN0cmluZ1ZpZXcgJk1hbmdsZWROYW1lKTsKKyAgTmFtZWRJZGVudGlmaWVyTm9kZSAqZGVtYW5nbGVMb2NhbGx5U2NvcGVkTmFtZVBpZWNlKFN0cmluZ1ZpZXcgJk1hbmdsZWROYW1lKTsKKyAgRW5jb2RlZFN0cmluZ0xpdGVyYWxOb2RlICpkZW1hbmdsZVN0cmluZ0xpdGVyYWwoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworICBGdW5jdGlvblN5bWJvbE5vZGUgKmRlbWFuZ2xlVmNhbGxUaHVua05vZGUoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworCisgIFN0cmluZ1ZpZXcgZGVtYW5nbGVTaW1wbGVTdHJpbmcoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUsIGJvb2wgTWVtb3JpemUpOworCisgIEZ1bmNDbGFzcyBkZW1hbmdsZUZ1bmN0aW9uQ2xhc3MoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworICBDYWxsaW5nQ29udiBkZW1hbmdsZUNhbGxpbmdDb252ZW50aW9uKFN0cmluZ1ZpZXcgJk1hbmdsZWROYW1lKTsKKyAgU3RvcmFnZUNsYXNzIGRlbWFuZ2xlVmFyaWFibGVTdG9yYWdlQ2xhc3MoU3RyaW5nVmlldyAmTWFuZ2xlZE5hbWUpOworICBib29sIGRlbWFuZ2xlVGhyb3dTcGVjaWZpY2F0aW9uKFN0cmluZ1ZpZXcgJk1hbmdsZWROYW1lKTsKKyAgd2NoYXJfdCBkZW1hbmdsZVdjaGFyTGl0ZXJhbChTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSk7CisgIHVpbnQ4X3QgZGVtYW5nbGVDaGFyTGl0ZXJhbChTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSk7CisKKyAgc3RkOjpwYWlyPFF1YWxpZmllcnMsIGJvb2w+IGRlbWFuZ2xlUXVhbGlmaWVycyhTdHJpbmdWaWV3ICZNYW5nbGVkTmFtZSk7CisKKyAgLy8gTWVtb3J5IGFsbG9jYXRvci4KKyAgQXJlbmFBbGxvY2F0b3IgQXJlbmE7CisKKyAgLy8gQSBzaW5nbGUgdHlwZSB1c2VzIG9uZSBnbG9iYWwgYmFjay1yZWYgdGFibGUgZm9yIGFsbCBmdW5jdGlvbiBwYXJhbXMuCisgIC8vIFRoaXMgbWVhbnMgYmFjay1yZWZzIGNhbiBldmVuIGdvICJpbnRvIiBvdGhlciB0eXBlcy4gIEV4YW1wbGVzOgorICAvLworICAvLyAgLy8gU2Vjb25kIGludCogaXMgYSBiYWNrLXJlZiB0byBmaXJzdC4KKyAgLy8gIHZvaWQgZm9vKGludCAqLCBpbnQqKTsKKyAgLy8KKyAgLy8gIC8vIFNlY29uZCBpbnQqIGlzIG5vdCBhIGJhY2stcmVmIHRvIGZpcnN0IChmaXJzdCBpcyBub3QgYSBmdW5jdGlvbiBwYXJhbSkuCisgIC8vICBpbnQqIGZvbyhpbnQqKTsKKyAgLy8KKyAgLy8gIC8vIFNlY29uZCBpbnQqIGlzIGEgYmFjay1yZWYgdG8gZmlyc3QgKEFMTCBmdW5jdGlvbiB0eXBlcyBzaGFyZSB0aGUgc2FtZQorICAvLyAgLy8gYmFjay1yZWYgbWFwLgorICAvLyAgdXNpbmcgRiA9IHZvaWQoKikoaW50Kik7CisgIC8vICBGIEcoaW50ICopOworICBCYWNrcmVmQ29udGV4dCBCYWNrcmVmczsKK307CisKK30gLy8gbmFtZXNwYWNlIG1zX2RlbWFuZ2xlCit9IC8vIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZiAvLyBMTFZNX0RFTUFOR0xFX01JQ1JPU09GVF9ERU1BTkdMRV9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlbWFuZ2xlL01pY3Jvc29mdERlbWFuZ2xlTm9kZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVtYW5nbGUvTWljcm9zb2Z0RGVtYW5nbGVOb2Rlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0Nzg0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlbWFuZ2xlL01pY3Jvc29mdERlbWFuZ2xlTm9kZXMuaApAQCAtMCwwICsxLDYyNCBAQAorLy89PT0tIE1pY3Jvc29mdERlbWFuZ2xlTm9kZXMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCisvLyBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgQVNUIG5vZGVzIHVzZWQgaW4gdGhlIE1TVkMgZGVtYW5nbGVyLgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9TVVBQT1JUX01JQ1JPU09GVERFTUFOR0xFTk9ERVNfSAorI2RlZmluZSBMTFZNX1NVUFBPUlRfTUlDUk9TT0ZUREVNQU5HTEVOT0RFU19ICisKKyNpbmNsdWRlICJsbHZtL0RlbWFuZ2xlL0RlbWFuZ2xlQ29uZmlnLmgiCisjaW5jbHVkZSAibGx2bS9EZW1hbmdsZS9TdHJpbmdWaWV3LmgiCisjaW5jbHVkZSA8YXJyYXk+CisKK25hbWVzcGFjZSBsbHZtIHsKK25hbWVzcGFjZSBpdGFuaXVtX2RlbWFuZ2xlIHsKK2NsYXNzIE91dHB1dFN0cmVhbTsKK30KK30KKwordXNpbmcgbGx2bTo6aXRhbml1bV9kZW1hbmdsZTo6T3V0cHV0U3RyZWFtOwordXNpbmcgbGx2bTo6aXRhbml1bV9kZW1hbmdsZTo6U3RyaW5nVmlldzsKKworbmFtZXNwYWNlIGxsdm0geworbmFtZXNwYWNlIG1zX2RlbWFuZ2xlIHsKKworLy8gU3RvcmFnZSBjbGFzc2VzCitlbnVtIFF1YWxpZmllcnMgOiB1aW50OF90IHsKKyAgUV9Ob25lID0gMCwKKyAgUV9Db25zdCA9IDEgPDwgMCwKKyAgUV9Wb2xhdGlsZSA9IDEgPDwgMSwKKyAgUV9GYXIgPSAxIDw8IDIsCisgIFFfSHVnZSA9IDEgPDwgMywKKyAgUV9VbmFsaWduZWQgPSAxIDw8IDQsCisgIFFfUmVzdHJpY3QgPSAxIDw8IDUsCisgIFFfUG9pbnRlcjY0ID0gMSA8PCA2Cit9OworCitlbnVtIGNsYXNzIFN0b3JhZ2VDbGFzcyA6IHVpbnQ4X3QgeworICBOb25lLAorICBQcml2YXRlU3RhdGljLAorICBQcm90ZWN0ZWRTdGF0aWMsCisgIFB1YmxpY1N0YXRpYywKKyAgR2xvYmFsLAorICBGdW5jdGlvbkxvY2FsU3RhdGljLAorfTsKKworZW51bSBjbGFzcyBQb2ludGVyQWZmaW5pdHkgeyBOb25lLCBQb2ludGVyLCBSZWZlcmVuY2UsIFJWYWx1ZVJlZmVyZW5jZSB9OworZW51bSBjbGFzcyBGdW5jdGlvblJlZlF1YWxpZmllciB7IE5vbmUsIFJlZmVyZW5jZSwgUlZhbHVlUmVmZXJlbmNlIH07CisKKy8vIENhbGxpbmcgY29udmVudGlvbnMKK2VudW0gY2xhc3MgQ2FsbGluZ0NvbnYgOiB1aW50OF90IHsKKyAgTm9uZSwKKyAgQ2RlY2wsCisgIFBhc2NhbCwKKyAgVGhpc2NhbGwsCisgIFN0ZGNhbGwsCisgIEZhc3RjYWxsLAorICBDbHJjYWxsLAorICBFYWJpLAorICBWZWN0b3JjYWxsLAorICBSZWdjYWxsLAorfTsKKworZW51bSBjbGFzcyBSZWZlcmVuY2VLaW5kIDogdWludDhfdCB7IE5vbmUsIExWYWx1ZVJlZiwgUlZhbHVlUmVmIH07CisKK2VudW0gT3V0cHV0RmxhZ3MgeworICBPRl9EZWZhdWx0ID0gMCwKKyAgT0ZfTm9DYWxsaW5nQ29udmVudGlvbiA9IDEsCisgIE9GX05vVGFnU3BlY2lmaWVyID0gMiwKK307CisKKy8vIFR5cGVzCitlbnVtIGNsYXNzIFByaW1pdGl2ZUtpbmQgeworICBWb2lkLAorICBCb29sLAorICBDaGFyLAorICBTY2hhciwKKyAgVWNoYXIsCisgIENoYXIxNiwKKyAgQ2hhcjMyLAorICBTaG9ydCwKKyAgVXNob3J0LAorICBJbnQsCisgIFVpbnQsCisgIExvbmcsCisgIFVsb25nLAorICBJbnQ2NCwKKyAgVWludDY0LAorICBXY2hhciwKKyAgRmxvYXQsCisgIERvdWJsZSwKKyAgTGRvdWJsZSwKKyAgTnVsbHB0ciwKK307CisKK2VudW0gY2xhc3MgQ2hhcktpbmQgeworICBDaGFyLAorICBDaGFyMTYsCisgIENoYXIzMiwKKyAgV2NoYXIsCit9OworCitlbnVtIGNsYXNzIEludHJpbnNpY0Z1bmN0aW9uS2luZCA6IHVpbnQ4X3QgeworICBOb25lLAorICBOZXcsICAgICAgICAgICAgICAgICAgICAgICAgLy8gPzIgIyBvcGVyYXRvciBuZXcKKyAgRGVsZXRlLCAgICAgICAgICAgICAgICAgICAgIC8vID8zICMgb3BlcmF0b3IgZGVsZXRlCisgIEFzc2lnbiwgICAgICAgICAgICAgICAgICAgICAvLyA/NCAjIG9wZXJhdG9yPQorICBSaWdodFNoaWZ0LCAgICAgICAgICAgICAgICAgLy8gPzUgIyBvcGVyYXRvcj4+CisgIExlZnRTaGlmdCwgICAgICAgICAgICAgICAgICAvLyA/NiAjIG9wZXJhdG9yPDwKKyAgTG9naWNhbE5vdCwgICAgICAgICAgICAgICAgIC8vID83ICMgb3BlcmF0b3IhCisgIEVxdWFscywgICAgICAgICAgICAgICAgICAgICAvLyA/OCAjIG9wZXJhdG9yPT0KKyAgTm90RXF1YWxzLCAgICAgICAgICAgICAgICAgIC8vID85ICMgb3BlcmF0b3IhPQorICBBcnJheVN1YnNjcmlwdCwgICAgICAgICAgICAgLy8gP0EgIyBvcGVyYXRvcltdCisgIFBvaW50ZXIsICAgICAgICAgICAgICAgICAgICAvLyA/QyAjIG9wZXJhdG9yLT4KKyAgRGVyZWZlcmVuY2UsICAgICAgICAgICAgICAgIC8vID9EICMgb3BlcmF0b3IqCisgIEluY3JlbWVudCwgICAgICAgICAgICAgICAgICAvLyA/RSAjIG9wZXJhdG9yKysKKyAgRGVjcmVtZW50LCAgICAgICAgICAgICAgICAgIC8vID9GICMgb3BlcmF0b3ItLQorICBNaW51cywgICAgICAgICAgICAgICAgICAgICAgLy8gP0cgIyBvcGVyYXRvci0KKyAgUGx1cywgICAgICAgICAgICAgICAgICAgICAgIC8vID9IICMgb3BlcmF0b3IrCisgIEJpdHdpc2VBbmQsICAgICAgICAgICAgICAgICAvLyA/SSAjIG9wZXJhdG9yJgorICBNZW1iZXJQb2ludGVyLCAgICAgICAgICAgICAgLy8gP0ogIyBvcGVyYXRvci0+KgorICBEaXZpZGUsICAgICAgICAgICAgICAgICAgICAgLy8gP0sgIyBvcGVyYXRvci8KKyAgTW9kdWx1cywgICAgICAgICAgICAgICAgICAgIC8vID9MICMgb3BlcmF0b3IlCisgIExlc3NUaGFuLCAgICAgICAgICAgICAgICAgICAvLyA/TSBvcGVyYXRvcjwKKyAgTGVzc1RoYW5FcXVhbCwgICAgICAgICAgICAgIC8vID9OIG9wZXJhdG9yPD0KKyAgR3JlYXRlclRoYW4sICAgICAgICAgICAgICAgIC8vID9PIG9wZXJhdG9yPgorICBHcmVhdGVyVGhhbkVxdWFsLCAgICAgICAgICAgLy8gP1Agb3BlcmF0b3I+PQorICBDb21tYSwgICAgICAgICAgICAgICAgICAgICAgLy8gP1Egb3BlcmF0b3IsCisgIFBhcmVucywgICAgICAgICAgICAgICAgICAgICAvLyA/UiBvcGVyYXRvcigpCisgIEJpdHdpc2VOb3QsICAgICAgICAgICAgICAgICAvLyA/UyBvcGVyYXRvcn4KKyAgQml0d2lzZVhvciwgICAgICAgICAgICAgICAgIC8vID9UIG9wZXJhdG9yXgorICBCaXR3aXNlT3IsICAgICAgICAgICAgICAgICAgLy8gP1Ugb3BlcmF0b3J8CisgIExvZ2ljYWxBbmQsICAgICAgICAgICAgICAgICAvLyA/ViBvcGVyYXRvciYmCisgIExvZ2ljYWxPciwgICAgICAgICAgICAgICAgICAvLyA/VyBvcGVyYXRvcnx8CisgIFRpbWVzRXF1YWwsICAgICAgICAgICAgICAgICAvLyA/WCBvcGVyYXRvcio9CisgIFBsdXNFcXVhbCwgICAgICAgICAgICAgICAgICAvLyA/WSBvcGVyYXRvcis9CisgIE1pbnVzRXF1YWwsICAgICAgICAgICAgICAgICAvLyA/WiBvcGVyYXRvci09CisgIERpdkVxdWFsLCAgICAgICAgICAgICAgICAgICAvLyA/XzAgb3BlcmF0b3IvPQorICBNb2RFcXVhbCwgICAgICAgICAgICAgICAgICAgLy8gP18xIG9wZXJhdG9yJT0KKyAgUnNoRXF1YWwsICAgICAgICAgICAgICAgICAgIC8vID9fMiBvcGVyYXRvcj4+PQorICBMc2hFcXVhbCwgICAgICAgICAgICAgICAgICAgLy8gP18zIG9wZXJhdG9yPDw9CisgIEJpdHdpc2VBbmRFcXVhbCwgICAgICAgICAgICAvLyA/XzQgb3BlcmF0b3ImPQorICBCaXR3aXNlT3JFcXVhbCwgICAgICAgICAgICAgLy8gP181IG9wZXJhdG9yfD0KKyAgQml0d2lzZVhvckVxdWFsLCAgICAgICAgICAgIC8vID9fNiBvcGVyYXRvcl49CisgIFZiYXNlRHRvciwgICAgICAgICAgICAgICAgICAvLyA/X0QgIyB2YmFzZSBkZXN0cnVjdG9yCisgIFZlY0RlbER0b3IsICAgICAgICAgICAgICAgICAvLyA/X0UgIyB2ZWN0b3IgZGVsZXRpbmcgZGVzdHJ1Y3RvcgorICBEZWZhdWx0Q3RvckNsb3N1cmUsICAgICAgICAgLy8gP19GICMgZGVmYXVsdCBjb25zdHJ1Y3RvciBjbG9zdXJlCisgIFNjYWxhckRlbER0b3IsICAgICAgICAgICAgICAvLyA/X0cgIyBzY2FsYXIgZGVsZXRpbmcgZGVzdHJ1Y3RvcgorICBWZWNDdG9ySXRlciwgICAgICAgICAgICAgICAgLy8gP19IICMgdmVjdG9yIGNvbnN0cnVjdG9yIGl0ZXJhdG9yCisgIFZlY0R0b3JJdGVyLCAgICAgICAgICAgICAgICAvLyA/X0kgIyB2ZWN0b3IgZGVzdHJ1Y3RvciBpdGVyYXRvcgorICBWZWNWYmFzZUN0b3JJdGVyLCAgICAgICAgICAgLy8gP19KICMgdmVjdG9yIHZiYXNlIGNvbnN0cnVjdG9yIGl0ZXJhdG9yCisgIFZkaXNwTWFwLCAgICAgICAgICAgICAgICAgICAvLyA/X0sgIyB2aXJ0dWFsIGRpc3BsYWNlbWVudCBtYXAKKyAgRUhWZWNDdG9ySXRlciwgICAgICAgICAgICAgIC8vID9fTCAjIGVoIHZlY3RvciBjb25zdHJ1Y3RvciBpdGVyYXRvcgorICBFSFZlY0R0b3JJdGVyLCAgICAgICAgICAgICAgLy8gP19NICMgZWggdmVjdG9yIGRlc3RydWN0b3IgaXRlcmF0b3IKKyAgRUhWZWNWYmFzZUN0b3JJdGVyLCAgICAgICAgIC8vID9fTiAjIGVoIHZlY3RvciB2YmFzZSBjb25zdHJ1Y3RvciBpdGVyYXRvcgorICBDb3B5Q3RvckNsb3N1cmUsICAgICAgICAgICAgLy8gP19PICMgY29weSBjb25zdHJ1Y3RvciBjbG9zdXJlCisgIExvY2FsVmZ0YWJsZUN0b3JDbG9zdXJlLCAgICAvLyA/X1QgIyBsb2NhbCB2ZnRhYmxlIGNvbnN0cnVjdG9yIGNsb3N1cmUKKyAgQXJyYXlOZXcsICAgICAgICAgICAgICAgICAgIC8vID9fVSBvcGVyYXRvciBuZXdbXQorICBBcnJheURlbGV0ZSwgICAgICAgICAgICAgICAgLy8gP19WIG9wZXJhdG9yIGRlbGV0ZVtdCisgIE1hblZlY3RvckN0b3JJdGVyLCAgICAgICAgICAvLyA/X19BIG1hbmFnZWQgdmVjdG9yIGN0b3IgaXRlcmF0b3IKKyAgTWFuVmVjdG9yRHRvckl0ZXIsICAgICAgICAgIC8vID9fX0IgbWFuYWdlZCB2ZWN0b3IgZHRvciBpdGVyYXRvcgorICBFSFZlY3RvckNvcHlDdG9ySXRlciwgICAgICAgLy8gP19fQyBFSCB2ZWN0b3IgY29weSBjdG9yIGl0ZXJhdG9yCisgIEVIVmVjdG9yVmJhc2VDb3B5Q3Rvckl0ZXIsICAvLyA/X19EIEVIIHZlY3RvciB2YmFzZSBjb3B5IGN0b3IgaXRlcmF0b3IKKyAgVmVjdG9yQ29weUN0b3JJdGVyLCAgICAgICAgIC8vID9fX0cgdmVjdG9yIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3IKKyAgVmVjdG9yVmJhc2VDb3B5Q3Rvckl0ZXIsICAgIC8vID9fX0ggdmVjdG9yIHZiYXNlIGNvcHkgY29uc3RydWN0b3IgaXRlcmF0b3IKKyAgTWFuVmVjdG9yVmJhc2VDb3B5Q3Rvckl0ZXIsIC8vID9fX0kgbWFuYWdlZCB2ZWN0b3IgdmJhc2UgY29weSBjb25zdHJ1Y3RvcgorICBDb0F3YWl0LCAgICAgICAgICAgICAgICAgICAgLy8gP19fTCBjb19hd2FpdAorICBTcGFjZXNoaXAsICAgICAgICAgICAgICAgICAgLy8gb3BlcmF0b3I8PT4KKyAgTWF4SW50cmluc2ljCit9OworCitlbnVtIGNsYXNzIFNwZWNpYWxJbnRyaW5zaWNLaW5kIHsKKyAgTm9uZSwKKyAgVmZ0YWJsZSwKKyAgVmJ0YWJsZSwKKyAgVHlwZW9mLAorICBWY2FsbFRodW5rLAorICBMb2NhbFN0YXRpY0d1YXJkLAorICBTdHJpbmdMaXRlcmFsU3ltYm9sLAorICBVZHRSZXR1cm5pbmcsCisgIFVua25vd24sCisgIER5bmFtaWNJbml0aWFsaXplciwKKyAgRHluYW1pY0F0ZXhpdERlc3RydWN0b3IsCisgIFJ0dGlUeXBlRGVzY3JpcHRvciwKKyAgUnR0aUJhc2VDbGFzc0Rlc2NyaXB0b3IsCisgIFJ0dGlCYXNlQ2xhc3NBcnJheSwKKyAgUnR0aUNsYXNzSGllcmFyY2h5RGVzY3JpcHRvciwKKyAgUnR0aUNvbXBsZXRlT2JqTG9jYXRvciwKKyAgTG9jYWxWZnRhYmxlLAorICBMb2NhbFN0YXRpY1RocmVhZEd1YXJkLAorfTsKKworLy8gRnVuY3Rpb24gY2xhc3NlcworZW51bSBGdW5jQ2xhc3MgOiB1aW50MTZfdCB7CisgIEZDX05vbmUgPSAwLAorICBGQ19QdWJsaWMgPSAxIDw8IDAsCisgIEZDX1Byb3RlY3RlZCA9IDEgPDwgMSwKKyAgRkNfUHJpdmF0ZSA9IDEgPDwgMiwKKyAgRkNfR2xvYmFsID0gMSA8PCAzLAorICBGQ19TdGF0aWMgPSAxIDw8IDQsCisgIEZDX1ZpcnR1YWwgPSAxIDw8IDUsCisgIEZDX0ZhciA9IDEgPDwgNiwKKyAgRkNfRXh0ZXJuQyA9IDEgPDwgNywKKyAgRkNfTm9QYXJhbWV0ZXJMaXN0ID0gMSA8PCA4LAorICBGQ19WaXJ0dWFsVGhpc0FkanVzdCA9IDEgPDwgOSwKKyAgRkNfVmlydHVhbFRoaXNBZGp1c3RFeCA9IDEgPDwgMTAsCisgIEZDX1N0YXRpY1RoaXNBZGp1c3QgPSAxIDw8IDExLAorfTsKKworZW51bSBjbGFzcyBUYWdLaW5kIHsgQ2xhc3MsIFN0cnVjdCwgVW5pb24sIEVudW0gfTsKKworZW51bSBjbGFzcyBOb2RlS2luZCB7CisgIFVua25vd24sCisgIE1kNVN5bWJvbCwKKyAgUHJpbWl0aXZlVHlwZSwKKyAgRnVuY3Rpb25TaWduYXR1cmUsCisgIElkZW50aWZpZXIsCisgIE5hbWVkSWRlbnRpZmllciwKKyAgVmNhbGxUaHVua0lkZW50aWZpZXIsCisgIExvY2FsU3RhdGljR3VhcmRJZGVudGlmaWVyLAorICBJbnRyaW5zaWNGdW5jdGlvbklkZW50aWZpZXIsCisgIENvbnZlcnNpb25PcGVyYXRvcklkZW50aWZpZXIsCisgIER5bmFtaWNTdHJ1Y3RvcklkZW50aWZpZXIsCisgIFN0cnVjdG9ySWRlbnRpZmllciwKKyAgTGl0ZXJhbE9wZXJhdG9ySWRlbnRpZmllciwKKyAgVGh1bmtTaWduYXR1cmUsCisgIFBvaW50ZXJUeXBlLAorICBUYWdUeXBlLAorICBBcnJheVR5cGUsCisgIEN1c3RvbSwKKyAgSW50cmluc2ljVHlwZSwKKyAgTm9kZUFycmF5LAorICBRdWFsaWZpZWROYW1lLAorICBUZW1wbGF0ZVBhcmFtZXRlclJlZmVyZW5jZSwKKyAgRW5jb2RlZFN0cmluZ0xpdGVyYWwsCisgIEludGVnZXJMaXRlcmFsLAorICBSdHRpQmFzZUNsYXNzRGVzY3JpcHRvciwKKyAgTG9jYWxTdGF0aWNHdWFyZFZhcmlhYmxlLAorICBGdW5jdGlvblN5bWJvbCwKKyAgVmFyaWFibGVTeW1ib2wsCisgIFNwZWNpYWxUYWJsZVN5bWJvbAorfTsKKworc3RydWN0IE5vZGUgeworICBleHBsaWNpdCBOb2RlKE5vZGVLaW5kIEspIDogS2luZChLKSB7fQorICB2aXJ0dWFsIH5Ob2RlKCkgPSBkZWZhdWx0OworCisgIE5vZGVLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBLaW5kOyB9CisKKyAgdmlydHVhbCB2b2lkIG91dHB1dChPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3QgPSAwOworCisgIHN0ZDo6c3RyaW5nIHRvU3RyaW5nKE91dHB1dEZsYWdzIEZsYWdzID0gT0ZfRGVmYXVsdCkgY29uc3Q7CisKK3ByaXZhdGU6CisgIE5vZGVLaW5kIEtpbmQ7Cit9OworCitzdHJ1Y3QgVHlwZU5vZGU7CitzdHJ1Y3QgUHJpbWl0aXZlVHlwZU5vZGU7CitzdHJ1Y3QgRnVuY3Rpb25TaWduYXR1cmVOb2RlOworc3RydWN0IElkZW50aWZpZXJOb2RlOworc3RydWN0IE5hbWVkSWRlbnRpZmllck5vZGU7CitzdHJ1Y3QgVmNhbGxUaHVua0lkZW50aWZpZXJOb2RlOworc3RydWN0IEludHJpbnNpY0Z1bmN0aW9uSWRlbnRpZmllck5vZGU7CitzdHJ1Y3QgTGl0ZXJhbE9wZXJhdG9ySWRlbnRpZmllck5vZGU7CitzdHJ1Y3QgQ29udmVyc2lvbk9wZXJhdG9ySWRlbnRpZmllck5vZGU7CitzdHJ1Y3QgU3RydWN0b3JJZGVudGlmaWVyTm9kZTsKK3N0cnVjdCBUaHVua1NpZ25hdHVyZU5vZGU7CitzdHJ1Y3QgUG9pbnRlclR5cGVOb2RlOworc3RydWN0IEFycmF5VHlwZU5vZGU7CitzdHJ1Y3QgQ3VzdG9tTm9kZTsKK3N0cnVjdCBUYWdUeXBlTm9kZTsKK3N0cnVjdCBJbnRyaW5zaWNUeXBlTm9kZTsKK3N0cnVjdCBOb2RlQXJyYXlOb2RlOworc3RydWN0IFF1YWxpZmllZE5hbWVOb2RlOworc3RydWN0IFRlbXBsYXRlUGFyYW1ldGVyUmVmZXJlbmNlTm9kZTsKK3N0cnVjdCBFbmNvZGVkU3RyaW5nTGl0ZXJhbE5vZGU7CitzdHJ1Y3QgSW50ZWdlckxpdGVyYWxOb2RlOworc3RydWN0IFJ0dGlCYXNlQ2xhc3NEZXNjcmlwdG9yTm9kZTsKK3N0cnVjdCBMb2NhbFN0YXRpY0d1YXJkVmFyaWFibGVOb2RlOworc3RydWN0IFN5bWJvbE5vZGU7CitzdHJ1Y3QgRnVuY3Rpb25TeW1ib2xOb2RlOworc3RydWN0IFZhcmlhYmxlU3ltYm9sTm9kZTsKK3N0cnVjdCBTcGVjaWFsVGFibGVTeW1ib2xOb2RlOworCitzdHJ1Y3QgVHlwZU5vZGUgOiBwdWJsaWMgTm9kZSB7CisgIGV4cGxpY2l0IFR5cGVOb2RlKE5vZGVLaW5kIEspIDogTm9kZShLKSB7fQorCisgIHZpcnR1YWwgdm9pZCBvdXRwdXRQcmUoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0ID0gMDsKKyAgdmlydHVhbCB2b2lkIG91dHB1dFBvc3QoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0ID0gMDsKKworICB2b2lkIG91dHB1dChPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3Qgb3ZlcnJpZGUgeworICAgIG91dHB1dFByZShPUywgRmxhZ3MpOworICAgIG91dHB1dFBvc3QoT1MsIEZsYWdzKTsKKyAgfQorCisgIHZvaWQgb3V0cHV0UXVhbHMoYm9vbCBTcGFjZUJlZm9yZSwgYm9vbCBTcGFjZUFmdGVyKSBjb25zdDsKKworICBRdWFsaWZpZXJzIFF1YWxzID0gUV9Ob25lOworfTsKKworc3RydWN0IFByaW1pdGl2ZVR5cGVOb2RlIDogcHVibGljIFR5cGVOb2RlIHsKKyAgZXhwbGljaXQgUHJpbWl0aXZlVHlwZU5vZGUoUHJpbWl0aXZlS2luZCBLKQorICAgICAgOiBUeXBlTm9kZShOb2RlS2luZDo6UHJpbWl0aXZlVHlwZSksIFByaW1LaW5kKEspIHt9CisKKyAgdm9pZCBvdXRwdXRQcmUoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0OworICB2b2lkIG91dHB1dFBvc3QoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0IHt9CisKKyAgUHJpbWl0aXZlS2luZCBQcmltS2luZDsKK307CisKK3N0cnVjdCBGdW5jdGlvblNpZ25hdHVyZU5vZGUgOiBwdWJsaWMgVHlwZU5vZGUgeworICBleHBsaWNpdCBGdW5jdGlvblNpZ25hdHVyZU5vZGUoTm9kZUtpbmQgSykgOiBUeXBlTm9kZShLKSB7fQorICBGdW5jdGlvblNpZ25hdHVyZU5vZGUoKSA6IFR5cGVOb2RlKE5vZGVLaW5kOjpGdW5jdGlvblNpZ25hdHVyZSkge30KKworICB2b2lkIG91dHB1dFByZShPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3Qgb3ZlcnJpZGU7CisgIHZvaWQgb3V0cHV0UG9zdChPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgLy8gVmFsaWQgaWYgdGhpcyBGdW5jdGlvblR5cGVOb2RlIGlzIHRoZSBQb2ludGVlIG9mIGEgUG9pbnRlclR5cGUgb3IKKyAgLy8gTWVtYmVyUG9pbnRlclR5cGUuCisgIFBvaW50ZXJBZmZpbml0eSBBZmZpbml0eSA9IFBvaW50ZXJBZmZpbml0eTo6Tm9uZTsKKworICAvLyBUaGUgZnVuY3Rpb24ncyBjYWxsaW5nIGNvbnZlbnRpb24uCisgIENhbGxpbmdDb252IENhbGxDb252ZW50aW9uID0gQ2FsbGluZ0NvbnY6Ok5vbmU7CisKKyAgLy8gRnVuY3Rpb24gZmxhZ3MgKGdsb2FibCwgcHVibGljLCBldGMpCisgIEZ1bmNDbGFzcyBGdW5jdGlvbkNsYXNzID0gRkNfR2xvYmFsOworCisgIEZ1bmN0aW9uUmVmUXVhbGlmaWVyIFJlZlF1YWxpZmllciA9IEZ1bmN0aW9uUmVmUXVhbGlmaWVyOjpOb25lOworCisgIC8vIFRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24uCisgIFR5cGVOb2RlICpSZXR1cm5UeXBlID0gbnVsbHB0cjsKKworICAvLyBUcnVlIGlmIHRoaXMgaXMgYSBDLXN0eWxlIC4uLiB2YXJhcmdzIGZ1bmN0aW9uLgorICBib29sIElzVmFyaWFkaWMgPSBmYWxzZTsKKworICAvLyBGdW5jdGlvbiBwYXJhbWV0ZXJzCisgIE5vZGVBcnJheU5vZGUgKlBhcmFtcyA9IG51bGxwdHI7CisKKyAgLy8gVHJ1ZSBpZiB0aGUgZnVuY3Rpb24gdHlwZSBpcyBub2V4Y2VwdAorICBib29sIElzTm9leGNlcHQgPSBmYWxzZTsKK307CisKK3N0cnVjdCBJZGVudGlmaWVyTm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgZXhwbGljaXQgSWRlbnRpZmllck5vZGUoTm9kZUtpbmQgSykgOiBOb2RlKEspIHt9CisKKyAgTm9kZUFycmF5Tm9kZSAqVGVtcGxhdGVQYXJhbXMgPSBudWxscHRyOworCitwcm90ZWN0ZWQ6CisgIHZvaWQgb3V0cHV0VGVtcGxhdGVQYXJhbWV0ZXJzKE91dHB1dFN0cmVhbSAmT1MsIE91dHB1dEZsYWdzIEZsYWdzKSBjb25zdDsKK307CisKK3N0cnVjdCBWY2FsbFRodW5rSWRlbnRpZmllck5vZGUgOiBwdWJsaWMgSWRlbnRpZmllck5vZGUgeworICBWY2FsbFRodW5rSWRlbnRpZmllck5vZGUoKSA6IElkZW50aWZpZXJOb2RlKE5vZGVLaW5kOjpWY2FsbFRodW5rSWRlbnRpZmllcikge30KKworICB2b2lkIG91dHB1dChPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgdWludDY0X3QgT2Zmc2V0SW5WVGFibGUgPSAwOworfTsKKworc3RydWN0IER5bmFtaWNTdHJ1Y3RvcklkZW50aWZpZXJOb2RlIDogcHVibGljIElkZW50aWZpZXJOb2RlIHsKKyAgRHluYW1pY1N0cnVjdG9ySWRlbnRpZmllck5vZGUoKQorICAgICAgOiBJZGVudGlmaWVyTm9kZShOb2RlS2luZDo6RHluYW1pY1N0cnVjdG9ySWRlbnRpZmllcikge30KKworICB2b2lkIG91dHB1dChPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgVmFyaWFibGVTeW1ib2xOb2RlICpWYXJpYWJsZSA9IG51bGxwdHI7CisgIFF1YWxpZmllZE5hbWVOb2RlICpOYW1lID0gbnVsbHB0cjsKKyAgYm9vbCBJc0Rlc3RydWN0b3IgPSBmYWxzZTsKK307CisKK3N0cnVjdCBOYW1lZElkZW50aWZpZXJOb2RlIDogcHVibGljIElkZW50aWZpZXJOb2RlIHsKKyAgTmFtZWRJZGVudGlmaWVyTm9kZSgpIDogSWRlbnRpZmllck5vZGUoTm9kZUtpbmQ6Ok5hbWVkSWRlbnRpZmllcikge30KKworICB2b2lkIG91dHB1dChPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgU3RyaW5nVmlldyBOYW1lOworfTsKKworc3RydWN0IEludHJpbnNpY0Z1bmN0aW9uSWRlbnRpZmllck5vZGUgOiBwdWJsaWMgSWRlbnRpZmllck5vZGUgeworICBleHBsaWNpdCBJbnRyaW5zaWNGdW5jdGlvbklkZW50aWZpZXJOb2RlKEludHJpbnNpY0Z1bmN0aW9uS2luZCBPcGVyYXRvcikKKyAgICAgIDogSWRlbnRpZmllck5vZGUoTm9kZUtpbmQ6OkludHJpbnNpY0Z1bmN0aW9uSWRlbnRpZmllciksCisgICAgICAgIE9wZXJhdG9yKE9wZXJhdG9yKSB7fQorCisgIHZvaWQgb3V0cHV0KE91dHB1dFN0cmVhbSAmT1MsIE91dHB1dEZsYWdzIEZsYWdzKSBjb25zdCBvdmVycmlkZTsKKworICBJbnRyaW5zaWNGdW5jdGlvbktpbmQgT3BlcmF0b3I7Cit9OworCitzdHJ1Y3QgTGl0ZXJhbE9wZXJhdG9ySWRlbnRpZmllck5vZGUgOiBwdWJsaWMgSWRlbnRpZmllck5vZGUgeworICBMaXRlcmFsT3BlcmF0b3JJZGVudGlmaWVyTm9kZSgpCisgICAgICA6IElkZW50aWZpZXJOb2RlKE5vZGVLaW5kOjpMaXRlcmFsT3BlcmF0b3JJZGVudGlmaWVyKSB7fQorCisgIHZvaWQgb3V0cHV0KE91dHB1dFN0cmVhbSAmT1MsIE91dHB1dEZsYWdzIEZsYWdzKSBjb25zdCBvdmVycmlkZTsKKworICBTdHJpbmdWaWV3IE5hbWU7Cit9OworCitzdHJ1Y3QgTG9jYWxTdGF0aWNHdWFyZElkZW50aWZpZXJOb2RlIDogcHVibGljIElkZW50aWZpZXJOb2RlIHsKKyAgTG9jYWxTdGF0aWNHdWFyZElkZW50aWZpZXJOb2RlKCkKKyAgICAgIDogSWRlbnRpZmllck5vZGUoTm9kZUtpbmQ6OkxvY2FsU3RhdGljR3VhcmRJZGVudGlmaWVyKSB7fQorCisgIHZvaWQgb3V0cHV0KE91dHB1dFN0cmVhbSAmT1MsIE91dHB1dEZsYWdzIEZsYWdzKSBjb25zdCBvdmVycmlkZTsKKworICB1aW50MzJfdCBTY29wZUluZGV4ID0gMDsKK307CisKK3N0cnVjdCBDb252ZXJzaW9uT3BlcmF0b3JJZGVudGlmaWVyTm9kZSA6IHB1YmxpYyBJZGVudGlmaWVyTm9kZSB7CisgIENvbnZlcnNpb25PcGVyYXRvcklkZW50aWZpZXJOb2RlKCkKKyAgICAgIDogSWRlbnRpZmllck5vZGUoTm9kZUtpbmQ6OkNvbnZlcnNpb25PcGVyYXRvcklkZW50aWZpZXIpIHt9CisKKyAgdm9pZCBvdXRwdXQoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIFRoZSB0eXBlIHRoYXQgdGhpcyBvcGVyYXRvciBjb252ZXJ0cyB0b28uCisgIFR5cGVOb2RlICpUYXJnZXRUeXBlID0gbnVsbHB0cjsKK307CisKK3N0cnVjdCBTdHJ1Y3RvcklkZW50aWZpZXJOb2RlIDogcHVibGljIElkZW50aWZpZXJOb2RlIHsKKyAgU3RydWN0b3JJZGVudGlmaWVyTm9kZSgpIDogSWRlbnRpZmllck5vZGUoTm9kZUtpbmQ6OlN0cnVjdG9ySWRlbnRpZmllcikge30KKyAgZXhwbGljaXQgU3RydWN0b3JJZGVudGlmaWVyTm9kZShib29sIElzRGVzdHJ1Y3RvcikKKyAgICAgIDogSWRlbnRpZmllck5vZGUoTm9kZUtpbmQ6OlN0cnVjdG9ySWRlbnRpZmllciksCisgICAgICAgIElzRGVzdHJ1Y3RvcihJc0Rlc3RydWN0b3IpIHt9CisKKyAgdm9pZCBvdXRwdXQoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyB0aGF0IHRoaXMgaXMgYSBzdHJ1Y3RvciBvZi4KKyAgSWRlbnRpZmllck5vZGUgKkNsYXNzID0gbnVsbHB0cjsKKyAgYm9vbCBJc0Rlc3RydWN0b3IgPSBmYWxzZTsKK307CisKK3N0cnVjdCBUaHVua1NpZ25hdHVyZU5vZGUgOiBwdWJsaWMgRnVuY3Rpb25TaWduYXR1cmVOb2RlIHsKKyAgVGh1bmtTaWduYXR1cmVOb2RlKCkgOiBGdW5jdGlvblNpZ25hdHVyZU5vZGUoTm9kZUtpbmQ6OlRodW5rU2lnbmF0dXJlKSB7fQorCisgIHZvaWQgb3V0cHV0UHJlKE91dHB1dFN0cmVhbSAmT1MsIE91dHB1dEZsYWdzIEZsYWdzKSBjb25zdCBvdmVycmlkZTsKKyAgdm9pZCBvdXRwdXRQb3N0KE91dHB1dFN0cmVhbSAmT1MsIE91dHB1dEZsYWdzIEZsYWdzKSBjb25zdCBvdmVycmlkZTsKKworICBzdHJ1Y3QgVGhpc0FkanVzdG9yIHsKKyAgICB1aW50MzJfdCBTdGF0aWNPZmZzZXQgPSAwOworICAgIGludDMyX3QgVkJQdHJPZmZzZXQgPSAwOworICAgIGludDMyX3QgVkJPZmZzZXRPZmZzZXQgPSAwOworICAgIGludDMyX3QgVnRvcmRpc3BPZmZzZXQgPSAwOworICB9OworCisgIFRoaXNBZGp1c3RvciBUaGlzQWRqdXN0OworfTsKKworc3RydWN0IFBvaW50ZXJUeXBlTm9kZSA6IHB1YmxpYyBUeXBlTm9kZSB7CisgIFBvaW50ZXJUeXBlTm9kZSgpIDogVHlwZU5vZGUoTm9kZUtpbmQ6OlBvaW50ZXJUeXBlKSB7fQorICB2b2lkIG91dHB1dFByZShPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3Qgb3ZlcnJpZGU7CisgIHZvaWQgb3V0cHV0UG9zdChPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgLy8gSXMgdGhpcyBhIHBvaW50ZXIsIHJlZmVyZW5jZSwgb3IgcnZhbHVlLXJlZmVyZW5jZT8KKyAgUG9pbnRlckFmZmluaXR5IEFmZmluaXR5ID0gUG9pbnRlckFmZmluaXR5OjpOb25lOworCisgIC8vIElmIHRoaXMgaXMgYSBtZW1iZXIgcG9pbnRlciwgdGhpcyBpcyB0aGUgY2xhc3MgdGhhdCB0aGUgbWVtYmVyIGlzIGluLgorICBRdWFsaWZpZWROYW1lTm9kZSAqQ2xhc3NQYXJlbnQgPSBudWxscHRyOworCisgIC8vIFJlcHJlc2VudHMgYSB0eXBlIFggaW4gImEgcG9pbnRlciB0byBYIiwgImEgcmVmZXJlbmNlIHRvIFgiLCBvcgorICAvLyAicnZhbHVlLXJlZmVyZW5jZSB0byBYIgorICBUeXBlTm9kZSAqUG9pbnRlZSA9IG51bGxwdHI7Cit9OworCitzdHJ1Y3QgVGFnVHlwZU5vZGUgOiBwdWJsaWMgVHlwZU5vZGUgeworICBleHBsaWNpdCBUYWdUeXBlTm9kZShUYWdLaW5kIFRhZykgOiBUeXBlTm9kZShOb2RlS2luZDo6VGFnVHlwZSksIFRhZyhUYWcpIHt9CisKKyAgdm9pZCBvdXRwdXRQcmUoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0OworICB2b2lkIG91dHB1dFBvc3QoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0OworCisgIFF1YWxpZmllZE5hbWVOb2RlICpRdWFsaWZpZWROYW1lID0gbnVsbHB0cjsKKyAgVGFnS2luZCBUYWc7Cit9OworCitzdHJ1Y3QgQXJyYXlUeXBlTm9kZSA6IHB1YmxpYyBUeXBlTm9kZSB7CisgIEFycmF5VHlwZU5vZGUoKSA6IFR5cGVOb2RlKE5vZGVLaW5kOjpBcnJheVR5cGUpIHt9CisKKyAgdm9pZCBvdXRwdXRQcmUoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0OworICB2b2lkIG91dHB1dFBvc3QoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0OworCisgIHZvaWQgb3V0cHV0RGltZW5zaW9uc0ltcGwoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0OworICB2b2lkIG91dHB1dE9uZURpbWVuc2lvbihPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncywgTm9kZSAqTikgY29uc3Q7CisKKyAgLy8gQSBsaXN0IG9mIGFycmF5IGRpbWVuc2lvbnMuICBlLmcuIFszLDQsNV0gaW4gYGludCBGb29bM11bNF1bNV1gCisgIE5vZGVBcnJheU5vZGUgKkRpbWVuc2lvbnMgPSBudWxscHRyOworCisgIC8vIFRoZSB0eXBlIG9mIGFycmF5IGVsZW1lbnQuCisgIFR5cGVOb2RlICpFbGVtZW50VHlwZSA9IG51bGxwdHI7Cit9OworCitzdHJ1Y3QgSW50cmluc2ljTm9kZSA6IHB1YmxpYyBUeXBlTm9kZSB7CisgIEludHJpbnNpY05vZGUoKSA6IFR5cGVOb2RlKE5vZGVLaW5kOjpJbnRyaW5zaWNUeXBlKSB7fQorICB2b2lkIG91dHB1dChPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3Qgb3ZlcnJpZGUge30KK307CisKK3N0cnVjdCBDdXN0b21UeXBlTm9kZSA6IHB1YmxpYyBUeXBlTm9kZSB7CisgIEN1c3RvbVR5cGVOb2RlKCkgOiBUeXBlTm9kZShOb2RlS2luZDo6Q3VzdG9tKSB7fQorCisgIHZvaWQgb3V0cHV0UHJlKE91dHB1dFN0cmVhbSAmT1MsIE91dHB1dEZsYWdzIEZsYWdzKSBjb25zdCBvdmVycmlkZTsKKyAgdm9pZCBvdXRwdXRQb3N0KE91dHB1dFN0cmVhbSAmT1MsIE91dHB1dEZsYWdzIEZsYWdzKSBjb25zdCBvdmVycmlkZTsKKworICBJZGVudGlmaWVyTm9kZSAqSWRlbnRpZmllcjsKK307CisKK3N0cnVjdCBOb2RlQXJyYXlOb2RlIDogcHVibGljIE5vZGUgeworICBOb2RlQXJyYXlOb2RlKCkgOiBOb2RlKE5vZGVLaW5kOjpOb2RlQXJyYXkpIHt9CisKKyAgdm9pZCBvdXRwdXQoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0IG92ZXJyaWRlOworCisgIHZvaWQgb3V0cHV0KE91dHB1dFN0cmVhbSAmT1MsIE91dHB1dEZsYWdzIEZsYWdzLCBTdHJpbmdWaWV3IFNlcGFyYXRvcikgY29uc3Q7CisKKyAgTm9kZSAqKk5vZGVzID0gMDsKKyAgc2l6ZV90IENvdW50ID0gMDsKK307CisKK3N0cnVjdCBRdWFsaWZpZWROYW1lTm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgUXVhbGlmaWVkTmFtZU5vZGUoKSA6IE5vZGUoTm9kZUtpbmQ6OlF1YWxpZmllZE5hbWUpIHt9CisKKyAgdm9pZCBvdXRwdXQoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0IG92ZXJyaWRlOworCisgIE5vZGVBcnJheU5vZGUgKkNvbXBvbmVudHMgPSBudWxscHRyOworCisgIElkZW50aWZpZXJOb2RlICpnZXRVbnF1YWxpZmllZElkZW50aWZpZXIoKSB7CisgICAgTm9kZSAqTGFzdENvbXBvbmVudCA9IENvbXBvbmVudHMtPk5vZGVzW0NvbXBvbmVudHMtPkNvdW50IC0gMV07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PElkZW50aWZpZXJOb2RlICo+KExhc3RDb21wb25lbnQpOworICB9Cit9OworCitzdHJ1Y3QgVGVtcGxhdGVQYXJhbWV0ZXJSZWZlcmVuY2VOb2RlIDogcHVibGljIE5vZGUgeworICBUZW1wbGF0ZVBhcmFtZXRlclJlZmVyZW5jZU5vZGUoKQorICAgICAgOiBOb2RlKE5vZGVLaW5kOjpUZW1wbGF0ZVBhcmFtZXRlclJlZmVyZW5jZSkge30KKworICB2b2lkIG91dHB1dChPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgU3ltYm9sTm9kZSAqU3ltYm9sID0gbnVsbHB0cjsKKworICBpbnQgVGh1bmtPZmZzZXRDb3VudCA9IDA7CisgIHN0ZDo6YXJyYXk8aW50NjRfdCwgMz4gVGh1bmtPZmZzZXRzOworICBQb2ludGVyQWZmaW5pdHkgQWZmaW5pdHkgPSBQb2ludGVyQWZmaW5pdHk6Ok5vbmU7CisgIGJvb2wgSXNNZW1iZXJQb2ludGVyID0gZmFsc2U7Cit9OworCitzdHJ1Y3QgSW50ZWdlckxpdGVyYWxOb2RlIDogcHVibGljIE5vZGUgeworICBJbnRlZ2VyTGl0ZXJhbE5vZGUoKSA6IE5vZGUoTm9kZUtpbmQ6OkludGVnZXJMaXRlcmFsKSB7fQorICBJbnRlZ2VyTGl0ZXJhbE5vZGUodWludDY0X3QgVmFsdWUsIGJvb2wgSXNOZWdhdGl2ZSkKKyAgICAgIDogTm9kZShOb2RlS2luZDo6SW50ZWdlckxpdGVyYWwpLCBWYWx1ZShWYWx1ZSksIElzTmVnYXRpdmUoSXNOZWdhdGl2ZSkge30KKworICB2b2lkIG91dHB1dChPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgdWludDY0X3QgVmFsdWUgPSAwOworICBib29sIElzTmVnYXRpdmUgPSBmYWxzZTsKK307CisKK3N0cnVjdCBSdHRpQmFzZUNsYXNzRGVzY3JpcHRvck5vZGUgOiBwdWJsaWMgSWRlbnRpZmllck5vZGUgeworICBSdHRpQmFzZUNsYXNzRGVzY3JpcHRvck5vZGUoKQorICAgICAgOiBJZGVudGlmaWVyTm9kZShOb2RlS2luZDo6UnR0aUJhc2VDbGFzc0Rlc2NyaXB0b3IpIHt9CisKKyAgdm9pZCBvdXRwdXQoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0IG92ZXJyaWRlOworCisgIHVpbnQzMl90IE5WT2Zmc2V0ID0gMDsKKyAgaW50MzJfdCBWQlB0ck9mZnNldCA9IDA7CisgIHVpbnQzMl90IFZCVGFibGVPZmZzZXQgPSAwOworICB1aW50MzJfdCBGbGFncyA9IDA7Cit9OworCitzdHJ1Y3QgU3ltYm9sTm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgZXhwbGljaXQgU3ltYm9sTm9kZShOb2RlS2luZCBLKSA6IE5vZGUoSykge30KKyAgdm9pZCBvdXRwdXQoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0IG92ZXJyaWRlOworICBRdWFsaWZpZWROYW1lTm9kZSAqTmFtZSA9IG51bGxwdHI7Cit9OworCitzdHJ1Y3QgU3BlY2lhbFRhYmxlU3ltYm9sTm9kZSA6IHB1YmxpYyBTeW1ib2xOb2RlIHsKKyAgZXhwbGljaXQgU3BlY2lhbFRhYmxlU3ltYm9sTm9kZSgpCisgICAgICA6IFN5bWJvbE5vZGUoTm9kZUtpbmQ6OlNwZWNpYWxUYWJsZVN5bWJvbCkge30KKworICB2b2lkIG91dHB1dChPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3Qgb3ZlcnJpZGU7CisgIFF1YWxpZmllZE5hbWVOb2RlICpUYXJnZXROYW1lID0gbnVsbHB0cjsKKyAgUXVhbGlmaWVycyBRdWFsczsKK307CisKK3N0cnVjdCBMb2NhbFN0YXRpY0d1YXJkVmFyaWFibGVOb2RlIDogcHVibGljIFN5bWJvbE5vZGUgeworICBMb2NhbFN0YXRpY0d1YXJkVmFyaWFibGVOb2RlKCkKKyAgICAgIDogU3ltYm9sTm9kZShOb2RlS2luZDo6TG9jYWxTdGF0aWNHdWFyZFZhcmlhYmxlKSB7fQorCisgIHZvaWQgb3V0cHV0KE91dHB1dFN0cmVhbSAmT1MsIE91dHB1dEZsYWdzIEZsYWdzKSBjb25zdCBvdmVycmlkZTsKKworICBib29sIElzVmlzaWJsZSA9IGZhbHNlOworfTsKKworc3RydWN0IEVuY29kZWRTdHJpbmdMaXRlcmFsTm9kZSA6IHB1YmxpYyBTeW1ib2xOb2RlIHsKKyAgRW5jb2RlZFN0cmluZ0xpdGVyYWxOb2RlKCkgOiBTeW1ib2xOb2RlKE5vZGVLaW5kOjpFbmNvZGVkU3RyaW5nTGl0ZXJhbCkge30KKworICB2b2lkIG91dHB1dChPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgU3RyaW5nVmlldyBEZWNvZGVkU3RyaW5nOworICBib29sIElzVHJ1bmNhdGVkID0gZmFsc2U7CisgIENoYXJLaW5kIENoYXIgPSBDaGFyS2luZDo6Q2hhcjsKK307CisKK3N0cnVjdCBWYXJpYWJsZVN5bWJvbE5vZGUgOiBwdWJsaWMgU3ltYm9sTm9kZSB7CisgIFZhcmlhYmxlU3ltYm9sTm9kZSgpIDogU3ltYm9sTm9kZShOb2RlS2luZDo6VmFyaWFibGVTeW1ib2wpIHt9CisKKyAgdm9pZCBvdXRwdXQoT3V0cHV0U3RyZWFtICZPUywgT3V0cHV0RmxhZ3MgRmxhZ3MpIGNvbnN0IG92ZXJyaWRlOworCisgIFN0b3JhZ2VDbGFzcyBTQyA9IFN0b3JhZ2VDbGFzczo6Tm9uZTsKKyAgVHlwZU5vZGUgKlR5cGUgPSBudWxscHRyOworfTsKKworc3RydWN0IEZ1bmN0aW9uU3ltYm9sTm9kZSA6IHB1YmxpYyBTeW1ib2xOb2RlIHsKKyAgRnVuY3Rpb25TeW1ib2xOb2RlKCkgOiBTeW1ib2xOb2RlKE5vZGVLaW5kOjpGdW5jdGlvblN5bWJvbCkge30KKworICB2b2lkIG91dHB1dChPdXRwdXRTdHJlYW0gJk9TLCBPdXRwdXRGbGFncyBGbGFncykgY29uc3Qgb3ZlcnJpZGU7CisKKyAgRnVuY3Rpb25TaWduYXR1cmVOb2RlICpTaWduYXR1cmUgPSBudWxscHRyOworfTsKKworfSAvLyBuYW1lc3BhY2UgbXNfZGVtYW5nbGUKK30gLy8gbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlbWFuZ2xlL1N0cmluZ1ZpZXcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVtYW5nbGUvU3RyaW5nVmlldy5oCmluZGV4IGE4OWRlZGEuLmNlYjZjNzkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVtYW5nbGUvU3RyaW5nVmlldy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVtYW5nbGUvU3RyaW5nVmlldy5oCkBAIC0xLDIyICsxLDI1IEBACiAvLz09PS0tLSBTdHJpbmdWaWV3LmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLworLy8gRklYTUU6IFVzZSBzdGQ6OnN0cmluZ192aWV3IGluc3RlYWQgd2hlbiB3ZSBzdXBwb3J0IEMrKzE3LgogLy8KLS8vIFRoaXMgZmlsZSBjb250YWlucyBhIGxpbWl0ZWQgdmVyc2lvbiBvZiBMTFZNJ3MgU3RyaW5nVmlldyBjbGFzcy4gIEl0IGlzCi0vLyBjb3BpZWQgaGVyZSBzbyB0aGF0IExMVk1EZW1hbmdsZSBuZWVkIG5vdCB0YWtlIGEgZGVwZW5kZW5jeSBvbiBMTFZNU3VwcG9ydC4KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKLSNpZm5kZWYgTExWTV9ERU1BTkdMRV9TVFJJTkdWSUVXX0gKLSNkZWZpbmUgTExWTV9ERU1BTkdMRV9TVFJJTkdWSUVXX0gKKyNpZm5kZWYgREVNQU5HTEVfU1RSSU5HVklFV19ICisjZGVmaW5lIERFTUFOR0xFX1NUUklOR1ZJRVdfSAogCisjaW5jbHVkZSAiRGVtYW5nbGVDb25maWcuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y2Fzc2VydD4KICNpbmNsdWRlIDxjc3RyaW5nPgogCitERU1BTkdMRV9OQU1FU1BBQ0VfQkVHSU4KKwogY2xhc3MgU3RyaW5nVmlldyB7CiAgIGNvbnN0IGNoYXIgKkZpcnN0OwogICBjb25zdCBjaGFyICpMYXN0OwpAQCAtNDMsNyArNDYsNyBAQAogICAgIGlmIChGaW5kQmVnaW4gPCBzaXplKCkpIHsKICAgICAgIC8vIEp1c3QgZm9yd2FyZCB0byBtZW1jaHIsIHdoaWNoIGlzIGZhc3RlciB0aGFuIGEgaGFuZC1yb2xsZWQgbG9vcC4KICAgICAgIGlmIChjb25zdCB2b2lkICpQID0gOjptZW1jaHIoRmlyc3QgKyBGaW5kQmVnaW4sIEMsIHNpemUoKSAtIEZpbmRCZWdpbikpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KFApIC0gRmlyc3Q7CisgICAgICAgIHJldHVybiBzaXplX3Qoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihQKSAtIEZpcnN0KTsKICAgICB9CiAgICAgcmV0dXJuIG5wb3M7CiAgIH0KQEAgLTExOCw0ICsxMjEsNiBAQAogICAgICAgICAgc3RkOjplcXVhbChMSFMuYmVnaW4oKSwgTEhTLmVuZCgpLCBSSFMuYmVnaW4oKSk7CiB9CiAKK0RFTUFOR0xFX05BTUVTUEFDRV9FTkQKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0RlbWFuZ2xlL1V0aWxpdHkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVtYW5nbGUvVXRpbGl0eS5oCmluZGV4IGRhNGEwYzAuLmVjMjM4NTkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVtYW5nbGUvVXRpbGl0eS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRGVtYW5nbGUvVXRpbGl0eS5oCkBAIC0xLDI1ICsxLDI3IEBACiAvLz09PS0tLSBVdGlsaXR5LmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLworLy8gUHJvdmlkZSBzb21lIHV0aWxpdHkgY2xhc3NlcyBmb3IgdXNlIGluIHRoZSBkZW1hbmdsZXIocykuCiAvLwotLy8gVGhpcyBmaWxlIGNvbnRhaW5zIHNldmVyYWwgdXRpbGl0eSBjbGFzc2VzIHVzZWQgYnkgdGhlIGRlbWFuZ2xlIGxpYnJhcnkuCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCi0jaWZuZGVmIExMVk1fREVNQU5HTEVfVVRJTElUWV9ICi0jZGVmaW5lIExMVk1fREVNQU5HTEVfVVRJTElUWV9ICisjaWZuZGVmIERFTUFOR0xFX1VUSUxJVFlfSAorI2RlZmluZSBERU1BTkdMRV9VVElMSVRZX0gKIAogI2luY2x1ZGUgIlN0cmluZ1ZpZXcuaCIKLQogI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxjc3RyaW5nPgogI2luY2x1ZGUgPGl0ZXJhdG9yPgogI2luY2x1ZGUgPGxpbWl0cz4KIAorREVNQU5HTEVfTkFNRVNQQUNFX0JFR0lOCisKIC8vIFN0cmVhbSB0aGF0IEFTVCBub2RlcyB3cml0ZSB0aGVpciBzdHJpbmcgcmVwcmVzZW50YXRpb24gaW50byBhZnRlciB0aGUgQVNUCiAvLyBoYXMgYmVlbiBwYXJzZWQuCiBjbGFzcyBPdXRwdXRTdHJlYW0gewpAQCAtMTc1LDEzICsxNzcsMTUgQEAKICAgaWYgKEJ1ZiA9PSBudWxscHRyKSB7CiAgICAgQnVmID0gc3RhdGljX2Nhc3Q8Y2hhciAqPihzdGQ6Om1hbGxvYyhJbml0U2l6ZSkpOwogICAgIGlmIChCdWYgPT0gbnVsbHB0cikKLSAgICAgIHJldHVybiB0cnVlOworICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEJ1ZmZlclNpemUgPSBJbml0U2l6ZTsKICAgfSBlbHNlCiAgICAgQnVmZmVyU2l6ZSA9ICpOOwogCiAgIFMucmVzZXQoQnVmLCBCdWZmZXJTaXplKTsKLSAgcmV0dXJuIGZhbHNlOworICByZXR1cm4gdHJ1ZTsKIH0KIAorREVNQU5HTEVfTkFNRVNQQUNFX0VORAorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL0V4ZWN1dGlvbkVuZ2luZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvRXhlY3V0aW9uRW5naW5lLmgKaW5kZXggYjYxY2IyNC4uNjhjYzkyMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvRXhlY3V0aW9uRW5naW5lLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvRXhlY3V0aW9uRW5naW5lLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRXhlY3V0aW9uRW5naW5lLmggLSBBYnN0cmFjdCBFeGVjdXRpb24gRW5naW5lIEludGVyZmFjZSAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL0dlbmVyaWNWYWx1ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvR2VuZXJpY1ZhbHVlLmgKaW5kZXggNTA0ZTMwYS4uMWNhOTg5ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvR2VuZXJpY1ZhbHVlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvR2VuZXJpY1ZhbHVlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gR2VuZXJpY1ZhbHVlLmggLSBSZXByZXNlbnQgYW55IHR5cGUgb2YgTExWTSB2YWx1ZSAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL0ludGVycHJldGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9JbnRlcnByZXRlci5oCmluZGV4IGExNDcwNzguLjA3NDk0MDkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL0ludGVycHJldGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvSW50ZXJwcmV0ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gSW50ZXJwcmV0ZXIuaCAtIEFic3RyYWN0IEV4ZWN1dGlvbiBFbmdpbmUgSW50ZXJmYWNlIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvSklURXZlbnRMaXN0ZW5lci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvSklURXZlbnRMaXN0ZW5lci5oCmluZGV4IDFjZTc3MmMuLjYwNmI2ZjcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL0pJVEV2ZW50TGlzdGVuZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9KSVRFdmVudExpc3RlbmVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSklURXZlbnRMaXN0ZW5lci5oIC0gRXhwb3NlcyBldmVudHMgZnJvbSBKSVQgY29tcGlsYXRpb24gLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTM1LDI1ICszNCw2IEBACiAKIH0gLy8gZW5kIG5hbWVzcGFjZSBvYmplY3QKIAotLy8vIEpJVEV2ZW50X0VtaXR0ZWRGdW5jdGlvbkRldGFpbHMgLSBIZWxwZXIgc3RydWN0IGZvciBjb250YWluaW5nIGluZm9ybWF0aW9uCi0vLy8gYWJvdXQgYSBnZW5lcmF0ZWQgbWFjaGluZSBjb2RlIGZ1bmN0aW9uLgotc3RydWN0IEpJVEV2ZW50X0VtaXR0ZWRGdW5jdGlvbkRldGFpbHMgewotICBzdHJ1Y3QgTGluZVN0YXJ0IHsKLSAgICAvLy8gVGhlIGFkZHJlc3MgYXQgd2hpY2ggdGhlIGN1cnJlbnQgbGluZSBjaGFuZ2VzLgotICAgIHVpbnRwdHJfdCBBZGRyZXNzOwotCi0gICAgLy8vIFRoZSBuZXcgbG9jYXRpb24gaW5mb3JtYXRpb24uICBUaGVzZSBjYW4gYmUgdHJhbnNsYXRlZCB0byBEZWJ1Z0xvY1R1cGxlcwotICAgIC8vLyB1c2luZyBNRi0+Z2V0RGVidWdMb2NUdXBsZSgpLgotICAgIERlYnVnTG9jIExvYzsKLSAgfTsKLQotICAvLy8gVGhlIG1hY2hpbmUgZnVuY3Rpb24gdGhlIHN0cnVjdCBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IuCi0gIGNvbnN0IE1hY2hpbmVGdW5jdGlvbiAqTUY7Ci0KLSAgLy8vIFRoZSBsaXN0IG9mIGxpbmUgYm91bmRhcnkgaW5mb3JtYXRpb24sIHNvcnRlZCBieSBhZGRyZXNzLgotICBzdGQ6OnZlY3RvcjxMaW5lU3RhcnQ+IExpbmVTdGFydHM7Ci19OwotCiAvLy8gSklURXZlbnRMaXN0ZW5lciAtIEFic3RyYWN0IGludGVyZmFjZSBmb3IgdXNlIGJ5IHRoZSBKSVQgdG8gbm90aWZ5IGNsaWVudHMKIC8vLyBhYm91dCBzaWduaWZpY2FudCBldmVudHMgZHVyaW5nIGNvbXBpbGF0aW9uLiBGb3IgZXhhbXBsZSwgdG8gbm90aWZ5CiAvLy8gcHJvZmlsZXJzIGFuZCBkZWJ1Z2dlcnMgdGhhdCBuZWVkIHRvIGtub3cgd2hlcmUgZnVuY3Rpb25zIGhhdmUgYmVlbiBlbWl0dGVkLgpAQCAtNjEsMjYgKzQxLDI2IEBACiAvLy8gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgZWFjaCBtZXRob2QgZG9lcyBub3RoaW5nLgogY2xhc3MgSklURXZlbnRMaXN0ZW5lciB7CiBwdWJsaWM6Ci0gIHVzaW5nIEVtaXR0ZWRGdW5jdGlvbkRldGFpbHMgPSBKSVRFdmVudF9FbWl0dGVkRnVuY3Rpb25EZXRhaWxzOworICB1c2luZyBPYmplY3RLZXkgPSB1aW50NjRfdDsKIAotcHVibGljOgogICBKSVRFdmVudExpc3RlbmVyKCkgPSBkZWZhdWx0OwogICB2aXJ0dWFsIH5KSVRFdmVudExpc3RlbmVyKCkgPSBkZWZhdWx0OwogCi0gIC8vLyBOb3RpZnlPYmplY3RFbWl0dGVkIC0gQ2FsbGVkIGFmdGVyIGFuIG9iamVjdCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkKLSAgLy8vIGVtaXR0ZWQgdG8gbWVtb3J5LiAgTm90aWZ5RnVuY3Rpb25FbWl0dGVkIHdpbGwgbm90IGJlIGNhbGxlZCBmb3IKKyAgLy8vIG5vdGlmeU9iamVjdExvYWRlZCAtIENhbGxlZCBhZnRlciBhbiBvYmplY3QgaGFzIGhhZCBpdHMgc2VjdGlvbnMgYWxsb2NhdGVkCisgIC8vLyBhbmQgYWRkcmVzc2VzIGFzc2lnbmVkIHRvIGFsbCBzeW1ib2xzLiBOb3RlOiBTZWN0aW9uIG1lbW9yeSB3aWxsIG5vdCBoYXZlCisgIC8vLyBiZWVuIHJlbG9jYXRlZCB5ZXQuIG5vdGlmeUZ1bmN0aW9uTG9hZGVkIHdpbGwgbm90IGJlIGNhbGxlZCBmb3IKICAgLy8vIGluZGl2aWR1YWwgZnVuY3Rpb25zIGluIHRoZSBvYmplY3QuCiAgIC8vLwogICAvLy8gRUxGLXNwZWNpZmljIGluZm9ybWF0aW9uCiAgIC8vLyBUaGUgT2JqZWN0SW1hZ2UgY29udGFpbnMgdGhlIGdlbmVyYXRlZCBvYmplY3QgaW1hZ2UKICAgLy8vIHdpdGggc2VjdGlvbiBoZWFkZXJzIHVwZGF0ZWQgdG8gcmVmbGVjdCB0aGUgYWRkcmVzcyBhdCB3aGljaCBzZWN0aW9ucwogICAvLy8gd2VyZSBsb2FkZWQgYW5kIHdpdGggcmVsb2NhdGlvbnMgcGVyZm9ybWVkIGluLXBsYWNlIG9uIGRlYnVnIHNlY3Rpb25zLgotICB2aXJ0dWFsIHZvaWQgTm90aWZ5T2JqZWN0RW1pdHRlZChjb25zdCBvYmplY3Q6Ok9iamVjdEZpbGUgJk9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUnVudGltZUR5bGQ6OkxvYWRlZE9iamVjdEluZm8gJkwpIHt9CisgIHZpcnR1YWwgdm9pZCBub3RpZnlPYmplY3RMb2FkZWQoT2JqZWN0S2V5IEssIGNvbnN0IG9iamVjdDo6T2JqZWN0RmlsZSAmT2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJ1bnRpbWVEeWxkOjpMb2FkZWRPYmplY3RJbmZvICZMKSB7fQogCi0gIC8vLyBOb3RpZnlGcmVlaW5nT2JqZWN0IC0gQ2FsbGVkIGp1c3QgYmVmb3JlIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoCisgIC8vLyBub3RpZnlGcmVlaW5nT2JqZWN0IC0gQ2FsbGVkIGp1c3QgYmVmb3JlIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoCiAgIC8vLyBhIHByZXZpb3VzbHkgZW1pdHRlZCBvYmplY3QgaXMgcmVsZWFzZWQuCi0gIHZpcnR1YWwgdm9pZCBOb3RpZnlGcmVlaW5nT2JqZWN0KGNvbnN0IG9iamVjdDo6T2JqZWN0RmlsZSAmT2JqKSB7fQorICB2aXJ0dWFsIHZvaWQgbm90aWZ5RnJlZWluZ09iamVjdChPYmplY3RLZXkgSykge30KIAogICAvLyBHZXQgYSBwb2ludGUgdG8gdGhlIEdEQiBkZWJ1Z2dlciByZWdpc3RyYXRpb24gbGlzdGVuZXIuCiAgIHN0YXRpYyBKSVRFdmVudExpc3RlbmVyICpjcmVhdGVHREJSZWdpc3RyYXRpb25MaXN0ZW5lcigpOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvSklUU3ltYm9sLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9KSVRTeW1ib2wuaAppbmRleCAxOGI5NzJlLi5kYTEzNTJmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9KSVRTeW1ib2wuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9KSVRTeW1ib2wuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBKSVRTeW1ib2wuaCAtIEpJVCBzeW1ib2wgYWJzdHJhY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNDAsNiArMzksMTggQEAKIC8vLyBSZXByZXNlbnRzIGFuIGFkZHJlc3MgaW4gdGhlIHRhcmdldCBwcm9jZXNzJ3MgYWRkcmVzcyBzcGFjZS4KIHVzaW5nIEpJVFRhcmdldEFkZHJlc3MgPSB1aW50NjRfdDsKIAorLy8vIENvbnZlcnQgYSBKSVRUYXJnZXRBZGRyZXNzIHRvIGEgcG9pbnRlci4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBUIGppdFRhcmdldEFkZHJlc3NUb1BvaW50ZXIoSklUVGFyZ2V0QWRkcmVzcyBBZGRyKSB7CisgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1ZSwgIlQgbXVzdCBiZSBhIHBvaW50ZXIgdHlwZSIpOworICB1aW50cHRyX3QgSW50UHRyID0gc3RhdGljX2Nhc3Q8dWludHB0cl90PihBZGRyKTsKKyAgYXNzZXJ0KEludFB0ciA9PSBBZGRyICYmICJKSVRUYXJnZXRBZGRyZXNzIHZhbHVlIG91dCBvZiByYW5nZSBmb3IgdWludHB0cl90Iik7CisgIHJldHVybiByZWludGVycHJldF9jYXN0PFQ+KEludFB0cik7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBKSVRUYXJnZXRBZGRyZXNzIHBvaW50ZXJUb0pJVFRhcmdldEFkZHJlc3MoVCAqUHRyKSB7CisgIHJldHVybiBzdGF0aWNfY2FzdDxKSVRUYXJnZXRBZGRyZXNzPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oUHRyKSk7Cit9CisKIC8vLyBGbGFncyBmb3Igc3ltYm9scyBpbiB0aGUgSklULgogY2xhc3MgSklUU3ltYm9sRmxhZ3MgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvTUNKSVQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL01DSklULmgKaW5kZXggNjZkZGI3Yy4uODI1M2JmOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvTUNKSVQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9NQ0pJVC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBNQ0pJVC5oIC0gTUMtQmFzZWQgSnVzdC1Jbi1UaW1lIEV4ZWN1dGlvbiBFbmdpbmUgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PUHJvZmlsZVdyYXBwZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09Qcm9maWxlV3JhcHBlci5oCmluZGV4IDA1ZGE1OTQuLmIxM2Q3ZjYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09Qcm9maWxlV3JhcHBlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09Qcm9maWxlV3JhcHBlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBPUHJvZmlsZVdyYXBwZXIuaCAtIE9Qcm9maWxlIEpJVCBBUEkgV3JhcHBlciAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vIFRoaXMgZmlsZSBkZWZpbmVzIGEgT1Byb2ZpbGVXcmFwcGVyIG9iamVjdCB0aGF0IGRldGVjdHMgaWYgdGhlIG9wcm9maWxlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PYmplY3RDYWNoZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT2JqZWN0Q2FjaGUuaAppbmRleCAwNzcwNDQ0Li40N2U5NGYxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PYmplY3RDYWNoZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09iamVjdENhY2hlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIE9iamVjdENhY2hlLmggLSBDbGFzcyBkZWZpbml0aW9uIGZvciB0aGUgT2JqZWN0Q2FjaGUgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvQ29tcGlsZU9uRGVtYW5kTGF5ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9Db21waWxlT25EZW1hbmRMYXllci5oCmluZGV4IDIwMDNmOGUuLmNhMWNlNDAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9Db21waWxlT25EZW1hbmRMYXllci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9Db21waWxlT25EZW1hbmRMYXllci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvbXBpbGVPbkRlbWFuZExheWVyLmggLSBDb21waWxlIGVhY2ggZnVuY3Rpb24gb24gZGVtYW5kIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC02Miw3ICs2MSw3IEBACiAKIGNsYXNzIEV4dHJhY3RpbmdJUk1hdGVyaWFsaXphdGlvblVuaXQ7CiAKLWNsYXNzIENvbXBpbGVPbkRlbWFuZExheWVyMiA6IHB1YmxpYyBJUkxheWVyIHsKK2NsYXNzIENvbXBpbGVPbkRlbWFuZExheWVyIDogcHVibGljIElSTGF5ZXIgewogICBmcmllbmQgY2xhc3MgUGFydGl0aW9uaW5nSVJNYXRlcmlhbGl6YXRpb25Vbml0OwogCiBwdWJsaWM6CkBAIC04NCw4ICs4Myw4IEBACiAgIC8vLyBzeW1ib2wgaW4gdGhlbSBpcyByZXF1ZXN0ZWQuCiAgIHN0YXRpYyBPcHRpb25hbDxHbG9iYWxWYWx1ZVNldD4gY29tcGlsZVdob2xlTW9kdWxlKEdsb2JhbFZhbHVlU2V0IFJlcXVlc3RlZCk7CiAKLSAgLy8vIENvbnN0cnVjdCBhIENvbXBpbGVPbkRlbWFuZExheWVyMi4KLSAgQ29tcGlsZU9uRGVtYW5kTGF5ZXIyKEV4ZWN1dGlvblNlc3Npb24gJkVTLCBJUkxheWVyICZCYXNlTGF5ZXIsCisgIC8vLyBDb25zdHJ1Y3QgYSBDb21waWxlT25EZW1hbmRMYXllci4KKyAgQ29tcGlsZU9uRGVtYW5kTGF5ZXIoRXhlY3V0aW9uU2Vzc2lvbiAmRVMsIElSTGF5ZXIgJkJhc2VMYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgIExhenlDYWxsVGhyb3VnaE1hbmFnZXIgJkxDVE1nciwKICAgICAgICAgICAgICAgICAgICAgICAgIEluZGlyZWN0U3R1YnNNYW5hZ2VyQnVpbGRlciBCdWlsZEluZGlyZWN0U3R1YnNNYW5hZ2VyKTsKIApAQCAtOTQsOCArOTMsNyBAQAogCiAgIC8vLyBFbWl0cyB0aGUgZ2l2ZW4gbW9kdWxlLiBUaGlzIHNob3VsZCBub3QgYmUgY2FsbGVkIGJ5IGNsaWVudHM6IGl0IHdpbGwgYmUKICAgLy8vIGNhbGxlZCBieSB0aGUgSklUIHdoZW4gYSBkZWZpbml0aW9uIGFkZGVkIHZpYSB0aGUgYWRkIG1ldGhvZCBpcyByZXF1ZXN0ZWQuCi0gIHZvaWQgZW1pdChNYXRlcmlhbGl6YXRpb25SZXNwb25zaWJpbGl0eSBSLCBWTW9kdWxlS2V5IEssCi0gICAgICAgICAgICBUaHJlYWRTYWZlTW9kdWxlIFRTTSkgb3ZlcnJpZGU7CisgIHZvaWQgZW1pdChNYXRlcmlhbGl6YXRpb25SZXNwb25zaWJpbGl0eSBSLCBUaHJlYWRTYWZlTW9kdWxlIFRTTSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgIHN0cnVjdCBQZXJEeWxpYlJlc291cmNlcyB7CkBAIC0xNDIsNyArMTQwLDcgQEAKIHRlbXBsYXRlIDx0eXBlbmFtZSBCYXNlTGF5ZXJULAogICAgICAgICAgIHR5cGVuYW1lIENvbXBpbGVDYWxsYmFja01nclQgPSBKSVRDb21waWxlQ2FsbGJhY2tNYW5hZ2VyLAogICAgICAgICAgIHR5cGVuYW1lIEluZGlyZWN0U3R1YnNNZ3JUID0gSW5kaXJlY3RTdHVic01hbmFnZXI+Ci1jbGFzcyBDb21waWxlT25EZW1hbmRMYXllciB7CitjbGFzcyBMZWdhY3lDb21waWxlT25EZW1hbmRMYXllciB7CiBwcml2YXRlOgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWF0ZXJpYWxpemVyRnRvcj4KICAgY2xhc3MgTGFtYmRhTWF0ZXJpYWxpemVyIGZpbmFsIDogcHVibGljIFZhbHVlTWF0ZXJpYWxpemVyIHsKQEAgLTI2NiwxMyArMjY0LDEzIEBACiAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoVk1vZHVsZUtleSBLLCBzdGQ6OnNoYXJlZF9wdHI8U3ltYm9sUmVzb2x2ZXI+IFIpPjsKIAogICAvLy8gQ29uc3RydWN0IGEgY29tcGlsZS1vbi1kZW1hbmQgbGF5ZXIgaW5zdGFuY2UuCi0gIENvbXBpbGVPbkRlbWFuZExheWVyKEV4ZWN1dGlvblNlc3Npb24gJkVTLCBCYXNlTGF5ZXJUICZCYXNlTGF5ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbFJlc29sdmVyR2V0dGVyIEdldFN5bWJvbFJlc29sdmVyLAotICAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xSZXNvbHZlclNldHRlciBTZXRTeW1ib2xSZXNvbHZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9uaW5nRnRvciBQYXJ0aXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgIENvbXBpbGVDYWxsYmFja01nclQgJkNhbGxiYWNrTWdyLAotICAgICAgICAgICAgICAgICAgICAgICBJbmRpcmVjdFN0dWJzTWFuYWdlckJ1aWxkZXJUIENyZWF0ZUluZGlyZWN0U3R1YnNNYW5hZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICBib29sIENsb25lU3R1YnNJbnRvUGFydGl0aW9ucyA9IHRydWUpCisgIExlZ2FjeUNvbXBpbGVPbkRlbWFuZExheWVyKEV4ZWN1dGlvblNlc3Npb24gJkVTLCBCYXNlTGF5ZXJUICZCYXNlTGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbFJlc29sdmVyR2V0dGVyIEdldFN5bWJvbFJlc29sdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xSZXNvbHZlclNldHRlciBTZXRTeW1ib2xSZXNvbHZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFydGl0aW9uaW5nRnRvciBQYXJ0aXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBpbGVDYWxsYmFja01nclQgJkNhbGxiYWNrTWdyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRpcmVjdFN0dWJzTWFuYWdlckJ1aWxkZXJUIENyZWF0ZUluZGlyZWN0U3R1YnNNYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIENsb25lU3R1YnNJbnRvUGFydGl0aW9ucyA9IHRydWUpCiAgICAgICA6IEVTKEVTKSwgQmFzZUxheWVyKEJhc2VMYXllciksCiAgICAgICAgIEdldFN5bWJvbFJlc29sdmVyKHN0ZDo6bW92ZShHZXRTeW1ib2xSZXNvbHZlcikpLAogICAgICAgICBTZXRTeW1ib2xSZXNvbHZlcihzdGQ6Om1vdmUoU2V0U3ltYm9sUmVzb2x2ZXIpKSwKQEAgLTI4MCw3ICsyNzgsNyBAQAogICAgICAgICBDcmVhdGVJbmRpcmVjdFN0dWJzTWFuYWdlcihzdGQ6Om1vdmUoQ3JlYXRlSW5kaXJlY3RTdHVic01hbmFnZXIpKSwKICAgICAgICAgQ2xvbmVTdHVic0ludG9QYXJ0aXRpb25zKENsb25lU3R1YnNJbnRvUGFydGl0aW9ucykge30KIAotICB+Q29tcGlsZU9uRGVtYW5kTGF5ZXIoKSB7CisgIH5MZWdhY3lDb21waWxlT25EZW1hbmRMYXllcigpIHsKICAgICAvLyBGSVhNRTogUmVwb3J0IGVycm9yIG9uIGxvZy4KICAgICB3aGlsZSAoIUxvZ2ljYWxEeWxpYnMuZW1wdHkoKSkKICAgICAgIGNvbnN1bWVFcnJvcihyZW1vdmVNb2R1bGUoTG9naWNhbER5bGlicy5iZWdpbigpLT5maXJzdCkpOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0NvbXBpbGVVdGlscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0NvbXBpbGVVdGlscy5oCmluZGV4IDNkMDJmOWQuLjE1YTY1NjYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9Db21waWxlVXRpbHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvQ29tcGlsZVV0aWxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29tcGlsZVV0aWxzLmggLSBVdGlsaXRpZXMgZm9yIGNvbXBpbGluZyBJUiBpbiB0aGUgSklUIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTM4LDcgKzM3LDcgQEAKIAogLy8vIFNpbXBsZSBjb21waWxlIGZ1bmN0b3I6IFRha2VzIGEgc2luZ2xlIElSIG1vZHVsZSBhbmQgcmV0dXJucyBhbiBPYmplY3RGaWxlLgogLy8vIFRoaXMgY29tcGlsZXIgc3VwcG9ydHMgYSBzaW5nbGUgY29tcGlsYXRpb24gdGhyZWFkIGFuZCBMTFZNQ29udGV4dCBvbmx5LgotLy8vIEZvciBtdWx0aXRocmVhZGVkIGNvbXBpbGF0aW9uLCB1c2UgTXVsdGlUaHJlYWRlZFNpbXBsZUNvbXBpbGVyIGJlbG93LgorLy8vIEZvciBtdWx0aXRocmVhZGVkIGNvbXBpbGF0aW9uLCB1c2UgQ29uY3VycmVudElSQ29tcGlsZXIgYmVsb3cuCiBjbGFzcyBTaW1wbGVDb21waWxlciB7CiBwdWJsaWM6CiAgIHVzaW5nIENvbXBpbGVSZXN1bHQgPSBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QnVmZmVyPjsKQEAgLTEwNSwxMCArMTA0LDEwIEBACiAvLy8KIC8vLyBUaGlzIGNsYXNzIGNyZWF0ZXMgYSBuZXcgVGFyZ2V0TWFjaGluZSBhbmQgU2ltcGxlQ29tcGlsZXIgaW5zdGFuY2UgZm9yIGVhY2gKIC8vLyBjb21waWxlLgotY2xhc3MgTXVsdGlUaHJlYWRlZFNpbXBsZUNvbXBpbGVyIHsKK2NsYXNzIENvbmN1cnJlbnRJUkNvbXBpbGVyIHsKIHB1YmxpYzoKLSAgTXVsdGlUaHJlYWRlZFNpbXBsZUNvbXBpbGVyKEpJVFRhcmdldE1hY2hpbmVCdWlsZGVyIEpUTUIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RDYWNoZSAqT2JqQ2FjaGUgPSBudWxscHRyKQorICBDb25jdXJyZW50SVJDb21waWxlcihKSVRUYXJnZXRNYWNoaW5lQnVpbGRlciBKVE1CLAorICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RDYWNoZSAqT2JqQ2FjaGUgPSBudWxscHRyKQogICAgICAgOiBKVE1CKHN0ZDo6bW92ZShKVE1CKSksIE9iakNhY2hlKE9iakNhY2hlKSB7fQogCiAgIHZvaWQgc2V0T2JqZWN0Q2FjaGUoT2JqZWN0Q2FjaGUgKk9iakNhY2hlKSB7IHRoaXMtPk9iakNhY2hlID0gT2JqQ2FjaGU7IH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9Db3JlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvQ29yZS5oCmluZGV4IGYzZWEyYWUuLjI5OTI0N2EgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9Db3JlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0NvcmUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tLS0tIENvcmUuaCAtLSBDb3JlIE9SQyBBUElzIChMYXllciwgSklURHlsaWIsIGV0Yy4pIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjAsMTAgKzE5LDcgQEAKICNpbmNsdWRlICJsbHZtL0lSL01vZHVsZS5oIgogI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9EZWJ1Zy5oIgogCi0jaW5jbHVkZSA8bGlzdD4KLSNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNkZWZpbmUgREVCVUdfVFlQRSAib3JjIgpAQCAtNDQsMjEgKzQwLDIxIEBACiAKIC8vLyBBIHNldCBvZiBzeW1ib2wgbmFtZXMgKHJlcHJlc2VudGVkIGJ5IFN5bWJvbFN0cmluZ1B0cnMgZm9yCiAvLyAgICAgICAgIGVmZmljaWVuY3kpLgotdXNpbmcgU3ltYm9sTmFtZVNldCA9IHN0ZDo6c2V0PFN5bWJvbFN0cmluZ1B0cj47Cit1c2luZyBTeW1ib2xOYW1lU2V0ID0gRGVuc2VTZXQ8U3ltYm9sU3RyaW5nUHRyPjsKIAogLy8vIEEgbWFwIGZyb20gc3ltYm9sIG5hbWVzIChhcyBTeW1ib2xTdHJpbmdQdHJzKSB0byBKSVRTeW1ib2xzCiAvLy8gICAgICAgIChhZGRyZXNzL2ZsYWdzIHBhaXJzKS4KLXVzaW5nIFN5bWJvbE1hcCA9IHN0ZDo6bWFwPFN5bWJvbFN0cmluZ1B0ciwgSklURXZhbHVhdGVkU3ltYm9sPjsKK3VzaW5nIFN5bWJvbE1hcCA9IERlbnNlTWFwPFN5bWJvbFN0cmluZ1B0ciwgSklURXZhbHVhdGVkU3ltYm9sPjsKIAogLy8vIEEgbWFwIGZyb20gc3ltYm9sIG5hbWVzIChhcyBTeW1ib2xTdHJpbmdQdHJzKSB0byBKSVRTeW1ib2xGbGFncy4KLXVzaW5nIFN5bWJvbEZsYWdzTWFwID0gc3RkOjptYXA8U3ltYm9sU3RyaW5nUHRyLCBKSVRTeW1ib2xGbGFncz47Cit1c2luZyBTeW1ib2xGbGFnc01hcCA9IERlbnNlTWFwPFN5bWJvbFN0cmluZ1B0ciwgSklUU3ltYm9sRmxhZ3M+OwogCiAvLy8gQSBiYXNlIGNsYXNzIGZvciBtYXRlcmlhbGl6YXRpb24gZmFpbHVyZXMgdGhhdCBhbGxvd3MgdGhlIGZhaWxpbmcKIC8vLyAgICAgICAgc3ltYm9scyB0byBiZSBvYnRhaW5lZCBmb3IgbG9nZ2luZy4KLXVzaW5nIFN5bWJvbERlcGVuZGVuY2VNYXAgPSBzdGQ6Om1hcDxKSVREeWxpYiAqLCBTeW1ib2xOYW1lU2V0PjsKK3VzaW5nIFN5bWJvbERlcGVuZGVuY2VNYXAgPSBEZW5zZU1hcDxKSVREeWxpYiAqLCBTeW1ib2xOYW1lU2V0PjsKIAotLy8vIEEgbGlzdCBvZiBKSVREeWxpYiBwb2ludGVycy4KLXVzaW5nIEpJVER5bGliTGlzdCA9IHN0ZDo6dmVjdG9yPEpJVER5bGliICo+OworLy8vIEEgbGlzdCBvZiAoSklURHlsaWIqLCBib29sKSBwYWlycy4KK3VzaW5nIEpJVER5bGliU2VhcmNoTGlzdCA9IHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxKSVREeWxpYiAqLCBib29sPj47CiAKIC8vLyBSZW5kZXIgYSBTeW1ib2xTdHJpbmdQdHIuCiByYXdfb3N0cmVhbSAmb3BlcmF0b3I8PChyYXdfb3N0cmVhbSAmT1MsIGNvbnN0IFN5bWJvbFN0cmluZ1B0ciAmU3ltKTsKQEAgLTg4LDggKzg0LDggQEAKIC8vLyBSZW5kZXIgYSBNYXRlcmlhbGl6YXRpb25Vbml0LgogcmF3X29zdHJlYW0gJm9wZXJhdG9yPDwocmF3X29zdHJlYW0gJk9TLCBjb25zdCBNYXRlcmlhbGl6YXRpb25Vbml0ICZNVSk7CiAKLS8vLyBSZW5kZXIgYSBKSVREeWxpYkxpc3QuCi1yYXdfb3N0cmVhbSAmb3BlcmF0b3I8PChyYXdfb3N0cmVhbSAmT1MsIGNvbnN0IEpJVER5bGliTGlzdCAmSkRzKTsKKy8vLyBSZW5kZXIgYSBKSVREeWxpYlNlYXJjaExpc3QuCityYXdfb3N0cmVhbSAmb3BlcmF0b3I8PChyYXdfb3N0cmVhbSAmT1MsIGNvbnN0IEpJVER5bGliU2VhcmNoTGlzdCAmSkRzKTsKIAogLy8vIENhbGxiYWNrIHRvIG5vdGlmeSBjbGllbnQgdGhhdCBzeW1ib2xzIGhhdmUgYmVlbiByZXNvbHZlZC4KIHVzaW5nIFN5bWJvbHNSZXNvbHZlZENhbGxiYWNrID0gc3RkOjpmdW5jdGlvbjx2b2lkKEV4cGVjdGVkPFN5bWJvbE1hcD4pPjsKQEAgLTE3MSw2ICsxNjcsOSBAQAogICAvLy8gICAgICAgIGludG8uCiAgIEpJVER5bGliICZnZXRUYXJnZXRKSVREeWxpYigpIGNvbnN0IHsgcmV0dXJuIEpEOyB9CiAKKyAgLy8vIFJldHVybnMgdGhlIFZNb2R1bGVLZXkgZm9yIHRoaXMgaW5zdGFuY2UuCisgIFZNb2R1bGVLZXkgZ2V0Vk1vZHVsZUtleSgpIGNvbnN0IHsgcmV0dXJuIEs7IH0KKwogICAvLy8gUmV0dXJucyB0aGUgc3ltYm9sIGZsYWdzIG1hcCBmb3IgdGhpcyByZXNwb25zaWJpbGl0eSBpbnN0YW5jZS4KICAgLy8vIE5vdGU6IFRoZSByZXR1cm5lZCBmbGFncyBtYXkgaGF2ZSB0cmFuc2llbnQgZmxhZ3MgKExhenksIE1hdGVyaWFsaXppbmcpCiAgIC8vLyBzZXQuIFRoZXNlIHNob3VsZCBiZSBzdHJpcHBlZCB3aXRoIEpJVFN5bWJvbEZsYWdzOjpzdHJpcFRyYW5zaWVudEZsYWdzCkBAIC0yMjEsNyArMjIwLDggQEAKICAgLy8vIERlbGVnYXRlcyByZXNwb25zaWJpbGl0eSBmb3IgdGhlIGdpdmVuIHN5bWJvbHMgdG8gdGhlIHJldHVybmVkCiAgIC8vLyBtYXRlcmlhbGl6YXRpb24gcmVzcG9uc2liaWxpdHkuIFVzZWZ1bCBmb3IgYnJlYWtpbmcgdXAgd29yayBiZXR3ZWVuCiAgIC8vLyB0aHJlYWRzLCBvciBkaWZmZXJlbnQga2luZHMgb2YgbWF0ZXJpYWxpemF0aW9uIHByb2Nlc3Nlcy4KLSAgTWF0ZXJpYWxpemF0aW9uUmVzcG9uc2liaWxpdHkgZGVsZWdhdGUoY29uc3QgU3ltYm9sTmFtZVNldCAmU3ltYm9scyk7CisgIE1hdGVyaWFsaXphdGlvblJlc3BvbnNpYmlsaXR5IGRlbGVnYXRlKGNvbnN0IFN5bWJvbE5hbWVTZXQgJlN5bWJvbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZNb2R1bGVLZXkgTmV3S2V5ID0gVk1vZHVsZUtleSgpKTsKIAogICB2b2lkIGFkZERlcGVuZGVuY2llcyhjb25zdCBTeW1ib2xTdHJpbmdQdHIgJk5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN5bWJvbERlcGVuZGVuY2VNYXAgJkRlcGVuZGVuY2llcyk7CkBAIC0yMzIsMTAgKzIzMiwxMiBAQAogcHJpdmF0ZToKICAgLy8vIENyZWF0ZSBhIE1hdGVyaWFsaXphdGlvblJlc3BvbnNpYmlsaXR5IGZvciB0aGUgZ2l2ZW4gSklURHlsaWIgYW5kCiAgIC8vLyAgICAgICAgaW5pdGlhbCBzeW1ib2xzLgotICBNYXRlcmlhbGl6YXRpb25SZXNwb25zaWJpbGl0eShKSVREeWxpYiAmSkQsIFN5bWJvbEZsYWdzTWFwIFN5bWJvbEZsYWdzKTsKKyAgTWF0ZXJpYWxpemF0aW9uUmVzcG9uc2liaWxpdHkoSklURHlsaWIgJkpELCBTeW1ib2xGbGFnc01hcCBTeW1ib2xGbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVk1vZHVsZUtleSBLKTsKIAogICBKSVREeWxpYiAmSkQ7CiAgIFN5bWJvbEZsYWdzTWFwIFN5bWJvbEZsYWdzOworICBWTW9kdWxlS2V5IEs7CiB9OwogCiAvLy8gQSBNYXRlcmlhbGl6YXRpb25Vbml0IHJlcHJlc2VudHMgYSBzZXQgb2Ygc3ltYm9sIGRlZmluaXRpb25zIHRoYXQgY2FuCkBAIC0yNDgsOCArMjUwLDggQEAKIC8vLyBzdHJvbmdlciBkZWZpbml0aW9uIGlzIGFkZGVkIG9yIGFscmVhZHkgcHJlc2VudC4KIGNsYXNzIE1hdGVyaWFsaXphdGlvblVuaXQgewogcHVibGljOgotICBNYXRlcmlhbGl6YXRpb25Vbml0KFN5bWJvbEZsYWdzTWFwIEluaXRhbFN5bWJvbEZsYWdzKQotICAgICAgOiBTeW1ib2xGbGFncyhzdGQ6Om1vdmUoSW5pdGFsU3ltYm9sRmxhZ3MpKSB7fQorICBNYXRlcmlhbGl6YXRpb25Vbml0KFN5bWJvbEZsYWdzTWFwIEluaXRhbFN5bWJvbEZsYWdzLCBWTW9kdWxlS2V5IEspCisgICAgICA6IFN5bWJvbEZsYWdzKHN0ZDo6bW92ZShJbml0YWxTeW1ib2xGbGFncykpLCBLKHN0ZDo6bW92ZShLKSkge30KIAogICB2aXJ0dWFsIH5NYXRlcmlhbGl6YXRpb25Vbml0KCkge30KIApAQCAtMjY0LDcgKzI2Niw4IEBACiAgIC8vLyBFeGVjdXRpb25TZXNzaW9uOjpEaXNwYXRjaE1hdGVyaWFsaXphdGlvbkZ1bmN0aW9uKSB0byB0cmlnZ2VyCiAgIC8vLyBtYXRlcmlhbGl6YXRpb24gb2YgdGhpcyBNYXRlcmlhbGl6YXRpb25Vbml0LgogICB2b2lkIGRvTWF0ZXJpYWxpemUoSklURHlsaWIgJkpEKSB7Ci0gICAgbWF0ZXJpYWxpemUoTWF0ZXJpYWxpemF0aW9uUmVzcG9uc2liaWxpdHkoSkQsIHN0ZDo6bW92ZShTeW1ib2xGbGFncykpKTsKKyAgICBtYXRlcmlhbGl6ZShNYXRlcmlhbGl6YXRpb25SZXNwb25zaWJpbGl0eShKRCwgc3RkOjptb3ZlKFN5bWJvbEZsYWdzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoSykpKTsKICAgfQogCiAgIC8vLyBDYWxsZWQgYnkgSklURHlsaWJzIHRvIG5vdGlmeSBNYXRlcmlhbGl6YXRpb25Vbml0cyB0aGF0IHRoZSBnaXZlbiBzeW1ib2wKQEAgLTI3Niw2ICsyNzksNyBAQAogCiBwcm90ZWN0ZWQ6CiAgIFN5bWJvbEZsYWdzTWFwIFN5bWJvbEZsYWdzOworICBWTW9kdWxlS2V5IEs7CiAKIHByaXZhdGU6CiAgIHZpcnR1YWwgdm9pZCBhbmNob3IoKTsKQEAgLTMwMSw3ICszMDUsNyBAQAogLy8vIG1hdGVyaWFsaXplZC4KIGNsYXNzIEFic29sdXRlU3ltYm9sc01hdGVyaWFsaXphdGlvblVuaXQgOiBwdWJsaWMgTWF0ZXJpYWxpemF0aW9uVW5pdCB7CiBwdWJsaWM6Ci0gIEFic29sdXRlU3ltYm9sc01hdGVyaWFsaXphdGlvblVuaXQoU3ltYm9sTWFwIFN5bWJvbHMpOworICBBYnNvbHV0ZVN5bWJvbHNNYXRlcmlhbGl6YXRpb25Vbml0KFN5bWJvbE1hcCBTeW1ib2xzLCBWTW9kdWxlS2V5IEspOwogCiAgIFN0cmluZ1JlZiBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTMyNCw5ICszMjgsOSBAQAogLy8vIFxlbmRjb2RlCiAvLy8KIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8QWJzb2x1dGVTeW1ib2xzTWF0ZXJpYWxpemF0aW9uVW5pdD4KLWFic29sdXRlU3ltYm9scyhTeW1ib2xNYXAgU3ltYm9scykgeworYWJzb2x1dGVTeW1ib2xzKFN5bWJvbE1hcCBTeW1ib2xzLCBWTW9kdWxlS2V5IEsgPSBWTW9kdWxlS2V5KCkpIHsKICAgcmV0dXJuIGxsdm06Om1ha2VfdW5pcXVlPEFic29sdXRlU3ltYm9sc01hdGVyaWFsaXphdGlvblVuaXQ+KAotICAgICAgc3RkOjptb3ZlKFN5bWJvbHMpKTsKKyAgICAgIHN0ZDo6bW92ZShTeW1ib2xzKSwgc3RkOjptb3ZlKEspKTsKIH0KIAogc3RydWN0IFN5bWJvbEFsaWFzTWFwRW50cnkgewpAQCAtMzM5LDIwICszNDMsMjIgQEAKIH07CiAKIC8vLyBBIG1hcCBvZiBTeW1ib2xzIHRvIChTeW1ib2wsIEZsYWdzKSBwYWlycy4KLXVzaW5nIFN5bWJvbEFsaWFzTWFwID0gc3RkOjptYXA8U3ltYm9sU3RyaW5nUHRyLCBTeW1ib2xBbGlhc01hcEVudHJ5PjsKK3VzaW5nIFN5bWJvbEFsaWFzTWFwID0gRGVuc2VNYXA8U3ltYm9sU3RyaW5nUHRyLCBTeW1ib2xBbGlhc01hcEVudHJ5PjsKIAogLy8vIEEgbWF0ZXJpYWxpemF0aW9uIHVuaXQgZm9yIHN5bWJvbCBhbGlhc2VzLiBBbGxvd3MgZXhpc3Rpbmcgc3ltYm9scyB0byBiZQogLy8vIGFsaWFzZWQgd2l0aCBhbHRlcm5hdGUgZmxhZ3MuCiBjbGFzcyBSZUV4cG9ydHNNYXRlcmlhbGl6YXRpb25Vbml0IDogcHVibGljIE1hdGVyaWFsaXphdGlvblVuaXQgewogcHVibGljOgogICAvLy8gU291cmNlSkQgaXMgYWxsb3dlZCB0byBiZSBudWxscHRyLCBpbiB3aGljaCBjYXNlIHRoZSBzb3VyY2UgSklURHlsaWIgaXMKLSAgLy8vIHRha2VuIHRvIGJlIHdoYXRldmVyIEpJVER5bGliIHRoZXNlIGRlZmluaXRpb25zIGFyZSBtYXRlcmlhbGl6ZWQgaW4uIFRoaXMKLSAgLy8vIGlzIHVzZWZ1bCBmb3IgZGVmaW5pbmcgYWxpYXNlcyB3aXRoaW4gYSBKSVREeWxpYi4KKyAgLy8vIHRha2VuIHRvIGJlIHdoYXRldmVyIEpJVER5bGliIHRoZXNlIGRlZmluaXRpb25zIGFyZSBtYXRlcmlhbGl6ZWQgaW4gKGFuZAorICAvLy8gTWF0Y2hOb25FeHBvcnRlZCBoYXMgbm8gZWZmZWN0KS4gVGhpcyBpcyB1c2VmdWwgZm9yIGRlZmluaW5nIGFsaWFzZXMKKyAgLy8vIHdpdGhpbiBhIEpJVER5bGliLgogICAvLy8KICAgLy8vIE5vdGU6IENhcmUgbXVzdCBiZSB0YWtlbiB0aGF0IG5vIHNldHMgb2YgYWxpYXNlcyBmb3JtIGEgY3ljbGUsIGFzIHN1Y2gKICAgLy8vICAgICAgIGEgY3ljbGUgd2lsbCByZXN1bHQgaW4gYSBkZWFkbG9jayB3aGVuIGFueSBzeW1ib2wgaW4gdGhlIGN5Y2xlIGlzCiAgIC8vLyAgICAgICByZXNvbHZlZC4KLSAgUmVFeHBvcnRzTWF0ZXJpYWxpemF0aW9uVW5pdChKSVREeWxpYiAqU291cmNlSkQsIFN5bWJvbEFsaWFzTWFwIEFsaWFzZXMpOworICBSZUV4cG9ydHNNYXRlcmlhbGl6YXRpb25Vbml0KEpJVER5bGliICpTb3VyY2VKRCwgYm9vbCBNYXRjaE5vbkV4cG9ydGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbEFsaWFzTWFwIEFsaWFzZXMsIFZNb2R1bGVLZXkgSyk7CiAKICAgU3RyaW5nUmVmIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMzYyLDYgKzM2OCw3IEBACiAgIHN0YXRpYyBTeW1ib2xGbGFnc01hcCBleHRyYWN0RmxhZ3MoY29uc3QgU3ltYm9sQWxpYXNNYXAgJkFsaWFzZXMpOwogCiAgIEpJVER5bGliICpTb3VyY2VKRCA9IG51bGxwdHI7CisgIGJvb2wgTWF0Y2hOb25FeHBvcnRlZCA9IGZhbHNlOwogICBTeW1ib2xBbGlhc01hcCBBbGlhc2VzOwogfTsKIApAQCAtMzc3LDE3ICszODQsMjEgQEAKIC8vLyAgICAgcmV0dXJuIEVycjsKIC8vLyBcZW5kY29kZQogaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxSZUV4cG9ydHNNYXRlcmlhbGl6YXRpb25Vbml0Pgotc3ltYm9sQWxpYXNlcyhTeW1ib2xBbGlhc01hcCBBbGlhc2VzKSB7Ci0gIHJldHVybiBsbHZtOjptYWtlX3VuaXF1ZTxSZUV4cG9ydHNNYXRlcmlhbGl6YXRpb25Vbml0PihudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptb3ZlKEFsaWFzZXMpKTsKK3N5bWJvbEFsaWFzZXMoU3ltYm9sQWxpYXNNYXAgQWxpYXNlcywgVk1vZHVsZUtleSBLID0gVk1vZHVsZUtleSgpKSB7CisgIHJldHVybiBsbHZtOjptYWtlX3VuaXF1ZTxSZUV4cG9ydHNNYXRlcmlhbGl6YXRpb25Vbml0PigKKyAgICAgIG51bGxwdHIsIHRydWUsIHN0ZDo6bW92ZShBbGlhc2VzKSwgc3RkOjptb3ZlKEspKTsKIH0KIAogLy8vIENyZWF0ZSBhIG1hdGVyaWFsaXphdGlvbiB1bml0IGZvciByZS1leHBvcnRpbmcgc3ltYm9scyBmcm9tIGFub3RoZXIgSklURHlsaWIKIC8vLyB3aXRoIGFsdGVybmF0aXZlIG5hbWVzL2ZsYWdzLgorLy8vIElmIE1hdGNoTm9uRXhwb3J0ZWQgaXMgdHJ1ZSB0aGVuIG5vbi1leHBvcnRlZCBzeW1ib2xzIGZyb20gU291cmNlSkQgY2FuIGJlCisvLy8gcmUtZXhwb3J0ZWQuIElmIGl0IGlzIGZhbHNlLCBhdHRlbXB0cyB0byByZS1leHBvcnQgYSBub24tZXhwb3J0ZWQgc3ltYm9sCisvLy8gd2lsbCByZXN1bHQgaW4gYSAic3ltYm9sIG5vdCBmb3VuZCIgZXJyb3IuCiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFJlRXhwb3J0c01hdGVyaWFsaXphdGlvblVuaXQ+Ci1yZWV4cG9ydHMoSklURHlsaWIgJlNvdXJjZUpELCBTeW1ib2xBbGlhc01hcCBBbGlhc2VzKSB7Ci0gIHJldHVybiBsbHZtOjptYWtlX3VuaXF1ZTxSZUV4cG9ydHNNYXRlcmlhbGl6YXRpb25Vbml0PigmU291cmNlSkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoQWxpYXNlcykpOworcmVleHBvcnRzKEpJVER5bGliICZTb3VyY2VKRCwgU3ltYm9sQWxpYXNNYXAgQWxpYXNlcywKKyAgICAgICAgICBib29sIE1hdGNoTm9uRXhwb3J0ZWQgPSBmYWxzZSwgVk1vZHVsZUtleSBLID0gVk1vZHVsZUtleSgpKSB7CisgIHJldHVybiBsbHZtOjptYWtlX3VuaXF1ZTxSZUV4cG9ydHNNYXRlcmlhbGl6YXRpb25Vbml0PigKKyAgICAgICZTb3VyY2VKRCwgTWF0Y2hOb25FeHBvcnRlZCwgc3RkOjptb3ZlKEFsaWFzZXMpLCBzdGQ6Om1vdmUoSykpOwogfQogCiAvLy8gQnVpbGQgYSBTeW1ib2xBbGlhc01hcCBmb3IgdGhlIGNvbW1vbiBjYXNlIHdoZXJlIHlvdSB3YW50IHRvIHJlLWV4cG9ydApAQCAtMzk1LDE1ICs0MDYsMjMgQEAKIEV4cGVjdGVkPFN5bWJvbEFsaWFzTWFwPgogYnVpbGRTaW1wbGVSZWV4cG9ydHNBbGlhc01hcChKSVREeWxpYiAmU291cmNlSkQsIGNvbnN0IFN5bWJvbE5hbWVTZXQgJlN5bWJvbHMpOwogCi1jbGFzcyBSZWV4cG9ydHNGYWxsYmFja0RlZmluaXRpb25HZW5lcmF0b3IgeworLy8vIFJlZXhwb3J0c0dlbmVyYXRvciBjYW4gYmUgdXNlZCB3aXRoIEpJVER5bGliOjpzZXRHZW5lcmF0b3IgdG8gYXV0b21hdGljYWxseQorLy8vIHJlLWV4cG9ydCBhIHN1YnNldCBvZiB0aGUgc291cmNlIEpJVER5bGliJ3Mgc3ltYm9scyBpbiB0aGUgdGFyZ2V0LgorY2xhc3MgUmVleHBvcnRzR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgdXNpbmcgU3ltYm9sUHJlZGljYXRlID0gc3RkOjpmdW5jdGlvbjxib29sKFN5bWJvbFN0cmluZ1B0cik+OwotICBSZWV4cG9ydHNGYWxsYmFja0RlZmluaXRpb25HZW5lcmF0b3IoSklURHlsaWIgJkJhY2tpbmdKRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbFByZWRpY2F0ZSBBbGxvdyk7CisKKyAgLy8vIENyZWF0ZSBhIHJlZXhwb3J0cyBnZW5lcmF0b3IuIElmIGFuIEFsbG93IHByZWRpY2F0ZSBpcyBwYXNzZWQsIG9ubHkKKyAgLy8vIHN5bWJvbHMgZm9yIHdoaWNoIHRoZSBwcmVkaWNhdGUgcmV0dXJucyB0cnVlIHdpbGwgYmUgcmVleHBvcnRlZC4gSWYgbm8KKyAgLy8vIEFsbG93IHByZWRpY2F0ZSBpcyBwYXNzZWQsIGFsbCBzeW1ib2xzIHdpbGwgYmUgZXhwb3J0ZWQuCisgIFJlZXhwb3J0c0dlbmVyYXRvcihKSVREeWxpYiAmU291cmNlSkQsIGJvb2wgTWF0Y2hOb25FeHBvcnRlZCA9IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgU3ltYm9sUHJlZGljYXRlIEFsbG93ID0gU3ltYm9sUHJlZGljYXRlKCkpOworCiAgIFN5bWJvbE5hbWVTZXQgb3BlcmF0b3IoKShKSVREeWxpYiAmSkQsIGNvbnN0IFN5bWJvbE5hbWVTZXQgJk5hbWVzKTsKIAogcHJpdmF0ZToKLSAgSklURHlsaWIgJkJhY2tpbmdKRDsKKyAgSklURHlsaWIgJlNvdXJjZUpEOworICBib29sIE1hdGNoTm9uRXhwb3J0ZWQgPSBmYWxzZTsKICAgU3ltYm9sUHJlZGljYXRlIEFsbG93OwogfTsKIApAQCAtNDc4LDExICs0OTcsMTEgQEAKICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGlvblNlc3Npb247CiAgIGZyaWVuZCBjbGFzcyBNYXRlcmlhbGl6YXRpb25SZXNwb25zaWJpbGl0eTsKIHB1YmxpYzoKLSAgdXNpbmcgRmFsbGJhY2tEZWZpbml0aW9uR2VuZXJhdG9yRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPFN5bWJvbE5hbWVTZXQoCisgIHVzaW5nIEdlbmVyYXRvckZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjxTeW1ib2xOYW1lU2V0KAogICAgICAgSklURHlsaWIgJlBhcmVudCwgY29uc3QgU3ltYm9sTmFtZVNldCAmTmFtZXMpPjsKIAogICB1c2luZyBBc3luY2hyb25vdXNTeW1ib2xRdWVyeVNldCA9Ci0gICAgICBzdGQ6OnNldDxzdGQ6OnNoYXJlZF9wdHI8QXN5bmNocm9ub3VzU3ltYm9sUXVlcnk+PjsKKyAgICBzdGQ6OnNldDxzdGQ6OnNoYXJlZF9wdHI8QXN5bmNocm9ub3VzU3ltYm9sUXVlcnk+PjsKIAogICBKSVREeWxpYihjb25zdCBKSVREeWxpYiAmKSA9IGRlbGV0ZTsKICAgSklURHlsaWIgJm9wZXJhdG9yPShjb25zdCBKSVREeWxpYiAmKSA9IGRlbGV0ZTsKQEAgLTQ5NSwxMiArNTE0LDEyIEBACiAgIC8vLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIEV4ZWN1dGlvblNlc3Npb24gZm9yIHRoaXMgSklURHlsaWIuCiAgIEV4ZWN1dGlvblNlc3Npb24gJmdldEV4ZWN1dGlvblNlc3Npb24oKSBjb25zdCB7IHJldHVybiBFUzsgfQogCi0gIC8vLyBTZXQgYSBmYWxsYmFjayBkZWZlbml0aW9uIGdlbmVyYXRvci4gSWYgc2V0LCBsb29rdXAgYW5kIGxvb2t1cEZsYWdzIHdpbGwKLSAgLy8vIHBhc3MgdGhlIHVucmVzb2x2ZWQgc3ltYm9scyBzZXQgdG8gdGhlIGZhbGxiYWNrIGRlZmluaXRpb24gZ2VuZXJhdG9yLAotICAvLy8gYWxsb3dpbmcgaXQgdG8gYWRkIGEgbmV3IGRlZmluaXRpb24gdG8gdGhlIEpJVER5bGliLgotICB2b2lkIHNldEZhbGxiYWNrRGVmaW5pdGlvbkdlbmVyYXRvcigKLSAgICAgIEZhbGxiYWNrRGVmaW5pdGlvbkdlbmVyYXRvckZ1bmN0aW9uIEZhbGxiYWNrRGVmaW5pdGlvbkdlbmVyYXRvcikgewotICAgIHRoaXMtPkZhbGxiYWNrRGVmaW5pdGlvbkdlbmVyYXRvciA9IHN0ZDo6bW92ZShGYWxsYmFja0RlZmluaXRpb25HZW5lcmF0b3IpOworICAvLy8gU2V0IGEgZGVmaW5pdGlvbiBnZW5lcmF0b3IuIElmIHNldCwgd2hlbmV2ZXIgYSBzeW1ib2wgZmFpbHMgdG8gcmVzb2x2ZQorICAvLy8gd2l0aGluIHRoaXMgSklURHlsaWIsIGxvb2t1cCBhbmQgbG9va3VwRmxhZ3Mgd2lsbCBwYXNzIHRoZSB1bnJlc29sdmVkCisgIC8vLyBzeW1ib2xzIHNldCB0byB0aGUgZGVmaW5pdGlvbiBnZW5lcmF0b3IuIFRoZSBnZW5lcmF0b3IgY2FuIG9wdGlvbmFsbHkKKyAgLy8vIGFkZCBhIGRlZmluaXRpb24gZm9yIHRoZSB1bnJlc29sdmVkIHN5bWJvbHMgdG8gdGhlIGR5bGliLgorICB2b2lkIHNldEdlbmVyYXRvcihHZW5lcmF0b3JGdW5jdGlvbiBEZWZHZW5lcmF0b3IpIHsKKyAgICB0aGlzLT5EZWZHZW5lcmF0b3IgPSBzdGQ6Om1vdmUoRGVmR2VuZXJhdG9yKTsKICAgfQogCiAgIC8vLyBTZXQgdGhlIHNlYXJjaCBvcmRlciB0byBiZSB1c2VkIHdoZW4gZml4aW5nIHVwIGRlZmluaXRpb25zIGluIEpJVER5bGliLgpAQCAtNTIyLDE2ICs1NDEsMTggQEAKICAgLy8vIGFzIHRoZSBmaXJzdCBpbiB0aGUgc2VhcmNoIG9yZGVyIChpbnN0ZWFkIG9mIHRoaXMgZHlsaWIpIGVuc3VyZXMgdGhhdAogICAvLy8gZGVmaW5pdGlvbnMgd2l0aGluIHRoaXMgZHlsaWIgcmVzb2x2ZSB0byB0aGUgbGF6eS1jb21waWxpbmcgc3R1YnMsCiAgIC8vLyByYXRoZXIgdGhhbiBpbW1lZGlhdGVseSBtYXRlcmlhbGl6aW5nIHRoZSBkZWZpbml0aW9ucyBpbiB0aGlzIGR5bGliLgotICB2b2lkIHNldFNlYXJjaE9yZGVyKEpJVER5bGliTGlzdCBOZXdTZWFyY2hPcmRlciwKLSAgICAgICAgICAgICAgICAgICAgICBib29sIFNlYXJjaFRoaXNKSVREeWxpYkZpcnN0ID0gdHJ1ZSk7CisgIHZvaWQgc2V0U2VhcmNoT3JkZXIoSklURHlsaWJTZWFyY2hMaXN0IE5ld1NlYXJjaE9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgU2VhcmNoVGhpc0pJVER5bGliRmlyc3QgPSB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgTWF0Y2hOb25FeHBvcnRlZEluVGhpc0R5bGliID0gdHJ1ZSk7CiAKICAgLy8vIEFkZCB0aGUgZ2l2ZW4gSklURHlsaWIgdG8gdGhlIHNlYXJjaCBvcmRlciBmb3IgZGVmaW5pdGlvbnMgaW4gdGhpcwogICAvLy8gSklURHlsaWIuCi0gIHZvaWQgYWRkVG9TZWFyY2hPcmRlcihKSVREeWxpYiAmSkQpOworICB2b2lkIGFkZFRvU2VhcmNoT3JkZXIoSklURHlsaWIgJkpELCBib29sIE1hdGNOb25FeHBvcnRlZCA9IGZhbHNlKTsKIAogICAvLy8gUmVwbGFjZSBPbGRKRCB3aXRoIE5ld0pEIGluIHRoZSBzZWFyY2ggb3JkZXIgaWYgT2xkSkQgaXMgcHJlc2VudC4KICAgLy8vIE90aGVyd2lzZSB0aGlzIG9wZXJhdGlvbiBpcyBhIG5vLW9wLgotICB2b2lkIHJlcGxhY2VJblNlYXJjaE9yZGVyKEpJVER5bGliICZPbGRKRCwgSklURHlsaWIgJk5ld0pEKTsKKyAgdm9pZCByZXBsYWNlSW5TZWFyY2hPcmRlcihKSVREeWxpYiAmT2xkSkQsIEpJVER5bGliICZOZXdKRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIE1hdGNoTm9uRXhwb3J0ZWQgPSBmYWxzZSk7CiAKICAgLy8vIFJlbW92ZSB0aGUgZ2l2ZW4gSklURHlsaWIgZnJvbSB0aGUgc2VhcmNoIG9yZGVyIGZvciB0aGlzIEpJVER5bGliIGlmIGl0IGlzCiAgIC8vLyBwcmVzZW50LiBPdGhlcndpc2UgdGhpcyBvcGVyYXRpb24gaXMgYSBuby1vcC4KQEAgLTU0MCw3ICs1NjEsNyBAQAogICAvLy8gRG8gc29tZXRoaW5nIHdpdGggdGhlIHNlYXJjaCBvcmRlciAocnVuIHVuZGVyIHRoZSBzZXNzaW9uIGxvY2spLgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuYz4KICAgYXV0byB3aXRoU2VhcmNoT3JkZXJEbyhGdW5jICYmRikKLSAgICAgIC0+IGRlY2x0eXBlKEYoc3RkOjpkZWNsdmFsPGNvbnN0IEpJVER5bGliTGlzdCAmPigpKSk7CisgICAgICAtPiBkZWNsdHlwZShGKHN0ZDo6ZGVjbHZhbDxjb25zdCBKSVREeWxpYlNlYXJjaExpc3QgJj4oKSkpOwogCiAgIC8vLyBEZWZpbmUgYWxsIHN5bWJvbHMgcHJvdmlkZWQgYnkgdGhlIG1hdGVyaWFsaXphdGlvbiB1bml0IHRvIGJlIHBhcnQgb2YgdGhpcwogICAvLy8gSklURHlsaWIuCkBAIC02MDIsNyArNjIzLDcgQEAKICAgfTsKIAogICB1c2luZyBVbm1hdGVyaWFsaXplZEluZm9zTWFwID0KLSAgICAgIHN0ZDo6bWFwPFN5bWJvbFN0cmluZ1B0ciwgc3RkOjpzaGFyZWRfcHRyPFVubWF0ZXJpYWxpemVkSW5mbz4+OworICAgICAgRGVuc2VNYXA8U3ltYm9sU3RyaW5nUHRyLCBzdGQ6OnNoYXJlZF9wdHI8VW5tYXRlcmlhbGl6ZWRJbmZvPj47CiAKICAgc3RydWN0IE1hdGVyaWFsaXppbmdJbmZvIHsKICAgICBBc3luY2hyb25vdXNTeW1ib2xRdWVyeUxpc3QgUGVuZGluZ1F1ZXJpZXM7CkBAIC02MTEsNyArNjMyLDcgQEAKICAgICBib29sIElzRW1pdHRlZCA9IGZhbHNlOwogICB9OwogCi0gIHVzaW5nIE1hdGVyaWFsaXppbmdJbmZvc01hcCA9IHN0ZDo6bWFwPFN5bWJvbFN0cmluZ1B0ciwgTWF0ZXJpYWxpemluZ0luZm8+OworICB1c2luZyBNYXRlcmlhbGl6aW5nSW5mb3NNYXAgPSBEZW5zZU1hcDxTeW1ib2xTdHJpbmdQdHIsIE1hdGVyaWFsaXppbmdJbmZvPjsKIAogICB1c2luZyBMb29rdXBJbXBsQWN0aW9uRmxhZ3MgPSBlbnVtIHsKICAgICBOb25lID0gMCwKQEAgLTYyOCwxMCArNjQ5LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN5bWJvbE5hbWVTZXQgJk5hbWVzKTsKIAogICB2b2lkIGxvZGdlUXVlcnkoc3RkOjpzaGFyZWRfcHRyPEFzeW5jaHJvbm91c1N5bWJvbFF1ZXJ5PiAmUSwKLSAgICAgICAgICAgICAgICAgIFN5bWJvbE5hbWVTZXQgJlVucmVzb2x2ZWQsIE1hdGVyaWFsaXphdGlvblVuaXRMaXN0ICZNVXMpOworICAgICAgICAgICAgICAgICAgU3ltYm9sTmFtZVNldCAmVW5yZXNvbHZlZCwgYm9vbCBNYXRjaE5vbkV4cG9ydGVkLAorICAgICAgICAgICAgICAgICAgTWF0ZXJpYWxpemF0aW9uVW5pdExpc3QgJk1Vcyk7CiAKICAgdm9pZCBsb2RnZVF1ZXJ5SW1wbChzdGQ6OnNoYXJlZF9wdHI8QXN5bmNocm9ub3VzU3ltYm9sUXVlcnk+ICZRLAotICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbE5hbWVTZXQgJlVucmVzb2x2ZWQsIE1hdGVyaWFsaXphdGlvblVuaXRMaXN0ICZNVXMpOworICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbE5hbWVTZXQgJlVucmVzb2x2ZWQsIGJvb2wgTWF0Y2hOb25FeHBvcnRlZCwKKyAgICAgICAgICAgICAgICAgICAgICBNYXRlcmlhbGl6YXRpb25Vbml0TGlzdCAmTVVzKTsKIAogICBMb29rdXBJbXBsQWN0aW9uRmxhZ3MKICAgbG9va3VwSW1wbChzdGQ6OnNoYXJlZF9wdHI8QXN5bmNocm9ub3VzU3ltYm9sUXVlcnk+ICZRLApAQCAtNjY1LDggKzY4OCw4IEBACiAgIFN5bWJvbE1hcCBTeW1ib2xzOwogICBVbm1hdGVyaWFsaXplZEluZm9zTWFwIFVubWF0ZXJpYWxpemVkSW5mb3M7CiAgIE1hdGVyaWFsaXppbmdJbmZvc01hcCBNYXRlcmlhbGl6aW5nSW5mb3M7Ci0gIEZhbGxiYWNrRGVmaW5pdGlvbkdlbmVyYXRvckZ1bmN0aW9uIEZhbGxiYWNrRGVmaW5pdGlvbkdlbmVyYXRvcjsKLSAgSklURHlsaWJMaXN0IFNlYXJjaE9yZGVyOworICBHZW5lcmF0b3JGdW5jdGlvbiBEZWZHZW5lcmF0b3I7CisgIEpJVER5bGliU2VhcmNoTGlzdCBTZWFyY2hPcmRlcjsKIH07CiAKIC8vLyBBbiBFeGVjdXRpb25TZXNzaW9uIHJlcHJlc2VudHMgYSBydW5uaW5nIEpJVCBwcm9ncmFtLgpAQCAtNzUwLDYgKzc3MywxMCBAQAogCiAgIC8vLyBTZWFyY2ggdGhlIGdpdmVuIEpJVER5bGliIGxpc3QgZm9yIHRoZSBnaXZlbiBzeW1ib2xzLgogICAvLy8KKyAgLy8vIFNlYXJjaE9yZGVyIGxpc3RzIHRoZSBKSVREeWxpYnMgdG8gc2VhcmNoLiBGb3IgZWFjaCBkeWxpYiwgdGhlIGFzc29jaWF0ZWQKKyAgLy8vIGJvb2xlYW4gaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHNlYXJjaCBzaG91bGQgbWF0Y2ggYWdhaW5zdCBub24tZXhwb3J0ZWQKKyAgLy8vIChoaWRkZW4gdmlzaWJpbGl0eSkgc3ltYm9scyBpbiB0aGF0IGR5bGliICh0cnVlIG1lYW5zIG1hdGNoIGFnYWluc3QKKyAgLy8vIG5vbi1leHBvcnRlZCBzeW1ib2xzLCBmYWxzZSBtZWFucyBkbyBub3QgbWF0Y2gpLgogICAvLy8KICAgLy8vIFRoZSBPblJlc29sdmUgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgb25jZSBhbGwgcmVxdWVzdGVkIHN5bWJvbHMgYXJlCiAgIC8vLyByZXNvbHZlZCwgb3IgaWYgYW4gZXJyb3Igb2NjdXJzIHByaW9yIHRvIHJlc29sdXRpb24uCkBAIC03NjYsNyArNzkzLDcgQEAKICAgLy8vIGRlcGVuZGVuYW50IHN5bWJvbHMgZm9yIHRoaXMgcXVlcnkgKGUuZy4gaXQgaXMgYmVpbmcgbWFkZSBieSBhIHRvcCBsZXZlbAogICAvLy8gY2xpZW50IHRvIGdldCBhbiBhZGRyZXNzIHRvIGNhbGwpIHRoZW4gdGhlIHZhbHVlIE5vRGVwZW5kZW5jaWVzVG9SZWdpc3RlcgogICAvLy8gY2FuIGJlIHVzZWQuCi0gIHZvaWQgbG9va3VwKGNvbnN0IEpJVER5bGliTGlzdCAmSkRzLCBTeW1ib2xOYW1lU2V0IFN5bWJvbHMsCisgIHZvaWQgbG9va3VwKGNvbnN0IEpJVER5bGliU2VhcmNoTGlzdCAmU2VhcmNoT3JkZXIsIFN5bWJvbE5hbWVTZXQgU3ltYm9scywKICAgICAgICAgICAgICAgU3ltYm9sc1Jlc29sdmVkQ2FsbGJhY2sgT25SZXNvbHZlLCBTeW1ib2xzUmVhZHlDYWxsYmFjayBPblJlYWR5LAogICAgICAgICAgICAgICBSZWdpc3RlckRlcGVuZGVuY2llc0Z1bmN0aW9uIFJlZ2lzdGVyRGVwZW5kZW5jaWVzKTsKIApAQCAtNzc3LDIwICs4MDQsMjkgQEAKICAgLy8vIG9yIGFuIGVycm9yIG9jY3Vycy4gSWYgV2FpdFVudGlsUmVhZHkgaXMgZmFsc2UgYW5kIGFuIGVycm9yIG9jY3VycwogICAvLy8gYWZ0ZXIgcmVzb2x1dGlvbiwgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGEgc3VjY2VzcyB2YWx1ZSwgYnV0IHRoZQogICAvLy8gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCB2aWEgcmVwb3J0RXJyb3JzLgotICBFeHBlY3RlZDxTeW1ib2xNYXA+IGxvb2t1cChjb25zdCBKSVREeWxpYkxpc3QgJkpEcywKKyAgRXhwZWN0ZWQ8U3ltYm9sTWFwPiBsb29rdXAoY29uc3QgSklURHlsaWJTZWFyY2hMaXN0ICZTZWFyY2hPcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3ltYm9sTmFtZVNldCAmU3ltYm9scywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJEZXBlbmRlbmNpZXNGdW5jdGlvbiBSZWdpc3RlckRlcGVuZGVuY2llcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJEZXBlbmRlbmNpZXNGdW5jdGlvbiBSZWdpc3RlckRlcGVuZGVuY2llcyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb0RlcGVuZGVuY2llc1RvUmVnaXN0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgV2FpdFVudGlsUmVhZHkgPSB0cnVlKTsKIAotICAvLy8gQ29udmVuaWVuY2UgdmVyc2lvbiBvZiB0aGUgYmxvY2tpbmcgdmVyc2lvbiBvZiBsb29rdXAgYWJvdmUuIFVzZXMgdGhlIG1haW4KLSAgLy8vIEpJVER5bGliJ3Mgc2VhcmNoIG9yZGVyIGFzIHRoZSBsb29rdXAgb3JkZXIsIGFuZCByZWdpc3RlcnMgbm8KLSAgLy8vIGRlcGVuZGVuY2llcy4KLSAgRXhwZWN0ZWQ8U3ltYm9sTWFwPiBsb29rdXAoY29uc3QgU3ltYm9sTmFtZVNldCAmU3ltYm9scykgewotICAgIHJldHVybiBnZXRNYWluSklURHlsaWIoKS53aXRoU2VhcmNoT3JkZXJEbygKLSAgICAgICAgWyZdKGNvbnN0IEpJVER5bGliTGlzdCAmU2VhcmNoT3JkZXIpIHsKLSAgICAgICAgICByZXR1cm4gbG9va3VwKFNlYXJjaE9yZGVyLCBTeW1ib2xzLCBOb0RlcGVuZGVuY2llc1RvUmVnaXN0ZXIsIHRydWUpOwotICAgICAgICB9KTsKLSAgfQorICAvLy8gQ29udmVuaWVuY2UgdmVyc2lvbiBvZiBibG9ja2luZyBsb29rdXAuCisgIC8vLyBTZWFyY2hlcyBlYWNoIG9mIHRoZSBKSVREeWxpYnMgaW4gdGhlIHNlYXJjaCBvcmRlciBpbiB0dXJuIGZvciB0aGUgZ2l2ZW4KKyAgLy8vIHN5bWJvbC4KKyAgRXhwZWN0ZWQ8SklURXZhbHVhdGVkU3ltYm9sPiBsb29rdXAoY29uc3QgSklURHlsaWJTZWFyY2hMaXN0ICZTZWFyY2hPcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sU3RyaW5nUHRyIFN5bWJvbCk7CisKKyAgLy8vIENvbnZlbmllbmNlIHZlcnNpb24gb2YgYmxvY2tpbmcgbG9va3VwLgorICAvLy8gU2VhcmNoZXMgZWFjaCBvZiB0aGUgSklURHlsaWJzIGluIHRoZSBzZWFyY2ggb3JkZXIgaW4gdHVybiBmb3IgdGhlIGdpdmVuCisgIC8vLyBzeW1ib2wuIFRoZSBzZWFyY2ggd2lsbCBub3QgZmluZCBub24tZXhwb3J0ZWQgc3ltYm9scy4KKyAgRXhwZWN0ZWQ8SklURXZhbHVhdGVkU3ltYm9sPiBsb29rdXAoQXJyYXlSZWY8SklURHlsaWIgKj4gU2VhcmNoT3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbFN0cmluZ1B0ciBTeW1ib2wpOworCisgIC8vLyBDb252ZW5pZW5jZSB2ZXJzaW9uIG9mIGJsb2NraW5nIGxvb2t1cC4KKyAgLy8vIFNlYXJjaGVzIGVhY2ggb2YgdGhlIEpJVER5bGlicyBpbiB0aGUgc2VhcmNoIG9yZGVyIGluIHR1cm4gZm9yIHRoZSBnaXZlbgorICAvLy8gc3ltYm9sLiBUaGUgc2VhcmNoIHdpbGwgbm90IGZpbmQgbm9uLWV4cG9ydGVkIHN5bWJvbHMuCisgIEV4cGVjdGVkPEpJVEV2YWx1YXRlZFN5bWJvbD4gbG9va3VwKEFycmF5UmVmPEpJVER5bGliICo+IFNlYXJjaE9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgU3ltYm9sKTsKIAogICAvLy8gTWF0ZXJpYWxpemUgdGhlIGdpdmVuIHVuaXQuCiAgIHZvaWQgZGlzcGF0Y2hNYXRlcmlhbGl6YXRpb24oSklURHlsaWIgJkpELApAQCAtODM2LDcgKzg3Miw3IEBACiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jPgogYXV0byBKSVREeWxpYjo6d2l0aFNlYXJjaE9yZGVyRG8oRnVuYyAmJkYpCi0gICAgLT4gZGVjbHR5cGUoRihzdGQ6OmRlY2x2YWw8Y29uc3QgSklURHlsaWJMaXN0ICY+KCkpKSB7CisgICAgLT4gZGVjbHR5cGUoRihzdGQ6OmRlY2x2YWw8Y29uc3QgSklURHlsaWJTZWFyY2hMaXN0ICY+KCkpKSB7CiAgIHJldHVybiBFUy5ydW5TZXNzaW9uTG9ja2VkKFsmXSgpIHsgcmV0dXJuIEYoU2VhcmNoT3JkZXIpOyB9KTsKIH0KIApAQCAtODczLDE2ICs5MDksNiBAQAogICB9KTsKIH0KIAotLy8vIExvb2sgdXAgdGhlIGdpdmVuIG5hbWVzIGluIHRoZSBnaXZlbiBKSVREeWxpYnMuCi0vLy8gSkRzIHdpbGwgYmUgc2VhcmNoZWQgaW4gb3JkZXIgYW5kIG5vIEpJVER5bGliIHBvaW50ZXIgbWF5IGJlIG51bGwuCi0vLy8gQWxsIHN5bWJvbHMgbXVzdCBiZSBmb3VuZCB3aXRoaW4gdGhlIGdpdmVuIEpJVER5bGlicyBvciBhbiBlcnJvcgotLy8vIHdpbGwgYmUgcmV0dXJuZWQuCi1FeHBlY3RlZDxTeW1ib2xNYXA+IGxvb2t1cChjb25zdCBKSVREeWxpYkxpc3QgJkpEcywgU3ltYm9sTmFtZVNldCBOYW1lcyk7Ci0KLS8vLyBMb29rIHVwIGEgc3ltYm9sIGJ5IHNlYXJjaGluZyBhIGxpc3Qgb2YgSklURHlsaWJzLgotRXhwZWN0ZWQ8SklURXZhbHVhdGVkU3ltYm9sPiBsb29rdXAoY29uc3QgSklURHlsaWJMaXN0ICZKRHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xTdHJpbmdQdHIgTmFtZSk7Ci0KIC8vLyBNYW5nbGVzIHN5bWJvbCBuYW1lcyB0aGVuIHVuaXF1ZXMgdGhlbSBpbiB0aGUgY29udGV4dCBvZiBhbgogLy8vIEV4ZWN1dGlvblNlc3Npb24uCiBjbGFzcyBNYW5nbGVBbmRJbnRlcm5lciB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvRXhlY3V0aW9uVXRpbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9FeGVjdXRpb25VdGlscy5oCmluZGV4IDUyMjUwNjYuLjQwZGQ0MTUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9FeGVjdXRpb25VdGlscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9FeGVjdXRpb25VdGlscy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEV4ZWN1dGlvblV0aWxzLmggLSBVdGlsaXRpZXMgZm9yIGV4ZWN1dGluZyBjb2RlIGluIE9yYyAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC05NCwxMSArOTMsMTEgQEAKIC8vLyBDb252ZW5pZW5jZSBjbGFzcyBmb3IgcmVjb3JkaW5nIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgbmFtZXMgZm9yCiAvLy8gICAgICAgIGxhdGVyIGV4ZWN1dGlvbi4KIHRlbXBsYXRlIDx0eXBlbmFtZSBKSVRMYXllclQ+Ci1jbGFzcyBDdG9yRHRvclJ1bm5lciB7CitjbGFzcyBMZWdhY3lDdG9yRHRvclJ1bm5lciB7CiBwdWJsaWM6CiAgIC8vLyBDb25zdHJ1Y3QgYSBDdG9yRHRvclJ1bm5lciBmb3IgdGhlIGdpdmVuIHJhbmdlIHVzaW5nIHRoZSBnaXZlbgogICAvLy8gICAgICAgIG5hbWUgbWFuZ2xpbmcgZnVuY3Rpb24uCi0gIEN0b3JEdG9yUnVubmVyKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBDdG9yRHRvck5hbWVzLCBWTW9kdWxlS2V5IEspCisgIExlZ2FjeUN0b3JEdG9yUnVubmVyKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBDdG9yRHRvck5hbWVzLCBWTW9kdWxlS2V5IEspCiAgICAgICA6IEN0b3JEdG9yTmFtZXMoc3RkOjptb3ZlKEN0b3JEdG9yTmFtZXMpKSwgSyhLKSB7fQogCiAgIC8vLyBSdW4gdGhlIHJlY29yZGVkIGNvbnN0cnVjdG9ycy9kZXN0cnVjdG9ycyB0aHJvdWdoIHRoZSBnaXZlbiBKSVQKQEAgLTEyOSw5ICsxMjgsOSBAQAogICBvcmM6OlZNb2R1bGVLZXkgSzsKIH07CiAKLWNsYXNzIEN0b3JEdG9yUnVubmVyMiB7CitjbGFzcyBDdG9yRHRvclJ1bm5lciB7CiBwdWJsaWM6Ci0gIEN0b3JEdG9yUnVubmVyMihKSVREeWxpYiAmSkQpIDogSkQoSkQpIHt9CisgIEN0b3JEdG9yUnVubmVyKEpJVER5bGliICZKRCkgOiBKRChKRCkge30KICAgdm9pZCBhZGQoaXRlcmF0b3JfcmFuZ2U8Q3RvckR0b3JJdGVyYXRvcj4gQ3RvckR0b3JzKTsKICAgRXJyb3IgcnVuKCk7CiAKQEAgLTE3NywxMSArMTc2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqRFNPSGFuZGxlKTsKIH07CiAKLWNsYXNzIExvY2FsQ1hYUnVudGltZU92ZXJyaWRlcyA6IHB1YmxpYyBMb2NhbENYWFJ1bnRpbWVPdmVycmlkZXNCYXNlIHsKK2NsYXNzIExlZ2FjeUxvY2FsQ1hYUnVudGltZU92ZXJyaWRlcyA6IHB1YmxpYyBMb2NhbENYWFJ1bnRpbWVPdmVycmlkZXNCYXNlIHsKIHB1YmxpYzoKICAgLy8vIENyZWF0ZSBhIHJ1bnRpbWUtb3ZlcnJpZGVzIGNsYXNzLgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFuZ2xlRnRvclQ+Ci0gIExvY2FsQ1hYUnVudGltZU92ZXJyaWRlcyhjb25zdCBNYW5nbGVGdG9yVCAmTWFuZ2xlKSB7CisgIExlZ2FjeUxvY2FsQ1hYUnVudGltZU92ZXJyaWRlcyhjb25zdCBNYW5nbGVGdG9yVCAmTWFuZ2xlKSB7CiAgICAgYWRkT3ZlcnJpZGUoTWFuZ2xlKCJfX2Rzb19oYW5kbGUiKSwgdG9UYXJnZXRBZGRyZXNzKCZEU09IYW5kbGVPdmVycmlkZSkpOwogICAgIGFkZE92ZXJyaWRlKE1hbmdsZSgiX19jeGFfYXRleGl0IiksIHRvVGFyZ2V0QWRkcmVzcygmQ1hBQXRFeGl0T3ZlcnJpZGUpKTsKICAgfQpAQCAtMjAyLDcgKzIwMSw3IEBACiAgIFN0cmluZ01hcDxKSVRUYXJnZXRBZGRyZXNzPiBDWFhSdW50aW1lT3ZlcnJpZGVzOwogfTsKIAotY2xhc3MgTG9jYWxDWFhSdW50aW1lT3ZlcnJpZGVzMiA6IHB1YmxpYyBMb2NhbENYWFJ1bnRpbWVPdmVycmlkZXNCYXNlIHsKK2NsYXNzIExvY2FsQ1hYUnVudGltZU92ZXJyaWRlcyA6IHB1YmxpYyBMb2NhbENYWFJ1bnRpbWVPdmVycmlkZXNCYXNlIHsKIHB1YmxpYzoKICAgRXJyb3IgZW5hYmxlKEpJVER5bGliICZKRCwgTWFuZ2xlQW5kSW50ZXJuZXIgJk1hbmdsZXIpOwogfTsKQEAgLTIxMiwzMiArMjExLDMwIEBACiAvLy8gSWYgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBpcyBhdHRhY2hlZCB0byBhIEpJVER5bGliIGFzIGEgZmFsbGJhY2sKIC8vLyBkZWZpbml0aW9uIGdlbmVyYXRvciwgdGhlbiBhbnkgc3ltYm9sIGZvdW5kIGluIHRoZSBnaXZlbiBEeW5hbWljTGlicmFyeSB0aGF0CiAvLy8gcGFzc2VzIHRoZSAnQWxsb3cnIHByZWRpY2F0ZSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBKSVREeWxpYi4KLWNsYXNzIER5bmFtaWNMaWJyYXJ5RmFsbGJhY2tHZW5lcmF0b3IgeworY2xhc3MgRHluYW1pY0xpYnJhcnlTZWFyY2hHZW5lcmF0b3IgewogcHVibGljOgogICB1c2luZyBTeW1ib2xQcmVkaWNhdGUgPSBzdGQ6OmZ1bmN0aW9uPGJvb2woU3ltYm9sU3RyaW5nUHRyKT47CiAKLSAgc3RhdGljIGJvb2wgQWxsb3dBbGwoU3ltYm9sU3RyaW5nUHRyIE5hbWUpIHsgcmV0dXJuIHRydWU7IH0KLQotICAvLy8gQ3JlYXRlIGEgRHluYW1pY0xpYnJhcnlGYWxsYmFja0dlbmVyYXRvciB0aGF0IHNlYXJjaGVzIGZvciBzeW1ib2xzIGluIHRoZQorICAvLy8gQ3JlYXRlIGEgRHluYW1pY0xpYnJhcnlTZWFyY2hHZW5lcmF0b3IgdGhhdCBzZWFyY2hlcyBmb3Igc3ltYm9scyBpbiB0aGUKICAgLy8vIGdpdmVuIHN5czo6RHluYW1pY0xpYnJhcnkuCi0gIC8vLyBPbmx5IHN5bWJvbHMgdGhhdCBtYXRjaCB0aGUgJ0FsbG93JyBwcmVkaWNhdGUgd2lsbCBiZSBzZWFyY2hlZCBmb3IuCi0gIER5bmFtaWNMaWJyYXJ5RmFsbGJhY2tHZW5lcmF0b3Ioc3lzOjpEeW5hbWljTGlicmFyeSBEeWxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEYXRhTGF5b3V0ICZETCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xQcmVkaWNhdGUgQWxsb3cgPSBBbGxvd0FsbCk7CisgIC8vLyBJZiB0aGUgQWxsb3cgcHJlZGljYXRlIGlzIGdpdmVuIHRoZW4gb25seSBzeW1ib2xzIG1hdGNoaW5nIHRoZSBwcmVkaWNhdGUKKyAgLy8vIHdpbGwgYmUgc2VhcmNoZWQgZm9yIGluIHRoZSBEeW5hbWljTGlicmFyeS4gSWYgdGhlIHByZWRpY2F0ZSBpcyBub3QgZ2l2ZW4KKyAgLy8vIHRoZW4gYWxsIHN5bWJvbHMgd2lsbCBiZSBzZWFyY2hlZCBmb3IuCisgIER5bmFtaWNMaWJyYXJ5U2VhcmNoR2VuZXJhdG9yKHN5czo6RHluYW1pY0xpYnJhcnkgRHlsaWIsIGNvbnN0IERhdGFMYXlvdXQgJkRMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xQcmVkaWNhdGUgQWxsb3cgPSBTeW1ib2xQcmVkaWNhdGUoKSk7CiAKICAgLy8vIFBlcm1hbmVudGx5IGxvYWRzIHRoZSBsaWJyYXJ5IGF0IHRoZSBnaXZlbiBwYXRoIGFuZCwgb24gc3VjY2VzcywgcmV0dXJucwotICAvLy8gYSBEeW5hbWljTGlicmFyeUZhbGxiYWNrR2VuZXJhdG9yIHRoYXQgd2lsbCBzZWFyY2ggaXQgZm9yIHN5bWJvbAotICAvLy8gZGVmaW5pdGlvbnMgbWF0Y2hpbmcgdGhlIEFsbG93IHByZWRpY2F0ZS4KLSAgLy8vIE9uIGZhaWx1cmUgcmV0dXJucyB0aGUgcmVhc29uIHRoZSBsaWJyYXJ5IGZhaWxlZCB0byBsb2FkLgotICBzdGF0aWMgRXhwZWN0ZWQ8RHluYW1pY0xpYnJhcnlGYWxsYmFja0dlbmVyYXRvcj4KKyAgLy8vIGEgRHluYW1pY0xpYnJhcnlTZWFyY2hHZW5lcmF0b3IgdGhhdCB3aWxsIHNlYXJjaCBpdCBmb3Igc3ltYm9sIGRlZmluaXRpb25zCisgIC8vLyBpbiB0aGUgbGlicmFyeS4gT24gZmFpbHVyZSByZXR1cm5zIHRoZSByZWFzb24gdGhlIGxpYnJhcnkgZmFpbGVkIHRvIGxvYWQuCisgIHN0YXRpYyBFeHBlY3RlZDxEeW5hbWljTGlicmFyeVNlYXJjaEdlbmVyYXRvcj4KICAgTG9hZChjb25zdCBjaGFyICpGaWxlTmFtZSwgY29uc3QgRGF0YUxheW91dCAmREwsCi0gICAgICAgU3ltYm9sUHJlZGljYXRlIEFsbG93ID0gQWxsb3dBbGwpOworICAgICAgIFN5bWJvbFByZWRpY2F0ZSBBbGxvdyA9IFN5bWJvbFByZWRpY2F0ZSgpKTsKIAotICAvLy8gQ3JlYXRlcyBhIER5bmFtaWNMaWJyYXJ5RmFsbGJhY2tHZW5lcmF0b3IgdGhhdCBzZWFyY2hlcyBmb3Igc3ltYm9scyBpbgorICAvLy8gQ3JlYXRlcyBhIER5bmFtaWNMaWJyYXJ5U2VhcmNoR2VuZXJhdG9yIHRoYXQgc2VhcmNoZXMgZm9yIHN5bWJvbHMgaW4KICAgLy8vIHRoZSBjdXJyZW50IHByb2Nlc3MuCi0gIHN0YXRpYyBFeHBlY3RlZDxEeW5hbWljTGlicmFyeUZhbGxiYWNrR2VuZXJhdG9yPgotICBDcmVhdGVGb3JDdXJyZW50UHJvY2Vzcyhjb25zdCBEYXRhTGF5b3V0ICZETCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sUHJlZGljYXRlIEFsbG93ID0gQWxsb3dBbGwpIHsKKyAgc3RhdGljIEV4cGVjdGVkPER5bmFtaWNMaWJyYXJ5U2VhcmNoR2VuZXJhdG9yPgorICBHZXRGb3JDdXJyZW50UHJvY2Vzcyhjb25zdCBEYXRhTGF5b3V0ICZETCwKKyAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sUHJlZGljYXRlIEFsbG93ID0gU3ltYm9sUHJlZGljYXRlKCkpIHsKICAgICByZXR1cm4gTG9hZChudWxscHRyLCBETCwgc3RkOjptb3ZlKEFsbG93KSk7CiAgIH0KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0dsb2JhbE1hcHBpbmdMYXllci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0dsb2JhbE1hcHBpbmdMYXllci5oCmluZGV4IGE4YTg4ZDcuLmE0ZTQzZDQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9HbG9iYWxNYXBwaW5nTGF5ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvR2xvYmFsTWFwcGluZ0xheWVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gR2xvYmFsTWFwcGluZ0xheWVyLmggLSBSdW4gYWxsIElSIHRocm91Z2ggYSBmdW5jdG9yIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9JUkNvbXBpbGVMYXllci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0lSQ29tcGlsZUxheWVyLmgKaW5kZXggY2I4ZGYyNi4uZWNmZjA5YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0lSQ29tcGlsZUxheWVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0lSQ29tcGlsZUxheWVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSVJDb21waWxlTGF5ZXIuaCAtLSBFYWdlcmx5IGNvbXBpbGUgSVIgZm9yIEpJVCAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI4LDcgKzI3LDcgQEAKIAogbmFtZXNwYWNlIG9yYyB7CiAKLWNsYXNzIElSQ29tcGlsZUxheWVyMiA6IHB1YmxpYyBJUkxheWVyIHsKK2NsYXNzIElSQ29tcGlsZUxheWVyIDogcHVibGljIElSTGF5ZXIgewogcHVibGljOgogICB1c2luZyBDb21waWxlRnVuY3Rpb24gPQogICAgICAgc3RkOjpmdW5jdGlvbjxFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QnVmZmVyPj4oTW9kdWxlICYpPjsKQEAgLTM2LDEzICszNSwxMiBAQAogICB1c2luZyBOb3RpZnlDb21waWxlZEZ1bmN0aW9uID0KICAgICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChWTW9kdWxlS2V5IEssIFRocmVhZFNhZmVNb2R1bGUgVFNNKT47CiAKLSAgSVJDb21waWxlTGF5ZXIyKEV4ZWN1dGlvblNlc3Npb24gJkVTLCBPYmplY3RMYXllciAmQmFzZUxheWVyLAotICAgICAgICAgICAgICAgICAgQ29tcGlsZUZ1bmN0aW9uIENvbXBpbGUpOworICBJUkNvbXBpbGVMYXllcihFeGVjdXRpb25TZXNzaW9uICZFUywgT2JqZWN0TGF5ZXIgJkJhc2VMYXllciwKKyAgICAgICAgICAgICAgICAgQ29tcGlsZUZ1bmN0aW9uIENvbXBpbGUpOwogCiAgIHZvaWQgc2V0Tm90aWZ5Q29tcGlsZWQoTm90aWZ5Q29tcGlsZWRGdW5jdGlvbiBOb3RpZnlDb21waWxlZCk7CiAKLSAgdm9pZCBlbWl0KE1hdGVyaWFsaXphdGlvblJlc3BvbnNpYmlsaXR5IFIsIFZNb2R1bGVLZXkgSywKLSAgICAgICAgICAgIFRocmVhZFNhZmVNb2R1bGUgVFNNKSBvdmVycmlkZTsKKyAgdm9pZCBlbWl0KE1hdGVyaWFsaXphdGlvblJlc3BvbnNpYmlsaXR5IFIsIFRocmVhZFNhZmVNb2R1bGUgVFNNKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgbXV0YWJsZSBzdGQ6Om11dGV4IElSTGF5ZXJNdXRleDsKQEAgLTU3LDE1ICs1NSwxNSBAQAogLy8vIG9iamVjdCBmaWxlIGFuZCBhZGRzIHRoaXMgbW9kdWxlIGZpbGUgdG8gdGhlIGxheWVyIGJlbG93LCB3aGljaCBtdXN0CiAvLy8gaW1wbGVtZW50IHRoZSBvYmplY3QgbGF5ZXIgY29uY2VwdC4KIHRlbXBsYXRlIDx0eXBlbmFtZSBCYXNlTGF5ZXJULCB0eXBlbmFtZSBDb21waWxlRnRvcj4KLWNsYXNzIElSQ29tcGlsZUxheWVyIHsKK2NsYXNzIExlZ2FjeUlSQ29tcGlsZUxheWVyIHsKIHB1YmxpYzoKICAgLy8vIENhbGxiYWNrIHR5cGUgZm9yIG5vdGlmaWNhdGlvbnMgd2hlbiBtb2R1bGVzIGFyZSBjb21waWxlZC4KICAgdXNpbmcgTm90aWZ5Q29tcGlsZWRDYWxsYmFjayA9CiAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoVk1vZHVsZUtleSBLLCBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlPik+OwogCi0gIC8vLyBDb25zdHJ1Y3QgYW4gSVJDb21waWxlTGF5ZXIgd2l0aCB0aGUgZ2l2ZW4gQmFzZUxheWVyLCB3aGljaCBtdXN0CisgIC8vLyBDb25zdHJ1Y3QgYW4gTGVnYWN5SVJDb21waWxlTGF5ZXIgd2l0aCB0aGUgZ2l2ZW4gQmFzZUxheWVyLCB3aGljaCBtdXN0CiAgIC8vLyAgICAgICAgaW1wbGVtZW50IHRoZSBPYmplY3RMYXllciBjb25jZXB0LgotICBJUkNvbXBpbGVMYXllcigKKyAgTGVnYWN5SVJDb21waWxlTGF5ZXIoCiAgICAgICBCYXNlTGF5ZXJUICZCYXNlTGF5ZXIsIENvbXBpbGVGdG9yIENvbXBpbGUsCiAgICAgICBOb3RpZnlDb21waWxlZENhbGxiYWNrIE5vdGlmeUNvbXBpbGVkID0gTm90aWZ5Q29tcGlsZWRDYWxsYmFjaygpKQogICAgICAgOiBCYXNlTGF5ZXIoQmFzZUxheWVyKSwgQ29tcGlsZShzdGQ6Om1vdmUoQ29tcGlsZSkpLApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0lSVHJhbnNmb3JtTGF5ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9JUlRyYW5zZm9ybUxheWVyLmgKaW5kZXggZDVmOTFjZS4uODg5MGE1NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0lSVHJhbnNmb3JtTGF5ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvSVJUcmFuc2Zvcm1MYXllci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIElSVHJhbnNmb3JtTGF5ZXIuaCAtIFJ1biBhbGwgSVIgdGhyb3VnaCBhIGZ1bmN0b3IgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yMywyMCArMjIsMTkgQEAKIGNsYXNzIE1vZHVsZTsKIG5hbWVzcGFjZSBvcmMgewogCi1jbGFzcyBJUlRyYW5zZm9ybUxheWVyMiA6IHB1YmxpYyBJUkxheWVyIHsKK2NsYXNzIElSVHJhbnNmb3JtTGF5ZXIgOiBwdWJsaWMgSVJMYXllciB7CiBwdWJsaWM6CiAgIHVzaW5nIFRyYW5zZm9ybUZ1bmN0aW9uID0gc3RkOjpmdW5jdGlvbjxFeHBlY3RlZDxUaHJlYWRTYWZlTW9kdWxlPigKICAgICAgIFRocmVhZFNhZmVNb2R1bGUsIGNvbnN0IE1hdGVyaWFsaXphdGlvblJlc3BvbnNpYmlsaXR5ICZSKT47CiAKLSAgSVJUcmFuc2Zvcm1MYXllcjIoRXhlY3V0aW9uU2Vzc2lvbiAmRVMsIElSTGF5ZXIgJkJhc2VMYXllciwKLSAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtRnVuY3Rpb24gVHJhbnNmb3JtID0gaWRlbnRpdHlUcmFuc2Zvcm0pOworICBJUlRyYW5zZm9ybUxheWVyKEV4ZWN1dGlvblNlc3Npb24gJkVTLCBJUkxheWVyICZCYXNlTGF5ZXIsCisgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtRnVuY3Rpb24gVHJhbnNmb3JtID0gaWRlbnRpdHlUcmFuc2Zvcm0pOwogCiAgIHZvaWQgc2V0VHJhbnNmb3JtKFRyYW5zZm9ybUZ1bmN0aW9uIFRyYW5zZm9ybSkgewogICAgIHRoaXMtPlRyYW5zZm9ybSA9IHN0ZDo6bW92ZShUcmFuc2Zvcm0pOwogICB9CiAKLSAgdm9pZCBlbWl0KE1hdGVyaWFsaXphdGlvblJlc3BvbnNpYmlsaXR5IFIsIFZNb2R1bGVLZXkgSywKLSAgICAgICAgICAgIFRocmVhZFNhZmVNb2R1bGUgVFNNKSBvdmVycmlkZTsKKyAgdm9pZCBlbWl0KE1hdGVyaWFsaXphdGlvblJlc3BvbnNpYmlsaXR5IFIsIFRocmVhZFNhZmVNb2R1bGUgVFNNKSBvdmVycmlkZTsKIAogICBzdGF0aWMgVGhyZWFkU2FmZU1vZHVsZQogICBpZGVudGl0eVRyYW5zZm9ybShUaHJlYWRTYWZlTW9kdWxlIFRTTSwKQEAgLTU0LDExICs1MiwxMSBAQAogLy8vICAgVGhpcyBsYXllciBhcHBsaWVzIGEgdXNlciBzdXBwbGllZCB0cmFuc2Zvcm0gdG8gZWFjaCBtb2R1bGUgdGhhdCBpcyBhZGRlZCwKIC8vLyB0aGVuIGFkZHMgdGhlIHRyYW5zZm9ybWVkIG1vZHVsZSB0byB0aGUgbGF5ZXIgYmVsb3cuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmFzZUxheWVyVCwgdHlwZW5hbWUgVHJhbnNmb3JtRnRvcj4KLWNsYXNzIElSVHJhbnNmb3JtTGF5ZXIgeworY2xhc3MgTGVnYWN5SVJUcmFuc2Zvcm1MYXllciB7CiBwdWJsaWM6CiAKLSAgLy8vIENvbnN0cnVjdCBhbiBJUlRyYW5zZm9ybUxheWVyIHdpdGggdGhlIGdpdmVuIEJhc2VMYXllcgotICBJUlRyYW5zZm9ybUxheWVyKEJhc2VMYXllclQgJkJhc2VMYXllciwKKyAgLy8vIENvbnN0cnVjdCBhbiBMZWdhY3lJUlRyYW5zZm9ybUxheWVyIHdpdGggdGhlIGdpdmVuIEJhc2VMYXllcgorICBMZWdhY3lJUlRyYW5zZm9ybUxheWVyKEJhc2VMYXllclQgJkJhc2VMYXllciwKICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1GdG9yIFRyYW5zZm9ybSA9IFRyYW5zZm9ybUZ0b3IoKSkKICAgICA6IEJhc2VMYXllcihCYXNlTGF5ZXIpLCBUcmFuc2Zvcm0oc3RkOjptb3ZlKFRyYW5zZm9ybSkpIHt9CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9JbmRpcmVjdGlvblV0aWxzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvSW5kaXJlY3Rpb25VdGlscy5oCmluZGV4IGMyNTI3ODAuLjJlYTlhYzEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9JbmRpcmVjdGlvblV0aWxzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0luZGlyZWN0aW9uVXRpbHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJbmRpcmVjdGlvblV0aWxzLmggLSBVdGlsaXRpZXMgZm9yIGFkZGluZyBpbmRpcmVjdGlvbnMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0pJVFRhcmdldE1hY2hpbmVCdWlsZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvSklUVGFyZ2V0TWFjaGluZUJ1aWxkZXIuaAppbmRleCBlYjliNmJmLi5iY2JkNzJlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvSklUVGFyZ2V0TWFjaGluZUJ1aWxkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvSklUVGFyZ2V0TWFjaGluZUJ1aWxkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBKSVRUYXJnZXRNYWNoaW5lQnVpbGRlci5oIC0gQnVpbGQgVGFyZ2V0TWFjaGluZXMgZm9yIEpJVCAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0xMSklULmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvTExKSVQuaAppbmRleCA0MDBkNGNiLi5iMGVmMjBkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvTExKSVQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvTExKSVQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tLS0gTExKSVQuaCAtLSBBbiBPUkMtYmFzZWQgSklUIGZvciBjb21waWxpbmcgTExWTSBJUiAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciAzQmRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00OSw2ICs0OCwxMSBAQAogICAvLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgSklURHlsaWIgcmVwcmVzZW50aW5nIHRoZSBKSVQnZCBtYWluIHByb2dyYW0uCiAgIEpJVER5bGliICZnZXRNYWluSklURHlsaWIoKSB7IHJldHVybiBNYWluOyB9CiAKKyAgLy8vIENyZWF0ZSBhIG5ldyBKSVREeWxpYiB3aXRoIHRoZSBnaXZlbiBuYW1lIGFuZCByZXR1cm4gYSByZWZlcmVuY2UgdG8gaXQuCisgIEpJVER5bGliICZjcmVhdGVKSVREeWxpYihzdGQ6OnN0cmluZyBOYW1lKSB7CisgICAgcmV0dXJuIEVTLT5jcmVhdGVKSVREeWxpYihzdGQ6Om1vdmUoTmFtZSkpOworICB9CisKICAgLy8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgZGVmaW5pbmcgYW4gYWJzb2x1dGUgc3ltYm9sLgogICBFcnJvciBkZWZpbmVBYnNvbHV0ZShTdHJpbmdSZWYgTmFtZSwgSklURXZhbHVhdGVkU3ltYm9sIEFkZHJlc3MpOwogCkBAIC05OSw3ICsxMDMsNyBAQAogICBFcnJvciBydW5EZXN0cnVjdG9ycygpIHsgcmV0dXJuIER0b3JSdW5uZXIucnVuKCk7IH0KIAogICAvLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgT2JqTGlua2luZ0xheWVyCi0gIFJURHlsZE9iamVjdExpbmtpbmdMYXllcjIgJmdldE9iakxpbmtpbmdMYXllcigpIHsgcmV0dXJuIE9iakxpbmtpbmdMYXllcjsgfQorICBSVER5bGRPYmplY3RMaW5raW5nTGF5ZXIgJmdldE9iakxpbmtpbmdMYXllcigpIHsgcmV0dXJuIE9iakxpbmtpbmdMYXllcjsgfQogCiBwcm90ZWN0ZWQ6CiAKQEAgLTExMSw4ICsxMTUsNiBAQAogICBMTEpJVChzdGQ6OnVuaXF1ZV9wdHI8RXhlY3V0aW9uU2Vzc2lvbj4gRVMsIEpJVFRhcmdldE1hY2hpbmVCdWlsZGVyIEpUTUIsCiAgICAgICAgIERhdGFMYXlvdXQgREwsIHVuc2lnbmVkIE51bUNvbXBpbGVUaHJlYWRzKTsKIAotICBzdGQ6OnVuaXF1ZV9wdHI8UnVudGltZUR5bGQ6Ok1lbW9yeU1hbmFnZXI+IGdldE1lbW9yeU1hbmFnZXIoVk1vZHVsZUtleSBLKTsKLQogICBzdGQ6OnN0cmluZyBtYW5nbGUoU3RyaW5nUmVmIFVubWFuZ2xlZE5hbWUpOwogCiAgIEVycm9yIGFwcGx5RGF0YUxheW91dChNb2R1bGUgJk0pOwpAQCAtMTI1LDEwICsxMjcsMTAgQEAKICAgRGF0YUxheW91dCBETDsKICAgc3RkOjp1bmlxdWVfcHRyPFRocmVhZFBvb2w+IENvbXBpbGVUaHJlYWRzOwogCi0gIFJURHlsZE9iamVjdExpbmtpbmdMYXllcjIgT2JqTGlua2luZ0xheWVyOwotICBJUkNvbXBpbGVMYXllcjIgQ29tcGlsZUxheWVyOworICBSVER5bGRPYmplY3RMaW5raW5nTGF5ZXIgT2JqTGlua2luZ0xheWVyOworICBJUkNvbXBpbGVMYXllciBDb21waWxlTGF5ZXI7CiAKLSAgQ3RvckR0b3JSdW5uZXIyIEN0b3JSdW5uZXIsIER0b3JSdW5uZXI7CisgIEN0b3JEdG9yUnVubmVyIEN0b3JSdW5uZXIsIER0b3JSdW5uZXI7CiB9OwogCiAvLy8gQW4gZXh0ZW5kZWQgdmVyc2lvbiBvZiBMTEpJVCB0aGF0IHN1cHBvcnRzIGxhenkgZnVuY3Rpb24tYXQtYS10aW1lCkBAIC0xNDEsMTcgKzE0MywxNyBAQAogICAvLy8gTExMYXp5SklUIHdpdGggdGhlIGdpdmVuIG51bWJlciBvZiBjb21waWxlIHRocmVhZHMuCiAgIHN0YXRpYyBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8TExMYXp5SklUPj4KICAgQ3JlYXRlKEpJVFRhcmdldE1hY2hpbmVCdWlsZGVyIEpUTUIsIERhdGFMYXlvdXQgREwsCi0gICAgICAgICB1bnNpZ25lZCBOdW1Db21waWxlVGhyZWFkcyA9IDApOworICAgICAgICAgSklUVGFyZ2V0QWRkcmVzcyBFcnJvckFkZHIsIHVuc2lnbmVkIE51bUNvbXBpbGVUaHJlYWRzID0gMCk7CiAKICAgLy8vIFNldCBhbiBJUiB0cmFuc2Zvcm0gKGUuZy4gcGFzcyBtYW5hZ2VyIHBpcGVsaW5lKSB0byBydW4gb24gZWFjaCBmdW5jdGlvbgogICAvLy8gd2hlbiBpdCBpcyBjb21waWxlZC4KLSAgdm9pZCBzZXRMYXp5Q29tcGlsZVRyYW5zZm9ybShJUlRyYW5zZm9ybUxheWVyMjo6VHJhbnNmb3JtRnVuY3Rpb24gVHJhbnNmb3JtKSB7CisgIHZvaWQgc2V0TGF6eUNvbXBpbGVUcmFuc2Zvcm0oSVJUcmFuc2Zvcm1MYXllcjo6VHJhbnNmb3JtRnVuY3Rpb24gVHJhbnNmb3JtKSB7CiAgICAgVHJhbnNmb3JtTGF5ZXIuc2V0VHJhbnNmb3JtKHN0ZDo6bW92ZShUcmFuc2Zvcm0pKTsKICAgfQogCiAgIC8vLyBTZXRzIHRoZSBwYXJ0aXRpb24gZnVuY3Rpb24uCiAgIHZvaWQKLSAgc2V0UGFydGl0aW9uRnVuY3Rpb24oQ29tcGlsZU9uRGVtYW5kTGF5ZXIyOjpQYXJ0aXRpb25GdW5jdGlvbiBQYXJ0aXRpb24pIHsKKyAgc2V0UGFydGl0aW9uRnVuY3Rpb24oQ29tcGlsZU9uRGVtYW5kTGF5ZXI6OlBhcnRpdGlvbkZ1bmN0aW9uIFBhcnRpdGlvbikgewogICAgIENPRExheWVyLnNldFBhcnRpdGlvbkZ1bmN0aW9uKHN0ZDo6bW92ZShQYXJ0aXRpb24pKTsKICAgfQogCkBAIC0xODAsOCArMTgyLDggQEAKICAgc3RkOjp1bmlxdWVfcHRyPExhenlDYWxsVGhyb3VnaE1hbmFnZXI+IExDVE1ncjsKICAgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8SW5kaXJlY3RTdHVic01hbmFnZXI+KCk+IElTTUJ1aWxkZXI7CiAKLSAgSVJUcmFuc2Zvcm1MYXllcjIgVHJhbnNmb3JtTGF5ZXI7Ci0gIENvbXBpbGVPbkRlbWFuZExheWVyMiBDT0RMYXllcjsKKyAgSVJUcmFuc2Zvcm1MYXllciBUcmFuc2Zvcm1MYXllcjsKKyAgQ29tcGlsZU9uRGVtYW5kTGF5ZXIgQ09ETGF5ZXI7CiB9OwogCiB9IC8vIEVuZCBuYW1lc3BhY2Ugb3JjCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvTGFtYmRhUmVzb2x2ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9MYW1iZGFSZXNvbHZlci5oCmluZGV4IDdiNmYzZDIuLjkyZWZkZWQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9MYW1iZGFSZXNvbHZlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9MYW1iZGFSZXNvbHZlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExhbWJkYVJlc29sdmVyTU0gLSBSZWRpcmVjdCBzeW1ib2wgbG9va3VwIHZpYSBhIGZ1bmN0b3IgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvTGF5ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9MYXllci5oCmluZGV4IDNiZDIzYWUuLjhmOWJkNzAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9MYXllci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9MYXllci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tLS0tLS0tLS0tLS0tIExheWVyLmggLS0gTGF5ZXIgaW50ZXJmYWNlcyAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTQ5LDE3ICs0OCwxMSBAQAogCiAgIC8vLyBBZGRzIGEgTWF0ZXJpYWxpemF0aW9uVW5pdCByZXByZXNlbnRpbmcgdGhlIGdpdmVuIElSIHRvIHRoZSBnaXZlbgogICAvLy8gSklURHlsaWIuCi0gIHZpcnR1YWwgRXJyb3IgYWRkKEpJVER5bGliICZKRCwgVk1vZHVsZUtleSBLLCBUaHJlYWRTYWZlTW9kdWxlIFRTTSk7Ci0KLSAgLy8vIEFkZHMgYSBNYXRlcmlhbGl6YXRpb25Vbml0IHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gSVIgdG8gdGhlIG1haW4KLSAgLy8vIEpJVER5bGliLgotICBFcnJvciBhZGQoVk1vZHVsZUtleSBLLCBUaHJlYWRTYWZlTW9kdWxlIFRTTSkgewotICAgIHJldHVybiBhZGQoRVMuZ2V0TWFpbkpJVER5bGliKCksIEssIHN0ZDo6bW92ZShUU00pKTsKLSAgfQorICB2aXJ0dWFsIEVycm9yIGFkZChKSVREeWxpYiAmSkQsIFRocmVhZFNhZmVNb2R1bGUgVFNNLAorICAgICAgICAgICAgICAgICAgICBWTW9kdWxlS2V5IEsgPSBWTW9kdWxlS2V5KCkpOwogCiAgIC8vLyBFbWl0IHNob3VsZCBtYXRlcmlhbGl6ZSB0aGUgZ2l2ZW4gSVIuCi0gIHZpcnR1YWwgdm9pZCBlbWl0KE1hdGVyaWFsaXphdGlvblJlc3BvbnNpYmlsaXR5IFIsIFZNb2R1bGVLZXkgSywKLSAgICAgICAgICAgICAgICAgICAgVGhyZWFkU2FmZU1vZHVsZSBUU00pID0gMDsKKyAgdmlydHVhbCB2b2lkIGVtaXQoTWF0ZXJpYWxpemF0aW9uUmVzcG9uc2liaWxpdHkgUiwgVGhyZWFkU2FmZU1vZHVsZSBUU00pID0gMDsKIAogcHJpdmF0ZToKICAgYm9vbCBDbG9uZVRvTmV3Q29udGV4dE9uRW1pdCA9IGZhbHNlOwpAQCAtNzYsMTQgKzY5LDE2IEBACiAKICAgLy8vIENyZWF0ZSBhbiBJUk1hdGVyaWFsaXphdGlvbkxheWVyLiBTY2FucyB0aGUgbW9kdWxlIHRvIGJ1aWxkIHRoZQogICAvLy8gU3ltYm9sRmxhZ3MgYW5kIFN5bWJvbFRvRGVmaW5pdGlvbiBtYXBzLgotICBJUk1hdGVyaWFsaXphdGlvblVuaXQoRXhlY3V0aW9uU2Vzc2lvbiAmRVMsIFRocmVhZFNhZmVNb2R1bGUgVFNNKTsKKyAgSVJNYXRlcmlhbGl6YXRpb25Vbml0KEV4ZWN1dGlvblNlc3Npb24gJkVTLCBUaHJlYWRTYWZlTW9kdWxlIFRTTSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFZNb2R1bGVLZXkgSyk7CiAKICAgLy8vIENyZWF0ZSBhbiBJUk1hdGVyaWFsaXphdGlvbkxheWVyIGZyb20gYSBtb2R1bGUsIGFuZCBwcmUtZXhpc3RpbmcKICAgLy8vIFN5bWJvbEZsYWdzIGFuZCBTeW1ib2xUb0RlZmluaXRpb24gbWFwcy4gVGhlIG1hcHMgbXVzdCBwcm92aWRlCiAgIC8vLyBlbnRyaWVzIGZvciBlYWNoIGRlZmluaXRpb24gaW4gTS4KICAgLy8vIFRoaXMgY29uc3RydWN0b3IgaXMgdXNlZnVsIGZvciBkZWxlZ2F0aW5nIHdvcmsgZnJvbSBvbmUKICAgLy8vIElSTWF0ZXJpYWxpemF0aW9uVW5pdCB0byBhbm90aGVyLgotICBJUk1hdGVyaWFsaXphdGlvblVuaXQoVGhyZWFkU2FmZU1vZHVsZSBUU00sIFN5bWJvbEZsYWdzTWFwIFN5bWJvbEZsYWdzLAorICBJUk1hdGVyaWFsaXphdGlvblVuaXQoVGhyZWFkU2FmZU1vZHVsZSBUU00sIFZNb2R1bGVLZXkgSywKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbEZsYWdzTWFwIFN5bWJvbEZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sTmFtZVRvRGVmaW5pdGlvbk1hcCBTeW1ib2xUb0RlZmluaXRpb24pOwogCiAgIC8vLyBSZXR1cm4gdGhlIE1vZHVsZUlkZW50aWZpZXIgYXMgdGhlIG5hbWUgZm9yIHRoaXMgTWF0ZXJpYWxpemF0aW9uVW5pdC4KQEAgLTEyNSwxNiArMTIwLDExIEBACiAKICAgLy8vIEFkZHMgYSBNYXRlcmlhbGl6YXRpb25Vbml0IHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gSVIgdG8gdGhlIGdpdmVuCiAgIC8vLyBKSVREeWxpYi4KLSAgdmlydHVhbCBFcnJvciBhZGQoSklURHlsaWIgJkpELCBWTW9kdWxlS2V5IEssIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCdWZmZXI+IE8pOwotCi0gIC8vLyBBZGRzIGEgTWF0ZXJpYWxpemF0aW9uVW5pdCByZXByZXNlbnRpbmcgdGhlIGdpdmVuIG9iamVjdCB0byB0aGUgbWFpbgotICAvLy8gSklURHlsaWIuCi0gIEVycm9yIGFkZChWTW9kdWxlS2V5IEssIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCdWZmZXI+IE8pIHsKLSAgICByZXR1cm4gYWRkKEVTLmdldE1haW5KSVREeWxpYigpLCBLLCBzdGQ6Om1vdmUoTykpOwotICB9CisgIHZpcnR1YWwgRXJyb3IgYWRkKEpJVER5bGliICZKRCwgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJ1ZmZlcj4gTywKKyAgICAgICAgICAgICAgICAgICAgVk1vZHVsZUtleSBLID0gVk1vZHVsZUtleSgpKTsKIAogICAvLy8gRW1pdCBzaG91bGQgbWF0ZXJpYWxpemUgdGhlIGdpdmVuIElSLgotICB2aXJ0dWFsIHZvaWQgZW1pdChNYXRlcmlhbGl6YXRpb25SZXNwb25zaWJpbGl0eSBSLCBWTW9kdWxlS2V5IEssCisgIHZpcnR1YWwgdm9pZCBlbWl0KE1hdGVyaWFsaXphdGlvblJlc3BvbnNpYmlsaXR5IFIsCiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCdWZmZXI+IE8pID0gMDsKIAogcHJpdmF0ZToKQEAgLTE2MSw3ICsxNTEsNiBAQAogICB2b2lkIGRpc2NhcmQoY29uc3QgSklURHlsaWIgJkpELCBjb25zdCBTeW1ib2xTdHJpbmdQdHIgJk5hbWUpIG92ZXJyaWRlOwogCiAgIE9iamVjdExheWVyICZMOwotICBWTW9kdWxlS2V5IEs7CiAgIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCdWZmZXI+IE87CiB9OwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvTGF6eUVtaXR0aW5nTGF5ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9MYXp5RW1pdHRpbmdMYXllci5oCmluZGV4IDQ2NzYxYjAuLmZkZjY0ZDAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9MYXp5RW1pdHRpbmdMYXllci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9MYXp5RW1pdHRpbmdMYXllci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExhenlFbWl0dGluZ0xheWVyLmggLSBMYXppbHkgZW1pdCBJUiB0byBsb3dlciBKSVQgbGF5ZXJzIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvTGF6eVJlZXhwb3J0cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0xhenlSZWV4cG9ydHMuaAppbmRleCA4Zjg5NzAwLi45ZmRkMWQxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvTGF6eVJlZXhwb3J0cy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9MYXp5UmVleHBvcnRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLS0tLSBMYXp5UmVleHBvcnRzLmggLS0gVXRpbGl0aWVzIGZvciBsYXp5IHJlZXhwb3J0cyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE1OSw3ICsxNTgsOCBAQAogICBMYXp5UmVleHBvcnRzTWF0ZXJpYWxpemF0aW9uVW5pdChMYXp5Q2FsbFRocm91Z2hNYW5hZ2VyICZMQ1RNYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRpcmVjdFN0dWJzTWFuYWdlciAmSVNNYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKSVREeWxpYiAmU291cmNlSkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbEFsaWFzTWFwIENhbGxhYmxlQWxpYXNlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbEFsaWFzTWFwIENhbGxhYmxlQWxpYXNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVk1vZHVsZUtleSBLKTsKIAogICBTdHJpbmdSZWYgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xODIsOSArMTgyLDEwIEBACiBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPExhenlSZWV4cG9ydHNNYXRlcmlhbGl6YXRpb25Vbml0PgogbGF6eVJlZXhwb3J0cyhMYXp5Q2FsbFRocm91Z2hNYW5hZ2VyICZMQ1RNYW5hZ2VyLAogICAgICAgICAgICAgICBJbmRpcmVjdFN0dWJzTWFuYWdlciAmSVNNYW5hZ2VyLCBKSVREeWxpYiAmU291cmNlSkQsCi0gICAgICAgICAgICAgIFN5bWJvbEFsaWFzTWFwIENhbGxhYmxlQWxpYXNlcykgeworICAgICAgICAgICAgICBTeW1ib2xBbGlhc01hcCBDYWxsYWJsZUFsaWFzZXMsIFZNb2R1bGVLZXkgSyA9IFZNb2R1bGVLZXkoKSkgewogICByZXR1cm4gbGx2bTo6bWFrZV91bmlxdWU8TGF6eVJlZXhwb3J0c01hdGVyaWFsaXphdGlvblVuaXQ+KAotICAgICAgTENUTWFuYWdlciwgSVNNYW5hZ2VyLCBTb3VyY2VKRCwgc3RkOjptb3ZlKENhbGxhYmxlQWxpYXNlcykpOworICAgICAgTENUTWFuYWdlciwgSVNNYW5hZ2VyLCBTb3VyY2VKRCwgc3RkOjptb3ZlKENhbGxhYmxlQWxpYXNlcyksCisgICAgICBzdGQ6Om1vdmUoSykpOwogfQogCiB9IC8vIEVuZCBuYW1lc3BhY2Ugb3JjCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvTGVnYWN5LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvTGVnYWN5LmgKaW5kZXggNGM2MTYyYS4uZTBlNTUyNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL0xlZ2FjeS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9MZWdhY3kuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIExlZ2FjeS5oIC0tIEFkYXB0ZXJzIGZvciBFeGVjdXRpb25FbmdpbmUgQVBJIGludGVyb3AgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL051bGxSZXNvbHZlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL051bGxSZXNvbHZlci5oCmluZGV4IDAzZmVmYjYuLmZmYTM3YTEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9OdWxsUmVzb2x2ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvTnVsbFJlc29sdmVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLS0tLSBOdWxsUmVzb2x2ZXIuaCAtIFJlamVjdCBzeW1ib2wgbG9va3VwIHJlcXVlc3RzIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9PYmplY3RUcmFuc2Zvcm1MYXllci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL09iamVjdFRyYW5zZm9ybUxheWVyLmgKaW5kZXggYzZiNDNhOS4uZGU0NjAzZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL09iamVjdFRyYW5zZm9ybUxheWVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL09iamVjdFRyYW5zZm9ybUxheWVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gT2JqZWN0VHJhbnNmb3JtTGF5ZXIuaCAtIFJ1biBhbGwgb2JqZWN0cyB0aHJvdWdoIGZ1bmN0b3IgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTIzLDE2ICsyMiwxNiBAQAogbmFtZXNwYWNlIGxsdm0gewogbmFtZXNwYWNlIG9yYyB7CiAKLWNsYXNzIE9iamVjdFRyYW5zZm9ybUxheWVyMiA6IHB1YmxpYyBPYmplY3RMYXllciB7CitjbGFzcyBPYmplY3RUcmFuc2Zvcm1MYXllciA6IHB1YmxpYyBPYmplY3RMYXllciB7CiBwdWJsaWM6CiAgIHVzaW5nIFRyYW5zZm9ybUZ1bmN0aW9uID0KICAgICAgIHN0ZDo6ZnVuY3Rpb248RXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJ1ZmZlcj4+KAogICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCdWZmZXI+KT47CiAKLSAgT2JqZWN0VHJhbnNmb3JtTGF5ZXIyKEV4ZWN1dGlvblNlc3Npb24gJkVTLCBPYmplY3RMYXllciAmQmFzZUxheWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtRnVuY3Rpb24gVHJhbnNmb3JtKTsKKyAgT2JqZWN0VHJhbnNmb3JtTGF5ZXIoRXhlY3V0aW9uU2Vzc2lvbiAmRVMsIE9iamVjdExheWVyICZCYXNlTGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybUZ1bmN0aW9uIFRyYW5zZm9ybSk7CiAKLSAgdm9pZCBlbWl0KE1hdGVyaWFsaXphdGlvblJlc3BvbnNpYmlsaXR5IFIsIFZNb2R1bGVLZXkgSywKKyAgdm9pZCBlbWl0KE1hdGVyaWFsaXphdGlvblJlc3BvbnNpYmlsaXR5IFIsCiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QnVmZmVyPiBPKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKQEAgLTQ2LDExICs0NSwxMSBAQAogLy8vIGltbWVkaWF0ZWx5IGFwcGxpZXMgdGhlIHVzZXIgc3VwcGxpZWQgZnVuY3RvciB0byBlYWNoIG9iamVjdCwgdGhlbiBhZGRzCiAvLy8gdGhlIHNldCBvZiB0cmFuc2Zvcm1lZCBvYmplY3RzIHRvIHRoZSBsYXllciBiZWxvdy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBCYXNlTGF5ZXJULCB0eXBlbmFtZSBUcmFuc2Zvcm1GdG9yPgotY2xhc3MgT2JqZWN0VHJhbnNmb3JtTGF5ZXIgeworY2xhc3MgTGVnYWN5T2JqZWN0VHJhbnNmb3JtTGF5ZXIgewogcHVibGljOgogICAvLy8gQ29uc3RydWN0IGFuIE9iamVjdFRyYW5zZm9ybUxheWVyIHdpdGggdGhlIGdpdmVuIEJhc2VMYXllcgotICBPYmplY3RUcmFuc2Zvcm1MYXllcihCYXNlTGF5ZXJUICZCYXNlTGF5ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybUZ0b3IgVHJhbnNmb3JtID0gVHJhbnNmb3JtRnRvcigpKQorICBMZWdhY3lPYmplY3RUcmFuc2Zvcm1MYXllcihCYXNlTGF5ZXJUICZCYXNlTGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybUZ0b3IgVHJhbnNmb3JtID0gVHJhbnNmb3JtRnRvcigpKQogICAgICAgOiBCYXNlTGF5ZXIoQmFzZUxheWVyKSwgVHJhbnNmb3JtKHN0ZDo6bW92ZShUcmFuc2Zvcm0pKSB7fQogCiAgIC8vLyBBcHBseSB0aGUgdHJhbnNmb3JtIGZ1bmN0b3IgdG8gZWFjaCBvYmplY3QgaW4gdGhlIG9iamVjdCBzZXQsIHRoZW4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9PcmNBQklTdXBwb3J0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvT3JjQUJJU3VwcG9ydC5oCmluZGV4IDQ5ZTdiNTMuLjM4MjQ2YmMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9PcmNBQklTdXBwb3J0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL09yY0FCSVN1cHBvcnQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBPcmNBQklTdXBwb3J0LmggLSBBQkkgc3VwcG9ydCBjb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjg3LDcgKzI4Niw3IEBACiBwdWJsaWM6CiAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBQb2ludGVyU2l6ZSA9IDg7CiAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBUcmFtcG9saW5lU2l6ZSA9IDQwOwotICBzdGF0aWMgY29uc3QgdW5zaWduZWQgUmVzb2x2ZXJDb2RlU2l6ZSA9IDB4MTFDOworICBzdGF0aWMgY29uc3QgdW5zaWduZWQgUmVzb2x2ZXJDb2RlU2l6ZSA9IDB4MTIwOwogCiAgIHVzaW5nIEluZGlyZWN0U3R1YnNJbmZvID0gR2VuZXJpY0luZGlyZWN0U3R1YnNJbmZvPDMyPjsKICAgdXNpbmcgSklUUmVlbnRyeUZuID0gSklUVGFyZ2V0QWRkcmVzcyAoKikodm9pZCAqQ2FsbGJhY2tNZ3IsCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvT3JjRXJyb3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9PcmNFcnJvci5oCmluZGV4IGRjNjBlOGQuLmU1ZDZhM2UgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9PcmNFcnJvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9PcmNFcnJvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tLS0gT3JjRXJyb3IuaCAtIFJlamVjdCBzeW1ib2wgbG9va3VwIHJlcXVlc3RzIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9PcmNSZW1vdGVUYXJnZXRDbGllbnQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9PcmNSZW1vdGVUYXJnZXRDbGllbnQuaAppbmRleCA5OTQ2OGUyLi44Yjg3NWI3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvT3JjUmVtb3RlVGFyZ2V0Q2xpZW50LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL09yY1JlbW90ZVRhcmdldENsaWVudC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE9yY1JlbW90ZVRhcmdldENsaWVudC5oIC0gT3JjIFJlbW90ZS10YXJnZXQgQ2xpZW50IC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMTgsMzAgKzExNywzMyBAQAogICAgICAgICBVbm1hcHBlZC5iYWNrKCkuUmVtb3RlQ29kZUFkZHIgPQogICAgICAgICAgICAgQ2xpZW50LnJlc2VydmVNZW0oSWQsIENvZGVTaXplLCBDb2RlQWxpZ24pOwogCi0gICAgICAgIExMVk1fREVCVUcoZGJncygpIDw8ICIgIGNvZGU6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZm9ybWF0KCIweCUwMTZ4IiwgVW5tYXBwZWQuYmFjaygpLlJlbW90ZUNvZGVBZGRyKQotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiICgiIDw8IENvZGVTaXplIDw8ICIgYnl0ZXMsIGFsaWdubWVudCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDw8IENvZGVBbGlnbiA8PCAiKVxuIik7CisgICAgICAgIExMVk1fREVCVUcoCisgICAgICAgICAgICBkYmdzKCkgPDwgIiAgY29kZTogIgorICAgICAgICAgICAgICAgICAgIDw8IGZvcm1hdCgiMHglMDE2IiBQUkl4NjQsIFVubWFwcGVkLmJhY2soKS5SZW1vdGVDb2RlQWRkcikKKyAgICAgICAgICAgICAgICAgICA8PCAiICgiIDw8IENvZGVTaXplIDw8ICIgYnl0ZXMsIGFsaWdubWVudCAiIDw8IENvZGVBbGlnbgorICAgICAgICAgICAgICAgICAgIDw8ICIpXG4iKTsKICAgICAgIH0KIAogICAgICAgaWYgKFJPRGF0YVNpemUgIT0gMCkgewogICAgICAgICBVbm1hcHBlZC5iYWNrKCkuUmVtb3RlUk9EYXRhQWRkciA9CiAgICAgICAgICAgICBDbGllbnQucmVzZXJ2ZU1lbShJZCwgUk9EYXRhU2l6ZSwgUk9EYXRhQWxpZ24pOwogCi0gICAgICAgIExMVk1fREVCVUcoZGJncygpIDw8ICIgIHJvLWRhdGE6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZm9ybWF0KCIweCUwMTZ4IiwgVW5tYXBwZWQuYmFjaygpLlJlbW90ZVJPRGF0YUFkZHIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgKCIgPDwgUk9EYXRhU2l6ZSA8PCAiIGJ5dGVzLCBhbGlnbm1lbnQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBST0RhdGFBbGlnbiA8PCAiKVxuIik7CisgICAgICAgIExMVk1fREVCVUcoCisgICAgICAgICAgICBkYmdzKCkgPDwgIiAgcm8tZGF0YTogIgorICAgICAgICAgICAgICAgICAgIDw8IGZvcm1hdCgiMHglMDE2IiBQUkl4NjQsIFVubWFwcGVkLmJhY2soKS5SZW1vdGVST0RhdGFBZGRyKQorICAgICAgICAgICAgICAgICAgIDw8ICIgKCIgPDwgUk9EYXRhU2l6ZSA8PCAiIGJ5dGVzLCBhbGlnbm1lbnQgIiA8PCBST0RhdGFBbGlnbgorICAgICAgICAgICAgICAgICAgIDw8ICIpXG4iKTsKICAgICAgIH0KIAogICAgICAgaWYgKFJXRGF0YVNpemUgIT0gMCkgewogICAgICAgICBVbm1hcHBlZC5iYWNrKCkuUmVtb3RlUldEYXRhQWRkciA9CiAgICAgICAgICAgICBDbGllbnQucmVzZXJ2ZU1lbShJZCwgUldEYXRhU2l6ZSwgUldEYXRhQWxpZ24pOwogCi0gICAgICAgIExMVk1fREVCVUcoZGJncygpIDw8ICIgIHJ3LWRhdGE6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZm9ybWF0KCIweCUwMTZ4IiwgVW5tYXBwZWQuYmFjaygpLlJlbW90ZVJXRGF0YUFkZHIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgKCIgPDwgUldEYXRhU2l6ZSA8PCAiIGJ5dGVzLCBhbGlnbm1lbnQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBSV0RhdGFBbGlnbiA8PCAiKVxuIik7CisgICAgICAgIExMVk1fREVCVUcoCisgICAgICAgICAgICBkYmdzKCkgPDwgIiAgcnctZGF0YTogIgorICAgICAgICAgICAgICAgICAgIDw8IGZvcm1hdCgiMHglMDE2IiBQUkl4NjQsIFVubWFwcGVkLmJhY2soKS5SZW1vdGVSV0RhdGFBZGRyKQorICAgICAgICAgICAgICAgICAgIDw8ICIgKCIgPDwgUldEYXRhU2l6ZSA8PCAiIGJ5dGVzLCBhbGlnbm1lbnQgIiA8PCBSV0RhdGFBbGlnbgorICAgICAgICAgICAgICAgICAgIDw8ICIpXG4iKTsKICAgICAgIH0KICAgICB9CiAKQEAgLTI2OSw5ICsyNzEsOSBAQAogICAgICAgZm9yIChhdXRvICZBbGxvYyA6IEFsbG9jcykgewogICAgICAgICBOZXh0QWRkciA9IGFsaWduVG8oTmV4dEFkZHIsIEFsbG9jLmdldEFsaWduKCkpOwogICAgICAgICBEeWxkLm1hcFNlY3Rpb25BZGRyZXNzKEFsbG9jLmdldExvY2FsQWRkcmVzcygpLCBOZXh0QWRkcik7Ci0gICAgICAgIExMVk1fREVCVUcoZGJncygpIDw8ICIgICAgICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8dm9pZCAqPihBbGxvYy5nZXRMb2NhbEFkZHJlc3MoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAtPiAiIDw8IGZvcm1hdCgiMHglMDE2eCIsIE5leHRBZGRyKSA8PCAiXG4iKTsKKyAgICAgICAgTExWTV9ERUJVRygKKyAgICAgICAgICAgIGRiZ3MoKSA8PCAiICAgICAiIDw8IHN0YXRpY19jYXN0PHZvaWQgKj4oQWxsb2MuZ2V0TG9jYWxBZGRyZXNzKCkpCisgICAgICAgICAgICAgICAgICAgPDwgIiAtPiAiIDw8IGZvcm1hdCgiMHglMDE2IiBQUkl4NjQsIE5leHRBZGRyKSA8PCAiXG4iKTsKICAgICAgICAgQWxsb2Muc2V0UmVtb3RlQWRkcmVzcyhOZXh0QWRkcik7CiAKICAgICAgICAgLy8gT25seSBhZHZhbmNlIE5leHRBZGRyIGlmIGl0IHdhcyBub24tbnVsbCB0byBiZWdpbiB3aXRoLApAQCAtMjkzLDcgKzI5NSw3IEBACiAgICAgICAgICAgTExWTV9ERUJVRyhkYmdzKCkgPDwgIiAgY29weWluZyBzZWN0aW9uOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8dm9pZCAqPihBbGxvYy5nZXRMb2NhbEFkZHJlc3MoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIC0+ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBmb3JtYXQoIjB4JTAxNngiLCBBbGxvYy5nZXRSZW1vdGVBZGRyZXNzKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgZm9ybWF0KCIweCUwMTYiIFBSSXg2NCwgQWxsb2MuZ2V0UmVtb3RlQWRkcmVzcygpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgKCIgPDwgQWxsb2MuZ2V0U2l6ZSgpIDw8ICIgYnl0ZXMpXG4iOyk7CiAKICAgICAgICAgICBpZiAoQ2xpZW50LndyaXRlTWVtKEFsbG9jLmdldFJlbW90ZUFkZHJlc3MoKSwgQWxsb2MuZ2V0TG9jYWxBZGRyZXNzKCksCkBAIC0zMDYsNyArMzA4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgKFBlcm1pc3Npb25zICYgc3lzOjpNZW1vcnk6Ok1GX1dSSVRFID8gJ1cnIDogJy0nKQogICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAoUGVybWlzc2lvbnMgJiBzeXM6Ok1lbW9yeTo6TUZfRVhFQyA/ICdYJyA6ICctJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiBwZXJtaXNzaW9ucyBvbiBibG9jazogIgotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBmb3JtYXQoIjB4JTAxNngiLCBSZW1vdGVTZWdtZW50QWRkcikgPDwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGZvcm1hdCgiMHglMDE2IiBQUkl4NjQsIFJlbW90ZVNlZ21lbnRBZGRyKQorICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiXG4iKTsKICAgICAgICAgaWYgKENsaWVudC5zZXRQcm90ZWN0aW9ucyhJZCwgUmVtb3RlU2VnbWVudEFkZHIsIFBlcm1pc3Npb25zKSkKICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgIH0KQEAgLTUxMCw4ICs1MTMsOCBAQAogICAvLy8gQ2FsbCB0aGUgaW50KHZvaWQpIGZ1bmN0aW9uIGF0IHRoZSBnaXZlbiBhZGRyZXNzIGluIHRoZSB0YXJnZXQgYW5kIHJldHVybgogICAvLy8gaXRzIHJlc3VsdC4KICAgRXhwZWN0ZWQ8aW50PiBjYWxsSW50Vm9pZChKSVRUYXJnZXRBZGRyZXNzIEFkZHIpIHsKLSAgICBMTFZNX0RFQlVHKGRiZ3MoKSA8PCAiQ2FsbGluZyBpbnQoKikodm9pZCkgIiA8PCBmb3JtYXQoIjB4JTAxNngiLCBBZGRyKQotICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIpOworICAgIExMVk1fREVCVUcoZGJncygpIDw8ICJDYWxsaW5nIGludCgqKSh2b2lkKSAiCisgICAgICAgICAgICAgICAgICAgICAgPDwgZm9ybWF0KCIweCUwMTYiIFBSSXg2NCwgQWRkcikgPDwgIlxuIik7CiAgICAgcmV0dXJuIGNhbGxCPGV4ZWM6OkNhbGxJbnRWb2lkPihBZGRyKTsKICAgfQogCkBAIC01MjAsMTUgKzUyMywxNSBAQAogICBFeHBlY3RlZDxpbnQ+IGNhbGxNYWluKEpJVFRhcmdldEFkZHJlc3MgQWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJkFyZ3MpIHsKICAgICBMTFZNX0RFQlVHKGRiZ3MoKSA8PCAiQ2FsbGluZyBpbnQoKikoaW50LCBjaGFyKltdKSAiCi0gICAgICAgICAgICAgICAgICAgICAgPDwgZm9ybWF0KCIweCUwMTZ4IiwgQWRkcikgPDwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgPDwgZm9ybWF0KCIweCUwMTYiIFBSSXg2NCwgQWRkcikgPDwgIlxuIik7CiAgICAgcmV0dXJuIGNhbGxCPGV4ZWM6OkNhbGxNYWluPihBZGRyLCBBcmdzKTsKICAgfQogCiAgIC8vLyBDYWxsIHRoZSB2b2lkKCkgZnVuY3Rpb24gYXQgdGhlIGdpdmVuIGFkZHJlc3MgaW4gdGhlIHRhcmdldCBhbmQgd2FpdCBmb3IKICAgLy8vIGl0IHRvIGZpbmlzaC4KICAgRXJyb3IgY2FsbFZvaWRWb2lkKEpJVFRhcmdldEFkZHJlc3MgQWRkcikgewotICAgIExMVk1fREVCVUcoZGJncygpIDw8ICJDYWxsaW5nIHZvaWQoKikodm9pZCkgIiA8PCBmb3JtYXQoIjB4JTAxNngiLCBBZGRyKQotICAgICAgICAgICAgICAgICAgICAgIDw8ICJcbiIpOworICAgIExMVk1fREVCVUcoZGJncygpIDw8ICJDYWxsaW5nIHZvaWQoKikodm9pZCkgIgorICAgICAgICAgICAgICAgICAgICAgIDw8IGZvcm1hdCgiMHglMDE2IiBQUkl4NjQsIEFkZHIpIDw8ICJcbiIpOwogICAgIHJldHVybiBjYWxsQjxleGVjOjpDYWxsVm9pZFZvaWQ+KEFkZHIpOwogICB9CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9PcmNSZW1vdGVUYXJnZXRSUENBUEkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9PcmNSZW1vdGVUYXJnZXRSUENBUEkuaAppbmRleCA4ZGI5ZTMxLi5lN2I1OThkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvT3JjUmVtb3RlVGFyZ2V0UlBDQVBJLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL09yY1JlbW90ZVRhcmdldFJQQ0FQSS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE9yY1JlbW90ZVRhcmdldFJQQ0FQSS5oIC0gT3JjIFJlbW90ZS10YXJnZXQgUlBDIEFQSSAtLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvT3JjUmVtb3RlVGFyZ2V0U2VydmVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvT3JjUmVtb3RlVGFyZ2V0U2VydmVyLmgKaW5kZXggYWNiYzE2OC4uOTY4NDQ4MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL09yY1JlbW90ZVRhcmdldFNlcnZlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9PcmNSZW1vdGVUYXJnZXRTZXJ2ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBPcmNSZW1vdGVUYXJnZXRTZXJ2ZXIuaCAtIE9yYyBSZW1vdGUtdGFyZ2V0IFNlcnZlciAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL1JQQ1NlcmlhbGl6YXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9SUENTZXJpYWxpemF0aW9uLmgKaW5kZXggMWU1ZjZjZS4uMDdjNzQ3MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL1JQQ1NlcmlhbGl6YXRpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvUlBDU2VyaWFsaXphdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9SUENTZXJpYWxpemF0aW9uLmggLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTI4LDEyMyArMTI3LDg1IEBACiBjbGFzcyBSUENUeXBlTmFtZTxFeHBlY3RlZDxUPj4gewogcHVibGljOgogICBzdGF0aWMgY29uc3QgY2hhciogZ2V0TmFtZSgpIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gTG9jayhOYW1lTXV0ZXgpOwotICAgIGlmIChOYW1lLmVtcHR5KCkpCisgICAgc3RhdGljIHN0ZDo6c3RyaW5nIE5hbWUgPSBbXSB7CisgICAgICBzdGQ6OnN0cmluZyBOYW1lOwogICAgICAgcmF3X3N0cmluZ19vc3RyZWFtKE5hbWUpIDw8ICJFeHBlY3RlZDwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgUlBDVHlwZU5hbWVTZXF1ZW5jZTxUPigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIj4iOworICAgICAgcmV0dXJuIE5hbWU7CisgICAgfSgpOwogICAgIHJldHVybiBOYW1lLmRhdGEoKTsKICAgfQotCi1wcml2YXRlOgotICBzdGF0aWMgc3RkOjptdXRleCBOYW1lTXV0ZXg7Ci0gIHN0YXRpYyBzdGQ6OnN0cmluZyBOYW1lOwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdGQ6Om11dGV4IFJQQ1R5cGVOYW1lPEV4cGVjdGVkPFQ+Pjo6TmFtZU11dGV4OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0ZDo6c3RyaW5nIFJQQ1R5cGVOYW1lPEV4cGVjdGVkPFQ+Pjo6TmFtZTsKLQogdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KIGNsYXNzIFJQQ1R5cGVOYW1lPHN0ZDo6cGFpcjxUMSwgVDI+PiB7CiBwdWJsaWM6CiAgIHN0YXRpYyBjb25zdCBjaGFyKiBnZXROYW1lKCkgewotICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBMb2NrKE5hbWVNdXRleCk7Ci0gICAgaWYgKE5hbWUuZW1wdHkoKSkKKyAgICBzdGF0aWMgc3RkOjpzdHJpbmcgTmFtZSA9IFtdIHsKKyAgICAgIHN0ZDo6c3RyaW5nIE5hbWU7CiAgICAgICByYXdfc3RyaW5nX29zdHJlYW0oTmFtZSkgPDwgInN0ZDo6cGFpcjwiIDw8IFJQQ1R5cGVOYW1lU2VxdWVuY2U8VDEsIFQyPigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIj4iOworICAgICAgcmV0dXJuIE5hbWU7CisgICAgfSgpOwogICAgIHJldHVybiBOYW1lLmRhdGEoKTsKICAgfQotcHJpdmF0ZToKLSAgc3RhdGljIHN0ZDo6bXV0ZXggTmFtZU11dGV4OwotICBzdGF0aWMgc3RkOjpzdHJpbmcgTmFtZTsKIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1zdGQ6Om11dGV4IFJQQ1R5cGVOYW1lPHN0ZDo6cGFpcjxUMSwgVDI+Pjo6TmFtZU11dGV4OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXN0ZDo6c3RyaW5nIFJQQ1R5cGVOYW1lPHN0ZDo6cGFpcjxUMSwgVDI+Pjo6TmFtZTsKLQogdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ1RzPgogY2xhc3MgUlBDVHlwZU5hbWU8c3RkOjp0dXBsZTxBcmdUcy4uLj4+IHsKIHB1YmxpYzoKICAgc3RhdGljIGNvbnN0IGNoYXIqIGdldE5hbWUoKSB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IExvY2soTmFtZU11dGV4KTsKLSAgICBpZiAoTmFtZS5lbXB0eSgpKQorICAgIHN0YXRpYyBzdGQ6OnN0cmluZyBOYW1lID0gW10geworICAgICAgc3RkOjpzdHJpbmcgTmFtZTsKICAgICAgIHJhd19zdHJpbmdfb3N0cmVhbShOYW1lKSA8PCAic3RkOjp0dXBsZTwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgUlBDVHlwZU5hbWVTZXF1ZW5jZTxBcmdUcy4uLj4oKSA8PCAiPiI7CisgICAgICByZXR1cm4gTmFtZTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIE5hbWUuZGF0YSgpOwogICB9Ci1wcml2YXRlOgotICBzdGF0aWMgc3RkOjptdXRleCBOYW1lTXV0ZXg7Ci0gIHN0YXRpYyBzdGQ6OnN0cmluZyBOYW1lOwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ1RzPgotc3RkOjptdXRleCBSUENUeXBlTmFtZTxzdGQ6OnR1cGxlPEFyZ1RzLi4uPj46Ok5hbWVNdXRleDsKLXRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdUcz4KLXN0ZDo6c3RyaW5nIFJQQ1R5cGVOYW1lPHN0ZDo6dHVwbGU8QXJnVHMuLi4+Pjo6TmFtZTsKLQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBSUENUeXBlTmFtZTxzdGQ6OnZlY3RvcjxUPj4gewogcHVibGljOgogICBzdGF0aWMgY29uc3QgY2hhcipnZXROYW1lKCkgewotICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBMb2NrKE5hbWVNdXRleCk7Ci0gICAgaWYgKE5hbWUuZW1wdHkoKSkKKyAgICBzdGF0aWMgc3RkOjpzdHJpbmcgTmFtZSA9IFtdIHsKKyAgICAgIHN0ZDo6c3RyaW5nIE5hbWU7CiAgICAgICByYXdfc3RyaW5nX29zdHJlYW0oTmFtZSkgPDwgInN0ZDo6dmVjdG9yPCIgPDwgUlBDVHlwZU5hbWU8VD46OmdldE5hbWUoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICI+IjsKKyAgICAgIHJldHVybiBOYW1lOworICAgIH0oKTsKICAgICByZXR1cm4gTmFtZS5kYXRhKCk7CiAgIH0KLQotcHJpdmF0ZToKLSAgc3RhdGljIHN0ZDo6bXV0ZXggTmFtZU11dGV4OwotICBzdGF0aWMgc3RkOjpzdHJpbmcgTmFtZTsKIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RkOjptdXRleCBSUENUeXBlTmFtZTxzdGQ6OnZlY3RvcjxUPj46Ok5hbWVNdXRleDsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RkOjpzdHJpbmcgUlBDVHlwZU5hbWU8c3RkOjp2ZWN0b3I8VD4+OjpOYW1lOwotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUlBDVHlwZU5hbWU8c3RkOjpzZXQ8VD4+IHsKIHB1YmxpYzoKICAgc3RhdGljIGNvbnN0IGNoYXIgKmdldE5hbWUoKSB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IExvY2soTmFtZU11dGV4KTsKLSAgICBpZiAoTmFtZS5lbXB0eSgpKQorICAgIHN0YXRpYyBzdGQ6OnN0cmluZyBOYW1lID0gW10geworICAgICAgc3RkOjpzdHJpbmcgTmFtZTsKICAgICAgIHJhd19zdHJpbmdfb3N0cmVhbShOYW1lKQogICAgICAgICAgIDw8ICJzdGQ6OnNldDwiIDw8IFJQQ1R5cGVOYW1lPFQ+OjpnZXROYW1lKCkgPDwgIj4iOworICAgICAgcmV0dXJuIE5hbWU7CisgICAgfSgpOwogICAgIHJldHVybiBOYW1lLmRhdGEoKTsKICAgfQotCi1wcml2YXRlOgotICBzdGF0aWMgc3RkOjptdXRleCBOYW1lTXV0ZXg7Ci0gIHN0YXRpYyBzdGQ6OnN0cmluZyBOYW1lOwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0ZDo6bXV0ZXggUlBDVHlwZU5hbWU8c3RkOjpzZXQ8VD4+OjpOYW1lTXV0ZXg7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RkOjpzdHJpbmcgUlBDVHlwZU5hbWU8c3RkOjpzZXQ8VD4+OjpOYW1lOwotCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4gY2xhc3MgUlBDVHlwZU5hbWU8c3RkOjptYXA8SywgVj4+IHsKIHB1YmxpYzoKICAgc3RhdGljIGNvbnN0IGNoYXIgKmdldE5hbWUoKSB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IExvY2soTmFtZU11dGV4KTsKLSAgICBpZiAoTmFtZS5lbXB0eSgpKQorICAgIHN0YXRpYyBzdGQ6OnN0cmluZyBOYW1lID0gW10geworICAgICAgc3RkOjpzdHJpbmcgTmFtZTsKICAgICAgIHJhd19zdHJpbmdfb3N0cmVhbShOYW1lKQogICAgICAgICAgIDw8ICJzdGQ6Om1hcDwiIDw8IFJQQ1R5cGVOYW1lU2VxdWVuY2U8SywgVj4oKSA8PCAiPiI7CisgICAgICByZXR1cm4gTmFtZTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIE5hbWUuZGF0YSgpOwogICB9Ci0KLXByaXZhdGU6Ci0gIHN0YXRpYyBzdGQ6Om11dGV4IE5hbWVNdXRleDsKLSAgc3RhdGljIHN0ZDo6c3RyaW5nIE5hbWU7CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLXN0ZDo6bXV0ZXggUlBDVHlwZU5hbWU8c3RkOjptYXA8SywgVj4+OjpOYW1lTXV0ZXg7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4gc3RkOjpzdHJpbmcgUlBDVHlwZU5hbWU8c3RkOjptYXA8SywgVj4+OjpOYW1lOwotCiAvLy8gVGhlIFNlcmlhbGl6YXRpb25UcmFpdHM8Q2hhbm5lbFQsIFQ+IGNsYXNzIGRlc2NyaWJlcyBob3cgdG8gc2VyaWFsaXplIGFuZAogLy8vIGRlc2VyaWFsaXplIGFuIGluc3RhbmNlIG9mIHR5cGUgVCB0by9mcm9tIGFuIGFic3RyYWN0IGNoYW5uZWwgb2YgdHlwZQogLy8vIENoYW5uZWxULiBJdCBhbHNvIHByb3ZpZGVzIGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIHR5cGUncyBuYW1lIHZpYSB0aGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9SUENVdGlscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL1JQQ1V0aWxzLmgKaW5kZXggOTUzYjczZS4uM2IxMWUxYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL1JQQ1V0aWxzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL1JQQ1V0aWxzLmgKQEAgLTEsOSArMSw4IEBACi0vLz09PS0tLS0tLS0gUlBDVVRpbHMuaCAtIFV0aWxpdGllcyBmb3IgYnVpbGRpbmcgUlBDIEFQSXMgLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy89PT0tIFJQQ1V0aWxzLmggLSBVdGlsaXRpZXMgZm9yIGJ1aWxkaW5nIFJQQyBBUElzIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNTIsMjUgKzE1MSwxNyBAQAogCiAgIC8vLyBSZXR1cm5zIHRoZSBmdWxsIGZ1bmN0aW9uIHByb3RvdHlwZSBhcyBhIHN0cmluZy4KICAgc3RhdGljIGNvbnN0IGNoYXIgKmdldFByb3RvdHlwZSgpIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gTG9jayhOYW1lTXV0ZXgpOwotICAgIGlmIChOYW1lLmVtcHR5KCkpCisgICAgc3RhdGljIHN0ZDo6c3RyaW5nIE5hbWUgPSBbXSB7CisgICAgICBzdGQ6OnN0cmluZyBOYW1lOwogICAgICAgcmF3X3N0cmluZ19vc3RyZWFtKE5hbWUpCiAgICAgICAgICAgPDwgUlBDVHlwZU5hbWU8UmV0VD46OmdldE5hbWUoKSA8PCAiICIgPDwgRGVyaXZlZEZ1bmM6OmdldE5hbWUoKQogICAgICAgICAgIDw8ICIoIiA8PCBsbHZtOjpvcmM6OnJwYzo6UlBDVHlwZU5hbWVTZXF1ZW5jZTxBcmdUcy4uLj4oKSA8PCAiKSI7CisgICAgICByZXR1cm4gTmFtZTsKKyAgICB9KCk7CiAgICAgcmV0dXJuIE5hbWUuZGF0YSgpOwogICB9Ci0KLXByaXZhdGU6Ci0gIHN0YXRpYyBzdGQ6Om11dGV4IE5hbWVNdXRleDsKLSAgc3RhdGljIHN0ZDo6c3RyaW5nIE5hbWU7CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZEZ1bmMsIHR5cGVuYW1lIFJldFQsIHR5cGVuYW1lLi4uIEFyZ1RzPgotc3RkOjptdXRleCBGdW5jdGlvbjxEZXJpdmVkRnVuYywgUmV0VChBcmdUcy4uLik+OjpOYW1lTXV0ZXg7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkRnVuYywgdHlwZW5hbWUgUmV0VCwgdHlwZW5hbWUuLi4gQXJnVHM+Ci1zdGQ6OnN0cmluZyBGdW5jdGlvbjxEZXJpdmVkRnVuYywgUmV0VChBcmdUcy4uLik+OjpOYW1lOwotCiAvLy8gQWxsb2NhdGVzIFJQQyBmdW5jdGlvbiBpZHMgZHVyaW5nIGF1dG9uZWdvdGlhdGlvbi4KIC8vLyBTcGVjaWFsaXphdGlvbnMgb2YgdGhpcyBjbGFzcyBtdXN0IHByb3ZpZGUgZm91ciBtZW1iZXJzOgogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvUlREeWxkT2JqZWN0TGlua2luZ0xheWVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvUlREeWxkT2JqZWN0TGlua2luZ0xheWVyLmgKaW5kZXggMGMzMDUyMC4uY2Q5ZWMzNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL1JURHlsZE9iamVjdExpbmtpbmdMYXllci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9SVER5bGRPYmplY3RMaW5raW5nTGF5ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBSVER5bGRPYmplY3RMaW5raW5nTGF5ZXIuaCAtIFJURHlsZC1iYXNlZCBqaXQgbGlua2luZyAgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzYsNyArMzUsNyBAQAogbmFtZXNwYWNlIGxsdm0gewogbmFtZXNwYWNlIG9yYyB7CiAKLWNsYXNzIFJURHlsZE9iamVjdExpbmtpbmdMYXllcjIgOiBwdWJsaWMgT2JqZWN0TGF5ZXIgeworY2xhc3MgUlREeWxkT2JqZWN0TGlua2luZ0xheWVyIDogcHVibGljIE9iamVjdExheWVyIHsKIHB1YmxpYzoKICAgLy8vIEZ1bmN0b3IgZm9yIHJlY2VpdmluZyBvYmplY3QtbG9hZGVkIG5vdGlmaWNhdGlvbnMuCiAgIHVzaW5nIE5vdGlmeUxvYWRlZEZ1bmN0aW9uID0KQEAgLTQ3LDE3ICs0NiwxNyBAQAogICB1c2luZyBOb3RpZnlFbWl0dGVkRnVuY3Rpb24gPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoVk1vZHVsZUtleSk+OwogCiAgIHVzaW5nIEdldE1lbW9yeU1hbmFnZXJGdW5jdGlvbiA9Ci0gICAgICBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxSdW50aW1lRHlsZDo6TWVtb3J5TWFuYWdlcj4oVk1vZHVsZUtleSk+OworICAgICAgc3RkOjpmdW5jdGlvbjxzdGQ6OnVuaXF1ZV9wdHI8UnVudGltZUR5bGQ6Ok1lbW9yeU1hbmFnZXI+KCk+OwogCiAgIC8vLyBDb25zdHJ1Y3QgYW4gT2JqZWN0TGlua2luZ0xheWVyIHdpdGggdGhlIGdpdmVuIE5vdGlmeUxvYWRlZCwKICAgLy8vICAgICAgICBhbmQgTm90aWZ5RW1pdHRlZCBmdW5jdG9ycy4KLSAgUlREeWxkT2JqZWN0TGlua2luZ0xheWVyMigKKyAgUlREeWxkT2JqZWN0TGlua2luZ0xheWVyKAogICAgICAgRXhlY3V0aW9uU2Vzc2lvbiAmRVMsIEdldE1lbW9yeU1hbmFnZXJGdW5jdGlvbiBHZXRNZW1vcnlNYW5hZ2VyLAogICAgICAgTm90aWZ5TG9hZGVkRnVuY3Rpb24gTm90aWZ5TG9hZGVkID0gTm90aWZ5TG9hZGVkRnVuY3Rpb24oKSwKICAgICAgIE5vdGlmeUVtaXR0ZWRGdW5jdGlvbiBOb3RpZnlFbWl0dGVkID0gTm90aWZ5RW1pdHRlZEZ1bmN0aW9uKCkpOwogCiAgIC8vLyBFbWl0IHRoZSBvYmplY3QuCi0gIHZvaWQgZW1pdChNYXRlcmlhbGl6YXRpb25SZXNwb25zaWJpbGl0eSBSLCBWTW9kdWxlS2V5IEssCisgIHZvaWQgZW1pdChNYXRlcmlhbGl6YXRpb25SZXNwb25zaWJpbGl0eSBSLAogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJ1ZmZlcj4gTykgb3ZlcnJpZGU7CiAKICAgLy8vIFNldCB0aGUgJ1Byb2Nlc3NBbGxTZWN0aW9ucycgZmxhZy4KQEAgLTY2LDcgKzY1LDcgQEAKICAgLy8vIHRoZSBtZW1vcnkgbWFuYWdlciwgcmF0aGVyIHRoYW4ganVzdCB0aGUgc2VjdGlvbnMgcmVxdWlyZWQgZm9yIGV4ZWN1dGlvbi4KICAgLy8vCiAgIC8vLyBUaGlzIGlzIGtsdWRneSwgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuCi0gIFJURHlsZE9iamVjdExpbmtpbmdMYXllcjIgJnNldFByb2Nlc3NBbGxTZWN0aW9ucyhib29sIFByb2Nlc3NBbGxTZWN0aW9ucykgeworICBSVER5bGRPYmplY3RMaW5raW5nTGF5ZXIgJnNldFByb2Nlc3NBbGxTZWN0aW9ucyhib29sIFByb2Nlc3NBbGxTZWN0aW9ucykgewogICAgIHRoaXMtPlByb2Nlc3NBbGxTZWN0aW9ucyA9IFByb2Nlc3NBbGxTZWN0aW9uczsKICAgICByZXR1cm4gKnRoaXM7CiAgIH0KQEAgLTc5LDEzICs3OCwxMyBAQAogICAvLy8KICAgLy8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byByZW1vdmUgdGhpcyBpZi93aGVuIENPRkYgcHJvcGVybHkgdHJhY2tzCiAgIC8vLyBleHBvcnRlZCBzeW1ib2xzLgotICBSVER5bGRPYmplY3RMaW5raW5nTGF5ZXIyICYKKyAgUlREeWxkT2JqZWN0TGlua2luZ0xheWVyICYKICAgc2V0T3ZlcnJpZGVPYmplY3RGbGFnc1dpdGhSZXNwb25zaWJpbGl0eUZsYWdzKGJvb2wgT3ZlcnJpZGVPYmplY3RGbGFncykgewogICAgIHRoaXMtPk92ZXJyaWRlT2JqZWN0RmxhZ3MgPSBPdmVycmlkZU9iamVjdEZsYWdzOwogICAgIHJldHVybiAqdGhpczsKICAgfQogCi0gIC8vLyBJZiBzZXQsIHRoaXMgUlREeWxkT2JqZWN0TGlua2luZ0xheWVyMiBpbnN0YW5jZSB3aWxsIGNsYWltIHJlc3BvbnNpYmlsaXR5CisgIC8vLyBJZiBzZXQsIHRoaXMgUlREeWxkT2JqZWN0TGlua2luZ0xheWVyIGluc3RhbmNlIHdpbGwgY2xhaW0gcmVzcG9uc2liaWxpdHkKICAgLy8vIGZvciBhbnkgc3ltYm9scyBwcm92aWRlZCBieSBhIGdpdmVuIG9iamVjdCBmaWxlIHRoYXQgd2VyZSBub3QgYWxyZWFkeSBpbgogICAvLy8gdGhlIE1hdGVyaWFsaXphdGlvblJlc3BvbnNpYmlsaXR5IGluc3RhbmNlLiBTZXR0aW5nIHRoaXMgZmxhZyBhbGxvd3MKICAgLy8vIGhpZ2hlci1sZXZlbCBwcm9ncmFtIHJlcHJlc2VudGF0aW9ucyAoZS5nLiBMTFZNIElSKSB0byBiZSBhZGRlZCBiYXNlZCBvbgpAQCAtOTYsNyArOTUsNyBAQAogICAvLy8gZGV0ZXJtaW5pc3RpY2FsbHkpLiBJZiB0aGlzIG9wdGlvbiBpcyBzZXQsIGNsYXNoZXMgZm9yIHRoZSBhZGRpdGlvbmFsCiAgIC8vLyBzeW1ib2xzIG1heSBub3QgYmUgZGV0ZWN0ZWQgdW50aWwgbGF0ZSwgYW5kIGRldGVjdGlvbiBtYXkgZGVwZW5kIG9uCiAgIC8vLyB0aGUgZmxvdyBvZiBjb250cm9sIHRocm91Z2ggSklUJ2QgY29kZS4gVXNlIHdpdGggY2FyZS4KLSAgUlREeWxkT2JqZWN0TGlua2luZ0xheWVyMiAmCisgIFJURHlsZE9iamVjdExpbmtpbmdMYXllciAmCiAgIHNldEF1dG9DbGFpbVJlc3BvbnNpYmlsaXR5Rm9yT2JqZWN0U3ltYm9scyhib29sIEF1dG9DbGFpbU9iamVjdFN5bWJvbHMpIHsKICAgICB0aGlzLT5BdXRvQ2xhaW1PYmplY3RTeW1ib2xzID0gQXV0b0NsYWltT2JqZWN0U3ltYm9sczsKICAgICByZXR1cm4gKnRoaXM7CkBAIC0xMTgsMTAgKzExNywxMCBAQAogICBib29sIFByb2Nlc3NBbGxTZWN0aW9ucyA9IGZhbHNlOwogICBib29sIE92ZXJyaWRlT2JqZWN0RmxhZ3MgPSBmYWxzZTsKICAgYm9vbCBBdXRvQ2xhaW1PYmplY3RTeW1ib2xzID0gZmFsc2U7Ci0gIHN0ZDo6bWFwPFZNb2R1bGVLZXksIHN0ZDo6c2hhcmVkX3B0cjxSdW50aW1lRHlsZDo6TWVtb3J5TWFuYWdlcj4+IE1lbU1ncnM7CisgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSdW50aW1lRHlsZDo6TWVtb3J5TWFuYWdlcj4+IE1lbU1ncnM7CiB9OwogCi1jbGFzcyBSVER5bGRPYmplY3RMaW5raW5nTGF5ZXJCYXNlIHsKK2NsYXNzIExlZ2FjeVJURHlsZE9iamVjdExpbmtpbmdMYXllckJhc2UgewogcHVibGljOgogICB1c2luZyBPYmplY3RQdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QnVmZmVyPjsKIApAQCAtMTczLDEwICsxNzIsMTAgQEAKIC8vLyBvYmplY3QgZmlsZXMgdG8gYmUgbG9hZGVkIGludG8gbWVtb3J5LCBsaW5rZWQsIGFuZCB0aGUgYWRkcmVzc2VzIG9mIHRoZWlyCiAvLy8gc3ltYm9scyBxdWVyaWVkLiBBbGwgb2JqZWN0cyBhZGRlZCB0byB0aGlzIGxheWVyIGNhbiBzZWUgZWFjaCBvdGhlcidzCiAvLy8gc3ltYm9scy4KLWNsYXNzIFJURHlsZE9iamVjdExpbmtpbmdMYXllciA6IHB1YmxpYyBSVER5bGRPYmplY3RMaW5raW5nTGF5ZXJCYXNlIHsKK2NsYXNzIExlZ2FjeVJURHlsZE9iamVjdExpbmtpbmdMYXllciA6IHB1YmxpYyBMZWdhY3lSVER5bGRPYmplY3RMaW5raW5nTGF5ZXJCYXNlIHsKIHB1YmxpYzoKIAotICB1c2luZyBSVER5bGRPYmplY3RMaW5raW5nTGF5ZXJCYXNlOjpPYmplY3RQdHI7CisgIHVzaW5nIExlZ2FjeVJURHlsZE9iamVjdExpbmtpbmdMYXllckJhc2U6Ok9iamVjdFB0cjsKIAogICAvLy8gRnVuY3RvciBmb3IgcmVjZWl2aW5nIG9iamVjdC1sb2FkZWQgbm90aWZpY2F0aW9ucy4KICAgdXNpbmcgTm90aWZ5TG9hZGVkRnRvciA9CkBAIC0xOTcsNyArMTk2LDcgQEAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIE1lbW9yeU1hbmFnZXJQdHJUPgogICBjbGFzcyBDb25jcmV0ZUxpbmtlZE9iamVjdCA6IHB1YmxpYyBMaW5rZWRPYmplY3QgewogICBwdWJsaWM6Ci0gICAgQ29uY3JldGVMaW5rZWRPYmplY3QoUlREeWxkT2JqZWN0TGlua2luZ0xheWVyICZQYXJlbnQsIFZNb2R1bGVLZXkgSywKKyAgICBDb25jcmV0ZUxpbmtlZE9iamVjdChMZWdhY3lSVER5bGRPYmplY3RMaW5raW5nTGF5ZXIgJlBhcmVudCwgVk1vZHVsZUtleSBLLAogICAgICAgICAgICAgICAgICAgICAgICAgIE93bmVkT2JqZWN0IE9iaiwgTWVtb3J5TWFuYWdlclB0clQgTWVtTWdyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2hhcmVkX3B0cjxTeW1ib2xSZXNvbHZlcj4gUmVzb2x2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBQcm9jZXNzQWxsU2VjdGlvbnMpCkBAIC0zMTMsNyArMzEyLDcgQEAKICAgICB9OwogCiAgICAgVk1vZHVsZUtleSBLOwotICAgIFJURHlsZE9iamVjdExpbmtpbmdMYXllciAmUGFyZW50OworICAgIExlZ2FjeVJURHlsZE9iamVjdExpbmtpbmdMYXllciAmUGFyZW50OwogICAgIE1lbW9yeU1hbmFnZXJQdHJUIE1lbU1ncjsKICAgICBPd25lZE9iamVjdCBPYmpGb3JOb3RpZnk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByZUZpbmFsaXplQ29udGVudHM+IFBGQzsKQEAgLTMyMSw3ICszMjAsNyBAQAogCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNZW1vcnlNYW5hZ2VyUHRyVD4KICAgc3RkOjp1bmlxdWVfcHRyPENvbmNyZXRlTGlua2VkT2JqZWN0PE1lbW9yeU1hbmFnZXJQdHJUPj4KLSAgY3JlYXRlTGlua2VkT2JqZWN0KFJURHlsZE9iamVjdExpbmtpbmdMYXllciAmUGFyZW50LCBWTW9kdWxlS2V5IEssCisgIGNyZWF0ZUxpbmtlZE9iamVjdChMZWdhY3lSVER5bGRPYmplY3RMaW5raW5nTGF5ZXIgJlBhcmVudCwgVk1vZHVsZUtleSBLLAogICAgICAgICAgICAgICAgICAgICAgT3duZWRPYmplY3QgT2JqLCBNZW1vcnlNYW5hZ2VyUHRyVCBNZW1NZ3IsCiAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnNoYXJlZF9wdHI8U3ltYm9sUmVzb2x2ZXI+IFJlc29sdmVyLAogICAgICAgICAgICAgICAgICAgICAgYm9vbCBQcm9jZXNzQWxsU2VjdGlvbnMpIHsKQEAgLTM0MSw3ICszNDAsNyBAQAogCiAgIC8vLyBDb25zdHJ1Y3QgYW4gT2JqZWN0TGlua2luZ0xheWVyIHdpdGggdGhlIGdpdmVuIE5vdGlmeUxvYWRlZCwKICAgLy8vICAgICAgICBhbmQgTm90aWZ5RmluYWxpemVkIGZ1bmN0b3JzLgotICBSVER5bGRPYmplY3RMaW5raW5nTGF5ZXIoCisgIExlZ2FjeVJURHlsZE9iamVjdExpbmtpbmdMYXllcigKICAgICAgIEV4ZWN1dGlvblNlc3Npb24gJkVTLCBSZXNvdXJjZXNHZXR0ZXIgR2V0UmVzb3VyY2VzLAogICAgICAgTm90aWZ5TG9hZGVkRnRvciBOb3RpZnlMb2FkZWQgPSBOb3RpZnlMb2FkZWRGdG9yKCksCiAgICAgICBOb3RpZnlGaW5hbGl6ZWRGdG9yIE5vdGlmeUZpbmFsaXplZCA9IE5vdGlmeUZpbmFsaXplZEZ0b3IoKSwKQEAgLTQ0MywxMSArNDQyLDE0IEBACiBwcml2YXRlOgogICBFeGVjdXRpb25TZXNzaW9uICZFUzsKIAotICBzdGQ6Om1hcDxWTW9kdWxlS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8TGlua2VkT2JqZWN0Pj4gTGlua2VkT2JqZWN0czsKICAgUmVzb3VyY2VzR2V0dGVyIEdldFJlc291cmNlczsKICAgTm90aWZ5TG9hZGVkRnRvciBOb3RpZnlMb2FkZWQ7CiAgIE5vdGlmeUZpbmFsaXplZEZ0b3IgTm90aWZ5RmluYWxpemVkOwogICBOb3RpZnlGcmVlZEZ0b3IgTm90aWZ5RnJlZWQ7CisKKyAgLy8gTkIhICBgTGlua2VkT2JqZWN0c2AgbmVlZHMgdG8gYmUgZGVzdHJveWVkIGJlZm9yZSBgTm90aWZ5RnJlZWRgIGJlY2F1c2UKKyAgLy8gYH5Db25jcmV0ZUxpbmtlZE9iamVjdGAgY2FsbHMgYE5vdGlmeUZyZWVkYAorICBzdGQ6Om1hcDxWTW9kdWxlS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8TGlua2VkT2JqZWN0Pj4gTGlua2VkT2JqZWN0czsKICAgYm9vbCBQcm9jZXNzQWxsU2VjdGlvbnMgPSBmYWxzZTsKIH07CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9SYXdCeXRlQ2hhbm5lbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL1Jhd0J5dGVDaGFubmVsLmgKaW5kZXggZGI4MTBmNC4uNDZiN2M1OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL1Jhd0J5dGVDaGFubmVsLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL1Jhd0J5dGVDaGFubmVsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL1Jhd0J5dGVDaGFubmVsLmggLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvUmVtb3RlT2JqZWN0TGF5ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9SZW1vdGVPYmplY3RMYXllci5oCmluZGV4IDk1NWU3NzYuLjk1NTBlZGMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9SZW1vdGVPYmplY3RMYXllci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9SZW1vdGVPYmplY3RMYXllci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tLS0gUmVtb3RlT2JqZWN0TGF5ZXIuaCAtIEZvcndhcmRzIG9ianMgdG8gYSByZW1vdGUgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvU3ltYm9sU3RyaW5nUG9vbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL1N5bWJvbFN0cmluZ1Bvb2wuaAppbmRleCA0YzQ1Y2ZkLi4zOWZhNzRiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvU3ltYm9sU3RyaW5nUG9vbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9TeW1ib2xTdHJpbmdQb29sLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3ltYm9sU3RyaW5nUG9vbC5oIC0gTXVsdGktdGhyZWFkZWQgcG9vbCBmb3IgSklUIHN5bWJvbHMgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE0LDYgKzEzLDcgQEAKICNpZm5kZWYgTExWTV9FWEVDVVRJT05FTkdJTkVfT1JDX1NZTUJPTFNUUklOR1BPT0xfSAogI2RlZmluZSBMTFZNX0VYRUNVVElPTkVOR0lORV9PUkNfU1lNQk9MU1RSSU5HUE9PTF9ICiAKKyNpbmNsdWRlICJsbHZtL0FEVC9EZW5zZU1hcC5oIgogI2luY2x1ZGUgImxsdm0vQURUL1N0cmluZ01hcC5oIgogI2luY2x1ZGUgPGF0b21pYz4KICNpbmNsdWRlIDxtdXRleD4KQEAgLTQ5LDEwICs0OSwxMyBAQAogLy8vIFBvaW50ZXIgdG8gYSBwb29sZWQgc3RyaW5nIHJlcHJlc2VudGluZyBhIHN5bWJvbCBuYW1lLgogY2xhc3MgU3ltYm9sU3RyaW5nUHRyIHsKICAgZnJpZW5kIGNsYXNzIFN5bWJvbFN0cmluZ1Bvb2w7CisgIGZyaWVuZCBzdHJ1Y3QgRGVuc2VNYXBJbmZvPFN5bWJvbFN0cmluZ1B0cj47CiAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgU3ltYm9sU3RyaW5nUHRyICZMSFMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3ltYm9sU3RyaW5nUHRyICZSSFMpOwogICBmcmllbmQgYm9vbCBvcGVyYXRvcjwoY29uc3QgU3ltYm9sU3RyaW5nUHRyICZMSFMsIGNvbnN0IFN5bWJvbFN0cmluZ1B0ciAmUkhTKTsKIAorICBzdGF0aWMgU3ltYm9sU3RyaW5nUG9vbDo6UG9vbE1hcEVudHJ5IFRvbWJzdG9uZTsKKwogcHVibGljOgogICBTeW1ib2xTdHJpbmdQdHIoKSA9IGRlZmF1bHQ7CiAgIFN5bWJvbFN0cmluZ1B0cihjb25zdCBTeW1ib2xTdHJpbmdQdHIgJk90aGVyKQpAQCAtMTQyLDYgKzE0NSwyOSBAQAogfQogCiB9IC8vIGVuZCBuYW1lc3BhY2Ugb3JjCisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgRGVuc2VNYXBJbmZvPG9yYzo6U3ltYm9sU3RyaW5nUHRyPiB7CisKKyAgc3RhdGljIG9yYzo6U3ltYm9sU3RyaW5nUHRyIGdldEVtcHR5S2V5KCkgeworICAgIHJldHVybiBvcmM6OlN5bWJvbFN0cmluZ1B0cigpOworICB9CisKKyAgc3RhdGljIG9yYzo6U3ltYm9sU3RyaW5nUHRyIGdldFRvbWJzdG9uZUtleSgpIHsKKyAgICByZXR1cm4gb3JjOjpTeW1ib2xTdHJpbmdQdHIoJm9yYzo6U3ltYm9sU3RyaW5nUHRyOjpUb21ic3RvbmUpOworICB9CisKKyAgc3RhdGljIHVuc2lnbmVkIGdldEhhc2hWYWx1ZShvcmM6OlN5bWJvbFN0cmluZ1B0ciBWKSB7CisgICAgdWludHB0cl90IElWID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KFYuUyk7CisgICAgcmV0dXJuIHVuc2lnbmVkKElWKSBeIHVuc2lnbmVkKElWID4+IDkpOworICB9CisKKyAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBvcmM6OlN5bWJvbFN0cmluZ1B0ciAmTEhTLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9yYzo6U3ltYm9sU3RyaW5nUHRyICZSSFMpIHsKKyAgICByZXR1cm4gTEhTLlMgPT0gUkhTLlM7CisgIH0KK307CisKIH0gLy8gZW5kIG5hbWVzcGFjZSBsbHZtCiAKICNlbmRpZiAvLyBMTFZNX0VYRUNVVElPTkVOR0lORV9PUkNfU1lNQk9MU1RSSU5HUE9PTF9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvVGhyZWFkU2FmZU1vZHVsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjL1RocmVhZFNhZmVNb2R1bGUuaAppbmRleCBiZjk0NmRlLi41Nzg3NTAwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmMvVGhyZWFkU2FmZU1vZHVsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yYy9UaHJlYWRTYWZlTW9kdWxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLS0tLS0tLS0tIFRocmVhZFNhZmVNb2R1bGUuaCAtLSBMYXllciBpbnRlcmZhY2VzIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yY01DSklUUmVwbGFjZW1lbnQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL09yY01DSklUUmVwbGFjZW1lbnQuaAppbmRleCA0Y2Q1NjQ4Li42Y2NhMTkzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9PcmNNQ0pJVFJlcGxhY2VtZW50LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvT3JjTUNKSVRSZXBsYWNlbWVudC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tIE9yY01DSklUUmVwbGFjZW1lbnQuaCAtIE9yYy1iYXNlZCBNQ0pJVCByZXBsYWNlbWVudCAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9SVER5bGRNZW1vcnlNYW5hZ2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9SVER5bGRNZW1vcnlNYW5hZ2VyLmgKaW5kZXggMjNkNjUxZi4uYzdjODdlYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvUlREeWxkTWVtb3J5TWFuYWdlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL1JURHlsZE1lbW9yeU1hbmFnZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gUlREeWxkTWVtb3J5TWFuYWdlci5jcHAgLSBNZW1vcnkgbWFuYWdlciBmb3IgTUMtSklUIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvUnVudGltZUR5bGQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL1J1bnRpbWVEeWxkLmgKaW5kZXggZTQxOWVlMC4uMmFmOTIwMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvUnVudGltZUR5bGQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9SdW50aW1lRHlsZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFJ1bnRpbWVEeWxkLmggLSBSdW4tdGltZSBkeW5hbWljIGxpbmtlciBmb3IgTUMtSklUIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9SdW50aW1lRHlsZENoZWNrZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL1J1bnRpbWVEeWxkQ2hlY2tlci5oCmluZGV4IDEzZmM1ZmQuLmVlOTI1YzIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL1J1bnRpbWVEeWxkQ2hlY2tlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL1J1bnRpbWVEeWxkQ2hlY2tlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tIFJ1bnRpbWVEeWxkQ2hlY2tlci5oIC0gUnVudGltZUR5bGQgdGVzdGVyIGZyYW1ld29yayAtLS0tLSotIEMrKyAtKi09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvU2VjdGlvbk1lbW9yeU1hbmFnZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRXhlY3V0aW9uRW5naW5lL1NlY3Rpb25NZW1vcnlNYW5hZ2VyLmgKaW5kZXggM2NmMTMxYy4uZDczMTY0MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9FeGVjdXRpb25FbmdpbmUvU2VjdGlvbk1lbW9yeU1hbmFnZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0V4ZWN1dGlvbkVuZ2luZS9TZWN0aW9uTWVtb3J5TWFuYWdlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFNlY3Rpb25NZW1vcnlNYW5hZ2VyLmggLSBNZW1vcnkgbWFuYWdlciBmb3IgTUNKSVQvUnREeWxkIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0Z1enpNdXRhdGUvRnV6emVyQ0xJLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0Z1enpNdXRhdGUvRnV6emVyQ0xJLmgKaW5kZXggMzMzM2U5Ni4uMmExNmU0MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9GdXp6TXV0YXRlL0Z1enplckNMSS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRnV6ek11dGF0ZS9GdXp6ZXJDTEkuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gRnV6emVyQ0xJLmggLSBDb21tb24gbG9naWMgZm9yIENMSXMgb2YgZnV6emVycyAtLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9GdXp6TXV0YXRlL0lSTXV0YXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9GdXp6TXV0YXRlL0lSTXV0YXRvci5oCmluZGV4IDlhYTlkNmQuLjQwYTFjZTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRnV6ek11dGF0ZS9JUk11dGF0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0Z1enpNdXRhdGUvSVJNdXRhdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIElSTXV0YXRvci5oIC0gTXV0YXRpb24gZW5naW5lIGZvciBmdXp6aW5nIElSIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRnV6ek11dGF0ZS9PcERlc2NyaXB0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRnV6ek11dGF0ZS9PcERlc2NyaXB0b3IuaAppbmRleCBkZDMwZmRhLi5kNmM5OGNkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0Z1enpNdXRhdGUvT3BEZXNjcmlwdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9GdXp6TXV0YXRlL09wRGVzY3JpcHRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBPcERlc2NyaXB0b3IuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0Z1enpNdXRhdGUvT3BlcmF0aW9ucy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9GdXp6TXV0YXRlL09wZXJhdGlvbnMuaAppbmRleCA2NjhiZDk1Li4yZWI0YzM4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0Z1enpNdXRhdGUvT3BlcmF0aW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRnV6ek11dGF0ZS9PcGVyYXRpb25zLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIE9wZXJhdGlvbnMuaCAtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0Z1enpNdXRhdGUvUmFuZG9tLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0Z1enpNdXRhdGUvUmFuZG9tLmgKaW5kZXggM2E1ZjQ2YS4uNjE1YjE1ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9GdXp6TXV0YXRlL1JhbmRvbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRnV6ek11dGF0ZS9SYW5kb20uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFJhbmRvbS5oIC0gVXRpbGl0aWVzIGZvciByYW5kb20gc2FtcGxpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9GdXp6TXV0YXRlL1JhbmRvbUlSQnVpbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9GdXp6TXV0YXRlL1JhbmRvbUlSQnVpbGRlci5oCmluZGV4IDVjZjNmMGIuLmYzYjYwOTcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vRnV6ek11dGF0ZS9SYW5kb21JUkJ1aWxkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0Z1enpNdXRhdGUvUmFuZG9tSVJCdWlsZGVyLmgKQEAgLTEsOSArMSw4IEBACi0vLz09PS0tIE11dGF0b3IuaCAtIFV0aWxzIGZvciByYW5kb21seSBtdXRhdGlvbiBJUiAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy89PT0tIFJhbmRvbUlSQnVpbGRlci5oIC0gVXRpbHMgZm9yIHJhbmRvbWx5IG11dGF0aW9uIElSIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0FyZ3VtZW50LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0FyZ3VtZW50LmgKaW5kZXggNDk3ZGNhNC4uMmRlNWM3MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Bcmd1bWVudC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQXJndW1lbnQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9Bcmd1bWVudC5oIC0gRGVmaW5pdGlvbiBvZiB0aGUgQXJndW1lbnQgY2xhc3MgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Bc3NlbWJseUFubm90YXRpb25Xcml0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQXNzZW1ibHlBbm5vdGF0aW9uV3JpdGVyLmgKaW5kZXggNmUxZjVjNC4uM2ZkM2M1NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Bc3NlbWJseUFubm90YXRpb25Xcml0ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0Fzc2VtYmx5QW5ub3RhdGlvbldyaXRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBBc3NlbWJseUFubm90YXRpb25Xcml0ZXIuaCAtIEFubm90YXRpb24gLmxsIGZpbGVzIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0F0dHJpYnV0ZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQXR0cmlidXRlcy5oCmluZGV4IDVhYWFhZjMuLjhkN2Y0MDEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQXR0cmlidXRlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQXR0cmlidXRlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQXR0cmlidXRlcy5oIC0gQ29udGFpbmVyIGZvciBBdHRyaWJ1dGVzIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yMzAsMjkgKzIyOSwzMyBAQAogCiAgIC8vLyBBZGQgYW4gYXJndW1lbnQgYXR0cmlidXRlLiBSZXR1cm5zIGEgbmV3IHNldCBiZWNhdXNlIGF0dHJpYnV0ZSBzZXRzIGFyZQogICAvLy8gaW1tdXRhYmxlLgotICBBdHRyaWJ1dGVTZXQgYWRkQXR0cmlidXRlKExMVk1Db250ZXh0ICZDLCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEtpbmQpIGNvbnN0OworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVTZXQgYWRkQXR0cmlidXRlKExMVk1Db250ZXh0ICZDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZTo6QXR0cktpbmQgS2luZCkgY29uc3Q7CiAKICAgLy8vIEFkZCBhIHRhcmdldC1kZXBlbmRlbnQgYXR0cmlidXRlLiBSZXR1cm5zIGEgbmV3IHNldCBiZWNhdXNlIGF0dHJpYnV0ZSBzZXRzCiAgIC8vLyBhcmUgaW1tdXRhYmxlLgotICBBdHRyaWJ1dGVTZXQgYWRkQXR0cmlidXRlKExMVk1Db250ZXh0ICZDLCBTdHJpbmdSZWYgS2luZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgVmFsdWUgPSBTdHJpbmdSZWYoKSkgY29uc3Q7CisgIExMVk1fTk9ESVNDQVJEIEF0dHJpYnV0ZVNldCBhZGRBdHRyaWJ1dGUoTExWTUNvbnRleHQgJkMsIFN0cmluZ1JlZiBLaW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1JlZiBWYWx1ZSA9IFN0cmluZ1JlZigpKSBjb25zdDsKIAogICAvLy8gQWRkIGF0dHJpYnV0ZXMgdG8gdGhlIGF0dHJpYnV0ZSBzZXQuIFJldHVybnMgYSBuZXcgc2V0IGJlY2F1c2UgYXR0cmlidXRlCiAgIC8vLyBzZXRzIGFyZSBpbW11dGFibGUuCi0gIEF0dHJpYnV0ZVNldCBhZGRBdHRyaWJ1dGVzKExMVk1Db250ZXh0ICZDLCBBdHRyaWJ1dGVTZXQgQVMpIGNvbnN0OworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVTZXQgYWRkQXR0cmlidXRlcyhMTFZNQ29udGV4dCAmQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlU2V0IEFTKSBjb25zdDsKIAogICAvLy8gUmVtb3ZlIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlIGZyb20gdGhpcyBzZXQuIFJldHVybnMgYSBuZXcgc2V0IGJlY2F1c2UKICAgLy8vIGF0dHJpYnV0ZSBzZXRzIGFyZSBpbW11dGFibGUuCi0gIEF0dHJpYnV0ZVNldCByZW1vdmVBdHRyaWJ1dGUoTExWTUNvbnRleHQgJkMsIEF0dHJpYnV0ZTo6QXR0cktpbmQgS2luZCkgY29uc3Q7CisgIExMVk1fTk9ESVNDQVJEIEF0dHJpYnV0ZVNldCByZW1vdmVBdHRyaWJ1dGUoTExWTUNvbnRleHQgJkMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlOjpBdHRyS2luZCBLaW5kKSBjb25zdDsKIAogICAvLy8gUmVtb3ZlIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlIGZyb20gdGhpcyBzZXQuIFJldHVybnMgYSBuZXcgc2V0IGJlY2F1c2UKICAgLy8vIGF0dHJpYnV0ZSBzZXRzIGFyZSBpbW11dGFibGUuCi0gIEF0dHJpYnV0ZVNldCByZW1vdmVBdHRyaWJ1dGUoTExWTUNvbnRleHQgJkMsIFN0cmluZ1JlZiBLaW5kKSBjb25zdDsKKyAgTExWTV9OT0RJU0NBUkQgQXR0cmlidXRlU2V0IHJlbW92ZUF0dHJpYnV0ZShMTFZNQ29udGV4dCAmQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgS2luZCkgY29uc3Q7CiAKICAgLy8vIFJlbW92ZSB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZXMgZnJvbSB0aGlzIHNldC4gUmV0dXJucyBhIG5ldyBzZXQgYmVjYXVzZQogICAvLy8gYXR0cmlidXRlIHNldHMgYXJlIGltbXV0YWJsZS4KLSAgQXR0cmlidXRlU2V0IHJlbW92ZUF0dHJpYnV0ZXMoTExWTUNvbnRleHQgJkMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJCdWlsZGVyICZBdHRyc1RvUmVtb3ZlKSBjb25zdDsKKyAgTExWTV9OT0RJU0NBUkQgQXR0cmlidXRlU2V0CisgIHJlbW92ZUF0dHJpYnV0ZXMoTExWTUNvbnRleHQgJkMsIGNvbnN0IEF0dHJCdWlsZGVyICZBdHRyc1RvUmVtb3ZlKSBjb25zdDsKIAogICAvLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgYXR0cmlidXRlcyBpbiB0aGlzIHNldC4KICAgdW5zaWduZWQgZ2V0TnVtQXR0cmlidXRlcygpIGNvbnN0OwpAQCAtMzc1LDEzMyArMzc4LDE0MCBAQAogCiAgIC8vLyBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBhdHRyaWJ1dGUgc2V0IGF0IHRoZSBnaXZlbiBpbmRleC4KICAgLy8vIFJldHVybnMgYSBuZXcgbGlzdCBiZWNhdXNlIGF0dHJpYnV0ZSBsaXN0cyBhcmUgaW1tdXRhYmxlLgotICBBdHRyaWJ1dGVMaXN0IGFkZEF0dHJpYnV0ZShMTFZNQ29udGV4dCAmQywgdW5zaWduZWQgSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZTo6QXR0cktpbmQgS2luZCkgY29uc3Q7CisgIExMVk1fTk9ESVNDQVJEIEF0dHJpYnV0ZUxpc3QgYWRkQXR0cmlidXRlKExMVk1Db250ZXh0ICZDLCB1bnNpZ25lZCBJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlOjpBdHRyS2luZCBLaW5kKSBjb25zdDsKIAogICAvLy8gQWRkIGFuIGF0dHJpYnV0ZSB0byB0aGUgYXR0cmlidXRlIHNldCBhdCB0aGUgZ2l2ZW4gaW5kZXguCiAgIC8vLyBSZXR1cm5zIGEgbmV3IGxpc3QgYmVjYXVzZSBhdHRyaWJ1dGUgbGlzdHMgYXJlIGltbXV0YWJsZS4KLSAgQXR0cmlidXRlTGlzdCBhZGRBdHRyaWJ1dGUoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEluZGV4LCBTdHJpbmdSZWYgS2luZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nUmVmIFZhbHVlID0gU3RyaW5nUmVmKCkpIGNvbnN0OworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVMaXN0CisgIGFkZEF0dHJpYnV0ZShMTFZNQ29udGV4dCAmQywgdW5zaWduZWQgSW5kZXgsIFN0cmluZ1JlZiBLaW5kLAorICAgICAgICAgICAgICAgU3RyaW5nUmVmIFZhbHVlID0gU3RyaW5nUmVmKCkpIGNvbnN0OwogCiAgIC8vLyBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBhdHRyaWJ1dGUgc2V0IGF0IHRoZSBnaXZlbiBpbmRleC4KICAgLy8vIFJldHVybnMgYSBuZXcgbGlzdCBiZWNhdXNlIGF0dHJpYnV0ZSBsaXN0cyBhcmUgaW1tdXRhYmxlLgotICBBdHRyaWJ1dGVMaXN0IGFkZEF0dHJpYnV0ZShMTFZNQ29udGV4dCAmQywgdW5zaWduZWQgSW5kZXgsIEF0dHJpYnV0ZSBBKSBjb25zdDsKKyAgTExWTV9OT0RJU0NBUkQgQXR0cmlidXRlTGlzdCBhZGRBdHRyaWJ1dGUoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUgQSkgY29uc3Q7CiAKICAgLy8vIEFkZCBhdHRyaWJ1dGVzIHRvIHRoZSBhdHRyaWJ1dGUgc2V0IGF0IHRoZSBnaXZlbiBpbmRleC4KICAgLy8vIFJldHVybnMgYSBuZXcgbGlzdCBiZWNhdXNlIGF0dHJpYnV0ZSBsaXN0cyBhcmUgaW1tdXRhYmxlLgotICBBdHRyaWJ1dGVMaXN0IGFkZEF0dHJpYnV0ZXMoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0ckJ1aWxkZXIgJkIpIGNvbnN0OworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVMaXN0IGFkZEF0dHJpYnV0ZXMoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0ckJ1aWxkZXIgJkIpIGNvbnN0OwogCiAgIC8vLyBBZGQgYW4gYXJndW1lbnQgYXR0cmlidXRlIHRvIHRoZSBsaXN0LiBSZXR1cm5zIGEgbmV3IGxpc3QgYmVjYXVzZQogICAvLy8gYXR0cmlidXRlIGxpc3RzIGFyZSBpbW11dGFibGUuCi0gIEF0dHJpYnV0ZUxpc3QgYWRkUGFyYW1BdHRyaWJ1dGUoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEFyZ05vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZTo6QXR0cktpbmQgS2luZCkgY29uc3QgeworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVMaXN0IGFkZFBhcmFtQXR0cmlidXRlKAorICAgICAgTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEFyZ05vLCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEtpbmQpIGNvbnN0IHsKICAgICByZXR1cm4gYWRkQXR0cmlidXRlKEMsIEFyZ05vICsgRmlyc3RBcmdJbmRleCwgS2luZCk7CiAgIH0KIAogICAvLy8gQWRkIGFuIGFyZ3VtZW50IGF0dHJpYnV0ZSB0byB0aGUgbGlzdC4gUmV0dXJucyBhIG5ldyBsaXN0IGJlY2F1c2UKICAgLy8vIGF0dHJpYnV0ZSBsaXN0cyBhcmUgaW1tdXRhYmxlLgotICBBdHRyaWJ1dGVMaXN0IGFkZFBhcmFtQXR0cmlidXRlKExMVk1Db250ZXh0ICZDLCB1bnNpZ25lZCBBcmdObywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgS2luZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgVmFsdWUgPSBTdHJpbmdSZWYoKSkgY29uc3QgeworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVMaXN0CisgIGFkZFBhcmFtQXR0cmlidXRlKExMVk1Db250ZXh0ICZDLCB1bnNpZ25lZCBBcmdObywgU3RyaW5nUmVmIEtpbmQsCisgICAgICAgICAgICAgICAgICAgIFN0cmluZ1JlZiBWYWx1ZSA9IFN0cmluZ1JlZigpKSBjb25zdCB7CiAgICAgcmV0dXJuIGFkZEF0dHJpYnV0ZShDLCBBcmdObyArIEZpcnN0QXJnSW5kZXgsIEtpbmQsIFZhbHVlKTsKICAgfQogCiAgIC8vLyBBZGQgYW4gYXR0cmlidXRlIHRvIHRoZSBhdHRyaWJ1dGUgbGlzdCBhdCB0aGUgZ2l2ZW4gYXJnIGluZGljZXMuIFJldHVybnMgYQogICAvLy8gbmV3IGxpc3QgYmVjYXVzZSBhdHRyaWJ1dGUgbGlzdHMgYXJlIGltbXV0YWJsZS4KLSAgQXR0cmlidXRlTGlzdCBhZGRQYXJhbUF0dHJpYnV0ZShMTFZNQ29udGV4dCAmQywgQXJyYXlSZWY8dW5zaWduZWQ+IEFyZ05vcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUgQSkgY29uc3Q7CisgIExMVk1fTk9ESVNDQVJEIEF0dHJpYnV0ZUxpc3QgYWRkUGFyYW1BdHRyaWJ1dGUoTExWTUNvbnRleHQgJkMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8dW5zaWduZWQ+IEFyZ05vcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUgQSkgY29uc3Q7CiAKICAgLy8vIEFkZCBhbiBhcmd1bWVudCBhdHRyaWJ1dGUgdG8gdGhlIGxpc3QuIFJldHVybnMgYSBuZXcgbGlzdCBiZWNhdXNlCiAgIC8vLyBhdHRyaWJ1dGUgbGlzdHMgYXJlIGltbXV0YWJsZS4KLSAgQXR0cmlidXRlTGlzdCBhZGRQYXJhbUF0dHJpYnV0ZXMoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEFyZ05vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyQnVpbGRlciAmQikgY29uc3QgeworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVMaXN0IGFkZFBhcmFtQXR0cmlidXRlcyhMTFZNQ29udGV4dCAmQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgQXJnTm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJCdWlsZGVyICZCKSBjb25zdCB7CiAgICAgcmV0dXJuIGFkZEF0dHJpYnV0ZXMoQywgQXJnTm8gKyBGaXJzdEFyZ0luZGV4LCBCKTsKICAgfQogCiAgIC8vLyBSZW1vdmUgdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGUgYXQgdGhlIHNwZWNpZmllZCBpbmRleCBmcm9tIHRoaXMKICAgLy8vIGF0dHJpYnV0ZSBsaXN0LiBSZXR1cm5zIGEgbmV3IGxpc3QgYmVjYXVzZSBhdHRyaWJ1dGUgbGlzdHMgYXJlIGltbXV0YWJsZS4KLSAgQXR0cmlidXRlTGlzdCByZW1vdmVBdHRyaWJ1dGUoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGU6OkF0dHJLaW5kIEtpbmQpIGNvbnN0OworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVMaXN0IHJlbW92ZUF0dHJpYnV0ZShMTFZNQ29udGV4dCAmQywgdW5zaWduZWQgSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZTo6QXR0cktpbmQgS2luZCkgY29uc3Q7CiAKICAgLy8vIFJlbW92ZSB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZSBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IGZyb20gdGhpcwogICAvLy8gYXR0cmlidXRlIGxpc3QuIFJldHVybnMgYSBuZXcgbGlzdCBiZWNhdXNlIGF0dHJpYnV0ZSBsaXN0cyBhcmUgaW1tdXRhYmxlLgotICBBdHRyaWJ1dGVMaXN0IHJlbW92ZUF0dHJpYnV0ZShMTFZNQ29udGV4dCAmQywgdW5zaWduZWQgSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1JlZiBLaW5kKSBjb25zdDsKKyAgTExWTV9OT0RJU0NBUkQgQXR0cmlidXRlTGlzdCByZW1vdmVBdHRyaWJ1dGUoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgS2luZCkgY29uc3Q7CiAKICAgLy8vIFJlbW92ZSB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZXMgYXQgdGhlIHNwZWNpZmllZCBpbmRleCBmcm9tIHRoaXMKICAgLy8vIGF0dHJpYnV0ZSBsaXN0LiBSZXR1cm5zIGEgbmV3IGxpc3QgYmVjYXVzZSBhdHRyaWJ1dGUgbGlzdHMgYXJlIGltbXV0YWJsZS4KLSAgQXR0cmlidXRlTGlzdCByZW1vdmVBdHRyaWJ1dGVzKExMVk1Db250ZXh0ICZDLCB1bnNpZ25lZCBJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJCdWlsZGVyICZBdHRyc1RvUmVtb3ZlKSBjb25zdDsKKyAgTExWTV9OT0RJU0NBUkQgQXR0cmlidXRlTGlzdCByZW1vdmVBdHRyaWJ1dGVzKAorICAgICAgTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEluZGV4LCBjb25zdCBBdHRyQnVpbGRlciAmQXR0cnNUb1JlbW92ZSkgY29uc3Q7CiAKICAgLy8vIFJlbW92ZSBhbGwgYXR0cmlidXRlcyBhdCB0aGUgc3BlY2lmaWVkIGluZGV4IGZyb20gdGhpcwogICAvLy8gYXR0cmlidXRlIGxpc3QuIFJldHVybnMgYSBuZXcgbGlzdCBiZWNhdXNlIGF0dHJpYnV0ZSBsaXN0cyBhcmUgaW1tdXRhYmxlLgotICBBdHRyaWJ1dGVMaXN0IHJlbW92ZUF0dHJpYnV0ZXMoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEluZGV4KSBjb25zdDsKKyAgTExWTV9OT0RJU0NBUkQgQXR0cmlidXRlTGlzdCByZW1vdmVBdHRyaWJ1dGVzKExMVk1Db250ZXh0ICZDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgSW5kZXgpIGNvbnN0OwogCiAgIC8vLyBSZW1vdmUgdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGUgYXQgdGhlIHNwZWNpZmllZCBhcmcgaW5kZXggZnJvbSB0aGlzCiAgIC8vLyBhdHRyaWJ1dGUgbGlzdC4gUmV0dXJucyBhIG5ldyBsaXN0IGJlY2F1c2UgYXR0cmlidXRlIGxpc3RzIGFyZSBpbW11dGFibGUuCi0gIEF0dHJpYnV0ZUxpc3QgcmVtb3ZlUGFyYW1BdHRyaWJ1dGUoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEFyZ05vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZTo6QXR0cktpbmQgS2luZCkgY29uc3QgeworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVMaXN0IHJlbW92ZVBhcmFtQXR0cmlidXRlKAorICAgICAgTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEFyZ05vLCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEtpbmQpIGNvbnN0IHsKICAgICByZXR1cm4gcmVtb3ZlQXR0cmlidXRlKEMsIEFyZ05vICsgRmlyc3RBcmdJbmRleCwgS2luZCk7CiAgIH0KIAogICAvLy8gUmVtb3ZlIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlIGF0IHRoZSBzcGVjaWZpZWQgYXJnIGluZGV4IGZyb20gdGhpcwogICAvLy8gYXR0cmlidXRlIGxpc3QuIFJldHVybnMgYSBuZXcgbGlzdCBiZWNhdXNlIGF0dHJpYnV0ZSBsaXN0cyBhcmUgaW1tdXRhYmxlLgotICBBdHRyaWJ1dGVMaXN0IHJlbW92ZVBhcmFtQXR0cmlidXRlKExMVk1Db250ZXh0ICZDLCB1bnNpZ25lZCBBcmdObywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgS2luZCkgY29uc3QgeworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVMaXN0IHJlbW92ZVBhcmFtQXR0cmlidXRlKExMVk1Db250ZXh0ICZDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEFyZ05vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1JlZiBLaW5kKSBjb25zdCB7CiAgICAgcmV0dXJuIHJlbW92ZUF0dHJpYnV0ZShDLCBBcmdObyArIEZpcnN0QXJnSW5kZXgsIEtpbmQpOwogICB9CiAKICAgLy8vIFJlbW92ZSB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZSBhdCB0aGUgc3BlY2lmaWVkIGFyZyBpbmRleCBmcm9tIHRoaXMKICAgLy8vIGF0dHJpYnV0ZSBsaXN0LiBSZXR1cm5zIGEgbmV3IGxpc3QgYmVjYXVzZSBhdHRyaWJ1dGUgbGlzdHMgYXJlIGltbXV0YWJsZS4KLSAgQXR0cmlidXRlTGlzdCByZW1vdmVQYXJhbUF0dHJpYnV0ZXMoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEFyZ05vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyQnVpbGRlciAmQXR0cnNUb1JlbW92ZSkgY29uc3QgeworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVMaXN0IHJlbW92ZVBhcmFtQXR0cmlidXRlcygKKyAgICAgIExMVk1Db250ZXh0ICZDLCB1bnNpZ25lZCBBcmdObywgY29uc3QgQXR0ckJ1aWxkZXIgJkF0dHJzVG9SZW1vdmUpIGNvbnN0IHsKICAgICByZXR1cm4gcmVtb3ZlQXR0cmlidXRlcyhDLCBBcmdObyArIEZpcnN0QXJnSW5kZXgsIEF0dHJzVG9SZW1vdmUpOwogICB9CiAKICAgLy8vIFJlbW92ZSBhbGwgYXR0cmlidXRlcyBhdCB0aGUgc3BlY2lmaWVkIGFyZyBpbmRleCBmcm9tIHRoaXMKICAgLy8vIGF0dHJpYnV0ZSBsaXN0LiBSZXR1cm5zIGEgbmV3IGxpc3QgYmVjYXVzZSBhdHRyaWJ1dGUgbGlzdHMgYXJlIGltbXV0YWJsZS4KLSAgQXR0cmlidXRlTGlzdCByZW1vdmVQYXJhbUF0dHJpYnV0ZXMoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEFyZ05vKSBjb25zdCB7CisgIExMVk1fTk9ESVNDQVJEIEF0dHJpYnV0ZUxpc3QgcmVtb3ZlUGFyYW1BdHRyaWJ1dGVzKExMVk1Db250ZXh0ICZDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBBcmdObykgY29uc3QgewogICAgIHJldHVybiByZW1vdmVBdHRyaWJ1dGVzKEMsIEFyZ05vICsgRmlyc3RBcmdJbmRleCk7CiAgIH0KIAogICAvLy8gXGJyaWVmIEFkZCB0aGUgZGVyZWZlcmVuY2VhYmxlIGF0dHJpYnV0ZSB0byB0aGUgYXR0cmlidXRlIHNldCBhdCB0aGUgZ2l2ZW4KICAgLy8vIGluZGV4LiBSZXR1cm5zIGEgbmV3IGxpc3QgYmVjYXVzZSBhdHRyaWJ1dGUgbGlzdHMgYXJlIGltbXV0YWJsZS4KLSAgQXR0cmlidXRlTGlzdCBhZGREZXJlZmVyZW5jZWFibGVBdHRyKExMVk1Db250ZXh0ICZDLCB1bnNpZ25lZCBJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IEJ5dGVzKSBjb25zdDsKKyAgTExWTV9OT0RJU0NBUkQgQXR0cmlidXRlTGlzdCBhZGREZXJlZmVyZW5jZWFibGVBdHRyKExMVk1Db250ZXh0ICZDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBCeXRlcykgY29uc3Q7CiAKICAgLy8vIFxicmllZiBBZGQgdGhlIGRlcmVmZXJlbmNlYWJsZSBhdHRyaWJ1dGUgdG8gdGhlIGF0dHJpYnV0ZSBzZXQgYXQgdGhlIGdpdmVuCiAgIC8vLyBhcmcgaW5kZXguIFJldHVybnMgYSBuZXcgbGlzdCBiZWNhdXNlIGF0dHJpYnV0ZSBsaXN0cyBhcmUgaW1tdXRhYmxlLgotICBBdHRyaWJ1dGVMaXN0IGFkZERlcmVmZXJlbmNlYWJsZVBhcmFtQXR0cihMTFZNQ29udGV4dCAmQywgdW5zaWduZWQgQXJnTm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IEJ5dGVzKSBjb25zdCB7CisgIExMVk1fTk9ESVNDQVJEIEF0dHJpYnV0ZUxpc3QgYWRkRGVyZWZlcmVuY2VhYmxlUGFyYW1BdHRyKAorICAgICAgTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEFyZ05vLCB1aW50NjRfdCBCeXRlcykgY29uc3QgewogICAgIHJldHVybiBhZGREZXJlZmVyZW5jZWFibGVBdHRyKEMsIEFyZ05vICsgRmlyc3RBcmdJbmRleCwgQnl0ZXMpOwogICB9CiAKICAgLy8vIEFkZCB0aGUgZGVyZWZlcmVuY2VhYmxlX29yX251bGwgYXR0cmlidXRlIHRvIHRoZSBhdHRyaWJ1dGUgc2V0IGF0CiAgIC8vLyB0aGUgZ2l2ZW4gaW5kZXguIFJldHVybnMgYSBuZXcgbGlzdCBiZWNhdXNlIGF0dHJpYnV0ZSBsaXN0cyBhcmUgaW1tdXRhYmxlLgotICBBdHRyaWJ1dGVMaXN0IGFkZERlcmVmZXJlbmNlYWJsZU9yTnVsbEF0dHIoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgQnl0ZXMpIGNvbnN0OworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVMaXN0IGFkZERlcmVmZXJlbmNlYWJsZU9yTnVsbEF0dHIoCisgICAgICBMTFZNQ29udGV4dCAmQywgdW5zaWduZWQgSW5kZXgsIHVpbnQ2NF90IEJ5dGVzKSBjb25zdDsKIAogICAvLy8gQWRkIHRoZSBkZXJlZmVyZW5jZWFibGVfb3JfbnVsbCBhdHRyaWJ1dGUgdG8gdGhlIGF0dHJpYnV0ZSBzZXQgYXQKICAgLy8vIHRoZSBnaXZlbiBhcmcgaW5kZXguIFJldHVybnMgYSBuZXcgbGlzdCBiZWNhdXNlIGF0dHJpYnV0ZSBsaXN0cyBhcmUKICAgLy8vIGltbXV0YWJsZS4KLSAgQXR0cmlidXRlTGlzdCBhZGREZXJlZmVyZW5jZWFibGVPck51bGxQYXJhbUF0dHIoTExWTUNvbnRleHQgJkMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIEFyZ05vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBCeXRlcykgY29uc3QgeworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVMaXN0IGFkZERlcmVmZXJlbmNlYWJsZU9yTnVsbFBhcmFtQXR0cigKKyAgICAgIExMVk1Db250ZXh0ICZDLCB1bnNpZ25lZCBBcmdObywgdWludDY0X3QgQnl0ZXMpIGNvbnN0IHsKICAgICByZXR1cm4gYWRkRGVyZWZlcmVuY2VhYmxlT3JOdWxsQXR0cihDLCBBcmdObyArIEZpcnN0QXJnSW5kZXgsIEJ5dGVzKTsKICAgfQogCiAgIC8vLyBBZGQgdGhlIGFsbG9jc2l6ZSBhdHRyaWJ1dGUgdG8gdGhlIGF0dHJpYnV0ZSBzZXQgYXQgdGhlIGdpdmVuIGluZGV4LgogICAvLy8gUmV0dXJucyBhIG5ldyBsaXN0IGJlY2F1c2UgYXR0cmlidXRlIGxpc3RzIGFyZSBpbW11dGFibGUuCi0gIEF0dHJpYnV0ZUxpc3QgYWRkQWxsb2NTaXplQXR0cihMTFZNQ29udGV4dCAmQywgdW5zaWduZWQgSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBFbGVtU2l6ZUFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9wdGlvbmFsPHVuc2lnbmVkPiAmTnVtRWxlbXNBcmcpOworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVMaXN0CisgIGFkZEFsbG9jU2l6ZUF0dHIoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEluZGV4LCB1bnNpZ25lZCBFbGVtU2l6ZUFyZywKKyAgICAgICAgICAgICAgICAgICBjb25zdCBPcHRpb25hbDx1bnNpZ25lZD4gJk51bUVsZW1zQXJnKTsKIAogICAvLy8gQWRkIHRoZSBhbGxvY3NpemUgYXR0cmlidXRlIHRvIHRoZSBhdHRyaWJ1dGUgc2V0IGF0IHRoZSBnaXZlbiBhcmcgaW5kZXguCiAgIC8vLyBSZXR1cm5zIGEgbmV3IGxpc3QgYmVjYXVzZSBhdHRyaWJ1dGUgbGlzdHMgYXJlIGltbXV0YWJsZS4KLSAgQXR0cmlidXRlTGlzdCBhZGRBbGxvY1NpemVQYXJhbUF0dHIoTExWTUNvbnRleHQgJkMsIHVuc2lnbmVkIEFyZ05vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBFbGVtU2l6ZUFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgT3B0aW9uYWw8dW5zaWduZWQ+ICZOdW1FbGVtc0FyZykgeworICBMTFZNX05PRElTQ0FSRCBBdHRyaWJ1dGVMaXN0CisgIGFkZEFsbG9jU2l6ZVBhcmFtQXR0cihMTFZNQ29udGV4dCAmQywgdW5zaWduZWQgQXJnTm8sIHVuc2lnbmVkIEVsZW1TaXplQXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgT3B0aW9uYWw8dW5zaWduZWQ+ICZOdW1FbGVtc0FyZykgewogICAgIHJldHVybiBhZGRBbGxvY1NpemVBdHRyKEMsIEFyZ05vICsgRmlyc3RBcmdJbmRleCwgRWxlbVNpemVBcmcsIE51bUVsZW1zQXJnKTsKICAgfQogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0F1dG9VcGdyYWRlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0F1dG9VcGdyYWRlLmgKaW5kZXggOGNmNTc0Yy4uOTkwMDMxOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9BdXRvVXBncmFkZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQXV0b1VwZ3JhZGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBBdXRvVXBncmFkZS5oIC0gQXV0b1VwZ3JhZGUgSGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9CYXNpY0Jsb2NrLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0Jhc2ljQmxvY2suaAppbmRleCAxZWUxOTk3Li5mZDllZmI4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0Jhc2ljQmxvY2suaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0Jhc2ljQmxvY2suaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0Jhc2ljQmxvY2suaCAtIFJlcHJlc2VudCBhIGJhc2ljIGJsb2NrIGluIHRoZSBWTSAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzgsNyArMzcsNiBAQAogY2xhc3MgTExWTUNvbnRleHQ7CiBjbGFzcyBNb2R1bGU7CiBjbGFzcyBQSElOb2RlOwotY2xhc3MgVGVybWluYXRvckluc3Q7CiBjbGFzcyBWYWx1ZVN5bWJvbFRhYmxlOwogCiAvLy8gTExWTSBCYXNpYyBCbG9jayBSZXByZXNlbnRhdGlvbgpAQCAtNTAsMTIgKzQ4LDEyIEBACiAvLy8gcmVwcmVzZW50cyBhIGxhYmVsIHRvIHdoaWNoIGEgYnJhbmNoIGNhbiBqdW1wLgogLy8vCiAvLy8gQSB3ZWxsIGZvcm1lZCBiYXNpYyBibG9jayBpcyBmb3JtZWQgb2YgYSBsaXN0IG9mIG5vbi10ZXJtaW5hdGluZwotLy8vIGluc3RydWN0aW9ucyBmb2xsb3dlZCBieSBhIHNpbmdsZSBUZXJtaW5hdG9ySW5zdCBpbnN0cnVjdGlvbi4KLS8vLyBUZXJtaW5hdG9ySW5zdCdzIG1heSBub3Qgb2NjdXIgaW4gdGhlIG1pZGRsZSBvZiBiYXNpYyBibG9ja3MsIGFuZCBtdXN0Ci0vLy8gdGVybWluYXRlIHRoZSBibG9ja3MuIFRoZSBCYXNpY0Jsb2NrIGNsYXNzIGFsbG93cyBtYWxmb3JtZWQgYmFzaWMgYmxvY2tzIHRvCi0vLy8gb2NjdXIgYmVjYXVzZSBpdCBtYXkgYmUgdXNlZnVsIGluIHRoZSBpbnRlcm1lZGlhdGUgc3RhZ2Ugb2YgY29uc3RydWN0aW5nIG9yCi0vLy8gbW9kaWZ5aW5nIGEgcHJvZ3JhbS4gSG93ZXZlciwgdGhlIHZlcmlmaWVyIHdpbGwgZW5zdXJlIHRoYXQgYmFzaWMgYmxvY2tzCi0vLy8gYXJlICJ3ZWxsIGZvcm1lZCIuCisvLy8gaW5zdHJ1Y3Rpb25zIGZvbGxvd2VkIGJ5IGEgc2luZ2xlIHRlcm1pbmF0b3IgaW5zdHJ1Y3Rpb24uIFRlcm1pbmF0b3IKKy8vLyBpbnN0cnVjdGlvbnMgbWF5IG5vdCBvY2N1ciBpbiB0aGUgbWlkZGxlIG9mIGJhc2ljIGJsb2NrcywgYW5kIG11c3QgdGVybWluYXRlCisvLy8gdGhlIGJsb2Nrcy4gVGhlIEJhc2ljQmxvY2sgY2xhc3MgYWxsb3dzIG1hbGZvcm1lZCBiYXNpYyBibG9ja3MgdG8gb2NjdXIKKy8vLyBiZWNhdXNlIGl0IG1heSBiZSB1c2VmdWwgaW4gdGhlIGludGVybWVkaWF0ZSBzdGFnZSBvZiBjb25zdHJ1Y3Rpbmcgb3IKKy8vLyBtb2RpZnlpbmcgYSBwcm9ncmFtLiBIb3dldmVyLCB0aGUgdmVyaWZpZXIgd2lsbCBlbnN1cmUgdGhhdCBiYXNpYyBibG9ja3MgYXJlCisvLy8gIndlbGwgZm9ybWVkIi4KIGNsYXNzIEJhc2ljQmxvY2sgZmluYWwgOiBwdWJsaWMgVmFsdWUsIC8vIEJhc2ljIGJsb2NrcyBhcmUgZGF0YSBvYmplY3RzIGFsc28KICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgaWxpc3Rfbm9kZV93aXRoX3BhcmVudDxCYXNpY0Jsb2NrLCBGdW5jdGlvbj4gewogcHVibGljOgpAQCAtMTIwLDEwICsxMTgsMTAgQEAKIAogICAvLy8gUmV0dXJucyB0aGUgdGVybWluYXRvciBpbnN0cnVjdGlvbiBpZiB0aGUgYmxvY2sgaXMgd2VsbCBmb3JtZWQgb3IgbnVsbAogICAvLy8gaWYgdGhlIGJsb2NrIGlzIG5vdCB3ZWxsIGZvcm1lZC4KLSAgY29uc3QgVGVybWluYXRvckluc3QgKmdldFRlcm1pbmF0b3IoKSBjb25zdCBMTFZNX1JFQURPTkxZOwotICBUZXJtaW5hdG9ySW5zdCAqZ2V0VGVybWluYXRvcigpIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxUZXJtaW5hdG9ySW5zdCAqPigKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQmxvY2sgKj4odGhpcyktPmdldFRlcm1pbmF0b3IoKSk7CisgIGNvbnN0IEluc3RydWN0aW9uICpnZXRUZXJtaW5hdG9yKCkgY29uc3QgTExWTV9SRUFET05MWTsKKyAgSW5zdHJ1Y3Rpb24gKmdldFRlcm1pbmF0b3IoKSB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SW5zdHJ1Y3Rpb24gKj4oCisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQmxvY2sgKj4odGhpcyktPmdldFRlcm1pbmF0b3IoKSk7CiAgIH0KIAogICAvLy8gUmV0dXJucyB0aGUgY2FsbCBpbnN0cnVjdGlvbiBjYWxsaW5nIFxAbGx2bS5leHBlcmltZW50YWwuZGVvcHRpbWl6ZQpAQCAtMjM4LDYgKzIzNiwxMiBAQAogICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0Jsb2NrICo+KHRoaXMpLT5nZXRVbmlxdWVQcmVkZWNlc3NvcigpKTsKICAgfQogCisgIC8vLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGJsb2NrIGhhcyBleGFjdGx5IE4gcHJlZGVjZXNzb3JzLgorICBib29sIGhhc05QcmVkZWNlc3NvcnModW5zaWduZWQgTikgY29uc3Q7CisKKyAgLy8vIFJldHVybiB0cnVlIGlmIHRoaXMgYmxvY2sgaGFzIE4gcHJlZGVjZXNzb3JzIG9yIG1vcmUuCisgIGJvb2wgaGFzTlByZWRlY2Vzc29yc09yTW9yZSh1bnNpZ25lZCBOKSBjb25zdDsKKwogICAvLy8gUmV0dXJuIHRoZSBzdWNjZXNzb3Igb2YgdGhpcyBibG9jayBpZiBpdCBoYXMgYSBzaW5nbGUgc3VjY2Vzc29yLgogICAvLy8gT3RoZXJ3aXNlIHJldHVybiBhIG51bGwgcG9pbnRlci4KICAgLy8vCkBAIC0zNTgsNyArMzYyLDcgQEAKICAgLy8vIFRoaXMgaXMgYWN0dWFsbHkgbm90IHVzZWQgdG8gdXBkYXRlIHRoZSBQcmVkZWNlc3NvciBsaXN0LCBidXQgaXMgYWN0dWFsbHkKICAgLy8vIHVzZWQgdG8gdXBkYXRlIHRoZSBQSEkgbm9kZXMgdGhhdCByZXNpZGUgaW4gdGhlIGJsb2NrLiAgTm90ZSB0aGF0IHRoaXMKICAgLy8vIHNob3VsZCBiZSBjYWxsZWQgd2hpbGUgdGhlIHByZWRlY2Vzc29yIHN0aWxsIHJlZmVycyB0byB0aGlzIGJsb2NrLgotICB2b2lkIHJlbW92ZVByZWRlY2Vzc29yKEJhc2ljQmxvY2sgKlByZWQsIGJvb2wgRG9udERlbGV0ZVVzZWxlc3NQSElzID0gZmFsc2UpOworICB2b2lkIHJlbW92ZVByZWRlY2Vzc29yKEJhc2ljQmxvY2sgKlByZWQsIGJvb2wgS2VlcE9uZUlucHV0UEhJcyA9IGZhbHNlKTsKIAogICBib29sIGNhblNwbGl0UHJlZGVjZXNzb3JzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ0ZHLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0NGRy5oCmluZGV4IGZkMzg0ZWYuLjU1YWZmNzEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ0ZHLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9DRkcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDRkcuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKQEAgLTczLDcgKzcyLDcgQEAKIAogICBpbmxpbmUgcmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsKICAgICBhc3NlcnQoIUl0LmF0RW5kKCkgJiYgInByZWRfaXRlcmF0b3Igb3V0IG9mIHJhbmdlISIpOwotICAgIHJldHVybiBjYXN0PFRlcm1pbmF0b3JJbnN0PigqSXQpLT5nZXRQYXJlbnQoKTsKKyAgICByZXR1cm4gY2FzdDxJbnN0cnVjdGlvbj4oKkl0KS0+Z2V0UGFyZW50KCk7CiAgIH0KICAgaW5saW5lIHBvaW50ZXIgKm9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmb3BlcmF0b3IqKCk7IH0KIApAQCAtMTE3LDYgKzExNiw4IEBACiBpbmxpbmUgYm9vbCBwcmVkX2VtcHR5KGNvbnN0IEJhc2ljQmxvY2sgKkJCKSB7CiAgIHJldHVybiBwcmVkX2JlZ2luKEJCKSA9PSBwcmVkX2VuZChCQik7CiB9CisvLy8gR2V0IHRoZSBudW1iZXIgb2YgcHJlZGVjZXNzb3JzIG9mIFxwIEJCLiBUaGlzIGlzIGEgbGluZWFyIHRpbWUgb3BlcmF0aW9uLgorLy8vIFVzZSBccmVmIEJhc2ljQmxvY2s6Omhhc05QcmVkZWNlc3NvcnMoKSBvciBoYXNOUHJlZGVjZXNzb3JzT3JNb3JlIGlmIGFibGUuCiBpbmxpbmUgdW5zaWduZWQgcHJlZF9zaXplKGNvbnN0IEJhc2ljQmxvY2sgKkJCKSB7CiAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKHByZWRfYmVnaW4oQkIpLCBwcmVkX2VuZChCQikpOwogfQpAQCAtMjM2LDEwICsyMzcsNiBAQAogICB9CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RydWN0IGlzUG9kTGlrZTxTdWNjSXRlcmF0b3I8VCwgVT4+IHsKLSAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBpc1BvZExpa2U8VD46OnZhbHVlOwotfTsKLQogdXNpbmcgc3VjY19pdGVyYXRvciA9IFN1Y2NJdGVyYXRvcjxJbnN0cnVjdGlvbiwgQmFzaWNCbG9jaz47CiB1c2luZyBzdWNjX2NvbnN0X2l0ZXJhdG9yID0gU3VjY0l0ZXJhdG9yPGNvbnN0IEluc3RydWN0aW9uLCBjb25zdCBCYXNpY0Jsb2NrPjsKIHVzaW5nIHN1Y2NfcmFuZ2UgPSBpdGVyYXRvcl9yYW5nZTxzdWNjX2l0ZXJhdG9yPjsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ0ZHRGlmZi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9DRkdEaWZmLmgKaW5kZXggZGE0MzczZi4uNTdiNjJkZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9DRkdEaWZmLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9DRkdEaWZmLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ0ZHRGlmZi5oIC0gRGVmaW5lIGEgQ0ZHIHNuYXBzaG90LiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ2FsbFNpdGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ2FsbFNpdGUuaAppbmRleCAyMTYyY2NiLi4xNDU0ODc0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0NhbGxTaXRlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9DYWxsU2l0ZS5oCkBAIC0xLDE1ICsxLDE0IEBACiAvLz09PS0gQ2FsbFNpdGUuaCAtIEFic3RyYWN0IENhbGwgJiBJbnZva2UgaW5zdHJzIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KIC8vIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBDYWxsU2l0ZSBjbGFzcywgd2hpY2ggaXMgYSBoYW5keSB3cmFwcGVyIGZvciBjb2RlIHRoYXQKLS8vIHdhbnRzIHRvIHRyZWF0IENhbGwgYW5kIEludm9rZSBpbnN0cnVjdGlvbnMgaW4gYSBnZW5lcmljIHdheS4gV2hlbiBpbiBub24tCi0vLyBtdXRhdGlvbiBjb250ZXh0IChlLmcuIGFuIGFuYWx5c2lzKSBJbW11dGFibGVDYWxsU2l0ZSBzaG91bGQgYmUgdXNlZC4KKy8vIHdhbnRzIHRvIHRyZWF0IENhbGwsIEludm9rZSBhbmQgQ2FsbEJyIGluc3RydWN0aW9ucyBpbiBhIGdlbmVyaWMgd2F5LiBXaGVuCisvLyBpbiBub24tbXV0YXRpb24gY29udGV4dCAoZS5nLiBhbiBhbmFseXNpcykgSW1tdXRhYmxlQ2FsbFNpdGUgc2hvdWxkIGJlIHVzZWQuCiAvLyBGaW5hbGx5LCB3aGVuIHNvbWUgZGVncmVlIG9mIGN1c3RvbWl6YXRpb24gaXMgbmVjZXNzYXJ5IGJldHdlZW4gdGhlc2UgdHdvCiAvLyBleHRyZW1lcywgQ2FsbFNpdGVCYXNlPD4gY2FuIGJlIHN1cHBsaWVkIHdpdGggZmluZS10dW5lZCBwYXJhbWV0ZXJzLgogLy8KQEAgLTE4LDcgKzE3LDcgQEAKIC8vIFRoZXkgYXJlIGVmZmljaWVudGx5IGNvcHlhYmxlLCBhc3NpZ25hYmxlIGFuZCBjb25zdHJ1Y3RhYmxlLCB3aXRoIGNvc3QKIC8vIGVxdWl2YWxlbnQgdG8gY29weWluZyBhIHBvaW50ZXIgKG5vdGljZSB0aGF0IHRoZXkgaGF2ZSBvbmx5IGEgc2luZ2xlIGRhdGEKIC8vIG1lbWJlcikuIFRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBjYXJyaWVzIGEgZmxhZyB3aGljaCBpbmRpY2F0ZXMgd2hpY2ggb2YKLS8vIHRoZSB0d28gdmFyaWFudHMgaXMgZW5jbG9zZWQuIFRoaXMgYWxsb3dzIGZvciBjaGVhcGVyIGNoZWNrcyB3aGVuIHZhcmlvdXMKKy8vIHRoZSB0aHJlZSB2YXJpYW50cyBpcyBlbmNsb3NlZC4gVGhpcyBhbGxvd3MgZm9yIGNoZWFwZXIgY2hlY2tzIHdoZW4gdmFyaW91cwogLy8gYWNjZXNzb3JzIG9mIENhbGxTaXRlIGFyZSBlbXBsb3llZC4KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwpAQCAtNDksNDUgKzQ4LDUwIEBACiBlbnVtIElEIDogdW5zaWduZWQ7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBGdW5UeSA9IGNvbnN0IEZ1bmN0aW9uLAotICAgICAgICAgIHR5cGVuYW1lIEJCVHkgPSBjb25zdCBCYXNpY0Jsb2NrLAotICAgICAgICAgIHR5cGVuYW1lIFZhbFR5ID0gY29uc3QgVmFsdWUsCi0gICAgICAgICAgdHlwZW5hbWUgVXNlclR5ID0gY29uc3QgVXNlciwKLSAgICAgICAgICB0eXBlbmFtZSBVc2VUeSA9IGNvbnN0IFVzZSwKLSAgICAgICAgICB0eXBlbmFtZSBJbnN0clR5ID0gY29uc3QgSW5zdHJ1Y3Rpb24sCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuVHkgPSBjb25zdCBGdW5jdGlvbiwgdHlwZW5hbWUgQkJUeSA9IGNvbnN0IEJhc2ljQmxvY2ssCisgICAgICAgICAgdHlwZW5hbWUgVmFsVHkgPSBjb25zdCBWYWx1ZSwgdHlwZW5hbWUgVXNlclR5ID0gY29uc3QgVXNlciwKKyAgICAgICAgICB0eXBlbmFtZSBVc2VUeSA9IGNvbnN0IFVzZSwgdHlwZW5hbWUgSW5zdHJUeSA9IGNvbnN0IEluc3RydWN0aW9uLAogICAgICAgICAgIHR5cGVuYW1lIENhbGxUeSA9IGNvbnN0IENhbGxJbnN0LAogICAgICAgICAgIHR5cGVuYW1lIEludm9rZVR5ID0gY29uc3QgSW52b2tlSW5zdCwKKyAgICAgICAgICB0eXBlbmFtZSBDYWxsQnJUeSA9IGNvbnN0IENhbGxCckluc3QsCiAgICAgICAgICAgdHlwZW5hbWUgSXRlclR5ID0gVXNlcjo6Y29uc3Rfb3BfaXRlcmF0b3I+CiBjbGFzcyBDYWxsU2l0ZUJhc2UgewogcHJvdGVjdGVkOgotICBQb2ludGVySW50UGFpcjxJbnN0clR5KiwgMSwgYm9vbD4gSTsKKyAgUG9pbnRlckludFBhaXI8SW5zdHJUeSAqLCAyLCBpbnQ+IEk7CiAKICAgQ2FsbFNpdGVCYXNlKCkgPSBkZWZhdWx0OwotICBDYWxsU2l0ZUJhc2UoQ2FsbFR5ICpDSSkgOiBJKENJLCB0cnVlKSB7IGFzc2VydChDSSk7IH0KLSAgQ2FsbFNpdGVCYXNlKEludm9rZVR5ICpJSSkgOiBJKElJLCBmYWxzZSkgeyBhc3NlcnQoSUkpOyB9CisgIENhbGxTaXRlQmFzZShDYWxsVHkgKkNJKSA6IEkoQ0ksIDEpIHsgYXNzZXJ0KENJKTsgfQorICBDYWxsU2l0ZUJhc2UoSW52b2tlVHkgKklJKSA6IEkoSUksIDApIHsgYXNzZXJ0KElJKTsgfQorICBDYWxsU2l0ZUJhc2UoQ2FsbEJyVHkgKkNCSSkgOiBJKENCSSwgMikgeyBhc3NlcnQoQ0JJKTsgfQogICBleHBsaWNpdCBDYWxsU2l0ZUJhc2UoVmFsVHkgKklJKSB7ICp0aGlzID0gZ2V0KElJKTsgfQogCiBwcml2YXRlOgogICAvLy8gVGhpcyBzdGF0aWMgbWV0aG9kIGlzIGxpa2UgYSBjb25zdHJ1Y3Rvci4gSXQgd2lsbCBjcmVhdGUgYW4gYXBwcm9wcmlhdGUKLSAgLy8vIGNhbGwgc2l0ZSBmb3IgYSBDYWxsIG9yIEludm9rZSBpbnN0cnVjdGlvbiwgYnV0IGl0IGNhbiBhbHNvIGNyZWF0ZSBhIG51bGwKLSAgLy8vIGluaXRpYWxpemVkIENhbGxTaXRlQmFzZSBvYmplY3QgZm9yIHNvbWV0aGluZyB3aGljaCBpcyBOT1QgYSBjYWxsIHNpdGUuCisgIC8vLyBjYWxsIHNpdGUgZm9yIGEgQ2FsbCwgSW52b2tlIG9yIENhbGxCciBpbnN0cnVjdGlvbiwgYnV0IGl0IGNhbiBhbHNvIGNyZWF0ZQorICAvLy8gYSBudWxsIGluaXRpYWxpemVkIENhbGxTaXRlQmFzZSBvYmplY3QgZm9yIHNvbWV0aGluZyB3aGljaCBpcyBOT1QgYSBjYWxsCisgIC8vLyBzaXRlLgogICBzdGF0aWMgQ2FsbFNpdGVCYXNlIGdldChWYWxUeSAqVikgewogICAgIGlmIChJbnN0clR5ICpJSSA9IGR5bl9jYXN0PEluc3RyVHk+KFYpKSB7CiAgICAgICBpZiAoSUktPmdldE9wY29kZSgpID09IEluc3RydWN0aW9uOjpDYWxsKQogICAgICAgICByZXR1cm4gQ2FsbFNpdGVCYXNlKHN0YXRpY19jYXN0PENhbGxUeSo+KElJKSk7Ci0gICAgICBlbHNlIGlmIChJSS0+Z2V0T3Bjb2RlKCkgPT0gSW5zdHJ1Y3Rpb246Okludm9rZSkKKyAgICAgIGlmIChJSS0+Z2V0T3Bjb2RlKCkgPT0gSW5zdHJ1Y3Rpb246Okludm9rZSkKICAgICAgICAgcmV0dXJuIENhbGxTaXRlQmFzZShzdGF0aWNfY2FzdDxJbnZva2VUeSo+KElJKSk7CisgICAgICBpZiAoSUktPmdldE9wY29kZSgpID09IEluc3RydWN0aW9uOjpDYWxsQnIpCisgICAgICAgIHJldHVybiBDYWxsU2l0ZUJhc2Uoc3RhdGljX2Nhc3Q8Q2FsbEJyVHkgKj4oSUkpKTsKICAgICB9CiAgICAgcmV0dXJuIENhbGxTaXRlQmFzZSgpOwogICB9CiAKIHB1YmxpYzoKLSAgLy8vIFJldHVybiB0cnVlIGlmIGEgQ2FsbEluc3QgaXMgZW5jbG9zZWQuIE5vdGUgdGhhdCAhaXNDYWxsKCkgZG9lcyBub3QgbWVhbgotICAvLy8gYW4gSW52b2tlSW5zdCBpcyBlbmNsb3NlZC4gSXQgbWF5IGFsc28gc2lnbmlmeSBhIE5VTEwgaW5zdHJ1Y3Rpb24gcG9pbnRlci4KLSAgYm9vbCBpc0NhbGwoKSBjb25zdCB7IHJldHVybiBJLmdldEludCgpOyB9CisgIC8vLyBSZXR1cm4gdHJ1ZSBpZiBhIENhbGxJbnN0IGlzIGVuY2xvc2VkLgorICBib29sIGlzQ2FsbCgpIGNvbnN0IHsgcmV0dXJuIEkuZ2V0SW50KCkgPT0gMTsgfQogCi0gIC8vLyBSZXR1cm4gdHJ1ZSBpZiBhIEludm9rZUluc3QgaXMgZW5jbG9zZWQuCi0gIGJvb2wgaXNJbnZva2UoKSBjb25zdCB7IHJldHVybiBnZXRJbnN0cnVjdGlvbigpICYmICFJLmdldEludCgpOyB9CisgIC8vLyBSZXR1cm4gdHJ1ZSBpZiBhIEludm9rZUluc3QgaXMgZW5jbG9zZWQuICFJLmdldEludCgpIG1heSBhbHNvIHNpZ25pZnkgYQorICAvLy8gTlVMTCBpbnN0cnVjdGlvbiBwb2ludGVyLCBzbyBjaGVjayB0aGF0LgorICBib29sIGlzSW52b2tlKCkgY29uc3QgeyByZXR1cm4gZ2V0SW5zdHJ1Y3Rpb24oKSAmJiBJLmdldEludCgpID09IDA7IH0KKworICAvLy8gUmV0dXJuIHRydWUgaWYgYSBDYWxsQnJJbnN0IGlzIGVuY2xvc2VkLgorICBib29sIGlzQ2FsbEJyKCkgY29uc3QgeyByZXR1cm4gSS5nZXRJbnQoKSA9PSAyOyB9CiAKICAgSW5zdHJUeSAqZ2V0SW5zdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBJLmdldFBvaW50ZXIoKTsgfQogICBJbnN0clR5ICpvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gSS5nZXRQb2ludGVyKCk7IH0KQEAgLTk4LDcgKzEwMiw3IEBACiAKICAgLy8vIFJldHVybiB0aGUgcG9pbnRlciB0byBmdW5jdGlvbiB0aGF0IGlzIGJlaW5nIGNhbGxlZC4KICAgVmFsVHkgKmdldENhbGxlZFZhbHVlKCkgY29uc3QgewotICAgIGFzc2VydChnZXRJbnN0cnVjdGlvbigpICYmICJOb3QgYSBjYWxsIG9yIGludm9rZSBpbnN0cnVjdGlvbiEiKTsKKyAgICBhc3NlcnQoZ2V0SW5zdHJ1Y3Rpb24oKSAmJiAiTm90IGEgY2FsbCwgaW52b2tlIG9yIGNhbGxiciBpbnN0cnVjdGlvbiEiKTsKICAgICByZXR1cm4gKmdldENhbGxlZSgpOwogICB9CiAKQEAgLTExNSwxNiArMTE5LDE5IEBACiAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGlzYTxGdW5UeT4oVikgfHwgaXNhPENvbnN0YW50PihWKSkKICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY29uc3QgQ2FsbEluc3QgKkNJID0gZHluX2Nhc3Q8Q2FsbEluc3Q+KGdldEluc3RydWN0aW9uKCkpKSB7Ci0gICAgICBpZiAoQ0ktPmlzSW5saW5lQXNtKCkpCisgICAgaWYgKGNvbnN0IENhbGxCYXNlICpDQiA9IGR5bl9jYXN0PENhbGxCYXNlPihnZXRJbnN0cnVjdGlvbigpKSkKKyAgICAgIGlmIChDQi0+aXNJbmxpbmVBc20oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCi0gIC8vLyBTZXQgdGhlIGNhbGxlZSB0byB0aGUgc3BlY2lmaWVkIHZhbHVlLgorICAvLy8gU2V0IHRoZSBjYWxsZWUgdG8gdGhlIHNwZWNpZmllZCB2YWx1ZS4gIFVubGlrZSB0aGUgZnVuY3Rpb24gb2YgdGhlIHNhbWUKKyAgLy8vIG5hbWUgb24gQ2FsbEJhc2UsIGRvZXMgbm90IG1vZGlmeSB0aGUgdHlwZSEKICAgdm9pZCBzZXRDYWxsZWRGdW5jdGlvbihWYWx1ZSAqVikgewotICAgIGFzc2VydChnZXRJbnN0cnVjdGlvbigpICYmICJOb3QgYSBjYWxsIG9yIGludm9rZSBpbnN0cnVjdGlvbiEiKTsKKyAgICBhc3NlcnQoZ2V0SW5zdHJ1Y3Rpb24oKSAmJiAiTm90IGEgY2FsbCwgY2FsbGJyLCBvciBpbnZva2UgaW5zdHJ1Y3Rpb24hIik7CisgICAgYXNzZXJ0KGNhc3Q8UG9pbnRlclR5cGU+KFYtPmdldFR5cGUoKSktPmdldEVsZW1lbnRUeXBlKCkgPT0KKyAgICAgICAgICAgICAgIGNhc3Q8Q2FsbEJhc2U+KGdldEluc3RydWN0aW9uKCkpLT5nZXRGdW5jdGlvblR5cGUoKSAmJgorICAgICAgICAgICAiTmV3IGNhbGxlZSB0eXBlIGRvZXMgbm90IG1hdGNoIEZ1bmN0aW9uVHlwZSBvbiBjYWxsIik7CiAgICAgKmdldENhbGxlZSgpID0gVjsKICAgfQogCkBAIC0xODksNyArMTk2LDcgQEAKICAgfQogCiAgIHZvaWQgc2V0QXJndW1lbnQodW5zaWduZWQgQXJnTm8sIFZhbHVlKiBuZXdWYWwpIHsKLSAgICBhc3NlcnQoZ2V0SW5zdHJ1Y3Rpb24oKSAmJiAiTm90IGEgY2FsbCBvciBpbnZva2UgaW5zdHJ1Y3Rpb24hIik7CisgICAgYXNzZXJ0KGdldEluc3RydWN0aW9uKCkgJiYgIk5vdCBhIGNhbGwsIGludm9rZSBvciBjYWxsYnIgaW5zdHJ1Y3Rpb24hIik7CiAgICAgYXNzZXJ0KGFyZ19iZWdpbigpICsgQXJnTm8gPCBhcmdfZW5kKCkgJiYgIkFyZ3VtZW50ICMgb3V0IG9mIHJhbmdlISIpOwogICAgIGdldEluc3RydWN0aW9uKCktPnNldE9wZXJhbmQoQXJnTm8sIG5ld1ZhbCk7CiAgIH0KQEAgLTIwMyw3ICsyMTAsNyBAQAogICAvLy8gR2l2ZW4gYSB1c2UgZm9yIGFuIGFyZ3VtZW50LCBnZXQgdGhlIGFyZ3VtZW50IG51bWJlciB0aGF0IGNvcnJlc3BvbmRzIHRvCiAgIC8vLyBpdC4KICAgdW5zaWduZWQgZ2V0QXJndW1lbnRObyhjb25zdCBVc2UgKlUpIGNvbnN0IHsKLSAgICBhc3NlcnQoZ2V0SW5zdHJ1Y3Rpb24oKSAmJiAiTm90IGEgY2FsbCBvciBpbnZva2UgaW5zdHJ1Y3Rpb24hIik7CisgICAgYXNzZXJ0KGdldEluc3RydWN0aW9uKCkgJiYgIk5vdCBhIGNhbGwsIGludm9rZSBvciBjYWxsYnIgaW5zdHJ1Y3Rpb24hIik7CiAgICAgYXNzZXJ0KGlzQXJnT3BlcmFuZChVKSAmJiAiQXJndW1lbnQgIyBvdXQgb2YgcmFuZ2UhIik7CiAgICAgcmV0dXJuIFUgLSBhcmdfYmVnaW4oKTsKICAgfQpAQCAtMjI3LDcgKzIzNCw3IEBACiAgIC8vLyBHaXZlbiBhIHVzZSBmb3IgYSBkYXRhIG9wZXJhbmQsIGdldCB0aGUgZGF0YSBvcGVyYW5kIG51bWJlciB0aGF0CiAgIC8vLyBjb3JyZXNwb25kcyB0byBpdC4KICAgdW5zaWduZWQgZ2V0RGF0YU9wZXJhbmRObyhjb25zdCBVc2UgKlUpIGNvbnN0IHsKLSAgICBhc3NlcnQoZ2V0SW5zdHJ1Y3Rpb24oKSAmJiAiTm90IGEgY2FsbCBvciBpbnZva2UgaW5zdHJ1Y3Rpb24hIik7CisgICAgYXNzZXJ0KGdldEluc3RydWN0aW9uKCkgJiYgIk5vdCBhIGNhbGwsIGludm9rZSBvciBjYWxsYnIgaW5zdHJ1Y3Rpb24hIik7CiAgICAgYXNzZXJ0KGlzRGF0YU9wZXJhbmQoVSkgJiYgIkRhdGEgb3BlcmFuZCAjIG91dCBvZiByYW5nZSEiKTsKICAgICByZXR1cm4gVSAtIGRhdGFfb3BlcmFuZHNfYmVnaW4oKTsKICAgfQpAQCAtMjM3LDE4ICsyNDQsMTkgQEAKICAgdXNpbmcgZGF0YV9vcGVyYW5kX2l0ZXJhdG9yID0gSXRlclR5OwogCiAgIC8vLyBkYXRhX29wZXJhbmRzX2JlZ2luL2RhdGFfb3BlcmFuZHNfZW5kIC0gUmV0dXJuIGl0ZXJhdG9ycyBpdGVyYXRpbmcgb3ZlcgotICAvLy8gdGhlIGNhbGwgLyBpbnZva2UgYXJndW1lbnQgbGlzdCBhbmQgYnVuZGxlIG9wZXJhbmRzLiAgRm9yIGludm9rZXMsIHRoaXMgaXMKLSAgLy8vIHRoZSBzZXQgb2YgaW5zdHJ1Y3Rpb24gb3BlcmFuZHMgZXhjZXB0IHRoZSBpbnZva2UgdGFyZ2V0IGFuZCB0aGUgdHdvCi0gIC8vLyBzdWNjZXNzb3IgYmxvY2tzOyBhbmQgZm9yIGNhbGxzIHRoaXMgaXMgdGhlIHNldCBvZiBpbnN0cnVjdGlvbiBvcGVyYW5kcwotICAvLy8gZXhjZXB0IHRoZSBjYWxsIHRhcmdldC4KKyAgLy8vIHRoZSBjYWxsIC8gaW52b2tlIC8gY2FsbGJyIGFyZ3VtZW50IGxpc3QgYW5kIGJ1bmRsZSBvcGVyYW5kcy4gRm9yIGludm9rZXMsCisgIC8vLyB0aGlzIGlzIHRoZSBzZXQgb2YgaW5zdHJ1Y3Rpb24gb3BlcmFuZHMgZXhjZXB0IHRoZSBpbnZva2UgdGFyZ2V0IGFuZCB0aGUKKyAgLy8vIHR3byBzdWNjZXNzb3IgYmxvY2tzOyBmb3IgY2FsbHMgdGhpcyBpcyB0aGUgc2V0IG9mIGluc3RydWN0aW9uIG9wZXJhbmRzCisgIC8vLyBleGNlcHQgdGhlIGNhbGwgdGFyZ2V0OyBmb3IgY2FsbGJycyB0aGUgbnVtYmVyIG9mIGxhYmVscyB0byBza2lwIG11c3QgYmUKKyAgLy8vIGRldGVybWluZWQgZmlyc3QuCiAKICAgSXRlclR5IGRhdGFfb3BlcmFuZHNfYmVnaW4oKSBjb25zdCB7CiAgICAgYXNzZXJ0KGdldEluc3RydWN0aW9uKCkgJiYgIk5vdCBhIGNhbGwgb3IgaW52b2tlIGluc3RydWN0aW9uISIpOwotICAgIHJldHVybiAoKnRoaXMpLT5vcF9iZWdpbigpOworICAgIHJldHVybiBjYXN0PENhbGxCYXNlPihnZXRJbnN0cnVjdGlvbigpKS0+ZGF0YV9vcGVyYW5kc19iZWdpbigpOwogICB9CiAgIEl0ZXJUeSBkYXRhX29wZXJhbmRzX2VuZCgpIGNvbnN0IHsKICAgICBhc3NlcnQoZ2V0SW5zdHJ1Y3Rpb24oKSAmJiAiTm90IGEgY2FsbCBvciBpbnZva2UgaW5zdHJ1Y3Rpb24hIik7Ci0gICAgcmV0dXJuICgqdGhpcyktPm9wX2VuZCgpIC0gKGlzQ2FsbCgpID8gMSA6IDMpOworICAgIHJldHVybiBjYXN0PENhbGxCYXNlPihnZXRJbnN0cnVjdGlvbigpKS0+ZGF0YV9vcGVyYW5kc19lbmQoKTsKICAgfQogICBpdGVyYXRvcl9yYW5nZTxJdGVyVHk+IGRhdGFfb3BzKCkgY29uc3QgewogICAgIHJldHVybiBtYWtlX3JhbmdlKGRhdGFfb3BlcmFuZHNfYmVnaW4oKSwgZGF0YV9vcGVyYW5kc19lbmQoKSk7CkBAIC0yNzcsMTcgKzI4NSwxOSBAQAogICAgIHJldHVybiBpc0NhbGwoKSAmJiBjYXN0PENhbGxJbnN0PihnZXRJbnN0cnVjdGlvbigpKS0+aXNUYWlsQ2FsbCgpOwogICB9CiAKLSNkZWZpbmUgQ0FMTFNJVEVfREVMRUdBVEVfR0VUVEVSKE1FVEhPRCkgXAotICBJbnN0clR5ICpJSSA9IGdldEluc3RydWN0aW9uKCk7ICAgIFwKLSAgcmV0dXJuIGlzQ2FsbCgpICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgID8gY2FzdDxDYWxsSW5zdD4oSUkpLT5NRVRIT0QgICAgICAgICBcCi0gICAgOiBjYXN0PEludm9rZUluc3Q+KElJKS0+TUVUSE9ECisjZGVmaW5lIENBTExTSVRFX0RFTEVHQVRFX0dFVFRFUihNRVRIT0QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBJbnN0clR5ICpJSSA9IGdldEluc3RydWN0aW9uKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgcmV0dXJuIGlzQ2FsbCgpID8gY2FzdDxDYWxsSW5zdD4oSUkpLT5NRVRIT0QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICA6IGlzQ2FsbEJyKCkgPyBjYXN0PENhbGxCckluc3Q+KElJKS0+TUVUSE9EICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhc3Q8SW52b2tlSW5zdD4oSUkpLT5NRVRIT0QKIAotI2RlZmluZSBDQUxMU0lURV9ERUxFR0FURV9TRVRURVIoTUVUSE9EKSBcCi0gIEluc3RyVHkgKklJID0gZ2V0SW5zdHJ1Y3Rpb24oKTsgICAgXAotICBpZiAoaXNDYWxsKCkpICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgY2FzdDxDYWxsSW5zdD4oSUkpLT5NRVRIT0Q7ICAgICAgICAgIFwKLSAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBDQUxMU0lURV9ERUxFR0FURV9TRVRURVIoTUVUSE9EKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgSW5zdHJUeSAqSUkgPSBnZXRJbnN0cnVjdGlvbigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGlmIChpc0NhbGwoKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNhc3Q8Q2FsbEluc3Q+KElJKS0+TUVUSE9EOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZWxzZSBpZiAoaXNDYWxsQnIoKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2FzdDxDYWxsQnJJbnN0PihJSSktPk1FVEhPRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBjYXN0PEludm9rZUluc3Q+KElJKS0+TUVUSE9ECiAKICAgdW5zaWduZWQgZ2V0TnVtQXJnT3BlcmFuZHMoKSBjb25zdCB7CkBAIC0zMDMsOSArMzEzLDcgQEAKICAgfQogCiAgIGJvb2wgaXNJbmxpbmVBc20oKSBjb25zdCB7Ci0gICAgaWYgKGlzQ2FsbCgpKQotICAgICAgcmV0dXJuIGNhc3Q8Q2FsbEluc3Q+KGdldEluc3RydWN0aW9uKCkpLT5pc0lubGluZUFzbSgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gY2FzdDxDYWxsQmFzZT4oZ2V0SW5zdHJ1Y3Rpb24oKSktPmlzSW5saW5lQXNtKCk7CiAgIH0KIAogICAvLy8gR2V0IHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gb2YgdGhlIGNhbGwuCkBAIC0zODksMTAgKzM5NywxMCBAQAogICAvLy8gUmV0dXJuIHRydWUgaWYgdGhlIGRhdGEgb3BlcmFuZCBhdCBpbmRleCBccCBpIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaGFzCiAgIC8vLyB0aGUgYXR0cmlidXRlIFxwIEEuCiAgIC8vLwotICAvLy8gTm9ybWFsIGNhbGwgb3IgaW52b2tlIGFyZ3VtZW50cyBoYXZlIHBlciBvcGVyYW5kIGF0dHJpYnV0ZXMsIGFzIHNwZWNpZmllZAotICAvLy8gaW4gdGhlIGF0dHJpYnV0ZSBzZXQgYXR0YWNoZWQgdG8gdGhpcyBpbnN0cnVjdGlvbiwgd2hpbGUgb3BlcmFuZCBidW5kbGUKLSAgLy8vIG9wZXJhbmRzIG1heSBoYXZlIHNvbWUgYXR0cmlidXRlcyBpbXBsaWVkIGJ5IHRoZSB0eXBlIG9mIGl0cyBjb250YWluaW5nCi0gIC8vLyBvcGVyYW5kIGJ1bmRsZS4KKyAgLy8vIE5vcm1hbCBjYWxsLCBpbnZva2Ugb3IgY2FsbGJyIGFyZ3VtZW50cyBoYXZlIHBlciBvcGVyYW5kIGF0dHJpYnV0ZXMsIGFzCisgIC8vLyBzcGVjaWZpZWQgaW4gdGhlIGF0dHJpYnV0ZSBzZXQgYXR0YWNoZWQgdG8gdGhpcyBpbnN0cnVjdGlvbiwgd2hpbGUgb3BlcmFuZAorICAvLy8gYnVuZGxlIG9wZXJhbmRzIG1heSBoYXZlIHNvbWUgYXR0cmlidXRlcyBpbXBsaWVkIGJ5IHRoZSB0eXBlIG9mIGl0cworICAvLy8gY29udGFpbmluZyBvcGVyYW5kIGJ1bmRsZS4KICAgYm9vbCBkYXRhT3BlcmFuZEhhc0ltcGxpZWRBdHRyKHVuc2lnbmVkIGksIEF0dHJpYnV0ZTo6QXR0cktpbmQgS2luZCkgY29uc3QgewogICAgIENBTExTSVRFX0RFTEVHQVRFX0dFVFRFUihkYXRhT3BlcmFuZEhhc0ltcGxpZWRBdHRyKGksIEtpbmQpKTsKICAgfQpAQCAtNTgwLDEzICs1ODgsOSBAQAogI3VuZGVmIENBTExTSVRFX0RFTEVHQVRFX1NFVFRFUgogCiAgIHZvaWQgZ2V0T3BlcmFuZEJ1bmRsZXNBc0RlZnMoU21hbGxWZWN0b3JJbXBsPE9wZXJhbmRCdW5kbGVEZWY+ICZEZWZzKSBjb25zdCB7Ci0gICAgY29uc3QgSW5zdHJ1Y3Rpb24gKklJID0gZ2V0SW5zdHJ1Y3Rpb24oKTsKICAgICAvLyBTaW5jZSB0aGlzIGlzIGFjdHVhbGx5IGEgZ2V0dGVyIHRoYXQgImxvb2tzIGxpa2UiIGEgc2V0dGVyLCBkb24ndCB1c2UgdGhlCiAgICAgLy8gYWJvdmUgbWFjcm9zIHRvIGF2b2lkIGNvbmZ1c2lvbi4KLSAgICBpZiAoaXNDYWxsKCkpCi0gICAgICBjYXN0PENhbGxJbnN0PihJSSktPmdldE9wZXJhbmRCdW5kbGVzQXNEZWZzKERlZnMpOwotICAgIGVsc2UKLSAgICAgIGNhc3Q8SW52b2tlSW5zdD4oSUkpLT5nZXRPcGVyYW5kQnVuZGxlc0FzRGVmcyhEZWZzKTsKKyAgICBjYXN0PENhbGxCYXNlPihnZXRJbnN0cnVjdGlvbigpKS0+Z2V0T3BlcmFuZEJ1bmRsZXNBc0RlZnMoRGVmcyk7CiAgIH0KIAogICAvLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBkYXRhIG9wZXJhbmQgaXMgbm90IGNhcHR1cmVkLgpAQCAtNjU2LDIxICs2NjAsMTkgQEAKIAogcHJpdmF0ZToKICAgSXRlclR5IGdldENhbGxlZSgpIGNvbnN0IHsKLSAgICBpZiAoaXNDYWxsKCkpIC8vIFNraXAgQ2FsbGVlCi0gICAgICByZXR1cm4gY2FzdDxDYWxsSW5zdD4oZ2V0SW5zdHJ1Y3Rpb24oKSktPm9wX2VuZCgpIC0gMTsKLSAgICBlbHNlIC8vIFNraXAgQkIsIEJCLCBDYWxsZWUKLSAgICAgIHJldHVybiBjYXN0PEludm9rZUluc3Q+KGdldEluc3RydWN0aW9uKCkpLT5vcF9lbmQoKSAtIDM7CisgICAgcmV0dXJuIGNhc3Q8Q2FsbEJhc2U+KGdldEluc3RydWN0aW9uKCkpLT5vcF9lbmQoKSAtIDE7CiAgIH0KIH07CiAKIGNsYXNzIENhbGxTaXRlIDogcHVibGljIENhbGxTaXRlQmFzZTxGdW5jdGlvbiwgQmFzaWNCbG9jaywgVmFsdWUsIFVzZXIsIFVzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiwgQ2FsbEluc3QsIEludm9rZUluc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcjo6b3BfaXRlcmF0b3I+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsQnJJbnN0LCBVc2VyOjpvcF9pdGVyYXRvcj4gewogcHVibGljOgogICBDYWxsU2l0ZSgpID0gZGVmYXVsdDsKICAgQ2FsbFNpdGUoQ2FsbFNpdGVCYXNlIEIpIDogQ2FsbFNpdGVCYXNlKEIpIHt9CiAgIENhbGxTaXRlKENhbGxJbnN0ICpDSSkgOiBDYWxsU2l0ZUJhc2UoQ0kpIHt9CiAgIENhbGxTaXRlKEludm9rZUluc3QgKklJKSA6IENhbGxTaXRlQmFzZShJSSkge30KKyAgQ2FsbFNpdGUoQ2FsbEJySW5zdCAqQ0JJKSA6IENhbGxTaXRlQmFzZShDQkkpIHt9CiAgIGV4cGxpY2l0IENhbGxTaXRlKEluc3RydWN0aW9uICpJSSkgOiBDYWxsU2l0ZUJhc2UoSUkpIHt9CiAgIGV4cGxpY2l0IENhbGxTaXRlKFZhbHVlICpWKSA6IENhbGxTaXRlQmFzZShWKSB7fQogCkBAIC02ODYsNiArNjg4LDE4MiBAQAogICBVc2VyOjpvcF9pdGVyYXRvciBnZXRDYWxsZWUoKSBjb25zdDsKIH07CiAKKy8vLyBBYnN0cmFjdENhbGxTaXRlCisvLy8KKy8vLyBBbiBhYnN0cmFjdCBjYWxsIHNpdGUgaXMgYSB3cmFwcGVyIHRoYXQgYWxsb3dzIHRvIHRyZWF0IGRpcmVjdCwKKy8vLyBpbmRpcmVjdCwgYW5kIGNhbGxiYWNrIGNhbGxzIHRoZSBzYW1lLiBJZiBhbiBhYnN0cmFjdCBjYWxsIHNpdGUKKy8vLyByZXByZXNlbnRzIGEgZGlyZWN0IG9yIGluZGlyZWN0IGNhbGwgc2l0ZSBpdCBiZWhhdmVzIGxpa2UgYSBzdHJpcHBlZAorLy8vIGRvd24gdmVyc2lvbiBvZiBhIG5vcm1hbCBjYWxsIHNpdGUgb2JqZWN0LiBUaGUgYWJzdHJhY3QgY2FsbCBzaXRlIGNhbgorLy8vIGFsc28gcmVwcmVzZW50IGEgY2FsbGJhY2sgY2FsbCwgdGh1cyB0aGUgZmFjdCB0aGF0IHRoZSBpbml0aWFsbHkKKy8vLyBjYWxsZWQgZnVuY3Rpb24gKD1icm9rZXIpIG1heSBpbnZva2UgYSB0aGlyZCBvbmUgKD1jYWxsYmFjayBjYWxsZWUpLgorLy8vIEluIHRoaXMgY2FzZSwgdGhlIGFic3RyYWN0IGNhbGwgc2l0ZSBoaWRlcyB0aGUgbWlkZGxlIG1hbiwgaGVuY2UgdGhlCisvLy8gYnJva2VyIGZ1bmN0aW9uLiBUaGUgcmVzdWx0IGlzIGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNhbGxiYWNrIGNhbGwsCisvLy8gaW5zaWRlIHRoZSBicm9rZXIsIGJ1dCBpbiB0aGUgY29udGV4dCBvZiB0aGUgb3JpZ2luYWwgY2FsbCB0byB0aGUgYnJva2VyLgorLy8vCisvLy8gVGhlcmUgYXJlIHVwIHRvIHRocmVlIGZ1bmN0aW9ucyBpbnZvbHZlZCB3aGVuIHdlIHRhbGsgYWJvdXQgY2FsbGJhY2sgY2FsbAorLy8vIHNpdGVzLiBUaGUgY2FsbGVyICgxKSwgd2hpY2ggaW52b2tlcyB0aGUgYnJva2VyIGZ1bmN0aW9uLiBUaGUgYnJva2VyCisvLy8gZnVuY3Rpb24gKDIpLCB0aGF0IHdpbGwgaW52b2tlIHRoZSBjYWxsZWUgemVybyBvciBtb3JlIHRpbWVzLiBBbmQgZmluYWxseQorLy8vIHRoZSBjYWxsZWUgKDMpLCB3aGljaCBpcyB0aGUgdGFyZ2V0IG9mIHRoZSBjYWxsYmFjayBjYWxsLgorLy8vCisvLy8gVGhlIGFic3RyYWN0IGNhbGwgc2l0ZSB3aWxsIGhhbmRsZSB0aGUgbWFwcGluZyBmcm9tIHBhcmFtZXRlcnMgdG8gYXJndW1lbnRzCisvLy8gZGVwZW5kaW5nIG9uIHRoZSBzZW1hbnRpYyBvZiB0aGUgYnJva2VyIGZ1bmN0aW9uLiBIb3dldmVyLCBpdCBpcyBpbXBvcnRhbnQKKy8vLyB0byBub3RlIHRoYXQgdGhlIG1hcHBpbmcgaXMgb2Z0ZW4gcGFydGlhbC4gVGh1cywgc29tZSBhcmd1bWVudHMgb2YgdGhlCisvLy8gY2FsbC9pbnZva2UgaW5zdHJ1Y3Rpb24gYXJlIG1hcHBlZCB0byBwYXJhbWV0ZXJzIG9mIHRoZSBjYWxsZWUgd2hpbGUgb3RoZXJzCisvLy8gYXJlIG5vdC4KK2NsYXNzIEFic3RyYWN0Q2FsbFNpdGUgeworcHVibGljOgorCisgIC8vLyBUaGUgZW5jb2Rpbmcgb2YgYSBjYWxsYmFjayB3aXRoIHJlZ2FyZHMgdG8gdGhlIHVuZGVybHlpbmcgaW5zdHJ1Y3Rpb24uCisgIHN0cnVjdCBDYWxsYmFja0luZm8geworCisgICAgLy8vIEZvciBkaXJlY3QvaW5kaXJlY3QgY2FsbHMgdGhlIHBhcmFtZXRlciBlbmNvZGluZyBpcyBlbXB0eS4gSWYgaXQgaXMgbm90LAorICAgIC8vLyB0aGUgYWJzdHJhY3QgY2FsbCBzaXRlIHJlcHJlc2VudHMgYSBjYWxsYmFjay4gSW4gdGhhdCBjYXNlLCB0aGUgZmlyc3QKKyAgICAvLy8gZWxlbWVudCBvZiB0aGUgZW5jb2RpbmcgdmVjdG9yIHJlcHJlc2VudHMgd2hpY2ggYXJndW1lbnQgb2YgdGhlIGNhbGwKKyAgICAvLy8gc2l0ZSBDUyBpcyB0aGUgY2FsbGJhY2sgY2FsbGVlLiBUaGUgcmVtYWluaW5nIGVsZW1lbnRzIG1hcCBwYXJhbWV0ZXJzCisgICAgLy8vIChpZGVudGlmaWVkIGJ5IHRoZWlyIHBvc2l0aW9uKSB0byB0aGUgYXJndW1lbnRzIHRoYXQgd2lsbCBiZSBwYXNzZWQKKyAgICAvLy8gdGhyb3VnaCAoYWxzbyBpZGVudGlmaWVkIGJ5IHBvc2l0aW9uIGJ1dCBpbiB0aGUgY2FsbCBzaXRlIGluc3RydWN0aW9uKS4KKyAgICAvLy8KKyAgICAvLy8gTk9URSB0aGF0IHdlIHVzZSBMTFZNIGFyZ3VtZW50IG51bWJlcnMgKHN0YXJ0aW5nIGF0IDApIGFuZCBub3QKKyAgICAvLy8gY2xhbmcvc29ydWNlIGFyZ3VtZW50IG51bWJlcnMgKHN0YXJ0aW5nIGF0IDEpLiBUaGUgLTEgZW50cmllcyByZXByZXNlbnQKKyAgICAvLy8gdW5rbm93biB2YWx1ZXMgdGhhdCBhcmUgcGFzc2VkIHRvIHRoZSBjYWxsZWUuCisgICAgdXNpbmcgUGFyYW1ldGVyRW5jb2RpbmdUeSA9IFNtYWxsVmVjdG9yPGludCwgMD47CisgICAgUGFyYW1ldGVyRW5jb2RpbmdUeSBQYXJhbWV0ZXJFbmNvZGluZzsKKworICB9OworCitwcml2YXRlOgorCisgIC8vLyBUaGUgdW5kZXJseWluZyBjYWxsIHNpdGU6CisgIC8vLyAgIGNhbGxlciAtPiBjYWxsZWUsICAgICAgICAgICAgIGlmIHRoaXMgaXMgYSBkaXJlY3Qgb3IgaW5kaXJlY3QgY2FsbCBzaXRlCisgIC8vLyAgIGNhbGxlciAtPiBicm9rZXIgZnVuY3Rpb24sICAgIGlmIHRoaXMgaXMgYSBjYWxsYmFjayBjYWxsIHNpdGUKKyAgQ2FsbFNpdGUgQ1M7CisKKyAgLy8vIFRoZSBlbmNvZGluZyBvZiBhIGNhbGxiYWNrIHdpdGggcmVnYXJkcyB0byB0aGUgdW5kZXJseWluZyBpbnN0cnVjdGlvbi4KKyAgQ2FsbGJhY2tJbmZvIENJOworCitwdWJsaWM6CisgIC8vLyBTb2xlIGNvbnN0cnVjdG9yIGZvciBhYnN0cmFjdCBjYWxsIHNpdGVzIChBQ1MpLgorICAvLy8KKyAgLy8vIEFuIGFic3RyYWN0IGNhbGwgc2l0ZSBjYW4gb25seSBiZSBjb25zdHJ1Y3RlZCB0aHJvdWdoIGEgbGx2bTo6VXNlIGJlY2F1c2UKKyAgLy8vIGVhY2ggb3BlcmFuZCAoPXVzZSkgb2YgYW4gaW5zdHJ1Y3Rpb24gY291bGQgcG90ZW50aWFsbHkgYmUgYSBkaWZmZXJlbnQKKyAgLy8vIGFic3RyYWN0IGNhbGwgc2l0ZS4gRnVydGhlcm1vcmUsIGV2ZW4gaWYgdGhlIHZhbHVlIG9mIHRoZSBsbHZtOjpVc2UgaXMgdGhlCisgIC8vLyBzYW1lLCBhbmQgdGhlIHVzZXIgaXMgYXMgd2VsbCwgdGhlIGFic3RyYWN0IGNhbGwgc2l0ZXMgbWlnaHQgbm90IGJlLgorICAvLy8KKyAgLy8vIElmIGEgdXNlIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYW4gYWJzdHJhY3QgY2FsbCBzaXRlIHRoZSBjb25zdHJ1Y3RlZCBBQ1MKKyAgLy8vIHdpbGwgZXZhbHVhdGUgdG8gZmFsc2UgaWYgY29udmVydGVkIHRvIGEgYm9vbGVhbi4KKyAgLy8vCisgIC8vLyBJZiB0aGUgdXNlIGlzIHRoZSBjYWxsZWUgdXNlIG9mIGEgY2FsbCBvciBpbnZva2UgaW5zdHJ1Y3Rpb24sIHRoZQorICAvLy8gY29uc3RydWN0ZWQgYWJzdHJhY3QgY2FsbCBzaXRlIHdpbGwgYmVoYXZlIGFzIGEgbGx2bTo6Q2FsbFNpdGUgd291bGQuCisgIC8vLworICAvLy8gSWYgdGhlIHVzZSBpcyBub3QgYSBjYWxsZWUgdXNlIG9mIGEgY2FsbCBvciBpbnZva2UgaW5zdHJ1Y3Rpb24sIHRoZQorICAvLy8gY2FsbGJhY2sgbWV0YWRhdGEgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGFyZ3VtZW50IDwtPiBwYXJhbWV0ZXIgbWFwcGluZworICAvLy8gYXMgd2VsbCBhcyB0aGUgY2FsbGVlIG9mIHRoZSBhYnN0cmFjdCBjYWxsIHNpdGUuCisgIEFic3RyYWN0Q2FsbFNpdGUoY29uc3QgVXNlICpVKTsKKworICAvLy8gQ29udmVyc2lvbiBvcGVyYXRvciB0byBjb252ZW5pZW50bHkgY2hlY2sgZm9yIGEgdmFsaWQvaW5pdGlhbGl6ZWQgQUNTLgorICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gKGJvb2wpQ1M7IH0KKworICAvLy8gUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGluc3RydWN0aW9uLgorICBJbnN0cnVjdGlvbiAqZ2V0SW5zdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBDUy5nZXRJbnN0cnVjdGlvbigpOyB9CisKKyAgLy8vIFJldHVybiB0aGUgY2FsbCBzaXRlIGFic3RyYWN0aW9uIGZvciB0aGUgdW5kZXJseWluZyBpbnN0cnVjdGlvbi4KKyAgQ2FsbFNpdGUgZ2V0Q2FsbFNpdGUoKSBjb25zdCB7IHJldHVybiBDUzsgfQorCisgIC8vLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIEFDUyByZXByZXNlbnRzIGEgZGlyZWN0IGNhbGwuCisgIGJvb2wgaXNEaXJlY3RDYWxsKCkgY29uc3QgeworICAgIHJldHVybiAhaXNDYWxsYmFja0NhbGwoKSAmJiAhQ1MuaXNJbmRpcmVjdENhbGwoKTsKKyAgfQorCisgIC8vLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIEFDUyByZXByZXNlbnRzIGFuIGluZGlyZWN0IGNhbGwuCisgIGJvb2wgaXNJbmRpcmVjdENhbGwoKSBjb25zdCB7CisgICAgcmV0dXJuICFpc0NhbGxiYWNrQ2FsbCgpICYmIENTLmlzSW5kaXJlY3RDYWxsKCk7CisgIH0KKworICAvLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBBQ1MgcmVwcmVzZW50cyBhIGNhbGxiYWNrIGNhbGwuCisgIGJvb2wgaXNDYWxsYmFja0NhbGwoKSBjb25zdCB7CisgICAgLy8gRm9yIGEgY2FsbGJhY2sgY2FsbCBzaXRlIHRoZSBjYWxsZWUgaXMgQUxXQVlTIHN0b3JlZCBmaXJzdCBpbiB0aGUKKyAgICAvLyB0cmFuc2l0aXZlIHZhbHVlcyB2ZWN0b3IuIFRodXMsIGEgbm9uLWVtcHR5IHZlY3RvciBpbmRpY2F0ZXMgYSBjYWxsYmFjay4KKyAgICByZXR1cm4gIUNJLlBhcmFtZXRlckVuY29kaW5nLmVtcHR5KCk7CisgIH0KKworICAvLy8gUmV0dXJuIHRydWUgaWYgQHAgVUkgaXMgdGhlIHVzZSB0aGF0IGRlZmluZXMgdGhlIGNhbGxlZSBvZiB0aGlzIEFDUy4KKyAgYm9vbCBpc0NhbGxlZShWYWx1ZTo6Y29uc3RfdXNlcl9pdGVyYXRvciBVSSkgY29uc3QgeworICAgIHJldHVybiBpc0NhbGxlZSgmVUkuZ2V0VXNlKCkpOworICB9CisKKyAgLy8vIFJldHVybiB0cnVlIGlmIEBwIFUgaXMgdGhlIHVzZSB0aGF0IGRlZmluZXMgdGhlIGNhbGxlZSBvZiB0aGlzIEFDUy4KKyAgYm9vbCBpc0NhbGxlZShjb25zdCBVc2UgKlUpIGNvbnN0IHsKKyAgICBpZiAoaXNEaXJlY3RDYWxsKCkpCisgICAgICByZXR1cm4gQ1MuaXNDYWxsZWUoVSk7CisKKyAgICBhc3NlcnQoIUNJLlBhcmFtZXRlckVuY29kaW5nLmVtcHR5KCkgJiYKKyAgICAgICAgICAgIkNhbGxiYWNrIHdpdGhvdXQgcGFyYW1ldGVyIGVuY29kaW5nISIpOworCisgICAgcmV0dXJuIChpbnQpQ1MuZ2V0QXJndW1lbnRObyhVKSA9PSBDSS5QYXJhbWV0ZXJFbmNvZGluZ1swXTsKKyAgfQorCisgIC8vLyBSZXR1cm4gdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzIG9mIHRoZSBjYWxsZWUuCisgIHVuc2lnbmVkIGdldE51bUFyZ09wZXJhbmRzKCkgY29uc3QgeworICAgIGlmIChpc0RpcmVjdENhbGwoKSkKKyAgICAgIHJldHVybiBDUy5nZXROdW1BcmdPcGVyYW5kcygpOworICAgIC8vIFN1YnRyYWN0IDEgZm9yIHRoZSBjYWxsZWUgZW5jb2RpbmcuCisgICAgcmV0dXJuIENJLlBhcmFtZXRlckVuY29kaW5nLnNpemUoKSAtIDE7CisgIH0KKworICAvLy8gUmV0dXJuIHRoZSBvcGVyYW5kIGluZGV4IG9mIHRoZSB1bmRlcmx5aW5nIGluc3RydWN0aW9uIGFzc29jaWF0ZWQgd2l0aCBAcAorICAvLy8gQXJnLgorICBpbnQgZ2V0Q2FsbEFyZ09wZXJhbmRObyhBcmd1bWVudCAmQXJnKSBjb25zdCB7CisgICAgcmV0dXJuIGdldENhbGxBcmdPcGVyYW5kTm8oQXJnLmdldEFyZ05vKCkpOworICB9CisKKyAgLy8vIFJldHVybiB0aGUgb3BlcmFuZCBpbmRleCBvZiB0aGUgdW5kZXJseWluZyBpbnN0cnVjdGlvbiBhc3NvY2lhdGVkIHdpdGgKKyAgLy8vIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgbnVtYmVyIEBwIEFyZ05vIG9yIC0xIGlmIHRoZXJlIGlzIG5vbmUuCisgIGludCBnZXRDYWxsQXJnT3BlcmFuZE5vKHVuc2lnbmVkIEFyZ05vKSBjb25zdCB7CisgICAgaWYgKGlzRGlyZWN0Q2FsbCgpKQorICAgICAgcmV0dXJuIEFyZ05vOworICAgIC8vIEFkZCAxIGZvciB0aGUgY2FsbGVlIGVuY29kaW5nLgorICAgIHJldHVybiBDSS5QYXJhbWV0ZXJFbmNvZGluZ1tBcmdObyArIDFdOworICB9CisKKyAgLy8vIFJldHVybiB0aGUgb3BlcmFuZCBvZiB0aGUgdW5kZXJseWluZyBpbnN0cnVjdGlvbiBhc3NvY2lhdGVkIHdpdGggQHAgQXJnLgorICBWYWx1ZSAqZ2V0Q2FsbEFyZ09wZXJhbmQoQXJndW1lbnQgJkFyZykgY29uc3QgeworICAgIHJldHVybiBnZXRDYWxsQXJnT3BlcmFuZChBcmcuZ2V0QXJnTm8oKSk7CisgIH0KKworICAvLy8gUmV0dXJuIHRoZSBvcGVyYW5kIG9mIHRoZSB1bmRlcmx5aW5nIGluc3RydWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgLy8vIGZ1bmN0aW9uIHBhcmFtZXRlciBudW1iZXIgQHAgQXJnTm8gb3IgbnVsbHB0ciBpZiB0aGVyZSBpcyBub25lLgorICBWYWx1ZSAqZ2V0Q2FsbEFyZ09wZXJhbmQodW5zaWduZWQgQXJnTm8pIGNvbnN0IHsKKyAgICBpZiAoaXNEaXJlY3RDYWxsKCkpCisgICAgICByZXR1cm4gQ1MuZ2V0QXJnT3BlcmFuZChBcmdObyk7CisgICAgLy8gQWRkIDEgZm9yIHRoZSBjYWxsZWUgZW5jb2RpbmcuCisgICAgcmV0dXJuIENJLlBhcmFtZXRlckVuY29kaW5nW0FyZ05vICsgMV0gPj0gMAorICAgICAgICAgICAgICAgPyBDUy5nZXRBcmdPcGVyYW5kKENJLlBhcmFtZXRlckVuY29kaW5nW0FyZ05vICsgMV0pCisgICAgICAgICAgICAgICA6IG51bGxwdHI7CisgIH0KKworICAvLy8gUmV0dXJuIHRoZSBvcGVyYW5kIGluZGV4IG9mIHRoZSB1bmRlcmx5aW5nIGluc3RydWN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgLy8vIGNhbGxlZSBvZiB0aGlzIEFDUy4gT25seSB2YWxpZCBmb3IgY2FsbGJhY2sgY2FsbHMhCisgIGludCBnZXRDYWxsQXJnT3BlcmFuZE5vRm9yQ2FsbGVlKCkgY29uc3QgeworICAgIGFzc2VydChpc0NhbGxiYWNrQ2FsbCgpKTsKKyAgICBhc3NlcnQoQ0kuUGFyYW1ldGVyRW5jb2Rpbmcuc2l6ZSgpICYmIENJLlBhcmFtZXRlckVuY29kaW5nWzBdID4gMCk7CisgICAgcmV0dXJuIENJLlBhcmFtZXRlckVuY29kaW5nWzBdOworICB9CisKKyAgLy8vIFJldHVybiB0aGUgcG9pbnRlciB0byBmdW5jdGlvbiB0aGF0IGlzIGJlaW5nIGNhbGxlZC4KKyAgVmFsdWUgKmdldENhbGxlZFZhbHVlKCkgY29uc3QgeworICAgIGlmIChpc0RpcmVjdENhbGwoKSkKKyAgICAgIHJldHVybiBDUy5nZXRDYWxsZWRWYWx1ZSgpOworICAgIHJldHVybiBDUy5nZXRBcmdPcGVyYW5kKGdldENhbGxBcmdPcGVyYW5kTm9Gb3JDYWxsZWUoKSk7CisgIH0KKworICAvLy8gUmV0dXJuIHRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQgaWYgdGhpcyBpcyBhIGRpcmVjdCBjYWxsLCBvdGhlcndpc2UKKyAgLy8vIHJldHVybiBudWxsIChpZiBpdCdzIGFuIGluZGlyZWN0IGNhbGwpLgorICBGdW5jdGlvbiAqZ2V0Q2FsbGVkRnVuY3Rpb24oKSBjb25zdCB7CisgICAgVmFsdWUgKlYgPSBnZXRDYWxsZWRWYWx1ZSgpOworICAgIHJldHVybiBWID8gZHluX2Nhc3Q8RnVuY3Rpb24+KFYtPnN0cmlwUG9pbnRlckNhc3RzKCkpIDogbnVsbHB0cjsKKyAgfQorfTsKKwogdGVtcGxhdGUgPD4gc3RydWN0IERlbnNlTWFwSW5mbzxDYWxsU2l0ZT4gewogICB1c2luZyBCYXNlSW5mbyA9IERlbnNlTWFwSW5mbzxkZWNsdHlwZShDYWxsU2l0ZTo6SSk+OwogCkBAIC03MTYsNiArODk0LDcgQEAKICAgSW1tdXRhYmxlQ2FsbFNpdGUoKSA9IGRlZmF1bHQ7CiAgIEltbXV0YWJsZUNhbGxTaXRlKGNvbnN0IENhbGxJbnN0ICpDSSkgOiBDYWxsU2l0ZUJhc2UoQ0kpIHt9CiAgIEltbXV0YWJsZUNhbGxTaXRlKGNvbnN0IEludm9rZUluc3QgKklJKSA6IENhbGxTaXRlQmFzZShJSSkge30KKyAgSW1tdXRhYmxlQ2FsbFNpdGUoY29uc3QgQ2FsbEJySW5zdCAqQ0JJKSA6IENhbGxTaXRlQmFzZShDQkkpIHt9CiAgIGV4cGxpY2l0IEltbXV0YWJsZUNhbGxTaXRlKGNvbnN0IEluc3RydWN0aW9uICpJSSkgOiBDYWxsU2l0ZUJhc2UoSUkpIHt9CiAgIGV4cGxpY2l0IEltbXV0YWJsZUNhbGxTaXRlKGNvbnN0IFZhbHVlICpWKSA6IENhbGxTaXRlQmFzZShWKSB7fQogICBJbW11dGFibGVDYWxsU2l0ZShDYWxsU2l0ZSBDUykgOiBDYWxsU2l0ZUJhc2UoQ1MuZ2V0SW5zdHJ1Y3Rpb24oKSkge30KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ2FsbGluZ0NvbnYuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ2FsbGluZ0NvbnYuaAppbmRleCA0OWMzYmU5Li4zOTljNmFkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0NhbGxpbmdDb252LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9DYWxsaW5nQ29udi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vQ2FsbGluZ0NvbnYuaCAtIExMVk0gQ2FsbGluZyBDb252ZW50aW9ucyAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0NvbWRhdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Db21kYXQuaAppbmRleCA1NTUxMjFlLi5mNzEyYTE2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0NvbWRhdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ29tZGF0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9JUi9Db21kYXQuaCAtIENvbWRhdCBkZWZpbml0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ29uc3RhbnQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ29uc3RhbnQuaAppbmRleCA1ZmRmMGVhLi5lNzFhYzI3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0NvbnN0YW50LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Db25zdGFudC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0NvbnN0YW50LmggLSBDb25zdGFudCBjbGFzcyBkZWZpbml0aW9uIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMTQsNyArMTEzLDggQEAKIAogICAvLy8gRm9yIGFnZ3JlZ2F0ZXMgKHN0cnVjdC9hcnJheS92ZWN0b3IpIHJldHVybiB0aGUgY29uc3RhbnQgdGhhdCBjb3JyZXNwb25kcwogICAvLy8gdG8gdGhlIHNwZWNpZmllZCBlbGVtZW50IGlmIHBvc3NpYmxlLCBvciBudWxsIGlmIG5vdC4gVGhpcyBjYW4gcmV0dXJuIG51bGwKLSAgLy8vIGlmIHRoZSBlbGVtZW50IGluZGV4IGlzIGEgQ29uc3RhbnRFeHByLCBvciBpZiAndGhpcycgaXMgYSBjb25zdGFudCBleHByLgorICAvLy8gaWYgdGhlIGVsZW1lbnQgaW5kZXggaXMgYSBDb25zdGFudEV4cHIsIGlmICd0aGlzJyBpcyBhIGNvbnN0YW50IGV4cHIgb3IKKyAgLy8vIGlmIHRoZSBjb25zdGFudCBkb2VzIG5vdCBmaXQgaW50byBhbiB1aW50NjRfdC4KICAgQ29uc3RhbnQgKmdldEFnZ3JlZ2F0ZUVsZW1lbnQodW5zaWduZWQgRWx0KSBjb25zdDsKICAgQ29uc3RhbnQgKmdldEFnZ3JlZ2F0ZUVsZW1lbnQoQ29uc3RhbnQgKkVsdCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ29uc3RhbnRGb2xkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ29uc3RhbnRGb2xkZXIuaAppbmRleCBkYTViYmE3Li4xOTcxY2I4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0NvbnN0YW50Rm9sZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Db25zdGFudEZvbGRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvbnN0YW50Rm9sZGVyLmggLSBDb25zdGFudCBmb2xkaW5nIGhlbHBlciAtLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0NvbnN0YW50UmFuZ2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ29uc3RhbnRSYW5nZS5oCmluZGV4IDFhZGRhMzIuLjg2YzhjMzAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ29uc3RhbnRSYW5nZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ29uc3RhbnRSYW5nZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvbnN0YW50UmFuZ2UuaCAtIFJlcHJlc2VudCBhIHJhbmdlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0NvbnN0YW50cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Db25zdGFudHMuaAppbmRleCBmOWQ1ZWJjLi5jYTU2ZThiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0NvbnN0YW50cy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvQ29uc3RhbnRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vQ29uc3RhbnRzLmggLSBDb25zdGFudCBjbGFzcyBzdWJjbGFzcyBkZWZpbml0aW9ucyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI5MCw3ICsyODksMTEgQEAKIAogICBzdGF0aWMgQ29uc3RhbnQgKmdldChUeXBlKiBUeSwgU3RyaW5nUmVmIFN0cik7CiAgIHN0YXRpYyBDb25zdGFudEZQICpnZXQoTExWTUNvbnRleHQgJkNvbnRleHQsIGNvbnN0IEFQRmxvYXQgJlYpOwotICBzdGF0aWMgQ29uc3RhbnQgKmdldE5hTihUeXBlICpUeSwgYm9vbCBOZWdhdGl2ZSA9IGZhbHNlLCB1bnNpZ25lZCB0eXBlID0gMCk7CisgIHN0YXRpYyBDb25zdGFudCAqZ2V0TmFOKFR5cGUgKlR5LCBib29sIE5lZ2F0aXZlID0gZmFsc2UsIHVpbnQ2NF90IFBheWxvYWQgPSAwKTsKKyAgc3RhdGljIENvbnN0YW50ICpnZXRRTmFOKFR5cGUgKlR5LCBib29sIE5lZ2F0aXZlID0gZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEludCAqUGF5bG9hZCA9IG51bGxwdHIpOworICBzdGF0aWMgQ29uc3RhbnQgKmdldFNOYU4oVHlwZSAqVHksIGJvb2wgTmVnYXRpdmUgPSBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSW50ICpQYXlsb2FkID0gbnVsbHB0cik7CiAgIHN0YXRpYyBDb25zdGFudCAqZ2V0TmVnYXRpdmVaZXJvKFR5cGUgKlR5KTsKICAgc3RhdGljIENvbnN0YW50ICpnZXRJbmZpbml0eShUeXBlICpUeSwgYm9vbCBOZWdhdGl2ZSA9IGZhbHNlKTsKIApAQCAtMTExNCw2ICsxMTE3LDEzIEBACiAgIHN0YXRpYyBDb25zdGFudCAqZ2V0U2VsZWN0KENvbnN0YW50ICpDLCBDb25zdGFudCAqVjEsIENvbnN0YW50ICpWMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAqT25seUlmUmVkdWNlZFR5ID0gbnVsbHB0cik7CiAKKyAgLy8vIGdldCAtIFJldHVybiBhIHVuYXJ5IG9wZXJhdG9yIGNvbnN0YW50IGV4cHJlc3Npb24sCisgIC8vLyBmb2xkaW5nIGlmIHBvc3NpYmxlLgorICAvLy8KKyAgLy8vIFxwYXJhbSBPbmx5SWZSZWR1Y2VkVHkgc2VlIFxhIGdldFdpdGhPcGVyYW5kcygpIGRvY3MuCisgIHN0YXRpYyBDb25zdGFudCAqZ2V0KHVuc2lnbmVkIE9wY29kZSwgQ29uc3RhbnQgKkMxLCB1bnNpZ25lZCBGbGFncyA9IDAsIAorICAgICAgICAgICAgICAgICAgICAgICBUeXBlICpPbmx5SWZSZWR1Y2VkVHkgPSBudWxscHRyKTsKKwogICAvLy8gZ2V0IC0gUmV0dXJuIGEgYmluYXJ5IG9yIHNoaWZ0IG9wZXJhdG9yIGNvbnN0YW50IGV4cHJlc3Npb24sCiAgIC8vLyBmb2xkaW5nIGlmIHBvc3NpYmxlLgogICAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRElCdWlsZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RJQnVpbGRlci5oCmluZGV4IDE2Yjc1OTcuLmI1NzU2MzIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRElCdWlsZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9ESUJ1aWxkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBESUJ1aWxkZXIuaCAtIERlYnVnIEluZm9ybWF0aW9uIEJ1aWxkZXIgLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTQ1LDcgKzE0NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgRFdPSWQgPSAwLCBib29sIFNwbGl0RGVidWdJbmxpbmluZyA9IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBEZWJ1Z0luZm9Gb3JQcm9maWxpbmcgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICBESUNvbXBpbGVVbml0OjpEZWJ1Z05hbWVUYWJsZUtpbmQgTmFtZVRhYmxlS2luZCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIERJQ29tcGlsZVVuaXQ6OkRlYnVnTmFtZVRhYmxlS2luZDo6RGVmYXVsdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIERJQ29tcGlsZVVuaXQ6OkRlYnVnTmFtZVRhYmxlS2luZDo6RGVmYXVsdCwKKyAgICAgICAgICAgICAgICAgICAgICBib29sIFJhbmdlc0Jhc2VBZGRyZXNzID0gZmFsc2UpOwogCiAgICAgLy8vIENyZWF0ZSBhIGZpbGUgZGVzY3JpcHRvciB0byBob2xkIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmb3IgYSBmaWxlLgogICAgIC8vLyBccGFyYW0gRmlsZW5hbWUgIEZpbGUgbmFtZS4KQEAgLTUwMSwxMSArNTAxLDExIEBACiAgICAgLy8vIFxwYXJhbSBFbGVtZW50cyAgICAgICBFbnVtZXJhdGlvbiBlbGVtZW50cy4KICAgICAvLy8gXHBhcmFtIFVuZGVybHlpbmdUeXBlIFVuZGVybHlpbmcgdHlwZSBvZiBhIEMrKzExL09iakMgZml4ZWQgZW51bS4KICAgICAvLy8gXHBhcmFtIFVuaXF1ZUlkZW50aWZpZXIgQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGVudW0uCi0gICAgLy8vIFxwYXJhbSBJc0ZpeGVkIEJvb2xlYW4gZmxhZyBpbmRpY2F0ZSBpZiB0aGlzIGlzIEMrKzExL09iakMgZml4ZWQgZW51bS4KKyAgICAvLy8gXHBhcmFtIElzU2NvcGVkIEJvb2xlYW4gZmxhZyBpbmRpY2F0ZSBpZiB0aGlzIGlzIEMrKzExL09iakMgJ2VudW0gY2xhc3MnLgogICAgIERJQ29tcG9zaXRlVHlwZSAqY3JlYXRlRW51bWVyYXRpb25UeXBlKAogICAgICAgICBESVNjb3BlICpTY29wZSwgU3RyaW5nUmVmIE5hbWUsIERJRmlsZSAqRmlsZSwgdW5zaWduZWQgTGluZU51bWJlciwKICAgICAgICAgdWludDY0X3QgU2l6ZUluQml0cywgdWludDMyX3QgQWxpZ25JbkJpdHMsIERJTm9kZUFycmF5IEVsZW1lbnRzLAotICAgICAgICBESVR5cGUgKlVuZGVybHlpbmdUeXBlLCBTdHJpbmdSZWYgVW5pcXVlSWRlbnRpZmllciA9ICIiLCBib29sIElzRml4ZWQgPSBmYWxzZSk7CisgICAgICAgIERJVHlwZSAqVW5kZXJseWluZ1R5cGUsIFN0cmluZ1JlZiBVbmlxdWVJZGVudGlmaWVyID0gIiIsIGJvb2wgSXNTY29wZWQgPSBmYWxzZSk7CiAKICAgICAvLy8gQ3JlYXRlIHN1YnJvdXRpbmUgdHlwZS4KICAgICAvLy8gXHBhcmFtIFBhcmFtZXRlclR5cGVzICBBbiBhcnJheSBvZiBzdWJyb3V0aW5lIHBhcmFtZXRlciB0eXBlcy4gVGhpcwpAQCAtNjUyLDI5ICs2NTIsMjggQEAKICAgICAvLy8gXHBhcmFtIEZpbGUgICAgICAgICAgRmlsZSB3aGVyZSB0aGlzIHZhcmlhYmxlIGlzIGRlZmluZWQuCiAgICAgLy8vIFxwYXJhbSBMaW5lTm8gICAgICAgIExpbmUgbnVtYmVyLgogICAgIC8vLyBccGFyYW0gVHkgICAgICAgICAgICBGdW5jdGlvbiB0eXBlLgotICAgIC8vLyBccGFyYW0gaXNMb2NhbFRvVW5pdCBUcnVlIGlmIHRoaXMgZnVuY3Rpb24gaXMgbm90IGV4dGVybmFsbHkgdmlzaWJsZS4KLSAgICAvLy8gXHBhcmFtIGlzRGVmaW5pdGlvbiAgVHJ1ZSBpZiB0aGlzIGlzIGEgZnVuY3Rpb24gZGVmaW5pdGlvbi4KICAgICAvLy8gXHBhcmFtIFNjb3BlTGluZSAgICAgU2V0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNjb3BlIHRoaXMgc3RhcnRzCiAgICAgLy8vIFxwYXJhbSBGbGFncyAgICAgICAgIGUuZy4gaXMgdGhpcyBmdW5jdGlvbiBwcm90b3R5cGVkIG9yIG5vdC4KICAgICAvLy8gICAgICAgICAgICAgICAgICAgICAgVGhlc2UgZmxhZ3MgYXJlIHVzZWQgdG8gZW1pdCBkd2FyZiBhdHRyaWJ1dGVzLgotICAgIC8vLyBccGFyYW0gaXNPcHRpbWl6ZWQgICBUcnVlIGlmIG9wdGltaXphdGlvbiBpcyBPTi4KKyAgICAvLy8gXHBhcmFtIFNQRmxhZ3MgICAgICAgQWRkaXRpb25hbCBmbGFncyBzcGVjaWZpYyB0byBzdWJwcm9ncmFtcy4KICAgICAvLy8gXHBhcmFtIFRQYXJhbXMgICAgICAgRnVuY3Rpb24gdGVtcGxhdGUgcGFyYW1ldGVycy4KICAgICAvLy8gXHBhcmFtIFRocm93blR5cGVzICAgRXhjZXB0aW9uIHR5cGVzIHRoaXMgZnVuY3Rpb24gbWF5IHRocm93LgotICAgIERJU3VicHJvZ3JhbSAqY3JlYXRlRnVuY3Rpb24oCi0gICAgICAgIERJU2NvcGUgKlNjb3BlLCBTdHJpbmdSZWYgTmFtZSwgU3RyaW5nUmVmIExpbmthZ2VOYW1lLCBESUZpbGUgKkZpbGUsCi0gICAgICAgIHVuc2lnbmVkIExpbmVObywgRElTdWJyb3V0aW5lVHlwZSAqVHksIGJvb2wgaXNMb2NhbFRvVW5pdCwKLSAgICAgICAgYm9vbCBpc0RlZmluaXRpb24sIHVuc2lnbmVkIFNjb3BlTGluZSwKLSAgICAgICAgRElOb2RlOjpESUZsYWdzIEZsYWdzID0gRElOb2RlOjpGbGFnWmVybywgYm9vbCBpc09wdGltaXplZCA9IGZhbHNlLAotICAgICAgICBESVRlbXBsYXRlUGFyYW1ldGVyQXJyYXkgVFBhcmFtcyA9IG51bGxwdHIsCi0gICAgICAgIERJU3VicHJvZ3JhbSAqRGVjbCA9IG51bGxwdHIsIERJVHlwZUFycmF5IFRocm93blR5cGVzID0gbnVsbHB0cik7CisgICAgRElTdWJwcm9ncmFtICoKKyAgICBjcmVhdGVGdW5jdGlvbihESVNjb3BlICpTY29wZSwgU3RyaW5nUmVmIE5hbWUsIFN0cmluZ1JlZiBMaW5rYWdlTmFtZSwKKyAgICAgICAgICAgICAgICAgICBESUZpbGUgKkZpbGUsIHVuc2lnbmVkIExpbmVObywgRElTdWJyb3V0aW5lVHlwZSAqVHksCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgU2NvcGVMaW5lLCBESU5vZGU6OkRJRmxhZ3MgRmxhZ3MgPSBESU5vZGU6OkZsYWdaZXJvLAorICAgICAgICAgICAgICAgICAgIERJU3VicHJvZ3JhbTo6RElTUEZsYWdzIFNQRmxhZ3MgPSBESVN1YnByb2dyYW06OlNQRmxhZ1plcm8sCisgICAgICAgICAgICAgICAgICAgRElUZW1wbGF0ZVBhcmFtZXRlckFycmF5IFRQYXJhbXMgPSBudWxscHRyLAorICAgICAgICAgICAgICAgICAgIERJU3VicHJvZ3JhbSAqRGVjbCA9IG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgRElUeXBlQXJyYXkgVGhyb3duVHlwZXMgPSBudWxscHRyKTsKIAogICAgIC8vLyBJZGVudGljYWwgdG8gY3JlYXRlRnVuY3Rpb24sCiAgICAgLy8vIGV4Y2VwdCB0aGF0IHRoZSByZXN1bHRpbmcgRGJnTm9kZSBpcyBtZWFudCB0byBiZSBSQVVXZWQuCiAgICAgRElTdWJwcm9ncmFtICpjcmVhdGVUZW1wRnVuY3Rpb25Gd2REZWNsKAogICAgICAgICBESVNjb3BlICpTY29wZSwgU3RyaW5nUmVmIE5hbWUsIFN0cmluZ1JlZiBMaW5rYWdlTmFtZSwgRElGaWxlICpGaWxlLAotICAgICAgICB1bnNpZ25lZCBMaW5lTm8sIERJU3Vicm91dGluZVR5cGUgKlR5LCBib29sIGlzTG9jYWxUb1VuaXQsCi0gICAgICAgIGJvb2wgaXNEZWZpbml0aW9uLCB1bnNpZ25lZCBTY29wZUxpbmUsCi0gICAgICAgIERJTm9kZTo6RElGbGFncyBGbGFncyA9IERJTm9kZTo6RmxhZ1plcm8sIGJvb2wgaXNPcHRpbWl6ZWQgPSBmYWxzZSwKKyAgICAgICAgdW5zaWduZWQgTGluZU5vLCBESVN1YnJvdXRpbmVUeXBlICpUeSwgdW5zaWduZWQgU2NvcGVMaW5lLAorICAgICAgICBESU5vZGU6OkRJRmxhZ3MgRmxhZ3MgPSBESU5vZGU6OkZsYWdaZXJvLAorICAgICAgICBESVN1YnByb2dyYW06OkRJU1BGbGFncyBTUEZsYWdzID0gRElTdWJwcm9ncmFtOjpTUEZsYWdaZXJvLAogICAgICAgICBESVRlbXBsYXRlUGFyYW1ldGVyQXJyYXkgVFBhcmFtcyA9IG51bGxwdHIsCiAgICAgICAgIERJU3VicHJvZ3JhbSAqRGVjbCA9IG51bGxwdHIsIERJVHlwZUFycmF5IFRocm93blR5cGVzID0gbnVsbHB0cik7CiAKQEAgLTY4NiwxMCArNjg1LDYgQEAKICAgICAvLy8gXHBhcmFtIEZpbGUgICAgICAgICAgRmlsZSB3aGVyZSB0aGlzIHZhcmlhYmxlIGlzIGRlZmluZWQuCiAgICAgLy8vIFxwYXJhbSBMaW5lTm8gICAgICAgIExpbmUgbnVtYmVyLgogICAgIC8vLyBccGFyYW0gVHkgICAgICAgICAgICBGdW5jdGlvbiB0eXBlLgotICAgIC8vLyBccGFyYW0gaXNMb2NhbFRvVW5pdCBUcnVlIGlmIHRoaXMgZnVuY3Rpb24gaXMgbm90IGV4dGVybmFsbHkgdmlzaWJsZS4uCi0gICAgLy8vIFxwYXJhbSBpc0RlZmluaXRpb24gIFRydWUgaWYgdGhpcyBpcyBhIGZ1bmN0aW9uIGRlZmluaXRpb24uCi0gICAgLy8vIFxwYXJhbSBWaXJ0dWFsaXR5ICAgIEF0dHJpYnV0ZXMgZGVzY3JpYmluZyB2aXJ0dWFsbmVzcy4gZS5nLiBwdXJlCi0gICAgLy8vICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgZnVuY3Rpb24uCiAgICAgLy8vIFxwYXJhbSBWVGFibGVJbmRleCAgIEluZGV4IG5vIG9mIHRoaXMgbWV0aG9kIGluIHZpcnR1YWwgdGFibGUsIG9yIC0xdSBpZgogICAgIC8vLyAgICAgICAgICAgICAgICAgICAgICB1bnJlcHJlc2VudGFibGUuCiAgICAgLy8vIFxwYXJhbSBUaGlzQWRqdXN0bWVudApAQCAtNjk4LDE3ICs2OTMsMTggQEAKICAgICAvLy8gXHBhcmFtIFZUYWJsZUhvbGRlciAgVHlwZSB0aGF0IGhvbGRzIHZ0YWJsZS4KICAgICAvLy8gXHBhcmFtIEZsYWdzICAgICAgICAgZS5nLiBpcyB0aGlzIGZ1bmN0aW9uIHByb3RvdHlwZWQgb3Igbm90LgogICAgIC8vLyAgICAgICAgICAgICAgICAgICAgICBUaGlzIGZsYWdzIGFyZSB1c2VkIHRvIGVtaXQgZHdhcmYgYXR0cmlidXRlcy4KLSAgICAvLy8gXHBhcmFtIGlzT3B0aW1pemVkICAgVHJ1ZSBpZiBvcHRpbWl6YXRpb24gaXMgT04uCisgICAgLy8vIFxwYXJhbSBTUEZsYWdzICAgICAgIEFkZGl0aW9uYWwgZmxhZ3Mgc3BlY2lmaWMgdG8gc3VicHJvZ3JhbXMuCiAgICAgLy8vIFxwYXJhbSBUUGFyYW1zICAgICAgIEZ1bmN0aW9uIHRlbXBsYXRlIHBhcmFtZXRlcnMuCiAgICAgLy8vIFxwYXJhbSBUaHJvd25UeXBlcyAgIEV4Y2VwdGlvbiB0eXBlcyB0aGlzIGZ1bmN0aW9uIG1heSB0aHJvdy4KLSAgICBESVN1YnByb2dyYW0gKmNyZWF0ZU1ldGhvZCgKLSAgICAgICAgRElTY29wZSAqU2NvcGUsIFN0cmluZ1JlZiBOYW1lLCBTdHJpbmdSZWYgTGlua2FnZU5hbWUsIERJRmlsZSAqRmlsZSwKLSAgICAgICAgdW5zaWduZWQgTGluZU5vLCBESVN1YnJvdXRpbmVUeXBlICpUeSwgYm9vbCBpc0xvY2FsVG9Vbml0LAotICAgICAgICBib29sIGlzRGVmaW5pdGlvbiwgdW5zaWduZWQgVmlydHVhbGl0eSA9IDAsIHVuc2lnbmVkIFZUYWJsZUluZGV4ID0gMCwKLSAgICAgICAgaW50IFRoaXNBZGp1c3RtZW50ID0gMCwgRElUeXBlICpWVGFibGVIb2xkZXIgPSBudWxscHRyLAotICAgICAgICBESU5vZGU6OkRJRmxhZ3MgRmxhZ3MgPSBESU5vZGU6OkZsYWdaZXJvLCBib29sIGlzT3B0aW1pemVkID0gZmFsc2UsCi0gICAgICAgIERJVGVtcGxhdGVQYXJhbWV0ZXJBcnJheSBUUGFyYW1zID0gbnVsbHB0ciwKLSAgICAgICAgRElUeXBlQXJyYXkgVGhyb3duVHlwZXMgPSBudWxscHRyKTsKKyAgICBESVN1YnByb2dyYW0gKgorICAgIGNyZWF0ZU1ldGhvZChESVNjb3BlICpTY29wZSwgU3RyaW5nUmVmIE5hbWUsIFN0cmluZ1JlZiBMaW5rYWdlTmFtZSwKKyAgICAgICAgICAgICAgICAgRElGaWxlICpGaWxlLCB1bnNpZ25lZCBMaW5lTm8sIERJU3Vicm91dGluZVR5cGUgKlR5LAorICAgICAgICAgICAgICAgICB1bnNpZ25lZCBWVGFibGVJbmRleCA9IDAsIGludCBUaGlzQWRqdXN0bWVudCA9IDAsCisgICAgICAgICAgICAgICAgIERJVHlwZSAqVlRhYmxlSG9sZGVyID0gbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgRElOb2RlOjpESUZsYWdzIEZsYWdzID0gRElOb2RlOjpGbGFnWmVybywKKyAgICAgICAgICAgICAgICAgRElTdWJwcm9ncmFtOjpESVNQRmxhZ3MgU1BGbGFncyA9IERJU3VicHJvZ3JhbTo6U1BGbGFnWmVybywKKyAgICAgICAgICAgICAgICAgRElUZW1wbGF0ZVBhcmFtZXRlckFycmF5IFRQYXJhbXMgPSBudWxscHRyLAorICAgICAgICAgICAgICAgICBESVR5cGVBcnJheSBUaHJvd25UeXBlcyA9IG51bGxwdHIpOwogCiAgICAgLy8vIFRoaXMgY3JlYXRlcyBuZXcgZGVzY3JpcHRvciBmb3IgYSBuYW1lc3BhY2Ugd2l0aCB0aGUgc3BlY2lmaWVkCiAgICAgLy8vIHBhcmVudCBzY29wZS4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRGF0YUxheW91dC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EYXRhTGF5b3V0LmgKaW5kZXggZDc5NmE2NS4uMjc0ZWMyMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EYXRhTGF5b3V0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EYXRhTGF5b3V0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9EYXRhTGF5b3V0LmggLSBEYXRhIHNpemUgJiBhbGlnbm1lbnQgaW5mbyAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTMzNCw2ICszMzMsOSBAQAogICAvLy8gdGhlIGJhY2tlbmRzL2NsaWVudHMgYXJlIHVwZGF0ZWQuCiAgIHVuc2lnbmVkIGdldFBvaW50ZXJTaXplKHVuc2lnbmVkIEFTID0gMCkgY29uc3Q7CiAKKyAgLy8vIFJldHVybnMgdGhlIG1heGltdW0gcG9pbnRlciBzaXplIG92ZXIgYWxsIGFkZHJlc3Mgc3BhY2VzLgorICB1bnNpZ25lZCBnZXRNYXhQb2ludGVyU2l6ZSgpIGNvbnN0OworCiAgIC8vIEluZGV4IHNpemUgdXNlZCBmb3IgYWRkcmVzcyBjYWxjdWxhdGlvbi4KICAgdW5zaWduZWQgZ2V0SW5kZXhTaXplKHVuc2lnbmVkIEFTKSBjb25zdDsKIApAQCAtMzYxLDYgKzM2MywxMSBAQAogICAgIHJldHVybiBnZXRQb2ludGVyU2l6ZShBUykgKiA4OwogICB9CiAKKyAgLy8vIFJldHVybnMgdGhlIG1heGltdW0gcG9pbnRlciBzaXplIG92ZXIgYWxsIGFkZHJlc3Mgc3BhY2VzLgorICB1bnNpZ25lZCBnZXRNYXhQb2ludGVyU2l6ZUluQml0cygpIGNvbnN0IHsKKyAgICByZXR1cm4gZ2V0TWF4UG9pbnRlclNpemUoKSAqIDg7CisgIH0KKwogICAvLy8gU2l6ZSBpbiBiaXRzIG9mIGluZGV4IHVzZWQgZm9yIGFkZHJlc3MgY2FsY3VsYXRpb24gaW4gZ2V0ZWxlbWVudHB0ci4KICAgdW5zaWduZWQgZ2V0SW5kZXhTaXplSW5CaXRzKHVuc2lnbmVkIEFTKSBjb25zdCB7CiAgICAgcmV0dXJuIGdldEluZGV4U2l6ZShBUykgKiA4OwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EZWJ1Z0luZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRGVidWdJbmZvLmgKaW5kZXggMDExNzhhZi4uMTcxZTE2MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EZWJ1Z0luZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RlYnVnSW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERlYnVnSW5mby5oIC0gRGVidWcgSW5mb3JtYXRpb24gSGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RlYnVnSW5mb0ZsYWdzLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRGVidWdJbmZvRmxhZ3MuZGVmCmluZGV4IGEzYzM0MzAuLmYxOWMwNGQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRGVidWdJbmZvRmxhZ3MuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRGVidWdJbmZvRmxhZ3MuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vSVIvRGVidWdJbmZvRmxhZ3MuZGVmIC0gRGVidWcgaW5mbyBmbGFnIGRlZmluaXRpb25zIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMSwxMSArMTAsMjAgQEAKIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCi0vLyBUT0RPOiBBZGQgb3RoZXIgRFctYmFzZWQgbWFjcm9zLgotI2lmbmRlZiBIQU5ETEVfRElfRkxBRwotI2Vycm9yICJNaXNzaW5nIG1hY3JvIGRlZmluaXRpb24gb2YgSEFORExFX0RJX0ZMQUciCisjaWYgIShkZWZpbmVkIEhBTkRMRV9ESV9GTEFHIHx8IGRlZmluZWQgSEFORExFX0RJU1BfRkxBRykKKyNlcnJvciAiTWlzc2luZyBtYWNybyBkZWZpbml0aW9uIG9mIEhBTkRMRV9ESSoiCiAjZW5kaWYKIAorI2lmbmRlZiBIQU5ETEVfRElfRkxBRworI2RlZmluZSBIQU5ETEVfRElfRkxBRyhJRCwgTkFNRSkKKyNlbmRpZgorCisjaWZuZGVmIEhBTkRMRV9ESVNQX0ZMQUcKKyNkZWZpbmUgSEFORExFX0RJU1BfRkxBRyhJRCwgTkFNRSkKKyNlbmRpZgorCisvLyBHZW5lcmFsIGZsYWdzIGtlcHQgaW4gRElOb2RlLgorCiBIQU5ETEVfRElfRkxBRygwLCBaZXJvKSAvLyBVc2UgaXQgYXMgemVybyB2YWx1ZS4KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvciBleGFtcGxlOiB2b2lkIGZvbyhESUZsYWdzIEZsYWdzID0gRmxhZ1plcm8pLgogSEFORExFX0RJX0ZMQUcoMSwgUHJpdmF0ZSkKQEAgLTQ1LDcgKzUzLDcgQEAKIEhBTkRMRV9ESV9GTEFHKCgxIDw8IDIxKSwgTWFpblN1YnByb2dyYW0pCiBIQU5ETEVfRElfRkxBRygoMSA8PCAyMiksIFR5cGVQYXNzQnlWYWx1ZSkKIEhBTkRMRV9ESV9GTEFHKCgxIDw8IDIzKSwgVHlwZVBhc3NCeVJlZmVyZW5jZSkKLUhBTkRMRV9ESV9GTEFHKCgxIDw8IDI0KSwgRml4ZWRFbnVtKQorSEFORExFX0RJX0ZMQUcoKDEgPDwgMjQpLCBFbnVtQ2xhc3MpCiBIQU5ETEVfRElfRkxBRygoMSA8PCAyNSksIFRodW5rKQogSEFORExFX0RJX0ZMQUcoKDEgPDwgMjYpLCBUcml2aWFsKQogSEFORExFX0RJX0ZMQUcoKDEgPDwgMjcpLCBCaWdFbmRpYW4pCkBAIC02NCw0ICs3MiwyNSBAQAogI3VuZGVmIERJX0ZMQUdfTEFSR0VTVF9ORUVERUQKICNlbmRpZgogCisvLyBTdWJwcm9ncmFtLXNwZWNpZmljIGZsYWdzIGtlcHQgaW4gRElTdWJwcm9ncmFtLgorCisvLyBVc2UgdGhpcyBhcyBhIHplcm8vaW5pdGlhbGl6YXRpb24gdmFsdWUuCisvLyBGb3IgZXhhbXBsZTogdm9pZCBmb28oRElTUEZsYWdzIEZsYWdzID0gU1BGbGFnWmVybykuCitIQU5ETEVfRElTUF9GTEFHKDAsIFplcm8pCisvLyBWaXJ0dWFsaXR5IGlzIGEgdHdvLWJpdCBlbnVtIGZpZWxkIGluIHRoZSBMU0Igb2YgdGhlIHdvcmQuCisvLyBWYWx1ZXMgc2hvdWxkIG1hdGNoIERXX1ZJUlRVQUxJVFlfKi4KK0hBTkRMRV9ESVNQX0ZMQUcoMXUsIFZpcnR1YWwpCitIQU5ETEVfRElTUF9GTEFHKDJ1LCBQdXJlVmlydHVhbCkKK0hBTkRMRV9ESVNQX0ZMQUcoKDF1IDw8IDIpLCBMb2NhbFRvVW5pdCkKK0hBTkRMRV9ESVNQX0ZMQUcoKDF1IDw8IDMpLCBEZWZpbml0aW9uKQorSEFORExFX0RJU1BfRkxBRygoMXUgPDwgNCksIE9wdGltaXplZCkKKworI2lmZGVmIERJU1BfRkxBR19MQVJHRVNUX05FRURFRAorLy8gSW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoIEFEVC9CaXRtYXNrRW51bS5oLgorLy8gTk9URTogQWx3YXlzIG11c3QgYmUgZXF1YWwgdG8gbGFyZ2VzdCBmbGFnLCBjaGVjayB0aGlzIHdoZW4gYWRkaW5nIG5ldyBmbGFncy4KK0hBTkRMRV9ESVNQX0ZMQUcoKDEgPDwgNCksIExhcmdlc3QpCisjdW5kZWYgRElTUF9GTEFHX0xBUkdFU1RfTkVFREVECisjZW5kaWYKKwogI3VuZGVmIEhBTkRMRV9ESV9GTEFHCisjdW5kZWYgSEFORExFX0RJU1BfRkxBRwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EZWJ1Z0luZm9NZXRhZGF0YS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EZWJ1Z0luZm9NZXRhZGF0YS5oCmluZGV4IDJhOTE4MWUuLjM4NWY2ZTcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRGVidWdJbmZvTWV0YWRhdGEuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RlYnVnSW5mb01ldGFkYXRhLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9JUi9EZWJ1Z0luZm9NZXRhZGF0YS5oIC0gRGVidWcgaW5mbyBtZXRhZGF0YSAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTExOTIsMTggKzExOTEsMTkgQEAKICAgYm9vbCBTcGxpdERlYnVnSW5saW5pbmc7CiAgIGJvb2wgRGVidWdJbmZvRm9yUHJvZmlsaW5nOwogICB1bnNpZ25lZCBOYW1lVGFibGVLaW5kOworICBib29sIFJhbmdlc0Jhc2VBZGRyZXNzOwogCiAgIERJQ29tcGlsZVVuaXQoTExWTUNvbnRleHQgJkMsIFN0b3JhZ2VUeXBlIFN0b3JhZ2UsIHVuc2lnbmVkIFNvdXJjZUxhbmd1YWdlLAogICAgICAgICAgICAgICAgIGJvb2wgSXNPcHRpbWl6ZWQsIHVuc2lnbmVkIFJ1bnRpbWVWZXJzaW9uLAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIEVtaXNzaW9uS2luZCwgdWludDY0X3QgRFdPSWQsIGJvb2wgU3BsaXREZWJ1Z0lubGluaW5nLAogICAgICAgICAgICAgICAgIGJvb2wgRGVidWdJbmZvRm9yUHJvZmlsaW5nLCB1bnNpZ25lZCBOYW1lVGFibGVLaW5kLAotICAgICAgICAgICAgICAgIEFycmF5UmVmPE1ldGFkYXRhICo+IE9wcykKKyAgICAgICAgICAgICAgICBib29sIFJhbmdlc0Jhc2VBZGRyZXNzLCBBcnJheVJlZjxNZXRhZGF0YSAqPiBPcHMpCiAgICAgICA6IERJU2NvcGUoQywgRElDb21waWxlVW5pdEtpbmQsIFN0b3JhZ2UsIGR3YXJmOjpEV19UQUdfY29tcGlsZV91bml0LCBPcHMpLAogICAgICAgICBTb3VyY2VMYW5ndWFnZShTb3VyY2VMYW5ndWFnZSksIElzT3B0aW1pemVkKElzT3B0aW1pemVkKSwKICAgICAgICAgUnVudGltZVZlcnNpb24oUnVudGltZVZlcnNpb24pLCBFbWlzc2lvbktpbmQoRW1pc3Npb25LaW5kKSwKICAgICAgICAgRFdPSWQoRFdPSWQpLCBTcGxpdERlYnVnSW5saW5pbmcoU3BsaXREZWJ1Z0lubGluaW5nKSwKICAgICAgICAgRGVidWdJbmZvRm9yUHJvZmlsaW5nKERlYnVnSW5mb0ZvclByb2ZpbGluZyksCi0gICAgICAgIE5hbWVUYWJsZUtpbmQoTmFtZVRhYmxlS2luZCkgeworICAgICAgICBOYW1lVGFibGVLaW5kKE5hbWVUYWJsZUtpbmQpLCBSYW5nZXNCYXNlQWRkcmVzcyhSYW5nZXNCYXNlQWRkcmVzcykgewogICAgIGFzc2VydChTdG9yYWdlICE9IFVuaXF1ZWQpOwogICB9CiAgIH5ESUNvbXBpbGVVbml0KCkgPSBkZWZhdWx0OwpAQCAtMTIxNywxNSArMTIxNywxNiBAQAogICAgICAgICAgIERJR2xvYmFsVmFyaWFibGVFeHByZXNzaW9uQXJyYXkgR2xvYmFsVmFyaWFibGVzLAogICAgICAgICAgIERJSW1wb3J0ZWRFbnRpdHlBcnJheSBJbXBvcnRlZEVudGl0aWVzLCBESU1hY3JvTm9kZUFycmF5IE1hY3JvcywKICAgICAgICAgICB1aW50NjRfdCBEV09JZCwgYm9vbCBTcGxpdERlYnVnSW5saW5pbmcsIGJvb2wgRGVidWdJbmZvRm9yUHJvZmlsaW5nLAotICAgICAgICAgIHVuc2lnbmVkIE5hbWVUYWJsZUtpbmQsIFN0b3JhZ2VUeXBlIFN0b3JhZ2UsCisgICAgICAgICAgdW5zaWduZWQgTmFtZVRhYmxlS2luZCwgYm9vbCBSYW5nZXNCYXNlQWRkcmVzcywgU3RvcmFnZVR5cGUgU3RvcmFnZSwKICAgICAgICAgICBib29sIFNob3VsZENyZWF0ZSA9IHRydWUpIHsKLSAgICByZXR1cm4gZ2V0SW1wbCgKLSAgICAgICAgQ29udGV4dCwgU291cmNlTGFuZ3VhZ2UsIEZpbGUsIGdldENhbm9uaWNhbE1EU3RyaW5nKENvbnRleHQsIFByb2R1Y2VyKSwKLSAgICAgICAgSXNPcHRpbWl6ZWQsIGdldENhbm9uaWNhbE1EU3RyaW5nKENvbnRleHQsIEZsYWdzKSwgUnVudGltZVZlcnNpb24sCi0gICAgICAgIGdldENhbm9uaWNhbE1EU3RyaW5nKENvbnRleHQsIFNwbGl0RGVidWdGaWxlbmFtZSksIEVtaXNzaW9uS2luZCwKLSAgICAgICAgRW51bVR5cGVzLmdldCgpLCBSZXRhaW5lZFR5cGVzLmdldCgpLCBHbG9iYWxWYXJpYWJsZXMuZ2V0KCksCi0gICAgICAgIEltcG9ydGVkRW50aXRpZXMuZ2V0KCksIE1hY3Jvcy5nZXQoKSwgRFdPSWQsIFNwbGl0RGVidWdJbmxpbmluZywKLSAgICAgICAgRGVidWdJbmZvRm9yUHJvZmlsaW5nLCBOYW1lVGFibGVLaW5kLCBTdG9yYWdlLCBTaG91bGRDcmVhdGUpOworICAgIHJldHVybiBnZXRJbXBsKENvbnRleHQsIFNvdXJjZUxhbmd1YWdlLCBGaWxlLAorICAgICAgICAgICAgICAgICAgIGdldENhbm9uaWNhbE1EU3RyaW5nKENvbnRleHQsIFByb2R1Y2VyKSwgSXNPcHRpbWl6ZWQsCisgICAgICAgICAgICAgICAgICAgZ2V0Q2Fub25pY2FsTURTdHJpbmcoQ29udGV4dCwgRmxhZ3MpLCBSdW50aW1lVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICBnZXRDYW5vbmljYWxNRFN0cmluZyhDb250ZXh0LCBTcGxpdERlYnVnRmlsZW5hbWUpLAorICAgICAgICAgICAgICAgICAgIEVtaXNzaW9uS2luZCwgRW51bVR5cGVzLmdldCgpLCBSZXRhaW5lZFR5cGVzLmdldCgpLAorICAgICAgICAgICAgICAgICAgIEdsb2JhbFZhcmlhYmxlcy5nZXQoKSwgSW1wb3J0ZWRFbnRpdGllcy5nZXQoKSwgTWFjcm9zLmdldCgpLAorICAgICAgICAgICAgICAgICAgIERXT0lkLCBTcGxpdERlYnVnSW5saW5pbmcsIERlYnVnSW5mb0ZvclByb2ZpbGluZywKKyAgICAgICAgICAgICAgICAgICBOYW1lVGFibGVLaW5kLCBSYW5nZXNCYXNlQWRkcmVzcywgU3RvcmFnZSwgU2hvdWxkQ3JlYXRlKTsKICAgfQogICBzdGF0aWMgRElDb21waWxlVW5pdCAqCiAgIGdldEltcGwoTExWTUNvbnRleHQgJkNvbnRleHQsIHVuc2lnbmVkIFNvdXJjZUxhbmd1YWdlLCBNZXRhZGF0YSAqRmlsZSwKQEAgLTEyMzUsMTYgKzEyMzYsMTYgQEAKICAgICAgICAgICBNZXRhZGF0YSAqR2xvYmFsVmFyaWFibGVzLCBNZXRhZGF0YSAqSW1wb3J0ZWRFbnRpdGllcywKICAgICAgICAgICBNZXRhZGF0YSAqTWFjcm9zLCB1aW50NjRfdCBEV09JZCwgYm9vbCBTcGxpdERlYnVnSW5saW5pbmcsCiAgICAgICAgICAgYm9vbCBEZWJ1Z0luZm9Gb3JQcm9maWxpbmcsIHVuc2lnbmVkIE5hbWVUYWJsZUtpbmQsCi0gICAgICAgICAgU3RvcmFnZVR5cGUgU3RvcmFnZSwgYm9vbCBTaG91bGRDcmVhdGUgPSB0cnVlKTsKKyAgICAgICAgICBib29sIFJhbmdlc0Jhc2VBZGRyZXNzLCBTdG9yYWdlVHlwZSBTdG9yYWdlLCBib29sIFNob3VsZENyZWF0ZSA9IHRydWUpOwogCiAgIFRlbXBESUNvbXBpbGVVbml0IGNsb25lSW1wbCgpIGNvbnN0IHsKLSAgICByZXR1cm4gZ2V0VGVtcG9yYXJ5KGdldENvbnRleHQoKSwgZ2V0U291cmNlTGFuZ3VhZ2UoKSwgZ2V0RmlsZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UHJvZHVjZXIoKSwgaXNPcHRpbWl6ZWQoKSwgZ2V0RmxhZ3MoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGdldFJ1bnRpbWVWZXJzaW9uKCksIGdldFNwbGl0RGVidWdGaWxlbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RW1pc3Npb25LaW5kKCksIGdldEVudW1UeXBlcygpLCBnZXRSZXRhaW5lZFR5cGVzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXRHbG9iYWxWYXJpYWJsZXMoKSwgZ2V0SW1wb3J0ZWRFbnRpdGllcygpLAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TWFjcm9zKCksIERXT0lkLCBnZXRTcGxpdERlYnVnSW5saW5pbmcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGdldERlYnVnSW5mb0ZvclByb2ZpbGluZygpLCBnZXROYW1lVGFibGVLaW5kKCkpOworICAgIHJldHVybiBnZXRUZW1wb3JhcnkoCisgICAgICAgIGdldENvbnRleHQoKSwgZ2V0U291cmNlTGFuZ3VhZ2UoKSwgZ2V0RmlsZSgpLCBnZXRQcm9kdWNlcigpLAorICAgICAgICBpc09wdGltaXplZCgpLCBnZXRGbGFncygpLCBnZXRSdW50aW1lVmVyc2lvbigpLCBnZXRTcGxpdERlYnVnRmlsZW5hbWUoKSwKKyAgICAgICAgZ2V0RW1pc3Npb25LaW5kKCksIGdldEVudW1UeXBlcygpLCBnZXRSZXRhaW5lZFR5cGVzKCksCisgICAgICAgIGdldEdsb2JhbFZhcmlhYmxlcygpLCBnZXRJbXBvcnRlZEVudGl0aWVzKCksIGdldE1hY3JvcygpLCBEV09JZCwKKyAgICAgICAgZ2V0U3BsaXREZWJ1Z0lubGluaW5nKCksIGdldERlYnVnSW5mb0ZvclByb2ZpbGluZygpLCBnZXROYW1lVGFibGVLaW5kKCksCisgICAgICAgIGdldFJhbmdlc0Jhc2VBZGRyZXNzKCkpOwogICB9CiAKIHB1YmxpYzoKQEAgLTEyNjAsMTEgKzEyNjEsMTEgQEAKICAgICAgICBESUdsb2JhbFZhcmlhYmxlRXhwcmVzc2lvbkFycmF5IEdsb2JhbFZhcmlhYmxlcywKICAgICAgICBESUltcG9ydGVkRW50aXR5QXJyYXkgSW1wb3J0ZWRFbnRpdGllcywgRElNYWNyb05vZGVBcnJheSBNYWNyb3MsCiAgICAgICAgdWludDY0X3QgRFdPSWQsIGJvb2wgU3BsaXREZWJ1Z0lubGluaW5nLCBib29sIERlYnVnSW5mb0ZvclByb2ZpbGluZywKLSAgICAgICBEZWJ1Z05hbWVUYWJsZUtpbmQgTmFtZVRhYmxlS2luZCksCisgICAgICAgRGVidWdOYW1lVGFibGVLaW5kIE5hbWVUYWJsZUtpbmQsIGJvb2wgUmFuZ2VzQmFzZUFkZHJlc3MpLAogICAgICAgKFNvdXJjZUxhbmd1YWdlLCBGaWxlLCBQcm9kdWNlciwgSXNPcHRpbWl6ZWQsIEZsYWdzLCBSdW50aW1lVmVyc2lvbiwKICAgICAgICBTcGxpdERlYnVnRmlsZW5hbWUsIEVtaXNzaW9uS2luZCwgRW51bVR5cGVzLCBSZXRhaW5lZFR5cGVzLAogICAgICAgIEdsb2JhbFZhcmlhYmxlcywgSW1wb3J0ZWRFbnRpdGllcywgTWFjcm9zLCBEV09JZCwgU3BsaXREZWJ1Z0lubGluaW5nLAotICAgICAgIERlYnVnSW5mb0ZvclByb2ZpbGluZywgKHVuc2lnbmVkKU5hbWVUYWJsZUtpbmQpKQorICAgICAgIERlYnVnSW5mb0ZvclByb2ZpbGluZywgKHVuc2lnbmVkKU5hbWVUYWJsZUtpbmQsIFJhbmdlc0Jhc2VBZGRyZXNzKSkKICAgREVGSU5FX01ETk9ERV9HRVRfRElTVElOQ1RfVEVNUE9SQVJZKAogICAgICAgRElDb21waWxlVW5pdCwKICAgICAgICh1bnNpZ25lZCBTb3VyY2VMYW5ndWFnZSwgTWV0YWRhdGEgKkZpbGUsIE1EU3RyaW5nICpQcm9kdWNlciwKQEAgLTEyNzMsMTEgKzEyNzQsMTEgQEAKICAgICAgICBNZXRhZGF0YSAqUmV0YWluZWRUeXBlcywgTWV0YWRhdGEgKkdsb2JhbFZhcmlhYmxlcywKICAgICAgICBNZXRhZGF0YSAqSW1wb3J0ZWRFbnRpdGllcywgTWV0YWRhdGEgKk1hY3JvcywgdWludDY0X3QgRFdPSWQsCiAgICAgICAgYm9vbCBTcGxpdERlYnVnSW5saW5pbmcsIGJvb2wgRGVidWdJbmZvRm9yUHJvZmlsaW5nLAotICAgICAgIHVuc2lnbmVkIE5hbWVUYWJsZUtpbmQpLAorICAgICAgIHVuc2lnbmVkIE5hbWVUYWJsZUtpbmQsIGJvb2wgUmFuZ2VzQmFzZUFkZHJlc3MpLAogICAgICAgKFNvdXJjZUxhbmd1YWdlLCBGaWxlLCBQcm9kdWNlciwgSXNPcHRpbWl6ZWQsIEZsYWdzLCBSdW50aW1lVmVyc2lvbiwKICAgICAgICBTcGxpdERlYnVnRmlsZW5hbWUsIEVtaXNzaW9uS2luZCwgRW51bVR5cGVzLCBSZXRhaW5lZFR5cGVzLAogICAgICAgIEdsb2JhbFZhcmlhYmxlcywgSW1wb3J0ZWRFbnRpdGllcywgTWFjcm9zLCBEV09JZCwgU3BsaXREZWJ1Z0lubGluaW5nLAotICAgICAgIERlYnVnSW5mb0ZvclByb2ZpbGluZywgTmFtZVRhYmxlS2luZCkpCisgICAgICAgRGVidWdJbmZvRm9yUHJvZmlsaW5nLCBOYW1lVGFibGVLaW5kLCBSYW5nZXNCYXNlQWRkcmVzcykpCiAKICAgVGVtcERJQ29tcGlsZVVuaXQgY2xvbmUoKSBjb25zdCB7IHJldHVybiBjbG9uZUltcGwoKTsgfQogCkBAIC0xMjk0LDkgKzEyOTUsMTQgQEAKICAgRGVidWdOYW1lVGFibGVLaW5kIGdldE5hbWVUYWJsZUtpbmQoKSBjb25zdCB7CiAgICAgcmV0dXJuIChEZWJ1Z05hbWVUYWJsZUtpbmQpTmFtZVRhYmxlS2luZDsKICAgfQotICBTdHJpbmdSZWYgZ2V0UHJvZHVjZXIoKSBjb25zdCB7IHJldHVybiBnZXRTdHJpbmdPcGVyYW5kKDEpOyB9Ci0gIFN0cmluZ1JlZiBnZXRGbGFncygpIGNvbnN0IHsgcmV0dXJuIGdldFN0cmluZ09wZXJhbmQoMik7IH0KLSAgU3RyaW5nUmVmIGdldFNwbGl0RGVidWdGaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJuIGdldFN0cmluZ09wZXJhbmQoMyk7IH0KKyAgYm9vbCBnZXRSYW5nZXNCYXNlQWRkcmVzcygpIGNvbnN0IHsKKyAgICByZXR1cm4gUmFuZ2VzQmFzZUFkZHJlc3M7IH0KKyAgU3RyaW5nUmVmIGdldFByb2R1Y2VyKCkgY29uc3QgeworICAgIHJldHVybiBnZXRTdHJpbmdPcGVyYW5kKDEpOyB9CisgIFN0cmluZ1JlZiBnZXRGbGFncygpIGNvbnN0IHsKKyAgICByZXR1cm4gZ2V0U3RyaW5nT3BlcmFuZCgyKTsgfQorICBTdHJpbmdSZWYgZ2V0U3BsaXREZWJ1Z0ZpbGVuYW1lKCkgY29uc3QgeworICAgIHJldHVybiBnZXRTdHJpbmdPcGVyYW5kKDMpOyB9CiAgIERJQ29tcG9zaXRlVHlwZUFycmF5IGdldEVudW1UeXBlcygpIGNvbnN0IHsKICAgICByZXR1cm4gY2FzdF9vcl9udWxsPE1EVHVwbGU+KGdldFJhd0VudW1UeXBlcygpKTsKICAgfQpAQCAtMTQyMyw2ICsxNDI5LDkgQEAKIAogICAvLy8gUmV2ZXJzZSB0cmFuc2Zvcm1hdGlvbiBhcyBnZXRQcmVmaXhFbmNvZGluZ0Zyb21VbnNpZ25lZC4KICAgc3RhdGljIHVuc2lnbmVkIGdldFVuc2lnbmVkRnJvbVByZWZpeEVuY29kaW5nKHVuc2lnbmVkIFUpIHsKKyAgICBpZiAoVSAmIDEpCisgICAgICByZXR1cm4gMDsKKyAgICBVID4+PSAxOwogICAgIHJldHVybiAoVSAmIDB4MjApID8gKCgoVSA+PiAxKSAmIDB4ZmUwKSB8IChVICYgMHgxZikpIDogKFUgJiAweDFmKTsKICAgfQogCkBAIC0xNDQxLDYgKzE0NTAsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGdldFJhd0lubGluZWRBdCgpLCBpc0ltcGxpY2l0Q29kZSgpKTsKICAgfQogCisgIHN0YXRpYyB1bnNpZ25lZCBlbmNvZGVDb21wb25lbnQodW5zaWduZWQgQykgeworICAgIHJldHVybiAoQyA9PSAwKSA/IDFVIDogKGdldFByZWZpeEVuY29kaW5nRnJvbVVuc2lnbmVkKEMpIDw8IDEpOworICB9CisKKyAgc3RhdGljIHVuc2lnbmVkIGVuY29kaW5nQml0cyh1bnNpZ25lZCBDKSB7CisgICAgcmV0dXJuIChDID09IDApID8gMSA6IChDID4gMHgxZiA/IDE0IDogNyk7CisgIH0KKwogcHVibGljOgogICAvLyBEaXNhbGxvdyByZXBsYWNpbmcgb3BlcmFuZHMuCiAgIHZvaWQgcmVwbGFjZU9wZXJhbmRXaXRoKHVuc2lnbmVkIEksIE1ldGFkYXRhICpOZXcpID0gZGVsZXRlOwpAQCAtMTUxMSwyMCArMTUyOCwzMiBAQAogICAvLy8gb3JkZXIuIElmIHRoZSBsb3dlc3QgYml0IGlzIDEsIHRoZSBjdXJyZW50IGNvbXBvbmVudCBpcyBlbXB0eSwgYW5kIHRoZQogICAvLy8gbmV4dCBjb21wb25lbnQgd2lsbCBzdGFydCBpbiB0aGUgbmV4dCBiaXQuIE90aGVyd2lzZSwgdGhlIGN1cnJlbnQKICAgLy8vIGNvbXBvbmVudCBpcyBub24tZW1wdHksIGFuZCBpdHMgY29udGVudCBzdGFydHMgaW4gdGhlIG5leHQgYml0LiBUaGUKLSAgLy8vIGxlbmd0aCBvZiBlYWNoIGNvbXBvbmVudHMgaXMgZWl0aGVyIDUgYml0IG9yIDEyIGJpdDogaWYgdGhlIDd0aCBiaXQKKyAgLy8vIHZhbHVlIG9mIGVhY2ggY29tcG9uZW50cyBpcyBlaXRoZXIgNSBiaXQgb3IgMTIgYml0OiBpZiB0aGUgN3RoIGJpdAogICAvLy8gaXMgMCwgdGhlIGJpdCAyfjYgKDUgYml0cykgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBjb21wb25lbnQ7IGlmIHRoZQogICAvLy8gN3RoIGJpdCBpcyAxLCB0aGUgYml0IDJ+NiAoNSBiaXRzKSBhbmQgOH4xNCAoNyBiaXRzKSBhcmUgY29tYmluZWQgdG8KLSAgLy8vIHJlcHJlc2VudCB0aGUgY29tcG9uZW50LgorICAvLy8gcmVwcmVzZW50IHRoZSBjb21wb25lbnQuIFRodXMsIHRoZSBudW1iZXIgb2YgYml0cyB1c2VkIGZvciBhIGNvbXBvbmVudAorICAvLy8gaXMgZWl0aGVyIDAgKGlmIGl0IGFuZCBhbGwgdGhlIG5leHQgY29tcG9uZW50cyBhcmUgZW1wdHkpOyAxIC0gaWYgaXQgaXMKKyAgLy8vIGVtcHR5OyA3IC0gaWYgaXRzIHZhbHVlIGlzIHVwIHRvIGFuZCBpbmNsdWRpbmcgMHgxZiAobHNiIGFuZCBtc2IgYXJlIGJvdGgKKyAgLy8vIDApOyBvciAxNCwgaWYgaXRzIHZhbHVlIGlzIHVwIHRvIGFuZCBpbmNsdWRpbmcgMHgxZmYuIE5vdGUgdGhhdCB0aGUgbGFzdAorICAvLy8gY29tcG9uZW50IGlzIGFsc28gY2FwcGVkIGF0IDB4MWZmLCBldmVuIGluIHRoZSBjYXNlIHdoZW4gYm90aCBmaXJzdAorICAvLy8gY29tcG9uZW50cyBhcmUgMCwgYW5kIHdlJ2QgdGVjaG5pY2FsbHkgaGF2ZSAyOSBiaXRzIGF2YWlsYWJsZS4KKyAgLy8vCisgIC8vLyBGb3IgcHJlY2lzZSBjb250cm9sIG92ZXIgdGhlIGRhdGEgYmVpbmcgZW5jb2RlZCBpbiB0aGUgZGlzY3JpbWluYXRvciwKKyAgLy8vIHVzZSBlbmNvZGVEaXNjcmltaW5hdG9yL2RlY29kZURpc2NyaW1pbmF0b3IuCiAKICAgaW5saW5lIHVuc2lnbmVkIGdldERpc2NyaW1pbmF0b3IoKSBjb25zdDsKIAogICAvLy8gUmV0dXJucyBhIG5ldyBESUxvY2F0aW9uIHdpdGggdXBkYXRlZCBccCBEaXNjcmltaW5hdG9yLgogICBpbmxpbmUgY29uc3QgRElMb2NhdGlvbiAqY2xvbmVXaXRoRGlzY3JpbWluYXRvcih1bnNpZ25lZCBEaXNjcmltaW5hdG9yKSBjb25zdDsKIAotICAvLy8gUmV0dXJucyBhIG5ldyBESUxvY2F0aW9uIHdpdGggdXBkYXRlZCBiYXNlIGRpc2NyaW1pbmF0b3IgXHAgQkQuCi0gIGlubGluZSBjb25zdCBESUxvY2F0aW9uICpzZXRCYXNlRGlzY3JpbWluYXRvcih1bnNpZ25lZCBCRCkgY29uc3Q7CisgIC8vLyBSZXR1cm5zIGEgbmV3IERJTG9jYXRpb24gd2l0aCB1cGRhdGVkIGJhc2UgZGlzY3JpbWluYXRvciBccCBCRC4gT25seSB0aGUKKyAgLy8vIGJhc2UgZGlzY3JpbWluYXRvciBpcyBzZXQgaW4gdGhlIG5ldyBESUxvY2F0aW9uLCB0aGUgb3RoZXIgZW5jb2RlZCB2YWx1ZXMKKyAgLy8vIGFyZSBlbGlkZWQuCisgIC8vLyBJZiB0aGUgZGlzY3JpbWluYXRvciBjYW5ub3QgYmUgZW5jb2RlZCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgTm9uZS4KKyAgaW5saW5lIE9wdGlvbmFsPGNvbnN0IERJTG9jYXRpb24gKj4gY2xvbmVXaXRoQmFzZURpc2NyaW1pbmF0b3IodW5zaWduZWQgQkQpIGNvbnN0OwogCi0gIC8vLyBSZXR1cm5zIHRoZSBkdXBsaWNhdGlvbiBmYWN0b3Igc3RvcmVkIGluIHRoZSBkaXNjcmltaW5hdG9yLgorICAvLy8gUmV0dXJucyB0aGUgZHVwbGljYXRpb24gZmFjdG9yIHN0b3JlZCBpbiB0aGUgZGlzY3JpbWluYXRvciwgb3IgMSBpZiBubworICAvLy8gZHVwbGljYXRpb24gZmFjdG9yIChvciAwKSBpcyBlbmNvZGVkLgogICBpbmxpbmUgdW5zaWduZWQgZ2V0RHVwbGljYXRpb25GYWN0b3IoKSBjb25zdDsKIAogICAvLy8gUmV0dXJucyB0aGUgY29weSBpZGVudGlmaWVyIHN0b3JlZCBpbiB0aGUgZGlzY3JpbWluYXRvci4KQEAgLTE1MzMsOSArMTU2MiwxMSBAQAogICAvLy8gUmV0dXJucyB0aGUgYmFzZSBkaXNjcmltaW5hdG9yIHN0b3JlZCBpbiB0aGUgZGlzY3JpbWluYXRvci4KICAgaW5saW5lIHVuc2lnbmVkIGdldEJhc2VEaXNjcmltaW5hdG9yKCkgY29uc3Q7CiAKLSAgLy8vIFJldHVybnMgYSBuZXcgRElMb2NhdGlvbiB3aXRoIGR1cGxpY2F0aW9uIGZhY3RvciBccCBERiBlbmNvZGVkIGluIHRoZQotICAvLy8gZGlzY3JpbWluYXRvci4KLSAgaW5saW5lIGNvbnN0IERJTG9jYXRpb24gKmNsb25lV2l0aER1cGxpY2F0aW9uRmFjdG9yKHVuc2lnbmVkIERGKSBjb25zdDsKKyAgLy8vIFJldHVybnMgYSBuZXcgRElMb2NhdGlvbiB3aXRoIGR1cGxpY2F0aW9uIGZhY3RvciBccCBERiAqIGN1cnJlbnQKKyAgLy8vIGR1cGxpY2F0aW9uIGZhY3RvciBlbmNvZGVkIGluIHRoZSBkaXNjcmltaW5hdG9yLiBUaGUgY3VycmVudCBkdXBsaWNhdGlvbgorICAvLy8gZmFjdG9yIGlzIGFzIGRlZmluZWQgYnkgZ2V0RHVwbGljYXRpb25GYWN0b3IoKS4KKyAgLy8vIFJldHVybnMgTm9uZSBpZiBlbmNvZGluZyBmYWlsZWQuCisgIGlubGluZSBPcHRpb25hbDxjb25zdCBESUxvY2F0aW9uICo+IGNsb25lQnlNdWx0aXBseWluZ0R1cGxpY2F0aW9uRmFjdG9yKHVuc2lnbmVkIERGKSBjb25zdDsKIAogICAvLy8gV2hlbiB0d28gaW5zdHJ1Y3Rpb25zIGFyZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIGluc3RydWN0aW9uIHdlIGFsc28KICAgLy8vIG5lZWQgdG8gY29tYmluZSB0aGUgb3JpZ2luYWwgbG9jYXRpb25zIGludG8gYSBzaW5nbGUgbG9jYXRpb24uCkBAIC0xNTU2LDE5ICsxNTg3LDMyIEBACiAKICAgLy8vIFJldHVybnMgdGhlIGJhc2UgZGlzY3JpbWluYXRvciBmb3IgYSBnaXZlbiBlbmNvZGVkIGRpc2NyaW1pbmF0b3IgXHAgRC4KICAgc3RhdGljIHVuc2lnbmVkIGdldEJhc2VEaXNjcmltaW5hdG9yRnJvbURpc2NyaW1pbmF0b3IodW5zaWduZWQgRCkgewotICAgIGlmICgoRCAmIDEpID09IDApCi0gICAgICByZXR1cm4gZ2V0VW5zaWduZWRGcm9tUHJlZml4RW5jb2RpbmcoRCA+PiAxKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZ2V0VW5zaWduZWRGcm9tUHJlZml4RW5jb2RpbmcoRCk7CiAgIH0KIAotICAvLy8gUmV0dXJucyB0aGUgZHVwbGljYXRpb24gZmFjdG9yIGZvciBhIGdpdmVuIGVuY29kZWQgZGlzY3JpbWluYXRvciBccCBELgorICAvLy8gUmF3IGVuY29kaW5nIG9mIHRoZSBkaXNjcmltaW5hdG9yLiBBUElzIHN1Y2ggYXMgY2xvbmVXaXRoRHVwbGljYXRpb25GYWN0b3IKKyAgLy8vIGhhdmUgY2VydGFpbiBzcGVjaWFsIGNhc2UgYmVoYXZpb3IgKGUuZy4gdHJlYXRpbmcgZW1wdHkgZHVwbGljYXRpb24gZmFjdG9yCisgIC8vLyBhcyB0aGUgdmFsdWUgJzEnKS4KKyAgLy8vIFRoaXMgQVBJLCBpbiBjb25qdW5jdGlvbiB3aXRoIGNsb25lV2l0aERpc2NyaW1pbmF0b3IsIG1heSBiZSB1c2VkIHRvIGVuY29kZQorICAvLy8gdGhlIHJhdyB2YWx1ZXMgcHJvdmlkZWQuIFxwIEJEOiBiYXNlIGRpc2NyaW1pbmF0b3IgXHAgREY6IGR1cGxpY2F0aW9uIGZhY3RvcgorICAvLy8gXHAgQ0k6IGNvcHkgaW5kZXgKKyAgLy8vIFRoZSByZXR1cm4gaXMgTm9uZSBpZiB0aGUgdmFsdWVzIGNhbm5vdCBiZSBlbmNvZGVkIGluIDMyIGJpdHMgLSBmb3IKKyAgLy8vIGV4YW1wbGUsIHZhbHVlcyBmb3IgQkQgb3IgREYgbGFyZ2VyIHRoYW4gMTIgYml0cy4gT3RoZXJ3aXNlLCB0aGUgcmV0dXJuCisgIC8vLyBpcyB0aGUgZW5jb2RlZCB2YWx1ZS4KKyAgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkPiBlbmNvZGVEaXNjcmltaW5hdG9yKHVuc2lnbmVkIEJELCB1bnNpZ25lZCBERiwgdW5zaWduZWQgQ0kpOworCisgIC8vLyBSYXcgZGVjb2RlciBmb3IgdmFsdWVzIGluIGFuIGVuY29kZWQgZGlzY3JpbWluYXRvciBELgorICBzdGF0aWMgdm9pZCBkZWNvZGVEaXNjcmltaW5hdG9yKHVuc2lnbmVkIEQsIHVuc2lnbmVkICZCRCwgdW5zaWduZWQgJkRGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkICZDSSk7CisKKyAgLy8vIFJldHVybnMgdGhlIGR1cGxpY2F0aW9uIGZhY3RvciBmb3IgYSBnaXZlbiBlbmNvZGVkIGRpc2NyaW1pbmF0b3IgXHAgRCwgb3IKKyAgLy8vIDEgaWYgbm8gdmFsdWUgb3IgMCBpcyBlbmNvZGVkLgogICBzdGF0aWMgdW5zaWduZWQgZ2V0RHVwbGljYXRpb25GYWN0b3JGcm9tRGlzY3JpbWluYXRvcih1bnNpZ25lZCBEKSB7CiAgICAgRCA9IGdldE5leHRDb21wb25lbnRJbkRpc2NyaW1pbmF0b3IoRCk7Ci0gICAgaWYgKEQgPT0gMCB8fCAoRCAmIDEpKQorICAgIHVuc2lnbmVkIFJldCA9IGdldFVuc2lnbmVkRnJvbVByZWZpeEVuY29kaW5nKEQpOworICAgIGlmIChSZXQgPT0gMCkKICAgICAgIHJldHVybiAxOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBnZXRVbnNpZ25lZEZyb21QcmVmaXhFbmNvZGluZyhEID4+IDEpOworICAgIHJldHVybiBSZXQ7CiAgIH0KIAogICAvLy8gUmV0dXJucyB0aGUgY29weSBpZGVudGlmaWVyIGZvciBhIGdpdmVuIGVuY29kZWQgZGlzY3JpbWluYXRvciBccCBELgpAQCAtMTYwNywxMDIgKzE2NTEsMTE4IEBACiAgIC8vLyBuZWdhdGl2ZS4KICAgaW50IFRoaXNBZGp1c3RtZW50OwogCi0gIC8vIFZpcnR1YWxpdHkgY2FuIG9ubHkgYXNzdW1lIHRocmVlIHZhbHVlcywgc28gd2UgY2FuIHBhY2sKLSAgLy8gaW4gMiBiaXRzIChub25lL3B1cmUvcHVyZV92aXJ0dWFsKS4KLSAgdW5zaWduZWQgVmlydHVhbGl0eSA6IDI7CitwdWJsaWM6CisgIC8vLyBEZWJ1ZyBpbmZvIHN1YnByb2dyYW0gZmxhZ3MuCisgIGVudW0gRElTUEZsYWdzIDogdWludDMyX3QgeworI2RlZmluZSBIQU5ETEVfRElTUF9GTEFHKElELCBOQU1FKSBTUEZsYWcjI05BTUUgPSBJRCwKKyNkZWZpbmUgRElTUF9GTEFHX0xBUkdFU1RfTkVFREVECisjaW5jbHVkZSAibGx2bS9JUi9EZWJ1Z0luZm9GbGFncy5kZWYiCisgICAgU1BGbGFnTm9udmlydHVhbCA9IFNQRmxhZ1plcm8sCisgICAgU1BGbGFnVmlydHVhbGl0eSA9IFNQRmxhZ1ZpcnR1YWwgfCBTUEZsYWdQdXJlVmlydHVhbCwKKyAgICBMTFZNX01BUktfQVNfQklUTUFTS19FTlVNKFNQRmxhZ0xhcmdlc3QpCisgIH07CiAKLSAgLy8gVGhlc2UgYXJlIGJvb2xlYW4gZmxhZ3Mgc28gb25lIGJpdCBpcyBlbm91Z2guCi0gIC8vIE1TVkMgc3RhcnRzIGEgbmV3IGNvbnRhaW5lciBmaWVsZCBldmVyeSB0aW1lIHRoZSBiYXNlCi0gIC8vIHR5cGUgY2hhbmdlcyBzbyB3ZSBjYW4ndCB1c2UgJ2Jvb2wnIHRvIGVuc3VyZSB0aGVzZSBiaXRzCi0gIC8vIGFyZSBwYWNrZWQuCi0gIHVuc2lnbmVkIElzTG9jYWxUb1VuaXQgOiAxOwotICB1bnNpZ25lZCBJc0RlZmluaXRpb24gOiAxOwotICB1bnNpZ25lZCBJc09wdGltaXplZCA6IDE7CisgIHN0YXRpYyBESVNQRmxhZ3MgZ2V0RmxhZyhTdHJpbmdSZWYgRmxhZyk7CisgIHN0YXRpYyBTdHJpbmdSZWYgZ2V0RmxhZ1N0cmluZyhESVNQRmxhZ3MgRmxhZyk7CiAKLSAgdW5zaWduZWQgUGFkZGluZyA6IDM7CisgIC8vLyBTcGxpdCB1cCBhIGZsYWdzIGJpdGZpZWxkIGZvciBlYXNpZXIgcHJpbnRpbmcuCisgIC8vLworICAvLy8gU3BsaXQgXGMgRmxhZ3MgaW50byBcYyBTcGxpdEZsYWdzLCBhIHZlY3RvciBvZiBpdHMgY29tcG9uZW50cy4gIFJldHVybnMKKyAgLy8vIGFueSByZW1haW5pbmcgKHVucmVjb2duaXplZCkgYml0cy4KKyAgc3RhdGljIERJU1BGbGFncyBzcGxpdEZsYWdzKERJU1BGbGFncyBGbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNtYWxsVmVjdG9ySW1wbDxESVNQRmxhZ3M+ICZTcGxpdEZsYWdzKTsKIAorICAvLyBIZWxwZXIgZm9yIGNvbnZlcnRpbmcgb2xkIGJpdGZpZWxkcyB0byBuZXcgZmxhZ3Mgd29yZC4KKyAgc3RhdGljIERJU1BGbGFncyB0b1NQRmxhZ3MoYm9vbCBJc0xvY2FsVG9Vbml0LCBib29sIElzRGVmaW5pdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBJc09wdGltaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgVmlydHVhbGl0eSA9IFNQRmxhZ05vbnZpcnR1YWwpIHsKKyAgICAvLyBXZSdyZSBhc3N1bWluZyB2aXJ0dWFsaXR5IGlzIHRoZSBsb3ctb3JkZXIgZmllbGQuCisgICAgc3RhdGljX2Fzc2VydCgKKyAgICAgICAgaW50KFNQRmxhZ1ZpcnR1YWwpID09IGludChkd2FyZjo6RFdfVklSVFVBTElUWV92aXJ0dWFsKSAmJgorICAgICAgICAgICAgaW50KFNQRmxhZ1B1cmVWaXJ0dWFsKSA9PSBpbnQoZHdhcmY6OkRXX1ZJUlRVQUxJVFlfcHVyZV92aXJ0dWFsKSwKKyAgICAgICAgIlZpcnR1YWxpdHkgY29uc3RhbnQgbWlzbWF0Y2giKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RElTUEZsYWdzPigKKyAgICAgICAgKFZpcnR1YWxpdHkgJiBTUEZsYWdWaXJ0dWFsaXR5KSB8CisgICAgICAgIChJc0xvY2FsVG9Vbml0ID8gU1BGbGFnTG9jYWxUb1VuaXQgOiBTUEZsYWdaZXJvKSB8CisgICAgICAgIChJc0RlZmluaXRpb24gPyBTUEZsYWdEZWZpbml0aW9uIDogU1BGbGFnWmVybykgfAorICAgICAgICAoSXNPcHRpbWl6ZWQgPyBTUEZsYWdPcHRpbWl6ZWQgOiBTUEZsYWdaZXJvKSk7CisgIH0KKworcHJpdmF0ZToKICAgRElGbGFncyBGbGFnczsKKyAgRElTUEZsYWdzIFNQRmxhZ3M7CiAKICAgRElTdWJwcm9ncmFtKExMVk1Db250ZXh0ICZDLCBTdG9yYWdlVHlwZSBTdG9yYWdlLCB1bnNpZ25lZCBMaW5lLAotICAgICAgICAgICAgICAgdW5zaWduZWQgU2NvcGVMaW5lLCB1bnNpZ25lZCBWaXJ0dWFsaXR5LCB1bnNpZ25lZCBWaXJ0dWFsSW5kZXgsCi0gICAgICAgICAgICAgICBpbnQgVGhpc0FkanVzdG1lbnQsIERJRmxhZ3MgRmxhZ3MsIGJvb2wgSXNMb2NhbFRvVW5pdCwKLSAgICAgICAgICAgICAgIGJvb2wgSXNEZWZpbml0aW9uLCBib29sIElzT3B0aW1pemVkLCBBcnJheVJlZjxNZXRhZGF0YSAqPiBPcHMpCisgICAgICAgICAgICAgICB1bnNpZ25lZCBTY29wZUxpbmUsIHVuc2lnbmVkIFZpcnR1YWxJbmRleCwgaW50IFRoaXNBZGp1c3RtZW50LAorICAgICAgICAgICAgICAgRElGbGFncyBGbGFncywgRElTUEZsYWdzIFNQRmxhZ3MsIEFycmF5UmVmPE1ldGFkYXRhICo+IE9wcykKICAgICAgIDogRElMb2NhbFNjb3BlKEMsIERJU3VicHJvZ3JhbUtpbmQsIFN0b3JhZ2UsIGR3YXJmOjpEV19UQUdfc3VicHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAgIE9wcyksCiAgICAgICAgIExpbmUoTGluZSksIFNjb3BlTGluZShTY29wZUxpbmUpLCBWaXJ0dWFsSW5kZXgoVmlydHVhbEluZGV4KSwKLSAgICAgICAgVGhpc0FkanVzdG1lbnQoVGhpc0FkanVzdG1lbnQpLCBWaXJ0dWFsaXR5KFZpcnR1YWxpdHkpLAotICAgICAgICBJc0xvY2FsVG9Vbml0KElzTG9jYWxUb1VuaXQpLCBJc0RlZmluaXRpb24oSXNEZWZpbml0aW9uKSwKLSAgICAgICAgSXNPcHRpbWl6ZWQoSXNPcHRpbWl6ZWQpLCBGbGFncyhGbGFncykgeworICAgICAgICBUaGlzQWRqdXN0bWVudChUaGlzQWRqdXN0bWVudCksIEZsYWdzKEZsYWdzKSwgU1BGbGFncyhTUEZsYWdzKSB7CiAgICAgc3RhdGljX2Fzc2VydChkd2FyZjo6RFdfVklSVFVBTElUWV9tYXggPCA0LCAiVmlydHVhbGl0eSBvdXQgb2YgcmFuZ2UiKTsKLSAgICBhc3NlcnQoVmlydHVhbGl0eSA8IDQgJiYgIlZpcnR1YWxpdHkgb3V0IG9mIHJhbmdlIik7CiAgIH0KICAgfkRJU3VicHJvZ3JhbSgpID0gZGVmYXVsdDsKIAogICBzdGF0aWMgRElTdWJwcm9ncmFtICoKICAgZ2V0SW1wbChMTFZNQ29udGV4dCAmQ29udGV4dCwgRElTY29wZVJlZiBTY29wZSwgU3RyaW5nUmVmIE5hbWUsCiAgICAgICAgICAgU3RyaW5nUmVmIExpbmthZ2VOYW1lLCBESUZpbGUgKkZpbGUsIHVuc2lnbmVkIExpbmUsCi0gICAgICAgICAgRElTdWJyb3V0aW5lVHlwZSAqVHlwZSwgYm9vbCBJc0xvY2FsVG9Vbml0LCBib29sIElzRGVmaW5pdGlvbiwKLSAgICAgICAgICB1bnNpZ25lZCBTY29wZUxpbmUsIERJVHlwZVJlZiBDb250YWluaW5nVHlwZSwgdW5zaWduZWQgVmlydHVhbGl0eSwKKyAgICAgICAgICBESVN1YnJvdXRpbmVUeXBlICpUeXBlLCB1bnNpZ25lZCBTY29wZUxpbmUsIERJVHlwZVJlZiBDb250YWluaW5nVHlwZSwKICAgICAgICAgICB1bnNpZ25lZCBWaXJ0dWFsSW5kZXgsIGludCBUaGlzQWRqdXN0bWVudCwgRElGbGFncyBGbGFncywKLSAgICAgICAgICBib29sIElzT3B0aW1pemVkLCBESUNvbXBpbGVVbml0ICpVbml0LAorICAgICAgICAgIERJU1BGbGFncyBTUEZsYWdzLCBESUNvbXBpbGVVbml0ICpVbml0LAogICAgICAgICAgIERJVGVtcGxhdGVQYXJhbWV0ZXJBcnJheSBUZW1wbGF0ZVBhcmFtcywgRElTdWJwcm9ncmFtICpEZWNsYXJhdGlvbiwKICAgICAgICAgICBESU5vZGVBcnJheSBSZXRhaW5lZE5vZGVzLCBESVR5cGVBcnJheSBUaHJvd25UeXBlcywKICAgICAgICAgICBTdG9yYWdlVHlwZSBTdG9yYWdlLCBib29sIFNob3VsZENyZWF0ZSA9IHRydWUpIHsKICAgICByZXR1cm4gZ2V0SW1wbChDb250ZXh0LCBTY29wZSwgZ2V0Q2Fub25pY2FsTURTdHJpbmcoQ29udGV4dCwgTmFtZSksCiAgICAgICAgICAgICAgICAgICAgZ2V0Q2Fub25pY2FsTURTdHJpbmcoQ29udGV4dCwgTGlua2FnZU5hbWUpLCBGaWxlLCBMaW5lLCBUeXBlLAotICAgICAgICAgICAgICAgICAgIElzTG9jYWxUb1VuaXQsIElzRGVmaW5pdGlvbiwgU2NvcGVMaW5lLCBDb250YWluaW5nVHlwZSwKLSAgICAgICAgICAgICAgICAgICBWaXJ0dWFsaXR5LCBWaXJ0dWFsSW5kZXgsIFRoaXNBZGp1c3RtZW50LCBGbGFncywgSXNPcHRpbWl6ZWQsCi0gICAgICAgICAgICAgICAgICAgVW5pdCwgVGVtcGxhdGVQYXJhbXMuZ2V0KCksIERlY2xhcmF0aW9uLCBSZXRhaW5lZE5vZGVzLmdldCgpLAotICAgICAgICAgICAgICAgICAgIFRocm93blR5cGVzLmdldCgpLCBTdG9yYWdlLCBTaG91bGRDcmVhdGUpOworICAgICAgICAgICAgICAgICAgIFNjb3BlTGluZSwgQ29udGFpbmluZ1R5cGUsIFZpcnR1YWxJbmRleCwgVGhpc0FkanVzdG1lbnQsCisgICAgICAgICAgICAgICAgICAgRmxhZ3MsIFNQRmxhZ3MsIFVuaXQsIFRlbXBsYXRlUGFyYW1zLmdldCgpLCBEZWNsYXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICBSZXRhaW5lZE5vZGVzLmdldCgpLCBUaHJvd25UeXBlcy5nZXQoKSwgU3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICBTaG91bGRDcmVhdGUpOwogICB9Ci0gIHN0YXRpYyBESVN1YnByb2dyYW0gKgotICBnZXRJbXBsKExMVk1Db250ZXh0ICZDb250ZXh0LCBNZXRhZGF0YSAqU2NvcGUsIE1EU3RyaW5nICpOYW1lLAotICAgICAgICAgIE1EU3RyaW5nICpMaW5rYWdlTmFtZSwgTWV0YWRhdGEgKkZpbGUsIHVuc2lnbmVkIExpbmUsIE1ldGFkYXRhICpUeXBlLAotICAgICAgICAgIGJvb2wgSXNMb2NhbFRvVW5pdCwgYm9vbCBJc0RlZmluaXRpb24sIHVuc2lnbmVkIFNjb3BlTGluZSwKLSAgICAgICAgICBNZXRhZGF0YSAqQ29udGFpbmluZ1R5cGUsIHVuc2lnbmVkIFZpcnR1YWxpdHksIHVuc2lnbmVkIFZpcnR1YWxJbmRleCwKLSAgICAgICAgICBpbnQgVGhpc0FkanVzdG1lbnQsIERJRmxhZ3MgRmxhZ3MsIGJvb2wgSXNPcHRpbWl6ZWQsIE1ldGFkYXRhICpVbml0LAotICAgICAgICAgIE1ldGFkYXRhICpUZW1wbGF0ZVBhcmFtcywgTWV0YWRhdGEgKkRlY2xhcmF0aW9uLCBNZXRhZGF0YSAqUmV0YWluZWROb2RlcywKLSAgICAgICAgICBNZXRhZGF0YSAqVGhyb3duVHlwZXMsIFN0b3JhZ2VUeXBlIFN0b3JhZ2UsIGJvb2wgU2hvdWxkQ3JlYXRlID0gdHJ1ZSk7CisgIHN0YXRpYyBESVN1YnByb2dyYW0gKmdldEltcGwoTExWTUNvbnRleHQgJkNvbnRleHQsIE1ldGFkYXRhICpTY29wZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRFN0cmluZyAqTmFtZSwgTURTdHJpbmcgKkxpbmthZ2VOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhICpGaWxlLCB1bnNpZ25lZCBMaW5lLCBNZXRhZGF0YSAqVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBTY29wZUxpbmUsIE1ldGFkYXRhICpDb250YWluaW5nVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBWaXJ0dWFsSW5kZXgsIGludCBUaGlzQWRqdXN0bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESUZsYWdzIEZsYWdzLCBESVNQRmxhZ3MgU1BGbGFncywgTWV0YWRhdGEgKlVuaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGEgKlRlbXBsYXRlUGFyYW1zLCBNZXRhZGF0YSAqRGVjbGFyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGEgKlJldGFpbmVkTm9kZXMsIE1ldGFkYXRhICpUaHJvd25UeXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlVHlwZSBTdG9yYWdlLCBib29sIFNob3VsZENyZWF0ZSA9IHRydWUpOwogCiAgIFRlbXBESVN1YnByb2dyYW0gY2xvbmVJbXBsKCkgY29uc3QgewogICAgIHJldHVybiBnZXRUZW1wb3JhcnkoZ2V0Q29udGV4dCgpLCBnZXRTY29wZSgpLCBnZXROYW1lKCksIGdldExpbmthZ2VOYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXRGaWxlKCksIGdldExpbmUoKSwgZ2V0VHlwZSgpLCBpc0xvY2FsVG9Vbml0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICBpc0RlZmluaXRpb24oKSwgZ2V0U2NvcGVMaW5lKCksIGdldENvbnRhaW5pbmdUeXBlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXRWaXJ0dWFsaXR5KCksIGdldFZpcnR1YWxJbmRleCgpLCBnZXRUaGlzQWRqdXN0bWVudCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RmxhZ3MoKSwgaXNPcHRpbWl6ZWQoKSwgZ2V0VW5pdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGVtcGxhdGVQYXJhbXMoKSwgZ2V0RGVjbGFyYXRpb24oKSwgZ2V0UmV0YWluZWROb2RlcygpLAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGhyb3duVHlwZXMoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBnZXRGaWxlKCksIGdldExpbmUoKSwgZ2V0VHlwZSgpLCBnZXRTY29wZUxpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbnRhaW5pbmdUeXBlKCksIGdldFZpcnR1YWxJbmRleCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGhpc0FkanVzdG1lbnQoKSwgZ2V0RmxhZ3MoKSwgZ2V0U1BGbGFncygpLAorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VW5pdCgpLCBnZXRUZW1wbGF0ZVBhcmFtcygpLCBnZXREZWNsYXJhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmV0YWluZWROb2RlcygpLCBnZXRUaHJvd25UeXBlcygpKTsKICAgfQogCiBwdWJsaWM6Ci0gIERFRklORV9NRE5PREVfR0VUKERJU3VicHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgKERJU2NvcGVSZWYgU2NvcGUsIFN0cmluZ1JlZiBOYW1lLCBTdHJpbmdSZWYgTGlua2FnZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICBESUZpbGUgKkZpbGUsIHVuc2lnbmVkIExpbmUsIERJU3Vicm91dGluZVR5cGUgKlR5cGUsCi0gICAgICAgICAgICAgICAgICAgICBib29sIElzTG9jYWxUb1VuaXQsIGJvb2wgSXNEZWZpbml0aW9uLCB1bnNpZ25lZCBTY29wZUxpbmUsCi0gICAgICAgICAgICAgICAgICAgICBESVR5cGVSZWYgQ29udGFpbmluZ1R5cGUsIHVuc2lnbmVkIFZpcnR1YWxpdHksCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBWaXJ0dWFsSW5kZXgsIGludCBUaGlzQWRqdXN0bWVudCwgRElGbGFncyBGbGFncywKLSAgICAgICAgICAgICAgICAgICAgIGJvb2wgSXNPcHRpbWl6ZWQsIERJQ29tcGlsZVVuaXQgKlVuaXQsCi0gICAgICAgICAgICAgICAgICAgICBESVRlbXBsYXRlUGFyYW1ldGVyQXJyYXkgVGVtcGxhdGVQYXJhbXMgPSBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgRElTdWJwcm9ncmFtICpEZWNsYXJhdGlvbiA9IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICBESU5vZGVBcnJheSBSZXRhaW5lZE5vZGVzID0gbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgIERJVHlwZUFycmF5IFRocm93blR5cGVzID0gbnVsbHB0ciksCi0gICAgICAgICAgICAgICAgICAgIChTY29wZSwgTmFtZSwgTGlua2FnZU5hbWUsIEZpbGUsIExpbmUsIFR5cGUsIElzTG9jYWxUb1VuaXQsCi0gICAgICAgICAgICAgICAgICAgICBJc0RlZmluaXRpb24sIFNjb3BlTGluZSwgQ29udGFpbmluZ1R5cGUsIFZpcnR1YWxpdHksCi0gICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsSW5kZXgsIFRoaXNBZGp1c3RtZW50LCBGbGFncywgSXNPcHRpbWl6ZWQsIFVuaXQsCi0gICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZVBhcmFtcywgRGVjbGFyYXRpb24sIFJldGFpbmVkTm9kZXMsIFRocm93blR5cGVzKSkKKyAgREVGSU5FX01ETk9ERV9HRVQoCisgICAgICBESVN1YnByb2dyYW0sCisgICAgICAoRElTY29wZVJlZiBTY29wZSwgU3RyaW5nUmVmIE5hbWUsIFN0cmluZ1JlZiBMaW5rYWdlTmFtZSwgRElGaWxlICpGaWxlLAorICAgICAgIHVuc2lnbmVkIExpbmUsIERJU3Vicm91dGluZVR5cGUgKlR5cGUsIHVuc2lnbmVkIFNjb3BlTGluZSwKKyAgICAgICBESVR5cGVSZWYgQ29udGFpbmluZ1R5cGUsIHVuc2lnbmVkIFZpcnR1YWxJbmRleCwgaW50IFRoaXNBZGp1c3RtZW50LAorICAgICAgIERJRmxhZ3MgRmxhZ3MsIERJU1BGbGFncyBTUEZsYWdzLCBESUNvbXBpbGVVbml0ICpVbml0LAorICAgICAgIERJVGVtcGxhdGVQYXJhbWV0ZXJBcnJheSBUZW1wbGF0ZVBhcmFtcyA9IG51bGxwdHIsCisgICAgICAgRElTdWJwcm9ncmFtICpEZWNsYXJhdGlvbiA9IG51bGxwdHIsIERJTm9kZUFycmF5IFJldGFpbmVkTm9kZXMgPSBudWxscHRyLAorICAgICAgIERJVHlwZUFycmF5IFRocm93blR5cGVzID0gbnVsbHB0ciksCisgICAgICAoU2NvcGUsIE5hbWUsIExpbmthZ2VOYW1lLCBGaWxlLCBMaW5lLCBUeXBlLCBTY29wZUxpbmUsIENvbnRhaW5pbmdUeXBlLAorICAgICAgIFZpcnR1YWxJbmRleCwgVGhpc0FkanVzdG1lbnQsIEZsYWdzLCBTUEZsYWdzLCBVbml0LCBUZW1wbGF0ZVBhcmFtcywKKyAgICAgICBEZWNsYXJhdGlvbiwgUmV0YWluZWROb2RlcywgVGhyb3duVHlwZXMpKQorCiAgIERFRklORV9NRE5PREVfR0VUKAogICAgICAgRElTdWJwcm9ncmFtLAogICAgICAgKE1ldGFkYXRhICogU2NvcGUsIE1EU3RyaW5nICpOYW1lLCBNRFN0cmluZyAqTGlua2FnZU5hbWUsIE1ldGFkYXRhICpGaWxlLAotICAgICAgIHVuc2lnbmVkIExpbmUsIE1ldGFkYXRhICpUeXBlLCBib29sIElzTG9jYWxUb1VuaXQsIGJvb2wgSXNEZWZpbml0aW9uLAotICAgICAgIHVuc2lnbmVkIFNjb3BlTGluZSwgTWV0YWRhdGEgKkNvbnRhaW5pbmdUeXBlLCB1bnNpZ25lZCBWaXJ0dWFsaXR5LAotICAgICAgIHVuc2lnbmVkIFZpcnR1YWxJbmRleCwgaW50IFRoaXNBZGp1c3RtZW50LCBESUZsYWdzIEZsYWdzLAotICAgICAgIGJvb2wgSXNPcHRpbWl6ZWQsIE1ldGFkYXRhICpVbml0LCBNZXRhZGF0YSAqVGVtcGxhdGVQYXJhbXMgPSBudWxscHRyLAotICAgICAgIE1ldGFkYXRhICpEZWNsYXJhdGlvbiA9IG51bGxwdHIsIE1ldGFkYXRhICpSZXRhaW5lZE5vZGVzID0gbnVsbHB0ciwKLSAgICAgICBNZXRhZGF0YSAqVGhyb3duVHlwZXMgPSBudWxscHRyKSwKLSAgICAgIChTY29wZSwgTmFtZSwgTGlua2FnZU5hbWUsIEZpbGUsIExpbmUsIFR5cGUsIElzTG9jYWxUb1VuaXQsIElzRGVmaW5pdGlvbiwKLSAgICAgICBTY29wZUxpbmUsIENvbnRhaW5pbmdUeXBlLCBWaXJ0dWFsaXR5LCBWaXJ0dWFsSW5kZXgsIFRoaXNBZGp1c3RtZW50LAotICAgICAgIEZsYWdzLCBJc09wdGltaXplZCwgVW5pdCwgVGVtcGxhdGVQYXJhbXMsIERlY2xhcmF0aW9uLCBSZXRhaW5lZE5vZGVzLAotICAgICAgIFRocm93blR5cGVzKSkKKyAgICAgICB1bnNpZ25lZCBMaW5lLCBNZXRhZGF0YSAqVHlwZSwgdW5zaWduZWQgU2NvcGVMaW5lLAorICAgICAgIE1ldGFkYXRhICpDb250YWluaW5nVHlwZSwgdW5zaWduZWQgVmlydHVhbEluZGV4LCBpbnQgVGhpc0FkanVzdG1lbnQsCisgICAgICAgRElGbGFncyBGbGFncywgRElTUEZsYWdzIFNQRmxhZ3MsIE1ldGFkYXRhICpVbml0LAorICAgICAgIE1ldGFkYXRhICpUZW1wbGF0ZVBhcmFtcyA9IG51bGxwdHIsIE1ldGFkYXRhICpEZWNsYXJhdGlvbiA9IG51bGxwdHIsCisgICAgICAgTWV0YWRhdGEgKlJldGFpbmVkTm9kZXMgPSBudWxscHRyLCBNZXRhZGF0YSAqVGhyb3duVHlwZXMgPSBudWxscHRyKSwKKyAgICAgIChTY29wZSwgTmFtZSwgTGlua2FnZU5hbWUsIEZpbGUsIExpbmUsIFR5cGUsIFNjb3BlTGluZSwgQ29udGFpbmluZ1R5cGUsCisgICAgICAgVmlydHVhbEluZGV4LCBUaGlzQWRqdXN0bWVudCwgRmxhZ3MsIFNQRmxhZ3MsIFVuaXQsIFRlbXBsYXRlUGFyYW1zLAorICAgICAgIERlY2xhcmF0aW9uLCBSZXRhaW5lZE5vZGVzLCBUaHJvd25UeXBlcykpCiAKICAgVGVtcERJU3VicHJvZ3JhbSBjbG9uZSgpIGNvbnN0IHsgcmV0dXJuIGNsb25lSW1wbCgpOyB9CiAKQEAgLTE3MTUsMTQgKzE3NzUsMTUgQEAKIAogcHVibGljOgogICB1bnNpZ25lZCBnZXRMaW5lKCkgY29uc3QgeyByZXR1cm4gTGluZTsgfQotICB1bnNpZ25lZCBnZXRWaXJ0dWFsaXR5KCkgY29uc3QgeyByZXR1cm4gVmlydHVhbGl0eTsgfQorICB1bnNpZ25lZCBnZXRWaXJ0dWFsaXR5KCkgY29uc3QgeyByZXR1cm4gZ2V0U1BGbGFncygpICYgU1BGbGFnVmlydHVhbGl0eTsgfQogICB1bnNpZ25lZCBnZXRWaXJ0dWFsSW5kZXgoKSBjb25zdCB7IHJldHVybiBWaXJ0dWFsSW5kZXg7IH0KICAgaW50IGdldFRoaXNBZGp1c3RtZW50KCkgY29uc3QgeyByZXR1cm4gVGhpc0FkanVzdG1lbnQ7IH0KICAgdW5zaWduZWQgZ2V0U2NvcGVMaW5lKCkgY29uc3QgeyByZXR1cm4gU2NvcGVMaW5lOyB9CiAgIERJRmxhZ3MgZ2V0RmxhZ3MoKSBjb25zdCB7IHJldHVybiBGbGFnczsgfQotICBib29sIGlzTG9jYWxUb1VuaXQoKSBjb25zdCB7IHJldHVybiBJc0xvY2FsVG9Vbml0OyB9Ci0gIGJvb2wgaXNEZWZpbml0aW9uKCkgY29uc3QgeyByZXR1cm4gSXNEZWZpbml0aW9uOyB9Ci0gIGJvb2wgaXNPcHRpbWl6ZWQoKSBjb25zdCB7IHJldHVybiBJc09wdGltaXplZDsgfQorICBESVNQRmxhZ3MgZ2V0U1BGbGFncygpIGNvbnN0IHsgcmV0dXJuIFNQRmxhZ3M7IH0KKyAgYm9vbCBpc0xvY2FsVG9Vbml0KCkgY29uc3QgeyByZXR1cm4gZ2V0U1BGbGFncygpICYgU1BGbGFnTG9jYWxUb1VuaXQ7IH0KKyAgYm9vbCBpc0RlZmluaXRpb24oKSBjb25zdCB7IHJldHVybiBnZXRTUEZsYWdzKCkgJiBTUEZsYWdEZWZpbml0aW9uOyB9CisgIGJvb2wgaXNPcHRpbWl6ZWQoKSBjb25zdCB7IHJldHVybiBnZXRTUEZsYWdzKCkgJiBTUEZsYWdPcHRpbWl6ZWQ7IH0KIAogICBib29sIGlzQXJ0aWZpY2lhbCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWdzKCkgJiBGbGFnQXJ0aWZpY2lhbDsgfQogICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsKQEAgLTE5NzUsMjggKzIwMzYsMjYgQEAKICAgcmV0dXJuIGdldENvcHlJZGVudGlmaWVyRnJvbURpc2NyaW1pbmF0b3IoZ2V0RGlzY3JpbWluYXRvcigpKTsKIH0KIAotY29uc3QgRElMb2NhdGlvbiAqRElMb2NhdGlvbjo6c2V0QmFzZURpc2NyaW1pbmF0b3IodW5zaWduZWQgRCkgY29uc3QgewotICBpZiAoRCA9PSAwKQorT3B0aW9uYWw8Y29uc3QgRElMb2NhdGlvbiAqPiBESUxvY2F0aW9uOjpjbG9uZVdpdGhCYXNlRGlzY3JpbWluYXRvcih1bnNpZ25lZCBEKSBjb25zdCB7CisgIHVuc2lnbmVkIEJELCBERiwgQ0k7CisgIGRlY29kZURpc2NyaW1pbmF0b3IoZ2V0RGlzY3JpbWluYXRvcigpLCBCRCwgREYsIENJKTsKKyAgaWYgKEQgPT0gQkQpCiAgICAgcmV0dXJuIHRoaXM7Ci0gIGVsc2UKLSAgICByZXR1cm4gY2xvbmVXaXRoRGlzY3JpbWluYXRvcihnZXRQcmVmaXhFbmNvZGluZ0Zyb21VbnNpZ25lZChEKSA8PCAxKTsKKyAgaWYgKE9wdGlvbmFsPHVuc2lnbmVkPiBFbmNvZGVkID0gZW5jb2RlRGlzY3JpbWluYXRvcihELCBERiwgQ0kpKQorICAgIHJldHVybiBjbG9uZVdpdGhEaXNjcmltaW5hdG9yKCpFbmNvZGVkKTsKKyAgcmV0dXJuIE5vbmU7CiB9CiAKLWNvbnN0IERJTG9jYXRpb24gKkRJTG9jYXRpb246OmNsb25lV2l0aER1cGxpY2F0aW9uRmFjdG9yKHVuc2lnbmVkIERGKSBjb25zdCB7CitPcHRpb25hbDxjb25zdCBESUxvY2F0aW9uICo+IERJTG9jYXRpb246OmNsb25lQnlNdWx0aXBseWluZ0R1cGxpY2F0aW9uRmFjdG9yKHVuc2lnbmVkIERGKSBjb25zdCB7CiAgIERGICo9IGdldER1cGxpY2F0aW9uRmFjdG9yKCk7CiAgIGlmIChERiA8PSAxKQogICAgIHJldHVybiB0aGlzOwogCiAgIHVuc2lnbmVkIEJEID0gZ2V0QmFzZURpc2NyaW1pbmF0b3IoKTsKLSAgdW5zaWduZWQgQ0kgPSBnZXRDb3B5SWRlbnRpZmllcigpIDw8IChERiA+IDB4MWYgPyAxNCA6IDcpOwotICB1bnNpZ25lZCBEID0gQ0kgfCAoZ2V0UHJlZml4RW5jb2RpbmdGcm9tVW5zaWduZWQoREYpIDw8IDEpOwotCi0gIGlmIChCRCA9PSAwKQotICAgIEQgPSAoRCA8PCAxKSB8IDE7Ci0gIGVsc2UKLSAgICBEID0gKEQgPDwgKEJEID4gMHgxZiA/IDE0IDogNykpIHwgKGdldFByZWZpeEVuY29kaW5nRnJvbVVuc2lnbmVkKEJEKSA8PCAxKTsKLQotICByZXR1cm4gY2xvbmVXaXRoRGlzY3JpbWluYXRvcihEKTsKKyAgdW5zaWduZWQgQ0kgPSBnZXRDb3B5SWRlbnRpZmllcigpOworICBpZiAoT3B0aW9uYWw8dW5zaWduZWQ+IEQgPSBlbmNvZGVEaXNjcmltaW5hdG9yKEJELCBERiwgQ0kpKQorICAgIHJldHVybiBjbG9uZVdpdGhEaXNjcmltaW5hdG9yKCpEKTsKKyAgcmV0dXJuIE5vbmU7CiB9CiAKIGNsYXNzIERJTmFtZXNwYWNlIDogcHVibGljIERJU2NvcGUgewpAQCAtMjQ1MSw2ICsyNTEwLDEyIEBACiAgIC8vLyByZXR1cm4gdHJ1ZSB3aXRoIGFuIG9mZnNldCBvZiB6ZXJvLgogICBib29sIGV4dHJhY3RJZk9mZnNldChpbnQ2NF90ICZPZmZzZXQpIGNvbnN0OwogCisgIC8vLyBDaGVja3MgaWYgdGhlIGxhc3QgNCBlbGVtZW50cyBvZiB0aGUgZXhwcmVzc2lvbiBhcmUgRFdfT1BfY29uc3R1IDxEV0FSRgorICAvLy8gQWRkcmVzcyBTcGFjZT4gRFdfT1Bfc3dhcCBEV19PUF94ZGVyZWYgYW5kIGV4dHJhY3RzIHRoZSA8RFdBUkYgQWRkcmVzcworICAvLy8gU3BhY2U+LgorICBzdGF0aWMgY29uc3QgRElFeHByZXNzaW9uICpleHRyYWN0QWRkcmVzc0NsYXNzKGNvbnN0IERJRXhwcmVzc2lvbiAqRXhwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAmQWRkckNsYXNzKTsKKwogICAvLy8gQ29uc3RhbnRzIGZvciBESUV4cHJlc3Npb246OnByZXBlbmQuCiAgIGVudW0geyBOb0RlcmVmID0gZmFsc2UsIFdpdGhEZXJlZiA9IHRydWUsIFdpdGhTdGFja1ZhbHVlID0gdHJ1ZSB9OwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RlYnVnTG9jLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RlYnVnTG9jLmgKaW5kZXggNGYwZDdmNS4uNzgwZDE3YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EZWJ1Z0xvYy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRGVidWdMb2MuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEZWJ1Z0xvYy5oIC0gRGVidWcgTG9jYXRpb24gSW5mb3JtYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EZXJpdmVkVHlwZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRGVyaXZlZFR5cGVzLmgKaW5kZXggOTUyNmQ2Mi4uNWJmMzcyOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EZXJpdmVkVHlwZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0Rlcml2ZWRUeXBlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vRGVyaXZlZFR5cGVzLmggLSBDbGFzc2VzIGZvciBoYW5kbGluZyBkYXRhIHR5cGVzIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNTgsNiArMTU3LDM4IEBACiAgIHJldHVybiBjYXN0PEZ1bmN0aW9uVHlwZT4odGhpcyktPmdldE51bVBhcmFtcygpOwogfQogCisvLy8gQSBoYW5keSBjb250YWluZXIgZm9yIGEgRnVuY3Rpb25UeXBlK0NhbGxlZS1wb2ludGVyIHBhaXIsIHdoaWNoIGNhbiBiZQorLy8vIHBhc3NlZCBhcm91bmQgYXMgYSBzaW5nbGUgZW50aXR5LiBUaGlzIGFzc2lzdHMgaW4gcmVwbGFjaW5nIHRoZSB1c2Ugb2YKKy8vLyBQb2ludGVyVHlwZTo6Z2V0RWxlbWVudFR5cGUoKSB0byBhY2Nlc3MgdGhlIGZ1bmN0aW9uJ3MgdHlwZSwgc2luY2UgdGhhdCdzCisvLy8gc2xhdGVkIGZvciByZW1vdmFsIGFzIHBhcnQgb2YgdGhlIFtvcGFxdWUgcG9pbnRlciB0eXBlc10gcHJvamVjdC4KK2NsYXNzIEZ1bmN0aW9uQ2FsbGVlIHsKK3B1YmxpYzoKKyAgLy8gQWxsb3cgaW1wbGljaXQgY29udmVyc2lvbiBmcm9tIHR5cGVzIHdoaWNoIGhhdmUgYSBnZXRGdW5jdGlvblR5cGUgbWVtYmVyCisgIC8vIChlLmcuIEZ1bmN0aW9uIGFuZCBJbmxpbmVBc20pLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSA9IGRlY2x0eXBlKCZUOjpnZXRGdW5jdGlvblR5cGUpPgorICBGdW5jdGlvbkNhbGxlZShUICpGbikKKyAgICAgIDogRm5UeShGbiA/IEZuLT5nZXRGdW5jdGlvblR5cGUoKSA6IG51bGxwdHIpLCBDYWxsZWUoRm4pIHt9CisKKyAgRnVuY3Rpb25DYWxsZWUoRnVuY3Rpb25UeXBlICpGblR5LCBWYWx1ZSAqQ2FsbGVlKQorICAgICAgOiBGblR5KEZuVHkpLCBDYWxsZWUoQ2FsbGVlKSB7CisgICAgYXNzZXJ0KChGblR5ID09IG51bGxwdHIpID09IChDYWxsZWUgPT0gbnVsbHB0cikpOworICB9CisKKyAgRnVuY3Rpb25DYWxsZWUoc3RkOjpudWxscHRyX3QpIHt9CisKKyAgRnVuY3Rpb25DYWxsZWUoKSA9IGRlZmF1bHQ7CisKKyAgRnVuY3Rpb25UeXBlICpnZXRGdW5jdGlvblR5cGUoKSB7IHJldHVybiBGblR5OyB9CisKKyAgVmFsdWUgKmdldENhbGxlZSgpIHsgcmV0dXJuIENhbGxlZTsgfQorCisgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSB7IHJldHVybiBDYWxsZWU7IH0KKworcHJpdmF0ZToKKyAgRnVuY3Rpb25UeXBlICpGblR5ID0gbnVsbHB0cjsKKyAgVmFsdWUgKkNhbGxlZSA9IG51bGxwdHI7Cit9OworCiAvLy8gQ29tbW9uIHN1cGVyIGNsYXNzIG9mIEFycmF5VHlwZSwgU3RydWN0VHlwZSBhbmQgVmVjdG9yVHlwZS4KIGNsYXNzIENvbXBvc2l0ZVR5cGUgOiBwdWJsaWMgVHlwZSB7CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0Rlcml2ZWRVc2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0Rlcml2ZWRVc2VyLmgKaW5kZXggNjdjNDgzZC4uYTI1ZDMxNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EZXJpdmVkVXNlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRGVyaXZlZFVzZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEZXJpdmVkVXNlci5oIC0gQmFzZSBmb3Igbm9uLUlSIFVzZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRGlhZ25vc3RpY0hhbmRsZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRGlhZ25vc3RpY0hhbmRsZXIuaAppbmRleCA1MTg3M2JlLi5hZjFlMjk3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RpYWdub3N0aWNIYW5kbGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EaWFnbm9zdGljSGFuZGxlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERpYWdub3N0aWNIYW5kbGVyLmggLSBEaWFnbm9zdGljSGFuZGxlciBjbGFzcyBmb3IgTExWTSAtKi0gQysrIC0tLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vIEJhc2UgRGlhZ25vc3RpY0hhbmRsZXIgY2xhc3MgZGVjbGFyYXRpb24uIERlcml2ZSBmcm9tIHRoaXMgY2xhc3MgdG8gcHJvdmlkZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EaWFnbm9zdGljSW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EaWFnbm9zdGljSW5mby5oCmluZGV4IGI4ZmRhZTIuLmFiNGM2OTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRGlhZ25vc3RpY0luZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RpYWdub3N0aWNJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9JUi9EaWFnbm9zdGljSW5mby5oIC0gRGlhZ25vc3RpYyBEZWNsYXJhdGlvbiAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTEwMSw2ICsxMDAsNyBAQAogICAvLy8gU2V2ZXJpdHkgZ2l2ZXMgdGhlIHNldmVyaXR5IG9mIHRoZSBkaWFnbm9zdGljLgogICBjb25zdCBEaWFnbm9zdGljU2V2ZXJpdHkgU2V2ZXJpdHk7CiAKKyAgdmlydHVhbCB2b2lkIGFuY2hvcigpOwogcHVibGljOgogICBEaWFnbm9zdGljSW5mbygvKiBEaWFnbm9zdGljS2luZCAqLyBpbnQgS2luZCwgRGlhZ25vc3RpY1NldmVyaXR5IFNldmVyaXR5KQogICAgICAgOiBLaW5kKEtpbmQpLCBTZXZlcml0eShTZXZlcml0eSkge30KQEAgLTIxMCw2ICsyMTAsNyBAQAogfTsKIAogY2xhc3MgRGlhZ25vc3RpY0luZm9TdGFja1NpemUgOiBwdWJsaWMgRGlhZ25vc3RpY0luZm9SZXNvdXJjZUxpbWl0IHsKKyAgdmlydHVhbCB2b2lkIGFuY2hvcigpIG92ZXJyaWRlOwogcHVibGljOgogICBEaWFnbm9zdGljSW5mb1N0YWNrU2l6ZShjb25zdCBGdW5jdGlvbiAmRm4sIHVpbnQ2NF90IFN0YWNrU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlhZ25vc3RpY1NldmVyaXR5IFNldmVyaXR5ID0gRFNfV2FybmluZywKQEAgLTM0MCw3ICszNDEsNyBAQAogfTsKIAogY2xhc3MgRGlhZ25vc3RpY0xvY2F0aW9uIHsKLSAgU3RyaW5nUmVmIEZpbGVuYW1lOworICBESUZpbGUgKkZpbGUgPSBudWxscHRyOwogICB1bnNpZ25lZCBMaW5lID0gMDsKICAgdW5zaWduZWQgQ29sdW1uID0gMDsKIApAQCAtMzQ5LDE0ICszNTAsMTggQEAKICAgRGlhZ25vc3RpY0xvY2F0aW9uKGNvbnN0IERlYnVnTG9jICZETCk7CiAgIERpYWdub3N0aWNMb2NhdGlvbihjb25zdCBESVN1YnByb2dyYW0gKlNQKTsKIAotICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAhRmlsZW5hbWUuZW1wdHkoKTsgfQotICBTdHJpbmdSZWYgZ2V0RmlsZW5hbWUoKSBjb25zdCB7IHJldHVybiBGaWxlbmFtZTsgfQorICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBGaWxlOyB9CisgIC8vLyBSZXR1cm4gdGhlIGZ1bGwgcGF0aCB0byB0aGUgZmlsZS4KKyAgc3RkOjpzdHJpbmcgZ2V0QWJzb2x1dGVQYXRoKCkgY29uc3Q7CisgIC8vLyBSZXR1cm4gdGhlIGZpbGUgbmFtZSByZWxhdGl2ZSB0byB0aGUgY29tcGlsYXRpb24gZGlyZWN0b3J5LgorICBTdHJpbmdSZWYgZ2V0UmVsYXRpdmVQYXRoKCkgY29uc3Q7CiAgIHVuc2lnbmVkIGdldExpbmUoKSBjb25zdCB7IHJldHVybiBMaW5lOyB9CiAgIHVuc2lnbmVkIGdldENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIENvbHVtbjsgfQogfTsKIAogLy8vIENvbW1vbiBmZWF0dXJlcyBmb3IgZGlhZ25vc3RpY3Mgd2l0aCBhbiBhc3NvY2lhdGVkIGxvY2F0aW9uLgogY2xhc3MgRGlhZ25vc3RpY0luZm9XaXRoTG9jYXRpb25CYXNlIDogcHVibGljIERpYWdub3N0aWNJbmZvIHsKKyAgdmlydHVhbCB2b2lkIGFuY2hvcigpIG92ZXJyaWRlOwogcHVibGljOgogICAvLy8gXHAgRm4gaXMgdGhlIGZ1bmN0aW9uIHdoZXJlIHRoZSBkaWFnbm9zdGljIGlzIGJlaW5nIGVtaXR0ZWQuIFxwIExvYyBpcwogICAvLy8gdGhlIGxvY2F0aW9uIGluZm9ybWF0aW9uIHRvIHVzZSBpbiB0aGUgZGlhZ25vc3RpYy4KQEAgLTM3NSw5ICszODAsMTMgQEAKICAgY29uc3Qgc3RkOjpzdHJpbmcgZ2V0TG9jYXRpb25TdHIoKSBjb25zdDsKIAogICAvLy8gUmV0dXJuIGxvY2F0aW9uIGluZm9ybWF0aW9uIGZvciB0aGlzIGRpYWdub3N0aWMgaW4gdGhyZWUgcGFydHM6Ci0gIC8vLyB0aGUgc291cmNlIGZpbGUgbmFtZSwgbGluZSBudW1iZXIgYW5kIGNvbHVtbi4KLSAgdm9pZCBnZXRMb2NhdGlvbihTdHJpbmdSZWYgKkZpbGVuYW1lLCB1bnNpZ25lZCAqTGluZSwgdW5zaWduZWQgKkNvbHVtbikgY29uc3Q7CisgIC8vLyB0aGUgcmVsYXRpdmUgc291cmNlIGZpbGUgcGF0aCwgbGluZSBudW1iZXIgYW5kIGNvbHVtbi4KKyAgdm9pZCBnZXRMb2NhdGlvbihTdHJpbmdSZWYgJlJlbGF0aXZlUGF0aCwgdW5zaWduZWQgJkxpbmUsCisgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgJkNvbHVtbikgY29uc3Q7CiAKKyAgLy8vIFJldHVybiB0aGUgYWJzb2x1dGUgcGF0aCB0b3QgdGhlIGZpbGUuCisgIHN0ZDo6c3RyaW5nIGdldEFic29sdXRlUGF0aCgpIGNvbnN0OworICAKICAgY29uc3QgRnVuY3Rpb24gJmdldEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gRm47IH0KICAgRGlhZ25vc3RpY0xvY2F0aW9uIGdldExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gTG9jOyB9CiAKQEAgLTU5MSw2ICs2MDAsNyBAQAogLy8vIENvbW1vbiBmZWF0dXJlcyBmb3IgZGlhZ25vc3RpY3MgZGVhbGluZyB3aXRoIG9wdGltaXphdGlvbiByZW1hcmtzCiAvLy8gdGhhdCBhcmUgdXNlZCBieSBJUiBwYXNzZXMuCiBjbGFzcyBEaWFnbm9zdGljSW5mb0lST3B0aW1pemF0aW9uIDogcHVibGljIERpYWdub3N0aWNJbmZvT3B0aW1pemF0aW9uQmFzZSB7CisgIHZpcnR1YWwgdm9pZCBhbmNob3IoKSBvdmVycmlkZTsKIHB1YmxpYzoKICAgLy8vIFxwIFBhc3NOYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBwYXNzIGVtaXR0aW5nIHRoaXMgZGlhZ25vc3RpYy4gXHAKICAgLy8vIFJlbWFya05hbWUgaXMgYSB0ZXh0dWFsIGlkZW50aWZpZXIgZm9yIHRoZSByZW1hcmsgKHNpbmdsZS13b3JkLApAQCAtODExLDYgKzgyMSw3IEBACiAvLy8gRGlhZ25vc3RpYyBpbmZvcm1hdGlvbiBmb3Igb3B0aW1pemF0aW9uIGFuYWx5c2lzIHJlbWFya3MgcmVsYXRlZCB0bwogLy8vIGZsb2F0aW5nLXBvaW50IG5vbi1jb21tdXRhdGl2aXR5LgogY2xhc3MgT3B0aW1pemF0aW9uUmVtYXJrQW5hbHlzaXNGUENvbW11dGUgOiBwdWJsaWMgT3B0aW1pemF0aW9uUmVtYXJrQW5hbHlzaXMgeworICB2aXJ0dWFsIHZvaWQgYW5jaG9yKCk7CiBwdWJsaWM6CiAgIC8vLyBccCBQYXNzTmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgcGFzcyBlbWl0dGluZyB0aGlzIGRpYWdub3N0aWMuIElmIHRoaXMgbmFtZQogICAvLy8gbWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNzaW9uIGdpdmVuIGluIC1ScGFzcy1hbmFseXNpcz0sIHRoZW4gdGhlCkBAIC04NTIsNiArODYzLDcgQEAKIC8vLyBEaWFnbm9zdGljIGluZm9ybWF0aW9uIGZvciBvcHRpbWl6YXRpb24gYW5hbHlzaXMgcmVtYXJrcyByZWxhdGVkIHRvCiAvLy8gcG9pbnRlciBhbGlhc2luZy4KIGNsYXNzIE9wdGltaXphdGlvblJlbWFya0FuYWx5c2lzQWxpYXNpbmcgOiBwdWJsaWMgT3B0aW1pemF0aW9uUmVtYXJrQW5hbHlzaXMgeworICB2aXJ0dWFsIHZvaWQgYW5jaG9yKCk7CiBwdWJsaWM6CiAgIC8vLyBccCBQYXNzTmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgcGFzcyBlbWl0dGluZyB0aGlzIGRpYWdub3N0aWMuIElmIHRoaXMgbmFtZQogICAvLy8gbWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNzaW9uIGdpdmVuIGluIC1ScGFzcy1hbmFseXNpcz0sIHRoZW4gdGhlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RpYWdub3N0aWNQcmludGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RpYWdub3N0aWNQcmludGVyLmgKaW5kZXggMjVjNDdjZC4uMTAyOTMyYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9EaWFnbm9zdGljUHJpbnRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRGlhZ25vc3RpY1ByaW50ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1N1cHBvcnQvRGlhZ25vc3RpY1ByaW50ZXIuaCAtIERpYWdub3N0aWMgUHJpbnRlciAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Eb21pbmF0b3JzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RvbWluYXRvcnMuaAppbmRleCBmN2RhNDdkLi5mZWYxYzZhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RvbWluYXRvcnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0RvbWluYXRvcnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEb21pbmF0b3JzLmggLSBEb21pbmF0b3IgSW5mbyBDYWxjdWxhdGlvbiAtLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9GdW5jdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9GdW5jdGlvbi5oCmluZGV4IDFiOTE1MzcuLjcxODRjYjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvRnVuY3Rpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0Z1bmN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9GdW5jdGlvbi5oIC0gQ2xhc3MgdG8gcmVwcmVzZW50IGEgc2luZ2xlIGZ1bmN0aW9uIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE1OCw3ICsxNTcsNyBAQAogICAvLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIG5vbi1kZWJ1ZyBJUiBpbnN0cnVjdGlvbnMgaW4gdGhpcyBmdW5jdGlvbi4KICAgLy8vIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgc3VtIG9mIHRoZSBzaXplcyBvZiBlYWNoIGJhc2ljIGJsb2NrIGNvbnRhaW5lZAogICAvLy8gd2l0aGluIHRoaXMgZnVuY3Rpb24uCi0gIHVuc2lnbmVkIGdldEluc3RydWN0aW9uQ291bnQoKTsKKyAgdW5zaWduZWQgZ2V0SW5zdHJ1Y3Rpb25Db3VudCgpIGNvbnN0OwogCiAgIC8vLyBSZXR1cm5zIHRoZSBGdW5jdGlvblR5cGUgZm9yIG1lLgogICBGdW5jdGlvblR5cGUgKmdldEZ1bmN0aW9uVHlwZSgpIGNvbnN0IHsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvR1ZNYXRlcmlhbGl6ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvR1ZNYXRlcmlhbGl6ZXIuaAppbmRleCA2NzVhYmViLi5kNjJkYTQxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0dWTWF0ZXJpYWxpemVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9HVk1hdGVyaWFsaXplci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEdWTWF0ZXJpYWxpemVyLmggLSBJbnRlcmZhY2UgZm9yIEdWIG1hdGVyaWFsaXplcnMgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0dldEVsZW1lbnRQdHJUeXBlSXRlcmF0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvR2V0RWxlbWVudFB0clR5cGVJdGVyYXRvci5oCmluZGV4IDNjMTQzZWEuLjliMjU3YWIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvR2V0RWxlbWVudFB0clR5cGVJdGVyYXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvR2V0RWxlbWVudFB0clR5cGVJdGVyYXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEdldEVsZW1lbnRQdHJUeXBlSXRlcmF0b3IuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0dsb2JhbEFsaWFzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0dsb2JhbEFsaWFzLmgKaW5kZXggNDUwNTgzYi4uM2NkNDA1NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9HbG9iYWxBbGlhcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvR2xvYmFsQWxpYXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tLS0tLS0gbGx2bS9HbG9iYWxBbGlhcy5oIC0gR2xvYmFsQWxpYXMgY2xhc3MgLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9HbG9iYWxJRnVuYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9HbG9iYWxJRnVuYy5oCmluZGV4IGVmNTEzMTUuLmJjMGQzYzAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvR2xvYmFsSUZ1bmMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0dsb2JhbElGdW5jLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLS0tLS0tIGxsdm0vR2xvYmFsSUZ1bmMuaCAtIEdsb2JhbElGdW5jIGNsYXNzIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0dsb2JhbEluZGlyZWN0U3ltYm9sLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0dsb2JhbEluZGlyZWN0U3ltYm9sLmgKaW5kZXggMjJjMDA2OC4uOGJjM2Y5MCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9HbG9iYWxJbmRpcmVjdFN5bWJvbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvR2xvYmFsSW5kaXJlY3RTeW1ib2wuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0dsb2JhbEluZGlyZWN0U3ltYm9sLmggLSBHbG9iYWxJbmRpcmVjdFN5bWJvbCBjbGFzcyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9HbG9iYWxPYmplY3QuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvR2xvYmFsT2JqZWN0LmgKaW5kZXggMWZkMzU2OC4uYjhhYjYxNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9HbG9iYWxPYmplY3QuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0dsb2JhbE9iamVjdC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0dsb2JhbE9iamVjdC5oIC0gQ2xhc3MgdG8gcmVwcmVzZW50IGdsb2JhbCBvYmplY3RzIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0dsb2JhbFZhbHVlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0dsb2JhbFZhbHVlLmgKaW5kZXggYzA3ZDQwNS4uZDc4Y2U2MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9HbG9iYWxWYWx1ZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvR2xvYmFsVmFsdWUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9HbG9iYWxWYWx1ZS5oIC0gQ2xhc3MgdG8gcmVwcmVzZW50IGEgZ2xvYmFsIHZhbHVlIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9HbG9iYWxWYXJpYWJsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9HbG9iYWxWYXJpYWJsZS5oCmluZGV4IDAzYjllYzQuLjJlMmM4YzQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvR2xvYmFsVmFyaWFibGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0dsb2JhbFZhcmlhYmxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vR2xvYmFsVmFyaWFibGUuaCAtIEdsb2JhbFZhcmlhYmxlIGNsYXNzIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSVJCdWlsZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0lSQnVpbGRlci5oCmluZGV4IDBhZjUzYzUuLjJlMDYxOWQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSVJCdWlsZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JUkJ1aWxkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0lSQnVpbGRlci5oIC0gQnVpbGRlciBmb3IgTExWTSBJbnN0cnVjdGlvbnMgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNzA1LDYgKzcwNCwxNiBAQAogICAgIHJldHVybiBDcmVhdGVCaW5hcnlJbnRyaW5zaWMoSW50cmluc2ljOjptYXhudW0sIExIUywgUkhTLCBudWxscHRyLCBOYW1lKTsKICAgfQogCisgIC8vLyBDcmVhdGUgY2FsbCB0byB0aGUgbWluaW11bSBpbnRyaW5zaWMuCisgIENhbGxJbnN0ICpDcmVhdGVNaW5pbXVtKFZhbHVlICpMSFMsIFZhbHVlICpSSFMsIGNvbnN0IFR3aW5lICZOYW1lID0gIiIpIHsKKyAgICByZXR1cm4gQ3JlYXRlQmluYXJ5SW50cmluc2ljKEludHJpbnNpYzo6bWluaW11bSwgTEhTLCBSSFMsIG51bGxwdHIsIE5hbWUpOworICB9CisKKyAgLy8vIENyZWF0ZSBjYWxsIHRvIHRoZSBtYXhpbXVtIGludHJpbnNpYy4KKyAgQ2FsbEluc3QgKkNyZWF0ZU1heGltdW0oVmFsdWUgKkxIUywgVmFsdWUgKlJIUywgY29uc3QgVHdpbmUgJk5hbWUgPSAiIikgeworICAgIHJldHVybiBDcmVhdGVCaW5hcnlJbnRyaW5zaWMoSW50cmluc2ljOjptYXhpbXVtLCBMSFMsIFJIUywgbnVsbHB0ciwgTmFtZSk7CisgIH0KKwogcHJpdmF0ZToKICAgLy8vIENyZWF0ZSBhIGNhbGwgdG8gYSBtYXNrZWQgaW50cmluc2ljIHdpdGggZ2l2ZW4gSWQuCiAgIENhbGxJbnN0ICpDcmVhdGVNYXNrZWRJbnRyaW5zaWMoSW50cmluc2ljOjpJRCBJZCwgQXJyYXlSZWY8VmFsdWUgKj4gT3BzLApAQCAtODc5LDE5ICs4ODgsOTUgQEAKICAgfQogCiAgIC8vLyBDcmVhdGUgYW4gaW52b2tlIGluc3RydWN0aW9uLgotICBJbnZva2VJbnN0ICpDcmVhdGVJbnZva2UoVmFsdWUgKkNhbGxlZSwgQmFzaWNCbG9jayAqTm9ybWFsRGVzdCwKKyAgSW52b2tlSW5zdCAqQ3JlYXRlSW52b2tlKEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpDYWxsZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpOb3JtYWxEZXN0LCBCYXNpY0Jsb2NrICpVbndpbmREZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IE9wQnVuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lID0gIiIpIHsKKyAgICByZXR1cm4gSW5zZXJ0KAorICAgICAgICBJbnZva2VJbnN0OjpDcmVhdGUoVHksIENhbGxlZSwgTm9ybWFsRGVzdCwgVW53aW5kRGVzdCwgQXJncywgT3BCdW5kbGVzKSwKKyAgICAgICAgTmFtZSk7CisgIH0KKyAgSW52b2tlSW5zdCAqQ3JlYXRlSW52b2tlKEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpDYWxsZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpOb3JtYWxEZXN0LCBCYXNpY0Jsb2NrICpVbndpbmREZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VmFsdWUgKj4gQXJncyA9IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSA9ICIiKSB7CisgICAgcmV0dXJuIEluc2VydChJbnZva2VJbnN0OjpDcmVhdGUoVHksIENhbGxlZSwgTm9ybWFsRGVzdCwgVW53aW5kRGVzdCwgQXJncyksCisgICAgICAgICAgICAgICAgICBOYW1lKTsKKyAgfQorCisgIEludm9rZUluc3QgKkNyZWF0ZUludm9rZShGdW5jdGlvbkNhbGxlZSBDYWxsZWUsIEJhc2ljQmxvY2sgKk5vcm1hbERlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpVbndpbmREZXN0LCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gT3BCdW5kbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWUgPSAiIikgeworICAgIHJldHVybiBDcmVhdGVJbnZva2UoQ2FsbGVlLmdldEZ1bmN0aW9uVHlwZSgpLCBDYWxsZWUuZ2V0Q2FsbGVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWxEZXN0LCBVbndpbmREZXN0LCBBcmdzLCBPcEJ1bmRsZXMsIE5hbWUpOworICB9CisKKyAgSW52b2tlSW5zdCAqQ3JlYXRlSW52b2tlKEZ1bmN0aW9uQ2FsbGVlIENhbGxlZSwgQmFzaWNCbG9jayAqTm9ybWFsRGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sgKlVud2luZERlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzID0gTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lID0gIiIpIHsKLSAgICByZXR1cm4gSW5zZXJ0KEludm9rZUluc3Q6OkNyZWF0ZShDYWxsZWUsIE5vcm1hbERlc3QsIFVud2luZERlc3QsIEFyZ3MpLAotICAgICAgICAgICAgICAgICAgTmFtZSk7CisgICAgcmV0dXJuIENyZWF0ZUludm9rZShDYWxsZWUuZ2V0RnVuY3Rpb25UeXBlKCksIENhbGxlZS5nZXRDYWxsZWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vcm1hbERlc3QsIFVud2luZERlc3QsIEFyZ3MsIE5hbWUpOwogICB9CisKKyAgLy8gRGVwcmVjYXRlZCBbb3BhcXVlIHBvaW50ZXIgdHlwZXNdCiAgIEludm9rZUluc3QgKkNyZWF0ZUludm9rZShWYWx1ZSAqQ2FsbGVlLCBCYXNpY0Jsb2NrICpOb3JtYWxEZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqVW53aW5kRGVzdCwgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IE9wQnVuZGxlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lID0gIiIpIHsKLSAgICByZXR1cm4gSW5zZXJ0KEludm9rZUluc3Q6OkNyZWF0ZShDYWxsZWUsIE5vcm1hbERlc3QsIFVud2luZERlc3QsIEFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BCdW5kbGVzKSwgTmFtZSk7CisgICAgcmV0dXJuIENyZWF0ZUludm9rZSgKKyAgICAgICAgY2FzdDxGdW5jdGlvblR5cGU+KAorICAgICAgICAgICAgY2FzdDxQb2ludGVyVHlwZT4oQ2FsbGVlLT5nZXRUeXBlKCkpLT5nZXRFbGVtZW50VHlwZSgpKSwKKyAgICAgICAgQ2FsbGVlLCBOb3JtYWxEZXN0LCBVbndpbmREZXN0LCBBcmdzLCBPcEJ1bmRsZXMsIE5hbWUpOworICB9CisKKyAgLy8gRGVwcmVjYXRlZCBbb3BhcXVlIHBvaW50ZXIgdHlwZXNdCisgIEludm9rZUluc3QgKkNyZWF0ZUludm9rZShWYWx1ZSAqQ2FsbGVlLCBCYXNpY0Jsb2NrICpOb3JtYWxEZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqVW53aW5kRGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MgPSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWUgPSAiIikgeworICAgIHJldHVybiBDcmVhdGVJbnZva2UoCisgICAgICAgIGNhc3Q8RnVuY3Rpb25UeXBlPigKKyAgICAgICAgICAgIGNhc3Q8UG9pbnRlclR5cGU+KENhbGxlZS0+Z2V0VHlwZSgpKS0+Z2V0RWxlbWVudFR5cGUoKSksCisgICAgICAgIENhbGxlZSwgTm9ybWFsRGVzdCwgVW53aW5kRGVzdCwgQXJncywgTmFtZSk7CisgIH0KKworICAvLy8gXGJyaWVmIENyZWF0ZSBhIGNhbGxiciBpbnN0cnVjdGlvbi4KKyAgQ2FsbEJySW5zdCAqQ3JlYXRlQ2FsbEJyKEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpDYWxsZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpEZWZhdWx0RGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEJhc2ljQmxvY2sgKj4gSW5kaXJlY3REZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MgPSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWUgPSAiIikgeworICAgIHJldHVybiBJbnNlcnQoQ2FsbEJySW5zdDo6Q3JlYXRlKFR5LCBDYWxsZWUsIERlZmF1bHREZXN0LCBJbmRpcmVjdERlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ3MpLCBOYW1lKTsKKyAgfQorICBDYWxsQnJJbnN0ICpDcmVhdGVDYWxsQnIoRnVuY3Rpb25UeXBlICpUeSwgVmFsdWUgKkNhbGxlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sgKkRlZmF1bHREZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8QmFzaWNCbG9jayAqPiBJbmRpcmVjdERlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IE9wQnVuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lID0gIiIpIHsKKyAgICByZXR1cm4gSW5zZXJ0KAorICAgICAgICBDYWxsQnJJbnN0OjpDcmVhdGUoVHksIENhbGxlZSwgRGVmYXVsdERlc3QsIEluZGlyZWN0RGVzdHMsIEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPcEJ1bmRsZXMpLCBOYW1lKTsKKyAgfQorCisgIENhbGxCckluc3QgKkNyZWF0ZUNhbGxCcihGdW5jdGlvbkNhbGxlZSBDYWxsZWUsIEJhc2ljQmxvY2sgKkRlZmF1bHREZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8QmFzaWNCbG9jayAqPiBJbmRpcmVjdERlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VmFsdWUgKj4gQXJncyA9IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSA9ICIiKSB7CisgICAgcmV0dXJuIENyZWF0ZUNhbGxCcihDYWxsZWUuZ2V0RnVuY3Rpb25UeXBlKCksIENhbGxlZS5nZXRDYWxsZWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHREZXN0LCBJbmRpcmVjdERlc3RzLCBBcmdzLCBOYW1lKTsKKyAgfQorICBDYWxsQnJJbnN0ICpDcmVhdGVDYWxsQnIoRnVuY3Rpb25DYWxsZWUgQ2FsbGVlLCBCYXNpY0Jsb2NrICpEZWZhdWx0RGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEJhc2ljQmxvY2sgKj4gSW5kaXJlY3REZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBPcEJ1bmRsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSA9ICIiKSB7CisgICAgcmV0dXJuIENyZWF0ZUNhbGxCcihDYWxsZWUuZ2V0RnVuY3Rpb25UeXBlKCksIENhbGxlZS5nZXRDYWxsZWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHREZXN0LCBJbmRpcmVjdERlc3RzLCBBcmdzLCBOYW1lKTsKICAgfQogCiAgIFJlc3VtZUluc3QgKkNyZWF0ZVJlc3VtZShWYWx1ZSAqRXhuKSB7CkBAIC05NTQsNyArMTAzOSw3IEBACiAgIH0KIAogICBWYWx1ZSAqZm9sZENvbnN0YW50KEluc3RydWN0aW9uOjpCaW5hcnlPcHMgT3BjLCBWYWx1ZSAqTCwKLSAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAqUiwgY29uc3QgVHdpbmUgJk5hbWUgPSBudWxscHRyKSBjb25zdCB7CisgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgKlIsIGNvbnN0IFR3aW5lICZOYW1lKSBjb25zdCB7CiAgICAgYXV0byAqTEMgPSBkeW5fY2FzdDxDb25zdGFudD4oTCk7CiAgICAgYXV0byAqUkMgPSBkeW5fY2FzdDxDb25zdGFudD4oUik7CiAgICAgcmV0dXJuIChMQyAmJiBSQykgPyBJbnNlcnQoRm9sZGVyLkNyZWF0ZUJpbk9wKE9wYywgTEMsIFJDKSwgTmFtZSkgOiBudWxscHRyOwpAQCAtMTMwMiwyMiArMTM4NywzNSBAQAogICAgIHJldHVybiBJbnNlcnQobmV3IEFsbG9jYUluc3QoVHksIERMLmdldEFsbG9jYUFkZHJTcGFjZSgpLCBBcnJheVNpemUpLCBOYW1lKTsKICAgfQogCi0gIC8vLyBQcm92aWRlZCB0byByZXNvbHZlICdDcmVhdGVMb2FkKFB0ciwgIi4uLiIpJyBjb3JyZWN0bHksIGluc3RlYWQgb2YKKyAgLy8vIFByb3ZpZGVkIHRvIHJlc29sdmUgJ0NyZWF0ZUxvYWQoVHksIFB0ciwgIi4uLiIpJyBjb3JyZWN0bHksIGluc3RlYWQgb2YKICAgLy8vIGNvbnZlcnRpbmcgdGhlIHN0cmluZyB0byAnYm9vbCcgZm9yIHRoZSBpc1ZvbGF0aWxlIHBhcmFtZXRlci4KLSAgTG9hZEluc3QgKkNyZWF0ZUxvYWQoVmFsdWUgKlB0ciwgY29uc3QgY2hhciAqTmFtZSkgewotICAgIHJldHVybiBJbnNlcnQobmV3IExvYWRJbnN0KFB0ciksIE5hbWUpOwotICB9Ci0KLSAgTG9hZEluc3QgKkNyZWF0ZUxvYWQoVmFsdWUgKlB0ciwgY29uc3QgVHdpbmUgJk5hbWUgPSAiIikgewotICAgIHJldHVybiBJbnNlcnQobmV3IExvYWRJbnN0KFB0ciksIE5hbWUpOworICBMb2FkSW5zdCAqQ3JlYXRlTG9hZChUeXBlICpUeSwgVmFsdWUgKlB0ciwgY29uc3QgY2hhciAqTmFtZSkgeworICAgIHJldHVybiBJbnNlcnQobmV3IExvYWRJbnN0KFR5LCBQdHIpLCBOYW1lKTsKICAgfQogCiAgIExvYWRJbnN0ICpDcmVhdGVMb2FkKFR5cGUgKlR5LCBWYWx1ZSAqUHRyLCBjb25zdCBUd2luZSAmTmFtZSA9ICIiKSB7CiAgICAgcmV0dXJuIEluc2VydChuZXcgTG9hZEluc3QoVHksIFB0ciksIE5hbWUpOwogICB9CiAKKyAgTG9hZEluc3QgKkNyZWF0ZUxvYWQoVHlwZSAqVHksIFZhbHVlICpQdHIsIGJvb2wgaXNWb2xhdGlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWUgPSAiIikgeworICAgIHJldHVybiBJbnNlcnQobmV3IExvYWRJbnN0KFR5LCBQdHIsIFR3aW5lKCksIGlzVm9sYXRpbGUpLCBOYW1lKTsKKyAgfQorCisgIC8vIERlcHJlY2F0ZWQgW29wYXF1ZSBwb2ludGVyIHR5cGVzXQorICBMb2FkSW5zdCAqQ3JlYXRlTG9hZChWYWx1ZSAqUHRyLCBjb25zdCBjaGFyICpOYW1lKSB7CisgICAgcmV0dXJuIENyZWF0ZUxvYWQoUHRyLT5nZXRUeXBlKCktPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLCBQdHIsIE5hbWUpOworICB9CisKKyAgLy8gRGVwcmVjYXRlZCBbb3BhcXVlIHBvaW50ZXIgdHlwZXNdCisgIExvYWRJbnN0ICpDcmVhdGVMb2FkKFZhbHVlICpQdHIsIGNvbnN0IFR3aW5lICZOYW1lID0gIiIpIHsKKyAgICByZXR1cm4gQ3JlYXRlTG9hZChQdHItPmdldFR5cGUoKS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIFB0ciwgTmFtZSk7CisgIH0KKworICAvLyBEZXByZWNhdGVkIFtvcGFxdWUgcG9pbnRlciB0eXBlc10KICAgTG9hZEluc3QgKkNyZWF0ZUxvYWQoVmFsdWUgKlB0ciwgYm9vbCBpc1ZvbGF0aWxlLCBjb25zdCBUd2luZSAmTmFtZSA9ICIiKSB7Ci0gICAgcmV0dXJuIEluc2VydChuZXcgTG9hZEluc3QoUHRyLCBudWxscHRyLCBpc1ZvbGF0aWxlKSwgTmFtZSk7CisgICAgcmV0dXJuIENyZWF0ZUxvYWQoUHRyLT5nZXRUeXBlKCktPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLCBQdHIsIGlzVm9sYXRpbGUsCisgICAgICAgICAgICAgICAgICAgICAgTmFtZSk7CiAgIH0KIAogICBTdG9yZUluc3QgKkNyZWF0ZVN0b3JlKFZhbHVlICpWYWwsIFZhbHVlICpQdHIsIGJvb2wgaXNWb2xhdGlsZSA9IGZhbHNlKSB7CkBAIC0xMzI3LDIyICsxNDI1LDQxIEBACiAgIC8vLyBQcm92aWRlZCB0byByZXNvbHZlICdDcmVhdGVBbGlnbmVkTG9hZChQdHIsIEFsaWduLCAiLi4uIiknCiAgIC8vLyBjb3JyZWN0bHksIGluc3RlYWQgb2YgY29udmVydGluZyB0aGUgc3RyaW5nIHRvICdib29sJyBmb3IgdGhlIGlzVm9sYXRpbGUKICAgLy8vIHBhcmFtZXRlci4KLSAgTG9hZEluc3QgKkNyZWF0ZUFsaWduZWRMb2FkKFZhbHVlICpQdHIsIHVuc2lnbmVkIEFsaWduLCBjb25zdCBjaGFyICpOYW1lKSB7Ci0gICAgTG9hZEluc3QgKkxJID0gQ3JlYXRlTG9hZChQdHIsIE5hbWUpOworICBMb2FkSW5zdCAqQ3JlYXRlQWxpZ25lZExvYWQoVHlwZSAqVHksIFZhbHVlICpQdHIsIHVuc2lnbmVkIEFsaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqTmFtZSkgeworICAgIExvYWRJbnN0ICpMSSA9IENyZWF0ZUxvYWQoVHksIFB0ciwgTmFtZSk7CiAgICAgTEktPnNldEFsaWdubWVudChBbGlnbik7CiAgICAgcmV0dXJuIExJOwogICB9CisgIExvYWRJbnN0ICpDcmVhdGVBbGlnbmVkTG9hZChUeXBlICpUeSwgVmFsdWUgKlB0ciwgdW5zaWduZWQgQWxpZ24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSA9ICIiKSB7CisgICAgTG9hZEluc3QgKkxJID0gQ3JlYXRlTG9hZChUeSwgUHRyLCBOYW1lKTsKKyAgICBMSS0+c2V0QWxpZ25tZW50KEFsaWduKTsKKyAgICByZXR1cm4gTEk7CisgIH0KKyAgTG9hZEluc3QgKkNyZWF0ZUFsaWduZWRMb2FkKFR5cGUgKlR5LCBWYWx1ZSAqUHRyLCB1bnNpZ25lZCBBbGlnbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNWb2xhdGlsZSwgY29uc3QgVHdpbmUgJk5hbWUgPSAiIikgeworICAgIExvYWRJbnN0ICpMSSA9IENyZWF0ZUxvYWQoVHksIFB0ciwgaXNWb2xhdGlsZSwgTmFtZSk7CisgICAgTEktPnNldEFsaWdubWVudChBbGlnbik7CisgICAgcmV0dXJuIExJOworICB9CisKKyAgLy8gRGVwcmVjYXRlZCBbb3BhcXVlIHBvaW50ZXIgdHlwZXNdCisgIExvYWRJbnN0ICpDcmVhdGVBbGlnbmVkTG9hZChWYWx1ZSAqUHRyLCB1bnNpZ25lZCBBbGlnbiwgY29uc3QgY2hhciAqTmFtZSkgeworICAgIHJldHVybiBDcmVhdGVBbGlnbmVkTG9hZChQdHItPmdldFR5cGUoKS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIFB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxpZ24sIE5hbWUpOworICB9CisgIC8vIERlcHJlY2F0ZWQgW29wYXF1ZSBwb2ludGVyIHR5cGVzXQogICBMb2FkSW5zdCAqQ3JlYXRlQWxpZ25lZExvYWQoVmFsdWUgKlB0ciwgdW5zaWduZWQgQWxpZ24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSA9ICIiKSB7Ci0gICAgTG9hZEluc3QgKkxJID0gQ3JlYXRlTG9hZChQdHIsIE5hbWUpOwotICAgIExJLT5zZXRBbGlnbm1lbnQoQWxpZ24pOwotICAgIHJldHVybiBMSTsKKyAgICByZXR1cm4gQ3JlYXRlQWxpZ25lZExvYWQoUHRyLT5nZXRUeXBlKCktPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLCBQdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsaWduLCBOYW1lKTsKICAgfQorICAvLyBEZXByZWNhdGVkIFtvcGFxdWUgcG9pbnRlciB0eXBlc10KICAgTG9hZEluc3QgKkNyZWF0ZUFsaWduZWRMb2FkKFZhbHVlICpQdHIsIHVuc2lnbmVkIEFsaWduLCBib29sIGlzVm9sYXRpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSA9ICIiKSB7Ci0gICAgTG9hZEluc3QgKkxJID0gQ3JlYXRlTG9hZChQdHIsIGlzVm9sYXRpbGUsIE5hbWUpOwotICAgIExJLT5zZXRBbGlnbm1lbnQoQWxpZ24pOwotICAgIHJldHVybiBMSTsKKyAgICByZXR1cm4gQ3JlYXRlQWxpZ25lZExvYWQoUHRyLT5nZXRUeXBlKCktPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLCBQdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsaWduLCBpc1ZvbGF0aWxlLCBOYW1lKTsKICAgfQogCiAgIFN0b3JlSW5zdCAqQ3JlYXRlQWxpZ25lZFN0b3JlKFZhbHVlICpWYWwsIFZhbHVlICpQdHIsIHVuc2lnbmVkIEFsaWduLApAQCAtMTQ4MSw1MCArMTU5OCw2OSBAQAogICAgIHJldHVybiBJbnNlcnQoR2V0RWxlbWVudFB0ckluc3Q6OkNyZWF0ZUluQm91bmRzKFR5LCBQdHIsIElkeHMpLCBOYW1lKTsKICAgfQogCi0gIFZhbHVlICpDcmVhdGVDb25zdEdFUDFfNjQoVmFsdWUgKlB0ciwgdWludDY0X3QgSWR4MCwgY29uc3QgVHdpbmUgJk5hbWUgPSAiIikgeworICBWYWx1ZSAqQ3JlYXRlQ29uc3RHRVAxXzY0KFR5cGUgKlR5LCBWYWx1ZSAqUHRyLCB1aW50NjRfdCBJZHgwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lID0gIiIpIHsKICAgICBWYWx1ZSAqSWR4ID0gQ29uc3RhbnRJbnQ6OmdldChUeXBlOjpnZXRJbnQ2NFR5KENvbnRleHQpLCBJZHgwKTsKIAogICAgIGlmIChhdXRvICpQQyA9IGR5bl9jYXN0PENvbnN0YW50PihQdHIpKQotICAgICAgcmV0dXJuIEluc2VydChGb2xkZXIuQ3JlYXRlR2V0RWxlbWVudFB0cihudWxscHRyLCBQQywgSWR4KSwgTmFtZSk7CisgICAgICByZXR1cm4gSW5zZXJ0KEZvbGRlci5DcmVhdGVHZXRFbGVtZW50UHRyKFR5LCBQQywgSWR4KSwgTmFtZSk7CiAKLSAgICByZXR1cm4gSW5zZXJ0KEdldEVsZW1lbnRQdHJJbnN0OjpDcmVhdGUobnVsbHB0ciwgUHRyLCBJZHgpLCBOYW1lKTsKKyAgICByZXR1cm4gSW5zZXJ0KEdldEVsZW1lbnRQdHJJbnN0OjpDcmVhdGUoVHksIFB0ciwgSWR4KSwgTmFtZSk7CisgIH0KKworICBWYWx1ZSAqQ3JlYXRlQ29uc3RHRVAxXzY0KFZhbHVlICpQdHIsIHVpbnQ2NF90IElkeDAsIGNvbnN0IFR3aW5lICZOYW1lID0gIiIpIHsKKyAgICByZXR1cm4gQ3JlYXRlQ29uc3RHRVAxXzY0KG51bGxwdHIsIFB0ciwgSWR4MCwgTmFtZSk7CisgIH0KKworICBWYWx1ZSAqQ3JlYXRlQ29uc3RJbkJvdW5kc0dFUDFfNjQoVHlwZSAqVHksIFZhbHVlICpQdHIsIHVpbnQ2NF90IElkeDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSA9ICIiKSB7CisgICAgVmFsdWUgKklkeCA9IENvbnN0YW50SW50OjpnZXQoVHlwZTo6Z2V0SW50NjRUeShDb250ZXh0KSwgSWR4MCk7CisKKyAgICBpZiAoYXV0byAqUEMgPSBkeW5fY2FzdDxDb25zdGFudD4oUHRyKSkKKyAgICAgIHJldHVybiBJbnNlcnQoRm9sZGVyLkNyZWF0ZUluQm91bmRzR2V0RWxlbWVudFB0cihUeSwgUEMsIElkeCksIE5hbWUpOworCisgICAgcmV0dXJuIEluc2VydChHZXRFbGVtZW50UHRySW5zdDo6Q3JlYXRlSW5Cb3VuZHMoVHksIFB0ciwgSWR4KSwgTmFtZSk7CiAgIH0KIAogICBWYWx1ZSAqQ3JlYXRlQ29uc3RJbkJvdW5kc0dFUDFfNjQoVmFsdWUgKlB0ciwgdWludDY0X3QgSWR4MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lID0gIiIpIHsKLSAgICBWYWx1ZSAqSWR4ID0gQ29uc3RhbnRJbnQ6OmdldChUeXBlOjpnZXRJbnQ2NFR5KENvbnRleHQpLCBJZHgwKTsKLQotICAgIGlmIChhdXRvICpQQyA9IGR5bl9jYXN0PENvbnN0YW50PihQdHIpKQotICAgICAgcmV0dXJuIEluc2VydChGb2xkZXIuQ3JlYXRlSW5Cb3VuZHNHZXRFbGVtZW50UHRyKG51bGxwdHIsIFBDLCBJZHgpLCBOYW1lKTsKLQotICAgIHJldHVybiBJbnNlcnQoR2V0RWxlbWVudFB0ckluc3Q6OkNyZWF0ZUluQm91bmRzKG51bGxwdHIsIFB0ciwgSWR4KSwgTmFtZSk7CisgICAgcmV0dXJuIENyZWF0ZUNvbnN0SW5Cb3VuZHNHRVAxXzY0KG51bGxwdHIsIFB0ciwgSWR4MCwgTmFtZSk7CiAgIH0KIAotICBWYWx1ZSAqQ3JlYXRlQ29uc3RHRVAyXzY0KFZhbHVlICpQdHIsIHVpbnQ2NF90IElkeDAsIHVpbnQ2NF90IElkeDEsCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lID0gIiIpIHsKKyAgVmFsdWUgKkNyZWF0ZUNvbnN0R0VQMl82NChUeXBlICpUeSwgVmFsdWUgKlB0ciwgdWludDY0X3QgSWR4MCwgdWludDY0X3QgSWR4MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSA9ICIiKSB7CiAgICAgVmFsdWUgKklkeHNbXSA9IHsKICAgICAgIENvbnN0YW50SW50OjpnZXQoVHlwZTo6Z2V0SW50NjRUeShDb250ZXh0KSwgSWR4MCksCiAgICAgICBDb25zdGFudEludDo6Z2V0KFR5cGU6OmdldEludDY0VHkoQ29udGV4dCksIElkeDEpCiAgICAgfTsKIAogICAgIGlmIChhdXRvICpQQyA9IGR5bl9jYXN0PENvbnN0YW50PihQdHIpKQotICAgICAgcmV0dXJuIEluc2VydChGb2xkZXIuQ3JlYXRlR2V0RWxlbWVudFB0cihudWxscHRyLCBQQywgSWR4cyksIE5hbWUpOworICAgICAgcmV0dXJuIEluc2VydChGb2xkZXIuQ3JlYXRlR2V0RWxlbWVudFB0cihUeSwgUEMsIElkeHMpLCBOYW1lKTsKIAotICAgIHJldHVybiBJbnNlcnQoR2V0RWxlbWVudFB0ckluc3Q6OkNyZWF0ZShudWxscHRyLCBQdHIsIElkeHMpLCBOYW1lKTsKKyAgICByZXR1cm4gSW5zZXJ0KEdldEVsZW1lbnRQdHJJbnN0OjpDcmVhdGUoVHksIFB0ciwgSWR4cyksIE5hbWUpOworICB9CisKKyAgVmFsdWUgKkNyZWF0ZUNvbnN0R0VQMl82NChWYWx1ZSAqUHRyLCB1aW50NjRfdCBJZHgwLCB1aW50NjRfdCBJZHgxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lID0gIiIpIHsKKyAgICByZXR1cm4gQ3JlYXRlQ29uc3RHRVAyXzY0KG51bGxwdHIsIFB0ciwgSWR4MCwgSWR4MSwgTmFtZSk7CisgIH0KKworICBWYWx1ZSAqQ3JlYXRlQ29uc3RJbkJvdW5kc0dFUDJfNjQoVHlwZSAqVHksIFZhbHVlICpQdHIsIHVpbnQ2NF90IElkeDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBJZHgxLCBjb25zdCBUd2luZSAmTmFtZSA9ICIiKSB7CisgICAgVmFsdWUgKklkeHNbXSA9IHsKKyAgICAgIENvbnN0YW50SW50OjpnZXQoVHlwZTo6Z2V0SW50NjRUeShDb250ZXh0KSwgSWR4MCksCisgICAgICBDb25zdGFudEludDo6Z2V0KFR5cGU6OmdldEludDY0VHkoQ29udGV4dCksIElkeDEpCisgICAgfTsKKworICAgIGlmIChhdXRvICpQQyA9IGR5bl9jYXN0PENvbnN0YW50PihQdHIpKQorICAgICAgcmV0dXJuIEluc2VydChGb2xkZXIuQ3JlYXRlSW5Cb3VuZHNHZXRFbGVtZW50UHRyKFR5LCBQQywgSWR4cyksIE5hbWUpOworCisgICAgcmV0dXJuIEluc2VydChHZXRFbGVtZW50UHRySW5zdDo6Q3JlYXRlSW5Cb3VuZHMoVHksIFB0ciwgSWR4cyksIE5hbWUpOwogICB9CiAKICAgVmFsdWUgKkNyZWF0ZUNvbnN0SW5Cb3VuZHNHRVAyXzY0KFZhbHVlICpQdHIsIHVpbnQ2NF90IElkeDAsIHVpbnQ2NF90IElkeDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSA9ICIiKSB7Ci0gICAgVmFsdWUgKklkeHNbXSA9IHsKLSAgICAgIENvbnN0YW50SW50OjpnZXQoVHlwZTo6Z2V0SW50NjRUeShDb250ZXh0KSwgSWR4MCksCi0gICAgICBDb25zdGFudEludDo6Z2V0KFR5cGU6OmdldEludDY0VHkoQ29udGV4dCksIElkeDEpCi0gICAgfTsKLQotICAgIGlmIChhdXRvICpQQyA9IGR5bl9jYXN0PENvbnN0YW50PihQdHIpKQotICAgICAgcmV0dXJuIEluc2VydChGb2xkZXIuQ3JlYXRlSW5Cb3VuZHNHZXRFbGVtZW50UHRyKG51bGxwdHIsIFBDLCBJZHhzKSwKLSAgICAgICAgICAgICAgICAgICAgTmFtZSk7Ci0KLSAgICByZXR1cm4gSW5zZXJ0KEdldEVsZW1lbnRQdHJJbnN0OjpDcmVhdGVJbkJvdW5kcyhudWxscHRyLCBQdHIsIElkeHMpLCBOYW1lKTsKKyAgICByZXR1cm4gQ3JlYXRlQ29uc3RJbkJvdW5kc0dFUDJfNjQobnVsbHB0ciwgUHRyLCBJZHgwLCBJZHgxLCBOYW1lKTsKICAgfQogCiAgIFZhbHVlICpDcmVhdGVTdHJ1Y3RHRVAoVHlwZSAqVHksIFZhbHVlICpQdHIsIHVuc2lnbmVkIElkeCwKQEAgLTE4NzAsMTUgKzIwMDYsOCBAQAogICAgIHJldHVybiBJbnNlcnQoUEhJTm9kZTo6Q3JlYXRlKFR5LCBOdW1SZXNlcnZlZFZhbHVlcyksIE5hbWUpOwogICB9CiAKLSAgQ2FsbEluc3QgKkNyZWF0ZUNhbGwoVmFsdWUgKkNhbGxlZSwgQXJyYXlSZWY8VmFsdWUgKj4gQXJncyA9IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lID0gIiIsIE1ETm9kZSAqRlBNYXRoVGFnID0gbnVsbHB0cikgewotICAgIGF1dG8gKlBUeSA9IGNhc3Q8UG9pbnRlclR5cGU+KENhbGxlZS0+Z2V0VHlwZSgpKTsKLSAgICBhdXRvICpGVHkgPSBjYXN0PEZ1bmN0aW9uVHlwZT4oUFR5LT5nZXRFbGVtZW50VHlwZSgpKTsKLSAgICByZXR1cm4gQ3JlYXRlQ2FsbChGVHksIENhbGxlZSwgQXJncywgTmFtZSwgRlBNYXRoVGFnKTsKLSAgfQotCiAgIENhbGxJbnN0ICpDcmVhdGVDYWxsKEZ1bmN0aW9uVHlwZSAqRlR5LCBWYWx1ZSAqQ2FsbGVlLAotICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLCBjb25zdCBUd2luZSAmTmFtZSA9ICIiLAorICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzID0gTm9uZSwgY29uc3QgVHdpbmUgJk5hbWUgPSAiIiwKICAgICAgICAgICAgICAgICAgICAgICAgTUROb2RlICpGUE1hdGhUYWcgPSBudWxscHRyKSB7CiAgICAgQ2FsbEluc3QgKkNJID0gQ2FsbEluc3Q6OkNyZWF0ZShGVHksIENhbGxlZSwgQXJncywgRGVmYXVsdE9wZXJhbmRCdW5kbGVzKTsKICAgICBpZiAoaXNhPEZQTWF0aE9wZXJhdG9yPihDSSkpCkBAIC0xODg2LDE4ICsyMDE1LDQzIEBACiAgICAgcmV0dXJuIEluc2VydChDSSwgTmFtZSk7CiAgIH0KIAotICBDYWxsSW5zdCAqQ3JlYXRlQ2FsbChWYWx1ZSAqQ2FsbGVlLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAorICBDYWxsSW5zdCAqQ3JlYXRlQ2FsbChGdW5jdGlvblR5cGUgKkZUeSwgVmFsdWUgKkNhbGxlZSwgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gT3BCdW5kbGVzLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSA9ICIiLCBNRE5vZGUgKkZQTWF0aFRhZyA9IG51bGxwdHIpIHsKLSAgICBDYWxsSW5zdCAqQ0kgPSBDYWxsSW5zdDo6Q3JlYXRlKENhbGxlZSwgQXJncywgT3BCdW5kbGVzKTsKKyAgICBDYWxsSW5zdCAqQ0kgPSBDYWxsSW5zdDo6Q3JlYXRlKEZUeSwgQ2FsbGVlLCBBcmdzLCBPcEJ1bmRsZXMpOwogICAgIGlmIChpc2E8RlBNYXRoT3BlcmF0b3I+KENJKSkKICAgICAgIENJID0gY2FzdDxDYWxsSW5zdD4oc2V0RlBBdHRycyhDSSwgRlBNYXRoVGFnLCBGTUYpKTsKICAgICByZXR1cm4gSW5zZXJ0KENJLCBOYW1lKTsKICAgfQogCi0gIENhbGxJbnN0ICpDcmVhdGVDYWxsKEZ1bmN0aW9uICpDYWxsZWUsIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCisgIENhbGxJbnN0ICpDcmVhdGVDYWxsKEZ1bmN0aW9uQ2FsbGVlIENhbGxlZSwgQXJyYXlSZWY8VmFsdWUgKj4gQXJncyA9IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lID0gIiIsIE1ETm9kZSAqRlBNYXRoVGFnID0gbnVsbHB0cikgewotICAgIHJldHVybiBDcmVhdGVDYWxsKENhbGxlZS0+Z2V0RnVuY3Rpb25UeXBlKCksIENhbGxlZSwgQXJncywgTmFtZSwgRlBNYXRoVGFnKTsKKyAgICByZXR1cm4gQ3JlYXRlQ2FsbChDYWxsZWUuZ2V0RnVuY3Rpb25UeXBlKCksIENhbGxlZS5nZXRDYWxsZWUoKSwgQXJncywgTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBGUE1hdGhUYWcpOworICB9CisKKyAgQ2FsbEluc3QgKkNyZWF0ZUNhbGwoRnVuY3Rpb25DYWxsZWUgQ2FsbGVlLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAorICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBPcEJ1bmRsZXMsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lID0gIiIsIE1ETm9kZSAqRlBNYXRoVGFnID0gbnVsbHB0cikgeworICAgIHJldHVybiBDcmVhdGVDYWxsKENhbGxlZS5nZXRGdW5jdGlvblR5cGUoKSwgQ2FsbGVlLmdldENhbGxlZSgpLCBBcmdzLAorICAgICAgICAgICAgICAgICAgICAgIE9wQnVuZGxlcywgTmFtZSwgRlBNYXRoVGFnKTsKKyAgfQorCisgIC8vIERlcHJlY2F0ZWQgW29wYXF1ZSBwb2ludGVyIHR5cGVzXQorICBDYWxsSW5zdCAqQ3JlYXRlQ2FsbChWYWx1ZSAqQ2FsbGVlLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzID0gTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWUgPSAiIiwgTUROb2RlICpGUE1hdGhUYWcgPSBudWxscHRyKSB7CisgICAgcmV0dXJuIENyZWF0ZUNhbGwoCisgICAgICAgIGNhc3Q8RnVuY3Rpb25UeXBlPihDYWxsZWUtPmdldFR5cGUoKS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCkpLCBDYWxsZWUsCisgICAgICAgIEFyZ3MsIE5hbWUsIEZQTWF0aFRhZyk7CisgIH0KKworICAvLyBEZXByZWNhdGVkIFtvcGFxdWUgcG9pbnRlciB0eXBlc10KKyAgQ2FsbEluc3QgKkNyZWF0ZUNhbGwoVmFsdWUgKkNhbGxlZSwgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gT3BCdW5kbGVzLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSA9ICIiLCBNRE5vZGUgKkZQTWF0aFRhZyA9IG51bGxwdHIpIHsKKyAgICByZXR1cm4gQ3JlYXRlQ2FsbCgKKyAgICAgICAgY2FzdDxGdW5jdGlvblR5cGU+KENhbGxlZS0+Z2V0VHlwZSgpLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSksIENhbGxlZSwKKyAgICAgICAgQXJncywgT3BCdW5kbGVzLCBOYW1lLCBGUE1hdGhUYWcpOwogICB9CiAKICAgVmFsdWUgKkNyZWF0ZVNlbGVjdChWYWx1ZSAqQywgVmFsdWUgKlRydWUsIFZhbHVlICpGYWxzZSwKQEAgLTIxMTYsMTEgKzIyNzAsMTIgQEAKIHByaXZhdGU6CiAgIC8vLyBIZWxwZXIgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGFuIGFzc3VtZSBpbnRyaW5zaWMgY2FsbCB0aGF0CiAgIC8vLyByZXByZXNlbnRzIGFuIGFsaWdubWVudCBhc3N1bXB0aW9uIG9uIHRoZSBwcm92aWRlZCBQdHIsIE1hc2ssIFR5cGUKLSAgLy8vIGFuZCBPZmZzZXQuCisgIC8vLyBhbmQgT2Zmc2V0LiBJdCBtYXkgYmUgc29tZXRpbWVzIHVzZWZ1bCB0byBkbyBzb21lIG90aGVyIGxvZ2ljCisgIC8vLyBiYXNlZCBvbiB0aGlzIGFsaWdubWVudCBjaGVjaywgdGh1cyBpdCBjYW4gYmUgc3RvcmVkIGludG8gJ1RoZUNoZWNrJy4KICAgQ2FsbEluc3QgKkNyZWF0ZUFsaWdubWVudEFzc3VtcHRpb25IZWxwZXIoY29uc3QgRGF0YUxheW91dCAmREwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICpQdHJWYWx1ZSwgVmFsdWUgKk1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgKkludFB0clR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAqT2Zmc2V0VmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAqSW50UHRyVHksIFZhbHVlICpPZmZzZXRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgKipUaGVDaGVjaykgewogICAgIFZhbHVlICpQdHJJbnRWYWx1ZSA9IENyZWF0ZVB0clRvSW50KFB0clZhbHVlLCBJbnRQdHJUeSwgInB0cmludCIpOwogCiAgICAgaWYgKE9mZnNldFZhbHVlKSB7CkBAIC0yMTM5LDYgKzIyOTQsOSBAQAogICAgIFZhbHVlICpaZXJvID0gQ29uc3RhbnRJbnQ6OmdldChJbnRQdHJUeSwgMCk7CiAgICAgVmFsdWUgKk1hc2tlZFB0ciA9IENyZWF0ZUFuZChQdHJJbnRWYWx1ZSwgTWFzaywgIm1hc2tlZHB0ciIpOwogICAgIFZhbHVlICpJbnZDb25kID0gQ3JlYXRlSUNtcEVRKE1hc2tlZFB0ciwgWmVybywgIm1hc2tjb25kIik7CisgICAgaWYgKFRoZUNoZWNrKQorICAgICAgKlRoZUNoZWNrID0gSW52Q29uZDsKKwogICAgIHJldHVybiBDcmVhdGVBc3N1bXB0aW9uKEludkNvbmQpOwogICB9CiAKQEAgLTIxNDksMTcgKzIzMDcsMjIgQEAKICAgLy8vIEFuIG9wdGlvbmFsIG9mZnNldCBjYW4gYmUgcHJvdmlkZWQsIGFuZCBpZiBpdCBpcyBwcm92aWRlZCwgdGhlIG9mZnNldAogICAvLy8gbXVzdCBiZSBzdWJ0cmFjdGVkIGZyb20gdGhlIHByb3ZpZGVkIHBvaW50ZXIgdG8gZ2V0IHRoZSBwb2ludGVyIHdpdGggdGhlCiAgIC8vLyBzcGVjaWZpZWQgYWxpZ25tZW50LgorICAvLy8KKyAgLy8vIEl0IG1heSBiZSBzb21ldGltZXMgdXNlZnVsIHRvIGRvIHNvbWUgb3RoZXIgbG9naWMKKyAgLy8vIGJhc2VkIG9uIHRoaXMgYWxpZ25tZW50IGNoZWNrLCB0aHVzIGl0IGNhbiBiZSBzdG9yZWQgaW50byAnVGhlQ2hlY2snLgogICBDYWxsSW5zdCAqQ3JlYXRlQWxpZ25tZW50QXNzdW1wdGlvbihjb25zdCBEYXRhTGF5b3V0ICZETCwgVmFsdWUgKlB0clZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBBbGlnbm1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICpPZmZzZXRWYWx1ZSA9IG51bGxwdHIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgKk9mZnNldFZhbHVlID0gbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgKipUaGVDaGVjayA9IG51bGxwdHIpIHsKICAgICBhc3NlcnQoaXNhPFBvaW50ZXJUeXBlPihQdHJWYWx1ZS0+Z2V0VHlwZSgpKSAmJgogICAgICAgICAgICAidHJ5aW5nIHRvIGNyZWF0ZSBhbiBhbGlnbm1lbnQgYXNzdW1wdGlvbiBvbiBhIG5vbi1wb2ludGVyPyIpOworICAgIGFzc2VydChBbGlnbm1lbnQgIT0gMCAmJiAiSW52YWxpZCBBbGlnbm1lbnQiKTsKICAgICBhdXRvICpQdHJUeSA9IGNhc3Q8UG9pbnRlclR5cGU+KFB0clZhbHVlLT5nZXRUeXBlKCkpOwogICAgIFR5cGUgKkludFB0clR5ID0gZ2V0SW50UHRyVHkoREwsIFB0clR5LT5nZXRBZGRyZXNzU3BhY2UoKSk7CiAKLSAgICBWYWx1ZSAqTWFzayA9IENvbnN0YW50SW50OjpnZXQoSW50UHRyVHksIEFsaWdubWVudCA+IDAgPyBBbGlnbm1lbnQgLSAxIDogMCk7CisgICAgVmFsdWUgKk1hc2sgPSBDb25zdGFudEludDo6Z2V0KEludFB0clR5LCBBbGlnbm1lbnQgLSAxKTsKICAgICByZXR1cm4gQ3JlYXRlQWxpZ25tZW50QXNzdW1wdGlvbkhlbHBlcihETCwgUHRyVmFsdWUsIE1hc2ssIEludFB0clR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXRWYWx1ZSwgVGhlQ2hlY2spOwogICB9CiAKICAgLy8vIENyZWF0ZSBhbiBhc3N1bWUgaW50cmluc2ljIGNhbGwgdGhhdCByZXByZXNlbnRzIGFuIGFsaWdubWVudApAQCAtMjE2OSwyOSArMjMzMiwyOCBAQAogICAvLy8gbXVzdCBiZSBzdWJ0cmFjdGVkIGZyb20gdGhlIHByb3ZpZGVkIHBvaW50ZXIgdG8gZ2V0IHRoZSBwb2ludGVyIHdpdGggdGhlCiAgIC8vLyBzcGVjaWZpZWQgYWxpZ25tZW50LgogICAvLy8KKyAgLy8vIEl0IG1heSBiZSBzb21ldGltZXMgdXNlZnVsIHRvIGRvIHNvbWUgb3RoZXIgbG9naWMKKyAgLy8vIGJhc2VkIG9uIHRoaXMgYWxpZ25tZW50IGNoZWNrLCB0aHVzIGl0IGNhbiBiZSBzdG9yZWQgaW50byAnVGhlQ2hlY2snLgorICAvLy8KICAgLy8vIFRoaXMgb3ZlcmxvYWQgaGFuZGxlcyB0aGUgY29uZGl0aW9uIHdoZXJlIHRoZSBBbGlnbm1lbnQgaXMgZGVwZW5kZW50CiAgIC8vLyBvbiBhbiBleGlzdGluZyB2YWx1ZSByYXRoZXIgdGhhbiBhIHN0YXRpYyB2YWx1ZS4KICAgQ2FsbEluc3QgKkNyZWF0ZUFsaWdubWVudEFzc3VtcHRpb24oY29uc3QgRGF0YUxheW91dCAmREwsIFZhbHVlICpQdHJWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgKkFsaWdubWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgKk9mZnNldFZhbHVlID0gbnVsbHB0cikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAqT2Zmc2V0VmFsdWUgPSBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAqKlRoZUNoZWNrID0gbnVsbHB0cikgewogICAgIGFzc2VydChpc2E8UG9pbnRlclR5cGU+KFB0clZhbHVlLT5nZXRUeXBlKCkpICYmCiAgICAgICAgICAgICJ0cnlpbmcgdG8gY3JlYXRlIGFuIGFsaWdubWVudCBhc3N1bXB0aW9uIG9uIGEgbm9uLXBvaW50ZXI/Iik7CiAgICAgYXV0byAqUHRyVHkgPSBjYXN0PFBvaW50ZXJUeXBlPihQdHJWYWx1ZS0+Z2V0VHlwZSgpKTsKICAgICBUeXBlICpJbnRQdHJUeSA9IGdldEludFB0clR5KERMLCBQdHJUeS0+Z2V0QWRkcmVzc1NwYWNlKCkpOwogCiAgICAgaWYgKEFsaWdubWVudC0+Z2V0VHlwZSgpICE9IEludFB0clR5KQotICAgICAgQWxpZ25tZW50ID0gQ3JlYXRlSW50Q2FzdChBbGlnbm1lbnQsIEludFB0clR5LCAvKmlzU2lnbmVkKi8gdHJ1ZSwKKyAgICAgIEFsaWdubWVudCA9IENyZWF0ZUludENhc3QoQWxpZ25tZW50LCBJbnRQdHJUeSwgLyppc1NpZ25lZCovIGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxpZ25tZW50Y2FzdCIpOwotICAgIFZhbHVlICpJc1Bvc2l0aXZlID0KLSAgICAgICAgQ3JlYXRlSUNtcChDbXBJbnN0OjpJQ01QX1NHVCwgQWxpZ25tZW50LAotICAgICAgICAgICAgICAgICAgIENvbnN0YW50SW50OjpnZXQoQWxpZ25tZW50LT5nZXRUeXBlKCksIDApLCAiaXNwb3NpdGl2ZSIpOwotICAgIFZhbHVlICpQb3NpdGl2ZU1hc2sgPQotICAgICAgICBDcmVhdGVTdWIoQWxpZ25tZW50LCBDb25zdGFudEludDo6Z2V0KEludFB0clR5LCAxKSwgInBvc2l0aXZlbWFzayIpOwotICAgIFZhbHVlICpNYXNrID0gQ3JlYXRlU2VsZWN0KElzUG9zaXRpdmUsIFBvc2l0aXZlTWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdGFudEludDo6Z2V0KEludFB0clR5LCAwKSwgIm1hc2siKTsKKworICAgIFZhbHVlICpNYXNrID0gQ3JlYXRlU3ViKEFsaWdubWVudCwgQ29uc3RhbnRJbnQ6OmdldChJbnRQdHJUeSwgMSksICJtYXNrIik7CiAKICAgICByZXR1cm4gQ3JlYXRlQWxpZ25tZW50QXNzdW1wdGlvbkhlbHBlcihETCwgUHRyVmFsdWUsIE1hc2ssIEludFB0clR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9mZnNldFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPZmZzZXRWYWx1ZSwgVGhlQ2hlY2spOwogICB9CiB9OwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0lSUHJpbnRpbmdQYXNzZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSVJQcmludGluZ1Bhc3Nlcy5oCmluZGV4IDc1ZjgwNTYuLjNiZTk0NDkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSVJQcmludGluZ1Bhc3Nlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSVJQcmludGluZ1Bhc3Nlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIElSUHJpbnRpbmdQYXNzZXMuaCAtIFBhc3NlcyB0byBwcmludCBvdXQgSVIgY29uc3RydWN0cyAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbmxpbmVBc20uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW5saW5lQXNtLmgKaW5kZXggMTUxOWE0NS4uMmFhYzgwNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbmxpbmVBc20uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0lubGluZUFzbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vSW5saW5lQXNtLmggLSBDbGFzcyB0byByZXByZXNlbnQgaW5saW5lIGFzbSBzdHJpbmdzIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0luc3RJdGVyYXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnN0SXRlcmF0b3IuaAppbmRleCAyOTg4ZmM5Li4wNTRmZTRlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0luc3RJdGVyYXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW5zdEl0ZXJhdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSW5zdEl0ZXJhdG9yLmggLSBDbGFzc2VzIGZvciBpbnN0IGl0ZXJhdGlvbiAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW5zdFZpc2l0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW5zdFZpc2l0b3IuaAppbmRleCA1NTUzNmYyLi5mYmViMmNhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0luc3RWaXNpdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnN0VmlzaXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEluc3RWaXNpdG9yLmggLSBJbnN0cnVjdGlvbiB2aXNpdG9yIHRlbXBsYXRlcyAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMTY2LDE1ICsxNjUsNiBAQAogICAvLyBTcGVjaWZpYyBJbnN0cnVjdGlvbiB0eXBlIGNsYXNzZXMuLi4gbm90ZSB0aGF0IGFsbCBvZiB0aGUgY2FzdHMgYXJlCiAgIC8vIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIHVzZSB0aGUgaW5zdHJ1Y3Rpb24gY2xhc3NlcyBhcyBvcGFxdWUgdHlwZXMuLi4KICAgLy8KLSAgUmV0VHkgdmlzaXRSZXR1cm5JbnN0KFJldHVybkluc3QgJkkpICAgICAgICAgICAgeyBERUxFR0FURShUZXJtaW5hdG9ySW5zdCk7fQotICBSZXRUeSB2aXNpdEJyYW5jaEluc3QoQnJhbmNoSW5zdCAmSSkgICAgICAgICAgICB7IERFTEVHQVRFKFRlcm1pbmF0b3JJbnN0KTt9Ci0gIFJldFR5IHZpc2l0U3dpdGNoSW5zdChTd2l0Y2hJbnN0ICZJKSAgICAgICAgICAgIHsgREVMRUdBVEUoVGVybWluYXRvckluc3QpO30KLSAgUmV0VHkgdmlzaXRJbmRpcmVjdEJySW5zdChJbmRpcmVjdEJySW5zdCAmSSkgICAgeyBERUxFR0FURShUZXJtaW5hdG9ySW5zdCk7fQotICBSZXRUeSB2aXNpdFJlc3VtZUluc3QoUmVzdW1lSW5zdCAmSSkgICAgICAgICAgICB7IERFTEVHQVRFKFRlcm1pbmF0b3JJbnN0KTt9Ci0gIFJldFR5IHZpc2l0VW5yZWFjaGFibGVJbnN0KFVucmVhY2hhYmxlSW5zdCAmSSkgIHsgREVMRUdBVEUoVGVybWluYXRvckluc3QpO30KLSAgUmV0VHkgdmlzaXRDbGVhbnVwUmV0dXJuSW5zdChDbGVhbnVwUmV0dXJuSW5zdCAmSSkgeyBERUxFR0FURShUZXJtaW5hdG9ySW5zdCk7fQotICBSZXRUeSB2aXNpdENhdGNoUmV0dXJuSW5zdChDYXRjaFJldHVybkluc3QgJkkpICB7IERFTEVHQVRFKFRlcm1pbmF0b3JJbnN0KTsgfQotICBSZXRUeSB2aXNpdENhdGNoU3dpdGNoSW5zdChDYXRjaFN3aXRjaEluc3QgJkkpICB7IERFTEVHQVRFKFRlcm1pbmF0b3JJbnN0KTt9CiAgIFJldFR5IHZpc2l0SUNtcEluc3QoSUNtcEluc3QgJkkpICAgICAgICAgICAgICAgIHsgREVMRUdBVEUoQ21wSW5zdCk7fQogICBSZXRUeSB2aXNpdEZDbXBJbnN0KEZDbXBJbnN0ICZJKSAgICAgICAgICAgICAgICB7IERFTEVHQVRFKENtcEluc3QpO30KICAgUmV0VHkgdmlzaXRBbGxvY2FJbnN0KEFsbG9jYUluc3QgJkkpICAgICAgICAgICAgeyBERUxFR0FURShVbmFyeUluc3RydWN0aW9uKTt9CkBAIC0yMjcsMzYgKzIxNyw3NiBAQAogICBSZXRUeSB2aXNpdFZBQ29weUluc3QoVkFDb3B5SW5zdCAmSSkgICAgICAgICAgICB7IERFTEVHQVRFKEludHJpbnNpY0luc3QpOyB9CiAgIFJldFR5IHZpc2l0SW50cmluc2ljSW5zdChJbnRyaW5zaWNJbnN0ICZJKSAgICAgIHsgREVMRUdBVEUoQ2FsbEluc3QpOyB9CiAKLSAgLy8gQ2FsbCBhbmQgSW52b2tlIGFyZSBzbGlnaHRseSBkaWZmZXJlbnQgYXMgdGhleSBkZWxlZ2F0ZSBmaXJzdCB0aHJvdWdoCi0gIC8vIGEgZ2VuZXJpYyBDYWxsU2l0ZSB2aXNpdG9yLgorICAvLyBDYWxsLCBJbnZva2UgYW5kIENhbGxCciBhcmUgc2xpZ2h0bHkgZGlmZmVyZW50IGFzIHRoZXkgZGVsZWdhdGUgZmlyc3QKKyAgLy8gdGhyb3VnaCBhIGdlbmVyaWMgQ2FsbFNpdGUgdmlzaXRvci4KICAgUmV0VHkgdmlzaXRDYWxsSW5zdChDYWxsSW5zdCAmSSkgewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdWJDbGFzcyo+KHRoaXMpLT52aXNpdENhbGxTaXRlKCZJKTsKICAgfQogICBSZXRUeSB2aXNpdEludm9rZUluc3QoSW52b2tlSW5zdCAmSSkgewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdWJDbGFzcyo+KHRoaXMpLT52aXNpdENhbGxTaXRlKCZJKTsKICAgfQorICBSZXRUeSB2aXNpdENhbGxCckluc3QoQ2FsbEJySW5zdCAmSSkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdWJDbGFzcyAqPih0aGlzKS0+dmlzaXRDYWxsU2l0ZSgmSSk7CisgIH0KKworICAvLyBXaGlsZSB0ZXJtaW5hdG9ycyBkb24ndCBoYXZlIGEgZGlzdGluY3QgdHlwZSBtb2RlbGluZyB0aGVtLCB3ZSBzdXBwb3J0CisgIC8vIGludGVyY2VwdGluZyB0aGVtIHdpdGggZGVkaWNhdGVkIGEgdmlzaXRvciBjYWxsYmFjay4KKyAgUmV0VHkgdmlzaXRSZXR1cm5JbnN0KFJldHVybkluc3QgJkkpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3ViQ2xhc3MgKj4odGhpcyktPnZpc2l0VGVybWluYXRvcihJKTsKKyAgfQorICBSZXRUeSB2aXNpdEJyYW5jaEluc3QoQnJhbmNoSW5zdCAmSSkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdWJDbGFzcyAqPih0aGlzKS0+dmlzaXRUZXJtaW5hdG9yKEkpOworICB9CisgIFJldFR5IHZpc2l0U3dpdGNoSW5zdChTd2l0Y2hJbnN0ICZJKSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFN1YkNsYXNzICo+KHRoaXMpLT52aXNpdFRlcm1pbmF0b3IoSSk7CisgIH0KKyAgUmV0VHkgdmlzaXRJbmRpcmVjdEJySW5zdChJbmRpcmVjdEJySW5zdCAmSSkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdWJDbGFzcyAqPih0aGlzKS0+dmlzaXRUZXJtaW5hdG9yKEkpOworICB9CisgIFJldFR5IHZpc2l0UmVzdW1lSW5zdChSZXN1bWVJbnN0ICZJKSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFN1YkNsYXNzICo+KHRoaXMpLT52aXNpdFRlcm1pbmF0b3IoSSk7CisgIH0KKyAgUmV0VHkgdmlzaXRVbnJlYWNoYWJsZUluc3QoVW5yZWFjaGFibGVJbnN0ICZJKSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFN1YkNsYXNzICo+KHRoaXMpLT52aXNpdFRlcm1pbmF0b3IoSSk7CisgIH0KKyAgUmV0VHkgdmlzaXRDbGVhbnVwUmV0dXJuSW5zdChDbGVhbnVwUmV0dXJuSW5zdCAmSSkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdWJDbGFzcyAqPih0aGlzKS0+dmlzaXRUZXJtaW5hdG9yKEkpOworICB9CisgIFJldFR5IHZpc2l0Q2F0Y2hSZXR1cm5JbnN0KENhdGNoUmV0dXJuSW5zdCAmSSkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdWJDbGFzcyAqPih0aGlzKS0+dmlzaXRUZXJtaW5hdG9yKEkpOworICB9CisgIFJldFR5IHZpc2l0Q2F0Y2hTd2l0Y2hJbnN0KENhdGNoU3dpdGNoSW5zdCAmSSkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdWJDbGFzcyAqPih0aGlzKS0+dmlzaXRUZXJtaW5hdG9yKEkpOworICB9CisgIFJldFR5IHZpc2l0VGVybWluYXRvcihJbnN0cnVjdGlvbiAmSSkgICAgeyBERUxFR0FURShJbnN0cnVjdGlvbik7fQogCiAgIC8vIE5leHQgbGV2ZWwgcHJvcGFnYXRvcnM6IElmIHRoZSB1c2VyIGRvZXMgbm90IG92ZXJsb2FkIGEgc3BlY2lmaWMKICAgLy8gaW5zdHJ1Y3Rpb24gdHlwZSwgdGhleSBjYW4gb3ZlcmxvYWQgb25lIG9mIHRoZXNlIHRvIGdldCB0aGUgd2hvbGUgY2xhc3MKICAgLy8gb2YgaW5zdHJ1Y3Rpb25zLi4uCiAgIC8vCiAgIFJldFR5IHZpc2l0Q2FzdEluc3QoQ2FzdEluc3QgJkkpICAgICAgICAgICAgICAgIHsgREVMRUdBVEUoVW5hcnlJbnN0cnVjdGlvbik7fQorICBSZXRUeSB2aXNpdFVuYXJ5T3BlcmF0b3IoVW5hcnlPcGVyYXRvciAmSSkgICAgICB7IERFTEVHQVRFKFVuYXJ5SW5zdHJ1Y3Rpb24pO30KICAgUmV0VHkgdmlzaXRCaW5hcnlPcGVyYXRvcihCaW5hcnlPcGVyYXRvciAmSSkgICAgeyBERUxFR0FURShJbnN0cnVjdGlvbik7fQogICBSZXRUeSB2aXNpdENtcEluc3QoQ21wSW5zdCAmSSkgICAgICAgICAgICAgICAgICB7IERFTEVHQVRFKEluc3RydWN0aW9uKTt9Ci0gIFJldFR5IHZpc2l0VGVybWluYXRvckluc3QoVGVybWluYXRvckluc3QgJkkpICAgIHsgREVMRUdBVEUoSW5zdHJ1Y3Rpb24pO30KICAgUmV0VHkgdmlzaXRVbmFyeUluc3RydWN0aW9uKFVuYXJ5SW5zdHJ1Y3Rpb24gJkkpeyBERUxFR0FURShJbnN0cnVjdGlvbik7fQogCi0gIC8vIFByb3ZpZGUgYSBzcGVjaWFsIHZpc2l0b3IgZm9yIGEgJ2NhbGxzaXRlJyB0aGF0IHZpc2l0cyBib3RoIGNhbGxzIGFuZAotICAvLyBpbnZva2VzLiBXaGVuIHVuaW1wbGVtZW50ZWQsIHByb3Blcmx5IGRlbGVnYXRlcyB0byBlaXRoZXIgdGhlIHRlcm1pbmF0b3Igb3IKLSAgLy8gcmVndWxhciBpbnN0cnVjdGlvbiB2aXNpdG9yLgorICAvLyBUaGUgbmV4dCBsZXZlbCBkZWxlZ2F0aW9uIGZvciBgQ2FsbEJhc2VgIGlzIHNsaWdodGx5IG1vcmUgY29tcGxleCBpbiBvcmRlcgorICAvLyB0byBzdXBwb3J0IHZpc2l0aW5nIGNhc2VzIHdoZXJlIHRoZSBjYWxsIGlzIGFsc28gYSB0ZXJtaW5hdG9yLgorICBSZXRUeSB2aXNpdENhbGxCYXNlKENhbGxCYXNlICZJKSB7CisgICAgaWYgKGlzYTxJbnZva2VJbnN0PihJKSB8fCBpc2E8Q2FsbEJySW5zdD4oSSkpCisgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3ViQ2xhc3MgKj4odGhpcyktPnZpc2l0VGVybWluYXRvcihJKTsKKworICAgIERFTEVHQVRFKEluc3RydWN0aW9uKTsKKyAgfQorCisgIC8vIFByb3ZpZGUgYSBsZWdhY3kgdmlzaXRvciBmb3IgYSAnY2FsbHNpdGUnIHRoYXQgdmlzaXRzIGNhbGxzLCBpbnZva2VzLAorICAvLyBhbmQgY2FsYnJzLgorICAvLworICAvLyBQcmVmZXIgb3ZlcnJpZGluZyB0aGUgdHlwZSBzeXN0ZW0gYmFzZWQgYENhbGxCYXNlYCBpbnN0ZWFkLgogICBSZXRUeSB2aXNpdENhbGxTaXRlKENhbGxTaXRlIENTKSB7CiAgICAgYXNzZXJ0KENTKTsKICAgICBJbnN0cnVjdGlvbiAmSSA9ICpDUy5nZXRJbnN0cnVjdGlvbigpOwotICAgIGlmIChDUy5pc0NhbGwoKSkKLSAgICAgIERFTEVHQVRFKEluc3RydWN0aW9uKTsKLQotICAgIGFzc2VydChDUy5pc0ludm9rZSgpKTsKLSAgICBERUxFR0FURShUZXJtaW5hdG9ySW5zdCk7CisgICAgREVMRUdBVEUoQ2FsbEJhc2UpOwogICB9CiAKICAgLy8gSWYgdGhlIHVzZXIgd2FudHMgYSAnZGVmYXVsdCcgY2FzZSwgdGhleSBjYW4gY2hvb3NlIHRvIG92ZXJyaWRlIHRoaXMKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW5zdHJUeXBlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnN0clR5cGVzLmgKaW5kZXggOTVjZGI3MC4uNmY1MDY2OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnN0clR5cGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnN0clR5cGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9JbnN0clR5cGVzLmggLSBJbXBvcnRhbnQgSW5zdHJ1Y3Rpb24gc3ViY2xhc3NlcyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI1LDggKzI0LDEwIEBACiAjaW5jbHVkZSAibGx2bS9BRFQvVHdpbmUuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9pdGVyYXRvcl9yYW5nZS5oIgogI2luY2x1ZGUgImxsdm0vSVIvQXR0cmlidXRlcy5oIgorI2luY2x1ZGUgImxsdm0vSVIvQ2FsbGluZ0NvbnYuaCIKICNpbmNsdWRlICJsbHZtL0lSL0NvbnN0YW50cy5oIgogI2luY2x1ZGUgImxsdm0vSVIvRGVyaXZlZFR5cGVzLmgiCisjaW5jbHVkZSAibGx2bS9JUi9GdW5jdGlvbi5oIgogI2luY2x1ZGUgImxsdm0vSVIvSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJsbHZtL0lSL0xMVk1Db250ZXh0LmgiCiAjaW5jbHVkZSAibGx2bS9JUi9PcGVyYW5kVHJhaXRzLmgiCkBAIC00NSwzMyArNDYsOSBAQAogCiBuYW1lc3BhY2UgbGx2bSB7CiAKLS8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hdG9ySW5zdCBDbGFzcwotLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLQotLy8vIFN1YmNsYXNzZXMgb2YgdGhpcyBjbGFzcyBhcmUgYWxsIGFibGUgdG8gdGVybWluYXRlIGEgYmFzaWMKLS8vLyBibG9jay4gVGh1cywgdGhlc2UgYXJlIGFsbCB0aGUgZmxvdyBjb250cm9sIHR5cGUgb2Ygb3BlcmF0aW9ucy4KLS8vLwotY2xhc3MgVGVybWluYXRvckluc3QgOiBwdWJsaWMgSW5zdHJ1Y3Rpb24gewotcHJvdGVjdGVkOgotICBUZXJtaW5hdG9ySW5zdChUeXBlICpUeSwgSW5zdHJ1Y3Rpb246OlRlcm1PcHMgaVR5cGUsCi0gICAgICAgICAgICAgICAgIFVzZSAqT3BzLCB1bnNpZ25lZCBOdW1PcHMsCi0gICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUgPSBudWxscHRyKQotICAgIDogSW5zdHJ1Y3Rpb24oVHksIGlUeXBlLCBPcHMsIE51bU9wcywgSW5zZXJ0QmVmb3JlKSB7fQotCi0gIFRlcm1pbmF0b3JJbnN0KFR5cGUgKlR5LCBJbnN0cnVjdGlvbjo6VGVybU9wcyBpVHlwZSwKLSAgICAgICAgICAgICAgICAgVXNlICpPcHMsIHVuc2lnbmVkIE51bU9wcywgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpCi0gICAgOiBJbnN0cnVjdGlvbihUeSwgaVR5cGUsIE9wcywgTnVtT3BzLCBJbnNlcnRBdEVuZCkge30KLQotcHVibGljOgotICAvLyBNZXRob2RzIGZvciBzdXBwb3J0IHR5cGUgaW5xdWlyeSB0aHJvdWdoIGlzYSwgY2FzdCwgYW5kIGR5bl9jYXN0OgotICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEluc3RydWN0aW9uICpJKSB7Ci0gICAgcmV0dXJuIEktPmlzVGVybWluYXRvcigpOwotICB9Ci0gIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgVmFsdWUgKlYpIHsKLSAgICByZXR1cm4gaXNhPEluc3RydWN0aW9uPihWKSAmJiBjbGFzc29mKGNhc3Q8SW5zdHJ1Y3Rpb24+KFYpKTsKLSAgfQotfTsKK25hbWVzcGFjZSBJbnRyaW5zaWMgeworZW51bSBJRCA6IHVuc2lnbmVkOworfQogCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gICAgICAgICAgICAgICAgICAgICAgICAgIFVuYXJ5SW5zdHJ1Y3Rpb24gQ2xhc3MKQEAgLTMzNiwyMiArMzEzLDYgQEAKICAgc3RhdGljIEJpbmFyeU9wZXJhdG9yICpDcmVhdGVOb3QoVmFsdWUgKk9wLCBjb25zdCBUd2luZSAmTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpOwogCi0gIC8vLyBDaGVjayBpZiB0aGUgZ2l2ZW4gVmFsdWUgaXMgYSBORUcsIEZOZWcsIG9yIE5PVCBpbnN0cnVjdGlvbi4KLSAgLy8vCi0gIHN0YXRpYyBib29sIGlzTmVnKGNvbnN0IFZhbHVlICpWKTsKLSAgc3RhdGljIGJvb2wgaXNGTmVnKGNvbnN0IFZhbHVlICpWLCBib29sIElnbm9yZVplcm9TaWduPWZhbHNlKTsKLSAgc3RhdGljIGJvb2wgaXNOb3QoY29uc3QgVmFsdWUgKlYpOwotCi0gIC8vLyBIZWxwZXIgZnVuY3Rpb25zIHRvIGV4dHJhY3QgdGhlIHVuYXJ5IGFyZ3VtZW50IG9mIGEgTkVHLCBGTkVHIG9yIE5PVAotICAvLy8gb3BlcmF0aW9uIGltcGxlbWVudGVkIHZpYSBTdWIsIEZTdWIsIG9yIFhvci4KLSAgLy8vCi0gIHN0YXRpYyBjb25zdCBWYWx1ZSAqZ2V0TmVnQXJndW1lbnQoY29uc3QgVmFsdWUgKkJpbk9wKTsKLSAgc3RhdGljICAgICAgIFZhbHVlICpnZXROZWdBcmd1bWVudCggICAgICBWYWx1ZSAqQmluT3ApOwotICBzdGF0aWMgY29uc3QgVmFsdWUgKmdldEZOZWdBcmd1bWVudChjb25zdCBWYWx1ZSAqQmluT3ApOwotICBzdGF0aWMgICAgICAgVmFsdWUgKmdldEZOZWdBcmd1bWVudCggICAgICBWYWx1ZSAqQmluT3ApOwotICBzdGF0aWMgY29uc3QgVmFsdWUgKmdldE5vdEFyZ3VtZW50KGNvbnN0IFZhbHVlICpCaW5PcCk7Ci0gIHN0YXRpYyAgICAgICBWYWx1ZSAqZ2V0Tm90QXJndW1lbnQoICAgICAgVmFsdWUgKkJpbk9wKTsKLQogICBCaW5hcnlPcHMgZ2V0T3Bjb2RlKCkgY29uc3QgewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxCaW5hcnlPcHM+KEluc3RydWN0aW9uOjpnZXRPcGNvZGUoKSk7CiAgIH0KQEAgLTcyMSw3ICs2ODIsOCBAQAogcHJvdGVjdGVkOgogICBDbXBJbnN0KFR5cGUgKnR5LCBJbnN0cnVjdGlvbjo6T3RoZXJPcHMgb3AsIFByZWRpY2F0ZSBwcmVkLAogICAgICAgICAgIFZhbHVlICpMSFMsIFZhbHVlICpSSFMsIGNvbnN0IFR3aW5lICZOYW1lID0gIiIsCi0gICAgICAgICAgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSA9IG51bGxwdHIpOworICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUgPSBudWxscHRyLAorICAgICAgICAgIEluc3RydWN0aW9uICpGbGFnc1NvdXJjZSA9IG51bGxwdHIpOwogCiAgIENtcEluc3QoVHlwZSAqdHksIEluc3RydWN0aW9uOjpPdGhlck9wcyBvcCwgUHJlZGljYXRlIHByZWQsCiAgICAgICAgICAgVmFsdWUgKkxIUywgVmFsdWUgKlJIUywgY29uc3QgVHdpbmUgJk5hbWUsCkBAIC05NDcsNzYgKzkwOSw2IEBACiAKIERFRklORV9UUkFOU1BBUkVOVF9PUEVSQU5EX0FDQ0VTU09SUyhDbXBJbnN0LCBWYWx1ZSkKIAotLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY2xldFBhZEluc3QgQ2xhc3MKLS8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi1jbGFzcyBGdW5jbGV0UGFkSW5zdCA6IHB1YmxpYyBJbnN0cnVjdGlvbiB7Ci1wcml2YXRlOgotICBGdW5jbGV0UGFkSW5zdChjb25zdCBGdW5jbGV0UGFkSW5zdCAmQ1BJKTsKLQotICBleHBsaWNpdCBGdW5jbGV0UGFkSW5zdChJbnN0cnVjdGlvbjo6RnVuY2xldFBhZE9wcyBPcCwgVmFsdWUgKlBhcmVudFBhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywgdW5zaWduZWQgVmFsdWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSk7Ci0gIGV4cGxpY2l0IEZ1bmNsZXRQYWRJbnN0KEluc3RydWN0aW9uOjpGdW5jbGV0UGFkT3BzIE9wLCBWYWx1ZSAqUGFyZW50UGFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLCB1bnNpZ25lZCBWYWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCk7Ci0KLSAgdm9pZCBpbml0KFZhbHVlICpQYXJlbnRQYWQsIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsIGNvbnN0IFR3aW5lICZOYW1lU3RyKTsKLQotcHJvdGVjdGVkOgotICAvLyBOb3RlOiBJbnN0cnVjdGlvbiBuZWVkcyB0byBiZSBhIGZyaWVuZCBoZXJlIHRvIGNhbGwgY2xvbmVJbXBsLgotICBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rpb247Ci0gIGZyaWVuZCBjbGFzcyBDYXRjaFBhZEluc3Q7Ci0gIGZyaWVuZCBjbGFzcyBDbGVhbnVwUGFkSW5zdDsKLQotICBGdW5jbGV0UGFkSW5zdCAqY2xvbmVJbXBsKCkgY29uc3Q7Ci0KLXB1YmxpYzoKLSAgLy8vIFByb3ZpZGUgZmFzdCBvcGVyYW5kIGFjY2Vzc29ycwotICBERUNMQVJFX1RSQU5TUEFSRU5UX09QRVJBTkRfQUNDRVNTT1JTKFZhbHVlKTsKLQotICAvLy8gZ2V0TnVtQXJnT3BlcmFuZHMgLSBSZXR1cm4gdGhlIG51bWJlciBvZiBmdW5jbGV0cGFkIGFyZ3VtZW50cy4KLSAgLy8vCi0gIHVuc2lnbmVkIGdldE51bUFyZ09wZXJhbmRzKCkgY29uc3QgeyByZXR1cm4gZ2V0TnVtT3BlcmFuZHMoKSAtIDE7IH0KLQotICAvLy8gQ29udmVuaWVuY2UgYWNjZXNzb3JzCi0KLSAgLy8vIFJldHVybiB0aGUgb3V0ZXIgRUgtcGFkIHRoaXMgZnVuY2xldCBpcyBuZXN0ZWQgd2l0aGluLgotICAvLy8KLSAgLy8vIE5vdGU6IFRoaXMgcmV0dXJucyB0aGUgYXNzb2NpYXRlZCBDYXRjaFN3aXRjaEluc3QgaWYgdGhpcyBGdW5jbGV0UGFkSW5zdAotICAvLy8gaXMgYSBDYXRjaFBhZEluc3QuCi0gIFZhbHVlICpnZXRQYXJlbnRQYWQoKSBjb25zdCB7IHJldHVybiBPcDwtMT4oKTsgfQotICB2b2lkIHNldFBhcmVudFBhZChWYWx1ZSAqUGFyZW50UGFkKSB7Ci0gICAgYXNzZXJ0KFBhcmVudFBhZCk7Ci0gICAgT3A8LTE+KCkgPSBQYXJlbnRQYWQ7Ci0gIH0KLQotICAvLy8gZ2V0QXJnT3BlcmFuZC9zZXRBcmdPcGVyYW5kIC0gUmV0dXJuL3NldCB0aGUgaS10aCBmdW5jbGV0cGFkIGFyZ3VtZW50LgotICAvLy8KLSAgVmFsdWUgKmdldEFyZ09wZXJhbmQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4gZ2V0T3BlcmFuZChpKTsgfQotICB2b2lkIHNldEFyZ09wZXJhbmQodW5zaWduZWQgaSwgVmFsdWUgKnYpIHsgc2V0T3BlcmFuZChpLCB2KTsgfQotCi0gIC8vLyBhcmdfb3BlcmFuZHMgLSBpdGVyYXRpb24gYWRhcHRlciBmb3IgcmFuZ2UtZm9yIGxvb3BzLgotICBvcF9yYW5nZSBhcmdfb3BlcmFuZHMoKSB7IHJldHVybiBvcF9yYW5nZShvcF9iZWdpbigpLCBvcF9lbmQoKSAtIDEpOyB9Ci0KLSAgLy8vIGFyZ19vcGVyYW5kcyAtIGl0ZXJhdGlvbiBhZGFwdGVyIGZvciByYW5nZS1mb3IgbG9vcHMuCi0gIGNvbnN0X29wX3JhbmdlIGFyZ19vcGVyYW5kcygpIGNvbnN0IHsKLSAgICByZXR1cm4gY29uc3Rfb3BfcmFuZ2Uob3BfYmVnaW4oKSwgb3BfZW5kKCkgLSAxKTsKLSAgfQotCi0gIC8vIE1ldGhvZHMgZm9yIHN1cHBvcnQgdHlwZSBpbnF1aXJ5IHRocm91Z2ggaXNhLCBjYXN0LCBhbmQgZHluX2Nhc3Q6Ci0gIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgSW5zdHJ1Y3Rpb24gKkkpIHsgcmV0dXJuIEktPmlzRnVuY2xldFBhZCgpOyB9Ci0gIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgVmFsdWUgKlYpIHsKLSAgICByZXR1cm4gaXNhPEluc3RydWN0aW9uPihWKSAmJiBjbGFzc29mKGNhc3Q8SW5zdHJ1Y3Rpb24+KFYpKTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBPcGVyYW5kVHJhaXRzPEZ1bmNsZXRQYWRJbnN0PgotICAgIDogcHVibGljIFZhcmlhZGljT3BlcmFuZFRyYWl0czxGdW5jbGV0UGFkSW5zdCwgLypNSU5BUklUWT0qLzE+IHt9OwotCi1ERUZJTkVfVFJBTlNQQVJFTlRfT1BFUkFORF9BQ0NFU1NPUlMoRnVuY2xldFBhZEluc3QsIFZhbHVlKQotCiAvLy8gQSBsaWdodHdlaWdodCBhY2Nlc3NvciBmb3IgYW4gb3BlcmFuZCBidW5kbGUgbWVhbnQgdG8gYmUgcGFzc2VkCiAvLy8gYXJvdW5kIGJ5IHZhbHVlLgogc3RydWN0IE9wZXJhbmRCdW5kbGVVc2UgewpAQCAtMTEwMSw1NCArOTkzLDY0NSBAQAogdXNpbmcgT3BlcmFuZEJ1bmRsZURlZiA9IE9wZXJhbmRCdW5kbGVEZWZUPFZhbHVlICo+OwogdXNpbmcgQ29uc3RPcGVyYW5kQnVuZGxlRGVmID0gT3BlcmFuZEJ1bmRsZURlZlQ8Y29uc3QgVmFsdWUgKj47CiAKLS8vLyBBIG1peGluIHRvIGFkZCBvcGVyYW5kIGJ1bmRsZSBmdW5jdGlvbmFsaXR5IHRvIGxsdm0gaW5zdHJ1Y3Rpb24KLS8vLyBjbGFzc2VzLgorLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxCYXNlIENsYXNzCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisvLy8gQmFzZSBjbGFzcyBmb3IgYWxsIGNhbGxhYmxlIGluc3RydWN0aW9ucyAoSW52b2tlSW5zdCBhbmQgQ2FsbEluc3QpCisvLy8gSG9sZHMgZXZlcnl0aGluZyByZWxhdGVkIHRvIGNhbGxpbmcgYSBmdW5jdGlvbi4KIC8vLwotLy8vIE9wZXJhbmRCdW5kbGVVc2VyIHVzZXMgdGhlIGRlc2NyaXB0b3IgYXJlYSBjby1hbGxvY2F0ZWQgd2l0aCB0aGUgaG9zdCBVc2VyCi0vLy8gdG8gc3RvcmUgc29tZSBtZXRhIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIG9wZXJhbmRzIGFyZSAibm9ybWFsIiBvcGVyYW5kcywKLS8vLyBhbmQgd2hpY2ggb25lcyBiZWxvbmcgdG8gc29tZSBvcGVyYW5kIGJ1bmRsZS4KKy8vLyBBbGwgY2FsbC1saWtlIGluc3RydWN0aW9ucyBhcmUgcmVxdWlyZWQgdG8gdXNlIGEgY29tbW9uIG9wZXJhbmQgbGF5b3V0OgorLy8vIC0gWmVybyBvciBtb3JlIGFyZ3VtZW50cyB0byB0aGUgY2FsbCwKKy8vLyAtIFplcm8gb3IgbW9yZSBvcGVyYW5kIGJ1bmRsZXMgd2l0aCB6ZXJvIG9yIG1vcmUgb3BlcmFuZCBpbnB1dHMgZWFjaAorLy8vICAgYnVuZGxlLAorLy8vIC0gWmVybyBvciBtb3JlIHN1YmNsYXNzIGNvbnRyb2xsZWQgb3BlcmFuZHMKKy8vLyAtIFRoZSBjYWxsZWQgZnVuY3Rpb24uCiAvLy8KLS8vLyBUaGUgbGF5b3V0IG9mIGFuIG9wZXJhbmQgYnVuZGxlIHVzZXIgaXMKLS8vLwotLy8vICAgICAgICAgICstLS0tLS0tLS0tLXVpbnQzMl90IEVuZC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0vLy8gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLS8vLyAgICAgICAgICB8ICArLS0tLS0tLS11aW50MzJfdCBCZWdpbi0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgfAotLy8vICAgICAgICAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8Ci0vLy8gICAgICAgICAgXiAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgIHYKLS8vLyAgfC0tLS0tLXwtLS0tLS18LS0tLXwtLS0tfC0tLS18LS0tLXwtLS0tfC0tLS0tLS0tLXwtLS0tfC0tLS0tLS0tLXwtLS0tfC0tLS0tCi0vLy8gIHwgQk9JMCB8IEJPSTEgfCAuLiB8IERVIHwgVTAgfCBVMSB8IC4uIHwgQk9JMF9VMCB8IC4uIHwgQk9JMV9VMCB8IC4uIHwgVW4KLS8vLyAgfC0tLS0tLXwtLS0tLS18LS0tLXwtLS0tfC0tLS18LS0tLXwtLS0tfC0tLS0tLS0tLXwtLS0tfC0tLS0tLS0tLXwtLS0tfC0tLS0tCi0vLy8gICB2ICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgIF4KLS8vLyAgIHwgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfAotLy8vICAgfCAgKy0tLS0tLS0tdWludDMyX3QgQmVnaW4tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICB8Ci0vLy8gICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLS8vLyAgICstLS0tLS0tLS0tLXVpbnQzMl90IEVuZC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotLy8vCi0vLy8KLS8vLyBCT0kwLCBCT0kxIC4uLiBhcmUgZGVzY3JpcHRpb25zIG9mIG9wZXJhbmQgYnVuZGxlcyBpbiB0aGlzIFVzZXIncyB1c2UgbGlzdC4KLS8vLyBUaGVzZSBkZXNjcmlwdGlvbnMgYXJlIGluc3RhbGxlZCBhbmQgbWFuYWdlZCBieSB0aGlzIGNsYXNzLCBhbmQgdGhleSdyZSBhbGwKLS8vLyBpbnN0YW5jZXMgb2YgT3BlcmFuZEJ1bmRsZVVzZXI8VD46OkJ1bmRsZU9wSW5mby4KLS8vLwotLy8vIERVIGlzIGFuIGFkZGl0aW9uYWwgZGVzY3JpcHRvciBpbnN0YWxsZWQgYnkgVXNlcidzICdvcGVyYXRvciBuZXcnIHRvIGtlZXAKLS8vLyB0cmFjayBvZiB0aGUgJ0JPSTAgLi4uIEJPSU4nIGNvLWFsbG9jYXRpb24uICBPcGVyYW5kQnVuZGxlVXNlciBkb2VzIG5vdAotLy8vIGFjY2VzcyBvciBtb2RpZnkgRFUgaW4gYW55IHdheSwgaXQncyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgcHJpdmF0ZSB0bwotLy8vIFVzZXIuCi0vLy8KLS8vLyBUaGUgcmVndWxhciBVc2UmIHZlY3RvciBmb3IgdGhlIFVzZXIgc3RhcnRzIGF0IFUwLiAgVGhlIG9wZXJhbmQgYnVuZGxlIHVzZXMKLS8vLyBhcmUgcGFydCBvZiB0aGUgVXNlJiB2ZWN0b3IsIGp1c3QgbGlrZSBub3JtYWwgdXNlcy4gIEluIHRoZSBkaWFncmFtIGFib3ZlLAotLy8vIHRoZSBvcGVyYW5kIGJ1bmRsZSB1c2VzIHN0YXJ0IGF0IEJPSTBfVTAuICBFYWNoIGluc3RhbmNlIG9mIEJ1bmRsZU9wSW5mbyBoYXMKLS8vLyBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbnRpZ3VvdXMgc2V0IG9mIHVzZXMgY29uc3RpdHV0aW5nIGFuIG9wZXJhbmQgYnVuZGxlLAotLy8vIGFuZCB0aGUgdG90YWwgc2V0IG9mIG9wZXJhbmQgYnVuZGxlIHVzZXMgdGhlbXNlbHZlcyBmb3JtIGEgY29udGlndW91cyBzZXQgb2YKLS8vLyB1c2VzIChpLmUuIHRoZXJlIGFyZSBubyBnYXBzIGJldHdlZW4gdXNlcyBjb3JyZXNwb25kaW5nIHRvIGluZGl2aWR1YWwKLS8vLyBvcGVyYW5kIGJ1bmRsZXMpLgotLy8vCi0vLy8gVGhpcyBjbGFzcyBkb2VzIG5vdCBrbm93IHRoZSBsb2NhdGlvbiBvZiB0aGUgc2V0IG9mIG9wZXJhbmQgYnVuZGxlIHVzZXMKLS8vLyB3aXRoaW4gdGhlIHVzZSBsaXN0IC0tIHRoYXQgaXMgZGVjaWRlZCBieSB0aGUgVXNlciB1c2luZyB0aGlzIGNsYXNzIHZpYSB0aGUKLS8vLyBCZWdpbklkeCBhcmd1bWVudCBpbiBwb3B1bGF0ZUJ1bmRsZU9wZXJhbmRJbmZvcy4KLS8vLwotLy8vIEN1cnJlbnRseSBvcGVyYW5kIGJ1bmRsZSB1c2VycyB3aXRoIGh1bmctb2ZmIG9wZXJhbmRzIGFyZSBub3Qgc3VwcG9ydGVkLgotdGVtcGxhdGUgPHR5cGVuYW1lIEluc3RyVHksIHR5cGVuYW1lIE9wSXRlcmF0b3JUeT4gY2xhc3MgT3BlcmFuZEJ1bmRsZVVzZXIgeworLy8vIFRoaXMgYWxsb3dzIHRoaXMgYmFzZSBjbGFzcyB0byBlYXNpbHkgYWNjZXNzIHRoZSBjYWxsZWQgZnVuY3Rpb24gYW5kIHRoZQorLy8vIHN0YXJ0IG9mIHRoZSBhcmd1bWVudHMgd2l0aG91dCBrbm93aW5nIGhvdyBtYW55IG90aGVyIG9wZXJhbmRzIGEgcGFydGljdWxhcgorLy8vIHN1YmNsYXNzIHJlcXVpcmVzLiBOb3RlIHRoYXQgYWNjZXNzaW5nIHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50IGxpc3QgaXNuJ3QKKy8vLyBhcyBjaGVhcCBhcyBtb3N0IG90aGVyIG9wZXJhdGlvbnMgb24gdGhlIGJhc2UgY2xhc3MuCitjbGFzcyBDYWxsQmFzZSA6IHB1YmxpYyBJbnN0cnVjdGlvbiB7Citwcm90ZWN0ZWQ6CisgIC8vLyBUaGUgbGFzdCBvcGVyYW5kIGlzIHRoZSBjYWxsZWQgb3BlcmFuZC4KKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQgQ2FsbGVkT3BlcmFuZE9wRW5kSWR4ID0gLTE7CisKKyAgQXR0cmlidXRlTGlzdCBBdHRyczsgLy8vPCBwYXJhbWV0ZXIgYXR0cmlidXRlcyBmb3IgY2FsbGFibGUKKyAgRnVuY3Rpb25UeXBlICpGVHk7CisKKyAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3NUeT4KKyAgQ2FsbEJhc2UoQXR0cmlidXRlTGlzdCBjb25zdCAmQSwgRnVuY3Rpb25UeXBlICpGVCwgQXJnc1R5ICYmLi4uIEFyZ3MpCisgICAgICA6IEluc3RydWN0aW9uKHN0ZDo6Zm9yd2FyZDxBcmdzVHk+KEFyZ3MpLi4uKSwgQXR0cnMoQSksIEZUeShGVCkge30KKworICB1c2luZyBJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb247CisKKyAgYm9vbCBoYXNEZXNjcmlwdG9yKCkgY29uc3QgeyByZXR1cm4gVmFsdWU6Okhhc0Rlc2NyaXB0b3I7IH0KKworICB1bnNpZ25lZCBnZXROdW1TdWJjbGFzc0V4dHJhT3BlcmFuZHMoKSBjb25zdCB7CisgICAgc3dpdGNoIChnZXRPcGNvZGUoKSkgeworICAgIGNhc2UgSW5zdHJ1Y3Rpb246OkNhbGw6CisgICAgICByZXR1cm4gMDsKKyAgICBjYXNlIEluc3RydWN0aW9uOjpJbnZva2U6CisgICAgICByZXR1cm4gMjsKKyAgICBjYXNlIEluc3RydWN0aW9uOjpDYWxsQnI6CisgICAgICByZXR1cm4gZ2V0TnVtU3ViY2xhc3NFeHRyYU9wZXJhbmRzRHluYW1pYygpOworICAgIH0KKyAgICBsbHZtX3VucmVhY2hhYmxlKCJJbnZhbGlkIG9wY29kZSEiKTsKKyAgfQorCisgIC8vLyBHZXQgdGhlIG51bWJlciBvZiBleHRyYSBvcGVyYW5kcyBmb3IgaW5zdHJ1Y3Rpb25zIHRoYXQgZG9uJ3QgaGF2ZSBhIGZpeGVkCisgIC8vLyBudW1iZXIgb2YgZXh0cmEgb3BlcmFuZHMuCisgIHVuc2lnbmVkIGdldE51bVN1YmNsYXNzRXh0cmFPcGVyYW5kc0R5bmFtaWMoKSBjb25zdDsKKwogcHVibGljOgorICB1c2luZyBJbnN0cnVjdGlvbjo6Z2V0Q29udGV4dDsKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEluc3RydWN0aW9uICpJKSB7CisgICAgcmV0dXJuIEktPmdldE9wY29kZSgpID09IEluc3RydWN0aW9uOjpDYWxsIHx8CisgICAgICAgICAgIEktPmdldE9wY29kZSgpID09IEluc3RydWN0aW9uOjpJbnZva2UgfHwKKyAgICAgICAgICAgSS0+Z2V0T3Bjb2RlKCkgPT0gSW5zdHJ1Y3Rpb246OkNhbGxCcjsKKyAgfQorICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFZhbHVlICpWKSB7CisgICAgcmV0dXJuIGlzYTxJbnN0cnVjdGlvbj4oVikgJiYgY2xhc3NvZihjYXN0PEluc3RydWN0aW9uPihWKSk7CisgIH0KKworICBGdW5jdGlvblR5cGUgKmdldEZ1bmN0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIEZUeTsgfQorCisgIHZvaWQgbXV0YXRlRnVuY3Rpb25UeXBlKEZ1bmN0aW9uVHlwZSAqRlR5KSB7CisgICAgVmFsdWU6Om11dGF0ZVR5cGUoRlR5LT5nZXRSZXR1cm5UeXBlKCkpOworICAgIHRoaXMtPkZUeSA9IEZUeTsKKyAgfQorCisgIERFQ0xBUkVfVFJBTlNQQVJFTlRfT1BFUkFORF9BQ0NFU1NPUlMoVmFsdWUpOworCisgIC8vLyBkYXRhX29wZXJhbmRzX2JlZ2luL2RhdGFfb3BlcmFuZHNfZW5kIC0gUmV0dXJuIGl0ZXJhdG9ycyBpdGVyYXRpbmcgb3ZlcgorICAvLy8gdGhlIGNhbGwgLyBpbnZva2UgYXJndW1lbnQgbGlzdCBhbmQgYnVuZGxlIG9wZXJhbmRzLiAgRm9yIGludm9rZXMsIHRoaXMgaXMKKyAgLy8vIHRoZSBzZXQgb2YgaW5zdHJ1Y3Rpb24gb3BlcmFuZHMgZXhjZXB0IHRoZSBpbnZva2UgdGFyZ2V0IGFuZCB0aGUgdHdvCisgIC8vLyBzdWNjZXNzb3IgYmxvY2tzOyBhbmQgZm9yIGNhbGxzIHRoaXMgaXMgdGhlIHNldCBvZiBpbnN0cnVjdGlvbiBvcGVyYW5kcworICAvLy8gZXhjZXB0IHRoZSBjYWxsIHRhcmdldC4KKyAgVXNlcjo6b3BfaXRlcmF0b3IgZGF0YV9vcGVyYW5kc19iZWdpbigpIHsgcmV0dXJuIG9wX2JlZ2luKCk7IH0KKyAgVXNlcjo6Y29uc3Rfb3BfaXRlcmF0b3IgZGF0YV9vcGVyYW5kc19iZWdpbigpIGNvbnN0IHsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxDYWxsQmFzZSAqPih0aGlzKS0+ZGF0YV9vcGVyYW5kc19iZWdpbigpOworICB9CisgIFVzZXI6Om9wX2l0ZXJhdG9yIGRhdGFfb3BlcmFuZHNfZW5kKCkgeworICAgIC8vIFdhbGsgZnJvbSB0aGUgZW5kIG9mIHRoZSBvcGVyYW5kcyBvdmVyIHRoZSBjYWxsZWQgb3BlcmFuZCBhbmQgYW55CisgICAgLy8gc3ViY2xhc3Mgb3BlcmFuZHMuCisgICAgcmV0dXJuIG9wX2VuZCgpIC0gZ2V0TnVtU3ViY2xhc3NFeHRyYU9wZXJhbmRzKCkgLSAxOworICB9CisgIFVzZXI6OmNvbnN0X29wX2l0ZXJhdG9yIGRhdGFfb3BlcmFuZHNfZW5kKCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9jYXN0PENhbGxCYXNlICo+KHRoaXMpLT5kYXRhX29wZXJhbmRzX2VuZCgpOworICB9CisgIGl0ZXJhdG9yX3JhbmdlPFVzZXI6Om9wX2l0ZXJhdG9yPiBkYXRhX29wcygpIHsKKyAgICByZXR1cm4gbWFrZV9yYW5nZShkYXRhX29wZXJhbmRzX2JlZ2luKCksIGRhdGFfb3BlcmFuZHNfZW5kKCkpOworICB9CisgIGl0ZXJhdG9yX3JhbmdlPFVzZXI6OmNvbnN0X29wX2l0ZXJhdG9yPiBkYXRhX29wcygpIGNvbnN0IHsKKyAgICByZXR1cm4gbWFrZV9yYW5nZShkYXRhX29wZXJhbmRzX2JlZ2luKCksIGRhdGFfb3BlcmFuZHNfZW5kKCkpOworICB9CisgIGJvb2wgZGF0YV9vcGVyYW5kc19lbXB0eSgpIGNvbnN0IHsKKyAgICByZXR1cm4gZGF0YV9vcGVyYW5kc19lbmQoKSA9PSBkYXRhX29wZXJhbmRzX2JlZ2luKCk7CisgIH0KKyAgdW5zaWduZWQgZGF0YV9vcGVyYW5kc19zaXplKCkgY29uc3QgeworICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKGRhdGFfb3BlcmFuZHNfYmVnaW4oKSwgZGF0YV9vcGVyYW5kc19lbmQoKSk7CisgIH0KKworICBib29sIGlzRGF0YU9wZXJhbmQoY29uc3QgVXNlICpVKSBjb25zdCB7CisgICAgYXNzZXJ0KHRoaXMgPT0gVS0+Z2V0VXNlcigpICYmCisgICAgICAgICAgICJPbmx5IHZhbGlkIHRvIHF1ZXJ5IHdpdGggYSB1c2Ugb2YgdGhpcyBpbnN0cnVjdGlvbiEiKTsKKyAgICByZXR1cm4gZGF0YV9vcGVyYW5kc19iZWdpbigpIDw9IFUgJiYgVSA8IGRhdGFfb3BlcmFuZHNfZW5kKCk7CisgIH0KKyAgYm9vbCBpc0RhdGFPcGVyYW5kKFZhbHVlOjpjb25zdF91c2VyX2l0ZXJhdG9yIFVJKSBjb25zdCB7CisgICAgcmV0dXJuIGlzRGF0YU9wZXJhbmQoJlVJLmdldFVzZSgpKTsKKyAgfQorCisgIC8vLyBHaXZlbiBhIHZhbHVlIHVzZSBpdGVyYXRvciwgcmV0dXJuIHRoZSBkYXRhIG9wZXJhbmQgY29ycmVzcG9uZGluZyB0byBpdC4KKyAgLy8vIEl0ZXJhdG9yIG11c3QgYWN0dWFsbHkgY29ycmVzcG9uZCB0byBhIGRhdGEgb3BlcmFuZC4KKyAgdW5zaWduZWQgZ2V0RGF0YU9wZXJhbmRObyhWYWx1ZTo6Y29uc3RfdXNlcl9pdGVyYXRvciBVSSkgY29uc3QgeworICAgIHJldHVybiBnZXREYXRhT3BlcmFuZE5vKCZVSS5nZXRVc2UoKSk7CisgIH0KKworICAvLy8gR2l2ZW4gYSB1c2UgZm9yIGEgZGF0YSBvcGVyYW5kLCBnZXQgdGhlIGRhdGEgb3BlcmFuZCBudW1iZXIgdGhhdAorICAvLy8gY29ycmVzcG9uZHMgdG8gaXQuCisgIHVuc2lnbmVkIGdldERhdGFPcGVyYW5kTm8oY29uc3QgVXNlICpVKSBjb25zdCB7CisgICAgYXNzZXJ0KGlzRGF0YU9wZXJhbmQoVSkgJiYgIkRhdGEgb3BlcmFuZCAjIG91dCBvZiByYW5nZSEiKTsKKyAgICByZXR1cm4gVSAtIGRhdGFfb3BlcmFuZHNfYmVnaW4oKTsKKyAgfQorCisgIC8vLyBSZXR1cm4gdGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFyZ3VtZW50IGxpc3QuCisgIFVzZXI6Om9wX2l0ZXJhdG9yIGFyZ19iZWdpbigpIHsgcmV0dXJuIG9wX2JlZ2luKCk7IH0KKyAgVXNlcjo6Y29uc3Rfb3BfaXRlcmF0b3IgYXJnX2JlZ2luKCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9jYXN0PENhbGxCYXNlICo+KHRoaXMpLT5hcmdfYmVnaW4oKTsKKyAgfQorCisgIC8vLyBSZXR1cm4gdGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50IGxpc3QuCisgIFVzZXI6Om9wX2l0ZXJhdG9yIGFyZ19lbmQoKSB7CisgICAgLy8gRnJvbSB0aGUgZW5kIG9mIHRoZSBkYXRhIG9wZXJhbmRzLCB3YWxrIGJhY2t3YXJkcyBwYXN0IHRoZSBidW5kbGUKKyAgICAvLyBvcGVyYW5kcy4KKyAgICByZXR1cm4gZGF0YV9vcGVyYW5kc19lbmQoKSAtIGdldE51bVRvdGFsQnVuZGxlT3BlcmFuZHMoKTsKKyAgfQorICBVc2VyOjpjb25zdF9vcF9pdGVyYXRvciBhcmdfZW5kKCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9jYXN0PENhbGxCYXNlICo+KHRoaXMpLT5hcmdfZW5kKCk7CisgIH0KKworICAvLy8gSXRlcmF0aW9uIGFkYXB0ZXIgZm9yIHJhbmdlLWZvciBsb29wcy4KKyAgaXRlcmF0b3JfcmFuZ2U8VXNlcjo6b3BfaXRlcmF0b3I+IGFyZ3MoKSB7CisgICAgcmV0dXJuIG1ha2VfcmFuZ2UoYXJnX2JlZ2luKCksIGFyZ19lbmQoKSk7CisgIH0KKyAgaXRlcmF0b3JfcmFuZ2U8VXNlcjo6Y29uc3Rfb3BfaXRlcmF0b3I+IGFyZ3MoKSBjb25zdCB7CisgICAgcmV0dXJuIG1ha2VfcmFuZ2UoYXJnX2JlZ2luKCksIGFyZ19lbmQoKSk7CisgIH0KKyAgYm9vbCBhcmdfZW1wdHkoKSBjb25zdCB7IHJldHVybiBhcmdfZW5kKCkgPT0gYXJnX2JlZ2luKCk7IH0KKyAgdW5zaWduZWQgYXJnX3NpemUoKSBjb25zdCB7IHJldHVybiBhcmdfZW5kKCkgLSBhcmdfYmVnaW4oKTsgfQorCisgIC8vIExlZ2FjeSBBUEkgbmFtZXMgdGhhdCBkdXBsaWNhdGUgdGhlIGFib3ZlIGFuZCB3aWxsIGJlIHJlbW92ZWQgb25jZSB1c2VycworICAvLyBhcmUgbWlncmF0ZWQuCisgIGl0ZXJhdG9yX3JhbmdlPFVzZXI6Om9wX2l0ZXJhdG9yPiBhcmdfb3BlcmFuZHMoKSB7CisgICAgcmV0dXJuIG1ha2VfcmFuZ2UoYXJnX2JlZ2luKCksIGFyZ19lbmQoKSk7CisgIH0KKyAgaXRlcmF0b3JfcmFuZ2U8VXNlcjo6Y29uc3Rfb3BfaXRlcmF0b3I+IGFyZ19vcGVyYW5kcygpIGNvbnN0IHsKKyAgICByZXR1cm4gbWFrZV9yYW5nZShhcmdfYmVnaW4oKSwgYXJnX2VuZCgpKTsKKyAgfQorICB1bnNpZ25lZCBnZXROdW1BcmdPcGVyYW5kcygpIGNvbnN0IHsgcmV0dXJuIGFyZ19zaXplKCk7IH0KKworICBWYWx1ZSAqZ2V0QXJnT3BlcmFuZCh1bnNpZ25lZCBpKSBjb25zdCB7CisgICAgYXNzZXJ0KGkgPCBnZXROdW1BcmdPcGVyYW5kcygpICYmICJPdXQgb2YgYm91bmRzISIpOworICAgIHJldHVybiBnZXRPcGVyYW5kKGkpOworICB9CisKKyAgdm9pZCBzZXRBcmdPcGVyYW5kKHVuc2lnbmVkIGksIFZhbHVlICp2KSB7CisgICAgYXNzZXJ0KGkgPCBnZXROdW1BcmdPcGVyYW5kcygpICYmICJPdXQgb2YgYm91bmRzISIpOworICAgIHNldE9wZXJhbmQoaSwgdik7CisgIH0KKworICAvLy8gV3JhcHBlcnMgZm9yIGdldHRpbmcgdGhlIFxjIFVzZSBvZiBhIGNhbGwgYXJndW1lbnQuCisgIGNvbnN0IFVzZSAmZ2V0QXJnT3BlcmFuZFVzZSh1bnNpZ25lZCBpKSBjb25zdCB7CisgICAgYXNzZXJ0KGkgPCBnZXROdW1BcmdPcGVyYW5kcygpICYmICJPdXQgb2YgYm91bmRzISIpOworICAgIHJldHVybiBVc2VyOjpnZXRPcGVyYW5kVXNlKGkpOworICB9CisgIFVzZSAmZ2V0QXJnT3BlcmFuZFVzZSh1bnNpZ25lZCBpKSB7CisgICAgYXNzZXJ0KGkgPCBnZXROdW1BcmdPcGVyYW5kcygpICYmICJPdXQgb2YgYm91bmRzISIpOworICAgIHJldHVybiBVc2VyOjpnZXRPcGVyYW5kVXNlKGkpOworICB9CisKKyAgYm9vbCBpc0FyZ09wZXJhbmQoY29uc3QgVXNlICpVKSBjb25zdCB7CisgICAgYXNzZXJ0KHRoaXMgPT0gVS0+Z2V0VXNlcigpICYmCisgICAgICAgICAgICJPbmx5IHZhbGlkIHRvIHF1ZXJ5IHdpdGggYSB1c2Ugb2YgdGhpcyBpbnN0cnVjdGlvbiEiKTsKKyAgICByZXR1cm4gYXJnX2JlZ2luKCkgPD0gVSAmJiBVIDwgYXJnX2VuZCgpOworICB9CisgIGJvb2wgaXNBcmdPcGVyYW5kKFZhbHVlOjpjb25zdF91c2VyX2l0ZXJhdG9yIFVJKSBjb25zdCB7CisgICAgcmV0dXJuIGlzQXJnT3BlcmFuZCgmVUkuZ2V0VXNlKCkpOworICB9CisKKyAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIENhbGxTaXRlIHBhc3NlcyB0aGUgZ2l2ZW4gVmFsdWUqIGFzIGFuIGFyZ3VtZW50IHRvCisgIC8vLyB0aGUgY2FsbGVkIGZ1bmN0aW9uLgorICBib29sIGhhc0FyZ3VtZW50KGNvbnN0IFZhbHVlICpWKSBjb25zdCB7CisgICAgcmV0dXJuIGxsdm06OmFueV9vZihhcmdzKCksIFtWXShjb25zdCBWYWx1ZSAqQXJnKSB7IHJldHVybiBBcmcgPT0gVjsgfSk7CisgIH0KKworICBWYWx1ZSAqZ2V0Q2FsbGVkT3BlcmFuZCgpIGNvbnN0IHsgcmV0dXJuIE9wPENhbGxlZE9wZXJhbmRPcEVuZElkeD4oKTsgfQorCisgIC8vIERFUFJFQ0FURUQ6IFRoaXMgcm91dGluZSB3aWxsIGJlIHJlbW92ZWQgaW4gZmF2b3Igb2YgYGdldENhbGxlZE9wZXJhbmRgIGluCisgIC8vIHRoZSBuZWFyIGZ1dHVyZS4KKyAgVmFsdWUgKmdldENhbGxlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gZ2V0Q2FsbGVkT3BlcmFuZCgpOyB9CisKKyAgY29uc3QgVXNlICZnZXRDYWxsZWRPcGVyYW5kVXNlKCkgY29uc3QgeyByZXR1cm4gT3A8Q2FsbGVkT3BlcmFuZE9wRW5kSWR4PigpOyB9CisgIFVzZSAmZ2V0Q2FsbGVkT3BlcmFuZFVzZSgpIHsgcmV0dXJuIE9wPENhbGxlZE9wZXJhbmRPcEVuZElkeD4oKTsgfQorCisgIC8vLyBSZXR1cm5zIHRoZSBmdW5jdGlvbiBjYWxsZWQsIG9yIG51bGwgaWYgdGhpcyBpcyBhbgorICAvLy8gaW5kaXJlY3QgZnVuY3Rpb24gaW52b2NhdGlvbi4KKyAgRnVuY3Rpb24gKmdldENhbGxlZEZ1bmN0aW9uKCkgY29uc3QgeworICAgIHJldHVybiBkeW5fY2FzdF9vcl9udWxsPEZ1bmN0aW9uPihnZXRDYWxsZWRPcGVyYW5kKCkpOworICB9CisKKyAgLy8vIFJldHVybiB0cnVlIGlmIHRoZSBjYWxsc2l0ZSBpcyBhbiBpbmRpcmVjdCBjYWxsLgorICBib29sIGlzSW5kaXJlY3RDYWxsKCkgY29uc3Q7CisKKyAgLy8vIERldGVybWluZSB3aGV0aGVyIHRoZSBwYXNzZWQgaXRlcmF0b3IgcG9pbnRzIHRvIHRoZSBjYWxsZWUgb3BlcmFuZCdzIFVzZS4KKyAgYm9vbCBpc0NhbGxlZShWYWx1ZTo6Y29uc3RfdXNlcl9pdGVyYXRvciBVSSkgY29uc3QgeworICAgIHJldHVybiBpc0NhbGxlZSgmVUkuZ2V0VXNlKCkpOworICB9CisKKyAgLy8vIERldGVybWluZSB3aGV0aGVyIHRoaXMgVXNlIGlzIHRoZSBjYWxsZWUgb3BlcmFuZCdzIFVzZS4KKyAgYm9vbCBpc0NhbGxlZShjb25zdCBVc2UgKlUpIGNvbnN0IHsgcmV0dXJuICZnZXRDYWxsZWRPcGVyYW5kVXNlKCkgPT0gVTsgfQorCisgIC8vLyBIZWxwZXIgdG8gZ2V0IHRoZSBjYWxsZXIgKHRoZSBwYXJlbnQgZnVuY3Rpb24pLgorICBGdW5jdGlvbiAqZ2V0Q2FsbGVyKCk7CisgIGNvbnN0IEZ1bmN0aW9uICpnZXRDYWxsZXIoKSBjb25zdCB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q2FsbEJhc2UgKj4odGhpcyktPmdldENhbGxlcigpOworICB9CisKKyAgLy8vIFRlc3RzIGlmIHRoaXMgY2FsbCBzaXRlIG11c3QgYmUgdGFpbCBjYWxsIG9wdGltaXplZC4gT25seSBhIENhbGxJbnN0IGNhbgorICAvLy8gYmUgdGFpbCBjYWxsIG9wdGltaXplZC4KKyAgYm9vbCBpc011c3RUYWlsQ2FsbCgpIGNvbnN0OworCisgIC8vLyBUZXN0cyBpZiB0aGlzIGNhbGwgc2l0ZSBpcyBtYXJrZWQgYXMgYSB0YWlsIGNhbGwuCisgIGJvb2wgaXNUYWlsQ2FsbCgpIGNvbnN0OworCisgIC8vLyBSZXR1cm5zIHRoZSBpbnRyaW5zaWMgSUQgb2YgdGhlIGludHJpbnNpYyBjYWxsZWQgb3IKKyAgLy8vIEludHJpbnNpYzo6bm90X2ludHJpbnNpYyBpZiB0aGUgY2FsbGVkIGZ1bmN0aW9uIGlzIG5vdCBhbiBpbnRyaW5zaWMsIG9yIGlmCisgIC8vLyB0aGlzIGlzIGFuIGluZGlyZWN0IGNhbGwuCisgIEludHJpbnNpYzo6SUQgZ2V0SW50cmluc2ljSUQoKSBjb25zdDsKKworICB2b2lkIHNldENhbGxlZE9wZXJhbmQoVmFsdWUgKlYpIHsgT3A8Q2FsbGVkT3BlcmFuZE9wRW5kSWR4PigpID0gVjsgfQorCisgIC8vLyBTZXRzIHRoZSBmdW5jdGlvbiBjYWxsZWQsIGluY2x1ZGluZyB1cGRhdGluZyB0aGUgZnVuY3Rpb24gdHlwZS4KKyAgdm9pZCBzZXRDYWxsZWRGdW5jdGlvbihGdW5jdGlvbiAqRm4pIHsKKyAgICBzZXRDYWxsZWRGdW5jdGlvbihGbi0+Z2V0RnVuY3Rpb25UeXBlKCksIEZuKTsKKyAgfQorCisgIC8vLyBTZXRzIHRoZSBmdW5jdGlvbiBjYWxsZWQsIGluY2x1ZGluZyB1cGRhdGluZyB0aGUgZnVuY3Rpb24gdHlwZS4KKyAgdm9pZCBzZXRDYWxsZWRGdW5jdGlvbihGdW5jdGlvbkNhbGxlZSBGbikgeworICAgIHNldENhbGxlZEZ1bmN0aW9uKEZuLmdldEZ1bmN0aW9uVHlwZSgpLCBGbi5nZXRDYWxsZWUoKSk7CisgIH0KKworICAvLy8gU2V0cyB0aGUgZnVuY3Rpb24gY2FsbGVkLCBpbmNsdWRpbmcgdXBkYXRpbmcgdG8gdGhlIHNwZWNpZmllZCBmdW5jdGlvbgorICAvLy8gdHlwZS4KKyAgdm9pZCBzZXRDYWxsZWRGdW5jdGlvbihGdW5jdGlvblR5cGUgKkZUeSwgVmFsdWUgKkZuKSB7CisgICAgdGhpcy0+RlR5ID0gRlR5OworICAgIGFzc2VydChGVHkgPT0gY2FzdDxGdW5jdGlvblR5cGU+KAorICAgICAgICAgICAgICAgICAgICAgIGNhc3Q8UG9pbnRlclR5cGU+KEZuLT5nZXRUeXBlKCkpLT5nZXRFbGVtZW50VHlwZSgpKSk7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBkb2Vzbid0IG11dGF0ZSB0aGUgcmV0dXJuIHR5cGUsIG9ubHkgdGhlIGZ1bmN0aW9uCisgICAgLy8gdHlwZS4gU2VlbXMgYnJva2VuLCBidXQgSSdtIGp1c3QgZ29ubmEgc3RpY2sgYW4gYXNzZXJ0IGluIGZvciBub3cuCisgICAgYXNzZXJ0KGdldFR5cGUoKSA9PSBGVHktPmdldFJldHVyblR5cGUoKSk7CisgICAgc2V0Q2FsbGVkT3BlcmFuZChGbik7CisgIH0KKworICBDYWxsaW5nQ29udjo6SUQgZ2V0Q2FsbGluZ0NvbnYoKSBjb25zdCB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENhbGxpbmdDb252OjpJRD4oZ2V0U3ViY2xhc3NEYXRhRnJvbUluc3RydWN0aW9uKCkgPj4gMik7CisgIH0KKworICB2b2lkIHNldENhbGxpbmdDb252KENhbGxpbmdDb252OjpJRCBDQykgeworICAgIGF1dG8gSUQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ0MpOworICAgIGFzc2VydCghKElEICYgfkNhbGxpbmdDb252OjpNYXhJRCkgJiYgIlVuc3VwcG9ydGVkIGNhbGxpbmcgY29udmVudGlvbiIpOworICAgIHNldEluc3RydWN0aW9uU3ViY2xhc3NEYXRhKChnZXRTdWJjbGFzc0RhdGFGcm9tSW5zdHJ1Y3Rpb24oKSAmIDMpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUQgPDwgMikpOworICB9CisKKyAgLy8vIENoZWNrIGlmIHRoaXMgY2FsbCBpcyBhbiBpbmxpbmUgYXNtIHN0YXRlbWVudC4KKyAgYm9vbCBpc0lubGluZUFzbSgpIGNvbnN0IHsgcmV0dXJuIGlzYTxJbmxpbmVBc20+KGdldENhbGxlZE9wZXJhbmQoKSk7IH0KKworICAvLy8gXG5hbWUgQXR0cmlidXRlIEFQSQorICAvLy8KKyAgLy8vIFRoZXNlIG1ldGhvZHMgYWNjZXNzIGFuZCBtb2RpZnkgYXR0cmlidXRlcyBvbiB0aGlzIGNhbGwgKGluY2x1ZGluZworICAvLy8gbG9va2luZyB0aHJvdWdoIHRvIHRoZSBhdHRyaWJ1dGVzIG9uIHRoZSBjYWxsZWQgZnVuY3Rpb24gd2hlbiBuZWNlc3NhcnkpLgorICAvLy9AeworCisgIC8vLyBSZXR1cm4gdGhlIHBhcmFtZXRlciBhdHRyaWJ1dGVzIGZvciB0aGlzIGNhbGwuCisgIC8vLworICBBdHRyaWJ1dGVMaXN0IGdldEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBBdHRyczsgfQorCisgIC8vLyBTZXQgdGhlIHBhcmFtZXRlciBhdHRyaWJ1dGVzIGZvciB0aGlzIGNhbGwuCisgIC8vLworICB2b2lkIHNldEF0dHJpYnV0ZXMoQXR0cmlidXRlTGlzdCBBKSB7IEF0dHJzID0gQTsgfQorCisgIC8vLyBEZXRlcm1pbmUgd2hldGhlciB0aGlzIGNhbGwgaGFzIHRoZSBnaXZlbiBhdHRyaWJ1dGUuCisgIGJvb2wgaGFzRm5BdHRyKEF0dHJpYnV0ZTo6QXR0cktpbmQgS2luZCkgY29uc3QgeworICAgIGFzc2VydChLaW5kICE9IEF0dHJpYnV0ZTo6Tm9CdWlsdGluICYmCisgICAgICAgICAgICJVc2UgQ2FsbEJhc2U6OmlzTm9CdWlsdGluKCkgdG8gY2hlY2sgZm9yIEF0dHJpYnV0ZTo6Tm9CdWlsdGluIik7CisgICAgcmV0dXJuIGhhc0ZuQXR0ckltcGwoS2luZCk7CisgIH0KKworICAvLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBjYWxsIGhhcyB0aGUgZ2l2ZW4gYXR0cmlidXRlLgorICBib29sIGhhc0ZuQXR0cihTdHJpbmdSZWYgS2luZCkgY29uc3QgeyByZXR1cm4gaGFzRm5BdHRySW1wbChLaW5kKTsgfQorCisgIC8vLyBhZGRzIHRoZSBhdHRyaWJ1dGUgdG8gdGhlIGxpc3Qgb2YgYXR0cmlidXRlcy4KKyAgdm9pZCBhZGRBdHRyaWJ1dGUodW5zaWduZWQgaSwgQXR0cmlidXRlOjpBdHRyS2luZCBLaW5kKSB7CisgICAgQXR0cmlidXRlTGlzdCBQQUwgPSBnZXRBdHRyaWJ1dGVzKCk7CisgICAgUEFMID0gUEFMLmFkZEF0dHJpYnV0ZShnZXRDb250ZXh0KCksIGksIEtpbmQpOworICAgIHNldEF0dHJpYnV0ZXMoUEFMKTsKKyAgfQorCisgIC8vLyBhZGRzIHRoZSBhdHRyaWJ1dGUgdG8gdGhlIGxpc3Qgb2YgYXR0cmlidXRlcy4KKyAgdm9pZCBhZGRBdHRyaWJ1dGUodW5zaWduZWQgaSwgQXR0cmlidXRlIEF0dHIpIHsKKyAgICBBdHRyaWJ1dGVMaXN0IFBBTCA9IGdldEF0dHJpYnV0ZXMoKTsKKyAgICBQQUwgPSBQQUwuYWRkQXR0cmlidXRlKGdldENvbnRleHQoKSwgaSwgQXR0cik7CisgICAgc2V0QXR0cmlidXRlcyhQQUwpOworICB9CisKKyAgLy8vIEFkZHMgdGhlIGF0dHJpYnV0ZSB0byB0aGUgaW5kaWNhdGVkIGFyZ3VtZW50CisgIHZvaWQgYWRkUGFyYW1BdHRyKHVuc2lnbmVkIEFyZ05vLCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEtpbmQpIHsKKyAgICBhc3NlcnQoQXJnTm8gPCBnZXROdW1BcmdPcGVyYW5kcygpICYmICJPdXQgb2YgYm91bmRzIik7CisgICAgQXR0cmlidXRlTGlzdCBQQUwgPSBnZXRBdHRyaWJ1dGVzKCk7CisgICAgUEFMID0gUEFMLmFkZFBhcmFtQXR0cmlidXRlKGdldENvbnRleHQoKSwgQXJnTm8sIEtpbmQpOworICAgIHNldEF0dHJpYnV0ZXMoUEFMKTsKKyAgfQorCisgIC8vLyBBZGRzIHRoZSBhdHRyaWJ1dGUgdG8gdGhlIGluZGljYXRlZCBhcmd1bWVudAorICB2b2lkIGFkZFBhcmFtQXR0cih1bnNpZ25lZCBBcmdObywgQXR0cmlidXRlIEF0dHIpIHsKKyAgICBhc3NlcnQoQXJnTm8gPCBnZXROdW1BcmdPcGVyYW5kcygpICYmICJPdXQgb2YgYm91bmRzIik7CisgICAgQXR0cmlidXRlTGlzdCBQQUwgPSBnZXRBdHRyaWJ1dGVzKCk7CisgICAgUEFMID0gUEFMLmFkZFBhcmFtQXR0cmlidXRlKGdldENvbnRleHQoKSwgQXJnTm8sIEF0dHIpOworICAgIHNldEF0dHJpYnV0ZXMoUEFMKTsKKyAgfQorCisgIC8vLyByZW1vdmVzIHRoZSBhdHRyaWJ1dGUgZnJvbSB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzLgorICB2b2lkIHJlbW92ZUF0dHJpYnV0ZSh1bnNpZ25lZCBpLCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEtpbmQpIHsKKyAgICBBdHRyaWJ1dGVMaXN0IFBBTCA9IGdldEF0dHJpYnV0ZXMoKTsKKyAgICBQQUwgPSBQQUwucmVtb3ZlQXR0cmlidXRlKGdldENvbnRleHQoKSwgaSwgS2luZCk7CisgICAgc2V0QXR0cmlidXRlcyhQQUwpOworICB9CisKKyAgLy8vIHJlbW92ZXMgdGhlIGF0dHJpYnV0ZSBmcm9tIHRoZSBsaXN0IG9mIGF0dHJpYnV0ZXMuCisgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKHVuc2lnbmVkIGksIFN0cmluZ1JlZiBLaW5kKSB7CisgICAgQXR0cmlidXRlTGlzdCBQQUwgPSBnZXRBdHRyaWJ1dGVzKCk7CisgICAgUEFMID0gUEFMLnJlbW92ZUF0dHJpYnV0ZShnZXRDb250ZXh0KCksIGksIEtpbmQpOworICAgIHNldEF0dHJpYnV0ZXMoUEFMKTsKKyAgfQorCisgIC8vLyBSZW1vdmVzIHRoZSBhdHRyaWJ1dGUgZnJvbSB0aGUgZ2l2ZW4gYXJndW1lbnQKKyAgdm9pZCByZW1vdmVQYXJhbUF0dHIodW5zaWduZWQgQXJnTm8sIEF0dHJpYnV0ZTo6QXR0cktpbmQgS2luZCkgeworICAgIGFzc2VydChBcmdObyA8IGdldE51bUFyZ09wZXJhbmRzKCkgJiYgIk91dCBvZiBib3VuZHMiKTsKKyAgICBBdHRyaWJ1dGVMaXN0IFBBTCA9IGdldEF0dHJpYnV0ZXMoKTsKKyAgICBQQUwgPSBQQUwucmVtb3ZlUGFyYW1BdHRyaWJ1dGUoZ2V0Q29udGV4dCgpLCBBcmdObywgS2luZCk7CisgICAgc2V0QXR0cmlidXRlcyhQQUwpOworICB9CisKKyAgLy8vIFJlbW92ZXMgdGhlIGF0dHJpYnV0ZSBmcm9tIHRoZSBnaXZlbiBhcmd1bWVudAorICB2b2lkIHJlbW92ZVBhcmFtQXR0cih1bnNpZ25lZCBBcmdObywgU3RyaW5nUmVmIEtpbmQpIHsKKyAgICBhc3NlcnQoQXJnTm8gPCBnZXROdW1BcmdPcGVyYW5kcygpICYmICJPdXQgb2YgYm91bmRzIik7CisgICAgQXR0cmlidXRlTGlzdCBQQUwgPSBnZXRBdHRyaWJ1dGVzKCk7CisgICAgUEFMID0gUEFMLnJlbW92ZVBhcmFtQXR0cmlidXRlKGdldENvbnRleHQoKSwgQXJnTm8sIEtpbmQpOworICAgIHNldEF0dHJpYnV0ZXMoUEFMKTsKKyAgfQorCisgIC8vLyBhZGRzIHRoZSBkZXJlZmVyZW5jZWFibGUgYXR0cmlidXRlIHRvIHRoZSBsaXN0IG9mIGF0dHJpYnV0ZXMuCisgIHZvaWQgYWRkRGVyZWZlcmVuY2VhYmxlQXR0cih1bnNpZ25lZCBpLCB1aW50NjRfdCBCeXRlcykgeworICAgIEF0dHJpYnV0ZUxpc3QgUEFMID0gZ2V0QXR0cmlidXRlcygpOworICAgIFBBTCA9IFBBTC5hZGREZXJlZmVyZW5jZWFibGVBdHRyKGdldENvbnRleHQoKSwgaSwgQnl0ZXMpOworICAgIHNldEF0dHJpYnV0ZXMoUEFMKTsKKyAgfQorCisgIC8vLyBhZGRzIHRoZSBkZXJlZmVyZW5jZWFibGVfb3JfbnVsbCBhdHRyaWJ1dGUgdG8gdGhlIGxpc3Qgb2YKKyAgLy8vIGF0dHJpYnV0ZXMuCisgIHZvaWQgYWRkRGVyZWZlcmVuY2VhYmxlT3JOdWxsQXR0cih1bnNpZ25lZCBpLCB1aW50NjRfdCBCeXRlcykgeworICAgIEF0dHJpYnV0ZUxpc3QgUEFMID0gZ2V0QXR0cmlidXRlcygpOworICAgIFBBTCA9IFBBTC5hZGREZXJlZmVyZW5jZWFibGVPck51bGxBdHRyKGdldENvbnRleHQoKSwgaSwgQnl0ZXMpOworICAgIHNldEF0dHJpYnV0ZXMoUEFMKTsKKyAgfQorCisgIC8vLyBEZXRlcm1pbmUgd2hldGhlciB0aGUgcmV0dXJuIHZhbHVlIGhhcyB0aGUgZ2l2ZW4gYXR0cmlidXRlLgorICBib29sIGhhc1JldEF0dHIoQXR0cmlidXRlOjpBdHRyS2luZCBLaW5kKSBjb25zdDsKKworICAvLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGFyZ3VtZW50IG9yIHBhcmFtZXRlciBoYXMgdGhlIGdpdmVuIGF0dHJpYnV0ZS4KKyAgYm9vbCBwYXJhbUhhc0F0dHIodW5zaWduZWQgQXJnTm8sIEF0dHJpYnV0ZTo6QXR0cktpbmQgS2luZCkgY29uc3Q7CisKKyAgLy8vIEdldCB0aGUgYXR0cmlidXRlIG9mIGEgZ2l2ZW4ga2luZCBhdCBhIHBvc2l0aW9uLgorICBBdHRyaWJ1dGUgZ2V0QXR0cmlidXRlKHVuc2lnbmVkIGksIEF0dHJpYnV0ZTo6QXR0cktpbmQgS2luZCkgY29uc3QgeworICAgIHJldHVybiBnZXRBdHRyaWJ1dGVzKCkuZ2V0QXR0cmlidXRlKGksIEtpbmQpOworICB9CisKKyAgLy8vIEdldCB0aGUgYXR0cmlidXRlIG9mIGEgZ2l2ZW4ga2luZCBhdCBhIHBvc2l0aW9uLgorICBBdHRyaWJ1dGUgZ2V0QXR0cmlidXRlKHVuc2lnbmVkIGksIFN0cmluZ1JlZiBLaW5kKSBjb25zdCB7CisgICAgcmV0dXJuIGdldEF0dHJpYnV0ZXMoKS5nZXRBdHRyaWJ1dGUoaSwgS2luZCk7CisgIH0KKworICAvLy8gR2V0IHRoZSBhdHRyaWJ1dGUgb2YgYSBnaXZlbiBraW5kIGZyb20gYSBnaXZlbiBhcmcKKyAgQXR0cmlidXRlIGdldFBhcmFtQXR0cih1bnNpZ25lZCBBcmdObywgQXR0cmlidXRlOjpBdHRyS2luZCBLaW5kKSBjb25zdCB7CisgICAgYXNzZXJ0KEFyZ05vIDwgZ2V0TnVtQXJnT3BlcmFuZHMoKSAmJiAiT3V0IG9mIGJvdW5kcyIpOworICAgIHJldHVybiBnZXRBdHRyaWJ1dGVzKCkuZ2V0UGFyYW1BdHRyKEFyZ05vLCBLaW5kKTsKKyAgfQorCisgIC8vLyBHZXQgdGhlIGF0dHJpYnV0ZSBvZiBhIGdpdmVuIGtpbmQgZnJvbSBhIGdpdmVuIGFyZworICBBdHRyaWJ1dGUgZ2V0UGFyYW1BdHRyKHVuc2lnbmVkIEFyZ05vLCBTdHJpbmdSZWYgS2luZCkgY29uc3QgeworICAgIGFzc2VydChBcmdObyA8IGdldE51bUFyZ09wZXJhbmRzKCkgJiYgIk91dCBvZiBib3VuZHMiKTsKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRlcygpLmdldFBhcmFtQXR0cihBcmdObywgS2luZCk7CisgIH0KKworICAvLy8gUmV0dXJuIHRydWUgaWYgdGhlIGRhdGEgb3BlcmFuZCBhdCBpbmRleCBccCBpIGhhcyB0aGUgYXR0cmlidXRlIFxwCisgIC8vLyBBLgorICAvLy8KKyAgLy8vIERhdGEgb3BlcmFuZHMgaW5jbHVkZSBjYWxsIGFyZ3VtZW50cyBhbmQgdmFsdWVzIHVzZWQgaW4gb3BlcmFuZCBidW5kbGVzLAorICAvLy8gYnV0IGRvZXMgbm90IGluY2x1ZGUgdGhlIGNhbGxlZSBvcGVyYW5kLiAgVGhpcyByb3V0aW5lIGRpc3BhdGNoZXMgdG8gdGhlCisgIC8vLyB1bmRlcmx5aW5nIEF0dHJpYnV0ZUxpc3Qgb3IgdGhlIE9wZXJhbmRCdW5kbGVVc2VyIGFzIGFwcHJvcHJpYXRlLgorICAvLy8KKyAgLy8vIFRoZSBpbmRleCBccCBpIGlzIGludGVycHJldGVkIGFzCisgIC8vLworICAvLy8gIFxwIGkgPT0gQXR0cmlidXRlOjpSZXR1cm5JbmRleCAgLT4gdGhlIHJldHVybiB2YWx1ZQorICAvLy8gIFxwIGkgaW4gWzEsIGFyZ19zaXplICsgMSkgIC0+IGFyZ3VtZW50IG51bWJlciAoXHAgaSAtIDEpCisgIC8vLyAgXHAgaSBpbiBbYXJnX3NpemUgKyAxLCBkYXRhX29wZXJhbmRfc2l6ZSArIDEpIC0+IGJ1bmRsZSBvcGVyYW5kIGF0IGluZGV4CisgIC8vLyAgICAgKFxwIGkgLSAxKSBpbiB0aGUgb3BlcmFuZCBsaXN0LgorICBib29sIGRhdGFPcGVyYW5kSGFzSW1wbGllZEF0dHIodW5zaWduZWQgaSwgQXR0cmlidXRlOjpBdHRyS2luZCBLaW5kKSBjb25zdCB7CisgICAgLy8gTm90ZSB0aGF0IHdlIGhhdmUgdG8gYWRkIG9uZSBiZWNhdXNlIGBpYCBpc24ndCB6ZXJvLWluZGV4ZWQuCisgICAgYXNzZXJ0KGkgPCAoZ2V0TnVtQXJnT3BlcmFuZHMoKSArIGdldE51bVRvdGFsQnVuZGxlT3BlcmFuZHMoKSArIDEpICYmCisgICAgICAgICAgICJEYXRhIG9wZXJhbmQgaW5kZXggb3V0IG9mIGJvdW5kcyEiKTsKKworICAgIC8vIFRoZSBhdHRyaWJ1dGUgQSBjYW4gZWl0aGVyIGJlIGRpcmVjdGx5IHNwZWNpZmllZCwgaWYgdGhlIG9wZXJhbmQgaW4KKyAgICAvLyBxdWVzdGlvbiBpcyBhIGNhbGwgYXJndW1lbnQ7IG9yIGJlIGluZGlyZWN0bHkgaW1wbGllZCBieSB0aGUga2luZCBvZiBpdHMKKyAgICAvLyBjb250YWluaW5nIG9wZXJhbmQgYnVuZGxlLCBpZiB0aGUgb3BlcmFuZCBpcyBhIGJ1bmRsZSBvcGVyYW5kLgorCisgICAgaWYgKGkgPT0gQXR0cmlidXRlTGlzdDo6UmV0dXJuSW5kZXgpCisgICAgICByZXR1cm4gaGFzUmV0QXR0cihLaW5kKTsKKworICAgIC8vIEZJWE1FOiBBdm9pZCB0aGVzZSBpIC0gMSBjYWxjdWxhdGlvbnMgYW5kIHVwZGF0ZSB0aGUgQVBJIHRvIHVzZQorICAgIC8vIHplcm8tYmFzZWQgaW5kaWNlcy4KKyAgICBpZiAoaSA8IChnZXROdW1BcmdPcGVyYW5kcygpICsgMSkpCisgICAgICByZXR1cm4gcGFyYW1IYXNBdHRyKGkgLSAxLCBLaW5kKTsKKworICAgIGFzc2VydChoYXNPcGVyYW5kQnVuZGxlcygpICYmIGkgPj0gKGdldEJ1bmRsZU9wZXJhbmRzU3RhcnRJbmRleCgpICsgMSkgJiYKKyAgICAgICAgICAgIk11c3QgYmUgZWl0aGVyIGEgY2FsbCBhcmd1bWVudCBvciBhbiBvcGVyYW5kIGJ1bmRsZSEiKTsKKyAgICByZXR1cm4gYnVuZGxlT3BlcmFuZEhhc0F0dHIoaSAtIDEsIEtpbmQpOworICB9CisKKyAgLy8vIERldGVybWluZSB3aGV0aGVyIHRoaXMgZGF0YSBvcGVyYW5kIGlzIG5vdCBjYXB0dXJlZC4KKyAgLy8gRklYTUU6IE9uY2UgdGhpcyBBUEkgaXMgbm8gbG9uZ2VyIGR1cGxpY2F0ZWQgaW4gYENhbGxTaXRlYCwgcmVuYW1lIHRoaXMgdG8KKyAgLy8gYmV0dGVyIGluZGljYXRlIHRoYXQgdGhpcyBtYXkgcmV0dXJuIGEgY29uc2VydmF0aXZlIGFuc3dlci4KKyAgYm9vbCBkb2VzTm90Q2FwdHVyZSh1bnNpZ25lZCBPcE5vKSBjb25zdCB7CisgICAgcmV0dXJuIGRhdGFPcGVyYW5kSGFzSW1wbGllZEF0dHIoT3BObyArIDEsIEF0dHJpYnV0ZTo6Tm9DYXB0dXJlKTsKKyAgfQorCisgIC8vLyBEZXRlcm1pbmUgd2hldGhlciB0aGlzIGFyZ3VtZW50IGlzIHBhc3NlZCBieSB2YWx1ZS4KKyAgYm9vbCBpc0J5VmFsQXJndW1lbnQodW5zaWduZWQgQXJnTm8pIGNvbnN0IHsKKyAgICByZXR1cm4gcGFyYW1IYXNBdHRyKEFyZ05vLCBBdHRyaWJ1dGU6OkJ5VmFsKTsKKyAgfQorCisgIC8vLyBEZXRlcm1pbmUgd2hldGhlciB0aGlzIGFyZ3VtZW50IGlzIHBhc3NlZCBpbiBhbiBhbGxvY2EuCisgIGJvb2wgaXNJbkFsbG9jYUFyZ3VtZW50KHVuc2lnbmVkIEFyZ05vKSBjb25zdCB7CisgICAgcmV0dXJuIHBhcmFtSGFzQXR0cihBcmdObywgQXR0cmlidXRlOjpJbkFsbG9jYSk7CisgIH0KKworICAvLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBhcmd1bWVudCBpcyBwYXNzZWQgYnkgdmFsdWUgb3IgaW4gYW4gYWxsb2NhLgorICBib29sIGlzQnlWYWxPckluQWxsb2NhQXJndW1lbnQodW5zaWduZWQgQXJnTm8pIGNvbnN0IHsKKyAgICByZXR1cm4gcGFyYW1IYXNBdHRyKEFyZ05vLCBBdHRyaWJ1dGU6OkJ5VmFsKSB8fAorICAgICAgICAgICBwYXJhbUhhc0F0dHIoQXJnTm8sIEF0dHJpYnV0ZTo6SW5BbGxvY2EpOworICB9CisKKyAgLy8vIERldGVybWluZSBpZiB0aGVyZSBhcmUgaXMgYW4gaW5hbGxvY2EgYXJndW1lbnQuIE9ubHkgdGhlIGxhc3QgYXJndW1lbnQgY2FuCisgIC8vLyBoYXZlIHRoZSBpbmFsbG9jYSBhdHRyaWJ1dGUuCisgIGJvb2wgaGFzSW5BbGxvY2FBcmd1bWVudCgpIGNvbnN0IHsKKyAgICByZXR1cm4gIWFyZ19lbXB0eSgpICYmIHBhcmFtSGFzQXR0cihhcmdfc2l6ZSgpIC0gMSwgQXR0cmlidXRlOjpJbkFsbG9jYSk7CisgIH0KKworICAvLyBGSVhNRTogT25jZSB0aGlzIEFQSSBpcyBubyBsb25nZXIgZHVwbGljYXRlZCBpbiBgQ2FsbFNpdGVgLCByZW5hbWUgdGhpcyB0bworICAvLyBiZXR0ZXIgaW5kaWNhdGUgdGhhdCB0aGlzIG1heSByZXR1cm4gYSBjb25zZXJ2YXRpdmUgYW5zd2VyLgorICBib29sIGRvZXNOb3RBY2Nlc3NNZW1vcnkodW5zaWduZWQgT3BObykgY29uc3QgeworICAgIHJldHVybiBkYXRhT3BlcmFuZEhhc0ltcGxpZWRBdHRyKE9wTm8gKyAxLCBBdHRyaWJ1dGU6OlJlYWROb25lKTsKKyAgfQorCisgIC8vIEZJWE1FOiBPbmNlIHRoaXMgQVBJIGlzIG5vIGxvbmdlciBkdXBsaWNhdGVkIGluIGBDYWxsU2l0ZWAsIHJlbmFtZSB0aGlzIHRvCisgIC8vIGJldHRlciBpbmRpY2F0ZSB0aGF0IHRoaXMgbWF5IHJldHVybiBhIGNvbnNlcnZhdGl2ZSBhbnN3ZXIuCisgIGJvb2wgb25seVJlYWRzTWVtb3J5KHVuc2lnbmVkIE9wTm8pIGNvbnN0IHsKKyAgICByZXR1cm4gZGF0YU9wZXJhbmRIYXNJbXBsaWVkQXR0cihPcE5vICsgMSwgQXR0cmlidXRlOjpSZWFkT25seSkgfHwKKyAgICAgICAgICAgZGF0YU9wZXJhbmRIYXNJbXBsaWVkQXR0cihPcE5vICsgMSwgQXR0cmlidXRlOjpSZWFkTm9uZSk7CisgIH0KKworICAvLyBGSVhNRTogT25jZSB0aGlzIEFQSSBpcyBubyBsb25nZXIgZHVwbGljYXRlZCBpbiBgQ2FsbFNpdGVgLCByZW5hbWUgdGhpcyB0bworICAvLyBiZXR0ZXIgaW5kaWNhdGUgdGhhdCB0aGlzIG1heSByZXR1cm4gYSBjb25zZXJ2YXRpdmUgYW5zd2VyLgorICBib29sIGRvZXNOb3RSZWFkTWVtb3J5KHVuc2lnbmVkIE9wTm8pIGNvbnN0IHsKKyAgICByZXR1cm4gZGF0YU9wZXJhbmRIYXNJbXBsaWVkQXR0cihPcE5vICsgMSwgQXR0cmlidXRlOjpXcml0ZU9ubHkpIHx8CisgICAgICAgICAgIGRhdGFPcGVyYW5kSGFzSW1wbGllZEF0dHIoT3BObyArIDEsIEF0dHJpYnV0ZTo6UmVhZE5vbmUpOworICB9CisKKyAgLy8vIEV4dHJhY3QgdGhlIGFsaWdubWVudCBvZiB0aGUgcmV0dXJuIHZhbHVlLgorICB1bnNpZ25lZCBnZXRSZXRBbGlnbm1lbnQoKSBjb25zdCB7IHJldHVybiBBdHRycy5nZXRSZXRBbGlnbm1lbnQoKTsgfQorCisgIC8vLyBFeHRyYWN0IHRoZSBhbGlnbm1lbnQgZm9yIGEgY2FsbCBvciBwYXJhbWV0ZXIgKDA9dW5rbm93bikuCisgIHVuc2lnbmVkIGdldFBhcmFtQWxpZ25tZW50KHVuc2lnbmVkIEFyZ05vKSBjb25zdCB7CisgICAgcmV0dXJuIEF0dHJzLmdldFBhcmFtQWxpZ25tZW50KEFyZ05vKTsKKyAgfQorCisgIC8vLyBFeHRyYWN0IHRoZSBudW1iZXIgb2YgZGVyZWZlcmVuY2VhYmxlIGJ5dGVzIGZvciBhIGNhbGwgb3IKKyAgLy8vIHBhcmFtZXRlciAoMD11bmtub3duKS4KKyAgdWludDY0X3QgZ2V0RGVyZWZlcmVuY2VhYmxlQnl0ZXModW5zaWduZWQgaSkgY29uc3QgeworICAgIHJldHVybiBBdHRycy5nZXREZXJlZmVyZW5jZWFibGVCeXRlcyhpKTsKKyAgfQorCisgIC8vLyBFeHRyYWN0IHRoZSBudW1iZXIgb2YgZGVyZWZlcmVuY2VhYmxlX29yX251bGwgYnl0ZXMgZm9yIGEgY2FsbCBvcgorICAvLy8gcGFyYW1ldGVyICgwPXVua25vd24pLgorICB1aW50NjRfdCBnZXREZXJlZmVyZW5jZWFibGVPck51bGxCeXRlcyh1bnNpZ25lZCBpKSBjb25zdCB7CisgICAgcmV0dXJuIEF0dHJzLmdldERlcmVmZXJlbmNlYWJsZU9yTnVsbEJ5dGVzKGkpOworICB9CisKKyAgLy8vIFJldHVybiB0cnVlIGlmIHRoZSByZXR1cm4gdmFsdWUgaXMga25vd24gdG8gYmUgbm90IG51bGwuCisgIC8vLyBUaGlzIG1heSBiZSBiZWNhdXNlIGl0IGhhcyB0aGUgbm9ubnVsbCBhdHRyaWJ1dGUsIG9yIGJlY2F1c2UgYXQgbGVhc3QKKyAgLy8vIG9uZSBieXRlIGlzIGRlcmVmZXJlbmNlYWJsZSBhbmQgdGhlIHBvaW50ZXIgaXMgaW4gYWRkcnNwYWNlKDApLgorICBib29sIGlzUmV0dXJuTm9uTnVsbCgpIGNvbnN0OworCisgIC8vLyBEZXRlcm1pbmUgaWYgdGhlIHJldHVybiB2YWx1ZSBpcyBtYXJrZWQgd2l0aCBOb0FsaWFzIGF0dHJpYnV0ZS4KKyAgYm9vbCByZXR1cm5Eb2VzTm90QWxpYXMoKSBjb25zdCB7CisgICAgcmV0dXJuIEF0dHJzLmhhc0F0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpSZXR1cm5JbmRleCwgQXR0cmlidXRlOjpOb0FsaWFzKTsKKyAgfQorCisgIC8vLyBJZiBvbmUgb2YgdGhlIGFyZ3VtZW50cyBoYXMgdGhlICdyZXR1cm5lZCcgYXR0cmlidXRlLCByZXR1cm5zIGl0cworICAvLy8gb3BlcmFuZCB2YWx1ZS4gT3RoZXJ3aXNlLCByZXR1cm4gbnVsbHB0ci4KKyAgVmFsdWUgKmdldFJldHVybmVkQXJnT3BlcmFuZCgpIGNvbnN0OworCisgIC8vLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgY2FsbCBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBjYWxsIHRvIGEKKyAgLy8vIGJ1aWx0aW4uCisgIGJvb2wgaXNOb0J1aWx0aW4oKSBjb25zdCB7CisgICAgcmV0dXJuIGhhc0ZuQXR0ckltcGwoQXR0cmlidXRlOjpOb0J1aWx0aW4pICYmCisgICAgICAgICAgICFoYXNGbkF0dHJJbXBsKEF0dHJpYnV0ZTo6QnVpbHRpbik7CisgIH0KKworICAvLy8gRGV0ZXJtaW5lIGlmIHRoZSBjYWxsIHJlcXVpcmVzIHN0cmljdCBmbG9hdGluZyBwb2ludCBzZW1hbnRpY3MuCisgIGJvb2wgaXNTdHJpY3RGUCgpIGNvbnN0IHsgcmV0dXJuIGhhc0ZuQXR0cihBdHRyaWJ1dGU6OlN0cmljdEZQKTsgfQorCisgIC8vLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgY2FsbCBzaG91bGQgbm90IGJlIGlubGluZWQuCisgIGJvb2wgaXNOb0lubGluZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0ZuQXR0cihBdHRyaWJ1dGU6Ok5vSW5saW5lKTsgfQorICB2b2lkIHNldElzTm9JbmxpbmUoKSB7CisgICAgYWRkQXR0cmlidXRlKEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHJpYnV0ZTo6Tm9JbmxpbmUpOworICB9CisgIC8vLyBEZXRlcm1pbmUgaWYgdGhlIGNhbGwgZG9lcyBub3QgYWNjZXNzIG1lbW9yeS4KKyAgYm9vbCBkb2VzTm90QWNjZXNzTWVtb3J5KCkgY29uc3QgeyByZXR1cm4gaGFzRm5BdHRyKEF0dHJpYnV0ZTo6UmVhZE5vbmUpOyB9CisgIHZvaWQgc2V0RG9lc05vdEFjY2Vzc01lbW9yeSgpIHsKKyAgICBhZGRBdHRyaWJ1dGUoQXR0cmlidXRlTGlzdDo6RnVuY3Rpb25JbmRleCwgQXR0cmlidXRlOjpSZWFkTm9uZSk7CisgIH0KKworICAvLy8gRGV0ZXJtaW5lIGlmIHRoZSBjYWxsIGRvZXMgbm90IGFjY2VzcyBvciBvbmx5IHJlYWRzIG1lbW9yeS4KKyAgYm9vbCBvbmx5UmVhZHNNZW1vcnkoKSBjb25zdCB7CisgICAgcmV0dXJuIGRvZXNOb3RBY2Nlc3NNZW1vcnkoKSB8fCBoYXNGbkF0dHIoQXR0cmlidXRlOjpSZWFkT25seSk7CisgIH0KKyAgdm9pZCBzZXRPbmx5UmVhZHNNZW1vcnkoKSB7CisgICAgYWRkQXR0cmlidXRlKEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICB9CisKKyAgLy8vIERldGVybWluZSBpZiB0aGUgY2FsbCBkb2VzIG5vdCBhY2Nlc3Mgb3Igb25seSB3cml0ZXMgbWVtb3J5LgorICBib29sIGRvZXNOb3RSZWFkTWVtb3J5KCkgY29uc3QgeworICAgIHJldHVybiBkb2VzTm90QWNjZXNzTWVtb3J5KCkgfHwgaGFzRm5BdHRyKEF0dHJpYnV0ZTo6V3JpdGVPbmx5KTsKKyAgfQorICB2b2lkIHNldERvZXNOb3RSZWFkTWVtb3J5KCkgeworICAgIGFkZEF0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LCBBdHRyaWJ1dGU6OldyaXRlT25seSk7CisgIH0KKworICAvLy8gRGV0ZXJtaW5lIGlmIHRoZSBjYWxsIGNhbiBhY2Nlc3MgbWVtbW9yeSBvbmx5IHVzaW5nIHBvaW50ZXJzIGJhc2VkCisgIC8vLyBvbiBpdHMgYXJndW1lbnRzLgorICBib29sIG9ubHlBY2Nlc3Nlc0FyZ01lbW9yeSgpIGNvbnN0IHsKKyAgICByZXR1cm4gaGFzRm5BdHRyKEF0dHJpYnV0ZTo6QXJnTWVtT25seSk7CisgIH0KKyAgdm9pZCBzZXRPbmx5QWNjZXNzZXNBcmdNZW1vcnkoKSB7CisgICAgYWRkQXR0cmlidXRlKEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHJpYnV0ZTo6QXJnTWVtT25seSk7CisgIH0KKworICAvLy8gRGV0ZXJtaW5lIGlmIHRoZSBmdW5jdGlvbiBtYXkgb25seSBhY2Nlc3MgbWVtb3J5IHRoYXQgaXMKKyAgLy8vIGluYWNjZXNzaWJsZSBmcm9tIHRoZSBJUi4KKyAgYm9vbCBvbmx5QWNjZXNzZXNJbmFjY2Vzc2libGVNZW1vcnkoKSBjb25zdCB7CisgICAgcmV0dXJuIGhhc0ZuQXR0cihBdHRyaWJ1dGU6OkluYWNjZXNzaWJsZU1lbU9ubHkpOworICB9CisgIHZvaWQgc2V0T25seUFjY2Vzc2VzSW5hY2Nlc3NpYmxlTWVtb3J5KCkgeworICAgIGFkZEF0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LCBBdHRyaWJ1dGU6OkluYWNjZXNzaWJsZU1lbU9ubHkpOworICB9CisKKyAgLy8vIERldGVybWluZSBpZiB0aGUgZnVuY3Rpb24gbWF5IG9ubHkgYWNjZXNzIG1lbW9yeSB0aGF0IGlzCisgIC8vLyBlaXRoZXIgaW5hY2Nlc3NpYmxlIGZyb20gdGhlIElSIG9yIHBvaW50ZWQgdG8gYnkgaXRzIGFyZ3VtZW50cy4KKyAgYm9vbCBvbmx5QWNjZXNzZXNJbmFjY2Vzc2libGVNZW1PckFyZ01lbSgpIGNvbnN0IHsKKyAgICByZXR1cm4gaGFzRm5BdHRyKEF0dHJpYnV0ZTo6SW5hY2Nlc3NpYmxlTWVtT3JBcmdNZW1Pbmx5KTsKKyAgfQorICB2b2lkIHNldE9ubHlBY2Nlc3Nlc0luYWNjZXNzaWJsZU1lbU9yQXJnTWVtKCkgeworICAgIGFkZEF0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LAorICAgICAgICAgICAgICAgICBBdHRyaWJ1dGU6OkluYWNjZXNzaWJsZU1lbU9yQXJnTWVtT25seSk7CisgIH0KKyAgLy8vIERldGVybWluZSBpZiB0aGUgY2FsbCBjYW5ub3QgcmV0dXJuLgorICBib29sIGRvZXNOb3RSZXR1cm4oKSBjb25zdCB7IHJldHVybiBoYXNGbkF0dHIoQXR0cmlidXRlOjpOb1JldHVybik7IH0KKyAgdm9pZCBzZXREb2VzTm90UmV0dXJuKCkgeworICAgIGFkZEF0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LCBBdHRyaWJ1dGU6Ok5vUmV0dXJuKTsKKyAgfQorCisgIC8vLyBEZXRlcm1pbmUgaWYgdGhlIGNhbGwgc2hvdWxkIG5vdCBwZXJmb3JtIGluZGlyZWN0IGJyYW5jaCB0cmFja2luZy4KKyAgYm9vbCBkb2VzTm9DZkNoZWNrKCkgY29uc3QgeyByZXR1cm4gaGFzRm5BdHRyKEF0dHJpYnV0ZTo6Tm9DZkNoZWNrKTsgfQorCisgIC8vLyBEZXRlcm1pbmUgaWYgdGhlIGNhbGwgY2Fubm90IHVud2luZC4KKyAgYm9vbCBkb2VzTm90VGhyb3coKSBjb25zdCB7IHJldHVybiBoYXNGbkF0dHIoQXR0cmlidXRlOjpOb1Vud2luZCk7IH0KKyAgdm9pZCBzZXREb2VzTm90VGhyb3coKSB7CisgICAgYWRkQXR0cmlidXRlKEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHJpYnV0ZTo6Tm9VbndpbmQpOworICB9CisKKyAgLy8vIERldGVybWluZSBpZiB0aGUgaW52b2tlIGNhbm5vdCBiZSBkdXBsaWNhdGVkLgorICBib29sIGNhbm5vdER1cGxpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc0ZuQXR0cihBdHRyaWJ1dGU6Ok5vRHVwbGljYXRlKTsgfQorICB2b2lkIHNldENhbm5vdER1cGxpY2F0ZSgpIHsKKyAgICBhZGRBdHRyaWJ1dGUoQXR0cmlidXRlTGlzdDo6RnVuY3Rpb25JbmRleCwgQXR0cmlidXRlOjpOb0R1cGxpY2F0ZSk7CisgIH0KKworICAvLy8gRGV0ZXJtaW5lIGlmIHRoZSBpbnZva2UgaXMgY29udmVyZ2VudAorICBib29sIGlzQ29udmVyZ2VudCgpIGNvbnN0IHsgcmV0dXJuIGhhc0ZuQXR0cihBdHRyaWJ1dGU6OkNvbnZlcmdlbnQpOyB9CisgIHZvaWQgc2V0Q29udmVyZ2VudCgpIHsKKyAgICBhZGRBdHRyaWJ1dGUoQXR0cmlidXRlTGlzdDo6RnVuY3Rpb25JbmRleCwgQXR0cmlidXRlOjpDb252ZXJnZW50KTsKKyAgfQorICB2b2lkIHNldE5vdENvbnZlcmdlbnQoKSB7CisgICAgcmVtb3ZlQXR0cmlidXRlKEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHJpYnV0ZTo6Q29udmVyZ2VudCk7CisgIH0KKworICAvLy8gRGV0ZXJtaW5lIGlmIHRoZSBjYWxsIHJldHVybnMgYSBzdHJ1Y3R1cmUgdGhyb3VnaCBmaXJzdAorICAvLy8gcG9pbnRlciBhcmd1bWVudC4KKyAgYm9vbCBoYXNTdHJ1Y3RSZXRBdHRyKCkgY29uc3QgeworICAgIGlmIChnZXROdW1BcmdPcGVyYW5kcygpID09IDApCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBCZSBmcmllbmRseSBhbmQgYWxzbyBjaGVjayB0aGUgY2FsbGVlLgorICAgIHJldHVybiBwYXJhbUhhc0F0dHIoMCwgQXR0cmlidXRlOjpTdHJ1Y3RSZXQpOworICB9CisKKyAgLy8vIERldGVybWluZSBpZiBhbnkgY2FsbCBhcmd1bWVudCBpcyBhbiBhZ2dyZWdhdGUgcGFzc2VkIGJ5IHZhbHVlLgorICBib29sIGhhc0J5VmFsQXJndW1lbnQoKSBjb25zdCB7CisgICAgcmV0dXJuIEF0dHJzLmhhc0F0dHJTb21ld2hlcmUoQXR0cmlidXRlOjpCeVZhbCk7CisgIH0KKworICAvLy9AeworICAvLyBFbmQgb2YgYXR0cmlidXRlIEFQSS4KKworICAvLy8gXG5hbWUgT3BlcmFuZCBCdW5kbGUgQVBJCisgIC8vLworICAvLy8gVGhpcyBncm91cCBvZiBtZXRob2RzIHByb3ZpZGVzIHRoZSBBUEkgdG8gYWNjZXNzIGFuZCBtYW5pcHVsYXRlIG9wZXJhbmQKKyAgLy8vIGJ1bmRsZXMgb24gdGhpcyBjYWxsLgorICAvLy8gQHsKKwogICAvLy8gUmV0dXJuIHRoZSBudW1iZXIgb2Ygb3BlcmFuZCBidW5kbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIFVzZXIuCiAgIHVuc2lnbmVkIGdldE51bU9wZXJhbmRCdW5kbGVzKCkgY29uc3QgewogICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKGJ1bmRsZV9vcF9pbmZvX2JlZ2luKCksIGJ1bmRsZV9vcF9pbmZvX2VuZCgpKTsKQEAgLTExNzUsNiArMTY1OCwxNiBAQAogICAgICAgICAgICBJZHggPCBnZXRCdW5kbGVPcGVyYW5kc0VuZEluZGV4KCk7CiAgIH0KIAorICAvLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB1c2UgaXMgYSBidW5kbGUgb3BlcmFuZC4KKyAgYm9vbCBpc0J1bmRsZU9wZXJhbmQoY29uc3QgVXNlICpVKSBjb25zdCB7CisgICAgYXNzZXJ0KHRoaXMgPT0gVS0+Z2V0VXNlcigpICYmCisgICAgICAgICAgICJPbmx5IHZhbGlkIHRvIHF1ZXJ5IHdpdGggYSB1c2Ugb2YgdGhpcyBpbnN0cnVjdGlvbiEiKTsKKyAgICByZXR1cm4gaGFzT3BlcmFuZEJ1bmRsZXMoKSAmJiBpc0J1bmRsZU9wZXJhbmQoVSAtIG9wX2JlZ2luKCkpOworICB9CisgIGJvb2wgaXNCdW5kbGVPcGVyYW5kKFZhbHVlOjpjb25zdF91c2VyX2l0ZXJhdG9yIFVJKSBjb25zdCB7CisgICAgcmV0dXJuIGlzQnVuZGxlT3BlcmFuZCgmVUkuZ2V0VXNlKCkpOworICB9CisKICAgLy8vIFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9wZXJhbmRzIChub3Qgb3BlcmFuZCBidW5kbGVzKSB1c2VkIGJ5CiAgIC8vLyBldmVyeSBvcGVyYW5kIGJ1bmRsZSBpbiB0aGlzIE9wZXJhbmRCdW5kbGVVc2VyLgogICB1bnNpZ25lZCBnZXROdW1Ub3RhbEJ1bmRsZU9wZXJhbmRzKCkgY29uc3QgewpAQCAtMTMwNCw4ICsxNzk3LDcgQEAKICAgLy8vIFJldHVybiB0cnVlIGlmIFxwIE90aGVyIGhhcyB0aGUgc2FtZSBzZXF1ZW5jZSBvZiBvcGVyYW5kIGJ1bmRsZQogICAvLy8gdGFncyB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBvcGVyYW5kcyBvbiBlYWNoIG9uZSBvZiB0aGVtIGFzIHRoaXMKICAgLy8vIE9wZXJhbmRCdW5kbGVVc2VyLgotICBib29sIGhhc0lkZW50aWNhbE9wZXJhbmRCdW5kbGVTY2hlbWEoCi0gICAgICBjb25zdCBPcGVyYW5kQnVuZGxlVXNlcjxJbnN0clR5LCBPcEl0ZXJhdG9yVHk+ICZPdGhlcikgY29uc3QgeworICBib29sIGhhc0lkZW50aWNhbE9wZXJhbmRCdW5kbGVTY2hlbWEoY29uc3QgQ2FsbEJhc2UgJk90aGVyKSBjb25zdCB7CiAgICAgaWYgKGdldE51bU9wZXJhbmRCdW5kbGVzKCkgIT0gT3RoZXIuZ2V0TnVtT3BlcmFuZEJ1bmRsZXMoKSkKICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTMyNCw3ICsxODE2LDYgQEAKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIAotcHJvdGVjdGVkOgogICAvLy8gSXMgdGhlIGZ1bmN0aW9uIGF0dHJpYnV0ZSBTIGRpc2FsbG93ZWQgYnkgc29tZSBvcGVyYW5kIGJ1bmRsZSBvbgogICAvLy8gdGhpcyBvcGVyYW5kIGJ1bmRsZSB1c2VyPwogICBib29sIGlzRm5BdHRyRGlzYWxsb3dlZEJ5T3BCdW5kbGUoU3RyaW5nUmVmIFMpIGNvbnN0IHsKQEAgLTEzODMsOCArMTg3NCw4IEBACiAgIC8vLyBPcGVyYW5kQnVuZGxlVXNlLgogICBPcGVyYW5kQnVuZGxlVXNlCiAgIG9wZXJhbmRCdW5kbGVGcm9tQnVuZGxlT3BJbmZvKGNvbnN0IEJ1bmRsZU9wSW5mbyAmQk9JKSBjb25zdCB7Ci0gICAgYXV0byBvcF9iZWdpbiA9IHN0YXRpY19jYXN0PGNvbnN0IEluc3RyVHkgKj4odGhpcyktPm9wX2JlZ2luKCk7Ci0gICAgQXJyYXlSZWY8VXNlPiBJbnB1dHMob3BfYmVnaW4gKyBCT0kuQmVnaW4sIG9wX2JlZ2luICsgQk9JLkVuZCk7CisgICAgYXV0byBiZWdpbiA9IG9wX2JlZ2luKCk7CisgICAgQXJyYXlSZWY8VXNlPiBJbnB1dHMoYmVnaW4gKyBCT0kuQmVnaW4sIGJlZ2luICsgQk9JLkVuZCk7CiAgICAgcmV0dXJuIE9wZXJhbmRCdW5kbGVVc2UoQk9JLlRhZywgSW5wdXRzKTsKICAgfQogCkBAIC0xMzkzLDM3ICsxODg0LDc5IEBACiAKICAgLy8vIFJldHVybiB0aGUgc3RhcnQgb2YgdGhlIGxpc3Qgb2YgQnVuZGxlT3BJbmZvIGluc3RhbmNlcyBhc3NvY2lhdGVkCiAgIC8vLyB3aXRoIHRoaXMgT3BlcmFuZEJ1bmRsZVVzZXIuCisgIC8vLworICAvLy8gT3BlcmFuZEJ1bmRsZVVzZXIgdXNlcyB0aGUgZGVzY3JpcHRvciBhcmVhIGNvLWFsbG9jYXRlZCB3aXRoIHRoZSBob3N0IFVzZXIKKyAgLy8vIHRvIHN0b3JlIHNvbWUgbWV0YSBpbmZvcm1hdGlvbiBhYm91dCB3aGljaCBvcGVyYW5kcyBhcmUgIm5vcm1hbCIgb3BlcmFuZHMsCisgIC8vLyBhbmQgd2hpY2ggb25lcyBiZWxvbmcgdG8gc29tZSBvcGVyYW5kIGJ1bmRsZS4KKyAgLy8vCisgIC8vLyBUaGUgbGF5b3V0IG9mIGFuIG9wZXJhbmQgYnVuZGxlIHVzZXIgaXMKKyAgLy8vCisgIC8vLyAgICAgICAgICArLS0tLS0tLS0tLS11aW50MzJfdCBFbmQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAvLy8gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgLy8vICAgICAgICAgIHwgICstLS0tLS0tLXVpbnQzMl90IEJlZ2luLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICB8CisgIC8vLyAgICAgICAgICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfAorICAvLy8gICAgICAgICAgXiAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgICAgIHYKKyAgLy8vICB8LS0tLS0tfC0tLS0tLXwtLS0tfC0tLS18LS0tLXwtLS0tfC0tLS18LS0tLS0tLS0tfC0tLS18LS0tLS0tLS0tfC0tLS18LS0tLS0KKyAgLy8vICB8IEJPSTAgfCBCT0kxIHwgLi4gfCBEVSB8IFUwIHwgVTEgfCAuLiB8IEJPSTBfVTAgfCAuLiB8IEJPSTFfVTAgfCAuLiB8IFVuCisgIC8vLyAgfC0tLS0tLXwtLS0tLS18LS0tLXwtLS0tfC0tLS18LS0tLXwtLS0tfC0tLS0tLS0tLXwtLS0tfC0tLS0tLS0tLXwtLS0tfC0tLS0tCisgIC8vLyAgIHYgIHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgXgorICAvLy8gICB8ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwKKyAgLy8vICAgfCAgKy0tLS0tLS0tdWludDMyX3QgQmVnaW4tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICB8CisgIC8vLyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAvLy8gICArLS0tLS0tLS0tLS11aW50MzJfdCBFbmQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgLy8vCisgIC8vLworICAvLy8gQk9JMCwgQk9JMSAuLi4gYXJlIGRlc2NyaXB0aW9ucyBvZiBvcGVyYW5kIGJ1bmRsZXMgaW4gdGhpcyBVc2VyJ3MgdXNlCisgIC8vLyBsaXN0LiBUaGVzZSBkZXNjcmlwdGlvbnMgYXJlIGluc3RhbGxlZCBhbmQgbWFuYWdlZCBieSB0aGlzIGNsYXNzLCBhbmQKKyAgLy8vIHRoZXkncmUgYWxsIGluc3RhbmNlcyBvZiBPcGVyYW5kQnVuZGxlVXNlcjxUPjo6QnVuZGxlT3BJbmZvLgorICAvLy8KKyAgLy8vIERVIGlzIGFuIGFkZGl0aW9uYWwgZGVzY3JpcHRvciBpbnN0YWxsZWQgYnkgVXNlcidzICdvcGVyYXRvciBuZXcnIHRvIGtlZXAKKyAgLy8vIHRyYWNrIG9mIHRoZSAnQk9JMCAuLi4gQk9JTicgY28tYWxsb2NhdGlvbi4gIE9wZXJhbmRCdW5kbGVVc2VyIGRvZXMgbm90CisgIC8vLyBhY2Nlc3Mgb3IgbW9kaWZ5IERVIGluIGFueSB3YXksIGl0J3MgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIHByaXZhdGUgdG8KKyAgLy8vIFVzZXIuCisgIC8vLworICAvLy8gVGhlIHJlZ3VsYXIgVXNlJiB2ZWN0b3IgZm9yIHRoZSBVc2VyIHN0YXJ0cyBhdCBVMC4gIFRoZSBvcGVyYW5kIGJ1bmRsZQorICAvLy8gdXNlcyBhcmUgcGFydCBvZiB0aGUgVXNlJiB2ZWN0b3IsIGp1c3QgbGlrZSBub3JtYWwgdXNlcy4gIEluIHRoZSBkaWFncmFtCisgIC8vLyBhYm92ZSwgdGhlIG9wZXJhbmQgYnVuZGxlIHVzZXMgc3RhcnQgYXQgQk9JMF9VMC4gIEVhY2ggaW5zdGFuY2Ugb2YKKyAgLy8vIEJ1bmRsZU9wSW5mbyBoYXMgaW5mb3JtYXRpb24gYWJvdXQgYSBjb250aWd1b3VzIHNldCBvZiB1c2VzIGNvbnN0aXR1dGluZworICAvLy8gYW4gb3BlcmFuZCBidW5kbGUsIGFuZCB0aGUgdG90YWwgc2V0IG9mIG9wZXJhbmQgYnVuZGxlIHVzZXMgdGhlbXNlbHZlcworICAvLy8gZm9ybSBhIGNvbnRpZ3VvdXMgc2V0IG9mIHVzZXMgKGkuZS4gdGhlcmUgYXJlIG5vIGdhcHMgYmV0d2VlbiB1c2VzCisgIC8vLyBjb3JyZXNwb25kaW5nIHRvIGluZGl2aWR1YWwgb3BlcmFuZCBidW5kbGVzKS4KKyAgLy8vCisgIC8vLyBUaGlzIGNsYXNzIGRvZXMgbm90IGtub3cgdGhlIGxvY2F0aW9uIG9mIHRoZSBzZXQgb2Ygb3BlcmFuZCBidW5kbGUgdXNlcworICAvLy8gd2l0aGluIHRoZSB1c2UgbGlzdCAtLSB0aGF0IGlzIGRlY2lkZWQgYnkgdGhlIFVzZXIgdXNpbmcgdGhpcyBjbGFzcyB2aWEKKyAgLy8vIHRoZSBCZWdpbklkeCBhcmd1bWVudCBpbiBwb3B1bGF0ZUJ1bmRsZU9wZXJhbmRJbmZvcy4KKyAgLy8vCisgIC8vLyBDdXJyZW50bHkgb3BlcmFuZCBidW5kbGUgdXNlcnMgd2l0aCBodW5nLW9mZiBvcGVyYW5kcyBhcmUgbm90IHN1cHBvcnRlZC4KICAgYnVuZGxlX29wX2l0ZXJhdG9yIGJ1bmRsZV9vcF9pbmZvX2JlZ2luKCkgewotICAgIGlmICghc3RhdGljX2Nhc3Q8SW5zdHJUeSAqPih0aGlzKS0+aGFzRGVzY3JpcHRvcigpKQorICAgIGlmICghaGFzRGVzY3JpcHRvcigpKQogICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICB1aW50OF90ICpCeXRlc0JlZ2luID0gc3RhdGljX2Nhc3Q8SW5zdHJUeSAqPih0aGlzKS0+Z2V0RGVzY3JpcHRvcigpLmJlZ2luKCk7CisgICAgdWludDhfdCAqQnl0ZXNCZWdpbiA9IGdldERlc2NyaXB0b3IoKS5iZWdpbigpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGJ1bmRsZV9vcF9pdGVyYXRvcj4oQnl0ZXNCZWdpbik7CiAgIH0KIAogICAvLy8gUmV0dXJuIHRoZSBzdGFydCBvZiB0aGUgbGlzdCBvZiBCdW5kbGVPcEluZm8gaW5zdGFuY2VzIGFzc29jaWF0ZWQKICAgLy8vIHdpdGggdGhpcyBPcGVyYW5kQnVuZGxlVXNlci4KICAgY29uc3RfYnVuZGxlX29wX2l0ZXJhdG9yIGJ1bmRsZV9vcF9pbmZvX2JlZ2luKCkgY29uc3QgewotICAgIGF1dG8gKk5vbkNvbnN0VGhpcyA9Ci0gICAgICAgIGNvbnN0X2Nhc3Q8T3BlcmFuZEJ1bmRsZVVzZXI8SW5zdHJUeSwgT3BJdGVyYXRvclR5PiAqPih0aGlzKTsKKyAgICBhdXRvICpOb25Db25zdFRoaXMgPSBjb25zdF9jYXN0PENhbGxCYXNlICo+KHRoaXMpOwogICAgIHJldHVybiBOb25Db25zdFRoaXMtPmJ1bmRsZV9vcF9pbmZvX2JlZ2luKCk7CiAgIH0KIAogICAvLy8gUmV0dXJuIHRoZSBlbmQgb2YgdGhlIGxpc3Qgb2YgQnVuZGxlT3BJbmZvIGluc3RhbmNlcyBhc3NvY2lhdGVkCiAgIC8vLyB3aXRoIHRoaXMgT3BlcmFuZEJ1bmRsZVVzZXIuCiAgIGJ1bmRsZV9vcF9pdGVyYXRvciBidW5kbGVfb3BfaW5mb19lbmQoKSB7Ci0gICAgaWYgKCFzdGF0aWNfY2FzdDxJbnN0clR5ICo+KHRoaXMpLT5oYXNEZXNjcmlwdG9yKCkpCisgICAgaWYgKCFoYXNEZXNjcmlwdG9yKCkpCiAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHVpbnQ4X3QgKkJ5dGVzRW5kID0gc3RhdGljX2Nhc3Q8SW5zdHJUeSAqPih0aGlzKS0+Z2V0RGVzY3JpcHRvcigpLmVuZCgpOworICAgIHVpbnQ4X3QgKkJ5dGVzRW5kID0gZ2V0RGVzY3JpcHRvcigpLmVuZCgpOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGJ1bmRsZV9vcF9pdGVyYXRvcj4oQnl0ZXNFbmQpOwogICB9CiAKICAgLy8vIFJldHVybiB0aGUgZW5kIG9mIHRoZSBsaXN0IG9mIEJ1bmRsZU9wSW5mbyBpbnN0YW5jZXMgYXNzb2NpYXRlZAogICAvLy8gd2l0aCB0aGlzIE9wZXJhbmRCdW5kbGVVc2VyLgogICBjb25zdF9idW5kbGVfb3BfaXRlcmF0b3IgYnVuZGxlX29wX2luZm9fZW5kKCkgY29uc3QgewotICAgIGF1dG8gKk5vbkNvbnN0VGhpcyA9Ci0gICAgICAgIGNvbnN0X2Nhc3Q8T3BlcmFuZEJ1bmRsZVVzZXI8SW5zdHJUeSwgT3BJdGVyYXRvclR5PiAqPih0aGlzKTsKKyAgICBhdXRvICpOb25Db25zdFRoaXMgPSBjb25zdF9jYXN0PENhbGxCYXNlICo+KHRoaXMpOwogICAgIHJldHVybiBOb25Db25zdFRoaXMtPmJ1bmRsZV9vcF9pbmZvX2VuZCgpOwogICB9CiAKQEAgLTE0NDMsMzAgKzE5NzYsOCBAQAogICAvLy8KICAgLy8vIEVhY2ggXHAgT3BlcmFuZEJ1bmRsZURlZiBpbnN0YW5jZSBpcyB0cmFja2VkIGJ5IGEgT3BlcmFuZEJ1bmRsZUluZm8KICAgLy8vIGluc3RhbmNlIGFsbG9jYXRlZCBpbiB0aGlzIFVzZXIncyBkZXNjcmlwdG9yLgotICBPcEl0ZXJhdG9yVHkgcG9wdWxhdGVCdW5kbGVPcGVyYW5kSW5mb3MoQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIEJlZ2luSW5kZXgpIHsKLSAgICBhdXRvIEl0ID0gc3RhdGljX2Nhc3Q8SW5zdHJUeSAqPih0aGlzKS0+b3BfYmVnaW4oKSArIEJlZ2luSW5kZXg7Ci0gICAgZm9yIChhdXRvICZCIDogQnVuZGxlcykKLSAgICAgIEl0ID0gc3RkOjpjb3B5KEIuaW5wdXRfYmVnaW4oKSwgQi5pbnB1dF9lbmQoKSwgSXQpOwotCi0gICAgYXV0byAqQ29udGV4dEltcGwgPSBzdGF0aWNfY2FzdDxJbnN0clR5ICo+KHRoaXMpLT5nZXRDb250ZXh0KCkucEltcGw7Ci0gICAgYXV0byBCSSA9IEJ1bmRsZXMuYmVnaW4oKTsKLSAgICB1bnNpZ25lZCBDdXJyZW50SW5kZXggPSBCZWdpbkluZGV4OwotCi0gICAgZm9yIChhdXRvICZCT0kgOiBidW5kbGVfb3BfaW5mb3MoKSkgewotICAgICAgYXNzZXJ0KEJJICE9IEJ1bmRsZXMuZW5kKCkgJiYgIkluY29ycmVjdCBhbGxvY2F0aW9uPyIpOwotCi0gICAgICBCT0kuVGFnID0gQ29udGV4dEltcGwtPmdldE9ySW5zZXJ0QnVuZGxlVGFnKEJJLT5nZXRUYWcoKSk7Ci0gICAgICBCT0kuQmVnaW4gPSBDdXJyZW50SW5kZXg7Ci0gICAgICBCT0kuRW5kID0gQ3VycmVudEluZGV4ICsgQkktPmlucHV0X3NpemUoKTsKLSAgICAgIEN1cnJlbnRJbmRleCA9IEJPSS5FbmQ7Ci0gICAgICBCSSsrOwotICAgIH0KLQotICAgIGFzc2VydChCSSA9PSBCdW5kbGVzLmVuZCgpICYmICJJbmNvcnJlY3QgYWxsb2NhdGlvbj8iKTsKLQotICAgIHJldHVybiBJdDsKLSAgfQorICBvcF9pdGVyYXRvciBwb3B1bGF0ZUJ1bmRsZU9wZXJhbmRJbmZvcyhBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBCdW5kbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBCZWdpbkluZGV4KTsKIAogICAvLy8gUmV0dXJuIHRoZSBCdW5kbGVPcEluZm8gZm9yIHRoZSBvcGVyYW5kIGF0IGluZGV4IE9wSWR4LgogICAvLy8KQEAgLTE0ODAsNiArMTk5MSw3IEBACiAgICAgbGx2bV91bnJlYWNoYWJsZSgiRGlkIG5vdCBmaW5kIG9wZXJhbmQgYnVuZGxlIGZvciBvcGVyYW5kISIpOwogICB9CiAKK3Byb3RlY3RlZDoKICAgLy8vIFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIHZhbHVlcyB1c2VkIGluIFxwIEJ1bmRsZXMuCiAgIHN0YXRpYyB1bnNpZ25lZCBDb3VudEJ1bmRsZUlucHV0cyhBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBCdW5kbGVzKSB7CiAgICAgdW5zaWduZWQgVG90YWwgPSAwOwpAQCAtMTQ4Nyw4ICsxOTk5LDEwMiBAQAogICAgICAgVG90YWwgKz0gQi5pbnB1dF9zaXplKCk7CiAgICAgcmV0dXJuIFRvdGFsOwogICB9CisKKyAgLy8vIEB9CisgIC8vIEVuZCBvZiBvcGVyYW5kIGJ1bmRsZSBBUEkuCisKK3ByaXZhdGU6CisgIGJvb2wgaGFzRm5BdHRyT25DYWxsZWRGdW5jdGlvbihBdHRyaWJ1dGU6OkF0dHJLaW5kIEtpbmQpIGNvbnN0OworICBib29sIGhhc0ZuQXR0ck9uQ2FsbGVkRnVuY3Rpb24oU3RyaW5nUmVmIEtpbmQpIGNvbnN0OworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBBdHRyS2luZD4gYm9vbCBoYXNGbkF0dHJJbXBsKEF0dHJLaW5kIEtpbmQpIGNvbnN0IHsKKyAgICBpZiAoQXR0cnMuaGFzQXR0cmlidXRlKEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEtpbmQpKQorICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBPcGVyYW5kIGJ1bmRsZXMgb3ZlcnJpZGUgYXR0cmlidXRlcyBvbiB0aGUgY2FsbGVkIGZ1bmN0aW9uLCBidXQgZG9uJ3QKKyAgICAvLyBvdmVycmlkZSBhdHRyaWJ1dGVzIGRpcmVjdGx5IHByZXNlbnQgb24gdGhlIGNhbGwgaW5zdHJ1Y3Rpb24uCisgICAgaWYgKGlzRm5BdHRyRGlzYWxsb3dlZEJ5T3BCdW5kbGUoS2luZCkpCisgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gaGFzRm5BdHRyT25DYWxsZWRGdW5jdGlvbihLaW5kKTsKKyAgfQogfTsKIAordGVtcGxhdGUgPD4KK3N0cnVjdCBPcGVyYW5kVHJhaXRzPENhbGxCYXNlPiA6IHB1YmxpYyBWYXJpYWRpY09wZXJhbmRUcmFpdHM8Q2FsbEJhc2UsIDE+IHt9OworCitERUZJTkVfVFJBTlNQQVJFTlRfT1BFUkFORF9BQ0NFU1NPUlMoQ2FsbEJhc2UsIFZhbHVlKQorCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jbGV0UGFkSW5zdCBDbGFzcworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KK2NsYXNzIEZ1bmNsZXRQYWRJbnN0IDogcHVibGljIEluc3RydWN0aW9uIHsKK3ByaXZhdGU6CisgIEZ1bmNsZXRQYWRJbnN0KGNvbnN0IEZ1bmNsZXRQYWRJbnN0ICZDUEkpOworCisgIGV4cGxpY2l0IEZ1bmNsZXRQYWRJbnN0KEluc3RydWN0aW9uOjpGdW5jbGV0UGFkT3BzIE9wLCBWYWx1ZSAqUGFyZW50UGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLCB1bnNpZ25lZCBWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlKTsKKyAgZXhwbGljaXQgRnVuY2xldFBhZEluc3QoSW5zdHJ1Y3Rpb246OkZ1bmNsZXRQYWRPcHMgT3AsIFZhbHVlICpQYXJlbnRQYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsIHVuc2lnbmVkIFZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIsIEJhc2ljQmxvY2sgKkluc2VydEF0RW5kKTsKKworICB2b2lkIGluaXQoVmFsdWUgKlBhcmVudFBhZCwgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywgY29uc3QgVHdpbmUgJk5hbWVTdHIpOworCitwcm90ZWN0ZWQ6CisgIC8vIE5vdGU6IEluc3RydWN0aW9uIG5lZWRzIHRvIGJlIGEgZnJpZW5kIGhlcmUgdG8gY2FsbCBjbG9uZUltcGwuCisgIGZyaWVuZCBjbGFzcyBJbnN0cnVjdGlvbjsKKyAgZnJpZW5kIGNsYXNzIENhdGNoUGFkSW5zdDsKKyAgZnJpZW5kIGNsYXNzIENsZWFudXBQYWRJbnN0OworCisgIEZ1bmNsZXRQYWRJbnN0ICpjbG9uZUltcGwoKSBjb25zdDsKKworcHVibGljOgorICAvLy8gUHJvdmlkZSBmYXN0IG9wZXJhbmQgYWNjZXNzb3JzCisgIERFQ0xBUkVfVFJBTlNQQVJFTlRfT1BFUkFORF9BQ0NFU1NPUlMoVmFsdWUpOworCisgIC8vLyBnZXROdW1BcmdPcGVyYW5kcyAtIFJldHVybiB0aGUgbnVtYmVyIG9mIGZ1bmNsZXRwYWQgYXJndW1lbnRzLgorICAvLy8KKyAgdW5zaWduZWQgZ2V0TnVtQXJnT3BlcmFuZHMoKSBjb25zdCB7IHJldHVybiBnZXROdW1PcGVyYW5kcygpIC0gMTsgfQorCisgIC8vLyBDb252ZW5pZW5jZSBhY2Nlc3NvcnMKKworICAvLy8gUmV0dXJuIHRoZSBvdXRlciBFSC1wYWQgdGhpcyBmdW5jbGV0IGlzIG5lc3RlZCB3aXRoaW4uCisgIC8vLworICAvLy8gTm90ZTogVGhpcyByZXR1cm5zIHRoZSBhc3NvY2lhdGVkIENhdGNoU3dpdGNoSW5zdCBpZiB0aGlzIEZ1bmNsZXRQYWRJbnN0CisgIC8vLyBpcyBhIENhdGNoUGFkSW5zdC4KKyAgVmFsdWUgKmdldFBhcmVudFBhZCgpIGNvbnN0IHsgcmV0dXJuIE9wPC0xPigpOyB9CisgIHZvaWQgc2V0UGFyZW50UGFkKFZhbHVlICpQYXJlbnRQYWQpIHsKKyAgICBhc3NlcnQoUGFyZW50UGFkKTsKKyAgICBPcDwtMT4oKSA9IFBhcmVudFBhZDsKKyAgfQorCisgIC8vLyBnZXRBcmdPcGVyYW5kL3NldEFyZ09wZXJhbmQgLSBSZXR1cm4vc2V0IHRoZSBpLXRoIGZ1bmNsZXRwYWQgYXJndW1lbnQuCisgIC8vLworICBWYWx1ZSAqZ2V0QXJnT3BlcmFuZCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBnZXRPcGVyYW5kKGkpOyB9CisgIHZvaWQgc2V0QXJnT3BlcmFuZCh1bnNpZ25lZCBpLCBWYWx1ZSAqdikgeyBzZXRPcGVyYW5kKGksIHYpOyB9CisKKyAgLy8vIGFyZ19vcGVyYW5kcyAtIGl0ZXJhdGlvbiBhZGFwdGVyIGZvciByYW5nZS1mb3IgbG9vcHMuCisgIG9wX3JhbmdlIGFyZ19vcGVyYW5kcygpIHsgcmV0dXJuIG9wX3JhbmdlKG9wX2JlZ2luKCksIG9wX2VuZCgpIC0gMSk7IH0KKworICAvLy8gYXJnX29wZXJhbmRzIC0gaXRlcmF0aW9uIGFkYXB0ZXIgZm9yIHJhbmdlLWZvciBsb29wcy4KKyAgY29uc3Rfb3BfcmFuZ2UgYXJnX29wZXJhbmRzKCkgY29uc3QgeworICAgIHJldHVybiBjb25zdF9vcF9yYW5nZShvcF9iZWdpbigpLCBvcF9lbmQoKSAtIDEpOworICB9CisKKyAgLy8gTWV0aG9kcyBmb3Igc3VwcG9ydCB0eXBlIGlucXVpcnkgdGhyb3VnaCBpc2EsIGNhc3QsIGFuZCBkeW5fY2FzdDoKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBJbnN0cnVjdGlvbiAqSSkgeyByZXR1cm4gSS0+aXNGdW5jbGV0UGFkKCk7IH0KKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBWYWx1ZSAqVikgeworICAgIHJldHVybiBpc2E8SW5zdHJ1Y3Rpb24+KFYpICYmIGNsYXNzb2YoY2FzdDxJbnN0cnVjdGlvbj4oVikpOworICB9Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IE9wZXJhbmRUcmFpdHM8RnVuY2xldFBhZEluc3Q+CisgICAgOiBwdWJsaWMgVmFyaWFkaWNPcGVyYW5kVHJhaXRzPEZ1bmNsZXRQYWRJbnN0LCAvKk1JTkFSSVRZPSovMT4ge307CisKK0RFRklORV9UUkFOU1BBUkVOVF9PUEVSQU5EX0FDQ0VTU09SUyhGdW5jbGV0UGFkSW5zdCwgVmFsdWUpCisKIH0gLy8gZW5kIG5hbWVzcGFjZSBsbHZtCiAKICNlbmRpZiAvLyBMTFZNX0lSX0lOU1RSVFlQRVNfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnN0cnVjdGlvbi5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0luc3RydWN0aW9uLmRlZgppbmRleCA4NjYxNzI5Li40MWNkZjYxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0luc3RydWN0aW9uLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0luc3RydWN0aW9uLmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9JbnN0cnVjdGlvbi5kZWYgLSBGaWxlIHRoYXQgZGVzY3JpYmVzIEluc3RydWN0aW9ucyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzIsNiArMzEsMjAgQEAKICNkZWZpbmUgTEFTVF9URVJNX0lOU1QobnVtKQogI2VuZGlmCiAKKyNpZm5kZWYgRklSU1RfVU5BUllfSU5TVAorI2RlZmluZSBGSVJTVF9VTkFSWV9JTlNUKG51bSkKKyNlbmRpZgorI2lmbmRlZiBIQU5ETEVfVU5BUllfSU5TVAorI2lmbmRlZiBIQU5ETEVfSU5TVAorI2RlZmluZSBIQU5ETEVfVU5BUllfSU5TVChudW0sIG9wY29kZSwgaW5zdGNsYXNzKQorI2Vsc2UKKyNkZWZpbmUgSEFORExFX1VOQVJZX0lOU1QobnVtLCBvcGNvZGUsIENsYXNzKSBIQU5ETEVfSU5TVChudW0sIG9wY29kZSwgQ2xhc3MpCisjZW5kaWYKKyNlbmRpZgorI2lmbmRlZiBMQVNUX1VOQVJZX0lOU1QKKyNkZWZpbmUgTEFTVF9VTkFSWV9JTlNUKG51bSkKKyNlbmRpZgorCiAjaWZuZGVmIEZJUlNUX0JJTkFSWV9JTlNUCiAjZGVmaW5lIEZJUlNUX0JJTkFSWV9JTlNUKG51bSkKICNlbmRpZgpAQCAtMTIxLDg5ICsxMzQsOTkgQEAKIEhBTkRMRV9URVJNX0lOU1QgICggOCwgQ2xlYW51cFJldCAgICAsIENsZWFudXBSZXR1cm5JbnN0KQogSEFORExFX1RFUk1fSU5TVCAgKCA5LCBDYXRjaFJldCAgICAgICwgQ2F0Y2hSZXR1cm5JbnN0KQogSEFORExFX1RFUk1fSU5TVCAgKDEwLCBDYXRjaFN3aXRjaCAgICwgQ2F0Y2hTd2l0Y2hJbnN0KQotICBMQVNUX1RFUk1fSU5TVCAgKDEwKQorSEFORExFX1RFUk1fSU5TVCAgKDExLCBDYWxsQnIgICAgICAgICwgQ2FsbEJySW5zdCkgLy8gQSBjYWxsLXNpdGUgdGVybWluYXRvcgorICBMQVNUX1RFUk1fSU5TVCAgKDExKQorCisvLyBTdGFuZGFyZCB1bmFyeSBvcGVyYXRvcnMuLi4KKyBGSVJTVF9VTkFSWV9JTlNUKDEyKQorSEFORExFX1VOQVJZX0lOU1QoMTIsIEZOZWcgICwgVW5hcnlPcGVyYXRvcikKKyAgTEFTVF9VTkFSWV9JTlNUKDEyKQogCiAvLyBTdGFuZGFyZCBiaW5hcnkgb3BlcmF0b3JzLi4uCi0gRklSU1RfQklOQVJZX0lOU1QoMTEpCi1IQU5ETEVfQklOQVJZX0lOU1QoMTEsIEFkZCAgLCBCaW5hcnlPcGVyYXRvcikKLUhBTkRMRV9CSU5BUllfSU5TVCgxMiwgRkFkZCAsIEJpbmFyeU9wZXJhdG9yKQotSEFORExFX0JJTkFSWV9JTlNUKDEzLCBTdWIgICwgQmluYXJ5T3BlcmF0b3IpCi1IQU5ETEVfQklOQVJZX0lOU1QoMTQsIEZTdWIgLCBCaW5hcnlPcGVyYXRvcikKLUhBTkRMRV9CSU5BUllfSU5TVCgxNSwgTXVsICAsIEJpbmFyeU9wZXJhdG9yKQotSEFORExFX0JJTkFSWV9JTlNUKDE2LCBGTXVsICwgQmluYXJ5T3BlcmF0b3IpCi1IQU5ETEVfQklOQVJZX0lOU1QoMTcsIFVEaXYgLCBCaW5hcnlPcGVyYXRvcikKLUhBTkRMRV9CSU5BUllfSU5TVCgxOCwgU0RpdiAsIEJpbmFyeU9wZXJhdG9yKQotSEFORExFX0JJTkFSWV9JTlNUKDE5LCBGRGl2ICwgQmluYXJ5T3BlcmF0b3IpCi1IQU5ETEVfQklOQVJZX0lOU1QoMjAsIFVSZW0gLCBCaW5hcnlPcGVyYXRvcikKLUhBTkRMRV9CSU5BUllfSU5TVCgyMSwgU1JlbSAsIEJpbmFyeU9wZXJhdG9yKQotSEFORExFX0JJTkFSWV9JTlNUKDIyLCBGUmVtICwgQmluYXJ5T3BlcmF0b3IpCisgRklSU1RfQklOQVJZX0lOU1QoMTMpCitIQU5ETEVfQklOQVJZX0lOU1QoMTMsIEFkZCAgLCBCaW5hcnlPcGVyYXRvcikKK0hBTkRMRV9CSU5BUllfSU5TVCgxNCwgRkFkZCAsIEJpbmFyeU9wZXJhdG9yKQorSEFORExFX0JJTkFSWV9JTlNUKDE1LCBTdWIgICwgQmluYXJ5T3BlcmF0b3IpCitIQU5ETEVfQklOQVJZX0lOU1QoMTYsIEZTdWIgLCBCaW5hcnlPcGVyYXRvcikKK0hBTkRMRV9CSU5BUllfSU5TVCgxNywgTXVsICAsIEJpbmFyeU9wZXJhdG9yKQorSEFORExFX0JJTkFSWV9JTlNUKDE4LCBGTXVsICwgQmluYXJ5T3BlcmF0b3IpCitIQU5ETEVfQklOQVJZX0lOU1QoMTksIFVEaXYgLCBCaW5hcnlPcGVyYXRvcikKK0hBTkRMRV9CSU5BUllfSU5TVCgyMCwgU0RpdiAsIEJpbmFyeU9wZXJhdG9yKQorSEFORExFX0JJTkFSWV9JTlNUKDIxLCBGRGl2ICwgQmluYXJ5T3BlcmF0b3IpCitIQU5ETEVfQklOQVJZX0lOU1QoMjIsIFVSZW0gLCBCaW5hcnlPcGVyYXRvcikKK0hBTkRMRV9CSU5BUllfSU5TVCgyMywgU1JlbSAsIEJpbmFyeU9wZXJhdG9yKQorSEFORExFX0JJTkFSWV9JTlNUKDI0LCBGUmVtICwgQmluYXJ5T3BlcmF0b3IpCiAKIC8vIExvZ2ljYWwgb3BlcmF0b3JzIChpbnRlZ2VyIG9wZXJhbmRzKQotSEFORExFX0JJTkFSWV9JTlNUKDIzLCBTaGwgICwgQmluYXJ5T3BlcmF0b3IpIC8vIFNoaWZ0IGxlZnQgIChsb2dpY2FsKQotSEFORExFX0JJTkFSWV9JTlNUKDI0LCBMU2hyICwgQmluYXJ5T3BlcmF0b3IpIC8vIFNoaWZ0IHJpZ2h0IChsb2dpY2FsKQotSEFORExFX0JJTkFSWV9JTlNUKDI1LCBBU2hyICwgQmluYXJ5T3BlcmF0b3IpIC8vIFNoaWZ0IHJpZ2h0IChhcml0aG1ldGljKQotSEFORExFX0JJTkFSWV9JTlNUKDI2LCBBbmQgICwgQmluYXJ5T3BlcmF0b3IpCi1IQU5ETEVfQklOQVJZX0lOU1QoMjcsIE9yICAgLCBCaW5hcnlPcGVyYXRvcikKLUhBTkRMRV9CSU5BUllfSU5TVCgyOCwgWG9yICAsIEJpbmFyeU9wZXJhdG9yKQotICBMQVNUX0JJTkFSWV9JTlNUKDI4KQorSEFORExFX0JJTkFSWV9JTlNUKDI1LCBTaGwgICwgQmluYXJ5T3BlcmF0b3IpIC8vIFNoaWZ0IGxlZnQgIChsb2dpY2FsKQorSEFORExFX0JJTkFSWV9JTlNUKDI2LCBMU2hyICwgQmluYXJ5T3BlcmF0b3IpIC8vIFNoaWZ0IHJpZ2h0IChsb2dpY2FsKQorSEFORExFX0JJTkFSWV9JTlNUKDI3LCBBU2hyICwgQmluYXJ5T3BlcmF0b3IpIC8vIFNoaWZ0IHJpZ2h0IChhcml0aG1ldGljKQorSEFORExFX0JJTkFSWV9JTlNUKDI4LCBBbmQgICwgQmluYXJ5T3BlcmF0b3IpCitIQU5ETEVfQklOQVJZX0lOU1QoMjksIE9yICAgLCBCaW5hcnlPcGVyYXRvcikKK0hBTkRMRV9CSU5BUllfSU5TVCgzMCwgWG9yICAsIEJpbmFyeU9wZXJhdG9yKQorICBMQVNUX0JJTkFSWV9JTlNUKDMwKQogCiAvLyBNZW1vcnkgb3BlcmF0b3JzLi4uCi0gRklSU1RfTUVNT1JZX0lOU1QoMjkpCi1IQU5ETEVfTUVNT1JZX0lOU1QoMjksIEFsbG9jYSwgQWxsb2NhSW5zdCkgIC8vIFN0YWNrIG1hbmFnZW1lbnQKLUhBTkRMRV9NRU1PUllfSU5TVCgzMCwgTG9hZCAgLCBMb2FkSW5zdCAgKSAgLy8gTWVtb3J5IG1hbmlwdWxhdGlvbiBpbnN0cnMKLUhBTkRMRV9NRU1PUllfSU5TVCgzMSwgU3RvcmUgLCBTdG9yZUluc3QgKQotSEFORExFX01FTU9SWV9JTlNUKDMyLCBHZXRFbGVtZW50UHRyLCBHZXRFbGVtZW50UHRySW5zdCkKLUhBTkRMRV9NRU1PUllfSU5TVCgzMywgRmVuY2UgLCBGZW5jZUluc3QgKQotSEFORExFX01FTU9SWV9JTlNUKDM0LCBBdG9taWNDbXBYY2hnICwgQXRvbWljQ21wWGNoZ0luc3QgKQotSEFORExFX01FTU9SWV9JTlNUKDM1LCBBdG9taWNSTVcgLCBBdG9taWNSTVdJbnN0ICkKLSAgTEFTVF9NRU1PUllfSU5TVCgzNSkKKyBGSVJTVF9NRU1PUllfSU5TVCgzMSkKK0hBTkRMRV9NRU1PUllfSU5TVCgzMSwgQWxsb2NhLCBBbGxvY2FJbnN0KSAgLy8gU3RhY2sgbWFuYWdlbWVudAorSEFORExFX01FTU9SWV9JTlNUKDMyLCBMb2FkICAsIExvYWRJbnN0ICApICAvLyBNZW1vcnkgbWFuaXB1bGF0aW9uIGluc3RycworSEFORExFX01FTU9SWV9JTlNUKDMzLCBTdG9yZSAsIFN0b3JlSW5zdCApCitIQU5ETEVfTUVNT1JZX0lOU1QoMzQsIEdldEVsZW1lbnRQdHIsIEdldEVsZW1lbnRQdHJJbnN0KQorSEFORExFX01FTU9SWV9JTlNUKDM1LCBGZW5jZSAsIEZlbmNlSW5zdCApCitIQU5ETEVfTUVNT1JZX0lOU1QoMzYsIEF0b21pY0NtcFhjaGcgLCBBdG9taWNDbXBYY2hnSW5zdCApCitIQU5ETEVfTUVNT1JZX0lOU1QoMzcsIEF0b21pY1JNVyAsIEF0b21pY1JNV0luc3QgKQorICBMQVNUX01FTU9SWV9JTlNUKDM3KQogCiAvLyBDYXN0IG9wZXJhdG9ycyAuLi4KIC8vIE5PVEU6IFRoZSBvcmRlciBtYXR0ZXJzIGhlcmUgYmVjYXVzZSBDYXN0SW5zdDo6aXNFbGltaW5hYmxlQ2FzdFBhaXIKIC8vIE5PVEU6IChzZWUgSW5zdHJ1Y3Rpb25zLmNwcCkgZW5jb2RlcyBhIHRhYmxlIGJhc2VkIG9uIHRoaXMgb3JkZXJpbmcuCi0gRklSU1RfQ0FTVF9JTlNUKDM2KQotSEFORExFX0NBU1RfSU5TVCgzNiwgVHJ1bmMgICAsIFRydW5jSW5zdCAgICkgIC8vIFRydW5jYXRlIGludGVnZXJzCi1IQU5ETEVfQ0FTVF9JTlNUKDM3LCBaRXh0ICAgICwgWkV4dEluc3QgICAgKSAgLy8gWmVybyBleHRlbmQgaW50ZWdlcnMKLUhBTkRMRV9DQVNUX0lOU1QoMzgsIFNFeHQgICAgLCBTRXh0SW5zdCAgICApICAvLyBTaWduIGV4dGVuZCBpbnRlZ2VycwotSEFORExFX0NBU1RfSU5TVCgzOSwgRlBUb1VJICAsIEZQVG9VSUluc3QgICkgIC8vIGZsb2F0aW5nIHBvaW50IC0+IFVJbnQKLUhBTkRMRV9DQVNUX0lOU1QoNDAsIEZQVG9TSSAgLCBGUFRvU0lJbnN0ICApICAvLyBmbG9hdGluZyBwb2ludCAtPiBTSW50Ci1IQU5ETEVfQ0FTVF9JTlNUKDQxLCBVSVRvRlAgICwgVUlUb0ZQSW5zdCAgKSAgLy8gVUludCAtPiBmbG9hdGluZyBwb2ludAotSEFORExFX0NBU1RfSU5TVCg0MiwgU0lUb0ZQICAsIFNJVG9GUEluc3QgICkgIC8vIFNJbnQgLT4gZmxvYXRpbmcgcG9pbnQKLUhBTkRMRV9DQVNUX0lOU1QoNDMsIEZQVHJ1bmMgLCBGUFRydW5jSW5zdCApICAvLyBUcnVuY2F0ZSBmbG9hdGluZyBwb2ludAotSEFORExFX0NBU1RfSU5TVCg0NCwgRlBFeHQgICAsIEZQRXh0SW5zdCAgICkgIC8vIEV4dGVuZCBmbG9hdGluZyBwb2ludAotSEFORExFX0NBU1RfSU5TVCg0NSwgUHRyVG9JbnQsIFB0clRvSW50SW5zdCkgIC8vIFBvaW50ZXIgLT4gSW50ZWdlcgotSEFORExFX0NBU1RfSU5TVCg0NiwgSW50VG9QdHIsIEludFRvUHRySW5zdCkgIC8vIEludGVnZXIgLT4gUG9pbnRlcgotSEFORExFX0NBU1RfSU5TVCg0NywgQml0Q2FzdCAsIEJpdENhc3RJbnN0ICkgIC8vIFR5cGUgY2FzdAotSEFORExFX0NBU1RfSU5TVCg0OCwgQWRkclNwYWNlQ2FzdCwgQWRkclNwYWNlQ2FzdEluc3QpICAvLyBhZGRyc3BhY2UgY2FzdAotICBMQVNUX0NBU1RfSU5TVCg0OCkKKyBGSVJTVF9DQVNUX0lOU1QoMzgpCitIQU5ETEVfQ0FTVF9JTlNUKDM4LCBUcnVuYyAgICwgVHJ1bmNJbnN0ICAgKSAgLy8gVHJ1bmNhdGUgaW50ZWdlcnMKK0hBTkRMRV9DQVNUX0lOU1QoMzksIFpFeHQgICAgLCBaRXh0SW5zdCAgICApICAvLyBaZXJvIGV4dGVuZCBpbnRlZ2VycworSEFORExFX0NBU1RfSU5TVCg0MCwgU0V4dCAgICAsIFNFeHRJbnN0ICAgICkgIC8vIFNpZ24gZXh0ZW5kIGludGVnZXJzCitIQU5ETEVfQ0FTVF9JTlNUKDQxLCBGUFRvVUkgICwgRlBUb1VJSW5zdCAgKSAgLy8gZmxvYXRpbmcgcG9pbnQgLT4gVUludAorSEFORExFX0NBU1RfSU5TVCg0MiwgRlBUb1NJICAsIEZQVG9TSUluc3QgICkgIC8vIGZsb2F0aW5nIHBvaW50IC0+IFNJbnQKK0hBTkRMRV9DQVNUX0lOU1QoNDMsIFVJVG9GUCAgLCBVSVRvRlBJbnN0ICApICAvLyBVSW50IC0+IGZsb2F0aW5nIHBvaW50CitIQU5ETEVfQ0FTVF9JTlNUKDQ0LCBTSVRvRlAgICwgU0lUb0ZQSW5zdCAgKSAgLy8gU0ludCAtPiBmbG9hdGluZyBwb2ludAorSEFORExFX0NBU1RfSU5TVCg0NSwgRlBUcnVuYyAsIEZQVHJ1bmNJbnN0ICkgIC8vIFRydW5jYXRlIGZsb2F0aW5nIHBvaW50CitIQU5ETEVfQ0FTVF9JTlNUKDQ2LCBGUEV4dCAgICwgRlBFeHRJbnN0ICAgKSAgLy8gRXh0ZW5kIGZsb2F0aW5nIHBvaW50CitIQU5ETEVfQ0FTVF9JTlNUKDQ3LCBQdHJUb0ludCwgUHRyVG9JbnRJbnN0KSAgLy8gUG9pbnRlciAtPiBJbnRlZ2VyCitIQU5ETEVfQ0FTVF9JTlNUKDQ4LCBJbnRUb1B0ciwgSW50VG9QdHJJbnN0KSAgLy8gSW50ZWdlciAtPiBQb2ludGVyCitIQU5ETEVfQ0FTVF9JTlNUKDQ5LCBCaXRDYXN0ICwgQml0Q2FzdEluc3QgKSAgLy8gVHlwZSBjYXN0CitIQU5ETEVfQ0FTVF9JTlNUKDUwLCBBZGRyU3BhY2VDYXN0LCBBZGRyU3BhY2VDYXN0SW5zdCkgIC8vIGFkZHJzcGFjZSBjYXN0CisgIExBU1RfQ0FTVF9JTlNUKDUwKQogCi0gRklSU1RfRlVOQ0xFVFBBRF9JTlNUKDQ5KQotSEFORExFX0ZVTkNMRVRQQURfSU5TVCg0OSwgQ2xlYW51cFBhZCwgQ2xlYW51cFBhZEluc3QpCi1IQU5ETEVfRlVOQ0xFVFBBRF9JTlNUKDUwLCBDYXRjaFBhZCAgLCBDYXRjaFBhZEluc3QpCi0gIExBU1RfRlVOQ0xFVFBBRF9JTlNUKDUwKQorIEZJUlNUX0ZVTkNMRVRQQURfSU5TVCg1MSkKK0hBTkRMRV9GVU5DTEVUUEFEX0lOU1QoNTEsIENsZWFudXBQYWQsIENsZWFudXBQYWRJbnN0KQorSEFORExFX0ZVTkNMRVRQQURfSU5TVCg1MiwgQ2F0Y2hQYWQgICwgQ2F0Y2hQYWRJbnN0KQorICBMQVNUX0ZVTkNMRVRQQURfSU5TVCg1MikKIAogLy8gT3RoZXIgb3BlcmF0b3JzLi4uCi0gRklSU1RfT1RIRVJfSU5TVCg1MSkKLUhBTkRMRV9PVEhFUl9JTlNUKDUxLCBJQ21wICAgLCBJQ21wSW5zdCAgICkgIC8vIEludGVnZXIgY29tcGFyaXNvbiBpbnN0cnVjdGlvbgotSEFORExFX09USEVSX0lOU1QoNTIsIEZDbXAgICAsIEZDbXBJbnN0ICAgKSAgLy8gRmxvYXRpbmcgcG9pbnQgY29tcGFyaXNvbiBpbnN0ci4KLUhBTkRMRV9PVEhFUl9JTlNUKDUzLCBQSEkgICAgLCBQSElOb2RlICAgICkgIC8vIFBISSBub2RlIGluc3RydWN0aW9uCi1IQU5ETEVfT1RIRVJfSU5TVCg1NCwgQ2FsbCAgICwgQ2FsbEluc3QgICApICAvLyBDYWxsIGEgZnVuY3Rpb24KLUhBTkRMRV9PVEhFUl9JTlNUKDU1LCBTZWxlY3QgLCBTZWxlY3RJbnN0ICkgIC8vIHNlbGVjdCBpbnN0cnVjdGlvbgotSEFORExFX1VTRVJfSU5TVCAoNTYsIFVzZXJPcDEsIEluc3RydWN0aW9uKSAgLy8gTWF5IGJlIHVzZWQgaW50ZXJuYWxseSBpbiBhIHBhc3MKLUhBTkRMRV9VU0VSX0lOU1QgKDU3LCBVc2VyT3AyLCBJbnN0cnVjdGlvbikgIC8vIEludGVybmFsIHRvIHBhc3NlcyBvbmx5Ci1IQU5ETEVfT1RIRVJfSU5TVCg1OCwgVkFBcmcgICwgVkFBcmdJbnN0ICApICAvLyB2YWFyZyBpbnN0cnVjdGlvbgotSEFORExFX09USEVSX0lOU1QoNTksIEV4dHJhY3RFbGVtZW50LCBFeHRyYWN0RWxlbWVudEluc3QpLy8gZXh0cmFjdCBmcm9tIHZlY3RvcgotSEFORExFX09USEVSX0lOU1QoNjAsIEluc2VydEVsZW1lbnQsIEluc2VydEVsZW1lbnRJbnN0KSAgLy8gaW5zZXJ0IGludG8gdmVjdG9yCi1IQU5ETEVfT1RIRVJfSU5TVCg2MSwgU2h1ZmZsZVZlY3RvciwgU2h1ZmZsZVZlY3Rvckluc3QpICAvLyBzaHVmZmxlIHR3byB2ZWN0b3JzLgotSEFORExFX09USEVSX0lOU1QoNjIsIEV4dHJhY3RWYWx1ZSwgRXh0cmFjdFZhbHVlSW5zdCkvLyBleHRyYWN0IGZyb20gYWdncmVnYXRlCi1IQU5ETEVfT1RIRVJfSU5TVCg2MywgSW5zZXJ0VmFsdWUsIEluc2VydFZhbHVlSW5zdCkgIC8vIGluc2VydCBpbnRvIGFnZ3JlZ2F0ZQotSEFORExFX09USEVSX0lOU1QoNjQsIExhbmRpbmdQYWQsIExhbmRpbmdQYWRJbnN0KSAgLy8gTGFuZGluZyBwYWQgaW5zdHJ1Y3Rpb24uCi0gIExBU1RfT1RIRVJfSU5TVCg2NCkKKyBGSVJTVF9PVEhFUl9JTlNUKDUzKQorSEFORExFX09USEVSX0lOU1QoNTMsIElDbXAgICAsIElDbXBJbnN0ICAgKSAgLy8gSW50ZWdlciBjb21wYXJpc29uIGluc3RydWN0aW9uCitIQU5ETEVfT1RIRVJfSU5TVCg1NCwgRkNtcCAgICwgRkNtcEluc3QgICApICAvLyBGbG9hdGluZyBwb2ludCBjb21wYXJpc29uIGluc3RyLgorSEFORExFX09USEVSX0lOU1QoNTUsIFBISSAgICAsIFBISU5vZGUgICAgKSAgLy8gUEhJIG5vZGUgaW5zdHJ1Y3Rpb24KK0hBTkRMRV9PVEhFUl9JTlNUKDU2LCBDYWxsICAgLCBDYWxsSW5zdCAgICkgIC8vIENhbGwgYSBmdW5jdGlvbgorSEFORExFX09USEVSX0lOU1QoNTcsIFNlbGVjdCAsIFNlbGVjdEluc3QgKSAgLy8gc2VsZWN0IGluc3RydWN0aW9uCitIQU5ETEVfVVNFUl9JTlNUICg1OCwgVXNlck9wMSwgSW5zdHJ1Y3Rpb24pICAvLyBNYXkgYmUgdXNlZCBpbnRlcm5hbGx5IGluIGEgcGFzcworSEFORExFX1VTRVJfSU5TVCAoNTksIFVzZXJPcDIsIEluc3RydWN0aW9uKSAgLy8gSW50ZXJuYWwgdG8gcGFzc2VzIG9ubHkKK0hBTkRMRV9PVEhFUl9JTlNUKDYwLCBWQUFyZyAgLCBWQUFyZ0luc3QgICkgIC8vIHZhYXJnIGluc3RydWN0aW9uCitIQU5ETEVfT1RIRVJfSU5TVCg2MSwgRXh0cmFjdEVsZW1lbnQsIEV4dHJhY3RFbGVtZW50SW5zdCkvLyBleHRyYWN0IGZyb20gdmVjdG9yCitIQU5ETEVfT1RIRVJfSU5TVCg2MiwgSW5zZXJ0RWxlbWVudCwgSW5zZXJ0RWxlbWVudEluc3QpICAvLyBpbnNlcnQgaW50byB2ZWN0b3IKK0hBTkRMRV9PVEhFUl9JTlNUKDYzLCBTaHVmZmxlVmVjdG9yLCBTaHVmZmxlVmVjdG9ySW5zdCkgIC8vIHNodWZmbGUgdHdvIHZlY3RvcnMuCitIQU5ETEVfT1RIRVJfSU5TVCg2NCwgRXh0cmFjdFZhbHVlLCBFeHRyYWN0VmFsdWVJbnN0KS8vIGV4dHJhY3QgZnJvbSBhZ2dyZWdhdGUKK0hBTkRMRV9PVEhFUl9JTlNUKDY1LCBJbnNlcnRWYWx1ZSwgSW5zZXJ0VmFsdWVJbnN0KSAgLy8gaW5zZXJ0IGludG8gYWdncmVnYXRlCitIQU5ETEVfT1RIRVJfSU5TVCg2NiwgTGFuZGluZ1BhZCwgTGFuZGluZ1BhZEluc3QpICAvLyBMYW5kaW5nIHBhZCBpbnN0cnVjdGlvbi4KKyAgTEFTVF9PVEhFUl9JTlNUKDY2KQogCiAjdW5kZWYgIEZJUlNUX1RFUk1fSU5TVAogI3VuZGVmIEhBTkRMRV9URVJNX0lOU1QKICN1bmRlZiAgIExBU1RfVEVSTV9JTlNUCiAKKyN1bmRlZiAgRklSU1RfVU5BUllfSU5TVAorI3VuZGVmIEhBTkRMRV9VTkFSWV9JTlNUCisjdW5kZWYgICBMQVNUX1VOQVJZX0lOU1QKKwogI3VuZGVmICBGSVJTVF9CSU5BUllfSU5TVAogI3VuZGVmIEhBTkRMRV9CSU5BUllfSU5TVAogI3VuZGVmICAgTEFTVF9CSU5BUllfSU5TVApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnN0cnVjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnN0cnVjdGlvbi5oCmluZGV4IDJhNzU4MDEuLmI5NDBkMTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW5zdHJ1Y3Rpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0luc3RydWN0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vSW5zdHJ1Y3Rpb24uaCAtIEluc3RydWN0aW9uIGNsYXNzIGRlZmluaXRpb24gLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTEyNyw2ICsxMjYsNyBAQAogCiAgIGNvbnN0IGNoYXIgKmdldE9wY29kZU5hbWUoKSBjb25zdCB7IHJldHVybiBnZXRPcGNvZGVOYW1lKGdldE9wY29kZSgpKTsgfQogICBib29sIGlzVGVybWluYXRvcigpIGNvbnN0IHsgcmV0dXJuIGlzVGVybWluYXRvcihnZXRPcGNvZGUoKSk7IH0KKyAgYm9vbCBpc1VuYXJ5T3AoKSBjb25zdCB7IHJldHVybiBpc1VuYXJ5T3AoZ2V0T3Bjb2RlKCkpOyB9CiAgIGJvb2wgaXNCaW5hcnlPcCgpIGNvbnN0IHsgcmV0dXJuIGlzQmluYXJ5T3AoZ2V0T3Bjb2RlKCkpOyB9CiAgIGJvb2wgaXNJbnREaXZSZW0oKSBjb25zdCB7IHJldHVybiBpc0ludERpdlJlbShnZXRPcGNvZGUoKSk7IH0KICAgYm9vbCBpc1NoaWZ0KCkgeyByZXR1cm4gaXNTaGlmdChnZXRPcGNvZGUoKSk7IH0KQEAgLTEzNSw2ICsxMzUsOSBAQAogICBib29sIGlzRXhjZXB0aW9uYWxUZXJtaW5hdG9yKCkgY29uc3QgewogICAgIHJldHVybiBpc0V4Y2VwdGlvbmFsVGVybWluYXRvcihnZXRPcGNvZGUoKSk7CiAgIH0KKyAgYm9vbCBpc0luZGlyZWN0VGVybWluYXRvcigpIGNvbnN0IHsKKyAgICByZXR1cm4gaXNJbmRpcmVjdFRlcm1pbmF0b3IoZ2V0T3Bjb2RlKCkpOworICB9CiAKICAgc3RhdGljIGNvbnN0IGNoYXIqIGdldE9wY29kZU5hbWUodW5zaWduZWQgT3BDb2RlKTsKIApAQCAtMTQyLDYgKzE0NSw5IEBACiAgICAgcmV0dXJuIE9wQ29kZSA+PSBUZXJtT3BzQmVnaW4gJiYgT3BDb2RlIDwgVGVybU9wc0VuZDsKICAgfQogCisgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1VuYXJ5T3AodW5zaWduZWQgT3Bjb2RlKSB7CisgICAgcmV0dXJuIE9wY29kZSA+PSBVbmFyeU9wc0JlZ2luICYmIE9wY29kZSA8IFVuYXJ5T3BzRW5kOworICB9CiAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0JpbmFyeU9wKHVuc2lnbmVkIE9wY29kZSkgewogICAgIHJldHVybiBPcGNvZGUgPj0gQmluYXJ5T3BzQmVnaW4gJiYgT3Bjb2RlIDwgQmluYXJ5T3BzRW5kOwogICB9CkBAIC0xOTksNiArMjA1LDE3IEBACiAgICAgfQogICB9CiAKKyAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgT3BDb2RlIGlzIGEgdGVybWluYXRvciB3aXRoIGluZGlyZWN0IHRhcmdldHMuCisgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0luZGlyZWN0VGVybWluYXRvcih1bnNpZ25lZCBPcENvZGUpIHsKKyAgICBzd2l0Y2ggKE9wQ29kZSkgeworICAgIGNhc2UgSW5zdHJ1Y3Rpb246OkluZGlyZWN0QnI6CisgICAgY2FzZSBJbnN0cnVjdGlvbjo6Q2FsbEJyOgorICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKwogICAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KICAgLy8gTWV0YWRhdGEgbWFuaXB1bGF0aW9uLgogICAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KQEAgLTU3OCw2ICs1OTUsMTAgQEAKICAgICB9CiAgIH0KIAorICAvLy8gUmV0dXJuIHRydWUgaWYgdGhlIGluc3RydWN0aW9uIGlzIGEgbGx2bS5saWZldGltZS5zdGFydCBvcgorICAvLy8gbGx2bS5saWZldGltZS5lbmQgbWFya2VyLgorICBib29sIGlzTGlmZXRpbWVTdGFydE9yRW5kKCkgY29uc3Q7CisKICAgLy8vIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIG5leHQgbm9uLWRlYnVnIGluc3RydWN0aW9uIGluIHRoZSBzYW1lIGJhc2ljCiAgIC8vLyBibG9jayBhcyAndGhpcycsIG9yIG51bGxwdHIgaWYgbm8gc3VjaCBpbnN0cnVjdGlvbiBleGlzdHMuCiAgIGNvbnN0IEluc3RydWN0aW9uICpnZXROZXh0Tm9uRGVidWdJbnN0cnVjdGlvbigpIGNvbnN0OwpAQCAtNTg2LDYgKzYwNywxNCBAQAogICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBJbnN0cnVjdGlvbiAqPih0aGlzKS0+Z2V0TmV4dE5vbkRlYnVnSW5zdHJ1Y3Rpb24oKSk7CiAgIH0KIAorICAvLy8gUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgcHJldmlvdXMgbm9uLWRlYnVnIGluc3RydWN0aW9uIGluIHRoZSBzYW1lIGJhc2ljCisgIC8vLyBibG9jayBhcyAndGhpcycsIG9yIG51bGxwdHIgaWYgbm8gc3VjaCBpbnN0cnVjdGlvbiBleGlzdHMuCisgIGNvbnN0IEluc3RydWN0aW9uICpnZXRQcmV2Tm9uRGVidWdJbnN0cnVjdGlvbigpIGNvbnN0OworICBJbnN0cnVjdGlvbiAqZ2V0UHJldk5vbkRlYnVnSW5zdHJ1Y3Rpb24oKSB7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8SW5zdHJ1Y3Rpb24gKj4oCisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEluc3RydWN0aW9uICo+KHRoaXMpLT5nZXRQcmV2Tm9uRGVidWdJbnN0cnVjdGlvbigpKTsKKyAgfQorCiAgIC8vLyBDcmVhdGUgYSBjb3B5IG9mICd0aGlzJyBpbnN0cnVjdGlvbiB0aGF0IGlzIGlkZW50aWNhbCBpbiBhbGwgd2F5cyBleGNlcHQKICAgLy8vIHRoZSBmb2xsb3dpbmc6CiAgIC8vLyAgICogVGhlIGluc3RydWN0aW9uIGhhcyBubyBwYXJlbnQKQEAgLTY1NCw2ICs2ODMsMTMgQEAKICNpbmNsdWRlICJsbHZtL0lSL0luc3RydWN0aW9uLmRlZiIKICAgfTsKIAorICBlbnVtIFVuYXJ5T3BzIHsKKyNkZWZpbmUgIEZJUlNUX1VOQVJZX0lOU1QoTikgICAgICAgICAgICAgVW5hcnlPcHNCZWdpbiA9IE4sCisjZGVmaW5lIEhBTkRMRV9VTkFSWV9JTlNUKE4sIE9QQywgQ0xBU1MpIE9QQyA9IE4sCisjZGVmaW5lICAgTEFTVF9VTkFSWV9JTlNUKE4pICAgICAgICAgICAgIFVuYXJ5T3BzRW5kID0gTisxCisjaW5jbHVkZSAibGx2bS9JUi9JbnN0cnVjdGlvbi5kZWYiCisgIH07CisKICAgZW51bSBCaW5hcnlPcHMgewogI2RlZmluZSAgRklSU1RfQklOQVJZX0lOU1QoTikgICAgICAgICAgICAgQmluYXJ5T3BzQmVnaW4gPSBOLAogI2RlZmluZSBIQU5ETEVfQklOQVJZX0lOU1QoTiwgT1BDLCBDTEFTUykgT1BDID0gTiwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW5zdHJ1Y3Rpb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0luc3RydWN0aW9ucy5oCmluZGV4IDhiZGM5MzUuLmE4MmNlZGEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW5zdHJ1Y3Rpb25zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnN0cnVjdGlvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0luc3RydWN0aW9ucy5oIC0gSW5zdHJ1Y3Rpb24gc3ViY2xhc3MgZGVmaW5pdGlvbnMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTc1LDQ3ICsxNzQsNTggQEAKICAgTG9hZEluc3QgKmNsb25lSW1wbCgpIGNvbnN0OwogCiBwdWJsaWM6Ci0gIExvYWRJbnN0KFZhbHVlICpQdHIsIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlKTsKLSAgTG9hZEluc3QoVmFsdWUgKlB0ciwgY29uc3QgVHdpbmUgJk5hbWVTdHIsIEJhc2ljQmxvY2sgKkluc2VydEF0RW5kKTsKLSAgTG9hZEluc3QoVHlwZSAqVHksIFZhbHVlICpQdHIsIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBib29sIGlzVm9sYXRpbGUgPSBmYWxzZSwKKyAgTG9hZEluc3QoVHlwZSAqVHksIFZhbHVlICpQdHIsIGNvbnN0IFR3aW5lICZOYW1lU3RyID0gIiIsCiAgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUgPSBudWxscHRyKTsKLSAgTG9hZEluc3QoVmFsdWUgKlB0ciwgY29uc3QgVHdpbmUgJk5hbWVTdHIsIGJvb2wgaXNWb2xhdGlsZSA9IGZhbHNlLAotICAgICAgICAgICBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlID0gbnVsbHB0cikKLSAgICAgIDogTG9hZEluc3QoY2FzdDxQb2ludGVyVHlwZT4oUHRyLT5nZXRUeXBlKCkpLT5nZXRFbGVtZW50VHlwZSgpLCBQdHIsCi0gICAgICAgICAgICAgICAgIE5hbWVTdHIsIGlzVm9sYXRpbGUsIEluc2VydEJlZm9yZSkge30KLSAgTG9hZEluc3QoVmFsdWUgKlB0ciwgY29uc3QgVHdpbmUgJk5hbWVTdHIsIGJvb2wgaXNWb2xhdGlsZSwKKyAgTG9hZEluc3QoVHlwZSAqVHksIFZhbHVlICpQdHIsIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCk7CisgIExvYWRJbnN0KFR5cGUgKlR5LCBWYWx1ZSAqUHRyLCBjb25zdCBUd2luZSAmTmFtZVN0ciwgYm9vbCBpc1ZvbGF0aWxlLAorICAgICAgICAgICBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlID0gbnVsbHB0cik7CisgIExvYWRJbnN0KFR5cGUgKlR5LCBWYWx1ZSAqUHRyLCBjb25zdCBUd2luZSAmTmFtZVN0ciwgYm9vbCBpc1ZvbGF0aWxlLAogICAgICAgICAgICBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCk7Ci0gIExvYWRJbnN0KFZhbHVlICpQdHIsIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBib29sIGlzVm9sYXRpbGUsIHVuc2lnbmVkIEFsaWduLAotICAgICAgICAgICBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlID0gbnVsbHB0cikKLSAgICAgIDogTG9hZEluc3QoY2FzdDxQb2ludGVyVHlwZT4oUHRyLT5nZXRUeXBlKCkpLT5nZXRFbGVtZW50VHlwZSgpLCBQdHIsCi0gICAgICAgICAgICAgICAgIE5hbWVTdHIsIGlzVm9sYXRpbGUsIEFsaWduLCBJbnNlcnRCZWZvcmUpIHt9CiAgIExvYWRJbnN0KFR5cGUgKlR5LCBWYWx1ZSAqUHRyLCBjb25zdCBUd2luZSAmTmFtZVN0ciwgYm9vbCBpc1ZvbGF0aWxlLAogICAgICAgICAgICB1bnNpZ25lZCBBbGlnbiwgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSA9IG51bGxwdHIpOwotICBMb2FkSW5zdChWYWx1ZSAqUHRyLCBjb25zdCBUd2luZSAmTmFtZVN0ciwgYm9vbCBpc1ZvbGF0aWxlLAorICBMb2FkSW5zdChUeXBlICpUeSwgVmFsdWUgKlB0ciwgY29uc3QgVHdpbmUgJk5hbWVTdHIsIGJvb2wgaXNWb2xhdGlsZSwKICAgICAgICAgICAgdW5zaWduZWQgQWxpZ24sIEJhc2ljQmxvY2sgKkluc2VydEF0RW5kKTsKLSAgTG9hZEluc3QoVmFsdWUgKlB0ciwgY29uc3QgVHdpbmUgJk5hbWVTdHIsIGJvb2wgaXNWb2xhdGlsZSwgdW5zaWduZWQgQWxpZ24sCi0gICAgICAgICAgIEF0b21pY09yZGVyaW5nIE9yZGVyLCBTeW5jU2NvcGU6OklEIFNTSUQgPSBTeW5jU2NvcGU6OlN5c3RlbSwKLSAgICAgICAgICAgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSA9IG51bGxwdHIpCi0gICAgICA6IExvYWRJbnN0KGNhc3Q8UG9pbnRlclR5cGU+KFB0ci0+Z2V0VHlwZSgpKS0+Z2V0RWxlbWVudFR5cGUoKSwgUHRyLAotICAgICAgICAgICAgICAgICBOYW1lU3RyLCBpc1ZvbGF0aWxlLCBBbGlnbiwgT3JkZXIsIFNTSUQsIEluc2VydEJlZm9yZSkge30KICAgTG9hZEluc3QoVHlwZSAqVHksIFZhbHVlICpQdHIsIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBib29sIGlzVm9sYXRpbGUsCiAgICAgICAgICAgIHVuc2lnbmVkIEFsaWduLCBBdG9taWNPcmRlcmluZyBPcmRlciwKICAgICAgICAgICAgU3luY1Njb3BlOjpJRCBTU0lEID0gU3luY1Njb3BlOjpTeXN0ZW0sCiAgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUgPSBudWxscHRyKTsKLSAgTG9hZEluc3QoVmFsdWUgKlB0ciwgY29uc3QgVHdpbmUgJk5hbWVTdHIsIGJvb2wgaXNWb2xhdGlsZSwKKyAgTG9hZEluc3QoVHlwZSAqVHksIFZhbHVlICpQdHIsIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBib29sIGlzVm9sYXRpbGUsCiAgICAgICAgICAgIHVuc2lnbmVkIEFsaWduLCBBdG9taWNPcmRlcmluZyBPcmRlciwgU3luY1Njb3BlOjpJRCBTU0lELAogICAgICAgICAgICBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCk7Ci0gIExvYWRJbnN0KFZhbHVlICpQdHIsIGNvbnN0IGNoYXIgKk5hbWVTdHIsIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUpOwotICBMb2FkSW5zdChWYWx1ZSAqUHRyLCBjb25zdCBjaGFyICpOYW1lU3RyLCBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCk7Ci0gIExvYWRJbnN0KFR5cGUgKlR5LCBWYWx1ZSAqUHRyLCBjb25zdCBjaGFyICpOYW1lU3RyID0gbnVsbHB0ciwKLSAgICAgICAgICAgYm9vbCBpc1ZvbGF0aWxlID0gZmFsc2UsIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUgPSBudWxscHRyKTsKLSAgZXhwbGljaXQgTG9hZEluc3QoVmFsdWUgKlB0ciwgY29uc3QgY2hhciAqTmFtZVN0ciA9IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgIGJvb2wgaXNWb2xhdGlsZSA9IGZhbHNlLAorCisgIC8vIERlcHJlY2F0ZWQgW29wYXF1ZSBwb2ludGVyIHR5cGVzXQorICBleHBsaWNpdCBMb2FkSW5zdChWYWx1ZSAqUHRyLCBjb25zdCBUd2luZSAmTmFtZVN0ciA9ICIiLAogICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlID0gbnVsbHB0cikKLSAgICAgIDogTG9hZEluc3QoY2FzdDxQb2ludGVyVHlwZT4oUHRyLT5nZXRUeXBlKCkpLT5nZXRFbGVtZW50VHlwZSgpLCBQdHIsCi0gICAgICAgICAgICAgICAgIE5hbWVTdHIsIGlzVm9sYXRpbGUsIEluc2VydEJlZm9yZSkge30KLSAgTG9hZEluc3QoVmFsdWUgKlB0ciwgY29uc3QgY2hhciAqTmFtZVN0ciwgYm9vbCBpc1ZvbGF0aWxlLAotICAgICAgICAgICBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCk7CisgICAgICA6IExvYWRJbnN0KFB0ci0+Z2V0VHlwZSgpLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgUHRyLCBOYW1lU3RyLAorICAgICAgICAgICAgICAgICBJbnNlcnRCZWZvcmUpIHt9CisgIExvYWRJbnN0KFZhbHVlICpQdHIsIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCkKKyAgICAgIDogTG9hZEluc3QoUHRyLT5nZXRUeXBlKCktPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLCBQdHIsIE5hbWVTdHIsCisgICAgICAgICAgICAgICAgIEluc2VydEF0RW5kKSB7fQorICBMb2FkSW5zdChWYWx1ZSAqUHRyLCBjb25zdCBUd2luZSAmTmFtZVN0ciwgYm9vbCBpc1ZvbGF0aWxlLAorICAgICAgICAgICBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlID0gbnVsbHB0cikKKyAgICAgIDogTG9hZEluc3QoUHRyLT5nZXRUeXBlKCktPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLCBQdHIsIE5hbWVTdHIsCisgICAgICAgICAgICAgICAgIGlzVm9sYXRpbGUsIEluc2VydEJlZm9yZSkge30KKyAgTG9hZEluc3QoVmFsdWUgKlB0ciwgY29uc3QgVHdpbmUgJk5hbWVTdHIsIGJvb2wgaXNWb2xhdGlsZSwKKyAgICAgICAgICAgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpCisgICAgICA6IExvYWRJbnN0KFB0ci0+Z2V0VHlwZSgpLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgUHRyLCBOYW1lU3RyLAorICAgICAgICAgICAgICAgICBpc1ZvbGF0aWxlLCBJbnNlcnRBdEVuZCkge30KKyAgTG9hZEluc3QoVmFsdWUgKlB0ciwgY29uc3QgVHdpbmUgJk5hbWVTdHIsIGJvb2wgaXNWb2xhdGlsZSwgdW5zaWduZWQgQWxpZ24sCisgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUgPSBudWxscHRyKQorICAgICAgOiBMb2FkSW5zdChQdHItPmdldFR5cGUoKS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIFB0ciwgTmFtZVN0ciwKKyAgICAgICAgICAgICAgICAgaXNWb2xhdGlsZSwgQWxpZ24sIEluc2VydEJlZm9yZSkge30KKyAgTG9hZEluc3QoVmFsdWUgKlB0ciwgY29uc3QgVHdpbmUgJk5hbWVTdHIsIGJvb2wgaXNWb2xhdGlsZSwgdW5zaWduZWQgQWxpZ24sCisgICAgICAgICAgIEJhc2ljQmxvY2sgKkluc2VydEF0RW5kKQorICAgICAgOiBMb2FkSW5zdChQdHItPmdldFR5cGUoKS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIFB0ciwgTmFtZVN0ciwKKyAgICAgICAgICAgICAgICAgaXNWb2xhdGlsZSwgQWxpZ24sIEluc2VydEF0RW5kKSB7fQorICBMb2FkSW5zdChWYWx1ZSAqUHRyLCBjb25zdCBUd2luZSAmTmFtZVN0ciwgYm9vbCBpc1ZvbGF0aWxlLCB1bnNpZ25lZCBBbGlnbiwKKyAgICAgICAgICAgQXRvbWljT3JkZXJpbmcgT3JkZXIsIFN5bmNTY29wZTo6SUQgU1NJRCA9IFN5bmNTY29wZTo6U3lzdGVtLAorICAgICAgICAgICBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlID0gbnVsbHB0cikKKyAgICAgIDogTG9hZEluc3QoUHRyLT5nZXRUeXBlKCktPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLCBQdHIsIE5hbWVTdHIsCisgICAgICAgICAgICAgICAgIGlzVm9sYXRpbGUsIEFsaWduLCBPcmRlciwgU1NJRCwgSW5zZXJ0QmVmb3JlKSB7fQorICBMb2FkSW5zdChWYWx1ZSAqUHRyLCBjb25zdCBUd2luZSAmTmFtZVN0ciwgYm9vbCBpc1ZvbGF0aWxlLCB1bnNpZ25lZCBBbGlnbiwKKyAgICAgICAgICAgQXRvbWljT3JkZXJpbmcgT3JkZXIsIFN5bmNTY29wZTo6SUQgU1NJRCwgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpCisgICAgICA6IExvYWRJbnN0KFB0ci0+Z2V0VHlwZSgpLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgUHRyLCBOYW1lU3RyLAorICAgICAgICAgICAgICAgICBpc1ZvbGF0aWxlLCBBbGlnbiwgT3JkZXIsIFNTSUQsIEluc2VydEF0RW5kKSB7fQogCiAgIC8vLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGlzIGEgbG9hZCBmcm9tIGEgdm9sYXRpbGUgbWVtb3J5IGxvY2F0aW9uLgogICBib29sIGlzVm9sYXRpbGUoKSBjb25zdCB7IHJldHVybiBnZXRTdWJjbGFzc0RhdGFGcm9tSW5zdHJ1Y3Rpb24oKSAmIDE7IH0KQEAgLTcxNCw4ICs3MjQsMTQgQEAKICAgICAvLy8gKnAgPSBvbGQgPHVuc2lnbmVkIHYgPyBvbGQgOiB2CiAgICAgVU1pbiwKIAorICAgIC8vLyAqcCA9IG9sZCArIHYKKyAgICBGQWRkLAorCisgICAgLy8vICpwID0gb2xkIC0gdgorICAgIEZTdWIsCisKICAgICBGSVJTVF9CSU5PUCA9IFhjaGcsCi0gICAgTEFTVF9CSU5PUCA9IFVNaW4sCisgICAgTEFTVF9CSU5PUCA9IEZTdWIsCiAgICAgQkFEX0JJTk9QCiAgIH07CiAKQEAgLTczNyw2ICs3NTMsMTYgQEAKIAogICBzdGF0aWMgU3RyaW5nUmVmIGdldE9wZXJhdGlvbk5hbWUoQmluT3AgT3ApOwogCisgIHN0YXRpYyBib29sIGlzRlBPcGVyYXRpb24oQmluT3AgT3ApIHsKKyAgICBzd2l0Y2ggKE9wKSB7CisgICAgY2FzZSBBdG9taWNSTVdJbnN0OjpGQWRkOgorICAgIGNhc2UgQXRvbWljUk1XSW5zdDo6RlN1YjoKKyAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisKICAgdm9pZCBzZXRPcGVyYXRpb24oQmluT3AgT3BlcmF0aW9uKSB7CiAgICAgdW5zaWduZWQgc2hvcnQgU3ViY2xhc3NEYXRhID0gZ2V0U3ViY2xhc3NEYXRhRnJvbUluc3RydWN0aW9uKCk7CiAgICAgc2V0SW5zdHJ1Y3Rpb25TdWJjbGFzc0RhdGEoKFN1YmNsYXNzRGF0YSAmIDMxKSB8CkBAIC03OTQsNiArODIwLDEwIEBACiAgICAgcmV0dXJuIGdldFBvaW50ZXJPcGVyYW5kKCktPmdldFR5cGUoKS0+Z2V0UG9pbnRlckFkZHJlc3NTcGFjZSgpOwogICB9CiAKKyAgYm9vbCBpc0Zsb2F0aW5nUG9pbnRPcGVyYXRpb24oKSBjb25zdCB7CisgICAgcmV0dXJuIGlzRlBPcGVyYXRpb24oZ2V0T3BlcmF0aW9uKCkpOworICB9CisKICAgLy8gTWV0aG9kcyBmb3Igc3VwcG9ydCB0eXBlIGlucXVpcnkgdGhyb3VnaCBpc2EsIGNhc3QsIGFuZCBkeW5fY2FzdDoKICAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBJbnN0cnVjdGlvbiAqSSkgewogICAgIHJldHVybiBJLT5nZXRPcGNvZGUoKSA9PSBJbnN0cnVjdGlvbjo6QXRvbWljUk1XOwpAQCAtMTEwNCw2ICsxMTM0LDcxIEBACiBERUZJTkVfVFJBTlNQQVJFTlRfT1BFUkFORF9BQ0NFU1NPUlMoR2V0RWxlbWVudFB0ckluc3QsIFZhbHVlKQogCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuYXJ5T3BlcmF0b3IgQ2xhc3MKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKy8vLyBhIHVuYXJ5IGluc3RydWN0aW9uIAorY2xhc3MgVW5hcnlPcGVyYXRvciA6IHB1YmxpYyBVbmFyeUluc3RydWN0aW9uIHsKKyAgdm9pZCBBc3NlcnRPSygpOworCitwcm90ZWN0ZWQ6CisgIFVuYXJ5T3BlcmF0b3IoVW5hcnlPcHMgaVR5cGUsIFZhbHVlICpTLCBUeXBlICpUeSwKKyAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSwgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSk7CisgIFVuYXJ5T3BlcmF0b3IoVW5hcnlPcHMgaVR5cGUsIFZhbHVlICpTLCBUeXBlICpUeSwKKyAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSwgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpOworCisgIC8vIE5vdGU6IEluc3RydWN0aW9uIG5lZWRzIHRvIGJlIGEgZnJpZW5kIGhlcmUgdG8gY2FsbCBjbG9uZUltcGwuCisgIGZyaWVuZCBjbGFzcyBJbnN0cnVjdGlvbjsKKworICBVbmFyeU9wZXJhdG9yICpjbG9uZUltcGwoKSBjb25zdDsKKworcHVibGljOgorCisgIC8vLyBDb25zdHJ1Y3QgYSB1bmFyeSBpbnN0cnVjdGlvbiwgZ2l2ZW4gdGhlIG9wY29kZSBhbmQgYW4gb3BlcmFuZC4KKyAgLy8vIE9wdGlvbmFsbHkgKGlmIEluc3RCZWZvcmUgaXMgc3BlY2lmaWVkKSBpbnNlcnQgdGhlIGluc3RydWN0aW9uCisgIC8vLyBpbnRvIGEgQmFzaWNCbG9jayByaWdodCBiZWZvcmUgdGhlIHNwZWNpZmllZCBpbnN0cnVjdGlvbi4gIFRoZSBzcGVjaWZpZWQKKyAgLy8vIEluc3RydWN0aW9uIGlzIGFsbG93ZWQgdG8gYmUgYSBkZXJlZmVyZW5jZWQgZW5kIGl0ZXJhdG9yLgorICAvLy8KKyAgc3RhdGljIFVuYXJ5T3BlcmF0b3IgKkNyZWF0ZShVbmFyeU9wcyBPcCwgVmFsdWUgKlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWUgPSBUd2luZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUgPSBudWxscHRyKTsKKworICAvLy8gQ29uc3RydWN0IGEgdW5hcnkgaW5zdHJ1Y3Rpb24sIGdpdmVuIHRoZSBvcGNvZGUgYW5kIGFuIG9wZXJhbmQuCisgIC8vLyBBbHNvIGF1dG9tYXRpY2FsbHkgaW5zZXJ0IHRoaXMgaW5zdHJ1Y3Rpb24gdG8gdGhlIGVuZCBvZiB0aGUKKyAgLy8vIEJhc2ljQmxvY2sgc3BlY2lmaWVkLgorICAvLy8KKyAgc3RhdGljIFVuYXJ5T3BlcmF0b3IgKkNyZWF0ZShVbmFyeU9wcyBPcCwgVmFsdWUgKlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpOworCisgIC8vLyBUaGVzZSBtZXRob2RzIGp1c3QgZm9yd2FyZCB0byBDcmVhdGUsIGFuZCBhcmUgdXNlZnVsIHdoZW4geW91CisgIC8vLyBzdGF0aWNhbGx5IGtub3cgd2hhdCB0eXBlIG9mIGluc3RydWN0aW9uIHlvdSdyZSBnb2luZyB0byBjcmVhdGUuICBUaGVzZQorICAvLy8gaGVscGVycyBqdXN0IHNhdmUgc29tZSB0eXBpbmcuCisjZGVmaW5lIEhBTkRMRV9VTkFSWV9JTlNUKE4sIE9QQywgQ0xBU1MpIFwKKyAgc3RhdGljIFVuYXJ5SW5zdHJ1Y3Rpb24gKkNyZWF0ZSMjT1BDKFZhbHVlICpWLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSA9ICIiKSB7XAorICAgIHJldHVybiBDcmVhdGUoSW5zdHJ1Y3Rpb246Ok9QQywgViwgTmFtZSk7XAorICB9CisjaW5jbHVkZSAibGx2bS9JUi9JbnN0cnVjdGlvbi5kZWYiCisjZGVmaW5lIEhBTkRMRV9VTkFSWV9JTlNUKE4sIE9QQywgQ0xBU1MpIFwKKyAgc3RhdGljIFVuYXJ5SW5zdHJ1Y3Rpb24gKkNyZWF0ZSMjT1BDKFZhbHVlICpWLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSwgQmFzaWNCbG9jayAqQkIpIHtcCisgICAgcmV0dXJuIENyZWF0ZShJbnN0cnVjdGlvbjo6T1BDLCBWLCBOYW1lLCBCQik7XAorICB9CisjaW5jbHVkZSAibGx2bS9JUi9JbnN0cnVjdGlvbi5kZWYiCisjZGVmaW5lIEhBTkRMRV9VTkFSWV9JTlNUKE4sIE9QQywgQ0xBU1MpIFwKKyAgc3RhdGljIFVuYXJ5SW5zdHJ1Y3Rpb24gKkNyZWF0ZSMjT1BDKFZhbHVlICpWLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZSwgSW5zdHJ1Y3Rpb24gKkkpIHtcCisgICAgcmV0dXJuIENyZWF0ZShJbnN0cnVjdGlvbjo6T1BDLCBWLCBOYW1lLCBJKTtcCisgIH0KKyNpbmNsdWRlICJsbHZtL0lSL0luc3RydWN0aW9uLmRlZiIKKworICBVbmFyeU9wcyBnZXRPcGNvZGUoKSBjb25zdCB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFVuYXJ5T3BzPihJbnN0cnVjdGlvbjo6Z2V0T3Bjb2RlKCkpOworICB9Cit9OworCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUNtcEluc3QgQ2xhc3MKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTEyOTksMTIgKzEzOTQsMTMgQEAKIAogICAvLy8gQ29uc3RydWN0b3Igd2l0aCBuby1pbnNlcnRpb24gc2VtYW50aWNzCiAgIEZDbXBJbnN0KAotICAgIFByZWRpY2F0ZSBwcmVkLCAvLy88IFRoZSBwcmVkaWNhdGUgdG8gdXNlIGZvciB0aGUgY29tcGFyaXNvbgorICAgIFByZWRpY2F0ZSBQcmVkLCAvLy88IFRoZSBwcmVkaWNhdGUgdG8gdXNlIGZvciB0aGUgY29tcGFyaXNvbgogICAgIFZhbHVlICpMSFMsICAgICAvLy88IFRoZSBsZWZ0LWhhbmQtc2lkZSBvZiB0aGUgZXhwcmVzc2lvbgogICAgIFZhbHVlICpSSFMsICAgICAvLy88IFRoZSByaWdodC1oYW5kLXNpZGUgb2YgdGhlIGV4cHJlc3Npb24KLSAgICBjb25zdCBUd2luZSAmTmFtZVN0ciA9ICIiIC8vLzwgTmFtZSBvZiB0aGUgaW5zdHJ1Y3Rpb24KLSAgKSA6IENtcEluc3QobWFrZUNtcFJlc3VsdFR5cGUoTEhTLT5nZXRUeXBlKCkpLAotICAgICAgICAgICAgICBJbnN0cnVjdGlvbjo6RkNtcCwgcHJlZCwgTEhTLCBSSFMsIE5hbWVTdHIpIHsKKyAgICBjb25zdCBUd2luZSAmTmFtZVN0ciA9ICIiLCAvLy88IE5hbWUgb2YgdGhlIGluc3RydWN0aW9uCisgICAgSW5zdHJ1Y3Rpb24gKkZsYWdzU291cmNlID0gbnVsbHB0cgorICApIDogQ21wSW5zdChtYWtlQ21wUmVzdWx0VHlwZShMSFMtPmdldFR5cGUoKSksIEluc3RydWN0aW9uOjpGQ21wLCBQcmVkLCBMSFMsCisgICAgICAgICAgICAgIFJIUywgTmFtZVN0ciwgbnVsbHB0ciwgRmxhZ3NTb3VyY2UpIHsKICAgICBBc3NlcnRPSygpOwogICB9CiAKQEAgLTEzNTIsNTM3ICsxNDQ4LDEzIEBACiAgIH0KIH07CiAKLWNsYXNzIENhbGxJbnN0OwotY2xhc3MgSW52b2tlSW5zdDsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBDYWxsQmFzZVBhcmVudCB7IHVzaW5nIHR5cGUgPSBJbnN0cnVjdGlvbjsgfTsKLQotdGVtcGxhdGUgPD4gc3RydWN0IENhbGxCYXNlUGFyZW50PEludm9rZUluc3Q+IHsgdXNpbmcgdHlwZSA9IFRlcm1pbmF0b3JJbnN0OyB9OwotCi0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotLy8vIEJhc2UgY2xhc3MgZm9yIGFsbCBjYWxsYWJsZSBpbnN0cnVjdGlvbnMgKEludm9rZUluc3QgYW5kIENhbGxJbnN0KQotLy8vIEhvbGRzIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byBjYWxsaW5nIGEgZnVuY3Rpb24sIGFic3RyYWN0aW5nIGZyb20gdGhlIGJhc2UKLS8vLyB0eXBlIEBwIEJhc2VJbnN0VHkgYW5kIHRoZSBjb25jcmV0ZSBpbnN0cnVjdGlvbiBAcCBJbnN0VHkKLS8vLwotdGVtcGxhdGUgPGNsYXNzIEluc3RUeT4KLWNsYXNzIENhbGxCYXNlIDogcHVibGljIENhbGxCYXNlUGFyZW50PEluc3RUeT46OnR5cGUsCi0gICAgICAgICAgICAgICAgIHB1YmxpYyBPcGVyYW5kQnVuZGxlVXNlcjxJbnN0VHksIFVzZXI6Om9wX2l0ZXJhdG9yPiB7Ci1wcm90ZWN0ZWQ6Ci0gIEF0dHJpYnV0ZUxpc3QgQXR0cnM7IC8vLzwgcGFyYW1ldGVyIGF0dHJpYnV0ZXMgZm9yIGNhbGxhYmxlCi0gIEZ1bmN0aW9uVHlwZSAqRlR5OwotICB1c2luZyBCYXNlSW5zdFR5ID0gdHlwZW5hbWUgQ2FsbEJhc2VQYXJlbnQ8SW5zdFR5Pjo6dHlwZTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJnc1R5PgotICBDYWxsQmFzZShBdHRyaWJ1dGVMaXN0IGNvbnN0ICZBLCBGdW5jdGlvblR5cGUgKkZULCBBcmdzVHkgJiYuLi4gQXJncykKLSAgICAgIDogQmFzZUluc3RUeShzdGQ6OmZvcndhcmQ8QXJnc1R5PihBcmdzKS4uLiksIEF0dHJzKEEpLCBGVHkoRlQpIHt9Ci0gIGJvb2wgaGFzRGVzY3JpcHRvcigpIGNvbnN0IHsgcmV0dXJuIFZhbHVlOjpIYXNEZXNjcmlwdG9yOyB9Ci0KLSAgdXNpbmcgQmFzZUluc3RUeTo6QmFzZUluc3RUeTsKLQotICB1c2luZyBPcGVyYW5kQnVuZGxlVXNlcjxJbnN0VHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXI6Om9wX2l0ZXJhdG9yPjo6aXNGbkF0dHJEaXNhbGxvd2VkQnlPcEJ1bmRsZTsKLSAgdXNpbmcgT3BlcmFuZEJ1bmRsZVVzZXI8SW5zdFR5LCBVc2VyOjpvcF9pdGVyYXRvcj46OmdldE51bVRvdGFsQnVuZGxlT3BlcmFuZHM7Ci0gIHVzaW5nIE9wZXJhbmRCdW5kbGVVc2VyPEluc3RUeSwgVXNlcjo6b3BfaXRlcmF0b3I+OjpidW5kbGVPcGVyYW5kSGFzQXR0cjsKLSAgdXNpbmcgSW5zdHJ1Y3Rpb246OmdldFN1YmNsYXNzRGF0YUZyb21JbnN0cnVjdGlvbjsKLSAgdXNpbmcgSW5zdHJ1Y3Rpb246OnNldEluc3RydWN0aW9uU3ViY2xhc3NEYXRhOwotCi1wdWJsaWM6Ci0gIHVzaW5nIEluc3RydWN0aW9uOjpnZXRDb250ZXh0OwotICB1c2luZyBPcGVyYW5kQnVuZGxlVXNlcjxJbnN0VHksIFVzZXI6Om9wX2l0ZXJhdG9yPjo6aGFzT3BlcmFuZEJ1bmRsZXM7Ci0gIHVzaW5nIE9wZXJhbmRCdW5kbGVVc2VyPEluc3RUeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcjo6b3BfaXRlcmF0b3I+OjpnZXRCdW5kbGVPcGVyYW5kc1N0YXJ0SW5kZXg7Ci0KLSAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBJbnN0cnVjdGlvbiAqSSkgewotICAgIGxsdm1fdW5yZWFjaGFibGUoCi0gICAgICAgICJDYWxsQmFzZSBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBjbGFzc29mIGhpZXJhcmNoeSIpOwotICB9Ci0KLXB1YmxpYzoKLSAgLy8vIFJldHVybiB0aGUgcGFyYW1ldGVyIGF0dHJpYnV0ZXMgZm9yIHRoaXMgY2FsbC4KLSAgLy8vCi0gIEF0dHJpYnV0ZUxpc3QgZ2V0QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIEF0dHJzOyB9Ci0KLSAgLy8vIFNldCB0aGUgcGFyYW1ldGVyIGF0dHJpYnV0ZXMgZm9yIHRoaXMgY2FsbC4KLSAgLy8vCi0gIHZvaWQgc2V0QXR0cmlidXRlcyhBdHRyaWJ1dGVMaXN0IEEpIHsgQXR0cnMgPSBBOyB9Ci0KLSAgRnVuY3Rpb25UeXBlICpnZXRGdW5jdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBGVHk7IH0KLQotICB2b2lkIG11dGF0ZUZ1bmN0aW9uVHlwZShGdW5jdGlvblR5cGUgKkZUeSkgewotICAgIFZhbHVlOjptdXRhdGVUeXBlKEZUeS0+Z2V0UmV0dXJuVHlwZSgpKTsKLSAgICB0aGlzLT5GVHkgPSBGVHk7Ci0gIH0KLQotICAvLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgY2FsbCBhcmd1bWVudHMuCi0gIC8vLwotICB1bnNpZ25lZCBnZXROdW1BcmdPcGVyYW5kcygpIGNvbnN0IHsKLSAgICByZXR1cm4gZ2V0TnVtT3BlcmFuZHMoKSAtIGdldE51bVRvdGFsQnVuZGxlT3BlcmFuZHMoKSAtIEluc3RUeTo6QXJnT2Zmc2V0OwotICB9Ci0KLSAgLy8vIGdldEFyZ09wZXJhbmQvc2V0QXJnT3BlcmFuZCAtIFJldHVybi9zZXQgdGhlIGktdGggY2FsbCBhcmd1bWVudC4KLSAgLy8vCi0gIFZhbHVlICpnZXRBcmdPcGVyYW5kKHVuc2lnbmVkIGkpIGNvbnN0IHsKLSAgICBhc3NlcnQoaSA8IGdldE51bUFyZ09wZXJhbmRzKCkgJiYgIk91dCBvZiBib3VuZHMhIik7Ci0gICAgcmV0dXJuIGdldE9wZXJhbmQoaSk7Ci0gIH0KLSAgdm9pZCBzZXRBcmdPcGVyYW5kKHVuc2lnbmVkIGksIFZhbHVlICp2KSB7Ci0gICAgYXNzZXJ0KGkgPCBnZXROdW1BcmdPcGVyYW5kcygpICYmICJPdXQgb2YgYm91bmRzISIpOwotICAgIHNldE9wZXJhbmQoaSwgdik7Ci0gIH0KLQotICAvLy8gUmV0dXJuIHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhcmd1bWVudCBsaXN0LgotICBVc2VyOjpvcF9pdGVyYXRvciBhcmdfYmVnaW4oKSB7IHJldHVybiBvcF9iZWdpbigpOyB9Ci0KLSAgLy8vIFJldHVybiB0aGUgaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgYXJndW1lbnQgbGlzdC4KLSAgVXNlcjo6b3BfaXRlcmF0b3IgYXJnX2VuZCgpIHsKLSAgICAvLyBbIGNhbGwgYXJncyBdLCBbIG9wZXJhbmQgYnVuZGxlcyBdLCBjYWxsZWUKLSAgICByZXR1cm4gb3BfZW5kKCkgLSBnZXROdW1Ub3RhbEJ1bmRsZU9wZXJhbmRzKCkgLSBJbnN0VHk6OkFyZ09mZnNldDsKLSAgfQotCi0gIC8vLyBJdGVyYXRpb24gYWRhcHRlciBmb3IgcmFuZ2UtZm9yIGxvb3BzLgotICBpdGVyYXRvcl9yYW5nZTxVc2VyOjpvcF9pdGVyYXRvcj4gYXJnX29wZXJhbmRzKCkgewotICAgIHJldHVybiBtYWtlX3JhbmdlKGFyZ19iZWdpbigpLCBhcmdfZW5kKCkpOwotICB9Ci0KLSAgLy8vIFJldHVybiB0aGUgaXRlcmF0b3IgcG9pbnRpbmcgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJndW1lbnQgbGlzdC4KLSAgVXNlcjo6Y29uc3Rfb3BfaXRlcmF0b3IgYXJnX2JlZ2luKCkgY29uc3QgeyByZXR1cm4gb3BfYmVnaW4oKTsgfQotCi0gIC8vLyBSZXR1cm4gdGhlIGl0ZXJhdG9yIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50IGxpc3QuCi0gIFVzZXI6OmNvbnN0X29wX2l0ZXJhdG9yIGFyZ19lbmQoKSBjb25zdCB7Ci0gICAgLy8gWyBjYWxsIGFyZ3MgXSwgWyBvcGVyYW5kIGJ1bmRsZXMgXSwgY2FsbGVlCi0gICAgcmV0dXJuIG9wX2VuZCgpIC0gZ2V0TnVtVG90YWxCdW5kbGVPcGVyYW5kcygpIC0gSW5zdFR5OjpBcmdPZmZzZXQ7Ci0gIH0KLQotICAvLy8gSXRlcmF0aW9uIGFkYXB0ZXIgZm9yIHJhbmdlLWZvciBsb29wcy4KLSAgaXRlcmF0b3JfcmFuZ2U8VXNlcjo6Y29uc3Rfb3BfaXRlcmF0b3I+IGFyZ19vcGVyYW5kcygpIGNvbnN0IHsKLSAgICByZXR1cm4gbWFrZV9yYW5nZShhcmdfYmVnaW4oKSwgYXJnX2VuZCgpKTsKLSAgfQotCi0gIC8vLyBXcmFwcGVycyBmb3IgZ2V0dGluZyB0aGUgXGMgVXNlIG9mIGEgY2FsbCBhcmd1bWVudC4KLSAgY29uc3QgVXNlICZnZXRBcmdPcGVyYW5kVXNlKHVuc2lnbmVkIGkpIGNvbnN0IHsKLSAgICBhc3NlcnQoaSA8IGdldE51bUFyZ09wZXJhbmRzKCkgJiYgIk91dCBvZiBib3VuZHMhIik7Ci0gICAgcmV0dXJuIFVzZXI6OmdldE9wZXJhbmRVc2UoaSk7Ci0gIH0KLSAgVXNlICZnZXRBcmdPcGVyYW5kVXNlKHVuc2lnbmVkIGkpIHsKLSAgICBhc3NlcnQoaSA8IGdldE51bUFyZ09wZXJhbmRzKCkgJiYgIk91dCBvZiBib3VuZHMhIik7Ci0gICAgcmV0dXJuIFVzZXI6OmdldE9wZXJhbmRVc2UoaSk7Ci0gIH0KLQotICAvLy8gSWYgb25lIG9mIHRoZSBhcmd1bWVudHMgaGFzIHRoZSAncmV0dXJuZWQnIGF0dHJpYnV0ZSwgcmV0dXJuIGl0cwotICAvLy8gb3BlcmFuZCB2YWx1ZS4gT3RoZXJ3aXNlLCByZXR1cm4gbnVsbHB0ci4KLSAgVmFsdWUgKmdldFJldHVybmVkQXJnT3BlcmFuZCgpIGNvbnN0IHsKLSAgICB1bnNpZ25lZCBJbmRleDsKLQotICAgIGlmIChBdHRycy5oYXNBdHRyU29tZXdoZXJlKEF0dHJpYnV0ZTo6UmV0dXJuZWQsICZJbmRleCkgJiYgSW5kZXgpCi0gICAgICByZXR1cm4gZ2V0QXJnT3BlcmFuZChJbmRleCAtIEF0dHJpYnV0ZUxpc3Q6OkZpcnN0QXJnSW5kZXgpOwotICAgIGlmIChjb25zdCBGdW5jdGlvbiAqRiA9IGdldENhbGxlZEZ1bmN0aW9uKCkpCi0gICAgICBpZiAoRi0+Z2V0QXR0cmlidXRlcygpLmhhc0F0dHJTb21ld2hlcmUoQXR0cmlidXRlOjpSZXR1cm5lZCwgJkluZGV4KSAmJgotICAgICAgICAgIEluZGV4KQotICAgICAgICByZXR1cm4gZ2V0QXJnT3BlcmFuZChJbmRleCAtIEF0dHJpYnV0ZUxpc3Q6OkZpcnN0QXJnSW5kZXgpOwotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci0gIH0KLQotICBVc2VyOjpvcF9pdGVyYXRvciBvcF9iZWdpbigpIHsKLSAgICByZXR1cm4gT3BlcmFuZFRyYWl0czxDYWxsQmFzZT46Om9wX2JlZ2luKHRoaXMpOwotICB9Ci0KLSAgVXNlcjo6Y29uc3Rfb3BfaXRlcmF0b3Igb3BfYmVnaW4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIE9wZXJhbmRUcmFpdHM8Q2FsbEJhc2U+OjpvcF9iZWdpbihjb25zdF9jYXN0PENhbGxCYXNlICo+KHRoaXMpKTsKLSAgfQotCi0gIFVzZXI6Om9wX2l0ZXJhdG9yIG9wX2VuZCgpIHsgcmV0dXJuIE9wZXJhbmRUcmFpdHM8Q2FsbEJhc2U+OjpvcF9lbmQodGhpcyk7IH0KLQotICBVc2VyOjpjb25zdF9vcF9pdGVyYXRvciBvcF9lbmQoKSBjb25zdCB7Ci0gICAgcmV0dXJuIE9wZXJhbmRUcmFpdHM8Q2FsbEJhc2U+OjpvcF9lbmQoY29uc3RfY2FzdDxDYWxsQmFzZSAqPih0aGlzKSk7Ci0gIH0KLQotICBWYWx1ZSAqZ2V0T3BlcmFuZCh1bnNpZ25lZCBpX25vY2FwdHVyZSkgY29uc3QgewotICAgIGFzc2VydChpX25vY2FwdHVyZSA8IE9wZXJhbmRUcmFpdHM8Q2FsbEJhc2U+OjpvcGVyYW5kcyh0aGlzKSAmJgotICAgICAgICAgICAiZ2V0T3BlcmFuZCgpIG91dCBvZiByYW5nZSEiKTsKLSAgICByZXR1cm4gY2FzdF9vcl9udWxsPFZhbHVlPihPcGVyYW5kVHJhaXRzPENhbGxCYXNlPjo6b3BfYmVnaW4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8Q2FsbEJhc2UgKj4odGhpcykpW2lfbm9jYXB0dXJlXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KCkpOwotICB9Ci0KLSAgdm9pZCBzZXRPcGVyYW5kKHVuc2lnbmVkIGlfbm9jYXB0dXJlLCBWYWx1ZSAqVmFsX25vY2FwdHVyZSkgewotICAgIGFzc2VydChpX25vY2FwdHVyZSA8IE9wZXJhbmRUcmFpdHM8Q2FsbEJhc2U+OjpvcGVyYW5kcyh0aGlzKSAmJgotICAgICAgICAgICAic2V0T3BlcmFuZCgpIG91dCBvZiByYW5nZSEiKTsKLSAgICBPcGVyYW5kVHJhaXRzPENhbGxCYXNlPjo6b3BfYmVnaW4odGhpcylbaV9ub2NhcHR1cmVdID0gVmFsX25vY2FwdHVyZTsKLSAgfQotCi0gIHVuc2lnbmVkIGdldE51bU9wZXJhbmRzKCkgY29uc3QgewotICAgIHJldHVybiBPcGVyYW5kVHJhaXRzPENhbGxCYXNlPjo6b3BlcmFuZHModGhpcyk7Ci0gIH0KLSAgdGVtcGxhdGUgPGludCBJZHhfbm9jYXB0dXJlPiBVc2UgJk9wKCkgewotICAgIHJldHVybiBVc2VyOjpPcEZyb208SWR4X25vY2FwdHVyZT4odGhpcyk7Ci0gIH0KLSAgdGVtcGxhdGUgPGludCBJZHhfbm9jYXB0dXJlPiBjb25zdCBVc2UgJk9wKCkgY29uc3QgewotICAgIHJldHVybiBVc2VyOjpPcEZyb208SWR4X25vY2FwdHVyZT4odGhpcyk7Ci0gIH0KLQotICAvLy8gUmV0dXJuIHRoZSBmdW5jdGlvbiBjYWxsZWQsIG9yIG51bGwgaWYgdGhpcyBpcyBhbgotICAvLy8gaW5kaXJlY3QgZnVuY3Rpb24gaW52b2NhdGlvbi4KLSAgLy8vCi0gIEZ1bmN0aW9uICpnZXRDYWxsZWRGdW5jdGlvbigpIGNvbnN0IHsKLSAgICByZXR1cm4gZHluX2Nhc3Q8RnVuY3Rpb24+KE9wPC1JbnN0VHk6OkFyZ09mZnNldD4oKSk7Ci0gIH0KLQotICAvLy8gRGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBjYWxsIGhhcyB0aGUgZ2l2ZW4gYXR0cmlidXRlLgotICBib29sIGhhc0ZuQXR0cihBdHRyaWJ1dGU6OkF0dHJLaW5kIEtpbmQpIGNvbnN0IHsKLSAgICBhc3NlcnQoS2luZCAhPSBBdHRyaWJ1dGU6Ok5vQnVpbHRpbiAmJgotICAgICAgICAgICAiVXNlIENhbGxCYXNlOjppc05vQnVpbHRpbigpIHRvIGNoZWNrIGZvciBBdHRyaWJ1dGU6Ok5vQnVpbHRpbiIpOwotICAgIHJldHVybiBoYXNGbkF0dHJJbXBsKEtpbmQpOwotICB9Ci0KLSAgLy8vIERldGVybWluZSB3aGV0aGVyIHRoaXMgY2FsbCBoYXMgdGhlIGdpdmVuIGF0dHJpYnV0ZS4KLSAgYm9vbCBoYXNGbkF0dHIoU3RyaW5nUmVmIEtpbmQpIGNvbnN0IHsgcmV0dXJuIGhhc0ZuQXR0ckltcGwoS2luZCk7IH0KLQotICAvLy8gZ2V0Q2FsbGluZ0NvbnYvc2V0Q2FsbGluZ0NvbnYgLSBHZXQgb3Igc2V0IHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gb2YgdGhpcwotICAvLy8gZnVuY3Rpb24gY2FsbC4KLSAgQ2FsbGluZ0NvbnY6OklEIGdldENhbGxpbmdDb252KCkgY29uc3QgewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDYWxsaW5nQ29udjo6SUQ+KGdldFN1YmNsYXNzRGF0YUZyb21JbnN0cnVjdGlvbigpID4+IDIpOwotICB9Ci0gIHZvaWQgc2V0Q2FsbGluZ0NvbnYoQ2FsbGluZ0NvbnY6OklEIENDKSB7Ci0gICAgYXV0byBJRCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDQyk7Ci0gICAgYXNzZXJ0KCEoSUQgJiB+Q2FsbGluZ0NvbnY6Ok1heElEKSAmJiAiVW5zdXBwb3J0ZWQgY2FsbGluZyBjb252ZW50aW9uIik7Ci0gICAgc2V0SW5zdHJ1Y3Rpb25TdWJjbGFzc0RhdGEoKGdldFN1YmNsYXNzRGF0YUZyb21JbnN0cnVjdGlvbigpICYgMykgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJRCA8PCAyKSk7Ci0gIH0KLQotCi0gIC8vLyBhZGRzIHRoZSBhdHRyaWJ1dGUgdG8gdGhlIGxpc3Qgb2YgYXR0cmlidXRlcy4KLSAgdm9pZCBhZGRBdHRyaWJ1dGUodW5zaWduZWQgaSwgQXR0cmlidXRlOjpBdHRyS2luZCBLaW5kKSB7Ci0gICAgQXR0cmlidXRlTGlzdCBQQUwgPSBnZXRBdHRyaWJ1dGVzKCk7Ci0gICAgUEFMID0gUEFMLmFkZEF0dHJpYnV0ZShnZXRDb250ZXh0KCksIGksIEtpbmQpOwotICAgIHNldEF0dHJpYnV0ZXMoUEFMKTsKLSAgfQotCi0gIC8vLyBhZGRzIHRoZSBhdHRyaWJ1dGUgdG8gdGhlIGxpc3Qgb2YgYXR0cmlidXRlcy4KLSAgdm9pZCBhZGRBdHRyaWJ1dGUodW5zaWduZWQgaSwgQXR0cmlidXRlIEF0dHIpIHsKLSAgICBBdHRyaWJ1dGVMaXN0IFBBTCA9IGdldEF0dHJpYnV0ZXMoKTsKLSAgICBQQUwgPSBQQUwuYWRkQXR0cmlidXRlKGdldENvbnRleHQoKSwgaSwgQXR0cik7Ci0gICAgc2V0QXR0cmlidXRlcyhQQUwpOwotICB9Ci0KLSAgLy8vIEFkZHMgdGhlIGF0dHJpYnV0ZSB0byB0aGUgaW5kaWNhdGVkIGFyZ3VtZW50Ci0gIHZvaWQgYWRkUGFyYW1BdHRyKHVuc2lnbmVkIEFyZ05vLCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEtpbmQpIHsKLSAgICBhc3NlcnQoQXJnTm8gPCBnZXROdW1BcmdPcGVyYW5kcygpICYmICJPdXQgb2YgYm91bmRzIik7Ci0gICAgQXR0cmlidXRlTGlzdCBQQUwgPSBnZXRBdHRyaWJ1dGVzKCk7Ci0gICAgUEFMID0gUEFMLmFkZFBhcmFtQXR0cmlidXRlKGdldENvbnRleHQoKSwgQXJnTm8sIEtpbmQpOwotICAgIHNldEF0dHJpYnV0ZXMoUEFMKTsKLSAgfQotCi0gIC8vLyBBZGRzIHRoZSBhdHRyaWJ1dGUgdG8gdGhlIGluZGljYXRlZCBhcmd1bWVudAotICB2b2lkIGFkZFBhcmFtQXR0cih1bnNpZ25lZCBBcmdObywgQXR0cmlidXRlIEF0dHIpIHsKLSAgICBhc3NlcnQoQXJnTm8gPCBnZXROdW1BcmdPcGVyYW5kcygpICYmICJPdXQgb2YgYm91bmRzIik7Ci0gICAgQXR0cmlidXRlTGlzdCBQQUwgPSBnZXRBdHRyaWJ1dGVzKCk7Ci0gICAgUEFMID0gUEFMLmFkZFBhcmFtQXR0cmlidXRlKGdldENvbnRleHQoKSwgQXJnTm8sIEF0dHIpOwotICAgIHNldEF0dHJpYnV0ZXMoUEFMKTsKLSAgfQotCi0gIC8vLyByZW1vdmVzIHRoZSBhdHRyaWJ1dGUgZnJvbSB0aGUgbGlzdCBvZiBhdHRyaWJ1dGVzLgotICB2b2lkIHJlbW92ZUF0dHJpYnV0ZSh1bnNpZ25lZCBpLCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEtpbmQpIHsKLSAgICBBdHRyaWJ1dGVMaXN0IFBBTCA9IGdldEF0dHJpYnV0ZXMoKTsKLSAgICBQQUwgPSBQQUwucmVtb3ZlQXR0cmlidXRlKGdldENvbnRleHQoKSwgaSwgS2luZCk7Ci0gICAgc2V0QXR0cmlidXRlcyhQQUwpOwotICB9Ci0KLSAgLy8vIHJlbW92ZXMgdGhlIGF0dHJpYnV0ZSBmcm9tIHRoZSBsaXN0IG9mIGF0dHJpYnV0ZXMuCi0gIHZvaWQgcmVtb3ZlQXR0cmlidXRlKHVuc2lnbmVkIGksIFN0cmluZ1JlZiBLaW5kKSB7Ci0gICAgQXR0cmlidXRlTGlzdCBQQUwgPSBnZXRBdHRyaWJ1dGVzKCk7Ci0gICAgUEFMID0gUEFMLnJlbW92ZUF0dHJpYnV0ZShnZXRDb250ZXh0KCksIGksIEtpbmQpOwotICAgIHNldEF0dHJpYnV0ZXMoUEFMKTsKLSAgfQotCi0gIC8vLyBSZW1vdmVzIHRoZSBhdHRyaWJ1dGUgZnJvbSB0aGUgZ2l2ZW4gYXJndW1lbnQKLSAgdm9pZCByZW1vdmVQYXJhbUF0dHIodW5zaWduZWQgQXJnTm8sIEF0dHJpYnV0ZTo6QXR0cktpbmQgS2luZCkgewotICAgIGFzc2VydChBcmdObyA8IGdldE51bUFyZ09wZXJhbmRzKCkgJiYgIk91dCBvZiBib3VuZHMiKTsKLSAgICBBdHRyaWJ1dGVMaXN0IFBBTCA9IGdldEF0dHJpYnV0ZXMoKTsKLSAgICBQQUwgPSBQQUwucmVtb3ZlUGFyYW1BdHRyaWJ1dGUoZ2V0Q29udGV4dCgpLCBBcmdObywgS2luZCk7Ci0gICAgc2V0QXR0cmlidXRlcyhQQUwpOwotICB9Ci0KLSAgLy8vIFJlbW92ZXMgdGhlIGF0dHJpYnV0ZSBmcm9tIHRoZSBnaXZlbiBhcmd1bWVudAotICB2b2lkIHJlbW92ZVBhcmFtQXR0cih1bnNpZ25lZCBBcmdObywgU3RyaW5nUmVmIEtpbmQpIHsKLSAgICBhc3NlcnQoQXJnTm8gPCBnZXROdW1BcmdPcGVyYW5kcygpICYmICJPdXQgb2YgYm91bmRzIik7Ci0gICAgQXR0cmlidXRlTGlzdCBQQUwgPSBnZXRBdHRyaWJ1dGVzKCk7Ci0gICAgUEFMID0gUEFMLnJlbW92ZVBhcmFtQXR0cmlidXRlKGdldENvbnRleHQoKSwgQXJnTm8sIEtpbmQpOwotICAgIHNldEF0dHJpYnV0ZXMoUEFMKTsKLSAgfQotCi0gIC8vLyBhZGRzIHRoZSBkZXJlZmVyZW5jZWFibGUgYXR0cmlidXRlIHRvIHRoZSBsaXN0IG9mIGF0dHJpYnV0ZXMuCi0gIHZvaWQgYWRkRGVyZWZlcmVuY2VhYmxlQXR0cih1bnNpZ25lZCBpLCB1aW50NjRfdCBCeXRlcykgewotICAgIEF0dHJpYnV0ZUxpc3QgUEFMID0gZ2V0QXR0cmlidXRlcygpOwotICAgIFBBTCA9IFBBTC5hZGREZXJlZmVyZW5jZWFibGVBdHRyKGdldENvbnRleHQoKSwgaSwgQnl0ZXMpOwotICAgIHNldEF0dHJpYnV0ZXMoUEFMKTsKLSAgfQotCi0gIC8vLyBhZGRzIHRoZSBkZXJlZmVyZW5jZWFibGVfb3JfbnVsbCBhdHRyaWJ1dGUgdG8gdGhlIGxpc3Qgb2YKLSAgLy8vIGF0dHJpYnV0ZXMuCi0gIHZvaWQgYWRkRGVyZWZlcmVuY2VhYmxlT3JOdWxsQXR0cih1bnNpZ25lZCBpLCB1aW50NjRfdCBCeXRlcykgewotICAgIEF0dHJpYnV0ZUxpc3QgUEFMID0gZ2V0QXR0cmlidXRlcygpOwotICAgIFBBTCA9IFBBTC5hZGREZXJlZmVyZW5jZWFibGVPck51bGxBdHRyKGdldENvbnRleHQoKSwgaSwgQnl0ZXMpOwotICAgIHNldEF0dHJpYnV0ZXMoUEFMKTsKLSAgfQotCi0gIC8vLyBEZXRlcm1pbmUgd2hldGhlciB0aGUgcmV0dXJuIHZhbHVlIGhhcyB0aGUgZ2l2ZW4gYXR0cmlidXRlLgotICBib29sIGhhc1JldEF0dHIoQXR0cmlidXRlOjpBdHRyS2luZCBLaW5kKSBjb25zdCB7Ci0gICAgaWYgKEF0dHJzLmhhc0F0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpSZXR1cm5JbmRleCwgS2luZCkpCi0gICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIExvb2sgYXQgdGhlIGNhbGxlZSwgaWYgYXZhaWxhYmxlLgotICAgIGlmIChjb25zdCBGdW5jdGlvbiAqRiA9IGdldENhbGxlZEZ1bmN0aW9uKCkpCi0gICAgICByZXR1cm4gRi0+Z2V0QXR0cmlidXRlcygpLmhhc0F0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpSZXR1cm5JbmRleCwgS2luZCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLy8vIERldGVybWluZSB3aGV0aGVyIHRoZSBhcmd1bWVudCBvciBwYXJhbWV0ZXIgaGFzIHRoZSBnaXZlbiBhdHRyaWJ1dGUuCi0gIGJvb2wgcGFyYW1IYXNBdHRyKHVuc2lnbmVkIEFyZ05vLCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEtpbmQpIGNvbnN0IHsKLSAgICBhc3NlcnQoQXJnTm8gPCBnZXROdW1BcmdPcGVyYW5kcygpICYmICJQYXJhbSBpbmRleCBvdXQgb2YgYm91bmRzISIpOwotCi0gICAgaWYgKEF0dHJzLmhhc1BhcmFtQXR0cmlidXRlKEFyZ05vLCBLaW5kKSkKLSAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChjb25zdCBGdW5jdGlvbiAqRiA9IGdldENhbGxlZEZ1bmN0aW9uKCkpCi0gICAgICByZXR1cm4gRi0+Z2V0QXR0cmlidXRlcygpLmhhc1BhcmFtQXR0cmlidXRlKEFyZ05vLCBLaW5kKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICAvLy8gR2V0IHRoZSBhdHRyaWJ1dGUgb2YgYSBnaXZlbiBraW5kIGF0IGEgcG9zaXRpb24uCi0gIEF0dHJpYnV0ZSBnZXRBdHRyaWJ1dGUodW5zaWduZWQgaSwgQXR0cmlidXRlOjpBdHRyS2luZCBLaW5kKSBjb25zdCB7Ci0gICAgcmV0dXJuIGdldEF0dHJpYnV0ZXMoKS5nZXRBdHRyaWJ1dGUoaSwgS2luZCk7Ci0gIH0KLQotICAvLy8gR2V0IHRoZSBhdHRyaWJ1dGUgb2YgYSBnaXZlbiBraW5kIGF0IGEgcG9zaXRpb24uCi0gIEF0dHJpYnV0ZSBnZXRBdHRyaWJ1dGUodW5zaWduZWQgaSwgU3RyaW5nUmVmIEtpbmQpIGNvbnN0IHsKLSAgICByZXR1cm4gZ2V0QXR0cmlidXRlcygpLmdldEF0dHJpYnV0ZShpLCBLaW5kKTsKLSAgfQotCi0gIC8vLyBHZXQgdGhlIGF0dHJpYnV0ZSBvZiBhIGdpdmVuIGtpbmQgZnJvbSBhIGdpdmVuIGFyZwotICBBdHRyaWJ1dGUgZ2V0UGFyYW1BdHRyKHVuc2lnbmVkIEFyZ05vLCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEtpbmQpIGNvbnN0IHsKLSAgICBhc3NlcnQoQXJnTm8gPCBnZXROdW1BcmdPcGVyYW5kcygpICYmICJPdXQgb2YgYm91bmRzIik7Ci0gICAgcmV0dXJuIGdldEF0dHJpYnV0ZXMoKS5nZXRQYXJhbUF0dHIoQXJnTm8sIEtpbmQpOwotICB9Ci0KLSAgLy8vIEdldCB0aGUgYXR0cmlidXRlIG9mIGEgZ2l2ZW4ga2luZCBmcm9tIGEgZ2l2ZW4gYXJnCi0gIEF0dHJpYnV0ZSBnZXRQYXJhbUF0dHIodW5zaWduZWQgQXJnTm8sIFN0cmluZ1JlZiBLaW5kKSBjb25zdCB7Ci0gICAgYXNzZXJ0KEFyZ05vIDwgZ2V0TnVtQXJnT3BlcmFuZHMoKSAmJiAiT3V0IG9mIGJvdW5kcyIpOwotICAgIHJldHVybiBnZXRBdHRyaWJ1dGVzKCkuZ2V0UGFyYW1BdHRyKEFyZ05vLCBLaW5kKTsKLSAgfQotICAvLy8gUmV0dXJuIHRydWUgaWYgdGhlIGRhdGEgb3BlcmFuZCBhdCBpbmRleCBccCBpIGhhcyB0aGUgYXR0cmlidXRlIFxwCi0gIC8vLyBBLgotICAvLy8KLSAgLy8vIERhdGEgb3BlcmFuZHMgaW5jbHVkZSBjYWxsIGFyZ3VtZW50cyBhbmQgdmFsdWVzIHVzZWQgaW4gb3BlcmFuZCBidW5kbGVzLAotICAvLy8gYnV0IGRvZXMgbm90IGluY2x1ZGUgdGhlIGNhbGxlZSBvcGVyYW5kLiAgVGhpcyByb3V0aW5lIGRpc3BhdGNoZXMgdG8gdGhlCi0gIC8vLyB1bmRlcmx5aW5nIEF0dHJpYnV0ZUxpc3Qgb3IgdGhlIE9wZXJhbmRCdW5kbGVVc2VyIGFzIGFwcHJvcHJpYXRlLgotICAvLy8KLSAgLy8vIFRoZSBpbmRleCBccCBpIGlzIGludGVycHJldGVkIGFzCi0gIC8vLwotICAvLy8gIFxwIGkgPT0gQXR0cmlidXRlOjpSZXR1cm5JbmRleCAgLT4gdGhlIHJldHVybiB2YWx1ZQotICAvLy8gIFxwIGkgaW4gWzEsIGFyZ19zaXplICsgMSkgIC0+IGFyZ3VtZW50IG51bWJlciAoXHAgaSAtIDEpCi0gIC8vLyAgXHAgaSBpbiBbYXJnX3NpemUgKyAxLCBkYXRhX29wZXJhbmRfc2l6ZSArIDEpIC0+IGJ1bmRsZSBvcGVyYW5kIGF0IGluZGV4Ci0gIC8vLyAgICAgKFxwIGkgLSAxKSBpbiB0aGUgb3BlcmFuZCBsaXN0LgotICBib29sIGRhdGFPcGVyYW5kSGFzSW1wbGllZEF0dHIodW5zaWduZWQgaSwgQXR0cmlidXRlOjpBdHRyS2luZCBLaW5kKSBjb25zdCB7Ci0gICAgLy8gVGhlcmUgYXJlIGdldE51bU9wZXJhbmRzKCkgLSAoSW5zdFR5OjpBcmdPZmZzZXQgLSAxKSBkYXRhIG9wZXJhbmRzLgotICAgIC8vIFRoZSBsYXN0IG9wZXJhbmQgaXMgdGhlIGNhbGxlZS4KLSAgICBhc3NlcnQoaSA8IChnZXROdW1PcGVyYW5kcygpIC0gSW5zdFR5OjpBcmdPZmZzZXQgKyAxKSAmJgotICAgICAgICAgICAiRGF0YSBvcGVyYW5kIGluZGV4IG91dCBvZiBib3VuZHMhIik7Ci0KLSAgICAvLyBUaGUgYXR0cmlidXRlIEEgY2FuIGVpdGhlciBiZSBkaXJlY3RseSBzcGVjaWZpZWQsIGlmIHRoZSBvcGVyYW5kIGluCi0gICAgLy8gcXVlc3Rpb24gaXMgYSBjYWxsIGFyZ3VtZW50OyBvciBiZSBpbmRpcmVjdGx5IGltcGxpZWQgYnkgdGhlIGtpbmQgb2YgaXRzCi0gICAgLy8gY29udGFpbmluZyBvcGVyYW5kIGJ1bmRsZSwgaWYgdGhlIG9wZXJhbmQgaXMgYSBidW5kbGUgb3BlcmFuZC4KLQotICAgIGlmIChpID09IEF0dHJpYnV0ZUxpc3Q6OlJldHVybkluZGV4KQotICAgICAgcmV0dXJuIGhhc1JldEF0dHIoS2luZCk7Ci0KLSAgICAvLyBGSVhNRTogQXZvaWQgdGhlc2UgaSAtIDEgY2FsY3VsYXRpb25zIGFuZCB1cGRhdGUgdGhlIEFQSSB0byB1c2UKLSAgICAvLyB6ZXJvLWJhc2VkIGluZGljZXMuCi0gICAgaWYgKGkgPCAoZ2V0TnVtQXJnT3BlcmFuZHMoKSArIDEpKQotICAgICAgcmV0dXJuIHBhcmFtSGFzQXR0cihpIC0gMSwgS2luZCk7Ci0KLSAgICBhc3NlcnQoaGFzT3BlcmFuZEJ1bmRsZXMoKSAmJiBpID49IChnZXRCdW5kbGVPcGVyYW5kc1N0YXJ0SW5kZXgoKSArIDEpICYmCi0gICAgICAgICAgICJNdXN0IGJlIGVpdGhlciBhIGNhbGwgYXJndW1lbnQgb3IgYW4gb3BlcmFuZCBidW5kbGUhIik7Ci0gICAgcmV0dXJuIGJ1bmRsZU9wZXJhbmRIYXNBdHRyKGkgLSAxLCBLaW5kKTsKLSAgfQotCi0gIC8vLyBFeHRyYWN0IHRoZSBhbGlnbm1lbnQgb2YgdGhlIHJldHVybiB2YWx1ZS4KLSAgdW5zaWduZWQgZ2V0UmV0QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gQXR0cnMuZ2V0UmV0QWxpZ25tZW50KCk7IH0KLQotICAvLy8gRXh0cmFjdCB0aGUgYWxpZ25tZW50IGZvciBhIGNhbGwgb3IgcGFyYW1ldGVyICgwPXVua25vd24pLgotICB1bnNpZ25lZCBnZXRQYXJhbUFsaWdubWVudCh1bnNpZ25lZCBBcmdObykgY29uc3QgewotICAgIHJldHVybiBBdHRycy5nZXRQYXJhbUFsaWdubWVudChBcmdObyk7Ci0gIH0KLQotICAvLy8gRXh0cmFjdCB0aGUgbnVtYmVyIG9mIGRlcmVmZXJlbmNlYWJsZSBieXRlcyBmb3IgYSBjYWxsIG9yCi0gIC8vLyBwYXJhbWV0ZXIgKDA9dW5rbm93bikuCi0gIHVpbnQ2NF90IGdldERlcmVmZXJlbmNlYWJsZUJ5dGVzKHVuc2lnbmVkIGkpIGNvbnN0IHsKLSAgICByZXR1cm4gQXR0cnMuZ2V0RGVyZWZlcmVuY2VhYmxlQnl0ZXMoaSk7Ci0gIH0KLQotICAvLy8gRXh0cmFjdCB0aGUgbnVtYmVyIG9mIGRlcmVmZXJlbmNlYWJsZV9vcl9udWxsIGJ5dGVzIGZvciBhIGNhbGwgb3IKLSAgLy8vIHBhcmFtZXRlciAoMD11bmtub3duKS4KLSAgdWludDY0X3QgZ2V0RGVyZWZlcmVuY2VhYmxlT3JOdWxsQnl0ZXModW5zaWduZWQgaSkgY29uc3QgewotICAgIHJldHVybiBBdHRycy5nZXREZXJlZmVyZW5jZWFibGVPck51bGxCeXRlcyhpKTsKLSAgfQotCi0gIC8vLyBEZXRlcm1pbmUgaWYgdGhlIHJldHVybiB2YWx1ZSBpcyBtYXJrZWQgd2l0aCBOb0FsaWFzIGF0dHJpYnV0ZS4KLSAgYm9vbCByZXR1cm5Eb2VzTm90QWxpYXMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIEF0dHJzLmhhc0F0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpSZXR1cm5JbmRleCwgQXR0cmlidXRlOjpOb0FsaWFzKTsKLSAgfQotCi0gIC8vLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgY2FsbCBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBjYWxsIHRvIGEKLSAgLy8vIGJ1aWx0aW4uCi0gIGJvb2wgaXNOb0J1aWx0aW4oKSBjb25zdCB7Ci0gICAgcmV0dXJuIGhhc0ZuQXR0ckltcGwoQXR0cmlidXRlOjpOb0J1aWx0aW4pICYmCi0gICAgICAhaGFzRm5BdHRySW1wbChBdHRyaWJ1dGU6OkJ1aWx0aW4pOwotICB9Ci0KLSAgLy8vIERldGVybWluZSBpZiB0aGUgY2FsbCByZXF1aXJlcyBzdHJpY3QgZmxvYXRpbmcgcG9pbnQgc2VtYW50aWNzLgotICBib29sIGlzU3RyaWN0RlAoKSBjb25zdCB7IHJldHVybiBoYXNGbkF0dHIoQXR0cmlidXRlOjpTdHJpY3RGUCk7IH0KLQotICAvLy8gUmV0dXJuIHRydWUgaWYgdGhlIGNhbGwgc2hvdWxkIG5vdCBiZSBpbmxpbmVkLgotICBib29sIGlzTm9JbmxpbmUoKSBjb25zdCB7IHJldHVybiBoYXNGbkF0dHIoQXR0cmlidXRlOjpOb0lubGluZSk7IH0KLSAgdm9pZCBzZXRJc05vSW5saW5lKCkgewotICAgIGFkZEF0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LCBBdHRyaWJ1dGU6Ok5vSW5saW5lKTsKLSAgfQotICAvLy8gRGV0ZXJtaW5lIGlmIHRoZSBjYWxsIGRvZXMgbm90IGFjY2VzcyBtZW1vcnkuCi0gIGJvb2wgZG9lc05vdEFjY2Vzc01lbW9yeSgpIGNvbnN0IHsKLSAgICByZXR1cm4gaGFzRm5BdHRyKEF0dHJpYnV0ZTo6UmVhZE5vbmUpOwotICB9Ci0gIHZvaWQgc2V0RG9lc05vdEFjY2Vzc01lbW9yeSgpIHsKLSAgICBhZGRBdHRyaWJ1dGUoQXR0cmlidXRlTGlzdDo6RnVuY3Rpb25JbmRleCwgQXR0cmlidXRlOjpSZWFkTm9uZSk7Ci0gIH0KLQotICAvLy8gRGV0ZXJtaW5lIGlmIHRoZSBjYWxsIGRvZXMgbm90IGFjY2VzcyBvciBvbmx5IHJlYWRzIG1lbW9yeS4KLSAgYm9vbCBvbmx5UmVhZHNNZW1vcnkoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGRvZXNOb3RBY2Nlc3NNZW1vcnkoKSB8fCBoYXNGbkF0dHIoQXR0cmlidXRlOjpSZWFkT25seSk7Ci0gIH0KLSAgdm9pZCBzZXRPbmx5UmVhZHNNZW1vcnkoKSB7Ci0gICAgYWRkQXR0cmlidXRlKEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHJpYnV0ZTo6UmVhZE9ubHkpOwotICB9Ci0KLSAgLy8vIERldGVybWluZSBpZiB0aGUgY2FsbCBkb2VzIG5vdCBhY2Nlc3Mgb3Igb25seSB3cml0ZXMgbWVtb3J5LgotICBib29sIGRvZXNOb3RSZWFkTWVtb3J5KCkgY29uc3QgewotICAgIHJldHVybiBkb2VzTm90QWNjZXNzTWVtb3J5KCkgfHwgaGFzRm5BdHRyKEF0dHJpYnV0ZTo6V3JpdGVPbmx5KTsKLSAgfQotICB2b2lkIHNldERvZXNOb3RSZWFkTWVtb3J5KCkgewotICAgIGFkZEF0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LCBBdHRyaWJ1dGU6OldyaXRlT25seSk7Ci0gIH0KLQotICAvLy8gRGV0ZXJtaW5lIGlmIHRoZSBjYWxsIGNhbiBhY2Nlc3MgbWVtbW9yeSBvbmx5IHVzaW5nIHBvaW50ZXJzIGJhc2VkCi0gIC8vLyBvbiBpdHMgYXJndW1lbnRzLgotICBib29sIG9ubHlBY2Nlc3Nlc0FyZ01lbW9yeSgpIGNvbnN0IHsKLSAgICByZXR1cm4gaGFzRm5BdHRyKEF0dHJpYnV0ZTo6QXJnTWVtT25seSk7Ci0gIH0KLSAgdm9pZCBzZXRPbmx5QWNjZXNzZXNBcmdNZW1vcnkoKSB7Ci0gICAgYWRkQXR0cmlidXRlKEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHJpYnV0ZTo6QXJnTWVtT25seSk7Ci0gIH0KLQotICAvLy8gRGV0ZXJtaW5lIGlmIHRoZSBmdW5jdGlvbiBtYXkgb25seSBhY2Nlc3MgbWVtb3J5IHRoYXQgaXMKLSAgLy8vIGluYWNjZXNzaWJsZSBmcm9tIHRoZSBJUi4KLSAgYm9vbCBvbmx5QWNjZXNzZXNJbmFjY2Vzc2libGVNZW1vcnkoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGhhc0ZuQXR0cihBdHRyaWJ1dGU6OkluYWNjZXNzaWJsZU1lbU9ubHkpOwotICB9Ci0gIHZvaWQgc2V0T25seUFjY2Vzc2VzSW5hY2Nlc3NpYmxlTWVtb3J5KCkgewotICAgIGFkZEF0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LCBBdHRyaWJ1dGU6OkluYWNjZXNzaWJsZU1lbU9ubHkpOwotICB9Ci0KLSAgLy8vIERldGVybWluZSBpZiB0aGUgZnVuY3Rpb24gbWF5IG9ubHkgYWNjZXNzIG1lbW9yeSB0aGF0IGlzCi0gIC8vLyBlaXRoZXIgaW5hY2Nlc3NpYmxlIGZyb20gdGhlIElSIG9yIHBvaW50ZWQgdG8gYnkgaXRzIGFyZ3VtZW50cy4KLSAgYm9vbCBvbmx5QWNjZXNzZXNJbmFjY2Vzc2libGVNZW1PckFyZ01lbSgpIGNvbnN0IHsKLSAgICByZXR1cm4gaGFzRm5BdHRyKEF0dHJpYnV0ZTo6SW5hY2Nlc3NpYmxlTWVtT3JBcmdNZW1Pbmx5KTsKLSAgfQotICB2b2lkIHNldE9ubHlBY2Nlc3Nlc0luYWNjZXNzaWJsZU1lbU9yQXJnTWVtKCkgewotICAgIGFkZEF0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LCBBdHRyaWJ1dGU6OkluYWNjZXNzaWJsZU1lbU9yQXJnTWVtT25seSk7Ci0gIH0KLSAgLy8vIERldGVybWluZSBpZiB0aGUgY2FsbCBjYW5ub3QgcmV0dXJuLgotICBib29sIGRvZXNOb3RSZXR1cm4oKSBjb25zdCB7IHJldHVybiBoYXNGbkF0dHIoQXR0cmlidXRlOjpOb1JldHVybik7IH0KLSAgdm9pZCBzZXREb2VzTm90UmV0dXJuKCkgewotICAgIGFkZEF0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LCBBdHRyaWJ1dGU6Ok5vUmV0dXJuKTsKLSAgfQotCi0gIC8vLyBEZXRlcm1pbmUgaWYgdGhlIGNhbGwgc2hvdWxkIG5vdCBwZXJmb3JtIGluZGlyZWN0IGJyYW5jaCB0cmFja2luZy4KLSAgYm9vbCBkb2VzTm9DZkNoZWNrKCkgY29uc3QgeyByZXR1cm4gaGFzRm5BdHRyKEF0dHJpYnV0ZTo6Tm9DZkNoZWNrKTsgfQotCi0gIC8vLyBEZXRlcm1pbmUgaWYgdGhlIGNhbGwgY2Fubm90IHVud2luZC4KLSAgYm9vbCBkb2VzTm90VGhyb3coKSBjb25zdCB7IHJldHVybiBoYXNGbkF0dHIoQXR0cmlidXRlOjpOb1Vud2luZCk7IH0KLSAgdm9pZCBzZXREb2VzTm90VGhyb3coKSB7Ci0gICAgYWRkQXR0cmlidXRlKEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHJpYnV0ZTo6Tm9VbndpbmQpOwotICB9Ci0KLSAgLy8vIERldGVybWluZSBpZiB0aGUgaW52b2tlIGNhbm5vdCBiZSBkdXBsaWNhdGVkLgotICBib29sIGNhbm5vdER1cGxpY2F0ZSgpIGNvbnN0IHtyZXR1cm4gaGFzRm5BdHRyKEF0dHJpYnV0ZTo6Tm9EdXBsaWNhdGUpOyB9Ci0gIHZvaWQgc2V0Q2Fubm90RHVwbGljYXRlKCkgewotICAgIGFkZEF0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LCBBdHRyaWJ1dGU6Ok5vRHVwbGljYXRlKTsKLSAgfQotCi0gIC8vLyBEZXRlcm1pbmUgaWYgdGhlIGludm9rZSBpcyBjb252ZXJnZW50Ci0gIGJvb2wgaXNDb252ZXJnZW50KCkgY29uc3QgeyByZXR1cm4gaGFzRm5BdHRyKEF0dHJpYnV0ZTo6Q29udmVyZ2VudCk7IH0KLSAgdm9pZCBzZXRDb252ZXJnZW50KCkgewotICAgIGFkZEF0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LCBBdHRyaWJ1dGU6OkNvbnZlcmdlbnQpOwotICB9Ci0gIHZvaWQgc2V0Tm90Q29udmVyZ2VudCgpIHsKLSAgICByZW1vdmVBdHRyaWJ1dGUoQXR0cmlidXRlTGlzdDo6RnVuY3Rpb25JbmRleCwgQXR0cmlidXRlOjpDb252ZXJnZW50KTsKLSAgfQotCi0gIC8vLyBEZXRlcm1pbmUgaWYgdGhlIGNhbGwgcmV0dXJucyBhIHN0cnVjdHVyZSB0aHJvdWdoIGZpcnN0Ci0gIC8vLyBwb2ludGVyIGFyZ3VtZW50LgotICBib29sIGhhc1N0cnVjdFJldEF0dHIoKSBjb25zdCB7Ci0gICAgaWYgKGdldE51bUFyZ09wZXJhbmRzKCkgPT0gMCkKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEJlIGZyaWVuZGx5IGFuZCBhbHNvIGNoZWNrIHRoZSBjYWxsZWUuCi0gICAgcmV0dXJuIHBhcmFtSGFzQXR0cigwLCBBdHRyaWJ1dGU6OlN0cnVjdFJldCk7Ci0gIH0KLQotICAvLy8gRGV0ZXJtaW5lIGlmIGFueSBjYWxsIGFyZ3VtZW50IGlzIGFuIGFnZ3JlZ2F0ZSBwYXNzZWQgYnkgdmFsdWUuCi0gIGJvb2wgaGFzQnlWYWxBcmd1bWVudCgpIGNvbnN0IHsKLSAgICByZXR1cm4gQXR0cnMuaGFzQXR0clNvbWV3aGVyZShBdHRyaWJ1dGU6OkJ5VmFsKTsKLSAgfQotICAvLy8gR2V0IGEgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdGhhdCBpcyBpbnZva2VkIGJ5IHRoaXMKLSAgLy8vIGluc3RydWN0aW9uLgotICBjb25zdCBWYWx1ZSAqZ2V0Q2FsbGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBPcDwtSW5zdFR5OjpBcmdPZmZzZXQ+KCk7IH0KLSAgVmFsdWUgKmdldENhbGxlZFZhbHVlKCkgeyByZXR1cm4gT3A8LUluc3RUeTo6QXJnT2Zmc2V0PigpOyB9Ci0KLSAgLy8vIFNldCB0aGUgZnVuY3Rpb24gY2FsbGVkLgotICB2b2lkIHNldENhbGxlZEZ1bmN0aW9uKFZhbHVlKiBGbikgewotICAgIHNldENhbGxlZEZ1bmN0aW9uKAotICAgICAgICBjYXN0PEZ1bmN0aW9uVHlwZT4oY2FzdDxQb2ludGVyVHlwZT4oRm4tPmdldFR5cGUoKSktPmdldEVsZW1lbnRUeXBlKCkpLAotICAgICAgICBGbik7Ci0gIH0KLSAgdm9pZCBzZXRDYWxsZWRGdW5jdGlvbihGdW5jdGlvblR5cGUgKkZUeSwgVmFsdWUgKkZuKSB7Ci0gICAgdGhpcy0+RlR5ID0gRlR5OwotICAgIGFzc2VydChGVHkgPT0gY2FzdDxGdW5jdGlvblR5cGU+KAotICAgICAgICAgICAgICAgICAgICAgIGNhc3Q8UG9pbnRlclR5cGU+KEZuLT5nZXRUeXBlKCkpLT5nZXRFbGVtZW50VHlwZSgpKSk7Ci0gICAgT3A8LUluc3RUeTo6QXJnT2Zmc2V0PigpID0gRm47Ci0gIH0KLQotcHJvdGVjdGVkOgotICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQXR0cktpbmQ+IGJvb2wgaGFzRm5BdHRySW1wbChBdHRyS2luZCBLaW5kKSBjb25zdCB7Ci0gICAgaWYgKEF0dHJzLmhhc0F0dHJpYnV0ZShBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LCBLaW5kKSkKLSAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gT3BlcmFuZCBidW5kbGVzIG92ZXJyaWRlIGF0dHJpYnV0ZXMgb24gdGhlIGNhbGxlZCBmdW5jdGlvbiwgYnV0IGRvbid0Ci0gICAgLy8gb3ZlcnJpZGUgYXR0cmlidXRlcyBkaXJlY3RseSBwcmVzZW50IG9uIHRoZSBjYWxsIGluc3RydWN0aW9uLgotICAgIGlmIChpc0ZuQXR0ckRpc2FsbG93ZWRCeU9wQnVuZGxlKEtpbmQpKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGNvbnN0IEZ1bmN0aW9uICpGID0gZ2V0Q2FsbGVkRnVuY3Rpb24oKSkKLSAgICAgIHJldHVybiBGLT5nZXRBdHRyaWJ1dGVzKCkuaGFzQXR0cmlidXRlKEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLaW5kKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLX07Ci0KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgZnVuY3Rpb24gY2FsbCwgYWJzdHJhY3RpbmcgYSB0YXJnZXQKIC8vLyBtYWNoaW5lJ3MgY2FsbGluZyBjb252ZW50aW9uLiAgVGhpcyBjbGFzcyB1c2VzIGxvdyBiaXQgb2YgdGhlIFN1YkNsYXNzRGF0YQogLy8vIGZpZWxkIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoaXMgaXMgYSB0YWlsIGNhbGwuICBUaGUgcmVzdCBvZiB0aGUgYml0cwogLy8vIGhvbGQgdGhlIGNhbGxpbmcgY29udmVudGlvbiBvZiB0aGUgY2FsbC4KIC8vLwotY2xhc3MgQ2FsbEluc3QgOiBwdWJsaWMgQ2FsbEJhc2U8Q2FsbEluc3Q+IHsKLSAgZnJpZW5kIGNsYXNzIE9wZXJhbmRCdW5kbGVVc2VyPENhbGxJbnN0LCBVc2VyOjpvcF9pdGVyYXRvcj47Ci0KK2NsYXNzIENhbGxJbnN0IDogcHVibGljIENhbGxCYXNlIHsKICAgQ2FsbEluc3QoY29uc3QgQ2FsbEluc3QgJkNJKTsKIAogICAvLy8gQ29uc3RydWN0IGEgQ2FsbEluc3QgZ2l2ZW4gYSByYW5nZSBvZiBhcmd1bWVudHMuCkBAIC0xODkxLDM2ICsxNDYzLDMyIEBACiAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBCdW5kbGVzLCBjb25zdCBUd2luZSAmTmFtZVN0ciwKICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUpOwogCi0gIGlubGluZSBDYWxsSW5zdChWYWx1ZSAqRnVuYywgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKLSAgICAgICAgICAgICAgICAgIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IEJ1bmRsZXMsIGNvbnN0IFR3aW5lICZOYW1lU3RyLAotICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSkKLSAgICAgIDogQ2FsbEluc3QoY2FzdDxGdW5jdGlvblR5cGU+KAotICAgICAgICAgICAgICAgICAgICAgY2FzdDxQb2ludGVyVHlwZT4oRnVuYy0+Z2V0VHlwZSgpKS0+Z2V0RWxlbWVudFR5cGUoKSksCi0gICAgICAgICAgICAgICAgIEZ1bmMsIEFyZ3MsIEJ1bmRsZXMsIE5hbWVTdHIsIEluc2VydEJlZm9yZSkge30KLQotICBpbmxpbmUgQ2FsbEluc3QoVmFsdWUgKkZ1bmMsIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsIGNvbnN0IFR3aW5lICZOYW1lU3RyLAotICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSkKLSAgICAgIDogQ2FsbEluc3QoRnVuYywgQXJncywgTm9uZSwgTmFtZVN0ciwgSW5zZXJ0QmVmb3JlKSB7fQorICBpbmxpbmUgQ2FsbEluc3QoRnVuY3Rpb25UeXBlICpUeSwgVmFsdWUgKkZ1bmMsIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSkKKyAgICAgIDogQ2FsbEluc3QoVHksIEZ1bmMsIEFyZ3MsIE5vbmUsIE5hbWVTdHIsIEluc2VydEJlZm9yZSkge30KIAogICAvLy8gQ29uc3RydWN0IGEgQ2FsbEluc3QgZ2l2ZW4gYSByYW5nZSBvZiBhcmd1bWVudHMuCiAgIC8vLyBDb25zdHJ1Y3QgYSBDYWxsSW5zdCBmcm9tIGEgcmFuZ2Ugb2YgYXJndW1lbnRzCi0gIGlubGluZSBDYWxsSW5zdChWYWx1ZSAqRnVuYywgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKKyAgaW5saW5lIENhbGxJbnN0KEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpGdW5jLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAogICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywgY29uc3QgVHdpbmUgJk5hbWVTdHIsCiAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCk7CiAKLSAgZXhwbGljaXQgQ2FsbEluc3QoVmFsdWUgKkYsIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlKTsKKyAgZXhwbGljaXQgQ2FsbEluc3QoRnVuY3Rpb25UeXBlICpUeSwgVmFsdWUgKkYsIGNvbnN0IFR3aW5lICZOYW1lU3RyLAorICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlKTsKIAotICBDYWxsSW5zdChWYWx1ZSAqRiwgY29uc3QgVHdpbmUgJk5hbWVTdHIsIEJhc2ljQmxvY2sgKkluc2VydEF0RW5kKTsKKyAgQ2FsbEluc3QoRnVuY3Rpb25UeXBlICp0eSwgVmFsdWUgKkYsIGNvbnN0IFR3aW5lICZOYW1lU3RyLAorICAgICAgICAgICBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCk7CiAKLSAgdm9pZCBpbml0KFZhbHVlICpGdW5jLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAotICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywgY29uc3QgVHdpbmUgJk5hbWVTdHIpIHsKLSAgICBpbml0KGNhc3Q8RnVuY3Rpb25UeXBlPigKLSAgICAgICAgICAgICBjYXN0PFBvaW50ZXJUeXBlPihGdW5jLT5nZXRUeXBlKCkpLT5nZXRFbGVtZW50VHlwZSgpKSwKLSAgICAgICAgIEZ1bmMsIEFyZ3MsIEJ1bmRsZXMsIE5hbWVTdHIpOwotICB9CiAgIHZvaWQgaW5pdChGdW5jdGlvblR5cGUgKkZUeSwgVmFsdWUgKkZ1bmMsIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCiAgICAgICAgICAgICBBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBCdW5kbGVzLCBjb25zdCBUd2luZSAmTmFtZVN0cik7Ci0gIHZvaWQgaW5pdChWYWx1ZSAqRnVuYywgY29uc3QgVHdpbmUgJk5hbWVTdHIpOworICB2b2lkIGluaXQoRnVuY3Rpb25UeXBlICpGVHksIFZhbHVlICpGdW5jLCBjb25zdCBUd2luZSAmTmFtZVN0cik7CisKKyAgLy8vIENvbXB1dGUgdGhlIG51bWJlciBvZiBvcGVyYW5kcyB0byBhbGxvY2F0ZS4KKyAgc3RhdGljIGludCBDb21wdXRlTnVtT3BlcmFuZHMoaW50IE51bUFyZ3MsIGludCBOdW1CdW5kbGVJbnB1dHMgPSAwKSB7CisgICAgLy8gV2UgbmVlZCBvbmUgb3BlcmFuZCBmb3IgdGhlIGNhbGxlZCBmdW5jdGlvbiwgcGx1cyB0aGUgaW5wdXQgb3BlcmFuZAorICAgIC8vIGNvdW50cyBwcm92aWRlZC4KKyAgICByZXR1cm4gMSArIE51bUFyZ3MgKyBOdW1CdW5kbGVJbnB1dHM7CisgIH0KIAogcHJvdGVjdGVkOgogICAvLyBOb3RlOiBJbnN0cnVjdGlvbiBuZWVkcyB0byBiZSBhIGZyaWVuZCBoZXJlIHRvIGNhbGwgY2xvbmVJbXBsLgpAQCAtMTkyOSw4ICsxNDk3LDExMCBAQAogICBDYWxsSW5zdCAqY2xvbmVJbXBsKCkgY29uc3Q7CiAKIHB1YmxpYzoKLSAgc3RhdGljIGNvbnN0ZXhwciBpbnQgQXJnT2Zmc2V0ID0gMTsKKyAgc3RhdGljIENhbGxJbnN0ICpDcmVhdGUoRnVuY3Rpb25UeXBlICpUeSwgVmFsdWUgKkYsIGNvbnN0IFR3aW5lICZOYW1lU3RyID0gIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUgPSBudWxscHRyKSB7CisgICAgcmV0dXJuIG5ldyAoQ29tcHV0ZU51bU9wZXJhbmRzKDApKSBDYWxsSW5zdChUeSwgRiwgTmFtZVN0ciwgSW5zZXJ0QmVmb3JlKTsKKyAgfQogCisgIHN0YXRpYyBDYWxsSW5zdCAqQ3JlYXRlKEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpGdW5jLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSA9IG51bGxwdHIpIHsKKyAgICByZXR1cm4gbmV3IChDb21wdXRlTnVtT3BlcmFuZHMoQXJncy5zaXplKCkpKQorICAgICAgICBDYWxsSW5zdChUeSwgRnVuYywgQXJncywgTm9uZSwgTmFtZVN0ciwgSW5zZXJ0QmVmb3JlKTsKKyAgfQorCisgIHN0YXRpYyBDYWxsSW5zdCAqQ3JlYXRlKEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpGdW5jLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBCdW5kbGVzID0gTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIgPSAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSA9IG51bGxwdHIpIHsKKyAgICBjb25zdCBpbnQgTnVtT3BlcmFuZHMgPQorICAgICAgICBDb21wdXRlTnVtT3BlcmFuZHMoQXJncy5zaXplKCksIENvdW50QnVuZGxlSW5wdXRzKEJ1bmRsZXMpKTsKKyAgICBjb25zdCB1bnNpZ25lZCBEZXNjcmlwdG9yQnl0ZXMgPSBCdW5kbGVzLnNpemUoKSAqIHNpemVvZihCdW5kbGVPcEluZm8pOworCisgICAgcmV0dXJuIG5ldyAoTnVtT3BlcmFuZHMsIERlc2NyaXB0b3JCeXRlcykKKyAgICAgICAgQ2FsbEluc3QoVHksIEZ1bmMsIEFyZ3MsIEJ1bmRsZXMsIE5hbWVTdHIsIEluc2VydEJlZm9yZSk7CisgIH0KKworICBzdGF0aWMgQ2FsbEluc3QgKkNyZWF0ZShGdW5jdGlvblR5cGUgKlR5LCBWYWx1ZSAqRiwgY29uc3QgVHdpbmUgJk5hbWVTdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sgKkluc2VydEF0RW5kKSB7CisgICAgcmV0dXJuIG5ldyAoQ29tcHV0ZU51bU9wZXJhbmRzKDApKSBDYWxsSW5zdChUeSwgRiwgTmFtZVN0ciwgSW5zZXJ0QXRFbmQpOworICB9CisKKyAgc3RhdGljIENhbGxJbnN0ICpDcmVhdGUoRnVuY3Rpb25UeXBlICpUeSwgVmFsdWUgKkZ1bmMsIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCkgeworICAgIHJldHVybiBuZXcgKENvbXB1dGVOdW1PcGVyYW5kcyhBcmdzLnNpemUoKSkpCisgICAgICAgIENhbGxJbnN0KFR5LCBGdW5jLCBBcmdzLCBOb25lLCBOYW1lU3RyLCBJbnNlcnRBdEVuZCk7CisgIH0KKworICBzdGF0aWMgQ2FsbEluc3QgKkNyZWF0ZShGdW5jdGlvblR5cGUgKlR5LCBWYWx1ZSAqRnVuYywgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIsIEJhc2ljQmxvY2sgKkluc2VydEF0RW5kKSB7CisgICAgY29uc3QgaW50IE51bU9wZXJhbmRzID0KKyAgICAgICAgQ29tcHV0ZU51bU9wZXJhbmRzKEFyZ3Muc2l6ZSgpLCBDb3VudEJ1bmRsZUlucHV0cyhCdW5kbGVzKSk7CisgICAgY29uc3QgdW5zaWduZWQgRGVzY3JpcHRvckJ5dGVzID0gQnVuZGxlcy5zaXplKCkgKiBzaXplb2YoQnVuZGxlT3BJbmZvKTsKKworICAgIHJldHVybiBuZXcgKE51bU9wZXJhbmRzLCBEZXNjcmlwdG9yQnl0ZXMpCisgICAgICAgIENhbGxJbnN0KFR5LCBGdW5jLCBBcmdzLCBCdW5kbGVzLCBOYW1lU3RyLCBJbnNlcnRBdEVuZCk7CisgIH0KKworICBzdGF0aWMgQ2FsbEluc3QgKkNyZWF0ZShGdW5jdGlvbkNhbGxlZSBGdW5jLCBjb25zdCBUd2luZSAmTmFtZVN0ciA9ICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlID0gbnVsbHB0cikgeworICAgIHJldHVybiBDcmVhdGUoRnVuYy5nZXRGdW5jdGlvblR5cGUoKSwgRnVuYy5nZXRDYWxsZWUoKSwgTmFtZVN0ciwKKyAgICAgICAgICAgICAgICAgIEluc2VydEJlZm9yZSk7CisgIH0KKworICBzdGF0aWMgQ2FsbEluc3QgKkNyZWF0ZShGdW5jdGlvbkNhbGxlZSBGdW5jLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBCdW5kbGVzID0gTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIgPSAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSA9IG51bGxwdHIpIHsKKyAgICByZXR1cm4gQ3JlYXRlKEZ1bmMuZ2V0RnVuY3Rpb25UeXBlKCksIEZ1bmMuZ2V0Q2FsbGVlKCksIEFyZ3MsIEJ1bmRsZXMsCisgICAgICAgICAgICAgICAgICBOYW1lU3RyLCBJbnNlcnRCZWZvcmUpOworICB9CisKKyAgc3RhdGljIENhbGxJbnN0ICpDcmVhdGUoRnVuY3Rpb25DYWxsZWUgRnVuYywgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUgPSBudWxscHRyKSB7CisgICAgcmV0dXJuIENyZWF0ZShGdW5jLmdldEZ1bmN0aW9uVHlwZSgpLCBGdW5jLmdldENhbGxlZSgpLCBBcmdzLCBOYW1lU3RyLAorICAgICAgICAgICAgICAgICAgSW5zZXJ0QmVmb3JlKTsKKyAgfQorCisgIHN0YXRpYyBDYWxsSW5zdCAqQ3JlYXRlKEZ1bmN0aW9uQ2FsbGVlIEZ1bmMsIGNvbnN0IFR3aW5lICZOYW1lU3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCkgeworICAgIHJldHVybiBDcmVhdGUoRnVuYy5nZXRGdW5jdGlvblR5cGUoKSwgRnVuYy5nZXRDYWxsZWUoKSwgTmFtZVN0ciwKKyAgICAgICAgICAgICAgICAgIEluc2VydEF0RW5kKTsKKyAgfQorCisgIHN0YXRpYyBDYWxsSW5zdCAqQ3JlYXRlKEZ1bmN0aW9uQ2FsbGVlIEZ1bmMsIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCkgeworICAgIHJldHVybiBDcmVhdGUoRnVuYy5nZXRGdW5jdGlvblR5cGUoKSwgRnVuYy5nZXRDYWxsZWUoKSwgQXJncywgTmFtZVN0ciwKKyAgICAgICAgICAgICAgICAgIEluc2VydEF0RW5kKTsKKyAgfQorCisgIHN0YXRpYyBDYWxsSW5zdCAqQ3JlYXRlKEZ1bmN0aW9uQ2FsbGVlIEZ1bmMsIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IEJ1bmRsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCkgeworICAgIHJldHVybiBDcmVhdGUoRnVuYy5nZXRGdW5jdGlvblR5cGUoKSwgRnVuYy5nZXRDYWxsZWUoKSwgQXJncywgQnVuZGxlcywKKyAgICAgICAgICAgICAgICAgIE5hbWVTdHIsIEluc2VydEF0RW5kKTsKKyAgfQorCisgIC8vIERlcHJlY2F0ZWQgW29wYXF1ZSBwb2ludGVyIHR5cGVzXQorICBzdGF0aWMgQ2FsbEluc3QgKkNyZWF0ZShWYWx1ZSAqRnVuYywgY29uc3QgVHdpbmUgJk5hbWVTdHIgPSAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSA9IG51bGxwdHIpIHsKKyAgICByZXR1cm4gQ3JlYXRlKGNhc3Q8RnVuY3Rpb25UeXBlPigKKyAgICAgICAgICAgICAgICAgICAgICBjYXN0PFBvaW50ZXJUeXBlPihGdW5jLT5nZXRUeXBlKCkpLT5nZXRFbGVtZW50VHlwZSgpKSwKKyAgICAgICAgICAgICAgICAgIEZ1bmMsIE5hbWVTdHIsIEluc2VydEJlZm9yZSk7CisgIH0KKworICAvLyBEZXByZWNhdGVkIFtvcGFxdWUgcG9pbnRlciB0eXBlc10KKyAgc3RhdGljIENhbGxJbnN0ICpDcmVhdGUoVmFsdWUgKkZ1bmMsIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lU3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlID0gbnVsbHB0cikgeworICAgIHJldHVybiBDcmVhdGUoY2FzdDxGdW5jdGlvblR5cGU+KAorICAgICAgICAgICAgICAgICAgICAgIGNhc3Q8UG9pbnRlclR5cGU+KEZ1bmMtPmdldFR5cGUoKSktPmdldEVsZW1lbnRUeXBlKCkpLAorICAgICAgICAgICAgICAgICAgRnVuYywgQXJncywgTmFtZVN0ciwgSW5zZXJ0QmVmb3JlKTsKKyAgfQorCisgIC8vIERlcHJlY2F0ZWQgW29wYXF1ZSBwb2ludGVyIHR5cGVzXQogICBzdGF0aWMgQ2FsbEluc3QgKkNyZWF0ZShWYWx1ZSAqRnVuYywgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcyA9IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lU3RyID0gIiIsCkBAIC0xOTQwLDU4ICsxNjEwLDI5IEBACiAgICAgICAgICAgICAgICAgICBGdW5jLCBBcmdzLCBCdW5kbGVzLCBOYW1lU3RyLCBJbnNlcnRCZWZvcmUpOwogICB9CiAKLSAgc3RhdGljIENhbGxJbnN0ICpDcmVhdGUoVmFsdWUgKkZ1bmMsIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lU3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlID0gbnVsbHB0cikgeworICAvLyBEZXByZWNhdGVkIFtvcGFxdWUgcG9pbnRlciB0eXBlc10KKyAgc3RhdGljIENhbGxJbnN0ICpDcmVhdGUoVmFsdWUgKkZ1bmMsIGNvbnN0IFR3aW5lICZOYW1lU3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCkgewogICAgIHJldHVybiBDcmVhdGUoY2FzdDxGdW5jdGlvblR5cGU+KAogICAgICAgICAgICAgICAgICAgICAgIGNhc3Q8UG9pbnRlclR5cGU+KEZ1bmMtPmdldFR5cGUoKSktPmdldEVsZW1lbnRUeXBlKCkpLAotICAgICAgICAgICAgICAgICAgRnVuYywgQXJncywgTm9uZSwgTmFtZVN0ciwgSW5zZXJ0QmVmb3JlKTsKKyAgICAgICAgICAgICAgICAgIEZ1bmMsIE5hbWVTdHIsIEluc2VydEF0RW5kKTsKICAgfQogCi0gIHN0YXRpYyBDYWxsSW5zdCAqQ3JlYXRlKEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpGdW5jLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSA9IG51bGxwdHIpIHsKLSAgICByZXR1cm4gbmV3ICh1bnNpZ25lZChBcmdzLnNpemUoKSArIDEpKQotICAgICAgICBDYWxsSW5zdChUeSwgRnVuYywgQXJncywgTm9uZSwgTmFtZVN0ciwgSW5zZXJ0QmVmb3JlKTsKKyAgLy8gRGVwcmVjYXRlZCBbb3BhcXVlIHBvaW50ZXIgdHlwZXNdCisgIHN0YXRpYyBDYWxsSW5zdCAqQ3JlYXRlKFZhbHVlICpGdW5jLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpIHsKKyAgICByZXR1cm4gQ3JlYXRlKGNhc3Q8RnVuY3Rpb25UeXBlPigKKyAgICAgICAgICAgICAgICAgICAgICBjYXN0PFBvaW50ZXJUeXBlPihGdW5jLT5nZXRUeXBlKCkpLT5nZXRFbGVtZW50VHlwZSgpKSwKKyAgICAgICAgICAgICAgICAgIEZ1bmMsIEFyZ3MsIE5hbWVTdHIsIEluc2VydEF0RW5kKTsKICAgfQogCi0gIHN0YXRpYyBDYWxsSW5zdCAqQ3JlYXRlKEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpGdW5jLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBCdW5kbGVzID0gTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIgPSAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSA9IG51bGxwdHIpIHsKLSAgICBjb25zdCB1bnNpZ25lZCBUb3RhbE9wcyA9Ci0gICAgICAgIHVuc2lnbmVkKEFyZ3Muc2l6ZSgpKSArIENvdW50QnVuZGxlSW5wdXRzKEJ1bmRsZXMpICsgMTsKLSAgICBjb25zdCB1bnNpZ25lZCBEZXNjcmlwdG9yQnl0ZXMgPSBCdW5kbGVzLnNpemUoKSAqIHNpemVvZihCdW5kbGVPcEluZm8pOwotCi0gICAgcmV0dXJuIG5ldyAoVG90YWxPcHMsIERlc2NyaXB0b3JCeXRlcykKLSAgICAgICAgQ2FsbEluc3QoVHksIEZ1bmMsIEFyZ3MsIEJ1bmRsZXMsIE5hbWVTdHIsIEluc2VydEJlZm9yZSk7Ci0gIH0KLQorICAvLyBEZXByZWNhdGVkIFtvcGFxdWUgcG9pbnRlciB0eXBlc10KICAgc3RhdGljIENhbGxJbnN0ICpDcmVhdGUoVmFsdWUgKkZ1bmMsIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IEJ1bmRsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCkgewotICAgIGNvbnN0IHVuc2lnbmVkIFRvdGFsT3BzID0KLSAgICAgICAgdW5zaWduZWQoQXJncy5zaXplKCkpICsgQ291bnRCdW5kbGVJbnB1dHMoQnVuZGxlcykgKyAxOwotICAgIGNvbnN0IHVuc2lnbmVkIERlc2NyaXB0b3JCeXRlcyA9IEJ1bmRsZXMuc2l6ZSgpICogc2l6ZW9mKEJ1bmRsZU9wSW5mbyk7Ci0KLSAgICByZXR1cm4gbmV3IChUb3RhbE9wcywgRGVzY3JpcHRvckJ5dGVzKQotICAgICAgICBDYWxsSW5zdChGdW5jLCBBcmdzLCBCdW5kbGVzLCBOYW1lU3RyLCBJbnNlcnRBdEVuZCk7Ci0gIH0KLQotICBzdGF0aWMgQ2FsbEluc3QgKkNyZWF0ZShWYWx1ZSAqRnVuYywgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIsIEJhc2ljQmxvY2sgKkluc2VydEF0RW5kKSB7Ci0gICAgcmV0dXJuIG5ldyAodW5zaWduZWQoQXJncy5zaXplKCkgKyAxKSkKLSAgICAgICAgQ2FsbEluc3QoRnVuYywgQXJncywgTm9uZSwgTmFtZVN0ciwgSW5zZXJ0QXRFbmQpOwotICB9Ci0KLSAgc3RhdGljIENhbGxJbnN0ICpDcmVhdGUoVmFsdWUgKkYsIGNvbnN0IFR3aW5lICZOYW1lU3RyID0gIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUgPSBudWxscHRyKSB7Ci0gICAgcmV0dXJuIG5ldyAoMSkgQ2FsbEluc3QoRiwgTmFtZVN0ciwgSW5zZXJ0QmVmb3JlKTsKLSAgfQotCi0gIHN0YXRpYyBDYWxsSW5zdCAqQ3JlYXRlKFZhbHVlICpGLCBjb25zdCBUd2luZSAmTmFtZVN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpIHsKLSAgICByZXR1cm4gbmV3ICgxKSBDYWxsSW5zdChGLCBOYW1lU3RyLCBJbnNlcnRBdEVuZCk7CisgICAgcmV0dXJuIENyZWF0ZShjYXN0PEZ1bmN0aW9uVHlwZT4oCisgICAgICAgICAgICAgICAgICAgICAgY2FzdDxQb2ludGVyVHlwZT4oRnVuYy0+Z2V0VHlwZSgpKS0+Z2V0RWxlbWVudFR5cGUoKSksCisgICAgICAgICAgICAgICAgICBGdW5jLCBBcmdzLCBCdW5kbGVzLCBOYW1lU3RyLCBJbnNlcnRBdEVuZCk7CiAgIH0KIAogICAvLy8gQ3JlYXRlIGEgY2xvbmUgb2YgXHAgQ0kgd2l0aCBhIGRpZmZlcmVudCBzZXQgb2Ygb3BlcmFuZCBidW5kbGVzIGFuZApAQCAtMjA4MSw5ICsxNzIyLDYgQEAKICAgICBhZGRBdHRyaWJ1dGUoQXR0cmlidXRlTGlzdDo6RnVuY3Rpb25JbmRleCwgQXR0cmlidXRlOjpSZXR1cm5zVHdpY2UpOwogICB9CiAKLSAgLy8vIENoZWNrIGlmIHRoaXMgY2FsbCBpcyBhbiBpbmxpbmUgYXNtIHN0YXRlbWVudC4KLSAgYm9vbCBpc0lubGluZUFzbSgpIGNvbnN0IHsgcmV0dXJuIGlzYTxJbmxpbmVBc20+KE9wPC0xPigpKTsgfQotCiAgIC8vIE1ldGhvZHMgZm9yIHN1cHBvcnQgdHlwZSBpbnF1aXJ5IHRocm91Z2ggaXNhLCBjYXN0LCBhbmQgZHluX2Nhc3Q6CiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgSW5zdHJ1Y3Rpb24gKkkpIHsKICAgICByZXR1cm4gSS0+Z2V0T3Bjb2RlKCkgPT0gSW5zdHJ1Y3Rpb246OkNhbGw7CkBAIC0yMTAwLDMyICsxNzM4LDI1IEBACiAgIH0KIH07CiAKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgT3BlcmFuZFRyYWl0czxDYWxsQmFzZTxDYWxsSW5zdD4+Ci0gICAgOiBwdWJsaWMgVmFyaWFkaWNPcGVyYW5kVHJhaXRzPENhbGxCYXNlPENhbGxJbnN0PiwgMT4ge307Ci0KLUNhbGxJbnN0OjpDYWxsSW5zdChWYWx1ZSAqRnVuYywgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKK0NhbGxJbnN0OjpDYWxsSW5zdChGdW5jdGlvblR5cGUgKlR5LCBWYWx1ZSAqRnVuYywgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBCdW5kbGVzLCBjb25zdCBUd2luZSAmTmFtZVN0ciwKICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCkKLSAgICA6IENhbGxCYXNlPENhbGxJbnN0PigKLSAgICAgICAgICBjYXN0PEZ1bmN0aW9uVHlwZT4oCi0gICAgICAgICAgICAgIGNhc3Q8UG9pbnRlclR5cGU+KEZ1bmMtPmdldFR5cGUoKSktPmdldEVsZW1lbnRUeXBlKCkpCi0gICAgICAgICAgICAgIC0+Z2V0UmV0dXJuVHlwZSgpLAotICAgICAgICAgIEluc3RydWN0aW9uOjpDYWxsLAotICAgICAgICAgIE9wZXJhbmRUcmFpdHM8Q2FsbEJhc2U8Q2FsbEluc3Q+Pjo6b3BfZW5kKHRoaXMpIC0KLSAgICAgICAgICAgICAgKEFyZ3Muc2l6ZSgpICsgQ291bnRCdW5kbGVJbnB1dHMoQnVuZGxlcykgKyAxKSwKLSAgICAgICAgICB1bnNpZ25lZChBcmdzLnNpemUoKSArIENvdW50QnVuZGxlSW5wdXRzKEJ1bmRsZXMpICsgMSksIEluc2VydEF0RW5kKSB7Ci0gIGluaXQoRnVuYywgQXJncywgQnVuZGxlcywgTmFtZVN0cik7CisgICAgOiBDYWxsQmFzZShUeS0+Z2V0UmV0dXJuVHlwZSgpLCBJbnN0cnVjdGlvbjo6Q2FsbCwKKyAgICAgICAgICAgICAgIE9wZXJhbmRUcmFpdHM8Q2FsbEJhc2U+OjpvcF9lbmQodGhpcykgLQorICAgICAgICAgICAgICAgICAgIChBcmdzLnNpemUoKSArIENvdW50QnVuZGxlSW5wdXRzKEJ1bmRsZXMpICsgMSksCisgICAgICAgICAgICAgICB1bnNpZ25lZChBcmdzLnNpemUoKSArIENvdW50QnVuZGxlSW5wdXRzKEJ1bmRsZXMpICsgMSksCisgICAgICAgICAgICAgICBJbnNlcnRBdEVuZCkgeworICBpbml0KFR5LCBGdW5jLCBBcmdzLCBCdW5kbGVzLCBOYW1lU3RyKTsKIH0KIAogQ2FsbEluc3Q6OkNhbGxJbnN0KEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpGdW5jLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAogICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IEJ1bmRsZXMsIGNvbnN0IFR3aW5lICZOYW1lU3RyLAogICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUpCi0gICAgOiBDYWxsQmFzZTxDYWxsSW5zdD4oVHktPmdldFJldHVyblR5cGUoKSwgSW5zdHJ1Y3Rpb246OkNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgT3BlcmFuZFRyYWl0czxDYWxsQmFzZTxDYWxsSW5zdD4+OjpvcF9lbmQodGhpcykgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXJncy5zaXplKCkgKyBDb3VudEJ1bmRsZUlucHV0cyhCdW5kbGVzKSArIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkKEFyZ3Muc2l6ZSgpICsgQ291bnRCdW5kbGVJbnB1dHMoQnVuZGxlcykgKyAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJbnNlcnRCZWZvcmUpIHsKKyAgICA6IENhbGxCYXNlKFR5LT5nZXRSZXR1cm5UeXBlKCksIEluc3RydWN0aW9uOjpDYWxsLAorICAgICAgICAgICAgICAgT3BlcmFuZFRyYWl0czxDYWxsQmFzZT46Om9wX2VuZCh0aGlzKSAtCisgICAgICAgICAgICAgICAgICAgKEFyZ3Muc2l6ZSgpICsgQ291bnRCdW5kbGVJbnB1dHMoQnVuZGxlcykgKyAxKSwKKyAgICAgICAgICAgICAgIHVuc2lnbmVkKEFyZ3Muc2l6ZSgpICsgQ291bnRCdW5kbGVJbnB1dHMoQnVuZGxlcykgKyAxKSwKKyAgICAgICAgICAgICAgIEluc2VydEJlZm9yZSkgewogICBpbml0KFR5LCBGdW5jLCBBcmdzLCBCdW5kbGVzLCBOYW1lU3RyKTsKIH0KIApAQCAtMjY0OSw2ICsyMjgwLDI1IEBACiAgICAgcmV0dXJuICFjaGFuZ2VzTGVuZ3RoKCkgJiYgaXNUcmFuc3Bvc2VNYXNrKGdldE1hc2soKSk7CiAgIH0KIAorICAvLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBzaHVmZmxlIG1hc2sgaXMgYW4gZXh0cmFjdCBzdWJ2ZWN0b3IgbWFzay4KKyAgLy8vIEEgdmFsaWQgZXh0cmFjdCBzdWJ2ZWN0b3IgbWFzayByZXR1cm5zIGEgc21hbGxlciB2ZWN0b3IgZnJvbSBhIHNpbmdsZQorICAvLy8gc291cmNlIG9wZXJhbmQuIFRoZSBiYXNlIGV4dHJhY3Rpb24gaW5kZXggaXMgcmV0dXJuZWQgYXMgd2VsbC4KKyAgc3RhdGljIGJvb2wgaXNFeHRyYWN0U3VidmVjdG9yTWFzayhBcnJheVJlZjxpbnQ+IE1hc2ssIGludCBOdW1TcmNFbHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAmSW5kZXgpOworICBzdGF0aWMgYm9vbCBpc0V4dHJhY3RTdWJ2ZWN0b3JNYXNrKGNvbnN0IENvbnN0YW50ICpNYXNrLCBpbnQgTnVtU3JjRWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgJkluZGV4KSB7CisgICAgYXNzZXJ0KE1hc2stPmdldFR5cGUoKS0+aXNWZWN0b3JUeSgpICYmICJTaHVmZmxlIG5lZWRzIHZlY3RvciBjb25zdGFudC4iKTsKKyAgICBTbWFsbFZlY3RvcjxpbnQsIDE2PiBNYXNrQXNJbnRzOworICAgIGdldFNodWZmbGVNYXNrKE1hc2ssIE1hc2tBc0ludHMpOworICAgIHJldHVybiBpc0V4dHJhY3RTdWJ2ZWN0b3JNYXNrKE1hc2tBc0ludHMsIE51bVNyY0VsdHMsIEluZGV4KTsKKyAgfQorCisgIC8vLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIHNodWZmbGUgbWFzayBpcyBhbiBleHRyYWN0IHN1YnZlY3RvciBtYXNrLgorICBib29sIGlzRXh0cmFjdFN1YnZlY3Rvck1hc2soaW50ICZJbmRleCkgY29uc3QgeworICAgIGludCBOdW1TcmNFbHRzID0gT3A8MD4oKS0+Z2V0VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpOworICAgIHJldHVybiBpc0V4dHJhY3RTdWJ2ZWN0b3JNYXNrKGdldE1hc2soKSwgTnVtU3JjRWx0cywgSW5kZXgpOworICB9CisKICAgLy8vIENoYW5nZSB2YWx1ZXMgaW4gYSBzaHVmZmxlIHBlcm11dGUgbWFzayBhc3N1bWluZyB0aGUgdHdvIHZlY3RvciBvcGVyYW5kcwogICAvLy8gb2YgbGVuZ3RoIEluVmVjTnVtRWx0cyBoYXZlIHN3YXBwZWQgcG9zaXRpb24uCiAgIHN0YXRpYyB2b2lkIGNvbW11dGVTaHVmZmxlTWFzayhNdXRhYmxlQXJyYXlSZWY8aW50PiBNYXNrLApAQCAtMzI2NSw3ICsyOTE1LDcgQEAKIC8vLyBSZXR1cm4gYSB2YWx1ZSAocG9zc2libHkgdm9pZCksIGZyb20gYSBmdW5jdGlvbi4gIEV4ZWN1dGlvbgogLy8vIGRvZXMgbm90IGNvbnRpbnVlIGluIHRoaXMgZnVuY3Rpb24gYW55IGxvbmdlci4KIC8vLwotY2xhc3MgUmV0dXJuSW5zdCA6IHB1YmxpYyBUZXJtaW5hdG9ySW5zdCB7CitjbGFzcyBSZXR1cm5JbnN0IDogcHVibGljIEluc3RydWN0aW9uIHsKICAgUmV0dXJuSW5zdChjb25zdCBSZXR1cm5JbnN0ICZSSSk7CiAKIHByaXZhdGU6CkBAIC0zMzI1LDggKzI5NzUsNiBAQAogICB9CiAKIHByaXZhdGU6Ci0gIGZyaWVuZCBUZXJtaW5hdG9ySW5zdDsKLQogICBCYXNpY0Jsb2NrICpnZXRTdWNjZXNzb3IodW5zaWduZWQgaWR4KSBjb25zdCB7CiAgICAgbGx2bV91bnJlYWNoYWJsZSgiUmV0dXJuSW5zdCBoYXMgbm8gc3VjY2Vzc29ycyEiKTsKICAgfQpAQCAtMzM0OSw3ICsyOTk3LDcgQEAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLy8gQ29uZGl0aW9uYWwgb3IgVW5jb25kaXRpb25hbCBCcmFuY2ggaW5zdHJ1Y3Rpb24uCiAvLy8KLWNsYXNzIEJyYW5jaEluc3QgOiBwdWJsaWMgVGVybWluYXRvckluc3QgeworY2xhc3MgQnJhbmNoSW5zdCA6IHB1YmxpYyBJbnN0cnVjdGlvbiB7CiAgIC8vLyBPcHMgbGlzdCAtIEJyYW5jaGVzIGFyZSBzdHJhbmdlLiAgVGhlIG9wZXJhbmRzIGFyZSBvcmRlcmVkOgogICAvLy8gIFtDb25kLCBGYWxzZURlc3QsXSBUcnVlRGVzdC4gIFRoaXMgbWFrZXMgc29tZSBhY2Nlc3NvcnMgZmFzdGVyIGJlY2F1c2UKICAgLy8vIHRoZXkgZG9uJ3QgaGF2ZSB0byBjaGVjayBmb3IgY29uZC91bmNvbmQgYnJhbmNobmVzcy4gVGhlc2UgYXJlIG1vc3RseQpAQCAtMzQ5Myw3ICszMTQxLDcgQEAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLy8gTXVsdGl3YXkgc3dpdGNoCiAvLy8KLWNsYXNzIFN3aXRjaEluc3QgOiBwdWJsaWMgVGVybWluYXRvckluc3QgeworY2xhc3MgU3dpdGNoSW5zdCA6IHB1YmxpYyBJbnN0cnVjdGlvbiB7CiAgIHVuc2lnbmVkIFJlc2VydmVkU3BhY2U7CiAKICAgLy8gT3BlcmFuZFswXSAgICA9IFZhbHVlIHRvIHN3aXRjaCBvbgpAQCAtMzU3Niw3ICszMjI0LDcgQEAKICAgICAvLy8gUmV0dXJucyBudW1iZXIgb2YgY3VycmVudCBjYXNlLgogICAgIHVuc2lnbmVkIGdldENhc2VJbmRleCgpIGNvbnN0IHsgcmV0dXJuIEluZGV4OyB9CiAKLSAgICAvLy8gUmV0dXJucyBUZXJtaW5hdG9ySW5zdCdzIHN1Y2Nlc3NvciBpbmRleCBmb3IgY3VycmVudCBjYXNlIHN1Y2Nlc3Nvci4KKyAgICAvLy8gUmV0dXJucyBzdWNjZXNzb3IgaW5kZXggZm9yIGN1cnJlbnQgY2FzZSBzdWNjZXNzb3IuCiAgICAgdW5zaWduZWQgZ2V0U3VjY2Vzc29ySW5kZXgoKSBjb25zdCB7CiAgICAgICBhc3NlcnQoKCh1bnNpZ25lZClJbmRleCA9PSBEZWZhdWx0UHNldWRvSW5kZXggfHwKICAgICAgICAgICAgICAgKHVuc2lnbmVkKUluZGV4IDwgU0ktPmdldE51bUNhc2VzKCkpICYmCkBAIC0zNjMyLDcgKzMyODAsNyBAQAogICAgIENhc2VJdGVyYXRvckltcGwoU3dpdGNoSW5zdFQgKlNJLCB1bnNpZ25lZCBDYXNlTnVtKSA6IENhc2UoU0ksIENhc2VOdW0pIHt9CiAKICAgICAvLy8gSW5pdGlhbGl6ZXMgY2FzZSBpdGVyYXRvciBmb3IgZ2l2ZW4gU3dpdGNoSW5zdCBhbmQgZm9yIGdpdmVuCi0gICAgLy8vIFRlcm1pbmF0b3JJbnN0J3Mgc3VjY2Vzc29yIGluZGV4LgorICAgIC8vLyBzdWNjZXNzb3IgaW5kZXguCiAgICAgc3RhdGljIENhc2VJdGVyYXRvckltcGwgZnJvbVN1Y2Nlc3NvckluZGV4KFN3aXRjaEluc3RUICpTSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgU3VjY2Vzc29ySW5kZXgpIHsKICAgICAgIGFzc2VydChTdWNjZXNzb3JJbmRleCA8IFNJLT5nZXROdW1TdWNjZXNzb3JzKCkgJiYKQEAgLTM4NTAsNyArMzQ5OCw3IEBACiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8vIEluZGlyZWN0IEJyYW5jaCBJbnN0cnVjdGlvbi4KIC8vLwotY2xhc3MgSW5kaXJlY3RCckluc3QgOiBwdWJsaWMgVGVybWluYXRvckluc3QgeworY2xhc3MgSW5kaXJlY3RCckluc3QgOiBwdWJsaWMgSW5zdHJ1Y3Rpb24gewogICB1bnNpZ25lZCBSZXNlcnZlZFNwYWNlOwogCiAgIC8vIE9wZXJhbmRbMF0gICA9IEFkZHJlc3MgdG8ganVtcCB0bwpAQCAtMzk4NSw0OCArMzYzMyw0MyBAQAogLy8vIEludm9rZSBpbnN0cnVjdGlvbi4gIFRoZSBTdWJjbGFzc0RhdGEgZmllbGQgaXMgdXNlZCB0byBob2xkIHRoZQogLy8vIGNhbGxpbmcgY29udmVudGlvbiBvZiB0aGUgY2FsbC4KIC8vLwotY2xhc3MgSW52b2tlSW5zdCA6IHB1YmxpYyBDYWxsQmFzZTxJbnZva2VJbnN0PiB7Ci0gIGZyaWVuZCBjbGFzcyBPcGVyYW5kQnVuZGxlVXNlcjxJbnZva2VJbnN0LCBVc2VyOjpvcF9pdGVyYXRvcj47CitjbGFzcyBJbnZva2VJbnN0IDogcHVibGljIENhbGxCYXNlIHsKKyAgLy8vIFRoZSBudW1iZXIgb2Ygb3BlcmFuZHMgZm9yIHRoaXMgY2FsbCBiZXlvbmQgdGhlIGNhbGxlZCBmdW5jdGlvbiwKKyAgLy8vIGFyZ3VtZW50cywgYW5kIG9wZXJhbmQgYnVuZGxlcy4KKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQgTnVtRXh0cmFPcGVyYW5kcyA9IDI7CisKKyAgLy8vIFRoZSBpbmRleCBmcm9tIHRoZSBlbmQgb2YgdGhlIG9wZXJhbmQgYXJyYXkgdG8gdGhlIG5vcm1hbCBkZXN0aW5hdGlvbi4KKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQgTm9ybWFsRGVzdE9wRW5kSWR4ID0gLTM7CisKKyAgLy8vIFRoZSBpbmRleCBmcm9tIHRoZSBlbmQgb2YgdGhlIG9wZXJhbmQgYXJyYXkgdG8gdGhlIHVud2luZCBkZXN0aW5hdGlvbi4KKyAgc3RhdGljIGNvbnN0ZXhwciBpbnQgVW53aW5kRGVzdE9wRW5kSWR4ID0gLTI7CiAKICAgSW52b2tlSW5zdChjb25zdCBJbnZva2VJbnN0ICZCSSk7CiAKICAgLy8vIENvbnN0cnVjdCBhbiBJbnZva2VJbnN0IGdpdmVuIGEgcmFuZ2Ugb2YgYXJndW1lbnRzLgogICAvLy8KICAgLy8vIENvbnN0cnVjdCBhbiBJbnZva2VJbnN0IGZyb20gYSByYW5nZSBvZiBhcmd1bWVudHMKLSAgaW5saW5lIEludm9rZUluc3QoVmFsdWUgKkZ1bmMsIEJhc2ljQmxvY2sgKklmTm9ybWFsLCBCYXNpY0Jsb2NrICpJZkV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgVmFsdWVzLCBjb25zdCBUd2luZSAmTmFtZVN0ciwKLSAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSkKLSAgICAgIDogSW52b2tlSW5zdChjYXN0PEZ1bmN0aW9uVHlwZT4oCi0gICAgICAgICAgICAgICAgICAgICAgIGNhc3Q8UG9pbnRlclR5cGU+KEZ1bmMtPmdldFR5cGUoKSktPmdldEVsZW1lbnRUeXBlKCkpLAotICAgICAgICAgICAgICAgICAgIEZ1bmMsIElmTm9ybWFsLCBJZkV4Y2VwdGlvbiwgQXJncywgQnVuZGxlcywgVmFsdWVzLCBOYW1lU3RyLAotICAgICAgICAgICAgICAgICAgIEluc2VydEJlZm9yZSkge30KKyAgaW5saW5lIEludm9rZUluc3QoRnVuY3Rpb25UeXBlICpUeSwgVmFsdWUgKkZ1bmMsIEJhc2ljQmxvY2sgKklmTm9ybWFsLAorICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpJZkV4Y2VwdGlvbiwgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKKyAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywgaW50IE51bU9wZXJhbmRzLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSk7CiAKICAgaW5saW5lIEludm9rZUluc3QoRnVuY3Rpb25UeXBlICpUeSwgVmFsdWUgKkZ1bmMsIEJhc2ljQmxvY2sgKklmTm9ybWFsLAogICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpJZkV4Y2VwdGlvbiwgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKLSAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywgdW5zaWduZWQgVmFsdWVzLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSk7Ci0gIC8vLyBDb25zdHJ1Y3QgYW4gSW52b2tlSW5zdCBnaXZlbiBhIHJhbmdlIG9mIGFyZ3VtZW50cy4KLSAgLy8vCi0gIC8vLyBDb25zdHJ1Y3QgYW4gSW52b2tlSW5zdCBmcm9tIGEgcmFuZ2Ugb2YgYXJndW1lbnRzCi0gIGlubGluZSBJbnZva2VJbnN0KFZhbHVlICpGdW5jLCBCYXNpY0Jsb2NrICpJZk5vcm1hbCwgQmFzaWNCbG9jayAqSWZFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IEJ1bmRsZXMsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFZhbHVlcywgY29uc3QgVHdpbmUgJk5hbWVTdHIsCi0gICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sgKkluc2VydEF0RW5kKTsKKyAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywgaW50IE51bU9wZXJhbmRzLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpOwogCi0KLSAgdm9pZCBpbml0KFZhbHVlICpGdW5jLCBCYXNpY0Jsb2NrICpJZk5vcm1hbCwgQmFzaWNCbG9jayAqSWZFeGNlcHRpb24sCi0gICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLCBBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBCdW5kbGVzLAotICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIpIHsKLSAgICBpbml0KGNhc3Q8RnVuY3Rpb25UeXBlPigKLSAgICAgICAgICAgICBjYXN0PFBvaW50ZXJUeXBlPihGdW5jLT5nZXRUeXBlKCkpLT5nZXRFbGVtZW50VHlwZSgpKSwKLSAgICAgICAgIEZ1bmMsIElmTm9ybWFsLCBJZkV4Y2VwdGlvbiwgQXJncywgQnVuZGxlcywgTmFtZVN0cik7Ci0gIH0KLQotICB2b2lkIGluaXQoRnVuY3Rpb25UeXBlICpGVHksIFZhbHVlICpGdW5jLCBCYXNpY0Jsb2NrICpJZk5vcm1hbCwKKyAgdm9pZCBpbml0KEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpGdW5jLCBCYXNpY0Jsb2NrICpJZk5vcm1hbCwKICAgICAgICAgICAgIEJhc2ljQmxvY2sgKklmRXhjZXB0aW9uLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAogICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywgY29uc3QgVHdpbmUgJk5hbWVTdHIpOwogCisgIC8vLyBDb21wdXRlIHRoZSBudW1iZXIgb2Ygb3BlcmFuZHMgdG8gYWxsb2NhdGUuCisgIHN0YXRpYyBpbnQgQ29tcHV0ZU51bU9wZXJhbmRzKGludCBOdW1BcmdzLCBpbnQgTnVtQnVuZGxlSW5wdXRzID0gMCkgeworICAgIC8vIFdlIG5lZWQgb25lIG9wZXJhbmQgZm9yIHRoZSBjYWxsZWQgZnVuY3Rpb24sIHBsdXMgb3VyIGV4dHJhIG9wZXJhbmRzIGFuZAorICAgIC8vIHRoZSBpbnB1dCBvcGVyYW5kIGNvdW50cyBwcm92aWRlZC4KKyAgICByZXR1cm4gMSArIE51bUV4dHJhT3BlcmFuZHMgKyBOdW1BcmdzICsgTnVtQnVuZGxlSW5wdXRzOworICB9CisKIHByb3RlY3RlZDoKICAgLy8gTm90ZTogSW5zdHJ1Y3Rpb24gbmVlZHMgdG8gYmUgYSBmcmllbmQgaGVyZSB0byBjYWxsIGNsb25lSW1wbC4KICAgZnJpZW5kIGNsYXNzIEluc3RydWN0aW9uOwpAQCAtNDAzNCw3ICszNjc3LDg1IEBACiAgIEludm9rZUluc3QgKmNsb25lSW1wbCgpIGNvbnN0OwogCiBwdWJsaWM6Ci0gIHN0YXRpYyBjb25zdGV4cHIgaW50IEFyZ09mZnNldCA9IDM7CisgIHN0YXRpYyBJbnZva2VJbnN0ICpDcmVhdGUoRnVuY3Rpb25UeXBlICpUeSwgVmFsdWUgKkZ1bmMsIEJhc2ljQmxvY2sgKklmTm9ybWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sgKklmRXhjZXB0aW9uLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lU3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUgPSBudWxscHRyKSB7CisgICAgaW50IE51bU9wZXJhbmRzID0gQ29tcHV0ZU51bU9wZXJhbmRzKEFyZ3Muc2l6ZSgpKTsKKyAgICByZXR1cm4gbmV3IChOdW1PcGVyYW5kcykKKyAgICAgICAgSW52b2tlSW5zdChUeSwgRnVuYywgSWZOb3JtYWwsIElmRXhjZXB0aW9uLCBBcmdzLCBOb25lLCBOdW1PcGVyYW5kcywKKyAgICAgICAgICAgICAgICAgICBOYW1lU3RyLCBJbnNlcnRCZWZvcmUpOworICB9CisKKyAgc3RhdGljIEludm9rZUluc3QgKkNyZWF0ZShGdW5jdGlvblR5cGUgKlR5LCBWYWx1ZSAqRnVuYywgQmFzaWNCbG9jayAqSWZOb3JtYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqSWZFeGNlcHRpb24sIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcyA9IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIgPSAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlID0gbnVsbHB0cikgeworICAgIGludCBOdW1PcGVyYW5kcyA9CisgICAgICAgIENvbXB1dGVOdW1PcGVyYW5kcyhBcmdzLnNpemUoKSwgQ291bnRCdW5kbGVJbnB1dHMoQnVuZGxlcykpOworICAgIHVuc2lnbmVkIERlc2NyaXB0b3JCeXRlcyA9IEJ1bmRsZXMuc2l6ZSgpICogc2l6ZW9mKEJ1bmRsZU9wSW5mbyk7CisKKyAgICByZXR1cm4gbmV3IChOdW1PcGVyYW5kcywgRGVzY3JpcHRvckJ5dGVzKQorICAgICAgICBJbnZva2VJbnN0KFR5LCBGdW5jLCBJZk5vcm1hbCwgSWZFeGNlcHRpb24sIEFyZ3MsIEJ1bmRsZXMsIE51bU9wZXJhbmRzLAorICAgICAgICAgICAgICAgICAgIE5hbWVTdHIsIEluc2VydEJlZm9yZSk7CisgIH0KKworICBzdGF0aWMgSW52b2tlSW5zdCAqQ3JlYXRlKEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpGdW5jLCBCYXNpY0Jsb2NrICpJZk5vcm1hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpJZkV4Y2VwdGlvbiwgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpIHsKKyAgICBpbnQgTnVtT3BlcmFuZHMgPSBDb21wdXRlTnVtT3BlcmFuZHMoQXJncy5zaXplKCkpOworICAgIHJldHVybiBuZXcgKE51bU9wZXJhbmRzKQorICAgICAgICBJbnZva2VJbnN0KFR5LCBGdW5jLCBJZk5vcm1hbCwgSWZFeGNlcHRpb24sIEFyZ3MsIE5vbmUsIE51bU9wZXJhbmRzLAorICAgICAgICAgICAgICAgICAgIE5hbWVTdHIsIEluc2VydEF0RW5kKTsKKyAgfQorCisgIHN0YXRpYyBJbnZva2VJbnN0ICpDcmVhdGUoRnVuY3Rpb25UeXBlICpUeSwgVmFsdWUgKkZ1bmMsIEJhc2ljQmxvY2sgKklmTm9ybWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sgKklmRXhjZXB0aW9uLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IEJ1bmRsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIsIEJhc2ljQmxvY2sgKkluc2VydEF0RW5kKSB7CisgICAgaW50IE51bU9wZXJhbmRzID0KKyAgICAgICAgQ29tcHV0ZU51bU9wZXJhbmRzKEFyZ3Muc2l6ZSgpLCBDb3VudEJ1bmRsZUlucHV0cyhCdW5kbGVzKSk7CisgICAgdW5zaWduZWQgRGVzY3JpcHRvckJ5dGVzID0gQnVuZGxlcy5zaXplKCkgKiBzaXplb2YoQnVuZGxlT3BJbmZvKTsKKworICAgIHJldHVybiBuZXcgKE51bU9wZXJhbmRzLCBEZXNjcmlwdG9yQnl0ZXMpCisgICAgICAgIEludm9rZUluc3QoVHksIEZ1bmMsIElmTm9ybWFsLCBJZkV4Y2VwdGlvbiwgQXJncywgQnVuZGxlcywgTnVtT3BlcmFuZHMsCisgICAgICAgICAgICAgICAgICAgTmFtZVN0ciwgSW5zZXJ0QXRFbmQpOworICB9CisKKyAgc3RhdGljIEludm9rZUluc3QgKkNyZWF0ZShGdW5jdGlvbkNhbGxlZSBGdW5jLCBCYXNpY0Jsb2NrICpJZk5vcm1hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpJZkV4Y2VwdGlvbiwgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlID0gbnVsbHB0cikgeworICAgIHJldHVybiBDcmVhdGUoRnVuYy5nZXRGdW5jdGlvblR5cGUoKSwgRnVuYy5nZXRDYWxsZWUoKSwgSWZOb3JtYWwsCisgICAgICAgICAgICAgICAgICBJZkV4Y2VwdGlvbiwgQXJncywgTm9uZSwgTmFtZVN0ciwgSW5zZXJ0QmVmb3JlKTsKKyAgfQorCisgIHN0YXRpYyBJbnZva2VJbnN0ICpDcmVhdGUoRnVuY3Rpb25DYWxsZWUgRnVuYywgQmFzaWNCbG9jayAqSWZOb3JtYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqSWZFeGNlcHRpb24sIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcyA9IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIgPSAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlID0gbnVsbHB0cikgeworICAgIHJldHVybiBDcmVhdGUoRnVuYy5nZXRGdW5jdGlvblR5cGUoKSwgRnVuYy5nZXRDYWxsZWUoKSwgSWZOb3JtYWwsCisgICAgICAgICAgICAgICAgICBJZkV4Y2VwdGlvbiwgQXJncywgQnVuZGxlcywgTmFtZVN0ciwgSW5zZXJ0QmVmb3JlKTsKKyAgfQorCisgIHN0YXRpYyBJbnZva2VJbnN0ICpDcmVhdGUoRnVuY3Rpb25DYWxsZWUgRnVuYywgQmFzaWNCbG9jayAqSWZOb3JtYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqSWZFeGNlcHRpb24sIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIsIEJhc2ljQmxvY2sgKkluc2VydEF0RW5kKSB7CisgICAgcmV0dXJuIENyZWF0ZShGdW5jLmdldEZ1bmN0aW9uVHlwZSgpLCBGdW5jLmdldENhbGxlZSgpLCBJZk5vcm1hbCwKKyAgICAgICAgICAgICAgICAgIElmRXhjZXB0aW9uLCBBcmdzLCBOYW1lU3RyLCBJbnNlcnRBdEVuZCk7CisgIH0KKworICBzdGF0aWMgSW52b2tlSW5zdCAqQ3JlYXRlKEZ1bmN0aW9uQ2FsbGVlIEZ1bmMsIEJhc2ljQmxvY2sgKklmTm9ybWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sgKklmRXhjZXB0aW9uLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IEJ1bmRsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIsIEJhc2ljQmxvY2sgKkluc2VydEF0RW5kKSB7CisgICAgcmV0dXJuIENyZWF0ZShGdW5jLmdldEZ1bmN0aW9uVHlwZSgpLCBGdW5jLmdldENhbGxlZSgpLCBJZk5vcm1hbCwKKyAgICAgICAgICAgICAgICAgIElmRXhjZXB0aW9uLCBBcmdzLCBCdW5kbGVzLCBOYW1lU3RyLCBJbnNlcnRBdEVuZCk7CisgIH0KKworICAvLyBEZXByZWNhdGVkIFtvcGFxdWUgcG9pbnRlciB0eXBlc10KICAgc3RhdGljIEludm9rZUluc3QgKkNyZWF0ZShWYWx1ZSAqRnVuYywgQmFzaWNCbG9jayAqSWZOb3JtYWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqSWZFeGNlcHRpb24sIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIsCkBAIC00MDQ1LDYgKzM3NjYsNyBAQAogICAgICAgICAgICAgICAgICAgSW5zZXJ0QmVmb3JlKTsKICAgfQogCisgIC8vIERlcHJlY2F0ZWQgW29wYXF1ZSBwb2ludGVyIHR5cGVzXQogICBzdGF0aWMgSW52b2tlSW5zdCAqQ3JlYXRlKFZhbHVlICpGdW5jLCBCYXNpY0Jsb2NrICpJZk5vcm1hbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpJZkV4Y2VwdGlvbiwgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBCdW5kbGVzID0gTm9uZSwKQEAgLTQwNTYsNDcgKzM3NzgsMjQgQEAKICAgICAgICAgICAgICAgICAgIEluc2VydEJlZm9yZSk7CiAgIH0KIAotICBzdGF0aWMgSW52b2tlSW5zdCAqQ3JlYXRlKEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpGdW5jLCBCYXNpY0Jsb2NrICpJZk5vcm1hbCwKKyAgLy8gRGVwcmVjYXRlZCBbb3BhcXVlIHBvaW50ZXIgdHlwZXNdCisgIHN0YXRpYyBJbnZva2VJbnN0ICpDcmVhdGUoVmFsdWUgKkZ1bmMsIEJhc2ljQmxvY2sgKklmTm9ybWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sgKklmRXhjZXB0aW9uLCBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lU3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUgPSBudWxscHRyKSB7Ci0gICAgdW5zaWduZWQgVmFsdWVzID0gdW5zaWduZWQoQXJncy5zaXplKCkpICsgMzsKLSAgICByZXR1cm4gbmV3IChWYWx1ZXMpIEludm9rZUluc3QoVHksIEZ1bmMsIElmTm9ybWFsLCBJZkV4Y2VwdGlvbiwgQXJncywgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzLCBOYW1lU3RyLCBJbnNlcnRCZWZvcmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCkgeworICAgIHJldHVybiBDcmVhdGUoY2FzdDxGdW5jdGlvblR5cGU+KAorICAgICAgICAgICAgICAgICAgICAgIGNhc3Q8UG9pbnRlclR5cGU+KEZ1bmMtPmdldFR5cGUoKSktPmdldEVsZW1lbnRUeXBlKCkpLAorICAgICAgICAgICAgICAgICAgRnVuYywgSWZOb3JtYWwsIElmRXhjZXB0aW9uLCBBcmdzLCBOYW1lU3RyLCBJbnNlcnRBdEVuZCk7CiAgIH0KIAotICBzdGF0aWMgSW52b2tlSW5zdCAqQ3JlYXRlKEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpGdW5jLCBCYXNpY0Jsb2NrICpJZk5vcm1hbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpJZkV4Y2VwdGlvbiwgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBCdW5kbGVzID0gTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciA9ICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUgPSBudWxscHRyKSB7Ci0gICAgdW5zaWduZWQgVmFsdWVzID0gdW5zaWduZWQoQXJncy5zaXplKCkpICsgQ291bnRCdW5kbGVJbnB1dHMoQnVuZGxlcykgKyAzOwotICAgIHVuc2lnbmVkIERlc2NyaXB0b3JCeXRlcyA9IEJ1bmRsZXMuc2l6ZSgpICogc2l6ZW9mKEJ1bmRsZU9wSW5mbyk7Ci0KLSAgICByZXR1cm4gbmV3IChWYWx1ZXMsIERlc2NyaXB0b3JCeXRlcykKLSAgICAgICAgSW52b2tlSW5zdChUeSwgRnVuYywgSWZOb3JtYWwsIElmRXhjZXB0aW9uLCBBcmdzLCBCdW5kbGVzLCBWYWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgTmFtZVN0ciwgSW5zZXJ0QmVmb3JlKTsKLSAgfQotCi0gIHN0YXRpYyBJbnZva2VJbnN0ICpDcmVhdGUoVmFsdWUgKkZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqSWZOb3JtYWwsIEJhc2ljQmxvY2sgKklmRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsIGNvbnN0IFR3aW5lICZOYW1lU3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sgKkluc2VydEF0RW5kKSB7Ci0gICAgdW5zaWduZWQgVmFsdWVzID0gdW5zaWduZWQoQXJncy5zaXplKCkpICsgMzsKLSAgICByZXR1cm4gbmV3IChWYWx1ZXMpIEludm9rZUluc3QoRnVuYywgSWZOb3JtYWwsIElmRXhjZXB0aW9uLCBBcmdzLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMsIE5hbWVTdHIsIEluc2VydEF0RW5kKTsKLSAgfQotCisgIC8vIERlcHJlY2F0ZWQgW29wYXF1ZSBwb2ludGVyIHR5cGVzXQogICBzdGF0aWMgSW52b2tlSW5zdCAqQ3JlYXRlKFZhbHVlICpGdW5jLCBCYXNpY0Jsb2NrICpJZk5vcm1hbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpJZkV4Y2VwdGlvbiwgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBCdW5kbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lU3RyLCBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCkgewotICAgIHVuc2lnbmVkIFZhbHVlcyA9IHVuc2lnbmVkKEFyZ3Muc2l6ZSgpKSArIENvdW50QnVuZGxlSW5wdXRzKEJ1bmRsZXMpICsgMzsKLSAgICB1bnNpZ25lZCBEZXNjcmlwdG9yQnl0ZXMgPSBCdW5kbGVzLnNpemUoKSAqIHNpemVvZihCdW5kbGVPcEluZm8pOwotCi0gICAgcmV0dXJuIG5ldyAoVmFsdWVzLCBEZXNjcmlwdG9yQnl0ZXMpCi0gICAgICAgIEludm9rZUluc3QoRnVuYywgSWZOb3JtYWwsIElmRXhjZXB0aW9uLCBBcmdzLCBCdW5kbGVzLCBWYWx1ZXMsIE5hbWVTdHIsCi0gICAgICAgICAgICAgICAgICAgSW5zZXJ0QXRFbmQpOworICAgIHJldHVybiBDcmVhdGUoY2FzdDxGdW5jdGlvblR5cGU+KAorICAgICAgICAgICAgICAgICAgICAgIGNhc3Q8UG9pbnRlclR5cGU+KEZ1bmMtPmdldFR5cGUoKSktPmdldEVsZW1lbnRUeXBlKCkpLAorICAgICAgICAgICAgICAgICAgRnVuYywgSWZOb3JtYWwsIElmRXhjZXB0aW9uLCBBcmdzLCBCdW5kbGVzLCBOYW1lU3RyLAorICAgICAgICAgICAgICAgICAgSW5zZXJ0QXRFbmQpOwogICB9CiAKICAgLy8vIENyZWF0ZSBhIGNsb25lIG9mIFxwIElJIHdpdGggYSBkaWZmZXJlbnQgc2V0IG9mIG9wZXJhbmQgYnVuZGxlcyBhbmQKQEAgLTQxMTcsNDMgKzM4MTYsMTggQEAKICAgICBhZGRBdHRyaWJ1dGUoQXR0cmlidXRlTGlzdDo6RnVuY3Rpb25JbmRleCwgQXR0cmlidXRlOjpOb1Vud2luZCk7CiAgIH0KIAotICAvLy8gUmV0dXJuIHRoZSBmdW5jdGlvbiBjYWxsZWQsIG9yIG51bGwgaWYgdGhpcyBpcyBhbgotICAvLy8gaW5kaXJlY3QgZnVuY3Rpb24gaW52b2NhdGlvbi4KLSAgLy8vCi0gIEZ1bmN0aW9uICpnZXRDYWxsZWRGdW5jdGlvbigpIGNvbnN0IHsKLSAgICByZXR1cm4gZHluX2Nhc3Q8RnVuY3Rpb24+KE9wPC0zPigpKTsKLSAgfQotCi0gIC8vLyBHZXQgYSBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0aGF0IGlzIGludm9rZWQgYnkgdGhpcwotICAvLy8gaW5zdHJ1Y3Rpb24KLSAgY29uc3QgVmFsdWUgKmdldENhbGxlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gT3A8LTM+KCk7IH0KLSAgICAgICAgVmFsdWUgKmdldENhbGxlZFZhbHVlKCkgICAgICAgeyByZXR1cm4gT3A8LTM+KCk7IH0KLQotICAvLy8gU2V0IHRoZSBmdW5jdGlvbiBjYWxsZWQuCi0gIHZvaWQgc2V0Q2FsbGVkRnVuY3Rpb24oVmFsdWUqIEZuKSB7Ci0gICAgc2V0Q2FsbGVkRnVuY3Rpb24oCi0gICAgICAgIGNhc3Q8RnVuY3Rpb25UeXBlPihjYXN0PFBvaW50ZXJUeXBlPihGbi0+Z2V0VHlwZSgpKS0+Z2V0RWxlbWVudFR5cGUoKSksCi0gICAgICAgIEZuKTsKLSAgfQotICB2b2lkIHNldENhbGxlZEZ1bmN0aW9uKEZ1bmN0aW9uVHlwZSAqRlR5LCBWYWx1ZSAqRm4pIHsKLSAgICB0aGlzLT5GVHkgPSBGVHk7Ci0gICAgYXNzZXJ0KEZUeSA9PSBjYXN0PEZ1bmN0aW9uVHlwZT4oCi0gICAgICAgICAgICAgICAgICAgICAgY2FzdDxQb2ludGVyVHlwZT4oRm4tPmdldFR5cGUoKSktPmdldEVsZW1lbnRUeXBlKCkpKTsKLSAgICBPcDwtMz4oKSA9IEZuOwotICB9Ci0KICAgLy8gZ2V0KkRlc3QgLSBSZXR1cm4gdGhlIGRlc3RpbmF0aW9uIGJhc2ljIGJsb2Nrcy4uLgogICBCYXNpY0Jsb2NrICpnZXROb3JtYWxEZXN0KCkgY29uc3QgewotICAgIHJldHVybiBjYXN0PEJhc2ljQmxvY2s+KE9wPC0yPigpKTsKKyAgICByZXR1cm4gY2FzdDxCYXNpY0Jsb2NrPihPcDxOb3JtYWxEZXN0T3BFbmRJZHg+KCkpOwogICB9CiAgIEJhc2ljQmxvY2sgKmdldFVud2luZERlc3QoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGNhc3Q8QmFzaWNCbG9jaz4oT3A8LTE+KCkpOworICAgIHJldHVybiBjYXN0PEJhc2ljQmxvY2s+KE9wPFVud2luZERlc3RPcEVuZElkeD4oKSk7CiAgIH0KICAgdm9pZCBzZXROb3JtYWxEZXN0KEJhc2ljQmxvY2sgKkIpIHsKLSAgICBPcDwtMj4oKSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VmFsdWUqPihCKTsKKyAgICBPcDxOb3JtYWxEZXN0T3BFbmRJZHg+KCkgPSByZWludGVycHJldF9jYXN0PFZhbHVlICo+KEIpOwogICB9CiAgIHZvaWQgc2V0VW53aW5kRGVzdChCYXNpY0Jsb2NrICpCKSB7Ci0gICAgT3A8LTE+KCkgPSByZWludGVycHJldF9jYXN0PFZhbHVlKj4oQik7CisgICAgT3A8VW53aW5kRGVzdE9wRW5kSWR4PigpID0gcmVpbnRlcnByZXRfY2FzdDxWYWx1ZSAqPihCKTsKICAgfQogCiAgIC8vLyBHZXQgdGhlIGxhbmRpbmdwYWQgaW5zdHJ1Y3Rpb24gZnJvbSB0aGUgbGFuZGluZyBwYWQKQEAgLTQxNjUsOSArMzgzOSwxMiBAQAogICAgIHJldHVybiBpID09IDAgPyBnZXROb3JtYWxEZXN0KCkgOiBnZXRVbndpbmREZXN0KCk7CiAgIH0KIAotICB2b2lkIHNldFN1Y2Nlc3Nvcih1bnNpZ25lZCBpZHgsIEJhc2ljQmxvY2sgKk5ld1N1Y2MpIHsKLSAgICBhc3NlcnQoaWR4IDwgMiAmJiAiU3VjY2Vzc29yICMgb3V0IG9mIHJhbmdlIGZvciBpbnZva2UhIik7Ci0gICAgKigmT3A8LTI+KCkgKyBpZHgpID0gcmVpbnRlcnByZXRfY2FzdDxWYWx1ZSo+KE5ld1N1Y2MpOworICB2b2lkIHNldFN1Y2Nlc3Nvcih1bnNpZ25lZCBpLCBCYXNpY0Jsb2NrICpOZXdTdWNjKSB7CisgICAgYXNzZXJ0KGkgPCAyICYmICJTdWNjZXNzb3IgIyBvdXQgb2YgcmFuZ2UgZm9yIGludm9rZSEiKTsKKyAgICBpZiAoaSA9PSAwKQorICAgICAgc2V0Tm9ybWFsRGVzdChOZXdTdWNjKTsKKyAgICBlbHNlCisgICAgICBzZXRVbndpbmREZXN0KE5ld1N1Y2MpOwogICB9CiAKICAgdW5zaWduZWQgZ2V0TnVtU3VjY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJuIDI7IH0KQEAgLTQxODksMzYgKzM4NjYsMjY5IEBACiAgIH0KIH07CiAKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgT3BlcmFuZFRyYWl0czxDYWxsQmFzZTxJbnZva2VJbnN0Pj4KLSAgICA6IHB1YmxpYyBWYXJpYWRpY09wZXJhbmRUcmFpdHM8Q2FsbEJhc2U8SW52b2tlSW5zdD4sIDM+IHt9OwotCiBJbnZva2VJbnN0OjpJbnZva2VJbnN0KEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpGdW5jLCBCYXNpY0Jsb2NrICpJZk5vcm1hbCwKICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqSWZFeGNlcHRpb24sIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IEJ1bmRsZXMsIHVuc2lnbmVkIFZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywgaW50IE51bU9wZXJhbmRzLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSkKLSAgICA6IENhbGxCYXNlPEludm9rZUluc3Q+KFR5LT5nZXRSZXR1cm5UeXBlKCksIEluc3RydWN0aW9uOjpJbnZva2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVyYW5kVHJhaXRzPENhbGxCYXNlPEludm9rZUluc3Q+Pjo6b3BfZW5kKHRoaXMpIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMsIEluc2VydEJlZm9yZSkgeworICAgIDogQ2FsbEJhc2UoVHktPmdldFJldHVyblR5cGUoKSwgSW5zdHJ1Y3Rpb246Okludm9rZSwKKyAgICAgICAgICAgICAgIE9wZXJhbmRUcmFpdHM8Q2FsbEJhc2U+OjpvcF9lbmQodGhpcykgLSBOdW1PcGVyYW5kcywgTnVtT3BlcmFuZHMsCisgICAgICAgICAgICAgICBJbnNlcnRCZWZvcmUpIHsKICAgaW5pdChUeSwgRnVuYywgSWZOb3JtYWwsIElmRXhjZXB0aW9uLCBBcmdzLCBCdW5kbGVzLCBOYW1lU3RyKTsKIH0KIAotSW52b2tlSW5zdDo6SW52b2tlSW5zdChWYWx1ZSAqRnVuYywgQmFzaWNCbG9jayAqSWZOb3JtYWwsCitJbnZva2VJbnN0OjpJbnZva2VJbnN0KEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpGdW5jLCBCYXNpY0Jsb2NrICpJZk5vcm1hbCwKICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqSWZFeGNlcHRpb24sIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IEJ1bmRsZXMsIHVuc2lnbmVkIFZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywgaW50IE51bU9wZXJhbmRzLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpCi0gICAgOiBDYWxsQmFzZTxJbnZva2VJbnN0PigKKyAgICA6IENhbGxCYXNlKFR5LT5nZXRSZXR1cm5UeXBlKCksIEluc3RydWN0aW9uOjpJbnZva2UsCisgICAgICAgICAgICAgICBPcGVyYW5kVHJhaXRzPENhbGxCYXNlPjo6b3BfZW5kKHRoaXMpIC0gTnVtT3BlcmFuZHMsIE51bU9wZXJhbmRzLAorICAgICAgICAgICAgICAgSW5zZXJ0QXRFbmQpIHsKKyAgaW5pdChUeSwgRnVuYywgSWZOb3JtYWwsIElmRXhjZXB0aW9uLCBBcmdzLCBCdW5kbGVzLCBOYW1lU3RyKTsKK30KKworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbEJySW5zdCBDbGFzcworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworLy8vIENhbGxCciBpbnN0cnVjdGlvbiwgdHJhY2tpbmcgZnVuY3Rpb24gY2FsbHMgdGhhdCBtYXkgbm90IHJldHVybiBjb250cm9sIGJ1dAorLy8vIGluc3RlYWQgdHJhbnNmZXIgaXQgdG8gYSB0aGlyZCBsb2NhdGlvbi4gVGhlIFN1YmNsYXNzRGF0YSBmaWVsZCBpcyB1c2VkIHRvCisvLy8gaG9sZCB0aGUgY2FsbGluZyBjb252ZW50aW9uIG9mIHRoZSBjYWxsLgorLy8vCitjbGFzcyBDYWxsQnJJbnN0IDogcHVibGljIENhbGxCYXNlIHsKKworICB1bnNpZ25lZCBOdW1JbmRpcmVjdERlc3RzOworCisgIENhbGxCckluc3QoY29uc3QgQ2FsbEJySW5zdCAmQkkpOworCisgIC8vLyBDb25zdHJ1Y3QgYSBDYWxsQnJJbnN0IGdpdmVuIGEgcmFuZ2Ugb2YgYXJndW1lbnRzLgorICAvLy8KKyAgLy8vIENvbnN0cnVjdCBhIENhbGxCckluc3QgZnJvbSBhIHJhbmdlIG9mIGFyZ3VtZW50cworICBpbmxpbmUgQ2FsbEJySW5zdChGdW5jdGlvblR5cGUgKlR5LCBWYWx1ZSAqRnVuYywgQmFzaWNCbG9jayAqRGVmYXVsdERlc3QsCisgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEJhc2ljQmxvY2sgKj4gSW5kaXJlY3REZXN0cywKKyAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKKyAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywgaW50IE51bU9wZXJhbmRzLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSk7CisKKyAgaW5saW5lIENhbGxCckluc3QoRnVuY3Rpb25UeXBlICpUeSwgVmFsdWUgKkZ1bmMsIEJhc2ljQmxvY2sgKkRlZmF1bHREZXN0LAorICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxCYXNpY0Jsb2NrICo+IEluZGlyZWN0RGVzdHMsCisgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IEJ1bmRsZXMsIGludCBOdW1PcGVyYW5kcywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgVHdpbmUgJk5hbWVTdHIsIEJhc2ljQmxvY2sgKkluc2VydEF0RW5kKTsKKworICB2b2lkIGluaXQoRnVuY3Rpb25UeXBlICpGVHksIFZhbHVlICpGdW5jLCBCYXNpY0Jsb2NrICpEZWZhdWx0RGVzdCwKKyAgICAgICAgICAgIEFycmF5UmVmPEJhc2ljQmxvY2sgKj4gSW5kaXJlY3REZXN0cywgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKKyAgICAgICAgICAgIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IEJ1bmRsZXMsIGNvbnN0IFR3aW5lICZOYW1lU3RyKTsKKworICAvLy8gQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIG9wZXJhbmRzIHRvIGFsbG9jYXRlLgorICBzdGF0aWMgaW50IENvbXB1dGVOdW1PcGVyYW5kcyhpbnQgTnVtQXJncywgaW50IE51bUluZGlyZWN0RGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBOdW1CdW5kbGVJbnB1dHMgPSAwKSB7CisgICAgLy8gV2UgbmVlZCBvbmUgb3BlcmFuZCBmb3IgdGhlIGNhbGxlZCBmdW5jdGlvbiwgcGx1cyBvdXIgZXh0cmEgb3BlcmFuZHMgYW5kCisgICAgLy8gdGhlIGlucHV0IG9wZXJhbmQgY291bnRzIHByb3ZpZGVkLgorICAgIHJldHVybiAyICsgTnVtSW5kaXJlY3REZXN0cyArIE51bUFyZ3MgKyBOdW1CdW5kbGVJbnB1dHM7CisgIH0KKworcHJvdGVjdGVkOgorICAvLyBOb3RlOiBJbnN0cnVjdGlvbiBuZWVkcyB0byBiZSBhIGZyaWVuZCBoZXJlIHRvIGNhbGwgY2xvbmVJbXBsLgorICBmcmllbmQgY2xhc3MgSW5zdHJ1Y3Rpb247CisKKyAgQ2FsbEJySW5zdCAqY2xvbmVJbXBsKCkgY29uc3Q7CisKK3B1YmxpYzoKKyAgc3RhdGljIENhbGxCckluc3QgKkNyZWF0ZShGdW5jdGlvblR5cGUgKlR5LCBWYWx1ZSAqRnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpEZWZhdWx0RGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxCYXNpY0Jsb2NrICo+IEluZGlyZWN0RGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywgY29uc3QgVHdpbmUgJk5hbWVTdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSA9IG51bGxwdHIpIHsKKyAgICBpbnQgTnVtT3BlcmFuZHMgPSBDb21wdXRlTnVtT3BlcmFuZHMoQXJncy5zaXplKCksIEluZGlyZWN0RGVzdHMuc2l6ZSgpKTsKKyAgICByZXR1cm4gbmV3IChOdW1PcGVyYW5kcykKKyAgICAgICAgQ2FsbEJySW5zdChUeSwgRnVuYywgRGVmYXVsdERlc3QsIEluZGlyZWN0RGVzdHMsIEFyZ3MsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgTnVtT3BlcmFuZHMsIE5hbWVTdHIsIEluc2VydEJlZm9yZSk7CisgIH0KKworICBzdGF0aWMgQ2FsbEJySW5zdCAqQ3JlYXRlKEZ1bmN0aW9uVHlwZSAqVHksIFZhbHVlICpGdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sgKkRlZmF1bHREZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEJhc2ljQmxvY2sgKj4gSW5kaXJlY3REZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPE9wZXJhbmRCdW5kbGVEZWY+IEJ1bmRsZXMgPSBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR3aW5lICZOYW1lU3RyID0gIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSA9IG51bGxwdHIpIHsKKyAgICBpbnQgTnVtT3BlcmFuZHMgPSBDb21wdXRlTnVtT3BlcmFuZHMoQXJncy5zaXplKCksIEluZGlyZWN0RGVzdHMuc2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudEJ1bmRsZUlucHV0cyhCdW5kbGVzKSk7CisgICAgdW5zaWduZWQgRGVzY3JpcHRvckJ5dGVzID0gQnVuZGxlcy5zaXplKCkgKiBzaXplb2YoQnVuZGxlT3BJbmZvKTsKKworICAgIHJldHVybiBuZXcgKE51bU9wZXJhbmRzLCBEZXNjcmlwdG9yQnl0ZXMpCisgICAgICAgIENhbGxCckluc3QoVHksIEZ1bmMsIERlZmF1bHREZXN0LCBJbmRpcmVjdERlc3RzLCBBcmdzLCBCdW5kbGVzLAorICAgICAgICAgICAgICAgICAgIE51bU9wZXJhbmRzLCBOYW1lU3RyLCBJbnNlcnRCZWZvcmUpOworICB9CisKKyAgc3RhdGljIENhbGxCckluc3QgKkNyZWF0ZShGdW5jdGlvblR5cGUgKlR5LCBWYWx1ZSAqRnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpEZWZhdWx0RGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxCYXNpY0Jsb2NrICo+IEluZGlyZWN0RGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywgY29uc3QgVHdpbmUgJk5hbWVTdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpIHsKKyAgICBpbnQgTnVtT3BlcmFuZHMgPSBDb21wdXRlTnVtT3BlcmFuZHMoQXJncy5zaXplKCksIEluZGlyZWN0RGVzdHMuc2l6ZSgpKTsKKyAgICByZXR1cm4gbmV3IChOdW1PcGVyYW5kcykKKyAgICAgICAgQ2FsbEJySW5zdChUeSwgRnVuYywgRGVmYXVsdERlc3QsIEluZGlyZWN0RGVzdHMsIEFyZ3MsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgTnVtT3BlcmFuZHMsIE5hbWVTdHIsIEluc2VydEF0RW5kKTsKKyAgfQorCisgIHN0YXRpYyBDYWxsQnJJbnN0ICpDcmVhdGUoRnVuY3Rpb25UeXBlICpUeSwgVmFsdWUgKkZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqRGVmYXVsdERlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8QmFzaWNCbG9jayAqPiBJbmRpcmVjdERlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpIHsKKyAgICBpbnQgTnVtT3BlcmFuZHMgPSBDb21wdXRlTnVtT3BlcmFuZHMoQXJncy5zaXplKCksIEluZGlyZWN0RGVzdHMuc2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudEJ1bmRsZUlucHV0cyhCdW5kbGVzKSk7CisgICAgdW5zaWduZWQgRGVzY3JpcHRvckJ5dGVzID0gQnVuZGxlcy5zaXplKCkgKiBzaXplb2YoQnVuZGxlT3BJbmZvKTsKKworICAgIHJldHVybiBuZXcgKE51bU9wZXJhbmRzLCBEZXNjcmlwdG9yQnl0ZXMpCisgICAgICAgIENhbGxCckluc3QoVHksIEZ1bmMsIERlZmF1bHREZXN0LCBJbmRpcmVjdERlc3RzLCBBcmdzLCBCdW5kbGVzLAorICAgICAgICAgICAgICAgICAgIE51bU9wZXJhbmRzLCBOYW1lU3RyLCBJbnNlcnRBdEVuZCk7CisgIH0KKworICBzdGF0aWMgQ2FsbEJySW5zdCAqQ3JlYXRlKEZ1bmN0aW9uQ2FsbGVlIEZ1bmMsIEJhc2ljQmxvY2sgKkRlZmF1bHREZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEJhc2ljQmxvY2sgKj4gSW5kaXJlY3REZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLCBjb25zdCBUd2luZSAmTmFtZVN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiAqSW5zZXJ0QmVmb3JlID0gbnVsbHB0cikgeworICAgIHJldHVybiBDcmVhdGUoRnVuYy5nZXRGdW5jdGlvblR5cGUoKSwgRnVuYy5nZXRDYWxsZWUoKSwgRGVmYXVsdERlc3QsCisgICAgICAgICAgICAgICAgICBJbmRpcmVjdERlc3RzLCBBcmdzLCBOYW1lU3RyLCBJbnNlcnRCZWZvcmUpOworICB9CisKKyAgc3RhdGljIENhbGxCckluc3QgKkNyZWF0ZShGdW5jdGlvbkNhbGxlZSBGdW5jLCBCYXNpY0Jsb2NrICpEZWZhdWx0RGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxCYXNpY0Jsb2NrICo+IEluZGlyZWN0RGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBCdW5kbGVzID0gTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciA9ICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRCZWZvcmUgPSBudWxscHRyKSB7CisgICAgcmV0dXJuIENyZWF0ZShGdW5jLmdldEZ1bmN0aW9uVHlwZSgpLCBGdW5jLmdldENhbGxlZSgpLCBEZWZhdWx0RGVzdCwKKyAgICAgICAgICAgICAgICAgIEluZGlyZWN0RGVzdHMsIEFyZ3MsIEJ1bmRsZXMsIE5hbWVTdHIsIEluc2VydEJlZm9yZSk7CisgIH0KKworICBzdGF0aWMgQ2FsbEJySW5zdCAqQ3JlYXRlKEZ1bmN0aW9uQ2FsbGVlIEZ1bmMsIEJhc2ljQmxvY2sgKkRlZmF1bHREZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEJhc2ljQmxvY2sgKj4gSW5kaXJlY3REZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSAqPiBBcmdzLCBjb25zdCBUd2luZSAmTmFtZVN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCkgeworICAgIHJldHVybiBDcmVhdGUoRnVuYy5nZXRGdW5jdGlvblR5cGUoKSwgRnVuYy5nZXRDYWxsZWUoKSwgRGVmYXVsdERlc3QsCisgICAgICAgICAgICAgICAgICBJbmRpcmVjdERlc3RzLCBBcmdzLCBOYW1lU3RyLCBJbnNlcnRBdEVuZCk7CisgIH0KKworICBzdGF0aWMgQ2FsbEJySW5zdCAqQ3JlYXRlKEZ1bmN0aW9uQ2FsbGVlIEZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqRGVmYXVsdERlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8QmFzaWNCbG9jayAqPiBJbmRpcmVjdERlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFZhbHVlICo+IEFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpIHsKKyAgICByZXR1cm4gQ3JlYXRlKEZ1bmMuZ2V0RnVuY3Rpb25UeXBlKCksIEZ1bmMuZ2V0Q2FsbGVlKCksIERlZmF1bHREZXN0LAorICAgICAgICAgICAgICAgICAgSW5kaXJlY3REZXN0cywgQXJncywgQnVuZGxlcywgTmFtZVN0ciwgSW5zZXJ0QXRFbmQpOworICB9CisKKyAgLy8vIENyZWF0ZSBhIGNsb25lIG9mIFxwIENCSSB3aXRoIGEgZGlmZmVyZW50IHNldCBvZiBvcGVyYW5kIGJ1bmRsZXMgYW5kCisgIC8vLyBpbnNlcnQgaXQgYmVmb3JlIFxwIEluc2VydFB0LgorICAvLy8KKyAgLy8vIFRoZSByZXR1cm5lZCBjYWxsYnIgaW5zdHJ1Y3Rpb24gaXMgaWRlbnRpY2FsIHRvIFxwIENCSSBpbiBldmVyeSB3YXkKKyAgLy8vIGV4Y2VwdCB0aGF0IHRoZSBvcGVyYW5kIGJ1bmRsZXMgZm9yIHRoZSBuZXcgaW5zdHJ1Y3Rpb24gYXJlIHNldCB0byB0aGUKKyAgLy8vIG9wZXJhbmQgYnVuZGxlcyBpbiBccCBCdW5kbGVzLgorICBzdGF0aWMgQ2FsbEJySW5zdCAqQ3JlYXRlKENhbGxCckluc3QgKkNCSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxPcGVyYW5kQnVuZGxlRGVmPiBCdW5kbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpJbnNlcnRQdCA9IG51bGxwdHIpOworCisgIC8vLyBSZXR1cm4gdGhlIG51bWJlciBvZiBjYWxsYnIgaW5kaXJlY3QgZGVzdCBsYWJlbHMuCisgIC8vLworICB1bnNpZ25lZCBnZXROdW1JbmRpcmVjdERlc3RzKCkgY29uc3QgeyByZXR1cm4gTnVtSW5kaXJlY3REZXN0czsgfQorCisgIC8vLyBnZXRJbmRpcmVjdERlc3RMYWJlbCAtIFJldHVybiB0aGUgaS10aCBpbmRpcmVjdCBkZXN0IGxhYmVsLgorICAvLy8KKyAgVmFsdWUgKmdldEluZGlyZWN0RGVzdExhYmVsKHVuc2lnbmVkIGkpIGNvbnN0IHsKKyAgICBhc3NlcnQoaSA8IGdldE51bUluZGlyZWN0RGVzdHMoKSAmJiAiT3V0IG9mIGJvdW5kcyEiKTsKKyAgICByZXR1cm4gZ2V0T3BlcmFuZChpICsgZ2V0TnVtQXJnT3BlcmFuZHMoKSArIGdldE51bVRvdGFsQnVuZGxlT3BlcmFuZHMoKSArCisgICAgICAgICAgICAgICAgICAgICAgMSk7CisgIH0KKworICBWYWx1ZSAqZ2V0SW5kaXJlY3REZXN0TGFiZWxVc2UodW5zaWduZWQgaSkgY29uc3QgeworICAgIGFzc2VydChpIDwgZ2V0TnVtSW5kaXJlY3REZXN0cygpICYmICJPdXQgb2YgYm91bmRzISIpOworICAgIHJldHVybiBnZXRPcGVyYW5kVXNlKGkgKyBnZXROdW1BcmdPcGVyYW5kcygpICsgZ2V0TnVtVG90YWxCdW5kbGVPcGVyYW5kcygpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKKyAgfQorCisgIC8vIFJldHVybiB0aGUgZGVzdGluYXRpb24gYmFzaWMgYmxvY2tzLi4uCisgIEJhc2ljQmxvY2sgKmdldERlZmF1bHREZXN0KCkgY29uc3QgeworICAgIHJldHVybiBjYXN0PEJhc2ljQmxvY2s+KCooJk9wPC0xPigpIC0gZ2V0TnVtSW5kaXJlY3REZXN0cygpIC0gMSkpOworICB9CisgIEJhc2ljQmxvY2sgKmdldEluZGlyZWN0RGVzdCh1bnNpZ25lZCBpKSBjb25zdCB7CisgICAgcmV0dXJuIGNhc3Q8QmFzaWNCbG9jaz4oKigmT3A8LTE+KCkgLSBnZXROdW1JbmRpcmVjdERlc3RzKCkgKyBpKSk7CisgIH0KKyAgU21hbGxWZWN0b3I8QmFzaWNCbG9jayAqLCAxNj4gZ2V0SW5kaXJlY3REZXN0cygpIGNvbnN0IHsKKyAgICBTbWFsbFZlY3RvcjxCYXNpY0Jsb2NrICosIDE2PiBJbmRpcmVjdERlc3RzOworICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGUgPSBnZXROdW1JbmRpcmVjdERlc3RzKCk7IGkgPCBlOyArK2kpCisgICAgICBJbmRpcmVjdERlc3RzLnB1c2hfYmFjayhnZXRJbmRpcmVjdERlc3QoaSkpOworICAgIHJldHVybiBJbmRpcmVjdERlc3RzOworICB9CisgIHZvaWQgc2V0RGVmYXVsdERlc3QoQmFzaWNCbG9jayAqQikgeworICAgICooJk9wPC0xPigpIC0gZ2V0TnVtSW5kaXJlY3REZXN0cygpIC0gMSkgPSByZWludGVycHJldF9jYXN0PFZhbHVlICo+KEIpOworICB9CisgIHZvaWQgc2V0SW5kaXJlY3REZXN0KHVuc2lnbmVkIGksIEJhc2ljQmxvY2sgKkIpIHsKKyAgICAqKCZPcDwtMT4oKSAtIGdldE51bUluZGlyZWN0RGVzdHMoKSArIGkpID0gcmVpbnRlcnByZXRfY2FzdDxWYWx1ZSAqPihCKTsKKyAgfQorCisgIEJhc2ljQmxvY2sgKmdldFN1Y2Nlc3Nvcih1bnNpZ25lZCBpKSBjb25zdCB7CisgICAgYXNzZXJ0KGkgPCBnZXROdW1TdWNjZXNzb3JzKCkgKyAxICYmCisgICAgICAgICAgICJTdWNjZXNzb3IgIyBvdXQgb2YgcmFuZ2UgZm9yIGNhbGxiciEiKTsKKyAgICByZXR1cm4gaSA9PSAwID8gZ2V0RGVmYXVsdERlc3QoKSA6IGdldEluZGlyZWN0RGVzdChpIC0gMSk7CisgIH0KKworICB2b2lkIHNldFN1Y2Nlc3Nvcih1bnNpZ25lZCBpZHgsIEJhc2ljQmxvY2sgKk5ld1N1Y2MpIHsKKyAgICBhc3NlcnQoaWR4IDwgZ2V0TnVtSW5kaXJlY3REZXN0cygpICsgMSAmJgorICAgICAgICAgICAiU3VjY2Vzc29yICMgb3V0IG9mIHJhbmdlIGZvciBjYWxsYnIhIik7CisgICAgKigmT3A8LTE+KCkgLSBnZXROdW1JbmRpcmVjdERlc3RzKCkgLTEgKyBpZHgpID0KKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxWYWx1ZSAqPihOZXdTdWNjKTsKKyAgfQorCisgIHVuc2lnbmVkIGdldE51bVN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBnZXROdW1JbmRpcmVjdERlc3RzKCkgKyAxOyB9CisKKyAgLy8gTWV0aG9kcyBmb3Igc3VwcG9ydCB0eXBlIGlucXVpcnkgdGhyb3VnaCBpc2EsIGNhc3QsIGFuZCBkeW5fY2FzdDoKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBJbnN0cnVjdGlvbiAqSSkgeworICAgIHJldHVybiAoSS0+Z2V0T3Bjb2RlKCkgPT0gSW5zdHJ1Y3Rpb246OkNhbGxCcik7CisgIH0KKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBWYWx1ZSAqVikgeworICAgIHJldHVybiBpc2E8SW5zdHJ1Y3Rpb24+KFYpICYmIGNsYXNzb2YoY2FzdDxJbnN0cnVjdGlvbj4oVikpOworICB9CisKK3ByaXZhdGU6CisKKyAgLy8gU2hhZG93IEluc3RydWN0aW9uOjpzZXRJbnN0cnVjdGlvblN1YmNsYXNzRGF0YSB3aXRoIGEgcHJpdmF0ZSBmb3J3YXJkaW5nCisgIC8vIG1ldGhvZCBzbyB0aGF0IHN1YmNsYXNzZXMgY2Fubm90IGFjY2lkZW50YWxseSB1c2UgaXQuCisgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25TdWJjbGFzc0RhdGEodW5zaWduZWQgc2hvcnQgRCkgeworICAgIEluc3RydWN0aW9uOjpzZXRJbnN0cnVjdGlvblN1YmNsYXNzRGF0YShEKTsKKyAgfQorfTsKKworQ2FsbEJySW5zdDo6Q2FsbEJySW5zdChGdW5jdGlvblR5cGUgKlR5LCBWYWx1ZSAqRnVuYywgQmFzaWNCbG9jayAqRGVmYXVsdERlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEJhc2ljQmxvY2sgKj4gSW5kaXJlY3REZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywgaW50IE51bU9wZXJhbmRzLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSkKKyAgICA6IENhbGxCYXNlKFR5LT5nZXRSZXR1cm5UeXBlKCksIEluc3RydWN0aW9uOjpDYWxsQnIsCisgICAgICAgICAgICAgICBPcGVyYW5kVHJhaXRzPENhbGxCYXNlPjo6b3BfZW5kKHRoaXMpIC0gTnVtT3BlcmFuZHMsIE51bU9wZXJhbmRzLAorICAgICAgICAgICAgICAgSW5zZXJ0QmVmb3JlKSB7CisgIGluaXQoVHksIEZ1bmMsIERlZmF1bHREZXN0LCBJbmRpcmVjdERlc3RzLCBBcmdzLCBCdW5kbGVzLCBOYW1lU3RyKTsKK30KKworQ2FsbEJySW5zdDo6Q2FsbEJySW5zdChGdW5jdGlvblR5cGUgKlR5LCBWYWx1ZSAqRnVuYywgQmFzaWNCbG9jayAqRGVmYXVsdERlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPEJhc2ljQmxvY2sgKj4gSW5kaXJlY3REZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8VmFsdWUgKj4gQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8T3BlcmFuZEJ1bmRsZURlZj4gQnVuZGxlcywgaW50IE51bU9wZXJhbmRzLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN0ciwgQmFzaWNCbG9jayAqSW5zZXJ0QXRFbmQpCisgICAgOiBDYWxsQmFzZSgKICAgICAgICAgICBjYXN0PEZ1bmN0aW9uVHlwZT4oCiAgICAgICAgICAgICAgIGNhc3Q8UG9pbnRlclR5cGU+KEZ1bmMtPmdldFR5cGUoKSktPmdldEVsZW1lbnRUeXBlKCkpCiAgICAgICAgICAgICAgIC0+Z2V0UmV0dXJuVHlwZSgpLAotICAgICAgICAgIEluc3RydWN0aW9uOjpJbnZva2UsCi0gICAgICAgICAgT3BlcmFuZFRyYWl0czxDYWxsQmFzZTxJbnZva2VJbnN0Pj46Om9wX2VuZCh0aGlzKSAtIFZhbHVlcywgVmFsdWVzLAorICAgICAgICAgIEluc3RydWN0aW9uOjpDYWxsQnIsCisgICAgICAgICAgT3BlcmFuZFRyYWl0czxDYWxsQmFzZT46Om9wX2VuZCh0aGlzKSAtIE51bU9wZXJhbmRzLCBOdW1PcGVyYW5kcywKICAgICAgICAgICBJbnNlcnRBdEVuZCkgewotICBpbml0KEZ1bmMsIElmTm9ybWFsLCBJZkV4Y2VwdGlvbiwgQXJncywgQnVuZGxlcywgTmFtZVN0cik7CisgIGluaXQoVHksIEZ1bmMsIERlZmF1bHREZXN0LCBJbmRpcmVjdERlc3RzLCBBcmdzLCBCdW5kbGVzLCBOYW1lU3RyKTsKIH0KIAotCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bWVJbnN0IENsYXNzCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwpAQCAtNDIyNiw3ICs0MTM2LDcgQEAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLy8gUmVzdW1lIHRoZSBwcm9wYWdhdGlvbiBvZiBhbiBleGNlcHRpb24uCiAvLy8KLWNsYXNzIFJlc3VtZUluc3QgOiBwdWJsaWMgVGVybWluYXRvckluc3QgeworY2xhc3MgUmVzdW1lSW5zdCA6IHB1YmxpYyBJbnN0cnVjdGlvbiB7CiAgIFJlc3VtZUluc3QoY29uc3QgUmVzdW1lSW5zdCAmUkkpOwogCiAgIGV4cGxpY2l0IFJlc3VtZUluc3QoVmFsdWUgKkV4biwgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZT1udWxscHRyKTsKQEAgLTQyNjQsOCArNDE3NCw2IEBACiAgIH0KIAogcHJpdmF0ZToKLSAgZnJpZW5kIFRlcm1pbmF0b3JJbnN0OwotCiAgIEJhc2ljQmxvY2sgKmdldFN1Y2Nlc3Nvcih1bnNpZ25lZCBpZHgpIGNvbnN0IHsKICAgICBsbHZtX3VucmVhY2hhYmxlKCJSZXN1bWVJbnN0IGhhcyBubyBzdWNjZXNzb3JzISIpOwogICB9CkBAIC00Mjg1LDcgKzQxOTMsNyBAQAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vICAgICAgICAgICAgICAgICAgICAgICAgIENhdGNoU3dpdGNoSW5zdCBDbGFzcwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLWNsYXNzIENhdGNoU3dpdGNoSW5zdCA6IHB1YmxpYyBUZXJtaW5hdG9ySW5zdCB7CitjbGFzcyBDYXRjaFN3aXRjaEluc3QgOiBwdWJsaWMgSW5zdHJ1Y3Rpb24gewogICAvLy8gVGhlIG51bWJlciBvZiBvcGVyYW5kcyBhY3R1YWxseSBhbGxvY2F0ZWQuICBOdW1PcGVyYW5kcyBpcwogICAvLy8gdGhlIG51bWJlciBhY3R1YWxseSBpbiB1c2UuCiAgIHVuc2lnbmVkIFJlc2VydmVkU3BhY2U7CkBAIC00NTUxLDcgKzQ0NTksNyBAQAogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2F0Y2hSZXR1cm5JbnN0IENsYXNzCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCi1jbGFzcyBDYXRjaFJldHVybkluc3QgOiBwdWJsaWMgVGVybWluYXRvckluc3QgeworY2xhc3MgQ2F0Y2hSZXR1cm5JbnN0IDogcHVibGljIEluc3RydWN0aW9uIHsKICAgQ2F0Y2hSZXR1cm5JbnN0KGNvbnN0IENhdGNoUmV0dXJuSW5zdCAmUkkpOwogICBDYXRjaFJldHVybkluc3QoVmFsdWUgKkNhdGNoUGFkLCBCYXNpY0Jsb2NrICpCQiwgSW5zdHJ1Y3Rpb24gKkluc2VydEJlZm9yZSk7CiAgIENhdGNoUmV0dXJuSW5zdChWYWx1ZSAqQ2F0Y2hQYWQsIEJhc2ljQmxvY2sgKkJCLCBCYXNpY0Jsb2NrICpJbnNlcnRBdEVuZCk7CkBAIC00NjExLDggKzQ1MTksNiBAQAogICB9CiAKIHByaXZhdGU6Ci0gIGZyaWVuZCBUZXJtaW5hdG9ySW5zdDsKLQogICBCYXNpY0Jsb2NrICpnZXRTdWNjZXNzb3IodW5zaWduZWQgSWR4KSBjb25zdCB7CiAgICAgYXNzZXJ0KElkeCA8IGdldE51bVN1Y2Nlc3NvcnMoKSAmJiAiU3VjY2Vzc29yICMgb3V0IG9mIHJhbmdlIGZvciBjYXRjaHJldCEiKTsKICAgICByZXR1cm4gZ2V0U3VjY2Vzc29yKCk7CkBAIC00NjM0LDcgKzQ1NDAsNyBAQAogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xlYW51cFJldHVybkluc3QgQ2xhc3MKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKLWNsYXNzIENsZWFudXBSZXR1cm5JbnN0IDogcHVibGljIFRlcm1pbmF0b3JJbnN0IHsKK2NsYXNzIENsZWFudXBSZXR1cm5JbnN0IDogcHVibGljIEluc3RydWN0aW9uIHsKIHByaXZhdGU6CiAgIENsZWFudXBSZXR1cm5JbnN0KGNvbnN0IENsZWFudXBSZXR1cm5JbnN0ICZSSSk7CiAgIENsZWFudXBSZXR1cm5JbnN0KFZhbHVlICpDbGVhbnVwUGFkLCBCYXNpY0Jsb2NrICpVbndpbmRCQiwgdW5zaWduZWQgVmFsdWVzLApAQCAtNDcwNyw4ICs0NjEzLDYgQEAKICAgfQogCiBwcml2YXRlOgotICBmcmllbmQgVGVybWluYXRvckluc3Q7Ci0KICAgQmFzaWNCbG9jayAqZ2V0U3VjY2Vzc29yKHVuc2lnbmVkIElkeCkgY29uc3QgewogICAgIGFzc2VydChJZHggPT0gMCk7CiAgICAgcmV0dXJuIGdldFVud2luZERlc3QoKTsKQEAgLTQ3NDEsNyArNDY0NSw3IEBACiAvLy8gcHJlc2VuY2Ugb2YgdGhpcyBpbnN0cnVjdGlvbiBpbmRpY2F0ZXMgc29tZSBoaWdoZXIgbGV2ZWwga25vd2xlZGdlIHRoYXQgdGhlCiAvLy8gZW5kIG9mIHRoZSBibG9jayBjYW5ub3QgYmUgcmVhY2hlZC4KIC8vLwotY2xhc3MgVW5yZWFjaGFibGVJbnN0IDogcHVibGljIFRlcm1pbmF0b3JJbnN0IHsKK2NsYXNzIFVucmVhY2hhYmxlSW5zdCA6IHB1YmxpYyBJbnN0cnVjdGlvbiB7CiBwcm90ZWN0ZWQ6CiAgIC8vIE5vdGU6IEluc3RydWN0aW9uIG5lZWRzIHRvIGJlIGEgZnJpZW5kIGhlcmUgdG8gY2FsbCBjbG9uZUltcGwuCiAgIGZyaWVuZCBjbGFzcyBJbnN0cnVjdGlvbjsKQEAgLTQ3NjgsOCArNDY3Miw2IEBACiAgIH0KIAogcHJpdmF0ZToKLSAgZnJpZW5kIFRlcm1pbmF0b3JJbnN0OwotCiAgIEJhc2ljQmxvY2sgKmdldFN1Y2Nlc3Nvcih1bnNpZ25lZCBpZHgpIGNvbnN0IHsKICAgICBsbHZtX3VucmVhY2hhYmxlKCJVbnJlYWNoYWJsZUluc3QgaGFzIG5vIHN1Y2Nlc3NvcnMhIik7CiAgIH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljRW51bXMuaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNFbnVtcy5pbmMKaW5kZXggYWRjZTlkYi4uZWYyMWI2ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNFbnVtcy5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNFbnVtcy5pbmMKQEAgLTU4LDYgKzU4LDcgQEAKICAgICBlaF9kd2FyZl9jZmEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5laC5kd2FyZi5jZmEKICAgICBlaF9leGNlcHRpb25jb2RlLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5laC5leGNlcHRpb25jb2RlCiAgICAgZWhfZXhjZXB0aW9ucG9pbnRlciwgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uZWguZXhjZXB0aW9ucG9pbnRlcgorICAgIGVoX3JlY292ZXJmcCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmVoLnJlY292ZXJmcAogICAgIGVoX3JldHVybl9pMzIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmVoLnJldHVybi5pMzIKICAgICBlaF9yZXR1cm5faTY0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5laC5yZXR1cm4uaTY0CiAgICAgZWhfc2psal9jYWxsc2l0ZSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uZWguc2psai5jYWxsc2l0ZQpAQCAtNzEsMTEgKzcyLDEzIEBACiAgICAgZXhwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uZXhwCiAgICAgZXhwMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uZXhwMgogICAgIGV4cGVjdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmV4cGVjdAorICAgIGV4cGVyaW1lbnRhbF9jb25zdHJhaW5lZF9jZWlsLCAgICAgICAgICAgICAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5jZWlsCiAgICAgZXhwZXJpbWVudGFsX2NvbnN0cmFpbmVkX2NvcywgICAgICAgICAgICAgIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLmNvcwogICAgIGV4cGVyaW1lbnRhbF9jb25zdHJhaW5lZF9leHAsICAgICAgICAgICAgICAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5leHAKICAgICBleHBlcmltZW50YWxfY29uc3RyYWluZWRfZXhwMiwgICAgICAgICAgICAgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQuZXhwMgogICAgIGV4cGVyaW1lbnRhbF9jb25zdHJhaW5lZF9mYWRkLCAgICAgICAgICAgICAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5mYWRkCiAgICAgZXhwZXJpbWVudGFsX2NvbnN0cmFpbmVkX2ZkaXYsICAgICAgICAgICAgIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLmZkaXYKKyAgICBleHBlcmltZW50YWxfY29uc3RyYWluZWRfZmxvb3IsICAgICAgICAgICAgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQuZmxvb3IKICAgICBleHBlcmltZW50YWxfY29uc3RyYWluZWRfZm1hLCAgICAgICAgICAgICAgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQuZm1hCiAgICAgZXhwZXJpbWVudGFsX2NvbnN0cmFpbmVkX2ZtdWwsICAgICAgICAgICAgIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLmZtdWwKICAgICBleHBlcmltZW50YWxfY29uc3RyYWluZWRfZnJlbSwgICAgICAgICAgICAgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQuZnJlbQpAQCAtODMsMTIgKzg2LDE2IEBACiAgICAgZXhwZXJpbWVudGFsX2NvbnN0cmFpbmVkX2xvZywgICAgICAgICAgICAgIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLmxvZwogICAgIGV4cGVyaW1lbnRhbF9jb25zdHJhaW5lZF9sb2cxMCwgICAgICAgICAgICAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5sb2cxMAogICAgIGV4cGVyaW1lbnRhbF9jb25zdHJhaW5lZF9sb2cyLCAgICAgICAgICAgICAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5sb2cyCisgICAgZXhwZXJpbWVudGFsX2NvbnN0cmFpbmVkX21heG51bSwgICAgICAgICAgIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLm1heG51bQorICAgIGV4cGVyaW1lbnRhbF9jb25zdHJhaW5lZF9taW5udW0sICAgICAgICAgICAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5taW5udW0KICAgICBleHBlcmltZW50YWxfY29uc3RyYWluZWRfbmVhcmJ5aW50LCAgICAgICAgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQubmVhcmJ5aW50CiAgICAgZXhwZXJpbWVudGFsX2NvbnN0cmFpbmVkX3BvdywgICAgICAgICAgICAgIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLnBvdwogICAgIGV4cGVyaW1lbnRhbF9jb25zdHJhaW5lZF9wb3dpLCAgICAgICAgICAgICAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5wb3dpCiAgICAgZXhwZXJpbWVudGFsX2NvbnN0cmFpbmVkX3JpbnQsICAgICAgICAgICAgIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLnJpbnQKKyAgICBleHBlcmltZW50YWxfY29uc3RyYWluZWRfcm91bmQsICAgICAgICAgICAgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQucm91bmQKICAgICBleHBlcmltZW50YWxfY29uc3RyYWluZWRfc2luLCAgICAgICAgICAgICAgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQuc2luCiAgICAgZXhwZXJpbWVudGFsX2NvbnN0cmFpbmVkX3NxcnQsICAgICAgICAgICAgIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLnNxcnQKKyAgICBleHBlcmltZW50YWxfY29uc3RyYWluZWRfdHJ1bmMsICAgICAgICAgICAgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQudHJ1bmMKICAgICBleHBlcmltZW50YWxfZGVvcHRpbWl6ZSwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5leHBlcmltZW50YWwuZGVvcHRpbWl6ZQogICAgIGV4cGVyaW1lbnRhbF9nY19yZWxvY2F0ZSwgICAgICAgICAgICAgICAgICAvLyBsbHZtLmV4cGVyaW1lbnRhbC5nYy5yZWxvY2F0ZQogICAgIGV4cGVyaW1lbnRhbF9nY19yZXN1bHQsICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmV4cGVyaW1lbnRhbC5nYy5yZXN1bHQKQEAgLTExMCw2ICsxMTcsNyBAQAogICAgIGV4cGVyaW1lbnRhbF92ZWN0b3JfcmVkdWNlX3VtYXgsICAgICAgICAgICAvLyBsbHZtLmV4cGVyaW1lbnRhbC52ZWN0b3IucmVkdWNlLnVtYXgKICAgICBleHBlcmltZW50YWxfdmVjdG9yX3JlZHVjZV91bWluLCAgICAgICAgICAgLy8gbGx2bS5leHBlcmltZW50YWwudmVjdG9yLnJlZHVjZS51bWluCiAgICAgZXhwZXJpbWVudGFsX3ZlY3Rvcl9yZWR1Y2VfeG9yLCAgICAgICAgICAgIC8vIGxsdm0uZXhwZXJpbWVudGFsLnZlY3Rvci5yZWR1Y2UueG9yCisgICAgZXhwZXJpbWVudGFsX3dpZGVuYWJsZV9jb25kaXRpb24sICAgICAgICAgIC8vIGxsdm0uZXhwZXJpbWVudGFsLndpZGVuYWJsZS5jb25kaXRpb24KICAgICBmYWJzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5mYWJzCiAgICAgZmxvb3IsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uZmxvb3IKICAgICBmbHRfcm91bmRzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5mbHQucm91bmRzCkBAIC0xMjIsNiArMTMwLDcgQEAKICAgICBnY3Jvb3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5nY3Jvb3QKICAgICBnY3dyaXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5nY3dyaXRlCiAgICAgZ2V0X2R5bmFtaWNfYXJlYV9vZmZzZXQsICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uZ2V0LmR5bmFtaWMuYXJlYS5vZmZzZXQKKyAgICBod2FzYW5fY2hlY2tfbWVtYWNjZXNzLCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5od2FzYW4uY2hlY2subWVtYWNjZXNzCiAgICAgaWNhbGxfYnJhbmNoX2Z1bm5lbCwgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaWNhbGwuYnJhbmNoLmZ1bm5lbAogICAgIGluaXRfdHJhbXBvbGluZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmluaXQudHJhbXBvbGluZQogICAgIGluc3RycHJvZl9pbmNyZW1lbnQsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmluc3RycHJvZi5pbmNyZW1lbnQKQEAgLTEyOSw2ICsxMzgsNyBAQAogICAgIGluc3RycHJvZl92YWx1ZV9wcm9maWxlLCAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmluc3RycHJvZi52YWx1ZS5wcm9maWxlCiAgICAgaW52YXJpYW50X2VuZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaW52YXJpYW50LmVuZAogICAgIGludmFyaWFudF9zdGFydCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmludmFyaWFudC5zdGFydAorICAgIGlzX2NvbnN0YW50LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmlzLmNvbnN0YW50CiAgICAgbGF1bmRlcl9pbnZhcmlhbnRfZ3JvdXAsICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ubGF1bmRlci5pbnZhcmlhbnQuZ3JvdXAKICAgICBsaWZldGltZV9lbmQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5saWZldGltZS5lbmQKICAgICBsaWZldGltZV9zdGFydCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5saWZldGltZS5zdGFydApAQCAtMTQ2LDYgKzE1Niw3IEBACiAgICAgbWFza2VkX2xvYWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ubWFza2VkLmxvYWQKICAgICBtYXNrZWRfc2NhdHRlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5tYXNrZWQuc2NhdHRlcgogICAgIG1hc2tlZF9zdG9yZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLm1hc2tlZC5zdG9yZQorICAgIG1heGltdW0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLm1heGltdW0KICAgICBtYXhudW0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5tYXhudW0KICAgICBtZW1jcHksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5tZW1jcHkKICAgICBtZW1jcHlfZWxlbWVudF91bm9yZGVyZWRfYXRvbWljLCAgICAgICAgICAgLy8gbGx2bS5tZW1jcHkuZWxlbWVudC51bm9yZGVyZWQuYXRvbWljCkBAIC0xNTMsOCArMTY0LDM5IEBACiAgICAgbWVtbW92ZV9lbGVtZW50X3Vub3JkZXJlZF9hdG9taWMsICAgICAgICAgIC8vIGxsdm0ubWVtbW92ZS5lbGVtZW50LnVub3JkZXJlZC5hdG9taWMKICAgICBtZW1zZXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5tZW1zZXQKICAgICBtZW1zZXRfZWxlbWVudF91bm9yZGVyZWRfYXRvbWljLCAgICAgICAgICAgLy8gbGx2bS5tZW1zZXQuZWxlbWVudC51bm9yZGVyZWQuYXRvbWljCisgICAgbWluaW11bSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ubWluaW11bQogICAgIG1pbm51bSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLm1pbm51bQogICAgIG5lYXJieWludCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLm5lYXJieWludAorICAgIG9iamNfYXJjX2Fubm90YXRpb25fYm90dG9tdXBfYmJlbmQsICAgICAgICAvLyBsbHZtLm9iamMuYXJjLmFubm90YXRpb24uYm90dG9tdXAuYmJlbmQKKyAgICBvYmpjX2FyY19hbm5vdGF0aW9uX2JvdHRvbXVwX2Jic3RhcnQsICAgICAgLy8gbGx2bS5vYmpjLmFyYy5hbm5vdGF0aW9uLmJvdHRvbXVwLmJic3RhcnQKKyAgICBvYmpjX2FyY19hbm5vdGF0aW9uX3RvcGRvd25fYmJlbmQsICAgICAgICAgLy8gbGx2bS5vYmpjLmFyYy5hbm5vdGF0aW9uLnRvcGRvd24uYmJlbmQKKyAgICBvYmpjX2FyY19hbm5vdGF0aW9uX3RvcGRvd25fYmJzdGFydCwgICAgICAgLy8gbGx2bS5vYmpjLmFyYy5hbm5vdGF0aW9uLnRvcGRvd24uYmJzdGFydAorICAgIG9iamNfYXV0b3JlbGVhc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLm9iamMuYXV0b3JlbGVhc2UKKyAgICBvYmpjX2F1dG9yZWxlYXNlUG9vbFBvcCwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5vYmpjLmF1dG9yZWxlYXNlUG9vbFBvcAorICAgIG9iamNfYXV0b3JlbGVhc2VQb29sUHVzaCwgICAgICAgICAgICAgICAgICAvLyBsbHZtLm9iamMuYXV0b3JlbGVhc2VQb29sUHVzaAorICAgIG9iamNfYXV0b3JlbGVhc2VSZXR1cm5WYWx1ZSwgICAgICAgICAgICAgICAvLyBsbHZtLm9iamMuYXV0b3JlbGVhc2VSZXR1cm5WYWx1ZQorICAgIG9iamNfY2xhbmdfYXJjX3VzZSwgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLm9iamMuY2xhbmcuYXJjLnVzZQorICAgIG9iamNfY29weVdlYWssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLm9iamMuY29weVdlYWsKKyAgICBvYmpjX2Rlc3Ryb3lXZWFrLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5vYmpjLmRlc3Ryb3lXZWFrCisgICAgb2JqY19pbml0V2VhaywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ub2JqYy5pbml0V2VhaworICAgIG9iamNfbG9hZFdlYWssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLm9iamMubG9hZFdlYWsKKyAgICBvYmpjX2xvYWRXZWFrUmV0YWluZWQsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5vYmpjLmxvYWRXZWFrUmV0YWluZWQKKyAgICBvYmpjX21vdmVXZWFrLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5vYmpjLm1vdmVXZWFrCisgICAgb2JqY19yZWxlYXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ub2JqYy5yZWxlYXNlCisgICAgb2JqY19yZXRhaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ub2JqYy5yZXRhaW4KKyAgICBvYmpjX3JldGFpbl9hdXRvcmVsZWFzZSwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5vYmpjLnJldGFpbi5hdXRvcmVsZWFzZQorICAgIG9iamNfcmV0YWluQXV0b3JlbGVhc2UsICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLm9iamMucmV0YWluQXV0b3JlbGVhc2UKKyAgICBvYmpjX3JldGFpbkF1dG9yZWxlYXNlUmV0dXJuVmFsdWUsICAgICAgICAgLy8gbGx2bS5vYmpjLnJldGFpbkF1dG9yZWxlYXNlUmV0dXJuVmFsdWUKKyAgICBvYmpjX3JldGFpbkF1dG9yZWxlYXNlZFJldHVyblZhbHVlLCAgICAgICAgLy8gbGx2bS5vYmpjLnJldGFpbkF1dG9yZWxlYXNlZFJldHVyblZhbHVlCisgICAgb2JqY19yZXRhaW5CbG9jaywgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ub2JqYy5yZXRhaW5CbG9jaworICAgIG9iamNfcmV0YWluZWRPYmplY3QsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLm9iamMucmV0YWluZWRPYmplY3QKKyAgICBvYmpjX3N0b3JlU3Ryb25nLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5vYmpjLnN0b3JlU3Ryb25nCisgICAgb2JqY19zdG9yZVdlYWssICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ub2JqYy5zdG9yZVdlYWsKKyAgICBvYmpjX3N5bmNfZW50ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5vYmpjLnN5bmMuZW50ZXIKKyAgICBvYmpjX3N5bmNfZXhpdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5vYmpjLnN5bmMuZXhpdAorICAgIG9iamNfdW5yZXRhaW5lZE9iamVjdCwgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLm9iamMudW5yZXRhaW5lZE9iamVjdAorICAgIG9iamNfdW5yZXRhaW5lZFBvaW50ZXIsICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLm9iamMudW5yZXRhaW5lZFBvaW50ZXIKKyAgICBvYmpjX3Vuc2FmZUNsYWltQXV0b3JlbGVhc2VkUmV0dXJuVmFsdWUsICAgLy8gbGx2bS5vYmpjLnVuc2FmZUNsYWltQXV0b3JlbGVhc2VkUmV0dXJuVmFsdWUKICAgICBvYmplY3RzaXplLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5vYmplY3RzaXplCiAgICAgcGNtYXJrZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ucGNtYXJrZXIKICAgICBwb3csICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5wb3cKQEAgLTE2NiwxNSArMjA4LDE5IEBACiAgICAgcmV0dXJuYWRkcmVzcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ucmV0dXJuYWRkcmVzcwogICAgIHJpbnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnJpbnQKICAgICByb3VuZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5yb3VuZAorICAgIHNhZGRfc2F0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnNhZGQuc2F0CiAgICAgc2FkZF93aXRoX292ZXJmbG93LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uc2FkZC53aXRoLm92ZXJmbG93CiAgICAgc2V0am1wLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uc2V0am1wCiAgICAgc2lkZWVmZmVjdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uc2lkZWVmZmVjdAogICAgIHNpZ2xvbmdqbXAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnNpZ2xvbmdqbXAKICAgICBzaWdzZXRqbXAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5zaWdzZXRqbXAKICAgICBzaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5zaW4KKyAgICBzbXVsX2ZpeCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5zbXVsLmZpeAogICAgIHNtdWxfd2l0aF9vdmVyZmxvdywgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnNtdWwud2l0aC5vdmVyZmxvdworICAgIHNwb25lbnRyeSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnNwb25lbnRyeQogICAgIHNxcnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnNxcnQKICAgICBzc2FfY29weSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5zc2EuY29weQorICAgIHNzdWJfc2F0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnNzdWIuc2F0CiAgICAgc3N1Yl93aXRoX292ZXJmbG93LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uc3N1Yi53aXRoLm92ZXJmbG93CiAgICAgc3RhY2tndWFyZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uc3RhY2tndWFyZAogICAgIHN0YWNrcHJvdGVjdG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnN0YWNrcHJvdGVjdG9yCkBAIC0xODYsOCArMjMyLDExIEBACiAgICAgdHJ1bmMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0udHJ1bmMKICAgICB0eXBlX2NoZWNrZWRfbG9hZCwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS50eXBlLmNoZWNrZWQubG9hZAogICAgIHR5cGVfdGVzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnR5cGUudGVzdAorICAgIHVhZGRfc2F0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnVhZGQuc2F0CiAgICAgdWFkZF93aXRoX292ZXJmbG93LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0udWFkZC53aXRoLm92ZXJmbG93CisgICAgdW11bF9maXgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0udW11bC5maXgKICAgICB1bXVsX3dpdGhfb3ZlcmZsb3csICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS51bXVsLndpdGgub3ZlcmZsb3cKKyAgICB1c3ViX3NhdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS51c3ViLnNhdAogICAgIHVzdWJfd2l0aF9vdmVyZmxvdywgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnVzdWIud2l0aC5vdmVyZmxvdwogICAgIHZhY29weSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnZhX2NvcHkKICAgICB2YWVuZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS52YV9lbmQKQEAgLTI1OSw2ICszMDgsMTAgQEAKICAgICBhYXJjaDY0X25lb25fZm1pbm5tdiwgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hYXJjaDY0Lm5lb24uZm1pbm5tdgogICAgIGFhcmNoNjRfbmVvbl9mbWlucCwgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFhcmNoNjQubmVvbi5mbWlucAogICAgIGFhcmNoNjRfbmVvbl9mbWludiwgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFhcmNoNjQubmVvbi5mbWludgorICAgIGFhcmNoNjRfbmVvbl9mbWxhbCwgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFhcmNoNjQubmVvbi5mbWxhbAorICAgIGFhcmNoNjRfbmVvbl9mbWxhbDIsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFhcmNoNjQubmVvbi5mbWxhbDIKKyAgICBhYXJjaDY0X25lb25fZm1sc2wsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hYXJjaDY0Lm5lb24uZm1sc2wKKyAgICBhYXJjaDY0X25lb25fZm1sc2wyLCAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hYXJjaDY0Lm5lb24uZm1sc2wyCiAgICAgYWFyY2g2NF9uZW9uX2ZtdWx4LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uYWFyY2g2NC5uZW9uLmZtdWx4CiAgICAgYWFyY2g2NF9uZW9uX2ZyZWNwZSwgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uYWFyY2g2NC5uZW9uLmZyZWNwZQogICAgIGFhcmNoNjRfbmVvbl9mcmVjcHMsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFhcmNoNjQubmVvbi5mcmVjcHMKQEAgLTM4Myw2ICs0MzYsNyBAQAogICAgIGFhcmNoNjRfc2RpdiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFhcmNoNjQuc2RpdgogICAgIGFhcmNoNjRfc2lzZF9mYWJkLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFhcmNoNjQuc2lzZC5mYWJkCiAgICAgYWFyY2g2NF9zaXNkX2ZjdnR4biwgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uYWFyY2g2NC5zaXNkLmZjdnR4bgorICAgIGFhcmNoNjRfc3BhY2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFhcmNoNjQuc3BhY2UKICAgICBhYXJjaDY0X3N0bHhwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hYXJjaDY0LnN0bHhwCiAgICAgYWFyY2g2NF9zdGx4ciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uYWFyY2g2NC5zdGx4cgogICAgIGFhcmNoNjRfc3R4cCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFhcmNoNjQuc3R4cApAQCAtMzkyLDcgKzQ0Niw2IEBACiAgICAgYW1kZ2NuX2FsaWduYnl0ZSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uYW1kZ2NuLmFsaWduYnl0ZQogICAgIGFtZGdjbl9hdG9taWNfZGVjLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFtZGdjbi5hdG9taWMuZGVjCiAgICAgYW1kZ2NuX2F0b21pY19pbmMsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uYW1kZ2NuLmF0b21pYy5pbmMKLSAgICBhbWRnY25fYnJlYWssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hbWRnY24uYnJlYWsKICAgICBhbWRnY25fYnVmZmVyX2F0b21pY19hZGQsICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hbWRnY24uYnVmZmVyLmF0b21pYy5hZGQKICAgICBhbWRnY25fYnVmZmVyX2F0b21pY19hbmQsICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hbWRnY24uYnVmZmVyLmF0b21pYy5hbmQKICAgICBhbWRnY25fYnVmZmVyX2F0b21pY19jbXBzd2FwLCAgICAgICAgICAgICAgLy8gbGx2bS5hbWRnY24uYnVmZmVyLmF0b21pYy5jbXBzd2FwCkBAIC00MjgsMTQgKzQ4MSwxNyBAQAogICAgIGFtZGdjbl9kaXZfZml4dXAsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFtZGdjbi5kaXYuZml4dXAKICAgICBhbWRnY25fZGl2X2ZtYXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hbWRnY24uZGl2LmZtYXMKICAgICBhbWRnY25fZGl2X3NjYWxlLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hbWRnY24uZGl2LnNjYWxlCisgICAgYW1kZ2NuX2RzX2FwcGVuZCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uYW1kZ2NuLmRzLmFwcGVuZAogICAgIGFtZGdjbl9kc19icGVybXV0ZSwgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFtZGdjbi5kcy5icGVybXV0ZQorICAgIGFtZGdjbl9kc19jb25zdW1lLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFtZGdjbi5kcy5jb25zdW1lCiAgICAgYW1kZ2NuX2RzX2ZhZGQsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uYW1kZ2NuLmRzLmZhZGQKICAgICBhbWRnY25fZHNfZm1heCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hbWRnY24uZHMuZm1heAogICAgIGFtZGdjbl9kc19mbWluLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFtZGdjbi5kcy5mbWluCisgICAgYW1kZ2NuX2RzX29yZGVyZWRfYWRkLCAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uYW1kZ2NuLmRzLm9yZGVyZWQuYWRkCisgICAgYW1kZ2NuX2RzX29yZGVyZWRfc3dhcCwgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uYW1kZ2NuLmRzLm9yZGVyZWQuc3dhcAogICAgIGFtZGdjbl9kc19wZXJtdXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFtZGdjbi5kcy5wZXJtdXRlCiAgICAgYW1kZ2NuX2RzX3N3aXp6bGUsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uYW1kZ2NuLmRzLnN3aXp6bGUKICAgICBhbWRnY25fZWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hbWRnY24uZWxzZQotICAgIGFtZGdjbl9lbHNlX2JyZWFrLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFtZGdjbi5lbHNlLmJyZWFrCiAgICAgYW1kZ2NuX2VuZF9jZiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uYW1kZ2NuLmVuZC5jZgogICAgIGFtZGdjbl9leHAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFtZGdjbi5leHAKICAgICBhbWRnY25fZXhwX2NvbXByLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hbWRnY24uZXhwLmNvbXByCkBAIC05MTYsNyArOTcyLDkgQEAKICAgICBhbWRnY25faW5pdF9leGVjX2Zyb21faW5wdXQsICAgICAgICAgICAgICAgLy8gbGx2bS5hbWRnY24uaW5pdC5leGVjLmZyb20uaW5wdXQKICAgICBhbWRnY25faW50ZXJwX21vdiwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hbWRnY24uaW50ZXJwLm1vdgogICAgIGFtZGdjbl9pbnRlcnBfcDEsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFtZGdjbi5pbnRlcnAucDEKKyAgICBhbWRnY25faW50ZXJwX3AxX2YxNiwgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hbWRnY24uaW50ZXJwLnAxLmYxNgogICAgIGFtZGdjbl9pbnRlcnBfcDIsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmFtZGdjbi5pbnRlcnAucDIKKyAgICBhbWRnY25faW50ZXJwX3AyX2YxNiwgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hbWRnY24uaW50ZXJwLnAyLmYxNgogICAgIGFtZGdjbl9rZXJuYXJnX3NlZ21lbnRfcHRyLCAgICAgICAgICAgICAgICAvLyBsbHZtLmFtZGdjbi5rZXJuYXJnLnNlZ21lbnQucHRyCiAgICAgYW1kZ2NuX2tpbGwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uYW1kZ2NuLmtpbGwKICAgICBhbWRnY25fbGRleHAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5hbWRnY24ubGRleHAKQEAgLTEzMjIsNiArMTM4MCw3IEBACiAgICAgaGV4YWdvbl9BMl9vciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5BMi5vcgogICAgIGhleGFnb25fQTJfb3JpciwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTIub3JpcgogICAgIGhleGFnb25fQTJfb3JwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTIub3JwCisgICAgaGV4YWdvbl9BMl9weG9yZiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5BMi5weG9yZgogICAgIGhleGFnb25fQTJfcm91bmRzYXQsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTIucm91bmRzYXQKICAgICBoZXhhZ29uX0EyX3NhdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkEyLnNhdAogICAgIGhleGFnb25fQTJfc2F0YiwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTIuc2F0YgpAQCAtMTM1OCwxMCArMTQxNywxMiBAQAogICAgIGhleGFnb25fQTJfc3h0aCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTIuc3h0aAogICAgIGhleGFnb25fQTJfc3h0dywgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTIuc3h0dwogICAgIGhleGFnb25fQTJfdGZyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTIudGZyCisgICAgaGV4YWdvbl9BMl90ZnJjcnIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5BMi50ZnJjcnIKICAgICBoZXhhZ29uX0EyX3RmcmloLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkEyLnRmcmloCiAgICAgaGV4YWdvbl9BMl90ZnJpbCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5BMi50ZnJpbAogICAgIGhleGFnb25fQTJfdGZycCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTIudGZycAogICAgIGhleGFnb25fQTJfdGZycGksICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTIudGZycGkKKyAgICBoZXhhZ29uX0EyX3RmcnJjciwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkEyLnRmcnJjcgogICAgIGhleGFnb25fQTJfdGZyc2ksICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTIudGZyc2kKICAgICBoZXhhZ29uX0EyX3ZhYnNoLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkEyLnZhYnNoCiAgICAgaGV4YWdvbl9BMl92YWJzaHNhdCwgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5BMi52YWJzaHNhdApAQCAtMTQzMCw2ICsxNDkxLDcgQEAKICAgICBoZXhhZ29uX0EyX3hvcnAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkEyLnhvcnAKICAgICBoZXhhZ29uX0EyX3p4dGIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkEyLnp4dGIKICAgICBoZXhhZ29uX0EyX3p4dGgsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkEyLnp4dGgKKyAgICBoZXhhZ29uX0E0X2FkZHBfYywgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkE0LmFkZHAuYwogICAgIGhleGFnb25fQTRfYW5kbiwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTQuYW5kbgogICAgIGhleGFnb25fQTRfYW5kbnAsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTQuYW5kbnAKICAgICBoZXhhZ29uX0E0X2JpdHNwbGl0LCAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkE0LmJpdHNwbGl0CkBAIC0xNDQ3LDYgKzE1MDksNyBAQAogICAgIGhleGFnb25fQTRfY21waGd0aSwgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTQuY21waGd0aQogICAgIGhleGFnb25fQTRfY21waGd0dSwgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTQuY21waGd0dQogICAgIGhleGFnb25fQTRfY21waGd0dWksICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTQuY21waGd0dWkKKyAgICBoZXhhZ29uX0E0X2NvbWJpbmVpaSwgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkE0LmNvbWJpbmVpaQogICAgIGhleGFnb25fQTRfY29tYmluZWlyLCAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTQuY29tYmluZWlyCiAgICAgaGV4YWdvbl9BNF9jb21iaW5lcmksICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5BNC5jb21iaW5lcmkKICAgICBoZXhhZ29uX0E0X2Nyb3VuZF9yaSwgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkE0LmNyb3VuZC5yaQpAQCAtMTQ2Miw2ICsxNTI1LDkgQEAKICAgICBoZXhhZ29uX0E0X3JvdW5kX3JpX3NhdCwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkE0LnJvdW5kLnJpLnNhdAogICAgIGhleGFnb25fQTRfcm91bmRfcnIsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTQucm91bmQucnIKICAgICBoZXhhZ29uX0E0X3JvdW5kX3JyX3NhdCwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkE0LnJvdW5kLnJyLnNhdAorICAgIGhleGFnb25fQTRfc3VicF9jLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTQuc3VicC5jCisgICAgaGV4YWdvbl9BNF90ZnJjcHAsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5BNC50ZnJjcHAKKyAgICBoZXhhZ29uX0E0X3RmcnBjcCwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkE0LnRmcnBjcAogICAgIGhleGFnb25fQTRfdGxibWF0Y2gsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTQudGxibWF0Y2gKICAgICBoZXhhZ29uX0E0X3ZjbXBiZXFfYW55LCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkE0LnZjbXBiZXEuYW55CiAgICAgaGV4YWdvbl9BNF92Y21wYmVxaSwgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5BNC52Y21wYmVxaQpAQCAtMTQ4Miw5ICsxNTQ4LDEwIEBACiAgICAgaGV4YWdvbl9BNF92cm1pbnVoLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5BNC52cm1pbnVoCiAgICAgaGV4YWdvbl9BNF92cm1pbnV3LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5BNC52cm1pbnV3CiAgICAgaGV4YWdvbl9BNF92cm1pbncsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5BNC52cm1pbncKKyAgICBoZXhhZ29uX0E1X0FDUywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkE1LkFDUwogICAgIGhleGFnb25fQTVfdmFkZGh1YnMsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uQTUudmFkZGh1YnMKICAgICBoZXhhZ29uX0E2X3ZjbXBiZXFfbm90YW55LCAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkE2LnZjbXBiZXEubm90YW55Ci0gICAgaGV4YWdvbl9BNl92Y21wYmVxX25vdGFueV8xMjhCLCAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5BNi52Y21wYmVxLm5vdGFueS4xMjhCCisgICAgaGV4YWdvbl9BNl92bWludWJfUmRQLCAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5BNi52bWludWIuUmRQCiAgICAgaGV4YWdvbl9DMl9hbGw4LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5DMi5hbGw4CiAgICAgaGV4YWdvbl9DMl9hbmQsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5DMi5hbmQKICAgICBoZXhhZ29uX0MyX2FuZG4sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkMyLmFuZG4KQEAgLTE1NjQsNiArMTYzMSw3IEBACiAgICAgaGV4YWdvbl9GMl9jb252X3V3MnNmLCAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5GMi5jb252LnV3MnNmCiAgICAgaGV4YWdvbl9GMl9jb252X3cyZGYsICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5GMi5jb252LncyZGYKICAgICBoZXhhZ29uX0YyX2NvbnZfdzJzZiwgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkYyLmNvbnYudzJzZgorICAgIGhleGFnb25fRjJfZGZhZGQsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uRjIuZGZhZGQKICAgICBoZXhhZ29uX0YyX2RmY2xhc3MsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkYyLmRmY2xhc3MKICAgICBoZXhhZ29uX0YyX2RmY21wZXEsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkYyLmRmY21wZXEKICAgICBoZXhhZ29uX0YyX2RmY21wZ2UsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkYyLmRmY21wZ2UKQEAgLTE1NzEsNiArMTYzOSw3IEBACiAgICAgaGV4YWdvbl9GMl9kZmNtcHVvLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5GMi5kZmNtcHVvCiAgICAgaGV4YWdvbl9GMl9kZmltbV9uLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5GMi5kZmltbS5uCiAgICAgaGV4YWdvbl9GMl9kZmltbV9wLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5GMi5kZmltbS5wCisgICAgaGV4YWdvbl9GMl9kZnN1YiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5GMi5kZnN1YgogICAgIGhleGFnb25fRjJfc2ZhZGQsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uRjIuc2ZhZGQKICAgICBoZXhhZ29uX0YyX3NmY2xhc3MsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkYyLnNmY2xhc3MKICAgICBoZXhhZ29uX0YyX3NmY21wZXEsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkYyLnNmY21wZXEKQEAgLTE1ODcsOSArMTY1NiwxMSBAQAogICAgIGhleGFnb25fRjJfc2ZmbXNfbGliLCAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uRjIuc2ZmbXMubGliCiAgICAgaGV4YWdvbl9GMl9zZmltbV9uLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmltbS5uCiAgICAgaGV4YWdvbl9GMl9zZmltbV9wLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmltbS5wCisgICAgaGV4YWdvbl9GMl9zZmludnNxcnRhLCAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmludnNxcnRhCiAgICAgaGV4YWdvbl9GMl9zZm1heCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5GMi5zZm1heAogICAgIGhleGFnb25fRjJfc2ZtaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uRjIuc2ZtaW4KICAgICBoZXhhZ29uX0YyX3NmbXB5LCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkYyLnNmbXB5CisgICAgaGV4YWdvbl9GMl9zZnJlY2lwYSwgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5GMi5zZnJlY2lwYQogICAgIGhleGFnb25fRjJfc2ZzdWIsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uRjIuc2ZzdWIKICAgICBoZXhhZ29uX0wyX2xvYWRyYl9wYnIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkwyLmxvYWRyYi5wYnIKICAgICBoZXhhZ29uX0wyX2xvYWRyYl9wY2ksICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLkwyLmxvYWRyYi5wY2kKQEAgLTE2NzksNiArMTc1MCw3IEBACiAgICAgaGV4YWdvbl9NMl9tbXB5dWxfcnMxLCAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5NMi5tbXB5dWwucnMxCiAgICAgaGV4YWdvbl9NMl9tbXB5dWxfczAsICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5NMi5tbXB5dWwuczAKICAgICBoZXhhZ29uX00yX21tcHl1bF9zMSwgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLk0yLm1tcHl1bC5zMQorICAgIGhleGFnb25fTTJfbW5hY2ksICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uTTIubW5hY2kKICAgICBoZXhhZ29uX00yX21weV9hY2NfaGhfczAsICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLk0yLm1weS5hY2MuaGguczAKICAgICBoZXhhZ29uX00yX21weV9hY2NfaGhfczEsICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLk0yLm1weS5hY2MuaGguczEKICAgICBoZXhhZ29uX00yX21weV9hY2NfaGxfczAsICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLk0yLm1weS5hY2MuaGwuczAKQEAgLTE3NzksNiArMTg1MSw4IEBACiAgICAgaGV4YWdvbl9NMl9tcHlkX3JuZF9sbF9zMCwgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5NMi5tcHlkLnJuZC5sbC5zMAogICAgIGhleGFnb25fTTJfbXB5ZF9ybmRfbGxfczEsICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uTTIubXB5ZC5ybmQubGwuczEKICAgICBoZXhhZ29uX00yX21weWksICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLk0yLm1weWkKKyAgICBoZXhhZ29uX00yX21weXNpbiwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLk0yLm1weXNpbgorICAgIGhleGFnb25fTTJfbXB5c2lwLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uTTIubXB5c2lwCiAgICAgaGV4YWdvbl9NMl9tcHlzbWksICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5NMi5tcHlzbWkKICAgICBoZXhhZ29uX00yX21weXN1X3VwLCAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLk0yLm1weXN1LnVwCiAgICAgaGV4YWdvbl9NMl9tcHl1X2FjY19oaF9zMCwgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5NMi5tcHl1LmFjYy5oaC5zMApAQCAtMTk5MSw3ICsyMDY1LDYgQEAKICAgICBoZXhhZ29uX1MyX2Fzcl9yX3Z3LCAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlMyLmFzci5yLnZ3CiAgICAgaGV4YWdvbl9TMl9icmV2LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5TMi5icmV2CiAgICAgaGV4YWdvbl9TMl9icmV2cCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5TMi5icmV2cAotICAgIGhleGFnb25fUzJfY2FiYWNlbmNiaW4sICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uUzIuY2FiYWNlbmNiaW4KICAgICBoZXhhZ29uX1MyX2NsMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlMyLmNsMAogICAgIGhleGFnb25fUzJfY2wwcCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uUzIuY2wwcAogICAgIGhleGFnb25fUzJfY2wxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uUzIuY2wxCkBAIC0yMDU2LDYgKzIxMjksNyBAQAogICAgIGhleGFnb25fUzJfbHNyX3Jfcl9vciwgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uUzIubHNyLnIuci5vcgogICAgIGhleGFnb25fUzJfbHNyX3JfdmgsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uUzIubHNyLnIudmgKICAgICBoZXhhZ29uX1MyX2xzcl9yX3Z3LCAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlMyLmxzci5yLnZ3CisgICAgaGV4YWdvbl9TMl9tYXNrLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5TMi5tYXNrCiAgICAgaGV4YWdvbl9TMl9wYWNraGwsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5TMi5wYWNraGwKICAgICBoZXhhZ29uX1MyX3Bhcml0eXAsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlMyLnBhcml0eXAKICAgICBoZXhhZ29uX1MyX3NldGJpdF9pLCAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlMyLnNldGJpdC5pCkBAIC0yMTczLDYgKzIyNDcsMzcgQEAKICAgICBoZXhhZ29uX1Y2X2V4dHJhY3R3XzEyOEIsICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmV4dHJhY3R3LjEyOEIKICAgICBoZXhhZ29uX1Y2X2hpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmhpCiAgICAgaGV4YWdvbl9WNl9oaV8xMjhCLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi5oaS4xMjhCCisgICAgaGV4YWdvbl9WNl9sZDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi5sZDAKKyAgICBoZXhhZ29uX1Y2X2xkMF8xMjhCLCAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkMC4xMjhCCisgICAgaGV4YWdvbl9WNl9sZGNucDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi5sZGNucDAKKyAgICBoZXhhZ29uX1Y2X2xkY25wMF8xMjhCLCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkY25wMC4xMjhCCisgICAgaGV4YWdvbl9WNl9sZGNucG50MCwgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi5sZGNucG50MAorICAgIGhleGFnb25fVjZfbGRjbnBudDBfMTI4QiwgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYubGRjbnBudDAuMTI4QgorICAgIGhleGFnb25fVjZfbGRjcDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYubGRjcDAKKyAgICBoZXhhZ29uX1Y2X2xkY3AwXzEyOEIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkY3AwLjEyOEIKKyAgICBoZXhhZ29uX1Y2X2xkY3BudDAsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkY3BudDAKKyAgICBoZXhhZ29uX1Y2X2xkY3BudDBfMTI4QiwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkY3BudDAuMTI4QgorICAgIGhleGFnb25fVjZfbGRucDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYubGRucDAKKyAgICBoZXhhZ29uX1Y2X2xkbnAwXzEyOEIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkbnAwLjEyOEIKKyAgICBoZXhhZ29uX1Y2X2xkbnBudDAsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkbnBudDAKKyAgICBoZXhhZ29uX1Y2X2xkbnBudDBfMTI4QiwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkbnBudDAuMTI4QgorICAgIGhleGFnb25fVjZfbGRudDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYubGRudDAKKyAgICBoZXhhZ29uX1Y2X2xkbnQwXzEyOEIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkbnQwLjEyOEIKKyAgICBoZXhhZ29uX1Y2X2xkbnRudDAsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkbnRudDAKKyAgICBoZXhhZ29uX1Y2X2xkcDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkcDAKKyAgICBoZXhhZ29uX1Y2X2xkcDBfMTI4QiwgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkcDAuMTI4QgorICAgIGhleGFnb25fVjZfbGRwbnQwLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYubGRwbnQwCisgICAgaGV4YWdvbl9WNl9sZHBudDBfMTI4QiwgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi5sZHBudDAuMTI4QgorICAgIGhleGFnb25fVjZfbGR0bnAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYubGR0bnAwCisgICAgaGV4YWdvbl9WNl9sZHRucDBfMTI4QiwgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi5sZHRucDAuMTI4QgorICAgIGhleGFnb25fVjZfbGR0bnBudDAsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYubGR0bnBudDAKKyAgICBoZXhhZ29uX1Y2X2xkdG5wbnQwXzEyOEIsICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkdG5wbnQwLjEyOEIKKyAgICBoZXhhZ29uX1Y2X2xkdHAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkdHAwCisgICAgaGV4YWdvbl9WNl9sZHRwMF8xMjhCLCAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi5sZHRwMC4xMjhCCisgICAgaGV4YWdvbl9WNl9sZHRwbnQwLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi5sZHRwbnQwCisgICAgaGV4YWdvbl9WNl9sZHRwbnQwXzEyOEIsICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi5sZHRwbnQwLjEyOEIKKyAgICBoZXhhZ29uX1Y2X2xkdTAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkdTAKKyAgICBoZXhhZ29uX1Y2X2xkdTBfMTI4QiwgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxkdTAuMTI4QgogICAgIGhleGFnb25fVjZfbG8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYubG8KICAgICBoZXhhZ29uX1Y2X2xvXzEyOEIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LmxvLjEyOEIKICAgICBoZXhhZ29uX1Y2X2x2c3BsYXRiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2Lmx2c3BsYXRiCkBAIC0yMjQzLDYgKzIzNDgsOCBAQAogICAgIGhleGFnb25fVjZfdmFkZGJzYXRfZHZfMTI4QiwgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudmFkZGJzYXQuZHYuMTI4QgogICAgIGhleGFnb25fVjZfdmFkZGNhcnJ5LCAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudmFkZGNhcnJ5CiAgICAgaGV4YWdvbl9WNl92YWRkY2FycnlfMTI4QiwgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi52YWRkY2FycnkuMTI4QgorICAgIGhleGFnb25fVjZfdmFkZGNhcnJ5c2F0LCAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudmFkZGNhcnJ5c2F0CisgICAgaGV4YWdvbl9WNl92YWRkY2FycnlzYXRfMTI4QiwgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi52YWRkY2FycnlzYXQuMTI4QgogICAgIGhleGFnb25fVjZfdmFkZGNsYmgsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudmFkZGNsYmgKICAgICBoZXhhZ29uX1Y2X3ZhZGRjbGJoXzEyOEIsICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LnZhZGRjbGJoLjEyOEIKICAgICBoZXhhZ29uX1Y2X3ZhZGRjbGJ3LCAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LnZhZGRjbGJ3CkBAIC0yMzMxLDYgKzI0MzgsOCBAQAogICAgIGhleGFnb25fVjZfdmFzbHdfYWNjXzEyOEIsICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudmFzbHcuYWNjLjEyOEIKICAgICBoZXhhZ29uX1Y2X3Zhc2x3diwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LnZhc2x3dgogICAgIGhleGFnb25fVjZfdmFzbHd2XzEyOEIsICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudmFzbHd2LjEyOEIKKyAgICBoZXhhZ29uX1Y2X3Zhc3JfaW50bywgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LnZhc3IuaW50bworICAgIGhleGFnb25fVjZfdmFzcl9pbnRvXzEyOEIsICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudmFzci5pbnRvLjEyOEIKICAgICBoZXhhZ29uX1Y2X3Zhc3JoLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LnZhc3JoCiAgICAgaGV4YWdvbl9WNl92YXNyaF8xMjhCLCAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi52YXNyaC4xMjhCCiAgICAgaGV4YWdvbl9WNl92YXNyaF9hY2MsICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi52YXNyaC5hY2MKQEAgLTI4MTEsNiArMjkyMCw4IEBACiAgICAgaGV4YWdvbl9WNl92cm1weXVidl9hY2NfMTI4QiwgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi52cm1weXVidi5hY2MuMTI4QgogICAgIGhleGFnb25fVjZfdnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudnJvcgogICAgIGhleGFnb25fVjZfdnJvcl8xMjhCLCAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudnJvci4xMjhCCisgICAgaGV4YWdvbl9WNl92cm90ciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi52cm90cgorICAgIGhleGFnb25fVjZfdnJvdHJfMTI4QiwgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudnJvdHIuMTI4QgogICAgIGhleGFnb25fVjZfdnJvdW5kaGIsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudnJvdW5kaGIKICAgICBoZXhhZ29uX1Y2X3Zyb3VuZGhiXzEyOEIsICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LnZyb3VuZGhiLjEyOEIKICAgICBoZXhhZ29uX1Y2X3Zyb3VuZGh1YiwgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LnZyb3VuZGh1YgpAQCAtMjgyNyw2ICsyOTM4LDggQEAKICAgICBoZXhhZ29uX1Y2X3Zyc2FkdWJpXzEyOEIsICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LnZyc2FkdWJpLjEyOEIKICAgICBoZXhhZ29uX1Y2X3Zyc2FkdWJpX2FjYywgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LnZyc2FkdWJpLmFjYwogICAgIGhleGFnb25fVjZfdnJzYWR1YmlfYWNjXzEyOEIsICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudnJzYWR1YmkuYWNjLjEyOEIKKyAgICBoZXhhZ29uX1Y2X3ZzYXRkdywgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LnZzYXRkdworICAgIGhleGFnb25fVjZfdnNhdGR3XzEyOEIsICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudnNhdGR3LjEyOEIKICAgICBoZXhhZ29uX1Y2X3ZzYXRodWIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LnZzYXRodWIKICAgICBoZXhhZ29uX1Y2X3ZzYXRodWJfMTI4QiwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LnZzYXRodWIuMTI4QgogICAgIGhleGFnb25fVjZfdnNhdHV3dWgsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudnNhdHV3dWgKQEAgLTI5NDUsNiArMzA1OCw4IEBACiAgICAgaGV4YWdvbl9WNl92dG1weWhiXzEyOEIsICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi52dG1weWhiLjEyOEIKICAgICBoZXhhZ29uX1Y2X3Z0bXB5aGJfYWNjLCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LnZ0bXB5aGIuYWNjCiAgICAgaGV4YWdvbl9WNl92dG1weWhiX2FjY18xMjhCLCAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi52dG1weWhiLmFjYy4xMjhCCisgICAgaGV4YWdvbl9WNl92dHJhbjJ4Ml9tYXAsICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi52dHJhbjJ4Mi5tYXAKKyAgICBoZXhhZ29uX1Y2X3Z0cmFuMngyX21hcF8xMjhCLCAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLlY2LnZ0cmFuMngyLm1hcC4xMjhCCiAgICAgaGV4YWdvbl9WNl92dW5wYWNrYiwgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5WNi52dW5wYWNrYgogICAgIGhleGFnb25fVjZfdnVucGFja2JfMTI4QiwgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudnVucGFja2IuMTI4QgogICAgIGhleGFnb25fVjZfdnVucGFja2gsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uVjYudnVucGFja2gKQEAgLTI5ODAsOCArMzA5NSw5IEBACiAgICAgaGV4YWdvbl9jaXJjX3N0aCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uaGV4YWdvbi5jaXJjLnN0aAogICAgIGhleGFnb25fY2lyY19zdGhoaSwgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uY2lyYy5zdGhoaQogICAgIGhleGFnb25fY2lyY19zdHcsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24uY2lyYy5zdHcKLSAgICBoZXhhZ29uX21tMjU2aV92YWRkdywgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLm1tMjU2aS52YWRkdwogICAgIGhleGFnb25fcHJlZmV0Y2gsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLmhleGFnb24ucHJlZmV0Y2gKKyAgICBoZXhhZ29uX3ZtZW1jcHksICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLnZtZW1jcHkKKyAgICBoZXhhZ29uX3ZtZW1zZXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5oZXhhZ29uLnZtZW1zZXQKICAgICBtaXBzX2Fic3Ffc19waCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5taXBzLmFic3Eucy5waAogICAgIG1pcHNfYWJzcV9zX3FiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLm1pcHMuYWJzcS5zLnFiCiAgICAgbWlwc19hYnNxX3NfdywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ubWlwcy5hYnNxLnMudwpAQCAtNTIwNywxMyArNTMyMywyMyBAQAogICAgIHI2MDBfdHhsYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnI2MDAudHhsYwogICAgIHI2MDBfdHhxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnI2MDAudHhxCiAgICAgcmlzY3ZfbWFza2VkX2F0b21pY3Jtd19hZGRfaTMyLCAgICAgICAgICAgIC8vIGxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy5hZGQuaTMyCisgICAgcmlzY3ZfbWFza2VkX2F0b21pY3Jtd19hZGRfaTY0LCAgICAgICAgICAgIC8vIGxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy5hZGQuaTY0CiAgICAgcmlzY3ZfbWFza2VkX2F0b21pY3Jtd19tYXhfaTMyLCAgICAgICAgICAgIC8vIGxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy5tYXguaTMyCisgICAgcmlzY3ZfbWFza2VkX2F0b21pY3Jtd19tYXhfaTY0LCAgICAgICAgICAgIC8vIGxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy5tYXguaTY0CiAgICAgcmlzY3ZfbWFza2VkX2F0b21pY3Jtd19taW5faTMyLCAgICAgICAgICAgIC8vIGxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy5taW4uaTMyCisgICAgcmlzY3ZfbWFza2VkX2F0b21pY3Jtd19taW5faTY0LCAgICAgICAgICAgIC8vIGxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy5taW4uaTY0CiAgICAgcmlzY3ZfbWFza2VkX2F0b21pY3Jtd19uYW5kX2kzMiwgICAgICAgICAgIC8vIGxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy5uYW5kLmkzMgorICAgIHJpc2N2X21hc2tlZF9hdG9taWNybXdfbmFuZF9pNjQsICAgICAgICAgICAvLyBsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcubmFuZC5pNjQKICAgICByaXNjdl9tYXNrZWRfYXRvbWljcm13X3N1Yl9pMzIsICAgICAgICAgICAgLy8gbGx2bS5yaXNjdi5tYXNrZWQuYXRvbWljcm13LnN1Yi5pMzIKKyAgICByaXNjdl9tYXNrZWRfYXRvbWljcm13X3N1Yl9pNjQsICAgICAgICAgICAgLy8gbGx2bS5yaXNjdi5tYXNrZWQuYXRvbWljcm13LnN1Yi5pNjQKICAgICByaXNjdl9tYXNrZWRfYXRvbWljcm13X3VtYXhfaTMyLCAgICAgICAgICAgLy8gbGx2bS5yaXNjdi5tYXNrZWQuYXRvbWljcm13LnVtYXguaTMyCisgICAgcmlzY3ZfbWFza2VkX2F0b21pY3Jtd191bWF4X2k2NCwgICAgICAgICAgIC8vIGxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy51bWF4Lmk2NAogICAgIHJpc2N2X21hc2tlZF9hdG9taWNybXdfdW1pbl9pMzIsICAgICAgICAgICAvLyBsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcudW1pbi5pMzIKKyAgICByaXNjdl9tYXNrZWRfYXRvbWljcm13X3VtaW5faTY0LCAgICAgICAgICAgLy8gbGx2bS5yaXNjdi5tYXNrZWQuYXRvbWljcm13LnVtaW4uaTY0CiAgICAgcmlzY3ZfbWFza2VkX2F0b21pY3Jtd194Y2hnX2kzMiwgICAgICAgICAgIC8vIGxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy54Y2hnLmkzMgorICAgIHJpc2N2X21hc2tlZF9hdG9taWNybXdfeGNoZ19pNjQsICAgICAgICAgICAvLyBsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcueGNoZy5pNjQKKyAgICByaXNjdl9tYXNrZWRfY21weGNoZ19pMzIsICAgICAgICAgICAgICAgICAgLy8gbGx2bS5yaXNjdi5tYXNrZWQuY21weGNoZy5pMzIKKyAgICByaXNjdl9tYXNrZWRfY21weGNoZ19pNjQsICAgICAgICAgICAgICAgICAgLy8gbGx2bS5yaXNjdi5tYXNrZWQuY21weGNoZy5pNjQKICAgICBzMzkwX2VmcGMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5zMzkwLmVmcGMKICAgICBzMzkwX2V0bmQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5zMzkwLmV0bmQKICAgICBzMzkwX2xjYmIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5zMzkwLmxjYmIKQEAgLTU0MzQsMjkgKzU1NjAsMjcgQEAKICAgICBzMzkwX3Z1cGxsYiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS5zMzkwLnZ1cGxsYgogICAgIHMzOTBfdnVwbGxmLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLnMzOTAudnVwbGxmCiAgICAgczM5MF92dXBsbGgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0uczM5MC52dXBsbGgKLSAgICB3YXNtX2FkZF9zYXR1cmF0ZV9zaWduZWQsICAgICAgICAgICAgICAgICAgLy8gbGx2bS53YXNtLmFkZC5zYXR1cmF0ZS5zaWduZWQKLSAgICB3YXNtX2FkZF9zYXR1cmF0ZV91bnNpZ25lZCwgICAgICAgICAgICAgICAgLy8gbGx2bS53YXNtLmFkZC5zYXR1cmF0ZS51bnNpZ25lZAogICAgIHdhc21fYWxsdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLndhc20uYWxsdHJ1ZQogICAgIHdhc21fYW55dHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLndhc20uYW55dHJ1ZQogICAgIHdhc21fYXRvbWljX25vdGlmeSwgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLndhc20uYXRvbWljLm5vdGlmeQogICAgIHdhc21fYXRvbWljX3dhaXRfaTMyLCAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLndhc20uYXRvbWljLndhaXQuaTMyCiAgICAgd2FzbV9hdG9taWNfd2FpdF9pNjQsICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ud2FzbS5hdG9taWMud2FpdC5pNjQKICAgICB3YXNtX2JpdHNlbGVjdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS53YXNtLmJpdHNlbGVjdAotICAgIHdhc21fY2F0Y2gsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLndhc20uY2F0Y2gKLSAgICB3YXNtX2N1cnJlbnRfbWVtb3J5LCAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS53YXNtLmN1cnJlbnQubWVtb3J5CisgICAgd2FzbV9kYXRhX2Ryb3AsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ud2FzbS5kYXRhLmRyb3AKKyAgICB3YXNtX2V4dHJhY3RfZXhjZXB0aW9uLCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS53YXNtLmV4dHJhY3QuZXhjZXB0aW9uCiAgICAgd2FzbV9nZXRfZWhzZWxlY3RvciwgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ud2FzbS5nZXQuZWhzZWxlY3RvcgogICAgIHdhc21fZ2V0X2V4Y2VwdGlvbiwgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLndhc20uZ2V0LmV4Y2VwdGlvbgotICAgIHdhc21fZ3Jvd19tZW1vcnksICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLndhc20uZ3Jvdy5tZW1vcnkKICAgICB3YXNtX2xhbmRpbmdwYWRfaW5kZXgsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS53YXNtLmxhbmRpbmdwYWQuaW5kZXgKICAgICB3YXNtX2xzZGEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS53YXNtLmxzZGEKLSAgICB3YXNtX21lbV9ncm93LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS53YXNtLm1lbS5ncm93Ci0gICAgd2FzbV9tZW1fc2l6ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ud2FzbS5tZW0uc2l6ZQogICAgIHdhc21fbWVtb3J5X2dyb3csICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLndhc20ubWVtb3J5Lmdyb3cKKyAgICB3YXNtX21lbW9yeV9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS53YXNtLm1lbW9yeS5pbml0CiAgICAgd2FzbV9tZW1vcnlfc2l6ZSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ud2FzbS5tZW1vcnkuc2l6ZQogICAgIHdhc21fcmV0aHJvdywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLndhc20ucmV0aHJvdwogICAgIHdhc21fc3ViX3NhdHVyYXRlX3NpZ25lZCwgICAgICAgICAgICAgICAgICAvLyBsbHZtLndhc20uc3ViLnNhdHVyYXRlLnNpZ25lZAogICAgIHdhc21fc3ViX3NhdHVyYXRlX3Vuc2lnbmVkLCAgICAgICAgICAgICAgICAvLyBsbHZtLndhc20uc3ViLnNhdHVyYXRlLnVuc2lnbmVkCiAgICAgd2FzbV90aHJvdywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ud2FzbS50aHJvdworICAgIHdhc21fdHJ1bmNfc2F0dXJhdGVfc2lnbmVkLCAgICAgICAgICAgICAgICAvLyBsbHZtLndhc20udHJ1bmMuc2F0dXJhdGUuc2lnbmVkCisgICAgd2FzbV90cnVuY19zYXR1cmF0ZV91bnNpZ25lZCwgICAgICAgICAgICAgIC8vIGxsdm0ud2FzbS50cnVuYy5zYXR1cmF0ZS51bnNpZ25lZAogICAgIHg4Nl8zZG5vd19wYXZndXNiLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni4zZG5vdy5wYXZndXNiCiAgICAgeDg2XzNkbm93X3BmMmlkLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LjNkbm93LnBmMmlkCiAgICAgeDg2XzNkbm93X3BmYWNjLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LjNkbm93LnBmYWNjCkBAIC01NDgxLDEwICs1NjA1LDggQEAKICAgICB4ODZfM2Rub3dhX3BmcG5hY2MsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuM2Rub3dhLnBmcG5hY2MKICAgICB4ODZfM2Rub3dhX3BpMmZ3LCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuM2Rub3dhLnBpMmZ3CiAgICAgeDg2XzNkbm93YV9wc3dhcGQsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LjNkbm93YS5wc3dhcGQKLSAgICB4ODZfYWRkY2FycnlfdTMyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYWRkY2FycnkudTMyCi0gICAgeDg2X2FkZGNhcnJ5X3U2NCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmFkZGNhcnJ5LnU2NAotICAgIHg4Nl9hZGRjYXJyeXhfdTMyLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hZGRjYXJyeXgudTMyCi0gICAgeDg2X2FkZGNhcnJ5eF91NjQsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmFkZGNhcnJ5eC51NjQKKyAgICB4ODZfYWRkY2FycnlfMzIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYWRkY2FycnkuMzIKKyAgICB4ODZfYWRkY2FycnlfNjQsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYWRkY2FycnkuNjQKICAgICB4ODZfYWVzbmlfYWVzZGVjLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYWVzbmkuYWVzZGVjCiAgICAgeDg2X2Flc25pX2Flc2RlY18yNTYsICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmFlc25pLmFlc2RlYy4yNTYKICAgICB4ODZfYWVzbmlfYWVzZGVjXzUxMiwgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYWVzbmkuYWVzZGVjLjUxMgpAQCAtNTU4NCw4ICs1NzA2LDYgQEAKICAgICB4ODZfYXZ4Ml9wYWNrc3N3YiwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4Mi5wYWNrc3N3YgogICAgIHg4Nl9hdngyX3BhY2t1c2R3LCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdngyLnBhY2t1c2R3CiAgICAgeDg2X2F2eDJfcGFja3Vzd2IsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDIucGFja3Vzd2IKLSAgICB4ODZfYXZ4Ml9wYWRkc19iLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4Mi5wYWRkcy5iCi0gICAgeDg2X2F2eDJfcGFkZHNfdywgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDIucGFkZHMudwogICAgIHg4Nl9hdngyX3BibGVuZHZiLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdngyLnBibGVuZHZiCiAgICAgeDg2X2F2eDJfcGVybWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDIucGVybWQKICAgICB4ODZfYXZ4Ml9wZXJtcHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4Mi5wZXJtcHMKQEAgLTU2MzIsOCArNTc1Miw2IEBACiAgICAgeDg2X2F2eDJfcHNybHZfZF8yNTYsICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDIucHNybHYuZC4yNTYKICAgICB4ODZfYXZ4Ml9wc3Jsdl9xLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4Mi5wc3Jsdi5xCiAgICAgeDg2X2F2eDJfcHNybHZfcV8yNTYsICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDIucHNybHYucS4yNTYKLSAgICB4ODZfYXZ4Ml9wc3Vic19iLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4Mi5wc3Vicy5iCi0gICAgeDg2X2F2eDJfcHN1YnNfdywgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDIucHN1YnMudwogICAgIHg4Nl9hdng1MTJfYWRkX3BkXzUxMiwgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIuYWRkLnBkLjUxMgogICAgIHg4Nl9hdng1MTJfYWRkX3BzXzUxMiwgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIuYWRkLnBzLjUxMgogICAgIHg4Nl9hdng1MTJfYnJvYWRjYXN0bWJfMTI4LCAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIuYnJvYWRjYXN0bWIuMTI4CkBAIC01NjQ4LDYgKzU3NjYsMTIgQEAKICAgICB4ODZfYXZ4NTEyX2NtcF9wc18xMjgsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLmNtcC5wcy4xMjgKICAgICB4ODZfYXZ4NTEyX2NtcF9wc18yNTYsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLmNtcC5wcy4yNTYKICAgICB4ODZfYXZ4NTEyX2NtcF9wc181MTIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLmNtcC5wcy41MTIKKyAgICB4ODZfYXZ4NTEyX2NvbmZsaWN0X2RfMTI4LCAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLmNvbmZsaWN0LmQuMTI4CisgICAgeDg2X2F2eDUxMl9jb25mbGljdF9kXzI1NiwgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5jb25mbGljdC5kLjI1NgorICAgIHg4Nl9hdng1MTJfY29uZmxpY3RfZF81MTIsICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIuY29uZmxpY3QuZC41MTIKKyAgICB4ODZfYXZ4NTEyX2NvbmZsaWN0X3FfMTI4LCAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLmNvbmZsaWN0LnEuMTI4CisgICAgeDg2X2F2eDUxMl9jb25mbGljdF9xXzI1NiwgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5jb25mbGljdC5xLjI1NgorICAgIHg4Nl9hdng1MTJfY29uZmxpY3RfcV81MTIsICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIuY29uZmxpY3QucS41MTIKICAgICB4ODZfYXZ4NTEyX2N2dHNpMnNkNjQsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLmN2dHNpMnNkNjQKICAgICB4ODZfYXZ4NTEyX2N2dHNpMnNzMzIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLmN2dHNpMnNzMzIKICAgICB4ODZfYXZ4NTEyX2N2dHNpMnNzNjQsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLmN2dHNpMnNzNjQKQEAgLTU3MTksMzEgKzU4NDMsNyBAQAogICAgIHg4Nl9hdng1MTJfbWFza19hZGRfc3Nfcm91bmQsICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5hZGQuc3Mucm91bmQKICAgICB4ODZfYXZ4NTEyX21hc2tfY21wX3NkLCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY21wLnNkCiAgICAgeDg2X2F2eDUxMl9tYXNrX2NtcF9zcywgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmNtcC5zcwotICAgIHg4Nl9hdng1MTJfbWFza19jb21wcmVzc19iXzEyOCwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5iLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza19jb21wcmVzc19iXzI1NiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5iLjI1NgotICAgIHg4Nl9hdng1MTJfbWFza19jb21wcmVzc19iXzUxMiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5iLjUxMgotICAgIHg4Nl9hdng1MTJfbWFza19jb21wcmVzc19kXzEyOCwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5kLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza19jb21wcmVzc19kXzI1NiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5kLjI1NgotICAgIHg4Nl9hdng1MTJfbWFza19jb21wcmVzc19kXzUxMiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5kLjUxMgotICAgIHg4Nl9hdng1MTJfbWFza19jb21wcmVzc19wZF8xMjgsICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5wZC4xMjgKLSAgICB4ODZfYXZ4NTEyX21hc2tfY29tcHJlc3NfcGRfMjU2LCAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MucGQuMjU2Ci0gICAgeDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX3BkXzUxMiwgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmNvbXByZXNzLnBkLjUxMgotICAgIHg4Nl9hdng1MTJfbWFza19jb21wcmVzc19wc18xMjgsICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5wcy4xMjgKLSAgICB4ODZfYXZ4NTEyX21hc2tfY29tcHJlc3NfcHNfMjU2LCAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MucHMuMjU2Ci0gICAgeDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX3BzXzUxMiwgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmNvbXByZXNzLnBzLjUxMgotICAgIHg4Nl9hdng1MTJfbWFza19jb21wcmVzc19xXzEyOCwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5xLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza19jb21wcmVzc19xXzI1NiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5xLjI1NgotICAgIHg4Nl9hdng1MTJfbWFza19jb21wcmVzc19xXzUxMiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5xLjUxMgotICAgIHg4Nl9hdng1MTJfbWFza19jb21wcmVzc193XzEyOCwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy53LjEyOAotICAgIHg4Nl9hdng1MTJfbWFza19jb21wcmVzc193XzI1NiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy53LjI1NgotICAgIHg4Nl9hdng1MTJfbWFza19jb21wcmVzc193XzUxMiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy53LjUxMgotICAgIHg4Nl9hdng1MTJfbWFza19jb25mbGljdF9kXzEyOCwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb25mbGljdC5kLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza19jb25mbGljdF9kXzI1NiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb25mbGljdC5kLjI1NgotICAgIHg4Nl9hdng1MTJfbWFza19jb25mbGljdF9kXzUxMiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb25mbGljdC5kLjUxMgotICAgIHg4Nl9hdng1MTJfbWFza19jb25mbGljdF9xXzEyOCwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb25mbGljdC5xLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza19jb25mbGljdF9xXzI1NiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb25mbGljdC5xLjI1NgotICAgIHg4Nl9hdng1MTJfbWFza19jb25mbGljdF9xXzUxMiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb25mbGljdC5xLjUxMgotICAgIHg4Nl9hdng1MTJfbWFza19jdnRkcTJwc181MTIsICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jdnRkcTJwcy41MTIKKyAgICB4ODZfYXZ4NTEyX21hc2tfY29tcHJlc3MsICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MKICAgICB4ODZfYXZ4NTEyX21hc2tfY3Z0cGQyZHFfMTI4LCAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0cGQyZHEuMTI4CiAgICAgeDg2X2F2eDUxMl9tYXNrX2N2dHBkMmRxXzUxMiwgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHBkMmRxLjUxMgogICAgIHg4Nl9hdng1MTJfbWFza19jdnRwZDJwcywgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jdnRwZDJwcwpAQCAtNTc3MCwxMCArNTg3MCw3IEBACiAgICAgeDg2X2F2eDUxMl9tYXNrX2N2dHBzMnVxcV8xMjgsICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHBzMnVxcS4xMjgKICAgICB4ODZfYXZ4NTEyX21hc2tfY3Z0cHMydXFxXzI1NiwgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0cHMydXFxLjI1NgogICAgIHg4Nl9hdng1MTJfbWFza19jdnRwczJ1cXFfNTEyLCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jdnRwczJ1cXEuNTEyCi0gICAgeDg2X2F2eDUxMl9tYXNrX2N2dHFxMnBkXzUxMiwgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHFxMnBkLjUxMgogICAgIHg4Nl9hdng1MTJfbWFza19jdnRxcTJwc18xMjgsICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jdnRxcTJwcy4xMjgKLSAgICB4ODZfYXZ4NTEyX21hc2tfY3Z0cXEycHNfMjU2LCAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0cXEycHMuMjU2Ci0gICAgeDg2X2F2eDUxMl9tYXNrX2N2dHFxMnBzXzUxMiwgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHFxMnBzLjUxMgogICAgIHg4Nl9hdng1MTJfbWFza19jdnRzZDJzc19yb3VuZCwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jdnRzZDJzcy5yb3VuZAogICAgIHg4Nl9hdng1MTJfbWFza19jdnRzczJzZF9yb3VuZCwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jdnRzczJzZC5yb3VuZAogICAgIHg4Nl9hdng1MTJfbWFza19jdnR0cGQyZHFfMTI4LCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jdnR0cGQyZHEuMTI4CkBAIC01Nzk3LDMxICs1ODk0LDEwIEBACiAgICAgeDg2X2F2eDUxMl9tYXNrX2N2dHRwczJ1cXFfMTI4LCAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHRwczJ1cXEuMTI4CiAgICAgeDg2X2F2eDUxMl9tYXNrX2N2dHRwczJ1cXFfMjU2LCAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHRwczJ1cXEuMjU2CiAgICAgeDg2X2F2eDUxMl9tYXNrX2N2dHRwczJ1cXFfNTEyLCAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHRwczJ1cXEuNTEyCi0gICAgeDg2X2F2eDUxMl9tYXNrX2N2dHVkcTJwc181MTIsICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHVkcTJwcy41MTIKLSAgICB4ODZfYXZ4NTEyX21hc2tfY3Z0dXFxMnBkXzUxMiwgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0dXFxMnBkLjUxMgogICAgIHg4Nl9hdng1MTJfbWFza19jdnR1cXEycHNfMTI4LCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jdnR1cXEycHMuMTI4Ci0gICAgeDg2X2F2eDUxMl9tYXNrX2N2dHVxcTJwc18yNTYsICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHVxcTJwcy4yNTYKLSAgICB4ODZfYXZ4NTEyX21hc2tfY3Z0dXFxMnBzXzUxMiwgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0dXFxMnBzLjUxMgogICAgIHg4Nl9hdng1MTJfbWFza19kaXZfc2Rfcm91bmQsICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5kaXYuc2Qucm91bmQKICAgICB4ODZfYXZ4NTEyX21hc2tfZGl2X3NzX3JvdW5kLCAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZGl2LnNzLnJvdW5kCi0gICAgeDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9iXzEyOCwgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5iLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza19leHBhbmRfYl8yNTYsICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQuYi4yNTYKLSAgICB4ODZfYXZ4NTEyX21hc2tfZXhwYW5kX2JfNTEyLCAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZXhwYW5kLmIuNTEyCi0gICAgeDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9kXzEyOCwgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5kLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza19leHBhbmRfZF8yNTYsICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQuZC4yNTYKLSAgICB4ODZfYXZ4NTEyX21hc2tfZXhwYW5kX2RfNTEyLCAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZXhwYW5kLmQuNTEyCi0gICAgeDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9wZF8xMjgsICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5wZC4xMjgKLSAgICB4ODZfYXZ4NTEyX21hc2tfZXhwYW5kX3BkXzI1NiwgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZXhwYW5kLnBkLjI1NgotICAgIHg4Nl9hdng1MTJfbWFza19leHBhbmRfcGRfNTEyLCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQucGQuNTEyCi0gICAgeDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9wc18xMjgsICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5wcy4xMjgKLSAgICB4ODZfYXZ4NTEyX21hc2tfZXhwYW5kX3BzXzI1NiwgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZXhwYW5kLnBzLjI1NgotICAgIHg4Nl9hdng1MTJfbWFza19leHBhbmRfcHNfNTEyLCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQucHMuNTEyCi0gICAgeDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9xXzEyOCwgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5xLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza19leHBhbmRfcV8yNTYsICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQucS4yNTYKLSAgICB4ODZfYXZ4NTEyX21hc2tfZXhwYW5kX3FfNTEyLCAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZXhwYW5kLnEuNTEyCi0gICAgeDg2X2F2eDUxMl9tYXNrX2V4cGFuZF93XzEyOCwgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC53LjEyOAotICAgIHg4Nl9hdng1MTJfbWFza19leHBhbmRfd18yNTYsICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQudy4yNTYKLSAgICB4ODZfYXZ4NTEyX21hc2tfZXhwYW5kX3dfNTEyLCAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZXhwYW5kLncuNTEyCisgICAgeDg2X2F2eDUxMl9tYXNrX2V4cGFuZCwgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZAogICAgIHg4Nl9hdng1MTJfbWFza19maXh1cGltbV9wZF8xMjgsICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5maXh1cGltbS5wZC4xMjgKICAgICB4ODZfYXZ4NTEyX21hc2tfZml4dXBpbW1fcGRfMjU2LCAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZml4dXBpbW0ucGQuMjU2CiAgICAgeDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3BkXzUxMiwgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmZpeHVwaW1tLnBkLjUxMgpAQCAtNTgzMiw2ICs1OTA4LDMwIEBACiAgICAgeDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3NzLCAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmZpeHVwaW1tLnNzCiAgICAgeDg2X2F2eDUxMl9tYXNrX2ZwY2xhc3Nfc2QsICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmZwY2xhc3Muc2QKICAgICB4ODZfYXZ4NTEyX21hc2tfZnBjbGFzc19zcywgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZnBjbGFzcy5zcworICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXJfZHBkXzUxMiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIuZHBkLjUxMgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXJfZHBpXzUxMiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIuZHBpLjUxMgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXJfZHBxXzUxMiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIuZHBxLjUxMgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXJfZHBzXzUxMiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIuZHBzLjUxMgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXJfcXBkXzUxMiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIucXBkLjUxMgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXJfcXBpXzUxMiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIucXBpLjUxMgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXJfcXBxXzUxMiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIucXBxLjUxMgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXJfcXBzXzUxMiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIucXBzLjUxMgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzZGl2Ml9kZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzZGl2Mi5kZgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzZGl2Ml9kaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzZGl2Mi5kaQorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzZGl2NF9kZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzZGl2NC5kZgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzZGl2NF9kaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzZGl2NC5kaQorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzZGl2NF9zZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzZGl2NC5zZgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzZGl2NF9zaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzZGl2NC5zaQorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzZGl2OF9zZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzZGl2OC5zZgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzZGl2OF9zaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzZGl2OC5zaQorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzc2l2Ml9kZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzc2l2Mi5kZgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzc2l2Ml9kaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzc2l2Mi5kaQorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzc2l2NF9kZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzc2l2NC5kZgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzc2l2NF9kaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzc2l2NC5kaQorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzc2l2NF9zZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzc2l2NC5zZgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzc2l2NF9zaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzc2l2NC5zaQorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzc2l2OF9zZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzc2l2OC5zZgorICAgIHg4Nl9hdng1MTJfbWFza19nYXRoZXIzc2l2OF9zaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzc2l2OC5zaQogICAgIHg4Nl9hdng1MTJfbWFza19nZXRleHBfcGRfMTI4LCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nZXRleHAucGQuMTI4CiAgICAgeDg2X2F2eDUxMl9tYXNrX2dldGV4cF9wZF8yNTYsICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmdldGV4cC5wZC4yNTYKICAgICB4ODZfYXZ4NTEyX21hc2tfZ2V0ZXhwX3BkXzUxMiwgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZ2V0ZXhwLnBkLjUxMgpAQCAtNTg3Myw4ICs1OTczLDYgQEAKICAgICB4ODZfYXZ4NTEyX21hc2tfcG1vdl9xYl9tZW1fMjU2LCAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi5xYi5tZW0uMjU2CiAgICAgeDg2X2F2eDUxMl9tYXNrX3Btb3ZfcWJfbWVtXzUxMiwgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3YucWIubWVtLjUxMgogICAgIHg4Nl9hdng1MTJfbWFza19wbW92X3FkXzEyOCwgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LnFkLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza19wbW92X3FkXzI1NiwgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LnFkLjI1NgotICAgIHg4Nl9hdng1MTJfbWFza19wbW92X3FkXzUxMiwgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LnFkLjUxMgogICAgIHg4Nl9hdng1MTJfbWFza19wbW92X3FkX21lbV8xMjgsICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LnFkLm1lbS4xMjgKICAgICB4ODZfYXZ4NTEyX21hc2tfcG1vdl9xZF9tZW1fMjU2LCAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi5xZC5tZW0uMjU2CiAgICAgeDg2X2F2eDUxMl9tYXNrX3Btb3ZfcWRfbWVtXzUxMiwgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3YucWQubWVtLjUxMgpAQCAtNTg4NSw4ICs1OTgzLDYgQEAKICAgICB4ODZfYXZ4NTEyX21hc2tfcG1vdl9xd19tZW1fMjU2LCAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi5xdy5tZW0uMjU2CiAgICAgeDg2X2F2eDUxMl9tYXNrX3Btb3ZfcXdfbWVtXzUxMiwgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3YucXcubWVtLjUxMgogICAgIHg4Nl9hdng1MTJfbWFza19wbW92X3diXzEyOCwgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LndiLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza19wbW92X3diXzI1NiwgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LndiLjI1NgotICAgIHg4Nl9hdng1MTJfbWFza19wbW92X3diXzUxMiwgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LndiLjUxMgogICAgIHg4Nl9hdng1MTJfbWFza19wbW92X3diX21lbV8xMjgsICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LndiLm1lbS4xMjgKICAgICB4ODZfYXZ4NTEyX21hc2tfcG1vdl93Yl9tZW1fMjU2LCAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi53Yi5tZW0uMjU2CiAgICAgeDg2X2F2eDUxMl9tYXNrX3Btb3Zfd2JfbWVtXzUxMiwgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3Yud2IubWVtLjUxMgpAQCAtNTk2Miw5ICs2MDU4LDYgQEAKICAgICB4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3diX21lbV8xMjgsICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdnVzLndiLm1lbS4xMjgKICAgICB4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3diX21lbV8yNTYsICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdnVzLndiLm1lbS4yNTYKICAgICB4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3diX21lbV81MTIsICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdnVzLndiLm1lbS41MTIKLSAgICB4ODZfYXZ4NTEyX21hc2tfcG11bHRpc2hpZnRfcWJfMTI4LCAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sucG11bHRpc2hpZnQucWIuMTI4Ci0gICAgeDg2X2F2eDUxMl9tYXNrX3BtdWx0aXNoaWZ0X3FiXzI1NiwgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtdWx0aXNoaWZ0LnFiLjI1NgotICAgIHg4Nl9hdng1MTJfbWFza19wbXVsdGlzaGlmdF9xYl81MTIsICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbXVsdGlzaGlmdC5xYi41MTIKICAgICB4ODZfYXZ4NTEyX21hc2tfcmFuZ2VfcGRfMTI4LCAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sucmFuZ2UucGQuMTI4CiAgICAgeDg2X2F2eDUxMl9tYXNrX3JhbmdlX3BkXzI1NiwgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnJhbmdlLnBkLjI1NgogICAgIHg4Nl9hdng1MTJfbWFza19yYW5nZV9wZF81MTIsICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5yYW5nZS5wZC41MTIKQEAgLTU5OTcsNiArNjA5MCwzMCBAQAogICAgIHg4Nl9hdng1MTJfbWFza19zY2FsZWZfcHNfNTEyLCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2FsZWYucHMuNTEyCiAgICAgeDg2X2F2eDUxMl9tYXNrX3NjYWxlZl9zZCwgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnNjYWxlZi5zZAogICAgIHg4Nl9hdng1MTJfbWFza19zY2FsZWZfc3MsICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2FsZWYuc3MKKyAgICB4ODZfYXZ4NTEyX21hc2tfc2NhdHRlcl9kcGRfNTEyLCAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlci5kcGQuNTEyCisgICAgeDg2X2F2eDUxMl9tYXNrX3NjYXR0ZXJfZHBpXzUxMiwgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnNjYXR0ZXIuZHBpLjUxMgorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyX2RwcV81MTIsICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyLmRwcS41MTIKKyAgICB4ODZfYXZ4NTEyX21hc2tfc2NhdHRlcl9kcHNfNTEyLCAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlci5kcHMuNTEyCisgICAgeDg2X2F2eDUxMl9tYXNrX3NjYXR0ZXJfcXBkXzUxMiwgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnNjYXR0ZXIucXBkLjUxMgorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyX3FwaV81MTIsICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyLnFwaS41MTIKKyAgICB4ODZfYXZ4NTEyX21hc2tfc2NhdHRlcl9xcHFfNTEyLCAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlci5xcHEuNTEyCisgICAgeDg2X2F2eDUxMl9tYXNrX3NjYXR0ZXJfcXBzXzUxMiwgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnNjYXR0ZXIucXBzLjUxMgorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyZGl2Ml9kZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyZGl2Mi5kZgorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyZGl2Ml9kaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyZGl2Mi5kaQorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyZGl2NF9kZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyZGl2NC5kZgorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyZGl2NF9kaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyZGl2NC5kaQorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyZGl2NF9zZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyZGl2NC5zZgorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyZGl2NF9zaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyZGl2NC5zaQorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyZGl2OF9zZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyZGl2OC5zZgorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyZGl2OF9zaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyZGl2OC5zaQorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyc2l2Ml9kZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyc2l2Mi5kZgorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyc2l2Ml9kaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyc2l2Mi5kaQorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyc2l2NF9kZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyc2l2NC5kZgorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyc2l2NF9kaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyc2l2NC5kaQorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyc2l2NF9zZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyc2l2NC5zZgorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyc2l2NF9zaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyc2l2NC5zaQorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyc2l2OF9zZiwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyc2l2OC5zZgorICAgIHg4Nl9hdng1MTJfbWFza19zY2F0dGVyc2l2OF9zaSwgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyc2l2OC5zaQogICAgIHg4Nl9hdng1MTJfbWFza19zcXJ0X3NkLCAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zcXJ0LnNkCiAgICAgeDg2X2F2eDUxMl9tYXNrX3NxcnRfc3MsICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnNxcnQuc3MKICAgICB4ODZfYXZ4NTEyX21hc2tfc3ViX3NkX3JvdW5kLCAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc3ViLnNkLnJvdW5kCkBAIC02MDA3LDI3ICs2MTI0LDYgQEAKICAgICB4ODZfYXZ4NTEyX21hc2tfdmN2dHBzMnBoXzEyOCwgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudmN2dHBzMnBoLjEyOAogICAgIHg4Nl9hdng1MTJfbWFza192Y3Z0cHMycGhfMjU2LCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52Y3Z0cHMycGguMjU2CiAgICAgeDg2X2F2eDUxMl9tYXNrX3ZjdnRwczJwaF81MTIsICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZjdnRwczJwaC41MTIKLSAgICB4ODZfYXZ4NTEyX21hc2tfdnBzaGxkdl9kXzEyOCwgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaGxkdi5kLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza192cHNobGR2X2RfMjU2LCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52cHNobGR2LmQuMjU2Ci0gICAgeDg2X2F2eDUxMl9tYXNrX3Zwc2hsZHZfZF81MTIsICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hsZHYuZC41MTIKLSAgICB4ODZfYXZ4NTEyX21hc2tfdnBzaGxkdl9xXzEyOCwgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaGxkdi5xLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza192cHNobGR2X3FfMjU2LCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52cHNobGR2LnEuMjU2Ci0gICAgeDg2X2F2eDUxMl9tYXNrX3Zwc2hsZHZfcV81MTIsICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hsZHYucS41MTIKLSAgICB4ODZfYXZ4NTEyX21hc2tfdnBzaGxkdl93XzEyOCwgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaGxkdi53LjEyOAotICAgIHg4Nl9hdng1MTJfbWFza192cHNobGR2X3dfMjU2LCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52cHNobGR2LncuMjU2Ci0gICAgeDg2X2F2eDUxMl9tYXNrX3Zwc2hsZHZfd181MTIsICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hsZHYudy41MTIKLSAgICB4ODZfYXZ4NTEyX21hc2tfdnBzaHJkdl9kXzEyOCwgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaHJkdi5kLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza192cHNocmR2X2RfMjU2LCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52cHNocmR2LmQuMjU2Ci0gICAgeDg2X2F2eDUxMl9tYXNrX3Zwc2hyZHZfZF81MTIsICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hyZHYuZC41MTIKLSAgICB4ODZfYXZ4NTEyX21hc2tfdnBzaHJkdl9xXzEyOCwgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaHJkdi5xLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza192cHNocmR2X3FfMjU2LCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52cHNocmR2LnEuMjU2Ci0gICAgeDg2X2F2eDUxMl9tYXNrX3Zwc2hyZHZfcV81MTIsICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hyZHYucS41MTIKLSAgICB4ODZfYXZ4NTEyX21hc2tfdnBzaHJkdl93XzEyOCwgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaHJkdi53LjEyOAotICAgIHg4Nl9hdng1MTJfbWFza192cHNocmR2X3dfMjU2LCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52cHNocmR2LncuMjU2Ci0gICAgeDg2X2F2eDUxMl9tYXNrX3Zwc2hyZHZfd181MTIsICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hyZHYudy41MTIKLSAgICB4ODZfYXZ4NTEyX21hc2tfdnBzaHVmYml0cW1iXzEyOCwgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaHVmYml0cW1iLjEyOAotICAgIHg4Nl9hdng1MTJfbWFza192cHNodWZiaXRxbWJfMjU2LCAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52cHNodWZiaXRxbWIuMjU2Ci0gICAgeDg2X2F2eDUxMl9tYXNrX3Zwc2h1ZmJpdHFtYl81MTIsICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2h1ZmJpdHFtYi41MTIKICAgICB4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3BkXzEyOCwgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LmZpeHVwaW1tLnBkLjEyOAogICAgIHg4Nl9hdng1MTJfbWFza3pfZml4dXBpbW1fcGRfMjU2LCAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFza3ouZml4dXBpbW0ucGQuMjU2CiAgICAgeDg2X2F2eDUxMl9tYXNrel9maXh1cGltbV9wZF81MTIsICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrei5maXh1cGltbS5wZC41MTIKQEAgLTYwMzYsMjQgKzYxMzIsNiBAQAogICAgIHg4Nl9hdng1MTJfbWFza3pfZml4dXBpbW1fcHNfNTEyLCAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFza3ouZml4dXBpbW0ucHMuNTEyCiAgICAgeDg2X2F2eDUxMl9tYXNrel9maXh1cGltbV9zZCwgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrei5maXh1cGltbS5zZAogICAgIHg4Nl9hdng1MTJfbWFza3pfZml4dXBpbW1fc3MsICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIubWFza3ouZml4dXBpbW0uc3MKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hsZHZfZF8xMjgsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hsZHYuZC4xMjgKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hsZHZfZF8yNTYsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hsZHYuZC4yNTYKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hsZHZfZF81MTIsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hsZHYuZC41MTIKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hsZHZfcV8xMjgsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hsZHYucS4xMjgKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hsZHZfcV8yNTYsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hsZHYucS4yNTYKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hsZHZfcV81MTIsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hsZHYucS41MTIKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hsZHZfd18xMjgsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hsZHYudy4xMjgKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hsZHZfd18yNTYsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hsZHYudy4yNTYKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hsZHZfd181MTIsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hsZHYudy41MTIKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hyZHZfZF8xMjgsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hyZHYuZC4xMjgKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hyZHZfZF8yNTYsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hyZHYuZC4yNTYKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hyZHZfZF81MTIsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hyZHYuZC41MTIKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hyZHZfcV8xMjgsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hyZHYucS4xMjgKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hyZHZfcV8yNTYsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hyZHYucS4yNTYKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hyZHZfcV81MTIsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hyZHYucS41MTIKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hyZHZfd18xMjgsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hyZHYudy4xMjgKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hyZHZfd18yNTYsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hyZHYudy4yNTYKLSAgICB4ODZfYXZ4NTEyX21hc2t6X3Zwc2hyZHZfd181MTIsICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hyZHYudy41MTIKICAgICB4ODZfYXZ4NTEyX21heF9wZF81MTIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1heC5wZC41MTIKICAgICB4ODZfYXZ4NTEyX21heF9wc181MTIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1heC5wcy41MTIKICAgICB4ODZfYXZ4NTEyX21pbl9wZF81MTIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLm1pbi5wZC41MTIKQEAgLTYwNjQsOCArNjE0Miw2IEBACiAgICAgeDg2X2F2eDUxMl9wYWNrc3N3Yl81MTIsICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5wYWNrc3N3Yi41MTIKICAgICB4ODZfYXZ4NTEyX3BhY2t1c2R3XzUxMiwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnBhY2t1c2R3LjUxMgogICAgIHg4Nl9hdng1MTJfcGFja3Vzd2JfNTEyLCAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIucGFja3Vzd2IuNTEyCi0gICAgeDg2X2F2eDUxMl9wYWRkc19iXzUxMiwgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5wYWRkcy5iLjUxMgotICAgIHg4Nl9hdng1MTJfcGFkZHNfd181MTIsICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIucGFkZHMudy41MTIKICAgICB4ODZfYXZ4NTEyX3Blcm12YXJfZGZfMjU2LCAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnBlcm12YXIuZGYuMjU2CiAgICAgeDg2X2F2eDUxMl9wZXJtdmFyX2RmXzUxMiwgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5wZXJtdmFyLmRmLjUxMgogICAgIHg4Nl9hdng1MTJfcGVybXZhcl9kaV8yNTYsICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIucGVybXZhci5kaS4yNTYKQEAgLTYwODMsMzAgKzYxNTksOSBAQAogICAgIHg4Nl9hdng1MTJfcG11bF9ocl9zd181MTIsICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIucG11bC5oci5zdy41MTIKICAgICB4ODZfYXZ4NTEyX3BtdWxoX3dfNTEyLCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnBtdWxoLncuNTEyCiAgICAgeDg2X2F2eDUxMl9wbXVsaHVfd181MTIsICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5wbXVsaHUudy41MTIKLSAgICB4ODZfYXZ4NTEyX3Byb2xfZF8xMjgsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2wuZC4xMjgKLSAgICB4ODZfYXZ4NTEyX3Byb2xfZF8yNTYsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2wuZC4yNTYKLSAgICB4ODZfYXZ4NTEyX3Byb2xfZF81MTIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2wuZC41MTIKLSAgICB4ODZfYXZ4NTEyX3Byb2xfcV8xMjgsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2wucS4xMjgKLSAgICB4ODZfYXZ4NTEyX3Byb2xfcV8yNTYsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2wucS4yNTYKLSAgICB4ODZfYXZ4NTEyX3Byb2xfcV81MTIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2wucS41MTIKLSAgICB4ODZfYXZ4NTEyX3Byb2x2X2RfMTI4LCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2x2LmQuMTI4Ci0gICAgeDg2X2F2eDUxMl9wcm9sdl9kXzI1NiwgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5wcm9sdi5kLjI1NgotICAgIHg4Nl9hdng1MTJfcHJvbHZfZF81MTIsICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIucHJvbHYuZC41MTIKLSAgICB4ODZfYXZ4NTEyX3Byb2x2X3FfMTI4LCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2x2LnEuMTI4Ci0gICAgeDg2X2F2eDUxMl9wcm9sdl9xXzI1NiwgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5wcm9sdi5xLjI1NgotICAgIHg4Nl9hdng1MTJfcHJvbHZfcV81MTIsICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIucHJvbHYucS41MTIKLSAgICB4ODZfYXZ4NTEyX3Byb3JfZF8xMjgsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3IuZC4xMjgKLSAgICB4ODZfYXZ4NTEyX3Byb3JfZF8yNTYsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3IuZC4yNTYKLSAgICB4ODZfYXZ4NTEyX3Byb3JfZF81MTIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3IuZC41MTIKLSAgICB4ODZfYXZ4NTEyX3Byb3JfcV8xMjgsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3IucS4xMjgKLSAgICB4ODZfYXZ4NTEyX3Byb3JfcV8yNTYsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3IucS4yNTYKLSAgICB4ODZfYXZ4NTEyX3Byb3JfcV81MTIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3IucS41MTIKLSAgICB4ODZfYXZ4NTEyX3Byb3J2X2RfMTI4LCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3J2LmQuMTI4Ci0gICAgeDg2X2F2eDUxMl9wcm9ydl9kXzI1NiwgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5wcm9ydi5kLjI1NgotICAgIHg4Nl9hdng1MTJfcHJvcnZfZF81MTIsICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIucHJvcnYuZC41MTIKLSAgICB4ODZfYXZ4NTEyX3Byb3J2X3FfMTI4LCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3J2LnEuMTI4Ci0gICAgeDg2X2F2eDUxMl9wcm9ydl9xXzI1NiwgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5wcm9ydi5xLjI1NgotICAgIHg4Nl9hdng1MTJfcHJvcnZfcV81MTIsICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIucHJvcnYucS41MTIKKyAgICB4ODZfYXZ4NTEyX3BtdWx0aXNoaWZ0X3FiXzEyOCwgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnBtdWx0aXNoaWZ0LnFiLjEyOAorICAgIHg4Nl9hdng1MTJfcG11bHRpc2hpZnRfcWJfMjU2LCAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIucG11bHRpc2hpZnQucWIuMjU2CisgICAgeDg2X2F2eDUxMl9wbXVsdGlzaGlmdF9xYl81MTIsICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5wbXVsdGlzaGlmdC5xYi41MTIKICAgICB4ODZfYXZ4NTEyX3BzYWRfYndfNTEyLCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnBzYWQuYncuNTEyCiAgICAgeDg2X2F2eDUxMl9wc2h1Zl9iXzUxMiwgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5wc2h1Zi5iLjUxMgogICAgIHg4Nl9hdng1MTJfcHNsbF9kXzUxMiwgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIucHNsbC5kLjUxMgpAQCAtNjE0OCw4ICs2MjAzLDYgQEAKICAgICB4ODZfYXZ4NTEyX3Bzcmx2X3dfMTI4LCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnBzcmx2LncuMTI4CiAgICAgeDg2X2F2eDUxMl9wc3Jsdl93XzI1NiwgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5wc3Jsdi53LjI1NgogICAgIHg4Nl9hdng1MTJfcHNybHZfd181MTIsICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIucHNybHYudy41MTIKLSAgICB4ODZfYXZ4NTEyX3BzdWJzX2JfNTEyLCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnBzdWJzLmIuNTEyCi0gICAgeDg2X2F2eDUxMl9wc3Vic193XzUxMiwgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5wc3Vicy53LjUxMgogICAgIHg4Nl9hdng1MTJfcHRlcm5sb2dfZF8xMjgsICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIucHRlcm5sb2cuZC4xMjgKICAgICB4ODZfYXZ4NTEyX3B0ZXJubG9nX2RfMjU2LCAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnB0ZXJubG9nLmQuMjU2CiAgICAgeDg2X2F2eDUxMl9wdGVybmxvZ19kXzUxMiwgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5wdGVybmxvZy5kLjUxMgpAQCAtNjIwOCwxMCArNjI2MSwxMiBAQAogICAgIHg4Nl9hdng1MTJfc2NhdHRlcnNpdjRfc2ksICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIuc2NhdHRlcnNpdjQuc2kKICAgICB4ODZfYXZ4NTEyX3NjYXR0ZXJzaXY4X3NmLCAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnNjYXR0ZXJzaXY4LnNmCiAgICAgeDg2X2F2eDUxMl9zY2F0dGVyc2l2OF9zaSwgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5zY2F0dGVyc2l2OC5zaQorICAgIHg4Nl9hdng1MTJfc2l0b2ZwX3JvdW5kLCAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIuc2l0b2ZwLnJvdW5kCiAgICAgeDg2X2F2eDUxMl9zcXJ0X3BkXzUxMiwgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi5zcXJ0LnBkLjUxMgogICAgIHg4Nl9hdng1MTJfc3FydF9wc181MTIsICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIuc3FydC5wcy41MTIKICAgICB4ODZfYXZ4NTEyX3N1Yl9wZF81MTIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnN1Yi5wZC41MTIKICAgICB4ODZfYXZ4NTEyX3N1Yl9wc181MTIsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnN1Yi5wcy41MTIKKyAgICB4ODZfYXZ4NTEyX3VpdG9mcF9yb3VuZCwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnVpdG9mcC5yb3VuZAogICAgIHg4Nl9hdng1MTJfdmNvbWlfc2QsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIudmNvbWkuc2QKICAgICB4ODZfYXZ4NTEyX3Zjb21pX3NzLCAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnZjb21pLnNzCiAgICAgeDg2X2F2eDUxMl92Y3Z0c2Qyc2kzMiwgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi52Y3Z0c2Qyc2kzMgpAQCAtNjI2NiwyNCArNjMyMSw5IEBACiAgICAgeDg2X2F2eDUxMl92cG1hZGQ1MmxfdXFfMTI4LCAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi52cG1hZGQ1MmwudXEuMTI4CiAgICAgeDg2X2F2eDUxMl92cG1hZGQ1MmxfdXFfMjU2LCAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi52cG1hZGQ1MmwudXEuMjU2CiAgICAgeDg2X2F2eDUxMl92cG1hZGQ1MmxfdXFfNTEyLCAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi52cG1hZGQ1MmwudXEuNTEyCi0gICAgeDg2X2F2eDUxMl92cHNobGRfZF8xMjgsICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNobGQuZC4xMjgKLSAgICB4ODZfYXZ4NTEyX3Zwc2hsZF9kXzI1NiwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnZwc2hsZC5kLjI1NgotICAgIHg4Nl9hdng1MTJfdnBzaGxkX2RfNTEyLCAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIudnBzaGxkLmQuNTEyCi0gICAgeDg2X2F2eDUxMl92cHNobGRfcV8xMjgsICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNobGQucS4xMjgKLSAgICB4ODZfYXZ4NTEyX3Zwc2hsZF9xXzI1NiwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnZwc2hsZC5xLjI1NgotICAgIHg4Nl9hdng1MTJfdnBzaGxkX3FfNTEyLCAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIudnBzaGxkLnEuNTEyCi0gICAgeDg2X2F2eDUxMl92cHNobGRfd18xMjgsICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNobGQudy4xMjgKLSAgICB4ODZfYXZ4NTEyX3Zwc2hsZF93XzI1NiwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnZwc2hsZC53LjI1NgotICAgIHg4Nl9hdng1MTJfdnBzaGxkX3dfNTEyLCAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIudnBzaGxkLncuNTEyCi0gICAgeDg2X2F2eDUxMl92cHNocmRfZF8xMjgsICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNocmQuZC4xMjgKLSAgICB4ODZfYXZ4NTEyX3Zwc2hyZF9kXzI1NiwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnZwc2hyZC5kLjI1NgotICAgIHg4Nl9hdng1MTJfdnBzaHJkX2RfNTEyLCAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIudnBzaHJkLmQuNTEyCi0gICAgeDg2X2F2eDUxMl92cHNocmRfcV8xMjgsICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNocmQucS4xMjgKLSAgICB4ODZfYXZ4NTEyX3Zwc2hyZF9xXzI1NiwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnZwc2hyZC5xLjI1NgotICAgIHg4Nl9hdng1MTJfdnBzaHJkX3FfNTEyLCAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIudnBzaHJkLnEuNTEyCi0gICAgeDg2X2F2eDUxMl92cHNocmRfd18xMjgsICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNocmQudy4xMjgKLSAgICB4ODZfYXZ4NTEyX3Zwc2hyZF93XzI1NiwgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYXZ4NTEyLnZwc2hyZC53LjI1NgotICAgIHg4Nl9hdng1MTJfdnBzaHJkX3dfNTEyLCAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5hdng1MTIudnBzaHJkLncuNTEyCisgICAgeDg2X2F2eDUxMl92cHNodWZiaXRxbWJfMTI4LCAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNodWZiaXRxbWIuMTI4CisgICAgeDg2X2F2eDUxMl92cHNodWZiaXRxbWJfMjU2LCAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNodWZiaXRxbWIuMjU2CisgICAgeDg2X2F2eDUxMl92cHNodWZiaXRxbWJfNTEyLCAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNodWZiaXRxbWIuNTEyCiAgICAgeDg2X2JtaV9iZXh0cl8zMiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LmJtaS5iZXh0ci4zMgogICAgIHg4Nl9ibWlfYmV4dHJfNjQsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5ibWkuYmV4dHIuNjQKICAgICB4ODZfYm1pX2J6aGlfMzIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuYm1pLmJ6aGkuMzIKQEAgLTY0MTcsNyArNjQ1Nyw2IEBACiAgICAgeDg2X3NlaF9laGd1YXJkLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnNlaC5laGd1YXJkCiAgICAgeDg2X3NlaF9laHJlZ25vZGUsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnNlaC5laHJlZ25vZGUKICAgICB4ODZfc2VoX2xzZGEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuc2VoLmxzZGEKLSAgICB4ODZfc2VoX3JlY292ZXJmcCwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuc2VoLnJlY292ZXJmcAogICAgIHg4Nl9zZXRzc2JzeSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5zZXRzc2JzeQogICAgIHg4Nl9zaGExbXNnMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5zaGExbXNnMQogICAgIHg4Nl9zaGExbXNnMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5zaGExbXNnMgpAQCAtNjQ5NCw4ICs2NTMzLDYgQEAKICAgICB4ODZfc3NlMl9wYWNrc3Nkd18xMjgsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuc3NlMi5wYWNrc3Nkdy4xMjgKICAgICB4ODZfc3NlMl9wYWNrc3N3Yl8xMjgsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuc3NlMi5wYWNrc3N3Yi4xMjgKICAgICB4ODZfc3NlMl9wYWNrdXN3Yl8xMjgsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuc3NlMi5wYWNrdXN3Yi4xMjgKLSAgICB4ODZfc3NlMl9wYWRkc19iLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuc3NlMi5wYWRkcy5iCi0gICAgeDg2X3NzZTJfcGFkZHNfdywgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnNzZTIucGFkZHMudwogICAgIHg4Nl9zc2UyX3BhdXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5zc2UyLnBhdXNlCiAgICAgeDg2X3NzZTJfcG1hZGRfd2QsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnNzZTIucG1hZGQud2QKICAgICB4ODZfc3NlMl9wbW92bXNrYl8xMjgsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuc3NlMi5wbW92bXNrYi4xMjgKQEAgLTY1MTgsOCArNjU1NSw2IEBACiAgICAgeDg2X3NzZTJfcHNybGlfZCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnNzZTIucHNybGkuZAogICAgIHg4Nl9zc2UyX3BzcmxpX3EsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5zc2UyLnBzcmxpLnEKICAgICB4ODZfc3NlMl9wc3JsaV93LCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuc3NlMi5wc3JsaS53Ci0gICAgeDg2X3NzZTJfcHN1YnNfYiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnNzZTIucHN1YnMuYgotICAgIHg4Nl9zc2UyX3BzdWJzX3csICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5zc2UyLnBzdWJzLncKICAgICB4ODZfc3NlMl91Y29taWVxX3NkLCAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuc3NlMi51Y29taWVxLnNkCiAgICAgeDg2X3NzZTJfdWNvbWlnZV9zZCwgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnNzZTIudWNvbWlnZS5zZAogICAgIHg4Nl9zc2UyX3Vjb21pZ3Rfc2QsICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5zc2UyLnVjb21pZ3Quc2QKQEAgLTY2MDAsOCArNjYzNSw4IEBACiAgICAgeDg2X3Nzc2UzX3BzaWduX2RfMTI4LCAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnNzc2UzLnBzaWduLmQuMTI4CiAgICAgeDg2X3Nzc2UzX3BzaWduX3csICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnNzc2UzLnBzaWduLncKICAgICB4ODZfc3NzZTNfcHNpZ25fd18xMjgsICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuc3NzZTMucHNpZ24udy4xMjgKLSAgICB4ODZfc3ViYm9ycm93X3UzMiwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYuc3ViYm9ycm93LnUzMgotICAgIHg4Nl9zdWJib3Jyb3dfdTY0LCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5zdWJib3Jyb3cudTY0CisgICAgeDg2X3N1YmJvcnJvd18zMiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnN1YmJvcnJvdy4zMgorICAgIHg4Nl9zdWJib3Jyb3dfNjQsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni5zdWJib3Jyb3cuNjQKICAgICB4ODZfdGJtX2JleHRyaV91MzIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYudGJtLmJleHRyaS51MzIKICAgICB4ODZfdGJtX2JleHRyaV91NjQsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYudGJtLmJleHRyaS51NjQKICAgICB4ODZfdHBhdXNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYudHBhdXNlCkBAIC02NjQxLDE0ICs2Njc2LDYgQEAKICAgICB4ODZfeG9wX3ZmcmN6X3BzXzI1NiwgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYueG9wLnZmcmN6LnBzLjI1NgogICAgIHg4Nl94b3BfdmZyY3pfc2QsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni54b3AudmZyY3ouc2QKICAgICB4ODZfeG9wX3ZmcmN6X3NzLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYueG9wLnZmcmN6LnNzCi0gICAgeDg2X3hvcF92cGNvbWIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnhvcC52cGNvbWIKLSAgICB4ODZfeG9wX3ZwY29tZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYueG9wLnZwY29tZAotICAgIHg4Nl94b3BfdnBjb21xLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni54b3AudnBjb21xCi0gICAgeDg2X3hvcF92cGNvbXViLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnhvcC52cGNvbXViCi0gICAgeDg2X3hvcF92cGNvbXVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnhvcC52cGNvbXVkCi0gICAgeDg2X3hvcF92cGNvbXVxLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnhvcC52cGNvbXVxCi0gICAgeDg2X3hvcF92cGNvbXV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnhvcC52cGNvbXV3Ci0gICAgeDg2X3hvcF92cGNvbXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnhvcC52cGNvbXcKICAgICB4ODZfeG9wX3ZwZXJtaWwycGQsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYueG9wLnZwZXJtaWwycGQKICAgICB4ODZfeG9wX3ZwZXJtaWwycGRfMjU2LCAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYueG9wLnZwZXJtaWwycGQuMjU2CiAgICAgeDg2X3hvcF92cGVybWlsMnBzLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnhvcC52cGVybWlsMnBzCkBAIC02NjgxLDE0ICs2NzA4LDYgQEAKICAgICB4ODZfeG9wX3ZwbWFkY3Nzd2QsICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYueG9wLnZwbWFkY3Nzd2QKICAgICB4ODZfeG9wX3ZwbWFkY3N3ZCwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYueG9wLnZwbWFkY3N3ZAogICAgIHg4Nl94b3BfdnBwZXJtLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni54b3AudnBwZXJtCi0gICAgeDg2X3hvcF92cHJvdGIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnhvcC52cHJvdGIKLSAgICB4ODZfeG9wX3Zwcm90YmksICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYueG9wLnZwcm90YmkKLSAgICB4ODZfeG9wX3Zwcm90ZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYueG9wLnZwcm90ZAotICAgIHg4Nl94b3BfdnByb3RkaSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni54b3AudnByb3RkaQotICAgIHg4Nl94b3BfdnByb3RxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni54b3AudnByb3RxCi0gICAgeDg2X3hvcF92cHJvdHFpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnhvcC52cHJvdHFpCi0gICAgeDg2X3hvcF92cHJvdHcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnhvcC52cHJvdHcKLSAgICB4ODZfeG9wX3Zwcm90d2ksICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYueG9wLnZwcm90d2kKICAgICB4ODZfeG9wX3Zwc2hhYiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGx2bS54ODYueG9wLnZwc2hhYgogICAgIHg4Nl94b3BfdnBzaGFkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsbHZtLng4Ni54b3AudnBzaGFkCiAgICAgeDg2X3hvcF92cHNoYXEsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxsdm0ueDg2LnhvcC52cHNoYXEKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljSW1wbC5pbmMgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY0ltcGwuaW5jCmluZGV4IGY5NjUzZGQuLjRjZTU3N2EgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljSW1wbC5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNJbXBsLmluYwpAQCAtMjIsMjEgKzIyLDIxIEBACiAgIHNpemVfdCBDb3VudDsKIH07CiBzdGF0aWMgY29uc3RleHByIEludHJpbnNpY1RhcmdldEluZm8gVGFyZ2V0SW5mb3NbXSA9IHsKLSAge2xsdm06OlN0cmluZ0xpdGVyYWwoIiIpLCAwLCAxODB9LAotICB7bGx2bTo6U3RyaW5nTGl0ZXJhbCgiYWFyY2g2NCIpLCAxODAsIDE5Mn0sCi0gIHtsbHZtOjpTdHJpbmdMaXRlcmFsKCJhbWRnY24iKSwgMzcyLCA2MzF9LAotICB7bGx2bTo6U3RyaW5nTGl0ZXJhbCgiYXJtIiksIDEwMDMsIDI1MX0sCi0gIHtsbHZtOjpTdHJpbmdMaXRlcmFsKCJicGYiKSwgMTI1NCwgNH0sCi0gIHtsbHZtOjpTdHJpbmdMaXRlcmFsKCJoZXhhZ29uIiksIDEyNTgsIDE3MDh9LAotICB7bGx2bTo6U3RyaW5nTGl0ZXJhbCgibWlwcyIpLCAyOTY2LCA2Njd9LAotICB7bGx2bTo6U3RyaW5nTGl0ZXJhbCgibnZ2bSIpLCAzNjMzLCAxMTE3fSwKLSAge2xsdm06OlN0cmluZ0xpdGVyYWwoInBwYyIpLCA0NzUwLCA0MDV9LAotICB7bGx2bTo6U3RyaW5nTGl0ZXJhbCgicjYwMCIpLCA1MTU1LCAzNX0sCi0gIHtsbHZtOjpTdHJpbmdMaXRlcmFsKCJyaXNjdiIpLCA1MTkwLCA4fSwKLSAge2xsdm06OlN0cmluZ0xpdGVyYWwoInMzOTAiKSwgNTE5OCwgMjIwfSwKLSAge2xsdm06OlN0cmluZ0xpdGVyYWwoIndhc20iKSwgNTQxOCwgMjN9LAotICB7bGx2bTo6U3RyaW5nTGl0ZXJhbCgieDg2IiksIDU0NDEsIDEyNTR9LAotICB7bGx2bTo6U3RyaW5nTGl0ZXJhbCgieGNvcmUiKSwgNjY5NSwgNTN9LAorICB7bGx2bTo6U3RyaW5nTGl0ZXJhbCgiIiksIDAsIDIyOX0sCisgIHtsbHZtOjpTdHJpbmdMaXRlcmFsKCJhYXJjaDY0IiksIDIyOSwgMTk3fSwKKyAge2xsdm06OlN0cmluZ0xpdGVyYWwoImFtZGdjbiIpLCA0MjYsIDYzNX0sCisgIHtsbHZtOjpTdHJpbmdMaXRlcmFsKCJhcm0iKSwgMTA2MSwgMjUxfSwKKyAge2xsdm06OlN0cmluZ0xpdGVyYWwoImJwZiIpLCAxMzEyLCA0fSwKKyAge2xsdm06OlN0cmluZ0xpdGVyYWwoImhleGFnb24iKSwgMTMxNiwgMTc2Nn0sCisgIHtsbHZtOjpTdHJpbmdMaXRlcmFsKCJtaXBzIiksIDMwODIsIDY2N30sCisgIHtsbHZtOjpTdHJpbmdMaXRlcmFsKCJudnZtIiksIDM3NDksIDExMTd9LAorICB7bGx2bTo6U3RyaW5nTGl0ZXJhbCgicHBjIiksIDQ4NjYsIDQwNX0sCisgIHtsbHZtOjpTdHJpbmdMaXRlcmFsKCJyNjAwIiksIDUyNzEsIDM1fSwKKyAge2xsdm06OlN0cmluZ0xpdGVyYWwoInJpc2N2IiksIDUzMDYsIDE4fSwKKyAge2xsdm06OlN0cmluZ0xpdGVyYWwoInMzOTAiKSwgNTMyNCwgMjIwfSwKKyAge2xsdm06OlN0cmluZ0xpdGVyYWwoIndhc20iKSwgNTU0NCwgMjF9LAorICB7bGx2bTo6U3RyaW5nTGl0ZXJhbCgieDg2IiksIDU1NjUsIDExNDl9LAorICB7bGx2bTo6U3RyaW5nTGl0ZXJhbCgieGNvcmUiKSwgNjcxNCwgNTN9LAogfTsKICNlbmRpZgogCkBAIC04NSw2ICs4NSw3IEBACiAgICJsbHZtLmVoLmR3YXJmLmNmYSIsCiAgICJsbHZtLmVoLmV4Y2VwdGlvbmNvZGUiLAogICAibGx2bS5laC5leGNlcHRpb25wb2ludGVyIiwKKyAgImxsdm0uZWgucmVjb3ZlcmZwIiwKICAgImxsdm0uZWgucmV0dXJuLmkzMiIsCiAgICJsbHZtLmVoLnJldHVybi5pNjQiLAogICAibGx2bS5laC5zamxqLmNhbGxzaXRlIiwKQEAgLTk4LDExICs5OSwxMyBAQAogICAibGx2bS5leHAiLAogICAibGx2bS5leHAyIiwKICAgImxsdm0uZXhwZWN0IiwKKyAgImxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLmNlaWwiLAogICAibGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQuY29zIiwKICAgImxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLmV4cCIsCiAgICJsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5leHAyIiwKICAgImxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLmZhZGQiLAogICAibGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQuZmRpdiIsCisgICJsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5mbG9vciIsCiAgICJsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5mbWEiLAogICAibGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQuZm11bCIsCiAgICJsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5mcmVtIiwKQEAgLTExMCwxMiArMTEzLDE2IEBACiAgICJsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5sb2ciLAogICAibGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQubG9nMTAiLAogICAibGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQubG9nMiIsCisgICJsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5tYXhudW0iLAorICAibGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQubWlubnVtIiwKICAgImxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLm5lYXJieWludCIsCiAgICJsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5wb3ciLAogICAibGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQucG93aSIsCiAgICJsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5yaW50IiwKKyAgImxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLnJvdW5kIiwKICAgImxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLnNpbiIsCiAgICJsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5zcXJ0IiwKKyAgImxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLnRydW5jIiwKICAgImxsdm0uZXhwZXJpbWVudGFsLmRlb3B0aW1pemUiLAogICAibGx2bS5leHBlcmltZW50YWwuZ2MucmVsb2NhdGUiLAogICAibGx2bS5leHBlcmltZW50YWwuZ2MucmVzdWx0IiwKQEAgLTEzNyw2ICsxNDQsNyBAQAogICAibGx2bS5leHBlcmltZW50YWwudmVjdG9yLnJlZHVjZS51bWF4IiwKICAgImxsdm0uZXhwZXJpbWVudGFsLnZlY3Rvci5yZWR1Y2UudW1pbiIsCiAgICJsbHZtLmV4cGVyaW1lbnRhbC52ZWN0b3IucmVkdWNlLnhvciIsCisgICJsbHZtLmV4cGVyaW1lbnRhbC53aWRlbmFibGUuY29uZGl0aW9uIiwKICAgImxsdm0uZmFicyIsCiAgICJsbHZtLmZsb29yIiwKICAgImxsdm0uZmx0LnJvdW5kcyIsCkBAIC0xNDksNiArMTU3LDcgQEAKICAgImxsdm0uZ2Nyb290IiwKICAgImxsdm0uZ2N3cml0ZSIsCiAgICJsbHZtLmdldC5keW5hbWljLmFyZWEub2Zmc2V0IiwKKyAgImxsdm0uaHdhc2FuLmNoZWNrLm1lbWFjY2VzcyIsCiAgICJsbHZtLmljYWxsLmJyYW5jaC5mdW5uZWwiLAogICAibGx2bS5pbml0LnRyYW1wb2xpbmUiLAogICAibGx2bS5pbnN0cnByb2YuaW5jcmVtZW50IiwKQEAgLTE1Niw2ICsxNjUsNyBAQAogICAibGx2bS5pbnN0cnByb2YudmFsdWUucHJvZmlsZSIsCiAgICJsbHZtLmludmFyaWFudC5lbmQiLAogICAibGx2bS5pbnZhcmlhbnQuc3RhcnQiLAorICAibGx2bS5pcy5jb25zdGFudCIsCiAgICJsbHZtLmxhdW5kZXIuaW52YXJpYW50Lmdyb3VwIiwKICAgImxsdm0ubGlmZXRpbWUuZW5kIiwKICAgImxsdm0ubGlmZXRpbWUuc3RhcnQiLApAQCAtMTczLDYgKzE4Myw3IEBACiAgICJsbHZtLm1hc2tlZC5sb2FkIiwKICAgImxsdm0ubWFza2VkLnNjYXR0ZXIiLAogICAibGx2bS5tYXNrZWQuc3RvcmUiLAorICAibGx2bS5tYXhpbXVtIiwKICAgImxsdm0ubWF4bnVtIiwKICAgImxsdm0ubWVtY3B5IiwKICAgImxsdm0ubWVtY3B5LmVsZW1lbnQudW5vcmRlcmVkLmF0b21pYyIsCkBAIC0xODAsOCArMTkxLDM5IEBACiAgICJsbHZtLm1lbW1vdmUuZWxlbWVudC51bm9yZGVyZWQuYXRvbWljIiwKICAgImxsdm0ubWVtc2V0IiwKICAgImxsdm0ubWVtc2V0LmVsZW1lbnQudW5vcmRlcmVkLmF0b21pYyIsCisgICJsbHZtLm1pbmltdW0iLAogICAibGx2bS5taW5udW0iLAogICAibGx2bS5uZWFyYnlpbnQiLAorICAibGx2bS5vYmpjLmFyYy5hbm5vdGF0aW9uLmJvdHRvbXVwLmJiZW5kIiwKKyAgImxsdm0ub2JqYy5hcmMuYW5ub3RhdGlvbi5ib3R0b211cC5iYnN0YXJ0IiwKKyAgImxsdm0ub2JqYy5hcmMuYW5ub3RhdGlvbi50b3Bkb3duLmJiZW5kIiwKKyAgImxsdm0ub2JqYy5hcmMuYW5ub3RhdGlvbi50b3Bkb3duLmJic3RhcnQiLAorICAibGx2bS5vYmpjLmF1dG9yZWxlYXNlIiwKKyAgImxsdm0ub2JqYy5hdXRvcmVsZWFzZVBvb2xQb3AiLAorICAibGx2bS5vYmpjLmF1dG9yZWxlYXNlUG9vbFB1c2giLAorICAibGx2bS5vYmpjLmF1dG9yZWxlYXNlUmV0dXJuVmFsdWUiLAorICAibGx2bS5vYmpjLmNsYW5nLmFyYy51c2UiLAorICAibGx2bS5vYmpjLmNvcHlXZWFrIiwKKyAgImxsdm0ub2JqYy5kZXN0cm95V2VhayIsCisgICJsbHZtLm9iamMuaW5pdFdlYWsiLAorICAibGx2bS5vYmpjLmxvYWRXZWFrIiwKKyAgImxsdm0ub2JqYy5sb2FkV2Vha1JldGFpbmVkIiwKKyAgImxsdm0ub2JqYy5tb3ZlV2VhayIsCisgICJsbHZtLm9iamMucmVsZWFzZSIsCisgICJsbHZtLm9iamMucmV0YWluIiwKKyAgImxsdm0ub2JqYy5yZXRhaW4uYXV0b3JlbGVhc2UiLAorICAibGx2bS5vYmpjLnJldGFpbkF1dG9yZWxlYXNlIiwKKyAgImxsdm0ub2JqYy5yZXRhaW5BdXRvcmVsZWFzZVJldHVyblZhbHVlIiwKKyAgImxsdm0ub2JqYy5yZXRhaW5BdXRvcmVsZWFzZWRSZXR1cm5WYWx1ZSIsCisgICJsbHZtLm9iamMucmV0YWluQmxvY2siLAorICAibGx2bS5vYmpjLnJldGFpbmVkT2JqZWN0IiwKKyAgImxsdm0ub2JqYy5zdG9yZVN0cm9uZyIsCisgICJsbHZtLm9iamMuc3RvcmVXZWFrIiwKKyAgImxsdm0ub2JqYy5zeW5jLmVudGVyIiwKKyAgImxsdm0ub2JqYy5zeW5jLmV4aXQiLAorICAibGx2bS5vYmpjLnVucmV0YWluZWRPYmplY3QiLAorICAibGx2bS5vYmpjLnVucmV0YWluZWRQb2ludGVyIiwKKyAgImxsdm0ub2JqYy51bnNhZmVDbGFpbUF1dG9yZWxlYXNlZFJldHVyblZhbHVlIiwKICAgImxsdm0ub2JqZWN0c2l6ZSIsCiAgICJsbHZtLnBjbWFya2VyIiwKICAgImxsdm0ucG93IiwKQEAgLTE5MywxNSArMjM1LDE5IEBACiAgICJsbHZtLnJldHVybmFkZHJlc3MiLAogICAibGx2bS5yaW50IiwKICAgImxsdm0ucm91bmQiLAorICAibGx2bS5zYWRkLnNhdCIsCiAgICJsbHZtLnNhZGQud2l0aC5vdmVyZmxvdyIsCiAgICJsbHZtLnNldGptcCIsCiAgICJsbHZtLnNpZGVlZmZlY3QiLAogICAibGx2bS5zaWdsb25nam1wIiwKICAgImxsdm0uc2lnc2V0am1wIiwKICAgImxsdm0uc2luIiwKKyAgImxsdm0uc211bC5maXgiLAogICAibGx2bS5zbXVsLndpdGgub3ZlcmZsb3ciLAorICAibGx2bS5zcG9uZW50cnkiLAogICAibGx2bS5zcXJ0IiwKICAgImxsdm0uc3NhLmNvcHkiLAorICAibGx2bS5zc3ViLnNhdCIsCiAgICJsbHZtLnNzdWIud2l0aC5vdmVyZmxvdyIsCiAgICJsbHZtLnN0YWNrZ3VhcmQiLAogICAibGx2bS5zdGFja3Byb3RlY3RvciIsCkBAIC0yMTMsOCArMjU5LDExIEBACiAgICJsbHZtLnRydW5jIiwKICAgImxsdm0udHlwZS5jaGVja2VkLmxvYWQiLAogICAibGx2bS50eXBlLnRlc3QiLAorICAibGx2bS51YWRkLnNhdCIsCiAgICJsbHZtLnVhZGQud2l0aC5vdmVyZmxvdyIsCisgICJsbHZtLnVtdWwuZml4IiwKICAgImxsdm0udW11bC53aXRoLm92ZXJmbG93IiwKKyAgImxsdm0udXN1Yi5zYXQiLAogICAibGx2bS51c3ViLndpdGgub3ZlcmZsb3ciLAogICAibGx2bS52YV9jb3B5IiwKICAgImxsdm0udmFfZW5kIiwKQEAgLTI4Niw2ICszMzUsMTAgQEAKICAgImxsdm0uYWFyY2g2NC5uZW9uLmZtaW5ubXYiLAogICAibGx2bS5hYXJjaDY0Lm5lb24uZm1pbnAiLAogICAibGx2bS5hYXJjaDY0Lm5lb24uZm1pbnYiLAorICAibGx2bS5hYXJjaDY0Lm5lb24uZm1sYWwiLAorICAibGx2bS5hYXJjaDY0Lm5lb24uZm1sYWwyIiwKKyAgImxsdm0uYWFyY2g2NC5uZW9uLmZtbHNsIiwKKyAgImxsdm0uYWFyY2g2NC5uZW9uLmZtbHNsMiIsCiAgICJsbHZtLmFhcmNoNjQubmVvbi5mbXVseCIsCiAgICJsbHZtLmFhcmNoNjQubmVvbi5mcmVjcGUiLAogICAibGx2bS5hYXJjaDY0Lm5lb24uZnJlY3BzIiwKQEAgLTQxMCw2ICs0NjMsNyBAQAogICAibGx2bS5hYXJjaDY0LnNkaXYiLAogICAibGx2bS5hYXJjaDY0LnNpc2QuZmFiZCIsCiAgICJsbHZtLmFhcmNoNjQuc2lzZC5mY3Z0eG4iLAorICAibGx2bS5hYXJjaDY0LnNwYWNlIiwKICAgImxsdm0uYWFyY2g2NC5zdGx4cCIsCiAgICJsbHZtLmFhcmNoNjQuc3RseHIiLAogICAibGx2bS5hYXJjaDY0LnN0eHAiLApAQCAtNDE5LDcgKzQ3Myw2IEBACiAgICJsbHZtLmFtZGdjbi5hbGlnbmJ5dGUiLAogICAibGx2bS5hbWRnY24uYXRvbWljLmRlYyIsCiAgICJsbHZtLmFtZGdjbi5hdG9taWMuaW5jIiwKLSAgImxsdm0uYW1kZ2NuLmJyZWFrIiwKICAgImxsdm0uYW1kZ2NuLmJ1ZmZlci5hdG9taWMuYWRkIiwKICAgImxsdm0uYW1kZ2NuLmJ1ZmZlci5hdG9taWMuYW5kIiwKICAgImxsdm0uYW1kZ2NuLmJ1ZmZlci5hdG9taWMuY21wc3dhcCIsCkBAIC00NTUsMTQgKzUwOCwxNyBAQAogICAibGx2bS5hbWRnY24uZGl2LmZpeHVwIiwKICAgImxsdm0uYW1kZ2NuLmRpdi5mbWFzIiwKICAgImxsdm0uYW1kZ2NuLmRpdi5zY2FsZSIsCisgICJsbHZtLmFtZGdjbi5kcy5hcHBlbmQiLAogICAibGx2bS5hbWRnY24uZHMuYnBlcm11dGUiLAorICAibGx2bS5hbWRnY24uZHMuY29uc3VtZSIsCiAgICJsbHZtLmFtZGdjbi5kcy5mYWRkIiwKICAgImxsdm0uYW1kZ2NuLmRzLmZtYXgiLAogICAibGx2bS5hbWRnY24uZHMuZm1pbiIsCisgICJsbHZtLmFtZGdjbi5kcy5vcmRlcmVkLmFkZCIsCisgICJsbHZtLmFtZGdjbi5kcy5vcmRlcmVkLnN3YXAiLAogICAibGx2bS5hbWRnY24uZHMucGVybXV0ZSIsCiAgICJsbHZtLmFtZGdjbi5kcy5zd2l6emxlIiwKICAgImxsdm0uYW1kZ2NuLmVsc2UiLAotICAibGx2bS5hbWRnY24uZWxzZS5icmVhayIsCiAgICJsbHZtLmFtZGdjbi5lbmQuY2YiLAogICAibGx2bS5hbWRnY24uZXhwIiwKICAgImxsdm0uYW1kZ2NuLmV4cC5jb21wciIsCkBAIC05NDMsNyArOTk5LDkgQEAKICAgImxsdm0uYW1kZ2NuLmluaXQuZXhlYy5mcm9tLmlucHV0IiwKICAgImxsdm0uYW1kZ2NuLmludGVycC5tb3YiLAogICAibGx2bS5hbWRnY24uaW50ZXJwLnAxIiwKKyAgImxsdm0uYW1kZ2NuLmludGVycC5wMS5mMTYiLAogICAibGx2bS5hbWRnY24uaW50ZXJwLnAyIiwKKyAgImxsdm0uYW1kZ2NuLmludGVycC5wMi5mMTYiLAogICAibGx2bS5hbWRnY24ua2VybmFyZy5zZWdtZW50LnB0ciIsCiAgICJsbHZtLmFtZGdjbi5raWxsIiwKICAgImxsdm0uYW1kZ2NuLmxkZXhwIiwKQEAgLTEzNDksNiArMTQwNyw3IEBACiAgICJsbHZtLmhleGFnb24uQTIub3IiLAogICAibGx2bS5oZXhhZ29uLkEyLm9yaXIiLAogICAibGx2bS5oZXhhZ29uLkEyLm9ycCIsCisgICJsbHZtLmhleGFnb24uQTIucHhvcmYiLAogICAibGx2bS5oZXhhZ29uLkEyLnJvdW5kc2F0IiwKICAgImxsdm0uaGV4YWdvbi5BMi5zYXQiLAogICAibGx2bS5oZXhhZ29uLkEyLnNhdGIiLApAQCAtMTM4NSwxMCArMTQ0NCwxMiBAQAogICAibGx2bS5oZXhhZ29uLkEyLnN4dGgiLAogICAibGx2bS5oZXhhZ29uLkEyLnN4dHciLAogICAibGx2bS5oZXhhZ29uLkEyLnRmciIsCisgICJsbHZtLmhleGFnb24uQTIudGZyY3JyIiwKICAgImxsdm0uaGV4YWdvbi5BMi50ZnJpaCIsCiAgICJsbHZtLmhleGFnb24uQTIudGZyaWwiLAogICAibGx2bS5oZXhhZ29uLkEyLnRmcnAiLAogICAibGx2bS5oZXhhZ29uLkEyLnRmcnBpIiwKKyAgImxsdm0uaGV4YWdvbi5BMi50ZnJyY3IiLAogICAibGx2bS5oZXhhZ29uLkEyLnRmcnNpIiwKICAgImxsdm0uaGV4YWdvbi5BMi52YWJzaCIsCiAgICJsbHZtLmhleGFnb24uQTIudmFic2hzYXQiLApAQCAtMTQ1Nyw2ICsxNTE4LDcgQEAKICAgImxsdm0uaGV4YWdvbi5BMi54b3JwIiwKICAgImxsdm0uaGV4YWdvbi5BMi56eHRiIiwKICAgImxsdm0uaGV4YWdvbi5BMi56eHRoIiwKKyAgImxsdm0uaGV4YWdvbi5BNC5hZGRwLmMiLAogICAibGx2bS5oZXhhZ29uLkE0LmFuZG4iLAogICAibGx2bS5oZXhhZ29uLkE0LmFuZG5wIiwKICAgImxsdm0uaGV4YWdvbi5BNC5iaXRzcGxpdCIsCkBAIC0xNDc0LDYgKzE1MzYsNyBAQAogICAibGx2bS5oZXhhZ29uLkE0LmNtcGhndGkiLAogICAibGx2bS5oZXhhZ29uLkE0LmNtcGhndHUiLAogICAibGx2bS5oZXhhZ29uLkE0LmNtcGhndHVpIiwKKyAgImxsdm0uaGV4YWdvbi5BNC5jb21iaW5laWkiLAogICAibGx2bS5oZXhhZ29uLkE0LmNvbWJpbmVpciIsCiAgICJsbHZtLmhleGFnb24uQTQuY29tYmluZXJpIiwKICAgImxsdm0uaGV4YWdvbi5BNC5jcm91bmQucmkiLApAQCAtMTQ4OSw2ICsxNTUyLDkgQEAKICAgImxsdm0uaGV4YWdvbi5BNC5yb3VuZC5yaS5zYXQiLAogICAibGx2bS5oZXhhZ29uLkE0LnJvdW5kLnJyIiwKICAgImxsdm0uaGV4YWdvbi5BNC5yb3VuZC5yci5zYXQiLAorICAibGx2bS5oZXhhZ29uLkE0LnN1YnAuYyIsCisgICJsbHZtLmhleGFnb24uQTQudGZyY3BwIiwKKyAgImxsdm0uaGV4YWdvbi5BNC50ZnJwY3AiLAogICAibGx2bS5oZXhhZ29uLkE0LnRsYm1hdGNoIiwKICAgImxsdm0uaGV4YWdvbi5BNC52Y21wYmVxLmFueSIsCiAgICJsbHZtLmhleGFnb24uQTQudmNtcGJlcWkiLApAQCAtMTUwOSw5ICsxNTc1LDEwIEBACiAgICJsbHZtLmhleGFnb24uQTQudnJtaW51aCIsCiAgICJsbHZtLmhleGFnb24uQTQudnJtaW51dyIsCiAgICJsbHZtLmhleGFnb24uQTQudnJtaW53IiwKKyAgImxsdm0uaGV4YWdvbi5BNS5BQ1MiLAogICAibGx2bS5oZXhhZ29uLkE1LnZhZGRodWJzIiwKICAgImxsdm0uaGV4YWdvbi5BNi52Y21wYmVxLm5vdGFueSIsCi0gICJsbHZtLmhleGFnb24uQTYudmNtcGJlcS5ub3RhbnkuMTI4QiIsCisgICJsbHZtLmhleGFnb24uQTYudm1pbnViLlJkUCIsCiAgICJsbHZtLmhleGFnb24uQzIuYWxsOCIsCiAgICJsbHZtLmhleGFnb24uQzIuYW5kIiwKICAgImxsdm0uaGV4YWdvbi5DMi5hbmRuIiwKQEAgLTE1OTEsNiArMTY1OCw3IEBACiAgICJsbHZtLmhleGFnb24uRjIuY29udi51dzJzZiIsCiAgICJsbHZtLmhleGFnb24uRjIuY29udi53MmRmIiwKICAgImxsdm0uaGV4YWdvbi5GMi5jb252Lncyc2YiLAorICAibGx2bS5oZXhhZ29uLkYyLmRmYWRkIiwKICAgImxsdm0uaGV4YWdvbi5GMi5kZmNsYXNzIiwKICAgImxsdm0uaGV4YWdvbi5GMi5kZmNtcGVxIiwKICAgImxsdm0uaGV4YWdvbi5GMi5kZmNtcGdlIiwKQEAgLTE1OTgsNiArMTY2Niw3IEBACiAgICJsbHZtLmhleGFnb24uRjIuZGZjbXB1byIsCiAgICJsbHZtLmhleGFnb24uRjIuZGZpbW0ubiIsCiAgICJsbHZtLmhleGFnb24uRjIuZGZpbW0ucCIsCisgICJsbHZtLmhleGFnb24uRjIuZGZzdWIiLAogICAibGx2bS5oZXhhZ29uLkYyLnNmYWRkIiwKICAgImxsdm0uaGV4YWdvbi5GMi5zZmNsYXNzIiwKICAgImxsdm0uaGV4YWdvbi5GMi5zZmNtcGVxIiwKQEAgLTE2MTQsOSArMTY4MywxMSBAQAogICAibGx2bS5oZXhhZ29uLkYyLnNmZm1zLmxpYiIsCiAgICJsbHZtLmhleGFnb24uRjIuc2ZpbW0ubiIsCiAgICJsbHZtLmhleGFnb24uRjIuc2ZpbW0ucCIsCisgICJsbHZtLmhleGFnb24uRjIuc2ZpbnZzcXJ0YSIsCiAgICJsbHZtLmhleGFnb24uRjIuc2ZtYXgiLAogICAibGx2bS5oZXhhZ29uLkYyLnNmbWluIiwKICAgImxsdm0uaGV4YWdvbi5GMi5zZm1weSIsCisgICJsbHZtLmhleGFnb24uRjIuc2ZyZWNpcGEiLAogICAibGx2bS5oZXhhZ29uLkYyLnNmc3ViIiwKICAgImxsdm0uaGV4YWdvbi5MMi5sb2FkcmIucGJyIiwKICAgImxsdm0uaGV4YWdvbi5MMi5sb2FkcmIucGNpIiwKQEAgLTE3MDYsNiArMTc3Nyw3IEBACiAgICJsbHZtLmhleGFnb24uTTIubW1weXVsLnJzMSIsCiAgICJsbHZtLmhleGFnb24uTTIubW1weXVsLnMwIiwKICAgImxsdm0uaGV4YWdvbi5NMi5tbXB5dWwuczEiLAorICAibGx2bS5oZXhhZ29uLk0yLm1uYWNpIiwKICAgImxsdm0uaGV4YWdvbi5NMi5tcHkuYWNjLmhoLnMwIiwKICAgImxsdm0uaGV4YWdvbi5NMi5tcHkuYWNjLmhoLnMxIiwKICAgImxsdm0uaGV4YWdvbi5NMi5tcHkuYWNjLmhsLnMwIiwKQEAgLTE4MDYsNiArMTg3OCw4IEBACiAgICJsbHZtLmhleGFnb24uTTIubXB5ZC5ybmQubGwuczAiLAogICAibGx2bS5oZXhhZ29uLk0yLm1weWQucm5kLmxsLnMxIiwKICAgImxsdm0uaGV4YWdvbi5NMi5tcHlpIiwKKyAgImxsdm0uaGV4YWdvbi5NMi5tcHlzaW4iLAorICAibGx2bS5oZXhhZ29uLk0yLm1weXNpcCIsCiAgICJsbHZtLmhleGFnb24uTTIubXB5c21pIiwKICAgImxsdm0uaGV4YWdvbi5NMi5tcHlzdS51cCIsCiAgICJsbHZtLmhleGFnb24uTTIubXB5dS5hY2MuaGguczAiLApAQCAtMjAxOCw3ICsyMDkyLDYgQEAKICAgImxsdm0uaGV4YWdvbi5TMi5hc3Iuci52dyIsCiAgICJsbHZtLmhleGFnb24uUzIuYnJldiIsCiAgICJsbHZtLmhleGFnb24uUzIuYnJldnAiLAotICAibGx2bS5oZXhhZ29uLlMyLmNhYmFjZW5jYmluIiwKICAgImxsdm0uaGV4YWdvbi5TMi5jbDAiLAogICAibGx2bS5oZXhhZ29uLlMyLmNsMHAiLAogICAibGx2bS5oZXhhZ29uLlMyLmNsMSIsCkBAIC0yMDgzLDYgKzIxNTYsNyBAQAogICAibGx2bS5oZXhhZ29uLlMyLmxzci5yLnIub3IiLAogICAibGx2bS5oZXhhZ29uLlMyLmxzci5yLnZoIiwKICAgImxsdm0uaGV4YWdvbi5TMi5sc3Iuci52dyIsCisgICJsbHZtLmhleGFnb24uUzIubWFzayIsCiAgICJsbHZtLmhleGFnb24uUzIucGFja2hsIiwKICAgImxsdm0uaGV4YWdvbi5TMi5wYXJpdHlwIiwKICAgImxsdm0uaGV4YWdvbi5TMi5zZXRiaXQuaSIsCkBAIC0yMjAwLDYgKzIyNzQsMzcgQEAKICAgImxsdm0uaGV4YWdvbi5WNi5leHRyYWN0dy4xMjhCIiwKICAgImxsdm0uaGV4YWdvbi5WNi5oaSIsCiAgICJsbHZtLmhleGFnb24uVjYuaGkuMTI4QiIsCisgICJsbHZtLmhleGFnb24uVjYubGQwIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZDAuMTI4QiIsCisgICJsbHZtLmhleGFnb24uVjYubGRjbnAwIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZGNucDAuMTI4QiIsCisgICJsbHZtLmhleGFnb24uVjYubGRjbnBudDAiLAorICAibGx2bS5oZXhhZ29uLlY2LmxkY25wbnQwLjEyOEIiLAorICAibGx2bS5oZXhhZ29uLlY2LmxkY3AwIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZGNwMC4xMjhCIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZGNwbnQwIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZGNwbnQwLjEyOEIiLAorICAibGx2bS5oZXhhZ29uLlY2LmxkbnAwIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZG5wMC4xMjhCIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZG5wbnQwIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZG5wbnQwLjEyOEIiLAorICAibGx2bS5oZXhhZ29uLlY2LmxkbnQwIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZG50MC4xMjhCIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZG50bnQwIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZHAwIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZHAwLjEyOEIiLAorICAibGx2bS5oZXhhZ29uLlY2LmxkcG50MCIsCisgICJsbHZtLmhleGFnb24uVjYubGRwbnQwLjEyOEIiLAorICAibGx2bS5oZXhhZ29uLlY2LmxkdG5wMCIsCisgICJsbHZtLmhleGFnb24uVjYubGR0bnAwLjEyOEIiLAorICAibGx2bS5oZXhhZ29uLlY2LmxkdG5wbnQwIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZHRucG50MC4xMjhCIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZHRwMCIsCisgICJsbHZtLmhleGFnb24uVjYubGR0cDAuMTI4QiIsCisgICJsbHZtLmhleGFnb24uVjYubGR0cG50MCIsCisgICJsbHZtLmhleGFnb24uVjYubGR0cG50MC4xMjhCIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZHUwIiwKKyAgImxsdm0uaGV4YWdvbi5WNi5sZHUwLjEyOEIiLAogICAibGx2bS5oZXhhZ29uLlY2LmxvIiwKICAgImxsdm0uaGV4YWdvbi5WNi5sby4xMjhCIiwKICAgImxsdm0uaGV4YWdvbi5WNi5sdnNwbGF0YiIsCkBAIC0yMjcwLDYgKzIzNzUsOCBAQAogICAibGx2bS5oZXhhZ29uLlY2LnZhZGRic2F0LmR2LjEyOEIiLAogICAibGx2bS5oZXhhZ29uLlY2LnZhZGRjYXJyeSIsCiAgICJsbHZtLmhleGFnb24uVjYudmFkZGNhcnJ5LjEyOEIiLAorICAibGx2bS5oZXhhZ29uLlY2LnZhZGRjYXJyeXNhdCIsCisgICJsbHZtLmhleGFnb24uVjYudmFkZGNhcnJ5c2F0LjEyOEIiLAogICAibGx2bS5oZXhhZ29uLlY2LnZhZGRjbGJoIiwKICAgImxsdm0uaGV4YWdvbi5WNi52YWRkY2xiaC4xMjhCIiwKICAgImxsdm0uaGV4YWdvbi5WNi52YWRkY2xidyIsCkBAIC0yMzU4LDYgKzI0NjUsOCBAQAogICAibGx2bS5oZXhhZ29uLlY2LnZhc2x3LmFjYy4xMjhCIiwKICAgImxsdm0uaGV4YWdvbi5WNi52YXNsd3YiLAogICAibGx2bS5oZXhhZ29uLlY2LnZhc2x3di4xMjhCIiwKKyAgImxsdm0uaGV4YWdvbi5WNi52YXNyLmludG8iLAorICAibGx2bS5oZXhhZ29uLlY2LnZhc3IuaW50by4xMjhCIiwKICAgImxsdm0uaGV4YWdvbi5WNi52YXNyaCIsCiAgICJsbHZtLmhleGFnb24uVjYudmFzcmguMTI4QiIsCiAgICJsbHZtLmhleGFnb24uVjYudmFzcmguYWNjIiwKQEAgLTI4MzgsNiArMjk0Nyw4IEBACiAgICJsbHZtLmhleGFnb24uVjYudnJtcHl1YnYuYWNjLjEyOEIiLAogICAibGx2bS5oZXhhZ29uLlY2LnZyb3IiLAogICAibGx2bS5oZXhhZ29uLlY2LnZyb3IuMTI4QiIsCisgICJsbHZtLmhleGFnb24uVjYudnJvdHIiLAorICAibGx2bS5oZXhhZ29uLlY2LnZyb3RyLjEyOEIiLAogICAibGx2bS5oZXhhZ29uLlY2LnZyb3VuZGhiIiwKICAgImxsdm0uaGV4YWdvbi5WNi52cm91bmRoYi4xMjhCIiwKICAgImxsdm0uaGV4YWdvbi5WNi52cm91bmRodWIiLApAQCAtMjg1NCw2ICsyOTY1LDggQEAKICAgImxsdm0uaGV4YWdvbi5WNi52cnNhZHViaS4xMjhCIiwKICAgImxsdm0uaGV4YWdvbi5WNi52cnNhZHViaS5hY2MiLAogICAibGx2bS5oZXhhZ29uLlY2LnZyc2FkdWJpLmFjYy4xMjhCIiwKKyAgImxsdm0uaGV4YWdvbi5WNi52c2F0ZHciLAorICAibGx2bS5oZXhhZ29uLlY2LnZzYXRkdy4xMjhCIiwKICAgImxsdm0uaGV4YWdvbi5WNi52c2F0aHViIiwKICAgImxsdm0uaGV4YWdvbi5WNi52c2F0aHViLjEyOEIiLAogICAibGx2bS5oZXhhZ29uLlY2LnZzYXR1d3VoIiwKQEAgLTI5NzIsNiArMzA4NSw4IEBACiAgICJsbHZtLmhleGFnb24uVjYudnRtcHloYi4xMjhCIiwKICAgImxsdm0uaGV4YWdvbi5WNi52dG1weWhiLmFjYyIsCiAgICJsbHZtLmhleGFnb24uVjYudnRtcHloYi5hY2MuMTI4QiIsCisgICJsbHZtLmhleGFnb24uVjYudnRyYW4yeDIubWFwIiwKKyAgImxsdm0uaGV4YWdvbi5WNi52dHJhbjJ4Mi5tYXAuMTI4QiIsCiAgICJsbHZtLmhleGFnb24uVjYudnVucGFja2IiLAogICAibGx2bS5oZXhhZ29uLlY2LnZ1bnBhY2tiLjEyOEIiLAogICAibGx2bS5oZXhhZ29uLlY2LnZ1bnBhY2toIiwKQEAgLTMwMDcsOCArMzEyMiw5IEBACiAgICJsbHZtLmhleGFnb24uY2lyYy5zdGgiLAogICAibGx2bS5oZXhhZ29uLmNpcmMuc3RoaGkiLAogICAibGx2bS5oZXhhZ29uLmNpcmMuc3R3IiwKLSAgImxsdm0uaGV4YWdvbi5tbTI1NmkudmFkZHciLAogICAibGx2bS5oZXhhZ29uLnByZWZldGNoIiwKKyAgImxsdm0uaGV4YWdvbi52bWVtY3B5IiwKKyAgImxsdm0uaGV4YWdvbi52bWVtc2V0IiwKICAgImxsdm0ubWlwcy5hYnNxLnMucGgiLAogICAibGx2bS5taXBzLmFic3Eucy5xYiIsCiAgICJsbHZtLm1pcHMuYWJzcS5zLnciLApAQCAtNTIzNCwxMyArNTM1MCwyMyBAQAogICAibGx2bS5yNjAwLnR4bGMiLAogICAibGx2bS5yNjAwLnR4cSIsCiAgICJsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcuYWRkLmkzMiIsCisgICJsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcuYWRkLmk2NCIsCiAgICJsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcubWF4LmkzMiIsCisgICJsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcubWF4Lmk2NCIsCiAgICJsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcubWluLmkzMiIsCisgICJsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcubWluLmk2NCIsCiAgICJsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcubmFuZC5pMzIiLAorICAibGx2bS5yaXNjdi5tYXNrZWQuYXRvbWljcm13Lm5hbmQuaTY0IiwKICAgImxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy5zdWIuaTMyIiwKKyAgImxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy5zdWIuaTY0IiwKICAgImxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy51bWF4LmkzMiIsCisgICJsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcudW1heC5pNjQiLAogICAibGx2bS5yaXNjdi5tYXNrZWQuYXRvbWljcm13LnVtaW4uaTMyIiwKKyAgImxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy51bWluLmk2NCIsCiAgICJsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcueGNoZy5pMzIiLAorICAibGx2bS5yaXNjdi5tYXNrZWQuYXRvbWljcm13LnhjaGcuaTY0IiwKKyAgImxsdm0ucmlzY3YubWFza2VkLmNtcHhjaGcuaTMyIiwKKyAgImxsdm0ucmlzY3YubWFza2VkLmNtcHhjaGcuaTY0IiwKICAgImxsdm0uczM5MC5lZnBjIiwKICAgImxsdm0uczM5MC5ldG5kIiwKICAgImxsdm0uczM5MC5sY2JiIiwKQEAgLTU0NjEsMjkgKzU1ODcsMjcgQEAKICAgImxsdm0uczM5MC52dXBsbGIiLAogICAibGx2bS5zMzkwLnZ1cGxsZiIsCiAgICJsbHZtLnMzOTAudnVwbGxoIiwKLSAgImxsdm0ud2FzbS5hZGQuc2F0dXJhdGUuc2lnbmVkIiwKLSAgImxsdm0ud2FzbS5hZGQuc2F0dXJhdGUudW5zaWduZWQiLAogICAibGx2bS53YXNtLmFsbHRydWUiLAogICAibGx2bS53YXNtLmFueXRydWUiLAogICAibGx2bS53YXNtLmF0b21pYy5ub3RpZnkiLAogICAibGx2bS53YXNtLmF0b21pYy53YWl0LmkzMiIsCiAgICJsbHZtLndhc20uYXRvbWljLndhaXQuaTY0IiwKICAgImxsdm0ud2FzbS5iaXRzZWxlY3QiLAotICAibGx2bS53YXNtLmNhdGNoIiwKLSAgImxsdm0ud2FzbS5jdXJyZW50Lm1lbW9yeSIsCisgICJsbHZtLndhc20uZGF0YS5kcm9wIiwKKyAgImxsdm0ud2FzbS5leHRyYWN0LmV4Y2VwdGlvbiIsCiAgICJsbHZtLndhc20uZ2V0LmVoc2VsZWN0b3IiLAogICAibGx2bS53YXNtLmdldC5leGNlcHRpb24iLAotICAibGx2bS53YXNtLmdyb3cubWVtb3J5IiwKICAgImxsdm0ud2FzbS5sYW5kaW5ncGFkLmluZGV4IiwKICAgImxsdm0ud2FzbS5sc2RhIiwKLSAgImxsdm0ud2FzbS5tZW0uZ3JvdyIsCi0gICJsbHZtLndhc20ubWVtLnNpemUiLAogICAibGx2bS53YXNtLm1lbW9yeS5ncm93IiwKKyAgImxsdm0ud2FzbS5tZW1vcnkuaW5pdCIsCiAgICJsbHZtLndhc20ubWVtb3J5LnNpemUiLAogICAibGx2bS53YXNtLnJldGhyb3ciLAogICAibGx2bS53YXNtLnN1Yi5zYXR1cmF0ZS5zaWduZWQiLAogICAibGx2bS53YXNtLnN1Yi5zYXR1cmF0ZS51bnNpZ25lZCIsCiAgICJsbHZtLndhc20udGhyb3ciLAorICAibGx2bS53YXNtLnRydW5jLnNhdHVyYXRlLnNpZ25lZCIsCisgICJsbHZtLndhc20udHJ1bmMuc2F0dXJhdGUudW5zaWduZWQiLAogICAibGx2bS54ODYuM2Rub3cucGF2Z3VzYiIsCiAgICJsbHZtLng4Ni4zZG5vdy5wZjJpZCIsCiAgICJsbHZtLng4Ni4zZG5vdy5wZmFjYyIsCkBAIC01NTA4LDEwICs1NjMyLDggQEAKICAgImxsdm0ueDg2LjNkbm93YS5wZnBuYWNjIiwKICAgImxsdm0ueDg2LjNkbm93YS5waTJmdyIsCiAgICJsbHZtLng4Ni4zZG5vd2EucHN3YXBkIiwKLSAgImxsdm0ueDg2LmFkZGNhcnJ5LnUzMiIsCi0gICJsbHZtLng4Ni5hZGRjYXJyeS51NjQiLAotICAibGx2bS54ODYuYWRkY2Fycnl4LnUzMiIsCi0gICJsbHZtLng4Ni5hZGRjYXJyeXgudTY0IiwKKyAgImxsdm0ueDg2LmFkZGNhcnJ5LjMyIiwKKyAgImxsdm0ueDg2LmFkZGNhcnJ5LjY0IiwKICAgImxsdm0ueDg2LmFlc25pLmFlc2RlYyIsCiAgICJsbHZtLng4Ni5hZXNuaS5hZXNkZWMuMjU2IiwKICAgImxsdm0ueDg2LmFlc25pLmFlc2RlYy41MTIiLApAQCAtNTYxMSw4ICs1NzMzLDYgQEAKICAgImxsdm0ueDg2LmF2eDIucGFja3Nzd2IiLAogICAibGx2bS54ODYuYXZ4Mi5wYWNrdXNkdyIsCiAgICJsbHZtLng4Ni5hdngyLnBhY2t1c3diIiwKLSAgImxsdm0ueDg2LmF2eDIucGFkZHMuYiIsCi0gICJsbHZtLng4Ni5hdngyLnBhZGRzLnciLAogICAibGx2bS54ODYuYXZ4Mi5wYmxlbmR2YiIsCiAgICJsbHZtLng4Ni5hdngyLnBlcm1kIiwKICAgImxsdm0ueDg2LmF2eDIucGVybXBzIiwKQEAgLTU2NTksOCArNTc3OSw2IEBACiAgICJsbHZtLng4Ni5hdngyLnBzcmx2LmQuMjU2IiwKICAgImxsdm0ueDg2LmF2eDIucHNybHYucSIsCiAgICJsbHZtLng4Ni5hdngyLnBzcmx2LnEuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDIucHN1YnMuYiIsCi0gICJsbHZtLng4Ni5hdngyLnBzdWJzLnciLAogICAibGx2bS54ODYuYXZ4NTEyLmFkZC5wZC41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLmFkZC5wcy41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLmJyb2FkY2FzdG1iLjEyOCIsCkBAIC01Njc1LDYgKzU3OTMsMTIgQEAKICAgImxsdm0ueDg2LmF2eDUxMi5jbXAucHMuMTI4IiwKICAgImxsdm0ueDg2LmF2eDUxMi5jbXAucHMuMjU2IiwKICAgImxsdm0ueDg2LmF2eDUxMi5jbXAucHMuNTEyIiwKKyAgImxsdm0ueDg2LmF2eDUxMi5jb25mbGljdC5kLjEyOCIsCisgICJsbHZtLng4Ni5hdng1MTIuY29uZmxpY3QuZC4yNTYiLAorICAibGx2bS54ODYuYXZ4NTEyLmNvbmZsaWN0LmQuNTEyIiwKKyAgImxsdm0ueDg2LmF2eDUxMi5jb25mbGljdC5xLjEyOCIsCisgICJsbHZtLng4Ni5hdng1MTIuY29uZmxpY3QucS4yNTYiLAorICAibGx2bS54ODYuYXZ4NTEyLmNvbmZsaWN0LnEuNTEyIiwKICAgImxsdm0ueDg2LmF2eDUxMi5jdnRzaTJzZDY0IiwKICAgImxsdm0ueDg2LmF2eDUxMi5jdnRzaTJzczMyIiwKICAgImxsdm0ueDg2LmF2eDUxMi5jdnRzaTJzczY0IiwKQEAgLTU3NDYsMzEgKzU4NzAsNyBAQAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2suYWRkLnNzLnJvdW5kIiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmNtcC5zZCIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5jbXAuc3MiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MuYi4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MuYi4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MuYi41MTIiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MuZC4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MuZC4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MuZC41MTIiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MucGQuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmNvbXByZXNzLnBkLjI1NiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5wZC41MTIiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MucHMuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmNvbXByZXNzLnBzLjI1NiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5wcy41MTIiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MucS4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MucS4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MucS41MTIiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3Mudy4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3Mudy4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3Mudy41MTIiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29uZmxpY3QuZC4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29uZmxpY3QuZC4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29uZmxpY3QuZC41MTIiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29uZmxpY3QucS4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29uZmxpY3QucS4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY29uZmxpY3QucS41MTIiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0ZHEycHMuNTEyIiwKKyAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmNvbXByZXNzIiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHBkMmRxLjEyOCIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5jdnRwZDJkcS41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0cGQycHMiLApAQCAtNTc5NywxMCArNTg5Nyw3IEBACiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5jdnRwczJ1cXEuMTI4IiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHBzMnVxcS4yNTYiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0cHMydXFxLjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay5jdnRxcTJwZC41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0cXEycHMuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHFxMnBzLjI1NiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay5jdnRxcTJwcy41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0c2Qyc3Mucm91bmQiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0c3Myc2Qucm91bmQiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0dHBkMmRxLjEyOCIsCkBAIC01ODI0LDMxICs1OTIxLDEwIEBACiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5jdnR0cHMydXFxLjEyOCIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5jdnR0cHMydXFxLjI1NiIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5jdnR0cHMydXFxLjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay5jdnR1ZHEycHMuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHVxcTJwZC41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0dXFxMnBzLjEyOCIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay5jdnR1cXEycHMuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHVxcTJwcy41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZGl2LnNkLnJvdW5kIiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmRpdi5zcy5yb3VuZCIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQuYi4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZXhwYW5kLmIuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5iLjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQuZC4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZXhwYW5kLmQuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5kLjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQucGQuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5wZC4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZXhwYW5kLnBkLjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQucHMuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5wcy4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZXhwYW5kLnBzLjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQucS4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZXhwYW5kLnEuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5xLjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQudy4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZXhwYW5kLncuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC53LjUxMiIsCisgICJsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZml4dXBpbW0ucGQuMTI4IiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmZpeHVwaW1tLnBkLjI1NiIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5maXh1cGltbS5wZC41MTIiLApAQCAtNTg1OSw2ICs1OTM1LDMwIEBACiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5maXh1cGltbS5zcyIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5mcGNsYXNzLnNkIiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmZwY2xhc3Muc3MiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyLmRwZC41MTIiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyLmRwaS41MTIiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyLmRwcS41MTIiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyLmRwcy41MTIiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyLnFwZC41MTIiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyLnFwaS41MTIiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyLnFwcS41MTIiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyLnFwcy41MTIiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM2RpdjIuZGYiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM2RpdjIuZGkiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM2RpdjQuZGYiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM2RpdjQuZGkiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM2RpdjQuc2YiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM2RpdjQuc2kiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM2Rpdjguc2YiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM2Rpdjguc2kiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM3NpdjIuZGYiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM3NpdjIuZGkiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM3NpdjQuZGYiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM3NpdjQuZGkiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM3NpdjQuc2YiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM3NpdjQuc2kiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM3Npdjguc2YiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM3Npdjguc2kiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2suZ2V0ZXhwLnBkLjEyOCIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5nZXRleHAucGQuMjU2IiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLmdldGV4cC5wZC41MTIiLApAQCAtNTkwMCw4ICs2MDAwLDYgQEAKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3YucWIubWVtLjI1NiIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LnFiLm1lbS41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi5xZC4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi5xZC4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi5xZC41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi5xZC5tZW0uMTI4IiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3YucWQubWVtLjI1NiIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LnFkLm1lbS41MTIiLApAQCAtNTkxMiw4ICs2MDEwLDYgQEAKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3YucXcubWVtLjI1NiIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LnF3Lm1lbS41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi53Yi4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi53Yi4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi53Yi41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi53Yi5tZW0uMTI4IiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3Yud2IubWVtLjI1NiIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LndiLm1lbS41MTIiLApAQCAtNTk4OSw5ICs2MDg1LDYgQEAKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3Z1cy53Yi5tZW0uMTI4IiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3Z1cy53Yi5tZW0uMjU2IiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3Z1cy53Yi5tZW0uNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtdWx0aXNoaWZ0LnFiLjEyOCIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay5wbXVsdGlzaGlmdC5xYi4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2sucG11bHRpc2hpZnQucWIuNTEyIiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnJhbmdlLnBkLjEyOCIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5yYW5nZS5wZC4yNTYiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2sucmFuZ2UucGQuNTEyIiwKQEAgLTYwMjQsNiArNjExNywzMCBAQAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhbGVmLnBzLjUxMiIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5zY2FsZWYuc2QiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhbGVmLnNzIiwKKyAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnNjYXR0ZXIuZHBkLjUxMiIsCisgICJsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyLmRwaS41MTIiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlci5kcHEuNTEyIiwKKyAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnNjYXR0ZXIuZHBzLjUxMiIsCisgICJsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyLnFwZC41MTIiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlci5xcGkuNTEyIiwKKyAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnNjYXR0ZXIucXBxLjUxMiIsCisgICJsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyLnFwcy41MTIiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjIuZGYiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjIuZGkiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjQuZGYiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjQuZGkiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjQuc2YiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjQuc2kiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjguc2YiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjguc2kiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjIuZGYiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjIuZGkiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjQuZGYiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjQuZGkiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjQuc2YiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjQuc2kiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjguc2YiLAorICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjguc2kiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2suc3FydC5zZCIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay5zcXJ0LnNzIiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnN1Yi5zZC5yb3VuZCIsCkBAIC02MDM0LDI3ICs2MTUxLDYgQEAKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnZjdnRwczJwaC4xMjgiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2sudmN2dHBzMnBoLjI1NiIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFzay52Y3Z0cHMycGguNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hsZHYuZC4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaGxkdi5kLjI1NiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay52cHNobGR2LmQuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hsZHYucS4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaGxkdi5xLjI1NiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay52cHNobGR2LnEuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hsZHYudy4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaGxkdi53LjI1NiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay52cHNobGR2LncuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hyZHYuZC4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaHJkdi5kLjI1NiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay52cHNocmR2LmQuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hyZHYucS4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaHJkdi5xLjI1NiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay52cHNocmR2LnEuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hyZHYudy4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaHJkdi53LjI1NiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay52cHNocmR2LncuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2h1ZmJpdHFtYi4xMjgiLAotICAibGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaHVmYml0cW1iLjI1NiIsCi0gICJsbHZtLng4Ni5hdng1MTIubWFzay52cHNodWZiaXRxbWIuNTEyIiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei5maXh1cGltbS5wZC4xMjgiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2t6LmZpeHVwaW1tLnBkLjI1NiIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFza3ouZml4dXBpbW0ucGQuNTEyIiwKQEAgLTYwNjMsMjQgKzYxNTksNiBAQAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2t6LmZpeHVwaW1tLnBzLjUxMiIsCiAgICJsbHZtLng4Ni5hdng1MTIubWFza3ouZml4dXBpbW0uc2QiLAogICAibGx2bS54ODYuYXZ4NTEyLm1hc2t6LmZpeHVwaW1tLnNzIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNobGR2LmQuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNobGR2LmQuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNobGR2LmQuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNobGR2LnEuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNobGR2LnEuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNobGR2LnEuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNobGR2LncuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNobGR2LncuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNobGR2LncuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNocmR2LmQuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNocmR2LmQuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNocmR2LmQuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNocmR2LnEuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNocmR2LnEuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNocmR2LnEuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNocmR2LncuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNocmR2LncuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNocmR2LncuNTEyIiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXgucGQuNTEyIiwKICAgImxsdm0ueDg2LmF2eDUxMi5tYXgucHMuNTEyIiwKICAgImxsdm0ueDg2LmF2eDUxMi5taW4ucGQuNTEyIiwKQEAgLTYwOTEsOCArNjE2OSw2IEBACiAgICJsbHZtLng4Ni5hdng1MTIucGFja3Nzd2IuNTEyIiwKICAgImxsdm0ueDg2LmF2eDUxMi5wYWNrdXNkdy41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLnBhY2t1c3diLjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIucGFkZHMuYi41MTIiLAotICAibGx2bS54ODYuYXZ4NTEyLnBhZGRzLncuNTEyIiwKICAgImxsdm0ueDg2LmF2eDUxMi5wZXJtdmFyLmRmLjI1NiIsCiAgICJsbHZtLng4Ni5hdng1MTIucGVybXZhci5kZi41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLnBlcm12YXIuZGkuMjU2IiwKQEAgLTYxMTAsMzAgKzYxODYsOSBAQAogICAibGx2bS54ODYuYXZ4NTEyLnBtdWwuaHIuc3cuNTEyIiwKICAgImxsdm0ueDg2LmF2eDUxMi5wbXVsaC53LjUxMiIsCiAgICJsbHZtLng4Ni5hdng1MTIucG11bGh1LncuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9sLmQuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9sLmQuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9sLmQuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9sLnEuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9sLnEuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9sLnEuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9sdi5kLjEyOCIsCi0gICJsbHZtLng4Ni5hdng1MTIucHJvbHYuZC4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLnByb2x2LmQuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9sdi5xLjEyOCIsCi0gICJsbHZtLng4Ni5hdng1MTIucHJvbHYucS4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLnByb2x2LnEuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9yLmQuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9yLmQuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9yLmQuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9yLnEuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9yLnEuMjU2IiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9yLnEuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9ydi5kLjEyOCIsCi0gICJsbHZtLng4Ni5hdng1MTIucHJvcnYuZC4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLnByb3J2LmQuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wcm9ydi5xLjEyOCIsCi0gICJsbHZtLng4Ni5hdng1MTIucHJvcnYucS4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLnByb3J2LnEuNTEyIiwKKyAgImxsdm0ueDg2LmF2eDUxMi5wbXVsdGlzaGlmdC5xYi4xMjgiLAorICAibGx2bS54ODYuYXZ4NTEyLnBtdWx0aXNoaWZ0LnFiLjI1NiIsCisgICJsbHZtLng4Ni5hdng1MTIucG11bHRpc2hpZnQucWIuNTEyIiwKICAgImxsdm0ueDg2LmF2eDUxMi5wc2FkLmJ3LjUxMiIsCiAgICJsbHZtLng4Ni5hdng1MTIucHNodWYuYi41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLnBzbGwuZC41MTIiLApAQCAtNjE3NSw4ICs2MjMwLDYgQEAKICAgImxsdm0ueDg2LmF2eDUxMi5wc3Jsdi53LjEyOCIsCiAgICJsbHZtLng4Ni5hdng1MTIucHNybHYudy4yNTYiLAogICAibGx2bS54ODYuYXZ4NTEyLnBzcmx2LncuNTEyIiwKLSAgImxsdm0ueDg2LmF2eDUxMi5wc3Vicy5iLjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIucHN1YnMudy41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLnB0ZXJubG9nLmQuMTI4IiwKICAgImxsdm0ueDg2LmF2eDUxMi5wdGVybmxvZy5kLjI1NiIsCiAgICJsbHZtLng4Ni5hdng1MTIucHRlcm5sb2cuZC41MTIiLApAQCAtNjIzNSwxMCArNjI4OCwxMiBAQAogICAibGx2bS54ODYuYXZ4NTEyLnNjYXR0ZXJzaXY0LnNpIiwKICAgImxsdm0ueDg2LmF2eDUxMi5zY2F0dGVyc2l2OC5zZiIsCiAgICJsbHZtLng4Ni5hdng1MTIuc2NhdHRlcnNpdjguc2kiLAorICAibGx2bS54ODYuYXZ4NTEyLnNpdG9mcC5yb3VuZCIsCiAgICJsbHZtLng4Ni5hdng1MTIuc3FydC5wZC41MTIiLAogICAibGx2bS54ODYuYXZ4NTEyLnNxcnQucHMuNTEyIiwKICAgImxsdm0ueDg2LmF2eDUxMi5zdWIucGQuNTEyIiwKICAgImxsdm0ueDg2LmF2eDUxMi5zdWIucHMuNTEyIiwKKyAgImxsdm0ueDg2LmF2eDUxMi51aXRvZnAucm91bmQiLAogICAibGx2bS54ODYuYXZ4NTEyLnZjb21pLnNkIiwKICAgImxsdm0ueDg2LmF2eDUxMi52Y29taS5zcyIsCiAgICJsbHZtLng4Ni5hdng1MTIudmN2dHNkMnNpMzIiLApAQCAtNjI5MywyNCArNjM0OCw5IEBACiAgICJsbHZtLng4Ni5hdng1MTIudnBtYWRkNTJsLnVxLjEyOCIsCiAgICJsbHZtLng4Ni5hdng1MTIudnBtYWRkNTJsLnVxLjI1NiIsCiAgICJsbHZtLng4Ni5hdng1MTIudnBtYWRkNTJsLnVxLjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIudnBzaGxkLmQuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi52cHNobGQuZC4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLnZwc2hsZC5kLjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIudnBzaGxkLnEuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi52cHNobGQucS4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLnZwc2hsZC5xLjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIudnBzaGxkLncuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi52cHNobGQudy4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLnZwc2hsZC53LjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIudnBzaHJkLmQuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi52cHNocmQuZC4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLnZwc2hyZC5kLjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIudnBzaHJkLnEuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi52cHNocmQucS4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLnZwc2hyZC5xLjUxMiIsCi0gICJsbHZtLng4Ni5hdng1MTIudnBzaHJkLncuMTI4IiwKLSAgImxsdm0ueDg2LmF2eDUxMi52cHNocmQudy4yNTYiLAotICAibGx2bS54ODYuYXZ4NTEyLnZwc2hyZC53LjUxMiIsCisgICJsbHZtLng4Ni5hdng1MTIudnBzaHVmYml0cW1iLjEyOCIsCisgICJsbHZtLng4Ni5hdng1MTIudnBzaHVmYml0cW1iLjI1NiIsCisgICJsbHZtLng4Ni5hdng1MTIudnBzaHVmYml0cW1iLjUxMiIsCiAgICJsbHZtLng4Ni5ibWkuYmV4dHIuMzIiLAogICAibGx2bS54ODYuYm1pLmJleHRyLjY0IiwKICAgImxsdm0ueDg2LmJtaS5iemhpLjMyIiwKQEAgLTY0NDQsNyArNjQ4NCw2IEBACiAgICJsbHZtLng4Ni5zZWguZWhndWFyZCIsCiAgICJsbHZtLng4Ni5zZWguZWhyZWdub2RlIiwKICAgImxsdm0ueDg2LnNlaC5sc2RhIiwKLSAgImxsdm0ueDg2LnNlaC5yZWNvdmVyZnAiLAogICAibGx2bS54ODYuc2V0c3Nic3kiLAogICAibGx2bS54ODYuc2hhMW1zZzEiLAogICAibGx2bS54ODYuc2hhMW1zZzIiLApAQCAtNjUyMSw4ICs2NTYwLDYgQEAKICAgImxsdm0ueDg2LnNzZTIucGFja3NzZHcuMTI4IiwKICAgImxsdm0ueDg2LnNzZTIucGFja3Nzd2IuMTI4IiwKICAgImxsdm0ueDg2LnNzZTIucGFja3Vzd2IuMTI4IiwKLSAgImxsdm0ueDg2LnNzZTIucGFkZHMuYiIsCi0gICJsbHZtLng4Ni5zc2UyLnBhZGRzLnciLAogICAibGx2bS54ODYuc3NlMi5wYXVzZSIsCiAgICJsbHZtLng4Ni5zc2UyLnBtYWRkLndkIiwKICAgImxsdm0ueDg2LnNzZTIucG1vdm1za2IuMTI4IiwKQEAgLTY1NDUsOCArNjU4Miw2IEBACiAgICJsbHZtLng4Ni5zc2UyLnBzcmxpLmQiLAogICAibGx2bS54ODYuc3NlMi5wc3JsaS5xIiwKICAgImxsdm0ueDg2LnNzZTIucHNybGkudyIsCi0gICJsbHZtLng4Ni5zc2UyLnBzdWJzLmIiLAotICAibGx2bS54ODYuc3NlMi5wc3Vicy53IiwKICAgImxsdm0ueDg2LnNzZTIudWNvbWllcS5zZCIsCiAgICJsbHZtLng4Ni5zc2UyLnVjb21pZ2Uuc2QiLAogICAibGx2bS54ODYuc3NlMi51Y29taWd0LnNkIiwKQEAgLTY2MjcsOCArNjY2Miw4IEBACiAgICJsbHZtLng4Ni5zc3NlMy5wc2lnbi5kLjEyOCIsCiAgICJsbHZtLng4Ni5zc3NlMy5wc2lnbi53IiwKICAgImxsdm0ueDg2LnNzc2UzLnBzaWduLncuMTI4IiwKLSAgImxsdm0ueDg2LnN1YmJvcnJvdy51MzIiLAotICAibGx2bS54ODYuc3ViYm9ycm93LnU2NCIsCisgICJsbHZtLng4Ni5zdWJib3Jyb3cuMzIiLAorICAibGx2bS54ODYuc3ViYm9ycm93LjY0IiwKICAgImxsdm0ueDg2LnRibS5iZXh0cmkudTMyIiwKICAgImxsdm0ueDg2LnRibS5iZXh0cmkudTY0IiwKICAgImxsdm0ueDg2LnRwYXVzZSIsCkBAIC02NjY4LDE0ICs2NzAzLDYgQEAKICAgImxsdm0ueDg2LnhvcC52ZnJjei5wcy4yNTYiLAogICAibGx2bS54ODYueG9wLnZmcmN6LnNkIiwKICAgImxsdm0ueDg2LnhvcC52ZnJjei5zcyIsCi0gICJsbHZtLng4Ni54b3AudnBjb21iIiwKLSAgImxsdm0ueDg2LnhvcC52cGNvbWQiLAotICAibGx2bS54ODYueG9wLnZwY29tcSIsCi0gICJsbHZtLng4Ni54b3AudnBjb211YiIsCi0gICJsbHZtLng4Ni54b3AudnBjb211ZCIsCi0gICJsbHZtLng4Ni54b3AudnBjb211cSIsCi0gICJsbHZtLng4Ni54b3AudnBjb211dyIsCi0gICJsbHZtLng4Ni54b3AudnBjb213IiwKICAgImxsdm0ueDg2LnhvcC52cGVybWlsMnBkIiwKICAgImxsdm0ueDg2LnhvcC52cGVybWlsMnBkLjI1NiIsCiAgICJsbHZtLng4Ni54b3AudnBlcm1pbDJwcyIsCkBAIC02NzA4LDE0ICs2NzM1LDYgQEAKICAgImxsdm0ueDg2LnhvcC52cG1hZGNzc3dkIiwKICAgImxsdm0ueDg2LnhvcC52cG1hZGNzd2QiLAogICAibGx2bS54ODYueG9wLnZwcGVybSIsCi0gICJsbHZtLng4Ni54b3AudnByb3RiIiwKLSAgImxsdm0ueDg2LnhvcC52cHJvdGJpIiwKLSAgImxsdm0ueDg2LnhvcC52cHJvdGQiLAotICAibGx2bS54ODYueG9wLnZwcm90ZGkiLAotICAibGx2bS54ODYueG9wLnZwcm90cSIsCi0gICJsbHZtLng4Ni54b3AudnByb3RxaSIsCi0gICJsbHZtLng4Ni54b3AudnByb3R3IiwKLSAgImxsdm0ueDg2LnhvcC52cHJvdHdpIiwKICAgImxsdm0ueDg2LnhvcC52cHNoYWIiLAogICAibGx2bS54ODYueG9wLnZwc2hhZCIsCiAgICJsbHZtLng4Ni54b3AudnBzaGFxIiwKQEAgLTY4MDIsNTIgKzY4MjEsNTkgQEAKICAgMCB8ICgxPDwzKSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSwKICAgMCB8ICgxPDwyKSwKLSAgMCB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKKyAgMCB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSwKLSAgMCB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKKyAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSwKKyAgMCB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKKyAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw1KSB8ICgxPDw2KSwKICAgMCB8ICgxPDwyKSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSwKLSAgMCB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKKyAgMCB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKKyAgMCB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDw1KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSwKLSAgMCB8ICgxPDwyKSwKKyAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCwKICAgMCwKICAgMCwKLSAgMCB8ICgxPDwyKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKKyAgMCB8ICgxPDw2KSwKKyAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw3KSwKKyAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDw3KSwKKyAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSwKKyAgMCB8ICgxPDwzKSB8ICgxPDw2KSwKKyAgMCB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSwKKyAgMCB8ICgxPDwzKSwKKyAgMCwKKyAgMCwKKyAgMCwKKyAgMCB8ICgxPDwzKSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKKyAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw3KSwKKyAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKKyAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKKyAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSwKLSAgMCB8ICgxPDwxKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSwKLSAgMCB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDw0KSB8ICgxPDw1KSwKKyAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw1KSB8ICgxPDw2KSwKKyAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw3KSwKKyAgMCB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDw1KSB8ICgxPDw2KSwKICAgMCwKLSAgMCB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSwKKyAgMCB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSwKKyAgMCB8ICgxPDwxKSB8ICgxPDwyKSwKKyAgMCB8ICgxPDw3KSwKKyAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDw0KSwKICAgMCB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw2KSB8ICgxPDw3KSwKICAgMCB8ICgxPDwwKSB8ICgxPDwyKSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKQEAgLTY5MDksNDggKzY5MzUsMzYwIEBACiAgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCiAgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NiksCiAgIDAsCi0gIDAgfCAoMTw8MCkgfCAoMTw8MikgfCAoMTw8NiksCi0gIDAgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MikgfCAoMTw8NCksCisgIDAgfCAoMTw8MCkgfCAoMTw8NyksCiAgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NiksCi0gIDAgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NiksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8NCkgfCAoMTw8NSksCisgIDAgfCAoMTw8MCksCisgIDAsCisgIDAgfCAoMTw8MikgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSksCisgIDAgfCAoMTw8MiksCisgIDAgfCAoMTw8MikgfCAoMTw8NSksCisgIDAsCisgIDAgfCAoMTw8NSksCisgIDAgfCAoMTw8MyksCisgIDAsCisgIDAgfCAoMTw8MSksCisgIDAgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MiksCiAgIDAsCiAgIDAsCi0gIDAgfCAoMTw8MCkgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAgfCAoMTw8MCkgfCAoMTw8MiksCisgIDAsCisgIDAsCisgIDAgfCAoMTw8NyksCisgIDAgfCAoMTw8MCksCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCiAgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCiAgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCiAgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MyksCi0gIDAgfCAoMTw8MCksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MyksCi0gIDAsCi0gIDAgfCAoMTw8MyksCi0gIDAgfCAoMTw8MSksCi0gIDAgfCAoMTw8NyksCi0gIDAsCi0gIDAgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCksCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAgfCAoMTw8NiksCi0gIDAgfCAoMTw8MCksCi0gIDAsCiAgIDAsCiAgIDAgfCAoMTw8NSkgfCAoMTw8NiksCiAgIDAsCkBAIC02OTY3LDEwICs3MzA1LDE1IEBACiAgIDAsCiAgIDAsCiAgIDAsCisgIDAgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MyksCiAgIDAsCiAgIDAsCisgIDAgfCAoMTw8NCksCiAgIDAsCiAgIDAsCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCksCiAgIDAsCiAgIDAsCiAgIDAsCkBAIC02OTgwLDIwNyArNzMyMyw3IEBACiAgIDAsCiAgIDAsCiAgIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCisgIDAgfCAoMTw8MCksCiAgIDAsCiAgIDAsCiAgIDAsCkBAIC03MjUyLDEyICs3Mzk1LDM1IEBACiAgIDAsCiAgIDAsCiAgIDAgfCAoMTw8NikgfCAoMTw8NyksCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MiksCisgIDAsCisgIDAsCisgIDAsCisgIDAgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCiAgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCiAgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MiksCisgIDAsCisgIDAsCisgIDAsCisgIDAgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCiAgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MiksCiAgIDAsCiAgIDAsCi0gIDAgfCAoMTw8MSkgfCAoMTw8MiksCisgIDAsCisgIDAgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCisgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MiksCiAgIDAsCiAgIDAsCiAgIDAsCkBAIC03MjcyLDE0ICs3NDM4LDEwMiBAQAogICAwLAogICAwLAogICAwLAotICAwIHwgKDE8PDIpIHwgKDE8PDMpIHwgKDE8PDQpIHwgKDE8PDUpIHwgKDE8PDYpIHwgKDE8PDcpLAogICAwLAogICAwLAogICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwIHwgKDE8PDIpLAorICAwLAorICAwIHwgKDE8PDcpLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwIHwgKDE8PDcpLAogICAwIHwgKDE8PDApLAotICAwLAotICAwIHwgKDE8PDQpIHwgKDE8PDUpIHwgKDE8PDYpIHwgKDE8PDcpLAorICAwIHwgKDE8PDMpIHwgKDE8PDQpIHwgKDE8PDUpIHwgKDE8PDYpIHwgKDE8PDcpLAorICAwIHwgKDE8PDApIHwgKDE8PDEpIHwgKDE8PDIpIHwgKDE8PDMpIHwgKDE8PDQpIHwgKDE8PDUpIHwgKDE8PDYpIHwgKDE8PDcpLAogICAwIHwgKDE8PDApIHwgKDE8PDEpIHwgKDE8PDIpIHwgKDE8PDMpIHwgKDE8PDQpLAorICAwIHwgKDE8PDcpLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwIHwgKDE8PDEpIHwgKDE8PDIpIHwgKDE8PDYpLAorICAwIHwgKDE8PDUpIHwgKDE8PDcpLAorICAwIHwgKDE8PDEpIHwgKDE8PDIpIHwgKDE8PDQpIHwgKDE8PDUpLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAorICAwLAogICAwLAogICAwLAogICAwLApAQCAtNzI5NiwxMDAgKzc1NTAsMjUgQEAKICAgMCwKICAgMCwKICAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKLSAgMCwKKyAgMCB8ICgxPDwyKSwKICAgMCwKICAgMCwKICAgMCwKLSAgMCB8ICgxPDwyKSB8ICgxPDwzKSwKICAgMCwKICAgMCwKICAgMCwKICAgMCwKICAgMCwKICAgMCwKLSAgMCB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSwKICAgMCwKICAgMCwKICAgMCwKLSAgMCB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSwKICAgMCwKICAgMCwKICAgMCwKLSAgMCB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSwKICAgMCwKICAgMCwKICAgMCwKLSAgMCB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSwKICAgMCwKICAgMCwKICAgMCwKQEAgLTc0MTcsOCArNzU5Niw2IEBACiAgIDAsCiAgIDAsCiAgIDAgfCAoMTw8NiksCi0gIDAsCi0gIDAsCiAgIDAgfCAoMTw8MyksCiAgIDAsCiAgIDAsCkBAIC03NDQzLDExICs3NjIwLDYgQEAKICAgMCwKICAgMCwKICAgMCwKLSAgMCB8ICgxPDwzKSB8ICgxPDw0KSwKLSAgMCB8ICgxPDw3KSwKLSAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwyKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw2KSwKLSAgMCwKLSAgMCB8ICgxPDwxKSwKICAgMCwKICAgMCwKICAgMCwKQEAgLTc0NzMsMTczICs3NjQ1LDIyIEBACiAgIDAsCiAgIDAsCiAgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAsCisgIDAgfCAoMTw8NSkgfCAoMTw8NyksCiAgIDAgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NiksCi0gIDAgfCAoMTw8MikgfCAoMTw8NCkgfCAoMTw8NyksCi0gIDAgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCksCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAsCi0gIDAgfCAoMTw8MikgfCAoMTw8NCksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MyksCisgIDAgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCiAgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCiAgIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NikgfCAoMTw8NyksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8MykgfCAoMTw8NCkgfCAoMTw8NSkgfCAoMTw8NiksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikgfCAoMTw8NCkgfCAoMTw8NSksCi0gIDAgfCAoMTw8MCkgfCAoMTw8MSkgfCAoMTw8MikKKyAgMCB8ICgxPDwwKSB8ICgxPDwxKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KSB8ICgxPDw3KSwKKyAgMCB8ICgxPDwwKSB8ICgxPDwzKSB8ICgxPDw0KSB8ICgxPDw1KQogfTsKIAogcmV0dXJuIChPVGFibGVbaWQvOF0gJiAoMSA8PCAoaWQlOCkpKSAhPSAwOwpAQCAtNzY0OCwyMTQgKzc2NjksMjIzIEBACiAvLyBHbG9iYWwgaW50cmluc2ljIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIHR5cGUgdGFibGUuCiAjaWZkZWYgR0VUX0lOVFJJTlNJQ19HRU5FUkFUT1JfR0xPQkFMCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgSUlUX1RhYmxlW10gPSB7Ci0gIDB4MmUsIDB4MmUyZSwgKDFVPDwzMSkgfCAxNDI3LCAweDEwLCAweDFmMWYsIDB4MWYxZiwgMHgyZjJmLCAKLSAgMHgyZjJmLCAweDJlMmUwLCAoMVU8PDMxKSB8IDU0NjgsIDB4MzJmLCAweDJmMywgMHgyZjJmMmYsICgxVTw8MzEpIHwgNTQ1NywgKDFVPDwzMSkgfCA3ODIsIAotICAweDJlMCwgMHgyZTEsIDB4MTJlMSwgMHgyZSwgKDFVPDwzMSkgfCA3ODIsICgxVTw8MzEpIHwgNjkzLCAweDJlLCAweDJlMmUxLCAKLSAgMHgxNDJlMmUsIDB4MmUwLCAoMVU8PDMxKSB8IDc4NCwgMHgxZiwgMHgyMmUyZSwgKDFVPDwzMSkgfCAxNjksIDB4MmYyZiwgMHgxMWYxZiwgCi0gIDB4MWYxZiwgMHgxMWYxZiwgKDFVPDwzMSkgfCA1NTE1LCAoMVU8PDMxKSB8IDU1MTUsICgxVTw8MzEpIHwgNTQ2OCwgKDFVPDwzMSkgfCA1NTE1LCAweDAsIDB4MCwgCi0gIDB4NDJlLCAoMVU8PDMxKSB8IDU0NjUsICgxVTw8MzEpIHwgNTQ2NCwgMHgyZTQwLCAweDJlNTAsIDB4NDAsIDB4MmUwLCAweDJlMCwgCi0gIDB4MmUsIDB4MmU0LCAweDAsIDB4MmU0LCAweDAsIDB4MmYyZiwgMHgyZjJmLCAweDFmMWYxZiwgCi0gICgxVTw8MzEpIHwgNTUwMCwgKDFVPDwzMSkgfCA1NTAwLCAoMVU8PDMxKSB8IDU1MDAsICgxVTw8MzEpIHwgNTQ5OCwgKDFVPDwzMSkgfCA1NDk4LCAoMVU8PDMxKSB8IDU0OTYsICgxVTw8MzEpIHwgNTQ5OCwgKDFVPDwzMSkgfCA1NDk4LCAKLSAgKDFVPDwzMSkgfCA1NDk4LCAoMVU8PDMxKSB8IDU1MDAsICgxVTw8MzEpIHwgNTUwMCwgKDFVPDwzMSkgfCA1NTAwLCAoMVU8PDMxKSB8IDU1MDAsICgxVTw8MzEpIHwgNTQ5OCwgKDFVPDwzMSkgfCA1NTA3LCAoMVU8PDMxKSB8IDU1MDAsIAotICAoMVU8PDMxKSB8IDU1MDAsICgxVTw8MzEpIHwgNTUwMCwgKDFVPDwzMSkgfCA1NTIwLCAoMVU8PDMxKSB8IDM2ODEsICgxVTw8MzEpIHwgNTQ1MywgKDFVPDwzMSkgfCA1NTQ0LCAoMVU8PDMxKSB8IDU1MjQsICgxVTw8MzEpIHwgNTUzNiwgCi0gICgxVTw8MzEpIHwgNTUyOCwgKDFVPDwzMSkgfCA1NTUzLCAweGJmMWYsIDB4YmYxZiwgKDFVPDwzMSkgfCA1NDg5LCAweGJmMmYsIDB4YmYyZiwgKDFVPDwzMSkgfCA1NDg5LCAKLSAgMHhiZjFmLCAweGJmMWYsIDB4YmYxZiwgMHhiZjFmLCAweGJmMWYsIDB4YmYxZiwgMHhiZjFmLCAweDJmMmYsIAorICAweDJlLCAweDJlMmUsICgxVTw8MzEpIHwgMTY2NCwgMHgxMCwgMHgxZjFmLCAweDFmMWYsIDB4MmYyZiwgCisgIDB4MmYyZiwgMHgyZTJlMCwgKDFVPDwzMSkgfCA2MDMxLCAweDMyZiwgMHgyZjMsIDB4MmYyZjJmLCAoMVU8PDMxKSB8IDYwMjAsICgxVTw8MzEpIHwgNzY0LCAKKyAgMHgyZTAsIDB4MmUxLCAweDEyZTEsIDB4MmUsICgxVTw8MzEpIHwgNzY0LCAoMVU8PDMxKSB8IDY3NSwgMHgyZSwgMHgyZTJlMSwgCisgIDB4MTQyZTJlLCAweDJlMCwgKDFVPDwzMSkgfCA3NjYsIDB4MWYsIDB4MjJlMmUsICgxVTw8MzEpIHwgMTkzLCAweDJmMmYsIDB4MTFmMWYsIAorICAweDFmMWYsIDB4MTFmMWYsICgxVTw8MzEpIHwgNjA3OCwgKDFVPDwzMSkgfCA2MDc4LCAoMVU8PDMxKSB8IDYwMzEsICgxVTw8MzEpIHwgNjA3OCwgMHgwLCAweDAsIAorICAweDQyZSwgKDFVPDwzMSkgfCA2MDI4LCAoMVU8PDMxKSB8IDYwMjcsIDB4MmUyZTJlLCAweDJlNDAsIDB4MmU1MCwgMHg0MCwgMHgyZTAsIAorICAweDJlMCwgMHgyZSwgMHgyZTQsIDB4MCwgMHgyZTQsIDB4MCwgMHgyZjJmLCAweDJmMmYsIAorICAweDFmMWYxZiwgKDFVPDwzMSkgfCA2MDYzLCAoMVU8PDMxKSB8IDYwNjMsICgxVTw8MzEpIHwgNjA2MywgKDFVPDwzMSkgfCA2MDYzLCAoMVU8PDMxKSB8IDYwNjEsICgxVTw8MzEpIHwgNjA2MSwgKDFVPDwzMSkgfCA2MDYzLCAKKyAgKDFVPDwzMSkgfCA2MDU5LCAoMVU8PDMxKSB8IDYwNjEsICgxVTw8MzEpIHwgNjA2MSwgKDFVPDwzMSkgfCA2MDYxLCAoMVU8PDMxKSB8IDYwNjMsICgxVTw8MzEpIHwgNjA2MywgKDFVPDwzMSkgfCA2MDYzLCAoMVU8PDMxKSB8IDYwNjEsIAorICAoMVU8PDMxKSB8IDYwNjEsICgxVTw8MzEpIHwgNjA2MywgKDFVPDwzMSkgfCA2MDYxLCAoMVU8PDMxKSB8IDYwNzAsICgxVTw8MzEpIHwgNjA2MywgKDFVPDwzMSkgfCA2MDYzLCAoMVU8PDMxKSB8IDYwNjMsICgxVTw8MzEpIHwgNjA2MywgCisgICgxVTw8MzEpIHwgNjA2MywgKDFVPDwzMSkgfCA2MDgzLCAoMVU8PDMxKSB8IDQwMjgsICgxVTw8MzEpIHwgNjAxNiwgKDFVPDwzMSkgfCA2MTA3LCAoMVU8PDMxKSB8IDYwODcsICgxVTw8MzEpIHwgNjA5OSwgKDFVPDwzMSkgfCA2MDkxLCAKKyAgKDFVPDwzMSkgfCA2MTE2LCAweGJmMWYsIDB4YmYxZiwgKDFVPDwzMSkgfCA2MDUyLCAweGJmMmYsIDB4YmYyZiwgKDFVPDwzMSkgfCA2MDUyLCAweGJmMWYsIAorICAweGJmMWYsIDB4YmYxZiwgMHhiZjFmLCAweGJmMWYsIDB4YmYxZiwgMHhiZjFmLCAweDEsIDB4MmYyZiwgCiAgIDB4MmYyZiwgMHg0LCAweDJmMmYyZjJmLCAweDJmMmYyZjJmLCAweDQyZSwgMHgxZjFmMWYxZiwgMHgxZjFmMWYxZiwgMHgyZWUyZTJlLCAKLSAgMHgyZTJlZTAsIDB4MmVlMmUyZTAsIDB4MWYsICgxVTw8MzEpIHwgNTUyMSwgMHgyZTJlMmUwLCAweDQ0NTJlMCwgMHg1NDQ1MmUwLCAweDQ0NTUyZTAsIAotICAoMVU8PDMxKSB8IDQyODcsICgxVTw8MzEpIHwgNDI4OCwgMHg0ZjRmLCAweDRmNTAsIDB4NGY1MCwgMHgxZjJlMmUsIDB4MmUsICgxVTw8MzEpIHwgNTUyMSwgCi0gIDB4NDJlMmUyZSwgMHgyZjJmLCAweDJmMmYsIDB4MmYyZiwgMHg0MmUwLCAoMVU8PDMxKSB8IDY4LCAoMVU8PDMxKSB8IDg4OCwgKDFVPDwzMSkgfCA4OTgsIAotICAoMVU8PDMxKSB8IDkxMCwgKDFVPDwzMSkgfCA3NywgKDFVPDwzMSkgfCA4OCwgMHgyZjJmMmYsICgxVTw8MzEpIHwgMTYwLCAoMVU8PDMxKSB8IDQzNzcsICgxVTw8MzEpIHwgMTYwLCAoMVU8PDMxKSB8IDQzNzcsIAotICAweDE5ZjI0ZjAsIDB4NDlmMjRmMCwgMHgyZjJmMmYsIDB4MmYyZiwgMHgxMWNmMWYsIDB4NDAsIDB4MmYyZjJmLCAweDQyZjJmLCAKLSAgMHg0NDQyZTAsICgxVTw8MzEpIHwgMTQzNywgKDFVPDwzMSkgfCA1NDcxLCAweDUsIDB4NDJlLCAweDJmMmYsIDB4MmYyZiwgKDFVPDwzMSkgfCAxMzMsIAotICAweDJlNCwgMHgwLCAweDQyZTAsIDB4NDJlNCwgMHgyZjJmLCAoMVU8PDMxKSB8IDEzMywgMHgyZjJmLCAweGYwZiwgCi0gICgxVTw8MzEpIHwgMTMzLCAweDJlLCAweDJlZTJlMCwgMHgyZTAsIDB4MmUsIDB4NGY0ZiwgMHgyZSwgMHgwLCAKLSAgMHgyZjJmLCAoMVU8PDMxKSB8IDU0ODAsICgxVTw8MzEpIHwgNTQ3NSwgKDFVPDwzMSkgfCAxMzMsICgxVTw8MzEpIHwgMTMzLCAoMVU8PDMxKSB8IDEzMywgMHgyZTJlMCwgMHgyZTAsIAotICAweDJlMCwgMHg0MmUyZTJlMCwgKDFVPDwzMSkgfCAxNDIsIDB4NDJlMCwgMHg0MmUzMCwgMHgwLCAweDQ0NCwgMHg0NDQsIAotICAweDQ0NCwgMHg0NDQsIDB4NTQ0LCAweDQ0NCwgMHg0NDQsIDB4NTQ0LCAweDJjMmMyYywgMHgyYzJjMmMsIAotICAweDJjMmMsIDB4MmMyYywgMHg0YTQ0YTRhLCAweDQ0LCAweDRhNDRhNGEsIDB4NGE0NGE0YSwgMHg0YTRhNGE0YSwgMHg0YTRhNGEsIAotICAweDRhNGE0YTRhLCAweDRhNGE0YTRhLCAweDRhNGE0YSwgMHg0YTRhNGE0YSwgMHg0MCwgMHg0MCwgMHg1LCAweDQwLCAKLSAgMHg0MCwgKDFVPDwzMSkgfCA3NzAsIDB4NGY1LCAoMVU8PDMxKSB8IDc3MCwgMHg0ZjUsIDB4ZjBmLCAoMVU8PDMxKSB8IDk2NSwgMHgzZjNmM2YsIAotICAweDNmM2YsIDB4M2YzZjNmLCAweGFmYWYxZiwgMHhhZmFmMWYsIDB4YmYyZiwgMHhhZjFmLCAweGFmMWYsIDB4YWYxZiwgCi0gIDB4YWYxZiwgMHhhZjFmLCAweGFmMWYsIDB4YWYxZiwgMHhhZjFmLCAweGJmM2YsIDB4YWYxZiwgMHhhZjFmLCAKLSAgMHgyZjJmMmYsIDB4MmYyZjJmLCAweDNmM2YzZiwgMHhiZjJmLCAweDNmM2YzZiwgMHhiZjJmLCAweDJmMmYyZiwgMHgyZjJmMmYsIAotICAweDNmM2YzZiwgMHhiZjJmLCAweDNmM2YzZiwgMHhiZjJmLCAweDJmMmYyZiwgMHgyZjJmLCAweDJmMmYyZiwgMHgyZjJmLCAKLSAgMHgyZjJmLCAweDJmMmYsIDB4MmYyZjJmLCAoMVU8PDMxKSB8IDUzMzksICgxVTw8MzEpIHwgNTMyOSwgKDFVPDwzMSkgfCA1MzE3LCAoMVU8PDMxKSB8IDUzMzksICgxVTw8MzEpIHwgNTQxOCwgCi0gICgxVTw8MzEpIHwgNTMzOSwgKDFVPDwzMSkgfCA1MzI5LCAoMVU8PDMxKSB8IDU0MDEsICgxVTw8MzEpIHwgNTMyOSwgKDFVPDwzMSkgfCA1MzE3LCAoMVU8PDMxKSB8IDUzODAsICgxVTw8MzEpIHwgNTMxNywgMHgzZjNmM2YsIAotICAoMVU8PDMxKSB8IDk3NywgMHg1NTJjLCAoMVU8PDMxKSB8IDk2NSwgMHgzZjNmLCAoMVU8PDMxKSB8IDk4NCwgKDFVPDwzMSkgfCA5NjUsIDB4M2YzZjNmLCAweGJmM2YsIAotICAweGJmMWYsIDB4YmYxZiwgMHg5ZjFmLCAweDlmMWYsIDB4OWYxZiwgKDFVPDwzMSkgfCA1MjY0LCAweDNmM2YzZiwgKDFVPDwzMSkgfCA5NzIsIAotICAweDNmM2YzZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAweGJmMWYsIDB4M2YzZjNmLCAweDNmM2YzZiwgMHhiZjFmLCAoMVU8PDMxKSB8IDk3NywgCi0gIDB4MWYxZiwgMHgxZjFmMWYsIDB4MWYxZjFmLCAoMVU8PDMxKSB8IDk3NywgMHg0NDUsIDB4MWYxZiwgMHgxZjFmMWYsIDB4MWYxZjFmLCAKLSAgKDFVPDwzMSkgfCA5ODQsICgxVTw8MzEpIHwgOTg0LCAweDFmMWYxZiwgMHgxZjFmMWYsICgxVTw8MzEpIHwgOTg0LCAoMVU8PDMxKSB8IDk4NCwgMHgxZjFmMWYsICgxVTw8MzEpIHwgMTczLCAKLSAgKDFVPDwzMSkgfCAxNzMsIDB4M2YzZjNmLCAweDFmMWYxZiwgMHgxZjFmMWYsICgxVTw8MzEpIHwgMTU3NCwgMHhjZjNmM2YwLCAoMVU8PDMxKSB8IDUyOTUsICgxVTw8MzEpIHwgNTMwNSwgCi0gIDB4Y2YzZjNmMCwgKDFVPDwzMSkgfCA1MzQ3LCAoMVU8PDMxKSB8IDUyOTUsICgxVTw8MzEpIHwgNTM1NiwgKDFVPDwzMSkgfCA1MzA1LCAoMVU8PDMxKSB8IDUzNjcsICgxVTw8MzEpIHwgOTY1LCAweDFmMWYxZiwgCi0gIDB4M2YyYzNmLCAweDNmMmMyYzNmLCAoMVU8PDMxKSB8IDkzOCwgKDFVPDwzMSkgfCA5MjMsIDB4M2YyYzNmM2YsICgxVTw8MzEpIHwgOTQ5LCAoMVU8PDMxKSB8IDkzNiwgKDFVPDwzMSkgfCA5MjEsIAotICAweDNmM2YzZiwgMHhiZjNmLCAweGJmMWYsIDB4YmYxZiwgKDFVPDwzMSkgfCA1MjY0LCAweDNmM2YzZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAKLSAgMHgzZjNmM2YsIDB4YmYxZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAweGJmMWYsICgxVTw8MzEpIHwgOTc3LCAweDFmMWYxZiwgMHgxZjFmMWYsIAotICAoMVU8PDMxKSB8IDk4NCwgMHgxZjFmMWYsICgxVTw8MzEpIHwgOTg0LCAweDFmMWYxZiwgKDFVPDwzMSkgfCAxNzMsIDB4M2YzZiwgMHgzZjNmM2YsIDB4MWYxZjFmLCAKLSAgMHgzZjNmLCAweDFmMWYxZiwgKDFVPDwzMSkgfCAxNTc0LCAweDFmMWYxZiwgMHg1M2Y1YmYzZiwgMHg0YWYxZiwgMHg0YWYxZiwgMHg3YTNhLCAKLSAgMHg0OWYyZiwgMHg0OWYyZiwgMHgzYTdhLCAweDQzZjNmM2YsIDB4NDNmM2YzZiwgMHgxZjFmMWYsIDB4MmYyZjJmLCAweDg3LCAKLSAgMHgyZTU1NCwgMHg0ZjU0LCAweDJlNTU0LCAweDRmNTQsIDB4MWYxZjFmLCAweDQ0NDQsIDB4NDQ0NCwgKDFVPDwzMSkgfCA5OCwgCi0gICgxVTw8MzEpIHwgOTgsIDB4NTUsIDB4MTQ0NGE0NCwgMHgxNDQ0YTQ0LCAweDE0NDRhNDQ0LCAweDE0NDRhNDQsIDB4MTQ0NGE0NCwgMHgxNDQ0YTQ0LCAKLSAgMHgxNDQ0YTQ0LCAweDE0NDRhNDQsIDB4MTQ0NGE0NCwgMHgxNDQ0YTQ0LCAweDE0NDRhNDQsIDB4MTE0NDRhMmYsIDB4MTE0NDRhMmYsICgxVTw8MzEpIHwgMzgsIAotICAoMVU8PDMxKSB8IDM4LCAweDAsIDB4MCwgMHgwLCAweDQyZjEsIDB4MmYyZiwgMHg3Nzc3LCAweDc3NzcsIAotICAweDc3NzcsIDB4Nzc3NywgMHg0NDM5LCAweDQ0MzksIDB4NDQ3NCwgMHg3NzM5LCAweDc3MzksIDB4Nzc2OSwgCi0gIDB4NSwgKDFVPDwzMSkgfCAzNzYsIDB4MmYyZjJmMmYsICgxVTw8MzEpIHwgNTgsICgxVTw8MzEpIHwgNDgsIDB4NDQ0LCAoMVU8PDMxKSB8IDExOSwgKDFVPDwzMSkgfCAxMTksIAotICAoMVU8PDMxKSB8IDExOSwgMHg0NDQsIDB4NDQ0LCAoMVU8PDMxKSB8IDQ0MjEsIDB4NTU1LCAweDUwLCAoMVU8PDMxKSB8IDAsICgxVTw8MzEpIHwgMTQsIAorICAweDJlMmVlMCwgMHgyZWUyZTJlMCwgMHgxZiwgMHg0MmUyZTAsICgxVTw8MzEpIHwgNjA4NCwgMHgyZTJlMmUwLCAweDQ0NTJlMCwgMHg1NDQ1MmUwLCAKKyAgMHg0NDU1MmUwLCAoMVU8PDMxKSB8IDQ4MzksICgxVTw8MzEpIHwgNDg0MCwgMHhmMSwgMHg0ZjRmLCAweDRmNTAsIDB4NGY1MCwgMHgxZjJlMmUsIAorICAweDJlLCAoMVU8PDMxKSB8IDYwODQsIDB4NDJlMmUyZSwgMHgyZjJmLCAweDJmMmYsIDB4MmYyZiwgMHg0MmUwLCAoMVU8PDMxKSB8IDkwLCAKKyAgKDFVPDwzMSkgfCA4NDcsICgxVTw8MzEpIHwgODU3LCAoMVU8PDMxKSB8IDg2OSwgKDFVPDwzMSkgfCA5OSwgKDFVPDwzMSkgfCAxMTAsIDB4MmYyZjJmLCAweDJmMmYyZiwgKDFVPDwzMSkgfCAxODQsIAorICAoMVU8PDMxKSB8IDQ5MjksICgxVTw8MzEpIHwgMTg0LCAoMVU8PDMxKSB8IDQ5MjksIDB4MTlmMjRmMCwgMHg0OWYyNGYwLCAweDJmMmYyZiwgMHgyZjJmMmYsIDB4MmYyZiwgCisgIDB4MmVlMmVlMCwgMHgyZWUyZWUwLCAweDJlZTJlZTAsIDB4MmVlMmVlMCwgMHgyZTJlLCAweDJlMCwgMHgyZSwgMHgyZTJlLCAKKyAgKDFVPDwzMSkgfCA2MDg0LCAweDJlZTJlZTAsIDB4MmVlMCwgMHgyZTJlZTJlLCAweDJlZTJlLCAweDJlZTJlLCAweDJlZTJlZTAsIDB4MmUwLCAKKyAgMHgyZTJlLCAweDJlMmUsIDB4MmUyZSwgMHgyZTJlLCAweDJlMmUsIDB4MmUyZSwgMHgyZTJlLCAweDJlMmVlMCwgCisgIDB4MmUyZWUyZSwgMHgyZTQsIDB4MmU0LCAweDJlMmUsIDB4MmUyZSwgMHgyZTJlLCAweDExMWNmMWYsIDB4NDAsIAorICAweDJmMmYyZiwgMHg0MmYyZiwgMHg0NDQyZTAsICgxVTw8MzEpIHwgMTY3NCwgKDFVPDwzMSkgfCA2MDM0LCAweDUsIDB4NDJlLCAweDJmMmYsIAorICAweDJmMmYsIDB4MWYxZjFmLCAoMVU8PDMxKSB8IDE1NSwgMHgyZTQsIDB4MCwgMHg0MmUwLCAweDQyZTQsIDB4MmYyZiwgCisgIDB4NDFmMWYxZiwgKDFVPDwzMSkgfCAxNTUsIDB4MmUsIDB4MmYyZiwgMHhmMGYsIDB4MWYxZjFmLCAoMVU8PDMxKSB8IDE1NSwgMHgyZSwgCisgIDB4MmVlMmUwLCAweDJlMCwgMHgyZSwgMHg0ZjRmLCAweDJlLCAweDAsIDB4MmYyZiwgKDFVPDwzMSkgfCA2MDQzLCAKKyAgKDFVPDwzMSkgfCA2MDM4LCAweDFmMWYxZiwgKDFVPDwzMSkgfCAxNTUsIDB4NDFmMWYxZiwgKDFVPDwzMSkgfCAxNTUsIDB4MWYxZjFmLCAoMVU8PDMxKSB8IDE1NSwgMHgyZTJlMCwgCisgIDB4MmUwLCAweDJlMCwgMHg0MmUyZTJlMCwgKDFVPDwzMSkgfCAxNjYsIDB4NDJlMCwgMHg0MmUzMCwgMHgwLCAweDQ0NCwgCisgIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NTQ0LCAweDQ0NCwgMHg0NDQsIDB4NTQ0LCAweDJjMmMyYywgCisgIDB4MmMyYzJjLCAweDJjMmMsIDB4MmMyYywgMHg0YTQ0YTRhLCAweDQ0LCAweDRhNDRhNGEsIDB4NGE0NGE0YSwgMHg0YTRhNGE0YSwgCisgIDB4NGE0YTRhLCAweDRhNGE0YTRhLCAweDRhNGE0YTRhLCAweDRhNGE0YSwgMHg0YTRhNGE0YSwgMHg0MCwgMHg0MCwgMHg1LCAKKyAgMHg0MCwgMHg0MCwgKDFVPDwzMSkgfCA3NTIsIDB4NGY1LCAoMVU8PDMxKSB8IDc1MiwgMHg0ZjUsIDB4ZjBmLCAoMVU8PDMxKSB8IDkyNCwgCisgIDB4M2YzZjNmLCAweDNmM2YsIDB4M2YzZjNmLCAweGFmYWYxZiwgMHhhZmFmMWYsIDB4YmYyZiwgMHhhZjFmLCAweGFmMWYsIAorICAweGFmMWYsIDB4YWYxZiwgMHhhZjFmLCAweGFmMWYsIDB4YWYxZiwgMHhhZjFmLCAweGJmM2YsIDB4YWYxZiwgCisgIDB4YWYxZiwgMHgyZjJmMmYsIDB4MmYyZjJmLCAweDNmM2YzZiwgMHhiZjJmLCAweDNmM2YzZiwgMHhiZjJmLCAweDJmMmYyZiwgCisgIDB4MmYyZjJmLCAweDNmM2YzZiwgMHhiZjJmLCAweDNmM2YzZiwgMHhiZjJmLCAoMVU8PDMxKSB8IDU4MjcsICgxVTw8MzEpIHwgNTgyNywgKDFVPDwzMSkgfCA1ODI3LCAKKyAgKDFVPDwzMSkgfCA1ODI3LCAweDJmMmYyZiwgMHgyZjJmLCAweDJmMmYyZiwgMHgyZjJmLCAweDJmMmYsIDB4MmYyZiwgMHgyZjJmMmYsIAorICAoMVU8PDMxKSB8IDU5MDIsICgxVTw8MzEpIHwgNTg5MiwgKDFVPDwzMSkgfCA1ODgwLCAoMVU8PDMxKSB8IDU5MDIsICgxVTw8MzEpIHwgNTk4MSwgKDFVPDwzMSkgfCA1OTAyLCAoMVU8PDMxKSB8IDU4OTIsICgxVTw8MzEpIHwgNTk2NCwgCisgICgxVTw8MzEpIHwgNTg5MiwgKDFVPDwzMSkgfCA1ODgwLCAoMVU8PDMxKSB8IDU5NDMsICgxVTw8MzEpIHwgNTg4MCwgMHgzZjNmM2YsICgxVTw8MzEpIHwgOTM2LCAweDU1MmMsICgxVTw8MzEpIHwgOTI0LCAKKyAgMHgzZjNmLCAoMVU8PDMxKSB8IDEyMzEsICgxVTw8MzEpIHwgOTI0LCAweDNmM2YzZiwgMHhiZjNmLCAweGJmMWYsIDB4YmYxZiwgMHg5ZjFmLCAKKyAgMHg5ZjFmLCAweDlmMWYsICgxVTw8MzEpIHwgNTgyNywgMHgzZjNmM2YsICgxVTw8MzEpIHwgOTMxLCAweDNmM2YzZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAKKyAgMHhiZjFmLCAweDNmM2YzZiwgMHgzZjNmM2YsIDB4YmYxZiwgKDFVPDwzMSkgfCA5MzYsIDB4MWYxZiwgMHgxZjFmMWYsIDB4MWYxZjFmLCAKKyAgKDFVPDwzMSkgfCA5MzYsIDB4NDQ1LCAweDFmMWYsIDB4MWYxZjFmLCAweDFmMWYxZiwgKDFVPDwzMSkgfCAxMjMxLCAoMVU8PDMxKSB8IDEyMzEsIDB4MWYxZjFmLCAKKyAgMHgxZjFmMWYsICgxVTw8MzEpIHwgMTIzMSwgKDFVPDwzMSkgfCAxMjMxLCAweDFmMWYxZiwgKDFVPDwzMSkgfCAxOTcsICgxVTw8MzEpIHwgMTk3LCAweDNmM2YzZiwgMHgxZjFmMWYsIAorICAweDFmMWYxZiwgKDFVPDwzMSkgfCAxODAxLCAweGNmM2YzZjAsICgxVTw8MzEpIHwgNTg1OCwgKDFVPDwzMSkgfCA1ODY4LCAweGNmM2YzZjAsICgxVTw8MzEpIHwgNTkxMCwgKDFVPDwzMSkgfCA1ODU4LCAKKyAgKDFVPDwzMSkgfCA1OTE5LCAoMVU8PDMxKSB8IDU4NjgsICgxVTw8MzEpIHwgNTkzMCwgKDFVPDwzMSkgfCA5MjQsIDB4MWYxZjFmLCAweDNmMmMzZiwgMHgzZjJjMmMzZiwgKDFVPDwzMSkgfCA4OTcsIAorICAoMVU8PDMxKSB8IDg4MiwgMHgzZjJjM2YzZiwgKDFVPDwzMSkgfCA5MDgsICgxVTw8MzEpIHwgODk1LCAoMVU8PDMxKSB8IDg4MCwgMHgzZjNmM2YsIDB4YmYzZiwgMHhiZjFmLCAKKyAgMHhiZjFmLCAoMVU8PDMxKSB8IDU4MjcsIDB4M2YzZjNmLCAweDNmM2YzZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAweGJmMWYsIDB4M2YzZjNmLCAKKyAgMHgzZjNmM2YsIDB4YmYxZiwgKDFVPDwzMSkgfCA5MzYsIDB4MWYxZjFmLCAweDFmMWYxZiwgKDFVPDwzMSkgfCAxMjMxLCAweDFmMWYxZiwgKDFVPDwzMSkgfCAxMjMxLCAKKyAgMHgxZjFmMWYsICgxVTw8MzEpIHwgMTk3LCAweDNmM2YsIDB4M2YzZjNmLCAweDFmMWYxZiwgMHgzZjNmLCAweDFmMWYxZiwgKDFVPDwzMSkgfCAxODAxLCAKKyAgMHgxZjFmMWYsIDB4NTNmNWJmM2YsIDB4NGFmMWYsIDB4NGFmMWYsIDB4N2EzYSwgMHg0OWYyZiwgMHg0OWYyZiwgMHgzYTdhLCAKKyAgMHg0M2YzZjNmLCAweDQzZjNmM2YsIDB4MWYxZjFmLCAweDJmMmYyZiwgMHg4NywgMHg1NDUsIDB4MmU1NTQsIDB4NGY1NCwgCisgIDB4MmU1NTQsIDB4NGY1NCwgMHgxZjFmMWYsIDB4NDQ0NCwgMHg0NDQ0LCAoMVU8PDMxKSB8IDEyMCwgKDFVPDwzMSkgfCAxMjAsIDB4MTQ0NGE0NCwgCisgIDB4MTQ0NGE0NCwgMHgxNDQ0YTQ0NCwgMHgxNDQ0YTQ0LCAweDE0NDRhNDQsIDB4MTQ0NGE0NCwgMHgxNDQ0YTQ0LCAweDE0NDRhNDQsIDB4MTQ0NGE0NCwgCisgIDB4MTQ0NGE0NCwgMHgxNDQ0YTQ0LCAweDExNDQ0YTJmLCAweDExNDQ0YTJmLCAoMVU8PDMxKSB8IDUwLCAoMVU8PDMxKSB8IDUwLCAweDAsIDB4MCwgCisgIDB4MCwgMHg0MmYxLCAweDJmMmYsIDB4Nzc3NywgMHg3Nzc3LCAweDc3NzcsIDB4Nzc3NywgMHg0NDM5LCAKKyAgMHg0NDM5LCAweDQ0NzQsIDB4NzczOSwgMHg3NzM5LCAweDc3NjksIDB4NSwgKDFVPDwzMSkgfCAzODgsIDB4MmYyZjJmMmYsIAorICAoMVU8PDMxKSB8IDcwLCAoMVU8PDMxKSB8IDYwLCAweDE0ZjQsIDB4NDQ0LCAweDE0ZjQsICgxVTw8MzEpIHwgMTQxLCAoMVU8PDMxKSB8IDE0MSwgKDFVPDwzMSkgfCAxNDEsIAorICAoMVU8PDMxKSB8IDI0LCAoMVU8PDMxKSB8IDI0LCAweDQ0NCwgMHg0NDQsICgxVTw8MzEpIHwgNDk2MCwgMHg1MCwgKDFVPDwzMSkgfCAwLCAoMVU8PDMxKSB8IDE0LCAKICAgMHg0MmYyZjUsIDB4Nzc3LCAweDE3Njk2OTcsIDB4MmYyZjJmMmYsIDB4MmYyZjJmMmYsIDB4Nzc3LCAweDJmMmYsIDB4YWYxZiwgCi0gIDB4MmYyZiwgMHg0LCAweDQxZjFmNSwgKDFVPDwzMSkgfCAxMjgsIDB4NTE1LCAoMVU8PDMxKSB8IDMyMTYsICgxVTw8MzEpIHwgMzI0MCwgKDFVPDwzMSkgfCAzMjQwLCAKLSAgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMzMDAsICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzIxNiwgKDFVPDwzMSkgfCAzMjQwLCAoMVU8PDMxKSB8IDMyNDAsIAotICAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzMwMCwgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMjE0LCAoMVU8PDMxKSB8IDMyMzgsICgxVTw8MzEpIHwgMzIzOCwgCi0gICgxVTw8MzEpIHwgMzI2NiwgKDFVPDwzMSkgfCAzMjk4LCAoMVU8PDMxKSB8IDMyNjYsICgxVTw8MzEpIHwgMzI2NiwgKDFVPDwzMSkgfCAzMjY2LCAoMVU8PDMxKSB8IDMyMTYsICgxVTw8MzEpIHwgMzI0MCwgKDFVPDwzMSkgfCAzMjQwLCAKLSAgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMzMDAsICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzIxNiwgKDFVPDwzMSkgfCAzMjQwLCAoMVU8PDMxKSB8IDMyNDAsIAotICAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzMwMCwgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMjE2LCAoMVU8PDMxKSB8IDMyNDAsICgxVTw8MzEpIHwgMzI0MCwgCi0gICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMzAwLCAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMyMTYsICgxVTw8MzEpIHwgMzI0MCwgKDFVPDwzMSkgfCAzMjQwLCAKLSAgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMzMDAsICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzIxNiwgKDFVPDwzMSkgfCAzMjQwLCAoMVU8PDMxKSB8IDMyNDAsIAotICAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzMwMCwgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMjE2LCAoMVU8PDMxKSB8IDMyNDAsICgxVTw8MzEpIHwgMzI0MCwgCi0gICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMzAwLCAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMyMTYsICgxVTw8MzEpIHwgMzI0MCwgKDFVPDwzMSkgfCAzMjQwLCAKLSAgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMzMDAsICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzIxNiwgKDFVPDwzMSkgfCAzMjQwLCAoMVU8PDMxKSB8IDMyNDAsIAotICAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzMwMCwgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMjE2LCAoMVU8PDMxKSB8IDMyNDAsICgxVTw8MzEpIHwgMzI0MCwgCi0gICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMzAwLCAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMyMTYsICgxVTw8MzEpIHwgMzI0MCwgKDFVPDwzMSkgfCAzMjQwLCAKLSAgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMzMDAsICgxVTw8MzEpIHwgMzI2OCwgKDFVPDwzMSkgfCAzMjY4LCAoMVU8PDMxKSB8IDMyNjgsICgxVTw8MzEpIHwgMTYzNiwgKDFVPDwzMSkgfCAxNzAwLCAoMVU8PDMxKSB8IDIwMjUsIAotICAoMVU8PDMxKSB8IDIyNzcsICgxVTw8MzEpIHwgMjI3NywgKDFVPDwzMSkgfCAyNjczLCAoMVU8PDMxKSB8IDI2NzMsICgxVTw8MzEpIHwgMjI5NiwgKDFVPDwzMSkgfCAyNjk0LCAoMVU8PDMxKSB8IDI2OTQsICgxVTw8MzEpIHwgMjI3NywgCi0gICgxVTw8MzEpIHwgMjA0MiwgKDFVPDwzMSkgfCAyMjk2LCAoMVU8PDMxKSB8IDIyOTYsICgxVTw8MzEpIHwgMTY2NywgKDFVPDwzMSkgfCAxNzM1LCAoMVU8PDMxKSB8IDE5ODgsICgxVTw8MzEpIHwgMjIzNiwgKDFVPDwzMSkgfCAyMjM2LCAKLSAgKDFVPDwzMSkgfCAyNjI4LCAoMVU8PDMxKSB8IDI2MjgsICgxVTw8MzEpIHwgMjI1NiwgKDFVPDwzMSkgfCAyNjUwLCAoMVU8PDMxKSB8IDI2NTAsICgxVTw8MzEpIHwgMjIzNiwgKDFVPDwzMSkgfCAyMDA2LCAoMVU8PDMxKSB8IDIyNTYsIAotICAoMVU8PDMxKSB8IDIyNTYsICgxVTw8MzEpIHwgMTczNSwgKDFVPDwzMSkgfCAxODExLCAoMVU8PDMxKSB8IDE4MTEsICgxVTw8MzEpIHwgMTc1MywgKDFVPDwzMSkgfCAxODMxLCAoMVU8PDMxKSB8IDE4MzEsICgxVTw8MzEpIHwgMTczNSwgCi0gICgxVTw8MzEpIHwgMTczNSwgKDFVPDwzMSkgfCAxODExLCAoMVU8PDMxKSB8IDE4MTEsICgxVTw8MzEpIHwgMTc1MywgKDFVPDwzMSkgfCAxODMxLCAoMVU8PDMxKSB8IDE4MzEsICgxVTw8MzEpIHwgMTY2NywgKDFVPDwzMSkgfCAxNzM1LCAKLSAgKDFVPDwzMSkgfCAxNzM1LCAoMVU8PDMxKSB8IDE2ODMsICgxVTw8MzEpIHwgMTc1MywgKDFVPDwzMSkgfCAxNzUzLCAoMVU8PDMxKSB8IDE2ODMsICgxVTw8MzEpIHwgMTc1MywgKDFVPDwzMSkgfCAxNzUzLCAoMVU8PDMxKSB8IDE3MDAsIAotICAoMVU8PDMxKSB8IDE3NzIsICgxVTw8MzEpIHwgMTc3MiwgKDFVPDwzMSkgfCAxNzE3LCAoMVU8PDMxKSB8IDE3OTEsICgxVTw8MzEpIHwgMTc5MSwgKDFVPDwzMSkgfCAxNzAwLCAoMVU8PDMxKSB8IDE3MDAsICgxVTw8MzEpIHwgMTc3MiwgCi0gICgxVTw8MzEpIHwgMTc3MiwgKDFVPDwzMSkgfCAxNzE3LCAoMVU8PDMxKSB8IDE3OTEsICgxVTw8MzEpIHwgMTc5MSwgKDFVPDwzMSkgfCAxNjM2LCAoMVU8PDMxKSB8IDE3MDAsICgxVTw8MzEpIHwgMTcwMCwgKDFVPDwzMSkgfCAxNjUxLCAKLSAgKDFVPDwzMSkgfCAxNzE3LCAoMVU8PDMxKSB8IDE3MTcsICgxVTw8MzEpIHwgMTY1MSwgKDFVPDwzMSkgfCAxNzE3LCAoMVU8PDMxKSB8IDE3MTcsICgxVTw8MzEpIHwgMTU4MCwgKDFVPDwzMSkgfCAxNjM2LCAoMVU8PDMxKSB8IDE2MzYsIAotICAoMVU8PDMxKSB8IDE3MDAsICgxVTw8MzEpIHwgMTcwMCwgKDFVPDwzMSkgfCAxNzAwLCAoMVU8PDMxKSB8IDMyMjgsICgxVTw8MzEpIHwgMzIyOCwgKDFVPDwzMSkgfCAzMjI4LCAoMVU8PDMxKSB8IDMyMjgsICgxVTw8MzEpIHwgMzIyOCwgCi0gICgxVTw8MzEpIHwgMzIyOCwgKDFVPDwzMSkgfCAzMjI4LCAoMVU8PDMxKSB8IDMyMjgsICgxVTw8MzEpIHwgMzIyOCwgKDFVPDwzMSkgfCAzMjU0LCAoMVU8PDMxKSB8IDMyNTQsICgxVTw8MzEpIHwgMzI4NCwgKDFVPDwzMSkgfCAzMzE4LCAKLSAgKDFVPDwzMSkgfCAzMjg0LCAoMVU8PDMxKSB8IDMyODQsICgxVTw8MzEpIHwgMzI4NCwgKDFVPDwzMSkgfCAzMjU0LCAoMVU8PDMxKSB8IDMyODQsICgxVTw8MzEpIHwgMzI4NCwgKDFVPDwzMSkgfCAzMzE4LCAoMVU8PDMxKSB8IDMzMTgsIAotICAoMVU8PDMxKSB8IDMzMTgsICgxVTw8MzEpIHwgMTU4MCwgKDFVPDwzMSkgfCAxNjM2LCAoMVU8PDMxKSB8IDE2MzYsICgxVTw8MzEpIHwgMTcwMCwgKDFVPDwzMSkgfCAxNzAwLCAoMVU8PDMxKSB8IDE4ODUsICgxVTw8MzEpIHwgMjAyNSwgCi0gICgxVTw8MzEpIHwgMjAyNSwgKDFVPDwzMSkgfCAyMjc3LCAoMVU8PDMxKSB8IDIyNzcsICgxVTw8MzEpIHwgMjAyNSwgKDFVPDwzMSkgfCAyMjc3LCAoMVU8PDMxKSB8IDIyNzcsICgxVTw8MzEpIHwgMjY3MywgKDFVPDwzMSkgfCAyNjczLCAKLSAgKDFVPDwzMSkgfCAyNjczLCAoMVU8PDMxKSB8IDIwNDIsICgxVTw8MzEpIHwgMjI5NiwgKDFVPDwzMSkgfCAyMjk2LCAoMVU8PDMxKSB8IDI2OTQsICgxVTw8MzEpIHwgMjY5NCwgKDFVPDwzMSkgfCAyNjk0LCAoMVU8PDMxKSB8IDIyNzcsIAotICAoMVU8PDMxKSB8IDE5MDAsICgxVTw8MzEpIHwgMjA0MiwgKDFVPDwzMSkgfCAyMDQyLCAoMVU8PDMxKSB8IDIyOTYsICgxVTw8MzEpIHwgMjI5NiwgKDFVPDwzMSkgfCAyMjk2LCAoMVU8PDMxKSB8IDE2MDcsICgxVTw8MzEpIHwgMTY2NywgCi0gICgxVTw8MzEpIHwgMTY2NywgKDFVPDwzMSkgfCAxNzM1LCAoMVU8PDMxKSB8IDE3MzUsICgxVTw8MzEpIHwgMTg1MiwgKDFVPDwzMSkgfCAxOTg4LCAoMVU8PDMxKSB8IDE5ODgsICgxVTw8MzEpIHwgMjIzNiwgKDFVPDwzMSkgfCAyMjM2LCAKLSAgKDFVPDwzMSkgfCAxOTg4LCAoMVU8PDMxKSB8IDIyMzYsICgxVTw8MzEpIHwgMjIzNiwgKDFVPDwzMSkgfCAyNjI4LCAoMVU8PDMxKSB8IDI2MjgsICgxVTw8MzEpIHwgMjYyOCwgKDFVPDwzMSkgfCAyMDA2LCAoMVU8PDMxKSB8IDIyNTYsIAotICAoMVU8PDMxKSB8IDIyNTYsICgxVTw8MzEpIHwgMjY1MCwgKDFVPDwzMSkgfCAyNjUwLCAoMVU8PDMxKSB8IDI2NTAsICgxVTw8MzEpIHwgMjIzNiwgKDFVPDwzMSkgfCAxODY4LCAoMVU8PDMxKSB8IDIwMDYsICgxVTw8MzEpIHwgMjAwNiwgCi0gICgxVTw8MzEpIHwgMjI1NiwgKDFVPDwzMSkgfCAyMjU2LCAoMVU8PDMxKSB8IDIyNTYsICgxVTw8MzEpIHwgMTk1MSwgKDFVPDwzMSkgfCAyMDk5LCAoMVU8PDMxKSB8IDIxODcsICgxVTw8MzEpIHwgMjQ1NSwgKDFVPDwzMSkgfCAyNTY3LCAKLSAgKDFVPDwzMSkgfCAyMDk5LCAoMVU8PDMxKSB8IDIzNTksICgxVTw8MzEpIHwgMjQ1NSwgKDFVPDwzMSkgfCAyNzcxLCAoMVU8PDMxKSB8IDI4OTEsICgxVTw8MzEpIHwgMjc3MSwgKDFVPDwzMSkgfCAyMTE5LCAoMVU8PDMxKSB8IDIzODEsIAotICAoMVU8PDMxKSB8IDI0ODEsICgxVTw8MzEpIHwgMjc5OSwgKDFVPDwzMSkgfCAyOTIzLCAoMVU8PDMxKSB8IDI3OTksICgxVTw8MzEpIHwgMjQ1NSwgKDFVPDwzMSkgfCAxOTY5LCAoMVU8PDMxKSB8IDIxMTksICgxVTw8MzEpIHwgMjIxMSwgCi0gICgxVTw8MzEpIHwgMjQ4MSwgKDFVPDwzMSkgfCAyNTk3LCAoMVU8PDMxKSB8IDI0ODEsICgxVTw8MzEpIHwgMTY2NywgKDFVPDwzMSkgfCAxNzM1LCAoMVU8PDMxKSB8IDE3MzUsICgxVTw8MzEpIHwgMTgxMSwgKDFVPDwzMSkgfCAxODExLCAKLSAgKDFVPDwzMSkgfCAxODExLCAoMVU8PDMxKSB8IDE2ODMsICgxVTw8MzEpIHwgMTc1MywgKDFVPDwzMSkgfCAxNzUzLCAoMVU8PDMxKSB8IDE4MzEsICgxVTw8MzEpIHwgMTgzMSwgKDFVPDwzMSkgfCAxODMxLCAoMVU8PDMxKSB8IDE3MzUsIAotICAoMVU8PDMxKSB8IDE5NTEsICgxVTw8MzEpIHwgMjA5OSwgKDFVPDwzMSkgfCAyMTg3LCAoMVU8PDMxKSB8IDI0NTUsICgxVTw8MzEpIHwgMjU2NywgKDFVPDwzMSkgfCAyMDk5LCAoMVU8PDMxKSB8IDIzNTksICgxVTw8MzEpIHwgMjQ1NSwgCi0gICgxVTw8MzEpIHwgMjc3MSwgKDFVPDwzMSkgfCAyODkxLCAoMVU8PDMxKSB8IDI3NzEsICgxVTw8MzEpIHwgMjExOSwgKDFVPDwzMSkgfCAyMzgxLCAoMVU8PDMxKSB8IDI0ODEsICgxVTw8MzEpIHwgMjc5OSwgKDFVPDwzMSkgfCAyOTIzLCAKLSAgKDFVPDwzMSkgfCAyNzk5LCAoMVU8PDMxKSB8IDI0NTUsICgxVTw8MzEpIHwgMTk2OSwgKDFVPDwzMSkgfCAyMTE5LCAoMVU8PDMxKSB8IDIyMTEsICgxVTw8MzEpIHwgMjQ4MSwgKDFVPDwzMSkgfCAyNTk3LCAoMVU8PDMxKSB8IDI0ODEsIAotICAoMVU8PDMxKSB8IDE2NjcsICgxVTw8MzEpIHwgMTczNSwgKDFVPDwzMSkgfCAxNzM1LCAoMVU8PDMxKSB8IDE4MTEsICgxVTw8MzEpIHwgMTgxMSwgKDFVPDwzMSkgfCAxODExLCAoMVU8PDMxKSB8IDE2ODMsICgxVTw8MzEpIHwgMTc1MywgCi0gICgxVTw8MzEpIHwgMTc1MywgKDFVPDwzMSkgfCAxODMxLCAoMVU8PDMxKSB8IDE4MzEsICgxVTw8MzEpIHwgMTgzMSwgKDFVPDwzMSkgfCAxNjA3LCAoMVU8PDMxKSB8IDE2NjcsICgxVTw8MzEpIHwgMTY2NywgKDFVPDwzMSkgfCAxNzM1LCAKLSAgKDFVPDwzMSkgfCAxNzM1LCAoMVU8PDMxKSB8IDE3MzUsICgxVTw8MzEpIHwgMTYyMSwgKDFVPDwzMSkgfCAxNjgzLCAoMVU8PDMxKSB8IDE2ODMsICgxVTw8MzEpIHwgMTc1MywgKDFVPDwzMSkgfCAxNzUzLCAoMVU8PDMxKSB8IDE3NTMsIAotICAoMVU8PDMxKSB8IDE2MjEsICgxVTw8MzEpIHwgMTY4MywgKDFVPDwzMSkgfCAxNjgzLCAoMVU8PDMxKSB8IDE3NTMsICgxVTw8MzEpIHwgMTc1MywgKDFVPDwzMSkgfCAxNzUzLCAoMVU8PDMxKSB8IDE5MTYsICgxVTw8MzEpIHwgMjA2MCwgCi0gICgxVTw8MzEpIHwgMjE0MCwgKDFVPDwzMSkgfCAyNDA0LCAoMVU8PDMxKSB8IDI1MDgsICgxVTw8MzEpIHwgMjA2MCwgKDFVPDwzMSkgfCAyMzE2LCAoMVU8PDMxKSB8IDI0MDQsICgxVTw8MzEpIHwgMjcxNiwgKDFVPDwzMSkgfCAyODI4LCAKLSAgKDFVPDwzMSkgfCAyNzE2LCAoMVU8PDMxKSB8IDIwNzksICgxVTw8MzEpIHwgMjMzNywgKDFVPDwzMSkgfCAyNDI5LCAoMVU8PDMxKSB8IDI3NDMsICgxVTw8MzEpIHwgMjg1OSwgKDFVPDwzMSkgfCAyNzQzLCAoMVU8PDMxKSB8IDI0MDQsIAotICAoMVU8PDMxKSB8IDE5MzMsICgxVTw8MzEpIHwgMjA3OSwgKDFVPDwzMSkgfCAyMTYzLCAoMVU8PDMxKSB8IDI0MjksICgxVTw8MzEpIHwgMjUzNywgKDFVPDwzMSkgfCAyNDI5LCAoMVU8PDMxKSB8IDE2MzYsICgxVTw8MzEpIHwgMTcwMCwgCi0gICgxVTw8MzEpIHwgMTcwMCwgKDFVPDwzMSkgfCAxNzcyLCAoMVU8PDMxKSB8IDE3NzIsICgxVTw8MzEpIHwgMTc3MiwgKDFVPDwzMSkgfCAxNjUxLCAoMVU8PDMxKSB8IDE3MTcsICgxVTw8MzEpIHwgMTcxNywgKDFVPDwzMSkgfCAxNzkxLCAKLSAgKDFVPDwzMSkgfCAxNzkxLCAoMVU8PDMxKSB8IDE3OTEsICgxVTw8MzEpIHwgMTcwMCwgKDFVPDwzMSkgfCAxOTE2LCAoMVU8PDMxKSB8IDIwNjAsICgxVTw8MzEpIHwgMjE0MCwgKDFVPDwzMSkgfCAyNDA0LCAoMVU8PDMxKSB8IDI1MDgsIAotICAoMVU8PDMxKSB8IDIwNjAsICgxVTw8MzEpIHwgMjMxNiwgKDFVPDwzMSkgfCAyNDA0LCAoMVU8PDMxKSB8IDI3MTYsICgxVTw8MzEpIHwgMjgyOCwgKDFVPDwzMSkgfCAyNzE2LCAoMVU8PDMxKSB8IDIwNzksICgxVTw8MzEpIHwgMjMzNywgCi0gICgxVTw8MzEpIHwgMjQyOSwgKDFVPDwzMSkgfCAyNzQzLCAoMVU8PDMxKSB8IDI4NTksICgxVTw8MzEpIHwgMjc0MywgKDFVPDwzMSkgfCAyNDA0LCAoMVU8PDMxKSB8IDE5MzMsICgxVTw8MzEpIHwgMjA3OSwgKDFVPDwzMSkgfCAyMTYzLCAKLSAgKDFVPDwzMSkgfCAyNDI5LCAoMVU8PDMxKSB8IDI1MzcsICgxVTw8MzEpIHwgMjQyOSwgKDFVPDwzMSkgfCAxNjM2LCAoMVU8PDMxKSB8IDE3MDAsICgxVTw8MzEpIHwgMTcwMCwgKDFVPDwzMSkgfCAxNzcyLCAoMVU8PDMxKSB8IDE3NzIsIAotICAoMVU8PDMxKSB8IDE3NzIsICgxVTw8MzEpIHwgMTY1MSwgKDFVPDwzMSkgfCAxNzE3LCAoMVU8PDMxKSB8IDE3MTcsICgxVTw8MzEpIHwgMTc5MSwgKDFVPDwzMSkgfCAxNzkxLCAoMVU8PDMxKSB8IDE3OTEsICgxVTw8MzEpIHwgMTU4MCwgCi0gICgxVTw8MzEpIHwgMTYzNiwgKDFVPDwzMSkgfCAxNjM2LCAoMVU8PDMxKSB8IDE3MDAsICgxVTw8MzEpIHwgMTcwMCwgKDFVPDwzMSkgfCAxNzAwLCAoMVU8PDMxKSB8IDE1OTMsICgxVTw8MzEpIHwgMTY1MSwgKDFVPDwzMSkgfCAxNjUxLCAKLSAgKDFVPDwzMSkgfCAxNzE3LCAoMVU8PDMxKSB8IDE3MTcsICgxVTw8MzEpIHwgMTcxNywgKDFVPDwzMSkgfCAxNTkzLCAoMVU8PDMxKSB8IDE2NTEsICgxVTw8MzEpIHwgMTY1MSwgKDFVPDwzMSkgfCAxNzE3LCAoMVU8PDMxKSB8IDE3MTcsIAotICAoMVU8PDMxKSB8IDE3MTcsICgxVTw8MzEpIHwgMzIyNywgKDFVPDwzMSkgfCAzMjUzLCAoMVU8PDMxKSB8IDMyNTMsICgxVTw8MzEpIHwgMzI4MywgKDFVPDwzMSkgfCAzMzE3LCAoMVU8PDMxKSB8IDMyODMsICgxVTw8MzEpIHwgMzI4MywgCi0gICgxVTw8MzEpIHwgMzI4MywgKDFVPDwzMSkgfCAzMjUzLCAoMVU8PDMxKSB8IDMyODMsICgxVTw8MzEpIHwgMzI4MywgKDFVPDwzMSkgfCAzMzE3LCAoMVU8PDMxKSB8IDMzMTcsICgxVTw8MzEpIHwgMzMxNywgKDFVPDwzMSkgfCAzNzYsIAotICAoMVU8PDMxKSB8IDM3NiwgMHg1MCwgMHg0NDAsIDB4NDQ0NDcsIDB4NDQ0NzcsIDB4NDQ0Nzc3LCAoMVU8PDMxKSB8IDM3NiwgMHgxMCwgCi0gIDB4NDJmMmYsIDB4NDQ0NCwgMHgyZjJmLCAweDUxLCAweDQ0NCwgMHg0NDQsIDB4MTQ0NDFmMWYsIDB4NTQ1NSwgCi0gIDB4NGE0NTRhLCAweDQ0NDQsIDB4MSwgMHg1NDU1LCAoMVU8PDMxKSB8IDM3NiwgKDFVPDwzMSkgfCAzMTI4LCAoMVU8PDMxKSB8IDMxMjgsICgxVTw8MzEpIHwgMzEyNiwgCi0gICgxVTw8MzEpIHwgMzEyOCwgKDFVPDwzMSkgfCAzMTI4LCAoMVU8PDMxKSB8IDMxMjgsICgxVTw8MzEpIHwgMzEyOCwgKDFVPDwzMSkgfCAzMTI4LCAoMVU8PDMxKSB8IDMxMjgsICgxVTw8MzEpIHwgMzEyOCwgKDFVPDwzMSkgfCAzMTI4LCAKLSAgMHg0NDQ0YTBmLCAweDQ0NDRhMGYsIDB4NDQ0NGEwZjAsIDB4NDQ0NGEwZjAsIDB4NDQ0NDRhMGYsICgxVTw8MzEpIHwgMzA5NiwgMHgyZjJmLCAweDc3LCAKLSAgMHg0NCwgMHg0NDQsIDB4MmYyZiwgMHgyZjJmLCAweDc3LCAweDAsIDB4NDQ0YTFmLCAweDAsIAotICAweDAsIDB4MCwgMHgwLCAweDQwLCAweDUsIDB4NDQsIDB4NDAsIDB4NSwgCi0gIDB4NSwgMHg0NDAsIDB4NDQwLCAweDQwLCAweDQwLCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAKLSAgMHg0NDFmMWYsIDB4MTQzOTM5NCwgMHgxNDQ0NCwgMHgxNDQ0NCwgMHgxZjFmMWYsIDB4MWYxZiwgMHgyZjJmLCAoMVU8PDMxKSB8IDMxMDgsIAotICAoMVU8PDMxKSB8IDMxMDgsICgxVTw8MzEpIHwgMzEwNiwgKDFVPDwzMSkgfCAzMTA4LCAoMVU8PDMxKSB8IDMxMDgsICgxVTw8MzEpIHwgMzEwOCwgKDFVPDwzMSkgfCAzMTA4LCAoMVU8PDMxKSB8IDMxMDgsICgxVTw8MzEpIHwgMzEwOCwgCi0gICgxVTw8MzEpIHwgMzEwOCwgKDFVPDwzMSkgfCAzMTA4LCAweDQ0NDQ0YTBmLCAweDQ0NDQ0YTBmLCAoMVU8PDMxKSB8IDMwOTYsICgxVTw8MzEpIHwgMzA5NiwgKDFVPDwzMSkgfCAzMDg2LCAoMVU8PDMxKSB8IDMwODUsIAotICAoMVU8PDMxKSB8IDI1LCAoMVU8PDMxKSB8IDI0LCAweDQyZjJmLCAweDQ0MWYxZiwgMHgxNDM5Mzk0LCAweDE0NDQ0LCAweDE0NDQ0LCAweDAsIAotICAoMVU8PDMxKSB8IDEwOCwgMHgwLCAweDQsIDB4NCwgMHg0LCAweDQsIDB4NCwgMHg0LCAKLSAgMHhmMGYsIDB4MTEsIDB4NDQ0NCwgMHhmMGYsIDB4NDQ0NDQ0MCwgMHg0NDQ0NDQwLCAweDAsIDB4NDQ0LCAKLSAgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQwLCAweDQwLCAweDQwLCAKLSAgMHg0LCAweDQwLCAweDQwLCAweDRmNCwgKDFVPDwzMSkgfCA3NTQsIDB4MmU0NDAsIDB4MmU0NDAsIDB4MmU0NDAsIAotICAweDJlNDQwLCAweDRmNCwgKDFVPDwzMSkgfCA3NTQsIDB4NDQ0NDQ0MCwgMHg0NDQ0NDQwLCAweDQ0NDQ0MCwgMHg0NDQ0NDAsIDB4NDQ0NDQ0LCAKLSAgMHg0NDQ0NDQsICgxVTw8MzEpIHwgMzExOSwgKDFVPDwzMSkgfCAzMTE5LCAweDJjMmMyYywgMHgyYzJjMmMsIDB4MmMyYywgMHgyYzJjLCAoMVU8PDMxKSB8IDUyNjQsIAotICAweDRhNDRhNGEsIDB4NDQsIDB4NGE0NGE0YSwgMHg0YTQ0YTRhLCAweDRhNGE0YTRhLCAweDRhNGE0YSwgMHg0YTRhNGE0YSwgMHg0YTRhNGE0YSwgCi0gIDB4NGE0YTRhLCAweDRhNGE0YTRhLCAoMVU8PDMxKSB8IDUyNjQsIDB4M2YzZjNmLCAweDNmM2YzZiwgMHgzZjNmLCAweGJmYmYzZiwgMHhiZmJmM2YsIAotICAweDNmM2YzZjNmLCAweDNmM2YsIDB4YmYzZiwgMHhiZjNmLCAweDRhZjFmLCAweDRhZjFmLCAweDdhM2EsIDB4NDlmMmYsIAotICAweDQ5ZjJmLCAweDNhN2EsIDB4YmYzZiwgMHhiZjNmLCAweGJmM2YsIDB4YmYzZiwgMHhiZjNmLCAweGJmM2YsIAotICAweDNmM2YzZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAweDNmM2YzZiwgMHg0Y2YzZiwgKDFVPDwzMSkgfCA1MzM5LCAoMVU8PDMxKSB8IDUzMjksICgxVTw8MzEpIHwgNTMxNywgCi0gICgxVTw8MzEpIHwgNDE3MiwgKDFVPDwzMSkgfCA0MTcyLCAoMVU8PDMxKSB8IDMwMzMsICgxVTw8MzEpIHwgNDE2MSwgKDFVPDwzMSkgfCA0MTYxLCAoMVU8PDMxKSB8IDMwMTUsICgxVTw8MzEpIHwgNDE0OCwgKDFVPDwzMSkgfCA0MTQ4LCAKLSAgKDFVPDwzMSkgfCAyOTkzLCAweDNmM2YzZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAweDNmM2YzZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAoMVU8PDMxKSB8IDk3NywgCi0gICgxVTw8MzEpIHwgOTc3LCAoMVU8PDMxKSB8IDk3NywgMHgzZjNmM2YsIDB4YmYzZjNmLCAweGJmM2YzZiwgMHgzZjNmM2YsIDB4YmYzZiwgMHhiZjNmLCAKLSAgMHgzZjNmM2YsIDB4M2YzZjNmLCAweDNmM2YzZiwgMHgzZjNmM2YsIDB4M2YzZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAweDNmM2YzZiwgCi0gICgxVTw8MzEpIHwgOTc3LCAoMVU8PDMxKSB8IDk2MCwgKDFVPDwzMSkgfCA5NjAsICgxVTw8MzEpIHwgOTYwLCAweDNmM2YsIDB4M2YzZjNmLCAoMVU8PDMxKSB8IDk2NSwgKDFVPDwzMSkgfCA5NjUsIAotICAoMVU8PDMxKSB8IDk2NSwgMHgzZjNmM2YsIDB4M2YzZjNmLCAoMVU8PDMxKSB8IDk2NSwgKDFVPDwzMSkgfCA5NjUsICgxVTw8MzEpIHwgOTY1LCAweDNmM2YzZiwgMHgzZjNmM2YsIAotICAweDNmM2YzZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAoMVU8PDMxKSB8IDk2NSwgMHgzZjNmLCAweDNmM2YzZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAKLSAgMHgzZjNmLCAweDNmM2YsIDB4MmYyZiwgMHgzZjNmLCAweDNmM2YsIDB4M2YzZiwgKDFVPDwzMSkgfCA5NjUsIDB4M2YzZjNmLCAKLSAgMHgzZjNmM2YsIDB4M2YzZiwgMHgzZjNmM2YsICgxVTw8MzEpIHwgOTY1LCAweDNmM2YzZjNmLCAweDNmM2YzZiwgMHgzZjNmM2YsIDB4NGJmNGYwLCAKLSAgMHhiZmJmNGYwLCAoMVU8PDMxKSB8IDUyNzMsICgxVTw8MzEpIHwgNTI4MywgMHg0YmZiZjRmMCwgKDFVPDwzMSkgfCAzNTAzLCAoMVU8PDMxKSB8IDQwNTIsICgxVTw8MzEpIHwgMzUxMywgKDFVPDwzMSkgfCA0MDYzLCAKLSAgKDFVPDwzMSkgfCAzNTI1LCAweDJiMmIyYiwgMHgyYjJiMmIyYiwgKDFVPDwzMSkgfCA2NjYsICgxVTw8MzEpIHwgNjY0LCAweDJiMmIyYjJiLCAoMVU8PDMxKSB8IDY2NiwgKDFVPDwzMSkgfCA2NjQsIAotICAoMVU8PDMxKSB8IDY2MiwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIAotICAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDAsIDB4NDQ0LCAweDQ0NCwgCi0gIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIAotICAweDU0NDUsIDB4NTQ0NSwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgCi0gIDB4NTQ0NSwgMHg1NDQ1LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAKKyAgMHgyZjJmLCAweDQsIDB4NDFmMWY1LCAoMVU8PDMxKSB8IDE1MCwgMHg1MTUsICgxVTw8MzEpIHwgMzQ0MywgKDFVPDwzMSkgfCAzNDc3LCAoMVU8PDMxKSB8IDM0NzcsIAorICAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzU2MywgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNDQzLCAoMVU8PDMxKSB8IDM0NzcsICgxVTw8MzEpIHwgMzQ3NywgCisgICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNTYzLCAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM0NDEsICgxVTw8MzEpIHwgMzQ3NSwgKDFVPDwzMSkgfCAzNDc1LCAKKyAgKDFVPDwzMSkgfCAzNTE1LCAoMVU8PDMxKSB8IDM1NjEsICgxVTw8MzEpIHwgMzUxNSwgKDFVPDwzMSkgfCAzNTE1LCAoMVU8PDMxKSB8IDM1MTUsICgxVTw8MzEpIHwgMzQ0MywgKDFVPDwzMSkgfCAzNDc3LCAoMVU8PDMxKSB8IDM0NzcsIAorICAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzU2MywgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNDQzLCAoMVU8PDMxKSB8IDM0NzcsICgxVTw8MzEpIHwgMzQ3NywgCisgICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNTYzLCAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM0NDMsICgxVTw8MzEpIHwgMzQ3NywgKDFVPDwzMSkgfCAzNDc3LCAKKyAgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM1NjMsICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzQ0MywgKDFVPDwzMSkgfCAzNDc3LCAoMVU8PDMxKSB8IDM0NzcsIAorICAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzU2MywgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNDQzLCAoMVU8PDMxKSB8IDM0NzcsICgxVTw8MzEpIHwgMzQ3NywgCisgICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNTYzLCAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM0NDMsICgxVTw8MzEpIHwgMzQ3NywgKDFVPDwzMSkgfCAzNDc3LCAKKyAgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM1NjMsICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzQ0MywgKDFVPDwzMSkgfCAzNDc3LCAoMVU8PDMxKSB8IDM0NzcsIAorICAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzU2MywgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNDQzLCAoMVU8PDMxKSB8IDM0NzcsICgxVTw8MzEpIHwgMzQ3NywgCisgICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNTYzLCAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM0NDMsICgxVTw8MzEpIHwgMzQ3NywgKDFVPDwzMSkgfCAzNDc3LCAKKyAgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM1NjMsICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzQ0MywgKDFVPDwzMSkgfCAzNDc3LCAoMVU8PDMxKSB8IDM0NzcsIAorICAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzU2MywgKDFVPDwzMSkgfCAzNTE3LCAoMVU8PDMxKSB8IDM1MTcsICgxVTw8MzEpIHwgMzUxNywgKDFVPDwzMSkgfCAxODYzLCAoMVU8PDMxKSB8IDE5MjcsICgxVTw8MzEpIHwgMjI1MiwgCisgICgxVTw8MzEpIHwgMjUwNCwgKDFVPDwzMSkgfCAyNTA0LCAoMVU8PDMxKSB8IDI5MDAsICgxVTw8MzEpIHwgMjkwMCwgKDFVPDwzMSkgfCAyNTIzLCAoMVU8PDMxKSB8IDI5MjEsICgxVTw8MzEpIHwgMjkyMSwgKDFVPDwzMSkgfCAyNTA0LCAKKyAgKDFVPDwzMSkgfCAyMjY5LCAoMVU8PDMxKSB8IDI1MjMsICgxVTw8MzEpIHwgMjUyMywgKDFVPDwzMSkgfCAxODk0LCAoMVU8PDMxKSB8IDE5NjIsICgxVTw8MzEpIHwgMjIxNSwgKDFVPDwzMSkgfCAyNDYzLCAoMVU8PDMxKSB8IDI0NjMsIAorICAoMVU8PDMxKSB8IDI4NTUsICgxVTw8MzEpIHwgMjg1NSwgKDFVPDwzMSkgfCAyNDgzLCAoMVU8PDMxKSB8IDI4NzcsICgxVTw8MzEpIHwgMjg3NywgKDFVPDwzMSkgfCAyNDYzLCAoMVU8PDMxKSB8IDIyMzMsICgxVTw8MzEpIHwgMjQ4MywgCisgICgxVTw8MzEpIHwgMjQ4MywgKDFVPDwzMSkgfCAxOTYyLCAoMVU8PDMxKSB8IDIwMzgsICgxVTw8MzEpIHwgMjAzOCwgKDFVPDwzMSkgfCAxOTgwLCAoMVU8PDMxKSB8IDIwNTgsICgxVTw8MzEpIHwgMjA1OCwgKDFVPDwzMSkgfCAxOTYyLCAKKyAgKDFVPDwzMSkgfCAxOTYyLCAoMVU8PDMxKSB8IDIwMzgsICgxVTw8MzEpIHwgMjAzOCwgKDFVPDwzMSkgfCAxOTgwLCAoMVU8PDMxKSB8IDIwNTgsICgxVTw8MzEpIHwgMjA1OCwgKDFVPDwzMSkgfCAxODk0LCAoMVU8PDMxKSB8IDE5NjIsIAorICAoMVU8PDMxKSB8IDE5NjIsICgxVTw8MzEpIHwgMTkxMCwgKDFVPDwzMSkgfCAxOTgwLCAoMVU8PDMxKSB8IDE5ODAsICgxVTw8MzEpIHwgMTkxMCwgKDFVPDwzMSkgfCAxOTgwLCAoMVU8PDMxKSB8IDE5ODAsICgxVTw8MzEpIHwgMTkyNywgCisgICgxVTw8MzEpIHwgMTk5OSwgKDFVPDwzMSkgfCAxOTk5LCAoMVU8PDMxKSB8IDE5NDQsICgxVTw8MzEpIHwgMjAxOCwgKDFVPDwzMSkgfCAyMDE4LCAoMVU8PDMxKSB8IDE5MjcsICgxVTw8MzEpIHwgMTkyNywgKDFVPDwzMSkgfCAxOTk5LCAKKyAgKDFVPDwzMSkgfCAxOTk5LCAoMVU8PDMxKSB8IDE5NDQsICgxVTw8MzEpIHwgMjAxOCwgKDFVPDwzMSkgfCAyMDE4LCAoMVU8PDMxKSB8IDE4NjMsICgxVTw8MzEpIHwgMTkyNywgKDFVPDwzMSkgfCAxOTI3LCAoMVU8PDMxKSB8IDE4NzgsIAorICAoMVU8PDMxKSB8IDE5NDQsICgxVTw8MzEpIHwgMTk0NCwgKDFVPDwzMSkgfCAxODc4LCAoMVU8PDMxKSB8IDE5NDQsICgxVTw8MzEpIHwgMTk0NCwgKDFVPDwzMSkgfCAxODA3LCAoMVU8PDMxKSB8IDE4NjMsICgxVTw8MzEpIHwgMTg2MywgCisgICgxVTw8MzEpIHwgMTkyNywgKDFVPDwzMSkgfCAxOTI3LCAoMVU8PDMxKSB8IDE5MjcsICgxVTw8MzEpIHwgMzQ2NSwgKDFVPDwzMSkgfCAzNDY1LCAoMVU8PDMxKSB8IDM0NjUsICgxVTw8MzEpIHwgMzQ2NSwgKDFVPDwzMSkgfCAzNDY1LCAKKyAgKDFVPDwzMSkgfCAzNDY1LCAoMVU8PDMxKSB8IDM0NjUsICgxVTw8MzEpIHwgMzQ2NSwgKDFVPDwzMSkgfCAzNDU0LCAoMVU8PDMxKSB8IDM0OTAsICgxVTw8MzEpIHwgMzQ5MCwgKDFVPDwzMSkgfCAzNTMyLCAoMVU8PDMxKSB8IDM1ODAsIAorICAoMVU8PDMxKSB8IDM1MzIsICgxVTw8MzEpIHwgMzUzMiwgKDFVPDwzMSkgfCAzNTMyLCAoMVU8PDMxKSB8IDM0OTAsICgxVTw8MzEpIHwgMzUzMiwgKDFVPDwzMSkgfCAzNTMyLCAoMVU8PDMxKSB8IDM1ODAsICgxVTw8MzEpIHwgMzU4MCwgCisgICgxVTw8MzEpIHwgMzU4MCwgKDFVPDwzMSkgfCAxODA3LCAoMVU8PDMxKSB8IDE4NjMsICgxVTw8MzEpIHwgMTg2MywgKDFVPDwzMSkgfCAxOTI3LCAoMVU8PDMxKSB8IDE5MjcsICgxVTw8MzEpIHwgMjExMiwgKDFVPDwzMSkgfCAyMjUyLCAKKyAgKDFVPDwzMSkgfCAyMjUyLCAoMVU8PDMxKSB8IDI1MDQsICgxVTw8MzEpIHwgMjUwNCwgKDFVPDwzMSkgfCAyMjUyLCAoMVU8PDMxKSB8IDI1MDQsICgxVTw8MzEpIHwgMjUwNCwgKDFVPDwzMSkgfCAyOTAwLCAoMVU8PDMxKSB8IDI5MDAsIAorICAoMVU8PDMxKSB8IDI5MDAsICgxVTw8MzEpIHwgMjI2OSwgKDFVPDwzMSkgfCAyNTIzLCAoMVU8PDMxKSB8IDI1MjMsICgxVTw8MzEpIHwgMjkyMSwgKDFVPDwzMSkgfCAyOTIxLCAoMVU8PDMxKSB8IDI5MjEsICgxVTw8MzEpIHwgMjUwNCwgCisgICgxVTw8MzEpIHwgMjEyNywgKDFVPDwzMSkgfCAyMjY5LCAoMVU8PDMxKSB8IDIyNjksICgxVTw8MzEpIHwgMjUyMywgKDFVPDwzMSkgfCAyNTIzLCAoMVU8PDMxKSB8IDI1MjMsICgxVTw8MzEpIHwgMTgzNCwgKDFVPDwzMSkgfCAxODk0LCAKKyAgKDFVPDwzMSkgfCAxODk0LCAoMVU8PDMxKSB8IDE5NjIsICgxVTw8MzEpIHwgMTk2MiwgKDFVPDwzMSkgfCAyMDc5LCAoMVU8PDMxKSB8IDIyMTUsICgxVTw8MzEpIHwgMjIxNSwgKDFVPDwzMSkgfCAyNDYzLCAoMVU8PDMxKSB8IDI0NjMsIAorICAoMVU8PDMxKSB8IDIyMTUsICgxVTw8MzEpIHwgMjQ2MywgKDFVPDwzMSkgfCAyNDYzLCAoMVU8PDMxKSB8IDI4NTUsICgxVTw8MzEpIHwgMjg1NSwgKDFVPDwzMSkgfCAyODU1LCAoMVU8PDMxKSB8IDIyMzMsICgxVTw8MzEpIHwgMjQ4MywgCisgICgxVTw8MzEpIHwgMjQ4MywgKDFVPDwzMSkgfCAyODc3LCAoMVU8PDMxKSB8IDI4NzcsICgxVTw8MzEpIHwgMjg3NywgKDFVPDwzMSkgfCAyNDYzLCAoMVU8PDMxKSB8IDIwOTUsICgxVTw8MzEpIHwgMjIzMywgKDFVPDwzMSkgfCAyMjMzLCAKKyAgKDFVPDwzMSkgfCAyNDgzLCAoMVU8PDMxKSB8IDI0ODMsICgxVTw8MzEpIHwgMjQ4MywgKDFVPDwzMSkgfCAyMTc4LCAoMVU8PDMxKSB8IDIzMjYsICgxVTw8MzEpIHwgMjQxNCwgKDFVPDwzMSkgfCAyNjgyLCAoMVU8PDMxKSB8IDI3OTQsIAorICAoMVU8PDMxKSB8IDIzMjYsICgxVTw8MzEpIHwgMjU4NiwgKDFVPDwzMSkgfCAyNjgyLCAoMVU8PDMxKSB8IDI5OTgsICgxVTw8MzEpIHwgMzExOCwgKDFVPDwzMSkgfCAyOTk4LCAoMVU8PDMxKSB8IDIzNDYsICgxVTw8MzEpIHwgMjYwOCwgCisgICgxVTw8MzEpIHwgMjcwOCwgKDFVPDwzMSkgfCAzMDI2LCAoMVU8PDMxKSB8IDMxNTAsICgxVTw8MzEpIHwgMzAyNiwgKDFVPDwzMSkgfCAyNjgyLCAoMVU8PDMxKSB8IDIxOTYsICgxVTw8MzEpIHwgMjM0NiwgKDFVPDwzMSkgfCAyNDM4LCAKKyAgKDFVPDwzMSkgfCAyNzA4LCAoMVU8PDMxKSB8IDI4MjQsICgxVTw8MzEpIHwgMjcwOCwgKDFVPDwzMSkgfCAxODk0LCAoMVU8PDMxKSB8IDE5NjIsICgxVTw8MzEpIHwgMTk2MiwgKDFVPDwzMSkgfCAyMDM4LCAoMVU8PDMxKSB8IDIwMzgsIAorICAoMVU8PDMxKSB8IDIwMzgsICgxVTw8MzEpIHwgMTkxMCwgKDFVPDwzMSkgfCAxOTgwLCAoMVU8PDMxKSB8IDE5ODAsICgxVTw8MzEpIHwgMjA1OCwgKDFVPDwzMSkgfCAyMDU4LCAoMVU8PDMxKSB8IDIwNTgsICgxVTw8MzEpIHwgMTk2MiwgCisgICgxVTw8MzEpIHwgMjE3OCwgKDFVPDwzMSkgfCAyMzI2LCAoMVU8PDMxKSB8IDI0MTQsICgxVTw8MzEpIHwgMjY4MiwgKDFVPDwzMSkgfCAyNzk0LCAoMVU8PDMxKSB8IDIzMjYsICgxVTw8MzEpIHwgMjU4NiwgKDFVPDwzMSkgfCAyNjgyLCAKKyAgKDFVPDwzMSkgfCAyOTk4LCAoMVU8PDMxKSB8IDMxMTgsICgxVTw8MzEpIHwgMjk5OCwgKDFVPDwzMSkgfCAyMzQ2LCAoMVU8PDMxKSB8IDI2MDgsICgxVTw8MzEpIHwgMjcwOCwgKDFVPDwzMSkgfCAzMDI2LCAoMVU8PDMxKSB8IDMxNTAsIAorICAoMVU8PDMxKSB8IDMwMjYsICgxVTw8MzEpIHwgMjY4MiwgKDFVPDwzMSkgfCAyMTk2LCAoMVU8PDMxKSB8IDIzNDYsICgxVTw8MzEpIHwgMjQzOCwgKDFVPDwzMSkgfCAyNzA4LCAoMVU8PDMxKSB8IDI4MjQsICgxVTw8MzEpIHwgMjcwOCwgCisgICgxVTw8MzEpIHwgMTg5NCwgKDFVPDwzMSkgfCAxOTYyLCAoMVU8PDMxKSB8IDE5NjIsICgxVTw8MzEpIHwgMjAzOCwgKDFVPDwzMSkgfCAyMDM4LCAoMVU8PDMxKSB8IDIwMzgsICgxVTw8MzEpIHwgMTkxMCwgKDFVPDwzMSkgfCAxOTgwLCAKKyAgKDFVPDwzMSkgfCAxOTgwLCAoMVU8PDMxKSB8IDIwNTgsICgxVTw8MzEpIHwgMjA1OCwgKDFVPDwzMSkgfCAyMDU4LCAoMVU8PDMxKSB8IDE4MzQsICgxVTw8MzEpIHwgMTg5NCwgKDFVPDwzMSkgfCAxODk0LCAoMVU8PDMxKSB8IDE5NjIsIAorICAoMVU8PDMxKSB8IDE5NjIsICgxVTw8MzEpIHwgMTk2MiwgKDFVPDwzMSkgfCAxODQ4LCAoMVU8PDMxKSB8IDE5MTAsICgxVTw8MzEpIHwgMTkxMCwgKDFVPDwzMSkgfCAxOTgwLCAoMVU8PDMxKSB8IDE5ODAsICgxVTw8MzEpIHwgMTk4MCwgCisgICgxVTw8MzEpIHwgMTg0OCwgKDFVPDwzMSkgfCAxOTEwLCAoMVU8PDMxKSB8IDE5MTAsICgxVTw8MzEpIHwgMTk4MCwgKDFVPDwzMSkgfCAxOTgwLCAoMVU8PDMxKSB8IDE5ODAsICgxVTw8MzEpIHwgMjE0MywgKDFVPDwzMSkgfCAyMjg3LCAKKyAgKDFVPDwzMSkgfCAyMzY3LCAoMVU8PDMxKSB8IDI2MzEsICgxVTw8MzEpIHwgMjczNSwgKDFVPDwzMSkgfCAyMjg3LCAoMVU8PDMxKSB8IDI1NDMsICgxVTw8MzEpIHwgMjYzMSwgKDFVPDwzMSkgfCAyOTQzLCAoMVU8PDMxKSB8IDMwNTUsIAorICAoMVU8PDMxKSB8IDI5NDMsICgxVTw8MzEpIHwgMjMwNiwgKDFVPDwzMSkgfCAyNTY0LCAoMVU8PDMxKSB8IDI2NTYsICgxVTw8MzEpIHwgMjk3MCwgKDFVPDwzMSkgfCAzMDg2LCAoMVU8PDMxKSB8IDI5NzAsICgxVTw8MzEpIHwgMjYzMSwgCisgICgxVTw8MzEpIHwgMjE2MCwgKDFVPDwzMSkgfCAyMzA2LCAoMVU8PDMxKSB8IDIzOTAsICgxVTw8MzEpIHwgMjY1NiwgKDFVPDwzMSkgfCAyNzY0LCAoMVU8PDMxKSB8IDI2NTYsICgxVTw8MzEpIHwgMTg2MywgKDFVPDwzMSkgfCAxOTI3LCAKKyAgKDFVPDwzMSkgfCAxOTI3LCAoMVU8PDMxKSB8IDE5OTksICgxVTw8MzEpIHwgMTk5OSwgKDFVPDwzMSkgfCAxOTk5LCAoMVU8PDMxKSB8IDE4NzgsICgxVTw8MzEpIHwgMTk0NCwgKDFVPDwzMSkgfCAxOTQ0LCAoMVU8PDMxKSB8IDIwMTgsIAorICAoMVU8PDMxKSB8IDIwMTgsICgxVTw8MzEpIHwgMjAxOCwgKDFVPDwzMSkgfCAxOTI3LCAoMVU8PDMxKSB8IDIxNDMsICgxVTw8MzEpIHwgMjI4NywgKDFVPDwzMSkgfCAyMzY3LCAoMVU8PDMxKSB8IDI2MzEsICgxVTw8MzEpIHwgMjczNSwgCisgICgxVTw8MzEpIHwgMjI4NywgKDFVPDwzMSkgfCAyNTQzLCAoMVU8PDMxKSB8IDI2MzEsICgxVTw8MzEpIHwgMjk0MywgKDFVPDwzMSkgfCAzMDU1LCAoMVU8PDMxKSB8IDI5NDMsICgxVTw8MzEpIHwgMjMwNiwgKDFVPDwzMSkgfCAyNTY0LCAKKyAgKDFVPDwzMSkgfCAyNjU2LCAoMVU8PDMxKSB8IDI5NzAsICgxVTw8MzEpIHwgMzA4NiwgKDFVPDwzMSkgfCAyOTcwLCAoMVU8PDMxKSB8IDI2MzEsICgxVTw8MzEpIHwgMjE2MCwgKDFVPDwzMSkgfCAyMzA2LCAoMVU8PDMxKSB8IDIzOTAsIAorICAoMVU8PDMxKSB8IDI2NTYsICgxVTw8MzEpIHwgMjc2NCwgKDFVPDwzMSkgfCAyNjU2LCAoMVU8PDMxKSB8IDE4NjMsICgxVTw8MzEpIHwgMTkyNywgKDFVPDwzMSkgfCAxOTI3LCAoMVU8PDMxKSB8IDE5OTksICgxVTw8MzEpIHwgMTk5OSwgCisgICgxVTw8MzEpIHwgMTk5OSwgKDFVPDwzMSkgfCAxODc4LCAoMVU8PDMxKSB8IDE5NDQsICgxVTw8MzEpIHwgMTk0NCwgKDFVPDwzMSkgfCAyMDE4LCAoMVU8PDMxKSB8IDIwMTgsICgxVTw8MzEpIHwgMjAxOCwgKDFVPDwzMSkgfCAxODA3LCAKKyAgKDFVPDwzMSkgfCAxODYzLCAoMVU8PDMxKSB8IDE4NjMsICgxVTw8MzEpIHwgMTkyNywgKDFVPDwzMSkgfCAxOTI3LCAoMVU8PDMxKSB8IDE5MjcsICgxVTw8MzEpIHwgMTgyMCwgKDFVPDwzMSkgfCAxODc4LCAoMVU8PDMxKSB8IDE4NzgsIAorICAoMVU8PDMxKSB8IDE5NDQsICgxVTw8MzEpIHwgMTk0NCwgKDFVPDwzMSkgfCAxOTQ0LCAoMVU8PDMxKSB8IDE4MjAsICgxVTw8MzEpIHwgMTg3OCwgKDFVPDwzMSkgfCAxODc4LCAoMVU8PDMxKSB8IDE5NDQsICgxVTw8MzEpIHwgMTk0NCwgCisgICgxVTw8MzEpIHwgMTk0NCwgKDFVPDwzMSkgfCAzNDY0LCAoMVU8PDMxKSB8IDM1MDIsICgxVTw8MzEpIHwgMzUwMiwgKDFVPDwzMSkgfCAzNTQ2LCAoMVU8PDMxKSB8IDM1OTYsICgxVTw8MzEpIHwgMzU0NiwgKDFVPDwzMSkgfCAzNTQ2LCAKKyAgKDFVPDwzMSkgfCAzNTQ2LCAoMVU8PDMxKSB8IDM1MDIsICgxVTw8MzEpIHwgMzU0NiwgKDFVPDwzMSkgfCAzNTQ2LCAoMVU8PDMxKSB8IDM1OTYsICgxVTw8MzEpIHwgMzU5NiwgKDFVPDwzMSkgfCAzNTk2LCAoMVU8PDMxKSB8IDM4OCwgCisgICgxVTw8MzEpIHwgMzg4LCAweDUwLCAweDQ0MCwgMHg0NDQ0NywgMHg0NDQ3NywgMHg0MTQ0NzcsIDB4NDQ0Nzc3LCAweDQxNDQ3NzYsIAorICAoMVU8PDMxKSB8IDM4OCwgMHgxMCwgMHg0MmYyZiwgMHg0NDQ0LCAweDJmMmYsIDB4NTEsIDB4NDQ0LCAweDQ0NCwgCisgIDB4MTQ0NDFmMWYsIDB4NTQ1NSwgMHg0YTQ1NGEsIDB4NDQ0NCwgMHgxLCAweDU0NTUsICgxVTw8MzEpIHwgMzg4LCAoMVU8PDMxKSB8IDMzNTUsIAorICAoMVU8PDMxKSB8IDMzNTUsICgxVTw8MzEpIHwgMzM1MywgKDFVPDwzMSkgfCAzMzU1LCAoMVU8PDMxKSB8IDMzNTUsICgxVTw8MzEpIHwgMzM1NSwgKDFVPDwzMSkgfCAzMzU1LCAoMVU8PDMxKSB8IDMzNTUsICgxVTw8MzEpIHwgMzM1NSwgCisgICgxVTw8MzEpIHwgMzM1NSwgKDFVPDwzMSkgfCAzMzU1LCAweDQ0NDRhMGYsIDB4NDQ0NGEwZiwgMHg0NDQ0YTBmMCwgMHg0NDQ0YTBmMCwgMHg0NDQ0NGEwZiwgKDFVPDwzMSkgfCAzMzIzLCAKKyAgMHgyZjJmLCAweDc3LCAweDQ0LCAweDQ0NCwgMHgyZjJmLCAweDJmMmYsIDB4NzcsIDB4MCwgCisgIDB4NDQ0YTBmLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4NDAsIDB4NSwgMHg0NCwgCisgIDB4NDAsIDB4NSwgMHg1LCAweDQ0MCwgMHg0NDAsIDB4NDAsIDB4NDAsIDB4NDQ0NCwgCisgIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0MWYxZiwgMHgxNDM5Mzk0LCAweDE0NDQ0LCAweDE0NDQ0LCAweDFmMWYxZiwgMHgxZjFmLCAKKyAgMHgyZjJmLCAoMVU8PDMxKSB8IDMzMzUsICgxVTw8MzEpIHwgMzMzNSwgKDFVPDwzMSkgfCAzMzMzLCAoMVU8PDMxKSB8IDMzMzUsICgxVTw8MzEpIHwgMzMzNSwgKDFVPDwzMSkgfCAzMzM1LCAoMVU8PDMxKSB8IDMzMzUsIAorICAoMVU8PDMxKSB8IDMzMzUsICgxVTw8MzEpIHwgMzMzNSwgKDFVPDwzMSkgfCAzMzM1LCAoMVU8PDMxKSB8IDMzMzUsIDB4NDQ0NDRhMGYsIDB4NDQ0NDRhMGYsICgxVTw8MzEpIHwgMzMyMywgKDFVPDwzMSkgfCAzMzIzLCAKKyAgKDFVPDwzMSkgfCAzMzEzLCAoMVU8PDMxKSB8IDMzMTIsICgxVTw8MzEpIHwgMzcsICgxVTw8MzEpIHwgMzYsIDB4NDJmMmYsIDB4NDQxZjFmLCAweDE0MzkzOTQsIDB4MTQ0NDQsIAorICAweDE0NDQ0LCAweDAsICgxVTw8MzEpIHwgMTMwLCAweDAsIDB4NCwgMHg0LCAweDQsIDB4NCwgCisgIDB4NCwgMHg0LCAweGYwZiwgMHgxMSwgMHg0NDQ0LCAweGYwZiwgMHg0NDQ0NDQwLCAweDQ0NDQ0NDAsIAorICAweDAsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDAsIAorICAweDQwLCAweDQwLCAweDQsIDB4NDAsIDB4NDAsIDB4NGY0LCAoMVU8PDMxKSB8IDczNiwgMHgyZTQ0MCwgCisgIDB4MmU0NDAsIDB4MmU0NDAsIDB4MmU0NDAsIDB4NGY0LCAoMVU8PDMxKSB8IDczNiwgMHg0NDQ0NDQwLCAweDQ0NDQ0NDAsIDB4NDQ0NDQwLCAKKyAgMHg0NDQ0NDAsIDB4NDQ0NDQ0LCAweDQ0NDQ0NCwgKDFVPDwzMSkgfCAzMzQ2LCAoMVU8PDMxKSB8IDMzNDYsIDB4MmMyYzJjLCAweDJjMmMyYywgMHgyYzJjLCAKKyAgMHgyYzJjLCAoMVU8PDMxKSB8IDU4MjcsIDB4NGE0NGE0YSwgMHg0NCwgMHg0YTQ0YTRhLCAweDRhNDRhNGEsIDB4NGE0YTRhNGEsIDB4NGE0YTRhLCAKKyAgMHg0YTRhNGE0YSwgMHg0YTRhNGE0YSwgMHg0YTRhNGEsIDB4NGE0YTRhNGEsICgxVTw8MzEpIHwgNTgyNywgMHgzZjNmM2YsIDB4M2YzZjNmLCAweDNmM2YsIAorICAweGJmYmYzZiwgMHhiZmJmM2YsIDB4M2YzZjNmM2YsIDB4M2YzZiwgMHhiZjNmLCAweGJmM2YsIDB4NGFmMWYsIDB4NGFmMWYsIAorICAweDdhM2EsIDB4NDlmMmYsIDB4NDlmMmYsIDB4M2E3YSwgMHhiZjNmLCAweGJmM2YsIDB4YmYzZiwgMHhiZjNmLCAKKyAgMHhiZjNmLCAweGJmM2YsIDB4M2YzZjNmLCAweDNmM2YzZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAweDRjZjNmLCAoMVU8PDMxKSB8IDU5MDIsIAorICAoMVU8PDMxKSB8IDU4OTIsICgxVTw8MzEpIHwgNTg4MCwgKDFVPDwzMSkgfCA0NzI0LCAoMVU8PDMxKSB8IDQ3MjQsICgxVTw8MzEpIHwgMzI2MCwgKDFVPDwzMSkgfCA0NzEzLCAoMVU8PDMxKSB8IDQ3MTMsICgxVTw8MzEpIHwgMzI0MiwgCisgICgxVTw8MzEpIHwgNDcwMCwgKDFVPDwzMSkgfCA0NzAwLCAoMVU8PDMxKSB8IDMyMjAsIDB4M2YzZjNmLCAweDNmM2YzZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAweDNmM2YzZiwgCisgIDB4M2YzZjNmLCAoMVU8PDMxKSB8IDkzNiwgKDFVPDwzMSkgfCA5MzYsICgxVTw8MzEpIHwgOTM2LCAweDNmM2YzZiwgMHhiZjNmM2YsIDB4YmYzZjNmLCAweDNmM2YzZiwgCisgIDB4YmYzZiwgMHhiZjNmLCAweDNmM2YzZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAweDNmM2YzZiwgMHgzZjNmLCAweDNmM2YzZiwgCisgIDB4M2YzZjNmLCAweDNmM2YzZiwgKDFVPDwzMSkgfCA5MzYsICgxVTw8MzEpIHwgOTE5LCAoMVU8PDMxKSB8IDkxOSwgKDFVPDwzMSkgfCA5MTksIDB4M2YzZiwgMHgzZjNmM2YsIAorICAoMVU8PDMxKSB8IDkyNCwgKDFVPDwzMSkgfCA5MjQsICgxVTw8MzEpIHwgOTI0LCAweDNmM2YzZiwgMHgzZjNmM2YsICgxVTw8MzEpIHwgOTI0LCAoMVU8PDMxKSB8IDkyNCwgKDFVPDwzMSkgfCA5MjQsIAorICAweDNmM2YzZiwgMHgzZjNmM2YsIDB4M2YzZjNmLCAweDNmM2YzZiwgMHgzZjNmM2YsICgxVTw8MzEpIHwgOTI0LCAweDNmM2YsIDB4M2YzZjNmLCAKKyAgMHgzZjNmM2YsIDB4M2YzZjNmLCAweDNmM2YsIDB4M2YzZiwgMHgyZjJmLCAweDNmM2YsIDB4M2YzZiwgMHgzZjNmLCAKKyAgKDFVPDwzMSkgfCA5MjQsIDB4M2YzZjNmLCAweDNmM2YzZiwgMHgzZjNmLCAweDNmM2YzZiwgKDFVPDwzMSkgfCA5MjQsIDB4M2YzZjNmM2YsIDB4M2YzZjNmLCAKKyAgMHgzZjNmM2YsIDB4NGJmNGYwLCAweGJmYmY0ZjAsICgxVTw8MzEpIHwgNTgzNiwgKDFVPDwzMSkgfCA1ODQ2LCAweDRiZmJmNGYwLCAoMVU8PDMxKSB8IDM4MzcsICgxVTw8MzEpIHwgNDYwNCwgCisgICgxVTw8MzEpIHwgMzg0NywgKDFVPDwzMSkgfCA0NjE1LCAoMVU8PDMxKSB8IDM4NTksIDB4MmIyYjJiLCAweDJiMmIyYjJiLCAoMVU8PDMxKSB8IDY0OCwgKDFVPDwzMSkgfCA2NDYsIDB4MmIyYjJiMmIsIAorICAoMVU8PDMxKSB8IDY0OCwgKDFVPDwzMSkgfCA2NDYsICgxVTw8MzEpIHwgNjQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIAorICAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0MCwgCisgIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAKKyAgMHg0NDQ0LCAweDQ0NDQsIDB4NTQ0NSwgMHg1NDQ1LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIAorICAweDQ0NDQsIDB4NDQ0NCwgMHg1NDQ1LCAweDU0NDUsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAKICAgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAKLSAgMHg0NDQsIDB4NDQ0LCAweDJlNDQwLCAweDJlNDQwLCAweDJlNDQwLCAweDJlNDQwLCAweDRmNDQsIDB4MmU0NDQsIAotICAweDRmNDQsIDB4MmU0NDQsIDB4NDQ0LCAweDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgCi0gIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0MCwgMHg0NDQsIDB4NDQ0LCAKLSAgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NDQsIDB4NDQ0LCAweDQ0NCwgCi0gIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0LCAweDJmNywgMHgyZjcsIDB4NTJlNSwgCi0gIDB4NTJlNSwgMHg1MmU1LCAweDU1NSwgMHg0NCwgMHg1NSwgMHg0NCwgMHg0NDQsIDB4NDQ0LCAKLSAgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAKLSAgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NTU1LCAweDU1NSwgMHg0NDQsIDB4NTQ1LCAKLSAgMHg0NDQsIDB4NDQ0LCAweDU1NSwgMHg0NCwgMHg0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgCi0gIDB4NDQ0LCAweDQ0NSwgMHg0NDUsIDB4NDQ0LCAweDU1NSwgMHg0NDQsIDB4NTU1LCAweDQ0NCwgCi0gIDB4NTU1LCAweDQ0NCwgMHg1NTUsIDB4NDQsIDB4NTUsIDB4NDQsIDB4NDQsIDB4NTUsIAotICAweDQ0NCwgMHg0NDQsIDB4NTU1LCAweDU0LCAweDU0LCAweDQ0LCAweDQ0LCAweDQ0LCAKLSAgMHg0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIAotICAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDU1NSwgMHg0NDQsIAotICAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIAotICAweDQ0NCwgMHg0NDQsIDB4NDQsIDB4NDQsIDB4NDQsIDB4NDUsIDB4NDQsIDB4NDQ0LCAKLSAgMHg0NDQsIDB4NTUsIDB4NDUsIDB4NDQsIDB4NTUsIDB4NTUsIDB4NTUsIDB4NTUsIAotICAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIAotICAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIAotICAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTQsIDB4NTU0LCAweDU1NCwgMHg1NTQsIAotICAweDU1NCwgMHg1NTQsIDB4NTU0LCAweDU1NCwgMHg1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgCi0gIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgCi0gIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgCi0gIDB4NTU1NSwgMHg1NTUsIDB4NTU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAKLSAgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg0NDQsIDB4NTU1LCAweDQ0LCAweDQ0LCAweDQ0NCwgCi0gIDB4NTU1LCAweDQ0NSwgMHg0NDUsIDB4NTQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgCi0gIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgCi0gIDB4NDQ1LCAweDQ0NSwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NTU1LCAweDQ0NCwgCi0gIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ1NCwgCi0gIDB4NTU0LCAweDQ1NCwgMHg1NTQsIDB4NDU0LCAweDQ1NCwgMHg0NTQsIDB4NDU0LCAweDQ1NCwgCi0gIDB4NDU0LCAweDQ1NCwgMHg0NTQsIDB4NDU1NSwgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NTU1LCAKLSAgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgMHg1NTQsIDB4NTU0LCAweDU1NCwgMHg0NCwgMHg0NDQsIAotICAweDQ0NCwgMHg0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDU1NCwgCi0gIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDU1NCwgMHg0NDQsIDB4NDQ0LCAweDU1NCwgCi0gIDB4NDQ0LCAweDQ0NCwgMHg0NSwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0LCAKLSAgMHg0NDQsIDB4NDQ0LCAweDQ0LCAweDQ0LCAweDQ0LCAweDQ0NCwgMHg1NTQ1LCAweDQ0NCwgCi0gIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIAorICAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHgyZTQ0MCwgMHgyZTQ0MCwgMHgyZTQ0MCwgMHgyZTQ0MCwgCisgIDB4NGY0NCwgMHgyZTQ0NCwgMHg0ZjQ0LCAweDJlNDQ0LCAweDQ0NCwgMHg0NCwgMHg0NDQsIDB4NDQ0LCAKKyAgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDAsIAogICAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQ0LCAKLSAgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg1OCwgMHg1NywgMHg4NSwgMHg4NSwgMHg4NywgCi0gIDB4ODUsIDB4ODUsIDB4ODQsIDB4ODQsIDB4ODQsIDB4ODQsIDB4NzUsIDB4NzUsIAotICAweDc4LCAweDc1LCAweDc1LCAweDc0LCAweDc0LCAweDc0LCAweDc0LCAweDU4LCAKLSAgMHg1NywgMHg0OCwgMHg0NywgMHg0OCwgMHg0NywgMHg0ODQsIDB4ODg0LCAweDg4NCwgCi0gIDB4ODg0LCAweDg4NCwgMHg0OCwgMHg0OCwgMHg3NzcsIDB4NDc0LCAweDc3NCwgMHg3NzQsIAotICAweDc3NCwgMHg3NzQsIDB4Nzc3LCAweDc3NywgMHg3NywgMHg3Nzc3LCAweDc3NzcsIDB4NDc3NzcsIAotICAweDc3NzcsIDB4Nzc3NywgMHg0NywgMHg0NywgMHg3NzcsIDB4Nzc3LCAweDc3NywgMHg3NzcsIAotICAoMVU8PDMxKSB8IDE0NDcsICgxVTw8MzEpIHwgNzIyLCAoMVU8PDMxKSB8IDcwMiwgKDFVPDwzMSkgfCAxNDU1LCAoMVU8PDMxKSB8IDczMywgKDFVPDwzMSkgfCA3MTIsICgxVTw8MzEpIHwgMTQ0NywgKDFVPDwzMSkgfCA3MjIsIAotICAoMVU8PDMxKSB8IDcwMiwgKDFVPDwzMSkgfCAxNDQ3LCAoMVU8PDMxKSB8IDcyMiwgKDFVPDwzMSkgfCA3MDIsICgxVTw8MzEpIHwgMTQ0NywgKDFVPDwzMSkgfCA3MjIsICgxVTw8MzEpIHwgNzAyLCAoMVU8PDMxKSB8IDE0NDcsIAotICAoMVU8PDMxKSB8IDcyMiwgKDFVPDwzMSkgfCA3MDIsIDB4NGU0LCAweDVlNSwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ1NSwgMHg0NDU1LCAKLSAgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NSwgMHg0NDUsIDB4NDQ0LCAweDQ0NCwgCi0gIDB4NDQ0LCAweDQ0NCwgMHg0NDUsIDB4NDQ1LCAweDQ0NSwgMHg0NDUsIDB4NDQ1NSwgMHg0NDU1LCAKLSAgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NCwgMHg0NDUsIDB4NDQ1NSwgMHg0NDU1LCAKLSAgMHg0NDUsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAKLSAgMHg1NTU1LCAweDU1NTUsIDB4NTU1NSwgMHg1NTU1LCAweDU1NTUsIDB4NTU1NSwgMHg1NTU1LCAweDU1NTUsIAotICAweDU1NTUsIDB4NTU1NSwgMHg1NTU1LCAweDU1NTUsIDB4NTU1NSwgMHg1NTU1LCAweDU1NTUsIDB4NTU1NSwgCisgIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQsIDB4MmY3LCAKKyAgMHgyZjcsIDB4NTJlNSwgMHg1MmU1LCAweDUyZTUsIDB4NTU1LCAweDQ0LCAweDU1LCAweDQ0LCAKKyAgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAKKyAgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg1NTUsIDB4NTU1LCAKKyAgMHg0NDQsIDB4NTQ1LCAweDQ0NCwgMHg0NDQsIDB4NTU1LCAweDQ0LCAweDQ0LCAweDQ0NCwgCisgIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ1LCAweDQ0NSwgMHg0NDQsIDB4NTU1LCAweDQ0NCwgCisgIDB4NTU1LCAweDQ0NCwgMHg1NTUsIDB4NDQ0LCAweDU1NSwgMHg0NCwgMHg1NSwgMHg0NCwgCisgIDB4NDQsIDB4NTUsIDB4NDQ0LCAweDQ0NCwgMHg1NTUsIDB4NDQ0NCwgMHg1NCwgMHg1NCwgCisgIDB4NDQsIDB4NDQsIDB4NDQsIDB4NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAKKyAgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAKKyAgMHg0NDQsIDB4NTU1LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAKKyAgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0LCAweDQ0LCAweDQ0LCAKKyAgMHg0NSwgMHg0NCwgMHg0NCwgMHg0NDQsIDB4NDQ0LCAweDU1LCAweDQ1LCAweDQ0LCAKKyAgMHg0NCwgMHg1NSwgMHg1NSwgMHg1NSwgMHg1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgCiAgIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgCiAgIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgCisgIDB4NTU1LCAweDU1NCwgMHg1NTQsIDB4NTU0LCAweDU1NCwgMHg1NTQsIDB4NTU0LCAweDU1NCwgCisgIDB4NTU0LCAweDU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAKKyAgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAKKyAgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NTUsIDB4NTU1LCAweDU1NTUsIAorICAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIAorICAweDQ0NCwgMHg1NTUsIDB4NDQsIDB4NDQsICgxVTw8MzEpIHwgNDA3NSwgMHg0NDQsIDB4NTU1LCAweDQ0NSwgCisgIDB4NDQ1LCAweDU0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgCisgIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ1LCAweDQ0NSwgCisgIDB4NDQ1LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg1NTUsIDB4NDQ0LCAweDQ0NCwgCisgIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsICgxVTw8MzEpIHwgNDA3NSwgMHg1NSwgCisgIDB4NTUsIDB4NDU0LCAweDU1NCwgMHg0NTQsIDB4NTU0LCAweDQ1NCwgMHg0NTQsIDB4NDU0LCAKKyAgMHg0NTQsIDB4NDU0LCAweDQ1NCwgMHg0NTQsIDB4NDU0LCAweDQ1NTUsIDB4NDU1NSwgMHg0NTU1LCAKKyAgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ1NTUsICgxVTw8MzEpIHwgNDk3OCwgMHg1NTQsIDB4NTU0LCAKKyAgKDFVPDwzMSkgfCA0OTcyLCAweDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIAorICAweDQ0NCwgMHg0NDQsIDB4NTU0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg1NTQsIAorICAweDQ0NCwgMHg0NDQsIDB4NTU0LCAweDQ0NCwgMHg0NDQsIDB4NDUsIDB4NDQ0NCwgMHg0NDQ0LCAKKyAgMHg0NDQ0LCAweDQ0NDQsIDB4NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NCwgMHg0NCwgMHg0NCwgCisgIDB4NDQ0LCAweDU1NDUsIDB4NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0LCAKKyAgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAKKyAgMHg0NDQsIDB4NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NTgsIDB4NTcsIAorICAweDg1LCAweDg1LCAweDg3LCAweDg1LCAweDg1LCAweDg0LCAweDg0LCAweDg0LCAKKyAgMHg4NCwgMHg3NSwgMHg3NSwgMHg3OCwgMHg3NSwgMHg3NSwgMHg3NCwgMHg3NCwgCisgIDB4NzQsIDB4NzQsIDB4NTgsIDB4NTcsIDB4NDgsIDB4NDcsIDB4NDgsIDB4NDcsIAorICAweDg4OCwgMHg0ODQsIDB4ODg0LCAweDg4NCwgMHg4ODQsIDB4ODg0LCAweDQ4LCAweDQ4LCAKKyAgMHg4ODgsIDB4Nzc3LCAweDQ3NCwgMHg3NzQsIDB4Nzc0LCAweDc3NCwgMHg3NzQsIDB4Nzc3LCAKKyAgMHg3NzcsIDB4NzcsIDB4Nzc3NywgMHg3Nzc3LCAweDQ3Nzc3LCAweDc3NzcsIDB4Nzc3NywgMHg0NywgCisgIDB4NDcsICgxVTw8MzEpIHwgNTE1NywgMHg3NzcsIDB4Nzc3LCAweDc3NywgKDFVPDwzMSkgfCA1MjM4LCAweDc3NywgKDFVPDwzMSkgfCAxNjg0LCAKKyAgKDFVPDwzMSkgfCA3MDQsICgxVTw8MzEpIHwgNjg0LCAoMVU8PDMxKSB8IDE2OTIsICgxVTw8MzEpIHwgNzE1LCAoMVU8PDMxKSB8IDY5NCwgKDFVPDwzMSkgfCAxNjg0LCAoMVU8PDMxKSB8IDcwNCwgKDFVPDwzMSkgfCA2ODQsIAorICAoMVU8PDMxKSB8IDE2ODQsICgxVTw8MzEpIHwgNzA0LCAoMVU8PDMxKSB8IDY4NCwgKDFVPDwzMSkgfCAxNjg0LCAoMVU8PDMxKSB8IDcwNCwgKDFVPDwzMSkgfCA2ODQsICgxVTw8MzEpIHwgMTY4NCwgKDFVPDwzMSkgfCA3MDQsIAorICAoMVU8PDMxKSB8IDY4NCwgMHg0ZTQsIDB4NWU1LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1NSwgCisgIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1LCAweDQ0NSwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgCisgIDB4NDQ0LCAweDQ0NSwgMHg0NDUsIDB4NDQ1LCAweDQ0NSwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1NSwgCisgIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ0LCAweDQ0NSwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1LCAKKyAgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NTU1NSwgCisgIDB4NTU1NSwgMHg1NTU1LCAweDU1NTUsIDB4NTU1NSwgMHg1NTU1LCAweDU1NTUsIDB4NTU1NSwgMHg1NTU1LCAKKyAgMHg1NTU1LCAweDU1NTUsIDB4NTU1NSwgMHg1NTU1LCAweDU1NTUsIDB4NTU1NSwgMHg1NTU1LCAweDU1NSwgCisgIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgCisgIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDQ0NDQsIAogICAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgCiAgIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAKICAgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAKQEAgLTc4NjgsMjcyICs3ODk4LDI3NyBAQAogICAweDQ0NTUsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NSwgMHg0NDUsIDB4NDQ1LCAweDQ0NSwgMHg0NDUsIAogICAweDQ0NSwgMHg0NDUsIDB4NDQ1LCAweDQ0NTUsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1NSwgCiAgIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1LCAweDQ0NSwgMHg0NDUsIDB4NDQ1LCAweDQ0NSwgCi0gIDB4NDQ1LCAweDQ0NSwgMHg0NDUsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAKLSAgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQsIDB4NDQ0LCAKLSAgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIAotICAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NCwgMHg0NDU1LCAKLSAgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NSwgCi0gIDB4NDQ1LCAweDQ0NSwgMHg0NDUsIDB4NDQ1LCAweDQ0NSwgMHg0NDUsIDB4NDQ1LCAweDQ0NTUsIAotICAweDQ0NTUsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ0LCAKLSAgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg1NTUsIDB4NTU1LCAweDU1NTUsIDB4NTU1NSwgMHg1NTUsIAotICAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NTUsIDB4NTU1NSwgMHg1NTQsIDB4NTU0LCAweDU1NSwgCi0gIDB4NTU1LCAweDQ0NTUsIDB4NTU1NSwgMHg1NTU1LCAweDU1NTUsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTUsIAotICAweDQ0NTUsIDB4NTU1LCAweDU1NSwgMHg0NDUsIDB4NDQ0LCAweDQ0NSwgMHg0NDQsIDB4NDQ1LCAKLSAgMHg0NDUsIDB4NTU0LCAweDU1NCwgMHg1NTU1LCAweDU1NTUsIDB4NTU1NSwgMHg1NTU1LCAweDU1NSwgCi0gIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NDU1NSwgMHg0NTUsIDB4NDU0LCAweDU1NTUsIDB4NTU1LCAKLSAgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDU0LCAweDQ1NCwgMHg0NTQsIAotICAweDQ1NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAKLSAgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NSwgMHg0NDU1LCAweDQ0NSwgMHg0NDU1LCAKLSAgMHg1NTU1LCAweDU1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTU1LCAweDU1NTUsIDB4NTU1LCAweDU1NSwgCi0gIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NTU1NSwgMHg1NTU1LCAweDU1NSwgMHg0NDU1LCAweDQ0NTUsIAotICAweDQ0NSwgMHg0NDUsIDB4NTU1NSwgMHg1NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgCi0gIDB4NDQ0NCwgMHg0NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ0NCwgCi0gIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQsIDB4NDQ0NCwgMHg0NTUsIDB4NDU1LCAKLSAgMHg0NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ0NCwgMHg0NDQ0LCAKLSAgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQsIDB4NDU1LCAweDQ1NSwgMHg0NTUsIDB4NDU1NSwgCi0gIDB4NDU1NSwgMHg0NTU1LCAweDQ1NTUsIDB4NDU1LCAweDQ1NSwgMHg0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAKLSAgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NTQsIDB4NDU1LCAweDQ1NSwgMHg0NTUsIAorICAweDQ0NSwgMHg0NDUsIDB4NDQ1LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIAorICAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgCisgIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgCisgIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAKKyAgMHg0NDQsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1NSwgCisgIDB4NDQ1NSwgMHg0NDUsIDB4NDQ1LCAweDQ0NSwgMHg0NDUsIDB4NDQ1LCAweDQ0NSwgMHg0NDUsIAorICAweDQ0NSwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1NSwgMHg0NDU1LCAKKyAgMHg0NDU1LCAweDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg1NTUsIDB4NTU1LCAweDU1NTUsIAorICAweDU1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NTUsIDB4NTU1NSwgMHg1NTQsIAorICAweDU1NCwgMHg1NTUsIDB4NTU1LCAweDQ0NTUsIDB4NTU1NSwgMHg1NTU1LCAweDU1NTUsIDB4NDQ1NSwgCisgIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTUsIDB4NTU1LCAweDU1NSwgMHg0NDUsIDB4NDQ0LCAweDQ0NSwgCisgIDB4NDQ0LCAweDQ0NSwgMHg0NDUsIDB4NTU0LCAweDU1NCwgMHg1NTU1LCAweDU1NTUsIDB4NTU1NSwgCisgIDB4NTU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NDU1NSwgMHg0NTUsIDB4NDU0LCAKKyAgMHg1NTU1LCAweDU1NSwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDU0LCAKKyAgMHg0NTQsIDB4NDU0LCAweDQ1NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIAorICAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NSwgMHg0NDU1LCAKKyAgMHg0NDUsIDB4NDQ1NSwgMHg1NTU1LCAweDU1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTU1LCAweDU1NTUsIAorICAweDU1NSwgMHg1NTUsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NTU1NSwgMHg1NTU1LCAweDU1NSwgCisgIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NSwgMHg0NDUsIDB4NTU1NSwgMHg1NTU1LCAweDU1NSwgMHg1NTUsIAorICAweDU1NSwgMHg1NTUsIDB4NDQ0NCwgMHg0NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgCisgIDB4NDU1NSwgMHg0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQsIDB4NDQ0NCwgCisgIDB4NDU1LCAweDQ1NSwgMHg0NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NTU1LCAKKyAgMHg0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQsIDB4NDU1LCAweDQ1NSwgCisgIDB4NDU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ1NTUsIDB4NDU1LCAweDQ1NSwgMHg0NDQsIAorICAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NTQsIDB4NDU1LCAKKyAgMHg0NTUsIDB4NDU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NDQsIAorICAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0LCAweDQ1NCwgMHg0NTUsIDB4NDU1LCAKKyAgMHg0NCwgMHg1NSwgMHg0NCwgMHg1NCwgMHg0NCwgMHg1NCwgMHg0NCwgMHg0NCwgCisgIDB4NTQsIDB4NDQ0LCAweDQ0NCwgMHg0NCwgMHg1NCwgMHg0NCwgMHg1NCwgMHg1NSwgCisgIDB4NDQ0NCwgMHg1NDQsIDB4NDQ1NSwgMHg1NTUsIDB4NDQ0NDQsIDB4NTQ0NCwgMHg0NDU1NSwgMHg1NTU1LCAKKyAgMHg1NSwgMHg1NTUsIDB4NDU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgCisgIDB4NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDU1LCAweDQ1NSwgMHg0NTUsIAogICAweDQ1NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAKLSAgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0LCAweDQ1NCwgMHg0NTUsIDB4NDU1LCAweDQ0LCAweDU1LCAKLSAgMHg0NTU1LCAweDQ0LCAweDU0LCAweDQ0LCAweDU0LCAweDQ0LCAweDQ0LCAweDU0LCAKLSAgMHg0NDQsIDB4NDQ0LCAweDQ0LCAweDU0LCAweDQ0LCAweDU0LCAweDU1LCAweDQ0NDQsIAotICAweDU0NCwgMHg0NDU1LCAweDU1NSwgMHg0NDQ0NCwgMHg1NDQ0LCAweDQ0NTU1LCAweDU1NTUsIDB4NTUsIAotICAweDU1NSwgMHg0NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ0NCwgCi0gIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NTUsIDB4NDU1LCAweDQ1NSwgMHg0NTU1LCAKLSAgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgCi0gIDB4NDQ0NCwgMHg0NDQ0LCAweDQ1NSwgMHg0NTUsIDB4NDU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NTU1LCAKLSAgMHg0NTU1LCAweDQ1NTUsIDB4NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDU1LCAKLSAgMHg0NTUsIDB4NDQ1LCAweDU1NCwgMHg0NDQsIDB4NDQ0LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAKLSAgMHg1NTUsIDB4NDQyZTJlLCAoMVU8PDMxKSB8IDc0NCwgMHgyZTQ0MmUyZSwgMHg0NTJlMmUsICgxVTw8MzEpIHwgNzYwLCAweDJlNTQyZTJlLCAweDQ0MmUyZSwgCi0gICgxVTw8MzEpIHwgNzQ0LCAweDJlNDQyZTJlLCAweDQ0MmUyZSwgKDFVPDwzMSkgfCA3NDQsIDB4MmU0NDJlMmUsIDB4NDQyZTJlLCAoMVU8PDMxKSB8IDc0NCwgMHgyZTQ0MmUyZSwgCi0gIDB4NDRlNCwgMHg0NCwgMHg0NCwgMHg0NDQ0NCwgMHg0NDQ0NCwgMHg0NDQ0NCwgMHg0NDQ0NCwgMHg0NDQsIAotICAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ1NTUsIDB4NDU1NSwgMHg0NTUsIDB4NDU1LCAweDQ1NTUsIAotICAweDU0LCAweDU0LCAweDU0LCAweDU1LCAweDU0LCAweDU1LCAweDU0LCAweDU1LCAKLSAgMHg1NCwgMHg1NSwgMHg0NCwgMHg0NSwgMHg0NTU1LCAweDQ1NTUsIDB4NDUsIDB4NDUsIAotICAweDU0LCAweDU1NSwgMHg1NCwgMHg1NTUsIDB4NDUsIDB4NDUsIDB4NDQ0NCwgMHg0NDQ0LCAKLSAgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQsIDB4NDU0LCAweDU0LCAweDQ0NDQsIDB4NTQ0LCAKLSAgMHg0NDU1LCAweDU1NSwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgCi0gIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NCwgMHg1NWU0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NTUsIAotICAweDQ0NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDQ1NCwgCi0gIDB4NDU0LCAweDU0LCAweDQ1NSwgMHg0NTUsIDB4NDU1NSwgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgCi0gIDB4NDU1NSwgMHg0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ1LCAKLSAgMHg1NTUsIDB4NTU1LCAweDQ0YzQsIDB4NDRkNCwgMHg0ZDRjLCAoMVU8PDMxKSB8IDQzNjEsIDB4NGQ0YywgKDFVPDwzMSkgfCA0MzYxLCAKLSAgMHg0NGMsIDB4NDRkLCAweDQ0YywgMHg0NGQsIDB4NDRjLCAweDQ0ZCwgKDFVPDwzMSkgfCAxNzgsICgxVTw8MzEpIHwgMTk3LCAKLSAgKDFVPDwzMSkgfCAxNzgsICgxVTw8MzEpIHwgMTk3LCAoMVU8PDMxKSB8IDE4MCwgKDFVPDwzMSkgfCAxOTksICgxVTw8MzEpIHwgMTc4LCAoMVU8PDMxKSB8IDE5NywgKDFVPDwzMSkgfCAxNzgsICgxVTw8MzEpIHwgMTk3LCAKLSAgKDFVPDwzMSkgfCA5OTQsICgxVTw8MzEpIHwgMTAwMiwgKDFVPDwzMSkgfCA5OTQsICgxVTw8MzEpIHwgMTAwMiwgKDFVPDwzMSkgfCAxNzgsICgxVTw8MzEpIHwgMTk3LCAoMVU8PDMxKSB8IDE3OCwgKDFVPDwzMSkgfCAxOTcsIAotICAoMVU8PDMxKSB8IDE3OCwgKDFVPDwzMSkgfCAxOTcsICgxVTw8MzEpIHwgNDA4MywgKDFVPDwzMSkgfCA0MTg4LCAoMVU8PDMxKSB8IDQwODMsICgxVTw8MzEpIHwgNDE4OCwgKDFVPDwzMSkgfCA0MDgzLCAoMVU8PDMxKSB8IDQxODgsIAotICAoMVU8PDMxKSB8IDQwODMsICgxVTw8MzEpIHwgNDE4OCwgMHg0YzRjLCAweDRkNGQsIDB4NGM0YywgMHg0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIAotICAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGMsIDB4NGQ0ZCwgCi0gIDB4NGM0YywgMHg0ZDRkLCAweDRjNGMsIDB4NGQ0ZCwgMHg0YzRjLCAweDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgCi0gIDB4NGQ0ZDRkLCAoMVU8PDMxKSB8IDQzNjYsICgxVTw8MzEpIHwgNDExMCwgKDFVPDwzMSkgfCA0MjI1LCAoMVU8PDMxKSB8IDQxMTAsICgxVTw8MzEpIHwgNDIyNSwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAKLSAgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDM2NiwgKDFVPDwzMSkgfCAxODUsICgxVTw8MzEpIHwgMjA0LCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgCi0gIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDM2NiwgKDFVPDwzMSkgfCA0MTEwLCAoMVU8PDMxKSB8IDQyMjUsICgxVTw8MzEpIHwgNDExMCwgKDFVPDwzMSkgfCA0MjI1LCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRkNGQ0ZCwgKDFVPDwzMSkgfCA0MzY2LCAweDRjNGM0ZCwgKDFVPDwzMSkgfCA0MjU1LCAweDRjNGM0ZDRkLCAoMVU8PDMxKSB8IDQyNTMsIAotICAweDRjNGM0ZCwgKDFVPDwzMSkgfCA0MjU1LCAweDRjNGM0ZDRkLCAoMVU8PDMxKSB8IDQyNTMsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDM2NiwgCi0gIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRkNGQ0ZCwgKDFVPDwzMSkgfCA0MzY2LCAweDRjNGM0ZCwgKDFVPDwzMSkgfCA0MjU1LCAKLSAgMHg0YzRjNGQ0ZCwgKDFVPDwzMSkgfCA0MjUzLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGQ0ZDRkLCAoMVU8PDMxKSB8IDQzNjYsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgCi0gIDB4NGQ0ZDRkLCAoMVU8PDMxKSB8IDQzNjYsICgxVTw8MzEpIHwgNDExMCwgKDFVPDwzMSkgfCA0MjI1LCAoMVU8PDMxKSB8IDQxMTAsICgxVTw8MzEpIHwgNDIyNSwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAKLSAgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDM2NiwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIAotICAoMVU8PDMxKSB8IDk5MiwgKDFVPDwzMSkgfCAxMDAwLCAoMVU8PDMxKSB8IDk5MCwgKDFVPDwzMSkgfCA5OTgsICgxVTw8MzEpIHwgOTkyLCAoMVU8PDMxKSB8IDEwMDAsICgxVTw8MzEpIHwgOTkwLCAoMVU8PDMxKSB8IDk5OCwgCi0gICgxVTw8MzEpIHwgNDA3NiwgKDFVPDwzMSkgfCA0MTgxLCAoMVU8PDMxKSB8IDQwNzYsICgxVTw8MzEpIHwgNDE4MSwgKDFVPDwzMSkgfCAzNTQxLCAoMVU8PDMxKSB8IDM1NzksICgxVTw8MzEpIHwgMzUzOSwgKDFVPDwzMSkgfCAzNTc3LCAKLSAgMHg0NGM0YywgMHg0NGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0NGM0YywgMHg0NGQ0ZCwgCi0gIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NDRjNGMsIDB4NDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAKLSAgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIAotICAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIAotICAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0NGM0YywgMHg0NGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAKLSAgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIAotICAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YywgMHg0ZDRkLCAweDRkNGQsICgxVTw8MzEpIHwgNDM2OCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjLCAweDRkNGQsIAotICAweDRjNGMsIDB4NGQ0ZCwgMHg0YzRjNGQsICgxVTw8MzEpIHwgNDI1NSwgMHg0YywgMHg0ZCwgMHg0ZCwgKDFVPDwzMSkgfCA0MzUwLCAKLSAgMHg0YzRjLCAweDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjLCAweDRkNGQsIDB4NDRjNGM0ZCwgKDFVPDwzMSkgfCAzNTk3LCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDQ0YzRjLCAweDQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0NGQ0ZCwgKDFVPDwzMSkgfCAzNjcwLCAKLSAgMHg0NGQ0ZDRkLCAoMVU8PDMxKSB8IDM2NjgsIDB4NDRjNGMsIDB4NDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDQ0ZDRkLCAoMVU8PDMxKSB8IDM2NzAsIAotICAweDQ0ZDRkNGQsICgxVTw8MzEpIHwgMzY2OCwgMHg0NGQ0YywgKDFVPDwzMSkgfCAzNjYyLCAweDQ0ZDRjNGMsICgxVTw8MzEpIHwgMzY2MCwgMHg0NGM0YywgMHg0NGQ0ZCwgCi0gIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDQ0ZDRjLCAoMVU8PDMxKSB8IDM2NjIsIDB4NDRkNGM0YywgKDFVPDwzMSkgfCAzNjYwLCAweDQ0YzRjLCAweDQ0ZDRkLCAKLSAgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGM0YywgMHg0ZDRkNGQ0ZCwgMHg0NGQ0ZCwgKDFVPDwzMSkgfCAzNjcwLCAKLSAgMHg0NGQ0ZDRkLCAoMVU8PDMxKSB8IDM2NjgsICgxVTw8MzEpIHwgNDEwMywgKDFVPDwzMSkgfCA0MjE4LCAoMVU8PDMxKSB8IDQxMDEsICgxVTw8MzEpIHwgNDIxNiwgKDFVPDwzMSkgfCA0MTAxLCAoMVU8PDMxKSB8IDQyMTYsIAotICAoMVU8PDMxKSB8IDQxMDEsICgxVTw8MzEpIHwgNDIxNiwgKDFVPDwzMSkgfCA0MTAzLCAoMVU8PDMxKSB8IDQyMTgsICgxVTw8MzEpIHwgNDEwMSwgKDFVPDwzMSkgfCA0MjE2LCAoMVU8PDMxKSB8IDQxMDEsICgxVTw8MzEpIHwgNDIxNiwgCi0gICgxVTw8MzEpIHwgNDEwMSwgKDFVPDwzMSkgfCA0MjE2LCAoMVU8PDMxKSB8IDQxMDMsICgxVTw8MzEpIHwgNDIxOCwgKDFVPDwzMSkgfCA0MTAxLCAoMVU8PDMxKSB8IDQyMTYsICgxVTw8MzEpIHwgNDEwMSwgKDFVPDwzMSkgfCA0MjE2LCAKLSAgKDFVPDwzMSkgfCA0MTAxLCAoMVU8PDMxKSB8IDQyMTYsIDB4NGM0NDJlMCwgMHg0ZDQ0MmUwLCAoMVU8PDMxKSB8IDQwOTEsICgxVTw8MzEpIHwgNDIwNiwgMHg0ZDQ0MmUwLCAoMVU8PDMxKSB8IDQzNTMsIAotICAoMVU8PDMxKSB8IDQxOTYsICgxVTw8MzEpIHwgNDM0MywgMHg0YzQ0MmUwLCAweDRkNDQyZTAsICgxVTw8MzEpIHwgNDA5MSwgKDFVPDwzMSkgfCA0MjA2LCAoMVU8PDMxKSB8IDQxMDMsICgxVTw8MzEpIHwgNDIxOCwgCi0gICgxVTw8MzEpIHwgNDEwMSwgKDFVPDwzMSkgfCA0MjE2LCAoMVU8PDMxKSB8IDQxMDEsICgxVTw8MzEpIHwgNDIxNiwgKDFVPDwzMSkgfCA0MTAxLCAoMVU8PDMxKSB8IDQyMTYsICgxVTw8MzEpIHwgNDEwMywgKDFVPDwzMSkgfCA0MjE4LCAKLSAgKDFVPDwzMSkgfCA0MTAxLCAoMVU8PDMxKSB8IDQyMTYsICgxVTw8MzEpIHwgNDEwMSwgKDFVPDwzMSkgfCA0MjE2LCAoMVU8PDMxKSB8IDQxMDEsICgxVTw8MzEpIHwgNDIxNiwgKDFVPDwzMSkgfCA0MTAzLCAoMVU8PDMxKSB8IDQyMTgsIAotICAoMVU8PDMxKSB8IDQxMDEsICgxVTw8MzEpIHwgNDIxNiwgKDFVPDwzMSkgfCA0MTAxLCAoMVU8PDMxKSB8IDQyMTYsICgxVTw8MzEpIHwgNDEwMSwgKDFVPDwzMSkgfCA0MjE2LCAoMVU8PDMxKSB8IDQxMDMsICgxVTw8MzEpIHwgNDIxOCwgCi0gICgxVTw8MzEpIHwgNDEwMSwgKDFVPDwzMSkgfCA0MjE2LCAoMVU8PDMxKSB8IDQxMDEsICgxVTw8MzEpIHwgNDIxNiwgKDFVPDwzMSkgfCA0MTAxLCAoMVU8PDMxKSB8IDQyMTYsICgxVTw8MzEpIHwgNDEwMywgKDFVPDwzMSkgfCA0MjE4LCAKLSAgKDFVPDwzMSkgfCA0MTAxLCAoMVU8PDMxKSB8IDQyMTYsICgxVTw8MzEpIHwgNDEwMSwgKDFVPDwzMSkgfCA0MjE2LCAoMVU8PDMxKSB8IDQxMDEsICgxVTw8MzEpIHwgNDIxNiwgKDFVPDwzMSkgfCA0MTAzLCAoMVU8PDMxKSB8IDQyMTgsIAotICAoMVU8PDMxKSB8IDQxMDEsICgxVTw8MzEpIHwgNDIxNiwgKDFVPDwzMSkgfCA0MTAxLCAoMVU8PDMxKSB8IDQyMTYsICgxVTw8MzEpIHwgNDEwMSwgKDFVPDwzMSkgfCA0MjE2LCAweDQ0YzRjLCAweDQ0ZDRkLCAKLSAgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDQ0YzRjLCAweDQ0ZDRkLCAweDQ0YzRjLCAweDQ0ZDRkLCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDQ0YzRjLCAweDQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NTRjNGMsIDB4NTRkNGQsIAotICAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsICgxVTw8MzEpIHwgMzU1NywgKDFVPDwzMSkgfCAzNTg1LCAoMVU8PDMxKSB8IDM1NTcsICgxVTw8MzEpIHwgMzU4NSwgCi0gIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDQ0YzRjNGQsICgxVTw8MzEpIHwgMzU5NywgMHg0NGM0YzRkLCAoMVU8PDMxKSB8IDM1OTcsICgxVTw8MzEpIHwgMzU2NywgKDFVPDwzMSkgfCAzNTk1LCAKLSAgKDFVPDwzMSkgfCAzNTY3LCAoMVU8PDMxKSB8IDM1OTUsIDB4NDRjNGM0ZCwgKDFVPDwzMSkgfCAzNTk3LCAoMVU8PDMxKSB8IDQwODMsICgxVTw8MzEpIHwgNDE4OCwgKDFVPDwzMSkgfCA0MDgzLCAoMVU8PDMxKSB8IDQxODgsIAotICAoMVU8PDMxKSB8IDQwODMsICgxVTw8MzEpIHwgNDE4OCwgKDFVPDwzMSkgfCA0MDgzLCAoMVU8PDMxKSB8IDQxODgsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAKLSAgMHg0NGQ0ZCwgKDFVPDwzMSkgfCAzNjcwLCAweDQ0ZDRkNGQsICgxVTw8MzEpIHwgMzY2OCwgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDM2NiwgMHg0NGQ0ZCwgKDFVPDwzMSkgfCAzNjcwLCAKLSAgMHg0NGQ0ZDRkLCAoMVU8PDMxKSB8IDM2NjgsIDB4NGQ0ZDRkLCAoMVU8PDMxKSB8IDQzNjYsIDB4NDRkNGQsICgxVTw8MzEpIHwgMzY3MCwgMHg0NGQ0ZDRkLCAoMVU8PDMxKSB8IDM2NjgsIAotICAweDU0YzRjNGMsIDB4NTRkNGQ0ZCwgMHg0NGQ0ZCwgKDFVPDwzMSkgfCAzNjcwLCAweDQ0ZDRkNGQsICgxVTw8MzEpIHwgMzY2OCwgMHg1NGM0YzRjLCAweDU0ZDRkNGQsIAotICAweDU0YzRjNGMsIDB4NTRkNGQ0ZCwgMHg0NGM0ZCwgKDFVPDwzMSkgfCAzNjA3LCAweDQ0YzRkNGQsICgxVTw8MzEpIHwgMzYwNSwgMHg0YzRjNGQsICgxVTw8MzEpIHwgNDI1NSwgCi0gIDB4NGM0YzRkNGQsICgxVTw8MzEpIHwgNDI1MywgMHg0YzRjNGQsICgxVTw8MzEpIHwgNDI1NSwgMHg0YzRjNGQ0ZCwgKDFVPDwzMSkgfCA0MjUzLCAweDRjNGM0YywgMHg0ZDRkNGQsIAotICAweDRjNGM0ZCwgKDFVPDwzMSkgfCA0MjU1LCAweDQ0YzRkLCAoMVU8PDMxKSB8IDM2MDcsIDB4NDRjNGQ0ZCwgKDFVPDwzMSkgfCAzNjA1LCAweDQ0YzRkNGQsICgxVTw8MzEpIHwgMzYwNSwgCi0gIDB4NDRjNGMsIDB4NDRkNGQsIDB4NDRjNGMsIDB4NDRkNGQsIDB4NGM0YzRkLCAoMVU8PDMxKSB8IDQyNTUsIDB4NGM0YzRkNGQsICgxVTw8MzEpIHwgNDI1MywgCi0gIDB4NGM0YzRkLCAoMVU8PDMxKSB8IDQyNTUsIDB4NGM0YzRkNGQsICgxVTw8MzEpIHwgNDI1MywgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIAotICAweDRjNGM0YzRjLCAweDRkNGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjNGMsIDB4NGQ0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgCi0gIDB4NGM0YzRjNGMsIDB4NGQ0ZDRkNGQsIDB4NDRjNGMsIDB4NDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIAotICAweDQ0YzRjLCAweDQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0NGM0YywgMHg0NGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIAotICAweDQ0YzRjLCAweDQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0ZDRkLCAoMVU8PDMxKSB8IDQyNTMsIAotICAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjNGMsIDB4NGQ0ZDRkNGQsIDB4NGM0YzRjNGMsIDB4NGQ0ZDRkNGQsIDB4NDRjNGQsICgxVTw8MzEpIHwgMzYwNywgCi0gIDB4NDRjNGQ0ZCwgKDFVPDwzMSkgfCAzNjA1LCAweDRjNGM0ZCwgKDFVPDwzMSkgfCA0MjU1LCAweDRjNGM0ZDRkLCAoMVU8PDMxKSB8IDQyNTMsIDB4NDRjNGQsICgxVTw8MzEpIHwgMzYwNywgCi0gIDB4NDRjNGQ0ZCwgKDFVPDwzMSkgfCAzNjA1LCAweDQ0YzRjLCAweDQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0YzRjNGQsICgxVTw8MzEpIHwgNDI1NSwgCi0gIDB4NGM0YzRkNGQsICgxVTw8MzEpIHwgNDI1MywgKDFVPDwzMSkgfCA0MTEwLCAoMVU8PDMxKSB8IDQyMjUsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YywgMHg0ZDRkLCAweDRjNGMsIDB4NGQ0ZCwgCi0gIDB4NGM0YywgMHg0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YywgMHg0ZDRkLCAoMVU8PDMxKSB8IDE5MiwgKDFVPDwzMSkgfCAyMTEsIAotICAoMVU8PDMxKSB8IDE5MiwgKDFVPDwzMSkgfCAyMTEsICgxVTw8MzEpIHwgMTkyLCAoMVU8PDMxKSB8IDIxMSwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDU0YzRkLCAoMVU8PDMxKSB8IDQ0MTUsIAotICAweDU0YzRkNGQsICgxVTw8MzEpIHwgNDQxMywgMHg0NGM0YywgMHg0NGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NDQ0ZDRkLCAoMVU8PDMxKSB8IDMzMzYsIAotICAweDQ0NGQ0ZDRkLCAoMVU8PDMxKSB8IDMzMzQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGM0YywgMHg0ZDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAKLSAgMHg0YzRjNGM0YywgMHg0ZDRkNGQ0ZCwgMHg0NGM0YywgMHg0NGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NTRjNGQsICgxVTw8MzEpIHwgNDQxNSwgCi0gIDB4NTRjNGQ0ZCwgKDFVPDwzMSkgfCA0NDEzLCAweDQ0NGQ0ZCwgKDFVPDwzMSkgfCAzMzM2LCAweDQ0NGQ0ZDRkLCAoMVU8PDMxKSB8IDMzMzQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgCi0gIDB4NGM0YzRjNGMsIDB4NGQ0ZDRkNGQsIDB4NDRjNGMsIDB4NDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAKLSAgMHg0NDRkNGQsICgxVTw8MzEpIHwgMzMzNiwgMHg0NDRkNGQ0ZCwgKDFVPDwzMSkgfCAzMzM0LCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgCi0gIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRkLCAoMVU8PDMxKSB8IDQyNjUsIDB4NGM0YzQ0MCwgMHg0ZDRkNDQwLCAweDRjNGM0NDAsIDB4NGQ0ZDQ0MCwgCi0gICgxVTw8MzEpIHwgNDEyOCwgKDFVPDwzMSkgfCA0MjQzLCAweDRjNGQ0NDAsICgxVTw8MzEpIHwgNDI2MiwgMHg0YzRkNDQwLCAoMVU8PDMxKSB8IDQyNjIsICgxVTw8MzEpIHwgNDEzOCwgKDFVPDwzMSkgfCA0MjcwLCAKLSAgMHg0YzRjNDQwLCAweDRkNGQ0NDAsIDB4NGM0YzQ0MCwgMHg0ZDRkNDQwLCAoMVU8PDMxKSB8IDQxMjgsICgxVTw8MzEpIHwgNDI0MywgMHg0YzRkLCAoMVU8PDMxKSB8IDQyNjUsIAotICAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YywgMHg0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YywgMHg0ZDRkLCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDQ0YzRjNGQsICgxVTw8MzEpIHwgMzU5NywgMHg0YzRjNGQsICgxVTw8MzEpIHwgNDI1NSwgMHg0YzRjNGQsICgxVTw8MzEpIHwgNDI1NSwgCi0gIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRkNGQ0ZCwgKDFVPDwzMSkgfCA0MzY2LCAoMVU8PDMxKSB8IDQxMTAsICgxVTw8MzEpIHwgNDIyNSwgCi0gICgxVTw8MzEpIHwgNDExMCwgKDFVPDwzMSkgfCA0MjI1LCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGQ0ZDRkLCAoMVU8PDMxKSB8IDQzNjYsICgxVTw8MzEpIHwgMTg1LCAoMVU8PDMxKSB8IDIwNCwgCi0gIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDM2NiwgKDFVPDwzMSkgfCA0MTEwLCAoMVU8PDMxKSB8IDQyMjUsICgxVTw8MzEpIHwgNDExMCwgKDFVPDwzMSkgfCA0MjI1LCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRkNGQ0ZCwgKDFVPDwzMSkgfCA0MzY2LCAweDRjNGM0ZCwgKDFVPDwzMSkgfCA0MjU1LCAweDRjNGM0ZCwgKDFVPDwzMSkgfCA0MjU1LCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRkNGQ0ZCwgKDFVPDwzMSkgfCA0MzY2LCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgCi0gIDB4NGQ0ZDRkLCAoMVU8PDMxKSB8IDQzNjYsIDB4NGM0YzRkLCAoMVU8PDMxKSB8IDQyNTUsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDM2NiwgCi0gIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDM2NiwgKDFVPDwzMSkgfCA0MTEwLCAoMVU8PDMxKSB8IDQyMjUsICgxVTw8MzEpIHwgNDExMCwgKDFVPDwzMSkgfCA0MjI1LCAKLSAgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRkNGQ0ZCwgKDFVPDwzMSkgfCA0MzY2LCAoMVU8PDMxKSB8IDQxMTksICgxVTw8MzEpIHwgNDIzNCwgMHg0NGQ0ZCwgKDFVPDwzMSkgfCAzNjcwLCAKLSAgMHg0NGQ0ZDRkLCAoMVU8PDMxKSB8IDM2NjgsIDB4NDRkNGQsICgxVTw8MzEpIHwgMzY3MCwgMHg0NGQ0ZDRkLCAoMVU8PDMxKSB8IDM2NjgsIDB4NDRkNGQsICgxVTw8MzEpIHwgMzY3MCwgCi0gIDB4NDRkNGQ0ZCwgKDFVPDwzMSkgfCAzNjY4LCAweDRjNGQsICgxVTw8MzEpIHwgNDI2NSwgMHg0YzRkLCAoMVU8PDMxKSB8IDQyNjUsIDB4NGM0ZDRkLCAoMVU8PDMxKSB8IDQyODAsIAotICAweDRjNGQ0ZCwgKDFVPDwzMSkgfCA0MjgwLCAweDRjNGQsICgxVTw8MzEpIHwgNDI2NSwgMHg0YzRkLCAoMVU8PDMxKSB8IDQyNjUsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgCi0gIDB4NGM0ZCwgKDFVPDwzMSkgfCA0MjY1LCAweDRjNGQsICgxVTw8MzEpIHwgNDI2NSwgMHgyZTAsIDB4MmUwLCAweDJlMCwgMHgyZTAsIAotICAweDQyZTAsIDB4NTJlMCwgMHg0NDJlMmUyZSwgMHg0NDJlMmUyZSwgMHg0NDJlMmUyZSwgMHg0NDJlMmUyZSwgMHg0NDJlMmUyZSwgMHg0NDJlMmUyZSwgCi0gIDB4NDQ0MmUyZSwgMHg0NDUyZTJlLCAweDQ0NDJlMmUsIDB4NDQ0MmUyZSwgMHg0NDQyZTJlLCAweDRiNGI0YiwgMHgyZTAsIDB4MzkzOSwgCi0gIDB4MmEyYSwgMHg0NCwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MzkzOTM5LCAweDM5MzkzOSwgCi0gIDB4NDQ0LCAweDM5MzkzOSwgMHgzOTM5MzksIDB4NDQ0LCAweDQ0NCwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgCi0gIDB4NGE0YTRhLCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgCi0gIDB4NGE0YTRhLCAweDQ0NCwgMHgzOTM5MzksIDB4MmEyYTJhLCAweDM5MzkzOSwgMHgyYTJhMmEsIDB4MmEyYTJhLCAweDJhMmEyYSwgCisgIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDU1LCAweDQ1NSwgMHg0NTUsIDB4NDU1NSwgMHg0NTU1LCAKKyAgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgCisgIDB4NDU1LCAweDQ1NSwgMHg0NDQsIDB4NDQ1LCAweDU1NCwgMHg0NDQsIDB4NDQ0LCAweDU1NSwgCisgIDB4NTU1LCAweDU1NSwgMHg1NTUsIDB4NDQyZTJlLCAoMVU8PDMxKSB8IDcyNiwgMHgyZTQ0MmUyZSwgMHg0NTJlMmUsICgxVTw8MzEpIHwgNzQyLCAKKyAgMHgyZTU0MmUyZSwgMHg0NDJlMmUsICgxVTw8MzEpIHwgNzI2LCAweDJlNDQyZTJlLCAweDQ0MmUyZSwgKDFVPDwzMSkgfCA3MjYsIDB4MmU0NDJlMmUsIDB4NDQyZTJlLCAKKyAgKDFVPDwzMSkgfCA3MjYsIDB4MmU0NDJlMmUsIDB4NDRlNCwgMHg0NCwgMHg0NCwgMHg0NDQ0NCwgMHg0NDQ0NCwgMHg0NDQ0NCwgCisgIDB4NDQ0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAweDQ1NTUsIDB4NDU1NSwgMHg0NTUsIAorICAweDQ1NSwgMHg0NTU1LCAweDU0LCAweDU0LCAweDU0LCAweDU1LCAweDU0LCAweDU1LCAKKyAgMHg1NCwgMHg1NSwgMHg1NCwgMHg1NSwgMHg0NCwgMHg0NSwgMHg0NTU1LCAweDQ1NTUsIAorICAweDQ1LCAweDQ1LCAweDU0LCAweDU1NSwgMHg1NCwgMHg1NTUsIDB4NDUsIDB4NDUsIAorICAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQsIDB4NDU0LCAweDU0LCAKKyAgMHg0NDQ0LCAweDU0NCwgMHg0NDU1LCAweDU1NSwgMHg0NDQsIDB4NDQ0LCAweDQ0NCwgMHg0NDQ0LCAKKyAgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NCwgMHg1NWU0LCAweDQ0NDQsIDB4NDQ0NCwgCisgIDB4NDQ0NCwgMHg0NDU1LCAweDQ0NTU1LCAweDU1NSwgMHg1NTUsIDB4NTU1LCAweDU1NSwgMHg1NTUsIAorICAweDU1NSwgMHg0NTQsIDB4NDU0LCAweDU0LCAweDQ1NSwgMHg0NTUsIDB4NDU1NSwgMHg0NTU1LCAKKyAgMHg0NTU1LCAweDQ1NTUsIDB4NDU1NSwgMHg0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQ0NCwgCisgIDB4NDQ0NCwgMHg0NSwgMHg1NTUsIDB4NTU1LCAweDQ0YzQsIDB4NDRkNCwgMHg0ZDRjLCAoMVU8PDMxKSB8IDQ5MTMsIAorICAweDQ0YywgMHg0NGQsIDB4NDQ0YywgMHg0NDRkLCAweDQ0NGMsIDB4NDQ0ZCwgMHg0NDRjLCAweDQ0NGQsIAorICAweDQ0NGMsIDB4NDQ0ZCwgMHg0NDRjLCAweDQ0NGQsIDB4NDQ0YywgMHg0NDRkLCAweDQ0YywgMHg0NGQsIAorICAweDQ0YywgMHg0NDRjLCAweDQ0NGQsIDB4NDQ0YywgMHg0NDRkLCAweDQ0NGMsIDB4NDQ0ZCwgMHg0NDRjLCAKKyAgMHg0NDRkLCAweDQ0NGMsIDB4NDQ0ZCwgMHg0NDRjLCAweDQ0NGQsIDB4NDRjLCAweDQ0ZCwgMHg0ZDRjLCAKKyAgKDFVPDwzMSkgfCA0OTEzLCAweDQ0YywgMHg0NGQsIDB4NDRjLCAweDQ0ZCwgMHg0NGMsIDB4NDRkLCAoMVU8PDMxKSB8IDIwMiwgCisgICgxVTw8MzEpIHwgMjMwLCAoMVU8PDMxKSB8IDIwMiwgKDFVPDwzMSkgfCAyMzAsICgxVTw8MzEpIHwgMjA0LCAoMVU8PDMxKSB8IDIzMiwgKDFVPDwzMSkgfCAyMDIsICgxVTw8MzEpIHwgMjMwLCAoMVU8PDMxKSB8IDIwMiwgCisgICgxVTw8MzEpIHwgMjMwLCAoMVU8PDMxKSB8IDEyNDEsICgxVTw8MzEpIHwgMTI0OSwgKDFVPDwzMSkgfCAxMjQxLCAoMVU8PDMxKSB8IDEyNDksICgxVTw8MzEpIHwgMjAyLCAoMVU8PDMxKSB8IDIzMCwgKDFVPDwzMSkgfCAyMDIsIAorICAoMVU8PDMxKSB8IDIzMCwgKDFVPDwzMSkgfCAyMDIsICgxVTw8MzEpIHwgMjMwLCAoMVU8PDMxKSB8IDQ2MzUsICgxVTw8MzEpIHwgNDc0MCwgKDFVPDwzMSkgfCA0NjM1LCAoMVU8PDMxKSB8IDQ3NDAsICgxVTw8MzEpIHwgNDYzNSwgCisgICgxVTw8MzEpIHwgNDc0MCwgKDFVPDwzMSkgfCA0NjM1LCAoMVU8PDMxKSB8IDQ3NDAsIDB4NGM0YywgMHg0ZDRkLCAweDRjNGMsIDB4NGQ0ZCwgMHg0YzRjNGMsIAorICAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjLCAKKyAgMHg0ZDRkLCAweDRjNGMsIDB4NGQ0ZCwgMHg0YzRjLCAweDRkNGQsIDB4NGM0YywgMHg0ZDRkLCAweDRjNGM0YywgCisgIDB4NGQ0ZDRkLCAweDRkNGQ0ZCwgKDFVPDwzMSkgfCA0OTE4LCAoMVU8PDMxKSB8IDQ2NjIsICgxVTw8MzEpIHwgNDc3NywgKDFVPDwzMSkgfCA0NjYyLCAoMVU8PDMxKSB8IDQ3NzcsIDB4NGM0YzRjLCAKKyAgMHg0ZDRkNGQsIDB4NGQ0ZDRkLCAoMVU8PDMxKSB8IDQ5MTgsICgxVTw8MzEpIHwgMjA5LCAoMVU8PDMxKSB8IDIzNywgKDFVPDwzMSkgfCAyMjEsICgxVTw8MzEpIHwgMjQ5LCAweDRjNGM0YywgCisgIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDkxOCwgKDFVPDwzMSkgfCA0NjYyLCAKKyAgKDFVPDwzMSkgfCA0Nzc3LCAoMVU8PDMxKSB8IDQ2NjIsICgxVTw8MzEpIHwgNDc3NywgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRkNGQ0ZCwgKDFVPDwzMSkgfCA0OTE4LCAweDRjNGM0ZCwgCisgICgxVTw8MzEpIHwgNDgwNywgMHg0YzRjNGQ0ZCwgKDFVPDwzMSkgfCA0ODA1LCAweDRjNGM0ZCwgKDFVPDwzMSkgfCA0ODA3LCAweDRjNGM0ZDRkLCAoMVU8PDMxKSB8IDQ4MDUsIDB4NGM0YzRjLCAKKyAgMHg0ZDRkNGQsIDB4NGQ0ZDRkLCAoMVU8PDMxKSB8IDQ5MTgsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRkNGQ0ZCwgCisgICgxVTw8MzEpIHwgNDkxOCwgMHg0YzRjNGQsICgxVTw8MzEpIHwgNDgwNywgMHg0YzRjNGQ0ZCwgKDFVPDwzMSkgfCA0ODA1LCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGQ0ZDRkLCAKKyAgKDFVPDwzMSkgfCA0OTE4LCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGQ0ZDRkLCAoMVU8PDMxKSB8IDQ5MTgsICgxVTw8MzEpIHwgNDY2MiwgKDFVPDwzMSkgfCA0Nzc3LCAoMVU8PDMxKSB8IDQ2NjIsIAorICAoMVU8PDMxKSB8IDQ3NzcsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDkxOCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NDRjNGM0YywgCisgIDB4NDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAoMVU8PDMxKSB8IDEyMzksICgxVTw8MzEpIHwgMTI0NywgKDFVPDwzMSkgfCAxMjM3LCAoMVU8PDMxKSB8IDEyNDUsICgxVTw8MzEpIHwgMTIzOSwgCisgICgxVTw8MzEpIHwgMTI0NywgKDFVPDwzMSkgfCAxMjM3LCAoMVU8PDMxKSB8IDEyNDUsICgxVTw8MzEpIHwgNDYyOCwgKDFVPDwzMSkgfCA0NzMzLCAoMVU8PDMxKSB8IDQ2MjgsICgxVTw8MzEpIHwgNDczMywgKDFVPDwzMSkgfCAzODc1LCAKKyAgKDFVPDwzMSkgfCAzOTI1LCAoMVU8PDMxKSB8IDM4NzMsICgxVTw8MzEpIHwgMzkyMywgMHg0NGM0YywgMHg0NGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NGM0YzRjLCAKKyAgMHg0ZDRkNGQsIDB4NDRjNGMsIDB4NDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRkNGQsIAorICAoMVU8PDMxKSB8IDQ4MDUsIDB4NDRjNGMsIDB4NDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0NGM0YzRjLCAKKyAgMHg0NGQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0NGM0YzRjLCAKKyAgMHg0NGQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDQ0YzRjLCAKKyAgMHg0NGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0NGM0YzRjLCAKKyAgMHg0NGQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjLCAKKyAgMHg0ZDRkLCAweDRkNGQsICgxVTw8MzEpIHwgNDkyMCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAKKyAgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAKKyAgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAKKyAgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjLCAweDRkNGQsIDB4NGM0YywgMHg0ZDRkLCAweDRjNGM0ZCwgCisgICgxVTw8MzEpIHwgNDgwNywgMHg0YywgMHg0ZCwgMHg0ZCwgKDFVPDwzMSkgfCA0OTAyLCAweDRjNGMsIDB4NGQ0ZCwgMHg0YzRjNGMsIAorICAweDRkNGQ0ZCwgMHg0YzRjLCAweDRkNGQsIDB4NDRjNGM0ZCwgKDFVPDwzMSkgfCAzOTQ0LCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NDRjNGMsIAorICAweDQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0NGQ0ZCwgKDFVPDwzMSkgfCA0MDE3LCAweDQ0ZDRkNGQsICgxVTw8MzEpIHwgNDAxNSwgMHg0NGM0YywgCisgIDB4NDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDQ0ZDRkLCAoMVU8PDMxKSB8IDQwMTcsIDB4NDRkNGQ0ZCwgKDFVPDwzMSkgfCA0MDE1LCAweDQ0ZDRjLCAKKyAgKDFVPDwzMSkgfCA0MDA5LCAweDQ0ZDRjNGMsICgxVTw8MzEpIHwgNDAwNywgMHg0NGM0YywgMHg0NGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NDRkNGMsIAorICAoMVU8PDMxKSB8IDQwMDksIDB4NDRkNGM0YywgKDFVPDwzMSkgfCA0MDA3LCAweDQ0YzRjLCAweDQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0YzRjNGMsIAorICAweDRkNGQ0ZCwgMHg0YzRjNGM0YywgMHg0ZDRkNGQ0ZCwgMHg0NGQ0ZCwgKDFVPDwzMSkgfCA0MDE3LCAweDQ0ZDRkNGQsICgxVTw8MzEpIHwgNDAxNSwgKDFVPDwzMSkgfCA0NjU1LCAKKyAgKDFVPDwzMSkgfCA0NzcwLCAoMVU8PDMxKSB8IDQ2NTMsICgxVTw8MzEpIHwgNDc2OCwgKDFVPDwzMSkgfCA0NjUzLCAoMVU8PDMxKSB8IDQ3NjgsICgxVTw8MzEpIHwgNDY1MywgKDFVPDwzMSkgfCA0NzY4LCAoMVU8PDMxKSB8IDQ2NTUsIAorICAoMVU8PDMxKSB8IDQ3NzAsICgxVTw8MzEpIHwgNDY1MywgKDFVPDwzMSkgfCA0NzY4LCAoMVU8PDMxKSB8IDQ2NTMsICgxVTw8MzEpIHwgNDc2OCwgKDFVPDwzMSkgfCA0NjUzLCAoMVU8PDMxKSB8IDQ3NjgsICgxVTw8MzEpIHwgNDY1NSwgCisgICgxVTw8MzEpIHwgNDc3MCwgKDFVPDwzMSkgfCA0NjUzLCAoMVU8PDMxKSB8IDQ3NjgsICgxVTw8MzEpIHwgNDY1MywgKDFVPDwzMSkgfCA0NzY4LCAoMVU8PDMxKSB8IDQ2NTMsICgxVTw8MzEpIHwgNDc2OCwgMHg0YzQ0MmUwLCAKKyAgMHg0ZDQ0MmUwLCAoMVU8PDMxKSB8IDQ2NDMsICgxVTw8MzEpIHwgNDc1OCwgMHg0ZDQ0MmUwLCAoMVU8PDMxKSB8IDQ5MDUsICgxVTw8MzEpIHwgNDc0OCwgKDFVPDwzMSkgfCA0ODk1LCAweDRjNDQyZTAsIAorICAweDRkNDQyZTAsICgxVTw8MzEpIHwgNDY0MywgKDFVPDwzMSkgfCA0NzU4LCAoMVU8PDMxKSB8IDQ2NTUsICgxVTw8MzEpIHwgNDc3MCwgKDFVPDwzMSkgfCA0NjUzLCAoMVU8PDMxKSB8IDQ3NjgsICgxVTw8MzEpIHwgNDY1MywgCisgICgxVTw8MzEpIHwgNDc2OCwgKDFVPDwzMSkgfCA0NjUzLCAoMVU8PDMxKSB8IDQ3NjgsICgxVTw8MzEpIHwgNDY1NSwgKDFVPDwzMSkgfCA0NzcwLCAoMVU8PDMxKSB8IDQ2NTMsICgxVTw8MzEpIHwgNDc2OCwgKDFVPDwzMSkgfCA0NjUzLCAKKyAgKDFVPDwzMSkgfCA0NzY4LCAoMVU8PDMxKSB8IDQ2NTMsICgxVTw8MzEpIHwgNDc2OCwgKDFVPDwzMSkgfCA0NjU1LCAoMVU8PDMxKSB8IDQ3NzAsICgxVTw8MzEpIHwgNDY1MywgKDFVPDwzMSkgfCA0NzY4LCAoMVU8PDMxKSB8IDQ2NTMsIAorICAoMVU8PDMxKSB8IDQ3NjgsICgxVTw8MzEpIHwgNDY1MywgKDFVPDwzMSkgfCA0NzY4LCAoMVU8PDMxKSB8IDQ2NTUsICgxVTw8MzEpIHwgNDc3MCwgKDFVPDwzMSkgfCA0NjUzLCAoMVU8PDMxKSB8IDQ3NjgsICgxVTw8MzEpIHwgNDY1MywgCisgICgxVTw8MzEpIHwgNDc2OCwgKDFVPDwzMSkgfCA0NjUzLCAoMVU8PDMxKSB8IDQ3NjgsICgxVTw8MzEpIHwgNDY1NSwgKDFVPDwzMSkgfCA0NzcwLCAoMVU8PDMxKSB8IDQ2NTMsICgxVTw8MzEpIHwgNDc2OCwgKDFVPDwzMSkgfCA0NjUzLCAKKyAgKDFVPDwzMSkgfCA0NzY4LCAoMVU8PDMxKSB8IDQ2NTMsICgxVTw8MzEpIHwgNDc2OCwgKDFVPDwzMSkgfCA0NjU1LCAoMVU8PDMxKSB8IDQ3NzAsICgxVTw8MzEpIHwgNDY1MywgKDFVPDwzMSkgfCA0NzY4LCAoMVU8PDMxKSB8IDQ2NTMsIAorICAoMVU8PDMxKSB8IDQ3NjgsICgxVTw8MzEpIHwgNDY1MywgKDFVPDwzMSkgfCA0NzY4LCAweDQ0YzRjLCAweDQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0NGM0YzRjLCAKKyAgMHg0NGQ0ZDRkLCAweDQ0YzRjLCAweDQ0ZDRkLCAweDQ0YzRjLCAweDQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NDRjNGMsIAorICAweDQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NTRjNGMsIDB4NTRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDQ0YzRjNGMsIAorICAweDQ0ZDRkNGQsICgxVTw8MzEpIHwgMzkwMywgKDFVPDwzMSkgfCAzOTMyLCAoMVU8PDMxKSB8IDM5MDMsICgxVTw8MzEpIHwgMzkzMiwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NDRjNGM0ZCwgCisgICgxVTw8MzEpIHwgMzk0NCwgMHg0NGM0YzRkLCAoMVU8PDMxKSB8IDM5NDQsICgxVTw8MzEpIHwgMzkxMywgKDFVPDwzMSkgfCAzOTQyLCAoMVU8PDMxKSB8IDM5MTMsICgxVTw8MzEpIHwgMzk0MiwgMHg0NGM0YzRkLCAKKyAgKDFVPDwzMSkgfCAzOTQ0LCAoMVU8PDMxKSB8IDQ2MzUsICgxVTw8MzEpIHwgNDc0MCwgKDFVPDwzMSkgfCA0NjM1LCAoMVU8PDMxKSB8IDQ3NDAsICgxVTw8MzEpIHwgNDYzNSwgKDFVPDwzMSkgfCA0NzQwLCAoMVU8PDMxKSB8IDQ2MzUsIAorICAoMVU8PDMxKSB8IDQ3NDAsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAKKyAgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAKKyAgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDQ0ZDRkLCAoMVU8PDMxKSB8IDQwMTcsIDB4NDRkNGQ0ZCwgCisgICgxVTw8MzEpIHwgNDAxNSwgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDkxOCwgMHg0NGQ0ZCwgKDFVPDwzMSkgfCA0MDE3LCAweDQ0ZDRkNGQsICgxVTw8MzEpIHwgNDAxNSwgMHg0ZDRkNGQsIAorICAoMVU8PDMxKSB8IDQ5MTgsIDB4NDRkNGQsICgxVTw8MzEpIHwgNDAxNywgMHg0NGQ0ZDRkLCAoMVU8PDMxKSB8IDQwMTUsIDB4NTRjNGM0YywgMHg1NGQ0ZDRkLCAweDQ0ZDRkLCAKKyAgKDFVPDwzMSkgfCA0MDE3LCAweDQ0ZDRkNGQsICgxVTw8MzEpIHwgNDAxNSwgMHg1NGM0YzRjLCAweDU0ZDRkNGQsIDB4NTRjNGM0YywgMHg1NGQ0ZDRkLCAweDQ0YzRkLCAKKyAgKDFVPDwzMSkgfCAzOTU0LCAweDQ0YzRkNGQsICgxVTw8MzEpIHwgMzk1MiwgMHg0YzRjNGQsICgxVTw8MzEpIHwgNDgwNywgMHg0YzRjNGQ0ZCwgKDFVPDwzMSkgfCA0ODA1LCAweDRjNGM0ZCwgCisgICgxVTw8MzEpIHwgNDgwNywgMHg0YzRjNGQ0ZCwgKDFVPDwzMSkgfCA0ODA1LCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRkLCAoMVU8PDMxKSB8IDQ4MDcsIDB4NDRjNGQsIAorICAoMVU8PDMxKSB8IDM5NTQsIDB4NDRjNGQ0ZCwgKDFVPDwzMSkgfCAzOTUyLCAweDQ0YzRkNGQsICgxVTw8MzEpIHwgMzk1MiwgMHg0NGM0YywgMHg0NGQ0ZCwgMHg0NGM0YywgCisgIDB4NDRkNGQsIDB4NGM0YzRkLCAoMVU8PDMxKSB8IDQ4MDcsIDB4NGM0YzRkNGQsICgxVTw8MzEpIHwgNDgwNSwgMHg0YzRjNGQsICgxVTw8MzEpIHwgNDgwNywgMHg0YzRjNGQ0ZCwgCisgICgxVTw8MzEpIHwgNDgwNSwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjNGMsIDB4NGQ0ZDRkNGQsIDB4NGM0YzRjLCAKKyAgMHg0ZDRkNGQsIDB4NGM0YzRjNGMsIDB4NGQ0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGM0YywgMHg0ZDRkNGQ0ZCwgMHg0NGM0YywgCisgIDB4NDRkNGQsIDB4NDRjNGM0YywgMHg0NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NDRjNGMsIDB4NDRkNGQsIDB4NDRjNGM0YywgCisgIDB4NDRkNGQ0ZCwgMHg0NGM0YywgMHg0NGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NDRjNGMsIDB4NDRkNGQsIDB4NDRjNGM0YywgCisgIDB4NDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0ZDRkLCAoMVU8PDMxKSB8IDQ4MDUsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGM0YywgCisgIDB4NGQ0ZDRkNGQsIDB4NGM0YzRjNGMsIDB4NGQ0ZDRkNGQsIDB4NDRjNGQsICgxVTw8MzEpIHwgMzk1NCwgMHg0NGM0ZDRkLCAoMVU8PDMxKSB8IDM5NTIsIDB4NGM0YzRkLCAKKyAgKDFVPDwzMSkgfCA0ODA3LCAweDRjNGM0ZDRkLCAoMVU8PDMxKSB8IDQ4MDUsIDB4NDRjNGQsICgxVTw8MzEpIHwgMzk1NCwgMHg0NGM0ZDRkLCAoMVU8PDMxKSB8IDM5NTIsIDB4NDRjNGMsIAorICAweDQ0ZDRkLCAweDQ0YzRjNGMsIDB4NDRkNGQ0ZCwgMHg0YzRjNGQsICgxVTw8MzEpIHwgNDgwNywgMHg0YzRjNGQ0ZCwgKDFVPDwzMSkgfCA0ODA1LCAoMVU8PDMxKSB8IDQ2NjIsIAorICAoMVU8PDMxKSB8IDQ3NzcsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAKKyAgMHg0ZDRkNGQsIDB4NGM0YywgMHg0ZDRkLCAweDRjNGMsIDB4NGQ0ZCwgMHg0YzRjLCAweDRkNGQsIDB4NGM0YzRjLCAKKyAgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAKKyAgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAKKyAgMHg0ZDRkNGQsIDB4NGM0YywgMHg0ZDRkLCAoMVU8PDMxKSB8IDIxNiwgKDFVPDwzMSkgfCAyNDQsICgxVTw8MzEpIHwgMjE2LCAoMVU8PDMxKSB8IDI0NCwgKDFVPDwzMSkgfCAyMTYsIAorICAoMVU8PDMxKSB8IDI0NCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDU0YzRkLCAoMVU8PDMxKSB8IDQ5NTQsIDB4NTRjNGQ0ZCwgKDFVPDwzMSkgfCA0OTUyLCAweDQ0YzRjLCAKKyAgMHg0NGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NDQ0ZDRkLCAoMVU8PDMxKSB8IDM2MTUsIDB4NDQ0ZDRkNGQsICgxVTw8MzEpIHwgMzYxMywgMHg0YzRjNGMsIAorICAweDRkNGQ0ZCwgMHg0YzRjNGM0YywgMHg0ZDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YzRjLCAweDRkNGQ0ZDRkLCAweDQ0YzRjLCAKKyAgMHg0NGQ0ZCwgMHg0NGM0YzRjLCAweDQ0ZDRkNGQsIDB4NTRjNGQsICgxVTw8MzEpIHwgNDk1NCwgMHg1NGM0ZDRkLCAoMVU8PDMxKSB8IDQ5NTIsIDB4NDQ0ZDRkLCAKKyAgKDFVPDwzMSkgfCAzNjE1LCAweDQ0NGQ0ZDRkLCAoMVU8PDMxKSB8IDM2MTMsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGM0YywgMHg0ZDRkNGQ0ZCwgMHg0NGM0YywgCisgIDB4NDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAKKyAgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NDQ0ZDRkLCAKKyAgKDFVPDwzMSkgfCAzNjE1LCAweDQ0NGQ0ZDRkLCAoMVU8PDMxKSB8IDM2MTMsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgCisgIDB4NGQ0ZDRkLCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0ZCwgKDFVPDwzMSkgfCA0ODE3LCAweDRjNGM0NDAsIDB4NGQ0ZDQ0MCwgMHg0YzRjNDQwLCAKKyAgMHg0ZDRkNDQwLCAoMVU8PDMxKSB8IDQ2ODAsICgxVTw8MzEpIHwgNDc5NSwgMHg0YzRkNDQwLCAoMVU8PDMxKSB8IDQ4MTQsIDB4NGM0ZDQ0MCwgKDFVPDwzMSkgfCA0ODE0LCAoMVU8PDMxKSB8IDQ2OTAsIAorICAoMVU8PDMxKSB8IDQ4MjIsIDB4NGM0YzQ0MCwgMHg0ZDRkNDQwLCAweDRjNGM0NDAsIDB4NGQ0ZDQ0MCwgKDFVPDwzMSkgfCA0NjgwLCAoMVU8PDMxKSB8IDQ3OTUsIDB4NGM0ZCwgCisgICgxVTw8MzEpIHwgNDgxNywgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGMsIDB4NGQ0ZCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGMsIAorICAweDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0NGM0YzRkLCAoMVU8PDMxKSB8IDM5NDQsIDB4NGM0YzRkLCAoMVU8PDMxKSB8IDQ4MDcsIDB4NGM0YzRkLCAKKyAgKDFVPDwzMSkgfCA0ODA3LCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDkxOCwgKDFVPDwzMSkgfCA0NjYyLCAKKyAgKDFVPDwzMSkgfCA0Nzc3LCAoMVU8PDMxKSB8IDQ2NjIsICgxVTw8MzEpIHwgNDc3NywgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRkNGQ0ZCwgKDFVPDwzMSkgfCA0OTE4LCAoMVU8PDMxKSB8IDIwOSwgCisgICgxVTw8MzEpIHwgMjM3LCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGQ0ZDRkLCAoMVU8PDMxKSB8IDQ5MTgsICgxVTw8MzEpIHwgNDY2MiwgKDFVPDwzMSkgfCA0Nzc3LCAoMVU8PDMxKSB8IDQ2NjIsIAorICAoMVU8PDMxKSB8IDQ3NzcsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDkxOCwgMHg0YzRjNGQsICgxVTw8MzEpIHwgNDgwNywgMHg0YzRjNGQsIAorICAoMVU8PDMxKSB8IDQ4MDcsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDkxOCwgMHg0YzRjNGMsIDB4NGQ0ZDRkLCAweDRjNGM0YywgCisgIDB4NGQ0ZDRkLCAweDRkNGQ0ZCwgKDFVPDwzMSkgfCA0OTE4LCAweDRjNGM0ZCwgKDFVPDwzMSkgfCA0ODA3LCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGQ0ZDRkLCAKKyAgKDFVPDwzMSkgfCA0OTE4LCAweDRjNGM0YywgMHg0ZDRkNGQsIDB4NGQ0ZDRkLCAoMVU8PDMxKSB8IDQ5MTgsICgxVTw8MzEpIHwgNDY2MiwgKDFVPDwzMSkgfCA0Nzc3LCAoMVU8PDMxKSB8IDQ2NjIsIAorICAoMVU8PDMxKSB8IDQ3NzcsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0ZDRkNGQsICgxVTw8MzEpIHwgNDkxOCwgKDFVPDwzMSkgfCA0NjcxLCAoMVU8PDMxKSB8IDQ3ODYsIDB4NDRkNGQsIAorICAoMVU8PDMxKSB8IDQwMTcsIDB4NDRkNGQ0ZCwgKDFVPDwzMSkgfCA0MDE1LCAweDQ0ZDRkLCAoMVU8PDMxKSB8IDQwMTcsIDB4NDRkNGQ0ZCwgKDFVPDwzMSkgfCA0MDE1LCAweDQ0ZDRkLCAKKyAgKDFVPDwzMSkgfCA0MDE3LCAweDQ0ZDRkNGQsICgxVTw8MzEpIHwgNDAxNSwgKDFVPDwzMSkgfCAzOTAyLCAoMVU8PDMxKSB8IDM5MzEsIDB4NGM0ZCwgKDFVPDwzMSkgfCA0ODE3LCAweDRjNGQsIAorICAoMVU8PDMxKSB8IDQ4MTcsIDB4NGM0ZDRkLCAoMVU8PDMxKSB8IDQ4MzIsIDB4NGM0ZDRkLCAoMVU8PDMxKSB8IDQ4MzIsIDB4NGM0ZCwgKDFVPDwzMSkgfCA0ODE3LCAweDRjNGQsIAorICAoMVU8PDMxKSB8IDQ4MTcsIDB4NGM0YzRjLCAweDRkNGQ0ZCwgMHg0YzRkLCAoMVU8PDMxKSB8IDQ4MTcsIDB4NGM0ZCwgKDFVPDwzMSkgfCA0ODE3LCAweDJlMCwgCisgIDB4MmUwLCAweDJlMCwgMHgyZTAsIDB4NDJlMCwgMHg1MmUwLCAweDQ0MmUyZTJlLCAweDQ0MmUyZTJlLCAweDQ0MmUyZTJlLCAKKyAgMHg0NDJlMmUyZSwgMHg0NDJlMmUyZSwgMHg0NDJlMmUyZSwgMHg0NDQyZTJlLCAweDQ0NTJlMmUsIDB4NDQ0MmUyZSwgMHg0NDQyZTJlLCAweDQ0NDJlMmUsIAorICAweDJlMCwgMHg0MmUyZTAsIDB4NDQyZTAsIDB4MzkzOSwgMHgyYTJhLCAweDQ0LCAweDJjMmMyYywgMHg1OTU5NTksIAorICAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MzkzOTM5LCAweDM5MzkzOSwgMHg0NDQsIDB4MzkzOTM5LCAweDM5MzkzOSwgMHg0NDQsIAorICAweDQ0NCwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIAorICAweDRhNGE0YSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4NDQ0LCAweDM5MzkzOSwgMHgyYTJhMmEsIAorICAweDM5MzkzOSwgMHgyYTJhMmEsIDB4MmEyYTJhLCAweDJhMmEyYSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIAorICAweDQyYzJjLCAweDQ1OTU5LCAweDQzYjNiLCAweDQ0YTRhLCAweDQ0NCwgMHgyYzJjMmMsIDB4NDJjMmMsIDB4NDQ0NCwgCisgIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgCisgIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgCisgIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgCisgIDB4NDQ0NCwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4NDJjMmMsIDB4NDU5NTksIDB4NDNiM2IsIAorICAweDQ0YTRhLCAweDJjMmMyYzJjLCAweDU5NTk1OTU5LCAweDNiM2IzYjNiLCAweDRhNGE0YTRhLCAweDQyYzJjMmMsIDB4NDU5NTk1OSwgMHg0M2IzYjNiLCAKKyAgMHg0NGE0YTRhLCAweDJjMmMyYzJjLCAweDU5NTk1OTU5LCAweDNiM2IzYjNiLCAweDRhNGE0YTRhLCAweDQyYzJjMmMsIDB4NDU5NTk1OSwgMHg0M2IzYjNiLCAKKyAgMHg0NGE0YTRhLCAweDQ0LCAweDJjMmMyYzJjLCAweDQyYzJjMmMsIDB4MmMyYzJjMmMsIDB4NDJjMmMyYywgMHgyYzJjMmMsIDB4NTk1OTU5LCAKKyAgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDQyYzJjLCAweDQ1OTU5LCAweDQzYjNiLCAweDQ0YTRhLCAweDJjNCwgMHg1OTQsIAorICAweDNiNCwgMHgyYzQsIDB4NGE0LCAweDQsIDB4MmMyYzJjMmMsIDB4NDJjMmMyYywgMHgyYzJjMmMsIDB4NTk1OTU5LCAKKyAgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDQyYzJjLCAweDQ1OTU5LCAweDQzYjNiLCAweDQ0YTRhLCAweDJjNCwgMHg1OTQsIAorICAweDNiNCwgMHgyYzQsIDB4NGE0LCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHg0MmMyYywgCisgIDB4NDU5NTksIDB4NDNiM2IsIDB4NDRhNGEsIDB4NDQsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAKICAgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4NDJjMmMsIDB4NDU5NTksIDB4NDNiM2IsIDB4NDRhNGEsIAotICAweDQ0NCwgMHgyYzJjMmMsIDB4NDJjMmMsIDB4NDQ0NCwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIAotICAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIAotICAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIAotICAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHg0NDQ0LCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAKLSAgMHg0YTRhNGEsIDB4NDJjMmMsIDB4NDU5NTksIDB4NDNiM2IsIDB4NDRhNGEsIDB4MmMyYzJjMmMsIDB4NTk1OTU5NTksIDB4M2IzYjNiM2IsIAotICAweDRhNGE0YTRhLCAweDQyYzJjMmMsIDB4NDU5NTk1OSwgMHg0M2IzYjNiLCAweDQ0YTRhNGEsIDB4MmMyYzJjMmMsIDB4NTk1OTU5NTksIDB4M2IzYjNiM2IsIAotICAweDRhNGE0YTRhLCAweDQyYzJjMmMsIDB4NDU5NTk1OSwgMHg0M2IzYjNiLCAweDQ0YTRhNGEsIDB4NDQsIDB4MmMyYzJjMmMsIDB4NDJjMmMyYywgCi0gIDB4MmMyYzJjMmMsIDB4NDJjMmMyYywgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4NDJjMmMsIDB4NDU5NTksIAotICAweDQzYjNiLCAweDQ0YTRhLCAweDJjNCwgMHg1OTQsIDB4M2I0LCAweDJjNCwgMHg0YTQsIDB4NCwgCi0gIDB4MmMyYzJjMmMsIDB4NDJjMmMyYywgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4NDJjMmMsIDB4NDU5NTksIAotICAweDQzYjNiLCAweDQ0YTRhLCAweDJjNCwgMHg1OTQsIDB4M2I0LCAweDJjNCwgMHg0YTQsIDB4MmMyYzJjLCAKLSAgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHg0MmMyYywgMHg0NTk1OSwgMHg0M2IzYiwgMHg0NGE0YSwgMHg0NCwgCi0gIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgCi0gIDB4NDJjMmMsIDB4NDU5NTksIDB4NDNiM2IsIDB4NDRhNGEsIDB4NDJjMmMsIDB4NDU5NTksIDB4NDNiM2IsIDB4NDRhNGEsIAotICAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIAotICAweDQyYzJjLCAweDQ1OTU5LCAweDQzYjNiLCAweDQ0YTRhLCAweDQyYzJjLCAweDQ1OTU5LCAweDQzYjNiLCAweDQ0YTRhLCAKLSAgMHgzOTM5MCwgMHgzOTM5MCwgMHgzOTM5MCwgMHgyYTJhNCwgMHgyYTJhNCwgMHgyYTJhNCwgMHgyYTJhNCwgMHgyYTJhNCwgCi0gIDB4MmEyYTQsIDB4MmEyYTAsIDB4MmEyYTAsIDB4MmEyYTAsIDB4NDJjNCwgMHg0NTk1LCAweDQzYjQsIDB4NDRhNCwgCi0gIDB4NDJjNCwgMHg0NTk1LCAweDQzYjQsIDB4NDRhNCwgMHg0NDAsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIAotICAweDRhNGE0YSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4NDU1NSwgMHg0YTRhNTksIDB4MmMyYzNiLCAKLSAgMHgzYjNiNGEsIDB4NGE0YTU5LCAweDJjMmMzYiwgMHgzYjNiNGEsIDB4MzkzOTU1LCAweDRhNGE1OTU5LCAweDJjMmMzYjNiLCAweDNiM2I0YTRhLCAKLSAgMHg0YTRhNTk1OSwgMHgyYzJjM2IzYiwgMHgzYjNiNGE0YSwgMHgzOTM5NTUsIDB4NDQ1NSwgMHgzOTM5NTUsIDB4MzkzOTU1LCAweDJhMmE1NSwgCi0gIDB4MmEyYTU1LCAweDM5Mzk1NSwgMHgzOTM5NTUsIDB4MzkzOTU1LCAweDQ0NTUsIDB4MzkzOTU1LCAweDM5Mzk1NSwgMHgyYTJhNTUsIAotICAweDJhMmE1NSwgMHg0YTRhNTk1OSwgMHgyYzJjM2IzYiwgMHgzYjNiNGE0YSwgMHg0YTRhNTk1OSwgMHgyYzJjM2IzYiwgMHgzYjNiNGE0YSwgMHgzOTM5NTUsIAotICAweDQ1NCwgMHg0NTQsIDB4NDU0LCAweDQ1NCwgMHg0NTQsIDB4NDU0LCAweDg5ODk4OSwgMHg3YTdhN2EsIAotICAweDg5ODk1OSwgMHg3YTdhNGEsIDB4ODk4OTU5LCAweDdhN2E0YSwgMHg4OTU5LCAweDdhNGEsIDB4ODk4OTU5LCAweDdhN2E0YSwgCisgIDB4NDJjMmMsIDB4NDU5NTksIDB4NDNiM2IsIDB4NDRhNGEsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAKKyAgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4NDJjMmMsIDB4NDU5NTksIDB4NDNiM2IsIDB4NDRhNGEsIAorICAweDQyYzJjLCAweDQ1OTU5LCAweDQzYjNiLCAweDQ0YTRhLCAweDM5MzkwLCAweDM5MzkwLCAweDM5MzkwLCAweDJhMmE0LCAKKyAgMHgyYTJhNCwgMHgyYTJhNCwgMHgyYTJhNCwgMHgyYTJhNCwgMHgyYTJhNCwgMHgyYTJhMCwgMHgyYTJhMCwgMHgyYTJhMCwgCisgIDB4NDJjNCwgMHg0NTk1LCAweDQzYjQsIDB4NDRhNCwgMHg0MmM0LCAweDQ1OTUsIDB4NDNiNCwgMHg0NGE0LCAKKyAgMHg0NDAsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAKKyAgMHg0YTRhNGEsIDB4NDU1NSwgMHg0YTRhNTksIDB4MmMyYzNiLCAweDNiM2I0YSwgMHg0YTRhNTksIDB4MmMyYzNiLCAweDNiM2I0YSwgCisgIDB4MzkzOTU1LCAweDRhNGE1OTU5LCAweDJjMmMzYjNiLCAweDNiM2I0YTRhLCAweDRhNGE1OTU5LCAweDJjMmMzYjNiLCAweDNiM2I0YTRhLCAweDM5Mzk1NSwgCisgIDB4NDQ1NSwgMHgzOTM5NTUsIDB4MzkzOTU1LCAweDJhMmE1NSwgMHgyYTJhNTUsIDB4MzkzOTU1LCAweDM5Mzk1NSwgMHgzOTM5NTUsIAorICAweDQ0NTUsIDB4MzkzOTU1LCAweDM5Mzk1NSwgMHgyYTJhNTUsIDB4MmEyYTU1LCAweDRhNGE1OTU5LCAweDJjMmMzYjNiLCAweDNiM2I0YTRhLCAKKyAgMHg0YTRhNTk1OSwgMHgyYzJjM2IzYiwgMHgzYjNiNGE0YSwgMHgzOTM5NTUsIDB4NDU0LCAweDQ1NCwgMHg0NTQsIDB4NDU0LCAKKyAgMHg0NTQsIDB4NDU0LCAweDg5ODk4OSwgMHg3YTdhN2EsIDB4ODk4OTU5LCAweDdhN2E0YSwgMHg4OTg5NTksIDB4N2E3YTRhLCAKKyAgMHg4OTU5LCAweDdhNGEsIDB4ODk4OTU5LCAweDdhN2E0YSwgMHg4OTg5NTksIDB4N2E3YTRhLCAweDg5ODk1OSwgMHg3YTdhNGEsIAogICAweDg5ODk1OSwgMHg3YTdhNGEsIDB4ODk4OTU5LCAweDdhN2E0YSwgMHg4OTg5NTksIDB4N2E3YTRhLCAweDg5ODk1OSwgMHg3YTdhNGEsIAorICAweDg5ODk1OSwgMHg3YTdhNGEsIDB4ODk4OTU5LCAweDdhN2E0YSwgMHg4OTg5ODksIDB4N2E3YTdhLCAweDdhN2E2YiwgMHg4OTg5N2EsIAorICAweDU5ODk4OSwgMHg0YTdhN2EsIDB4N2E4OSwgMHg2YjdhLCAweDdhODksIDB4NmI3YSwgMHg1OTg5LCAweDRhN2EsIAorICAweDU5ODksIDB4NGE3YSwgMHg0YTg5LCAweDNiN2EsIDB4NGE4OSwgMHgzYjdhLCAweDQyYywgMHg1NTksIAorICAweDQzYiwgMHg0NGEsIDB4ODk4OSwgMHg3YTdhLCAoMVU8PDMxKSB8IDU3ODcsIDB4N2E3YTdhN2EsIDB4ODk4OTg5LCAweDdhN2E3YSwgCisgIDB4ODk4OTg5LCAweDdhN2E3YSwgMHg4OTg5ODksIDB4N2E3YTdhLCAweDg5ODk4OSwgMHg3YTdhN2EsICgxVTw8MzEpIHwgNTc4NywgMHg3YTdhN2E3YSwgCisgIDB4ODk4OTg5LCAweDdhN2E3YSwgMHg4OTg5LCAweDdhN2EsIDB4ODk4OSwgMHg3YTdhLCAweDg5ODksIDB4N2E3YSwgCiAgIDB4ODk4OTU5LCAweDdhN2E0YSwgMHg4OTg5NTksIDB4N2E3YTRhLCAweDg5ODk1OSwgMHg3YTdhNGEsIDB4ODk4OTU5LCAweDdhN2E0YSwgCi0gIDB4ODk4OTg5LCAweDdhN2E3YSwgMHg3YTdhNmIsIDB4ODk4OTdhLCAweDU5ODk4OSwgMHg0YTdhN2EsIDB4N2E4OSwgMHg2YjdhLCAKLSAgMHg3YTg5LCAweDZiN2EsIDB4NTk4OSwgMHg0YTdhLCAweDU5ODksIDB4NGE3YSwgMHg0YTg5LCAweDNiN2EsIAotICAweDRhODksIDB4M2I3YSwgMHg0MmMsIDB4NTU5LCAweDQzYiwgMHg0NGEsIDB4ODk4OSwgMHg3YTdhLCAKLSAgKDFVPDwzMSkgfCA1MjI0LCAweDdhN2E3YTdhLCAweDg5ODk4OSwgMHg3YTdhN2EsIDB4ODk4OTg5LCAweDdhN2E3YSwgMHg4OTg5ODksIDB4N2E3YTdhLCAKLSAgMHg4OTg5ODksIDB4N2E3YTdhLCAoMVU8PDMxKSB8IDUyMjQsIDB4N2E3YTdhN2EsIDB4ODk4OTg5LCAweDdhN2E3YSwgMHg4OTg5LCAweDdhN2EsIAotICAweDg5ODksIDB4N2E3YSwgMHg4OTg5LCAweDdhN2EsIDB4ODk4OTU5LCAweDdhN2E0YSwgMHg4OTg5NTksIDB4N2E3YTRhLCAKKyAgMHg4OTg5NTksIDB4N2E3YTRhLCAweDg5ODk1OSwgMHg3YTdhNGEsIDB4ODk4OSwgMHg3YTdhLCAweDg5ODk4OSwgMHg3YTdhN2EsIAogICAweDg5ODk1OSwgMHg3YTdhNGEsIDB4ODk4OTU5LCAweDdhN2E0YSwgMHg4OTg5NTksIDB4N2E3YTRhLCAweDg5ODk1OSwgMHg3YTdhNGEsIAotICAweDg5ODksIDB4N2E3YSwgMHg4OTg5ODksIDB4N2E3YTdhLCAweDg5ODk1OSwgMHg3YTdhNGEsIDB4ODk4OTU5LCAweDdhN2E0YSwgCi0gIDB4ODk4OTU5LCAweDdhN2E0YSwgMHg4OTg5NTksIDB4N2E3YTRhLCAweDg5ODk1OSwgMHg3YTdhNGEsIDB4ODk1OSwgMHg3YTRhLCAKLSAgMHg4OTU5LCAweDdhNGEsIDB4N2E3YTNiLCAweDg5ODk0YSwgMHg4OTU5LCAweDdhNGEsIDB4ODk1OSwgMHg3YTRhLCAKLSAgMHg0YTRhNTksIDB4MmMyYzNiLCAweDNiM2I0YSwgMHg0YTRhNTksIDB4MmMyYzNiLCAweDNiM2I0YSwgMHg0YTRhNTksIDB4MmMyYzNiLCAKLSAgMHgzYjNiNGEsIDB4NGE0YTU5LCAweDJjMmMzYiwgMHgzYjNiNGEsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAKKyAgMHg4OTg5NTksIDB4N2E3YTRhLCAweDg5NTksIDB4N2E0YSwgMHg4OTU5LCAweDdhNGEsIDB4N2E3YTNiLCAweDg5ODk0YSwgCisgIDB4ODk1OSwgMHg3YTRhLCAweDg5NTksIDB4N2E0YSwgMHg0YTRhNTksIDB4MmMyYzNiLCAweDNiM2I0YSwgMHg0YTRhNTksIAorICAweDJjMmMzYiwgMHgzYjNiNGEsIDB4NGE0YTU5LCAweDJjMmMzYiwgMHgzYjNiNGEsIDB4NGE0YTU5LCAweDJjMmMzYiwgMHgzYjNiNGEsIAogICAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIAotICAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHg0NDJjMmMsIDB4NTQ1OTU5LCAweDQ0M2IzYiwgMHg0NDRhNGEsIAotICAweDQ0NCwgMHgyYzQyYzJjLCAweDU5NDU5NTksIDB4M2I0M2IzYiwgMHg0YTQ0YTRhLCAweDQyZTQsIDB4NDJlMmMsIDB4NDJlNTksIAotICAweDQyZTNiLCAweDQyZTRhLCAweDQyYywgMHg0NTksIDB4NDNiLCAweDQ0YSwgMHg0MmU0LCAweDQ0NDQsIAotICAweDQyZTQsIDB4NDQ1NSwgMHgzYjNiM2IzYiwgMHg0YTRhNGE0YSwgMHgzYjNiM2IzYiwgMHg0YTRhNGE0YSwgMHg0NDU1LCAweDJjMmMyYzJjLCAKLSAgMHg1OTU5NTk1OSwgMHgzYjNiM2IzYiwgMHg0YTRhNGE0YSwgMHgzOTM5NTUsIDB4MzkzOTU1LCAweDM5Mzk1NSwgMHgzOTM5NTUsIDB4MmMyYzJjLCAKKyAgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAKKyAgMHg0NDJjMmMsIDB4NTQ1OTU5LCAweDQ0M2IzYiwgMHg0NDRhNGEsIDB4NDQ0LCAweDJjNDJjMmMsIDB4NTk0NTk1OSwgMHgzYjQzYjNiLCAKKyAgMHg0YTQ0YTRhLCAweDQyZTQsIDB4NDJlMmMsIDB4NDJlNTksIDB4NDJlM2IsIDB4NDJlNGEsIDB4NDJjLCAweDQ1OSwgCisgIDB4NDNiLCAweDQ0YSwgMHg0MmU0LCAweDQ0NDQsIDB4NDJlNCwgMHg0NDU1LCAweDNiM2IzYjNiLCAweDRhNGE0YTRhLCAKKyAgMHgzYjNiM2IzYiwgMHg0YTRhNGE0YSwgMHg0NDU1LCAweDJjMmMyYzJjLCAweDU5NTk1OTU5LCAweDNiM2IzYjNiLCAweDRhNGE0YTRhLCAweDM5Mzk1NSwgCisgIDB4MzkzOTU1LCAweDM5Mzk1NSwgMHgzOTM5NTUsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDJjMmMyYywgCisgIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDQyYzJjLCAKKyAgMHg0NTk1OSwgMHg0M2IzYiwgMHg0NGE0YSwgMHg0MmMyYywgMHg0NTk1OSwgMHg0M2IzYiwgMHg0NGE0YSwgMHgyYzJjMmMsIAogICAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgyYzJjMmMsIAogICAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDQyYzJjLCAweDQ1OTU5LCAweDQzYjNiLCAweDQ0YTRhLCAweDQyYzJjLCAKICAgMHg0NTk1OSwgMHg0M2IzYiwgMHg0NGE0YSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYzJjLCAKLSAgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4NDJjMmMsIAotICAweDQ1OTU5LCAweDQzYjNiLCAweDQ0YTRhLCAweDQyYzJjLCAweDQ1OTU5LCAweDQzYjNiLCAweDQ0YTRhLCAweDJjMmMyYywgCi0gIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDQ0NCwgCi0gIDB4MmMyYywgMHg0NDU1LCAweDNiM2IzYjNiLCAweDRhNGE0YTRhLCAweDNiM2IzYjNiLCAweDRhNGE0YTRhLCAweDQ0NTUsIDB4MmMyYzJjMmMsIAotICAweDU5NTk1OTU5LCAweDNiM2IzYjNiLCAweDRhNGE0YTRhLCAweDQ1NSwgMHgzOTM5MzksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgzOTM5MzksIAotICAweDM5Mzk0LCAweDM5Mzk0LCAweDM5MmEzOSwgMHgzOTJhMzksIDB4MzkzOTM5LCAweDQ0NCwgMHgzOTM5MzksIDB4NDQ0LCAKLSAgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDM5Mzk1NSwgMHgzOTM5NTUsIDB4NDQ1LCAweDQ0NSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAKLSAgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDJjMmMsIDB4NTk1OSwgMHgzYjNiLCAweDRhNGEsIDB4MmMyYywgMHg1OTU5LCAKLSAgMHgzYjNiLCAweDRhNGEsIDB4MmMyYzJjLCAweDQyYzJjLCAweDJjMmMyYywgMHg0MmMyYywgMHgzOTM5MzksIDB4MmMyYzJjLCAKLSAgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYywgCi0gIDB4NTk1OSwgMHgzYjNiLCAweDRhNGEsIDB4MzkzOTM5LCAweDJhMmEyYSwgMHgzOTQsIDB4Mzk0LCAweDJhMzksIAotICAweDJhMzksIDB4MmEzOSwgMHgyYTM5LCAweDJhMzksIDB4MmEzOSwgMHgyYTM5LCAweDJhMzksIDB4MzkzOTJhLCAKLSAgMHg0NDQzOSwgMHg0NDQzOSwgMHg0NDM5LCAweDM5MzkyYSwgMHg0NDM5LCAweDM5MzkyYSwgMHg0NDQ0LCAweDJhNCwgCi0gIDB4NDQsIDB4NDM5LCAweDQyYSwgMHg0MmMyYywgMHg0NTk1OSwgMHg0M2IzYiwgMHg0NGE0YSwgMHg0MmMyYywgCi0gIDB4NDU5NTksIDB4NDNiM2IsIDB4NDRhNGEsIDB4NDJjMmMsIDB4NDNiM2IsIDB4NDRhNGEsIDB4NDU1LCAweDQzOTM5LCAKLSAgMHg0MmEyYSwgMHg0MzkzOSwgMHg0NDQsIDB4NDM5MzksIDB4NDJhMmEsIDB4NDM5MzksIDB4NDJhMmEsIDB4NDQ0LCAKLSAgMHg0MzkzOSwgMHg0MmEyYSwgMHg0MmMyYzJjLCAweDQ1OTU5NTksIDB4NDNiM2IzYiwgMHg0NGE0YTRhLCAweDQyYzJjMmMsIDB4NDU5NTk1OSwgCi0gIDB4NDNiM2IzYiwgMHg0NGE0YTRhLCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHg0MmMyYywgMHg0NTk1OSwgCi0gIDB4NDNiM2IsIDB4NDRhNGEsIDB4NDJjMmMsIDB4NDU5NTksIDB4NDNiM2IsIDB4NDRhNGEsIDB4NDJjMmMsIDB4NDU5NTksIAotICAweDQzYjNiLCAweDQ0YTRhLCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHg0MmMyYywgMHg0NTk1OSwgCi0gIDB4NDNiM2IsIDB4NDRhNGEsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDQyYzJjLCAweDQ1OTU5LCAKLSAgMHg0M2IzYiwgMHg0NGE0YSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4NDJjMmMsIDB4NDU5NTksIAotICAweDQzYjNiLCAweDQ0YTRhLCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHg0MmMyYywgMHg0NTk1OSwgCi0gIDB4NDNiM2IsIDB4NDRhNGEsIDB4NDJlMmMwLCAweDQyZTU5MCwgMHg0MmUzYjAsIDB4NDJlNGEwLCAweDM5MzkzOSwgMHgzOTM5MzksIAotICAweDQ0NCwgMHgzOTM5MzksIDB4MzkzOTM5LCAweDQ0NCwgMHg0NDQsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIAorICAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDQ0NCwgMHgyYzJjLCAweDQ0NTUsIDB4M2IzYjNiM2IsIDB4NGE0YTRhNGEsIAorICAweDNiM2IzYjNiLCAweDRhNGE0YTRhLCAweDQ0NTUsIDB4MmMyYzJjMmMsIDB4NTk1OTU5NTksIDB4M2IzYjNiM2IsIDB4NGE0YTRhNGEsIDB4NDU1LCAKKyAgMHgzOTM5MzksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgzOTM5MzksIDB4MzkzOTQsIDB4MzkzOTQsIDB4MzkyYTM5LCAweDM5MmEzOSwgCisgIDB4MzkzOTM5LCAweDQ0NCwgMHgzOTM5MzksIDB4NDQ0LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MzkzOTU1LCAweDM5Mzk1NSwgCisgIDB4NDQ1LCAweDQ0NSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYywgMHg1OTU5LCAKKyAgMHgzYjNiLCAweDRhNGEsIDB4MmMyYywgMHg1OTU5LCAweDNiM2IsIDB4NGE0YSwgMHgyYzJjMmMsIDB4NDJjMmMsIAorICAweDJjMmMyYywgMHg0MmMyYywgMHgzOTM5MzksIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDJjMmMyYywgCisgIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYywgMHg1OTU5LCAweDNiM2IsIDB4NGE0YSwgMHgzOTM5MzksIAorICAweDJhMmEyYSwgMHgzOTQsIDB4Mzk0LCAweDJhMzksIDB4MmEzOSwgMHgyYTM5LCAweDJhMzksIDB4MmEzOSwgCisgIDB4MmEzOSwgMHgyYTM5LCAweDJhMzksIDB4MzkzOTJhLCAweDQ0NDM5LCAweDQ0NDM5LCAweDQ0MzksIDB4MzkzOTJhLCAKKyAgMHg0NDM5LCAweDM5MzkyYSwgMHg0NDQ0LCAweDJhNCwgMHg0NCwgMHg0MzksIDB4NDJhLCAweDQyYzJjLCAKKyAgMHg0NTk1OSwgMHg0M2IzYiwgMHg0NGE0YSwgMHg0MmMyYywgMHg0NTk1OSwgMHg0M2IzYiwgMHg0NGE0YSwgMHg0MmMyYywgCisgIDB4NDNiM2IsIDB4NDRhNGEsIDB4NDU1LCAweDQzOTM5LCAweDQyYTJhLCAweDQzOTM5LCAweDQ0NCwgMHg0MzkzOSwgCisgIDB4NDJhMmEsIDB4NDM5MzksIDB4NDJhMmEsIDB4NDQ0LCAweDQzOTM5LCAweDQyYTJhLCAweDQyYzJjMmMsIDB4NDU5NTk1OSwgCisgIDB4NDNiM2IzYiwgMHg0NGE0YTRhLCAweDQyYzJjMmMsIDB4NDU5NTk1OSwgMHg0M2IzYjNiLCAweDQ0YTRhNGEsIDB4MmMyYzJjLCAweDU5NTk1OSwgCisgIDB4M2IzYjNiLCAweDRhNGE0YSwgMHg0MmMyYywgMHg0NTk1OSwgMHg0M2IzYiwgMHg0NGE0YSwgMHg0MmMyYywgMHg0NTk1OSwgCisgIDB4NDNiM2IsIDB4NDRhNGEsIDB4NDJjMmMsIDB4NDU5NTksIDB4NDNiM2IsIDB4NDRhNGEsIDB4MmMyYzJjLCAweDU5NTk1OSwgCisgIDB4M2IzYjNiLCAweDRhNGE0YSwgMHg0MmMyYywgMHg0NTk1OSwgMHg0M2IzYiwgMHg0NGE0YSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAKKyAgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDQyYzJjLCAweDQ1OTU5LCAweDQzYjNiLCAweDQ0YTRhLCAweDJjMmMyYywgMHg1OTU5NTksIAorICAweDNiM2IzYiwgMHg0YTRhNGEsIDB4NDJjMmMsIDB4NDU5NTksIDB4NDNiM2IsIDB4NDRhNGEsIDB4MmMyYzJjLCAweDU5NTk1OSwgCisgIDB4M2IzYjNiLCAweDRhNGE0YSwgMHg0MmMyYywgMHg0NTk1OSwgMHg0M2IzYiwgMHg0NGE0YSwgMHg0MmUyYzAsIDB4NDJlNTkwLCAKKyAgMHg0MmUzYjAsIDB4NDJlNGEwLCAweDM5MzkzOSwgMHgzOTM5MzksIDB4NDQ0LCAweDM5MzkzOSwgMHgzOTM5MzksIDB4NDQ0LCAKKyAgMHg0NDQsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAKICAgMHg0YTRhNGEsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAKLSAgMHg0YTRhNGEsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDM5MzkzOSwgMHgyYTJhMmEsIDB4MzkzOTM5LCAKLSAgMHgyYTJhMmEsIDB4MmEyYTJhLCAweDJhMmEyYSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4NDJjMmMsIAotICAweDQ1OTU5LCAweDQzYjNiLCAweDQ0YTRhLCAweDJjMmMyYzJjLCAweDU5NTk1OTU5LCAweDNiM2IzYjNiLCAweDRhNGE0YTRhLCAweDQ0MCwgCi0gIDB4MmMyYzJjLCAweDQyYzJjLCAweDg4OCwgMHg3NzcsIDB4Nzc3LCAweDg4OCwgMHg3NzcsIDB4Nzc3LCAKLSAgMHg4ODgsIDB4Nzc3LCAweDc3NywgMHg4ODgsIDB4Nzc3LCAweDc3NywgMHgyZmNmMmYsIDB4MmZjZjJmLCAKLSAgMHgxZmNmMWYsIDB4MWZjZjFmLCAweDFmY2YxZiwgMHgxZmNmMWYsIDB4MWYxZmNmMWYsIDB4MWYxZmNmMWYsIDB4MWZjZjFmLCAweDFmY2YxZiwgCi0gIDB4MWZjZjFmLCAweDFmY2YxZiwgMHgxZmNmMWYsIDB4MWZjZjFmLCAweDc0ZjcsIDB4ODRmOCwgMHg0NGY0LCAweDQ0ZjQsIAotICAweDFmY2YxZiwgMHgxZmNmMWYsIDB4MWZjZjFmLCAweDFmY2YxZiwgMHgxZmNmMWYsIDB4MWZjZjFmLCAweDFmY2YxZiwgMHgxZmNmMWYsIAotICAweDQwLCAweDQwLCAweDQ0MCwgMHg0MCwgMHg0MCwgMHg0NDAsIDB4MCwgMHg0NCwgCi0gIDB4NDQsIDB4NDQsIDB4ODUsIDB4NzQsIDB4NDcsIDB4NTgsIDB4ODgsIDB4NzcsIAotICAweDc3LCAweDRmMCwgMHg0ZjAsIDB4NzcsIDB4NzcsIDB4ODcsIDB4ODcsIDB4ODcsIAotICAweDg3LCAweDg3LCAweDg3LCAweDg3LCAweDg3LCAweDg0LCAweDg0LCAweDg0LCAKLSAgMHg4NCwgMHg4NCwgMHg4NCwgMHg4NSwgMHg4NSwgMHg4NSwgMHg4NSwgMHg4NCwgCi0gIDB4ODQsIDB4ODQsIDB4ODQsIDB4ODUsIDB4ODUsIDB4ODUsIDB4ODUsIDB4Nzc3LCAKKyAgMHg0YTRhNGEsIDB4MzkzOTM5LCAweDJhMmEyYSwgMHgzOTM5MzksIDB4MmEyYTJhLCAweDJhMmEyYSwgMHgyYTJhMmEsIDB4MmMyYzJjLCAKKyAgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHg0MmMyYywgMHg0NTk1OSwgMHg0M2IzYiwgMHg0NGE0YSwgMHgyYzJjMmMyYywgCisgIDB4NTk1OTU5NTksIDB4M2IzYjNiM2IsIDB4NGE0YTRhNGEsIDB4NDQwLCAweDJjMmMyYywgMHg0MmMyYywgMHg4ODgsIDB4Nzc3LCAKICAgMHg3NzcsIDB4ODg4LCAweDc3NywgMHg3NzcsIDB4ODg4LCAweDc3NywgMHg3NzcsIDB4ODg4LCAKLSAgMHg3NzcsIDB4Nzc3LCAweDg4OCwgMHg3NzcsIDB4Nzc3LCAweDg4LCAweDc3LCAweDc3LCAKLSAgMHg3MywgMHg3MywgMHg3NCwgMHg3NCwgMHg3NCwgMHg3NCwgMHg3NCwgMHg3NCwgCi0gIDB4NzQsIDB4NzQsIDB4NzUsIDB4NzUsIDB4NzUsIDB4NzUsIDB4NzUsIDB4NzUsIAotICAweDc1LCAweDc1LCAweDc0LCAweDc0LCAweDc0LCAweDc0LCAweDc0LCAweDc0LCAKLSAgMHg3NCwgMHg3NCwgMHg3NSwgMHg3NSwgMHg3NSwgMHg3NSwgMHg3NSwgMHg3NSwgCi0gIDB4NzUsIDB4NzUsIDB4ODgsIDB4NzcsIDB4NzcsIDB4ODgsIDB4NzcsIDB4NzcsIAotICAweDg4ODgsIDB4Nzc3NywgMHg3Nzc3LCAweDg4ODgsIDB4Nzc3NywgMHg3Nzc3LCAweDg4ODgsIDB4Nzc3NywgCi0gIDB4Nzc3NywgMHg4ODg4LCAweDc3NzcsIDB4Nzc3NywgMHg4ODgsIDB4Nzc3LCAweDc3NywgMHg4ODgsIAotICAweDc3NywgMHg3NzcsIDB4NDQ0NCwgMHg0OCwgMHg0OCwgMHg0OCwgMHg0OCwgMHg0NywgCi0gIDB4NDcsIDB4NDcsIDB4NDcsIDB4MmUxLCAweDJlMSwgMHgyZTEsIDB4MmUxLCAweDUxLCAKLSAgMHg1MSwgMHg1MSwgMHg0Y2YyZiwgMHg0Y2YxZiwgMHg0Y2Y0ZiwgMHg0Y2YyZiwgMHg0Y2YxZiwgMHg0Y2Y0ZiwgCi0gIDB4ODgsIDB4NzcsIDB4NzcsIDB4NTgsIDB4NTgsIDB4NTgsIDB4NTgsIDB4NTcsIAotICAweDU3LCAweDU3LCAweDU3LCAweDQ0OCwgKDFVPDwzMSkgfCAyOTU2LCAoMVU8PDMxKSB8IDQ0MDcsIDB4NDQ0LCAweDU0NSwgCi0gIDB4MCwgMHgwLCAweDAsIDB4ODgsIDB4NzcsIDB4MzMsIDB4NDQsIDB4NTUsIAotICAweGNmNGYsIDB4ODg4LCAweDc3NywgMHg3NzcsIDB4ODg4LCAweDc3NywgMHg3NzcsIDB4ODg4LCAKLSAgMHg3NzcsIDB4Nzc3LCAweDg4OCwgMHg3NzcsIDB4Nzc3LCAweDQ0NCwgMHg0NDQsIDB4NDQ0LCAKLSAgMHg1NTUsIDB4NDQ0LCAweDU1NSwgMHg0NDQ0LCAweGNmNGYsIDB4Y2Y0ZiwgMHhjZjRmLCAweGNmNGYsIAotICAweGNmNGYsIDB4Y2Y0ZiwgMHhjZjRmLCAweGNmNGYsIDB4Y2Y0ZiwgMHg4OCwgMHg4OCwgMHg3NywgCi0gIDB4NzcsIDB4ODgsIDB4NzcsIDB4NzcsIDB4ODgsIDB4NzcsIDB4NzcsIDB4ODgsIAotICAweDc3LCAweDc3LCAweDQsIDB4NSwgMHg0LCAweDQsIDB4NCwgMHg0LCAKKyAgMHg3NzcsIDB4Nzc3LCAweDJmY2YyZiwgMHgyZmNmMmYsIDB4MWZjZjFmLCAweDFmY2YxZiwgMHgxZmNmMWYsIDB4MWZjZjFmLCAKKyAgMHgxZjFmY2YxZiwgMHgxZjFmY2YxZiwgMHgxZmNmMWYsIDB4MWZjZjFmLCAweDFmY2YxZiwgMHgxZmNmMWYsIDB4MWZjZjFmLCAweDFmY2YxZiwgCisgIDB4NzRmNywgMHg4NGY4LCAweDQ0ZjQsIDB4NDRmNCwgMHgxZmNmMWYsIDB4MWZjZjFmLCAweDFmY2YxZiwgMHgxZmNmMWYsIAorICAweDFmY2YxZiwgMHgxZmNmMWYsIDB4MWZjZjFmLCAweDFmY2YxZiwgMHg0MCwgMHg0MCwgMHg0NDAsIDB4NDAsIAorICAweDQwLCAweDQ0MCwgMHgwLCAweDQ0LCAweDQ0LCAweDQ0LCAweDg1LCAweDc0LCAKKyAgMHg0NywgMHg1OCwgMHg4OCwgMHg3NywgMHg3NywgMHg0ZjAsIDB4NGYwLCAweDc3LCAKKyAgMHg3NywgMHg4NywgMHg4NywgMHg4NywgMHg4NywgMHg4NywgMHg4NywgMHg4NywgCisgIDB4ODcsIDB4ODQsIDB4ODQsIDB4ODQsIDB4ODQsIDB4ODQsIDB4ODQsIDB4ODUsIAorICAweDg1LCAweDg1LCAweDg1LCAweDg0LCAweDg0LCAweDg0LCAweDg0LCAweDg1LCAKKyAgMHg4NSwgMHg4NSwgMHg4NSwgMHg3NzcsIDB4Nzc3LCAweDg4OCwgMHg3NzcsIDB4Nzc3LCAKKyAgMHg4ODgsIDB4Nzc3LCAweDc3NywgMHg4ODgsIDB4Nzc3LCAweDc3NywgMHg4ODgsIDB4Nzc3LCAKKyAgMHg3NzcsIDB4ODgsIDB4NzcsIDB4NzcsIDB4NzMsIDB4NzMsIDB4NzQsIDB4NzQsIAorICAweDc0LCAweDc0LCAweDc0LCAweDc0LCAweDc0LCAweDc0LCAweDc1LCAweDc1LCAKKyAgMHg3NSwgMHg3NSwgMHg3NSwgMHg3NSwgMHg3NSwgMHg3NSwgMHg3NCwgMHg3NCwgCisgIDB4NzQsIDB4NzQsIDB4NzQsIDB4NzQsIDB4NzQsIDB4NzQsIDB4NzUsIDB4NzUsIAorICAweDc1LCAweDc1LCAweDc1LCAweDc1LCAweDc1LCAweDc1LCAweDg4LCAweDc3LCAKKyAgMHg3NywgMHg4OCwgMHg3NywgMHg3NywgMHg4ODg4LCAweDc3NzcsIDB4Nzc3NywgMHg4ODg4LCAKKyAgMHg3Nzc3LCAweDc3NzcsIDB4ODg4OCwgMHg3Nzc3LCAweDc3NzcsIDB4ODg4OCwgMHg3Nzc3LCAweDc3NzcsIAorICAweDg4OCwgMHg3NzcsIDB4Nzc3LCAweDg4OCwgMHg3NzcsIDB4Nzc3LCAweDQ0NDQsIDB4NDgsIAorICAweDQ4LCAweDQ4LCAweDQ4LCAweDQ3LCAweDQ3LCAweDQ3LCAweDQ3LCAweDJlMSwgCisgIDB4MmUxLCAweDJlMSwgMHgyZTEsIDB4NTEsIDB4NTEsIDB4NTEsIDB4NGNmMmYsIDB4NGNmMWYsIAorICAweDRjZjRmLCAweDRjZjJmLCAweDRjZjFmLCAweDRjZjRmLCAweDg4LCAweDc3LCAweDc3LCAweDU4LCAKKyAgMHg1OCwgMHg1OCwgMHg1OCwgMHg1NywgMHg1NywgMHg1NywgMHg1NywgMHg0NDgsIAorICAoMVU8PDMxKSB8IDMxODMsICgxVTw8MzEpIHwgNDk0NiwgMHg0NDQsIDB4NTQ1LCAweDAsIDB4MCwgMHgwLCAweDg4LCAKKyAgMHg3NywgMHgzMywgMHg0NCwgMHg1NSwgMHhjZjRmLCAweDg4OCwgMHg3NzcsIDB4Nzc3LCAKKyAgMHg4ODgsIDB4Nzc3LCAweDc3NywgMHg4ODgsIDB4Nzc3LCAweDc3NywgMHg4ODgsIDB4Nzc3LCAKKyAgMHg3NzcsIDB4NDQ0LCAweDQ0NCwgMHg0NDQsIDB4NTU1LCAweDQ0NCwgMHg1NTUsIDB4NDQ0NCwgCisgIDB4Y2Y0ZiwgMHhjZjRmLCAweGNmNGYsIDB4Y2Y0ZiwgMHhjZjRmLCAweGNmNGYsIDB4Y2Y0ZiwgMHhjZjRmLCAKKyAgMHhjZjRmLCAweDg4LCAweDg4LCAweDc3LCAweDc3LCAweDg4LCAweDc3LCAweDc3LCAKKyAgMHg4OCwgMHg3NywgMHg3NywgMHg4OCwgMHg3NywgMHg3NywgMHg0LCAweDUsIAogICAweDQsIDB4NCwgMHg0LCAweDQsIDB4NCwgMHg0LCAweDQsIDB4NCwgCiAgIDB4NCwgMHg0LCAweDQsIDB4NCwgMHg0LCAweDQsIDB4NCwgMHg0LCAKICAgMHg0LCAweDQsIDB4NCwgMHg0LCAweDQsIDB4NCwgMHg0LCAweDQsIApAQCAtODE0MSwyNDcgKzgxNzYsMjQ1IEBACiAgIDB4NCwgMHg0LCAweDQsIDB4NCwgMHg0LCAweDQsIDB4NCwgMHg0LCAKICAgMHg0LCAweDQsIDB4NCwgMHg0LCAweDQsIDB4NCwgMHg0LCAweDQsIAogICAweDQsIDB4NCwgMHg0LCAweDQsIDB4NCwgMHg0LCAweDQsIDB4NCwgCi0gIDB4NCwgMHg0LCAweDQsIDB4NCwgMHg0ZjQsIDB4NDQ0LCAweDQ1NSwgMHg0NTUsIAotICAweDg4LCAweDc3LCAweDc3LCAweDg4LCAweDc3LCAweDc3LCAweDQ0NDQsIDB4NDQ0NCwgCi0gIDB4ODgsIDB4NzcsIDB4NzcsIDB4NDQ3NywgMHg0NDQ0LCAweDQ0NzcsIDB4NDQ0NCwgMHg0NDc3LCAKLSAgMHg0NDQ0LCAweDQ0NzQ3LCAweDQ0NDQ0LCAweDQ0NzQ3LCAweDQ0NDQ0LCAweDQ0NzQ3LCAweDQ0NDQ0LCAweDQ0NzQ3LCAKLSAgMHg0NDQ0NCwgMHg0NDc3LCAweDQ0NDQsIDB4NzcsIDB4NzcsIDB4NzcsIDB4NzcsIDB4NzcsIAotICAweDg4LCAweDc3LCAweDc3LCAweDg4LCAweDc3LCAweDc3LCAweDg4LCAweDc3LCAKLSAgMHg3NywgMHg4OCwgMHg3NywgMHg3NywgMHg0NDUzLCAweDQ0NTMsIDB4NDQ1MywgMHg0NDU0LCAKLSAgMHg0NDU0LCAweDQ0NTQsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTUsIDB4NDQ1MywgMHg0NDUzLCAweDQ0NTMsIAotICAoMVU8PDMxKSB8IDMzNTIsICgxVTw8MzEpIHwgMzM1MiwgKDFVPDwzMSkgfCAzMzUyLCAoMVU8PDMxKSB8IDMzNjgsICgxVTw8MzEpIHwgMzM2OCwgKDFVPDwzMSkgfCAzMzY4LCAoMVU8PDMxKSB8IDMzODUsICgxVTw8MzEpIHwgMzM4NSwgCi0gICgxVTw8MzEpIHwgMzM4NSwgKDFVPDwzMSkgfCAzMzUyLCAoMVU8PDMxKSB8IDMzNTIsICgxVTw8MzEpIHwgMzM1MiwgKDFVPDwzMSkgfCAzMzQzLCAoMVU8PDMxKSB8IDMzNDMsICgxVTw8MzEpIHwgMzM0MywgKDFVPDwzMSkgfCAzMzU5LCAKLSAgKDFVPDwzMSkgfCAzMzU5LCAoMVU8PDMxKSB8IDMzNTksICgxVTw8MzEpIHwgMzM0MywgKDFVPDwzMSkgfCAzMzQzLCAoMVU8PDMxKSB8IDMzNDMsIDB4NDUzLCAweDQ1MywgMHg0NTMsIAotICAweDQ1NCwgMHg0NTQsIDB4NDU0LCAweDQ1NSwgMHg0NTUsIDB4NDU1LCAweDQ1MywgMHg0NTMsIAotICAweDQ1MywgKDFVPDwzMSkgfCAzNjk5LCAoMVU8PDMxKSB8IDM2OTksICgxVTw8MzEpIHwgMzY5OSwgKDFVPDwzMSkgfCAzNzEzLCAoMVU8PDMxKSB8IDM3MTMsICgxVTw8MzEpIHwgMzcxMywgKDFVPDwzMSkgfCAzNzI4LCAKLSAgKDFVPDwzMSkgfCAzNzI4LCAoMVU8PDMxKSB8IDM3MjgsICgxVTw8MzEpIHwgMzY5OSwgKDFVPDwzMSkgfCAzNjk5LCAoMVU8PDMxKSB8IDM2OTksICgxVTw8MzEpIHwgMzY5MSwgKDFVPDwzMSkgfCAzNjkxLCAoMVU8PDMxKSB8IDM2OTEsIAotICAoMVU8PDMxKSB8IDM3MDUsICgxVTw8MzEpIHwgMzcwNSwgKDFVPDwzMSkgfCAzNzA1LCAoMVU8PDMxKSB8IDM2OTEsICgxVTw8MzEpIHwgMzY5MSwgKDFVPDwzMSkgfCAzNjkxLCAweDQ0NDUzLCAweDQ0NDUzLCAKLSAgMHg0NDQ1MywgMHg0NDQ1NCwgMHg0NDQ1NCwgMHg0NDQ1NCwgMHg0NDQ1NSwgMHg0NDQ1NSwgMHg0NDQ1NSwgMHg0NDQ1MywgCi0gIDB4NDQ0NTMsIDB4NDQ0NTMsICgxVTw8MzEpIHwgMzE0OCwgKDFVPDwzMSkgfCAzMTQ4LCAoMVU8PDMxKSB8IDMxNDgsICgxVTw8MzEpIHwgMzE2NiwgKDFVPDwzMSkgfCAzMTY2LCAoMVU8PDMxKSB8IDMxNjYsIAotICAoMVU8PDMxKSB8IDMxODUsICgxVTw8MzEpIHwgMzE4NSwgKDFVPDwzMSkgfCAzMTg1LCAoMVU8PDMxKSB8IDMxNDgsICgxVTw8MzEpIHwgMzE0OCwgKDFVPDwzMSkgfCAzMTQ4LCAoMVU8PDMxKSB8IDMxMzgsICgxVTw8MzEpIHwgMzEzOCwgCi0gICgxVTw8MzEpIHwgMzEzOCwgKDFVPDwzMSkgfCAzMTU2LCAoMVU8PDMxKSB8IDMxNTYsICgxVTw8MzEpIHwgMzE1NiwgKDFVPDwzMSkgfCAzMTM4LCAoMVU8PDMxKSB8IDMxMzgsICgxVTw8MzEpIHwgMzEzOCwgMHg0NDUzLCAKLSAgMHg0NDUzLCAweDQ0NTMsIDB4NDQ1NCwgMHg0NDU0LCAweDQ0NTQsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTUsIAotICAweDQ0NTMsIDB4NDQ1MywgMHg0NDUzLCAoMVU8PDMxKSB8IDMzNTIsICgxVTw8MzEpIHwgMzM1MiwgKDFVPDwzMSkgfCAzMzUyLCAoMVU8PDMxKSB8IDMzNjgsICgxVTw8MzEpIHwgMzM2OCwgCi0gICgxVTw8MzEpIHwgMzM2OCwgKDFVPDwzMSkgfCAzMzg1LCAoMVU8PDMxKSB8IDMzODUsICgxVTw8MzEpIHwgMzM4NSwgKDFVPDwzMSkgfCAzMzUyLCAoMVU8PDMxKSB8IDMzNTIsICgxVTw8MzEpIHwgMzM1MiwgKDFVPDwzMSkgfCAzMzQzLCAKLSAgKDFVPDwzMSkgfCAzMzQzLCAoMVU8PDMxKSB8IDMzNDMsICgxVTw8MzEpIHwgMzM1OSwgKDFVPDwzMSkgfCAzMzU5LCAoMVU8PDMxKSB8IDMzNTksICgxVTw8MzEpIHwgMzM0MywgKDFVPDwzMSkgfCAzMzQzLCAoMVU8PDMxKSB8IDMzNDMsIAotICAweDQ0NDUzLCAweDQ0NDUzLCAweDQ0NDUzLCAweDQ0NDU0LCAweDQ0NDU0LCAweDQ0NDU0LCAweDQ0NDU1LCAweDQ0NDU1LCAKLSAgMHg0NDQ1NSwgMHg0NDQ1MywgMHg0NDQ1MywgMHg0NDQ1MywgKDFVPDwzMSkgfCAzMTQ4LCAoMVU8PDMxKSB8IDMxNDgsICgxVTw8MzEpIHwgMzE0OCwgKDFVPDwzMSkgfCAzMTY2LCAKLSAgKDFVPDwzMSkgfCAzMTY2LCAoMVU8PDMxKSB8IDMxNjYsICgxVTw8MzEpIHwgMzE4NSwgKDFVPDwzMSkgfCAzMTg1LCAoMVU8PDMxKSB8IDMxODUsICgxVTw8MzEpIHwgMzE0OCwgKDFVPDwzMSkgfCAzMTQ4LCAoMVU8PDMxKSB8IDMxNDgsIAotICAoMVU8PDMxKSB8IDMxMzgsICgxVTw8MzEpIHwgMzEzOCwgKDFVPDwzMSkgfCAzMTM4LCAoMVU8PDMxKSB8IDMxNTYsICgxVTw8MzEpIHwgMzE1NiwgKDFVPDwzMSkgfCAzMTU2LCAoMVU8PDMxKSB8IDMxMzgsICgxVTw8MzEpIHwgMzEzOCwgCi0gICgxVTw8MzEpIHwgMzEzOCwgMHg1NCwgMHg1NCwgMHg1NCwgMHg1NCwgMHg1NCwgMHg1NCwgMHgzNDQ1MCwgCi0gIDB4MzQ0NTAsIDB4MzQ0NTAsIDB4NDQ0NTAsIDB4NDQ0NTAsIDB4NDQ0NTAsIDB4NTQ0NTAsIDB4NTQ0NTAsIDB4NTQ0NTAsIAotICAweDM0NDUwLCAweDM0NDUwLCAweDM0NDUwLCAweDMzNDQ1MCwgMHgzMzQ0NTAsIDB4MzM0NDUwLCAweDQ0NDQ1MCwgMHg0NDQ0NTAsIAotICAweDQ0NDQ1MCwgMHg1NTQ0NTAsIDB4NTU0NDUwLCAweDU1NDQ1MCwgMHgzMzQ0NTAsIDB4MzM0NDUwLCAweDMzNDQ1MCwgMHgzMzMzNDQ1MCwgCi0gIDB4MzMzMzQ0NTAsIDB4MzMzMzQ0NTAsIDB4NDQ0NDQ0NTAsIDB4NDQ0NDQ0NTAsIDB4NDQ0NDQ0NTAsIDB4MzMzMzQ0NTAsIDB4MzMzMzQ0NTAsIDB4MzMzMzQ0NTAsIAotICAweDM0NTAsIDB4MzQ1MCwgMHgzNDUwLCAweDQ0NTAsIDB4NDQ1MCwgMHg0NDUwLCAweDU0NTAsIDB4NTQ1MCwgCi0gIDB4NTQ1MCwgMHgzNDUwLCAweDM0NTAsIDB4MzQ1MCwgMHgzMzQ1MCwgMHgzMzQ1MCwgMHgzMzQ1MCwgMHg0NDQ1MCwgCi0gIDB4NDQ0NTAsIDB4NDQ0NTAsIDB4NTU0NTAsIDB4NTU0NTAsIDB4NTU0NTAsIDB4MzM0NTAsIDB4MzM0NTAsIDB4MzM0NTAsIAotICAweDMzMzM0NTAsIDB4MzMzMzQ1MCwgMHgzMzMzNDUwLCAweDQ0NDQ0NTAsIDB4NDQ0NDQ1MCwgMHg0NDQ0NDUwLCAweDMzMzM0NTAsIDB4MzMzMzQ1MCwgCi0gIDB4MzMzMzQ1MCwgMHgzNDQ0NTAsIDB4MzQ0NDUwLCAweDM0NDQ1MCwgMHg0NDQ0NTAsIDB4NDQ0NDUwLCAweDQ0NDQ1MCwgMHg1NDQ0NTAsIAotICAweDU0NDQ1MCwgMHg1NDQ0NTAsIDB4MzQ0NDUwLCAweDM0NDQ1MCwgMHgzNDQ0NTAsIDB4MzM0NDQ1MCwgMHgzMzQ0NDUwLCAweDMzNDQ0NTAsIAotICAweDQ0NDQ0NTAsIDB4NDQ0NDQ1MCwgMHg0NDQ0NDUwLCAweDU1NDQ0NTAsIDB4NTU0NDQ1MCwgMHg1NTQ0NDUwLCAweDMzNDQ0NTAsIDB4MzM0NDQ1MCwgCi0gIDB4MzM0NDQ1MCwgKDFVPDwzMSkgfCA4MjYsICgxVTw8MzEpIHwgODI2LCAoMVU8PDMxKSB8IDgyNiwgKDFVPDwzMSkgfCAzMDc1LCAoMVU8PDMxKSB8IDMwNzUsICgxVTw8MzEpIHwgMzA3NSwgKDFVPDwzMSkgfCA4MjYsIAotICAoMVU8PDMxKSB8IDgyNiwgKDFVPDwzMSkgfCA4MjYsIDB4MzQ0NTAsIDB4MzQ0NTAsIDB4MzQ0NTAsIDB4NDQ0NTAsIDB4NDQ0NTAsIDB4NDQ0NTAsIAotICAweDU0NDUwLCAweDU0NDUwLCAweDU0NDUwLCAweDM0NDUwLCAweDM0NDUwLCAweDM0NDUwLCAweDMzNDQ1MCwgMHgzMzQ0NTAsIAotICAweDMzNDQ1MCwgMHg0NDQ0NTAsIDB4NDQ0NDUwLCAweDQ0NDQ1MCwgMHg1NTQ0NTAsIDB4NTU0NDUwLCAweDU1NDQ1MCwgMHgzMzQ0NTAsIAotICAweDMzNDQ1MCwgMHgzMzQ0NTAsIDB4MzMzMzQ0NTAsIDB4MzMzMzQ0NTAsIDB4MzMzMzQ0NTAsIDB4NDQ0NDQ0NTAsIDB4NDQ0NDQ0NTAsIDB4NDQ0NDQ0NTAsIAotICAweDMzMzM0NDUwLCAweDMzMzM0NDUwLCAweDMzMzM0NDUwLCAweDM0NDQ1MCwgMHgzNDQ0NTAsIDB4MzQ0NDUwLCAweDQ0NDQ1MCwgMHg0NDQ0NTAsIAotICAweDQ0NDQ1MCwgMHg1NDQ0NTAsIDB4NTQ0NDUwLCAweDU0NDQ1MCwgMHgzNDQ0NTAsIDB4MzQ0NDUwLCAweDM0NDQ1MCwgMHgzMzQ0NDUwLCAKLSAgMHgzMzQ0NDUwLCAweDMzNDQ0NTAsIDB4NDQ0NDQ1MCwgMHg0NDQ0NDUwLCAweDQ0NDQ0NTAsIDB4NTU0NDQ1MCwgMHg1NTQ0NDUwLCAweDU1NDQ0NTAsIAotICAweDMzNDQ0NTAsIDB4MzM0NDQ1MCwgMHgzMzQ0NDUwLCAoMVU8PDMxKSB8IDgyNiwgKDFVPDwzMSkgfCA4MjYsICgxVTw8MzEpIHwgODI2LCAoMVU8PDMxKSB8IDMwNzUsICgxVTw8MzEpIHwgMzA3NSwgCi0gICgxVTw8MzEpIHwgMzA3NSwgKDFVPDwzMSkgfCA4MjYsICgxVTw8MzEpIHwgODI2LCAoMVU8PDMxKSB8IDgyNiwgMHgzNDQ1MCwgMHg0NDQ1MCwgMHgzNDQ1MCwgMHgzMzQ0NTAsIAotICAweDQ0NDQ1MCwgMHgzMzQ0NTAsIDB4MzMzMzQ0NTAsIDB4NDQ0NDQ0NTAsIDB4MzMzMzQ0NTAsIDB4MzQ1MCwgMHg0NDUwLCAweDM0NTAsIAotICAweDMzNDUwLCAweDQ0NDUwLCAweDMzNDUwLCAweDMzMzM0NTAsIDB4NDQ0NDQ1MCwgMHgzMzMzNDUwLCAweDM0NDQ1MCwgMHg0NDQ0NTAsIAotICAweDM0NDQ1MCwgMHgzMzQ0NDUwLCAweDQ0NDQ0NTAsIDB4MzM0NDQ1MCwgKDFVPDwzMSkgfCA4MjYsICgxVTw8MzEpIHwgMzA3NSwgKDFVPDwzMSkgfCA4MjYsIDB4MzQ0NTAsIAotICAweDQ0NDUwLCAweDM0NDUwLCAweDMzNDQ1MCwgMHg0NDQ0NTAsIDB4MzM0NDUwLCAweDMzMzM0NDUwLCAweDQ0NDQ0NDUwLCAweDMzMzM0NDUwLCAKLSAgMHgzNDQ0NTAsIDB4NDQ0NDUwLCAweDM0NDQ1MCwgMHgzMzQ0NDUwLCAweDQ0NDQ0NTAsIDB4MzM0NDQ1MCwgKDFVPDwzMSkgfCA4MjYsICgxVTw8MzEpIHwgMzA3NSwgCi0gICgxVTw8MzEpIHwgODI2LCAweDU1LCAoMVU8PDMxKSB8IDQ3NDIsICgxVTw8MzEpIHwgNDczMCwgKDFVPDwzMSkgfCA0NzMwLCAoMVU8PDMxKSB8IDQ2NjAsICgxVTw8MzEpIHwgNDY0OSwgKDFVPDwzMSkgfCA0NjQ5LCAKLSAgKDFVPDwzMSkgfCA0NTg2LCAoMVU8PDMxKSB8IDMzOTIsICgxVTw8MzEpIHwgNDU3NiwgKDFVPDwzMSkgfCAzMzc1LCAoMVU8PDMxKSB8IDQ1NzYsICgxVTw8MzEpIHwgMzM3NSwgKDFVPDwzMSkgfCA0Nzg2LCAoMVU8PDMxKSB8IDQ3NzUsIAotICAoMVU8PDMxKSB8IDQ3NzUsICgxVTw8MzEpIHwgNDcwMCwgKDFVPDwzMSkgfCA0NjkwLCAoMVU8PDMxKSB8IDQ2OTAsICgxVTw8MzEpIHwgNDYyMiwgKDFVPDwzMSkgfCAzNzM0LCAoMVU8PDMxKSB8IDQ2MTMsICgxVTw8MzEpIHwgMzcxOSwgCi0gICgxVTw8MzEpIHwgNDYxMywgKDFVPDwzMSkgfCAzNzE5LCAoMVU8PDMxKSB8IDQ5MzIsICgxVTw8MzEpIHwgNDkxNywgKDFVPDwzMSkgfCA0OTE3LCAoMVU8PDMxKSB8IDQ3NDIsICgxVTw8MzEpIHwgNDczMCwgKDFVPDwzMSkgfCA0NzMwLCAKLSAgKDFVPDwzMSkgfCA0NjYwLCAoMVU8PDMxKSB8IDMxOTMsICgxVTw8MzEpIHwgNDY0OSwgKDFVPDwzMSkgfCAzMTc0LCAoMVU8PDMxKSB8IDQ2NDksICgxVTw8MzEpIHwgMzE3NCwgKDFVPDwzMSkgfCA0OTg4LCAoMVU8PDMxKSB8IDQ5NzQsIAotICAoMVU8PDMxKSB8IDQ5NzQsICgxVTw8MzEpIHwgNDc4NiwgKDFVPDwzMSkgfCA0Nzc1LCAoMVU8PDMxKSB8IDQ3NzUsICgxVTw8MzEpIHwgNDcwMCwgKDFVPDwzMSkgfCAzMzkyLCAoMVU8PDMxKSB8IDQ2OTAsICgxVTw8MzEpIHwgMzM3NSwgCi0gICgxVTw8MzEpIHwgNDY5MCwgKDFVPDwzMSkgfCAzMzc1LCAoMVU8PDMxKSB8IDUxNjAsICgxVTw8MzEpIHwgNTE0MywgKDFVPDwzMSkgfCA1MTQzLCAoMVU8PDMxKSB8IDQ4ODAsICgxVTw8MzEpIHwgNDg2OCwgKDFVPDwzMSkgfCA0ODY4LCAKLSAgKDFVPDwzMSkgfCA0Nzg2LCAoMVU8PDMxKSB8IDMxOTMsICgxVTw8MzEpIHwgNDc3NSwgKDFVPDwzMSkgfCAzMTc0LCAoMVU8PDMxKSB8IDQ3NzUsICgxVTw8MzEpIHwgMzE3NCwgKDFVPDwzMSkgfCA0ODMyLCAoMVU8PDMxKSB8IDQ4MTksIAotICAoMVU8PDMxKSB8IDQ4MTksICgxVTw8MzEpIHwgNDc0MiwgKDFVPDwzMSkgfCA0NzMwLCAoMVU8PDMxKSB8IDQ3MzAsICgxVTw8MzEpIHwgNDg4MCwgKDFVPDwzMSkgfCA0ODY4LCAoMVU8PDMxKSB8IDQ4NjgsICgxVTw8MzEpIHwgNDc4NiwgCi0gICgxVTw8MzEpIHwgNDc3NSwgKDFVPDwzMSkgfCA0Nzc1LCAoMVU8PDMxKSB8IDQ3NTQsICgxVTw8MzEpIHwgNDcxOSwgKDFVPDwzMSkgfCA0NzE5LCAoMVU8PDMxKSB8IDQ2NzEsICgxVTw8MzEpIHwgNDYzOSwgKDFVPDwzMSkgfCA0NjM5LCAKLSAgKDFVPDwzMSkgfCA0NTk2LCAoMVU8PDMxKSB8IDM0MDIsICgxVTw8MzEpIHwgNDU2NywgKDFVPDwzMSkgfCAzMzU5LCAoMVU8PDMxKSB8IDQ1NjcsICgxVTw8MzEpIHwgMzM1OSwgKDFVPDwzMSkgfCA0Nzk3LCAoMVU8PDMxKSB8IDQ3NjUsIAotICAoMVU8PDMxKSB8IDQ3NjUsICgxVTw8MzEpIHwgNDcxMCwgKDFVPDwzMSkgfCA0NjgxLCAoMVU8PDMxKSB8IDQ2ODEsICgxVTw8MzEpIHwgNDYzMSwgKDFVPDwzMSkgfCAzNzQzLCAoMVU8PDMxKSB8IDQ2MDUsICgxVTw8MzEpIHwgMzcwNSwgCi0gICgxVTw8MzEpIHwgNDYwNSwgKDFVPDwzMSkgfCAzNzA1LCAoMVU8PDMxKSB8IDQ5NDcsICgxVTw8MzEpIHwgNDkwMywgKDFVPDwzMSkgfCA0OTAzLCAoMVU8PDMxKSB8IDQ3NTQsICgxVTw8MzEpIHwgNDcxOSwgKDFVPDwzMSkgfCA0NzE5LCAKLSAgKDFVPDwzMSkgfCA0NjcxLCAoMVU8PDMxKSB8IDMyMDQsICgxVTw8MzEpIHwgNDYzOSwgKDFVPDwzMSkgfCAzMTU2LCAoMVU8PDMxKSB8IDQ2MzksICgxVTw8MzEpIHwgMzE1NiwgKDFVPDwzMSkgfCA1MDAyLCAoMVU8PDMxKSB8IDQ5NjEsIAotICAoMVU8PDMxKSB8IDQ5NjEsICgxVTw8MzEpIHwgNDc5NywgKDFVPDwzMSkgfCA0NzY1LCAoMVU8PDMxKSB8IDQ3NjUsICgxVTw8MzEpIHwgNDcxMCwgKDFVPDwzMSkgfCAzNDAyLCAoMVU8PDMxKSB8IDQ2ODEsICgxVTw8MzEpIHwgMzM1OSwgCi0gICgxVTw8MzEpIHwgNDY4MSwgKDFVPDwzMSkgfCAzMzU5LCAoMVU8PDMxKSB8IDUxNzcsICgxVTw8MzEpIHwgNTEyNywgKDFVPDwzMSkgfCA1MTI3LCAoMVU8PDMxKSB8IDQ4OTIsICgxVTw8MzEpIHwgNDg1NywgKDFVPDwzMSkgfCA0ODU3LCAKLSAgKDFVPDwzMSkgfCA0Nzk3LCAoMVU8PDMxKSB8IDMyMDQsICgxVTw8MzEpIHwgNDc2NSwgKDFVPDwzMSkgfCAzMTU2LCAoMVU8PDMxKSB8IDQ3NjUsICgxVTw8MzEpIHwgMzE1NiwgKDFVPDwzMSkgfCA0ODQ1LCAoMVU8PDMxKSB8IDQ4MDcsIAotICAoMVU8PDMxKSB8IDQ4MDcsICgxVTw8MzEpIHwgNDc1NCwgKDFVPDwzMSkgfCA0NzE5LCAoMVU8PDMxKSB8IDQ3MTksICgxVTw8MzEpIHwgNDg5MiwgKDFVPDwzMSkgfCA0ODU3LCAoMVU8PDMxKSB8IDQ4NTcsICgxVTw8MzEpIHwgNDc5NywgCi0gICgxVTw8MzEpIHwgNDc2NSwgKDFVPDwzMSkgfCA0NzY1LCAoMVU8PDMxKSB8IDQzMzgsIDB4NGY1LCAoMVU8PDMxKSB8IDQ3MDAsICgxVTw8MzEpIHwgNDY5MCwgKDFVPDwzMSkgfCA0NjkwLCAoMVU8PDMxKSB8IDQ3MDAsIAotICAoMVU8PDMxKSB8IDQ2OTAsICgxVTw8MzEpIHwgNDY5MCwgKDFVPDwzMSkgfCA0NzAwLCAoMVU8PDMxKSB8IDQ2OTAsICgxVTw8MzEpIHwgNDY5MCwgKDFVPDwzMSkgfCA0NzAwLCAoMVU8PDMxKSB8IDQ2OTAsICgxVTw8MzEpIHwgNDY5MCwgCi0gICgxVTw8MzEpIHwgNDcxMCwgKDFVPDwzMSkgfCA0NjgxLCAoMVU8PDMxKSB8IDQ2ODEsICgxVTw8MzEpIHwgNDcxMCwgKDFVPDwzMSkgfCA0NjgxLCAoMVU8PDMxKSB8IDQ2ODEsICgxVTw8MzEpIHwgNDcxMCwgKDFVPDwzMSkgfCA0NjgxLCAKLSAgKDFVPDwzMSkgfCA0NjgxLCAoMVU8PDMxKSB8IDQ3MTAsICgxVTw8MzEpIHwgNDY4MSwgKDFVPDwzMSkgfCA0NjgxLCAweDg4LCAweDc3LCAweDc3LCAweDU0LCAKLSAgMHg1NCwgMHg1NCwgMHg1NCwgMHg1NCwgMHg1NCwgMHg1NCwgMHg1NCwgMHg0OCwgCi0gIDB4NDgsIDB4NDgsIDB4NDgsIDB4NDcsIDB4NDcsIDB4NDcsIDB4NDcsIDB4NTgsIAotICAweDU4LCAweDU4LCAweDU4LCAweDU3LCAweDU3LCAweDU3LCAweDU3LCAweDExLCAKLSAgMHgxNDEsIDB4MTEsIDB4MTQxLCAweDE0LCAweDE0NCwgMHgxMSwgMHgxNDEsICgxVTw8MzEpIHwgNDI5NCwgCi0gICgxVTw8MzEpIHwgMzYxMywgKDFVPDwzMSkgfCA0Mjk0LCAoMVU8PDMxKSB8IDM2MTMsICgxVTw8MzEpIHwgNDI5NCwgKDFVPDwzMSkgfCAzNjEzLCAoMVU8PDMxKSB8IDQyOTQsICgxVTw8MzEpIHwgMzYxMywgKDFVPDwzMSkgfCA0MzE0LCAKLSAgKDFVPDwzMSkgfCA0MzI2LCAoMVU8PDMxKSB8IDM2MzQsICgxVTw8MzEpIHwgMzY0NywgKDFVPDwzMSkgfCA0MzE0LCAoMVU8PDMxKSB8IDQzMjYsICgxVTw8MzEpIHwgMzYzNCwgKDFVPDwzMSkgfCAzNjQ3LCAoMVU8PDMxKSB8IDQ0NjcsIAotICAoMVU8PDMxKSB8IDQ0NjcsICgxVTw8MzEpIHwgNTAyNywgKDFVPDwzMSkgfCA1MDI3LCAoMVU8PDMxKSB8IDQ1MTcsICgxVTw8MzEpIHwgNDUxNywgKDFVPDwzMSkgfCA1MDc3LCAoMVU8PDMxKSB8IDUwNzcsICgxVTw8MzEpIHwgNDQ2NywgCi0gICgxVTw8MzEpIHwgNDQ2NywgKDFVPDwzMSkgfCA1MDI3LCAoMVU8PDMxKSB8IDUwMjcsICgxVTw8MzEpIHwgNDUxNywgKDFVPDwzMSkgfCA0NTE3LCAoMVU8PDMxKSB8IDUwNzcsICgxVTw8MzEpIHwgNTA3NywgKDFVPDwzMSkgfCA0NDY3LCAKLSAgKDFVPDwzMSkgfCA0NDY3LCAoMVU8PDMxKSB8IDUwMjcsICgxVTw8MzEpIHwgNTAyNywgKDFVPDwzMSkgfCA0NTE3LCAoMVU8PDMxKSB8IDQ1MTcsICgxVTw8MzEpIHwgNTA3NywgKDFVPDwzMSkgfCA1MDc3LCAoMVU8PDMxKSB8IDQ0NjcsIAotICAoMVU8PDMxKSB8IDQ0NjcsICgxVTw8MzEpIHwgNTAyNywgKDFVPDwzMSkgfCA1MDI3LCAoMVU8PDMxKSB8IDQ1MTcsICgxVTw8MzEpIHwgNDUxNywgKDFVPDwzMSkgfCA1MDc3LCAoMVU8PDMxKSB8IDUwNzcsICgxVTw8MzEpIHwgNDQ1NSwgCi0gICgxVTw8MzEpIHwgNTAxNSwgKDFVPDwzMSkgfCAzODQ1LCAoMVU8PDMxKSB8IDM4NTgsICgxVTw8MzEpIHwgNDQ1NSwgKDFVPDwzMSkgfCA1MDE1LCAoMVU8PDMxKSB8IDM4NDUsICgxVTw8MzEpIHwgMzg1OCwgKDFVPDwzMSkgfCA0Mjk0LCAKLSAgKDFVPDwzMSkgfCAzNjEzLCAoMVU8PDMxKSB8IDQyOTQsICgxVTw8MzEpIHwgMzYxMywgKDFVPDwzMSkgfCA0Mjk0LCAoMVU8PDMxKSB8IDM2MTMsICgxVTw8MzEpIHwgNDI5NCwgKDFVPDwzMSkgfCAzNjEzLCAoMVU8PDMxKSB8IDQzMTQsIAotICAoMVU8PDMxKSB8IDQzMjYsICgxVTw8MzEpIHwgMzYzNCwgKDFVPDwzMSkgfCAzNjQ3LCAoMVU8PDMxKSB8IDQzMTQsICgxVTw8MzEpIHwgNDMyNiwgKDFVPDwzMSkgfCAzNjM0LCAoMVU8PDMxKSB8IDM2NDcsICgxVTw8MzEpIHwgNDQ2NywgCi0gICgxVTw8MzEpIHwgNDQ2NywgKDFVPDwzMSkgfCA1MDI3LCAoMVU8PDMxKSB8IDUwMjcsICgxVTw8MzEpIHwgNDUxNywgKDFVPDwzMSkgfCA0NTE3LCAoMVU8PDMxKSB8IDUwNzcsICgxVTw8MzEpIHwgNTA3NywgKDFVPDwzMSkgfCA0NDY3LCAKLSAgKDFVPDwzMSkgfCA0NDY3LCAoMVU8PDMxKSB8IDUwMjcsICgxVTw8MzEpIHwgNTAyNywgKDFVPDwzMSkgfCA0NTE3LCAoMVU8PDMxKSB8IDQ1MTcsICgxVTw8MzEpIHwgNTA3NywgKDFVPDwzMSkgfCA1MDc3LCAoMVU8PDMxKSB8IDQ0NjcsIAotICAoMVU8PDMxKSB8IDQ0NjcsICgxVTw8MzEpIHwgNTAyNywgKDFVPDwzMSkgfCA1MDI3LCAoMVU8PDMxKSB8IDQ1MTcsICgxVTw8MzEpIHwgNDUxNywgKDFVPDwzMSkgfCA1MDc3LCAoMVU8PDMxKSB8IDUwNzcsICgxVTw8MzEpIHwgNDQ2NywgCi0gICgxVTw8MzEpIHwgNDQ2NywgKDFVPDwzMSkgfCA1MDI3LCAoMVU8PDMxKSB8IDUwMjcsICgxVTw8MzEpIHwgNDUxNywgKDFVPDwzMSkgfCA0NTE3LCAoMVU8PDMxKSB8IDUwNzcsICgxVTw8MzEpIHwgNTA3NywgKDFVPDwzMSkgfCA0NDU1LCAKLSAgKDFVPDwzMSkgfCA1MDE1LCAoMVU8PDMxKSB8IDM4NDUsICgxVTw8MzEpIHwgMzg1OCwgKDFVPDwzMSkgfCA0NDU1LCAoMVU8PDMxKSB8IDUwMTUsICgxVTw8MzEpIHwgMzg0NSwgKDFVPDwzMSkgfCAzODU4LCAoMVU8PDMxKSB8IDQyOTQsIAotICAoMVU8PDMxKSB8IDM2MTMsICgxVTw8MzEpIHwgNDI5NCwgKDFVPDwzMSkgfCAzNjEzLCAoMVU8PDMxKSB8IDQyOTQsICgxVTw8MzEpIHwgMzYxMywgKDFVPDwzMSkgfCA0Mjk0LCAoMVU8PDMxKSB8IDM2MTMsICgxVTw8MzEpIHwgNDMxNCwgCi0gICgxVTw8MzEpIHwgNDMyNiwgKDFVPDwzMSkgfCAzNjM0LCAoMVU8PDMxKSB8IDM2NDcsICgxVTw8MzEpIHwgNDMxNCwgKDFVPDwzMSkgfCA0MzI2LCAoMVU8PDMxKSB8IDM2MzQsICgxVTw8MzEpIHwgMzY0NywgKDFVPDwzMSkgfCA0NDY3LCAKLSAgKDFVPDwzMSkgfCA0NDY3LCAoMVU8PDMxKSB8IDUwMjcsICgxVTw8MzEpIHwgNTAyNywgKDFVPDwzMSkgfCA0NTE3LCAoMVU8PDMxKSB8IDQ1MTcsICgxVTw8MzEpIHwgNTA3NywgKDFVPDwzMSkgfCA1MDc3LCAoMVU8PDMxKSB8IDQ0NjcsIAotICAoMVU8PDMxKSB8IDQ0NjcsICgxVTw8MzEpIHwgNTAyNywgKDFVPDwzMSkgfCA1MDI3LCAoMVU8PDMxKSB8IDQ1MTcsICgxVTw8MzEpIHwgNDUxNywgKDFVPDwzMSkgfCA1MDc3LCAoMVU8PDMxKSB8IDUwNzcsICgxVTw8MzEpIHwgNDQ2NywgCi0gICgxVTw8MzEpIHwgNDQ2NywgKDFVPDwzMSkgfCA1MDI3LCAoMVU8PDMxKSB8IDUwMjcsICgxVTw8MzEpIHwgNDUxNywgKDFVPDwzMSkgfCA0NTE3LCAoMVU8PDMxKSB8IDUwNzcsICgxVTw8MzEpIHwgNTA3NywgKDFVPDwzMSkgfCA0NDY3LCAKLSAgKDFVPDwzMSkgfCA0NDY3LCAoMVU8PDMxKSB8IDUwMjcsICgxVTw8MzEpIHwgNTAyNywgKDFVPDwzMSkgfCA0NTE3LCAoMVU8PDMxKSB8IDQ1MTcsICgxVTw8MzEpIHwgNTA3NywgKDFVPDwzMSkgfCA1MDc3LCAoMVU8PDMxKSB8IDQ0NTUsIAotICAoMVU8PDMxKSB8IDUwMTUsICgxVTw8MzEpIHwgMzg0NSwgKDFVPDwzMSkgfCAzODU4LCAoMVU8PDMxKSB8IDQ0NTUsICgxVTw8MzEpIHwgNTAxNSwgKDFVPDwzMSkgfCAzODQ1LCAoMVU8PDMxKSB8IDM4NTgsICgxVTw8MzEpIHwgNTU3NCwgCi0gIDB4NTk1OTU5LCAweDU5NTk1OSwgMHg1OTU5NTksIDB4NTk1OTU5LCAweDJjMmMyYzJjLCAweDJjMmMyYywgMHg1OTU5NTksIDB4M2IzYjNiLCAKLSAgMHg0YTRhNGEsIDB4NTk1OSwgMHg0NDU5NTksIDB4NDQ0YTRhLCAweDQwLCAweDAsIDB4NDQyZTAsIDB4NDQyZTAsIAotICAweDQ0MmUwLCAweDQ0MmUwLCAweDJlMmMsIDB4MmUzYiwgMHgyZTRhLCAweDJlMmMsIDB4MmUyYywgMHgyZTRhLCAKLSAgMHgyZTRhLCAweDNiLCAweDRhMCwgMHgyZTJjMCwgMHgyZTNiMCwgMHgyZTRhMCwgMHgyZTRhMCwgMHgyZTRhMCwgCi0gIDB4MmMyYzJjLCAweDNiM2IzYiwgMHg0YTRhNGEsICgxVTw8MzEpIHwgNTU2MCwgMHg0YTRhNGEsICgxVTw8MzEpIHwgNTU1OCwgKDFVPDwzMSkgfCA1NTU4LCAweDJjMmMyYywgCi0gIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgyYzJjMmMsIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgyYzJjMmMsIDB4M2IzYjNiLCAweDRhNGE0YSwgCi0gIDB4MmMyYzJjLCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYzU5LCAweDQ0YTdhLCAweDQ0YTdhLCAweDJjNCwgMHg3YTdhNGEsIAorICAweDQsIDB4NCwgMHg0LCAweDQsIDB4NCwgMHg0LCAweDQsIDB4NCwgCisgIDB4NGY0LCAweDQ0NCwgMHg0NTUsIDB4NDU1LCAweDg4LCAweDc3LCAweDc3LCAweDg4LCAKKyAgMHg3NywgMHg3NywgMHg0NDQ0LCAweDQ0NDQsIDB4ODgsIDB4NzcsIDB4NzcsIDB4NDQ3NywgCisgIDB4NDQ0NCwgMHg0NDc3LCAweDQ0NDQsIDB4NDQ3NywgMHg0NDQ0LCAweDQ0NzQ3LCAweDQ0NDQ0LCAweDQ0NzQ3LCAKKyAgMHg0NDQ0NCwgMHg0NDc0NywgMHg0NDQ0NCwgMHg0NDc0NywgMHg0NDQ0NCwgMHg0NDc3LCAweDQ0NDQsIDB4NzcsIAorICAweDc3LCAweDc3LCAweDc3LCAweDc3LCAweDg4LCAweDc3LCAweDc3LCAweDg4LCAKKyAgMHg3NywgMHg3NywgMHg4OCwgMHg3NywgMHg3NywgMHg4OCwgMHg3NywgMHg3NywgCisgIDB4NDQ1MywgMHg0NDUzLCAweDQ0NTMsIDB4NDQ1NCwgMHg0NDU0LCAweDQ0NTQsIDB4NDQ1NSwgMHg0NDU1LCAKKyAgMHg0NDU1LCAweDQ0NTMsIDB4NDQ1MywgMHg0NDUzLCAoMVU8PDMxKSB8IDM2MzEsICgxVTw8MzEpIHwgMzYzMSwgKDFVPDwzMSkgfCAzNjMxLCAoMVU8PDMxKSB8IDM2NDcsIAorICAoMVU8PDMxKSB8IDM2NDcsICgxVTw8MzEpIHwgMzY0NywgKDFVPDwzMSkgfCAzNjY0LCAoMVU8PDMxKSB8IDM2NjQsICgxVTw8MzEpIHwgMzY2NCwgKDFVPDwzMSkgfCAzNjMxLCAoMVU8PDMxKSB8IDM2MzEsICgxVTw8MzEpIHwgMzYzMSwgCisgICgxVTw8MzEpIHwgMzYyMiwgKDFVPDwzMSkgfCAzNjIyLCAoMVU8PDMxKSB8IDM2MjIsICgxVTw8MzEpIHwgMzYzOCwgKDFVPDwzMSkgfCAzNjM4LCAoMVU8PDMxKSB8IDM2MzgsICgxVTw8MzEpIHwgMzYyMiwgKDFVPDwzMSkgfCAzNjIyLCAKKyAgKDFVPDwzMSkgfCAzNjIyLCAweDQ1MywgMHg0NTMsIDB4NDUzLCAweDQ1NCwgMHg0NTQsIDB4NDU0LCAweDQ1NSwgCisgIDB4NDU1LCAweDQ1NSwgMHg0NTMsIDB4NDUzLCAweDQ1MywgKDFVPDwzMSkgfCA0MDQ2LCAoMVU8PDMxKSB8IDQwNDYsICgxVTw8MzEpIHwgNDA0NiwgCisgICgxVTw8MzEpIHwgNDA2MCwgKDFVPDwzMSkgfCA0MDYwLCAoMVU8PDMxKSB8IDQwNjAsICgxVTw8MzEpIHwgNDA4MiwgKDFVPDwzMSkgfCA0MDgyLCAoMVU8PDMxKSB8IDQwODIsICgxVTw8MzEpIHwgNDA0NiwgKDFVPDwzMSkgfCA0MDQ2LCAKKyAgKDFVPDwzMSkgfCA0MDQ2LCAoMVU8PDMxKSB8IDQwMzgsICgxVTw8MzEpIHwgNDAzOCwgKDFVPDwzMSkgfCA0MDM4LCAoMVU8PDMxKSB8IDQwNTIsICgxVTw8MzEpIHwgNDA1MiwgKDFVPDwzMSkgfCA0MDUyLCAoMVU8PDMxKSB8IDQwMzgsIAorICAoMVU8PDMxKSB8IDQwMzgsICgxVTw8MzEpIHwgNDAzOCwgMHg0NDQ1MywgMHg0NDQ1MywgMHg0NDQ1MywgMHg0NDQ1NCwgMHg0NDQ1NCwgMHg0NDQ1NCwgCisgIDB4NDQ0NTUsIDB4NDQ0NTUsIDB4NDQ0NTUsIDB4NDQ0NTMsIDB4NDQ0NTMsIDB4NDQ0NTMsICgxVTw8MzEpIHwgMzM3NSwgKDFVPDwzMSkgfCAzMzc1LCAKKyAgKDFVPDwzMSkgfCAzMzc1LCAoMVU8PDMxKSB8IDMzOTMsICgxVTw8MzEpIHwgMzM5MywgKDFVPDwzMSkgfCAzMzkzLCAoMVU8PDMxKSB8IDM0MTIsICgxVTw8MzEpIHwgMzQxMiwgKDFVPDwzMSkgfCAzNDEyLCAoMVU8PDMxKSB8IDMzNzUsIAorICAoMVU8PDMxKSB8IDMzNzUsICgxVTw8MzEpIHwgMzM3NSwgKDFVPDwzMSkgfCAzMzY1LCAoMVU8PDMxKSB8IDMzNjUsICgxVTw8MzEpIHwgMzM2NSwgKDFVPDwzMSkgfCAzMzgzLCAoMVU8PDMxKSB8IDMzODMsICgxVTw8MzEpIHwgMzM4MywgCisgICgxVTw8MzEpIHwgMzM2NSwgKDFVPDwzMSkgfCAzMzY1LCAoMVU8PDMxKSB8IDMzNjUsIDB4NDQ1MywgMHg0NDUzLCAweDQ0NTMsIDB4NDQ1NCwgMHg0NDU0LCAKKyAgMHg0NDU0LCAweDQ0NTUsIDB4NDQ1NSwgMHg0NDU1LCAweDQ0NTMsIDB4NDQ1MywgMHg0NDUzLCAoMVU8PDMxKSB8IDM2MzEsIAorICAoMVU8PDMxKSB8IDM2MzEsICgxVTw8MzEpIHwgMzYzMSwgKDFVPDwzMSkgfCAzNjQ3LCAoMVU8PDMxKSB8IDM2NDcsICgxVTw8MzEpIHwgMzY0NywgKDFVPDwzMSkgfCAzNjY0LCAoMVU8PDMxKSB8IDM2NjQsICgxVTw8MzEpIHwgMzY2NCwgCisgICgxVTw8MzEpIHwgMzYzMSwgKDFVPDwzMSkgfCAzNjMxLCAoMVU8PDMxKSB8IDM2MzEsICgxVTw8MzEpIHwgMzYyMiwgKDFVPDwzMSkgfCAzNjIyLCAoMVU8PDMxKSB8IDM2MjIsICgxVTw8MzEpIHwgMzYzOCwgKDFVPDwzMSkgfCAzNjM4LCAKKyAgKDFVPDwzMSkgfCAzNjM4LCAoMVU8PDMxKSB8IDM2MjIsICgxVTw8MzEpIHwgMzYyMiwgKDFVPDwzMSkgfCAzNjIyLCAweDQ0NDUzLCAweDQ0NDUzLCAweDQ0NDUzLCAweDQ0NDU0LCAKKyAgMHg0NDQ1NCwgMHg0NDQ1NCwgMHg0NDQ1NSwgMHg0NDQ1NSwgMHg0NDQ1NSwgMHg0NDQ1MywgMHg0NDQ1MywgMHg0NDQ1MywgCisgICgxVTw8MzEpIHwgMzM3NSwgKDFVPDwzMSkgfCAzMzc1LCAoMVU8PDMxKSB8IDMzNzUsICgxVTw8MzEpIHwgMzM5MywgKDFVPDwzMSkgfCAzMzkzLCAoMVU8PDMxKSB8IDMzOTMsICgxVTw8MzEpIHwgMzQxMiwgKDFVPDwzMSkgfCAzNDEyLCAKKyAgKDFVPDwzMSkgfCAzNDEyLCAoMVU8PDMxKSB8IDMzNzUsICgxVTw8MzEpIHwgMzM3NSwgKDFVPDwzMSkgfCAzMzc1LCAoMVU8PDMxKSB8IDMzNjUsICgxVTw8MzEpIHwgMzM2NSwgKDFVPDwzMSkgfCAzMzY1LCAoMVU8PDMxKSB8IDMzODMsIAorICAoMVU8PDMxKSB8IDMzODMsICgxVTw8MzEpIHwgMzM4MywgKDFVPDwzMSkgfCAzMzY1LCAoMVU8PDMxKSB8IDMzNjUsICgxVTw8MzEpIHwgMzM2NSwgMHg1NCwgMHg1NCwgMHg1NCwgCisgIDB4NTQsIDB4NTQsIDB4NTQsIDB4MzQ0NTAsIDB4MzQ0NTAsIDB4MzQ0NTAsIDB4NDQ0NTAsIDB4NDQ0NTAsIAorICAweDQ0NDUwLCAweDU0NDUwLCAweDU0NDUwLCAweDU0NDUwLCAweDM0NDUwLCAweDM0NDUwLCAweDM0NDUwLCAweDMzNDQ1MCwgCisgIDB4MzM0NDUwLCAweDMzNDQ1MCwgMHg0NDQ0NTAsIDB4NDQ0NDUwLCAweDQ0NDQ1MCwgMHg1NTQ0NTAsIDB4NTU0NDUwLCAweDU1NDQ1MCwgCisgIDB4MzM0NDUwLCAweDMzNDQ1MCwgMHgzMzQ0NTAsIDB4MzMzMzQ0NTAsIDB4MzMzMzQ0NTAsIDB4MzMzMzQ0NTAsIDB4NDQ0NDQ0NTAsIDB4NDQ0NDQ0NTAsIAorICAweDQ0NDQ0NDUwLCAweDMzMzM0NDUwLCAweDMzMzM0NDUwLCAweDMzMzM0NDUwLCAweDM0NTAsIDB4MzQ1MCwgMHgzNDUwLCAweDQ0NTAsIAorICAweDQ0NTAsIDB4NDQ1MCwgMHg1NDUwLCAweDU0NTAsIDB4NTQ1MCwgMHgzNDUwLCAweDM0NTAsIDB4MzQ1MCwgCisgIDB4MzM0NTAsIDB4MzM0NTAsIDB4MzM0NTAsIDB4NDQ0NTAsIDB4NDQ0NTAsIDB4NDQ0NTAsIDB4NTU0NTAsIDB4NTU0NTAsIAorICAweDU1NDUwLCAweDMzNDUwLCAweDMzNDUwLCAweDMzNDUwLCAweDMzMzM0NTAsIDB4MzMzMzQ1MCwgMHgzMzMzNDUwLCAweDQ0NDQ0NTAsIAorICAweDQ0NDQ0NTAsIDB4NDQ0NDQ1MCwgMHgzMzMzNDUwLCAweDMzMzM0NTAsIDB4MzMzMzQ1MCwgMHgzNDQ0NTAsIDB4MzQ0NDUwLCAweDM0NDQ1MCwgCisgIDB4NDQ0NDUwLCAweDQ0NDQ1MCwgMHg0NDQ0NTAsIDB4NTQ0NDUwLCAweDU0NDQ1MCwgMHg1NDQ0NTAsIDB4MzQ0NDUwLCAweDM0NDQ1MCwgCisgIDB4MzQ0NDUwLCAweDMzNDQ0NTAsIDB4MzM0NDQ1MCwgMHgzMzQ0NDUwLCAweDQ0NDQ0NTAsIDB4NDQ0NDQ1MCwgMHg0NDQ0NDUwLCAweDU1NDQ0NTAsIAorICAweDU1NDQ0NTAsIDB4NTU0NDQ1MCwgMHgzMzQ0NDUwLCAweDMzNDQ0NTAsIDB4MzM0NDQ1MCwgKDFVPDwzMSkgfCA4MDUsICgxVTw8MzEpIHwgODA1LCAoMVU8PDMxKSB8IDgwNSwgCisgICgxVTw8MzEpIHwgMzMwMiwgKDFVPDwzMSkgfCAzMzAyLCAoMVU8PDMxKSB8IDMzMDIsICgxVTw8MzEpIHwgODA1LCAoMVU8PDMxKSB8IDgwNSwgKDFVPDwzMSkgfCA4MDUsIDB4MzQ0NTAsIDB4MzQ0NTAsIAorICAweDM0NDUwLCAweDQ0NDUwLCAweDQ0NDUwLCAweDQ0NDUwLCAweDU0NDUwLCAweDU0NDUwLCAweDU0NDUwLCAweDM0NDUwLCAKKyAgMHgzNDQ1MCwgMHgzNDQ1MCwgMHgzMzQ0NTAsIDB4MzM0NDUwLCAweDMzNDQ1MCwgMHg0NDQ0NTAsIDB4NDQ0NDUwLCAweDQ0NDQ1MCwgCisgIDB4NTU0NDUwLCAweDU1NDQ1MCwgMHg1NTQ0NTAsIDB4MzM0NDUwLCAweDMzNDQ1MCwgMHgzMzQ0NTAsIDB4MzMzMzQ0NTAsIDB4MzMzMzQ0NTAsIAorICAweDMzMzM0NDUwLCAweDQ0NDQ0NDUwLCAweDQ0NDQ0NDUwLCAweDQ0NDQ0NDUwLCAweDMzMzM0NDUwLCAweDMzMzM0NDUwLCAweDMzMzM0NDUwLCAweDM0NDQ1MCwgCisgIDB4MzQ0NDUwLCAweDM0NDQ1MCwgMHg0NDQ0NTAsIDB4NDQ0NDUwLCAweDQ0NDQ1MCwgMHg1NDQ0NTAsIDB4NTQ0NDUwLCAweDU0NDQ1MCwgCisgIDB4MzQ0NDUwLCAweDM0NDQ1MCwgMHgzNDQ0NTAsIDB4MzM0NDQ1MCwgMHgzMzQ0NDUwLCAweDMzNDQ0NTAsIDB4NDQ0NDQ1MCwgMHg0NDQ0NDUwLCAKKyAgMHg0NDQ0NDUwLCAweDU1NDQ0NTAsIDB4NTU0NDQ1MCwgMHg1NTQ0NDUwLCAweDMzNDQ0NTAsIDB4MzM0NDQ1MCwgMHgzMzQ0NDUwLCAoMVU8PDMxKSB8IDgwNSwgCisgICgxVTw8MzEpIHwgODA1LCAoMVU8PDMxKSB8IDgwNSwgKDFVPDwzMSkgfCAzMzAyLCAoMVU8PDMxKSB8IDMzMDIsICgxVTw8MzEpIHwgMzMwMiwgKDFVPDwzMSkgfCA4MDUsICgxVTw8MzEpIHwgODA1LCAoMVU8PDMxKSB8IDgwNSwgCisgIDB4MzQ0NTAsIDB4NDQ0NTAsIDB4MzQ0NTAsIDB4MzM0NDUwLCAweDQ0NDQ1MCwgMHgzMzQ0NTAsIDB4MzMzMzQ0NTAsIDB4NDQ0NDQ0NTAsIAorICAweDMzMzM0NDUwLCAweDM0NTAsIDB4NDQ1MCwgMHgzNDUwLCAweDMzNDUwLCAweDQ0NDUwLCAweDMzNDUwLCAweDMzMzM0NTAsIAorICAweDQ0NDQ0NTAsIDB4MzMzMzQ1MCwgMHgzNDQ0NTAsIDB4NDQ0NDUwLCAweDM0NDQ1MCwgMHgzMzQ0NDUwLCAweDQ0NDQ0NTAsIDB4MzM0NDQ1MCwgCisgICgxVTw8MzEpIHwgODA1LCAoMVU8PDMxKSB8IDMzMDIsICgxVTw8MzEpIHwgODA1LCAweDM0NDUwLCAweDQ0NDUwLCAweDM0NDUwLCAweDMzNDQ1MCwgMHg0NDQ0NTAsIAorICAweDMzNDQ1MCwgMHgzMzMzNDQ1MCwgMHg0NDQ0NDQ1MCwgMHgzMzMzNDQ1MCwgMHgzNDQ0NTAsIDB4NDQ0NDUwLCAweDM0NDQ1MCwgMHgzMzQ0NDUwLCAKKyAgMHg0NDQ0NDUwLCAweDMzNDQ0NTAsICgxVTw8MzEpIHwgODA1LCAoMVU8PDMxKSB8IDMzMDIsICgxVTw8MzEpIHwgODA1LCAweDU1LCAoMVU8PDMxKSB8IDUzMDUsICgxVTw8MzEpIHwgNTI5MywgCisgICgxVTw8MzEpIHwgNTI5MywgKDFVPDwzMSkgfCA1MjE3LCAoMVU8PDMxKSB8IDUyMDYsICgxVTw8MzEpIHwgNTIwNiwgKDFVPDwzMSkgfCA1MTM4LCAoMVU8PDMxKSB8IDM2NzEsICgxVTw8MzEpIHwgNTEyOCwgKDFVPDwzMSkgfCAzNjU0LCAKKyAgKDFVPDwzMSkgfCA1MTI4LCAoMVU8PDMxKSB8IDM2NTQsICgxVTw8MzEpIHwgNTM0OSwgKDFVPDwzMSkgfCA1MzM4LCAoMVU8PDMxKSB8IDUzMzgsICgxVTw8MzEpIHwgNTI2MywgKDFVPDwzMSkgfCA1MjUzLCAoMVU8PDMxKSB8IDUyNTMsIAorICAoMVU8PDMxKSB8IDUxNzksICgxVTw8MzEpIHwgNDA4OCwgKDFVPDwzMSkgfCA1MTcwLCAoMVU8PDMxKSB8IDQwNjYsICgxVTw8MzEpIHwgNTE3MCwgKDFVPDwzMSkgfCA0MDY2LCAoMVU8PDMxKSB8IDU0OTUsICgxVTw8MzEpIHwgNTQ4MCwgCisgICgxVTw8MzEpIHwgNTQ4MCwgKDFVPDwzMSkgfCA1MzA1LCAoMVU8PDMxKSB8IDUyOTMsICgxVTw8MzEpIHwgNTI5MywgKDFVPDwzMSkgfCA1MjE3LCAoMVU8PDMxKSB8IDM0MjAsICgxVTw8MzEpIHwgNTIwNiwgKDFVPDwzMSkgfCAzNDAxLCAKKyAgKDFVPDwzMSkgfCA1MjA2LCAoMVU8PDMxKSB8IDM0MDEsICgxVTw8MzEpIHwgNTU1MSwgKDFVPDwzMSkgfCA1NTM3LCAoMVU8PDMxKSB8IDU1MzcsICgxVTw8MzEpIHwgNTM0OSwgKDFVPDwzMSkgfCA1MzM4LCAoMVU8PDMxKSB8IDUzMzgsIAorICAoMVU8PDMxKSB8IDUyNjMsICgxVTw8MzEpIHwgMzY3MSwgKDFVPDwzMSkgfCA1MjUzLCAoMVU8PDMxKSB8IDM2NTQsICgxVTw8MzEpIHwgNTI1MywgKDFVPDwzMSkgfCAzNjU0LCAoMVU8PDMxKSB8IDU3MjMsICgxVTw8MzEpIHwgNTcwNiwgCisgICgxVTw8MzEpIHwgNTcwNiwgKDFVPDwzMSkgfCA1NDQzLCAoMVU8PDMxKSB8IDU0MzEsICgxVTw8MzEpIHwgNTQzMSwgKDFVPDwzMSkgfCA1MzQ5LCAoMVU8PDMxKSB8IDM0MjAsICgxVTw8MzEpIHwgNTMzOCwgKDFVPDwzMSkgfCAzNDAxLCAKKyAgKDFVPDwzMSkgfCA1MzM4LCAoMVU8PDMxKSB8IDM0MDEsICgxVTw8MzEpIHwgNTM5NSwgKDFVPDwzMSkgfCA1MzgyLCAoMVU8PDMxKSB8IDUzODIsICgxVTw8MzEpIHwgNTMwNSwgKDFVPDwzMSkgfCA1MjkzLCAoMVU8PDMxKSB8IDUyOTMsIAorICAoMVU8PDMxKSB8IDU0NDMsICgxVTw8MzEpIHwgNTQzMSwgKDFVPDwzMSkgfCA1NDMxLCAoMVU8PDMxKSB8IDUzNDksICgxVTw8MzEpIHwgNTMzOCwgKDFVPDwzMSkgfCA1MzM4LCAoMVU8PDMxKSB8IDUzMTcsICgxVTw8MzEpIHwgNTI4MiwgCisgICgxVTw8MzEpIHwgNTI4MiwgKDFVPDwzMSkgfCA1MjI4LCAoMVU8PDMxKSB8IDUxOTYsICgxVTw8MzEpIHwgNTE5NiwgKDFVPDwzMSkgfCA1MTQ4LCAoMVU8PDMxKSB8IDM2ODEsICgxVTw8MzEpIHwgNTExOSwgKDFVPDwzMSkgfCAzNjM4LCAKKyAgKDFVPDwzMSkgfCA1MTE5LCAoMVU8PDMxKSB8IDM2MzgsICgxVTw8MzEpIHwgNTM2MCwgKDFVPDwzMSkgfCA1MzI4LCAoMVU8PDMxKSB8IDUzMjgsICgxVTw8MzEpIHwgNTI3MywgKDFVPDwzMSkgfCA1MjQ0LCAoMVU8PDMxKSB8IDUyNDQsIAorICAoMVU8PDMxKSB8IDUxODgsICgxVTw8MzEpIHwgNDA5NywgKDFVPDwzMSkgfCA1MTYyLCAoMVU8PDMxKSB8IDQwNTIsICgxVTw8MzEpIHwgNTE2MiwgKDFVPDwzMSkgfCA0MDUyLCAoMVU8PDMxKSB8IDU1MTAsICgxVTw8MzEpIHwgNTQ2NiwgCisgICgxVTw8MzEpIHwgNTQ2NiwgKDFVPDwzMSkgfCA1MzE3LCAoMVU8PDMxKSB8IDUyODIsICgxVTw8MzEpIHwgNTI4MiwgKDFVPDwzMSkgfCA1MjI4LCAoMVU8PDMxKSB8IDM0MzEsICgxVTw8MzEpIHwgNTE5NiwgKDFVPDwzMSkgfCAzMzgzLCAKKyAgKDFVPDwzMSkgfCA1MTk2LCAoMVU8PDMxKSB8IDMzODMsICgxVTw8MzEpIHwgNTU2NSwgKDFVPDwzMSkgfCA1NTI0LCAoMVU8PDMxKSB8IDU1MjQsICgxVTw8MzEpIHwgNTM2MCwgKDFVPDwzMSkgfCA1MzI4LCAoMVU8PDMxKSB8IDUzMjgsIAorICAoMVU8PDMxKSB8IDUyNzMsICgxVTw8MzEpIHwgMzY4MSwgKDFVPDwzMSkgfCA1MjQ0LCAoMVU8PDMxKSB8IDM2MzgsICgxVTw8MzEpIHwgNTI0NCwgKDFVPDwzMSkgfCAzNjM4LCAoMVU8PDMxKSB8IDU3NDAsICgxVTw8MzEpIHwgNTY5MCwgCisgICgxVTw8MzEpIHwgNTY5MCwgKDFVPDwzMSkgfCA1NDU1LCAoMVU8PDMxKSB8IDU0MjAsICgxVTw8MzEpIHwgNTQyMCwgKDFVPDwzMSkgfCA1MzYwLCAoMVU8PDMxKSB8IDM0MzEsICgxVTw8MzEpIHwgNTMyOCwgKDFVPDwzMSkgfCAzMzgzLCAKKyAgKDFVPDwzMSkgfCA1MzI4LCAoMVU8PDMxKSB8IDMzODMsICgxVTw8MzEpIHwgNTQwOCwgKDFVPDwzMSkgfCA1MzcwLCAoMVU8PDMxKSB8IDUzNzAsICgxVTw8MzEpIHwgNTMxNywgKDFVPDwzMSkgfCA1MjgyLCAoMVU8PDMxKSB8IDUyODIsIAorICAoMVU8PDMxKSB8IDU0NTUsICgxVTw8MzEpIHwgNTQyMCwgKDFVPDwzMSkgfCA1NDIwLCAoMVU8PDMxKSB8IDUzNjAsICgxVTw8MzEpIHwgNTMyOCwgKDFVPDwzMSkgfCA1MzI4LCAoMVU8PDMxKSB8IDQ4OTAsIDB4NGY1LCAKKyAgKDFVPDwzMSkgfCA1MjYzLCAoMVU8PDMxKSB8IDUyNTMsICgxVTw8MzEpIHwgNTI1MywgKDFVPDwzMSkgfCA1MjYzLCAoMVU8PDMxKSB8IDUyNTMsICgxVTw8MzEpIHwgNTI1MywgKDFVPDwzMSkgfCA1MjYzLCAoMVU8PDMxKSB8IDUyNTMsIAorICAoMVU8PDMxKSB8IDUyNTMsICgxVTw8MzEpIHwgNTI2MywgKDFVPDwzMSkgfCA1MjUzLCAoMVU8PDMxKSB8IDUyNTMsICgxVTw8MzEpIHwgNTI3MywgKDFVPDwzMSkgfCA1MjQ0LCAoMVU8PDMxKSB8IDUyNDQsICgxVTw8MzEpIHwgNTI3MywgCisgICgxVTw8MzEpIHwgNTI0NCwgKDFVPDwzMSkgfCA1MjQ0LCAoMVU8PDMxKSB8IDUyNzMsICgxVTw8MzEpIHwgNTI0NCwgKDFVPDwzMSkgfCA1MjQ0LCAoMVU8PDMxKSB8IDUyNzMsICgxVTw8MzEpIHwgNTI0NCwgKDFVPDwzMSkgfCA1MjQ0LCAKKyAgMHg4OCwgMHg3NywgMHg3NywgMHg1NCwgMHg1NCwgMHg1NCwgMHg1NCwgMHg1NCwgCisgIDB4NTQsIDB4NTQsIDB4NTQsIDB4NDgsIDB4NDgsIDB4NDgsIDB4NDgsIDB4NDcsIAorICAweDQ3LCAweDQ3LCAweDQ3LCAweDU4LCAweDU4LCAweDU4LCAweDU4LCAweDU3LCAKKyAgMHg1NywgMHg1NywgMHg1NywgMHgxMSwgMHgxNDEsIDB4MTEsIDB4MTQxLCAweDE0LCAKKyAgMHgxNDQsIDB4MTEsIDB4MTQxLCAoMVU8PDMxKSB8IDQ4NDYsICgxVTw8MzEpIHwgMzk2MCwgKDFVPDwzMSkgfCA0ODQ2LCAoMVU8PDMxKSB8IDM5NjAsICgxVTw8MzEpIHwgNDg0NiwgCisgICgxVTw8MzEpIHwgMzk2MCwgKDFVPDwzMSkgfCA0ODQ2LCAoMVU8PDMxKSB8IDM5NjAsICgxVTw8MzEpIHwgNDg2NiwgKDFVPDwzMSkgfCA0ODc4LCAoMVU8PDMxKSB8IDM5ODEsICgxVTw8MzEpIHwgMzk5NCwgKDFVPDwzMSkgfCA0ODY2LCAKKyAgKDFVPDwzMSkgfCA0ODc4LCAoMVU8PDMxKSB8IDM5ODEsICgxVTw8MzEpIHwgMzk5NCwgKDFVPDwzMSkgfCA1MDE5LCAoMVU8PDMxKSB8IDUwMTksICgxVTw8MzEpIHwgNTU5MCwgKDFVPDwzMSkgfCA1NTkwLCAoMVU8PDMxKSB8IDUwNjksIAorICAoMVU8PDMxKSB8IDUwNjksICgxVTw8MzEpIHwgNTY0MCwgKDFVPDwzMSkgfCA1NjQwLCAoMVU8PDMxKSB8IDUwMTksICgxVTw8MzEpIHwgNTAxOSwgKDFVPDwzMSkgfCA1NTkwLCAoMVU8PDMxKSB8IDU1OTAsICgxVTw8MzEpIHwgNTA2OSwgCisgICgxVTw8MzEpIHwgNTA2OSwgKDFVPDwzMSkgfCA1NjQwLCAoMVU8PDMxKSB8IDU2NDAsICgxVTw8MzEpIHwgNTAxOSwgKDFVPDwzMSkgfCA1MDE5LCAoMVU8PDMxKSB8IDU1OTAsICgxVTw8MzEpIHwgNTU5MCwgKDFVPDwzMSkgfCA1MDY5LCAKKyAgKDFVPDwzMSkgfCA1MDY5LCAoMVU8PDMxKSB8IDU2NDAsICgxVTw8MzEpIHwgNTY0MCwgKDFVPDwzMSkgfCA1MDE5LCAoMVU8PDMxKSB8IDUwMTksICgxVTw8MzEpIHwgNTU5MCwgKDFVPDwzMSkgfCA1NTkwLCAoMVU8PDMxKSB8IDUwNjksIAorICAoMVU8PDMxKSB8IDUwNjksICgxVTw8MzEpIHwgNTY0MCwgKDFVPDwzMSkgfCA1NjQwLCAoMVU8PDMxKSB8IDUwMDcsICgxVTw8MzEpIHwgNTU3OCwgKDFVPDwzMSkgfCA0MjY1LCAoMVU8PDMxKSB8IDQyNzgsICgxVTw8MzEpIHwgNTAwNywgCisgICgxVTw8MzEpIHwgNTU3OCwgKDFVPDwzMSkgfCA0MjY1LCAoMVU8PDMxKSB8IDQyNzgsICgxVTw8MzEpIHwgNDg0NiwgKDFVPDwzMSkgfCAzOTYwLCAoMVU8PDMxKSB8IDQ4NDYsICgxVTw8MzEpIHwgMzk2MCwgKDFVPDwzMSkgfCA0ODQ2LCAKKyAgKDFVPDwzMSkgfCAzOTYwLCAoMVU8PDMxKSB8IDQ4NDYsICgxVTw8MzEpIHwgMzk2MCwgKDFVPDwzMSkgfCA0ODY2LCAoMVU8PDMxKSB8IDQ4NzgsICgxVTw8MzEpIHwgMzk4MSwgKDFVPDwzMSkgfCAzOTk0LCAoMVU8PDMxKSB8IDQ4NjYsIAorICAoMVU8PDMxKSB8IDQ4NzgsICgxVTw8MzEpIHwgMzk4MSwgKDFVPDwzMSkgfCAzOTk0LCAoMVU8PDMxKSB8IDUwMTksICgxVTw8MzEpIHwgNTAxOSwgKDFVPDwzMSkgfCA1NTkwLCAoMVU8PDMxKSB8IDU1OTAsICgxVTw8MzEpIHwgNTA2OSwgCisgICgxVTw8MzEpIHwgNTA2OSwgKDFVPDwzMSkgfCA1NjQwLCAoMVU8PDMxKSB8IDU2NDAsICgxVTw8MzEpIHwgNTAxOSwgKDFVPDwzMSkgfCA1MDE5LCAoMVU8PDMxKSB8IDU1OTAsICgxVTw8MzEpIHwgNTU5MCwgKDFVPDwzMSkgfCA1MDY5LCAKKyAgKDFVPDwzMSkgfCA1MDY5LCAoMVU8PDMxKSB8IDU2NDAsICgxVTw8MzEpIHwgNTY0MCwgKDFVPDwzMSkgfCA1MDE5LCAoMVU8PDMxKSB8IDUwMTksICgxVTw8MzEpIHwgNTU5MCwgKDFVPDwzMSkgfCA1NTkwLCAoMVU8PDMxKSB8IDUwNjksIAorICAoMVU8PDMxKSB8IDUwNjksICgxVTw8MzEpIHwgNTY0MCwgKDFVPDwzMSkgfCA1NjQwLCAoMVU8PDMxKSB8IDUwMTksICgxVTw8MzEpIHwgNTAxOSwgKDFVPDwzMSkgfCA1NTkwLCAoMVU8PDMxKSB8IDU1OTAsICgxVTw8MzEpIHwgNTA2OSwgCisgICgxVTw8MzEpIHwgNTA2OSwgKDFVPDwzMSkgfCA1NjQwLCAoMVU8PDMxKSB8IDU2NDAsICgxVTw8MzEpIHwgNTAwNywgKDFVPDwzMSkgfCA1NTc4LCAoMVU8PDMxKSB8IDQyNjUsICgxVTw8MzEpIHwgNDI3OCwgKDFVPDwzMSkgfCA1MDA3LCAKKyAgKDFVPDwzMSkgfCA1NTc4LCAoMVU8PDMxKSB8IDQyNjUsICgxVTw8MzEpIHwgNDI3OCwgKDFVPDwzMSkgfCA0ODQ2LCAoMVU8PDMxKSB8IDM5NjAsICgxVTw8MzEpIHwgNDg0NiwgKDFVPDwzMSkgfCAzOTYwLCAoMVU8PDMxKSB8IDQ4NDYsIAorICAoMVU8PDMxKSB8IDM5NjAsICgxVTw8MzEpIHwgNDg0NiwgKDFVPDwzMSkgfCAzOTYwLCAoMVU8PDMxKSB8IDQ4NjYsICgxVTw8MzEpIHwgNDg3OCwgKDFVPDwzMSkgfCAzOTgxLCAoMVU8PDMxKSB8IDM5OTQsICgxVTw8MzEpIHwgNDg2NiwgCisgICgxVTw8MzEpIHwgNDg3OCwgKDFVPDwzMSkgfCAzOTgxLCAoMVU8PDMxKSB8IDM5OTQsICgxVTw8MzEpIHwgNTAxOSwgKDFVPDwzMSkgfCA1MDE5LCAoMVU8PDMxKSB8IDU1OTAsICgxVTw8MzEpIHwgNTU5MCwgKDFVPDwzMSkgfCA1MDY5LCAKKyAgKDFVPDwzMSkgfCA1MDY5LCAoMVU8PDMxKSB8IDU2NDAsICgxVTw8MzEpIHwgNTY0MCwgKDFVPDwzMSkgfCA1MDE5LCAoMVU8PDMxKSB8IDUwMTksICgxVTw8MzEpIHwgNTU5MCwgKDFVPDwzMSkgfCA1NTkwLCAoMVU8PDMxKSB8IDUwNjksIAorICAoMVU8PDMxKSB8IDUwNjksICgxVTw8MzEpIHwgNTY0MCwgKDFVPDwzMSkgfCA1NjQwLCAoMVU8PDMxKSB8IDUwMTksICgxVTw8MzEpIHwgNTAxOSwgKDFVPDwzMSkgfCA1NTkwLCAoMVU8PDMxKSB8IDU1OTAsICgxVTw8MzEpIHwgNTA2OSwgCisgICgxVTw8MzEpIHwgNTA2OSwgKDFVPDwzMSkgfCA1NjQwLCAoMVU8PDMxKSB8IDU2NDAsICgxVTw8MzEpIHwgNTAxOSwgKDFVPDwzMSkgfCA1MDE5LCAoMVU8PDMxKSB8IDU1OTAsICgxVTw8MzEpIHwgNTU5MCwgKDFVPDwzMSkgfCA1MDY5LCAKKyAgKDFVPDwzMSkgfCA1MDY5LCAoMVU8PDMxKSB8IDU2NDAsICgxVTw8MzEpIHwgNTY0MCwgKDFVPDwzMSkgfCA1MDA3LCAoMVU8PDMxKSB8IDU1NzgsICgxVTw8MzEpIHwgNDI2NSwgKDFVPDwzMSkgfCA0Mjc4LCAoMVU8PDMxKSB8IDUwMDcsIAorICAoMVU8PDMxKSB8IDU1NzgsICgxVTw8MzEpIHwgNDI2NSwgKDFVPDwzMSkgfCA0Mjc4LCAoMVU8PDMxKSB8IDYxMzcsIDB4NTk1OTU5LCAweDU5NTk1OSwgMHg1OTU5NTksIDB4NTk1OTU5LCAKKyAgMHgyYzJjMmMyYywgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4NTk1OSwgMHg0NDU5NTksIDB4NDQ0YTRhLCAKKyAgMHg0MCwgMHgwLCAweDQ0MmUwLCAweDQ0MmUwLCAweDQ0MmUwLCAweDQ0MmUwLCAweDJlMmMsIDB4MmUzYiwgCisgIDB4MmU0YSwgMHgyZTJjLCAweDJlMmMsIDB4MmU0YSwgMHgyZTRhLCAweDNiLCAweDRhMCwgMHgyZTJjMCwgCisgIDB4MmUzYjAsIDB4MmU0YTAsIDB4MmU0YTAsIDB4MmU0YTAsIDB4MmMyYzJjLCAweDNiM2IzYiwgMHg0YTRhNGEsICgxVTw8MzEpIHwgNjEyMywgCisgIDB4NGE0YTRhLCAoMVU8PDMxKSB8IDYxMjEsICgxVTw8MzEpIHwgNjEyMSwgMHgyYzJjMmMsIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgyYzJjMmMsIDB4M2IzYjNiLCAKKyAgMHg0YTRhNGEsIDB4MmMyYzJjLCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYzJjLCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYzU5LCAKKyAgMHg0NGE3YSwgMHg0NGE3YSwgMHgyYzQsIDB4N2E3YTRhLCAweDdhN2E0NCwgMHg3YTdhNGEsIDB4N2E3YTQ0LCAweDJjMmMyYywgCisgIDB4MmMyYzQ0LCAweDU5NTk1OSwgMHg1OTU5NDQsIDB4M2IzYjNiLCAweDNiM2I0NCwgMHg0YTRhNGEsIDB4NGE0YTQ0LCAweDdhN2E0YSwgCiAgIDB4N2E3YTQ0LCAweDdhN2E0YSwgMHg3YTdhNDQsIDB4MmMyYzJjLCAweDJjMmM0NCwgMHg1OTU5NTksIDB4NTk1OTQ0LCAweDNiM2IzYiwgCi0gIDB4M2IzYjQ0LCAweDRhNGE0YSwgMHg0YTRhNDQsIDB4N2E3YTRhLCAweDdhN2E0NCwgMHg3YTdhNGEsIDB4N2E3YTQ0LCAweDJjMmMyYywgCi0gIDB4MmMyYzQ0LCAweDU5NTk1OSwgMHg1OTU5NDQsIDB4M2IzYjNiLCAweDNiM2I0NCwgMHg0YTRhNGEsIDB4NGE0YTQ0LCAweDJjMmMyYywgCi0gIDB4MmMyYzQ0LCAweDU5NTk1OSwgMHg1OTU5NDQsIDB4M2IzYjNiLCAweDNiM2I0NCwgMHg0YTRhNGEsIDB4NGE0YTQ0LCAweDJjMmMyYywgCi0gIDB4MmMyYzQ0LCAweDNiM2IzYiwgMHgzYjNiNDQsIDB4NGE0YTRhLCAweDRhNGE0NCwgMHgyYzJjMmMsIDB4MmMyYzQ0LCAweDNiM2IzYiwgCi0gIDB4M2IzYjQ0LCAweDRhNGE0YSwgMHg0YTRhNDQsIDB4NDdhNGEsIDB4NDdhNGEsIDB4MmM0LCAweDdhN2EsIDB4MmMyYywgCi0gIDB4N2E3YSwgMHg3YTdhN2E3YSwgMHg3YTdhN2EsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDJjMmMyYywgCi0gIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4M2IzYjNiM2IsIDB4M2IzYjNiM2IsIDB4N2E3YTdhLCAweDJjMmMyYywgMHg1OTU5NTksIAotICAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDNiM2IzYjNiLCAweDRhMmMyYzRhLCAKLSAgMHg0YTNiM2I0YSwgMHg0YTNiM2I0YSwgMHg0YTJjMmM0YSwgMHg0YTNiM2I0YSwgMHg0YTNiM2I0YSwgMHgyYzJjM2IsIDB4M2IzYjRhLCAweDRhNGE1OSwgCi0gIDB4MmMyYzNiLCAweDNiM2I0YSwgMHg0YTRhNTksIDB4MmMyYzNiLCAweDNiM2I0YSwgMHg0YTRhNTksIDB4MmMyYzNiLCAweDNiM2I0YSwgCi0gIDB4NGE0YTU5LCAweDdhN2E3YTdhLCAweDJjNGE0YTRhLCAweDRhNGEzYiwgMHg1OTU5NGEsIDB4NTk1OTRhLCAweDNiM2IyYywgMHgzYjNiMmMsIAotICAweDRhNGEzYiwgMHg0YTRhM2IsIDB4NTk1OTRhLCAweDNiM2IyYywgMHg0YTRhM2IsIDB4NTk1OSwgKDFVPDwzMSkgfCA1NTYyLCAweDRhNGEsIAotICAweDdhN2EsIDB4N2E3YSwgMHg3YTdhLCAweDdhN2EsIDB4N2E3YSwgMHgyYzJjMmMsIDB4NTk1OTU5LCAweDU5NTk1OTU5LCAKLSAgMHg1OTU5NTksIDB4M2IzYjNiLCAweDRhNGE0YSwgMHg0YTRhNGE0YSwgMHg0YTRhNGEsIDB4N2E3YSwgMHg0YTRhNGE0YSwgMHg0YTRhNGEsIAotICAweDJjMmMyYywgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDJjMmMyYywgMHg0YTRhNGEsIDB4NGE0YTRhLCAweDJjMmMyYywgMHgzYjNiM2IsIAotICAweDRhNGE0YSwgMHgyYzJjMmMsIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgyYzJjMmMsIDB4NGE0YTRhLCAoMVU8PDMxKSB8IDU1NjAsIDB4NGE0YTRhLCAKLSAgKDFVPDwzMSkgfCA1NTU4LCAoMVU8PDMxKSB8IDU1NTgsIDB4MmMyYzJjLCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYzJjLCAweDNiM2IzYiwgMHg0YTRhNGEsIAotICAweDRhNGE0YSwgMHg0YTJjNGEsIDB4NGEzYjRhLCAweDRhMmM0YSwgMHg0YTRhNGEsIDB4M2I0YSwgMHgyYzNiLCAweDNiNGEsIAotICAweDRhNTksIDB4M2I0YSwgMHgyYzNiLCAweDNiNGEsIDB4NGE1OSwgMHg1NTUsIDB4MWYwLCAweDJlMCwgCi0gIDB4MmUwLCAweDJlMCwgMHgyZTAsIDB4MmUwLCAweDJlMCwgMHgyZTAsIDB4MmUwLCAweDU1NSwgCi0gIDB4NTU1LCAoMVU8PDMxKSB8IDU1NzQsIDB4NDQ0LCAweDQ0NCwgKDFVPDwzMSkgfCA1NTczLCAweDUsIDB4NSwgMHg1LCAKLSAgMHg1LCAweDEsIDB4MCwgMHgxZjAsICgxVTw8MzEpIHwgNTU3NCwgMHg4YThhLCAweDhhOGE4YSwgMHg4YThhOGEsIAotICAweDhhOGEsIDB4OGE4YSwgMHg4YThhLCAweDhhOGEsIDB4OGE4YThhLCAweDhhOGE4YSwgMHg4YThhOGEsIDB4OGE4YThhLCAKLSAgMHg4YThhLCAweDhhOGEsIDB4OGE4YSwgMHg4YThhLCAweDhhOGEsIDB4OGE4YSwgMHg4YThhLCAweDhhOGEsIAotICAweDQ4YThhOGEsICgxVTw8MzEpIHwgNTI0NiwgKDFVPDwzMSkgfCA1MjQ2LCAoMVU8PDMxKSB8IDUyNDYsICgxVTw8MzEpIHwgNTI0NiwgMHg4YThhOGEsIDB4OGE4YThhLCAweDhhOGEsIAotICAweDhhOGEsICgxVTw8MzEpIHwgNTI0NiwgKDFVPDwzMSkgfCA1MjQ2LCAoMVU8PDMxKSB8IDUyNDYsICgxVTw8MzEpIHwgNTI0NiwgKDFVPDwzMSkgfCA1MjQ2LCAweDhhOGEsIDB4OGE4YSwgCi0gIDB4OGE4YSwgMHg4YThhLCAweDhhOGEsIDB4OGE4YSwgMHg4YThhLCAweDhhOGEsIDB4OGE4YSwgKDFVPDwzMSkgfCA1MjQ2LCAKLSAgMHg4YThhOGEsIDB4OGE4YThhLCAweDhhOGE4YSwgKDFVPDwzMSkgfCA1MjQ2LCAoMVU8PDMxKSB8IDUyNDYsIDB4OGE4YThhLCAweDhhOGE4YSwgKDFVPDwzMSkgfCA1MjQ2LCAKLSAgKDFVPDwzMSkgfCA1MjQ2LCAoMVU8PDMxKSB8IDUyNDYsICgxVTw8MzEpIHwgNTI0NiwgKDFVPDwzMSkgfCA1MjQ2LCAoMVU8PDMxKSB8IDUyNDYsIDB4NDhhLCAweDJlOGEsIDB4MmU4YSwgCisgIDB4M2IzYjQ0LCAweDRhNGE0YSwgMHg0YTRhNDQsIDB4MmMyYzJjLCAweDJjMmM0NCwgMHg1OTU5NTksIDB4NTk1OTQ0LCAweDNiM2IzYiwgCisgIDB4M2IzYjQ0LCAweDRhNGE0YSwgMHg0YTRhNDQsIDB4MmMyYzJjLCAweDJjMmM0NCwgMHgzYjNiM2IsIDB4M2IzYjQ0LCAweDRhNGE0YSwgCisgIDB4NGE0YTQ0LCAweDJjMmMyYywgMHgyYzJjNDQsIDB4M2IzYjNiLCAweDNiM2I0NCwgMHg0YTRhNGEsIDB4NGE0YTQ0LCAweDQ3YTRhLCAKKyAgMHg0N2E0YSwgMHgyYzQsIDB4N2E3YSwgMHgyYzJjLCAweDdhN2EsIDB4N2E3YTdhN2EsIDB4N2E3YTdhLCAweDJjMmMyYywgCisgIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDNiM2IzYjNiLCAKKyAgMHgzYjNiM2IzYiwgMHg3YTdhN2EsIDB4MmMyYzJjLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NGE0YTRhLCAweDJjMmMyYywgMHg1OTU5NTksIAorICAweDNiM2IzYiwgMHg0YTRhNGEsIDB4M2IzYjNiM2IsIDB4NGEyYzJjNGEsIDB4NGEzYjNiNGEsIDB4NGEzYjNiNGEsIDB4NGEyYzJjNGEsIDB4NGEzYjNiNGEsIAorICAweDRhM2IzYjRhLCAweDJjMmMzYiwgMHgzYjNiNGEsIDB4NGE0YTU5LCAweDJjMmMzYiwgMHgzYjNiNGEsIDB4NGE0YTU5LCAweDJjMmMzYiwgCisgIDB4M2IzYjRhLCAweDRhNGE1OSwgMHgyYzJjM2IsIDB4M2IzYjRhLCAweDRhNGE1OSwgMHg3YTdhN2E3YSwgMHgyYzRhNGE0YSwgMHg0YTRhM2IsIAorICAweDU5NTk0YSwgMHg1OTU5NGEsIDB4M2IzYjJjLCAweDNiM2IyYywgMHg0YTRhM2IsIDB4NGE0YTNiLCAweDU5NTk0YSwgMHgzYjNiMmMsIAorICAweDRhNGEzYiwgMHg1OTU5LCAoMVU8PDMxKSB8IDYxMjUsIDB4NGE0YSwgMHg3YTdhLCAweDdhN2EsIDB4N2E3YSwgMHg3YTdhLCAKKyAgMHg3YTdhLCAweDJjMmMyYywgMHg1OTU5NTksIDB4NTk1OTU5NTksIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4NGE0YTRhNGEsIAorICAweDRhNGE0YSwgMHg3YTdhLCAweDRhNGE0YTRhLCAweDRhNGE0YSwgMHgyYzJjMmMsIDB4M2IzYjNiLCAweDRhNGE0YSwgMHgyYzJjMmMsIAorICAweDRhNGE0YSwgMHg0YTRhNGEsIDB4MmMyYzJjLCAweDNiM2IzYiwgMHg0YTRhNGEsIDB4MmMyYzJjLCAweDNiM2IzYiwgMHg0YTRhNGEsIAorICAweDJjMmMyYywgMHg0YTRhNGEsICgxVTw8MzEpIHwgNjEyMywgMHg0YTRhNGEsICgxVTw8MzEpIHwgNjEyMSwgKDFVPDwzMSkgfCA2MTIxLCAweDJjMmMyYywgMHgzYjNiM2IsIAorICAweDRhNGE0YSwgMHgyYzJjMmMsIDB4M2IzYjNiLCAweDRhNGE0YSwgMHg0YTRhNGEsIDB4NGEyYzRhLCAweDRhM2I0YSwgMHg0YTJjNGEsIAorICAweDRhNGE0YSwgMHgzYjRhLCAweDJjM2IsIDB4M2I0YSwgMHg0YTU5LCAweDNiNGEsIDB4MmMzYiwgMHgzYjRhLCAKKyAgMHg0YTU5LCAweDU1NSwgMHgxZjAsIDB4MmUwLCAweDJlMCwgMHgyZTAsIDB4MmUwLCAweDJlMCwgCisgIDB4MmUwLCAweDJlMCwgMHgyZTAsIDB4NTU1LCAweDU1NSwgKDFVPDwzMSkgfCA2MTM3LCAweDQ0NCwgMHg0NDQsIAorICAoMVU8PDMxKSB8IDYxMzYsIDB4NSwgMHg1LCAweDUsIDB4NSwgMHgxLCAweDAsIDB4MWYwLCAKKyAgKDFVPDwzMSkgfCA2MTM3LCAweDhhOGEsIDB4OGE4YThhLCAweDhhOGE4YSwgMHg4YThhLCAweDhhOGEsIDB4OGE4YSwgMHg4YThhLCAKKyAgMHg4YThhOGEsIDB4OGE4YThhLCAweDhhOGE4YSwgMHg4YThhOGEsIDB4OGE4YSwgMHg4YThhLCAweDhhOGEsIDB4OGE4YSwgCisgIDB4OGE4YSwgMHg4YThhLCAweDhhOGEsIDB4OGE4YSwgMHg0OGE4YThhLCAoMVU8PDMxKSB8IDU4MDksICgxVTw8MzEpIHwgNTgwOSwgKDFVPDwzMSkgfCA1ODA5LCAKKyAgKDFVPDwzMSkgfCA1ODA5LCAweDhhOGE4YSwgMHg4YThhOGEsIDB4OGE4YSwgMHg4YThhLCAoMVU8PDMxKSB8IDU4MDksICgxVTw8MzEpIHwgNTgwOSwgKDFVPDwzMSkgfCA1ODA5LCAKKyAgKDFVPDwzMSkgfCA1ODA5LCAoMVU8PDMxKSB8IDU4MDksIDB4OGE4YSwgMHg4YThhLCAweDhhOGEsIDB4OGE4YSwgMHg4YThhLCAweDhhOGEsIAorICAweDhhOGEsIDB4OGE4YSwgMHg4YThhLCAoMVU8PDMxKSB8IDU4MDksIDB4OGE4YThhLCAweDhhOGE4YSwgMHg4YThhOGEsICgxVTw8MzEpIHwgNTgwOSwgCisgICgxVTw8MzEpIHwgNTgwOSwgMHg4YThhOGEsIDB4OGE4YThhLCAoMVU8PDMxKSB8IDU4MDksICgxVTw8MzEpIHwgNTgwOSwgKDFVPDwzMSkgfCA1ODA5LCAoMVU8PDMxKSB8IDU4MDksICgxVTw8MzEpIHwgNTgwOSwgCisgICgxVTw8MzEpIHwgNTgwOSwgMHg0OGEsIDB4MmU4YSwgMHgyZThhLCAweDJlOGEsIDB4MmU4YSwgMHgyZThhLCAweDJlOGEsIAogICAweDJlOGEsIDB4MmU4YSwgMHgyZThhLCAweDJlOGEsIDB4MmU4YSwgMHgyZThhLCAweDJlOGEsIDB4MmU4YSwgCi0gIDB4MmU4YSwgMHgyZThhLCAweDJlOGEsIDB4MmU4YSwgMHgyZThhLCAweDJlOGEsIDB4MmU4YTAsIDB4MmU4YTAsIAotICAweDJlOGEwLCAweDJlOGEwLCAweDJlOGEwLCAweDJlOGEwLCAweDJlOGEwLCAweDJlOGEwLCAweDJlOGEwLCAweDJlOGEwLCAKLSAgKDFVPDwzMSkgfCA1NTY3LCAoMVU8PDMxKSB8IDQ0NTEsIDB4NTAsIDB4NTAsIDB4NTAsIDB4NTAsICgxVTw8MzEpIHwgNTU3NSwgKDFVPDwzMSkgfCA1NTc0LCAKLSAgMHgwLCAweDQ0LCAweDQ0NDQsIDB4NDQ0NCwgMHg0NDQ0LCAweDQ0NDQsIDB4NDQsIDB4NCwgCi0gIDB4NDQsIDB4NCwgMHg0LCAweDQ0LCAweDQsICgxVTw8MzEpIHwgNTU3MCwgMHg0NCwgMHg0LCAKLSAgMHg1LCAweDJlODksIDB4MmU4OSwgMHg1MmU0YSwgMHg1MmU0YSwgMHgyZTRhLCAweDJlNGEsIDB4MmU4OTAsIAotICAweDJlODkwLCAweDUyZTRhMCwgMHg1MmU0YTAsIDB4MmU0YTAsIDB4MmU0YTAsIDB4ODg4LCAweDg4OCwgMHg4OTg5NTksIAotICAweDg5ODk0NCwgMHg3YTdhNGEsIDB4N2E3YTQ0LCAweDg5ODk1OSwgMHg4OTg5NDQsIDB4N2E3YTRhLCAweDdhN2E0NCwgMHg4OTg5NTksIAotICAweDg5ODk0NCwgMHg3YTdhNGEsIDB4N2E3YTQ0LCAweDg5N2EsIDB4ODk0YSwgMHg4OTRhLCAweDNiN2EsIDB4N2E4OSwgCi0gIDB4N2E3YSwgMHg1OTdhLCAweDRhODksIDB4NTk3YSwgMHg0YTg5LCAweDg5ODk4OSwgMHg3YTdhN2EsIDB4NTk1OTg5LCAKLSAgMHg0YTRhN2EsIDB4ODk4OTg5LCAweDdhN2E3YSwgMHg4OTg5ODksIDB4N2E3YTdhLCAweDg5ODksIDB4ODk4OSwgMHg3YTdhLCAKLSAgMHg3YTdhLCAweDg5ODksIDB4N2E3YSwgMHg0ODk1OSwgMHg0N2E0YSwgMHg4OTU5LCAweDdhNGEsIDB4ODk1OSwgCi0gIDB4N2E0YSwgMHg0NTk1OSwgMHg0NTk0YTRhLCAweDRhNGE0YSwgMHg3YTdhLCAoMVU8PDMxKSB8IDMwNjEsICgxVTw8MzEpIHwgMzA2MSwgMHg3YTdhNywgCi0gIDB4MCwgKDFVPDwzMSkgfCA1NjgsIDB4NzAsIDB4NDRhNGEwLCAweDQsIDB4NCwgMHg0LCAweDQsIAorICAweDJlOGEsIDB4MmU4YSwgMHgyZThhMCwgMHgyZThhMCwgMHgyZThhMCwgMHgyZThhMCwgMHgyZThhMCwgMHgyZThhMCwgCisgIDB4MmU4YTAsIDB4MmU4YTAsIDB4MmU4YTAsIDB4MmU4YTAsICgxVTw8MzEpIHwgNjEzMCwgKDFVPDwzMSkgfCA1MDAzLCAweDUwLCAweDUwLCAKKyAgMHg1MCwgMHg1MCwgKDFVPDwzMSkgfCA2MTM4LCAoMVU8PDMxKSB8IDYxMzcsIDB4MCwgMHg0NCwgMHg0NDQ0LCAweDQ0NDQsIAorICAweDQ0NDQsIDB4NDQ0NCwgMHg0NCwgMHg0LCAweDQ0LCAweDQsIDB4NCwgMHg0NCwgCisgIDB4NCwgKDFVPDwzMSkgfCA2MTMzLCAweDQ0LCAweDQsIDB4NSwgMHgyZTg5LCAweDJlODksIDB4NTJlNGEsIAorICAweDUyZTRhLCAweDJlNGEsIDB4MmU0YSwgMHgyZTg5MCwgMHgyZTg5MCwgMHg1MmU0YTAsIDB4NTJlNGEwLCAweDJlNGEwLCAKKyAgMHgyZTRhMCwgMHg4ODgsIDB4ODg4LCAweDg5ODk1OSwgMHg4OTg5NDQsIDB4N2E3YTRhLCAweDdhN2E0NCwgMHg4OTg5NTksIAorICAweDg5ODk0NCwgMHg3YTdhNGEsIDB4N2E3YTQ0LCAweDg5ODk1OSwgMHg4OTg5NDQsIDB4N2E3YTRhLCAweDdhN2E0NCwgMHg4OTdhLCAKKyAgMHg4OTRhLCAweDg5NGEsIDB4M2I3YSwgMHg3YTg5LCAweDdhN2EsIDB4NTk3YSwgMHg0YTg5LCAweDU5N2EsIAorICAweDRhODksIDB4ODk4OTg5LCAweDdhN2E3YSwgMHg1OTU5ODksIDB4NGE0YTdhLCAweDg5ODk4OSwgMHg3YTdhN2EsIDB4ODk4OTg5LCAKKyAgMHg3YTdhN2EsIDB4ODk4OSwgMHg4OTg5LCAweDdhN2EsIDB4N2E3YSwgMHg4OTg5LCAweDdhN2EsIDB4NDg5NTksIAorICAweDQ3YTRhLCAweDg5NTksIDB4N2E0YSwgMHg4OTU5LCAweDdhNGEsIDB4NDU5NTksIDB4NDU5NGE0YSwgMHg0YTRhNGEsIAorICAweDdhN2EsICgxVTw8MzEpIHwgMzI4OCwgKDFVPDwzMSkgfCAzMjg4LCAweDdhN2E3LCAweDAsICgxVTw8MzEpIHwgNTUwLCAweDcwLCAweDQ0YTRhMCwgCiAgIDB4NCwgMHg0LCAweDQsIDB4NCwgMHg0LCAweDQsIDB4NCwgMHg0LCAKLSAgMHg0LCAweDQsIDB4NCwgMHgyZjJmLCAweDJmMmYsIDB4NDQ0N2EwLCAweDQ0N2EwLCAoMVU8PDMxKSB8IDMwNjEsIAotICAoMVU8PDMxKSB8IDMwNjEsICgxVTw8MzEpIHwgMzA2MSwgKDFVPDwzMSkgfCAzMDYxLCAoMVU8PDMxKSB8IDMwNDcsICgxVTw8MzEpIHwgMzA2MSwgKDFVPDwzMSkgfCAzMDYxLCAoMVU8PDMxKSB8IDMwNDcsIDB4NDQ0NGY0LCAKLSAgMHg0NDQ0NGY0LCAweDQ0NDQ0ZjQsIDB4NDQ0NGY0LCAweDQ0NDRmNCwgMHg0NDQ0ZjQsIDB4NDQ0NGY0LCAweDQ0NDRmNCwgMHg0LCAKLSAgMHg0LCAweDQyZTQsIDB4NWU1MCwgMHg0MCwgMHg0MCwgMHg1MCwgMHg0MmU0LCAweDQyZTQsIAotICAweDQyZTAsIDB4NTJmNCwgMHg0LCAweDJjMmMyYywgMHgyYzJjMmMyYywgMHg0YTRhNGEsIDB4NTk1OTU5LCAweDNiM2IzYiwgCi0gIDB4MmMyYzJjLCAweDJjMmMyYzJjLCAweDJjMmMyYywgMHgyYzJjMmMsIDB4NGE0YTRhLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4MmMyYzJjLCAKLSAgMHg0YTRhNGEsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHgyYzJjNTksICgxVTw8MzEpIHwgNjc3LCAoMVU8PDMxKSB8IDQwNDMsICgxVTw8MzEpIHwgNDQ0MiwgKDFVPDwzMSkgfCA4NjUsIAotICAoMVU8PDMxKSB8IDY3NywgKDFVPDwzMSkgfCA0MDQzLCAoMVU8PDMxKSB8IDQ0NDIsICgxVTw8MzEpIHwgODY1LCAoMVU8PDMxKSB8IDY3NywgKDFVPDwzMSkgfCA0MDQzLCAoMVU8PDMxKSB8IDQ0NDIsICgxVTw8MzEpIHwgODY1LCAKLSAgMHg0YTRhNGEsICgxVTw8MzEpIHwgMTM3NSwgKDFVPDwzMSkgfCAzNDQzLCAoMVU8PDMxKSB8IDM3NzEsICgxVTw8MzEpIHwgMTUyOCwgMHg0MmMyYywgMHg0NGE0YSwgMHg0NTk1OSwgCi0gIDB4NDNiM2IsIDB4MmMyYzJjLCAweDRhNGE0YSwgMHg1OTU5NTksIDB4M2IzYjNiLCAweDQyYzJjMmMsICgxVTw8MzEpIHwgMTM5NywgMHg0NGE0YTRhLCAKLSAgKDFVPDwzMSkgfCAzNDIxLCAweDQzYjNiM2IsICgxVTw8MzEpIHwgMTU1MCwgMHg0MmMyYzJjLCAoMVU8PDMxKSB8IDEzOTcsIDB4NDRhNGE0YSwgKDFVPDwzMSkgfCAzNDIxLCAweDQzYjNiM2IsIAotICAoMVU8PDMxKSB8IDE1NTAsICgxVTw8MzEpIHwgNTIxNSwgKDFVPDwzMSkgfCA1MTkzLCAoMVU8PDMxKSB8IDUyMTUsICgxVTw8MzEpIHwgNTIxNSwgKDFVPDwzMSkgfCA1MTkzLCAoMVU8PDMxKSB8IDUxOTMsIDB4MmMyYzJjLCAKLSAgKDFVPDwzMSkgfCA2NzcsIDB4NGE0YTRhLCAoMVU8PDMxKSB8IDQwNDMsIDB4M2IzYjNiLCAoMVU8PDMxKSB8IDg2NSwgMHgyYzJjMmMsICgxVTw8MzEpIHwgNjc3LCAweDRhNGE0YSwgCi0gICgxVTw8MzEpIHwgNDA0MywgMHgzYjNiM2IsICgxVTw8MzEpIHwgODY1LCAweDJjMmMyYywgKDFVPDwzMSkgfCA2NzcsIDB4NGE0YTRhLCAoMVU8PDMxKSB8IDQwNDMsIDB4M2IzYjNiLCAKLSAgKDFVPDwzMSkgfCA4NjUsIDB4MmMyYzJjLCAoMVU8PDMxKSB8IDY3NywgMHg0YTRhNGEsICgxVTw8MzEpIHwgNDA0MywgMHgzYjNiM2IsICgxVTw8MzEpIHwgODY1LCAweDQ0ODk4OSwgCi0gIDB4NDQ3YTdhLCAweDQ4OTg5ODksIDB4NDdhN2E3YSwgMHg0ODk4OTg5LCAweDQ3YTdhN2EsICgxVTw8MzEpIHwgMzk0OSwgKDFVPDwzMSkgfCAzODcxLCAweDNiMmMyYzNiLCAKLSAgMHg1OTRhNGE1OSwgMHgyYzU5NTkyYywgMHg0YTNiM2I0YSwgMHgyYzJjM2IsIDB4NGE0YTU5LCAweDU5NTkyYywgMHgzYjNiNGEsIDB4MmMyYywgCi0gICgxVTw8MzEpIHwgNjg2LCAweDRhNGEsICgxVTw8MzEpIHwgNDAyNywgMHgzYjNiLCAoMVU8PDMxKSB8IDg3NCwgMHg0MmUyYywgMHgyZTQyYywgMHgyZTQyYywgCi0gIDB4M2IyYzJjM2IsIDB4NTk0YTRhNTksIDB4NGEzYjNiNGEsIDB4MmMyYzJjMmMsIDB4NGE0YTRhNGEsIDB4M2IzYjNiM2IsIDB4M2IyYzJjM2IsIDB4NTk0YTRhNTksIAotICAweDRhM2IzYjRhLCAweDJjMmMyYzJjLCAweDRhNGE0YTRhLCAweDNiM2IzYjNiLCAweDNiMmMyYzNiLCAweDU5NGE0YTU5LCAweDRhM2IzYjRhLCAweDNiMmMyYzNiLCAKLSAgMHg1OTRhNGE1OSwgMHg0YTNiM2I0YSwgMHgyYzJjM2IsIDB4NGE0YTU5LCAweDNiM2I0YSwgMHgyYzJjMmMsIDB4NGE0YTRhLCAweDNiM2IzYiwgCisgIDB4NCwgMHg0LCAweDQsIDB4NCwgMHg0LCAweDQsIDB4NCwgMHgyZjJmLCAKKyAgMHgyZjJmLCAweDQ0NDdhMCwgMHg0NDdhMCwgKDFVPDwzMSkgfCAzMjg4LCAoMVU8PDMxKSB8IDMyODgsICgxVTw8MzEpIHwgMzI4OCwgKDFVPDwzMSkgfCAzMjg4LCAoMVU8PDMxKSB8IDMyNzQsIAorICAoMVU8PDMxKSB8IDMyODgsICgxVTw8MzEpIHwgMzI4OCwgKDFVPDwzMSkgfCAzMjc0LCAweDQ0NDRmNCwgMHg1NTU0ZjUsIDB4NDQ0NDRmNCwgMHg1NTU1NGY1LCAweDQ0NDQ0ZjQsIAorICAweDU1NTU0ZjUsIDB4NDQ0NGY0LCAweDU1NTRmNSwgMHg0NDQ0ZjQsIDB4NTU1NGY1LCAweDQ0NDRmNCwgMHg1NTU0ZjUsIDB4NDQ0NGY0LCAKKyAgMHg1NTU0ZjUsIDB4NDQ0NGY0LCAweDU1NTRmNSwgMHg0NDQ0NGY0LCAweDU1NTU0ZjUsIDB4NCwgMHg0LCAweDQyZTQsIAorICAweDVlNTAsIDB4NDAsIDB4NDAsIDB4NTAsIDB4NDJlNCwgMHg0MmU0LCAweDQyZTAsIDB4NTJmNCwgCisgIDB4NCwgMHgyYzJjMmMsIDB4MmMyYzJjMmMsIDB4NGE0YTRhLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4MmMyYzJjLCAweDJjMmMyYzJjLCAKKyAgMHgyYzJjMmMsIDB4MmMyYzJjLCAweDRhNGE0YSwgMHg1OTU5NTksIDB4M2IzYjNiLCAweDJjMmMyYywgMHg0YTRhNGEsIDB4NTk1OTU5LCAKKyAgMHgzYjNiM2IsIDB4MmMyYzU5LCAoMVU8PDMxKSB8IDY1OSwgKDFVPDwzMSkgfCA0NTk1LCAoMVU8PDMxKSB8IDQ5OTQsICgxVTw8MzEpIHwgODI0LCAoMVU8PDMxKSB8IDY1OSwgKDFVPDwzMSkgfCA0NTk1LCAKKyAgKDFVPDwzMSkgfCA0OTk0LCAoMVU8PDMxKSB8IDgyNCwgKDFVPDwzMSkgfCA2NTksICgxVTw8MzEpIHwgNDU5NSwgKDFVPDwzMSkgfCA0OTk0LCAoMVU8PDMxKSB8IDgyNCwgMHg0YTRhNGEsICgxVTw8MzEpIHwgMTYyMiwgCisgICgxVTw8MzEpIHwgMzczMywgKDFVPDwzMSkgfCA0MTQ3LCAoMVU8PDMxKSB8IDE3NjUsIDB4NDJjMmMsIDB4NDRhNGEsIDB4NDU5NTksIDB4NDNiM2IsIDB4MmMyYzJjLCAKKyAgMHg0YTRhNGEsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0MmMyYzJjLCAoMVU8PDMxKSB8IDE2NDQsIDB4NDRhNGE0YSwgKDFVPDwzMSkgfCAzNzExLCAweDQzYjNiM2IsIAorICAoMVU8PDMxKSB8IDE3ODcsIDB4NDJjMmMyYywgKDFVPDwzMSkgfCAxNjQ0LCAweDQ0YTRhNGEsICgxVTw8MzEpIHwgMzcxMSwgMHg0M2IzYjNiLCAoMVU8PDMxKSB8IDE3ODcsICgxVTw8MzEpIHwgNTc3OCwgCisgICgxVTw8MzEpIHwgNTc1NiwgKDFVPDwzMSkgfCA1Nzc4LCAoMVU8PDMxKSB8IDU3NzgsICgxVTw8MzEpIHwgNTc1NiwgKDFVPDwzMSkgfCA1NzU2LCAweDJjMmMyYywgKDFVPDwzMSkgfCA2NTksIDB4NGE0YTRhLCAKKyAgKDFVPDwzMSkgfCA0NTk1LCAweDNiM2IzYiwgKDFVPDwzMSkgfCA4MjQsIDB4MmMyYzJjLCAoMVU8PDMxKSB8IDY1OSwgMHg0YTRhNGEsICgxVTw8MzEpIHwgNDU5NSwgMHgzYjNiM2IsIAorICAoMVU8PDMxKSB8IDgyNCwgMHgyYzJjMmMsICgxVTw8MzEpIHwgNjU5LCAweDRhNGE0YSwgKDFVPDwzMSkgfCA0NTk1LCAweDNiM2IzYiwgKDFVPDwzMSkgfCA4MjQsIDB4MmMyYzJjLCAKKyAgKDFVPDwzMSkgfCA2NTksIDB4NGE0YTRhLCAoMVU8PDMxKSB8IDQ1OTUsIDB4M2IzYjNiLCAoMVU8PDMxKSB8IDgyNCwgMHg0NDg5ODksIDB4NDQ3YTdhLCAweDQ4OTg5ODksIAorICAweDQ3YTdhN2EsIDB4NDg5ODk4OSwgMHg0N2E3YTdhLCAoMVU8PDMxKSB8IDQ0MzUsICgxVTw8MzEpIHwgNDI5MSwgMHgzYjJjMmMzYiwgMHg1OTRhNGE1OSwgMHgyYzU5NTkyYywgCisgIDB4NGEzYjNiNGEsIDB4MmMyYzNiLCAweDRhNGE1OSwgMHg1OTU5MmMsIDB4M2IzYjRhLCAweDJjMmMsICgxVTw8MzEpIHwgNjY4LCAweDRhNGEsIAorICAoMVU8PDMxKSB8IDQ1NzksIDB4M2IzYiwgKDFVPDwzMSkgfCA4MzMsIDB4NDJlMmMsIDB4MmU0MmMsIDB4MmU0MmMsIDB4M2IyYzJjM2IsIDB4NTk0YTRhNTksIAorICAweDRhM2IzYjRhLCAweDJjMmMyYzJjLCAweDRhNGE0YTRhLCAweDNiM2IzYjNiLCAweDNiMmMyYzNiLCAweDU5NGE0YTU5LCAweDRhM2IzYjRhLCAweDJjMmMyYzJjLCAKKyAgMHg0YTRhNGE0YSwgMHgzYjNiM2IzYiwgMHgzYjJjMmMzYiwgMHg1OTRhNGE1OSwgMHg0YTNiM2I0YSwgMHgzYjJjMmMzYiwgMHg1OTRhNGE1OSwgMHg0YTNiM2I0YSwgCiAgIDB4MmMyYzNiLCAweDRhNGE1OSwgMHgzYjNiNGEsIDB4MmMyYzJjLCAweDRhNGE0YSwgMHgzYjNiM2IsIDB4MmMyYzNiLCAweDRhNGE1OSwgCi0gIDB4M2IzYjRhLCAweDJjMmMzYiwgMHg0YTRhNTksIDB4M2IzYjRhLCAoMVU8PDMxKSB8IDE0MDcsIDB4NDU5NTk1OSwgMHgyYzJjMmMyYywgMHg0YTRhM2IsIAotICAoMVU8PDMxKSB8IDQwMzQsIDB4NTk1OTRhLCAoMVU8PDMxKSB8IDQ0MzMsIDB4M2IzYjJjLCAoMVU8PDMxKSB8IDg1NiwgMHg0YTRhM2IsICgxVTw8MzEpIHwgNDAzNCwgMHg1OTU5NGEsIAotICAoMVU8PDMxKSB8IDQ0MzMsIDB4M2IzYjJjLCAoMVU8PDMxKSB8IDg1NiwgMHgyYzJjMmMyYywgMHgyYzJjMmMyYywgMHgyYzJjMmMsIDB4NGE0YTRhLCAweDU5NTk1OSwgCi0gIDB4M2IzYjNiLCAweDJjMmMyYywgMHgyYzJjMmMsIDB4MmMyYzJjLCAweDQyYzJjMmMsIDB4MmMyYzJjLCAweDJjMmMyYywgMHgyYzJjMmMsIAotICAweDJjMmMyYywgMHgyYzJjMmMsIDB4MmU0MmMwLCAoMVU8PDMxKSB8IDEzNzUsICgxVTw8MzEpIHwgMTM4NSwgKDFVPDwzMSkgfCAzNDQzLCAoMVU8PDMxKSB8IDM0MzEsICgxVTw8MzEpIHwgMTUyOCwgCi0gICgxVTw8MzEpIHwgMTUzOCwgKDFVPDwzMSkgfCAxMzc1LCAoMVU8PDMxKSB8IDEzODUsICgxVTw8MzEpIHwgMzQ0MywgKDFVPDwzMSkgfCAzNDMxLCAoMVU8PDMxKSB8IDE1MjgsICgxVTw8MzEpIHwgMTUzOCwgMHgyZTQyYzAsIAotICAweDJjMmM0YSwgMHg0YTRhNTksIDB4M2IzYjU5LCAweDNiM2I0YSwgMHg0YTRhMmMsIDB4NTk1OTJjLCAweDJjMmM0LCAweDJjM2IsIAotICAweDRhNTksIDB4M2I0YSwgMHgyYzNiLCAweDRhNTksIDB4MmMzYiwgMHg0YTU5LCAweDNiNGEsIDB4M2I0YSwgCi0gIDB4MmMzYiwgMHg0YTU5LCAweDNiNGEsIDB4M2YzZjNmLCAweDNmM2YzZiwgMHgzZjQsIDB4M2Y0LCAweDQ0ZTQsIAotICAweDU0NGU0LCAweDU1NWU0LCAweDNmM2YzZjNmLCAweDQyZSwgMHgxZiwgKDFVPDwzMSkgfCA1NDY1LCAoMVU8PDMxKSB8IDU0NjAsIDB4MWYxZiwgCi0gIDB4NDAsIDB4MmUsIDB4MWY0MWYsIDB4NDFmLCAweDFmNDFmLCAweDQxZiwgMHgwLCAweDNmM2YzZiwgCi0gIDB4M2YzZjNmLCAweDJlNDAsICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ2LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksIAotICAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0NiwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgCi0gICgxVTw8MzEpIHwgNTQ0NiwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0NiwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDYsICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAKLSAgKDFVPDwzMSkgfCA1NDQ2LCAoMVU8PDMxKSB8IDU0NDYsICgxVTw8MzEpIHwgMjk2MiwgKDFVPDwzMSkgfCA0NDI2LCAoMVU8PDMxKSB8IDI5NjIsICgxVTw8MzEpIHwgNDQyNiwgMHg1OTU5NTksIDB4NWE1YTVhLCAKLSAgMHg1YjViNWIsIDB4NTk1OTU5LCAweDVhNWE1YSwgMHg1YjViNWIsIDB4NTk1OTU5LCAweDVhNWE1YSwgMHg1YjViNWIsIDB4NTk1OTU5LCAKLSAgMHg1YTVhNWEsIDB4NWI1YjViLCAweDU5NTksIDB4MjU5NTksIDB4OGE4YThhLCAweDdiN2I3YiwgKDFVPDwzMSkgfCA1MjQ2LCAweDdiN2I3YjdiLCAKLSAgMHgyOGE4YThhLCAweDI3YjdiN2IsIDB4OGE3YSwgMHg4YTRhLCAweDdiNGIsIDB4OGE0YSwgMHg3YjRiLCAweDI3YjdiN2IsIAotICAweDhhOGE4YSwgMHg3YjdiN2IsIDB4OGE4YThhLCAweDdiN2I3YiwgMHgyZTJkLCAweDU5MmU4OSwgMHg1YTJlOGEsIDB4NGEyZTdhLCAKLSAgMHg0YjJlN2IsIDB4ODk1OTJlMCwgMHg4YTVhMmUwLCAweDdhNGEyZTAsIDB4N2I0YjJlMCwgMHg4YThhOGEsIDB4N2I3YjdiLCAweDhhOGE4YSwgCi0gIDB4N2I3YjdiLCAweDhhNCwgMHg3YjQsIDB4NWE1YTQsIDB4NWE1YTQsIDB4NWE1YTQsIDB4N2I3YiwgMHg0OGE4YSwgCi0gIDB4NDdiN2IsIDB4N2I3YiwgMHg1OTg5ODksIDB4NWE4YThhLCAweDRhN2E3YSwgMHg0YjdiN2IsIDB4ODk4OTQsIDB4OGE4YTQsIAotICAweDdhN2E0LCAweDdiN2I0LCAweDg5ODk0LCAweDhhOGE0LCAweDdhN2E0LCAweDdiN2I0LCAweDg5ODk0LCAweDhhOGE0LCAKLSAgMHg3YTdhNCwgMHg3YjdiNCwgMHgwLCAweDAsICgxVTw8MzEpIHwgMjg4LCAoMVU8PDMxKSB8IDM0NCwgKDFVPDwzMSkgfCA1ODMsICgxVTw8MzEpIHwgNjI4LCAKLSAgKDFVPDwzMSkgfCA0ODksICgxVTw8MzEpIHwgNTQ2LCAoMVU8PDMxKSB8IDM4MCwgKDFVPDwzMSkgfCA0MjQsICgxVTw8MzEpIHwgMzEwLCAoMVU8PDMxKSB8IDMyMiwgKDFVPDwzMSkgfCA1OTUsICgxVTw8MzEpIHwgNjQwLCAKLSAgKDFVPDwzMSkgfCA1MDEsICgxVTw8MzEpIHwgNTEzLCAoMVU8PDMxKSB8IDM5MiwgKDFVPDwzMSkgfCA0MzYsIDB4NGEyZTRhLCAweDRiMmU0YiwgMHg1OTJlNTksIDB4NWEyZTVhLCAKLSAgMHg0YTRhMmUwLCAweDRiNGIyZTAsIDB4NTk1OTJlMCwgMHg1YTVhMmUwLCAweDIyZDJkM2MsIDB4NGI0YjNjLCAweDNjM2MyZCwgMHg0YjRiM2MsIAotICAweDNjM2MyZCwgMHgyZDJkMmQsIDB4M2MzYzNjLCAweDJkMmQyZDJkLCAweDRiNGI0YiwgMHg0YjdiN2IsIDB4NGI0YjRiLCAweDNjM2MzYywgCisgIDB4M2IzYjRhLCAweDJjMmMyYywgMHg0YTRhNGEsIDB4M2IzYjNiLCAweDJjMmMzYiwgMHg0YTRhNTksIDB4M2IzYjRhLCAweDJjMmMzYiwgCisgIDB4NGE0YTU5LCAweDNiM2I0YSwgKDFVPDwzMSkgfCAxNjU0LCAweDQ1OTU5NTksIDB4MmMyYzJjMmMsIDB4NGE0YTNiLCAoMVU8PDMxKSB8IDQ1ODYsIDB4NTk1OTRhLCAKKyAgKDFVPDwzMSkgfCA0OTg1LCAweDNiM2IyYywgKDFVPDwzMSkgfCA4MTUsIDB4NGE0YTNiLCAoMVU8PDMxKSB8IDQ1ODYsIDB4NTk1OTRhLCAoMVU8PDMxKSB8IDQ5ODUsIDB4M2IzYjJjLCAKKyAgKDFVPDwzMSkgfCA4MTUsIDB4MmMyYzJjMmMsIDB4MmMyYzJjMmMsIDB4MmMyYzJjLCAweDRhNGE0YSwgMHg1OTU5NTksIDB4M2IzYjNiLCAweDJjMmMyYywgCisgIDB4MmMyYzJjLCAweDJjMmMyYywgMHg0MmMyYzJjLCAweDJjMmMyYywgMHgyYzJjMmMsIDB4MmMyYzJjLCAweDJjMmMyYywgMHgyYzJjMmMsIAorICAweDJlNDJjMCwgKDFVPDwzMSkgfCAxNjIyLCAoMVU8PDMxKSB8IDE2MzIsICgxVTw8MzEpIHwgMzczMywgKDFVPDwzMSkgfCAzNzIxLCAoMVU8PDMxKSB8IDE3NjUsICgxVTw8MzEpIHwgMTc3NSwgKDFVPDwzMSkgfCAxNjIyLCAKKyAgKDFVPDwzMSkgfCAxNjMyLCAoMVU8PDMxKSB8IDM3MzMsICgxVTw8MzEpIHwgMzcyMSwgKDFVPDwzMSkgfCAxNzY1LCAoMVU8PDMxKSB8IDE3NzUsIDB4MmU0MmMwLCAweDJjMmM0YSwgMHg0YTRhNTksIAorICAweDNiM2I1OSwgMHgzYjNiNGEsIDB4NGE0YTJjLCAweDU5NTkyYywgMHgyYzJjNCwgMHgyYzNiLCAweDRhNTksIDB4M2I0YSwgCisgIDB4MmMzYiwgMHg0YTU5LCAweDJjM2IsIDB4NGE1OSwgMHgzYjRhLCAweDNiNGEsIDB4MmMzYiwgMHg0YTU5LCAKKyAgMHgzYjRhLCAweDNmNCwgMHgzZjQsIDB4NDRlNCwgMHg1NDRlNCwgMHg1NTVlNCwgMHgzZjNmM2YzZiwgMHg0MCwgCisgIDB4MmUsICgxVTw8MzEpIHwgNjAyOCwgKDFVPDwzMSkgfCA2MDIzLCAoMVU8PDMxKSB8IDQ5NDIsIDB4MmUsIDB4MWY0MWYsIDB4NDQyZTQ0MCwgMHg0MWYsIAorICAweDAsIDB4M2YzZjNmLCAweDNmM2YzZiwgMHgyZTQwLCAweGFmMWYsIDB4YWYxZiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMDksIAorICAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgCisgICgxVTw8MzEpIHwgNjAwOSwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDA5LCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDA5LCAKKyAgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMDksICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMDksICgxVTw8MzEpIHwgNjAwOSwgKDFVPDwzMSkgfCAzMTg5LCAoMVU8PDMxKSB8IDQ5NjUsIAorICAweDU5NTk1OSwgMHg1YTVhNWEsIDB4NWI1YjViLCAweDU5NTk1OSwgMHg1YTVhNWEsIDB4NWI1YjViLCAweDU5NTk1OSwgMHg1YTVhNWEsIAorICAweDViNWI1YiwgMHg1OTU5NTksIDB4NWE1YTVhLCAweDViNWI1YiwgMHg1OTU5LCAweDI1OTU5LCAweDhhOGE4YSwgMHg3YjdiN2IsIAorICAoMVU8PDMxKSB8IDU4MDksIDB4N2I3YjdiN2IsIDB4MjhhOGE4YSwgMHgyN2I3YjdiLCAweDhhN2EsIDB4OGE0YSwgMHg3YjRiLCAweDhhNGEsIAorICAweDdiNGIsIDB4MjdiN2I3YiwgMHg4YThhOGEsIDB4N2I3YjdiLCAweDhhOGE4YSwgMHg3YjdiN2IsIDB4MmUyZCwgMHg1OTJlODksIAorICAweDVhMmU4YSwgMHg0YTJlN2EsIDB4NGIyZTdiLCAweDg5NTkyZTAsIDB4OGE1YTJlMCwgMHg3YTRhMmUwLCAweDdiNGIyZTAsIDB4OGE4YThhLCAKKyAgMHg3YjdiN2IsIDB4OGE4YThhLCAweDdiN2I3YiwgMHg4YTQsIDB4N2I0LCAweDVhNWE0LCAweDVhNWE0LCAweDVhNWE0LCAKKyAgMHg3YjdiLCAweDQ4YThhLCAweDQ3YjdiLCAweDdiN2IsIDB4NTk4OTg5LCAweDVhOGE4YSwgMHg0YTdhN2EsIDB4NGI3YjdiLCAKKyAgMHg4OTg5NCwgMHg4YThhNCwgMHg3YTdhNCwgMHg3YjdiNCwgMHg4OTg5NCwgMHg4YThhNCwgMHg3YTdhNCwgMHg3YjdiNCwgCisgIDB4ODk4OTQsIDB4OGE4YTQsIDB4N2E3YTQsIDB4N2I3YjQsIDB4MCwgMHgwLCAoMVU8PDMxKSB8IDMyMCwgKDFVPDwzMSkgfCAzNjYsIAorICAoMVU8PDMxKSB8IDU2NSwgKDFVPDwzMSkgfCA2MTAsICgxVTw8MzEpIHwgNDcxLCAoMVU8PDMxKSB8IDUyOCwgKDFVPDwzMSkgfCAzOTIsICgxVTw8MzEpIHwgNDI2LCAoMVU8PDMxKSB8IDMzMiwgKDFVPDwzMSkgfCAzNDQsIAorICAoMVU8PDMxKSB8IDU3NywgKDFVPDwzMSkgfCA2MjIsICgxVTw8MzEpIHwgNDgzLCAoMVU8PDMxKSB8IDQ5NSwgKDFVPDwzMSkgfCA0MDQsICgxVTw8MzEpIHwgNDM4LCAweDRhMmU0YSwgMHg0YjJlNGIsIAorICAweDU5MmU1OSwgMHg1YTJlNWEsIDB4NGE0YTJlMCwgMHg0YjRiMmUwLCAweDU5NTkyZTAsIDB4NWE1YTJlMCwgMHgyMmQyZDNjLCAweDRiNGIzYywgCisgIDB4M2MzYzJkLCAweDRiNGIzYywgMHgzYzNjMmQsIDB4MmQyZDJkMmQsIDB4NGI0YjRiLCAweDRiN2I3YiwgMHg0YjRiNGIsIDB4M2MzYzNjLCAKICAgMHgzYzNjM2MsIDB4NGI0YjRiLCAweDNjM2MzYywgMHgzYzNjM2MsIDB4MmQyZDNjLCAweDNjM2M0YiwgMHgyZDQsIDB4M2MzYzNjLCAKICAgMHgzYzNjM2MsIDB4M2MzYzNjLCAweDJkMmQ1YSwgMHgyZDJkMmQsIDB4MmQyZDJkLCAweDRiNGI0YiwgMHgzYzNjM2MsIDB4NGE0YjRiLCAKICAgMHg1OTVhNWEsIDB4M2IzYzNjLCAweDQ0YjRiLCAweDQ1YTVhLCAweDQzYzNjLCAweDRhNGE0YSwgMHg0YjRiNGIsIDB4NTk1OTU5LCAKICAgMHg1YTVhNWEsIDB4NGE0YjRiLCAweDNiM2MzYywgMHg0NGI0YiwgMHg0M2MzYywgMHg0YTRhNGEsIDB4NGI0YjRiLCAweDRhNGI0YiwgCiAgIDB4NTk1YTVhLCAweDNiM2MzYywgMHg0NGI0YiwgMHg0NWE1YSwgMHg0M2MzYywgMHg0YTRhNGEsIDB4NGI0YjRiLCAweDU5NTk1OSwgCi0gIDB4NWE1YTVhLCAweDJkMmQyZCwgMHgzYzNjM2MsIDB4NDhiOGI4YiwgMHg0N2M3YzdjLCAweDI1OSwgMHgyNWEsIDB4MjViLCAKLSAgMHgzNGEsIDB4MzRiLCAweDM0YywgMHg0ODk4OTE5LCAweDQ4YThhMWEsIDB4NDQ4YjhiMWIsIDB4NDdhN2ExYSwgMHg0N2I3YjFiLCAKLSAgMHg0NDdjN2MxYywgMHg0NTg5ODksIDB4NDQ3YTdhLCAweDQ1N2E3YSwgMHg0ODk0LCAweDQ4OTUsIDB4NDg5NCwgMHg0ODk1LCAKLSAgMHg0N2E0LCAweDQ3YTUsIDB4NDdhNCwgMHg0N2E1LCAweDQ0N2E3YSwgMHg0NTg5ODksIDB4NDU3YTdhLCAweDQyYzJjM2IsIAotICAweDQyZDJkM2MsICgxVTw8MzEpIHwgMTQ2MywgMHg0OGI4YjhiLCAweDQ3YzdjN2MsIDB4NDI4YjhiOGIsIDB4NDM3YzdjN2MsIDB4NDg5MTksIDB4NDhhMWEsIAotICAweDQ4YjFiLCAweDQ3YTFhLCAweDQ3YjFiLCAweDQ3YzFjLCAoMVU8PDMxKSB8IDExNDEsICgxVTw8MzEpIHwgMTQ4MywgKDFVPDwzMSkgfCAxMTE5LCAoMVU8PDMxKSB8IDE0OTQsIAotICAoMVU8PDMxKSB8IDEyNzMsICgxVTw8MzEpIHwgMTI0MCwgKDFVPDwzMSkgfCAxMjUxLCAoMVU8PDMxKSB8IDEyNjIsICgxVTw8MzEpIHwgMTE4NSwgKDFVPDwzMSkgfCAxMTYzLCAoMVU8PDMxKSB8IDEyMjksICgxVTw8MzEpIHwgMTIwNywgCi0gICgxVTw8MzEpIHwgMTE3NCwgKDFVPDwzMSkgfCAxMTUyLCAoMVU8PDMxKSB8IDEyMTgsICgxVTw8MzEpIHwgMTE5NiwgKDFVPDwzMSkgfCAxMDg2LCAoMVU8PDMxKSB8IDEwNTMsICgxVTw8MzEpIHwgMTA5NywgKDFVPDwzMSkgfCAxMDY0LCAKLSAgKDFVPDwzMSkgfCAxMDc1LCAoMVU8PDMxKSB8IDEwNDIsICgxVTw8MzEpIHwgMTEzMCwgKDFVPDwzMSkgfCAxMTA4LCAweDQ0MmU0YjIwLCAweDQ0MmU0YzMwLCAweDQ0MmU1YjIwLCAweDQ0MmU1YjIwLCAKLSAgMHgxYjFiMWIsIDB4MWQxZDFkLCAoMVU8PDMxKSB8IDE0NywgMHgxYzFjMWMsIDB4MWIxYjQsIDB4MWQxZDQsICgxVTw8MzEpIHwgMTU0LCAweDFjMWM0LCAKLSAgMHgxYjFiNCwgMHgxZDFkNCwgKDFVPDwzMSkgfCAxNTQsIDB4MWMxYzQsICgxVTw8MzEpIHwgMTM0MSwgKDFVPDwzMSkgfCAxMjk2LCAweDQyNDg5ODkyLCAweDQyNDdhN2EyLCAKLSAgMHgzMmMyYzJjLCAweDQyZDJkMmQsICgxVTw8MzEpIHwgNDM5MiwgMHgyNGE0YTRhLCAweDI0YjRiNGIsIDB4MzRjNGM0YywgMHgyODk4OTg5LCAweDI4YThhOGEsIAotICAweDI4YjhiOGIsIDB4MjdhN2E3YSwgMHgyN2I3YjdiLCAweDM3YzdjN2MsIDB4MjU5NTk1OSwgMHgyNWE1YTVhLCAweDI1YjViNWIsIDB4MjNiM2IzYiwgCi0gIDB4MzNjM2MzYywgMHg0M2QzZDNkLCAweDI0YTRhNGEsIDB4MjRiNGI0YiwgMHgzNGM0YzRjLCAweDI1OTU5NTksIDB4MjVhNWE1YSwgMHgyNWI1YjViLCAKLSAgMHg0MzdjNGM3YywgMHgyNGE4OTRhLCAweDQyNGI4YjRiLCAweDI3YTg5N2EsIDB4NDI3YjhiN2IsIDB4MjU5ODk1OSwgMHgyNWE4YTVhLCAweDQyNWI4YjViLCAKLSAgMHgyNGE4OTRhLCAweDI0YThhNGEsIDB4NDI0YjhiNGIsIDB4MjU5ODk1OSwgMHgyNWE4YTVhLCAweDQyNWI4YjViLCAweDI0YTdhNGEsIDB4MjRiN2I0YiwgCi0gIDB4NDM0YzdjNGMsIDB4NDI4YjdiOGIsIDB4MjU5N2E1OSwgMHgyNWE3YTVhLCAweDQyNWI3YjViLCAweDI0YTdhNGEsIDB4MjRiN2I0YiwgMHg0MzRjN2M0YywgCi0gIDB4MjU5N2E1OSwgMHgyNWE3YTVhLCAweDQyNWI3YjViLCAweDQyOGI1YjhiLCAweDI3YTU5N2EsIDB4MjdhNWE3YSwgMHg0MjdiNWI3YiwgKDFVPDwzMSkgfCAxMzA3LCAKLSAgKDFVPDwzMSkgfCAxMzMwLCAweDI0YTg5NGEsIDB4NDI0YjhiNGIsIDB4MjU5ODk1OSwgMHgyNWE4YTVhLCAweDQyNWI4YjViLCAweDI0YTg5NGEsIDB4MjRhOGE0YSwgCi0gIDB4NDI0YjhiNGIsIDB4MjU5ODk1OSwgMHgyNWE4YTVhLCAweDQyNWI4YjViLCAweDQzNGM3YzRjLCAweDI1OTdhNTksIDB4MjVhN2E1YSwgMHg0MjViN2I1YiwgCi0gIDB4MjRhN2E0YSwgMHgyNGI3YjRiLCAweDQzNGM3YzRjLCAweDI1OTdhNTksIDB4MjVhN2E1YSwgMHg0MjViN2I1YiwgMHg0MzdjNGM3YywgMHg0MjhiNWI4YiwgCi0gIDB4MjdhNTk3YSwgMHgyN2E1YTdhLCAweDQyN2I1YjdiLCAoMVU8PDMxKSB8IDEzNDEsICgxVTw8MzEpIHwgMTI5NiwgMHgzMmMyYzJjLCAweDQyZDJkMmQsICgxVTw8MzEpIHwgNDM5MiwgCi0gIDB4MjRhNGE0YSwgMHgyNGI0YjRiLCAweDM0YzRjNGMsIDB4Mjg5ODk4OSwgMHgyOGE4YThhLCAweDI4YjhiOGIsIDB4MjdhN2E3YSwgMHgyN2I3YjdiLCAKLSAgMHgzN2M3YzdjLCAweDI1OTU5NTksIDB4MjVhNWE1YSwgMHgyNWI1YjViLCAweDIzYjNiM2IsIDB4MzNjM2MzYywgMHg0M2QzZDNkLCAoMVU8PDMxKSB8IDI2NiwgCi0gICgxVTw8MzEpIHwgMjc3LCAoMVU8PDMxKSB8IDEwMzAsICgxVTw8MzEpIHwgMjQ0LCAoMVU8PDMxKSB8IDI1NSwgKDFVPDwzMSkgfCAxNDcxLCAoMVU8PDMxKSB8IDEwMTgsICgxVTw8MzEpIHwgMTAwNiwgMHgyNDg5MiwgCi0gIDB4MjQ3YTIsIDB4Mjg5ODk4OSwgMHgyOGE4YThhLCAweDQyOGI4YjhiLCAweDI3YTdhN2EsIDB4MjdiN2I3YiwgMHg0MzdjN2M3YywgKDFVPDwzMSkgfCAxMzQxLCAKLSAgKDFVPDwzMSkgfCAxMjk2LCAweDI4OTQ4OTg5LCAweDI4YTQ4YThhLCAoMVU8PDMxKSB8IDEzNTQsIDB4MjdhNDdhN2EsIDB4MjdiNDdiN2IsICgxVTw8MzEpIHwgMTUwNywgKDFVPDwzMSkgfCAxMzE4LCAKLSAgKDFVPDwzMSkgfCAxMjg0LCAoMVU8PDMxKSB8IDEzNDEsICgxVTw8MzEpIHwgMTI5NiwgKDFVPDwzMSkgfCAxMzQxLCAoMVU8PDMxKSB8IDEyOTYsICgxVTw8MzEpIHwgMTM0MSwgKDFVPDwzMSkgfCAxMjk2LCAweDIyYzRhMmMsIAotICAweDIyYzRiMmMsIDB4MzJjNGMyYywgMHgyNGEyZTAsIDB4MjRiMmUwLCAweDM0YzJlMCwgMHgyM2I0YTNiLCAweDIzYjRiM2IsIDB4MzNjNGMzYywgCi0gIDB4MjRhMmUwLCAweDI0YjJlMCwgMHgzNGMyZTAsIDB4MjJjNTkyYywgMHgyMmM1YTJjLCAweDIyYzViMmMsIDB4MjU5MmUwLCAweDI1YTJlMCwgCi0gIDB4MjViMmUwLCAweDI0YTU5NGEsIDB4MjRhNWE0YSwgMHgyNGI1YjRiLCAweDI1OTJlMCwgMHgyNWEyZTAsIDB4MjViMmUwLCAweDIzYjU5M2IsIAotICAweDIzYjVhM2IsIDB4MjNiNWIzYiwgMHgyNTkyZTAsIDB4MjVhMmUwLCAweDI1YjJlMCwgMHgyMmMzYjJjLCAweDMyYzNjMmMsIDB4NDJkM2QyZCwgCisgIDB4NWE1YTVhLCAweDQ4YjhiOGIsIDB4NDdjN2M3YywgMHgyNTksIDB4MjVhLCAweDI1YiwgMHgzNGEsIDB4MzRiLCAKKyAgMHgzNGMsIDB4NDg5ODkxOSwgMHg0OGE4YTFhLCAweDQ0OGI4YjFiLCAweDQ3YTdhMWEsIDB4NDdiN2IxYiwgMHg0NDdjN2MxYywgMHg0YTRhLCAKKyAgMHg0YjRiLCAweDRjNGMsIDB4NTk1OSwgMHg1YTVhLCAweDViNWIsIDB4NDU4OTg5LCAweDQ0N2E3YSwgMHg0NTdhN2EsIAorICAweDQ4OTQsIDB4NDg5NSwgMHg0ODk0LCAweDQ4OTUsIDB4NDdhNCwgMHg0N2E1LCAweDQ3YTQsIDB4NDdhNSwgCisgIDB4NDQ3YTdhLCAweDQ1ODk4OSwgMHg0NTdhN2EsIDB4NDJjMmMzYiwgMHg0MmQyZDNjLCAoMVU8PDMxKSB8IDE3MDAsIDB4NDhiOGI4YiwgMHg0N2M3YzdjLCAKKyAgMHg0MjhiOGI4YiwgMHg0MzdjN2M3YywgMHg0ODkxOSwgMHg0OGExYSwgMHg0OGIxYiwgMHg0N2ExYSwgMHg0N2IxYiwgMHg0N2MxYywgCisgICgxVTw8MzEpIHwgMTM4OCwgKDFVPDwzMSkgfCAxNzIwLCAoMVU8PDMxKSB8IDEzNjYsICgxVTw8MzEpIHwgMTczMSwgKDFVPDwzMSkgfCAxNTIwLCAoMVU8PDMxKSB8IDE0ODcsICgxVTw8MzEpIHwgMTQ5OCwgKDFVPDwzMSkgfCAxNTA5LCAKKyAgKDFVPDwzMSkgfCAxNDMyLCAoMVU8PDMxKSB8IDE0MTAsICgxVTw8MzEpIHwgMTQ3NiwgKDFVPDwzMSkgfCAxNDU0LCAoMVU8PDMxKSB8IDE0MjEsICgxVTw8MzEpIHwgMTM5OSwgKDFVPDwzMSkgfCAxNDY1LCAoMVU8PDMxKSB8IDE0NDMsIAorICAoMVU8PDMxKSB8IDEzMzMsICgxVTw8MzEpIHwgMTMwMCwgKDFVPDwzMSkgfCAxMzQ0LCAoMVU8PDMxKSB8IDEzMTEsICgxVTw8MzEpIHwgMTMyMiwgKDFVPDwzMSkgfCAxMjg5LCAoMVU8PDMxKSB8IDEzNzcsICgxVTw8MzEpIHwgMTM1NSwgCisgIDB4NDQyZTRiMjAsIDB4NDQyZTRjMzAsIDB4NDQyZTViMjAsIDB4NDQyZTViMjAsIDB4MWIxYjFiLCAweDFkMWQxZCwgKDFVPDwzMSkgfCAxNzEsIDB4MWMxYzFjLCAKKyAgMHgxYjFiNCwgMHgxZDFkNCwgKDFVPDwzMSkgfCAxNzgsIDB4MWMxYzQsIDB4MWIxYjQsIDB4MWQxZDQsICgxVTw8MzEpIHwgMTc4LCAweDFjMWM0LCAKKyAgKDFVPDwzMSkgfCAxNTg4LCAoMVU8PDMxKSB8IDE1NDMsIDB4NDI0ODk4OTIsIDB4NDI0N2E3YTIsICgxVTw8MzEpIHwgODAsIDB4MjRhODk0YSwgMHg0MjRiOGI0YiwgMHgyN2E4OTdhLCAKKyAgMHg0MjdiOGI3YiwgMHgyNTk4OTU5LCAweDI1YThhNWEsIDB4NDI1YjhiNWIsIDB4MjRhODk0YSwgMHgyNGE4YTRhLCAweDQyNGI4YjRiLCAweDI1OTg5NTksIAorICAweDI1YThhNWEsIDB4NDI1YjhiNWIsIDB4MjRhN2E0YSwgMHgyNGI3YjRiLCAweDQzNGM3YzRjLCAweDQyOGI3YjhiLCAweDI1OTdhNTksIDB4MjVhN2E1YSwgCisgIDB4NDI1YjdiNWIsIDB4MjRhN2E0YSwgMHgyNGI3YjRiLCAweDQzNGM3YzRjLCAweDI1OTdhNTksIDB4MjVhN2E1YSwgMHg0MjViN2I1YiwgMHgyN2E1OTdhLCAKKyAgKDFVPDwzMSkgfCAxNTU0LCAoMVU8PDMxKSB8IDE1NzcsIDB4MjRhODk0YSwgMHg0MjRiOGI0YiwgMHgyNTk4OTU5LCAweDI1YThhNWEsIDB4NDI1YjhiNWIsIDB4MjRhODk0YSwgCisgIDB4MjRhOGE0YSwgMHg0MjRiOGI0YiwgMHgyNTk4OTU5LCAweDI1YThhNWEsIDB4NDI1YjhiNWIsIDB4NDM0YzdjNGMsIDB4MjU5N2E1OSwgMHgyNWE3YTVhLCAKKyAgMHg0MjViN2I1YiwgMHgyNGE3YTRhLCAweDI0YjdiNGIsIDB4NDM0YzdjNGMsIDB4MjU5N2E1OSwgMHgyNWE3YTVhLCAweDQyNWI3YjViLCAweDI3YTU5N2EsIAorICAoMVU8PDMxKSB8IDE1ODgsICgxVTw8MzEpIHwgMTU0MywgKDFVPDwzMSkgfCA4MCwgKDFVPDwzMSkgfCAyOTgsICgxVTw8MzEpIHwgMzA5LCAoMVU8PDMxKSB8IDEyNzcsICgxVTw8MzEpIHwgMjc2LCAoMVU8PDMxKSB8IDI4NywgCisgICgxVTw8MzEpIHwgMTcwOCwgKDFVPDwzMSkgfCAxMjY1LCAoMVU8PDMxKSB8IDEyNTMsIDB4MjQ4OTIsIDB4MjQ3YTIsICgxVTw8MzEpIHwgMTE0NywgKDFVPDwzMSkgfCAxMjA3LCAoMVU8PDMxKSB8IDExMjMsIAorICAoMVU8PDMxKSB8IDEyMTksICgxVTw8MzEpIHwgMTE5NSwgKDFVPDwzMSkgfCAxMTU5LCAoMVU8PDMxKSB8IDExNzEsICgxVTw8MzEpIHwgMTE4MywgKDFVPDwzMSkgfCAxMDAzLCAoMVU8PDMxKSB8IDk3OSwgKDFVPDwzMSkgfCAxMDk5LCAKKyAgKDFVPDwzMSkgfCAxMDc1LCAoMVU8PDMxKSB8IDk5MSwgKDFVPDwzMSkgfCA5NjcsICgxVTw8MzEpIHwgMTA4NywgKDFVPDwzMSkgfCAxMDYzLCAoMVU8PDMxKSB8IDk1NSwgKDFVPDwzMSkgfCA5NDMsICgxVTw8MzEpIHwgMTA1MSwgCisgICgxVTw8MzEpIHwgMTAyNywgKDFVPDwzMSkgfCAxMDM5LCAoMVU8PDMxKSB8IDEwMTUsICgxVTw8MzEpIHwgMTEzNSwgKDFVPDwzMSkgfCAxMTExLCAweDI4OTg5ODksIDB4MjhhOGE4YSwgMHg0MjhiOGI4YiwgCisgIDB4MjdhN2E3YSwgMHgyN2I3YjdiLCAweDQzN2M3YzdjLCAoMVU8PDMxKSB8IDE1ODgsICgxVTw8MzEpIHwgMTU0MywgMHgyODk0ODk4OSwgMHgyOGE0OGE4YSwgKDFVPDwzMSkgfCAxNjAxLCAKKyAgMHgyN2E0N2E3YSwgMHgyN2I0N2I3YiwgKDFVPDwzMSkgfCAxNzQ0LCAoMVU8PDMxKSB8IDE1NjUsICgxVTw8MzEpIHwgMTUzMSwgKDFVPDwzMSkgfCAxNTg4LCAoMVU8PDMxKSB8IDE1NDMsICgxVTw8MzEpIHwgMTU4OCwgCisgICgxVTw8MzEpIHwgMTU0MywgKDFVPDwzMSkgfCAxNTg4LCAoMVU8PDMxKSB8IDE1NDMsIDB4MjJjNGEyYywgMHgyMmM0YjJjLCAweDMyYzRjMmMsIDB4MjRhMmUwLCAweDI0YjJlMCwgCisgIDB4MzRjMmUwLCAweDIzYjRhM2IsIDB4MjNiNGIzYiwgMHgzM2M0YzNjLCAweDI0YTJlMCwgMHgyNGIyZTAsIDB4MzRjMmUwLCAweDIyYzU5MmMsIAorICAweDIyYzVhMmMsIDB4MjJjNWIyYywgMHgyNTkyZTAsIDB4MjVhMmUwLCAweDI1YjJlMCwgMHgyNGE1OTRhLCAweDI1OTJlMCwgMHgyNWEyZTAsIAorICAweDI1YjJlMCwgMHgyM2I1OTNiLCAweDIzYjVhM2IsIDB4MjNiNWIzYiwgMHgyNTkyZTAsIDB4MjVhMmUwLCAweDI1YjJlMCwgMHgyMmMzYjJjLCAKICAgMHgyM2IyZTAsIDB4MzNjMmUwLCAweDQzZDJlMCwgMHgyMmM0YTJjLCAweDIyYzRiMmMsIDB4MzJjNGMyYywgMHgyNGEyZTAsIDB4MjRiMmUwLCAKICAgMHgzNGMyZTAsIDB4MjNiNGEzYiwgMHgyM2I0YjNiLCAweDMzYzRjM2MsIDB4MjRhMmUwLCAweDI0YjJlMCwgMHgzNGMyZTAsIDB4MjJjNTkyYywgCiAgIDB4MjJjNWEyYywgMHgyMmM1YjJjLCAweDI1OTJlMCwgMHgyNWEyZTAsIDB4MjViMmUwLCAweDI0YTU5NGEsIDB4MjRhNWE0YSwgMHgyNGI1YjRiLCAKQEAgLTgzOTEsNTg2ICs4NDI0LDYyNiBAQAogICAweDI0YTJlMCwgMHgyNGIyZTAsIDB4MzRjMmUwLCAweDIyYzU5MmMsIDB4MjJjNWEyYywgMHgyMmM1YjJjLCAweDI1OTJlMCwgMHgyNWEyZTAsIAogICAweDI1YjJlMCwgMHgyNGE1OTRhLCAweDI0YTVhNGEsIDB4MjRiNWI0YiwgMHgyNTkyZTAsIDB4MjVhMmUwLCAweDI1YjJlMCwgMHgyM2I1OTNiLCAKICAgMHgyM2I1YTNiLCAweDIzYjViM2IsIDB4MjU5MmUwLCAweDI1YTJlMCwgMHgyNWIyZTAsIDB4MjJjM2IyYywgMHgzMmMzYzJjLCAweDQyZDNkMmQsIAotICAweDIzYjJlMCwgMHgzM2MyZTAsIDB4NDNkMmUwLCAoMVU8PDMxKSB8IDgxNiwgKDFVPDwzMSkgfCAxNDE3LCAoMVU8PDMxKSB8IDQzOTAsICgxVTw8MzEpIHwgNTcyLCAoMVU8PDMxKSB8IDYxNywgCi0gICgxVTw8MzEpIHwgMTM1MiwgKDFVPDwzMSkgfCA0NzgsICgxVTw8MzEpIHwgNTM1LCAoMVU8PDMxKSB8IDE1MDUsICgxVTw8MzEpIHwgMjk4MSwgKDFVPDwzMSkgfCAyOTY5LCAweDI4OTQ4OTg5LCAweDI4YTQ4YThhLCAKLSAgKDFVPDwzMSkgfCAxMzU0LCAweDI3YTQ3YTdhLCAweDI3YjQ3YjdiLCAoMVU8PDMxKSB8IDE1MDcsICgxVTw8MzEpIHwgMjk4MSwgKDFVPDwzMSkgfCAyOTY5LCAweDI4OTQ4OTg5LCAweDI4YTQ4YThhLCAKLSAgKDFVPDwzMSkgfCAxMzU0LCAweDI3YTQ3YTdhLCAweDI3YjQ3YjdiLCAoMVU8PDMxKSB8IDE1MDcsICgxVTw8MzEpIHwgMjk4MSwgKDFVPDwzMSkgfCAyOTY5LCAoMVU8PDMxKSB8IDYwNywgKDFVPDwzMSkgfCA2NTIsIAotICAoMVU8PDMxKSB8IDEzNjQsICgxVTw8MzEpIHwgNTI1LCAoMVU8PDMxKSB8IDU1OCwgKDFVPDwzMSkgfCAxNTE3LCAoMVU8PDMxKSB8IDEzNDEsICgxVTw8MzEpIHwgMTI5NiwgKDFVPDwzMSkgfCAxMzQxLCAoMVU8PDMxKSB8IDEyOTYsIAotICAoMVU8PDMxKSB8IDEzNDEsICgxVTw8MzEpIHwgMTI5NiwgMHgyN2EzYjdhLCAweDI3YjNiN2IsIDB4NDM3YzNjN2MsIDB4MjNiNDdhM2IsIDB4MjNiNDdiM2IsIDB4MzNjNDdjM2MsIAotICAoMVU8PDMxKSB8IDMwMCwgKDFVPDwzMSkgfCAzNTYsICgxVTw8MzEpIHwgODQ2LCAoMVU8PDMxKSB8IDQwNCwgKDFVPDwzMSkgfCA0NDgsICgxVTw8MzEpIHwgNDY4LCAoMVU8PDMxKSB8IDIyNCwgKDFVPDwzMSkgfCA4MzYsIAotICAoMVU8PDMxKSB8IDE1NjAsICgxVTw8MzEpIHwgMzAwLCAoMVU8PDMxKSB8IDM1NiwgKDFVPDwzMSkgfCA4NDYsICgxVTw8MzEpIHwgNDA0LCAoMVU8PDMxKSB8IDQ0OCwgKDFVPDwzMSkgfCA0NjgsICgxVTw8MzEpIHwgMjI0LCAKLSAgKDFVPDwzMSkgfCA4MzYsICgxVTw8MzEpIHwgMTU2MCwgMHgzMmMyYzMsIDB4NDJkMmQ0LCAoMVU8PDMxKSB8IDQ0MDAsICgxVTw8MzEpIHwgMjY2LCAoMVU8PDMxKSB8IDI3NywgKDFVPDwzMSkgfCAxMDMwLCAKLSAgKDFVPDwzMSkgfCAyNDQsICgxVTw8MzEpIHwgMjU1LCAoMVU8PDMxKSB8IDE0NzEsICgxVTw8MzEpIHwgMTAxOCwgKDFVPDwzMSkgfCAxMDA2LCAoMVU8PDMxKSB8IDMwMCwgKDFVPDwzMSkgfCAzNTYsICgxVTw8MzEpIHwgODQ2LCAKLSAgKDFVPDwzMSkgfCA0MDQsICgxVTw8MzEpIHwgNDQ4LCAoMVU8PDMxKSB8IDQ2OCwgKDFVPDwzMSkgfCAyMjQsICgxVTw8MzEpIHwgODM2LCAoMVU8PDMxKSB8IDE1NjAsICgxVTw8MzEpIHwgMzAwLCAoMVU8PDMxKSB8IDM1NiwgCi0gICgxVTw8MzEpIHwgODQ2LCAoMVU8PDMxKSB8IDQwNCwgKDFVPDwzMSkgfCA0NDgsICgxVTw8MzEpIHwgNDY4LCAoMVU8PDMxKSB8IDIyNCwgKDFVPDwzMSkgfCA4MzYsICgxVTw8MzEpIHwgMTU2MCwgMHg0OGI4YjhiLCAKLSAgMHg0N2M3YzdjLCAweDQ4YjhiOGIsIDB4NDdjN2M3YywgMHg0OGI4YjhiLCAweDQ3YzdjN2MsIDB4NGM0YzNkLCAoMVU8PDMxKSB8IDg4MSwgMHg0YzRjM2QsIAotICAoMVU8PDMxKSB8IDg4MSwgKDFVPDwzMSkgfCA3OTAsIDB4M2QzZDNkLCAweDVhOGE4YSwgMHg1YjhiOGIsIDB4NWE1YTVhLCAweDViNWI1YiwgMHgzYjNiM2IsIAotICAweDNjM2MzYywgMHgzZDNkM2QsIDB4MmMyYzJjLCAweDJkMmQyZCwgKDFVPDwzMSkgfCA3OTAsIDB4NGM3YzdjLCAweDRjNGM0YywgKDFVPDwzMSkgfCA3OTcsIAotICAweDNkM2Q0YywgMHgzZDNkM2QsIDB4M2QzZDNkLCAweDNkM2QzZCwgMHg0NGE0YSwgMHg0NGI0YiwgMHg0NGM0YywgMHg0NTk1OSwgCi0gIDB4NDVhNWEsIDB4NDViNWIsIDB4NGE0YTRhLCAweDRiNGI0YiwgMHg0YzRjNGMsIDB4NTk1OTU5LCAweDVhNWE1YSwgMHg1YjViNWIsIAotICAweDQ0YTRhLCAweDQ0YjRiLCAweDQ0YzRjLCAweDQ1OTU5LCAweDQ1YTVhLCAweDQ1YjViLCAweDRhNGE0YSwgMHg0YjRiNGIsIAotICAweDRjNGM0YywgMHg1OTU5NTksIDB4NWE1YTVhLCAweDViNWI1YiwgKDFVPDwzMSkgfCA4MDQsICgxVTw8MzEpIHwgNzkwLCAweDRhNGM0YywgMHg1OTViNWIsIAotICAweDNiM2QzZCwgMHg0NGM0YywgMHg0NWI1YiwgMHg0M2QzZCwgMHg0YzRjNGMsIDB4NWI1YjViLCAweDNiM2IzYiwgMHgzYzNjM2MsIAotICAweDNkM2QzZCwgMHg0YTRjNGMsIDB4NTk1OTU5LCAweDU5NWE1YSwgMHg1OTViNWIsIDB4M2IzZDNkLCAweDQ0YzRjLCAweDQ1OTU5LCAKLSAgMHg0NWE1YSwgMHg0NWI1YiwgMHg0M2QzZCwgMHg0YzRjNGMsIDB4NTk1OTU5LCAweDVhNWE1YSwgMHg1YjViNWIsIDB4M2IzYjNiLCAKLSAgMHgzYzNjM2MsIDB4M2QzZDNkLCAweDRhNGM0YywgMHg1OTViNWIsIDB4M2IzZDNkLCAweDQ0YzRjLCAweDQ1YjViLCAweDQzZDNkLCAKLSAgMHg0YzRjNGMsIDB4NWI1YjViLCAweDNiM2IzYiwgMHgzYzNjM2MsIDB4M2QzZDNkLCAoMVU8PDMxKSB8IDc5MCwgMHgzZDNkM2QsICgxVTw8MzEpIHwgMzQ0MywgCi0gICgxVTw8MzEpIHwgMzQ4MywgKDFVPDwzMSkgfCAzNTU3LCAoMVU8PDMxKSB8IDM3NzEsICgxVTw8MzEpIHwgMzgwMSwgKDFVPDwzMSkgfCAzODMxLCAweDI4OTg5ODksIDB4MjhhOGE4YSwgMHgyOGI4YjhiLCAKLSAgMHgyN2E3YTdhLCAweDI3YjdiN2IsIDB4MzdjN2M3YywgKDFVPDwzMSkgfCA2MDcsICgxVTw8MzEpIHwgNTI1LCAweDQyOGI4YjhiLCAweDQzN2M3YzdjLCAoMVU8PDMxKSB8IDEzNDEsIAotICAoMVU8PDMxKSB8IDEyOTYsIDB4Mjg5ODk4OSwgMHgyOGE4YThhLCAweDI4YjhiOGIsIDB4MjdhN2E3YSwgMHgyN2I3YjdiLCAweDM3YzdjN2MsICgxVTw8MzEpIHwgNjA3LCAKLSAgKDFVPDwzMSkgfCA1MjUsIDB4NDI4YjhiOGIsIDB4NDM3YzdjN2MsICgxVTw8MzEpIHwgMTM0MSwgKDFVPDwzMSkgfCAxMjk2LCAoMVU8PDMxKSB8IDM5OTcsICgxVTw8MzEpIHwgMzU0NywgKDFVPDwzMSkgfCAzODExLCAKLSAgKDFVPDwzMSkgfCAzOTI5LCAoMVU8PDMxKSB8IDQwMDcsICgxVTw8MzEpIHwgMzQ5MywgKDFVPDwzMSkgfCAzODIxLCAoMVU8PDMxKSB8IDM5MTksICgxVTw8MzEpIHwgMzk2NywgKDFVPDwzMSkgfCAzNzYxLCAoMVU8PDMxKSB8IDM5ODcsIAotICAoMVU8PDMxKSB8IDM3OTEsICgxVTw8MzEpIHwgMzg4OSwgKDFVPDwzMSkgfCAzNDUzLCAoMVU8PDMxKSB8IDM4OTksICgxVTw8MzEpIHwgMzQ2MywgMHg0NDJlNGIyMCwgMHg0NDJlNGMzMCwgMHg0NDJlNWIyMCwgCi0gIDB4NDQyZTViMjAsICgxVTw8MzEpIHwgMzk1NywgKDFVPDwzMSkgfCAzNzUxLCAoMVU8PDMxKSB8IDM5NzcsICgxVTw8MzEpIHwgMzc4MSwgKDFVPDwzMSkgfCAzODc5LCAoMVU8PDMxKSB8IDM0MTEsICgxVTw8MzEpIHwgMzkwOSwgCi0gICgxVTw8MzEpIHwgMzQ3MywgMHg0OGI4YiwgMHg0N2M3YywgMHg0OGI4YjhiLCAweDQ3YzdjN2MsIDB4NDQ4OTg5NCwgMHg0NDdhN2E0LCAweDQ4OTQsIAotICAweDQ4OTUsIDB4NDg5NCwgMHg0ODk1LCAweDQ3YTQsIDB4NDdhNSwgMHg0N2E0LCAweDQ3YTUsIDB4NDc3NzcsIAotICAweDQ4ODg4LCAoMVU8PDMxKSB8IDQwMTcsICgxVTw8MzEpIHwgMzkzOSwgKDFVPDwzMSkgfCA0MDE3LCAoMVU8PDMxKSB8IDM5MzksIDB4NGE0YTRhNGEsIDB4NGI0YjRiNGIsIDB4NGM0YzRjNGMsIAotICAweDRhNGE0YTRhLCAweDRiNGI0YjRiLCAweDRjNGM0YzRjLCAweDRhNGE0YTRhLCAweDRiNGI0YjRiLCAweDRjNGM0YzRjLCAweDRhNGE0YTRhLCAweDRiNGI0YjRiLCAKLSAgMHg0YzRjNGM0YywgMHg0YTRhNGE0YSwgMHg0YjRiNGI0YiwgMHg0YzRjNGM0YywgMHgzYjNiM2IzYiwgMHgzYzNjM2MzYywgMHgzZDNkM2QzZCwgKDFVPDwzMSkgfCA1MjA2LCAKLSAgKDFVPDwzMSkgfCA1MjM3LCAoMVU8PDMxKSB8IDUyNTUsIDB4N2E0YTdhN2EsIDB4N2I0YjdiN2IsIDB4N2M0YzdjN2MsIDB4NTk1OTU5NTksIDB4NWE1YTVhNWEsIDB4NWI1YjViNWIsIAotICAweDJjMmMyYzJjLCAweDJkMmQyZDJkLCAoMVU8PDMxKSB8IDc4OCwgMHg1YjhiOGIsIDB4NGM3YzdjLCAweDU5NTk1OTU5LCAweDVhNWE1YTVhLCAweDViNWI1YjViLCAKLSAgMHg1OTU5NTk1OSwgMHg1YTVhNWE1YSwgMHg1YjViNWI1YiwgMHg0NGE0YTRhLCAweDQ0YjRiNGIsIDB4NDRjNGM0YywgMHg0NTk1OTU5LCAweDQ1YTVhNWEsIAotICAweDQ1YjViNWIsIDB4NDNiM2IzYiwgMHg0M2MzYzNjLCAweDQzZDNkM2QsIDB4NDRhNGE0YSwgMHg0NGI0YjRiLCAweDQ0YzRjNGMsIDB4NDU5NTk1OSwgCi0gIDB4NDVhNWE1YSwgMHg0NWI1YjViLCAweDQzYjNiM2IsIDB4NDNjM2MzYywgMHg0M2QzZDNkLCAweDQ0NCwgMHg1NTUsIDB4NDQ0LCAKKyAgMHgyM2IyZTAsIDB4MzNjMmUwLCAweDQzZDJlMCwgKDFVPDwzMSkgfCA1NTQsICgxVTw8MzEpIHwgNTk5LCAoMVU8PDMxKSB8IDE1OTksICgxVTw8MzEpIHwgNDYwLCAoMVU8PDMxKSB8IDUxNywgCisgICgxVTw8MzEpIHwgMTc0MiwgKDFVPDwzMSkgfCAzMjA4LCAoMVU8PDMxKSB8IDMxOTYsIDB4Mjg5NDg5ODksIDB4MjhhNDhhOGEsICgxVTw8MzEpIHwgMTYwMSwgMHgyN2E0N2E3YSwgMHgyN2I0N2I3YiwgCisgICgxVTw8MzEpIHwgMTc0NCwgKDFVPDwzMSkgfCAzMjA4LCAoMVU8PDMxKSB8IDMxOTYsIDB4Mjg5NDg5ODksIDB4MjhhNDhhOGEsICgxVTw8MzEpIHwgMTYwMSwgMHgyN2E0N2E3YSwgMHgyN2I0N2I3YiwgCisgICgxVTw8MzEpIHwgMTc0NCwgKDFVPDwzMSkgfCAzMjA4LCAoMVU8PDMxKSB8IDMxOTYsICgxVTw8MzEpIHwgNTg5LCAoMVU8PDMxKSB8IDYzNCwgKDFVPDwzMSkgfCAxNjExLCAoMVU8PDMxKSB8IDUwNywgKDFVPDwzMSkgfCA1NDAsIAorICAoMVU8PDMxKSB8IDE3NTQsICgxVTw8MzEpIHwgMTU4OCwgKDFVPDwzMSkgfCAxNTQzLCAoMVU8PDMxKSB8IDQ1MjcsICgxVTw8MzEpIHwgMzg4MSwgKDFVPDwzMSkgfCA0MjA5LCAoMVU8PDMxKSB8IDQ0MDQsICgxVTw8MzEpIHwgNDU0OCwgCisgICgxVTw8MzEpIHwgMzgxNiwgKDFVPDwzMSkgfCA0MjMwLCAoMVU8PDMxKSB8IDQzODMsICgxVTw8MzEpIHwgNDQ2NCwgKDFVPDwzMSkgfCA0MTI2LCAoMVU8PDMxKSB8IDQ1MDYsICgxVTw8MzEpIHwgNDE3OCwgKDFVPDwzMSkgfCA0MzIwLCAKKyAgKDFVPDwzMSkgfCAzNzQzLCAoMVU8PDMxKSB8IDQzNDEsICgxVTw8MzEpIHwgMzc2NCwgKDFVPDwzMSkgfCA0NDQzLCAoMVU8PDMxKSB8IDQxMDUsICgxVTw8MzEpIHwgNDQ4NSwgKDFVPDwzMSkgfCA0MTU3LCAoMVU8PDMxKSB8IDQyOTksIAorICAoMVU8PDMxKSB8IDM2OTAsICgxVTw8MzEpIHwgNDM2MiwgKDFVPDwzMSkgfCAzNzg1LCAoMVU8PDMxKSB8IDE1ODgsICgxVTw8MzEpIHwgMTU0MywgKDFVPDwzMSkgfCAxNTg4LCAoMVU8PDMxKSB8IDE1NDMsIDB4MjdhM2I3YSwgCisgIDB4MjdiM2I3YiwgMHg0MzdjM2M3YywgMHgyM2I0N2EzYiwgMHgyM2I0N2IzYiwgMHgzM2M0N2MzYywgKDFVPDwzMSkgfCAyOTgsICgxVTw8MzEpIHwgMzA5LCAoMVU8PDMxKSB8IDEyNzcsIAorICAoMVU8PDMxKSB8IDI3NiwgKDFVPDwzMSkgfCAyODcsICgxVTw8MzEpIHwgMTcwOCwgKDFVPDwzMSkgfCAxMjY1LCAoMVU8PDMxKSB8IDEyNTMsIDB4NDhiOGI4YiwgMHg0N2M3YzdjLCAweDQ4YjhiOGIsIAorICAweDQ3YzdjN2MsIDB4NDhiOGI4YiwgMHg0N2M3YzdjLCAweDRjNGMzZCwgKDFVPDwzMSkgfCA4NDAsIDB4NGM0YzNkLCAoMVU8PDMxKSB8IDg0MCwgMHg1YThhOGEsIAorICAweDViOGI4YiwgMHg1YTVhNWEsIDB4NWI1YjViLCAweDNiM2IzYiwgMHgzYzNjM2MsIDB4M2QzZDNkLCAweDJjMmMyYywgMHgyZDJkMmQsIAorICAoMVU8PDMxKSB8IDc3OSwgMHg0YzdjN2MsIDB4NGM0YzRjLCAoMVU8PDMxKSB8IDc4NiwgMHgzZDNkNGMsIDB4M2QzZDNkLCAweDNkM2QzZCwgMHgzZDNkM2QsIAorICAweDJjMmMyYywgMHgyZDJkMmQsICgxVTw8MzEpIHwgNzc5LCAoMVU8PDMxKSB8IDc5MywgKDFVPDwzMSkgfCA3NzksIDB4NGE0YzRjLCAweDU5NWI1YiwgMHgzYjNkM2QsIAorICAweDQ0YzRjLCAweDQ1YjViLCAweDQzZDNkLCAweDRjNGM0YywgMHg1YjViNWIsIDB4M2IzYjNiLCAweDNjM2MzYywgMHgzZDNkM2QsIAorICAweDRhNGM0YywgMHg1OTU5NTksIDB4NTk1YTVhLCAweDU5NWI1YiwgMHgzYjNkM2QsIDB4NDRjNGMsIDB4NDU5NTksIDB4NDVhNWEsIAorICAweDQ1YjViLCAweDQzZDNkLCAweDRjNGM0YywgMHg1OTU5NTksIDB4NWE1YTVhLCAweDViNWI1YiwgMHgzYjNiM2IsIDB4M2MzYzNjLCAKKyAgMHgzZDNkM2QsIDB4NGE0YzRjLCAweDU5NWI1YiwgMHgzYjNkM2QsIDB4NDRjNGMsIDB4NDViNWIsIDB4NDNkM2QsIDB4NGM0YzRjLCAKKyAgMHg1YjViNWIsIDB4M2IzYjNiLCAweDNjM2MzYywgMHgzZDNkM2QsICgxVTw8MzEpIHwgMzczMywgKDFVPDwzMSkgfCAzODA2LCAoMVU8PDMxKSB8IDM5MDMsICgxVTw8MzEpIHwgNDE0NywgCisgICgxVTw8MzEpIHwgNDE5OSwgKDFVPDwzMSkgfCA0MjUxLCAweDI4OTg5ODksIDB4MjhhOGE4YSwgMHgyOGI4YjhiLCAweDI3YTdhN2EsIDB4MjdiN2I3YiwgMHgzN2M3YzdjLCAKKyAgKDFVPDwzMSkgfCA1ODksICgxVTw8MzEpIHwgNTA3LCAweDQyOGI4YjhiLCAweDQzN2M3YzdjLCAoMVU8PDMxKSB8IDE1ODgsICgxVTw8MzEpIHwgMTU0MywgMHgyODk4OTg5LCAweDI4YThhOGEsIAorICAweDI4YjhiOGIsIDB4MjdhN2E3YSwgMHgyN2I3YjdiLCAweDM3YzdjN2MsICgxVTw8MzEpIHwgNTg5LCAoMVU8PDMxKSB8IDUwNywgMHg0MjhiOGI4YiwgMHg0MzdjN2M3YywgCisgICgxVTw8MzEpIHwgMTU4OCwgKDFVPDwzMSkgfCAxNTQzLCAoMVU8PDMxKSB8IDQ1MzgsICgxVTw8MzEpIHwgMzg5MiwgKDFVPDwzMSkgfCA0MjIwLCAoMVU8PDMxKSB8IDQ0MTUsICgxVTw8MzEpIHwgNDU1OSwgKDFVPDwzMSkgfCAzODI3LCAKKyAgKDFVPDwzMSkgfCA0MjQxLCAoMVU8PDMxKSB8IDQzOTQsICgxVTw8MzEpIHwgNDQ3NSwgKDFVPDwzMSkgfCA0MTM3LCAoMVU8PDMxKSB8IDQ1MTcsICgxVTw8MzEpIHwgNDE4OSwgKDFVPDwzMSkgfCA0MzMxLCAoMVU8PDMxKSB8IDM3NTQsIAorICAoMVU8PDMxKSB8IDQzNTIsICgxVTw8MzEpIHwgMzc3NSwgMHg0NDJlNGIyMCwgMHg0NDJlNGMzMCwgMHg0NDJlNWIyMCwgMHg0NDJlNWIyMCwgKDFVPDwzMSkgfCA0NDU0LCAoMVU8PDMxKSB8IDQxMTYsIAorICAoMVU8PDMxKSB8IDQ0OTYsICgxVTw8MzEpIHwgNDE2OCwgKDFVPDwzMSkgfCA0MzEwLCAoMVU8PDMxKSB8IDM3MDEsICgxVTw8MzEpIHwgNDM3MywgKDFVPDwzMSkgfCAzNzk2LCAweDQ5ZjJmLCAweDQ4YjhiLCAKKyAgMHg0N2M3YywgMHg0OGI4YjhiLCAweDQ3YzdjN2MsIDB4NDlmMmYsIDB4NDQ4OTg5NCwgMHg0NDdhN2E0LCAweDQ4OTQsIDB4NDg5NSwgCisgIDB4NDg5NCwgMHg0ODk1LCAweDQ3YTQsIDB4NDdhNSwgMHg0N2E0LCAweDQ3YTUsIDB4NDc3NzcsIDB4NDg4ODgsIAorICAoMVU8PDMxKSB8IDQ1NjksICgxVTw8MzEpIHwgNDQyNSwgKDFVPDwzMSkgfCA0NTY5LCAoMVU8PDMxKSB8IDQ0MjUsIDB4NGE0YTRhNGEsIDB4NGI0YjRiNGIsIDB4NGM0YzRjNGMsIDB4NGE0YTRhNGEsIAorICAweDRiNGI0YjRiLCAweDRjNGM0YzRjLCAweDRhNGE0YTRhLCAweDRiNGI0YjRiLCAweDRjNGM0YzRjLCAweDRhNGE0YTRhLCAweDRiNGI0YjRiLCAweDRjNGM0YzRjLCAKKyAgMHg0YTRhNGE0YSwgMHg0YjRiNGI0YiwgMHg0YzRjNGM0YywgMHgzYjNiM2IzYiwgMHgzYzNjM2MzYywgMHgzZDNkM2QzZCwgKDFVPDwzMSkgfCA1NzY5LCAoMVU8PDMxKSB8IDU4MDAsIAorICAoMVU8PDMxKSB8IDU4MTgsIDB4N2E0YTdhN2EsIDB4N2I0YjdiN2IsIDB4N2M0YzdjN2MsIDB4NTk1OTU5NTksIDB4NWE1YTVhNWEsIDB4NWI1YjViNWIsIDB4MmMyYzJjMmMsIAorICAweDJkMmQyZDJkLCAoMVU8PDMxKSB8IDc3NywgMHg1YjhiOGIsIDB4NGM3YzdjLCAweDU5NTk1OTU5LCAweDVhNWE1YTVhLCAweDViNWI1YjViLCAweDU5NTk1OTU5LCAKKyAgMHg1YTVhNWE1YSwgMHg1YjViNWI1YiwgMHgyYzJjMWMsIDB4MmQyZDFkLCAoMVU8PDMxKSB8IDc3MCwgMHg0NDQsIDB4NTU1LCAweDQ0NCwgCiAgIDB4NTU1LCAweDQ0NCwgMHg1NTUsIDB4NDQ0LCAweDU1NSwgMHgyZTAsIDB4MmUwLCAweDJlMCwgCiAgIDB4MmUwLCAweDJlMCwgMHg0MmUwLCAweDUyZTAsIDB4NCwgMHg1LCAweDQwLCAweDUwLCAKICAgMHgyZTAsIDB4MmUwLCAweDJlMCwgMHgyZTAsIDB4NDAsIDB4NTAsIDB4MjAsIDB4MmU0MCwgCi0gIDB4MmUwLCAweDQ0NDIsIDB4NDQ1MiwgMHg0NDQwLCAweDQ0NTAsIDB4MCwgMHgwLCAoMVU8PDMxKSB8IDc3NiwgCi0gICgxVTw8MzEpIHwgNTQ0NCwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAKLSAgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDgxMSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgCi0gICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA0MzczLCAKLSAgKDFVPDwzMSkgfCAzNjc2LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDMxLCAoMVU8PDMxKSB8IDU0NDksIAotICAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgCi0gICgxVTw8MzEpIHwgNDM4NiwgKDFVPDwzMSkgfCA0Mzg2LCAoMVU8PDMxKSB8IDQzODYsICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDQzODYsICgxVTw8MzEpIHwgNDM4NiwgKDFVPDwzMSkgfCA1NDQ5LCAKLSAgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNDM4NiwgKDFVPDwzMSkgfCA0Mzg2LCAoMVU8PDMxKSB8IDQzODYsICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksIAotICAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgCi0gICgxVTw8MzEpIHwgNTQ0OSwgKDFVPDwzMSkgfCA1NDQ5LCAoMVU8PDMxKSB8IDU0NDksICgxVTw8MzEpIHwgNTQ0OSwgMHg0NDJlMCwgMHgyZTJlMCwgMHg0NDQwLCAweDI1OTU5NTksIAorICAweDJlMCwgMHg0NDQyLCAweDQ0NTIsIDB4NDQ0MCwgMHg0NDUwLCAweDAsIDB4MCwgKDFVPDwzMSkgfCA3NTgsIAorICAoMVU8PDMxKSB8IDYwMDcsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgCisgICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA4MDAsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsIAorICAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNDkyNSwgCisgICgxVTw8MzEpIHwgNDAyMywgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNTk5NCwgKDFVPDwzMSkgfCA2MDEyLCAKKyAgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsIAorICAoMVU8PDMxKSB8IDQ5MzgsICgxVTw8MzEpIHwgNDkzOCwgKDFVPDwzMSkgfCA0OTM4LCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA0OTM4LCAoMVU8PDMxKSB8IDQ5MzgsICgxVTw8MzEpIHwgNjAxMiwgCisgICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDQ5MzgsICgxVTw8MzEpIHwgNDkzOCwgKDFVPDwzMSkgfCA0OTM4LCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAKKyAgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsIAorICAoMVU8PDMxKSB8IDYwMTIsICgxVTw8MzEpIHwgNjAxMiwgKDFVPDwzMSkgfCA2MDEyLCAoMVU8PDMxKSB8IDYwMTIsIDB4NDQyZTAsIDB4MmUyZTAsIDB4NDQ0MCwgMHgyNTk1OTU5LCAKICAgMHgyNWE1YTVhLCAweDI1YjViNWIsIDB4NDAsIDB4NTAsIDB4NCwgMHg1LCAweDQsIDB4NSwgCi0gIDB4NCwgMHg0LCAweDQ1LCAoMVU8PDMxKSB8IDE1NzAsICgxVTw8MzEpIHwgMzY4NywgKDFVPDwzMSkgfCAzODQxLCAoMVU8PDMxKSB8IDE1NzAsICgxVTw8MzEpIHwgMzY4NywgCi0gICgxVTw8MzEpIHwgMzg0MSwgMHg0NCwgMHg1NSwgMHg1LCAoMVU8PDMxKSB8IDM4NDEsIDB4MmUwLCAweDAsIDB4MmUwLCAKLSAgMHgyZTAsIDB4MmUyZSwgMHgyZTJlMmUsIDB4MCwgMHg0YTRhNGEsIDB4NGE0YTRhLCAweDRhNGE0YSwgMHgyNGE0YTRhLCAKLSAgMHg0YTRhNGEsIDB4NGE0YTRhLCAweDRhNGE0YTRhLCAweDJlLCAweDI3YTdhN2EsIDB4MjdhN2E3YSwgMHg3YTdhNCwgMHg3YTdhNCwgCi0gIDB4N2E3YTQsIDB4N2E3YTQsIDB4N2E3YTQsIDB4N2E3YTQsICgxVTw8MzEpIHwgNTIzMywgKDFVPDwzMSkgfCA1NDQwLCAoMVU8PDMxKSB8IDU0MzQsICgxVTw8MzEpIHwgNTIwMiwgCi0gIDB4N2E0LCAweDdhNSwgKDFVPDwzMSkgfCA1MjMzLCAoMVU8PDMxKSB8IDUyMDIsIDB4N2E0LCAweDdhNSwgMHgyZTAsIDB4N2E3YTdhLCAKLSAgMHg3YTdhN2EsIDB4N2E3YTdhLCAweDdhN2E3YSwgMHg3YTQsICgxVTw8MzEpIHwgODEyLCAweDdhN2EsIDB4N2E3YSwgMHg3YTdhLCAKLSAgMHg3YTdhLCAweDAsIDB4MmUwLCAweDdhN2E0LCAweDdhN2E0LCAweDdhN2E0LCAweDdhN2E0LCAweDdhN2E0LCAKLSAgMHg3YTdhNCwgMHgyZTAsIDB4Mjg5ODk4OSwgMHgyODk4OTg5LCAweDg5ODk0LCAweDg5ODk0LCAweDg5ODk0LCAweDg5ODk0LCAKLSAgMHg4OTg5NCwgMHg4OTg5NCwgMHg4OTRhLCAweDg5N2EsIDB4N2E0YSwgMHg4OTQsIDB4ODk1LCAweDg5N2E3YSwgCi0gIDB4ODk0YSwgMHg3YTRhLCAweDg5NCwgMHg4OTUsIDB4MCwgMHgyZTJjMmMwLCAweDg5ODk4OSwgMHg4OTg5ODksIAotICAweDAsIDB4ODk4OTg5LCAweDg5ODk4OSwgMHg4OTQsIDB4NGE0YTNiLCAweDNiM2IyYywgMHgzYjNiMmMsIDB4MmMyYzJjLCAKLSAgMHgzYjNiM2IsIDB4MCwgMHgzYjNiNGEsIDB4MmM0LCAweDNiM2IzYiwgMHgzYjNiM2IsIDB4MmMyYzU5LCAweDRhNGE0YSwgCi0gIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0NGE0YSwgMHg0NTk1OSwgMHg0M2IzYiwgMHg0YTRhNGEsIDB4M2IzYjNiLCAweDQ0YTRhLCAKLSAgMHg0M2IzYiwgMHg0YTRhNGEsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0NGE0YSwgMHg0NTk1OSwgMHg0M2IzYiwgMHgyYzJjMmMsIAotICAweDNiM2IzYiwgMHg4OTg5NCwgMHg4OTg5NCwgMHg4OTg5NCwgMHg4OTg5NCwgMHg4OTg5NCwgMHg4OTg5NCwgMHg4OTg5ODksIAotICAweDdhN2E3YSwgMHg4OTg5ODksIDB4N2E3YTdhLCAweDg5ODk4OSwgMHg3YTdhN2EsIDB4MmUyYywgMHg0NDJlMCwgMHg0NDAsIAotICAoMVU8PDMxKSB8IDUyMjQsIDB4N2E3YTdhN2EsIDB4Mjg5ODk4OSwgMHgyN2E3YTdhLCAweDI3YTdhN2EsIDB4MjJjMmMzYiwgMHg0YTRhM2IsIDB4MmMyYzJjMmMsIAotICAweDNiM2IsIDB4NTk1OTQsIDB4NTk1OTQsIDB4NTk1OTQsIDB4NDg5ODksIDB4NDdhN2EsIDB4NDg5ODk4OSwgMHg0N2E3YTdhLCAKLSAgMHgzNDQsIDB4NDQ0LCAweDI0NCwgMHg1NTUsIDB4MjQyYzQyYzQsIDB4MjQyYzQyYzQsIDB4MjQyYzQyYzQsIDB4MjQyYzQyYzQsIAotICAweDI0MmM0MmM0LCAweDI0MmM0MmM0LCAoMVU8PDMxKSB8IDIzNCwgMHgyMmMyYzQsIDB4MjJjMmM0LCAweDIyYzJjNCwgMHgyMmMyYzQsIDB4MjJjMmM0LCAKLSAgMHgyMmMyYzQsIDB4MjJjMmMyYywgMHgyYzU5NTksIDB4MjI1OTU5LCAweDU5NTk1OSwgMHgyMjU5NTk1OSwgKDFVPDwzMSkgfCA1NDQ2LCAoMVU8PDMxKSB8IDU0NDYsIAotICAoMVU8PDMxKSB8IDU0NDYsICgxVTw8MzEpIHwgNTQ0OSwgMHg0YTRhNGEsICgxVTw8MzEpIHwgNTQ0OSwgMHgzYjNiM2IsICgxVTw8MzEpIHwgNTQ0OSwgMHgzYjNiM2IsICgxVTw8MzEpIHwgNTQ0OSwgCi0gIDB4NGE0YTRhLCAoMVU8PDMxKSB8IDU0NDksIDB4M2IzYjNiLCAoMVU8PDMxKSB8IDU0NDksIDB4M2IzYjNiLCAoMVU8PDMxKSB8IDU0NDksIDB4MmMyYzNiLCAoMVU8PDMxKSB8IDU0NDksIAotICAweDNiM2IzYiwgKDFVPDwzMSkgfCA1NDQ5LCAweDJjMmMyYywgKDFVPDwzMSkgfCA1NDQ5LCAweDJjMmMyYywgKDFVPDwzMSkgfCA1NDQ5LCAweDRhNGE0YSwgKDFVPDwzMSkgfCA1NDQ5LCAKLSAgMHgzYjNiM2IsICgxVTw8MzEpIHwgMjk2MiwgKDFVPDwzMSkgfCA0NDI2LCAweDQ0NCwgMHg1NTUsIDB4NDQ0MiwgMHgyZTAsIDB4NDQ0MiwgCi0gIDB4M2I3YSwgMHgzYjdiLCAweDQ3YTNiLCAweDQ3YjNiLCAweDIyYzJjMmMsIDB4MjJkMmQyZCwgKDFVPDwzMSkgfCAyMTYsIDB4MjJjMmMyYywgCi0gIDB4MjJkMmQyZCwgKDFVPDwzMSkgfCAyMTYsIDB4MmMyYzJjLCAweDJkMmQyZCwgKDFVPDwzMSkgfCA3OTAsIDB4MCwgMHgwLCAweDQwLCAKLSAgMHg1MCwgMHg0MCwgMHg1MCwgMHg0MCwgMHgyZTQwLCAweDJlNTAsIDB4MmU0MCwgMHgyZTUwLCAKLSAgMHgyMCwgMHg0LCAweDAsIDB4NDUsIDB4ODk4OSwgMHg4YThhLCAweDdhN2EsIDB4N2I3YiwgCi0gIDB4ODk4OSwgMHg3YTdhLCAweDIyYzJjMmMsIDB4MjRhNGE0YSwgMHgyNTk1OTU5LCAweDIyYzJjMmMsIDB4MjRhNGE0YSwgMHgyNTk1OTU5LCAKLSAgMHgyM2IzYjNiLCAweDIzYjNiM2IsICgxVTw8MzEpIHwgNDE0LCAoMVU8PDMxKSB8IDQ1OCwgKDFVPDwzMSkgfCAzMzQsICgxVTw8MzEpIHwgMzY2LCAweDJjNGEsIDB4MmM1OSwgCi0gIDB4MmMzYiwgMHg0YTU5LCAweDJjNGEsIDB4MmM1OSwgMHgyYzNiLCAweDRhNTksIDB4M2I0YSwgMHgzYjU5LCAKLSAgMHgzYjRhLCAweDNiNTksIDB4MmMzYiwgMHg0YTU5LCAweDNiNGEsIDB4NGE0YTRhNGEsIDB4NTk0YTRhNTksIDB4NTk0YTRhNTksIAotICAweDRhNGE0YTRhLCAweDU5NGE0YTU5LCAweDU5NGE0YTU5LCAweDRhM2IzYjRhLCAweDNiM2IzYjNiLCAweDRhM2IzYjRhLCAweDNiM2IzYjNiLCAweDRhM2IzYjRhLCAKLSAgMHg0YTNiM2I0YSwgMHgyYzJjMmMyYywgMHgyYzJjMmMsIDB4MjJjMmMsIDB4NGE0YTRhLCAweDI0YTRhLCAweDU5NTk1OSwgMHgyNTk1OSwgCi0gIDB4M2IzYjNiLCAweDIzYjNiLCAweDJjMmMyYywgMHg0YTRhNGEsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHgyYzJjMmMsIDB4NGE0YTRhLCAKLSAgMHg1OTU5NTksIDB4M2IzYjNiLCAweDQ0MmUwLCAweDQ0MmUwLCAweDQ0MmUwLCAweDQ0MmUwLCAweDQ0MmUwLCAweDQ0MmUwLCAKLSAgMHg0NDJlMCwgMHg0NDJlMCwgMHg0NDJlMCwgMHg0NDJlMCwgMHg0NDJlMCwgMHg0NDJlMCwgMHg0NDQwLCAweDQsIAotICAweDQ0LCAweDJlMmUsIDB4NDRmMCwgMHgwLCAweDRmMCwgMHg0MCwgMHg0NDQ0LCAoMVU8PDMxKSB8IDMxMTksIAotICAweDRmMCwgMHg0ZjAsIDB4NGY0LCAweDRmMCwgMHg0LCAweDQsIDB4NCwgMHg0NCwgCi0gIDB4NDRmLCAweGNmNGYsIDB4NGY0LCAweDRmNCwgMHg0ZjQsIDB4MmU0ZjAsIDB4MmU0ZjAsIDB4MmU0ZjAsIAotICAweDJlNGYwLCAweDJlNGYwLCAweDQ0ZjQsIDB4NGY0LCAweDRmMCwgMHg0ZjAsIDB4NDRmMCwgMHg0NGYwLCAKLSAgMHg0NGY0LCAweDQ0ZjAsIDB4NGY0LCAweDQ0ZjAsIDB4Y2Y0ZjAsIDB4NDRmMCwgMHgyZTRmMCwgMHg0NDAsIAotICAweDQ0ZjAsIDB4NDRmMCwgMHhjZjRmMCwgMHg0MCwgMHg0NGYwLCAweDJlNGYwLCAweDQ0NCwgMHgwLCAKLSAgMHg0ZjAsIDB4NGY0LCAweDRmNCwgMHgyZSwgMHg0NDQsIDAKKyAgMHg0LCAweDQsIDB4NDUsICgxVTw8MzEpIHwgMTc5NywgKDFVPDwzMSkgfCA0MDM0LCAoMVU8PDMxKSB8IDQyNjEsICgxVTw8MzEpIHwgMTc5NywgKDFVPDwzMSkgfCA0MDM0LCAKKyAgKDFVPDwzMSkgfCA0MjYxLCAweDQ0LCAweDU1LCAweDUsICgxVTw8MzEpIHwgNDI2MSwgMHgyZTAsIDB4MCwgMHgyZTAsIAorICAweDJlMCwgMHgyZTJlLCAweDAsIDB4NGE0YTRhLCAweDRhNGE0YSwgMHg0YTRhNGEsIDB4MjRhNGE0YSwgMHg0YTRhNGEsIAorICAweDRhNGE0YSwgMHg0YTRhNGE0YSwgMHgyZSwgMHgyN2E3YTdhLCAweDI3YTdhN2EsIDB4N2E3YTQsIDB4N2E3YTQsIDB4N2E3YTQsIAorICAweDdhN2E0LCAweDdhN2E0LCAweDdhN2E0LCAoMVU8PDMxKSB8IDU3OTYsICgxVTw8MzEpIHwgNjAwMywgKDFVPDwzMSkgfCA1OTk3LCAoMVU8PDMxKSB8IDU3NjUsIDB4N2E0LCAKKyAgMHg3YTUsICgxVTw8MzEpIHwgNTc5NiwgKDFVPDwzMSkgfCA1NzY1LCAweDdhNCwgMHg3YTUsIDB4MmUwLCAweDdhN2E3YSwgMHg3YTdhN2EsIAorICAweDdhN2E3YSwgMHg3YTdhN2EsIDB4N2E0LCAoMVU8PDMxKSB8IDgwMSwgMHg3YTdhLCAweDdhN2EsIDB4N2E3YSwgMHg3YTdhLCAKKyAgMHgwLCAweDJlMCwgMHg3YTdhNCwgMHg3YTdhNCwgMHg3YTdhNCwgMHg3YTdhNCwgMHg3YTdhNCwgMHg3YTdhNCwgCisgIDB4MmUwLCAweDI4OTg5ODksIDB4Mjg5ODk4OSwgMHg4OTg5NCwgMHg4OTg5NCwgMHg4OTg5NCwgMHg4OTg5NCwgMHg4OTg5NCwgCisgIDB4ODk4OTQsIDB4ODk0YSwgMHg4OTdhLCAweDdhNGEsIDB4ODk0LCAweDg5NSwgMHg4OTdhN2EsIDB4ODk0YSwgCisgIDB4N2E0YSwgMHg4OTQsIDB4ODk1LCAweDAsIDB4MmUyYzJjMCwgMHg4OTg5ODksIDB4ODk4OTg5LCAweDAsIAorICAweDg5ODk4OSwgMHg4OTg5ODksIDB4ODk0LCAweDRhNGEzYiwgMHgzYjNiMmMsIDB4M2IzYjJjLCAweDAsIDB4M2IzYjRhLCAKKyAgMHgyYzQsIDB4M2IzYjNiLCAweDNiM2IzYiwgMHgyYzJjNTksIDB4NGE0YTRhLCAweDU5NTk1OSwgMHgzYjNiM2IsIDB4NDRhNGEsIAorICAweDQ1OTU5LCAweDQzYjNiLCAweDRhNGE0YSwgMHgzYjNiM2IsIDB4NDRhNGEsIDB4NDNiM2IsIDB4NGE0YTRhLCAweDU5NTk1OSwgCisgIDB4M2IzYjNiLCAweDQ0YTRhLCAweDQ1OTU5LCAweDQzYjNiLCAweDg5ODk0LCAweDg5ODk0LCAweDg5ODk0LCAweDg5ODk0LCAKKyAgMHg4OTg5NCwgMHg4OTg5NCwgMHg4OTg5ODksIDB4N2E3YTdhLCAweDg5ODk4OSwgMHg3YTdhN2EsIDB4ODk4OTg5LCAweDdhN2E3YSwgCisgIDB4MmUyYywgMHg0NDJlMCwgMHg0NDAsICgxVTw8MzEpIHwgNTc4NywgMHg3YTdhN2E3YSwgMHgyODk4OTg5LCAweDI3YTdhN2EsIDB4MjdhN2E3YSwgCisgIDB4MjJjMmMzYiwgMHg0YTRhM2IsIDB4MmMyYzJjMmMsIDB4M2IzYiwgMHg1OTU5NCwgMHg1OTU5NCwgMHg1OTU5NCwgMHg0ODk4OSwgCisgIDB4NDdhN2EsIDB4NDg5ODk4OSwgMHg0N2E3YTdhLCAweDM0NCwgMHg0NDQsIDB4MjQ0LCAweDU1NSwgMHgyNDJjNDJjNCwgCisgIDB4MjQyYzQyYzQsIDB4MjQyYzQyYzQsIDB4MjQyYzQyYzQsIDB4MjQyYzQyYzQsIDB4MjQyYzQyYzQsICgxVTw8MzEpIHwgMjY2LCAweDIyYzJjNCwgMHgyMmMyYzQsIAorICAweDIyYzJjNCwgMHgyMmMyYzQsIDB4MjJjMmM0LCAweDIyYzJjNCwgMHgyMmMyYzJjLCAweDJjNTk1OSwgMHgyMjU5NTksIDB4NTk1OTU5LCAKKyAgMHgyMjU5NTk1OSwgKDFVPDwzMSkgfCA2MDA5LCAoMVU8PDMxKSB8IDYwMDksICgxVTw8MzEpIHwgNjAwOSwgKDFVPDwzMSkgfCA2MDEyLCAweDRhNGE0YSwgKDFVPDwzMSkgfCA2MDEyLCAweDNiM2IzYiwgCisgICgxVTw8MzEpIHwgNjAxMiwgMHgzYjNiM2IsICgxVTw8MzEpIHwgNjAxMiwgMHg0YTRhNGEsICgxVTw8MzEpIHwgNjAxMiwgMHgzYjNiM2IsICgxVTw8MzEpIHwgNjAxMiwgMHgzYjNiM2IsIAorICAoMVU8PDMxKSB8IDYwMTIsIDB4MmMyYzNiLCAoMVU8PDMxKSB8IDYwMTIsIDB4M2IzYjNiLCAoMVU8PDMxKSB8IDYwMTIsIDB4MmMyYzJjLCAoMVU8PDMxKSB8IDYwMTIsIDB4MmMyYzJjLCAKKyAgKDFVPDwzMSkgfCA2MDEyLCAweDRhNGE0YSwgKDFVPDwzMSkgfCA2MDEyLCAweDNiM2IzYiwgKDFVPDwzMSkgfCAzMTg5LCAoMVU8PDMxKSB8IDQ5NjUsIDB4NDQ0LCAweDU1NSwgCisgIDB4NDQ0MiwgMHgyZTAsIDB4NDQ0MiwgMHgzYjdhLCAweDNiN2IsIDB4NDdhM2IsIDB4NDdiM2IsIDB4MjJjMmMyYywgCisgIDB4MjJkMmQyZCwgKDFVPDwzMSkgfCAyNTgsIDB4MjJjMmMyYywgMHgyMmQyZDJkLCAoMVU8PDMxKSB8IDI1OCwgMHgyYzJjMmMsIDB4MmQyZDJkLCAoMVU8PDMxKSB8IDc3OSwgCisgIDB4MCwgMHgwLCAweDQwLCAweDUwLCAweDQwLCAweDUwLCAweDQwLCAweDJlNDAsIAorICAweDJlNTAsIDB4MmU0MCwgMHgyZTUwLCAweDIwLCAweDQsIDB4MCwgMHg0NSwgMHg4OTg5LCAKKyAgMHg4YThhLCAweDdhN2EsIDB4N2I3YiwgMHg4OTg5LCAweDdhN2EsICgxVTw8MzEpIHwgNDE2LCAoMVU8PDMxKSB8IDQ1MCwgKDFVPDwzMSkgfCAzNTYsIAorICAoMVU8PDMxKSB8IDM3OCwgMHgyYzRhLCAweDJjNTksIDB4MmMzYiwgMHg0YTU5LCAweDJjNGEsIDB4MmM1OSwgMHgyYzNiLCAKKyAgMHg0YTU5LCAweDNiNGEsIDB4M2I1OSwgMHgzYjRhLCAweDNiNTksIDB4MmMzYiwgMHg0YTU5LCAweDNiNGEsIAorICAweDRhNGE0YTRhLCAweDU5NGE0YTU5LCAweDU5NGE0YTU5LCAweDRhNGE0YTRhLCAweDU5NGE0YTU5LCAweDU5NGE0YTU5LCAweDRhM2IzYjRhLCAweDNiM2IzYjNiLCAKKyAgMHg0YTNiM2I0YSwgMHgzYjNiM2IzYiwgMHg0YTNiM2I0YSwgMHg0YTNiM2I0YSwgMHgyYzJjMmMyYywgMHgyYzJjMmMsIDB4NGE0YTRhLCAweDU5NTk1OSwgCisgIDB4M2IzYjNiLCAweDJjMmMyYywgMHg0YTRhNGEsIDB4NTk1OTU5LCAweDNiM2IzYiwgMHg0NDJlMCwgMHg0NDJlMCwgMHg0NDJlMCwgCisgIDB4NDQyZTAsIDB4NDQyZTAsIDB4NDQyZTAsIDB4NDQyZTAsIDB4NDQyZTAsIDB4NDQyZTAsIDB4NDQyZTAsIDB4NDQyZTAsIAorICAweDQ0MmUwLCAweDQ0NDAsIDB4NCwgMHg0NCwgMHgyZTJlLCAweDQ0ZjAsIDB4MCwgMHg0ZjAsIAorICAweDQwLCAweDQ0NDQsICgxVTw8MzEpIHwgMzM0NiwgMHg0ZjAsIDB4NGYwLCAweDRmNCwgMHg0ZjAsIDB4NCwgCisgIDB4NCwgMHg0LCAweDQ0LCAweDQ0ZiwgMHhjZjRmLCAweDRmNCwgMHg0ZjQsIDB4NGY0LCAKKyAgMHgyZTRmMCwgMHgyZTRmMCwgMHgyZTRmMCwgMHgyZTRmMCwgMHgyZTRmMCwgMHg0NGY0LCAweDRmNCwgMHg0ZjAsIAorICAweDRmMCwgMHg0NGYwLCAweDQ0ZjAsIDB4NDRmNCwgMHg0NGYwLCAweDRmNCwgMHg0NGYwLCAweGNmNGYwLCAKKyAgMHg0NGYwLCAweDJlNGYwLCAweDQ0MCwgMHg0NGYwLCAweDQ0ZjAsIDB4Y2Y0ZjAsIDB4NDAsIDB4NDRmMCwgCisgIDB4MmU0ZjAsIDB4NDQ0LCAweDAsIDB4NGYwLCAweDRmNCwgMHg0ZjQsIDB4MmUsIDB4NDQ0LCAwCiB9OwogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBJSVRfTG9uZ0VuY29kaW5nVGFibGVbXSA9IHsKICAgLyogMCAqLyAwLCA0LCA0LCAxNSwgMCwgMTUsIDAsIDE1LCAwLCAxNSwgMCwgMSwgMSwgMCwKICAgLyogMTQgKi8gMCwgNCwgNCwgMTUsIDMsIDE1LCAzLCAxLCAxLCAwLAotICAvKiAyNCAqLyAwLCAxNSwgMCwgMTAsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDEsIDEsIDAsCi0gIC8qIDM4ICovIDAsIDE1LCAyLCAxMCwgNCwgNCwgNCwgMSwgMSwgMCwKLSAgLyogNDggKi8gMjEsIDE1LCAyLCAxLCAxNSwgMiwgMTUsIDIsIDEsIDAsCi0gIC8qIDU4ICovIDE1LCAyLCAxNSwgMiwgMTUsIDIsIDE1LCAyLCAxLCAwLAotICAvKiA2OCAqLyAwLCAxNSwgMywgMzMsIDMsIDMxLCAzLCAxLCAwLAotICAvKiA3NyAqLyAwLCAxNSwgMywgMzQsIDEsIDAsIDQsIDMxLCAzLCAxLCAwLAotICAvKiA4OCAqLyAwLCAxNSwgMywgMTUsIDEyLCA0LCAzMSwgMywgMSwgMCwKLSAgLyogOTggKi8gMTUsIDEsIDE1LCAxMiwgMTUsIDEsIDQsIDQsIDEsIDAsCi0gIC8qIDEwOCAqLyAxNSwgMSwgMTUsIDEsIDE1LCAxLCA0LCA0LCA0LCAxLCAwLAotICAvKiAxMTkgKi8gNywgMjcsIDMsIDcsIDcsIDQsIDQsIDEsIDAsCi0gIC8qIDEyOCAqLyAyMSwgMSwgNSwgMSwgMCwKLSAgLyogMTMzICovIDIxLCAxNSwgMSwgMSwgMTUsIDEsIDE1LCAxLCAwLAotICAvKiAxNDIgKi8gMCwgMTksIDE1LCAxLCAwLAotICAvKiAxNDcgKi8gMTYsIDEsIDE2LCAxLCAxNiwgMSwgMCwKLSAgLyogMTU0ICovIDQsIDE2LCAxLCAxNiwgMSwgMCwKLSAgLyogMTYwICovIDAsIDE1LCA0LCAxNSwgMTIsIDE1LCAxNywgMSwgMCwKLSAgLyogMTY5ICovIDIsIDE4LCAxLCAwLAotICAvKiAxNzMgKi8gMTUsIDEsIDI1LCAxLCAwLAotICAvKiAxNzggKi8gMzYsIDEsIDM2LCAxLCAzNiwgMSwgMCwKLSAgLyogMTg1ICovIDIxLCAxMiwgNCwgMzYsIDEsIDEyLCA0LCAxMiwgNCwgMzYsIDEsIDAsCi0gIC8qIDE5NyAqLyAzNywgMSwgMzcsIDEsIDM3LCAxLCAwLAotICAvKiAyMDQgKi8gMjEsIDEzLCA0LCAzNywgMSwgMTMsIDQsIDEzLCA0LCAzNywgMSwgMCwKLSAgLyogMjE2ICovIDE2LCAyLCAxNiwgMiwgMTYsIDIsIDIsIDAsCi0gIC8qIDIyNCAqLyAxMSwgMywgMTEsIDMsIDExLCAzLCAxMSwgMywgMiwgMCwKLSAgLyogMjM0ICovIDEyLCAyLCAxMiwgMiwgNCwgMTIsIDIsIDQsIDIsIDAsCi0gIC8qIDI0NCAqLyAxMCwgNywgMTAsIDcsIDEwLCA3LCAxMCwgNCwgNCwgMiwgMCwKLSAgLyogMjU1ICovIDExLCA3LCAxMSwgNywgMTEsIDcsIDExLCA0LCA0LCAyLCAwLAotICAvKiAyNjYgKi8gOSwgOCwgOSwgOCwgOSwgOCwgOSwgNSwgNCwgMiwgMCwKLSAgLyogMjc3ICovIDEwLCA4LCAxMCwgOCwgMTAsIDgsIDEwLCA1LCA0LCAyLCAwLAotICAvKiAyODggKi8gMTAsIDQsIDEwLCA0LCAxNCwgMiwgMTAsIDQsIDEwLCA0LCAyLCAwLAotICAvKiAzMDAgKi8gMTAsIDQsIDEwLCA0LCAxMCwgNCwgMTAsIDQsIDIsIDAsCi0gIC8qIDMxMCAqLyAxMCwgNCwgMTAsIDQsIDE0LCAyLCA5LCA1LCAxMCwgNCwgMiwgMCwKLSAgLyogMzIyICovIDEwLCA0LCAxMCwgNCwgMTQsIDIsIDEwLCA1LCAxMCwgNCwgMiwgMCwKLSAgLyogMzM0ICovIDEwLCA3LCAxMCwgNywgMTAsIDcsIDEwLCA0LCAyLCAwLAotICAvKiAzNDQgKi8gMTEsIDQsIDExLCA0LCAxNCwgMiwgMTEsIDQsIDExLCA0LCAyLCAwLAotICAvKiAzNTYgKi8gMTEsIDQsIDExLCA0LCAxMSwgNCwgMTEsIDQsIDIsIDAsCi0gIC8qIDM2NiAqLyAxMSwgNywgMTEsIDcsIDExLCA3LCAxMSwgNCwgMiwgMCwKLSAgLyogMzc2ICovIDI3LCA0LCAyLCAwLAotICAvKiAzODAgKi8gOSwgNSwgOSwgNSwgMTQsIDIsIDEwLCA0LCA5LCA1LCAyLCAwLAotICAvKiAzOTIgKi8gOSwgNSwgOSwgNSwgMTQsIDIsIDksIDUsIDksIDUsIDIsIDAsCi0gIC8qIDQwNCAqLyA5LCA1LCA5LCA1LCA5LCA1LCA5LCA1LCAyLCAwLAotICAvKiA0MTQgKi8gOSwgOCwgOSwgOCwgOSwgOCwgOSwgNSwgMiwgMCwKLSAgLyogNDI0ICovIDEwLCA1LCAxMCwgNSwgMTQsIDIsIDEwLCA0LCAxMCwgNSwgMiwgMCwKLSAgLyogNDM2ICovIDEwLCA1LCAxMCwgNSwgMTQsIDIsIDEwLCA1LCAxMCwgNSwgMiwgMCwKLSAgLyogNDQ4ICovIDEwLCA1LCAxMCwgNSwgMTAsIDUsIDEwLCA1LCAyLCAwLAotICAvKiA0NTggKi8gMTAsIDgsIDEwLCA4LCAxMCwgOCwgMTAsIDUsIDIsIDAsCi0gIC8qIDQ2OCAqLyAxMSwgNSwgMTEsIDUsIDExLCA1LCAxMSwgNSwgMiwgMCwKLSAgLyogNDc4ICovIDEwLCA3LCAxMCwgNywgMTAsIDcsIDQsIDEwLCA3LCAyLCAwLAotICAvKiA0ODkgKi8gMTAsIDcsIDEwLCA3LCAxNCwgMiwgMTAsIDQsIDEwLCA3LCAyLCAwLAotICAvKiA1MDEgKi8gMTAsIDcsIDEwLCA3LCAxNCwgMiwgOSwgNSwgMTAsIDcsIDIsIDAsCi0gIC8qIDUxMyAqLyAxMCwgNywgMTAsIDcsIDE0LCAyLCAxMCwgNSwgMTAsIDcsIDIsIDAsCi0gIC8qIDUyNSAqLyAxMCwgNywgMTAsIDcsIDEwLCA3LCAxMCwgNywgMiwgMCwKLSAgLyogNTM1ICovIDExLCA3LCAxMSwgNywgMTEsIDcsIDQsIDExLCA3LCAyLCAwLAotICAvKiA1NDYgKi8gMTEsIDcsIDExLCA3LCAxNCwgMiwgMTEsIDQsIDExLCA3LCAyLCAwLAotICAvKiA1NTggKi8gMTEsIDcsIDExLCA3LCAxMSwgNywgMTEsIDcsIDIsIDAsCi0gIC8qIDU2OCAqLyAyNywgNywgMiwgMCwKLSAgLyogNTcyICovIDksIDgsIDksIDgsIDksIDgsIDQsIDksIDgsIDIsIDAsCi0gIC8qIDU4MyAqLyA5LCA4LCA5LCA4LCAxNCwgMiwgMTAsIDQsIDksIDgsIDIsIDAsCi0gIC8qIDU5NSAqLyA5LCA4LCA5LCA4LCAxNCwgMiwgOSwgNSwgOSwgOCwgMiwgMCwKLSAgLyogNjA3ICovIDksIDgsIDksIDgsIDksIDgsIDksIDgsIDIsIDAsCi0gIC8qIDYxNyAqLyAxMCwgOCwgMTAsIDgsIDEwLCA4LCA0LCAxMCwgOCwgMiwgMCwKLSAgLyogNjI4ICovIDEwLCA4LCAxMCwgOCwgMTQsIDIsIDEwLCA0LCAxMCwgOCwgMiwgMCwKLSAgLyogNjQwICovIDEwLCA4LCAxMCwgOCwgMTQsIDIsIDEwLCA1LCAxMCwgOCwgMiwgMCwKLSAgLyogNjUyICovIDEwLCA4LCAxMCwgOCwgMTAsIDgsIDEwLCA4LCAyLCAwLAotICAvKiA2NjIgKi8gMTEsIDIsIDExLCAyLCAxMSwgMiwgMTEsIDIsIDExLCAyLCAxMSwgMiwgMTEsIDIsIDAsCi0gIC8qIDY3NyAqLyAyMSwgMTIsIDIsIDQsIDEyLCAyLCAxMiwgMiwgMCwKLSAgLyogNjg2ICovIDIxLCAxMiwgMiwgNCwgMTIsIDIsIDAsCi0gIC8qIDY5MyAqLyAxOCwgNCwgMTQsIDIsIDE0LCAyLCAxNCwgMiwgMCwKLSAgLyogNzAyICovIDIxLCA0LCAxNCwgMiwgMTQsIDIsIDQsIDE0LCAyLCAwLAotICAvKiA3MTIgKi8gMjEsIDUsIDE0LCAyLCAxNCwgMiwgNCwgMTQsIDIsIDAsCi0gIC8qIDcyMiAqLyAyMSwgNCwgMTQsIDIsIDE0LCAyLCA0LCA0LCAxNCwgMiwgMCwKLSAgLyogNzMzICovIDIxLCA1LCAxNCwgMiwgMTQsIDIsIDQsIDQsIDE0LCAyLCAwLAotICAvKiA3NDQgKi8gMTQsIDIsIDE0LCAyLCA0LCA0LCA0LCAxNCwgMiwgMCwKLSAgLyogNzU0ICovIDIxLCA0LCA0LCAxNCwgMiwgMCwKLSAgLyogNzYwICovIDE0LCAyLCAxNCwgMiwgNCwgNCwgNSwgMTQsIDIsIDAsCi0gIC8qIDc3MCAqLyAyMSwgNSwgNSwgMTQsIDIsIDAsCi0gIC8qIDc3NiAqLyAwLCAxNywgMTcsIDE0LCAyLCAwLAotICAvKiA3ODIgKi8gMTQsIDIsIDE4LCAxNCwgMiwgMCwKLSAgLyogNzg4ICovIDE2LCAyLCAxNiwgMiwgMTYsIDIsIDE2LCAyLCAwLAotICAvKiA3OTcgKi8gMTMsIDMsIDE2LCAyLCAxNiwgMiwgMCwKLSAgLyogODA0ICovIDExLCA1LCAxNiwgMiwgMTYsIDIsIDAsCi0gIC8qIDgxMSAqLyAxNywgMTcsIDE3LCAyLCAwLAotICAvKiA4MTYgKi8gMTIsIDIsIDEyLCAyLCAxMiwgMiwgMTIsIDIsIDMsIDAsCi0gIC8qIDgyNiAqLyAwLCA1LCA0LCA0LCA0LCAzLCAzLCAzLCAzLCAwLAotICAvKiA4MzYgKi8gMTIsIDMsIDEyLCAzLCAxMiwgMywgMTIsIDMsIDMsIDAsCi0gIC8qIDg0NiAqLyAxMiwgNCwgMTIsIDQsIDEyLCA0LCAxMiwgNCwgMywgMCwKLSAgLyogODU2ICovIDIxLCAxMiwgMiwgNCwgMTEsIDMsIDExLCAzLCAwLAotICAvKiA4NjUgKi8gMjEsIDExLCAzLCA0LCAxMSwgMywgMTEsIDMsIDAsCi0gIC8qIDg3NCAqLyAyMSwgMTEsIDMsIDQsIDExLCAzLCAwLAotICAvKiA4ODEgKi8gMTYsIDIsIDEzLCAzLCAxMywgMywgMCwKLSAgLyogODg4ICovIDE1LCAzLCAzMywgMywgMzEsIDMsIDEsIDE1LCAzLCAwLAotICAvKiA4OTggKi8gMTUsIDMsIDM0LCAxLCAwLCA0LCAzMSwgMywgMSwgMTUsIDMsIDAsCi0gIC8qIDkxMCAqLyAxNSwgMywgMTUsIDEyLCA0LCAzMSwgMywgMSwgMTUsIDMsIDAsCi0gIC8qIDkyMSAqLyAxNSwgMywgMTUsIDMsIDEyLCAyLCAxMiwgMiwgMTIsIDIsIDEyLCAyLCAxNSwgMywgMCwKLSAgLyogOTM2ICovIDE1LCAzLCAxNSwgMywgMTIsIDIsIDEyLCAyLCAxMiwgMiwgMTUsIDMsIDAsCi0gIC8qIDk0OSAqLyAxNSwgMywgMTUsIDMsIDEyLCAyLCAxMiwgMiwgMTUsIDMsIDAsCi0gIC8qIDk2MCAqLyAxNSwgMywgMjUsIDMsIDAsCi0gIC8qIDk2NSAqLyAxNSwgMywgMjUsIDMsIDI1LCAzLCAwLAotICAvKiA5NzIgKi8gMTUsIDMsIDI2LCAzLCAwLAotICAvKiA5NzcgKi8gMTUsIDMsIDI2LCAzLCAyNiwgMywgMCwKLSAgLyogOTg0ICovIDE1LCAxLCAyNSwgMSwgNCwgMCwKLSAgLyogOTkwICovIDEyLCA0LCAxMiwgNCwgMzYsIDEsIDQsIDAsCi0gIC8qIDk5OCAqLyAxMywgNCwgMTMsIDQsIDM3LCAxLCA0LCAwLAotICAvKiAxMDA2ICovIDEwLCA3LCAxMCwgNywgMTAsIDcsIDEwLCA0LCA0LCAyLCA0LCAwLAotICAvKiAxMDE4ICovIDksIDgsIDksIDgsIDksIDgsIDksIDUsIDQsIDIsIDQsIDAsCi0gIC8qIDEwMzAgKi8gMTEsIDgsIDExLCA4LCAxMSwgOCwgMTEsIDUsIDQsIDIsIDQsIDAsCi0gIC8qIDEwNDIgKi8gMTAsIDQsIDEwLCA0LCAxNCwgMiwgMTAsIDQsIDIsIDQsIDAsCi0gIC8qIDEwNTMgKi8gOSwgNSwgOSwgNSwgMTQsIDIsIDEwLCA0LCAyLCA0LCAwLAotICAvKiAxMDY0ICovIDEwLCA1LCAxMCwgNSwgMTQsIDIsIDEwLCA0LCAyLCA0LCAwLAotICAvKiAxMDc1ICovIDEwLCA3LCAxMCwgNywgMTQsIDIsIDEwLCA0LCAyLCA0LCAwLAotICAvKiAxMDg2ICovIDksIDgsIDksIDgsIDE0LCAyLCAxMCwgNCwgMiwgNCwgMCwKLSAgLyogMTA5NyAqLyAxMCwgOCwgMTAsIDgsIDE0LCAyLCAxMCwgNCwgMiwgNCwgMCwKLSAgLyogMTEwOCAqLyAxMSwgNCwgMTEsIDQsIDE0LCAyLCAxMSwgNCwgMiwgNCwgMCwKLSAgLyogMTExOSAqLyAxMSwgNSwgMTEsIDUsIDE0LCAyLCAxMSwgNCwgMiwgNCwgMCwKLSAgLyogMTEzMCAqLyAxMSwgNywgMTEsIDcsIDE0LCAyLCAxMSwgNCwgMiwgNCwgMCwKLSAgLyogMTE0MSAqLyAxMSwgOCwgMTEsIDgsIDE0LCAyLCAxMSwgNCwgMiwgNCwgMCwKLSAgLyogMTE1MiAqLyAxMCwgNCwgMTAsIDQsIDE0LCAyLCA5LCA1LCAyLCA0LCAwLAotICAvKiAxMTYzICovIDksIDUsIDksIDUsIDE0LCAyLCA5LCA1LCAyLCA0LCAwLAotICAvKiAxMTc0ICovIDEwLCA3LCAxMCwgNywgMTQsIDIsIDksIDUsIDIsIDQsIDAsCi0gIC8qIDExODUgKi8gOSwgOCwgOSwgOCwgMTQsIDIsIDksIDUsIDIsIDQsIDAsCi0gIC8qIDExOTYgKi8gMTAsIDQsIDEwLCA0LCAxNCwgMiwgMTAsIDUsIDIsIDQsIDAsCi0gIC8qIDEyMDcgKi8gMTAsIDUsIDEwLCA1LCAxNCwgMiwgMTAsIDUsIDIsIDQsIDAsCi0gIC8qIDEyMTggKi8gMTAsIDcsIDEwLCA3LCAxNCwgMiwgMTAsIDUsIDIsIDQsIDAsCi0gIC8qIDEyMjkgKi8gMTAsIDgsIDEwLCA4LCAxNCwgMiwgMTAsIDUsIDIsIDQsIDAsCi0gIC8qIDEyNDAgKi8gMTEsIDQsIDExLCA0LCAxNCwgMiwgMTEsIDUsIDIsIDQsIDAsCi0gIC8qIDEyNTEgKi8gMTEsIDUsIDExLCA1LCAxNCwgMiwgMTEsIDUsIDIsIDQsIDAsCi0gIC8qIDEyNjIgKi8gMTEsIDcsIDExLCA3LCAxNCwgMiwgMTEsIDUsIDIsIDQsIDAsCi0gIC8qIDEyNzMgKi8gMTEsIDgsIDExLCA4LCAxNCwgMiwgMTEsIDUsIDIsIDQsIDAsCi0gIC8qIDEyODQgKi8gMTAsIDcsIDEwLCA3LCAxMCwgNywgNCwgMTAsIDcsIDIsIDQsIDAsCi0gIC8qIDEyOTYgKi8gMTAsIDcsIDEwLCA3LCAxMCwgNywgMTAsIDcsIDIsIDQsIDAsCi0gIC8qIDEzMDcgKi8gMTAsIDcsIDEwLCA3LCA5LCA4LCAxMCwgNywgMiwgNCwgMCwKLSAgLyogMTMxOCAqLyA5LCA4LCA5LCA4LCA5LCA4LCA0LCA5LCA4LCAyLCA0LCAwLAotICAvKiAxMzMwICovIDksIDgsIDksIDgsIDEwLCA3LCA5LCA4LCAyLCA0LCAwLAotICAvKiAxMzQxICovIDksIDgsIDksIDgsIDksIDgsIDksIDgsIDIsIDQsIDAsCi0gIC8qIDEzNTIgKi8gMTEsIDgsIDExLCA4LCAxMSwgOCwgNCwgMTEsIDgsIDIsIDQsIDAsCi0gIC8qIDEzNjQgKi8gMTEsIDgsIDExLCA4LCAxMSwgOCwgMTEsIDgsIDIsIDQsIDAsCi0gIC8qIDEzNzUgKi8gMTIsIDIsIDEyLCAyLCAxMiwgMiwgMTIsIDIsIDQsIDAsCi0gIC8qIDEzODUgKi8gMjEsIDEyLCAyLCA0LCAxMiwgMiwgMTIsIDIsIDEyLCAyLCA0LCAwLAotICAvKiAxMzk3ICovIDIxLCAxMiwgMiwgNCwgMTIsIDIsIDEyLCAyLCA0LCAwLAotICAvKiAxNDA3ICovIDEyLCAyLCA5LCA1LCA5LCA1LCAxMiwgMiwgNCwgMCwKLSAgLyogMTQxNyAqLyAxMywgMiwgMTMsIDIsIDEzLCAyLCAxMywgMiwgNCwgMCwKLSAgLyogMTQyNyAqLyAxNSwgMSwgMTUsIDEsIDE0LCAyLCAxNCwgMiwgNCwgMCwKLSAgLyogMTQzNyAqLyAxNSwgNCwgMTUsIDQsIDE0LCAyLCAxNCwgMiwgNCwgMCwKLSAgLyogMTQ0NyAqLyAyMSwgNCwgMTQsIDIsIDE0LCAyLCA0LCAwLAotICAvKiAxNDU1ICovIDIxLCA1LCAxNCwgMiwgMTQsIDIsIDQsIDAsCi0gIC8qIDE0NjMgKi8gMTMsIDMsIDE2LCAyLCAxNiwgMiwgNCwgMCwKLSAgLyogMTQ3MSAqLyAxMiwgNywgMTIsIDcsIDEyLCA3LCAxMiwgNCwgNCwgMywgNCwgMCwKLSAgLyogMTQ4MyAqLyAxMiwgNCwgMTIsIDQsIDE0LCAyLCAxMiwgNCwgMywgNCwgMCwKLSAgLyogMTQ5NCAqLyAxMiwgNywgMTIsIDcsIDE0LCAyLCAxMiwgNCwgMywgNCwgMCwKLSAgLyogMTUwNSAqLyAxMiwgNywgMTIsIDcsIDEyLCA3LCA0LCAxMiwgNywgMywgNCwgMCwKLSAgLyogMTUxNyAqLyAxMiwgNywgMTIsIDcsIDEyLCA3LCAxMiwgNywgMywgNCwgMCwKLSAgLyogMTUyOCAqLyAxMSwgMywgMTEsIDMsIDExLCAzLCAxMSwgMywgNCwgMCwKLSAgLyogMTUzOCAqLyAyMSwgMTEsIDMsIDQsIDExLCAzLCAxMSwgMywgMTEsIDMsIDQsIDAsCi0gIC8qIDE1NTAgKi8gMjEsIDExLCAzLCA0LCAxMSwgMywgMTEsIDMsIDQsIDAsCi0gIC8qIDE1NjAgKi8gMTMsIDMsIDEzLCAzLCAxMywgMywgMTMsIDMsIDQsIDAsCi0gIC8qIDE1NzAgKi8gMjEsIDMsIDQsIDAsCi0gIC8qIDE1NzQgKi8gMTUsIDMsIDI2LCAzLCA0LCAwLAotICAvKiAxNTgwICovIDE1LCAyLCA0LCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMTU5MyAqLyAxNSwgMiwgNCwgNCwgMTUsIDEwLCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCi0gIC8qIDE2MDcgKi8gMTUsIDIsIDQsIDcsIDE1LCAxMCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAxNjIxICovIDE1LCAyLCA0LCA0LCA3LCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMTYzNiAqLyAxNSwgMiwgNCwgMTUsIDEwLCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMTY1MSAqLyAxNSwgMiwgNCwgNCwgMTUsIDEwLCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMTY2NyAqLyAxNSwgMiwgNCwgNywgMTUsIDEwLCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMTY4MyAqLyAxNSwgMiwgNCwgNCwgNywgMTUsIDEwLCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMTcwMCAqLyAxNSwgMiwgNCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAxNzE3ICovIDE1LCAyLCA0LCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCi0gIC8qIDE3MzUgKi8gMTUsIDIsIDQsIDcsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMTc1MyAqLyAxNSwgMiwgNCwgNCwgNywgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAxNzcyICovIDE1LCAyLCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMTc5MSAqLyAxNSwgMiwgNCwgNCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCi0gIC8qIDE4MTEgKi8gMTUsIDIsIDQsIDcsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAxODMxICovIDE1LCAyLCA0LCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMTg1MiAqLyAxNSwgMiwgNCwgMTUsIDEwLCA3LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMTg2OCAqLyAxNSwgMiwgNCwgNCwgMTUsIDEwLCA3LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMTg4NSAqLyAxNSwgMiwgNCwgMTUsIDEwLCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMTkwMCAqLyAxNSwgMiwgNCwgNCwgMTUsIDEwLCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMTkxNiAqLyAxNSwgMiwgNCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAxOTMzICovIDE1LCAyLCA0LCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCi0gIC8qIDE5NTEgKi8gMTUsIDIsIDQsIDcsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMTk2OSAqLyAxNSwgMiwgNCwgNCwgNywgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAxOTg4ICovIDE1LCAyLCA0LCAxNSwgMTAsIDcsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCi0gIC8qIDIwMDYgKi8gMTUsIDIsIDQsIDQsIDE1LCAxMCwgNywgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMjAyNSAqLyAxNSwgMiwgNCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyMDQyICovIDE1LCAyLCA0LCA0LCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCi0gIC8qIDIwNjAgKi8gMTUsIDIsIDQsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyMDc5ICovIDE1LCAyLCA0LCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMjA5OSAqLyAxNSwgMiwgNCwgNywgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCi0gIC8qIDIxMTkgKi8gMTUsIDIsIDQsIDQsIDcsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyMTQwICovIDE1LCAyLCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCi0gIC8qIDIxNjMgKi8gMTUsIDIsIDQsIDQsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMjE4NyAqLyAxNSwgMiwgNCwgNywgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyMjExICovIDE1LCAyLCA0LCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCi0gIC8qIDIyMzYgKi8gMTUsIDIsIDQsIDE1LCAxMCwgNywgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyMjU2ICovIDE1LCAyLCA0LCA0LCAxNSwgMTAsIDcsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMjI3NyAqLyAxNSwgMiwgNCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCi0gIC8qIDIyOTYgKi8gMTUsIDIsIDQsIDQsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyMzE2ICovIDE1LCAyLCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyMzM3ICovIDE1LCAyLCA0LCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyMzU5ICovIDE1LCAyLCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyMzgxICovIDE1LCAyLCA0LCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyNDA0ICovIDE1LCAyLCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMjQyOSAqLyAxNSwgMiwgNCwgNCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCi0gIC8qIDI0NTUgKi8gMTUsIDIsIDQsIDcsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyNDgxICovIDE1LCAyLCA0LCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMjUwOCAqLyAxNSwgMiwgNCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyNTM3ICovIDE1LCAyLCA0LCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCi0gIC8qIDI1NjcgKi8gMTUsIDIsIDQsIDcsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMjU5NyAqLyAxNSwgMiwgNCwgNCwgNywgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyNjI4ICovIDE1LCAyLCA0LCAxNSwgMTAsIDcsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyNjUwICovIDE1LCAyLCA0LCA0LCAxNSwgMTAsIDcsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyNjczICovIDE1LCAyLCA0LCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyNjk0ICovIDE1LCAyLCA0LCA0LCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyNzE2ICovIDE1LCAyLCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyNzQzICovIDE1LCAyLCA0LCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyNzcxICovIDE1LCAyLCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyNzk5ICovIDE1LCAyLCA0LCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyODI4ICovIDE1LCAyLCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMjg1OSAqLyAxNSwgMiwgNCwgNCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCi0gIC8qIDI4OTEgKi8gMTUsIDIsIDQsIDcsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAotICAvKiAyOTIzICovIDE1LCAyLCA0LCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMjk1NiAqLyAyMSwgNCwgMSwgNCwgNCwgMCwKLSAgLyogMjk2MiAqLyAyMSwgMiwgNCwgMiwgNCwgNCwgMCwKLSAgLyogMjk2OSAqLyAxMCwgNywgMTAsIDcsIDEwLCA3LCAxMCwgNywgMiwgNCwgNCwgMCwKLSAgLyogMjk4MSAqLyA5LCA4LCA5LCA4LCA5LCA4LCA5LCA4LCAyLCA0LCA0LCAwLAotICAvKiAyOTkzICovIDIzLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDEyLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgNCwgNCwgMCwKLSAgLyogMzAxNSAqLyAyMiwgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDEyLCAxNSwgMywgMTUsIDMsIDE1LCAzLCA0LCA0LCAwLAotICAvKiAzMDMzICovIDIxLCAxNSwgMywgMTUsIDMsIDE1LCAxMiwgMTUsIDMsIDE1LCAzLCA0LCA0LCAwLAotICAvKiAzMDQ3ICovIDEwLCA0LCAxMCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgMCwKLSAgLyogMzA2MSAqLyAxMCwgNywgMTAsIDcsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDAsCi0gIC8qIDMwNzUgKi8gMCwgNSwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgMCwKLSAgLyogMzA4NSAqLyAwLCAxNSwgMCwgMTAsIDQsIDQsIDQsIDQsIDQsIDQsIDAsCi0gIC8qIDMwOTYgKi8gMCwgMTUsIDAsIDEwLCA0LCA0LCA0LCA0LCA0LCAwLAotICAvKiAzMTA2ICovIDE1LCAxLCAxNSwgMSwgMTUsIDEsIDEwLCA0LCA0LCA0LCA0LCA0LCAwLAotICAvKiAzMTE5ICovIDIxLCA0LCA0LCA0LCA0LCA0LCAwLAotICAvKiAzMTI2ICovIDE1LCAxLCAxNSwgMSwgMTUsIDEsIDEwLCA0LCA0LCA0LCA0LCAwLAotICAvKiAzMTM4ICovIDIzLCAzLCAzLCAzLCAzLCA1LCA0LCA0LCA0LCAwLAotICAvKiAzMTQ4ICovIDIxLCAzLCAzLCA1LCA0LCA0LCA0LCAwLAotICAvKiAzMTU2ICovIDIzLCA0LCA0LCA0LCA0LCA1LCA0LCA0LCA0LCAwLAotICAvKiAzMTY2ICovIDIxLCA0LCA0LCA1LCA0LCA0LCA0LCAwLAotICAvKiAzMTc0ICovIDIzLCA0LCA0LCA0LCA0LCA1LCA1LCA0LCA0LCA0LCAwLAotICAvKiAzMTg1ICovIDIxLCA1LCA1LCA1LCA0LCA0LCA0LCAwLAotICAvKiAzMTkzICovIDIzLCA3LCA3LCA3LCA3LCA1LCA1LCA0LCA0LCA0LCAwLAotICAvKiAzMjA0ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA0LCA0LCA0LCAwLAotICAvKiAzMjE0ICovIDE1LCAxLCAxNSwgMSwgMTUsIDEsIDE1LCA5LCAxMSwgNCwgNCwgNCwgMCwKLSAgLyogMzIyNyAqLyAwLCAxNSwgMiwgNCwgMTUsIDksIDExLCA0LCA0LCA0LCAwLAotICAvKiAzMjM4ICovIDE1LCAxLCAxNSwgMSwgMTUsIDEsIDE1LCA5LCAxNSwgOSwgMTEsIDQsIDQsIDQsIDAsCi0gIC8qIDMyNTMgKi8gMCwgMTUsIDIsIDQsIDE1LCA5LCAxNSwgOSwgMTEsIDQsIDQsIDQsIDAsCi0gIC8qIDMyNjYgKi8gMTUsIDEsIDE1LCAxLCAxNSwgMSwgMTUsIDksIDE1LCA5LCAxNSwgOSwgMTEsIDQsIDQsIDQsIDAsCi0gIC8qIDMyODMgKi8gMCwgMTUsIDIsIDQsIDE1LCA5LCAxNSwgOSwgMTUsIDksIDExLCA0LCA0LCA0LCAwLAotICAvKiAzMjk4ICovIDE1LCAxLCAxNSwgMSwgMTUsIDEsIDE1LCA5LCAxNSwgOSwgMTUsIDksIDE1LCA5LCAxMSwgNCwgNCwgNCwgMCwKLSAgLyogMzMxNyAqLyAwLCAxNSwgMiwgNCwgMTUsIDksIDE1LCA5LCAxNSwgOSwgMTUsIDksIDExLCA0LCA0LCA0LCAwLAotICAvKiAzMzM0ICovIDE2LCA0LCAxNiwgNCwgMTYsIDQsIDQsIDQsIDAsCi0gIC8qIDMzNDMgKi8gMjMsIDMsIDMsIDMsIDMsIDUsIDQsIDQsIDAsCi0gIC8qIDMzNTIgKi8gMjEsIDMsIDMsIDUsIDQsIDQsIDAsCi0gIC8qIDMzNTkgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDQsIDQsIDAsCi0gIC8qIDMzNjggKi8gMjEsIDQsIDQsIDUsIDQsIDQsIDAsCi0gIC8qIDMzNzUgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDUsIDQsIDQsIDAsCi0gIC8qIDMzODUgKi8gMjEsIDUsIDUsIDUsIDQsIDQsIDAsCi0gIC8qIDMzOTIgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDUsIDQsIDQsIDAsCi0gIC8qIDM0MDIgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDQsIDQsIDAsCi0gIC8qIDM0MTEgKi8gMCwgMTQsIDIsIDIsIDEwLCA0LCAxMCwgNCwgNCwgMCwKLSAgLyogMzQyMSAqLyAyMSwgMTAsIDQsIDQsIDEwLCA0LCAxMCwgNCwgNCwgMCwKLSAgLyogMzQzMSAqLyAyMSwgMTAsIDQsIDQsIDEwLCA0LCAxMCwgNCwgMTAsIDQsIDQsIDAsCi0gIC8qIDM0NDMgKi8gMTAsIDQsIDEwLCA0LCAxMCwgNCwgMTAsIDQsIDQsIDAsCi0gIC8qIDM0NTMgKi8gMCwgMTQsIDIsIDIsIDksIDUsIDEwLCA0LCA0LCAwLAotICAvKiAzNDYzICovIDAsIDE0LCAyLCAyLCAxMCwgNSwgMTAsIDQsIDQsIDAsCi0gIC8qIDM0NzMgKi8gMCwgMTQsIDIsIDIsIDExLCA0LCAxMSwgNCwgNCwgMCwKLSAgLyogMzQ4MyAqLyAxMSwgNCwgMTEsIDQsIDExLCA0LCAxMSwgNCwgNCwgMCwKLSAgLyogMzQ5MyAqLyAwLCAxNCwgMiwgMiwgMTEsIDUsIDExLCA0LCA0LCAwLAotICAvKiAzNTAzICovIDAsIDE1LCA0LCAxNSwgMTEsIDE1LCAxMSwgNCwgNCwgMCwKLSAgLyogMzUxMyAqLyAwLCAxNSwgNCwgMTUsIDExLCAxNSwgMTEsIDE1LCAxMSwgNCwgNCwgMCwKLSAgLyogMzUyNSAqLyAwLCAxNSwgNCwgMTUsIDExLCAxNSwgMTEsIDE1LCAxMSwgMTUsIDExLCA0LCA0LCAwLAotICAvKiAzNTM5ICovIDM2LCAxLCAzNiwgMSwgMTIsIDQsIDQsIDAsCi0gIC8qIDM1NDcgKi8gMCwgMTQsIDIsIDMsIDEyLCA0LCAxMiwgNCwgNCwgMCwKLSAgLyogMzU1NyAqLyAxMiwgNCwgMTIsIDQsIDEyLCA0LCAxMiwgNCwgNCwgMCwKLSAgLyogMzU2NyAqLyAxMywgNCwgMTMsIDQsIDEyLCA0LCAxMiwgNCwgNCwgMCwKLSAgLyogMzU3NyAqLyAzNywgMSwgMzcsIDEsIDEzLCA0LCA0LCAwLAotICAvKiAzNTg1ICovIDEzLCA0LCAxMywgNCwgMTMsIDQsIDEzLCA0LCA0LCAwLAotICAvKiAzNTk1ICovIDE2LCA0LCAxNiwgNCwgMTMsIDQsIDEzLCA0LCA0LCAwLAotICAvKiAzNjA1ICovIDE2LCA0LCAxNiwgNCwgMTMsIDQsIDQsIDAsCi0gIC8qIDM2MTMgKi8gNDAsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDE1LCA0LCA0LCAwLAotICAvKiAzNjM0ICovIDIzLCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCAxNSwgNCwgNCwgMCwKLSAgLyogMzY0NyAqLyA0MCwgNywgNywgNywgNywgNywgNywgNywgNywgMTUsIDQsIDQsIDAsCi0gIC8qIDM2NjAgKi8gMTMsIDQsIDEzLCA0LCAxNiwgNCwgNCwgMCwKLSAgLyogMzY2OCAqLyAxNiwgNCwgMTYsIDQsIDE2LCA0LCA0LCAwLAotICAvKiAzNjc2ICovIDE3LCAxNywgNCwgNCwgMCwKLSAgLyogMzY4MSAqLyAxNSwgMCwgMTgsIDQsIDQsIDAsCi0gIC8qIDM2ODcgKi8gMjEsIDQsIDQsIDAsCi0gIC8qIDM2OTEgKi8gMjMsIDMsIDMsIDMsIDMsIDUsIDQsIDAsCi0gIC8qIDM2OTkgKi8gMjEsIDMsIDMsIDUsIDQsIDAsCi0gIC8qIDM3MDUgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDQsIDAsCi0gIC8qIDM3MTMgKi8gMjEsIDQsIDQsIDUsIDQsIDAsCi0gIC8qIDM3MTkgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDUsIDQsIDAsCi0gIC8qIDM3MjggKi8gMjEsIDUsIDUsIDUsIDQsIDAsCi0gIC8qIDM3MzQgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDUsIDQsIDAsCi0gIC8qIDM3NDMgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDQsIDAsCi0gIC8qIDM3NTEgKi8gMCwgMTQsIDIsIDIsIDEwLCA0LCA5LCA1LCA0LCAwLAotICAvKiAzNzYxICovIDAsIDE0LCAyLCAyLCA5LCA1LCA5LCA1LCA0LCAwLAotICAvKiAzNzcxICovIDksIDUsIDksIDUsIDksIDUsIDksIDUsIDQsIDAsCi0gIC8qIDM3ODEgKi8gMCwgMTQsIDIsIDIsIDEwLCA0LCAxMCwgNSwgNCwgMCwKLSAgLyogMzc5MSAqLyAwLCAxNCwgMiwgMiwgMTAsIDUsIDEwLCA1LCA0LCAwLAotICAvKiAzODAxICovIDEwLCA1LCAxMCwgNSwgMTAsIDUsIDEwLCA1LCA0LCAwLAotICAvKiAzODExICovIDAsIDE0LCAyLCAyLCAxMSwgNCwgMTEsIDUsIDQsIDAsCi0gIC8qIDM4MjEgKi8gMCwgMTQsIDIsIDIsIDExLCA1LCAxMSwgNSwgNCwgMCwKLSAgLyogMzgzMSAqLyAxMSwgNSwgMTEsIDUsIDExLCA1LCAxMSwgNSwgNCwgMCwKLSAgLyogMzg0MSAqLyAyMSwgNSwgNCwgMCwKLSAgLyogMzg0NSAqLyAwLCAxNSwgNCwgOSwgNiwgOSwgNiwgOSwgNiwgOSwgNiwgNCwgMCwKLSAgLyogMzg1OCAqLyAwLCAxNSwgNCwgNywgNywgNywgNywgNywgNywgNywgNywgNCwgMCwKLSAgLyogMzg3MSAqLyAyMSwgMTAsIDQsIDQsIDEwLCA3LCA0LCAwLAotICAvKiAzODc5ICovIDAsIDE0LCAyLCAyLCAxMCwgNCwgMTAsIDcsIDQsIDAsCi0gIC8qIDM4ODkgKi8gMCwgMTQsIDIsIDIsIDksIDUsIDEwLCA3LCA0LCAwLAotICAvKiAzODk5ICovIDAsIDE0LCAyLCAyLCAxMCwgNSwgMTAsIDcsIDQsIDAsCi0gIC8qIDM5MDkgKi8gMCwgMTQsIDIsIDIsIDExLCA0LCAxMSwgNywgNCwgMCwKLSAgLyogMzkxOSAqLyAwLCAxNCwgMiwgMiwgMTEsIDUsIDExLCA3LCA0LCAwLAotICAvKiAzOTI5ICovIDAsIDE0LCAyLCAzLCAxMiwgNCwgMTIsIDcsIDQsIDAsCi0gIC8qIDM5MzkgKi8gMTIsIDcsIDEyLCA3LCAxMiwgNywgMTIsIDcsIDQsIDAsCi0gIC8qIDM5NDkgKi8gMjEsIDksIDUsIDQsIDksIDgsIDQsIDAsCi0gIC8qIDM5NTcgKi8gMCwgMTQsIDIsIDIsIDEwLCA0LCA5LCA4LCA0LCAwLAotICAvKiAzOTY3ICovIDAsIDE0LCAyLCAyLCA5LCA1LCA5LCA4LCA0LCAwLAotICAvKiAzOTc3ICovIDAsIDE0LCAyLCAyLCAxMCwgNCwgMTAsIDgsIDQsIDAsCi0gIC8qIDM5ODcgKi8gMCwgMTQsIDIsIDIsIDEwLCA1LCAxMCwgOCwgNCwgMCwKLSAgLyogMzk5NyAqLyAwLCAxNCwgMiwgMiwgMTEsIDQsIDExLCA4LCA0LCAwLAotICAvKiA0MDA3ICovIDAsIDE0LCAyLCAyLCAxMSwgNSwgMTEsIDgsIDQsIDAsCi0gIC8qIDQwMTcgKi8gMTEsIDgsIDExLCA4LCAxMSwgOCwgMTEsIDgsIDQsIDAsCi0gIC8qIDQwMjcgKi8gMjEsIDEwLCA0LCA0LCAxMCwgNCwgMCwKLSAgLyogNDAzNCAqLyAyMSwgMTEsIDMsIDQsIDEwLCA0LCAxMCwgNCwgMCwKLSAgLyogNDA0MyAqLyAyMSwgMTAsIDQsIDQsIDEwLCA0LCAxMCwgNCwgMCwKLSAgLyogNDA1MiAqLyAwLCAxNSwgNCwgMTUsIDExLCAxNSwgMTEsIDE1LCAxMSwgNCwgMCwKLSAgLyogNDA2MyAqLyAwLCAxNSwgNCwgMTUsIDExLCAxNSwgMTEsIDE1LCAxMSwgMTUsIDExLCA0LCAwLAotICAvKiA0MDc2ICovIDEyLCA0LCAzNiwgMSwgMTIsIDQsIDAsCi0gIC8qIDQwODMgKi8gMCwgMzYsIDEsIDE0LCAyLCAxMiwgNCwgMCwKLSAgLyogNDA5MSAqLyAwLCAxNCwgMiwgMzYsIDEsIDQsIDQsIDEyLCA0LCAwLAotICAvKiA0MTAxICovIDM2LCAxLCAzNiwgMSwgMTIsIDQsIDEyLCA0LCAwLAotICAvKiA0MTEwICovIDEyLCA0LCAzNiwgMSwgMTIsIDQsIDEyLCA0LCAwLAotICAvKiA0MTE5ICovIDEzLCA0LCAzNiwgMSwgMTIsIDQsIDEyLCA0LCAwLAotICAvKiA0MTI4ICovIDAsIDM2LCAxLCA0LCA0LCAxMiwgNCwgMTIsIDQsIDAsCi0gIC8qIDQxMzggKi8gMCwgMzYsIDEsIDQsIDQsIDEzLCA0LCAxMiwgNCwgMCwKLSAgLyogNDE0OCAqLyAyMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDMsIDE1LCAxMiwgNCwgMCwKLSAgLyogNDE2MSAqLyAyMiwgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDEyLCA0LCAwLAotICAvKiA0MTcyICovIDIxLCAxNSwgMywgMTUsIDMsIDE1LCAxMiwgNCwgMCwKLSAgLyogNDE4MSAqLyAxMywgNCwgMzcsIDEsIDEzLCA0LCAwLAotICAvKiA0MTg4ICovIDAsIDM3LCAxLCAxNCwgMiwgMTMsIDQsIDAsCi0gIC8qIDQxOTYgKi8gMCwgMTQsIDIsIDM2LCAxLCA0LCA0LCAxMywgNCwgMCwKLSAgLyogNDIwNiAqLyAwLCAxNCwgMiwgMzcsIDEsIDQsIDQsIDEzLCA0LCAwLAotICAvKiA0MjE2ICovIDM3LCAxLCAzNywgMSwgMTMsIDQsIDEzLCA0LCAwLAotICAvKiA0MjI1ICovIDEzLCA0LCAzNywgMSwgMTMsIDQsIDEzLCA0LCAwLAotICAvKiA0MjM0ICovIDE2LCA0LCAzNywgMSwgMTMsIDQsIDEzLCA0LCAwLAotICAvKiA0MjQzICovIDAsIDM3LCAxLCA0LCA0LCAxMywgNCwgMTMsIDQsIDAsCi0gIC8qIDQyNTMgKi8gMTYsIDQsIDE2LCA0LCAxMywgNCwgMTMsIDQsIDAsCi0gIC8qIDQyNjIgKi8gMCwgNCwgNCwgMTYsIDQsIDEzLCA0LCAwLAotICAvKiA0MjcwICovIDAsIDM3LCAxLCA0LCA0LCAxNiwgNCwgMTMsIDQsIDAsCi0gIC8qIDQyODAgKi8gMTYsIDQsIDE2LCA0LCAxMywgNCwgMCwKLSAgLyogNDI4NyAqLyAwLCAxNCwgMjAsIDUsIDE1LCA0LCAwLAotICAvKiA0Mjk0ICovIDQwLCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCAxNSwgNCwgMCwKLSAgLyogNDMxNCAqLyAyMywgOSwgNiwgOSwgNiwgOSwgNiwgOSwgNiwgMTUsIDQsIDAsCi0gIC8qIDQzMjYgKi8gNDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDE1LCA0LCAwLAotICAvKiA0MzM4ICovIDUsIDE5LCAxNSwgNCwgMCwKLSAgLyogNDM0MyAqLyAwLCAxNCwgMiwgMzcsIDEsIDQsIDQsIDE2LCA0LCAwLAotICAvKiA0MzUzICovIDAsIDE0LCAyLCA0LCA0LCAxNiwgNCwgMCwKLSAgLyogNDM2MSAqLyAxMywgNCwgMTYsIDQsIDAsCi0gIC8qIDQzNjYgKi8gMTYsIDQsIDE2LCA0LCAxNiwgNCwgMCwKLSAgLyogNDM3MyAqLyA0LCAxNywgNCwgMCwKLSAgLyogNDM3NyAqLyAwLCAxNSwgNCwgMTUsIDEyLCAxNSwgMTcsIDQsIDAsCi0gIC8qIDQzODYgKi8gMTcsIDE3LCA0LCAwLAotICAvKiA0MzkwICovIDE2LCAyLCAxNiwgMiwgMTYsIDIsIDE2LCAyLCA1LCAwLAotICAvKiA0NDAwICovIDUsIDE2LCAyLCAxNiwgMiwgNSwgMCwKLSAgLyogNDQwNyAqLyAyMSwgNSwgMSwgNCwgNSwgMCwKLSAgLyogNDQxMyAqLyAxNiwgNCwgMTYsIDQsIDEzLCA0LCA1LCAwLAotICAvKiA0NDIxICovIDIxLCAxLCA1LCA1LCAwLAotICAvKiA0NDI2ICovIDIxLCAyLCA1LCAyLCA1LCA1LCAwLAotICAvKiA0NDMzICovIDIxLCAxMCwgNCwgNCwgOSwgNSwgOSwgNSwgMCwKLSAgLyogNDQ0MiAqLyAyMSwgOSwgNSwgNCwgOSwgNSwgOSwgNSwgMCwKLSAgLyogNDQ1MSAqLyA0MSwgNDEsIDUsIDAsCi0gIC8qIDQ0NTUgKi8gMCwgMTUsIDQsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDAsCi0gIC8qIDQ0NjcgKi8gMjMsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDAsCi0gIC8qIDQ1MTcgKi8gNDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDAsCi0gIC8qIDQ1NjcgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDQsIDcsIDAsCi0gIC8qIDQ1NzYgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDUsIDQsIDcsIDAsCi0gIC8qIDQ1ODYgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDUsIDQsIDcsIDAsCi0gIC8qIDQ1OTYgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDQsIDcsIDAsCi0gIC8qIDQ2MDUgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDcsIDAsCi0gIC8qIDQ2MTMgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDUsIDcsIDAsCi0gIC8qIDQ2MjIgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDUsIDcsIDAsCi0gIC8qIDQ2MzEgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDcsIDAsCi0gIC8qIDQ2MzkgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDQsIDcsIDcsIDAsCi0gIC8qIDQ2NDkgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDUsIDQsIDcsIDcsIDAsCi0gIC8qIDQ2NjAgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDUsIDQsIDcsIDcsIDAsCi0gIC8qIDQ2NzEgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDQsIDcsIDcsIDAsCi0gIC8qIDQ2ODEgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDcsIDcsIDAsCi0gIC8qIDQ2OTAgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDUsIDcsIDcsIDAsCi0gIC8qIDQ3MDAgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDUsIDcsIDcsIDAsCi0gIC8qIDQ3MTAgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDcsIDcsIDAsCi0gIC8qIDQ3MTkgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDQsIDcsIDcsIDcsIDAsCi0gIC8qIDQ3MzAgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDUsIDQsIDcsIDcsIDcsIDAsCi0gIC8qIDQ3NDIgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDUsIDQsIDcsIDcsIDcsIDAsCi0gIC8qIDQ3NTQgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDQsIDcsIDcsIDcsIDAsCi0gIC8qIDQ3NjUgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDcsIDcsIDcsIDAsCi0gIC8qIDQ3NzUgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDUsIDcsIDcsIDcsIDAsCi0gIC8qIDQ3ODYgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDUsIDcsIDcsIDcsIDAsCi0gIC8qIDQ3OTcgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDcsIDcsIDcsIDAsCi0gIC8qIDQ4MDcgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDQsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDQ4MTkgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDUsIDQsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDQ4MzIgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDUsIDQsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDQ4NDUgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDQsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDQ4NTcgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDQ4NjggKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDUsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDQ4ODAgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDUsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDQ4OTIgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDQ5MDMgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDQsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDQ5MTcgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDUsIDQsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDQ5MzIgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDUsIDQsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDQ5NDcgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDQsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDQ5NjEgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDQ5NzQgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDUsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDQ5ODggKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDUsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDUwMDIgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDUwMTUgKi8gMCwgMTUsIDQsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDUwMjcgKi8gMjMsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDUwNzcgKi8gNDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDUxMjcgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDUxNDMgKi8gMjMsIDQsIDQsIDQsIDQsIDUsIDUsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDUxNjAgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDUsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDUxNzcgKi8gMjMsIDcsIDcsIDcsIDcsIDUsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsCi0gIC8qIDUxOTMgKi8gMjEsIDEwLCA0LCA0LCAxMCwgNywgMTAsIDcsIDAsCi0gIC8qIDUyMDIgKi8gMTcsIDEwLCA3LCAwLAotICAvKiA1MjA2ICovIDksIDgsIDksIDgsIDksIDUsIDksIDgsIDAsCi0gIC8qIDUyMTUgKi8gMjEsIDksIDUsIDQsIDksIDgsIDksIDgsIDAsCi0gIC8qIDUyMjQgKi8gOSwgOCwgOSwgOCwgOSwgOCwgOSwgOCwgMCwKLSAgLyogNTIzMyAqLyAxNywgOSwgOCwgMCwKLSAgLyogNTIzNyAqLyAxMCwgOCwgMTAsIDgsIDEwLCA1LCAxMCwgOCwgMCwKLSAgLyogNTI0NiAqLyAxMCwgOCwgMTAsIDgsIDEwLCA4LCAxMCwgOCwgMCwKLSAgLyogNTI1NSAqLyAxMSwgOCwgMTEsIDgsIDExLCA1LCAxMSwgOCwgMCwKLSAgLyogNTI2NCAqLyAxNSwgMywgMTUsIDMsIDE1LCAxMSwgMTUsIDExLCAwLAotICAvKiA1MjczICovIDAsIDE1LCA0LCAxNSwgMTEsIDE1LCAxMSwgMTUsIDExLCAwLAotICAvKiA1MjgzICovIDAsIDE1LCA0LCAxNSwgMTEsIDE1LCAxMSwgMTUsIDExLCAxNSwgMTEsIDAsCi0gIC8qIDUyOTUgKi8gMCwgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDEyLCAwLAotICAvKiA1MzA1ICovIDAsIDE1LCAzLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMTIsIDAsCi0gIC8qIDUzMTcgKi8gMjMsIDE1LCAzLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMTIsIDAsCi0gIC8qIDUzMjkgKi8gMjIsIDE1LCAzLCAxNSwgMywgMTUsIDMsIDE1LCAxMiwgMCwKLSAgLyogNTMzOSAqLyAyMSwgMTUsIDMsIDE1LCAzLCAxNSwgMTIsIDAsCi0gIC8qIDUzNDcgKi8gMCwgMTUsIDMsIDE1LCAzLCA1LCAxNSwgMTIsIDAsCi0gIC8qIDUzNTYgKi8gMCwgMTUsIDMsIDE1LCAzLCAxNSwgMywgNSwgMTUsIDEyLCAwLAotICAvKiA1MzY3ICovIDAsIDE1LCAzLCAxNSwgMywgMTUsIDMsIDE1LCAzLCA1LCAxNSwgMTIsIDAsCi0gIC8qIDUzODAgKi8gMjMsIDE1LCAzLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgNSwgMTUsIDEyLCAwLAotICAvKiA1NDAxICovIDIyLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDMsIDE1LCAzLCA1LCAxNSwgMTIsIDAsCi0gIC8qIDU0MTggKi8gMjEsIDE1LCAzLCAxNSwgMywgMTUsIDMsIDE1LCAzLCA1LCAxNSwgMTIsIDAsCi0gIC8qIDU0MzEgKi8gNCwgMTcsIDAsCi0gIC8qIDU0MzQgKi8gMTAsIDcsIDEwLCA3LCAxNywgMCwKLSAgLyogNTQ0MCAqLyA5LCA4LCAxNywgMCwKLSAgLyogNTQ0NCAqLyAwLCAxNCwgMTcsIDE3LCAwLAotICAvKiA1NDQ5ICovIDE3LCAxNywgMTcsIDAsCi0gIC8qIDU0NTMgKi8gMTUsIDAsIDE4LCAwLAotICAvKiA1NDU3ICovIDEsIDE4LCAwLAotICAvKiA1NDYwICovIDE0LCAyLCAxOCwgMCwKLSAgLyogNTQ2NCAqLyAxNSwgNCwgMTgsIDAsCi0gIC8qIDU0NjggKi8gMCwgMTksIDAsCi0gIC8qIDU0NzEgKi8gMTUsIDEsIDE5LCAwLAotICAvKiA1NDc1ICovIDEsIDE0LCAyLCAxOSwgMCwKLSAgLyogNTQ4MCAqLyAyMSwgMTQsIDIsIDEsIDE0LCAyLCA0LCAxOSwgMCwKLSAgLyogNTQ4OSAqLyAxNSwgMiwgMTUsIDEwLCAxNSwgMTksIDAsCi0gIC8qIDU0OTYgKi8gMTUsIDIsIDE1LCAyLCAxNSwgMiwgMTUsIDIsIDE5LCAxOSwgMCwKLSAgLyogNTUwNyAqLyAxNSwgMiwgMTUsIDIsIDQsIDE5LCAxOSwgMCwKLSAgLyogNTUxNSAqLyAwLCAxOSwgMTksIDE5LCAwLAotICAvKiA1NTIwICovIDE1LCAwLCAyOSwgMCwKLSAgLyogNTUyNCAqLyAwLCAxLCAyOSwgMCwKLSAgLyogNTUyOCAqLyAwLCA1LCA0LCAxNCwgMiwgNCwgMjksIDAsCi0gIC8qIDU1MzYgKi8gNSwgNSwgNCwgMTQsIDIsIDQsIDI5LCAwLAotICAvKiA1NTQ0ICovIDE4LCA1LCA0LCAxNSwgNCwgNCwgNCwgMjksIDAsCi0gIC8qIDU1NTMgKi8gMCwgNSwgNCwgMjksIDAsCi0gIC8qIDU1NTggKi8gMjgsIDM1LCAyOCwgMzUsIDI4LCAzNSwgMjgsIDM1LCAwLAotICAvKiA1NTY3ICovIDUsIDQxLCAwLAotICAvKiA1NTcwICovIDgsIDQxLCAwLAotICAvKiA1NTczICovIDQxLCA0MSwgNDEsIDQxLCAwLAorICAvKiAyNCAqLyA0LCAyNywgMiwgNCwgNCwgNCwgNCwgMSwgNCwgMSwgMSwgMCwKKyAgLyogMzYgKi8gMCwgMTUsIDAsIDEwLCA0LCA0LCA0LCA0LCA0LCA0LCA0LCAxLCAxLCAwLAorICAvKiA1MCAqLyAwLCAxNSwgMiwgMTAsIDQsIDQsIDQsIDEsIDEsIDAsCisgIC8qIDYwICovIDIxLCAxNSwgMiwgMSwgMTUsIDIsIDE1LCAyLCAxLCAwLAorICAvKiA3MCAqLyAxNSwgMiwgMTUsIDIsIDE1LCAyLCAxNSwgMiwgMSwgMCwKKyAgLyogODAgKi8gMTUsIDMsIDE1LCAzLCAxNSwgMywgMzEsIDMsIDEsIDAsCisgIC8qIDkwICovIDAsIDE1LCAzLCAzMywgMywgMzEsIDMsIDEsIDAsCisgIC8qIDk5ICovIDAsIDE1LCAzLCAzNCwgMSwgMCwgNCwgMzEsIDMsIDEsIDAsCisgIC8qIDExMCAqLyAwLCAxNSwgMywgMTUsIDEyLCA0LCAzMSwgMywgMSwgMCwKKyAgLyogMTIwICovIDE1LCAxLCAxNSwgMTIsIDE1LCAxLCA0LCA0LCAxLCAwLAorICAvKiAxMzAgKi8gMTUsIDEsIDE1LCAxLCAxNSwgMSwgNCwgNCwgNCwgMSwgMCwKKyAgLyogMTQxICovIDcsIDI3LCAzLCA3LCA3LCA0LCA0LCAxLCAwLAorICAvKiAxNTAgKi8gMjEsIDEsIDUsIDEsIDAsCisgIC8qIDE1NSAqLyAyMSwgMTUsIDEsIDMxLCAxLCAxLCAxNSwgMSwgMTUsIDEsIDAsCisgIC8qIDE2NiAqLyAwLCAxOSwgMTUsIDEsIDAsCisgIC8qIDE3MSAqLyAxNiwgMSwgMTYsIDEsIDE2LCAxLCAwLAorICAvKiAxNzggKi8gNCwgMTYsIDEsIDE2LCAxLCAwLAorICAvKiAxODQgKi8gMCwgMTUsIDQsIDE1LCAxMiwgMTUsIDE3LCAxLCAwLAorICAvKiAxOTMgKi8gMiwgMTgsIDEsIDAsCisgIC8qIDE5NyAqLyAxNSwgMSwgMjUsIDEsIDAsCisgIC8qIDIwMiAqLyAzNiwgMSwgMzYsIDEsIDM2LCAxLCAwLAorICAvKiAyMDkgKi8gMjEsIDEyLCA0LCAzNiwgMSwgMTIsIDQsIDEyLCA0LCAzNiwgMSwgMCwKKyAgLyogMjIxICovIDEyLCA0LCAxMiwgNCwgMTIsIDQsIDM2LCAxLCAwLAorICAvKiAyMzAgKi8gMzcsIDEsIDM3LCAxLCAzNywgMSwgMCwKKyAgLyogMjM3ICovIDIxLCAxMywgNCwgMzcsIDEsIDEzLCA0LCAxMywgNCwgMzcsIDEsIDAsCisgIC8qIDI0OSAqLyAxMywgNCwgMTMsIDQsIDEzLCA0LCAzNywgMSwgMCwKKyAgLyogMjU4ICovIDE2LCAyLCAxNiwgMiwgMTYsIDIsIDIsIDAsCisgIC8qIDI2NiAqLyAxMiwgMiwgMTIsIDIsIDQsIDEyLCAyLCA0LCAyLCAwLAorICAvKiAyNzYgKi8gMTAsIDcsIDEwLCA3LCAxMCwgNywgMTAsIDQsIDQsIDIsIDAsCisgIC8qIDI4NyAqLyAxMSwgNywgMTEsIDcsIDExLCA3LCAxMSwgNCwgNCwgMiwgMCwKKyAgLyogMjk4ICovIDksIDgsIDksIDgsIDksIDgsIDksIDUsIDQsIDIsIDAsCisgIC8qIDMwOSAqLyAxMCwgOCwgMTAsIDgsIDEwLCA4LCAxMCwgNSwgNCwgMiwgMCwKKyAgLyogMzIwICovIDEwLCA0LCAxMCwgNCwgMTQsIDIsIDEwLCA0LCAxMCwgNCwgMiwgMCwKKyAgLyogMzMyICovIDEwLCA0LCAxMCwgNCwgMTQsIDIsIDksIDUsIDEwLCA0LCAyLCAwLAorICAvKiAzNDQgKi8gMTAsIDQsIDEwLCA0LCAxNCwgMiwgMTAsIDUsIDEwLCA0LCAyLCAwLAorICAvKiAzNTYgKi8gMTAsIDcsIDEwLCA3LCAxMCwgNywgMTAsIDQsIDIsIDAsCisgIC8qIDM2NiAqLyAxMSwgNCwgMTEsIDQsIDE0LCAyLCAxMSwgNCwgMTEsIDQsIDIsIDAsCisgIC8qIDM3OCAqLyAxMSwgNywgMTEsIDcsIDExLCA3LCAxMSwgNCwgMiwgMCwKKyAgLyogMzg4ICovIDI3LCA0LCAyLCAwLAorICAvKiAzOTIgKi8gOSwgNSwgOSwgNSwgMTQsIDIsIDEwLCA0LCA5LCA1LCAyLCAwLAorICAvKiA0MDQgKi8gOSwgNSwgOSwgNSwgMTQsIDIsIDksIDUsIDksIDUsIDIsIDAsCisgIC8qIDQxNiAqLyA5LCA4LCA5LCA4LCA5LCA4LCA5LCA1LCAyLCAwLAorICAvKiA0MjYgKi8gMTAsIDUsIDEwLCA1LCAxNCwgMiwgMTAsIDQsIDEwLCA1LCAyLCAwLAorICAvKiA0MzggKi8gMTAsIDUsIDEwLCA1LCAxNCwgMiwgMTAsIDUsIDEwLCA1LCAyLCAwLAorICAvKiA0NTAgKi8gMTAsIDgsIDEwLCA4LCAxMCwgOCwgMTAsIDUsIDIsIDAsCisgIC8qIDQ2MCAqLyAxMCwgNywgMTAsIDcsIDEwLCA3LCA0LCAxMCwgNywgMiwgMCwKKyAgLyogNDcxICovIDEwLCA3LCAxMCwgNywgMTQsIDIsIDEwLCA0LCAxMCwgNywgMiwgMCwKKyAgLyogNDgzICovIDEwLCA3LCAxMCwgNywgMTQsIDIsIDksIDUsIDEwLCA3LCAyLCAwLAorICAvKiA0OTUgKi8gMTAsIDcsIDEwLCA3LCAxNCwgMiwgMTAsIDUsIDEwLCA3LCAyLCAwLAorICAvKiA1MDcgKi8gMTAsIDcsIDEwLCA3LCAxMCwgNywgMTAsIDcsIDIsIDAsCisgIC8qIDUxNyAqLyAxMSwgNywgMTEsIDcsIDExLCA3LCA0LCAxMSwgNywgMiwgMCwKKyAgLyogNTI4ICovIDExLCA3LCAxMSwgNywgMTQsIDIsIDExLCA0LCAxMSwgNywgMiwgMCwKKyAgLyogNTQwICovIDExLCA3LCAxMSwgNywgMTEsIDcsIDExLCA3LCAyLCAwLAorICAvKiA1NTAgKi8gMjcsIDcsIDIsIDAsCisgIC8qIDU1NCAqLyA5LCA4LCA5LCA4LCA5LCA4LCA0LCA5LCA4LCAyLCAwLAorICAvKiA1NjUgKi8gOSwgOCwgOSwgOCwgMTQsIDIsIDEwLCA0LCA5LCA4LCAyLCAwLAorICAvKiA1NzcgKi8gOSwgOCwgOSwgOCwgMTQsIDIsIDksIDUsIDksIDgsIDIsIDAsCisgIC8qIDU4OSAqLyA5LCA4LCA5LCA4LCA5LCA4LCA5LCA4LCAyLCAwLAorICAvKiA1OTkgKi8gMTAsIDgsIDEwLCA4LCAxMCwgOCwgNCwgMTAsIDgsIDIsIDAsCisgIC8qIDYxMCAqLyAxMCwgOCwgMTAsIDgsIDE0LCAyLCAxMCwgNCwgMTAsIDgsIDIsIDAsCisgIC8qIDYyMiAqLyAxMCwgOCwgMTAsIDgsIDE0LCAyLCAxMCwgNSwgMTAsIDgsIDIsIDAsCisgIC8qIDYzNCAqLyAxMCwgOCwgMTAsIDgsIDEwLCA4LCAxMCwgOCwgMiwgMCwKKyAgLyogNjQ0ICovIDExLCAyLCAxMSwgMiwgMTEsIDIsIDExLCAyLCAxMSwgMiwgMTEsIDIsIDExLCAyLCAwLAorICAvKiA2NTkgKi8gMjEsIDEyLCAyLCA0LCAxMiwgMiwgMTIsIDIsIDAsCisgIC8qIDY2OCAqLyAyMSwgMTIsIDIsIDQsIDEyLCAyLCAwLAorICAvKiA2NzUgKi8gMTgsIDQsIDE0LCAyLCAxNCwgMiwgMTQsIDIsIDAsCisgIC8qIDY4NCAqLyAyMSwgNCwgMTQsIDIsIDE0LCAyLCA0LCAxNCwgMiwgMCwKKyAgLyogNjk0ICovIDIxLCA1LCAxNCwgMiwgMTQsIDIsIDQsIDE0LCAyLCAwLAorICAvKiA3MDQgKi8gMjEsIDQsIDE0LCAyLCAxNCwgMiwgNCwgNCwgMTQsIDIsIDAsCisgIC8qIDcxNSAqLyAyMSwgNSwgMTQsIDIsIDE0LCAyLCA0LCA0LCAxNCwgMiwgMCwKKyAgLyogNzI2ICovIDE0LCAyLCAxNCwgMiwgNCwgNCwgNCwgMTQsIDIsIDAsCisgIC8qIDczNiAqLyAyMSwgNCwgNCwgMTQsIDIsIDAsCisgIC8qIDc0MiAqLyAxNCwgMiwgMTQsIDIsIDQsIDQsIDUsIDE0LCAyLCAwLAorICAvKiA3NTIgKi8gMjEsIDUsIDUsIDE0LCAyLCAwLAorICAvKiA3NTggKi8gMCwgMTcsIDE3LCAxNCwgMiwgMCwKKyAgLyogNzY0ICovIDE0LCAyLCAxOCwgMTQsIDIsIDAsCisgIC8qIDc3MCAqLyAxNiwgMSwgMTYsIDIsIDE2LCAyLCAwLAorICAvKiA3NzcgKi8gMTYsIDIsIDE2LCAyLCAxNiwgMiwgMTYsIDIsIDAsCisgIC8qIDc4NiAqLyAxMywgMywgMTYsIDIsIDE2LCAyLCAwLAorICAvKiA3OTMgKi8gMTEsIDUsIDE2LCAyLCAxNiwgMiwgMCwKKyAgLyogODAwICovIDE3LCAxNywgMTcsIDIsIDAsCisgIC8qIDgwNSAqLyAwLCA1LCA0LCA0LCA0LCAzLCAzLCAzLCAzLCAwLAorICAvKiA4MTUgKi8gMjEsIDEyLCAyLCA0LCAxMSwgMywgMTEsIDMsIDAsCisgIC8qIDgyNCAqLyAyMSwgMTEsIDMsIDQsIDExLCAzLCAxMSwgMywgMCwKKyAgLyogODMzICovIDIxLCAxMSwgMywgNCwgMTEsIDMsIDAsCisgIC8qIDg0MCAqLyAxNiwgMiwgMTMsIDMsIDEzLCAzLCAwLAorICAvKiA4NDcgKi8gMTUsIDMsIDMzLCAzLCAzMSwgMywgMSwgMTUsIDMsIDAsCisgIC8qIDg1NyAqLyAxNSwgMywgMzQsIDEsIDAsIDQsIDMxLCAzLCAxLCAxNSwgMywgMCwKKyAgLyogODY5ICovIDE1LCAzLCAxNSwgMTIsIDQsIDMxLCAzLCAxLCAxNSwgMywgMCwKKyAgLyogODgwICovIDE1LCAzLCAxNSwgMywgMTIsIDIsIDEyLCAyLCAxMiwgMiwgMTIsIDIsIDE1LCAzLCAwLAorICAvKiA4OTUgKi8gMTUsIDMsIDE1LCAzLCAxMiwgMiwgMTIsIDIsIDEyLCAyLCAxNSwgMywgMCwKKyAgLyogOTA4ICovIDE1LCAzLCAxNSwgMywgMTIsIDIsIDEyLCAyLCAxNSwgMywgMCwKKyAgLyogOTE5ICovIDE1LCAzLCAyNSwgMywgMCwKKyAgLyogOTI0ICovIDE1LCAzLCAyNSwgMywgMjUsIDMsIDAsCisgIC8qIDkzMSAqLyAxNSwgMywgMjYsIDMsIDAsCisgIC8qIDkzNiAqLyAxNSwgMywgMjYsIDMsIDI2LCAzLCAwLAorICAvKiA5NDMgKi8gOSwgNSwgOSwgNSwgMTQsIDIsIDEwLCA0LCA5LCAxLCA0LCAwLAorICAvKiA5NTUgKi8gOSwgOCwgOSwgOCwgMTQsIDIsIDEwLCA0LCA5LCAxLCA0LCAwLAorICAvKiA5NjcgKi8gMTAsIDQsIDEwLCA0LCAxNCwgMiwgOSwgNSwgOSwgMSwgNCwgMCwKKyAgLyogOTc5ICovIDksIDUsIDksIDUsIDE0LCAyLCA5LCA1LCA5LCAxLCA0LCAwLAorICAvKiA5OTEgKi8gMTAsIDcsIDEwLCA3LCAxNCwgMiwgOSwgNSwgOSwgMSwgNCwgMCwKKyAgLyogMTAwMyAqLyA5LCA4LCA5LCA4LCAxNCwgMiwgOSwgNSwgOSwgMSwgNCwgMCwKKyAgLyogMTAxNSAqLyAxMCwgNCwgMTAsIDQsIDE0LCAyLCAxMCwgNCwgMTAsIDEsIDQsIDAsCisgIC8qIDEwMjcgKi8gMTAsIDUsIDEwLCA1LCAxNCwgMiwgMTAsIDQsIDEwLCAxLCA0LCAwLAorICAvKiAxMDM5ICovIDEwLCA3LCAxMCwgNywgMTQsIDIsIDEwLCA0LCAxMCwgMSwgNCwgMCwKKyAgLyogMTA1MSAqLyAxMCwgOCwgMTAsIDgsIDE0LCAyLCAxMCwgNCwgMTAsIDEsIDQsIDAsCisgIC8qIDEwNjMgKi8gMTAsIDQsIDEwLCA0LCAxNCwgMiwgMTAsIDUsIDEwLCAxLCA0LCAwLAorICAvKiAxMDc1ICovIDEwLCA1LCAxMCwgNSwgMTQsIDIsIDEwLCA1LCAxMCwgMSwgNCwgMCwKKyAgLyogMTA4NyAqLyAxMCwgNywgMTAsIDcsIDE0LCAyLCAxMCwgNSwgMTAsIDEsIDQsIDAsCisgIC8qIDEwOTkgKi8gMTAsIDgsIDEwLCA4LCAxNCwgMiwgMTAsIDUsIDEwLCAxLCA0LCAwLAorICAvKiAxMTExICovIDExLCA0LCAxMSwgNCwgMTQsIDIsIDExLCA0LCAxMSwgMSwgNCwgMCwKKyAgLyogMTEyMyAqLyAxMSwgNSwgMTEsIDUsIDE0LCAyLCAxMSwgNCwgMTEsIDEsIDQsIDAsCisgIC8qIDExMzUgKi8gMTEsIDcsIDExLCA3LCAxNCwgMiwgMTEsIDQsIDExLCAxLCA0LCAwLAorICAvKiAxMTQ3ICovIDExLCA4LCAxMSwgOCwgMTQsIDIsIDExLCA0LCAxMSwgMSwgNCwgMCwKKyAgLyogMTE1OSAqLyAxMSwgNCwgMTEsIDQsIDE0LCAyLCAxMSwgNSwgMTEsIDEsIDQsIDAsCisgIC8qIDExNzEgKi8gMTEsIDUsIDExLCA1LCAxNCwgMiwgMTEsIDUsIDExLCAxLCA0LCAwLAorICAvKiAxMTgzICovIDExLCA3LCAxMSwgNywgMTQsIDIsIDExLCA1LCAxMSwgMSwgNCwgMCwKKyAgLyogMTE5NSAqLyAxMSwgOCwgMTEsIDgsIDE0LCAyLCAxMSwgNSwgMTEsIDEsIDQsIDAsCisgIC8qIDEyMDcgKi8gMTIsIDQsIDEyLCA0LCAxNCwgMiwgMTIsIDQsIDEyLCAxLCA0LCAwLAorICAvKiAxMjE5ICovIDEyLCA3LCAxMiwgNywgMTQsIDIsIDEyLCA0LCAxMiwgMSwgNCwgMCwKKyAgLyogMTIzMSAqLyAxNSwgMSwgMjUsIDEsIDQsIDAsCisgIC8qIDEyMzcgKi8gMTIsIDQsIDEyLCA0LCAzNiwgMSwgNCwgMCwKKyAgLyogMTI0NSAqLyAxMywgNCwgMTMsIDQsIDM3LCAxLCA0LCAwLAorICAvKiAxMjUzICovIDEwLCA3LCAxMCwgNywgMTAsIDcsIDEwLCA0LCA0LCAyLCA0LCAwLAorICAvKiAxMjY1ICovIDksIDgsIDksIDgsIDksIDgsIDksIDUsIDQsIDIsIDQsIDAsCisgIC8qIDEyNzcgKi8gMTEsIDgsIDExLCA4LCAxMSwgOCwgMTEsIDUsIDQsIDIsIDQsIDAsCisgIC8qIDEyODkgKi8gMTAsIDQsIDEwLCA0LCAxNCwgMiwgMTAsIDQsIDIsIDQsIDAsCisgIC8qIDEzMDAgKi8gOSwgNSwgOSwgNSwgMTQsIDIsIDEwLCA0LCAyLCA0LCAwLAorICAvKiAxMzExICovIDEwLCA1LCAxMCwgNSwgMTQsIDIsIDEwLCA0LCAyLCA0LCAwLAorICAvKiAxMzIyICovIDEwLCA3LCAxMCwgNywgMTQsIDIsIDEwLCA0LCAyLCA0LCAwLAorICAvKiAxMzMzICovIDksIDgsIDksIDgsIDE0LCAyLCAxMCwgNCwgMiwgNCwgMCwKKyAgLyogMTM0NCAqLyAxMCwgOCwgMTAsIDgsIDE0LCAyLCAxMCwgNCwgMiwgNCwgMCwKKyAgLyogMTM1NSAqLyAxMSwgNCwgMTEsIDQsIDE0LCAyLCAxMSwgNCwgMiwgNCwgMCwKKyAgLyogMTM2NiAqLyAxMSwgNSwgMTEsIDUsIDE0LCAyLCAxMSwgNCwgMiwgNCwgMCwKKyAgLyogMTM3NyAqLyAxMSwgNywgMTEsIDcsIDE0LCAyLCAxMSwgNCwgMiwgNCwgMCwKKyAgLyogMTM4OCAqLyAxMSwgOCwgMTEsIDgsIDE0LCAyLCAxMSwgNCwgMiwgNCwgMCwKKyAgLyogMTM5OSAqLyAxMCwgNCwgMTAsIDQsIDE0LCAyLCA5LCA1LCAyLCA0LCAwLAorICAvKiAxNDEwICovIDksIDUsIDksIDUsIDE0LCAyLCA5LCA1LCAyLCA0LCAwLAorICAvKiAxNDIxICovIDEwLCA3LCAxMCwgNywgMTQsIDIsIDksIDUsIDIsIDQsIDAsCisgIC8qIDE0MzIgKi8gOSwgOCwgOSwgOCwgMTQsIDIsIDksIDUsIDIsIDQsIDAsCisgIC8qIDE0NDMgKi8gMTAsIDQsIDEwLCA0LCAxNCwgMiwgMTAsIDUsIDIsIDQsIDAsCisgIC8qIDE0NTQgKi8gMTAsIDUsIDEwLCA1LCAxNCwgMiwgMTAsIDUsIDIsIDQsIDAsCisgIC8qIDE0NjUgKi8gMTAsIDcsIDEwLCA3LCAxNCwgMiwgMTAsIDUsIDIsIDQsIDAsCisgIC8qIDE0NzYgKi8gMTAsIDgsIDEwLCA4LCAxNCwgMiwgMTAsIDUsIDIsIDQsIDAsCisgIC8qIDE0ODcgKi8gMTEsIDQsIDExLCA0LCAxNCwgMiwgMTEsIDUsIDIsIDQsIDAsCisgIC8qIDE0OTggKi8gMTEsIDUsIDExLCA1LCAxNCwgMiwgMTEsIDUsIDIsIDQsIDAsCisgIC8qIDE1MDkgKi8gMTEsIDcsIDExLCA3LCAxNCwgMiwgMTEsIDUsIDIsIDQsIDAsCisgIC8qIDE1MjAgKi8gMTEsIDgsIDExLCA4LCAxNCwgMiwgMTEsIDUsIDIsIDQsIDAsCisgIC8qIDE1MzEgKi8gMTAsIDcsIDEwLCA3LCAxMCwgNywgNCwgMTAsIDcsIDIsIDQsIDAsCisgIC8qIDE1NDMgKi8gMTAsIDcsIDEwLCA3LCAxMCwgNywgMTAsIDcsIDIsIDQsIDAsCisgIC8qIDE1NTQgKi8gMTAsIDcsIDEwLCA3LCA5LCA4LCAxMCwgNywgMiwgNCwgMCwKKyAgLyogMTU2NSAqLyA5LCA4LCA5LCA4LCA5LCA4LCA0LCA5LCA4LCAyLCA0LCAwLAorICAvKiAxNTc3ICovIDksIDgsIDksIDgsIDEwLCA3LCA5LCA4LCAyLCA0LCAwLAorICAvKiAxNTg4ICovIDksIDgsIDksIDgsIDksIDgsIDksIDgsIDIsIDQsIDAsCisgIC8qIDE1OTkgKi8gMTEsIDgsIDExLCA4LCAxMSwgOCwgNCwgMTEsIDgsIDIsIDQsIDAsCisgIC8qIDE2MTEgKi8gMTEsIDgsIDExLCA4LCAxMSwgOCwgMTEsIDgsIDIsIDQsIDAsCisgIC8qIDE2MjIgKi8gMTIsIDIsIDEyLCAyLCAxMiwgMiwgMTIsIDIsIDQsIDAsCisgIC8qIDE2MzIgKi8gMjEsIDEyLCAyLCA0LCAxMiwgMiwgMTIsIDIsIDEyLCAyLCA0LCAwLAorICAvKiAxNjQ0ICovIDIxLCAxMiwgMiwgNCwgMTIsIDIsIDEyLCAyLCA0LCAwLAorICAvKiAxNjU0ICovIDEyLCAyLCA5LCA1LCA5LCA1LCAxMiwgMiwgNCwgMCwKKyAgLyogMTY2NCAqLyAxNSwgMSwgMTUsIDEsIDE0LCAyLCAxNCwgMiwgNCwgMCwKKyAgLyogMTY3NCAqLyAxNSwgNCwgMTUsIDQsIDE0LCAyLCAxNCwgMiwgNCwgMCwKKyAgLyogMTY4NCAqLyAyMSwgNCwgMTQsIDIsIDE0LCAyLCA0LCAwLAorICAvKiAxNjkyICovIDIxLCA1LCAxNCwgMiwgMTQsIDIsIDQsIDAsCisgIC8qIDE3MDAgKi8gMTMsIDMsIDE2LCAyLCAxNiwgMiwgNCwgMCwKKyAgLyogMTcwOCAqLyAxMiwgNywgMTIsIDcsIDEyLCA3LCAxMiwgNCwgNCwgMywgNCwgMCwKKyAgLyogMTcyMCAqLyAxMiwgNCwgMTIsIDQsIDE0LCAyLCAxMiwgNCwgMywgNCwgMCwKKyAgLyogMTczMSAqLyAxMiwgNywgMTIsIDcsIDE0LCAyLCAxMiwgNCwgMywgNCwgMCwKKyAgLyogMTc0MiAqLyAxMiwgNywgMTIsIDcsIDEyLCA3LCA0LCAxMiwgNywgMywgNCwgMCwKKyAgLyogMTc1NCAqLyAxMiwgNywgMTIsIDcsIDEyLCA3LCAxMiwgNywgMywgNCwgMCwKKyAgLyogMTc2NSAqLyAxMSwgMywgMTEsIDMsIDExLCAzLCAxMSwgMywgNCwgMCwKKyAgLyogMTc3NSAqLyAyMSwgMTEsIDMsIDQsIDExLCAzLCAxMSwgMywgMTEsIDMsIDQsIDAsCisgIC8qIDE3ODcgKi8gMjEsIDExLCAzLCA0LCAxMSwgMywgMTEsIDMsIDQsIDAsCisgIC8qIDE3OTcgKi8gMjEsIDMsIDQsIDAsCisgIC8qIDE4MDEgKi8gMTUsIDMsIDI2LCAzLCA0LCAwLAorICAvKiAxODA3ICovIDE1LCAwLCA0LCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMTgyMCAqLyAxNSwgMCwgNCwgNCwgMTUsIDEwLCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCisgIC8qIDE4MzQgKi8gMTUsIDAsIDQsIDcsIDE1LCAxMCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAxODQ4ICovIDE1LCAwLCA0LCA0LCA3LCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMTg2MyAqLyAxNSwgMCwgNCwgMTUsIDEwLCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMTg3OCAqLyAxNSwgMCwgNCwgNCwgMTUsIDEwLCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMTg5NCAqLyAxNSwgMCwgNCwgNywgMTUsIDEwLCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMTkxMCAqLyAxNSwgMCwgNCwgNCwgNywgMTUsIDEwLCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMTkyNyAqLyAxNSwgMCwgNCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAxOTQ0ICovIDE1LCAwLCA0LCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCisgIC8qIDE5NjIgKi8gMTUsIDAsIDQsIDcsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMTk4MCAqLyAxNSwgMCwgNCwgNCwgNywgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAxOTk5ICovIDE1LCAwLCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMjAxOCAqLyAxNSwgMCwgNCwgNCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCisgIC8qIDIwMzggKi8gMTUsIDAsIDQsIDcsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyMDU4ICovIDE1LCAwLCA0LCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMjA3OSAqLyAxNSwgMCwgNCwgMTUsIDEwLCA3LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMjA5NSAqLyAxNSwgMCwgNCwgNCwgMTUsIDEwLCA3LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMjExMiAqLyAxNSwgMCwgNCwgMTUsIDEwLCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMjEyNyAqLyAxNSwgMCwgNCwgNCwgMTUsIDEwLCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMjE0MyAqLyAxNSwgMCwgNCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyMTYwICovIDE1LCAwLCA0LCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCisgIC8qIDIxNzggKi8gMTUsIDAsIDQsIDcsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMjE5NiAqLyAxNSwgMCwgNCwgNCwgNywgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyMjE1ICovIDE1LCAwLCA0LCAxNSwgMTAsIDcsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCisgIC8qIDIyMzMgKi8gMTUsIDAsIDQsIDQsIDE1LCAxMCwgNywgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMjI1MiAqLyAxNSwgMCwgNCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyMjY5ICovIDE1LCAwLCA0LCA0LCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCisgIC8qIDIyODcgKi8gMTUsIDAsIDQsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyMzA2ICovIDE1LCAwLCA0LCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMjMyNiAqLyAxNSwgMCwgNCwgNywgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCisgIC8qIDIzNDYgKi8gMTUsIDAsIDQsIDQsIDcsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyMzY3ICovIDE1LCAwLCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCisgIC8qIDIzOTAgKi8gMTUsIDAsIDQsIDQsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMjQxNCAqLyAxNSwgMCwgNCwgNywgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyNDM4ICovIDE1LCAwLCA0LCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCisgIC8qIDI0NjMgKi8gMTUsIDAsIDQsIDE1LCAxMCwgNywgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyNDgzICovIDE1LCAwLCA0LCA0LCAxNSwgMTAsIDcsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMjUwNCAqLyAxNSwgMCwgNCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCisgIC8qIDI1MjMgKi8gMTUsIDAsIDQsIDQsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyNTQzICovIDE1LCAwLCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyNTY0ICovIDE1LCAwLCA0LCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyNTg2ICovIDE1LCAwLCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyNjA4ICovIDE1LCAwLCA0LCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyNjMxICovIDE1LCAwLCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMjY1NiAqLyAxNSwgMCwgNCwgNCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCisgIC8qIDI2ODIgKi8gMTUsIDAsIDQsIDcsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyNzA4ICovIDE1LCAwLCA0LCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMjczNSAqLyAxNSwgMCwgNCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyNzY0ICovIDE1LCAwLCA0LCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCisgIC8qIDI3OTQgKi8gMTUsIDAsIDQsIDcsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMjgyNCAqLyAxNSwgMCwgNCwgNCwgNywgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyODU1ICovIDE1LCAwLCA0LCAxNSwgMTAsIDcsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyODc3ICovIDE1LCAwLCA0LCA0LCAxNSwgMTAsIDcsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyOTAwICovIDE1LCAwLCA0LCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyOTIxICovIDE1LCAwLCA0LCA0LCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyOTQzICovIDE1LCAwLCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyOTcwICovIDE1LCAwLCA0LCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAyOTk4ICovIDE1LCAwLCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAzMDI2ICovIDE1LCAwLCA0LCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAzMDU1ICovIDE1LCAwLCA0LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMzA4NiAqLyAxNSwgMCwgNCwgNCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTUsIDE4LCAxMSwgNCwgMTAsIDQsIDEsIDQsIDQsIDAsCisgIC8qIDMxMTggKi8gMTUsIDAsIDQsIDcsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDE1LCAxOCwgMTEsIDQsIDEwLCA0LCAxLCA0LCA0LCAwLAorICAvKiAzMTUwICovIDE1LCAwLCA0LCA0LCA3LCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTAsIDE1LCAxMCwgMTUsIDEwLCAxNSwgMTgsIDE1LCAxOCwgMTUsIDE4LCAxNSwgMTgsIDExLCA0LCAxMCwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMzE4MyAqLyAyMSwgNCwgMSwgNCwgNCwgMCwKKyAgLyogMzE4OSAqLyAyMSwgMiwgNCwgMiwgNCwgNCwgMCwKKyAgLyogMzE5NiAqLyAxMCwgNywgMTAsIDcsIDEwLCA3LCAxMCwgNywgMiwgNCwgNCwgMCwKKyAgLyogMzIwOCAqLyA5LCA4LCA5LCA4LCA5LCA4LCA5LCA4LCAyLCA0LCA0LCAwLAorICAvKiAzMjIwICovIDIzLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDEyLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgNCwgNCwgMCwKKyAgLyogMzI0MiAqLyAyMiwgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDEyLCAxNSwgMywgMTUsIDMsIDE1LCAzLCA0LCA0LCAwLAorICAvKiAzMjYwICovIDIxLCAxNSwgMywgMTUsIDMsIDE1LCAxMiwgMTUsIDMsIDE1LCAzLCA0LCA0LCAwLAorICAvKiAzMjc0ICovIDEwLCA0LCAxMCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgMCwKKyAgLyogMzI4OCAqLyAxMCwgNywgMTAsIDcsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDAsCisgIC8qIDMzMDIgKi8gMCwgNSwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgMCwKKyAgLyogMzMxMiAqLyAwLCAxNSwgMCwgMTAsIDQsIDQsIDQsIDQsIDQsIDQsIDAsCisgIC8qIDMzMjMgKi8gMCwgMTUsIDAsIDEwLCA0LCA0LCA0LCA0LCA0LCAwLAorICAvKiAzMzMzICovIDE1LCAxLCAxNSwgMSwgMTUsIDEsIDEwLCA0LCA0LCA0LCA0LCA0LCAwLAorICAvKiAzMzQ2ICovIDIxLCA0LCA0LCA0LCA0LCA0LCAwLAorICAvKiAzMzUzICovIDE1LCAxLCAxNSwgMSwgMTUsIDEsIDEwLCA0LCA0LCA0LCA0LCAwLAorICAvKiAzMzY1ICovIDIzLCAzLCAzLCAzLCAzLCA1LCA0LCA0LCA0LCAwLAorICAvKiAzMzc1ICovIDIxLCAzLCAzLCA1LCA0LCA0LCA0LCAwLAorICAvKiAzMzgzICovIDIzLCA0LCA0LCA0LCA0LCA1LCA0LCA0LCA0LCAwLAorICAvKiAzMzkzICovIDIxLCA0LCA0LCA1LCA0LCA0LCA0LCAwLAorICAvKiAzNDAxICovIDIzLCA0LCA0LCA0LCA0LCA1LCA1LCA0LCA0LCA0LCAwLAorICAvKiAzNDEyICovIDIxLCA1LCA1LCA1LCA0LCA0LCA0LCAwLAorICAvKiAzNDIwICovIDIzLCA3LCA3LCA3LCA3LCA1LCA1LCA0LCA0LCA0LCAwLAorICAvKiAzNDMxICovIDIzLCA3LCA3LCA3LCA3LCA1LCA0LCA0LCA0LCAwLAorICAvKiAzNDQxICovIDE1LCAxLCAxNSwgMSwgMTUsIDEsIDE1LCA5LCAxMSwgNCwgNCwgNCwgMCwKKyAgLyogMzQ1NCAqLyAxNSwgMCwgNCwgMTUsIDksIDExLCA0LCA0LCA0LCAwLAorICAvKiAzNDY0ICovIDAsIDE1LCAyLCA0LCAxNSwgOSwgMTEsIDQsIDQsIDQsIDAsCisgIC8qIDM0NzUgKi8gMTUsIDEsIDE1LCAxLCAxNSwgMSwgMTUsIDksIDE1LCA5LCAxMSwgNCwgNCwgNCwgMCwKKyAgLyogMzQ5MCAqLyAxNSwgMCwgNCwgMTUsIDksIDE1LCA5LCAxMSwgNCwgNCwgNCwgMCwKKyAgLyogMzUwMiAqLyAwLCAxNSwgMiwgNCwgMTUsIDksIDE1LCA5LCAxMSwgNCwgNCwgNCwgMCwKKyAgLyogMzUxNSAqLyAxNSwgMSwgMTUsIDEsIDE1LCAxLCAxNSwgOSwgMTUsIDksIDE1LCA5LCAxMSwgNCwgNCwgNCwgMCwKKyAgLyogMzUzMiAqLyAxNSwgMCwgNCwgMTUsIDksIDE1LCA5LCAxNSwgOSwgMTEsIDQsIDQsIDQsIDAsCisgIC8qIDM1NDYgKi8gMCwgMTUsIDIsIDQsIDE1LCA5LCAxNSwgOSwgMTUsIDksIDExLCA0LCA0LCA0LCAwLAorICAvKiAzNTYxICovIDE1LCAxLCAxNSwgMSwgMTUsIDEsIDE1LCA5LCAxNSwgOSwgMTUsIDksIDE1LCA5LCAxMSwgNCwgNCwgNCwgMCwKKyAgLyogMzU4MCAqLyAxNSwgMCwgNCwgMTUsIDksIDE1LCA5LCAxNSwgOSwgMTUsIDksIDExLCA0LCA0LCA0LCAwLAorICAvKiAzNTk2ICovIDAsIDE1LCAyLCA0LCAxNSwgOSwgMTUsIDksIDE1LCA5LCAxNSwgOSwgMTEsIDQsIDQsIDQsIDAsCisgIC8qIDM2MTMgKi8gMTYsIDQsIDE2LCA0LCAxNiwgNCwgNCwgNCwgMCwKKyAgLyogMzYyMiAqLyAyMywgMywgMywgMywgMywgNSwgNCwgNCwgMCwKKyAgLyogMzYzMSAqLyAyMSwgMywgMywgNSwgNCwgNCwgMCwKKyAgLyogMzYzOCAqLyAyMywgNCwgNCwgNCwgNCwgNSwgNCwgNCwgMCwKKyAgLyogMzY0NyAqLyAyMSwgNCwgNCwgNSwgNCwgNCwgMCwKKyAgLyogMzY1NCAqLyAyMywgNCwgNCwgNCwgNCwgNSwgNSwgNCwgNCwgMCwKKyAgLyogMzY2NCAqLyAyMSwgNSwgNSwgNSwgNCwgNCwgMCwKKyAgLyogMzY3MSAqLyAyMywgNywgNywgNywgNywgNSwgNSwgNCwgNCwgMCwKKyAgLyogMzY4MSAqLyAyMywgNywgNywgNywgNywgNSwgNCwgNCwgMCwKKyAgLyogMzY5MCAqLyAwLCAxNCwgMiwgMTAsIDEsIDEwLCA0LCAxMCwgNCwgNCwgMCwKKyAgLyogMzcwMSAqLyAwLCAxNCwgMiwgMiwgMTAsIDQsIDEwLCA0LCA0LCAwLAorICAvKiAzNzExICovIDIxLCAxMCwgNCwgNCwgMTAsIDQsIDEwLCA0LCA0LCAwLAorICAvKiAzNzIxICovIDIxLCAxMCwgNCwgNCwgMTAsIDQsIDEwLCA0LCAxMCwgNCwgNCwgMCwKKyAgLyogMzczMyAqLyAxMCwgNCwgMTAsIDQsIDEwLCA0LCAxMCwgNCwgNCwgMCwKKyAgLyogMzc0MyAqLyAwLCAxNCwgMiwgOSwgMSwgOSwgNSwgMTAsIDQsIDQsIDAsCisgIC8qIDM3NTQgKi8gMCwgMTQsIDIsIDIsIDksIDUsIDEwLCA0LCA0LCAwLAorICAvKiAzNzY0ICovIDAsIDE0LCAyLCAxMCwgMSwgMTAsIDUsIDEwLCA0LCA0LCAwLAorICAvKiAzNzc1ICovIDAsIDE0LCAyLCAyLCAxMCwgNSwgMTAsIDQsIDQsIDAsCisgIC8qIDM3ODUgKi8gMCwgMTQsIDIsIDExLCAxLCAxMSwgNCwgMTEsIDQsIDQsIDAsCisgIC8qIDM3OTYgKi8gMCwgMTQsIDIsIDIsIDExLCA0LCAxMSwgNCwgNCwgMCwKKyAgLyogMzgwNiAqLyAxMSwgNCwgMTEsIDQsIDExLCA0LCAxMSwgNCwgNCwgMCwKKyAgLyogMzgxNiAqLyAwLCAxNCwgMiwgMTEsIDEsIDExLCA1LCAxMSwgNCwgNCwgMCwKKyAgLyogMzgyNyAqLyAwLCAxNCwgMiwgMiwgMTEsIDUsIDExLCA0LCA0LCAwLAorICAvKiAzODM3ICovIDAsIDE1LCA0LCAxNSwgMTEsIDE1LCAxMSwgNCwgNCwgMCwKKyAgLyogMzg0NyAqLyAwLCAxNSwgNCwgMTUsIDExLCAxNSwgMTEsIDE1LCAxMSwgNCwgNCwgMCwKKyAgLyogMzg1OSAqLyAwLCAxNSwgNCwgMTUsIDExLCAxNSwgMTEsIDE1LCAxMSwgMTUsIDExLCA0LCA0LCAwLAorICAvKiAzODczICovIDM2LCAxLCAzNiwgMSwgMTIsIDQsIDQsIDAsCisgIC8qIDM4ODEgKi8gMCwgMTQsIDIsIDEyLCAxLCAxMiwgNCwgMTIsIDQsIDQsIDAsCisgIC8qIDM4OTIgKi8gMCwgMTQsIDIsIDMsIDEyLCA0LCAxMiwgNCwgNCwgMCwKKyAgLyogMzkwMiAqLyAyMSwgMTIsIDQsIDEyLCA0LCAxMiwgNCwgMTIsIDQsIDQsIDAsCisgIC8qIDM5MTMgKi8gMTMsIDQsIDEzLCA0LCAxMiwgNCwgMTIsIDQsIDQsIDAsCisgIC8qIDM5MjMgKi8gMzcsIDEsIDM3LCAxLCAxMywgNCwgNCwgMCwKKyAgLyogMzkzMSAqLyAyMSwgMTMsIDQsIDEzLCA0LCAxMywgNCwgMTMsIDQsIDQsIDAsCisgIC8qIDM5NDIgKi8gMTYsIDQsIDE2LCA0LCAxMywgNCwgMTMsIDQsIDQsIDAsCisgIC8qIDM5NTIgKi8gMTYsIDQsIDE2LCA0LCAxMywgNCwgNCwgMCwKKyAgLyogMzk2MCAqLyA0MCwgOSwgNiwgOSwgNiwgOSwgNiwgOSwgNiwgOSwgNiwgOSwgNiwgOSwgNiwgOSwgNiwgMTUsIDQsIDQsIDAsCisgIC8qIDM5ODEgKi8gMjMsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDE1LCA0LCA0LCAwLAorICAvKiAzOTk0ICovIDQwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAxNSwgNCwgNCwgMCwKKyAgLyogNDAwNyAqLyAxMywgNCwgMTMsIDQsIDE2LCA0LCA0LCAwLAorICAvKiA0MDE1ICovIDE2LCA0LCAxNiwgNCwgMTYsIDQsIDQsIDAsCisgIC8qIDQwMjMgKi8gMTcsIDE3LCA0LCA0LCAwLAorICAvKiA0MDI4ICovIDE1LCAwLCAxOCwgNCwgNCwgMCwKKyAgLyogNDAzNCAqLyAyMSwgNCwgNCwgMCwKKyAgLyogNDAzOCAqLyAyMywgMywgMywgMywgMywgNSwgNCwgMCwKKyAgLyogNDA0NiAqLyAyMSwgMywgMywgNSwgNCwgMCwKKyAgLyogNDA1MiAqLyAyMywgNCwgNCwgNCwgNCwgNSwgNCwgMCwKKyAgLyogNDA2MCAqLyAyMSwgNCwgNCwgNSwgNCwgMCwKKyAgLyogNDA2NiAqLyAyMywgNCwgNCwgNCwgNCwgNSwgNSwgNCwgMCwKKyAgLyogNDA3NSAqLyAyMSwgNSwgNCwgNSwgNSwgNCwgMCwKKyAgLyogNDA4MiAqLyAyMSwgNSwgNSwgNSwgNCwgMCwKKyAgLyogNDA4OCAqLyAyMywgNywgNywgNywgNywgNSwgNSwgNCwgMCwKKyAgLyogNDA5NyAqLyAyMywgNywgNywgNywgNywgNSwgNCwgMCwKKyAgLyogNDEwNSAqLyAwLCAxNCwgMiwgOSwgMSwgMTAsIDQsIDksIDUsIDQsIDAsCisgIC8qIDQxMTYgKi8gMCwgMTQsIDIsIDIsIDEwLCA0LCA5LCA1LCA0LCAwLAorICAvKiA0MTI2ICovIDAsIDE0LCAyLCA5LCAxLCA5LCA1LCA5LCA1LCA0LCAwLAorICAvKiA0MTM3ICovIDAsIDE0LCAyLCAyLCA5LCA1LCA5LCA1LCA0LCAwLAorICAvKiA0MTQ3ICovIDksIDUsIDksIDUsIDksIDUsIDksIDUsIDQsIDAsCisgIC8qIDQxNTcgKi8gMCwgMTQsIDIsIDEwLCAxLCAxMCwgNCwgMTAsIDUsIDQsIDAsCisgIC8qIDQxNjggKi8gMCwgMTQsIDIsIDIsIDEwLCA0LCAxMCwgNSwgNCwgMCwKKyAgLyogNDE3OCAqLyAwLCAxNCwgMiwgMTAsIDEsIDEwLCA1LCAxMCwgNSwgNCwgMCwKKyAgLyogNDE4OSAqLyAwLCAxNCwgMiwgMiwgMTAsIDUsIDEwLCA1LCA0LCAwLAorICAvKiA0MTk5ICovIDEwLCA1LCAxMCwgNSwgMTAsIDUsIDEwLCA1LCA0LCAwLAorICAvKiA0MjA5ICovIDAsIDE0LCAyLCAxMSwgMSwgMTEsIDQsIDExLCA1LCA0LCAwLAorICAvKiA0MjIwICovIDAsIDE0LCAyLCAyLCAxMSwgNCwgMTEsIDUsIDQsIDAsCisgIC8qIDQyMzAgKi8gMCwgMTQsIDIsIDExLCAxLCAxMSwgNSwgMTEsIDUsIDQsIDAsCisgIC8qIDQyNDEgKi8gMCwgMTQsIDIsIDIsIDExLCA1LCAxMSwgNSwgNCwgMCwKKyAgLyogNDI1MSAqLyAxMSwgNSwgMTEsIDUsIDExLCA1LCAxMSwgNSwgNCwgMCwKKyAgLyogNDI2MSAqLyAyMSwgNSwgNCwgMCwKKyAgLyogNDI2NSAqLyAwLCAxNSwgNCwgOSwgNiwgOSwgNiwgOSwgNiwgOSwgNiwgNCwgMCwKKyAgLyogNDI3OCAqLyAwLCAxNSwgNCwgNywgNywgNywgNywgNywgNywgNywgNywgNCwgMCwKKyAgLyogNDI5MSAqLyAyMSwgMTAsIDQsIDQsIDEwLCA3LCA0LCAwLAorICAvKiA0Mjk5ICovIDAsIDE0LCAyLCAxMCwgMSwgMTAsIDQsIDEwLCA3LCA0LCAwLAorICAvKiA0MzEwICovIDAsIDE0LCAyLCAyLCAxMCwgNCwgMTAsIDcsIDQsIDAsCisgIC8qIDQzMjAgKi8gMCwgMTQsIDIsIDksIDEsIDksIDUsIDEwLCA3LCA0LCAwLAorICAvKiA0MzMxICovIDAsIDE0LCAyLCAyLCA5LCA1LCAxMCwgNywgNCwgMCwKKyAgLyogNDM0MSAqLyAwLCAxNCwgMiwgMTAsIDEsIDEwLCA1LCAxMCwgNywgNCwgMCwKKyAgLyogNDM1MiAqLyAwLCAxNCwgMiwgMiwgMTAsIDUsIDEwLCA3LCA0LCAwLAorICAvKiA0MzYyICovIDAsIDE0LCAyLCAxMSwgMSwgMTEsIDQsIDExLCA3LCA0LCAwLAorICAvKiA0MzczICovIDAsIDE0LCAyLCAyLCAxMSwgNCwgMTEsIDcsIDQsIDAsCisgIC8qIDQzODMgKi8gMCwgMTQsIDIsIDExLCAxLCAxMSwgNSwgMTEsIDcsIDQsIDAsCisgIC8qIDQzOTQgKi8gMCwgMTQsIDIsIDIsIDExLCA1LCAxMSwgNywgNCwgMCwKKyAgLyogNDQwNCAqLyAwLCAxNCwgMiwgMTIsIDEsIDEyLCA0LCAxMiwgNywgNCwgMCwKKyAgLyogNDQxNSAqLyAwLCAxNCwgMiwgMywgMTIsIDQsIDEyLCA3LCA0LCAwLAorICAvKiA0NDI1ICovIDEyLCA3LCAxMiwgNywgMTIsIDcsIDEyLCA3LCA0LCAwLAorICAvKiA0NDM1ICovIDIxLCA5LCA1LCA0LCA5LCA4LCA0LCAwLAorICAvKiA0NDQzICovIDAsIDE0LCAyLCA5LCAxLCAxMCwgNCwgOSwgOCwgNCwgMCwKKyAgLyogNDQ1NCAqLyAwLCAxNCwgMiwgMiwgMTAsIDQsIDksIDgsIDQsIDAsCisgIC8qIDQ0NjQgKi8gMCwgMTQsIDIsIDksIDEsIDksIDUsIDksIDgsIDQsIDAsCisgIC8qIDQ0NzUgKi8gMCwgMTQsIDIsIDIsIDksIDUsIDksIDgsIDQsIDAsCisgIC8qIDQ0ODUgKi8gMCwgMTQsIDIsIDEwLCAxLCAxMCwgNCwgMTAsIDgsIDQsIDAsCisgIC8qIDQ0OTYgKi8gMCwgMTQsIDIsIDIsIDEwLCA0LCAxMCwgOCwgNCwgMCwKKyAgLyogNDUwNiAqLyAwLCAxNCwgMiwgMTAsIDEsIDEwLCA1LCAxMCwgOCwgNCwgMCwKKyAgLyogNDUxNyAqLyAwLCAxNCwgMiwgMiwgMTAsIDUsIDEwLCA4LCA0LCAwLAorICAvKiA0NTI3ICovIDAsIDE0LCAyLCAxMSwgMSwgMTEsIDQsIDExLCA4LCA0LCAwLAorICAvKiA0NTM4ICovIDAsIDE0LCAyLCAyLCAxMSwgNCwgMTEsIDgsIDQsIDAsCisgIC8qIDQ1NDggKi8gMCwgMTQsIDIsIDExLCAxLCAxMSwgNSwgMTEsIDgsIDQsIDAsCisgIC8qIDQ1NTkgKi8gMCwgMTQsIDIsIDIsIDExLCA1LCAxMSwgOCwgNCwgMCwKKyAgLyogNDU2OSAqLyAxMSwgOCwgMTEsIDgsIDExLCA4LCAxMSwgOCwgNCwgMCwKKyAgLyogNDU3OSAqLyAyMSwgMTAsIDQsIDQsIDEwLCA0LCAwLAorICAvKiA0NTg2ICovIDIxLCAxMSwgMywgNCwgMTAsIDQsIDEwLCA0LCAwLAorICAvKiA0NTk1ICovIDIxLCAxMCwgNCwgNCwgMTAsIDQsIDEwLCA0LCAwLAorICAvKiA0NjA0ICovIDAsIDE1LCA0LCAxNSwgMTEsIDE1LCAxMSwgMTUsIDExLCA0LCAwLAorICAvKiA0NjE1ICovIDAsIDE1LCA0LCAxNSwgMTEsIDE1LCAxMSwgMTUsIDExLCAxNSwgMTEsIDQsIDAsCisgIC8qIDQ2MjggKi8gMTIsIDQsIDM2LCAxLCAxMiwgNCwgMCwKKyAgLyogNDYzNSAqLyAwLCAzNiwgMSwgMTQsIDIsIDEyLCA0LCAwLAorICAvKiA0NjQzICovIDAsIDE0LCAyLCAzNiwgMSwgNCwgNCwgMTIsIDQsIDAsCisgIC8qIDQ2NTMgKi8gMzYsIDEsIDM2LCAxLCAxMiwgNCwgMTIsIDQsIDAsCisgIC8qIDQ2NjIgKi8gMTIsIDQsIDM2LCAxLCAxMiwgNCwgMTIsIDQsIDAsCisgIC8qIDQ2NzEgKi8gMTMsIDQsIDM2LCAxLCAxMiwgNCwgMTIsIDQsIDAsCisgIC8qIDQ2ODAgKi8gMCwgMzYsIDEsIDQsIDQsIDEyLCA0LCAxMiwgNCwgMCwKKyAgLyogNDY5MCAqLyAwLCAzNiwgMSwgNCwgNCwgMTMsIDQsIDEyLCA0LCAwLAorICAvKiA0NzAwICovIDIzLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDEyLCA0LCAwLAorICAvKiA0NzEzICovIDIyLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMTIsIDQsIDAsCisgIC8qIDQ3MjQgKi8gMjEsIDE1LCAzLCAxNSwgMywgMTUsIDEyLCA0LCAwLAorICAvKiA0NzMzICovIDEzLCA0LCAzNywgMSwgMTMsIDQsIDAsCisgIC8qIDQ3NDAgKi8gMCwgMzcsIDEsIDE0LCAyLCAxMywgNCwgMCwKKyAgLyogNDc0OCAqLyAwLCAxNCwgMiwgMzYsIDEsIDQsIDQsIDEzLCA0LCAwLAorICAvKiA0NzU4ICovIDAsIDE0LCAyLCAzNywgMSwgNCwgNCwgMTMsIDQsIDAsCisgIC8qIDQ3NjggKi8gMzcsIDEsIDM3LCAxLCAxMywgNCwgMTMsIDQsIDAsCisgIC8qIDQ3NzcgKi8gMTMsIDQsIDM3LCAxLCAxMywgNCwgMTMsIDQsIDAsCisgIC8qIDQ3ODYgKi8gMTYsIDQsIDM3LCAxLCAxMywgNCwgMTMsIDQsIDAsCisgIC8qIDQ3OTUgKi8gMCwgMzcsIDEsIDQsIDQsIDEzLCA0LCAxMywgNCwgMCwKKyAgLyogNDgwNSAqLyAxNiwgNCwgMTYsIDQsIDEzLCA0LCAxMywgNCwgMCwKKyAgLyogNDgxNCAqLyAwLCA0LCA0LCAxNiwgNCwgMTMsIDQsIDAsCisgIC8qIDQ4MjIgKi8gMCwgMzcsIDEsIDQsIDQsIDE2LCA0LCAxMywgNCwgMCwKKyAgLyogNDgzMiAqLyAxNiwgNCwgMTYsIDQsIDEzLCA0LCAwLAorICAvKiA0ODM5ICovIDAsIDE0LCAyMCwgNSwgMTUsIDQsIDAsCisgIC8qIDQ4NDYgKi8gNDAsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDksIDYsIDE1LCA0LCAwLAorICAvKiA0ODY2ICovIDIzLCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCAxNSwgNCwgMCwKKyAgLyogNDg3OCAqLyA0MCwgNywgNywgNywgNywgNywgNywgNywgNywgMTUsIDQsIDAsCisgIC8qIDQ4OTAgKi8gNSwgMTksIDE1LCA0LCAwLAorICAvKiA0ODk1ICovIDAsIDE0LCAyLCAzNywgMSwgNCwgNCwgMTYsIDQsIDAsCisgIC8qIDQ5MDUgKi8gMCwgMTQsIDIsIDQsIDQsIDE2LCA0LCAwLAorICAvKiA0OTEzICovIDEzLCA0LCAxNiwgNCwgMCwKKyAgLyogNDkxOCAqLyAxNiwgNCwgMTYsIDQsIDE2LCA0LCAwLAorICAvKiA0OTI1ICovIDQsIDE3LCA0LCAwLAorICAvKiA0OTI5ICovIDAsIDE1LCA0LCAxNSwgMTIsIDE1LCAxNywgNCwgMCwKKyAgLyogNDkzOCAqLyAxNywgMTcsIDQsIDAsCisgIC8qIDQ5NDIgKi8gMCwgMTgsIDQsIDAsCisgIC8qIDQ5NDYgKi8gMjEsIDUsIDEsIDQsIDUsIDAsCisgIC8qIDQ5NTIgKi8gMTYsIDQsIDE2LCA0LCAxMywgNCwgNSwgMCwKKyAgLyogNDk2MCAqLyAyMSwgMSwgNSwgNSwgMCwKKyAgLyogNDk2NSAqLyAyMSwgMiwgNSwgMiwgNSwgNSwgMCwKKyAgLyogNDk3MiAqLyAyMSwgNSwgNCwgNSwgNSwgMCwKKyAgLyogNDk3OCAqLyAyMSwgNSwgNCwgNSwgNSwgNSwgMCwKKyAgLyogNDk4NSAqLyAyMSwgMTAsIDQsIDQsIDksIDUsIDksIDUsIDAsCisgIC8qIDQ5OTQgKi8gMjEsIDksIDUsIDQsIDksIDUsIDksIDUsIDAsCisgIC8qIDUwMDMgKi8gNDEsIDQxLCA1LCAwLAorICAvKiA1MDA3ICovIDAsIDE1LCA0LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCAwLAorICAvKiA1MDE5ICovIDIzLCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCAwLAorICAvKiA1MDY5ICovIDQwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCAwLAorICAvKiA1MTE5ICovIDIzLCA0LCA0LCA0LCA0LCA1LCA0LCA3LCAwLAorICAvKiA1MTI4ICovIDIzLCA0LCA0LCA0LCA0LCA1LCA1LCA0LCA3LCAwLAorICAvKiA1MTM4ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA1LCA0LCA3LCAwLAorICAvKiA1MTQ4ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA0LCA3LCAwLAorICAvKiA1MTU3ICovIDIxLCA3LCA0LCA3LCAwLAorICAvKiA1MTYyICovIDIzLCA0LCA0LCA0LCA0LCA1LCA3LCAwLAorICAvKiA1MTcwICovIDIzLCA0LCA0LCA0LCA0LCA1LCA1LCA3LCAwLAorICAvKiA1MTc5ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA1LCA3LCAwLAorICAvKiA1MTg4ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA3LCAwLAorICAvKiA1MTk2ICovIDIzLCA0LCA0LCA0LCA0LCA1LCA0LCA3LCA3LCAwLAorICAvKiA1MjA2ICovIDIzLCA0LCA0LCA0LCA0LCA1LCA1LCA0LCA3LCA3LCAwLAorICAvKiA1MjE3ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA1LCA0LCA3LCA3LCAwLAorICAvKiA1MjI4ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA0LCA3LCA3LCAwLAorICAvKiA1MjM4ICovIDIxLCA3LCA0LCA3LCA3LCAwLAorICAvKiA1MjQ0ICovIDIzLCA0LCA0LCA0LCA0LCA1LCA3LCA3LCAwLAorICAvKiA1MjUzICovIDIzLCA0LCA0LCA0LCA0LCA1LCA1LCA3LCA3LCAwLAorICAvKiA1MjYzICovIDIzLCA3LCA3LCA3LCA3LCA1LCA1LCA3LCA3LCAwLAorICAvKiA1MjczICovIDIzLCA3LCA3LCA3LCA3LCA1LCA3LCA3LCAwLAorICAvKiA1MjgyICovIDIzLCA0LCA0LCA0LCA0LCA1LCA0LCA3LCA3LCA3LCAwLAorICAvKiA1MjkzICovIDIzLCA0LCA0LCA0LCA0LCA1LCA1LCA0LCA3LCA3LCA3LCAwLAorICAvKiA1MzA1ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA1LCA0LCA3LCA3LCA3LCAwLAorICAvKiA1MzE3ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA0LCA3LCA3LCA3LCAwLAorICAvKiA1MzI4ICovIDIzLCA0LCA0LCA0LCA0LCA1LCA3LCA3LCA3LCAwLAorICAvKiA1MzM4ICovIDIzLCA0LCA0LCA0LCA0LCA1LCA1LCA3LCA3LCA3LCAwLAorICAvKiA1MzQ5ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA1LCA3LCA3LCA3LCAwLAorICAvKiA1MzYwICovIDIzLCA3LCA3LCA3LCA3LCA1LCA3LCA3LCA3LCAwLAorICAvKiA1MzcwICovIDIzLCA0LCA0LCA0LCA0LCA1LCA0LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1MzgyICovIDIzLCA0LCA0LCA0LCA0LCA1LCA1LCA0LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1Mzk1ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA1LCA0LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NDA4ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA0LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NDIwICovIDIzLCA0LCA0LCA0LCA0LCA1LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NDMxICovIDIzLCA0LCA0LCA0LCA0LCA1LCA1LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NDQzICovIDIzLCA3LCA3LCA3LCA3LCA1LCA1LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NDU1ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NDY2ICovIDIzLCA0LCA0LCA0LCA0LCA1LCA0LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NDgwICovIDIzLCA0LCA0LCA0LCA0LCA1LCA1LCA0LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NDk1ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA1LCA0LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NTEwICovIDIzLCA3LCA3LCA3LCA3LCA1LCA0LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NTI0ICovIDIzLCA0LCA0LCA0LCA0LCA1LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NTM3ICovIDIzLCA0LCA0LCA0LCA0LCA1LCA1LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NTUxICovIDIzLCA3LCA3LCA3LCA3LCA1LCA1LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NTY1ICovIDIzLCA3LCA3LCA3LCA3LCA1LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NTc4ICovIDAsIDE1LCA0LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NTkwICovIDIzLCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NjQwICovIDQwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA5LCA2LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NjkwICovIDIzLCA0LCA0LCA0LCA0LCA1LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NzA2ICovIDIzLCA0LCA0LCA0LCA0LCA1LCA1LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NzIzICovIDIzLCA3LCA3LCA3LCA3LCA1LCA1LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NzQwICovIDIzLCA3LCA3LCA3LCA3LCA1LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLAorICAvKiA1NzU2ICovIDIxLCAxMCwgNCwgNCwgMTAsIDcsIDEwLCA3LCAwLAorICAvKiA1NzY1ICovIDE3LCAxMCwgNywgMCwKKyAgLyogNTc2OSAqLyA5LCA4LCA5LCA4LCA5LCA1LCA5LCA4LCAwLAorICAvKiA1Nzc4ICovIDIxLCA5LCA1LCA0LCA5LCA4LCA5LCA4LCAwLAorICAvKiA1Nzg3ICovIDksIDgsIDksIDgsIDksIDgsIDksIDgsIDAsCisgIC8qIDU3OTYgKi8gMTcsIDksIDgsIDAsCisgIC8qIDU4MDAgKi8gMTAsIDgsIDEwLCA4LCAxMCwgNSwgMTAsIDgsIDAsCisgIC8qIDU4MDkgKi8gMTAsIDgsIDEwLCA4LCAxMCwgOCwgMTAsIDgsIDAsCisgIC8qIDU4MTggKi8gMTEsIDgsIDExLCA4LCAxMSwgNSwgMTEsIDgsIDAsCisgIC8qIDU4MjcgKi8gMTUsIDMsIDE1LCAzLCAxNSwgMTEsIDE1LCAxMSwgMCwKKyAgLyogNTgzNiAqLyAwLCAxNSwgNCwgMTUsIDExLCAxNSwgMTEsIDE1LCAxMSwgMCwKKyAgLyogNTg0NiAqLyAwLCAxNSwgNCwgMTUsIDExLCAxNSwgMTEsIDE1LCAxMSwgMTUsIDExLCAwLAorICAvKiA1ODU4ICovIDAsIDE1LCAzLCAxNSwgMywgMTUsIDMsIDE1LCAxMiwgMCwKKyAgLyogNTg2OCAqLyAwLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDEyLCAwLAorICAvKiA1ODgwICovIDIzLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDEyLCAwLAorICAvKiA1ODkyICovIDIyLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMTIsIDAsCisgIC8qIDU5MDIgKi8gMjEsIDE1LCAzLCAxNSwgMywgMTUsIDEyLCAwLAorICAvKiA1OTEwICovIDAsIDE1LCAzLCAxNSwgMywgNSwgMTUsIDEyLCAwLAorICAvKiA1OTE5ICovIDAsIDE1LCAzLCAxNSwgMywgMTUsIDMsIDUsIDE1LCAxMiwgMCwKKyAgLyogNTkzMCAqLyAwLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgNSwgMTUsIDEyLCAwLAorICAvKiA1OTQzICovIDIzLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDMsIDUsIDE1LCAxMiwgMCwKKyAgLyogNTk2NCAqLyAyMiwgMTUsIDMsIDE1LCAzLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgNSwgMTUsIDEyLCAwLAorICAvKiA1OTgxICovIDIxLCAxNSwgMywgMTUsIDMsIDE1LCAzLCAxNSwgMywgNSwgMTUsIDEyLCAwLAorICAvKiA1OTk0ICovIDQsIDE3LCAwLAorICAvKiA1OTk3ICovIDEwLCA3LCAxMCwgNywgMTcsIDAsCisgIC8qIDYwMDMgKi8gOSwgOCwgMTcsIDAsCisgIC8qIDYwMDcgKi8gMCwgMTQsIDE3LCAxNywgMCwKKyAgLyogNjAxMiAqLyAxNywgMTcsIDE3LCAwLAorICAvKiA2MDE2ICovIDE1LCAwLCAxOCwgMCwKKyAgLyogNjAyMCAqLyAxLCAxOCwgMCwKKyAgLyogNjAyMyAqLyAxNCwgMiwgMTgsIDAsCisgIC8qIDYwMjcgKi8gMTUsIDQsIDE4LCAwLAorICAvKiA2MDMxICovIDAsIDE5LCAwLAorICAvKiA2MDM0ICovIDE1LCAxLCAxOSwgMCwKKyAgLyogNjAzOCAqLyAxLCAxNCwgMiwgMTksIDAsCisgIC8qIDYwNDMgKi8gMjEsIDE0LCAyLCAxLCAxNCwgMiwgNCwgMTksIDAsCisgIC8qIDYwNTIgKi8gMTUsIDIsIDE1LCAxMCwgMTUsIDE5LCAwLAorICAvKiA2MDU5ICovIDE1LCAyLCAxNSwgMiwgMTUsIDIsIDE1LCAyLCAxOSwgMTksIDAsCisgIC8qIDYwNzAgKi8gMTUsIDIsIDE1LCAyLCA0LCAxOSwgMTksIDAsCisgIC8qIDYwNzggKi8gMCwgMTksIDE5LCAxOSwgMCwKKyAgLyogNjA4MyAqLyAxNSwgMCwgMjksIDAsCisgIC8qIDYwODcgKi8gMCwgMSwgMjksIDAsCisgIC8qIDYwOTEgKi8gMCwgNSwgNCwgMTQsIDIsIDQsIDI5LCAwLAorICAvKiA2MDk5ICovIDUsIDUsIDQsIDE0LCAyLCA0LCAyOSwgMCwKKyAgLyogNjEwNyAqLyAxOCwgNSwgNCwgMTUsIDQsIDQsIDQsIDI5LCAwLAorICAvKiA2MTE2ICovIDAsIDUsIDQsIDI5LCAwLAorICAvKiA2MTIxICovIDI4LCAzNSwgMjgsIDM1LCAyOCwgMzUsIDI4LCAzNSwgMCwKKyAgLyogNjEzMCAqLyA1LCA0MSwgMCwKKyAgLyogNjEzMyAqLyA4LCA0MSwgMCwKKyAgLyogNjEzNiAqLyA0MSwgNDEsIDQxLCA0MSwgMCwKICAgMjU1CiB9OwogCkBAIC05MDIyLDYgKzkwOTUsNyBAQAogICAgIDMsIC8vIGxsdm0uZWguZHdhcmYuY2ZhCiAgICAgMSwgLy8gbGx2bS5laC5leGNlcHRpb25jb2RlCiAgICAgMSwgLy8gbGx2bS5laC5leGNlcHRpb25wb2ludGVyCisgICAgMSwgLy8gbGx2bS5laC5yZWNvdmVyZnAKICAgICAzLCAvLyBsbHZtLmVoLnJldHVybi5pMzIKICAgICAzLCAvLyBsbHZtLmVoLnJldHVybi5pNjQKICAgICAxLCAvLyBsbHZtLmVoLnNqbGouY2FsbHNpdGUKQEAgLTkwMzUsMTEgKzkxMDksMTMgQEAKICAgICA0LCAvLyBsbHZtLmV4cAogICAgIDQsIC8vIGxsdm0uZXhwMgogICAgIDEsIC8vIGxsdm0uZXhwZWN0CisgICAgMTUsIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLmNlaWwKICAgICAxNSwgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQuY29zCiAgICAgMTUsIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLmV4cAogICAgIDE1LCAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5leHAyCiAgICAgMTUsIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLmZhZGQKICAgICAxNSwgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQuZmRpdgorICAgIDE1LCAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5mbG9vcgogICAgIDE1LCAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5mbWEKICAgICAxNSwgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQuZm11bAogICAgIDE1LCAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5mcmVtCkBAIC05MDQ3LDEyICs5MTIzLDE2IEBACiAgICAgMTUsIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLmxvZwogICAgIDE1LCAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5sb2cxMAogICAgIDE1LCAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5sb2cyCisgICAgMTUsIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLm1heG51bQorICAgIDE1LCAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5taW5udW0KICAgICAxNSwgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQubmVhcmJ5aW50CiAgICAgMTUsIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLnBvdwogICAgIDE1LCAvLyBsbHZtLmV4cGVyaW1lbnRhbC5jb25zdHJhaW5lZC5wb3dpCiAgICAgMTUsIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLnJpbnQKKyAgICAxNSwgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQucm91bmQKICAgICAxNSwgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQuc2luCiAgICAgMTUsIC8vIGxsdm0uZXhwZXJpbWVudGFsLmNvbnN0cmFpbmVkLnNxcnQKKyAgICAxNSwgLy8gbGx2bS5leHBlcmltZW50YWwuY29uc3RyYWluZWQudHJ1bmMKICAgICA3LCAvLyBsbHZtLmV4cGVyaW1lbnRhbC5kZW9wdGltaXplCiAgICAgMTYsIC8vIGxsdm0uZXhwZXJpbWVudGFsLmdjLnJlbG9jYXRlCiAgICAgMTYsIC8vIGxsdm0uZXhwZXJpbWVudGFsLmdjLnJlc3VsdApAQCAtOTA3NCw2ICs5MTU0LDcgQEAKICAgICAxLCAvLyBsbHZtLmV4cGVyaW1lbnRhbC52ZWN0b3IucmVkdWNlLnVtYXgKICAgICAxLCAvLyBsbHZtLmV4cGVyaW1lbnRhbC52ZWN0b3IucmVkdWNlLnVtaW4KICAgICAxLCAvLyBsbHZtLmV4cGVyaW1lbnRhbC52ZWN0b3IucmVkdWNlLnhvcgorICAgIDE1LCAvLyBsbHZtLmV4cGVyaW1lbnRhbC53aWRlbmFibGUuY29uZGl0aW9uCiAgICAgNCwgLy8gbGx2bS5mYWJzCiAgICAgNCwgLy8gbGx2bS5mbG9vcgogICAgIDMsIC8vIGxsdm0uZmx0LnJvdW5kcwpAQCAtOTA4Niw2ICs5MTY3LDcgQEAKICAgICAzLCAvLyBsbHZtLmdjcm9vdAogICAgIDE3LCAvLyBsbHZtLmdjd3JpdGUKICAgICAzLCAvLyBsbHZtLmdldC5keW5hbWljLmFyZWEub2Zmc2V0CisgICAgMTUsIC8vIGxsdm0uaHdhc2FuLmNoZWNrLm1lbWFjY2VzcwogICAgIDMsIC8vIGxsdm0uaWNhbGwuYnJhbmNoLmZ1bm5lbAogICAgIDE4LCAvLyBsbHZtLmluaXQudHJhbXBvbGluZQogICAgIDMsIC8vIGxsdm0uaW5zdHJwcm9mLmluY3JlbWVudApAQCAtOTA5Myw2ICs5MTc1LDcgQEAKICAgICAzLCAvLyBsbHZtLmluc3RycHJvZi52YWx1ZS5wcm9maWxlCiAgICAgMTksIC8vIGxsdm0uaW52YXJpYW50LmVuZAogICAgIDIwLCAvLyBsbHZtLmludmFyaWFudC5zdGFydAorICAgIDEsIC8vIGxsdm0uaXMuY29uc3RhbnQKICAgICAyMSwgLy8gbGx2bS5sYXVuZGVyLmludmFyaWFudC5ncm91cAogICAgIDIwLCAvLyBsbHZtLmxpZmV0aW1lLmVuZAogICAgIDIwLCAvLyBsbHZtLmxpZmV0aW1lLnN0YXJ0CkBAIC05MTEwLDYgKzkxOTMsNyBAQAogICAgIDIsIC8vIGxsdm0ubWFza2VkLmxvYWQKICAgICAzLCAvLyBsbHZtLm1hc2tlZC5zY2F0dGVyCiAgICAgMjIsIC8vIGxsdm0ubWFza2VkLnN0b3JlCisgICAgNCwgLy8gbGx2bS5tYXhpbXVtCiAgICAgNCwgLy8gbGx2bS5tYXhudW0KICAgICAyMywgLy8gbGx2bS5tZW1jcHkKICAgICAyMywgLy8gbGx2bS5tZW1jcHkuZWxlbWVudC51bm9yZGVyZWQuYXRvbWljCkBAIC05MTE3LDggKzkyMDEsMzkgQEAKICAgICAyMywgLy8gbGx2bS5tZW1tb3ZlLmVsZW1lbnQudW5vcmRlcmVkLmF0b21pYwogICAgIDI1LCAvLyBsbHZtLm1lbXNldAogICAgIDI1LCAvLyBsbHZtLm1lbXNldC5lbGVtZW50LnVub3JkZXJlZC5hdG9taWMKKyAgICA0LCAvLyBsbHZtLm1pbmltdW0KICAgICA0LCAvLyBsbHZtLm1pbm51bQogICAgIDQsIC8vIGxsdm0ubmVhcmJ5aW50CisgICAgMywgLy8gbGx2bS5vYmpjLmFyYy5hbm5vdGF0aW9uLmJvdHRvbXVwLmJiZW5kCisgICAgMywgLy8gbGx2bS5vYmpjLmFyYy5hbm5vdGF0aW9uLmJvdHRvbXVwLmJic3RhcnQKKyAgICAzLCAvLyBsbHZtLm9iamMuYXJjLmFubm90YXRpb24udG9wZG93bi5iYmVuZAorICAgIDMsIC8vIGxsdm0ub2JqYy5hcmMuYW5ub3RhdGlvbi50b3Bkb3duLmJic3RhcnQKKyAgICAzLCAvLyBsbHZtLm9iamMuYXV0b3JlbGVhc2UKKyAgICAzLCAvLyBsbHZtLm9iamMuYXV0b3JlbGVhc2VQb29sUG9wCisgICAgMywgLy8gbGx2bS5vYmpjLmF1dG9yZWxlYXNlUG9vbFB1c2gKKyAgICAzLCAvLyBsbHZtLm9iamMuYXV0b3JlbGVhc2VSZXR1cm5WYWx1ZQorICAgIDMsIC8vIGxsdm0ub2JqYy5jbGFuZy5hcmMudXNlCisgICAgMywgLy8gbGx2bS5vYmpjLmNvcHlXZWFrCisgICAgMywgLy8gbGx2bS5vYmpjLmRlc3Ryb3lXZWFrCisgICAgMywgLy8gbGx2bS5vYmpjLmluaXRXZWFrCisgICAgMywgLy8gbGx2bS5vYmpjLmxvYWRXZWFrCisgICAgMywgLy8gbGx2bS5vYmpjLmxvYWRXZWFrUmV0YWluZWQKKyAgICAzLCAvLyBsbHZtLm9iamMubW92ZVdlYWsKKyAgICAzLCAvLyBsbHZtLm9iamMucmVsZWFzZQorICAgIDMsIC8vIGxsdm0ub2JqYy5yZXRhaW4KKyAgICAzLCAvLyBsbHZtLm9iamMucmV0YWluLmF1dG9yZWxlYXNlCisgICAgMywgLy8gbGx2bS5vYmpjLnJldGFpbkF1dG9yZWxlYXNlCisgICAgMywgLy8gbGx2bS5vYmpjLnJldGFpbkF1dG9yZWxlYXNlUmV0dXJuVmFsdWUKKyAgICAzLCAvLyBsbHZtLm9iamMucmV0YWluQXV0b3JlbGVhc2VkUmV0dXJuVmFsdWUKKyAgICAzLCAvLyBsbHZtLm9iamMucmV0YWluQmxvY2sKKyAgICAzLCAvLyBsbHZtLm9iamMucmV0YWluZWRPYmplY3QKKyAgICAzLCAvLyBsbHZtLm9iamMuc3RvcmVTdHJvbmcKKyAgICAzLCAvLyBsbHZtLm9iamMuc3RvcmVXZWFrCisgICAgMywgLy8gbGx2bS5vYmpjLnN5bmMuZW50ZXIKKyAgICAzLCAvLyBsbHZtLm9iamMuc3luYy5leGl0CisgICAgMywgLy8gbGx2bS5vYmpjLnVucmV0YWluZWRPYmplY3QKKyAgICAzLCAvLyBsbHZtLm9iamMudW5yZXRhaW5lZFBvaW50ZXIKKyAgICAzLCAvLyBsbHZtLm9iamMudW5zYWZlQ2xhaW1BdXRvcmVsZWFzZWRSZXR1cm5WYWx1ZQogICAgIDQsIC8vIGxsdm0ub2JqZWN0c2l6ZQogICAgIDMsIC8vIGxsdm0ucGNtYXJrZXIKICAgICA0LCAvLyBsbHZtLnBvdwpAQCAtOTEzMCwxNSArOTI0NSwxOSBAQAogICAgIDEsIC8vIGxsdm0ucmV0dXJuYWRkcmVzcwogICAgIDQsIC8vIGxsdm0ucmludAogICAgIDQsIC8vIGxsdm0ucm91bmQKKyAgICA0LCAvLyBsbHZtLnNhZGQuc2F0CiAgICAgNCwgLy8gbGx2bS5zYWRkLndpdGgub3ZlcmZsb3cKICAgICAzLCAvLyBsbHZtLnNldGptcAogICAgIDE1LCAvLyBsbHZtLnNpZGVlZmZlY3QKICAgICAxNCwgLy8gbGx2bS5zaWdsb25nam1wCiAgICAgMywgLy8gbGx2bS5zaWdzZXRqbXAKICAgICA0LCAvLyBsbHZtLnNpbgorICAgIDQsIC8vIGxsdm0uc211bC5maXgKICAgICA0LCAvLyBsbHZtLnNtdWwud2l0aC5vdmVyZmxvdworICAgIDEsIC8vIGxsdm0uc3BvbmVudHJ5CiAgICAgNCwgLy8gbGx2bS5zcXJ0CiAgICAgMjcsIC8vIGxsdm0uc3NhLmNvcHkKKyAgICA0LCAvLyBsbHZtLnNzdWIuc2F0CiAgICAgNCwgLy8gbGx2bS5zc3ViLndpdGgub3ZlcmZsb3cKICAgICAzLCAvLyBsbHZtLnN0YWNrZ3VhcmQKICAgICAzLCAvLyBsbHZtLnN0YWNrcHJvdGVjdG9yCkBAIC05MTQ2LDIwICs5MjY1LDIzIEBACiAgICAgMywgLy8gbGx2bS5zdGFja3NhdmUKICAgICA0LCAvLyBsbHZtLnN0cmlwLmludmFyaWFudC5ncm91cAogICAgIDEsIC8vIGxsdm0udGhyZWFkLnBvaW50ZXIKLSAgICAxNCwgLy8gbGx2bS50cmFwCisgICAgMjgsIC8vIGxsdm0udHJhcAogICAgIDQsIC8vIGxsdm0udHJ1bmMKICAgICAxLCAvLyBsbHZtLnR5cGUuY2hlY2tlZC5sb2FkCiAgICAgMSwgLy8gbGx2bS50eXBlLnRlc3QKKyAgICA0LCAvLyBsbHZtLnVhZGQuc2F0CiAgICAgNCwgLy8gbGx2bS51YWRkLndpdGgub3ZlcmZsb3cKKyAgICA0LCAvLyBsbHZtLnVtdWwuZml4CiAgICAgNCwgLy8gbGx2bS51bXVsLndpdGgub3ZlcmZsb3cKKyAgICA0LCAvLyBsbHZtLnVzdWIuc2F0CiAgICAgNCwgLy8gbGx2bS51c3ViLndpdGgub3ZlcmZsb3cKICAgICAzLCAvLyBsbHZtLnZhX2NvcHkKICAgICAzLCAvLyBsbHZtLnZhX2VuZAogICAgIDMsIC8vIGxsdm0udmFfc3RhcnQKICAgICAzLCAvLyBsbHZtLnZhci5hbm5vdGF0aW9uCiAgICAgMywgLy8gbGx2bS53cml0ZV9yZWdpc3RlcgotICAgIDI4LCAvLyBsbHZtLnhyYXkuY3VzdG9tZXZlbnQKLSAgICAyOSwgLy8gbGx2bS54cmF5LnR5cGVkZXZlbnQKKyAgICAyOSwgLy8gbGx2bS54cmF5LmN1c3RvbWV2ZW50CisgICAgMzAsIC8vIGxsdm0ueHJheS50eXBlZGV2ZW50CiAgICAgMywgLy8gbGx2bS5hYXJjaDY0LmNscmV4CiAgICAgMSwgLy8gbGx2bS5hYXJjaDY0LmNyYzMyYgogICAgIDEsIC8vIGxsdm0uYWFyY2g2NC5jcmMzMmNiCkBAIC05MjIzLDYgKzkzNDUsMTAgQEAKICAgICAxLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5mbWlubm12CiAgICAgMSwgLy8gbGx2bS5hYXJjaDY0Lm5lb24uZm1pbnAKICAgICAxLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5mbWludgorICAgIDEsIC8vIGxsdm0uYWFyY2g2NC5uZW9uLmZtbGFsCisgICAgMSwgLy8gbGx2bS5hYXJjaDY0Lm5lb24uZm1sYWwyCisgICAgMSwgLy8gbGx2bS5hYXJjaDY0Lm5lb24uZm1sc2wKKyAgICAxLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5mbWxzbDIKICAgICAxLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5mbXVseAogICAgIDEsIC8vIGxsdm0uYWFyY2g2NC5uZW9uLmZyZWNwZQogICAgIDEsIC8vIGxsdm0uYWFyY2g2NC5uZW9uLmZyZWNwcwpAQCAtOTI4OSwxNCArOTQxNSwxNCBAQAogICAgIDEsIC8vIGxsdm0uYWFyY2g2NC5uZW9uLnNzaGwKICAgICAxLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5zc2hsbAogICAgIDE5LCAvLyBsbHZtLmFhcmNoNjQubmVvbi5zdDF4MgotICAgIDMwLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5zdDF4MwotICAgIDMxLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5zdDF4NAorICAgIDMxLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5zdDF4MworICAgIDMyLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5zdDF4NAogICAgIDE5LCAvLyBsbHZtLmFhcmNoNjQubmVvbi5zdDIKLSAgICAzMCwgLy8gbGx2bS5hYXJjaDY0Lm5lb24uc3QybGFuZQotICAgIDMwLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5zdDMKLSAgICAzMSwgLy8gbGx2bS5hYXJjaDY0Lm5lb24uc3QzbGFuZQotICAgIDMxLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5zdDQKLSAgICAzMiwgLy8gbGx2bS5hYXJjaDY0Lm5lb24uc3Q0bGFuZQorICAgIDMxLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5zdDJsYW5lCisgICAgMzEsIC8vIGxsdm0uYWFyY2g2NC5uZW9uLnN0MworICAgIDMyLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5zdDNsYW5lCisgICAgMzIsIC8vIGxsdm0uYWFyY2g2NC5uZW9uLnN0NAorICAgIDMzLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5zdDRsYW5lCiAgICAgMSwgLy8gbGx2bS5hYXJjaDY0Lm5lb24uc3ViaG4KICAgICAxLCAvLyBsbHZtLmFhcmNoNjQubmVvbi5zdXFhZGQKICAgICAxLCAvLyBsbHZtLmFhcmNoNjQubmVvbi50YmwxCkBAIC05MzQ3LDYgKzk0NzMsNyBAQAogICAgIDEsIC8vIGxsdm0uYWFyY2g2NC5zZGl2CiAgICAgMSwgLy8gbGx2bS5hYXJjaDY0LnNpc2QuZmFiZAogICAgIDEsIC8vIGxsdm0uYWFyY2g2NC5zaXNkLmZjdnR4bgorICAgIDMsIC8vIGxsdm0uYWFyY2g2NC5zcGFjZQogICAgIDMsIC8vIGxsdm0uYWFyY2g2NC5zdGx4cAogICAgIDMsIC8vIGxsdm0uYWFyY2g2NC5zdGx4cgogICAgIDMsIC8vIGxsdm0uYWFyY2g2NC5zdHhwCkBAIC05MzU2LDcgKzk0ODMsNiBAQAogICAgIDQsIC8vIGxsdm0uYW1kZ2NuLmFsaWduYnl0ZQogICAgIDE4LCAvLyBsbHZtLmFtZGdjbi5hdG9taWMuZGVjCiAgICAgMTgsIC8vIGxsdm0uYW1kZ2NuLmF0b21pYy5pbmMKLSAgICAzMywgLy8gbGx2bS5hbWRnY24uYnJlYWsKICAgICAzLCAvLyBsbHZtLmFtZGdjbi5idWZmZXIuYXRvbWljLmFkZAogICAgIDMsIC8vIGxsdm0uYW1kZ2NuLmJ1ZmZlci5hdG9taWMuYW5kCiAgICAgMywgLy8gbGx2bS5hbWRnY24uYnVmZmVyLmF0b21pYy5jbXBzd2FwCkBAIC05MzkyLDE4ICs5NTE4LDIxIEBACiAgICAgNCwgLy8gbGx2bS5hbWRnY24uZGl2LmZpeHVwCiAgICAgNCwgLy8gbGx2bS5hbWRnY24uZGl2LmZtYXMKICAgICA0LCAvLyBsbHZtLmFtZGdjbi5kaXYuc2NhbGUKLSAgICAzMywgLy8gbGx2bS5hbWRnY24uZHMuYnBlcm11dGUKKyAgICAzNSwgLy8gbGx2bS5hbWRnY24uZHMuYXBwZW5kCisgICAgMzYsIC8vIGxsdm0uYW1kZ2NuLmRzLmJwZXJtdXRlCisgICAgMzUsIC8vIGxsdm0uYW1kZ2NuLmRzLmNvbnN1bWUKICAgICAxOCwgLy8gbGx2bS5hbWRnY24uZHMuZmFkZAogICAgIDE4LCAvLyBsbHZtLmFtZGdjbi5kcy5mbWF4CiAgICAgMTgsIC8vIGxsdm0uYW1kZ2NuLmRzLmZtaW4KLSAgICAzMywgLy8gbGx2bS5hbWRnY24uZHMucGVybXV0ZQotICAgIDMzLCAvLyBsbHZtLmFtZGdjbi5kcy5zd2l6emxlCi0gICAgMzUsIC8vIGxsdm0uYW1kZ2NuLmVsc2UKLSAgICAzMywgLy8gbGx2bS5hbWRnY24uZWxzZS5icmVhawotICAgIDM1LCAvLyBsbHZtLmFtZGdjbi5lbmQuY2YKKyAgICAzNywgLy8gbGx2bS5hbWRnY24uZHMub3JkZXJlZC5hZGQKKyAgICAzNywgLy8gbGx2bS5hbWRnY24uZHMub3JkZXJlZC5zd2FwCisgICAgMzYsIC8vIGxsdm0uYW1kZ2NuLmRzLnBlcm11dGUKKyAgICAzNiwgLy8gbGx2bS5hbWRnY24uZHMuc3dpenpsZQorICAgIDM4LCAvLyBsbHZtLmFtZGdjbi5lbHNlCisgICAgMzgsIC8vIGxsdm0uYW1kZ2NuLmVuZC5jZgogICAgIDMsIC8vIGxsdm0uYW1kZ2NuLmV4cAogICAgIDMsIC8vIGxsdm0uYW1kZ2NuLmV4cC5jb21wcgotICAgIDMzLCAvLyBsbHZtLmFtZGdjbi5mY21wCisgICAgMzYsIC8vIGxsdm0uYW1kZ2NuLmZjbXAKICAgICA0LCAvLyBsbHZtLmFtZGdjbi5mZGl2LmZhc3QKICAgICA0LCAvLyBsbHZtLmFtZGdjbi5mZG90MgogICAgIDQsIC8vIGxsdm0uYW1kZ2NuLmZtYWQuZnR6CkBAIC05NDEzLDkgKzk1NDIsOSBAQAogICAgIDQsIC8vIGxsdm0uYW1kZ2NuLmZyZXhwLmV4cAogICAgIDQsIC8vIGxsdm0uYW1kZ2NuLmZyZXhwLm1hbnQKICAgICA0LCAvLyBsbHZtLmFtZGdjbi5ncm91cHN0YXRpY3NpemUKLSAgICAzMywgLy8gbGx2bS5hbWRnY24uaWNtcAotICAgIDM1LCAvLyBsbHZtLmFtZGdjbi5pZgotICAgIDMzLCAvLyBsbHZtLmFtZGdjbi5pZi5icmVhaworICAgIDM2LCAvLyBsbHZtLmFtZGdjbi5pY21wCisgICAgMzgsIC8vIGxsdm0uYW1kZ2NuLmlmCisgICAgMzYsIC8vIGxsdm0uYW1kZ2NuLmlmLmJyZWFrCiAgICAgMywgLy8gbGx2bS5hbWRnY24uaW1hZ2UuYXRvbWljLmFkZC4xZAogICAgIDMsIC8vIGxsdm0uYW1kZ2NuLmltYWdlLmF0b21pYy5hZGQuMWRhcnJheQogICAgIDMsIC8vIGxsdm0uYW1kZ2NuLmltYWdlLmF0b21pYy5hZGQuMmQKQEAgLTk4NzYsMjAgKzEwMDA1LDIyIEBACiAgICAgMzQsIC8vIGxsdm0uYW1kZ2NuLmltYWdlLnN0b3JlLm1pcC5jdWJlCiAgICAgNCwgLy8gbGx2bS5hbWRnY24uaW1wbGljaXQuYnVmZmVyLnB0cgogICAgIDQsIC8vIGxsdm0uYW1kZ2NuLmltcGxpY2l0YXJnLnB0cgotICAgIDM1LCAvLyBsbHZtLmFtZGdjbi5pbml0LmV4ZWMKLSAgICAzNSwgLy8gbGx2bS5hbWRnY24uaW5pdC5leGVjLmZyb20uaW5wdXQKKyAgICAzOCwgLy8gbGx2bS5hbWRnY24uaW5pdC5leGVjCisgICAgMzgsIC8vIGxsdm0uYW1kZ2NuLmluaXQuZXhlYy5mcm9tLmlucHV0CiAgICAgNCwgLy8gbGx2bS5hbWRnY24uaW50ZXJwLm1vdgogICAgIDQsIC8vIGxsdm0uYW1kZ2NuLmludGVycC5wMQorICAgIDQsIC8vIGxsdm0uYW1kZ2NuLmludGVycC5wMS5mMTYKICAgICA0LCAvLyBsbHZtLmFtZGdjbi5pbnRlcnAucDIKKyAgICA0LCAvLyBsbHZtLmFtZGdjbi5pbnRlcnAucDIuZjE2CiAgICAgNCwgLy8gbGx2bS5hbWRnY24ua2VybmFyZy5zZWdtZW50LnB0cgogICAgIDMsIC8vIGxsdm0uYW1kZ2NuLmtpbGwKICAgICA0LCAvLyBsbHZtLmFtZGdjbi5sZGV4cAogICAgIDQsIC8vIGxsdm0uYW1kZ2NuLmxlcnAKICAgICA0LCAvLyBsbHZtLmFtZGdjbi5sb2cuY2xhbXAKLSAgICAzNSwgLy8gbGx2bS5hbWRnY24ubG9vcAorICAgIDM4LCAvLyBsbHZtLmFtZGdjbi5sb29wCiAgICAgMSwgLy8gbGx2bS5hbWRnY24ubWJjbnQuaGkKICAgICAxLCAvLyBsbHZtLmFtZGdjbi5tYmNudC5sbwotICAgIDMzLCAvLyBsbHZtLmFtZGdjbi5tb3YuZHBwCisgICAgMzYsIC8vIGxsdm0uYW1kZ2NuLm1vdi5kcHAKICAgICA0LCAvLyBsbHZtLmFtZGdjbi5tcXNhZC5way51MTYudTgKICAgICA0LCAvLyBsbHZtLmFtZGdjbi5tcXNhZC51MzIudTgKICAgICA0LCAvLyBsbHZtLmFtZGdjbi5tc2FkLnU4CkBAIC05OTE1LDEyICsxMDA0NiwxMiBAQAogICAgIDM0LCAvLyBsbHZtLmFtZGdjbi5yYXcudGJ1ZmZlci5zdG9yZQogICAgIDQsIC8vIGxsdm0uYW1kZ2NuLnJjcAogICAgIDQsIC8vIGxsdm0uYW1kZ2NuLnJjcC5sZWdhY3kKLSAgICAzMywgLy8gbGx2bS5hbWRnY24ucmVhZGZpcnN0bGFuZQotICAgIDMzLCAvLyBsbHZtLmFtZGdjbi5yZWFkbGFuZQorICAgIDM2LCAvLyBsbHZtLmFtZGdjbi5yZWFkZmlyc3RsYW5lCisgICAgMzYsIC8vIGxsdm0uYW1kZ2NuLnJlYWRsYW5lCiAgICAgNCwgLy8gbGx2bS5hbWRnY24ucnNxCiAgICAgNCwgLy8gbGx2bS5hbWRnY24ucnNxLmNsYW1wCiAgICAgNCwgLy8gbGx2bS5hbWRnY24ucnNxLmxlZ2FjeQotICAgIDM1LCAvLyBsbHZtLmFtZGdjbi5zLmJhcnJpZXIKKyAgICAzOCwgLy8gbGx2bS5hbWRnY24ucy5iYXJyaWVyCiAgICAgMSwgLy8gbGx2bS5hbWRnY24ucy5idWZmZXIubG9hZAogICAgIDMsIC8vIGxsdm0uYW1kZ2NuLnMuZGNhY2hlLmludgogICAgIDMsIC8vIGxsdm0uYW1kZ2NuLnMuZGNhY2hlLmludi52b2wKQEAgLTk5MjgsNyArMTAwNTksNyBAQAogICAgIDMsIC8vIGxsdm0uYW1kZ2NuLnMuZGNhY2hlLndiLnZvbAogICAgIDMsIC8vIGxsdm0uYW1kZ2NuLnMuZGVjcGVyZmxldmVsCiAgICAgNCwgLy8gbGx2bS5hbWRnY24ucy5nZXRwYwotICAgIDM2LCAvLyBsbHZtLmFtZGdjbi5zLmdldHJlZworICAgIDM5LCAvLyBsbHZtLmFtZGdjbi5zLmdldHJlZwogICAgIDMsIC8vIGxsdm0uYW1kZ2NuLnMuaW5jcGVyZmxldmVsCiAgICAgMTYsIC8vIGxsdm0uYW1kZ2NuLnMubWVtcmVhbHRpbWUKICAgICAxNiwgLy8gbGx2bS5hbWRnY24ucy5tZW10aW1lCkBAIC05OTQzLDcgKzEwMDc0LDcgQEAKICAgICA0LCAvLyBsbHZtLmFtZGdjbi5zZG90MgogICAgIDQsIC8vIGxsdm0uYW1kZ2NuLnNkb3Q0CiAgICAgNCwgLy8gbGx2bS5hbWRnY24uc2RvdDgKLSAgICAzMywgLy8gbGx2bS5hbWRnY24uc2V0LmluYWN0aXZlCisgICAgMzYsIC8vIGxsdm0uYW1kZ2NuLnNldC5pbmFjdGl2ZQogICAgIDQsIC8vIGxsdm0uYW1kZ2NuLnNmZmJoCiAgICAgNCwgLy8gbGx2bS5hbWRnY24uc2luCiAgICAgMywgLy8gbGx2bS5hbWRnY24uc3RydWN0LmJ1ZmZlci5hdG9taWMuYWRkCkBAIC05OTcwLDkgKzEwMTAxLDkgQEAKICAgICA0LCAvLyBsbHZtLmFtZGdjbi51ZG90MgogICAgIDQsIC8vIGxsdm0uYW1kZ2NuLnVkb3Q0CiAgICAgNCwgLy8gbGx2bS5hbWRnY24udWRvdDgKLSAgICAzNSwgLy8gbGx2bS5hbWRnY24udW5yZWFjaGFibGUKLSAgICAzMywgLy8gbGx2bS5hbWRnY24udXBkYXRlLmRwcAotICAgIDM1LCAvLyBsbHZtLmFtZGdjbi53YXZlLmJhcnJpZXIKKyAgICAzOCwgLy8gbGx2bS5hbWRnY24udW5yZWFjaGFibGUKKyAgICAzNiwgLy8gbGx2bS5hbWRnY24udXBkYXRlLmRwcAorICAgIDM4LCAvLyBsbHZtLmFtZGdjbi53YXZlLmJhcnJpZXIKICAgICA0LCAvLyBsbHZtLmFtZGdjbi53b3JrZ3JvdXAuaWQueAogICAgIDQsIC8vIGxsdm0uYW1kZ2NuLndvcmtncm91cC5pZC55CiAgICAgNCwgLy8gbGx2bS5hbWRnY24ud29ya2dyb3VwLmlkLnoKQEAgLTk5ODAsOCArMTAxMTEsOCBAQAogICAgIDQsIC8vIGxsdm0uYW1kZ2NuLndvcmtpdGVtLmlkLnkKICAgICA0LCAvLyBsbHZtLmFtZGdjbi53b3JraXRlbS5pZC56CiAgICAgNCwgLy8gbGx2bS5hbWRnY24ud3FtCi0gICAgMzMsIC8vIGxsdm0uYW1kZ2NuLndxbS52b3RlCi0gICAgMzMsIC8vIGxsdm0uYW1kZ2NuLndyaXRlbGFuZQorICAgIDM2LCAvLyBsbHZtLmFtZGdjbi53cW0udm90ZQorICAgIDM2LCAvLyBsbHZtLmFtZGdjbi53cml0ZWxhbmUKICAgICA0LCAvLyBsbHZtLmFtZGdjbi53d20KICAgICAzLCAvLyBsbHZtLmFybS5jZHAKICAgICAzLCAvLyBsbHZtLmFybS5jZHAyCkBAIC0xMDI4Niw2ICsxMDQxNyw3IEBACiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkEyLm9yCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkEyLm9yaXIKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTIub3JwCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkEyLnB4b3JmCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkEyLnJvdW5kc2F0CiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkEyLnNhdAogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5BMi5zYXRiCkBAIC0xMDMyMiwxMCArMTA0NTQsMTIgQEAKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTIuc3h0aAogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5BMi5zeHR3CiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkEyLnRmcgorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5BMi50ZnJjcnIKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTIudGZyaWgKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTIudGZyaWwKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTIudGZycAogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5BMi50ZnJwaQorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5BMi50ZnJyY3IKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTIudGZyc2kKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTIudmFic2gKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTIudmFic2hzYXQKQEAgLTEwMzk0LDYgKzEwNTI4LDcgQEAKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTIueG9ycAogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5BMi56eHRiCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkEyLnp4dGgKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uQTQuYWRkcC5jCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkE0LmFuZG4KICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTQuYW5kbnAKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTQuYml0c3BsaXQKQEAgLTEwNDExLDYgKzEwNTQ2LDcgQEAKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTQuY21waGd0aQogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5BNC5jbXBoZ3R1CiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkE0LmNtcGhndHVpCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkE0LmNvbWJpbmVpaQogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5BNC5jb21iaW5laXIKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTQuY29tYmluZXJpCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkE0LmNyb3VuZC5yaQpAQCAtMTA0MjYsNiArMTA1NjIsOSBAQAogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5BNC5yb3VuZC5yaS5zYXQKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTQucm91bmQucnIKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTQucm91bmQucnIuc2F0CisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkE0LnN1YnAuYworICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5BNC50ZnJjcHAKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uQTQudGZycGNwCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkE0LnRsYm1hdGNoCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkE0LnZjbXBiZXEuYW55CiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkE0LnZjbXBiZXFpCkBAIC0xMDQ0Niw5ICsxMDU4NSwxMCBAQAogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5BNC52cm1pbnVoCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkE0LnZybWludXcKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQTQudnJtaW53CisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkE1LkFDUwogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5BNS52YWRkaHVicwogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5BNi52Y21wYmVxLm5vdGFueQotICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5BNi52Y21wYmVxLm5vdGFueS4xMjhCCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkE2LnZtaW51Yi5SZFAKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQzIuYWxsOAogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5DMi5hbmQKICAgICAxLCAvLyBsbHZtLmhleGFnb24uQzIuYW5kbgpAQCAtMTA1MjQsNTQgKzEwNjY0LDU4IEBACiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkYyLmNvbnYuc2Yydy5jaG9wCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkYyLmNvbnYudWQyZGYKICAgICAxLCAvLyBsbHZtLmhleGFnb24uRjIuY29udi51ZDJzZgotICAgIDM3LCAvLyBsbHZtLmhleGFnb24uRjIuY29udi51dzJkZgotICAgIDM3LCAvLyBsbHZtLmhleGFnb24uRjIuY29udi51dzJzZgotICAgIDM3LCAvLyBsbHZtLmhleGFnb24uRjIuY29udi53MmRmCi0gICAgMzcsIC8vIGxsdm0uaGV4YWdvbi5GMi5jb252Lncyc2YKLSAgICAzNywgLy8gbGx2bS5oZXhhZ29uLkYyLmRmY2xhc3MKLSAgICAzNywgLy8gbGx2bS5oZXhhZ29uLkYyLmRmY21wZXEKLSAgICAzNywgLy8gbGx2bS5oZXhhZ29uLkYyLmRmY21wZ2UKLSAgICAzNywgLy8gbGx2bS5oZXhhZ29uLkYyLmRmY21wZ3QKLSAgICAzNywgLy8gbGx2bS5oZXhhZ29uLkYyLmRmY21wdW8KLSAgICAzNywgLy8gbGx2bS5oZXhhZ29uLkYyLmRmaW1tLm4KLSAgICAzNywgLy8gbGx2bS5oZXhhZ29uLkYyLmRmaW1tLnAKLSAgICAzNywgLy8gbGx2bS5oZXhhZ29uLkYyLnNmYWRkCi0gICAgMzcsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmNsYXNzCi0gICAgMzcsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmNtcGVxCi0gICAgMzcsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmNtcGdlCi0gICAgMzcsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmNtcGd0Ci0gICAgMzcsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmNtcHVvCi0gICAgMzcsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmZpeHVwZAotICAgIDM3LCAvLyBsbHZtLmhleGFnb24uRjIuc2ZmaXh1cG4KLSAgICAxLCAvLyBsbHZtLmhleGFnb24uRjIuc2ZmaXh1cHIKLSAgICAzNywgLy8gbGx2bS5oZXhhZ29uLkYyLnNmZm1hCi0gICAgMzcsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmZtYS5saWIKLSAgICAzNywgLy8gbGx2bS5oZXhhZ29uLkYyLnNmZm1hLnNjCi0gICAgMzcsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmZtcwotICAgIDM3LCAvLyBsbHZtLmhleGFnb24uRjIuc2ZmbXMubGliCi0gICAgMzcsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmltbS5uCi0gICAgMzcsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmltbS5wCi0gICAgMzcsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZm1heAotICAgIDM3LCAvLyBsbHZtLmhleGFnb24uRjIuc2ZtaW4KLSAgICAzNywgLy8gbGx2bS5oZXhhZ29uLkYyLnNmbXB5Ci0gICAgMzcsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZnN1YgorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5GMi5jb252LnV3MmRmCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkYyLmNvbnYudXcyc2YKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uRjIuY29udi53MmRmCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkYyLmNvbnYudzJzZgorICAgIDQwLCAvLyBsbHZtLmhleGFnb24uRjIuZGZhZGQKKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLmRmY2xhc3MKKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLmRmY21wZXEKKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLmRmY21wZ2UKKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLmRmY21wZ3QKKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLmRmY21wdW8KKyAgICAxLCAvLyBsbHZtLmhleGFnb24uRjIuZGZpbW0ubgorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5GMi5kZmltbS5wCisgICAgNDAsIC8vIGxsdm0uaGV4YWdvbi5GMi5kZnN1YgorICAgIDQwLCAvLyBsbHZtLmhleGFnb24uRjIuc2ZhZGQKKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLnNmY2xhc3MKKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLnNmY21wZXEKKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLnNmY21wZ2UKKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLnNmY21wZ3QKKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLnNmY21wdW8KKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLnNmZml4dXBkCisgICAgNDAsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmZpeHVwbgorICAgIDQwLCAvLyBsbHZtLmhleGFnb24uRjIuc2ZmaXh1cHIKKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLnNmZm1hCisgICAgNDAsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmZtYS5saWIKKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLnNmZm1hLnNjCisgICAgNDAsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZmZtcworICAgIDQwLCAvLyBsbHZtLmhleGFnb24uRjIuc2ZmbXMubGliCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLkYyLnNmaW1tLm4KKyAgICAxLCAvLyBsbHZtLmhleGFnb24uRjIuc2ZpbW0ucAorICAgIDQwLCAvLyBsbHZtLmhleGFnb24uRjIuc2ZpbnZzcXJ0YQorICAgIDQwLCAvLyBsbHZtLmhleGFnb24uRjIuc2ZtYXgKKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLnNmbWluCisgICAgNDAsIC8vIGxsdm0uaGV4YWdvbi5GMi5zZm1weQorICAgIDQwLCAvLyBsbHZtLmhleGFnb24uRjIuc2ZyZWNpcGEKKyAgICA0MCwgLy8gbGx2bS5oZXhhZ29uLkYyLnNmc3ViCiAgICAgMTYsIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmIucGJyCi0gICAgMzAsIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmIucGNpCisgICAgMzEsIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmIucGNpCiAgICAgMTksIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmIucGNyCiAgICAgMTYsIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmQucGJyCi0gICAgMzAsIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmQucGNpCisgICAgMzEsIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmQucGNpCiAgICAgMTksIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmQucGNyCiAgICAgMTYsIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmgucGJyCi0gICAgMzAsIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmgucGNpCisgICAgMzEsIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmgucGNpCiAgICAgMTksIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmgucGNyCiAgICAgMTYsIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmkucGJyCi0gICAgMzAsIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmkucGNpCisgICAgMzEsIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmkucGNpCiAgICAgMTksIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcmkucGNyCiAgICAgMTYsIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcnViLnBicgotICAgIDMwLCAvLyBsbHZtLmhleGFnb24uTDIubG9hZHJ1Yi5wY2kKKyAgICAzMSwgLy8gbGx2bS5oZXhhZ29uLkwyLmxvYWRydWIucGNpCiAgICAgMTksIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcnViLnBjcgogICAgIDE2LCAvLyBsbHZtLmhleGFnb24uTDIubG9hZHJ1aC5wYnIKLSAgICAzMCwgLy8gbGx2bS5oZXhhZ29uLkwyLmxvYWRydWgucGNpCisgICAgMzEsIC8vIGxsdm0uaGV4YWdvbi5MMi5sb2FkcnVoLnBjaQogICAgIDE5LCAvLyBsbHZtLmhleGFnb24uTDIubG9hZHJ1aC5wY3IKICAgICAxOCwgLy8gbGx2bS5oZXhhZ29uLkwyLmxvYWR3LmxvY2tlZAogICAgIDE4LCAvLyBsbHZtLmhleGFnb24uTDQubG9hZGQubG9ja2VkCkBAIC0xMDY0Myw2ICsxMDc4Nyw3IEBACiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLk0yLm1tcHl1bC5yczEKICAgICAxLCAvLyBsbHZtLmhleGFnb24uTTIubW1weXVsLnMwCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLk0yLm1tcHl1bC5zMQorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5NMi5tbmFjaQogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5NMi5tcHkuYWNjLmhoLnMwCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLk0yLm1weS5hY2MuaGguczEKICAgICAxLCAvLyBsbHZtLmhleGFnb24uTTIubXB5LmFjYy5obC5zMApAQCAtMTA3NDMsNiArMTA4ODgsOCBAQAogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5NMi5tcHlkLnJuZC5sbC5zMAogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5NMi5tcHlkLnJuZC5sbC5zMQogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5NMi5tcHlpCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLk0yLm1weXNpbgorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5NMi5tcHlzaXAKICAgICAxLCAvLyBsbHZtLmhleGFnb24uTTIubXB5c21pCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLk0yLm1weXN1LnVwCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLk0yLm1weXUuYWNjLmhoLnMwCkBAIC0xMDk1NSw3ICsxMTEwMiw2IEBACiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlMyLmFzci5yLnZ3CiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlMyLmJyZXYKICAgICAxLCAvLyBsbHZtLmhleGFnb24uUzIuYnJldnAKLSAgICAxLCAvLyBsbHZtLmhleGFnb24uUzIuY2FiYWNlbmNiaW4KICAgICAxLCAvLyBsbHZtLmhleGFnb24uUzIuY2wwCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlMyLmNsMHAKICAgICAxLCAvLyBsbHZtLmhleGFnb24uUzIuY2wxCkBAIC0xMTAyMCw2ICsxMTE2Niw3IEBACiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlMyLmxzci5yLnIub3IKICAgICAxLCAvLyBsbHZtLmhleGFnb24uUzIubHNyLnIudmgKICAgICAxLCAvLyBsbHZtLmhleGFnb24uUzIubHNyLnIudncKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uUzIubWFzawogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5TMi5wYWNraGwKICAgICAxLCAvLyBsbHZtLmhleGFnb24uUzIucGFyaXR5cAogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5TMi5zZXRiaXQuaQpAQCAtMTEwMjksMjAgKzExMTc2LDIwIEBACiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlMyLnNodWZmb2IKICAgICAxLCAvLyBsbHZtLmhleGFnb24uUzIuc2h1ZmZvaAogICAgIDM0LCAvLyBsbHZtLmhleGFnb24uUzIuc3RvcmVyYi5wYnIKLSAgICAzMSwgLy8gbGx2bS5oZXhhZ29uLlMyLnN0b3JlcmIucGNpCi0gICAgMzAsIC8vIGxsdm0uaGV4YWdvbi5TMi5zdG9yZXJiLnBjcgorICAgIDMyLCAvLyBsbHZtLmhleGFnb24uUzIuc3RvcmVyYi5wY2kKKyAgICAzMSwgLy8gbGx2bS5oZXhhZ29uLlMyLnN0b3JlcmIucGNyCiAgICAgMzQsIC8vIGxsdm0uaGV4YWdvbi5TMi5zdG9yZXJkLnBicgotICAgIDMxLCAvLyBsbHZtLmhleGFnb24uUzIuc3RvcmVyZC5wY2kKLSAgICAzMCwgLy8gbGx2bS5oZXhhZ29uLlMyLnN0b3JlcmQucGNyCisgICAgMzIsIC8vIGxsdm0uaGV4YWdvbi5TMi5zdG9yZXJkLnBjaQorICAgIDMxLCAvLyBsbHZtLmhleGFnb24uUzIuc3RvcmVyZC5wY3IKICAgICAzNCwgLy8gbGx2bS5oZXhhZ29uLlMyLnN0b3JlcmYucGJyCi0gICAgMzEsIC8vIGxsdm0uaGV4YWdvbi5TMi5zdG9yZXJmLnBjaQotICAgIDMwLCAvLyBsbHZtLmhleGFnb24uUzIuc3RvcmVyZi5wY3IKKyAgICAzMiwgLy8gbGx2bS5oZXhhZ29uLlMyLnN0b3JlcmYucGNpCisgICAgMzEsIC8vIGxsdm0uaGV4YWdvbi5TMi5zdG9yZXJmLnBjcgogICAgIDM0LCAvLyBsbHZtLmhleGFnb24uUzIuc3RvcmVyaC5wYnIKLSAgICAzMSwgLy8gbGx2bS5oZXhhZ29uLlMyLnN0b3JlcmgucGNpCi0gICAgMzAsIC8vIGxsdm0uaGV4YWdvbi5TMi5zdG9yZXJoLnBjcgorICAgIDMyLCAvLyBsbHZtLmhleGFnb24uUzIuc3RvcmVyaC5wY2kKKyAgICAzMSwgLy8gbGx2bS5oZXhhZ29uLlMyLnN0b3JlcmgucGNyCiAgICAgMzQsIC8vIGxsdm0uaGV4YWdvbi5TMi5zdG9yZXJpLnBicgotICAgIDMxLCAvLyBsbHZtLmhleGFnb24uUzIuc3RvcmVyaS5wY2kKLSAgICAzMCwgLy8gbGx2bS5oZXhhZ29uLlMyLnN0b3JlcmkucGNyCisgICAgMzIsIC8vIGxsdm0uaGV4YWdvbi5TMi5zdG9yZXJpLnBjaQorICAgIDMxLCAvLyBsbHZtLmhleGFnb24uUzIuc3RvcmVyaS5wY3IKICAgICAxOCwgLy8gbGx2bS5oZXhhZ29uLlMyLnN0b3Jldy5sb2NrZWQKICAgICAxLCAvLyBsbHZtLmhleGFnb24uUzIuc3ZzYXRoYgogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5TMi5zdnNhdGh1YgpAQCAtMTExMzcsNiArMTEyODQsMzcgQEAKICAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYuZXh0cmFjdHcuMTI4QgogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi5oaQogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi5oaS4xMjhCCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LmxkMAorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi5sZDAuMTI4QgorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi5sZGNucDAKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYubGRjbnAwLjEyOEIKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYubGRjbnBudDAKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYubGRjbnBudDAuMTI4QgorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi5sZGNwMAorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi5sZGNwMC4xMjhCCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LmxkY3BudDAKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYubGRjcG50MC4xMjhCCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LmxkbnAwCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LmxkbnAwLjEyOEIKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYubGRucG50MAorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi5sZG5wbnQwLjEyOEIKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYubGRudDAKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYubGRudDAuMTI4QgorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi5sZG50bnQwCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LmxkcDAKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYubGRwMC4xMjhCCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LmxkcG50MAorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi5sZHBudDAuMTI4QgorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi5sZHRucDAKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYubGR0bnAwLjEyOEIKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYubGR0bnBudDAKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYubGR0bnBudDAuMTI4QgorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi5sZHRwMAorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi5sZHRwMC4xMjhCCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LmxkdHBudDAKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYubGR0cG50MC4xMjhCCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LmxkdTAKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYubGR1MC4xMjhCCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LmxvCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LmxvLjEyOEIKICAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYubHZzcGxhdGIKQEAgLTExMjA3LDYgKzExMzg1LDggQEAKICAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYudmFkZGJzYXQuZHYuMTI4QgogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi52YWRkY2FycnkKICAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYudmFkZGNhcnJ5LjEyOEIKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYudmFkZGNhcnJ5c2F0CisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LnZhZGRjYXJyeXNhdC4xMjhCCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LnZhZGRjbGJoCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LnZhZGRjbGJoLjEyOEIKICAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYudmFkZGNsYncKQEAgLTExMjk1LDYgKzExNDc1LDggQEAKICAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYudmFzbHcuYWNjLjEyOEIKICAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYudmFzbHd2CiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LnZhc2x3di4xMjhCCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LnZhc3IuaW50bworICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi52YXNyLmludG8uMTI4QgogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi52YXNyaAogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi52YXNyaC4xMjhCCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LnZhc3JoLmFjYwpAQCAtMTE3NzUsNiArMTE5NTcsOCBAQAogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi52cm1weXVidi5hY2MuMTI4QgogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi52cm9yCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LnZyb3IuMTI4QgorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi52cm90cgorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi52cm90ci4xMjhCCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LnZyb3VuZGhiCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LnZyb3VuZGhiLjEyOEIKICAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYudnJvdW5kaHViCkBAIC0xMTc5MSw2ICsxMTk3NSw4IEBACiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LnZyc2FkdWJpLjEyOEIKICAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYudnJzYWR1YmkuYWNjCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LnZyc2FkdWJpLmFjYy4xMjhCCisgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LnZzYXRkdworICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi52c2F0ZHcuMTI4QgogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi52c2F0aHViCiAgICAgMSwgLy8gbGx2bS5oZXhhZ29uLlY2LnZzYXRodWIuMTI4QgogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi52c2F0dXd1aApAQCAtMTE5MDksNiArMTIwOTUsOCBAQAogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi52dG1weWhiLjEyOEIKICAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYudnRtcHloYi5hY2MKICAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYudnRtcHloYi5hY2MuMTI4QgorICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi52dHJhbjJ4Mi5tYXAKKyAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYudnRyYW4yeDIubWFwLjEyOEIKICAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYudnVucGFja2IKICAgICAxLCAvLyBsbHZtLmhleGFnb24uVjYudnVucGFja2IuMTI4QgogICAgIDEsIC8vIGxsdm0uaGV4YWdvbi5WNi52dW5wYWNraApAQCAtMTE5MzAsNyArMTIxMTgsNyBAQAogICAgIDMsIC8vIGxsdm0uaGV4YWdvbi5ZMi5kY2NsZWFuYQogICAgIDMsIC8vIGxsdm0uaGV4YWdvbi5ZMi5kY2NsZWFuaW52YQogICAgIDMsIC8vIGxsdm0uaGV4YWdvbi5ZMi5kY2ludmEKLSAgICAzOCwgLy8gbGx2bS5oZXhhZ29uLlkyLmRjemVyb2EKKyAgICA0MSwgLy8gbGx2bS5oZXhhZ29uLlkyLmRjemVyb2EKICAgICAzLCAvLyBsbHZtLmhleGFnb24uWTQubDJmZXRjaAogICAgIDMsIC8vIGxsdm0uaGV4YWdvbi5ZNS5sMmZldGNoCiAgICAgMjIsIC8vIGxsdm0uaGV4YWdvbi5jaXJjLmxkYgpAQCAtMTE5NDQsOCArMTIxMzIsOSBAQAogICAgIDM0LCAvLyBsbHZtLmhleGFnb24uY2lyYy5zdGgKICAgICAzNCwgLy8gbGx2bS5oZXhhZ29uLmNpcmMuc3RoaGkKICAgICAzNCwgLy8gbGx2bS5oZXhhZ29uLmNpcmMuc3R3Ci0gICAgMjIsIC8vIGxsdm0uaGV4YWdvbi5tbTI1NmkudmFkZHcKICAgICAzLCAvLyBsbHZtLmhleGFnb24ucHJlZmV0Y2gKKyAgICAyMywgLy8gbGx2bS5oZXhhZ29uLnZtZW1jcHkKKyAgICAyNSwgLy8gbGx2bS5oZXhhZ29uLnZtZW1zZXQKICAgICAzLCAvLyBsbHZtLm1pcHMuYWJzcS5zLnBoCiAgICAgMywgLy8gbGx2bS5taXBzLmFic3Eucy5xYgogICAgIDMsIC8vIGxsdm0ubWlwcy5hYnNxLnMudwpAQCAtMTI2NTEsMTYgKzEyODQwLDE2IEBACiAgICAgMTgsIC8vIGxsdm0ubnZ2bS5hdG9taWMub3IuZ2VuLmkuc3lzCiAgICAgMTgsIC8vIGxsdm0ubnZ2bS5hdG9taWMueG9yLmdlbi5pLmN0YQogICAgIDE4LCAvLyBsbHZtLm52dm0uYXRvbWljLnhvci5nZW4uaS5zeXMKLSAgICAzNSwgLy8gbGx2bS5udnZtLmJhci5zeW5jCi0gICAgMzUsIC8vIGxsdm0ubnZ2bS5iYXIud2FycC5zeW5jCi0gICAgMzUsIC8vIGxsdm0ubnZ2bS5iYXJyaWVyCi0gICAgMzUsIC8vIGxsdm0ubnZ2bS5iYXJyaWVyLm4KLSAgICAzNSwgLy8gbGx2bS5udnZtLmJhcnJpZXIuc3luYwotICAgIDM1LCAvLyBsbHZtLm52dm0uYmFycmllci5zeW5jLmNudAotICAgIDM1LCAvLyBsbHZtLm52dm0uYmFycmllcjAKLSAgICAzNSwgLy8gbGx2bS5udnZtLmJhcnJpZXIwLmFuZAotICAgIDM1LCAvLyBsbHZtLm52dm0uYmFycmllcjAub3IKLSAgICAzNSwgLy8gbGx2bS5udnZtLmJhcnJpZXIwLnBvcGMKKyAgICAzOCwgLy8gbGx2bS5udnZtLmJhci5zeW5jCisgICAgMzgsIC8vIGxsdm0ubnZ2bS5iYXIud2FycC5zeW5jCisgICAgMzgsIC8vIGxsdm0ubnZ2bS5iYXJyaWVyCisgICAgMzgsIC8vIGxsdm0ubnZ2bS5iYXJyaWVyLm4KKyAgICAzOCwgLy8gbGx2bS5udnZtLmJhcnJpZXIuc3luYworICAgIDM4LCAvLyBsbHZtLm52dm0uYmFycmllci5zeW5jLmNudAorICAgIDM4LCAvLyBsbHZtLm52dm0uYmFycmllcjAKKyAgICAzOCwgLy8gbGx2bS5udnZtLmJhcnJpZXIwLmFuZAorICAgIDM4LCAvLyBsbHZtLm52dm0uYmFycmllcjAub3IKKyAgICAzOCwgLy8gbGx2bS5udnZtLmJhcnJpZXIwLnBvcGMKICAgICAxLCAvLyBsbHZtLm52dm0uYml0Y2FzdC5kMmxsCiAgICAgMSwgLy8gbGx2bS5udnZtLmJpdGNhc3QuZjJpCiAgICAgMSwgLy8gbGx2bS5udnZtLmJpdGNhc3QuaTJmCkBAIC0xMjc4OSwxMiArMTI5NzgsMTIgQEAKICAgICAxLCAvLyBsbHZtLm52dm0uaXN0eXBlcC5zYW1wbGVyCiAgICAgMSwgLy8gbGx2bS5udnZtLmlzdHlwZXAuc3VyZmFjZQogICAgIDEsIC8vIGxsdm0ubnZ2bS5pc3R5cGVwLnRleHR1cmUKLSAgICAzOSwgLy8gbGx2bS5udnZtLmxkZy5nbG9iYWwuZgotICAgIDM5LCAvLyBsbHZtLm52dm0ubGRnLmdsb2JhbC5pCi0gICAgMzksIC8vIGxsdm0ubnZ2bS5sZGcuZ2xvYmFsLnAKLSAgICAzOSwgLy8gbGx2bS5udnZtLmxkdS5nbG9iYWwuZgotICAgIDM5LCAvLyBsbHZtLm52dm0ubGR1Lmdsb2JhbC5pCi0gICAgMzksIC8vIGxsdm0ubnZ2bS5sZHUuZ2xvYmFsLnAKKyAgICA0MiwgLy8gbGx2bS5udnZtLmxkZy5nbG9iYWwuZgorICAgIDQyLCAvLyBsbHZtLm52dm0ubGRnLmdsb2JhbC5pCisgICAgNDIsIC8vIGxsdm0ubnZ2bS5sZGcuZ2xvYmFsLnAKKyAgICA0MiwgLy8gbGx2bS5udnZtLmxkdS5nbG9iYWwuZgorICAgIDQyLCAvLyBsbHZtLm52dm0ubGR1Lmdsb2JhbC5pCisgICAgNDIsIC8vIGxsdm0ubnZ2bS5sZHUuZ2xvYmFsLnAKICAgICAxLCAvLyBsbHZtLm52dm0ubGcyLmFwcHJveC5kCiAgICAgMSwgLy8gbGx2bS5udnZtLmxnMi5hcHByb3guZgogICAgIDEsIC8vIGxsdm0ubnZ2bS5sZzIuYXBwcm94LmZ0ei5mCkBAIC0xMjgwNywxMCArMTI5OTYsMTAgQEAKICAgICAxLCAvLyBsbHZtLm52dm0ubGwyZi5ycAogICAgIDEsIC8vIGxsdm0ubnZ2bS5sbDJmLnJ6CiAgICAgMSwgLy8gbGx2bS5udnZtLmxvaGkuaTJkCi0gICAgNDAsIC8vIGxsdm0ubnZ2bS5tYXRjaC5hbGwuc3luYy5pMzJwCi0gICAgNDAsIC8vIGxsdm0ubnZ2bS5tYXRjaC5hbGwuc3luYy5pNjRwCi0gICAgNDAsIC8vIGxsdm0ubnZ2bS5tYXRjaC5hbnkuc3luYy5pMzIKLSAgICA0MCwgLy8gbGx2bS5udnZtLm1hdGNoLmFueS5zeW5jLmk2NAorICAgIDQzLCAvLyBsbHZtLm52dm0ubWF0Y2guYWxsLnN5bmMuaTMycAorICAgIDQzLCAvLyBsbHZtLm52dm0ubWF0Y2guYWxsLnN5bmMuaTY0cAorICAgIDQzLCAvLyBsbHZtLm52dm0ubWF0Y2guYW55LnN5bmMuaTMyCisgICAgNDMsIC8vIGxsdm0ubnZ2bS5tYXRjaC5hbnkuc3luYy5pNjQKICAgICAzLCAvLyBsbHZtLm52dm0ubWVtYmFyLmN0YQogICAgIDMsIC8vIGxsdm0ubnZ2bS5tZW1iYXIuZ2wKICAgICAzLCAvLyBsbHZtLm52dm0ubWVtYmFyLnN5cwpAQCAtMTI4NjEsOCArMTMwNTAsOCBAQAogICAgIDEsIC8vIGxsdm0ubnZ2bS5yY3AucnouZAogICAgIDEsIC8vIGxsdm0ubnZ2bS5yY3AucnouZgogICAgIDEsIC8vIGxsdm0ubnZ2bS5yY3AucnouZnR6LmYKLSAgICAxLCAvLyBsbHZtLm52dm0ucmVhZC5wdHguc3JlZy5jbG9jawotICAgIDEsIC8vIGxsdm0ubnZ2bS5yZWFkLnB0eC5zcmVnLmNsb2NrNjQKKyAgICAxNSwgLy8gbGx2bS5udnZtLnJlYWQucHR4LnNyZWcuY2xvY2sKKyAgICAxNSwgLy8gbGx2bS5udnZtLnJlYWQucHR4LnNyZWcuY2xvY2s2NAogICAgIDEsIC8vIGxsdm0ubnZ2bS5yZWFkLnB0eC5zcmVnLmN0YWlkLncKICAgICAxLCAvLyBsbHZtLm52dm0ucmVhZC5wdHguc3JlZy5jdGFpZC54CiAgICAgMSwgLy8gbGx2bS5udnZtLnJlYWQucHR4LnNyZWcuY3RhaWQueQpAQCAtMTI5MTYsMTAgKzEzMTA1LDEwIEBACiAgICAgMSwgLy8gbGx2bS5udnZtLnJlYWQucHR4LnNyZWcubnRpZC55CiAgICAgMSwgLy8gbGx2bS5udnZtLnJlYWQucHR4LnNyZWcubnRpZC56CiAgICAgMSwgLy8gbGx2bS5udnZtLnJlYWQucHR4LnNyZWcubndhcnBpZAotICAgIDEsIC8vIGxsdm0ubnZ2bS5yZWFkLnB0eC5zcmVnLnBtMAotICAgIDEsIC8vIGxsdm0ubnZ2bS5yZWFkLnB0eC5zcmVnLnBtMQotICAgIDEsIC8vIGxsdm0ubnZ2bS5yZWFkLnB0eC5zcmVnLnBtMgotICAgIDEsIC8vIGxsdm0ubnZ2bS5yZWFkLnB0eC5zcmVnLnBtMworICAgIDE1LCAvLyBsbHZtLm52dm0ucmVhZC5wdHguc3JlZy5wbTAKKyAgICAxNSwgLy8gbGx2bS5udnZtLnJlYWQucHR4LnNyZWcucG0xCisgICAgMTUsIC8vIGxsdm0ubnZ2bS5yZWFkLnB0eC5zcmVnLnBtMgorICAgIDE1LCAvLyBsbHZtLm52dm0ucmVhZC5wdHguc3JlZy5wbTMKICAgICAxLCAvLyBsbHZtLm52dm0ucmVhZC5wdHguc3JlZy5zbWlkCiAgICAgMSwgLy8gbGx2bS5udnZtLnJlYWQucHR4LnNyZWcudGlkLncKICAgICAxLCAvLyBsbHZtLm52dm0ucmVhZC5wdHguc3JlZy50aWQueApAQCAtMTI5NDIsMjIgKzEzMTMxLDIyIEBACiAgICAgMSwgLy8gbGx2bS5udnZtLnNhdHVyYXRlLmQKICAgICAxLCAvLyBsbHZtLm52dm0uc2F0dXJhdGUuZgogICAgIDEsIC8vIGxsdm0ubnZ2bS5zYXR1cmF0ZS5mdHouZgotICAgIDQwLCAvLyBsbHZtLm52dm0uc2hmbC5iZmx5LmYzMgotICAgIDQwLCAvLyBsbHZtLm52dm0uc2hmbC5iZmx5LmkzMgotICAgIDQwLCAvLyBsbHZtLm52dm0uc2hmbC5kb3duLmYzMgotICAgIDQwLCAvLyBsbHZtLm52dm0uc2hmbC5kb3duLmkzMgotICAgIDQwLCAvLyBsbHZtLm52dm0uc2hmbC5pZHguZjMyCi0gICAgNDAsIC8vIGxsdm0ubnZ2bS5zaGZsLmlkeC5pMzIKLSAgICA0MCwgLy8gbGx2bS5udnZtLnNoZmwuc3luYy5iZmx5LmYzMgotICAgIDQwLCAvLyBsbHZtLm52dm0uc2hmbC5zeW5jLmJmbHkuaTMyCi0gICAgNDAsIC8vIGxsdm0ubnZ2bS5zaGZsLnN5bmMuZG93bi5mMzIKLSAgICA0MCwgLy8gbGx2bS5udnZtLnNoZmwuc3luYy5kb3duLmkzMgotICAgIDQwLCAvLyBsbHZtLm52dm0uc2hmbC5zeW5jLmlkeC5mMzIKLSAgICA0MCwgLy8gbGx2bS5udnZtLnNoZmwuc3luYy5pZHguaTMyCi0gICAgNDAsIC8vIGxsdm0ubnZ2bS5zaGZsLnN5bmMudXAuZjMyCi0gICAgNDAsIC8vIGxsdm0ubnZ2bS5zaGZsLnN5bmMudXAuaTMyCi0gICAgNDAsIC8vIGxsdm0ubnZ2bS5zaGZsLnVwLmYzMgotICAgIDQwLCAvLyBsbHZtLm52dm0uc2hmbC51cC5pMzIKKyAgICA0MywgLy8gbGx2bS5udnZtLnNoZmwuYmZseS5mMzIKKyAgICA0MywgLy8gbGx2bS5udnZtLnNoZmwuYmZseS5pMzIKKyAgICA0MywgLy8gbGx2bS5udnZtLnNoZmwuZG93bi5mMzIKKyAgICA0MywgLy8gbGx2bS5udnZtLnNoZmwuZG93bi5pMzIKKyAgICA0MywgLy8gbGx2bS5udnZtLnNoZmwuaWR4LmYzMgorICAgIDQzLCAvLyBsbHZtLm52dm0uc2hmbC5pZHguaTMyCisgICAgNDMsIC8vIGxsdm0ubnZ2bS5zaGZsLnN5bmMuYmZseS5mMzIKKyAgICA0MywgLy8gbGx2bS5udnZtLnNoZmwuc3luYy5iZmx5LmkzMgorICAgIDQzLCAvLyBsbHZtLm52dm0uc2hmbC5zeW5jLmRvd24uZjMyCisgICAgNDMsIC8vIGxsdm0ubnZ2bS5zaGZsLnN5bmMuZG93bi5pMzIKKyAgICA0MywgLy8gbGx2bS5udnZtLnNoZmwuc3luYy5pZHguZjMyCisgICAgNDMsIC8vIGxsdm0ubnZ2bS5zaGZsLnN5bmMuaWR4LmkzMgorICAgIDQzLCAvLyBsbHZtLm52dm0uc2hmbC5zeW5jLnVwLmYzMgorICAgIDQzLCAvLyBsbHZtLm52dm0uc2hmbC5zeW5jLnVwLmkzMgorICAgIDQzLCAvLyBsbHZtLm52dm0uc2hmbC51cC5mMzIKKyAgICA0MywgLy8gbGx2bS5udnZtLnNoZmwudXAuaTMyCiAgICAgMSwgLy8gbGx2bS5udnZtLnNpbi5hcHByb3guZgogICAgIDEsIC8vIGxsdm0ubnZ2bS5zaW4uYXBwcm94LmZ0ei5mCiAgICAgMSwgLy8gbGx2bS5udnZtLnNxcnQuYXBwcm94LmYKQEAgLTEzNTU0LDE0ICsxMzc0MywxNCBAQAogICAgIDEsIC8vIGxsdm0ubnZ2bS51bGwyZi5ybgogICAgIDEsIC8vIGxsdm0ubnZ2bS51bGwyZi5ycAogICAgIDEsIC8vIGxsdm0ubnZ2bS51bGwyZi5yegotICAgIDQwLCAvLyBsbHZtLm52dm0udm90ZS5hbGwKLSAgICA0MCwgLy8gbGx2bS5udnZtLnZvdGUuYWxsLnN5bmMKLSAgICA0MCwgLy8gbGx2bS5udnZtLnZvdGUuYW55Ci0gICAgNDAsIC8vIGxsdm0ubnZ2bS52b3RlLmFueS5zeW5jCi0gICAgNDAsIC8vIGxsdm0ubnZ2bS52b3RlLmJhbGxvdAotICAgIDQwLCAvLyBsbHZtLm52dm0udm90ZS5iYWxsb3Quc3luYwotICAgIDQwLCAvLyBsbHZtLm52dm0udm90ZS51bmkKLSAgICA0MCwgLy8gbGx2bS5udnZtLnZvdGUudW5pLnN5bmMKKyAgICA0MywgLy8gbGx2bS5udnZtLnZvdGUuYWxsCisgICAgNDMsIC8vIGxsdm0ubnZ2bS52b3RlLmFsbC5zeW5jCisgICAgNDMsIC8vIGxsdm0ubnZ2bS52b3RlLmFueQorICAgIDQzLCAvLyBsbHZtLm52dm0udm90ZS5hbnkuc3luYworICAgIDQzLCAvLyBsbHZtLm52dm0udm90ZS5iYWxsb3QKKyAgICA0MywgLy8gbGx2bS5udnZtLnZvdGUuYmFsbG90LnN5bmMKKyAgICA0MywgLy8gbGx2bS5udnZtLnZvdGUudW5pCisgICAgNDMsIC8vIGxsdm0ubnZ2bS52b3RlLnVuaS5zeW5jCiAgICAgMTMsIC8vIGxsdm0ubnZ2bS53bW1hLm0xNm4xNmsxNi5sb2FkLmEuY29sLmYxNgogICAgIDEzLCAvLyBsbHZtLm52dm0ud21tYS5tMTZuMTZrMTYubG9hZC5hLmNvbC5zdHJpZGUuZjE2CiAgICAgMTMsIC8vIGxsdm0ubnZ2bS53bW1hLm0xNm4xNmsxNi5sb2FkLmEucm93LmYxNgpAQCAtMTM2MTAsMTQgKzEzNzk5LDE0IEBACiAgICAgMSwgLy8gbGx2bS5udnZtLndtbWEubTE2bjE2azE2Lm1tYS5yb3cucm93LmYzMi5mMTYuc2F0ZmluaXRlCiAgICAgMSwgLy8gbGx2bS5udnZtLndtbWEubTE2bjE2azE2Lm1tYS5yb3cucm93LmYzMi5mMzIKICAgICAxLCAvLyBsbHZtLm52dm0ud21tYS5tMTZuMTZrMTYubW1hLnJvdy5yb3cuZjMyLmYzMi5zYXRmaW5pdGUKLSAgICA0MSwgLy8gbGx2bS5udnZtLndtbWEubTE2bjE2azE2LnN0b3JlLmQuY29sLmYxNgotICAgIDQxLCAvLyBsbHZtLm52dm0ud21tYS5tMTZuMTZrMTYuc3RvcmUuZC5jb2wuZjMyCi0gICAgNDEsIC8vIGxsdm0ubnZ2bS53bW1hLm0xNm4xNmsxNi5zdG9yZS5kLmNvbC5zdHJpZGUuZjE2Ci0gICAgNDEsIC8vIGxsdm0ubnZ2bS53bW1hLm0xNm4xNmsxNi5zdG9yZS5kLmNvbC5zdHJpZGUuZjMyCi0gICAgNDEsIC8vIGxsdm0ubnZ2bS53bW1hLm0xNm4xNmsxNi5zdG9yZS5kLnJvdy5mMTYKLSAgICA0MSwgLy8gbGx2bS5udnZtLndtbWEubTE2bjE2azE2LnN0b3JlLmQucm93LmYzMgotICAgIDQxLCAvLyBsbHZtLm52dm0ud21tYS5tMTZuMTZrMTYuc3RvcmUuZC5yb3cuc3RyaWRlLmYxNgotICAgIDQxLCAvLyBsbHZtLm52dm0ud21tYS5tMTZuMTZrMTYuc3RvcmUuZC5yb3cuc3RyaWRlLmYzMgorICAgIDQ0LCAvLyBsbHZtLm52dm0ud21tYS5tMTZuMTZrMTYuc3RvcmUuZC5jb2wuZjE2CisgICAgNDQsIC8vIGxsdm0ubnZ2bS53bW1hLm0xNm4xNmsxNi5zdG9yZS5kLmNvbC5mMzIKKyAgICA0NCwgLy8gbGx2bS5udnZtLndtbWEubTE2bjE2azE2LnN0b3JlLmQuY29sLnN0cmlkZS5mMTYKKyAgICA0NCwgLy8gbGx2bS5udnZtLndtbWEubTE2bjE2azE2LnN0b3JlLmQuY29sLnN0cmlkZS5mMzIKKyAgICA0NCwgLy8gbGx2bS5udnZtLndtbWEubTE2bjE2azE2LnN0b3JlLmQucm93LmYxNgorICAgIDQ0LCAvLyBsbHZtLm52dm0ud21tYS5tMTZuMTZrMTYuc3RvcmUuZC5yb3cuZjMyCisgICAgNDQsIC8vIGxsdm0ubnZ2bS53bW1hLm0xNm4xNmsxNi5zdG9yZS5kLnJvdy5zdHJpZGUuZjE2CisgICAgNDQsIC8vIGxsdm0ubnZ2bS53bW1hLm0xNm4xNmsxNi5zdG9yZS5kLnJvdy5zdHJpZGUuZjMyCiAgICAgMTMsIC8vIGxsdm0ubnZ2bS53bW1hLm0zMm44azE2LmxvYWQuYS5jb2wuZjE2CiAgICAgMTMsIC8vIGxsdm0ubnZ2bS53bW1hLm0zMm44azE2LmxvYWQuYS5jb2wuc3RyaWRlLmYxNgogICAgIDEzLCAvLyBsbHZtLm52dm0ud21tYS5tMzJuOGsxNi5sb2FkLmEucm93LmYxNgpAQCAtMTM2NjYsMTQgKzEzODU1LDE0IEBACiAgICAgMSwgLy8gbGx2bS5udnZtLndtbWEubTMybjhrMTYubW1hLnJvdy5yb3cuZjMyLmYxNi5zYXRmaW5pdGUKICAgICAxLCAvLyBsbHZtLm52dm0ud21tYS5tMzJuOGsxNi5tbWEucm93LnJvdy5mMzIuZjMyCiAgICAgMSwgLy8gbGx2bS5udnZtLndtbWEubTMybjhrMTYubW1hLnJvdy5yb3cuZjMyLmYzMi5zYXRmaW5pdGUKLSAgICA0MSwgLy8gbGx2bS5udnZtLndtbWEubTMybjhrMTYuc3RvcmUuZC5jb2wuZjE2Ci0gICAgNDEsIC8vIGxsdm0ubnZ2bS53bW1hLm0zMm44azE2LnN0b3JlLmQuY29sLmYzMgotICAgIDQxLCAvLyBsbHZtLm52dm0ud21tYS5tMzJuOGsxNi5zdG9yZS5kLmNvbC5zdHJpZGUuZjE2Ci0gICAgNDEsIC8vIGxsdm0ubnZ2bS53bW1hLm0zMm44azE2LnN0b3JlLmQuY29sLnN0cmlkZS5mMzIKLSAgICA0MSwgLy8gbGx2bS5udnZtLndtbWEubTMybjhrMTYuc3RvcmUuZC5yb3cuZjE2Ci0gICAgNDEsIC8vIGxsdm0ubnZ2bS53bW1hLm0zMm44azE2LnN0b3JlLmQucm93LmYzMgotICAgIDQxLCAvLyBsbHZtLm52dm0ud21tYS5tMzJuOGsxNi5zdG9yZS5kLnJvdy5zdHJpZGUuZjE2Ci0gICAgNDEsIC8vIGxsdm0ubnZ2bS53bW1hLm0zMm44azE2LnN0b3JlLmQucm93LnN0cmlkZS5mMzIKKyAgICA0NCwgLy8gbGx2bS5udnZtLndtbWEubTMybjhrMTYuc3RvcmUuZC5jb2wuZjE2CisgICAgNDQsIC8vIGxsdm0ubnZ2bS53bW1hLm0zMm44azE2LnN0b3JlLmQuY29sLmYzMgorICAgIDQ0LCAvLyBsbHZtLm52dm0ud21tYS5tMzJuOGsxNi5zdG9yZS5kLmNvbC5zdHJpZGUuZjE2CisgICAgNDQsIC8vIGxsdm0ubnZ2bS53bW1hLm0zMm44azE2LnN0b3JlLmQuY29sLnN0cmlkZS5mMzIKKyAgICA0NCwgLy8gbGx2bS5udnZtLndtbWEubTMybjhrMTYuc3RvcmUuZC5yb3cuZjE2CisgICAgNDQsIC8vIGxsdm0ubnZ2bS53bW1hLm0zMm44azE2LnN0b3JlLmQucm93LmYzMgorICAgIDQ0LCAvLyBsbHZtLm52dm0ud21tYS5tMzJuOGsxNi5zdG9yZS5kLnJvdy5zdHJpZGUuZjE2CisgICAgNDQsIC8vIGxsdm0ubnZ2bS53bW1hLm0zMm44azE2LnN0b3JlLmQucm93LnN0cmlkZS5mMzIKICAgICAxMywgLy8gbGx2bS5udnZtLndtbWEubThuMzJrMTYubG9hZC5hLmNvbC5mMTYKICAgICAxMywgLy8gbGx2bS5udnZtLndtbWEubThuMzJrMTYubG9hZC5hLmNvbC5zdHJpZGUuZjE2CiAgICAgMTMsIC8vIGxsdm0ubnZ2bS53bW1hLm04bjMyazE2LmxvYWQuYS5yb3cuZjE2CkBAIC0xMzcyMiwxNCArMTM5MTEsMTQgQEAKICAgICAxLCAvLyBsbHZtLm52dm0ud21tYS5tOG4zMmsxNi5tbWEucm93LnJvdy5mMzIuZjE2LnNhdGZpbml0ZQogICAgIDEsIC8vIGxsdm0ubnZ2bS53bW1hLm04bjMyazE2Lm1tYS5yb3cucm93LmYzMi5mMzIKICAgICAxLCAvLyBsbHZtLm52dm0ud21tYS5tOG4zMmsxNi5tbWEucm93LnJvdy5mMzIuZjMyLnNhdGZpbml0ZQotICAgIDQxLCAvLyBsbHZtLm52dm0ud21tYS5tOG4zMmsxNi5zdG9yZS5kLmNvbC5mMTYKLSAgICA0MSwgLy8gbGx2bS5udnZtLndtbWEubThuMzJrMTYuc3RvcmUuZC5jb2wuZjMyCi0gICAgNDEsIC8vIGxsdm0ubnZ2bS53bW1hLm04bjMyazE2LnN0b3JlLmQuY29sLnN0cmlkZS5mMTYKLSAgICA0MSwgLy8gbGx2bS5udnZtLndtbWEubThuMzJrMTYuc3RvcmUuZC5jb2wuc3RyaWRlLmYzMgotICAgIDQxLCAvLyBsbHZtLm52dm0ud21tYS5tOG4zMmsxNi5zdG9yZS5kLnJvdy5mMTYKLSAgICA0MSwgLy8gbGx2bS5udnZtLndtbWEubThuMzJrMTYuc3RvcmUuZC5yb3cuZjMyCi0gICAgNDEsIC8vIGxsdm0ubnZ2bS53bW1hLm04bjMyazE2LnN0b3JlLmQucm93LnN0cmlkZS5mMTYKLSAgICA0MSwgLy8gbGx2bS5udnZtLndtbWEubThuMzJrMTYuc3RvcmUuZC5yb3cuc3RyaWRlLmYzMgorICAgIDQ0LCAvLyBsbHZtLm52dm0ud21tYS5tOG4zMmsxNi5zdG9yZS5kLmNvbC5mMTYKKyAgICA0NCwgLy8gbGx2bS5udnZtLndtbWEubThuMzJrMTYuc3RvcmUuZC5jb2wuZjMyCisgICAgNDQsIC8vIGxsdm0ubnZ2bS53bW1hLm04bjMyazE2LnN0b3JlLmQuY29sLnN0cmlkZS5mMTYKKyAgICA0NCwgLy8gbGx2bS5udnZtLndtbWEubThuMzJrMTYuc3RvcmUuZC5jb2wuc3RyaWRlLmYzMgorICAgIDQ0LCAvLyBsbHZtLm52dm0ud21tYS5tOG4zMmsxNi5zdG9yZS5kLnJvdy5mMTYKKyAgICA0NCwgLy8gbGx2bS5udnZtLndtbWEubThuMzJrMTYuc3RvcmUuZC5yb3cuZjMyCisgICAgNDQsIC8vIGxsdm0ubnZ2bS53bW1hLm04bjMyazE2LnN0b3JlLmQucm93LnN0cmlkZS5mMTYKKyAgICA0NCwgLy8gbGx2bS5udnZtLndtbWEubThuMzJrMTYuc3RvcmUuZC5yb3cuc3RyaWRlLmYzMgogICAgIDEsIC8vIGxsdm0ucHBjLmFkZGYxMjgucm91bmQudG8ub2RkCiAgICAgMSwgLy8gbGx2bS5wcGMuYWx0aXZlYy5jcnlwdG8udmNpcGhlcgogICAgIDEsIC8vIGxsdm0ucHBjLmFsdGl2ZWMuY3J5cHRvLnZjaXBoZXJsYXN0CkBAIC0xMzc1OCwxMSArMTM5NDcsMTEgQEAKICAgICAyLCAvLyBsbHZtLnBwYy5hbHRpdmVjLmx2eGwKICAgICAxNiwgLy8gbGx2bS5wcGMuYWx0aXZlYy5tZnZzY3IKICAgICAzLCAvLyBsbHZtLnBwYy5hbHRpdmVjLm10dnNjcgotICAgIDQyLCAvLyBsbHZtLnBwYy5hbHRpdmVjLnN0dmVieAotICAgIDQyLCAvLyBsbHZtLnBwYy5hbHRpdmVjLnN0dmVoeAotICAgIDQyLCAvLyBsbHZtLnBwYy5hbHRpdmVjLnN0dmV3eAotICAgIDQyLCAvLyBsbHZtLnBwYy5hbHRpdmVjLnN0dngKLSAgICA0MiwgLy8gbGx2bS5wcGMuYWx0aXZlYy5zdHZ4bAorICAgIDQ1LCAvLyBsbHZtLnBwYy5hbHRpdmVjLnN0dmVieAorICAgIDQ1LCAvLyBsbHZtLnBwYy5hbHRpdmVjLnN0dmVoeAorICAgIDQ1LCAvLyBsbHZtLnBwYy5hbHRpdmVjLnN0dmV3eAorICAgIDQ1LCAvLyBsbHZtLnBwYy5hbHRpdmVjLnN0dngKKyAgICA0NSwgLy8gbGx2bS5wcGMuYWx0aXZlYy5zdHZ4bAogICAgIDEsIC8vIGxsdm0ucHBjLmFsdGl2ZWMudmFic2R1YgogICAgIDEsIC8vIGxsdm0ucHBjLmFsdGl2ZWMudmFic2R1aAogICAgIDEsIC8vIGxsdm0ucHBjLmFsdGl2ZWMudmFic2R1dwpAQCAtMTM5NjQsNyArMTQxNTMsNyBAQAogICAgIDMsIC8vIGxsdm0ucHBjLmdldC50ZXhhc3J1CiAgICAgMywgLy8gbGx2bS5wcGMuZ2V0LnRmaGFyCiAgICAgMywgLy8gbGx2bS5wcGMuZ2V0LnRmaWFyCi0gICAgNDMsIC8vIGxsdm0ucHBjLmlzLmRlY3JlbWVudGVkLmN0ci5ub256ZXJvCisgICAgNDYsIC8vIGxsdm0ucHBjLmlzLmRlY3JlbWVudGVkLmN0ci5ub256ZXJvCiAgICAgMywgLy8gbGx2bS5wcGMubHdzeW5jCiAgICAgMywgLy8gbGx2bS5wcGMubXRjdHIKICAgICAxLCAvLyBsbHZtLnBwYy5tdWxmMTI4LnJvdW5kLnRvLm9kZApAQCAtMTQwNDEsMTYgKzE0MjMwLDE2IEBACiAgICAgMSwgLy8gbGx2bS5wcGMucXB4LnF2bHBjbHMKICAgICAxLCAvLyBsbHZtLnBwYy5xcHgucXZscGNyZAogICAgIDEsIC8vIGxsdm0ucHBjLnFweC5xdmxwY3JzCi0gICAgNDIsIC8vIGxsdm0ucHBjLnFweC5xdnN0ZmNkCi0gICAgNDIsIC8vIGxsdm0ucHBjLnFweC5xdnN0ZmNkYQotICAgIDQyLCAvLyBsbHZtLnBwYy5xcHgucXZzdGZjcwotICAgIDQyLCAvLyBsbHZtLnBwYy5xcHgucXZzdGZjc2EKLSAgICA0MiwgLy8gbGx2bS5wcGMucXB4LnF2c3RmZAotICAgIDQyLCAvLyBsbHZtLnBwYy5xcHgucXZzdGZkYQotICAgIDQyLCAvLyBsbHZtLnBwYy5xcHgucXZzdGZpdwotICAgIDQyLCAvLyBsbHZtLnBwYy5xcHgucXZzdGZpd2EKLSAgICA0MiwgLy8gbGx2bS5wcGMucXB4LnF2c3RmcwotICAgIDQyLCAvLyBsbHZtLnBwYy5xcHgucXZzdGZzYQorICAgIDQ1LCAvLyBsbHZtLnBwYy5xcHgucXZzdGZjZAorICAgIDQ1LCAvLyBsbHZtLnBwYy5xcHgucXZzdGZjZGEKKyAgICA0NSwgLy8gbGx2bS5wcGMucXB4LnF2c3RmY3MKKyAgICA0NSwgLy8gbGx2bS5wcGMucXB4LnF2c3RmY3NhCisgICAgNDUsIC8vIGxsdm0ucHBjLnFweC5xdnN0ZmQKKyAgICA0NSwgLy8gbGx2bS5wcGMucXB4LnF2c3RmZGEKKyAgICA0NSwgLy8gbGx2bS5wcGMucXB4LnF2c3RmaXcKKyAgICA0NSwgLy8gbGx2bS5wcGMucXB4LnF2c3RmaXdhCisgICAgNDUsIC8vIGxsdm0ucHBjLnFweC5xdnN0ZnMKKyAgICA0NSwgLy8gbGx2bS5wcGMucXB4LnF2c3Rmc2EKICAgICAxLCAvLyBsbHZtLnBwYy5zY2FsYXIuZXh0cmFjdC5leHBxCiAgICAgMSwgLy8gbGx2bS5wcGMuc2NhbGFyLmluc2VydC5leHAucXAKICAgICAzLCAvLyBsbHZtLnBwYy5zZXQudGV4YXNyCkBAIC0xNDA4MiwxMiArMTQyNzEsMTIgQEAKICAgICAyLCAvLyBsbHZtLnBwYy52c3gubHh2bGwKICAgICAyLCAvLyBsbHZtLnBwYy52c3gubHh2dzR4CiAgICAgMiwgLy8gbGx2bS5wcGMudnN4Lmx4dnc0eC5iZQotICAgIDQyLCAvLyBsbHZtLnBwYy52c3guc3R4dmQyeAotICAgIDQyLCAvLyBsbHZtLnBwYy52c3guc3R4dmQyeC5iZQotICAgIDQyLCAvLyBsbHZtLnBwYy52c3guc3R4dmwKLSAgICA0MiwgLy8gbGx2bS5wcGMudnN4LnN0eHZsbAotICAgIDQyLCAvLyBsbHZtLnBwYy52c3guc3R4dnc0eAotICAgIDQyLCAvLyBsbHZtLnBwYy52c3guc3R4dnc0eC5iZQorICAgIDQ1LCAvLyBsbHZtLnBwYy52c3guc3R4dmQyeAorICAgIDQ1LCAvLyBsbHZtLnBwYy52c3guc3R4dmQyeC5iZQorICAgIDQ1LCAvLyBsbHZtLnBwYy52c3guc3R4dmwKKyAgICA0NSwgLy8gbGx2bS5wcGMudnN4LnN0eHZsbAorICAgIDQ1LCAvLyBsbHZtLnBwYy52c3guc3R4dnc0eAorICAgIDQ1LCAvLyBsbHZtLnBwYy52c3guc3R4dnc0eC5iZQogICAgIDEsIC8vIGxsdm0ucHBjLnZzeC54c21heGRwCiAgICAgMSwgLy8gbGx2bS5wcGMudnN4LnhzbWluZHAKICAgICAxLCAvLyBsbHZtLnBwYy52c3gueHZjbXBlcWRwCkBAIC0xNDEzOSw3ICsxNDMyOCw3IEBACiAgICAgMSwgLy8gbGx2bS5yNjAwLmRkeAogICAgIDEsIC8vIGxsdm0ucjYwMC5kZHkKICAgICA0LCAvLyBsbHZtLnI2MDAuZG90NAotICAgIDM1LCAvLyBsbHZtLnI2MDAuZ3JvdXAuYmFycmllcgorICAgIDM4LCAvLyBsbHZtLnI2MDAuZ3JvdXAuYmFycmllcgogICAgIDQsIC8vIGxsdm0ucjYwMC5pbXBsaWNpdGFyZy5wdHIKICAgICAzLCAvLyBsbHZtLnI2MDAua2lsbAogICAgIDMsIC8vIGxsdm0ucjYwMC5yYXQuc3RvcmUudHlwZWQKQEAgLTE0MTcxLDIzICsxNDM2MCwzMyBAQAogICAgIDEsIC8vIGxsdm0ucjYwMC50eGxjCiAgICAgMSwgLy8gbGx2bS5yNjAwLnR4cQogICAgIDE4LCAvLyBsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcuYWRkLmkzMgorICAgIDE4LCAvLyBsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcuYWRkLmk2NAogICAgIDE4LCAvLyBsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcubWF4LmkzMgorICAgIDE4LCAvLyBsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcubWF4Lmk2NAogICAgIDE4LCAvLyBsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcubWluLmkzMgorICAgIDE4LCAvLyBsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcubWluLmk2NAogICAgIDE4LCAvLyBsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcubmFuZC5pMzIKKyAgICAxOCwgLy8gbGx2bS5yaXNjdi5tYXNrZWQuYXRvbWljcm13Lm5hbmQuaTY0CiAgICAgMTgsIC8vIGxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy5zdWIuaTMyCisgICAgMTgsIC8vIGxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy5zdWIuaTY0CiAgICAgMTgsIC8vIGxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy51bWF4LmkzMgorICAgIDE4LCAvLyBsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcudW1heC5pNjQKICAgICAxOCwgLy8gbGx2bS5yaXNjdi5tYXNrZWQuYXRvbWljcm13LnVtaW4uaTMyCisgICAgMTgsIC8vIGxsdm0ucmlzY3YubWFza2VkLmF0b21pY3Jtdy51bWluLmk2NAogICAgIDE4LCAvLyBsbHZtLnJpc2N2Lm1hc2tlZC5hdG9taWNybXcueGNoZy5pMzIKKyAgICAxOCwgLy8gbGx2bS5yaXNjdi5tYXNrZWQuYXRvbWljcm13LnhjaGcuaTY0CisgICAgMTgsIC8vIGxsdm0ucmlzY3YubWFza2VkLmNtcHhjaGcuaTMyCisgICAgMTgsIC8vIGxsdm0ucmlzY3YubWFza2VkLmNtcHhjaGcuaTY0CiAgICAgMywgLy8gbGx2bS5zMzkwLmVmcGMKICAgICAxLCAvLyBsbHZtLnMzOTAuZXRuZAogICAgIDEsIC8vIGxsdm0uczM5MC5sY2JiCi0gICAgNDIsIC8vIGxsdm0uczM5MC5udHN0ZworICAgIDQ1LCAvLyBsbHZtLnMzOTAubnRzdGcKICAgICAzLCAvLyBsbHZtLnMzOTAucHBhLnR4YXNzaXN0CiAgICAgMywgLy8gbGx2bS5zMzkwLnNmcGMKLSAgICA0NCwgLy8gbGx2bS5zMzkwLnRhYm9ydAotICAgIDQ1LCAvLyBsbHZtLnMzOTAudGJlZ2luCi0gICAgNDUsIC8vIGxsdm0uczM5MC50YmVnaW4ubm9mbG9hdAotICAgIDQ1LCAvLyBsbHZtLnMzOTAudGJlZ2luYworICAgIDQ3LCAvLyBsbHZtLnMzOTAudGFib3J0CisgICAgNDgsIC8vIGxsdm0uczM5MC50YmVnaW4KKyAgICA0OCwgLy8gbGx2bS5zMzkwLnRiZWdpbi5ub2Zsb2F0CisgICAgNDgsIC8vIGxsdm0uczM5MC50YmVnaW5jCiAgICAgMSwgLy8gbGx2bS5zMzkwLnRkYwogICAgIDMsIC8vIGxsdm0uczM5MC50ZW5kCiAgICAgMSwgLy8gbGx2bS5zMzkwLnZhY2NiCkBAIC0xNDM2NSw3ICsxNDU2NCw3IEBACiAgICAgMSwgLy8gbGx2bS5zMzkwLnZzcmFiCiAgICAgMSwgLy8gbGx2bS5zMzkwLnZzcmwKICAgICAxLCAvLyBsbHZtLnMzOTAudnNybGIKLSAgICA0MiwgLy8gbGx2bS5zMzkwLnZzdGwKKyAgICA0NSwgLy8gbGx2bS5zMzkwLnZzdGwKICAgICAxLCAvLyBsbHZtLnMzOTAudnN0cmNiCiAgICAgMSwgLy8gbGx2bS5zMzkwLnZzdHJjYnMKICAgICAxLCAvLyBsbHZtLnMzOTAudnN0cmNmCkBAIC0xNDM3OCw3ICsxNDU3Nyw3IEBACiAgICAgMSwgLy8gbGx2bS5zMzkwLnZzdHJjemZzCiAgICAgMSwgLy8gbGx2bS5zMzkwLnZzdHJjemgKICAgICAxLCAvLyBsbHZtLnMzOTAudnN0cmN6aHMKLSAgICA0MiwgLy8gbGx2bS5zMzkwLnZzdHJsCisgICAgNDUsIC8vIGxsdm0uczM5MC52c3RybAogICAgIDEsIC8vIGxsdm0uczM5MC52c3VtYgogICAgIDEsIC8vIGxsdm0uczM5MC52c3VtZ2YKICAgICAxLCAvLyBsbHZtLnMzOTAudnN1bWdoCkBAIC0xNDM5OCwyOSArMTQ1OTcsMjcgQEAKICAgICAxLCAvLyBsbHZtLnMzOTAudnVwbGxiCiAgICAgMSwgLy8gbGx2bS5zMzkwLnZ1cGxsZgogICAgIDEsIC8vIGxsdm0uczM5MC52dXBsbGgKLSAgICA0LCAvLyBsbHZtLndhc20uYWRkLnNhdHVyYXRlLnNpZ25lZAotICAgIDQsIC8vIGxsdm0ud2FzbS5hZGQuc2F0dXJhdGUudW5zaWduZWQKICAgICA0LCAvLyBsbHZtLndhc20uYWxsdHJ1ZQogICAgIDQsIC8vIGxsdm0ud2FzbS5hbnl0cnVlCi0gICAgNDYsIC8vIGxsdm0ud2FzbS5hdG9taWMubm90aWZ5Ci0gICAgNDcsIC8vIGxsdm0ud2FzbS5hdG9taWMud2FpdC5pMzIKLSAgICA0NywgLy8gbGx2bS53YXNtLmF0b21pYy53YWl0Lmk2NAorICAgIDQ5LCAvLyBsbHZtLndhc20uYXRvbWljLm5vdGlmeQorICAgIDUwLCAvLyBsbHZtLndhc20uYXRvbWljLndhaXQuaTMyCisgICAgNTAsIC8vIGxsdm0ud2FzbS5hdG9taWMud2FpdC5pNjQKICAgICA0LCAvLyBsbHZtLndhc20uYml0c2VsZWN0Ci0gICAgNDgsIC8vIGxsdm0ud2FzbS5jYXRjaAotICAgIDE2LCAvLyBsbHZtLndhc20uY3VycmVudC5tZW1vcnkKLSAgICA0OCwgLy8gbGx2bS53YXNtLmdldC5laHNlbGVjdG9yCi0gICAgNDgsIC8vIGxsdm0ud2FzbS5nZXQuZXhjZXB0aW9uCi0gICAgMywgLy8gbGx2bS53YXNtLmdyb3cubWVtb3J5CisgICAgNTEsIC8vIGxsdm0ud2FzbS5kYXRhLmRyb3AKKyAgICA1MiwgLy8gbGx2bS53YXNtLmV4dHJhY3QuZXhjZXB0aW9uCisgICAgNTIsIC8vIGxsdm0ud2FzbS5nZXQuZWhzZWxlY3RvcgorICAgIDUyLCAvLyBsbHZtLndhc20uZ2V0LmV4Y2VwdGlvbgogICAgIDEsIC8vIGxsdm0ud2FzbS5sYW5kaW5ncGFkLmluZGV4CiAgICAgMSwgLy8gbGx2bS53YXNtLmxzZGEKLSAgICAzLCAvLyBsbHZtLndhc20ubWVtLmdyb3cKLSAgICAxNiwgLy8gbGx2bS53YXNtLm1lbS5zaXplCiAgICAgMywgLy8gbGx2bS53YXNtLm1lbW9yeS5ncm93CisgICAgNTMsIC8vIGxsdm0ud2FzbS5tZW1vcnkuaW5pdAogICAgIDE2LCAvLyBsbHZtLndhc20ubWVtb3J5LnNpemUKLSAgICA0OSwgLy8gbGx2bS53YXNtLnJldGhyb3cKKyAgICA1NCwgLy8gbGx2bS53YXNtLnJldGhyb3cKICAgICA0LCAvLyBsbHZtLndhc20uc3ViLnNhdHVyYXRlLnNpZ25lZAogICAgIDQsIC8vIGxsdm0ud2FzbS5zdWIuc2F0dXJhdGUudW5zaWduZWQKLSAgICA0OSwgLy8gbGx2bS53YXNtLnRocm93CisgICAgNTQsIC8vIGxsdm0ud2FzbS50aHJvdworICAgIDQsIC8vIGxsdm0ud2FzbS50cnVuYy5zYXR1cmF0ZS5zaWduZWQKKyAgICA0LCAvLyBsbHZtLndhc20udHJ1bmMuc2F0dXJhdGUudW5zaWduZWQKICAgICAxLCAvLyBsbHZtLng4Ni4zZG5vdy5wYXZndXNiCiAgICAgMSwgLy8gbGx2bS54ODYuM2Rub3cucGYyaWQKICAgICAxLCAvLyBsbHZtLng4Ni4zZG5vdy5wZmFjYwpAQCAtMTQ0NDUsMTAgKzE0NjQyLDggQEAKICAgICAxLCAvLyBsbHZtLng4Ni4zZG5vd2EucGZwbmFjYwogICAgIDEsIC8vIGxsdm0ueDg2LjNkbm93YS5waTJmdwogICAgIDEsIC8vIGxsdm0ueDg2LjNkbm93YS5wc3dhcGQKLSAgICAxLCAvLyBsbHZtLng4Ni5hZGRjYXJyeS51MzIKLSAgICAxLCAvLyBsbHZtLng4Ni5hZGRjYXJyeS51NjQKLSAgICAxLCAvLyBsbHZtLng4Ni5hZGRjYXJyeXgudTMyCi0gICAgMSwgLy8gbGx2bS54ODYuYWRkY2Fycnl4LnU2NAorICAgIDEsIC8vIGxsdm0ueDg2LmFkZGNhcnJ5LjMyCisgICAgMSwgLy8gbGx2bS54ODYuYWRkY2FycnkuNjQKICAgICAxLCAvLyBsbHZtLng4Ni5hZXNuaS5hZXNkZWMKICAgICAxLCAvLyBsbHZtLng4Ni5hZXNuaS5hZXNkZWMuMjU2CiAgICAgMSwgLy8gbGx2bS54ODYuYWVzbmkuYWVzZGVjLjUxMgpAQCAtMTQ1NDgsOCArMTQ3NDMsNiBAQAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDIucGFja3Nzd2IKICAgICAxLCAvLyBsbHZtLng4Ni5hdngyLnBhY2t1c2R3CiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4Mi5wYWNrdXN3YgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDIucGFkZHMuYgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDIucGFkZHMudwogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDIucGJsZW5kdmIKICAgICAxLCAvLyBsbHZtLng4Ni5hdngyLnBlcm1kCiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4Mi5wZXJtcHMKQEAgLTE0NTk2LDggKzE0Nzg5LDYgQEAKICAgICAxLCAvLyBsbHZtLng4Ni5hdngyLnBzcmx2LmQuMjU2CiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4Mi5wc3Jsdi5xCiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4Mi5wc3Jsdi5xLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDIucHN1YnMuYgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDIucHN1YnMudwogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5hZGQucGQuNTEyCiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLmFkZC5wcy41MTIKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIuYnJvYWRjYXN0bWIuMTI4CkBAIC0xNDYxMiw2ICsxNDgwMywxMiBAQAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5jbXAucHMuMTI4CiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLmNtcC5wcy4yNTYKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIuY21wLnBzLjUxMgorICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5jb25mbGljdC5kLjEyOAorICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5jb25mbGljdC5kLjI1NgorICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5jb25mbGljdC5kLjUxMgorICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5jb25mbGljdC5xLjEyOAorICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5jb25mbGljdC5xLjI1NgorICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5jb25mbGljdC5xLjUxMgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5jdnRzaTJzZDY0CiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLmN2dHNpMnNzMzIKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIuY3Z0c2kyc3M2NApAQCAtMTQ2ODMsMzEgKzE0ODgwLDcgQEAKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5hZGQuc3Mucm91bmQKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jbXAuc2QKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jbXAuc3MKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5iLjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmNvbXByZXNzLmIuMjU2Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MuYi41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5kLjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmNvbXByZXNzLmQuMjU2Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MuZC41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5wZC4xMjgKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5wZC4yNTYKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5wZC41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5wcy4xMjgKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5wcy4yNTYKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5wcy41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy5xLjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmNvbXByZXNzLnEuMjU2Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3MucS41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcy53LjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmNvbXByZXNzLncuMjU2Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY29tcHJlc3Mudy41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb25mbGljdC5kLjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmNvbmZsaWN0LmQuMjU2Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY29uZmxpY3QuZC41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb25mbGljdC5xLjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmNvbmZsaWN0LnEuMjU2Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY29uZmxpY3QucS41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jdnRkcTJwcy41MTIKKyAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jb21wcmVzcwogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHBkMmRxLjEyOAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHBkMmRxLjUxMgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHBkMnBzCkBAIC0xNDczNCwxMCArMTQ5MDcsNyBAQAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHBzMnVxcS4xMjgKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jdnRwczJ1cXEuMjU2CiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0cHMydXFxLjUxMgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHFxMnBkLjUxMgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHFxMnBzLjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHFxMnBzLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHFxMnBzLjUxMgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHNkMnNzLnJvdW5kCiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0c3Myc2Qucm91bmQKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jdnR0cGQyZHEuMTI4CkBAIC0xNDc2MSwzMSArMTQ5MzEsMTAgQEAKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jdnR0cHMydXFxLjEyOAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHRwczJ1cXEuMjU2CiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0dHBzMnVxcS41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jdnR1ZHEycHMuNTEyCi0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0dXFxMnBkLjUxMgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmN2dHVxcTJwcy4xMjgKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5jdnR1cXEycHMuMjU2Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suY3Z0dXFxMnBzLjUxMgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmRpdi5zZC5yb3VuZAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmRpdi5zcy5yb3VuZAotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5iLjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5iLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5iLjUxMgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5kLjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5kLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5kLjUxMgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5wZC4xMjgKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQucGQuMjU2Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZXhwYW5kLnBkLjUxMgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5wcy4xMjgKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5leHBhbmQucHMuMjU2Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZXhwYW5kLnBzLjUxMgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5xLjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5xLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC5xLjUxMgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC53LjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC53LjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZC53LjUxMgorICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmV4cGFuZAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmZpeHVwaW1tLnBkLjEyOAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmZpeHVwaW1tLnBkLjI1NgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmZpeHVwaW1tLnBkLjUxMgpAQCAtMTQ3OTYsNiArMTQ5NDUsMzAgQEAKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5maXh1cGltbS5zcwogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmZwY2xhc3Muc2QKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5mcGNsYXNzLnNzCisgICAgMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyLmRwZC41MTIKKyAgICAyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIuZHBpLjUxMgorICAgIDIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmdhdGhlci5kcHEuNTEyCisgICAgMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyLmRwcy41MTIKKyAgICAyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIucXBkLjUxMgorICAgIDIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmdhdGhlci5xcGkuNTEyCisgICAgMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyLnFwcS41MTIKKyAgICAyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIucXBzLjUxMgorICAgIDIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmdhdGhlcjNkaXYyLmRmCisgICAgMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM2RpdjIuZGkKKyAgICAyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzZGl2NC5kZgorICAgIDIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmdhdGhlcjNkaXY0LmRpCisgICAgMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM2RpdjQuc2YKKyAgICAyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzZGl2NC5zaQorICAgIDIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmdhdGhlcjNkaXY4LnNmCisgICAgMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM2Rpdjguc2kKKyAgICAyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzc2l2Mi5kZgorICAgIDIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmdhdGhlcjNzaXYyLmRpCisgICAgMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM3NpdjQuZGYKKyAgICAyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzc2l2NC5kaQorICAgIDIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmdhdGhlcjNzaXY0LnNmCisgICAgMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZ2F0aGVyM3NpdjQuc2kKKyAgICAyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nYXRoZXIzc2l2OC5zZgorICAgIDIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmdhdGhlcjNzaXY4LnNpCiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suZ2V0ZXhwLnBkLjEyOAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLmdldGV4cC5wZC4yNTYKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5nZXRleHAucGQuNTEyCkBAIC0xNDgzNyw4ICsxNTAxMCw2IEBACiAgICAgMjIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3YucWIubWVtLjI1NgogICAgIDIyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LnFiLm1lbS41MTIKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LnFkLjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3YucWQuMjU2Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi5xZC41MTIKICAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi5xZC5tZW0uMTI4CiAgICAgMjIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3YucWQubWVtLjI1NgogICAgIDIyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LnFkLm1lbS41MTIKQEAgLTE0ODQ5LDggKzE1MDIwLDYgQEAKICAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi5xdy5tZW0uMjU2CiAgICAgMjIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3YucXcubWVtLjUxMgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3Yud2IuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi53Yi4yNTYKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LndiLjUxMgogICAgIDIyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92LndiLm1lbS4xMjgKICAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sucG1vdi53Yi5tZW0uMjU2CiAgICAgMjIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtb3Yud2IubWVtLjUxMgpAQCAtMTQ5MjYsOSArMTUwOTUsNiBAQAogICAgIDIyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92dXMud2IubWVtLjEyOAogICAgIDIyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92dXMud2IubWVtLjI1NgogICAgIDIyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5wbW92dXMud2IubWVtLjUxMgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtdWx0aXNoaWZ0LnFiLjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtdWx0aXNoaWZ0LnFiLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnBtdWx0aXNoaWZ0LnFiLjUxMgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnJhbmdlLnBkLjEyOAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnJhbmdlLnBkLjI1NgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnJhbmdlLnBkLjUxMgpAQCAtMTQ5NjEsNiArMTUxMjcsMzAgQEAKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2FsZWYucHMuNTEyCiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhbGVmLnNkCiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhbGVmLnNzCisgICAgMjIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnNjYXR0ZXIuZHBkLjUxMgorICAgIDIyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyLmRwaS41MTIKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlci5kcHEuNTEyCisgICAgMjIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnNjYXR0ZXIuZHBzLjUxMgorICAgIDIyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyLnFwZC41MTIKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlci5xcGkuNTEyCisgICAgMjIsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnNjYXR0ZXIucXBxLjUxMgorICAgIDIyLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zY2F0dGVyLnFwcy41MTIKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjIuZGYKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjIuZGkKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjQuZGYKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjQuZGkKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjQuc2YKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjQuc2kKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjguc2YKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcmRpdjguc2kKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjIuZGYKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjIuZGkKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjQuZGYKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjQuZGkKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjQuc2YKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjQuc2kKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjguc2YKKyAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc2NhdHRlcnNpdjguc2kKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay5zcXJ0LnNkCiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2suc3FydC5zcwogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnN1Yi5zZC5yb3VuZApAQCAtMTQ5NzEsMjcgKzE1MTYxLDYgQEAKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52Y3Z0cHMycGguMTI4CiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudmN2dHBzMnBoLjI1NgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZjdnRwczJwaC41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52cHNobGR2LmQuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaGxkdi5kLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hsZHYuZC41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52cHNobGR2LnEuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaGxkdi5xLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hsZHYucS41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52cHNobGR2LncuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaGxkdi53LjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hsZHYudy41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52cHNocmR2LmQuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaHJkdi5kLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hyZHYuZC41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52cHNocmR2LnEuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaHJkdi5xLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hyZHYucS41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52cHNocmR2LncuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaHJkdi53LjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2hyZHYudy41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFzay52cHNodWZiaXRxbWIuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2sudnBzaHVmYml0cW1iLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrLnZwc2h1ZmJpdHFtYi41MTIKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFza3ouZml4dXBpbW0ucGQuMTI4CiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LmZpeHVwaW1tLnBkLjI1NgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrei5maXh1cGltbS5wZC41MTIKQEAgLTE1MDAwLDI0ICsxNTE2OSw2IEBACiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LmZpeHVwaW1tLnBzLjUxMgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrei5maXh1cGltbS5zZAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrei5maXh1cGltbS5zcwotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNobGR2LmQuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hsZHYuZC4yNTYKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFza3oudnBzaGxkdi5kLjUxMgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNobGR2LnEuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hsZHYucS4yNTYKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFza3oudnBzaGxkdi5xLjUxMgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNobGR2LncuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hsZHYudy4yNTYKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFza3oudnBzaGxkdi53LjUxMgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNocmR2LmQuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hyZHYuZC4yNTYKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFza3oudnBzaHJkdi5kLjUxMgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNocmR2LnEuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hyZHYucS4yNTYKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFza3oudnBzaHJkdi5xLjUxMgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXNrei52cHNocmR2LncuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1hc2t6LnZwc2hyZHYudy4yNTYKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWFza3oudnBzaHJkdi53LjUxMgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5tYXgucGQuNTEyCiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLm1heC5wcy41MTIKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIubWluLnBkLjUxMgpAQCAtMTUwMjgsOCArMTUxNzksNiBAQAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5wYWNrc3N3Yi41MTIKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucGFja3VzZHcuNTEyCiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnBhY2t1c3diLjUxMgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5wYWRkcy5iLjUxMgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5wYWRkcy53LjUxMgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5wZXJtdmFyLmRmLjI1NgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5wZXJtdmFyLmRmLjUxMgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5wZXJtdmFyLmRpLjI1NgpAQCAtMTUwNDcsMzAgKzE1MTk2LDkgQEAKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucG11bC5oci5zdy41MTIKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucG11bGgudy41MTIKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucG11bGh1LncuNTEyCi0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2wuZC4xMjgKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucHJvbC5kLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5wcm9sLmQuNTEyCi0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2wucS4xMjgKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucHJvbC5xLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5wcm9sLnEuNTEyCi0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2x2LmQuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2x2LmQuMjU2Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2x2LmQuNTEyCi0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2x2LnEuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2x2LnEuMjU2Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb2x2LnEuNTEyCi0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3IuZC4xMjgKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucHJvci5kLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5wcm9yLmQuNTEyCi0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3IucS4xMjgKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucHJvci5xLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5wcm9yLnEuNTEyCi0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3J2LmQuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3J2LmQuMjU2Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3J2LmQuNTEyCi0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3J2LnEuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3J2LnEuMjU2Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnByb3J2LnEuNTEyCisgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnBtdWx0aXNoaWZ0LnFiLjEyOAorICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5wbXVsdGlzaGlmdC5xYi4yNTYKKyAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucG11bHRpc2hpZnQucWIuNTEyCiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnBzYWQuYncuNTEyCiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnBzaHVmLmIuNTEyCiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnBzbGwuZC41MTIKQEAgLTE1MTEyLDggKzE1MjQwLDYgQEAKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucHNybHYudy4xMjgKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucHNybHYudy4yNTYKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucHNybHYudy41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucHN1YnMuYi41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucHN1YnMudy41MTIKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucHRlcm5sb2cuZC4xMjgKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucHRlcm5sb2cuZC4yNTYKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIucHRlcm5sb2cuZC41MTIKQEAgLTE1MTcyLDEwICsxNTI5OCwxMiBAQAogICAgIDIyLCAvLyBsbHZtLng4Ni5hdng1MTIuc2NhdHRlcnNpdjQuc2kKICAgICAyMiwgLy8gbGx2bS54ODYuYXZ4NTEyLnNjYXR0ZXJzaXY4LnNmCiAgICAgMjIsIC8vIGxsdm0ueDg2LmF2eDUxMi5zY2F0dGVyc2l2OC5zaQorICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5zaXRvZnAucm91bmQKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIuc3FydC5wZC41MTIKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIuc3FydC5wcy41MTIKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIuc3ViLnBkLjUxMgogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi5zdWIucHMuNTEyCisgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnVpdG9mcC5yb3VuZAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi52Y29taS5zZAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi52Y29taS5zcwogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi52Y3Z0c2Qyc2kzMgpAQCAtMTUyMzAsMjQgKzE1MzU4LDkgQEAKICAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIudnBtYWRkNTJsLnVxLjEyOAogICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi52cG1hZGQ1MmwudXEuMjU2CiAgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnZwbWFkZDUybC51cS41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIudnBzaGxkLmQuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnZwc2hsZC5kLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNobGQuZC41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIudnBzaGxkLnEuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnZwc2hsZC5xLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNobGQucS41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIudnBzaGxkLncuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnZwc2hsZC53LjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNobGQudy41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIudnBzaHJkLmQuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnZwc2hyZC5kLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNocmQuZC41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIudnBzaHJkLnEuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnZwc2hyZC5xLjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNocmQucS41MTIKLSAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIudnBzaHJkLncuMTI4Ci0gICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnZwc2hyZC53LjI1NgotICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNocmQudy41MTIKKyAgICAxLCAvLyBsbHZtLng4Ni5hdng1MTIudnBzaHVmYml0cW1iLjEyOAorICAgIDEsIC8vIGxsdm0ueDg2LmF2eDUxMi52cHNodWZiaXRxbWIuMjU2CisgICAgMSwgLy8gbGx2bS54ODYuYXZ4NTEyLnZwc2h1ZmJpdHFtYi41MTIKICAgICAxLCAvLyBsbHZtLng4Ni5ibWkuYmV4dHIuMzIKICAgICAxLCAvLyBsbHZtLng4Ni5ibWkuYmV4dHIuNjQKICAgICAxLCAvLyBsbHZtLng4Ni5ibWkuYnpoaS4zMgpAQCAtMTUzODEsNyArMTU0OTQsNiBAQAogICAgIDMsIC8vIGxsdm0ueDg2LnNlaC5laGd1YXJkCiAgICAgMywgLy8gbGx2bS54ODYuc2VoLmVocmVnbm9kZQogICAgIDEsIC8vIGxsdm0ueDg2LnNlaC5sc2RhCi0gICAgMSwgLy8gbGx2bS54ODYuc2VoLnJlY292ZXJmcAogICAgIDMsIC8vIGxsdm0ueDg2LnNldHNzYnN5CiAgICAgMSwgLy8gbGx2bS54ODYuc2hhMW1zZzEKICAgICAxLCAvLyBsbHZtLng4Ni5zaGExbXNnMgpAQCAtMTU0NTgsOCArMTU1NzAsNiBAQAogICAgIDEsIC8vIGxsdm0ueDg2LnNzZTIucGFja3NzZHcuMTI4CiAgICAgMSwgLy8gbGx2bS54ODYuc3NlMi5wYWNrc3N3Yi4xMjgKICAgICAxLCAvLyBsbHZtLng4Ni5zc2UyLnBhY2t1c3diLjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LnNzZTIucGFkZHMuYgotICAgIDEsIC8vIGxsdm0ueDg2LnNzZTIucGFkZHMudwogICAgIDMsIC8vIGxsdm0ueDg2LnNzZTIucGF1c2UKICAgICAxLCAvLyBsbHZtLng4Ni5zc2UyLnBtYWRkLndkCiAgICAgMSwgLy8gbGx2bS54ODYuc3NlMi5wbW92bXNrYi4xMjgKQEAgLTE1NDgyLDggKzE1NTkyLDYgQEAKICAgICAxLCAvLyBsbHZtLng4Ni5zc2UyLnBzcmxpLmQKICAgICAxLCAvLyBsbHZtLng4Ni5zc2UyLnBzcmxpLnEKICAgICAxLCAvLyBsbHZtLng4Ni5zc2UyLnBzcmxpLncKLSAgICAxLCAvLyBsbHZtLng4Ni5zc2UyLnBzdWJzLmIKLSAgICAxLCAvLyBsbHZtLng4Ni5zc2UyLnBzdWJzLncKICAgICAxLCAvLyBsbHZtLng4Ni5zc2UyLnVjb21pZXEuc2QKICAgICAxLCAvLyBsbHZtLng4Ni5zc2UyLnVjb21pZ2Uuc2QKICAgICAxLCAvLyBsbHZtLng4Ni5zc2UyLnVjb21pZ3Quc2QKQEAgLTE1NTY0LDggKzE1NjcyLDggQEAKICAgICAxLCAvLyBsbHZtLng4Ni5zc3NlMy5wc2lnbi5kLjEyOAogICAgIDEsIC8vIGxsdm0ueDg2LnNzc2UzLnBzaWduLncKICAgICAxLCAvLyBsbHZtLng4Ni5zc3NlMy5wc2lnbi53LjEyOAotICAgIDEsIC8vIGxsdm0ueDg2LnN1YmJvcnJvdy51MzIKLSAgICAxLCAvLyBsbHZtLng4Ni5zdWJib3Jyb3cudTY0CisgICAgMSwgLy8gbGx2bS54ODYuc3ViYm9ycm93LjMyCisgICAgMSwgLy8gbGx2bS54ODYuc3ViYm9ycm93LjY0CiAgICAgMSwgLy8gbGx2bS54ODYudGJtLmJleHRyaS51MzIKICAgICAxLCAvLyBsbHZtLng4Ni50Ym0uYmV4dHJpLnU2NAogICAgIDMsIC8vIGxsdm0ueDg2LnRwYXVzZQpAQCAtMTU2MDUsMTQgKzE1NzEzLDYgQEAKICAgICAxLCAvLyBsbHZtLng4Ni54b3AudmZyY3oucHMuMjU2CiAgICAgMSwgLy8gbGx2bS54ODYueG9wLnZmcmN6LnNkCiAgICAgMSwgLy8gbGx2bS54ODYueG9wLnZmcmN6LnNzCi0gICAgMSwgLy8gbGx2bS54ODYueG9wLnZwY29tYgotICAgIDEsIC8vIGxsdm0ueDg2LnhvcC52cGNvbWQKLSAgICAxLCAvLyBsbHZtLng4Ni54b3AudnBjb21xCi0gICAgMSwgLy8gbGx2bS54ODYueG9wLnZwY29tdWIKLSAgICAxLCAvLyBsbHZtLng4Ni54b3AudnBjb211ZAotICAgIDEsIC8vIGxsdm0ueDg2LnhvcC52cGNvbXVxCi0gICAgMSwgLy8gbGx2bS54ODYueG9wLnZwY29tdXcKLSAgICAxLCAvLyBsbHZtLng4Ni54b3AudnBjb213CiAgICAgMSwgLy8gbGx2bS54ODYueG9wLnZwZXJtaWwycGQKICAgICAxLCAvLyBsbHZtLng4Ni54b3AudnBlcm1pbDJwZC4yNTYKICAgICAxLCAvLyBsbHZtLng4Ni54b3AudnBlcm1pbDJwcwpAQCAtMTU2NDUsMTQgKzE1NzQ1LDYgQEAKICAgICAxLCAvLyBsbHZtLng4Ni54b3AudnBtYWRjc3N3ZAogICAgIDEsIC8vIGxsdm0ueDg2LnhvcC52cG1hZGNzd2QKICAgICAxLCAvLyBsbHZtLng4Ni54b3AudnBwZXJtCi0gICAgMSwgLy8gbGx2bS54ODYueG9wLnZwcm90YgotICAgIDEsIC8vIGxsdm0ueDg2LnhvcC52cHJvdGJpCi0gICAgMSwgLy8gbGx2bS54ODYueG9wLnZwcm90ZAotICAgIDEsIC8vIGxsdm0ueDg2LnhvcC52cHJvdGRpCi0gICAgMSwgLy8gbGx2bS54ODYueG9wLnZwcm90cQotICAgIDEsIC8vIGxsdm0ueDg2LnhvcC52cHJvdHFpCi0gICAgMSwgLy8gbGx2bS54ODYueG9wLnZwcm90dwotICAgIDEsIC8vIGxsdm0ueDg2LnhvcC52cHJvdHdpCiAgICAgMSwgLy8gbGx2bS54ODYueG9wLnZwc2hhYgogICAgIDEsIC8vIGxsdm0ueDg2LnhvcC52cHNoYWQKICAgICAxLCAvLyBsbHZtLng4Ni54b3AudnBzaGFxCkBAIC0xNTY3Nyw1NSArMTU3NjksNTUgQEAKICAgICAzLCAvLyBsbHZtLng4Ni54dGVzdAogICAgIDEsIC8vIGxsdm0ueGNvcmUuYml0cmV2CiAgICAgMywgLy8gbGx2bS54Y29yZS5jaGVja2V2ZW50Ci0gICAgNTAsIC8vIGxsdm0ueGNvcmUuY2hrY3QKKyAgICAzNywgLy8gbGx2bS54Y29yZS5jaGtjdAogICAgIDMsIC8vIGxsdm0ueGNvcmUuY2xyZQotICAgIDUwLCAvLyBsbHZtLnhjb3JlLmNscnB0CisgICAgMzcsIC8vIGxsdm0ueGNvcmUuY2xycHQKICAgICAzLCAvLyBsbHZtLnhjb3JlLmNscnNyCiAgICAgMSwgLy8gbGx2bS54Y29yZS5jcmMzMgogICAgIDEsIC8vIGxsdm0ueGNvcmUuY3JjOAotICAgIDUwLCAvLyBsbHZtLnhjb3JlLmVkdQotICAgIDUwLCAvLyBsbHZtLnhjb3JlLmVldQotICAgIDUwLCAvLyBsbHZtLnhjb3JlLmVuZGluCi0gICAgNTAsIC8vIGxsdm0ueGNvcmUuZnJlZXIKKyAgICAzNywgLy8gbGx2bS54Y29yZS5lZHUKKyAgICAzNywgLy8gbGx2bS54Y29yZS5lZXUKKyAgICAzNywgLy8gbGx2bS54Y29yZS5lbmRpbgorICAgIDM3LCAvLyBsbHZtLnhjb3JlLmZyZWVyCiAgICAgMywgLy8gbGx2bS54Y29yZS5nZXRlZAogICAgIDMsIC8vIGxsdm0ueGNvcmUuZ2V0ZXQKICAgICAxLCAvLyBsbHZtLnhjb3JlLmdldGlkCiAgICAgMywgLy8gbGx2bS54Y29yZS5nZXRwcwogICAgIDMsIC8vIGxsdm0ueGNvcmUuZ2V0cgotICAgIDUwLCAvLyBsbHZtLnhjb3JlLmdldHN0Ci0gICAgNTAsIC8vIGxsdm0ueGNvcmUuZ2V0dHMKLSAgICA1MCwgLy8gbGx2bS54Y29yZS5pbgotICAgIDUwLCAvLyBsbHZtLnhjb3JlLmluY3QKLSAgICA1MCwgLy8gbGx2bS54Y29yZS5pbml0Y3AKLSAgICA1MCwgLy8gbGx2bS54Y29yZS5pbml0ZHAKLSAgICA1MCwgLy8gbGx2bS54Y29yZS5pbml0bHIKLSAgICA1MCwgLy8gbGx2bS54Y29yZS5pbml0cGMKLSAgICA1MCwgLy8gbGx2bS54Y29yZS5pbml0c3AKLSAgICA1MCwgLy8gbGx2bS54Y29yZS5pbnNocgotICAgIDUwLCAvLyBsbHZtLnhjb3JlLmludAotICAgIDUwLCAvLyBsbHZtLnhjb3JlLm1qb2luCi0gICAgNTAsIC8vIGxsdm0ueGNvcmUubXN5bmMKLSAgICA1MCwgLy8gbGx2bS54Y29yZS5vdXQKLSAgICA1MCwgLy8gbGx2bS54Y29yZS5vdXRjdAotICAgIDUwLCAvLyBsbHZtLnhjb3JlLm91dHNocgotICAgIDUwLCAvLyBsbHZtLnhjb3JlLm91dHQKLSAgICA1MCwgLy8gbGx2bS54Y29yZS5wZWVrCi0gICAgNTAsIC8vIGxsdm0ueGNvcmUuc2V0YwotICAgIDUxLCAvLyBsbHZtLnhjb3JlLnNldGNsawotICAgIDUwLCAvLyBsbHZtLnhjb3JlLnNldGQKLSAgICA1MCwgLy8gbGx2bS54Y29yZS5zZXRldgorICAgIDM3LCAvLyBsbHZtLnhjb3JlLmdldHN0CisgICAgMzcsIC8vIGxsdm0ueGNvcmUuZ2V0dHMKKyAgICAzNywgLy8gbGx2bS54Y29yZS5pbgorICAgIDM3LCAvLyBsbHZtLnhjb3JlLmluY3QKKyAgICAzNywgLy8gbGx2bS54Y29yZS5pbml0Y3AKKyAgICAzNywgLy8gbGx2bS54Y29yZS5pbml0ZHAKKyAgICAzNywgLy8gbGx2bS54Y29yZS5pbml0bHIKKyAgICAzNywgLy8gbGx2bS54Y29yZS5pbml0cGMKKyAgICAzNywgLy8gbGx2bS54Y29yZS5pbml0c3AKKyAgICAzNywgLy8gbGx2bS54Y29yZS5pbnNocgorICAgIDM3LCAvLyBsbHZtLnhjb3JlLmludAorICAgIDM3LCAvLyBsbHZtLnhjb3JlLm1qb2luCisgICAgMzcsIC8vIGxsdm0ueGNvcmUubXN5bmMKKyAgICAzNywgLy8gbGx2bS54Y29yZS5vdXQKKyAgICAzNywgLy8gbGx2bS54Y29yZS5vdXRjdAorICAgIDM3LCAvLyBsbHZtLnhjb3JlLm91dHNocgorICAgIDM3LCAvLyBsbHZtLnhjb3JlLm91dHQKKyAgICAzNywgLy8gbGx2bS54Y29yZS5wZWVrCisgICAgMzcsIC8vIGxsdm0ueGNvcmUuc2V0YworICAgIDU1LCAvLyBsbHZtLnhjb3JlLnNldGNsaworICAgIDM3LCAvLyBsbHZtLnhjb3JlLnNldGQKKyAgICAzNywgLy8gbGx2bS54Y29yZS5zZXRldgogICAgIDMsIC8vIGxsdm0ueGNvcmUuc2V0cHMKLSAgICA1MCwgLy8gbGx2bS54Y29yZS5zZXRwc2MKLSAgICA1MCwgLy8gbGx2bS54Y29yZS5zZXRwdAotICAgIDUxLCAvLyBsbHZtLnhjb3JlLnNldHJkeQorICAgIDM3LCAvLyBsbHZtLnhjb3JlLnNldHBzYworICAgIDM3LCAvLyBsbHZtLnhjb3JlLnNldHB0CisgICAgNTUsIC8vIGxsdm0ueGNvcmUuc2V0cmR5CiAgICAgMywgLy8gbGx2bS54Y29yZS5zZXRzcgotICAgIDUwLCAvLyBsbHZtLnhjb3JlLnNldHR3Ci0gICAgNTAsIC8vIGxsdm0ueGNvcmUuc2V0dgorICAgIDM3LCAvLyBsbHZtLnhjb3JlLnNldHR3CisgICAgMzcsIC8vIGxsdm0ueGNvcmUuc2V0dgogICAgIDEsIC8vIGxsdm0ueGNvcmUuc2V4dAogICAgIDMsIC8vIGxsdm0ueGNvcmUuc3N5bmMKLSAgICA1MCwgLy8gbGx2bS54Y29yZS5zeW5jcgotICAgIDUwLCAvLyBsbHZtLnhjb3JlLnRlc3RjdAotICAgIDUwLCAvLyBsbHZtLnhjb3JlLnRlc3R3Y3QKKyAgICAzNywgLy8gbGx2bS54Y29yZS5zeW5jcgorICAgIDM3LCAvLyBsbHZtLnhjb3JlLnRlc3RjdAorICAgIDM3LCAvLyBsbHZtLnhjb3JlLnRlc3R3Y3QKICAgICAxNiwgLy8gbGx2bS54Y29yZS53YWl0ZXZlbnQKICAgICAxLCAvLyBsbHZtLnhjb3JlLnpleHQKICAgfTsKQEAgLTE1NzQxLDcgKzE1ODMzLDcgQEAKICAgICAgIE51bUF0dHJzID0gMTsKICAgICAgIGJyZWFrOwogICAgICAgfQotICAgIGNhc2UgNTA6IHsKKyAgICBjYXNlIDM3OiB7CiAgICAgICBjb25zdCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEF0dHJQYXJhbTFbXT0ge0F0dHJpYnV0ZTo6Tm9DYXB0dXJlfTsKICAgICAgIEFTWzBdID0gQXR0cmlidXRlTGlzdDo6Z2V0KEMsIDEsIEF0dHJQYXJhbTEpOwogICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRzW10gPSB7QXR0cmlidXRlOjpOb1Vud2luZH07CkBAIC0xNTc0OSw3ICsxNTg0MSw3IEBACiAgICAgICBOdW1BdHRycyA9IDI7CiAgICAgICBicmVhazsKICAgICAgIH0KLSAgICBjYXNlIDUxOiB7CisgICAgY2FzZSA1NTogewogICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRyUGFyYW0xW109IHtBdHRyaWJ1dGU6Ok5vQ2FwdHVyZX07CiAgICAgICBBU1swXSA9IEF0dHJpYnV0ZUxpc3Q6OmdldChDLCAxLCBBdHRyUGFyYW0xKTsKICAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0clBhcmFtMltdPSB7QXR0cmlidXRlOjpOb0NhcHR1cmV9OwpAQCAtMTU4NTEsNyArMTU5NDMsNyBAQAogICAgICAgTnVtQXR0cnMgPSAyOwogICAgICAgYnJlYWs7CiAgICAgICB9Ci0gICAgY2FzZSAzMDogeworICAgIGNhc2UgMzE6IHsKICAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0clBhcmFtNFtdPSB7QXR0cmlidXRlOjpOb0NhcHR1cmV9OwogICAgICAgQVNbMF0gPSBBdHRyaWJ1dGVMaXN0OjpnZXQoQywgNCwgQXR0clBhcmFtNCk7CiAgICAgICBjb25zdCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEF0dHNbXSA9IHtBdHRyaWJ1dGU6Ok5vVW53aW5kLEF0dHJpYnV0ZTo6QXJnTWVtT25seX07CkBAIC0xNTg1OSw3ICsxNTk1MSw3IEBACiAgICAgICBOdW1BdHRycyA9IDI7CiAgICAgICBicmVhazsKICAgICAgIH0KLSAgICBjYXNlIDMxOiB7CisgICAgY2FzZSAzMjogewogICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRyUGFyYW01W109IHtBdHRyaWJ1dGU6Ok5vQ2FwdHVyZX07CiAgICAgICBBU1swXSA9IEF0dHJpYnV0ZUxpc3Q6OmdldChDLCA1LCBBdHRyUGFyYW01KTsKICAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0c1tdID0ge0F0dHJpYnV0ZTo6Tm9VbndpbmQsQXR0cmlidXRlOjpBcmdNZW1Pbmx5fTsKQEAgLTE1ODY3LDcgKzE1OTU5LDcgQEAKICAgICAgIE51bUF0dHJzID0gMjsKICAgICAgIGJyZWFrOwogICAgICAgfQotICAgIGNhc2UgMzI6IHsKKyAgICBjYXNlIDMzOiB7CiAgICAgICBjb25zdCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEF0dHJQYXJhbTZbXT0ge0F0dHJpYnV0ZTo6Tm9DYXB0dXJlfTsKICAgICAgIEFTWzBdID0gQXR0cmlidXRlTGlzdDo6Z2V0KEMsIDYsIEF0dHJQYXJhbTYpOwogICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRzW10gPSB7QXR0cmlidXRlOjpOb1Vud2luZCxBdHRyaWJ1dGU6OkFyZ01lbU9ubHl9OwpAQCAtMTU4ODcsNyArMTU5NzksNyBAQAogICAgICAgTnVtQXR0cnMgPSAxOwogICAgICAgYnJlYWs7CiAgICAgICB9Ci0gICAgY2FzZSAyODogeworICAgIGNhc2UgMjk6IHsKICAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0clBhcmFtMVtdPSB7QXR0cmlidXRlOjpOb0NhcHR1cmUsQXR0cmlidXRlOjpSZWFkT25seX07CiAgICAgICBBU1swXSA9IEF0dHJpYnV0ZUxpc3Q6OmdldChDLCAxLCBBdHRyUGFyYW0xKTsKICAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0c1tdID0ge0F0dHJpYnV0ZTo6Tm9VbndpbmQsQXR0cmlidXRlOjpXcml0ZU9ubHl9OwpAQCAtMTU4OTUsNyArMTU5ODcsNyBAQAogICAgICAgTnVtQXR0cnMgPSAyOwogICAgICAgYnJlYWs7CiAgICAgICB9Ci0gICAgY2FzZSAyOTogeworICAgIGNhc2UgMzA6IHsKICAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0clBhcmFtMltdPSB7QXR0cmlidXRlOjpOb0NhcHR1cmUsQXR0cmlidXRlOjpSZWFkT25seX07CiAgICAgICBBU1swXSA9IEF0dHJpYnV0ZUxpc3Q6OmdldChDLCAyLCBBdHRyUGFyYW0yKTsKICAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0c1tdID0ge0F0dHJpYnV0ZTo6Tm9VbndpbmQsQXR0cmlidXRlOjpXcml0ZU9ubHl9OwpAQCAtMTU5MDMsMTMgKzE1OTk1LDEzIEBACiAgICAgICBOdW1BdHRycyA9IDI7CiAgICAgICBicmVhazsKICAgICAgIH0KLSAgICBjYXNlIDQyOiB7CisgICAgY2FzZSA0NTogewogICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRzW10gPSB7QXR0cmlidXRlOjpOb1Vud2luZCxBdHRyaWJ1dGU6OldyaXRlT25seSxBdHRyaWJ1dGU6OkFyZ01lbU9ubHl9OwogICAgICAgQVNbMF0gPSBBdHRyaWJ1dGVMaXN0OjpnZXQoQywgQXR0cmlidXRlTGlzdDo6RnVuY3Rpb25JbmRleCwgQXR0cyk7CiAgICAgICBOdW1BdHRycyA9IDE7CiAgICAgICBicmVhazsKICAgICAgIH0KLSAgICBjYXNlIDQxOiB7CisgICAgY2FzZSA0NDogewogICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRyUGFyYW0xW109IHtBdHRyaWJ1dGU6Ok5vQ2FwdHVyZSxBdHRyaWJ1dGU6OldyaXRlT25seX07CiAgICAgICBBU1swXSA9IEF0dHJpYnV0ZUxpc3Q6OmdldChDLCAxLCBBdHRyUGFyYW0xKTsKICAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0c1tdID0ge0F0dHJpYnV0ZTo6Tm9VbndpbmQsQXR0cmlidXRlOjpXcml0ZU9ubHksQXR0cmlidXRlOjpBcmdNZW1Pbmx5fTsKQEAgLTE1OTI5LDcgKzE2MDIxLDcgQEAKICAgICAgIE51bUF0dHJzID0gMTsKICAgICAgIGJyZWFrOwogICAgICAgfQotICAgIGNhc2UgMzk6IHsKKyAgICBjYXNlIDQyOiB7CiAgICAgICBjb25zdCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEF0dHJQYXJhbTFbXT0ge0F0dHJpYnV0ZTo6Tm9DYXB0dXJlfTsKICAgICAgIEFTWzBdID0gQXR0cmlidXRlTGlzdDo6Z2V0KEMsIDEsIEF0dHJQYXJhbTEpOwogICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRzW10gPSB7QXR0cmlidXRlOjpOb1Vud2luZCxBdHRyaWJ1dGU6OlJlYWRPbmx5LEF0dHJpYnV0ZTo6QXJnTWVtT25seX07CkBAIC0xNTk5NSwxMyArMTYwODcsMTMgQEAKICAgICAgIE51bUF0dHJzID0gMzsKICAgICAgIGJyZWFrOwogICAgICAgfQotICAgIGNhc2UgNDg6IHsKKyAgICBjYXNlIDUyOiB7CiAgICAgICBjb25zdCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEF0dHNbXSA9IHtBdHRyaWJ1dGU6Ok5vVW53aW5kfTsKICAgICAgIEFTWzBdID0gQXR0cmlidXRlTGlzdDo6Z2V0KEMsIEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHMpOwogICAgICAgTnVtQXR0cnMgPSAxOwogICAgICAgYnJlYWs7CiAgICAgICB9Ci0gICAgY2FzZSA0NzogeworICAgIGNhc2UgNTA6IHsKICAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0clBhcmFtMVtdPSB7QXR0cmlidXRlOjpOb0NhcHR1cmUsQXR0cmlidXRlOjpSZWFkT25seX07CiAgICAgICBBU1swXSA9IEF0dHJpYnV0ZUxpc3Q6OmdldChDLCAxLCBBdHRyUGFyYW0xKTsKICAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0c1tdID0ge0F0dHJpYnV0ZTo6Tm9VbndpbmQsQXR0cmlidXRlOjpJbmFjY2Vzc2libGVNZW1PckFyZ01lbU9ubHl9OwpAQCAtMTYwMDksNyArMTYxMDEsNyBAQAogICAgICAgTnVtQXR0cnMgPSAyOwogICAgICAgYnJlYWs7CiAgICAgICB9Ci0gICAgY2FzZSA0NjogeworICAgIGNhc2UgNDk6IHsKICAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0clBhcmFtMVtdPSB7QXR0cmlidXRlOjpOb0NhcHR1cmV9OwogICAgICAgQVNbMF0gPSBBdHRyaWJ1dGVMaXN0OjpnZXQoQywgMSwgQXR0clBhcmFtMSk7CiAgICAgICBjb25zdCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEF0dHNbXSA9IHtBdHRyaWJ1dGU6Ok5vVW53aW5kLEF0dHJpYnV0ZTo6SW5hY2Nlc3NpYmxlTWVtT25seX07CkBAIC0xNjAxNyw3ICsxNjEwOSwxNSBAQAogICAgICAgTnVtQXR0cnMgPSAyOwogICAgICAgYnJlYWs7CiAgICAgICB9Ci0gICAgY2FzZSAzODogeworICAgIGNhc2UgNTM6IHsKKyAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0clBhcmFtM1tdPSB7QXR0cmlidXRlOjpXcml0ZU9ubHl9OworICAgICAgQVNbMF0gPSBBdHRyaWJ1dGVMaXN0OjpnZXQoQywgMywgQXR0clBhcmFtMyk7CisgICAgICBjb25zdCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEF0dHNbXSA9IHtBdHRyaWJ1dGU6Ok5vVW53aW5kLEF0dHJpYnV0ZTo6V3JpdGVPbmx5LEF0dHJpYnV0ZTo6SW5hY2Nlc3NpYmxlTWVtT3JBcmdNZW1Pbmx5fTsKKyAgICAgIEFTWzFdID0gQXR0cmlidXRlTGlzdDo6Z2V0KEMsIEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHMpOworICAgICAgTnVtQXR0cnMgPSAyOworICAgICAgYnJlYWs7CisgICAgICB9CisgICAgY2FzZSA0MTogewogICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRzW10gPSB7QXR0cmlidXRlOjpOb1Vud2luZCxBdHRyaWJ1dGU6OldyaXRlT25seSxBdHRyaWJ1dGU6OkFyZ01lbU9ubHl9OwogICAgICAgQVNbMF0gPSBBdHRyaWJ1dGVMaXN0OjpnZXQoQywgQXR0cmlidXRlTGlzdDo6RnVuY3Rpb25JbmRleCwgQXR0cyk7CiAgICAgICBOdW1BdHRycyA9IDE7CkBAIC0xNjAyOSw3ICsxNjEyOSw3IEBACiAgICAgICBOdW1BdHRycyA9IDE7CiAgICAgICBicmVhazsKICAgICAgIH0KLSAgICBjYXNlIDM2OiB7CisgICAgY2FzZSAzOTogewogICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRzW10gPSB7QXR0cmlidXRlOjpOb1Vud2luZCxBdHRyaWJ1dGU6OlNwZWN1bGF0YWJsZSxBdHRyaWJ1dGU6OlJlYWRPbmx5fTsKICAgICAgIEFTWzBdID0gQXR0cmlidXRlTGlzdDo6Z2V0KEMsIEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHMpOwogICAgICAgTnVtQXR0cnMgPSAxOwpAQCAtMTYwNDEsMTkgKzE2MTQxLDI3IEBACiAgICAgICBOdW1BdHRycyA9IDE7CiAgICAgICBicmVhazsKICAgICAgIH0KLSAgICBjYXNlIDM1OiB7CisgICAgY2FzZSAzODogewogICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRzW10gPSB7QXR0cmlidXRlOjpOb1Vud2luZCxBdHRyaWJ1dGU6OkNvbnZlcmdlbnR9OwogICAgICAgQVNbMF0gPSBBdHRyaWJ1dGVMaXN0OjpnZXQoQywgQXR0cmlidXRlTGlzdDo6RnVuY3Rpb25JbmRleCwgQXR0cyk7CiAgICAgICBOdW1BdHRycyA9IDE7CiAgICAgICBicmVhazsKICAgICAgIH0KLSAgICBjYXNlIDQwOiB7CisgICAgY2FzZSAzNTogeworICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRyUGFyYW0xW109IHtBdHRyaWJ1dGU6Ok5vQ2FwdHVyZX07CisgICAgICBBU1swXSA9IEF0dHJpYnV0ZUxpc3Q6OmdldChDLCAxLCBBdHRyUGFyYW0xKTsKKyAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0c1tdID0ge0F0dHJpYnV0ZTo6Tm9VbndpbmQsQXR0cmlidXRlOjpDb252ZXJnZW50LEF0dHJpYnV0ZTo6QXJnTWVtT25seX07CisgICAgICBBU1sxXSA9IEF0dHJpYnV0ZUxpc3Q6OmdldChDLCBBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LCBBdHRzKTsKKyAgICAgIE51bUF0dHJzID0gMjsKKyAgICAgIGJyZWFrOworICAgICAgfQorICAgIGNhc2UgNDM6IHsKICAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0c1tdID0ge0F0dHJpYnV0ZTo6Tm9VbndpbmQsQXR0cmlidXRlOjpDb252ZXJnZW50LEF0dHJpYnV0ZTo6SW5hY2Nlc3NpYmxlTWVtT25seX07CiAgICAgICBBU1swXSA9IEF0dHJpYnV0ZUxpc3Q6OmdldChDLCBBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LCBBdHRzKTsKICAgICAgIE51bUF0dHJzID0gMTsKICAgICAgIGJyZWFrOwogICAgICAgfQotICAgIGNhc2UgMzM6IHsKKyAgICBjYXNlIDM2OiB7CiAgICAgICBjb25zdCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEF0dHNbXSA9IHtBdHRyaWJ1dGU6Ok5vVW53aW5kLEF0dHJpYnV0ZTo6Q29udmVyZ2VudCxBdHRyaWJ1dGU6OlJlYWROb25lfTsKICAgICAgIEFTWzBdID0gQXR0cmlidXRlTGlzdDo6Z2V0KEMsIEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHMpOwogICAgICAgTnVtQXR0cnMgPSAxOwpAQCAtMTYwNjUsNyArMTYxNzMsMTMgQEAKICAgICAgIE51bUF0dHJzID0gMTsKICAgICAgIGJyZWFrOwogICAgICAgfQotICAgIGNhc2UgNDM6IHsKKyAgICBjYXNlIDI4OiB7CisgICAgICBjb25zdCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEF0dHNbXSA9IHtBdHRyaWJ1dGU6Ok5vVW53aW5kLEF0dHJpYnV0ZTo6Tm9SZXR1cm4sQXR0cmlidXRlOjpDb2xkfTsKKyAgICAgIEFTWzBdID0gQXR0cmlidXRlTGlzdDo6Z2V0KEMsIEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHMpOworICAgICAgTnVtQXR0cnMgPSAxOworICAgICAgYnJlYWs7CisgICAgICB9CisgICAgY2FzZSA0NjogewogICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRzW10gPSB7QXR0cmlidXRlOjpOb1Vud2luZCxBdHRyaWJ1dGU6Ok5vRHVwbGljYXRlfTsKICAgICAgIEFTWzBdID0gQXR0cmlidXRlTGlzdDo6Z2V0KEMsIEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHMpOwogICAgICAgTnVtQXR0cnMgPSAxOwpAQCAtMTYwNzcsMjggKzE2MTkxLDM0IEBACiAgICAgICBOdW1BdHRycyA9IDE7CiAgICAgICBicmVhazsKICAgICAgIH0KLSAgICBjYXNlIDQ1OiB7CisgICAgY2FzZSA0ODogewogICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRzW10gPSB7QXR0cmlidXRlOjpOb1Vud2luZCxBdHRyaWJ1dGU6Ok5vRHVwbGljYXRlLEF0dHJpYnV0ZTo6V3JpdGVPbmx5fTsKICAgICAgIEFTWzBdID0gQXR0cmlidXRlTGlzdDo6Z2V0KEMsIEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHMpOwogICAgICAgTnVtQXR0cnMgPSAxOwogICAgICAgYnJlYWs7CiAgICAgICB9CisgICAgY2FzZSA1MTogeworICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRzW10gPSB7QXR0cmlidXRlOjpOb1Vud2luZCxBdHRyaWJ1dGU6Ok5vRHVwbGljYXRlfTsKKyAgICAgIEFTWzBdID0gQXR0cmlidXRlTGlzdDo6Z2V0KEMsIEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHMpOworICAgICAgTnVtQXR0cnMgPSAxOworICAgICAgYnJlYWs7CisgICAgICB9CiAgICAgY2FzZSA3OiB7CiAgICAgICByZXR1cm4gQXR0cmlidXRlTGlzdCgpOwogICAgICAgfQotICAgIGNhc2UgMzc6IHsKKyAgICBjYXNlIDQwOiB7CiAgICAgICBjb25zdCBBdHRyaWJ1dGU6OkF0dHJLaW5kIEF0dHNbXSA9IHtBdHRyaWJ1dGU6OlJlYWROb25lfTsKICAgICAgIEFTWzBdID0gQXR0cmlidXRlTGlzdDo6Z2V0KEMsIEF0dHJpYnV0ZUxpc3Q6OkZ1bmN0aW9uSW5kZXgsIEF0dHMpOwogICAgICAgTnVtQXR0cnMgPSAxOwogICAgICAgYnJlYWs7CiAgICAgICB9Ci0gICAgY2FzZSA0OTogeworICAgIGNhc2UgNTQ6IHsKICAgICAgIGNvbnN0IEF0dHJpYnV0ZTo6QXR0cktpbmQgQXR0c1tdID0ge0F0dHJpYnV0ZTo6Tm9SZXR1cm59OwogICAgICAgQVNbMF0gPSBBdHRyaWJ1dGVMaXN0OjpnZXQoQywgQXR0cmlidXRlTGlzdDo6RnVuY3Rpb25JbmRleCwgQXR0cyk7CiAgICAgICBOdW1BdHRycyA9IDE7CiAgICAgICBicmVhazsKICAgICAgIH0KLSAgICBjYXNlIDQ0OiB7CisgICAgY2FzZSA0NzogewogICAgICAgY29uc3QgQXR0cmlidXRlOjpBdHRyS2luZCBBdHRzW10gPSB7QXR0cmlidXRlOjpOb1JldHVybixBdHRyaWJ1dGU6OldyaXRlT25seX07CiAgICAgICBBU1swXSA9IEF0dHJpYnV0ZUxpc3Q6OmdldChDLCBBdHRyaWJ1dGVMaXN0OjpGdW5jdGlvbkluZGV4LCBBdHRzKTsKICAgICAgIE51bUF0dHJzID0gMTsKQEAgLTE2MTgyLDgzMCArMTYzMDIsODU4IEBACiAgICdwJywgJ18nLCAnbScsICdvJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCiAgICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAnaScsICduJywgJ3QnLCAnZScsICdyJywgJ3AnLCAnXycsCiAgICdwJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsCi0gICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAnaScsICduJywgJ3QnLCAnZScsICdyJywgJ3AnLCAnXycsICdwJywgJzInLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsCi0gICduJywgJ18nLCAnaycsICdlJywgJ3InLCAnbicsICdhJywgJ3InLCAnZycsICdfJywgJ3MnLCAnZScsICdnJywgJ20nLCAnZScsCi0gICduJywgJ3QnLCAnXycsICdwJywgJ3QnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICdsJywgJ2UnLCAncicsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsCi0gICdfJywgJ20nLCAnYicsICdjJywgJ24nLCAndCcsICdfJywgJ2gnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICdtJywgJ2InLCAnYycsCi0gICduJywgJ3QnLCAnXycsICdsJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAnbScsICdxJywgJ3MnLCAnYScsICdkJywgJ18nLCAncCcsCi0gICdrJywgJ18nLCAndScsICcxJywgJzYnLCAnXycsICd1JywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAnbScsICdxJywgJ3MnLCAnYScsCi0gICdkJywgJ18nLCAndScsICczJywgJzInLCAnXycsICd1JywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnZCcsCi0gICdfJywgJ3UnLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICdxJywgJ3MnLCAnYScsICdkJywgJ18nLCAncCcsICdrJywgJ18nLCAndScsCi0gICcxJywgJzYnLCAnXycsICd1JywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncScsICd1JywgJ2UnLCAndScsICdlJywgJ18nLCAncCcsCi0gICd0JywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsCi0gICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncicsICdjJywgJ3AnLCAnXycsICdsJywgJ2UnLCAnZycsICdhJywgJ2MnLCAneScsCisgICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAnaScsICduJywgJ3QnLCAnZScsICdyJywgJ3AnLCAnXycsICdwJywgJzEnLCAnXycsCisgICdmJywgJzEnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICdpJywgJ24nLCAndCcsICdlJywgJ3InLCAncCcsICdfJywgJ3AnLCAnMicsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsCi0gICdjJywgJ24nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ2YnLCAnaScsICdyJywgJ3MnLCAndCcsICdsJywgJ2EnLCAnbicsCi0gICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsCi0gICdnJywgJ2MnLCAnbicsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnbCcsICdhJywgJ24nLCAnZScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsCi0gICdyJywgJ3MnLCAncScsICdfJywgJ2wnLCAnZScsICdnJywgJ2EnLCAnYycsICd5JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ3MnLCAnXycsCi0gICdiJywgJ2EnLCAncicsICdyJywgJ2knLCAnZScsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ3MnLCAnXycsICdkJywgJ2MnLCAnYScsCi0gICdjJywgJ2gnLCAnZScsICdfJywgJ2knLCAnbicsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ3MnLCAnXycsICdkJywgJ2MnLCAnYScsCi0gICdjJywgJ2gnLCAnZScsICdfJywgJ2knLCAnbicsICd2JywgJ18nLCAndicsICdvJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncycsCi0gICdfJywgJ2QnLCAnYycsICdhJywgJ2MnLCAnaCcsICdlJywgJ18nLCAndycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ3MnLCAnXycsCi0gICdkJywgJ2MnLCAnYScsICdjJywgJ2gnLCAnZScsICdfJywgJ3cnLCAnYicsICdfJywgJ3YnLCAnbycsICdsJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsCi0gICdfJywgJ3MnLCAnXycsICdkJywgJ2UnLCAnYycsICdwJywgJ2UnLCAncicsICdmJywgJ2wnLCAnZScsICd2JywgJ2UnLCAnbCcsCisgICdjJywgJ24nLCAnXycsICdpJywgJ24nLCAndCcsICdlJywgJ3InLCAncCcsICdfJywgJ3AnLCAnMicsICdfJywgJ2YnLCAnMScsCisgICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsCisgICdnJywgJ2MnLCAnbicsICdfJywgJ2snLCAnZScsICdyJywgJ24nLCAnYScsICdyJywgJ2cnLCAnXycsICdzJywgJ2UnLCAnZycsCisgICdtJywgJ2UnLCAnbicsICd0JywgJ18nLCAncCcsICd0JywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAnbCcsICdlJywgJ3InLCAncCcsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsCi0gICdjJywgJ24nLCAnXycsICdzJywgJ18nLCAnZycsICdlJywgJ3QnLCAncCcsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ3MnLCAnXycsCi0gICdnJywgJ2UnLCAndCcsICdyJywgJ2UnLCAnZycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICdzJywgJ18nLCAnaScsICduJywgJ2MnLCAncCcsCi0gICdlJywgJ3InLCAnZicsICdsJywgJ2UnLCAndicsICdlJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncycsICdfJywgJ20nLCAnZScsCi0gICdtJywgJ3InLCAnZScsICdhJywgJ2wnLCAndCcsICdpJywgJ20nLCAnZScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICdzJywgJ18nLCAnbScsCi0gICdlJywgJ20nLCAndCcsICdpJywgJ20nLCAnZScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICdzJywgJ18nLCAncycsICdlJywgJ24nLCAnZCcsCi0gICdtJywgJ3MnLCAnZycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICdzJywgJ18nLCAncycsICdlJywgJ24nLCAnZCcsICdtJywgJ3MnLCAnZycsCi0gICdoJywgJ2EnLCAnbCcsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ3MnLCAnXycsICdzJywgJ2wnLCAnZScsICdlJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsCi0gICduJywgJ18nLCAncycsICdfJywgJ3cnLCAnYScsICdpJywgJ3QnLCAnYycsICduJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncycsCi0gICdhJywgJ2QnLCAnXycsICdoJywgJ2knLCAnXycsICd1JywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncycsICdhJywgJ2QnLCAnXycsCi0gICd1JywgJzEnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICdzJywgJ2EnLCAnZCcsICdfJywgJ3UnLCAnOCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsCi0gICdzJywgJ2QnLCAnbycsICd0JywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncycsICdkJywgJ28nLCAndCcsICc0JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsCi0gICdfJywgJ3MnLCAnZCcsICdvJywgJ3QnLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICd1JywgJ2QnLCAnbycsICd0JywgJzInLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsCi0gICduJywgJ18nLCAndScsICdkJywgJ28nLCAndCcsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ3UnLCAnZCcsICdvJywgJ3QnLCAnOCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsCi0gICdjJywgJ24nLCAnXycsICd3JywgJ2EnLCAndicsICdlJywgJ18nLCAnYicsICdhJywgJ3InLCAncicsICdpJywgJ2UnLCAncicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsCi0gICdjJywgJ24nLCAnXycsICd3JywgJ28nLCAncicsICdrJywgJ2cnLCAncicsICdvJywgJ3UnLCAncCcsICdfJywgJ2knLCAnZCcsCi0gICdfJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsCi0gICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAndycsICdvJywgJ3InLCAnaycsICdnJywgJ3InLCAnbycsICd1JywgJ3AnLCAnXycsCi0gICdpJywgJ2QnLCAnXycsICd5JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ3cnLCAnbycsICdyJywgJ2snLCAnZycsICdyJywgJ28nLCAndScsCi0gICdwJywgJ18nLCAnaScsICdkJywgJ18nLCAneicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICd3JywgJ3InLCAnaScsICd0JywgJ2UnLCAnbCcsCisgICdjJywgJ24nLCAnXycsICdtJywgJ2InLCAnYycsICduJywgJ3QnLCAnXycsICdoJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAnbScsCisgICdiJywgJ2MnLCAnbicsICd0JywgJ18nLCAnbCcsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ20nLCAncScsICdzJywgJ2EnLCAnZCcsCisgICdfJywgJ3AnLCAnaycsICdfJywgJ3UnLCAnMScsICc2JywgJ18nLCAndScsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ20nLCAncScsCisgICdzJywgJ2EnLCAnZCcsICdfJywgJ3UnLCAnMycsICcyJywgJ18nLCAndScsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ2QnLCAnXycsICd1JywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncScsICdzJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAnaycsCisgICdfJywgJ3UnLCAnMScsICc2JywgJ18nLCAndScsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ3EnLCAndScsICdlJywgJ3UnLCAnZScsCisgICdfJywgJ3AnLCAndCcsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ3InLCAnYycsICdwJywgJ18nLCAnbCcsICdlJywgJ2cnLCAnYScsCisgICdjJywgJ3knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsCisgICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdmJywgJ2knLCAncicsICdzJywgJ3QnLCAnbCcsCiAgICdhJywgJ24nLCAnZScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdyJywgJ20nLCAnXycsICdjJywgJ2QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdjJywgJ2QnLCAncCcsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ2cnLCAnZScsICd0JywgJ18nLCAnZicsCi0gICdwJywgJ3MnLCAnYycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ3InLCAnbScsICdfJywgJ2wnLCAnZCcsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ2wnLCAnZCcsICdjJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAnbCcsICdkJywgJ2MnLCAnMicsCi0gICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCi0gICdfJywgJ2wnLCAnZCcsICdjJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAnbScsICdjJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAnbScsICdjJywgJ3InLCAnMicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdtJywgJ3InLCAnYycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsCi0gICdtJywgJ3InLCAnYycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ3InLCAnbScsICdfJywgJ3EnLCAnYScsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncScsICdhJywgJ2QnLCAnZCcsICcxJywgJzYnLCAnXDAwMCcsCisgICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ2wnLCAnYScsICduJywgJ2UnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsCisgICduJywgJ18nLCAncicsICdzJywgJ3EnLCAnXycsICdsJywgJ2UnLCAnZycsICdhJywgJ2MnLCAneScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsCisgICdzJywgJ18nLCAnYicsICdhJywgJ3InLCAncicsICdpJywgJ2UnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICdzJywgJ18nLCAnZCcsCisgICdjJywgJ2EnLCAnYycsICdoJywgJ2UnLCAnXycsICdpJywgJ24nLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICdzJywgJ18nLCAnZCcsCisgICdjJywgJ2EnLCAnYycsICdoJywgJ2UnLCAnXycsICdpJywgJ24nLCAndicsICdfJywgJ3YnLCAnbycsICdsJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsCisgICdfJywgJ3MnLCAnXycsICdkJywgJ2MnLCAnYScsICdjJywgJ2gnLCAnZScsICdfJywgJ3cnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsCisgICdzJywgJ18nLCAnZCcsICdjJywgJ2EnLCAnYycsICdoJywgJ2UnLCAnXycsICd3JywgJ2InLCAnXycsICd2JywgJ28nLCAnbCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsCisgICdjJywgJ24nLCAnXycsICdzJywgJ18nLCAnZCcsICdlJywgJ2MnLCAncCcsICdlJywgJ3InLCAnZicsICdsJywgJ2UnLCAndicsCisgICdlJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsCisgICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncycsICdfJywgJ2cnLCAnZScsICd0JywgJ3AnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsCisgICdzJywgJ18nLCAnZycsICdlJywgJ3QnLCAncicsICdlJywgJ2cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncycsICdfJywgJ2knLCAnbicsCisgICdjJywgJ3AnLCAnZScsICdyJywgJ2YnLCAnbCcsICdlJywgJ3YnLCAnZScsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ3MnLCAnXycsCisgICdtJywgJ2UnLCAnbScsICdyJywgJ2UnLCAnYScsICdsJywgJ3QnLCAnaScsICdtJywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncycsCisgICdfJywgJ20nLCAnZScsICdtJywgJ3QnLCAnaScsICdtJywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncycsICdfJywgJ3MnLCAnZScsCisgICduJywgJ2QnLCAnbScsICdzJywgJ2cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncycsICdfJywgJ3MnLCAnZScsICduJywgJ2QnLCAnbScsCisgICdzJywgJ2cnLCAnaCcsICdhJywgJ2wnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICdzJywgJ18nLCAncycsICdsJywgJ2UnLCAnZScsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsCisgICdnJywgJ2MnLCAnbicsICdfJywgJ3MnLCAnXycsICd3JywgJ2EnLCAnaScsICd0JywgJ2MnLCAnbicsICd0JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsCisgICdfJywgJ3MnLCAnYScsICdkJywgJ18nLCAnaCcsICdpJywgJ18nLCAndScsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ3MnLCAnYScsCisgICdkJywgJ18nLCAndScsICcxJywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAncycsICdhJywgJ2QnLCAnXycsICd1JywgJzgnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsCisgICduJywgJ18nLCAncycsICdkJywgJ28nLCAndCcsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ3MnLCAnZCcsICdvJywgJ3QnLCAnNCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsCisgICdjJywgJ24nLCAnXycsICdzJywgJ2QnLCAnbycsICd0JywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAndScsICdkJywgJ28nLCAndCcsCisgICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ20nLCAnZCcsCisgICdnJywgJ2MnLCAnbicsICdfJywgJ3UnLCAnZCcsICdvJywgJ3QnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICd1JywgJ2QnLCAnbycsCisgICd0JywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsCisgICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAndycsICdhJywgJ3YnLCAnZScsICdfJywgJ2InLCAnYScsICdyJywgJ3InLCAnaScsCisgICdlJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsCisgICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAndycsICdvJywgJ3InLCAnaycsICdnJywgJ3InLCAnbycsICd1JywgJ3AnLCAnXycsCisgICdpJywgJ2QnLCAnXycsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdhJywgJ20nLCAnZCcsICdnJywgJ2MnLCAnbicsICdfJywgJ3cnLCAnbycsICdyJywgJ2snLCAnZycsICdyJywgJ28nLCAndScsCisgICdwJywgJ18nLCAnaScsICdkJywgJ18nLCAneScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdtJywgJ2QnLCAnZycsICdjJywgJ24nLCAnXycsICd3JywgJ28nLCAncicsICdrJywgJ2cnLCAncicsCisgICdvJywgJ3UnLCAncCcsICdfJywgJ2knLCAnZCcsICdfJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbScsICdkJywgJ2cnLCAnYycsICduJywgJ18nLCAndycsICdyJywgJ2knLCAndCcsCisgICdlJywgJ2wnLCAnYScsICduJywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAnYycsICdkJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAnYycsICdkJywgJ3AnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdnJywgJ2UnLCAndCcsCisgICdfJywgJ2YnLCAncCcsICdzJywgJ2MnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdsJywgJ2QnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdsJywgJ2QnLCAnYycsICcyJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ2wnLCAnZCcsCisgICdjJywgJzInLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdyJywgJ20nLCAnXycsICdsJywgJ2QnLCAnYycsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ20nLCAnYycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ20nLCAnYycsICdyJywgJzInLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAnbScsCisgICdyJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsCisgICdtJywgJ18nLCAnbScsICdyJywgJ2MnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdxJywgJ2EnLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3EnLCAnYScsICdkJywgJ2QnLCAnMScsCisgICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCisgICdfJywgJ3EnLCAnYScsICdkJywgJ2QnLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdxJywgJ2EnLCAncycsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3EnLCAncycsICdhJywgJ3gnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncScsCi0gICdhJywgJ2QnLCAnZCcsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ3InLCAnbScsICdfJywgJ3EnLCAnYScsICdzJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncScsICdzJywgJ2EnLCAneCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdxJywgJ3MnLCAndScsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCi0gICdfJywgJ3EnLCAncycsICd1JywgJ2InLCAnMScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3EnLCAncycsICd1JywgJ2InLCAnOCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ2EnLCAnZCcsCisgICdzJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdyJywgJ20nLCAnXycsICdxJywgJ3MnLCAndScsICdiJywgJzEnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdxJywgJ3MnLCAndScsICdiJywgJzgnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsCisgICdhJywgJ2QnLCAnZCcsICcxJywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdhJywgJ2QnLCAnZCcsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAnYScsICdzJywgJ3gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsCisgICdlJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsCisgICdtJywgJ18nLCAncycsICdlJywgJ3QnLCAnXycsICdmJywgJ3AnLCAncycsICdjJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdoJywgJ2EnLCAnZCcsCiAgICdkJywgJzEnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdyJywgJ20nLCAnXycsICdzJywgJ2EnLCAnZCcsICdkJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdhJywgJ3MnLCAneCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ2UnLCAnbCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsCi0gICdzJywgJ2UnLCAndCcsICdfJywgJ2YnLCAncCcsICdzJywgJ2MnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ2gnLCAnYScsICdkJywgJ2QnLCAnMScsCi0gICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCi0gICdfJywgJ3MnLCAnaCcsICdhJywgJ2QnLCAnZCcsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAnaCcsICdhJywgJ3MnLCAneCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ2gnLCAncycsCi0gICdhJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsCi0gICdtJywgJ18nLCAncycsICdoJywgJ3MnLCAndScsICdiJywgJzEnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ2gnLCAncycsICd1JywgJ2InLCAnOCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsCi0gICdzJywgJ20nLCAnbCcsICdhJywgJ2InLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ20nLCAnbCcsICdhJywgJ2InLCAndCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ20nLCAnbCcsCi0gICdhJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsCi0gICdtJywgJ18nLCAncycsICdtJywgJ2wnLCAnYScsICdkJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdtJywgJ2wnLCAnYScsICdsJywgJ2QnLCAnXDAwMCcsCisgICdyJywgJ20nLCAnXycsICdzJywgJ2gnLCAnYScsICdkJywgJ2QnLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ2gnLCAnYScsICdzJywgJ3gnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsCi0gICdtJywgJ2wnLCAnYScsICdsJywgJ2QnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ20nLCAnbCcsICdhJywgJ3QnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ20nLCAnbCcsCi0gICdhJywgJ3QnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdyJywgJ20nLCAnXycsICdzJywgJ20nLCAnbCcsICdhJywgJ3cnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ20nLCAnbCcsICdhJywgJ3cnLCAndCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsCi0gICdzJywgJ20nLCAnbCcsICdzJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdtJywgJ2wnLCAncycsICdkJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdtJywgJ2wnLCAncycsCi0gICdsJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsCi0gICdtJywgJ18nLCAncycsICdtJywgJ2wnLCAncycsICdsJywgJ2QnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ20nLCAndScsICdhJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsCi0gICdtJywgJ3UnLCAnYScsICdkJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdtJywgJ3UnLCAnbCcsICdiJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdtJywgJ3UnLCAnbCcsCi0gICdiJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsCi0gICdtJywgJ18nLCAncycsICdtJywgJ3UnLCAnbCcsICd0JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdtJywgJ3UnLCAnbCcsICd0JywgJ3QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsCi0gICdtJywgJ3UnLCAnbCcsICd3JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdtJywgJ3UnLCAnbCcsICd3JywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdtJywgJ3UnLCAncycsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCi0gICdfJywgJ3MnLCAnbScsICd1JywgJ3MnLCAnZCcsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdzJywgJ2EnLCAndCcsCi0gICcxJywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsCi0gICdtJywgJ18nLCAncycsICdzJywgJ2EnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ3MnLCAndScsICdiJywgJzEnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ3MnLCAndScsCisgICdoJywgJ3MnLCAnYScsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAnaCcsICdzJywgJ3UnLCAnYicsICcxJywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdoJywgJ3MnLCAndScsCiAgICdiJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsCi0gICdtJywgJ18nLCAncycsICd0JywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICd0JywgJ2MnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ3QnLCAnYycsICcyJywgJ2wnLCAnXDAwMCcsCisgICdtJywgJ18nLCAncycsICdtJywgJ2wnLCAnYScsICdiJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdtJywgJ2wnLCAnYScsICdiJywgJ3QnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsCi0gICd0JywgJ2MnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdyJywgJ20nLCAnXycsICdzJywgJ3gnLCAndCcsICdhJywgJ2InLCAnMScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAneCcsICd0JywgJ2InLCAnMScsCi0gICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCi0gICdfJywgJ3UnLCAnYScsICdkJywgJ2QnLCAnMScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3UnLCAnYScsICdkJywgJ2QnLCAnOCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICd1JywgJ2EnLCAncycsCi0gICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCi0gICdfJywgJ3UnLCAnaCcsICdhJywgJ2QnLCAnZCcsICcxJywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAndScsICdoJywgJ2EnLCAnZCcsICdkJywgJzgnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAndScsCi0gICdoJywgJ2EnLCAncycsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ3InLCAnbScsICdfJywgJ3UnLCAnaCcsICdzJywgJ2EnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICd1JywgJ2gnLCAncycsICd1JywgJ2InLCAnMScsCi0gICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCi0gICdfJywgJ3UnLCAnaCcsICdzJywgJ3UnLCAnYicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3UnLCAncScsICdhJywgJ2QnLCAnZCcsICcxJywgJzYnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAndScsCi0gICdxJywgJ2EnLCAnZCcsICdkJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAndScsICdxJywgJ2EnLCAncycsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3UnLCAncScsICdzJywgJ2EnLCAneCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsCi0gICd1JywgJ3EnLCAncycsICd1JywgJ2InLCAnMScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3UnLCAncScsICdzJywgJ3UnLCAnYicsICc4JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3UnLCAncycsCi0gICdhJywgJ2QnLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdyJywgJ20nLCAnXycsICd1JywgJ3MnLCAnYScsICdkJywgJ2EnLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICd1JywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3UnLCAncycsCisgICdtJywgJ2wnLCAnYScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAnbScsICdsJywgJ2EnLCAnZCcsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAnbScsICdsJywgJ2EnLCAnbCcsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCisgICdfJywgJ3MnLCAnbScsICdsJywgJ2EnLCAnbCcsICdkJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdtJywgJ2wnLCAnYScsICd0JywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsCisgICdtJywgJ2wnLCAnYScsICd0JywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdtJywgJ2wnLCAnYScsICd3JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdtJywgJ2wnLCAnYScsCisgICd3JywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsCisgICdtJywgJ18nLCAncycsICdtJywgJ2wnLCAncycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAnbScsICdsJywgJ3MnLCAnZCcsICd4JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAnbScsCisgICdsJywgJ3MnLCAnbCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAnbScsICdsJywgJ3MnLCAnbCcsICdkJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdtJywgJ3UnLCAnYScsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCisgICdfJywgJ3MnLCAnbScsICd1JywgJ2EnLCAnZCcsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAnbScsICd1JywgJ2wnLCAnYicsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAnbScsCisgICd1JywgJ2wnLCAnYicsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAnbScsICd1JywgJ2wnLCAndCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAnbScsICd1JywgJ2wnLCAndCcsCisgICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCisgICdfJywgJ3MnLCAnbScsICd1JywgJ2wnLCAndycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAnbScsICd1JywgJ2wnLCAndycsICd0JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAnbScsCisgICd1JywgJ3MnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdyJywgJ20nLCAnXycsICdzJywgJ20nLCAndScsICdzJywgJ2QnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAncycsCiAgICdhJywgJ3QnLCAnMScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ3InLCAnbScsICdfJywgJ3UnLCAncycsICdhJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAndScsICdzJywgJ3UnLCAnYicsICcxJywgJzYnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAndScsCisgICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAncycsICdhJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICdzJywgJ3UnLCAnYicsICcxJywgJzYnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsCiAgICdzJywgJ3UnLCAnYicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ3InLCAnbScsICdfJywgJ3UnLCAneCcsICd0JywgJ2EnLCAnYicsICcxJywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAndScsICd4JywgJ3QnLCAnYicsCi0gICcxJywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2InLCAncCcsCi0gICdmJywgJ18nLCAnbCcsICdvJywgJ2EnLCAnZCcsICdfJywgJ2InLCAneScsICd0JywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2InLCAncCcsICdmJywgJ18nLCAnbCcsICdvJywgJ2EnLCAnZCcsCi0gICdfJywgJ2gnLCAnYScsICdsJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2InLCAncCcsICdmJywgJ18nLCAnbCcsICdvJywgJ2EnLCAnZCcsICdfJywgJ3cnLCAnbycsICdyJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2InLCAncCcsICdmJywgJ18nLCAncCcsCi0gICdzJywgJ2UnLCAndScsICdkJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdhJywgJ2InLCAncycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ2EnLCAnYicsICdzJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzInLCAnXycsICdhJywgJ2InLCAncycsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCi0gICdfJywgJ2EnLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnYScsICdkJywgJ2QnLCAnaCcsCi0gICdfJywgJ2gnLCAnMScsICc2JywgJ18nLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAndCcsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3MnLCAndCcsICdjJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICd0JywgJ2MnLCAnMicsCisgICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCisgICdfJywgJ3MnLCAndCcsICdjJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAncycsICd4JywgJ3QnLCAnYScsICdiJywgJzEnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICdzJywgJ3gnLCAndCcsCisgICdiJywgJzEnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdyJywgJ20nLCAnXycsICd1JywgJ2EnLCAnZCcsICdkJywgJzEnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICd1JywgJ2EnLCAnZCcsICdkJywgJzgnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAndScsCisgICdhJywgJ3MnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdyJywgJ20nLCAnXycsICd1JywgJ2gnLCAnYScsICdkJywgJ2QnLCAnMScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3UnLCAnaCcsICdhJywgJ2QnLCAnZCcsCisgICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCisgICdfJywgJ3UnLCAnaCcsICdhJywgJ3MnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICd1JywgJ2gnLCAncycsICdhJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAndScsICdoJywgJ3MnLCAndScsCisgICdiJywgJzEnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdyJywgJ20nLCAnXycsICd1JywgJ2gnLCAncycsICd1JywgJ2InLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICd1JywgJ3EnLCAnYScsICdkJywgJ2QnLCAnMScsCisgICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCisgICdfJywgJ3UnLCAncScsICdhJywgJ2QnLCAnZCcsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3UnLCAncScsICdhJywgJ3MnLCAneCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICd1JywgJ3EnLCAncycsCisgICdhJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsCisgICdtJywgJ18nLCAndScsICdxJywgJ3MnLCAndScsICdiJywgJzEnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICd1JywgJ3EnLCAncycsICd1JywgJ2InLCAnOCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsCisgICd1JywgJ3MnLCAnYScsICdkJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAndScsICdzJywgJ2EnLCAnZCcsICdhJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAncicsICdtJywgJ18nLCAndScsICdzJywgJ2EnLCAndCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsCisgICd1JywgJ3MnLCAnYScsICd0JywgJzEnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICd1JywgJ3MnLCAnYScsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3UnLCAncycsICd1JywgJ2InLCAnMScsCisgICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsCisgICdfJywgJ3UnLCAncycsICd1JywgJ2InLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdyJywgJ20nLCAnXycsICd1JywgJ3gnLCAndCcsICdhJywgJ2InLCAnMScsICc2JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ3InLCAnbScsICdfJywgJ3UnLCAneCcsCisgICd0JywgJ2InLCAnMScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdiJywgJ3AnLCAnZicsICdfJywgJ2wnLCAnbycsICdhJywgJ2QnLCAnXycsICdiJywgJ3knLCAndCcsICdlJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdiJywgJ3AnLCAnZicsICdfJywgJ2wnLCAnbycsCisgICdhJywgJ2QnLCAnXycsICdoJywgJ2EnLCAnbCcsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdiJywgJ3AnLCAnZicsICdfJywgJ2wnLCAnbycsICdhJywgJ2QnLCAnXycsICd3JywgJ28nLCAncicsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdiJywgJ3AnLCAnZicsCisgICdfJywgJ3AnLCAncycsICdlJywgJ3UnLCAnZCcsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnYScsCi0gICdkJywgJ2QnLCAnaCcsICdfJywgJ2gnLCAnMScsICc2JywgJ18nLCAnaCcsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCi0gICcyJywgJ18nLCAnYScsICdkJywgJ2QnLCAnaCcsICdfJywgJ2gnLCAnMScsICc2JywgJ18nLCAnbCcsICdoJywgJ1wwMDAnLCAnXycsCisgICdiJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdhJywgJ2InLCAncycsICdwJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnYScsICdkJywgJ2QnLCAnaCcsICdfJywgJ2gnLCAnMScsICc2JywgJ18nLCAnbCcsCi0gICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnYScsICdkJywgJ2QnLCAnaCcsICdfJywgJ2gnLCAnMScsCi0gICc2JywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCi0gICdhJywgJ2QnLCAnZCcsICdoJywgJ18nLCAnaCcsICcxJywgJzYnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ2gnLCAnbCcsCisgICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnYScsICdiJywgJ3MnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdBJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ2EnLCAnZCcsCisgICdkJywgJ2gnLCAnXycsICdoJywgJzEnLCAnNicsICdfJywgJ2gnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCisgICdfJywgJ2EnLCAnZCcsICdkJywgJ2gnLCAnXycsICdoJywgJzEnLCAnNicsICdfJywgJ2gnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ0EnLCAnMicsICdfJywgJ2EnLCAnZCcsICdkJywgJ2gnLCAnXycsICdoJywgJzEnLCAnNicsICdfJywgJ2wnLCAnaCcsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCiAgICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ2EnLCAnZCcsICdkJywgJ2gnLCAnXycsICdoJywgJzEnLCAnNicsCi0gICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnbCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdfJywgJ2wnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ2EnLCAnZCcsICdkJywgJ2gnLCAnXycsCisgICdoJywgJzEnLCAnNicsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICcyJywgJ18nLCAnYScsICdkJywgJ2QnLCAnaCcsICdfJywgJ2gnLCAnMScsICc2JywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsCisgICdoJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsICdoJywgJ18nLCAnaCcsCisgICcxJywgJzYnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ2wnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCisgICdfJywgJ2EnLCAnZCcsICdkJywgJ2gnLCAnXycsICdoJywgJzEnLCAnNicsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnbCcsCisgICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnYScsICdkJywgJ2QnLCAnaCcsICdfJywgJ2wnLCAnMScsCisgICc2JywgJ18nLCAnaCcsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnYScsICdkJywgJ2QnLCAnaCcsCisgICdfJywgJ2wnLCAnMScsICc2JywgJ18nLCAnbCcsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnYScsCi0gICdkJywgJ2QnLCAnaCcsICdfJywgJ2gnLCAnMScsICc2JywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2wnLCAnXDAwMCcsCisgICdkJywgJ2QnLCAnaCcsICdfJywgJ2wnLCAnMScsICc2JywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2wnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCiAgICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsICdoJywgJ18nLCAnbCcsICcxJywgJzYnLCAnXycsCi0gICdoJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsICdoJywgJ18nLCAnbCcsCi0gICcxJywgJzYnLCAnXycsICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsCi0gICdoJywgJ18nLCAnbCcsICcxJywgJzYnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ2gnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsCisgICdzJywgJ2EnLCAndCcsICdfJywgJ2wnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ2EnLCAnZCcsCisgICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsICdwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnYScsICdkJywgJ2QnLCAncCcsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnMicsICdfJywgJ2EnLCAnZCcsICdkJywgJ2gnLCAnXycsICdsJywgJzEnLCAnNicsICdfJywgJ3MnLCAnYScsCi0gICd0JywgJ18nLCAnbCcsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnYScsICdkJywgJ2QnLCAnaScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ2EnLCAnZCcsICdkJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsICdwJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdfJywgJ0EnLCAnMicsICdfJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCi0gICcyJywgJ18nLCAnYScsICdkJywgJ2QnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCi0gICdhJywgJ2QnLCAnZCcsICdzJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdhJywgJ24nLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ2EnLCAnbicsICdkJywgJ2knLCAncicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnMicsICdfJywgJ2EnLCAnbicsICdkJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCi0gICdhJywgJ3MnLCAnbCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ2MnLCAnbycsICdtJywgJ2InLCAnaScsICduJywgJ2UnLCAnXycsCi0gICdoJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICcyJywgJ18nLCAnYScsICdkJywgJ2QnLCAncycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnYScsCisgICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdhJywgJ24nLCAnZCcsICdpJywgJ3InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdhJywgJ24nLCAnZCcsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ2EnLCAncycsCisgICdyJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCiAgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdjJywgJ28nLCAnbScsICdiJywgJ2knLCAnbicsCi0gICdlJywgJ18nLCAnaCcsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdlJywgJ18nLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnYycsICdvJywgJ20nLCAnYicsCi0gICdpJywgJ24nLCAnZScsICdfJywgJ2wnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICdpJywgJ24nLCAnZScsICdfJywgJ2gnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCiAgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ2MnLCAnbycsCi0gICdtJywgJ2InLCAnaScsICduJywgJ2UnLCAnXycsICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdtJywgJ2InLCAnaScsICduJywgJ2UnLCAnXycsICdsJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCi0gICdjJywgJ28nLCAnbScsICdiJywgJ2knLCAnbicsICdlJywgJ2knLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCi0gICdfJywgJ2MnLCAnbycsICdtJywgJ2InLCAnaScsICduJywgJ2UnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCi0gICdfJywgJ20nLCAnYScsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnbScsICdhJywgJ3gnLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ20nLCAnYScsICd4JywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzInLCAnXycsICdtJywgJ2EnLCAneCcsICd1JywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCi0gICdtJywgJ2knLCAnbicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ20nLCAnaScsICduJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdtJywgJ2knLCAnbicsICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdjJywgJ28nLCAnbScsICdiJywgJ2knLCAnbicsICdlJywgJ18nLCAnbCcsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCi0gICcyJywgJ18nLCAnbScsICdpJywgJ24nLCAndScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnbicsCi0gICdlJywgJ2cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICduJywgJ2UnLCAnZycsICdwJywgJ1wwMDAnLCAnXycsCisgICcyJywgJ18nLCAnYycsICdvJywgJ20nLCAnYicsICdpJywgJ24nLCAnZScsICdpJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdBJywgJzInLCAnXycsICdjJywgJ28nLCAnbScsICdiJywgJ2knLCAnbicsICdlJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdBJywgJzInLCAnXycsICdtJywgJ2EnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ20nLCAnYScsCisgICd4JywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdtJywgJ2EnLCAneCcsICd1JywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnbicsICdlJywgJ2cnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzInLCAnXycsICduJywgJ28nLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ24nLCAnbycsCi0gICd0JywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzInLCAnXycsICdvJywgJ3InLCAnaScsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnbycsCi0gICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAncycsCi0gICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsCisgICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnbScsICdhJywgJ3gnLCAndScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICcyJywgJ18nLCAnbScsICdpJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdtJywgJ2knLCAnbicsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnbScsICdpJywgJ24nLCAndScsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAnYScsICd0JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCi0gICdzJywgJ2EnLCAndCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsICdhJywgJ3QnLCAndScsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsICdhJywgJ3QnLCAndScsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ0EnLCAnMicsICdfJywgJ20nLCAnaScsICduJywgJ3UnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCisgICdfJywgJ24nLCAnZScsICdnJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnbicsICdlJywgJ2cnLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ24nLCAnZScsICdnJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnbicsICdvJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCi0gICdzJywgJ3UnLCAnYicsICdoJywgJ18nLCAnaCcsICcxJywgJzYnLCAnXycsICdoJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICduJywgJ28nLCAndCcsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAnbycsICdyJywgJ2knLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCisgICdfJywgJ28nLCAncicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncCcsICd4JywgJ28nLCAncicsCisgICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ3MnLCAnYScsCisgICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzInLCAnXycsICdzJywgJ3UnLCAnYicsICdoJywgJ18nLCAnaCcsICcxJywgJzYnLCAnXycsICdoJywgJ2wnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdzJywgJ3UnLCAnYicsICdoJywgJ18nLCAnaCcsICcxJywgJzYnLCAnXycsCi0gICdsJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdzJywgJ3UnLCAnYicsICdoJywgJ18nLCAnaCcsCi0gICcxJywgJzYnLCAnXycsICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdzJywgJ3UnLCAnYicsCi0gICdoJywgJ18nLCAnaCcsICcxJywgJzYnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ2gnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdBJywgJzInLCAnXycsICdzJywgJ2EnLCAndCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsCisgICdhJywgJ3QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAnYScsICd0JywgJ3UnLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAnYScsICd0JywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAndScsICdiJywgJ2gnLCAnXycsICdoJywgJzEnLCAnNicsICdfJywgJ3MnLCAnYScsCi0gICd0JywgJ18nLCAnaCcsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAndScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsCisgICd1JywgJ2InLCAnaCcsICdfJywgJ2gnLCAnMScsICc2JywgJ18nLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICcyJywgJ18nLCAncycsICd1JywgJ2InLCAnaCcsICdfJywgJ2gnLCAnMScsICc2JywgJ18nLCAnaCcsICdsJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsICd1JywgJ2InLCAnaCcsICdfJywgJ2gnLCAnMScsICc2JywgJ18nLCAnbCcsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsICd1JywgJ2InLCAnaCcsICdfJywgJ2gnLCAnMScsCisgICc2JywgJ18nLCAnbCcsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsICd1JywgJ2InLCAnaCcsCi0gICdfJywgJ2gnLCAnMScsICc2JywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdfJywgJ2gnLCAnMScsICc2JywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCiAgICdBJywgJzInLCAnXycsICdzJywgJ3UnLCAnYicsICdoJywgJ18nLCAnaCcsICcxJywgJzYnLCAnXycsICdzJywgJ2EnLCAndCcsCi0gICdfJywgJ2wnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdfJywgJ2gnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCiAgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAndScsICdiJywgJ2gnLCAnXycsCi0gICdsJywgJzEnLCAnNicsICdfJywgJ2gnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAndScsCi0gICdiJywgJ2gnLCAnXycsICdsJywgJzEnLCAnNicsICdfJywgJ2wnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCi0gICdfJywgJ3MnLCAndScsICdiJywgJ2gnLCAnXycsICdsJywgJzEnLCAnNicsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnaCcsCi0gICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsICd1JywgJ2InLCAnaCcsICdfJywgJ2wnLCAnMScsCi0gICc2JywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdoJywgJzEnLCAnNicsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnbCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICcyJywgJ18nLCAncycsICd1JywgJ2InLCAnaCcsICdfJywgJ2gnLCAnMScsICc2JywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsCisgICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdzJywgJ3UnLCAnYicsICdoJywgJ18nLCAnbCcsCisgICcxJywgJzYnLCAnXycsICdoJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdzJywgJ3UnLCAnYicsCisgICdoJywgJ18nLCAnbCcsICcxJywgJzYnLCAnXycsICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCi0gICdzJywgJ3UnLCAnYicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsICd1JywgJ2InLCAncicsCi0gICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsICd1JywgJ2InLCAncycsICdhJywgJ3QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdzJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAndicsICdhJywgJ2QnLCAnZCcsICdoJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzInLCAnXycsICdzJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsICdoJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzInLCAnXycsICdzJywgJ3YnLCAnYScsICd2JywgJ2cnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCi0gICdfJywgJ3MnLCAndicsICdhJywgJ3YnLCAnZycsICdoJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCi0gICdzJywgJ3YnLCAnbicsICdhJywgJ3YnLCAnZycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdzJywgJ3UnLCAnYicsICdoJywgJ18nLCAnbCcsICcxJywgJzYnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ2gnLCAnbCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAndScsICdiJywgJ2gnLCAnXycsICdsJywgJzEnLCAnNicsCisgICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnbCcsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsCi0gICd2JywgJ3MnLCAndScsICdiJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdzJywgJ3YnLCAncycsCi0gICd1JywgJ2InLCAnaCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICd1JywgJ2InLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAndScsICdiJywgJ3InLCAnaScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAndScsICdiJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdBJywgJzInLCAnXycsICdzJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnaCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICcyJywgJ18nLCAncycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnaCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICcyJywgJ18nLCAncycsICd2JywgJ2EnLCAndicsICdnJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCisgICdzJywgJ3YnLCAnYScsICd2JywgJ2cnLCAnaCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsCisgICd2JywgJ24nLCAnYScsICd2JywgJ2cnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAndicsCisgICdzJywgJ3UnLCAnYicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsICd2JywgJ3MnLCAndScsCi0gICdiJywgJ3UnLCAnaCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsICd3JywgJ2knLCAneicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAneCcsICd0JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzInLCAnXycsICdzJywgJ3gnLCAndCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAncycsCi0gICd4JywgJ3QnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3QnLCAnZicsICdyJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndCcsICdmJywgJ3InLCAnaScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCi0gICcyJywgJ18nLCAndCcsICdmJywgJ3InLCAnaScsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndCcsCi0gICdmJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3QnLCAnZicsICdyJywgJ3AnLCAnaScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3QnLCAnZicsICdyJywgJ3MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCi0gICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAnaCcsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCi0gICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYScsCi0gICdiJywgJ3MnLCAndycsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYScsCi0gICdkJywgJ2QnLCAnYicsICdfJywgJ20nLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsCi0gICdhJywgJ2QnLCAnZCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsCi0gICdoJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsICdiJywgJ3MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnaCcsICdzJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCi0gICcyJywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd3JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCi0gICd2JywgJ2EnLCAndicsICdnJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ2EnLCAndicsCi0gICdnJywgJ2gnLCAnYycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsCi0gICdoJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ3UnLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndScsICdiJywgJ3InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndScsICdoJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzInLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ3UnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCi0gICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndScsICd3JywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCi0gICd2JywgJ2EnLCAndicsICdnJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ2EnLCAndicsCi0gICdnJywgJ3cnLCAnYycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsCi0gICd3JywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2InLCAnZScsCi0gICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdiJywgJ2cnLCAndCcsCi0gICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdoJywgJ2UnLCAncScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnaCcsICdnJywgJ3QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2gnLCAnZycsICd0JywgJ3UnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ3cnLCAnZScsICdxJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICd3JywgJ2cnLCAndCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAndycsICdnJywgJ3QnLCAndScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYycsICdvJywgJ24nLCAnaicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCi0gICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnbScsCi0gICdhJywgJ3gnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAndScsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICd1JywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ20nLCAnYScsICd4JywgJ3UnLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCi0gICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnbScsCi0gICdpJywgJ24nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAndScsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdtJywgJ2knLCAnbicsICd1JywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ20nLCAnaScsICduJywgJ3UnLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCi0gICdfJywgJ3YnLCAnbicsICdhJywgJ3YnLCAnZycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsCi0gICduJywgJ2EnLCAndicsICdnJywgJ2gnLCAnYycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsCi0gICduJywgJ2EnLCAndicsICdnJywgJ2gnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnbicsCi0gICdhJywgJ3YnLCAnZycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICduJywgJ2EnLCAndicsCi0gICdnJywgJ3cnLCAnYycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICduJywgJ2EnLCAndicsCi0gICdnJywgJ3cnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAncicsICdhJywgJ2QnLCAnZCcsCi0gICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ3InLCAnYScsICdkJywgJ2QnLCAndScsCi0gICdiJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ3InLCAncycsCi0gICdhJywgJ2QnLCAndScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdyJywgJ3MnLCAnYScsCi0gICdkJywgJ3UnLCAnYicsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsCi0gICdzJywgJ3UnLCAnYicsICdiJywgJ18nLCAnbScsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCi0gICd2JywgJ3MnLCAndScsICdiJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ3MnLCAndScsCiAgICdiJywgJ2gnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndScsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd1JywgJ2InLCAncycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndScsICdoJywgJ3MnLCAnXDAwMCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAndicsICdzJywgJ3UnLCAnYicsCisgICd1JywgJ2gnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAndycsICdpJywgJ3onLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzInLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3cnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCi0gICdfJywgJ3gnLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAneCcsICdvJywgJ3InLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3onLCAneCcsICd0JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzInLCAnXycsICd6JywgJ3gnLCAndCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAnYScsCi0gICduJywgJ2QnLCAnbicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ2EnLCAnbicsICdkJywgJ24nLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ2InLCAnaScsICd0JywgJ3MnLCAncCcsICdsJywgJ2knLCAndCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ2InLCAnaScsICd0JywgJ3MnLCAncCcsICdsJywgJ2knLCAndCcsCi0gICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAnYicsICdvJywgJ3UnLCAnbicsICdkJywgJ3MnLCAnYycsCi0gICdoJywgJ2UnLCAnYycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAnYycsICdtJywgJ3AnLCAnYicsCi0gICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICdjJywgJ20nLCAncCcsICdiJywgJ2UnLCAncScsCi0gICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAnYycsICdtJywgJ3AnLCAnYicsICdnJywgJ3QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICdjJywgJ20nLCAncCcsICdiJywgJ2cnLCAndCcsICdpJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAnYycsICdtJywgJ3AnLCAnYicsICdnJywgJ3QnLCAndScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnNCcsICdfJywgJ2MnLCAnbScsICdwJywgJ2InLCAnZycsICd0JywgJ3UnLCAnaScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnNCcsICdfJywgJ2MnLCAnbScsICdwJywgJ2gnLCAnZScsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICdzJywgJ3gnLCAndCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCi0gICc0JywgJ18nLCAnYycsICdtJywgJ3AnLCAnaCcsICdlJywgJ3EnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsCi0gICdfJywgJ2MnLCAnbScsICdwJywgJ2gnLCAnZycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAnYycsCi0gICdtJywgJ3AnLCAnaCcsICdnJywgJ3QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ2MnLCAnbScsCi0gICdwJywgJ2gnLCAnZycsICd0JywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICdjJywgJ20nLCAncCcsCi0gICdoJywgJ2cnLCAndCcsICd1JywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICdjJywgJ28nLCAnbScsCi0gICdiJywgJ2knLCAnbicsICdlJywgJ2knLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ2MnLCAnbycsCi0gICdtJywgJ2InLCAnaScsICduJywgJ2UnLCAncicsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAnYycsCi0gICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdyJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsCi0gICdjJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ3InLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsCi0gICdfJywgJ20nLCAnbycsICdkJywgJ3cnLCAncicsICdhJywgJ3AnLCAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsCi0gICdfJywgJ28nLCAncicsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAnbycsICdyJywgJ24nLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ3InLCAnYycsICdtJywgJ3AnLCAnZScsICdxJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAncicsICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAnaScsICdcMDAwJywgJ18nLCAnXycsCisgICcyJywgJ18nLCAncycsICd4JywgJ3QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3MnLCAneCcsCisgICd0JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd0JywgJ2YnLCAncicsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnNCcsICdfJywgJ3InLCAnYycsICdtJywgJ3AnLCAnbicsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzQnLCAnXycsICdyJywgJ2MnLCAnbScsICdwJywgJ24nLCAnZScsICdxJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzQnLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdyJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdBJywgJzQnLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdyJywgJ2knLCAnXycsICdzJywgJ2EnLCAndCcsCisgICdfJywgJ0EnLCAnMicsICdfJywgJ3QnLCAnZicsICdyJywgJ2MnLCAncicsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICcyJywgJ18nLCAndCcsICdmJywgJ3InLCAnaScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndCcsCisgICdmJywgJ3InLCAnaScsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndCcsICdmJywgJ3InLCAncCcsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ3InLCAncicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ3InLCAncicsCi0gICdfJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAndCcsICdsJywgJ2InLCAnbScsCi0gICdhJywgJ3QnLCAnYycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAndicsICdjJywgJ20nLCAncCcsCi0gICdiJywgJ2UnLCAncScsICdfJywgJ2EnLCAnbicsICd5JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAndicsCi0gICdjJywgJ20nLCAncCcsICdiJywgJ2UnLCAncScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAndicsCi0gICdjJywgJ20nLCAncCcsICdiJywgJ2cnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ3YnLCAnYycsCi0gICdtJywgJ3AnLCAnYicsICdnJywgJ3QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ3YnLCAnYycsCi0gICdtJywgJ3AnLCAnYicsICdnJywgJ3QnLCAndScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAndicsCi0gICdjJywgJ20nLCAncCcsICdoJywgJ2UnLCAncScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAndicsCi0gICdjJywgJ20nLCAncCcsICdoJywgJ2cnLCAndCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAndicsCi0gICdjJywgJ20nLCAncCcsICdoJywgJ2cnLCAndCcsICd1JywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsCi0gICd2JywgJ2MnLCAnbScsICdwJywgJ3cnLCAnZScsICdxJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsCi0gICd2JywgJ2MnLCAnbScsICdwJywgJ3cnLCAnZycsICd0JywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsCi0gICd2JywgJ2MnLCAnbScsICdwJywgJ3cnLCAnZycsICd0JywgJ3UnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsCi0gICdfJywgJ3YnLCAncicsICdtJywgJ2EnLCAneCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAndicsCi0gICdyJywgJ20nLCAnYScsICd4JywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ3YnLCAncicsCi0gICdtJywgJ2EnLCAneCcsICd1JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICd2JywgJ3InLCAnbScsCi0gICdhJywgJ3gnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ3YnLCAncicsICdtJywgJ2knLCAnbicsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAndicsICdyJywgJ20nLCAnaScsICduJywgJ3UnLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ3YnLCAncicsICdtJywgJ2knLCAnbicsICd1JywgJ3cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICd2JywgJ3InLCAnbScsICdpJywgJ24nLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3QnLCAnZicsICdyJywgJ3AnLCAnaScsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnNScsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnaCcsICd1JywgJ2InLCAncycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0EnLCAnNicsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnYicsICdlJywgJ3EnLCAnXycsICduJywgJ28nLCAndCcsCi0gICdhJywgJ24nLCAneScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNicsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnYicsCi0gICdlJywgJ3EnLCAnXycsICduJywgJ28nLCAndCcsICdhJywgJ24nLCAneScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdhJywgJ2wnLCAnbCcsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsCi0gICcyJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdhJywgJ24nLCAnZCcsCi0gICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICcyJywgJ18nLCAnYScsICduJywgJ3knLCAnOCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0MnLCAnMicsICdfJywgJ2InLCAnaScsICd0JywgJ3MnLCAnYycsICdsJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdDJywgJzInLCAnXycsICdiJywgJ2knLCAndCcsICdzJywgJ2MnLCAnbCcsICdyJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdDJywgJzInLCAnXycsICdiJywgJ2knLCAndCcsICdzJywgJ3MnLCAnZScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsCi0gICcyJywgJ18nLCAnYycsICdtJywgJ3AnLCAnZScsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICcyJywgJ18nLCAnYycsCi0gICdtJywgJ3AnLCAnZScsICdxJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdjJywgJ20nLCAncCcsCi0gICdlJywgJ3EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsICdfJywgJ2MnLCAnbScsICdwJywgJ2cnLCAnZScsCi0gICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICcyJywgJ18nLCAnYycsICdtJywgJ3AnLCAnZycsICdlJywgJ3UnLCAnaScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsICdfJywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0MnLCAnMicsICdfJywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsCi0gICcyJywgJ18nLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsCi0gICdjJywgJ20nLCAncCcsICdnJywgJ3QnLCAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsICdfJywgJ2MnLCAnbScsCi0gICdwJywgJ2cnLCAndCcsICd1JywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdjJywgJ20nLCAncCcsCi0gICdnJywgJ3QnLCAndScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICcyJywgJ18nLCAnYycsICdtJywgJ3AnLCAnbCcsCisgICdfJywgJ0EnLCAnMicsICdfJywgJ3QnLCAnZicsICdyJywgJ3InLCAnYycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICcyJywgJ18nLCAndCcsICdmJywgJ3InLCAncycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsCisgICdhJywgJ2InLCAncycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdhJywgJ2InLCAncycsCisgICdoJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdhJywgJ2InLCAncycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdhJywgJ2InLCAncycsICd3JywgJ3MnLCAnYScsCiAgICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICcyJywgJ18nLCAnYycsICdtJywgJ3AnLCAnbCcsICd0JywgJ3UnLCAnXDAwMCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdiJywgJ18nLCAnbScsCisgICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2gnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsCi0gICcyJywgJ18nLCAnbScsICd1JywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdtJywgJ3UnLCAneCcsCi0gICdpJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdtJywgJ3UnLCAneCcsICdpJywgJ3InLCAnXDAwMCcsCisgICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2gnLCAncycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICcyJywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd1JywgJ2InLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCisgICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsICdoJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCisgICd2JywgJ2EnLCAnZCcsICdkJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ2EnLCAnZCcsCisgICdkJywgJ3cnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAnaCcsICdjJywgJ3InLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdtJywgJ3UnLCAneCcsICdyJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdDJywgJzInLCAnXycsICduJywgJ28nLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsICdfJywgJ28nLCAncicsCisgICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ2gnLCAncicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICcyJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICd1JywgJ2InLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCisgICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsCisgICdhJywgJ3YnLCAnZycsICd1JywgJ2gnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYScsCisgICd2JywgJ2cnLCAndScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsCisgICd1JywgJ3cnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndycsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsICdfJywgJ28nLCAncicsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsCi0gICcyJywgJ18nLCAncCcsICd4JywgJ2YnLCAnZScsICdyJywgJ18nLCAnbScsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdDJywgJzInLCAnXycsICd0JywgJ2YnLCAncicsICdwJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsCi0gICd0JywgJ2YnLCAncicsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICd2JywgJ2knLCAndCcsCi0gICdwJywgJ2EnLCAnYycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICcyJywgJ18nLCAndicsICdtJywgJ3UnLCAneCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsICdfJywgJ3gnLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsCi0gICc0JywgJ18nLCAnYScsICduJywgJ2QnLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnNCcsCi0gICdfJywgJ2EnLCAnbicsICdkJywgJ18nLCAnYScsICduJywgJ2QnLCAnbicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnNCcsCi0gICdfJywgJ2EnLCAnbicsICdkJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICc0JywgJ18nLCAnYScsCi0gICduJywgJ2QnLCAnXycsICdvJywgJ3InLCAnbicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnNCcsICdfJywgJ2MnLCAnbScsCi0gICdwJywgJ2wnLCAndCcsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICc0JywgJ18nLCAnYycsICdtJywgJ3AnLCAnbCcsCi0gICd0JywgJ2UnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnNCcsICdfJywgJ2MnLCAnbScsICdwJywgJ2wnLCAndCcsCi0gICdlJywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzQnLCAnXycsICdjJywgJ20nLCAncCcsICdsJywgJ3QnLCAnZScsCi0gICd1JywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzQnLCAnXycsICdjJywgJ20nLCAncCcsICduJywgJ2UnLCAncScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnNCcsICdfJywgJ2MnLCAnbScsICdwJywgJ24nLCAnZScsICdxJywgJ2knLCAnXDAwMCcsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndycsICdjJywgJ3InLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdDJywgJzQnLCAnXycsICdmJywgJ2EnLCAncycsICd0JywgJ2MnLCAnbycsICdyJywgJ24nLCAnZScsCi0gICdyJywgJzknLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzQnLCAnXycsICdmJywgJ2EnLCAncycsICd0JywgJ2MnLCAnbycsCi0gICdyJywgJ24nLCAnZScsICdyJywgJzknLCAnXycsICduJywgJ28nLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnNCcsCi0gICdfJywgJ24nLCAnYicsICdpJywgJ3QnLCAncycsICdjJywgJ2wnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnNCcsCi0gICdfJywgJ24nLCAnYicsICdpJywgJ3QnLCAncycsICdjJywgJ2wnLCAncicsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsCi0gICc0JywgJ18nLCAnbicsICdiJywgJ2knLCAndCcsICdzJywgJ3MnLCAnZScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsCi0gICc0JywgJ18nLCAnbycsICdyJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzQnLCAnXycsCi0gICdvJywgJ3InLCAnXycsICdhJywgJ24nLCAnZCcsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICc0JywgJ18nLCAnbycsCi0gICdyJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICc0JywgJ18nLCAnbycsICdyJywgJ18nLCAnbycsCi0gICdyJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdjJywgJ28nLCAnbicsICd2JywgJ18nLCAnZCcsCi0gICcyJywgJ2QnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ2MnLCAnbycsICduJywgJ3YnLCAnXycsCi0gICdkJywgJzInLCAncycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnYycsICdvJywgJ24nLCAndicsCi0gICdfJywgJ2QnLCAnZicsICcyJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdjJywgJ28nLCAnbicsCi0gICd2JywgJ18nLCAnZCcsICdmJywgJzInLCAnZCcsICdfJywgJ2MnLCAnaCcsICdvJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ3cnLCAncicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnYicsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdGJywgJzInLCAnXycsICdjJywgJ28nLCAnbicsICd2JywgJ18nLCAnZCcsICdmJywgJzInLCAncycsICdmJywgJ1wwMDAnLCAnXycsCisgICdBJywgJzInLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2InLCAnZycsICd0JywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdBJywgJzInLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2gnLCAnZScsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICcyJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdoJywgJ2cnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCisgICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnaCcsICdnJywgJ3QnLCAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCisgICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAndycsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsCisgICd2JywgJ2MnLCAnbScsICdwJywgJ3cnLCAnZycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsCisgICdjJywgJ20nLCAncCcsICd3JywgJ2cnLCAndCcsICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsCisgICdjJywgJ28nLCAnbicsICdqJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICdoJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnYycsICdvJywgJ24nLCAndicsICdfJywgJ2QnLCAnZicsICcyJywgJ3UnLCAnZCcsCisgICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdBJywgJzInLCAnXycsICd2JywgJ20nLCAnYScsICd4JywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCisgICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAndScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsCisgICdtJywgJ2EnLCAneCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdtJywgJ2knLCAnbicsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdtJywgJ2knLCAnbicsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdtJywgJ2knLCAnbicsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdBJywgJzInLCAnXycsICd2JywgJ20nLCAnaScsICduJywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCisgICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAndScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsCisgICdtJywgJ2knLCAnbicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICduJywgJ2EnLCAndicsCisgICdnJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ24nLCAnYScsICd2JywgJ2cnLCAnaCcsCisgICdjJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ24nLCAnYScsICd2JywgJ2cnLCAnaCcsCisgICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICduJywgJ2EnLCAndicsICdnJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ24nLCAnYScsICd2JywgJ2cnLCAndycsICdjJywgJ3InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ24nLCAnYScsICd2JywgJ2cnLCAndycsICdyJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdyJywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAncicsICdhJywgJ2QnLCAnZCcsICd1JywgJ2InLCAnXycsICdhJywgJ2MnLCAnYycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAncicsICdzJywgJ2EnLCAnZCcsICd1JywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ3InLCAncycsICdhJywgJ2QnLCAndScsICdiJywgJ18nLCAnYScsCisgICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ2InLCAnXycsCisgICdtJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnaCcsICdzJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdBJywgJzInLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAnYicsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICcyJywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd1JywgJ2gnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsCisgICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3YnLCAncycsCisgICd1JywgJ2InLCAndycsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICcyJywgJ18nLCAneCcsICdvJywgJ3InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdBJywgJzInLCAnXycsICd4JywgJ28nLCAncicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICcyJywgJ18nLCAneicsICd4JywgJ3QnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnMicsICdfJywgJ3onLCAneCcsCisgICd0JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICdhJywgJ2QnLCAnZCcsICdwJywgJ18nLCAnYycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ2EnLCAnbicsICdkJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdBJywgJzQnLCAnXycsICdhJywgJ24nLCAnZCcsICduJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsCisgICdiJywgJ2knLCAndCcsICdzJywgJ3AnLCAnbCcsICdpJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsCisgICdiJywgJ2knLCAndCcsICdzJywgJ3AnLCAnbCcsICdpJywgJ3QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsCisgICdfJywgJ2InLCAnbycsICd1JywgJ24nLCAnZCcsICdzJywgJ2MnLCAnaCcsICdlJywgJ2MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ0EnLCAnNCcsICdfJywgJ2MnLCAnbScsICdwJywgJ2InLCAnZScsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICc0JywgJ18nLCAnYycsICdtJywgJ3AnLCAnYicsICdlJywgJ3EnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsCisgICdfJywgJ2MnLCAnbScsICdwJywgJ2InLCAnZycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAnYycsCisgICdtJywgJ3AnLCAnYicsICdnJywgJ3QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ2MnLCAnbScsCisgICdwJywgJ2InLCAnZycsICd0JywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICdjJywgJ20nLCAncCcsCisgICdiJywgJ2cnLCAndCcsICd1JywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICdjJywgJ20nLCAncCcsCisgICdoJywgJ2UnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ2MnLCAnbScsICdwJywgJ2gnLCAnZScsCisgICdxJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICdjJywgJ20nLCAncCcsICdoJywgJ2cnLCAndCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ2MnLCAnbScsICdwJywgJ2gnLCAnZycsICd0JywgJ2knLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICdjJywgJ20nLCAncCcsICdoJywgJ2cnLCAndCcsICd1JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAnYycsICdtJywgJ3AnLCAnaCcsICdnJywgJ3QnLCAndScsICdpJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAnYycsICdvJywgJ20nLCAnYicsICdpJywgJ24nLCAnZScsICdpJywgJ2knLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICdjJywgJ28nLCAnbScsICdiJywgJ2knLCAnbicsICdlJywgJ2knLCAncicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ2MnLCAnbycsICdtJywgJ2InLCAnaScsICduJywgJ2UnLCAncicsCisgICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAnYycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsCisgICdyJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICdjJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsCisgICdfJywgJ3InLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ20nLCAnbycsICdkJywgJ3cnLCAncicsCisgICdhJywgJ3AnLCAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ28nLCAncicsICduJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAnbycsICdyJywgJ24nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsCisgICdfJywgJ3InLCAnYycsICdtJywgJ3AnLCAnZScsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAncicsCisgICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ3InLCAnYycsCisgICdtJywgJ3AnLCAnbicsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICdyJywgJ2MnLCAnbScsCisgICdwJywgJ24nLCAnZScsICdxJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICdyJywgJ28nLCAndScsCisgICduJywgJ2QnLCAnXycsICdyJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICdyJywgJ28nLCAndScsCisgICduJywgJ2QnLCAnXycsICdyJywgJ2knLCAnXycsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsCisgICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ3InLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsCisgICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ3InLCAncicsICdfJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAncycsICd1JywgJ2InLCAncCcsICdfJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdBJywgJzQnLCAnXycsICd0JywgJ2YnLCAncicsICdjJywgJ3AnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsCisgICdfJywgJ3QnLCAnZicsICdyJywgJ3AnLCAnYycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAndCcsCisgICdsJywgJ2InLCAnbScsICdhJywgJ3QnLCAnYycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAndicsCisgICdjJywgJ20nLCAncCcsICdiJywgJ2UnLCAncScsICdfJywgJ2EnLCAnbicsICd5JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICc0JywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdiJywgJ2UnLCAncScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICc0JywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdiJywgJ2cnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsCisgICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnYicsICdnJywgJ3QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsCisgICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnYicsICdnJywgJ3QnLCAndScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICc0JywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdoJywgJ2UnLCAncScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICc0JywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdoJywgJ2cnLCAndCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICc0JywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdoJywgJ2cnLCAndCcsICd1JywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdBJywgJzQnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ3cnLCAnZScsICdxJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdBJywgJzQnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ3cnLCAnZycsICd0JywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdBJywgJzQnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ3cnLCAnZycsICd0JywgJ3UnLCAnaScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ0EnLCAnNCcsICdfJywgJ3YnLCAncicsICdtJywgJ2EnLCAneCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICc0JywgJ18nLCAndicsICdyJywgJ20nLCAnYScsICd4JywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsCisgICdfJywgJ3YnLCAncicsICdtJywgJ2EnLCAneCcsICd1JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsCisgICd2JywgJ3InLCAnbScsICdhJywgJ3gnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ3YnLCAncicsCisgICdtJywgJ2knLCAnbicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc0JywgJ18nLCAndicsICdyJywgJ20nLCAnaScsCisgICduJywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNCcsICdfJywgJ3YnLCAncicsICdtJywgJ2knLCAnbicsCisgICd1JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdBJywgJzQnLCAnXycsICd2JywgJ3InLCAnbScsICdpJywgJ24nLCAndycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0EnLCAnNScsICdfJywgJ0EnLCAnQycsICdTJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICc1JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdoJywgJ3UnLCAnYicsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsCisgICc2JywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdiJywgJ2UnLCAncScsICdfJywgJ24nLCAnbycsICd0JywgJ2EnLCAnbicsCisgICd5JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQScsICc2JywgJ18nLCAndicsICdtJywgJ2knLCAnbicsICd1JywgJ2InLCAnXycsCisgICdSJywgJ2QnLCAnUCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsICdfJywgJ2EnLCAnbCcsICdsJywgJzgnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsCisgICdfJywgJ2EnLCAnbicsICdkJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdhJywgJ24nLCAneScsCisgICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICcyJywgJ18nLCAnYicsICdpJywgJ3QnLCAncycsICdjJywgJ2wnLCAncicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsICdfJywgJ2InLCAnaScsICd0JywgJ3MnLCAnYycsICdsJywgJ3InLCAnaScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsICdfJywgJ2InLCAnaScsICd0JywgJ3MnLCAncycsICdlJywgJ3QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdDJywgJzInLCAnXycsICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsCisgICdfJywgJ2MnLCAnbScsICdwJywgJ2UnLCAncScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICcyJywgJ18nLCAnYycsCisgICdtJywgJ3AnLCAnZycsICdlJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdjJywgJ20nLCAncCcsCisgICdnJywgJ2UnLCAndScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICcyJywgJ18nLCAnYycsICdtJywgJ3AnLCAnZycsCisgICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICcyJywgJ18nLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ2knLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdjJywgJ20nLCAncCcsICdnJywgJ3QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ0MnLCAnMicsICdfJywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsCisgICcyJywgJ18nLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ3UnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsCisgICdfJywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICd1JywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsCisgICdjJywgJ20nLCAncCcsICdsJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdjJywgJ20nLCAncCcsCisgICdsJywgJ3QnLCAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdtJywgJ3UnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsCisgICdfJywgJ20nLCAndScsICd4JywgJ2knLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsICdfJywgJ20nLCAndScsCisgICd4JywgJ2knLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsICdfJywgJ20nLCAndScsICd4JywgJ3InLCAnaScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsICdfJywgJ24nLCAnbycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsCisgICcyJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICcyJywgJ18nLCAnbycsICdyJywgJ24nLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsICdwJywgJ3gnLCAnZicsICdlJywgJ3InLCAnXycsICdtJywgJ2EnLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsICdfJywgJ3QnLCAnZicsICdyJywgJ3AnLCAncicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ0MnLCAnMicsICdfJywgJ3QnLCAnZicsICdyJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnMicsCisgICdfJywgJ3YnLCAnaScsICd0JywgJ3AnLCAnYScsICdjJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzInLCAnXycsCisgICd2JywgJ20nLCAndScsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICcyJywgJ18nLCAneCcsICdvJywgJ3InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdDJywgJzQnLCAnXycsICdhJywgJ24nLCAnZCcsICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQycsICc0JywgJ18nLCAnYScsICduJywgJ2QnLCAnXycsICdhJywgJ24nLCAnZCcsICduJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQycsICc0JywgJ18nLCAnYScsICduJywgJ2QnLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdDJywgJzQnLCAnXycsICdhJywgJ24nLCAnZCcsICdfJywgJ28nLCAncicsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsCisgICc0JywgJ18nLCAnYycsICdtJywgJ3AnLCAnbCcsICd0JywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzQnLCAnXycsCisgICdjJywgJ20nLCAncCcsICdsJywgJ3QnLCAnZScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICc0JywgJ18nLCAnYycsCisgICdtJywgJ3AnLCAnbCcsICd0JywgJ2UnLCAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnNCcsICdfJywgJ2MnLCAnbScsCisgICdwJywgJ2wnLCAndCcsICdlJywgJ3UnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnNCcsICdfJywgJ2MnLCAnbScsCisgICdwJywgJ24nLCAnZScsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnQycsICc0JywgJ18nLCAnYycsICdtJywgJ3AnLCAnbicsCisgICdlJywgJ3EnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnNCcsICdfJywgJ2YnLCAnYScsICdzJywgJ3QnLCAnYycsCisgICdvJywgJ3InLCAnbicsICdlJywgJ3InLCAnOScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0MnLCAnNCcsICdfJywgJ2YnLCAnYScsCisgICdzJywgJ3QnLCAnYycsICdvJywgJ3InLCAnbicsICdlJywgJ3InLCAnOScsICdfJywgJ24nLCAnbycsICd0JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQycsICc0JywgJ18nLCAnbicsICdiJywgJ2knLCAndCcsICdzJywgJ2MnLCAnbCcsICdyJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnQycsICc0JywgJ18nLCAnbicsICdiJywgJ2knLCAndCcsICdzJywgJ2MnLCAnbCcsICdyJywgJ2knLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdDJywgJzQnLCAnXycsICduJywgJ2InLCAnaScsICd0JywgJ3MnLCAncycsICdlJywgJ3QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdDJywgJzQnLCAnXycsICdvJywgJ3InLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ0MnLCAnNCcsICdfJywgJ28nLCAncicsICdfJywgJ2EnLCAnbicsICdkJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdDJywgJzQnLCAnXycsICdvJywgJ3InLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdDJywgJzQnLCAnXycsCisgICdvJywgJ3InLCAnXycsICdvJywgJ3InLCAnbicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ2MnLCAnbycsCisgICduJywgJ3YnLCAnXycsICdkJywgJzInLCAnZCcsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnYycsCisgICdvJywgJ24nLCAndicsICdfJywgJ2QnLCAnMicsICdzJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsCisgICdjJywgJ28nLCAnbicsICd2JywgJ18nLCAnZCcsICdmJywgJzInLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsCisgICdfJywgJ2MnLCAnbycsICduJywgJ3YnLCAnXycsICdkJywgJ2YnLCAnMicsICdkJywgJ18nLCAnYycsICdoJywgJ28nLCAncCcsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCiAgICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ2MnLCAnbycsICduJywgJ3YnLCAnXycsICdkJywgJ2YnLCAnMicsCi0gICd1JywgJ2QnLCAnXycsICdjJywgJ2gnLCAnbycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnYycsCi0gICdvJywgJ24nLCAndicsICdfJywgJ2QnLCAnZicsICcyJywgJ3UnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsCi0gICdfJywgJ2MnLCAnbycsICduJywgJ3YnLCAnXycsICdkJywgJ2YnLCAnMicsICd1JywgJ3cnLCAnXycsICdjJywgJ2gnLCAnbycsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnYycsICdvJywgJ24nLCAndicsICdfJywgJ2QnLCAnZicsCi0gICcyJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdzJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCiAgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdjJywgJ28nLCAnbicsICd2JywgJ18nLCAnZCcsCi0gICdmJywgJzInLCAndycsICdfJywgJ2MnLCAnaCcsICdvJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsCi0gICdjJywgJ28nLCAnbicsICd2JywgJ18nLCAncycsICdmJywgJzInLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsCi0gICdfJywgJ2MnLCAnbycsICduJywgJ3YnLCAnXycsICdzJywgJ2YnLCAnMicsICdkJywgJ18nLCAnYycsICdoJywgJ28nLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ2MnLCAnbycsICduJywgJ3YnLCAnXycsICdzJywgJ2YnLCAnMicsCi0gICdkJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdjJywgJ28nLCAnbicsICd2JywgJ18nLCAncycsCiAgICdmJywgJzInLCAndScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnYycsICdvJywgJ24nLCAndicsCi0gICdfJywgJ3MnLCAnZicsICcyJywgJ3UnLCAnZCcsICdfJywgJ2MnLCAnaCcsICdvJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdfJywgJ2QnLCAnZicsICcyJywgJ3UnLCAnZCcsICdfJywgJ2MnLCAnaCcsICdvJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdGJywgJzInLCAnXycsICdjJywgJ28nLCAnbicsICd2JywgJ18nLCAncycsICdmJywgJzInLCAndScsICd3JywgJ1wwMDAnLCAnXycsCisgICdGJywgJzInLCAnXycsICdjJywgJ28nLCAnbicsICd2JywgJ18nLCAnZCcsICdmJywgJzInLCAndScsICd3JywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnYycsICdvJywgJ24nLCAndicsICdfJywgJ3MnLCAnZicsICcyJywgJ3UnLCAndycsCisgICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnYycsICdvJywgJ24nLCAndicsICdfJywgJ2QnLCAnZicsICcyJywgJ3UnLCAndycsCiAgICdfJywgJ2MnLCAnaCcsICdvJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCiAgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdjJywgJ28nLCAnbicsCi0gICd2JywgJ18nLCAncycsICdmJywgJzInLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICd2JywgJ18nLCAnZCcsICdmJywgJzInLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCiAgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ2MnLCAnbycsCi0gICduJywgJ3YnLCAnXycsICdzJywgJ2YnLCAnMicsICd3JywgJ18nLCAnYycsICdoJywgJ28nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAnXycsICdkJywgJ2YnLCAnMicsICd3JywgJ18nLCAnYycsICdoJywgJ28nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0YnLCAnMicsICdfJywgJ2MnLCAnbycsICduJywgJ3YnLCAnXycsICd1JywgJ2QnLCAnMicsICdkJywgJ2YnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdjJywgJ28nLCAnbicsICd2JywgJ18nLCAndScsICdkJywgJzInLCAncycsCi0gICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnYycsICdvJywgJ24nLCAndicsICdfJywgJ3UnLCAndycsCisgICdfJywgJ0YnLCAnMicsICdfJywgJ2MnLCAnbycsICduJywgJ3YnLCAnXycsICdzJywgJ2YnLCAnMicsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnYycsICdvJywgJ24nLCAndicsICdfJywgJ3MnLCAnZicsICcyJywgJ2QnLCAnXycsCisgICdjJywgJ2gnLCAnbycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnYycsICdvJywgJ24nLCAndicsCisgICdfJywgJ3MnLCAnZicsICcyJywgJ2QnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ2MnLCAnbycsCisgICduJywgJ3YnLCAnXycsICdzJywgJ2YnLCAnMicsICd1JywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsCisgICdjJywgJ28nLCAnbicsICd2JywgJ18nLCAncycsICdmJywgJzInLCAndScsICdkJywgJ18nLCAnYycsICdoJywgJ28nLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ2MnLCAnbycsICduJywgJ3YnLCAnXycsICdzJywgJ2YnLCAnMicsCisgICd1JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdjJywgJ28nLCAnbicsICd2JywgJ18nLCAncycsCisgICdmJywgJzInLCAndScsICd3JywgJ18nLCAnYycsICdoJywgJ28nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsCisgICdfJywgJ2MnLCAnbycsICduJywgJ3YnLCAnXycsICdzJywgJ2YnLCAnMicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsCisgICcyJywgJ18nLCAnYycsICdvJywgJ24nLCAndicsICdfJywgJ3MnLCAnZicsICcyJywgJ3cnLCAnXycsICdjJywgJ2gnLCAnbycsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnYycsICdvJywgJ24nLCAndicsICdfJywgJ3UnLCAnZCcsCiAgICcyJywgJ2QnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCiAgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ2MnLCAnbycsICduJywgJ3YnLCAnXycsCi0gICd1JywgJ3cnLCAnMicsICdzJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICd1JywgJ2QnLCAnMicsICdzJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCiAgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdjJywgJ28nLCAnbicsCi0gICd2JywgJ18nLCAndycsICcyJywgJ2QnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ2MnLCAnbycsCi0gICduJywgJ3YnLCAnXycsICd3JywgJzInLCAncycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnZCcsCi0gICdmJywgJ2MnLCAnbCcsICdhJywgJ3MnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ2QnLCAnZicsCi0gICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdkJywgJ2YnLCAnYycsCi0gICdtJywgJ3AnLCAnZycsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnZCcsICdmJywgJ2MnLCAnbScsCi0gICdwJywgJ2cnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ2QnLCAnZicsICdjJywgJ20nLCAncCcsCi0gICd1JywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdkJywgJ2YnLCAnaScsICdtJywgJ20nLCAnXycsCi0gICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnZCcsICdmJywgJ2knLCAnbScsICdtJywgJ18nLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ3MnLCAnZicsICdhJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ0YnLCAnMicsICdfJywgJ3MnLCAnZicsICdjJywgJ2wnLCAnYScsICdzJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdGJywgJzInLCAnXycsICdzJywgJ2YnLCAnYycsICdtJywgJ3AnLCAnZScsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsCi0gICcyJywgJ18nLCAncycsICdmJywgJ2MnLCAnbScsICdwJywgJ2cnLCAnZScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICd2JywgJ18nLCAndScsICd3JywgJzInLCAnZCcsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnYycsCisgICdvJywgJ24nLCAndicsICdfJywgJ3UnLCAndycsICcyJywgJ3MnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsCi0gICdfJywgJ3MnLCAnZicsICdjJywgJ20nLCAncCcsICdnJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdfJywgJ2MnLCAnbycsICduJywgJ3YnLCAnXycsICd3JywgJzInLCAnZCcsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsCisgICcyJywgJ18nLCAnYycsICdvJywgJ24nLCAndicsICdfJywgJ3cnLCAnMicsICdzJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdGJywgJzInLCAnXycsICdkJywgJ2YnLCAnYScsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsCi0gICdzJywgJ2YnLCAnYycsICdtJywgJ3AnLCAndScsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAncycsCi0gICdmJywgJ2YnLCAnaScsICd4JywgJ3UnLCAncCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAncycsCi0gICdmJywgJ2YnLCAnaScsICd4JywgJ3UnLCAncCcsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAncycsCi0gICdmJywgJ2YnLCAnaScsICd4JywgJ3UnLCAncCcsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAncycsCi0gICdmJywgJ2YnLCAnbScsICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAncycsICdmJywgJ2YnLCAnbScsCi0gICdhJywgJ18nLCAnbCcsICdpJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdzJywgJ2YnLCAnZicsCi0gICdtJywgJ2EnLCAnXycsICdzJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdzJywgJ2YnLCAnZicsCi0gICdtJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdzJywgJ2YnLCAnZicsICdtJywgJ3MnLCAnXycsCi0gICdsJywgJ2knLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ3MnLCAnZicsICdpJywgJ20nLCAnbScsCisgICdkJywgJ2YnLCAnYycsICdsJywgJ2EnLCAncycsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnZCcsCisgICdmJywgJ2MnLCAnbScsICdwJywgJ2UnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ2QnLCAnZicsCisgICdjJywgJ20nLCAncCcsICdnJywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdkJywgJ2YnLCAnYycsCisgICdtJywgJ3AnLCAnZycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnZCcsICdmJywgJ2MnLCAnbScsCisgICdwJywgJ3UnLCAnbycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ2QnLCAnZicsICdpJywgJ20nLCAnbScsCiAgICdfJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdzJywgJ2YnLCAnaScsICdtJywgJ20nLCAnXycsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdkJywgJ2YnLCAnaScsICdtJywgJ20nLCAnXycsCiAgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAnZCcsICdmJywgJ3MnLCAndScsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAncycsICdmJywgJ2EnLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsCisgICcyJywgJ18nLCAncycsICdmJywgJ2MnLCAnbCcsICdhJywgJ3MnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsCisgICdfJywgJ3MnLCAnZicsICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsCisgICdzJywgJ2YnLCAnYycsICdtJywgJ3AnLCAnZycsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAncycsCisgICdmJywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ3MnLCAnZicsCisgICdjJywgJ20nLCAncCcsICd1JywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdzJywgJ2YnLCAnZicsCisgICdpJywgJ3gnLCAndScsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdzJywgJ2YnLCAnZicsCisgICdpJywgJ3gnLCAndScsICdwJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdzJywgJ2YnLCAnZicsCisgICdpJywgJ3gnLCAndScsICdwJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdzJywgJ2YnLCAnZicsCisgICdtJywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdzJywgJ2YnLCAnZicsICdtJywgJ2EnLCAnXycsCisgICdsJywgJ2knLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ3MnLCAnZicsICdmJywgJ20nLCAnYScsCisgICdfJywgJ3MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ3MnLCAnZicsICdmJywgJ20nLCAncycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ3MnLCAnZicsICdmJywgJ20nLCAncycsICdfJywgJ2wnLCAnaScsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAncycsICdmJywgJ2knLCAnbScsICdtJywgJ18nLCAnbicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ0YnLCAnMicsICdfJywgJ3MnLCAnZicsICdpJywgJ20nLCAnbScsICdfJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdGJywgJzInLCAnXycsICdzJywgJ2YnLCAnaScsICduJywgJ3YnLCAncycsICdxJywgJ3InLCAndCcsCisgICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCiAgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAncycsICdmJywgJ20nLCAnYScsICd4JywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCiAgICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAncycsICdmJywgJ20nLCAnaScsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsCiAgICcyJywgJ18nLCAncycsICdmJywgJ20nLCAncCcsICd5JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAncycsCisgICdmJywgJ3InLCAnZScsICdjJywgJ2knLCAncCcsICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnRicsICcyJywgJ18nLCAncycsCiAgICdmJywgJ3MnLCAndScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTCcsICcyJywgJ18nLCAnbCcsICdvJywgJ2EnLCAnZCcsCiAgICd3JywgJ18nLCAnbCcsICdvJywgJ2MnLCAnaycsICdlJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCkBAIC0xNzE1NCw2OTM1ICsxNzMwMiw2NzAzIEBACiAgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAnbScsCiAgICdwJywgJ3knLCAndScsICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCi0gICdwJywgJ3knLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdoJywgJ2gnLCAnXycsCi0gICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2EnLCAnYycsCi0gICdjJywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCi0gICdwJywgJ3knLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdsJywgJ2gnLCAnXycsCi0gICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2EnLCAnYycsCi0gICdjJywgJ18nLCAnbCcsICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCi0gICdwJywgJ3knLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdsJywgJ2wnLCAnXycsCi0gICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2EnLCAnYycsCi0gICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsCi0gICdoJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCi0gICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCisgICduJywgJ2EnLCAnYycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnaCcsCisgICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnbCcsCisgICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdsJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCiAgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAncycsCi0gICdhJywgJ3QnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdhJywgJ3QnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCi0gICdtJywgJ3AnLCAneScsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2gnLCAnXycsCi0gICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdtJywgJ3AnLCAneScsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2gnLCAnXycsCisgICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCiAgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2EnLCAnYycsCi0gICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCiAgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsCi0gICdsJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCi0gICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsCi0gICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdoJywgJ2wnLCAnXycsCi0gICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2gnLCAnbCcsCi0gICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnbCcsCi0gICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCi0gICdsJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCi0gICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCi0gICd5JywgJ18nLCAnbCcsICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCi0gICdwJywgJ3knLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnbicsICdhJywgJ2MnLCAnXycsICdoJywgJ2gnLCAnXycsCi0gICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsCi0gICdjJywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCi0gICdwJywgJ3knLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnbicsICdhJywgJ2MnLCAnXycsICdsJywgJ2gnLCAnXycsCi0gICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsCi0gICdjJywgJ18nLCAnbCcsICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCi0gICdwJywgJ3knLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnbicsICdhJywgJ2MnLCAnXycsICdsJywgJ2wnLCAnXycsCi0gICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsCi0gICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsCi0gICdoJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCi0gICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAncycsCi0gICdhJywgJ3QnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCi0gICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2gnLCAnXycsCi0gICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsCi0gICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsCi0gICdsJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCi0gICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnaCcsCi0gICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCi0gICdyJywgJ24nLCAnZCcsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAncicsICduJywgJ2QnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnaCcsCi0gICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCi0gICdyJywgJ24nLCAnZCcsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAncicsICduJywgJ2QnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnbCcsCi0gICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCi0gICdyJywgJ24nLCAnZCcsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnaCcsCi0gICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCi0gICdzJywgJ2EnLCAndCcsICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnbCcsCi0gICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCi0gICdzJywgJ2EnLCAndCcsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnbCcsCi0gICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCi0gICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnbicsCi0gICdkJywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCi0gICdwJywgJ3knLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsCi0gICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdzJywgJ2EnLCAndCcsCi0gICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCi0gICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnbCcsCi0gICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCi0gICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnbCcsICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnbicsCi0gICdkJywgJ18nLCAnbCcsICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCi0gICdwJywgJ3knLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnbCcsICdsJywgJ18nLCAncycsCi0gICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICd1JywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ3UnLCAncCcsICdfJywgJ3MnLCAnMScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAndScsICdwJywgJ18nLCAncycsCi0gICcxJywgJ18nLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCi0gICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdoJywgJ2gnLCAnXycsCi0gICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnYScsCi0gICdjJywgJ2MnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCi0gICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsCi0gICdsJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCi0gICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdsJywgJ2wnLCAnXycsCi0gICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnYScsCi0gICdjJywgJ2MnLCAnXycsICdsJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCi0gICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCi0gICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnZCcsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsCi0gICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnZCcsICdfJywgJ2wnLCAnaCcsCi0gICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsCi0gICdsJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCi0gICdkJywgJ18nLCAnbCcsICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCi0gICdwJywgJ3knLCAnZCcsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsCi0gICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCi0gICd5JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnbCcsCi0gICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsCi0gICduJywgJ2EnLCAnYycsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsCi0gICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCi0gICd5JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICdyJywgJ24nLCAnZCcsICdfJywgJ2gnLCAnaCcsCi0gICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsCi0gICdyJywgJ24nLCAnZCcsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICdyJywgJ24nLCAnZCcsICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICdyJywgJ24nLCAnZCcsCi0gICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCi0gICd5JywgJ2QnLCAnXycsICdyJywgJ24nLCAnZCcsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICdyJywgJ24nLCAnZCcsICdfJywgJ2wnLCAnaCcsCi0gICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsCi0gICdyJywgJ24nLCAnZCcsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICdyJywgJ24nLCAnZCcsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdzJywgJ20nLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ3MnLCAndScsICdfJywgJ3UnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsICdhJywgJ2MnLCAnYycsCi0gICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCi0gICd5JywgJ3UnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJ2gnLCAnbCcsCi0gICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsCi0gICdhJywgJ2MnLCAnYycsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsICdhJywgJ2MnLCAnYycsCi0gICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCi0gICd5JywgJ3UnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsCi0gICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdfJywgJ2gnLCAnbCcsCi0gICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsCiAgICdoJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCiAgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCi0gICd1JywgJ18nLCAnbCcsICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCi0gICdwJywgJ3knLCAndScsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsICdsJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ18nLCAnbCcsICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAnaCcsCi0gICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsCi0gICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCi0gICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsCi0gICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdfJywgJ24nLCAnYScsCi0gICdjJywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCi0gICdwJywgJ3knLCAndScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAnbCcsICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAnbCcsCi0gICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsCi0gICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAnbCcsICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCi0gICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAnbCcsICdsJywgJ18nLCAncycsCi0gICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdfJywgJ3UnLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnZCcsICdfJywgJ2EnLCAnYycsCi0gICdjJywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCi0gICdwJywgJ3knLCAndScsICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsCisgICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ2QnLCAnXycsICdhJywgJ2MnLCAnYycsCi0gICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCi0gICd5JywgJ3UnLCAnZCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsCi0gICdsJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCi0gICd1JywgJ2QnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnZCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnbCcsCi0gICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsCi0gICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdsJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ2QnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ2QnLCAnXycsICdoJywgJ2gnLCAnXycsCi0gICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ2QnLCAnXycsCi0gICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCi0gICd1JywgJ2QnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAncycsCisgICdhJywgJ3QnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCi0gICdtJywgJ3AnLCAneScsICd1JywgJ2QnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ2QnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ2QnLCAnXycsICdsJywgJ2wnLCAnXycsCisgICdtJywgJ3AnLCAneScsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2wnLCAnXycsCiAgICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ2QnLCAnXycsCi0gICdsJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCi0gICd1JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnZCcsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAnaCcsCi0gICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsCi0gICdkJywgJ18nLCAnbicsICdhJywgJ2MnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2EnLCAnYycsCisgICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnbCcsCi0gICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnZCcsCi0gICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAnbCcsICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCi0gICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdkJywgJ18nLCAnbicsICdhJywgJ2MnLCAnXycsICdsJywgJ2gnLCAnXycsCisgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnbCcsICdoJywgJ18nLCAncycsCisgICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdsJywgJ2gnLCAnXycsCiAgICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ2QnLCAnXycsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ2wnLCAnbCcsCisgICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnbCcsCisgICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCisgICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnbicsICdhJywgJ2MnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAnaCcsCisgICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCisgICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnbicsICdhJywgJ2MnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAnbCcsCisgICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCiAgICduJywgJ2EnLCAnYycsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnZCcsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAnbCcsICdsJywgJ18nLCAncycsCisgICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAnbicsICdhJywgJ2MnLCAnXycsICdsJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAncycsCisgICdhJywgJ3QnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCisgICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2gnLCAnXycsCisgICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsCisgICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsCisgICdoJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCisgICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAncycsCisgICdhJywgJ3QnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCisgICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2wnLCAnXycsCisgICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ24nLCAnYScsCisgICdjJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsCisgICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdyJywgJ24nLCAnZCcsCisgICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCisgICd5JywgJ18nLCAncicsICduJywgJ2QnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsCiAgICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdpJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbicsICdhJywgJ2MnLCAnYycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdyJywgJ24nLCAnZCcsCisgICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCisgICd5JywgJ18nLCAncicsICduJywgJ2QnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnbCcsICdsJywgJ18nLCAncycsCisgICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdyJywgJ24nLCAnZCcsCisgICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCisgICd5JywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsCisgICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdzJywgJ2EnLCAndCcsCisgICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCisgICd5JywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnbCcsICdoJywgJ18nLCAncycsCisgICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdzJywgJ2EnLCAndCcsCisgICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCisgICd5JywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdsJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnbCcsICdsJywgJ18nLCAncycsCisgICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdzJywgJ2EnLCAndCcsCisgICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCi0gICcyJywgJ18nLCAnbicsICdhJywgJ2MnLCAnYycsICdpJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCi0gICdzJywgJ3UnLCAnYicsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAnYScsCi0gICdiJywgJ3MnLCAnZCcsICdpJywgJ2YnLCAnZicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsCi0gICdhJywgJ2InLCAncycsICdkJywgJ2knLCAnZicsICdmJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCi0gICd2JywgJ2MnLCAnbScsICdhJywgJ2MnLCAnXycsICdzJywgJzAnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ2knLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ2MnLCAnbScsICdhJywgJ2MnLCAnXycsICdzJywgJzAnLCAnXycsCi0gICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ2MnLCAnbScsCi0gICdwJywgJ3knLCAnXycsICdzJywgJzAnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzInLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ3knLCAnXycsICdzJywgJzAnLCAnXycsICdzJywgJ2EnLCAndCcsCi0gICdfJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ3knLCAnXycsCi0gICdzJywgJzEnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCi0gICd2JywgJ2MnLCAnbScsICdwJywgJ3knLCAnXycsICdzJywgJzEnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ2QnLCAnbScsICdhJywgJ2MnLCAncycsICdfJywgJ3MnLCAnMCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAnZCcsICdtJywgJ2EnLCAnYycsICdzJywgJ18nLCAncycsCi0gICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ3InLCAncycsCi0gICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsCi0gICdyJywgJ3MnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ2QnLCAnbScsCi0gICdwJywgJ3knLCAncycsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAnZCcsCi0gICdtJywgJ3AnLCAneScsICdzJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsCi0gICdtJywgJ2EnLCAnYycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdtJywgJ2EnLCAnYycsCi0gICcyJywgJ2UnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAnbScsICdhJywgJ2MnLCAnMicsCi0gICdlJywgJ3MnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ20nLCAnYScsCi0gICdjJywgJzInLCAnZScsICdzJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsCi0gICdtJywgJ2EnLCAnYycsICcyJywgJ3MnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCi0gICd2JywgJ20nLCAnYScsICdjJywgJzInLCAncycsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ3YnLCAnbScsICdhJywgJ2MnLCAnMicsICdzJywgJ3UnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzInLCAnXycsICd2JywgJ20nLCAnYScsICdjJywgJzInLCAncycsICd1JywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsCisgICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnaCcsCisgICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCisgICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICcyJywgJ2UnLCAncycsICdfJywgJ3MnLCAnMCcsCisgICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnbicsCisgICdkJywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCisgICdwJywgJ3knLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnbCcsICdoJywgJ18nLCAncycsCisgICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdzJywgJ2EnLCAndCcsCisgICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnbCcsICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCisgICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnbCcsCisgICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsCisgICdzJywgJ2EnLCAndCcsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnbCcsICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnXycsICd1JywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdfJywgJ3UnLCAncCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ18nLCAndScsICdwJywgJ18nLCAncycsICcxJywgJ18nLCAncycsCisgICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnYScsCisgICdjJywgJ2MnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCisgICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsCisgICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCisgICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdsJywgJ2gnLCAnXycsCisgICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnYScsCisgICdjJywgJ2MnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCisgICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdsJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsCisgICdsJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCisgICdkJywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCisgICdwJywgJ3knLCAnZCcsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnZCcsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMCcsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnMicsICdlJywgJ3MnLCAnXycsCisgICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICdsJywgJ2gnLCAnXycsCisgICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdkJywgJ18nLCAnbCcsCisgICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAnZCcsCisgICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCisgICd5JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnaCcsCisgICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsCisgICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsCisgICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCisgICd5JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2wnLCAnbCcsCisgICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsCisgICduJywgJ2EnLCAnYycsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICdyJywgJ24nLCAnZCcsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICdyJywgJ24nLCAnZCcsCisgICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCisgICd5JywgJ2QnLCAnXycsICdyJywgJ24nLCAnZCcsICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICdyJywgJ24nLCAnZCcsICdfJywgJ2gnLCAnbCcsCisgICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsCisgICdyJywgJ24nLCAnZCcsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICdyJywgJ24nLCAnZCcsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2QnLCAnXycsICdyJywgJ24nLCAnZCcsCisgICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCisgICd5JywgJ2QnLCAnXycsICdyJywgJ24nLCAnZCcsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCisgICdtJywgJ3AnLCAneScsICdzJywgJ2knLCAnbicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCisgICd5JywgJ3MnLCAnaScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAncycsCisgICdtJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICdzJywgJ3UnLCAnXycsCisgICd1JywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ18nLCAnYScsCisgICdjJywgJ2MnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCisgICdtJywgJ3AnLCAneScsICd1JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdoJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsCisgICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCisgICd1JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdsJywgJ2gnLCAnXycsCisgICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ18nLCAnYScsCisgICdjJywgJ2MnLCAnXycsICdsJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCisgICdtJywgJ3AnLCAneScsICd1JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdsJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsCisgICdsJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCisgICd1JywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCisgICdwJywgJ3knLCAndScsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsICdsJywgJ2gnLCAnXycsCisgICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ18nLCAnbCcsCisgICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsCisgICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCisgICd5JywgJ3UnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnaCcsCisgICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsCisgICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsICduJywgJ2EnLCAnYycsCisgICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCisgICd5JywgJ3UnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2wnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2wnLCAnbCcsCisgICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsCisgICduJywgJ2EnLCAnYycsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnXycsICd1JywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCisgICdtJywgJ3AnLCAneScsICd1JywgJ2QnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnZCcsICdfJywgJ2EnLCAnYycsCisgICdjJywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCisgICdwJywgJ3knLCAndScsICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ2QnLCAnXycsICdhJywgJ2MnLCAnYycsCisgICdfJywgJ2gnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsCisgICd5JywgJ3UnLCAnZCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnbCcsICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdkJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsCisgICdsJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCisgICd1JywgJ2QnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnZCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnbCcsCisgICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsCisgICdkJywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCisgICdwJywgJ3knLCAndScsICdkJywgJ18nLCAnaCcsICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCisgICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdkJywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdkJywgJ18nLCAnaCcsICdsJywgJ18nLCAncycsCisgICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdkJywgJ18nLCAnbCcsCisgICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsCisgICdkJywgJ18nLCAnbCcsICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsCisgICdwJywgJ3knLCAndScsICdkJywgJ18nLCAnbCcsICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCisgICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdkJywgJ18nLCAnbCcsICdsJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdkJywgJ18nLCAnbicsICdhJywgJ2MnLCAnXycsCisgICdoJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsCisgICd1JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2gnLCAnaCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnZCcsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAnaCcsCisgICdsJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsCisgICdkJywgJ18nLCAnbicsICdhJywgJ2MnLCAnXycsICdoJywgJ2wnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ2QnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ2wnLCAnaCcsCisgICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnZCcsCisgICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAnbCcsICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCisgICcyJywgJ18nLCAnbScsICdwJywgJ3knLCAndScsICdkJywgJ18nLCAnbicsICdhJywgJ2MnLCAnXycsICdsJywgJ2wnLCAnXycsCisgICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICdtJywgJ3AnLCAneScsICd1JywgJ2QnLCAnXycsCisgICduJywgJ2EnLCAnYycsICdfJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ20nLCAncCcsICd5JywgJ3UnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ24nLCAnYScsCisgICdjJywgJ2MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ24nLCAnYScsICdjJywgJ2MnLCAnaScsCisgICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAncycsICd1JywgJ2InLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ2EnLCAnYicsICdzJywgJ2QnLCAnaScsICdmJywgJ2YnLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAnZCcsICdpJywgJ2YnLCAnZicsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdjJywgJ20nLCAnYScsICdjJywgJ18nLCAncycsCisgICcwJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsCisgICdjJywgJ20nLCAnYScsICdjJywgJ18nLCAncycsICcwJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdyJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICd5JywgJ18nLCAncycsICcwJywgJ18nLCAncycsCisgICdhJywgJ3QnLCAnXycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsCisgICd5JywgJ18nLCAncycsICcwJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCisgICcyJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICd5JywgJ18nLCAncycsICcxJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsCisgICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICd5JywgJ18nLCAncycsCisgICcxJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsCisgICdkJywgJ20nLCAnYScsICdjJywgJ3MnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCisgICd2JywgJ2QnLCAnbScsICdhJywgJ2MnLCAncycsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdyJywgJ3MnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAncicsICdzJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ3MnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAncycsICdfJywgJ3MnLCAnMScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAnbScsICdhJywgJ2MnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAnbScsICdhJywgJ2MnLCAnMicsICdlJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICd2JywgJ20nLCAnYScsICdjJywgJzInLCAnZScsICdzJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdtJywgJ2EnLCAnYycsICcyJywgJ2UnLCAncycsICdfJywgJ3MnLCAnMScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAnbScsICdhJywgJ2MnLCAnMicsICdzJywgJ18nLCAncycsCisgICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdtJywgJ2EnLCAnYycsICcyJywgJ3MnLCAnXycsCisgICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ20nLCAnYScsICdjJywgJzInLCAncycsCisgICd1JywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdtJywgJ2EnLCAnYycsCisgICcyJywgJ3MnLCAndScsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAnbScsCisgICdwJywgJ3knLCAnMicsICdlJywgJ3MnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCisgICd2JywgJ20nLCAncCcsICd5JywgJzInLCAnZScsICdzJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCisgICcyJywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICcyJywgJ3MnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJzInLCAncycsICdfJywgJ3MnLCAnMCcsICdwJywgJ2EnLCAnYycsCisgICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICcyJywgJ3MnLCAnXycsCiAgICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCiAgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJzInLCAncycsCi0gICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnMicsCi0gICdzJywgJ18nLCAncycsICcwJywgJ3AnLCAnYScsICdjJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCi0gICd2JywgJ20nLCAncCcsICd5JywgJzInLCAncycsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCi0gICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnMicsICdzJywgJ18nLCAncycsICcxJywgJ3AnLCAnYScsICdjJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJzInLCAncycsICd1JywgJ18nLCAncycsCi0gICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICcyJywgJ3MnLCAndScsCi0gICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAncicsICdhJywgJ2QnLCAnZCcsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdyJywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAncicsICdjJywgJ20nLCAnYScsICdjJywgJ2knLCAnXycsCi0gICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ3InLCAnYycsICdtJywgJ2EnLCAnYycsCi0gICdpJywgJ18nLCAncycsICcwJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ3InLCAnYycsCi0gICdtJywgJ2EnLCAnYycsICdyJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdfJywgJ3MnLCAnMScsICdwJywgJ2EnLCAnYycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsCi0gICdyJywgJ2MnLCAnbScsICdhJywgJ2MnLCAncicsICdfJywgJ3MnLCAnMCcsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdtJywgJ3AnLCAneScsICcyJywgJ3MnLCAndScsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnMicsICdzJywgJ3UnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdNJywgJzInLCAnXycsICd2JywgJ3InLCAnYScsICdkJywgJ2QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsCisgICdfJywgJ3YnLCAncicsICdhJywgJ2QnLCAnZCcsICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCisgICd2JywgJ3InLCAnYycsICdtJywgJ2EnLCAnYycsICdpJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCi0gICcyJywgJ18nLCAndicsICdyJywgJ2MnLCAnbScsICdwJywgJ3knLCAnaScsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAncicsICdjJywgJ20nLCAncCcsICd5JywgJ2knLCAnXycsICdzJywgJzAnLCAnYycsCisgICcyJywgJ18nLCAndicsICdyJywgJ2MnLCAnbScsICdhJywgJ2MnLCAnaScsICdfJywgJ3MnLCAnMCcsICdjJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdyJywgJ2MnLCAnbScsICdhJywgJ2MnLCAncicsICdfJywgJ3MnLCAnMCcsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAncicsICdjJywgJ20nLCAncCcsICd5JywgJ3InLCAnXycsCi0gICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ3InLCAnYycsICdtJywgJ3AnLCAneScsCi0gICdyJywgJ18nLCAncycsICcwJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAncicsICdjJywgJ20nLCAnYScsICdjJywgJ3InLCAnXycsCisgICdzJywgJzAnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAncicsICdjJywgJ20nLCAncCcsCisgICd5JywgJ2knLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCiAgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ3InLCAnYycsCi0gICdtJywgJ3AnLCAneScsICdzJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzInLCAnXycsICd2JywgJ3InLCAnYycsICdtJywgJ3AnLCAneScsICdzJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsCisgICdtJywgJ3AnLCAneScsICdpJywgJ18nLCAncycsICcwJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsCisgICd2JywgJ3InLCAnYycsICdtJywgJ3AnLCAneScsICdyJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCisgICcyJywgJ18nLCAndicsICdyJywgJ2MnLCAnbScsICdwJywgJ3knLCAncicsICdfJywgJ3MnLCAnMCcsICdjJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdyJywgJ2MnLCAnbScsICdwJywgJ3knLCAncycsICdfJywgJ3MnLCAnMScsCi0gICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ3InLCAnbScsICdhJywgJ2MnLCAnXycsCi0gICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAnXycsCi0gICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzInLCAnXycsICd4JywgJ28nLCAncicsICdfJywgJ3gnLCAnYScsCi0gICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICdhJywgJ24nLCAnZCcsICdfJywgJ2EnLCAnbicsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAnYScsICduJywgJ2QnLCAnXycsICdhJywgJ24nLCAnZCcsCi0gICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAnYScsICduJywgJ2QnLCAnXycsICdvJywgJ3InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICdhJywgJ24nLCAnZCcsICdfJywgJ3gnLCAnbycsICdyJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAnYycsICdtJywgJ3AnLCAneScsICdpJywgJ18nLCAndycsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAnYycsICdtJywgJ3AnLCAneScsICdpJywgJ18nLCAndycsICdoJywgJ2MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICdjJywgJ20nLCAncCcsICd5JywgJ3InLCAnXycsICd3JywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICdjJywgJ20nLCAncCcsICd5JywgJ3InLCAnXycsICd3JywgJ2gnLCAnYycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsICdfJywgJ20nLCAnYScsICdjJywgJ18nLCAndScsICdwJywgJ18nLCAncycsCi0gICcxJywgJ18nLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICdtJywgJ3AnLCAneScsCi0gICdyJywgJ2knLCAnXycsICdhJywgJ2QnLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAnbScsCi0gICdwJywgJ3knLCAncicsICdpJywgJ18nLCAnYScsICdkJywgJ2QnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdyJywgJ2MnLCAnbScsICdwJywgJ3knLCAncycsICdfJywgJ2EnLCAnYycsCisgICdjJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICcyJywgJ18nLCAndicsICdyJywgJ2MnLCAnbScsCisgICdwJywgJ3knLCAncycsICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnMicsICdfJywgJ3YnLCAncicsCisgICdjJywgJ20nLCAncCcsICd5JywgJ3MnLCAnXycsICdzJywgJzEnLCAncicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCisgICcyJywgJ18nLCAndicsICdyJywgJ20nLCAnYScsICdjJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCisgICcyJywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCisgICcyJywgJ18nLCAneCcsICdvJywgJ3InLCAnXycsICd4JywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCisgICc0JywgJ18nLCAnYScsICduJywgJ2QnLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsCi0gICdfJywgJ20nLCAncCcsICd5JywgJ3InLCAnaScsICdfJywgJ2EnLCAnZCcsICdkJywgJ3InLCAnXycsICd1JywgJzInLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICdtJywgJ3AnLCAneScsICdyJywgJ3InLCAnXycsICdhJywgJ2QnLCAnZCcsCi0gICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAnbScsICdwJywgJ3knLCAncicsICdyJywgJ18nLCAnYScsCi0gICdkJywgJ2QnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsICdfJywgJ24nLCAnYScsICdjJywgJ18nLCAndScsCi0gICdwJywgJ18nLCAncycsICcxJywgJ18nLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdfJywgJ2EnLCAnbicsICdkJywgJ18nLCAnYScsICduJywgJ2QnLCAnbicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsCisgICdfJywgJ2EnLCAnbicsICdkJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAnYScsCisgICduJywgJ2QnLCAnXycsICd4JywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsICdfJywgJ2MnLCAnbScsCisgICdwJywgJ3knLCAnaScsICdfJywgJ3cnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsICdfJywgJ2MnLCAnbScsCisgICdwJywgJ3knLCAnaScsICdfJywgJ3cnLCAnaCcsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAnYycsCisgICdtJywgJ3AnLCAneScsICdyJywgJ18nLCAndycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAnYycsCisgICdtJywgJ3AnLCAneScsICdyJywgJ18nLCAndycsICdoJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsCi0gICdvJywgJ3InLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsICdfJywgJ28nLCAncicsCi0gICdfJywgJ2EnLCAnbicsICdkJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICdvJywgJ3InLCAnXycsCi0gICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICdvJywgJ3InLCAnXycsICd4JywgJ28nLCAncicsCisgICdtJywgJ2EnLCAnYycsICdfJywgJ3UnLCAncCcsICdfJywgJ3MnLCAnMScsICdfJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAnbScsICdwJywgJ3knLCAncicsICdpJywgJ18nLCAnYScsICdkJywgJ2QnLCAnaScsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsICdfJywgJ3AnLCAnbScsICdwJywgJ3knLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnNCcsICdfJywgJ3AnLCAnbScsICdwJywgJ3knLCAndycsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAndicsICdwJywgJ20nLCAncCcsICd5JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsICdfJywgJ20nLCAncCcsICd5JywgJ3InLCAnaScsICdfJywgJ2EnLCAnZCcsCisgICdkJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICdtJywgJ3AnLCAneScsICdyJywgJ2knLCAnXycsCisgICdhJywgJ2QnLCAnZCcsICdyJywgJ18nLCAndScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAnbScsCisgICdwJywgJ3knLCAncicsICdyJywgJ18nLCAnYScsICdkJywgJ2QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsCisgICdfJywgJ20nLCAncCcsICd5JywgJ3InLCAncicsICdfJywgJ2EnLCAnZCcsICdkJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzQnLCAnXycsICd2JywgJ3AnLCAnbScsICdwJywgJ3knLCAnaCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ2UnLCAnaCcsICdfJywgJ2EnLCAnYycsCi0gICdjJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsCi0gICd5JywgJ2UnLCAnaCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCi0gICc0JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ2UnLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnNCcsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsICdlJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsCisgICdNJywgJzQnLCAnXycsICduJywgJ2EnLCAnYycsICdfJywgJ3UnLCAncCcsICdfJywgJ3MnLCAnMScsICdfJywgJ3MnLCAnYScsCisgICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAnbycsICdyJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAnbycsICdoJywgJ18nLCAnYScsCi0gICdjJywgJ2MnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICdvJywgJ3InLCAnXycsICdhJywgJ24nLCAnZCcsICduJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAnbycsICdyJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCisgICc0JywgJ18nLCAnbycsICdyJywgJ18nLCAneCcsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsCisgICdwJywgJ20nLCAncCcsICd5JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICdwJywgJ20nLCAncCcsCisgICd5JywgJ3cnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsICdfJywgJ3YnLCAncCcsCisgICdtJywgJ3AnLCAneScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAndicsICdwJywgJ20nLCAncCcsCisgICd5JywgJ2gnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsICdfJywgJ3YnLCAncicsCisgICdtJywgJ3AnLCAneScsICdlJywgJ2gnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ00nLCAnNCcsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsICdlJywgJ2gnLCAnXycsICdhJywgJ2MnLCAnYycsCisgICdfJywgJ3MnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsCisgICdlJywgJ2gnLCAnXycsICdzJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCiAgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICd2JywgJ3InLCAnbScsCi0gICdwJywgJ3knLCAnbycsICdoJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzQnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAnbycsICdoJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsCisgICdwJywgJ3knLCAnZScsICdoJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAndicsCisgICdyJywgJ20nLCAncCcsICd5JywgJ28nLCAnaCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAncycsICcwJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ28nLCAnaCcsICdfJywgJ3MnLCAnMScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsICdfJywgJ3gnLCAnbycsICdyJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICd4JywgJ28nLCAncicsICdfJywgJ2EnLCAnbicsICdkJywgJ24nLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICd4JywgJ28nLCAncicsICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnNCcsICdfJywgJ3gnLCAnbycsICdyJywgJ18nLCAneCcsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnNScsICdfJywgJ3YnLCAnZCcsICdtJywgJ2EnLCAnYycsICdiJywgJ3MnLCAndScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnNScsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdiJywgJ3MnLCAndScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ00nLCAnNScsICdfJywgJ3YnLCAnbScsICdhJywgJ2MnLCAnYicsICdzJywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdNJywgJzUnLCAnXycsICd2JywgJ20nLCAnYScsICdjJywgJ2InLCAndScsICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsCi0gICc1JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdiJywgJ3MnLCAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNScsCi0gICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzUnLCAnXycsCi0gICd2JywgJ3InLCAnbScsICdhJywgJ2MnLCAnYicsICdzJywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzUnLCAnXycsCi0gICd2JywgJ3InLCAnbScsICdhJywgJ2MnLCAnYicsICd1JywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzUnLCAnXycsCi0gICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAnYicsICdzJywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzUnLCAnXycsCi0gICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzYnLCAnXycsCi0gICd2JywgJ2EnLCAnYicsICdzJywgJ2QnLCAnaScsICdmJywgJ2YnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAnZCcsICdpJywgJ2YnLCAnZicsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAncicsICdyJywgJ2knLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAnbCcsICdfJywgJ2knLCAnXycsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsICdpJywgJ18nLCAncCcsICdfJywgJ2EnLCAnYycsCi0gICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsICdpJywgJ18nLCAncCcsCi0gICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsCi0gICdpJywgJ18nLCAncCcsICdfJywgJ24nLCAnYScsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ28nLCAnaCcsICdfJywgJ2EnLCAnYycsCisgICdjJywgJ18nLCAncycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsCisgICd5JywgJ28nLCAnaCcsICdfJywgJ3MnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNCcsICdfJywgJ3YnLCAncicsCisgICdtJywgJ3AnLCAneScsICdvJywgJ2gnLCAnXycsICdzJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsCisgICd4JywgJ28nLCAncicsICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAneCcsCisgICdvJywgJ3InLCAnXycsICdhJywgJ24nLCAnZCcsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc0JywgJ18nLCAneCcsCisgICdvJywgJ3InLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzQnLCAnXycsICd4JywgJ28nLCAncicsCisgICdfJywgJ3gnLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzUnLCAnXycsICd2JywgJ2QnLCAnbScsCisgICdhJywgJ2MnLCAnYicsICdzJywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzUnLCAnXycsICd2JywgJ2QnLCAnbScsCisgICdwJywgJ3knLCAnYicsICdzJywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzUnLCAnXycsICd2JywgJ20nLCAnYScsCisgICdjJywgJ2InLCAncycsICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc1JywgJ18nLCAndicsICdtJywgJ2EnLCAnYycsCisgICdiJywgJ3UnLCAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ00nLCAnNScsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnYicsCisgICdzJywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzUnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2InLCAndScsCisgICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc1JywgJ18nLCAndicsICdyJywgJ20nLCAnYScsICdjJywgJ2InLCAncycsCisgICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc1JywgJ18nLCAndicsICdyJywgJ20nLCAnYScsICdjJywgJ2InLCAndScsCisgICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc1JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ2InLCAncycsCisgICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc1JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsCisgICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnTScsICc2JywgJ18nLCAndicsICdhJywgJ2InLCAncycsICdkJywgJ2knLCAnZicsCisgICdmJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdNJywgJzYnLCAnXycsICd2JywgJ2EnLCAnYicsICdzJywgJ2QnLCAnaScsCisgICdmJywgJ2YnLCAndScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdkJywgJ2QnLCAnYScsCisgICdzJywgJ2wnLCAnXycsICdyJywgJ3InLCAncicsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsCi0gICdzJywgJ2wnLCAnXycsICdpJywgJ18nLCAncCcsICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCi0gICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICd4JywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsICdpJywgJ18nLCAncicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAnaScsICdfJywgJ3InLCAnXycsICdhJywgJ2MnLCAnYycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAnaScsICdfJywgJ3InLCAnXycsCi0gICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAnaScsCi0gICdfJywgJ3InLCAnXycsICduJywgJ2EnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICdzJywgJ2wnLCAnXycsICdpJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCiAgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsCi0gICdsJywgJ18nLCAnaScsICdfJywgJ3InLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCi0gICdhJywgJ3MnLCAnbCcsICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAnbCcsICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAneCcsICdhJywgJ2MnLCAnYycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAnaScsICdfJywgJ3YnLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAnaScsICdfJywgJ3YnLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAncicsICdfJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICdwJywgJ18nLCAnYScsCi0gICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsCi0gICdwJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAnbCcsCi0gICdfJywgJ3InLCAnXycsICdwJywgJ18nLCAnbicsICdhJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCi0gICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICdwJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCi0gICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAncCcsICdfJywgJ3gnLCAnbycsICdyJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAncicsICdcMDAwJywgJ18nLCAnXycsCisgICdsJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCisgICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAncicsICdfJywgJ3InLCAnXycsICdhJywgJ2MnLCAnYycsCisgICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICduJywgJ2EnLCAnYycsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAncicsICdfJywgJ3InLCAnXycsCi0gICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAncicsCi0gICdfJywgJ3InLCAnXycsICduJywgJ2EnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsCi0gICdsJywgJ18nLCAncicsICdfJywgJ3InLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCi0gICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICd2JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICd2JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCi0gICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncCcsICdfJywgJ2EnLCAnbicsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncCcsCi0gICdfJywgJ24nLCAnYScsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsCi0gICdpJywgJ18nLCAncCcsICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsCi0gICdyJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICdyJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCi0gICdfJywgJ2EnLCAncycsICdyJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICdyJywgJ24nLCAnZCcsICdfJywgJ2cnLCAnbycsCi0gICdvJywgJ2QnLCAncycsICd5JywgJ24nLCAndCcsICdhJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCi0gICdhJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsCi0gICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncicsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCi0gICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncicsICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncicsICdfJywgJ24nLCAnYScsCi0gICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncicsCi0gICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdyJywgJ18nLCAnaScsCi0gICdfJywgJ3InLCAnXycsICdyJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsCi0gICdyJywgJ18nLCAnaScsICdfJywgJ3InLCAnXycsICdyJywgJ24nLCAnZCcsICdfJywgJ2cnLCAnbycsICdvJywgJ2QnLCAncycsCi0gICd5JywgJ24nLCAndCcsICdhJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAncicsCi0gICdfJywgJ2knLCAnXycsICdzJywgJ3YnLCAndycsICdfJywgJ3QnLCAncicsICd1JywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsICd2JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsICd2JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCi0gICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAncCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAncCcsICdfJywgJ2EnLCAnbicsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAncCcsCi0gICdfJywgJ24nLCAnYScsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsCi0gICdyJywgJ18nLCAncCcsICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsCi0gICdyJywgJ18nLCAncicsICdfJywgJ3AnLCAnXycsICd4JywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCi0gICdfJywgJ2EnLCAncycsICdyJywgJ18nLCAncicsICdfJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCi0gICdhJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAnbicsCi0gICdhJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsCi0gICdyJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsCi0gICdyJywgJ18nLCAncicsICdfJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsCi0gICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAncycsICd2JywgJ3cnLCAnXycsICd0JywgJ3InLCAndScsICduJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAndicsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAndicsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYicsICdyJywgJ2UnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCi0gICdfJywgJ2InLCAncicsICdlJywgJ3YnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2MnLCAnYScsCi0gICdiJywgJ2EnLCAnYycsICdlJywgJ24nLCAnYycsICdiJywgJ2knLCAnbicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCi0gICdfJywgJ2MnLCAnbCcsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYycsICdsJywgJzAnLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2MnLCAnbCcsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCi0gICcyJywgJ18nLCAnYycsICdsJywgJzEnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2MnLCAnbCcsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYycsICdsJywgJ2InLCAnbicsICdvJywgJ3InLCAnbScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2MnLCAnbCcsICdiJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdjJywgJ2wnLCAncicsICdiJywgJ2knLCAndCcsICdfJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdjJywgJ2wnLCAncicsICdiJywgJ2knLCAndCcsICdfJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdjJywgJ3QnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2MnLCAndCcsCi0gICcwJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdjJywgJ3QnLCAnMScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnMicsICdfJywgJ2MnLCAndCcsICcxJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCi0gICdkJywgJ2UnLCAnaScsICduJywgJ3QnLCAnZScsICdyJywgJ2wnLCAnZScsICdhJywgJ3YnLCAnZScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnMicsICdfJywgJ2UnLCAneCcsICd0JywgJ3InLCAnYScsICdjJywgJ3QnLCAndScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnMicsICdfJywgJ2UnLCAneCcsICd0JywgJ3InLCAnYScsICdjJywgJ3QnLCAndScsICdfJywgJ3InLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2UnLCAneCcsICd0JywgJ3InLCAnYScsICdjJywgJ3QnLCAndScsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnZScsICd4JywgJ3QnLCAncicsICdhJywgJ2MnLCAndCcsCi0gICd1JywgJ3AnLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdpJywgJ24nLCAncycsCi0gICdlJywgJ3InLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2knLCAnbicsICdzJywgJ2UnLCAncicsCi0gICd0JywgJ18nLCAncicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnaScsICduJywgJ3MnLCAnZScsCi0gICdyJywgJ3QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2knLCAnbicsICdzJywgJ2UnLCAncicsCi0gICd0JywgJ3AnLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdpJywgJ24nLCAndCcsCi0gICdlJywgJ3InLCAnbCcsICdlJywgJ2EnLCAndicsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsCi0gICdmJywgJ3MnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsICdsJywgJ18nLCAncicsCi0gICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsCi0gICdwJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAnbCcsCi0gICdfJywgJ3InLCAnXycsICdwJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCi0gICdsJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICdwJywgJ18nLCAnbicsICdhJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICdwJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAncCcsICdfJywgJ3gnLCAnbycsCi0gICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAncicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsICdsJywgJ18nLCAncicsICdfJywgJ3InLCAnXycsCi0gICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsICdsJywgJ18nLCAncicsCi0gICdfJywgJ3InLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsCi0gICdsJywgJ18nLCAncicsICdfJywgJ3InLCAnXycsICduJywgJ2EnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCi0gICdfJywgJ2wnLCAncycsICdsJywgJ18nLCAncicsICdfJywgJ3InLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICd2JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICd2JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCi0gICcyJywgJ18nLCAnbCcsICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncCcsICdfJywgJ2EnLCAnbicsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncCcsCi0gICdfJywgJ24nLCAnYScsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsICdzJywgJ3InLCAnXycsCi0gICdpJywgJ18nLCAncCcsICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsCi0gICdyJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICd4JywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCi0gICcyJywgJ18nLCAnbCcsICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCi0gICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAnaScsICdfJywgJ3InLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAnaScsICdfJywgJ3InLCAnXycsICdhJywgJ24nLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAnaScsICdfJywgJ3InLCAnXycsCi0gICduJywgJ2EnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAnaScsCi0gICdfJywgJ3InLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsCi0gICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAneCcsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCi0gICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAnaScsICdfJywgJ3YnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCi0gICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAnaScsICdfJywgJ3YnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCi0gICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAncicsICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCi0gICdsJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsICdwJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsICdwJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsICdwJywgJ18nLCAnbicsCi0gICdhJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsCi0gICdwJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsICdzJywgJ3InLCAnXycsCi0gICdyJywgJ18nLCAncCcsICdfJywgJ3gnLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsCi0gICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsCi0gICdyJywgJ18nLCAncicsICdfJywgJ3InLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCi0gICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAncicsICdfJywgJ3InLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAncicsICdfJywgJ3InLCAnXycsICduJywgJ2EnLCAnYycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAncicsICdfJywgJ3InLCAnXycsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsCiAgICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsCi0gICd2JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsCi0gICd2JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdwJywgJ2EnLCAnYycsICdrJywgJ2gnLCAnbCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3AnLCAnYScsICdyJywgJ2knLCAndCcsICd5JywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdzJywgJ2UnLCAndCcsICdiJywgJ2knLCAndCcsICdfJywgJ2knLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdzJywgJ2UnLCAndCcsICdiJywgJ2knLCAndCcsICdfJywgJ3InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdzJywgJ2gnLCAndScsICdmJywgJ2YnLCAnZScsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAncycsICdoJywgJ3UnLCAnZicsICdmJywgJ2UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnMicsICdfJywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnZicsICdvJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzInLCAnXycsICdzJywgJ2gnLCAndScsICdmJywgJ2YnLCAnbycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdiJywgJ3InLCAnZScsICd2JywgJ18nLCAncycsICd0JywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2InLCAncicsICdlJywgJ3YnLCAnXycsCi0gICdzJywgJ3QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYicsCi0gICdyJywgJ2UnLCAndicsICdfJywgJ3MnLCAndCcsICdoJywgJ2gnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYicsICdyJywgJ2UnLCAndicsICdfJywgJ3MnLCAndCcsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdiJywgJ3InLCAnZScsICd2JywgJ18nLCAncycsCi0gICd0JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdzJywgJ3QnLCAnbycsICdyJywgJ2UnLCAndycsCi0gICdfJywgJ2wnLCAnbycsICdjJywgJ2snLCAnZScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAncycsCi0gICd2JywgJ3MnLCAnYScsICd0JywgJ2gnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3MnLCAndicsCi0gICdzJywgJ2EnLCAndCcsICdoJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3QnLCAnYScsCi0gICdiJywgJ2wnLCAnZScsICdpJywgJ2QnLCAneCcsICdiJywgJ18nLCAnZycsICdvJywgJ28nLCAnZCcsICdzJywgJ3knLCAnbicsCi0gICd0JywgJ2EnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3QnLCAnYScsICdiJywgJ2wnLCAnZScsCi0gICdpJywgJ2QnLCAneCcsICdkJywgJ18nLCAnZycsICdvJywgJ28nLCAnZCcsICdzJywgJ3knLCAnbicsICd0JywgJ2EnLCAneCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3QnLCAnYScsICdiJywgJ2wnLCAnZScsICdpJywgJ2QnLCAneCcsCi0gICdoJywgJ18nLCAnZycsICdvJywgJ28nLCAnZCcsICdzJywgJ3knLCAnbicsICd0JywgJ2EnLCAneCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnMicsICdfJywgJ3QnLCAnYScsICdiJywgJ2wnLCAnZScsICdpJywgJ2QnLCAneCcsICd3JywgJ18nLCAnZycsCi0gICdvJywgJ28nLCAnZCcsICdzJywgJ3knLCAnbicsICd0JywgJ2EnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCi0gICdfJywgJ3QnLCAnbycsICdnJywgJ2cnLCAnbCcsICdlJywgJ2InLCAnaScsICd0JywgJ18nLCAnaScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnMicsICdfJywgJ3QnLCAnbycsICdnJywgJ2cnLCAnbCcsICdlJywgJ2InLCAnaScsICd0JywgJ18nLCAncicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3QnLCAncycsICd0JywgJ2InLCAnaScsICd0JywgJ18nLCAnaScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3QnLCAncycsICd0JywgJ2InLCAnaScsICd0JywgJ18nLCAncicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAnYScsICdsJywgJ2knLCAnZycsICduJywgJ2knLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAnYScsICdsJywgJ2knLCAnZycsICduJywgJ3InLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAnYycsICduJywgJ2UnLCAnZycsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdjJywgJ3InLCAnbycsICd0JywgJ2EnLCAndCcsICdlJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdyJywgJ2MnLCAnbicsICdlJywgJ2cnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAncicsICduJywgJ2QnLCAncCcsICdhJywgJ2MnLCAnaycsICd3JywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ3InLCAnbicsICdkJywgJ3AnLCAnYScsICdjJywgJ2snLCAndycsCi0gICdoJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ3MnLCAnYScsICd0JywgJ2gnLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAncycsICdhJywgJ3QnLCAnaCcsICdiJywgJ18nLCAnbicsCi0gICdvJywgJ3AnLCAnYScsICdjJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ3MnLCAnYScsCi0gICd0JywgJ2gnLCAndScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdzJywgJ2EnLCAndCcsCi0gICdoJywgJ3UnLCAnYicsICdfJywgJ24nLCAnbycsICdwJywgJ2EnLCAnYycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCi0gICcyJywgJ18nLCAndicsICdzJywgJ2EnLCAndCcsICd3JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAnbCcsICdfJywgJ2knLCAnXycsCisgICdwJywgJ18nLCAneCcsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsCisgICdsJywgJ18nLCAnaScsICdfJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAnbCcsCisgICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCi0gICd2JywgJ3MnLCAnYScsICd0JywgJ3cnLCAnaCcsICdfJywgJ24nLCAnbycsICdwJywgJ2EnLCAnYycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdzJywgJ2EnLCAndCcsICd3JywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAncycsICdhJywgJ3QnLCAndycsICd1JywgJ2gnLCAnXycsICduJywgJ28nLCAncCcsCi0gICdhJywgJ2MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAncycsICdwJywgJ2wnLCAnYScsCi0gICd0JywgJ3InLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAncycsICdwJywgJ2wnLCAnYScsCi0gICd0JywgJ3InLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAncycsICdwJywgJ2wnLCAnaScsCi0gICdjJywgJ2UnLCAnaScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdzJywgJ3AnLCAnbCcsCi0gICdpJywgJ2MnLCAnZScsICdyJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ3MnLCAneCcsCi0gICd0JywgJ2InLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAncycsICd4JywgJ3QnLCAnaCcsCi0gICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICd0JywgJ3InLCAndScsICduJywgJ2UnLCAnaCcsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICd0JywgJ3InLCAndScsICduJywgJ2UnLCAndycsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICd0JywgJ3InLCAndScsICduJywgJ28nLCAnaCcsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICd0JywgJ3InLCAndScsICduJywgJ28nLCAndycsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICd6JywgJ3gnLCAndCcsICdiJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ3onLCAneCcsICd0JywgJ2gnLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnNCcsICdfJywgJ2EnLCAnZCcsICdkJywgJ2EnLCAnZCcsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdhJywgJ3MnLCAnbCcsICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzQnLCAnXycsICdhJywgJ2QnLCAnZCcsICdpJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsICdyJywgJ2knLCAnXDAwMCcsCisgICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAnbCcsICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAnbicsICdhJywgJ2MnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsICdhJywgJ2QnLCAnZCcsICdpJywgJ18nLCAnbCcsICdzJywgJ3InLCAnXycsCi0gICdyJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsICdhJywgJ24nLCAnZCcsICdpJywgJ18nLCAnYScsCi0gICdzJywgJ2wnLCAnXycsICdyJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsICdhJywgJ24nLCAnZCcsCi0gICdpJywgJ18nLCAnbCcsICdzJywgJ3InLCAnXycsICdyJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsCi0gICdjJywgJ2wnLCAnYicsICdhJywgJ2QnLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAnYycsCi0gICdsJywgJ2InLCAncCcsICdhJywgJ2QnLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAnYycsCi0gICdsJywgJ2InLCAncCcsICduJywgJ28nLCAncicsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAnZScsCi0gICd4JywgJ3QnLCAncicsICdhJywgJ2MnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsICdfJywgJ2UnLCAneCcsCi0gICd0JywgJ3InLCAnYScsICdjJywgJ3QnLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsCi0gICdlJywgJ3gnLCAndCcsICdyJywgJ2EnLCAnYycsICd0JywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsCi0gICdlJywgJ3gnLCAndCcsICdyJywgJ2EnLCAnYycsICd0JywgJ3AnLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzQnLCAnXycsICdsJywgJ3MnLCAnbCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAnbicsCi0gICd0JywgJ3MnLCAndCcsICdiJywgJ2knLCAndCcsICdfJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsCi0gICduJywgJ3QnLCAncycsICd0JywgJ2InLCAnaScsICd0JywgJ18nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsCi0gICdfJywgJ28nLCAncicsICdfJywgJ2EnLCAnbicsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsCi0gICdvJywgJ3InLCAnXycsICdhJywgJ24nLCAnZCcsICdpJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsCi0gICdvJywgJ3InLCAnXycsICdvJywgJ3InLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsICdfJywgJ28nLCAncicsCi0gICdpJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsICdyJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsCi0gICdvJywgJ3InLCAnaScsICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAncicsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAnbCcsICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAnbycsCisgICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsICdpJywgJ18nLCAncicsCisgICdfJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsCisgICdpJywgJ18nLCAncicsICdfJywgJ3gnLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCisgICdhJywgJ3MnLCAnbCcsICdfJywgJ2knLCAnXycsICd2JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCisgICdhJywgJ3MnLCAnbCcsICdfJywgJ2knLCAnXycsICd2JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCisgICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsCisgICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAncCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCi0gICc0JywgJ18nLCAncCcsICdhJywgJ3InLCAnaScsICd0JywgJ3knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsCi0gICdzJywgJ3QnLCAnbycsICdyJywgJ2UnLCAnZCcsICdfJywgJ2wnLCAnbycsICdjJywgJ2snLCAnZScsICdkJywgJ1wwMDAnLCAnXycsCisgICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAncCcsICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAncycsICd1JywgJ2InLCAnYScsICdkJywgJ2QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsCisgICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAncCcsICdfJywgJ24nLCAnYScsCisgICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAncCcsCisgICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAncicsCisgICdfJywgJ3AnLCAnXycsICd4JywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsCisgICdsJywgJ18nLCAncicsICdfJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAnbCcsCisgICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCisgICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAnbicsICdhJywgJ2MnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAnbycsCisgICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAncicsCisgICdfJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsCisgICdyJywgJ18nLCAndicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ2wnLCAnXycsCisgICdyJywgJ18nLCAndicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsCisgICdpJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdyJywgJ18nLCAnaScsCisgICdfJywgJ3AnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsCisgICdyJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCisgICdfJywgJ2EnLCAncycsICdyJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICduJywgJ2EnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnNCcsICdfJywgJ3MnLCAndScsICdiJywgJ2knLCAnXycsICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnaScsCisgICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdyJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICdvJywgJ3InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsICdwJywgJ18nLCAncicsCisgICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsCisgICdwJywgJ18nLCAncicsICduJywgJ2QnLCAnXycsICdnJywgJ28nLCAnbycsICdkJywgJ3MnLCAneScsICduJywgJ3QnLCAnYScsCisgICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncicsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsICdfJywgJ3MnLCAndScsICdiJywgJ2knLCAnXycsICdsJywgJ3MnLCAncicsCi0gICdfJywgJ3InLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsICdfJywgJ3YnLCAncicsICdjJywgJ3InLCAnbycsCi0gICd0JywgJ2EnLCAndCcsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAndicsICdyJywgJ2MnLCAncicsCi0gICdvJywgJ3QnLCAnYScsICd0JywgJ2UnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsCi0gICdfJywgJ3YnLCAneCcsICdhJywgJ2QnLCAnZCcsICdzJywgJ3UnLCAnYicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCi0gICc0JywgJ18nLCAndicsICd4JywgJ2EnLCAnZCcsICdkJywgJ3MnLCAndScsICdiJywgJ2gnLCAncicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnNCcsICdfJywgJ3YnLCAneCcsICdhJywgJ2QnLCAnZCcsICdzJywgJ3UnLCAnYicsICd3JywgJ1wwMDAnLCAnXycsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdyJywgJ18nLCAnaScsICdfJywgJ3InLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdyJywgJ18nLCAnaScsCisgICdfJywgJ3InLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsCisgICdyJywgJ18nLCAnaScsICdfJywgJ3InLCAnXycsICduJywgJ2EnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCisgICdfJywgJ2EnLCAncycsICdyJywgJ18nLCAnaScsICdfJywgJ3InLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAncicsICduJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAncicsCisgICduJywgJ2QnLCAnXycsICdnJywgJ28nLCAnbycsICdkJywgJ3MnLCAneScsICduJywgJ3QnLCAnYScsICd4JywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAndicsICd4JywgJ3MnLCAndScsICdiJywgJ2EnLCAnZCcsICdkJywgJ2gnLCAnXDAwMCcsCisgICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncycsICd2JywgJ3cnLCAnXycsCisgICd0JywgJ3InLCAndScsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsCisgICdpJywgJ18nLCAndicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsCisgICdpJywgJ18nLCAndicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsCisgICdyJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdyJywgJ18nLCAncicsCisgICdfJywgJ3AnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsCisgICdyJywgJ18nLCAncicsICdfJywgJ3AnLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCisgICdfJywgJ2EnLCAncycsICdyJywgJ18nLCAncicsICdfJywgJ3AnLCAnXycsICduJywgJ2EnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdyJywgJ18nLCAncicsICdfJywgJ3AnLCAnXycsICdvJywgJ3InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsICdwJywgJ18nLCAneCcsCisgICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdhJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsCisgICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAncicsCisgICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsCisgICdyJywgJ18nLCAncicsICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYScsCisgICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAncicsICdfJywgJ24nLCAnYScsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCisgICcyJywgJ18nLCAnYScsICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAncicsICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdyJywgJ18nLCAncicsICdfJywgJ3InLCAnXycsICdzJywgJ2EnLCAndCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsICdyJywgJ18nLCAncicsICdfJywgJ3MnLCAndicsCisgICd3JywgJ18nLCAndCcsICdyJywgJ3UnLCAnbicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsCisgICdyJywgJ18nLCAncicsICdfJywgJ3YnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2EnLCAncycsCisgICdyJywgJ18nLCAncicsICdfJywgJ3YnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2InLCAncicsCisgICdlJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdiJywgJ3InLCAnZScsICd2JywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdjJywgJ2wnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCisgICdfJywgJ2MnLCAnbCcsICcwJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdjJywgJ2wnLCAnMScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2MnLCAnbCcsICcxJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdTJywgJzInLCAnXycsICdjJywgJ2wnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2MnLCAnbCcsCisgICdiJywgJ24nLCAnbycsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdjJywgJ2wnLCAnYicsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYycsICdsJywgJ3InLCAnYicsICdpJywgJ3QnLCAnXycsCisgICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYycsICdsJywgJ3InLCAnYicsICdpJywgJ3QnLCAnXycsCisgICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYycsICd0JywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdTJywgJzInLCAnXycsICdjJywgJ3QnLCAnMCcsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnYycsCisgICd0JywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdjJywgJ3QnLCAnMScsICdwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnZCcsICdlJywgJ2knLCAnbicsICd0JywgJ2UnLCAncicsICdsJywgJ2UnLCAnYScsCisgICd2JywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdlJywgJ3gnLCAndCcsICdyJywgJ2EnLCAnYycsCisgICd0JywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdlJywgJ3gnLCAndCcsICdyJywgJ2EnLCAnYycsCisgICd0JywgJ3UnLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdlJywgJ3gnLCAndCcsCisgICdyJywgJ2EnLCAnYycsICd0JywgJ3UnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2UnLCAneCcsCisgICd0JywgJ3InLCAnYScsICdjJywgJ3QnLCAndScsICdwJywgJ18nLCAncicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCisgICcyJywgJ18nLCAnaScsICduJywgJ3MnLCAnZScsICdyJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCisgICdpJywgJ24nLCAncycsICdlJywgJ3InLCAndCcsICdfJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCisgICdfJywgJ2knLCAnbicsICdzJywgJ2UnLCAncicsICd0JywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCisgICdpJywgJ24nLCAncycsICdlJywgJ3InLCAndCcsICdwJywgJ18nLCAncicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCisgICcyJywgJ18nLCAnaScsICduJywgJ3QnLCAnZScsICdyJywgJ2wnLCAnZScsICdhJywgJ3YnLCAnZScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAnZicsICdzJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCisgICdsJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsCisgICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAncCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCisgICcyJywgJ18nLCAnbCcsICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAncCcsICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAncCcsICdfJywgJ24nLCAnYScsCisgICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAncCcsCisgICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsICdsJywgJ18nLCAncicsCisgICdfJywgJ3AnLCAnXycsICd4JywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsCisgICdsJywgJ18nLCAncicsICdfJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAnbCcsCisgICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCisgICdsJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAnbicsICdhJywgJ2MnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAnbycsCisgICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAndicsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsICdzJywgJ2wnLCAnXycsICdyJywgJ18nLCAndicsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAnaScsCisgICdfJywgJ3AnLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsCisgICdyJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICduJywgJ2EnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCisgICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsICdwJywgJ18nLCAneCcsICdhJywgJ2MnLCAnYycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAnaScsICdfJywgJ3InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAnYScsCisgICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsCisgICdyJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsCisgICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAnbicsICdhJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCisgICdsJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCisgICcyJywgJ18nLCAnbCcsICdzJywgJ3InLCAnXycsICdpJywgJ18nLCAncicsICdfJywgJ3gnLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsICd2JywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ2knLCAnXycsICd2JywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsICdwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAncCcsICdfJywgJ2EnLCAnYycsCisgICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAncCcsCisgICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsICdzJywgJ3InLCAnXycsCisgICdyJywgJ18nLCAncCcsICdfJywgJ24nLCAnYScsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsCisgICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAncCcsICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCisgICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAncicsICdfJywgJ3AnLCAnXycsICd4JywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1MnLCAnMicsICdfJywgJ2wnLCAncycsICdyJywgJ18nLCAncicsICdfJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAnYScsCisgICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ3InLCAnXycsCisgICdyJywgJ18nLCAnbicsICdhJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdsJywgJ3MnLCAncicsCisgICdfJywgJ3InLCAnXycsICdyJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsCisgICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAndicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbCcsCisgICdzJywgJ3InLCAnXycsICdyJywgJ18nLCAndicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3AnLCAnYScsICdjJywgJ2snLCAnaCcsCisgICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAncCcsICdhJywgJ3InLCAnaScsICd0JywgJ3knLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3MnLCAnZScsICd0JywgJ2InLCAnaScsICd0JywgJ18nLCAnaScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3MnLCAnZScsICd0JywgJ2InLCAnaScsICd0JywgJ18nLCAncicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnZicsICdlJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICdzJywgJ2gnLCAndScsICdmJywgJ2YnLCAnZScsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAncycsICdoJywgJ3UnLCAnZicsICdmJywgJ28nLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1MnLCAnMicsICdfJywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnZicsICdvJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2InLCAncicsICdlJywgJ3YnLCAnXycsICdzJywgJ3QnLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYicsICdyJywgJ2UnLCAndicsCisgICdfJywgJ3MnLCAndCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdiJywgJ3InLCAnZScsICd2JywgJ18nLCAncycsICd0JywgJ2gnLCAnaCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdiJywgJ3InLCAnZScsICd2JywgJ18nLCAncycsICd0JywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2InLCAncicsICdlJywgJ3YnLCAnXycsCisgICdzJywgJ3QnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3MnLCAndCcsICdvJywgJ3InLCAnZScsCisgICd3JywgJ18nLCAnbCcsICdvJywgJ2MnLCAnaycsICdlJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsCisgICdzJywgJ3YnLCAncycsICdhJywgJ3QnLCAnaCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAncycsCisgICd2JywgJ3MnLCAnYScsICd0JywgJ2gnLCAndScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndCcsCisgICdhJywgJ2InLCAnbCcsICdlJywgJ2knLCAnZCcsICd4JywgJ2InLCAnXycsICdnJywgJ28nLCAnbycsICdkJywgJ3MnLCAneScsCisgICduJywgJ3QnLCAnYScsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndCcsICdhJywgJ2InLCAnbCcsCisgICdlJywgJ2knLCAnZCcsICd4JywgJ2QnLCAnXycsICdnJywgJ28nLCAnbycsICdkJywgJ3MnLCAneScsICduJywgJ3QnLCAnYScsCisgICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndCcsICdhJywgJ2InLCAnbCcsICdlJywgJ2knLCAnZCcsCisgICd4JywgJ2gnLCAnXycsICdnJywgJ28nLCAnbycsICdkJywgJ3MnLCAneScsICduJywgJ3QnLCAnYScsICd4JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndCcsICdhJywgJ2InLCAnbCcsICdlJywgJ2knLCAnZCcsICd4JywgJ3cnLCAnXycsCisgICdnJywgJ28nLCAnbycsICdkJywgJ3MnLCAneScsICduJywgJ3QnLCAnYScsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCisgICcyJywgJ18nLCAndCcsICdvJywgJ2cnLCAnZycsICdsJywgJ2UnLCAnYicsICdpJywgJ3QnLCAnXycsICdpJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndCcsICdvJywgJ2cnLCAnZycsICdsJywgJ2UnLCAnYicsICdpJywgJ3QnLCAnXycsCisgICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndCcsICdzJywgJ3QnLCAnYicsICdpJywgJ3QnLCAnXycsCisgICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndCcsICdzJywgJ3QnLCAnYicsICdpJywgJ3QnLCAnXycsCisgICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdhJywgJ2wnLCAnaScsICdnJywgJ24nLCAnaScsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdhJywgJ2wnLCAnaScsICdnJywgJ24nLCAncicsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdjJywgJ24nLCAnZScsICdnJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ2MnLCAncicsICdvJywgJ3QnLCAnYScsICd0JywgJ2UnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ3InLCAnYycsICduJywgJ2UnLCAnZycsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdyJywgJ24nLCAnZCcsICdwJywgJ2EnLCAnYycsICdrJywgJ3cnLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAncicsICduJywgJ2QnLCAncCcsICdhJywgJ2MnLCAnaycsCisgICd3JywgJ2gnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAncycsICdhJywgJ3QnLCAnaCcsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdzJywgJ2EnLCAndCcsICdoJywgJ2InLCAnXycsCisgICduJywgJ28nLCAncCcsICdhJywgJ2MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAncycsCisgICdhJywgJ3QnLCAnaCcsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ3MnLCAnYScsCisgICd0JywgJ2gnLCAndScsICdiJywgJ18nLCAnbicsICdvJywgJ3AnLCAnYScsICdjJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdTJywgJzInLCAnXycsICd2JywgJ3MnLCAnYScsICd0JywgJ3cnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsCisgICdfJywgJ3YnLCAncycsICdhJywgJ3QnLCAndycsICdoJywgJ18nLCAnbicsICdvJywgJ3AnLCAnYScsICdjJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ3MnLCAnYScsICd0JywgJ3cnLCAndScsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdzJywgJ2EnLCAndCcsICd3JywgJ3UnLCAnaCcsICdfJywgJ24nLCAnbycsCisgICdwJywgJ2EnLCAnYycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdzJywgJ3AnLCAnbCcsCisgICdhJywgJ3QnLCAncicsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdzJywgJ3AnLCAnbCcsCisgICdhJywgJ3QnLCAncicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdzJywgJ3AnLCAnbCcsCisgICdpJywgJ2MnLCAnZScsICdpJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ3MnLCAncCcsCisgICdsJywgJ2knLCAnYycsICdlJywgJ3InLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAncycsCisgICd4JywgJ3QnLCAnYicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICcyJywgJ18nLCAndicsICdzJywgJ3gnLCAndCcsCisgICdoJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ3QnLCAncicsICd1JywgJ24nLCAnZScsCisgICdoJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ3QnLCAncicsICd1JywgJ24nLCAnZScsCisgICd3JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ3QnLCAncicsICd1JywgJ24nLCAnbycsCisgICdoJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ3QnLCAncicsICd1JywgJ24nLCAnbycsCisgICd3JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzInLCAnXycsICd2JywgJ3onLCAneCcsICd0JywgJ2InLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnMicsICdfJywgJ3YnLCAneicsICd4JywgJ3QnLCAnaCcsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAnYScsICdkJywgJ2QnLCAnYScsICdkJywgJ2QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1MnLCAnNCcsICdfJywgJ2EnLCAnZCcsICdkJywgJ2knLCAnXycsICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnaScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsICdfJywgJ2EnLCAnZCcsICdkJywgJ2knLCAnXycsICdsJywgJ3MnLCAncicsCisgICdfJywgJ3InLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsICdfJywgJ2EnLCAnbicsICdkJywgJ2knLCAnXycsCisgICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsICdfJywgJ2EnLCAnbicsCisgICdkJywgJ2knLCAnXycsICdsJywgJ3MnLCAncicsICdfJywgJ3InLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsCisgICdfJywgJ2MnLCAnbCcsICdiJywgJ2EnLCAnZCcsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsCisgICdjJywgJ2wnLCAnYicsICdwJywgJ2EnLCAnZCcsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsCisgICdjJywgJ2wnLCAnYicsICdwJywgJ24nLCAnbycsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsCisgICdlJywgJ3gnLCAndCcsICdyJywgJ2EnLCAnYycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAnZScsCisgICd4JywgJ3QnLCAncicsICdhJywgJ2MnLCAndCcsICdfJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsCisgICdfJywgJ2UnLCAneCcsICd0JywgJ3InLCAnYScsICdjJywgJ3QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsCisgICdfJywgJ2UnLCAneCcsICd0JywgJ3InLCAnYScsICdjJywgJ3QnLCAncCcsICdfJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1MnLCAnNCcsICdfJywgJ2wnLCAncycsICdsJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsCisgICduJywgJ3QnLCAncycsICd0JywgJ2InLCAnaScsICd0JywgJ18nLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsCisgICdfJywgJ24nLCAndCcsICdzJywgJ3QnLCAnYicsICdpJywgJ3QnLCAnXycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCisgICc0JywgJ18nLCAnbycsICdyJywgJ18nLCAnYScsICduJywgJ2QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsCisgICdfJywgJ28nLCAncicsICdfJywgJ2EnLCAnbicsICdkJywgJ2knLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsCisgICdfJywgJ28nLCAncicsICdfJywgJ28nLCAncicsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAnbycsCisgICdyJywgJ2knLCAnXycsICdhJywgJ3MnLCAnbCcsICdfJywgJ3InLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsCisgICdfJywgJ28nLCAncicsICdpJywgJ18nLCAnbCcsICdzJywgJ3InLCAnXycsICdyJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdTJywgJzQnLCAnXycsICdwJywgJ2EnLCAncicsICdpJywgJ3QnLCAneScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsCisgICdfJywgJ3MnLCAndCcsICdvJywgJ3InLCAnZScsICdkJywgJ18nLCAnbCcsICdvJywgJ2MnLCAnaycsICdlJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsICdzJywgJ3UnLCAnYicsICdhJywgJ2QnLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAncycsICd1JywgJ2InLCAnaScsICdfJywgJ2EnLCAncycsICdsJywgJ18nLCAncicsCisgICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAncycsICd1JywgJ2InLCAnaScsICdfJywgJ2wnLCAncycsCisgICdyJywgJ18nLCAncicsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAndicsICdyJywgJ2MnLCAncicsCisgICdvJywgJ3QnLCAnYScsICd0JywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsICd2JywgJ3InLCAnYycsCisgICdyJywgJ28nLCAndCcsICdhJywgJ3QnLCAnZScsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCisgICc0JywgJ18nLCAndicsICd4JywgJ2EnLCAnZCcsICdkJywgJ3MnLCAndScsICdiJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdTJywgJzQnLCAnXycsICd2JywgJ3gnLCAnYScsICdkJywgJ2QnLCAncycsICd1JywgJ2InLCAnaCcsICdyJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAndicsICd4JywgJ2EnLCAnZCcsICdkJywgJ3MnLCAndScsICdiJywgJ3cnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCiAgICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsICd2JywgJ3gnLCAncycsICd1JywgJ2InLCAnYScsICdkJywgJ2QnLCAnaCcsCi0gICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc0JywgJ18nLCAndicsICd4JywgJ3MnLCAndScsICdiJywgJ2EnLCAnZCcsCi0gICdkJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzUnLCAnXycsICdhJywgJ3MnLCAncicsICdoJywgJ3UnLCAnYicsCi0gICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdnJywgJ28nLCAnbycsICdkJywgJ3MnLCAneScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNCcsICdfJywgJ3YnLCAneCcsICdzJywgJ3UnLCAnYicsICdhJywgJ2QnLCAnZCcsCisgICdoJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzQnLCAnXycsICd2JywgJ3gnLCAncycsICd1JywgJ2InLCAnYScsCisgICdkJywgJ2QnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNScsICdfJywgJ2EnLCAncycsICdyJywgJ2gnLCAndScsCisgICdiJywgJ18nLCAncicsICduJywgJ2QnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ2cnLCAnbycsICdvJywgJ2QnLCAncycsCisgICd5JywgJ24nLCAndCcsICdhJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzUnLCAnXycsICdhJywgJ3MnLCAncicsCisgICdoJywgJ3UnLCAnYicsICdfJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc1JywgJ18nLCAncCcsCisgICdvJywgJ3AnLCAnYycsICdvJywgJ3UnLCAnbicsICd0JywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzUnLCAnXycsCisgICd2JywgJ2EnLCAncycsICdyJywgJ2gnLCAncicsICduJywgJ2QnLCAnXycsICdnJywgJ28nLCAnbycsICdkJywgJ3MnLCAneScsCiAgICduJywgJ3QnLCAnYScsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc1JywgJ18nLCAnYScsICdzJywgJ3InLCAnaCcsCi0gICd1JywgJ2InLCAnXycsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNScsICdfJywgJ3AnLCAnbycsCi0gICdwJywgJ2MnLCAnbycsICd1JywgJ24nLCAndCcsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc1JywgJ18nLCAndicsCi0gICdhJywgJ3MnLCAncicsICdoJywgJ3InLCAnbicsICdkJywgJ18nLCAnZycsICdvJywgJ28nLCAnZCcsICdzJywgJ3knLCAnbicsCi0gICd0JywgJ2EnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNicsICdfJywgJ3InLCAnbycsICdsJywgJ18nLCAnaScsCi0gICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzYnLCAnXycsICdyJywgJ28nLCAnbCcsICdfJywgJ2knLCAnXycsCi0gICdwJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzYnLCAnXycsICdyJywgJ28nLCAnbCcsCi0gICdfJywgJ2knLCAnXycsICdwJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzYnLCAnXycsCi0gICdyJywgJ28nLCAnbCcsICdfJywgJ2knLCAnXycsICdwJywgJ18nLCAnbicsICdhJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdTJywgJzYnLCAnXycsICdyJywgJ28nLCAnbCcsICdfJywgJ2knLCAnXycsICdwJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnUycsICc2JywgJ18nLCAncicsICdvJywgJ2wnLCAnXycsICdpJywgJ18nLCAncCcsICdfJywgJ3gnLCAnYScsCi0gICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzYnLCAnXycsICdyJywgJ28nLCAnbCcsICdfJywgJ2knLCAnXycsCi0gICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc2JywgJ18nLCAncicsICdvJywgJ2wnLCAnXycsICdpJywgJ18nLCAncicsCi0gICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc2JywgJ18nLCAncicsICdvJywgJ2wnLCAnXycsCi0gICdpJywgJ18nLCAncicsICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc2JywgJ18nLCAncicsCi0gICdvJywgJ2wnLCAnXycsICdpJywgJ18nLCAncicsICdfJywgJ24nLCAnYScsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsCi0gICc2JywgJ18nLCAncicsICdvJywgJ2wnLCAnXycsICdpJywgJ18nLCAncicsICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsCisgICdpJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNicsICdfJywgJ3InLCAnbycsICdsJywgJ18nLCAnaScsCisgICdfJywgJ3AnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNicsICdfJywgJ3InLCAnbycsCisgICdsJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNicsCisgICdfJywgJ3InLCAnbycsICdsJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICduJywgJ2EnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1MnLCAnNicsICdfJywgJ3InLCAnbycsICdsJywgJ18nLCAnaScsICdfJywgJ3InLCAnXycsICd4JywgJ2EnLCAnYycsCi0gICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc2JywgJ18nLCAndicsICdzJywgJ3AnLCAnbCcsICdhJywgJ3QnLCAncicsCi0gICdiJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzYnLCAnXycsICd2JywgJ3QnLCAncicsICd1JywgJ24nLCAnZScsCi0gICdoJywgJ2InLCAnXycsICdwJywgJ3AnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNicsICdfJywgJ3YnLCAndCcsCi0gICdyJywgJ3UnLCAnbicsICdvJywgJ2gnLCAnYicsICdfJywgJ3AnLCAncCcsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdfJywgJ1MnLCAnNicsICdfJywgJ3InLCAnbycsICdsJywgJ18nLCAnaScsICdfJywgJ3AnLCAnXycsICdvJywgJ3InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdTJywgJzYnLCAnXycsICdyJywgJ28nLCAnbCcsICdfJywgJ2knLCAnXycsICdwJywgJ18nLCAneCcsCisgICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNicsICdfJywgJ3InLCAnbycsICdsJywgJ18nLCAnaScsCisgICdfJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzYnLCAnXycsICdyJywgJ28nLCAnbCcsICdfJywgJ2knLCAnXycsCisgICdyJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzYnLCAnXycsICdyJywgJ28nLCAnbCcsCisgICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzYnLCAnXycsCisgICdyJywgJ28nLCAnbCcsICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAnbicsICdhJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdTJywgJzYnLCAnXycsICdyJywgJ28nLCAnbCcsICdfJywgJ2knLCAnXycsICdyJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnUycsICc2JywgJ18nLCAncicsICdvJywgJ2wnLCAnXycsICdpJywgJ18nLCAncicsICdfJywgJ3gnLCAnYScsCisgICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdTJywgJzYnLCAnXycsICd2JywgJ3MnLCAncCcsICdsJywgJ2EnLCAndCcsCisgICdyJywgJ2InLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1MnLCAnNicsICdfJywgJ3YnLCAndCcsICdyJywgJ3UnLCAnbicsCisgICdlJywgJ2gnLCAnYicsICdfJywgJ3AnLCAncCcsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnUycsICc2JywgJ18nLCAndicsCisgICd0JywgJ3InLCAndScsICduJywgJ28nLCAnaCcsICdiJywgJ18nLCAncCcsICdwJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICdlJywgJ3gnLCAndCcsICdyJywgJ2EnLCAnYycsICd0JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICdlJywgJ3gnLCAndCcsICdyJywgJ2EnLCAnYycsICd0JywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAnaCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAnZScsICd4JywgJ3QnLCAncicsICdhJywgJ2MnLCAndCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAnZScsICd4JywgJ3QnLCAncicsICdhJywgJ2MnLCAndCcsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ2gnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICc2JywgJ18nLCAnaCcsICdpJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ2gnLCAnaScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdfJywgJ2wnLCAnZCcsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAnbCcsICdkJywgJzAnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAnbCcsICdkJywgJ2MnLCAnbicsCisgICdwJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICdsJywgJ2QnLCAnYycsICduJywgJ3AnLCAnMCcsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICdsJywgJ2QnLCAnYycsCisgICduJywgJ3AnLCAnbicsICd0JywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICdsJywgJ2QnLCAnYycsCisgICduJywgJ3AnLCAnbicsICd0JywgJzAnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAnbCcsICdkJywgJ2MnLCAncCcsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAnbCcsCisgICdkJywgJ2MnLCAncCcsICcwJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ2wnLCAnZCcsICdjJywgJ3AnLCAnbicsICd0JywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICdsJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICdsJywgJ28nLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAnbCcsICd2JywgJ3MnLCAncCcsICdsJywgJ2EnLCAndCcsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAnbCcsICd2JywgJ3MnLCAncCcsICdsJywgJ2EnLCAndCcsCi0gICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ2wnLCAndicsCi0gICdzJywgJ3AnLCAnbCcsICdhJywgJ3QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ2wnLCAndicsCi0gICdzJywgJ3AnLCAnbCcsICdhJywgJ3QnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdsJywgJ2QnLCAnYycsICdwJywgJ24nLCAndCcsICcwJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ2wnLCAnZCcsICduJywgJ3AnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ2wnLCAnZCcsICduJywgJ3AnLCAnMCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICdsJywgJ3YnLCAncycsICdwJywgJ2wnLCAnYScsICd0JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdWJywgJzYnLCAnXycsICdsJywgJ2QnLCAnbicsICdwJywgJ24nLCAndCcsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAnbCcsICdkJywgJ24nLCAncCcsICduJywgJ3QnLCAnMCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICdsJywgJ2QnLCAnbicsICd0JywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICdsJywgJ3YnLCAncycsICdwJywgJ2wnLCAnYScsICd0JywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAncCcsICdyJywgJ2UnLCAnZCcsICdfJywgJ2EnLCAnbicsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAncCcsICdyJywgJ2UnLCAnZCcsICdfJywgJ2EnLCAnbicsCi0gICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3AnLCAncicsCi0gICdlJywgJ2QnLCAnXycsICdhJywgJ24nLCAnZCcsICdfJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdWJywgJzYnLCAnXycsICdsJywgJ2QnLCAnbicsICd0JywgJzAnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAnbCcsICdkJywgJ24nLCAndCcsICduJywgJ3QnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ2wnLCAnZCcsICdwJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICdwJywgJ3InLCAnZScsICdkJywgJ18nLCAnYScsICduJywgJ2QnLCAnXycsICduJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdsJywgJ2QnLCAncCcsICcwJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ2wnLCAnZCcsICdwJywgJ24nLCAndCcsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAnbCcsCisgICdkJywgJ3AnLCAnbicsICd0JywgJzAnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAnbCcsICdkJywgJ3QnLCAnbicsICdwJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICdsJywgJ2QnLCAndCcsICduJywgJ3AnLCAnMCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICdsJywgJ2QnLCAndCcsICduJywgJ3AnLCAnbicsICd0JywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICdsJywgJ2QnLCAndCcsICduJywgJ3AnLCAnbicsICd0JywgJzAnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAnbCcsICdkJywgJ3QnLCAncCcsICcwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAnbCcsICdkJywgJ3QnLCAncCcsICcwJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsICduJywgJ28nLCAndCcsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ2wnLCAnZCcsICd0JywgJ3AnLCAnbicsICd0JywgJzAnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICdsJywgJ2QnLCAndCcsICdwJywgJ24nLCAndCcsICcwJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ2wnLCAnZCcsICd1JywgJzAnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICdsJywgJ2QnLCAndScsICcwJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsICduJywgJ28nLCAndCcsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ2wnLCAnbycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ2wnLCAnbycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICdsJywgJ3YnLCAncycsICdwJywgJ2wnLCAnYScsICd0JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICdsJywgJ3YnLCAncycsICdwJywgJ2wnLCAnYScsICd0JywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAnbCcsICd2JywgJ3MnLCAncCcsICdsJywgJ2EnLCAndCcsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAnbCcsICd2JywgJ3MnLCAncCcsICdsJywgJ2EnLCAndCcsICdoJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ2wnLCAndicsICdzJywgJ3AnLCAnbCcsCisgICdhJywgJ3QnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ2wnLCAndicsICdzJywgJ3AnLCAnbCcsCisgICdhJywgJ3QnLCAndycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICdwJywgJ3InLCAnZScsICdkJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICdwJywgJ3InLCAnZScsICdkJywgJ18nLCAnYScsICduJywgJ2QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAncCcsICdyJywgJ2UnLCAnZCcsICdfJywgJ2EnLCAnbicsICdkJywgJ18nLCAnbicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsICdhJywgJ24nLCAnZCcsCisgICdfJywgJ24nLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAncCcsCisgICdyJywgJ2UnLCAnZCcsICdfJywgJ24nLCAnbycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAncCcsCisgICdyJywgJ2UnLCAnZCcsICdfJywgJ24nLCAnbycsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICdwJywgJ3InLCAnZScsICdkJywgJ18nLCAnbycsICdyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsICdvJywgJ3InLCAnXycsCisgICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAncCcsICdyJywgJ2UnLCAnZCcsICdfJywgJ28nLCAncicsCisgICdfJywgJ24nLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAncCcsCisgICdyJywgJ2UnLCAnZCcsICdfJywgJ3MnLCAnYycsICdhJywgJ2wnLCAnYScsICdyJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICdwJywgJ3InLCAnZScsICdkJywgJ18nLCAncycsICdjJywgJ2EnLCAnbCcsICdhJywgJ3InLCAnMicsCiAgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCiAgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICdwJywgJ3InLCAnZScsCi0gICdkJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAncCcsICdyJywgJ2UnLCAnZCcsCi0gICdfJywgJ28nLCAncicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICdwJywgJ3InLCAnZScsICdkJywgJ18nLCAnbycsICdyJywgJ18nLCAnbicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsICdvJywgJ3InLCAnXycsICduJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsICdzJywgJ2MnLCAnYScsCi0gICdsJywgJ2EnLCAncicsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAncCcsICdyJywgJ2UnLCAnZCcsCi0gICdfJywgJ3MnLCAnYycsICdhJywgJ2wnLCAnYScsICdyJywgJzInLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAncCcsICdyJywgJ2UnLCAnZCcsICdfJywgJ3MnLCAnYycsICdhJywgJ2wnLCAnYScsCi0gICdyJywgJzInLCAndicsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAncCcsICdyJywgJ2UnLCAnZCcsCi0gICdfJywgJ3MnLCAnYycsICdhJywgJ2wnLCAnYScsICdyJywgJzInLCAndicsICcyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsICd4JywgJ28nLCAncicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsICd4JywgJ28nLCAncicsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICdzJywgJ2gnLCAndScsCi0gICdmJywgJ2YnLCAnZScsICdxJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICdzJywgJ2gnLCAndScsCi0gICdmJywgJ2YnLCAnZScsICdxJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAncycsICdoJywgJ3UnLCAnZicsICdmJywgJ2UnLCAncScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAncycsICdoJywgJ3UnLCAnZicsICdmJywgJ2UnLCAncScsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnUycsICczJywgJzInLCAnYicsICdfJywgJ24nLCAncScsCi0gICdwJywgJ3InLCAnZScsICdkJywgJ18nLCAnYScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdTJywgJzMnLCAnMicsICdiJywgJ18nLCAnbicsICdxJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsICdhJywgJ2knLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdTJywgJzMnLCAnMicsCi0gICdiJywgJ18nLCAnbicsICd0JywgJ18nLCAnbicsICdxJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsICdhJywgJ2knLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ1MnLCAnMycsICcyJywgJ2InLCAnXycsICduJywgJ3QnLCAnXycsCi0gICduJywgJ3EnLCAncCcsICdyJywgJ2UnLCAnZCcsICdfJywgJ2EnLCAnaScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ1MnLCAnMycsICcyJywgJ2InLCAnXycsICduJywgJ3QnLCAnXycsCi0gICdxJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsICdhJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ1MnLCAnMycsICcyJywgJ2InLCAnXycsICduJywgJ3QnLCAnXycsICdxJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsCi0gICdhJywgJ2knLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdTJywgJzMnLCAnMicsICdiJywgJ18nLCAncScsICdwJywgJ3InLCAnZScsICdkJywgJ18nLCAnYScsICdpJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdTJywgJzMnLCAnMicsICdiJywgJ18nLCAncScsICdwJywgJ3InLCAnZScsCi0gICdkJywgJ18nLCAnYScsICdpJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCi0gICdiJywgJ3MnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2EnLCAnYicsICdzJywgJ2InLCAnXycsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAnYicsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAnZCcsICdpJywgJ2YnLCAnZicsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2InLCAncycsICdkJywgJ2knLCAnZicsCi0gICdmJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdhJywgJ2InLCAncycsICdkJywgJ2knLCAnZicsICdmJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAnZCcsICdpJywgJ2YnLCAnZicsICd1JywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2InLCAncycsICdkJywgJ2knLCAnZicsCi0gICdmJywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAnZCcsCi0gICdpJywgJ2YnLCAnZicsICd1JywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdhJywgJ2InLCAncycsICdkJywgJ2knLCAnZicsICdmJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdkJywgJ18nLCAncycsICdjJywgJ2EnLCAnbCcsICdhJywgJ3InLCAnMicsICd2JywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnYicsICdzJywgJ2QnLCAnaScsICdmJywgJ2YnLCAndycsICdfJywgJzEnLCAnMicsCisgICdWJywgJzYnLCAnXycsICdwJywgJ3InLCAnZScsICdkJywgJ18nLCAncycsICdjJywgJ2EnLCAnbCcsICdhJywgJ3InLCAnMicsCisgICd2JywgJzInLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAncCcsCisgICdyJywgJ2UnLCAnZCcsICdfJywgJ3gnLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAncCcsCisgICdyJywgJ2UnLCAnZCcsICdfJywgJ3gnLCAnbycsICdyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnZicsICdlJywgJ3EnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnZicsICdlJywgJ3EnLCAnaCcsICdfJywgJzEnLCAnMicsCiAgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnYicsICdzJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnYicsICdzJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2InLCAncycsICdoJywgJ18nLCAncycsCi0gICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnYicsICdzJywgJ2gnLCAnXycsCi0gICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2EnLCAnYicsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnYicsCi0gICdzJywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdhJywgJ2InLCAncycsICd3JywgJ18nLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2EnLCAnYicsICdzJywgJ3cnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdiJywgJ18nLCAnZCcsICd2JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdiJywgJ18nLCAnZCcsICd2JywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnYicsCi0gICduJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2InLCAnbicsCi0gICdxJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCi0gICdkJywgJ2QnLCAnYicsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsCi0gICdiJywgJ3EnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdhJywgJ2QnLCAnZCcsICdiJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdhJywgJ2QnLCAnZCcsICdiJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnYicsICdzJywgJ2EnLCAndCcsICdfJywgJ2QnLCAndicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnYicsICdzJywgJ2EnLCAndCcsCi0gICdfJywgJ2QnLCAndicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICd2JywgJzYnLCAnXycsCi0gICd2JywgJ2EnLCAnZCcsICdkJywgJ2MnLCAnYScsICdyJywgJ3InLCAneScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ3YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnYycsICdhJywgJ3InLCAncicsICd5JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnYycsICdsJywgJ2InLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnYycsICdsJywgJ2InLCAnaCcsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsCi0gICdkJywgJ2MnLCAnbCcsICdiJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsCi0gICdkJywgJ2MnLCAnbCcsICdiJywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdhJywgJ2QnLCAnZCcsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnaCcsICdfJywgJ2QnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnaCcsICdfJywgJ2QnLCAndicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2gnLCAnbicsICdxJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdoJywgJ24nLCAncScsICdfJywgJzEnLCAnMicsCi0gICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2gnLCAncScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnaCcsICdxJywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnaCcsCi0gICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnaCcsCi0gICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2EnLCAnZCcsICdkJywgJ2gnLCAncycsICdhJywgJ3QnLCAnXycsICdkJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2gnLCAncycsICdhJywgJ3QnLCAnXycsICdkJywgJ3YnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsCi0gICdoJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2gnLCAndycsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsCi0gICdkJywgJ2gnLCAndycsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdhJywgJ2QnLCAnZCcsICdoJywgJ3cnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnYicsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd1JywgJ2InLCAnaCcsICdfJywgJzEnLCAnMicsCi0gICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnYicsCi0gICdoJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsCi0gICdkJywgJ3UnLCAnYicsICdoJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd1JywgJ2InLCAncycsICdhJywgJ3QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnYicsICdzJywgJ2EnLCAndCcsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsCi0gICdkJywgJ3UnLCAnYicsICdzJywgJ2EnLCAndCcsICdfJywgJ2QnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsICdiJywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsICd2JywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsCi0gICdiJywgJ3UnLCAnYicsICdiJywgJ18nLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnYicsICd1JywgJ2InLCAnYicsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsCi0gICdoJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsCi0gICd1JywgJ2gnLCAncycsICdhJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd1JywgJ2gnLCAncycsICdhJywgJ3QnLCAnXycsICdkJywgJ3YnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnaCcsICdzJywgJ2EnLCAndCcsCi0gICdfJywgJ2QnLCAndicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnaCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdhJywgJ2QnLCAnZCcsICd1JywgJ2gnLCAndycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnaCcsICd3JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnaCcsICd3JywgJ18nLCAnYScsCi0gICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdhJywgJ2QnLCAnZCcsICd1JywgJ3cnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAndycsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAndycsICdzJywgJ2EnLCAndCcsCi0gICdfJywgJ2QnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsCi0gICd3JywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3cnLCAnXycsICdkJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3cnLCAnXycsICdkJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd3JywgJ24nLCAncScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndycsICduJywgJ3EnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsCi0gICd3JywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3cnLCAncScsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsCi0gICdkJywgJ3cnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsCi0gICdkJywgJ3cnLCAncycsICdhJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd3JywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsICd2JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd3JywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsCi0gICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCi0gICdsJywgJ2knLCAnZycsICduJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnbCcsCi0gICdpJywgJ2cnLCAnbicsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdsJywgJ2knLCAnZycsICduJywgJ2InLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdsJywgJ2knLCAnZycsICduJywgJ2InLCAnaScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdhJywgJ24nLCAnZCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnbicsICdkJywgJ24nLCAncScsICdyJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnbicsICdkJywgJ24nLCAncScsICdyJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ24nLCAnZCcsICduJywgJ3EnLCAncicsCi0gICd0JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnbicsCi0gICdkJywgJ24nLCAncScsICdyJywgJ3QnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnbicsICdkJywgJ3EnLCAncicsICd0JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ24nLCAnZCcsICdxJywgJ3InLCAndCcsICdfJywgJzEnLCAnMicsCi0gICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnbicsICdkJywgJ3EnLCAncicsCi0gICd0JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnbicsCi0gICdkJywgJ3EnLCAncicsICd0JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ24nLCAnZCcsICd2JywgJ24nLCAncScsICd2JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ24nLCAnZCcsICd2JywgJ24nLCAncScsICd2JywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICduJywgJ2QnLCAndicsCi0gICdxJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnbicsICdkJywgJ3YnLCAncScsCi0gICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCi0gICduJywgJ2QnLCAndicsICdyJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnbicsCi0gICdkJywgJ3YnLCAncicsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICduJywgJ2QnLCAndicsICdyJywgJ3QnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICduJywgJ2QnLCAndicsICdyJywgJ3QnLCAnXycsICdhJywgJ2MnLCAnYycsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsCi0gICdsJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdsJywgJ2gnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAnbCcsCi0gICdoJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsCi0gICdsJywgJ2gnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdsJywgJ2gnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdzJywgJ2wnLCAnaCcsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ2wnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdzJywgJ2wnLCAndycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdsJywgJ3cnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ2wnLCAndycsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ2wnLCAndycsCi0gICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAnbCcsICd3JywgJ3YnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICdoJywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAnaCcsCi0gICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsCi0gICdoJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICdoJywgJ2InLCAncicsICduJywgJ2QnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdyJywgJ2gnLCAnYicsICdyJywgJ24nLCAnZCcsCi0gICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2EnLCAncycsICdyJywgJ2gnLCAnYicsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAnaCcsICdiJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAnaCcsICd1JywgJ2InLCAncicsCi0gICduJywgJ2QnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsCi0gICdyJywgJ2gnLCAndScsICdiJywgJ3InLCAnbicsICdkJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAnaCcsICd1JywgJ2InLCAncycsCi0gICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdyJywgJ2gnLCAndScsCi0gICdiJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAnaCcsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdhJywgJ3MnLCAncicsICdoJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICd1JywgJ2gnLCAndScsICdiJywgJ3InLCAnbicsICdkJywgJ3MnLCAnYScsCi0gICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICd1JywgJ2gnLCAndScsCi0gICdiJywgJ3InLCAnbicsICdkJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAndScsICdoJywgJ3UnLCAnYicsICdzJywgJ2EnLCAndCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAndScsICdoJywgJ3UnLCAnYicsCi0gICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2EnLCAncycsICdyJywgJ3UnLCAndycsICd1JywgJ2gnLCAncicsICduJywgJ2QnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdyJywgJ3UnLCAndycsICd1JywgJ2gnLCAncicsCi0gICduJywgJ2QnLCAncycsICdhJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICd1JywgJ3cnLCAndScsICdoJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICd1JywgJ3cnLCAndScsICdoJywgJ3MnLCAnYScsCi0gICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCi0gICdzJywgJ3InLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAndycsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsCi0gICdyJywgJ3cnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCi0gICdzJywgJ3InLCAndycsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAndycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICd3JywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICd3JywgJ2gnLCAncicsICduJywgJ2QnLCAncycsCi0gICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdyJywgJ3cnLCAnaCcsCi0gICdyJywgJ24nLCAnZCcsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdyJywgJ3cnLCAnaCcsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAndycsICdoJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAndycsCi0gICd1JywgJ2gnLCAncicsICduJywgJ2QnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2EnLCAncycsICdyJywgJ3cnLCAndScsICdoJywgJ3InLCAnbicsICdkJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAndycsCi0gICd1JywgJ2gnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsCi0gICdyJywgJ3cnLCAndScsICdoJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAndycsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICd3JywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncycsICdpJywgJ2cnLCAnbicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3MnLCAnaScsICdnJywgJ24nLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncycsICdpJywgJ2cnLCAnbicsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncycsICdpJywgJ2cnLCAnbicsCi0gICdwJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCi0gICd2JywgJ2cnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAnYicsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAndicsCi0gICdnJywgJ2InLCAncicsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAndicsCi0gICdnJywgJ2InLCAncicsICduJywgJ2QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdhJywgJ3YnLCAnZycsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAnaCcsICdyJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAnaCcsICdyJywgJ24nLCAnZCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndScsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndScsICdiJywgJ3InLCAnbicsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICd1JywgJ2InLCAncicsCi0gICduJywgJ2QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdhJywgJ3YnLCAnZycsICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAndicsCi0gICdnJywgJ3UnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2EnLCAndicsICdnJywgJ3UnLCAnaCcsICdyJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndScsICdoJywgJ3InLCAnbicsICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndScsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICd1JywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICd1JywgJ3cnLCAncicsCi0gICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ3UnLCAndycsCi0gICdyJywgJ24nLCAnZCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2EnLCAndicsICdnJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAndicsCi0gICdnJywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdhJywgJ3YnLCAnZycsICd3JywgJ3InLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdhJywgJ3YnLCAnZycsICd3JywgJ3InLCAnbicsICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYycsICdsJywgJzAnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnYycsICdsJywgJzAnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2MnLCAnbCcsICcwJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2MnLCAnbCcsICcwJywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdjJywgJ28nLCAnbScsICdiJywgJ2knLCAnbicsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdjJywgJ28nLCAnbScsICdiJywgJ2knLCAnbicsICdlJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdkJywgJzAnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdkJywgJ2QnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsCi0gICdkJywgJzAnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdkJywgJ2UnLCAnYScsICdsJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnZScsCi0gICdhJywgJ2wnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2QnLCAnZScsICdhJywgJ2wnLCAnYicsICc0JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2QnLCAnZScsICdhJywgJ2wnLCAnYicsICc0JywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ2UnLCAnYScsICdsJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnZScsICdhJywgJ2wnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnZScsICdhJywgJ2wnLCAndicsICdkJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnZScsICdhJywgJ2wnLCAndicsICdkJywgJ2QnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ2UnLCAnbCcsCi0gICd0JywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnZScsICdsJywgJ3QnLCAnYScsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsCi0gICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsCi0gICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdzJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnXycsCi0gICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnXycsICdkJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnXycsICdkJywgJ3YnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsCi0gICd5JywgJ2InLCAndScsICdzJywgJ18nLCAnZCcsICd2JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnXycsICdkJywgJ3YnLCAnXycsCi0gICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnaCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdkJywgJ20nLCAncCcsICd5JywgJ2gnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnaCcsICdiJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnaCcsICdiJywgJ18nLCAnYScsCi0gICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdkJywgJ20nLCAncCcsICd5JywgJ2gnLCAnYicsICdfJywgJ2QnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdoJywgJ2InLCAnXycsICdkJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2gnLCAnYicsCi0gICdfJywgJ2QnLCAndicsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdkJywgJ20nLCAncCcsICd5JywgJ2gnLCAnYicsICdfJywgJ2QnLCAndicsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsCi0gICdoJywgJ2knLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsCi0gICdwJywgJ3knLCAnaCcsICdpJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdoJywgJ2knLCAncycsICdhJywgJ3QnLCAnXycsCi0gICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsCi0gICdoJywgJ2knLCAncycsICdhJywgJ3QnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnaCcsICdzJywgJ2EnLCAndCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdoJywgJ3MnLCAnYScsCi0gICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsCi0gICdtJywgJ3AnLCAneScsICdoJywgJ3MnLCAnYScsICd0JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnaCcsICdzJywgJ2EnLCAndCcsICdfJywgJ2EnLCAnYycsCi0gICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsCi0gICdtJywgJ3AnLCAneScsICdoJywgJ3MnLCAndScsICdpJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2gnLCAncycsICd1JywgJ2knLCAncycsICdhJywgJ3QnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsCi0gICd5JywgJ2gnLCAncycsICd1JywgJ2knLCAncycsICdhJywgJ3QnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdoJywgJ3MnLCAndScsICdpJywgJ3MnLCAnYScsCi0gICd0JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2gnLCAncycsICd1JywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2gnLCAncycsICd1JywgJ3MnLCAnYScsCi0gICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsCi0gICdtJywgJ3AnLCAneScsICdoJywgJ3MnLCAndScsICdzJywgJ2EnLCAndCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2gnLCAncycsICd1JywgJ3MnLCAnYScsCi0gICd0JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2gnLCAndicsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdoJywgJ3YnLCAncycsICdhJywgJ3QnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsCi0gICd5JywgJ2gnLCAndicsICdzJywgJ2EnLCAndCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2gnLCAndicsICdzJywgJ2EnLCAndCcsICdfJywgJ2EnLCAnYycsCi0gICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsCi0gICdzJywgJ2EnLCAnZCcsICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAncycsCi0gICdhJywgJ2QnLCAndScsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnZCcsICdzJywgJ2EnLCAnZCcsICd1JywgJ2gnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdzJywgJ2EnLCAnZCcsICd1JywgJ2gnLCAnXycsICdhJywgJ2MnLCAnYycsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdlJywgJ3EnLCAnYicsICdfJywgJzEnLCAnMicsCi0gICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsICdiJywgJ18nLCAnYScsCi0gICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsICdiJywgJ18nLCAnYScsCi0gICduJywgJ2QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdlJywgJ3EnLCAnYicsICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsCi0gICdxJywgJ2InLCAnXycsICdvJywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdlJywgJ3EnLCAnYicsICdfJywgJ3gnLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdlJywgJ3EnLCAnYicsICdfJywgJ3gnLCAnbycsICdyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsICdxJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsICdxJywgJ2gnLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsICdxJywgJ2gnLCAnXycsICdhJywgJ24nLCAnZCcsICdfJywgJzEnLCAnMicsCi0gICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsICdoJywgJ18nLCAnbycsCi0gICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdlJywgJ3EnLCAnaCcsICdfJywgJ28nLCAncicsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsCi0gICdoJywgJ18nLCAneCcsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsCi0gICdoJywgJ18nLCAneCcsICdvJywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdlJywgJ3EnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICdzJywgJ2gnLCAndScsICdmJywgJ2YnLCAnZScsCisgICdxJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICdzJywgJ2gnLCAndScsICdmJywgJ2YnLCAnZScsCiAgICdxJywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdlJywgJ3EnLCAndycsICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdlJywgJ3EnLCAndycsICdfJywgJ2EnLCAnbicsICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsICdxJywgJ3cnLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdTJywgJzMnLCAnMicsICdiJywgJ18nLCAnbicsICdxJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsICdhJywgJ2knLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ1MnLCAnMycsICcyJywgJ2InLCAnXycsICduJywgJ3EnLCAncCcsCisgICdyJywgJ2UnLCAnZCcsICdfJywgJ2EnLCAnaScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsICd3JywgJ18nLCAnbycsICdyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdWJywgJzYnLCAnXycsICd2JywgJ1MnLCAnMycsICcyJywgJ2InLCAnXycsICduJywgJ3QnLCAnXycsICduJywgJ3EnLCAncCcsCisgICdyJywgJ2UnLCAnZCcsICdfJywgJ2EnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnUycsCisgICczJywgJzInLCAnYicsICdfJywgJ24nLCAndCcsICdfJywgJ24nLCAncScsICdwJywgJ3InLCAnZScsICdkJywgJ18nLCAnYScsCisgICdpJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnUycsCisgICczJywgJzInLCAnYicsICdfJywgJ24nLCAndCcsICdfJywgJ3EnLCAncCcsICdyJywgJ2UnLCAnZCcsICdfJywgJ2EnLCAnaScsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsICdxJywgJ3cnLCAnXycsICd4JywgJ28nLCAncicsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnUycsICczJywgJzInLCAnYicsICdfJywgJ24nLCAndCcsCisgICdfJywgJ3EnLCAncCcsICdyJywgJ2UnLCAnZCcsICdfJywgJ2EnLCAnaScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ1MnLCAnMycsICcyJywgJ2InLCAnXycsICdxJywgJ3AnLCAncicsCisgICdlJywgJ2QnLCAnXycsICdhJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ1MnLCAnMycsCisgICcyJywgJ2InLCAnXycsICdxJywgJ3AnLCAncicsICdlJywgJ2QnLCAnXycsICdhJywgJ2knLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2InLCAncycsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2InLCAncycsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsICdxJywgJ3cnLCAnXycsICd4JywgJ28nLCAncicsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAnYScsCi0gICd0JywgJ2gnLCAnZScsICdyJywgJ20nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsCi0gICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAnbScsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAnbScsICdoJywgJ3EnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ20nLCAnaCcsCi0gICdxJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsCi0gICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAnbScsICdoJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ20nLCAnaCcsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAnbScsCi0gICdoJywgJ3cnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICdhJywgJ3QnLCAnaCcsCi0gICdlJywgJ3InLCAnbScsICdoJywgJ3cnLCAncScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ20nLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAnbScsICd3JywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICdhJywgJ3QnLCAnaCcsCi0gICdlJywgJ3InLCAnbScsICd3JywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAnYScsCi0gICd0JywgJ2gnLCAnZScsICdyJywgJ20nLCAndycsICdxJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICd0JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2cnLCAndCcsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnZycsICd0JywgJ2InLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnZycsICd0JywgJ2InLCAnXycsICdhJywgJ24nLCAnZCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICdiJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAnYicsICdfJywgJ28nLCAncicsICdfJywgJzEnLCAnMicsCi0gICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICdiJywgJ18nLCAneCcsCi0gICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICdiJywgJ18nLCAneCcsCi0gICdvJywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAnYicsICdfJywgJ3MnLCAnYScsCisgICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2InLCAncycsICdiJywgJ18nLCAncycsCisgICdhJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdnJywgJ3QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICd0JywgJ2gnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAnaCcsCi0gICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAnaCcsCi0gICdfJywgJ2EnLCAnbicsICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnZycsICd0JywgJ2gnLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdhJywgJ2InLCAncycsICdkJywgJ2knLCAnZicsICdmJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2cnLCAndCcsICdoJywgJ18nLCAnbycsICdyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICd0JywgJ2gnLCAnXycsICd4JywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICd0JywgJ2gnLCAnXycsICd4JywgJ28nLCAncicsICdfJywgJzEnLCAnMicsCi0gICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICd1JywgJ2InLCAnXDAwMCcsCisgICd2JywgJ2EnLCAnYicsICdzJywgJ2QnLCAnaScsICdmJywgJ2YnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICd1JywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsICdiJywgJ18nLCAnYScsCi0gICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICd1JywgJ2InLCAnXycsCi0gICdhJywgJ24nLCAnZCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnYicsICdzJywgJ2QnLCAnaScsICdmJywgJ2YnLCAndScsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2InLCAncycsICdkJywgJ2knLCAnZicsCisgICdmJywgJ3UnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2cnLCAndCcsICd1JywgJ2InLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2cnLCAndCcsICd1JywgJ2InLCAnXycsICdvJywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsICdiJywgJ18nLCAneCcsICdvJywgJ3InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICd1JywgJ2InLCAnXycsICd4JywgJ28nLCAncicsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsCi0gICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICd1JywgJ2gnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsCi0gICdoJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsCi0gICd1JywgJ2gnLCAnXycsICdhJywgJ24nLCAnZCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICd1JywgJ2gnLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICd1JywgJ2gnLCAnXycsICdvJywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsICdoJywgJ18nLCAneCcsCi0gICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICd1JywgJ2gnLCAnXycsCi0gICd4JywgJ28nLCAncicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2cnLCAndCcsICd1JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsCi0gICd1JywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdnJywgJ3QnLCAndScsICd3JywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2cnLCAndCcsICd1JywgJ3cnLCAnXycsICdhJywgJ24nLCAnZCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICd1JywgJ3cnLCAnXycsICdvJywgJ3InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICd1JywgJ3cnLCAnXycsICdvJywgJ3InLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsCi0gICd3JywgJ18nLCAneCcsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsCi0gICd1JywgJ3cnLCAnXycsICd4JywgJ28nLCAncicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdnJywgJ3QnLCAndycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2cnLCAndCcsICd3JywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2cnLCAndCcsICd3JywgJ18nLCAnYScsICduJywgJ2QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndycsICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICd0JywgJ3cnLCAnXycsICdvJywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndycsICdfJywgJ3gnLCAnbycsCi0gICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndycsICdfJywgJ3gnLCAnbycsCi0gICdyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnaScsCi0gICduJywgJ3MnLCAnZScsICdyJywgJ3QnLCAndycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdpJywgJ24nLCAncycsICdlJywgJ3InLCAndCcsICd3JywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdsJywgJ2EnLCAnbCcsICdpJywgJ2cnLCAnbicsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdsJywgJ2EnLCAnbCcsICdpJywgJ2cnLCAnbicsICdiJywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsICdhJywgJ2wnLCAnaScsCi0gICdnJywgJ24nLCAnYicsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdsJywgJ2EnLCAnbCcsCi0gICdpJywgJ2cnLCAnbicsICdiJywgJ2knLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICd2JywgJ2EnLCAnYicsICdzJywgJ2QnLCAnaScsICdmJywgJ2YnLCAndScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdsJywgJ3MnLCAncicsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdsJywgJ3MnLCAncicsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICc2JywgJ18nLCAndicsICdhJywgJ2InLCAncycsICdkJywgJ2knLCAnZicsICdmJywgJ3UnLCAnaCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnYicsICdzJywgJ2QnLCAnaScsCisgICdmJywgJ2YnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAnZCcsCisgICdpJywgJ2YnLCAnZicsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbCcsICdzJywgJ3InLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsCisgICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCisgICdiJywgJ3MnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2EnLCAnYicsICdzJywgJ2gnLCAnXycsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAnaCcsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAndycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnYicsICdzJywgJ3cnLCAnXycsICdzJywgJ2EnLCAndCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAndycsICdfJywgJ3MnLCAnYScsCisgICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCisgICdkJywgJ2QnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnYicsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsCisgICdkJywgJ2InLCAnXycsICdkJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsCisgICdkJywgJ2InLCAnXycsICdkJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdiJywgJ24nLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnYicsICduJywgJ3EnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdiJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2InLCAncScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2InLCAncycsICdhJywgJ3QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2InLCAncycsICdhJywgJ3QnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsCisgICdiJywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdhJywgJ2QnLCAnZCcsICdiJywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnYycsICdhJywgJ3InLCAncicsCisgICd5JywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsCisgICdjJywgJ2EnLCAncicsICdyJywgJ3knLCAncycsICdhJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdjJywgJ2wnLCAnYicsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdjJywgJ2wnLCAnYicsICdoJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnYycsCisgICdsJywgJ2InLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnYycsCisgICdsJywgJ2InLCAndycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2EnLCAnZCcsICdkJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsCisgICdkJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdhJywgJ2QnLCAnZCcsICdoJywgJ18nLCAnZCcsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdhJywgJ2QnLCAnZCcsICdoJywgJ18nLCAnZCcsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnaCcsICduJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2gnLCAnbicsICdxJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnaCcsICdxJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdoJywgJ3EnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdoJywgJ3MnLCAnYScsCisgICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdoJywgJ3MnLCAnYScsCisgICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCisgICdkJywgJ2QnLCAnaCcsICdzJywgJ2EnLCAndCcsICdfJywgJ2QnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnaCcsICdzJywgJ2EnLCAndCcsICdfJywgJ2QnLCAndicsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2gnLCAndycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnaCcsICd3JywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnaCcsCisgICd3JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsCisgICdkJywgJ2gnLCAndycsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsICdiJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnYicsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsICdiJywgJ2gnLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsCisgICdiJywgJ2gnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnYicsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsICdiJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsCisgICdiJywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdhJywgJ2QnLCAnZCcsICd1JywgJ2InLCAncycsICdhJywgJ3QnLCAnXycsICdkJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd1JywgJ2InLCAndScsCisgICdiJywgJ2InLCAnXycsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCisgICdkJywgJ2QnLCAndScsICdiJywgJ3UnLCAnYicsICdiJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd1JywgJ2gnLCAncycsCisgICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnaCcsCisgICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnaCcsICdzJywgJ2EnLCAndCcsICdfJywgJ2QnLCAndicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsICdoJywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsCisgICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCisgICdkJywgJ2QnLCAndScsICdoJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsCisgICdkJywgJ3UnLCAnaCcsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsICdoJywgJ3cnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsICdoJywgJ3cnLCAnXycsICdhJywgJ2MnLCAnYycsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsCisgICdkJywgJ3UnLCAndycsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCisgICdkJywgJ2QnLCAndScsICd3JywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsICd3JywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsCisgICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd1JywgJ3cnLCAncycsCisgICdhJywgJ3QnLCAnXycsICdkJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdhJywgJ2QnLCAnZCcsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndycsICdfJywgJ2QnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndycsICdfJywgJ2QnLCAndicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3cnLCAnbicsICdxJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd3JywgJ24nLCAncScsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3cnLCAncScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndycsICdxJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndycsCisgICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndycsCisgICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2EnLCAnZCcsICdkJywgJ3cnLCAncycsICdhJywgJ3QnLCAnXycsICdkJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3cnLCAncycsICdhJywgJ3QnLCAnXycsICdkJywgJ3YnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ2wnLCAnaScsCisgICdnJywgJ24nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdsJywgJ2knLCAnZycsCisgICduJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdhJywgJ2wnLCAnaScsICdnJywgJ24nLCAnYicsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdhJywgJ2wnLCAnaScsICdnJywgJ24nLCAnYicsICdpJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2EnLCAnbicsICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnYScsICduJywgJ2QnLCAnbicsICdxJywgJ3InLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnYScsICduJywgJ2QnLCAnbicsICdxJywgJ3InLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnbicsICdkJywgJ24nLCAncScsICdyJywgJ3QnLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICduJywgJ2QnLCAnbicsCisgICdxJywgJ3InLCAndCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICduJywgJ2QnLCAncScsICdyJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnbicsICdkJywgJ3EnLCAncicsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICduJywgJ2QnLCAncScsICdyJywgJ3QnLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICduJywgJ2QnLCAncScsCisgICdyJywgJ3QnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnbicsICdkJywgJ3YnLCAnbicsICdxJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAnbicsICdkJywgJ3YnLCAnbicsICdxJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ24nLCAnZCcsICd2JywgJ3EnLCAndicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICduJywgJ2QnLCAndicsICdxJywgJ3YnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ24nLCAnZCcsCisgICd2JywgJ3InLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICduJywgJ2QnLCAndicsCisgICdyJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdhJywgJ24nLCAnZCcsICd2JywgJ3InLCAndCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdhJywgJ24nLCAnZCcsICd2JywgJ3InLCAndCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ2wnLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ2wnLCAnaCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdsJywgJ2gnLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ2wnLCAnaCcsCisgICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnYScsICdzJywgJ2wnLCAnaCcsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdhJywgJ3MnLCAnbCcsICdoJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAnbCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdhJywgJ3MnLCAnbCcsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnYScsICdzJywgJ2wnLCAndycsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAnbCcsICd3JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAnbCcsICd3JywgJ3YnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdsJywgJ3cnLCAndicsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdyJywgJ18nLCAnaScsCisgICduJywgJ3QnLCAnbycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAnXycsCisgICdpJywgJ24nLCAndCcsICdvJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCiAgICdzJywgJ3InLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2wnLCAncycsICdyJywgJ2gnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsCi0gICdzJywgJ3InLCAnaCcsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICd2JywgJ2EnLCAncycsICdyJywgJ2gnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbCcsICdzJywgJ3InLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsCi0gICdzJywgJ3InLCAndycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2wnLCAncycsICdyJywgJ3cnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsCi0gICdzJywgJ3InLCAndycsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbCcsICd1JywgJ3QnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsCi0gICd1JywgJ3QnLCAnNCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ2wnLCAndScsICd0JywgJ3YnLCAndicsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdsJywgJ3UnLCAndCcsICd2JywgJ3YnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAndScsICd0JywgJ3YnLCAndicsICdiJywgJ18nLCAnbicsICdtJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAnaCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAnaCcsICdiJywgJ3InLCAnbicsCisgICdkJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsCisgICdoJywgJ2InLCAncicsICduJywgJ2QnLCAncycsICdhJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdsJywgJ3UnLCAndCcsICd2JywgJ3YnLCAnYicsICdfJywgJ24nLCAnbScsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICdoJywgJ2InLCAncycsICdhJywgJ3QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdyJywgJ2gnLCAnYicsICdzJywgJ2EnLCAndCcsCiAgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAndScsCi0gICd0JywgJ3YnLCAndicsICdiJywgJ18nLCAnbycsICdyJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsCisgICdyJywgJ2gnLCAndScsICdiJywgJ3InLCAnbicsICdkJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICdoJywgJ3UnLCAnYicsICdyJywgJ24nLCAnZCcsICdzJywgJ2EnLCAndCcsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsCisgICdyJywgJ2gnLCAndScsICdiJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdhJywgJ3MnLCAncicsICdoJywgJ3UnLCAnYicsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdyJywgJ2gnLCAndicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAnaCcsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAndScsICdoJywgJ3UnLCAnYicsCisgICdyJywgJ24nLCAnZCcsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCisgICdzJywgJ3InLCAndScsICdoJywgJ3UnLCAnYicsICdyJywgJ24nLCAnZCcsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdyJywgJ3UnLCAnaCcsCisgICd1JywgJ2InLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsCisgICdyJywgJ3UnLCAnaCcsICd1JywgJ2InLCAncycsICdhJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICd1JywgJ3cnLCAndScsICdoJywgJ3InLCAnbicsCisgICdkJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsCisgICd1JywgJ3cnLCAndScsICdoJywgJ3InLCAnbicsICdkJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAndScsICd3JywgJ3UnLCAnaCcsCisgICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAndScsCisgICd3JywgJ3UnLCAnaCcsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdyJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2EnLCAncycsICdyJywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICd3JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdyJywgJ3cnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdyJywgJ3cnLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAndycsICdoJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAndycsCisgICdoJywgJ3InLCAnbicsICdkJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdhJywgJ3MnLCAncicsICd3JywgJ2gnLCAncicsICduJywgJ2QnLCAncycsICdhJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICd3JywgJ2gnLCAncycsCisgICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdyJywgJ3cnLCAnaCcsCisgICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2EnLCAncycsICdyJywgJ3cnLCAndScsICdoJywgJ3InLCAnbicsICdkJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICd3JywgJ3UnLCAnaCcsICdyJywgJ24nLCAnZCcsCisgICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2EnLCAncycsICdyJywgJ3cnLCAndScsICdoJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdhJywgJ3MnLCAncicsICd3JywgJ3UnLCAnaCcsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdyJywgJ3cnLCAndicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3InLCAndycsICd2JywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICdzJywgJ3MnLCAnaScsCisgICdnJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAncycsICdzJywgJ2knLCAnZycsCisgICduJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCisgICdzJywgJ3MnLCAnaScsICdnJywgJ24nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCisgICdzJywgJ3MnLCAnaScsICdnJywgJ24nLCAncCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2EnLCAndicsICdnJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICdiJywgJ3InLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICdiJywgJ3InLCAnbicsICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ2gnLCAncicsICduJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ2gnLCAncicsICduJywgJ2QnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsCisgICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ3UnLCAnYicsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAndicsCisgICdnJywgJ3UnLCAnYicsICdyJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCisgICd2JywgJ2cnLCAndScsICdiJywgJ3InLCAnbicsICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICd1JywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICd1JywgJ2gnLCAncicsICduJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ3UnLCAnaCcsICdyJywgJ24nLCAnZCcsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2EnLCAndicsCisgICdnJywgJ3UnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndScsCisgICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsCisgICd2JywgJ2cnLCAndScsICd3JywgJ3InLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdhJywgJ3YnLCAnZycsICd1JywgJ3cnLCAncicsICduJywgJ2QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndycsICdyJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndycsICdyJywgJ24nLCAnZCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2MnLCAnbCcsICcwJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2MnLCAnbCcsICcwJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdjJywgJ2wnLCAnMCcsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdjJywgJ2wnLCAnMCcsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYycsICdvJywgJ20nLCAnYicsICdpJywgJ24nLCAnZScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnYycsICdvJywgJ20nLCAnYicsICdpJywgJ24nLCAnZScsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnMCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICcwJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdkJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnZCcsICcwJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdlJywgJ2EnLCAnbCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdkJywgJ2UnLCAnYScsICdsJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ2UnLCAnYScsICdsJywgJ2InLCAnNCcsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ2UnLCAnYScsICdsJywgJ2InLCAnNCcsICd3JywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdlJywgJ2EnLCAnbCcsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ2UnLCAnYScsICdsJywgJ2gnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ2UnLCAnYScsCisgICdsJywgJ3YnLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ2UnLCAnYScsCisgICdsJywgJ3YnLCAnZCcsICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnZCcsICdlJywgJ2wnLCAndCcsICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdkJywgJ2UnLCAnbCcsICd0JywgJ2EnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdzJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAncycsCisgICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsCisgICd5JywgJ2InLCAndScsICdzJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdzJywgJ18nLCAnZCcsCisgICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsCisgICdzJywgJ18nLCAnZCcsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAncycsICdfJywgJ2QnLCAndicsICdfJywgJ2EnLCAnYycsCisgICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsCisgICdzJywgJ18nLCAnZCcsICd2JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2gnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdoJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2gnLCAnYicsCisgICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsCisgICd5JywgJ2gnLCAnYicsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdoJywgJ2InLCAnXycsICdkJywgJ3YnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnaCcsICdiJywgJ18nLCAnZCcsCisgICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsCisgICdtJywgJ3AnLCAneScsICdoJywgJ2InLCAnXycsICdkJywgJ3YnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdoJywgJ2InLCAnXycsICdkJywgJ3YnLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnaCcsICdpJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2gnLCAnaScsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnaCcsCisgICdpJywgJ3MnLCAnYScsICd0JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnaCcsICdpJywgJ3MnLCAnYScsICd0JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsCisgICd5JywgJ2gnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsCisgICdwJywgJ3knLCAnaCcsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnaCcsICdzJywgJ2EnLCAndCcsICdfJywgJ2EnLCAnYycsCisgICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdkJywgJ20nLCAncCcsICd5JywgJ2gnLCAncycsCisgICdhJywgJ3QnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnaCcsICdzJywgJ3UnLCAnaScsICdzJywgJ2EnLCAndCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdoJywgJ3MnLCAndScsCisgICdpJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdoJywgJ3MnLCAndScsICdpJywgJ3MnLCAnYScsICd0JywgJ18nLCAnYScsCisgICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnaCcsCisgICdzJywgJ3UnLCAnaScsICdzJywgJ2EnLCAndCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdoJywgJ3MnLCAndScsCisgICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsCisgICdoJywgJ3MnLCAndScsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnaCcsICdzJywgJ3UnLCAncycsICdhJywgJ3QnLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsCisgICdoJywgJ3MnLCAndScsICdzJywgJ2EnLCAndCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdoJywgJ3YnLCAncycsCisgICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAnbScsICdwJywgJ3knLCAnaCcsCisgICd2JywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdoJywgJ3YnLCAncycsICdhJywgJ3QnLCAnXycsICdhJywgJ2MnLCAnYycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZCcsICdtJywgJ3AnLCAneScsICdoJywgJ3YnLCAncycsCisgICdhJywgJ3QnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAncycsICdhJywgJ2QnLCAndScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdkJywgJ3MnLCAnYScsICdkJywgJ3UnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAncycsICdhJywgJ2QnLCAndScsICdoJywgJ18nLCAnYScsCisgICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2QnLCAncycsICdhJywgJ2QnLCAndScsCisgICdoJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdlJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsCisgICdxJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdlJywgJ3EnLCAnYicsICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdlJywgJ3EnLCAnYicsICdfJywgJ2EnLCAnbicsICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsICdxJywgJ2InLCAnXycsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsICdiJywgJ18nLCAnbycsICdyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsICdxJywgJ2InLCAnXycsICd4JywgJ28nLCAncicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsICdxJywgJ2InLCAnXycsICd4JywgJ28nLCAncicsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdlJywgJ3EnLCAnaCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsICdoJywgJ18nLCAnYScsCisgICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsICdoJywgJ18nLCAnYScsCisgICduJywgJ2QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdlJywgJ3EnLCAnaCcsICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsCisgICdxJywgJ2gnLCAnXycsICdvJywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdlJywgJ3EnLCAnaCcsICdfJywgJ3gnLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdlJywgJ3EnLCAnaCcsICdfJywgJ3gnLCAnbycsICdyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsICdxJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsICdxJywgJ3cnLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZScsICdxJywgJ3cnLCAnXycsICdhJywgJ24nLCAnZCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsICd3JywgJ18nLCAnbycsCisgICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdlJywgJ3EnLCAndycsICdfJywgJ28nLCAncicsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsCisgICd3JywgJ18nLCAneCcsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2UnLCAncScsCisgICd3JywgJ18nLCAneCcsICdvJywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdtJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ20nLCAnaCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsCisgICdyJywgJ20nLCAnaCcsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ2EnLCAndCcsCisgICdoJywgJ2UnLCAncicsICdtJywgJ2gnLCAncScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ20nLCAnaCcsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdtJywgJ2gnLCAndycsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAnYScsCisgICd0JywgJ2gnLCAnZScsICdyJywgJ20nLCAnaCcsICd3JywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ20nLCAnaCcsICd3JywgJ3EnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsCisgICdtJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsCisgICdyJywgJ20nLCAndycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ20nLCAndycsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdtJywgJ3cnLCAncScsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICdiJywgJ18nLCAnYScsICduJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICdiJywgJ18nLCAnYScsICduJywgJ2QnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAnYicsCisgICdfJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICd0JywgJ2InLCAnXycsCisgICdvJywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdnJywgJ3QnLCAnYicsICdfJywgJ3gnLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdnJywgJ3QnLCAnYicsICdfJywgJ3gnLCAnbycsICdyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICd0JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2cnLCAndCcsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnZycsICd0JywgJ2gnLCAnXycsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnZycsICd0JywgJ2gnLCAnXycsICdhJywgJ24nLCAnZCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICdoJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAnaCcsICdfJywgJ28nLCAncicsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICdoJywgJ18nLCAneCcsCisgICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICdoJywgJ18nLCAneCcsCisgICdvJywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdnJywgJ3QnLCAndScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsCisgICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsCisgICd0JywgJ3UnLCAnYicsICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdnJywgJ3QnLCAndScsICdiJywgJ18nLCAnYScsICduJywgJ2QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsICdiJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsICdiJywgJ18nLCAnbycsICdyJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICd0JywgJ3UnLCAnYicsCisgICdfJywgJ3gnLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsCisgICdiJywgJ18nLCAneCcsICdvJywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdnJywgJ3QnLCAndScsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnZycsICd0JywgJ3UnLCAnaCcsICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsICdoJywgJ18nLCAnYScsICduJywgJ2QnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsICdoJywgJ18nLCAnbycsCisgICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsICdoJywgJ18nLCAnbycsCisgICdyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsCisgICd0JywgJ3UnLCAnaCcsICdfJywgJ3gnLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdnJywgJ3QnLCAndScsICdoJywgJ18nLCAneCcsICdvJywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICd0JywgJ3UnLCAndycsICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsICd3JywgJ18nLCAnYScsICduJywgJ2QnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsCisgICd3JywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsCisgICd3JywgJ18nLCAnbycsICdyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnZycsICd0JywgJ3UnLCAndycsICdfJywgJ3gnLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndScsICd3JywgJ18nLCAneCcsICdvJywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICd0JywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndycsICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdnJywgJ3QnLCAndycsICdfJywgJ2EnLCAnbicsICdkJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsICd0JywgJ3cnLCAnXycsCisgICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2cnLCAndCcsICd3JywgJ18nLCAnbycsCisgICdyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsCisgICd0JywgJ3cnLCAnXycsICd4JywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnZycsCisgICd0JywgJ3cnLCAnXycsICd4JywgJ28nLCAncicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2knLCAnbicsICdzJywgJ2UnLCAncicsICd0JywgJ3cnLCAncicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnaScsICduJywgJ3MnLCAnZScsICdyJywgJ3QnLCAndycsICdyJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsICdhJywgJ2wnLCAnaScsCisgICdnJywgJ24nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsICdhJywgJ2wnLCAnaScsCisgICdnJywgJ24nLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ2wnLCAnYScsICdsJywgJ2knLCAnZycsICduJywgJ2InLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnbCcsICdhJywgJ2wnLCAnaScsICdnJywgJ24nLCAnYicsICdpJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsICdzJywgJ3InLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsICdzJywgJ3InLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAncycsICdyJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAncycsICdyJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdsJywgJ3MnLCAncicsICdoJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAncycsICdyJywgJ2gnLCAndicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAncycsICdyJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAncycsICdyJywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdsJywgJ3MnLCAncicsICd3JywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAncycsICdyJywgJ3cnLCAndicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAndScsICd0JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAndScsICd0JywgJzQnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdsJywgJ3UnLCAndCcsICd2JywgJ3YnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsICd1JywgJ3QnLCAndicsICd2JywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdsJywgJ3UnLCAndCcsICd2JywgJ3YnLCAnYicsCisgICdfJywgJ24nLCAnbScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsICd1JywgJ3QnLCAndicsCisgICd2JywgJ2InLCAnXycsICduJywgJ20nLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCiAgICc2JywgJ18nLCAndicsICdsJywgJ3UnLCAndCcsICd2JywgJ3YnLCAnYicsICdfJywgJ28nLCAncicsICdhJywgJ2MnLCAnYycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsICd1JywgJ3QnLCAndicsICd2JywgJ2InLCAnXycsCisgICdvJywgJ3InLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdsJywgJ3UnLCAndCcsICd2JywgJ3YnLCAnYicsICdfJywgJ28nLCAncicsICdhJywgJ2MnLCAnYycsCisgICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdsJywgJ3UnLCAndCcsICd2JywgJ3YnLCAnYicsCisgICdfJywgJ28nLCAncicsICdhJywgJ2MnLCAnYycsICdpJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsICd1JywgJ3QnLCAndicsICd2JywgJ2InLCAnaScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsICd1JywgJ3QnLCAndicsICd2JywgJ2InLCAnaScsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAndScsICd0JywgJ3YnLCAndycsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdsJywgJ3UnLCAndCcsICd2JywgJ3cnLCAnaCcsCiAgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCiAgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAndScsCi0gICd0JywgJ3YnLCAndicsICdiJywgJ18nLCAnbycsICdyJywgJ2EnLCAnYycsICdjJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAndScsICd0JywgJ3YnLCAndicsICdiJywgJ18nLCAnbycsICdyJywgJ2EnLCAnYycsCi0gICdjJywgJ2knLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICd0JywgJ3YnLCAndycsICdoJywgJ18nLCAnbicsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdsJywgJ3UnLCAndCcsICd2JywgJ3YnLCAnYicsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdsJywgJ3UnLCAndCcsICd2JywgJ3YnLCAnYicsICdpJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsICd1JywgJ3QnLCAndicsICd3JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAndScsICd0JywgJ3YnLCAndycsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsICd1JywgJ3QnLCAndicsICd3JywgJ2gnLCAnXycsCi0gICduJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAndScsICd0JywgJ3YnLCAndycsCi0gICdoJywgJ18nLCAnbicsICdtJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbCcsICd1JywgJ3QnLCAndicsICd3JywgJ2gnLCAnXycsICdvJywgJ3InLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsCisgICdsJywgJ3UnLCAndCcsICd2JywgJ3cnLCAnaCcsICdfJywgJ24nLCAnbScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCiAgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAndScsICd0JywgJ3YnLCAndycsICdoJywgJ18nLCAnbycsCi0gICdyJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbCcsICd1JywgJ3QnLCAndicsICd3JywgJ2gnLCAnXycsICdvJywgJ3InLCAnYScsICdjJywgJ2MnLCAnaScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbCcsICd1JywgJ3QnLCAndicsICd3JywgJ2gnLCAnXycsCi0gICdvJywgJ3InLCAnYScsICdjJywgJ2MnLCAnaScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAndScsICd0JywgJ3YnLCAndycsICdoJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAndScsICd0JywgJ3YnLCAndycsICdoJywgJ2knLCAnXycsICcxJywgJzInLCAnOCcsCisgICdyJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdsJywgJ3UnLCAndCcsCisgICd2JywgJ3cnLCAnaCcsICdfJywgJ28nLCAncicsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAndScsICd0JywgJ3YnLCAndycsICdoJywgJ18nLCAnbycsCisgICdyJywgJ2EnLCAnYycsICdjJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ2wnLCAndScsCisgICd0JywgJ3YnLCAndycsICdoJywgJ18nLCAnbycsICdyJywgJ2EnLCAnYycsICdjJywgJ2knLCAnXycsICcxJywgJzInLCAnOCcsCiAgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ2EnLCAncycsICdrJywgJ2UnLCAnZCcsCi0gICdzJywgJ3QnLCAnbycsICdyJywgJ2UnLCAnbicsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ2UnLCAnZCcsICdzJywgJ3QnLCAnbycsICdyJywgJ2UnLCAnbicsICdxJywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdlJywgJ2QnLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ24nLCAndCcsICduJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAnYScsICdzJywgJ2snLCAnZScsICdkJywgJ3MnLCAndCcsICdvJywgJ3InLCAnZScsCi0gICduJywgJ3QnLCAnbicsICdxJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbScsICdhJywgJ3MnLCAnaycsICdlJywgJ2QnLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ24nLCAndCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdsJywgJ3UnLCAndCcsICd2JywgJ3cnLCAnaCcsCisgICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdsJywgJ3UnLCAndCcsICd2JywgJ3cnLCAnaCcsCisgICdpJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdlJywgJ2QnLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ24nLCAncScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdhJywgJ3MnLCAnaycsICdlJywgJ2QnLCAncycsICd0JywgJ28nLCAncicsCisgICdlJywgJ24nLCAncScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ20nLCAnYScsICdzJywgJ2snLCAnZScsICdkJywgJ3MnLCAndCcsICdvJywgJ3InLCAnZScsICduJywgJ3QnLCAnbicsCiAgICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCiAgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ2EnLCAncycsICdrJywgJ2UnLCAnZCcsCi0gICdzJywgJ3QnLCAnbycsICdyJywgJ2UnLCAnbicsICd0JywgJ3EnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ2EnLCAncycsICdrJywgJ2UnLCAnZCcsICdzJywgJ3QnLCAnbycsCi0gICdyJywgJ2UnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdlJywgJ2QnLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ3EnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAnYScsICd4JywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAndScsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAndScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICd1JywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAnaScsICduJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ20nLCAnaScsICduJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdtJywgJ2knLCAnbicsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ20nLCAnaScsICduJywgJ3UnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAnaScsICduJywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAndScsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAndycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICdhJywgJ2InLCAndScsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAnYScsICdiJywgJ3UnLCAncycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdzJywgJ3QnLCAnbycsICdyJywgJ2UnLCAnbicsICd0JywgJ24nLCAncScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICdhJywgJ2InLCAndScsICdzJywgJ18nLCAnYScsCi0gICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICdhJywgJ2InLCAndScsCi0gICdzJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAnYScsICdiJywgJ3UnLCAncycsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAnYScsICdiJywgJ3UnLCAncycsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ2EnLCAnYicsICd1JywgJ3UnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICdhJywgJ2InLCAndScsICd1JywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ2EnLCAnYicsCi0gICd1JywgJ3UnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAnYScsICdzJywgJ2snLCAnZScsICdkJywgJ3MnLCAndCcsCisgICdvJywgJ3InLCAnZScsICduJywgJ3QnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCiAgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCi0gICdwJywgJ2EnLCAnYicsICd1JywgJ3UnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdhJywgJ3MnLCAnaycsICdlJywgJ2QnLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ24nLCAndCcsICdxJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdlJywgJ2QnLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ20nLCAnYScsICdzJywgJ2snLCAnZScsICdkJywgJ3MnLCAndCcsICdvJywgJ3InLCAnZScsICdxJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAnYicsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAnYScsICd4JywgJ2gnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICdhJywgJ2InLCAndScsICd1JywgJ3YnLCAnXDAwMCcsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAnYScsICd4JywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICd1JywgJ2InLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICdhJywgJ2InLCAndScsICd1JywgJ3YnLCAnXycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAnYScsICd4JywgJ3UnLCAnYicsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAnYScsICd4JywgJ3UnLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAndScsICdoJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAndycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAndycsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAnaScsICduJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAnaScsICduJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ2knLCAnbicsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ2knLCAnbicsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAndScsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ2knLCAnbicsICd1JywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ2knLCAnbicsICd1JywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAnaScsICduJywgJ3UnLCAnaCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAnaScsICduJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAnaScsICduJywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAnYScsICdiJywgJ3UnLCAncycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ2EnLCAnYicsICd1JywgJ3MnLCAnXycsCiAgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAnYScsCi0gICdoJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICdhJywgJ2gnLCAnYicsCisgICdiJywgJ3UnLCAncycsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdtJywgJ3AnLCAnYScsICdiJywgJ3UnLCAncycsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ2EnLCAnYicsICd1JywgJ3MnLCAndicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ2EnLCAnYicsICd1JywgJ3MnLCAndicsCiAgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCiAgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCi0gICdhJywgJ2gnLCAnYicsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdhJywgJ2InLCAndScsICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAnYScsCisgICdiJywgJ3UnLCAndScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ20nLCAncCcsICdhJywgJ2InLCAndScsICd1JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICdhJywgJ2InLCAndScsICd1JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAnYScsCisgICdiJywgJ3UnLCAndScsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAnYScsCisgICdiJywgJ3UnLCAndScsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnbScsICdwJywgJ2EnLCAnaCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdtJywgJ3AnLCAnYScsICdoJywgJ2InLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdtJywgJ3AnLCAnYScsICdoJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAnYScsICdoJywgJ2InLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ2EnLCAnaCcsICdiJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAnYScsCisgICdoJywgJ2gnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCisgICdhJywgJ2gnLCAnaCcsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICdhJywgJ3UnLCAnaCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAnYScsICd1JywgJ2gnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICdhJywgJ2gnLCAnaCcsICdzJywgJ2EnLCAndCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ2EnLCAnaCcsICdoJywgJ3MnLCAnYScsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICdhJywgJ3UnLCAnaCcsICdiJywgJ18nLCAnYScsCisgICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICdhJywgJ3UnLCAnaCcsCisgICdiJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAnYScsICd1JywgJ2gnLCAndScsICdoJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAnYScsICd1JywgJ2gnLCAndScsICdoJywgJ3MnLCAnYScsCiAgICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCiAgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCi0gICdwJywgJ2EnLCAndScsICdoJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCi0gICdhJywgJ3UnLCAnaCcsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdwJywgJ3MnLCAndScsICdoJywgJ3UnLCAnaCcsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbScsICdwJywgJ2EnLCAndScsICdoJywgJ2InLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ2EnLCAndScsICdoJywgJ2InLCAnXycsICdhJywgJ2MnLCAnYycsCisgICdfJywgJ3YnLCAnbScsICdwJywgJ3MnLCAndScsICdoJywgJ3UnLCAnaCcsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2InLCAndScsCisgICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAncycsCiAgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCiAgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCi0gICdhJywgJ3UnLCAnaCcsICd1JywgJ2gnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd5JywgJ2InLCAndScsICdzJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ20nLCAncCcsICdhJywgJ3UnLCAnaCcsICd1JywgJ2gnLCAncycsICdhJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAncycsICd1JywgJ2gnLCAndScsCi0gICdoJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAncycsCi0gICd1JywgJ2gnLCAndScsICdoJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdzJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnXycsCi0gICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnYicsCi0gICd1JywgJ3MnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdzJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdzJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsCisgICd2JywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdzJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsCiAgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCiAgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAncycsCi0gICd2JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCi0gICd5JywgJ2InLCAndScsICdzJywgJ3YnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2InLCAndicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnYicsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnYicsICd2JywgJ18nLCAnYScsCi0gICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAncycsCisgICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCisgICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAndicsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAncycsICd2JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsCisgICdiJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCiAgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2InLCAndicsCi0gICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnZScsICd3JywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnZScsICd3JywgJ3UnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCisgICd5JywgJ2InLCAndicsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdtJywgJ3AnLCAneScsICdiJywgJ3YnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2UnLCAndycsICd1JywgJ2gnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCiAgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2UnLCAndycsICd1JywgJ2gnLCAnXycsCi0gICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2UnLCAndycsCi0gICd1JywgJ2gnLCAnXycsICc2JywgJzQnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdtJywgJ3AnLCAneScsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdoJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdoJywgJ3MnLCAnYScsCi0gICd0JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCi0gICd5JywgJ2gnLCAncycsICdhJywgJ3QnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2gnLCAncycsICdyJywgJ3MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2gnLCAncycsICdyJywgJ3MnLCAnXycsCiAgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsCi0gICdoJywgJ3MnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaCcsCi0gICdzJywgJ3MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdlJywgJ3cnLCAndScsICdoJywgJ18nLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdtJywgJ3AnLCAneScsICdoJywgJ3UnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCi0gICdwJywgJ3knLCAnaCcsICd1JywgJ3MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdoJywgJ3UnLCAncycsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdoJywgJ3UnLCAncycsICdfJywgJ2EnLCAnYycsCisgICdtJywgJ3AnLCAneScsICdlJywgJ3cnLCAndScsICdoJywgJ18nLCAnNicsICc0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2gnLCAnXycsICdhJywgJ2MnLCAnYycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaCcsICdfJywgJ2EnLCAnYycsCiAgICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCiAgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCi0gICdwJywgJ3knLCAnaCcsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsCi0gICdoJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdtJywgJ3AnLCAneScsICdoJywgJ3YnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaCcsICd2JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdoJywgJ3YnLCAncycsCi0gICdyJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2gnLCAndicsCi0gICdzJywgJ3InLCAncycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAnZScsICdvJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAnZScsICdvJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdpJywgJ2UnLCAndycsICdoJywgJ18nLCAnYScsCi0gICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAnZScsCi0gICd3JywgJ2gnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAnZScsICd3JywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsICdlJywgJ3cnLCAndScsICdoJywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsCi0gICdlJywgJ3cnLCAndScsICdoJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAnZScsICd3JywgJ3UnLCAnaCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdpJywgJ2gnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsCi0gICdpJywgJ2gnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCi0gICdwJywgJ3knLCAnaScsICdoJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdpJywgJ2gnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsICdoJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdpJywgJ2gnLCAnYicsCi0gICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsCi0gICdpJywgJ2gnLCAnYicsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsICdvJywgJ3cnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsICdvJywgJ3cnLCAnaCcsICdfJywgJzEnLCAnMicsCi0gICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAndycsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdpJywgJ3cnLCAnYicsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCi0gICd5JywgJ2knLCAndycsICdiJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAndycsICdiJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdpJywgJ3cnLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsICd3JywgJ2gnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsCi0gICdpJywgJ3cnLCAnaCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdtJywgJ3AnLCAneScsICdpJywgJ3cnLCAnaCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsICd3JywgJ3UnLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsICd3JywgJ3UnLCAnYicsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCi0gICd5JywgJ2knLCAndycsICd1JywgJ2InLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsICd3JywgJ3UnLCAnYicsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnbycsCi0gICd3JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ28nLCAndycsCi0gICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCi0gICdwJywgJ3knLCAnbycsICd3JywgJ2gnLCAnXycsICc2JywgJzQnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnbycsICd3JywgJ2gnLCAnXycsICc2JywgJzQnLCAnXycsCi0gICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ20nLCAncCcsICd5JywgJ28nLCAndycsICdoJywgJ18nLCAncicsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ28nLCAndycsICdoJywgJ18nLCAncicsICduJywgJ2QnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsCi0gICdvJywgJ3cnLCAnaCcsICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAncycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnbycsICd3JywgJ2gnLCAnXycsICdyJywgJ24nLCAnZCcsCi0gICdfJywgJ3MnLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdwJywgJ3knLCAnaCcsICdzJywgJ2EnLCAndCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdvJywgJ3cnLCAnaCcsICdfJywgJ3MnLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ28nLCAndycsICdoJywgJ18nLCAncycsCi0gICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdoJywgJ3MnLCAnYScsICd0JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsCisgICdoJywgJ3MnLCAncicsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsCisgICdoJywgJ3MnLCAncicsICdzJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaCcsICdzJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCi0gICdwJywgJ3knLCAndScsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAndScsICdiJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAndScsCi0gICdiJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsCi0gICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCi0gICdwJywgJ3knLCAndScsICdiJywgJ3YnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAndScsICdiJywgJ3YnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsCi0gICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAndScsICdoJywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAndScsCi0gICdoJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCi0gICd5JywgJ3UnLCAnaCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICd2JywgJ20nLCAncCcsICd5JywgJ2gnLCAncycsICdzJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAndScsICdoJywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaCcsICd1JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnaCcsICdlJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2gnLCAndScsICdzJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAndScsICdoJywgJ2UnLCAnXycsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaCcsICd1JywgJ3MnLCAnXycsCiAgICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAndScsCi0gICdoJywgJ2UnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaCcsCisgICd1JywgJ3MnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnaCcsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICd1JywgJ2gnLCAndicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2gnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaCcsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaCcsICd2JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnaCcsICd2JywgJ18nLCAnYScsCi0gICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnaCcsCi0gICd2JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdtJywgJ3UnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2gnLCAndicsICdfJywgJ2EnLCAnYycsCisgICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCiAgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCi0gICd1JywgJ3gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdwJywgJ3knLCAnaCcsICd2JywgJ3MnLCAncicsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICduJywgJ2EnLCAndicsICdnJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ24nLCAnYScsCi0gICd2JywgJ2cnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdtJywgJ3AnLCAneScsICdoJywgJ3YnLCAncycsICdyJywgJ3MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdpJywgJ2UnLCAnbycsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdpJywgJ2UnLCAnbycsICdoJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsCisgICdlJywgJ3cnLCAnaCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdtJywgJ3AnLCAneScsICdpJywgJ2UnLCAndycsICdoJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdpJywgJ2UnLCAndycsCisgICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAnZScsCisgICd3JywgJ3UnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ24nLCAnYScsICd2JywgJ2cnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbicsCi0gICdhJywgJ3YnLCAnZycsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAnZScsICd3JywgJ3UnLCAnaCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdpJywgJ2UnLCAndycsICd1JywgJ2gnLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCisgICdwJywgJ3knLCAnaScsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbicsICdhJywgJ3YnLCAnZycsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ24nLCAnYScsICd2JywgJ2cnLCAndScsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbicsICdhJywgJ3YnLCAnZycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICduJywgJ2EnLCAndicsICdnJywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICduJywgJ28nLCAncicsICdtJywgJ2EnLCAnbScsICd0JywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ24nLCAnbycsICdyJywgJ20nLCAnYScsICdtJywgJ3QnLCAnaCcsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ24nLCAnbycsCi0gICdyJywgJ20nLCAnYScsICdtJywgJ3QnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbicsCi0gICdvJywgJ3InLCAnbScsICdhJywgJ20nLCAndCcsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbicsICdvJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ24nLCAnbycsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsICdoJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAnaCcsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsCisgICdoJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAnaCcsCisgICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCisgICdwJywgJ3knLCAnaScsICdoJywgJ2InLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdvJywgJ3InLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdwJywgJ2EnLCAnYycsCi0gICdrJywgJ2UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsICdhJywgJ2MnLCAnaycsCi0gICdlJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsICdoJywgJ2InLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAnbycsCisgICd3JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAnbycsCisgICd3JywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdwJywgJ2EnLCAnYycsICdrJywgJ2UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsCi0gICdhJywgJ2MnLCAnaycsICdlJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdtJywgJ3AnLCAneScsICdpJywgJ3cnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCisgICdwJywgJ3knLCAnaScsICd3JywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdwJywgJ2EnLCAnYycsICdrJywgJ2gnLCAnYicsICdfJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsCisgICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdpJywgJ3cnLCAnYicsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdwJywgJ2EnLCAnYycsICdrJywgJ2gnLCAnYicsICdfJywgJ3MnLCAnYScsCi0gICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsCi0gICdhJywgJ2MnLCAnaycsICdoJywgJ3UnLCAnYicsICdfJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdwJywgJ2EnLCAnYycsICdrJywgJ2gnLCAndScsICdiJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdwJywgJ2EnLCAnYycsCi0gICdrJywgJ28nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsICdhJywgJ2MnLCAnaycsCi0gICdvJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdwJywgJ2EnLCAnYycsICdrJywgJ28nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsCi0gICdhJywgJ2MnLCAnaycsICdvJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdwJywgJ2EnLCAnYycsICdrJywgJ3cnLCAnaCcsICdfJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdwJywgJ2EnLCAnYycsICdrJywgJ3cnLCAnaCcsICdfJywgJ3MnLCAnYScsCi0gICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsCi0gICdhJywgJ2MnLCAnaycsICd3JywgJ3UnLCAnaCcsICdfJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdwJywgJ2EnLCAnYycsICdrJywgJ3cnLCAndScsICdoJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdwJywgJ28nLCAncCcsCi0gICdjJywgJ28nLCAndScsICduJywgJ3QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsCi0gICdvJywgJ3AnLCAnYycsICdvJywgJ3UnLCAnbicsICd0JywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdwJywgJ3InLCAnZScsICdmJywgJ2knLCAneCcsICdxJywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3AnLCAncicsICdlJywgJ2YnLCAnaScsICd4JywgJ3EnLCAnYicsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3AnLCAncicsCi0gICdlJywgJ2YnLCAnaScsICd4JywgJ3EnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsCi0gICdyJywgJ2UnLCAnZicsICdpJywgJ3gnLCAncScsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdpJywgJ3cnLCAnYicsICdfJywgJ2EnLCAnYycsCisgICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsCisgICdwJywgJ3knLCAnaScsICd3JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCisgICd5JywgJ2knLCAndycsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsICd3JywgJ2gnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsICdyJywgJ2UnLCAnZicsICdpJywgJ3gnLCAncScsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdwJywgJ3InLCAnZScsICdmJywgJ2knLCAneCcsICdxJywgJ3cnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ2QnLCAnZScsCi0gICdsJywgJ3QnLCAnYScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdkJywgJ2UnLCAnbCcsCi0gICd0JywgJ2EnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdyJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdiJywgJ18nLCAncicsICd0JywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ2InLCAnXycsICdyJywgJ3QnLCAndCcsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnaScsICd3JywgJ2gnLCAnXycsICdhJywgJ2MnLCAnYycsCiAgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsCi0gICdwJywgJ3knLCAnYicsICd1JywgJ2InLCAnXycsICdyJywgJ3QnLCAndCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCisgICd5JywgJ2knLCAndycsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCisgICd5JywgJ2knLCAndycsICd1JywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdpJywgJ3cnLCAndScsICdiJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ2knLCAndycsICd1JywgJ2InLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ20nLCAncCcsICd5JywgJ28nLCAndycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdtJywgJ3AnLCAneScsICdvJywgJ3cnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ28nLCAndycsICdoJywgJ18nLCAnNicsICc0JywgJ18nLCAnYScsCisgICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ28nLCAndycsCisgICdoJywgJ18nLCAnNicsICc0JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdiJywgJ18nLCAncicsCi0gICd0JywgJ3QnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdvJywgJ3cnLCAnaCcsICdfJywgJ3InLCAnbicsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICdvJywgJ3cnLCAnaCcsCisgICdfJywgJ3InLCAnbicsICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnbycsICd3JywgJ2gnLCAnXycsICdyJywgJ24nLCAnZCcsICdfJywgJ3MnLCAnYScsCisgICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ28nLCAndycsCisgICdoJywgJ18nLCAncicsICduJywgJ2QnLCAnXycsICdzJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAnbycsICd3JywgJ2gnLCAnXycsCisgICdzJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsCisgICdvJywgJ3cnLCAnaCcsICdfJywgJ3MnLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsICdfJywgJ2EnLCAnYycsCisgICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICd1JywgJ2InLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdtJywgJ3AnLCAneScsICd1JywgJ2InLCAndicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsICd2JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsICd2JywgJ18nLCAnYScsCisgICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdtJywgJ3AnLCAneScsICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCisgICd5JywgJ3UnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnaCcsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICd1JywgJ2gnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnaCcsCisgICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICd1JywgJ2gnLCAnZScsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAncCcsCisgICd5JywgJ3UnLCAnaCcsICdlJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ20nLCAncCcsICd5JywgJ3UnLCAnaCcsICdlJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsICd1JywgJ2gnLCAndicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICdwJywgJ3knLCAndScsICdoJywgJ3YnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdtJywgJ3AnLCAneScsCisgICd1JywgJ2gnLCAndicsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdtJywgJ3AnLCAneScsICd1JywgJ2gnLCAndicsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbScsICd1JywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ20nLCAndScsICd4JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbicsICdhJywgJ3YnLCAnZycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICduJywgJ2EnLCAndicsICdnJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICduJywgJ2EnLCAndicsICdnJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ24nLCAnYScsICd2JywgJ2cnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ24nLCAnYScsICd2JywgJ2cnLCAndScsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICduJywgJ2EnLCAndicsICdnJywgJ3UnLCAnYicsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ24nLCAnYScsICd2JywgJ2cnLCAndycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbicsICdhJywgJ3YnLCAnZycsICd3JywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAnbicsICdvJywgJ3InLCAnbScsCisgICdhJywgJ20nLCAndCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICduJywgJ28nLCAncicsCisgICdtJywgJ2EnLCAnbScsICd0JywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICduJywgJ28nLCAncicsICdtJywgJ2EnLCAnbScsICd0JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ24nLCAnbycsICdyJywgJ20nLCAnYScsICdtJywgJ3QnLCAndycsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ24nLCAnbycsICd0JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICduJywgJ28nLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAnbycsICdyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAncCcsICdhJywgJ2MnLCAnaycsICdlJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ3AnLCAnYScsICdjJywgJ2snLCAnZScsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsICdhJywgJ2MnLCAnaycsICdlJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3AnLCAnYScsICdjJywgJ2snLCAnZScsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsICdhJywgJ2MnLCAnaycsICdoJywgJ2InLCAnXycsCisgICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsICdhJywgJ2MnLCAnaycsCisgICdoJywgJ2InLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3AnLCAnYScsICdjJywgJ2snLCAnaCcsICd1JywgJ2InLCAnXycsICdzJywgJ2EnLCAndCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsICdhJywgJ2MnLCAnaycsICdoJywgJ3UnLCAnYicsCisgICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAncCcsICdhJywgJ2MnLCAnaycsICdvJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ3AnLCAnYScsICdjJywgJ2snLCAnbycsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsICdhJywgJ2MnLCAnaycsICdvJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3AnLCAnYScsICdjJywgJ2snLCAnbycsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsICdhJywgJ2MnLCAnaycsICd3JywgJ2gnLCAnXycsCisgICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsICdhJywgJ2MnLCAnaycsCisgICd3JywgJ2gnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3AnLCAnYScsICdjJywgJ2snLCAndycsICd1JywgJ2gnLCAnXycsICdzJywgJ2EnLCAndCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsICdhJywgJ2MnLCAnaycsICd3JywgJ3UnLCAnaCcsCisgICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAncCcsICdvJywgJ3AnLCAnYycsICdvJywgJ3UnLCAnbicsICd0JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3AnLCAnbycsICdwJywgJ2MnLCAnbycsICd1JywgJ24nLCAndCcsICdoJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsICdyJywgJ2UnLCAnZicsCisgICdpJywgJ3gnLCAncScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdwJywgJ3InLCAnZScsCisgICdmJywgJ2knLCAneCcsICdxJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdwJywgJ3InLCAnZScsICdmJywgJ2knLCAneCcsICdxJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3AnLCAncicsICdlJywgJ2YnLCAnaScsICd4JywgJ3EnLCAnaCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3AnLCAncicsICdlJywgJ2YnLCAnaScsCisgICd4JywgJ3EnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncCcsICdyJywgJ2UnLCAnZicsCisgICdpJywgJ3gnLCAncScsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAncicsICdkJywgJ2UnLCAnbCcsICd0JywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ3InLCAnZCcsICdlJywgJ2wnLCAndCcsICdhJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAnYicsICdfJywgJ3InLCAndCcsCisgICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsCisgICdiJywgJ18nLCAncicsICd0JywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdiJywgJ18nLCAncicsICd0JywgJ3QnLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsCisgICdiJywgJ3UnLCAnYicsICdfJywgJ3InLCAndCcsICd0JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsCiAgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCiAgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsCi0gICdzJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsCi0gICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnaScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAncycsCi0gICdpJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsCisgICdzJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCiAgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsCi0gICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAncycsICdpJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAncycsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdzJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsCisgICd5JywgJ2InLCAndScsICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsCisgICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnaScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCiAgICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnaScsICdfJywgJ2EnLCAnYycsCi0gICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsCisgICdzJywgJ2knLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAndicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAncycsICd2JywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsCisgICdiJywgJ3UnLCAncycsICd2JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAndicsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsCisgICdiJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAnYicsCisgICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCiAgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsCi0gICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAncycsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdyJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdzJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdzJywgJ3YnLCAnXycsCi0gICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsCi0gICdiJywgJ3UnLCAncycsICd2JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ2InLCAndicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsICdiJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ2InLCAndicsCi0gICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsCi0gICd5JywgJ2InLCAndicsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAndScsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsICd1JywgJ2InLCAnXycsCi0gICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsCi0gICd1JywgJ2InLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAndScsICdiJywgJ18nLCAncicsICd0JywgJ3QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAndScsICdiJywgJ18nLCAncicsCi0gICd0JywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdyJywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsICdfJywgJ3InLCAndCcsICd0JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAndScsICdiJywgJ18nLCAncicsCi0gICd0JywgJ3QnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAndScsICdiJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAndScsICdiJywgJ2knLCAnXycsICcxJywgJzInLCAnOCcsCisgICdtJywgJ3AnLCAneScsICdiJywgJ3YnLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsICdiJywgJ3YnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAndScsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsCisgICdwJywgJ3knLCAndScsICdiJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAndScsICdiJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsCiAgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCiAgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsCi0gICdpJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsCi0gICdwJywgJ3knLCAndScsICdiJywgJ2knLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAndScsICdiJywgJ3YnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAndScsICdiJywgJ3YnLCAnXycsCisgICdfJywgJ3InLCAndCcsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsCisgICd5JywgJ3UnLCAnYicsICdfJywgJ3InLCAndCcsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsICd1JywgJ2InLCAnXycsICdyJywgJ3QnLCAndCcsCisgICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsCisgICd5JywgJ3UnLCAnYicsICdfJywgJ3InLCAndCcsICd0JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsCisgICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsCisgICdpJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsCisgICdtJywgJ3AnLCAneScsICd1JywgJ2InLCAnaScsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsICdpJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsCiAgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsCi0gICd5JywgJ3UnLCAnYicsICd2JywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ3InLCAnbScsICdwJywgJ3knLCAndScsICdiJywgJ3YnLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsCi0gICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbycsICdyJywgJ1wwMDAnLCAnXycsCisgICd5JywgJ3UnLCAnYicsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsCisgICd5JywgJ3UnLCAnYicsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAncicsICdtJywgJ3AnLCAneScsICd1JywgJ2InLCAndicsICdfJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ28nLCAncicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdoJywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdoJywgJ2InLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ28nLCAndScsCi0gICduJywgJ2QnLCAnaCcsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbycsCi0gICd1JywgJ24nLCAnZCcsICdoJywgJ3UnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICd1JywgJ2gnLCAndScsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAndScsICdoJywgJ3UnLCAnYicsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbycsCi0gICd1JywgJ24nLCAnZCcsICd1JywgJ3cnLCAndScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ20nLCAncCcsICd5JywgJ3UnLCAnYicsICd2JywgJ18nLCAnYScsCisgICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdyJywgJ28nLCAndScsICduJywgJ2QnLCAndScsICd3JywgJ3UnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICd3JywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICd3JywgJ2gnLCAnXycsCisgICdyJywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdvJywgJ3InLCAnXycsCiAgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ28nLCAndScsCi0gICduJywgJ2QnLCAndycsICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbycsCi0gICd1JywgJ24nLCAnZCcsICd3JywgJ3UnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAncycsICdhJywgJ2QnLCAndScsICdiJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAncycsICdhJywgJ2QnLCAndScsICdiJywgJ2knLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ3MnLCAnYScsICdkJywgJ3UnLCAnYicsCi0gICdpJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAncycsCi0gICdhJywgJ2QnLCAndScsICdiJywgJ2knLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnYScsICd0JywgJ2gnLCAndScsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2EnLCAndCcsICdoJywgJ3UnLCAnYicsICdfJywgJzEnLCAnMicsCi0gICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnYScsICd0JywgJ3UnLCAndycsCi0gICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnYScsICd0JywgJ3UnLCAndycsCi0gICd1JywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdzJywgJ2EnLCAndCcsICd3JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnYScsCi0gICd0JywgJ3cnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ3MnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdiJywgJ18nLCAnMScsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ28nLCAndCcsCisgICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdyJywgJ28nLCAndCcsICdyJywgJ18nLCAnMScsCiAgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdjJywgJ2EnLCAndCcsCi0gICd0JywgJ2UnLCAncicsICdtJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnYycsCi0gICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAnbScsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdjJywgJ2EnLCAndCcsICd0JywgJ2UnLCAncicsICdtJywgJ2gnLCAnXycsCi0gICdhJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdjJywgJ2EnLCAndCcsCi0gICd0JywgJ2UnLCAncicsICdtJywgJ2gnLCAnXycsICdhJywgJ2QnLCAnZCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAnbScsCi0gICdoJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsCi0gICdlJywgJ3InLCAnbScsICdoJywgJ3EnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ20nLCAnaCcsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ20nLCAnaCcsCi0gICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsCi0gICdjJywgJ2EnLCAndCcsICd0JywgJ2UnLCAncicsICdtJywgJ2gnLCAndycsICdfJywgJ2EnLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ20nLCAnaCcsCi0gICd3JywgJ18nLCAnYScsICdkJywgJ2QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ20nLCAnaCcsICd3JywgJ3EnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAnbScsCi0gICdoJywgJ3cnLCAncScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdvJywgJ3UnLCAnbicsCisgICdkJywgJ2gnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdvJywgJ3UnLCAnbicsCisgICdkJywgJ2gnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAnbScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICd2JywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdoJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ2gnLCAndScsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ3UnLCAnaCcsCisgICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsCisgICd1JywgJ2gnLCAndScsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ3UnLCAndycsICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICd1JywgJ3cnLCAndScsICdoJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdvJywgJ3UnLCAnbicsCisgICdkJywgJ3cnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdvJywgJ3UnLCAnbicsCisgICdkJywgJ3cnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICd3JywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ3cnLCAndScsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdzJywgJ2EnLCAnZCcsICd1JywgJ2InLCAnaScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncicsICdzJywgJ2EnLCAnZCcsICd1JywgJ2InLCAnaScsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3InLCAncycsCisgICdhJywgJ2QnLCAndScsICdiJywgJ2knLCAnXycsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAncicsICdzJywgJ2EnLCAnZCcsICd1JywgJ2InLCAnaScsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdhJywgJ3QnLCAnZCcsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2EnLCAndCcsICdkJywgJ3cnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2EnLCAndCcsCisgICdoJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdhJywgJ3QnLCAnaCcsCisgICd1JywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdzJywgJ2EnLCAndCcsICd1JywgJ3cnLCAndScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdzJywgJ2EnLCAndCcsICd1JywgJ3cnLCAndScsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdhJywgJ3QnLCAndycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ20nLCAndycsICdfJywgJzEnLCAnMicsCisgICc2JywgJ18nLCAndicsICdzJywgJ2EnLCAndCcsICd3JywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ3MnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAnbScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ20nLCAnaCcsICdfJywgJzEnLCAnMicsCiAgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCiAgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsCi0gICdlJywgJ3InLCAnbScsICd3JywgJ18nLCAnYScsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdlJywgJ3InLCAnbScsICdoJywgJ18nLCAnYScsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAnbScsICd3JywgJ18nLCAnYScsICdkJywgJ2QnLCAnXycsCisgICd2JywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAnbScsICdoJywgJ18nLCAnYScsICdkJywgJ2QnLCAnXycsCiAgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2MnLCAnYScsCi0gICd0JywgJ3QnLCAnZScsICdyJywgJ20nLCAndycsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICd0JywgJ3QnLCAnZScsICdyJywgJ20nLCAnaCcsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ20nLCAndycsICdxJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ20nLCAnaCcsICdxJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdzJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdzJywgJ2gnLCAndScsICdmJywgJ2UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAncycsICdoJywgJ3UnLCAnZicsICdlJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdjJywgJ2EnLCAndCcsICd0JywgJ2UnLCAncicsCisgICdtJywgJ2gnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdjJywgJ2EnLCAndCcsCisgICd0JywgJ2UnLCAncicsICdtJywgJ2gnLCAndycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAnbScsICdoJywgJ3cnLCAnXycsCisgICdhJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdjJywgJ2EnLCAndCcsCisgICd0JywgJ2UnLCAncicsICdtJywgJ2gnLCAndycsICdfJywgJ2EnLCAnZCcsICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdjJywgJ2EnLCAndCcsICd0JywgJ2UnLCAncicsCisgICdtJywgJ2gnLCAndycsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2MnLCAnYScsCisgICd0JywgJ3QnLCAnZScsICdyJywgJ20nLCAnaCcsICd3JywgJ3EnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2gnLCAndScsICdmJywgJ2YnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ20nLCAndycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdjJywgJ2EnLCAndCcsICd0JywgJ2UnLCAncicsCisgICdtJywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ20nLCAndycsICdfJywgJ2EnLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ20nLCAndycsCisgICdfJywgJ2EnLCAnZCcsICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAncycsICdjJywgJ2EnLCAndCcsICd0JywgJ2UnLCAncicsICdtJywgJ3cnLCAncScsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdoJywgJ3UnLCAnZicsICdmJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2gnLCAndScsICdmJywgJ2YnLCAnZScsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2gnLCAndScsICdmJywgJ2YnLCAnZScsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdjJywgJ2EnLCAndCcsICd0JywgJ2UnLCAncicsICdtJywgJ3cnLCAncScsCisgICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdoJywgJ3UnLCAnZicsICdlJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnZScsICdoJywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdoJywgJ3UnLCAnZicsCisgICdmJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnZicsCiAgICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCiAgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsCi0gICdoJywgJ3UnLCAnZicsICdmJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnaCcsCi0gICd1JywgJ2YnLCAnZicsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAncycsICdoJywgJ3UnLCAnZicsICdmJywgJ28nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAncycsICdoJywgJ3UnLCAnZicsICdmJywgJ28nLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdoJywgJ3UnLCAnZicsICdmJywgJ2UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsCisgICdoJywgJ3UnLCAnZicsICdmJywgJ2UnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnZicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdzJywgJ2gnLCAndScsICdmJywgJ2YnLCAnaCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnZicsICd2JywgJ2QnLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdoJywgJ3UnLCAnZicsICdmJywgJ3YnLCAnZCcsCi0gICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsCi0gICdoJywgJ3UnLCAnZicsICdvJywgJ2UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsCi0gICdoJywgJ3UnLCAnZicsICdvJywgJ2UnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnbycsICdlJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnbycsICdlJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2gnLCAndScsICdmJywgJ28nLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICdoJywgJ3UnLCAnZicsICdvJywgJ2gnLCAnXycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnZicsICdvJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnZicsICdvJywgJ2InLCAnXycsCiAgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICdiJywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnYicsCi0gICdfJywgJ2QnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnYicsCi0gICdfJywgJ2QnLCAndicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ3MnLCAndScsICdiJywgJ2InLCAnbicsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdzJywgJ3UnLCAnYicsICdiJywgJ24nLCAncScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2gnLCAndScsCisgICdmJywgJ2YnLCAndicsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnaCcsCisgICd1JywgJ2YnLCAnZicsICd2JywgJ2QnLCAnZCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ2InLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnbycsICdlJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnbycsICdlJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2gnLCAndScsICdmJywgJ28nLCAnZScsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ2gnLCAndScsICdmJywgJ28nLCAnZScsCisgICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsCisgICdoJywgJ3UnLCAnZicsICdvJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAnaCcsCisgICd1JywgJ2YnLCAnbycsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnYicsICdxJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsCisgICd1JywgJ2InLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ3MnLCAndScsICdiJywgJ2InLCAnXycsICdkJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ3MnLCAndScsICdiJywgJ2InLCAnXycsICdkJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICdiJywgJ24nLCAncScsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnYicsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnYicsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnYicsICduJywgJ3EnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICdiJywgJ3EnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ2InLCAncScsICdfJywgJzEnLCAnMicsCiAgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCiAgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ2InLCAncycsCi0gICdhJywgJ3QnLCAnXycsICdkJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsCi0gICdiJywgJ2InLCAncycsICdhJywgJ3QnLCAnXycsICdkJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAndicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICdjJywgJ2EnLCAncicsICdyJywgJ3knLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICd2JywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ2MnLCAnYScsICdyJywgJ3InLCAneScsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsCi0gICdiJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ2gnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsCi0gICdoJywgJ18nLCAnZCcsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsCi0gICdoJywgJ18nLCAnZCcsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnaCcsICduJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ3MnLCAndScsICdiJywgJ2gnLCAnbicsICdxJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnaCcsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ2InLCAncycsCisgICdhJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdzJywgJ3UnLCAnYicsICdiJywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICdoJywgJ3EnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICdoJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICdoJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsCisgICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICdiJywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsICd2JywgJ18nLCAnMScsCiAgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCiAgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnaCcsCi0gICdzJywgJ2EnLCAndCcsICdfJywgJ2QnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnaCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ2gnLCAnXycsCisgICdkJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ2gnLCAnXycsCisgICdkJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdzJywgJ3UnLCAnYicsICdoJywgJ24nLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCiAgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsCi0gICd1JywgJ2InLCAnaCcsICdzJywgJ2EnLCAndCcsICdfJywgJ2QnLCAndicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ2gnLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnaCcsICd3JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndScsICdiJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAnYicsICdoJywgJ18nLCAnMScsCi0gICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndScsCi0gICdiJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsCi0gICd1JywgJ2InLCAncycsICdhJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICd1JywgJ2InLCAnaCcsICduJywgJ3EnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd1JywgJ2InLCAncycsICdhJywgJ3QnLCAnXycsICdkJywgJ3YnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAnYicsICdzJywgJ2EnLCAndCcsCi0gICdfJywgJ2QnLCAndicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICdoJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAnYicsICd1JywgJ2InLCAnYicsICdfJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd1JywgJ2InLCAndScsICdiJywgJ2InLCAnXycsCi0gICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAnaCcsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndScsICdoJywgJ3MnLCAnYScsICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndScsICdoJywgJ3MnLCAnYScsCisgICd2JywgJ3MnLCAndScsICdiJywgJ2gnLCAncScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ2gnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ2gnLCAncycsICdhJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICdoJywgJ3MnLCAnYScsCiAgICd0JywgJ18nLCAnZCcsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsCi0gICd1JywgJ2gnLCAncycsICdhJywgJ3QnLCAnXycsICdkJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd1JywgJ2gnLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdoJywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndScsICdoJywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnaCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICdoJywgJ3cnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd1JywgJ2InLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndScsICdiJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsCiAgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd1JywgJ3cnLCAncycsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd1JywgJ2InLCAncycsCiAgICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAndycsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAnYicsCiAgICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCi0gICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAndycsICdzJywgJ2EnLCAndCcsICdfJywgJ2QnLCAndicsICdcMDAwJywgJ18nLCAnXycsCisgICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAnYicsICdzJywgJ2EnLCAndCcsICdfJywgJ2QnLCAndicsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndScsICd3JywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndScsICdiJywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsCiAgICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCiAgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsCi0gICd1JywgJ2InLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndycsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsCi0gICdiJywgJ3cnLCAnXycsICdkJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsCi0gICdiJywgJ3cnLCAnXycsICdkJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCi0gICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd3JywgJ24nLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndycsICduJywgJ3EnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd3JywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2InLCAndScsICdiJywgJ3UnLCAnYicsICdiJywgJ18nLCAncycsICdhJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3cnLCAncScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAnYicsICd1JywgJ2InLCAnYicsICdfJywgJ3MnLCAnYScsCisgICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsCisgICd1JywgJ2InLCAndScsICdoJywgJ3MnLCAnYScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICdzJywgJ3UnLCAnYicsICd1JywgJ2gnLCAncycsICdhJywgJ3QnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd1JywgJ2gnLCAncycsICdhJywgJ3QnLCAnXycsCisgICdkJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAnaCcsCisgICdzJywgJ2EnLCAndCcsICdfJywgJ2QnLCAndicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAnaCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd1JywgJ2gnLCAndycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3cnLCAncycsICdhJywgJ3QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3cnLCAncycsICdhJywgJ3QnLCAnXycsCisgICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAndycsICdzJywgJ2EnLCAndCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndScsICd3JywgJ3MnLCAnYScsCisgICd0JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsCisgICd1JywgJ2InLCAndScsICd3JywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd1JywgJ3cnLCAncycsICdhJywgJ3QnLCAnXycsICdkJywgJ3YnLCAnXycsCiAgICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsCi0gICd3JywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd3JywgJ18nLCAnMScsCisgICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndycsCisgICdfJywgJ2QnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndycsCisgICdfJywgJ2QnLCAndicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ3MnLCAndScsICdiJywgJ3cnLCAnbicsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICdzJywgJ3UnLCAnYicsICd3JywgJ3MnLCAnYScsICd0JywgJ18nLCAnZCcsICd2JywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd3JywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICdzJywgJ3UnLCAnYicsICd3JywgJ24nLCAncScsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3cnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndycsICdxJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd3JywgJ2EnLCAncCcsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3QnLCAnbScsICdwJywgJ3knLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndycsICdzJywgJ2EnLCAndCcsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAndCcsICdtJywgJ3AnLCAneScsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndycsICdzJywgJ2EnLCAndCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3cnLCAncycsCisgICdhJywgJ3QnLCAnXycsICdkJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3MnLCAndScsCisgICdiJywgJ3cnLCAncycsICdhJywgJ3QnLCAnXycsICdkJywgJ3YnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICdzJywgJ3cnLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICdzJywgJ3cnLCAnYScsICdwJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAndCcsICdtJywgJ3AnLCAneScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICd0JywgJ20nLCAncCcsICd5JywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICd0JywgJ20nLCAncCcsICd5JywgJ2InLCAnXycsICdhJywgJ2MnLCAnYycsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCiAgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAndCcsICdtJywgJ3AnLCAneScsICdiJywgJ18nLCAnYScsCi0gICdjJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCi0gICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3QnLCAnbScsICdwJywgJ3knLCAnYicsCisgICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICd0JywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICd0JywgJ20nLCAncCcsICd5JywgJ2InLCAndScsICdzJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAndCcsICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAncycsICdfJywgJ2EnLCAnYycsCisgICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICd0JywgJ20nLCAncCcsICd5JywgJ2InLCAndScsCisgICdzJywgJ18nLCAnYScsICdjJywgJ2MnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICd0JywgJ20nLCAncCcsICd5JywgJ2gnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAndCcsICdtJywgJ3AnLCAneScsICdoJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICd0JywgJ20nLCAncCcsICd5JywgJ2gnLCAnYicsICdfJywgJ2EnLCAnYycsCisgICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICd0JywgJ20nLCAncCcsICd5JywgJ2gnLCAnYicsCiAgICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAndCcsICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCi0gICdfJywgJ3YnLCAndCcsICdtJywgJ3AnLCAneScsICdiJywgJ3UnLCAncycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3QnLCAnbScsICdwJywgJ3knLCAnYicsICd1JywgJ3MnLCAnXycsCi0gICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAndCcsICdtJywgJ3AnLCAneScsCi0gICdiJywgJ3UnLCAncycsICdfJywgJ2EnLCAnYycsICdjJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAndCcsICdtJywgJ3AnLCAneScsICdoJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3QnLCAnbScsICdwJywgJ3knLCAnaCcsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAndCcsICdtJywgJ3AnLCAneScsICdoJywgJ2InLCAnXycsCi0gICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCi0gICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAndCcsICdtJywgJ3AnLCAneScsCi0gICdoJywgJ2InLCAnXycsICdhJywgJ2MnLCAnYycsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3UnLCAnbicsICdwJywgJ2EnLCAnYycsICdrJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3UnLCAnbicsICdwJywgJ2EnLCAnYycsICdrJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsCi0gICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICd1JywgJ24nLCAncCcsICdhJywgJ2MnLCAnaycsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICd1JywgJ24nLCAncCcsICdhJywgJ2MnLCAnaycsCi0gICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAndScsCi0gICduJywgJ3AnLCAnYScsICdjJywgJ2snLCAnbycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdfJywgJ3YnLCAndCcsICdyJywgJ2EnLCAnbicsICcyJywgJ3gnLCAnMicsICdfJywgJ20nLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCisgICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICd0JywgJ3InLCAnYScsICduJywgJzInLCAneCcsICcyJywgJ18nLCAnbScsCisgICdhJywgJ3AnLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCi0gICd1JywgJ24nLCAncCcsICdhJywgJ2MnLCAnaycsICdvJywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICd1JywgJ24nLCAncCcsICdhJywgJ2MnLCAnaycsICdvJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsCi0gICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3UnLCAnbicsICdwJywgJ2EnLCAnYycsICdrJywgJ28nLCAnaCcsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3UnLCAnbicsCi0gICdwJywgJ2EnLCAnYycsICdrJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAndScsCi0gICduJywgJ3AnLCAnYScsICdjJywgJ2snLCAndScsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICd1JywgJ24nLCAncCcsICdhJywgJ2MnLCAnaycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICd1JywgJ24nLCAncCcsICdhJywgJ2MnLCAnaycsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCi0gICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAndScsICduJywgJ3AnLCAnYScsICdjJywgJ2snLCAndScsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsCi0gICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICd1JywgJ24nLCAncCcsICdhJywgJ2MnLCAnaycsICd1JywgJ2gnLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICd4JywgJ28nLCAncicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCi0gICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAneCcsICdvJywgJ3InLCAnXycsICcxJywgJzInLCAnOCcsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAndScsICduJywgJ3AnLCAnYScsICdjJywgJ2snLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAndScsICduJywgJ3AnLCAnYScsICdjJywgJ2snLCAnaCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3UnLCAnbicsICdwJywgJ2EnLCAnYycsCisgICdrJywgJ28nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAndScsICduJywgJ3AnLCAnYScsCisgICdjJywgJ2snLCAnbycsICdiJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAndScsICduJywgJ3AnLCAnYScsICdjJywgJ2snLCAnbycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsCisgICc2JywgJ18nLCAndicsICd1JywgJ24nLCAncCcsICdhJywgJ2MnLCAnaycsICdvJywgJ2gnLCAnXycsICcxJywgJzInLCAnOCcsCiAgICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICd6JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsICd1JywgJ24nLCAncCcsICdhJywgJ2MnLCAnaycsCisgICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3UnLCAnbicsICdwJywgJ2EnLCAnYycsCisgICdrJywgJ3UnLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsCisgICd2JywgJ3UnLCAnbicsICdwJywgJ2EnLCAnYycsICdrJywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsCisgICdfJywgJ3YnLCAndScsICduJywgJ3AnLCAnYScsICdjJywgJ2snLCAndScsICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsCisgICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAneCcsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3onLCAnYicsICdfJywgJzEnLCAnMicsICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsCi0gICdWJywgJzYnLCAnXycsICd2JywgJ3onLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAneicsCi0gICdoJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1knLCAnMicsICdfJywgJ2QnLCAnYycsCi0gICdjJywgJ2wnLCAnZScsICdhJywgJ24nLCAnYScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1knLCAnMicsICdfJywgJ2QnLCAnYycsCi0gICdjJywgJ2wnLCAnZScsICdhJywgJ24nLCAnaScsICduJywgJ3YnLCAnYScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1knLCAnMicsCi0gICdfJywgJ2QnLCAnYycsICdpJywgJ24nLCAndicsICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnWScsICcyJywgJ18nLCAnZCcsCi0gICdjJywgJ3onLCAnZScsICdyJywgJ28nLCAnYScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1knLCAnNCcsICdfJywgJ2wnLCAnMicsCi0gICdmJywgJ2UnLCAndCcsICdjJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdZJywgJzUnLCAnXycsICdsJywgJzInLCAnZicsCi0gICdlJywgJ3QnLCAnYycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdjJywgJ2knLCAncicsICdjJywgJ18nLCAnbCcsICdkJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2MnLCAnaScsICdyJywgJ2MnLCAnXycsICdsJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYycsICdpJywgJ3InLCAnYycsICdfJywgJ2wnLCAnZCcsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdjJywgJ2knLCAncicsCi0gICdjJywgJ18nLCAnbCcsICdkJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYycsICdpJywgJ3InLCAnYycsICdfJywgJ2wnLCAnZCcsICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2MnLCAnaScsICdyJywgJ2MnLCAnXycsICdsJywgJ2QnLCAndycsCisgICdWJywgJzYnLCAnXycsICd2JywgJ3gnLCAnbycsICdyJywgJ18nLCAnMScsICcyJywgJzgnLCAnQicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsCisgICdfJywgJ1YnLCAnNicsICdfJywgJ3YnLCAneicsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICd6JywgJ2InLCAnXycsICcxJywgJzInLCAnOCcsICdCJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnVicsICc2JywgJ18nLCAndicsCisgICd6JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdWJywgJzYnLCAnXycsICd2JywgJ3onLCAnaCcsICdfJywgJzEnLCAnMicsCisgICc4JywgJ0InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdZJywgJzInLCAnXycsICdkJywgJ2MnLCAnYycsICdsJywgJ2UnLCAnYScsCisgICduJywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdZJywgJzInLCAnXycsICdkJywgJ2MnLCAnYycsICdsJywgJ2UnLCAnYScsCisgICduJywgJ2knLCAnbicsICd2JywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ0gnLCAnRScsICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdZJywgJzInLCAnXycsICdkJywgJ2MnLCAnaScsCisgICduJywgJ3YnLCAnYScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ1knLCAnMicsICdfJywgJ2QnLCAnYycsICd6JywgJ2UnLCAncicsCisgICdvJywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ0gnLCAnRScsCisgICdYJywgJ0EnLCAnRycsICdPJywgJ04nLCAnXycsICdZJywgJzQnLCAnXycsICdsJywgJzInLCAnZicsICdlJywgJ3QnLCAnYycsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCisgICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAnWScsICc1JywgJ18nLCAnbCcsICcyJywgJ2YnLCAnZScsICd0JywgJ2MnLCAnaCcsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYycsICdpJywgJ3InLCAnYycsCi0gICdfJywgJ3MnLCAndCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdjJywgJ2knLCAncicsICdjJywgJ18nLCAncycsICd0JywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2MnLCAnaScsICdyJywgJ2MnLCAnXycsICdzJywgJ3QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYycsICdpJywgJ3InLCAnYycsICdfJywgJ3MnLCAndCcsCi0gICdoJywgJ2gnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYycsCi0gICdpJywgJ3InLCAnYycsICdfJywgJ3MnLCAndCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdfJywgJ20nLCAnbScsICcyJywgJzUnLCAnNicsICdpJywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsCi0gICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdIJywgJ0UnLCAnWCcsCi0gICdBJywgJ0cnLCAnTycsICdOJywgJ18nLCAncCcsICdyJywgJ2UnLCAnZicsICdlJywgJ3QnLCAnYycsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYScsCi0gICdiJywgJ3MnLCAncScsICdfJywgJ3MnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdhJywgJ2InLCAncycsICdxJywgJ18nLCAncycsCi0gICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdpJywgJ3AnLCAncycsICdfJywgJ2EnLCAnYicsICdzJywgJ3EnLCAnXycsICdzJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ2QnLCAnZCcsCi0gICdfJywgJ2EnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAnZCcsICdkJywgJ18nLCAnYScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAnXycsCi0gICdhJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdhJywgJ2QnLCAnZCcsICdfJywgJ2EnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYScsICdkJywgJ2QnLCAncScsCi0gICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdpJywgJ3AnLCAncycsICdfJywgJ2EnLCAnZCcsICdkJywgJ3EnLCAnXycsICdzJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYScsCi0gICdkJywgJ2QnLCAncScsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYScsICdkJywgJ2QnLCAncScsICdoJywgJ18nLCAncCcsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCi0gICdzJywgJ18nLCAnYScsICdkJywgJ2QnLCAncScsICdoJywgJ18nLCAncicsICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2EnLCAnZCcsCi0gICdkJywgJ3EnLCAnaCcsICdfJywgJ3InLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYScsICdkJywgJ2QnLCAncScsICdoJywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdhJywgJ2QnLCAnZCcsICdzJywgJ18nLCAnYScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAncycsICdfJywgJ2EnLCAnXycsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnXycsICdhJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ2QnLCAnZCcsICdzJywgJ18nLCAnYScsCi0gICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAncycsICdfJywgJ3MnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnXycsCi0gICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdhJywgJ2QnLCAnZCcsICdzJywgJ18nLCAncycsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAncycsCi0gICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnXycsICd1JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ2QnLCAnZCcsCi0gICdzJywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAncycsICdfJywgJ3UnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAnZCcsCi0gICdkJywgJ3MnLCAnXycsICd1JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2EnLCAnZCcsCi0gICdkJywgJ3UnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdhJywgJ2QnLCAnZCcsICd1JywgJ18nLCAncScsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYScsCi0gICdkJywgJ2QnLCAndScsICdfJywgJ3MnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdhJywgJ2QnLCAnZCcsICd1JywgJ18nLCAncycsCi0gICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdpJywgJ3AnLCAncycsICdfJywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnaCcsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2EnLCAnZCcsCi0gICdkJywgJ3UnLCAnaCcsICdfJywgJ3InLCAnXycsICdxJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAndicsICdfJywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsCi0gICdkJywgJ2QnLCAndicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAndicsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAndicsCi0gICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAndicsICdpJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ2QnLCAnZCcsICd2JywgJ2knLCAnXycsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2EnLCAnZCcsICdkJywgJ3YnLCAnaScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAndicsICdpJywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsCi0gICdfJywgJ2EnLCAnZCcsICdkJywgJ3cnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ24nLCAnZCcsICdfJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICduJywgJ2QnLCAnaScsCi0gICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCi0gICdwJywgJ3MnLCAnXycsICdhJywgJ3AnLCAncCcsICdlJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ3MnLCAndScsICdiJywgJ18nLCAncycsCi0gICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnYScsICdzJywgJ3UnLCAnYicsICdfJywgJ3MnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAncycsICd1JywgJ2InLCAnXycsCi0gICdzJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdhJywgJ3MnLCAndScsICdiJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdzJywgJ3UnLCAnYicsCi0gICdfJywgJ3UnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAncycsICd1JywgJ2InLCAnXycsICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ3MnLCAndScsCi0gICdiJywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdzJywgJ3UnLCAnYicsICdfJywgJ3UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAndicsCi0gICdlJywgJ18nLCAncycsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICd2JywgJ2UnLCAnXycsICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ3YnLCAnZScsCi0gICdfJywgJ3MnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAndicsICdlJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICd2JywgJ2UnLCAnXycsCi0gICd1JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdhJywgJ3YnLCAnZScsICdfJywgJ3UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAndicsICdlJywgJ18nLCAndScsCi0gICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnYScsICd2JywgJ2UnLCAnXycsICd1JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ3YnLCAnZScsICdyJywgJ18nLCAncycsCi0gICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnYScsICd2JywgJ2UnLCAncicsICdfJywgJ3MnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAndicsICdlJywgJ3InLCAnXycsCi0gICdzJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdhJywgJ3YnLCAnZScsICdyJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICd2JywgJ2UnLCAncicsCi0gICdfJywgJ3UnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAndicsICdlJywgJ3InLCAnXycsICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ3YnLCAnZScsCi0gICdyJywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICd2JywgJ2UnLCAncicsICdfJywgJ3UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYicsCi0gICdhJywgJ2wnLCAnaScsICdnJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdjJywgJ2wnLCAncicsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdjJywgJ2wnLCAncicsCi0gICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnYicsICdjJywgJ2wnLCAncicsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdjJywgJ2wnLCAncicsICdfJywgJ3cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsCi0gICdjJywgJ2wnLCAncicsICdpJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ2MnLCAnbCcsICdyJywgJ2knLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnYycsCi0gICdsJywgJ3InLCAnaScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdjJywgJ2wnLCAncicsICdpJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ2knLCAnbicsCi0gICdzJywgJ2wnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnaScsICduJywgJ3MnLCAnbCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdpJywgJ24nLCAncycsCi0gICdsJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdiJywgJ2knLCAnbicsICdzJywgJ2wnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnaScsICduJywgJ3MnLCAnbCcsCi0gICdpJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdiJywgJ2knLCAnbicsICdzJywgJ2wnLCAnaScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdpJywgJ24nLCAncycsCi0gICdsJywgJ2knLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnaScsICduJywgJ3MnLCAnbCcsICdpJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ2knLCAnbicsCi0gICdzJywgJ3InLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnaScsICduJywgJ3MnLCAncicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdpJywgJ24nLCAncycsCi0gICdyJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdiJywgJ2knLCAnbicsICdzJywgJ3InLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnaScsICduJywgJ3MnLCAncicsCi0gICdpJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdiJywgJ2knLCAnbicsICdzJywgJ3InLCAnaScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdpJywgJ24nLCAncycsCi0gICdyJywgJ2knLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnaScsICduJywgJ3MnLCAncicsICdpJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2InLCAnaScsCi0gICd0JywgJ3InLCAnZScsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbScsICduJywgJ3onLCAnXycsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbScsICduJywgJ3onLCAnaScsCi0gICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnYicsICdtJywgJ3onLCAnXycsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbScsICd6JywgJ2knLCAnXycsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbicsCi0gICdlJywgJ2cnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbicsICdlJywgJ2cnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbicsICdlJywgJ2cnLCAnXycsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2InLCAnbicsICdlJywgJ2cnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbicsICdlJywgJ2cnLCAnaScsICdfJywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsCi0gICduJywgJ2UnLCAnZycsICdpJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ24nLCAnZScsICdnJywgJ2knLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbicsCi0gICdlJywgJ2cnLCAnaScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICduJywgJ3onLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbicsICd6JywgJ18nLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdiJywgJ24nLCAneicsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICduJywgJ3onLCAnXycsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbicsICd6JywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsCi0gICdfJywgJ2InLCAncCcsICdvJywgJ3MnLCAnZycsICdlJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ3MnLCAnZScsICdsJywgJ18nLCAndicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdiJywgJ3MnLCAnZScsICdsJywgJ2knLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAncycsICdlJywgJ3QnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAncycsCi0gICdlJywgJ3QnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAncycsICdlJywgJ3QnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAncycsICdlJywgJ3QnLCAnXycsCi0gICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2InLCAncycsICdlJywgJ3QnLCAnaScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdzJywgJ2UnLCAndCcsICdpJywgJ18nLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdiJywgJ3MnLCAnZScsICd0JywgJ2knLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAncycsICdlJywgJ3QnLCAnaScsICdfJywgJ3cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsCi0gICd6JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdiJywgJ3onLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAneicsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICd6JywgJ18nLCAndicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdiJywgJ3onLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnZScsICdxJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2UnLCAncScsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsCi0gICdlJywgJ3EnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnZScsICdxJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2UnLCAncScsICdpJywgJ18nLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdjJywgJ2UnLCAncScsICdpJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2UnLCAncScsICdpJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2UnLCAncScsCi0gICdpJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdjJywgJ2YnLCAnYycsICdtJywgJ3MnLCAnYScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2wnLCAnZScsICdfJywgJ3MnLCAnXycsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2MnLCAnbCcsICdlJywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsICdsJywgJ2UnLCAnXycsICdzJywgJ18nLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdjJywgJ2wnLCAnZScsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsICdlJywgJ18nLCAndScsICdfJywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsCi0gICdsJywgJ2UnLCAnXycsICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2wnLCAnZScsICdfJywgJ3UnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsCi0gICdlJywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsICdsJywgJ2UnLCAnaScsICdfJywgJ3MnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsCi0gICdlJywgJ2knLCAnXycsICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2wnLCAnZScsICdpJywgJ18nLCAncycsICdfJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsCi0gICdsJywgJ2UnLCAnaScsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsICdlJywgJ2knLCAnXycsICd1JywgJ18nLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdjJywgJ2wnLCAnZScsICdpJywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsICdsJywgJ2UnLCAnaScsICdfJywgJ3UnLCAnXycsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2MnLCAnbCcsICdlJywgJ2knLCAnXycsICd1JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2wnLCAndCcsICdfJywgJ3MnLCAnXycsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2MnLCAnbCcsICd0JywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsICdsJywgJ3QnLCAnXycsICdzJywgJ18nLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdjJywgJ2wnLCAndCcsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsICd0JywgJ18nLCAndScsICdfJywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsCi0gICdsJywgJ3QnLCAnXycsICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2wnLCAndCcsICdfJywgJ3UnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsCi0gICd0JywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsICdsJywgJ3QnLCAnaScsICdfJywgJ3MnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsCi0gICd0JywgJ2knLCAnXycsICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2wnLCAndCcsICdpJywgJ18nLCAncycsICdfJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsCi0gICdsJywgJ3QnLCAnaScsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsICd0JywgJ2knLCAnXycsICd1JywgJ18nLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdjJywgJ2wnLCAndCcsICdpJywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsICdsJywgJ3QnLCAnaScsICdfJywgJ3UnLCAnXycsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2MnLCAnbCcsICd0JywgJ2knLCAnXycsICd1JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2MnLCAnbScsICdwJywgJ18nLCAnZScsCi0gICdxJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYycsICdtJywgJ3AnLCAnXycsICdsJywgJ2UnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCi0gICdjJywgJ20nLCAncCcsICdfJywgJ2wnLCAndCcsICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2MnLCAnbScsICdwJywgJ2cnLCAnZCcsCi0gICd1JywgJ18nLCAnZScsICdxJywgJ18nLCAncScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYycsICdtJywgJ3AnLCAnZycsICdkJywgJ3UnLCAnXycsCi0gICdsJywgJ2UnLCAnXycsICdxJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdjJywgJ20nLCAncCcsICdnJywgJ2QnLCAndScsICdfJywgJ2wnLCAndCcsCi0gICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdpJywgJ3AnLCAncycsICdfJywgJ2MnLCAnbScsICdwJywgJ2cnLCAndScsICdfJywgJ2UnLCAncScsICdfJywgJ3EnLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsCi0gICdfJywgJ2MnLCAnbScsICdwJywgJ2cnLCAndScsICdfJywgJ2wnLCAnZScsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2MnLCAnbScsCi0gICdwJywgJ2cnLCAndScsICdfJywgJ2wnLCAndCcsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2MnLCAnbScsICdwJywgJ3UnLCAnXycsCi0gICdlJywgJ3EnLCAnXycsICdxJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdjJywgJ20nLCAncCcsICd1JywgJ18nLCAnbCcsICdlJywgJ18nLCAncScsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCi0gICdzJywgJ18nLCAnYycsICdtJywgJ3AnLCAndScsICdfJywgJ2wnLCAndCcsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ28nLCAncCcsCi0gICd5JywgJ18nLCAncycsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsICdvJywgJ3AnLCAneScsICdfJywgJ3MnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbycsCi0gICdwJywgJ3knLCAnXycsICdzJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ28nLCAncCcsICd5JywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsCi0gICdvJywgJ3AnLCAneScsICdfJywgJ3UnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbycsICdwJywgJ3knLCAnXycsICd1JywgJ18nLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdjJywgJ28nLCAncCcsICd5JywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsICdvJywgJ3AnLCAneScsICdfJywgJ3UnLCAnXycsCi0gICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2MnLCAndCcsICdjJywgJ20nLCAncycsICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2QnLCAnaScsICd2JywgJ18nLCAncycsICdfJywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsCi0gICdpJywgJ3YnLCAnXycsICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdkJywgJ2knLCAndicsICdfJywgJ3MnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2QnLCAnaScsCi0gICd2JywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdpJywgJ3YnLCAnXycsICd1JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdkJywgJ2knLCAndicsCi0gICdfJywgJ3UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2QnLCAnaScsICd2JywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdpJywgJ3YnLCAnXycsCi0gICd1JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdpJywgJ3AnLCAncycsICdfJywgJ2QnLCAnbCcsICdzJywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdvJywgJ3QnLCAncCcsICdfJywgJ3MnLCAnXycsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2QnLCAnbycsICd0JywgJ3AnLCAnXycsICdzJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdkJywgJ28nLCAndCcsICdwJywgJ18nLCAncycsCi0gICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnZCcsICdvJywgJ3QnLCAncCcsICdfJywgJ3UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2QnLCAnbycsICd0JywgJ3AnLCAnXycsCi0gICd1JywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdkJywgJ28nLCAndCcsICdwJywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdkJywgJ3AnLCAnYScsCi0gICdfJywgJ3cnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdwJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsCi0gICdwJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncycsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdwJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncycsCi0gICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnZCcsICdwJywgJ2EnLCAnZCcsICdkJywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdwJywgJ2EnLCAnZCcsCi0gICdkJywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdwJywgJ2EnLCAnZCcsICdkJywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCi0gICdkJywgJ3AnLCAnYScsICdxJywgJ18nLCAncycsICdfJywgJ3cnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdkJywgJ3AnLCAnYScsCi0gICdxJywgJ18nLCAncycsICdhJywgJ18nLCAnbCcsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdkJywgJ3AnLCAnYScsICdxJywgJ3gnLCAnXycsCi0gICdzJywgJ18nLCAndycsICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2QnLCAncCcsICdhJywgJ3EnLCAneCcsICdfJywgJ3MnLCAnYScsCi0gICdfJywgJ3cnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdkJywgJ3AnLCAnYScsICd1JywgJ18nLCAnaCcsICdfJywgJ3EnLCAnYicsCi0gICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCi0gICdzJywgJ18nLCAnZCcsICdwJywgJ2EnLCAndScsICdfJywgJ2gnLCAnXycsICdxJywgJ2InLCAncicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2QnLCAncCcsCi0gICdhJywgJ3gnLCAnXycsICd3JywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnZCcsICdwJywgJ3MnLCAnXycsICd3JywgJ18nLCAncCcsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCi0gICdzJywgJ18nLCAnZCcsICdwJywgJ3MnLCAncScsICdfJywgJ3MnLCAnXycsICd3JywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnZCcsCi0gICdwJywgJ3MnLCAncScsICdfJywgJ3MnLCAnYScsICdfJywgJ2wnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnZCcsICdwJywgJ3MnLCAncScsCi0gICd4JywgJ18nLCAncycsICdfJywgJ3cnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdkJywgJ3AnLCAncycsICdxJywgJ3gnLCAnXycsCi0gICdzJywgJ2EnLCAnXycsICd3JywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnZCcsICdwJywgJ3MnLCAndScsICdfJywgJ2gnLCAnXycsCi0gICdxJywgJ2InLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdpJywgJ3AnLCAncycsICdfJywgJ2QnLCAncCcsICdzJywgJ3UnLCAnXycsICdoJywgJ18nLCAncScsICdiJywgJ3InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsCi0gICdwJywgJ3MnLCAndScsICdiJywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdwJywgJ3MnLCAndScsICdiJywgJ18nLCAncycsCi0gICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnZCcsICdwJywgJ3MnLCAndScsICdiJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdwJywgJ3MnLCAndScsCi0gICdiJywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdwJywgJ3MnLCAndScsICdiJywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsCi0gICdwJywgJ3MnLCAndScsICdiJywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdkJywgJ3AnLCAncycsICd4JywgJ18nLCAndycsCi0gICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdpJywgJ3AnLCAncycsICdfJywgJ2UnLCAneCcsICd0JywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdlJywgJ3gnLCAndCcsICdwJywgJ2QnLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsCi0gICdfJywgJ2UnLCAneCcsICd0JywgJ3InLCAnXycsICdyJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2UnLCAneCcsICd0JywgJ3InLCAnXycsCi0gICdyJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnZScsICd4JywgJ3QnLCAncicsICdfJywgJ3MnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnZScsCi0gICd4JywgJ3QnLCAncicsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdhJywgJ2QnLCAnZCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdhJywgJ2QnLCAnZCcsCi0gICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnZicsICdjJywgJ2EnLCAnZicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdjJywgJ2EnLCAnZicsICdfJywgJ3cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCi0gICdjJywgJ2UnLCAncScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdjJywgJ2UnLCAncScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdjJywgJ2wnLCAnYScsCi0gICdzJywgJ3MnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnYycsICdsJywgJ2EnLCAncycsICdzJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAnbCcsCi0gICdlJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAnbCcsICdlJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAnbCcsICd0JywgJ18nLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdmJywgJ2MnLCAnbCcsICd0JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAnbicsICdlJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAnbicsCi0gICdlJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAnbycsICdyJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAnbycsICdyJywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdmJywgJ2MnLCAndScsICdlJywgJ3EnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnYycsICd1JywgJ2UnLCAncScsICdfJywgJ3cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCi0gICdjJywgJ3UnLCAnbCcsICdlJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAndScsICdsJywgJ2UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnYycsCi0gICd1JywgJ2wnLCAndCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdjJywgJ3UnLCAnbCcsICd0JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAndScsCi0gICduJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAndScsICduJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAndScsICduJywgJ2UnLCAnXycsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2YnLCAnYycsICd1JywgJ24nLCAnZScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdkJywgJ2knLCAndicsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCi0gICdkJywgJ2knLCAndicsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdlJywgJ3gnLCAnZCcsICdvJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2UnLCAneCcsCi0gICdkJywgJ28nLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnZScsICd4JywgJ3AnLCAnMicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdlJywgJ3gnLCAncCcsCi0gICcyJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdmJywgJ2UnLCAneCcsICd1JywgJ3AnLCAnbCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdlJywgJ3gnLCAndScsCi0gICdwJywgJ2wnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnZScsICd4JywgJ3UnLCAncCcsICdyJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2UnLCAneCcsCi0gICd1JywgJ3AnLCAncicsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdmJywgJ2knLCAnbicsICd0JywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCi0gICdmJywgJ2knLCAnbicsICd0JywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdmJywgJ2knLCAnbicsICd0JywgJ18nLCAndScsCi0gICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnZicsICdmJywgJ2knLCAnbicsICd0JywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdmJywgJ3EnLCAnbCcsCi0gICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnZicsICdmJywgJ3EnLCAnbCcsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdmJywgJ3EnLCAncicsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCi0gICdmJywgJ3EnLCAncicsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdpJywgJ2wnLCAnbCcsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdpJywgJ2wnLCAnbCcsCi0gICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnZicsICdpJywgJ2wnLCAnbCcsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdpJywgJ2wnLCAnbCcsICdfJywgJ3cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCi0gICdsJywgJ28nLCAnZycsICcyJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2wnLCAnbycsICdnJywgJzInLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnbScsCi0gICdhJywgJ2QnLCAnZCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdtJywgJ2EnLCAnZCcsICdkJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ20nLCAnYScsCi0gICd4JywgJ18nLCAnYScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdtJywgJ2EnLCAneCcsICdfJywgJ2EnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnbScsCi0gICdhJywgJ3gnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnbScsICdhJywgJ3gnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnbScsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdmJywgJ20nLCAnaScsICduJywgJ18nLCAnYScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdtJywgJ2knLCAnbicsCi0gICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnZicsICdtJywgJ2knLCAnbicsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdtJywgJ3MnLCAndScsICdiJywgJ18nLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdmJywgJ20nLCAncycsICd1JywgJ2InLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnbScsICd1JywgJ2wnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnbScsCi0gICd1JywgJ2wnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncicsICdjJywgJ3AnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncicsICdjJywgJ3AnLCAnXycsCi0gICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2YnLCAncicsICdpJywgJ24nLCAndCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdyJywgJ2knLCAnbicsICd0JywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdmJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdyJywgJ3MnLCAncScsICdyJywgJ3QnLCAnXycsCi0gICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2YnLCAncycsICdhJywgJ2YnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICdhJywgJ2YnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsCi0gICdlJywgJ3EnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICdlJywgJ3EnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICdsJywgJ2UnLCAnXycsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2YnLCAncycsICdsJywgJ2UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICdsJywgJ3QnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsCi0gICdsJywgJ3QnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICduJywgJ2UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICduJywgJ2UnLCAnXycsCi0gICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2YnLCAncycsICdvJywgJ3InLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICdvJywgJ3InLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsCi0gICdxJywgJ3InLCAndCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdzJywgJ3EnLCAncicsICd0JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ3MnLCAndScsCi0gICdiJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdmJywgJ3MnLCAndScsICdiJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ3MnLCAndScsICdlJywgJ3EnLCAnXycsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2YnLCAncycsICd1JywgJ2UnLCAncScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdzJywgJ3UnLCAnbCcsICdlJywgJ18nLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdmJywgJ3MnLCAndScsICdsJywgJ2UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICd1JywgJ2wnLCAndCcsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCi0gICdzJywgJ3UnLCAnbCcsICd0JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ3MnLCAndScsICduJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ3MnLCAndScsCi0gICduJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdmJywgJ3MnLCAndScsICduJywgJ2UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICd1JywgJ24nLCAnZScsCi0gICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnZicsICd0JywgJ2knLCAnbicsICd0JywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICd0JywgJ2knLCAnbicsCi0gICd0JywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICd0JywgJ2knLCAnbicsICd0JywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCi0gICd0JywgJ2knLCAnbicsICd0JywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICd0JywgJ3EnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAndCcsCi0gICdxJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdmJywgJ3QnLCAncicsICd1JywgJ24nLCAnYycsICdfJywgJ3MnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAndCcsCi0gICdyJywgJ3UnLCAnbicsICdjJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICd0JywgJ3InLCAndScsICduJywgJ2MnLCAnXycsCi0gICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdmJywgJ3QnLCAncicsICd1JywgJ24nLCAnYycsICdfJywgJ3UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2gnLCAnYScsCi0gICdkJywgJ2QnLCAnXycsICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdoJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncycsICdfJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaCcsCi0gICdhJywgJ2QnLCAnZCcsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2gnLCAnYScsICdkJywgJ2QnLCAnXycsICd1JywgJ18nLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdoJywgJ2EnLCAnZCcsICdkJywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaCcsICdhJywgJ2QnLCAnZCcsICdfJywgJ3UnLCAnXycsCi0gICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2gnLCAncycsICd1JywgJ2InLCAnXycsICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdoJywgJ3MnLCAndScsICdiJywgJ18nLCAncycsCi0gICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnaCcsICdzJywgJ3UnLCAnYicsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2gnLCAncycsICd1JywgJ2InLCAnXycsCi0gICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdoJywgJ3MnLCAndScsICdiJywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaCcsICdzJywgJ3UnLCAnYicsCi0gICdfJywgJ3UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2knLCAnbCcsICd2JywgJ2UnLCAndicsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaScsICdsJywgJ3YnLCAnZScsCi0gICd2JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdpJywgJ2wnLCAndicsICdlJywgJ3YnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2knLCAnbCcsICd2JywgJ2UnLCAndicsCi0gICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnaScsICdsJywgJ3YnLCAnbCcsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaScsICdsJywgJ3YnLCAnbCcsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaScsCi0gICdsJywgJ3YnLCAnbCcsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaScsICdsJywgJ3YnLCAnbCcsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaScsICdsJywgJ3YnLCAnbycsCi0gICdkJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdpJywgJ2wnLCAndicsICdvJywgJ2QnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2knLCAnbCcsICd2JywgJ28nLCAnZCcsCi0gICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnaScsICdsJywgJ3YnLCAnbycsICdkJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdpJywgJ2wnLCAndicsICdyJywgJ18nLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdpJywgJ2wnLCAndicsICdyJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdpJywgJ2wnLCAndicsICdyJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdpJywgJ2wnLCAndicsCi0gICdyJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdpJywgJ24nLCAncycsICdlJywgJ3InLCAndCcsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaScsICduJywgJ3MnLCAnZScsCi0gICdyJywgJ3QnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2knLCAnbicsICdzJywgJ2UnLCAncicsICd0JywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdpJywgJ24nLCAncycsCi0gICdlJywgJ3InLCAndCcsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdpJywgJ24nLCAncycsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2knLCAnbicsICdzJywgJ3YnLCAnZScsCi0gICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnaScsICduJywgJ3MnLCAndicsICdlJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdpJywgJ24nLCAncycsICd2JywgJ2UnLCAnXycsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ2knLCAnbicsICdzJywgJ3YnLCAnZScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdsJywgJ2InLCAndScsICd4JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2wnLCAnZCcsCi0gICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnbCcsICdkJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdsJywgJ2QnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2wnLCAnZCcsICdfJywgJ3cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbCcsCi0gICdkJywgJ2knLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ2wnLCAnZCcsICdpJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdsJywgJ2QnLCAnaScsICdfJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbCcsCi0gICdkJywgJ2knLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnbCcsICdoJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdsJywgJ3MnLCAnYScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2wnLCAndycsCi0gICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCi0gICdzJywgJ18nLCAnbScsICdhJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncScsICdfJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsCi0gICdhJywgJ2QnLCAnZCcsICdfJywgJ3EnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnYScsICdkJywgJ2QnLCAncicsICdfJywgJ3EnLCAnXycsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ20nLCAnYScsICdkJywgJ2QnLCAncicsICdfJywgJ3EnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnbScsICdhJywgJ2QnLCAnZCcsCi0gICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ20nLCAnYScsICdkJywgJ2QnLCAndicsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdhJywgJ2QnLCAnZCcsICd2JywgJ18nLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdtJywgJ2EnLCAnZCcsICdkJywgJ3YnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnYScsICdkJywgJ2QnLCAndicsICdfJywgJ3cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCi0gICdtJywgJ2EnLCAncScsICdfJywgJ3MnLCAnXycsICd3JywgJ18nLCAncCcsICdoJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdtJywgJ2EnLCAncScsCi0gICdfJywgJ3MnLCAnXycsICd3JywgJ18nLCAncCcsICdoJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdtJywgJ2EnLCAncScsICdfJywgJ3MnLCAnYScsCi0gICdfJywgJ3cnLCAnXycsICdwJywgJ2gnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAnYScsICdxJywgJ18nLCAncycsICdhJywgJ18nLCAndycsCi0gICdfJywgJ3AnLCAnaCcsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnYScsICd4JywgJ18nLCAnYScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdhJywgJ3gnLCAnXycsCi0gICdhJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdtJywgJ2EnLCAneCcsICdfJywgJ2EnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnYScsICd4JywgJ18nLCAnYScsCi0gICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnbScsICdhJywgJ3gnLCAnXycsICdzJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2EnLCAneCcsICdfJywgJ3MnLCAnXycsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ20nLCAnYScsICd4JywgJ18nLCAncycsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdhJywgJ3gnLCAnXycsICdzJywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdtJywgJ2EnLCAneCcsICdfJywgJ3UnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnYScsICd4JywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsCi0gICdhJywgJ3gnLCAnXycsICd1JywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2EnLCAneCcsICdfJywgJ3UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnYScsCi0gICd4JywgJ2knLCAnXycsICdzJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2EnLCAneCcsICdpJywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsCi0gICdhJywgJ3gnLCAnaScsICdfJywgJ3MnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnYScsICd4JywgJ2knLCAnXycsICdzJywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdtJywgJ2EnLCAneCcsICdpJywgJ18nLCAndScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdhJywgJ3gnLCAnaScsICdfJywgJ3UnLCAnXycsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ20nLCAnYScsICd4JywgJ2knLCAnXycsICd1JywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2EnLCAneCcsICdpJywgJ18nLCAndScsCi0gICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnbScsICdpJywgJ24nLCAnXycsICdhJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2knLCAnbicsICdfJywgJ2EnLCAnXycsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ20nLCAnaScsICduJywgJ18nLCAnYScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdpJywgJ24nLCAnXycsICdhJywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdtJywgJ2knLCAnbicsICdfJywgJ3MnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnaScsICduJywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsCi0gICdpJywgJ24nLCAnXycsICdzJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2knLCAnbicsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnaScsCi0gICduJywgJ18nLCAndScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdpJywgJ24nLCAnXycsICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2knLCAnbicsCi0gICdfJywgJ3UnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnaScsICduJywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdpJywgJ24nLCAnaScsCi0gICdfJywgJ3MnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnaScsICduJywgJ2knLCAnXycsICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2knLCAnbicsCi0gICdpJywgJ18nLCAncycsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdpJywgJ24nLCAnaScsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnaScsCi0gICduJywgJ2knLCAnXycsICd1JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2knLCAnbicsICdpJywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsCi0gICdpJywgJ24nLCAnaScsICdfJywgJ3UnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnaScsICduJywgJ2knLCAnXycsICd1JywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdtJywgJ28nLCAnZCcsICdfJywgJ3MnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnbycsICdkJywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsCi0gICdvJywgJ2QnLCAnXycsICdzJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ28nLCAnZCcsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnbycsCi0gICdkJywgJ18nLCAndScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdvJywgJ2QnLCAnXycsICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ28nLCAnZCcsCi0gICdfJywgJ3UnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnbycsICdkJywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdtJywgJ28nLCAnZCcsCi0gICdzJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdtJywgJ28nLCAndicsICdlJywgJ18nLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAncycsICd1JywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsCi0gICdzJywgJ3UnLCAnYicsICdfJywgJ3EnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAncycsICd1JywgJ2InLCAnXycsICdxJywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdtJywgJ3MnLCAndScsICdiJywgJ3InLCAnXycsICdxJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ3MnLCAndScsICdiJywgJ3InLCAnXycsCi0gICdxJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAncycsICd1JywgJ2InLCAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ3MnLCAndScsICdiJywgJ3YnLCAnXycsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ20nLCAncycsICd1JywgJ2InLCAndicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdzJywgJ3UnLCAnYicsICd2JywgJ18nLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdtJywgJ3MnLCAndScsICdiJywgJ3YnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnbScsICd0JywgJ2gnLCAnbCcsICdpJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCi0gICdtJywgJ3UnLCAnbCcsICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ3UnLCAnbCcsICdfJywgJ3EnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAndScsCi0gICdsJywgJ18nLCAncScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdtJywgJ3UnLCAnbCcsICdfJywgJ3MnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCi0gICdtJywgJ3UnLCAnbCcsICdlJywgJ3EnLCAnXycsICdzJywgJ18nLCAndycsICdfJywgJ3AnLCAnaCcsICdsJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnbScsCi0gICd1JywgJ2wnLCAnZScsICdxJywgJ18nLCAncycsICdfJywgJ3cnLCAnXycsICdwJywgJ2gnLCAncicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAndScsCi0gICdsJywgJ2UnLCAndScsICdfJywgJ3MnLCAnXycsICdwJywgJ2gnLCAnXycsICdxJywgJ2InLCAnbCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAndScsCi0gICdsJywgJ2UnLCAndScsICdfJywgJ3MnLCAnXycsICdwJywgJ2gnLCAnXycsICdxJywgJ2InLCAncicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAndScsCi0gICdsJywgJ3EnLCAnXycsICdyJywgJ3MnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdtJywgJ3UnLCAnbCcsICdxJywgJ18nLCAncicsCi0gICdzJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAndScsICdsJywgJ3EnLCAnXycsICdzJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnbScsCi0gICd1JywgJ2wnLCAncScsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAndScsICdsJywgJ3InLCAnXycsICdxJywgJ18nLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdtJywgJ3UnLCAnbCcsICdyJywgJ18nLCAncScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdtJywgJ3UnLCAnbCcsICdzJywgJ2EnLCAnXycsCi0gICd3JywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnbScsICd1JywgJ2wnLCAncycsICdhJywgJ3EnLCAnXycsICdzJywgJ18nLCAndycsCi0gICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAndScsICdsJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdtJywgJ3UnLCAnbCcsICd0JywgJ3UnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsCi0gICd1JywgJ2wnLCAndicsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICd1JywgJ2wnLCAndicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICd1JywgJ2wnLCAndicsCi0gICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnbScsICd1JywgJ2wnLCAndicsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsICdsJywgJ28nLCAnYycsICdfJywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsCi0gICdsJywgJ28nLCAnYycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsICdsJywgJ28nLCAnYycsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsICdsJywgJ28nLCAnYycsCi0gICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAnbicsICdsJywgJ3onLCAnYycsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsICdsJywgJ3onLCAnYycsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsCi0gICdsJywgJ3onLCAnYycsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsICdsJywgJ3onLCAnYycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsICdvJywgJ3InLCAnXycsCi0gICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ24nLCAnbycsICdyJywgJ2knLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ28nLCAncicsICdfJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbycsICdyJywgJ2knLCAnXycsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCi0gICdzJywgJ18nLCAncCcsICdhJywgJ2MnLCAnaycsICdyJywgJ2wnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncCcsICdjJywgJ2snLCAnZScsCi0gICd2JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdwJywgJ2MnLCAnaycsICdlJywgJ3YnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3AnLCAnYycsICdrJywgJ2UnLCAndicsCi0gICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAncCcsICdjJywgJ2snLCAnZScsICd2JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdwJywgJ2MnLCAnaycsICdvJywgJ2QnLCAnXycsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ3AnLCAnYycsICdrJywgJ28nLCAnZCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncCcsICdjJywgJ2snLCAnbycsICdkJywgJ18nLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdwJywgJ2MnLCAnaycsICdvJywgJ2QnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3AnLCAnYycsICduJywgJ3QnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3AnLCAnYycsCi0gICduJywgJ3QnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ3AnLCAnYycsICduJywgJ3QnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3AnLCAnYycsICduJywgJ3QnLCAnXycsCi0gICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCi0gICdzJywgJ18nLCAncCcsICdpJywgJ2MnLCAnaycsICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3AnLCAnaScsICdjJywgJ2snLCAnXycsCi0gICdxJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCi0gICdwJywgJ3MnLCAnXycsICdwJywgJ3InLCAnZScsICdjJywgJ2UnLCAncScsICdfJywgJ3cnLCAnXycsICdwJywgJ2gnLCAnbCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsCi0gICdfJywgJ3AnLCAncicsICdlJywgJ2MnLCAnZScsICdxJywgJ18nLCAndycsICdfJywgJ3AnLCAnaCcsICdyJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsCi0gICdyJywgJ2UnLCAnYycsICdlJywgJ3EnLCAndScsICdfJywgJ3AnLCAnaCcsICdfJywgJ3EnLCAnYicsICdsJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsCi0gICdyJywgJ2UnLCAnYycsICdlJywgJ3EnLCAndScsICdfJywgJ3AnLCAnaCcsICdfJywgJ3EnLCAnYicsICdsJywgJ2EnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCi0gICdwJywgJ3InLCAnZScsICdjJywgJ2UnLCAncScsICd1JywgJ18nLCAncCcsICdoJywgJ18nLCAncScsICdiJywgJ3InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCi0gICdwJywgJ3InLCAnZScsICdjJywgJ2UnLCAncScsICd1JywgJ18nLCAncCcsICdoJywgJ18nLCAncScsICdiJywgJ3InLCAnYScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsCi0gICdfJywgJ3AnLCAncicsICdlJywgJ2MnLCAnZScsICd1JywgJ18nLCAncCcsICdoJywgJ18nLCAncScsICdiJywgJ2wnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCi0gICdwJywgJ3InLCAnZScsICdjJywgJ2UnLCAndScsICdfJywgJ3AnLCAnaCcsICdfJywgJ3EnLCAnYicsICdsJywgJ2EnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCi0gICdwJywgJ3InLCAnZScsICdjJywgJ2UnLCAndScsICdfJywgJ3AnLCAnaCcsICdfJywgJ3EnLCAnYicsICdyJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsCi0gICdyJywgJ2UnLCAnYycsICdlJywgJ3UnLCAnXycsICdwJywgJ2gnLCAnXycsICdxJywgJ2InLCAncicsICdhJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsCi0gICdyJywgJ2UnLCAnYycsICdyJywgJ18nLCAncScsICdiJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsICdyJywgJ2UnLCAnYycsCi0gICdyJywgJ18nLCAncycsICdyJywgJ2EnLCAnXycsICdwJywgJ2gnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsICdyJywgJ2UnLCAnYycsCi0gICdyJywgJ18nLCAncycsICdyJywgJ2EnLCAnXycsICdyJywgJ18nLCAncCcsICdoJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3AnLCAncicsCi0gICdlJywgJ2MnLCAncicsICdxJywgJ18nLCAncCcsICdoJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3AnLCAncicsICdlJywgJ2MnLCAncicsCi0gICdxJywgJ18nLCAncScsICdiJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsICdyJywgJ2UnLCAnYycsICdyJywgJ3EnLCAnXycsCi0gICdyJywgJ3MnLCAnXycsICdwJywgJ2gnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsICdyJywgJ2UnLCAnYycsICdyJywgJ3EnLCAndScsCi0gICdfJywgJ3MnLCAnXycsICdxJywgJ2InLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdwJywgJ3InLCAnZScsICdwJywgJ2UnLCAnbicsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCi0gICdzJywgJ18nLCAncicsICdhJywgJ2QnLCAnZCcsICd1JywgJ18nLCAndycsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3InLCAnZCcsCi0gICdkJywgJ3MnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdpJywgJ3AnLCAncycsICdfJywgJ3InLCAnZScsICdwJywgJ2wnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdyJywgJ2UnLCAncCcsCi0gICdsJywgJ18nLCAncScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAncycsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsCi0gICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ3MnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAncycsCi0gICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICd1JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ3UnLCAnXycsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICd1JywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdzJywgJ2gnLCAnZicsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdoJywgJ2YnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnaCcsICdmJywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsCi0gICdfJywgJ3MnLCAnaCcsICdpJywgJ2wnLCAnbycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3MnLCAnaCcsICdsJywgJ2wnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCi0gICdzJywgJ2gnLCAnbCcsICdsJywgJ18nLCAncScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncycsICdoJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnXycsCisgICdfJywgJ2wnLCAnZCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdjJywgJ2knLCAncicsICdjJywgJ18nLCAnbCcsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2MnLCAnaScsICdyJywgJ2MnLCAnXycsICdsJywgJ2QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYycsICdpJywgJ3InLCAnYycsICdfJywgJ2wnLCAnZCcsCisgICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2MnLCAnaScsCisgICdyJywgJ2MnLCAnXycsICdsJywgJ2QnLCAndScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdjJywgJ2knLCAncicsICdjJywgJ18nLCAnbCcsICdkJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2MnLCAnaScsICdyJywgJ2MnLCAnXycsICdzJywgJ3QnLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYycsICdpJywgJ3InLCAnYycsCisgICdfJywgJ3MnLCAndCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdjJywgJ2knLCAncicsICdjJywgJ18nLCAncycsICd0JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2MnLCAnaScsICdyJywgJ2MnLCAnXycsICdzJywgJ3QnLCAnaCcsICdoJywgJ2knLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2MnLCAnaScsICdyJywgJ2MnLCAnXycsCisgICdzJywgJ3QnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnSCcsCisgICdFJywgJ1gnLCAnQScsICdHJywgJ08nLCAnTicsICdfJywgJ3AnLCAncicsICdlJywgJ2YnLCAnZScsICd0JywgJ2MnLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaCcsICdlJywgJ3gnLCAnYScsCisgICdnJywgJ28nLCAnbicsICdfJywgJ3YnLCAnbScsICdlJywgJ20nLCAnYycsICdwJywgJ3knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2gnLCAnZScsICd4JywgJ2EnLCAnZycsICdvJywgJ24nLCAnXycsCisgICd2JywgJ20nLCAnZScsICdtJywgJ3MnLCAnZScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYScsICdiJywgJ3MnLCAncScsICdfJywgJ3MnLCAnXycsCiAgICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCi0gICdwJywgJ3MnLCAnXycsICdzJywgJ2gnLCAnbCcsICdsJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdzJywgJ2gnLCAncicsCi0gICdhJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncycsICdoJywgJ3InLCAnYScsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3MnLCAnaCcsCi0gICdyJywgJ2EnLCAnXycsICdyJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncycsICdoJywgJ3InLCAnYScsICdfJywgJ3InLCAnXycsCi0gICdxJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCi0gICdwJywgJ3MnLCAnXycsICdzJywgJ2gnLCAncicsICdhJywgJ18nLCAncicsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdzJywgJ2gnLCAncicsCi0gICdsJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncycsICdoJywgJ3InLCAnbCcsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ2wnLCAnZCcsCisgICdwJywgJ3MnLCAnXycsICdhJywgJ2InLCAncycsICdxJywgJ18nLCAncycsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2EnLCAnYicsCisgICdzJywgJ3EnLCAnXycsICdzJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ2QnLCAnZCcsICdfJywgJ2EnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAnZCcsCisgICdkJywgJ18nLCAnYScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAnXycsICdhJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ2QnLCAnZCcsCisgICdfJywgJ2EnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYScsICdkJywgJ2QnLCAncScsICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2EnLCAnZCcsCisgICdkJywgJ3EnLCAnXycsICdzJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYScsICdkJywgJ2QnLCAncScsICdfJywgJ3MnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCisgICdzJywgJ18nLCAnYScsICdkJywgJ2QnLCAncScsICdoJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYScsICdkJywgJ2QnLCAncScsCisgICdoJywgJ18nLCAncicsICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2EnLCAnZCcsICdkJywgJ3EnLCAnaCcsICdfJywgJ3InLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCisgICdzJywgJ18nLCAnYScsICdkJywgJ2QnLCAncScsICdoJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ2QnLCAnZCcsICdzJywgJ18nLCAnYScsCiAgICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAncycsICdsJywgJ2QnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnbCcsICdkJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ2wnLCAnZCcsCi0gICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAncycsICdsJywgJ2QnLCAnaScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdsJywgJ2QnLCAnaScsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsCi0gICdsJywgJ2QnLCAnaScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdsJywgJ2QnLCAnaScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdsJywgJ2wnLCAnXycsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ3MnLCAnbCcsICdsJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ2wnLCAnbCcsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdsJywgJ2wnLCAnXycsCi0gICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ3MnLCAnbCcsICdsJywgJ2knLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnbCcsICdsJywgJ2knLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnbCcsCi0gICdsJywgJ2knLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnbCcsICdsJywgJ2knLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAncCcsICdsJywgJ2EnLCAndCcsCi0gICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAncycsICdwJywgJ2wnLCAnYScsICd0JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3AnLCAnbCcsICdhJywgJ3QnLCAnXycsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ3MnLCAncCcsICdsJywgJ2EnLCAndCcsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdwJywgJ2wnLCAnYScsICd0JywgJ2knLCAnXycsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ3MnLCAncCcsICdsJywgJ2EnLCAndCcsICdpJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3AnLCAnbCcsICdhJywgJ3QnLCAnaScsCi0gICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAncycsICdwJywgJ2wnLCAnYScsICd0JywgJ2knLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAncicsICdhJywgJ18nLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdzJywgJ3InLCAnYScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdyJywgJ2EnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAncicsICdhJywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdzJywgJ3InLCAnYScsICdpJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsICdpJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsCi0gICdpJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsICdpJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsICdyJywgJ18nLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdzJywgJ3InLCAnYScsICdyJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsICdyJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsCi0gICdyJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsICdyJywgJ2knLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAncicsICdhJywgJ3InLCAnaScsCi0gICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAncycsICdyJywgJ2EnLCAncicsICdpJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsICdyJywgJ2knLCAnXycsCi0gICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ3MnLCAncicsICdsJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdyJywgJ2wnLCAnXycsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ3MnLCAncicsICdsJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsICdpJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsCi0gICdpJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsICdpJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsICdpJywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdzJywgJ3InLCAnbCcsICdyJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsICdyJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsCi0gICdyJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsICdyJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsICdyJywgJ2knLCAnXycsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ3MnLCAncicsICdsJywgJ3InLCAnaScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdyJywgJ2wnLCAncicsICdpJywgJ18nLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdzJywgJ3InLCAnbCcsICdyJywgJ2knLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAndCcsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICd0JywgJ18nLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdzJywgJ3QnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAndCcsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdzJywgJ3UnLCAnYicsICdxJywgJ18nLCAncCcsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCi0gICdzJywgJ18nLCAncycsICd1JywgJ2InLCAncScsICdfJywgJ3MnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdzJywgJ3UnLCAnYicsCi0gICdxJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdzJywgJ3UnLCAnYicsICdxJywgJ2gnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCi0gICdzJywgJ3UnLCAnYicsICdxJywgJ2gnLCAnXycsICdyJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncycsICd1JywgJ2InLCAncScsCi0gICdoJywgJ18nLCAncicsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdzJywgJ3UnLCAnYicsICdxJywgJ2gnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAndScsCi0gICdiJywgJ3MnLCAnXycsICdzJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsICdzJywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsCi0gICd1JywgJ2InLCAncycsICdfJywgJ3MnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAndScsICdiJywgJ3MnLCAnXycsICdzJywgJ18nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdzJywgJ3UnLCAnYicsICdzJywgJ18nLCAndScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICd1JywgJ2InLCAncycsICdfJywgJ3UnLCAnXycsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ3MnLCAndScsICdiJywgJ3MnLCAnXycsICd1JywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsICdzJywgJ18nLCAndScsCi0gICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAncycsICd1JywgJ2InLCAncycsICd1JywgJ3MnLCAnXycsICd1JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsCi0gICdzJywgJ3UnLCAncycsICdfJywgJ3UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAndScsICdiJywgJ3MnLCAndScsICdzJywgJ18nLCAndScsCi0gICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAncycsICd1JywgJ2InLCAncycsICd1JywgJ3MnLCAnXycsICd1JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsCi0gICdzJywgJ3UnLCAndScsICdfJywgJ3MnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAndScsICdiJywgJ3MnLCAndScsICd1JywgJ18nLCAncycsCi0gICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCi0gICdhJywgJ18nLCAncycsICd1JywgJ2InLCAncycsICd1JywgJ3UnLCAnXycsICdzJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsCi0gICdzJywgJ3UnLCAndScsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncycsICd1JywgJ2InLCAndScsICdfJywgJ3AnLCAnaCcsCisgICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAncycsICdfJywgJ2EnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnXycsCisgICdhJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdhJywgJ2QnLCAnZCcsICdzJywgJ18nLCAnYScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAncycsCisgICdfJywgJ3MnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnXycsICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ2QnLCAnZCcsCisgICdzJywgJ18nLCAncycsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAncycsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAnZCcsCisgICdkJywgJ3MnLCAnXycsICd1JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ2QnLCAnZCcsICdzJywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsCisgICdkJywgJ2QnLCAncycsICdfJywgJ3UnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnXycsICd1JywgJ18nLCAndycsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsCi0gICdfJywgJ3MnLCAndScsICdiJywgJ3UnLCAnXycsICdxJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdzJywgJ3UnLCAnYicsICd1JywgJ18nLCAncycsCi0gICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdpJywgJ3AnLCAncycsICdfJywgJ3MnLCAndScsICdiJywgJ3UnLCAnXycsICdzJywgJ18nLCAncScsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncycsCi0gICd1JywgJ2InLCAndScsICdoJywgJ18nLCAncScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncycsICd1JywgJ2InLCAndScsICdoJywgJ18nLCAncicsCi0gICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsICd2JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsICd2JywgJ18nLCAnZCcsCisgICdfJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCisgICdhJywgJ2QnLCAnZCcsICd1JywgJ18nLCAncScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYScsICdkJywgJ2QnLCAndScsICdfJywgJ3MnLCAnXycsCisgICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCisgICdwJywgJ3MnLCAnXycsICdhJywgJ2QnLCAnZCcsICd1JywgJ18nLCAncycsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2EnLCAnZCcsCisgICdkJywgJ3UnLCAnaCcsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnaCcsICdfJywgJ3InLCAnXycsCisgICdxJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAndicsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAndicsICdfJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsCisgICdkJywgJ2QnLCAndicsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAndicsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAndicsCisgICdpJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdhJywgJ2QnLCAnZCcsICd2JywgJ2knLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAnZCcsICdkJywgJ3YnLCAnaScsCisgICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnYScsICdkJywgJ2QnLCAndicsICdpJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2EnLCAnZCcsICdkJywgJ3cnLCAnYycsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICdzJywgJ3UnLCAnYicsICd2JywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsICd2JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsCi0gICd2JywgJ2knLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAndScsICdiJywgJ3YnLCAnaScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICd1JywgJ2InLCAndicsCi0gICdpJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCi0gICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsICd2JywgJ2knLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3YnLCAncycsICdoJywgJ2YnLCAnXycsCisgICdhJywgJ24nLCAnZCcsICdfJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICduJywgJ2QnLCAnaScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdhJywgJ3AnLCAncCcsCisgICdlJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdhJywgJ3MnLCAndScsICdiJywgJ18nLCAncycsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdzJywgJ3UnLCAnYicsCisgICdfJywgJ3MnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAncycsICd1JywgJ2InLCAnXycsICdzJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ3MnLCAndScsCisgICdiJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICdzJywgJ3UnLCAnYicsICdfJywgJ3UnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAncycsCisgICd1JywgJ2InLCAnXycsICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ3MnLCAndScsICdiJywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsCisgICdzJywgJ3UnLCAnYicsICdfJywgJ3UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAndicsICdlJywgJ18nLCAncycsICdfJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsCisgICd2JywgJ2UnLCAnXycsICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ3YnLCAnZScsICdfJywgJ3MnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAndicsCisgICdlJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICd2JywgJ2UnLCAnXycsICd1JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ3YnLCAnZScsCisgICdfJywgJ3UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAndicsICdlJywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICd2JywgJ2UnLCAnXycsCisgICd1JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdhJywgJ3YnLCAnZScsICdyJywgJ18nLCAncycsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICd2JywgJ2UnLCAncicsCisgICdfJywgJ3MnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAndicsICdlJywgJ3InLCAnXycsICdzJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ3YnLCAnZScsCisgICdyJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsICd2JywgJ2UnLCAncicsICdfJywgJ3UnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2EnLCAndicsCisgICdlJywgJ3InLCAnXycsICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdhJywgJ3YnLCAnZScsICdyJywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYScsCisgICd2JywgJ2UnLCAncicsICdfJywgJ3UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYicsICdhJywgJ2wnLCAnaScsICdnJywgJ24nLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsCisgICdjJywgJ2wnLCAncicsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdjJywgJ2wnLCAncicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdjJywgJ2wnLCAncicsCisgICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnYicsICdjJywgJ2wnLCAncicsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdjJywgJ2wnLCAncicsICdpJywgJ18nLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdiJywgJ2MnLCAnbCcsICdyJywgJ2knLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnYycsICdsJywgJ3InLCAnaScsICdfJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsCisgICdjJywgJ2wnLCAncicsICdpJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ2knLCAnbicsICdzJywgJ2wnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnaScsCisgICduJywgJ3MnLCAnbCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdpJywgJ24nLCAncycsICdsJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ2knLCAnbicsCisgICdzJywgJ2wnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnaScsICduJywgJ3MnLCAnbCcsICdpJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ2knLCAnbicsCisgICdzJywgJ2wnLCAnaScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdpJywgJ24nLCAncycsICdsJywgJ2knLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnaScsCisgICduJywgJ3MnLCAnbCcsICdpJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ2knLCAnbicsICdzJywgJ3InLCAnXycsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnaScsCisgICduJywgJ3MnLCAncicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdpJywgJ24nLCAncycsICdyJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ2knLCAnbicsCisgICdzJywgJ3InLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnaScsICduJywgJ3MnLCAncicsICdpJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ2knLCAnbicsCisgICdzJywgJ3InLCAnaScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdpJywgJ24nLCAncycsICdyJywgJ2knLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnaScsCisgICduJywgJ3MnLCAncicsICdpJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2InLCAnaScsICd0JywgJ3InLCAnZScsICd2JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbScsCisgICduJywgJ3onLCAnXycsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbScsICduJywgJ3onLCAnaScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICdtJywgJ3onLCAnXycsCisgICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2InLCAnbScsICd6JywgJ2knLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbicsICdlJywgJ2cnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbicsCisgICdlJywgJ2cnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbicsICdlJywgJ2cnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbicsICdlJywgJ2cnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2InLCAnbicsICdlJywgJ2cnLCAnaScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICduJywgJ2UnLCAnZycsICdpJywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdiJywgJ24nLCAnZScsICdnJywgJ2knLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbicsICdlJywgJ2cnLCAnaScsICdfJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsCisgICduJywgJ3onLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbicsICd6JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ24nLCAneicsICdfJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsCisgICduJywgJ3onLCAnXycsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAnbicsICd6JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2InLCAncCcsICdvJywgJ3MnLCAnZycsCisgICdlJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdiJywgJ3MnLCAnZScsICdsJywgJ18nLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ3MnLCAnZScsICdsJywgJ2knLCAnXycsCiAgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCi0gICdfJywgJ3YnLCAncycsICdoJywgJ2YnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3YnLCAncycsICdoJywgJ2YnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3YnLCAncycsCi0gICdoJywgJ2YnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAndycsICdyJywgJ2QnLCAncycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3gnLCAnbycsICdyJywgJ18nLCAndicsCisgICdfJywgJ2InLCAncycsICdlJywgJ3QnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAncycsICdlJywgJ3QnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAncycsCisgICdlJywgJ3QnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAncycsICdlJywgJ3QnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2InLCAncycsICdlJywgJ3QnLCAnaScsCisgICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnYicsICdzJywgJ2UnLCAndCcsICdpJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ3MnLCAnZScsICd0JywgJ2knLCAnXycsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2InLCAncycsICdlJywgJ3QnLCAnaScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICd6JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ3onLCAnXycsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2InLCAneicsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYicsICd6JywgJ18nLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdiJywgJ3onLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnZScsCisgICdxJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdjJywgJ2UnLCAncScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsICdlJywgJ3EnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnZScsCisgICdxJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdjJywgJ2UnLCAncScsICdpJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2UnLCAncScsICdpJywgJ18nLCAnZCcsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCi0gICd4JywgJ28nLCAncicsICdpJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnYScsCi0gICdkJywgJ2QnLCAnXycsICdyJywgJ20nLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdhJywgJ2QnLCAnZCcsICdfJywgJ3InLCAnbScsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncicsICdtJywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdhJywgJ2QnLCAnZCcsICdfJywgJ3InLCAnbicsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncicsICduJywgJ18nLCAnZicsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnYScsICdkJywgJ2QnLCAnXycsICdyJywgJ24nLCAnXycsCi0gICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2EnLCAnZCcsCi0gICdkJywgJ18nLCAncicsICdwJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnYScsCi0gICdkJywgJ2QnLCAnXycsICdyJywgJ3AnLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdhJywgJ2QnLCAnZCcsICdfJywgJ3InLCAncCcsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnYScsICdkJywgJ2QnLCAnXycsICdyJywgJ3onLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdhJywgJ2QnLCAnZCcsICdfJywgJ3InLCAneicsICdfJywgJ2YnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncicsICd6JywgJ18nLCAnZicsCi0gICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdiJywgJ2EnLCAncicsCisgICdjJywgJ2UnLCAncScsICdpJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2UnLCAncScsICdpJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2YnLCAnYycsCisgICdtJywgJ3MnLCAnYScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdjJywgJ2wnLCAnZScsICdfJywgJ3MnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsICdlJywgJ18nLCAncycsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnYycsICdsJywgJ2UnLCAnXycsICdzJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2wnLCAnZScsICdfJywgJ3MnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2MnLCAnbCcsICdlJywgJ18nLCAndScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsICdsJywgJ2UnLCAnXycsICd1JywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdjJywgJ2wnLCAnZScsICdfJywgJ3UnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsICdlJywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsCisgICdsJywgJ2UnLCAnaScsICdfJywgJ3MnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsICdlJywgJ2knLCAnXycsICdzJywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdjJywgJ2wnLCAnZScsICdpJywgJ18nLCAncycsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsICdsJywgJ2UnLCAnaScsICdfJywgJ3MnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2MnLCAnbCcsICdlJywgJ2knLCAnXycsICd1JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2wnLCAnZScsICdpJywgJ18nLCAndScsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnYycsICdsJywgJ2UnLCAnaScsICdfJywgJ3UnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsICdlJywgJ2knLCAnXycsCisgICd1JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdjJywgJ2wnLCAndCcsICdfJywgJ3MnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsICd0JywgJ18nLCAncycsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnYycsICdsJywgJ3QnLCAnXycsICdzJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2wnLCAndCcsICdfJywgJ3MnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2MnLCAnbCcsICd0JywgJ18nLCAndScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsICdsJywgJ3QnLCAnXycsICd1JywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdjJywgJ2wnLCAndCcsICdfJywgJ3UnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsICd0JywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsCisgICdsJywgJ3QnLCAnaScsICdfJywgJ3MnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsICd0JywgJ2knLCAnXycsICdzJywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdjJywgJ2wnLCAndCcsICdpJywgJ18nLCAncycsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsICdsJywgJ3QnLCAnaScsICdfJywgJ3MnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2MnLCAnbCcsICd0JywgJ2knLCAnXycsICd1JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ2wnLCAndCcsICdpJywgJ18nLCAndScsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnYycsICdsJywgJ3QnLCAnaScsICdfJywgJ3UnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbCcsICd0JywgJ2knLCAnXycsCisgICd1JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdpJywgJ3AnLCAncycsICdfJywgJ2MnLCAnbScsICdwJywgJ18nLCAnZScsICdxJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYycsCisgICdtJywgJ3AnLCAnXycsICdsJywgJ2UnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdjJywgJ20nLCAncCcsICdfJywgJ2wnLCAndCcsCisgICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdpJywgJ3AnLCAncycsICdfJywgJ2MnLCAnbScsICdwJywgJ2cnLCAnZCcsICd1JywgJ18nLCAnZScsICdxJywgJ18nLCAncScsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCisgICdzJywgJ18nLCAnYycsICdtJywgJ3AnLCAnZycsICdkJywgJ3UnLCAnXycsICdsJywgJ2UnLCAnXycsICdxJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCisgICdjJywgJ20nLCAncCcsICdnJywgJ2QnLCAndScsICdfJywgJ2wnLCAndCcsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2MnLCAnbScsCisgICdwJywgJ2cnLCAndScsICdfJywgJ2UnLCAncScsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2MnLCAnbScsICdwJywgJ2cnLCAndScsCisgICdfJywgJ2wnLCAnZScsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2MnLCAnbScsICdwJywgJ2cnLCAndScsICdfJywgJ2wnLCAndCcsCisgICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdpJywgJ3AnLCAncycsICdfJywgJ2MnLCAnbScsICdwJywgJ3UnLCAnXycsICdlJywgJ3EnLCAnXycsICdxJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCisgICdjJywgJ20nLCAncCcsICd1JywgJ18nLCAnbCcsICdlJywgJ18nLCAncScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnYycsICdtJywgJ3AnLCAndScsCisgICdfJywgJ2wnLCAndCcsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ28nLCAncCcsICd5JywgJ18nLCAncycsICdfJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsCisgICdvJywgJ3AnLCAneScsICdfJywgJ3MnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAnbycsICdwJywgJ3knLCAnXycsICdzJywgJ18nLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdjJywgJ28nLCAncCcsICd5JywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnYycsICdvJywgJ3AnLCAneScsICdfJywgJ3UnLCAnXycsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2MnLCAnbycsICdwJywgJ3knLCAnXycsICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdjJywgJ28nLCAncCcsICd5JywgJ18nLCAndScsCisgICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnYycsICdvJywgJ3AnLCAneScsICdfJywgJ3UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2MnLCAndCcsICdjJywgJ20nLCAncycsCisgICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2QnLCAnaScsICd2JywgJ18nLCAncycsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdpJywgJ3YnLCAnXycsICdzJywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdkJywgJ2knLCAndicsICdfJywgJ3MnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2QnLCAnaScsICd2JywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsCisgICdpJywgJ3YnLCAnXycsICd1JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdkJywgJ2knLCAndicsICdfJywgJ3UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2QnLCAnaScsCisgICd2JywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdpJywgJ3YnLCAnXycsICd1JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2QnLCAnbCcsCisgICdzJywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnZCcsICdvJywgJ3QnLCAncCcsICdfJywgJ3MnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2QnLCAnbycsICd0JywgJ3AnLCAnXycsCisgICdzJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdkJywgJ28nLCAndCcsICdwJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdvJywgJ3QnLCAncCcsCisgICdfJywgJ3UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2QnLCAnbycsICd0JywgJ3AnLCAnXycsICd1JywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdkJywgJ28nLCAndCcsCisgICdwJywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdkJywgJ3AnLCAnYScsICdfJywgJ3cnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsCisgICdwJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdwJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncycsCisgICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnZCcsICdwJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdwJywgJ2EnLCAnZCcsCisgICdkJywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdwJywgJ2EnLCAnZCcsICdkJywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsCisgICdwJywgJ2EnLCAnZCcsICdkJywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdkJywgJ3AnLCAnYScsICdxJywgJ18nLCAncycsCisgICdfJywgJ3cnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdkJywgJ3AnLCAnYScsICdxJywgJ18nLCAncycsICdhJywgJ18nLCAnbCcsCisgICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCisgICdwJywgJ3MnLCAnXycsICdkJywgJ3AnLCAnYScsICdxJywgJ3gnLCAnXycsICdzJywgJ18nLCAndycsICdfJywgJ3AnLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsCisgICdfJywgJ2QnLCAncCcsICdhJywgJ3EnLCAneCcsICdfJywgJ3MnLCAnYScsICdfJywgJ3cnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCisgICdkJywgJ3AnLCAnYScsICd1JywgJ18nLCAnaCcsICdfJywgJ3EnLCAnYicsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnZCcsICdwJywgJ2EnLCAndScsCisgICdfJywgJ2gnLCAnXycsICdxJywgJ2InLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2QnLCAncCcsICdhJywgJ3gnLCAnXycsICd3JywgJ18nLCAncCcsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCisgICdzJywgJ18nLCAnZCcsICdwJywgJ3MnLCAnXycsICd3JywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnZCcsICdwJywgJ3MnLCAncScsCisgICdfJywgJ3MnLCAnXycsICd3JywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnZCcsICdwJywgJ3MnLCAncScsICdfJywgJ3MnLCAnYScsCisgICdfJywgJ2wnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnZCcsICdwJywgJ3MnLCAncScsICd4JywgJ18nLCAncycsICdfJywgJ3cnLCAnXycsCisgICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCisgICdwJywgJ3MnLCAnXycsICdkJywgJ3AnLCAncycsICdxJywgJ3gnLCAnXycsICdzJywgJ2EnLCAnXycsICd3JywgJ18nLCAncCcsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCisgICdzJywgJ18nLCAnZCcsICdwJywgJ3MnLCAndScsICdfJywgJ2gnLCAnXycsICdxJywgJ2InLCAnbCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2QnLCAncCcsCisgICdzJywgJ3UnLCAnXycsICdoJywgJ18nLCAncScsICdiJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdwJywgJ3MnLCAndScsICdiJywgJ18nLCAncycsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnZCcsICdwJywgJ3MnLCAndScsICdiJywgJ18nLCAncycsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdwJywgJ3MnLCAndScsCisgICdiJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdwJywgJ3MnLCAndScsICdiJywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsCisgICdwJywgJ3MnLCAndScsICdiJywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZCcsICdwJywgJ3MnLCAndScsICdiJywgJ18nLCAndScsCisgICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCisgICdwJywgJ3MnLCAnXycsICdkJywgJ3AnLCAncycsICd4JywgJ18nLCAndycsICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2UnLCAneCcsCisgICd0JywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCisgICdwJywgJ3MnLCAnXycsICdlJywgJ3gnLCAndCcsICdwJywgJ2QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2UnLCAneCcsICd0JywgJ3InLCAnXycsCisgICdyJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdpJywgJ3AnLCAncycsICdfJywgJ2UnLCAneCcsICd0JywgJ3InLCAnXycsICdyJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnZScsCisgICd4JywgJ3QnLCAncicsICdfJywgJ3MnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnZScsICd4JywgJ3QnLCAncicsICdfJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCisgICdhJywgJ2QnLCAnZCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdhJywgJ2QnLCAnZCcsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdjJywgJ2EnLCAnZicsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnZicsICdjJywgJ2EnLCAnZicsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdjJywgJ2UnLCAncScsICdfJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCisgICdjJywgJ2UnLCAncScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdjJywgJ2wnLCAnYScsICdzJywgJ3MnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnYycsCisgICdsJywgJ2EnLCAncycsICdzJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAnbCcsICdlJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAnbCcsCisgICdlJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAnbCcsICd0JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAnbCcsICd0JywgJ18nLCAndycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdmJywgJ2MnLCAnbicsICdlJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAnbicsICdlJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAnbycsCisgICdyJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAnbycsICdyJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAndScsICdlJywgJ3EnLCAnXycsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2YnLCAnYycsICd1JywgJ2UnLCAncScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdjJywgJ3UnLCAnbCcsICdlJywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdmJywgJ2MnLCAndScsICdsJywgJ2UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnYycsICd1JywgJ2wnLCAndCcsICdfJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCisgICdjJywgJ3UnLCAnbCcsICd0JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAndScsICduJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAndScsCisgICduJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdmJywgJ2MnLCAndScsICduJywgJ2UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnYycsICd1JywgJ24nLCAnZScsCisgICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnZicsICdkJywgJ2knLCAndicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdkJywgJ2knLCAndicsICdfJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCisgICdlJywgJ3gnLCAnZCcsICdvJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2UnLCAneCcsICdkJywgJ28nLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnZScsCisgICd4JywgJ3AnLCAnMicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdlJywgJ3gnLCAncCcsICcyJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2UnLCAneCcsCisgICd1JywgJ3AnLCAnbCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdlJywgJ3gnLCAndScsICdwJywgJ2wnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnZScsCisgICd4JywgJ3UnLCAncCcsICdyJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ2UnLCAneCcsICd1JywgJ3AnLCAncicsICdfJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCisgICdmJywgJ2knLCAnbicsICd0JywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdmJywgJ2knLCAnbicsICd0JywgJ18nLCAncycsCisgICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnZicsICdmJywgJ2knLCAnbicsICd0JywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdmJywgJ2knLCAnbicsCisgICd0JywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdmJywgJ3EnLCAnbCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdmJywgJ3EnLCAnbCcsCisgICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnZicsICdmJywgJ3EnLCAncicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdmJywgJ3EnLCAncicsICdfJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCisgICdpJywgJ2wnLCAnbCcsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdpJywgJ2wnLCAnbCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdpJywgJ2wnLCAnbCcsCisgICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnZicsICdpJywgJ2wnLCAnbCcsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdsJywgJ28nLCAnZycsICcyJywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdmJywgJ2wnLCAnbycsICdnJywgJzInLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnbScsICdhJywgJ2QnLCAnZCcsICdfJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCisgICdtJywgJ2EnLCAnZCcsICdkJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ20nLCAnYScsICd4JywgJ18nLCAnYScsICdfJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCisgICdtJywgJ2EnLCAneCcsICdfJywgJ2EnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnbScsICdhJywgJ3gnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnbScsCisgICdhJywgJ3gnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnbScsICdpJywgJ24nLCAnXycsICdhJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ20nLCAnaScsCisgICduJywgJ18nLCAnYScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdtJywgJ2knLCAnbicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdtJywgJ2knLCAnbicsCisgICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnZicsICdtJywgJ3MnLCAndScsICdiJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ20nLCAncycsICd1JywgJ2InLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2YnLCAnbScsICd1JywgJ2wnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAnbScsICd1JywgJ2wnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncicsCisgICdjJywgJ3AnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncicsICdjJywgJ3AnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncicsICdpJywgJ24nLCAndCcsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnZicsICdyJywgJ2knLCAnbicsICd0JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnZicsICdyJywgJ3MnLCAncScsICdyJywgJ3QnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICdhJywgJ2YnLCAnXycsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2YnLCAncycsICdhJywgJ2YnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICdlJywgJ3EnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsCisgICdlJywgJ3EnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICdsJywgJ2UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICdsJywgJ2UnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2YnLCAncycsICdsJywgJ3QnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICdsJywgJ3QnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsCisgICduJywgJ2UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICduJywgJ2UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICdvJywgJ3InLCAnXycsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2YnLCAncycsICdvJywgJ3InLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICdxJywgJ3InLCAndCcsICdfJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCisgICdzJywgJ3EnLCAncicsICd0JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ3MnLCAndScsICdiJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ3MnLCAndScsCisgICdiJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdmJywgJ3MnLCAndScsICdlJywgJ3EnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICd1JywgJ2UnLCAncScsCisgICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnZicsICdzJywgJ3UnLCAnbCcsICdlJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ3MnLCAndScsICdsJywgJ2UnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2YnLCAncycsICd1JywgJ2wnLCAndCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICdzJywgJ3UnLCAnbCcsICd0JywgJ18nLCAndycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdmJywgJ3MnLCAndScsICduJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ3MnLCAndScsICduJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ3MnLCAndScsCisgICduJywgJ2UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAncycsICd1JywgJ24nLCAnZScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICd0JywgJ2knLCAnbicsCisgICd0JywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICd0JywgJ2knLCAnbicsICd0JywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsCisgICd0JywgJ2knLCAnbicsICd0JywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnZicsICd0JywgJ2knLCAnbicsICd0JywgJ18nLCAndScsCisgICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnZicsICd0JywgJ3EnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAndCcsICdxJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ3QnLCAncicsCisgICd1JywgJ24nLCAnYycsICdfJywgJ3MnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2YnLCAndCcsICdyJywgJ3UnLCAnbicsICdjJywgJ18nLCAncycsCisgICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnZicsICd0JywgJ3InLCAndScsICduJywgJ2MnLCAnXycsICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdmJywgJ3QnLCAncicsCisgICd1JywgJ24nLCAnYycsICdfJywgJ3UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2gnLCAnYScsICdkJywgJ2QnLCAnXycsICdzJywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdoJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncycsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaCcsICdhJywgJ2QnLCAnZCcsICdfJywgJ3MnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ2gnLCAnYScsICdkJywgJ2QnLCAnXycsICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdoJywgJ2EnLCAnZCcsICdkJywgJ18nLCAndScsCisgICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnaCcsICdhJywgJ2QnLCAnZCcsICdfJywgJ3UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2gnLCAncycsICd1JywgJ2InLCAnXycsCisgICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdoJywgJ3MnLCAndScsICdiJywgJ18nLCAncycsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaCcsICdzJywgJ3UnLCAnYicsCisgICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2gnLCAncycsICd1JywgJ2InLCAnXycsICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdoJywgJ3MnLCAndScsCisgICdiJywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaCcsICdzJywgJ3UnLCAnYicsICdfJywgJ3UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2knLCAnbCcsCisgICd2JywgJ2UnLCAndicsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaScsICdsJywgJ3YnLCAnZScsICd2JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdpJywgJ2wnLCAndicsCisgICdlJywgJ3YnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2knLCAnbCcsICd2JywgJ2UnLCAndicsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaScsICdsJywgJ3YnLCAnbCcsCisgICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnaScsICdsJywgJ3YnLCAnbCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaScsICdsJywgJ3YnLCAnbCcsICdfJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaScsCisgICdsJywgJ3YnLCAnbCcsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaScsICdsJywgJ3YnLCAnbycsICdkJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdpJywgJ2wnLCAndicsCisgICdvJywgJ2QnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2knLCAnbCcsICd2JywgJ28nLCAnZCcsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaScsICdsJywgJ3YnLCAnbycsCisgICdkJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdpJywgJ2wnLCAndicsICdyJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdpJywgJ2wnLCAndicsICdyJywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdpJywgJ2wnLCAndicsICdyJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdpJywgJ2wnLCAndicsICdyJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdpJywgJ24nLCAncycsCisgICdlJywgJ3InLCAndCcsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaScsICduJywgJ3MnLCAnZScsICdyJywgJ3QnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2knLCAnbicsCisgICdzJywgJ2UnLCAncicsICd0JywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdpJywgJ24nLCAncycsICdlJywgJ3InLCAndCcsICdfJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCisgICdpJywgJ24nLCAncycsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2knLCAnbicsICdzJywgJ3YnLCAnZScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnaScsICduJywgJ3MnLCAndicsCisgICdlJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdpJywgJ24nLCAncycsICd2JywgJ2UnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2knLCAnbicsICdzJywgJ3YnLCAnZScsCisgICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCisgICdwJywgJ3MnLCAnXycsICdsJywgJ2InLCAndScsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2wnLCAnZCcsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbCcsICdkJywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdsJywgJ2QnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ2wnLCAnZCcsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbCcsICdkJywgJ2knLCAnXycsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ2wnLCAnZCcsCisgICdpJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdsJywgJ2QnLCAnaScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbCcsICdkJywgJ2knLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnbCcsCisgICdoJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCisgICdwJywgJ3MnLCAnXycsICdsJywgJ3MnLCAnYScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ2wnLCAndycsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnbScsICdhJywgJ2QnLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdtJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdhJywgJ2QnLCAnZCcsICdfJywgJ3EnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ20nLCAnYScsICdkJywgJ2QnLCAncicsICdfJywgJ3EnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnYScsICdkJywgJ2QnLCAncicsCisgICdfJywgJ3EnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnbScsICdhJywgJ2QnLCAnZCcsICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnYScsICdkJywgJ2QnLCAndicsCisgICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnbScsICdhJywgJ2QnLCAnZCcsICd2JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2EnLCAnZCcsICdkJywgJ3YnLCAnXycsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ20nLCAnYScsICdkJywgJ2QnLCAndicsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdtJywgJ2EnLCAncScsICdfJywgJ3MnLCAnXycsCisgICd3JywgJ18nLCAncCcsICdoJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdtJywgJ2EnLCAncScsICdfJywgJ3MnLCAnXycsICd3JywgJ18nLCAncCcsCisgICdoJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCisgICdwJywgJ3MnLCAnXycsICdtJywgJ2EnLCAncScsICdfJywgJ3MnLCAnYScsICdfJywgJ3cnLCAnXycsICdwJywgJ2gnLCAnbCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsCisgICdfJywgJ20nLCAnYScsICdxJywgJ18nLCAncycsICdhJywgJ18nLCAndycsICdfJywgJ3AnLCAnaCcsICdyJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnYScsCisgICd4JywgJ18nLCAnYScsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdhJywgJ3gnLCAnXycsICdhJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2EnLCAneCcsCisgICdfJywgJ2EnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnYScsICd4JywgJ18nLCAnYScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdhJywgJ3gnLCAnXycsCisgICdzJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdtJywgJ2EnLCAneCcsICdfJywgJ3MnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnYScsICd4JywgJ18nLCAncycsCisgICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnbScsICdhJywgJ3gnLCAnXycsICdzJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2EnLCAneCcsICdfJywgJ3UnLCAnXycsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ20nLCAnYScsICd4JywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdhJywgJ3gnLCAnXycsICd1JywgJ18nLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdtJywgJ2EnLCAneCcsICdfJywgJ3UnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnYScsICd4JywgJ2knLCAnXycsICdzJywgJ18nLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdtJywgJ2EnLCAneCcsICdpJywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdhJywgJ3gnLCAnaScsICdfJywgJ3MnLCAnXycsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ20nLCAnYScsICd4JywgJ2knLCAnXycsICdzJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2EnLCAneCcsICdpJywgJ18nLCAndScsCisgICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnbScsICdhJywgJ3gnLCAnaScsICdfJywgJ3UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnYScsICd4JywgJ2knLCAnXycsCisgICd1JywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdtJywgJ2EnLCAneCcsICdpJywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdpJywgJ24nLCAnXycsCisgICdhJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdtJywgJ2knLCAnbicsICdfJywgJ2EnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnaScsICduJywgJ18nLCAnYScsCisgICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnbScsICdpJywgJ24nLCAnXycsICdhJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2knLCAnbicsICdfJywgJ3MnLCAnXycsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ20nLCAnaScsICduJywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdpJywgJ24nLCAnXycsICdzJywgJ18nLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdtJywgJ2knLCAnbicsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnaScsICduJywgJ18nLCAndScsICdfJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsCisgICdpJywgJ24nLCAnXycsICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2knLCAnbicsICdfJywgJ3UnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnaScsCisgICduJywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdpJywgJ24nLCAnaScsICdfJywgJ3MnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnaScsCisgICduJywgJ2knLCAnXycsICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ2knLCAnbicsICdpJywgJ18nLCAncycsICdfJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsCisgICdpJywgJ24nLCAnaScsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnaScsICduJywgJ2knLCAnXycsICd1JywgJ18nLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdtJywgJ2knLCAnbicsICdpJywgJ18nLCAndScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdpJywgJ24nLCAnaScsICdfJywgJ3UnLCAnXycsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ20nLCAnaScsICduJywgJ2knLCAnXycsICd1JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ28nLCAnZCcsICdfJywgJ3MnLCAnXycsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ20nLCAnbycsICdkJywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdvJywgJ2QnLCAnXycsICdzJywgJ18nLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdtJywgJ28nLCAnZCcsICdfJywgJ3MnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnbycsICdkJywgJ18nLCAndScsICdfJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsCisgICdvJywgJ2QnLCAnXycsICd1JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ28nLCAnZCcsICdfJywgJ3UnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAnbycsCisgICdkJywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdtJywgJ28nLCAnZCcsICdzJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ28nLCAndicsCisgICdlJywgJ18nLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAncycsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICdzJywgJ3UnLCAnYicsICdfJywgJ3EnLCAnXycsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ20nLCAncycsICd1JywgJ2InLCAnXycsICdxJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ3MnLCAndScsICdiJywgJ3InLCAnXycsCisgICdxJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdtJywgJ3MnLCAndScsICdiJywgJ3InLCAnXycsICdxJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAncycsCisgICd1JywgJ2InLCAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdtJywgJ3MnLCAndScsICdiJywgJ3YnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAncycsICd1JywgJ2InLCAndicsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnbScsICdzJywgJ3UnLCAnYicsICd2JywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ3MnLCAndScsICdiJywgJ3YnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCisgICdzJywgJ18nLCAnbScsICd0JywgJ2gnLCAnbCcsICdpJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdtJywgJ3UnLCAnbCcsICdfJywgJ3AnLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdtJywgJ3UnLCAnbCcsICdfJywgJ3EnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ20nLCAndScsICdsJywgJ18nLCAncScsICdfJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCisgICdtJywgJ3UnLCAnbCcsICdfJywgJ3MnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdtJywgJ3UnLCAnbCcsICdlJywgJ3EnLCAnXycsCisgICdzJywgJ18nLCAndycsICdfJywgJ3AnLCAnaCcsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnbScsICd1JywgJ2wnLCAnZScsICdxJywgJ18nLCAncycsCisgICdfJywgJ3cnLCAnXycsICdwJywgJ2gnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAndScsICdsJywgJ2UnLCAndScsICdfJywgJ3MnLCAnXycsCisgICdwJywgJ2gnLCAnXycsICdxJywgJ2InLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAndScsICdsJywgJ2UnLCAndScsICdfJywgJ3MnLCAnXycsCisgICdwJywgJ2gnLCAnXycsICdxJywgJ2InLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAndScsICdsJywgJ3EnLCAnXycsICdyJywgJ3MnLCAnXycsCisgICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCisgICdwJywgJ3MnLCAnXycsICdtJywgJ3UnLCAnbCcsICdxJywgJ18nLCAncicsICdzJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAndScsCisgICdsJywgJ3EnLCAnXycsICdzJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnbScsICd1JywgJ2wnLCAncScsICdfJywgJ3MnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ20nLCAndScsICdsJywgJ3InLCAnXycsICdxJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdtJywgJ3UnLCAnbCcsICdyJywgJ18nLCAncScsCisgICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCisgICdwJywgJ3MnLCAnXycsICdtJywgJ3UnLCAnbCcsICdzJywgJ2EnLCAnXycsICd3JywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAnbScsCisgICd1JywgJ2wnLCAncycsICdhJywgJ3EnLCAnXycsICdzJywgJ18nLCAndycsICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ20nLCAndScsCisgICdsJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCisgICdwJywgJ3MnLCAnXycsICdtJywgJ3UnLCAnbCcsICd0JywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICd1JywgJ2wnLCAndicsICdfJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsCisgICd1JywgJ2wnLCAndicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICd1JywgJ2wnLCAndicsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbScsICd1JywgJ2wnLCAndicsCisgICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnbicsICdsJywgJ28nLCAnYycsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsICdsJywgJ28nLCAnYycsICdfJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsCisgICdsJywgJ28nLCAnYycsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsICdsJywgJ28nLCAnYycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsICdsJywgJ3onLCAnYycsCisgICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAnbicsICdsJywgJ3onLCAnYycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsICdsJywgJ3onLCAnYycsICdfJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsCisgICdsJywgJ3onLCAnYycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbicsICdvJywgJ3InLCAnXycsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ24nLCAnbycsICdyJywgJ2knLCAnXycsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ28nLCAncicsICdfJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAnbycsICdyJywgJ2knLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsICdhJywgJ2MnLCAnaycsCisgICdyJywgJ2wnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncCcsICdjJywgJ2snLCAnZScsICd2JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdwJywgJ2MnLCAnaycsCisgICdlJywgJ3YnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ3AnLCAnYycsICdrJywgJ2UnLCAndicsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncCcsICdjJywgJ2snLCAnZScsCisgICd2JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdwJywgJ2MnLCAnaycsICdvJywgJ2QnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3AnLCAnYycsICdrJywgJ28nLCAnZCcsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAncCcsICdjJywgJ2snLCAnbycsICdkJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdwJywgJ2MnLCAnaycsICdvJywgJ2QnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ3AnLCAnYycsICduJywgJ3QnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3AnLCAnYycsICduJywgJ3QnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3AnLCAnYycsCisgICduJywgJ3QnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ3AnLCAnYycsICduJywgJ3QnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsICdpJywgJ2MnLCAnaycsCisgICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdpJywgJ3AnLCAncycsICdfJywgJ3AnLCAnaScsICdjJywgJ2snLCAnXycsICdxJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdwJywgJ3InLCAnZScsCisgICdjJywgJ2UnLCAncScsICdfJywgJ3cnLCAnXycsICdwJywgJ2gnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3AnLCAncicsICdlJywgJ2MnLCAnZScsCisgICdxJywgJ18nLCAndycsICdfJywgJ3AnLCAnaCcsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsICdyJywgJ2UnLCAnYycsICdlJywgJ3EnLCAndScsCisgICdfJywgJ3AnLCAnaCcsICdfJywgJ3EnLCAnYicsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsICdyJywgJ2UnLCAnYycsICdlJywgJ3EnLCAndScsCisgICdfJywgJ3AnLCAnaCcsICdfJywgJ3EnLCAnYicsICdsJywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdwJywgJ3InLCAnZScsICdjJywgJ2UnLCAncScsCisgICd1JywgJ18nLCAncCcsICdoJywgJ18nLCAncScsICdiJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdwJywgJ3InLCAnZScsICdjJywgJ2UnLCAncScsCisgICd1JywgJ18nLCAncCcsICdoJywgJ18nLCAncScsICdiJywgJ3InLCAnYScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3AnLCAncicsICdlJywgJ2MnLCAnZScsCisgICd1JywgJ18nLCAncCcsICdoJywgJ18nLCAncScsICdiJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdwJywgJ3InLCAnZScsICdjJywgJ2UnLCAndScsCisgICdfJywgJ3AnLCAnaCcsICdfJywgJ3EnLCAnYicsICdsJywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdwJywgJ3InLCAnZScsICdjJywgJ2UnLCAndScsCisgICdfJywgJ3AnLCAnaCcsICdfJywgJ3EnLCAnYicsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsICdyJywgJ2UnLCAnYycsICdlJywgJ3UnLCAnXycsCisgICdwJywgJ2gnLCAnXycsICdxJywgJ2InLCAncicsICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsICdyJywgJ2UnLCAnYycsICdyJywgJ18nLCAncScsCisgICdiJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsICdyJywgJ2UnLCAnYycsICdyJywgJ18nLCAncycsICdyJywgJ2EnLCAnXycsCisgICdwJywgJ2gnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncCcsICdyJywgJ2UnLCAnYycsICdyJywgJ18nLCAncycsICdyJywgJ2EnLCAnXycsCisgICdyJywgJ18nLCAncCcsICdoJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3AnLCAncicsICdlJywgJ2MnLCAncicsICdxJywgJ18nLCAncCcsCisgICdoJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdpJywgJ3AnLCAncycsICdfJywgJ3AnLCAncicsICdlJywgJ2MnLCAncicsICdxJywgJ18nLCAncScsICdiJywgJ18nLCAncCcsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCisgICdzJywgJ18nLCAncCcsICdyJywgJ2UnLCAnYycsICdyJywgJ3EnLCAnXycsICdyJywgJ3MnLCAnXycsICdwJywgJ2gnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCisgICdzJywgJ18nLCAncCcsICdyJywgJ2UnLCAnYycsICdyJywgJ3EnLCAndScsICdfJywgJ3MnLCAnXycsICdxJywgJ2InLCAnXycsCisgICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCisgICdwJywgJ3MnLCAnXycsICdwJywgJ3InLCAnZScsICdwJywgJ2UnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncicsICdhJywgJ2QnLCAnZCcsCisgICd1JywgJ18nLCAndycsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3InLCAnZCcsICdkJywgJ3MnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3InLCAnZScsCisgICdwJywgJ2wnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdyJywgJ2UnLCAncCcsICdsJywgJ18nLCAncScsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnYScsCisgICd0JywgJ18nLCAncycsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ2EnLCAndCcsCisgICdfJywgJ3MnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsCisgICd1JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdzJywgJ2EnLCAndCcsICdfJywgJ3UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnYScsICd0JywgJ18nLCAndScsCisgICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAncycsICdhJywgJ3QnLCAnXycsICd1JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ2gnLCAnZicsICdfJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsCisgICdoJywgJ2YnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnaCcsICdmJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3MnLCAnaCcsICdpJywgJ2wnLCAnbycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsCisgICdfJywgJ3MnLCAnaCcsICdsJywgJ2wnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdzJywgJ2gnLCAnbCcsICdsJywgJ18nLCAncScsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCisgICdzJywgJ18nLCAncycsICdoJywgJ2wnLCAnbCcsICdfJywgJ3MnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdzJywgJ2gnLCAnbCcsCisgICdsJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdzJywgJ2gnLCAncicsICdhJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncycsCisgICdoJywgJ3InLCAnYScsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3MnLCAnaCcsICdyJywgJ2EnLCAnXycsICdyJywgJ18nLCAncCcsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCisgICdzJywgJ18nLCAncycsICdoJywgJ3InLCAnYScsICdfJywgJ3InLCAnXycsICdxJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdzJywgJ2gnLCAncicsCisgICdhJywgJ18nLCAncicsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdzJywgJ2gnLCAncicsICdsJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncycsCisgICdoJywgJ3InLCAnbCcsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ2wnLCAnZCcsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdsJywgJ2QnLCAnXycsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ3MnLCAnbCcsICdkJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ2wnLCAnZCcsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdsJywgJ2QnLCAnaScsCisgICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAncycsICdsJywgJ2QnLCAnaScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdsJywgJ2QnLCAnaScsICdfJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsCisgICdsJywgJ2QnLCAnaScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdsJywgJ2wnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnbCcsICdsJywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdzJywgJ2wnLCAnbCcsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdsJywgJ2wnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnbCcsICdsJywgJ2knLCAnXycsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ3MnLCAnbCcsICdsJywgJ2knLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnbCcsICdsJywgJ2knLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAnbCcsCisgICdsJywgJ2knLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAncCcsICdsJywgJ2EnLCAndCcsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdwJywgJ2wnLCAnYScsCisgICd0JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdzJywgJ3AnLCAnbCcsICdhJywgJ3QnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAncCcsICdsJywgJ2EnLCAndCcsCisgICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAncycsICdwJywgJ2wnLCAnYScsICd0JywgJ2knLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAncCcsICdsJywgJ2EnLCAndCcsCisgICdpJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdzJywgJ3AnLCAnbCcsICdhJywgJ3QnLCAnaScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdwJywgJ2wnLCAnYScsCisgICd0JywgJ2knLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAncicsICdhJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsICdfJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsCisgICdyJywgJ2EnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAncicsICdhJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsICdpJywgJ18nLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdzJywgJ3InLCAnYScsICdpJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsICdpJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsCisgICdpJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsICdyJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsICdyJywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdzJywgJ3InLCAnYScsICdyJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsICdyJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsCisgICdyJywgJ2knLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAncicsICdhJywgJ3InLCAnaScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdyJywgJ2EnLCAncicsCisgICdpJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnYScsICdyJywgJ2knLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAncicsICdsJywgJ18nLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdzJywgJ3InLCAnbCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICdyJywgJ2wnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAncicsICdsJywgJ18nLCAndycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdzJywgJ3InLCAnbCcsICdpJywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsICdpJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsCisgICdpJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsICdpJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsICdyJywgJ18nLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdzJywgJ3InLCAnbCcsICdyJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsICdyJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsCisgICdyJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsICdyJywgJ2knLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAncicsICdsJywgJ3InLCAnaScsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAncycsICdyJywgJ2wnLCAncicsICdpJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3InLCAnbCcsICdyJywgJ2knLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ3MnLCAndCcsICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICd0JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3QnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAndCcsCisgICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCisgICdwJywgJ3MnLCAnXycsICdzJywgJ3UnLCAnYicsICdxJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncycsICd1JywgJ2InLCAncScsCisgICdfJywgJ3MnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdzJywgJ3UnLCAnYicsICdxJywgJ18nLCAncycsICdfJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCisgICdzJywgJ3UnLCAnYicsICdxJywgJ2gnLCAnXycsICdwJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsICdzJywgJ3UnLCAnYicsICdxJywgJ2gnLCAnXycsCisgICdyJywgJ18nLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncycsICd1JywgJ2InLCAncScsICdoJywgJ18nLCAncicsICdfJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsICdwJywgJ3MnLCAnXycsCisgICdzJywgJ3UnLCAnYicsICdxJywgJ2gnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAndScsICdiJywgJ3MnLCAnXycsICdzJywgJ18nLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdzJywgJ3UnLCAnYicsICdzJywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICd1JywgJ2InLCAncycsICdfJywgJ3MnLCAnXycsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ3MnLCAndScsICdiJywgJ3MnLCAnXycsICdzJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsICdzJywgJ18nLCAndScsCisgICdfJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsCisgICdhJywgJ18nLCAncycsICd1JywgJ2InLCAncycsICdfJywgJ3UnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAndScsICdiJywgJ3MnLCAnXycsCisgICd1JywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsICdzJywgJ18nLCAndScsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICd1JywgJ2InLCAncycsCisgICd1JywgJ3MnLCAnXycsICd1JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsICdzJywgJ3UnLCAncycsICdfJywgJ3UnLCAnXycsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ3MnLCAndScsICdiJywgJ3MnLCAndScsICdzJywgJ18nLCAndScsICdfJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICd1JywgJ2InLCAncycsCisgICd1JywgJ3MnLCAnXycsICd1JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsICdzJywgJ3UnLCAndScsICdfJywgJ3MnLCAnXycsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ3MnLCAndScsICdiJywgJ3MnLCAndScsICd1JywgJ18nLCAncycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICd1JywgJ2InLCAncycsCisgICd1JywgJ3UnLCAnXycsICdzJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsICdzJywgJ3UnLCAndScsICdfJywgJ3MnLCAnXycsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCisgICdzJywgJ18nLCAncycsICd1JywgJ2InLCAndScsICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3MnLCAndScsICdiJywgJ3UnLCAnXycsCisgICdxJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAnaScsCisgICdwJywgJ3MnLCAnXycsICdzJywgJ3UnLCAnYicsICd1JywgJ18nLCAncycsICdfJywgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdpJywgJ3AnLCAncycsICdfJywgJ3MnLCAndScsCisgICdiJywgJ3UnLCAnXycsICdzJywgJ18nLCAncScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAncycsICd1JywgJ2InLCAndScsICdoJywgJ18nLCAncScsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsCisgICdzJywgJ18nLCAncycsICd1JywgJ2InLCAndScsICdoJywgJ18nLCAncicsICdfJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsCisgICd2JywgJ18nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsCisgICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsICd2JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsICd2JywgJ18nLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsCisgICdzJywgJ3UnLCAnYicsICd2JywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsICd2JywgJ2knLCAnXycsICdiJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3MnLCAndScsCisgICdiJywgJ3YnLCAnaScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ20nLCAncycsICdhJywgJ18nLCAncycsICd1JywgJ2InLCAndicsICdpJywgJ18nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICdzJywgJ3UnLCAnYicsCisgICd2JywgJ2knLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ3YnLCAncycsICdoJywgJ2YnLCAnXycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3YnLCAncycsICdoJywgJ2YnLCAnXycsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsCisgICdfJywgJ3YnLCAncycsICdoJywgJ2YnLCAnXycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdtJywgJ3MnLCAnYScsICdfJywgJ3YnLCAncycsICdoJywgJ2YnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdtJywgJ2knLCAncCcsICdzJywgJ18nLCAndycsCisgICdyJywgJ2QnLCAncycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdtJywgJ3MnLCAnYScsICdfJywgJ3gnLCAnbycsICdyJywgJ18nLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnbScsICdzJywgJ2EnLCAnXycsICd4JywgJ28nLCAncicsICdpJywgJ18nLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnYScsICdkJywgJ2QnLCAnXycsICdyJywgJ20nLCAnXycsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdhJywgJ2QnLCAnZCcsICdfJywgJ3InLCAnbScsCisgICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncicsCisgICdtJywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdhJywgJ2QnLCAnZCcsICdfJywgJ3InLCAnbicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncicsICduJywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnYScsICdkJywgJ2QnLCAnXycsICdyJywgJ24nLCAnXycsICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncicsICdwJywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnYScsICdkJywgJ2QnLCAnXycsICdyJywgJ3AnLCAnXycsCisgICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdhJywgJ2QnLCAnZCcsICdfJywgJ3InLCAncCcsCisgICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnYScsCisgICdkJywgJ2QnLCAnXycsICdyJywgJ3onLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdhJywgJ2QnLCAnZCcsICdfJywgJ3InLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ2EnLCAnZCcsICdkJywgJ18nLCAncicsICd6JywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdiJywgJ2EnLCAncicsICdfJywgJ3MnLCAneScsICduJywgJ2MnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2InLCAnYScsICdyJywgJ18nLCAndycsICdhJywgJ3InLCAncCcsCiAgICdfJywgJ3MnLCAneScsICduJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2InLCAnYScsCi0gICdyJywgJ18nLCAndycsICdhJywgJ3InLCAncCcsICdfJywgJ3MnLCAneScsICduJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2InLCAnYScsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdiJywgJ2EnLCAncicsICdfJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2InLCAnYScsCi0gICdyJywgJ3InLCAnaScsICdlJywgJ3InLCAnXycsICdzJywgJ3knLCAnbicsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdiJywgJ2EnLCAncicsICdyJywgJ2knLCAnZScsICdyJywgJ18nLCAncycsICd5JywgJ24nLCAnYycsCi0gICdfJywgJ2MnLCAnbicsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ3MnLCAneScsICduJywgJ2MnLCAndCcsICdoJywgJ3InLCAnZScsCi0gICdhJywgJ2QnLCAncycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnYicsICdhJywgJ3InLCAnMCcsCi0gICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdiJywgJ2EnLCAncicsCi0gICcwJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdiJywgJ2EnLCAncicsCi0gICcwJywgJ18nLCAncCcsICdvJywgJ3AnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnYicsCi0gICdpJywgJ3QnLCAnYycsICdhJywgJ3MnLCAndCcsICdfJywgJ2QnLCAnMicsICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2InLCAnaScsICd0JywgJ2MnLCAnYScsICdzJywgJ3QnLCAnXycsICdmJywgJzInLCAnaScsCisgICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdiJywgJ2EnLCAncicsICdfJywgJ24nLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2InLCAnYScsICdyJywgJ3InLCAnaScsICdlJywgJ3InLCAnXycsCisgICdzJywgJ3knLCAnbicsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdiJywgJ2EnLCAncicsCisgICdyJywgJ2knLCAnZScsICdyJywgJ18nLCAncycsICd5JywgJ24nLCAnYycsICdfJywgJ2MnLCAnbicsICd0JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ3MnLCAneScsICduJywgJ2MnLCAndCcsICdoJywgJ3InLCAnZScsICdhJywgJ2QnLCAncycsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnYicsICdhJywgJ3InLCAnMCcsICdfJywgJ2EnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdiJywgJ2EnLCAncicsICcwJywgJ18nLCAnbycsICdyJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdiJywgJ2EnLCAncicsICcwJywgJ18nLCAncCcsICdvJywgJ3AnLCAnYycsCiAgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnYicsICdpJywgJ3QnLCAnYycsICdhJywgJ3MnLCAndCcsCi0gICdfJywgJ2knLCAnMicsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdiJywgJ2knLCAndCcsCi0gICdjJywgJ2EnLCAncycsICd0JywgJ18nLCAnbCcsICdsJywgJzInLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAnYycsICdlJywgJ2knLCAnbCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ2MnLCAnZScsICdpJywgJ2wnLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdjJywgJ2UnLCAnaScsICdsJywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdjJywgJ28nLCAncycsICdfJywgJ2EnLCAncCcsICdwJywgJ3InLCAnbycsICd4JywgJ18nLCAnZicsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnYycsICdvJywgJ3MnLCAnXycsICdhJywgJ3AnLCAncCcsCi0gICdyJywgJ28nLCAneCcsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAnZCcsICcyJywgJ2YnLCAnXycsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ2QnLCAnMicsICdmJywgJ18nLCAncicsICdtJywgJ18nLCAnZicsICd0JywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICdmJywgJ18nLCAncicsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdkJywgJzInLCAnZicsICdfJywgJ3InLCAnbicsICdfJywgJ2YnLCAndCcsICd6JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdkJywgJzInLCAnZicsICdfJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsICcyJywgJ2YnLCAnXycsICdyJywgJ3AnLCAnXycsICdmJywgJ3QnLCAneicsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsICcyJywgJ2YnLCAnXycsICdyJywgJ3onLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICdmJywgJ18nLCAncicsICd6JywgJ18nLCAnZicsCi0gICd0JywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICdpJywgJ18nLCAnaCcsCi0gICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdkJywgJzInLCAnaScsICdfJywgJ2wnLCAnbycsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsICcyJywgJ2knLCAnXycsICdyJywgJ20nLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICdpJywgJ18nLCAncicsICduJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdkJywgJzInLCAnaScsICdfJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsICcyJywgJ2knLCAnXycsICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICdsJywgJ2wnLCAnXycsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICdsJywgJ2wnLCAnXycsICdyJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICdsJywgJ2wnLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICdsJywgJ2wnLCAnXycsICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICd1JywgJ2knLCAnXycsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICd1JywgJ2knLCAnXycsICdyJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICd1JywgJ2knLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICd1JywgJ2knLCAnXycsICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICd1JywgJ2wnLCAnbCcsICdfJywgJ3InLCAnbScsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsICcyJywgJ3UnLCAnbCcsICdsJywgJ18nLCAncicsICduJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdkJywgJzInLCAndScsICdsJywgJ2wnLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICd1JywgJ2wnLCAnbCcsICdfJywgJ3InLCAneicsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsICdpJywgJ3YnLCAnXycsICdhJywgJ3AnLCAncCcsCi0gICdyJywgJ28nLCAneCcsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnaScsCi0gICd2JywgJ18nLCAnYScsICdwJywgJ3AnLCAncicsICdvJywgJ3gnLCAnXycsICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnaScsICd2JywgJ18nLCAncicsICdtJywgJ18nLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsICdpJywgJ3YnLCAnXycsICdyJywgJ20nLCAnXycsCi0gICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdkJywgJ2knLCAndicsICdfJywgJ3InLCAnbScsCi0gICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsCi0gICdpJywgJ3YnLCAnXycsICdyJywgJ24nLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdkJywgJ2knLCAndicsICdfJywgJ3InLCAnbicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ2QnLCAnaScsICd2JywgJ18nLCAncicsICduJywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdkJywgJ2knLCAndicsICdfJywgJ3InLCAncCcsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnaScsICd2JywgJ18nLCAncicsICdwJywgJ18nLCAnZicsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsICdpJywgJ3YnLCAnXycsICdyJywgJ3AnLCAnXycsCi0gICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnaScsCi0gICd2JywgJ18nLCAncicsICd6JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsCi0gICdpJywgJ3YnLCAnXycsICdyJywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdkJywgJ2knLCAndicsICdfJywgJ3InLCAneicsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZScsICd4JywgJzInLCAnXycsICdhJywgJ3AnLCAncCcsICdyJywgJ28nLCAneCcsCi0gICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2UnLCAneCcsICcyJywgJ18nLCAnYScsCi0gICdwJywgJ3AnLCAncicsICdvJywgJ3gnLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdlJywgJ3gnLCAnMicsICdfJywgJ2EnLCAncCcsICdwJywgJ3InLCAnbycsICd4JywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsCi0gICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAnaCcsICdfJywgJ3InLCAnbicsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICcyJywgJ2gnLCAnXycsICdyJywgJ24nLCAnXycsCi0gICdmJywgJ3QnLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICcyJywgJ2knLCAnXycsCi0gICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICdpJywgJ18nLCAncicsCi0gICdtJywgJ18nLCAnZicsICd0JywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsCi0gICdpJywgJ18nLCAncicsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAnaScsCisgICdfJywgJ2QnLCAnMicsICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2InLCAnaScsCisgICd0JywgJ2MnLCAnYScsICdzJywgJ3QnLCAnXycsICdmJywgJzInLCAnaScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnYicsICdpJywgJ3QnLCAnYycsICdhJywgJ3MnLCAndCcsICdfJywgJ2knLCAnMicsICdmJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdiJywgJ2knLCAndCcsICdjJywgJ2EnLCAncycsICd0JywgJ18nLCAnbCcsCisgICdsJywgJzInLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnYycsICdlJywgJ2knLCAnbCcsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2MnLCAnZScsICdpJywgJ2wnLCAnXycsCisgICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdjJywgJ2UnLCAnaScsICdsJywgJ18nLCAnZicsCisgICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdjJywgJ28nLCAncycsCisgICdfJywgJ2EnLCAncCcsICdwJywgJ3InLCAnbycsICd4JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnYycsICdvJywgJ3MnLCAnXycsICdhJywgJ3AnLCAncCcsICdyJywgJ28nLCAneCcsICdfJywgJ2YnLCAndCcsCisgICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsICcyJywgJ2YnLCAnXycsCisgICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICdmJywgJ18nLCAncicsCisgICdtJywgJ18nLCAnZicsICd0JywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsCisgICdmJywgJ18nLCAncicsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdkJywgJzInLCAnZicsCiAgICdfJywgJ3InLCAnbicsICdfJywgJ2YnLCAndCcsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdmJywgJzInLCAnaScsICdfJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsCi0gICcyJywgJ2knLCAnXycsICdyJywgJ3AnLCAnXycsICdmJywgJ3QnLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAnZicsICcyJywgJ2knLCAnXycsICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ2YnLCAnMicsICdpJywgJ18nLCAncicsICd6JywgJ18nLCAnZicsICd0JywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICdsJywgJ2wnLCAnXycsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICdsJywgJ2wnLCAnXycsICdyJywgJ20nLCAnXycsICdmJywgJ3QnLCAneicsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICcyJywgJ2wnLCAnbCcsICdfJywgJ3InLCAnbicsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICcyJywgJ2wnLCAnbCcsICdfJywgJ3InLCAnbicsCi0gICdfJywgJ2YnLCAndCcsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAnbCcsCi0gICdsJywgJ18nLCAncicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAnbCcsCi0gICdsJywgJ18nLCAncicsICdwJywgJ18nLCAnZicsICd0JywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ2YnLCAnMicsICdsJywgJ2wnLCAnXycsICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ2YnLCAnMicsICdsJywgJ2wnLCAnXycsICdyJywgJ3onLCAnXycsICdmJywgJ3QnLCAneicsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICcyJywgJ3UnLCAnaScsICdfJywgJ3InLCAnbScsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICcyJywgJ3UnLCAnaScsICdfJywgJ3InLCAnbScsICdfJywgJ2YnLCAndCcsCi0gICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAndScsICdpJywgJ18nLCAncicsCi0gICduJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAndScsICdpJywgJ18nLCAncicsCi0gICduJywgJ18nLCAnZicsICd0JywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsCi0gICd1JywgJ2knLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsCi0gICd1JywgJ2knLCAnXycsICdyJywgJ3AnLCAnXycsICdmJywgJ3QnLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAnZicsICcyJywgJ3UnLCAnaScsICdfJywgJ3InLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAnZicsICcyJywgJ3UnLCAnaScsICdfJywgJ3InLCAneicsICdfJywgJ2YnLCAndCcsICd6JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAndScsICdsJywgJ2wnLCAnXycsICdyJywgJ20nLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICd1JywgJ2wnLCAnbCcsICdfJywgJ3InLCAnbScsCi0gICdfJywgJ2YnLCAndCcsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAndScsCi0gICdsJywgJ2wnLCAnXycsICdyJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsCi0gICd1JywgJ2wnLCAnbCcsICdfJywgJ3InLCAnbicsICdfJywgJ2YnLCAndCcsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdmJywgJzInLCAndScsICdsJywgJ2wnLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICd1JywgJ2wnLCAnbCcsICdfJywgJ3InLCAncCcsICdfJywgJ2YnLCAndCcsCi0gICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAndScsICdsJywgJ2wnLCAnXycsCi0gICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICd1JywgJ2wnLCAnbCcsCi0gICdfJywgJ3InLCAneicsICdfJywgJ2YnLCAndCcsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdmJywgJ2EnLCAnYicsICdzJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsCi0gICdhJywgJ2InLCAncycsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnYScsCi0gICdiJywgJ3MnLCAnXycsICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ2YnLCAnbCcsICdvJywgJ28nLCAncicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ2YnLCAnbCcsICdvJywgJ28nLCAncicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ2YnLCAnbCcsICdvJywgJ28nLCAncicsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICdtJywgJ2EnLCAnXycsICdyJywgJ20nLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJ20nLCAnYScsICdfJywgJ3InLCAnbScsICdfJywgJ2YnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnbScsICdhJywgJ18nLCAncicsICdtJywgJ18nLCAnZicsCi0gICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJ20nLCAnYScsCi0gICdfJywgJ3InLCAnbicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnbScsCi0gICdhJywgJ18nLCAncicsICduJywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsCi0gICdtJywgJ2EnLCAnXycsICdyJywgJ24nLCAnXycsICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnbScsICdhJywgJ18nLCAncicsICdwJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICdtJywgJ2EnLCAnXycsICdyJywgJ3AnLCAnXycsICdmJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJ20nLCAnYScsICdfJywgJ3InLCAncCcsICdfJywgJ2YnLCAndCcsCi0gICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICdtJywgJ2EnLCAnXycsCi0gICdyJywgJ3onLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJ20nLCAnYScsCi0gICdfJywgJ3InLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnbScsCi0gICdhJywgJ18nLCAncicsICd6JywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdmJywgJ20nLCAnYScsICd4JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAnZicsICdtJywgJ2EnLCAneCcsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ2YnLCAnbScsICdhJywgJ3gnLCAnXycsICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnbScsICdpJywgJ24nLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdmJywgJ20nLCAnaScsICduJywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAnZicsICdtJywgJ2knLCAnbicsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICduJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ2knLCAnMicsICdkJywgJ18nLCAncicsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdpJywgJzInLCAnZCcsICdfJywgJ3InLCAnbicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnaScsCi0gICcyJywgJ2QnLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2knLCAnMicsCi0gICdkJywgJ18nLCAncicsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdpJywgJzInLCAnZicsCi0gICdfJywgJ3InLCAnbScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnaScsICcyJywgJ2YnLCAnXycsCi0gICdyJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2knLCAnMicsICdmJywgJ18nLCAncicsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdpJywgJzInLCAnZicsICdfJywgJ3InLCAneicsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnaScsICdzJywgJ3MnLCAncCcsICdhJywgJ2MnLCAnZScsCi0gICdwJywgJ18nLCAnYycsICdvJywgJ24nLCAncycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdpJywgJ3MnLCAncycsICdwJywgJ2EnLCAnYycsICdlJywgJ3AnLCAnXycsICdnJywgJ2wnLCAnbycsICdiJywgJ2EnLCAnbCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnaScsICdzJywgJ3MnLCAncCcsICdhJywgJ2MnLCAnZScsCi0gICdwJywgJ18nLCAnbCcsICdvJywgJ2MnLCAnYScsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdpJywgJ3MnLCAncycsICdwJywgJ2EnLCAnYycsICdlJywgJ3AnLCAnXycsICdzJywgJ2gnLCAnYScsICdyJywgJ2UnLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnaScsICdzJywgJ3QnLCAneScsICdwJywgJ2UnLCAncCcsCi0gICdfJywgJ3MnLCAnYScsICdtJywgJ3AnLCAnbCcsICdlJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ2knLCAncycsICd0JywgJ3knLCAncCcsICdlJywgJ3AnLCAnXycsICdzJywgJ3UnLCAncicsICdmJywgJ2EnLCAnYycsCi0gICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdpJywgJ3MnLCAndCcsICd5JywgJ3AnLCAnZScsCi0gICdwJywgJ18nLCAndCcsICdlJywgJ3gnLCAndCcsICd1JywgJ3InLCAnZScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAnbCcsICdnJywgJzInLCAnXycsICdhJywgJ3AnLCAncCcsICdyJywgJ28nLCAneCcsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2wnLCAnZycsICcyJywgJ18nLCAnYScsICdwJywgJ3AnLCAncicsCi0gICdvJywgJ3gnLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdsJywgJ2cnLCAnMicsCi0gICdfJywgJ2EnLCAncCcsICdwJywgJ3InLCAnbycsICd4JywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdsJywgJ2wnLCAnMicsICdkJywgJ18nLCAncicsICdtJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdsJywgJ2wnLCAnMicsICdkJywgJ18nLCAncicsICduJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdsJywgJ2wnLCAnMicsICdkJywgJ18nLCAncicsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdsJywgJ2wnLCAnMicsICdkJywgJ18nLCAncicsICd6JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdsJywgJ2wnLCAnMicsICdmJywgJ18nLCAncicsICdtJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdsJywgJ2wnLCAnMicsICdmJywgJ18nLCAncicsICduJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdsJywgJ2wnLCAnMicsICdmJywgJ18nLCAncicsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdsJywgJ2wnLCAnMicsICdmJywgJ18nLCAncicsICd6JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdsJywgJ28nLCAnaCcsICdpJywgJ18nLCAnaScsICcyJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ20nLCAnYScsICd0JywgJ2MnLCAnaCcsICdfJywgJ2EnLCAnbicsCi0gICd5JywgJ18nLCAncycsICd5JywgJ24nLCAnYycsICdfJywgJ2knLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdtJywgJ2EnLCAndCcsICdjJywgJ2gnLCAnXycsICdhJywgJ24nLCAneScsICdfJywgJ3MnLCAneScsCi0gICduJywgJ2MnLCAnXycsICdpJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbScsCi0gICdlJywgJ20nLCAnYicsICdhJywgJ3InLCAnXycsICdjJywgJ3QnLCAnYScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAnbScsICdlJywgJ20nLCAnYicsICdhJywgJ3InLCAnXycsICdnJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ20nLCAnZScsICdtJywgJ2InLCAnYScsICdyJywgJ18nLCAncycsICd5JywgJ3MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ20nLCAndScsICdsJywgJ18nLCAncicsICdtJywgJ18nLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbScsICd1JywgJ2wnLCAnXycsICdyJywgJ20nLCAnXycsCi0gICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdtJywgJ3UnLCAnbCcsICdfJywgJ3InLCAnbScsCi0gICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbScsCi0gICd1JywgJ2wnLCAnXycsICdyJywgJ24nLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdtJywgJ3UnLCAnbCcsICdfJywgJ3InLCAnbicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ20nLCAndScsICdsJywgJ18nLCAncicsICduJywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdtJywgJ3UnLCAnbCcsICdfJywgJ3InLCAncCcsICdfJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ20nLCAndScsICdsJywgJ18nLCAncicsICdwJywgJ18nLCAnZicsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbScsICd1JywgJ2wnLCAnXycsICdyJywgJ3AnLCAnXycsCi0gICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ20nLCAndScsCi0gICdsJywgJ18nLCAncicsICd6JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbScsCi0gICd1JywgJ2wnLCAnXycsICdyJywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdtJywgJ3UnLCAnbCcsICdfJywgJ3InLCAneicsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbScsICd1JywgJ2wnLCAnMicsICc0JywgJ18nLCAnaScsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbScsICd1JywgJ2wnLCAnMicsICc0JywgJ18nLCAndScsICdpJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdtJywgJ3UnLCAnbCcsICdoJywgJ2knLCAnXycsICdpJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdtJywgJ3UnLCAnbCcsICdoJywgJ2knLCAnXycsICdsJywgJ2wnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ20nLCAndScsICdsJywgJ2gnLCAnaScsICdfJywgJ3UnLCAnaScsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbScsICd1JywgJ2wnLCAnaCcsICdpJywgJ18nLCAndScsCi0gICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3AnLCAncicsICdtJywgJ3QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnYycsICdwJywgJ18nLCAnYScsICdwJywgJ3AnLCAncicsCi0gICdvJywgJ3gnLCAnXycsICdmJywgJ3QnLCAneicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3InLCAnYycsICdwJywgJ18nLCAncicsICdtJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncicsICdjJywgJ3AnLCAnXycsICdyJywgJ20nLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdyJywgJ2MnLCAncCcsICdfJywgJ3InLCAnbScsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdjJywgJ3AnLCAnXycsICdyJywgJ24nLCAnXycsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2MnLCAncCcsICdfJywgJ3InLCAnbicsCi0gICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnYycsICdwJywgJ18nLCAncicsCisgICdkJywgJzInLCAnZicsICdfJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsCisgICcyJywgJ2YnLCAnXycsICdyJywgJ3AnLCAnXycsICdmJywgJ3QnLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnZCcsICcyJywgJ2YnLCAnXycsICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ2QnLCAnMicsICdmJywgJ18nLCAncicsICd6JywgJ18nLCAnZicsICd0JywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsICdpJywgJ18nLCAnaCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdkJywgJzInLCAnaScsICdfJywgJ2wnLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnZCcsICcyJywgJ2knLCAnXycsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ2QnLCAnMicsICdpJywgJ18nLCAncicsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdkJywgJzInLCAnaScsICdfJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsCisgICcyJywgJ2knLCAnXycsICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsCisgICdsJywgJ2wnLCAnXycsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsCisgICdsJywgJ2wnLCAnXycsICdyJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsCisgICdsJywgJ2wnLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsCisgICdsJywgJ2wnLCAnXycsICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsCisgICd1JywgJ2knLCAnXycsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsCisgICd1JywgJ2knLCAnXycsICdyJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsCisgICd1JywgJ2knLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsCisgICd1JywgJ2knLCAnXycsICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnMicsCisgICd1JywgJ2wnLCAnbCcsICdfJywgJ3InLCAnbScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsCisgICcyJywgJ3UnLCAnbCcsICdsJywgJ18nLCAncicsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdkJywgJzInLCAndScsICdsJywgJ2wnLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ2QnLCAnMicsICd1JywgJ2wnLCAnbCcsICdfJywgJ3InLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnZCcsICdpJywgJ3YnLCAnXycsICdhJywgJ3AnLCAncCcsICdyJywgJ28nLCAneCcsICdfJywgJ2YnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnaScsICd2JywgJ18nLCAnYScsICdwJywgJ3AnLCAncicsCisgICdvJywgJ3gnLCAnXycsICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ2QnLCAnaScsICd2JywgJ18nLCAncicsICdtJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnZCcsICdpJywgJ3YnLCAnXycsICdyJywgJ20nLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdkJywgJ2knLCAndicsICdfJywgJ3InLCAnbScsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsICdpJywgJ3YnLCAnXycsICdyJywgJ24nLCAnXycsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdkJywgJ2knLCAndicsICdfJywgJ3InLCAnbicsCisgICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnaScsICd2JywgJ18nLCAncicsCiAgICduJywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdyJywgJ2MnLCAncCcsICdfJywgJ3InLCAncCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3InLCAnYycsICdwJywgJ18nLCAncicsICdwJywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncicsICdjJywgJ3AnLCAnXycsICdyJywgJ3AnLCAnXycsICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnYycsICdwJywgJ18nLCAncicsICd6JywgJ18nLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdjJywgJ3AnLCAnXycsICdyJywgJ3onLCAnXycsCi0gICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2MnLCAncCcsICdfJywgJ3InLCAneicsCi0gICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsCi0gICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ2MnLCAnbCcsCi0gICdvJywgJ2MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsCi0gICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ2MnLCAnbCcsICdvJywgJ2MnLCAnaycsCi0gICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsCi0gICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdjJywgJ3QnLCAnYScsICdpJywgJ2QnLCAnXycsCi0gICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsCi0gICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnYycsICd0JywgJ2EnLCAnaScsICdkJywgJ18nLCAneCcsCisgICdkJywgJ2knLCAndicsICdfJywgJ3InLCAncCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ2QnLCAnaScsICd2JywgJ18nLCAncicsICdwJywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnZCcsICdpJywgJ3YnLCAnXycsICdyJywgJ3AnLCAnXycsICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2QnLCAnaScsICd2JywgJ18nLCAncicsICd6JywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZCcsICdpJywgJ3YnLCAnXycsICdyJywgJ3onLCAnXycsCisgICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdkJywgJ2knLCAndicsICdfJywgJ3InLCAneicsCisgICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZScsCisgICd4JywgJzInLCAnXycsICdhJywgJ3AnLCAncCcsICdyJywgJ28nLCAneCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ2UnLCAneCcsICcyJywgJ18nLCAnYScsICdwJywgJ3AnLCAncicsICdvJywgJ3gnLCAnXycsCisgICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdlJywgJ3gnLCAnMicsICdfJywgJ2EnLCAncCcsCisgICdwJywgJ3InLCAnbycsICd4JywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdmJywgJzInLCAnaCcsICdfJywgJ3InLCAnbicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnZicsICcyJywgJ2gnLCAnXycsICdyJywgJ24nLCAnXycsICdmJywgJ3QnLCAneicsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICcyJywgJ2knLCAnXycsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICdpJywgJ18nLCAncicsICdtJywgJ18nLCAnZicsICd0JywgJ3onLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICdpJywgJ18nLCAncicsICduJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAnaScsICdfJywgJ3InLCAnbicsICdfJywgJ2YnLCAndCcsCisgICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAnaScsICdfJywgJ3InLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICcyJywgJ2knLCAnXycsICdyJywgJ3AnLCAnXycsCisgICdmJywgJ3QnLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICcyJywgJ2knLCAnXycsCisgICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICdpJywgJ18nLCAncicsCisgICd6JywgJ18nLCAnZicsICd0JywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsCisgICdsJywgJ2wnLCAnXycsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsCisgICdsJywgJ2wnLCAnXycsICdyJywgJ20nLCAnXycsICdmJywgJ3QnLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnZicsICcyJywgJ2wnLCAnbCcsICdfJywgJ3InLCAnbicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnZicsICcyJywgJ2wnLCAnbCcsICdfJywgJ3InLCAnbicsICdfJywgJ2YnLCAndCcsICd6JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAnbCcsICdsJywgJ18nLCAncicsICdwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAnbCcsICdsJywgJ18nLCAncicsICdwJywgJ18nLCAnZicsCisgICd0JywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICdsJywgJ2wnLCAnXycsCisgICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICdsJywgJ2wnLCAnXycsCisgICdyJywgJ3onLCAnXycsICdmJywgJ3QnLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsCisgICcyJywgJ3UnLCAnaScsICdfJywgJ3InLCAnbScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsCisgICcyJywgJ3UnLCAnaScsICdfJywgJ3InLCAnbScsICdfJywgJ2YnLCAndCcsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdmJywgJzInLCAndScsICdpJywgJ18nLCAncicsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdmJywgJzInLCAndScsICdpJywgJ18nLCAncicsICduJywgJ18nLCAnZicsICd0JywgJ3onLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICd1JywgJ2knLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICd1JywgJ2knLCAnXycsICdyJywgJ3AnLCAnXycsCisgICdmJywgJ3QnLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICcyJywgJ3UnLCAnaScsCisgICdfJywgJ3InLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICcyJywgJ3UnLCAnaScsCisgICdfJywgJ3InLCAneicsICdfJywgJ2YnLCAndCcsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdmJywgJzInLCAndScsICdsJywgJ2wnLCAnXycsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ2YnLCAnMicsICd1JywgJ2wnLCAnbCcsICdfJywgJ3InLCAnbScsICdfJywgJ2YnLCAndCcsICd6JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAndScsICdsJywgJ2wnLCAnXycsICdyJywgJ24nLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICd1JywgJ2wnLCAnbCcsICdfJywgJ3InLCAnbicsCisgICdfJywgJ2YnLCAndCcsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJzInLCAndScsCisgICdsJywgJ2wnLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsCisgICd1JywgJ2wnLCAnbCcsICdfJywgJ3InLCAncCcsICdfJywgJ2YnLCAndCcsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdmJywgJzInLCAndScsICdsJywgJ2wnLCAnXycsICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnMicsICd1JywgJ2wnLCAnbCcsICdfJywgJ3InLCAneicsICdfJywgJ2YnLCAndCcsCisgICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJ2EnLCAnYicsICdzJywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICdhJywgJ2InLCAncycsICdfJywgJ2YnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnYScsICdiJywgJ3MnLCAnXycsICdmJywgJ3QnLCAneicsCisgICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnbCcsICdvJywgJ28nLCAncicsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnbCcsICdvJywgJ28nLCAncicsCisgICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnbCcsICdvJywgJ28nLCAncicsCisgICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsCisgICdtJywgJ2EnLCAnXycsICdyJywgJ20nLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdmJywgJ20nLCAnYScsICdfJywgJ3InLCAnbScsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ2YnLCAnbScsICdhJywgJ18nLCAncicsICdtJywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJ20nLCAnYScsICdfJywgJ3InLCAnbicsICdfJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnbScsICdhJywgJ18nLCAncicsICduJywgJ18nLCAnZicsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICdtJywgJ2EnLCAnXycsICdyJywgJ24nLCAnXycsCisgICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnbScsCisgICdhJywgJ18nLCAncicsICdwJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsCisgICdtJywgJ2EnLCAnXycsICdyJywgJ3AnLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdmJywgJ20nLCAnYScsICdfJywgJ3InLCAncCcsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICdtJywgJ2EnLCAnXycsICdyJywgJ3onLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJ20nLCAnYScsICdfJywgJ3InLCAneicsICdfJywgJ2YnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnbScsICdhJywgJ18nLCAncicsICd6JywgJ18nLCAnZicsCisgICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJ20nLCAnYScsCisgICd4JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICdtJywgJ2EnLCAneCcsCisgICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnbScsICdhJywgJ3gnLCAnXycsCisgICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2YnLCAnbScsCisgICdpJywgJ24nLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdmJywgJ20nLCAnaScsCisgICduJywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsICdtJywgJ2knLCAnbicsCisgICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnZicsCisgICduJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2knLCAnMicsICdkJywgJ18nLCAncicsCisgICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdpJywgJzInLCAnZCcsICdfJywgJ3InLCAnbicsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnaScsICcyJywgJ2QnLCAnXycsICdyJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2knLCAnMicsICdkJywgJ18nLCAncicsICd6JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdpJywgJzInLCAnZicsICdfJywgJ3InLCAnbScsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnaScsICcyJywgJ2YnLCAnXycsICdyJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ2knLCAnMicsICdmJywgJ18nLCAncicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdpJywgJzInLCAnZicsICdfJywgJ3InLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnaScsICdzJywgJ3MnLCAncCcsICdhJywgJ2MnLCAnZScsICdwJywgJ18nLCAnYycsICdvJywgJ24nLCAncycsCisgICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdpJywgJ3MnLCAncycsICdwJywgJ2EnLCAnYycsCisgICdlJywgJ3AnLCAnXycsICdnJywgJ2wnLCAnbycsICdiJywgJ2EnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnaScsICdzJywgJ3MnLCAncCcsICdhJywgJ2MnLCAnZScsICdwJywgJ18nLCAnbCcsICdvJywgJ2MnLCAnYScsCisgICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdpJywgJ3MnLCAncycsICdwJywgJ2EnLCAnYycsCisgICdlJywgJ3AnLCAnXycsICdzJywgJ2gnLCAnYScsICdyJywgJ2UnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnaScsICdzJywgJ3QnLCAneScsICdwJywgJ2UnLCAncCcsICdfJywgJ3MnLCAnYScsICdtJywgJ3AnLCAnbCcsCisgICdlJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ2knLCAncycsICd0JywgJ3knLCAncCcsCisgICdlJywgJ3AnLCAnXycsICdzJywgJ3UnLCAncicsICdmJywgJ2EnLCAnYycsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdpJywgJ3MnLCAndCcsICd5JywgJ3AnLCAnZScsICdwJywgJ18nLCAndCcsICdlJywgJ3gnLCAndCcsCisgICd1JywgJ3InLCAnZScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbCcsICdnJywgJzInLCAnXycsCisgICdhJywgJ3AnLCAncCcsICdyJywgJ28nLCAneCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ2wnLCAnZycsICcyJywgJ18nLCAnYScsICdwJywgJ3AnLCAncicsICdvJywgJ3gnLCAnXycsICdmJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdsJywgJ2cnLCAnMicsICdfJywgJ2EnLCAncCcsICdwJywgJ3InLCAnbycsCisgICd4JywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdsJywgJ2wnLCAnMicsICdkJywgJ18nLCAncicsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdsJywgJ2wnLCAnMicsICdkJywgJ18nLCAncicsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdsJywgJ2wnLCAnMicsICdkJywgJ18nLCAncicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdsJywgJ2wnLCAnMicsICdkJywgJ18nLCAncicsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdsJywgJ2wnLCAnMicsICdmJywgJ18nLCAncicsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdsJywgJ2wnLCAnMicsICdmJywgJ18nLCAncicsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdsJywgJ2wnLCAnMicsICdmJywgJ18nLCAncicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdsJywgJ2wnLCAnMicsICdmJywgJ18nLCAncicsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdsJywgJ28nLCAnaCcsICdpJywgJ18nLCAnaScsICcyJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ20nLCAnYScsICd0JywgJ2MnLCAnaCcsICdfJywgJ2EnLCAnbicsICd5JywgJ18nLCAncycsICd5JywgJ24nLCAnYycsCisgICdfJywgJ2knLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdtJywgJ2EnLCAndCcsCisgICdjJywgJ2gnLCAnXycsICdhJywgJ24nLCAneScsICdfJywgJ3MnLCAneScsICduJywgJ2MnLCAnXycsICdpJywgJzYnLCAnNCcsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbScsICdlJywgJ20nLCAnYicsICdhJywgJ3InLCAnXycsCisgICdjJywgJ3QnLCAnYScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbScsICdlJywgJ20nLCAnYicsCisgICdhJywgJ3InLCAnXycsICdnJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ20nLCAnZScsCisgICdtJywgJ2InLCAnYScsICdyJywgJ18nLCAncycsICd5JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ20nLCAndScsICdsJywgJ18nLCAncicsICdtJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnbScsICd1JywgJ2wnLCAnXycsICdyJywgJ20nLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdtJywgJ3UnLCAnbCcsICdfJywgJ3InLCAnbScsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbScsICd1JywgJ2wnLCAnXycsICdyJywgJ24nLCAnXycsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdtJywgJ3UnLCAnbCcsICdfJywgJ3InLCAnbicsCisgICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ20nLCAndScsICdsJywgJ18nLCAncicsCisgICduJywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdtJywgJ3UnLCAnbCcsICdfJywgJ3InLCAncCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ20nLCAndScsICdsJywgJ18nLCAncicsICdwJywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnbScsICd1JywgJ2wnLCAnXycsICdyJywgJ3AnLCAnXycsICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ20nLCAndScsICdsJywgJ18nLCAncicsICd6JywgJ18nLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbScsICd1JywgJ2wnLCAnXycsICdyJywgJ3onLCAnXycsCisgICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdtJywgJ3UnLCAnbCcsICdfJywgJ3InLCAneicsCisgICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbScsCisgICd1JywgJ2wnLCAnMicsICc0JywgJ18nLCAnaScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAnbScsCisgICd1JywgJ2wnLCAnMicsICc0JywgJ18nLCAndScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdtJywgJ3UnLCAnbCcsICdoJywgJ2knLCAnXycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdtJywgJ3UnLCAnbCcsICdoJywgJ2knLCAnXycsICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ20nLCAndScsICdsJywgJ2gnLCAnaScsICdfJywgJ3UnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAnbScsICd1JywgJ2wnLCAnaCcsICdpJywgJ18nLCAndScsICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3AnLCAncicsICdtJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3InLCAnYycsICdwJywgJ18nLCAnYScsICdwJywgJ3AnLCAncicsICdvJywgJ3gnLCAnXycsICdmJywgJ3QnLCAneicsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnYycsICdwJywgJ18nLCAncicsCisgICdtJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdjJywgJ3AnLCAnXycsCisgICdyJywgJ20nLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2MnLCAncCcsCisgICdfJywgJ3InLCAnbScsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncicsICdjJywgJ3AnLCAnXycsICdyJywgJ24nLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdyJywgJ2MnLCAncCcsICdfJywgJ3InLCAnbicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnYycsICdwJywgJ18nLCAncicsICduJywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsCisgICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2MnLCAncCcsICdfJywgJ3InLCAncCcsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnYycsICdwJywgJ18nLCAncicsCisgICdwJywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdjJywgJ3AnLCAnXycsCisgICdyJywgJ3AnLCAnXycsICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3InLCAnYycsICdwJywgJ18nLCAncicsICd6JywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncicsICdjJywgJ3AnLCAnXycsICdyJywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdyJywgJ2MnLCAncCcsICdfJywgJ3InLCAneicsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsCiAgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsCi0gICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ2MnLCAndCcsICdhJywgJ2knLCAnZCcsICdfJywgJ3knLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsCi0gICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdjJywgJ3QnLCAnYScsICdpJywgJ2QnLCAnXycsICd6JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsCi0gICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCisgICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ2MnLCAnbCcsICdvJywgJ2MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCiAgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsCi0gICdyJywgJ2UnLCAnZycsICdfJywgJ2UnLCAnbicsICd2JywgJ3InLCAnZScsICdnJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICdyJywgJ2UnLCAnZycsICdfJywgJ2MnLCAnbCcsICdvJywgJ2MnLCAnaycsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCiAgICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCi0gICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsICdyJywgJ2UnLCAnZycsICcxJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCi0gICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsICdyJywgJ2UnLCAnZycsICcxJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCi0gICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsICdyJywgJ2UnLCAnZycsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCi0gICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsICdyJywgJ2UnLCAnZycsICcxJywgJzMnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCi0gICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsICdyJywgJ2UnLCAnZycsICcxJywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCi0gICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsICdyJywgJ2UnLCAnZycsICcxJywgJzUnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCi0gICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsICdyJywgJ2UnLCAnZycsICcxJywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCi0gICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsICdyJywgJ2UnLCAnZycsICcxJywgJzcnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCi0gICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsICdyJywgJ2UnLCAnZycsICcxJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCi0gICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsICdyJywgJ2UnLCAnZycsICcxJywgJzknLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCi0gICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsICdyJywgJ2UnLCAnZycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICdlJywgJ2cnLCAnXycsICdjJywgJ3QnLCAnYScsICdpJywgJ2QnLCAnXycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCiAgICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsCi0gICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnMicsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsCi0gICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnMicsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsCi0gICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnMicsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsCi0gICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnMicsICczJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsCi0gICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnMicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsCi0gICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnMicsICc1JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsCi0gICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnMicsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsCi0gICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnMicsICc3JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsCi0gICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsCi0gICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnMicsICc5JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsCi0gICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnMycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdnJywgJ18nLCAnYycsICd0JywgJ2EnLCAnaScsICdkJywgJ18nLCAneCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCiAgICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsCi0gICdfJywgJ2UnLCAnbicsICd2JywgJ3InLCAnZScsICdnJywgJzMnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsCi0gICdfJywgJ2UnLCAnbicsICd2JywgJ3InLCAnZScsICdnJywgJzMnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsCi0gICdfJywgJ2UnLCAnbicsICd2JywgJ3InLCAnZScsICdnJywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ2MnLCAndCcsICdhJywgJ2knLCAnZCcsICdfJywgJ3knLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCiAgICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsCi0gICdlJywgJ24nLCAndicsICdyJywgJ2UnLCAnZycsICc1JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdjJywgJ3QnLCAnYScsICdpJywgJ2QnLCAnXycsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCiAgICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsCi0gICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsCisgICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsCiAgICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ2UnLCAnbicsCi0gICd2JywgJ3InLCAnZScsICdnJywgJzcnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCisgICd2JywgJ3InLCAnZScsICdnJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCiAgICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsCi0gICdyJywgJ2UnLCAnZycsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsCisgICdyJywgJ2UnLCAnZycsICcxJywgJzAnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCisgICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsCisgICdyJywgJ2UnLCAnZycsICcxJywgJzEnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCisgICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsCisgICdyJywgJ2UnLCAnZycsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCisgICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsCisgICdyJywgJ2UnLCAnZycsICcxJywgJzMnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCisgICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsCisgICdyJywgJ2UnLCAnZycsICcxJywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCisgICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsCisgICdyJywgJ2UnLCAnZycsICcxJywgJzUnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCisgICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsCisgICdyJywgJ2UnLCAnZycsICcxJywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCisgICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsCisgICdyJywgJ2UnLCAnZycsICcxJywgJzcnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCisgICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsCisgICdyJywgJ2UnLCAnZycsICcxJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCisgICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsCisgICdyJywgJ2UnLCAnZycsICcxJywgJzknLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCisgICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsCisgICdyJywgJ2UnLCAnZycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsCiAgICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsCi0gICdlJywgJ2cnLCAnOScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsCi0gICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ2cnLCAncicsICdpJywgJ2QnLCAnaScsCi0gICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsCi0gICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnbCcsICdhJywgJ24nLCAnZScsICdpJywgJ2QnLCAnXDAwMCcsCisgICdlJywgJ2cnLCAnMicsICcwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsCisgICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsCisgICdlJywgJ2cnLCAnMicsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsCisgICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsCisgICdlJywgJ2cnLCAnMicsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsCisgICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsCisgICdlJywgJ2cnLCAnMicsICczJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsCisgICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsCisgICdlJywgJ2cnLCAnMicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsCisgICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsCisgICdlJywgJ2cnLCAnMicsICc1JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsCisgICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsCisgICdlJywgJ2cnLCAnMicsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsCisgICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsCisgICdlJywgJ2cnLCAnMicsICc3JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsCisgICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsCisgICdlJywgJ2cnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsCisgICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsCisgICdlJywgJ2cnLCAnMicsICc5JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsCisgICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsCisgICdlJywgJ2cnLCAnMycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsCisgICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ2UnLCAnbicsICd2JywgJ3InLCAnZScsCisgICdnJywgJzMnLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsCisgICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ2UnLCAnbicsICd2JywgJ3InLCAnZScsCisgICdnJywgJzMnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsCisgICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ2UnLCAnbicsICd2JywgJ3InLCAnZScsCisgICdnJywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsCisgICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsICdyJywgJ2UnLCAnZycsCisgICc1JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsCisgICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnNicsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsCisgICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ2UnLCAnbicsICd2JywgJ3InLCAnZScsICdnJywgJzcnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsCisgICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdlJywgJ24nLCAndicsICdyJywgJ2UnLCAnZycsICc4JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsCisgICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnZScsICduJywgJ3YnLCAncicsICdlJywgJ2cnLCAnOScsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsCisgICdyJywgJ2UnLCAnZycsICdfJywgJ2cnLCAncicsICdpJywgJ2QnLCAnaScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsCisgICdnJywgJ18nLCAnbCcsICdhJywgJ24nLCAnZScsICdpJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsCisgICdsJywgJ2EnLCAnbicsICdlJywgJ20nLCAnYScsICdzJywgJ2snLCAnXycsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCisgICdlJywgJ2cnLCAnXycsICdsJywgJ2EnLCAnbicsICdlJywgJ20nLCAnYScsICdzJywgJ2snLCAnXycsICdnJywgJ2UnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsCiAgICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdsJywgJ2EnLCAnbicsICdlJywgJ20nLCAnYScsICdzJywgJ2snLCAnXycsCi0gICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsCisgICdnJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsCiAgICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdsJywgJ2EnLCAnbicsICdlJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXycsICdnJywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCisgICdzJywgJ2snLCAnXycsICdsJywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCiAgICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdsJywgJ2EnLCAnbicsCi0gICdlJywgJ20nLCAnYScsICdzJywgJ2snLCAnXycsICdnJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdlJywgJ20nLCAnYScsICdzJywgJ2snLCAnXycsICdsJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCiAgICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsCi0gICdsJywgJ2EnLCAnbicsICdlJywgJ20nLCAnYScsICdzJywgJ2snLCAnXycsICdsJywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCi0gICdlJywgJ2cnLCAnXycsICdsJywgJ2EnLCAnbicsICdlJywgJ20nLCAnYScsICdzJywgJ2snLCAnXycsICdsJywgJ3QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsCi0gICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICduJywgJ2MnLCAndCcsICdhJywgJ2knLCAnZCcsICdfJywgJ3cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsCi0gICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICduJywgJ2MnLCAndCcsICdhJywgJ2knLCAnZCcsICdfJywgJ3gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsCi0gICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICduJywgJ2MnLCAndCcsICdhJywgJ2knLCAnZCcsICdfJywgJ3knLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsCi0gICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICduJywgJ2MnLCAndCcsICdhJywgJ2knLCAnZCcsICdfJywgJ3onLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsCi0gICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICduJywgJ3MnLCAnbScsICdpJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCi0gICdlJywgJ2cnLCAnXycsICduJywgJ3QnLCAnaScsICdkJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsCi0gICdfJywgJ24nLCAndCcsICdpJywgJ2QnLCAnXycsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnbicsCi0gICd0JywgJ2knLCAnZCcsICdfJywgJ3knLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCisgICduJywgJ2MnLCAndCcsICdhJywgJ2knLCAnZCcsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsCisgICduJywgJ2MnLCAndCcsICdhJywgJ2knLCAnZCcsICdfJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsCisgICduJywgJ2MnLCAndCcsICdhJywgJ2knLCAnZCcsICdfJywgJ3knLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsCisgICduJywgJ2MnLCAndCcsICdhJywgJ2knLCAnZCcsICdfJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsCisgICduJywgJ3MnLCAnbScsICdpJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCiAgICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICduJywgJ3QnLCAnaScsCi0gICdkJywgJ18nLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsCi0gICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ24nLCAndycsICdhJywgJ3InLCAncCcsCi0gICdpJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsCi0gICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdwJywgJ20nLCAnMCcsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsCi0gICdyJywgJ2UnLCAnZycsICdfJywgJ3AnLCAnbScsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAncCcsCi0gICdtJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsCi0gICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICdwJywgJ20nLCAnMycsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsCi0gICdyJywgJ2UnLCAnZycsICdfJywgJ3MnLCAnbScsICdpJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsCi0gICd0JywgJ2knLCAnZCcsICdfJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCi0gICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICd0JywgJ2knLCAnZCcsCi0gICdfJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsCi0gICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICd0JywgJ2knLCAnZCcsICdfJywgJ3knLCAnXDAwMCcsCisgICdkJywgJ18nLCAndycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsCisgICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ24nLCAndCcsICdpJywgJ2QnLCAnXycsCisgICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsCisgICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAnbicsICd0JywgJ2knLCAnZCcsICdfJywgJ3knLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsCi0gICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICd0JywgJ2knLCAnZCcsICdfJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICduJywgJ3QnLCAnaScsICdkJywgJ18nLCAneicsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsCisgICdyJywgJ2UnLCAnZycsICdfJywgJ24nLCAndycsICdhJywgJ3InLCAncCcsICdpJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCiAgICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCi0gICdlJywgJ2cnLCAnXycsICd3JywgJ2EnLCAncicsICdwJywgJ2knLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsCi0gICdfJywgJ3cnLCAnYScsICdyJywgJ3AnLCAncycsICdpJywgJ3onLCAnZScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncicsICdvJywgJ3QnLCAnYScsICd0JywgJ2UnLCAnXycsICdiJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdvJywgJ3QnLCAnYScsICd0JywgJ2UnLCAnXycsICdiJywgJzYnLCAnNCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdvJywgJ3QnLCAnYScsICd0JywgJ2UnLCAnXycsCi0gICdyJywgJ2knLCAnZycsICdoJywgJ3QnLCAnXycsICdiJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ3MnLCAncScsICdyJywgJ3QnLCAnXycsICdhJywgJ3AnLCAncCcsCi0gICdyJywgJ28nLCAneCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAncycsCi0gICdxJywgJ3InLCAndCcsICdfJywgJ2EnLCAncCcsICdwJywgJ3InLCAnbycsICd4JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdzJywgJ3EnLCAncicsICd0JywgJ18nLCAnYScsICdwJywgJ3AnLCAncicsCi0gICdvJywgJ3gnLCAnXycsICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3MnLCAnYScsICdkJywgJ18nLCAnaScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICdhJywgJ2QnLCAnXycsICd1JywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAnYScsCi0gICd0JywgJ3UnLCAncicsICdhJywgJ3QnLCAnZScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3MnLCAnYScsICd0JywgJ3UnLCAncicsICdhJywgJ3QnLCAnZScsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAnYScsICd0JywgJ3UnLCAncicsICdhJywgJ3QnLCAnZScsICdfJywgJ2YnLCAndCcsCi0gICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdoJywgJ2YnLCAnbCcsCi0gICdfJywgJ2InLCAnZicsICdsJywgJ3knLCAnXycsICdmJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICdoJywgJ2YnLCAnbCcsICdfJywgJ2InLCAnZicsICdsJywgJ3knLCAnXycsICdpJywgJzMnLCAnMicsCisgICdlJywgJ2cnLCAnXycsICdwJywgJ20nLCAnMCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsCisgICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ3AnLCAnbScsCisgICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAncCcsCisgICd0JywgJ3gnLCAnXycsICdzJywgJ3InLCAnZScsICdnJywgJ18nLCAncCcsICdtJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCisgICdlJywgJ2cnLCAnXycsICdwJywgJ20nLCAnMycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsCisgICdlJywgJ2EnLCAnZCcsICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ3MnLCAnbScsCisgICdpJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsCisgICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICd0JywgJ2knLCAnZCcsICdfJywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsCisgICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICd0JywgJ2knLCAnZCcsICdfJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsCisgICdlJywgJ2cnLCAnXycsICd0JywgJ2knLCAnZCcsICdfJywgJ3knLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsCisgICd0JywgJ2knLCAnZCcsICdfJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAnZScsCisgICdhJywgJ2QnLCAnXycsICdwJywgJ3QnLCAneCcsICdfJywgJ3MnLCAncicsICdlJywgJ2cnLCAnXycsICd3JywgJ2EnLCAncicsCisgICdwJywgJ2knLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsCisgICdfJywgJ3AnLCAndCcsICd4JywgJ18nLCAncycsICdyJywgJ2UnLCAnZycsICdfJywgJ3cnLCAnYScsICdyJywgJ3AnLCAncycsCisgICdpJywgJ3onLCAnZScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdvJywgJ3QnLCAnYScsCisgICd0JywgJ2UnLCAnXycsICdiJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsCisgICdvJywgJ3QnLCAnYScsICd0JywgJ2UnLCAnXycsICdiJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncicsICdvJywgJ3QnLCAnYScsICd0JywgJ2UnLCAnXycsICdyJywgJ2knLCAnZycsICdoJywgJ3QnLCAnXycsCisgICdiJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsCisgICdkJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsCisgICdkJywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsCisgICdkJywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdyJywgJ3MnLCAncScsICdyJywgJ3QnLCAnXycsICdhJywgJ3AnLCAncCcsICdyJywgJ28nLCAneCcsICdfJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICdfJywgJ2EnLCAncCcsCisgICdwJywgJ3InLCAnbycsICd4JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncicsCisgICdzJywgJ3EnLCAncicsICd0JywgJ18nLCAnYScsICdwJywgJ3AnLCAncicsICdvJywgJ3gnLCAnXycsICdmJywgJ3QnLCAneicsCisgICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAnYScsICdkJywgJ18nLCAnaScsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdhJywgJ2QnLCAnXycsICd1JywgJ2knLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAnYScsICd0JywgJ3UnLCAncicsICdhJywgJ3QnLCAnZScsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAnYScsICd0JywgJ3UnLCAncicsCisgICdhJywgJ3QnLCAnZScsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAnYScsCisgICd0JywgJ3UnLCAncicsICdhJywgJ3QnLCAnZScsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdoJywgJ2YnLCAnbCcsICdfJywgJ2InLCAnZicsICdsJywgJ3knLCAnXycsCisgICdmJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdoJywgJ2YnLCAnbCcsCisgICdfJywgJ2InLCAnZicsICdsJywgJ3knLCAnXycsICdpJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICdoJywgJ2YnLCAnbCcsICdfJywgJ2QnLCAnbycsICd3JywgJ24nLCAnXycsICdmJywgJzMnLCAnMicsCiAgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdoJywgJ2YnLCAnbCcsICdfJywgJ2QnLCAnbycsCi0gICd3JywgJ24nLCAnXycsICdmJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICdoJywgJ2YnLCAnbCcsICdfJywgJ2QnLCAnbycsICd3JywgJ24nLCAnXycsICdpJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdoJywgJ2YnLCAnbCcsICdfJywgJ2knLCAnZCcsICd4JywgJ18nLCAnZicsCi0gICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAnaCcsICdmJywgJ2wnLCAnXycsCi0gICdpJywgJ2QnLCAneCcsICdfJywgJ2knLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ2gnLCAnZicsICdsJywgJ18nLCAncycsICd5JywgJ24nLCAnYycsICdfJywgJ2InLCAnZicsICdsJywgJ3knLCAnXycsCi0gICdmJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdoJywgJ2YnLCAnbCcsCi0gICdfJywgJ3MnLCAneScsICduJywgJ2MnLCAnXycsICdiJywgJ2YnLCAnbCcsICd5JywgJ18nLCAnaScsICczJywgJzInLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAnaCcsICdmJywgJ2wnLCAnXycsICdzJywgJ3knLCAnbicsCi0gICdjJywgJ18nLCAnZCcsICdvJywgJ3cnLCAnbicsICdfJywgJ2YnLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdzJywgJ2gnLCAnZicsICdsJywgJ18nLCAncycsICd5JywgJ24nLCAnYycsICdfJywgJ2QnLCAnbycsCiAgICd3JywgJ24nLCAnXycsICdpJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICdoJywgJ2YnLCAnbCcsICdfJywgJ3MnLCAneScsICduJywgJ2MnLCAnXycsICdpJywgJ2QnLCAneCcsICdfJywgJ2YnLCAnMycsCisgICdoJywgJ2YnLCAnbCcsICdfJywgJ2knLCAnZCcsICd4JywgJ18nLCAnZicsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAnaCcsICdmJywgJ2wnLCAnXycsICdpJywgJ2QnLCAneCcsICdfJywgJ2knLCAnMycsCiAgICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ2gnLCAnZicsICdsJywgJ18nLCAncycsCi0gICd5JywgJ24nLCAnYycsICdfJywgJ2knLCAnZCcsICd4JywgJ18nLCAnaScsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAnaCcsICdmJywgJ2wnLCAnXycsICdzJywgJ3knLCAnbicsICdjJywgJ18nLCAndScsCi0gICdwJywgJ18nLCAnZicsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAnaCcsCi0gICdmJywgJ2wnLCAnXycsICdzJywgJ3knLCAnbicsICdjJywgJ18nLCAndScsICdwJywgJ18nLCAnaScsICczJywgJzInLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAnaCcsICdmJywgJ2wnLCAnXycsICd1JywgJ3AnLCAnXycsCi0gICdmJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdoJywgJ2YnLCAnbCcsCi0gICdfJywgJ3UnLCAncCcsICdfJywgJ2knLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ2knLCAnbicsICdfJywgJ2EnLCAncCcsICdwJywgJ3InLCAnbycsICd4JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdpJywgJ24nLCAnXycsICdhJywgJ3AnLCAncCcsICdyJywgJ28nLCAneCcsCi0gICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICdxJywgJ3InLCAndCcsICdfJywgJ2EnLCAncCcsICdwJywgJ3InLCAnbycsICd4JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdxJywgJ3InLCAndCcsICdfJywgJ2EnLCAncCcsICdwJywgJ3InLCAnbycsCi0gICd4JywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3EnLCAncicsICd0JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICdxJywgJ3InLCAndCcsICdfJywgJ3InLCAnbScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3MnLCAncScsICdyJywgJ3QnLCAnXycsICdyJywgJ20nLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdzJywgJ3EnLCAncicsICd0JywgJ18nLCAncicsICdtJywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsCi0gICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3EnLCAncicsICd0JywgJ18nLCAncicsCi0gICduJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdxJywgJ3InLCAndCcsCi0gICdfJywgJ3InLCAnbicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAncScsCi0gICdyJywgJ3QnLCAnXycsICdyJywgJ24nLCAnXycsICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAncScsICdyJywgJ3QnLCAnXycsICdyJywgJ3AnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3EnLCAncicsICd0JywgJ18nLCAncicsICdwJywgJ18nLCAnZicsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdxJywgJ3InLCAndCcsICdfJywgJ3InLCAncCcsCi0gICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICdxJywgJ3InLCAndCcsICdfJywgJ3InLCAneicsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3MnLCAncScsICdyJywgJ3QnLCAnXycsICdyJywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdzJywgJ3EnLCAncicsICd0JywgJ18nLCAncicsICd6JywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsCi0gICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncScsICdfJywgJ2EnLCAncicsCi0gICdyJywgJ2EnLCAneScsICdfJywgJ3MnLCAnaScsICd6JywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3MnLCAndScsICdxJywgJ18nLCAnYycsICdoJywgJ2EnLCAnbicsICduJywgJ2UnLCAnbCcsICdfJywgJ2QnLCAnYScsCi0gICd0JywgJ2EnLCAnXycsICd0JywgJ3knLCAncCcsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncScsICdfJywgJ2MnLCAnaCcsICdhJywgJ24nLCAnbicsICdlJywgJ2wnLCAnXycsICdvJywgJ3InLCAnZCcsCi0gICdlJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdxJywgJ18nLCAnZCcsCi0gICdlJywgJ3AnLCAndCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncScsCi0gICdfJywgJ2gnLCAnZScsICdpJywgJ2cnLCAnaCcsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncScsICdfJywgJ3cnLCAnaScsICdkJywgJ3QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCi0gICdhJywgJ3knLCAnXycsICdpJywgJzEnLCAnNicsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsCi0gICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdpJywgJzEnLCAnNicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsCi0gICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAnaScsICcxJywgJzYnLCAnXycsICd6JywgJ2UnLCAncicsCi0gICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCi0gICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnMycsICcyJywgJ18nLCAnYycsCi0gICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnMycsCi0gICcyJywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCisgICd5JywgJ24nLCAnYycsICdfJywgJ2InLCAnZicsICdsJywgJ3knLCAnXycsICdmJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdoJywgJ2YnLCAnbCcsICdfJywgJ3MnLCAneScsICduJywgJ2MnLCAnXycsCisgICdiJywgJ2YnLCAnbCcsICd5JywgJ18nLCAnaScsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3MnLCAnaCcsICdmJywgJ2wnLCAnXycsICdzJywgJ3knLCAnbicsICdjJywgJ18nLCAnZCcsICdvJywgJ3cnLCAnbicsCisgICdfJywgJ2YnLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ2gnLCAnZicsCisgICdsJywgJ18nLCAncycsICd5JywgJ24nLCAnYycsICdfJywgJ2QnLCAnbycsICd3JywgJ24nLCAnXycsICdpJywgJzMnLCAnMicsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdoJywgJ2YnLCAnbCcsICdfJywgJ3MnLCAneScsCisgICduJywgJ2MnLCAnXycsICdpJywgJ2QnLCAneCcsICdfJywgJ2YnLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ2gnLCAnZicsICdsJywgJ18nLCAncycsICd5JywgJ24nLCAnYycsICdfJywgJ2knLCAnZCcsCisgICd4JywgJ18nLCAnaScsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAnaCcsCisgICdmJywgJ2wnLCAnXycsICdzJywgJ3knLCAnbicsICdjJywgJ18nLCAndScsICdwJywgJ18nLCAnZicsICczJywgJzInLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAnaCcsICdmJywgJ2wnLCAnXycsICdzJywgJ3knLCAnbicsCisgICdjJywgJ18nLCAndScsICdwJywgJ18nLCAnaScsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3MnLCAnaCcsICdmJywgJ2wnLCAnXycsICd1JywgJ3AnLCAnXycsICdmJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdoJywgJ2YnLCAnbCcsICdfJywgJ3UnLCAncCcsICdfJywgJ2knLCAnMycsCisgICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ2knLCAnbicsICdfJywgJ2EnLCAncCcsCisgICdwJywgJ3InLCAnbycsICd4JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCisgICdpJywgJ24nLCAnXycsICdhJywgJ3AnLCAncCcsICdyJywgJ28nLCAneCcsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdxJywgJ3InLCAndCcsICdfJywgJ2EnLCAncCcsCisgICdwJywgJ3InLCAnbycsICd4JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCisgICdxJywgJ3InLCAndCcsICdfJywgJ2EnLCAncCcsICdwJywgJ3InLCAnbycsICd4JywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsCisgICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3EnLCAncicsICd0JywgJ18nLCAnZicsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdxJywgJ3InLCAndCcsICdfJywgJ3InLCAnbScsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAncScsICdyJywgJ3QnLCAnXycsCisgICdyJywgJ20nLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3EnLCAncicsCisgICd0JywgJ18nLCAncicsICdtJywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3EnLCAncicsICd0JywgJ18nLCAncicsICduJywgJ18nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdxJywgJ3InLCAndCcsICdfJywgJ3InLCAnbicsICdfJywgJ2YnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAncScsICdyJywgJ3QnLCAnXycsICdyJywgJ24nLCAnXycsCisgICdmJywgJ3QnLCAneicsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAncScsCisgICdyJywgJ3QnLCAnXycsICdyJywgJ3AnLCAnXycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdzJywgJ3EnLCAncicsICd0JywgJ18nLCAncicsICdwJywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICdxJywgJ3InLCAndCcsICdfJywgJ3InLCAncCcsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICdxJywgJ3InLCAndCcsICdfJywgJ3InLCAneicsCisgICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAncScsICdyJywgJ3QnLCAnXycsCisgICdyJywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3EnLCAncicsCisgICd0JywgJ18nLCAncicsICd6JywgJ18nLCAnZicsICd0JywgJ3onLCAnXycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncScsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3MnLCAnaScsCisgICd6JywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdxJywgJ18nLCAnYycsCisgICdoJywgJ2EnLCAnbicsICduJywgJ2UnLCAnbCcsICdfJywgJ2QnLCAnYScsICd0JywgJ2EnLCAnXycsICd0JywgJ3knLCAncCcsCisgICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncScsICdfJywgJ2MnLCAnaCcsCisgICdhJywgJ24nLCAnbicsICdlJywgJ2wnLCAnXycsICdvJywgJ3InLCAnZCcsICdlJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdxJywgJ18nLCAnZCcsICdlJywgJ3AnLCAndCcsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncScsICdfJywgJ2gnLCAnZScsICdpJywgJ2cnLCAnaCcsCisgICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncScsICdfJywgJ3cnLCAnaScsCisgICdkJywgJ3QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCisgICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdpJywgJzEnLCAnNicsCisgICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCiAgICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsCi0gICdpJywgJzMnLCAnMicsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdpJywgJzEnLCAnNicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCiAgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsCi0gICd5JywgJ18nLCAnaScsICc2JywgJzQnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsCi0gICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAnaScsICc2JywgJzQnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCisgICd5JywgJ18nLCAnaScsICcxJywgJzYnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsCisgICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnMycsICcyJywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsCi0gICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnNicsICc0JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsCisgICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnMycsICcyJywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsCiAgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCi0gICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdpJywgJzgnLCAnXycsICdjJywgJ2wnLCAnYScsCi0gICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCi0gICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAnaScsICc4JywgJ18nLCAndCcsCi0gICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdpJywgJzgnLCAnXycsCi0gICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnMicsCi0gICdpJywgJzEnLCAnNicsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCi0gICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsCi0gICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnMicsICdpJywgJzEnLCAnNicsICdfJywgJ3onLCAnZScsCisgICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdpJywgJzMnLCAnMicsICdfJywgJ3onLCAnZScsCiAgICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCi0gICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnMycsCi0gICcyJywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsCi0gICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsCi0gICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnMycsICcyJywgJ18nLCAneicsICdlJywgJ3InLCAnbycsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCi0gICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsICc2JywgJzQnLCAnXycsCisgICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAnaScsICc2JywgJzQnLCAnXycsCiAgICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCi0gICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsCi0gICcyJywgJ2knLCAnNicsICc0JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAnaScsCisgICc2JywgJzQnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsCisgICdfJywgJ2knLCAnNicsICc0JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCiAgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCi0gICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsICc2JywgJzQnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsCisgICdhJywgJ3knLCAnXycsICdpJywgJzgnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsCisgICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAnaScsICc4JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsCisgICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdpJywgJzgnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsCi0gICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnMicsICdpJywgJzgnLCAnXycsICdjJywgJ2wnLCAnYScsCi0gICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCi0gICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsCisgICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnMicsICdpJywgJzEnLCAnNicsICdfJywgJ2MnLCAnbCcsCisgICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCisgICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsCisgICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsCisgICdfJywgJ3YnLCAnMicsICdpJywgJzEnLCAnNicsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsCisgICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnMycsICcyJywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCisgICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsCiAgICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCiAgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsCi0gICcyJywgJ2knLCAnOCcsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsCi0gICd5JywgJ18nLCAndicsICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsCi0gICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnNCcsICdpJywgJzEnLCAnNicsICdfJywgJ3QnLCAncicsCi0gICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCi0gICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICc0JywgJ2knLCAnMScsCi0gICc2JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsCi0gICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICcyJywgJ2knLCAnMycsICcyJywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCisgICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsICc2JywgJzQnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsCisgICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnNicsICc0JywgJ18nLCAndCcsCisgICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCisgICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsCisgICc2JywgJzQnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsCisgICdfJywgJ3YnLCAnMicsICdpJywgJzgnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCiAgICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsCi0gICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICc0JywgJ2knLCAnMycsICcyJywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsCisgICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsCisgICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsICdfJywgJ3onLCAnZScsCisgICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCisgICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICc0JywgJ2knLCAnMScsCisgICc2JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsCisgICdfJywgJ3YnLCAnNCcsICdpJywgJzEnLCAnNicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsCisgICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsCiAgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCiAgICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsCi0gICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnNCcsCi0gICdpJywgJzgnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsCi0gICd5JywgJ18nLCAndicsICc0JywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsCi0gICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICc0JywgJ2knLCAnOCcsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsCi0gICdkJywgJ18nLCAnaScsICcxJywgJzYnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnaScsCi0gICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ2knLCAnMScsICc2JywgJ18nLCAneicsCi0gICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICdpJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCi0gICcxJywgJ2QnLCAnXycsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnaScsCi0gICczJywgJzInLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ2knLCAnNicsICc0JywgJ18nLCAnYycsCi0gICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ2knLCAnNicsICc0JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCi0gICcxJywgJ2QnLCAnXycsICdpJywgJzYnLCAnNCcsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnaScsCi0gICc4JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsCi0gICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCi0gICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnaScsICc4JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsCi0gICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAndicsCi0gICcyJywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsCi0gICcxJywgJzYnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsCi0gICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICczJywgJzInLCAnXycsCi0gICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsICdfJywgJ3onLCAnZScsCi0gICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCi0gICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnNicsICc0JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCi0gICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzYnLCAnNCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsCi0gICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnNicsICc0JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsCi0gICd2JywgJzInLCAnaScsICc4JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnMicsCi0gICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzgnLCAnXycsCi0gICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzEnLCAnNicsICdfJywgJ2MnLCAnbCcsCi0gICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICd2JywgJzQnLCAnaScsICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCi0gICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzEnLCAnNicsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsCi0gICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMycsICcyJywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsCi0gICdfJywgJ3YnLCAnNCcsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAndicsCi0gICc0JywgJ2knLCAnMycsICcyJywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICd2JywgJzQnLCAnaScsCi0gICc4JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsCi0gICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsICd6JywgJ2UnLCAncicsCi0gICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCi0gICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnMScsICc2JywgJ18nLCAnYycsCi0gICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnMScsCi0gICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsCi0gICdpJywgJzEnLCAnNicsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsCi0gICd5JywgJ18nLCAnaScsICczJywgJzInLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsCi0gICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAnaScsICczJywgJzInLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsCi0gICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnMycsICcyJywgJ18nLCAneicsICdlJywgJ3InLCAnbycsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCi0gICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdpJywgJzYnLCAnNCcsICdfJywgJ2MnLCAnbCcsCi0gICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdpJywgJzYnLCAnNCcsCi0gICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCi0gICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAnaScsCi0gICc2JywgJzQnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsCi0gICdfJywgJ2knLCAnOCcsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCi0gICdhJywgJ3knLCAnXycsICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsCi0gICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnOCcsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsCi0gICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnMScsICc2JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCi0gICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnMicsICdpJywgJzEnLCAnNicsCi0gICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCi0gICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsCi0gICcyJywgJ2knLCAnMScsICc2JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCi0gICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsICczJywgJzInLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsCi0gICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnMycsICcyJywgJ18nLCAndCcsCi0gICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsCi0gICczJywgJzInLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsCi0gICdfJywgJ3YnLCAnMicsICdpJywgJzYnLCAnNCcsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsCi0gICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsICc2JywgJzQnLCAnXycsICd0JywgJ3InLCAnYScsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCi0gICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnMicsICdpJywgJzYnLCAnNCcsCi0gICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCi0gICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsCi0gICcyJywgJ2knLCAnOCcsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCi0gICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsICc4JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsCi0gICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsICc4JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCi0gICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsICcxJywgJzYnLCAnXycsCiAgICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCi0gICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsCi0gICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCi0gICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsICcxJywgJzYnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsCisgICc0JywgJ2knLCAnMycsICcyJywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCisgICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsCisgICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsICdjJywgJ2wnLCAnYScsCisgICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCisgICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICc0JywgJ2knLCAnOCcsCisgICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsCisgICc0JywgJ2knLCAnOCcsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnaScsICcxJywgJzYnLCAnXycsCisgICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnaScsICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCisgICdfJywgJzEnLCAnZCcsICdfJywgJ2knLCAnMScsICc2JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsCisgICdpJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICdpJywgJzMnLCAnMicsCisgICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnaScsICczJywgJzInLCAnXycsICd6JywgJ2UnLCAncicsCisgICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCisgICdfJywgJzEnLCAnZCcsICdfJywgJ2knLCAnNicsICc0JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsCisgICdfJywgJ2knLCAnNicsICc0JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICdpJywgJzYnLCAnNCcsCisgICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnaScsICc4JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCisgICdfJywgJzEnLCAnZCcsICdfJywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAnaScsCisgICc4JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCisgICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsCisgICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsCisgICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCisgICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsICd6JywgJ2UnLCAncicsCisgICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCisgICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCisgICcxJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICczJywgJzInLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsCisgICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAndicsCisgICcyJywgJ2knLCAnNicsICc0JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnMicsCisgICdpJywgJzYnLCAnNCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnNicsCisgICc0JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCisgICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICc4JywgJ18nLCAnYycsCisgICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCisgICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCisgICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzgnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsCisgICdfJywgJ3YnLCAnNCcsICdpJywgJzEnLCAnNicsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsCisgICd2JywgJzQnLCAnaScsICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnNCcsCisgICdpJywgJzEnLCAnNicsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMycsCisgICcyJywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzMnLCAnMicsCisgICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMScsICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMycsICcyJywgJ18nLCAneicsCisgICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCisgICdfJywgJ2InLCAnXycsICcxJywgJ2QnLCAnXycsICd2JywgJzQnLCAnaScsICc4JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCisgICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzEnLCAnZCcsCisgICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsCisgICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnMScsICc2JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsCi0gICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnNCcsICdpJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbCcsCi0gICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsCisgICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCisgICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdpJywgJzEnLCAnNicsICdfJywgJ3onLCAnZScsCisgICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCisgICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAnaScsICczJywgJzInLCAnXycsCisgICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAnaScsCiAgICczJywgJzInLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCiAgICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsCi0gICdfJywgJ3YnLCAnNCcsICdpJywgJzMnLCAnMicsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsCi0gICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICc0JywgJ2knLCAnOCcsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCi0gICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsICc4JywgJ18nLCAndCcsCisgICdfJywgJ2knLCAnMycsICcyJywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCisgICdhJywgJ3knLCAnXycsICdpJywgJzYnLCAnNCcsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsCisgICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdpJywgJzYnLCAnNCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsCisgICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAnaScsICc2JywgJzQnLCAnXycsICd6JywgJ2UnLCAncicsCisgICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCisgICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnOCcsICdfJywgJ2MnLCAnbCcsCisgICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCisgICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdpJywgJzgnLCAnXycsCisgICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCisgICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnOCcsCisgICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsCisgICcyJywgJ2knLCAnMScsICc2JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsCisgICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnMicsICdpJywgJzEnLCAnNicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsCisgICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnMScsICc2JywgJ18nLCAneicsCisgICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCisgICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsCisgICczJywgJzInLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsCisgICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnMycsICcyJywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsCisgICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsICczJywgJzInLCAnXycsICd6JywgJ2UnLCAncicsCisgICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCisgICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnMicsICdpJywgJzYnLCAnNCcsCisgICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCisgICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsCisgICd2JywgJzInLCAnaScsICc2JywgJzQnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsCisgICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnMicsICdpJywgJzYnLCAnNCcsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsCisgICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsICdfJywgJ2MnLCAnbCcsCisgICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCisgICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsCisgICc4JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCisgICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsCisgICd2JywgJzInLCAnaScsICc4JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCisgICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsICcxJywgJzYnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsCisgICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsCiAgICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCiAgICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsCi0gICc4JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdpJywgJzEnLCAnNicsICdfJywgJ2MnLCAnbCcsCi0gICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdpJywgJzEnLCAnNicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsCi0gICdkJywgJ18nLCAnaScsICcxJywgJzYnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ2knLCAnMycsCi0gICcyJywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ2knLCAnMycsICcyJywgJ18nLCAndCcsCi0gICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdpJywgJzMnLCAnMicsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsCi0gICdkJywgJ18nLCAnaScsICc2JywgJzQnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnaScsCi0gICc2JywgJzQnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ2knLCAnNicsICc0JywgJ18nLCAneicsCi0gICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdpJywgJzgnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsCi0gICdkJywgJ18nLCAnaScsICc4JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdpJywgJzgnLCAnXycsCi0gICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzEnLCAnNicsICdfJywgJ2MnLCAnbCcsCi0gICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsCisgICcxJywgJzYnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsCisgICdfJywgJ3YnLCAnNCcsICdpJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsCisgICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsICd0JywgJ3InLCAnYScsCiAgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCi0gICdfJywgJzInLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzEnLCAnNicsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsCi0gICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnMycsICcyJywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsCi0gICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsCi0gICcyJywgJ2knLCAnMycsICcyJywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsCi0gICc2JywgJzQnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnNicsCi0gICc0JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICc2JywgJzQnLCAnXycsCi0gICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzgnLCAnXycsICdjJywgJ2wnLCAnYScsCi0gICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCi0gICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsCi0gICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsCi0gICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ3YnLCAnNCcsCi0gICdpJywgJzEnLCAnNicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMScsCi0gICc2JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsCi0gICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCi0gICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMycsICcyJywgJ18nLCAndCcsCi0gICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsICd6JywgJ2UnLCAncicsCi0gICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCi0gICdfJywgJzInLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsCi0gICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsCi0gICc0JywgJ2knLCAnOCcsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAnaScsICcxJywgJzYnLCAnXycsCi0gICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCi0gICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAnaScsICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCi0gICdfJywgJzMnLCAnZCcsICdfJywgJ2knLCAnMScsICc2JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsCi0gICdpJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsICdpJywgJzMnLCAnMicsCi0gICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCi0gICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAnaScsICczJywgJzInLCAnXycsICd6JywgJ2UnLCAncicsCi0gICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCi0gICdfJywgJzMnLCAnZCcsICdfJywgJ2knLCAnNicsICc0JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsCi0gICdfJywgJ2knLCAnNicsICc0JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsICdpJywgJzYnLCAnNCcsCisgICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnNCcsICdpJywgJzMnLCAnMicsCiAgICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCi0gICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAnaScsICc4JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCi0gICdfJywgJzMnLCAnZCcsICdfJywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAnaScsCi0gICc4JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsCi0gICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCi0gICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsCi0gICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsICd6JywgJ2UnLCAncicsCi0gICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCi0gICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsCisgICc0JywgJ2knLCAnOCcsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCisgICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsICc4JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsCisgICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsICc4JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsCiAgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCi0gICczJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICczJywgJzInLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsCi0gICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAndicsCi0gICcyJywgJ2knLCAnNicsICc0JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnMicsCi0gICdpJywgJzYnLCAnNCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnNicsCi0gICc0JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICc4JywgJ18nLCAnYycsCi0gICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsCisgICcyJywgJ2QnLCAnXycsICdpJywgJzEnLCAnNicsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsCisgICdpJywgJzEnLCAnNicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnaScsICcxJywgJzYnLCAnXycsCisgICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCisgICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ2knLCAnMycsICcyJywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsCiAgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCi0gICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzgnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsCi0gICdfJywgJ3YnLCAnNCcsICdpJywgJzEnLCAnNicsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsCi0gICd2JywgJzQnLCAnaScsICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnNCcsCisgICdfJywgJzInLCAnZCcsICdfJywgJ2knLCAnMycsICcyJywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsCisgICdpJywgJzMnLCAnMicsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnaScsICc2JywgJzQnLCAnXycsCisgICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnaScsICc2JywgJzQnLCAnXycsICd0JywgJ3InLCAnYScsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCisgICdfJywgJzInLCAnZCcsICdfJywgJ2knLCAnNicsICc0JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsCisgICdpJywgJzgnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAnaScsICc4JywgJ18nLCAndCcsCisgICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCisgICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICdpJywgJzgnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsCisgICdfJywgJ3YnLCAnMicsICdpJywgJzEnLCAnNicsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsCisgICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ3YnLCAnMicsCiAgICdpJywgJzEnLCAnNicsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMycsCisgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnMycsCiAgICcyJywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzMnLCAnMicsCisgICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsCiAgICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCi0gICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMycsICcyJywgJ18nLCAneicsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnMycsICcyJywgJ18nLCAneicsCiAgICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsICd2JywgJzQnLCAnaScsICc4JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCi0gICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICc2JywgJzQnLCAnXycsICdjJywgJ2wnLCAnYScsCisgICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCisgICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnNicsICc0JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCisgICcyJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICc2JywgJzQnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsCisgICdfJywgJ3YnLCAnMicsICdpJywgJzgnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsCisgICcyJywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsCisgICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAnYycsCisgICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCisgICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzEnLCAnNicsICdfJywgJ3QnLCAncicsCisgICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCisgICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCisgICcyJywgJ2QnLCAnXycsICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsCisgICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMycsICcyJywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICcyJywgJ2QnLCAnXycsCisgICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzInLCAnZCcsICdfJywgJ3YnLCAnNCcsCisgICdpJywgJzgnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnOCcsCisgICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnOCcsICdfJywgJ3onLCAnZScsCisgICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCisgICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAnaScsICcxJywgJzYnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsCisgICdkJywgJ18nLCAnaScsICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ2knLCAnMScsCisgICc2JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCisgICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsICdpJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbCcsCisgICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCisgICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsCisgICdkJywgJ18nLCAnaScsICczJywgJzInLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ2knLCAnNicsCisgICc0JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ2knLCAnNicsICc0JywgJ18nLCAndCcsCisgICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCisgICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsICdpJywgJzYnLCAnNCcsICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsCisgICdkJywgJ18nLCAnaScsICc4JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ2knLCAnOCcsCisgICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAnaScsICc4JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCisgICczJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsICdjJywgJ2wnLCAnYScsICdtJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsCisgICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsCisgICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnMicsCisgICdpJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsCisgICczJywgJzInLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsCisgICdfJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCisgICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnNicsICc0JywgJ18nLCAnYycsCisgICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCisgICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzYnLCAnNCcsICdfJywgJ3QnLCAncicsCisgICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCisgICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnNicsICc0JywgJ18nLCAneicsICdlJywgJ3InLCAnbycsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsCisgICczJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICc4JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsCi0gICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsCi0gICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICcxJywgJ2QnLCAnXycsCi0gICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMScsCi0gICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAnaScsICc4JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsCi0gICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsCisgICdfJywgJ3YnLCAnMicsICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnMicsCisgICdpJywgJzgnLCAnXycsICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzEnLCAnNicsCisgICdfJywgJ2MnLCAnbCcsICdhJywgJ20nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCisgICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsICd2JywgJzQnLCAnaScsICcxJywgJzYnLCAnXycsCiAgICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAncCcsICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnMicsCisgICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzEnLCAnNicsICdfJywgJ3onLCAnZScsCisgICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCisgICdiJywgJ18nLCAnMycsICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMycsICcyJywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsCisgICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdiJywgJ18nLCAnMycsCisgICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMycsICcyJywgJ18nLCAneicsICdlJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ2InLCAnXycsICczJywgJ2QnLCAnXycsCisgICd2JywgJzQnLCAnaScsICc4JywgJ18nLCAnYycsICdsJywgJ2EnLCAnbScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnNCcsCisgICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAnYicsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsCisgICd6JywgJ2UnLCAncicsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCisgICd0JywgJ18nLCAncCcsICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnMScsCisgICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCisgICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsCiAgICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCiAgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsCi0gICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsCi0gICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsCi0gICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsCi0gICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAncCcsICdfJywgJzEnLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnNCcsCi0gICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzEnLCAnZCcsICdfJywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsCi0gICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ3AnLCAnXycsICcxJywgJ2QnLCAnXycsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMScsCi0gICdkJywgJ18nLCAnaScsICc4JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICcxJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsCi0gICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsCi0gICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCi0gICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMScsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsCi0gICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCi0gICdwJywgJ18nLCAnMScsICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsCi0gICcxJywgJ2QnLCAnXycsICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCisgICd5JywgJ18nLCAnaScsICc4JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCisgICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzEnLCAnZCcsCi0gICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsCi0gICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICcyJywgJ2QnLCAnXycsCi0gICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMicsCi0gICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAnaScsICc4JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsCi0gICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsCisgICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsCisgICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCisgICdwJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsCisgICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCisgICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMScsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsCisgICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICcxJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCisgICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzEnLCAnZCcsCisgICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsCisgICdfJywgJzEnLCAnZCcsICdfJywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICcxJywgJ2QnLCAnXycsCisgICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMScsICdkJywgJ18nLCAnaScsICc4JywgJ18nLCAndCcsCisgICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCisgICdfJywgJ3AnLCAnXycsICcxJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsCisgICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMScsCisgICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMScsICdkJywgJ18nLCAndicsCisgICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICcxJywgJ2QnLCAnXycsICd2JywgJzQnLCAnaScsCisgICczJywgJzInLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzEnLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsCiAgICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAncCcsICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnMicsCisgICd0JywgJ18nLCAncCcsICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ2knLCAnMScsCisgICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCisgICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsCiAgICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCiAgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsCi0gICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsCi0gICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsCi0gICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsCi0gICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCi0gICd0JywgJ18nLCAncCcsICdfJywgJzInLCAnZCcsICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnNCcsCi0gICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzInLCAnZCcsICdfJywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsCi0gICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ3AnLCAnXycsICcyJywgJ2QnLCAnXycsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMicsCi0gICdkJywgJ18nLCAnaScsICc4JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICcyJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsCi0gICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzInLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsCi0gICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCi0gICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsCi0gICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCi0gICdwJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsCi0gICcyJywgJ2QnLCAnXycsICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCisgICd5JywgJ18nLCAnaScsICc4JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCisgICdhJywgJ3knLCAnXycsICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzInLCAnZCcsCi0gICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzMnLCAnZCcsICdfJywgJ2knLCAnMScsCi0gICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCi0gICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICczJywgJ2QnLCAnXycsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsCisgICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsCiAgICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCi0gICdwJywgJ18nLCAnMycsICdkJywgJ18nLCAnaScsICc4JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICczJywgJ2QnLCAnXycsCi0gICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnMicsCi0gICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCi0gICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMycsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsCisgICdwJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsCiAgICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsCi0gICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMycsICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsCi0gICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCi0gICdfJywgJ3AnLCAnXycsICczJywgJ2QnLCAnXycsICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsICd0JywgJ3InLCAnYScsCisgICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMicsICdkJywgJ18nLCAnYScsICdyJywgJ3InLCAnYScsICd5JywgJ18nLCAndicsCisgICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICcyJywgJ2QnLCAnXycsICdhJywgJ3InLCAncicsCisgICdhJywgJ3knLCAnXycsICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzInLCAnZCcsCisgICdfJywgJ2EnLCAncicsICdyJywgJ2EnLCAneScsICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsCiAgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsCi0gICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3cnLCAnYScsICdwJywgJ18nLCAnbCcsICdvJywgJ18nLCAnaCcsCi0gICdpJywgJ18nLCAnYicsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3QnLCAncicsCi0gICd1JywgJ24nLCAnYycsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3QnLCAncicsCi0gICd1JywgJ24nLCAnYycsICdfJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3QnLCAncicsCi0gICd1JywgJ24nLCAnYycsICdfJywgJ2YnLCAndCcsICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAndCcsICd4JywgJ3EnLCAnXycsICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdzJywgJ2knLCAneicsCi0gICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICd0JywgJ3gnLCAncScsICdfJywgJ2MnLCAnaCcsCi0gICdhJywgJ24nLCAnbicsICdlJywgJ2wnLCAnXycsICdkJywgJ2EnLCAndCcsICdhJywgJ18nLCAndCcsICd5JywgJ3AnLCAnZScsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndCcsICd4JywgJ3EnLCAnXycsICdjJywgJ2gnLCAnYScsCi0gICduJywgJ24nLCAnZScsICdsJywgJ18nLCAnbycsICdyJywgJ2QnLCAnZScsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICd0JywgJ3gnLCAncScsICdfJywgJ2QnLCAnZScsICdwJywgJ3QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndCcsICd4JywgJ3EnLCAnXycsICdoJywgJ2UnLCAnaScsICdnJywgJ2gnLCAndCcsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndCcsICd4JywgJ3EnLCAnXycsICduJywgJ3UnLCAnbScsCi0gICdfJywgJ20nLCAnaScsICdwJywgJ20nLCAnYScsICdwJywgJ18nLCAnbCcsICdlJywgJ3YnLCAnZScsICdsJywgJ3MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3QnLCAneCcsICdxJywgJ18nLCAnbicsICd1JywgJ20nLCAnXycsCi0gICdzJywgJ2EnLCAnbScsICdwJywgJ2wnLCAnZScsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCi0gICd0JywgJ3gnLCAncScsICdfJywgJ3cnLCAnaScsICdkJywgJ3QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZCcsICdfJywgJ3InLCAnbScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZCcsICdfJywgJ3InLCAnbicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZCcsICdfJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZCcsICdfJywgJ3InLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZicsICdfJywgJ3InLCAnbScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZicsICdfJywgJ3InLCAnbicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZicsICdfJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZicsICdfJywgJ3InLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAndScsICdsJywgJ2wnLCAnMicsICdkJywgJ18nLCAncicsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICd1JywgJ2wnLCAnbCcsICcyJywgJ2QnLCAnXycsICdyJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCi0gICd2JywgJ3YnLCAnbScsICdfJywgJ3UnLCAnbCcsICdsJywgJzInLCAnZCcsICdfJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsCi0gICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndScsICdsJywgJ2wnLCAnMicsICdkJywgJ18nLCAncicsICd6JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICd1JywgJ2wnLCAnbCcsICcyJywgJ2YnLCAnXycsICdyJywgJ20nLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3UnLCAnbCcsICdsJywgJzInLCAnZicsICdfJywgJ3InLCAnbicsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndScsICdsJywgJ2wnLCAnMicsICdmJywgJ18nLCAncicsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICd1JywgJ2wnLCAnbCcsICcyJywgJ2YnLCAnXycsCi0gICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3YnLCAnbycsICd0JywgJ2UnLCAnXycsCi0gICdhJywgJ2wnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndicsICdvJywgJ3QnLCAnZScsCi0gICdfJywgJ2EnLCAnbCcsICdsJywgJ18nLCAncycsICd5JywgJ24nLCAnYycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCi0gICdtJywgJ18nLCAndicsICdvJywgJ3QnLCAnZScsICdfJywgJ2EnLCAnbicsICd5JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCi0gICd2JywgJ20nLCAnXycsICd2JywgJ28nLCAndCcsICdlJywgJ18nLCAnYScsICduJywgJ3knLCAnXycsICdzJywgJ3knLCAnbicsCi0gICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICd2JywgJ28nLCAndCcsICdlJywgJ18nLCAnYicsCi0gICdhJywgJ2wnLCAnbCcsICdvJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3YnLCAnbycsCi0gICd0JywgJ2UnLCAnXycsICdiJywgJ2EnLCAnbCcsICdsJywgJ28nLCAndCcsICdfJywgJ3MnLCAneScsICduJywgJ2MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3YnLCAnbycsICd0JywgJ2UnLCAnXycsICd1JywgJ24nLCAnaScsCi0gICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndicsICdvJywgJ3QnLCAnZScsICdfJywgJ3UnLCAnbicsCi0gICdpJywgJ18nLCAncycsICd5JywgJ24nLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdkJywgJ2QnLCAnZicsICcxJywgJzInLCAnOCcsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsCi0gICdfJywgJ3QnLCAnbycsICdfJywgJ28nLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAnYycsICdyJywgJ3knLCAncCcsCi0gICd0JywgJ28nLCAnXycsICd2JywgJ2MnLCAnaScsICdwJywgJ2gnLCAnZScsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAnYycsCi0gICdyJywgJ3knLCAncCcsICd0JywgJ28nLCAnXycsICd2JywgJ2MnLCAnaScsICdwJywgJ2gnLCAnZScsICdyJywgJ2wnLCAnYScsCi0gICdzJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCi0gICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICdjJywgJ3InLCAneScsICdwJywgJ3QnLCAnbycsICdfJywgJ3YnLCAnbicsCi0gICdjJywgJ2knLCAncCcsICdoJywgJ2UnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ2MnLCAncicsICd5JywgJ3AnLCAndCcsCi0gICdvJywgJ18nLCAndicsICduJywgJ2MnLCAnaScsICdwJywgJ2gnLCAnZScsICdyJywgJ2wnLCAnYScsICdzJywgJ3QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICdjJywgJ3InLCAneScsICdwJywgJ3QnLCAnbycsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsCi0gICd4JywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ2MnLCAncicsICd5JywgJ3AnLCAndCcsICdvJywgJ18nLCAndicsCi0gICdwJywgJ20nLCAncycsICd1JywgJ20nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ2MnLCAncicsICd5JywgJ3AnLCAndCcsCi0gICdvJywgJ18nLCAndicsICdwJywgJ20nLCAncycsICd1JywgJ20nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ2MnLCAncicsCi0gICd5JywgJ3AnLCAndCcsICdvJywgJ18nLCAndicsICdwJywgJ20nLCAncycsICd1JywgJ20nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCi0gICdfJywgJ2MnLCAncicsICd5JywgJ3AnLCAndCcsICdvJywgJ18nLCAndicsICdwJywgJ20nLCAncycsICd1JywgJ20nLCAndycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCi0gICd2JywgJ2UnLCAnYycsICdfJywgJ2MnLCAncicsICd5JywgJ3AnLCAndCcsICdvJywgJ18nLCAndicsICdzJywgJ2InLCAnbycsCi0gICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAnYycsICdyJywgJ3knLCAncCcsICd0JywgJ28nLCAnXycsICd2JywgJ3MnLCAnaCcsCi0gICdhJywgJ3MnLCAnaScsICdnJywgJ20nLCAnYScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAnYycsICdyJywgJ3knLCAncCcsCi0gICd0JywgJ28nLCAnXycsICd2JywgJ3MnLCAnaCcsICdhJywgJ3MnLCAnaScsICdnJywgJ20nLCAnYScsICd3JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCi0gICdjJywgJ18nLCAnZCcsICdzJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICdkJywgJ3MnLCAncycsICdhJywgJ2wnLCAnbCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCi0gICd2JywgJ2UnLCAnYycsICdfJywgJ2QnLCAncycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAnZCcsICdzJywgJ3QnLCAncycsCi0gICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAnZCcsICdzJywgJ3QnLCAncycsICd0JywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICdkJywgJ3MnLCAndCcsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAnbScsICdmJywgJ3YnLCAncycsICdjJywgJ3InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICdtJywgJ3QnLCAndicsICdzJywgJ2MnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYScsCi0gICdiJywgJ3MnLCAnZCcsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2EnLCAnYicsICdzJywgJ2QnLCAndScsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdhJywgJ2InLCAncycsICdkJywgJ3UnLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCi0gICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnYycsICd1JywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2EnLCAnZCcsCi0gICdkJywgJ2MnLCAndScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdlJywgJ2MnLCAndScsCi0gICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdlJywgJ3UnLCAncScsICdtJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCi0gICdjJywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdzJywgJ2InLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYScsCi0gICdkJywgJ2QnLCAncycsICdoJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3MnLCAndycsCi0gICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICd1JywgJ2InLCAncycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCi0gICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsICdoJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2EnLCAnZCcsCi0gICdkJywgJ3UnLCAndycsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICdzJywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ3MnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYScsCi0gICd2JywgJ2cnLCAncycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICd1JywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYScsCi0gICd2JywgJ2cnLCAndScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdiJywgJ3AnLCAnZScsICdyJywgJ20nLCAncScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCi0gICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdmJywgJ3MnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsCi0gICdmJywgJ3UnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdsJywgJ3onLCAnbCcsICdzJywgJ2InLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCi0gICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnYicsICdmJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICd2JywgJ2MnLCAnbScsICdwJywgJ2InLCAnZicsICdwJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsCi0gICdtJywgJ3AnLCAnZScsICdxJywgJ2YnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZScsCi0gICdxJywgJ2YnLCAncCcsICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2UnLCAncScsCi0gICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCi0gICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2UnLCAncScsICd1JywgJ2InLCAnXycsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAndScsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCi0gICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAndScsICdkJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCi0gICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZScsICdxJywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsCi0gICdtJywgJ3AnLCAnZScsICdxJywgJ3UnLCAnaCcsICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsCi0gICdwJywgJ2UnLCAncScsICd1JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2UnLCAncScsCi0gICd1JywgJ3cnLCAnXycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdnJywgJ2UnLCAnZicsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdnJywgJ2UnLCAnZicsICdwJywgJ18nLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCi0gICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ2YnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCi0gICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ2YnLCAncCcsICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICdzJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsCi0gICdwJywgJ2cnLCAndCcsICdzJywgJ2InLCAnXycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsCi0gICdnJywgJ3QnLCAncycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdnJywgJ3QnLCAncycsCi0gICdkJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ3MnLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCi0gICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ3MnLCAnaCcsICdfJywgJ3AnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICdzJywgJ3cnLCAnXycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCi0gICdjJywgJ20nLCAncCcsICdnJywgJ3QnLCAndScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsCi0gICdnJywgJ3QnLCAndScsICdiJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZycsCi0gICd0JywgJ3UnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ3UnLCAnZCcsCi0gICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCi0gICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICd1JywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICd1JywgJ2gnLCAnXycsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCi0gICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdnJywgJ3QnLCAndScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCi0gICdjJywgJ20nLCAncCcsICdnJywgJ3QnLCAndScsICd3JywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsCi0gICdtJywgJ3AnLCAnbicsICdlJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ24nLCAnZScsCi0gICdiJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnbicsICdlJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ24nLCAnZScsICdoJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCi0gICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnbicsICdlJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsCi0gICdwJywgJ24nLCAnZScsICd3JywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnbicsCi0gICdlJywgJ3onLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnbicsICdlJywgJ3onLCAnYicsCi0gICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCi0gICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ24nLCAnZScsICd6JywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ24nLCAnZScsICd6JywgJ2gnLCAnXycsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCi0gICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICduJywgJ2UnLCAneicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCi0gICdjJywgJ20nLCAncCcsICduJywgJ2UnLCAneicsICd3JywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsCi0gICd0JywgJ3MnLCAneCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ3QnLCAndScsICd4JywgJ3MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAndCcsICd6JywgJ2wnLCAncycsICdiJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICd2JywgJ2UnLCAneCcsICdwJywgJ3QnLCAnZScsICdmJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2cnLCAnYicsCi0gICdiJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCi0gICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2wnLCAnbycsICdnJywgJ2UnLCAnZicsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCi0gICdjJywgJ18nLCAndicsICdtJywgJ2EnLCAnZCcsICdkJywgJ2YnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsCi0gICdhJywgJ3gnLCAnZicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICdzJywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ20nLCAnYScsICd4JywgJ3MnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsCi0gICdhJywgJ3gnLCAncycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICdzJywgJ3cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ20nLCAnYScsICd4JywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsCi0gICdhJywgJ3gnLCAndScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICd1JywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ20nLCAnYScsICd4JywgJ3UnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsCi0gICdoJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnaCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ2gnLCAncicsCi0gICdhJywgJ2QnLCAnZCcsICdzJywgJ2gnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAnZicsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ2knLCAnbicsICdzJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICd2JywgJ20nLCAnaScsICduJywgJ3MnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAncycsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ2knLCAnbicsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICd2JywgJ20nLCAnaScsICduJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAndScsCisgICdfJywgJzInLCAnZCcsICdfJywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICcyJywgJ2QnLCAnXycsCisgICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMicsICdkJywgJ18nLCAnaScsICc4JywgJ18nLCAndCcsCisgICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsCisgICdfJywgJ3AnLCAnXycsICcyJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsICd0JywgJ3InLCAnYScsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsCisgICdfJywgJzInLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMicsCisgICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMicsICdkJywgJ18nLCAndicsCisgICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICcyJywgJ2QnLCAnXycsICd2JywgJzQnLCAnaScsCisgICczJywgJzInLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzInLCAnZCcsICdfJywgJ3YnLCAnNCcsICdpJywgJzgnLCAnXycsCisgICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCisgICd0JywgJ18nLCAncCcsICdfJywgJzMnLCAnZCcsICdfJywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsCisgICczJywgJ2QnLCAnXycsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMycsICdkJywgJ18nLCAnaScsCisgICc4JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsCisgICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICczJywgJ2QnLCAnXycsICd2JywgJzInLCAnaScsICcxJywgJzYnLCAnXycsCisgICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsCisgICd0JywgJ18nLCAncCcsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnMicsICdpJywgJzMnLCAnMicsICdfJywgJ3QnLCAncicsCisgICdhJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsCisgICdwJywgJ18nLCAnMycsICdkJywgJ18nLCAndicsICcyJywgJ2knLCAnOCcsICdfJywgJ3QnLCAncicsICdhJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3MnLCAndScsICdzJywgJ3QnLCAnXycsICdwJywgJ18nLCAnMycsCisgICdkJywgJ18nLCAndicsICc0JywgJ2knLCAnMScsICc2JywgJ18nLCAndCcsICdyJywgJ2EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAncycsICd1JywgJ3MnLCAndCcsICdfJywgJ3AnLCAnXycsICczJywgJ2QnLCAnXycsCisgICd2JywgJzQnLCAnaScsICczJywgJzInLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICdzJywgJ3UnLCAncycsICd0JywgJ18nLCAncCcsICdfJywgJzMnLCAnZCcsICdfJywgJ3YnLCAnNCcsCisgICdpJywgJzgnLCAnXycsICd0JywgJ3InLCAnYScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICdzJywgJ3cnLCAnYScsICdwJywgJ18nLCAnbCcsICdvJywgJ18nLCAnaCcsICdpJywgJ18nLCAnYicsICc2JywgJzQnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3QnLCAncicsICd1JywgJ24nLCAnYycsICdfJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3QnLCAncicsICd1JywgJ24nLCAnYycsICdfJywgJ2YnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3QnLCAncicsICd1JywgJ24nLCAnYycsICdfJywgJ2YnLCAndCcsCisgICd6JywgJ18nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndCcsICd4JywgJ3EnLCAnXycsCisgICdhJywgJ3InLCAncicsICdhJywgJ3knLCAnXycsICdzJywgJ2knLCAneicsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICd0JywgJ3gnLCAncScsICdfJywgJ2MnLCAnaCcsICdhJywgJ24nLCAnbicsICdlJywgJ2wnLCAnXycsCisgICdkJywgJ2EnLCAndCcsICdhJywgJ18nLCAndCcsICd5JywgJ3AnLCAnZScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAndCcsICd4JywgJ3EnLCAnXycsICdjJywgJ2gnLCAnYScsICduJywgJ24nLCAnZScsICdsJywgJ18nLCAnbycsCisgICdyJywgJ2QnLCAnZScsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICd0JywgJ3gnLCAncScsCisgICdfJywgJ2QnLCAnZScsICdwJywgJ3QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndCcsCisgICd4JywgJ3EnLCAnXycsICdoJywgJ2UnLCAnaScsICdnJywgJ2gnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAndCcsICd4JywgJ3EnLCAnXycsICduJywgJ3UnLCAnbScsICdfJywgJ20nLCAnaScsICdwJywgJ20nLCAnYScsCisgICdwJywgJ18nLCAnbCcsICdlJywgJ3YnLCAnZScsICdsJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3QnLCAneCcsICdxJywgJ18nLCAnbicsICd1JywgJ20nLCAnXycsICdzJywgJ2EnLCAnbScsICdwJywgJ2wnLCAnZScsCisgICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICd0JywgJ3gnLCAncScsICdfJywgJ3cnLCAnaScsCisgICdkJywgJ3QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZCcsCisgICdfJywgJ3InLCAnbScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZCcsCisgICdfJywgJ3InLCAnbicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZCcsCisgICdfJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZCcsCisgICdfJywgJ3InLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZicsCisgICdfJywgJ3InLCAnbScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZicsCisgICdfJywgJ3InLCAnbicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZicsCisgICdfJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndScsICdpJywgJzInLCAnZicsCisgICdfJywgJ3InLCAneicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndScsICdsJywgJ2wnLCAnMicsCisgICdkJywgJ18nLCAncicsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICd1JywgJ2wnLCAnbCcsCisgICcyJywgJ2QnLCAnXycsICdyJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3UnLCAnbCcsCisgICdsJywgJzInLCAnZCcsICdfJywgJ3InLCAncCcsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndScsCisgICdsJywgJ2wnLCAnMicsICdkJywgJ18nLCAncicsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsCisgICd1JywgJ2wnLCAnbCcsICcyJywgJ2YnLCAnXycsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3UnLCAnbCcsICdsJywgJzInLCAnZicsICdfJywgJ3InLCAnbicsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAndScsICdsJywgJ2wnLCAnMicsICdmJywgJ18nLCAncicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICd1JywgJ2wnLCAnbCcsICcyJywgJ2YnLCAnXycsICdyJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnbicsCisgICd2JywgJ3YnLCAnbScsICdfJywgJ3YnLCAnbycsICd0JywgJ2UnLCAnXycsICdhJywgJ2wnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsCisgICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndicsICdvJywgJ3QnLCAnZScsICdfJywgJ2EnLCAnbCcsICdsJywgJ18nLCAncycsCisgICd5JywgJ24nLCAnYycsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsICdtJywgJ18nLCAndicsICdvJywgJ3QnLCAnZScsCisgICdfJywgJ2EnLCAnbicsICd5JywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsICd2JywgJ20nLCAnXycsICd2JywgJ28nLCAndCcsCisgICdlJywgJ18nLCAnYScsICduJywgJ3knLCAnXycsICdzJywgJ3knLCAnbicsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ24nLCAndicsCisgICd2JywgJ20nLCAnXycsICd2JywgJ28nLCAndCcsICdlJywgJ18nLCAnYicsICdhJywgJ2wnLCAnbCcsICdvJywgJ3QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsICdfJywgJ3YnLCAnbycsICd0JywgJ2UnLCAnXycsICdiJywgJ2EnLCAnbCcsCisgICdsJywgJ28nLCAndCcsICdfJywgJ3MnLCAneScsICduJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnbicsICd2JywgJ3YnLCAnbScsCisgICdfJywgJ3YnLCAnbycsICd0JywgJ2UnLCAnXycsICd1JywgJ24nLCAnaScsICdcMDAwJywgJ18nLCAnXycsICduJywgJ3YnLCAndicsCisgICdtJywgJ18nLCAndicsICdvJywgJ3QnLCAnZScsICdfJywgJ3UnLCAnbicsICdpJywgJ18nLCAncycsICd5JywgJ24nLCAnYycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdkJywgJ2QnLCAnZicsCisgICcxJywgJzInLCAnOCcsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ3QnLCAnbycsICdfJywgJ28nLCAnZCcsCiAgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ2knLCAnbicsICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAnYycsICdyJywgJ3knLCAncCcsICd0JywgJ28nLCAnXycsICd2JywgJ2MnLCAnaScsCisgICdwJywgJ2gnLCAnZScsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAnYycsICdyJywgJ3knLCAncCcsICd0JywgJ28nLCAnXycsCisgICd2JywgJ2MnLCAnaScsICdwJywgJ2gnLCAnZScsICdyJywgJ2wnLCAnYScsICdzJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICd2JywgJ20nLCAnaScsICduJywgJ3UnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICdsJywgJ2EnLCAnZCcsCi0gICdkJywgJ3UnLCAnaCcsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ3MnLCAndScsICdtJywgJ20nLCAnYicsCi0gICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ3MnLCAndScsICdtJywgJ3MnLCAnaCcsICdtJywgJ1wwMDAnLCAnXycsCisgICdjJywgJ3InLCAneScsICdwJywgJ3QnLCAnbycsICdfJywgJ3YnLCAnbicsICdjJywgJ2knLCAncCcsICdoJywgJ2UnLCAncicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCisgICd2JywgJ2UnLCAnYycsICdfJywgJ2MnLCAncicsICd5JywgJ3AnLCAndCcsICdvJywgJ18nLCAndicsICduJywgJ2MnLCAnaScsCisgICdwJywgJ2gnLCAnZScsICdyJywgJ2wnLCAnYScsICdzJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICdjJywgJ3InLCAneScsCisgICdwJywgJ3QnLCAnbycsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICd4JywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCisgICdfJywgJ2MnLCAncicsICd5JywgJ3AnLCAndCcsICdvJywgJ18nLCAndicsICdwJywgJ20nLCAncycsICd1JywgJ20nLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCisgICd2JywgJ2UnLCAnYycsICdfJywgJ2MnLCAncicsICd5JywgJ3AnLCAndCcsICdvJywgJ18nLCAndicsICdwJywgJ20nLCAncycsCisgICd1JywgJ20nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ2MnLCAncicsICd5JywgJ3AnLCAndCcsICdvJywgJ18nLCAndicsCisgICdwJywgJ20nLCAncycsICd1JywgJ20nLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ2MnLCAncicsICd5JywgJ3AnLCAndCcsCisgICdvJywgJ18nLCAndicsICdwJywgJ20nLCAncycsICd1JywgJ20nLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ2MnLCAncicsCisgICd5JywgJ3AnLCAndCcsICdvJywgJ18nLCAndicsICdzJywgJ2InLCAnbycsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAnYycsCisgICdyJywgJ3knLCAncCcsICd0JywgJ28nLCAnXycsICd2JywgJ3MnLCAnaCcsICdhJywgJ3MnLCAnaScsICdnJywgJ20nLCAnYScsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCisgICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAnYycsICdyJywgJ3knLCAncCcsICd0JywgJ28nLCAnXycsICd2JywgJ3MnLCAnaCcsCisgICdhJywgJ3MnLCAnaScsICdnJywgJ20nLCAnYScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAnZCcsICdzJywgJ3MnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCisgICdlJywgJ2MnLCAnXycsICdkJywgJ3MnLCAncycsICdhJywgJ2wnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ2QnLCAncycsCisgICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCisgICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAnZCcsICdzJywgJ3QnLCAncycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAnZCcsCisgICdzJywgJ3QnLCAncycsICd0JywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICdkJywgJ3MnLCAndCcsICd0JywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCi0gICdjJywgJ18nLCAndicsICdtJywgJ3MnLCAndScsICdtJywgJ3MnLCAnaCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdjJywgJ18nLCAnbScsICdmJywgJ3YnLCAncycsICdjJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICdtJywgJ3QnLCAndicsCisgICdzJywgJ2MnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYScsICdiJywgJ3MnLCAnZCcsICd1JywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCisgICdlJywgJ2MnLCAnXycsICd2JywgJ2EnLCAnYicsICdzJywgJ2QnLCAndScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCi0gICdtJywgJ3MnLCAndScsICdtJywgJ3UnLCAnYicsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdhJywgJ2InLCAncycsICdkJywgJ3UnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAnYycsCisgICd1JywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCisgICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ2MnLCAndScsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCisgICdjJywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsICdlJywgJ2MnLCAndScsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCisgICdhJywgJ2QnLCAnZCcsICdlJywgJ3UnLCAncScsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdhJywgJ2QnLCAnZCcsCisgICdzJywgJ2InLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAncycsICdoJywgJ3MnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCisgICdlJywgJ2MnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3MnLCAndycsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCisgICdhJywgJ2QnLCAnZCcsICd1JywgJ2InLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYScsICdkJywgJ2QnLCAndScsCisgICdoJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCisgICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2EnLCAnZCcsICdkJywgJ3UnLCAndycsICdzJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCisgICdjJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICdzJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2EnLCAndicsCisgICdnJywgJ3MnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAncycsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCisgICdjJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2EnLCAndicsCisgICdnJywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAndScsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCisgICdjJywgJ18nLCAndicsICdiJywgJ3AnLCAnZScsICdyJywgJ20nLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsCisgICdmJywgJ3MnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdmJywgJ3UnLCAneCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCisgICdfJywgJ3YnLCAnYycsICdsJywgJ3onLCAnbCcsICdzJywgJ2InLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsCisgICdtJywgJ3AnLCAnYicsICdmJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2InLCAnZicsCisgICdwJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZScsICdxJywgJ2YnLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCisgICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZScsICdxJywgJ2YnLCAncCcsICdfJywgJ3AnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCisgICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2UnLCAncScsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCisgICd2JywgJ2MnLCAnbScsICdwJywgJ2UnLCAncScsICd1JywgJ2InLCAnXycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCisgICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAndScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsCisgICdlJywgJ3EnLCAndScsICdkJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZScsCisgICdxJywgJ3UnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZScsICdxJywgJ3UnLCAnaCcsCisgICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCisgICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2UnLCAncScsICd1JywgJ3cnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCisgICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2UnLCAncScsICd1JywgJ3cnLCAnXycsICdwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCisgICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdnJywgJ2UnLCAnZicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCisgICdjJywgJ20nLCAncCcsICdnJywgJ2UnLCAnZicsICdwJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsCisgICdtJywgJ3AnLCAnZycsICd0JywgJ2YnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZycsCisgICd0JywgJ2YnLCAncCcsICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsCisgICdzJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCisgICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICdzJywgJ2InLCAnXycsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCisgICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdnJywgJ3QnLCAncycsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCisgICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdnJywgJ3QnLCAncycsICdkJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCisgICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ3MnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsCisgICdtJywgJ3AnLCAnZycsICd0JywgJ3MnLCAnaCcsICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsCisgICdwJywgJ2cnLCAndCcsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsCisgICdzJywgJ3cnLCAnXycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdnJywgJ3QnLCAndScsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCisgICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdnJywgJ3QnLCAndScsICdiJywgJ18nLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCisgICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ3UnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCisgICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ3UnLCAnZCcsICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCisgICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsCisgICdwJywgJ2cnLCAndCcsICd1JywgJ2gnLCAnXycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsCisgICdnJywgJ3QnLCAndScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICdnJywgJ3QnLCAndScsCisgICd3JywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnbicsICdlJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCisgICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ24nLCAnZScsICdiJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCisgICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnbicsICdlJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsCisgICdwJywgJ24nLCAnZScsICdoJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnbicsCisgICdlJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCisgICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsICdwJywgJ24nLCAnZScsICd3JywgJ18nLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCisgICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnbicsICdlJywgJ3onLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCisgICdfJywgJ3YnLCAnYycsICdtJywgJ3AnLCAnbicsICdlJywgJ3onLCAnYicsICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCisgICd2JywgJ2MnLCAnbScsICdwJywgJ24nLCAnZScsICd6JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAnbScsCisgICdwJywgJ24nLCAnZScsICd6JywgJ2gnLCAnXycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsCisgICduJywgJ2UnLCAneicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdjJywgJ20nLCAncCcsICduJywgJ2UnLCAneicsCisgICd3JywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnYycsICd0JywgJ3MnLCAneCcsICdzJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCisgICdjJywgJ18nLCAndicsICdjJywgJ3QnLCAndScsICd4JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2MnLCAndCcsCisgICd6JywgJ2wnLCAncycsICdiJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2UnLCAneCcsICdwJywgJ3QnLCAnZScsCisgICdmJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCisgICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ2cnLCAnYicsICdiJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCisgICd2JywgJ2wnLCAnbycsICdnJywgJ2UnLCAnZicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ2EnLCAnZCcsCisgICdkJywgJ2YnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAnZicsICdwJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCisgICdjJywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICdzJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ20nLCAnYScsCisgICd4JywgJ3MnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAncycsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCisgICdjJywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ20nLCAnYScsCisgICd4JywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICdhJywgJ3gnLCAndScsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCisgICdjJywgJ18nLCAndicsICdtJywgJ2EnLCAneCcsICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ20nLCAnYScsCisgICd4JywgJ3UnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICdoJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnaCcsCisgICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCisgICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ2gnLCAncicsICdhJywgJ2QnLCAnZCcsICdzJywgJ2gnLCAncycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCisgICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAnZicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCisgICdtJywgJ2knLCAnbicsICdzJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ20nLCAnaScsICduJywgJ3MnLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCisgICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAncycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCisgICdtJywgJ2knLCAnbicsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ20nLCAnaScsICduJywgJ3UnLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCisgICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICdpJywgJ24nLCAndScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCisgICdtJywgJ2knLCAnbicsICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ20nLCAnaScsICduJywgJ3UnLCAndycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCisgICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICdsJywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnaCcsICdtJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCisgICdjJywgJ18nLCAndicsICdtJywgJ3MnLCAndScsICdtJywgJ20nLCAnYicsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCisgICdtJywgJ3MnLCAndScsICdtJywgJ3MnLCAnaCcsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ3MnLCAndScsCi0gICdtJywgJ3UnLCAnaCcsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ3MnLCAndScsICdtJywgJ3UnLCAnaCcsCi0gICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ3UnLCAnbCcsICdlJywgJ3MnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdtJywgJ3MnLCAnaCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ3MnLCAndScsICdtJywgJ3UnLCAnYicsCisgICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCisgICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ3MnLCAndScsICdtJywgJ3UnLCAnaCcsICdtJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCisgICdjJywgJ18nLCAndicsICdtJywgJ3MnLCAndScsICdtJywgJ3UnLCAnaCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCisgICdtJywgJ3UnLCAnbCcsICdlJywgJ3MnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICd1JywgJ2wnLCAnZScsCisgICdzJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCisgICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ20nLCAndScsICdsJywgJ2UnLCAncycsICd3JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCisgICdjJywgJ18nLCAndicsICdtJywgJ3UnLCAnbCcsICdlJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsCisgICd1JywgJ2wnLCAnZScsICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ20nLCAndScsICdsJywgJ2UnLCAndScsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCisgICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ3UnLCAnbCcsICdvJywgJ3MnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCi0gICdfJywgJ3YnLCAnbScsICd1JywgJ2wnLCAnZScsICdzJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdfJywgJ3YnLCAnbScsICd1JywgJ2wnLCAnbycsICdzJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ20nLCAndScsCi0gICdsJywgJ2UnLCAncycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ3UnLCAnbCcsICdlJywgJ3UnLCAnYicsCisgICdsJywgJ28nLCAncycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ3UnLCAnbCcsICdvJywgJ3UnLCAnYicsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCi0gICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICd1JywgJ2wnLCAnZScsICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICd1JywgJ2wnLCAnbycsICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICd2JywgJ20nLCAndScsICdsJywgJ2UnLCAndScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdtJywgJ3UnLCAnbCcsCi0gICdvJywgJ3MnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICd1JywgJ2wnLCAnbycsICdzJywgJ2gnLCAnXDAwMCcsCisgICd2JywgJ20nLCAndScsICdsJywgJ28nLCAndScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICduJywgJ20nLCAncycsCisgICd1JywgJ2InLCAnZicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdwJywgJ2UnLCAncicsICdtJywgJ18nLCAnNCcsCisgICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCisgICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3AnLCAnaycsICdwJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCisgICd2JywgJ3AnLCAnaycsICdzJywgJ2QnLCAncycsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdwJywgJ2snLCAncycsCisgICdkJywgJ3UnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncCcsICdrJywgJ3MnLCAnaCcsICdzJywgJ3MnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ20nLCAndScsICdsJywgJ28nLCAncycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdlJywgJ2MnLCAnXycsICd2JywgJ3AnLCAnaycsICdzJywgJ2gnLCAndScsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCi0gICdtJywgJ3UnLCAnbCcsICdvJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAnbScsICd1JywgJ2wnLCAnbycsCi0gICd1JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCi0gICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ20nLCAndScsICdsJywgJ28nLCAndScsICd3JywgJ1wwMDAnLCAnXycsCisgICdwJywgJ2snLCAncycsICd3JywgJ3MnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncCcsICdrJywgJ3MnLCAndycsCisgICd1JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCisgICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3AnLCAnaycsICd1JywgJ2QnLCAndScsICdzJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCi0gICdjJywgJ18nLCAndicsICduJywgJ20nLCAncycsICd1JywgJ2InLCAnZicsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCi0gICdwJywgJ2UnLCAncicsICdtJywgJ18nLCAnNCcsICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3AnLCAnaycsCi0gICdwJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCi0gICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3AnLCAnaycsICdzJywgJ2QnLCAncycsICdzJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCi0gICdjJywgJ18nLCAndicsICdwJywgJ2snLCAncycsICdkJywgJ3UnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdjJywgJ18nLCAndicsICdwJywgJ2snLCAndScsICdoJywgJ3UnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncCcsCi0gICdrJywgJ3MnLCAnaCcsICdzJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3AnLCAnaycsICdzJywgJ2gnLCAndScsCi0gICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdwJywgJ2snLCAncycsICd3JywgJ3MnLCAncycsICdcMDAwJywgJ18nLCAnXycsCisgICdrJywgJ3UnLCAndycsICd1JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3AnLCAncicsICd0JywgJ3knLCAnYicsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCisgICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdwJywgJ3InLCAndCcsICd5JywgJ2InLCAncScsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCi0gICdfJywgJ3YnLCAncCcsICdrJywgJ3MnLCAndycsICd1JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3AnLCAnaycsCi0gICd1JywgJ2QnLCAndScsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdwJywgJ2snLCAndScsICdoJywgJ3UnLCAncycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCi0gICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncCcsICdrJywgJ3UnLCAndycsICd1JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdfJywgJ3YnLCAncCcsICdyJywgJ3QnLCAneScsICdiJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3InLCAnZScsCisgICdmJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCisgICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3InLCAnZicsICdpJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICd2JywgJ3AnLCAncicsICd0JywgJ3knLCAnYicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdwJywgJ3InLCAndCcsCi0gICd5JywgJ2InLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncCcsICdyJywgJ3QnLCAneScsICdiJywgJ3cnLCAnXDAwMCcsCisgICd2JywgJ3InLCAnZicsICdpJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3InLCAnZicsICdpJywgJ3AnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ3InLCAnZScsICdmJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3InLCAnZicsCi0gICdpJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCi0gICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3InLCAnZicsICdpJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICd2JywgJ3InLCAnZicsICdpJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3InLCAnZicsICdpJywgJ3onLCAnXDAwMCcsCisgICdlJywgJ2MnLCAnXycsICd2JywgJ3InLCAnZicsICdpJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3InLCAnbCcsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCisgICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdyJywgJ2wnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncicsCisgICdsJywgJ2QnLCAnbScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdyJywgJ2wnLCAnZCcsICduJywgJ20nLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ3InLCAnbCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdyJywgJ2wnLCAnZCcsCisgICdlJywgJ2MnLCAnXycsICd2JywgJ3InLCAnbCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdyJywgJ2wnLCAndycsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCi0gICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncicsICdsJywgJ2QnLCAnbScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncicsICdsJywgJ3cnLCAnbScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCi0gICdyJywgJ2wnLCAnZCcsICduJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3InLCAnbCcsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCi0gICdjJywgJ18nLCAndicsICdyJywgJ2wnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncicsICdsJywgJ3cnLCAnbScsCi0gICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdyJywgJ2wnLCAndycsICduJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICd2JywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICdlJywgJ2YnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsCi0gICdlJywgJ2wnLCAnXycsICc0JywgJ3MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICdsJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCi0gICdjJywgJ18nLCAndicsICdzJywgJ2wnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICdsJywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAnbCcsICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdzJywgJ2wnLCAndicsCisgICdyJywgJ2wnLCAndycsICduJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3InLCAncycsICdxJywgJ3InLCAndCcsCisgICdlJywgJ2YnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICdlJywgJ2wnLCAnXycsICc0JywgJ3MnLCAnaScsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCi0gICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICdsJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdzJywgJ2wnLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCisgICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICdsJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAnbCcsCisgICdvJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCisgICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdzJywgJ2wnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsCisgICdsJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCisgICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsCisgICdyJywgJ2EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICdyJywgJ2EnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCisgICdfJywgJ3YnLCAncycsICdyJywgJ2EnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICdyJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCisgICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAncicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdzJywgJ3InLCAnbycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCisgICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICdyJywgJ3YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAncicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCi0gICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICdyJywgJ2EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCisgICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICdjJywgJ3UnLCAncScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCisgICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnYycsICd1JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAndScsCisgICdiJywgJ2UnLCAnYycsICd1JywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ2UnLCAndScsCisgICdxJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCisgICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3MnLCAnYicsICdzJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCisgICdjJywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICdzJywgJ2gnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsCi0gICdyJywgJ2EnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICdyJywgJ2EnLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICd1JywgJ2InLCAncycsICd3JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAnYicsCisgICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCisgICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICd1JywgJ2gnLCAncycsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCi0gICdfJywgJ3YnLCAncycsICdyJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAncicsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCi0gICdjJywgJ18nLCAndicsICdzJywgJ3InLCAnbycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICdyJywgJ3YnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAncicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsCi0gICdjJywgJ3UnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAnYycsICd1JywgJ3cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAndScsICdiJywgJ2UnLCAnYycsICd1JywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICd2JywgJ3MnLCAndScsICdiJywgJ2UnLCAndScsICdxJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndScsICd3JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAndScsCi0gICdiJywgJ3MnLCAnYicsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsICdzJywgJ2gnLCAncycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCi0gICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAncycsICd3JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICd2JywgJ3MnLCAndScsICdiJywgJ3UnLCAnYicsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICdzJywgJ3UnLCAnYicsCi0gICd1JywgJ2gnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCi0gICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAncycsICd1JywgJ2InLCAndScsICd3JywgJ3MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCi0gICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAndScsICdtJywgJzInLCAncycsICd3JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCi0gICd2JywgJ3MnLCAndScsICdtJywgJzQnLCAncycsICdiJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAndScsCi0gICdtJywgJzQnLCAncycsICdoJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAndScsICdtJywgJzQnLCAndScsCisgICdtJywgJzInLCAncycsICd3JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAndScsICdtJywgJzQnLCAncycsCiAgICdiJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCi0gICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAndScsICdtJywgJ3MnLCAndycsICdzJywgJ1wwMDAnLCAnXycsCisgICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAndScsICdtJywgJzQnLCAncycsICdoJywgJ3MnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCisgICdlJywgJ2MnLCAnXycsICd2JywgJ3MnLCAndScsICdtJywgJzQnLCAndScsICdiJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsCisgICd2JywgJ3MnLCAndScsICdtJywgJ3MnLCAndycsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICd1JywgJ3AnLCAnaycsCisgICdoJywgJ3AnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsCisgICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAndScsICdwJywgJ2snLCAnaCcsICdzJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsCisgICdlJywgJ2MnLCAnXycsICd2JywgJ3UnLCAncCcsICdrJywgJ2gnLCAncycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsCisgICd1JywgJ3AnLCAnaycsICdoJywgJ3MnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAndScsICdwJywgJ2snLCAnbCcsCisgICdwJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsCisgICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3UnLCAncCcsICdrJywgJ2wnLCAncycsICdiJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsCi0gICdjJywgJ18nLCAndicsICd1JywgJ3AnLCAnaycsICdoJywgJ3AnLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdjJywgJ18nLCAndicsICd1JywgJ3AnLCAnaycsICdsJywgJ3MnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAndScsCi0gICdwJywgJ2snLCAnaCcsICdzJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3UnLCAncCcsICdrJywgJ2gnLCAncycsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdhJywgJ2wnLCAndCcsCi0gICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICd1JywgJ3AnLCAnaycsICdoJywgJ3MnLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsICd2JywgJ2UnLCAnYycsCi0gICdfJywgJ3YnLCAndScsICdwJywgJ2snLCAnbCcsICdwJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2EnLCAnbCcsICd0JywgJ2knLCAndicsICdlJywgJ2MnLCAnXycsICd2JywgJ3UnLCAncCcsCi0gICdrJywgJ2wnLCAncycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdhJywgJ2wnLCAndCcsICdpJywgJ3YnLCAnZScsICdjJywgJ18nLCAndicsICd1JywgJ3AnLCAnaycsICdsJywgJ3MnLCAnaCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnYScsICdsJywgJ3QnLCAnaScsCi0gICd2JywgJ2UnLCAnYycsICdfJywgJ3YnLCAndScsICdwJywgJ2snLCAnbCcsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2InLCAncCcsICdlJywgJ3InLCAnbScsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdkJywgJ2knLCAndicsICdkJywgJ2UnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2QnLCAnaScsICd2JywgJ2QnLCAnZScsCi0gICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdkJywgJ2knLCAndicsCi0gICdmJywgJzEnLCAnMicsICc4JywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAndCcsICdvJywgJ18nLCAnbycsCi0gICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2QnLCAnaScsCi0gICd2JywgJ3cnLCAnZScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnZCcsCi0gICdpJywgJ3YnLCAndycsICdlJywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2YnLCAnbScsICdhJywgJ2YnLCAnMScsICcyJywgJzgnLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsCi0gICd0JywgJ28nLCAnXycsICdvJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnZycsICdlJywgJ3QnLCAnXycsICd0JywgJ2UnLCAneCcsICdhJywgJ3MnLCAncicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnZycsICdlJywgJ3QnLCAnXycsICd0JywgJ2UnLCAneCcsCi0gICdhJywgJ3MnLCAncicsICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdnJywgJ2UnLCAndCcsICdfJywgJ3QnLCAnZicsICdoJywgJ2EnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnZycsICdlJywgJ3QnLCAnXycsICd0JywgJ2YnLCAnaScsICdhJywgJ3InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAndScsICdsJywgJ2YnLCAnMScsCisgICdwJywgJ2snLCAnbCcsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2InLCAncCcsICdlJywgJ3InLCAnbScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdkJywgJ2knLCAndicsICdkJywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2QnLCAnaScsICd2JywgJ2QnLCAnZScsICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdkJywgJ2knLCAndicsICdmJywgJzEnLCAnMicsICc4JywgJ18nLCAncicsCisgICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAndCcsICdvJywgJ18nLCAnbycsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2QnLCAnaScsICd2JywgJ3cnLCAnZScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnZCcsICdpJywgJ3YnLCAndycsICdlJywgJ3UnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2YnLCAnbScsICdhJywgJ2YnLCAnMScsCiAgICcyJywgJzgnLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICd0JywgJ28nLCAnXycsICdvJywgJ2QnLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnZycsICdlJywgJ3QnLCAnXycsCisgICd0JywgJ2UnLCAneCcsICdhJywgJ3MnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnZycsICdlJywgJ3QnLCAnXycsICd0JywgJ2UnLCAneCcsICdhJywgJ3MnLCAncicsICd1JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdnJywgJ2UnLCAndCcsICdfJywgJ3QnLCAnZicsCisgICdoJywgJ2EnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnZycsCisgICdlJywgJ3QnLCAnXycsICd0JywgJ2YnLCAnaScsICdhJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ20nLCAndScsICdsJywgJ2YnLCAnMScsICcyJywgJzgnLCAnXycsICdyJywgJ28nLCAndScsCisgICduJywgJ2QnLCAnXycsICd0JywgJ28nLCAnXycsICdvJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICdhJywgJ2InLCAncycsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsCi0gICdxJywgJ3YnLCAnZicsICdhJywgJ2InLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICdhJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsCi0gICdhJywgJ2QnLCAnZCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ2MnLCAnZicsICdpJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdxJywgJ3YnLCAnZicsICdhJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICdhJywgJ2QnLCAnZCcsICdzJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsCisgICdmJywgJ2MnLCAnZicsICdpJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnYycsICdmJywgJ2knLCAnZCcsICdzJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsCisgICdmJywgJ2MnLCAnZicsICdpJywgJ2QnLCAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICdjJywgJ2YnLCAnaScsICdkJywgJ3UnLCAncycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsCisgICdxJywgJ3YnLCAnZicsICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnYycsICdtJywgJ3AnLCAnZycsCisgICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsCisgICdfJywgJ3EnLCAndicsICdmJywgJ2MnLCAnbScsICdwJywgJ2wnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICdjJywgJ3AnLCAncycsCisgICdnJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsCisgICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnYycsICd0JywgJ2knLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICdjJywgJ3QnLCAnaScsCisgICdkJywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsCisgICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnYycsICd0JywgJ2knLCAnZCcsICd1JywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnYycsCi0gICdmJywgJ2knLCAnZCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ2MnLCAnZicsICdpJywgJ2QnLCAndScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsCi0gICdjJywgJ2YnLCAnaScsICdkJywgJ3UnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsCi0gICd2JywgJ2YnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ2MnLCAnbScsICdwJywgJ2wnLCAndCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsCi0gICdxJywgJ3YnLCAnZicsICdjJywgJ3AnLCAncycsICdnJywgJ24nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnYycsICd0JywgJ2knLCAnZCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsCi0gICdxJywgJ3YnLCAnZicsICdjJywgJ3QnLCAnaScsICdkJywgJ3UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnYycsICd0JywgJ2knLCAnZCcsCi0gICd1JywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsCi0gICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnYycsICd0JywgJ2knLCAnZCcsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ2MnLCAndCcsCi0gICdpJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsCi0gICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnYycsICd0JywgJ2knLCAndycsICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ2MnLCAndCcsCi0gICdpJywgJ3cnLCAndScsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ2MnLCAndCcsICdpJywgJ3cnLCAneicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsCi0gICdsJywgJ28nLCAnZycsICdpJywgJ2MnLCAnYScsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ20nLCAnYScsICdkJywgJ2QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsCi0gICd2JywgJ2YnLCAnbScsICdhJywgJ2QnLCAnZCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ20nLCAncycsICd1JywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsCi0gICd2JywgJ2YnLCAnbScsICdzJywgJ3UnLCAnYicsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ20nLCAndScsICdsJywgJ1wwMDAnLCAnXycsCisgICd0JywgJ2knLCAnZCcsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ2MnLCAndCcsICdpJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnYycsCisgICd0JywgJ2knLCAndycsICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ2MnLCAndCcsICdpJywgJ3cnLCAndScsICd6JywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsCi0gICdmJywgJ20nLCAndScsICdsJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnbicsICdhJywgJ2InLCAncycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsCi0gICduJywgJ2UnLCAnZycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsCi0gICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICduJywgJ20nLCAnYScsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnbicsCi0gICdtJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnbicsICdtJywgJ3MnLCAndScsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsCi0gICdmJywgJ24nLCAnbScsICdzJywgJ3UnLCAnYicsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ3AnLCAnZScsICdyJywgJ20nLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsCi0gICd2JywgJ2YnLCAncicsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ3InLCAnZScsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ3InLCAnaScsCi0gICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsCi0gICdfJywgJ3EnLCAndicsICdmJywgJ3InLCAnaScsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ3InLCAnaScsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsCi0gICdmJywgJ3InLCAnaScsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ3InLCAncycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ3InLCAncycsCi0gICdxJywgJ3InLCAndCcsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICdlJywgJ3MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsCi0gICd2JywgJ2YnLCAncycsICdlJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAncycsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAncycsCi0gICd1JywgJ2InLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsCi0gICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICd0JywgJ3MnLCAndCcsICduJywgJ2EnLCAnbicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsCi0gICd4JywgJ20nLCAnYScsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAneCcsICdtJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsCi0gICd2JywgJ2YnLCAneCcsICdtJywgJ3UnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICd4JywgJ20nLCAndScsICdsJywgJ3MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsCi0gICd2JywgJ2YnLCAneCcsICd4JywgJ2MnLCAncCcsICduJywgJ20nLCAnYScsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAneCcsCi0gICd4JywgJ2MnLCAncCcsICduJywgJ20nLCAnYScsICdkJywgJ2QnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICd4JywgJ3gnLCAnbScsCi0gICdhJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsCi0gICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICd4JywgJ3gnLCAnbScsICdhJywgJ2QnLCAnZCcsICdzJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsCi0gICdmJywgJ3gnLCAneCcsICduJywgJ3AnLCAnbScsICdhJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICd4JywgJ3gnLCAnbicsCi0gICdwJywgJ20nLCAnYScsICdkJywgJ2QnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZycsICdwJywgJ2MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnbCcsCi0gICdmJywgJ2MnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsCi0gICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnbCcsICdmJywgJ2MnLCAnZCcsICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdsJywgJ2YnLCAnYycsCisgICdmJywgJ2MnLCAndCcsICdpJywgJ3cnLCAneicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICdsJywgJ28nLCAnZycsICdpJywgJ2MnLCAnYScsCisgICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsCisgICdfJywgJ3EnLCAndicsICdmJywgJ20nLCAnYScsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnbScsICdhJywgJ2QnLCAnZCcsCiAgICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsCi0gICdfJywgJ3EnLCAndicsICdsJywgJ2YnLCAnYycsICdzJywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2wnLCAnZicsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsCi0gICdsJywgJ2YnLCAnZCcsICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdsJywgJ2YnLCAnaScsICd3JywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2wnLCAnZicsCi0gICdpJywgJ3cnLCAnYScsICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdsJywgJ2YnLCAnaScsICd3JywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2wnLCAnZicsCi0gICdpJywgJ3cnLCAneicsICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdsJywgJ2YnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnbCcsICdmJywgJ3MnLCAnYScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsCi0gICdxJywgJ3YnLCAnbCcsICdwJywgJ2MnLCAnbCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdsJywgJ3AnLCAnYycsICdsJywgJ3MnLCAnXDAwMCcsCisgICdfJywgJ3EnLCAndicsICdmJywgJ20nLCAncycsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnbScsICdzJywgJ3UnLCAnYicsCisgICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsCisgICdfJywgJ3EnLCAndicsICdmJywgJ20nLCAndScsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ20nLCAndScsICdsJywgJ3MnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsCi0gICd2JywgJ2wnLCAncCcsICdjJywgJ3InLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnbCcsICdwJywgJ2MnLCAncicsICdzJywgJ1wwMDAnLCAnXycsCisgICd2JywgJ2YnLCAnbicsICdhJywgJ2InLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICduJywgJ2UnLCAnZycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsCisgICduJywgJ20nLCAnYScsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAnbicsICdtJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsCisgICd2JywgJ2YnLCAnbicsICdtJywgJ3MnLCAndScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ24nLCAnbScsICdzJywgJ3UnLCAnYicsCisgICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsCisgICdfJywgJ3EnLCAndicsICdmJywgJ3AnLCAnZScsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAncicsICdlJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsCi0gICdzJywgJ3QnLCAnZicsICdjJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ3MnLCAndCcsICdmJywgJ2MnLCAnZCcsICdhJywgJ1wwMDAnLCAnXycsCisgICdmJywgJ3InLCAnZScsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ3InLCAnaScsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ3InLCAnaScsCisgICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsCisgICdfJywgJ3EnLCAndicsICdmJywgJ3InLCAnaScsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ3InLCAnaScsICd6JywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsCi0gICdzJywgJ3QnLCAnZicsICdjJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ3MnLCAndCcsICdmJywgJ2MnLCAncycsICdhJywgJ1wwMDAnLCAnXycsCisgICdmJywgJ3InLCAncycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICdlJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsCi0gICdzJywgJ3QnLCAnZicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdzJywgJ3QnLCAnZicsICdkJywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdmJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICdlJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAncycsICdlJywgJ2wnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsCisgICd2JywgJ2YnLCAncycsICd1JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAncycsICd1JywgJ2InLCAncycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsCisgICd0JywgJ3MnLCAndCcsICduJywgJ2EnLCAnbicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICd4JywgJ20nLCAnYScsICdkJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsCisgICd2JywgJ2YnLCAneCcsICdtJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAneCcsICdtJywgJ3UnLCAnbCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsCisgICdxJywgJ3YnLCAnZicsICd4JywgJ20nLCAndScsICdsJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAneCcsICd4JywgJ2MnLCAncCcsCisgICduJywgJ20nLCAnYScsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2YnLCAneCcsICd4JywgJ2MnLCAncCcsICduJywgJ20nLCAnYScsCisgICdkJywgJ2QnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsCisgICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICd4JywgJ3gnLCAnbScsICdhJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsCisgICd4JywgJ3gnLCAnbScsICdhJywgJ2QnLCAnZCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdmJywgJ3gnLCAneCcsICduJywgJ3AnLCAnbScsCisgICdhJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsCisgICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnZicsICd4JywgJ3gnLCAnbicsICdwJywgJ20nLCAnYScsICdkJywgJ2QnLCAncycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsCisgICdxJywgJ3YnLCAnZycsICdwJywgJ2MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnbCcsICdmJywgJ2MnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnbCcsCisgICdmJywgJ2MnLCAnZCcsICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdsJywgJ2YnLCAnYycsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdsJywgJ2YnLCAnYycsCisgICdzJywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsCisgICd4JywgJ18nLCAncScsICd2JywgJ2wnLCAnZicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdsJywgJ2YnLCAnZCcsICdhJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsCisgICdsJywgJ2YnLCAnaScsICd3JywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2wnLCAnZicsICdpJywgJ3cnLCAnYScsICdhJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsCisgICdsJywgJ2YnLCAnaScsICd3JywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2wnLCAnZicsICdpJywgJ3cnLCAneicsICdhJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsCisgICdsJywgJ2YnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsCisgICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnbCcsICdmJywgJ3MnLCAnYScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAnbCcsICdwJywgJ2MnLCAnbCcsCisgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsCisgICdfJywgJ3EnLCAndicsICdsJywgJ3AnLCAnYycsICdsJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ2wnLCAncCcsICdjJywgJ3InLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsCisgICdxJywgJ3YnLCAnbCcsICdwJywgJ2MnLCAncicsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdzJywgJ3QnLCAnZicsICdjJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsCisgICd2JywgJ3MnLCAndCcsICdmJywgJ2MnLCAnZCcsICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdzJywgJ3QnLCAnZicsICdjJywgJ3MnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsCisgICd2JywgJ3MnLCAndCcsICdmJywgJ2MnLCAncycsICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsICdzJywgJ3QnLCAnZicsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdxJywgJ3AnLCAneCcsICdfJywgJ3EnLCAndicsCisgICdzJywgJ3QnLCAnZicsICdkJywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ3MnLCAndCcsICdmJywgJ2knLCAndycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAncycsCisgICd0JywgJ2YnLCAnaScsICd3JywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ3MnLCAndCcsICdmJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ3MnLCAndCcsCi0gICdmJywgJ2knLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncScsCi0gICdwJywgJ3gnLCAnXycsICdxJywgJ3YnLCAncycsICd0JywgJ2YnLCAnaScsICd3JywgJ2EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsICd4JywgJ18nLCAncScsICd2JywgJ3MnLCAndCcsCi0gICdmJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3EnLCAncCcsCi0gICd4JywgJ18nLCAncScsICd2JywgJ3MnLCAndCcsICdmJywgJ3MnLCAnYScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICdzJywgJ2MnLCAnYScsICdsJywgJ2EnLCAncicsCi0gICdfJywgJ2UnLCAneCcsICd0JywgJ3InLCAnYScsICdjJywgJ3QnLCAnXycsICdlJywgJ3gnLCAncCcsICdxJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsICdfJywgJ3MnLCAnYycsCi0gICdhJywgJ2wnLCAnYScsICdyJywgJ18nLCAnaScsICduJywgJ3MnLCAnZScsICdyJywgJ3QnLCAnXycsICdlJywgJ3gnLCAncCcsCi0gICdfJywgJ3EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCi0gICdlJywgJ3QnLCAnXycsICd0JywgJ2UnLCAneCcsICdhJywgJ3MnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICdlJywgJ3QnLCAnXycsICd0JywgJ2UnLCAneCcsICdhJywgJ3MnLCAncicsCi0gICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJ2UnLCAndCcsCi0gICdfJywgJ3QnLCAnZicsICdoJywgJ2EnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAncycsICdlJywgJ3QnLCAnXycsICd0JywgJ2YnLCAnaScsICdhJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAncScsICdyJywgJ3QnLCAnZicsICcxJywgJzInLCAnOCcsCi0gICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ3QnLCAnbycsICdfJywgJ28nLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJ3UnLCAnYicsICdmJywgJzEnLCAnMicsCi0gICc4JywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAndCcsICdvJywgJ18nLCAnbycsICdkJywgJ2QnLCAnXDAwMCcsCisgICdmJywgJ3MnLCAnYScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsCisgICdzJywgJ3gnLCAnXycsICdzJywgJ2MnLCAnYScsICdsJywgJ2EnLCAncicsICdfJywgJ2UnLCAneCcsICd0JywgJ3InLCAnYScsCisgICdjJywgJ3QnLCAnXycsICdlJywgJ3gnLCAncCcsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsICdfJywgJ3MnLCAnYycsICdhJywgJ2wnLCAnYScsICdyJywgJ18nLCAnaScsCisgICduJywgJ3MnLCAnZScsICdyJywgJ3QnLCAnXycsICdlJywgJ3gnLCAncCcsICdfJywgJ3EnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICdlJywgJ3QnLCAnXycsICd0JywgJ2UnLCAneCcsCisgICdhJywgJ3MnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICdlJywgJ3QnLCAnXycsICd0JywgJ2UnLCAneCcsICdhJywgJ3MnLCAncicsICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJ2UnLCAndCcsICdfJywgJ3QnLCAnZicsICdoJywgJ2EnLCAncicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICdlJywgJ3QnLCAnXycsCisgICd0JywgJ2YnLCAnaScsICdhJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3MnLCAncScsICdyJywgJ3QnLCAnZicsICcxJywgJzInLCAnOCcsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsCisgICdfJywgJ3QnLCAnbycsICdfJywgJ28nLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJ3UnLCAnYicsICdmJywgJzEnLCAnMicsICc4JywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsCisgICdkJywgJ18nLCAndCcsICdvJywgJ18nLCAnbycsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3QnLCAnYScsICdiJywgJ28nLCAncicsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd0JywgJ2EnLCAnYicsICdvJywgJ3InLCAndCcsICdkJywgJ2MnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3QnLCAnYScsICdiJywgJ28nLCAncicsCi0gICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd0JywgJ2EnLCAnYicsCi0gICdvJywgJ3InLCAndCcsICdkJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3QnLCAnYScsICdiJywgJ28nLCAncicsICd0JywgJ2QnLCAnYycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd0JywgJ2EnLCAnYicsICdvJywgJ3InLCAndCcsICd3JywgJ2MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3QnLCAnYScsICdiJywgJ28nLCAncicsCi0gICd0JywgJ3cnLCAnYycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICd0JywgJ2InLCAnZScsICdnJywgJ2knLCAnbicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAndCcsICdjJywgJ2gnLCAnZScsICdjJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3QnLCAnZScsICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3QnLCAnZScsICduJywgJ2QnLCAnYScsICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3QnLCAncicsICdlJywgJ2MnLCAnaCcsICdrJywgJ3AnLCAndCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndCcsICdyJywgJ2UnLCAnYycsCi0gICdsJywgJ2EnLCAnaScsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICd0JywgJ3InLCAnZScsICdzJywgJ3UnLCAnbScsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICd0JywgJ3InLCAndScsICduJywgJ2MnLCAnZicsICcxJywgJzInLCAnOCcsICdfJywgJ3InLCAnbycsCi0gICd1JywgJ24nLCAnZCcsICdfJywgJ3QnLCAnbycsICdfJywgJ28nLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd0JywgJ3MnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndCcsICdzJywgJ3UnLCAncycsICdwJywgJ2UnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd0JywgJ3QnLCAnZScsICdzJywgJ3QnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsCi0gICdzJywgJ20nLCAnYScsICd4JywgJ2QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3MnLCAnbScsICdpJywgJ24nLCAnZCcsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAndicsCi0gICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAnZCcsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICd0JywgJ2QnLCAnYycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICd0JywgJ2EnLCAnYicsICdvJywgJ3InLCAndCcsICd3JywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3QnLCAnYScsICdiJywgJ28nLCAncicsICd0JywgJ3cnLCAnYycsICdpJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd0JywgJ2InLCAnZScsICdnJywgJ2knLCAnbicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndCcsICdjJywgJ2gnLCAnZScsCisgICdjJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3QnLCAnZScsCisgICduJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3QnLCAnZScsCisgICduJywgJ2QnLCAnYScsICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3QnLCAncicsICdlJywgJ2MnLCAnaCcsICdrJywgJ3AnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndCcsICdyJywgJ2UnLCAnYycsICdsJywgJ2EnLCAnaScsICdtJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd0JywgJ3InLCAnZScsICdzJywgJ3UnLCAnbScsCisgICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd0JywgJ3InLCAndScsCisgICduJywgJ2MnLCAnZicsICcxJywgJzInLCAnOCcsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ3QnLCAnbycsCisgICdfJywgJ28nLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICd0JywgJ3MnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndCcsCisgICdzJywgJ3UnLCAncycsICdwJywgJ2UnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICd0JywgJ3QnLCAnZScsICdzJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICdzJywgJ20nLCAnYScsICd4JywgJ2QnLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsCisgICd4JywgJ3MnLCAnbScsICdpJywgJ24nLCAnZCcsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAndicsICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAnZCcsCi0gICdwJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsCi0gICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZScsICdxJywgJ3MnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsCisgICdfJywgJ3gnLCAndicsICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAnZCcsICdwJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnYycsCi0gICdtJywgJ3AnLCAnZScsICdxJywgJ3MnLCAncCcsICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAnZScsCi0gICdkJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsCi0gICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAnZScsICdkJywgJ3AnLCAnXycsICdwJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAndicsCi0gICdjJywgJ20nLCAncCcsICdnJywgJ2UnLCAncycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdtJywgJ3AnLCAnZScsICdxJywgJ3MnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZScsICdxJywgJ3MnLCAncCcsCisgICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsCisgICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAnZScsICdkJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAnbScsCisgICdwJywgJ2cnLCAnZScsICdkJywgJ3AnLCAnXycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAndicsICdjJywgJ20nLCAncCcsICdnJywgJ2UnLCAncycsCi0gICdwJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsCi0gICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ2QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsCisgICdfJywgJ3gnLCAndicsICdjJywgJ20nLCAncCcsICdnJywgJ2UnLCAncycsICdwJywgJ18nLCAncCcsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnYycsCi0gICdtJywgJ3AnLCAnZycsICd0JywgJ2QnLCAncCcsICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsCi0gICdzJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsCi0gICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICdzJywgJ3AnLCAnXycsICdwJywgJ1wwMDAnLCAnXycsCisgICdtJywgJ3AnLCAnZycsICd0JywgJ2QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ2QnLCAncCcsCisgICdfJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsCisgICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICdzJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAnbScsCisgICdwJywgJ2cnLCAndCcsICdzJywgJ3AnLCAnXycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAndicsICdjJywgJ3YnLCAnZCcsICdwJywgJ3MnLCAncCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsCisgICd4JywgJ3YnLCAnYycsICd2JywgJ2QnLCAncCcsICdzJywgJ3gnLCAndycsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAndicsICdjJywgJ3YnLCAnZCcsCisgICdwJywgJ3UnLCAneCcsICd3JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAndicsICdoJywgJ3AnLCAncycsICdwJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAndicsCi0gICdjJywgJ3YnLCAnZCcsICdwJywgJ3MnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnYycsICd2JywgJ2QnLCAncCcsICdzJywgJ3gnLCAndycsCi0gICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsCi0gICdfJywgJ3gnLCAndicsICdjJywgJ3YnLCAnZCcsICdwJywgJ3UnLCAneCcsICd3JywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAndicsCi0gICdoJywgJ3AnLCAncycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAndicsICdjJywgJ3YnLCAncycsICdwJywgJ2QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnYycsCi0gICd2JywgJ3MnLCAncCcsICdoJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAndicsICdzJywgJ3gnLCAnZCcsICdzJywgJ3AnLCAnXDAwMCcsCisgICdjJywgJ3YnLCAncycsICdwJywgJ2QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnYycsICd2JywgJ3MnLCAncCcsICdoJywgJ3AnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsCi0gICd2JywgJ2MnLCAndicsICdzJywgJ3gnLCAndycsICdkJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAndicsICd1JywgJ3gnLCAnZCcsCi0gICdzJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsCi0gICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAndicsICd1JywgJ3gnLCAndycsICdkJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ2QnLCAnaScsCi0gICd2JywgJ2QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsCi0gICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnZCcsICdpJywgJ3YnLCAncycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAndicsICdpJywgJ2UnLCAneCcsCi0gICdwJywgJ2QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsCi0gICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnaScsICdlJywgJ3gnLCAncCcsICdzJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ20nLCAnYScsCi0gICd4JywgJ2QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsCi0gICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnbScsICdhJywgJ3gnLCAncycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAndicsICdtJywgJ2knLCAnbicsCisgICd2JywgJ2MnLCAndicsICdzJywgJ3gnLCAnZCcsICdzJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAndicsICdzJywgJ3gnLCAndycsCiAgICdkJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsCi0gICd4JywgJ18nLCAneCcsICd2JywgJ20nLCAnaScsICduJywgJ3MnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAncicsICdlJywgJ2QnLCAncCcsCisgICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAndicsICd1JywgJ3gnLCAnZCcsICdzJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ2MnLCAndicsCisgICd1JywgJ3gnLCAndycsICdkJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ2QnLCAnaScsICd2JywgJ2QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnZCcsCisgICdpJywgJ3YnLCAncycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAndicsICdpJywgJ2UnLCAneCcsICdwJywgJ2QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnaScsCisgICdlJywgJ3gnLCAncCcsICdzJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ20nLCAnYScsICd4JywgJ2QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAnbScsCisgICdhJywgJ3gnLCAncycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAndicsICdtJywgJ2knLCAnbicsICdkJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ20nLCAnaScsCisgICduJywgJ3MnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsCisgICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAncicsICdlJywgJ2QnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAncicsICdlJywgJ3MnLCAncCcsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsCi0gICd4JywgJ3YnLCAncicsICdlJywgJ3MnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAncicsICdzJywgJ3EnLCAncicsICd0JywgJ2UnLCAnZCcsCi0gICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsCi0gICdfJywgJ3gnLCAndicsICdyJywgJ3MnLCAncScsICdyJywgJ3QnLCAnZScsICdzJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ3QnLCAncycsCi0gICd0JywgJ2QnLCAnYycsICdkJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ3QnLCAncycsICd0JywgJ2QnLCAnYycsICdzJywgJ3AnLCAnXDAwMCcsCisgICd4JywgJ3YnLCAncicsICdzJywgJ3EnLCAncicsICd0JywgJ2UnLCAnZCcsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAndicsICdyJywgJ3MnLCAncScsCisgICdyJywgJ3QnLCAnZScsICdzJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ3QnLCAncycsICd0JywgJ2QnLCAnYycsICdkJywgJ3AnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsCi0gICd2JywgJ3gnLCAnZScsICd4JywgJ3AnLCAnZCcsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAndicsICd4JywgJ2UnLCAneCcsICdwJywgJ3MnLCAncCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsCi0gICd4JywgJ3YnLCAneCcsICdzJywgJ2knLCAnZycsICdkJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ3gnLCAncycsICdpJywgJ2cnLCAncycsCisgICd2JywgJ3QnLCAncycsICd0JywgJ2QnLCAnYycsICdzJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsICd4JywgJ18nLCAneCcsICd2JywgJ3gnLCAnZScsICd4JywgJ3AnLCAnZCcsCiAgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsCi0gICdfJywgJ3gnLCAneCcsICdlJywgJ3gnLCAndCcsICdyJywgJ2EnLCAnYycsICd0JywgJ3UnLCAndycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3gnLCAnaScsCi0gICduJywgJ3MnLCAnZScsICdyJywgJ3QnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3gnLCAnbCcsICdlJywgJ3EnLCAndicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncicsICc2JywgJzAnLCAnMCcsICdfJywgJ2cnLCAncicsCi0gICdvJywgJ3UnLCAncCcsICdfJywgJ2InLCAnYScsICdyJywgJ3InLCAnaScsICdlJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3InLCAnNicsICcwJywgJzAnLCAnXycsICdpJywgJ20nLCAncCcsCi0gICdsJywgJ2knLCAnYycsICdpJywgJ3QnLCAnYScsICdyJywgJ2cnLCAnXycsICdwJywgJ3QnLCAncicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncicsICc2JywgJzAnLCAnMCcsICdfJywgJ3InLCAnYScsCi0gICd0JywgJ18nLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ18nLCAndCcsICd5JywgJ3AnLCAnZScsICdkJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdyJywgJzYnLCAnMCcsICcwJywgJ18nLCAncicsCi0gICdlJywgJ2EnLCAnZCcsICdfJywgJ2cnLCAnbCcsICdvJywgJ2InLCAnYScsICdsJywgJ18nLCAncycsICdpJywgJ3onLCAnZScsCi0gICdfJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3InLCAnNicsCi0gICcwJywgJzAnLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ18nLCAnZycsICdsJywgJ28nLCAnYicsICdhJywgJ2wnLCAnXycsCi0gICdzJywgJ2knLCAneicsICdlJywgJ18nLCAneScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAncicsICc2JywgJzAnLCAnMCcsICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdnJywgJ2wnLCAnbycsCi0gICdiJywgJ2EnLCAnbCcsICdfJywgJ3MnLCAnaScsICd6JywgJ2UnLCAnXycsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdyJywgJzYnLCAnMCcsICcwJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsCi0gICdfJywgJ24nLCAnZycsICdyJywgJ28nLCAndScsICdwJywgJ3MnLCAnXycsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdyJywgJzYnLCAnMCcsICcwJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsCi0gICdfJywgJ24nLCAnZycsICdyJywgJ28nLCAndScsICdwJywgJ3MnLCAnXycsICd5JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdyJywgJzYnLCAnMCcsICcwJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsCi0gICdfJywgJ24nLCAnZycsICdyJywgJ28nLCAndScsICdwJywgJ3MnLCAnXycsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdyJywgJzYnLCAnMCcsICcwJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsCi0gICdfJywgJ3QnLCAnZycsICdpJywgJ2QnLCAnXycsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdyJywgJzYnLCAnMCcsICcwJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3QnLCAnZycsCi0gICdpJywgJ2QnLCAnXycsICd5JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdfJywgJ3gnLCAndicsICd4JywgJ2UnLCAneCcsICdwJywgJ3MnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3YnLCAneCcsICdzJywgJ2knLCAnZycsCisgICdkJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3YnLCAncycsCisgICd4JywgJ18nLCAneCcsICd2JywgJ3gnLCAncycsICdpJywgJ2cnLCAncycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICd2JywgJ3MnLCAneCcsICdfJywgJ3gnLCAneCcsICdlJywgJ3gnLCAndCcsCisgICdyJywgJ2EnLCAnYycsICd0JywgJ3UnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsICd4JywgJ3gnLCAnaScsICduJywgJ3MnLCAnZScsICdyJywgJ3QnLCAndycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndicsICdzJywgJ3gnLCAnXycsCisgICd4JywgJ3gnLCAnbCcsICdlJywgJ3EnLCAndicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAncicsICc2JywgJzAnLCAnMCcsICdfJywgJ2cnLCAncicsICdvJywgJ3UnLCAncCcsICdfJywgJ2InLCAnYScsCisgICdyJywgJ3InLCAnaScsICdlJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3InLCAnNicsICcwJywgJzAnLCAnXycsICdpJywgJ20nLCAncCcsICdsJywgJ2knLCAnYycsICdpJywgJ3QnLCAnYScsCisgICdyJywgJ2cnLCAnXycsICdwJywgJ3QnLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAncicsICc2JywgJzAnLCAnMCcsICdfJywgJ3InLCAnYScsICd0JywgJ18nLCAncycsICd0JywgJ28nLCAncicsCisgICdlJywgJ18nLCAndCcsICd5JywgJ3AnLCAnZScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdyJywgJzYnLCAnMCcsICcwJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ2cnLCAnbCcsCisgICdvJywgJ2InLCAnYScsICdsJywgJ18nLCAncycsICdpJywgJ3onLCAnZScsICdfJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3InLCAnNicsICcwJywgJzAnLCAnXycsICdyJywgJ2UnLCAnYScsCisgICdkJywgJ18nLCAnZycsICdsJywgJ28nLCAnYicsICdhJywgJ2wnLCAnXycsICdzJywgJ2knLCAneicsICdlJywgJ18nLCAneScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncicsICc2JywgJzAnLCAnMCcsCisgICdfJywgJ3InLCAnZScsICdhJywgJ2QnLCAnXycsICdnJywgJ2wnLCAnbycsICdiJywgJ2EnLCAnbCcsICdfJywgJ3MnLCAnaScsCisgICd6JywgJ2UnLCAnXycsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdyJywgJzYnLCAnMCcsICcwJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ24nLCAnZycsICdyJywgJ28nLCAndScsCisgICdwJywgJ3MnLCAnXycsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdyJywgJzYnLCAnMCcsICcwJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ24nLCAnZycsICdyJywgJ28nLCAndScsCisgICdwJywgJ3MnLCAnXycsICd5JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdyJywgJzYnLCAnMCcsICcwJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ24nLCAnZycsICdyJywgJ28nLCAndScsCisgICdwJywgJ3MnLCAnXycsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdyJywgJzYnLCAnMCcsICcwJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3QnLCAnZycsICdpJywgJ2QnLCAnXycsCi0gICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAnZScsICdmJywgJ3AnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAndCcsICd4JywgJ18nLCAnbicsICdlJywgJ3MnLCAndCcsICdpJywgJ24nLCAnZycsICdfJywgJ2QnLCAnZScsCi0gICdwJywgJ3QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCi0gICczJywgJzknLCAnMCcsICdfJywgJ2wnLCAnYycsICdiJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3QnLCAneCcsICdfJywgJ2EnLCAncycsICdzJywgJ2knLCAncycsICd0JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAncycsCi0gICdmJywgJ3AnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCi0gICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnYScsICdjJywgJ2MnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnYScsICdjJywgJ2MnLCAnYycsCi0gICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAndicsICdhJywgJ2MnLCAnYycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdhJywgJ2MnLCAnYycsICdnJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdhJywgJ2MnLCAnYycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdhJywgJ2MnLCAnYycsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdhJywgJ2MnLCAncScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsCi0gICdfJywgJ3YnLCAnYScsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsCi0gICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICdnJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICdoJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdhJywgJ3YnLCAnZycsICdsJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2EnLCAndicsICdnJywgJ2wnLCAnZicsICdcMDAwJywgJ18nLCAnXycsCisgICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdyJywgJzYnLCAnMCcsCisgICcwJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdfJywgJ3QnLCAnZycsICdpJywgJ2QnLCAnXycsICd5JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdyJywgJzYnLCAnMCcsICcwJywgJ18nLCAncicsCisgICdlJywgJ2EnLCAnZCcsICdfJywgJ3QnLCAnZycsICdpJywgJ2QnLCAnXycsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAnZScsICdmJywgJ3AnLCAnYycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAndCcsICd4JywgJ18nLCAnbicsCisgICdlJywgJ3MnLCAndCcsICdpJywgJ24nLCAnZycsICdfJywgJ2QnLCAnZScsICdwJywgJ3QnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ2wnLCAnYycsCisgICdiJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3QnLCAneCcsCisgICdfJywgJ2EnLCAncycsICdzJywgJ2knLCAncycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAncycsICdmJywgJ3AnLCAnYycsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnYScsCi0gICd2JywgJ2cnLCAnbCcsICdnJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICdsJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2InLCAncCcsCi0gICdlJywgJ3InLCAnbScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCi0gICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnYycsICdrJywgJ3MnLCAnbScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZScsICdyJywgJ2knLCAnbScsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAndicsICdlJywgJ3InLCAnaScsICdtJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2UnLCAncicsICdpJywgJ20nLCAnZycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsCi0gICdfJywgJ3YnLCAnZScsICdyJywgJ2knLCAnbScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdlJywgJ3InLCAnbCcsICdsJywgJ2InLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsCi0gICd2JywgJ2UnLCAncicsICdsJywgJ2wnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZScsICdyJywgJ2wnLCAnbCcsICdnJywgJ1wwMDAnLCAnXycsCisgICdjJywgJ2MnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnYScsICdjJywgJ2MnLCAnYycsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdhJywgJ2MnLCAnYycsCisgICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCisgICcwJywgJ18nLCAndicsICdhJywgJ2MnLCAnYycsICdnJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdhJywgJ2MnLCAnYycsICdoJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdlJywgJ3InLCAnbCcsICdsJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2UnLCAncicsICdsJywgJ2wnLCAndicsICdiJywgJ1wwMDAnLCAnXycsCisgICdhJywgJ2MnLCAnYycsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdhJywgJ2MnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnYScsICdxJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdlJywgJ3InLCAnbCcsICdsJywgJ3YnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZScsICdyJywgJ2wnLCAnbCcsICd2JywgJ2cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsCi0gICd2JywgJ2UnLCAncicsICdsJywgJ2wnLCAndicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdmJywgJ2EnLCAnZScsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdmJywgJ2EnLCAnZScsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdmJywgJ2EnLCAnZScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdmJywgJ2EnLCAnZScsCi0gICd6JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCi0gICc5JywgJzAnLCAnXycsICd2JywgJ2YnLCAnYScsICdlJywgJ3onLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZicsICdhJywgJ2UnLCAneicsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAndicsICdmJywgJ2UnLCAnZScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdmJywgJ2UnLCAnZScsICdmJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdmJywgJ2UnLCAnZScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdmJywgJ2UnLCAnZScsICd6JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2YnLCAnZScsCi0gICdlJywgJ3onLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCi0gICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZicsICdlJywgJ2UnLCAneicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdmJywgJ2UnLCAnbicsCi0gICdlJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCi0gICc5JywgJzAnLCAnXycsICd2JywgJ2YnLCAnZScsICduJywgJ2UnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZicsICdlJywgJ24nLCAnZScsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAndicsICdmJywgJ2UnLCAnbicsICdlJywgJ3onLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZicsICdlJywgJ24nLCAnZScsCi0gICd6JywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCi0gICc5JywgJzAnLCAnXycsICd2JywgJ2YnLCAnZScsICduJywgJ2UnLCAneicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdnJywgJ2YnLCAnbScsCi0gICdhJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCi0gICc5JywgJzAnLCAnXycsICd2JywgJ2cnLCAnZicsICdtJywgJ2EnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZycsICdmJywgJ20nLCAnYScsCisgICdhJywgJ3YnLCAnZycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsCiAgICdnJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAndicsICdnJywgJ2YnLCAnbScsICdhJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2cnLCAnZicsICdtJywgJ2InLCAnXDAwMCcsCisgICcwJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdhJywgJ3YnLCAnZycsICdsJywgJ2InLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsCi0gICd2JywgJ2cnLCAnZicsICdtJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2cnLCAnZicsICdtJywgJ2cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd2JywgJ2EnLCAndicsICdnJywgJ2wnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnYScsICd2JywgJ2cnLCAnbCcsICdnJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCisgICdhJywgJ3YnLCAnZycsICdsJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2InLCAncCcsICdlJywgJ3InLCAnbScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnYycsCisgICdrJywgJ3MnLCAnbScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZScsICdyJywgJ2knLCAnbScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdlJywgJ3InLCAnaScsCisgICdtJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCisgICc5JywgJzAnLCAnXycsICd2JywgJ2UnLCAncicsICdpJywgJ20nLCAnZycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZScsICdyJywgJ2knLCAnbScsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCisgICcwJywgJ18nLCAndicsICdlJywgJ3InLCAnbCcsICdsJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2UnLCAncicsICdsJywgJ2wnLCAnZicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsCisgICdfJywgJ3YnLCAnZScsICdyJywgJ2wnLCAnbCcsICdnJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdlJywgJ3InLCAnbCcsICdsJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsCisgICd2JywgJ2UnLCAncicsICdsJywgJ2wnLCAndicsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdlJywgJ3InLCAnbCcsICdsJywgJ3YnLCAnZicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsCisgICdfJywgJ3YnLCAnZScsICdyJywgJ2wnLCAnbCcsICd2JywgJ2cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2UnLCAncicsICdsJywgJ2wnLCAndicsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCisgICcwJywgJ18nLCAndicsICdmJywgJ2EnLCAnZScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdmJywgJ2EnLCAnZScsICdmJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCisgICdmJywgJ2EnLCAnZScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdmJywgJ2EnLCAnZScsICd6JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2YnLCAnYScsCisgICdlJywgJ3onLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZicsICdhJywgJ2UnLCAneicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdmJywgJ2UnLCAnZScsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCisgICcwJywgJ18nLCAndicsICdmJywgJ2UnLCAnZScsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdmJywgJ2UnLCAnZScsICdoJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCisgICdmJywgJ2UnLCAnZScsICd6JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2YnLCAnZScsICdlJywgJ3onLCAnZicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZicsCisgICdlJywgJ2UnLCAneicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdmJywgJ2UnLCAnbicsICdlJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2YnLCAnZScsCisgICduJywgJ2UnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZicsICdlJywgJ24nLCAnZScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdmJywgJ2UnLCAnbicsCisgICdlJywgJ3onLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZicsICdlJywgJ24nLCAnZScsICd6JywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2YnLCAnZScsCisgICduJywgJ2UnLCAneicsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdnJywgJ2YnLCAnbScsICdhJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2cnLCAnZicsCi0gICdtJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCi0gICc5JywgJzAnLCAnXycsICd2JywgJ2knLCAncycsICd0JywgJ3InLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnaScsICdzJywgJ3QnLCAncicsCi0gICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAndicsICdpJywgJ3MnLCAndCcsICdyJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2wnLCAnYicsICdiJywgJ1wwMDAnLCAnXycsCisgICdtJywgJ2EnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnZycsICdmJywgJ20nLCAnYScsICdnJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdnJywgJ2YnLCAnbScsCisgICdhJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCisgICc5JywgJzAnLCAnXycsICd2JywgJ2cnLCAnZicsICdtJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2cnLCAnZicsICdtJywgJ2YnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsCisgICd2JywgJ2cnLCAnZicsICdtJywgJ2cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2cnLCAnZicsICdtJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2knLCAncycsCisgICd0JywgJ3InLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnaScsICdzJywgJ3QnLCAncicsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdpJywgJ3MnLCAndCcsCisgICdyJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCisgICc5JywgJzAnLCAnXycsICd2JywgJ2wnLCAnYicsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ2wnLCAncicsCisgICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCisgICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnZScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnZScsICdmJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCi0gICc5JywgJzAnLCAnXycsICd2JywgJ2wnLCAncicsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnZScsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdtJywgJ2EnLCAnZScsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnZScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdtJywgJ2EnLCAnZScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnaCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnaCcsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnaCcsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsCisgICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCisgICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnbCcsICdlJywgJ2InLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsCisgICd2JywgJ20nLCAnYScsICdsJywgJ2UnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnbScsICdhJywgJ2wnLCAnZScsICdoJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdtJywgJ2EnLCAnbCcsICdlJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ20nLCAnYScsICdsJywgJ2UnLCAnZicsICdcMDAwJywgJ18nLCAnXycsCisgICdtJywgJ2EnLCAnbCcsICdoJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ20nLCAnYScsICdsJywgJ2gnLCAnZicsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnbScsCi0gICdhJywgJ2wnLCAnZScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnbCcsICdoJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdhJywgJ2wnLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnbCcsICdvJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ20nLCAnYScsCi0gICdsJywgJ2gnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCi0gICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnbScsICdhJywgJ2wnLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnbCcsCi0gICdvJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCi0gICc5JywgJzAnLCAnXycsICd2JywgJ20nLCAnYScsICdsJywgJ28nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnbScsICdhJywgJ2wnLCAnbycsCi0gICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnbycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnbycsICdmJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdtJywgJ2EnLCAnbycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnbScsICdlJywgJ2YnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsCi0gICd2JywgJ20nLCAnZScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2gnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnbScsICdoJywgJ2YnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsCi0gICd2JywgJ20nLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnZScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnZScsCi0gICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnZScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnaCcsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdtJywgJ2wnLCAnaCcsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnbycsCisgICdsJywgJ28nLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnbScsICdhJywgJ2wnLCAnbycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnbycsCiAgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnbycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnbycsICdoJywgJ1wwMDAnLCAnXycsCisgICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnbycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2EnLCAnbycsICdoJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdtJywgJ28nLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCi0gICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnbScsICdvJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ20nLCAnbycsICdoJywgJ1wwMDAnLCAnXycsCisgICdtJywgJ2UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnbScsICdlJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ20nLCAnZScsICdoJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdtJywgJ3MnLCAnbCcsICdnJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdwJywgJ2QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsCi0gICdfJywgJ3YnLCAncCcsICdrJywgJ2wnLCAncycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdwJywgJ2snLCAnbCcsICdzJywgJ2cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsCi0gICd2JywgJ3AnLCAnaycsICdsJywgJ3MnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncCcsICdrJywgJ3MnLCAnZicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncCcsCi0gICdrJywgJ3MnLCAnZycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCi0gICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncCcsICdrJywgJ3MnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncycsICdiJywgJ2MnLCAnYicsCi0gICdpJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCi0gICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAnYicsICdpJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAnYycsICdiJywgJ2knLCAnYicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsCi0gICdfJywgJ3YnLCAncycsICdjJywgJ2InLCAnaScsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdzJywgJ2MnLCAnYicsICdpJywgJ2cnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsCi0gICd2JywgJ3MnLCAnYycsICdiJywgJ2knLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncycsICdjJywgJ2InLCAnaScsICdxJywgJ1wwMDAnLCAnXycsCisgICdtJywgJ2gnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnbScsICdoJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ20nLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdzJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCi0gICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAnbCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdzJywgJ2wnLCAnZCcsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdzJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCi0gICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAncicsICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdzJywgJ3InLCAnYScsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdzJywgJ3InLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCi0gICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncycsICdyJywgJ2wnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncycsICd0JywgJ2wnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsCi0gICd2JywgJ3MnLCAndCcsICdyJywgJ2MnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncycsICd0JywgJ3InLCAnYycsICdmJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdzJywgJ3QnLCAncicsICdjJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAndCcsICdyJywgJ2MnLCAneicsICdiJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICdzJywgJ3QnLCAncicsICdjJywgJ3onLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncycsICd0JywgJ3InLCAnYycsICd6JywgJ2gnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsCi0gICd2JywgJ3MnLCAndCcsICdyJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAndScsICdtJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAndScsCi0gICdtJywgJ2cnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCi0gICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncycsICd1JywgJ20nLCAnZycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdzJywgJ3UnLCAnbScsCisgICdtJywgJ2wnLCAnZScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnZScsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnZScsCiAgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAndicsICdzJywgJ3UnLCAnbScsICdxJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAndScsICdtJywgJ3EnLCAnZycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsCi0gICdfJywgJ3YnLCAndCcsICdtJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICd1JywgJ3AnLCAnaCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICd1JywgJ3AnLCAnaCcsCi0gICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAndicsICd1JywgJ3AnLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICd1JywgJ3AnLCAnbCcsICdiJywgJ1wwMDAnLCAnXycsCisgICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnaCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnaCcsICdmJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCi0gICd1JywgJ3AnLCAnbCcsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICd1JywgJ3AnLCAnbCcsICdoJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3UnLCAncCcsCi0gICdsJywgJ2gnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCi0gICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAndScsICdwJywgJ2wnLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICd1JywgJ3AnLCAnbCcsCi0gICdoJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCi0gICc5JywgJzAnLCAnXycsICd2JywgJ3UnLCAncCcsICdsJywgJ2wnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAndScsICdwJywgJ2wnLCAnbCcsCisgICdtJywgJ2wnLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnbycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnbycsCiAgICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCi0gICcwJywgJ18nLCAndicsICd1JywgJ3AnLCAnbCcsICdsJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAndicsICdnJywgJ3UnLCAncycsCi0gICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdmJywgJzInLCAnaScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdmJywgJ2EnLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJ2MnLCAnbScsICdwJywgJ2UnLCAncScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZicsCi0gICdjJywgJ20nLCAncCcsICdnJywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2YnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdmJywgJ20nLCAnYScsICd4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJ20nLCAnaScsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJ20nLCAndScsCi0gICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdmJywgJ3InLCAnYycsICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJ3InLCAnYycsICdwJywgJ2knLCAndCcsCi0gICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdmJywgJ3InLCAnYycsICdwJywgJ2knLCAndCcsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJ3InLCAncycsCi0gICdxJywgJ2knLCAndCcsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZicsCi0gICdzJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZicsICdzJywgJ3UnLCAnYicsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdpJywgJzInLCAnZicsCisgICcwJywgJ18nLCAndicsICdtJywgJ2wnLCAnbycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ28nLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAnbScsCisgICdvJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCisgICc5JywgJzAnLCAnXycsICd2JywgJ20nLCAnbycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdtJywgJ3MnLCAnbCcsICdnJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCisgICdwJywgJ2QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncCcsICdrJywgJ2wnLCAncycsCisgICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCisgICcwJywgJ18nLCAndicsICdwJywgJ2snLCAnbCcsICdzJywgJ2cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3AnLCAnaycsICdsJywgJ3MnLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsCisgICdfJywgJ3YnLCAncCcsICdrJywgJ3MnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncCcsICdrJywgJ3MnLCAnZycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncCcsCisgICdrJywgJ3MnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncycsICdiJywgJ2MnLCAnYicsICdpJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAnYicsCisgICdpJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCisgICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAnYycsICdiJywgJ2knLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncycsICdjJywgJ2InLCAnaScsCisgICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCisgICcwJywgJ18nLCAndicsICdzJywgJ2MnLCAnYicsICdpJywgJ2cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAnYycsICdiJywgJ2knLCAnaCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsCisgICdfJywgJ3YnLCAncycsICdjJywgJ2InLCAnaScsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdzJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAnbCcsCisgICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCisgICcwJywgJ18nLCAndicsICdzJywgJ2wnLCAnZCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdzJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAncicsCisgICdhJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCisgICcwJywgJ18nLCAndicsICdzJywgJ3InLCAnYScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdzJywgJ3InLCAnbCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncycsCisgICdyJywgJ2wnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncycsICd0JywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAndCcsICdyJywgJ2MnLCAnYicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsCisgICdfJywgJ3YnLCAncycsICd0JywgJ3InLCAnYycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdzJywgJ3QnLCAncicsICdjJywgJ2gnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsCisgICd2JywgJ3MnLCAndCcsICdyJywgJ2MnLCAneicsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdzJywgJ3QnLCAncicsICdjJywgJ3onLCAnZicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsCisgICdfJywgJ3YnLCAncycsICd0JywgJ3InLCAnYycsICd6JywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAndCcsICdyJywgJ2wnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsCisgICd2JywgJ3MnLCAndScsICdtJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAndScsICdtJywgJ2cnLCAnZicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAncycsCisgICd1JywgJ20nLCAnZycsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdzJywgJ3UnLCAnbScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICdzJywgJ3UnLCAnbScsCisgICdxJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsCisgICc5JywgJzAnLCAnXycsICd2JywgJ3MnLCAndScsICdtJywgJ3EnLCAnZycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAndCcsICdtJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCisgICd1JywgJ3AnLCAnaCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICd1JywgJ3AnLCAnaCcsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICd1JywgJ3AnLCAnaCcsCisgICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsCisgICcwJywgJ18nLCAndicsICd1JywgJ3AnLCAnbCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICd1JywgJ3AnLCAnbCcsICdmJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsCisgICd1JywgJ3AnLCAnbCcsICdoJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3UnLCAncCcsICdsJywgJ2gnLCAnZicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAndScsCisgICdwJywgJ2wnLCAnaCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICd1JywgJ3AnLCAnbCcsICdoJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnMycsICc5JywgJzAnLCAnXycsICd2JywgJ3UnLCAncCcsCisgICdsJywgJ2wnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsCisgICczJywgJzknLCAnMCcsICdfJywgJ3YnLCAndScsICdwJywgJ2wnLCAnbCcsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdzJywgJzMnLCAnOScsICcwJywgJ18nLCAndicsICd1JywgJ3AnLCAnbCcsCisgICdsJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdwJywgJ2EnLCAndicsICdnJywgJ3UnLCAncycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJzInLCAnaScsCiAgICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdtJywgJ3UnLCAnbCcsICdoJywgJ3InLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZicsICcyJywgJ2knLCAndycsCisgICcyJywgJ18nLCAncCcsICdmJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJ2EnLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdmJywgJ2MnLCAnbScsICdwJywgJ2UnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZicsICdjJywgJ20nLCAncCcsICdnJywgJ2UnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ2YnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJ20nLCAnYScsICd4JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdmJywgJ20nLCAnaScsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJ20nLCAndScsICdsJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJ3InLCAnYycsCisgICdwJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncCcsICdmJywgJ3InLCAnYycsICdwJywgJ2knLCAndCcsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJ3InLCAnYycsCisgICdwJywgJ2knLCAndCcsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJ3InLCAncycsICdxJywgJ2knLCAndCcsICcxJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdmJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZicsICdzJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZicsCisgICdzJywgJ3UnLCAnYicsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdpJywgJzInLCAnZicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ3UnLCAnbCcsCisgICdoJywgJ3InLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZicsICcyJywgJ2knLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZicsICduJywgJ2EnLCAnYycsCisgICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncCcsICdmJywgJ3AnLCAnbicsICdhJywgJ2MnLCAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnaScsICcyJywgJ2YnLCAndycsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAnZicsICduJywgJ2EnLCAnYycsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdmJywgJ3AnLCAnbicsICdhJywgJ2MnLCAnYycsCisgICdfJywgJ2EnLCAnZScsICdzJywgJ2QnLCAnZScsICdjJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYScsICdlJywgJ3MnLCAnZCcsCisgICdlJywgJ2MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdhJywgJ2UnLCAncycsICdkJywgJ2UnLCAnYycsICc1JywgJzEnLCAnMicsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAnaScsICcyJywgJ2YnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2EnLCAnZScsICdzJywgJ2QnLCAnZScsICdjJywgJzEnLCAnMicsCi0gICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnYScsICdlJywgJ3MnLCAnZCcsICdlJywgJ2MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdhJywgJ2UnLCAncycsCi0gICdkJywgJ2UnLCAnYycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2EnLCAnZScsICdzJywgJ2QnLCAnZScsICdjJywgJ2wnLCAnYScsCi0gICdzJywgJ3QnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdhJywgJ2UnLCAncycsICdkJywgJ2UnLCAnYycsICdsJywgJ2EnLCAncycsCi0gICd0JywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYScsICdlJywgJ3MnLCAnZCcsICdlJywgJ2MnLCAnbCcsICdhJywgJ3MnLCAndCcsCi0gICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2EnLCAnZScsICdzJywgJ2UnLCAnbicsICdjJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2EnLCAnZScsICdzJywgJ2QnLCAnZScsICdjJywgJ2wnLCAnYScsICdzJywgJ3QnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdhJywgJ2UnLCAncycsICdkJywgJ2UnLCAnYycsICdsJywgJ2EnLCAncycsICd0JywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYScsCi0gICdlJywgJ3MnLCAnZScsICduJywgJ2MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdhJywgJ2UnLCAncycsICdlJywgJ24nLCAnYycsCi0gICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2EnLCAnZScsICdzJywgJ2UnLCAnbicsICdjJywgJ2wnLCAnYScsICdzJywgJ3QnLCAnMScsCi0gICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdhJywgJ2UnLCAncycsICdlJywgJ24nLCAnYycsICdsJywgJ2EnLCAncycsICd0JywgJzInLCAnNScsCi0gICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnYScsICdlJywgJ3MnLCAnZScsICduJywgJ2MnLCAnbCcsICdhJywgJ3MnLCAndCcsICc1JywgJzEnLCAnMicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ2EnLCAnZScsICdzJywgJ2knLCAnbScsICdjJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYScsICdlJywgJ3MnLCAnaycsCi0gICdlJywgJ3knLCAnZycsICdlJywgJ24nLCAnYScsICdzJywgJ3MnLCAnaScsICdzJywgJ3QnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdhJywgJ2QnLCAnZCcsICdzJywgJ3UnLCAnYicsICdwJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsCi0gICdzJywgJ3UnLCAnYicsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdiJywgJ2wnLCAnZScsICduJywgJ2QnLCAndicsCisgICdlJywgJ3MnLCAnZCcsICdlJywgJ2MnLCAnbCcsICdhJywgJ3MnLCAndCcsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2EnLCAnZScsCisgICdzJywgJ2UnLCAnbicsICdjJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYScsICdlJywgJ3MnLCAnZScsICduJywgJ2MnLCAnMicsCisgICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdhJywgJ2UnLCAncycsICdlJywgJ24nLCAnYycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2EnLCAnZScsCisgICdzJywgJ2UnLCAnbicsICdjJywgJ2wnLCAnYScsICdzJywgJ3QnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdhJywgJ2UnLCAncycsCisgICdlJywgJ24nLCAnYycsICdsJywgJ2EnLCAncycsICd0JywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYScsICdlJywgJ3MnLCAnZScsCisgICduJywgJ2MnLCAnbCcsICdhJywgJ3MnLCAndCcsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2EnLCAnZScsICdzJywgJ2knLCAnbScsCisgICdjJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYScsICdlJywgJ3MnLCAnaycsICdlJywgJ3knLCAnZycsICdlJywgJ24nLCAnYScsCisgICdzJywgJ3MnLCAnaScsICdzJywgJ3QnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsICdzJywgJ3UnLCAnYicsCiAgICdwJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdiJywgJ2wnLCAnZScsICduJywgJ2QnLCAndicsICdwJywgJ3MnLCAnMicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsICdzJywgJ3UnLCAnYicsICdwJywgJ3MnLCAnMicsCiAgICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ2QnLCAnMicsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCisgICczJywgJzInLCAnXycsICdiJywgJ2wnLCAnZScsICduJywgJ2QnLCAndicsICdwJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdjJywgJ3YnLCAndCcsICdwJywgJ2QnLCAnMicsICdkJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICdiJywgJ2wnLCAnZScsICduJywgJ2QnLCAndicsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsCi0gICdwJywgJ3MnLCAnMicsICdkJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAnZCcsCi0gICcyJywgJ2QnLCAncScsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3QnLCAncCcsICdzJywgJzInLCAnZCcsCi0gICdxJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZCcsICdwJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2gnLCAnYScsCi0gICdkJywgJ2QnLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnaCcsICdhJywgJ2QnLCAnZCcsICdwJywgJ3MnLCAnMicsCi0gICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdoJywgJ3MnLCAndScsICdiJywgJ3AnLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2gnLCAncycsCi0gICd1JywgJ2InLCAncCcsICdzJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbCcsICdkJywgJ2QnLCAncScsICd1JywgJzInLCAnNScsCi0gICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdsJywgJ28nLCAnYScsICdkJywgJ3AnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnbCcsICdvJywgJ2EnLCAnZCcsICdwJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ2wnLCAnbycsICdhJywgJ2QnLCAncCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdsJywgJ28nLCAnYScsCi0gICdkJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAncycsICd0JywgJ28nLCAncicsCi0gICdlJywgJ3AnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ3AnLCAnZCcsCi0gICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ3AnLCAncycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ20nLCAnYScsICd4JywgJ3AnLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICd4JywgJ3AnLCAncycsCi0gICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnaScsICduJywgJ3AnLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnaScsCi0gICduJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnbycsICd2JywgJ20nLCAncycsICdrJywgJ3AnLCAnZCcsCi0gICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnbycsICd2JywgJ20nLCAncycsICdrJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAndCcsICdlJywgJ3MnLCAndCcsICdjJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICd0JywgJ2UnLCAncycsCi0gICd0JywgJ24nLCAneicsICdjJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICd0JywgJ2UnLCAncycsICd0JywgJ3onLCAnMicsCi0gICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdyJywgJ2MnLCAncCcsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ28nLCAndScsCi0gICduJywgJ2QnLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ3AnLCAncycsCi0gICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICd2JywgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsICdsJywgJ3YnLCAnYScsICdyJywgJ3AnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsCi0gICdlJywgJ3InLCAnbScsICdpJywgJ2wnLCAndicsICdhJywgJ3InLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsCi0gICdwJywgJ2UnLCAncicsICdtJywgJ2knLCAnbCcsICd2JywgJ2EnLCAncicsICdwJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZScsCi0gICdyJywgJ20nLCAnaScsICdsJywgJ3YnLCAnYScsICdyJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAndCcsCi0gICdlJywgJ3MnLCAndCcsICdjJywgJ3AnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAndCcsICdlJywgJ3MnLCAndCcsICdjJywgJ3AnLCAnZCcsCi0gICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAndCcsICdlJywgJ3MnLCAndCcsICdjJywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAndCcsCi0gICdlJywgJ3MnLCAndCcsICdjJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAndCcsICdlJywgJ3MnLCAndCcsCi0gICduJywgJ3onLCAnYycsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3QnLCAnZScsICdzJywgJ3QnLCAnbicsICd6JywgJ2MnLCAncCcsCi0gICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICd0JywgJ2UnLCAncycsICd0JywgJ24nLCAneicsICdjJywgJ3AnLCAncycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3YnLCAndCcsICdlJywgJ3MnLCAndCcsICduJywgJ3onLCAnYycsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICd2JywgJ3QnLCAnZScsICdzJywgJ3QnLCAneicsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3QnLCAnZScsICdzJywgJ3QnLCAneicsCi0gICdwJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3QnLCAnZScsICdzJywgJ3QnLCAneicsICdwJywgJ3MnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICd2JywgJ3QnLCAnZScsICdzJywgJ3QnLCAneicsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3onLCAnZScsCi0gICdyJywgJ28nLCAnYScsICdsJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3onLCAnZScsICdyJywgJ28nLCAndScsICdwJywgJ3AnLCAnZScsCi0gICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAnZCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsCi0gICdoJywgJ2UnLCAncicsICdkJywgJ18nLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsCi0gICdyJywgJ2QnLCAnXycsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdkJywgJ18nLCAncCcsCi0gICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAnZCcsICdfJywgJ3AnLCAncycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ2QnLCAnXycsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdkJywgJ18nLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsCi0gICdyJywgJ2QnLCAnXycsICdxJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAncScsCi0gICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdxJywgJ18nLCAnZCcsICcyJywgJzUnLCAnNicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ3EnLCAnXycsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsCi0gICdoJywgJ2UnLCAncicsICdxJywgJ18nLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsCi0gICdlJywgJ3InLCAncScsICdfJywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ3EnLCAnXycsCi0gICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdxJywgJ18nLCAncScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ3EnLCAnXycsICdxJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsCi0gICdhJywgJ3MnLCAnaycsICdsJywgJ28nLCAnYScsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ2wnLCAnbycsCi0gICdhJywgJ2QnLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnbCcsICdvJywgJ2EnLCAnZCcsCi0gICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdsJywgJ28nLCAnYScsICdkJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ3MnLCAndCcsICdvJywgJ3InLCAnZScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdzJywgJ3QnLCAnbycsICdyJywgJ2UnLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAncycsCi0gICd0JywgJ28nLCAncicsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3MnLCAndCcsICdvJywgJ3InLCAnZScsCi0gICdxJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdwJywgJ3MnLCAnYScsICdkJywgJ2InLCAndycsICcyJywgJzUnLCAnNicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAnYScsICdjJywgJ2snLCAncycsICdzJywgJ2QnLCAndycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsCi0gICdjJywgJ2snLCAncycsICdzJywgJ3cnLCAnYicsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdjJywgJ2snLCAndScsCi0gICdzJywgJ2QnLCAndycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdjJywgJ2snLCAndScsICdzJywgJ3cnLCAnYicsCi0gICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdkJywgJ2QnLCAncycsICdiJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdhJywgJ2QnLCAnZCcsICdzJywgJ3cnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2InLCAnbCcsICdlJywgJ24nLCAnZCcsCi0gICd2JywgJ2InLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2UnLCAncicsICdtJywgJ3YnLCAnYScsICdyJywgJ3MnLCAnaScsCi0gICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZScsICdyJywgJ20nLCAndicsICdhJywgJ3InLCAncycsICdmJywgJzInLCAnNScsCi0gICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdoJywgJ2EnLCAnZCcsICdkJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2gnLCAnYScsCi0gICdkJywgJ2QnLCAncycsICd3JywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdoJywgJ2EnLCAnZCcsICdkJywgJ3cnLCAnMicsCi0gICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ2gnLCAncycsICd1JywgJ2InLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnaCcsCi0gICdzJywgJ3UnLCAnYicsICdzJywgJ3cnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2gnLCAncycsICd1JywgJ2InLCAndycsCi0gICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdhJywgJ2QnLCAnZCcsICd1JywgJ2InLCAncycsICd3JywgJzInLCAnNScsCi0gICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdtJywgJ2EnLCAnZCcsICdkJywgJ3cnLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCi0gICdvJywgJ3YnLCAnbScsICdzJywgJ2snLCAnYicsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICd1JywgJ2wnLCAnaCcsCi0gICdyJywgJ3MnLCAndycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICd1JywgJ2wnLCAnaCcsICd3JywgJzInLCAnNScsCi0gICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdtJywgJ3UnLCAnbCcsICdoJywgJ3UnLCAndycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsCi0gICdhJywgJ2QnLCAnYicsICd3JywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2gnLCAndScsICdmJywgJ2InLCAnMicsCi0gICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnaScsICdnJywgJ24nLCAnYicsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsCi0gICdpJywgJ2cnLCAnbicsICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2knLCAnZycsICduJywgJ3cnLCAnMicsCi0gICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnbCcsICdsJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnbCcsCi0gICdsJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnbCcsICdsJywgJ3cnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ3MnLCAnbCcsICdsJywgJ2QnLCAnaScsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAncScsCi0gICdpJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2wnLCAnbCcsICd3JywgJ2knLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ3MnLCAnbCcsICdsJywgJ3YnLCAnNCcsICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnbCcsICdsJywgJ3YnLCAnOCcsCi0gICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnbCcsICdsJywgJ3YnLCAnMicsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnbCcsCi0gICdsJywgJ3YnLCAnNCcsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ3MnLCAncicsICdhJywgJ3cnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ2QnLCAnaScsCi0gICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdyJywgJ2EnLCAndycsICdpJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdzJywgJ3InLCAnYScsICd2JywgJzQnLCAncycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnYScsICd2JywgJzgnLCAncycsCi0gICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsCi0gICdxJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsICd3JywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdzJywgJ3InLCAnbCcsICdkJywgJ2knLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdsJywgJ3EnLCAnaScsCi0gICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdyJywgJ2wnLCAndycsICdpJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdzJywgJ3InLCAnbCcsICd2JywgJzQnLCAncycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsICd2JywgJzgnLCAncycsCi0gICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsICd2JywgJzInLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsCi0gICd2JywgJzQnLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3UnLCAnYicsICdzJywgJ2InLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ3MnLCAndScsICdiJywgJ3MnLCAndycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2EnLCAnZCcsICdkJywgJ3AnLCAnZCcsCi0gICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2EnLCAnZCcsICdkJywgJ3AnLCAncycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2InLCAncicsCi0gICdvJywgJ2EnLCAnZCcsICdjJywgJ2EnLCAncycsICd0JywgJ20nLCAnYicsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2InLCAncicsCi0gICdvJywgJ2EnLCAnZCcsICdjJywgJ2EnLCAncycsICd0JywgJ20nLCAnYicsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2InLCAncicsCi0gICdvJywgJ2EnLCAnZCcsICdjJywgJ2EnLCAncycsICd0JywgJ20nLCAnYicsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2InLCAncicsCi0gICdvJywgJ2EnLCAnZCcsICdjJywgJ2EnLCAncycsICd0JywgJ20nLCAndycsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2InLCAncicsCi0gICdvJywgJ2EnLCAnZCcsICdjJywgJ2EnLCAncycsICd0JywgJ20nLCAndycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2InLCAncicsCi0gICdvJywgJ2EnLCAnZCcsICdjJywgJ2EnLCAncycsICd0JywgJ20nLCAndycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsCi0gICd0JywgJ3MnLCAnaScsICcyJywgJ3MnLCAnZCcsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdzJywgJ2knLCAnMicsCi0gICdzJywgJ3MnLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncycsICdpJywgJzInLCAncycsICdzJywgJzYnLCAnNCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3YnLCAnYycsICd2JywgJ3QnLCAndCcsICdzJywgJ2QnLCAnMicsICdzJywgJ2knLCAnMycsICcyJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsCi0gICdjJywgJ3YnLCAndCcsICd0JywgJ3MnLCAnZCcsICcyJywgJ3MnLCAnaScsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2MnLCAndicsCi0gICd0JywgJ3QnLCAncycsICdkJywgJzInLCAndScsICdzJywgJ2knLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsCi0gICd0JywgJ3MnLCAnZCcsICcyJywgJ3UnLCAncycsICdpJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAnYycsICd2JywgJ3QnLCAndCcsCi0gICdzJywgJ3MnLCAnMicsICdzJywgJ2knLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsICd0JywgJ3MnLCAncycsCi0gICcyJywgJ3MnLCAnaScsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2MnLCAndicsICd0JywgJ3QnLCAncycsICdzJywgJzInLCAndScsCi0gICdzJywgJ2knLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsICd0JywgJ3MnLCAncycsICcyJywgJ3UnLCAncycsCi0gICdpJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3UnLCAncycsICdpJywgJzInLCAncycsICdzJywgJzMnLCAnMicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ2MnLCAndicsICd0JywgJ3UnLCAncycsICdpJywgJzInLCAncycsICdkJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsCi0gICd0JywgJ3UnLCAncycsICdpJywgJzInLCAncycsICdzJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2QnLCAnYicsICdwJywgJ3MnLCAnYScsCi0gICdkJywgJ2InLCAndycsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2QnLCAnYicsICdwJywgJ3MnLCAnYScsICdkJywgJ2InLCAndycsCi0gICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2QnLCAnYicsICdwJywgJ3MnLCAnYScsICdkJywgJ2InLCAndycsICc1JywgJzEnLCAnMicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ2QnLCAnaScsICd2JywgJ3AnLCAnZCcsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2QnLCAnaScsICd2JywgJ3AnLCAncycsCi0gICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2UnLCAneCcsICdwJywgJzInLCAncCcsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ2UnLCAneCcsICdwJywgJzInLCAncCcsICdzJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsCi0gICd0JywgJ2gnLCAnZScsICdyJywgJ3MnLCAnaScsICd2JywgJzgnLCAnZCcsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsCi0gICdlJywgJ3InLCAncycsICdpJywgJ3YnLCAnMScsICc2JywgJ3MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsCi0gICdyJywgJ3MnLCAnaScsICd2JywgJzgnLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAncycsCi0gICdpJywgJ3YnLCAnMScsICc2JywgJ3MnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ2QnLCAnaScsCi0gICd2JywgJzgnLCAnZCcsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAnZCcsICdpJywgJ3YnLCAnMScsCi0gICc2JywgJ3MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ2QnLCAnaScsICd2JywgJzgnLCAnZCcsCi0gICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAnZCcsICdpJywgJ3YnLCAnMScsICc2JywgJ3MnLCAnZicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJzMnLCAnZCcsICdpJywgJ3YnLCAnMicsICdkJywgJ2YnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICczJywgJ2QnLCAnaScsICd2JywgJzInLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsCi0gICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAnMycsICdkJywgJ2knLCAndicsICc0JywgJ2QnLCAnZicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsCi0gICd0JywgJ2gnLCAnZScsICdyJywgJzMnLCAnZCcsICdpJywgJ3YnLCAnNCcsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsCi0gICdoJywgJ2UnLCAncicsICczJywgJ2QnLCAnaScsICd2JywgJzQnLCAncycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsCi0gICdlJywgJ3InLCAnMycsICdkJywgJ2knLCAndicsICc0JywgJ3MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsCi0gICdyJywgJzMnLCAnZCcsICdpJywgJ3YnLCAnOCcsICdzJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsCi0gICczJywgJ2QnLCAnaScsICd2JywgJzgnLCAncycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAnMycsCi0gICdzJywgJ2knLCAndicsICcyJywgJ2QnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJzMnLCAncycsCi0gICdpJywgJ3YnLCAnMicsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICczJywgJ3MnLCAnaScsCi0gICd2JywgJzQnLCAnZCcsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAnMycsICdzJywgJ2knLCAndicsCi0gICc0JywgJ2QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJzMnLCAncycsICdpJywgJ3YnLCAnNCcsCi0gICdzJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICczJywgJ3MnLCAnaScsICd2JywgJzQnLCAncycsCi0gICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAnMycsICdzJywgJ2knLCAndicsICc4JywgJ3MnLCAnZicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJzMnLCAncycsICdpJywgJ3YnLCAnOCcsICdzJywgJ2knLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdwJywgJ2YnLCAnZCcsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsCi0gICdoJywgJ2UnLCAncicsICdwJywgJ2YnLCAnZCcsICdwJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsCi0gICdwJywgJ2YnLCAncScsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdwJywgJ2YnLCAncScsCi0gICdwJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsICdzJywgJ2QnLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYScsICdkJywgJ2QnLCAncycsICdzJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsCi0gICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbScsICdwJywgJ3MnLCAnZCcsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdjJywgJ20nLCAncCcsICdzJywgJ3MnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsCi0gICdvJywgJ20nLCAncCcsICdyJywgJ2UnLCAncycsICdzJywgJ3EnLCAnaScsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdjJywgJ28nLCAnbScsICdwJywgJ3InLCAnZScsICdzJywgJ3MnLCAncScsICdpJywgJzInLCAnNScsCi0gICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbycsICdtJywgJ3AnLCAncicsICdlJywgJ3MnLCAncycsCi0gICdxJywgJ2knLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICdvJywgJ20nLCAncCcsCi0gICdyJywgJ2UnLCAncycsICdzJywgJ3MnLCAnaScsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdjJywgJ28nLCAnbScsICdwJywgJ3InLCAnZScsICdzJywgJ3MnLCAncycsICdpJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsCi0gICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbycsICdtJywgJ3AnLCAncicsICdlJywgJ3MnLCAncycsICdzJywgJ2knLCAnNScsCi0gICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICdvJywgJ20nLCAncCcsICdyJywgJ2UnLCAncycsCi0gICdzJywgJ2QnLCAnZicsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ28nLCAnbScsCi0gICdwJywgJ3InLCAnZScsICdzJywgJ3MnLCAnZCcsICdmJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ2MnLCAnbycsICdtJywgJ3AnLCAncicsICdlJywgJ3MnLCAncycsICdkJywgJ2YnLCAnNScsICcxJywgJzInLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICdvJywgJ20nLCAncCcsICdyJywgJ2UnLCAncycsICdzJywgJ3MnLCAnZicsCi0gICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ28nLCAnbScsICdwJywgJ3InLCAnZScsCi0gICdzJywgJ3MnLCAncycsICdmJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbycsCi0gICdtJywgJ3AnLCAncicsICdlJywgJ3MnLCAncycsICdzJywgJ2YnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnYycsICdvJywgJ20nLCAncCcsICdyJywgJ2UnLCAncycsICdzJywgJ2QnLCAnaScsICcxJywgJzInLCAnOCcsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ28nLCAnbScsICdwJywgJ3InLCAnZScsICdzJywgJ3MnLCAnZCcsCi0gICdpJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbycsICdtJywgJ3AnLCAncicsCi0gICdlJywgJ3MnLCAncycsICdkJywgJ2knLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsCi0gICdvJywgJ20nLCAncCcsICdyJywgJ2UnLCAncycsICdzJywgJ2gnLCAnaScsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdjJywgJ28nLCAnbScsICdwJywgJ3InLCAnZScsICdzJywgJ3MnLCAnaCcsICdpJywgJzInLCAnNScsCi0gICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbycsICdtJywgJ3AnLCAncicsICdlJywgJ3MnLCAncycsCi0gICdoJywgJ2knLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2MnLCAnbycsCi0gICduJywgJ2YnLCAnbCcsICdpJywgJ2MnLCAndCcsICdzJywgJ2knLCAnXycsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnYycsICdvJywgJ24nLCAnZicsICdsJywgJ2knLCAnYycsICd0JywgJ3MnLCAnaScsCi0gICdfJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdjJywgJ28nLCAnbicsCi0gICdmJywgJ2wnLCAnaScsICdjJywgJ3QnLCAncycsICdpJywgJ18nLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAndicsICdwJywgJ2MnLCAnbycsICduJywgJ2YnLCAnbCcsICdpJywgJ2MnLCAndCcsICdkJywgJ2knLCAnXycsCi0gICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnYycsICdvJywgJ24nLCAnZicsCi0gICdsJywgJ2knLCAnYycsICd0JywgJ2QnLCAnaScsICdfJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3YnLCAncCcsICdjJywgJ28nLCAnbicsICdmJywgJ2wnLCAnaScsICdjJywgJ3QnLCAnZCcsICdpJywgJ18nLCAnNScsCi0gICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAnZCcsICdxJywgJzInLCAncCcsCi0gICdzJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3AnLCAnZCcsCi0gICcyJywgJ2QnLCAncScsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsCi0gICdwJywgJ2QnLCAnMicsICdkJywgJ3EnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsCi0gICd2JywgJ3QnLCAncCcsICdkJywgJzInLCAncCcsICdzJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsCi0gICd0JywgJ3AnLCAnZCcsICcyJywgJ3AnLCAncycsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdjJywgJ3YnLCAndCcsICdwJywgJ2QnLCAnMicsICdxJywgJ3EnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsICdkJywgJzInLCAncScsICdxJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsCi0gICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3AnLCAnZCcsICcyJywgJ3EnLCAncScsICc1JywgJzEnLCAnMicsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ2QnLCAnMicsICd1JywgJ2QnLCAncScsCi0gICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICdwJywgJ2QnLCAnMicsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ2QnLCAnMicsCisgICdkJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsICdkJywgJ3EnLCAnMicsCisgICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAnZCcsICcyJywgJ2QnLCAncScsICcyJywgJzUnLCAnNicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ2MnLCAndicsICd0JywgJ3QnLCAncCcsICdzJywgJzInLCAnZCcsICdxJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZCcsCisgICdwJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2gnLCAnYScsICdkJywgJ2QnLCAncCcsICdkJywgJzInLCAnNScsCisgICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAnaCcsICdhJywgJ2QnLCAnZCcsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdoJywgJ3MnLCAndScsCisgICdiJywgJ3AnLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2gnLCAncycsICd1JywgJ2InLCAncCcsICdzJywgJzInLCAnNScsCisgICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAnbCcsICdkJywgJ2QnLCAncScsICd1JywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdsJywgJ28nLCAnYScsICdkJywgJ3AnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnbCcsICdvJywgJ2EnLCAnZCcsCisgICdwJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ2wnLCAnbycsICdhJywgJ2QnLCAncCcsCisgICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdsJywgJ28nLCAnYScsICdkJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ3AnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsCisgICdzJywgJ2snLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ3AnLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsCisgICdzJywgJ2snLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAncycsCisgICd0JywgJ28nLCAncicsICdlJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICd4JywgJ3AnLCAnZCcsCisgICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICd4JywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnaScsCisgICduJywgJ3AnLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnaScsICduJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ20nLCAnbycsICd2JywgJ20nLCAncycsICdrJywgJ3AnLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnbycsCisgICd2JywgJ20nLCAncycsICdrJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAndCcsICdlJywgJ3MnLCAndCcsCisgICdjJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICd0JywgJ2UnLCAncycsICd0JywgJ24nLCAneicsICdjJywgJzInLCAnNScsCisgICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncCcsICd0JywgJ2UnLCAncycsICd0JywgJ3onLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2MnLCAncCcsCisgICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAncCcsICdkJywgJzInLCAnNScsCisgICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsCisgICdxJywgJ3InLCAndCcsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsCisgICdsJywgJ3YnLCAnYScsICdyJywgJ3AnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICdpJywgJ2wnLCAndicsCisgICdhJywgJ3InLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2UnLCAncicsICdtJywgJ2knLCAnbCcsCisgICd2JywgJ2EnLCAncicsICdwJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsICdsJywgJ3YnLCAnYScsCisgICdyJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAndCcsICdlJywgJ3MnLCAndCcsICdjJywgJ3AnLCAnZCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3YnLCAndCcsICdlJywgJ3MnLCAndCcsICdjJywgJ3AnLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAndCcsCisgICdlJywgJ3MnLCAndCcsICdjJywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAndCcsICdlJywgJ3MnLCAndCcsICdjJywgJ3AnLCAncycsCisgICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAndCcsICdlJywgJ3MnLCAndCcsICduJywgJ3onLCAnYycsICdwJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICd2JywgJ3QnLCAnZScsICdzJywgJ3QnLCAnbicsICd6JywgJ2MnLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsCisgICd0JywgJ2UnLCAncycsICd0JywgJ24nLCAneicsICdjJywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAndCcsICdlJywgJ3MnLCAndCcsCisgICduJywgJ3onLCAnYycsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3QnLCAnZScsICdzJywgJ3QnLCAneicsCisgICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICd2JywgJ3QnLCAnZScsICdzJywgJ3QnLCAneicsICdwJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICd2JywgJ3QnLCAnZScsICdzJywgJ3QnLCAneicsICdwJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3QnLCAnZScsICdzJywgJ3QnLCAneicsCisgICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3onLCAnZScsICdyJywgJ28nLCAnYScsICdsJywgJ2wnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICd2JywgJ3onLCAnZScsICdyJywgJ28nLCAndScsICdwJywgJ3AnLCAnZScsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsCisgICdlJywgJ3InLCAnZCcsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdkJywgJ18nLCAnZCcsCisgICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ2QnLCAnXycsICdwJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdkJywgJ18nLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsCisgICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAnZCcsICdfJywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsCisgICdyJywgJ2QnLCAnXycsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsCisgICdkJywgJ18nLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ2QnLCAnXycsICdxJywgJzInLCAnNScsCisgICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAncScsICdfJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsCisgICdoJywgJ2UnLCAncicsICdxJywgJ18nLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsCisgICdyJywgJ3EnLCAnXycsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdxJywgJ18nLCAncCcsCisgICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsICdhJywgJ3QnLCAnaCcsICdlJywgJ3InLCAncScsICdfJywgJ3AnLCAncycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsICdyJywgJ3EnLCAnXycsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdxJywgJ18nLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnYScsICd0JywgJ2gnLCAnZScsCisgICdyJywgJ3EnLCAnXycsICdxJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdsJywgJ28nLCAnYScsCisgICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ2wnLCAnbycsICdhJywgJ2QnLCAnZCcsICcyJywgJzUnLCAnNicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnbCcsICdvJywgJ2EnLCAnZCcsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdsJywgJ28nLCAnYScsICdkJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3MnLCAndCcsCisgICdvJywgJ3InLCAnZScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdzJywgJ3QnLCAnbycsICdyJywgJ2UnLCAnZCcsCisgICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ3EnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdtJywgJ2EnLCAncycsICdrJywgJ3MnLCAndCcsICdvJywgJ3InLCAnZScsICdxJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsCisgICdwJywgJ3MnLCAnYScsICdkJywgJ2InLCAndycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdjJywgJ2snLCAncycsCisgICdzJywgJ2QnLCAndycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdjJywgJ2snLCAncycsICdzJywgJ3cnLCAnYicsCisgICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdjJywgJ2snLCAndScsICdzJywgJ2QnLCAndycsICcyJywgJzUnLCAnNicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnYScsICdjJywgJ2snLCAndScsICdzJywgJ3cnLCAnYicsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYicsCisgICdsJywgJ2UnLCAnbicsICdkJywgJ3YnLCAnYicsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZScsICdyJywgJ20nLCAndicsCisgICdhJywgJ3InLCAncycsICdpJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdlJywgJ3InLCAnbScsICd2JywgJ2EnLCAncicsCisgICdzJywgJ2YnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2gnLCAnYScsICdkJywgJ2QnLCAnZCcsICcyJywgJzUnLCAnNicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnaCcsICdhJywgJ2QnLCAnZCcsICdzJywgJ3cnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2gnLCAnYScsCisgICdkJywgJ2QnLCAndycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnaCcsICdzJywgJ3UnLCAnYicsICdkJywgJzInLCAnNScsCisgICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncCcsICdoJywgJ3MnLCAndScsICdiJywgJ3MnLCAndycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnaCcsCisgICdzJywgJ3UnLCAnYicsICd3JywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnYicsCisgICdzJywgJ3cnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnYScsICdkJywgJ2QnLCAndycsICdkJywgJzInLCAnNScsCisgICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICdtJywgJ3MnLCAnaycsICdiJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdtJywgJ3UnLCAnbCcsICdoJywgJ3InLCAncycsICd3JywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ3UnLCAnbCcsCisgICdoJywgJ3cnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAndScsICdsJywgJ2gnLCAndScsICd3JywgJzInLCAnNScsCisgICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncCcsICdzJywgJ2EnLCAnZCcsICdiJywgJ3cnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnaCcsCisgICd1JywgJ2YnLCAnYicsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdpJywgJ2cnLCAnbicsICdiJywgJzInLCAnNScsCisgICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncCcsICdzJywgJ2knLCAnZycsICduJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnaScsCisgICdnJywgJ24nLCAndycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAnZCcsICcyJywgJzUnLCAnNicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAncScsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAndycsCisgICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAnZCcsICdpJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdzJywgJ2wnLCAnbCcsICdxJywgJ2knLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnbCcsICdsJywgJ3cnLCAnaScsCisgICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAndicsICc0JywgJ3MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsCisgICdsJywgJ2wnLCAndicsICc4JywgJ3MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAndicsICcyJywgJ2QnLCAnaScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAndicsICc0JywgJ2QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdyJywgJ2EnLCAnZCcsCisgICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdyJywgJ2EnLCAndycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsCisgICdyJywgJ2EnLCAnZCcsICdpJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnYScsICd3JywgJ2knLCAnMicsCisgICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ3YnLCAnNCcsICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsCisgICdhJywgJ3YnLCAnOCcsICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdsJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ3MnLCAncicsICdsJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdsJywgJ3cnLCAnMicsCisgICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdsJywgJ2QnLCAnaScsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsCisgICdyJywgJ2wnLCAncScsICdpJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsICd3JywgJ2knLCAnMicsCisgICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdsJywgJ3YnLCAnNCcsICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsCisgICdsJywgJ3YnLCAnOCcsICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdsJywgJ3YnLCAnMicsICdkJywgJ2knLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ3MnLCAncicsICdsJywgJ3YnLCAnNCcsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsICdwJywgJ2QnLCAnNScsCisgICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsICdwJywgJ3MnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdiJywgJ3InLCAnbycsCisgICdhJywgJ2QnLCAnYycsICdhJywgJ3MnLCAndCcsICdtJywgJ2InLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdiJywgJ3InLCAnbycsCisgICdhJywgJ2QnLCAnYycsICdhJywgJ3MnLCAndCcsICdtJywgJ2InLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdiJywgJ3InLCAnbycsCisgICdhJywgJ2QnLCAnYycsICdhJywgJ3MnLCAndCcsICdtJywgJ2InLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdiJywgJ3InLCAnbycsCisgICdhJywgJ2QnLCAnYycsICdhJywgJ3MnLCAndCcsICdtJywgJ3cnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdiJywgJ3InLCAnbycsCisgICdhJywgJ2QnLCAnYycsICdhJywgJ3MnLCAndCcsICdtJywgJ3cnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdiJywgJ3InLCAnbycsCisgICdhJywgJ2QnLCAnYycsICdhJywgJ3MnLCAndCcsICdtJywgJ3cnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnYycsCisgICdvJywgJ24nLCAnZicsICdsJywgJ2knLCAnYycsICd0JywgJ3MnLCAnaScsICdfJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsCisgICdwJywgJ2MnLCAnbycsICduJywgJ2YnLCAnbCcsICdpJywgJ2MnLCAndCcsICdzJywgJ2knLCAnXycsICcyJywgJzUnLCAnNicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3YnLCAncCcsICdjJywgJ28nLCAnbicsICdmJywgJ2wnLCAnaScsICdjJywgJ3QnLCAncycsICdpJywgJ18nLCAnNScsCisgICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnYycsICdvJywgJ24nLCAnZicsICdsJywgJ2knLCAnYycsICd0JywgJ2QnLCAnaScsCisgICdfJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2MnLCAnbycsICduJywgJ2YnLCAnbCcsICdpJywgJ2MnLCAndCcsCisgICdkJywgJ2knLCAnXycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdjJywgJ28nLCAnbicsICdmJywgJ2wnLCAnaScsCisgICdjJywgJ3QnLCAnZCcsICdpJywgJ18nLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdzJywgJ2knLCAnMicsCisgICdzJywgJ2QnLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncycsICdpJywgJzInLCAncycsICdzJywgJzMnLCAnMicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ2MnLCAndicsICd0JywgJ3MnLCAnaScsICcyJywgJ3MnLCAncycsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2MnLCAndicsCisgICd0JywgJ3QnLCAncycsICdkJywgJzInLCAncycsICdpJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAnYycsICd2JywgJ3QnLCAndCcsCisgICdzJywgJ2QnLCAnMicsICdzJywgJ2knLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsICd0JywgJ3MnLCAnZCcsCisgICcyJywgJ3UnLCAncycsICdpJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAnYycsICd2JywgJ3QnLCAndCcsICdzJywgJ2QnLCAnMicsCisgICd1JywgJ3MnLCAnaScsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2MnLCAndicsICd0JywgJ3QnLCAncycsICdzJywgJzInLCAncycsCisgICdpJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAnYycsICd2JywgJ3QnLCAndCcsICdzJywgJ3MnLCAnMicsICdzJywgJ2knLCAnNicsCisgICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsICd0JywgJ3MnLCAncycsICcyJywgJ3UnLCAncycsICdpJywgJzMnLCAnMicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3YnLCAnYycsICd2JywgJ3QnLCAndCcsICdzJywgJ3MnLCAnMicsICd1JywgJ3MnLCAnaScsICc2JywgJzQnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdjJywgJ3YnLCAndCcsICd1JywgJ3MnLCAnaScsICcyJywgJ3MnLCAncycsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsCisgICd1JywgJ3MnLCAnaScsICcyJywgJ3MnLCAnZCcsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd1JywgJ3MnLCAnaScsCisgICcyJywgJ3MnLCAncycsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdkJywgJ2InLCAncCcsICdzJywgJ2EnLCAnZCcsICdiJywgJ3cnLCAnMScsCisgICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdkJywgJ2InLCAncCcsICdzJywgJ2EnLCAnZCcsICdiJywgJ3cnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdkJywgJ2InLCAncCcsICdzJywgJ2EnLCAnZCcsICdiJywgJ3cnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdkJywgJ2knLCAndicsCisgICdwJywgJ2QnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdkJywgJ2knLCAndicsICdwJywgJ3MnLCAnNScsICcxJywgJzInLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdlJywgJ3gnLCAncCcsICcyJywgJ3AnLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdlJywgJ3gnLCAncCcsCisgICcyJywgJ3AnLCAncycsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsCisgICdwJywgJ2YnLCAnZCcsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdwJywgJ2YnLCAnZCcsCisgICdwJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdwJywgJ2YnLCAncScsICdwJywgJ2QnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdnJywgJ2EnLCAndCcsICdoJywgJ2UnLCAncicsICdwJywgJ2YnLCAncScsICdwJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsCisgICdzJywgJ2QnLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYScsCisgICdkJywgJ2QnLCAncycsICdzJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ2MnLCAnbScsICdwJywgJ3MnLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ20nLCAncCcsCisgICdzJywgJ3MnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsICdkJywgJzInLCAnZCcsCisgICdxJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3AnLCAnZCcsCisgICcyJywgJ2QnLCAncScsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsCisgICdwJywgJ2QnLCAnMicsICdwJywgJ3MnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsCisgICdkJywgJzInLCAncCcsICdzJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsCisgICd0JywgJ3AnLCAnZCcsICcyJywgJ3EnLCAncScsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdjJywgJ3YnLCAndCcsICdwJywgJ2QnLCAnMicsICdxJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsCisgICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsICdkJywgJzInLCAncScsICdxJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3AnLCAnZCcsICcyJywgJ3UnLCAnZCcsICdxJywgJzEnLCAnMicsCisgICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3AnLCAnZCcsICcyJywgJ3UnLCAnZCcsCisgICdxJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3AnLCAnZCcsCisgICcyJywgJ3UnLCAnZCcsICdxJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsCisgICd0JywgJ3AnLCAnZCcsICcyJywgJ3UnLCAncScsICdxJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ2MnLCAndicsICd0JywgJ3AnLCAnZCcsICcyJywgJ3UnLCAncScsICdxJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3AnLCAnZCcsICcyJywgJ3UnLCAncScsICdxJywgJzUnLCAnMScsCisgICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3AnLCAncycsICcyJywgJ2QnLCAncScsCisgICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsCisgICdkJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsCisgICdzJywgJzInLCAnZCcsICdxJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsCisgICd0JywgJ3AnLCAncycsICcyJywgJ3AnLCAnZCcsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsICdxJywgJ3EnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsCisgICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsICdzJywgJzInLCAncScsICdxJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3AnLCAncycsICcyJywgJ3EnLCAncScsICc1JywgJzEnLCAnMicsCisgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsICd1JywgJ2QnLCAncScsCisgICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsCiAgICd1JywgJ2QnLCAncScsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCiAgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsCi0gICdwJywgJ2QnLCAnMicsICd1JywgJ2QnLCAncScsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdwJywgJ3MnLCAnMicsICd1JywgJ2QnLCAncScsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdjJywgJ3YnLCAndCcsICdwJywgJ2QnLCAnMicsICd1JywgJ3EnLCAncScsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsCisgICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsICd1JywgJ3EnLCAncScsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsCiAgICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ2QnLCAnMicsICd1JywgJ3EnLCAncScsICcyJywgJzUnLCAnNicsCisgICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsICd1JywgJ3EnLCAncScsICcyJywgJzUnLCAnNicsCiAgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ2QnLCAnMicsICd1JywgJ3EnLCAncScsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsICd1JywgJ3EnLCAncScsCiAgICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsCi0gICdkJywgJ3EnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsCi0gICdzJywgJzInLCAnZCcsICdxJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsCi0gICd0JywgJ3AnLCAncycsICcyJywgJ2QnLCAncScsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsICdwJywgJ2QnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsICdzJywgJzInLCAncScsICdxJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsCi0gICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3AnLCAncycsICcyJywgJ3EnLCAncScsICcyJywgJzUnLCAnNicsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdxJywgJ3EnLCAnMicsCisgICdwJywgJ3MnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncycsCisgICdkJywgJzInLCAncycsICdzJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ2MnLCAndicsICd0JywgJ3MnLCAncycsICcyJywgJ3MnLCAnZCcsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsCiAgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsICdxJywgJ3EnLCAnNScsCi0gICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsICdzJywgJzInLCAndScsCi0gICdkJywgJ3EnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsCi0gICdzJywgJzInLCAndScsICdkJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsCi0gICd2JywgJ3QnLCAncCcsICdzJywgJzInLCAndScsICdkJywgJ3EnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsICdzJywgJzInLCAndScsICdxJywgJ3EnLCAnMScsICcyJywgJzgnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsICdzJywgJzInLCAndScsICdxJywgJ3EnLCAnMicsCi0gICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsICdzJywgJzInLCAndScsCi0gICdxJywgJ3EnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncScsCi0gICdxJywgJzInLCAncCcsICdkJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsCi0gICd0JywgJ3EnLCAncScsICcyJywgJ3AnLCAncycsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAnZCcsICcyJywgJ2QnLCAncScsCisgICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAnZCcsCisgICcyJywgJ2QnLCAncScsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsCisgICd0JywgJ3AnLCAnZCcsICcyJywgJ3EnLCAncScsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdjJywgJ3YnLCAndCcsICdxJywgJ3EnLCAnMicsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncScsICdxJywgJzInLCAncCcsICdzJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsCi0gICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3MnLCAnZCcsICcyJywgJ3MnLCAncycsICdfJywgJ3InLCAnbycsCi0gICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdzJywgJ3MnLCAnMicsCi0gICdzJywgJ2QnLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAnZCcsICcyJywgJ3EnLCAncScsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsCisgICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAnZCcsICcyJywgJ3EnLCAncScsICc1JywgJzEnLCAnMicsCisgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAnZCcsICcyJywgJ3UnLCAnZCcsCisgICdxJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3QnLCAncCcsCisgICdkJywgJzInLCAndScsICdkJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsCi0gICd2JywgJ3QnLCAndCcsICdwJywgJ2QnLCAnMicsICdkJywgJ3EnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndCcsICdwJywgJ2QnLCAnMicsICdkJywgJ3EnLCAnNScsICcxJywgJzInLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndCcsICdwJywgJ2QnLCAnMicsICdxJywgJ3EnLCAnMScsCi0gICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndCcsICdwJywgJ2QnLCAnMicsCisgICd2JywgJ3QnLCAndCcsICdwJywgJ2QnLCAnMicsICd1JywgJ2QnLCAncScsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsCisgICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAnZCcsICcyJywgJ3UnLCAncScsICdxJywgJzEnLCAnMicsCisgICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3QnLCAncCcsICdkJywgJzInLCAndScsCiAgICdxJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndCcsCi0gICdwJywgJ2QnLCAnMicsICdxJywgJ3EnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsCi0gICd2JywgJ3QnLCAndCcsICdwJywgJ2QnLCAnMicsICd1JywgJ2QnLCAncScsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAnZCcsICcyJywgJ3UnLCAnZCcsICdxJywgJzInLCAnNScsCi0gICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3QnLCAncCcsICdkJywgJzInLCAndScsCi0gICdkJywgJ3EnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndCcsCi0gICdwJywgJ2QnLCAnMicsICd1JywgJ3EnLCAncScsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdwJywgJ2QnLCAnMicsICd1JywgJ3EnLCAncScsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAnZCcsICcyJywgJ3UnLCAncScsICdxJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsCi0gICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3QnLCAncCcsICdkJywgJzInLCAndScsICdxJywgJ3EnLCAnNScsCi0gICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndCcsICdwJywgJ3MnLCAnMicsCi0gICdkJywgJ3EnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndCcsCi0gICdwJywgJ3MnLCAnMicsICdxJywgJ3EnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsCi0gICd2JywgJ3QnLCAndCcsICdwJywgJ3MnLCAnMicsICdxJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndCcsICdwJywgJ3MnLCAnMicsICdxJywgJ3EnLCAnNScsICcxJywgJzInLCAnXycsCisgICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAncycsICcyJywgJ2QnLCAncScsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsCisgICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAncycsICcyJywgJ3EnLCAncScsICcxJywgJzInLCAnOCcsCisgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAncycsICcyJywgJ3EnLCAncScsCisgICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAncycsCisgICcyJywgJ3EnLCAncScsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsCisgICd0JywgJ3AnLCAncycsICcyJywgJ3UnLCAnZCcsICdxJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ2MnLCAndicsICd0JywgJ3QnLCAncCcsICdzJywgJzInLCAndScsICdkJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXycsCiAgICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndCcsICdwJywgJ3MnLCAnMicsICd1JywgJ2QnLCAncScsCi0gICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAncycsCi0gICcyJywgJ3UnLCAnZCcsICdxJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICcyJywgJ3UnLCAncScsICdxJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsCi0gICd0JywgJ3QnLCAncCcsICdzJywgJzInLCAndScsICdkJywgJ3EnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsCisgICd0JywgJ3QnLCAncCcsICdzJywgJzInLCAndScsICdxJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsCiAgICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndCcsICdwJywgJ3MnLCAnMicsICd1JywgJ3EnLCAncScsICcxJywgJzInLCAnOCcsCisgICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndCcsICdwJywgJ3MnLCAnMicsICd1JywgJ3EnLCAncScsICc1JywgJzEnLCAnMicsCiAgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAncycsICcyJywgJ3UnLCAncScsCi0gICdxJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3QnLCAncCcsCi0gICdzJywgJzInLCAndScsICdxJywgJ3EnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsCi0gICd2JywgJ3QnLCAndScsICdkJywgJ3EnLCAnMicsICdwJywgJ3MnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndScsICdxJywgJ3EnLCAnMicsICdwJywgJ2QnLCAnNScsICcxJywgJzInLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndScsICdxJywgJ3EnLCAnMicsICdwJywgJ3MnLCAnMScsCi0gICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndScsICdxJywgJ3EnLCAnMicsCi0gICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndScsCi0gICdxJywgJ3EnLCAnMicsICdwJywgJ3MnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZCcsCi0gICdpJywgJ3YnLCAncycsICdkJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ2QnLCAnaScsICd2JywgJ3MnLCAncycsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdlJywgJ3gnLCAncCcsICdhJywgJ24nLCAnZCcsICdxJywgJ2knLCAnMScsICcyJywgJzgnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZScsICd4JywgJ3AnLCAnYScsICduJywgJ2QnLCAncScsICdpJywgJzInLCAnNScsCi0gICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2UnLCAneCcsICdwJywgJ2EnLCAnbicsICdkJywgJ3EnLCAnaScsCi0gICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdlJywgJ3gnLCAncCcsICdhJywgJ24nLCAnZCcsCi0gICdzJywgJ2knLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZScsICd4JywgJ3AnLCAnYScsCi0gICduJywgJ2QnLCAncycsICdpJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2UnLCAneCcsCi0gICdwJywgJ2EnLCAnbicsICdkJywgJ3MnLCAnaScsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdlJywgJ3gnLCAncCcsICdhJywgJ24nLCAnZCcsICdkJywgJ2YnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnZScsICd4JywgJ3AnLCAnYScsICduJywgJ2QnLCAnZCcsICdmJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsCi0gICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2UnLCAneCcsICdwJywgJ2EnLCAnbicsICdkJywgJ2QnLCAnZicsICc1JywgJzEnLCAnMicsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdlJywgJ3gnLCAncCcsICdhJywgJ24nLCAnZCcsICdzJywgJ2YnLCAnMScsCi0gICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZScsICd4JywgJ3AnLCAnYScsICduJywgJ2QnLCAncycsCi0gICdmJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2UnLCAneCcsICdwJywgJ2EnLCAnbicsCi0gICdkJywgJ3MnLCAnZicsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdlJywgJ3gnLCAncCcsCi0gICdhJywgJ24nLCAnZCcsICdkJywgJ2knLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZScsCi0gICd4JywgJ3AnLCAnYScsICduJywgJ2QnLCAnZCcsICdpJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ2UnLCAneCcsICdwJywgJ2EnLCAnbicsICdkJywgJ2QnLCAnaScsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdlJywgJ3gnLCAncCcsICdhJywgJ24nLCAnZCcsICdoJywgJ2knLCAnMScsICcyJywgJzgnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZScsICd4JywgJ3AnLCAnYScsICduJywgJ2QnLCAnaCcsICdpJywgJzInLCAnNScsCi0gICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2UnLCAneCcsICdwJywgJ2EnLCAnbicsICdkJywgJ2gnLCAnaScsCi0gICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdmJywgJ2knLCAneCcsICd1JywgJ3AnLCAnaScsCi0gICdtJywgJ20nLCAncCcsICdkJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd1JywgJ3EnLCAncScsICcyJywgJ3AnLCAncycsCisgICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdkJywgJ2knLCAndicsICdzJywgJ2QnLCAnXycsCisgICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZCcsICdpJywgJ3YnLCAncycsCisgICdzJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2YnLCAnaScsCi0gICd4JywgJ3UnLCAncCcsICdpJywgJ20nLCAnbScsICdwJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsCisgICd4JywgJ3UnLCAncCcsICdpJywgJ20nLCAnbScsICdwJywgJ2QnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsCiAgICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnZicsICdpJywgJ3gnLCAndScsICdwJywgJ2knLCAnbScsICdtJywgJ3AnLCAnZCcsICc1JywgJzEnLCAnMicsCisgICcyJywgJ18nLCAnZicsICdpJywgJ3gnLCAndScsICdwJywgJ2knLCAnbScsICdtJywgJ3AnLCAnZCcsICcyJywgJzUnLCAnNicsCiAgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCiAgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdmJywgJ2knLCAneCcsICd1JywgJ3AnLCAnaScsICdtJywgJ20nLCAncCcsCi0gICdzJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdkJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2YnLCAnaScsICd4JywgJ3UnLCAncCcsCi0gICdpJywgJ20nLCAnbScsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdpJywgJ20nLCAnbScsICdwJywgJ3MnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZicsCi0gICdpJywgJ3gnLCAndScsICdwJywgJ2knLCAnbScsICdtJywgJ3AnLCAncycsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsCisgICdpJywgJ3gnLCAndScsICdwJywgJ2knLCAnbScsICdtJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsCiAgICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdmJywgJ2knLCAneCcsICd1JywgJ3AnLCAnaScsICdtJywgJ20nLCAncycsICdkJywgJ18nLCAnbScsCi0gICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2YnLCAnaScsICd4JywgJ3UnLCAncCcsICdpJywgJ20nLCAnbScsICdzJywgJ3MnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZicsICdwJywgJ2MnLCAnbCcsICdhJywgJ3MnLCAncycsICdzJywgJ2QnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZicsICdwJywgJ2MnLCAnbCcsICdhJywgJ3MnLCAncycsICdzJywgJ3MnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsICdlJywgJ3QnLCAnZScsICd4JywgJ3AnLCAncCcsICdkJywgJzEnLCAnMicsCi0gICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnZScsICd0JywgJ2UnLCAneCcsICdwJywgJ3AnLCAnZCcsCi0gICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICczJywgJzInLCAnXycsICdmJywgJ2knLCAneCcsICd1JywgJ3AnLCAnaScsICdtJywgJ20nLCAncCcsICdzJywgJzUnLCAnMScsCisgICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2YnLCAnaScsICd4JywgJ3UnLCAncCcsICdpJywgJ20nLCAnbScsCisgICdzJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZicsICdpJywgJ3gnLCAndScsICdwJywgJ2knLCAnbScsCisgICdtJywgJ3MnLCAncycsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdmJywgJ3AnLCAnYycsICdsJywgJ2EnLCAncycsCisgICdzJywgJ3MnLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdmJywgJ3AnLCAnYycsICdsJywgJ2EnLCAncycsCisgICdzJywgJ3MnLCAncycsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2UnLCAndCcsICdlJywgJ3gnLCAncCcsCi0gICdwJywgJ2QnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdwJywgJ2QnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsICdlJywgJ3QnLCAnZScsCi0gICd4JywgJ3AnLCAncCcsICdzJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICd4JywgJ3AnLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnZScsCi0gICd0JywgJ2UnLCAneCcsICdwJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICd0JywgJ2UnLCAneCcsICdwJywgJ3AnLCAnZCcsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCiAgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdnJywgJ2UnLCAndCcsICdlJywgJ3gnLCAncCcsICdwJywgJ3MnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsCisgICdnJywgJ2UnLCAndCcsICdlJywgJ3gnLCAncCcsICdwJywgJ3MnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsCiAgICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnZycsICdlJywgJ3QnLCAnZScsICd4JywgJ3AnLCAncycsICdkJywgJzEnLCAnMicsICc4JywgJ18nLCAncicsCi0gICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnZScsICd0JywgJ2UnLCAneCcsCi0gICdwJywgJ3MnLCAncycsICcxJywgJzInLCAnOCcsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdnJywgJ2UnLCAndCcsICdtJywgJ2EnLCAnbicsICd0JywgJ3AnLCAnZCcsICcxJywgJzInLCAnOCcsCisgICcyJywgJ18nLCAnZycsICdlJywgJ3QnLCAnZScsICd4JywgJ3AnLCAncCcsICdzJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnZScsICd0JywgJ2UnLCAneCcsICdwJywgJ3AnLCAncycsICc1JywgJzEnLCAnMicsCiAgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2UnLCAndCcsICdtJywgJ2EnLCAnbicsICd0JywgJ3AnLCAnZCcsCi0gICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2UnLCAndCcsICdtJywgJ2EnLCAnbicsCi0gICd0JywgJ3AnLCAnZCcsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2UnLCAndCcsCi0gICdtJywgJ2EnLCAnbicsICd0JywgJ3AnLCAncycsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdnJywgJ2UnLCAndCcsICdtJywgJ2EnLCAnbicsICd0JywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdnJywgJ2UnLCAndCcsICdtJywgJ2EnLCAnbicsICd0JywgJ3AnLCAncycsICc1JywgJzEnLCAnMicsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2UnLCAndCcsICdtJywgJ2EnLCAnbicsICd0JywgJ3MnLCAnZCcsCi0gICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2UnLCAndCcsCi0gICdtJywgJ2EnLCAnbicsICd0JywgJ3MnLCAncycsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdtJywgJ2EnLCAneCcsICdzJywgJ2QnLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdhJywgJ3gnLCAncycsICdzJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdnJywgJ2UnLCAndCcsICdlJywgJ3gnLCAncCcsICdzJywgJ2QnLCAnMScsCisgICcyJywgJzgnLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZycsCisgICdlJywgJ3QnLCAnZScsICd4JywgJ3AnLCAncycsICdzJywgJzEnLCAnMicsICc4JywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsCiAgICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnaScsICduJywgJ3MnLCAnZCcsICdfJywgJ3InLCAnbycsCi0gICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ2knLCAnbicsICdzJywgJ3MnLCAnXycsCi0gICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICd1JywgJ2wnLCAncycsCi0gICdkJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAndScsCi0gICdsJywgJ3MnLCAncycsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ20nLCAnbycsICd2JywgJ2QnLCAnYicsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ20nLCAnbycsICd2JywgJ2QnLCAnYicsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ20nLCAnbycsICd2JywgJ2QnLCAnYicsICcxJywgJzInLCAnOCcsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ2QnLCAnYicsICcyJywgJzUnLCAnNicsICdtJywgJ2UnLCAnbScsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ2QnLCAnYicsICc1JywgJzEnLCAnMicsCi0gICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ2QnLCAndycsCi0gICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ2QnLCAndycsCi0gICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ2QnLCAndycsCi0gICcxJywgJzInLCAnOCcsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsCi0gICd2JywgJ2QnLCAndycsICcyJywgJzUnLCAnNicsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ20nLCAnbycsICd2JywgJ2QnLCAndycsICc1JywgJzEnLCAnMicsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3EnLCAnYicsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3EnLCAnYicsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3EnLCAnYicsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3EnLCAnYicsICcxJywgJzInLCAnOCcsICdtJywgJ2UnLCAnbScsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3EnLCAnYicsICcyJywgJzUnLCAnNicsCi0gICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3EnLCAnYicsCi0gICc1JywgJzEnLCAnMicsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsCi0gICd2JywgJ3EnLCAnZCcsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsCi0gICd2JywgJ3EnLCAnZCcsICcxJywgJzInLCAnOCcsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ20nLCAnbycsICd2JywgJ3EnLCAnZCcsICcyJywgJzUnLCAnNicsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3EnLCAnZCcsICc1JywgJzEnLCAnMicsICdtJywgJ2UnLCAnbScsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3EnLCAndycsICcxJywgJzInLCAnOCcsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3EnLCAndycsICcyJywgJzUnLCAnNicsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3EnLCAndycsICcxJywgJzInLCAnOCcsCi0gICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3EnLCAndycsCi0gICcyJywgJzUnLCAnNicsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsCi0gICd2JywgJ3EnLCAndycsICc1JywgJzEnLCAnMicsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ20nLCAnbycsICd2JywgJ3cnLCAnYicsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ20nLCAnbycsICd2JywgJ3cnLCAnYicsICcxJywgJzInLCAnOCcsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3cnLCAnYicsICcyJywgJzUnLCAnNicsICdtJywgJ2UnLCAnbScsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3cnLCAnYicsICc1JywgJzEnLCAnMicsCi0gICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAnZCcsCi0gICdiJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsCi0gICdkJywgJ2InLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsCi0gICdzJywgJ2QnLCAnYicsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsCi0gICd2JywgJ3MnLCAnZCcsICdiJywgJzEnLCAnMicsICc4JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsICdkJywgJ2InLCAnMicsICc1JywgJzYnLCAnbScsICdlJywgJ20nLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICdzJywgJ2QnLCAnYicsICc1JywgJzEnLCAnMicsCi0gICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAnZCcsCi0gICd3JywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsCi0gICdkJywgJ3cnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsCi0gICdzJywgJ2QnLCAndycsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsCi0gICd2JywgJ3MnLCAnZCcsICd3JywgJzEnLCAnMicsICc4JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsICdkJywgJ3cnLCAnMicsICc1JywgJzYnLCAnbScsICdlJywgJ20nLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICdzJywgJ2QnLCAndycsICc1JywgJzEnLCAnMicsCi0gICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAncScsCi0gICdiJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsCi0gICdxJywgJ2InLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsCi0gICdzJywgJ3EnLCAnYicsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsCi0gICd2JywgJ3MnLCAncScsICdiJywgJzEnLCAnMicsICc4JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsICdxJywgJ2InLCAnMicsICc1JywgJzYnLCAnbScsICdlJywgJ20nLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICdzJywgJ3EnLCAnYicsICc1JywgJzEnLCAnMicsCi0gICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAncScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnZScsICd0JywgJ20nLCAnYScsICduJywgJ3QnLCAncCcsCiAgICdkJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsCi0gICdxJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsCi0gICdzJywgJ3EnLCAnZCcsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsCi0gICd2JywgJ3MnLCAncScsICdkJywgJzEnLCAnMicsICc4JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnZScsICd0JywgJ20nLCAnYScsCisgICduJywgJ3QnLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnZScsCisgICd0JywgJ20nLCAnYScsICduJywgJ3QnLCAncCcsICdkJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsICdxJywgJ2QnLCAnMicsICc1JywgJzYnLCAnbScsICdlJywgJ20nLCAnXycsCisgICdfJywgJ2cnLCAnZScsICd0JywgJ20nLCAnYScsICduJywgJ3QnLCAncCcsICdzJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnZScsICd0JywgJ20nLCAnYScsICduJywgJ3QnLCAncCcsICdzJywgJzInLCAnNScsCisgICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnZScsICd0JywgJ20nLCAnYScsICduJywgJ3QnLCAncCcsCisgICdzJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2cnLCAnZScsICd0JywgJ20nLCAnYScsCisgICduJywgJ3QnLCAncycsICdkJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ2cnLCAnZScsICd0JywgJ20nLCAnYScsICduJywgJ3QnLCAncycsICdzJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsCisgICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICd4JywgJ3MnLCAnZCcsICdfJywgJ3InLCAnbycsCisgICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ2EnLCAneCcsICdzJywgJ3MnLCAnXycsCisgICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdpJywgJ24nLCAncycsCisgICdkJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnaScsCisgICduJywgJ3MnLCAncycsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdtJywgJ3UnLCAnbCcsICdzJywgJ2QnLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsCisgICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAnbScsICd1JywgJ2wnLCAncycsICdzJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAnZCcsICdiJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAnZCcsICdiJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAnZCcsICdiJywgJzEnLCAnMicsICc4JywgJ20nLCAnZScsCisgICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAnZCcsICdiJywgJzInLCAnNScsCisgICc2JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAnZCcsCisgICdiJywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCisgICdvJywgJ3YnLCAnZCcsICd3JywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCisgICdvJywgJ3YnLCAnZCcsICd3JywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCisgICdvJywgJ3YnLCAnZCcsICd3JywgJzEnLCAnMicsICc4JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAnZCcsICd3JywgJzInLCAnNScsICc2JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAnZCcsICd3JywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsCisgICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncScsICdiJywgJzEnLCAnMicsCisgICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncScsICdiJywgJzInLCAnNScsCisgICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncScsICdiJywgJzUnLCAnMScsCisgICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncScsICdiJywgJzEnLCAnMicsCisgICc4JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncScsCisgICdiJywgJzInLCAnNScsICc2JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCisgICdvJywgJ3YnLCAncScsICdiJywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncScsICdkJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncScsICdkJywgJzEnLCAnMicsICc4JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncScsICdkJywgJzInLCAnNScsICc2JywgJ20nLCAnZScsCisgICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncScsICdkJywgJzUnLCAnMScsCisgICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncScsCisgICd3JywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncScsCisgICd3JywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncScsCisgICd3JywgJzEnLCAnMicsICc4JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCisgICdvJywgJ3YnLCAncScsICd3JywgJzInLCAnNScsICc2JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncScsICd3JywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndycsICdiJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndycsICdiJywgJzEnLCAnMicsICc4JywgJ20nLCAnZScsCisgICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndycsICdiJywgJzInLCAnNScsCisgICc2JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndycsCisgICdiJywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCisgICdvJywgJ3YnLCAncycsICdkJywgJ2InLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdtJywgJ28nLCAndicsICdzJywgJ2QnLCAnYicsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAnZCcsICdiJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsICdkJywgJ2InLCAnMScsICcyJywgJzgnLCAnbScsICdlJywgJ20nLCAnXycsCiAgICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICdzJywgJ3EnLCAnZCcsICc1JywgJzEnLCAnMicsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICdzJywgJ2QnLCAnYicsICcyJywgJzUnLCAnNicsCisgICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAnZCcsCisgICdiJywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCisgICdvJywgJ3YnLCAncycsICdkJywgJ3cnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdtJywgJ28nLCAndicsICdzJywgJ2QnLCAndycsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAnZCcsICd3JywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsICdkJywgJ3cnLCAnMScsICcyJywgJzgnLCAnbScsICdlJywgJ20nLCAnXycsCisgICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICdzJywgJ2QnLCAndycsICcyJywgJzUnLCAnNicsCisgICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAnZCcsCisgICd3JywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCisgICdvJywgJ3YnLCAncycsICdxJywgJ2InLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdtJywgJ28nLCAndicsICdzJywgJ3EnLCAnYicsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAncScsICdiJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsICdxJywgJ2InLCAnMScsICcyJywgJzgnLCAnbScsICdlJywgJ20nLCAnXycsCisgICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICdzJywgJ3EnLCAnYicsICcyJywgJzUnLCAnNicsCiAgICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAncScsCi0gICd3JywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsCi0gICdxJywgJ3cnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsCi0gICdzJywgJ3EnLCAndycsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsCi0gICd2JywgJ3MnLCAncScsICd3JywgJzEnLCAnMicsICc4JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdiJywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCisgICdvJywgJ3YnLCAncycsICdxJywgJ2QnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdtJywgJ28nLCAndicsICdzJywgJ3EnLCAnZCcsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAncScsICdkJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsICdxJywgJ3cnLCAnMicsICc1JywgJzYnLCAnbScsICdlJywgJ20nLCAnXycsCisgICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsICdxJywgJ2QnLCAnMScsICcyJywgJzgnLCAnbScsICdlJywgJ20nLCAnXycsCiAgICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICdzJywgJ3EnLCAndycsICc1JywgJzEnLCAnMicsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICdzJywgJ3EnLCAnZCcsICcyJywgJzUnLCAnNicsCisgICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAncScsCisgICdkJywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCisgICdvJywgJ3YnLCAncycsICdxJywgJ3cnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdtJywgJ28nLCAndicsICdzJywgJ3EnLCAndycsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAncScsICd3JywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsICdxJywgJ3cnLCAnMScsICcyJywgJzgnLCAnbScsICdlJywgJ20nLCAnXycsCisgICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICdzJywgJ3EnLCAndycsICcyJywgJzUnLCAnNicsCisgICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAncScsCisgICd3JywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCisgICdvJywgJ3YnLCAncycsICd3JywgJ2InLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdtJywgJ28nLCAndicsICdzJywgJ3cnLCAnYicsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAndycsICdiJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsICd3JywgJ2InLCAnMScsICcyJywgJzgnLCAnbScsICdlJywgJ20nLCAnXycsCisgICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICdzJywgJ3cnLCAnYicsICcyJywgJzUnLCAnNicsCiAgICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3MnLCAndycsCi0gICdiJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsCi0gICd3JywgJ2InLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsCi0gICdzJywgJ3cnLCAnYicsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsCi0gICd2JywgJ3MnLCAndycsICdiJywgJzEnLCAnMicsICc4JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAncycsICd3JywgJ2InLCAnMicsICc1JywgJzYnLCAnbScsICdlJywgJ20nLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICdzJywgJ3cnLCAnYicsICc1JywgJzEnLCAnMicsCisgICdiJywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCisgICdvJywgJ3YnLCAndScsICdzJywgJ2QnLCAnYicsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsICdkJywgJ2InLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsCisgICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAnZCcsICdiJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsICdzJywgJ2QnLCAnYicsICcxJywgJzInLCAnOCcsCiAgICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsCi0gICdkJywgJ2InLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsCi0gICd1JywgJ3MnLCAnZCcsICdiJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCi0gICdvJywgJ3YnLCAndScsICdzJywgJ2QnLCAnYicsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsICdkJywgJ2InLCAnMScsICcyJywgJzgnLCAnbScsICdlJywgJ20nLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAnZCcsICdiJywgJzInLCAnNScsCi0gICc2JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsCi0gICdzJywgJ2QnLCAnYicsICc1JywgJzEnLCAnMicsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsICdkJywgJ3cnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAnZCcsICd3JywgJzInLCAnNScsICc2JywgJ18nLCAnbScsCi0gICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsICdzJywgJ2QnLCAndycsICc1JywgJzEnLCAnMicsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsICdkJywgJ3cnLCAnMScsCi0gICcyJywgJzgnLCAnbScsICdlJywgJ20nLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsCi0gICd1JywgJ3MnLCAnZCcsICd3JywgJzInLCAnNScsICc2JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsICdzJywgJ2QnLCAndycsICc1JywgJzEnLCAnMicsICdtJywgJ2UnLCAnbScsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsICdxJywgJ2InLCAnMScsCi0gICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAncScsCi0gICdiJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsCi0gICdzJywgJ3EnLCAnYicsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsCi0gICd2JywgJ3UnLCAncycsICdxJywgJ2InLCAnMScsICcyJywgJzgnLCAnbScsICdlJywgJ20nLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAncScsICdiJywgJzInLCAnNScsICc2JywgJ20nLCAnZScsCi0gICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsICdzJywgJ3EnLCAnYicsCi0gICc1JywgJzEnLCAnMicsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsCi0gICd2JywgJ3UnLCAncycsICdxJywgJ2QnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdkJywgJ2InLCAnMicsICc1JywgJzYnLCAnbScsICdlJywgJ20nLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCiAgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAncScsICdkJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAnZCcsICdiJywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsICdzJywgJ2QnLCAndycsICcxJywgJzInLCAnOCcsCisgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsICdkJywgJ3cnLCAnMicsCisgICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAnZCcsCisgICd3JywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsCisgICdzJywgJ2QnLCAndycsICcxJywgJzInLCAnOCcsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsICdkJywgJ3cnLCAnMicsICc1JywgJzYnLCAnbScsICdlJywgJ20nLCAnXycsCisgICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAnZCcsICd3JywgJzUnLCAnMScsCisgICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsCisgICdzJywgJ3EnLCAnYicsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsCisgICd2JywgJ3UnLCAncycsICdxJywgJ2InLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAncScsICdiJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsICdzJywgJ3EnLCAnZCcsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsCisgICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsICdzJywgJ3EnLCAnYicsICcxJywgJzInLCAnOCcsICdtJywgJ2UnLCAnbScsCisgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsICdxJywgJ2InLCAnMicsCisgICc1JywgJzYnLCAnbScsICdlJywgJ20nLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsCisgICd1JywgJ3MnLCAncScsICdiJywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsICdzJywgJ3EnLCAnZCcsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsCiAgICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsICdxJywgJ2QnLCAnMScsICcyJywgJzgnLCAnbScsCisgICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsICdxJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXycsCisgICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAncScsICdkJywgJzUnLCAnMScsCisgICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsICdzJywgJ3EnLCAnZCcsCisgICcxJywgJzInLCAnOCcsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsCisgICd2JywgJ3UnLCAncycsICdxJywgJ2QnLCAnMicsICc1JywgJzYnLCAnbScsICdlJywgJ20nLCAnXycsICdtJywgJ2EnLCAncycsCisgICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAncScsICdkJywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsCisgICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsICdzJywgJ3EnLCAndycsCisgICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsCisgICdxJywgJ3cnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsCisgICd1JywgJ3MnLCAncScsICd3JywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCisgICdvJywgJ3YnLCAndScsICdzJywgJ3EnLCAndycsICcxJywgJzInLCAnOCcsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsCisgICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsICdxJywgJ3cnLCAnMicsICc1JywgJzYnLCAnbScsCiAgICdlJywgJ20nLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCiAgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAncScsCi0gICdkJywgJzInLCAnNScsICc2JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICd3JywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCi0gICdvJywgJ3YnLCAndScsICdzJywgJ3EnLCAnZCcsICc1JywgJzEnLCAnMicsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsICdxJywgJ3cnLCAnMScsICcyJywgJzgnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAncScsICd3JywgJzInLCAnNScsCi0gICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsICdzJywgJ3EnLCAndycsCi0gICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsCi0gICdxJywgJ3cnLCAnMScsICcyJywgJzgnLCAnbScsICdlJywgJ20nLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAncScsICd3JywgJzInLCAnNScsICc2JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsCisgICdvJywgJ3YnLCAndScsICdzJywgJ3cnLCAnYicsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsICd3JywgJ2InLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsCisgICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAndycsICdiJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsCiAgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsICdzJywgJ3EnLCAndycsICc1JywgJzEnLCAnMicsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsICdzJywgJ3cnLCAnYicsICcxJywgJzInLCAnOCcsCiAgICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsCi0gICd3JywgJ2InLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsCi0gICd1JywgJ3MnLCAndycsICdiJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsCi0gICdvJywgJ3YnLCAndScsICdzJywgJ3cnLCAnYicsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ20nLCAnbycsICd2JywgJ3UnLCAncycsICd3JywgJ2InLCAnMScsICcyJywgJzgnLCAnbScsICdlJywgJ20nLCAnXycsCisgICd3JywgJ2InLCAnMicsICc1JywgJzYnLCAnbScsICdlJywgJ20nLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAndycsICdiJywgJzUnLCAnMScsICcyJywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnYScsICduJywgJ2cnLCAnZScsICdwJywgJ2QnLCAnMScsICcyJywgJzgnLCAnXycsCiAgICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ28nLCAndicsICd1JywgJ3MnLCAndycsICdiJywgJzInLCAnNScsCi0gICc2JywgJ20nLCAnZScsICdtJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLCAndScsCi0gICdzJywgJ3cnLCAnYicsICc1JywgJzEnLCAnMicsICdtJywgJ2UnLCAnbScsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICd2JywgJ3AnLCAnbScsICd1JywgJ2wnLCAndCcsICdpJywgJ3MnLCAnaCcsICdpJywgJ2YnLCAndCcsICdxJywgJ2InLCAnMScsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdhJywgJ24nLCAnZycsICdlJywgJ3AnLCAnZCcsICcyJywgJzUnLCAnNicsCisgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2EnLCAnbicsICdnJywgJ2UnLCAncCcsICdkJywgJzUnLCAnMScsCisgICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnYScsICduJywgJ2cnLCAnZScsICdwJywgJ3MnLCAnMScsCiAgICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ20nLCAndScsICdsJywgJ3QnLCAnaScsCi0gICdzJywgJ2gnLCAnaScsICdmJywgJ3QnLCAncScsICdiJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3YnLCAncCcsICdtJywgJ3UnLCAnbCcsICd0JywgJ2knLCAncycsICdoJywgJ2knLCAnZicsICd0JywgJ3EnLCAnYicsCi0gICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2EnLCAnbicsICdnJywgJ2UnLCAncCcsCi0gICdkJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnYScsICduJywgJ2cnLCAnZScsCi0gICdwJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdhJywgJ24nLCAnZycsCi0gICdlJywgJ3AnLCAnZCcsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2EnLCAnbicsCi0gICdnJywgJ2UnLCAncCcsICdzJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnYScsCi0gICduJywgJ2cnLCAnZScsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsCi0gICdhJywgJ24nLCAnZycsICdlJywgJ3AnLCAncycsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdyJywgJ2EnLCAnbicsICdnJywgJ2UnLCAncycsICdkJywgJzEnLCAnMicsICc4JywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsCi0gICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnYScsICduJywgJ2cnLCAnZScsICdzJywgJ3MnLCAnMScsCi0gICcyJywgJzgnLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsCi0gICdlJywgJ2QnLCAndScsICdjJywgJ2UnLCAncCcsICdkJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3InLCAnZScsICdkJywgJ3UnLCAnYycsICdlJywgJ3AnLCAnZCcsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdyJywgJ2UnLCAnZCcsICd1JywgJ2MnLCAnZScsICdwJywgJ2QnLCAnNScsICcxJywgJzInLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdlJywgJ2QnLCAndScsICdjJywgJ2UnLCAncCcsICdzJywgJzEnLCAnMicsCi0gICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnZScsICdkJywgJ3UnLCAnYycsICdlJywgJ3AnLCAncycsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdhJywgJ24nLCAnZycsICdlJywgJ3AnLCAncycsCiAgICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2EnLCAnbicsICdnJywgJ2UnLCAncCcsCisgICdzJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnYScsICduJywgJ2cnLCAnZScsCisgICdzJywgJ2QnLCAnMScsICcyJywgJzgnLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsCisgICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncicsICdhJywgJ24nLCAnZycsICdlJywgJ3MnLCAncycsICcxJywgJzInLCAnOCcsICdfJywgJ3InLCAnbycsCisgICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2UnLCAnZCcsICd1JywgJ2MnLCAnZScsCi0gICdwJywgJ3MnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdwJywgJ2QnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdlJywgJ2QnLCAndScsCi0gICdjJywgJ2UnLCAncycsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnZScsICdkJywgJ3UnLCAnYycsCi0gICdlJywgJ3MnLCAncycsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ24nLCAnZCcsICdzJywgJ2MnLCAnYScsCi0gICdsJywgJ2UnLCAncCcsICdkJywgJ18nLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsCi0gICduJywgJ2QnLCAncycsICdjJywgJ2EnLCAnbCcsICdlJywgJ3AnLCAnZCcsICdfJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsCisgICdjJywgJ2UnLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnZScsCisgICdkJywgJ3UnLCAnYycsICdlJywgJ3AnLCAnZCcsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdyJywgJ2UnLCAnZCcsICd1JywgJ2MnLCAnZScsICdwJywgJ3MnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsCisgICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncicsICdlJywgJ2QnLCAndScsICdjJywgJ2UnLCAncCcsICdzJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnZScsICdkJywgJ3UnLCAnYycsICdlJywgJ3AnLCAncycsICc1JywgJzEnLCAnMicsCisgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2UnLCAnZCcsICd1JywgJ2MnLCAnZScsICdzJywgJ2QnLCAnXycsCisgICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdlJywgJ2QnLCAndScsICdjJywgJ2UnLCAncycsICdzJywgJ18nLCAnbScsCiAgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCiAgICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnbicsICdkJywgJ3MnLCAnYycsICdhJywgJ2wnLCAnZScsICdwJywgJ2QnLCAnXycsCisgICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ24nLCAnZCcsICdzJywgJ2MnLCAnYScsCisgICdsJywgJ2UnLCAncCcsICdkJywgJ18nLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsCisgICduJywgJ2QnLCAncycsICdjJywgJ2EnLCAnbCcsICdlJywgJ3AnLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdyJywgJ24nLCAnZCcsICdzJywgJ2MnLCAnYScsICdsJywgJ2UnLCAncCcsICdzJywgJ18nLCAnMScsICcyJywgJzgnLCAnXycsCiAgICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCiAgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICduJywgJ2QnLCAncycsICdjJywgJ2EnLCAnbCcsICdlJywgJ3AnLCAncycsCi0gICdfJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdfJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnbicsICdkJywgJ3MnLCAnYycsCi0gICdhJywgJ2wnLCAnZScsICdwJywgJ3MnLCAnXycsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdyJywgJ24nLCAnZCcsICdzJywgJ2MnLCAnYScsICdsJywgJ2UnLCAncCcsICdzJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3InLCAnbicsICdkJywgJ3MnLCAnYycsICdhJywgJ2wnLCAnZScsICdzJywgJ2QnLCAnXycsICdyJywgJ28nLCAndScsCi0gICduJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICduJywgJ2QnLCAncycsICdjJywgJ2EnLCAnbCcsCi0gICdlJywgJ3MnLCAncycsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdzJywgJ2MnLCAnYScsICdsJywgJ2UnLCAnZicsICdwJywgJ2QnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncycsICdjJywgJ2EnLCAnbCcsICdlJywgJ2YnLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsCi0gICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnYycsICdhJywgJ2wnLCAnZScsICdmJywgJ3AnLCAnZCcsICc1JywgJzEnLCAnMicsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2MnLCAnYScsICdsJywgJ2UnLCAnZicsICdwJywgJ3MnLCAnMScsCi0gICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncycsICdjJywgJ2EnLCAnbCcsICdlJywgJ2YnLCAncCcsCi0gICdzJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnYycsICdhJywgJ2wnLCAnZScsCi0gICdmJywgJ3AnLCAncycsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2MnLCAnYScsCi0gICdsJywgJ2UnLCAnZicsICdzJywgJ2QnLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncycsICdjJywgJ2EnLCAnbCcsICdlJywgJ2YnLCAncycsICdzJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsCi0gICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAndScsICdiJywgJ3MnLCAnZCcsICdfJywgJ3InLCAnbycsCi0gICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ3UnLCAnYicsICdzJywgJ3MnLCAnXycsCi0gICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsCi0gICdwJywgJ2gnLCAnMicsICdwJywgJ3MnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsCi0gICdwJywgJ2gnLCAnMicsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsCi0gICdjJywgJ3YnLCAndCcsICdwJywgJ2gnLCAnMicsICdwJywgJ3MnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsICdwJywgJ2gnLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsICdwJywgJ2gnLCAnMicsICc1JywgJzYnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsICdwJywgJ2gnLCAnNScsCi0gICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsICdsJywgJ2QnLCAndicsCi0gICdkJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdzJywgJ2gnLCAnbCcsCi0gICdkJywgJ3YnLCAnZCcsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsCi0gICdoJywgJ2wnLCAnZCcsICd2JywgJ2QnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsCi0gICdwJywgJ3MnLCAnaCcsICdsJywgJ2QnLCAndicsICdxJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3YnLCAncCcsICdzJywgJ2gnLCAnbCcsICdkJywgJ3YnLCAncScsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsCisgICdhJywgJ2wnLCAnZScsICdwJywgJ3MnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICduJywgJ2QnLCAncycsCisgICdjJywgJ2EnLCAnbCcsICdlJywgJ3MnLCAnZCcsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsCiAgICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ2wnLCAnZCcsICd2JywgJ3EnLCAnNScsICcxJywgJzInLCAnXycsCisgICczJywgJzInLCAnXycsICdyJywgJ24nLCAnZCcsICdzJywgJ2MnLCAnYScsICdsJywgJ2UnLCAncycsICdzJywgJ18nLCAncicsCisgICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnYycsICdhJywgJ2wnLCAnZScsCisgICdmJywgJ3AnLCAnZCcsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2MnLCAnYScsCisgICdsJywgJ2UnLCAnZicsICdwJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncycsCisgICdjJywgJ2EnLCAnbCcsICdlJywgJ2YnLCAncCcsICdkJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3MnLCAnYycsICdhJywgJ2wnLCAnZScsICdmJywgJ3AnLCAncycsICcxJywgJzInLCAnOCcsICdfJywgJ20nLCAnYScsCisgICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdzJywgJ2MnLCAnYScsICdsJywgJ2UnLCAnZicsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXycsCiAgICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsICdsJywgJ2QnLCAndicsICd3JywgJzEnLCAnMicsCi0gICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdzJywgJ2gnLCAnbCcsICdkJywgJ3YnLCAndycsCi0gICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ2wnLCAnZCcsCi0gICd2JywgJ3cnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsCi0gICdyJywgJ2QnLCAndicsICdkJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsCi0gICdzJywgJ2gnLCAncicsICdkJywgJ3YnLCAnZCcsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICd2JywgJ3AnLCAncycsICdoJywgJ3InLCAnZCcsICd2JywgJ2QnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsICdyJywgJ2QnLCAndicsICdxJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsCi0gICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdzJywgJ2gnLCAncicsICdkJywgJ3YnLCAncScsICcyJywgJzUnLCAnNicsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ3InLCAnZCcsICd2JywgJ3EnLCAnNScsCi0gICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsICdyJywgJ2QnLCAndicsCi0gICd3JywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdzJywgJ2gnLCAncicsCi0gICdkJywgJ3YnLCAndycsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsCi0gICdoJywgJ3InLCAnZCcsICd2JywgJ3cnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsCi0gICdwJywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnYicsICdpJywgJ3QnLCAncScsICdtJywgJ2InLCAnMScsICcyJywgJzgnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnYicsICdpJywgJ3QnLCAncScsCi0gICdtJywgJ2InLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsCi0gICd1JywgJ2YnLCAnYicsICdpJywgJ3QnLCAncScsICdtJywgJ2InLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnZicsICdpJywgJ3gnLCAndScsICdwJywgJ2knLCAnbScsICdtJywgJ3AnLCAnZCcsICcxJywgJzInLCAnOCcsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAneicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2YnLCAnaScsICd4JywgJ3UnLCAncCcsICdpJywgJ20nLCAnbScsCi0gICdwJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdmJywgJ2knLCAneCcsCi0gICd1JywgJ3AnLCAnaScsICdtJywgJ20nLCAncCcsICdkJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnZicsICdpJywgJ3gnLCAndScsICdwJywgJ2knLCAnbScsICdtJywgJ3AnLCAncycsICcxJywgJzInLCAnOCcsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAneicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2YnLCAnaScsICd4JywgJ3UnLCAncCcsICdpJywgJ20nLCAnbScsCi0gICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdmJywgJ2knLCAneCcsCi0gICd1JywgJ3AnLCAnaScsICdtJywgJ20nLCAncCcsICdzJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAnZicsICdpJywgJ3gnLCAndScsICdwJywgJ2knLCAnbScsICdtJywgJ3MnLCAnZCcsICdfJywgJ20nLCAnYScsCi0gICdzJywgJ2snLCAneicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ2YnLCAnaScsICd4JywgJ3UnLCAncCcsICdpJywgJ20nLCAnbScsICdzJywgJ3MnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ2wnLCAnZCcsICd2JywgJ2QnLCAnMScsCi0gICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ2wnLCAnZCcsCi0gICd2JywgJ2QnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsCi0gICdoJywgJ2wnLCAnZCcsICd2JywgJ2QnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICd2JywgJ3AnLCAncycsICdoJywgJ2wnLCAnZCcsICd2JywgJ3EnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ2wnLCAnZCcsICd2JywgJ3EnLCAnMicsICc1JywgJzYnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ2wnLCAnZCcsICd2JywgJ3EnLCAnNScsCi0gICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ2wnLCAnZCcsCi0gICd2JywgJ3cnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsCi0gICdoJywgJ2wnLCAnZCcsICd2JywgJ3cnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICd2JywgJ3AnLCAncycsICdoJywgJ2wnLCAnZCcsICd2JywgJ3cnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ3InLCAnZCcsICd2JywgJ2QnLCAnMScsICcyJywgJzgnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ3InLCAnZCcsICd2JywgJ2QnLCAnMicsCi0gICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ3InLCAnZCcsCi0gICd2JywgJ2QnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsCi0gICdoJywgJ3InLCAnZCcsICd2JywgJ3EnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICd2JywgJ3AnLCAncycsICdoJywgJ3InLCAnZCcsICd2JywgJ3EnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ3InLCAnZCcsICd2JywgJ3EnLCAnNScsICcxJywgJzInLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ3InLCAnZCcsICd2JywgJ3cnLCAnMScsCi0gICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ3InLCAnZCcsCi0gICd2JywgJ3cnLCAnMicsICc1JywgJzYnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsCi0gICdoJywgJ3InLCAnZCcsICd2JywgJ3cnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ3onLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdtJywgJ2EnLCAneCcsICdwJywgJ2QnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ2EnLCAneCcsICdwJywgJ3MnLCAnNScsCi0gICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdtJywgJ2knLCAnbicsICdwJywgJ2QnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ2knLCAnbicsCi0gICdwJywgJ3MnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ3UnLCAnbCcsICdwJywgJ2QnLCAnNScsICcxJywgJzInLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdtJywgJ3UnLCAnbCcsICdwJywgJ3MnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnYycsICdrJywgJ3MnLCAncycsCi0gICdkJywgJ3cnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnYycsICdrJywgJ3MnLCAncycsICd3JywgJ2InLCAnNScsCi0gICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnYycsICdrJywgJ3UnLCAncycsICdkJywgJ3cnLCAnNScsICcxJywgJzInLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ2EnLCAnYycsICdrJywgJ3UnLCAncycsICd3JywgJ2InLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnZCcsCi0gICdkJywgJ3MnLCAnYicsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdkJywgJ2QnLCAncycsICd3JywgJzUnLCAnMScsCi0gICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdlJywgJ3InLCAnbScsICd2JywgJ2EnLCAncicsICdkJywgJ2YnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ2UnLCAncicsICdtJywgJ3YnLCAnYScsICdyJywgJ2QnLCAnZicsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZScsCi0gICdyJywgJ20nLCAndicsICdhJywgJ3InLCAnZCcsICdpJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdlJywgJ3InLCAnbScsCi0gICd2JywgJ2EnLCAncicsICdkJywgJ2knLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2UnLCAncicsICdtJywgJ3YnLCAnYScsCi0gICdyJywgJ2gnLCAnaScsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZScsICdyJywgJ20nLCAndicsICdhJywgJ3InLCAnaCcsCi0gICdpJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdlJywgJ3InLCAnbScsICd2JywgJ2EnLCAncicsICdoJywgJ2knLCAnNScsCi0gICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ2UnLCAncicsICdtJywgJ3YnLCAnYScsICdyJywgJ3EnLCAnaScsICcxJywgJzInLCAnOCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAnZScsICdyJywgJ20nLCAndicsICdhJywgJ3InLCAncScsICdpJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdlJywgJ3InLCAnbScsICd2JywgJ2EnLCAncicsICdxJywgJ2knLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2UnLCAncicsCi0gICdtJywgJ3YnLCAnYScsICdyJywgJ3MnLCAnZicsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZScsICdyJywgJ20nLCAndicsCi0gICdhJywgJ3InLCAncycsICdpJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ2EnLCAnZCcsICdkJywgJ3UnLCAnYicsCi0gICdzJywgJ3cnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnYScsICdkJywgJ2QnLCAndycsICdkJywgJzUnLCAnMScsCi0gICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdtJywgJ3UnLCAnbCcsICdoJywgJ3InLCAncycsICd3JywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdtJywgJ3UnLCAnbCcsICdoJywgJ3cnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAndScsICdsJywgJ2gnLCAndScsCi0gICd3JywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdyJywgJ28nLCAnbCcsICdkJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdyJywgJ28nLCAnbCcsICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdyJywgJ28nLCAnbCcsICdkJywgJzUnLCAnMScsCi0gICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdyJywgJ28nLCAnbCcsICdxJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdyJywgJ28nLCAnbCcsCi0gICdxJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdyJywgJ28nLCAnbCcsICdxJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdyJywgJ28nLCAnbCcsICd2JywgJ2QnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3InLCAnbycsICdsJywgJ3YnLCAnZCcsCi0gICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncicsICdvJywgJ2wnLCAndicsICdkJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdyJywgJ28nLCAnbCcsICd2JywgJ3EnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3InLCAnbycsICdsJywgJ3YnLCAncScsCi0gICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncicsICdvJywgJ2wnLCAndicsICdxJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdyJywgJ28nLCAncicsICdkJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdyJywgJ28nLCAncicsICdkJywgJzInLCAnNScsCi0gICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncCcsICdyJywgJ28nLCAncicsICdkJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdyJywgJ28nLCAncicsCi0gICdxJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdyJywgJ28nLCAncicsICdxJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdyJywgJ28nLCAncicsICdxJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdyJywgJ28nLCAncicsICd2JywgJ2QnLCAnMScsCi0gICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ3InLCAnbycsICdyJywgJ3YnLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncicsCi0gICdvJywgJ3InLCAndicsICdkJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdyJywgJ28nLCAncicsICd2JywgJ3EnLCAnMScsCi0gICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ3InLCAnbycsICdyJywgJ3YnLCAncScsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncicsCi0gICdvJywgJ3InLCAndicsICdxJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2EnLCAnZCcsICdiJywgJ3cnLCAnNScsCi0gICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnYicsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsCi0gICdsJywgJ2wnLCAnZCcsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAncScsICc1JywgJzEnLCAnMicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAndycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAnZCcsCi0gICdpJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2wnLCAnbCcsICdxJywgJ2knLCAnNScsICcxJywgJzInLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdwJywgJ3MnLCAnbCcsICdsJywgJ3cnLCAnaScsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAndicsCi0gICcxJywgJzYnLCAncycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2wnLCAnbCcsICd2JywgJzgnLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdzJywgJ2wnLCAnbCcsICd2JywgJzgnLCAnaCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2wnLCAnbCcsICd2JywgJzEnLCAnNicsCi0gICdoJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnbCcsICdsJywgJ3YnLCAnMycsICcyJywgJ2gnLCAnaScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsCi0gICdyJywgJ2EnLCAnZCcsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdyJywgJ2EnLCAncScsICcxJywgJzInLCAnOCcsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAncycsICdyJywgJ2EnLCAncScsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdyJywgJ2EnLCAncScsCi0gICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdyJywgJ2EnLCAndycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsCi0gICdyJywgJ2EnLCAnZCcsICdpJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnYScsICdxJywgJ2knLCAnMScsCi0gICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ3EnLCAnaScsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsCi0gICdyJywgJ2EnLCAncScsICdpJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnYScsICd3JywgJ2knLCAnNScsCi0gICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ3YnLCAnMScsICc2JywgJ3MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsCi0gICdyJywgJ2EnLCAndicsICdxJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnYScsICd2JywgJ3EnLCAnMicsCi0gICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ3YnLCAnOCcsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsCi0gICdhJywgJ3YnLCAnOCcsICdoJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ3YnLCAnMScsICc2JywgJ2gnLCAnaScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAncycsICdyJywgJ2EnLCAndicsICczJywgJzInLCAnaCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsCi0gICdkJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsICdxJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICdzJywgJ3InLCAnbCcsICd3JywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsICdkJywgJ2knLCAnNScsCi0gICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdsJywgJ3EnLCAnaScsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsCi0gICdyJywgJ2wnLCAndycsICdpJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsICd2JywgJzEnLCAnNicsCi0gICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdsJywgJ3YnLCAnOCcsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsCi0gICdsJywgJ3YnLCAnOCcsICdoJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdsJywgJ3YnLCAnMScsICc2JywgJ2gnLCAnaScsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAncycsICdyJywgJ2wnLCAndicsICczJywgJzInLCAnaCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCi0gICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3UnLCAnYicsCi0gICdzJywgJ2InLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAndScsICdiJywgJ3MnLCAndycsICc1JywgJzEnLCAnMicsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3AnLCAndCcsICdlJywgJ3InLCAnbicsICdsJywgJ28nLCAnZycsICdkJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCi0gICd0JywgJ2UnLCAncicsICduJywgJ2wnLCAnbycsICdnJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCi0gICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3QnLCAnZScsCi0gICdyJywgJ24nLCAnbCcsICdvJywgJ2cnLCAnZCcsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAndCcsICdlJywgJ3InLCAnbicsCi0gICdsJywgJ28nLCAnZycsICdxJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICd0JywgJ2UnLCAncicsICduJywgJ2wnLCAnbycsCi0gICdnJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3QnLCAnZScsICdyJywgJ24nLCAnbCcsICdvJywgJ2cnLCAncScsCi0gICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnYycsICdwJywgJzEnLCAnNCcsICdwJywgJ2QnLCAnMScsICcyJywgJzgnLCAnXycsCi0gICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdjJywgJ3AnLCAnMScsICc0JywgJ3AnLCAnZCcsICcyJywgJzUnLCAnNicsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2MnLCAncCcsICcxJywgJzQnLCAncCcsICdkJywgJzUnLCAnMScsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncycsICdjJywgJ2EnLCAnbCcsICdlJywgJ2YnLCAncCcsICdzJywgJzUnLCAnMScsCiAgICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnYycsICdwJywgJzEnLCAnNCcsICdwJywgJ3MnLCAnMScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnYycsICdhJywgJ2wnLCAnZScsICdmJywgJ3MnLCAnZCcsCisgICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2MnLCAnYScsCisgICdsJywgJ2UnLCAnZicsICdzJywgJ3MnLCAnXycsICdyJywgJ28nLCAndScsICduJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsCisgICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncycsICd1JywgJ2InLCAncycsICdkJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAndScsICdiJywgJ3MnLCAncycsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsCisgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2MnLCAndicsICd0JywgJ3AnLCAnaCcsICcyJywgJ3AnLCAncycsCisgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2MnLCAndicsICd0JywgJ3AnLCAnaCcsICcyJywgJ3AnLCAncycsCisgICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2MnLCAndicsICd0JywgJ3AnLCAnaCcsCisgICcyJywgJ3AnLCAncycsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2MnLCAndicsCisgICd0JywgJ3AnLCAncycsICcyJywgJ3AnLCAnaCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2MnLCAndicsCisgICd0JywgJ3AnLCAncycsICcyJywgJ3AnLCAnaCcsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICd2JywgJ2MnLCAndicsICd0JywgJ3AnLCAncycsICcyJywgJ3AnLCAnaCcsICc1JywgJzEnLCAnMicsICdfJywgJ20nLCAnYScsCisgICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdmJywgJ2knLCAneCcsICd1JywgJ3AnLCAnaScsICdtJywgJ20nLCAncCcsICdkJywgJzEnLCAnMicsCisgICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZicsICdpJywgJ3gnLCAndScsICdwJywgJ2knLCAnbScsCisgICdtJywgJ3AnLCAnZCcsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAneicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2YnLCAnaScsCisgICd4JywgJ3UnLCAncCcsICdpJywgJ20nLCAnbScsICdwJywgJ2QnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsCisgICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdmJywgJ2knLCAneCcsICd1JywgJ3AnLCAnaScsICdtJywgJ20nLCAncCcsICdzJywgJzEnLCAnMicsCisgICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZicsICdpJywgJ3gnLCAndScsICdwJywgJ2knLCAnbScsCisgICdtJywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAneicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2YnLCAnaScsCisgICd4JywgJ3UnLCAncCcsICdpJywgJ20nLCAnbScsICdwJywgJ3MnLCAnNScsICcxJywgJzInLCAnXycsICdtJywgJ2EnLCAncycsCisgICdrJywgJ3onLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdmJywgJ2knLCAneCcsICd1JywgJ3AnLCAnaScsICdtJywgJ20nLCAncycsICdkJywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICd6JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZicsICdpJywgJ3gnLCAndScsICdwJywgJ2knLCAnbScsICdtJywgJ3MnLCAncycsCisgICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAneicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICd4JywgJ3AnLCAnZCcsICc1JywgJzEnLCAnMicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ20nLCAnYScsICd4JywgJ3AnLCAncycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnaScsICduJywgJ3AnLCAnZCcsCisgICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnaScsICduJywgJ3AnLCAncycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAndScsCisgICdsJywgJ3AnLCAnZCcsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAndScsICdsJywgJ3AnLCAncycsICc1JywgJzEnLCAnMicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnYScsICdjJywgJ2snLCAncycsICdzJywgJ2QnLCAndycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsCisgICdjJywgJ2snLCAncycsICdzJywgJ3cnLCAnYicsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdjJywgJ2snLCAndScsCisgICdzJywgJ2QnLCAndycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdjJywgJ2snLCAndScsICdzJywgJ3cnLCAnYicsCisgICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZScsICdyJywgJ20nLCAndicsICdhJywgJ3InLCAnZCcsICdmJywgJzInLCAnNScsCisgICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncCcsICdlJywgJ3InLCAnbScsICd2JywgJ2EnLCAncicsICdkJywgJ2YnLCAnNScsICcxJywgJzInLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ2UnLCAncicsICdtJywgJ3YnLCAnYScsICdyJywgJ2QnLCAnaScsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZScsCisgICdyJywgJ20nLCAndicsICdhJywgJ3InLCAnZCcsICdpJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdlJywgJ3InLCAnbScsCisgICd2JywgJ2EnLCAncicsICdoJywgJ2knLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2UnLCAncicsICdtJywgJ3YnLCAnYScsCisgICdyJywgJ2gnLCAnaScsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZScsICdyJywgJ20nLCAndicsICdhJywgJ3InLCAnaCcsCisgICdpJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdlJywgJ3InLCAnbScsICd2JywgJ2EnLCAncicsICdxJywgJ2knLCAnMScsCisgICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdwJywgJ2UnLCAncicsICdtJywgJ3YnLCAnYScsICdyJywgJ3EnLCAnaScsICcyJywgJzUnLCAnNicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnZScsICdyJywgJ20nLCAndicsICdhJywgJ3InLCAncScsICdpJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdlJywgJ3InLCAnbScsICd2JywgJ2EnLCAncicsICdzJywgJ2YnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2UnLCAncicsCisgICdtJywgJ3YnLCAnYScsICdyJywgJ3MnLCAnaScsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdhJywgJ2QnLCAnZCcsCisgICd1JywgJ2InLCAncycsICd3JywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ2EnLCAnZCcsICdkJywgJ3cnLCAnZCcsCisgICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICd1JywgJ2wnLCAnaCcsICdyJywgJ3MnLCAndycsICc1JywgJzEnLCAnMicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAnbScsICd1JywgJ2wnLCAnaCcsICd3JywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ3UnLCAnbCcsCisgICdoJywgJ3UnLCAndycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdtJywgJ3UnLCAnbCcsICd0JywgJ2knLCAncycsCisgICdoJywgJ2knLCAnZicsICd0JywgJ3EnLCAnYicsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdtJywgJ3UnLCAnbCcsCisgICd0JywgJ2knLCAncycsICdoJywgJ2knLCAnZicsICd0JywgJ3EnLCAnYicsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsCisgICdtJywgJ3UnLCAnbCcsICd0JywgJ2knLCAncycsICdoJywgJ2knLCAnZicsICd0JywgJ3EnLCAnYicsICc1JywgJzEnLCAnMicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAncycsICdhJywgJ2QnLCAnYicsICd3JywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2gnLCAndScsCisgICdmJywgJ2InLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnbCcsICdsJywgJ2QnLCAnNScsICcxJywgJzInLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ3MnLCAnbCcsICdsJywgJ3EnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnbCcsICdsJywgJ3cnLCAnNScsCisgICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnbCcsICdsJywgJ2QnLCAnaScsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsCisgICdsJywgJ2wnLCAncScsICdpJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2wnLCAnbCcsICd3JywgJ2knLCAnNScsCisgICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnbCcsICdsJywgJ3YnLCAnMScsICc2JywgJ3MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsCisgICdsJywgJ2wnLCAndicsICc4JywgJ2QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAndicsICc4JywgJ2gnLCAnaScsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAndicsICcxJywgJzYnLCAnaCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2wnLCAnbCcsCisgICd2JywgJzMnLCAnMicsICdoJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ2QnLCAnNScsICcxJywgJzInLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ3MnLCAncicsICdhJywgJ3EnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ3EnLCAnMicsCisgICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCisgICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ3EnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsCisgICdhJywgJ3cnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ2QnLCAnaScsICc1JywgJzEnLCAnMicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAncycsICdyJywgJ2EnLCAncScsICdpJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnYScsCisgICdxJywgJ2knLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ3EnLCAnaScsICc1JywgJzEnLCAnMicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAncycsICdyJywgJ2EnLCAndycsICdpJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnYScsCisgICd2JywgJzEnLCAnNicsICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ3YnLCAncScsICcxJywgJzInLCAnOCcsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAncycsICdyJywgJ2EnLCAndicsICdxJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnYScsCisgICd2JywgJzgnLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnYScsICd2JywgJzgnLCAnaCcsICdpJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdzJywgJ3InLCAnYScsICd2JywgJzEnLCAnNicsICdoJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ3YnLCAnMycsCisgICcyJywgJ2gnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdyJywgJ2wnLCAnZCcsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsCisgICdyJywgJ2wnLCAncScsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdyJywgJ2wnLCAndycsICc1JywgJzEnLCAnMicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAncycsICdyJywgJ2wnLCAnZCcsICdpJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsCisgICdxJywgJ2knLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCisgICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdsJywgJ3cnLCAnaScsICc1JywgJzEnLCAnMicsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3AnLCAncycsICdyJywgJ2wnLCAndicsICcxJywgJzYnLCAncycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsCisgICd2JywgJzgnLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsICd2JywgJzgnLCAnaCcsICdpJywgJ1wwMDAnLCAnXycsCisgICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsCisgICdzJywgJ3InLCAnbCcsICd2JywgJzEnLCAnNicsICdoJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdsJywgJ3YnLCAnMycsCisgICcyJywgJ2gnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAndCcsICdlJywgJ3InLCAnbicsICdsJywgJ28nLCAnZycsICdkJywgJzEnLCAnMicsCisgICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCisgICcyJywgJ18nLCAncCcsICd0JywgJ2UnLCAncicsICduJywgJ2wnLCAnbycsICdnJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsCisgICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCisgICdwJywgJ3QnLCAnZScsICdyJywgJ24nLCAnbCcsICdvJywgJ2cnLCAnZCcsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAndCcsCisgICdlJywgJ3InLCAnbicsICdsJywgJ28nLCAnZycsICdxJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICd0JywgJ2UnLCAncicsCisgICduJywgJ2wnLCAnbycsICdnJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3QnLCAnZScsICdyJywgJ24nLCAnbCcsCisgICdvJywgJ2cnLCAncScsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnYycsICdwJywgJzEnLCAnNCcsICdwJywgJ2QnLCAnMScsCiAgICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdjJywgJ3AnLCAnMScsICc0JywgJ3AnLCAncycsCisgICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdjJywgJ3AnLCAnMScsICc0JywgJ3AnLCAnZCcsCiAgICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCiAgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2MnLCAncCcsICcxJywgJzQnLCAncCcsCi0gICdzJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdkJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCiAgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnYycsICdwJywgJzEnLCAnNCcsCi0gICdzJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdjJywgJ3AnLCAnMScsICc0JywgJ3MnLCAncycsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2MnLCAncCcsICcyJywgJzgnLCAncCcsICdkJywgJ18nLCAnbScsCi0gICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnYycsICdwJywgJzInLCAnOCcsICdwJywgJ3MnLCAnXycsICdtJywgJ2EnLCAncycsCi0gICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncicsICdjJywgJ3AnLCAnMicsICc4JywgJ3MnLCAnZCcsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsCi0gICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2MnLCAncCcsICcyJywgJzgnLCAncycsICdzJywgJ18nLCAncicsCi0gICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsCi0gICcxJywgJzQnLCAncCcsICdkJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsCi0gICdxJywgJ3InLCAndCcsICcxJywgJzQnLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCi0gICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICcxJywgJzQnLCAncCcsICdkJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsCi0gICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICcxJywgJzQnLCAncCcsICdzJywgJzEnLCAnMicsCi0gICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICcxJywgJzQnLCAncCcsCi0gICdzJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsCisgICdwJywgJ3MnLCAnMScsICcyJywgJzgnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdjJywgJ3AnLCAnMScsCisgICc0JywgJ3AnLCAncycsICcyJywgJzUnLCAnNicsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsCisgICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2MnLCAncCcsCiAgICcxJywgJzQnLCAncCcsICdzJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnYycsCisgICdwJywgJzEnLCAnNCcsICdzJywgJ2QnLCAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCisgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdjJywgJ3AnLCAnMScsCisgICc0JywgJ3MnLCAncycsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2MnLCAncCcsICcyJywgJzgnLCAncCcsCisgICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnYycsICdwJywgJzInLCAnOCcsICdwJywgJ3MnLCAnXycsCisgICdtJywgJ2EnLCAncycsICdrJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCisgICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdjJywgJ3AnLCAnMicsICc4JywgJ3MnLCAnZCcsICdfJywgJ3InLCAnbycsCisgICd1JywgJ24nLCAnZCcsICdfJywgJ20nLCAnYScsICdzJywgJ2snLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCisgICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2MnLCAncCcsICcyJywgJzgnLCAncycsCisgICdzJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsCi0gICdxJywgJ3InLCAndCcsICcxJywgJzQnLCAncycsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsCi0gICdxJywgJ3InLCAndCcsICcxJywgJzQnLCAncycsICdzJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsCi0gICdxJywgJ3InLCAndCcsICcyJywgJzgnLCAncCcsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsCi0gICdxJywgJ3InLCAndCcsICcyJywgJzgnLCAncCcsICdzJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCi0gICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsCi0gICdxJywgJ3InLCAndCcsICcyJywgJzgnLCAncycsICdkJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsCi0gICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICcyJywgJzgnLCAncycsICdzJywgJ18nLCAncicsCi0gICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCi0gICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsCi0gICdlJywgJ3InLCAncycsICdpJywgJ3YnLCAnOCcsICdkJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsCi0gICdyJywgJ3MnLCAnaScsICd2JywgJzEnLCAnNicsICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsCi0gICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsCi0gICdyJywgJ3MnLCAnaScsICd2JywgJzgnLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncycsICdjJywgJ2EnLCAndCcsICd0JywgJ2UnLCAncicsCi0gICdzJywgJ2knLCAndicsICcxJywgJzYnLCAncycsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsCi0gICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncycsICdjJywgJ2EnLCAndCcsICd0JywgJ2UnLCAncicsCi0gICdkJywgJ2knLCAndicsICc4JywgJ2QnLCAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAnZCcsCi0gICdpJywgJ3YnLCAnMScsICc2JywgJ3MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCi0gICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAnZCcsCi0gICdpJywgJ3YnLCAnOCcsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ2QnLCAnaScsCi0gICd2JywgJzEnLCAnNicsICdzJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsCi0gICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ2QnLCAnaScsCi0gICd2JywgJzInLCAnZCcsICdmJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsCi0gICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncycsICdjJywgJ2EnLCAndCcsICd0JywgJ2UnLCAncicsICdkJywgJ2knLCAndicsCi0gICcyJywgJ2QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCi0gICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAnZCcsICdpJywgJ3YnLCAnNCcsCi0gICdkJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsCi0gICczJywgJzInLCAnXycsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ2QnLCAnaScsICd2JywgJzQnLCAnZCcsCi0gICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsCi0gICcyJywgJ18nLCAncycsICdjJywgJ2EnLCAndCcsICd0JywgJ2UnLCAncicsICdkJywgJ2knLCAndicsICc0JywgJ3MnLCAnZicsCisgICdxJywgJ3InLCAndCcsICcxJywgJzQnLCAncCcsICdkJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCiAgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCi0gICdfJywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAnZCcsICdpJywgJ3YnLCAnNCcsICdzJywgJ2knLCAnXDAwMCcsCi0gICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsCi0gICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ2QnLCAnaScsICd2JywgJzgnLCAncycsICdmJywgJ1wwMDAnLCAnXycsCi0gICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncycsCi0gICdjJywgJ2EnLCAndCcsICd0JywgJ2UnLCAncicsICdkJywgJ2knLCAndicsICc4JywgJ3MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsCisgICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICcxJywgJzQnLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsCisgICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsCisgICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICcxJywgJzQnLCAncCcsICdkJywgJzUnLCAnMScsCisgICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICcxJywgJzQnLCAncCcsCisgICdzJywgJzEnLCAnMicsICc4JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsCisgICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsCisgICcxJywgJzQnLCAncCcsICdzJywgJzInLCAnNScsICc2JywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCisgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsCisgICdxJywgJ3InLCAndCcsICcxJywgJzQnLCAncCcsICdzJywgJzUnLCAnMScsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICcxJywgJzQnLCAncycsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICcxJywgJzQnLCAncycsICdzJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICcyJywgJzgnLCAncCcsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICcyJywgJzgnLCAncCcsICdzJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsCisgICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsCisgICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICcyJywgJzgnLCAncycsICdkJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsCisgICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsCisgICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICcyJywgJzgnLCAncycsCisgICdzJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdcMDAwJywgJ18nLCAnXycsCiAgICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnYycsCiAgICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAncCcsICdmJywgJ2QnLCAncCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsCiAgICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncycsICdjJywgJ2EnLCAndCcsCkBAIC0yNDA5MSw0NTQgKzI0MDA3LDQwNCBAQAogICAncicsICdwJywgJ2YnLCAncScsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAogICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ3AnLAogICAnZicsICdxJywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAncycsICdpJywgJ3YnLAotICAnMicsICdkJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ3MnLCAnaScsICd2JywgJzInLAotICAnZCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAncycsICdjJywgJ2EnLCAndCcsICd0JywgJ2UnLCAncicsICdzJywgJ2knLCAndicsICc0JywgJ2QnLAotICAnZicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ3MnLCAnYycsICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAncycsICdpJywgJ3YnLCAnNCcsICdkJywgJ2knLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdzJywgJ2MnLCAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ3MnLCAnaScsICd2JywgJzQnLCAncycsICdmJywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAncycsICdjJywgJ2EnLCAndCcsICd0JywgJ2UnLCAncicsICdzJywgJ2knLCAndicsICc0JywgJ3MnLCAnaScsICdcMDAwJywgJ18nLAorICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAndScsICdiJywgJ3AnLCAnZCcsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLAogICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLAotICAnYycsICdhJywgJ3QnLCAndCcsICdlJywgJ3InLCAncycsICdpJywgJ3YnLCAnOCcsICdzJywgJ2YnLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2MnLAotICAnYScsICd0JywgJ3QnLCAnZScsICdyJywgJ3MnLCAnaScsICd2JywgJzgnLCAncycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncycsICd1JywgJ2InLAotICAncCcsICdkJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncycsICd1JywgJ2InLCAncCcsICdzJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAndicsICdjJywgJ28nLCAnbScsICdpJywgJ3MnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAnYycsICdvJywgJ20nLCAnaScsICdzJywgJ3MnLAorICAndScsICdiJywgJ3AnLCAncycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAnYycsICdvJywgJ20nLCAnaScsICdzJywgJ2QnLAogICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICd2JywgJ2MnLCAndicsICd0JywgJ3MnLCAnZCcsICcyJywgJ3MnLCAnaScsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2MnLAotICAndicsICd0JywgJ3MnLCAnZCcsICcyJywgJ3MnLCAnaScsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2MnLCAndicsICd0JywgJ3MnLAotICAnZCcsICcyJywgJ3UnLCAncycsICdpJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAnYycsICd2JywgJ3QnLCAncycsICdkJywgJzInLAotICAndScsICdzJywgJ2knLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsICdzJywgJ3MnLCAnMicsICdzJywgJ2knLAotICAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsICdzJywgJ3MnLCAnMicsICdzJywgJ2knLCAnNicsICc0JywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAndicsICdjJywgJ3YnLCAndCcsICdzJywgJ3MnLCAnMicsICd1JywgJ3MnLCAnaScsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2MnLAotICAndicsICd0JywgJ3MnLCAncycsICcyJywgJ3UnLCAncycsICdpJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdkJywgJ3AnLAotICAnYicsICd1JywgJ3MnLCAnZCcsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnXycsICd2JywgJ2MnLCAnbycsICdtJywgJ2knLCAncycsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsICdzJywgJ2QnLAorICAnMicsICdzJywgJ2knLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsICdzJywgJ2QnLCAnMicsICdzJywgJ2knLAorICAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsICdzJywgJ2QnLCAnMicsICd1JywgJ3MnLCAnaScsICczJywgJzInLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICd2JywgJ2MnLCAndicsICd0JywgJ3MnLCAnZCcsICcyJywgJ3UnLCAncycsICdpJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLAorICAnYycsICd2JywgJ3QnLCAncycsICdzJywgJzInLCAncycsICdpJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAnYycsICd2JywgJ3QnLAorICAncycsICdzJywgJzInLCAncycsICdpJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAnYycsICd2JywgJ3QnLCAncycsICdzJywgJzInLAorICAndScsICdzJywgJ2knLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsICdzJywgJ3MnLCAnMicsICd1JywgJ3MnLAorICAnaScsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZCcsICdwJywgJ2InLCAndScsICdzJywgJ2QnLCAnMScsICcyJywgJzgnLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICd2JywgJ3AnLCAnZCcsICdwJywgJ2InLCAndScsICdzJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLAorICAnZCcsICdwJywgJ2InLCAndScsICdzJywgJ2QnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZCcsICdwJywgJ2InLAorICAndScsICdzJywgJ2QnLCAncycsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAogICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdkJywgJ3AnLCAnYicsICd1JywgJ3MnLAotICAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdkJywgJ3AnLCAnYicsICd1JywgJ3MnLCAnZCcsICc1JywgJzEnLAotICAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ3YnLCAncCcsICdkJywgJ3AnLCAnYicsICd1JywgJ3MnLCAnZCcsICdzJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAndicsICdwJywgJ2QnLCAncCcsICdiJywgJ3UnLCAncycsICdkJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLAorICAnZCcsICdzJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2QnLCAncCcsICdiJywgJ3UnLCAncycsICdkJywgJ3MnLAorICAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZCcsICdwJywgJ3cnLCAncycsICdzJywgJ2QnLCAnMScsICcyJywgJzgnLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICd2JywgJ3AnLCAnZCcsICdwJywgJ3cnLCAncycsICdzJywgJ2QnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLAogICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLAotICAnZCcsICdwJywgJ2InLCAndScsICdzJywgJ2QnLCAncycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdkJywgJ3AnLAotICAndycsICdzJywgJ3MnLCAnZCcsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnZCcsICdwJywgJ3cnLCAncycsICdzJywgJ2QnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZCcsICdwJywgJ3cnLAorICAncycsICdzJywgJ2QnLCAncycsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAogICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdkJywgJ3AnLCAndycsICdzJywgJ3MnLAotICAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdkJywgJ3AnLCAndycsICdzJywgJ3MnLCAnZCcsICc1JywgJzEnLAotICAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ3YnLCAncCcsICdkJywgJ3AnLCAndycsICdzJywgJ3MnLCAnZCcsICdzJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAndicsICdwJywgJ2QnLCAncCcsICd3JywgJ3MnLCAncycsICdkJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLAotICAnZCcsICdwJywgJ3cnLCAncycsICdzJywgJ2QnLCAncycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLAotICAnbScsICdpJywgJzInLCAndicsICdhJywgJ3InLCAnZCcsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLAotICAnbScsICdpJywgJzInLCAndicsICdhJywgJ3InLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLAotICAnbScsICdpJywgJzInLCAndicsICdhJywgJ3InLCAnZCcsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLAotICAnbScsICdpJywgJzInLCAndicsICdhJywgJ3InLCAnaCcsICdpJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2UnLAotICAncicsICdtJywgJ2knLCAnMicsICd2JywgJ2EnLCAncicsICdoJywgJ2knLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLAotICAnZScsICdyJywgJ20nLCAnaScsICcyJywgJ3YnLCAnYScsICdyJywgJ2gnLCAnaScsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLAotICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLAotICAncCcsICdlJywgJ3InLCAnbScsICdpJywgJzInLCAndicsICdhJywgJ3InLCAncCcsICdkJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAndicsICdwJywgJ2UnLCAncicsICdtJywgJ2knLCAnMicsICd2JywgJ2EnLCAncicsICdwJywgJ2QnLCAnMicsICc1JywgJzYnLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICd2JywgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsICcyJywgJ3YnLCAnYScsICdyJywgJ3AnLCAnZCcsICc1JywgJzEnLAotICAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICdpJywgJzInLCAndicsICdhJywgJ3InLCAncCcsICdzJywgJzEnLAotICAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2UnLCAncicsICdtJywgJ2knLCAnMicsICd2JywgJ2EnLCAncicsICdwJywgJ3MnLAotICAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsICcyJywgJ3YnLCAnYScsICdyJywgJ3AnLAotICAncycsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICdpJywgJzInLCAndicsICdhJywgJ3InLAotICAncScsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICdpJywgJzInLCAndicsICdhJywgJ3InLAotICAncScsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICdpJywgJzInLCAndicsICdhJywgJ3InLAotICAncScsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICdpJywgJzInLCAndicsICdhJywgJ3InLAotICAncScsICdpJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2UnLCAncicsICdtJywgJ2knLCAnMicsICd2JywgJ2EnLAotICAncicsICdxJywgJ2knLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAotICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsICcyJywgJ3YnLAotICAnYScsICdyJywgJ3EnLCAnaScsICc1JywgJzEnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICdpJywgJ2wnLAotICAndicsICdhJywgJ3InLCAncCcsICdkJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2UnLCAncicsICdtJywgJ2knLAotICAnbCcsICd2JywgJ2EnLCAncicsICdwJywgJ3MnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnbScsICdhJywgJ2QnLAotICAnZCcsICc1JywgJzInLCAnaCcsICd1JywgJ3EnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnbScsICdhJywgJ2QnLAotICAnZCcsICc1JywgJzInLCAnaCcsICd1JywgJ3EnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnbScsICdhJywgJ2QnLAotICAnZCcsICc1JywgJzInLCAnaCcsICd1JywgJ3EnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnbScsICdhJywgJ2QnLAotICAnZCcsICc1JywgJzInLCAnbCcsICd1JywgJ3EnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnbScsICdhJywgJ2QnLAotICAnZCcsICc1JywgJzInLCAnbCcsICd1JywgJ3EnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnbScsICdhJywgJ2QnLAotICAnZCcsICc1JywgJzInLCAnbCcsICd1JywgJ3EnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ2wnLAotICAnZCcsICdkJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsICdsJywgJ2QnLCAnZCcsICcyJywgJzUnLAotICAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ3YnLCAncCcsICdzJywgJ2gnLCAnbCcsICdkJywgJ2QnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLAotICAncycsICdoJywgJ2wnLCAnZCcsICdxJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsICdsJywgJ2QnLAotICAncScsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdzJywgJ2gnLCAnbCcsICdkJywgJ3EnLCAnNScsICcxJywgJzInLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ2wnLCAnZCcsICd3JywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3MnLAotICAnaCcsICdsJywgJ2QnLCAndycsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdzJywgJ2gnLCAnbCcsICdkJywgJ3cnLAorICAnZCcsICdzJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2QnLCAncCcsICd3JywgJ3MnLCAncycsICdkJywgJ3MnLAogICAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ3InLCAnZCcsICdkJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAndicsICdwJywgJ3MnLCAnaCcsICdyJywgJ2QnLCAnZCcsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdzJywgJ2gnLAotICAncicsICdkJywgJ2QnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAotICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ3InLCAnZCcsICdxJywgJzEnLAotICAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsICdyJywgJ2QnLCAncScsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLAotICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLAotICAncCcsICdzJywgJ2gnLCAncicsICdkJywgJ3EnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ3InLAotICAnZCcsICd3JywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsICdyJywgJ2QnLCAndycsICcyJywgJzUnLAotICAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ3YnLCAncCcsICdzJywgJ2gnLCAncicsICdkJywgJ3cnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdiJywgJ2UnLAotICAneCcsICd0JywgJ3InLCAnXycsICd1JywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2InLCAnZScsICd4JywgJ3QnLCAncicsICdfJywgJ3UnLAotICAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAnYicsICd6JywgJ2gnLCAnaScsICdfJywgJ3MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2InLCAneicsICdoJywgJ2knLAotICAnXycsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdwJywgJ2QnLCAnZScsICdwJywgJ18nLCAncycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdkJywgJ2UnLAotICAncCcsICdfJywgJ2QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnZScsICd4JywgJ3QnLCAnXycsICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2UnLAotICAneCcsICd0JywgJ18nLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICdsJywgJ2QnLCAnZScsICdtJywgJ28nLCAndCcsICdlJywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAnYycsICdsJywgJ2YnLCAnbCcsICd1JywgJ3MnLCAnaCcsICdvJywgJ3AnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbCcsICdyJywgJ3MnLAotICAncycsICdiJywgJ3MnLCAneScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbCcsICd3JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ2wnLCAneicsICdlJywgJ3InLAotICAnbycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ2QnLCAnaScsICdyJywgJ2UnLCAnYycsICd0JywgJ3MnLCAndCcsICdvJywgJ3InLCAnZScsICdfJywgJ3UnLAotICAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAnZCcsICdpJywgJ3InLCAnZScsICdjJywgJ3QnLCAncycsICd0JywgJ28nLCAncicsICdlJywgJ18nLAotICAndScsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ2UnLCAnZicsICdsJywgJ2EnLCAnZycsICdzJywgJ18nLAotICAndScsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdyJywgJ2UnLCAnYScsICdkJywgJ2UnLCAnZicsICdsJywgJ2EnLCAnZycsICdzJywgJ18nLAotICAndScsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICd3JywgJ3InLCAnaScsICd0JywgJ2UnLCAnZScsICdmJywgJ2wnLCAnYScsICdnJywgJ3MnLAotICAnXycsICd1JywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3cnLCAncicsICdpJywgJ3QnLCAnZScsICdlJywgJ2YnLCAnbCcsICdhJywgJ2cnLAotICAncycsICdfJywgJ3UnLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZicsICd4JywgJ3InLCAncycsICd0JywgJ28nLCAncicsICdcMDAwJywgJ18nLAotICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2YnLAotICAneCcsICdyJywgJ3MnLCAndCcsICdvJywgJ3InLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZicsICd4JywgJ3MnLCAnYScsICd2JywgJ2UnLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdmJywgJ3gnLCAncycsICdhJywgJ3YnLCAnZScsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdpJywgJ24nLCAnYycsICdzJywgJ3MnLAotICAncCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAnaScsICduJywgJ2MnLCAncycsICdzJywgJ3AnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2knLCAnbicsICd2JywgJ3AnLAotICAnYycsICdpJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdsJywgJ2wnLCAndycsICdwJywgJ2MnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2wnLCAndycsICdwJywgJ2knLAotICAnbicsICdzJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2wnLCAndycsICdwJywgJ2knLCAnbicsICdzJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLAotICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2wnLAotICAndycsICdwJywgJ3YnLCAnYScsICdsJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2wnLCAndycsICdwJywgJ3YnLCAnYScsICdsJywgJzYnLAotICAnNCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ2UnLCAnbScsICdtJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAotICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdmJywgJ2UnLCAnbScsICdtJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ2EnLAotICAncycsICdrJywgJ20nLCAnbycsICd2JywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAotICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ28nLCAndicsICduJywgJ3QnLCAncScsICdcMDAwJywgJ18nLAotICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLAotICAnYScsICdjJywgJ2snLCAncycsICdzJywgJ2QnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdjJywgJ2snLCAncycsICdzJywgJ3cnLAotICAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ3AnLCAnYScsICdjJywgJ2snLCAndScsICdzJywgJ3cnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdkJywgJ2QnLAotICAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ3AnLCAnYScsICdkJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdkJywgJ2QnLCAncScsICdcMDAwJywgJ18nLAotICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLAotICAnYScsICdkJywgJ2QnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdkJywgJ2QnLCAncycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdhJywgJ2QnLAotICAnZCcsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnZCcsICdkJywgJ3UnLCAncycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdhJywgJ2QnLAotICAnZCcsICd1JywgJ3MnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdsJywgJ2knLCAnZycsICduJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLAotICAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAncCcsICdhJywgJ24nLCAnZCcsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdhJywgJ3YnLCAnZycsICdiJywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAncCcsICdhJywgJ3YnLCAnZycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdjJywgJ20nLCAncCcsICdlJywgJ3EnLCAnYicsICdcMDAwJywgJ18nLAotICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLAotICAnYycsICdtJywgJ3AnLCAnZScsICdxJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAotICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2MnLCAnbScsICdwJywgJ2UnLCAncScsICd3JywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAncCcsICdjJywgJ20nLCAncCcsICdnJywgJ3QnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ2QnLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdwJywgJ2MnLCAnbScsICdwJywgJ2cnLCAndCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdlJywgJ2MnLCAnXycsICdlJywgJ3gnLAotICAndCcsICdfJywgJ3YnLCAnNCcsICdoJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAotICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2UnLCAnYycsICdfJywgJ3MnLCAnZScsICd0JywgJ18nLAotICAndicsICc0JywgJ2gnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdhJywgJ2QnLCAnZCcsICd3JywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLAotICAnYScsICd4JywgJ3MnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdhJywgJ3gnLCAndScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ2knLAotICAnbicsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnaScsICduJywgJ3UnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdvJywgJ3YnLAotICAnbScsICdzJywgJ2snLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICd1JywgJ2wnLCAnaCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ3UnLAotICAnbCcsICdoJywgJ3UnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICd1JywgJ2wnLCAnbCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ3UnLAotICAnbCcsICd1JywgJ2QnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnbycsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2EnLCAnZCcsICdiJywgJ3cnLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdwJywgJ3MnLCAnbCcsICdsJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAotICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnbCcsICdsJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLAotICAnbCcsICdsJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnbCcsICdsJywgJ2QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdsJywgJ2wnLAotICAncScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2wnLCAnbCcsICd3JywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ2QnLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAotICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ2QnLCAnaScsICdcMDAwJywgJ18nLAotICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLAotICAncycsICdyJywgJ2EnLCAndycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLAotICAnbCcsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsICdkJywgJ2knLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdwJywgJ3MnLCAncicsICdsJywgJ3EnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdyJywgJ2wnLCAndycsICdpJywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAncCcsICdzJywgJ3UnLCAnYicsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3UnLCAnYicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3UnLAotICAnYicsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3UnLCAnYicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3UnLCAnYicsICdzJywgJ2InLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdwJywgJ3MnLCAndScsICdiJywgJ3MnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICd1JywgJ2InLCAndScsICdzJywgJ2InLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdwJywgJ3MnLCAndScsICdiJywgJ3UnLCAncycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICd1JywgJ24nLCAncCcsICdjJywgJ2snLAotICAnaCcsICdiJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdwJywgJ3UnLCAnbicsICdwJywgJ2MnLCAnaycsICdoJywgJ2QnLCAncScsICdcMDAwJywgJ18nLAotICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLAotICAndScsICduJywgJ3AnLCAnYycsICdrJywgJ2gnLCAndycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICd1JywgJ24nLCAncCcsICdjJywgJ2snLAotICAnbCcsICdiJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdwJywgJ3UnLCAnbicsICdwJywgJ2MnLCAnaycsICdsJywgJ2QnLCAncScsICdcMDAwJywgJ18nLAotICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLAotICAndScsICduJywgJ3AnLCAnYycsICdrJywgJ2wnLCAndycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICd4JywgJ28nLCAncicsICdcMDAwJywgJ18nLAotICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLAotICAnbycsICduJywgJ2knLCAndCcsICdvJywgJ3InLCAneCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnbycsICd2JywgJ2QnLCAnaScsICdyJywgJzYnLAotICAnNCcsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAnbScsICd3JywgJ2EnLCAnaScsICd0JywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2MnLCAnbCcsICdtJywgJ3UnLAotICAnbCcsICdxJywgJ2QnLCAncScsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYycsICdsJywgJ20nLCAndScsICdsJywgJ3EnLAotICAnZCcsICdxJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdjJywgJ2wnLCAnbScsICd1JywgJ2wnLCAncScsICdkJywgJ3EnLAotICAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdwJywgJ3QnLCAndycsICdyJywgJ2knLCAndCcsICdlJywgJzMnLCAnMicsICdcMDAwJywgJ18nLAotICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLAotICAndCcsICd3JywgJ3InLCAnaScsICd0JywgJ2UnLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdkJywgJ2YnLCAncycsICdiJywgJ2EnLAotICAncycsICdlJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnZCcsICdmJywgJ3MnLCAnYicsICdhJywgJ3MnLCAnZScsICc2JywgJzQnLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdyJywgJ2QnLCAnZycsICdzJywgJ2InLCAnYScsICdzJywgJ2UnLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdkJywgJ2cnLAotICAncycsICdiJywgJ2EnLCAncycsICdlJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnZCcsICdwJywgJ2knLCAnZCcsICdcMDAwJywgJ18nLAotICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLAotICAnZCcsICdwJywgJ2snLCAncicsICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdkJywgJ3AnLCAnbScsICdjJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdkJywgJ3MnLAotICAncycsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdyJywgJ2QnLCAncycsICdzJywgJ3AnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnZCcsICd0JywgJ3MnLAotICAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ3InLCAncycsICd0JywgJ28nLCAncicsICdzJywgJ3MnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnYScsICd2JywgJ2UnLAotICAncCcsICdyJywgJ2UnLCAndicsICdzJywgJ3MnLCAncCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnZScsICd0JywgJ3MnLCAncycsICdiJywgJ3MnLAotICAneScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ3MnLCAnaCcsICdhJywgJzEnLCAnbScsICdzJywgJ2cnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnaCcsICdhJywgJzEnLAotICAnbScsICdzJywgJ2cnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnaCcsICdhJywgJzEnLCAnbicsICdlJywgJ3gnLCAndCcsICdlJywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAncycsICdoJywgJ2EnLCAnMScsICdyJywgJ24nLCAnZCcsICdzJywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2gnLCAnYScsICcyJywgJzUnLAotICAnNicsICdtJywgJ3MnLCAnZycsICcxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncycsICdoJywgJ2EnLCAnMicsICc1JywgJzYnLCAnbScsICdzJywgJ2cnLAotICAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ3MnLCAnaCcsICdhJywgJzInLCAnNScsICc2JywgJ3InLCAnbicsICdkJywgJ3MnLCAnMicsICdcMDAwJywgJ18nLAotICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLAotICAnbCcsICd3JywgJ3AnLCAnYycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICdtJywgJ3AnLCAncycsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICdvJywgJ20nLAotICAnaScsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdjJywgJ28nLCAnbScsICdpJywgJ2cnLCAnZScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbycsICdtJywgJ2knLAotICAnZycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAnYycsICdvJywgJ20nLCAnaScsICdsJywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ28nLCAnbScsICdpJywgJ2wnLAotICAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ2MnLCAnbycsICdtJywgJ2knLCAnbicsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ2QnLAotICAnMicsICdwJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ2knLCAnMicsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLAotICAndCcsICdwJywgJ2knLCAnMicsICdwJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAotICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsICdwJywgJ2knLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdjJywgJ3YnLCAndCcsICdzJywgJ3MnLCAnMicsICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdzJywgJ3MnLAotICAnMicsICdzJywgJ2knLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndCcsICdwJywgJ2QnLCAnMicsICdwJywgJ2knLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAncycsICcyJywgJ3AnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3QnLAotICAncycsICdzJywgJzInLCAncycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndCcsICdzJywgJ3MnLCAnMicsICdzJywgJ2knLAotICAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAnbScsICdhJywgJ3gnLCAncCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdhJywgJ3gnLCAncycsICdzJywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAnbScsICdpJywgJ24nLCAncCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdpJywgJ24nLCAncycsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdvJywgJ3YnLAotICAnbScsICdzJywgJ2snLCAncCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2gnLCAndScsICdmJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2MnLAotICAncCcsICdwJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdyJywgJ2MnLCAncCcsICdzJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ3MnLCAncScsICdyJywgJ3QnLAotICAncCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAncicsICdzJywgJ3EnLCAncicsICd0JywgJ3MnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnZicsICdlJywgJ24nLAotICAnYycsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAndScsICdjJywgJ28nLCAnbScsICdpJywgJ2UnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAotICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3UnLCAnYycsICdvJywgJ20nLAotICAnaScsICdnJywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICd1JywgJ2MnLCAnbycsICdtJywgJ2knLCAnZycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndScsICdjJywgJ28nLAotICAnbScsICdpJywgJ2wnLCAnZScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAotICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3UnLCAnYycsICdvJywgJ20nLCAnaScsICdsJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd1JywgJ2MnLAotICAnbycsICdtJywgJ2knLCAnbicsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAotICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ2wnLCAnZicsICdsJywgJ3UnLCAncycsICdoJywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAnYycsICdtJywgJ3AnLCAncycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICdvJywgJ20nLCAnaScsICdzJywgJ2QnLCAnZScsICdxJywgJ1wwMDAnLAotICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAotICAnYycsICdvJywgJ20nLCAnaScsICdzJywgJ2QnLCAnZycsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICdvJywgJ20nLCAnaScsICdzJywgJ2QnLAotICAnZycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAnYycsICdvJywgJ20nLCAnaScsICdzJywgJ2QnLCAnbCcsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICdvJywgJ20nLAotICAnaScsICdzJywgJ2QnLCAnbCcsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAotICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICdvJywgJ20nLCAnaScsICdzJywgJ2QnLCAnbicsICdlJywgJ3EnLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ2QnLCAnMicsICdkJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAotICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ2QnLAotICAnMicsICdwJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsICdkJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLAotICAndCcsICdzJywgJ2QnLCAnMicsICdzJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAotICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICdzJywgJ2QnLCAnMicsICdzJywgJ2knLAotICAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncycsICdkJywgJzInLCAncycsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLAotICAndCcsICdwJywgJ2QnLCAnMicsICdkJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAotICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3AnLCAncycsICcyJywgJ2QnLAotICAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAotICAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3QnLCAncycsICdkJywgJzInLCAncycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLAotICAndCcsICdzJywgJ2QnLCAnMicsICdzJywgJ2knLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbCcsICdmJywgJ2UnLCAnbicsICdjJywgJ2UnLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdtJywgJ2EnLCAncycsICdrJywgJ20nLCAnbycsICd2JywgJ2QnLCAncScsICd1JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAotICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdhJywgJ3gnLAotICAncCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAotICAnMycsICcyJywgJ18nLCAnbScsICdhJywgJ3gnLCAncycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAotICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdmJywgJ2UnLCAnbicsICdjJywgJ2UnLAotICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdtJywgJ2knLCAnbicsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAotICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ2knLCAnbicsICdzJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLAotICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ28nLAotICAndicsICdtJywgJ3MnLCAnaycsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAotICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnYycsICdrJywgJ3MnLCAncycsICdkJywgJ3cnLAorICAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsICcyJywgJ3YnLCAnYScsICdyJywgJ2QnLAogICAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAotICAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnYycsICdrJywgJ3MnLCAncycsICd3JywgJ2InLCAnMScsICcyJywgJzgnLAorICAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsICcyJywgJ3YnLCAnYScsICdyJywgJ2QnLAorICAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsICcyJywgJ3YnLCAnYScsICdyJywgJ2QnLAorICAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsICcyJywgJ3YnLCAnYScsICdyJywgJ2gnLAorICAnaScsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAorICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICdpJywgJzInLCAndicsICdhJywgJ3InLAorICAnaCcsICdpJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2UnLCAncicsICdtJywgJ2knLCAnMicsICd2JywgJ2EnLAorICAncicsICdoJywgJ2knLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAorICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsICcyJywgJ3YnLAorICAnYScsICdyJywgJ3AnLCAnZCcsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICdpJywgJzInLAorICAndicsICdhJywgJ3InLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2UnLCAncicsICdtJywgJ2knLAorICAnMicsICd2JywgJ2EnLCAncicsICdwJywgJ2QnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZScsICdyJywgJ20nLAorICAnaScsICcyJywgJ3YnLCAnYScsICdyJywgJ3AnLCAncycsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLAorICAnbScsICdpJywgJzInLCAndicsICdhJywgJ3InLCAncCcsICdzJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAorICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2UnLAorICAncicsICdtJywgJ2knLCAnMicsICd2JywgJ2EnLCAncicsICdwJywgJ3MnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLAorICAnZScsICdyJywgJ20nLCAnaScsICcyJywgJ3YnLCAnYScsICdyJywgJ3EnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLAorICAnZScsICdyJywgJ20nLCAnaScsICcyJywgJ3YnLCAnYScsICdyJywgJ3EnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLAorICAnZScsICdyJywgJ20nLCAnaScsICcyJywgJ3YnLCAnYScsICdyJywgJ3EnLCAnNScsICcxJywgJzInLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLAorICAnZScsICdyJywgJ20nLCAnaScsICcyJywgJ3YnLCAnYScsICdyJywgJ3EnLCAnaScsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLAorICAncCcsICdlJywgJ3InLCAnbScsICdpJywgJzInLCAndicsICdhJywgJ3InLCAncScsICdpJywgJzInLCAnNScsICc2JywgJ1wwMDAnLAorICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAorICAndicsICdwJywgJ2UnLCAncicsICdtJywgJ2knLCAnMicsICd2JywgJ2EnLCAncicsICdxJywgJ2knLCAnNScsICcxJywgJzInLAogICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAotICAnXycsICdwJywgJ2EnLCAnYycsICdrJywgJ3UnLCAncycsICd3JywgJ2InLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLAorICAnXycsICd2JywgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsICdsJywgJ3YnLCAnYScsICdyJywgJ3AnLCAnZCcsICc1JywgJzEnLAorICAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICdpJywgJ2wnLCAndicsICdhJywgJ3InLCAncCcsICdzJywgJzUnLAorICAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAndicsICdwJywgJ20nLCAnYScsICdkJywgJ2QnLCAnNScsICcyJywgJ2gnLCAndScsICdxJywgJzEnLAorICAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAndicsICdwJywgJ20nLCAnYScsICdkJywgJ2QnLCAnNScsICcyJywgJ2gnLCAndScsICdxJywgJzInLAorICAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAndicsICdwJywgJ20nLCAnYScsICdkJywgJ2QnLCAnNScsICcyJywgJ2gnLCAndScsICdxJywgJzUnLAorICAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAndicsICdwJywgJ20nLCAnYScsICdkJywgJ2QnLCAnNScsICcyJywgJ2wnLCAndScsICdxJywgJzEnLAorICAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAndicsICdwJywgJ20nLCAnYScsICdkJywgJ2QnLCAnNScsICcyJywgJ2wnLCAndScsICdxJywgJzInLAorICAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAndicsICdwJywgJ20nLCAnYScsICdkJywgJ2QnLCAnNScsICcyJywgJ2wnLCAndScsICdxJywgJzUnLAorICAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAnYicsICdlJywgJ3gnLCAndCcsICdyJywgJ18nLCAndScsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdiJywgJ2UnLAorICAneCcsICd0JywgJ3InLCAnXycsICd1JywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2InLCAneicsICdoJywgJ2knLCAnXycsICdzJywgJ2knLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICdiJywgJ3onLCAnaCcsICdpJywgJ18nLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdkJywgJ2UnLCAncCcsICdfJywgJ3MnLAorICAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ3AnLCAnZCcsICdlJywgJ3AnLCAnXycsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2UnLCAneCcsICd0JywgJ18nLAorICAncycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAncCcsICdlJywgJ3gnLCAndCcsICdfJywgJ2QnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbCcsICdkJywgJ2UnLAorICAnbScsICdvJywgJ3QnLCAnZScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAorICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbCcsICdmJywgJ2wnLCAndScsICdzJywgJ2gnLCAnbycsICdwJywgJ3QnLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICdjJywgJ2wnLCAncicsICdzJywgJ3MnLCAnYicsICdzJywgJ3knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ2wnLCAndycsICdiJywgJ1wwMDAnLAorICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAorICAnYycsICdsJywgJ3onLCAnZScsICdyJywgJ28nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAorICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdkJywgJ2knLCAncicsICdlJywgJ2MnLCAndCcsICdzJywgJ3QnLAorICAnbycsICdyJywgJ2UnLCAnXycsICd1JywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2QnLCAnaScsICdyJywgJ2UnLCAnYycsICd0JywgJ3MnLAorICAndCcsICdvJywgJ3InLCAnZScsICdfJywgJ3UnLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdlJywgJ2YnLAorICAnbCcsICdhJywgJ2cnLCAncycsICdfJywgJ3UnLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdlJywgJ2EnLCAnZCcsICdlJywgJ2YnLAorICAnbCcsICdhJywgJ2cnLCAncycsICdfJywgJ3UnLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndycsICdyJywgJ2knLCAndCcsICdlJywgJ2UnLAorICAnZicsICdsJywgJ2EnLCAnZycsICdzJywgJ18nLCAndScsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd3JywgJ3InLCAnaScsICd0JywgJ2UnLAorICAnZScsICdmJywgJ2wnLCAnYScsICdnJywgJ3MnLCAnXycsICd1JywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2YnLCAneCcsICdyJywgJ3MnLAorICAndCcsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICdmJywgJ3gnLCAncicsICdzJywgJ3QnLCAnbycsICdyJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2YnLAorICAneCcsICdzJywgJ2EnLCAndicsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZicsICd4JywgJ3MnLCAnYScsICd2JywgJ2UnLCAnNicsICc0JywgJ1wwMDAnLAorICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAorICAnaScsICduJywgJ2MnLCAncycsICdzJywgJ3AnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2knLCAnbicsICdjJywgJ3MnLCAncycsICdwJywgJ3EnLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICdpJywgJ24nLCAndicsICdwJywgJ2MnLCAnaScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbCcsICdsJywgJ3cnLCAncCcsICdjJywgJ2InLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICdsJywgJ3cnLCAncCcsICdpJywgJ24nLCAncycsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdsJywgJ3cnLCAncCcsICdpJywgJ24nLAorICAncycsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICdsJywgJ3cnLCAncCcsICd2JywgJ2EnLCAnbCcsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdsJywgJ3cnLAorICAncCcsICd2JywgJ2EnLCAnbCcsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAorICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdlJywgJ20nLCAnbScsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAorICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZicsICdlJywgJ20nLAorICAnbScsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdtJywgJ28nLCAndicsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAorICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdvJywgJ3YnLAorICAnbicsICd0JywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnYycsICdrJywgJ3MnLCAncycsICdkJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLAogICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLAotICAnZCcsICdkJywgJ3MnLCAnYicsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAotICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdkJywgJ2QnLCAncycsICd3JywgJzEnLAorICAnYycsICdrJywgJ3MnLCAncycsICd3JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAorICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnYycsICdrJywgJ3UnLCAncycsICd3JywgJ2InLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICdwJywgJ2EnLCAnZCcsICdkJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAorICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnZCcsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLAorICAnZCcsICdkJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnZCcsICdkJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnZCcsICdkJywgJ3MnLAorICAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ3AnLCAnYScsICdkJywgJ2QnLCAncycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdhJywgJ2QnLCAnZCcsICd1JywgJ3MnLAorICAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ3AnLCAnYScsICdkJywgJ2QnLCAndScsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnbCcsICdpJywgJ2cnLAorICAnbicsICdyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAncCcsICdhJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICduJywgJ2QnLCAnbicsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLAorICAnYScsICd2JywgJ2cnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAorICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICd2JywgJ2cnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYycsICdtJywgJ3AnLAorICAnZScsICdxJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICdwJywgJ2MnLCAnbScsICdwJywgJ2UnLCAncScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAorICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdjJywgJ20nLAorICAncCcsICdlJywgJ3EnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAorICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYycsICdtJywgJ3AnLCAnZycsICd0JywgJ2InLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2MnLAorICAnbScsICdwJywgJ2cnLCAndCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdjJywgJ20nLCAncCcsICdnJywgJ3QnLCAndycsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLAorICAnZScsICdjJywgJ18nLCAnZScsICd4JywgJ3QnLCAnXycsICd2JywgJzQnLCAnaCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAorICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdlJywgJ2MnLAorICAnXycsICdzJywgJ2UnLCAndCcsICdfJywgJ3YnLCAnNCcsICdoJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnYScsICdkJywgJ2QnLAorICAndycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ2EnLCAneCcsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnYScsICd4JywgJ3UnLAorICAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ3AnLCAnbScsICdpJywgJ24nLCAncycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ2knLCAnbicsICd1JywgJ2InLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICdwJywgJ20nLCAnbycsICd2JywgJ20nLCAncycsICdrJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAndScsICdsJywgJ2gnLAorICAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ3AnLCAnbScsICd1JywgJ2wnLCAnaCcsICd1JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAndScsICdsJywgJ2wnLAorICAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ3AnLCAnbScsICd1JywgJ2wnLCAndScsICdkJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ28nLCAncicsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLAorICAncycsICdhJywgJ2QnLCAnYicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2wnLCAnbCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAorICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2wnLAorICAnbCcsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2wnLCAnbCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2wnLCAnbCcsICdkJywgJ2knLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICdwJywgJ3MnLCAnbCcsICdsJywgJ3EnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdsJywgJ2wnLCAndycsICdpJywgJ1wwMDAnLAorICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAorICAncCcsICdzJywgJ3InLCAnYScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnYScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAorICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLAorICAnYScsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAncicsICdhJywgJ3cnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdyJywgJ2wnLAorICAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ3AnLCAncycsICdyJywgJ2wnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdyJywgJ2wnLCAndycsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLAorICAncycsICdyJywgJ2wnLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsICdxJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLAorICAncicsICdsJywgJ3cnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAorICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICd1JywgJ2InLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICd1JywgJ2InLAorICAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ3AnLCAncycsICd1JywgJ2InLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICd1JywgJ2InLCAndycsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLAorICAncycsICd1JywgJ2InLCAncycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3UnLCAnYicsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLAorICAndScsICdiJywgJ3UnLCAncycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3UnLCAnYicsICd1JywgJ3MnLCAndycsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLAorICAndScsICduJywgJ3AnLCAnYycsICdrJywgJ2gnLCAnYicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICd1JywgJ24nLCAncCcsICdjJywgJ2snLAorICAnaCcsICdkJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICdwJywgJ3UnLCAnbicsICdwJywgJ2MnLCAnaycsICdoJywgJ3cnLCAnZCcsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLAorICAndScsICduJywgJ3AnLCAnYycsICdrJywgJ2wnLCAnYicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICd1JywgJ24nLCAncCcsICdjJywgJ2snLAorICAnbCcsICdkJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICdwJywgJ3UnLCAnbicsICdwJywgJ2MnLCAnaycsICdsJywgJ3cnLCAnZCcsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLAorICAneCcsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICdtJywgJ28nLCAnbicsICdpJywgJ3QnLCAnbycsICdyJywgJ3gnLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ28nLAorICAndicsICdkJywgJ2knLCAncicsICc2JywgJzQnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAndycsICdhJywgJ2knLCAndCcsICd4JywgJ1wwMDAnLAorICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAorICAncCcsICdjJywgJ2wnLCAnbScsICd1JywgJ2wnLCAncScsICdkJywgJ3EnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2MnLAorICAnbCcsICdtJywgJ3UnLCAnbCcsICdxJywgJ2QnLCAncScsICcyJywgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYycsICdsJywgJ20nLAorICAndScsICdsJywgJ3EnLCAnZCcsICdxJywgJzUnLCAnMScsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICd0JywgJ3cnLCAncicsICdpJywgJ3QnLAorICAnZScsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICdwJywgJ3QnLCAndycsICdyJywgJ2knLCAndCcsICdlJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLAorICAnZCcsICdmJywgJ3MnLCAnYicsICdhJywgJ3MnLCAnZScsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2QnLCAnZicsICdzJywgJ2InLAorICAnYScsICdzJywgJ2UnLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdkJywgJ2cnLCAncycsICdiJywgJ2EnLCAncycsICdlJywgJzMnLAorICAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ3InLCAnZCcsICdnJywgJ3MnLCAnYicsICdhJywgJ3MnLCAnZScsICc2JywgJzQnLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ2QnLAorICAncCcsICdpJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICdyJywgJ2QnLCAncCcsICdrJywgJ3InLCAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnZCcsICdwJywgJ20nLAorICAnYycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ3InLCAnZCcsICdzJywgJ3MnLCAncCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdkJywgJ3MnLCAncycsICdwJywgJ3EnLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICdyJywgJ2QnLCAndCcsICdzJywgJ2MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAorICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ3MnLCAndCcsICdvJywgJ3InLCAncycsICdzJywgJ3AnLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICdzJywgJ2EnLCAndicsICdlJywgJ3AnLCAncicsICdlJywgJ3YnLCAncycsICdzJywgJ3AnLCAnXDAwMCcsICdfJywgJ18nLAorICAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2UnLAorICAndCcsICdzJywgJ3MnLCAnYicsICdzJywgJ3knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAorICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2gnLCAnYScsICcxJywgJ20nLCAncycsICdnJywgJzEnLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICdzJywgJ2gnLCAnYScsICcxJywgJ20nLCAncycsICdnJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2gnLCAnYScsICcxJywgJ24nLAorICAnZScsICd4JywgJ3QnLCAnZScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAorICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnaCcsICdhJywgJzEnLCAncicsICduJywgJ2QnLCAncycsICc0JywgJ1wwMDAnLAorICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAorICAncycsICdoJywgJ2EnLCAnMicsICc1JywgJzYnLCAnbScsICdzJywgJ2cnLCAnMScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3MnLCAnaCcsICdhJywgJzInLAorICAnNScsICc2JywgJ20nLCAncycsICdnJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAorICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdzJywgJ2gnLCAnYScsICcyJywgJzUnLCAnNicsICdyJywgJ24nLAorICAnZCcsICdzJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLAorICAnYScsICczJywgJzInLCAnXycsICdzJywgJ2wnLCAndycsICdwJywgJ2MnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbScsICdwJywgJ3MnLAorICAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ2MnLCAnbycsICdtJywgJ2knLCAnZScsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICdvJywgJ20nLCAnaScsICdnJywgJ2UnLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICdjJywgJ28nLCAnbScsICdpJywgJ2cnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbycsICdtJywgJ2knLCAnbCcsICdlJywgJ1wwMDAnLAorICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAorICAnYycsICdvJywgJ20nLCAnaScsICdsJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAorICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ28nLCAnbScsICdpJywgJ24nLCAnZScsICdxJywgJ1wwMDAnLAorICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAorICAnYycsICd2JywgJ3QnLCAncCcsICdkJywgJzInLCAncCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsICdpJywgJzInLAorICAncCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsICdpJywgJzInLCAncCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAorICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLAorICAncCcsICdzJywgJzInLCAncCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncycsICdzJywgJzInLCAncycsICdpJywgJ1wwMDAnLAorICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAorICAnYycsICd2JywgJ3QnLCAncycsICdzJywgJzInLCAncycsICdpJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3QnLAorICAncCcsICdkJywgJzInLCAncCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAndCcsICdwJywgJ3MnLCAnMicsICdwJywgJ2knLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3MnLCAncycsICcyJywgJ3MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3QnLAorICAncycsICdzJywgJzInLCAncycsICdpJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICd4JywgJ3AnLCAncycsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLAorICAnYScsICd4JywgJ3MnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAorICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnaScsICduJywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnaScsICduJywgJ3MnLAorICAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ20nLCAnbycsICd2JywgJ20nLCAncycsICdrJywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdoJywgJ3UnLAorICAnZicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAncicsICdjJywgJ3AnLCAncCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdjJywgJ3AnLCAncycsICdzJywgJ1wwMDAnLAorICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAorICAncicsICdzJywgJ3EnLCAncicsICd0JywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAncycsICdxJywgJ3InLCAndCcsICdzJywgJ3MnLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICdzJywgJ2YnLCAnZScsICduJywgJ2MnLCAnZScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3UnLCAnYycsICdvJywgJ20nLCAnaScsICdlJywgJ3EnLAorICAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLAorICAnXycsICd1JywgJ2MnLCAnbycsICdtJywgJ2knLCAnZycsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndScsICdjJywgJ28nLCAnbScsICdpJywgJ2cnLAorICAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ3UnLCAnYycsICdvJywgJ20nLCAnaScsICdsJywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLAorICAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd1JywgJ2MnLCAnbycsICdtJywgJ2knLAorICAnbCcsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAndScsICdjJywgJ28nLCAnbScsICdpJywgJ24nLCAnZScsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAorICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICdsJywgJ2YnLAorICAnbCcsICd1JywgJ3MnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAorICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbScsICdwJywgJ3MnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbycsICdtJywgJ2knLAorICAncycsICdkJywgJ2UnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLAorICAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbycsICdtJywgJ2knLCAncycsICdkJywgJ2cnLCAnZScsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLAorICAnbycsICdtJywgJ2knLCAncycsICdkJywgJ2cnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbycsICdtJywgJ2knLCAncycsICdkJywgJ2wnLAorICAnZScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ2MnLCAnbycsICdtJywgJ2knLCAncycsICdkJywgJ2wnLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLAorICAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAnbycsICdtJywgJ2knLAorICAncycsICdkJywgJ24nLCAnZScsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsICdkJywgJzInLCAnZCcsICdxJywgJ1wwMDAnLAorICAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLAorICAnYycsICd2JywgJ3QnLCAncCcsICdkJywgJzInLCAncCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncCcsICdzJywgJzInLAorICAnZCcsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLCAncycsICdkJywgJzInLCAncycsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAorICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLAorICAncycsICdkJywgJzInLCAncycsICdpJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3MnLCAnZCcsICcyJywgJ3MnLAorICAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3QnLCAncCcsICdkJywgJzInLCAnZCcsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAorICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICd2JywgJ3QnLAorICAndCcsICdwJywgJ3MnLCAnMicsICdkJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLAorICAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3YnLCAndCcsICd0JywgJ3MnLCAnZCcsICcyJywgJ3MnLAorICAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ2MnLCAndicsICd0JywgJ3QnLCAncycsICdkJywgJzInLCAncycsICdpJywgJzYnLCAnNCcsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2wnLAorICAnZicsICdlJywgJ24nLCAnYycsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdhJywgJ3MnLCAnaycsICdtJywgJ28nLCAndicsICdkJywgJ3EnLAorICAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLAorICAnMicsICdfJywgJ20nLCAnYScsICd4JywgJ3AnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLAorICAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAnYScsICd4JywgJ3MnLCAnZCcsICdcMDAwJywgJ18nLAorICAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLAorICAnZicsICdlJywgJ24nLCAnYycsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdpJywgJ24nLCAncCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAorICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdpJywgJ24nLAorICAncycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAorICAnMycsICcyJywgJ18nLCAnbScsICdvJywgJ3YnLCAnbScsICdzJywgJ2snLCAncCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLAorICAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdhJywgJ2MnLAorICAnaycsICdzJywgJ3MnLCAnZCcsICd3JywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAorICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdhJywgJ2MnLCAnaycsICdzJywgJ3MnLAorICAndycsICdiJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLAorICAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdhJywgJ2MnLCAnaycsICd1JywgJ3MnLCAndycsICdiJywgJzEnLAogICAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLAogICAnMycsICcyJywgJ18nLCAncCcsICdhJywgJ3UnLCAncycsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLAogICAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ2EnLCAnZCcsICdkJywgJ3cnLApAQCAtMjQ1NzYsMzAzICsyNDQ0MiwyNzUgQEAKICAgJ3AnLCAncycsICdyJywgJ2wnLCAncScsICdpJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKICAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ3InLCAnbCcsICd3JywKICAgJ2knLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKLSAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAndScsICdiJywgJ3MnLCAnYicsICcxJywgJzInLCAnOCcsICdcMDAwJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd1JywgJ2MnLCAnbycsICdtJywgJ2knLCAncycsICdkJywgJ2UnLCAncScsICdcMDAwJywKICAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKLSAgJ3AnLCAncycsICd1JywgJ2InLCAncycsICd3JywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKKyAgJ3UnLCAnYycsICdvJywgJ20nLCAnaScsICdzJywgJ2QnLCAnZycsICdlJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKICAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndScsICdjJywgJ28nLCAnbScsICdpJywKLSAgJ3MnLCAnZCcsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKLSAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd1JywgJ2MnLCAnbycsICdtJywgJ2knLCAncycsICdkJywgJ2cnLCAnZScsICdcMDAwJywKKyAgJ3MnLCAnZCcsICdnJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd1JywgJ2MnLCAnbycsICdtJywgJ2knLCAncycsICdkJywgJ2wnLCAnZScsICdcMDAwJywKICAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKLSAgJ3UnLCAnYycsICdvJywgJ20nLCAnaScsICdzJywgJ2QnLCAnZycsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKKyAgJ3UnLCAnYycsICdvJywgJ20nLCAnaScsICdzJywgJ2QnLCAnbCcsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKICAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndScsICdjJywgJ28nLCAnbScsICdpJywKLSAgJ3MnLCAnZCcsICdsJywgJ2UnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKLSAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd1JywgJ2MnLCAnbycsICdtJywgJ2knLCAncycsICdkJywgJ2wnLCAndCcsICdcMDAwJywKKyAgJ3MnLCAnZCcsICduJywgJ2UnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKKyAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAndScsICdiJywgJ3AnLCAnZCcsICdcMDAwJywKICAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKLSAgJ3UnLCAnYycsICdvJywgJ20nLCAnaScsICdzJywgJ2QnLCAnbicsICdlJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsICdzJywKLSAgJ3UnLCAnYicsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKLSAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdhJywgJ2QnLCAnZCcsICdzJywgJ3UnLCAnYicsICdwJywgJ3MnLCAnXDAwMCcsICdfJywKLSAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdoJywKLSAgJ2EnLCAnZCcsICdkJywgJ3AnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKLSAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2gnLCAnYScsICdkJywgJ2QnLCAncCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywKLSAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnaCcsICdzJywKLSAgJ3UnLCAnYicsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKLSAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdoJywgJ3MnLCAndScsICdiJywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywKLSAgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2wnLCAnZCcsICdkJywKLSAgJ3EnLCAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ20nLCAnbycsICduJywgJ2knLCAndCcsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdtJywgJ3cnLCAnYScsICdpJywKLSAgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKLSAgJzInLCAnXycsICdiJywgJ2wnLCAnZScsICduJywgJ2QnLCAndicsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdiJywgJ2wnLCAnZScsICduJywKLSAgJ2QnLCAndicsICdwJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKLSAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdkJywgJ3AnLCAncCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKLSAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZCcsICdwJywgJ3AnLCAncycsICdcMDAwJywKLSAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKLSAgJ2knLCAnbicsICdzJywgJ2UnLCAncicsICd0JywgJ3AnLCAncycsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywKLSAgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAncCcsICdzJywKLSAgJ2EnLCAnZCcsICdiJywgJ3cnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKLSAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnYycsICdrJywgJ3UnLCAncycsICdkJywKLSAgJ3cnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKLSAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2InLCAnbCcsICdlJywgJ24nLCAnZCcsICd2JywgJ2InLCAnMScsICcyJywKLSAgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKLSAgJzInLCAnXycsICdwJywgJ2gnLCAnbScsICdpJywgJ24nLCAncCcsICdvJywgJ3MnLCAndScsICd3JywgJzEnLCAnMicsICc4JywKKyAgJ2EnLCAnZCcsICdkJywgJ3MnLCAndScsICdiJywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKKyAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2gnLCAnYScsICdkJywgJ2QnLCAncCcsICdkJywKICAgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywKLSAgJ18nLCAncCcsICd0JywgJ2UnLCAncycsICd0JywgJ2MnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3QnLCAnZScsICdzJywKLSAgJ3QnLCAnbicsICd6JywgJ2MnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKLSAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3QnLCAnZScsICdzJywgJ3QnLCAneicsICcxJywKLSAgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywgJ28nLCAndScsICduJywKLSAgJ2QnLCAncCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKLSAgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ3MnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywKLSAgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnbycsICd1JywKLSAgJ24nLCAnZCcsICdzJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKLSAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3InLCAnYycsICczJywgJzInLCAnaCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywKLSAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYycsICdyJywKLSAgJ2MnLCAnMycsICcyJywgJ3MnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKLSAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAncicsICdjJywgJzMnLCAnMicsICdxJywgJ2knLCAnXDAwMCcsICdfJywKLSAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywKLSAgJ3InLCAnYycsICczJywgJzInLCAnZCcsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdjJywgJ20nLCAncCcsICdlJywgJ3MnLCAndCcsICdyJywKLSAgJ2knLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKLSAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2MnLCAnbScsICdwJywgJ2UnLCAncycsICd0JywgJ3InLCAnaScsICdhJywKLSAgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKLSAgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdjJywgJ20nLCAncCcsICdlJywgJ3MnLCAndCcsICdyJywgJ2knLCAnYycsICcxJywKLSAgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3AnLCAnYycsICdtJywgJ3AnLCAnZScsICdzJywgJ3QnLCAncicsICdpJywgJ28nLCAnMScsICcyJywKLSAgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKLSAgJzInLCAnXycsICdwJywgJ2MnLCAnbScsICdwJywgJ2UnLCAncycsICd0JywgJ3InLCAnaScsICdzJywgJzEnLCAnMicsICc4JywKLSAgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywKLSAgJ18nLCAncCcsICdjJywgJ20nLCAncCcsICdlJywgJ3MnLCAndCcsICdyJywgJ2knLCAneicsICcxJywgJzInLCAnOCcsICdcMDAwJywKKyAgJ18nLCAnaCcsICdhJywgJ2QnLCAnZCcsICdwJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKKyAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdoJywgJ3MnLCAndScsICdiJywgJ3AnLCAnZCcsICdcMDAwJywKICAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKLSAgJ3AnLCAnYycsICdtJywgJ3AnLCAnZScsICdzJywgJ3QnLCAncicsICdtJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywKLSAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdjJywKLSAgJ20nLCAncCcsICdpJywgJ3MnLCAndCcsICdyJywgJ2knLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2MnLCAnbScsICdwJywKLSAgJ2knLCAncycsICd0JywgJ3InLCAnaScsICdhJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKLSAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdjJywgJ20nLCAncCcsICdpJywKLSAgJ3MnLCAndCcsICdyJywgJ2knLCAnYycsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKLSAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYycsICdtJywgJ3AnLCAnaScsICdzJywKLSAgJ3QnLCAncicsICdpJywgJ28nLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKLSAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2MnLCAnbScsICdwJywgJ2knLCAncycsICd0JywKLSAgJ3InLCAnaScsICdzJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdjJywgJ20nLCAncCcsICdpJywgJ3MnLCAndCcsICdyJywKLSAgJ2knLCAneicsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKLSAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYycsICdtJywgJ3AnLCAnaScsICdzJywgJ3QnLCAncicsICdtJywKLSAgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKLSAgJ2EnLCAnMycsICcyJywgJ18nLCAnZScsICd4JywgJ3QnLCAncicsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKLSAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnZScsICd4JywgJ3QnLCAncicsICdxJywKLSAgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKLSAgJzInLCAnXycsICdpJywgJ24nLCAncycsICdlJywgJ3InLCAndCcsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKKyAgJ2gnLCAncycsICd1JywgJ2InLCAncCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKKyAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbCcsICdkJywgJ2QnLCAncScsICd1JywgJ1wwMDAnLCAnXycsICdfJywKKyAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdvJywKKyAgJ24nLCAnaScsICd0JywgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKKyAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ20nLCAndycsICdhJywgJ2knLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywKKyAgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2InLCAnbCcsICdlJywKKyAgJ24nLCAnZCcsICd2JywgJ3AnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKKyAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2InLCAnbCcsICdlJywgJ24nLCAnZCcsICd2JywgJ3AnLCAncycsICdcMDAwJywKKyAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKKyAgJ2QnLCAncCcsICdwJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdkJywgJ3AnLCAncCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKICAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnaScsICduJywgJ3MnLCAnZScsICdyJywKLSAgJ3QnLCAncScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKLSAgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdhJywgJ2InLCAncycsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKLSAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdhJywgJ2InLCAncycsICdkJywKLSAgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywKLSAgJ18nLCAncCcsICdhJywgJ2InLCAncycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdoJywgJ2EnLCAnZCcsICdkJywgJ2QnLCAnXDAwMCcsICdfJywKLSAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywKLSAgJ2gnLCAnYScsICdkJywgJ2QnLCAnZCcsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKLSAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnaCcsICdhJywgJ2QnLCAnZCcsICdzJywKLSAgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKLSAgJzInLCAnXycsICdwJywgJ2gnLCAnYScsICdkJywgJ2QnLCAncycsICd3JywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywKLSAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdoJywKLSAgJ2EnLCAnZCcsICdkJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKLSAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2gnLCAnYScsICdkJywgJ2QnLCAndycsICcxJywgJzInLCAnOCcsICdcMDAwJywKKyAgJ3QnLCAncCcsICdzJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKKyAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnbScsICdwJywgJ3MnLCAnYScsICdkJywgJ2InLCAndycsICcxJywKKyAgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKKyAgJzMnLCAnMicsICdfJywgJ3AnLCAnYScsICdjJywgJ2snLCAndScsICdzJywgJ2QnLCAndycsICcxJywgJzInLCAnOCcsICdcMDAwJywKICAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKLSAgJ3AnLCAnaCcsICdzJywgJ3UnLCAnYicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdoJywgJ3MnLCAndScsICdiJywgJ2QnLCAnMScsICcyJywKKyAgJ3AnLCAnYicsICdsJywgJ2UnLCAnbicsICdkJywgJ3YnLCAnYicsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywKKyAgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnaCcsICdtJywKKyAgJ2knLCAnbicsICdwJywgJ28nLCAncycsICd1JywgJ3cnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKKyAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3QnLCAnZScsICdzJywKKyAgJ3QnLCAnYycsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKKyAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAndCcsICdlJywgJ3MnLCAndCcsICduJywgJ3onLCAnYycsICcxJywKKyAgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKKyAgJzMnLCAnMicsICdfJywgJ3AnLCAndCcsICdlJywgJ3MnLCAndCcsICd6JywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywKKyAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdvJywKKyAgJ3UnLCAnbicsICdkJywgJ3AnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKKyAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3InLCAnbycsICd1JywgJ24nLCAnZCcsICdwJywgJ3MnLCAnXDAwMCcsICdfJywKKyAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdyJywKKyAgJ28nLCAndScsICduJywgJ2QnLCAncycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKKyAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncicsICdvJywgJ3UnLCAnbicsICdkJywgJ3MnLCAncycsICdcMDAwJywKKyAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKKyAgJ2MnLCAncicsICdjJywgJzMnLCAnMicsICdoJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKKyAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdjJywgJ3InLCAnYycsICczJywgJzInLCAncycsICdpJywKKyAgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywKKyAgJ18nLCAnYycsICdyJywgJ2MnLCAnMycsICcyJywgJ3EnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKKyAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2MnLCAncicsICdjJywgJzMnLCAnMicsICdkJywKKyAgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKKyAgJzInLCAnXycsICdwJywgJ2MnLCAnbScsICdwJywgJ2UnLCAncycsICd0JywgJ3InLCAnaScsICcxJywgJzInLCAnOCcsICdcMDAwJywKKyAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKKyAgJ3AnLCAnYycsICdtJywgJ3AnLCAnZScsICdzJywgJ3QnLCAncicsICdpJywgJ2EnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywKKyAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywKKyAgJ2MnLCAnbScsICdwJywgJ2UnLCAncycsICd0JywgJ3InLCAnaScsICdjJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywKKyAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdjJywKKyAgJ20nLCAncCcsICdlJywgJ3MnLCAndCcsICdyJywgJ2knLCAnbycsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywKKyAgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYycsICdtJywKKyAgJ3AnLCAnZScsICdzJywgJ3QnLCAncicsICdpJywgJ3MnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKKyAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2MnLCAnbScsICdwJywKKyAgJ2UnLCAncycsICd0JywgJ3InLCAnaScsICd6JywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKKyAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdjJywgJ20nLCAncCcsICdlJywKKyAgJ3MnLCAndCcsICdyJywgJ20nLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKKyAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2MnLCAnbScsICdwJywgJ2knLCAncycsICd0JywKKyAgJ3InLCAnaScsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKKyAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnYycsICdtJywgJ3AnLCAnaScsICdzJywgJ3QnLCAncicsICdpJywKKyAgJ2EnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2MnLCAnbScsICdwJywgJ2knLCAncycsICd0JywgJ3InLCAnaScsICdjJywKKyAgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKKyAgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdjJywgJ20nLCAncCcsICdpJywgJ3MnLCAndCcsICdyJywgJ2knLCAnbycsICcxJywKKyAgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKKyAgJzMnLCAnMicsICdfJywgJ3AnLCAnYycsICdtJywgJ3AnLCAnaScsICdzJywgJ3QnLCAncicsICdpJywgJ3MnLCAnMScsICcyJywKICAgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKLSAgJzInLCAnXycsICdwJywgJ2gnLCAncycsICd1JywgJ2InLCAncycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKLSAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdoJywgJ3MnLCAndScsICdiJywKLSAgJ3MnLCAndycsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKLSAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnaCcsICdzJywgJ3UnLCAnYicsICd3JywgJ1wwMDAnLCAnXycsICdfJywKLSAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdoJywKLSAgJ3MnLCAndScsICdiJywgJ3cnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKLSAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAnYScsICdkJywgJ2QnLCAndScsICdiJywKLSAgJ3MnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdhJywgJ2QnLCAnZCcsICd1JywgJ2InLCAncycsICd3JywgJzEnLCAnMicsICc4JywKKyAgJzInLCAnXycsICdwJywgJ2MnLCAnbScsICdwJywgJ2knLCAncycsICd0JywgJ3InLCAnaScsICd6JywgJzEnLCAnMicsICc4JywKICAgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywKLSAgJ18nLCAncCcsICdtJywgJ3UnLCAnbCcsICdoJywgJ3InLCAncycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKLSAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywgJ3UnLCAnbCcsICdoJywKLSAgJ3InLCAncycsICd3JywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2gnLCAndScsICdmJywgJ2InLCAnXDAwMCcsICdfJywKKyAgJ18nLCAncCcsICdjJywgJ20nLCAncCcsICdpJywgJ3MnLCAndCcsICdyJywgJ20nLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywKKyAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdlJywKKyAgJ3gnLCAndCcsICdyJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdlJywgJ3gnLCAndCcsICdyJywgJ3EnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywKKyAgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2knLCAnbicsICdzJywKKyAgJ2UnLCAncicsICd0JywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdpJywgJ24nLCAncycsICdlJywgJ3InLCAndCcsICdxJywgJ2knLCAnXDAwMCcsICdfJywKICAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywKLSAgJ3MnLCAnaCcsICd1JywgJ2YnLCAnYicsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKLSAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdpJywgJ2cnLCAnbicsICdiJywKKyAgJ2EnLCAnYicsICdzJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnYicsICdzJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKKyAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2EnLCAnYicsICdzJywKKyAgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKKyAgJzInLCAnXycsICdwJywgJ2gnLCAnYScsICdkJywgJ2QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKKyAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnaCcsICdhJywgJ2QnLCAnZCcsICdkJywKKyAgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKKyAgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdoJywgJ2EnLCAnZCcsICdkJywgJ3MnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywKKyAgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnaCcsICdhJywKKyAgJ2QnLCAnZCcsICdzJywgJ3cnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKKyAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2gnLCAnYScsICdkJywgJ2QnLCAndycsICdcMDAwJywKKyAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKKyAgJ3AnLCAnaCcsICdhJywgJ2QnLCAnZCcsICd3JywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKKyAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdoJywgJ3MnLCAndScsICdiJywKKyAgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKKyAgJzInLCAnXycsICdwJywgJ2gnLCAncycsICd1JywgJ2InLCAnZCcsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywKKyAgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAnaCcsICdzJywKKyAgJ3UnLCAnYicsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2gnLCAncycsICd1JywgJ2InLCAncycsICd3JywgJzEnLCAnMicsICc4JywKICAgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywKLSAgJ18nLCAncCcsICdzJywgJ2knLCAnZycsICduJywgJ2InLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKKyAgJ18nLCAncCcsICdoJywgJ3MnLCAndScsICdiJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKKyAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ2gnLCAncycsICd1JywgJ2InLCAndycsICcxJywKKyAgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKKyAgJzMnLCAnMicsICdfJywgJ3AnLCAnbScsICdhJywgJ2QnLCAnZCcsICd1JywgJ2InLCAncycsICd3JywgJ1wwMDAnLCAnXycsICdfJywKKyAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdtJywKKyAgJ2EnLCAnZCcsICdkJywgJ3UnLCAnYicsICdzJywgJ3cnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKKyAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAndScsICdsJywKKyAgJ2gnLCAncicsICdzJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ20nLCAndScsICdsJywgJ2gnLCAncicsICdzJywgJ3cnLCAnMScsICcyJywKKyAgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKKyAgJzInLCAnXycsICdwJywgJ3MnLCAnaCcsICd1JywgJ2YnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKKyAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdoJywgJ3UnLCAnZicsICdiJywKKyAgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKKyAgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywgJ2knLCAnZycsICduJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKICAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnaScsICdnJywKLSAgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdpJywgJ2cnLCAnbicsICdkJywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywKKyAgJ24nLCAnYicsICcxJywgJzInLCAnOCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKKyAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3AnLCAncycsICdpJywgJ2cnLCAnbicsICdkJywgJ1wwMDAnLCAnXycsICdfJywKICAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAncCcsICdzJywKLSAgJ2knLCAnZycsICduJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKLSAgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnaScsICdnJywgJ24nLCAndycsICcxJywgJzInLCAnOCcsICdcMDAwJywKKyAgJ2knLCAnZycsICduJywgJ2QnLCAnMScsICcyJywgJzgnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKKyAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdwJywgJ3MnLCAnaScsICdnJywgJ24nLCAndycsICdcMDAwJywKICAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKLSAgJ2InLCAnZScsICd4JywgJ3QnLCAncicsICdpJywgJ18nLCAndScsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICdiJywgJ2UnLCAneCcsICd0JywKLSAgJ3InLCAnaScsICdfJywgJ3UnLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndCcsICdwJywgJ2EnLCAndScsICdzJywgJ2UnLCAnXDAwMCcsICdfJywKLSAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd1JywKLSAgJ20nLCAnbycsICduJywgJ2knLCAndCcsICdvJywgJ3InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKLSAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd1JywgJ20nLCAndycsICdhJywgJ2knLCAndCcsICdcMDAwJywKLSAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKLSAgJ3YnLCAnYycsICd2JywgJ3QnLCAncCcsICdoJywgJzInLCAncCcsICdzJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKKyAgJ3AnLCAncycsICdpJywgJ2cnLCAnbicsICd3JywgJzEnLCAnMicsICc4JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKKyAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAnYicsICdlJywgJ3gnLCAndCcsICdyJywKKyAgJ2knLCAnXycsICd1JywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKKyAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ2InLCAnZScsICd4JywgJ3QnLCAncicsICdpJywgJ18nLCAndScsICc2JywKKyAgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKKyAgJzInLCAnXycsICd0JywgJ3AnLCAnYScsICd1JywgJ3MnLCAnZScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKKyAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3UnLCAnbScsICdvJywgJ24nLCAnaScsICd0JywKKyAgJ28nLCAncicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKKyAgJzMnLCAnMicsICdfJywgJ3UnLCAnbScsICd3JywgJ2EnLCAnaScsICd0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKICAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdjJywgJ3YnLCAndCcsICdwJywKLSAgJ2gnLCAnMicsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKLSAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2MnLCAndicsICd0JywgJ3AnLCAncycsICcyJywKLSAgJ3AnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3YnLCAnYycsICd2JywgJ3QnLCAncCcsICdzJywgJzInLCAncCcsICdoJywgJzInLCAnNScsICc2JywKLSAgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywKLSAgJ18nLCAndicsICdnJywgJ2YnLCAnMicsICdwJywgJzgnLCAnYScsICdmJywgJ2YnLCAnaScsICduJywgJ2UnLCAnaScsICduJywKLSAgJ3YnLCAncScsICdiJywgJ18nLCAndicsICcxJywgJzYnLCAncScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKLSAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdnJywgJ2YnLCAnMicsICdwJywKLSAgJzgnLCAnYScsICdmJywgJ2YnLCAnaScsICduJywgJ2UnLCAnaScsICduJywgJ3YnLCAncScsICdiJywgJ18nLCAndicsICczJywKLSAgJzInLCAncScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKLSAgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdnJywgJ2YnLCAnMicsICdwJywgJzgnLCAnYScsICdmJywgJ2YnLCAnaScsICduJywKLSAgJ2UnLCAnaScsICduJywgJ3YnLCAncScsICdiJywgJ18nLCAndicsICc2JywgJzQnLCAncScsICdpJywgJ1wwMDAnLCAnXycsICdfJywKLSAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdnJywKLSAgJ2YnLCAnMicsICdwJywgJzgnLCAnYScsICdmJywgJ2YnLCAnaScsICduJywgJ2UnLCAncScsICdiJywgJ18nLCAndicsICcxJywKLSAgJzYnLCAncScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKLSAgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdnJywgJ2YnLCAnMicsICdwJywgJzgnLCAnYScsICdmJywgJ2YnLCAnaScsICduJywKLSAgJ2UnLCAncScsICdiJywgJ18nLCAndicsICczJywgJzInLCAncScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKLSAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdnJywgJ2YnLCAnMicsICdwJywKLSAgJzgnLCAnYScsICdmJywgJ2YnLCAnaScsICduJywgJ2UnLCAncScsICdiJywgJ18nLCAndicsICc2JywgJzQnLCAncScsICdpJywKLSAgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywKLSAgJ18nLCAndicsICdnJywgJ2YnLCAnMicsICdwJywgJzgnLCAnbScsICd1JywgJ2wnLCAnYicsICdfJywgJ3YnLCAnMScsICc2JywKLSAgJ3EnLCAnaScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3YnLCAnZycsICdmJywgJzInLCAncCcsICc4JywgJ20nLCAndScsICdsJywgJ2InLCAnXycsICd2JywKKyAgJ2gnLCAnMicsICdwJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2MnLCAndicsICd0JywgJ3AnLCAnaCcsICcyJywgJ3AnLCAncycsICcyJywKKyAgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKKyAgJzMnLCAnMicsICdfJywgJ3YnLCAnYycsICd2JywgJ3QnLCAncCcsICdzJywgJzInLCAncCcsICdoJywgJ1wwMDAnLCAnXycsICdfJywKKyAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdjJywKKyAgJ3YnLCAndCcsICdwJywgJ3MnLCAnMicsICdwJywgJ2gnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKKyAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2cnLCAnZicsICcyJywKKyAgJ3AnLCAnOCcsICdhJywgJ2YnLCAnZicsICdpJywgJ24nLCAnZScsICdpJywgJ24nLCAndicsICdxJywgJ2InLCAnXycsICd2JywKKyAgJzEnLCAnNicsICdxJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2cnLCAnZicsICcyJywgJ3AnLCAnOCcsICdhJywgJ2YnLCAnZicsICdpJywKKyAgJ24nLCAnZScsICdpJywgJ24nLCAndicsICdxJywgJ2InLCAnXycsICd2JywgJzMnLCAnMicsICdxJywgJ2knLCAnXDAwMCcsICdfJywKKyAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywKKyAgJ2cnLCAnZicsICcyJywgJ3AnLCAnOCcsICdhJywgJ2YnLCAnZicsICdpJywgJ24nLCAnZScsICdpJywgJ24nLCAndicsICdxJywKKyAgJ2InLCAnXycsICd2JywgJzYnLCAnNCcsICdxJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKKyAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2cnLCAnZicsICcyJywgJ3AnLCAnOCcsICdhJywKKyAgJ2YnLCAnZicsICdpJywgJ24nLCAnZScsICdxJywgJ2InLCAnXycsICd2JywgJzEnLCAnNicsICdxJywgJ2knLCAnXDAwMCcsICdfJywKKyAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywKKyAgJ2cnLCAnZicsICcyJywgJ3AnLCAnOCcsICdhJywgJ2YnLCAnZicsICdpJywgJ24nLCAnZScsICdxJywgJ2InLCAnXycsICd2JywKICAgJzMnLCAnMicsICdxJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKLSAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2cnLCAnZicsICcyJywgJ3AnLCAnOCcsICdtJywgJ3UnLCAnbCcsICdiJywKLSAgJ18nLCAndicsICc2JywgJzQnLCAncScsICdpJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndycsICdiJywgJ2knLCAnbicsICd2JywgJ2QnLCAnXDAwMCcsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2cnLCAnZicsICcyJywgJ3AnLCAnOCcsICdhJywgJ2YnLCAnZicsICdpJywKKyAgJ24nLCAnZScsICdxJywgJ2InLCAnXycsICd2JywgJzYnLCAnNCcsICdxJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKKyAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2cnLCAnZicsICcyJywKKyAgJ3AnLCAnOCcsICdtJywgJ3UnLCAnbCcsICdiJywgJ18nLCAndicsICcxJywgJzYnLCAncScsICdpJywgJ1wwMDAnLCAnXycsICdfJywKKyAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdnJywKKyAgJ2YnLCAnMicsICdwJywgJzgnLCAnbScsICd1JywgJ2wnLCAnYicsICdfJywgJ3YnLCAnMycsICcyJywgJ3EnLCAnaScsICdcMDAwJywKKyAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKKyAgJ3YnLCAnZycsICdmJywgJzInLCAncCcsICc4JywgJ20nLCAndScsICdsJywgJ2InLCAnXycsICd2JywgJzYnLCAnNCcsICdxJywKKyAgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKKyAgJzInLCAnXycsICd3JywgJ2InLCAnaScsICduJywgJ3YnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKKyAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3cnLCAnYicsICduJywgJ28nLCAnaScsICduJywKKyAgJ3YnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKKyAgJzMnLCAnMicsICdfJywgJ3cnLCAncicsICdmJywgJ3MnLCAnYicsICdhJywgJ3MnLCAnZScsICczJywgJzInLCAnXDAwMCcsICdfJywKICAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd3JywKLSAgJ2InLCAnbicsICdvJywgJ2knLCAnbicsICd2JywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKLSAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd3JywgJ3InLCAnZicsICdzJywgJ2InLCAnYScsICdzJywKLSAgJ2UnLCAnMycsICcyJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKLSAgJ2EnLCAnMycsICcyJywgJ18nLCAndycsICdyJywgJ2YnLCAncycsICdiJywgJ2EnLCAncycsICdlJywgJzYnLCAnNCcsICdcMDAwJywKKyAgJ3InLCAnZicsICdzJywgJ2InLCAnYScsICdzJywgJ2UnLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKKyAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndycsICdyJywgJ2cnLCAncycsICdiJywKKyAgJ2EnLCAncycsICdlJywgJzMnLCAnMicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKKyAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3cnLCAncicsICdnJywgJ3MnLCAnYicsICdhJywgJ3MnLCAnZScsICc2JywKKyAgJzQnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKKyAgJzInLCAnXycsICd3JywgJ3InLCAncCcsICdrJywgJ3InLCAndScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKKyAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3cnLCAncicsICdzJywgJ3MnLCAnZCcsICdcMDAwJywKICAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKLSAgJ3cnLCAncicsICdnJywgJ3MnLCAnYicsICdhJywgJ3MnLCAnZScsICczJywgJzInLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd3JywgJ3InLCAnZycsICdzJywKLSAgJ2InLCAnYScsICdzJywgJ2UnLCAnNicsICc0JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndycsICdyJywgJ3AnLCAnaycsICdyJywgJ3UnLCAnXDAwMCcsICdfJywKLSAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd3JywKLSAgJ3InLCAncycsICdzJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKLSAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd3JywgJ3InLCAncycsICdzJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd3JywgJ3InLCAndScsICdzJywKLSAgJ3MnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3cnLCAncicsICd1JywgJ3MnLCAncycsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKLSAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAneCcsICdhJywgJ2InLCAnbycsICdyJywKLSAgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKLSAgJzInLCAnXycsICd4JywgJ2InLCAnZScsICdnJywgJ2knLCAnbicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKLSAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3gnLCAnZScsICduJywgJ2QnLCAnXDAwMCcsICdfJywKKyAgJ3cnLCAncicsICdzJywgJ3MnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKKyAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3cnLCAncicsICd1JywgJ3MnLCAncycsICdkJywgJ1wwMDAnLCAnXycsICdfJywKKyAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndycsICdyJywKKyAgJ3UnLCAncycsICdzJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd4JywgJ2EnLCAnYicsICdvJywgJ3InLCAndCcsICdcMDAwJywgJ18nLCAnXycsICdiJywKKyAgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3gnLCAnYicsICdlJywKKyAgJ2cnLCAnaScsICduJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKKyAgJ2EnLCAnMycsICcyJywgJ18nLCAneCcsICdlJywgJ24nLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKKyAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAnZicsICdyJywgJ2MnLCAneicsICdwJywKKyAgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKKyAgJzInLCAnXycsICd2JywgJ2YnLCAncicsICdjJywgJ3onLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywKKyAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdmJywKKyAgJ3InLCAnYycsICd6JywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKKyAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAnZicsICdyJywgJ2MnLCAneicsICdwJywgJ3MnLCAnMicsICc1JywKKyAgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKKyAgJzInLCAnXycsICd2JywgJ2YnLCAncicsICdjJywgJ3onLCAncycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKKyAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdmJywgJ3InLCAnYycsICd6JywKKyAgJ3MnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKKyAgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICdpJywgJ2wnLCAnMicsICdwJywgJ2QnLCAnXDAwMCcsICdfJywKICAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywKLSAgJ2YnLCAncicsICdjJywgJ3onLCAncCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdmJywgJ3InLCAnYycsICd6JywgJ3AnLCAnZCcsICcyJywKLSAgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3YnLCAnZicsICdyJywgJ2MnLCAneicsICdwJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ2YnLCAncicsICdjJywKLSAgJ3onLCAncCcsICdzJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdmJywgJ3InLCAnYycsICd6JywgJ3MnLCAnZCcsICdcMDAwJywKLSAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKLSAgJ3YnLCAnZicsICdyJywgJ2MnLCAneicsICdzJywgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKLSAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnYycsICdvJywgJ20nLCAnYicsICdcMDAwJywKLSAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKLSAgJ3YnLCAncCcsICdjJywgJ28nLCAnbScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2MnLCAnbycsICdtJywgJ3EnLCAnXDAwMCcsICdfJywKLSAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywKLSAgJ3AnLCAnYycsICdvJywgJ20nLCAndScsICdiJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2MnLCAnbycsICdtJywgJ3UnLCAnZCcsICdcMDAwJywKLSAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKLSAgJ3YnLCAncCcsICdjJywgJ28nLCAnbScsICd1JywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKLSAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnYycsICdvJywgJ20nLCAndScsICd3JywKLSAgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywKLSAgJ18nLCAndicsICdwJywgJ2MnLCAnbycsICdtJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKLSAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsICdsJywKLSAgJzInLCAncCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKLSAgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2UnLCAncicsICdtJywgJ2knLCAnbCcsICcyJywgJ3AnLCAnZCcsICcyJywKLSAgJzUnLCAnNicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICdpJywgJ2wnLCAnMicsICdwJywgJ3MnLCAnXDAwMCcsICdfJywKLSAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywKLSAgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsICdsJywgJzInLCAncCcsICdzJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywKKyAgJ3AnLCAnZScsICdyJywgJ20nLCAnaScsICdsJywgJzInLCAncCcsICdkJywgJzInLCAnNScsICc2JywgJ1wwMDAnLCAnXycsICdfJywKICAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywKLSAgJ2gnLCAnYScsICdkJywgJ2QnLCAnYicsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2gnLCAnYScsICdkJywgJ2QnLCAnYicsICdxJywKLSAgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywKLSAgJ18nLCAndicsICdwJywgJ2gnLCAnYScsICdkJywgJ2QnLCAnYicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKLSAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2gnLCAnYScsICdkJywKLSAgJ2QnLCAnZCcsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKLSAgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2gnLCAnYScsICdkJywgJ2QnLCAndScsICdiJywgJ2QnLCAnXDAwMCcsICdfJywKKyAgJ2UnLCAncicsICdtJywgJ2knLCAnbCcsICcyJywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKKyAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdlJywgJ3InLCAnbScsICdpJywKKyAgJ2wnLCAnMicsICdwJywgJ3MnLCAnMicsICc1JywgJzYnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKKyAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnaCcsICdhJywgJ2QnLCAnZCcsICdiJywKKyAgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKKyAgJzInLCAnXycsICd2JywgJ3AnLCAnaCcsICdhJywgJ2QnLCAnZCcsICdiJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKKyAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnaCcsICdhJywKKyAgJ2QnLCAnZCcsICdiJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnaCcsICdhJywgJ2QnLCAnZCcsICdkJywgJ3EnLCAnXDAwMCcsICdfJywKICAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywKLSAgJ3AnLCAnaCcsICdhJywgJ2QnLCAnZCcsICd1JywgJ2InLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKKyAgJ3AnLCAnaCcsICdhJywgJ2QnLCAnZCcsICd1JywgJ2InLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKICAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdoJywgJ2EnLCAnZCcsICdkJywKLSAgJ3UnLCAnYicsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKLSAgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2gnLCAnYScsICdkJywgJ2QnLCAndScsICdkJywgJ3EnLCAnXDAwMCcsICdfJywKKyAgJ3UnLCAnYicsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKKyAgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2gnLCAnYScsICdkJywgJ2QnLCAndScsICdiJywgJ3cnLCAnXDAwMCcsICdfJywKICAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywKLSAgJ3AnLCAnaCcsICdhJywgJ2QnLCAnZCcsICd1JywgJ3cnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKKyAgJ3AnLCAnaCcsICdhJywgJ2QnLCAnZCcsICd1JywgJ2QnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKICAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdoJywgJ2EnLCAnZCcsICdkJywKLSAgJ3UnLCAndycsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKLSAgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2gnLCAnYScsICdkJywgJ2QnLCAndycsICdkJywgJ1wwMDAnLCAnXycsICdfJywKLSAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywKLSAgJ2gnLCAnYScsICdkJywgJ2QnLCAndycsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2gnLCAncycsICd1JywgJ2InLCAnYicsICd3JywKLSAgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywKLSAgJ18nLCAndicsICdwJywgJ2gnLCAncycsICd1JywgJ2InLCAnZCcsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKLSAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2gnLCAncycsICd1JywKLSAgJ2InLCAndycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKLSAgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ20nLCAnYScsICdjJywgJ3MnLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywKLSAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywKLSAgJ20nLCAnYScsICdjJywgJ3MnLCAnZCcsICdxJywgJ2gnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKLSAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnbScsICdhJywgJ2MnLCAncycsICdkJywKLSAgJ3EnLCAnbCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdtJywgJ2EnLCAnYycsICdzJywgJ3MnLCAnZCcsICdkJywgJ1wwMDAnLCAnXycsICdfJywKLSAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywKLSAgJ20nLCAnYScsICdjJywgJ3MnLCAncycsICdkJywgJ3EnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKLSAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdtJywgJ2EnLCAnYycsICdzJywKLSAgJ3MnLCAnZCcsICdxJywgJ2wnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKLSAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnbScsICdhJywgJ2MnLCAncycsICdzJywgJ3cnLCAnZCcsICdcMDAwJywKLSAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKLSAgJ3YnLCAncCcsICdtJywgJ2EnLCAnYycsICdzJywgJ3MnLCAndycsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKLSAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ20nLCAnYScsICdjJywKLSAgJ3MnLCAndycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKLSAgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ20nLCAnYScsICdjJywgJ3MnLCAndycsICd3JywgJ1wwMDAnLCAnXycsICdfJywKLSAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywKLSAgJ20nLCAnYScsICdkJywgJ2MnLCAncycsICdzJywgJ3cnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKLSAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdtJywgJ2EnLCAnZCcsICdjJywKLSAgJ3MnLCAndycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKLSAgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3AnLCAnZScsICdyJywgJ20nLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncicsICdvJywKLSAgJ3QnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdyJywgJ28nLCAndCcsICdiJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncicsICdvJywKLSAgJ3QnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdyJywgJ28nLCAndCcsICdkJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncicsICdvJywKLSAgJ3QnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdyJywgJ28nLCAndCcsICdxJywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncicsICdvJywKLSAgJ3QnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdyJywgJ28nLCAndCcsICd3JywgJ2knLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKLSAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywKLSAgJ2EnLCAnYicsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKLSAgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdzJywgJ2gnLCAnYScsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKLSAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsICdhJywKKyAgJ3UnLCAndycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKKyAgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ2gnLCAnYScsICdkJywgJ2QnLCAndScsICd3JywgJ3EnLCAnXDAwMCcsICdfJywKKyAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywKKyAgJ3AnLCAnaCcsICdhJywgJ2QnLCAnZCcsICd3JywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKKyAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnaCcsICdhJywgJ2QnLCAnZCcsICd3JywKICAgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKLSAgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ2EnLCAndycsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywKLSAgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdzJywgJ2gnLCAnbCcsICdiJywKLSAgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywKLSAgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsICdsJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKLSAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ2wnLCAncScsICdcMDAwJywKKyAgJzInLCAnXycsICd2JywgJ3AnLCAnaCcsICdzJywgJ3UnLCAnYicsICdiJywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKKyAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnaCcsICdzJywKKyAgJ3UnLCAnYicsICdkJywgJ3EnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnaCcsICdzJywgJ3UnLCAnYicsICd3JywgJ2QnLCAnXDAwMCcsICdfJywKKyAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywKKyAgJ3AnLCAnbScsICdhJywgJ2MnLCAncycsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKKyAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnbScsICdhJywgJ2MnLCAncycsICdkJywKKyAgJ3EnLCAnaCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKKyAgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdtJywgJ2EnLCAnYycsICdzJywgJ2QnLCAncScsICdsJywgJ1wwMDAnLCAnXycsICdfJywKKyAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywKKyAgJ20nLCAnYScsICdjJywgJ3MnLCAncycsICdkJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKKyAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnbScsICdhJywgJ2MnLCAncycsICdzJywKKyAgJ2QnLCAncScsICdoJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKKyAgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ20nLCAnYScsICdjJywgJ3MnLCAncycsICdkJywgJ3EnLCAnbCcsICdcMDAwJywKICAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywKLSAgJ3YnLCAncCcsICdzJywgJ2gnLCAnbCcsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywKLSAgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAneCcsICd0JywgJ2UnLCAncycsICd0JywgJ1wwMDAnLCAnXycsICdfJywKLSAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdiJywgJ2knLCAndCcsICdyJywgJ2UnLCAndicsICdcMDAwJywKLSAgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnZycsICdlJywgJ3QnLCAnaScsICdkJywKLSAgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdnJywgJ2UnLCAndCcsICdwJywKLSAgJ3MnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ3MnLCAnZScsICd0JywKLSAgJ3AnLCAncycsICdcMDAwJywKKyAgJ3YnLCAncCcsICdtJywgJ2EnLCAnYycsICdzJywgJ3MnLCAndycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKKyAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ20nLCAnYScsICdjJywKKyAgJ3MnLCAncycsICd3JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnbScsICdhJywgJ2MnLCAncycsICd3JywgJ2QnLCAnXDAwMCcsICdfJywKKyAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywKKyAgJ3AnLCAnbScsICdhJywgJ2MnLCAncycsICd3JywgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKKyAgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAnbScsICdhJywgJ2QnLCAnYycsICdzJywKKyAgJ3MnLCAndycsICdkJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKKyAgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ20nLCAnYScsICdkJywgJ2MnLCAncycsICd3JywgJ2QnLCAnXDAwMCcsICdfJywKKyAgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywKKyAgJ3AnLCAncCcsICdlJywgJ3InLCAnbScsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywKKyAgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdzJywgJ2gnLCAnYScsICdiJywgJ1wwMDAnLCAnXycsICdfJywKKyAgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywKKyAgJ3MnLCAnaCcsICdhJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywKKyAgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywgJ2EnLCAncScsICdcMDAwJywgJ18nLCAnXycsICdiJywKKyAgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdzJywKKyAgJ2gnLCAnYScsICd3JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywKKyAgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsICdsJywgJ2InLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKKyAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywgJzInLCAnXycsICd2JywgJ3AnLCAncycsICdoJywKKyAgJ2wnLCAnZCcsICdcMDAwJywgJ18nLCAnXycsICdiJywgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAnaScsICdhJywKKyAgJzMnLCAnMicsICdfJywgJ3YnLCAncCcsICdzJywgJ2gnLCAnbCcsICdxJywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKKyAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdpJywgJ2EnLCAnMycsICcyJywgJ18nLCAndicsICdwJywgJ3MnLCAnaCcsICdsJywKKyAgJ3cnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2knLCAnYScsICczJywKKyAgJzInLCAnXycsICd4JywgJ3QnLCAnZScsICdzJywgJ3QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywgJ2knLCAnbCcsICd0JywKKyAgJ2knLCAnbicsICdfJywgJ2InLCAnaScsICd0JywgJ3InLCAnZScsICd2JywgJ1wwMDAnLCAnXycsICdfJywgJ2InLCAndScsICdpJywKKyAgJ2wnLCAndCcsICdpJywgJ24nLCAnXycsICdnJywgJ2UnLCAndCcsICdpJywgJ2QnLCAnXDAwMCcsICdfJywgJ18nLCAnYicsICd1JywKKyAgJ2knLCAnbCcsICd0JywgJ2knLCAnbicsICdfJywgJ2cnLCAnZScsICd0JywgJ3AnLCAncycsICdcMDAwJywgJ18nLCAnXycsICdiJywKKyAgJ3UnLCAnaScsICdsJywgJ3QnLCAnaScsICduJywgJ18nLCAncycsICdlJywgJ3QnLCAncCcsICdzJywgJ1wwMDAnLAogICB9OwogCiAgIHN0cnVjdCBCdWlsdGluRW50cnkgewpAQCAtMjQ5NDYsNDkgKzI0Nzg0LDUxIEBACiAgICAgICB7SW50cmluc2ljOjphbWRnY25faW1wbGljaXRhcmdfcHRyLCA4NzV9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX2ltcGxpY2l0YXJnX3B0cgogICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX2ludGVycF9tb3YsIDkwOH0sIC8vIF9fYnVpbHRpbl9hbWRnY25faW50ZXJwX21vdgogICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX2ludGVycF9wMSwgOTM2fSwgLy8gX19idWlsdGluX2FtZGdjbl9pbnRlcnBfcDEKLSAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9pbnRlcnBfcDIsIDk2M30sIC8vIF9fYnVpbHRpbl9hbWRnY25faW50ZXJwX3AyCi0gICAgICB7SW50cmluc2ljOjphbWRnY25fa2VybmFyZ19zZWdtZW50X3B0ciwgOTkwfSwgLy8gX19idWlsdGluX2FtZGdjbl9rZXJuYXJnX3NlZ21lbnRfcHRyCi0gICAgICB7SW50cmluc2ljOjphbWRnY25fbGVycCwgMTAyN30sIC8vIF9fYnVpbHRpbl9hbWRnY25fbGVycAotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX21iY250X2hpLCAxMDQ5fSwgLy8gX19idWlsdGluX2FtZGdjbl9tYmNudF9oaQotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX21iY250X2xvLCAxMDc1fSwgLy8gX19idWlsdGluX2FtZGdjbl9tYmNudF9sbwotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX21xc2FkX3BrX3UxNl91OCwgMTEwMX0sIC8vIF9fYnVpbHRpbl9hbWRnY25fbXFzYWRfcGtfdTE2X3U4Ci0gICAgICB7SW50cmluc2ljOjphbWRnY25fbXFzYWRfdTMyX3U4LCAxMTM0fSwgLy8gX19idWlsdGluX2FtZGdjbl9tcXNhZF91MzJfdTgKLSAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9tc2FkX3U4LCAxMTY0fSwgLy8gX19idWlsdGluX2FtZGdjbl9tc2FkX3U4Ci0gICAgICB7SW50cmluc2ljOjphbWRnY25fcXNhZF9wa191MTZfdTgsIDExODl9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3FzYWRfcGtfdTE2X3U4Ci0gICAgICB7SW50cmluc2ljOjphbWRnY25fcXVldWVfcHRyLCAxMjIxfSwgLy8gX19idWlsdGluX2FtZGdjbl9xdWV1ZV9wdHIKLSAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9yY3BfbGVnYWN5LCAxMjQ4fSwgLy8gX19idWlsdGluX2FtZGdjbl9yY3BfbGVnYWN5Ci0gICAgICB7SW50cmluc2ljOjphbWRnY25fcmVhZGZpcnN0bGFuZSwgMTI3Nn0sIC8vIF9fYnVpbHRpbl9hbWRnY25fcmVhZGZpcnN0bGFuZQotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3JlYWRsYW5lLCAxMzA3fSwgLy8gX19idWlsdGluX2FtZGdjbl9yZWFkbGFuZQotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3JzcV9sZWdhY3ksIDEzMzN9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3JzcV9sZWdhY3kKLSAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9zX2JhcnJpZXIsIDEzNjF9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3NfYmFycmllcgotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3NfZGNhY2hlX2ludiwgMTM4OH0sIC8vIF9fYnVpbHRpbl9hbWRnY25fc19kY2FjaGVfaW52Ci0gICAgICB7SW50cmluc2ljOjphbWRnY25fc19kY2FjaGVfaW52X3ZvbCwgMTQxOH0sIC8vIF9fYnVpbHRpbl9hbWRnY25fc19kY2FjaGVfaW52X3ZvbAotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3NfZGNhY2hlX3diLCAxNDUyfSwgLy8gX19idWlsdGluX2FtZGdjbl9zX2RjYWNoZV93YgotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3NfZGNhY2hlX3diX3ZvbCwgMTQ4MX0sIC8vIF9fYnVpbHRpbl9hbWRnY25fc19kY2FjaGVfd2Jfdm9sCi0gICAgICB7SW50cmluc2ljOjphbWRnY25fc19kZWNwZXJmbGV2ZWwsIDE1MTR9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3NfZGVjcGVyZmxldmVsCi0gICAgICB7SW50cmluc2ljOjphbWRnY25fc19nZXRwYywgMTU0Nn0sIC8vIF9fYnVpbHRpbl9hbWRnY25fc19nZXRwYwotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3NfZ2V0cmVnLCAxNTcxfSwgLy8gX19idWlsdGluX2FtZGdjbl9zX2dldHJlZwotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3NfaW5jcGVyZmxldmVsLCAxNTk3fSwgLy8gX19idWlsdGluX2FtZGdjbl9zX2luY3BlcmZsZXZlbAotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3NfbWVtcmVhbHRpbWUsIDE2Mjl9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3NfbWVtcmVhbHRpbWUKLSAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9zX21lbXRpbWUsIDE2NjB9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3NfbWVtdGltZQotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3Nfc2VuZG1zZywgMTY4N30sIC8vIF9fYnVpbHRpbl9hbWRnY25fc19zZW5kbXNnCi0gICAgICB7SW50cmluc2ljOjphbWRnY25fc19zZW5kbXNnaGFsdCwgMTcxNH0sIC8vIF9fYnVpbHRpbl9hbWRnY25fc19zZW5kbXNnaGFsdAotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3Nfc2xlZXAsIDE3NDV9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3Nfc2xlZXAKLSAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9zX3dhaXRjbnQsIDE3NzB9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3Nfd2FpdGNudAotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3NhZF9oaV91OCwgMTc5N30sIC8vIF9fYnVpbHRpbl9hbWRnY25fc2FkX2hpX3U4Ci0gICAgICB7SW50cmluc2ljOjphbWRnY25fc2FkX3UxNiwgMTgyNH0sIC8vIF9fYnVpbHRpbl9hbWRnY25fc2FkX3UxNgotICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3NhZF91OCwgMTg0OX0sIC8vIF9fYnVpbHRpbl9hbWRnY25fc2FkX3U4Ci0gICAgICB7SW50cmluc2ljOjphbWRnY25fc2RvdDIsIDE4NzN9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3Nkb3QyCi0gICAgICB7SW50cmluc2ljOjphbWRnY25fc2RvdDQsIDE4OTZ9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3Nkb3Q0Ci0gICAgICB7SW50cmluc2ljOjphbWRnY25fc2RvdDgsIDE5MTl9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3Nkb3Q4Ci0gICAgICB7SW50cmluc2ljOjphbWRnY25fdWRvdDIsIDE5NDJ9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3Vkb3QyCi0gICAgICB7SW50cmluc2ljOjphbWRnY25fdWRvdDQsIDE5NjV9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3Vkb3Q0Ci0gICAgICB7SW50cmluc2ljOjphbWRnY25fdWRvdDgsIDE5ODh9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3Vkb3Q4Ci0gICAgICB7SW50cmluc2ljOjphbWRnY25fd2F2ZV9iYXJyaWVyLCAyMDExfSwgLy8gX19idWlsdGluX2FtZGdjbl93YXZlX2JhcnJpZXIKLSAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl93b3JrZ3JvdXBfaWRfeCwgMjA0MX0sIC8vIF9fYnVpbHRpbl9hbWRnY25fd29ya2dyb3VwX2lkX3gKLSAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl93b3JrZ3JvdXBfaWRfeSwgMjA3M30sIC8vIF9fYnVpbHRpbl9hbWRnY25fd29ya2dyb3VwX2lkX3kKLSAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl93b3JrZ3JvdXBfaWRfeiwgMjEwNX0sIC8vIF9fYnVpbHRpbl9hbWRnY25fd29ya2dyb3VwX2lkX3oKLSAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl93cml0ZWxhbmUsIDIxMzd9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3dyaXRlbGFuZQorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX2ludGVycF9wMV9mMTYsIDk2M30sIC8vIF9fYnVpbHRpbl9hbWRnY25faW50ZXJwX3AxX2YxNgorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX2ludGVycF9wMiwgOTk0fSwgLy8gX19idWlsdGluX2FtZGdjbl9pbnRlcnBfcDIKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9pbnRlcnBfcDJfZjE2LCAxMDIxfSwgLy8gX19idWlsdGluX2FtZGdjbl9pbnRlcnBfcDJfZjE2CisgICAgICB7SW50cmluc2ljOjphbWRnY25fa2VybmFyZ19zZWdtZW50X3B0ciwgMTA1Mn0sIC8vIF9fYnVpbHRpbl9hbWRnY25fa2VybmFyZ19zZWdtZW50X3B0cgorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX2xlcnAsIDEwODl9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX2xlcnAKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9tYmNudF9oaSwgMTExMX0sIC8vIF9fYnVpbHRpbl9hbWRnY25fbWJjbnRfaGkKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9tYmNudF9sbywgMTEzN30sIC8vIF9fYnVpbHRpbl9hbWRnY25fbWJjbnRfbG8KKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9tcXNhZF9wa191MTZfdTgsIDExNjN9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX21xc2FkX3BrX3UxNl91OAorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX21xc2FkX3UzMl91OCwgMTE5Nn0sIC8vIF9fYnVpbHRpbl9hbWRnY25fbXFzYWRfdTMyX3U4CisgICAgICB7SW50cmluc2ljOjphbWRnY25fbXNhZF91OCwgMTIyNn0sIC8vIF9fYnVpbHRpbl9hbWRnY25fbXNhZF91OAorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3FzYWRfcGtfdTE2X3U4LCAxMjUxfSwgLy8gX19idWlsdGluX2FtZGdjbl9xc2FkX3BrX3UxNl91OAorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3F1ZXVlX3B0ciwgMTI4M30sIC8vIF9fYnVpbHRpbl9hbWRnY25fcXVldWVfcHRyCisgICAgICB7SW50cmluc2ljOjphbWRnY25fcmNwX2xlZ2FjeSwgMTMxMH0sIC8vIF9fYnVpbHRpbl9hbWRnY25fcmNwX2xlZ2FjeQorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3JlYWRmaXJzdGxhbmUsIDEzMzh9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3JlYWRmaXJzdGxhbmUKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9yZWFkbGFuZSwgMTM2OX0sIC8vIF9fYnVpbHRpbl9hbWRnY25fcmVhZGxhbmUKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9yc3FfbGVnYWN5LCAxMzk1fSwgLy8gX19idWlsdGluX2FtZGdjbl9yc3FfbGVnYWN5CisgICAgICB7SW50cmluc2ljOjphbWRnY25fc19iYXJyaWVyLCAxNDIzfSwgLy8gX19idWlsdGluX2FtZGdjbl9zX2JhcnJpZXIKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9zX2RjYWNoZV9pbnYsIDE0NTB9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3NfZGNhY2hlX2ludgorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3NfZGNhY2hlX2ludl92b2wsIDE0ODB9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3NfZGNhY2hlX2ludl92b2wKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9zX2RjYWNoZV93YiwgMTUxNH0sIC8vIF9fYnVpbHRpbl9hbWRnY25fc19kY2FjaGVfd2IKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9zX2RjYWNoZV93Yl92b2wsIDE1NDN9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3NfZGNhY2hlX3diX3ZvbAorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3NfZGVjcGVyZmxldmVsLCAxNTc2fSwgLy8gX19idWlsdGluX2FtZGdjbl9zX2RlY3BlcmZsZXZlbAorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3NfZ2V0cGMsIDE2MDh9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3NfZ2V0cGMKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9zX2dldHJlZywgMTYzM30sIC8vIF9fYnVpbHRpbl9hbWRnY25fc19nZXRyZWcKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9zX2luY3BlcmZsZXZlbCwgMTY1OX0sIC8vIF9fYnVpbHRpbl9hbWRnY25fc19pbmNwZXJmbGV2ZWwKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9zX21lbXJlYWx0aW1lLCAxNjkxfSwgLy8gX19idWlsdGluX2FtZGdjbl9zX21lbXJlYWx0aW1lCisgICAgICB7SW50cmluc2ljOjphbWRnY25fc19tZW10aW1lLCAxNzIyfSwgLy8gX19idWlsdGluX2FtZGdjbl9zX21lbXRpbWUKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9zX3NlbmRtc2csIDE3NDl9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3Nfc2VuZG1zZworICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3Nfc2VuZG1zZ2hhbHQsIDE3NzZ9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3Nfc2VuZG1zZ2hhbHQKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9zX3NsZWVwLCAxODA3fSwgLy8gX19idWlsdGluX2FtZGdjbl9zX3NsZWVwCisgICAgICB7SW50cmluc2ljOjphbWRnY25fc193YWl0Y250LCAxODMyfSwgLy8gX19idWlsdGluX2FtZGdjbl9zX3dhaXRjbnQKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9zYWRfaGlfdTgsIDE4NTl9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3NhZF9oaV91OAorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3NhZF91MTYsIDE4ODZ9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3NhZF91MTYKKyAgICAgIHtJbnRyaW5zaWM6OmFtZGdjbl9zYWRfdTgsIDE5MTF9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3NhZF91OAorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3Nkb3QyLCAxOTM1fSwgLy8gX19idWlsdGluX2FtZGdjbl9zZG90MgorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3Nkb3Q0LCAxOTU4fSwgLy8gX19idWlsdGluX2FtZGdjbl9zZG90NAorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3Nkb3Q4LCAxOTgxfSwgLy8gX19idWlsdGluX2FtZGdjbl9zZG90OAorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3Vkb3QyLCAyMDA0fSwgLy8gX19idWlsdGluX2FtZGdjbl91ZG90MgorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3Vkb3Q0LCAyMDI3fSwgLy8gX19idWlsdGluX2FtZGdjbl91ZG90NAorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3Vkb3Q4LCAyMDUwfSwgLy8gX19idWlsdGluX2FtZGdjbl91ZG90OAorICAgICAge0ludHJpbnNpYzo6YW1kZ2NuX3dhdmVfYmFycmllciwgMjA3M30sIC8vIF9fYnVpbHRpbl9hbWRnY25fd2F2ZV9iYXJyaWVyCisgICAgICB7SW50cmluc2ljOjphbWRnY25fd29ya2dyb3VwX2lkX3gsIDIxMDN9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3dvcmtncm91cF9pZF94CisgICAgICB7SW50cmluc2ljOjphbWRnY25fd29ya2dyb3VwX2lkX3ksIDIxMzV9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3dvcmtncm91cF9pZF95CisgICAgICB7SW50cmluc2ljOjphbWRnY25fd29ya2dyb3VwX2lkX3osIDIxNjd9LCAvLyBfX2J1aWx0aW5fYW1kZ2NuX3dvcmtncm91cF9pZF96CisgICAgICB7SW50cmluc2ljOjphbWRnY25fd3JpdGVsYW5lLCAyMTk5fSwgLy8gX19idWlsdGluX2FtZGdjbl93cml0ZWxhbmUKICAgICB9OwogICAgIGF1dG8gSSA9IHN0ZDo6bG93ZXJfYm91bmQoc3RkOjpiZWdpbihhbWRnY25OYW1lcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuZChhbWRnY25OYW1lcyksCkBAIC0yNDk5OSw5OCArMjQ4MzksOTggQEAKICAgfQogICBpZiAoVGFyZ2V0UHJlZml4ID09ICJhcm0iKSB7CiAgICAgc3RhdGljIGNvbnN0IEJ1aWx0aW5FbnRyeSBhcm1OYW1lc1tdID0gewotICAgICAge0ludHJpbnNpYzo6YXJtX2NkcCwgMjE2NH0sIC8vIF9fYnVpbHRpbl9hcm1fY2RwCi0gICAgICB7SW50cmluc2ljOjphcm1fY2RwMiwgMjE4Mn0sIC8vIF9fYnVpbHRpbl9hcm1fY2RwMgorICAgICAge0ludHJpbnNpYzo6YXJtX2NkcCwgMjIyNn0sIC8vIF9fYnVpbHRpbl9hcm1fY2RwCisgICAgICB7SW50cmluc2ljOjphcm1fY2RwMiwgMjI0NH0sIC8vIF9fYnVpbHRpbl9hcm1fY2RwMgogICAgICAge0ludHJpbnNpYzo6YXJtX2RtYiwgMjI0fSwgLy8gX19idWlsdGluX2FybV9kbWIKICAgICAgIHtJbnRyaW5zaWM6OmFybV9kc2IsIDI0Mn0sIC8vIF9fYnVpbHRpbl9hcm1fZHNiCi0gICAgICB7SW50cmluc2ljOjphcm1fZ2V0X2Zwc2NyLCAyMjAxfSwgLy8gX19idWlsdGluX2FybV9nZXRfZnBzY3IKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9nZXRfZnBzY3IsIDIyNjN9LCAvLyBfX2J1aWx0aW5fYXJtX2dldF9mcHNjcgogICAgICAge0ludHJpbnNpYzo6YXJtX2lzYiwgMjYwfSwgLy8gX19idWlsdGluX2FybV9pc2IKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9sZGMsIDIyMjV9LCAvLyBfX2J1aWx0aW5fYXJtX2xkYwotICAgICAge0ludHJpbnNpYzo6YXJtX2xkYzIsIDIyNDN9LCAvLyBfX2J1aWx0aW5fYXJtX2xkYzIKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9sZGMybCwgMjI2Mn0sIC8vIF9fYnVpbHRpbl9hcm1fbGRjMmwKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9sZGNsLCAyMjgyfSwgLy8gX19idWlsdGluX2FybV9sZGNsCi0gICAgICB7SW50cmluc2ljOjphcm1fbWNyLCAyMzAxfSwgLy8gX19idWlsdGluX2FybV9tY3IKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9tY3IyLCAyMzE5fSwgLy8gX19idWlsdGluX2FybV9tY3IyCi0gICAgICB7SW50cmluc2ljOjphcm1fbXJjLCAyMzM4fSwgLy8gX19idWlsdGluX2FybV9tcmMKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9tcmMyLCAyMzU2fSwgLy8gX19idWlsdGluX2FybV9tcmMyCi0gICAgICB7SW50cmluc2ljOjphcm1fcWFkZCwgMjM3NX0sIC8vIF9fYnVpbHRpbl9hcm1fcWFkZAotICAgICAge0ludHJpbnNpYzo6YXJtX3FhZGQxNiwgMjM5NH0sIC8vIF9fYnVpbHRpbl9hcm1fcWFkZDE2Ci0gICAgICB7SW50cmluc2ljOjphcm1fcWFkZDgsIDI0MTV9LCAvLyBfX2J1aWx0aW5fYXJtX3FhZGQ4Ci0gICAgICB7SW50cmluc2ljOjphcm1fcWFzeCwgMjQzNX0sIC8vIF9fYnVpbHRpbl9hcm1fcWFzeAotICAgICAge0ludHJpbnNpYzo6YXJtX3FzYXgsIDI0NTR9LCAvLyBfX2J1aWx0aW5fYXJtX3FzYXgKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9xc3ViLCAyNDczfSwgLy8gX19idWlsdGluX2FybV9xc3ViCi0gICAgICB7SW50cmluc2ljOjphcm1fcXN1YjE2LCAyNDkyfSwgLy8gX19idWlsdGluX2FybV9xc3ViMTYKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9xc3ViOCwgMjUxM30sIC8vIF9fYnVpbHRpbl9hcm1fcXN1YjgKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zYWRkMTYsIDI1MzN9LCAvLyBfX2J1aWx0aW5fYXJtX3NhZGQxNgotICAgICAge0ludHJpbnNpYzo6YXJtX3NhZGQ4LCAyNTU0fSwgLy8gX19idWlsdGluX2FybV9zYWRkOAotICAgICAge0ludHJpbnNpYzo6YXJtX3Nhc3gsIDI1NzR9LCAvLyBfX2J1aWx0aW5fYXJtX3Nhc3gKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zZWwsIDI1OTN9LCAvLyBfX2J1aWx0aW5fYXJtX3NlbAotICAgICAge0ludHJpbnNpYzo6YXJtX3NldF9mcHNjciwgMjYxMX0sIC8vIF9fYnVpbHRpbl9hcm1fc2V0X2Zwc2NyCi0gICAgICB7SW50cmluc2ljOjphcm1fc2hhZGQxNiwgMjYzNX0sIC8vIF9fYnVpbHRpbl9hcm1fc2hhZGQxNgotICAgICAge0ludHJpbnNpYzo6YXJtX3NoYWRkOCwgMjY1N30sIC8vIF9fYnVpbHRpbl9hcm1fc2hhZGQ4Ci0gICAgICB7SW50cmluc2ljOjphcm1fc2hhc3gsIDI2Nzh9LCAvLyBfX2J1aWx0aW5fYXJtX3NoYXN4Ci0gICAgICB7SW50cmluc2ljOjphcm1fc2hzYXgsIDI2OTh9LCAvLyBfX2J1aWx0aW5fYXJtX3Noc2F4Ci0gICAgICB7SW50cmluc2ljOjphcm1fc2hzdWIxNiwgMjcxOH0sIC8vIF9fYnVpbHRpbl9hcm1fc2hzdWIxNgotICAgICAge0ludHJpbnNpYzo6YXJtX3Noc3ViOCwgMjc0MH0sIC8vIF9fYnVpbHRpbl9hcm1fc2hzdWI4Ci0gICAgICB7SW50cmluc2ljOjphcm1fc21sYWJiLCAyNzYxfSwgLy8gX19idWlsdGluX2FybV9zbWxhYmIKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zbWxhYnQsIDI3ODJ9LCAvLyBfX2J1aWx0aW5fYXJtX3NtbGFidAotICAgICAge0ludHJpbnNpYzo6YXJtX3NtbGFkLCAyODAzfSwgLy8gX19idWlsdGluX2FybV9zbWxhZAotICAgICAge0ludHJpbnNpYzo6YXJtX3NtbGFkeCwgMjgyM30sIC8vIF9fYnVpbHRpbl9hcm1fc21sYWR4Ci0gICAgICB7SW50cmluc2ljOjphcm1fc21sYWxkLCAyODQ0fSwgLy8gX19idWlsdGluX2FybV9zbWxhbGQKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zbWxhbGR4LCAyODY1fSwgLy8gX19idWlsdGluX2FybV9zbWxhbGR4Ci0gICAgICB7SW50cmluc2ljOjphcm1fc21sYXRiLCAyODg3fSwgLy8gX19idWlsdGluX2FybV9zbWxhdGIKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zbWxhdHQsIDI5MDh9LCAvLyBfX2J1aWx0aW5fYXJtX3NtbGF0dAotICAgICAge0ludHJpbnNpYzo6YXJtX3NtbGF3YiwgMjkyOX0sIC8vIF9fYnVpbHRpbl9hcm1fc21sYXdiCi0gICAgICB7SW50cmluc2ljOjphcm1fc21sYXd0LCAyOTUwfSwgLy8gX19idWlsdGluX2FybV9zbWxhd3QKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zbWxzZCwgMjk3MX0sIC8vIF9fYnVpbHRpbl9hcm1fc21sc2QKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zbWxzZHgsIDI5OTF9LCAvLyBfX2J1aWx0aW5fYXJtX3NtbHNkeAotICAgICAge0ludHJpbnNpYzo6YXJtX3NtbHNsZCwgMzAxMn0sIC8vIF9fYnVpbHRpbl9hcm1fc21sc2xkCi0gICAgICB7SW50cmluc2ljOjphcm1fc21sc2xkeCwgMzAzM30sIC8vIF9fYnVpbHRpbl9hcm1fc21sc2xkeAotICAgICAge0ludHJpbnNpYzo6YXJtX3NtdWFkLCAzMDU1fSwgLy8gX19idWlsdGluX2FybV9zbXVhZAotICAgICAge0ludHJpbnNpYzo6YXJtX3NtdWFkeCwgMzA3NX0sIC8vIF9fYnVpbHRpbl9hcm1fc211YWR4Ci0gICAgICB7SW50cmluc2ljOjphcm1fc211bGJiLCAzMDk2fSwgLy8gX19idWlsdGluX2FybV9zbXVsYmIKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zbXVsYnQsIDMxMTd9LCAvLyBfX2J1aWx0aW5fYXJtX3NtdWxidAotICAgICAge0ludHJpbnNpYzo6YXJtX3NtdWx0YiwgMzEzOH0sIC8vIF9fYnVpbHRpbl9hcm1fc211bHRiCi0gICAgICB7SW50cmluc2ljOjphcm1fc211bHR0LCAzMTU5fSwgLy8gX19idWlsdGluX2FybV9zbXVsdHQKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zbXVsd2IsIDMxODB9LCAvLyBfX2J1aWx0aW5fYXJtX3NtdWx3YgotICAgICAge0ludHJpbnNpYzo6YXJtX3NtdWx3dCwgMzIwMX0sIC8vIF9fYnVpbHRpbl9hcm1fc211bHd0Ci0gICAgICB7SW50cmluc2ljOjphcm1fc211c2QsIDMyMjJ9LCAvLyBfX2J1aWx0aW5fYXJtX3NtdXNkCi0gICAgICB7SW50cmluc2ljOjphcm1fc211c2R4LCAzMjQyfSwgLy8gX19idWlsdGluX2FybV9zbXVzZHgKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zc2F0LCAzMjYzfSwgLy8gX19idWlsdGluX2FybV9zc2F0Ci0gICAgICB7SW50cmluc2ljOjphcm1fc3NhdDE2LCAzMjgyfSwgLy8gX19idWlsdGluX2FybV9zc2F0MTYKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zc2F4LCAzMzAzfSwgLy8gX19idWlsdGluX2FybV9zc2F4Ci0gICAgICB7SW50cmluc2ljOjphcm1fc3N1YjE2LCAzMzIyfSwgLy8gX19idWlsdGluX2FybV9zc3ViMTYKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zc3ViOCwgMzM0M30sIC8vIF9fYnVpbHRpbl9hcm1fc3N1YjgKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zdGMsIDMzNjN9LCAvLyBfX2J1aWx0aW5fYXJtX3N0YwotICAgICAge0ludHJpbnNpYzo6YXJtX3N0YzIsIDMzODF9LCAvLyBfX2J1aWx0aW5fYXJtX3N0YzIKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zdGMybCwgMzQwMH0sIC8vIF9fYnVpbHRpbl9hcm1fc3RjMmwKLSAgICAgIHtJbnRyaW5zaWM6OmFybV9zdGNsLCAzNDIwfSwgLy8gX19idWlsdGluX2FybV9zdGNsCi0gICAgICB7SW50cmluc2ljOjphcm1fc3h0YWIxNiwgMzQzOX0sIC8vIF9fYnVpbHRpbl9hcm1fc3h0YWIxNgotICAgICAge0ludHJpbnNpYzo6YXJtX3N4dGIxNiwgMzQ2MX0sIC8vIF9fYnVpbHRpbl9hcm1fc3h0YjE2Ci0gICAgICB7SW50cmluc2ljOjphcm1fdWFkZDE2LCAzNDgyfSwgLy8gX19idWlsdGluX2FybV91YWRkMTYKLSAgICAgIHtJbnRyaW5zaWM6OmFybV91YWRkOCwgMzUwM30sIC8vIF9fYnVpbHRpbl9hcm1fdWFkZDgKLSAgICAgIHtJbnRyaW5zaWM6OmFybV91YXN4LCAzNTIzfSwgLy8gX19idWlsdGluX2FybV91YXN4Ci0gICAgICB7SW50cmluc2ljOjphcm1fdWhhZGQxNiwgMzU0Mn0sIC8vIF9fYnVpbHRpbl9hcm1fdWhhZGQxNgotICAgICAge0ludHJpbnNpYzo6YXJtX3VoYWRkOCwgMzU2NH0sIC8vIF9fYnVpbHRpbl9hcm1fdWhhZGQ4Ci0gICAgICB7SW50cmluc2ljOjphcm1fdWhhc3gsIDM1ODV9LCAvLyBfX2J1aWx0aW5fYXJtX3VoYXN4Ci0gICAgICB7SW50cmluc2ljOjphcm1fdWhzYXgsIDM2MDV9LCAvLyBfX2J1aWx0aW5fYXJtX3Voc2F4Ci0gICAgICB7SW50cmluc2ljOjphcm1fdWhzdWIxNiwgMzYyNX0sIC8vIF9fYnVpbHRpbl9hcm1fdWhzdWIxNgotICAgICAge0ludHJpbnNpYzo6YXJtX3Voc3ViOCwgMzY0N30sIC8vIF9fYnVpbHRpbl9hcm1fdWhzdWI4Ci0gICAgICB7SW50cmluc2ljOjphcm1fdXFhZGQxNiwgMzY2OH0sIC8vIF9fYnVpbHRpbl9hcm1fdXFhZGQxNgotICAgICAge0ludHJpbnNpYzo6YXJtX3VxYWRkOCwgMzY5MH0sIC8vIF9fYnVpbHRpbl9hcm1fdXFhZGQ4Ci0gICAgICB7SW50cmluc2ljOjphcm1fdXFhc3gsIDM3MTF9LCAvLyBfX2J1aWx0aW5fYXJtX3VxYXN4Ci0gICAgICB7SW50cmluc2ljOjphcm1fdXFzYXgsIDM3MzF9LCAvLyBfX2J1aWx0aW5fYXJtX3Vxc2F4Ci0gICAgICB7SW50cmluc2ljOjphcm1fdXFzdWIxNiwgMzc1MX0sIC8vIF9fYnVpbHRpbl9hcm1fdXFzdWIxNgotICAgICAge0ludHJpbnNpYzo6YXJtX3Vxc3ViOCwgMzc3M30sIC8vIF9fYnVpbHRpbl9hcm1fdXFzdWI4Ci0gICAgICB7SW50cmluc2ljOjphcm1fdXNhZDgsIDM3OTR9LCAvLyBfX2J1aWx0aW5fYXJtX3VzYWQ4Ci0gICAgICB7SW50cmluc2ljOjphcm1fdXNhZGE4LCAzODE0fSwgLy8gX19idWlsdGluX2FybV91c2FkYTgKLSAgICAgIHtJbnRyaW5zaWM6OmFybV91c2F0LCAzODM1fSwgLy8gX19idWlsdGluX2FybV91c2F0Ci0gICAgICB7SW50cmluc2ljOjphcm1fdXNhdDE2LCAzODU0fSwgLy8gX19idWlsdGluX2FybV91c2F0MTYKLSAgICAgIHtJbnRyaW5zaWM6OmFybV91c2F4LCAzODc1fSwgLy8gX19idWlsdGluX2FybV91c2F4Ci0gICAgICB7SW50cmluc2ljOjphcm1fdXN1YjE2LCAzODk0fSwgLy8gX19idWlsdGluX2FybV91c3ViMTYKLSAgICAgIHtJbnRyaW5zaWM6OmFybV91c3ViOCwgMzkxNX0sIC8vIF9fYnVpbHRpbl9hcm1fdXN1YjgKLSAgICAgIHtJbnRyaW5zaWM6OmFybV91eHRhYjE2LCAzOTM1fSwgLy8gX19idWlsdGluX2FybV91eHRhYjE2Ci0gICAgICB7SW50cmluc2ljOjphcm1fdXh0YjE2LCAzOTU3fSwgLy8gX19idWlsdGluX2FybV91eHRiMTYKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9sZGMsIDIyODd9LCAvLyBfX2J1aWx0aW5fYXJtX2xkYworICAgICAge0ludHJpbnNpYzo6YXJtX2xkYzIsIDIzMDV9LCAvLyBfX2J1aWx0aW5fYXJtX2xkYzIKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9sZGMybCwgMjMyNH0sIC8vIF9fYnVpbHRpbl9hcm1fbGRjMmwKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9sZGNsLCAyMzQ0fSwgLy8gX19idWlsdGluX2FybV9sZGNsCisgICAgICB7SW50cmluc2ljOjphcm1fbWNyLCAyMzYzfSwgLy8gX19idWlsdGluX2FybV9tY3IKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9tY3IyLCAyMzgxfSwgLy8gX19idWlsdGluX2FybV9tY3IyCisgICAgICB7SW50cmluc2ljOjphcm1fbXJjLCAyNDAwfSwgLy8gX19idWlsdGluX2FybV9tcmMKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9tcmMyLCAyNDE4fSwgLy8gX19idWlsdGluX2FybV9tcmMyCisgICAgICB7SW50cmluc2ljOjphcm1fcWFkZCwgMjQzN30sIC8vIF9fYnVpbHRpbl9hcm1fcWFkZAorICAgICAge0ludHJpbnNpYzo6YXJtX3FhZGQxNiwgMjQ1Nn0sIC8vIF9fYnVpbHRpbl9hcm1fcWFkZDE2CisgICAgICB7SW50cmluc2ljOjphcm1fcWFkZDgsIDI0Nzd9LCAvLyBfX2J1aWx0aW5fYXJtX3FhZGQ4CisgICAgICB7SW50cmluc2ljOjphcm1fcWFzeCwgMjQ5N30sIC8vIF9fYnVpbHRpbl9hcm1fcWFzeAorICAgICAge0ludHJpbnNpYzo6YXJtX3FzYXgsIDI1MTZ9LCAvLyBfX2J1aWx0aW5fYXJtX3FzYXgKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9xc3ViLCAyNTM1fSwgLy8gX19idWlsdGluX2FybV9xc3ViCisgICAgICB7SW50cmluc2ljOjphcm1fcXN1YjE2LCAyNTU0fSwgLy8gX19idWlsdGluX2FybV9xc3ViMTYKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9xc3ViOCwgMjU3NX0sIC8vIF9fYnVpbHRpbl9hcm1fcXN1YjgKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zYWRkMTYsIDI1OTV9LCAvLyBfX2J1aWx0aW5fYXJtX3NhZGQxNgorICAgICAge0ludHJpbnNpYzo6YXJtX3NhZGQ4LCAyNjE2fSwgLy8gX19idWlsdGluX2FybV9zYWRkOAorICAgICAge0ludHJpbnNpYzo6YXJtX3Nhc3gsIDI2MzZ9LCAvLyBfX2J1aWx0aW5fYXJtX3Nhc3gKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zZWwsIDI2NTV9LCAvLyBfX2J1aWx0aW5fYXJtX3NlbAorICAgICAge0ludHJpbnNpYzo6YXJtX3NldF9mcHNjciwgMjY3M30sIC8vIF9fYnVpbHRpbl9hcm1fc2V0X2Zwc2NyCisgICAgICB7SW50cmluc2ljOjphcm1fc2hhZGQxNiwgMjY5N30sIC8vIF9fYnVpbHRpbl9hcm1fc2hhZGQxNgorICAgICAge0ludHJpbnNpYzo6YXJtX3NoYWRkOCwgMjcxOX0sIC8vIF9fYnVpbHRpbl9hcm1fc2hhZGQ4CisgICAgICB7SW50cmluc2ljOjphcm1fc2hhc3gsIDI3NDB9LCAvLyBfX2J1aWx0aW5fYXJtX3NoYXN4CisgICAgICB7SW50cmluc2ljOjphcm1fc2hzYXgsIDI3NjB9LCAvLyBfX2J1aWx0aW5fYXJtX3Noc2F4CisgICAgICB7SW50cmluc2ljOjphcm1fc2hzdWIxNiwgMjc4MH0sIC8vIF9fYnVpbHRpbl9hcm1fc2hzdWIxNgorICAgICAge0ludHJpbnNpYzo6YXJtX3Noc3ViOCwgMjgwMn0sIC8vIF9fYnVpbHRpbl9hcm1fc2hzdWI4CisgICAgICB7SW50cmluc2ljOjphcm1fc21sYWJiLCAyODIzfSwgLy8gX19idWlsdGluX2FybV9zbWxhYmIKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zbWxhYnQsIDI4NDR9LCAvLyBfX2J1aWx0aW5fYXJtX3NtbGFidAorICAgICAge0ludHJpbnNpYzo6YXJtX3NtbGFkLCAyODY1fSwgLy8gX19idWlsdGluX2FybV9zbWxhZAorICAgICAge0ludHJpbnNpYzo6YXJtX3NtbGFkeCwgMjg4NX0sIC8vIF9fYnVpbHRpbl9hcm1fc21sYWR4CisgICAgICB7SW50cmluc2ljOjphcm1fc21sYWxkLCAyOTA2fSwgLy8gX19idWlsdGluX2FybV9zbWxhbGQKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zbWxhbGR4LCAyOTI3fSwgLy8gX19idWlsdGluX2FybV9zbWxhbGR4CisgICAgICB7SW50cmluc2ljOjphcm1fc21sYXRiLCAyOTQ5fSwgLy8gX19idWlsdGluX2FybV9zbWxhdGIKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zbWxhdHQsIDI5NzB9LCAvLyBfX2J1aWx0aW5fYXJtX3NtbGF0dAorICAgICAge0ludHJpbnNpYzo6YXJtX3NtbGF3YiwgMjk5MX0sIC8vIF9fYnVpbHRpbl9hcm1fc21sYXdiCisgICAgICB7SW50cmluc2ljOjphcm1fc21sYXd0LCAzMDEyfSwgLy8gX19idWlsdGluX2FybV9zbWxhd3QKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zbWxzZCwgMzAzM30sIC8vIF9fYnVpbHRpbl9hcm1fc21sc2QKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zbWxzZHgsIDMwNTN9LCAvLyBfX2J1aWx0aW5fYXJtX3NtbHNkeAorICAgICAge0ludHJpbnNpYzo6YXJtX3NtbHNsZCwgMzA3NH0sIC8vIF9fYnVpbHRpbl9hcm1fc21sc2xkCisgICAgICB7SW50cmluc2ljOjphcm1fc21sc2xkeCwgMzA5NX0sIC8vIF9fYnVpbHRpbl9hcm1fc21sc2xkeAorICAgICAge0ludHJpbnNpYzo6YXJtX3NtdWFkLCAzMTE3fSwgLy8gX19idWlsdGluX2FybV9zbXVhZAorICAgICAge0ludHJpbnNpYzo6YXJtX3NtdWFkeCwgMzEzN30sIC8vIF9fYnVpbHRpbl9hcm1fc211YWR4CisgICAgICB7SW50cmluc2ljOjphcm1fc211bGJiLCAzMTU4fSwgLy8gX19idWlsdGluX2FybV9zbXVsYmIKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zbXVsYnQsIDMxNzl9LCAvLyBfX2J1aWx0aW5fYXJtX3NtdWxidAorICAgICAge0ludHJpbnNpYzo6YXJtX3NtdWx0YiwgMzIwMH0sIC8vIF9fYnVpbHRpbl9hcm1fc211bHRiCisgICAgICB7SW50cmluc2ljOjphcm1fc211bHR0LCAzMjIxfSwgLy8gX19idWlsdGluX2FybV9zbXVsdHQKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zbXVsd2IsIDMyNDJ9LCAvLyBfX2J1aWx0aW5fYXJtX3NtdWx3YgorICAgICAge0ludHJpbnNpYzo6YXJtX3NtdWx3dCwgMzI2M30sIC8vIF9fYnVpbHRpbl9hcm1fc211bHd0CisgICAgICB7SW50cmluc2ljOjphcm1fc211c2QsIDMyODR9LCAvLyBfX2J1aWx0aW5fYXJtX3NtdXNkCisgICAgICB7SW50cmluc2ljOjphcm1fc211c2R4LCAzMzA0fSwgLy8gX19idWlsdGluX2FybV9zbXVzZHgKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zc2F0LCAzMzI1fSwgLy8gX19idWlsdGluX2FybV9zc2F0CisgICAgICB7SW50cmluc2ljOjphcm1fc3NhdDE2LCAzMzQ0fSwgLy8gX19idWlsdGluX2FybV9zc2F0MTYKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zc2F4LCAzMzY1fSwgLy8gX19idWlsdGluX2FybV9zc2F4CisgICAgICB7SW50cmluc2ljOjphcm1fc3N1YjE2LCAzMzg0fSwgLy8gX19idWlsdGluX2FybV9zc3ViMTYKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zc3ViOCwgMzQwNX0sIC8vIF9fYnVpbHRpbl9hcm1fc3N1YjgKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zdGMsIDM0MjV9LCAvLyBfX2J1aWx0aW5fYXJtX3N0YworICAgICAge0ludHJpbnNpYzo6YXJtX3N0YzIsIDM0NDN9LCAvLyBfX2J1aWx0aW5fYXJtX3N0YzIKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zdGMybCwgMzQ2Mn0sIC8vIF9fYnVpbHRpbl9hcm1fc3RjMmwKKyAgICAgIHtJbnRyaW5zaWM6OmFybV9zdGNsLCAzNDgyfSwgLy8gX19idWlsdGluX2FybV9zdGNsCisgICAgICB7SW50cmluc2ljOjphcm1fc3h0YWIxNiwgMzUwMX0sIC8vIF9fYnVpbHRpbl9hcm1fc3h0YWIxNgorICAgICAge0ludHJpbnNpYzo6YXJtX3N4dGIxNiwgMzUyM30sIC8vIF9fYnVpbHRpbl9hcm1fc3h0YjE2CisgICAgICB7SW50cmluc2ljOjphcm1fdWFkZDE2LCAzNTQ0fSwgLy8gX19idWlsdGluX2FybV91YWRkMTYKKyAgICAgIHtJbnRyaW5zaWM6OmFybV91YWRkOCwgMzU2NX0sIC8vIF9fYnVpbHRpbl9hcm1fdWFkZDgKKyAgICAgIHtJbnRyaW5zaWM6OmFybV91YXN4LCAzNTg1fSwgLy8gX19idWlsdGluX2FybV91YXN4CisgICAgICB7SW50cmluc2ljOjphcm1fdWhhZGQxNiwgMzYwNH0sIC8vIF9fYnVpbHRpbl9hcm1fdWhhZGQxNgorICAgICAge0ludHJpbnNpYzo6YXJtX3VoYWRkOCwgMzYyNn0sIC8vIF9fYnVpbHRpbl9hcm1fdWhhZGQ4CisgICAgICB7SW50cmluc2ljOjphcm1fdWhhc3gsIDM2NDd9LCAvLyBfX2J1aWx0aW5fYXJtX3VoYXN4CisgICAgICB7SW50cmluc2ljOjphcm1fdWhzYXgsIDM2Njd9LCAvLyBfX2J1aWx0aW5fYXJtX3Voc2F4CisgICAgICB7SW50cmluc2ljOjphcm1fdWhzdWIxNiwgMzY4N30sIC8vIF9fYnVpbHRpbl9hcm1fdWhzdWIxNgorICAgICAge0ludHJpbnNpYzo6YXJtX3Voc3ViOCwgMzcwOX0sIC8vIF9fYnVpbHRpbl9hcm1fdWhzdWI4CisgICAgICB7SW50cmluc2ljOjphcm1fdXFhZGQxNiwgMzczMH0sIC8vIF9fYnVpbHRpbl9hcm1fdXFhZGQxNgorICAgICAge0ludHJpbnNpYzo6YXJtX3VxYWRkOCwgMzc1Mn0sIC8vIF9fYnVpbHRpbl9hcm1fdXFhZGQ4CisgICAgICB7SW50cmluc2ljOjphcm1fdXFhc3gsIDM3NzN9LCAvLyBfX2J1aWx0aW5fYXJtX3VxYXN4CisgICAgICB7SW50cmluc2ljOjphcm1fdXFzYXgsIDM3OTN9LCAvLyBfX2J1aWx0aW5fYXJtX3Vxc2F4CisgICAgICB7SW50cmluc2ljOjphcm1fdXFzdWIxNiwgMzgxM30sIC8vIF9fYnVpbHRpbl9hcm1fdXFzdWIxNgorICAgICAge0ludHJpbnNpYzo6YXJtX3Vxc3ViOCwgMzgzNX0sIC8vIF9fYnVpbHRpbl9hcm1fdXFzdWI4CisgICAgICB7SW50cmluc2ljOjphcm1fdXNhZDgsIDM4NTZ9LCAvLyBfX2J1aWx0aW5fYXJtX3VzYWQ4CisgICAgICB7SW50cmluc2ljOjphcm1fdXNhZGE4LCAzODc2fSwgLy8gX19idWlsdGluX2FybV91c2FkYTgKKyAgICAgIHtJbnRyaW5zaWM6OmFybV91c2F0LCAzODk3fSwgLy8gX19idWlsdGluX2FybV91c2F0CisgICAgICB7SW50cmluc2ljOjphcm1fdXNhdDE2LCAzOTE2fSwgLy8gX19idWlsdGluX2FybV91c2F0MTYKKyAgICAgIHtJbnRyaW5zaWM6OmFybV91c2F4LCAzOTM3fSwgLy8gX19idWlsdGluX2FybV91c2F4CisgICAgICB7SW50cmluc2ljOjphcm1fdXN1YjE2LCAzOTU2fSwgLy8gX19idWlsdGluX2FybV91c3ViMTYKKyAgICAgIHtJbnRyaW5zaWM6OmFybV91c3ViOCwgMzk3N30sIC8vIF9fYnVpbHRpbl9hcm1fdXN1YjgKKyAgICAgIHtJbnRyaW5zaWM6OmFybV91eHRhYjE2LCAzOTk3fSwgLy8gX19idWlsdGluX2FybV91eHRhYjE2CisgICAgICB7SW50cmluc2ljOjphcm1fdXh0YjE2LCA0MDE5fSwgLy8gX19idWlsdGluX2FybV91eHRiMTYKICAgICB9OwogICAgIGF1dG8gSSA9IHN0ZDo6bG93ZXJfYm91bmQoc3RkOjpiZWdpbihhcm1OYW1lcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuZChhcm1OYW1lcyksCkBAIC0yNTEwMSwxMCArMjQ5NDEsMTAgQEAKICAgfQogICBpZiAoVGFyZ2V0UHJlZml4ID09ICJicGYiKSB7CiAgICAgc3RhdGljIGNvbnN0IEJ1aWx0aW5FbnRyeSBicGZOYW1lc1tdID0gewotICAgICAge0ludHJpbnNpYzo6YnBmX2xvYWRfYnl0ZSwgMzk3OH0sIC8vIF9fYnVpbHRpbl9icGZfbG9hZF9ieXRlCi0gICAgICB7SW50cmluc2ljOjpicGZfbG9hZF9oYWxmLCA0MDAyfSwgLy8gX19idWlsdGluX2JwZl9sb2FkX2hhbGYKLSAgICAgIHtJbnRyaW5zaWM6OmJwZl9sb2FkX3dvcmQsIDQwMjZ9LCAvLyBfX2J1aWx0aW5fYnBmX2xvYWRfd29yZAotICAgICAge0ludHJpbnNpYzo6YnBmX3BzZXVkbywgNDA1MH0sIC8vIF9fYnVpbHRpbl9icGZfcHNldWRvCisgICAgICB7SW50cmluc2ljOjpicGZfbG9hZF9ieXRlLCA0MDQwfSwgLy8gX19idWlsdGluX2JwZl9sb2FkX2J5dGUKKyAgICAgIHtJbnRyaW5zaWM6OmJwZl9sb2FkX2hhbGYsIDQwNjR9LCAvLyBfX2J1aWx0aW5fYnBmX2xvYWRfaGFsZgorICAgICAge0ludHJpbnNpYzo6YnBmX2xvYWRfd29yZCwgNDA4OH0sIC8vIF9fYnVpbHRpbl9icGZfbG9hZF93b3JkCisgICAgICB7SW50cmluc2ljOjpicGZfcHNldWRvLCA0MTEyfSwgLy8gX19idWlsdGluX2JwZl9wc2V1ZG8KICAgICB9OwogICAgIGF1dG8gSSA9IHN0ZDo6bG93ZXJfYm91bmQoc3RkOjpiZWdpbihicGZOYW1lcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuZChicGZOYW1lcyksCkBAIC0yNTExNSwxNjg2ICsyNDk1NSwxNzQwIEBACiAgIH0KICAgaWYgKFRhcmdldFByZWZpeCA9PSAiaGV4YWdvbiIpIHsKICAgICBzdGF0aWMgY29uc3QgQnVpbHRpbkVudHJ5IGhleGFnb25OYW1lc1tdID0gewotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hYnMsIDQwNzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hYnMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWJzcCwgNDA5Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2Fic3AKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWJzc2F0LCA0MTIyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYWJzc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX2FkZCwgNDE1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hZGRoX2gxNl9oaCwgNDE3NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfaDE2X2hoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX2FkZGhfaDE2X2hsLCA0MjA4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9oMTZfaGwKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWRkaF9oMTZfbGgsIDQyNDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9saAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hZGRoX2gxNl9sbCwgNDI3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfaDE2X2xsCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX2FkZGhfaDE2X3NhdF9oaCwgNDMwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfaDE2X3NhdF9oaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hZGRoX2gxNl9zYXRfaGwsIDQzNDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9zYXRfaGwKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWRkaF9oMTZfc2F0X2xoLCA0MzgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9oMTZfc2F0X2xoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX2FkZGhfaDE2X3NhdF9sbCwgNDQxOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfaDE2X3NhdF9sbAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hZGRoX2wxNl9obCwgNDQ1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfbDE2X2hsCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX2FkZGhfbDE2X2xsLCA0NDg4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9sMTZfbGwKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWRkaF9sMTZfc2F0X2hsLCA0NTIxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9sMTZfc2F0X2hsCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX2FkZGhfbDE2X3NhdF9sbCwgNDU1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfbDE2X3NhdF9sbAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hZGRpLCA0NTk1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYWRkaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hZGRwLCA0NjIxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYWRkcAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hZGRwc2F0LCA0NjQ3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYWRkcHNhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hZGRzYXQsIDQ2NzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWRkc3AsIDQ3MDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRzcAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hbmQsIDQ3MzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYW5kaXIsIDQ3NTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hbmRpcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hbmRwLCA0NzgzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYW5kcAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hc2xoLCA0ODA5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYXNsaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hc3JoLCA0ODM1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYXNyaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9jb21iaW5lX2hoLCA0ODYxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfY29tYmluZV9oaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9jb21iaW5lX2hsLCA0ODkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfY29tYmluZV9obAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9jb21iaW5lX2xoLCA0OTI1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfY29tYmluZV9saAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9jb21iaW5lX2xsLCA0OTU3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfY29tYmluZV9sbAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9jb21iaW5laWksIDQ5ODl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9jb21iaW5laWkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfY29tYmluZXcsIDUwMjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9jb21iaW5ldwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9tYXgsIDUwNTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9tYXgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfbWF4cCwgNTA3NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX21heHAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfbWF4dSwgNTEwMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX21heHUKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfbWF4dXAsIDUxMjd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9tYXh1cAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9taW4sIDUxNTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9taW4KLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfbWlucCwgNTE3OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX21pbnAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfbWludSwgNTIwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX21pbnUKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfbWludXAsIDUyMzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9taW51cAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9uZWcsIDUyNTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9uZWcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfbmVncCwgNTI4M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX25lZ3AKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfbmVnc2F0LCA1MzA5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfbmVnc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX25vdCwgNTMzN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX25vdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9ub3RwLCA1MzYyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfbm90cAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9vciwgNTM4OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX29yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX29yaXIsIDU0MTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9vcmlyCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX29ycCwgNTQzOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX29ycAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9yb3VuZHNhdCwgNTQ2M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3JvdW5kc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3NhdCwgNTQ5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3NhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zYXRiLCA1NTE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc2F0YgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zYXRoLCA1NTQ0fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc2F0aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zYXR1YiwgNTU3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3NhdHViCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3NhdHVoLCA1NTk3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc2F0dWgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ViLCA1NjI0fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ViCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N1YmhfaDE2X2hoLCA1NjQ5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfaGgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ViaF9oMTZfaGwsIDU2ODJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9obAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdWJoX2gxNl9saCwgNTcxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YmhfaDE2X2xoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N1YmhfaDE2X2xsLCA1NzQ4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfbGwKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ViaF9oMTZfc2F0X2hoLCA1NzgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfc2F0X2hoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N1YmhfaDE2X3NhdF9obCwgNTgxOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YmhfaDE2X3NhdF9obAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdWJoX2gxNl9zYXRfbGgsIDU4NTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9zYXRfbGgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ViaF9oMTZfc2F0X2xsLCA1ODkyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfc2F0X2xsCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N1YmhfbDE2X2hsLCA1OTI5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9sMTZfaGwKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ViaF9sMTZfbGwsIDU5NjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2wxNl9sbAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdWJoX2wxNl9zYXRfaGwsIDU5OTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2wxNl9zYXRfaGwKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ViaF9sMTZfc2F0X2xsLCA2MDMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9sMTZfc2F0X2xsCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N1YnAsIDYwNjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N1YnJpLCA2MDk1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3VicmkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3Vic2F0LCA2MTIyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3Vic2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N2YWRkaCwgNjE1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N2YWRkaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdmFkZGhzLCA2MTc4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ZhZGRocwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdmFkZHVocywgNjIwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N2YWRkdWhzCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N2YXZnaCwgNjIzN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N2YXZnaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdmF2Z2hzLCA2MjY1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ZhdmdocwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdm5hdmdoLCA2Mjk0fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ZuYXZnaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdnN1YmgsIDYzMjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdnN1YmgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ZzdWJocywgNjM1MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N2c3ViaHMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ZzdWJ1aHMsIDYzODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdnN1YnVocwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zd2l6LCA2NDEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3dpegotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zeHRiLCA2NDM2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3h0YgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zeHRoLCA2NDYyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3h0aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zeHR3LCA2NDg4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3h0dwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl90ZnIsIDY1MTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl90ZnIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdGZyaWgsIDY1Mzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl90ZnJpaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl90ZnJpbCwgNjU2Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3RmcmlsCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3RmcnAsIDY1OTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl90ZnJwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3RmcnBpLCA2NjE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdGZycGkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdGZyc2ksIDY2NDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl90ZnJzaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YWJzaCwgNjY3M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhYnNoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZhYnNoc2F0LCA2NzAwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmFic2hzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmFic3csIDY3MzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YWJzdwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YWJzd3NhdCwgNjc1N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhYnN3c2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZhZGRiX21hcCwgNjc4N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGRiX21hcAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YWRkaCwgNjgxOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGRoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZhZGRocywgNjg0NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGRocwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YWRkdWIsIDY4NzN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YWRkdWIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmFkZHVicywgNjkwMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGR1YnMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmFkZHVocywgNjkzMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGR1aHMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmFkZHcsIDY5NTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YWRkdwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YWRkd3MsIDY5ODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YWRkd3MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmF2Z2gsIDcwMTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZnaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YXZnaGNyLCA3MDQxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmF2Z2hjcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YXZnaHIsIDcwNzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZnaHIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmF2Z3ViLCA3MDk4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmF2Z3ViCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3Zhdmd1YnIsIDcxMjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZndWJyCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3Zhdmd1aCwgNzE1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd1aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YXZndWhyLCA3MTgzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmF2Z3VocgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YXZndXcsIDcyMTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZndXcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmF2Z3V3ciwgNzI0MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd1d3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmF2Z3csIDcyNjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZndwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YXZnd2NyLCA3Mjk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmF2Z3djcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YXZnd3IsIDczMjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZnd3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmNtcGJlcSwgNzM1M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZjbXBiZXEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmNtcGJndHUsIDczODJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y21wYmd0dQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92Y21waGVxLCA3NDEyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmNtcGhlcQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92Y21waGd0LCA3NDQxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmNtcGhndAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92Y21waGd0dSwgNzQ3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZjbXBoZ3R1Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZjbXB3ZXEsIDc1MDB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y21wd2VxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZjbXB3Z3QsIDc1Mjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y21wd2d0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZjbXB3Z3R1LCA3NTU4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmNtcHdndHUKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmNvbmosIDc1ODh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y29uagotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92bWF4YiwgNzYxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtYXhiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZtYXhoLCA3NjQyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdm1heGgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdm1heHViLCA3NjY5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdm1heHViCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZtYXh1aCwgNzY5N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtYXh1aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92bWF4dXcsIDc3MjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWF4dXcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdm1heHcsIDc3NTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWF4dwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92bWluYiwgNzc4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtaW5iCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZtaW5oLCA3ODA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdm1pbmgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdm1pbnViLCA3ODM0fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdm1pbnViCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZtaW51aCwgNzg2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtaW51aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92bWludXcsIDc4OTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWludXcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdm1pbncsIDc5MTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWludwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92bmF2Z2gsIDc5NDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bmF2Z2gKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdm5hdmdoY3IsIDc5NzN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bmF2Z2hjcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92bmF2Z2hyLCA4MDAzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdm5hdmdocgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92bmF2Z3csIDgwMzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bmF2Z3cKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdm5hdmd3Y3IsIDgwNjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bmF2Z3djcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92bmF2Z3dyLCA4MDkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdm5hdmd3cgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92cmFkZHViLCA4MTE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdnJhZGR1YgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92cmFkZHViX2FjYywgODE0OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZyYWRkdWJfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3Zyc2FkdWIsIDgxODF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92cnNhZHViCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3Zyc2FkdWJfYWNjLCA4MjEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdnJzYWR1Yl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdnN1YmJfbWFwLCA4MjQzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdnN1YmJfbWFwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZzdWJoLCA4Mjc0fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdnN1YmgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdnN1YmhzLCA4MzAxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdnN1YmhzCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZzdWJ1YiwgODMyOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZzdWJ1YgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92c3VidWJzLCA4MzU3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdnN1YnVicwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92c3VidWhzLCA4Mzg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdnN1YnVocwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92c3VidywgODQxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZzdWJ3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZzdWJ3cywgODQ0Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZzdWJ3cwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl94b3IsIDg0NzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl94b3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfeG9ycCwgODQ5NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3hvcnAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfenh0YiwgODUyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3p4dGIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfenh0aCwgODU0N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3p4dGgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfYW5kbiwgODU3M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2FuZG4KLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfYW5kbnAsIDg1OTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9hbmRucAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9iaXRzcGxpdCwgODYyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2JpdHNwbGl0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X2JpdHNwbGl0aSwgODY1Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2JpdHNwbGl0aQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9ib3VuZHNjaGVjaywgODY4N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2JvdW5kc2NoZWNrCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X2NtcGJlcSwgODcyMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGJlcQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9jbXBiZXFpLCA4NzQ4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfY21wYmVxaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9jbXBiZ3QsIDg3Nzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBiZ3QKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfY21wYmd0aSwgODgwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGJndGkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfY21wYmd0dSwgODgzNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGJndHUKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfY21wYmd0dWksIDg4NjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBiZ3R1aQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9jbXBoZXEsIDg4OTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBoZXEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfY21waGVxaSwgODkyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGhlcWkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfY21waGd0LCA4OTUwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfY21waGd0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X2NtcGhndGksIDg5Nzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBoZ3RpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X2NtcGhndHUsIDkwMDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBoZ3R1Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X2NtcGhndHVpLCA5MDM2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfY21waGd0dWkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfY29tYmluZWlyLCA5MDY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfY29tYmluZWlyCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X2NvbWJpbmVyaSwgOTA5N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2NvbWJpbmVyaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9jcm91bmRfcmksIDkxMjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jcm91bmRfcmkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfY3JvdW5kX3JyLCA5MTU5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfY3JvdW5kX3JyCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X21vZHdyYXB1LCA5MTkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfbW9kd3JhcHUKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfb3JuLCA5MjIwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfb3JuCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X29ybnAsIDkyNDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9vcm5wCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3JjbXBlcSwgOTI3MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3JjbXBlcQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9yY21wZXFpLCA5Mjk5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfcmNtcGVxaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9yY21wbmVxLCA5MzI4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfcmNtcG5lcQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9yY21wbmVxaSwgOTM1N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3JjbXBuZXFpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3JvdW5kX3JpLCA5Mzg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfcm91bmRfcmkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfcm91bmRfcmlfc2F0LCA5NDE3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfcm91bmRfcmlfc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3JvdW5kX3JyLCA5NDUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfcm91bmRfcnIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfcm91bmRfcnJfc2F0LCA5NDgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfcm91bmRfcnJfc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3RsYm1hdGNoLCA5NTE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfdGxibWF0Y2gKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdmNtcGJlcV9hbnksIDk1NDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wYmVxX2FueQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF92Y21wYmVxaSwgOTU3OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBiZXFpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3ZjbXBiZ3QsIDk2MDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wYmd0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3ZjbXBiZ3RpLCA5NjM3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfdmNtcGJndGkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdmNtcGJndHVpLCA5NjY3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfdmNtcGJndHVpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3ZjbXBoZXFpLCA5Njk4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfdmNtcGhlcWkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdmNtcGhndGksIDk3Mjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21waGd0aQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF92Y21waGd0dWksIDk3NTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21waGd0dWkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdmNtcHdlcWksIDk3ODl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wd2VxaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF92Y21wd2d0aSwgOTgxOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXB3Z3RpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3ZjbXB3Z3R1aSwgOTg0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXB3Z3R1aQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF92cm1heGgsIDk4ODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF92cm1heGgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdnJtYXh1aCwgOTkwOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWF4dWgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdnJtYXh1dywgOTkzN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWF4dXcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdnJtYXh3LCA5OTY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfdnJtYXh3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3ZybWluaCwgOTk5NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWluaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF92cm1pbnVoLCAxMDAyMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWludWgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdnJtaW51dywgMTAwNTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF92cm1pbnV3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3ZybWludywgMTAwODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF92cm1pbncKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTVfdmFkZGh1YnMsIDEwMTA4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTVfdmFkZGh1YnMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTZfdmNtcGJlcV9ub3RhbnksIDEwMTM4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTZfdmNtcGJlcV9ub3RhbnkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTZfdmNtcGJlcV9ub3RhbnlfMTI4QiwgMTAxNzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNl92Y21wYmVxX25vdGFueV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX2FsbDgsIDEwMjE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfYWxsOAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9hbmQsIDEwMjQxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfYW5kCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX2FuZG4sIDEwMjY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfYW5kbgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9hbnk4LCAxMDI5Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX2FueTgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfYml0c2NsciwgMTAzMTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9iaXRzY2xyCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX2JpdHNjbHJpLCAxMDM0N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX2JpdHNjbHJpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX2JpdHNzZXQsIDEwMzc3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfYml0c3NldAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9jbXBlcSwgMTA0MDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBlcQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9jbXBlcWksIDEwNDMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfY21wZXFpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX2NtcGVxcCwgMTA0NjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBlcXAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfY21wZ2VpLCAxMDQ4OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGdlaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9jbXBnZXVpLCAxMDUxN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGdldWkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfY21wZ3QsIDEwNTQ2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfY21wZ3QKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfY21wZ3RpLCAxMDU3M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGd0aQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9jbXBndHAsIDEwNjAxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfY21wZ3RwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX2NtcGd0dSwgMTA2Mjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBndHUKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfY21wZ3R1aSwgMTA2NTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBndHVpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX2NtcGd0dXAsIDEwNjg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfY21wZ3R1cAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9jbXBsdCwgMTA3MTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBsdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9jbXBsdHUsIDEwNzQyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfY21wbHR1Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX21hc2ssIDEwNzcwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfbWFzawotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9tdXgsIDEwNzk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfbXV4Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX211eGlpLCAxMDgyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX211eGlpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX211eGlyLCAxMDg0OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX211eGlyCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX211eHJpLCAxMDg3NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX211eHJpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX25vdCwgMTA5MDJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9ub3QKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfb3IsIDEwOTI3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfb3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfb3JuLCAxMDk1MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX29ybgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9weGZlcl9tYXAsIDEwOTc2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfcHhmZXJfbWFwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX3RmcnByLCAxMTAwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX3RmcnByCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX3RmcnJwLCAxMTAzNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX3RmcnJwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX3ZpdHBhY2ssIDExMDYxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfdml0cGFjawotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl92bXV4LCAxMTA5MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX3ZtdXgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfeG9yLCAxMTExNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX3hvcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DNF9hbmRfYW5kLCAxMTE0MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0M0X2FuZF9hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzRfYW5kX2FuZG4sIDExMTcwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQzRfYW5kX2FuZG4KLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzRfYW5kX29yLCAxMTIwMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0M0X2FuZF9vcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DNF9hbmRfb3JuLCAxMTIyOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0M0X2FuZF9vcm4KLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzRfY21wbHRlLCAxMTI1N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0M0X2NtcGx0ZQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DNF9jbXBsdGVpLCAxMTI4NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0M0X2NtcGx0ZWkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzRfY21wbHRldSwgMTEzMTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DNF9jbXBsdGV1Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0M0X2NtcGx0ZXVpLCAxMTM0M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0M0X2NtcGx0ZXVpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0M0X2NtcG5lcSwgMTEzNzN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DNF9jbXBuZXEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzRfY21wbmVxaSwgMTE0MDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DNF9jbXBuZXFpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0M0X2Zhc3Rjb3JuZXI5LCAxMTQzMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0M0X2Zhc3Rjb3JuZXI5Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0M0X2Zhc3Rjb3JuZXI5X25vdCwgMTE0NjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DNF9mYXN0Y29ybmVyOV9ub3QKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzRfbmJpdHNjbHIsIDExNTAwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQzRfbmJpdHNjbHIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzRfbmJpdHNjbHJpLCAxMTUzMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0M0X25iaXRzY2xyaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DNF9uYml0c3NldCwgMTE1NjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DNF9uYml0c3NldAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DNF9vcl9hbmQsIDExNTkxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQzRfb3JfYW5kCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0M0X29yX2FuZG4sIDExNjE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzRfb3JfYW5kbgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DNF9vcl9vciwgMTE2NDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DNF9vcl9vcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DNF9vcl9vcm4sIDExNjc1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzRfb3Jfb3JuCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfZDJkZiwgMTE3MDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2QyZGYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl9kMnNmLCAxMTczNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZDJzZgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X2RmMmQsIDExNzY1fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl9kZjJkCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfZGYyZF9jaG9wLCAxMTc5Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYyZF9jaG9wCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfZGYyc2YsIDExODMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl9kZjJzZgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X2RmMnVkLCAxMTg2NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYydWQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl9kZjJ1ZF9jaG9wLCAxMTg5Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYydWRfY2hvcAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X2RmMnV3LCAxMTkzM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYydXcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl9kZjJ1d19jaG9wLCAxMTk2NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYydXdfY2hvcAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X2RmMncsIDEyMDAyfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl9kZjJ3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfZGYyd19jaG9wLCAxMjAzM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYyd19jaG9wCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfc2YyZCwgMTIwNjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3NmMmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl9zZjJkX2Nob3AsIDEyMTAwfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl9zZjJkX2Nob3AKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl9zZjJkZiwgMTIxMzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3NmMmRmCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfc2YydWQsIDEyMTY4fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl9zZjJ1ZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X3NmMnVkX2Nob3AsIDEyMjAwfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl9zZjJ1ZF9jaG9wCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfc2YydXcsIDEyMjM3fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl9zZjJ1dwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X3NmMnV3X2Nob3AsIDEyMjY5fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl9zZjJ1d19jaG9wCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfc2YydywgMTIzMDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3NmMncKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl9zZjJ3X2Nob3AsIDEyMzM3fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl9zZjJ3X2Nob3AKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl91ZDJkZiwgMTIzNzN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3VkMmRmCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfdWQyc2YsIDEyNDA1fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl91ZDJzZgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X3V3MmRmLCAxMjQzN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfdXcyZGYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl91dzJzZiwgMTI0Njl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3V3MnNmCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfdzJkZiwgMTI1MDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3cyZGYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl93MnNmLCAxMjUzMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfdzJzZgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9kZmNsYXNzLCAxMjU2M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmY2xhc3MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfZGZjbXBlcSwgMTI1OTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9kZmNtcGVxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2RmY21wZ2UsIDEyNjIxfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfZGZjbXBnZQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9kZmNtcGd0LCAxMjY1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmY21wZ3QKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfZGZjbXB1bywgMTI2Nzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9kZmNtcHVvCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2RmaW1tX24sIDEyNzA4fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfZGZpbW1fbgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9kZmltbV9wLCAxMjczN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmaW1tX3AKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfc2ZhZGQsIDEyNzY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfc2ZhZGQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfc2ZjbGFzcywgMTI3OTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmNsYXNzCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3NmY21wZXEsIDEyODIyfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfc2ZjbXBlcQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZmNtcGdlLCAxMjg1MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmY21wZ2UKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfc2ZjbXBndCwgMTI4ODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmNtcGd0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3NmY21wdW8sIDEyOTA5fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfc2ZjbXB1bwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZmZpeHVwZCwgMTI5Mzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZpeHVwZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZmZpeHVwbiwgMTI5Njh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZpeHVwbgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZmZpeHVwciwgMTI5OTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZpeHVwcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZmZtYSwgMTMwMjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZtYQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZmZtYV9saWIsIDEzMDU1fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfc2ZmbWFfbGliCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3NmZm1hX3NjLCAxMzA4Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmZm1hX3NjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3NmZm1zLCAxMzExNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmZm1zCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3NmZm1zX2xpYiwgMTMxNDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZtc19saWIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfc2ZpbW1fbiwgMTMxNzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmltbV9uCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3NmaW1tX3AsIDEzMjAzfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfc2ZpbW1fcAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZm1heCwgMTMyMzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZm1heAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZm1pbiwgMTMyNTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZm1pbgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZm1weSwgMTMyODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZm1weQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZnN1YiwgMTMzMTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZnN1YgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9MMl9sb2Fkd19sb2NrZWQsIDEzMzQwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTDJfbG9hZHdfbG9ja2VkCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0w0X2xvYWRkX2xvY2tlZCwgMTMzNzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9MNF9sb2FkZF9sb2NrZWQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfYWNjaSwgMTM0MDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9hY2NpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2FjY2lpLCAxMzQzNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2FjY2lpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NtYWNpX3MwLCAxMzQ2MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2NtYWNpX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NtYWNyX3MwLCAxMzQ5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2NtYWNyX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NtYWNzX3MwLCAxMzUyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2NtYWNzX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NtYWNzX3MxLCAxMzU1MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2NtYWNzX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NtYWNzY19zMCwgMTM1ODF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbWFjc2NfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfY21hY3NjX3MxLCAxMzYxMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2NtYWNzY19zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9jbXB5aV9zMCwgMTM2NDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5aV9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9jbXB5cl9zMCwgMTM2NzN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5cl9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9jbXB5cnNfczAsIDEzNzAzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfY21weXJzX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NtcHlyc19zMSwgMTM3MzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5cnNfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfY21weXJzY19zMCwgMTM3NjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5cnNjX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NtcHlyc2NfczEsIDEzNzk3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfY21weXJzY19zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9jbXB5c19zMCwgMTM4Mjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5c19zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9jbXB5c19zMSwgMTM4NTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5c19zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9jbXB5c2NfczAsIDEzODg5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfY21weXNjX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NtcHlzY19zMSwgMTM5MjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5c2NfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfY25hY3NfczAsIDEzOTUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfY25hY3NfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfY25hY3NfczEsIDEzOTgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfY25hY3NfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfY25hY3NjX3MwLCAxNDAxMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2NuYWNzY19zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9jbmFjc2NfczEsIDE0MDQyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfY25hY3NjX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2RwbXB5c3NfYWNjX3MwLCAxNDA3M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2RwbXB5c3NfYWNjX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2RwbXB5c3NfbmFjX3MwLCAxNDEwOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2RwbXB5c3NfbmFjX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2RwbXB5c3Nfcm5kX3MwLCAxNDE0NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2RwbXB5c3Nfcm5kX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2RwbXB5c3NfczAsIDE0MTgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHlzc19zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9kcG1weXV1X2FjY19zMCwgMTQyMTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9kcG1weXV1X2FjY19zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9kcG1weXV1X25hY19zMCwgMTQyNDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9kcG1weXV1X25hY19zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9kcG1weXV1X3MwLCAxNDI4NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2RwbXB5dXVfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfaG1tcHloX3JzMSwgMTQzMTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9obW1weWhfcnMxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2htbXB5aF9zMSwgMTQzNDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9obW1weWhfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfaG1tcHlsX3JzMSwgMTQzODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9obW1weWxfcnMxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2htbXB5bF9zMSwgMTQ0MTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9obW1weWxfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbWFjaSwgMTQ0NDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tYWNpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21hY3NpbiwgMTQ0Njl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tYWNzaW4KLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbWFjc2lwLCAxNDQ5N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21hY3NpcAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbWFjaHNfcnMwLCAxNDUyNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNoc19yczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1hY2hzX3JzMSwgMTQ1NTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjaHNfcnMxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tYWNoc19zMCwgMTQ1ODl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjaHNfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1hY2hzX3MxLCAxNDYyMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNoc19zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbWFjbHNfcnMwLCAxNDY1MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNsc19yczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1hY2xzX3JzMSwgMTQ2ODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjbHNfcnMxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tYWNsc19zMCwgMTQ3MTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjbHNfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1hY2xzX3MxLCAxNDc0Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNsc19zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbWFjdWhzX3JzMCwgMTQ3Nzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjdWhzX3JzMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbWFjdWhzX3JzMSwgMTQ4MTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjdWhzX3JzMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbWFjdWhzX3MwLCAxNDg0M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1aHNfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1hY3Voc19zMSwgMTQ4NzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjdWhzX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tYWN1bHNfcnMwLCAxNDkwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1bHNfcnMwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tYWN1bHNfcnMxLCAxNDk0MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1bHNfcnMxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tYWN1bHNfczAsIDE0OTczfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1hY3Vsc19zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbWFjdWxzX3MxLCAxNTAwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1bHNfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1weWhfcnMwLCAxNTAzN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHloX3JzMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbXB5aF9yczEsIDE1MDY4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1weWhfcnMxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tcHloX3MwLCAxNTA5OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHloX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tcHloX3MxLCAxNTEyOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHloX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tcHlsX3JzMCwgMTUxNTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5bF9yczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1weWxfcnMxLCAxNTE5MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHlsX3JzMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbXB5bF9zMCwgMTUyMjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5bF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbXB5bF9zMSwgMTUyNTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5bF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbXB5dWhfcnMwLCAxNTI4MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHl1aF9yczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1weXVoX3JzMSwgMTUzMTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5dWhfcnMxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tcHl1aF9zMCwgMTUzNDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5dWhfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1weXVoX3MxLCAxNTM3Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHl1aF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbXB5dWxfcnMwLCAxNTQwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHl1bF9yczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1weXVsX3JzMSwgMTU0Mzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5dWxfcnMxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tcHl1bF9zMCwgMTU0NzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5dWxfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1weXVsX3MxLCAxNTUwMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHl1bF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfYWNjX2hoX3MwLCAxNTUzM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfaGhfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2FjY19oaF9zMSwgMTU1Njh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX2hoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9hY2NfaGxfczAsIDE1NjAzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19obF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfYWNjX2hsX3MxLCAxNTYzOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfaGxfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2FjY19saF9zMCwgMTU2NzN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX2xoX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9hY2NfbGhfczEsIDE1NzA4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19saF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfYWNjX2xsX3MwLCAxNTc0M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfbGxfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2FjY19sbF9zMSwgMTU3Nzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX2xsX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9hY2Nfc2F0X2hoX3MwLCAxNTgxM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2hoX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9hY2Nfc2F0X2hoX3MxLCAxNTg1Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2hoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9hY2Nfc2F0X2hsX3MwLCAxNTg5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2hsX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9hY2Nfc2F0X2hsX3MxLCAxNTkzMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2hsX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9hY2Nfc2F0X2xoX3MwLCAxNTk2OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2xoX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9hY2Nfc2F0X2xoX3MxLCAxNjAwOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2xoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9hY2Nfc2F0X2xsX3MwLCAxNjA0N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2xsX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9hY2Nfc2F0X2xsX3MxLCAxNjA4Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2Nfc2F0X2xsX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9oaF9zMCwgMTYxMjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfaGhfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2hoX3MxLCAxNjE1Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9oaF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfaGxfczAsIDE2MTg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2hsX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9obF9zMSwgMTYyMTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfaGxfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2xoX3MwLCAxNjI0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9saF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfbGhfczEsIDE2MjgwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2xoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9sbF9zMCwgMTYzMTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbGxfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2xsX3MxLCAxNjM0Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9sbF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfbmFjX2hoX3MwLCAxNjM3M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfaGhfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X25hY19oaF9zMSwgMTY0MDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX2hoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9uYWNfaGxfczAsIDE2NDQzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19obF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfbmFjX2hsX3MxLCAxNjQ3OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfaGxfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X25hY19saF9zMCwgMTY1MTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX2xoX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9uYWNfbGhfczEsIDE2NTQ4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19saF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfbmFjX2xsX3MwLCAxNjU4M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfbGxfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X25hY19sbF9zMSwgMTY2MTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX2xsX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9uYWNfc2F0X2hoX3MwLCAxNjY1M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2hoX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9uYWNfc2F0X2hoX3MxLCAxNjY5Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2hoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9uYWNfc2F0X2hsX3MwLCAxNjczMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2hsX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9uYWNfc2F0X2hsX3MxLCAxNjc3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2hsX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9uYWNfc2F0X2xoX3MwLCAxNjgwOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2xoX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9uYWNfc2F0X2xoX3MxLCAxNjg0OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2xoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9uYWNfc2F0X2xsX3MwLCAxNjg4N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2xsX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9uYWNfc2F0X2xsX3MxLCAxNjkyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfc2F0X2xsX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9ybmRfaGhfczAsIDE2OTY1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3JuZF9oaF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfcm5kX2hoX3MxLCAxNzAwMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfaGhfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X3JuZF9obF9zMCwgMTcwMzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfcm5kX2hsX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9ybmRfaGxfczEsIDE3MDcwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3JuZF9obF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfcm5kX2xoX3MwLCAxNzEwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfbGhfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X3JuZF9saF9zMSwgMTcxNDB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfcm5kX2xoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9ybmRfbGxfczAsIDE3MTc1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3JuZF9sbF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfcm5kX2xsX3MxLCAxNzIxMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfbGxfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X3NhdF9oaF9zMCwgMTcyNDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X2hoX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9zYXRfaGhfczEsIDE3MjgwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9oaF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfc2F0X2hsX3MwLCAxNzMxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfaGxfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X3NhdF9obF9zMSwgMTczNTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X2hsX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9zYXRfbGhfczAsIDE3Mzg1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9saF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfc2F0X2xoX3MxLCAxNzQyMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfbGhfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X3NhdF9sbF9zMCwgMTc0NTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X2xsX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9zYXRfbGxfczEsIDE3NDkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9sbF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9oaF9zMCwgMTc1MjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9oaF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9oaF9zMSwgMTc1NjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9oaF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9obF9zMCwgMTc2MDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9obF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9obF9zMSwgMTc2NDJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9obF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9saF9zMCwgMTc2ODF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9saF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9saF9zMSwgMTc3MjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9saF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9sbF9zMCwgMTc3NTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9sbF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9sbF9zMSwgMTc3OTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9sbF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfdXAsIDE3ODM3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3VwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV91cF9zMSwgMTc4NjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfdXBfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X3VwX3MxX3NhdCwgMTc4OTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfdXBfczFfc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weWRfYWNjX2hoX3MwLCAxNzkzMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfYWNjX2hoX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weWRfYWNjX2hoX3MxLCAxNzk2N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfYWNjX2hoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weWRfYWNjX2hsX3MwLCAxODAwM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfYWNjX2hsX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weWRfYWNjX2hsX3MxLCAxODAzOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfYWNjX2hsX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weWRfYWNjX2xoX3MwLCAxODA3NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfYWNjX2xoX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weWRfYWNjX2xoX3MxLCAxODExMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfYWNjX2xoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weWRfYWNjX2xsX3MwLCAxODE0N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfYWNjX2xsX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weWRfYWNjX2xsX3MxLCAxODE4M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfYWNjX2xsX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weWRfaGhfczAsIDE4MjE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9oaF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX2hoX3MxLCAxODI1MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfaGhfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9obF9zMCwgMTgyODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2hsX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weWRfaGxfczEsIDE4MzE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9obF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX2xoX3MwLCAxODM0N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfbGhfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9saF9zMSwgMTgzNzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2xoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weWRfbGxfczAsIDE4NDExfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9sbF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX2xsX3MxLCAxODQ0M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfbGxfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9uYWNfaGhfczAsIDE4NDc1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfaGhfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9uYWNfaGhfczEsIDE4NTExfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfaGhfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9uYWNfaGxfczAsIDE4NTQ3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfaGxfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9uYWNfaGxfczEsIDE4NTgzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfaGxfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9uYWNfbGhfczAsIDE4NjE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfbGhfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9uYWNfbGhfczEsIDE4NjU1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfbGhfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9uYWNfbGxfczAsIDE4NjkxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfbGxfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9uYWNfbGxfczEsIDE4NzI3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9uYWNfbGxfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9ybmRfaGhfczAsIDE4NzYzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9ybmRfaGhfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9ybmRfaGhfczEsIDE4Nzk5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9ybmRfaGhfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9ybmRfaGxfczAsIDE4ODM1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9ybmRfaGxfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9ybmRfaGxfczEsIDE4ODcxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9ybmRfaGxfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9ybmRfbGhfczAsIDE4OTA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9ybmRfbGhfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9ybmRfbGhfczEsIDE4OTQzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9ybmRfbGhfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9ybmRfbGxfczAsIDE4OTc5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9ybmRfbGxfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9ybmRfbGxfczEsIDE5MDE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9ybmRfbGxfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5aSwgMTkwNTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXNtaSwgMTkwNzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlzbWkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5c3VfdXAsIDE5MTA1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5c3VfdXAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfaGhfczAsIDE5MTM1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfaGhfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfaGhfczEsIDE5MTcxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfaGhfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfaGxfczAsIDE5MjA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfaGxfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfaGxfczEsIDE5MjQzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfaGxfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfbGhfczAsIDE5Mjc5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfbGhfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfbGhfczEsIDE5MzE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfbGhfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfbGxfczAsIDE5MzUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfbGxfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfbGxfczEsIDE5Mzg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfbGxfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9oaF9zMCwgMTk0MjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2hoX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVfaGhfczEsIDE5NDU1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9oaF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X2hsX3MwLCAxOTQ4N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfaGxfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9obF9zMSwgMTk1MTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2hsX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVfbGhfczAsIDE5NTUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9saF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X2xoX3MxLCAxOTU4M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbGhfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9sbF9zMCwgMTk2MTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2xsX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVfbGxfczEsIDE5NjQ3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9sbF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19oaF9zMCwgMTk2Nzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19oaF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19oaF9zMSwgMTk3MTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19oaF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19obF9zMCwgMTk3NTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19obF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19obF9zMSwgMTk3ODd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19obF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19saF9zMCwgMTk4MjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19saF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19saF9zMSwgMTk4NTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19saF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19sbF9zMCwgMTk4OTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19sbF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19sbF9zMSwgMTk5MzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19sbF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X3VwLCAxOTk2N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfdXAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dWRfYWNjX2hoX3MwLCAxOTk5Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2FjY19oaF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1ZF9hY2NfaGhfczEsIDIwMDMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2hoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2FjY19obF9zMCwgMjAwNzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9hY2NfaGxfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dWRfYWNjX2hsX3MxLCAyMDEwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2FjY19obF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1ZF9hY2NfbGhfczAsIDIwMTQ0fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2xoX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2FjY19saF9zMSwgMjAxODF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9hY2NfbGhfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dWRfYWNjX2xsX3MwLCAyMDIxOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2FjY19sbF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1ZF9hY2NfbGxfczEsIDIwMjU1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2xsX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2hoX3MwLCAyMDI5Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2hoX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2hoX3MxLCAyMDMyNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2hoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2hsX3MwLCAyMDM1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2hsX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2hsX3MxLCAyMDM5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2hsX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2xoX3MwLCAyMDQyNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2xoX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2xoX3MxLCAyMDQ1N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2xoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2xsX3MwLCAyMDQ5MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2xsX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2xsX3MxLCAyMDUyM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2xsX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX25hY19oaF9zMCwgMjA1NTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9uYWNfaGhfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dWRfbmFjX2hoX3MxLCAyMDU5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19oaF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1ZF9uYWNfaGxfczAsIDIwNjMwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbmFjX2hsX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX25hY19obF9zMSwgMjA2Njd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9uYWNfaGxfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dWRfbmFjX2xoX3MwLCAyMDcwNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19saF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1ZF9uYWNfbGhfczEsIDIwNzQxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbmFjX2xoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX25hY19sbF9zMCwgMjA3Nzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9uYWNfbGxfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dWRfbmFjX2xsX3MxLCAyMDgxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19sbF9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1aSwgMjA4NTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1aQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9uYWNjaSwgMjA4Nzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9uYWNjaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9uYWNjaWksIDIwOTA2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbmFjY2lpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3N1YmFjYywgMjA5MzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9zdWJhY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdmFic2RpZmZoLCAyMDk2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZhYnNkaWZmaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92YWJzZGlmZncsIDIwOTkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdmFic2RpZmZ3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZjbWFjX3MwX3NhdF9pLCAyMTAyNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbWFjX3MwX3NhdF9pCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZjbWFjX3MwX3NhdF9yLCAyMTA2MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbWFjX3MwX3NhdF9yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZjbXB5X3MwX3NhdF9pLCAyMTA5Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbXB5X3MwX3NhdF9pCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZjbXB5X3MwX3NhdF9yLCAyMTEzMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbXB5X3MwX3NhdF9yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZjbXB5X3MxX3NhdF9pLCAyMTE2OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbXB5X3MxX3NhdF9pCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZjbXB5X3MxX3NhdF9yLCAyMTIwNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbXB5X3MxX3NhdF9yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZkbWFjc19zMCwgMjEyNDB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92ZG1hY3NfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdmRtYWNzX3MxLCAyMTI3MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZkbWFjc19zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92ZG1weXJzX3MwLCAyMTMwMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZkbXB5cnNfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdmRtcHlyc19zMSwgMjEzMzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92ZG1weXJzX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZkbXB5c19zMCwgMjEzNjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92ZG1weXNfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdmRtcHlzX3MxLCAyMTM5N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZkbXB5c19zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92bWFjMiwgMjE0Mjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92bWFjMmVzLCAyMTQ1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtYWMyZXMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdm1hYzJlc19zMCwgMjE0ODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMmVzX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZtYWMyZXNfczEsIDIxNTE2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJlc19zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92bWFjMnNfczAsIDIxNTQ4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJzX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZtYWMyc19zMSwgMjE1Nzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMnNfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdm1hYzJzdV9zMCwgMjE2MTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMnN1X3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZtYWMyc3VfczEsIDIxNjQyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJzdV9zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92bXB5MmVzX3MwLCAyMTY3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtcHkyZXNfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdm1weTJlc19zMSwgMjE3MDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MmVzX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZtcHkyc19zMCwgMjE3Mzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MnNfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdm1weTJzX3MwcGFjaywgMjE3Njl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MnNfczBwYWNrCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZtcHkyc19zMSwgMjE4MDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MnNfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdm1weTJzX3MxcGFjaywgMjE4MzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MnNfczFwYWNrCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZtcHkyc3VfczAsIDIxODcwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdm1weTJzdV9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92bXB5MnN1X3MxLCAyMTkwMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtcHkyc3VfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdnJhZGRoLCAyMTkzNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyYWRkaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92cmFkZHVoLCAyMTk2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyYWRkdWgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdnJjbWFjaV9zMCwgMjE5OTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtYWNpX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZyY21hY2lfczBjLCAyMjAyM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21hY2lfczBjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZyY21hY3JfczAsIDIyMDU2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdnJjbWFjcl9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92cmNtYWNyX3MwYywgMjIwODh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtYWNyX3MwYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92cmNtcHlpX3MwLCAyMjEyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21weWlfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdnJjbXB5aV9zMGMsIDIyMTUzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdnJjbXB5aV9zMGMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdnJjbXB5cl9zMCwgMjIxODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtcHlyX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZyY21weXJfczBjLCAyMjIxOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21weXJfczBjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZyY21weXNfYWNjX3MxLCAyMjI1MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21weXNfYWNjX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZyY21weXNfczEsIDIyMjg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdnJjbXB5c19zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92cmNtcHlzX3MxcnAsIDIyMzE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdnJjbXB5c19zMXJwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZybWFjX3MwLCAyMjM1M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZybWFjX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZybXB5X3MwLCAyMjM4M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZybXB5X3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3hvcl94YWNjLCAyMjQxM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3hvcl94YWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X2FuZF9hbmQsIDIyNDQzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfYW5kX2FuZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF9hbmRfYW5kbiwgMjI0NzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9hbmRfYW5kbgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF9hbmRfb3IsIDIyNTAyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfYW5kX29yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X2FuZF94b3IsIDIyNTMwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfYW5kX3hvcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF9jbXB5aV93aCwgMjI1NTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9jbXB5aV93aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF9jbXB5aV93aGMsIDIyNTg5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfY21weWlfd2hjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X2NtcHlyX3doLCAyMjYyMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X2NtcHlyX3doCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X2NtcHlyX3doYywgMjI2NTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9jbXB5cl93aGMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfbWFjX3VwX3MxX3NhdCwgMjI2ODF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9tYWNfdXBfczFfc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X21weXJpX2FkZGksIDIyNzE2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfbXB5cmlfYWRkaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF9tcHlyaV9hZGRyLCAyMjc0OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X21weXJpX2FkZHIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfbXB5cmlfYWRkcl91MiwgMjI3ODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9tcHlyaV9hZGRyX3UyCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X21weXJyX2FkZGksIDIyODE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfbXB5cnJfYWRkaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF9tcHlycl9hZGRyLCAyMjg0N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X21weXJyX2FkZHIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfbmFjX3VwX3MxX3NhdCwgMjI4Nzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9uYWNfdXBfczFfc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X29yX2FuZCwgMjI5MTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9vcl9hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfb3JfYW5kbiwgMjI5NDJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9vcl9hbmRuCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X29yX29yLCAyMjk3MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X29yX29yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X29yX3hvciwgMjI5OTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9vcl94b3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfcG1weXcsIDIzMDI2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfcG1weXcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfcG1weXdfYWNjLCAyMzA1M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X3BtcHl3X2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF92cG1weWgsIDIzMDg0fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfdnBtcHloCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X3ZwbXB5aF9hY2MsIDIzMTEyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfdnBtcHloX2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF92cm1weWVoX2FjY19zMCwgMjMxNDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF92cm1weWVoX2FjY19zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF92cm1weWVoX2FjY19zMSwgMjMxODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF92cm1weWVoX2FjY19zMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF92cm1weWVoX3MwLCAyMzIxNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5ZWhfczAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfdnJtcHllaF9zMSwgMjMyNDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF92cm1weWVoX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X3ZybXB5b2hfYWNjX3MwLCAyMzI4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5b2hfYWNjX3MwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X3ZybXB5b2hfYWNjX3MxLCAyMzMxNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5b2hfYWNjX3MxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X3ZybXB5b2hfczAsIDIzMzUyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfdnJtcHlvaF9zMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF92cm1weW9oX3MxLCAyMzM4NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5b2hfczEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfeG9yX2FuZCwgMjM0MTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF94b3JfYW5kCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X3hvcl9hbmRuLCAyMzQ0NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X3hvcl9hbmRuCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X3hvcl9vciwgMjM0NzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF94b3Jfb3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfeG9yX3hhY2MsIDIzNTAzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfeG9yX3hhY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTVfdmRtYWNic3UsIDIzNTMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTVfdmRtYWNic3UKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTVfdmRtcHlic3UsIDIzNTYzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTVfdmRtcHlic3UKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTVfdm1hY2JzdSwgMjM1OTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNV92bWFjYnN1Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX001X3ZtYWNidXUsIDIzNjIyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTVfdm1hY2J1dQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNV92bXB5YnN1LCAyMzY1MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX001X3ZtcHlic3UKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTVfdm1weWJ1dSwgMjM2ODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNV92bXB5YnV1Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX001X3ZybWFjYnN1LCAyMzcwOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX001X3ZybWFjYnN1Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX001X3ZybWFjYnV1LCAyMzczOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX001X3ZybWFjYnV1Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX001X3ZybXB5YnN1LCAyMzc2OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX001X3ZybXB5YnN1Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX001X3ZybXB5YnV1LCAyMzc5OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX001X3ZybXB5YnV1Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX002X3ZhYnNkaWZmYiwgMjM4Mjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNl92YWJzZGlmZmIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTZfdmFic2RpZmZ1YiwgMjM4NjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNl92YWJzZGlmZnViCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FkZGFzbF9ycnJpLCAyMzg5Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FkZGFzbF9ycnJpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9pX3AsIDIzOTI1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc2xfaV9wX2FjYywgMjM5NTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9wX2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc2xfaV9wX2FuZCwgMjM5ODd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9wX2FuZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc2xfaV9wX25hYywgMjQwMjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9wX25hYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc2xfaV9wX29yLCAyNDA1M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3Bfb3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX2lfcF94YWNjLCAyNDA4NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3BfeGFjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc2xfaV9yLCAyNDExOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX2lfcl9hY2MsIDI0MTQ4fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX2lfcl9hbmQsIDI0MTgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcl9hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX2lfcl9uYWMsIDI0MjE0fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcl9uYWMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX2lfcl9vciwgMjQyNDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yX29yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9pX3Jfc2F0LCAyNDI3OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3Jfc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9pX3JfeGFjYywgMjQzMTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yX3hhY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX2lfdmgsIDI0MzQ2fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfdmgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX2lfdncsIDI0Mzc2fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfdncKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX3JfcCwgMjQ0MDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9wCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9yX3BfYWNjLCAyNDQzNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3BfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9yX3BfYW5kLCAyNDQ2OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3BfYW5kCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9yX3BfbmFjLCAyNDUwMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3BfbmFjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9yX3Bfb3IsIDI0NTM0fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3JfcF9vcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc2xfcl9wX3hvciwgMjQ1NjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9wX3hvcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc2xfcl9yLCAyNDU5OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX3Jfcl9hY2MsIDI0NjI4fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3Jfcl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX3Jfcl9hbmQsIDI0NjYxfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3Jfcl9hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX3Jfcl9uYWMsIDI0Njk0fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3Jfcl9uYWMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX3Jfcl9vciwgMjQ3Mjd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9yX29yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9yX3Jfc2F0LCAyNDc1OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3Jfc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9yX3ZoLCAyNDc5Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3ZoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9yX3Z3LCAyNDgyMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3Z3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9pX3AsIDI0ODUyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9wX2FjYywgMjQ4ODF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9wX2FuZCwgMjQ5MTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX2FuZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9wX25hYywgMjQ5NDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX25hYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9wX29yLCAyNDk4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3Bfb3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNyX2lfcF9ybmQsIDI1MDEyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcF9ybmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNyX2lfcF9ybmRfZ29vZHN5bnRheCwgMjUwNDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX3JuZF9nb29kc3ludGF4Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9pX3IsIDI1MDg5fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9yX2FjYywgMjUxMTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9yX2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9yX2FuZCwgMjUxNTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9yX2FuZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9yX25hYywgMjUxODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9yX25hYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9yX29yLCAyNTIxN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3Jfb3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNyX2lfcl9ybmQsIDI1MjQ5fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcl9ybmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNyX2lfcl9ybmRfZ29vZHN5bnRheCwgMjUyODJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9yX3JuZF9nb29kc3ludGF4Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9pX3N2d190cnVuLCAyNTMyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3N2d190cnVuCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9pX3ZoLCAyNTM2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3ZoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9pX3Z3LCAyNTM5Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3Z3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9yX3AsIDI1NDIyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3JfcAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl9wX2FjYywgMjU0NTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9wX2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl9wX2FuZCwgMjU0ODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9wX2FuZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl9wX25hYywgMjU1MTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9wX25hYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl9wX29yLCAyNTU1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3Bfb3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNyX3JfcF94b3IsIDI1NTgyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3JfcF94b3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNyX3JfciwgMjU2MTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9yX3JfYWNjLCAyNTY0NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3JfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9yX3JfYW5kLCAyNTY3N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3JfYW5kCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9yX3JfbmFjLCAyNTcxMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3JfbmFjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9yX3Jfb3IsIDI1NzQzfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3Jfcl9vcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl9yX3NhdCwgMjU3NzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9yX3NhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl9zdndfdHJ1biwgMjU4MDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9zdndfdHJ1bgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl92aCwgMjU4NDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl92aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl92dywgMjU4NzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl92dwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9icmV2LCAyNTkwNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2JyZXYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYnJldnAsIDI1OTMwfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYnJldnAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfY2FiYWNlbmNiaW4sIDI1OTU3fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfY2FiYWNlbmNiaW4KLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfY2wwLCAyNTk5MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9jbDBwLCAyNjAxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsMHAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfY2wxLCAyNjA0MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsMQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9jbDFwLCAyNjA2Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsMXAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfY2xiLCAyNjA5Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsYgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9jbGJub3JtLCAyNjExN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsYm5vcm0KLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfY2xicCwgMjYxNDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jbGJwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2NscmJpdF9pLCAyNjE3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NscmJpdF9pCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2NscmJpdF9yLCAyNjIwMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NscmJpdF9yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2N0MCwgMjYyMzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jdDAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfY3QwcCwgMjYyNTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jdDBwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2N0MSwgMjYyODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jdDEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfY3QxcCwgMjYzMDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jdDFwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2RlaW50ZXJsZWF2ZSwgMjYzMzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9kZWludGVybGVhdmUKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfZXh0cmFjdHUsIDI2MzY4fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfZXh0cmFjdHUKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfZXh0cmFjdHVfcnAsIDI2Mzk4fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfZXh0cmFjdHVfcnAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfZXh0cmFjdHVwLCAyNjQzMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2V4dHJhY3R1cAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9leHRyYWN0dXBfcnAsIDI2NDYyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfZXh0cmFjdHVwX3JwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2luc2VydCwgMjY0OTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9pbnNlcnQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfaW5zZXJ0X3JwLCAyNjUyNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2luc2VydF9ycAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9pbnNlcnRwLCAyNjU1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2luc2VydHAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfaW5zZXJ0cF9ycCwgMjY1ODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9pbnNlcnRwX3JwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2ludGVybGVhdmUsIDI2NjE2fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfaW50ZXJsZWF2ZQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sZnNwLCAyNjY0OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xmc3AKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNsX3JfcCwgMjY2NzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9wCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzbF9yX3BfYWNjLCAyNjcwM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3BfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzbF9yX3BfYW5kLCAyNjczNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3BfYW5kCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzbF9yX3BfbmFjLCAyNjc2OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3BfbmFjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzbF9yX3Bfb3IsIDI2ODAyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3JfcF9vcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc2xfcl9wX3hvciwgMjY4MzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9wX3hvcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc2xfcl9yLCAyNjg2N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNsX3Jfcl9hY2MsIDI2ODk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3Jfcl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNsX3Jfcl9hbmQsIDI2OTI5fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3Jfcl9hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNsX3Jfcl9uYWMsIDI2OTYyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3Jfcl9uYWMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNsX3Jfcl9vciwgMjY5OTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9yX29yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzbF9yX3ZoLCAyNzAyN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3ZoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzbF9yX3Z3LCAyNzA1N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3Z3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9pX3AsIDI3MDg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc3JfaV9wX2FjYywgMjcxMTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9wX2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc3JfaV9wX2FuZCwgMjcxNDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9wX2FuZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc3JfaV9wX25hYywgMjcxODJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9wX25hYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc3JfaV9wX29yLCAyNzIxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3Bfb3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX2lfcF94YWNjLCAyNzI0N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3BfeGFjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc3JfaV9yLCAyNzI4MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX2lfcl9hY2MsIDI3MzEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX2lfcl9hbmQsIDI3MzQzfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl9hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX2lfcl9uYWMsIDI3Mzc2fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl9uYWMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX2lfcl9vciwgMjc0MDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9yX29yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9pX3JfeGFjYywgMjc0NDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9yX3hhY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX2lfdmgsIDI3NDc1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfdmgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX2lfdncsIDI3NTA1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfdncKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX3JfcCwgMjc1MzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9wCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9yX3BfYWNjLCAyNzU2NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3BfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9yX3BfYW5kLCAyNzU5N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3BfYW5kCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9yX3BfbmFjLCAyNzYzMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3BfbmFjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9yX3Bfb3IsIDI3NjYzfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3JfcF9vcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc3Jfcl9wX3hvciwgMjc2OTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9wX3hvcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc3Jfcl9yLCAyNzcyOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX3Jfcl9hY2MsIDI3NzU3fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3Jfcl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX3Jfcl9hbmQsIDI3NzkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3Jfcl9hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX3Jfcl9uYWMsIDI3ODIzfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3Jfcl9uYWMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX3Jfcl9vciwgMjc4NTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9yX29yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9yX3ZoLCAyNzg4OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3ZoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9yX3Z3LCAyNzkxOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3Z3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3BhY2tobCwgMjc5NDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9wYWNraGwKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfcGFyaXR5cCwgMjc5NzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9wYXJpdHlwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3NldGJpdF9pLCAyODAwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3NldGJpdF9pCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3NldGJpdF9yLCAyODAzNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3NldGJpdF9yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3NodWZmZWIsIDI4MDY1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfc2h1ZmZlYgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9zaHVmZmVoLCAyODA5NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3NodWZmZWgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfc2h1ZmZvYiwgMjgxMjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zaHVmZm9iCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3NodWZmb2gsIDI4MTUyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfc2h1ZmZvaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9zdG9yZXdfbG9ja2VkLCAyODI3OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3N0b3Jld19sb2NrZWQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfc3ZzYXRoYiwgMjgzMTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zdnNhdGhiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3N2c2F0aHViLCAyODM0Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3N2c2F0aHViCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3RhYmxlaWR4Yl9nb29kc3ludGF4LCAyODM3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3RhYmxlaWR4Yl9nb29kc3ludGF4Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3RhYmxlaWR4ZF9nb29kc3ludGF4LCAyODQxNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3RhYmxlaWR4ZF9nb29kc3ludGF4Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3RhYmxlaWR4aF9nb29kc3ludGF4LCAyODQ1Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3RhYmxlaWR4aF9nb29kc3ludGF4Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3RhYmxlaWR4d19nb29kc3ludGF4LCAyODQ5OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3RhYmxlaWR4d19nb29kc3ludGF4Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3RvZ2dsZWJpdF9pLCAyODU0MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3RvZ2dsZWJpdF9pCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3RvZ2dsZWJpdF9yLCAyODU3M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3RvZ2dsZWJpdF9yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3RzdGJpdF9pLCAyODYwNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3RzdGJpdF9pCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3RzdGJpdF9yLCAyODYzNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3RzdGJpdF9yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZhbGlnbmliLCAyODY2Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZhbGlnbmliCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZhbGlnbnJiLCAyODY5Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZhbGlnbnJiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZjbmVnaCwgMjg3MjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92Y25lZ2gKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdmNyb3RhdGUsIDI4NzU0fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdmNyb3RhdGUKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnJjbmVnaCwgMjg3ODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92cmNuZWdoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZybmRwYWNrd2gsIDI4ODEzfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnJuZHBhY2t3aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92cm5kcGFja3docywgMjg4NDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92cm5kcGFja3docwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92c2F0aGIsIDI4ODc4fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnNhdGhiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZzYXRoYl9ub3BhY2ssIDI4OTA2fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnNhdGhiX25vcGFjawotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92c2F0aHViLCAyODk0MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXRodWIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnNhdGh1Yl9ub3BhY2ssIDI4OTcwfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnNhdGh1Yl9ub3BhY2sKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnNhdHdoLCAyOTAwNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXR3aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92c2F0d2hfbm9wYWNrLCAyOTAzNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXR3aF9ub3BhY2sKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnNhdHd1aCwgMjkwNjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c2F0d3VoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZzYXR3dWhfbm9wYWNrLCAyOTA5OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXR3dWhfbm9wYWNrCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZzcGxhdHJiLCAyOTEzNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzcGxhdHJiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZzcGxhdHJoLCAyOTE2NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzcGxhdHJoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZzcGxpY2VpYiwgMjkxOTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c3BsaWNlaWIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnNwbGljZXJiLCAyOTIyNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzcGxpY2VyYgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92c3h0YmgsIDI5MjU2fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnN4dGJoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZzeHRodywgMjkyODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c3h0aHcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnRydW5laGIsIDI5MzEyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnRydW5laGIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnRydW5ld2gsIDI5MzQyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnRydW5ld2gKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnRydW5vaGIsIDI5MzcyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnRydW5vaGIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnRydW5vd2gsIDI5NDAyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnRydW5vd2gKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnp4dGJoLCAyOTQzMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3Z6eHRiaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92enh0aHcsIDI5NDYwfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnp4dGh3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X2FkZGFkZGksIDI5NDg4fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfYWRkYWRkaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9hZGRpX2FzbF9yaSwgMjk1MTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9hZGRpX2FzbF9yaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9hZGRpX2xzcl9yaSwgMjk1NTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9hZGRpX2xzcl9yaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9hbmRpX2FzbF9yaSwgMjk1ODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9hbmRpX2FzbF9yaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9hbmRpX2xzcl9yaSwgMjk2MTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9hbmRpX2xzcl9yaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9jbGJhZGRpLCAyOTY0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X2NsYmFkZGkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfY2xicGFkZGksIDI5Njc4fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfY2xicGFkZGkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfY2xicG5vcm0sIDI5NzA4fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfY2xicG5vcm0KLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfZXh0cmFjdCwgMjk3Mzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9leHRyYWN0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X2V4dHJhY3RfcnAsIDI5NzY3fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfZXh0cmFjdF9ycAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9leHRyYWN0cCwgMjk3OTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9leHRyYWN0cAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9leHRyYWN0cF9ycCwgMjk4Mjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9leHRyYWN0cF9ycAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9sc2xpLCAyOTg2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X2xzbGkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfbnRzdGJpdF9pLCAyOTg4OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X250c3RiaXRfaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9udHN0Yml0X3IsIDI5OTE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfbnRzdGJpdF9yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X29yX2FuZGksIDI5OTUwfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfb3JfYW5kaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9vcl9hbmRpeCwgMjk5Nzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9vcl9hbmRpeAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9vcl9vcmksIDMwMDA5fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfb3Jfb3JpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X29yaV9hc2xfcmksIDMwMDM3fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfb3JpX2FzbF9yaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9vcmlfbHNyX3JpLCAzMDA2OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X29yaV9sc3JfcmkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfcGFyaXR5LCAzMDEwMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X3Bhcml0eQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9zdG9yZWRfbG9ja2VkLCAzMDEyOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X3N0b3JlZF9sb2NrZWQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfc3ViYWRkaSwgMzAxNjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9zdWJhZGRpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X3N1YmlfYXNsX3JpLCAzMDE5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X3N1YmlfYXNsX3JpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X3N1YmlfbHNyX3JpLCAzMDIyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X3N1YmlfbHNyX3JpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X3ZyY3JvdGF0ZSwgMzAyNTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF92cmNyb3RhdGUKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfdnJjcm90YXRlX2FjYywgMzAyOTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF92cmNyb3RhdGVfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X3Z4YWRkc3ViaCwgMzAzMjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF92eGFkZHN1YmgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfdnhhZGRzdWJociwgMzAzNTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF92eGFkZHN1YmhyCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X3Z4YWRkc3VidywgMzAzODh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF92eGFkZHN1YncKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfdnhzdWJhZGRoLCAzMDQxOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X3Z4c3ViYWRkaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF92eHN1YmFkZGhyLCAzMDQ1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X3Z4c3ViYWRkaHIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfdnhzdWJhZGR3LCAzMDQ4Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X3Z4c3ViYWRkdwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNV9hc3JodWJfcm5kX3NhdF9nb29kc3ludGF4LCAzMDUxM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M1X2Fzcmh1Yl9ybmRfc2F0X2dvb2RzeW50YXgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzVfYXNyaHViX3NhdCwgMzA1NjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNV9hc3JodWJfc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M1X3BvcGNvdW50cCwgMzA1OTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNV9wb3Bjb3VudHAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzVfdmFzcmhybmRfZ29vZHN5bnRheCwgMzA2MjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNV92YXNyaHJuZF9nb29kc3ludGF4Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M2X3JvbF9pX3AsIDMwNjY0fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNl9yb2xfaV9wX2FjYywgMzA2OTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9wX2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNl9yb2xfaV9wX2FuZCwgMzA3MjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9wX2FuZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNl9yb2xfaV9wX25hYywgMzA3NTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9wX25hYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNl9yb2xfaV9wX29yLCAzMDc5Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3Bfb3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzZfcm9sX2lfcF94YWNjLCAzMDgyNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3BfeGFjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNl9yb2xfaV9yLCAzMDg1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzZfcm9sX2lfcl9hY2MsIDMwODg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzZfcm9sX2lfcl9hbmQsIDMwOTIwfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcl9hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzZfcm9sX2lfcl9uYWMsIDMwOTUzfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcl9uYWMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzZfcm9sX2lfcl9vciwgMzA5ODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9yX29yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M2X3JvbF9pX3JfeGFjYywgMzEwMTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9yX3hhY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzZfdnNwbGF0cmJwLCAzMTA1Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M2X3ZzcGxhdHJicAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNl92dHJ1bmVoYl9wcHAsIDMxMDgzfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzZfdnRydW5laGJfcHBwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M2X3Z0cnVub2hiX3BwcCwgMzExMTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNl92dHJ1bm9oYl9wcHAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfZXh0cmFjdHcsIDMxMTUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfZXh0cmFjdHcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfZXh0cmFjdHdfMTI4QiwgMzExODF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9leHRyYWN0d18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2hpLCAzMTIxNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2hpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2hpXzEyOEIsIDMxMjQwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfaGlfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sbywgMzEyNjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sbwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sb18xMjhCLCAzMTI5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xvXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfbHZzcGxhdGIsIDMxMzIyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfbHZzcGxhdGIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfbHZzcGxhdGJfMTI4QiwgMzEzNTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sdnNwbGF0Yl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2x2c3BsYXRoLCAzMTM4N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2x2c3BsYXRoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2x2c3BsYXRoXzEyOEIsIDMxNDE3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfbHZzcGxhdGhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sdnNwbGF0dywgMzE0NTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sdnNwbGF0dwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sdnNwbGF0d18xMjhCLCAzMTQ4Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2x2c3BsYXR3XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfcHJlZF9hbmQsIDMxNTE3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfcHJlZF9hbmRfMTI4QiwgMzE1NDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX2FuZF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ByZWRfYW5kX24sIDMxNTgyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9hbmRfbgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9wcmVkX2FuZF9uXzEyOEIsIDMxNjE0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9hbmRfbl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ByZWRfbm90LCAzMTY1MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfbm90Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ByZWRfbm90XzEyOEIsIDMxNjgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9ub3RfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9wcmVkX29yLCAzMTcxNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfb3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfcHJlZF9vcl8xMjhCLCAzMTc0NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfb3JfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9wcmVkX29yX24sIDMxNzc5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9vcl9uCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ByZWRfb3Jfbl8xMjhCLCAzMTgxMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfb3Jfbl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ByZWRfc2NhbGFyMiwgMzE4NDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX3NjYWxhcjIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfcHJlZF9zY2FsYXIyXzEyOEIsIDMxODgwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9zY2FsYXIyXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfcHJlZF9zY2FsYXIydjIsIDMxOTE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9zY2FsYXIydjIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfcHJlZF9zY2FsYXIydjJfMTI4QiwgMzE5NTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX3NjYWxhcjJ2Ml8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ByZWRfeG9yLCAzMTk5Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfeG9yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ByZWRfeG9yXzEyOEIsIDMyMDI2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF94b3JfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9zaHVmZmVxaCwgMzIwNjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9zaHVmZmVxaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9zaHVmZmVxaF8xMjhCLCAzMjA5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3NodWZmZXFoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfc2h1ZmZlcXcsIDMyMTI2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfc2h1ZmZlcXcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfc2h1ZmZlcXdfMTI4QiwgMzIxNTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9zaHVmZmVxd18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZTMzJiX25xcHJlZF9haSwgMzIxOTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92UzMyYl9ucXByZWRfYWkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdlMzMmJfbnFwcmVkX2FpXzEyOEIsIDMyMjI4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdlMzMmJfbnFwcmVkX2FpXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdlMzMmJfbnRfbnFwcmVkX2FpLCAzMjI3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZTMzJiX250X25xcHJlZF9haQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92UzMyYl9udF9ucXByZWRfYWlfMTI4QiwgMzIzMTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92UzMyYl9udF9ucXByZWRfYWlfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92UzMyYl9udF9xcHJlZF9haSwgMzIzNTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92UzMyYl9udF9xcHJlZF9haQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92UzMyYl9udF9xcHJlZF9haV8xMjhCLCAzMjM5NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZTMzJiX250X3FwcmVkX2FpXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdlMzMmJfcXByZWRfYWksIDMyNDM4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdlMzMmJfcXByZWRfYWkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdlMzMmJfcXByZWRfYWlfMTI4QiwgMzI0NzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92UzMyYl9xcHJlZF9haV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhYnNiLCAzMjUxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhYnNiXzEyOEIsIDMyNTQyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFic2JfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWJzYl9zYXQsIDMyNTc0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFic2Jfc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhYnNiX3NhdF8xMjhCLCAzMjYwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNiX3NhdF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhYnNkaWZmaCwgMzI2NDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZmgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFic2RpZmZoXzEyOEIsIDMyNjcyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFic2RpZmZoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFic2RpZmZ1YiwgMzI3MDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZnViCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhYnNkaWZmdWJfMTI4QiwgMzI3NDB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZnViXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFic2RpZmZ1aCwgMzI3Nzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZnVoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhYnNkaWZmdWhfMTI4QiwgMzI4MDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZnVoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFic2RpZmZ3LCAzMjg0Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNkaWZmdwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWJzZGlmZndfMTI4QiwgMzI4Nzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZndfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWJzaCwgMzI5MTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWJzaF8xMjhCLCAzMjk0MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFic2hfc2F0LCAzMjk3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNoX3NhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWJzaF9zYXRfMTI4QiwgMzMwMDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzaF9zYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWJzdywgMzMwMzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzdwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWJzd18xMjhCLCAzMzA2Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnN3XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFic3dfc2F0LCAzMzA5OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnN3X3NhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWJzd19zYXRfMTI4QiwgMzMxMjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzd19zYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkYiwgMzMxNjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkYgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkYl8xMjhCLCAzMzE5Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRiXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGJfZHYsIDMzMjI0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJfZHYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGJfZHZfMTI4QiwgMzMyNTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkYl9kdl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRibnEsIDMzMjg5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJucQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkYm5xXzEyOEIsIDMzMzE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJucV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRicSwgMzMzNTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkYnEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGJxXzEyOEIsIDMzMzgwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJxXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGJzYXQsIDMzNDEzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGJzYXRfMTI4QiwgMzM0NDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkYnNhdF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRic2F0X2R2LCAzMzQ3OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRic2F0X2R2Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRic2F0X2R2XzEyOEIsIDMzNTExfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJzYXRfZHZfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkY2xiaCwgMzM2MTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkY2xiaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkY2xiaF8xMjhCLCAzMzY0Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRjbGJoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGNsYncsIDMzNjgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGNsYncKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGNsYndfMTI4QiwgMzM3MTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkY2xid18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRoLCAzMzc0Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRoXzEyOEIsIDMzNzczfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkaF9kdiwgMzM4MDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaF9kdgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkaF9kdl8xMjhCLCAzMzgzNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRoX2R2XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGhucSwgMzM4NzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaG5xCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRobnFfMTI4QiwgMzM4OTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaG5xXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGhxLCAzMzkzM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRocQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkaHFfMTI4QiwgMzM5NjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHFfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkaHNhdCwgMzM5OTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHNhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkaHNhdF8xMjhCLCAzNDAyNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRoc2F0XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGhzYXRfZHYsIDM0MDU5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGhzYXRfZHYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGhzYXRfZHZfMTI4QiwgMzQwOTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHNhdF9kdl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRodywgMzQxMzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGh3XzEyOEIsIDM0MTU4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGh3XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGh3X2FjYywgMzQxOTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHdfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRod19hY2NfMTI4QiwgMzQyMjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHdfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHViaCwgMzQyNjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR1YmhfMTI4QiwgMzQyODl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHViaF9hY2MsIDM0MzIzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHViaF9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHViaF9hY2NfMTI4QiwgMzQzNTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJoX2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR1YnNhdCwgMzQzOTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHVic2F0XzEyOEIsIDM0NDI1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVic2F0XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHVic2F0X2R2LCAzNDQ2MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1YnNhdF9kdgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkdWJzYXRfZHZfMTI4QiwgMzQ0OTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJzYXRfZHZfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkdWJ1YmJfc2F0LCAzNDUzNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1YnViYl9zYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHVidWJiX3NhdF8xMjhCLCAzNDU2OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1YnViYl9zYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkdWhzYXQsIDM0NjA5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVoc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR1aHNhdF8xMjhCLCAzNDY0MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1aHNhdF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR1aHNhdF9kdiwgMzQ2NzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWhzYXRfZHYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHVoc2F0X2R2XzEyOEIsIDM0NzEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVoc2F0X2R2XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHVodywgMzQ3NDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWh3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR1aHdfMTI4QiwgMzQ3Nzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWh3XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHVod19hY2MsIDM0ODEyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVod19hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHVod19hY2NfMTI4QiwgMzQ4NDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWh3X2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR1d3NhdCwgMzQ4ODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdXdzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHV3c2F0XzEyOEIsIDM0OTE0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHV3c2F0XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHV3c2F0X2R2LCAzNDk1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1d3NhdF9kdgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkdXdzYXRfZHZfMTI4QiwgMzQ5ODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdXdzYXRfZHZfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkdywgMzUwMjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkd18xMjhCLCAzNTA1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHdfZHYsIDM1MDgyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdfZHYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHdfZHZfMTI4QiwgMzUxMTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkd19kdl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR3bnEsIDM1MTQ3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHducQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkd25xXzEyOEIsIDM1MTc2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHducV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR3cSwgMzUyMTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkd3EKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHdxXzEyOEIsIDM1MjM4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdxXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHdzYXQsIDM1MjcxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHdzYXRfMTI4QiwgMzUzMDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkd3NhdF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR3c2F0X2R2LCAzNTMzNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3c2F0X2R2Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR3c2F0X2R2XzEyOEIsIDM1MzY5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdzYXRfZHZfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWxpZ25iLCAzNTQwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbGlnbmIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFsaWduYl8xMjhCLCAzNTQzNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbGlnbmJfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWxpZ25iaSwgMzU0NzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWxpZ25iaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWxpZ25iaV8xMjhCLCAzNTUwMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbGlnbmJpXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZCwgMzU1MzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhbmRfMTI4QiwgMzU1NjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZG5xcnQsIDM1NTkyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFuZG5xcnQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZG5xcnRfMTI4QiwgMzU2MjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kbnFydF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhbmRucXJ0X2FjYywgMzU2NTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kbnFydF9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZG5xcnRfYWNjXzEyOEIsIDM1NjkxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFuZG5xcnRfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZHFydCwgMzU3MzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kcXJ0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhbmRxcnRfMTI4QiwgMzU3NTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kcXJ0XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZHFydF9hY2MsIDM1NzkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFuZHFydF9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZHFydF9hY2NfMTI4QiwgMzU4MjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kcXJ0X2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhbmR2bnF2LCAzNTg2NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2bnF2Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhbmR2bnF2XzEyOEIsIDM1ODk0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFuZHZucXZfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YW5kdnF2LCAzNTkyOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cXYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZHZxdl8xMjhCLCAzNTk1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cXZfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YW5kdnJ0LCAzNTk5Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cnQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZHZydF8xMjhCLCAzNjAyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cnRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YW5kdnJ0X2FjYywgMzYwNTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kdnJ0X2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YW5kdnJ0X2FjY18xMjhCLCAzNjA4OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cnRfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzbGgsIDM2MTI2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzbGgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzbGhfMTI4QiwgMzYxNTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsaF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc2xoX2FjYywgMzYxODV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsaF9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzbGhfYWNjXzEyOEIsIDM2MjE2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzbGhfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzbGh2LCAzNjI1Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2xodgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNsaHZfMTI4QiwgMzYyODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsaHZfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNsdywgMzYzMTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsdwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNsd18xMjhCLCAzNjM0MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2x3XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzbHdfYWNjLCAzNjM3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2x3X2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNsd19hY2NfMTI4QiwgMzY0MDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsd19hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNsd3YsIDM2NDM5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzbHd2Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc2x3dl8xMjhCLCAzNjQ2N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2x3dl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3JoLCAzNjUwMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3JoXzEyOEIsIDM2NTI3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyaF9hY2MsIDM2NTU5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmhfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3JoX2FjY18xMjhCLCAzNjU5MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JoX2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3JoYnJuZHNhdCwgMzY2MjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaGJybmRzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcmhicm5kc2F0XzEyOEIsIDM2NjYwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmhicm5kc2F0XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcmhic2F0LCAzNjY5OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JoYnNhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyaGJzYXRfMTI4QiwgMzY3MzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaGJzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyaHVicm5kc2F0LCAzNjc2Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JodWJybmRzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcmh1YnJuZHNhdF8xMjhCLCAzNjgwMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JodWJybmRzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyaHVic2F0LCAzNjg0MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JodWJzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcmh1YnNhdF8xMjhCLCAzNjg3M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JodWJzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyaHYsIDM2OTEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmh2Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3Jodl8xMjhCLCAzNjkzOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3Jodl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J1aHVicm5kc2F0LCAzNjk3MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J1aHVicm5kc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J1aHVicm5kc2F0XzEyOEIsIDM3MDA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnVodWJybmRzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNydWh1YnNhdCwgMzcwNDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNydWh1YnNhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNydWh1YnNhdF8xMjhCLCAzNzA4MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J1aHVic2F0XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcnV3dWhybmRzYXQsIDM3MTE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnV3dWhybmRzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcnV3dWhybmRzYXRfMTI4QiwgMzcxNTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNydXd1aHJuZHNhdF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J1d3Voc2F0LCAzNzE5Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J1d3Voc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J1d3Voc2F0XzEyOEIsIDM3MjI5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnV3dWhzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNydywgMzcyNjd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNydwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyd18xMjhCLCAzNzI5NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcndfYWNjLCAzNzMyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3X2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyd19hY2NfMTI4QiwgMzczNTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd19hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyd2gsIDM3MzkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcndoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J3aF8xMjhCLCAzNzQyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3aF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J3aHJuZHNhdCwgMzc0NTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd2hybmRzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcndocm5kc2F0XzEyOEIsIDM3NDg4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcndocm5kc2F0XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcndoc2F0LCAzNzUyN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3aHNhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyd2hzYXRfMTI4QiwgMzc1NTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd2hzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyd3Vocm5kc2F0LCAzNzU5NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3dWhybmRzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcnd1aHJuZHNhdF8xMjhCLCAzNzYyOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3dWhybmRzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyd3Voc2F0LCAzNzY2OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3dWhzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcnd1aHNhdF8xMjhCLCAzNzcwMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3dWhzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyd3YsIDM3NzM4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnd2Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J3dl8xMjhCLCAzNzc2Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3dl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3NpZ24sIDM3Nzk5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzc2lnbgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNzaWduXzEyOEIsIDM3ODI4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzc2lnbl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3NpZ25wLCAzNzg2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3NpZ25wCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3NpZ25wXzEyOEIsIDM3ODkyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzc2lnbnBfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZnYiwgMzc5Mjd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnYgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZnYl8xMjhCLCAzNzk1NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhdmdiXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z2JybmQsIDM3OTg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z2JybmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z2JybmRfMTI4QiwgMzgwMTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnYnJuZF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhdmdoLCAzODA1MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhdmdoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhdmdoXzEyOEIsIDM4MDc4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z2hfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZnaHJuZCwgMzgxMTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnaHJuZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZnaHJuZF8xMjhCLCAzODE0MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmdocm5kXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z3ViLCAzODE3NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1YgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZndWJfMTI4QiwgMzgyMDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndWJfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZndWJybmQsIDM4MjM2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3Vicm5kCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhdmd1YnJuZF8xMjhCLCAzODI2N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1YnJuZF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhdmd1aCwgMzgzMDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndWgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z3VoXzEyOEIsIDM4MzMxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3VoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z3Vocm5kLCAzODM2NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1aHJuZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZndWhybmRfMTI4QiwgMzgzOTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndWhybmRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZndXcsIDM4NDMxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3V3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhdmd1d18xMjhCLCAzODQ1OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1d18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhdmd1d3JuZCwgMzg0OTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndXdybmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z3V3cm5kXzEyOEIsIDM4NTIzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3V3cm5kXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z3csIDM4NTU5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3cKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z3dfMTI4QiwgMzg1ODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnd18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhdmd3cm5kLCAzODYxOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd3cm5kCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhdmd3cm5kXzEyOEIsIDM4NjQ4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3dybmRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Y2wwaCwgMzg2ODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Y2wwaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Y2wwaF8xMjhCLCAzODcxMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZjbDBoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmNsMHcsIDM4NzQyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmNsMHcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmNsMHdfMTI4QiwgMzg3Njl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Y2wwd18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zjb21iaW5lLCAzODgwMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zjb21iaW5lCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zjb21iaW5lXzEyOEIsIDM4ODMxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmNvbWJpbmVfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZDAsIDM4ODY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmQwCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkMF8xMjhCLCAzODg5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkMF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkZDAsIDM4OTIxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRkMAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZGQwXzEyOEIsIDM4OTQ3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRkMF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkZWFsYiwgMzg5Nzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVhbGIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRlYWxiNHcsIDM5MDM5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRlYWxiNHcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRlYWxiNHdfMTI4QiwgMzkwNjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVhbGI0d18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkZWFsYl8xMjhCLCAzOTAwNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWFsYl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkZWFsaCwgMzkxMDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVhbGgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRlYWxoXzEyOEIsIDM5MTMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRlYWxoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRlYWx2ZGQsIDM5MTY1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRlYWx2ZGQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRlYWx2ZGRfMTI4QiwgMzkxOTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVhbHZkZF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkZWx0YSwgMzkyMzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVsdGEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRlbHRhXzEyOEIsIDM5MjU4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRlbHRhXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHlidXMsIDM5MjkxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHlidXMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHlidXNfMTI4QiwgMzkzMjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1c18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5YnVzX2FjYywgMzkzNTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1c19hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHlidXNfYWNjXzEyOEIsIDM5MzkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHlidXNfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHlidXNfZHYsIDM5NDI5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHlidXNfZHYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHlidXNfZHZfMTI4QiwgMzk0NjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1c19kdl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5YnVzX2R2X2FjYywgMzk1MDB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1c19kdl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHlidXNfZHZfYWNjXzEyOEIsIDM5NTM3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHlidXNfZHZfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloYiwgMzk1Nzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aGJfMTI4QiwgMzk2MDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhiXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloYl9hY2MsIDM5NjQyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloYl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloYl9hY2NfMTI4QiwgMzk2NzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhiX2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aGJfZHYsIDM5NzEzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloYl9kdgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhiX2R2XzEyOEIsIDM5NzQ1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloYl9kdl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aGJfZHZfYWNjLCAzOTc4Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGJfZHZfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aGJfZHZfYWNjXzEyOEIsIDM5ODE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloYl9kdl9hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhpc2F0LCAzOTg1OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGlzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloaXNhdF8xMjhCLCAzOTg5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGlzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhpc2F0X2FjYywgMzk5Mjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhpc2F0X2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhpc2F0X2FjY18xMjhCLCAzOTk2NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGlzYXRfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloc2F0LCA0MDAwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHNhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhzYXRfMTI4QiwgNDAwMzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhzYXRfYWNjLCA0MDA3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHNhdF9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloc2F0X2FjY18xMjhCLCA0MDEwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHNhdF9hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhzdWlzYXQsIDQwMTQ3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc3Vpc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aHN1aXNhdF8xMjhCLCA0MDE4MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHN1aXNhdF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aHN1aXNhdF9hY2MsIDQwMjIwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc3Vpc2F0X2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhzdWlzYXRfYWNjXzEyOEIsIDQwMjU4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc3Vpc2F0X2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aHN1c2F0LCA0MDMwMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHN1c2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aHN1c2F0XzEyOEIsIDQwMzM0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc3VzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhzdXNhdF9hY2MsIDQwMzcyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc3VzYXRfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aHN1c2F0X2FjY18xMjhCLCA0MDQwOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHN1c2F0X2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aHZzYXQsIDQwNDUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHlodnNhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWh2c2F0XzEyOEIsIDQwNDgzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHlodnNhdF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aHZzYXRfYWNjLCA0MDUyMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHZzYXRfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aHZzYXRfYWNjXzEyOEIsIDQwNTU2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHlodnNhdF9hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZHNhZHVoLCA0MDU5N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zkc2FkdWgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRzYWR1aF8xMjhCLCA0MDYyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zkc2FkdWhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZHNhZHVoX2FjYywgNDA2NjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZHNhZHVoX2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZHNhZHVoX2FjY18xMjhCLCA0MDY5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zkc2FkdWhfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxYiwgNDA3MzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcWJfMTI4QiwgNDA3NTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFiXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxYl9hbmQsIDQwNzg4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxYl9hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxYl9hbmRfMTI4QiwgNDA4MTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFiX2FuZF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcWJfb3IsIDQwODUzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxYl9vcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXFiX29yXzEyOEIsIDQwODgyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxYl9vcl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcWJfeG9yLCA0MDkxNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWJfeG9yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcWJfeG9yXzEyOEIsIDQwOTQ2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxYl94b3JfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXFoLCA0MDk4MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxaF8xMjhCLCA0MTAwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXFoX2FuZCwgNDEwMzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFoX2FuZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXFoX2FuZF8xMjhCLCA0MTA2OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWhfYW5kXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxaF9vciwgNDExMDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFoX29yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcWhfb3JfMTI4QiwgNDExMzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFoX29yXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxaF94b3IsIDQxMTY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxaF94b3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxaF94b3JfMTI4QiwgNDExOTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFoX3hvcl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcXcsIDQxMjMxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxdwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXF3XzEyOEIsIDQxMjU3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxd18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcXdfYW5kLCA0MTI4OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcXdfYW5kCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcXdfYW5kXzEyOEIsIDQxMzE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxd19hbmRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXF3X29yLCA0MTM1M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcXdfb3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxd19vcl8xMjhCLCA0MTM4Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcXdfb3JfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXF3X3hvciwgNDE0MTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXF3X3hvcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXF3X3hvcl8xMjhCLCA0MTQ0Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcXdfeG9yXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmdhdGhlcm1oLCA0MTQ4MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z2F0aGVybWhfMTI4QiwgNDE1MTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z2F0aGVybWhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z2F0aGVybWhxLCA0MTU0OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtaHEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmdhdGhlcm1ocV8xMjhCLCA0MTU4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtaHFfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z2F0aGVybWh3LCA0MTYxN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtaHcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmdhdGhlcm1od18xMjhCLCA0MTY0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtaHdfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z2F0aGVybWh3cSwgNDE2ODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z2F0aGVybWh3cQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z2F0aGVybWh3cV8xMjhCLCA0MTcxOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtaHdxXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmdhdGhlcm13LCA0MTc1N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtdwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z2F0aGVybXdfMTI4QiwgNDE3ODh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z2F0aGVybXdfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z2F0aGVybXdxLCA0MTgyNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtd3EKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmdhdGhlcm13cV8xMjhCLCA0MTg1Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtd3FfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3RiLCA0MTg5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0Yl8xMjhCLCA0MTkxOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGJfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3RiX2FuZCwgNDE5NTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RiX2FuZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3RiX2FuZF8xMjhCLCA0MTk4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGJfYW5kXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0Yl9vciwgNDIwMTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RiX29yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndGJfb3JfMTI4QiwgNDIwNDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RiX29yXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0Yl94b3IsIDQyMDc4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0Yl94b3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0Yl94b3JfMTI4QiwgNDIxMDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RiX3hvcl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndGgsIDQyMTQzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3RoXzEyOEIsIDQyMTY5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0aF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndGhfYW5kLCA0MjIwMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGhfYW5kCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndGhfYW5kXzEyOEIsIDQyMjMwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0aF9hbmRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3RoX29yLCA0MjI2NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGhfb3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0aF9vcl8xMjhCLCA0MjI5NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGhfb3JfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3RoX3hvciwgNDIzMjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RoX3hvcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3RoX3hvcl8xMjhCLCA0MjM1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGhfeG9yXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWIsIDQyMzkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWJfMTI4QiwgNDI0MjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1Yl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndHViX2FuZCwgNDI0NTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1Yl9hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWJfYW5kXzEyOEIsIDQyNDgzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWJfYW5kXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWJfb3IsIDQyNTE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWJfb3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWJfb3JfMTI4QiwgNDI1NDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1Yl9vcl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndHViX3hvciwgNDI1ODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1Yl94b3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWJfeG9yXzEyOEIsIDQyNjE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWJfeG9yXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWgsIDQyNjUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWhfMTI4QiwgNDI2Nzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndHVoX2FuZCwgNDI3MTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF9hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWhfYW5kXzEyOEIsIDQyNzQxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWhfYW5kXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWhfb3IsIDQyNzc3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWhfb3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWhfb3JfMTI4QiwgNDI4MDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF9vcl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndHVoX3hvciwgNDI4NDJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF94b3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWhfeG9yXzEyOEIsIDQyODczfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0dWhfeG9yXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dXcsIDQyOTA5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dXdfMTI4QiwgNDI5MzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1d18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndHV3X2FuZCwgNDI5Njh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1d19hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dXdfYW5kXzEyOEIsIDQyOTk5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXdfYW5kXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dXdfb3IsIDQzMDM1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXdfb3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dXdfb3JfMTI4QiwgNDMwNjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1d19vcl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndHV3X3hvciwgNDMxMDB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1d194b3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dXdfeG9yXzEyOEIsIDQzMTMxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0dXdfeG9yXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dywgNDMxNjd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndHdfMTI4QiwgNDMxOTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R3XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0d19hbmQsIDQzMjI0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0d19hbmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0d19hbmRfMTI4QiwgNDMyNTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R3X2FuZF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndHdfb3IsIDQzMjg5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0d19vcgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R3X29yXzEyOEIsIDQzMzE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0d19vcl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndHdfeG9yLCA0MzM1Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHdfeG9yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndHdfeG9yXzEyOEIsIDQzMzgyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0d194b3JfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92aW5zZXJ0d3IsIDQzNDE3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmluc2VydHdyCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZpbnNlcnR3cl8xMjhCLCA0MzQ0OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZpbnNlcnR3cl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsYWxpZ25iLCA0MzQ4NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsYWxpZ25iCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsYWxpZ25iXzEyOEIsIDQzNTE0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmxhbGlnbmJfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bGFsaWduYmksIDQzNTQ5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmxhbGlnbmJpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsYWxpZ25iaV8xMjhCLCA0MzU4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsYWxpZ25iaV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zsc3JiLCA0MzYxNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3JiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zsc3JiXzEyOEIsIDQzNjQzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmxzcmJfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHNyaCwgNDM2NzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHNyaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHNyaF8xMjhCLCA0MzcwMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3JoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmxzcmh2LCA0MzczNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3JodgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHNyaHZfMTI4QiwgNDM3NjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHNyaHZfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHNydywgNDM3OTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHNydwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHNyd18xMjhCLCA0MzgyMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3J3XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmxzcnd2LCA0Mzg1NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3J3dgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHNyd3ZfMTI4QiwgNDM4ODJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHNyd3ZfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0NCwgNDM5MTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0NAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0NF8xMjhCLCA0Mzk0Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXQ0XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ2YiwgNDM5NzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsdXR2dmJfMTI4QiwgNDQwMDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ2Yl9ubSwgNDQwMzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiX25tCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsdXR2dmJfbm1fMTI4QiwgNDQwNjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiX25tXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ2Yl9vcmFjYywgNDQxMDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiX29yYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsdXR2dmJfb3JhY2NfMTI4QiwgNDQxNDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiX29yYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ2Yl9vcmFjY2ksIDQ0MTgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ2Yl9vcmFjY2kKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ2Yl9vcmFjY2lfMTI4QiwgNDQyMTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiX29yYWNjaV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsdXR2dmJpLCA0NDI1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2dmJpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsdXR2dmJpXzEyOEIsIDQ0Mjg4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ2YmlfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dndoLCA0NDMyM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2d2gKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ3aF8xMjhCLCA0NDM1Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2d2hfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dndoX25tLCA0NDM4Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2d2hfbm0KLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ3aF9ubV8xMjhCLCA0NDQxOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2d2hfbm1fMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dndoX29yYWNjLCA0NDQ1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2d2hfb3JhY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ3aF9vcmFjY18xMjhCLCA0NDQ5MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2d2hfb3JhY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dndoX29yYWNjaSwgNDQ1MzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dndoX29yYWNjaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dndoX29yYWNjaV8xMjhCLCA0NDU2Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2d2hfb3JhY2NpXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ3aGksIDQ0NjA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aGkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ3aGlfMTI4QiwgNDQ2Mzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dndoaV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXNrZWRzdG9yZW5xLCA0NDY3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZW5xCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXNrZWRzdG9yZW5xXzEyOEIsIDQ0NzA4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1hc2tlZHN0b3JlbnFfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWFza2Vkc3RvcmVudG5xLCA0NDc0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZW50bnEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1hc2tlZHN0b3JlbnRucV8xMjhCLCA0NDc4N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZW50bnFfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWFza2Vkc3RvcmVudHEsIDQ0ODMwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1hc2tlZHN0b3JlbnRxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXNrZWRzdG9yZW50cV8xMjhCLCA0NDg2N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZW50cV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXNrZWRzdG9yZXEsIDQ0OTA5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1hc2tlZHN0b3JlcQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWFza2Vkc3RvcmVxXzEyOEIsIDQ0OTQ0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1hc2tlZHN0b3JlcV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXhiLCA0NDk4NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXhiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXhiXzEyOEIsIDQ1MDExfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1heGJfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWF4aCwgNDUwNDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWF4aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWF4aF8xMjhCLCA0NTA3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXhoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1heHViLCA0NTEwMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXh1YgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWF4dWJfMTI4QiwgNDUxMzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWF4dWJfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWF4dWgsIDQ1MTYzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1heHVoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXh1aF8xMjhCLCA0NTE5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXh1aF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXh3LCA0NTIyNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXh3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXh3XzEyOEIsIDQ1MjUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1heHdfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWluYiwgNDUyODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWluYgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWluYl8xMjhCLCA0NTMxMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW5iXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1pbmgsIDQ1MzQyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1pbmgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1pbmhfMTI4QiwgNDUzNjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWluaF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtaW51YiwgNDU0MDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWludWIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1pbnViXzEyOEIsIDQ1NDI5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1pbnViXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1pbnVoLCA0NTQ2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW51aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWludWhfMTI4QiwgNDU0OTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWludWhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWludywgNDU1MjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWludwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWlud18xMjhCLCA0NTU1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW53XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYWJ1cywgNDU1ODJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnVzCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcGFidXNfMTI4QiwgNDU2MTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnVzXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYWJ1c19hY2MsIDQ1NjQ1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1c19hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYWJ1c19hY2NfMTI4QiwgNDU2Nzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnVzX2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcGFidXN2LCA0NTcxNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXN2Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcGFidXN2XzEyOEIsIDQ1NzQ2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1c3ZfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhYnV1LCA0NTc4MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXUKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYWJ1dV8xMjhCLCA0NTgxMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXVfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhYnV1X2FjYywgNDU4NDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnV1X2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhYnV1X2FjY18xMjhCLCA0NTg3N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXVfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYWJ1dXYsIDQ1OTE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1dXYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYWJ1dXZfMTI4QiwgNDU5NDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnV1dl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcGFoYiwgNDU5ODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhaGIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYWhiXzEyOEIsIDQ2MDA4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWhiXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYWhiX2FjYywgNDYwNDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhaGJfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcGFoYl9hY2NfMTI4QiwgNDYwNzN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhaGJfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYWhoc2F0LCA0NjExMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFoaHNhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhaGhzYXRfMTI4QiwgNDYxNDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhaGhzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhdWhiLCA0NjE3N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGF1aGIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYXVoYl8xMjhCLCA0NjIwNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGF1aGJfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhdWhiX2FjYywgNDYyNDB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhdWhiX2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhdWhiX2FjY18xMjhCLCA0NjI3M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGF1aGJfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYXVodWhzYXQsIDQ2MzExfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wYXVodWhzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYXVodWhzYXRfMTI4QiwgNDYzNDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhdWh1aHNhdF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHN1aHVoc2F0LCA0NjM4Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHN1aHVoc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHN1aHVoc2F0XzEyOEIsIDQ2NDE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wc3VodWhzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5YnVzLCA0NjQ1M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidXMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWJ1c18xMjhCLCA0NjQ4Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidXNfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5YnVzX2FjYywgNDY1MTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzX2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5YnVzX2FjY18xMjhCLCA0NjU0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidXNfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWJ1c3YsIDQ2NTg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ1c3YKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWJ1c3ZfMTI4QiwgNDY2MTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzdl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlidXN2X2FjYywgNDY2NTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzdl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWJ1c3ZfYWNjXzEyOEIsIDQ2Njg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ1c3ZfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWJ2LCA0NjcyNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5YnZfMTI4QiwgNDY3NTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnZfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5YnZfYWNjLCA0Njc4Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWJ2X2FjY18xMjhCLCA0NjgxOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidl9hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5ZXd1aCwgNDY4NTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5ZXd1aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5ZXd1aF8xMjhCLCA0Njg4NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlld3VoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWV3dWhfNjQsIDQ2OTIwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWV3dWhfNjQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWV3dWhfNjRfMTI4QiwgNDY5NTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5ZXd1aF82NF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHloLCA0Njk5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHloCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHloXzEyOEIsIDQ3MDE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aF9hY2MsIDQ3MDUwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHloX2FjY18xMjhCLCA0NzA4MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHloX2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHloc2F0X2FjYywgNDcxMTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHNhdF9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWhzYXRfYWNjXzEyOEIsIDQ3MTUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhzYXRfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWhzcnMsIDQ3MTkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhzcnMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWhzcnNfMTI4QiwgNDcyMjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHNyc18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHloc3MsIDQ3MjU1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhzcwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aHNzXzEyOEIsIDQ3Mjg0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhzc18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlodXMsIDQ3MzE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh1cwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aHVzXzEyOEIsIDQ3MzQ3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh1c18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlodXNfYWNjLCA0NzM4MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlodXNfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlodXNfYWNjXzEyOEIsIDQ3NDE0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh1c19hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aHYsIDQ3NDUyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh2Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlodl8xMjhCLCA0NzQ4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlodl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlodl9hY2MsIDQ3NTEzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh2X2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aHZfYWNjXzEyOEIsIDQ3NTQ1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh2X2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlodnNycywgNDc1ODJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHZzcnMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWh2c3JzXzEyOEIsIDQ3NjEzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh2c3JzXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWllb2gsIDQ3NjQ5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWllb2gKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWllb2hfMTI4QiwgNDc2Nzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWVvaF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpZXdoX2FjYywgNDc3MTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWV3aF9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWlld2hfYWNjXzEyOEIsIDQ3NzQ4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWlld2hfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWlld3VoLCA0Nzc4N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpZXd1aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aWV3dWhfMTI4QiwgNDc4MTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWV3dWhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aWV3dWhfYWNjLCA0Nzg1NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpZXd1aF9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWlld3VoX2FjY18xMjhCLCA0Nzg4OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpZXd1aF9hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aWgsIDQ3OTI5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWloCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpaF8xMjhCLCA0Nzk1N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpaF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpaF9hY2MsIDQ3OTkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWloX2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aWhfYWNjXzEyOEIsIDQ4MDIyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWloX2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpaGIsIDQ4MDU5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWloYgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aWhiXzEyOEIsIDQ4MDg4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWloYl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpaGJfYWNjLCA0ODEyMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpaGJfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpaGJfYWNjXzEyOEIsIDQ4MTU1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWloYl9hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aW93aCwgNDgxOTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aW93aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aW93aF8xMjhCLCA0ODIyM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpb3doXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWl3YiwgNDgyNTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXdiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpd2JfMTI4QiwgNDgyODd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXdiXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWl3Yl9hY2MsIDQ4MzIxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3Yl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWl3Yl9hY2NfMTI4QiwgNDgzNTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXdiX2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpd2gsIDQ4MzkyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aXdoXzEyOEIsIDQ4NDIxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3aF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpd2hfYWNjLCA0ODQ1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd2hfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpd2hfYWNjXzEyOEIsIDQ4NDg4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3aF9hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aXd1YiwgNDg1MjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXd1YgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aXd1Yl8xMjhCLCA0ODU1Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd3ViXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWl3dWJfYWNjLCA0ODU5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd3ViX2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aXd1Yl9hY2NfMTI4QiwgNDg2MjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXd1Yl9hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5b3doLCA0ODY2NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2gKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weW93aF8xMjhCLCA0ODY5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2hfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5b3doXzY0X2FjYywgNDg3Mjd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5b3doXzY0X2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5b3doXzY0X2FjY18xMjhCLCA0ODc2M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2hfNjRfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weW93aF9ybmQsIDQ4ODA0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aF9ybmQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weW93aF9ybmRfMTI4QiwgNDg4Mzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5b3doX3JuZF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlvd2hfcm5kX3NhY2MsIDQ4ODc1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aF9ybmRfc2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5b3doX3JuZF9zYWNjXzEyOEIsIDQ4OTEzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aF9ybmRfc2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlvd2hfc2FjYywgNDg5NTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5b3doX3NhY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weW93aF9zYWNjXzEyOEIsIDQ4OTkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aF9zYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weXViLCA0OTAyOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1YgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWJfMTI4QiwgNDkwNTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWJfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWJfYWNjLCA0OTA5MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1Yl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weXViX2FjY18xMjhCLCA0OTEyMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1Yl9hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWJ2LCA0OTE1OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1YnYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weXVidl8xMjhCLCA0OTE4OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1YnZfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWJ2X2FjYywgNDkyMjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWJ2X2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWJ2X2FjY18xMjhCLCA0OTI1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1YnZfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weXVoLCA0OTI5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWhfMTI4QiwgNDkzMjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWhfYWNjLCA0OTM1NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aF9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weXVoX2FjY18xMjhCLCA0OTM4Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aF9hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWhlLCA0OTQyM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aGUKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weXVoZV8xMjhCLCA0OTQ1Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aGVfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWhlX2FjYywgNDk0ODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWhlX2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWhlX2FjY18xMjhCLCA0OTUxOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aGVfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weXVodiwgNDk1NTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWh2Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHl1aHZfMTI4QiwgNDk1ODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWh2XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weXVodl9hY2MsIDQ5NjIwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVodl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weXVodl9hY2NfMTI4QiwgNDk2NTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWh2X2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtdXgsIDQ5NjkxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm11eAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXV4XzEyOEIsIDQ5NzE3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm11eF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZuYXZnYiwgNDk3NDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bmF2Z2IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm5hdmdiXzEyOEIsIDQ5Nzc2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm5hdmdiXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm5hdmdoLCA0OTgwOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZuYXZnaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bmF2Z2hfMTI4QiwgNDk4Mzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bmF2Z2hfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bmF2Z3ViLCA0OTg3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZuYXZndWIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm5hdmd1Yl8xMjhCLCA0OTg5OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZuYXZndWJfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bmF2Z3csIDQ5OTMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm5hdmd3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZuYXZnd18xMjhCLCA0OTk2MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZuYXZnd18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zub3JtYW10aCwgNDk5OTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bm9ybWFtdGgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm5vcm1hbXRoXzEyOEIsIDUwMDI1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm5vcm1hbXRoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm5vcm1hbXR3LCA1MDA2MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zub3JtYW10dwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bm9ybWFtdHdfMTI4QiwgNTAwOTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bm9ybWFtdHdfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bm90LCA1MDEyOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zub3QKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm5vdF8xMjhCLCA1MDE1NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zub3RfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92b3IsIDUwMTg1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm9yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zvcl8xMjhCLCA1MDIxMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zvcl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNrZWIsIDUwMjQwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2tlYgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cGFja2ViXzEyOEIsIDUwMjY5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2tlYl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNrZWgsIDUwMzAzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2tlaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cGFja2VoXzEyOEIsIDUwMzMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2tlaF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNraGJfc2F0LCA1MDM2Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNraGJfc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNraGJfc2F0XzEyOEIsIDUwMzk5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2toYl9zYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cGFja2h1Yl9zYXQsIDUwNDM3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2todWJfc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNraHViX3NhdF8xMjhCLCA1MDQ3MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNraHViX3NhdF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNrb2IsIDUwNTEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2tvYgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cGFja29iXzEyOEIsIDUwNTM5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2tvYl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNrb2gsIDUwNTczfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2tvaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cGFja29oXzEyOEIsIDUwNjAyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2tvaF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNrd2hfc2F0LCA1MDYzNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrd2hfc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNrd2hfc2F0XzEyOEIsIDUwNjY5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2t3aF9zYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cGFja3d1aF9zYXQsIDUwNzA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2t3dWhfc2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNrd3VoX3NhdF8xMjhCLCA1MDc0MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwYWNrd3VoX3NhdF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zwb3Bjb3VudGgsIDUwNzgwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBvcGNvdW50aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cG9wY291bnRoXzEyOEIsIDUwODEyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBvcGNvdW50aF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwcmVmaXhxYiwgNTA4NDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cHJlZml4cWIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnByZWZpeHFiXzEyOEIsIDUwODgwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnByZWZpeHFiXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnByZWZpeHFoLCA1MDkxNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwcmVmaXhxaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cHJlZml4cWhfMTI4QiwgNTA5NDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cHJlZml4cWhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cHJlZml4cXcsIDUwOTgzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnByZWZpeHF3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwcmVmaXhxd18xMjhCLCA1MTAxNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwcmVmaXhxd18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZyZGVsdGEsIDUxMDUwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJkZWx0YQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cmRlbHRhXzEyOEIsIDUxMDc5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJkZWx0YV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5YnViX3J0dCwgNTExMTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1Yl9ydHQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidWJfcnR0XzEyOEIsIDUxMTQ3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidWJfcnR0XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidWJfcnR0X2FjYywgNTExODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1Yl9ydHRfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5YnViX3J0dF9hY2NfMTI4QiwgNTEyMjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1Yl9ydHRfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidXMsIDUxMjY3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidXNfMTI4QiwgNTEyOTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5YnVzX2FjYywgNTEzMzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c19hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidXNfYWNjXzEyOEIsIDUxMzY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXNfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidXNpLCA1MTQwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnVzaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weWJ1c2lfMTI4QiwgNTE0MzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c2lfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weWJ1c2lfYWNjLCA1MTQ3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnVzaV9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidXNpX2FjY18xMjhCLCA1MTUwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnVzaV9hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weWJ1c3YsIDUxNTQ3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXN2Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5YnVzdl8xMjhCLCA1MTU3OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnVzdl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5YnVzdl9hY2MsIDUxNjE0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXN2X2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weWJ1c3ZfYWNjXzEyOEIsIDUxNjQ5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXN2X2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5YnYsIDUxNjg5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weWJ2XzEyOEIsIDUxNzE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5YnZfYWNjLCA1MTc1Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnZfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5YnZfYWNjXzEyOEIsIDUxNzg1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidl9hY2NfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weXViLCA1MTgyM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHl1Yl8xMjhCLCA1MTg1Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weXViX2FjYywgNTE4ODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViX2FjYwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weXViX2FjY18xMjhCLCA1MTkxOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHl1Yl9ydHQsIDUxOTU3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1Yl9ydHQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHl1Yl9ydHRfMTI4QiwgNTE5OTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViX3J0dF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5dWJfcnR0X2FjYywgNTIwMjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViX3J0dF9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHl1Yl9ydHRfYWNjXzEyOEIsIDUyMDY1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1Yl9ydHRfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHl1YmksIDUyMTA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1YmkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHl1YmlfMTI4QiwgNTIxMzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViaV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5dWJpX2FjYywgNTIxNzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViaV9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHl1YmlfYWNjXzEyOEIsIDUyMjA2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1YmlfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHl1YnYsIDUyMjQ1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1YnYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHl1YnZfMTI4QiwgNTIyNzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXVidl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5dWJ2X2FjYywgNTIzMTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXVidl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHl1YnZfYWNjXzEyOEIsIDUyMzQ0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1YnZfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvciwgNTIzODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm9yCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zyb3JfMTI4QiwgNTI0MDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm9yXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kaGIsIDUyNDQwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kaGIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kaGJfMTI4QiwgNTI0NzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmRoYl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zyb3VuZGh1YiwgNTI1MDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmRodWIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kaHViXzEyOEIsIDUyNTM2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kaHViXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kdWh1YiwgNTI1NzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR1aHViCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zyb3VuZHVodWJfMTI4QiwgNTI2MDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR1aHViXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kdXd1aCwgNTI2NDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR1d3VoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zyb3VuZHV3dWhfMTI4QiwgNTI2NzN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR1d3VoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kd2gsIDUyNzEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kd2gKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kd2hfMTI4QiwgNTI3NDB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR3aF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zyb3VuZHd1aCwgNTI3NzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR3dWgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kd3VoXzEyOEIsIDUyODA2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kd3VoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJzYWR1YmksIDUyODQyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJzYWR1YmkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJzYWR1YmlfMTI4QiwgNTI4NzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cnNhZHViaV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zyc2FkdWJpX2FjYywgNTI5MDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cnNhZHViaV9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJzYWR1YmlfYWNjXzEyOEIsIDUyOTQxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJzYWR1YmlfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNhdGh1YiwgNTI5ODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0aHViCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzYXRodWJfMTI4QiwgNTMwMDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0aHViXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNhdHV3dWgsIDUzMDQzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNhdHV3dWgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNhdHV3dWhfMTI4QiwgNTMwNzN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0dXd1aF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzYXR3aCwgNTMxMDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0d2gKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNhdHdoXzEyOEIsIDUzMTM2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNhdHdoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNiLCA1MzE2OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2JfMTI4QiwgNTMxOTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2JfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2NhdHRlcm1oLCA1MzIyNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNjYXR0ZXJtaF8xMjhCLCA1MzI1Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2NhdHRlcm1oX2FkZCwgNTMyOTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm1oX2FkZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2NhdHRlcm1oX2FkZF8xMjhCLCA1MzMyOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWhfYWRkXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNjYXR0ZXJtaHEsIDUzMzcwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtaHEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNjYXR0ZXJtaHFfMTI4QiwgNTM0MDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm1ocV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzY2F0dGVybWh3LCA1MzQ0MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWh3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzY2F0dGVybWh3XzEyOEIsIDUzNDc0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtaHdfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2NhdHRlcm1od19hZGQsIDUzNTEyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtaHdfYWRkCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzY2F0dGVybWh3X2FkZF8xMjhCLCA1MzU0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWh3X2FkZF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzY2F0dGVybWh3cSwgNTM1OTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm1od3EKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNjYXR0ZXJtaHdxXzEyOEIsIDUzNjI1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtaHdxXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNjYXR0ZXJtdywgNTM2NjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm13Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzY2F0dGVybXdfMTI4QiwgNTM2OTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm13XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNjYXR0ZXJtd19hZGQsIDUzNzMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtd19hZGQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNjYXR0ZXJtd19hZGRfMTI4QiwgNTM3Njl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm13X2FkZF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzY2F0dGVybXdxLCA1MzgxMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybXdxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzY2F0dGVybXdxXzEyOEIsIDUzODQzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtd3FfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2gsIDUzODgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaF8xMjhCLCA1MzkwNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaHVmZWgsIDUzOTM2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZlaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2h1ZmVoXzEyOEIsIDUzOTY1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZlaF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaHVmZmIsIDUzOTk5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZmYgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2h1ZmZiXzEyOEIsIDU0MDI4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZmYl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaHVmZmViLCA1NDA2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZmViCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaHVmZmViXzEyOEIsIDU0MDkyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZmZWJfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2h1ZmZoLCA1NDEyN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZmgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNodWZmaF8xMjhCLCA1NDE1Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZmhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2h1ZmZvYiwgNTQxOTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZvYgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2h1ZmZvYl8xMjhCLCA1NDIyMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZm9iXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNodWZmdmRkLCA1NDI1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZnZkZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2h1ZmZ2ZGRfMTI4QiwgNTQyODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZ2ZGRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2h1Zm9lYiwgNTQzMjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1Zm9lYgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2h1Zm9lYl8xMjhCLCA1NDM1Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmb2ViXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNodWZvZWgsIDU0Mzg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZvZWgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNodWZvZWhfMTI4QiwgNTQ0MTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1Zm9laF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaHVmb2gsIDU0NDUyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZvaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2h1Zm9oXzEyOEIsIDU0NDgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZvaF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJiLCA1NDUxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJiXzEyOEIsIDU0NTQyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViYl9kdiwgNTQ1NzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYl9kdgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViYl9kdl8xMjhCLCA1NDYwNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJiX2R2XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmJucSwgNTQ2Mzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYm5xCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJibnFfMTI4QiwgNTQ2Njh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYm5xXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmJxLCA1NDcwMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJicQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViYnFfMTI4QiwgNTQ3MzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYnFfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViYnNhdCwgNTQ3NjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYnNhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViYnNhdF8xMjhCLCA1NDc5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJic2F0XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmJzYXRfZHYsIDU0ODI4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJzYXRfZHYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmJzYXRfZHZfMTI4QiwgNTQ4NjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYnNhdF9kdl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJoLCA1NDk2Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJoXzEyOEIsIDU0OTkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViaF9kdiwgNTUwMjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaF9kdgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViaF9kdl8xMjhCLCA1NTA1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJoX2R2XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmhucSwgNTUwOTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaG5xCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJobnFfMTI4QiwgNTUxMTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaG5xXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmhxLCA1NTE1M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJocQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViaHFfMTI4QiwgNTUxODF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaHFfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViaHNhdCwgNTUyMTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaHNhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViaHNhdF8xMjhCLCA1NTI0NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJoc2F0XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmhzYXRfZHYsIDU1Mjc5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhzYXRfZHYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmhzYXRfZHZfMTI4QiwgNTUzMTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaHNhdF9kdl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJodywgNTUzNTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaHcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1Ymh3XzEyOEIsIDU1Mzc4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1Ymh3XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YnViaCwgNTU0MTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ1YmhfMTI4QiwgNTU0NDB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YnVic2F0LCA1NTQ3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1YnNhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3VidWJzYXRfMTI4QiwgNTU1MDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3VidWJzYXRfZHYsIDU1NTQxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVic2F0X2R2Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ1YnNhdF9kdl8xMjhCLCA1NTU3NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1YnNhdF9kdl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ1YnViYl9zYXQsIDU1NjE0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVidWJiX3NhdAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3VidWJ1YmJfc2F0XzEyOEIsIDU1NjQ5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVidWJiX3NhdF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ1aHNhdCwgNTU2ODl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWhzYXQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YnVoc2F0XzEyOEIsIDU1NzIwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVoc2F0XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YnVoc2F0X2R2LCA1NTc1Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1aHNhdF9kdgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3VidWhzYXRfZHZfMTI4QiwgNTU3OTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWhzYXRfZHZfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3VidWh3LCA1NTgyOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1aHcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YnVod18xMjhCLCA1NTg1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1aHdfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3VidXdzYXQsIDU1ODkyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnV3c2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ1d3NhdF8xMjhCLCA1NTkyM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1d3NhdF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ1d3NhdF9kdiwgNTU5NTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidXdzYXRfZHYKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YnV3c2F0X2R2XzEyOEIsIDU1OTkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnV3c2F0X2R2XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YncsIDU2MDMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YncKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YndfMTI4QiwgNTYwNTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3Vid18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ3X2R2LCA1NjA5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ3X2R2Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ3X2R2XzEyOEIsIDU2MTIxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndfZHZfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3Vid25xLCA1NjE1Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ3bnEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YnducV8xMjhCLCA1NjE4NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ3bnFfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3Vid3EsIDU2MjE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndxCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ3cV8xMjhCLCA1NjI0N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ3cV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ3c2F0LCA1NjI4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ3c2F0Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ3c2F0XzEyOEIsIDU2MzEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndzYXRfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3Vid3NhdF9kdiwgNTYzNDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3Vid3NhdF9kdgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3Vid3NhdF9kdl8xMjhCLCA1NjM3OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ3c2F0X2R2XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN3YXAsIDU2NDE2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN3YXAKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN3YXBfMTI4QiwgNTY0NDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3dhcF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z0bXB5YiwgNTY0NzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnRtcHliXzEyOEIsIDU2NTAzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHliXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnRtcHliX2FjYywgNTY1MzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWJfYWNjCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z0bXB5Yl9hY2NfMTI4QiwgNTY1Njh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWJfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnRtcHlidXMsIDU2NjA1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHlidXMKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnRtcHlidXNfMTI4QiwgNTY2MzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWJ1c18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z0bXB5YnVzX2FjYywgNTY2NzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWJ1c19hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnRtcHlidXNfYWNjXzEyOEIsIDU2NzA0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHlidXNfYWNjXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnRtcHloYiwgNTY3NDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWhiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z0bXB5aGJfMTI4QiwgNTY3NzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWhiXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnRtcHloYl9hY2MsIDU2ODA2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnRtcHloYl9hY2MKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnRtcHloYl9hY2NfMTI4QiwgNTY4Mzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWhiX2FjY18xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z1bnBhY2tiLCA1Njg3N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2tiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z1bnBhY2tiXzEyOEIsIDU2OTA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja2JfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dW5wYWNraCwgNTY5NDJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNraAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dW5wYWNraF8xMjhCLCA1Njk3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2toXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnVucGFja29iLCA1NzAwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2tvYgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dW5wYWNrb2JfMTI4QiwgNTcwMzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrb2JfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dW5wYWNrb2gsIDU3MDc0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja29oCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z1bnBhY2tvaF8xMjhCLCA1NzEwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2tvaF8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z1bnBhY2t1YiwgNTcxNDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrdWIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnVucGFja3ViXzEyOEIsIDU3MTcyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja3ViXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnVucGFja3VoLCA1NzIwOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2t1aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dW5wYWNrdWhfMTI4QiwgNTcyMzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrdWhfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92eG9yLCA1NzI3NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z4b3IKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnhvcl8xMjhCLCA1NzMwMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z4b3JfMTI4QgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92emIsIDU3MzMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnpiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z6Yl8xMjhCLCA1NzM1N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z6Yl8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z6aCwgNTczODd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92emgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnpoXzEyOEIsIDU3NDEyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnpoXzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fWTJfZGNjbGVhbmEsIDU3NDQyfSwgLy8gX19idWlsdGluX0hFWEFHT05fWTJfZGNjbGVhbmEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fWTJfZGNjbGVhbmludmEsIDU3NDcyfSwgLy8gX19idWlsdGluX0hFWEFHT05fWTJfZGNjbGVhbmludmEKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fWTJfZGNpbnZhLCA1NzUwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1kyX2RjaW52YQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9ZMl9kY3plcm9hLCA1NzUzM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1kyX2RjemVyb2EKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fWTRfbDJmZXRjaCwgNTc1NjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9ZNF9sMmZldGNoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1k1X2wyZmV0Y2gsIDU3NTkxfSwgLy8gX19idWlsdGluX0hFWEFHT05fWTVfbDJmZXRjaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9wcmVmZXRjaCwgNTc4NTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9wcmVmZXRjaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkY2FycnksIDMzNTQ5fSwgLy8gX19idWlsdGluX0hFWEFHT05fdjZfdmFkZGNhcnJ5Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRjYXJyeV8xMjhCLCAzMzU4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX3Y2X3ZhZGRjYXJyeV8xMjhCCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJjYXJyeSwgNTQ4OTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl92Nl92c3ViY2FycnkKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmNhcnJ5XzEyOEIsIDU0OTMwfSwgLy8gX19idWlsdGluX0hFWEFHT05fdjZfdnN1YmNhcnJ5XzEyOEIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fbW0yNTZpX3ZhZGR3LCA1NzgzM30sIC8vIF9fYnVpbHRpbl9fbW0yNTZpX3ZhZGR3Ci0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3N0b3JlcmJfcGJyLCAyODE4MX0sIC8vIF9fYnVpbHRpbl9icmV2X3N0YgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9zdG9yZXJkX3BiciwgMjgyMDB9LCAvLyBfX2J1aWx0aW5fYnJldl9zdGQKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfc3RvcmVyaF9wYnIsIDI4MjQwfSwgLy8gX19idWlsdGluX2JyZXZfc3RoCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3N0b3JlcmZfcGJyLCAyODIxOX0sIC8vIF9fYnVpbHRpbl9icmV2X3N0aGhpCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3N0b3JlcmlfcGJyLCAyODI1OX0sIC8vIF9fYnVpbHRpbl9icmV2X3N0dwotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9jaXJjX2xkYiwgNTc2MjB9LCAvLyBfX2J1aWx0aW5fY2lyY19sZGIKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fY2lyY19sZGQsIDU3NjM5fSwgLy8gX19idWlsdGluX2NpcmNfbGRkCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX2NpcmNfbGRoLCA1NzY1OH0sIC8vIF9fYnVpbHRpbl9jaXJjX2xkaAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9jaXJjX2xkdWIsIDU3Njc3fSwgLy8gX19idWlsdGluX2NpcmNfbGR1YgotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9jaXJjX2xkdWgsIDU3Njk3fSwgLy8gX19idWlsdGluX2NpcmNfbGR1aAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9jaXJjX2xkdywgNTc3MTd9LCAvLyBfX2J1aWx0aW5fY2lyY19sZHcKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fY2lyY19zdGIsIDU3NzM2fSwgLy8gX19idWlsdGluX2NpcmNfc3RiCi0gICAgICB7SW50cmluc2ljOjpoZXhhZ29uX2NpcmNfc3RkLCA1Nzc1NX0sIC8vIF9fYnVpbHRpbl9jaXJjX3N0ZAotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9jaXJjX3N0aCwgNTc3NzR9LCAvLyBfX2J1aWx0aW5fY2lyY19zdGgKLSAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fY2lyY19zdGhoaSwgNTc3OTN9LCAvLyBfX2J1aWx0aW5fY2lyY19zdGhoaQotICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9jaXJjX3N0dywgNTc4MTR9LCAvLyBfX2J1aWx0aW5fY2lyY19zdHcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWJzLCA0MTMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYWJzCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX2Fic3AsIDQxNTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hYnNwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX2Fic3NhdCwgNDE4NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2Fic3NhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hZGQsIDQyMTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWRkaF9oMTZfaGgsIDQyMzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9oaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hZGRoX2gxNl9obCwgNDI3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfaDE2X2hsCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX2FkZGhfaDE2X2xoLCA0MzAzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9oMTZfbGgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWRkaF9oMTZfbGwsIDQzMzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9sbAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hZGRoX2gxNl9zYXRfaGgsIDQzNjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9zYXRfaGgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWRkaF9oMTZfc2F0X2hsLCA0NDA2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYWRkaF9oMTZfc2F0X2hsCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX2FkZGhfaDE2X3NhdF9saCwgNDQ0M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfaDE2X3NhdF9saAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hZGRoX2gxNl9zYXRfbGwsIDQ0ODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2gxNl9zYXRfbGwKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWRkaF9sMTZfaGwsIDQ1MTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2wxNl9obAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hZGRoX2wxNl9sbCwgNDU1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfbDE2X2xsCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX2FkZGhfbDE2X3NhdF9obCwgNDU4M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGhfbDE2X3NhdF9obAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9hZGRoX2wxNl9zYXRfbGwsIDQ2MjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9hZGRoX2wxNl9zYXRfbGwKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWRkaSwgNDY1N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZGkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWRkcCwgNDY4M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZHAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWRkcHNhdCwgNDcwOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FkZHBzYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYWRkc2F0LCA0NzM4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYWRkc2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX2FkZHNwLCA0NzY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYWRkc3AKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYW5kLCA0NzkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYW5kCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX2FuZGlyLCA0ODE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfYW5kaXIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYW5kcCwgNDg0NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FuZHAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYXNsaCwgNDg3MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FzbGgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfYXNyaCwgNDg5N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2FzcmgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfY29tYmluZV9oaCwgNDkyM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2NvbWJpbmVfaGgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfY29tYmluZV9obCwgNDk1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2NvbWJpbmVfaGwKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfY29tYmluZV9saCwgNDk4N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2NvbWJpbmVfbGgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfY29tYmluZV9sbCwgNTAxOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX2NvbWJpbmVfbGwKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfY29tYmluZWlpLCA1MDUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfY29tYmluZWlpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX2NvbWJpbmV3LCA1MDgyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfY29tYmluZXcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfbWF4LCA1MTEyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfbWF4CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX21heHAsIDUxMzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9tYXhwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX21heHUsIDUxNjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9tYXh1CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX21heHVwLCA1MTg5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfbWF4dXAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfbWluLCA1MjE2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfbWluCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX21pbnAsIDUyNDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9taW5wCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX21pbnUsIDUyNjd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9taW51CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX21pbnVwLCA1MjkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfbWludXAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfbmVnLCA1MzIwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfbmVnCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX25lZ3AsIDUzNDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9uZWdwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX25lZ3NhdCwgNTM3MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX25lZ3NhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9ub3QsIDUzOTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9ub3QKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfbm90cCwgNTQyNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX25vdHAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfb3IsIDU0NTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9vcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9vcmlyLCA1NDc0fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfb3JpcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9vcnAsIDU1MDB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9vcnAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfcHhvcmYsIDU1MjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9weG9yZgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9yb3VuZHNhdCwgNTU1Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3JvdW5kc2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3NhdCwgNTU4Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3NhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zYXRiLCA1NjA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc2F0YgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zYXRoLCA1NjMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc2F0aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zYXR1YiwgNTY1OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3NhdHViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3NhdHVoLCA1Njg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc2F0dWgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ViLCA1NzEzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N1YmhfaDE2X2hoLCA1NzM4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfaGgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ViaF9oMTZfaGwsIDU3NzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9obAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdWJoX2gxNl9saCwgNTgwNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YmhfaDE2X2xoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N1YmhfaDE2X2xsLCA1ODM3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfbGwKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ViaF9oMTZfc2F0X2hoLCA1ODcwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfc2F0X2hoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N1YmhfaDE2X3NhdF9obCwgNTkwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N1YmhfaDE2X3NhdF9obAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdWJoX2gxNl9zYXRfbGgsIDU5NDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2gxNl9zYXRfbGgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ViaF9oMTZfc2F0X2xsLCA1OTgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9oMTZfc2F0X2xsCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N1YmhfbDE2X2hsLCA2MDE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9sMTZfaGwKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ViaF9sMTZfbGwsIDYwNTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2wxNl9sbAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdWJoX2wxNl9zYXRfaGwsIDYwODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJoX2wxNl9zYXRfaGwKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ViaF9sMTZfc2F0X2xsLCA2MTIxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ViaF9sMTZfc2F0X2xsCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N1YnAsIDYxNTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdWJwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N1YnJpLCA2MTg0fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3VicmkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3Vic2F0LCA2MjExfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3Vic2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N2YWRkaCwgNjIzOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N2YWRkaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdmFkZGhzLCA2MjY3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ZhZGRocworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdmFkZHVocywgNjI5Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N2YWRkdWhzCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3N2YXZnaCwgNjMyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N2YXZnaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdmF2Z2hzLCA2MzU0fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ZhdmdocworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdm5hdmdoLCA2MzgzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3ZuYXZnaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zdnN1YmgsIDY0MTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdnN1YmgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ZzdWJocywgNjQ0MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3N2c3ViaHMKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfc3ZzdWJ1aHMsIDY0Njl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl9zdnN1YnVocworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zd2l6LCA2NDk5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3dpegorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zeHRiLCA2NTI1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3h0YgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zeHRoLCA2NTUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3h0aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl9zeHR3LCA2NTc3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfc3h0dworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl90ZnIsIDY2MDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl90ZnIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdGZyY3JyLCA2NjI4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdGZyY3JyCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3RmcmloLCA2NjU2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdGZyaWgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdGZyaWwsIDY2ODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl90ZnJpbAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl90ZnJwLCA2NzEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdGZycAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl90ZnJwaSwgNjczNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3RmcnBpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3RmcnJjciwgNjc2M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3RmcnJjcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl90ZnJzaSwgNjc5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3RmcnNpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZhYnNoLCA2ODE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmFic2gKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmFic2hzYXQsIDY4NDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YWJzaHNhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YWJzdywgNjg3NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhYnN3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZhYnN3c2F0LCA2OTAyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmFic3dzYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmFkZGJfbWFwLCA2OTMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmFkZGJfbWFwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZhZGRoLCA2OTYzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmFkZGgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmFkZGhzLCA2OTkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmFkZGhzCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZhZGR1YiwgNzAxOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGR1YgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YWRkdWJzLCA3MDQ2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmFkZHVicworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YWRkdWhzLCA3MDc1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmFkZHVocworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YWRkdywgNzEwNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGR3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZhZGR3cywgNzEzMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhZGR3cworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YXZnaCwgNzE1OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhdmdoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZhdmdoY3IsIDcxODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZnaGNyCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZhdmdociwgNzIxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZhdmdocgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YXZndWIsIDcyNDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZndWIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmF2Z3ViciwgNzI3MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd1YnIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmF2Z3VoLCA3MzAwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmF2Z3VoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3Zhdmd1aHIsIDczMjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZndWhyCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3Zhdmd1dywgNzM1N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd1dworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YXZndXdyLCA3Mzg1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmF2Z3V3cgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92YXZndywgNzQxNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3Zhdmd3Y3IsIDc0NDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92YXZnd2NyCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3Zhdmd3ciwgNzQ3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zhdmd3cgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92Y21wYmVxLCA3NDk4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmNtcGJlcQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92Y21wYmd0dSwgNzUyN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZjbXBiZ3R1CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZjbXBoZXEsIDc1NTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y21waGVxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZjbXBoZ3QsIDc1ODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y21waGd0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZjbXBoZ3R1LCA3NjE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdmNtcGhndHUKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmNtcHdlcSwgNzY0NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZjbXB3ZXEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmNtcHdndCwgNzY3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZjbXB3Z3QKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdmNtcHdndHUsIDc3MDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92Y21wd2d0dQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92Y29uaiwgNzczM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zjb25qCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZtYXhiLCA3NzYwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdm1heGIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdm1heGgsIDc3ODd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWF4aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92bWF4dWIsIDc4MTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWF4dWIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdm1heHVoLCA3ODQyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdm1heHVoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZtYXh1dywgNzg3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtYXh1dworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92bWF4dywgNzg5OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtYXh3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZtaW5iLCA3OTI1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdm1pbmIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdm1pbmgsIDc5NTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWluaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92bWludWIsIDc5Nzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bWludWIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdm1pbnVoLCA4MDA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdm1pbnVoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZtaW51dywgODAzNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtaW51dworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92bWludywgODA2M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZtaW53CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZuYXZnaCwgODA5MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZuYXZnaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92bmF2Z2hjciwgODExOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZuYXZnaGNyCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZuYXZnaHIsIDgxNDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bmF2Z2hyCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZuYXZndywgODE3N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZuYXZndworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92bmF2Z3djciwgODIwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3ZuYXZnd2NyCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZuYXZnd3IsIDgyMzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92bmF2Z3dyCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZyYWRkdWIsIDgyNjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92cmFkZHViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZyYWRkdWJfYWNjLCA4MjkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdnJhZGR1Yl9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdnJzYWR1YiwgODMyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3Zyc2FkdWIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdnJzYWR1Yl9hY2MsIDgzNTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92cnNhZHViX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92c3ViYl9tYXAsIDgzODh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92c3ViYl9tYXAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdnN1YmgsIDg0MTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92c3ViaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl92c3ViaHMsIDg0NDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92c3ViaHMKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdnN1YnViLCA4NDc0fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdnN1YnViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZzdWJ1YnMsIDg1MDJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92c3VidWJzCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZzdWJ1aHMsIDg1MzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BMl92c3VidWhzCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3ZzdWJ3LCA4NTYwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdnN1YncKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTJfdnN1YndzLCA4NTg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfdnN1YndzCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0EyX3hvciwgODYxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0EyX3hvcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl94b3JwLCA4NjQwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfeG9ycAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl96eHRiLCA4NjY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfenh0YgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BMl96eHRoLCA4NjkyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTJfenh0aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9hZGRwX2MsIDg3MTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9hZGRwX2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfYW5kbiwgODc0Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2FuZG4KKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfYW5kbnAsIDg3NzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9hbmRucAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9iaXRzcGxpdCwgODc5OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2JpdHNwbGl0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X2JpdHNwbGl0aSwgODgyOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2JpdHNwbGl0aQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9ib3VuZHNjaGVjaywgODg2MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2JvdW5kc2NoZWNrCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X2NtcGJlcSwgODg5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGJlcQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9jbXBiZXFpLCA4OTIxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfY21wYmVxaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9jbXBiZ3QsIDg5NTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBiZ3QKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfY21wYmd0aSwgODk3OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGJndGkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfY21wYmd0dSwgOTAwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGJndHUKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfY21wYmd0dWksIDkwMzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBiZ3R1aQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9jbXBoZXEsIDkwNjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBoZXEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfY21waGVxaSwgOTA5NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2NtcGhlcWkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfY21waGd0LCA5MTIzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfY21waGd0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X2NtcGhndGksIDkxNTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBoZ3RpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X2NtcGhndHUsIDkxODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jbXBoZ3R1CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X2NtcGhndHVpLCA5MjA5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfY21waGd0dWkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfY29tYmluZWlpLCA5MjM5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfY29tYmluZWlpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X2NvbWJpbmVpciwgOTI3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2NvbWJpbmVpcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9jb21iaW5lcmksIDkzMDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9jb21iaW5lcmkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfY3JvdW5kX3JpLCA5MzMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfY3JvdW5kX3JpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X2Nyb3VuZF9yciwgOTM2M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X2Nyb3VuZF9ycgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9tb2R3cmFwdSwgOTM5NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X21vZHdyYXB1CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X29ybiwgOTQyNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X29ybgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9vcm5wLCA5NDQ5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfb3JucAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9yY21wZXEsIDk0NzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9yY21wZXEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfcmNtcGVxaSwgOTUwM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3JjbXBlcWkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfcmNtcG5lcSwgOTUzMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3JjbXBuZXEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfcmNtcG5lcWksIDk1NjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9yY21wbmVxaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9yb3VuZF9yaSwgOTU5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3JvdW5kX3JpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3JvdW5kX3JpX3NhdCwgOTYyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3JvdW5kX3JpX3NhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9yb3VuZF9yciwgOTY1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3JvdW5kX3JyCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3JvdW5kX3JyX3NhdCwgOTY4NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3JvdW5kX3JyX3NhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF9zdWJwX2MsIDk3MTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF9zdWJwX2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdGZyY3BwLCA5NzQ3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfdGZyY3BwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3RmcnBjcCwgOTc3NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3RmcnBjcAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF90bGJtYXRjaCwgOTgwM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3RsYm1hdGNoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3ZjbXBiZXFfYW55LCA5ODMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfdmNtcGJlcV9hbnkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdmNtcGJlcWksIDk4NjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21wYmVxaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF92Y21wYmd0LCA5ODk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfdmNtcGJndAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF92Y21wYmd0aSwgOTkyNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBiZ3RpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3ZjbXBiZ3R1aSwgOTk1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBiZ3R1aQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF92Y21waGVxaSwgOTk4Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBoZXFpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3ZjbXBoZ3RpLCAxMDAxNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXBoZ3RpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3ZjbXBoZ3R1aSwgMTAwNDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9BNF92Y21waGd0dWkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdmNtcHdlcWksIDEwMDc3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfdmNtcHdlcWkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdmNtcHdndGksIDEwMTA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfdmNtcHdndGkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdmNtcHdndHVpLCAxMDEzN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZjbXB3Z3R1aQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF92cm1heGgsIDEwMTY4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfdnJtYXhoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3ZybWF4dWgsIDEwMTk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfdnJtYXh1aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF92cm1heHV3LCAxMDIyNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWF4dXcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdnJtYXh3LCAxMDI1NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWF4dworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF92cm1pbmgsIDEwMjgyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfdnJtaW5oCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E0X3ZybWludWgsIDEwMzEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQTRfdnJtaW51aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNF92cm1pbnV3LCAxMDMzOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWludXcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQTRfdnJtaW53LCAxMDM2OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E0X3ZybWludworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9BNV9BQ1MsIDEwMzk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTVfQUNTCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E1X3ZhZGRodWJzLCAxMDQyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E1X3ZhZGRodWJzCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E2X3ZjbXBiZXFfbm90YW55LCAxMDQ1MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0E2X3ZjbXBiZXFfbm90YW55CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0E2X3ZtaW51Yl9SZFAsIDEwNDg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQTZfdm1pbnViX1JkUAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9hbGw4LCAxMDUxOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX2FsbDgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfYW5kLCAxMDU0NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX2FuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9hbmRuLCAxMDU3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX2FuZG4KKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfYW55OCwgMTA1OTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9hbnk4CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX2JpdHNjbHIsIDEwNjIyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfYml0c2NscgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9iaXRzY2xyaSwgMTA2NTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9iaXRzY2xyaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9iaXRzc2V0LCAxMDY4MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX2JpdHNzZXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfY21wZXEsIDEwNzEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfY21wZXEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfY21wZXFpLCAxMDczN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGVxaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9jbXBlcXAsIDEwNzY1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfY21wZXFwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX2NtcGdlaSwgMTA3OTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBnZWkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfY21wZ2V1aSwgMTA4MjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBnZXVpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX2NtcGd0LCAxMDg1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGd0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX2NtcGd0aSwgMTA4Nzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9jbXBndGkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfY21wZ3RwLCAxMDkwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGd0cAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9jbXBndHUsIDEwOTMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfY21wZ3R1CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX2NtcGd0dWksIDEwOTYxfSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfY21wZ3R1aQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9jbXBndHVwLCAxMDk5MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGd0dXAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfY21wbHQsIDExMDE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfY21wbHQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfY21wbHR1LCAxMTA0Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX2NtcGx0dQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9tYXNrLCAxMTA3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfbXV4LCAxMTEwMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX211eAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9tdXhpaSwgMTExMjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9tdXhpaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9tdXhpciwgMTExNTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9tdXhpcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9tdXhyaSwgMTExNzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9tdXhyaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl9ub3QsIDExMjA2fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzJfbm90CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX29yLCAxMTIzMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX29yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX29ybiwgMTEyNTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl9vcm4KKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfcHhmZXJfbWFwLCAxMTI4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX3B4ZmVyX21hcAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl90ZnJwciwgMTEzMTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl90ZnJwcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl90ZnJycCwgMTEzMzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl90ZnJycAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DMl92aXRwYWNrLCAxMTM2NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0MyX3ZpdHBhY2sKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzJfdm11eCwgMTEzOTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl92bXV4CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0MyX3hvciwgMTE0MjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DMl94b3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzRfYW5kX2FuZCwgMTE0NDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DNF9hbmRfYW5kCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0M0X2FuZF9hbmRuLCAxMTQ3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0M0X2FuZF9hbmRuCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0M0X2FuZF9vciwgMTE1MDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DNF9hbmRfb3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzRfYW5kX29ybiwgMTE1MzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DNF9hbmRfb3JuCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0M0X2NtcGx0ZSwgMTE1NjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DNF9jbXBsdGUKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzRfY21wbHRlaSwgMTE1ODl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DNF9jbXBsdGVpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0M0X2NtcGx0ZXUsIDExNjE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzRfY21wbHRldQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DNF9jbXBsdGV1aSwgMTE2NDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DNF9jbXBsdGV1aQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DNF9jbXBuZXEsIDExNjc3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzRfY21wbmVxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0M0X2NtcG5lcWksIDExNzA1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzRfY21wbmVxaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DNF9mYXN0Y29ybmVyOSwgMTE3MzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DNF9mYXN0Y29ybmVyOQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DNF9mYXN0Y29ybmVyOV9ub3QsIDExNzY3fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzRfZmFzdGNvcm5lcjlfbm90CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0M0X25iaXRzY2xyLCAxMTgwNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0M0X25iaXRzY2xyCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0M0X25iaXRzY2xyaSwgMTE4MzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9DNF9uYml0c2NscmkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzRfbmJpdHNzZXQsIDExODY1fSwgLy8gX19idWlsdGluX0hFWEFHT05fQzRfbmJpdHNzZXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzRfb3JfYW5kLCAxMTg5NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0M0X29yX2FuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9DNF9vcl9hbmRuLCAxMTkyM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0M0X29yX2FuZG4KKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzRfb3Jfb3IsIDExOTUyfSwgLy8gX19idWlsdGluX0hFWEFHT05fQzRfb3Jfb3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fQzRfb3Jfb3JuLCAxMTk3OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0M0X29yX29ybgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X2QyZGYsIDEyMDA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl9kMmRmCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfZDJzZiwgMTIwMzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2Qyc2YKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl9kZjJkLCAxMjA2OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYyZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X2RmMmRfY2hvcCwgMTIxMDB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMmRfY2hvcAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X2RmMnNmLCAxMjEzNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYyc2YKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl9kZjJ1ZCwgMTIxNjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMnVkCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfZGYydWRfY2hvcCwgMTIyMDB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMnVkX2Nob3AKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl9kZjJ1dywgMTIyMzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMnV3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfZGYydXdfY2hvcCwgMTIyNjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMnV3X2Nob3AKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl9kZjJ3LCAxMjMwNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfZGYydworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X2RmMndfY2hvcCwgMTIzMzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X2RmMndfY2hvcAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X3NmMmQsIDEyMzczfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl9zZjJkCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfc2YyZF9jaG9wLCAxMjQwNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YyZF9jaG9wCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfc2YyZGYsIDEyNDQwfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl9zZjJkZgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X3NmMnVkLCAxMjQ3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YydWQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl9zZjJ1ZF9jaG9wLCAxMjUwNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YydWRfY2hvcAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X3NmMnV3LCAxMjU0MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YydXcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl9zZjJ1d19jaG9wLCAxMjU3M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2YydXdfY2hvcAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X3NmMncsIDEyNjEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl9zZjJ3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfc2Yyd19jaG9wLCAxMjY0MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfc2Yyd19jaG9wCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfdWQyZGYsIDEyNjc3fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl91ZDJkZgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X3VkMnNmLCAxMjcwOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2NvbnZfdWQyc2YKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfY29udl91dzJkZiwgMTI3NDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3V3MmRmCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfdXcyc2YsIDEyNzczfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl91dzJzZgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9jb252X3cyZGYsIDEyODA1fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfY29udl93MmRmCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2NvbnZfdzJzZiwgMTI4MzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9jb252X3cyc2YKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfZGZhZGQsIDEyODY3fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfZGZhZGQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfZGZjbGFzcywgMTI4OTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9kZmNsYXNzCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2RmY21wZXEsIDEyOTIzfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfZGZjbXBlcQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9kZmNtcGdlLCAxMjk1Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmY21wZ2UKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfZGZjbXBndCwgMTI5ODF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9kZmNtcGd0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2RmY21wdW8sIDEzMDEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfZGZjbXB1bworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9kZmltbV9uLCAxMzAzOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2RmaW1tX24KKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfZGZpbW1fcCwgMTMwNjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9kZmltbV9wCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX2Rmc3ViLCAxMzA5N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX2Rmc3ViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3NmYWRkLCAxMzEyNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmYWRkCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3NmY2xhc3MsIDEzMTUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfc2ZjbGFzcworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZmNtcGVxLCAxMzE4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmY21wZXEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfc2ZjbXBnZSwgMTMyMDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmNtcGdlCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3NmY21wZ3QsIDEzMjM4fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfc2ZjbXBndAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZmNtcHVvLCAxMzI2N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmY21wdW8KKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfc2ZmaXh1cGQsIDEzMjk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfc2ZmaXh1cGQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfc2ZmaXh1cG4sIDEzMzI2fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfc2ZmaXh1cG4KKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfc2ZmaXh1cHIsIDEzMzU2fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfc2ZmaXh1cHIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfc2ZmbWEsIDEzMzg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfc2ZmbWEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfc2ZmbWFfbGliLCAxMzQxM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmZm1hX2xpYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZmZtYV9zYywgMTM0NDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZtYV9zYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZmZtcywgMTM0NzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmZtcworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZmZtc19saWIsIDEzNTAxfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfc2ZmbXNfbGliCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3NmaW1tX24sIDEzNTMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fRjJfc2ZpbW1fbgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9GMl9zZmltbV9wLCAxMzU2MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmaW1tX3AKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fRjJfc2ZpbnZzcXJ0YSwgMTM1OTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9GMl9zZmludnNxcnRhCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3NmbWF4LCAxMzYyMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmbWF4CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3NmbWluLCAxMzY0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmbWluCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3NmbXB5LCAxMzY3Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmbXB5CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3NmcmVjaXBhLCAxMzcwM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX3NmcmVjaXBhCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0YyX3Nmc3ViLCAxMzczM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0YyX3Nmc3ViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX0wyX2xvYWR3X2xvY2tlZCwgMTM3NjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9MMl9sb2Fkd19sb2NrZWQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTDRfbG9hZGRfbG9ja2VkLCAxMzc5NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX0w0X2xvYWRkX2xvY2tlZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9hY2NpLCAxMzgyOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2FjY2kKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfYWNjaWksIDEzODU0fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfYWNjaWkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfY21hY2lfczAsIDEzODgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfY21hY2lfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfY21hY3JfczAsIDEzOTExfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfY21hY3JfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfY21hY3NfczAsIDEzOTQxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfY21hY3NfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfY21hY3NfczEsIDEzOTcxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfY21hY3NfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfY21hY3NjX3MwLCAxNDAwMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2NtYWNzY19zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9jbWFjc2NfczEsIDE0MDMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfY21hY3NjX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NtcHlpX3MwLCAxNDA2M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlpX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NtcHlyX3MwLCAxNDA5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlyX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NtcHlyc19zMCwgMTQxMjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5cnNfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfY21weXJzX3MxLCAxNDE1NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlyc19zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9jbXB5cnNjX3MwLCAxNDE4NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlyc2NfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfY21weXJzY19zMSwgMTQyMTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5cnNjX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NtcHlzX3MwLCAxNDI0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlzX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NtcHlzX3MxLCAxNDI3OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlzX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NtcHlzY19zMCwgMTQzMDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbXB5c2NfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfY21weXNjX3MxLCAxNDM0MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2NtcHlzY19zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9jbmFjc19zMCwgMTQzNzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbmFjc19zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9jbmFjc19zMSwgMTQ0MDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbmFjc19zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9jbmFjc2NfczAsIDE0NDMxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfY25hY3NjX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2NuYWNzY19zMSwgMTQ0NjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9jbmFjc2NfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfZHBtcHlzc19hY2NfczAsIDE0NDkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHlzc19hY2NfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfZHBtcHlzc19uYWNfczAsIDE0NTI5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHlzc19uYWNfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfZHBtcHlzc19ybmRfczAsIDE0NTY1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHlzc19ybmRfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfZHBtcHlzc19zMCwgMTQ2MDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9kcG1weXNzX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2RwbXB5dXVfYWNjX3MwLCAxNDYzM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2RwbXB5dXVfYWNjX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2RwbXB5dXVfbmFjX3MwLCAxNDY2OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2RwbXB5dXVfbmFjX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX2RwbXB5dXVfczAsIDE0NzA1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfZHBtcHl1dV9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9obW1weWhfcnMxLCAxNDczN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2htbXB5aF9yczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfaG1tcHloX3MxLCAxNDc2OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2htbXB5aF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9obW1weWxfcnMxLCAxNDgwMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2htbXB5bF9yczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfaG1tcHlsX3MxLCAxNDgzMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX2htbXB5bF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tYWNpLCAxNDg2M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21hY2kKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbWFjc2luLCAxNDg4OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21hY3NpbgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tYWNzaXAsIDE0OTE3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbWFjc2lwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tYWNoc19yczAsIDE0OTQ1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1hY2hzX3JzMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbWFjaHNfcnMxLCAxNDk3N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNoc19yczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1hY2hzX3MwLCAxNTAwOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNoc19zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbWFjaHNfczEsIDE1MDQwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1hY2hzX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tYWNsc19yczAsIDE1MDcxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1hY2xzX3JzMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbWFjbHNfcnMxLCAxNTEwM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNsc19yczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1hY2xzX3MwLCAxNTEzNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWNsc19zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbWFjbHNfczEsIDE1MTY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1hY2xzX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tYWN1aHNfcnMwLCAxNTE5N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1aHNfcnMwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tYWN1aHNfcnMxLCAxNTIzMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1aHNfcnMxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tYWN1aHNfczAsIDE1MjYzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1hY3Voc19zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbWFjdWhzX3MxLCAxNTI5NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tYWN1aHNfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1hY3Vsc19yczAsIDE1MzI3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1hY3Vsc19yczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1hY3Vsc19yczEsIDE1MzYwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1hY3Vsc19yczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1hY3Vsc19zMCwgMTUzOTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbWFjdWxzX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tYWN1bHNfczEsIDE1NDI1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1hY3Vsc19zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbXB5aF9yczAsIDE1NDU3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1weWhfcnMwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tcHloX3JzMSwgMTU0ODh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tbXB5aF9yczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1weWhfczAsIDE1NTE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1weWhfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1weWhfczEsIDE1NTQ5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1weWhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1weWxfcnMwLCAxNTU3OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHlsX3JzMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbXB5bF9yczEsIDE1NjEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1weWxfcnMxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tcHlsX3MwLCAxNTY0MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHlsX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tcHlsX3MxLCAxNTY3MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHlsX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tcHl1aF9yczAsIDE1NzAxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1weXVoX3JzMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbXB5dWhfcnMxLCAxNTczM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHl1aF9yczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1weXVoX3MwLCAxNTc2NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHl1aF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbXB5dWhfczEsIDE1Nzk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1weXVoX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21tcHl1bF9yczAsIDE1ODI3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1weXVsX3JzMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbXB5dWxfcnMxLCAxNTg1OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHl1bF9yczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbW1weXVsX3MwLCAxNTg5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21tcHl1bF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tbXB5dWxfczEsIDE1OTIyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbW1weXVsX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21uYWNpLCAxNTk1M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21uYWNpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9hY2NfaGhfczAsIDE1OTgwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19oaF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfYWNjX2hoX3MxLCAxNjAxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfaGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2FjY19obF9zMCwgMTYwNTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX2hsX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9hY2NfaGxfczEsIDE2MDg1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19obF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfYWNjX2xoX3MwLCAxNjEyMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfbGhfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2FjY19saF9zMSwgMTYxNTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfYWNjX2xoX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9hY2NfbGxfczAsIDE2MTkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19sbF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfYWNjX2xsX3MxLCAxNjIyNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9hY2NfbGxfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2FjY19zYXRfaGhfczAsIDE2MjYwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfaGhfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2FjY19zYXRfaGhfczEsIDE2Mjk5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfaGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2FjY19zYXRfaGxfczAsIDE2MzM4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfaGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2FjY19zYXRfaGxfczEsIDE2Mzc3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfaGxfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2FjY19zYXRfbGhfczAsIDE2NDE2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfbGhfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2FjY19zYXRfbGhfczEsIDE2NDU1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfbGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2FjY19zYXRfbGxfczAsIDE2NDk0fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfbGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2FjY19zYXRfbGxfczEsIDE2NTMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2FjY19zYXRfbGxfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2hoX3MwLCAxNjU3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9oaF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfaGhfczEsIDE2NjAzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2hoX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9obF9zMCwgMTY2MzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfaGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2hsX3MxLCAxNjY2NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9obF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfbGhfczAsIDE2Njk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2xoX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9saF9zMSwgMTY3Mjd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X2xsX3MwLCAxNjc1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9sbF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfbGxfczEsIDE2Nzg5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X2xsX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9uYWNfaGhfczAsIDE2ODIwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19oaF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfbmFjX2hoX3MxLCAxNjg1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfaGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X25hY19obF9zMCwgMTY4OTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX2hsX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9uYWNfaGxfczEsIDE2OTI1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19obF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfbmFjX2xoX3MwLCAxNjk2MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfbGhfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X25hY19saF9zMSwgMTY5OTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfbmFjX2xoX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9uYWNfbGxfczAsIDE3MDMwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19sbF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfbmFjX2xsX3MxLCAxNzA2NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9uYWNfbGxfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X25hY19zYXRfaGhfczAsIDE3MTAwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfaGhfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X25hY19zYXRfaGhfczEsIDE3MTM5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfaGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X25hY19zYXRfaGxfczAsIDE3MTc4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfaGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X25hY19zYXRfaGxfczEsIDE3MjE3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfaGxfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X25hY19zYXRfbGhfczAsIDE3MjU2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfbGhfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X25hY19zYXRfbGhfczEsIDE3Mjk1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfbGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X25hY19zYXRfbGxfczAsIDE3MzM0fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfbGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X25hY19zYXRfbGxfczEsIDE3MzczfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X25hY19zYXRfbGxfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X3JuZF9oaF9zMCwgMTc0MTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfcm5kX2hoX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9ybmRfaGhfczEsIDE3NDQ3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3JuZF9oaF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfcm5kX2hsX3MwLCAxNzQ4Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfaGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X3JuZF9obF9zMSwgMTc1MTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfcm5kX2hsX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9ybmRfbGhfczAsIDE3NTUyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3JuZF9saF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfcm5kX2xoX3MxLCAxNzU4N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9ybmRfbGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X3JuZF9sbF9zMCwgMTc2MjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfcm5kX2xsX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9ybmRfbGxfczEsIDE3NjU3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3JuZF9sbF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfc2F0X2hoX3MwLCAxNzY5Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfaGhfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X3NhdF9oaF9zMSwgMTc3Mjd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X2hoX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9zYXRfaGxfczAsIDE3NzYyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9obF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfc2F0X2hsX3MxLCAxNzc5N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfaGxfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X3NhdF9saF9zMCwgMTc4MzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X2xoX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9zYXRfbGhfczEsIDE3ODY3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5X3NhdF9saF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfc2F0X2xsX3MwLCAxNzkwMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfbGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X3NhdF9sbF9zMSwgMTc5Mzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfc2F0X2xsX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9zYXRfcm5kX2hoX3MwLCAxNzk3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2hoX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9zYXRfcm5kX2hoX3MxLCAxODAxMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2hoX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9zYXRfcm5kX2hsX3MwLCAxODA1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2hsX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9zYXRfcm5kX2hsX3MxLCAxODA4OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2hsX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9zYXRfcm5kX2xoX3MwLCAxODEyOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2xoX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9zYXRfcm5kX2xoX3MxLCAxODE2N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2xoX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9zYXRfcm5kX2xsX3MwLCAxODIwNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2xsX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV9zYXRfcm5kX2xsX3MxLCAxODI0NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV9zYXRfcm5kX2xsX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weV91cCwgMTgyODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlfdXAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5X3VwX3MxLCAxODMxMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV91cF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlfdXBfczFfc2F0LCAxODM0M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weV91cF9zMV9zYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9hY2NfaGhfczAsIDE4Mzc4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfaGhfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9hY2NfaGhfczEsIDE4NDE0fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfaGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9hY2NfaGxfczAsIDE4NDUwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfaGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9hY2NfaGxfczEsIDE4NDg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfaGxfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9hY2NfbGhfczAsIDE4NTIyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfbGhfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9hY2NfbGhfczEsIDE4NTU4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfbGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9hY2NfbGxfczAsIDE4NTk0fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfbGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9hY2NfbGxfczEsIDE4NjMwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9hY2NfbGxfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9oaF9zMCwgMTg2NjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2hoX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weWRfaGhfczEsIDE4Njk4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9oaF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX2hsX3MwLCAxODczMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfaGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9obF9zMSwgMTg3NjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2hsX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weWRfbGhfczAsIDE4Nzk0fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9saF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX2xoX3MxLCAxODgyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWRfbGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5ZF9sbF9zMCwgMTg4NTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX2xsX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weWRfbGxfczEsIDE4ODkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5ZF9sbF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX25hY19oaF9zMCwgMTg5MjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX25hY19oaF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX25hY19oaF9zMSwgMTg5NTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX25hY19oaF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX25hY19obF9zMCwgMTg5OTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX25hY19obF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX25hY19obF9zMSwgMTkwMzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX25hY19obF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX25hY19saF9zMCwgMTkwNjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX25hY19saF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX25hY19saF9zMSwgMTkxMDJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX25hY19saF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX25hY19sbF9zMCwgMTkxMzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX25hY19sbF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX25hY19sbF9zMSwgMTkxNzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX25hY19sbF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX3JuZF9oaF9zMCwgMTkyMTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX3JuZF9oaF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX3JuZF9oaF9zMSwgMTkyNDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX3JuZF9oaF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX3JuZF9obF9zMCwgMTkyODJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX3JuZF9obF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX3JuZF9obF9zMSwgMTkzMTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX3JuZF9obF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX3JuZF9saF9zMCwgMTkzNTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX3JuZF9saF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX3JuZF9saF9zMSwgMTkzOTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX3JuZF9saF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX3JuZF9sbF9zMCwgMTk0MjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX3JuZF9sbF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlkX3JuZF9sbF9zMSwgMTk0NjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlkX3JuZF9sbF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlpLCAxOTQ5OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weWkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5c2luLCAxOTUyNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXNpbgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHlzaXAsIDE5NTUyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5c2lwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXNtaSwgMTk1ODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHlzbWkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5c3VfdXAsIDE5NjA4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5c3VfdXAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfaGhfczAsIDE5NjM4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfaGhfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfaGhfczEsIDE5Njc0fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfaGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfaGxfczAsIDE5NzEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfaGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfaGxfczEsIDE5NzQ2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfaGxfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfbGhfczAsIDE5NzgyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfbGhfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfbGhfczEsIDE5ODE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfbGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfbGxfczAsIDE5ODU0fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfbGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9hY2NfbGxfczEsIDE5ODkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9hY2NfbGxfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9oaF9zMCwgMTk5MjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2hoX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVfaGhfczEsIDE5OTU4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9oaF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X2hsX3MwLCAxOTk5MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfaGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9obF9zMSwgMjAwMjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2hsX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVfbGhfczAsIDIwMDU0fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9saF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X2xoX3MxLCAyMDA4Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfbGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dV9sbF9zMCwgMjAxMTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X2xsX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVfbGxfczEsIDIwMTUwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dV9sbF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19oaF9zMCwgMjAxODJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19oaF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19oaF9zMSwgMjAyMTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19oaF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19obF9zMCwgMjAyNTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19obF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19obF9zMSwgMjAyOTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19obF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19saF9zMCwgMjAzMjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19saF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19saF9zMSwgMjAzNjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19saF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19sbF9zMCwgMjAzOTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19sbF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X25hY19sbF9zMSwgMjA0MzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1X25hY19sbF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1X3VwLCAyMDQ3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVfdXAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dWRfYWNjX2hoX3MwLCAyMDQ5OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2FjY19oaF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1ZF9hY2NfaGhfczEsIDIwNTM2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2hoX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2FjY19obF9zMCwgMjA1NzN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9hY2NfaGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dWRfYWNjX2hsX3MxLCAyMDYxMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2FjY19obF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1ZF9hY2NfbGhfczAsIDIwNjQ3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2xoX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2FjY19saF9zMSwgMjA2ODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9hY2NfbGhfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dWRfYWNjX2xsX3MwLCAyMDcyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2FjY19sbF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1ZF9hY2NfbGxfczEsIDIwNzU4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfYWNjX2xsX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2hoX3MwLCAyMDc5NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2hoX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2hoX3MxLCAyMDgyOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2hoX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2hsX3MwLCAyMDg2MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2hsX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2hsX3MxLCAyMDg5NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2hsX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2xoX3MwLCAyMDkyN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2xoX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2xoX3MxLCAyMDk2MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2xoX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2xsX3MwLCAyMDk5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2xsX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX2xsX3MxLCAyMTAyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX2xsX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX25hY19oaF9zMCwgMjEwNTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9uYWNfaGhfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dWRfbmFjX2hoX3MxLCAyMTA5Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19oaF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1ZF9uYWNfaGxfczAsIDIxMTMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbmFjX2hsX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX25hY19obF9zMSwgMjExNzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9uYWNfaGxfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dWRfbmFjX2xoX3MwLCAyMTIwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19saF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1ZF9uYWNfbGhfczEsIDIxMjQ0fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbXB5dWRfbmFjX2xoX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX21weXVkX25hY19sbF9zMCwgMjEyODF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1ZF9uYWNfbGxfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfbXB5dWRfbmFjX2xsX3MxLCAyMTMxOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX21weXVkX25hY19sbF9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9tcHl1aSwgMjEzNTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9tcHl1aQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9uYWNjaSwgMjEzODJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9uYWNjaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl9uYWNjaWksIDIxNDA5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfbmFjY2lpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3N1YmFjYywgMjE0Mzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl9zdWJhY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdmFic2RpZmZoLCAyMTQ2NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZhYnNkaWZmaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92YWJzZGlmZncsIDIxNDk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdmFic2RpZmZ3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZjbWFjX3MwX3NhdF9pLCAyMTUyN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbWFjX3MwX3NhdF9pCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZjbWFjX3MwX3NhdF9yLCAyMTU2M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbWFjX3MwX3NhdF9yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZjbXB5X3MwX3NhdF9pLCAyMTU5OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbXB5X3MwX3NhdF9pCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZjbXB5X3MwX3NhdF9yLCAyMTYzNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbXB5X3MwX3NhdF9yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZjbXB5X3MxX3NhdF9pLCAyMTY3MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbXB5X3MxX3NhdF9pCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZjbXB5X3MxX3NhdF9yLCAyMTcwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZjbXB5X3MxX3NhdF9yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZkbWFjc19zMCwgMjE3NDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92ZG1hY3NfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdmRtYWNzX3MxLCAyMTc3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZkbWFjc19zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92ZG1weXJzX3MwLCAyMTgwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZkbXB5cnNfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdmRtcHlyc19zMSwgMjE4Mzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92ZG1weXJzX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZkbXB5c19zMCwgMjE4Njl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92ZG1weXNfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdmRtcHlzX3MxLCAyMTkwMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZkbXB5c19zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92bWFjMiwgMjE5MzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92bWFjMmVzLCAyMTk1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtYWMyZXMKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdm1hYzJlc19zMCwgMjE5ODd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMmVzX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZtYWMyZXNfczEsIDIyMDE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJlc19zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92bWFjMnNfczAsIDIyMDUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJzX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZtYWMyc19zMSwgMjIwODJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMnNfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdm1hYzJzdV9zMCwgMjIxMTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bWFjMnN1X3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZtYWMyc3VfczEsIDIyMTQ1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdm1hYzJzdV9zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92bXB5MmVzX3MwLCAyMjE3N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtcHkyZXNfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdm1weTJlc19zMSwgMjIyMDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MmVzX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZtcHkyc19zMCwgMjIyNDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MnNfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdm1weTJzX3MwcGFjaywgMjIyNzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MnNfczBwYWNrCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZtcHkyc19zMSwgMjIzMDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MnNfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdm1weTJzX3MxcGFjaywgMjIzMzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92bXB5MnNfczFwYWNrCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZtcHkyc3VfczAsIDIyMzczfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdm1weTJzdV9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92bXB5MnN1X3MxLCAyMjQwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZtcHkyc3VfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdnJhZGRoLCAyMjQzN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyYWRkaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92cmFkZHVoLCAyMjQ2NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyYWRkdWgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdnJjbWFjaV9zMCwgMjI0OTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtYWNpX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZyY21hY2lfczBjLCAyMjUyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21hY2lfczBjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZyY21hY3JfczAsIDIyNTU5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdnJjbWFjcl9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92cmNtYWNyX3MwYywgMjI1OTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtYWNyX3MwYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92cmNtcHlpX3MwLCAyMjYyNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21weWlfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdnJjbXB5aV9zMGMsIDIyNjU2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdnJjbXB5aV9zMGMKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTJfdnJjbXB5cl9zMCwgMjI2ODl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NMl92cmNtcHlyX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZyY21weXJfczBjLCAyMjcyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21weXJfczBjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZyY21weXNfYWNjX3MxLCAyMjc1NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZyY21weXNfYWNjX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZyY21weXNfczEsIDIyNzkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdnJjbXB5c19zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NMl92cmNtcHlzX3MxcnAsIDIyODIyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTJfdnJjbXB5c19zMXJwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZybWFjX3MwLCAyMjg1Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZybWFjX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3ZybXB5X3MwLCAyMjg4Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3ZybXB5X3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX00yX3hvcl94YWNjLCAyMjkxNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX00yX3hvcl94YWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X2FuZF9hbmQsIDIyOTQ2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfYW5kX2FuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF9hbmRfYW5kbiwgMjI5NzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9hbmRfYW5kbgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF9hbmRfb3IsIDIzMDA1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfYW5kX29yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X2FuZF94b3IsIDIzMDMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfYW5kX3hvcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF9jbXB5aV93aCwgMjMwNjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9jbXB5aV93aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF9jbXB5aV93aGMsIDIzMDkyfSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfY21weWlfd2hjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X2NtcHlyX3doLCAyMzEyM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X2NtcHlyX3doCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X2NtcHlyX3doYywgMjMxNTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9jbXB5cl93aGMKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfbWFjX3VwX3MxX3NhdCwgMjMxODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9tYWNfdXBfczFfc2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X21weXJpX2FkZGksIDIzMjE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfbXB5cmlfYWRkaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF9tcHlyaV9hZGRyLCAyMzI1MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X21weXJpX2FkZHIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfbXB5cmlfYWRkcl91MiwgMjMyODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9tcHlyaV9hZGRyX3UyCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X21weXJyX2FkZGksIDIzMzE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfbXB5cnJfYWRkaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF9tcHlycl9hZGRyLCAyMzM1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X21weXJyX2FkZHIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfbmFjX3VwX3MxX3NhdCwgMjMzODJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9uYWNfdXBfczFfc2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X29yX2FuZCwgMjM0MTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9vcl9hbmQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfb3JfYW5kbiwgMjM0NDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9vcl9hbmRuCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X29yX29yLCAyMzQ3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X29yX29yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X29yX3hvciwgMjM1MDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF9vcl94b3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfcG1weXcsIDIzNTI5fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfcG1weXcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfcG1weXdfYWNjLCAyMzU1Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X3BtcHl3X2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF92cG1weWgsIDIzNTg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfdnBtcHloCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X3ZwbXB5aF9hY2MsIDIzNjE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfdnBtcHloX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF92cm1weWVoX2FjY19zMCwgMjM2NDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF92cm1weWVoX2FjY19zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF92cm1weWVoX2FjY19zMSwgMjM2ODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF92cm1weWVoX2FjY19zMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF92cm1weWVoX3MwLCAyMzcxOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5ZWhfczAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfdnJtcHllaF9zMSwgMjM3NTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF92cm1weWVoX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X3ZybXB5b2hfYWNjX3MwLCAyMzc4M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5b2hfYWNjX3MwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X3ZybXB5b2hfYWNjX3MxLCAyMzgxOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5b2hfYWNjX3MxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X3ZybXB5b2hfczAsIDIzODU1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfdnJtcHlvaF9zMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNF92cm1weW9oX3MxLCAyMzg4N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X3ZybXB5b2hfczEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfeG9yX2FuZCwgMjM5MTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF94b3JfYW5kCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X3hvcl9hbmRuLCAyMzk0OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX000X3hvcl9hbmRuCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX000X3hvcl9vciwgMjM5Nzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNF94b3Jfb3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTRfeG9yX3hhY2MsIDI0MDA2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTRfeG9yX3hhY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTVfdmRtYWNic3UsIDI0MDM2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTVfdmRtYWNic3UKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTVfdmRtcHlic3UsIDI0MDY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTVfdmRtcHlic3UKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTVfdm1hY2JzdSwgMjQwOTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNV92bWFjYnN1CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX001X3ZtYWNidXUsIDI0MTI1fSwgLy8gX19idWlsdGluX0hFWEFHT05fTTVfdm1hY2J1dQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9NNV92bXB5YnN1LCAyNDE1NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX001X3ZtcHlic3UKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTVfdm1weWJ1dSwgMjQxODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNV92bXB5YnV1CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX001X3ZybWFjYnN1LCAyNDIxMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX001X3ZybWFjYnN1CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX001X3ZybWFjYnV1LCAyNDI0Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX001X3ZybWFjYnV1CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX001X3ZybXB5YnN1LCAyNDI3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX001X3ZybXB5YnN1CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX001X3ZybXB5YnV1LCAyNDMwMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX001X3ZybXB5YnV1CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX002X3ZhYnNkaWZmYiwgMjQzMzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNl92YWJzZGlmZmIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fTTZfdmFic2RpZmZ1YiwgMjQzNjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9NNl92YWJzZGlmZnViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FkZGFzbF9ycnJpLCAyNDM5NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FkZGFzbF9ycnJpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9pX3AsIDI0NDI4fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc2xfaV9wX2FjYywgMjQ0NTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9wX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc2xfaV9wX2FuZCwgMjQ0OTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9wX2FuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc2xfaV9wX25hYywgMjQ1MjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9wX25hYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc2xfaV9wX29yLCAyNDU1Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3Bfb3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX2lfcF94YWNjLCAyNDU4OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3BfeGFjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc2xfaV9yLCAyNDYyMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX2lfcl9hY2MsIDI0NjUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcl9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX2lfcl9hbmQsIDI0Njg0fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcl9hbmQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX2lfcl9uYWMsIDI0NzE3fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfcl9uYWMKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX2lfcl9vciwgMjQ3NTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yX29yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9pX3Jfc2F0LCAyNDc4Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9pX3Jfc2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9pX3JfeGFjYywgMjQ4MTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfaV9yX3hhY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX2lfdmgsIDI0ODQ5fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfdmgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX2lfdncsIDI0ODc5fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX2lfdncKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX3JfcCwgMjQ5MDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9wCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9yX3BfYWNjLCAyNDkzOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3BfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9yX3BfYW5kLCAyNDk3MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3BfYW5kCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9yX3BfbmFjLCAyNTAwNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3BfbmFjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9yX3Bfb3IsIDI1MDM3fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3JfcF9vcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc2xfcl9wX3hvciwgMjUwNjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9wX3hvcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc2xfcl9yLCAyNTEwMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX3Jfcl9hY2MsIDI1MTMxfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3Jfcl9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX3Jfcl9hbmQsIDI1MTY0fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3Jfcl9hbmQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX3Jfcl9uYWMsIDI1MTk3fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNsX3Jfcl9uYWMKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNsX3Jfcl9vciwgMjUyMzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc2xfcl9yX29yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9yX3Jfc2F0LCAyNTI2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3Jfc2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9yX3ZoLCAyNTI5NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3ZoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2FzbF9yX3Z3LCAyNTMyNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2FzbF9yX3Z3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9pX3AsIDI1MzU1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9wX2FjYywgMjUzODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9wX2FuZCwgMjU0MTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX2FuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9wX25hYywgMjU0NTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX25hYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9wX29yLCAyNTQ4M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3Bfb3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNyX2lfcF9ybmQsIDI1NTE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcF9ybmQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNyX2lfcF9ybmRfZ29vZHN5bnRheCwgMjU1NDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9wX3JuZF9nb29kc3ludGF4CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9pX3IsIDI1NTkyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9yX2FjYywgMjU2MjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9yX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9yX2FuZCwgMjU2NTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9yX2FuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9yX25hYywgMjU2ODd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9yX25hYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3JfaV9yX29yLCAyNTcyMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3Jfb3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNyX2lfcl9ybmQsIDI1NzUyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNyX2lfcl9ybmQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNyX2lfcl9ybmRfZ29vZHN5bnRheCwgMjU3ODV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3JfaV9yX3JuZF9nb29kc3ludGF4CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9pX3N2d190cnVuLCAyNTgyOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3N2d190cnVuCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9pX3ZoLCAyNTg2NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3ZoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9pX3Z3LCAyNTg5NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9pX3Z3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9yX3AsIDI1OTI1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3JfcAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl9wX2FjYywgMjU5NTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9wX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl9wX2FuZCwgMjU5ODd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9wX2FuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl9wX25hYywgMjYwMjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9wX25hYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl9wX29yLCAyNjA1M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3Bfb3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNyX3JfcF94b3IsIDI2MDg1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3JfcF94b3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYXNyX3JfciwgMjYxMTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9yX3JfYWNjLCAyNjE0N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3JfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9yX3JfYW5kLCAyNjE4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3JfYW5kCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9yX3JfbmFjLCAyNjIxM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2Fzcl9yX3JfbmFjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2Fzcl9yX3Jfb3IsIDI2MjQ2fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYXNyX3Jfcl9vcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl9yX3NhdCwgMjYyNzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9yX3NhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl9zdndfdHJ1biwgMjYzMTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl9zdndfdHJ1bgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl92aCwgMjYzNDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl92aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9hc3Jfcl92dywgMjYzNzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9hc3Jfcl92dworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9icmV2LCAyNjQwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2JyZXYKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfYnJldnAsIDI2NDMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfYnJldnAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfY2wwLCAyNjQ2MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9jbDBwLCAyNjQ4NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsMHAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfY2wxLCAyNjUxMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsMQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9jbDFwLCAyNjUzNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsMXAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfY2xiLCAyNjU2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9jbGJub3JtLCAyNjU4N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NsYm5vcm0KKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfY2xicCwgMjY2MTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jbGJwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2NscmJpdF9pLCAyNjY0Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NscmJpdF9pCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2NscmJpdF9yLCAyNjY3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2NscmJpdF9yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2N0MCwgMjY3MDJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jdDAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfY3QwcCwgMjY3Mjd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jdDBwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2N0MSwgMjY3NTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jdDEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfY3QxcCwgMjY3Nzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9jdDFwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2RlaW50ZXJsZWF2ZSwgMjY4MDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9kZWludGVybGVhdmUKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfZXh0cmFjdHUsIDI2ODM4fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfZXh0cmFjdHUKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfZXh0cmFjdHVfcnAsIDI2ODY4fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfZXh0cmFjdHVfcnAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfZXh0cmFjdHVwLCAyNjkwMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2V4dHJhY3R1cAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9leHRyYWN0dXBfcnAsIDI2OTMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfZXh0cmFjdHVwX3JwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2luc2VydCwgMjY5NjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9pbnNlcnQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfaW5zZXJ0X3JwLCAyNjk5NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2luc2VydF9ycAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9pbnNlcnRwLCAyNzAyNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2luc2VydHAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfaW5zZXJ0cF9ycCwgMjcwNTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9pbnNlcnRwX3JwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2ludGVybGVhdmUsIDI3MDg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfaW50ZXJsZWF2ZQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sZnNwLCAyNzExOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xmc3AKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNsX3JfcCwgMjcxNDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9wCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzbF9yX3BfYWNjLCAyNzE3M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3BfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzbF9yX3BfYW5kLCAyNzIwNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3BfYW5kCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzbF9yX3BfbmFjLCAyNzIzOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3BfbmFjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzbF9yX3Bfb3IsIDI3MjcyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3JfcF9vcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc2xfcl9wX3hvciwgMjczMDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9wX3hvcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc2xfcl9yLCAyNzMzN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNsX3Jfcl9hY2MsIDI3MzY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3Jfcl9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNsX3Jfcl9hbmQsIDI3Mzk5fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3Jfcl9hbmQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNsX3Jfcl9uYWMsIDI3NDMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNsX3Jfcl9uYWMKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNsX3Jfcl9vciwgMjc0NjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc2xfcl9yX29yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzbF9yX3ZoLCAyNzQ5N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3ZoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzbF9yX3Z3LCAyNzUyN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzbF9yX3Z3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9pX3AsIDI3NTU3fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc3JfaV9wX2FjYywgMjc1ODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9wX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc3JfaV9wX2FuZCwgMjc2MTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9wX2FuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc3JfaV9wX25hYywgMjc2NTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9wX25hYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc3JfaV9wX29yLCAyNzY4NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3Bfb3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX2lfcF94YWNjLCAyNzcxN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3BfeGFjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc3JfaV9yLCAyNzc1MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9pX3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX2lfcl9hY2MsIDI3NzgwfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX2lfcl9hbmQsIDI3ODEzfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl9hbmQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX2lfcl9uYWMsIDI3ODQ2fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfcl9uYWMKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX2lfcl9vciwgMjc4Nzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9yX29yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9pX3JfeGFjYywgMjc5MTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3JfaV9yX3hhY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX2lfdmgsIDI3OTQ1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfdmgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX2lfdncsIDI3OTc1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX2lfdncKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX3JfcCwgMjgwMDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9wCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9yX3BfYWNjLCAyODAzNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3BfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9yX3BfYW5kLCAyODA2N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3BfYW5kCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9yX3BfbmFjLCAyODEwMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3BfbmFjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9yX3Bfb3IsIDI4MTMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3JfcF9vcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc3Jfcl9wX3hvciwgMjgxNjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9wX3hvcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9sc3Jfcl9yLCAyODE5OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX3Jfcl9hY2MsIDI4MjI3fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3Jfcl9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX3Jfcl9hbmQsIDI4MjYwfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3Jfcl9hbmQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX3Jfcl9uYWMsIDI4MjkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbHNyX3Jfcl9uYWMKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfbHNyX3Jfcl9vciwgMjgzMjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9sc3Jfcl9yX29yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9yX3ZoLCAyODM1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3ZoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX2xzcl9yX3Z3LCAyODM4OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX2xzcl9yX3Z3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX21hc2ssIDI4NDE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfbWFzaworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9wYWNraGwsIDI4NDQ0fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfcGFja2hsCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3Bhcml0eXAsIDI4NDcyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfcGFyaXR5cAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9zZXRiaXRfaSwgMjg1MDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zZXRiaXRfaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9zZXRiaXRfciwgMjg1MzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zZXRiaXRfcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9zaHVmZmViLCAyODU2MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3NodWZmZWIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfc2h1ZmZlaCwgMjg1OTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zaHVmZmVoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3NodWZmb2IsIDI4NjE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfc2h1ZmZvYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9zaHVmZm9oLCAyODY0OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3NodWZmb2gKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfc3RvcmV3X2xvY2tlZCwgMjg3NzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zdG9yZXdfbG9ja2VkCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3N2c2F0aGIsIDI4ODA5fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfc3ZzYXRoYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9zdnNhdGh1YiwgMjg4Mzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl9zdnNhdGh1YgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl90YWJsZWlkeGJfZ29vZHN5bnRheCwgMjg4Njh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl90YWJsZWlkeGJfZ29vZHN5bnRheAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl90YWJsZWlkeGRfZ29vZHN5bnRheCwgMjg5MTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl90YWJsZWlkeGRfZ29vZHN5bnRheAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl90YWJsZWlkeGhfZ29vZHN5bnRheCwgMjg5NTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl90YWJsZWlkeGhfZ29vZHN5bnRheAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl90YWJsZWlkeHdfZ29vZHN5bnRheCwgMjg5OTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl90YWJsZWlkeHdfZ29vZHN5bnRheAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl90b2dnbGViaXRfaSwgMjkwMzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl90b2dnbGViaXRfaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl90b2dnbGViaXRfciwgMjkwNjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl90b2dnbGViaXRfcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl90c3RiaXRfaSwgMjkxMDJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl90c3RiaXRfaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl90c3RiaXRfciwgMjkxMzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl90c3RiaXRfcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92YWxpZ25pYiwgMjkxNjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92YWxpZ25pYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92YWxpZ25yYiwgMjkxOTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92YWxpZ25yYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92Y25lZ2gsIDI5MjIyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdmNuZWdoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3Zjcm90YXRlLCAyOTI1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3Zjcm90YXRlCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZyY25lZ2gsIDI5MjgwfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnJjbmVnaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92cm5kcGFja3doLCAyOTMwOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZybmRwYWNrd2gKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnJuZHBhY2t3aHMsIDI5MzQxfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnJuZHBhY2t3aHMKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnNhdGhiLCAyOTM3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXRoYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92c2F0aGJfbm9wYWNrLCAyOTQwMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXRoYl9ub3BhY2sKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnNhdGh1YiwgMjk0Mzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c2F0aHViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZzYXRodWJfbm9wYWNrLCAyOTQ2Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzYXRodWJfbm9wYWNrCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZzYXR3aCwgMjk1MDJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c2F0d2gKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnNhdHdoX25vcGFjaywgMjk1MzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c2F0d2hfbm9wYWNrCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZzYXR3dWgsIDI5NTY1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnNhdHd1aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92c2F0d3VoX25vcGFjaywgMjk1OTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c2F0d3VoX25vcGFjaworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92c3BsYXRyYiwgMjk2MzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c3BsYXRyYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92c3BsYXRyaCwgMjk2NjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c3BsYXRyaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92c3BsaWNlaWIsIDI5NjkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnNwbGljZWliCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3ZzcGxpY2VyYiwgMjk3MjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92c3BsaWNlcmIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnN4dGJoLCAyOTc1Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3ZzeHRiaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl92c3h0aHcsIDI5NzgwfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzJfdnN4dGh3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3Z0cnVuZWhiLCAyOTgwOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3Z0cnVuZWhiCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3Z0cnVuZXdoLCAyOTgzOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3Z0cnVuZXdoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3Z0cnVub2hiLCAyOTg2OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3Z0cnVub2hiCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3Z0cnVub3doLCAyOTg5OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3Z0cnVub3doCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3Z6eHRiaCwgMjk5Mjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TMl92enh0YmgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfdnp4dGh3LCAyOTk1Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1MyX3Z6eHRodworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9hZGRhZGRpLCAyOTk4NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X2FkZGFkZGkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfYWRkaV9hc2xfcmksIDMwMDEzfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfYWRkaV9hc2xfcmkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfYWRkaV9sc3JfcmksIDMwMDQ2fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfYWRkaV9sc3JfcmkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfYW5kaV9hc2xfcmksIDMwMDc5fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfYW5kaV9hc2xfcmkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfYW5kaV9sc3JfcmksIDMwMTEyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfYW5kaV9sc3JfcmkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfY2xiYWRkaSwgMzAxNDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9jbGJhZGRpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X2NsYnBhZGRpLCAzMDE3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X2NsYnBhZGRpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X2NsYnBub3JtLCAzMDIwNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X2NsYnBub3JtCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X2V4dHJhY3QsIDMwMjM0fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfZXh0cmFjdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9leHRyYWN0X3JwLCAzMDI2M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X2V4dHJhY3RfcnAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfZXh0cmFjdHAsIDMwMjk1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfZXh0cmFjdHAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfZXh0cmFjdHBfcnAsIDMwMzI1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfZXh0cmFjdHBfcnAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfbHNsaSwgMzAzNTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9sc2xpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X250c3RiaXRfaSwgMzAzODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9udHN0Yml0X2kKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfbnRzdGJpdF9yLCAzMDQxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X250c3RiaXRfcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9vcl9hbmRpLCAzMDQ0Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X29yX2FuZGkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfb3JfYW5kaXgsIDMwNDc1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfb3JfYW5kaXgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfb3Jfb3JpLCAzMDUwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X29yX29yaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9vcmlfYXNsX3JpLCAzMDUzM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M0X29yaV9hc2xfcmkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfb3JpX2xzcl9yaSwgMzA1NjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9vcmlfbHNyX3JpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X3Bhcml0eSwgMzA1OTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9wYXJpdHkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfc3RvcmVkX2xvY2tlZCwgMzA2MjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9zdG9yZWRfbG9ja2VkCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X3N1YmFkZGksIDMwNjYwfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfc3ViYWRkaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9zdWJpX2FzbF9yaSwgMzA2ODl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9zdWJpX2FzbF9yaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF9zdWJpX2xzcl9yaSwgMzA3MjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF9zdWJpX2xzcl9yaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF92cmNyb3RhdGUsIDMwNzU1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfdnJjcm90YXRlCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X3ZyY3JvdGF0ZV9hY2MsIDMwNzg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfdnJjcm90YXRlX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF92eGFkZHN1YmgsIDMwODIxfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfdnhhZGRzdWJoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X3Z4YWRkc3ViaHIsIDMwODUyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfdnhhZGRzdWJocgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNF92eGFkZHN1YncsIDMwODg0fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzRfdnhhZGRzdWJ3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X3Z4c3ViYWRkaCwgMzA5MTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF92eHN1YmFkZGgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzRfdnhzdWJhZGRociwgMzA5NDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF92eHN1YmFkZGhyCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M0X3Z4c3ViYWRkdywgMzA5Nzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNF92eHN1YmFkZHcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzVfYXNyaHViX3JuZF9zYXRfZ29vZHN5bnRheCwgMzEwMDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNV9hc3JodWJfcm5kX3NhdF9nb29kc3ludGF4CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M1X2Fzcmh1Yl9zYXQsIDMxMDU2fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzVfYXNyaHViX3NhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNV9wb3Bjb3VudHAsIDMxMDg4fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzVfcG9wY291bnRwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M1X3Zhc3Jocm5kX2dvb2RzeW50YXgsIDMxMTE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzVfdmFzcmhybmRfZ29vZHN5bnRheAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNl9yb2xfaV9wLCAzMTE2MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3AKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzZfcm9sX2lfcF9hY2MsIDMxMTg5fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcF9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzZfcm9sX2lfcF9hbmQsIDMxMjIyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcF9hbmQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzZfcm9sX2lfcF9uYWMsIDMxMjU1fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcF9uYWMKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzZfcm9sX2lfcF9vciwgMzEyODh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9wX29yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M2X3JvbF9pX3BfeGFjYywgMzEzMjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9wX3hhY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzZfcm9sX2lfciwgMzEzNTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNl9yb2xfaV9yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M2X3JvbF9pX3JfYWNjLCAzMTM4M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3JfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M2X3JvbF9pX3JfYW5kLCAzMTQxNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3JfYW5kCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M2X3JvbF9pX3JfbmFjLCAzMTQ0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M2X3JvbF9pX3JfbmFjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M2X3JvbF9pX3Jfb3IsIDMxNDgyfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcl9vcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNl9yb2xfaV9yX3hhY2MsIDMxNTE0fSwgLy8gX19idWlsdGluX0hFWEFHT05fUzZfcm9sX2lfcl94YWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1M2X3ZzcGxhdHJicCwgMzE1NDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9TNl92c3BsYXRyYnAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzZfdnRydW5laGJfcHBwLCAzMTU3OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1M2X3Z0cnVuZWhiX3BwcAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TNl92dHJ1bm9oYl9wcHAsIDMxNjEzfSwgLy8gX19idWlsdGluX0hFWEFHT05fUzZfdnRydW5vaGJfcHBwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2V4dHJhY3R3LCAzMTY0N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2V4dHJhY3R3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2V4dHJhY3R3XzEyOEIsIDMxNjc3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfZXh0cmFjdHdfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9oaSwgMzE3MTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9oaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9oaV8xMjhCLCAzMTczNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2hpXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfbGQwLCAzMTc2NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sZDBfMTI4QiwgMzE3OTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZDBfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sZGNucDAsIDMxODIwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfbGRjbnAwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2xkY25wMF8xMjhCLCAzMTg0OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkY25wMF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2xkY25wbnQwLCAzMTg4MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkY25wbnQwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2xkY25wbnQwXzEyOEIsIDMxOTExfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfbGRjbnBudDBfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sZGNwMCwgMzE5NDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZGNwMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sZGNwMF8xMjhCLCAzMTk3M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkY3AwXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfbGRjcG50MCwgMzIwMDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZGNwbnQwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2xkY3BudDBfMTI4QiwgMzIwMzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZGNwbnQwXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfbGRucDAsIDMyMDY4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfbGRucDAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfbGRucDBfMTI4QiwgMzIwOTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZG5wMF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2xkbnBudDAsIDMyMTI3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfbGRucG50MAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sZG5wbnQwXzEyOEIsIDMyMTU2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfbGRucG50MF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2xkbnQwLCAzMjE5MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkbnQwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2xkbnQwXzEyOEIsIDMyMjE3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfbGRudDBfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sZG50bnQwLCAzMjI0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkbnRudDAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfbGRwMCwgMzIyNzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZHAwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2xkcDBfMTI4QiwgMzIzMDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZHAwXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfbGRwbnQwLCAzMjMzNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkcG50MAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sZHBudDBfMTI4QiwgMzIzNjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZHBudDBfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sZHRucDAsIDMyMzk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfbGR0bnAwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2xkdG5wMF8xMjhCLCAzMjQyNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkdG5wMF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2xkdG5wbnQwLCAzMjQ1N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkdG5wbnQwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2xkdG5wbnQwXzEyOEIsIDMyNDg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfbGR0bnBudDBfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sZHRwMCwgMzI1MjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZHRwMAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sZHRwMF8xMjhCLCAzMjU0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2xkdHAwXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfbGR0cG50MCwgMzI1ODF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZHRwbnQwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2xkdHBudDBfMTI4QiwgMzI2MTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZHRwbnQwXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfbGR1MCwgMzI2NDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZHUwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2xkdTBfMTI4QiwgMzI2NzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sZHUwXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfbG8sIDMyNzAxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfbG8KKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfbG9fMTI4QiwgMzI3MjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sb18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2x2c3BsYXRiLCAzMjc1NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2x2c3BsYXRiCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X2x2c3BsYXRiXzEyOEIsIDMyNzg0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfbHZzcGxhdGJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sdnNwbGF0aCwgMzI4MTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sdnNwbGF0aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9sdnNwbGF0aF8xMjhCLCAzMjg0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X2x2c3BsYXRoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfbHZzcGxhdHcsIDMyODg0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfbHZzcGxhdHcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfbHZzcGxhdHdfMTI4QiwgMzI5MTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9sdnNwbGF0d18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ByZWRfYW5kLCAzMjk0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfYW5kCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ByZWRfYW5kXzEyOEIsIDMyOTc5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9hbmRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9wcmVkX2FuZF9uLCAzMzAxNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfYW5kX24KKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfcHJlZF9hbmRfbl8xMjhCLCAzMzA0Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfYW5kX25fMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9wcmVkX25vdCwgMzMwODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX25vdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9wcmVkX25vdF8xMjhCLCAzMzExM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfbm90XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfcHJlZF9vciwgMzMxNDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX29yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ByZWRfb3JfMTI4QiwgMzMxNzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX29yXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfcHJlZF9vcl9uLCAzMzIxMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfb3JfbgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9wcmVkX29yX25fMTI4QiwgMzMyNDJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX29yX25fMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9wcmVkX3NjYWxhcjIsIDMzMjc4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9zY2FsYXIyCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ByZWRfc2NhbGFyMl8xMjhCLCAzMzMxMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfc2NhbGFyMl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ByZWRfc2NhbGFyMnYyLCAzMzM1MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfc2NhbGFyMnYyCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ByZWRfc2NhbGFyMnYyXzEyOEIsIDMzMzg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfcHJlZF9zY2FsYXIydjJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9wcmVkX3hvciwgMzM0Mjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9wcmVkX3hvcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl9wcmVkX3hvcl8xMjhCLCAzMzQ1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ByZWRfeG9yXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfc2h1ZmZlcWgsIDMzNDkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfc2h1ZmZlcWgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfc2h1ZmZlcWhfMTI4QiwgMzM1MjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl9zaHVmZmVxaF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3NodWZmZXF3LCAzMzU1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3NodWZmZXF3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3NodWZmZXF3XzEyOEIsIDMzNTg4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfc2h1ZmZlcXdfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92UzMyYl9ucXByZWRfYWksIDMzNjIzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdlMzMmJfbnFwcmVkX2FpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZTMzJiX25xcHJlZF9haV8xMjhCLCAzMzY2MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZTMzJiX25xcHJlZF9haV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZTMzJiX250X25xcHJlZF9haSwgMzM3MDJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92UzMyYl9udF9ucXByZWRfYWkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdlMzMmJfbnRfbnFwcmVkX2FpXzEyOEIsIDMzNzQyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdlMzMmJfbnRfbnFwcmVkX2FpXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdlMzMmJfbnRfcXByZWRfYWksIDMzNzg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdlMzMmJfbnRfcXByZWRfYWkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdlMzMmJfbnRfcXByZWRfYWlfMTI4QiwgMzM4MjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92UzMyYl9udF9xcHJlZF9haV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZTMzJiX3FwcmVkX2FpLCAzMzg3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZTMzJiX3FwcmVkX2FpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZTMzJiX3FwcmVkX2FpXzEyOEIsIDMzOTA2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdlMzMmJfcXByZWRfYWlfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWJzYiwgMzM5NDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWJzYl8xMjhCLCAzMzk3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNiXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFic2Jfc2F0LCAzNDAwNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNiX3NhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWJzYl9zYXRfMTI4QiwgMzQwMzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzYl9zYXRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWJzZGlmZmgsIDM0MDczfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFic2RpZmZoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhYnNkaWZmaF8xMjhCLCAzNDEwNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhYnNkaWZmaF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhYnNkaWZmdWIsIDM0MTQwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFic2RpZmZ1YgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWJzZGlmZnViXzEyOEIsIDM0MTcyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFic2RpZmZ1Yl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhYnNkaWZmdWgsIDM0MjA5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFic2RpZmZ1aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWJzZGlmZnVoXzEyOEIsIDM0MjQxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFic2RpZmZ1aF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhYnNkaWZmdywgMzQyNzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzZGlmZncKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFic2RpZmZ3XzEyOEIsIDM0MzA5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFic2RpZmZ3XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFic2gsIDM0MzQ1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFic2gKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFic2hfMTI4QiwgMzQzNzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzaF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhYnNoX3NhdCwgMzQ0MDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzaF9zYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFic2hfc2F0XzEyOEIsIDM0NDM1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFic2hfc2F0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFic3csIDM0NDcxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFic3cKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFic3dfMTI4QiwgMzQ0OTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzd18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhYnN3X3NhdCwgMzQ1MzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWJzd19zYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFic3dfc2F0XzEyOEIsIDM0NTYxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFic3dfc2F0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGIsIDM0NTk3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGJfMTI4QiwgMzQ2MjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkYl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRiX2R2LCAzNDY1Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRiX2R2CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRiX2R2XzEyOEIsIDM0Njg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJfZHZfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkYm5xLCAzNDcyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRibnEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGJucV8xMjhCLCAzNDc1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRibnFfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkYnEsIDM0Nzg0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRicV8xMjhCLCAzNDgxMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRicV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRic2F0LCAzNDg0NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRic2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRic2F0XzEyOEIsIDM0ODc1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGJzYXRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkYnNhdF9kdiwgMzQ5MTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkYnNhdF9kdgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkYnNhdF9kdl8xMjhCLCAzNDk0M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRic2F0X2R2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGNhcnJ5c2F0LCAzNDk4MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRjYXJyeXNhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkY2FycnlzYXRfMTI4QiwgMzUwMTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkY2FycnlzYXRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkY2xiaCwgMzUwNTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkY2xiaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkY2xiaF8xMjhCLCAzNTA4NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRjbGJoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGNsYncsIDM1MTE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGNsYncKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGNsYndfMTI4QiwgMzUxNDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkY2xid18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRoLCAzNTE4NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRoXzEyOEIsIDM1MjExfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGhfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkaF9kdiwgMzUyNDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaF9kdgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkaF9kdl8xMjhCLCAzNTI3M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRoX2R2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGhucSwgMzUzMDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaG5xCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRobnFfMTI4QiwgMzUzMzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaG5xXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGhxLCAzNTM3MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRocQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkaHFfMTI4QiwgMzUzOTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHFfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkaHNhdCwgMzU0MzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHNhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkaHNhdF8xMjhCLCAzNTQ2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGRoc2F0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGhzYXRfZHYsIDM1NDk3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGhzYXRfZHYKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGhzYXRfZHZfMTI4QiwgMzU1MzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHNhdF9kdl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRodywgMzU1Njh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGh3XzEyOEIsIDM1NTk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZGh3XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZGh3X2FjYywgMzU2Mjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHdfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGRod19hY2NfMTI4QiwgMzU2NjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkaHdfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHViaCwgMzU2OTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR1YmhfMTI4QiwgMzU3Mjd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHViaF9hY2MsIDM1NzYxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHViaF9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHViaF9hY2NfMTI4QiwgMzU3OTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJoX2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR1YnNhdCwgMzU4MzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJzYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHVic2F0XzEyOEIsIDM1ODYzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVic2F0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHVic2F0X2R2LCAzNTg5OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1YnNhdF9kdgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkdWJzYXRfZHZfMTI4QiwgMzU5MzN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWJzYXRfZHZfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkdWJ1YmJfc2F0LCAzNTk3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1YnViYl9zYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHVidWJiX3NhdF8xMjhCLCAzNjAwN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1YnViYl9zYXRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkdWhzYXQsIDM2MDQ3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVoc2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR1aHNhdF8xMjhCLCAzNjA3OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1aHNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR1aHNhdF9kdiwgMzYxMTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWhzYXRfZHYKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHVoc2F0X2R2XzEyOEIsIDM2MTQ4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVoc2F0X2R2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHVodywgMzYxODd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWh3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR1aHdfMTI4QiwgMzYyMTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWh3XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHVod19hY2MsIDM2MjUwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHVod19hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHVod19hY2NfMTI4QiwgMzYyODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdWh3X2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR1d3NhdCwgMzYzMjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdXdzYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHV3c2F0XzEyOEIsIDM2MzUyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHV3c2F0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHV3c2F0X2R2LCAzNjM4OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR1d3NhdF9kdgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkdXdzYXRfZHZfMTI4QiwgMzY0MjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdXdzYXRfZHZfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkdywgMzY0NjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkdworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkd18xMjhCLCAzNjQ4OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHdfZHYsIDM2NTIwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdfZHYKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHdfZHZfMTI4QiwgMzY1NTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkd19kdl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR3bnEsIDM2NTg1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHducQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWRkd25xXzEyOEIsIDM2NjE0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHducV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR3cSwgMzY2NDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkd3EKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHdxXzEyOEIsIDM2Njc2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdxXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHdzYXQsIDM2NzA5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdzYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFkZHdzYXRfMTI4QiwgMzY3Mzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWRkd3NhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR3c2F0X2R2LCAzNjc3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhZGR3c2F0X2R2CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhZGR3c2F0X2R2XzEyOEIsIDM2ODA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFkZHdzYXRfZHZfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWxpZ25iLCAzNjg0NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbGlnbmIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFsaWduYl8xMjhCLCAzNjg3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbGlnbmJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWxpZ25iaSwgMzY5MDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YWxpZ25iaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YWxpZ25iaV8xMjhCLCAzNjkzOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbGlnbmJpXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZCwgMzY5NzN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhbmRfMTI4QiwgMzY5OTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZG5xcnQsIDM3MDMwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFuZG5xcnQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZG5xcnRfMTI4QiwgMzcwNjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kbnFydF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhbmRucXJ0X2FjYywgMzcwOTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kbnFydF9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZG5xcnRfYWNjXzEyOEIsIDM3MTI5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFuZG5xcnRfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZHFydCwgMzcxNjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kcXJ0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhbmRxcnRfMTI4QiwgMzcxOTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kcXJ0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZHFydF9hY2MsIDM3MjMxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFuZHFydF9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZHFydF9hY2NfMTI4QiwgMzcyNjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kcXJ0X2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhbmR2bnF2LCAzNzMwMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2bnF2CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhbmR2bnF2XzEyOEIsIDM3MzMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFuZHZucXZfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YW5kdnF2LCAzNzM2N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cXYKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZHZxdl8xMjhCLCAzNzM5Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cXZfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YW5kdnJ0LCAzNzQzMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cnQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFuZHZydF8xMjhCLCAzNzQ1OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cnRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YW5kdnJ0X2FjYywgMzc0OTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kdnJ0X2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YW5kdnJ0X2FjY18xMjhCLCAzNzUyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhbmR2cnRfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzbGgsIDM3NTY0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzbGgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzbGhfMTI4QiwgMzc1OTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsaF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc2xoX2FjYywgMzc2MjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsaF9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzbGhfYWNjXzEyOEIsIDM3NjU0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzbGhfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzbGh2LCAzNzY5MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2xodgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNsaHZfMTI4QiwgMzc3MTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsaHZfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNsdywgMzc3NTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsdworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNsd18xMjhCLCAzNzc3OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2x3XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzbHdfYWNjLCAzNzgxMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2x3X2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNsd19hY2NfMTI4QiwgMzc4NDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNsd19hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNsd3YsIDM3ODc3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzbHd2CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc2x3dl8xMjhCLCAzNzkwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc2x3dl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3JfaW50bywgMzc5Mzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyX2ludG8KKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcl9pbnRvXzEyOEIsIDM3OTY5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcl9pbnRvXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcmgsIDM4MDA1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcmhfMTI4QiwgMzgwMzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3JoX2FjYywgMzgwNjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaF9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcmhfYWNjXzEyOEIsIDM4MDk1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmhfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcmhicm5kc2F0LCAzODEzMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JoYnJuZHNhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyaGJybmRzYXRfMTI4QiwgMzgxNjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaGJybmRzYXRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyaGJzYXQsIDM4MjA0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmhic2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3JoYnNhdF8xMjhCLCAzODIzNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3JoYnNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3JodWJybmRzYXQsIDM4MjcxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmh1YnJuZHNhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyaHVicm5kc2F0XzEyOEIsIDM4MzA2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmh1YnJuZHNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3JodWJzYXQsIDM4MzQ2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmh1YnNhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyaHVic2F0XzEyOEIsIDM4Mzc4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmh1YnNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3JodiwgMzg0MTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyaHYKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcmh2XzEyOEIsIDM4NDQzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcmh2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcnVodWJybmRzYXQsIDM4NDc2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnVodWJybmRzYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcnVodWJybmRzYXRfMTI4QiwgMzg1MTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNydWh1YnJuZHNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J1aHVic2F0LCAzODU1M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J1aHVic2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J1aHVic2F0XzEyOEIsIDM4NTg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnVodWJzYXRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNydXd1aHJuZHNhdCwgMzg2MjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNydXd1aHJuZHNhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNydXd1aHJuZHNhdF8xMjhCLCAzODY2MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J1d3Vocm5kc2F0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcnV3dWhzYXQsIDM4NzAxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnV3dWhzYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcnV3dWhzYXRfMTI4QiwgMzg3MzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNydXd1aHNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J3LCAzODc3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J3XzEyOEIsIDM4Nzk5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcndfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyd19hY2MsIDM4ODMxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcndfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J3X2FjY18xMjhCLCAzODg2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3X2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J3aCwgMzg4OTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd2gKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcndoXzEyOEIsIDM4OTI2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcndoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcndocm5kc2F0LCAzODk1OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3aHJuZHNhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyd2hybmRzYXRfMTI4QiwgMzg5OTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd2hybmRzYXRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyd2hzYXQsIDM5MDMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcndoc2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J3aHNhdF8xMjhCLCAzOTA2M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhc3J3aHNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J3dWhybmRzYXQsIDM5MDk5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnd1aHJuZHNhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyd3Vocm5kc2F0XzEyOEIsIDM5MTM0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnd1aHJuZHNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J3dWhzYXQsIDM5MTc0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnd1aHNhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXNyd3Voc2F0XzEyOEIsIDM5MjA2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnd1aHNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3J3diwgMzkyNDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNyd3YKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzcnd2XzEyOEIsIDM5MjcxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzcnd2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzc2lnbiwgMzkzMDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNzaWduCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhc3NpZ25fMTI4QiwgMzkzMzN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNzaWduXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzc2lnbnAsIDM5MzY3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmFzc2lnbnAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmFzc2lnbnBfMTI4QiwgMzkzOTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXNzaWducF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhdmdiLCAzOTQzMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZhdmdiCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZhdmdiXzEyOEIsIDM5NDU5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z2JfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZnYnJuZCwgMzk0OTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnYnJuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZnYnJuZF8xMjhCLCAzOTUyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmdicm5kXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z2gsIDM5NTU2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z2gKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z2hfMTI4QiwgMzk1ODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnaF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhdmdocm5kLCAzOTYxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmdocm5kCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhdmdocm5kXzEyOEIsIDM5NjQ1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z2hybmRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZndWIsIDM5NjgwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3ViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhdmd1Yl8xMjhCLCAzOTcwOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1Yl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhdmd1YnJuZCwgMzk3NDF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndWJybmQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z3Vicm5kXzEyOEIsIDM5NzcyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3Vicm5kXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z3VoLCAzOTgwOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZndWhfMTI4QiwgMzk4MzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndWhfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZndWhybmQsIDM5ODY5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3Vocm5kCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhdmd1aHJuZF8xMjhCLCAzOTkwMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1aHJuZF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zhdmd1dywgMzk5MzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndXcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z3V3XzEyOEIsIDM5OTY0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3V3XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z3V3cm5kLCAzOTk5N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd1d3JuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZndXdybmRfMTI4QiwgNDAwMjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndXdybmRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZndywgNDAwNjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZndworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92YXZnd18xMjhCLCA0MDA5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zhdmd3XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z3dybmQsIDQwMTIzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmF2Z3dybmQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmF2Z3dybmRfMTI4QiwgNDAxNTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YXZnd3JuZF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZjbDBoLCA0MDE4OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZjbDBoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZjbDBoXzEyOEIsIDQwMjE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmNsMGhfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Y2wwdywgNDAyNDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Y2wwdworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Y2wwd18xMjhCLCA0MDI3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZjbDB3XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmNvbWJpbmUsIDQwMzA2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmNvbWJpbmUKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmNvbWJpbmVfMTI4QiwgNDAzMzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Y29tYmluZV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkMCwgNDAzNzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZDAKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmQwXzEyOEIsIDQwMzk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmQwXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRkMCwgNDA0MjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGQwCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkZDBfMTI4QiwgNDA0NTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGQwXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRlYWxiLCA0MDQ4M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWFsYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZGVhbGI0dywgNDA1NDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVhbGI0dworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZGVhbGI0d18xMjhCLCA0MDU3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWFsYjR3XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRlYWxiXzEyOEIsIDQwNTExfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRlYWxiXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRlYWxoLCA0MDYwOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWFsaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZGVhbGhfMTI4QiwgNDA2Mzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVhbGhfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZGVhbHZkZCwgNDA2NzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVhbHZkZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZGVhbHZkZF8xMjhCLCA0MDcwMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWFsdmRkXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRlbHRhLCA0MDczNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkZWx0YQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZGVsdGFfMTI4QiwgNDA3NjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZGVsdGFfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWJ1cywgNDA3OTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1cworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWJ1c18xMjhCLCA0MDgyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5YnVzXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHlidXNfYWNjLCA0MDg2MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5YnVzX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWJ1c19hY2NfMTI4QiwgNDA4OTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1c19hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWJ1c19kdiwgNDA5MzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1c19kdgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWJ1c19kdl8xMjhCLCA0MDk2N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5YnVzX2R2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHlidXNfZHZfYWNjLCA0MTAwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5YnVzX2R2X2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWJ1c19kdl9hY2NfMTI4QiwgNDEwNDJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWJ1c19kdl9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhiLCA0MTA4NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloYl8xMjhCLCA0MTExM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhiX2FjYywgNDExNDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhiX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhiX2FjY18xMjhCLCA0MTE4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGJfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloYl9kdiwgNDEyMTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhiX2R2CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aGJfZHZfMTI4QiwgNDEyNTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhiX2R2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloYl9kdl9hY2MsIDQxMjg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloYl9kdl9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloYl9kdl9hY2NfMTI4QiwgNDEzMjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhiX2R2X2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aGlzYXQsIDQxMzY0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloaXNhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhpc2F0XzEyOEIsIDQxMzk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloaXNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aGlzYXRfYWNjLCA0MTQzM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aGlzYXRfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aGlzYXRfYWNjXzEyOEIsIDQxNDY5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloaXNhdF9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhzYXQsIDQxNTEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aHNhdF8xMjhCLCA0MTU0MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZkbXB5aHNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aHNhdF9hY2MsIDQxNTc3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc2F0X2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZG1weWhzYXRfYWNjXzEyOEIsIDQxNjEyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc2F0X2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aHN1aXNhdCwgNDE2NTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzdWlzYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloc3Vpc2F0XzEyOEIsIDQxNjg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc3Vpc2F0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloc3Vpc2F0X2FjYywgNDE3MjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzdWlzYXRfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aHN1aXNhdF9hY2NfMTI4QiwgNDE3NjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzdWlzYXRfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloc3VzYXQsIDQxODA2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc3VzYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloc3VzYXRfMTI4QiwgNDE4Mzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzdXNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aHN1c2F0X2FjYywgNDE4Nzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWhzdXNhdF9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHloc3VzYXRfYWNjXzEyOEIsIDQxOTE0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHloc3VzYXRfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHlodnNhdCwgNDE5NTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWh2c2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZkbXB5aHZzYXRfMTI4QiwgNDE5ODh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWh2c2F0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHlodnNhdF9hY2MsIDQyMDI1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRtcHlodnNhdF9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmRtcHlodnNhdF9hY2NfMTI4QiwgNDIwNjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZG1weWh2c2F0X2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zkc2FkdWgsIDQyMTAyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRzYWR1aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZHNhZHVoXzEyOEIsIDQyMTMxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRzYWR1aF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zkc2FkdWhfYWNjLCA0MjE2NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zkc2FkdWhfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zkc2FkdWhfYWNjXzEyOEIsIDQyMTk4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmRzYWR1aF9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXFiLCA0MjIzNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxYl8xMjhCLCA0MjI2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXFiX2FuZCwgNDIyOTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFiX2FuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXFiX2FuZF8xMjhCLCA0MjMyM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWJfYW5kXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxYl9vciwgNDIzNTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFiX29yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcWJfb3JfMTI4QiwgNDIzODd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFiX29yXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxYl94b3IsIDQyNDIxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxYl94b3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxYl94b3JfMTI4QiwgNDI0NTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFiX3hvcl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcWgsIDQyNDg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXFoXzEyOEIsIDQyNTEyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxaF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcWhfYW5kLCA0MjU0M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWhfYW5kCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcWhfYW5kXzEyOEIsIDQyNTczfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxaF9hbmRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXFoX29yLCA0MjYwOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWhfb3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxaF9vcl8xMjhCLCA0MjYzN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWhfb3JfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXFoX3hvciwgNDI2NzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXFoX3hvcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXFoX3hvcl8xMjhCLCA0MjcwMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcWhfeG9yXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxdywgNDI3MzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXF3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcXdfMTI4QiwgNDI3NjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXF3XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxd19hbmQsIDQyNzkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxd19hbmQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmVxd19hbmRfMTI4QiwgNDI4MjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92ZXF3X2FuZF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcXdfb3IsIDQyODU4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxd19vcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92ZXF3X29yXzEyOEIsIDQyODg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxd19vcl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcXdfeG9yLCA0MjkyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZlcXdfeG9yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZlcXdfeG9yXzEyOEIsIDQyOTUxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmVxd194b3JfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z2F0aGVybWgsIDQyOTg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmdhdGhlcm1oCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZnYXRoZXJtaF8xMjhCLCA0MzAxN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtaF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZnYXRoZXJtaHEsIDQzMDUzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmdhdGhlcm1ocQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z2F0aGVybWhxXzEyOEIsIDQzMDg1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmdhdGhlcm1ocV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZnYXRoZXJtaHcsIDQzMTIyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmdhdGhlcm1odworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z2F0aGVybWh3XzEyOEIsIDQzMTU0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmdhdGhlcm1od18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZnYXRoZXJtaHdxLCA0MzE5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtaHdxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZnYXRoZXJtaHdxXzEyOEIsIDQzMjI0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmdhdGhlcm1od3FfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z2F0aGVybXcsIDQzMjYyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmdhdGhlcm13CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZnYXRoZXJtd18xMjhCLCA0MzI5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtd18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZnYXRoZXJtd3EsIDQzMzI5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmdhdGhlcm13cQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z2F0aGVybXdxXzEyOEIsIDQzMzYxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmdhdGhlcm13cV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndGIsIDQzMzk4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0YgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3RiXzEyOEIsIDQzNDI0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0Yl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndGJfYW5kLCA0MzQ1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGJfYW5kCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndGJfYW5kXzEyOEIsIDQzNDg1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0Yl9hbmRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3RiX29yLCA0MzUyMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGJfb3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0Yl9vcl8xMjhCLCA0MzU0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGJfb3JfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3RiX3hvciwgNDM1ODN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RiX3hvcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3RiX3hvcl8xMjhCLCA0MzYxM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGJfeG9yXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0aCwgNDM2NDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndGhfMTI4QiwgNDM2NzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0aF9hbmQsIDQzNzA1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0aF9hbmQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0aF9hbmRfMTI4QiwgNDM3MzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3RoX2FuZF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndGhfb3IsIDQzNzcwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0aF9vcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3RoX29yXzEyOEIsIDQzNzk5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0aF9vcl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndGhfeG9yLCA0MzgzM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndGhfeG9yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndGhfeG9yXzEyOEIsIDQzODYzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0aF94b3JfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1YiwgNDM4OTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1YgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1Yl8xMjhCLCA0MzkyNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHViXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWJfYW5kLCA0Mzk1N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHViX2FuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1Yl9hbmRfMTI4QiwgNDM5ODh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1Yl9hbmRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1Yl9vciwgNDQwMjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1Yl9vcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1Yl9vcl8xMjhCLCA0NDA1NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHViX29yXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWJfeG9yLCA0NDA4OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHViX3hvcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1Yl94b3JfMTI4QiwgNDQxMjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1Yl94b3JfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1aCwgNDQxNTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1aF8xMjhCLCA0NDE4M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHVoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWhfYW5kLCA0NDIxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHVoX2FuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1aF9hbmRfMTI4QiwgNDQyNDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF9hbmRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1aF9vciwgNDQyODJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF9vcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1aF9vcl8xMjhCLCA0NDMxMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHVoX29yXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dWhfeG9yLCA0NDM0N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHVoX3hvcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1aF94b3JfMTI4QiwgNDQzNzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1aF94b3JfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1dywgNDQ0MTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1dworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1d18xMjhCLCA0NDQ0MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHV3XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dXdfYW5kLCA0NDQ3M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHV3X2FuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1d19hbmRfMTI4QiwgNDQ1MDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1d19hbmRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1d19vciwgNDQ1NDB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1d19vcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1d19vcl8xMjhCLCA0NDU3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHV3X29yXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0dXdfeG9yLCA0NDYwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHV3X3hvcgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R1d194b3JfMTI4QiwgNDQ2MzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R1d194b3JfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R3LCA0NDY3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0d18xMjhCLCA0NDY5OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHdfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R3X2FuZCwgNDQ3Mjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R3X2FuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92Z3R3X2FuZF8xMjhCLCA0NDc1OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZndHdfYW5kXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0d19vciwgNDQ3OTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R3X29yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZndHdfb3JfMTI4QiwgNDQ4MjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R3X29yXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0d194b3IsIDQ0ODU3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmd0d194b3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmd0d194b3JfMTI4QiwgNDQ4ODd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z3R3X3hvcl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZpbnNlcnR3ciwgNDQ5MjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92aW5zZXJ0d3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmluc2VydHdyXzEyOEIsIDQ0OTUzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmluc2VydHdyXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmxhbGlnbmIsIDQ0OTg5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmxhbGlnbmIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmxhbGlnbmJfMTI4QiwgNDUwMTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bGFsaWduYl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsYWxpZ25iaSwgNDUwNTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bGFsaWduYmkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmxhbGlnbmJpXzEyOEIsIDQ1MDg1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmxhbGlnbmJpXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmxzcmIsIDQ1MTIxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmxzcmIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmxzcmJfMTI4QiwgNDUxNDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHNyYl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zsc3JoLCA0NTE4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3JoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zsc3JoXzEyOEIsIDQ1MjA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmxzcmhfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHNyaHYsIDQ1MjM5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmxzcmh2CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zsc3Jodl8xMjhCLCA0NTI2N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3Jodl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zsc3J3LCA0NTMwMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3J3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zsc3J3XzEyOEIsIDQ1MzI3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmxzcndfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHNyd3YsIDQ1MzU5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmxzcnd2CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zsc3J3dl8xMjhCLCA0NTM4N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zsc3J3dl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsdXQ0LCA0NTQyMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXQ0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsdXQ0XzEyOEIsIDQ1NDQ3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmx1dDRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dnZiLCA0NTQ3OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2dmIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ2Yl8xMjhCLCA0NTUwOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2dmJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dnZiX25tLCA0NTU0Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2dmJfbm0KKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ2Yl9ubV8xMjhCLCA0NTU3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2dmJfbm1fMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dnZiX29yYWNjLCA0NTYxMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2dmJfb3JhY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ2Yl9vcmFjY18xMjhCLCA0NTY0Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2dmJfb3JhY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dnZiX29yYWNjaSwgNDU2ODZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiX29yYWNjaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dnZiX29yYWNjaV8xMjhCLCA0NTcyMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2dmJfb3JhY2NpXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ2YmksIDQ1NzYzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ2YmkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdmx1dHZ2YmlfMTI4QiwgNDU3OTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dnZiaV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsdXR2d2gsIDQ1ODI4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dndoXzEyOEIsIDQ1ODU3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsdXR2d2hfbm0sIDQ1ODkxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aF9ubQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dndoX25tXzEyOEIsIDQ1OTIzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aF9ubV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsdXR2d2hfb3JhY2MsIDQ1OTYwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aF9vcmFjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dndoX29yYWNjXzEyOEIsIDQ1OTk1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aF9vcmFjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsdXR2d2hfb3JhY2NpLCA0NjAzNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2d2hfb3JhY2NpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZsdXR2d2hfb3JhY2NpXzEyOEIsIDQ2MDcxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdmx1dHZ3aF9vcmFjY2lfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dndoaSwgNDYxMTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bHV0dndoaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bHV0dndoaV8xMjhCLCA0NjE0Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZsdXR2d2hpXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1hc2tlZHN0b3JlbnEsIDQ2MTc3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1hc2tlZHN0b3JlbnEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1hc2tlZHN0b3JlbnFfMTI4QiwgNDYyMTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWFza2Vkc3RvcmVucV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXNrZWRzdG9yZW50bnEsIDQ2MjU0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1hc2tlZHN0b3JlbnRucQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWFza2Vkc3RvcmVudG5xXzEyOEIsIDQ2MjkyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1hc2tlZHN0b3JlbnRucV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXNrZWRzdG9yZW50cSwgNDYzMzV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWFza2Vkc3RvcmVudHEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1hc2tlZHN0b3JlbnRxXzEyOEIsIDQ2MzcyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1hc2tlZHN0b3JlbnRxXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1hc2tlZHN0b3JlcSwgNDY0MTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWFza2Vkc3RvcmVxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXNrZWRzdG9yZXFfMTI4QiwgNDY0NDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWFza2Vkc3RvcmVxXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1heGIsIDQ2NDg5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1heGIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1heGJfMTI4QiwgNDY1MTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWF4Yl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXhoLCA0NjU0OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXhoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXhoXzEyOEIsIDQ2NTc1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1heGhfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWF4dWIsIDQ2NjA3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1heHViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXh1Yl8xMjhCLCA0NjYzNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtYXh1Yl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtYXh1aCwgNDY2Njh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWF4dWgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1heHVoXzEyOEIsIDQ2Njk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1heHVoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1heHcsIDQ2NzI5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1heHcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1heHdfMTI4QiwgNDY3NTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWF4d18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtaW5iLCA0Njc4OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW5iCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtaW5iXzEyOEIsIDQ2ODE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1pbmJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWluaCwgNDY4NDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWluaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWluaF8xMjhCLCA0Njg3NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW5oXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1pbnViLCA0NjkwNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW51YgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWludWJfMTI4QiwgNDY5MzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bWludWJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bWludWgsIDQ2OTY3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1pbnVoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtaW51aF8xMjhCLCA0Njk5NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW51aF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtaW53LCA0NzAyOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtaW53CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtaW53XzEyOEIsIDQ3MDU1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1pbndfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhYnVzLCA0NzA4N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXMKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYWJ1c18xMjhCLCA0NzExNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXNfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhYnVzX2FjYywgNDcxNTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnVzX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhYnVzX2FjY18xMjhCLCA0NzE4M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXNfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYWJ1c3YsIDQ3MjIxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1c3YKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYWJ1c3ZfMTI4QiwgNDcyNTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnVzdl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcGFidXUsIDQ3Mjg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1dQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhYnV1XzEyOEIsIDQ3MzE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1dV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcGFidXVfYWNjLCA0NzM0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXVfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcGFidXVfYWNjXzEyOEIsIDQ3MzgyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWJ1dV9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhYnV1diwgNDc0MjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhYnV1dgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhYnV1dl8xMjhCLCA0NzQ1MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFidXV2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYWhiLCA0NzQ4NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFoYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhaGJfMTI4QiwgNDc1MTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhaGJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhaGJfYWNjLCA0NzU0Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFoYl9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wYWhiX2FjY18xMjhCLCA0NzU3OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFoYl9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhaGhzYXQsIDQ3NjE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wYWhoc2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcGFoaHNhdF8xMjhCLCA0NzY0Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGFoaHNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcGF1aGIsIDQ3NjgyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wYXVoYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhdWhiXzEyOEIsIDQ3NzExfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wYXVoYl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcGF1aGJfYWNjLCA0Nzc0NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGF1aGJfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcGF1aGJfYWNjXzEyOEIsIDQ3Nzc4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wYXVoYl9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhdWh1aHNhdCwgNDc4MTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBhdWh1aHNhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXBhdWh1aHNhdF8xMjhCLCA0Nzg0OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcGF1aHVoc2F0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wc3VodWhzYXQsIDQ3ODg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1wc3VodWhzYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1wc3VodWhzYXRfMTI4QiwgNDc5MjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXBzdWh1aHNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlidXMsIDQ3OTU4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ1cworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5YnVzXzEyOEIsIDQ3OTg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ1c18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlidXNfYWNjLCA0ODAyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidXNfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlidXNfYWNjXzEyOEIsIDQ4MDU0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ1c19hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5YnVzdiwgNDgwOTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzdgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5YnVzdl8xMjhCLCA0ODEyMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidXN2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWJ1c3ZfYWNjLCA0ODE1N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidXN2X2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5YnVzdl9hY2NfMTI4QiwgNDgxOTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5YnVzdl9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5YnYsIDQ4MjMwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ2CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlidl8xMjhCLCA0ODI1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlidl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlidl9hY2MsIDQ4MjkxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ2X2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5YnZfYWNjXzEyOEIsIDQ4MzIzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWJ2X2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlld3VoLCA0ODM2MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlld3VoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlld3VoXzEyOEIsIDQ4MzkwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWV3dWhfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5ZXd1aF82NCwgNDg0MjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5ZXd1aF82NAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5ZXd1aF82NF8xMjhCLCA0ODQ1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlld3VoXzY0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWgsIDQ4NDk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWhfMTI4QiwgNDg1MjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHloX2FjYywgNDg1NTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aF9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWhfYWNjXzEyOEIsIDQ4NTg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWhfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWhzYXRfYWNjLCA0ODYyMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHloc2F0X2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aHNhdF9hY2NfMTI4QiwgNDg2NTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHNhdF9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aHNycywgNDg2OTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHNycworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aHNyc18xMjhCLCA0ODcyNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHloc3JzXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWhzcywgNDg3NjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHNzCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHloc3NfMTI4QiwgNDg3ODl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHNzXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWh1cywgNDg4MjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHVzCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlodXNfMTI4QiwgNDg4NTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHVzXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWh1c19hY2MsIDQ4ODg2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh1c19hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWh1c19hY2NfMTI4QiwgNDg5MTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHVzX2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlodiwgNDg5NTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHYKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWh2XzEyOEIsIDQ4OTg1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWh2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWh2X2FjYywgNDkwMTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHZfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlodl9hY2NfMTI4QiwgNDkwNTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHZfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWh2c3JzLCA0OTA4N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlodnNycworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aHZzcnNfMTI4QiwgNDkxMTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aHZzcnNfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aWVvaCwgNDkxNTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWVvaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aWVvaF8xMjhCLCA0OTE4NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpZW9oXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWlld2hfYWNjLCA0OTIxOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpZXdoX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aWV3aF9hY2NfMTI4QiwgNDkyNTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWV3aF9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aWV3dWgsIDQ5MjkyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWlld3VoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpZXd1aF8xMjhCLCA0OTMyM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpZXd1aF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpZXd1aF9hY2MsIDQ5MzU5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWlld3VoX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aWV3dWhfYWNjXzEyOEIsIDQ5Mzk0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWlld3VoX2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpaCwgNDk0MzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWloXzEyOEIsIDQ5NDYyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWloXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWloX2FjYywgNDk0OTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWhfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpaF9hY2NfMTI4QiwgNDk1Mjd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWhfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWloYiwgNDk1NjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWhiCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpaGJfMTI4QiwgNDk1OTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWhiXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWloYl9hY2MsIDQ5NjI3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWloYl9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWloYl9hY2NfMTI4QiwgNDk2NjB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aWhiX2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpb3doLCA0OTY5OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpb3doCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpb3doXzEyOEIsIDQ5NzI4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWlvd2hfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aXdiLCA0OTc2M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd2IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWl3Yl8xMjhCLCA0OTc5Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd2JfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aXdiX2FjYywgNDk4MjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXdiX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aXdiX2FjY18xMjhCLCA0OTg1OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd2JfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWl3aCwgNDk4OTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXdoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpd2hfMTI4QiwgNDk5MjZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXdoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWl3aF9hY2MsIDQ5OTYwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3aF9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weWl3aF9hY2NfMTI4QiwgNDk5OTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5aXdoX2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpd3ViLCA1MDAzMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd3ViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpd3ViXzEyOEIsIDUwMDYxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3dWJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5aXd1Yl9hY2MsIDUwMDk2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weWl3dWJfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlpd3ViX2FjY18xMjhCLCA1MDEzMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlpd3ViX2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlvd2gsIDUwMTY5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5b3doXzEyOEIsIDUwMTk4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlvd2hfNjRfYWNjLCA1MDIzMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2hfNjRfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlvd2hfNjRfYWNjXzEyOEIsIDUwMjY4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weW93aF82NF9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5b3doX3JuZCwgNTAzMDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5b3doX3JuZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5b3doX3JuZF8xMjhCLCA1MDM0Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2hfcm5kXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weW93aF9ybmRfc2FjYywgNTAzODB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5b3doX3JuZF9zYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHlvd2hfcm5kX3NhY2NfMTI4QiwgNTA0MTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5b3doX3JuZF9zYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weW93aF9zYWNjLCA1MDQ2MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHlvd2hfc2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5b3doX3NhY2NfMTI4QiwgNTA0OTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5b3doX3NhY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWIsIDUwNTM0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weXViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHl1Yl8xMjhCLCA1MDU2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1Yl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHl1Yl9hY2MsIDUwNTk1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weXViX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWJfYWNjXzEyOEIsIDUwNjI3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weXViX2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHl1YnYsIDUwNjY0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVidgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWJ2XzEyOEIsIDUwNjkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVidl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHl1YnZfYWNjLCA1MDcyN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1YnZfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHl1YnZfYWNjXzEyOEIsIDUwNzYwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVidl9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWgsIDUwNzk4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHl1aF8xMjhCLCA1MDgyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHl1aF9hY2MsIDUwODU5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVoX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWhfYWNjXzEyOEIsIDUwODkxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVoX2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHl1aGUsIDUwOTI4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVoZQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWhlXzEyOEIsIDUwOTU3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVoZV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHl1aGVfYWNjLCA1MDk5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aGVfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtcHl1aGVfYWNjXzEyOEIsIDUxMDI0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm1weXVoZV9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWh2LCA1MTA2Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aHYKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm1weXVodl8xMjhCLCA1MTA5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aHZfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWh2X2FjYywgNTExMjV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXB5dWh2X2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bXB5dWh2X2FjY18xMjhCLCA1MTE1OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZtcHl1aHZfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm11eCwgNTExOTZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXV4CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZtdXhfMTI4QiwgNTEyMjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bXV4XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm5hdmdiLCA1MTI1M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZuYXZnYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bmF2Z2JfMTI4QiwgNTEyODF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bmF2Z2JfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bmF2Z2gsIDUxMzE0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm5hdmdoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZuYXZnaF8xMjhCLCA1MTM0Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZuYXZnaF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZuYXZndWIsIDUxMzc1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm5hdmd1YgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bmF2Z3ViXzEyOEIsIDUxNDA0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm5hdmd1Yl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZuYXZndywgNTE0Mzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bmF2Z3cKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm5hdmd3XzEyOEIsIDUxNDY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm5hdmd3XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm5vcm1hbXRoLCA1MTQ5OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zub3JtYW10aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bm9ybWFtdGhfMTI4QiwgNTE1MzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92bm9ybWFtdGhfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bm9ybWFtdHcsIDUxNTY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm5vcm1hbXR3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zub3JtYW10d18xMjhCLCA1MTU5N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zub3JtYW10d18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zub3QsIDUxNjMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm5vdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92bm90XzEyOEIsIDUxNjU5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm5vdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZvciwgNTE2OTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92b3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdm9yXzEyOEIsIDUxNzE1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdm9yXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnBhY2tlYiwgNTE3NDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja2ViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNrZWJfMTI4QiwgNTE3NzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja2ViXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnBhY2tlaCwgNTE4MDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja2VoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNrZWhfMTI4QiwgNTE4Mzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja2VoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnBhY2toYl9zYXQsIDUxODcxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2toYl9zYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnBhY2toYl9zYXRfMTI4QiwgNTE5MDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja2hiX3NhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNraHViX3NhdCwgNTE5NDJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja2h1Yl9zYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnBhY2todWJfc2F0XzEyOEIsIDUxOTc2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2todWJfc2F0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnBhY2tvYiwgNTIwMTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja29iCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNrb2JfMTI4QiwgNTIwNDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja29iXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnBhY2tvaCwgNTIwNzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja29oCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNrb2hfMTI4QiwgNTIxMDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja29oXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnBhY2t3aF9zYXQsIDUyMTQxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2t3aF9zYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnBhY2t3aF9zYXRfMTI4QiwgNTIxNzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja3doX3NhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwYWNrd3VoX3NhdCwgNTIyMTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cGFja3d1aF9zYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnBhY2t3dWhfc2F0XzEyOEIsIDUyMjQ2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnBhY2t3dWhfc2F0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnBvcGNvdW50aCwgNTIyODV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cG9wY291bnRoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zwb3Bjb3VudGhfMTI4QiwgNTIzMTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cG9wY291bnRoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnByZWZpeHFiLCA1MjM1NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwcmVmaXhxYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cHJlZml4cWJfMTI4QiwgNTIzODV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cHJlZml4cWJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cHJlZml4cWgsIDUyNDIxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnByZWZpeHFoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwcmVmaXhxaF8xMjhCLCA1MjQ1Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZwcmVmaXhxaF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZwcmVmaXhxdywgNTI0ODh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cHJlZml4cXcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnByZWZpeHF3XzEyOEIsIDUyNTE5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnByZWZpeHF3XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJkZWx0YSwgNTI1NTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cmRlbHRhCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZyZGVsdGFfMTI4QiwgNTI1ODR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cmRlbHRhXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidWJfcnR0LCA1MjYxOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnViX3J0dAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weWJ1Yl9ydHRfMTI4QiwgNTI2NTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1Yl9ydHRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weWJ1Yl9ydHRfYWNjLCA1MjY5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnViX3J0dF9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidWJfcnR0X2FjY18xMjhCLCA1MjcyOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnViX3J0dF9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weWJ1cywgNTI3NzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1cworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weWJ1c18xMjhCLCA1MjgwMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnVzXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidXNfYWNjLCA1MjgzN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnVzX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weWJ1c19hY2NfMTI4QiwgNTI4NzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c19hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weWJ1c2ksIDUyOTEwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXNpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5YnVzaV8xMjhCLCA1Mjk0MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5YnVzaV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5YnVzaV9hY2MsIDUyOTc3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXNpX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weWJ1c2lfYWNjXzEyOEIsIDUzMDEyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXNpX2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5YnVzdiwgNTMwNTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c3YKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidXN2XzEyOEIsIDUzMDgzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidXN2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidXN2X2FjYywgNTMxMTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c3ZfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5YnVzdl9hY2NfMTI4QiwgNTMxNTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ1c3ZfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidiwgNTMxOTR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ2CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5YnZfMTI4QiwgNTMyMjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidl9hY2MsIDUzMjU3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHlidl9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHlidl9hY2NfMTI4QiwgNTMyOTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weWJ2X2FjY18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5dWIsIDUzMzI4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1YgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weXViXzEyOEIsIDUzMzU3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1Yl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5dWJfYWNjLCA1MzM5MX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJfYWNjCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZybXB5dWJfYWNjXzEyOEIsIDUzNDI0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJtcHl1Yl9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weXViX3J0dCwgNTM0NjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViX3J0dAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weXViX3J0dF8xMjhCLCA1MzQ5NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJfcnR0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHl1Yl9ydHRfYWNjLCA1MzUzM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJfcnR0X2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weXViX3J0dF9hY2NfMTI4QiwgNTM1NzB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViX3J0dF9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weXViaSwgNTM2MTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViaQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weXViaV8xMjhCLCA1MzY0Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJpXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHl1YmlfYWNjLCA1MzY3N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJpX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weXViaV9hY2NfMTI4QiwgNTM3MTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXViaV9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weXVidiwgNTM3NTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXVidgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weXVidl8xMjhCLCA1Mzc4MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJ2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJtcHl1YnZfYWNjLCA1MzgxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZybXB5dWJ2X2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm1weXVidl9hY2NfMTI4QiwgNTM4NDl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm1weXVidl9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm9yLCA1Mzg4OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvcl8xMjhCLCA1MzkxNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3JfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm90ciwgNTM5NDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm90cgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92cm90cl8xMjhCLCA1Mzk3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zyb3RyXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kaGIsIDU0MDA0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kaGIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kaGJfMTI4QiwgNTQwMzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmRoYl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zyb3VuZGh1YiwgNTQwNjl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmRodWIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kaHViXzEyOEIsIDU0MTAwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kaHViXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kdWh1YiwgNTQxMzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR1aHViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zyb3VuZHVodWJfMTI4QiwgNTQxNjh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR1aHViXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kdXd1aCwgNTQyMDV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR1d3VoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zyb3VuZHV3dWhfMTI4QiwgNTQyMzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR1d3VoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kd2gsIDU0Mjc0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kd2gKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kd2hfMTI4QiwgNTQzMDR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR3aF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zyb3VuZHd1aCwgNTQzMzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cm91bmR3dWgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJvdW5kd3VoXzEyOEIsIDU0MzcwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJvdW5kd3VoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJzYWR1YmksIDU0NDA2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJzYWR1YmkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJzYWR1YmlfMTI4QiwgNTQ0MzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cnNhZHViaV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Zyc2FkdWJpX2FjYywgNTQ0NzF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92cnNhZHViaV9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnJzYWR1YmlfYWNjXzEyOEIsIDU0NTA1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnJzYWR1YmlfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNhdGR3LCA1NDU0NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYXRkdworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2F0ZHdfMTI4QiwgNTQ1NzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0ZHdfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2F0aHViLCA1NDYwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYXRodWIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNhdGh1Yl8xMjhCLCA1NDYzNH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYXRodWJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2F0dXd1aCwgNTQ2Njh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0dXd1aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2F0dXd1aF8xMjhCLCA1NDY5OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYXR1d3VoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNhdHdoLCA1NDczM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYXR3aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2F0d2hfMTI4QiwgNTQ3NjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2F0d2hfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2IsIDU0Nzk0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNiCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzYl8xMjhCLCA1NDgxOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzYl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzY2F0dGVybWgsIDU0ODQ5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2NhdHRlcm1oXzEyOEIsIDU0ODgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtaF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzY2F0dGVybWhfYWRkLCA1NDkxOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWhfYWRkCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzY2F0dGVybWhfYWRkXzEyOEIsIDU0OTU0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtaF9hZGRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2NhdHRlcm1ocSwgNTQ5OTV9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm1ocQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2NhdHRlcm1ocV8xMjhCLCA1NTAyOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWhxXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNjYXR0ZXJtaHcsIDU1MDY2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtaHcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNjYXR0ZXJtaHdfMTI4QiwgNTUwOTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm1od18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzY2F0dGVybWh3X2FkZCwgNTUxMzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm1od19hZGQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNjYXR0ZXJtaHdfYWRkXzEyOEIsIDU1MTc0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtaHdfYWRkXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNjYXR0ZXJtaHdxLCA1NTIxNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybWh3cQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2NhdHRlcm1od3FfMTI4QiwgNTUyNTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm1od3FfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2NhdHRlcm13LCA1NTI4OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybXcKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNjYXR0ZXJtd18xMjhCLCA1NTMyMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybXdfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2NhdHRlcm13X2FkZCwgNTUzNTh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm13X2FkZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2NhdHRlcm13X2FkZF8xMjhCLCA1NTM5NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybXdfYWRkXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNjYXR0ZXJtd3EsIDU1NDM1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtd3EKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNjYXR0ZXJtd3FfMTI4QiwgNTU0Njh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm13cV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaCwgNTU1MDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2gKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNoXzEyOEIsIDU1NTMxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNodWZlaCwgNTU1NjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmVoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaHVmZWhfMTI4QiwgNTU1OTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmVoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNodWZmYiwgNTU2MjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZiCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaHVmZmJfMTI4QiwgNTU2NTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZiXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNodWZmZWIsIDU1Njg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZmZWIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNodWZmZWJfMTI4QiwgNTU3MTd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1ZmZlYl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaHVmZmgsIDU1NzUyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZmaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2h1ZmZoXzEyOEIsIDU1NzgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZmaF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaHVmZm9iLCA1NTgxNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZm9iCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaHVmZm9iXzEyOEIsIDU1ODQ1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZmb2JfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2h1ZmZ2ZGQsIDU1ODgwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZmdmRkCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaHVmZnZkZF8xMjhCLCA1NTkxMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZnZkZF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaHVmb2ViLCA1NTk0N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmb2ViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaHVmb2ViXzEyOEIsIDU1OTc3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnNodWZvZWJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2h1Zm9laCwgNTYwMTJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1Zm9laAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c2h1Zm9laF8xMjhCLCA1NjA0Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmb2VoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnNodWZvaCwgNTYwNzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1Zm9oCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzaHVmb2hfMTI4QiwgNTYxMDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2h1Zm9oXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmIsIDU2MTQwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmJfMTI4QiwgNTYxNjd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJiX2R2LCA1NjE5OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJiX2R2CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJiX2R2XzEyOEIsIDU2MjI5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJfZHZfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViYm5xLCA1NjI2NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJibnEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmJucV8xMjhCLCA1NjI5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJibnFfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViYnEsIDU2MzI3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJicV8xMjhCLCA1NjM1NX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJicV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJic2F0LCA1NjM4OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJic2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJic2F0XzEyOEIsIDU2NDE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmJzYXRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViYnNhdF9kdiwgNTY0NTN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViYnNhdF9kdgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViYnNhdF9kdl8xMjhCLCA1NjQ4Nn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJic2F0X2R2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmgsIDU2NTI0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmhfMTI4QiwgNTY1NTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJoX2R2LCA1NjU4M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJoX2R2CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJoX2R2XzEyOEIsIDU2NjEzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhfZHZfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViaG5xLCA1NjY0OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJobnEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YmhucV8xMjhCLCA1NjY3N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJobnFfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViaHEsIDU2NzExfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhxCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJocV8xMjhCLCA1NjczOX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJocV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJoc2F0LCA1Njc3Mn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJoc2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJoc2F0XzEyOEIsIDU2ODAyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YmhzYXRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViaHNhdF9kdiwgNTY4Mzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaHNhdF9kdgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViaHNhdF9kdl8xMjhCLCA1Njg3MH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJoc2F0X2R2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1Ymh3LCA1NjkwOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJodworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3ViaHdfMTI4QiwgNTY5MzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3ViaHdfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3VidWJoLCA1Njk2OX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1YmgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YnViaF8xMjhCLCA1Njk5OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1YmhfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3VidWJzYXQsIDU3MDMyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVic2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ1YnNhdF8xMjhCLCA1NzA2M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1YnNhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ1YnNhdF9kdiwgNTcwOTl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJzYXRfZHYKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YnVic2F0X2R2XzEyOEIsIDU3MTMzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVic2F0X2R2XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YnVidWJiX3NhdCwgNTcxNzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJ1YmJfc2F0CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ1YnViYl9zYXRfMTI4QiwgNTcyMDd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWJ1YmJfc2F0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YnVoc2F0LCA1NzI0N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1aHNhdAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3VidWhzYXRfMTI4QiwgNTcyNzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidWhzYXRfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3VidWhzYXRfZHYsIDU3MzE0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVoc2F0X2R2CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ1aHNhdF9kdl8xMjhCLCA1NzM0OH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1aHNhdF9kdl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ1aHcsIDU3Mzg3fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVodworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3VidWh3XzEyOEIsIDU3NDE2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnVod18xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ1d3NhdCwgNTc0NTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidXdzYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YnV3c2F0XzEyOEIsIDU3NDgxfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnV3c2F0XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YnV3c2F0X2R2LCA1NzUxN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ1d3NhdF9kdgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3VidXdzYXRfZHZfMTI4QiwgNTc1NTF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidXdzYXRfZHZfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3VidywgNTc1OTB9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3VidworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3Vid18xMjhCLCA1NzYxN30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ3XzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YndfZHYsIDU3NjQ5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndfZHYKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YndfZHZfMTI4QiwgNTc2Nzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3Vid19kdl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ3bnEsIDU3NzE0fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnducQorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3Vid25xXzEyOEIsIDU3NzQzfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YnducV8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ3cSwgNTc3Nzd9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3Vid3EKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YndxXzEyOEIsIDU3ODA1fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndxXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YndzYXQsIDU3ODM4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndzYXQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnN1YndzYXRfMTI4QiwgNTc4Njh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3Vid3NhdF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ3c2F0X2R2LCA1NzkwM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzdWJ3c2F0X2R2CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3ZzdWJ3c2F0X2R2XzEyOEIsIDU3OTM2fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnN1YndzYXRfZHZfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3dhcCwgNTc5NzR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c3dhcAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92c3dhcF8xMjhCLCA1ODAwMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Zzd2FwXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnRtcHliLCA1ODAzM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5YgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dG1weWJfMTI4QiwgNTgwNjF9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dG1weWJfYWNjLCA1ODA5NH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5Yl9hY2MKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnRtcHliX2FjY18xMjhCLCA1ODEyNn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5Yl9hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dG1weWJ1cywgNTgxNjN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWJ1cworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dG1weWJ1c18xMjhCLCA1ODE5M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5YnVzXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnRtcHlidXNfYWNjLCA1ODIyOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5YnVzX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dG1weWJ1c19hY2NfMTI4QiwgNTgyNjJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWJ1c19hY2NfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dG1weWhiLCA1ODMwMX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5aGIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnRtcHloYl8xMjhCLCA1ODMzMH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5aGJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dG1weWhiX2FjYywgNTgzNjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dG1weWhiX2FjYworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dG1weWhiX2FjY18xMjhCLCA1ODM5N30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0bXB5aGJfYWNjXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnRyYW4yeDJfbWFwLCA1ODQzNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z0cmFuMngyX21hcAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dHJhbjJ4Ml9tYXBfMTI4QiwgNTg0Njl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dHJhbjJ4Ml9tYXBfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dW5wYWNrYiwgNTg1MDh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dW5wYWNrYl8xMjhCLCA1ODUzOH0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2tiXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnVucGFja2gsIDU4NTczfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja2gKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnVucGFja2hfMTI4QiwgNTg2MDN9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNraF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z1bnBhY2tvYiwgNTg2Mzh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrb2IKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnVucGFja29iXzEyOEIsIDU4NjY5fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja29iXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnVucGFja29oLCA1ODcwNX0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2tvaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dW5wYWNrb2hfMTI4QiwgNTg3MzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrb2hfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92dW5wYWNrdWIsIDU4NzcyfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja3ViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z1bnBhY2t1Yl8xMjhCLCA1ODgwM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z1bnBhY2t1Yl8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z1bnBhY2t1aCwgNTg4Mzl9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92dW5wYWNrdWgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnVucGFja3VoXzEyOEIsIDU4ODcwfSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnVucGFja3VoXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnhvciwgNTg5MDZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92eG9yCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z4b3JfMTI4QiwgNTg5MzJ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92eG9yXzEyOEIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fVjZfdnpiLCA1ODk2M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z6YgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92emJfMTI4QiwgNTg5ODh9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9WNl92emJfMTI4QgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9WNl92emgsIDU5MDE4fSwgLy8gX19idWlsdGluX0hFWEFHT05fVjZfdnpoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1Y2X3Z6aF8xMjhCLCA1OTA0M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3Z6aF8xMjhCCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1kyX2RjY2xlYW5hLCA1OTA3M30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1kyX2RjY2xlYW5hCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1kyX2RjY2xlYW5pbnZhLCA1OTEwM30sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1kyX2RjY2xlYW5pbnZhCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1kyX2RjaW52YSwgNTkxMzZ9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9ZMl9kY2ludmEKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fWTJfZGN6ZXJvYSwgNTkxNjR9LCAvLyBfX2J1aWx0aW5fSEVYQUdPTl9ZMl9kY3plcm9hCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1k0X2wyZmV0Y2gsIDU5MTkzfSwgLy8gX19idWlsdGluX0hFWEFHT05fWTRfbDJmZXRjaAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9ZNV9sMmZldGNoLCA1OTIyMn0sIC8vIF9fYnVpbHRpbl9IRVhBR09OX1k1X2wyZmV0Y2gKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fcHJlZmV0Y2gsIDU5NDY0fSwgLy8gX19idWlsdGluX0hFWEFHT05fcHJlZmV0Y2gKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfc3RvcmVyYl9wYnIsIDI4Njc3fSwgLy8gX19idWlsdGluX2JyZXZfc3RiCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX1MyX3N0b3JlcmRfcGJyLCAyODY5Nn0sIC8vIF9fYnVpbHRpbl9icmV2X3N0ZAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9TMl9zdG9yZXJoX3BiciwgMjg3MzZ9LCAvLyBfX2J1aWx0aW5fYnJldl9zdGgKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfc3RvcmVyZl9wYnIsIDI4NzE1fSwgLy8gX19idWlsdGluX2JyZXZfc3RoaGkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fUzJfc3RvcmVyaV9wYnIsIDI4NzU1fSwgLy8gX19idWlsdGluX2JyZXZfc3R3CisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX2NpcmNfbGRiLCA1OTI1MX0sIC8vIF9fYnVpbHRpbl9jaXJjX2xkYgorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9jaXJjX2xkZCwgNTkyNzB9LCAvLyBfX2J1aWx0aW5fY2lyY19sZGQKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fY2lyY19sZGgsIDU5Mjg5fSwgLy8gX19idWlsdGluX2NpcmNfbGRoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX2NpcmNfbGR1YiwgNTkzMDh9LCAvLyBfX2J1aWx0aW5fY2lyY19sZHViCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX2NpcmNfbGR1aCwgNTkzMjh9LCAvLyBfX2J1aWx0aW5fY2lyY19sZHVoCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX2NpcmNfbGR3LCA1OTM0OH0sIC8vIF9fYnVpbHRpbl9jaXJjX2xkdworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9jaXJjX3N0YiwgNTkzNjd9LCAvLyBfX2J1aWx0aW5fY2lyY19zdGIKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fY2lyY19zdGQsIDU5Mzg2fSwgLy8gX19idWlsdGluX2NpcmNfc3RkCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX2NpcmNfc3RoLCA1OTQwNX0sIC8vIF9fYnVpbHRpbl9jaXJjX3N0aAorICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl9jaXJjX3N0aGhpLCA1OTQyNH0sIC8vIF9fYnVpbHRpbl9jaXJjX3N0aGhpCisgICAgICB7SW50cmluc2ljOjpoZXhhZ29uX2NpcmNfc3R3LCA1OTQ0NX0sIC8vIF9fYnVpbHRpbl9jaXJjX3N0dworICAgICAge0ludHJpbnNpYzo6aGV4YWdvbl92bWVtY3B5LCA1OTQ5MX0sIC8vIF9fYnVpbHRpbl9oZXhhZ29uX3ZtZW1jcHkKKyAgICAgIHtJbnRyaW5zaWM6OmhleGFnb25fdm1lbXNldCwgNTk1MTd9LCAvLyBfX2J1aWx0aW5faGV4YWdvbl92bWVtc2V0CiAgICAgfTsKICAgICBhdXRvIEkgPSBzdGQ6Omxvd2VyX2JvdW5kKHN0ZDo6YmVnaW4oaGV4YWdvbk5hbWVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZW5kKGhleGFnb25OYW1lcyksCkBAIC0yNjgwNSw2NzMgKzI2Njk5LDY3MyBAQAogICB9CiAgIGlmIChUYXJnZXRQcmVmaXggPT0gIm1pcHMiKSB7CiAgICAgc3RhdGljIGNvbnN0IEJ1aWx0aW5FbnRyeSBtaXBzTmFtZXNbXSA9IHsKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWJzcV9zX3BoLCA1Nzg4NH0sIC8vIF9fYnVpbHRpbl9taXBzX2Fic3Ffc19waAotICAgICAge0ludHJpbnNpYzo6bWlwc19hYnNxX3NfcWIsIDU3OTA5fSwgLy8gX19idWlsdGluX21pcHNfYWJzcV9zX3FiCi0gICAgICB7SW50cmluc2ljOjptaXBzX2Fic3Ffc193LCA1NzkzNH0sIC8vIF9fYnVpbHRpbl9taXBzX2Fic3Ffc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2FkZHFfcGgsIDU4MDQ2fSwgLy8gX19idWlsdGluX21pcHNfYWRkcV9waAotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRxX3NfcGgsIDU4MDY5fSwgLy8gX19idWlsdGluX21pcHNfYWRkcV9zX3BoCi0gICAgICB7SW50cmluc2ljOjptaXBzX2FkZHFfc193LCA1ODA5NH0sIC8vIF9fYnVpbHRpbl9taXBzX2FkZHFfc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2FkZHFoX3BoLCA1ODExOH0sIC8vIF9fYnVpbHRpbl9taXBzX2FkZHFoX3BoCi0gICAgICB7SW50cmluc2ljOjptaXBzX2FkZHFoX3JfcGgsIDU4MTQyfSwgLy8gX19idWlsdGluX21pcHNfYWRkcWhfcl9waAotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRxaF9yX3csIDU4MTY4fSwgLy8gX19idWlsdGluX21pcHNfYWRkcWhfcl93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2FkZHFoX3csIDU4MTkzfSwgLy8gX19idWlsdGluX21pcHNfYWRkcWhfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRzYywgNTg0OTJ9LCAvLyBfX2J1aWx0aW5fbWlwc19hZGRzYwotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGR1X3BoLCA1ODUxM30sIC8vIF9fYnVpbHRpbl9taXBzX2FkZHVfcGgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkdV9xYiwgNTg1MzZ9LCAvLyBfX2J1aWx0aW5fbWlwc19hZGR1X3FiCi0gICAgICB7SW50cmluc2ljOjptaXBzX2FkZHVfc19waCwgNTg1NTl9LCAvLyBfX2J1aWx0aW5fbWlwc19hZGR1X3NfcGgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkdV9zX3FiLCA1ODU4NH0sIC8vIF9fYnVpbHRpbl9taXBzX2FkZHVfc19xYgotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGR1aF9xYiwgNTg2MDl9LCAvLyBfX2J1aWx0aW5fbWlwc19hZGR1aF9xYgotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGR1aF9yX3FiLCA1ODYzM30sIC8vIF9fYnVpbHRpbl9taXBzX2FkZHVoX3JfcWIKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkd2MsIDU4ODMxfSwgLy8gX19idWlsdGluX21pcHNfYWRkd2MKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYXBwZW5kLCA1ODg5M30sIC8vIF9fYnVpbHRpbl9taXBzX2FwcGVuZAotICAgICAge0ludHJpbnNpYzo6bWlwc19iYWxpZ24sIDU5NDU5fSwgLy8gX19idWlsdGluX21pcHNfYmFsaWduCi0gICAgICB7SW50cmluc2ljOjptaXBzX2JpdHJldiwgNjAwMTN9LCAvLyBfX2J1aWx0aW5fbWlwc19iaXRyZXYKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnBvc2dlMzIsIDYwMzkxfSwgLy8gX19idWlsdGluX21pcHNfYnBvc2dlMzIKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY21wX2VxX3BoLCA2MTYzMH0sIC8vIF9fYnVpbHRpbl9taXBzX2NtcF9lcV9waAotICAgICAge0ludHJpbnNpYzo6bWlwc19jbXBfbGVfcGgsIDYxNjU1fSwgLy8gX19idWlsdGluX21pcHNfY21wX2xlX3BoCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NtcF9sdF9waCwgNjE2ODB9LCAvLyBfX2J1aWx0aW5fbWlwc19jbXBfbHRfcGgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY21wZ2R1X2VxX3FiLCA2MTcwNX0sIC8vIF9fYnVpbHRpbl9taXBzX2NtcGdkdV9lcV9xYgotICAgICAge0ludHJpbnNpYzo6bWlwc19jbXBnZHVfbGVfcWIsIDYxNzMzfSwgLy8gX19idWlsdGluX21pcHNfY21wZ2R1X2xlX3FiCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NtcGdkdV9sdF9xYiwgNjE3NjF9LCAvLyBfX2J1aWx0aW5fbWlwc19jbXBnZHVfbHRfcWIKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY21wZ3VfZXFfcWIsIDYxNzg5fSwgLy8gX19idWlsdGluX21pcHNfY21wZ3VfZXFfcWIKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY21wZ3VfbGVfcWIsIDYxODE2fSwgLy8gX19idWlsdGluX21pcHNfY21wZ3VfbGVfcWIKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY21wZ3VfbHRfcWIsIDYxODQzfSwgLy8gX19idWlsdGluX21pcHNfY21wZ3VfbHRfcWIKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY21wdV9lcV9xYiwgNjE4NzB9LCAvLyBfX2J1aWx0aW5fbWlwc19jbXB1X2VxX3FiCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NtcHVfbGVfcWIsIDYxODk2fSwgLy8gX19idWlsdGluX21pcHNfY21wdV9sZV9xYgotICAgICAge0ludHJpbnNpYzo6bWlwc19jbXB1X2x0X3FiLCA2MTkyMn0sIC8vIF9fYnVpbHRpbl9taXBzX2NtcHVfbHRfcWIKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZGxzYSwgNjIzMjl9LCAvLyBfX2J1aWx0aW5fbWlwc19kbHNhCi0gICAgICB7SW50cmluc2ljOjptaXBzX2RwYV93X3BoLCA2MjQ4N30sIC8vIF9fYnVpbHRpbl9taXBzX2RwYV93X3BoCi0gICAgICB7SW50cmluc2ljOjptaXBzX2RwYXFfc193X3BoLCA2MjY1NX0sIC8vIF9fYnVpbHRpbl9taXBzX2RwYXFfc193X3BoCi0gICAgICB7SW50cmluc2ljOjptaXBzX2RwYXFfc2FfbF93LCA2MjY4Mn0sIC8vIF9fYnVpbHRpbl9taXBzX2RwYXFfc2FfbF93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2RwYXF4X3Nfd19waCwgNjI3MDl9LCAvLyBfX2J1aWx0aW5fbWlwc19kcGFxeF9zX3dfcGgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZHBhcXhfc2Ffd19waCwgNjI3Mzd9LCAvLyBfX2J1aWx0aW5fbWlwc19kcGFxeF9zYV93X3BoCi0gICAgICB7SW50cmluc2ljOjptaXBzX2RwYXVfaF9xYmwsIDYyNzY2fSwgLy8gX19idWlsdGluX21pcHNfZHBhdV9oX3FibAotICAgICAge0ludHJpbnNpYzo6bWlwc19kcGF1X2hfcWJyLCA2Mjc5Mn0sIC8vIF9fYnVpbHRpbl9taXBzX2RwYXVfaF9xYnIKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZHBheF93X3BoLCA2MjgxOH0sIC8vIF9fYnVpbHRpbl9taXBzX2RwYXhfd19waAotICAgICAge0ludHJpbnNpYzo6bWlwc19kcHNfd19waCwgNjI4NDN9LCAvLyBfX2J1aWx0aW5fbWlwc19kcHNfd19waAotICAgICAge0ludHJpbnNpYzo6bWlwc19kcHNxX3Nfd19waCwgNjI4Njd9LCAvLyBfX2J1aWx0aW5fbWlwc19kcHNxX3Nfd19waAotICAgICAge0ludHJpbnNpYzo6bWlwc19kcHNxX3NhX2xfdywgNjI4OTR9LCAvLyBfX2J1aWx0aW5fbWlwc19kcHNxX3NhX2xfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19kcHNxeF9zX3dfcGgsIDYyOTIxfSwgLy8gX19idWlsdGluX21pcHNfZHBzcXhfc193X3BoCi0gICAgICB7SW50cmluc2ljOjptaXBzX2Rwc3F4X3NhX3dfcGgsIDYyOTQ5fSwgLy8gX19idWlsdGluX21pcHNfZHBzcXhfc2Ffd19waAotICAgICAge0ludHJpbnNpYzo6bWlwc19kcHN1X2hfcWJsLCA2Mjk3OH0sIC8vIF9fYnVpbHRpbl9taXBzX2Rwc3VfaF9xYmwKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZHBzdV9oX3FiciwgNjMwMDR9LCAvLyBfX2J1aWx0aW5fbWlwc19kcHN1X2hfcWJyCi0gICAgICB7SW50cmluc2ljOjptaXBzX2Rwc3hfd19waCwgNjMxNzR9LCAvLyBfX2J1aWx0aW5fbWlwc19kcHN4X3dfcGgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZXh0cCwgNjMxOTl9LCAvLyBfX2J1aWx0aW5fbWlwc19leHRwCi0gICAgICB7SW50cmluc2ljOjptaXBzX2V4dHBkcCwgNjMyMTl9LCAvLyBfX2J1aWx0aW5fbWlwc19leHRwZHAKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZXh0cl9yX3csIDYzMjQxfSwgLy8gX19idWlsdGluX21pcHNfZXh0cl9yX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZXh0cl9yc193LCA2MzI2NX0sIC8vIF9fYnVpbHRpbl9taXBzX2V4dHJfcnNfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19leHRyX3NfaCwgNjMyOTB9LCAvLyBfX2J1aWx0aW5fbWlwc19leHRyX3NfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19leHRyX3csIDYzMzE0fSwgLy8gX19idWlsdGluX21pcHNfZXh0cl93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2luc3YsIDY2MzY2fSwgLy8gX19idWlsdGluX21pcHNfaW5zdgotICAgICAge0ludHJpbnNpYzo6bWlwc19sYnV4LCA2NjQ3NH0sIC8vIF9fYnVpbHRpbl9taXBzX2xidXgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbGh4LCA2NjY1MH0sIC8vIF9fYnVpbHRpbl9taXBzX2xoeAotICAgICAge0ludHJpbnNpYzo6bWlwc19sc2EsIDY2NjY5fSwgLy8gX19idWlsdGluX21pcHNfbHNhCi0gICAgICB7SW50cmluc2ljOjptaXBzX2x3eCwgNjY2ODh9LCAvLyBfX2J1aWx0aW5fbWlwc19sd3gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWFkZCwgNjY3MDd9LCAvLyBfX2J1aWx0aW5fbWlwc19tYWRkCi0gICAgICB7SW50cmluc2ljOjptaXBzX21hZGR1LCA2NjgyMX0sIC8vIF9fYnVpbHRpbl9taXBzX21hZGR1Ci0gICAgICB7SW50cmluc2ljOjptaXBzX21hcV9zX3dfcGhsLCA2NjkzMH0sIC8vIF9fYnVpbHRpbl9taXBzX21hcV9zX3dfcGhsCi0gICAgICB7SW50cmluc2ljOjptaXBzX21hcV9zX3dfcGhyLCA2Njk1N30sIC8vIF9fYnVpbHRpbl9taXBzX21hcV9zX3dfcGhyCi0gICAgICB7SW50cmluc2ljOjptaXBzX21hcV9zYV93X3BobCwgNjY5ODR9LCAvLyBfX2J1aWx0aW5fbWlwc19tYXFfc2Ffd19waGwKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWFxX3NhX3dfcGhyLCA2NzAxMn0sIC8vIF9fYnVpbHRpbl9taXBzX21hcV9zYV93X3BocgotICAgICAge0ludHJpbnNpYzo6bWlwc19tb2RzdWIsIDY4MTEyfSwgLy8gX19idWlsdGluX21pcHNfbW9kc3ViCi0gICAgICB7SW50cmluc2ljOjptaXBzX21zdWIsIDY4MTU1fSwgLy8gX19idWlsdGluX21pcHNfbXN1YgotICAgICAge0ludHJpbnNpYzo6bWlwc19tc3VidSwgNjgyNjl9LCAvLyBfX2J1aWx0aW5fbWlwc19tc3VidQotICAgICAge0ludHJpbnNpYzo6bWlwc19tdGhsaXAsIDY4Mzc4fSwgLy8gX19idWlsdGluX21pcHNfbXRobGlwCi0gICAgICB7SW50cmluc2ljOjptaXBzX211bF9waCwgNjg0MDB9LCAvLyBfX2J1aWx0aW5fbWlwc19tdWxfcGgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXVsX3NfcGgsIDY4NDY2fSwgLy8gX19idWlsdGluX21pcHNfbXVsX3NfcGgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXVsZXFfc193X3BobCwgNjg0OTB9LCAvLyBfX2J1aWx0aW5fbWlwc19tdWxlcV9zX3dfcGhsCi0gICAgICB7SW50cmluc2ljOjptaXBzX211bGVxX3Nfd19waHIsIDY4NTE5fSwgLy8gX19idWlsdGluX21pcHNfbXVsZXFfc193X3BocgotICAgICAge0ludHJpbnNpYzo6bWlwc19tdWxldV9zX3BoX3FibCwgNjg1NDh9LCAvLyBfX2J1aWx0aW5fbWlwc19tdWxldV9zX3BoX3FibAotICAgICAge0ludHJpbnNpYzo6bWlwc19tdWxldV9zX3BoX3FiciwgNjg1Nzh9LCAvLyBfX2J1aWx0aW5fbWlwc19tdWxldV9zX3BoX3FicgotICAgICAge0ludHJpbnNpYzo6bWlwc19tdWxxX3JzX3BoLCA2ODYwOH0sIC8vIF9fYnVpbHRpbl9taXBzX211bHFfcnNfcGgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXVscV9yc193LCA2ODYzNH0sIC8vIF9fYnVpbHRpbl9taXBzX211bHFfcnNfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19tdWxxX3NfcGgsIDY4NjU5fSwgLy8gX19idWlsdGluX21pcHNfbXVscV9zX3BoCi0gICAgICB7SW50cmluc2ljOjptaXBzX211bHFfc193LCA2ODY4NH0sIC8vIF9fYnVpbHRpbl9taXBzX211bHFfc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX211bHNhX3dfcGgsIDY4NzU0fSwgLy8gX19idWlsdGluX21pcHNfbXVsc2Ffd19waAotICAgICAge0ludHJpbnNpYzo6bWlwc19tdWxzYXFfc193X3BoLCA2ODc4MH0sIC8vIF9fYnVpbHRpbl9taXBzX211bHNhcV9zX3dfcGgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXVsdCwgNjg4MDl9LCAvLyBfX2J1aWx0aW5fbWlwc19tdWx0Ci0gICAgICB7SW50cmluc2ljOjptaXBzX211bHR1LCA2ODgyOX0sIC8vIF9fYnVpbHRpbl9taXBzX211bHR1Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3BhY2tybF9waCwgNjkxODJ9LCAvLyBfX2J1aWx0aW5fbWlwc19wYWNrcmxfcGgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcGlja19waCwgNjk0Njd9LCAvLyBfX2J1aWx0aW5fbWlwc19waWNrX3BoCi0gICAgICB7SW50cmluc2ljOjptaXBzX3BpY2tfcWIsIDY5NDkwfSwgLy8gX19idWlsdGluX21pcHNfcGlja19xYgotICAgICAge0ludHJpbnNpYzo6bWlwc19wcmVjZXFfd19waGwsIDY5NTEzfSwgLy8gX19idWlsdGluX21pcHNfcHJlY2VxX3dfcGhsCi0gICAgICB7SW50cmluc2ljOjptaXBzX3ByZWNlcV93X3BociwgNjk1NDF9LCAvLyBfX2J1aWx0aW5fbWlwc19wcmVjZXFfd19waHIKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY2VxdV9waF9xYmwsIDY5NTY5fSwgLy8gX19idWlsdGluX21pcHNfcHJlY2VxdV9waF9xYmwKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY2VxdV9waF9xYmxhLCA2OTU5OX0sIC8vIF9fYnVpbHRpbl9taXBzX3ByZWNlcXVfcGhfcWJsYQotICAgICAge0ludHJpbnNpYzo6bWlwc19wcmVjZXF1X3BoX3FiciwgNjk2MzB9LCAvLyBfX2J1aWx0aW5fbWlwc19wcmVjZXF1X3BoX3FicgotICAgICAge0ludHJpbnNpYzo6bWlwc19wcmVjZXF1X3BoX3FicmEsIDY5NjYwfSwgLy8gX19idWlsdGluX21pcHNfcHJlY2VxdV9waF9xYnJhCi0gICAgICB7SW50cmluc2ljOjptaXBzX3ByZWNldV9waF9xYmwsIDY5NjkxfSwgLy8gX19idWlsdGluX21pcHNfcHJlY2V1X3BoX3FibAotICAgICAge0ludHJpbnNpYzo6bWlwc19wcmVjZXVfcGhfcWJsYSwgNjk3MjB9LCAvLyBfX2J1aWx0aW5fbWlwc19wcmVjZXVfcGhfcWJsYQotICAgICAge0ludHJpbnNpYzo6bWlwc19wcmVjZXVfcGhfcWJyLCA2OTc1MH0sIC8vIF9fYnVpbHRpbl9taXBzX3ByZWNldV9waF9xYnIKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY2V1X3BoX3FicmEsIDY5Nzc5fSwgLy8gX19idWlsdGluX21pcHNfcHJlY2V1X3BoX3FicmEKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY3JfcWJfcGgsIDY5ODA5fSwgLy8gX19idWlsdGluX21pcHNfcHJlY3JfcWJfcGgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY3Jfc3JhX3BoX3csIDY5ODM2fSwgLy8gX19idWlsdGluX21pcHNfcHJlY3Jfc3JhX3BoX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY3Jfc3JhX3JfcGhfdywgNjk4NjZ9LCAvLyBfX2J1aWx0aW5fbWlwc19wcmVjcl9zcmFfcl9waF93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3ByZWNycV9waF93LCA2OTg5OH0sIC8vIF9fYnVpbHRpbl9taXBzX3ByZWNycV9waF93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3ByZWNycV9xYl9waCwgNjk5MjV9LCAvLyBfX2J1aWx0aW5fbWlwc19wcmVjcnFfcWJfcGgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY3JxX3JzX3BoX3csIDY5OTUzfSwgLy8gX19idWlsdGluX21pcHNfcHJlY3JxX3JzX3BoX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY3JxdV9zX3FiX3BoLCA2OTk4M30sIC8vIF9fYnVpbHRpbl9taXBzX3ByZWNycXVfc19xYl9waAotICAgICAge0ludHJpbnNpYzo6bWlwc19wcmVwZW5kLCA3MDAxNH0sIC8vIF9fYnVpbHRpbl9taXBzX3ByZXBlbmQKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcmFkZHVfd19xYiwgNzAwMzd9LCAvLyBfX2J1aWx0aW5fbWlwc19yYWRkdV93X3FiCi0gICAgICB7SW50cmluc2ljOjptaXBzX3JkZHNwLCA3MDA2M30sIC8vIF9fYnVpbHRpbl9taXBzX3JkZHNwCi0gICAgICB7SW50cmluc2ljOjptaXBzX3JlcGxfcGgsIDcwMDg0fSwgLy8gX19idWlsdGluX21pcHNfcmVwbF9waAotICAgICAge0ludHJpbnNpYzo6bWlwc19yZXBsX3FiLCA3MDEwN30sIC8vIF9fYnVpbHRpbl9taXBzX3JlcGxfcWIKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2hpbG8sIDcwMzY2fSwgLy8gX19idWlsdGluX21pcHNfc2hpbG8KLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2hsbF9waCwgNzAzODd9LCAvLyBfX2J1aWx0aW5fbWlwc19zaGxsX3BoCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NobGxfcWIsIDcwNDEwfSwgLy8gX19idWlsdGluX21pcHNfc2hsbF9xYgotICAgICAge0ludHJpbnNpYzo6bWlwc19zaGxsX3NfcGgsIDcwNDMzfSwgLy8gX19idWlsdGluX21pcHNfc2hsbF9zX3BoCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NobGxfc193LCA3MDQ1OH0sIC8vIF9fYnVpbHRpbl9taXBzX3NobGxfc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3NocmFfcGgsIDcwNDgyfSwgLy8gX19idWlsdGluX21pcHNfc2hyYV9waAotICAgICAge0ludHJpbnNpYzo6bWlwc19zaHJhX3FiLCA3MDUwNX0sIC8vIF9fYnVpbHRpbl9taXBzX3NocmFfcWIKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2hyYV9yX3BoLCA3MDUyOH0sIC8vIF9fYnVpbHRpbl9taXBzX3NocmFfcl9waAotICAgICAge0ludHJpbnNpYzo6bWlwc19zaHJhX3JfcWIsIDcwNTUzfSwgLy8gX19idWlsdGluX21pcHNfc2hyYV9yX3FiCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NocmFfcl93LCA3MDU3OH0sIC8vIF9fYnVpbHRpbl9taXBzX3NocmFfcl93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3NocmxfcGgsIDcwNjAyfSwgLy8gX19idWlsdGluX21pcHNfc2hybF9waAotICAgICAge0ludHJpbnNpYzo6bWlwc19zaHJsX3FiLCA3MDYyNX0sIC8vIF9fYnVpbHRpbl9taXBzX3NocmxfcWIKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3VicV9waCwgNzE5MDR9LCAvLyBfX2J1aWx0aW5fbWlwc19zdWJxX3BoCi0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnFfc19waCwgNzE5Mjd9LCAvLyBfX2J1aWx0aW5fbWlwc19zdWJxX3NfcGgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3VicV9zX3csIDcxOTUyfSwgLy8gX19idWlsdGluX21pcHNfc3VicV9zX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3VicWhfcGgsIDcxOTc2fSwgLy8gX19idWlsdGluX21pcHNfc3VicWhfcGgKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3VicWhfcl9waCwgNzIwMDB9LCAvLyBfX2J1aWx0aW5fbWlwc19zdWJxaF9yX3BoCi0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnFoX3JfdywgNzIwMjZ9LCAvLyBfX2J1aWx0aW5fbWlwc19zdWJxaF9yX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3VicWhfdywgNzIwNTF9LCAvLyBfX2J1aWx0aW5fbWlwc19zdWJxaF93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnVfcGgsIDcyNDU4fSwgLy8gX19idWlsdGluX21pcHNfc3VidV9waAotICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJ1X3FiLCA3MjQ4MX0sIC8vIF9fYnVpbHRpbl9taXBzX3N1YnVfcWIKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3VidV9zX3BoLCA3MjUwNH0sIC8vIF9fYnVpbHRpbl9taXBzX3N1YnVfc19waAotICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJ1X3NfcWIsIDcyNTI5fSwgLy8gX19idWlsdGluX21pcHNfc3VidV9zX3FiCi0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnVoX3FiLCA3MjU1NH0sIC8vIF9fYnVpbHRpbl9taXBzX3N1YnVoX3FiCi0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnVoX3JfcWIsIDcyNTc4fSwgLy8gX19idWlsdGluX21pcHNfc3VidWhfcl9xYgotICAgICAge0ludHJpbnNpYzo6bWlwc193cmRzcCwgNzI4NjB9LCAvLyBfX2J1aWx0aW5fbWlwc193cmRzcAotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRfYV9iLCA1Nzk1OH0sIC8vIF9fYnVpbHRpbl9tc2FfYWRkX2FfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRfYV9kLCA1Nzk4MH0sIC8vIF9fYnVpbHRpbl9tc2FfYWRkX2FfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRfYV9oLCA1ODAwMn0sIC8vIF9fYnVpbHRpbl9tc2FfYWRkX2FfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRfYV93LCA1ODAyNH0sIC8vIF9fYnVpbHRpbl9tc2FfYWRkX2FfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRzX2FfYiwgNTgyMTZ9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHNfYV9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX2FkZHNfYV9kLCA1ODIzOX0sIC8vIF9fYnVpbHRpbl9tc2FfYWRkc19hX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkc19hX2gsIDU4MjYyfSwgLy8gX19idWlsdGluX21zYV9hZGRzX2FfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRzX2FfdywgNTgyODV9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHNfYV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2FkZHNfc19iLCA1ODMwOH0sIC8vIF9fYnVpbHRpbl9tc2FfYWRkc19zX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkc19zX2QsIDU4MzMxfSwgLy8gX19idWlsdGluX21zYV9hZGRzX3NfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRzX3NfaCwgNTgzNTR9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHNfc19oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2FkZHNfc193LCA1ODM3N30sIC8vIF9fYnVpbHRpbl9tc2FfYWRkc19zX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkc191X2IsIDU4NDAwfSwgLy8gX19idWlsdGluX21zYV9hZGRzX3VfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRzX3VfZCwgNTg0MjN9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHNfdV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2FkZHNfdV9oLCA1ODQ0Nn0sIC8vIF9fYnVpbHRpbl9tc2FfYWRkc191X2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkc191X3csIDU4NDY5fSwgLy8gX19idWlsdGluX21zYV9hZGRzX3VfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGR2X2IsIDU4NjU5fSwgLy8gX19idWlsdGluX21zYV9hZGR2X2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkdl9kLCA1ODY4MH0sIC8vIF9fYnVpbHRpbl9tc2FfYWRkdl9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2FkZHZfaCwgNTg3MDF9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHZfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19hZGR2X3csIDU4NzIyfSwgLy8gX19idWlsdGluX21zYV9hZGR2X3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkdmlfYiwgNTg3NDN9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHZpX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkdmlfZCwgNTg3NjV9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHZpX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkdmlfaCwgNTg3ODd9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHZpX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkdmlfdywgNTg4MDl9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHZpX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYW5kX3YsIDU4ODUyfSwgLy8gX19idWlsdGluX21zYV9hbmRfdgotICAgICAge0ludHJpbnNpYzo6bWlwc19hbmRpX2IsIDU4ODcyfSwgLy8gX19idWlsdGluX21zYV9hbmRpX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYXN1Yl9zX2IsIDU4OTE1fSwgLy8gX19idWlsdGluX21zYV9hc3ViX3NfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19hc3ViX3NfZCwgNTg5Mzh9LCAvLyBfX2J1aWx0aW5fbXNhX2FzdWJfc19kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2FzdWJfc19oLCA1ODk2MX0sIC8vIF9fYnVpbHRpbl9tc2FfYXN1Yl9zX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYXN1Yl9zX3csIDU4OTg0fSwgLy8gX19idWlsdGluX21zYV9hc3ViX3NfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19hc3ViX3VfYiwgNTkwMDd9LCAvLyBfX2J1aWx0aW5fbXNhX2FzdWJfdV9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX2FzdWJfdV9kLCA1OTAzMH0sIC8vIF9fYnVpbHRpbl9tc2FfYXN1Yl91X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYXN1Yl91X2gsIDU5MDUzfSwgLy8gX19idWlsdGluX21zYV9hc3ViX3VfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19hc3ViX3VfdywgNTkwNzZ9LCAvLyBfX2J1aWx0aW5fbXNhX2FzdWJfdV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV9zX2IsIDU5MDk5fSwgLy8gX19idWlsdGluX21zYV9hdmVfc19iCi0gICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV9zX2QsIDU5MTIxfSwgLy8gX19idWlsdGluX21zYV9hdmVfc19kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV9zX2gsIDU5MTQzfSwgLy8gX19idWlsdGluX21zYV9hdmVfc19oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV9zX3csIDU5MTY1fSwgLy8gX19idWlsdGluX21zYV9hdmVfc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV91X2IsIDU5MTg3fSwgLy8gX19idWlsdGluX21zYV9hdmVfdV9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV91X2QsIDU5MjA5fSwgLy8gX19idWlsdGluX21zYV9hdmVfdV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV91X2gsIDU5MjMxfSwgLy8gX19idWlsdGluX21zYV9hdmVfdV9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV91X3csIDU5MjUzfSwgLy8gX19idWlsdGluX21zYV9hdmVfdV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2F2ZXJfc19iLCA1OTI3NX0sIC8vIF9fYnVpbHRpbl9tc2FfYXZlcl9zX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYXZlcl9zX2QsIDU5Mjk4fSwgLy8gX19idWlsdGluX21zYV9hdmVyX3NfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19hdmVyX3NfaCwgNTkzMjF9LCAvLyBfX2J1aWx0aW5fbXNhX2F2ZXJfc19oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2F2ZXJfc193LCA1OTM0NH0sIC8vIF9fYnVpbHRpbl9tc2FfYXZlcl9zX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYXZlcl91X2IsIDU5MzY3fSwgLy8gX19idWlsdGluX21zYV9hdmVyX3VfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19hdmVyX3VfZCwgNTkzOTB9LCAvLyBfX2J1aWx0aW5fbXNhX2F2ZXJfdV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2F2ZXJfdV9oLCA1OTQxM30sIC8vIF9fYnVpbHRpbl9tc2FfYXZlcl91X2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYXZlcl91X3csIDU5NDM2fSwgLy8gX19idWlsdGluX21zYV9hdmVyX3VfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19iY2xyX2IsIDU5NDgxfSwgLy8gX19idWlsdGluX21zYV9iY2xyX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmNscl9kLCA1OTUwMn0sIC8vIF9fYnVpbHRpbl9tc2FfYmNscl9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2JjbHJfaCwgNTk1MjN9LCAvLyBfX2J1aWx0aW5fbXNhX2JjbHJfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19iY2xyX3csIDU5NTQ0fSwgLy8gX19idWlsdGluX21zYV9iY2xyX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmNscmlfYiwgNTk1NjV9LCAvLyBfX2J1aWx0aW5fbXNhX2JjbHJpX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmNscmlfZCwgNTk1ODd9LCAvLyBfX2J1aWx0aW5fbXNhX2JjbHJpX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmNscmlfaCwgNTk2MDl9LCAvLyBfX2J1aWx0aW5fbXNhX2JjbHJpX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmNscmlfdywgNTk2MzF9LCAvLyBfX2J1aWx0aW5fbXNhX2JjbHJpX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmluc2xfYiwgNTk2NTN9LCAvLyBfX2J1aWx0aW5fbXNhX2JpbnNsX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmluc2xfZCwgNTk2NzV9LCAvLyBfX2J1aWx0aW5fbXNhX2JpbnNsX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmluc2xfaCwgNTk2OTd9LCAvLyBfX2J1aWx0aW5fbXNhX2JpbnNsX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmluc2xfdywgNTk3MTl9LCAvLyBfX2J1aWx0aW5fbXNhX2JpbnNsX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmluc2xpX2IsIDU5NzQxfSwgLy8gX19idWlsdGluX21zYV9iaW5zbGlfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19iaW5zbGlfZCwgNTk3NjR9LCAvLyBfX2J1aWx0aW5fbXNhX2JpbnNsaV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2JpbnNsaV9oLCA1OTc4N30sIC8vIF9fYnVpbHRpbl9tc2FfYmluc2xpX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmluc2xpX3csIDU5ODEwfSwgLy8gX19idWlsdGluX21zYV9iaW5zbGlfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19iaW5zcl9iLCA1OTgzM30sIC8vIF9fYnVpbHRpbl9tc2FfYmluc3JfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19iaW5zcl9kLCA1OTg1NX0sIC8vIF9fYnVpbHRpbl9tc2FfYmluc3JfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19iaW5zcl9oLCA1OTg3N30sIC8vIF9fYnVpbHRpbl9tc2FfYmluc3JfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19iaW5zcl93LCA1OTg5OX0sIC8vIF9fYnVpbHRpbl9tc2FfYmluc3JfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19iaW5zcmlfYiwgNTk5MjF9LCAvLyBfX2J1aWx0aW5fbXNhX2JpbnNyaV9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX2JpbnNyaV9kLCA1OTk0NH0sIC8vIF9fYnVpbHRpbl9tc2FfYmluc3JpX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmluc3JpX2gsIDU5OTY3fSwgLy8gX19idWlsdGluX21zYV9iaW5zcmlfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19iaW5zcmlfdywgNTk5OTB9LCAvLyBfX2J1aWx0aW5fbXNhX2JpbnNyaV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2JtbnpfdiwgNjAwMzV9LCAvLyBfX2J1aWx0aW5fbXNhX2JtbnpfdgotICAgICAge0ludHJpbnNpYzo6bWlwc19ibW56aV9iLCA2MDA1Nn0sIC8vIF9fYnVpbHRpbl9tc2FfYm1uemlfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19ibXpfdiwgNjAwNzh9LCAvLyBfX2J1aWx0aW5fbXNhX2Jtel92Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2JtemlfYiwgNjAwOTh9LCAvLyBfX2J1aWx0aW5fbXNhX2JtemlfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19ibmVnX2IsIDYwMTE5fSwgLy8gX19idWlsdGluX21zYV9ibmVnX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYm5lZ19kLCA2MDE0MH0sIC8vIF9fYnVpbHRpbl9tc2FfYm5lZ19kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2JuZWdfaCwgNjAxNjF9LCAvLyBfX2J1aWx0aW5fbXNhX2JuZWdfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19ibmVnX3csIDYwMTgyfSwgLy8gX19idWlsdGluX21zYV9ibmVnX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYm5lZ2lfYiwgNjAyMDN9LCAvLyBfX2J1aWx0aW5fbXNhX2JuZWdpX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYm5lZ2lfZCwgNjAyMjV9LCAvLyBfX2J1aWx0aW5fbXNhX2JuZWdpX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYm5lZ2lfaCwgNjAyNDd9LCAvLyBfX2J1aWx0aW5fbXNhX2JuZWdpX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYm5lZ2lfdywgNjAyNjl9LCAvLyBfX2J1aWx0aW5fbXNhX2JuZWdpX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYm56X2IsIDYwMjkxfSwgLy8gX19idWlsdGluX21zYV9ibnpfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19ibnpfZCwgNjAzMTF9LCAvLyBfX2J1aWx0aW5fbXNhX2Juel9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2Juel9oLCA2MDMzMX0sIC8vIF9fYnVpbHRpbl9tc2FfYm56X2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYm56X3YsIDYwMzUxfSwgLy8gX19idWlsdGluX21zYV9ibnpfdgotICAgICAge0ludHJpbnNpYzo6bWlwc19ibnpfdywgNjAzNzF9LCAvLyBfX2J1aWx0aW5fbXNhX2Juel93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2JzZWxfdiwgNjA0MTV9LCAvLyBfX2J1aWx0aW5fbXNhX2JzZWxfdgotICAgICAge0ludHJpbnNpYzo6bWlwc19ic2VsaV9iLCA2MDQzNn0sIC8vIF9fYnVpbHRpbl9tc2FfYnNlbGlfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19ic2V0X2IsIDYwNDU4fSwgLy8gX19idWlsdGluX21zYV9ic2V0X2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnNldF9kLCA2MDQ3OX0sIC8vIF9fYnVpbHRpbl9tc2FfYnNldF9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2JzZXRfaCwgNjA1MDB9LCAvLyBfX2J1aWx0aW5fbXNhX2JzZXRfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19ic2V0X3csIDYwNTIxfSwgLy8gX19idWlsdGluX21zYV9ic2V0X3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnNldGlfYiwgNjA1NDJ9LCAvLyBfX2J1aWx0aW5fbXNhX2JzZXRpX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnNldGlfZCwgNjA1NjR9LCAvLyBfX2J1aWx0aW5fbXNhX2JzZXRpX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnNldGlfaCwgNjA1ODZ9LCAvLyBfX2J1aWx0aW5fbXNhX2JzZXRpX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnNldGlfdywgNjA2MDh9LCAvLyBfX2J1aWx0aW5fbXNhX2JzZXRpX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnpfYiwgNjA2MzB9LCAvLyBfX2J1aWx0aW5fbXNhX2J6X2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnpfZCwgNjA2NDl9LCAvLyBfX2J1aWx0aW5fbXNhX2J6X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnpfaCwgNjA2Njh9LCAvLyBfX2J1aWx0aW5fbXNhX2J6X2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnpfdiwgNjA2ODd9LCAvLyBfX2J1aWx0aW5fbXNhX2J6X3YKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnpfdywgNjA3MDZ9LCAvLyBfX2J1aWx0aW5fbXNhX2J6X3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2VxX2IsIDYwNzI1fSwgLy8gX19idWlsdGluX21zYV9jZXFfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19jZXFfZCwgNjA3NDV9LCAvLyBfX2J1aWx0aW5fbXNhX2NlcV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NlcV9oLCA2MDc2NX0sIC8vIF9fYnVpbHRpbl9tc2FfY2VxX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2VxX3csIDYwNzg1fSwgLy8gX19idWlsdGluX21zYV9jZXFfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19jZXFpX2IsIDYwODA1fSwgLy8gX19idWlsdGluX21zYV9jZXFpX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2VxaV9kLCA2MDgyNn0sIC8vIF9fYnVpbHRpbl9tc2FfY2VxaV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NlcWlfaCwgNjA4NDd9LCAvLyBfX2J1aWx0aW5fbXNhX2NlcWlfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19jZXFpX3csIDYwODY4fSwgLy8gX19idWlsdGluX21zYV9jZXFpX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2ZjbXNhLCA2MDg4OX0sIC8vIF9fYnVpbHRpbl9tc2FfY2ZjbXNhCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NsZV9zX2IsIDYwOTEwfSwgLy8gX19idWlsdGluX21zYV9jbGVfc19iCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NsZV9zX2QsIDYwOTMyfSwgLy8gX19idWlsdGluX21zYV9jbGVfc19kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NsZV9zX2gsIDYwOTU0fSwgLy8gX19idWlsdGluX21zYV9jbGVfc19oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NsZV9zX3csIDYwOTc2fSwgLy8gX19idWlsdGluX21zYV9jbGVfc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2NsZV91X2IsIDYwOTk4fSwgLy8gX19idWlsdGluX21zYV9jbGVfdV9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NsZV91X2QsIDYxMDIwfSwgLy8gX19idWlsdGluX21zYV9jbGVfdV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NsZV91X2gsIDYxMDQyfSwgLy8gX19idWlsdGluX21zYV9jbGVfdV9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NsZV91X3csIDYxMDY0fSwgLy8gX19idWlsdGluX21zYV9jbGVfdV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2NsZWlfc19iLCA2MTA4Nn0sIC8vIF9fYnVpbHRpbl9tc2FfY2xlaV9zX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2xlaV9zX2QsIDYxMTA5fSwgLy8gX19idWlsdGluX21zYV9jbGVpX3NfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19jbGVpX3NfaCwgNjExMzJ9LCAvLyBfX2J1aWx0aW5fbXNhX2NsZWlfc19oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NsZWlfc193LCA2MTE1NX0sIC8vIF9fYnVpbHRpbl9tc2FfY2xlaV9zX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2xlaV91X2IsIDYxMTc4fSwgLy8gX19idWlsdGluX21zYV9jbGVpX3VfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19jbGVpX3VfZCwgNjEyMDF9LCAvLyBfX2J1aWx0aW5fbXNhX2NsZWlfdV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NsZWlfdV9oLCA2MTIyNH0sIC8vIF9fYnVpbHRpbl9tc2FfY2xlaV91X2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2xlaV91X3csIDYxMjQ3fSwgLy8gX19idWlsdGluX21zYV9jbGVpX3VfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfc19iLCA2MTI3MH0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3NfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfc19kLCA2MTI5Mn0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3NfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfc19oLCA2MTMxNH0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3NfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfc193LCA2MTMzNn0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3NfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfdV9iLCA2MTM1OH0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3VfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfdV9kLCA2MTM4MH0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3VfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfdV9oLCA2MTQwMn0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3VfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfdV93LCA2MTQyNH0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3VfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRpX3NfYiwgNjE0NDZ9LCAvLyBfX2J1aWx0aW5fbXNhX2NsdGlfc19iCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NsdGlfc19kLCA2MTQ2OX0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0aV9zX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2x0aV9zX2gsIDYxNDkyfSwgLy8gX19idWlsdGluX21zYV9jbHRpX3NfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRpX3NfdywgNjE1MTV9LCAvLyBfX2J1aWx0aW5fbXNhX2NsdGlfc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2NsdGlfdV9iLCA2MTUzOH0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0aV91X2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2x0aV91X2QsIDYxNTYxfSwgLy8gX19idWlsdGluX21zYV9jbHRpX3VfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRpX3VfaCwgNjE1ODR9LCAvLyBfX2J1aWx0aW5fbXNhX2NsdGlfdV9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NsdGlfdV93LCA2MTYwN30sIC8vIF9fYnVpbHRpbl9tc2FfY2x0aV91X3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY29weV9zX2IsIDYxOTQ4fSwgLy8gX19idWlsdGluX21zYV9jb3B5X3NfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19jb3B5X3NfZCwgNjE5NzF9LCAvLyBfX2J1aWx0aW5fbXNhX2NvcHlfc19kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NvcHlfc19oLCA2MTk5NH0sIC8vIF9fYnVpbHRpbl9tc2FfY29weV9zX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY29weV9zX3csIDYyMDE3fSwgLy8gX19idWlsdGluX21zYV9jb3B5X3NfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19jb3B5X3VfYiwgNjIwNDB9LCAvLyBfX2J1aWx0aW5fbXNhX2NvcHlfdV9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX2NvcHlfdV9kLCA2MjA2M30sIC8vIF9fYnVpbHRpbl9tc2FfY29weV91X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY29weV91X2gsIDYyMDg2fSwgLy8gX19idWlsdGluX21zYV9jb3B5X3VfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19jb3B5X3VfdywgNjIxMDl9LCAvLyBfX2J1aWx0aW5fbXNhX2NvcHlfdV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2N0Y21zYSwgNjIxMzJ9LCAvLyBfX2J1aWx0aW5fbXNhX2N0Y21zYQotICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfc19iLCA2MjE1M30sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3NfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfc19kLCA2MjE3NX0sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3NfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfc19oLCA2MjE5N30sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3NfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfc193LCA2MjIxOX0sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3NfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfdV9iLCA2MjI0MX0sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3VfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfdV9kLCA2MjI2M30sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3VfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfdV9oLCA2MjI4NX0sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3VfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfdV93LCA2MjMwN30sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3VfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19kb3RwX3NfZCwgNjIzNDl9LCAvLyBfX2J1aWx0aW5fbXNhX2RvdHBfc19kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2RvdHBfc19oLCA2MjM3Mn0sIC8vIF9fYnVpbHRpbl9tc2FfZG90cF9zX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZG90cF9zX3csIDYyMzk1fSwgLy8gX19idWlsdGluX21zYV9kb3RwX3NfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19kb3RwX3VfZCwgNjI0MTh9LCAvLyBfX2J1aWx0aW5fbXNhX2RvdHBfdV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2RvdHBfdV9oLCA2MjQ0MX0sIC8vIF9fYnVpbHRpbl9tc2FfZG90cF91X2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZG90cF91X3csIDYyNDY0fSwgLy8gX19idWlsdGluX21zYV9kb3RwX3VfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19kcGFkZF9zX2QsIDYyNTExfSwgLy8gX19idWlsdGluX21zYV9kcGFkZF9zX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZHBhZGRfc19oLCA2MjUzNX0sIC8vIF9fYnVpbHRpbl9tc2FfZHBhZGRfc19oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2RwYWRkX3NfdywgNjI1NTl9LCAvLyBfX2J1aWx0aW5fbXNhX2RwYWRkX3NfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19kcGFkZF91X2QsIDYyNTgzfSwgLy8gX19idWlsdGluX21zYV9kcGFkZF91X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZHBhZGRfdV9oLCA2MjYwN30sIC8vIF9fYnVpbHRpbl9tc2FfZHBhZGRfdV9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2RwYWRkX3VfdywgNjI2MzF9LCAvLyBfX2J1aWx0aW5fbXNhX2RwYWRkX3VfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19kcHN1Yl9zX2QsIDYzMDMwfSwgLy8gX19idWlsdGluX21zYV9kcHN1Yl9zX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZHBzdWJfc19oLCA2MzA1NH0sIC8vIF9fYnVpbHRpbl9tc2FfZHBzdWJfc19oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2Rwc3ViX3NfdywgNjMwNzh9LCAvLyBfX2J1aWx0aW5fbXNhX2Rwc3ViX3NfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19kcHN1Yl91X2QsIDYzMTAyfSwgLy8gX19idWlsdGluX21zYV9kcHN1Yl91X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZHBzdWJfdV9oLCA2MzEyNn0sIC8vIF9fYnVpbHRpbl9tc2FfZHBzdWJfdV9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2Rwc3ViX3VfdywgNjMxNTB9LCAvLyBfX2J1aWx0aW5fbXNhX2Rwc3ViX3VfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mYWRkX2QsIDYzMzM2fSwgLy8gX19idWlsdGluX21zYV9mYWRkX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmFkZF93LCA2MzM1N30sIC8vIF9fYnVpbHRpbl9tc2FfZmFkZF93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2ZjYWZfZCwgNjMzNzh9LCAvLyBfX2J1aWx0aW5fbXNhX2ZjYWZfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mY2FmX3csIDYzMzk5fSwgLy8gX19idWlsdGluX21zYV9mY2FmX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmNlcV9kLCA2MzQyMH0sIC8vIF9fYnVpbHRpbl9tc2FfZmNlcV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2ZjZXFfdywgNjM0NDF9LCAvLyBfX2J1aWx0aW5fbXNhX2ZjZXFfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mY2xhc3NfZCwgNjM0NjJ9LCAvLyBfX2J1aWx0aW5fbXNhX2ZjbGFzc19kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2ZjbGFzc193LCA2MzQ4NX0sIC8vIF9fYnVpbHRpbl9tc2FfZmNsYXNzX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmNsZV9kLCA2MzUwOH0sIC8vIF9fYnVpbHRpbl9tc2FfZmNsZV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2ZjbGVfdywgNjM1Mjl9LCAvLyBfX2J1aWx0aW5fbXNhX2ZjbGVfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mY2x0X2QsIDYzNTUwfSwgLy8gX19idWlsdGluX21zYV9mY2x0X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmNsdF93LCA2MzU3MX0sIC8vIF9fYnVpbHRpbl9tc2FfZmNsdF93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2ZjbmVfZCwgNjM1OTJ9LCAvLyBfX2J1aWx0aW5fbXNhX2ZjbmVfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mY25lX3csIDYzNjEzfSwgLy8gX19idWlsdGluX21zYV9mY25lX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmNvcl9kLCA2MzYzNH0sIC8vIF9fYnVpbHRpbl9tc2FfZmNvcl9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2Zjb3JfdywgNjM2NTV9LCAvLyBfX2J1aWx0aW5fbXNhX2Zjb3JfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mY3VlcV9kLCA2MzY3Nn0sIC8vIF9fYnVpbHRpbl9tc2FfZmN1ZXFfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mY3VlcV93LCA2MzY5OH0sIC8vIF9fYnVpbHRpbl9tc2FfZmN1ZXFfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mY3VsZV9kLCA2MzcyMH0sIC8vIF9fYnVpbHRpbl9tc2FfZmN1bGVfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mY3VsZV93LCA2Mzc0Mn0sIC8vIF9fYnVpbHRpbl9tc2FfZmN1bGVfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mY3VsdF9kLCA2Mzc2NH0sIC8vIF9fYnVpbHRpbl9tc2FfZmN1bHRfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mY3VsdF93LCA2Mzc4Nn0sIC8vIF9fYnVpbHRpbl9tc2FfZmN1bHRfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mY3VuX2QsIDYzODA4fSwgLy8gX19idWlsdGluX21zYV9mY3VuX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmN1bl93LCA2MzgyOX0sIC8vIF9fYnVpbHRpbl9tc2FfZmN1bl93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2ZjdW5lX2QsIDYzODUwfSwgLy8gX19idWlsdGluX21zYV9mY3VuZV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2ZjdW5lX3csIDYzODcyfSwgLy8gX19idWlsdGluX21zYV9mY3VuZV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2ZkaXZfZCwgNjM4OTR9LCAvLyBfX2J1aWx0aW5fbXNhX2ZkaXZfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mZGl2X3csIDYzOTE1fSwgLy8gX19idWlsdGluX21zYV9mZGl2X3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmV4ZG9faCwgNjM5MzZ9LCAvLyBfX2J1aWx0aW5fbXNhX2ZleGRvX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmV4ZG9fdywgNjM5NTh9LCAvLyBfX2J1aWx0aW5fbXNhX2ZleGRvX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmV4cDJfZCwgNjM5ODB9LCAvLyBfX2J1aWx0aW5fbXNhX2ZleHAyX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmV4cDJfdywgNjQwMDJ9LCAvLyBfX2J1aWx0aW5fbXNhX2ZleHAyX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmV4dXBsX2QsIDY0MDI0fSwgLy8gX19idWlsdGluX21zYV9mZXh1cGxfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mZXh1cGxfdywgNjQwNDd9LCAvLyBfX2J1aWx0aW5fbXNhX2ZleHVwbF93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2ZleHVwcl9kLCA2NDA3MH0sIC8vIF9fYnVpbHRpbl9tc2FfZmV4dXByX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmV4dXByX3csIDY0MDkzfSwgLy8gX19idWlsdGluX21zYV9mZXh1cHJfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mZmludF9zX2QsIDY0MTE2fSwgLy8gX19idWlsdGluX21zYV9mZmludF9zX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmZpbnRfc193LCA2NDE0MH0sIC8vIF9fYnVpbHRpbl9tc2FfZmZpbnRfc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2ZmaW50X3VfZCwgNjQxNjR9LCAvLyBfX2J1aWx0aW5fbXNhX2ZmaW50X3VfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mZmludF91X3csIDY0MTg4fSwgLy8gX19idWlsdGluX21zYV9mZmludF91X3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmZxbF9kLCA2NDIxMn0sIC8vIF9fYnVpbHRpbl9tc2FfZmZxbF9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2ZmcWxfdywgNjQyMzN9LCAvLyBfX2J1aWx0aW5fbXNhX2ZmcWxfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mZnFyX2QsIDY0MjU0fSwgLy8gX19idWlsdGluX21zYV9mZnFyX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmZxcl93LCA2NDI3NX0sIC8vIF9fYnVpbHRpbl9tc2FfZmZxcl93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2ZpbGxfYiwgNjQyOTZ9LCAvLyBfX2J1aWx0aW5fbXNhX2ZpbGxfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19maWxsX2QsIDY0MzE3fSwgLy8gX19idWlsdGluX21zYV9maWxsX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmlsbF9oLCA2NDMzOH0sIC8vIF9fYnVpbHRpbl9tc2FfZmlsbF9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2ZpbGxfdywgNjQzNTl9LCAvLyBfX2J1aWx0aW5fbXNhX2ZpbGxfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mbG9nMl9kLCA2NDM4MH0sIC8vIF9fYnVpbHRpbl9tc2FfZmxvZzJfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mbG9nMl93LCA2NDQwMn0sIC8vIF9fYnVpbHRpbl9tc2FfZmxvZzJfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mbWFkZF9kLCA2NDQyNH0sIC8vIF9fYnVpbHRpbl9tc2FfZm1hZGRfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mbWFkZF93LCA2NDQ0Nn0sIC8vIF9fYnVpbHRpbl9tc2FfZm1hZGRfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mbWF4X2FfZCwgNjQ0Njh9LCAvLyBfX2J1aWx0aW5fbXNhX2ZtYXhfYV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2ZtYXhfYV93LCA2NDQ5MX0sIC8vIF9fYnVpbHRpbl9tc2FfZm1heF9hX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZm1heF9kLCA2NDUxNH0sIC8vIF9fYnVpbHRpbl9tc2FfZm1heF9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2ZtYXhfdywgNjQ1MzV9LCAvLyBfX2J1aWx0aW5fbXNhX2ZtYXhfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mbWluX2FfZCwgNjQ1NTZ9LCAvLyBfX2J1aWx0aW5fbXNhX2ZtaW5fYV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2ZtaW5fYV93LCA2NDU3OX0sIC8vIF9fYnVpbHRpbl9tc2FfZm1pbl9hX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZm1pbl9kLCA2NDYwMn0sIC8vIF9fYnVpbHRpbl9tc2FfZm1pbl9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2ZtaW5fdywgNjQ2MjN9LCAvLyBfX2J1aWx0aW5fbXNhX2ZtaW5fdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mbXN1Yl9kLCA2NDY0NH0sIC8vIF9fYnVpbHRpbl9tc2FfZm1zdWJfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mbXN1Yl93LCA2NDY2Nn0sIC8vIF9fYnVpbHRpbl9tc2FfZm1zdWJfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mbXVsX2QsIDY0Njg4fSwgLy8gX19idWlsdGluX21zYV9mbXVsX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZm11bF93LCA2NDcwOX0sIC8vIF9fYnVpbHRpbl9tc2FfZm11bF93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2ZyY3BfZCwgNjQ3MzB9LCAvLyBfX2J1aWx0aW5fbXNhX2ZyY3BfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mcmNwX3csIDY0NzUxfSwgLy8gX19idWlsdGluX21zYV9mcmNwX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnJpbnRfZCwgNjQ3NzJ9LCAvLyBfX2J1aWx0aW5fbXNhX2ZyaW50X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnJpbnRfdywgNjQ3OTR9LCAvLyBfX2J1aWx0aW5fbXNhX2ZyaW50X3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnJzcXJ0X2QsIDY0ODE2fSwgLy8gX19idWlsdGluX21zYV9mcnNxcnRfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mcnNxcnRfdywgNjQ4Mzl9LCAvLyBfX2J1aWx0aW5fbXNhX2Zyc3FydF93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2ZzYWZfZCwgNjQ4NjJ9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzYWZfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mc2FmX3csIDY0ODgzfSwgLy8gX19idWlsdGluX21zYV9mc2FmX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnNlcV9kLCA2NDkwNH0sIC8vIF9fYnVpbHRpbl9tc2FfZnNlcV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2ZzZXFfdywgNjQ5MjV9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzZXFfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mc2xlX2QsIDY0OTQ2fSwgLy8gX19idWlsdGluX21zYV9mc2xlX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnNsZV93LCA2NDk2N30sIC8vIF9fYnVpbHRpbl9tc2FfZnNsZV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2ZzbHRfZCwgNjQ5ODh9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzbHRfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mc2x0X3csIDY1MDA5fSwgLy8gX19idWlsdGluX21zYV9mc2x0X3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnNuZV9kLCA2NTAzMH0sIC8vIF9fYnVpbHRpbl9tc2FfZnNuZV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2ZzbmVfdywgNjUwNTF9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzbmVfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mc29yX2QsIDY1MDcyfSwgLy8gX19idWlsdGluX21zYV9mc29yX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnNvcl93LCA2NTA5M30sIC8vIF9fYnVpbHRpbl9tc2FfZnNvcl93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2ZzcXJ0X2QsIDY1MTE0fSwgLy8gX19idWlsdGluX21zYV9mc3FydF9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2ZzcXJ0X3csIDY1MTM2fSwgLy8gX19idWlsdGluX21zYV9mc3FydF93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2ZzdWJfZCwgNjUxNTh9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdWJfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mc3ViX3csIDY1MTc5fSwgLy8gX19idWlsdGluX21zYV9mc3ViX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnN1ZXFfZCwgNjUyMDB9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdWVxX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnN1ZXFfdywgNjUyMjJ9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdWVxX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnN1bGVfZCwgNjUyNDR9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdWxlX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnN1bGVfdywgNjUyNjZ9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdWxlX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnN1bHRfZCwgNjUyODh9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdWx0X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnN1bHRfdywgNjUzMTB9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdWx0X3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnN1bl9kLCA2NTMzMn0sIC8vIF9fYnVpbHRpbl9tc2FfZnN1bl9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2ZzdW5fdywgNjUzNTN9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdW5fdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mc3VuZV9kLCA2NTM3NH0sIC8vIF9fYnVpbHRpbl9tc2FfZnN1bmVfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mc3VuZV93LCA2NTM5Nn0sIC8vIF9fYnVpbHRpbl9tc2FfZnN1bmVfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19mdGludF9zX2QsIDY1NDE4fSwgLy8gX19idWlsdGluX21zYV9mdGludF9zX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnRpbnRfc193LCA2NTQ0Mn0sIC8vIF9fYnVpbHRpbl9tc2FfZnRpbnRfc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2Z0aW50X3VfZCwgNjU0NjZ9LCAvLyBfX2J1aWx0aW5fbXNhX2Z0aW50X3VfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19mdGludF91X3csIDY1NDkwfSwgLy8gX19idWlsdGluX21zYV9mdGludF91X3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnRxX2gsIDY1NTE0fSwgLy8gX19idWlsdGluX21zYV9mdHFfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19mdHFfdywgNjU1MzR9LCAvLyBfX2J1aWx0aW5fbXNhX2Z0cV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2Z0cnVuY19zX2QsIDY1NTU0fSwgLy8gX19idWlsdGluX21zYV9mdHJ1bmNfc19kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2Z0cnVuY19zX3csIDY1NTc5fSwgLy8gX19idWlsdGluX21zYV9mdHJ1bmNfc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2Z0cnVuY191X2QsIDY1NjA0fSwgLy8gX19idWlsdGluX21zYV9mdHJ1bmNfdV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2Z0cnVuY191X3csIDY1NjI5fSwgLy8gX19idWlsdGluX21zYV9mdHJ1bmNfdV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2hhZGRfc19kLCA2NTY1NH0sIC8vIF9fYnVpbHRpbl9tc2FfaGFkZF9zX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaGFkZF9zX2gsIDY1Njc3fSwgLy8gX19idWlsdGluX21zYV9oYWRkX3NfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19oYWRkX3NfdywgNjU3MDB9LCAvLyBfX2J1aWx0aW5fbXNhX2hhZGRfc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2hhZGRfdV9kLCA2NTcyM30sIC8vIF9fYnVpbHRpbl9tc2FfaGFkZF91X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaGFkZF91X2gsIDY1NzQ2fSwgLy8gX19idWlsdGluX21zYV9oYWRkX3VfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19oYWRkX3VfdywgNjU3Njl9LCAvLyBfX2J1aWx0aW5fbXNhX2hhZGRfdV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2hzdWJfc19kLCA2NTc5Mn0sIC8vIF9fYnVpbHRpbl9tc2FfaHN1Yl9zX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaHN1Yl9zX2gsIDY1ODE1fSwgLy8gX19idWlsdGluX21zYV9oc3ViX3NfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19oc3ViX3NfdywgNjU4Mzh9LCAvLyBfX2J1aWx0aW5fbXNhX2hzdWJfc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2hzdWJfdV9kLCA2NTg2MX0sIC8vIF9fYnVpbHRpbl9tc2FfaHN1Yl91X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaHN1Yl91X2gsIDY1ODg0fSwgLy8gX19idWlsdGluX21zYV9oc3ViX3VfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19oc3ViX3VfdywgNjU5MDd9LCAvLyBfX2J1aWx0aW5fbXNhX2hzdWJfdV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2lsdmV2X2IsIDY1OTMwfSwgLy8gX19idWlsdGluX21zYV9pbHZldl9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX2lsdmV2X2QsIDY1OTUyfSwgLy8gX19idWlsdGluX21zYV9pbHZldl9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2lsdmV2X2gsIDY1OTc0fSwgLy8gX19idWlsdGluX21zYV9pbHZldl9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2lsdmV2X3csIDY1OTk2fSwgLy8gX19idWlsdGluX21zYV9pbHZldl93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX2lsdmxfYiwgNjYwMTh9LCAvLyBfX2J1aWx0aW5fbXNhX2lsdmxfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19pbHZsX2QsIDY2MDM5fSwgLy8gX19idWlsdGluX21zYV9pbHZsX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaWx2bF9oLCA2NjA2MH0sIC8vIF9fYnVpbHRpbl9tc2FfaWx2bF9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX2lsdmxfdywgNjYwODF9LCAvLyBfX2J1aWx0aW5fbXNhX2lsdmxfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19pbHZvZF9iLCA2NjEwMn0sIC8vIF9fYnVpbHRpbl9tc2FfaWx2b2RfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19pbHZvZF9kLCA2NjEyNH0sIC8vIF9fYnVpbHRpbl9tc2FfaWx2b2RfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19pbHZvZF9oLCA2NjE0Nn0sIC8vIF9fYnVpbHRpbl9tc2FfaWx2b2RfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19pbHZvZF93LCA2NjE2OH0sIC8vIF9fYnVpbHRpbl9tc2FfaWx2b2RfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19pbHZyX2IsIDY2MTkwfSwgLy8gX19idWlsdGluX21zYV9pbHZyX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaWx2cl9kLCA2NjIxMX0sIC8vIF9fYnVpbHRpbl9tc2FfaWx2cl9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2lsdnJfaCwgNjYyMzJ9LCAvLyBfX2J1aWx0aW5fbXNhX2lsdnJfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19pbHZyX3csIDY2MjUzfSwgLy8gX19idWlsdGluX21zYV9pbHZyX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaW5zZXJ0X2IsIDY2Mjc0fSwgLy8gX19idWlsdGluX21zYV9pbnNlcnRfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19pbnNlcnRfZCwgNjYyOTd9LCAvLyBfX2J1aWx0aW5fbXNhX2luc2VydF9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX2luc2VydF9oLCA2NjMyMH0sIC8vIF9fYnVpbHRpbl9tc2FfaW5zZXJ0X2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaW5zZXJ0X3csIDY2MzQzfSwgLy8gX19idWlsdGluX21zYV9pbnNlcnRfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19pbnN2ZV9iLCA2NjM4Nn0sIC8vIF9fYnVpbHRpbl9tc2FfaW5zdmVfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19pbnN2ZV9kLCA2NjQwOH0sIC8vIF9fYnVpbHRpbl9tc2FfaW5zdmVfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19pbnN2ZV9oLCA2NjQzMH0sIC8vIF9fYnVpbHRpbl9tc2FfaW5zdmVfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19pbnN2ZV93LCA2NjQ1Mn0sIC8vIF9fYnVpbHRpbl9tc2FfaW5zdmVfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19sZF9iLCA2NjQ5NH0sIC8vIF9fYnVpbHRpbl9tc2FfbGRfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19sZF9kLCA2NjUxM30sIC8vIF9fYnVpbHRpbl9tc2FfbGRfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19sZF9oLCA2NjUzMn0sIC8vIF9fYnVpbHRpbl9tc2FfbGRfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19sZF93LCA2NjU1MX0sIC8vIF9fYnVpbHRpbl9tc2FfbGRfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19sZGlfYiwgNjY1NzB9LCAvLyBfX2J1aWx0aW5fbXNhX2xkaV9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX2xkaV9kLCA2NjU5MH0sIC8vIF9fYnVpbHRpbl9tc2FfbGRpX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbGRpX2gsIDY2NjEwfSwgLy8gX19idWlsdGluX21zYV9sZGlfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19sZGlfdywgNjY2MzB9LCAvLyBfX2J1aWx0aW5fbXNhX2xkaV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX21hZGRfcV9oLCA2NjcyN30sIC8vIF9fYnVpbHRpbl9tc2FfbWFkZF9xX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWFkZF9xX3csIDY2NzUwfSwgLy8gX19idWlsdGluX21zYV9tYWRkX3FfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19tYWRkcl9xX2gsIDY2NzczfSwgLy8gX19idWlsdGluX21zYV9tYWRkcl9xX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWFkZHJfcV93LCA2Njc5N30sIC8vIF9fYnVpbHRpbl9tc2FfbWFkZHJfcV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX21hZGR2X2IsIDY2ODQyfSwgLy8gX19idWlsdGluX21zYV9tYWRkdl9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX21hZGR2X2QsIDY2ODY0fSwgLy8gX19idWlsdGluX21zYV9tYWRkdl9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX21hZGR2X2gsIDY2ODg2fSwgLy8gX19idWlsdGluX21zYV9tYWRkdl9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX21hZGR2X3csIDY2OTA4fSwgLy8gX19idWlsdGluX21zYV9tYWRkdl93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX21heF9hX2IsIDY3MDQwfSwgLy8gX19idWlsdGluX21zYV9tYXhfYV9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX21heF9hX2QsIDY3MDYyfSwgLy8gX19idWlsdGluX21zYV9tYXhfYV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX21heF9hX2gsIDY3MDg0fSwgLy8gX19idWlsdGluX21zYV9tYXhfYV9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX21heF9hX3csIDY3MTA2fSwgLy8gX19idWlsdGluX21zYV9tYXhfYV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX21heF9zX2IsIDY3MTI4fSwgLy8gX19idWlsdGluX21zYV9tYXhfc19iCi0gICAgICB7SW50cmluc2ljOjptaXBzX21heF9zX2QsIDY3MTUwfSwgLy8gX19idWlsdGluX21zYV9tYXhfc19kCi0gICAgICB7SW50cmluc2ljOjptaXBzX21heF9zX2gsIDY3MTcyfSwgLy8gX19idWlsdGluX21zYV9tYXhfc19oCi0gICAgICB7SW50cmluc2ljOjptaXBzX21heF9zX3csIDY3MTk0fSwgLy8gX19idWlsdGluX21zYV9tYXhfc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX21heF91X2IsIDY3MjE2fSwgLy8gX19idWlsdGluX21zYV9tYXhfdV9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX21heF91X2QsIDY3MjM4fSwgLy8gX19idWlsdGluX21zYV9tYXhfdV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX21heF91X2gsIDY3MjYwfSwgLy8gX19idWlsdGluX21zYV9tYXhfdV9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX21heF91X3csIDY3MjgyfSwgLy8gX19idWlsdGluX21zYV9tYXhfdV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX21heGlfc19iLCA2NzMwNH0sIC8vIF9fYnVpbHRpbl9tc2FfbWF4aV9zX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWF4aV9zX2QsIDY3MzI3fSwgLy8gX19idWlsdGluX21zYV9tYXhpX3NfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19tYXhpX3NfaCwgNjczNTB9LCAvLyBfX2J1aWx0aW5fbXNhX21heGlfc19oCi0gICAgICB7SW50cmluc2ljOjptaXBzX21heGlfc193LCA2NzM3M30sIC8vIF9fYnVpbHRpbl9tc2FfbWF4aV9zX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWF4aV91X2IsIDY3Mzk2fSwgLy8gX19idWlsdGluX21zYV9tYXhpX3VfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19tYXhpX3VfZCwgNjc0MTl9LCAvLyBfX2J1aWx0aW5fbXNhX21heGlfdV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX21heGlfdV9oLCA2NzQ0Mn0sIC8vIF9fYnVpbHRpbl9tc2FfbWF4aV91X2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWF4aV91X3csIDY3NDY1fSwgLy8gX19idWlsdGluX21zYV9tYXhpX3VfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fYV9iLCA2NzQ4OH0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX2FfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fYV9kLCA2NzUxMH0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX2FfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fYV9oLCA2NzUzMn0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX2FfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fYV93LCA2NzU1NH0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX2FfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fc19iLCA2NzU3Nn0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3NfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fc19kLCA2NzU5OH0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3NfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fc19oLCA2NzYyMH0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3NfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fc193LCA2NzY0Mn0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3NfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fdV9iLCA2NzY2NH0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3VfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fdV9kLCA2NzY4Nn0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3VfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fdV9oLCA2NzcwOH0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3VfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fdV93LCA2NzczMH0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3VfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5pX3NfYiwgNjc3NTJ9LCAvLyBfX2J1aWx0aW5fbXNhX21pbmlfc19iCi0gICAgICB7SW50cmluc2ljOjptaXBzX21pbmlfc19kLCA2Nzc3NX0sIC8vIF9fYnVpbHRpbl9tc2FfbWluaV9zX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWluaV9zX2gsIDY3Nzk4fSwgLy8gX19idWlsdGluX21zYV9taW5pX3NfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5pX3NfdywgNjc4MjF9LCAvLyBfX2J1aWx0aW5fbXNhX21pbmlfc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX21pbmlfdV9iLCA2Nzg0NH0sIC8vIF9fYnVpbHRpbl9tc2FfbWluaV91X2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWluaV91X2QsIDY3ODY3fSwgLy8gX19idWlsdGluX21zYV9taW5pX3VfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19taW5pX3VfaCwgNjc4OTB9LCAvLyBfX2J1aWx0aW5fbXNhX21pbmlfdV9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX21pbmlfdV93LCA2NzkxM30sIC8vIF9fYnVpbHRpbl9tc2FfbWluaV91X3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3NfYiwgNjc5MzZ9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF9zX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3NfZCwgNjc5NTh9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF9zX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3NfaCwgNjc5ODB9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF9zX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3NfdywgNjgwMDJ9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF9zX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3VfYiwgNjgwMjR9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF91X2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3VfZCwgNjgwNDZ9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF91X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3VfaCwgNjgwNjh9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF91X2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3VfdywgNjgwOTB9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF91X3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW92ZV92LCA2ODEzNH0sIC8vIF9fYnVpbHRpbl9tc2FfbW92ZV92Ci0gICAgICB7SW50cmluc2ljOjptaXBzX21zdWJfcV9oLCA2ODE3NX0sIC8vIF9fYnVpbHRpbl9tc2FfbXN1Yl9xX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXN1Yl9xX3csIDY4MTk4fSwgLy8gX19idWlsdGluX21zYV9tc3ViX3FfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19tc3Vicl9xX2gsIDY4MjIxfSwgLy8gX19idWlsdGluX21zYV9tc3Vicl9xX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXN1YnJfcV93LCA2ODI0NX0sIC8vIF9fYnVpbHRpbl9tc2FfbXN1YnJfcV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX21zdWJ2X2IsIDY4MjkwfSwgLy8gX19idWlsdGluX21zYV9tc3Vidl9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX21zdWJ2X2QsIDY4MzEyfSwgLy8gX19idWlsdGluX21zYV9tc3Vidl9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX21zdWJ2X2gsIDY4MzM0fSwgLy8gX19idWlsdGluX21zYV9tc3Vidl9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX21zdWJ2X3csIDY4MzU2fSwgLy8gX19idWlsdGluX21zYV9tc3Vidl93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX211bF9xX2gsIDY4NDIyfSwgLy8gX19idWlsdGluX21zYV9tdWxfcV9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX211bF9xX3csIDY4NDQ0fSwgLy8gX19idWlsdGluX21zYV9tdWxfcV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX211bHJfcV9oLCA2ODcwOH0sIC8vIF9fYnVpbHRpbl9tc2FfbXVscl9xX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXVscl9xX3csIDY4NzMxfSwgLy8gX19idWlsdGluX21zYV9tdWxyX3FfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19tdWx2X2IsIDY4ODUwfSwgLy8gX19idWlsdGluX21zYV9tdWx2X2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXVsdl9kLCA2ODg3MX0sIC8vIF9fYnVpbHRpbl9tc2FfbXVsdl9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX211bHZfaCwgNjg4OTJ9LCAvLyBfX2J1aWx0aW5fbXNhX211bHZfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19tdWx2X3csIDY4OTEzfSwgLy8gX19idWlsdGluX21zYV9tdWx2X3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbmxvY19iLCA2ODkzNH0sIC8vIF9fYnVpbHRpbl9tc2FfbmxvY19iCi0gICAgICB7SW50cmluc2ljOjptaXBzX25sb2NfZCwgNjg5NTV9LCAvLyBfX2J1aWx0aW5fbXNhX25sb2NfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19ubG9jX2gsIDY4OTc2fSwgLy8gX19idWlsdGluX21zYV9ubG9jX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbmxvY193LCA2ODk5N30sIC8vIF9fYnVpbHRpbl9tc2FfbmxvY193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX25semNfYiwgNjkwMTh9LCAvLyBfX2J1aWx0aW5fbXNhX25semNfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19ubHpjX2QsIDY5MDM5fSwgLy8gX19idWlsdGluX21zYV9ubHpjX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbmx6Y19oLCA2OTA2MH0sIC8vIF9fYnVpbHRpbl9tc2Ffbmx6Y19oCi0gICAgICB7SW50cmluc2ljOjptaXBzX25semNfdywgNjkwODF9LCAvLyBfX2J1aWx0aW5fbXNhX25semNfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19ub3JfdiwgNjkxMDJ9LCAvLyBfX2J1aWx0aW5fbXNhX25vcl92Ci0gICAgICB7SW50cmluc2ljOjptaXBzX25vcmlfYiwgNjkxMjJ9LCAvLyBfX2J1aWx0aW5fbXNhX25vcmlfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19vcl92LCA2OTE0M30sIC8vIF9fYnVpbHRpbl9tc2Ffb3JfdgotICAgICAge0ludHJpbnNpYzo6bWlwc19vcmlfYiwgNjkxNjJ9LCAvLyBfX2J1aWx0aW5fbXNhX29yaV9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX3Bja2V2X2IsIDY5MjA3fSwgLy8gX19idWlsdGluX21zYV9wY2tldl9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX3Bja2V2X2QsIDY5MjI5fSwgLy8gX19idWlsdGluX21zYV9wY2tldl9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX3Bja2V2X2gsIDY5MjUxfSwgLy8gX19idWlsdGluX21zYV9wY2tldl9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX3Bja2V2X3csIDY5MjczfSwgLy8gX19idWlsdGluX21zYV9wY2tldl93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3Bja29kX2IsIDY5Mjk1fSwgLy8gX19idWlsdGluX21zYV9wY2tvZF9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX3Bja29kX2QsIDY5MzE3fSwgLy8gX19idWlsdGluX21zYV9wY2tvZF9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX3Bja29kX2gsIDY5MzM5fSwgLy8gX19idWlsdGluX21zYV9wY2tvZF9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX3Bja29kX3csIDY5MzYxfSwgLy8gX19idWlsdGluX21zYV9wY2tvZF93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3BjbnRfYiwgNjkzODN9LCAvLyBfX2J1aWx0aW5fbXNhX3BjbnRfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19wY250X2QsIDY5NDA0fSwgLy8gX19idWlsdGluX21zYV9wY250X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcGNudF9oLCA2OTQyNX0sIC8vIF9fYnVpbHRpbl9tc2FfcGNudF9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX3BjbnRfdywgNjk0NDZ9LCAvLyBfX2J1aWx0aW5fbXNhX3BjbnRfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfc19iLCA3MDEzMH0sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3NfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfc19kLCA3MDE1Mn0sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3NfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfc19oLCA3MDE3NH0sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3NfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfc193LCA3MDE5Nn0sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3NfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfdV9iLCA3MDIxOH0sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3VfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfdV9kLCA3MDI0MH0sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3VfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfdV9oLCA3MDI2Mn0sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3VfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfdV93LCA3MDI4NH0sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3VfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19zaGZfYiwgNzAzMDZ9LCAvLyBfX2J1aWx0aW5fbXNhX3NoZl9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NoZl9oLCA3MDMyNn0sIC8vIF9fYnVpbHRpbl9tc2Ffc2hmX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2hmX3csIDcwMzQ2fSwgLy8gX19idWlsdGluX21zYV9zaGZfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19zbGRfYiwgNzA2NDh9LCAvLyBfX2J1aWx0aW5fbXNhX3NsZF9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NsZF9kLCA3MDY2OH0sIC8vIF9fYnVpbHRpbl9tc2Ffc2xkX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2xkX2gsIDcwNjg4fSwgLy8gX19idWlsdGluX21zYV9zbGRfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19zbGRfdywgNzA3MDh9LCAvLyBfX2J1aWx0aW5fbXNhX3NsZF93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3NsZGlfYiwgNzA3Mjh9LCAvLyBfX2J1aWx0aW5fbXNhX3NsZGlfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19zbGRpX2QsIDcwNzQ5fSwgLy8gX19idWlsdGluX21zYV9zbGRpX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2xkaV9oLCA3MDc3MH0sIC8vIF9fYnVpbHRpbl9tc2Ffc2xkaV9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NsZGlfdywgNzA3OTF9LCAvLyBfX2J1aWx0aW5fbXNhX3NsZGlfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19zbGxfYiwgNzA4MTJ9LCAvLyBfX2J1aWx0aW5fbXNhX3NsbF9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NsbF9kLCA3MDgzMn0sIC8vIF9fYnVpbHRpbl9tc2Ffc2xsX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2xsX2gsIDcwODUyfSwgLy8gX19idWlsdGluX21zYV9zbGxfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19zbGxfdywgNzA4NzJ9LCAvLyBfX2J1aWx0aW5fbXNhX3NsbF93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3NsbGlfYiwgNzA4OTJ9LCAvLyBfX2J1aWx0aW5fbXNhX3NsbGlfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19zbGxpX2QsIDcwOTEzfSwgLy8gX19idWlsdGluX21zYV9zbGxpX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2xsaV9oLCA3MDkzNH0sIC8vIF9fYnVpbHRpbl9tc2Ffc2xsaV9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NsbGlfdywgNzA5NTV9LCAvLyBfX2J1aWx0aW5fbXNhX3NsbGlfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19zcGxhdF9iLCA3MDk3Nn0sIC8vIF9fYnVpbHRpbl9tc2Ffc3BsYXRfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19zcGxhdF9kLCA3MDk5OH0sIC8vIF9fYnVpbHRpbl9tc2Ffc3BsYXRfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19zcGxhdF9oLCA3MTAyMH0sIC8vIF9fYnVpbHRpbl9tc2Ffc3BsYXRfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19zcGxhdF93LCA3MTA0Mn0sIC8vIF9fYnVpbHRpbl9tc2Ffc3BsYXRfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19zcGxhdGlfYiwgNzEwNjR9LCAvLyBfX2J1aWx0aW5fbXNhX3NwbGF0aV9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NwbGF0aV9kLCA3MTA4N30sIC8vIF9fYnVpbHRpbl9tc2Ffc3BsYXRpX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3BsYXRpX2gsIDcxMTEwfSwgLy8gX19idWlsdGluX21zYV9zcGxhdGlfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19zcGxhdGlfdywgNzExMzN9LCAvLyBfX2J1aWx0aW5fbXNhX3NwbGF0aV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3NyYV9iLCA3MTE1Nn0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JhX2QsIDcxMTc2fSwgLy8gX19idWlsdGluX21zYV9zcmFfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19zcmFfaCwgNzExOTZ9LCAvLyBfX2J1aWx0aW5fbXNhX3NyYV9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NyYV93LCA3MTIxNn0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JhaV9iLCA3MTIzNn0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhaV9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NyYWlfZCwgNzEyNTd9LCAvLyBfX2J1aWx0aW5fbXNhX3NyYWlfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19zcmFpX2gsIDcxMjc4fSwgLy8gX19idWlsdGluX21zYV9zcmFpX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JhaV93LCA3MTI5OX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhaV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3NyYXJfYiwgNzEzMjB9LCAvLyBfX2J1aWx0aW5fbXNhX3NyYXJfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19zcmFyX2QsIDcxMzQxfSwgLy8gX19idWlsdGluX21zYV9zcmFyX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3Jhcl9oLCA3MTM2Mn0sIC8vIF9fYnVpbHRpbl9tc2Ffc3Jhcl9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NyYXJfdywgNzEzODN9LCAvLyBfX2J1aWx0aW5fbXNhX3NyYXJfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19zcmFyaV9iLCA3MTQwNH0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhcmlfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19zcmFyaV9kLCA3MTQyNn0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhcmlfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19zcmFyaV9oLCA3MTQ0OH0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhcmlfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19zcmFyaV93LCA3MTQ3MH0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhcmlfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19zcmxfYiwgNzE0OTJ9LCAvLyBfX2J1aWx0aW5fbXNhX3NybF9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NybF9kLCA3MTUxMn0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JsX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JsX2gsIDcxNTMyfSwgLy8gX19idWlsdGluX21zYV9zcmxfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19zcmxfdywgNzE1NTJ9LCAvLyBfX2J1aWx0aW5fbXNhX3NybF93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3NybGlfYiwgNzE1NzJ9LCAvLyBfX2J1aWx0aW5fbXNhX3NybGlfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19zcmxpX2QsIDcxNTkzfSwgLy8gX19idWlsdGluX21zYV9zcmxpX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JsaV9oLCA3MTYxNH0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JsaV9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NybGlfdywgNzE2MzV9LCAvLyBfX2J1aWx0aW5fbXNhX3NybGlfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19zcmxyX2IsIDcxNjU2fSwgLy8gX19idWlsdGluX21zYV9zcmxyX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3Jscl9kLCA3MTY3N30sIC8vIF9fYnVpbHRpbl9tc2Ffc3Jscl9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX3NybHJfaCwgNzE2OTh9LCAvLyBfX2J1aWx0aW5fbXNhX3NybHJfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19zcmxyX3csIDcxNzE5fSwgLy8gX19idWlsdGluX21zYV9zcmxyX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JscmlfYiwgNzE3NDB9LCAvLyBfX2J1aWx0aW5fbXNhX3NybHJpX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JscmlfZCwgNzE3NjJ9LCAvLyBfX2J1aWx0aW5fbXNhX3NybHJpX2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JscmlfaCwgNzE3ODR9LCAvLyBfX2J1aWx0aW5fbXNhX3NybHJpX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JscmlfdywgNzE4MDZ9LCAvLyBfX2J1aWx0aW5fbXNhX3NybHJpX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3RfYiwgNzE4Mjh9LCAvLyBfX2J1aWx0aW5fbXNhX3N0X2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3RfZCwgNzE4NDd9LCAvLyBfX2J1aWx0aW5fbXNhX3N0X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3RfaCwgNzE4NjZ9LCAvLyBfX2J1aWx0aW5fbXNhX3N0X2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3RfdywgNzE4ODV9LCAvLyBfX2J1aWx0aW5fbXNhX3N0X3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3Vic19zX2IsIDcyMDc0fSwgLy8gX19idWlsdGluX21zYV9zdWJzX3NfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJzX3NfZCwgNzIwOTd9LCAvLyBfX2J1aWx0aW5fbXNhX3N1YnNfc19kCi0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnNfc19oLCA3MjEyMH0sIC8vIF9fYnVpbHRpbl9tc2Ffc3Vic19zX2gKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3Vic19zX3csIDcyMTQzfSwgLy8gX19idWlsdGluX21zYV9zdWJzX3NfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJzX3VfYiwgNzIxNjZ9LCAvLyBfX2J1aWx0aW5fbXNhX3N1YnNfdV9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnNfdV9kLCA3MjE4OX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3Vic191X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3Vic191X2gsIDcyMjEyfSwgLy8gX19idWlsdGluX21zYV9zdWJzX3VfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJzX3VfdywgNzIyMzV9LCAvLyBfX2J1aWx0aW5fbXNhX3N1YnNfdV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1c191X2IsIDcyMjU4fSwgLy8gX19idWlsdGluX21zYV9zdWJzdXNfdV9iCi0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1c191X2QsIDcyMjgzfSwgLy8gX19idWlsdGluX21zYV9zdWJzdXNfdV9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1c191X2gsIDcyMzA4fSwgLy8gX19idWlsdGluX21zYV9zdWJzdXNfdV9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1c191X3csIDcyMzMzfSwgLy8gX19idWlsdGluX21zYV9zdWJzdXNfdV93Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1dV9zX2IsIDcyMzU4fSwgLy8gX19idWlsdGluX21zYV9zdWJzdXVfc19iCi0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1dV9zX2QsIDcyMzgzfSwgLy8gX19idWlsdGluX21zYV9zdWJzdXVfc19kCi0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1dV9zX2gsIDcyNDA4fSwgLy8gX19idWlsdGluX21zYV9zdWJzdXVfc19oCi0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1dV9zX3csIDcyNDMzfSwgLy8gX19idWlsdGluX21zYV9zdWJzdXVfc193Ci0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnZfYiwgNzI2MDR9LCAvLyBfX2J1aWx0aW5fbXNhX3N1YnZfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJ2X2QsIDcyNjI1fSwgLy8gX19idWlsdGluX21zYV9zdWJ2X2QKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3Vidl9oLCA3MjY0Nn0sIC8vIF9fYnVpbHRpbl9tc2Ffc3Vidl9oCi0gICAgICB7SW50cmluc2ljOjptaXBzX3N1YnZfdywgNzI2Njd9LCAvLyBfX2J1aWx0aW5fbXNhX3N1YnZfdwotICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJ2aV9iLCA3MjY4OH0sIC8vIF9fYnVpbHRpbl9tc2Ffc3VidmlfYgotICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJ2aV9kLCA3MjcxMH0sIC8vIF9fYnVpbHRpbl9tc2Ffc3VidmlfZAotICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJ2aV9oLCA3MjczMn0sIC8vIF9fYnVpbHRpbl9tc2Ffc3VidmlfaAotICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJ2aV93LCA3Mjc1NH0sIC8vIF9fYnVpbHRpbl9tc2Ffc3VidmlfdwotICAgICAge0ludHJpbnNpYzo6bWlwc192c2hmX2IsIDcyNzc2fSwgLy8gX19idWlsdGluX21zYV92c2hmX2IKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfdnNoZl9kLCA3Mjc5N30sIC8vIF9fYnVpbHRpbl9tc2FfdnNoZl9kCi0gICAgICB7SW50cmluc2ljOjptaXBzX3ZzaGZfaCwgNzI4MTh9LCAvLyBfX2J1aWx0aW5fbXNhX3ZzaGZfaAotICAgICAge0ludHJpbnNpYzo6bWlwc192c2hmX3csIDcyODM5fSwgLy8gX19idWlsdGluX21zYV92c2hmX3cKLSAgICAgIHtJbnRyaW5zaWM6Om1pcHNfeG9yX3YsIDcyODgxfSwgLy8gX19idWlsdGluX21zYV94b3JfdgotICAgICAge0ludHJpbnNpYzo6bWlwc194b3JpX2IsIDcyOTAxfSwgLy8gX19idWlsdGluX21zYV94b3JpX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWJzcV9zX3BoLCA1OTU0M30sIC8vIF9fYnVpbHRpbl9taXBzX2Fic3Ffc19waAorICAgICAge0ludHJpbnNpYzo6bWlwc19hYnNxX3NfcWIsIDU5NTY4fSwgLy8gX19idWlsdGluX21pcHNfYWJzcV9zX3FiCisgICAgICB7SW50cmluc2ljOjptaXBzX2Fic3Ffc193LCA1OTU5M30sIC8vIF9fYnVpbHRpbl9taXBzX2Fic3Ffc193CisgICAgICB7SW50cmluc2ljOjptaXBzX2FkZHFfcGgsIDU5NzA1fSwgLy8gX19idWlsdGluX21pcHNfYWRkcV9waAorICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRxX3NfcGgsIDU5NzI4fSwgLy8gX19idWlsdGluX21pcHNfYWRkcV9zX3BoCisgICAgICB7SW50cmluc2ljOjptaXBzX2FkZHFfc193LCA1OTc1M30sIC8vIF9fYnVpbHRpbl9taXBzX2FkZHFfc193CisgICAgICB7SW50cmluc2ljOjptaXBzX2FkZHFoX3BoLCA1OTc3N30sIC8vIF9fYnVpbHRpbl9taXBzX2FkZHFoX3BoCisgICAgICB7SW50cmluc2ljOjptaXBzX2FkZHFoX3JfcGgsIDU5ODAxfSwgLy8gX19idWlsdGluX21pcHNfYWRkcWhfcl9waAorICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRxaF9yX3csIDU5ODI3fSwgLy8gX19idWlsdGluX21pcHNfYWRkcWhfcl93CisgICAgICB7SW50cmluc2ljOjptaXBzX2FkZHFoX3csIDU5ODUyfSwgLy8gX19idWlsdGluX21pcHNfYWRkcWhfdworICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRzYywgNjAxNTF9LCAvLyBfX2J1aWx0aW5fbWlwc19hZGRzYworICAgICAge0ludHJpbnNpYzo6bWlwc19hZGR1X3BoLCA2MDE3Mn0sIC8vIF9fYnVpbHRpbl9taXBzX2FkZHVfcGgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkdV9xYiwgNjAxOTV9LCAvLyBfX2J1aWx0aW5fbWlwc19hZGR1X3FiCisgICAgICB7SW50cmluc2ljOjptaXBzX2FkZHVfc19waCwgNjAyMTh9LCAvLyBfX2J1aWx0aW5fbWlwc19hZGR1X3NfcGgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkdV9zX3FiLCA2MDI0M30sIC8vIF9fYnVpbHRpbl9taXBzX2FkZHVfc19xYgorICAgICAge0ludHJpbnNpYzo6bWlwc19hZGR1aF9xYiwgNjAyNjh9LCAvLyBfX2J1aWx0aW5fbWlwc19hZGR1aF9xYgorICAgICAge0ludHJpbnNpYzo6bWlwc19hZGR1aF9yX3FiLCA2MDI5Mn0sIC8vIF9fYnVpbHRpbl9taXBzX2FkZHVoX3JfcWIKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkd2MsIDYwNDkwfSwgLy8gX19idWlsdGluX21pcHNfYWRkd2MKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYXBwZW5kLCA2MDU1Mn0sIC8vIF9fYnVpbHRpbl9taXBzX2FwcGVuZAorICAgICAge0ludHJpbnNpYzo6bWlwc19iYWxpZ24sIDYxMTE4fSwgLy8gX19idWlsdGluX21pcHNfYmFsaWduCisgICAgICB7SW50cmluc2ljOjptaXBzX2JpdHJldiwgNjE2NzJ9LCAvLyBfX2J1aWx0aW5fbWlwc19iaXRyZXYKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnBvc2dlMzIsIDYyMDUwfSwgLy8gX19idWlsdGluX21pcHNfYnBvc2dlMzIKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY21wX2VxX3BoLCA2MzI4OX0sIC8vIF9fYnVpbHRpbl9taXBzX2NtcF9lcV9waAorICAgICAge0ludHJpbnNpYzo6bWlwc19jbXBfbGVfcGgsIDYzMzE0fSwgLy8gX19idWlsdGluX21pcHNfY21wX2xlX3BoCisgICAgICB7SW50cmluc2ljOjptaXBzX2NtcF9sdF9waCwgNjMzMzl9LCAvLyBfX2J1aWx0aW5fbWlwc19jbXBfbHRfcGgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY21wZ2R1X2VxX3FiLCA2MzM2NH0sIC8vIF9fYnVpbHRpbl9taXBzX2NtcGdkdV9lcV9xYgorICAgICAge0ludHJpbnNpYzo6bWlwc19jbXBnZHVfbGVfcWIsIDYzMzkyfSwgLy8gX19idWlsdGluX21pcHNfY21wZ2R1X2xlX3FiCisgICAgICB7SW50cmluc2ljOjptaXBzX2NtcGdkdV9sdF9xYiwgNjM0MjB9LCAvLyBfX2J1aWx0aW5fbWlwc19jbXBnZHVfbHRfcWIKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY21wZ3VfZXFfcWIsIDYzNDQ4fSwgLy8gX19idWlsdGluX21pcHNfY21wZ3VfZXFfcWIKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY21wZ3VfbGVfcWIsIDYzNDc1fSwgLy8gX19idWlsdGluX21pcHNfY21wZ3VfbGVfcWIKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY21wZ3VfbHRfcWIsIDYzNTAyfSwgLy8gX19idWlsdGluX21pcHNfY21wZ3VfbHRfcWIKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY21wdV9lcV9xYiwgNjM1Mjl9LCAvLyBfX2J1aWx0aW5fbWlwc19jbXB1X2VxX3FiCisgICAgICB7SW50cmluc2ljOjptaXBzX2NtcHVfbGVfcWIsIDYzNTU1fSwgLy8gX19idWlsdGluX21pcHNfY21wdV9sZV9xYgorICAgICAge0ludHJpbnNpYzo6bWlwc19jbXB1X2x0X3FiLCA2MzU4MX0sIC8vIF9fYnVpbHRpbl9taXBzX2NtcHVfbHRfcWIKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZGxzYSwgNjM5ODh9LCAvLyBfX2J1aWx0aW5fbWlwc19kbHNhCisgICAgICB7SW50cmluc2ljOjptaXBzX2RwYV93X3BoLCA2NDE0Nn0sIC8vIF9fYnVpbHRpbl9taXBzX2RwYV93X3BoCisgICAgICB7SW50cmluc2ljOjptaXBzX2RwYXFfc193X3BoLCA2NDMxNH0sIC8vIF9fYnVpbHRpbl9taXBzX2RwYXFfc193X3BoCisgICAgICB7SW50cmluc2ljOjptaXBzX2RwYXFfc2FfbF93LCA2NDM0MX0sIC8vIF9fYnVpbHRpbl9taXBzX2RwYXFfc2FfbF93CisgICAgICB7SW50cmluc2ljOjptaXBzX2RwYXF4X3Nfd19waCwgNjQzNjh9LCAvLyBfX2J1aWx0aW5fbWlwc19kcGFxeF9zX3dfcGgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZHBhcXhfc2Ffd19waCwgNjQzOTZ9LCAvLyBfX2J1aWx0aW5fbWlwc19kcGFxeF9zYV93X3BoCisgICAgICB7SW50cmluc2ljOjptaXBzX2RwYXVfaF9xYmwsIDY0NDI1fSwgLy8gX19idWlsdGluX21pcHNfZHBhdV9oX3FibAorICAgICAge0ludHJpbnNpYzo6bWlwc19kcGF1X2hfcWJyLCA2NDQ1MX0sIC8vIF9fYnVpbHRpbl9taXBzX2RwYXVfaF9xYnIKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZHBheF93X3BoLCA2NDQ3N30sIC8vIF9fYnVpbHRpbl9taXBzX2RwYXhfd19waAorICAgICAge0ludHJpbnNpYzo6bWlwc19kcHNfd19waCwgNjQ1MDJ9LCAvLyBfX2J1aWx0aW5fbWlwc19kcHNfd19waAorICAgICAge0ludHJpbnNpYzo6bWlwc19kcHNxX3Nfd19waCwgNjQ1MjZ9LCAvLyBfX2J1aWx0aW5fbWlwc19kcHNxX3Nfd19waAorICAgICAge0ludHJpbnNpYzo6bWlwc19kcHNxX3NhX2xfdywgNjQ1NTN9LCAvLyBfX2J1aWx0aW5fbWlwc19kcHNxX3NhX2xfdworICAgICAge0ludHJpbnNpYzo6bWlwc19kcHNxeF9zX3dfcGgsIDY0NTgwfSwgLy8gX19idWlsdGluX21pcHNfZHBzcXhfc193X3BoCisgICAgICB7SW50cmluc2ljOjptaXBzX2Rwc3F4X3NhX3dfcGgsIDY0NjA4fSwgLy8gX19idWlsdGluX21pcHNfZHBzcXhfc2Ffd19waAorICAgICAge0ludHJpbnNpYzo6bWlwc19kcHN1X2hfcWJsLCA2NDYzN30sIC8vIF9fYnVpbHRpbl9taXBzX2Rwc3VfaF9xYmwKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZHBzdV9oX3FiciwgNjQ2NjN9LCAvLyBfX2J1aWx0aW5fbWlwc19kcHN1X2hfcWJyCisgICAgICB7SW50cmluc2ljOjptaXBzX2Rwc3hfd19waCwgNjQ4MzN9LCAvLyBfX2J1aWx0aW5fbWlwc19kcHN4X3dfcGgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZXh0cCwgNjQ4NTh9LCAvLyBfX2J1aWx0aW5fbWlwc19leHRwCisgICAgICB7SW50cmluc2ljOjptaXBzX2V4dHBkcCwgNjQ4Nzh9LCAvLyBfX2J1aWx0aW5fbWlwc19leHRwZHAKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZXh0cl9yX3csIDY0OTAwfSwgLy8gX19idWlsdGluX21pcHNfZXh0cl9yX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZXh0cl9yc193LCA2NDkyNH0sIC8vIF9fYnVpbHRpbl9taXBzX2V4dHJfcnNfdworICAgICAge0ludHJpbnNpYzo6bWlwc19leHRyX3NfaCwgNjQ5NDl9LCAvLyBfX2J1aWx0aW5fbWlwc19leHRyX3NfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19leHRyX3csIDY0OTczfSwgLy8gX19idWlsdGluX21pcHNfZXh0cl93CisgICAgICB7SW50cmluc2ljOjptaXBzX2luc3YsIDY4MDI1fSwgLy8gX19idWlsdGluX21pcHNfaW5zdgorICAgICAge0ludHJpbnNpYzo6bWlwc19sYnV4LCA2ODEzM30sIC8vIF9fYnVpbHRpbl9taXBzX2xidXgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbGh4LCA2ODMwOX0sIC8vIF9fYnVpbHRpbl9taXBzX2xoeAorICAgICAge0ludHJpbnNpYzo6bWlwc19sc2EsIDY4MzI4fSwgLy8gX19idWlsdGluX21pcHNfbHNhCisgICAgICB7SW50cmluc2ljOjptaXBzX2x3eCwgNjgzNDd9LCAvLyBfX2J1aWx0aW5fbWlwc19sd3gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWFkZCwgNjgzNjZ9LCAvLyBfX2J1aWx0aW5fbWlwc19tYWRkCisgICAgICB7SW50cmluc2ljOjptaXBzX21hZGR1LCA2ODQ4MH0sIC8vIF9fYnVpbHRpbl9taXBzX21hZGR1CisgICAgICB7SW50cmluc2ljOjptaXBzX21hcV9zX3dfcGhsLCA2ODU4OX0sIC8vIF9fYnVpbHRpbl9taXBzX21hcV9zX3dfcGhsCisgICAgICB7SW50cmluc2ljOjptaXBzX21hcV9zX3dfcGhyLCA2ODYxNn0sIC8vIF9fYnVpbHRpbl9taXBzX21hcV9zX3dfcGhyCisgICAgICB7SW50cmluc2ljOjptaXBzX21hcV9zYV93X3BobCwgNjg2NDN9LCAvLyBfX2J1aWx0aW5fbWlwc19tYXFfc2Ffd19waGwKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWFxX3NhX3dfcGhyLCA2ODY3MX0sIC8vIF9fYnVpbHRpbl9taXBzX21hcV9zYV93X3BocgorICAgICAge0ludHJpbnNpYzo6bWlwc19tb2RzdWIsIDY5NzcxfSwgLy8gX19idWlsdGluX21pcHNfbW9kc3ViCisgICAgICB7SW50cmluc2ljOjptaXBzX21zdWIsIDY5ODE0fSwgLy8gX19idWlsdGluX21pcHNfbXN1YgorICAgICAge0ludHJpbnNpYzo6bWlwc19tc3VidSwgNjk5Mjh9LCAvLyBfX2J1aWx0aW5fbWlwc19tc3VidQorICAgICAge0ludHJpbnNpYzo6bWlwc19tdGhsaXAsIDcwMDM3fSwgLy8gX19idWlsdGluX21pcHNfbXRobGlwCisgICAgICB7SW50cmluc2ljOjptaXBzX211bF9waCwgNzAwNTl9LCAvLyBfX2J1aWx0aW5fbWlwc19tdWxfcGgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXVsX3NfcGgsIDcwMTI1fSwgLy8gX19idWlsdGluX21pcHNfbXVsX3NfcGgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXVsZXFfc193X3BobCwgNzAxNDl9LCAvLyBfX2J1aWx0aW5fbWlwc19tdWxlcV9zX3dfcGhsCisgICAgICB7SW50cmluc2ljOjptaXBzX211bGVxX3Nfd19waHIsIDcwMTc4fSwgLy8gX19idWlsdGluX21pcHNfbXVsZXFfc193X3BocgorICAgICAge0ludHJpbnNpYzo6bWlwc19tdWxldV9zX3BoX3FibCwgNzAyMDd9LCAvLyBfX2J1aWx0aW5fbWlwc19tdWxldV9zX3BoX3FibAorICAgICAge0ludHJpbnNpYzo6bWlwc19tdWxldV9zX3BoX3FiciwgNzAyMzd9LCAvLyBfX2J1aWx0aW5fbWlwc19tdWxldV9zX3BoX3FicgorICAgICAge0ludHJpbnNpYzo6bWlwc19tdWxxX3JzX3BoLCA3MDI2N30sIC8vIF9fYnVpbHRpbl9taXBzX211bHFfcnNfcGgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXVscV9yc193LCA3MDI5M30sIC8vIF9fYnVpbHRpbl9taXBzX211bHFfcnNfdworICAgICAge0ludHJpbnNpYzo6bWlwc19tdWxxX3NfcGgsIDcwMzE4fSwgLy8gX19idWlsdGluX21pcHNfbXVscV9zX3BoCisgICAgICB7SW50cmluc2ljOjptaXBzX211bHFfc193LCA3MDM0M30sIC8vIF9fYnVpbHRpbl9taXBzX211bHFfc193CisgICAgICB7SW50cmluc2ljOjptaXBzX211bHNhX3dfcGgsIDcwNDEzfSwgLy8gX19idWlsdGluX21pcHNfbXVsc2Ffd19waAorICAgICAge0ludHJpbnNpYzo6bWlwc19tdWxzYXFfc193X3BoLCA3MDQzOX0sIC8vIF9fYnVpbHRpbl9taXBzX211bHNhcV9zX3dfcGgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXVsdCwgNzA0Njh9LCAvLyBfX2J1aWx0aW5fbWlwc19tdWx0CisgICAgICB7SW50cmluc2ljOjptaXBzX211bHR1LCA3MDQ4OH0sIC8vIF9fYnVpbHRpbl9taXBzX211bHR1CisgICAgICB7SW50cmluc2ljOjptaXBzX3BhY2tybF9waCwgNzA4NDF9LCAvLyBfX2J1aWx0aW5fbWlwc19wYWNrcmxfcGgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcGlja19waCwgNzExMjZ9LCAvLyBfX2J1aWx0aW5fbWlwc19waWNrX3BoCisgICAgICB7SW50cmluc2ljOjptaXBzX3BpY2tfcWIsIDcxMTQ5fSwgLy8gX19idWlsdGluX21pcHNfcGlja19xYgorICAgICAge0ludHJpbnNpYzo6bWlwc19wcmVjZXFfd19waGwsIDcxMTcyfSwgLy8gX19idWlsdGluX21pcHNfcHJlY2VxX3dfcGhsCisgICAgICB7SW50cmluc2ljOjptaXBzX3ByZWNlcV93X3BociwgNzEyMDB9LCAvLyBfX2J1aWx0aW5fbWlwc19wcmVjZXFfd19waHIKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY2VxdV9waF9xYmwsIDcxMjI4fSwgLy8gX19idWlsdGluX21pcHNfcHJlY2VxdV9waF9xYmwKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY2VxdV9waF9xYmxhLCA3MTI1OH0sIC8vIF9fYnVpbHRpbl9taXBzX3ByZWNlcXVfcGhfcWJsYQorICAgICAge0ludHJpbnNpYzo6bWlwc19wcmVjZXF1X3BoX3FiciwgNzEyODl9LCAvLyBfX2J1aWx0aW5fbWlwc19wcmVjZXF1X3BoX3FicgorICAgICAge0ludHJpbnNpYzo6bWlwc19wcmVjZXF1X3BoX3FicmEsIDcxMzE5fSwgLy8gX19idWlsdGluX21pcHNfcHJlY2VxdV9waF9xYnJhCisgICAgICB7SW50cmluc2ljOjptaXBzX3ByZWNldV9waF9xYmwsIDcxMzUwfSwgLy8gX19idWlsdGluX21pcHNfcHJlY2V1X3BoX3FibAorICAgICAge0ludHJpbnNpYzo6bWlwc19wcmVjZXVfcGhfcWJsYSwgNzEzNzl9LCAvLyBfX2J1aWx0aW5fbWlwc19wcmVjZXVfcGhfcWJsYQorICAgICAge0ludHJpbnNpYzo6bWlwc19wcmVjZXVfcGhfcWJyLCA3MTQwOX0sIC8vIF9fYnVpbHRpbl9taXBzX3ByZWNldV9waF9xYnIKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY2V1X3BoX3FicmEsIDcxNDM4fSwgLy8gX19idWlsdGluX21pcHNfcHJlY2V1X3BoX3FicmEKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY3JfcWJfcGgsIDcxNDY4fSwgLy8gX19idWlsdGluX21pcHNfcHJlY3JfcWJfcGgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY3Jfc3JhX3BoX3csIDcxNDk1fSwgLy8gX19idWlsdGluX21pcHNfcHJlY3Jfc3JhX3BoX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY3Jfc3JhX3JfcGhfdywgNzE1MjV9LCAvLyBfX2J1aWx0aW5fbWlwc19wcmVjcl9zcmFfcl9waF93CisgICAgICB7SW50cmluc2ljOjptaXBzX3ByZWNycV9waF93LCA3MTU1N30sIC8vIF9fYnVpbHRpbl9taXBzX3ByZWNycV9waF93CisgICAgICB7SW50cmluc2ljOjptaXBzX3ByZWNycV9xYl9waCwgNzE1ODR9LCAvLyBfX2J1aWx0aW5fbWlwc19wcmVjcnFfcWJfcGgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY3JxX3JzX3BoX3csIDcxNjEyfSwgLy8gX19idWlsdGluX21pcHNfcHJlY3JxX3JzX3BoX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcHJlY3JxdV9zX3FiX3BoLCA3MTY0Mn0sIC8vIF9fYnVpbHRpbl9taXBzX3ByZWNycXVfc19xYl9waAorICAgICAge0ludHJpbnNpYzo6bWlwc19wcmVwZW5kLCA3MTY3M30sIC8vIF9fYnVpbHRpbl9taXBzX3ByZXBlbmQKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcmFkZHVfd19xYiwgNzE2OTZ9LCAvLyBfX2J1aWx0aW5fbWlwc19yYWRkdV93X3FiCisgICAgICB7SW50cmluc2ljOjptaXBzX3JkZHNwLCA3MTcyMn0sIC8vIF9fYnVpbHRpbl9taXBzX3JkZHNwCisgICAgICB7SW50cmluc2ljOjptaXBzX3JlcGxfcGgsIDcxNzQzfSwgLy8gX19idWlsdGluX21pcHNfcmVwbF9waAorICAgICAge0ludHJpbnNpYzo6bWlwc19yZXBsX3FiLCA3MTc2Nn0sIC8vIF9fYnVpbHRpbl9taXBzX3JlcGxfcWIKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2hpbG8sIDcyMDI1fSwgLy8gX19idWlsdGluX21pcHNfc2hpbG8KKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2hsbF9waCwgNzIwNDZ9LCAvLyBfX2J1aWx0aW5fbWlwc19zaGxsX3BoCisgICAgICB7SW50cmluc2ljOjptaXBzX3NobGxfcWIsIDcyMDY5fSwgLy8gX19idWlsdGluX21pcHNfc2hsbF9xYgorICAgICAge0ludHJpbnNpYzo6bWlwc19zaGxsX3NfcGgsIDcyMDkyfSwgLy8gX19idWlsdGluX21pcHNfc2hsbF9zX3BoCisgICAgICB7SW50cmluc2ljOjptaXBzX3NobGxfc193LCA3MjExN30sIC8vIF9fYnVpbHRpbl9taXBzX3NobGxfc193CisgICAgICB7SW50cmluc2ljOjptaXBzX3NocmFfcGgsIDcyMTQxfSwgLy8gX19idWlsdGluX21pcHNfc2hyYV9waAorICAgICAge0ludHJpbnNpYzo6bWlwc19zaHJhX3FiLCA3MjE2NH0sIC8vIF9fYnVpbHRpbl9taXBzX3NocmFfcWIKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2hyYV9yX3BoLCA3MjE4N30sIC8vIF9fYnVpbHRpbl9taXBzX3NocmFfcl9waAorICAgICAge0ludHJpbnNpYzo6bWlwc19zaHJhX3JfcWIsIDcyMjEyfSwgLy8gX19idWlsdGluX21pcHNfc2hyYV9yX3FiCisgICAgICB7SW50cmluc2ljOjptaXBzX3NocmFfcl93LCA3MjIzN30sIC8vIF9fYnVpbHRpbl9taXBzX3NocmFfcl93CisgICAgICB7SW50cmluc2ljOjptaXBzX3NocmxfcGgsIDcyMjYxfSwgLy8gX19idWlsdGluX21pcHNfc2hybF9waAorICAgICAge0ludHJpbnNpYzo6bWlwc19zaHJsX3FiLCA3MjI4NH0sIC8vIF9fYnVpbHRpbl9taXBzX3NocmxfcWIKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3VicV9waCwgNzM1NjN9LCAvLyBfX2J1aWx0aW5fbWlwc19zdWJxX3BoCisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnFfc19waCwgNzM1ODZ9LCAvLyBfX2J1aWx0aW5fbWlwc19zdWJxX3NfcGgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3VicV9zX3csIDczNjExfSwgLy8gX19idWlsdGluX21pcHNfc3VicV9zX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3VicWhfcGgsIDczNjM1fSwgLy8gX19idWlsdGluX21pcHNfc3VicWhfcGgKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3VicWhfcl9waCwgNzM2NTl9LCAvLyBfX2J1aWx0aW5fbWlwc19zdWJxaF9yX3BoCisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnFoX3JfdywgNzM2ODV9LCAvLyBfX2J1aWx0aW5fbWlwc19zdWJxaF9yX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3VicWhfdywgNzM3MTB9LCAvLyBfX2J1aWx0aW5fbWlwc19zdWJxaF93CisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnVfcGgsIDc0MTE3fSwgLy8gX19idWlsdGluX21pcHNfc3VidV9waAorICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJ1X3FiLCA3NDE0MH0sIC8vIF9fYnVpbHRpbl9taXBzX3N1YnVfcWIKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3VidV9zX3BoLCA3NDE2M30sIC8vIF9fYnVpbHRpbl9taXBzX3N1YnVfc19waAorICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJ1X3NfcWIsIDc0MTg4fSwgLy8gX19idWlsdGluX21pcHNfc3VidV9zX3FiCisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnVoX3FiLCA3NDIxM30sIC8vIF9fYnVpbHRpbl9taXBzX3N1YnVoX3FiCisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnVoX3JfcWIsIDc0MjM3fSwgLy8gX19idWlsdGluX21pcHNfc3VidWhfcl9xYgorICAgICAge0ludHJpbnNpYzo6bWlwc193cmRzcCwgNzQ1MTl9LCAvLyBfX2J1aWx0aW5fbWlwc193cmRzcAorICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRfYV9iLCA1OTYxN30sIC8vIF9fYnVpbHRpbl9tc2FfYWRkX2FfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRfYV9kLCA1OTYzOX0sIC8vIF9fYnVpbHRpbl9tc2FfYWRkX2FfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRfYV9oLCA1OTY2MX0sIC8vIF9fYnVpbHRpbl9tc2FfYWRkX2FfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRfYV93LCA1OTY4M30sIC8vIF9fYnVpbHRpbl9tc2FfYWRkX2FfdworICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRzX2FfYiwgNTk4NzV9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHNfYV9iCisgICAgICB7SW50cmluc2ljOjptaXBzX2FkZHNfYV9kLCA1OTg5OH0sIC8vIF9fYnVpbHRpbl9tc2FfYWRkc19hX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkc19hX2gsIDU5OTIxfSwgLy8gX19idWlsdGluX21zYV9hZGRzX2FfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRzX2FfdywgNTk5NDR9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHNfYV93CisgICAgICB7SW50cmluc2ljOjptaXBzX2FkZHNfc19iLCA1OTk2N30sIC8vIF9fYnVpbHRpbl9tc2FfYWRkc19zX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkc19zX2QsIDU5OTkwfSwgLy8gX19idWlsdGluX21zYV9hZGRzX3NfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRzX3NfaCwgNjAwMTN9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHNfc19oCisgICAgICB7SW50cmluc2ljOjptaXBzX2FkZHNfc193LCA2MDAzNn0sIC8vIF9fYnVpbHRpbl9tc2FfYWRkc19zX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkc191X2IsIDYwMDU5fSwgLy8gX19idWlsdGluX21zYV9hZGRzX3VfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19hZGRzX3VfZCwgNjAwODJ9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHNfdV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2FkZHNfdV9oLCA2MDEwNX0sIC8vIF9fYnVpbHRpbl9tc2FfYWRkc191X2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkc191X3csIDYwMTI4fSwgLy8gX19idWlsdGluX21zYV9hZGRzX3VfdworICAgICAge0ludHJpbnNpYzo6bWlwc19hZGR2X2IsIDYwMzE4fSwgLy8gX19idWlsdGluX21zYV9hZGR2X2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkdl9kLCA2MDMzOX0sIC8vIF9fYnVpbHRpbl9tc2FfYWRkdl9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2FkZHZfaCwgNjAzNjB9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHZfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19hZGR2X3csIDYwMzgxfSwgLy8gX19idWlsdGluX21zYV9hZGR2X3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkdmlfYiwgNjA0MDJ9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHZpX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkdmlfZCwgNjA0MjR9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHZpX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkdmlfaCwgNjA0NDZ9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHZpX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYWRkdmlfdywgNjA0Njh9LCAvLyBfX2J1aWx0aW5fbXNhX2FkZHZpX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYW5kX3YsIDYwNTExfSwgLy8gX19idWlsdGluX21zYV9hbmRfdgorICAgICAge0ludHJpbnNpYzo6bWlwc19hbmRpX2IsIDYwNTMxfSwgLy8gX19idWlsdGluX21zYV9hbmRpX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYXN1Yl9zX2IsIDYwNTc0fSwgLy8gX19idWlsdGluX21zYV9hc3ViX3NfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19hc3ViX3NfZCwgNjA1OTd9LCAvLyBfX2J1aWx0aW5fbXNhX2FzdWJfc19kCisgICAgICB7SW50cmluc2ljOjptaXBzX2FzdWJfc19oLCA2MDYyMH0sIC8vIF9fYnVpbHRpbl9tc2FfYXN1Yl9zX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYXN1Yl9zX3csIDYwNjQzfSwgLy8gX19idWlsdGluX21zYV9hc3ViX3NfdworICAgICAge0ludHJpbnNpYzo6bWlwc19hc3ViX3VfYiwgNjA2NjZ9LCAvLyBfX2J1aWx0aW5fbXNhX2FzdWJfdV9iCisgICAgICB7SW50cmluc2ljOjptaXBzX2FzdWJfdV9kLCA2MDY4OX0sIC8vIF9fYnVpbHRpbl9tc2FfYXN1Yl91X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYXN1Yl91X2gsIDYwNzEyfSwgLy8gX19idWlsdGluX21zYV9hc3ViX3VfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19hc3ViX3VfdywgNjA3MzV9LCAvLyBfX2J1aWx0aW5fbXNhX2FzdWJfdV93CisgICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV9zX2IsIDYwNzU4fSwgLy8gX19idWlsdGluX21zYV9hdmVfc19iCisgICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV9zX2QsIDYwNzgwfSwgLy8gX19idWlsdGluX21zYV9hdmVfc19kCisgICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV9zX2gsIDYwODAyfSwgLy8gX19idWlsdGluX21zYV9hdmVfc19oCisgICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV9zX3csIDYwODI0fSwgLy8gX19idWlsdGluX21zYV9hdmVfc193CisgICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV91X2IsIDYwODQ2fSwgLy8gX19idWlsdGluX21zYV9hdmVfdV9iCisgICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV91X2QsIDYwODY4fSwgLy8gX19idWlsdGluX21zYV9hdmVfdV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV91X2gsIDYwODkwfSwgLy8gX19idWlsdGluX21zYV9hdmVfdV9oCisgICAgICB7SW50cmluc2ljOjptaXBzX2F2ZV91X3csIDYwOTEyfSwgLy8gX19idWlsdGluX21zYV9hdmVfdV93CisgICAgICB7SW50cmluc2ljOjptaXBzX2F2ZXJfc19iLCA2MDkzNH0sIC8vIF9fYnVpbHRpbl9tc2FfYXZlcl9zX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYXZlcl9zX2QsIDYwOTU3fSwgLy8gX19idWlsdGluX21zYV9hdmVyX3NfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19hdmVyX3NfaCwgNjA5ODB9LCAvLyBfX2J1aWx0aW5fbXNhX2F2ZXJfc19oCisgICAgICB7SW50cmluc2ljOjptaXBzX2F2ZXJfc193LCA2MTAwM30sIC8vIF9fYnVpbHRpbl9tc2FfYXZlcl9zX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYXZlcl91X2IsIDYxMDI2fSwgLy8gX19idWlsdGluX21zYV9hdmVyX3VfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19hdmVyX3VfZCwgNjEwNDl9LCAvLyBfX2J1aWx0aW5fbXNhX2F2ZXJfdV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2F2ZXJfdV9oLCA2MTA3Mn0sIC8vIF9fYnVpbHRpbl9tc2FfYXZlcl91X2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYXZlcl91X3csIDYxMDk1fSwgLy8gX19idWlsdGluX21zYV9hdmVyX3VfdworICAgICAge0ludHJpbnNpYzo6bWlwc19iY2xyX2IsIDYxMTQwfSwgLy8gX19idWlsdGluX21zYV9iY2xyX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmNscl9kLCA2MTE2MX0sIC8vIF9fYnVpbHRpbl9tc2FfYmNscl9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2JjbHJfaCwgNjExODJ9LCAvLyBfX2J1aWx0aW5fbXNhX2JjbHJfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19iY2xyX3csIDYxMjAzfSwgLy8gX19idWlsdGluX21zYV9iY2xyX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmNscmlfYiwgNjEyMjR9LCAvLyBfX2J1aWx0aW5fbXNhX2JjbHJpX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmNscmlfZCwgNjEyNDZ9LCAvLyBfX2J1aWx0aW5fbXNhX2JjbHJpX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmNscmlfaCwgNjEyNjh9LCAvLyBfX2J1aWx0aW5fbXNhX2JjbHJpX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmNscmlfdywgNjEyOTB9LCAvLyBfX2J1aWx0aW5fbXNhX2JjbHJpX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmluc2xfYiwgNjEzMTJ9LCAvLyBfX2J1aWx0aW5fbXNhX2JpbnNsX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmluc2xfZCwgNjEzMzR9LCAvLyBfX2J1aWx0aW5fbXNhX2JpbnNsX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmluc2xfaCwgNjEzNTZ9LCAvLyBfX2J1aWx0aW5fbXNhX2JpbnNsX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmluc2xfdywgNjEzNzh9LCAvLyBfX2J1aWx0aW5fbXNhX2JpbnNsX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmluc2xpX2IsIDYxNDAwfSwgLy8gX19idWlsdGluX21zYV9iaW5zbGlfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19iaW5zbGlfZCwgNjE0MjN9LCAvLyBfX2J1aWx0aW5fbXNhX2JpbnNsaV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2JpbnNsaV9oLCA2MTQ0Nn0sIC8vIF9fYnVpbHRpbl9tc2FfYmluc2xpX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmluc2xpX3csIDYxNDY5fSwgLy8gX19idWlsdGluX21zYV9iaW5zbGlfdworICAgICAge0ludHJpbnNpYzo6bWlwc19iaW5zcl9iLCA2MTQ5Mn0sIC8vIF9fYnVpbHRpbl9tc2FfYmluc3JfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19iaW5zcl9kLCA2MTUxNH0sIC8vIF9fYnVpbHRpbl9tc2FfYmluc3JfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19iaW5zcl9oLCA2MTUzNn0sIC8vIF9fYnVpbHRpbl9tc2FfYmluc3JfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19iaW5zcl93LCA2MTU1OH0sIC8vIF9fYnVpbHRpbl9tc2FfYmluc3JfdworICAgICAge0ludHJpbnNpYzo6bWlwc19iaW5zcmlfYiwgNjE1ODB9LCAvLyBfX2J1aWx0aW5fbXNhX2JpbnNyaV9iCisgICAgICB7SW50cmluc2ljOjptaXBzX2JpbnNyaV9kLCA2MTYwM30sIC8vIF9fYnVpbHRpbl9tc2FfYmluc3JpX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYmluc3JpX2gsIDYxNjI2fSwgLy8gX19idWlsdGluX21zYV9iaW5zcmlfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19iaW5zcmlfdywgNjE2NDl9LCAvLyBfX2J1aWx0aW5fbXNhX2JpbnNyaV93CisgICAgICB7SW50cmluc2ljOjptaXBzX2JtbnpfdiwgNjE2OTR9LCAvLyBfX2J1aWx0aW5fbXNhX2JtbnpfdgorICAgICAge0ludHJpbnNpYzo6bWlwc19ibW56aV9iLCA2MTcxNX0sIC8vIF9fYnVpbHRpbl9tc2FfYm1uemlfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19ibXpfdiwgNjE3Mzd9LCAvLyBfX2J1aWx0aW5fbXNhX2Jtel92CisgICAgICB7SW50cmluc2ljOjptaXBzX2JtemlfYiwgNjE3NTd9LCAvLyBfX2J1aWx0aW5fbXNhX2JtemlfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19ibmVnX2IsIDYxNzc4fSwgLy8gX19idWlsdGluX21zYV9ibmVnX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYm5lZ19kLCA2MTc5OX0sIC8vIF9fYnVpbHRpbl9tc2FfYm5lZ19kCisgICAgICB7SW50cmluc2ljOjptaXBzX2JuZWdfaCwgNjE4MjB9LCAvLyBfX2J1aWx0aW5fbXNhX2JuZWdfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19ibmVnX3csIDYxODQxfSwgLy8gX19idWlsdGluX21zYV9ibmVnX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYm5lZ2lfYiwgNjE4NjJ9LCAvLyBfX2J1aWx0aW5fbXNhX2JuZWdpX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYm5lZ2lfZCwgNjE4ODR9LCAvLyBfX2J1aWx0aW5fbXNhX2JuZWdpX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYm5lZ2lfaCwgNjE5MDZ9LCAvLyBfX2J1aWx0aW5fbXNhX2JuZWdpX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYm5lZ2lfdywgNjE5Mjh9LCAvLyBfX2J1aWx0aW5fbXNhX2JuZWdpX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYm56X2IsIDYxOTUwfSwgLy8gX19idWlsdGluX21zYV9ibnpfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19ibnpfZCwgNjE5NzB9LCAvLyBfX2J1aWx0aW5fbXNhX2Juel9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2Juel9oLCA2MTk5MH0sIC8vIF9fYnVpbHRpbl9tc2FfYm56X2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYm56X3YsIDYyMDEwfSwgLy8gX19idWlsdGluX21zYV9ibnpfdgorICAgICAge0ludHJpbnNpYzo6bWlwc19ibnpfdywgNjIwMzB9LCAvLyBfX2J1aWx0aW5fbXNhX2Juel93CisgICAgICB7SW50cmluc2ljOjptaXBzX2JzZWxfdiwgNjIwNzR9LCAvLyBfX2J1aWx0aW5fbXNhX2JzZWxfdgorICAgICAge0ludHJpbnNpYzo6bWlwc19ic2VsaV9iLCA2MjA5NX0sIC8vIF9fYnVpbHRpbl9tc2FfYnNlbGlfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19ic2V0X2IsIDYyMTE3fSwgLy8gX19idWlsdGluX21zYV9ic2V0X2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnNldF9kLCA2MjEzOH0sIC8vIF9fYnVpbHRpbl9tc2FfYnNldF9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2JzZXRfaCwgNjIxNTl9LCAvLyBfX2J1aWx0aW5fbXNhX2JzZXRfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19ic2V0X3csIDYyMTgwfSwgLy8gX19idWlsdGluX21zYV9ic2V0X3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnNldGlfYiwgNjIyMDF9LCAvLyBfX2J1aWx0aW5fbXNhX2JzZXRpX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnNldGlfZCwgNjIyMjN9LCAvLyBfX2J1aWx0aW5fbXNhX2JzZXRpX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnNldGlfaCwgNjIyNDV9LCAvLyBfX2J1aWx0aW5fbXNhX2JzZXRpX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnNldGlfdywgNjIyNjd9LCAvLyBfX2J1aWx0aW5fbXNhX2JzZXRpX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnpfYiwgNjIyODl9LCAvLyBfX2J1aWx0aW5fbXNhX2J6X2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnpfZCwgNjIzMDh9LCAvLyBfX2J1aWx0aW5fbXNhX2J6X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnpfaCwgNjIzMjd9LCAvLyBfX2J1aWx0aW5fbXNhX2J6X2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnpfdiwgNjIzNDZ9LCAvLyBfX2J1aWx0aW5fbXNhX2J6X3YKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfYnpfdywgNjIzNjV9LCAvLyBfX2J1aWx0aW5fbXNhX2J6X3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2VxX2IsIDYyMzg0fSwgLy8gX19idWlsdGluX21zYV9jZXFfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19jZXFfZCwgNjI0MDR9LCAvLyBfX2J1aWx0aW5fbXNhX2NlcV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2NlcV9oLCA2MjQyNH0sIC8vIF9fYnVpbHRpbl9tc2FfY2VxX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2VxX3csIDYyNDQ0fSwgLy8gX19idWlsdGluX21zYV9jZXFfdworICAgICAge0ludHJpbnNpYzo6bWlwc19jZXFpX2IsIDYyNDY0fSwgLy8gX19idWlsdGluX21zYV9jZXFpX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2VxaV9kLCA2MjQ4NX0sIC8vIF9fYnVpbHRpbl9tc2FfY2VxaV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2NlcWlfaCwgNjI1MDZ9LCAvLyBfX2J1aWx0aW5fbXNhX2NlcWlfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19jZXFpX3csIDYyNTI3fSwgLy8gX19idWlsdGluX21zYV9jZXFpX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2ZjbXNhLCA2MjU0OH0sIC8vIF9fYnVpbHRpbl9tc2FfY2ZjbXNhCisgICAgICB7SW50cmluc2ljOjptaXBzX2NsZV9zX2IsIDYyNTY5fSwgLy8gX19idWlsdGluX21zYV9jbGVfc19iCisgICAgICB7SW50cmluc2ljOjptaXBzX2NsZV9zX2QsIDYyNTkxfSwgLy8gX19idWlsdGluX21zYV9jbGVfc19kCisgICAgICB7SW50cmluc2ljOjptaXBzX2NsZV9zX2gsIDYyNjEzfSwgLy8gX19idWlsdGluX21zYV9jbGVfc19oCisgICAgICB7SW50cmluc2ljOjptaXBzX2NsZV9zX3csIDYyNjM1fSwgLy8gX19idWlsdGluX21zYV9jbGVfc193CisgICAgICB7SW50cmluc2ljOjptaXBzX2NsZV91X2IsIDYyNjU3fSwgLy8gX19idWlsdGluX21zYV9jbGVfdV9iCisgICAgICB7SW50cmluc2ljOjptaXBzX2NsZV91X2QsIDYyNjc5fSwgLy8gX19idWlsdGluX21zYV9jbGVfdV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2NsZV91X2gsIDYyNzAxfSwgLy8gX19idWlsdGluX21zYV9jbGVfdV9oCisgICAgICB7SW50cmluc2ljOjptaXBzX2NsZV91X3csIDYyNzIzfSwgLy8gX19idWlsdGluX21zYV9jbGVfdV93CisgICAgICB7SW50cmluc2ljOjptaXBzX2NsZWlfc19iLCA2Mjc0NX0sIC8vIF9fYnVpbHRpbl9tc2FfY2xlaV9zX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2xlaV9zX2QsIDYyNzY4fSwgLy8gX19idWlsdGluX21zYV9jbGVpX3NfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19jbGVpX3NfaCwgNjI3OTF9LCAvLyBfX2J1aWx0aW5fbXNhX2NsZWlfc19oCisgICAgICB7SW50cmluc2ljOjptaXBzX2NsZWlfc193LCA2MjgxNH0sIC8vIF9fYnVpbHRpbl9tc2FfY2xlaV9zX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2xlaV91X2IsIDYyODM3fSwgLy8gX19idWlsdGluX21zYV9jbGVpX3VfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19jbGVpX3VfZCwgNjI4NjB9LCAvLyBfX2J1aWx0aW5fbXNhX2NsZWlfdV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2NsZWlfdV9oLCA2Mjg4M30sIC8vIF9fYnVpbHRpbl9tc2FfY2xlaV91X2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2xlaV91X3csIDYyOTA2fSwgLy8gX19idWlsdGluX21zYV9jbGVpX3VfdworICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfc19iLCA2MjkyOX0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3NfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfc19kLCA2Mjk1MX0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3NfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfc19oLCA2Mjk3M30sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3NfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfc193LCA2Mjk5NX0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3NfdworICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfdV9iLCA2MzAxN30sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3VfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfdV9kLCA2MzAzOX0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3VfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfdV9oLCA2MzA2MX0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3VfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRfdV93LCA2MzA4M30sIC8vIF9fYnVpbHRpbl9tc2FfY2x0X3VfdworICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRpX3NfYiwgNjMxMDV9LCAvLyBfX2J1aWx0aW5fbXNhX2NsdGlfc19iCisgICAgICB7SW50cmluc2ljOjptaXBzX2NsdGlfc19kLCA2MzEyOH0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0aV9zX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2x0aV9zX2gsIDYzMTUxfSwgLy8gX19idWlsdGluX21zYV9jbHRpX3NfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRpX3NfdywgNjMxNzR9LCAvLyBfX2J1aWx0aW5fbXNhX2NsdGlfc193CisgICAgICB7SW50cmluc2ljOjptaXBzX2NsdGlfdV9iLCA2MzE5N30sIC8vIF9fYnVpbHRpbl9tc2FfY2x0aV91X2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY2x0aV91X2QsIDYzMjIwfSwgLy8gX19idWlsdGluX21zYV9jbHRpX3VfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19jbHRpX3VfaCwgNjMyNDN9LCAvLyBfX2J1aWx0aW5fbXNhX2NsdGlfdV9oCisgICAgICB7SW50cmluc2ljOjptaXBzX2NsdGlfdV93LCA2MzI2Nn0sIC8vIF9fYnVpbHRpbl9tc2FfY2x0aV91X3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY29weV9zX2IsIDYzNjA3fSwgLy8gX19idWlsdGluX21zYV9jb3B5X3NfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19jb3B5X3NfZCwgNjM2MzB9LCAvLyBfX2J1aWx0aW5fbXNhX2NvcHlfc19kCisgICAgICB7SW50cmluc2ljOjptaXBzX2NvcHlfc19oLCA2MzY1M30sIC8vIF9fYnVpbHRpbl9tc2FfY29weV9zX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY29weV9zX3csIDYzNjc2fSwgLy8gX19idWlsdGluX21zYV9jb3B5X3NfdworICAgICAge0ludHJpbnNpYzo6bWlwc19jb3B5X3VfYiwgNjM2OTl9LCAvLyBfX2J1aWx0aW5fbXNhX2NvcHlfdV9iCisgICAgICB7SW50cmluc2ljOjptaXBzX2NvcHlfdV9kLCA2MzcyMn0sIC8vIF9fYnVpbHRpbl9tc2FfY29weV91X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfY29weV91X2gsIDYzNzQ1fSwgLy8gX19idWlsdGluX21zYV9jb3B5X3VfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19jb3B5X3VfdywgNjM3Njh9LCAvLyBfX2J1aWx0aW5fbXNhX2NvcHlfdV93CisgICAgICB7SW50cmluc2ljOjptaXBzX2N0Y21zYSwgNjM3OTF9LCAvLyBfX2J1aWx0aW5fbXNhX2N0Y21zYQorICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfc19iLCA2MzgxMn0sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3NfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfc19kLCA2MzgzNH0sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3NfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfc19oLCA2Mzg1Nn0sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3NfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfc193LCA2Mzg3OH0sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3NfdworICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfdV9iLCA2MzkwMH0sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3VfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfdV9kLCA2MzkyMn0sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3VfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfdV9oLCA2Mzk0NH0sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3VfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19kaXZfdV93LCA2Mzk2Nn0sIC8vIF9fYnVpbHRpbl9tc2FfZGl2X3VfdworICAgICAge0ludHJpbnNpYzo6bWlwc19kb3RwX3NfZCwgNjQwMDh9LCAvLyBfX2J1aWx0aW5fbXNhX2RvdHBfc19kCisgICAgICB7SW50cmluc2ljOjptaXBzX2RvdHBfc19oLCA2NDAzMX0sIC8vIF9fYnVpbHRpbl9tc2FfZG90cF9zX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZG90cF9zX3csIDY0MDU0fSwgLy8gX19idWlsdGluX21zYV9kb3RwX3NfdworICAgICAge0ludHJpbnNpYzo6bWlwc19kb3RwX3VfZCwgNjQwNzd9LCAvLyBfX2J1aWx0aW5fbXNhX2RvdHBfdV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2RvdHBfdV9oLCA2NDEwMH0sIC8vIF9fYnVpbHRpbl9tc2FfZG90cF91X2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZG90cF91X3csIDY0MTIzfSwgLy8gX19idWlsdGluX21zYV9kb3RwX3VfdworICAgICAge0ludHJpbnNpYzo6bWlwc19kcGFkZF9zX2QsIDY0MTcwfSwgLy8gX19idWlsdGluX21zYV9kcGFkZF9zX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZHBhZGRfc19oLCA2NDE5NH0sIC8vIF9fYnVpbHRpbl9tc2FfZHBhZGRfc19oCisgICAgICB7SW50cmluc2ljOjptaXBzX2RwYWRkX3NfdywgNjQyMTh9LCAvLyBfX2J1aWx0aW5fbXNhX2RwYWRkX3NfdworICAgICAge0ludHJpbnNpYzo6bWlwc19kcGFkZF91X2QsIDY0MjQyfSwgLy8gX19idWlsdGluX21zYV9kcGFkZF91X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZHBhZGRfdV9oLCA2NDI2Nn0sIC8vIF9fYnVpbHRpbl9tc2FfZHBhZGRfdV9oCisgICAgICB7SW50cmluc2ljOjptaXBzX2RwYWRkX3VfdywgNjQyOTB9LCAvLyBfX2J1aWx0aW5fbXNhX2RwYWRkX3VfdworICAgICAge0ludHJpbnNpYzo6bWlwc19kcHN1Yl9zX2QsIDY0Njg5fSwgLy8gX19idWlsdGluX21zYV9kcHN1Yl9zX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZHBzdWJfc19oLCA2NDcxM30sIC8vIF9fYnVpbHRpbl9tc2FfZHBzdWJfc19oCisgICAgICB7SW50cmluc2ljOjptaXBzX2Rwc3ViX3NfdywgNjQ3Mzd9LCAvLyBfX2J1aWx0aW5fbXNhX2Rwc3ViX3NfdworICAgICAge0ludHJpbnNpYzo6bWlwc19kcHN1Yl91X2QsIDY0NzYxfSwgLy8gX19idWlsdGluX21zYV9kcHN1Yl91X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZHBzdWJfdV9oLCA2NDc4NX0sIC8vIF9fYnVpbHRpbl9tc2FfZHBzdWJfdV9oCisgICAgICB7SW50cmluc2ljOjptaXBzX2Rwc3ViX3VfdywgNjQ4MDl9LCAvLyBfX2J1aWx0aW5fbXNhX2Rwc3ViX3VfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mYWRkX2QsIDY0OTk1fSwgLy8gX19idWlsdGluX21zYV9mYWRkX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmFkZF93LCA2NTAxNn0sIC8vIF9fYnVpbHRpbl9tc2FfZmFkZF93CisgICAgICB7SW50cmluc2ljOjptaXBzX2ZjYWZfZCwgNjUwMzd9LCAvLyBfX2J1aWx0aW5fbXNhX2ZjYWZfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mY2FmX3csIDY1MDU4fSwgLy8gX19idWlsdGluX21zYV9mY2FmX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmNlcV9kLCA2NTA3OX0sIC8vIF9fYnVpbHRpbl9tc2FfZmNlcV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2ZjZXFfdywgNjUxMDB9LCAvLyBfX2J1aWx0aW5fbXNhX2ZjZXFfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mY2xhc3NfZCwgNjUxMjF9LCAvLyBfX2J1aWx0aW5fbXNhX2ZjbGFzc19kCisgICAgICB7SW50cmluc2ljOjptaXBzX2ZjbGFzc193LCA2NTE0NH0sIC8vIF9fYnVpbHRpbl9tc2FfZmNsYXNzX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmNsZV9kLCA2NTE2N30sIC8vIF9fYnVpbHRpbl9tc2FfZmNsZV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2ZjbGVfdywgNjUxODh9LCAvLyBfX2J1aWx0aW5fbXNhX2ZjbGVfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mY2x0X2QsIDY1MjA5fSwgLy8gX19idWlsdGluX21zYV9mY2x0X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmNsdF93LCA2NTIzMH0sIC8vIF9fYnVpbHRpbl9tc2FfZmNsdF93CisgICAgICB7SW50cmluc2ljOjptaXBzX2ZjbmVfZCwgNjUyNTF9LCAvLyBfX2J1aWx0aW5fbXNhX2ZjbmVfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mY25lX3csIDY1MjcyfSwgLy8gX19idWlsdGluX21zYV9mY25lX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmNvcl9kLCA2NTI5M30sIC8vIF9fYnVpbHRpbl9tc2FfZmNvcl9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2Zjb3JfdywgNjUzMTR9LCAvLyBfX2J1aWx0aW5fbXNhX2Zjb3JfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mY3VlcV9kLCA2NTMzNX0sIC8vIF9fYnVpbHRpbl9tc2FfZmN1ZXFfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mY3VlcV93LCA2NTM1N30sIC8vIF9fYnVpbHRpbl9tc2FfZmN1ZXFfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mY3VsZV9kLCA2NTM3OX0sIC8vIF9fYnVpbHRpbl9tc2FfZmN1bGVfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mY3VsZV93LCA2NTQwMX0sIC8vIF9fYnVpbHRpbl9tc2FfZmN1bGVfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mY3VsdF9kLCA2NTQyM30sIC8vIF9fYnVpbHRpbl9tc2FfZmN1bHRfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mY3VsdF93LCA2NTQ0NX0sIC8vIF9fYnVpbHRpbl9tc2FfZmN1bHRfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mY3VuX2QsIDY1NDY3fSwgLy8gX19idWlsdGluX21zYV9mY3VuX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmN1bl93LCA2NTQ4OH0sIC8vIF9fYnVpbHRpbl9tc2FfZmN1bl93CisgICAgICB7SW50cmluc2ljOjptaXBzX2ZjdW5lX2QsIDY1NTA5fSwgLy8gX19idWlsdGluX21zYV9mY3VuZV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2ZjdW5lX3csIDY1NTMxfSwgLy8gX19idWlsdGluX21zYV9mY3VuZV93CisgICAgICB7SW50cmluc2ljOjptaXBzX2ZkaXZfZCwgNjU1NTN9LCAvLyBfX2J1aWx0aW5fbXNhX2ZkaXZfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mZGl2X3csIDY1NTc0fSwgLy8gX19idWlsdGluX21zYV9mZGl2X3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmV4ZG9faCwgNjU1OTV9LCAvLyBfX2J1aWx0aW5fbXNhX2ZleGRvX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmV4ZG9fdywgNjU2MTd9LCAvLyBfX2J1aWx0aW5fbXNhX2ZleGRvX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmV4cDJfZCwgNjU2Mzl9LCAvLyBfX2J1aWx0aW5fbXNhX2ZleHAyX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmV4cDJfdywgNjU2NjF9LCAvLyBfX2J1aWx0aW5fbXNhX2ZleHAyX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmV4dXBsX2QsIDY1NjgzfSwgLy8gX19idWlsdGluX21zYV9mZXh1cGxfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mZXh1cGxfdywgNjU3MDZ9LCAvLyBfX2J1aWx0aW5fbXNhX2ZleHVwbF93CisgICAgICB7SW50cmluc2ljOjptaXBzX2ZleHVwcl9kLCA2NTcyOX0sIC8vIF9fYnVpbHRpbl9tc2FfZmV4dXByX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmV4dXByX3csIDY1NzUyfSwgLy8gX19idWlsdGluX21zYV9mZXh1cHJfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mZmludF9zX2QsIDY1Nzc1fSwgLy8gX19idWlsdGluX21zYV9mZmludF9zX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmZpbnRfc193LCA2NTc5OX0sIC8vIF9fYnVpbHRpbl9tc2FfZmZpbnRfc193CisgICAgICB7SW50cmluc2ljOjptaXBzX2ZmaW50X3VfZCwgNjU4MjN9LCAvLyBfX2J1aWx0aW5fbXNhX2ZmaW50X3VfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mZmludF91X3csIDY1ODQ3fSwgLy8gX19idWlsdGluX21zYV9mZmludF91X3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmZxbF9kLCA2NTg3MX0sIC8vIF9fYnVpbHRpbl9tc2FfZmZxbF9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2ZmcWxfdywgNjU4OTJ9LCAvLyBfX2J1aWx0aW5fbXNhX2ZmcWxfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mZnFyX2QsIDY1OTEzfSwgLy8gX19idWlsdGluX21zYV9mZnFyX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmZxcl93LCA2NTkzNH0sIC8vIF9fYnVpbHRpbl9tc2FfZmZxcl93CisgICAgICB7SW50cmluc2ljOjptaXBzX2ZpbGxfYiwgNjU5NTV9LCAvLyBfX2J1aWx0aW5fbXNhX2ZpbGxfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19maWxsX2QsIDY1OTc2fSwgLy8gX19idWlsdGluX21zYV9maWxsX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZmlsbF9oLCA2NTk5N30sIC8vIF9fYnVpbHRpbl9tc2FfZmlsbF9oCisgICAgICB7SW50cmluc2ljOjptaXBzX2ZpbGxfdywgNjYwMTh9LCAvLyBfX2J1aWx0aW5fbXNhX2ZpbGxfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mbG9nMl9kLCA2NjAzOX0sIC8vIF9fYnVpbHRpbl9tc2FfZmxvZzJfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mbG9nMl93LCA2NjA2MX0sIC8vIF9fYnVpbHRpbl9tc2FfZmxvZzJfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mbWFkZF9kLCA2NjA4M30sIC8vIF9fYnVpbHRpbl9tc2FfZm1hZGRfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mbWFkZF93LCA2NjEwNX0sIC8vIF9fYnVpbHRpbl9tc2FfZm1hZGRfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mbWF4X2FfZCwgNjYxMjd9LCAvLyBfX2J1aWx0aW5fbXNhX2ZtYXhfYV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2ZtYXhfYV93LCA2NjE1MH0sIC8vIF9fYnVpbHRpbl9tc2FfZm1heF9hX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZm1heF9kLCA2NjE3M30sIC8vIF9fYnVpbHRpbl9tc2FfZm1heF9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2ZtYXhfdywgNjYxOTR9LCAvLyBfX2J1aWx0aW5fbXNhX2ZtYXhfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mbWluX2FfZCwgNjYyMTV9LCAvLyBfX2J1aWx0aW5fbXNhX2ZtaW5fYV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2ZtaW5fYV93LCA2NjIzOH0sIC8vIF9fYnVpbHRpbl9tc2FfZm1pbl9hX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZm1pbl9kLCA2NjI2MX0sIC8vIF9fYnVpbHRpbl9tc2FfZm1pbl9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2ZtaW5fdywgNjYyODJ9LCAvLyBfX2J1aWx0aW5fbXNhX2ZtaW5fdworICAgICAge0ludHJpbnNpYzo6bWlwc19mbXN1Yl9kLCA2NjMwM30sIC8vIF9fYnVpbHRpbl9tc2FfZm1zdWJfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mbXN1Yl93LCA2NjMyNX0sIC8vIF9fYnVpbHRpbl9tc2FfZm1zdWJfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mbXVsX2QsIDY2MzQ3fSwgLy8gX19idWlsdGluX21zYV9mbXVsX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZm11bF93LCA2NjM2OH0sIC8vIF9fYnVpbHRpbl9tc2FfZm11bF93CisgICAgICB7SW50cmluc2ljOjptaXBzX2ZyY3BfZCwgNjYzODl9LCAvLyBfX2J1aWx0aW5fbXNhX2ZyY3BfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mcmNwX3csIDY2NDEwfSwgLy8gX19idWlsdGluX21zYV9mcmNwX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnJpbnRfZCwgNjY0MzF9LCAvLyBfX2J1aWx0aW5fbXNhX2ZyaW50X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnJpbnRfdywgNjY0NTN9LCAvLyBfX2J1aWx0aW5fbXNhX2ZyaW50X3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnJzcXJ0X2QsIDY2NDc1fSwgLy8gX19idWlsdGluX21zYV9mcnNxcnRfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mcnNxcnRfdywgNjY0OTh9LCAvLyBfX2J1aWx0aW5fbXNhX2Zyc3FydF93CisgICAgICB7SW50cmluc2ljOjptaXBzX2ZzYWZfZCwgNjY1MjF9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzYWZfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mc2FmX3csIDY2NTQyfSwgLy8gX19idWlsdGluX21zYV9mc2FmX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnNlcV9kLCA2NjU2M30sIC8vIF9fYnVpbHRpbl9tc2FfZnNlcV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2ZzZXFfdywgNjY1ODR9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzZXFfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mc2xlX2QsIDY2NjA1fSwgLy8gX19idWlsdGluX21zYV9mc2xlX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnNsZV93LCA2NjYyNn0sIC8vIF9fYnVpbHRpbl9tc2FfZnNsZV93CisgICAgICB7SW50cmluc2ljOjptaXBzX2ZzbHRfZCwgNjY2NDd9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzbHRfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mc2x0X3csIDY2NjY4fSwgLy8gX19idWlsdGluX21zYV9mc2x0X3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnNuZV9kLCA2NjY4OX0sIC8vIF9fYnVpbHRpbl9tc2FfZnNuZV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2ZzbmVfdywgNjY3MTB9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzbmVfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mc29yX2QsIDY2NzMxfSwgLy8gX19idWlsdGluX21zYV9mc29yX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnNvcl93LCA2Njc1Mn0sIC8vIF9fYnVpbHRpbl9tc2FfZnNvcl93CisgICAgICB7SW50cmluc2ljOjptaXBzX2ZzcXJ0X2QsIDY2NzczfSwgLy8gX19idWlsdGluX21zYV9mc3FydF9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2ZzcXJ0X3csIDY2Nzk1fSwgLy8gX19idWlsdGluX21zYV9mc3FydF93CisgICAgICB7SW50cmluc2ljOjptaXBzX2ZzdWJfZCwgNjY4MTd9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdWJfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mc3ViX3csIDY2ODM4fSwgLy8gX19idWlsdGluX21zYV9mc3ViX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnN1ZXFfZCwgNjY4NTl9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdWVxX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnN1ZXFfdywgNjY4ODF9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdWVxX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnN1bGVfZCwgNjY5MDN9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdWxlX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnN1bGVfdywgNjY5MjV9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdWxlX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnN1bHRfZCwgNjY5NDd9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdWx0X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnN1bHRfdywgNjY5Njl9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdWx0X3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnN1bl9kLCA2Njk5MX0sIC8vIF9fYnVpbHRpbl9tc2FfZnN1bl9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2ZzdW5fdywgNjcwMTJ9LCAvLyBfX2J1aWx0aW5fbXNhX2ZzdW5fdworICAgICAge0ludHJpbnNpYzo6bWlwc19mc3VuZV9kLCA2NzAzM30sIC8vIF9fYnVpbHRpbl9tc2FfZnN1bmVfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mc3VuZV93LCA2NzA1NX0sIC8vIF9fYnVpbHRpbl9tc2FfZnN1bmVfdworICAgICAge0ludHJpbnNpYzo6bWlwc19mdGludF9zX2QsIDY3MDc3fSwgLy8gX19idWlsdGluX21zYV9mdGludF9zX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnRpbnRfc193LCA2NzEwMX0sIC8vIF9fYnVpbHRpbl9tc2FfZnRpbnRfc193CisgICAgICB7SW50cmluc2ljOjptaXBzX2Z0aW50X3VfZCwgNjcxMjV9LCAvLyBfX2J1aWx0aW5fbXNhX2Z0aW50X3VfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19mdGludF91X3csIDY3MTQ5fSwgLy8gX19idWlsdGluX21zYV9mdGludF91X3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfZnRxX2gsIDY3MTczfSwgLy8gX19idWlsdGluX21zYV9mdHFfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19mdHFfdywgNjcxOTN9LCAvLyBfX2J1aWx0aW5fbXNhX2Z0cV93CisgICAgICB7SW50cmluc2ljOjptaXBzX2Z0cnVuY19zX2QsIDY3MjEzfSwgLy8gX19idWlsdGluX21zYV9mdHJ1bmNfc19kCisgICAgICB7SW50cmluc2ljOjptaXBzX2Z0cnVuY19zX3csIDY3MjM4fSwgLy8gX19idWlsdGluX21zYV9mdHJ1bmNfc193CisgICAgICB7SW50cmluc2ljOjptaXBzX2Z0cnVuY191X2QsIDY3MjYzfSwgLy8gX19idWlsdGluX21zYV9mdHJ1bmNfdV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2Z0cnVuY191X3csIDY3Mjg4fSwgLy8gX19idWlsdGluX21zYV9mdHJ1bmNfdV93CisgICAgICB7SW50cmluc2ljOjptaXBzX2hhZGRfc19kLCA2NzMxM30sIC8vIF9fYnVpbHRpbl9tc2FfaGFkZF9zX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaGFkZF9zX2gsIDY3MzM2fSwgLy8gX19idWlsdGluX21zYV9oYWRkX3NfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19oYWRkX3NfdywgNjczNTl9LCAvLyBfX2J1aWx0aW5fbXNhX2hhZGRfc193CisgICAgICB7SW50cmluc2ljOjptaXBzX2hhZGRfdV9kLCA2NzM4Mn0sIC8vIF9fYnVpbHRpbl9tc2FfaGFkZF91X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaGFkZF91X2gsIDY3NDA1fSwgLy8gX19idWlsdGluX21zYV9oYWRkX3VfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19oYWRkX3VfdywgNjc0Mjh9LCAvLyBfX2J1aWx0aW5fbXNhX2hhZGRfdV93CisgICAgICB7SW50cmluc2ljOjptaXBzX2hzdWJfc19kLCA2NzQ1MX0sIC8vIF9fYnVpbHRpbl9tc2FfaHN1Yl9zX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaHN1Yl9zX2gsIDY3NDc0fSwgLy8gX19idWlsdGluX21zYV9oc3ViX3NfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19oc3ViX3NfdywgNjc0OTd9LCAvLyBfX2J1aWx0aW5fbXNhX2hzdWJfc193CisgICAgICB7SW50cmluc2ljOjptaXBzX2hzdWJfdV9kLCA2NzUyMH0sIC8vIF9fYnVpbHRpbl9tc2FfaHN1Yl91X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaHN1Yl91X2gsIDY3NTQzfSwgLy8gX19idWlsdGluX21zYV9oc3ViX3VfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19oc3ViX3VfdywgNjc1NjZ9LCAvLyBfX2J1aWx0aW5fbXNhX2hzdWJfdV93CisgICAgICB7SW50cmluc2ljOjptaXBzX2lsdmV2X2IsIDY3NTg5fSwgLy8gX19idWlsdGluX21zYV9pbHZldl9iCisgICAgICB7SW50cmluc2ljOjptaXBzX2lsdmV2X2QsIDY3NjExfSwgLy8gX19idWlsdGluX21zYV9pbHZldl9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2lsdmV2X2gsIDY3NjMzfSwgLy8gX19idWlsdGluX21zYV9pbHZldl9oCisgICAgICB7SW50cmluc2ljOjptaXBzX2lsdmV2X3csIDY3NjU1fSwgLy8gX19idWlsdGluX21zYV9pbHZldl93CisgICAgICB7SW50cmluc2ljOjptaXBzX2lsdmxfYiwgNjc2Nzd9LCAvLyBfX2J1aWx0aW5fbXNhX2lsdmxfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19pbHZsX2QsIDY3Njk4fSwgLy8gX19idWlsdGluX21zYV9pbHZsX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaWx2bF9oLCA2NzcxOX0sIC8vIF9fYnVpbHRpbl9tc2FfaWx2bF9oCisgICAgICB7SW50cmluc2ljOjptaXBzX2lsdmxfdywgNjc3NDB9LCAvLyBfX2J1aWx0aW5fbXNhX2lsdmxfdworICAgICAge0ludHJpbnNpYzo6bWlwc19pbHZvZF9iLCA2Nzc2MX0sIC8vIF9fYnVpbHRpbl9tc2FfaWx2b2RfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19pbHZvZF9kLCA2Nzc4M30sIC8vIF9fYnVpbHRpbl9tc2FfaWx2b2RfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19pbHZvZF9oLCA2NzgwNX0sIC8vIF9fYnVpbHRpbl9tc2FfaWx2b2RfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19pbHZvZF93LCA2NzgyN30sIC8vIF9fYnVpbHRpbl9tc2FfaWx2b2RfdworICAgICAge0ludHJpbnNpYzo6bWlwc19pbHZyX2IsIDY3ODQ5fSwgLy8gX19idWlsdGluX21zYV9pbHZyX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaWx2cl9kLCA2Nzg3MH0sIC8vIF9fYnVpbHRpbl9tc2FfaWx2cl9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2lsdnJfaCwgNjc4OTF9LCAvLyBfX2J1aWx0aW5fbXNhX2lsdnJfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19pbHZyX3csIDY3OTEyfSwgLy8gX19idWlsdGluX21zYV9pbHZyX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaW5zZXJ0X2IsIDY3OTMzfSwgLy8gX19idWlsdGluX21zYV9pbnNlcnRfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19pbnNlcnRfZCwgNjc5NTZ9LCAvLyBfX2J1aWx0aW5fbXNhX2luc2VydF9kCisgICAgICB7SW50cmluc2ljOjptaXBzX2luc2VydF9oLCA2Nzk3OX0sIC8vIF9fYnVpbHRpbl9tc2FfaW5zZXJ0X2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfaW5zZXJ0X3csIDY4MDAyfSwgLy8gX19idWlsdGluX21zYV9pbnNlcnRfdworICAgICAge0ludHJpbnNpYzo6bWlwc19pbnN2ZV9iLCA2ODA0NX0sIC8vIF9fYnVpbHRpbl9tc2FfaW5zdmVfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19pbnN2ZV9kLCA2ODA2N30sIC8vIF9fYnVpbHRpbl9tc2FfaW5zdmVfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19pbnN2ZV9oLCA2ODA4OX0sIC8vIF9fYnVpbHRpbl9tc2FfaW5zdmVfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19pbnN2ZV93LCA2ODExMX0sIC8vIF9fYnVpbHRpbl9tc2FfaW5zdmVfdworICAgICAge0ludHJpbnNpYzo6bWlwc19sZF9iLCA2ODE1M30sIC8vIF9fYnVpbHRpbl9tc2FfbGRfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19sZF9kLCA2ODE3Mn0sIC8vIF9fYnVpbHRpbl9tc2FfbGRfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19sZF9oLCA2ODE5MX0sIC8vIF9fYnVpbHRpbl9tc2FfbGRfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19sZF93LCA2ODIxMH0sIC8vIF9fYnVpbHRpbl9tc2FfbGRfdworICAgICAge0ludHJpbnNpYzo6bWlwc19sZGlfYiwgNjgyMjl9LCAvLyBfX2J1aWx0aW5fbXNhX2xkaV9iCisgICAgICB7SW50cmluc2ljOjptaXBzX2xkaV9kLCA2ODI0OX0sIC8vIF9fYnVpbHRpbl9tc2FfbGRpX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbGRpX2gsIDY4MjY5fSwgLy8gX19idWlsdGluX21zYV9sZGlfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19sZGlfdywgNjgyODl9LCAvLyBfX2J1aWx0aW5fbXNhX2xkaV93CisgICAgICB7SW50cmluc2ljOjptaXBzX21hZGRfcV9oLCA2ODM4Nn0sIC8vIF9fYnVpbHRpbl9tc2FfbWFkZF9xX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWFkZF9xX3csIDY4NDA5fSwgLy8gX19idWlsdGluX21zYV9tYWRkX3FfdworICAgICAge0ludHJpbnNpYzo6bWlwc19tYWRkcl9xX2gsIDY4NDMyfSwgLy8gX19idWlsdGluX21zYV9tYWRkcl9xX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWFkZHJfcV93LCA2ODQ1Nn0sIC8vIF9fYnVpbHRpbl9tc2FfbWFkZHJfcV93CisgICAgICB7SW50cmluc2ljOjptaXBzX21hZGR2X2IsIDY4NTAxfSwgLy8gX19idWlsdGluX21zYV9tYWRkdl9iCisgICAgICB7SW50cmluc2ljOjptaXBzX21hZGR2X2QsIDY4NTIzfSwgLy8gX19idWlsdGluX21zYV9tYWRkdl9kCisgICAgICB7SW50cmluc2ljOjptaXBzX21hZGR2X2gsIDY4NTQ1fSwgLy8gX19idWlsdGluX21zYV9tYWRkdl9oCisgICAgICB7SW50cmluc2ljOjptaXBzX21hZGR2X3csIDY4NTY3fSwgLy8gX19idWlsdGluX21zYV9tYWRkdl93CisgICAgICB7SW50cmluc2ljOjptaXBzX21heF9hX2IsIDY4Njk5fSwgLy8gX19idWlsdGluX21zYV9tYXhfYV9iCisgICAgICB7SW50cmluc2ljOjptaXBzX21heF9hX2QsIDY4NzIxfSwgLy8gX19idWlsdGluX21zYV9tYXhfYV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX21heF9hX2gsIDY4NzQzfSwgLy8gX19idWlsdGluX21zYV9tYXhfYV9oCisgICAgICB7SW50cmluc2ljOjptaXBzX21heF9hX3csIDY4NzY1fSwgLy8gX19idWlsdGluX21zYV9tYXhfYV93CisgICAgICB7SW50cmluc2ljOjptaXBzX21heF9zX2IsIDY4Nzg3fSwgLy8gX19idWlsdGluX21zYV9tYXhfc19iCisgICAgICB7SW50cmluc2ljOjptaXBzX21heF9zX2QsIDY4ODA5fSwgLy8gX19idWlsdGluX21zYV9tYXhfc19kCisgICAgICB7SW50cmluc2ljOjptaXBzX21heF9zX2gsIDY4ODMxfSwgLy8gX19idWlsdGluX21zYV9tYXhfc19oCisgICAgICB7SW50cmluc2ljOjptaXBzX21heF9zX3csIDY4ODUzfSwgLy8gX19idWlsdGluX21zYV9tYXhfc193CisgICAgICB7SW50cmluc2ljOjptaXBzX21heF91X2IsIDY4ODc1fSwgLy8gX19idWlsdGluX21zYV9tYXhfdV9iCisgICAgICB7SW50cmluc2ljOjptaXBzX21heF91X2QsIDY4ODk3fSwgLy8gX19idWlsdGluX21zYV9tYXhfdV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX21heF91X2gsIDY4OTE5fSwgLy8gX19idWlsdGluX21zYV9tYXhfdV9oCisgICAgICB7SW50cmluc2ljOjptaXBzX21heF91X3csIDY4OTQxfSwgLy8gX19idWlsdGluX21zYV9tYXhfdV93CisgICAgICB7SW50cmluc2ljOjptaXBzX21heGlfc19iLCA2ODk2M30sIC8vIF9fYnVpbHRpbl9tc2FfbWF4aV9zX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWF4aV9zX2QsIDY4OTg2fSwgLy8gX19idWlsdGluX21zYV9tYXhpX3NfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19tYXhpX3NfaCwgNjkwMDl9LCAvLyBfX2J1aWx0aW5fbXNhX21heGlfc19oCisgICAgICB7SW50cmluc2ljOjptaXBzX21heGlfc193LCA2OTAzMn0sIC8vIF9fYnVpbHRpbl9tc2FfbWF4aV9zX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWF4aV91X2IsIDY5MDU1fSwgLy8gX19idWlsdGluX21zYV9tYXhpX3VfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19tYXhpX3VfZCwgNjkwNzh9LCAvLyBfX2J1aWx0aW5fbXNhX21heGlfdV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX21heGlfdV9oLCA2OTEwMX0sIC8vIF9fYnVpbHRpbl9tc2FfbWF4aV91X2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWF4aV91X3csIDY5MTI0fSwgLy8gX19idWlsdGluX21zYV9tYXhpX3VfdworICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fYV9iLCA2OTE0N30sIC8vIF9fYnVpbHRpbl9tc2FfbWluX2FfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fYV9kLCA2OTE2OX0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX2FfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fYV9oLCA2OTE5MX0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX2FfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fYV93LCA2OTIxM30sIC8vIF9fYnVpbHRpbl9tc2FfbWluX2FfdworICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fc19iLCA2OTIzNX0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3NfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fc19kLCA2OTI1N30sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3NfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fc19oLCA2OTI3OX0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3NfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fc193LCA2OTMwMX0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3NfdworICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fdV9iLCA2OTMyM30sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3VfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fdV9kLCA2OTM0NX0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3VfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fdV9oLCA2OTM2N30sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3VfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19taW5fdV93LCA2OTM4OX0sIC8vIF9fYnVpbHRpbl9tc2FfbWluX3VfdworICAgICAge0ludHJpbnNpYzo6bWlwc19taW5pX3NfYiwgNjk0MTF9LCAvLyBfX2J1aWx0aW5fbXNhX21pbmlfc19iCisgICAgICB7SW50cmluc2ljOjptaXBzX21pbmlfc19kLCA2OTQzNH0sIC8vIF9fYnVpbHRpbl9tc2FfbWluaV9zX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWluaV9zX2gsIDY5NDU3fSwgLy8gX19idWlsdGluX21zYV9taW5pX3NfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19taW5pX3NfdywgNjk0ODB9LCAvLyBfX2J1aWx0aW5fbXNhX21pbmlfc193CisgICAgICB7SW50cmluc2ljOjptaXBzX21pbmlfdV9iLCA2OTUwM30sIC8vIF9fYnVpbHRpbl9tc2FfbWluaV91X2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbWluaV91X2QsIDY5NTI2fSwgLy8gX19idWlsdGluX21zYV9taW5pX3VfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19taW5pX3VfaCwgNjk1NDl9LCAvLyBfX2J1aWx0aW5fbXNhX21pbmlfdV9oCisgICAgICB7SW50cmluc2ljOjptaXBzX21pbmlfdV93LCA2OTU3Mn0sIC8vIF9fYnVpbHRpbl9tc2FfbWluaV91X3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3NfYiwgNjk1OTV9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF9zX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3NfZCwgNjk2MTd9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF9zX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3NfaCwgNjk2Mzl9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF9zX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3NfdywgNjk2NjF9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF9zX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3VfYiwgNjk2ODN9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF91X2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3VfZCwgNjk3MDV9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF91X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3VfaCwgNjk3Mjd9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF91X2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW9kX3VfdywgNjk3NDl9LCAvLyBfX2J1aWx0aW5fbXNhX21vZF91X3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbW92ZV92LCA2OTc5M30sIC8vIF9fYnVpbHRpbl9tc2FfbW92ZV92CisgICAgICB7SW50cmluc2ljOjptaXBzX21zdWJfcV9oLCA2OTgzNH0sIC8vIF9fYnVpbHRpbl9tc2FfbXN1Yl9xX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXN1Yl9xX3csIDY5ODU3fSwgLy8gX19idWlsdGluX21zYV9tc3ViX3FfdworICAgICAge0ludHJpbnNpYzo6bWlwc19tc3Vicl9xX2gsIDY5ODgwfSwgLy8gX19idWlsdGluX21zYV9tc3Vicl9xX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXN1YnJfcV93LCA2OTkwNH0sIC8vIF9fYnVpbHRpbl9tc2FfbXN1YnJfcV93CisgICAgICB7SW50cmluc2ljOjptaXBzX21zdWJ2X2IsIDY5OTQ5fSwgLy8gX19idWlsdGluX21zYV9tc3Vidl9iCisgICAgICB7SW50cmluc2ljOjptaXBzX21zdWJ2X2QsIDY5OTcxfSwgLy8gX19idWlsdGluX21zYV9tc3Vidl9kCisgICAgICB7SW50cmluc2ljOjptaXBzX21zdWJ2X2gsIDY5OTkzfSwgLy8gX19idWlsdGluX21zYV9tc3Vidl9oCisgICAgICB7SW50cmluc2ljOjptaXBzX21zdWJ2X3csIDcwMDE1fSwgLy8gX19idWlsdGluX21zYV9tc3Vidl93CisgICAgICB7SW50cmluc2ljOjptaXBzX211bF9xX2gsIDcwMDgxfSwgLy8gX19idWlsdGluX21zYV9tdWxfcV9oCisgICAgICB7SW50cmluc2ljOjptaXBzX211bF9xX3csIDcwMTAzfSwgLy8gX19idWlsdGluX21zYV9tdWxfcV93CisgICAgICB7SW50cmluc2ljOjptaXBzX211bHJfcV9oLCA3MDM2N30sIC8vIF9fYnVpbHRpbl9tc2FfbXVscl9xX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXVscl9xX3csIDcwMzkwfSwgLy8gX19idWlsdGluX21zYV9tdWxyX3FfdworICAgICAge0ludHJpbnNpYzo6bWlwc19tdWx2X2IsIDcwNTA5fSwgLy8gX19idWlsdGluX21zYV9tdWx2X2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbXVsdl9kLCA3MDUzMH0sIC8vIF9fYnVpbHRpbl9tc2FfbXVsdl9kCisgICAgICB7SW50cmluc2ljOjptaXBzX211bHZfaCwgNzA1NTF9LCAvLyBfX2J1aWx0aW5fbXNhX211bHZfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19tdWx2X3csIDcwNTcyfSwgLy8gX19idWlsdGluX21zYV9tdWx2X3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbmxvY19iLCA3MDU5M30sIC8vIF9fYnVpbHRpbl9tc2FfbmxvY19iCisgICAgICB7SW50cmluc2ljOjptaXBzX25sb2NfZCwgNzA2MTR9LCAvLyBfX2J1aWx0aW5fbXNhX25sb2NfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19ubG9jX2gsIDcwNjM1fSwgLy8gX19idWlsdGluX21zYV9ubG9jX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbmxvY193LCA3MDY1Nn0sIC8vIF9fYnVpbHRpbl9tc2FfbmxvY193CisgICAgICB7SW50cmluc2ljOjptaXBzX25semNfYiwgNzA2Nzd9LCAvLyBfX2J1aWx0aW5fbXNhX25semNfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19ubHpjX2QsIDcwNjk4fSwgLy8gX19idWlsdGluX21zYV9ubHpjX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfbmx6Y19oLCA3MDcxOX0sIC8vIF9fYnVpbHRpbl9tc2Ffbmx6Y19oCisgICAgICB7SW50cmluc2ljOjptaXBzX25semNfdywgNzA3NDB9LCAvLyBfX2J1aWx0aW5fbXNhX25semNfdworICAgICAge0ludHJpbnNpYzo6bWlwc19ub3JfdiwgNzA3NjF9LCAvLyBfX2J1aWx0aW5fbXNhX25vcl92CisgICAgICB7SW50cmluc2ljOjptaXBzX25vcmlfYiwgNzA3ODF9LCAvLyBfX2J1aWx0aW5fbXNhX25vcmlfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19vcl92LCA3MDgwMn0sIC8vIF9fYnVpbHRpbl9tc2Ffb3JfdgorICAgICAge0ludHJpbnNpYzo6bWlwc19vcmlfYiwgNzA4MjF9LCAvLyBfX2J1aWx0aW5fbXNhX29yaV9iCisgICAgICB7SW50cmluc2ljOjptaXBzX3Bja2V2X2IsIDcwODY2fSwgLy8gX19idWlsdGluX21zYV9wY2tldl9iCisgICAgICB7SW50cmluc2ljOjptaXBzX3Bja2V2X2QsIDcwODg4fSwgLy8gX19idWlsdGluX21zYV9wY2tldl9kCisgICAgICB7SW50cmluc2ljOjptaXBzX3Bja2V2X2gsIDcwOTEwfSwgLy8gX19idWlsdGluX21zYV9wY2tldl9oCisgICAgICB7SW50cmluc2ljOjptaXBzX3Bja2V2X3csIDcwOTMyfSwgLy8gX19idWlsdGluX21zYV9wY2tldl93CisgICAgICB7SW50cmluc2ljOjptaXBzX3Bja29kX2IsIDcwOTU0fSwgLy8gX19idWlsdGluX21zYV9wY2tvZF9iCisgICAgICB7SW50cmluc2ljOjptaXBzX3Bja29kX2QsIDcwOTc2fSwgLy8gX19idWlsdGluX21zYV9wY2tvZF9kCisgICAgICB7SW50cmluc2ljOjptaXBzX3Bja29kX2gsIDcwOTk4fSwgLy8gX19idWlsdGluX21zYV9wY2tvZF9oCisgICAgICB7SW50cmluc2ljOjptaXBzX3Bja29kX3csIDcxMDIwfSwgLy8gX19idWlsdGluX21zYV9wY2tvZF93CisgICAgICB7SW50cmluc2ljOjptaXBzX3BjbnRfYiwgNzEwNDJ9LCAvLyBfX2J1aWx0aW5fbXNhX3BjbnRfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19wY250X2QsIDcxMDYzfSwgLy8gX19idWlsdGluX21zYV9wY250X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfcGNudF9oLCA3MTA4NH0sIC8vIF9fYnVpbHRpbl9tc2FfcGNudF9oCisgICAgICB7SW50cmluc2ljOjptaXBzX3BjbnRfdywgNzExMDV9LCAvLyBfX2J1aWx0aW5fbXNhX3BjbnRfdworICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfc19iLCA3MTc4OX0sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3NfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfc19kLCA3MTgxMX0sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3NfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfc19oLCA3MTgzM30sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3NfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfc193LCA3MTg1NX0sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3NfdworICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfdV9iLCA3MTg3N30sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3VfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfdV9kLCA3MTg5OX0sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3VfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfdV9oLCA3MTkyMX0sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3VfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19zYXRfdV93LCA3MTk0M30sIC8vIF9fYnVpbHRpbl9tc2Ffc2F0X3VfdworICAgICAge0ludHJpbnNpYzo6bWlwc19zaGZfYiwgNzE5NjV9LCAvLyBfX2J1aWx0aW5fbXNhX3NoZl9iCisgICAgICB7SW50cmluc2ljOjptaXBzX3NoZl9oLCA3MTk4NX0sIC8vIF9fYnVpbHRpbl9tc2Ffc2hmX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2hmX3csIDcyMDA1fSwgLy8gX19idWlsdGluX21zYV9zaGZfdworICAgICAge0ludHJpbnNpYzo6bWlwc19zbGRfYiwgNzIzMDd9LCAvLyBfX2J1aWx0aW5fbXNhX3NsZF9iCisgICAgICB7SW50cmluc2ljOjptaXBzX3NsZF9kLCA3MjMyN30sIC8vIF9fYnVpbHRpbl9tc2Ffc2xkX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2xkX2gsIDcyMzQ3fSwgLy8gX19idWlsdGluX21zYV9zbGRfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19zbGRfdywgNzIzNjd9LCAvLyBfX2J1aWx0aW5fbXNhX3NsZF93CisgICAgICB7SW50cmluc2ljOjptaXBzX3NsZGlfYiwgNzIzODd9LCAvLyBfX2J1aWx0aW5fbXNhX3NsZGlfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19zbGRpX2QsIDcyNDA4fSwgLy8gX19idWlsdGluX21zYV9zbGRpX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2xkaV9oLCA3MjQyOX0sIC8vIF9fYnVpbHRpbl9tc2Ffc2xkaV9oCisgICAgICB7SW50cmluc2ljOjptaXBzX3NsZGlfdywgNzI0NTB9LCAvLyBfX2J1aWx0aW5fbXNhX3NsZGlfdworICAgICAge0ludHJpbnNpYzo6bWlwc19zbGxfYiwgNzI0NzF9LCAvLyBfX2J1aWx0aW5fbXNhX3NsbF9iCisgICAgICB7SW50cmluc2ljOjptaXBzX3NsbF9kLCA3MjQ5MX0sIC8vIF9fYnVpbHRpbl9tc2Ffc2xsX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2xsX2gsIDcyNTExfSwgLy8gX19idWlsdGluX21zYV9zbGxfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19zbGxfdywgNzI1MzF9LCAvLyBfX2J1aWx0aW5fbXNhX3NsbF93CisgICAgICB7SW50cmluc2ljOjptaXBzX3NsbGlfYiwgNzI1NTF9LCAvLyBfX2J1aWx0aW5fbXNhX3NsbGlfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19zbGxpX2QsIDcyNTcyfSwgLy8gX19idWlsdGluX21zYV9zbGxpX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc2xsaV9oLCA3MjU5M30sIC8vIF9fYnVpbHRpbl9tc2Ffc2xsaV9oCisgICAgICB7SW50cmluc2ljOjptaXBzX3NsbGlfdywgNzI2MTR9LCAvLyBfX2J1aWx0aW5fbXNhX3NsbGlfdworICAgICAge0ludHJpbnNpYzo6bWlwc19zcGxhdF9iLCA3MjYzNX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3BsYXRfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19zcGxhdF9kLCA3MjY1N30sIC8vIF9fYnVpbHRpbl9tc2Ffc3BsYXRfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19zcGxhdF9oLCA3MjY3OX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3BsYXRfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19zcGxhdF93LCA3MjcwMX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3BsYXRfdworICAgICAge0ludHJpbnNpYzo6bWlwc19zcGxhdGlfYiwgNzI3MjN9LCAvLyBfX2J1aWx0aW5fbXNhX3NwbGF0aV9iCisgICAgICB7SW50cmluc2ljOjptaXBzX3NwbGF0aV9kLCA3Mjc0Nn0sIC8vIF9fYnVpbHRpbl9tc2Ffc3BsYXRpX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3BsYXRpX2gsIDcyNzY5fSwgLy8gX19idWlsdGluX21zYV9zcGxhdGlfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19zcGxhdGlfdywgNzI3OTJ9LCAvLyBfX2J1aWx0aW5fbXNhX3NwbGF0aV93CisgICAgICB7SW50cmluc2ljOjptaXBzX3NyYV9iLCA3MjgxNX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JhX2QsIDcyODM1fSwgLy8gX19idWlsdGluX21zYV9zcmFfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19zcmFfaCwgNzI4NTV9LCAvLyBfX2J1aWx0aW5fbXNhX3NyYV9oCisgICAgICB7SW50cmluc2ljOjptaXBzX3NyYV93LCA3Mjg3NX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JhaV9iLCA3Mjg5NX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhaV9iCisgICAgICB7SW50cmluc2ljOjptaXBzX3NyYWlfZCwgNzI5MTZ9LCAvLyBfX2J1aWx0aW5fbXNhX3NyYWlfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19zcmFpX2gsIDcyOTM3fSwgLy8gX19idWlsdGluX21zYV9zcmFpX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JhaV93LCA3Mjk1OH0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhaV93CisgICAgICB7SW50cmluc2ljOjptaXBzX3NyYXJfYiwgNzI5Nzl9LCAvLyBfX2J1aWx0aW5fbXNhX3NyYXJfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19zcmFyX2QsIDczMDAwfSwgLy8gX19idWlsdGluX21zYV9zcmFyX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3Jhcl9oLCA3MzAyMX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3Jhcl9oCisgICAgICB7SW50cmluc2ljOjptaXBzX3NyYXJfdywgNzMwNDJ9LCAvLyBfX2J1aWx0aW5fbXNhX3NyYXJfdworICAgICAge0ludHJpbnNpYzo6bWlwc19zcmFyaV9iLCA3MzA2M30sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhcmlfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19zcmFyaV9kLCA3MzA4NX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhcmlfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19zcmFyaV9oLCA3MzEwN30sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhcmlfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19zcmFyaV93LCA3MzEyOX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JhcmlfdworICAgICAge0ludHJpbnNpYzo6bWlwc19zcmxfYiwgNzMxNTF9LCAvLyBfX2J1aWx0aW5fbXNhX3NybF9iCisgICAgICB7SW50cmluc2ljOjptaXBzX3NybF9kLCA3MzE3MX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3JsX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JsX2gsIDczMTkxfSwgLy8gX19idWlsdGluX21zYV9zcmxfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19zcmxfdywgNzMyMTF9LCAvLyBfX2J1aWx0aW5fbXNhX3NybF93CisgICAgICB7SW50cmluc2ljOjptaXBzX3NybGlfYiwgNzMyMzF9LCAvLyBfX2J1aWx0aW5fbXNhX3NybGlfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19zcmxpX2QsIDczMjUyfSwgLy8gX19idWlsdGluX21zYV9zcmxpX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JsaV9oLCA3MzI3M30sIC8vIF9fYnVpbHRpbl9tc2Ffc3JsaV9oCisgICAgICB7SW50cmluc2ljOjptaXBzX3NybGlfdywgNzMyOTR9LCAvLyBfX2J1aWx0aW5fbXNhX3NybGlfdworICAgICAge0ludHJpbnNpYzo6bWlwc19zcmxyX2IsIDczMzE1fSwgLy8gX19idWlsdGluX21zYV9zcmxyX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3Jscl9kLCA3MzMzNn0sIC8vIF9fYnVpbHRpbl9tc2Ffc3Jscl9kCisgICAgICB7SW50cmluc2ljOjptaXBzX3NybHJfaCwgNzMzNTd9LCAvLyBfX2J1aWx0aW5fbXNhX3NybHJfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19zcmxyX3csIDczMzc4fSwgLy8gX19idWlsdGluX21zYV9zcmxyX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JscmlfYiwgNzMzOTl9LCAvLyBfX2J1aWx0aW5fbXNhX3NybHJpX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JscmlfZCwgNzM0MjF9LCAvLyBfX2J1aWx0aW5fbXNhX3NybHJpX2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JscmlfaCwgNzM0NDN9LCAvLyBfX2J1aWx0aW5fbXNhX3NybHJpX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3JscmlfdywgNzM0NjV9LCAvLyBfX2J1aWx0aW5fbXNhX3NybHJpX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3RfYiwgNzM0ODd9LCAvLyBfX2J1aWx0aW5fbXNhX3N0X2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3RfZCwgNzM1MDZ9LCAvLyBfX2J1aWx0aW5fbXNhX3N0X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3RfaCwgNzM1MjV9LCAvLyBfX2J1aWx0aW5fbXNhX3N0X2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3RfdywgNzM1NDR9LCAvLyBfX2J1aWx0aW5fbXNhX3N0X3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3Vic19zX2IsIDczNzMzfSwgLy8gX19idWlsdGluX21zYV9zdWJzX3NfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJzX3NfZCwgNzM3NTZ9LCAvLyBfX2J1aWx0aW5fbXNhX3N1YnNfc19kCisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnNfc19oLCA3Mzc3OX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3Vic19zX2gKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3Vic19zX3csIDczODAyfSwgLy8gX19idWlsdGluX21zYV9zdWJzX3NfdworICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJzX3VfYiwgNzM4MjV9LCAvLyBfX2J1aWx0aW5fbXNhX3N1YnNfdV9iCisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnNfdV9kLCA3Mzg0OH0sIC8vIF9fYnVpbHRpbl9tc2Ffc3Vic191X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3Vic191X2gsIDczODcxfSwgLy8gX19idWlsdGluX21zYV9zdWJzX3VfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJzX3VfdywgNzM4OTR9LCAvLyBfX2J1aWx0aW5fbXNhX3N1YnNfdV93CisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1c191X2IsIDczOTE3fSwgLy8gX19idWlsdGluX21zYV9zdWJzdXNfdV9iCisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1c191X2QsIDczOTQyfSwgLy8gX19idWlsdGluX21zYV9zdWJzdXNfdV9kCisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1c191X2gsIDczOTY3fSwgLy8gX19idWlsdGluX21zYV9zdWJzdXNfdV9oCisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1c191X3csIDczOTkyfSwgLy8gX19idWlsdGluX21zYV9zdWJzdXNfdV93CisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1dV9zX2IsIDc0MDE3fSwgLy8gX19idWlsdGluX21zYV9zdWJzdXVfc19iCisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1dV9zX2QsIDc0MDQyfSwgLy8gX19idWlsdGluX21zYV9zdWJzdXVfc19kCisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1dV9zX2gsIDc0MDY3fSwgLy8gX19idWlsdGluX21zYV9zdWJzdXVfc19oCisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnN1dV9zX3csIDc0MDkyfSwgLy8gX19idWlsdGluX21zYV9zdWJzdXVfc193CisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnZfYiwgNzQyNjN9LCAvLyBfX2J1aWx0aW5fbXNhX3N1YnZfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJ2X2QsIDc0Mjg0fSwgLy8gX19idWlsdGluX21zYV9zdWJ2X2QKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfc3Vidl9oLCA3NDMwNX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3Vidl9oCisgICAgICB7SW50cmluc2ljOjptaXBzX3N1YnZfdywgNzQzMjZ9LCAvLyBfX2J1aWx0aW5fbXNhX3N1YnZfdworICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJ2aV9iLCA3NDM0N30sIC8vIF9fYnVpbHRpbl9tc2Ffc3VidmlfYgorICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJ2aV9kLCA3NDM2OX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3VidmlfZAorICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJ2aV9oLCA3NDM5MX0sIC8vIF9fYnVpbHRpbl9tc2Ffc3VidmlfaAorICAgICAge0ludHJpbnNpYzo6bWlwc19zdWJ2aV93LCA3NDQxM30sIC8vIF9fYnVpbHRpbl9tc2Ffc3VidmlfdworICAgICAge0ludHJpbnNpYzo6bWlwc192c2hmX2IsIDc0NDM1fSwgLy8gX19idWlsdGluX21zYV92c2hmX2IKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfdnNoZl9kLCA3NDQ1Nn0sIC8vIF9fYnVpbHRpbl9tc2FfdnNoZl9kCisgICAgICB7SW50cmluc2ljOjptaXBzX3ZzaGZfaCwgNzQ0Nzd9LCAvLyBfX2J1aWx0aW5fbXNhX3ZzaGZfaAorICAgICAge0ludHJpbnNpYzo6bWlwc192c2hmX3csIDc0NDk4fSwgLy8gX19idWlsdGluX21zYV92c2hmX3cKKyAgICAgIHtJbnRyaW5zaWM6Om1pcHNfeG9yX3YsIDc0NTQwfSwgLy8gX19idWlsdGluX21zYV94b3JfdgorICAgICAge0ludHJpbnNpYzo6bWlwc194b3JpX2IsIDc0NTYwfSwgLy8gX19idWlsdGluX21zYV94b3JpX2IKICAgICB9OwogICAgIGF1dG8gSSA9IHN0ZDo6bG93ZXJfYm91bmQoc3RkOjpiZWdpbihtaXBzTmFtZXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjplbmQobWlwc05hbWVzKSwKQEAgLTI3NDgyLDU2OCArMjczNzYsNTY4IEBACiAgIH0KICAgaWYgKFRhcmdldFByZWZpeCA9PSAibnZ2bSIpIHsKICAgICBzdGF0aWMgY29uc3QgQnVpbHRpbkVudHJ5IG52dm1OYW1lc1tdID0gewotICAgICAge0ludHJpbnNpYzo6bnZ2bV9hZGRfcm1fZCwgNzI5MjJ9LCAvLyBfX252dm1fYWRkX3JtX2QKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fYWRkX3JtX2YsIDcyOTM4fSwgLy8gX19udnZtX2FkZF9ybV9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX2FkZF9ybV9mdHpfZiwgNzI5NTR9LCAvLyBfX252dm1fYWRkX3JtX2Z0el9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX2FkZF9ybl9kLCA3Mjk3NH0sIC8vIF9fbnZ2bV9hZGRfcm5fZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9hZGRfcm5fZiwgNzI5OTB9LCAvLyBfX252dm1fYWRkX3JuX2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fYWRkX3JuX2Z0el9mLCA3MzAwNn0sIC8vIF9fbnZ2bV9hZGRfcm5fZnR6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fYWRkX3JwX2QsIDczMDI2fSwgLy8gX19udnZtX2FkZF9ycF9kCi0gICAgICB7SW50cmluc2ljOjpudnZtX2FkZF9ycF9mLCA3MzA0Mn0sIC8vIF9fbnZ2bV9hZGRfcnBfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9hZGRfcnBfZnR6X2YsIDczMDU4fSwgLy8gX19udnZtX2FkZF9ycF9mdHpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9hZGRfcnpfZCwgNzMwNzh9LCAvLyBfX252dm1fYWRkX3J6X2QKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fYWRkX3J6X2YsIDczMDk0fSwgLy8gX19udnZtX2FkZF9yel9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX2FkZF9yel9mdHpfZiwgNzMxMTB9LCAvLyBfX252dm1fYWRkX3J6X2Z0el9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX2JhcnJpZXIsIDczMTY3fSwgLy8gX19udnZtX2JhcgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9iYXJyaWVyMF9hbmQsIDczMjQ5fSwgLy8gX19udnZtX2JhcjBfYW5kCi0gICAgICB7SW50cmluc2ljOjpudnZtX2JhcnJpZXIwX29yLCA3MzI2NX0sIC8vIF9fbnZ2bV9iYXIwX29yCi0gICAgICB7SW50cmluc2ljOjpudnZtX2JhcnJpZXIwX3BvcGMsIDczMjgwfSwgLy8gX19udnZtX2JhcjBfcG9wYwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9iYXJyaWVyX24sIDczMTc4fSwgLy8gX19udnZtX2Jhcl9uCi0gICAgICB7SW50cmluc2ljOjpudnZtX2Jhcl9zeW5jLCA3MzEzMH0sIC8vIF9fbnZ2bV9iYXJfc3luYwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9iYXJfd2FycF9zeW5jLCA3MzE0Nn0sIC8vIF9fbnZ2bV9iYXJfd2FycF9zeW5jCi0gICAgICB7SW50cmluc2ljOjpudnZtX2JhcnJpZXJfc3luYywgNzMxOTF9LCAvLyBfX252dm1fYmFycmllcl9zeW5jCi0gICAgICB7SW50cmluc2ljOjpudnZtX2JhcnJpZXJfc3luY19jbnQsIDczMjExfSwgLy8gX19udnZtX2JhcnJpZXJfc3luY19jbnQKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fYml0Y2FzdF9kMmxsLCA3MzI5N30sIC8vIF9fbnZ2bV9iaXRjYXN0X2QybGwKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fYml0Y2FzdF9mMmksIDczMzE3fSwgLy8gX19udnZtX2JpdGNhc3RfZjJpCi0gICAgICB7SW50cmluc2ljOjpudnZtX2JpdGNhc3RfaTJmLCA3MzMzNn0sIC8vIF9fbnZ2bV9iaXRjYXN0X2kyZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9iaXRjYXN0X2xsMmQsIDczMzU1fSwgLy8gX19udnZtX2JpdGNhc3RfbGwyZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9jZWlsX2QsIDczMzc1fSwgLy8gX19udnZtX2NlaWxfZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9jZWlsX2YsIDczMzg5fSwgLy8gX19udnZtX2NlaWxfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9jZWlsX2Z0el9mLCA3MzQwM30sIC8vIF9fbnZ2bV9jZWlsX2Z0el9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX2Nvc19hcHByb3hfZiwgNzM0MjF9LCAvLyBfX252dm1fY29zX2FwcHJveF9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX2Nvc19hcHByb3hfZnR6X2YsIDczNDQxfSwgLy8gX19udnZtX2Nvc19hcHByb3hfZnR6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJmX3JtLCA3MzQ2NX0sIC8vIF9fbnZ2bV9kMmZfcm0KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJmX3JtX2Z0eiwgNzM0Nzl9LCAvLyBfX252dm1fZDJmX3JtX2Z0egotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmZfcm4sIDczNDk3fSwgLy8gX19udnZtX2QyZl9ybgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmZfcm5fZnR6LCA3MzUxMX0sIC8vIF9fbnZ2bV9kMmZfcm5fZnR6Ci0gICAgICB7SW50cmluc2ljOjpudnZtX2QyZl9ycCwgNzM1Mjl9LCAvLyBfX252dm1fZDJmX3JwCi0gICAgICB7SW50cmluc2ljOjpudnZtX2QyZl9ycF9mdHosIDczNTQzfSwgLy8gX19udnZtX2QyZl9ycF9mdHoKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJmX3J6LCA3MzU2MX0sIC8vIF9fbnZ2bV9kMmZfcnoKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJmX3J6X2Z0eiwgNzM1NzV9LCAvLyBfX252dm1fZDJmX3J6X2Z0egotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmlfaGksIDczNTkzfSwgLy8gX19udnZtX2QyaV9oaQotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmlfbG8sIDczNjA3fSwgLy8gX19udnZtX2QyaV9sbwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmlfcm0sIDczNjIxfSwgLy8gX19udnZtX2QyaV9ybQotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmlfcm4sIDczNjM1fSwgLy8gX19udnZtX2QyaV9ybgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmlfcnAsIDczNjQ5fSwgLy8gX19udnZtX2QyaV9ycAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmlfcnosIDczNjYzfSwgLy8gX19udnZtX2QyaV9yegotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmxsX3JtLCA3MzY3N30sIC8vIF9fbnZ2bV9kMmxsX3JtCi0gICAgICB7SW50cmluc2ljOjpudnZtX2QybGxfcm4sIDczNjkyfSwgLy8gX19udnZtX2QybGxfcm4KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJsbF9ycCwgNzM3MDd9LCAvLyBfX252dm1fZDJsbF9ycAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmxsX3J6LCA3MzcyMn0sIC8vIF9fbnZ2bV9kMmxsX3J6Ci0gICAgICB7SW50cmluc2ljOjpudnZtX2QydWlfcm0sIDczNzM3fSwgLy8gX19udnZtX2QydWlfcm0KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJ1aV9ybiwgNzM3NTJ9LCAvLyBfX252dm1fZDJ1aV9ybgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMnVpX3JwLCA3Mzc2N30sIC8vIF9fbnZ2bV9kMnVpX3JwCi0gICAgICB7SW50cmluc2ljOjpudnZtX2QydWlfcnosIDczNzgyfSwgLy8gX19udnZtX2QydWlfcnoKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJ1bGxfcm0sIDczNzk3fSwgLy8gX19udnZtX2QydWxsX3JtCi0gICAgICB7SW50cmluc2ljOjpudnZtX2QydWxsX3JuLCA3MzgxM30sIC8vIF9fbnZ2bV9kMnVsbF9ybgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMnVsbF9ycCwgNzM4Mjl9LCAvLyBfX252dm1fZDJ1bGxfcnAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJ1bGxfcnosIDczODQ1fSwgLy8gX19udnZtX2QydWxsX3J6Ci0gICAgICB7SW50cmluc2ljOjpudnZtX2Rpdl9hcHByb3hfZiwgNzM4NjF9LCAvLyBfX252dm1fZGl2X2FwcHJveF9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX2Rpdl9hcHByb3hfZnR6X2YsIDczODgxfSwgLy8gX19udnZtX2Rpdl9hcHByb3hfZnR6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZGl2X3JtX2QsIDczOTA1fSwgLy8gX19udnZtX2Rpdl9ybV9kCi0gICAgICB7SW50cmluc2ljOjpudnZtX2Rpdl9ybV9mLCA3MzkyMX0sIC8vIF9fbnZ2bV9kaXZfcm1fZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kaXZfcm1fZnR6X2YsIDczOTM3fSwgLy8gX19udnZtX2Rpdl9ybV9mdHpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kaXZfcm5fZCwgNzM5NTd9LCAvLyBfX252dm1fZGl2X3JuX2QKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZGl2X3JuX2YsIDczOTczfSwgLy8gX19udnZtX2Rpdl9ybl9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX2Rpdl9ybl9mdHpfZiwgNzM5ODl9LCAvLyBfX252dm1fZGl2X3JuX2Z0el9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX2Rpdl9ycF9kLCA3NDAwOX0sIC8vIF9fbnZ2bV9kaXZfcnBfZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kaXZfcnBfZiwgNzQwMjV9LCAvLyBfX252dm1fZGl2X3JwX2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZGl2X3JwX2Z0el9mLCA3NDA0MX0sIC8vIF9fbnZ2bV9kaXZfcnBfZnR6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZGl2X3J6X2QsIDc0MDYxfSwgLy8gX19udnZtX2Rpdl9yel9kCi0gICAgICB7SW50cmluc2ljOjpudnZtX2Rpdl9yel9mLCA3NDA3N30sIC8vIF9fbnZ2bV9kaXZfcnpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9kaXZfcnpfZnR6X2YsIDc0MDkzfSwgLy8gX19udnZtX2Rpdl9yel9mdHpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9leDJfYXBwcm94X2QsIDc0MTEzfSwgLy8gX19udnZtX2V4Ml9hcHByb3hfZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9leDJfYXBwcm94X2YsIDc0MTMzfSwgLy8gX19udnZtX2V4Ml9hcHByb3hfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9leDJfYXBwcm94X2Z0el9mLCA3NDE1M30sIC8vIF9fbnZ2bV9leDJfYXBwcm94X2Z0el9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX2YyaF9ybiwgNzQxNzd9LCAvLyBfX252dm1fZjJoX3JuCi0gICAgICB7SW50cmluc2ljOjpudnZtX2YyaF9ybl9mdHosIDc0MTkxfSwgLy8gX19udnZtX2YyaF9ybl9mdHoKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZjJpX3JtLCA3NDIwOX0sIC8vIF9fbnZ2bV9mMmlfcm0KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZjJpX3JtX2Z0eiwgNzQyMjN9LCAvLyBfX252dm1fZjJpX3JtX2Z0egotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMmlfcm4sIDc0MjQxfSwgLy8gX19udnZtX2YyaV9ybgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMmlfcm5fZnR6LCA3NDI1NX0sIC8vIF9fbnZ2bV9mMmlfcm5fZnR6Ci0gICAgICB7SW50cmluc2ljOjpudnZtX2YyaV9ycCwgNzQyNzN9LCAvLyBfX252dm1fZjJpX3JwCi0gICAgICB7SW50cmluc2ljOjpudnZtX2YyaV9ycF9mdHosIDc0Mjg3fSwgLy8gX19udnZtX2YyaV9ycF9mdHoKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZjJpX3J6LCA3NDMwNX0sIC8vIF9fbnZ2bV9mMmlfcnoKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZjJpX3J6X2Z0eiwgNzQzMTl9LCAvLyBfX252dm1fZjJpX3J6X2Z0egotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMmxsX3JtLCA3NDMzN30sIC8vIF9fbnZ2bV9mMmxsX3JtCi0gICAgICB7SW50cmluc2ljOjpudnZtX2YybGxfcm1fZnR6LCA3NDM1Mn0sIC8vIF9fbnZ2bV9mMmxsX3JtX2Z0egotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMmxsX3JuLCA3NDM3MX0sIC8vIF9fbnZ2bV9mMmxsX3JuCi0gICAgICB7SW50cmluc2ljOjpudnZtX2YybGxfcm5fZnR6LCA3NDM4Nn0sIC8vIF9fbnZ2bV9mMmxsX3JuX2Z0egotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMmxsX3JwLCA3NDQwNX0sIC8vIF9fbnZ2bV9mMmxsX3JwCi0gICAgICB7SW50cmluc2ljOjpudnZtX2YybGxfcnBfZnR6LCA3NDQyMH0sIC8vIF9fbnZ2bV9mMmxsX3JwX2Z0egotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMmxsX3J6LCA3NDQzOX0sIC8vIF9fbnZ2bV9mMmxsX3J6Ci0gICAgICB7SW50cmluc2ljOjpudnZtX2YybGxfcnpfZnR6LCA3NDQ1NH0sIC8vIF9fbnZ2bV9mMmxsX3J6X2Z0egotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMnVpX3JtLCA3NDQ3M30sIC8vIF9fbnZ2bV9mMnVpX3JtCi0gICAgICB7SW50cmluc2ljOjpudnZtX2YydWlfcm1fZnR6LCA3NDQ4OH0sIC8vIF9fbnZ2bV9mMnVpX3JtX2Z0egotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMnVpX3JuLCA3NDUwN30sIC8vIF9fbnZ2bV9mMnVpX3JuCi0gICAgICB7SW50cmluc2ljOjpudnZtX2YydWlfcm5fZnR6LCA3NDUyMn0sIC8vIF9fbnZ2bV9mMnVpX3JuX2Z0egotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMnVpX3JwLCA3NDU0MX0sIC8vIF9fbnZ2bV9mMnVpX3JwCi0gICAgICB7SW50cmluc2ljOjpudnZtX2YydWlfcnBfZnR6LCA3NDU1Nn0sIC8vIF9fbnZ2bV9mMnVpX3JwX2Z0egotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMnVpX3J6LCA3NDU3NX0sIC8vIF9fbnZ2bV9mMnVpX3J6Ci0gICAgICB7SW50cmluc2ljOjpudnZtX2YydWlfcnpfZnR6LCA3NDU5MH0sIC8vIF9fbnZ2bV9mMnVpX3J6X2Z0egotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMnVsbF9ybSwgNzQ2MDl9LCAvLyBfX252dm1fZjJ1bGxfcm0KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZjJ1bGxfcm1fZnR6LCA3NDYyNX0sIC8vIF9fbnZ2bV9mMnVsbF9ybV9mdHoKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZjJ1bGxfcm4sIDc0NjQ1fSwgLy8gX19udnZtX2YydWxsX3JuCi0gICAgICB7SW50cmluc2ljOjpudnZtX2YydWxsX3JuX2Z0eiwgNzQ2NjF9LCAvLyBfX252dm1fZjJ1bGxfcm5fZnR6Ci0gICAgICB7SW50cmluc2ljOjpudnZtX2YydWxsX3JwLCA3NDY4MX0sIC8vIF9fbnZ2bV9mMnVsbF9ycAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMnVsbF9ycF9mdHosIDc0Njk3fSwgLy8gX19udnZtX2YydWxsX3JwX2Z0egotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMnVsbF9yeiwgNzQ3MTd9LCAvLyBfX252dm1fZjJ1bGxfcnoKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZjJ1bGxfcnpfZnR6LCA3NDczM30sIC8vIF9fbnZ2bV9mMnVsbF9yel9mdHoKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZmFic19kLCA3NDc1M30sIC8vIF9fbnZ2bV9mYWJzX2QKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZmFic19mLCA3NDc2N30sIC8vIF9fbnZ2bV9mYWJzX2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZmFic19mdHpfZiwgNzQ3ODF9LCAvLyBfX252dm1fZmFic19mdHpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbG9vcl9kLCA3NDc5OX0sIC8vIF9fbnZ2bV9mbG9vcl9kCi0gICAgICB7SW50cmluc2ljOjpudnZtX2Zsb29yX2YsIDc0ODE0fSwgLy8gX19udnZtX2Zsb29yX2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZmxvb3JfZnR6X2YsIDc0ODI5fSwgLy8gX19udnZtX2Zsb29yX2Z0el9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX2ZtYV9ybV9kLCA3NDg0OH0sIC8vIF9fbnZ2bV9mbWFfcm1fZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbWFfcm1fZiwgNzQ4NjR9LCAvLyBfX252dm1fZm1hX3JtX2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZm1hX3JtX2Z0el9mLCA3NDg4MH0sIC8vIF9fbnZ2bV9mbWFfcm1fZnR6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZm1hX3JuX2QsIDc0OTAwfSwgLy8gX19udnZtX2ZtYV9ybl9kCi0gICAgICB7SW50cmluc2ljOjpudnZtX2ZtYV9ybl9mLCA3NDkxNn0sIC8vIF9fbnZ2bV9mbWFfcm5fZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbWFfcm5fZnR6X2YsIDc0OTMyfSwgLy8gX19udnZtX2ZtYV9ybl9mdHpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbWFfcnBfZCwgNzQ5NTJ9LCAvLyBfX252dm1fZm1hX3JwX2QKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZm1hX3JwX2YsIDc0OTY4fSwgLy8gX19udnZtX2ZtYV9ycF9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX2ZtYV9ycF9mdHpfZiwgNzQ5ODR9LCAvLyBfX252dm1fZm1hX3JwX2Z0el9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX2ZtYV9yel9kLCA3NTAwNH0sIC8vIF9fbnZ2bV9mbWFfcnpfZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbWFfcnpfZiwgNzUwMjB9LCAvLyBfX252dm1fZm1hX3J6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZm1hX3J6X2Z0el9mLCA3NTAzNn0sIC8vIF9fbnZ2bV9mbWFfcnpfZnR6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZm1heF9kLCA3NTA1Nn0sIC8vIF9fbnZ2bV9mbWF4X2QKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZm1heF9mLCA3NTA3MH0sIC8vIF9fbnZ2bV9mbWF4X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fZm1heF9mdHpfZiwgNzUwODR9LCAvLyBfX252dm1fZm1heF9mdHpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbWluX2QsIDc1MTAyfSwgLy8gX19udnZtX2ZtaW5fZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbWluX2YsIDc1MTE2fSwgLy8gX19udnZtX2ZtaW5fZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbWluX2Z0el9mLCA3NTEzMH0sIC8vIF9fbnZ2bV9mbWluX2Z0el9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX2ZucywgNzUxNDh9LCAvLyBfX252dm1fZm5zCi0gICAgICB7SW50cmluc2ljOjpudnZtX2kyZF9ybSwgNzUxNTl9LCAvLyBfX252dm1faTJkX3JtCi0gICAgICB7SW50cmluc2ljOjpudnZtX2kyZF9ybiwgNzUxNzN9LCAvLyBfX252dm1faTJkX3JuCi0gICAgICB7SW50cmluc2ljOjpudnZtX2kyZF9ycCwgNzUxODd9LCAvLyBfX252dm1faTJkX3JwCi0gICAgICB7SW50cmluc2ljOjpudnZtX2kyZF9yeiwgNzUyMDF9LCAvLyBfX252dm1faTJkX3J6Ci0gICAgICB7SW50cmluc2ljOjpudnZtX2kyZl9ybSwgNzUyMTV9LCAvLyBfX252dm1faTJmX3JtCi0gICAgICB7SW50cmluc2ljOjpudnZtX2kyZl9ybiwgNzUyMjl9LCAvLyBfX252dm1faTJmX3JuCi0gICAgICB7SW50cmluc2ljOjpudnZtX2kyZl9ycCwgNzUyNDN9LCAvLyBfX252dm1faTJmX3JwCi0gICAgICB7SW50cmluc2ljOjpudnZtX2kyZl9yeiwgNzUyNTd9LCAvLyBfX252dm1faTJmX3J6Ci0gICAgICB7SW50cmluc2ljOjpudnZtX2lzc3BhY2VwX2NvbnN0LCA3NTI3MX0sIC8vIF9fbnZ2bV9pc3NwYWNlcF9jb25zdAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9pc3NwYWNlcF9nbG9iYWwsIDc1MjkzfSwgLy8gX19udnZtX2lzc3BhY2VwX2dsb2JhbAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9pc3NwYWNlcF9sb2NhbCwgNzUzMTZ9LCAvLyBfX252dm1faXNzcGFjZXBfbG9jYWwKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1faXNzcGFjZXBfc2hhcmVkLCA3NTMzOH0sIC8vIF9fbnZ2bV9pc3NwYWNlcF9zaGFyZWQKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1faXN0eXBlcF9zYW1wbGVyLCA3NTM2MX0sIC8vIF9fbnZ2bV9pc3R5cGVwX3NhbXBsZXIKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1faXN0eXBlcF9zdXJmYWNlLCA3NTM4NH0sIC8vIF9fbnZ2bV9pc3R5cGVwX3N1cmZhY2UKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1faXN0eXBlcF90ZXh0dXJlLCA3NTQwN30sIC8vIF9fbnZ2bV9pc3R5cGVwX3RleHR1cmUKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fbGcyX2FwcHJveF9kLCA3NTQzMH0sIC8vIF9fbnZ2bV9sZzJfYXBwcm94X2QKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fbGcyX2FwcHJveF9mLCA3NTQ1MH0sIC8vIF9fbnZ2bV9sZzJfYXBwcm94X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fbGcyX2FwcHJveF9mdHpfZiwgNzU0NzB9LCAvLyBfX252dm1fbGcyX2FwcHJveF9mdHpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9sbDJkX3JtLCA3NTQ5NH0sIC8vIF9fbnZ2bV9sbDJkX3JtCi0gICAgICB7SW50cmluc2ljOjpudnZtX2xsMmRfcm4sIDc1NTA5fSwgLy8gX19udnZtX2xsMmRfcm4KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fbGwyZF9ycCwgNzU1MjR9LCAvLyBfX252dm1fbGwyZF9ycAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9sbDJkX3J6LCA3NTUzOX0sIC8vIF9fbnZ2bV9sbDJkX3J6Ci0gICAgICB7SW50cmluc2ljOjpudnZtX2xsMmZfcm0sIDc1NTU0fSwgLy8gX19udnZtX2xsMmZfcm0KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fbGwyZl9ybiwgNzU1Njl9LCAvLyBfX252dm1fbGwyZl9ybgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9sbDJmX3JwLCA3NTU4NH0sIC8vIF9fbnZ2bV9sbDJmX3JwCi0gICAgICB7SW50cmluc2ljOjpudnZtX2xsMmZfcnosIDc1NTk5fSwgLy8gX19udnZtX2xsMmZfcnoKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fbG9oaV9pMmQsIDc1NjE0fSwgLy8gX19udnZtX2xvaGlfaTJkCi0gICAgICB7SW50cmluc2ljOjpudnZtX21hdGNoX2FueV9zeW5jX2kzMiwgNzU2MzB9LCAvLyBfX252dm1fbWF0Y2hfYW55X3N5bmNfaTMyCi0gICAgICB7SW50cmluc2ljOjpudnZtX21hdGNoX2FueV9zeW5jX2k2NCwgNzU2NTZ9LCAvLyBfX252dm1fbWF0Y2hfYW55X3N5bmNfaTY0Ci0gICAgICB7SW50cmluc2ljOjpudnZtX21lbWJhcl9jdGEsIDc1NjgyfSwgLy8gX19udnZtX21lbWJhcl9jdGEKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fbWVtYmFyX2dsLCA3NTcwMH0sIC8vIF9fbnZ2bV9tZW1iYXJfZ2wKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fbWVtYmFyX3N5cywgNzU3MTd9LCAvLyBfX252dm1fbWVtYmFyX3N5cwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9tdWwyNF9pLCA3NTk0M30sIC8vIF9fbnZ2bV9tdWwyNF9pCi0gICAgICB7SW50cmluc2ljOjpudnZtX211bDI0X3VpLCA3NTk1OH0sIC8vIF9fbnZ2bV9tdWwyNF91aQotICAgICAge0ludHJpbnNpYzo6bnZ2bV9tdWxfcm1fZCwgNzU3MzV9LCAvLyBfX252dm1fbXVsX3JtX2QKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fbXVsX3JtX2YsIDc1NzUxfSwgLy8gX19udnZtX211bF9ybV9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX211bF9ybV9mdHpfZiwgNzU3Njd9LCAvLyBfX252dm1fbXVsX3JtX2Z0el9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX211bF9ybl9kLCA3NTc4N30sIC8vIF9fbnZ2bV9tdWxfcm5fZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9tdWxfcm5fZiwgNzU4MDN9LCAvLyBfX252dm1fbXVsX3JuX2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fbXVsX3JuX2Z0el9mLCA3NTgxOX0sIC8vIF9fbnZ2bV9tdWxfcm5fZnR6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fbXVsX3JwX2QsIDc1ODM5fSwgLy8gX19udnZtX211bF9ycF9kCi0gICAgICB7SW50cmluc2ljOjpudnZtX211bF9ycF9mLCA3NTg1NX0sIC8vIF9fbnZ2bV9tdWxfcnBfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9tdWxfcnBfZnR6X2YsIDc1ODcxfSwgLy8gX19udnZtX211bF9ycF9mdHpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9tdWxfcnpfZCwgNzU4OTF9LCAvLyBfX252dm1fbXVsX3J6X2QKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fbXVsX3J6X2YsIDc1OTA3fSwgLy8gX19udnZtX211bF9yel9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX211bF9yel9mdHpfZiwgNzU5MjN9LCAvLyBfX252dm1fbXVsX3J6X2Z0el9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX211bGhpX2ksIDc1OTc0fSwgLy8gX19udnZtX211bGhpX2kKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fbXVsaGlfbGwsIDc1OTg5fSwgLy8gX19udnZtX211bGhpX2xsCi0gICAgICB7SW50cmluc2ljOjpudnZtX211bGhpX3VpLCA3NjAwNX0sIC8vIF9fbnZ2bV9tdWxoaV91aQotICAgICAge0ludHJpbnNpYzo6bnZ2bV9tdWxoaV91bGwsIDc2MDIxfSwgLy8gX19udnZtX211bGhpX3VsbAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9wcm10LCA3NjAzOH0sIC8vIF9fbnZ2bV9wcm10Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3JjcF9hcHByb3hfZnR6X2QsIDc2MDUwfSwgLy8gX19udnZtX3JjcF9hcHByb3hfZnR6X2QKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmNwX3JtX2QsIDc2MDc0fSwgLy8gX19udnZtX3JjcF9ybV9kCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JjcF9ybV9mLCA3NjA5MH0sIC8vIF9fbnZ2bV9yY3Bfcm1fZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yY3Bfcm1fZnR6X2YsIDc2MTA2fSwgLy8gX19udnZtX3JjcF9ybV9mdHpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yY3Bfcm5fZCwgNzYxMjZ9LCAvLyBfX252dm1fcmNwX3JuX2QKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmNwX3JuX2YsIDc2MTQyfSwgLy8gX19udnZtX3JjcF9ybl9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JjcF9ybl9mdHpfZiwgNzYxNTh9LCAvLyBfX252dm1fcmNwX3JuX2Z0el9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JjcF9ycF9kLCA3NjE3OH0sIC8vIF9fbnZ2bV9yY3BfcnBfZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yY3BfcnBfZiwgNzYxOTR9LCAvLyBfX252dm1fcmNwX3JwX2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmNwX3JwX2Z0el9mLCA3NjIxMH0sIC8vIF9fbnZ2bV9yY3BfcnBfZnR6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmNwX3J6X2QsIDc2MjMwfSwgLy8gX19udnZtX3JjcF9yel9kCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JjcF9yel9mLCA3NjI0Nn0sIC8vIF9fbnZ2bV9yY3BfcnpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yY3BfcnpfZnR6X2YsIDc2MjYyfSwgLy8gX19udnZtX3JjcF9yel9mdHpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2Nsb2NrLCA3NjI4Mn0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2Nsb2NrCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfY2xvY2s2NCwgNzYzMDl9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19jbG9jazY0Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfY3RhaWRfdywgNzYzMzh9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19jdGFpZF93Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfY3RhaWRfeCwgNzYzNjd9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19jdGFpZF94Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfY3RhaWRfeSwgNzYzOTZ9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19jdGFpZF95Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfY3RhaWRfeiwgNzY0MjV9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19jdGFpZF96Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMCwgNzY0NTR9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMSwgNzY0ODN9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcxCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTAsIDc2NTEyfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcxMSwgNzY1NDJ9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcxMQotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzEyLCA3NjU3Mn0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzEyCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTMsIDc2NjAyfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTMKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcxNCwgNzY2MzJ9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcxNAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzE1LCA3NjY2Mn0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzE1Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTYsIDc2NjkyfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTYKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcxNywgNzY3MjJ9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcxNwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzE4LCA3Njc1Mn0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzE4Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTksIDc2NzgyfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTkKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyLCA3NjgxMn0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzIKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyMCwgNzY4NDF9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyMAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzIxLCA3Njg3MX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzIxCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMjIsIDc2OTAxfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMjIKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyMywgNzY5MzF9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyMwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzI0LCA3Njk2MX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzI0Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMjUsIDc2OTkxfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMjUKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyNiwgNzcwMjF9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyNgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzI3LCA3NzA1MX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzI3Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMjgsIDc3MDgxfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMjgKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyOSwgNzcxMTF9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyOQotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzMsIDc3MTQxfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzMwLCA3NzE3MH0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzMwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMzEsIDc3MjAwfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMzEKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWc0LCA3NzIzMH0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzQKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWc1LCA3NzI1OX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzUKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWc2LCA3NzI4OH0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzYKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWc3LCA3NzMxN30sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzcKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWc4LCA3NzM0Nn0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzgKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWc5LCA3NzM3NX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzkKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19ncmlkaWQsIDc3NDA0fSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZ3JpZGlkCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfbGFuZWlkLCA3NzQzMn0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2xhbmVpZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2xhbmVtYXNrX2VxLCA3NzQ2MH0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2xhbmVtYXNrX2VxCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfbGFuZW1hc2tfZ2UsIDc3NDkzfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfbGFuZW1hc2tfZ2UKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19sYW5lbWFza19ndCwgNzc1MjZ9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19sYW5lbWFza19ndAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2xhbmVtYXNrX2xlLCA3NzU1OX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2xhbmVtYXNrX2xlCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfbGFuZW1hc2tfbHQsIDc3NTkyfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfbGFuZW1hc2tfbHQKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19uY3RhaWRfdywgNzc2MjV9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19uY3RhaWRfdwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX25jdGFpZF94LCA3NzY1NX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX25jdGFpZF94Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfbmN0YWlkX3ksIDc3Njg1fSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfbmN0YWlkX3kKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19uY3RhaWRfeiwgNzc3MTV9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19uY3RhaWRfegotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX25zbWlkLCA3Nzc0NX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX25zbWlkCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfbnRpZF93LCA3Nzc3Mn0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX250aWRfdwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX250aWRfeCwgNzc4MDB9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19udGlkX3gKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19udGlkX3ksIDc3ODI4fSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfbnRpZF95Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfbnRpZF96LCA3Nzg1Nn0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX250aWRfegotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX253YXJwaWQsIDc3ODg0fSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfbndhcnBpZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX3BtMCwgNzc5MTN9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19wbTAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19wbTEsIDc3OTM4fSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfcG0xCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfcG0yLCA3Nzk2M30sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX3BtMgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX3BtMywgNzc5ODh9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19wbTMKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19zbWlkLCA3ODAxM30sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX3NtaWQKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ190aWRfdywgNzgwMzl9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ190aWRfdwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX3RpZF94LCA3ODA2Nn0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX3RpZF94Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfdGlkX3ksIDc4MDkzfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfdGlkX3kKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ190aWRfeiwgNzgxMjB9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ190aWRfegotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX3dhcnBpZCwgNzgxNDd9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ193YXJwaWQKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ193YXJwc2l6ZSwgNzgxNzV9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ193YXJwc2l6ZQotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yb3RhdGVfYjMyLCA3ODIwNX0sIC8vIF9fbnZ2bV9yb3RhdGVfYjMyCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JvdGF0ZV9iNjQsIDc4MjIzfSwgLy8gX19udnZtX3JvdGF0ZV9iNjQKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcm90YXRlX3JpZ2h0X2I2NCwgNzgyNDF9LCAvLyBfX252dm1fcm90YXRlX3JpZ2h0X2I2NAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yb3VuZF9kLCA3ODI2NX0sIC8vIF9fbnZ2bV9yb3VuZF9kCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JvdW5kX2YsIDc4MjgwfSwgLy8gX19udnZtX3JvdW5kX2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcm91bmRfZnR6X2YsIDc4Mjk1fSwgLy8gX19udnZtX3JvdW5kX2Z0el9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX3JzcXJ0X2FwcHJveF9kLCA3ODMxNH0sIC8vIF9fbnZ2bV9yc3FydF9hcHByb3hfZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9yc3FydF9hcHByb3hfZiwgNzgzMzZ9LCAvLyBfX252dm1fcnNxcnRfYXBwcm94X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fcnNxcnRfYXBwcm94X2Z0el9mLCA3ODM1OH0sIC8vIF9fbnZ2bV9yc3FydF9hcHByb3hfZnR6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc2FkX2ksIDc4Mzg0fSwgLy8gX19udnZtX3NhZF9pCi0gICAgICB7SW50cmluc2ljOjpudnZtX3NhZF91aSwgNzgzOTd9LCAvLyBfX252dm1fc2FkX3VpCi0gICAgICB7SW50cmluc2ljOjpudnZtX3NhdHVyYXRlX2QsIDc4NDExfSwgLy8gX19udnZtX3NhdHVyYXRlX2QKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc2F0dXJhdGVfZiwgNzg0Mjl9LCAvLyBfX252dm1fc2F0dXJhdGVfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zYXR1cmF0ZV9mdHpfZiwgNzg0NDd9LCAvLyBfX252dm1fc2F0dXJhdGVfZnR6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc2hmbF9iZmx5X2YzMiwgNzg0Njl9LCAvLyBfX252dm1fc2hmbF9iZmx5X2YzMgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX2JmbHlfaTMyLCA3ODQ5MH0sIC8vIF9fbnZ2bV9zaGZsX2JmbHlfaTMyCi0gICAgICB7SW50cmluc2ljOjpudnZtX3NoZmxfZG93bl9mMzIsIDc4NTExfSwgLy8gX19udnZtX3NoZmxfZG93bl9mMzIKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc2hmbF9kb3duX2kzMiwgNzg1MzJ9LCAvLyBfX252dm1fc2hmbF9kb3duX2kzMgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX2lkeF9mMzIsIDc4NTUzfSwgLy8gX19udnZtX3NoZmxfaWR4X2YzMgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX2lkeF9pMzIsIDc4NTczfSwgLy8gX19udnZtX3NoZmxfaWR4X2kzMgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX3N5bmNfYmZseV9mMzIsIDc4NTkzfSwgLy8gX19udnZtX3NoZmxfc3luY19iZmx5X2YzMgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX3N5bmNfYmZseV9pMzIsIDc4NjE5fSwgLy8gX19udnZtX3NoZmxfc3luY19iZmx5X2kzMgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX3N5bmNfZG93bl9mMzIsIDc4NjQ1fSwgLy8gX19udnZtX3NoZmxfc3luY19kb3duX2YzMgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX3N5bmNfZG93bl9pMzIsIDc4NjcxfSwgLy8gX19udnZtX3NoZmxfc3luY19kb3duX2kzMgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX3N5bmNfaWR4X2YzMiwgNzg2OTd9LCAvLyBfX252dm1fc2hmbF9zeW5jX2lkeF9mMzIKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc2hmbF9zeW5jX2lkeF9pMzIsIDc4NzIyfSwgLy8gX19udnZtX3NoZmxfc3luY19pZHhfaTMyCi0gICAgICB7SW50cmluc2ljOjpudnZtX3NoZmxfc3luY191cF9mMzIsIDc4NzQ3fSwgLy8gX19udnZtX3NoZmxfc3luY191cF9mMzIKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc2hmbF9zeW5jX3VwX2kzMiwgNzg3NzF9LCAvLyBfX252dm1fc2hmbF9zeW5jX3VwX2kzMgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX3VwX2YzMiwgNzg3OTV9LCAvLyBfX252dm1fc2hmbF91cF9mMzIKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc2hmbF91cF9pMzIsIDc4ODE0fSwgLy8gX19udnZtX3NoZmxfdXBfaTMyCi0gICAgICB7SW50cmluc2ljOjpudnZtX3Npbl9hcHByb3hfZiwgNzg4MzN9LCAvLyBfX252dm1fc2luX2FwcHJveF9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX3Npbl9hcHByb3hfZnR6X2YsIDc4ODUzfSwgLy8gX19udnZtX3Npbl9hcHByb3hfZnR6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9hcHByb3hfZiwgNzg4Nzd9LCAvLyBfX252dm1fc3FydF9hcHByb3hfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zcXJ0X2FwcHJveF9mdHpfZiwgNzg4OTh9LCAvLyBfX252dm1fc3FydF9hcHByb3hfZnR6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9mLCA3ODkyM30sIC8vIF9fbnZ2bV9zcXJ0X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9ybV9kLCA3ODkzN30sIC8vIF9fbnZ2bV9zcXJ0X3JtX2QKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9ybV9mLCA3ODk1NH0sIC8vIF9fbnZ2bV9zcXJ0X3JtX2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9ybV9mdHpfZiwgNzg5NzF9LCAvLyBfX252dm1fc3FydF9ybV9mdHpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zcXJ0X3JuX2QsIDc4OTkyfSwgLy8gX19udnZtX3NxcnRfcm5fZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zcXJ0X3JuX2YsIDc5MDA5fSwgLy8gX19udnZtX3NxcnRfcm5fZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zcXJ0X3JuX2Z0el9mLCA3OTAyNn0sIC8vIF9fbnZ2bV9zcXJ0X3JuX2Z0el9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX3NxcnRfcnBfZCwgNzkwNDd9LCAvLyBfX252dm1fc3FydF9ycF9kCi0gICAgICB7SW50cmluc2ljOjpudnZtX3NxcnRfcnBfZiwgNzkwNjR9LCAvLyBfX252dm1fc3FydF9ycF9mCi0gICAgICB7SW50cmluc2ljOjpudnZtX3NxcnRfcnBfZnR6X2YsIDc5MDgxfSwgLy8gX19udnZtX3NxcnRfcnBfZnR6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9yel9kLCA3OTEwMn0sIC8vIF9fbnZ2bV9zcXJ0X3J6X2QKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9yel9mLCA3OTExOX0sIC8vIF9fbnZ2bV9zcXJ0X3J6X2YKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9yel9mdHpfZiwgNzkxMzZ9LCAvLyBfX252dm1fc3FydF9yel9mdHpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXFfYXJyYXlfc2l6ZSwgNzkxNTd9LCAvLyBfX252dm1fc3VxX2FycmF5X3NpemUKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VxX2NoYW5uZWxfZGF0YV90eXBlLCA3OTE3OX0sIC8vIF9fbnZ2bV9zdXFfY2hhbm5lbF9kYXRhX3R5cGUKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VxX2NoYW5uZWxfb3JkZXIsIDc5MjA4fSwgLy8gX19udnZtX3N1cV9jaGFubmVsX29yZGVyCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1cV9kZXB0aCwgNzkyMzN9LCAvLyBfX252dm1fc3VxX2RlcHRoCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1cV9oZWlnaHQsIDc5MjUwfSwgLy8gX19udnZtX3N1cV9oZWlnaHQKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VxX3dpZHRoLCA3OTI2OH0sIC8vIF9fbnZ2bV9zdXFfd2lkdGgKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X2kxNl9jbGFtcCwgNzkyODV9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X2kxNl9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfaTE2X3RyYXAsIDc5MzE4fSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV9pMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfaTE2X3plcm8sIDc5MzUwfSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV9pMTZfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfaTMyX2NsYW1wLCA3OTM4Mn0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfaTMyX2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV9pMzJfdHJhcCwgNzk0MTV9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X2kzMl90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV9pMzJfemVybywgNzk0NDd9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X2kzMl96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV9pNjRfY2xhbXAsIDc5NDc5fSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV9pNjRfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X2k2NF90cmFwLCA3OTUxMn0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfaTY0X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X2k2NF96ZXJvLCA3OTU0NH0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfaTY0X3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X2k4X2NsYW1wLCA3OTU3Nn0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfaThfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X2k4X3RyYXAsIDc5NjA4fSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV9pOF90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV9pOF96ZXJvLCA3OTYzOX0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfaThfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpMTZfY2xhbXAsIDc5NjcwfSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV92MmkxNl9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpMTZfdHJhcCwgNzk3MDV9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3YyaTE2X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X3YyaTE2X3plcm8sIDc5NzM5fSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV92MmkxNl96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV92MmkzMl9jbGFtcCwgNzk3NzN9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3YyaTMyX2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV92MmkzMl90cmFwLCA3OTgwOH0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpMzJfemVybywgNzk4NDJ9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3YyaTMyX3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X3YyaTY0X2NsYW1wLCA3OTg3Nn0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpNjRfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X3YyaTY0X3RyYXAsIDc5OTExfSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV92Mmk2NF90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV92Mmk2NF96ZXJvLCA3OTk0NX0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpNjRfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpOF9jbGFtcCwgNzk5Nzl9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3YyaThfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X3YyaThfdHJhcCwgODAwMTN9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3YyaThfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpOF96ZXJvLCA4MDA0Nn0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpOF96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV92NGkxNl9jbGFtcCwgODAwNzl9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3Y0aTE2X2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV92NGkxNl90cmFwLCA4MDExNH0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjRpMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjRpMTZfemVybywgODAxNDh9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3Y0aTE2X3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X3Y0aTMyX2NsYW1wLCA4MDE4Mn0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjRpMzJfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X3Y0aTMyX3RyYXAsIDgwMjE3fSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV92NGkzMl90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV92NGkzMl96ZXJvLCA4MDI1MX0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjRpMzJfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjRpOF9jbGFtcCwgODAyODV9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3Y0aThfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X3Y0aThfdHJhcCwgODAzMTl9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3Y0aThfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjRpOF96ZXJvLCA4MDM1Mn0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjRpOF96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9pMTZfY2xhbXAsIDgwMzg1fSwgLy8gX19udnZtX3N1c3RfYl8xZF9pMTZfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2kxNl90cmFwLCA4MDQxMn0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfaTE2X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2kxNl96ZXJvLCA4MDQzOH0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfaTE2X3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2kzMl9jbGFtcCwgODA0NjR9LCAvLyBfX252dm1fc3VzdF9iXzFkX2kzMl9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfaTMyX3RyYXAsIDgwNDkxfSwgLy8gX19udnZtX3N1c3RfYl8xZF9pMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfaTMyX3plcm8sIDgwNTE3fSwgLy8gX19udnZtX3N1c3RfYl8xZF9pMzJfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfaTY0X2NsYW1wLCA4MDU0M30sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfaTY0X2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9pNjRfdHJhcCwgODA1NzB9LCAvLyBfX252dm1fc3VzdF9iXzFkX2k2NF90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9pNjRfemVybywgODA1OTZ9LCAvLyBfX252dm1fc3VzdF9iXzFkX2k2NF96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9pOF9jbGFtcCwgODA2MjJ9LCAvLyBfX252dm1fc3VzdF9iXzFkX2k4X2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9pOF90cmFwLCA4MDY0OH0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfaThfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfaThfemVybywgODA2NzN9LCAvLyBfX252dm1fc3VzdF9iXzFkX2k4X3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3YyaTE2X2NsYW1wLCA4MDY5OH0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfdjJpMTZfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3YyaTE2X3RyYXAsIDgwNzI3fSwgLy8gX19udnZtX3N1c3RfYl8xZF92MmkxNl90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF92MmkxNl96ZXJvLCA4MDc1NX0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfdjJpMTZfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfdjJpMzJfY2xhbXAsIDgwNzgzfSwgLy8gX19udnZtX3N1c3RfYl8xZF92MmkzMl9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfdjJpMzJfdHJhcCwgODA4MTJ9LCAvLyBfX252dm1fc3VzdF9iXzFkX3YyaTMyX3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3YyaTMyX3plcm8sIDgwODQwfSwgLy8gX19udnZtX3N1c3RfYl8xZF92MmkzMl96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF92Mmk2NF9jbGFtcCwgODA4Njh9LCAvLyBfX252dm1fc3VzdF9iXzFkX3YyaTY0X2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF92Mmk2NF90cmFwLCA4MDg5N30sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfdjJpNjRfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfdjJpNjRfemVybywgODA5MjV9LCAvLyBfX252dm1fc3VzdF9iXzFkX3YyaTY0X3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3YyaThfY2xhbXAsIDgwOTUzfSwgLy8gX19udnZtX3N1c3RfYl8xZF92Mmk4X2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF92Mmk4X3RyYXAsIDgwOTgxfSwgLy8gX19udnZtX3N1c3RfYl8xZF92Mmk4X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3YyaThfemVybywgODEwMDh9LCAvLyBfX252dm1fc3VzdF9iXzFkX3YyaThfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfdjRpMTZfY2xhbXAsIDgxMDM1fSwgLy8gX19udnZtX3N1c3RfYl8xZF92NGkxNl9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfdjRpMTZfdHJhcCwgODEwNjR9LCAvLyBfX252dm1fc3VzdF9iXzFkX3Y0aTE2X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3Y0aTE2X3plcm8sIDgxMDkyfSwgLy8gX19udnZtX3N1c3RfYl8xZF92NGkxNl96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF92NGkzMl9jbGFtcCwgODExMjB9LCAvLyBfX252dm1fc3VzdF9iXzFkX3Y0aTMyX2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF92NGkzMl90cmFwLCA4MTE0OX0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfdjRpMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfdjRpMzJfemVybywgODExNzd9LCAvLyBfX252dm1fc3VzdF9iXzFkX3Y0aTMyX3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3Y0aThfY2xhbXAsIDgxMjA1fSwgLy8gX19udnZtX3N1c3RfYl8xZF92NGk4X2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF92NGk4X3RyYXAsIDgxMjMzfSwgLy8gX19udnZtX3N1c3RfYl8xZF92NGk4X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3Y0aThfemVybywgODEyNjB9LCAvLyBfX252dm1fc3VzdF9iXzFkX3Y0aThfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfaTE2X2NsYW1wLCA4MTI4N30sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfaTE2X2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV9pMTZfdHJhcCwgODEzMjB9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X2kxNl90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV9pMTZfemVybywgODEzNTJ9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X2kxNl96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV9pMzJfY2xhbXAsIDgxMzg0fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV9pMzJfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X2kzMl90cmFwLCA4MTQxN30sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfaTMyX3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X2kzMl96ZXJvLCA4MTQ0OX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfaTMyX3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X2k2NF9jbGFtcCwgODE0ODF9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X2k2NF9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfaTY0X3RyYXAsIDgxNTE0fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV9pNjRfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfaTY0X3plcm8sIDgxNTQ2fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV9pNjRfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfaThfY2xhbXAsIDgxNTc4fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV9pOF9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfaThfdHJhcCwgODE2MTB9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X2k4X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X2k4X3plcm8sIDgxNjQxfSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV9pOF96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92MmkxNl9jbGFtcCwgODE2NzJ9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X3YyaTE2X2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92MmkxNl90cmFwLCA4MTcwN30sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpMTZfemVybywgODE3NDF9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X3YyaTE2X3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X3YyaTMyX2NsYW1wLCA4MTc3NX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpMzJfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X3YyaTMyX3RyYXAsIDgxODEwfSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92MmkzMl90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92MmkzMl96ZXJvLCA4MTg0NH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpMzJfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpNjRfY2xhbXAsIDgxODc4fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92Mmk2NF9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpNjRfdHJhcCwgODE5MTN9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X3YyaTY0X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X3YyaTY0X3plcm8sIDgxOTQ3fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92Mmk2NF96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92Mmk4X2NsYW1wLCA4MTk4MX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpOF9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpOF90cmFwLCA4MjAxNX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpOF90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92Mmk4X3plcm8sIDgyMDQ4fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92Mmk4X3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X3Y0aTE2X2NsYW1wLCA4MjA4MX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjRpMTZfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X3Y0aTE2X3RyYXAsIDgyMTE2fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92NGkxNl90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92NGkxNl96ZXJvLCA4MjE1MH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjRpMTZfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjRpMzJfY2xhbXAsIDgyMTg0fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92NGkzMl9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjRpMzJfdHJhcCwgODIyMTl9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X3Y0aTMyX3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X3Y0aTMyX3plcm8sIDgyMjUzfSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92NGkzMl96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92NGk4X2NsYW1wLCA4MjI4N30sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjRpOF9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjRpOF90cmFwLCA4MjMyMX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjRpOF90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92NGk4X3plcm8sIDgyMzU0fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92NGk4X3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2kxNl9jbGFtcCwgODIzODd9LCAvLyBfX252dm1fc3VzdF9iXzJkX2kxNl9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfaTE2X3RyYXAsIDgyNDE0fSwgLy8gX19udnZtX3N1c3RfYl8yZF9pMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfaTE2X3plcm8sIDgyNDQwfSwgLy8gX19udnZtX3N1c3RfYl8yZF9pMTZfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfaTMyX2NsYW1wLCA4MjQ2Nn0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfaTMyX2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9pMzJfdHJhcCwgODI0OTN9LCAvLyBfX252dm1fc3VzdF9iXzJkX2kzMl90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9pMzJfemVybywgODI1MTl9LCAvLyBfX252dm1fc3VzdF9iXzJkX2kzMl96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9pNjRfY2xhbXAsIDgyNTQ1fSwgLy8gX19udnZtX3N1c3RfYl8yZF9pNjRfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2k2NF90cmFwLCA4MjU3Mn0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfaTY0X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2k2NF96ZXJvLCA4MjU5OH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfaTY0X3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2k4X2NsYW1wLCA4MjYyNH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfaThfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2k4X3RyYXAsIDgyNjUwfSwgLy8gX19udnZtX3N1c3RfYl8yZF9pOF90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9pOF96ZXJvLCA4MjY3NX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfaThfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjJpMTZfY2xhbXAsIDgyNzAwfSwgLy8gX19udnZtX3N1c3RfYl8yZF92MmkxNl9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjJpMTZfdHJhcCwgODI3Mjl9LCAvLyBfX252dm1fc3VzdF9iXzJkX3YyaTE2X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX3YyaTE2X3plcm8sIDgyNzU3fSwgLy8gX19udnZtX3N1c3RfYl8yZF92MmkxNl96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF92MmkzMl9jbGFtcCwgODI3ODV9LCAvLyBfX252dm1fc3VzdF9iXzJkX3YyaTMyX2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF92MmkzMl90cmFwLCA4MjgxNH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjJpMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjJpMzJfemVybywgODI4NDJ9LCAvLyBfX252dm1fc3VzdF9iXzJkX3YyaTMyX3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX3YyaTY0X2NsYW1wLCA4Mjg3MH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjJpNjRfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX3YyaTY0X3RyYXAsIDgyODk5fSwgLy8gX19udnZtX3N1c3RfYl8yZF92Mmk2NF90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF92Mmk2NF96ZXJvLCA4MjkyN30sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjJpNjRfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjJpOF9jbGFtcCwgODI5NTV9LCAvLyBfX252dm1fc3VzdF9iXzJkX3YyaThfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX3YyaThfdHJhcCwgODI5ODN9LCAvLyBfX252dm1fc3VzdF9iXzJkX3YyaThfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjJpOF96ZXJvLCA4MzAxMH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjJpOF96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF92NGkxNl9jbGFtcCwgODMwMzd9LCAvLyBfX252dm1fc3VzdF9iXzJkX3Y0aTE2X2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF92NGkxNl90cmFwLCA4MzA2Nn0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjRpMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjRpMTZfemVybywgODMwOTR9LCAvLyBfX252dm1fc3VzdF9iXzJkX3Y0aTE2X3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX3Y0aTMyX2NsYW1wLCA4MzEyMn0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjRpMzJfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX3Y0aTMyX3RyYXAsIDgzMTUxfSwgLy8gX19udnZtX3N1c3RfYl8yZF92NGkzMl90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF92NGkzMl96ZXJvLCA4MzE3OX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjRpMzJfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjRpOF9jbGFtcCwgODMyMDd9LCAvLyBfX252dm1fc3VzdF9iXzJkX3Y0aThfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX3Y0aThfdHJhcCwgODMyMzV9LCAvLyBfX252dm1fc3VzdF9iXzJkX3Y0aThfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjRpOF96ZXJvLCA4MzI2Mn0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjRpOF96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF9pMTZfY2xhbXAsIDgzMjg5fSwgLy8gX19udnZtX3N1c3RfYl8zZF9pMTZfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX2kxNl90cmFwLCA4MzMxNn0sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfaTE2X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX2kxNl96ZXJvLCA4MzM0Mn0sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfaTE2X3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX2kzMl9jbGFtcCwgODMzNjh9LCAvLyBfX252dm1fc3VzdF9iXzNkX2kzMl9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfaTMyX3RyYXAsIDgzMzk1fSwgLy8gX19udnZtX3N1c3RfYl8zZF9pMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfaTMyX3plcm8sIDgzNDIxfSwgLy8gX19udnZtX3N1c3RfYl8zZF9pMzJfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfaTY0X2NsYW1wLCA4MzQ0N30sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfaTY0X2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF9pNjRfdHJhcCwgODM0NzR9LCAvLyBfX252dm1fc3VzdF9iXzNkX2k2NF90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF9pNjRfemVybywgODM1MDB9LCAvLyBfX252dm1fc3VzdF9iXzNkX2k2NF96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF9pOF9jbGFtcCwgODM1MjZ9LCAvLyBfX252dm1fc3VzdF9iXzNkX2k4X2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF9pOF90cmFwLCA4MzU1Mn0sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfaThfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfaThfemVybywgODM1Nzd9LCAvLyBfX252dm1fc3VzdF9iXzNkX2k4X3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3YyaTE2X2NsYW1wLCA4MzYwMn0sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfdjJpMTZfY2xhbXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3YyaTE2X3RyYXAsIDgzNjMxfSwgLy8gX19udnZtX3N1c3RfYl8zZF92MmkxNl90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF92MmkxNl96ZXJvLCA4MzY1OX0sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfdjJpMTZfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfdjJpMzJfY2xhbXAsIDgzNjg3fSwgLy8gX19udnZtX3N1c3RfYl8zZF92MmkzMl9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfdjJpMzJfdHJhcCwgODM3MTZ9LCAvLyBfX252dm1fc3VzdF9iXzNkX3YyaTMyX3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3YyaTMyX3plcm8sIDgzNzQ0fSwgLy8gX19udnZtX3N1c3RfYl8zZF92MmkzMl96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF92Mmk2NF9jbGFtcCwgODM3NzJ9LCAvLyBfX252dm1fc3VzdF9iXzNkX3YyaTY0X2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF92Mmk2NF90cmFwLCA4MzgwMX0sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfdjJpNjRfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfdjJpNjRfemVybywgODM4Mjl9LCAvLyBfX252dm1fc3VzdF9iXzNkX3YyaTY0X3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3YyaThfY2xhbXAsIDgzODU3fSwgLy8gX19udnZtX3N1c3RfYl8zZF92Mmk4X2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF92Mmk4X3RyYXAsIDgzODg1fSwgLy8gX19udnZtX3N1c3RfYl8zZF92Mmk4X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3YyaThfemVybywgODM5MTJ9LCAvLyBfX252dm1fc3VzdF9iXzNkX3YyaThfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfdjRpMTZfY2xhbXAsIDgzOTM5fSwgLy8gX19udnZtX3N1c3RfYl8zZF92NGkxNl9jbGFtcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfdjRpMTZfdHJhcCwgODM5Njh9LCAvLyBfX252dm1fc3VzdF9iXzNkX3Y0aTE2X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3Y0aTE2X3plcm8sIDgzOTk2fSwgLy8gX19udnZtX3N1c3RfYl8zZF92NGkxNl96ZXJvCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF92NGkzMl9jbGFtcCwgODQwMjR9LCAvLyBfX252dm1fc3VzdF9iXzNkX3Y0aTMyX2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF92NGkzMl90cmFwLCA4NDA1M30sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfdjRpMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfdjRpMzJfemVybywgODQwODF9LCAvLyBfX252dm1fc3VzdF9iXzNkX3Y0aTMyX3plcm8KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3Y0aThfY2xhbXAsIDg0MTA5fSwgLy8gX19udnZtX3N1c3RfYl8zZF92NGk4X2NsYW1wCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF92NGk4X3RyYXAsIDg0MTM3fSwgLy8gX19udnZtX3N1c3RfYl8zZF92NGk4X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3Y0aThfemVybywgODQxNjR9LCAvLyBfX252dm1fc3VzdF9iXzNkX3Y0aThfemVybwotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfYXJyYXlfaTE2X3RyYXAsIDg0MTkxfSwgLy8gX19udnZtX3N1c3RfcF8xZF9hcnJheV9pMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfYXJyYXlfaTMyX3RyYXAsIDg0MjIzfSwgLy8gX19udnZtX3N1c3RfcF8xZF9hcnJheV9pMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfYXJyYXlfaThfdHJhcCwgODQyNTV9LCAvLyBfX252dm1fc3VzdF9wXzFkX2FycmF5X2k4X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzFkX2FycmF5X3YyaTE2X3RyYXAsIDg0Mjg2fSwgLy8gX19udnZtX3N1c3RfcF8xZF9hcnJheV92MmkxNl90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8xZF9hcnJheV92MmkzMl90cmFwLCA4NDMyMH0sIC8vIF9fbnZ2bV9zdXN0X3BfMWRfYXJyYXlfdjJpMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfYXJyYXlfdjJpOF90cmFwLCA4NDM1NH0sIC8vIF9fbnZ2bV9zdXN0X3BfMWRfYXJyYXlfdjJpOF90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8xZF9hcnJheV92NGkxNl90cmFwLCA4NDM4N30sIC8vIF9fbnZ2bV9zdXN0X3BfMWRfYXJyYXlfdjRpMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfYXJyYXlfdjRpMzJfdHJhcCwgODQ0MjF9LCAvLyBfX252dm1fc3VzdF9wXzFkX2FycmF5X3Y0aTMyX3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzFkX2FycmF5X3Y0aThfdHJhcCwgODQ0NTV9LCAvLyBfX252dm1fc3VzdF9wXzFkX2FycmF5X3Y0aThfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfaTE2X3RyYXAsIDg0NDg4fSwgLy8gX19udnZtX3N1c3RfcF8xZF9pMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfaTMyX3RyYXAsIDg0NTE0fSwgLy8gX19udnZtX3N1c3RfcF8xZF9pMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfaThfdHJhcCwgODQ1NDB9LCAvLyBfX252dm1fc3VzdF9wXzFkX2k4X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzFkX3YyaTE2X3RyYXAsIDg0NTY1fSwgLy8gX19udnZtX3N1c3RfcF8xZF92MmkxNl90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8xZF92MmkzMl90cmFwLCA4NDU5M30sIC8vIF9fbnZ2bV9zdXN0X3BfMWRfdjJpMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfdjJpOF90cmFwLCA4NDYyMX0sIC8vIF9fbnZ2bV9zdXN0X3BfMWRfdjJpOF90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8xZF92NGkxNl90cmFwLCA4NDY0OH0sIC8vIF9fbnZ2bV9zdXN0X3BfMWRfdjRpMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfdjRpMzJfdHJhcCwgODQ2NzZ9LCAvLyBfX252dm1fc3VzdF9wXzFkX3Y0aTMyX3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzFkX3Y0aThfdHJhcCwgODQ3MDR9LCAvLyBfX252dm1fc3VzdF9wXzFkX3Y0aThfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfYXJyYXlfaTE2X3RyYXAsIDg0NzMxfSwgLy8gX19udnZtX3N1c3RfcF8yZF9hcnJheV9pMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfYXJyYXlfaTMyX3RyYXAsIDg0NzYzfSwgLy8gX19udnZtX3N1c3RfcF8yZF9hcnJheV9pMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfYXJyYXlfaThfdHJhcCwgODQ3OTV9LCAvLyBfX252dm1fc3VzdF9wXzJkX2FycmF5X2k4X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzJkX2FycmF5X3YyaTE2X3RyYXAsIDg0ODI2fSwgLy8gX19udnZtX3N1c3RfcF8yZF9hcnJheV92MmkxNl90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8yZF9hcnJheV92MmkzMl90cmFwLCA4NDg2MH0sIC8vIF9fbnZ2bV9zdXN0X3BfMmRfYXJyYXlfdjJpMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfYXJyYXlfdjJpOF90cmFwLCA4NDg5NH0sIC8vIF9fbnZ2bV9zdXN0X3BfMmRfYXJyYXlfdjJpOF90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8yZF9hcnJheV92NGkxNl90cmFwLCA4NDkyN30sIC8vIF9fbnZ2bV9zdXN0X3BfMmRfYXJyYXlfdjRpMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfYXJyYXlfdjRpMzJfdHJhcCwgODQ5NjF9LCAvLyBfX252dm1fc3VzdF9wXzJkX2FycmF5X3Y0aTMyX3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzJkX2FycmF5X3Y0aThfdHJhcCwgODQ5OTV9LCAvLyBfX252dm1fc3VzdF9wXzJkX2FycmF5X3Y0aThfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfaTE2X3RyYXAsIDg1MDI4fSwgLy8gX19udnZtX3N1c3RfcF8yZF9pMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfaTMyX3RyYXAsIDg1MDU0fSwgLy8gX19udnZtX3N1c3RfcF8yZF9pMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfaThfdHJhcCwgODUwODB9LCAvLyBfX252dm1fc3VzdF9wXzJkX2k4X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzJkX3YyaTE2X3RyYXAsIDg1MTA1fSwgLy8gX19udnZtX3N1c3RfcF8yZF92MmkxNl90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8yZF92MmkzMl90cmFwLCA4NTEzM30sIC8vIF9fbnZ2bV9zdXN0X3BfMmRfdjJpMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfdjJpOF90cmFwLCA4NTE2MX0sIC8vIF9fbnZ2bV9zdXN0X3BfMmRfdjJpOF90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8yZF92NGkxNl90cmFwLCA4NTE4OH0sIC8vIF9fbnZ2bV9zdXN0X3BfMmRfdjRpMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfdjRpMzJfdHJhcCwgODUyMTZ9LCAvLyBfX252dm1fc3VzdF9wXzJkX3Y0aTMyX3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzJkX3Y0aThfdHJhcCwgODUyNDR9LCAvLyBfX252dm1fc3VzdF9wXzJkX3Y0aThfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfM2RfaTE2X3RyYXAsIDg1MjcxfSwgLy8gX19udnZtX3N1c3RfcF8zZF9pMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfM2RfaTMyX3RyYXAsIDg1Mjk3fSwgLy8gX19udnZtX3N1c3RfcF8zZF9pMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfM2RfaThfdHJhcCwgODUzMjN9LCAvLyBfX252dm1fc3VzdF9wXzNkX2k4X3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzNkX3YyaTE2X3RyYXAsIDg1MzQ4fSwgLy8gX19udnZtX3N1c3RfcF8zZF92MmkxNl90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8zZF92MmkzMl90cmFwLCA4NTM3Nn0sIC8vIF9fbnZ2bV9zdXN0X3BfM2RfdjJpMzJfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfM2RfdjJpOF90cmFwLCA4NTQwNH0sIC8vIF9fbnZ2bV9zdXN0X3BfM2RfdjJpOF90cmFwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8zZF92NGkxNl90cmFwLCA4NTQzMX0sIC8vIF9fbnZ2bV9zdXN0X3BfM2RfdjRpMTZfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfM2RfdjRpMzJfdHJhcCwgODU0NTl9LCAvLyBfX252dm1fc3VzdF9wXzNkX3Y0aTMyX3RyYXAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzNkX3Y0aThfdHJhcCwgODU0ODd9LCAvLyBfX252dm1fc3VzdF9wXzNkX3Y0aThfdHJhcAotICAgICAge0ludHJpbnNpYzo6bnZ2bV9zd2FwX2xvX2hpX2I2NCwgODU1MTR9LCAvLyBfX252dm1fc3dhcF9sb19oaV9iNjQKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdHJ1bmNfZCwgODU1MzZ9LCAvLyBfX252dm1fdHJ1bmNfZAotICAgICAge0ludHJpbnNpYzo6bnZ2bV90cnVuY19mLCA4NTU1MX0sIC8vIF9fbnZ2bV90cnVuY19mCi0gICAgICB7SW50cmluc2ljOjpudnZtX3RydW5jX2Z0el9mLCA4NTU2Nn0sIC8vIF9fbnZ2bV90cnVuY19mdHpfZgotICAgICAge0ludHJpbnNpYzo6bnZ2bV90eHFfYXJyYXlfc2l6ZSwgODU1ODV9LCAvLyBfX252dm1fdHhxX2FycmF5X3NpemUKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdHhxX2NoYW5uZWxfZGF0YV90eXBlLCA4NTYwN30sIC8vIF9fbnZ2bV90eHFfY2hhbm5lbF9kYXRhX3R5cGUKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdHhxX2NoYW5uZWxfb3JkZXIsIDg1NjM2fSwgLy8gX19udnZtX3R4cV9jaGFubmVsX29yZGVyCi0gICAgICB7SW50cmluc2ljOjpudnZtX3R4cV9kZXB0aCwgODU2NjF9LCAvLyBfX252dm1fdHhxX2RlcHRoCi0gICAgICB7SW50cmluc2ljOjpudnZtX3R4cV9oZWlnaHQsIDg1Njc4fSwgLy8gX19udnZtX3R4cV9oZWlnaHQKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdHhxX251bV9taXBtYXBfbGV2ZWxzLCA4NTY5Nn0sIC8vIF9fbnZ2bV90eHFfbnVtX21pcG1hcF9sZXZlbHMKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdHhxX251bV9zYW1wbGVzLCA4NTcyNX0sIC8vIF9fbnZ2bV90eHFfbnVtX3NhbXBsZXMKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdHhxX3dpZHRoLCA4NTc0OH0sIC8vIF9fbnZ2bV90eHFfd2lkdGgKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdWkyZF9ybSwgODU3NjV9LCAvLyBfX252dm1fdWkyZF9ybQotICAgICAge0ludHJpbnNpYzo6bnZ2bV91aTJkX3JuLCA4NTc4MH0sIC8vIF9fbnZ2bV91aTJkX3JuCi0gICAgICB7SW50cmluc2ljOjpudnZtX3VpMmRfcnAsIDg1Nzk1fSwgLy8gX19udnZtX3VpMmRfcnAKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdWkyZF9yeiwgODU4MTB9LCAvLyBfX252dm1fdWkyZF9yegotICAgICAge0ludHJpbnNpYzo6bnZ2bV91aTJmX3JtLCA4NTgyNX0sIC8vIF9fbnZ2bV91aTJmX3JtCi0gICAgICB7SW50cmluc2ljOjpudnZtX3VpMmZfcm4sIDg1ODQwfSwgLy8gX19udnZtX3VpMmZfcm4KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdWkyZl9ycCwgODU4NTV9LCAvLyBfX252dm1fdWkyZl9ycAotICAgICAge0ludHJpbnNpYzo6bnZ2bV91aTJmX3J6LCA4NTg3MH0sIC8vIF9fbnZ2bV91aTJmX3J6Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3VsbDJkX3JtLCA4NTg4NX0sIC8vIF9fbnZ2bV91bGwyZF9ybQotICAgICAge0ludHJpbnNpYzo6bnZ2bV91bGwyZF9ybiwgODU5MDF9LCAvLyBfX252dm1fdWxsMmRfcm4KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdWxsMmRfcnAsIDg1OTE3fSwgLy8gX19udnZtX3VsbDJkX3JwCi0gICAgICB7SW50cmluc2ljOjpudnZtX3VsbDJkX3J6LCA4NTkzM30sIC8vIF9fbnZ2bV91bGwyZF9yegotICAgICAge0ludHJpbnNpYzo6bnZ2bV91bGwyZl9ybSwgODU5NDl9LCAvLyBfX252dm1fdWxsMmZfcm0KLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdWxsMmZfcm4sIDg1OTY1fSwgLy8gX19udnZtX3VsbDJmX3JuCi0gICAgICB7SW50cmluc2ljOjpudnZtX3VsbDJmX3JwLCA4NTk4MX0sIC8vIF9fbnZ2bV91bGwyZl9ycAotICAgICAge0ludHJpbnNpYzo6bnZ2bV91bGwyZl9yeiwgODU5OTd9LCAvLyBfX252dm1fdWxsMmZfcnoKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdm90ZV9hbGwsIDg2MDEzfSwgLy8gX19udnZtX3ZvdGVfYWxsCi0gICAgICB7SW50cmluc2ljOjpudnZtX3ZvdGVfYWxsX3N5bmMsIDg2MDI5fSwgLy8gX19udnZtX3ZvdGVfYWxsX3N5bmMKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdm90ZV9hbnksIDg2MDUwfSwgLy8gX19udnZtX3ZvdGVfYW55Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3ZvdGVfYW55X3N5bmMsIDg2MDY2fSwgLy8gX19udnZtX3ZvdGVfYW55X3N5bmMKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdm90ZV9iYWxsb3QsIDg2MDg3fSwgLy8gX19udnZtX3ZvdGVfYmFsbG90Ci0gICAgICB7SW50cmluc2ljOjpudnZtX3ZvdGVfYmFsbG90X3N5bmMsIDg2MTA2fSwgLy8gX19udnZtX3ZvdGVfYmFsbG90X3N5bmMKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fdm90ZV91bmksIDg2MTMwfSwgLy8gX19udnZtX3ZvdGVfdW5pCi0gICAgICB7SW50cmluc2ljOjpudnZtX3ZvdGVfdW5pX3N5bmMsIDg2MTQ2fSwgLy8gX19udnZtX3ZvdGVfdW5pX3N5bmMKLSAgICAgIHtJbnRyaW5zaWM6Om52dm1fYmFycmllcjAsIDczMjM1fSwgLy8gX19zeW5jdGhyZWFkcworICAgICAge0ludHJpbnNpYzo6bnZ2bV9hZGRfcm1fZCwgNzQ1ODF9LCAvLyBfX252dm1fYWRkX3JtX2QKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fYWRkX3JtX2YsIDc0NTk3fSwgLy8gX19udnZtX2FkZF9ybV9mCisgICAgICB7SW50cmluc2ljOjpudnZtX2FkZF9ybV9mdHpfZiwgNzQ2MTN9LCAvLyBfX252dm1fYWRkX3JtX2Z0el9mCisgICAgICB7SW50cmluc2ljOjpudnZtX2FkZF9ybl9kLCA3NDYzM30sIC8vIF9fbnZ2bV9hZGRfcm5fZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9hZGRfcm5fZiwgNzQ2NDl9LCAvLyBfX252dm1fYWRkX3JuX2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fYWRkX3JuX2Z0el9mLCA3NDY2NX0sIC8vIF9fbnZ2bV9hZGRfcm5fZnR6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fYWRkX3JwX2QsIDc0Njg1fSwgLy8gX19udnZtX2FkZF9ycF9kCisgICAgICB7SW50cmluc2ljOjpudnZtX2FkZF9ycF9mLCA3NDcwMX0sIC8vIF9fbnZ2bV9hZGRfcnBfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9hZGRfcnBfZnR6X2YsIDc0NzE3fSwgLy8gX19udnZtX2FkZF9ycF9mdHpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9hZGRfcnpfZCwgNzQ3Mzd9LCAvLyBfX252dm1fYWRkX3J6X2QKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fYWRkX3J6X2YsIDc0NzUzfSwgLy8gX19udnZtX2FkZF9yel9mCisgICAgICB7SW50cmluc2ljOjpudnZtX2FkZF9yel9mdHpfZiwgNzQ3Njl9LCAvLyBfX252dm1fYWRkX3J6X2Z0el9mCisgICAgICB7SW50cmluc2ljOjpudnZtX2JhcnJpZXIsIDc0ODI2fSwgLy8gX19udnZtX2JhcgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9iYXJyaWVyMF9hbmQsIDc0OTA4fSwgLy8gX19udnZtX2JhcjBfYW5kCisgICAgICB7SW50cmluc2ljOjpudnZtX2JhcnJpZXIwX29yLCA3NDkyNH0sIC8vIF9fbnZ2bV9iYXIwX29yCisgICAgICB7SW50cmluc2ljOjpudnZtX2JhcnJpZXIwX3BvcGMsIDc0OTM5fSwgLy8gX19udnZtX2JhcjBfcG9wYworICAgICAge0ludHJpbnNpYzo6bnZ2bV9iYXJyaWVyX24sIDc0ODM3fSwgLy8gX19udnZtX2Jhcl9uCisgICAgICB7SW50cmluc2ljOjpudnZtX2Jhcl9zeW5jLCA3NDc4OX0sIC8vIF9fbnZ2bV9iYXJfc3luYworICAgICAge0ludHJpbnNpYzo6bnZ2bV9iYXJfd2FycF9zeW5jLCA3NDgwNX0sIC8vIF9fbnZ2bV9iYXJfd2FycF9zeW5jCisgICAgICB7SW50cmluc2ljOjpudnZtX2JhcnJpZXJfc3luYywgNzQ4NTB9LCAvLyBfX252dm1fYmFycmllcl9zeW5jCisgICAgICB7SW50cmluc2ljOjpudnZtX2JhcnJpZXJfc3luY19jbnQsIDc0ODcwfSwgLy8gX19udnZtX2JhcnJpZXJfc3luY19jbnQKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fYml0Y2FzdF9kMmxsLCA3NDk1Nn0sIC8vIF9fbnZ2bV9iaXRjYXN0X2QybGwKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fYml0Y2FzdF9mMmksIDc0OTc2fSwgLy8gX19udnZtX2JpdGNhc3RfZjJpCisgICAgICB7SW50cmluc2ljOjpudnZtX2JpdGNhc3RfaTJmLCA3NDk5NX0sIC8vIF9fbnZ2bV9iaXRjYXN0X2kyZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9iaXRjYXN0X2xsMmQsIDc1MDE0fSwgLy8gX19udnZtX2JpdGNhc3RfbGwyZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9jZWlsX2QsIDc1MDM0fSwgLy8gX19udnZtX2NlaWxfZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9jZWlsX2YsIDc1MDQ4fSwgLy8gX19udnZtX2NlaWxfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9jZWlsX2Z0el9mLCA3NTA2Mn0sIC8vIF9fbnZ2bV9jZWlsX2Z0el9mCisgICAgICB7SW50cmluc2ljOjpudnZtX2Nvc19hcHByb3hfZiwgNzUwODB9LCAvLyBfX252dm1fY29zX2FwcHJveF9mCisgICAgICB7SW50cmluc2ljOjpudnZtX2Nvc19hcHByb3hfZnR6X2YsIDc1MTAwfSwgLy8gX19udnZtX2Nvc19hcHByb3hfZnR6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJmX3JtLCA3NTEyNH0sIC8vIF9fbnZ2bV9kMmZfcm0KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJmX3JtX2Z0eiwgNzUxMzh9LCAvLyBfX252dm1fZDJmX3JtX2Z0egorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmZfcm4sIDc1MTU2fSwgLy8gX19udnZtX2QyZl9ybgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmZfcm5fZnR6LCA3NTE3MH0sIC8vIF9fbnZ2bV9kMmZfcm5fZnR6CisgICAgICB7SW50cmluc2ljOjpudnZtX2QyZl9ycCwgNzUxODh9LCAvLyBfX252dm1fZDJmX3JwCisgICAgICB7SW50cmluc2ljOjpudnZtX2QyZl9ycF9mdHosIDc1MjAyfSwgLy8gX19udnZtX2QyZl9ycF9mdHoKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJmX3J6LCA3NTIyMH0sIC8vIF9fbnZ2bV9kMmZfcnoKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJmX3J6X2Z0eiwgNzUyMzR9LCAvLyBfX252dm1fZDJmX3J6X2Z0egorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmlfaGksIDc1MjUyfSwgLy8gX19udnZtX2QyaV9oaQorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmlfbG8sIDc1MjY2fSwgLy8gX19udnZtX2QyaV9sbworICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmlfcm0sIDc1MjgwfSwgLy8gX19udnZtX2QyaV9ybQorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmlfcm4sIDc1Mjk0fSwgLy8gX19udnZtX2QyaV9ybgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmlfcnAsIDc1MzA4fSwgLy8gX19udnZtX2QyaV9ycAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmlfcnosIDc1MzIyfSwgLy8gX19udnZtX2QyaV9yegorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmxsX3JtLCA3NTMzNn0sIC8vIF9fbnZ2bV9kMmxsX3JtCisgICAgICB7SW50cmluc2ljOjpudnZtX2QybGxfcm4sIDc1MzUxfSwgLy8gX19udnZtX2QybGxfcm4KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJsbF9ycCwgNzUzNjZ9LCAvLyBfX252dm1fZDJsbF9ycAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMmxsX3J6LCA3NTM4MX0sIC8vIF9fbnZ2bV9kMmxsX3J6CisgICAgICB7SW50cmluc2ljOjpudnZtX2QydWlfcm0sIDc1Mzk2fSwgLy8gX19udnZtX2QydWlfcm0KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJ1aV9ybiwgNzU0MTF9LCAvLyBfX252dm1fZDJ1aV9ybgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMnVpX3JwLCA3NTQyNn0sIC8vIF9fbnZ2bV9kMnVpX3JwCisgICAgICB7SW50cmluc2ljOjpudnZtX2QydWlfcnosIDc1NDQxfSwgLy8gX19udnZtX2QydWlfcnoKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJ1bGxfcm0sIDc1NDU2fSwgLy8gX19udnZtX2QydWxsX3JtCisgICAgICB7SW50cmluc2ljOjpudnZtX2QydWxsX3JuLCA3NTQ3Mn0sIC8vIF9fbnZ2bV9kMnVsbF9ybgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kMnVsbF9ycCwgNzU0ODh9LCAvLyBfX252dm1fZDJ1bGxfcnAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZDJ1bGxfcnosIDc1NTA0fSwgLy8gX19udnZtX2QydWxsX3J6CisgICAgICB7SW50cmluc2ljOjpudnZtX2Rpdl9hcHByb3hfZiwgNzU1MjB9LCAvLyBfX252dm1fZGl2X2FwcHJveF9mCisgICAgICB7SW50cmluc2ljOjpudnZtX2Rpdl9hcHByb3hfZnR6X2YsIDc1NTQwfSwgLy8gX19udnZtX2Rpdl9hcHByb3hfZnR6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZGl2X3JtX2QsIDc1NTY0fSwgLy8gX19udnZtX2Rpdl9ybV9kCisgICAgICB7SW50cmluc2ljOjpudnZtX2Rpdl9ybV9mLCA3NTU4MH0sIC8vIF9fbnZ2bV9kaXZfcm1fZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kaXZfcm1fZnR6X2YsIDc1NTk2fSwgLy8gX19udnZtX2Rpdl9ybV9mdHpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kaXZfcm5fZCwgNzU2MTZ9LCAvLyBfX252dm1fZGl2X3JuX2QKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZGl2X3JuX2YsIDc1NjMyfSwgLy8gX19udnZtX2Rpdl9ybl9mCisgICAgICB7SW50cmluc2ljOjpudnZtX2Rpdl9ybl9mdHpfZiwgNzU2NDh9LCAvLyBfX252dm1fZGl2X3JuX2Z0el9mCisgICAgICB7SW50cmluc2ljOjpudnZtX2Rpdl9ycF9kLCA3NTY2OH0sIC8vIF9fbnZ2bV9kaXZfcnBfZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kaXZfcnBfZiwgNzU2ODR9LCAvLyBfX252dm1fZGl2X3JwX2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZGl2X3JwX2Z0el9mLCA3NTcwMH0sIC8vIF9fbnZ2bV9kaXZfcnBfZnR6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZGl2X3J6X2QsIDc1NzIwfSwgLy8gX19udnZtX2Rpdl9yel9kCisgICAgICB7SW50cmluc2ljOjpudnZtX2Rpdl9yel9mLCA3NTczNn0sIC8vIF9fbnZ2bV9kaXZfcnpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9kaXZfcnpfZnR6X2YsIDc1NzUyfSwgLy8gX19udnZtX2Rpdl9yel9mdHpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9leDJfYXBwcm94X2QsIDc1NzcyfSwgLy8gX19udnZtX2V4Ml9hcHByb3hfZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9leDJfYXBwcm94X2YsIDc1NzkyfSwgLy8gX19udnZtX2V4Ml9hcHByb3hfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9leDJfYXBwcm94X2Z0el9mLCA3NTgxMn0sIC8vIF9fbnZ2bV9leDJfYXBwcm94X2Z0el9mCisgICAgICB7SW50cmluc2ljOjpudnZtX2YyaF9ybiwgNzU4MzZ9LCAvLyBfX252dm1fZjJoX3JuCisgICAgICB7SW50cmluc2ljOjpudnZtX2YyaF9ybl9mdHosIDc1ODUwfSwgLy8gX19udnZtX2YyaF9ybl9mdHoKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZjJpX3JtLCA3NTg2OH0sIC8vIF9fbnZ2bV9mMmlfcm0KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZjJpX3JtX2Z0eiwgNzU4ODJ9LCAvLyBfX252dm1fZjJpX3JtX2Z0egorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMmlfcm4sIDc1OTAwfSwgLy8gX19udnZtX2YyaV9ybgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMmlfcm5fZnR6LCA3NTkxNH0sIC8vIF9fbnZ2bV9mMmlfcm5fZnR6CisgICAgICB7SW50cmluc2ljOjpudnZtX2YyaV9ycCwgNzU5MzJ9LCAvLyBfX252dm1fZjJpX3JwCisgICAgICB7SW50cmluc2ljOjpudnZtX2YyaV9ycF9mdHosIDc1OTQ2fSwgLy8gX19udnZtX2YyaV9ycF9mdHoKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZjJpX3J6LCA3NTk2NH0sIC8vIF9fbnZ2bV9mMmlfcnoKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZjJpX3J6X2Z0eiwgNzU5Nzh9LCAvLyBfX252dm1fZjJpX3J6X2Z0egorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMmxsX3JtLCA3NTk5Nn0sIC8vIF9fbnZ2bV9mMmxsX3JtCisgICAgICB7SW50cmluc2ljOjpudnZtX2YybGxfcm1fZnR6LCA3NjAxMX0sIC8vIF9fbnZ2bV9mMmxsX3JtX2Z0egorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMmxsX3JuLCA3NjAzMH0sIC8vIF9fbnZ2bV9mMmxsX3JuCisgICAgICB7SW50cmluc2ljOjpudnZtX2YybGxfcm5fZnR6LCA3NjA0NX0sIC8vIF9fbnZ2bV9mMmxsX3JuX2Z0egorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMmxsX3JwLCA3NjA2NH0sIC8vIF9fbnZ2bV9mMmxsX3JwCisgICAgICB7SW50cmluc2ljOjpudnZtX2YybGxfcnBfZnR6LCA3NjA3OX0sIC8vIF9fbnZ2bV9mMmxsX3JwX2Z0egorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMmxsX3J6LCA3NjA5OH0sIC8vIF9fbnZ2bV9mMmxsX3J6CisgICAgICB7SW50cmluc2ljOjpudnZtX2YybGxfcnpfZnR6LCA3NjExM30sIC8vIF9fbnZ2bV9mMmxsX3J6X2Z0egorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMnVpX3JtLCA3NjEzMn0sIC8vIF9fbnZ2bV9mMnVpX3JtCisgICAgICB7SW50cmluc2ljOjpudnZtX2YydWlfcm1fZnR6LCA3NjE0N30sIC8vIF9fbnZ2bV9mMnVpX3JtX2Z0egorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMnVpX3JuLCA3NjE2Nn0sIC8vIF9fbnZ2bV9mMnVpX3JuCisgICAgICB7SW50cmluc2ljOjpudnZtX2YydWlfcm5fZnR6LCA3NjE4MX0sIC8vIF9fbnZ2bV9mMnVpX3JuX2Z0egorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMnVpX3JwLCA3NjIwMH0sIC8vIF9fbnZ2bV9mMnVpX3JwCisgICAgICB7SW50cmluc2ljOjpudnZtX2YydWlfcnBfZnR6LCA3NjIxNX0sIC8vIF9fbnZ2bV9mMnVpX3JwX2Z0egorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMnVpX3J6LCA3NjIzNH0sIC8vIF9fbnZ2bV9mMnVpX3J6CisgICAgICB7SW50cmluc2ljOjpudnZtX2YydWlfcnpfZnR6LCA3NjI0OX0sIC8vIF9fbnZ2bV9mMnVpX3J6X2Z0egorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMnVsbF9ybSwgNzYyNjh9LCAvLyBfX252dm1fZjJ1bGxfcm0KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZjJ1bGxfcm1fZnR6LCA3NjI4NH0sIC8vIF9fbnZ2bV9mMnVsbF9ybV9mdHoKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZjJ1bGxfcm4sIDc2MzA0fSwgLy8gX19udnZtX2YydWxsX3JuCisgICAgICB7SW50cmluc2ljOjpudnZtX2YydWxsX3JuX2Z0eiwgNzYzMjB9LCAvLyBfX252dm1fZjJ1bGxfcm5fZnR6CisgICAgICB7SW50cmluc2ljOjpudnZtX2YydWxsX3JwLCA3NjM0MH0sIC8vIF9fbnZ2bV9mMnVsbF9ycAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMnVsbF9ycF9mdHosIDc2MzU2fSwgLy8gX19udnZtX2YydWxsX3JwX2Z0egorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mMnVsbF9yeiwgNzYzNzZ9LCAvLyBfX252dm1fZjJ1bGxfcnoKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZjJ1bGxfcnpfZnR6LCA3NjM5Mn0sIC8vIF9fbnZ2bV9mMnVsbF9yel9mdHoKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZmFic19kLCA3NjQxMn0sIC8vIF9fbnZ2bV9mYWJzX2QKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZmFic19mLCA3NjQyNn0sIC8vIF9fbnZ2bV9mYWJzX2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZmFic19mdHpfZiwgNzY0NDB9LCAvLyBfX252dm1fZmFic19mdHpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbG9vcl9kLCA3NjQ1OH0sIC8vIF9fbnZ2bV9mbG9vcl9kCisgICAgICB7SW50cmluc2ljOjpudnZtX2Zsb29yX2YsIDc2NDczfSwgLy8gX19udnZtX2Zsb29yX2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZmxvb3JfZnR6X2YsIDc2NDg4fSwgLy8gX19udnZtX2Zsb29yX2Z0el9mCisgICAgICB7SW50cmluc2ljOjpudnZtX2ZtYV9ybV9kLCA3NjUwN30sIC8vIF9fbnZ2bV9mbWFfcm1fZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbWFfcm1fZiwgNzY1MjN9LCAvLyBfX252dm1fZm1hX3JtX2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZm1hX3JtX2Z0el9mLCA3NjUzOX0sIC8vIF9fbnZ2bV9mbWFfcm1fZnR6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZm1hX3JuX2QsIDc2NTU5fSwgLy8gX19udnZtX2ZtYV9ybl9kCisgICAgICB7SW50cmluc2ljOjpudnZtX2ZtYV9ybl9mLCA3NjU3NX0sIC8vIF9fbnZ2bV9mbWFfcm5fZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbWFfcm5fZnR6X2YsIDc2NTkxfSwgLy8gX19udnZtX2ZtYV9ybl9mdHpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbWFfcnBfZCwgNzY2MTF9LCAvLyBfX252dm1fZm1hX3JwX2QKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZm1hX3JwX2YsIDc2NjI3fSwgLy8gX19udnZtX2ZtYV9ycF9mCisgICAgICB7SW50cmluc2ljOjpudnZtX2ZtYV9ycF9mdHpfZiwgNzY2NDN9LCAvLyBfX252dm1fZm1hX3JwX2Z0el9mCisgICAgICB7SW50cmluc2ljOjpudnZtX2ZtYV9yel9kLCA3NjY2M30sIC8vIF9fbnZ2bV9mbWFfcnpfZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbWFfcnpfZiwgNzY2Nzl9LCAvLyBfX252dm1fZm1hX3J6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZm1hX3J6X2Z0el9mLCA3NjY5NX0sIC8vIF9fbnZ2bV9mbWFfcnpfZnR6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZm1heF9kLCA3NjcxNX0sIC8vIF9fbnZ2bV9mbWF4X2QKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZm1heF9mLCA3NjcyOX0sIC8vIF9fbnZ2bV9mbWF4X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fZm1heF9mdHpfZiwgNzY3NDN9LCAvLyBfX252dm1fZm1heF9mdHpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbWluX2QsIDc2NzYxfSwgLy8gX19udnZtX2ZtaW5fZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbWluX2YsIDc2Nzc1fSwgLy8gX19udnZtX2ZtaW5fZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9mbWluX2Z0el9mLCA3Njc4OX0sIC8vIF9fbnZ2bV9mbWluX2Z0el9mCisgICAgICB7SW50cmluc2ljOjpudnZtX2ZucywgNzY4MDd9LCAvLyBfX252dm1fZm5zCisgICAgICB7SW50cmluc2ljOjpudnZtX2kyZF9ybSwgNzY4MTh9LCAvLyBfX252dm1faTJkX3JtCisgICAgICB7SW50cmluc2ljOjpudnZtX2kyZF9ybiwgNzY4MzJ9LCAvLyBfX252dm1faTJkX3JuCisgICAgICB7SW50cmluc2ljOjpudnZtX2kyZF9ycCwgNzY4NDZ9LCAvLyBfX252dm1faTJkX3JwCisgICAgICB7SW50cmluc2ljOjpudnZtX2kyZF9yeiwgNzY4NjB9LCAvLyBfX252dm1faTJkX3J6CisgICAgICB7SW50cmluc2ljOjpudnZtX2kyZl9ybSwgNzY4NzR9LCAvLyBfX252dm1faTJmX3JtCisgICAgICB7SW50cmluc2ljOjpudnZtX2kyZl9ybiwgNzY4ODh9LCAvLyBfX252dm1faTJmX3JuCisgICAgICB7SW50cmluc2ljOjpudnZtX2kyZl9ycCwgNzY5MDJ9LCAvLyBfX252dm1faTJmX3JwCisgICAgICB7SW50cmluc2ljOjpudnZtX2kyZl9yeiwgNzY5MTZ9LCAvLyBfX252dm1faTJmX3J6CisgICAgICB7SW50cmluc2ljOjpudnZtX2lzc3BhY2VwX2NvbnN0LCA3NjkzMH0sIC8vIF9fbnZ2bV9pc3NwYWNlcF9jb25zdAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9pc3NwYWNlcF9nbG9iYWwsIDc2OTUyfSwgLy8gX19udnZtX2lzc3BhY2VwX2dsb2JhbAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9pc3NwYWNlcF9sb2NhbCwgNzY5NzV9LCAvLyBfX252dm1faXNzcGFjZXBfbG9jYWwKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1faXNzcGFjZXBfc2hhcmVkLCA3Njk5N30sIC8vIF9fbnZ2bV9pc3NwYWNlcF9zaGFyZWQKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1faXN0eXBlcF9zYW1wbGVyLCA3NzAyMH0sIC8vIF9fbnZ2bV9pc3R5cGVwX3NhbXBsZXIKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1faXN0eXBlcF9zdXJmYWNlLCA3NzA0M30sIC8vIF9fbnZ2bV9pc3R5cGVwX3N1cmZhY2UKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1faXN0eXBlcF90ZXh0dXJlLCA3NzA2Nn0sIC8vIF9fbnZ2bV9pc3R5cGVwX3RleHR1cmUKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fbGcyX2FwcHJveF9kLCA3NzA4OX0sIC8vIF9fbnZ2bV9sZzJfYXBwcm94X2QKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fbGcyX2FwcHJveF9mLCA3NzEwOX0sIC8vIF9fbnZ2bV9sZzJfYXBwcm94X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fbGcyX2FwcHJveF9mdHpfZiwgNzcxMjl9LCAvLyBfX252dm1fbGcyX2FwcHJveF9mdHpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9sbDJkX3JtLCA3NzE1M30sIC8vIF9fbnZ2bV9sbDJkX3JtCisgICAgICB7SW50cmluc2ljOjpudnZtX2xsMmRfcm4sIDc3MTY4fSwgLy8gX19udnZtX2xsMmRfcm4KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fbGwyZF9ycCwgNzcxODN9LCAvLyBfX252dm1fbGwyZF9ycAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9sbDJkX3J6LCA3NzE5OH0sIC8vIF9fbnZ2bV9sbDJkX3J6CisgICAgICB7SW50cmluc2ljOjpudnZtX2xsMmZfcm0sIDc3MjEzfSwgLy8gX19udnZtX2xsMmZfcm0KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fbGwyZl9ybiwgNzcyMjh9LCAvLyBfX252dm1fbGwyZl9ybgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9sbDJmX3JwLCA3NzI0M30sIC8vIF9fbnZ2bV9sbDJmX3JwCisgICAgICB7SW50cmluc2ljOjpudnZtX2xsMmZfcnosIDc3MjU4fSwgLy8gX19udnZtX2xsMmZfcnoKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fbG9oaV9pMmQsIDc3MjczfSwgLy8gX19udnZtX2xvaGlfaTJkCisgICAgICB7SW50cmluc2ljOjpudnZtX21hdGNoX2FueV9zeW5jX2kzMiwgNzcyODl9LCAvLyBfX252dm1fbWF0Y2hfYW55X3N5bmNfaTMyCisgICAgICB7SW50cmluc2ljOjpudnZtX21hdGNoX2FueV9zeW5jX2k2NCwgNzczMTV9LCAvLyBfX252dm1fbWF0Y2hfYW55X3N5bmNfaTY0CisgICAgICB7SW50cmluc2ljOjpudnZtX21lbWJhcl9jdGEsIDc3MzQxfSwgLy8gX19udnZtX21lbWJhcl9jdGEKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fbWVtYmFyX2dsLCA3NzM1OX0sIC8vIF9fbnZ2bV9tZW1iYXJfZ2wKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fbWVtYmFyX3N5cywgNzczNzZ9LCAvLyBfX252dm1fbWVtYmFyX3N5cworICAgICAge0ludHJpbnNpYzo6bnZ2bV9tdWwyNF9pLCA3NzYwMn0sIC8vIF9fbnZ2bV9tdWwyNF9pCisgICAgICB7SW50cmluc2ljOjpudnZtX211bDI0X3VpLCA3NzYxN30sIC8vIF9fbnZ2bV9tdWwyNF91aQorICAgICAge0ludHJpbnNpYzo6bnZ2bV9tdWxfcm1fZCwgNzczOTR9LCAvLyBfX252dm1fbXVsX3JtX2QKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fbXVsX3JtX2YsIDc3NDEwfSwgLy8gX19udnZtX211bF9ybV9mCisgICAgICB7SW50cmluc2ljOjpudnZtX211bF9ybV9mdHpfZiwgNzc0MjZ9LCAvLyBfX252dm1fbXVsX3JtX2Z0el9mCisgICAgICB7SW50cmluc2ljOjpudnZtX211bF9ybl9kLCA3NzQ0Nn0sIC8vIF9fbnZ2bV9tdWxfcm5fZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9tdWxfcm5fZiwgNzc0NjJ9LCAvLyBfX252dm1fbXVsX3JuX2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fbXVsX3JuX2Z0el9mLCA3NzQ3OH0sIC8vIF9fbnZ2bV9tdWxfcm5fZnR6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fbXVsX3JwX2QsIDc3NDk4fSwgLy8gX19udnZtX211bF9ycF9kCisgICAgICB7SW50cmluc2ljOjpudnZtX211bF9ycF9mLCA3NzUxNH0sIC8vIF9fbnZ2bV9tdWxfcnBfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9tdWxfcnBfZnR6X2YsIDc3NTMwfSwgLy8gX19udnZtX211bF9ycF9mdHpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9tdWxfcnpfZCwgNzc1NTB9LCAvLyBfX252dm1fbXVsX3J6X2QKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fbXVsX3J6X2YsIDc3NTY2fSwgLy8gX19udnZtX211bF9yel9mCisgICAgICB7SW50cmluc2ljOjpudnZtX211bF9yel9mdHpfZiwgNzc1ODJ9LCAvLyBfX252dm1fbXVsX3J6X2Z0el9mCisgICAgICB7SW50cmluc2ljOjpudnZtX211bGhpX2ksIDc3NjMzfSwgLy8gX19udnZtX211bGhpX2kKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fbXVsaGlfbGwsIDc3NjQ4fSwgLy8gX19udnZtX211bGhpX2xsCisgICAgICB7SW50cmluc2ljOjpudnZtX211bGhpX3VpLCA3NzY2NH0sIC8vIF9fbnZ2bV9tdWxoaV91aQorICAgICAge0ludHJpbnNpYzo6bnZ2bV9tdWxoaV91bGwsIDc3NjgwfSwgLy8gX19udnZtX211bGhpX3VsbAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9wcm10LCA3NzY5N30sIC8vIF9fbnZ2bV9wcm10CisgICAgICB7SW50cmluc2ljOjpudnZtX3JjcF9hcHByb3hfZnR6X2QsIDc3NzA5fSwgLy8gX19udnZtX3JjcF9hcHByb3hfZnR6X2QKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmNwX3JtX2QsIDc3NzMzfSwgLy8gX19udnZtX3JjcF9ybV9kCisgICAgICB7SW50cmluc2ljOjpudnZtX3JjcF9ybV9mLCA3Nzc0OX0sIC8vIF9fbnZ2bV9yY3Bfcm1fZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yY3Bfcm1fZnR6X2YsIDc3NzY1fSwgLy8gX19udnZtX3JjcF9ybV9mdHpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yY3Bfcm5fZCwgNzc3ODV9LCAvLyBfX252dm1fcmNwX3JuX2QKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmNwX3JuX2YsIDc3ODAxfSwgLy8gX19udnZtX3JjcF9ybl9mCisgICAgICB7SW50cmluc2ljOjpudnZtX3JjcF9ybl9mdHpfZiwgNzc4MTd9LCAvLyBfX252dm1fcmNwX3JuX2Z0el9mCisgICAgICB7SW50cmluc2ljOjpudnZtX3JjcF9ycF9kLCA3NzgzN30sIC8vIF9fbnZ2bV9yY3BfcnBfZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yY3BfcnBfZiwgNzc4NTN9LCAvLyBfX252dm1fcmNwX3JwX2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmNwX3JwX2Z0el9mLCA3Nzg2OX0sIC8vIF9fbnZ2bV9yY3BfcnBfZnR6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmNwX3J6X2QsIDc3ODg5fSwgLy8gX19udnZtX3JjcF9yel9kCisgICAgICB7SW50cmluc2ljOjpudnZtX3JjcF9yel9mLCA3NzkwNX0sIC8vIF9fbnZ2bV9yY3BfcnpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yY3BfcnpfZnR6X2YsIDc3OTIxfSwgLy8gX19udnZtX3JjcF9yel9mdHpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2Nsb2NrLCA3Nzk0MX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2Nsb2NrCisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfY2xvY2s2NCwgNzc5Njh9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19jbG9jazY0CisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfY3RhaWRfdywgNzc5OTd9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19jdGFpZF93CisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfY3RhaWRfeCwgNzgwMjZ9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19jdGFpZF94CisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfY3RhaWRfeSwgNzgwNTV9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19jdGFpZF95CisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfY3RhaWRfeiwgNzgwODR9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19jdGFpZF96CisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMCwgNzgxMTN9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcwCisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMSwgNzgxNDJ9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcxCisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTAsIDc4MTcxfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcxMSwgNzgyMDF9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcxMQorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzEyLCA3ODIzMX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzEyCisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTMsIDc4MjYxfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTMKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcxNCwgNzgyOTF9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcxNAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzE1LCA3ODMyMX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzE1CisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTYsIDc4MzUxfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTYKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcxNywgNzgzODF9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcxNworICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzE4LCA3ODQxMX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzE4CisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTksIDc4NDQxfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMTkKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyLCA3ODQ3MX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzIKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyMCwgNzg1MDB9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyMAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzIxLCA3ODUzMH0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzIxCisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMjIsIDc4NTYwfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMjIKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyMywgNzg1OTB9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyMworICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzI0LCA3ODYyMH0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzI0CisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMjUsIDc4NjUwfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMjUKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyNiwgNzg2ODB9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyNgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzI3LCA3ODcxMH0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzI3CisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMjgsIDc4NzQwfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMjgKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyOSwgNzg3NzB9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWcyOQorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzMsIDc4ODAwfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMworICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzMwLCA3ODgyOX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzMwCisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMzEsIDc4ODU5fSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZW52cmVnMzEKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWc0LCA3ODg4OX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzQKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWc1LCA3ODkxOH0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzUKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWc2LCA3ODk0N30sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzYKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWc3LCA3ODk3Nn0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzcKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWc4LCA3OTAwNX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzgKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19lbnZyZWc5LCA3OTAzNH0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2VudnJlZzkKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19ncmlkaWQsIDc5MDYzfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfZ3JpZGlkCisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfbGFuZWlkLCA3OTA5MX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2xhbmVpZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2xhbmVtYXNrX2VxLCA3OTExOX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2xhbmVtYXNrX2VxCisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfbGFuZW1hc2tfZ2UsIDc5MTUyfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfbGFuZW1hc2tfZ2UKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19sYW5lbWFza19ndCwgNzkxODV9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19sYW5lbWFza19ndAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX2xhbmVtYXNrX2xlLCA3OTIxOH0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX2xhbmVtYXNrX2xlCisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfbGFuZW1hc2tfbHQsIDc5MjUxfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfbGFuZW1hc2tfbHQKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19uY3RhaWRfdywgNzkyODR9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19uY3RhaWRfdworICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX25jdGFpZF94LCA3OTMxNH0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX25jdGFpZF94CisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfbmN0YWlkX3ksIDc5MzQ0fSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfbmN0YWlkX3kKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19uY3RhaWRfeiwgNzkzNzR9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19uY3RhaWRfegorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX25zbWlkLCA3OTQwNH0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX25zbWlkCisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfbnRpZF93LCA3OTQzMX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX250aWRfdworICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX250aWRfeCwgNzk0NTl9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19udGlkX3gKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19udGlkX3ksIDc5NDg3fSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfbnRpZF95CisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfbnRpZF96LCA3OTUxNX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX250aWRfegorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX253YXJwaWQsIDc5NTQzfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfbndhcnBpZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX3BtMCwgNzk1NzJ9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19wbTAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19wbTEsIDc5NTk3fSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfcG0xCisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfcG0yLCA3OTYyMn0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX3BtMgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX3BtMywgNzk2NDd9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ19wbTMKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ19zbWlkLCA3OTY3Mn0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX3NtaWQKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ190aWRfdywgNzk2OTh9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ190aWRfdworICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX3RpZF94LCA3OTcyNX0sIC8vIF9fbnZ2bV9yZWFkX3B0eF9zcmVnX3RpZF94CisgICAgICB7SW50cmluc2ljOjpudnZtX3JlYWRfcHR4X3NyZWdfdGlkX3ksIDc5NzUyfSwgLy8gX19udnZtX3JlYWRfcHR4X3NyZWdfdGlkX3kKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ190aWRfeiwgNzk3Nzl9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ190aWRfegorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yZWFkX3B0eF9zcmVnX3dhcnBpZCwgNzk4MDZ9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ193YXJwaWQKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcmVhZF9wdHhfc3JlZ193YXJwc2l6ZSwgNzk4MzR9LCAvLyBfX252dm1fcmVhZF9wdHhfc3JlZ193YXJwc2l6ZQorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yb3RhdGVfYjMyLCA3OTg2NH0sIC8vIF9fbnZ2bV9yb3RhdGVfYjMyCisgICAgICB7SW50cmluc2ljOjpudnZtX3JvdGF0ZV9iNjQsIDc5ODgyfSwgLy8gX19udnZtX3JvdGF0ZV9iNjQKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcm90YXRlX3JpZ2h0X2I2NCwgNzk5MDB9LCAvLyBfX252dm1fcm90YXRlX3JpZ2h0X2I2NAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yb3VuZF9kLCA3OTkyNH0sIC8vIF9fbnZ2bV9yb3VuZF9kCisgICAgICB7SW50cmluc2ljOjpudnZtX3JvdW5kX2YsIDc5OTM5fSwgLy8gX19udnZtX3JvdW5kX2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcm91bmRfZnR6X2YsIDc5OTU0fSwgLy8gX19udnZtX3JvdW5kX2Z0el9mCisgICAgICB7SW50cmluc2ljOjpudnZtX3JzcXJ0X2FwcHJveF9kLCA3OTk3M30sIC8vIF9fbnZ2bV9yc3FydF9hcHByb3hfZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9yc3FydF9hcHByb3hfZiwgNzk5OTV9LCAvLyBfX252dm1fcnNxcnRfYXBwcm94X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fcnNxcnRfYXBwcm94X2Z0el9mLCA4MDAxN30sIC8vIF9fbnZ2bV9yc3FydF9hcHByb3hfZnR6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc2FkX2ksIDgwMDQzfSwgLy8gX19udnZtX3NhZF9pCisgICAgICB7SW50cmluc2ljOjpudnZtX3NhZF91aSwgODAwNTZ9LCAvLyBfX252dm1fc2FkX3VpCisgICAgICB7SW50cmluc2ljOjpudnZtX3NhdHVyYXRlX2QsIDgwMDcwfSwgLy8gX19udnZtX3NhdHVyYXRlX2QKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc2F0dXJhdGVfZiwgODAwODh9LCAvLyBfX252dm1fc2F0dXJhdGVfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zYXR1cmF0ZV9mdHpfZiwgODAxMDZ9LCAvLyBfX252dm1fc2F0dXJhdGVfZnR6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc2hmbF9iZmx5X2YzMiwgODAxMjh9LCAvLyBfX252dm1fc2hmbF9iZmx5X2YzMgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX2JmbHlfaTMyLCA4MDE0OX0sIC8vIF9fbnZ2bV9zaGZsX2JmbHlfaTMyCisgICAgICB7SW50cmluc2ljOjpudnZtX3NoZmxfZG93bl9mMzIsIDgwMTcwfSwgLy8gX19udnZtX3NoZmxfZG93bl9mMzIKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc2hmbF9kb3duX2kzMiwgODAxOTF9LCAvLyBfX252dm1fc2hmbF9kb3duX2kzMgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX2lkeF9mMzIsIDgwMjEyfSwgLy8gX19udnZtX3NoZmxfaWR4X2YzMgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX2lkeF9pMzIsIDgwMjMyfSwgLy8gX19udnZtX3NoZmxfaWR4X2kzMgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX3N5bmNfYmZseV9mMzIsIDgwMjUyfSwgLy8gX19udnZtX3NoZmxfc3luY19iZmx5X2YzMgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX3N5bmNfYmZseV9pMzIsIDgwMjc4fSwgLy8gX19udnZtX3NoZmxfc3luY19iZmx5X2kzMgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX3N5bmNfZG93bl9mMzIsIDgwMzA0fSwgLy8gX19udnZtX3NoZmxfc3luY19kb3duX2YzMgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX3N5bmNfZG93bl9pMzIsIDgwMzMwfSwgLy8gX19udnZtX3NoZmxfc3luY19kb3duX2kzMgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX3N5bmNfaWR4X2YzMiwgODAzNTZ9LCAvLyBfX252dm1fc2hmbF9zeW5jX2lkeF9mMzIKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc2hmbF9zeW5jX2lkeF9pMzIsIDgwMzgxfSwgLy8gX19udnZtX3NoZmxfc3luY19pZHhfaTMyCisgICAgICB7SW50cmluc2ljOjpudnZtX3NoZmxfc3luY191cF9mMzIsIDgwNDA2fSwgLy8gX19udnZtX3NoZmxfc3luY191cF9mMzIKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc2hmbF9zeW5jX3VwX2kzMiwgODA0MzB9LCAvLyBfX252dm1fc2hmbF9zeW5jX3VwX2kzMgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zaGZsX3VwX2YzMiwgODA0NTR9LCAvLyBfX252dm1fc2hmbF91cF9mMzIKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc2hmbF91cF9pMzIsIDgwNDczfSwgLy8gX19udnZtX3NoZmxfdXBfaTMyCisgICAgICB7SW50cmluc2ljOjpudnZtX3Npbl9hcHByb3hfZiwgODA0OTJ9LCAvLyBfX252dm1fc2luX2FwcHJveF9mCisgICAgICB7SW50cmluc2ljOjpudnZtX3Npbl9hcHByb3hfZnR6X2YsIDgwNTEyfSwgLy8gX19udnZtX3Npbl9hcHByb3hfZnR6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9hcHByb3hfZiwgODA1MzZ9LCAvLyBfX252dm1fc3FydF9hcHByb3hfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zcXJ0X2FwcHJveF9mdHpfZiwgODA1NTd9LCAvLyBfX252dm1fc3FydF9hcHByb3hfZnR6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9mLCA4MDU4Mn0sIC8vIF9fbnZ2bV9zcXJ0X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9ybV9kLCA4MDU5Nn0sIC8vIF9fbnZ2bV9zcXJ0X3JtX2QKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9ybV9mLCA4MDYxM30sIC8vIF9fbnZ2bV9zcXJ0X3JtX2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9ybV9mdHpfZiwgODA2MzB9LCAvLyBfX252dm1fc3FydF9ybV9mdHpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zcXJ0X3JuX2QsIDgwNjUxfSwgLy8gX19udnZtX3NxcnRfcm5fZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zcXJ0X3JuX2YsIDgwNjY4fSwgLy8gX19udnZtX3NxcnRfcm5fZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zcXJ0X3JuX2Z0el9mLCA4MDY4NX0sIC8vIF9fbnZ2bV9zcXJ0X3JuX2Z0el9mCisgICAgICB7SW50cmluc2ljOjpudnZtX3NxcnRfcnBfZCwgODA3MDZ9LCAvLyBfX252dm1fc3FydF9ycF9kCisgICAgICB7SW50cmluc2ljOjpudnZtX3NxcnRfcnBfZiwgODA3MjN9LCAvLyBfX252dm1fc3FydF9ycF9mCisgICAgICB7SW50cmluc2ljOjpudnZtX3NxcnRfcnBfZnR6X2YsIDgwNzQwfSwgLy8gX19udnZtX3NxcnRfcnBfZnR6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9yel9kLCA4MDc2MX0sIC8vIF9fbnZ2bV9zcXJ0X3J6X2QKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9yel9mLCA4MDc3OH0sIC8vIF9fbnZ2bV9zcXJ0X3J6X2YKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3FydF9yel9mdHpfZiwgODA3OTV9LCAvLyBfX252dm1fc3FydF9yel9mdHpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXFfYXJyYXlfc2l6ZSwgODA4MTZ9LCAvLyBfX252dm1fc3VxX2FycmF5X3NpemUKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VxX2NoYW5uZWxfZGF0YV90eXBlLCA4MDgzOH0sIC8vIF9fbnZ2bV9zdXFfY2hhbm5lbF9kYXRhX3R5cGUKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VxX2NoYW5uZWxfb3JkZXIsIDgwODY3fSwgLy8gX19udnZtX3N1cV9jaGFubmVsX29yZGVyCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1cV9kZXB0aCwgODA4OTJ9LCAvLyBfX252dm1fc3VxX2RlcHRoCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1cV9oZWlnaHQsIDgwOTA5fSwgLy8gX19udnZtX3N1cV9oZWlnaHQKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VxX3dpZHRoLCA4MDkyN30sIC8vIF9fbnZ2bV9zdXFfd2lkdGgKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X2kxNl9jbGFtcCwgODA5NDR9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X2kxNl9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfaTE2X3RyYXAsIDgwOTc3fSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV9pMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfaTE2X3plcm8sIDgxMDA5fSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV9pMTZfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfaTMyX2NsYW1wLCA4MTA0MX0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfaTMyX2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV9pMzJfdHJhcCwgODEwNzR9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X2kzMl90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV9pMzJfemVybywgODExMDZ9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X2kzMl96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV9pNjRfY2xhbXAsIDgxMTM4fSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV9pNjRfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X2k2NF90cmFwLCA4MTE3MX0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfaTY0X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X2k2NF96ZXJvLCA4MTIwM30sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfaTY0X3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X2k4X2NsYW1wLCA4MTIzNX0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfaThfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X2k4X3RyYXAsIDgxMjY3fSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV9pOF90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV9pOF96ZXJvLCA4MTI5OH0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfaThfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpMTZfY2xhbXAsIDgxMzI5fSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV92MmkxNl9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpMTZfdHJhcCwgODEzNjR9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3YyaTE2X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X3YyaTE2X3plcm8sIDgxMzk4fSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV92MmkxNl96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV92MmkzMl9jbGFtcCwgODE0MzJ9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3YyaTMyX2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV92MmkzMl90cmFwLCA4MTQ2N30sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpMzJfemVybywgODE1MDF9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3YyaTMyX3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X3YyaTY0X2NsYW1wLCA4MTUzNX0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpNjRfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X3YyaTY0X3RyYXAsIDgxNTcwfSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV92Mmk2NF90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV92Mmk2NF96ZXJvLCA4MTYwNH0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpNjRfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpOF9jbGFtcCwgODE2Mzh9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3YyaThfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X3YyaThfdHJhcCwgODE2NzJ9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3YyaThfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpOF96ZXJvLCA4MTcwNX0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjJpOF96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV92NGkxNl9jbGFtcCwgODE3Mzh9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3Y0aTE2X2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV92NGkxNl90cmFwLCA4MTc3M30sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjRpMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjRpMTZfemVybywgODE4MDd9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3Y0aTE2X3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X3Y0aTMyX2NsYW1wLCA4MTg0MX0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjRpMzJfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X3Y0aTMyX3RyYXAsIDgxODc2fSwgLy8gX19udnZtX3N1c3RfYl8xZF9hcnJheV92NGkzMl90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9hcnJheV92NGkzMl96ZXJvLCA4MTkxMH0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjRpMzJfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjRpOF9jbGFtcCwgODE5NDR9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3Y0aThfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2FycmF5X3Y0aThfdHJhcCwgODE5Nzh9LCAvLyBfX252dm1fc3VzdF9iXzFkX2FycmF5X3Y0aThfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjRpOF96ZXJvLCA4MjAxMX0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfYXJyYXlfdjRpOF96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9pMTZfY2xhbXAsIDgyMDQ0fSwgLy8gX19udnZtX3N1c3RfYl8xZF9pMTZfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2kxNl90cmFwLCA4MjA3MX0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfaTE2X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2kxNl96ZXJvLCA4MjA5N30sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfaTE2X3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX2kzMl9jbGFtcCwgODIxMjN9LCAvLyBfX252dm1fc3VzdF9iXzFkX2kzMl9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfaTMyX3RyYXAsIDgyMTUwfSwgLy8gX19udnZtX3N1c3RfYl8xZF9pMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfaTMyX3plcm8sIDgyMTc2fSwgLy8gX19udnZtX3N1c3RfYl8xZF9pMzJfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfaTY0X2NsYW1wLCA4MjIwMn0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfaTY0X2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9pNjRfdHJhcCwgODIyMjl9LCAvLyBfX252dm1fc3VzdF9iXzFkX2k2NF90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9pNjRfemVybywgODIyNTV9LCAvLyBfX252dm1fc3VzdF9iXzFkX2k2NF96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9pOF9jbGFtcCwgODIyODF9LCAvLyBfX252dm1fc3VzdF9iXzFkX2k4X2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF9pOF90cmFwLCA4MjMwN30sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfaThfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfaThfemVybywgODIzMzJ9LCAvLyBfX252dm1fc3VzdF9iXzFkX2k4X3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3YyaTE2X2NsYW1wLCA4MjM1N30sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfdjJpMTZfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3YyaTE2X3RyYXAsIDgyMzg2fSwgLy8gX19udnZtX3N1c3RfYl8xZF92MmkxNl90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF92MmkxNl96ZXJvLCA4MjQxNH0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfdjJpMTZfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfdjJpMzJfY2xhbXAsIDgyNDQyfSwgLy8gX19udnZtX3N1c3RfYl8xZF92MmkzMl9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfdjJpMzJfdHJhcCwgODI0NzF9LCAvLyBfX252dm1fc3VzdF9iXzFkX3YyaTMyX3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3YyaTMyX3plcm8sIDgyNDk5fSwgLy8gX19udnZtX3N1c3RfYl8xZF92MmkzMl96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF92Mmk2NF9jbGFtcCwgODI1Mjd9LCAvLyBfX252dm1fc3VzdF9iXzFkX3YyaTY0X2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF92Mmk2NF90cmFwLCA4MjU1Nn0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfdjJpNjRfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfdjJpNjRfemVybywgODI1ODR9LCAvLyBfX252dm1fc3VzdF9iXzFkX3YyaTY0X3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3YyaThfY2xhbXAsIDgyNjEyfSwgLy8gX19udnZtX3N1c3RfYl8xZF92Mmk4X2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF92Mmk4X3RyYXAsIDgyNjQwfSwgLy8gX19udnZtX3N1c3RfYl8xZF92Mmk4X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3YyaThfemVybywgODI2Njd9LCAvLyBfX252dm1fc3VzdF9iXzFkX3YyaThfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfdjRpMTZfY2xhbXAsIDgyNjk0fSwgLy8gX19udnZtX3N1c3RfYl8xZF92NGkxNl9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfdjRpMTZfdHJhcCwgODI3MjN9LCAvLyBfX252dm1fc3VzdF9iXzFkX3Y0aTE2X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3Y0aTE2X3plcm8sIDgyNzUxfSwgLy8gX19udnZtX3N1c3RfYl8xZF92NGkxNl96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF92NGkzMl9jbGFtcCwgODI3Nzl9LCAvLyBfX252dm1fc3VzdF9iXzFkX3Y0aTMyX2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF92NGkzMl90cmFwLCA4MjgwOH0sIC8vIF9fbnZ2bV9zdXN0X2JfMWRfdjRpMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMWRfdjRpMzJfemVybywgODI4MzZ9LCAvLyBfX252dm1fc3VzdF9iXzFkX3Y0aTMyX3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3Y0aThfY2xhbXAsIDgyODY0fSwgLy8gX19udnZtX3N1c3RfYl8xZF92NGk4X2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8xZF92NGk4X3RyYXAsIDgyODkyfSwgLy8gX19udnZtX3N1c3RfYl8xZF92NGk4X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzFkX3Y0aThfemVybywgODI5MTl9LCAvLyBfX252dm1fc3VzdF9iXzFkX3Y0aThfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfaTE2X2NsYW1wLCA4Mjk0Nn0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfaTE2X2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV9pMTZfdHJhcCwgODI5Nzl9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X2kxNl90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV9pMTZfemVybywgODMwMTF9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X2kxNl96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV9pMzJfY2xhbXAsIDgzMDQzfSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV9pMzJfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X2kzMl90cmFwLCA4MzA3Nn0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfaTMyX3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X2kzMl96ZXJvLCA4MzEwOH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfaTMyX3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X2k2NF9jbGFtcCwgODMxNDB9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X2k2NF9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfaTY0X3RyYXAsIDgzMTczfSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV9pNjRfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfaTY0X3plcm8sIDgzMjA1fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV9pNjRfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfaThfY2xhbXAsIDgzMjM3fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV9pOF9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfaThfdHJhcCwgODMyNjl9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X2k4X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X2k4X3plcm8sIDgzMzAwfSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV9pOF96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92MmkxNl9jbGFtcCwgODMzMzF9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X3YyaTE2X2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92MmkxNl90cmFwLCA4MzM2Nn0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpMTZfemVybywgODM0MDB9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X3YyaTE2X3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X3YyaTMyX2NsYW1wLCA4MzQzNH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpMzJfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X3YyaTMyX3RyYXAsIDgzNDY5fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92MmkzMl90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92MmkzMl96ZXJvLCA4MzUwM30sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpMzJfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpNjRfY2xhbXAsIDgzNTM3fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92Mmk2NF9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpNjRfdHJhcCwgODM1NzJ9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X3YyaTY0X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X3YyaTY0X3plcm8sIDgzNjA2fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92Mmk2NF96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92Mmk4X2NsYW1wLCA4MzY0MH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpOF9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpOF90cmFwLCA4MzY3NH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjJpOF90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92Mmk4X3plcm8sIDgzNzA3fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92Mmk4X3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X3Y0aTE2X2NsYW1wLCA4Mzc0MH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjRpMTZfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X3Y0aTE2X3RyYXAsIDgzNzc1fSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92NGkxNl90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92NGkxNl96ZXJvLCA4MzgwOX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjRpMTZfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjRpMzJfY2xhbXAsIDgzODQzfSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92NGkzMl9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjRpMzJfdHJhcCwgODM4Nzh9LCAvLyBfX252dm1fc3VzdF9iXzJkX2FycmF5X3Y0aTMyX3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2FycmF5X3Y0aTMyX3plcm8sIDgzOTEyfSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92NGkzMl96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92NGk4X2NsYW1wLCA4Mzk0Nn0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjRpOF9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjRpOF90cmFwLCA4Mzk4MH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfYXJyYXlfdjRpOF90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9hcnJheV92NGk4X3plcm8sIDg0MDEzfSwgLy8gX19udnZtX3N1c3RfYl8yZF9hcnJheV92NGk4X3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2kxNl9jbGFtcCwgODQwNDZ9LCAvLyBfX252dm1fc3VzdF9iXzJkX2kxNl9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfaTE2X3RyYXAsIDg0MDczfSwgLy8gX19udnZtX3N1c3RfYl8yZF9pMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfaTE2X3plcm8sIDg0MDk5fSwgLy8gX19udnZtX3N1c3RfYl8yZF9pMTZfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfaTMyX2NsYW1wLCA4NDEyNX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfaTMyX2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9pMzJfdHJhcCwgODQxNTJ9LCAvLyBfX252dm1fc3VzdF9iXzJkX2kzMl90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9pMzJfemVybywgODQxNzh9LCAvLyBfX252dm1fc3VzdF9iXzJkX2kzMl96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9pNjRfY2xhbXAsIDg0MjA0fSwgLy8gX19udnZtX3N1c3RfYl8yZF9pNjRfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2k2NF90cmFwLCA4NDIzMX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfaTY0X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2k2NF96ZXJvLCA4NDI1N30sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfaTY0X3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2k4X2NsYW1wLCA4NDI4M30sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfaThfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX2k4X3RyYXAsIDg0MzA5fSwgLy8gX19udnZtX3N1c3RfYl8yZF9pOF90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF9pOF96ZXJvLCA4NDMzNH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfaThfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjJpMTZfY2xhbXAsIDg0MzU5fSwgLy8gX19udnZtX3N1c3RfYl8yZF92MmkxNl9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjJpMTZfdHJhcCwgODQzODh9LCAvLyBfX252dm1fc3VzdF9iXzJkX3YyaTE2X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX3YyaTE2X3plcm8sIDg0NDE2fSwgLy8gX19udnZtX3N1c3RfYl8yZF92MmkxNl96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF92MmkzMl9jbGFtcCwgODQ0NDR9LCAvLyBfX252dm1fc3VzdF9iXzJkX3YyaTMyX2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF92MmkzMl90cmFwLCA4NDQ3M30sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjJpMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjJpMzJfemVybywgODQ1MDF9LCAvLyBfX252dm1fc3VzdF9iXzJkX3YyaTMyX3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX3YyaTY0X2NsYW1wLCA4NDUyOX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjJpNjRfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX3YyaTY0X3RyYXAsIDg0NTU4fSwgLy8gX19udnZtX3N1c3RfYl8yZF92Mmk2NF90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF92Mmk2NF96ZXJvLCA4NDU4Nn0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjJpNjRfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjJpOF9jbGFtcCwgODQ2MTR9LCAvLyBfX252dm1fc3VzdF9iXzJkX3YyaThfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX3YyaThfdHJhcCwgODQ2NDJ9LCAvLyBfX252dm1fc3VzdF9iXzJkX3YyaThfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjJpOF96ZXJvLCA4NDY2OX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjJpOF96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF92NGkxNl9jbGFtcCwgODQ2OTZ9LCAvLyBfX252dm1fc3VzdF9iXzJkX3Y0aTE2X2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF92NGkxNl90cmFwLCA4NDcyNX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjRpMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjRpMTZfemVybywgODQ3NTN9LCAvLyBfX252dm1fc3VzdF9iXzJkX3Y0aTE2X3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX3Y0aTMyX2NsYW1wLCA4NDc4MX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjRpMzJfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX3Y0aTMyX3RyYXAsIDg0ODEwfSwgLy8gX19udnZtX3N1c3RfYl8yZF92NGkzMl90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8yZF92NGkzMl96ZXJvLCA4NDgzOH0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjRpMzJfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjRpOF9jbGFtcCwgODQ4NjZ9LCAvLyBfX252dm1fc3VzdF9iXzJkX3Y0aThfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzJkX3Y0aThfdHJhcCwgODQ4OTR9LCAvLyBfX252dm1fc3VzdF9iXzJkX3Y0aThfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfMmRfdjRpOF96ZXJvLCA4NDkyMX0sIC8vIF9fbnZ2bV9zdXN0X2JfMmRfdjRpOF96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF9pMTZfY2xhbXAsIDg0OTQ4fSwgLy8gX19udnZtX3N1c3RfYl8zZF9pMTZfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX2kxNl90cmFwLCA4NDk3NX0sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfaTE2X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX2kxNl96ZXJvLCA4NTAwMX0sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfaTE2X3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX2kzMl9jbGFtcCwgODUwMjd9LCAvLyBfX252dm1fc3VzdF9iXzNkX2kzMl9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfaTMyX3RyYXAsIDg1MDU0fSwgLy8gX19udnZtX3N1c3RfYl8zZF9pMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfaTMyX3plcm8sIDg1MDgwfSwgLy8gX19udnZtX3N1c3RfYl8zZF9pMzJfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfaTY0X2NsYW1wLCA4NTEwNn0sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfaTY0X2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF9pNjRfdHJhcCwgODUxMzN9LCAvLyBfX252dm1fc3VzdF9iXzNkX2k2NF90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF9pNjRfemVybywgODUxNTl9LCAvLyBfX252dm1fc3VzdF9iXzNkX2k2NF96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF9pOF9jbGFtcCwgODUxODV9LCAvLyBfX252dm1fc3VzdF9iXzNkX2k4X2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF9pOF90cmFwLCA4NTIxMX0sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfaThfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfaThfemVybywgODUyMzZ9LCAvLyBfX252dm1fc3VzdF9iXzNkX2k4X3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3YyaTE2X2NsYW1wLCA4NTI2MX0sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfdjJpMTZfY2xhbXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3YyaTE2X3RyYXAsIDg1MjkwfSwgLy8gX19udnZtX3N1c3RfYl8zZF92MmkxNl90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF92MmkxNl96ZXJvLCA4NTMxOH0sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfdjJpMTZfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfdjJpMzJfY2xhbXAsIDg1MzQ2fSwgLy8gX19udnZtX3N1c3RfYl8zZF92MmkzMl9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfdjJpMzJfdHJhcCwgODUzNzV9LCAvLyBfX252dm1fc3VzdF9iXzNkX3YyaTMyX3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3YyaTMyX3plcm8sIDg1NDAzfSwgLy8gX19udnZtX3N1c3RfYl8zZF92MmkzMl96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF92Mmk2NF9jbGFtcCwgODU0MzF9LCAvLyBfX252dm1fc3VzdF9iXzNkX3YyaTY0X2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF92Mmk2NF90cmFwLCA4NTQ2MH0sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfdjJpNjRfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfdjJpNjRfemVybywgODU0ODh9LCAvLyBfX252dm1fc3VzdF9iXzNkX3YyaTY0X3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3YyaThfY2xhbXAsIDg1NTE2fSwgLy8gX19udnZtX3N1c3RfYl8zZF92Mmk4X2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF92Mmk4X3RyYXAsIDg1NTQ0fSwgLy8gX19udnZtX3N1c3RfYl8zZF92Mmk4X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3YyaThfemVybywgODU1NzF9LCAvLyBfX252dm1fc3VzdF9iXzNkX3YyaThfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfdjRpMTZfY2xhbXAsIDg1NTk4fSwgLy8gX19udnZtX3N1c3RfYl8zZF92NGkxNl9jbGFtcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfdjRpMTZfdHJhcCwgODU2Mjd9LCAvLyBfX252dm1fc3VzdF9iXzNkX3Y0aTE2X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3Y0aTE2X3plcm8sIDg1NjU1fSwgLy8gX19udnZtX3N1c3RfYl8zZF92NGkxNl96ZXJvCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF92NGkzMl9jbGFtcCwgODU2ODN9LCAvLyBfX252dm1fc3VzdF9iXzNkX3Y0aTMyX2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF92NGkzMl90cmFwLCA4NTcxMn0sIC8vIF9fbnZ2bV9zdXN0X2JfM2RfdjRpMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X2JfM2RfdjRpMzJfemVybywgODU3NDB9LCAvLyBfX252dm1fc3VzdF9iXzNkX3Y0aTMyX3plcm8KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3Y0aThfY2xhbXAsIDg1NzY4fSwgLy8gX19udnZtX3N1c3RfYl8zZF92NGk4X2NsYW1wCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfYl8zZF92NGk4X3RyYXAsIDg1Nzk2fSwgLy8gX19udnZtX3N1c3RfYl8zZF92NGk4X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9iXzNkX3Y0aThfemVybywgODU4MjN9LCAvLyBfX252dm1fc3VzdF9iXzNkX3Y0aThfemVybworICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfYXJyYXlfaTE2X3RyYXAsIDg1ODUwfSwgLy8gX19udnZtX3N1c3RfcF8xZF9hcnJheV9pMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfYXJyYXlfaTMyX3RyYXAsIDg1ODgyfSwgLy8gX19udnZtX3N1c3RfcF8xZF9hcnJheV9pMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfYXJyYXlfaThfdHJhcCwgODU5MTR9LCAvLyBfX252dm1fc3VzdF9wXzFkX2FycmF5X2k4X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzFkX2FycmF5X3YyaTE2X3RyYXAsIDg1OTQ1fSwgLy8gX19udnZtX3N1c3RfcF8xZF9hcnJheV92MmkxNl90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8xZF9hcnJheV92MmkzMl90cmFwLCA4NTk3OX0sIC8vIF9fbnZ2bV9zdXN0X3BfMWRfYXJyYXlfdjJpMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfYXJyYXlfdjJpOF90cmFwLCA4NjAxM30sIC8vIF9fbnZ2bV9zdXN0X3BfMWRfYXJyYXlfdjJpOF90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8xZF9hcnJheV92NGkxNl90cmFwLCA4NjA0Nn0sIC8vIF9fbnZ2bV9zdXN0X3BfMWRfYXJyYXlfdjRpMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfYXJyYXlfdjRpMzJfdHJhcCwgODYwODB9LCAvLyBfX252dm1fc3VzdF9wXzFkX2FycmF5X3Y0aTMyX3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzFkX2FycmF5X3Y0aThfdHJhcCwgODYxMTR9LCAvLyBfX252dm1fc3VzdF9wXzFkX2FycmF5X3Y0aThfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfaTE2X3RyYXAsIDg2MTQ3fSwgLy8gX19udnZtX3N1c3RfcF8xZF9pMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfaTMyX3RyYXAsIDg2MTczfSwgLy8gX19udnZtX3N1c3RfcF8xZF9pMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfaThfdHJhcCwgODYxOTl9LCAvLyBfX252dm1fc3VzdF9wXzFkX2k4X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzFkX3YyaTE2X3RyYXAsIDg2MjI0fSwgLy8gX19udnZtX3N1c3RfcF8xZF92MmkxNl90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8xZF92MmkzMl90cmFwLCA4NjI1Mn0sIC8vIF9fbnZ2bV9zdXN0X3BfMWRfdjJpMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfdjJpOF90cmFwLCA4NjI4MH0sIC8vIF9fbnZ2bV9zdXN0X3BfMWRfdjJpOF90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8xZF92NGkxNl90cmFwLCA4NjMwN30sIC8vIF9fbnZ2bV9zdXN0X3BfMWRfdjRpMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMWRfdjRpMzJfdHJhcCwgODYzMzV9LCAvLyBfX252dm1fc3VzdF9wXzFkX3Y0aTMyX3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzFkX3Y0aThfdHJhcCwgODYzNjN9LCAvLyBfX252dm1fc3VzdF9wXzFkX3Y0aThfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfYXJyYXlfaTE2X3RyYXAsIDg2MzkwfSwgLy8gX19udnZtX3N1c3RfcF8yZF9hcnJheV9pMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfYXJyYXlfaTMyX3RyYXAsIDg2NDIyfSwgLy8gX19udnZtX3N1c3RfcF8yZF9hcnJheV9pMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfYXJyYXlfaThfdHJhcCwgODY0NTR9LCAvLyBfX252dm1fc3VzdF9wXzJkX2FycmF5X2k4X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzJkX2FycmF5X3YyaTE2X3RyYXAsIDg2NDg1fSwgLy8gX19udnZtX3N1c3RfcF8yZF9hcnJheV92MmkxNl90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8yZF9hcnJheV92MmkzMl90cmFwLCA4NjUxOX0sIC8vIF9fbnZ2bV9zdXN0X3BfMmRfYXJyYXlfdjJpMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfYXJyYXlfdjJpOF90cmFwLCA4NjU1M30sIC8vIF9fbnZ2bV9zdXN0X3BfMmRfYXJyYXlfdjJpOF90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8yZF9hcnJheV92NGkxNl90cmFwLCA4NjU4Nn0sIC8vIF9fbnZ2bV9zdXN0X3BfMmRfYXJyYXlfdjRpMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfYXJyYXlfdjRpMzJfdHJhcCwgODY2MjB9LCAvLyBfX252dm1fc3VzdF9wXzJkX2FycmF5X3Y0aTMyX3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzJkX2FycmF5X3Y0aThfdHJhcCwgODY2NTR9LCAvLyBfX252dm1fc3VzdF9wXzJkX2FycmF5X3Y0aThfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfaTE2X3RyYXAsIDg2Njg3fSwgLy8gX19udnZtX3N1c3RfcF8yZF9pMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfaTMyX3RyYXAsIDg2NzEzfSwgLy8gX19udnZtX3N1c3RfcF8yZF9pMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfaThfdHJhcCwgODY3Mzl9LCAvLyBfX252dm1fc3VzdF9wXzJkX2k4X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzJkX3YyaTE2X3RyYXAsIDg2NzY0fSwgLy8gX19udnZtX3N1c3RfcF8yZF92MmkxNl90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8yZF92MmkzMl90cmFwLCA4Njc5Mn0sIC8vIF9fbnZ2bV9zdXN0X3BfMmRfdjJpMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfdjJpOF90cmFwLCA4NjgyMH0sIC8vIF9fbnZ2bV9zdXN0X3BfMmRfdjJpOF90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8yZF92NGkxNl90cmFwLCA4Njg0N30sIC8vIF9fbnZ2bV9zdXN0X3BfMmRfdjRpMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfMmRfdjRpMzJfdHJhcCwgODY4NzV9LCAvLyBfX252dm1fc3VzdF9wXzJkX3Y0aTMyX3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzJkX3Y0aThfdHJhcCwgODY5MDN9LCAvLyBfX252dm1fc3VzdF9wXzJkX3Y0aThfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfM2RfaTE2X3RyYXAsIDg2OTMwfSwgLy8gX19udnZtX3N1c3RfcF8zZF9pMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfM2RfaTMyX3RyYXAsIDg2OTU2fSwgLy8gX19udnZtX3N1c3RfcF8zZF9pMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfM2RfaThfdHJhcCwgODY5ODJ9LCAvLyBfX252dm1fc3VzdF9wXzNkX2k4X3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzNkX3YyaTE2X3RyYXAsIDg3MDA3fSwgLy8gX19udnZtX3N1c3RfcF8zZF92MmkxNl90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8zZF92MmkzMl90cmFwLCA4NzAzNX0sIC8vIF9fbnZ2bV9zdXN0X3BfM2RfdjJpMzJfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfM2RfdjJpOF90cmFwLCA4NzA2M30sIC8vIF9fbnZ2bV9zdXN0X3BfM2RfdjJpOF90cmFwCisgICAgICB7SW50cmluc2ljOjpudnZtX3N1c3RfcF8zZF92NGkxNl90cmFwLCA4NzA5MH0sIC8vIF9fbnZ2bV9zdXN0X3BfM2RfdjRpMTZfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zdXN0X3BfM2RfdjRpMzJfdHJhcCwgODcxMTh9LCAvLyBfX252dm1fc3VzdF9wXzNkX3Y0aTMyX3RyYXAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fc3VzdF9wXzNkX3Y0aThfdHJhcCwgODcxNDZ9LCAvLyBfX252dm1fc3VzdF9wXzNkX3Y0aThfdHJhcAorICAgICAge0ludHJpbnNpYzo6bnZ2bV9zd2FwX2xvX2hpX2I2NCwgODcxNzN9LCAvLyBfX252dm1fc3dhcF9sb19oaV9iNjQKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdHJ1bmNfZCwgODcxOTV9LCAvLyBfX252dm1fdHJ1bmNfZAorICAgICAge0ludHJpbnNpYzo6bnZ2bV90cnVuY19mLCA4NzIxMH0sIC8vIF9fbnZ2bV90cnVuY19mCisgICAgICB7SW50cmluc2ljOjpudnZtX3RydW5jX2Z0el9mLCA4NzIyNX0sIC8vIF9fbnZ2bV90cnVuY19mdHpfZgorICAgICAge0ludHJpbnNpYzo6bnZ2bV90eHFfYXJyYXlfc2l6ZSwgODcyNDR9LCAvLyBfX252dm1fdHhxX2FycmF5X3NpemUKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdHhxX2NoYW5uZWxfZGF0YV90eXBlLCA4NzI2Nn0sIC8vIF9fbnZ2bV90eHFfY2hhbm5lbF9kYXRhX3R5cGUKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdHhxX2NoYW5uZWxfb3JkZXIsIDg3Mjk1fSwgLy8gX19udnZtX3R4cV9jaGFubmVsX29yZGVyCisgICAgICB7SW50cmluc2ljOjpudnZtX3R4cV9kZXB0aCwgODczMjB9LCAvLyBfX252dm1fdHhxX2RlcHRoCisgICAgICB7SW50cmluc2ljOjpudnZtX3R4cV9oZWlnaHQsIDg3MzM3fSwgLy8gX19udnZtX3R4cV9oZWlnaHQKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdHhxX251bV9taXBtYXBfbGV2ZWxzLCA4NzM1NX0sIC8vIF9fbnZ2bV90eHFfbnVtX21pcG1hcF9sZXZlbHMKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdHhxX251bV9zYW1wbGVzLCA4NzM4NH0sIC8vIF9fbnZ2bV90eHFfbnVtX3NhbXBsZXMKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdHhxX3dpZHRoLCA4NzQwN30sIC8vIF9fbnZ2bV90eHFfd2lkdGgKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdWkyZF9ybSwgODc0MjR9LCAvLyBfX252dm1fdWkyZF9ybQorICAgICAge0ludHJpbnNpYzo6bnZ2bV91aTJkX3JuLCA4NzQzOX0sIC8vIF9fbnZ2bV91aTJkX3JuCisgICAgICB7SW50cmluc2ljOjpudnZtX3VpMmRfcnAsIDg3NDU0fSwgLy8gX19udnZtX3VpMmRfcnAKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdWkyZF9yeiwgODc0Njl9LCAvLyBfX252dm1fdWkyZF9yegorICAgICAge0ludHJpbnNpYzo6bnZ2bV91aTJmX3JtLCA4NzQ4NH0sIC8vIF9fbnZ2bV91aTJmX3JtCisgICAgICB7SW50cmluc2ljOjpudnZtX3VpMmZfcm4sIDg3NDk5fSwgLy8gX19udnZtX3VpMmZfcm4KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdWkyZl9ycCwgODc1MTR9LCAvLyBfX252dm1fdWkyZl9ycAorICAgICAge0ludHJpbnNpYzo6bnZ2bV91aTJmX3J6LCA4NzUyOX0sIC8vIF9fbnZ2bV91aTJmX3J6CisgICAgICB7SW50cmluc2ljOjpudnZtX3VsbDJkX3JtLCA4NzU0NH0sIC8vIF9fbnZ2bV91bGwyZF9ybQorICAgICAge0ludHJpbnNpYzo6bnZ2bV91bGwyZF9ybiwgODc1NjB9LCAvLyBfX252dm1fdWxsMmRfcm4KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdWxsMmRfcnAsIDg3NTc2fSwgLy8gX19udnZtX3VsbDJkX3JwCisgICAgICB7SW50cmluc2ljOjpudnZtX3VsbDJkX3J6LCA4NzU5Mn0sIC8vIF9fbnZ2bV91bGwyZF9yegorICAgICAge0ludHJpbnNpYzo6bnZ2bV91bGwyZl9ybSwgODc2MDh9LCAvLyBfX252dm1fdWxsMmZfcm0KKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdWxsMmZfcm4sIDg3NjI0fSwgLy8gX19udnZtX3VsbDJmX3JuCisgICAgICB7SW50cmluc2ljOjpudnZtX3VsbDJmX3JwLCA4NzY0MH0sIC8vIF9fbnZ2bV91bGwyZl9ycAorICAgICAge0ludHJpbnNpYzo6bnZ2bV91bGwyZl9yeiwgODc2NTZ9LCAvLyBfX252dm1fdWxsMmZfcnoKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdm90ZV9hbGwsIDg3NjcyfSwgLy8gX19udnZtX3ZvdGVfYWxsCisgICAgICB7SW50cmluc2ljOjpudnZtX3ZvdGVfYWxsX3N5bmMsIDg3Njg4fSwgLy8gX19udnZtX3ZvdGVfYWxsX3N5bmMKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdm90ZV9hbnksIDg3NzA5fSwgLy8gX19udnZtX3ZvdGVfYW55CisgICAgICB7SW50cmluc2ljOjpudnZtX3ZvdGVfYW55X3N5bmMsIDg3NzI1fSwgLy8gX19udnZtX3ZvdGVfYW55X3N5bmMKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdm90ZV9iYWxsb3QsIDg3NzQ2fSwgLy8gX19udnZtX3ZvdGVfYmFsbG90CisgICAgICB7SW50cmluc2ljOjpudnZtX3ZvdGVfYmFsbG90X3N5bmMsIDg3NzY1fSwgLy8gX19udnZtX3ZvdGVfYmFsbG90X3N5bmMKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fdm90ZV91bmksIDg3Nzg5fSwgLy8gX19udnZtX3ZvdGVfdW5pCisgICAgICB7SW50cmluc2ljOjpudnZtX3ZvdGVfdW5pX3N5bmMsIDg3ODA1fSwgLy8gX19udnZtX3ZvdGVfdW5pX3N5bmMKKyAgICAgIHtJbnRyaW5zaWM6Om52dm1fYmFycmllcjAsIDc0ODk0fSwgLy8gX19zeW5jdGhyZWFkcwogICAgIH07CiAgICAgYXV0byBJID0gc3RkOjpsb3dlcl9ib3VuZChzdGQ6OmJlZ2luKG52dm1OYW1lcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuZChudnZtTmFtZXMpLApAQCAtMjgwNTQsMzcyICsyNzk0OCwzNzIgQEAKICAgfQogICBpZiAoVGFyZ2V0UHJlZml4ID09ICJwcGMiKSB7CiAgICAgc3RhdGljIGNvbnN0IEJ1aWx0aW5FbnRyeSBwcGNOYW1lc1tdID0gewotICAgICAge0ludHJpbnNpYzo6cHBjX2FkZGYxMjhfcm91bmRfdG9fb2RkLCA4NjE2N30sIC8vIF9fYnVpbHRpbl9hZGRmMTI4X3JvdW5kX3RvX29kZAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfY3J5cHRvX3ZjaXBoZXIsIDg2MTk4fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfY3J5cHRvX3ZjaXBoZXIKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX2NyeXB0b192Y2lwaGVybGFzdCwgODYyMzF9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdmNpcGhlcmxhc3QKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX2NyeXB0b192bmNpcGhlciwgODYyNjh9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdm5jaXBoZXIKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX2NyeXB0b192bmNpcGhlcmxhc3QsIDg2MzAyfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfY3J5cHRvX3ZuY2lwaGVybGFzdAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfY3J5cHRvX3ZwZXJteG9yLCA4NjM0MH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192cGVybXhvcgotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfY3J5cHRvX3ZwbXN1bWIsIDg2Mzc0fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfY3J5cHRvX3ZwbXN1bWIKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX2NyeXB0b192cG1zdW1kLCA4NjQwN30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192cG1zdW1kCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY19jcnlwdG9fdnBtc3VtaCwgODY0NDB9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdnBtc3VtaAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfY3J5cHRvX3ZwbXN1bXcsIDg2NDczfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfY3J5cHRvX3ZwbXN1bXcKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX2NyeXB0b192c2JveCwgODY1MDZ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdnNib3gKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX2NyeXB0b192c2hhc2lnbWFkLCA4NjUzN30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192c2hhc2lnbWFkCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY19jcnlwdG9fdnNoYXNpZ21hdywgODY1NzN9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdnNoYXNpZ21hdwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfZHNzLCA4NjYwOX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX2RzcwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfZHNzYWxsLCA4NjYzMX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX2Rzc2FsbAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfZHN0LCA4NjY1Nn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX2RzdAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfZHN0c3QsIDg2Njc4fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfZHN0c3QKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX2RzdHN0dCwgODY3MDJ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY19kc3RzdHQKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX2RzdHQsIDg2NzI3fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfZHN0dAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfbWZ2c2NyLCA4Njc1MH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX21mdnNjcgotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfbXR2c2NyLCA4Njc3NX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX210dnNjcgotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmFic2R1YiwgODY4MDB9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192YWJzZHViCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YWJzZHVoLCA4NjgyNn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZhYnNkdWgKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZhYnNkdXcsIDg2ODUyfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmFic2R1dwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmFkZGN1cSwgODY4Nzh9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192YWRkY3VxCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YWRkY3V3LCA4NjkwNH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRjdXcKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZhZGRlY3VxLCA4NjkzMH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRlY3VxCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YWRkZXVxbSwgODY5NTd9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192YWRkZXVxbQotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmFkZHNicywgODY5ODR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192YWRkc2JzCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YWRkc2hzLCA4NzAxMH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRzaHMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZhZGRzd3MsIDg3MDM2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmFkZHN3cwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmFkZHVicywgODcwNjJ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192YWRkdWJzCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YWRkdWhzLCA4NzA4OH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGR1aHMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZhZGR1d3MsIDg3MTE0fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmFkZHV3cwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmF2Z3NiLCA4NzE0MH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZhdmdzYgotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmF2Z3NoLCA4NzE2NX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZhdmdzaAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmF2Z3N3LCA4NzE5MH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZhdmdzdwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmF2Z3ViLCA4NzIxNX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Zhdmd1YgotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmF2Z3VoLCA4NzI0MH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Zhdmd1aAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmF2Z3V3LCA4NzI2NX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Zhdmd1dwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmJwZXJtcSwgODcyOTB9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192YnBlcm1xCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y2ZzeCwgODczMTZ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192Y2ZzeAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNmdXgsIDg3MzQwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNmdXgKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbHpsc2JiLCA4NzM2NH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbHpsc2JiCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wYmZwLCA4NzM5MX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBiZnAKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBiZnBfcCwgODc0MTd9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192Y21wYmZwX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBlcWZwLCA4NzQ0NX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcWZwCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZXFmcF9wLCA4NzQ3Mn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcWZwX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBlcXViLCA4NzUwMX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZXF1Yl9wLCA4NzUyOH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBlcXVkLCA4NzU1N30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVkCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZXF1ZF9wLCA4NzU4NH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVkX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBlcXVoLCA4NzYxM30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVoCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZXF1aF9wLCA4NzY0MH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXVoX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBlcXV3LCA4NzY2OX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3Ci0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZXF1d19wLCA4NzY5Nn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXV3X3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBnZWZwLCA4NzcyNX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBnZWZwCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZ2VmcF9wLCA4Nzc1Mn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBnZWZwX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndGZwLCA4Nzc4MX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndGZwCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZ3RmcF9wLCA4NzgwOH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndGZwX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHNiLCA4NzgzN30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNiCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZ3RzYl9wLCA4Nzg2NH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNiX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHNkLCA4Nzg5M30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNkCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZ3RzZF9wLCA4NzkyMH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNkX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHNoLCA4Nzk0OX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNoCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZ3RzaF9wLCA4Nzk3Nn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHNoX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHN3LCA4ODAwNX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHN3Ci0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZ3Rzd19wLCA4ODAzMn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHN3X3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHViLCA4ODA2MX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZ3R1Yl9wLCA4ODA4OH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHViX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHVkLCA4ODExN30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVkCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZ3R1ZF9wLCA4ODE0NH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVkX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHVoLCA4ODE3M30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZ3R1aF9wLCA4ODIwMH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHV3LCA4ODIyOX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHV3Ci0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wZ3R1d19wLCA4ODI1Nn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBndHV3X3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBuZWIsIDg4Mjg1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcG5lYgotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcG5lYl9wLCA4ODMxMX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZWJfcAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcG5laCwgODgzMzl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192Y21wbmVoCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wbmVoX3AsIDg4MzY1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcG5laF9wCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wbmV3LCA4ODM5M30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZXcKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBuZXdfcCwgODg0MTl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192Y21wbmV3X3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBuZXpiLCA4ODQ0N30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZXpiCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wbmV6Yl9wLCA4ODQ3NH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZXpiX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBuZXpoLCA4ODUwM30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZXpoCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wbmV6aF9wLCA4ODUzMH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZXpoX3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBuZXp3LCA4ODU1OX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZXp3Ci0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wbmV6d19wLCA4ODU4Nn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZXp3X3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjdHN4cywgODg2MTV9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192Y3RzeHMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjdHV4cywgODg2NDB9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192Y3R1eHMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjdHpsc2JiLCA4ODY2NX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjdHpsc2JiCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192ZXhwdGVmcCwgODg2OTJ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192ZXhwdGVmcAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmdiYmQsIDg4NzE5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmdiYmQKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Zsb2dlZnAsIDg4NzQzfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmxvZ2VmcAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1hZGRmcCwgODg3Njl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWFkZGZwCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bWF4ZnAsIDg4Nzk1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1heGZwCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bWF4c2IsIDg4ODIwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1heHNiCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bWF4c2QsIDg4ODQ1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1heHNkCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bWF4c2gsIDg4ODcwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1heHNoCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bWF4c3csIDg4ODk1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1heHN3Ci0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bWF4dWIsIDg4OTIwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1heHViCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bWF4dWQsIDg4OTQ1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1heHVkCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bWF4dWgsIDg4OTcwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1heHVoCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bWF4dXcsIDg4OTk1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1heHV3Ci0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bWhhZGRzaHMsIDg5MDIwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1oYWRkc2hzCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bWhyYWRkc2hzLCA4OTA0OH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaHJhZGRzaHMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtaW5mcCwgODkwNzd9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWluZnAKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtaW5zYiwgODkxMDJ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWluc2IKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtaW5zZCwgODkxMjd9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWluc2QKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtaW5zaCwgODkxNTJ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWluc2gKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtaW5zdywgODkxNzd9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWluc3cKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtaW51YiwgODkyMDJ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWludWIKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtaW51ZCwgODkyMjd9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWludWQKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtaW51aCwgODkyNTJ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWludWgKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtaW51dywgODkyNzd9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWludXcKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtbGFkZHVobSwgODkzMDJ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWxhZGR1aG0KLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Ztc3VtbWJtLCA4OTMzMH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Ztc3VtbWJtCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bXN1bXNobSwgODkzNTd9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bXN1bXNobQotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1zdW1zaHMsIDg5Mzg0fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1zdW1zaHMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Ztc3VtdWJtLCA4OTQxMX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Ztc3VtdWJtCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bXN1bXVobSwgODk0Mzh9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bXN1bXVobQotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1zdW11aHMsIDg5NDY1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1zdW11aHMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtdWxlc2IsIDg5NDkyfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm11bGVzYgotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm11bGVzaCwgODk1MTh9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bXVsZXNoCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bXVsZXN3LCA4OTU0NH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxlc3cKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtdWxldWIsIDg5NTcwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm11bGV1YgotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm11bGV1aCwgODk1OTZ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bXVsZXVoCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bXVsZXV3LCA4OTYyMn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxldXcKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtdWxvc2IsIDg5NjQ4fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm11bG9zYgotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm11bG9zaCwgODk2NzR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3NoCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bXVsb3N3LCA4OTcwMH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxvc3cKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtdWxvdWIsIDg5NzI2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm11bG91YgotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm11bG91aCwgODk3NTJ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3VoCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bXVsb3V3LCA4OTc3OH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxvdXcKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZubXN1YmZwLCA4OTgwNH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZubXN1YmZwCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cGVybSwgODk4MzF9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cGVybV80c2kKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Zwa3B4LCA4OTg1OX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3B4Ci0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cGtzZHNzLCA4OTg4M30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3Nkc3MKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Zwa3NkdXMsIDg5OTA5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnBrc2R1cwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnBrc2hzcywgODk5MzV9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cGtzaHNzCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cGtzaHVzLCA4OTk2MX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3NodXMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Zwa3N3c3MsIDg5OTg3fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnBrc3dzcwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnBrc3d1cywgOTAwMTN9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cGtzd3VzCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cGt1ZHVzLCA5MDAzOX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3VkdXMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Zwa3VodXMsIDkwMDY1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnBrdWh1cwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnBrdXd1cywgOTAwOTF9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cGt1d3VzCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cHJ0eWJkLCA5MDExN30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZwcnR5YmQKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZwcnR5YnEsIDkwMTQzfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnBydHlicQotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnBydHlidywgOTAxNjl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cHJ0eWJ3Ci0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cmVmcCwgOTAxOTV9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cmVmcAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnJmaW0sIDkwMjE5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnJmaW0KLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZyZmluLCA5MDI0M30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZyZmluCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cmZpcCwgOTAyNjd9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cmZpcAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnJmaXosIDkwMjkxfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnJmaXoKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZybGIsIDkwMzE1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnJsYgotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnJsZCwgOTAzMzh9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cmxkCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cmxkbWksIDkwMzYxfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnJsZG1pCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cmxkbm0sIDkwMzg2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnJsZG5tCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cmxoLCA5MDQxMX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZybGgKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZybHcsIDkwNDM0fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnJsdwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnJsd21pLCA5MDQ1N30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZybHdtaQotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnJsd25tLCA5MDQ4Mn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZybHdubQotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnJzcXJ0ZWZwLCA5MDUwN30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Zyc3FydGVmcAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnNlbCwgOTA1MzV9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c2VsXzRzaQotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnNsLCA5MDU2Mn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzbAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnNsYiwgOTA1ODR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c2xiCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c2xoLCA5MDYwN30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzbGgKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzbG8sIDkwNjMwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnNsbwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnNsdiwgOTA2NTN9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c2x2Ci0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c2x3LCA5MDY3Nn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzbHcKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzciwgOTA2OTl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3IKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzcmFiLCA5MDcyMX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzcmFiCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3JhaCwgOTA3NDV9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3JhaAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnNyYXcsIDkwNzY5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnNyYXcKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzcmIsIDkwNzkzfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnNyYgotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnNyaCwgOTA4MTZ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3JoCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3JvLCA5MDgzOX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Zzcm8KLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzcnYsIDkwODYyfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnNydgotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnNydywgOTA4ODV9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3J3Ci0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3ViY3VxLCA5MDkwOH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJjdXEKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzdWJjdXcsIDkwOTM0fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnN1YmN1dwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnN1YmVjdXEsIDkwOTYwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnN1YmVjdXEKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzdWJldXFtLCA5MDk4N30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJldXFtCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3Vic2JzLCA5MTAxNH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJzYnMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzdWJzaHMsIDkxMDQwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnN1YnNocwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnN1YnN3cywgOTEwNjZ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3Vic3dzCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3VidWJzLCA5MTA5Mn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJ1YnMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzdWJ1aHMsIDkxMTE4fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnN1YnVocwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnN1YnV3cywgOTExNDR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3VidXdzCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3VtMnN3cywgOTExNzB9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3VtMnN3cwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnN1bTRzYnMsIDkxMTk3fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnN1bTRzYnMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzdW00c2hzLCA5MTIyNH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdW00c2hzCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3VtNHVicywgOTEyNTF9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3VtNHVicwotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnN1bXN3cywgOTEyNzh9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3Vtc3dzCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192dXBraHB4LCA5MTMwNH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtocHgKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Z1cGtoc2IsIDkxMzMwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnVwa2hzYgotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnVwa2hzaCwgOTEzNTZ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192dXBraHNoCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192dXBraHN3LCA5MTM4Mn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtoc3cKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Z1cGtscHgsIDkxNDA4fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnVwa2xweAotICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnVwa2xzYiwgOTE0MzR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192dXBrbHNiCi0gICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192dXBrbHNoLCA5MTQ2MH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtsc2gKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Z1cGtsc3csIDkxNDg2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnVwa2xzdwotICAgICAge0ludHJpbnNpYzo6cHBjX2JwZXJtZCwgOTE1MTJ9LCAvLyBfX2J1aWx0aW5fYnBlcm1kCi0gICAgICB7SW50cmluc2ljOjpwcGNfZGl2ZGUsIDkxNTI5fSwgLy8gX19idWlsdGluX2RpdmRlCi0gICAgICB7SW50cmluc2ljOjpwcGNfZGl2ZGV1LCA5MTU0NX0sIC8vIF9fYnVpbHRpbl9kaXZkZXUKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19kaXZmMTI4X3JvdW5kX3RvX29kZCwgOTE1NjJ9LCAvLyBfX2J1aWx0aW5fZGl2ZjEyOF9yb3VuZF90b19vZGQKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19kaXZ3ZSwgOTE1OTN9LCAvLyBfX2J1aWx0aW5fZGl2d2UKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19kaXZ3ZXUsIDkxNjA5fSwgLy8gX19idWlsdGluX2RpdndldQotICAgICAge0ludHJpbnNpYzo6cHBjX2ZtYWYxMjhfcm91bmRfdG9fb2RkLCA5MTYyNn0sIC8vIF9fYnVpbHRpbl9mbWFmMTI4X3JvdW5kX3RvX29kZAotICAgICAge0ludHJpbnNpYzo6cHBjX2dldF90ZXhhc3IsIDkxNjU3fSwgLy8gX19idWlsdGluX2dldF90ZXhhc3IKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19nZXRfdGV4YXNydSwgOTE2Nzh9LCAvLyBfX2J1aWx0aW5fZ2V0X3RleGFzcnUKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19nZXRfdGZoYXIsIDkxNzAwfSwgLy8gX19idWlsdGluX2dldF90ZmhhcgotICAgICAge0ludHJpbnNpYzo6cHBjX2dldF90ZmlhciwgOTE3MjB9LCAvLyBfX2J1aWx0aW5fZ2V0X3RmaWFyCi0gICAgICB7SW50cmluc2ljOjpwcGNfbXVsZjEyOF9yb3VuZF90b19vZGQsIDkxNzQwfSwgLy8gX19idWlsdGluX211bGYxMjhfcm91bmRfdG9fb2RkCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZmFicywgOTE3NzF9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmFicwotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZhZGQsIDkxNzkyfSwgLy8gX19idWlsdGluX3FweF9xdmZhZGQKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmYWRkcywgOTE4MTN9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmFkZHMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmY2ZpZCwgOTE4MzV9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmNmaWQKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmY2ZpZHMsIDkxODU3fSwgLy8gX19idWlsdGluX3FweF9xdmZjZmlkcwotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZjZmlkdSwgOTE4ODB9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmNmaWR1Ci0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZmNmaWR1cywgOTE5MDN9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmNmaWR1cwotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZjbXBlcSwgOTE5Mjd9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmNtcGVxCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZmNtcGd0LCA5MTk1MH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmY21wZ3QKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmY21wbHQsIDkxOTczfSwgLy8gX19idWlsdGluX3FweF9xdmZjbXBsdAotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZjcHNnbiwgOTE5OTZ9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmNwc2duCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZmN0aWQsIDkyMDE5fSwgLy8gX19idWlsdGluX3FweF9xdmZjdGlkCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZmN0aWR1LCA5MjA0MX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmY3RpZHUKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmY3RpZHV6LCA5MjA2NH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmY3RpZHV6Ci0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZmN0aWR6LCA5MjA4OH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmY3RpZHoKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmY3RpdywgOTIxMTF9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmN0aXcKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmY3Rpd3UsIDkyMTMzfSwgLy8gX19idWlsdGluX3FweF9xdmZjdGl3dQotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZjdGl3dXosIDkyMTU2fSwgLy8gX19idWlsdGluX3FweF9xdmZjdGl3dXoKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmY3Rpd3osIDkyMTgwfSwgLy8gX19idWlsdGluX3FweF9xdmZjdGl3egotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZsb2dpY2FsLCA5MjIwM30sIC8vIF9fYnVpbHRpbl9xcHhfcXZmbG9naWNhbAotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZtYWRkLCA5MjIyOH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmbWFkZAotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZtYWRkcywgOTIyNTB9LCAvLyBfX2J1aWx0aW5fcXB4X3F2Zm1hZGRzCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Zm1zdWIsIDkyMjczfSwgLy8gX19idWlsdGluX3FweF9xdmZtc3ViCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Zm1zdWJzLCA5MjI5NX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmbXN1YnMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmbXVsLCA5MjMxOH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmbXVsCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Zm11bHMsIDkyMzM5fSwgLy8gX19idWlsdGluX3FweF9xdmZtdWxzCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Zm5hYnMsIDkyMzYxfSwgLy8gX19idWlsdGluX3FweF9xdmZuYWJzCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Zm5lZywgOTIzODN9LCAvLyBfX2J1aWx0aW5fcXB4X3F2Zm5lZwotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZubWFkZCwgOTI0MDR9LCAvLyBfX2J1aWx0aW5fcXB4X3F2Zm5tYWRkCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Zm5tYWRkcywgOTI0Mjd9LCAvLyBfX2J1aWx0aW5fcXB4X3F2Zm5tYWRkcwotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZubXN1YiwgOTI0NTF9LCAvLyBfX2J1aWx0aW5fcXB4X3F2Zm5tc3ViCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Zm5tc3VicywgOTI0NzR9LCAvLyBfX2J1aWx0aW5fcXB4X3F2Zm5tc3VicwotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZwZXJtLCA5MjQ5OH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmcGVybQotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZyZSwgOTI1MjB9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZnJlCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnJlcywgOTI1NDB9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZnJlcwotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZyaW0sIDkyNTYxfSwgLy8gX19idWlsdGluX3FweF9xdmZyaW0KLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmcmluLCA5MjU4Mn0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmcmluCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnJpcCwgOTI2MDN9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZnJpcAotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZyaXosIDkyNjI0fSwgLy8gX19idWlsdGluX3FweF9xdmZyaXoKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmcnNwLCA5MjY0NX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmcnNwCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnJzcXJ0ZSwgOTI2NjZ9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZnJzcXJ0ZQotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZyc3FydGVzLCA5MjY5MH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmcnNxcnRlcwotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZzZWwsIDkyNzE1fSwgLy8gX19idWlsdGluX3FweF9xdmZzZWwKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmc3ViLCA5MjczNn0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmc3ViCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnN1YnMsIDkyNzU3fSwgLy8gX19idWlsdGluX3FweF9xdmZzdWJzCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnRzdG5hbiwgOTI3Nzl9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZnRzdG5hbgotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZ4bWFkZCwgOTI4MDN9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZnhtYWRkCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnhtYWRkcywgOTI4MjZ9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZnhtYWRkcwotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZ4bXVsLCA5Mjg1MH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmeG11bAotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZ4bXVscywgOTI4NzJ9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZnhtdWxzCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Znh4Y3BubWFkZCwgOTI4OTV9LCAvLyBfX2J1aWx0aW5fcXB4X3F2Znh4Y3BubWFkZAotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZ4eGNwbm1hZGRzLCA5MjkyMn0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmeHhjcG5tYWRkcwotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZ4eG1hZGQsIDkyOTUwfSwgLy8gX19idWlsdGluX3FweF9xdmZ4eG1hZGQKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmeHhtYWRkcywgOTI5NzR9LCAvLyBfX2J1aWx0aW5fcXB4X3F2Znh4bWFkZHMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmeHhucG1hZGQsIDkyOTk5fSwgLy8gX19idWlsdGluX3FweF9xdmZ4eG5wbWFkZAotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZ4eG5wbWFkZHMsIDkzMDI1fSwgLy8gX19idWlsdGluX3FweF9xdmZ4eG5wbWFkZHMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZncGNpLCA5MzA1Mn0sIC8vIF9fYnVpbHRpbl9xcHhfcXZncGNpCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2bGZjZCwgOTMwNzN9LCAvLyBfX2J1aWx0aW5fcXB4X3F2bGZjZAotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmxmY2RhLCA5MzA5NH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZsZmNkYQotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmxmY3MsIDkzMTE2fSwgLy8gX19idWlsdGluX3FweF9xdmxmY3MKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZsZmNzYSwgOTMxMzd9LCAvLyBfX2J1aWx0aW5fcXB4X3F2bGZjc2EKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZsZmQsIDkzMTU5fSwgLy8gX19idWlsdGluX3FweF9xdmxmZAotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmxmZGEsIDkzMTc5fSwgLy8gX19idWlsdGluX3FweF9xdmxmZGEKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZsZml3YSwgOTMyMDB9LCAvLyBfX2J1aWx0aW5fcXB4X3F2bGZpd2EKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZsZml3YWEsIDkzMjIyfSwgLy8gX19idWlsdGluX3FweF9xdmxmaXdhYQotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmxmaXd6LCA5MzI0NX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZsZml3egotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmxmaXd6YSwgOTMyNjd9LCAvLyBfX2J1aWx0aW5fcXB4X3F2bGZpd3phCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2bGZzLCA5MzI5MH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZsZnMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZsZnNhLCA5MzMxMH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZsZnNhCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2bHBjbGQsIDkzMzMxfSwgLy8gX19idWlsdGluX3FweF9xdmxwY2xkCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2bHBjbHMsIDkzMzUzfSwgLy8gX19idWlsdGluX3FweF9xdmxwY2xzCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2bHBjcmQsIDkzMzc1fSwgLy8gX19idWlsdGluX3FweF9xdmxwY3JkCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2bHBjcnMsIDkzMzk3fSwgLy8gX19idWlsdGluX3FweF9xdmxwY3JzCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2c3RmY2QsIDkzNDE5fSwgLy8gX19idWlsdGluX3FweF9xdnN0ZmNkCi0gICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2c3RmY2RhLCA5MzQ0MX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZzdGZjZGEKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZzdGZjcywgOTM0NjR9LCAvLyBfX2J1aWx0aW5fcXB4X3F2c3RmY3MKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZzdGZjc2EsIDkzNDg2fSwgLy8gX19idWlsdGluX3FweF9xdnN0ZmNzYQotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdnN0ZmQsIDkzNTA5fSwgLy8gX19idWlsdGluX3FweF9xdnN0ZmQKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZzdGZkYSwgOTM1MzB9LCAvLyBfX2J1aWx0aW5fcXB4X3F2c3RmZGEKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZzdGZpdywgOTM1NTJ9LCAvLyBfX2J1aWx0aW5fcXB4X3F2c3RmaXcKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZzdGZpd2EsIDkzNTc0fSwgLy8gX19idWlsdGluX3FweF9xdnN0Zml3YQotICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdnN0ZnMsIDkzNTk3fSwgLy8gX19idWlsdGluX3FweF9xdnN0ZnMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZzdGZzYSwgOTM2MTh9LCAvLyBfX2J1aWx0aW5fcXB4X3F2c3Rmc2EKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19zZXRfdGV4YXNyLCA5MzcwOX0sIC8vIF9fYnVpbHRpbl9zZXRfdGV4YXNyCi0gICAgICB7SW50cmluc2ljOjpwcGNfc2V0X3RleGFzcnUsIDkzNzMwfSwgLy8gX19idWlsdGluX3NldF90ZXhhc3J1Ci0gICAgICB7SW50cmluc2ljOjpwcGNfc2V0X3RmaGFyLCA5Mzc1Mn0sIC8vIF9fYnVpbHRpbl9zZXRfdGZoYXIKLSAgICAgIHtJbnRyaW5zaWM6OnBwY19zZXRfdGZpYXIsIDkzNzcyfSwgLy8gX19idWlsdGluX3NldF90ZmlhcgotICAgICAge0ludHJpbnNpYzo6cHBjX3NxcnRmMTI4X3JvdW5kX3RvX29kZCwgOTM3OTJ9LCAvLyBfX2J1aWx0aW5fc3FydGYxMjhfcm91bmRfdG9fb2RkCi0gICAgICB7SW50cmluc2ljOjpwcGNfc3ViZjEyOF9yb3VuZF90b19vZGQsIDkzODI0fSwgLy8gX19idWlsdGluX3N1YmYxMjhfcm91bmRfdG9fb2RkCi0gICAgICB7SW50cmluc2ljOjpwcGNfdGFib3J0LCA5Mzg1NX0sIC8vIF9fYnVpbHRpbl90YWJvcnQKLSAgICAgIHtJbnRyaW5zaWM6OnBwY190YWJvcnRkYywgOTM4NzJ9LCAvLyBfX2J1aWx0aW5fdGFib3J0ZGMKLSAgICAgIHtJbnRyaW5zaWM6OnBwY190YWJvcnRkY2ksIDkzODkxfSwgLy8gX19idWlsdGluX3RhYm9ydGRjaQotICAgICAge0ludHJpbnNpYzo6cHBjX3RhYm9ydHdjLCA5MzkxMX0sIC8vIF9fYnVpbHRpbl90YWJvcnR3YwotICAgICAge0ludHJpbnNpYzo6cHBjX3RhYm9ydHdjaSwgOTM5MzB9LCAvLyBfX2J1aWx0aW5fdGFib3J0d2NpCi0gICAgICB7SW50cmluc2ljOjpwcGNfdGJlZ2luLCA5Mzk1MH0sIC8vIF9fYnVpbHRpbl90YmVnaW4KLSAgICAgIHtJbnRyaW5zaWM6OnBwY190Y2hlY2ssIDkzOTY3fSwgLy8gX19idWlsdGluX3RjaGVjawotICAgICAge0ludHJpbnNpYzo6cHBjX3RlbmQsIDkzOTg0fSwgLy8gX19idWlsdGluX3RlbmQKLSAgICAgIHtJbnRyaW5zaWM6OnBwY190ZW5kYWxsLCA5Mzk5OX0sIC8vIF9fYnVpbHRpbl90ZW5kYWxsCi0gICAgICB7SW50cmluc2ljOjpwcGNfdHJlY2hrcHQsIDk0MDE3fSwgLy8gX19idWlsdGluX3RyZWNoa3B0Ci0gICAgICB7SW50cmluc2ljOjpwcGNfdHJlY2xhaW0sIDk0MDM2fSwgLy8gX19idWlsdGluX3RyZWNsYWltCi0gICAgICB7SW50cmluc2ljOjpwcGNfdHJlc3VtZSwgOTQwNTV9LCAvLyBfX2J1aWx0aW5fdHJlc3VtZQotICAgICAge0ludHJpbnNpYzo6cHBjX3RydW5jZjEyOF9yb3VuZF90b19vZGQsIDk0MDczfSwgLy8gX19idWlsdGluX3RydW5jZjEyOF9yb3VuZF90b19vZGQKLSAgICAgIHtJbnRyaW5zaWM6OnBwY190c3IsIDk0MTA2fSwgLy8gX19idWlsdGluX3RzcgotICAgICAge0ludHJpbnNpYzo6cHBjX3RzdXNwZW5kLCA5NDEyMH0sIC8vIF9fYnVpbHRpbl90c3VzcGVuZAotICAgICAge0ludHJpbnNpYzo6cHBjX3R0ZXN0LCA5NDEzOX0sIC8vIF9fYnVpbHRpbl90dGVzdAotICAgICAge0ludHJpbnNpYzo6cHBjX3NjYWxhcl9leHRyYWN0X2V4cHEsIDkzNjQwfSwgLy8gX19idWlsdGluX3ZzeF9zY2FsYXJfZXh0cmFjdF9leHBxCi0gICAgICB7SW50cmluc2ljOjpwcGNfc2NhbGFyX2luc2VydF9leHBfcXAsIDkzNjc0fSwgLy8gX19idWlsdGluX3ZzeF9zY2FsYXJfaW5zZXJ0X2V4cF9xcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94c21heGRwLCA5NDE1NX0sIC8vIF9fYnVpbHRpbl92c3hfeHNtYXhkcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94c21pbmRwLCA5NDE3N30sIC8vIF9fYnVpbHRpbl92c3hfeHNtaW5kcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmNtcGVxZHAsIDk0MTk5fSwgLy8gX19idWlsdGluX3ZzeF94dmNtcGVxZHAKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZjbXBlcWRwX3AsIDk0MjIzfSwgLy8gX19idWlsdGluX3ZzeF94dmNtcGVxZHBfcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmNtcGVxc3AsIDk0MjQ5fSwgLy8gX19idWlsdGluX3ZzeF94dmNtcGVxc3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZjbXBlcXNwX3AsIDk0MjczfSwgLy8gX19idWlsdGluX3ZzeF94dmNtcGVxc3BfcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmNtcGdlZHAsIDk0Mjk5fSwgLy8gX19idWlsdGluX3ZzeF94dmNtcGdlZHAKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZjbXBnZWRwX3AsIDk0MzIzfSwgLy8gX19idWlsdGluX3ZzeF94dmNtcGdlZHBfcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmNtcGdlc3AsIDk0MzQ5fSwgLy8gX19idWlsdGluX3ZzeF94dmNtcGdlc3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZjbXBnZXNwX3AsIDk0MzczfSwgLy8gX19idWlsdGluX3ZzeF94dmNtcGdlc3BfcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmNtcGd0ZHAsIDk0Mzk5fSwgLy8gX19idWlsdGluX3ZzeF94dmNtcGd0ZHAKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZjbXBndGRwX3AsIDk0NDIzfSwgLy8gX19idWlsdGluX3ZzeF94dmNtcGd0ZHBfcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmNtcGd0c3AsIDk0NDQ5fSwgLy8gX19idWlsdGluX3ZzeF94dmNtcGd0c3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZjbXBndHNwX3AsIDk0NDczfSwgLy8gX19idWlsdGluX3ZzeF94dmNtcGd0c3BfcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmN2ZHBzcCwgOTQ0OTl9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y3ZkcHNwCi0gICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2Y3ZkcHN4d3MsIDk0NTIyfSwgLy8gX19idWlsdGluX3ZzeF94dmN2ZHBzeHdzCi0gICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2Y3ZkcHV4d3MsIDk0NTQ3fSwgLy8gX19idWlsdGluX3ZzeF94dmN2ZHB1eHdzCi0gICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2Y3ZocHNwLCA5NDU3Mn0sIC8vIF9fYnVpbHRpbl92c3hfeHZjdmhwc3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZjdnNwZHAsIDk0NTk1fSwgLy8gX19idWlsdGluX3ZzeF94dmN2c3BkcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmN2c3BocCwgOTQ2MTh9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y3ZzcGhwCi0gICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2Y3ZzeGRzcCwgOTQ2NDF9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y3ZzeGRzcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmN2c3h3ZHAsIDk0NjY1fSwgLy8gX19idWlsdGluX3ZzeF94dmN2c3h3ZHAKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZjdnV4ZHNwLCA5NDY4OX0sIC8vIF9fYnVpbHRpbl92c3hfeHZjdnV4ZHNwCi0gICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2Y3Z1eHdkcCwgOTQ3MTN9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y3Z1eHdkcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmRpdmRwLCA5NDczN30sIC8vIF9fYnVpbHRpbl92c3hfeHZkaXZkcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmRpdnNwLCA5NDc1OX0sIC8vIF9fYnVpbHRpbl92c3hfeHZkaXZzcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmlleHBkcCwgOTQ3ODF9LCAvLyBfX2J1aWx0aW5fdnN4X3h2aWV4cGRwCi0gICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2aWV4cHNwLCA5NDgwNH0sIC8vIF9fYnVpbHRpbl92c3hfeHZpZXhwc3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZtYXhkcCwgOTQ4Mjd9LCAvLyBfX2J1aWx0aW5fdnN4X3h2bWF4ZHAKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZtYXhzcCwgOTQ4NDl9LCAvLyBfX2J1aWx0aW5fdnN4X3h2bWF4c3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZtaW5kcCwgOTQ4NzF9LCAvLyBfX2J1aWx0aW5fdnN4X3h2bWluZHAKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZtaW5zcCwgOTQ4OTN9LCAvLyBfX2J1aWx0aW5fdnN4X3h2bWluc3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZyZWRwLCA5NDkxNX0sIC8vIF9fYnVpbHRpbl92c3hfeHZyZWRwCi0gICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2cmVzcCwgOTQ5MzZ9LCAvLyBfX2J1aWx0aW5fdnN4X3h2cmVzcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dnJzcXJ0ZWRwLCA5NDk1N30sIC8vIF9fYnVpbHRpbl92c3hfeHZyc3FydGVkcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dnJzcXJ0ZXNwLCA5NDk4Mn0sIC8vIF9fYnVpbHRpbl92c3hfeHZyc3FydGVzcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dnRzdGRjZHAsIDk1MDA3fSwgLy8gX19idWlsdGluX3ZzeF94dnRzdGRjZHAKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZ0c3RkY3NwLCA5NTAzMX0sIC8vIF9fYnVpbHRpbl92c3hfeHZ0c3RkY3NwCi0gICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2eGV4cGRwLCA5NTA1NX0sIC8vIF9fYnVpbHRpbl92c3hfeHZ4ZXhwZHAKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZ4ZXhwc3AsIDk1MDc4fSwgLy8gX19idWlsdGluX3ZzeF94dnhleHBzcAotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dnhzaWdkcCwgOTUxMDF9LCAvLyBfX2J1aWx0aW5fdnN4X3h2eHNpZ2RwCi0gICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2eHNpZ3NwLCA5NTEyNH0sIC8vIF9fYnVpbHRpbl92c3hfeHZ4c2lnc3AKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHhleHRyYWN0dXcsIDk1MTQ3fSwgLy8gX19idWlsdGluX3ZzeF94eGV4dHJhY3R1dwotICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94eGluc2VydHcsIDk1MTczfSwgLy8gX19idWlsdGluX3ZzeF94eGluc2VydHcKLSAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHhsZXF2LCA5NTE5N30sIC8vIF9fYnVpbHRpbl92c3hfeHhsZXF2CisgICAgICB7SW50cmluc2ljOjpwcGNfYWRkZjEyOF9yb3VuZF90b19vZGQsIDg3ODI2fSwgLy8gX19idWlsdGluX2FkZGYxMjhfcm91bmRfdG9fb2RkCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY19jcnlwdG9fdmNpcGhlciwgODc4NTd9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdmNpcGhlcgorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfY3J5cHRvX3ZjaXBoZXJsYXN0LCA4Nzg5MH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192Y2lwaGVybGFzdAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfY3J5cHRvX3ZuY2lwaGVyLCA4NzkyN30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192bmNpcGhlcgorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfY3J5cHRvX3ZuY2lwaGVybGFzdCwgODc5NjF9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdm5jaXBoZXJsYXN0CisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY19jcnlwdG9fdnBlcm14b3IsIDg3OTk5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfY3J5cHRvX3ZwZXJteG9yCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY19jcnlwdG9fdnBtc3VtYiwgODgwMzN9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdnBtc3VtYgorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfY3J5cHRvX3ZwbXN1bWQsIDg4MDY2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfY3J5cHRvX3ZwbXN1bWQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX2NyeXB0b192cG1zdW1oLCA4ODA5OX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192cG1zdW1oCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY19jcnlwdG9fdnBtc3VtdywgODgxMzJ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY19jcnlwdG9fdnBtc3VtdworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfY3J5cHRvX3ZzYm94LCA4ODE2NX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192c2JveAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfY3J5cHRvX3ZzaGFzaWdtYWQsIDg4MTk2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfY3J5cHRvX3ZzaGFzaWdtYWQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX2NyeXB0b192c2hhc2lnbWF3LCA4ODIzMn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX2NyeXB0b192c2hhc2lnbWF3CisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY19kc3MsIDg4MjY4fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfZHNzCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY19kc3NhbGwsIDg4MjkwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfZHNzYWxsCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY19kc3QsIDg4MzE1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfZHN0CisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY19kc3RzdCwgODgzMzd9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY19kc3RzdAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfZHN0c3R0LCA4ODM2MX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX2RzdHN0dAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfZHN0dCwgODgzODZ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY19kc3R0CisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY19tZnZzY3IsIDg4NDA5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfbWZ2c2NyCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY19tdHZzY3IsIDg4NDM0fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfbXR2c2NyCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YWJzZHViLCA4ODQ1OX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZhYnNkdWIKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZhYnNkdWgsIDg4NDg1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmFic2R1aAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmFic2R1dywgODg1MTF9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192YWJzZHV3CisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YWRkY3VxLCA4ODUzN30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRjdXEKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZhZGRjdXcsIDg4NTYzfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmFkZGN1dworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmFkZGVjdXEsIDg4NTg5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmFkZGVjdXEKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZhZGRldXFtLCA4ODYxNn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRldXFtCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YWRkc2JzLCA4ODY0M30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGRzYnMKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZhZGRzaHMsIDg4NjY5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmFkZHNocworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmFkZHN3cywgODg2OTV9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192YWRkc3dzCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YWRkdWJzLCA4ODcyMX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZhZGR1YnMKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZhZGR1aHMsIDg4NzQ3fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmFkZHVocworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmFkZHV3cywgODg3NzN9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192YWRkdXdzCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YXZnc2IsIDg4Nzk5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmF2Z3NiCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YXZnc2gsIDg4ODI0fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmF2Z3NoCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YXZnc3csIDg4ODQ5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmF2Z3N3CisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YXZndWIsIDg4ODc0fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmF2Z3ViCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YXZndWgsIDg4ODk5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmF2Z3VoCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YXZndXcsIDg4OTI0fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmF2Z3V3CisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192YnBlcm1xLCA4ODk0OX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZicGVybXEKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjZnN4LCA4ODk3NX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjZnN4CisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y2Z1eCwgODg5OTl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192Y2Z1eAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNsemxzYmIsIDg5MDIzfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNsemxzYmIKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBiZnAsIDg5MDUwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGJmcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGJmcF9wLCA4OTA3Nn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBiZnBfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGVxZnAsIDg5MTA0fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxZnAKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBlcWZwX3AsIDg5MTMxfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxZnBfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGVxdWIsIDg5MTYwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWIKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBlcXViX3AsIDg5MTg3fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWJfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGVxdWQsIDg5MjE2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBlcXVkX3AsIDg5MjQzfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWRfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGVxdWgsIDg5MjcyfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWgKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBlcXVoX3AsIDg5Mjk5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWhfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGVxdXcsIDg5MzI4fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXcKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBlcXV3X3AsIDg5MzU1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdXdfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGdlZnAsIDg5Mzg0fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGdlZnAKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBnZWZwX3AsIDg5NDExfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGdlZnBfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGd0ZnAsIDg5NDQwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0ZnAKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndGZwX3AsIDg5NDY3fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0ZnBfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGd0c2IsIDg5NDk2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2IKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHNiX3AsIDg5NTIzfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2JfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGd0c2QsIDg5NTUyfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2QKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHNkX3AsIDg5NTc5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2RfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGd0c2gsIDg5NjA4fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2gKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHNoX3AsIDg5NjM1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2hfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGd0c3csIDg5NjY0fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3cKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHN3X3AsIDg5NjkxfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3dfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGd0dWIsIDg5NzIwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWIKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHViX3AsIDg5NzQ3fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWJfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGd0dWQsIDg5Nzc2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHVkX3AsIDg5ODAzfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWRfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGd0dWgsIDg5ODMyfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWgKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHVoX3AsIDg5ODU5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWhfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcGd0dXcsIDg5ODg4fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXcKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBndHV3X3AsIDg5OTE1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXdfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcG5lYiwgODk5NDR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192Y21wbmViCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wbmViX3AsIDg5OTcwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcG5lYl9wCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Y21wbmVoLCA4OTk5OH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZWgKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBuZWhfcCwgOTAwMjR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192Y21wbmVoX3AKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBuZXcsIDkwMDUyfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcG5ldworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcG5ld19wLCA5MDA3OH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBuZXdfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcG5lemIsIDkwMTA2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcG5lemIKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBuZXpiX3AsIDkwMTMzfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcG5lemJfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcG5lemgsIDkwMTYyfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcG5lemgKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBuZXpoX3AsIDkwMTg5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcG5lemhfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmNtcG5lencsIDkwMjE4fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcG5lencKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZjbXBuZXp3X3AsIDkwMjQ1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmNtcG5lendfcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmN0c3hzLCA5MDI3NH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjdHN4cworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmN0dXhzLCA5MDI5OX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZjdHV4cworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmN0emxzYmIsIDkwMzI0fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdmN0emxzYmIKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZleHB0ZWZwLCA5MDM1MX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZleHB0ZWZwCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192Z2JiZCwgOTAzNzh9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192Z2JiZAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdmxvZ2VmcCwgOTA0MDJ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bG9nZWZwCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bWFkZGZwLCA5MDQyOH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtYWRkZnAKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtYXhmcCwgOTA0NTR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWF4ZnAKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtYXhzYiwgOTA0Nzl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWF4c2IKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtYXhzZCwgOTA1MDR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWF4c2QKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtYXhzaCwgOTA1Mjl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWF4c2gKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtYXhzdywgOTA1NTR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWF4c3cKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtYXh1YiwgOTA1Nzl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWF4dWIKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtYXh1ZCwgOTA2MDR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWF4dWQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtYXh1aCwgOTA2Mjl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWF4dWgKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtYXh1dywgOTA2NTR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWF4dXcKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtaGFkZHNocywgOTA2Nzl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bWhhZGRzaHMKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtaHJhZGRzaHMsIDkwNzA3fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1ocmFkZHNocworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1pbmZwLCA5MDczNn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW5mcAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1pbnNiLCA5MDc2MX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW5zYgorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1pbnNkLCA5MDc4Nn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW5zZAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1pbnNoLCA5MDgxMX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW5zaAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1pbnN3LCA5MDgzNn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW5zdworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1pbnViLCA5MDg2MX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51YgorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1pbnVkLCA5MDg4Nn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51ZAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1pbnVoLCA5MDkxMX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51aAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1pbnV3LCA5MDkzNn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtaW51dworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1sYWRkdWhtLCA5MDk2MX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtbGFkZHVobQorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1zdW1tYm0sIDkwOTg5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1zdW1tYm0KKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Ztc3Vtc2htLCA5MTAxNn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Ztc3Vtc2htCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bXN1bXNocywgOTEwNDN9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bXN1bXNocworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm1zdW11Ym0sIDkxMDcwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm1zdW11Ym0KKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Ztc3VtdWhtLCA5MTA5N30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Ztc3VtdWhtCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bXN1bXVocywgOTExMjR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bXN1bXVocworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm11bGVzYiwgOTExNTF9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bXVsZXNiCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bXVsZXNoLCA5MTE3N30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxlc2gKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtdWxlc3csIDkxMjAzfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm11bGVzdworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm11bGV1YiwgOTEyMjl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bXVsZXViCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bXVsZXVoLCA5MTI1NX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxldWgKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtdWxldXcsIDkxMjgxfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm11bGV1dworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm11bG9zYiwgOTEzMDd9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3NiCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bXVsb3NoLCA5MTMzM30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxvc2gKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtdWxvc3csIDkxMzU5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm11bG9zdworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm11bG91YiwgOTEzODV9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192bXVsb3ViCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192bXVsb3VoLCA5MTQxMX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxvdWgKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZtdWxvdXcsIDkxNDM3fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm11bG91dworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdm5tc3ViZnAsIDkxNDYzfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdm5tc3ViZnAKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZwZXJtLCA5MTQ5MH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzRzaQorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnBrcHgsIDkxNTE4fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnBrcHgKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Zwa3Nkc3MsIDkxNTQyfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnBrc2RzcworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnBrc2R1cywgOTE1Njh9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cGtzZHVzCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cGtzaHNzLCA5MTU5NH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3Noc3MKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Zwa3NodXMsIDkxNjIwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnBrc2h1cworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnBrc3dzcywgOTE2NDZ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cGtzd3NzCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cGtzd3VzLCA5MTY3Mn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3N3dXMKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Zwa3VkdXMsIDkxNjk4fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnBrdWR1cworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnBrdWh1cywgOTE3MjR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cGt1aHVzCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cGt1d3VzLCA5MTc1MH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Zwa3V3dXMKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZwcnR5YmQsIDkxNzc2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnBydHliZAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnBydHlicSwgOTE4MDJ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cHJ0eWJxCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cHJ0eWJ3LCA5MTgyOH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZwcnR5YncKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZyZWZwLCA5MTg1NH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZyZWZwCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cmZpbSwgOTE4Nzh9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cmZpbQorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnJmaW4sIDkxOTAyfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnJmaW4KKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZyZmlwLCA5MTkyNn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZyZmlwCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cmZpeiwgOTE5NTB9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cmZpegorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnJsYiwgOTE5NzR9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cmxiCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cmxkLCA5MTk5N30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZybGQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZybGRtaSwgOTIwMjB9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cmxkbWkKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZybGRubSwgOTIwNDV9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cmxkbm0KKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZybGgsIDkyMDcwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnJsaAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnJsdywgOTIwOTN9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192cmx3CisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cmx3bWksIDkyMTE2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnJsd21pCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cmx3bm0sIDkyMTQxfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnJsd25tCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192cnNxcnRlZnAsIDkyMTY2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnJzcXJ0ZWZwCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c2VsLCA5MjE5NH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzZWxfNHNpCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c2wsIDkyMjIxfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnNsCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c2xiLCA5MjI0M30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzbGIKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzbGgsIDkyMjY2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnNsaAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnNsbywgOTIyODl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c2xvCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c2x2LCA5MjMxMn0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzbHYKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzbHcsIDkyMzM1fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnNsdworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnNyLCA5MjM1OH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzcgorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnNyYWIsIDkyMzgwfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnNyYWIKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzcmFoLCA5MjQwNH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzcmFoCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3JhdywgOTI0Mjh9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3JhdworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnNyYiwgOTI0NTJ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3JiCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3JoLCA5MjQ3NX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzcmgKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Zzcm8sIDkyNDk4fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnNybworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnNydiwgOTI1MjF9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3J2CisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3J3LCA5MjU0NH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzcncKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzdWJjdXEsIDkyNTY3fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnN1YmN1cQorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnN1YmN1dywgOTI1OTN9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3ViY3V3CisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3ViZWN1cSwgOTI2MTl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3ViZWN1cQorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnN1YmV1cW0sIDkyNjQ2fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnN1YmV1cW0KKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzdWJzYnMsIDkyNjczfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnN1YnNicworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnN1YnNocywgOTI2OTl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3Vic2hzCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3Vic3dzLCA5MjcyNX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJzd3MKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzdWJ1YnMsIDkyNzUxfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnN1YnVicworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnN1YnVocywgOTI3Nzd9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3VidWhzCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3VidXdzLCA5MjgwM30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdWJ1d3MKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzdW0yc3dzLCA5MjgyOX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdW0yc3dzCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3VtNHNicywgOTI4NTZ9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192c3VtNHNicworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnN1bTRzaHMsIDkyODgzfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnN1bTRzaHMKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3ZzdW00dWJzLCA5MjkxMH0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdW00dWJzCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192c3Vtc3dzLCA5MjkzN30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3ZzdW1zd3MKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Z1cGtocHgsIDkyOTYzfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnVwa2hweAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnVwa2hzYiwgOTI5ODl9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192dXBraHNiCisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192dXBraHNoLCA5MzAxNX0sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtoc2gKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Z1cGtoc3csIDkzMDQxfSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnVwa2hzdworICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnVwa2xweCwgOTMwNjd9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192dXBrbHB4CisgICAgICB7SW50cmluc2ljOjpwcGNfYWx0aXZlY192dXBrbHNiLCA5MzA5M30sIC8vIF9fYnVpbHRpbl9hbHRpdmVjX3Z1cGtsc2IKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19hbHRpdmVjX3Z1cGtsc2gsIDkzMTE5fSwgLy8gX19idWlsdGluX2FsdGl2ZWNfdnVwa2xzaAorICAgICAge0ludHJpbnNpYzo6cHBjX2FsdGl2ZWNfdnVwa2xzdywgOTMxNDV9LCAvLyBfX2J1aWx0aW5fYWx0aXZlY192dXBrbHN3CisgICAgICB7SW50cmluc2ljOjpwcGNfYnBlcm1kLCA5MzE3MX0sIC8vIF9fYnVpbHRpbl9icGVybWQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19kaXZkZSwgOTMxODh9LCAvLyBfX2J1aWx0aW5fZGl2ZGUKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19kaXZkZXUsIDkzMjA0fSwgLy8gX19idWlsdGluX2RpdmRldQorICAgICAge0ludHJpbnNpYzo6cHBjX2RpdmYxMjhfcm91bmRfdG9fb2RkLCA5MzIyMX0sIC8vIF9fYnVpbHRpbl9kaXZmMTI4X3JvdW5kX3RvX29kZAorICAgICAge0ludHJpbnNpYzo6cHBjX2RpdndlLCA5MzI1Mn0sIC8vIF9fYnVpbHRpbl9kaXZ3ZQorICAgICAge0ludHJpbnNpYzo6cHBjX2RpdndldSwgOTMyNjh9LCAvLyBfX2J1aWx0aW5fZGl2d2V1CisgICAgICB7SW50cmluc2ljOjpwcGNfZm1hZjEyOF9yb3VuZF90b19vZGQsIDkzMjg1fSwgLy8gX19idWlsdGluX2ZtYWYxMjhfcm91bmRfdG9fb2RkCisgICAgICB7SW50cmluc2ljOjpwcGNfZ2V0X3RleGFzciwgOTMzMTZ9LCAvLyBfX2J1aWx0aW5fZ2V0X3RleGFzcgorICAgICAge0ludHJpbnNpYzo6cHBjX2dldF90ZXhhc3J1LCA5MzMzN30sIC8vIF9fYnVpbHRpbl9nZXRfdGV4YXNydQorICAgICAge0ludHJpbnNpYzo6cHBjX2dldF90ZmhhciwgOTMzNTl9LCAvLyBfX2J1aWx0aW5fZ2V0X3RmaGFyCisgICAgICB7SW50cmluc2ljOjpwcGNfZ2V0X3RmaWFyLCA5MzM3OX0sIC8vIF9fYnVpbHRpbl9nZXRfdGZpYXIKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19tdWxmMTI4X3JvdW5kX3RvX29kZCwgOTMzOTl9LCAvLyBfX2J1aWx0aW5fbXVsZjEyOF9yb3VuZF90b19vZGQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmYWJzLCA5MzQzMH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmYWJzCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZmFkZCwgOTM0NTF9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmFkZAorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZhZGRzLCA5MzQ3Mn0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmYWRkcworICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZjZmlkLCA5MzQ5NH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmY2ZpZAorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZjZmlkcywgOTM1MTZ9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmNmaWRzCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZmNmaWR1LCA5MzUzOX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmY2ZpZHUKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmY2ZpZHVzLCA5MzU2Mn0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmY2ZpZHVzCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZmNtcGVxLCA5MzU4Nn0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmY21wZXEKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmY21wZ3QsIDkzNjA5fSwgLy8gX19idWlsdGluX3FweF9xdmZjbXBndAorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZjbXBsdCwgOTM2MzJ9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmNtcGx0CisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZmNwc2duLCA5MzY1NX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmY3BzZ24KKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmY3RpZCwgOTM2Nzh9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmN0aWQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmY3RpZHUsIDkzNzAwfSwgLy8gX19idWlsdGluX3FweF9xdmZjdGlkdQorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZjdGlkdXosIDkzNzIzfSwgLy8gX19idWlsdGluX3FweF9xdmZjdGlkdXoKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmY3RpZHosIDkzNzQ3fSwgLy8gX19idWlsdGluX3FweF9xdmZjdGlkegorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZjdGl3LCA5Mzc3MH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmY3RpdworICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZjdGl3dSwgOTM3OTJ9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmN0aXd1CisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZmN0aXd1eiwgOTM4MTV9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmN0aXd1egorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZjdGl3eiwgOTM4Mzl9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZmN0aXd6CisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZmxvZ2ljYWwsIDkzODYyfSwgLy8gX19idWlsdGluX3FweF9xdmZsb2dpY2FsCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Zm1hZGQsIDkzODg3fSwgLy8gX19idWlsdGluX3FweF9xdmZtYWRkCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Zm1hZGRzLCA5MzkwOX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmbWFkZHMKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmbXN1YiwgOTM5MzJ9LCAvLyBfX2J1aWx0aW5fcXB4X3F2Zm1zdWIKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmbXN1YnMsIDkzOTU0fSwgLy8gX19idWlsdGluX3FweF9xdmZtc3VicworICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZtdWwsIDkzOTc3fSwgLy8gX19idWlsdGluX3FweF9xdmZtdWwKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmbXVscywgOTM5OTh9LCAvLyBfX2J1aWx0aW5fcXB4X3F2Zm11bHMKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmbmFicywgOTQwMjB9LCAvLyBfX2J1aWx0aW5fcXB4X3F2Zm5hYnMKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmbmVnLCA5NDA0Mn0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmbmVnCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Zm5tYWRkLCA5NDA2M30sIC8vIF9fYnVpbHRpbl9xcHhfcXZmbm1hZGQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmbm1hZGRzLCA5NDA4Nn0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmbm1hZGRzCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Zm5tc3ViLCA5NDExMH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmbm1zdWIKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmbm1zdWJzLCA5NDEzM30sIC8vIF9fYnVpbHRpbl9xcHhfcXZmbm1zdWJzCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnBlcm0sIDk0MTU3fSwgLy8gX19idWlsdGluX3FweF9xdmZwZXJtCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnJlLCA5NDE3OX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmcmUKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmcmVzLCA5NDE5OX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmcmVzCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnJpbSwgOTQyMjB9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZnJpbQorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZyaW4sIDk0MjQxfSwgLy8gX19idWlsdGluX3FweF9xdmZyaW4KKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmcmlwLCA5NDI2Mn0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmcmlwCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnJpeiwgOTQyODN9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZnJpegorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZyc3AsIDk0MzA0fSwgLy8gX19idWlsdGluX3FweF9xdmZyc3AKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmcnNxcnRlLCA5NDMyNX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmcnNxcnRlCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnJzcXJ0ZXMsIDk0MzQ5fSwgLy8gX19idWlsdGluX3FweF9xdmZyc3FydGVzCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnNlbCwgOTQzNzR9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZnNlbAorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZzdWIsIDk0Mzk1fSwgLy8gX19idWlsdGluX3FweF9xdmZzdWIKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmc3VicywgOTQ0MTZ9LCAvLyBfX2J1aWx0aW5fcXB4X3F2ZnN1YnMKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmdHN0bmFuLCA5NDQzOH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmdHN0bmFuCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnhtYWRkLCA5NDQ2Mn0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmeG1hZGQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmeG1hZGRzLCA5NDQ4NX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmeG1hZGRzCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnhtdWwsIDk0NTA5fSwgLy8gX19idWlsdGluX3FweF9xdmZ4bXVsCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2ZnhtdWxzLCA5NDUzMX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmeG11bHMKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZmeHhjcG5tYWRkLCA5NDU1NH0sIC8vIF9fYnVpbHRpbl9xcHhfcXZmeHhjcG5tYWRkCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Znh4Y3BubWFkZHMsIDk0NTgxfSwgLy8gX19idWlsdGluX3FweF9xdmZ4eGNwbm1hZGRzCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Znh4bWFkZCwgOTQ2MDl9LCAvLyBfX2J1aWx0aW5fcXB4X3F2Znh4bWFkZAorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZ4eG1hZGRzLCA5NDYzM30sIC8vIF9fYnVpbHRpbl9xcHhfcXZmeHhtYWRkcworICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmZ4eG5wbWFkZCwgOTQ2NTh9LCAvLyBfX2J1aWx0aW5fcXB4X3F2Znh4bnBtYWRkCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2Znh4bnBtYWRkcywgOTQ2ODR9LCAvLyBfX2J1aWx0aW5fcXB4X3F2Znh4bnBtYWRkcworICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmdwY2ksIDk0NzExfSwgLy8gX19idWlsdGluX3FweF9xdmdwY2kKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZsZmNkLCA5NDczMn0sIC8vIF9fYnVpbHRpbl9xcHhfcXZsZmNkCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2bGZjZGEsIDk0NzUzfSwgLy8gX19idWlsdGluX3FweF9xdmxmY2RhCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2bGZjcywgOTQ3NzV9LCAvLyBfX2J1aWx0aW5fcXB4X3F2bGZjcworICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmxmY3NhLCA5NDc5Nn0sIC8vIF9fYnVpbHRpbl9xcHhfcXZsZmNzYQorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmxmZCwgOTQ4MTh9LCAvLyBfX2J1aWx0aW5fcXB4X3F2bGZkCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2bGZkYSwgOTQ4Mzh9LCAvLyBfX2J1aWx0aW5fcXB4X3F2bGZkYQorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmxmaXdhLCA5NDg1OX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZsZml3YQorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmxmaXdhYSwgOTQ4ODF9LCAvLyBfX2J1aWx0aW5fcXB4X3F2bGZpd2FhCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2bGZpd3osIDk0OTA0fSwgLy8gX19idWlsdGluX3FweF9xdmxmaXd6CisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2bGZpd3phLCA5NDkyNn0sIC8vIF9fYnVpbHRpbl9xcHhfcXZsZml3emEKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZsZnMsIDk0OTQ5fSwgLy8gX19idWlsdGluX3FweF9xdmxmcworICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdmxmc2EsIDk0OTY5fSwgLy8gX19idWlsdGluX3FweF9xdmxmc2EKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZscGNsZCwgOTQ5OTB9LCAvLyBfX2J1aWx0aW5fcXB4X3F2bHBjbGQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZscGNscywgOTUwMTJ9LCAvLyBfX2J1aWx0aW5fcXB4X3F2bHBjbHMKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZscGNyZCwgOTUwMzR9LCAvLyBfX2J1aWx0aW5fcXB4X3F2bHBjcmQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZscGNycywgOTUwNTZ9LCAvLyBfX2J1aWx0aW5fcXB4X3F2bHBjcnMKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZzdGZjZCwgOTUwNzh9LCAvLyBfX2J1aWx0aW5fcXB4X3F2c3RmY2QKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19xcHhfcXZzdGZjZGEsIDk1MTAwfSwgLy8gX19idWlsdGluX3FweF9xdnN0ZmNkYQorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdnN0ZmNzLCA5NTEyM30sIC8vIF9fYnVpbHRpbl9xcHhfcXZzdGZjcworICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdnN0ZmNzYSwgOTUxNDV9LCAvLyBfX2J1aWx0aW5fcXB4X3F2c3RmY3NhCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2c3RmZCwgOTUxNjh9LCAvLyBfX2J1aWx0aW5fcXB4X3F2c3RmZAorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdnN0ZmRhLCA5NTE4OX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZzdGZkYQorICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdnN0Zml3LCA5NTIxMX0sIC8vIF9fYnVpbHRpbl9xcHhfcXZzdGZpdworICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdnN0Zml3YSwgOTUyMzN9LCAvLyBfX2J1aWx0aW5fcXB4X3F2c3RmaXdhCisgICAgICB7SW50cmluc2ljOjpwcGNfcXB4X3F2c3RmcywgOTUyNTZ9LCAvLyBfX2J1aWx0aW5fcXB4X3F2c3RmcworICAgICAge0ludHJpbnNpYzo6cHBjX3FweF9xdnN0ZnNhLCA5NTI3N30sIC8vIF9fYnVpbHRpbl9xcHhfcXZzdGZzYQorICAgICAge0ludHJpbnNpYzo6cHBjX3NldF90ZXhhc3IsIDk1MzY4fSwgLy8gX19idWlsdGluX3NldF90ZXhhc3IKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19zZXRfdGV4YXNydSwgOTUzODl9LCAvLyBfX2J1aWx0aW5fc2V0X3RleGFzcnUKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19zZXRfdGZoYXIsIDk1NDExfSwgLy8gX19idWlsdGluX3NldF90ZmhhcgorICAgICAge0ludHJpbnNpYzo6cHBjX3NldF90ZmlhciwgOTU0MzF9LCAvLyBfX2J1aWx0aW5fc2V0X3RmaWFyCisgICAgICB7SW50cmluc2ljOjpwcGNfc3FydGYxMjhfcm91bmRfdG9fb2RkLCA5NTQ1MX0sIC8vIF9fYnVpbHRpbl9zcXJ0ZjEyOF9yb3VuZF90b19vZGQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19zdWJmMTI4X3JvdW5kX3RvX29kZCwgOTU0ODN9LCAvLyBfX2J1aWx0aW5fc3ViZjEyOF9yb3VuZF90b19vZGQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY190YWJvcnQsIDk1NTE0fSwgLy8gX19idWlsdGluX3RhYm9ydAorICAgICAge0ludHJpbnNpYzo6cHBjX3RhYm9ydGRjLCA5NTUzMX0sIC8vIF9fYnVpbHRpbl90YWJvcnRkYworICAgICAge0ludHJpbnNpYzo6cHBjX3RhYm9ydGRjaSwgOTU1NTB9LCAvLyBfX2J1aWx0aW5fdGFib3J0ZGNpCisgICAgICB7SW50cmluc2ljOjpwcGNfdGFib3J0d2MsIDk1NTcwfSwgLy8gX19idWlsdGluX3RhYm9ydHdjCisgICAgICB7SW50cmluc2ljOjpwcGNfdGFib3J0d2NpLCA5NTU4OX0sIC8vIF9fYnVpbHRpbl90YWJvcnR3Y2kKKyAgICAgIHtJbnRyaW5zaWM6OnBwY190YmVnaW4sIDk1NjA5fSwgLy8gX19idWlsdGluX3RiZWdpbgorICAgICAge0ludHJpbnNpYzo6cHBjX3RjaGVjaywgOTU2MjZ9LCAvLyBfX2J1aWx0aW5fdGNoZWNrCisgICAgICB7SW50cmluc2ljOjpwcGNfdGVuZCwgOTU2NDN9LCAvLyBfX2J1aWx0aW5fdGVuZAorICAgICAge0ludHJpbnNpYzo6cHBjX3RlbmRhbGwsIDk1NjU4fSwgLy8gX19idWlsdGluX3RlbmRhbGwKKyAgICAgIHtJbnRyaW5zaWM6OnBwY190cmVjaGtwdCwgOTU2NzZ9LCAvLyBfX2J1aWx0aW5fdHJlY2hrcHQKKyAgICAgIHtJbnRyaW5zaWM6OnBwY190cmVjbGFpbSwgOTU2OTV9LCAvLyBfX2J1aWx0aW5fdHJlY2xhaW0KKyAgICAgIHtJbnRyaW5zaWM6OnBwY190cmVzdW1lLCA5NTcxNH0sIC8vIF9fYnVpbHRpbl90cmVzdW1lCisgICAgICB7SW50cmluc2ljOjpwcGNfdHJ1bmNmMTI4X3JvdW5kX3RvX29kZCwgOTU3MzJ9LCAvLyBfX2J1aWx0aW5fdHJ1bmNmMTI4X3JvdW5kX3RvX29kZAorICAgICAge0ludHJpbnNpYzo6cHBjX3RzciwgOTU3NjV9LCAvLyBfX2J1aWx0aW5fdHNyCisgICAgICB7SW50cmluc2ljOjpwcGNfdHN1c3BlbmQsIDk1Nzc5fSwgLy8gX19idWlsdGluX3RzdXNwZW5kCisgICAgICB7SW50cmluc2ljOjpwcGNfdHRlc3QsIDk1Nzk4fSwgLy8gX19idWlsdGluX3R0ZXN0CisgICAgICB7SW50cmluc2ljOjpwcGNfc2NhbGFyX2V4dHJhY3RfZXhwcSwgOTUyOTl9LCAvLyBfX2J1aWx0aW5fdnN4X3NjYWxhcl9leHRyYWN0X2V4cHEKKyAgICAgIHtJbnRyaW5zaWM6OnBwY19zY2FsYXJfaW5zZXJ0X2V4cF9xcCwgOTUzMzN9LCAvLyBfX2J1aWx0aW5fdnN4X3NjYWxhcl9pbnNlcnRfZXhwX3FwCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3hzbWF4ZHAsIDk1ODE0fSwgLy8gX19idWlsdGluX3ZzeF94c21heGRwCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3hzbWluZHAsIDk1ODM2fSwgLy8gX19idWlsdGluX3ZzeF94c21pbmRwCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2Y21wZXFkcCwgOTU4NTh9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y21wZXFkcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmNtcGVxZHBfcCwgOTU4ODJ9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y21wZXFkcF9wCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2Y21wZXFzcCwgOTU5MDh9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y21wZXFzcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmNtcGVxc3BfcCwgOTU5MzJ9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y21wZXFzcF9wCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2Y21wZ2VkcCwgOTU5NTh9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y21wZ2VkcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmNtcGdlZHBfcCwgOTU5ODJ9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y21wZ2VkcF9wCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2Y21wZ2VzcCwgOTYwMDh9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y21wZ2VzcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmNtcGdlc3BfcCwgOTYwMzJ9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y21wZ2VzcF9wCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2Y21wZ3RkcCwgOTYwNTh9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y21wZ3RkcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmNtcGd0ZHBfcCwgOTYwODJ9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y21wZ3RkcF9wCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2Y21wZ3RzcCwgOTYxMDh9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y21wZ3RzcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmNtcGd0c3BfcCwgOTYxMzJ9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y21wZ3RzcF9wCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2Y3ZkcHNwLCA5NjE1OH0sIC8vIF9fYnVpbHRpbl92c3hfeHZjdmRwc3AKKyAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZjdmRwc3h3cywgOTYxODF9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y3ZkcHN4d3MKKyAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZjdmRwdXh3cywgOTYyMDZ9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y3ZkcHV4d3MKKyAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZjdmhwc3AsIDk2MjMxfSwgLy8gX19idWlsdGluX3ZzeF94dmN2aHBzcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmN2c3BkcCwgOTYyNTR9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y3ZzcGRwCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2Y3ZzcGhwLCA5NjI3N30sIC8vIF9fYnVpbHRpbl92c3hfeHZjdnNwaHAKKyAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZjdnN4ZHNwLCA5NjMwMH0sIC8vIF9fYnVpbHRpbl92c3hfeHZjdnN4ZHNwCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2Y3ZzeHdkcCwgOTYzMjR9LCAvLyBfX2J1aWx0aW5fdnN4X3h2Y3ZzeHdkcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dmN2dXhkc3AsIDk2MzQ4fSwgLy8gX19idWlsdGluX3ZzeF94dmN2dXhkc3AKKyAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZjdnV4d2RwLCA5NjM3Mn0sIC8vIF9fYnVpbHRpbl92c3hfeHZjdnV4d2RwCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2ZGl2ZHAsIDk2Mzk2fSwgLy8gX19idWlsdGluX3ZzeF94dmRpdmRwCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2ZGl2c3AsIDk2NDE4fSwgLy8gX19idWlsdGluX3ZzeF94dmRpdnNwCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2aWV4cGRwLCA5NjQ0MH0sIC8vIF9fYnVpbHRpbl92c3hfeHZpZXhwZHAKKyAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZpZXhwc3AsIDk2NDYzfSwgLy8gX19idWlsdGluX3ZzeF94dmlleHBzcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dm1heGRwLCA5NjQ4Nn0sIC8vIF9fYnVpbHRpbl92c3hfeHZtYXhkcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dm1heHNwLCA5NjUwOH0sIC8vIF9fYnVpbHRpbl92c3hfeHZtYXhzcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dm1pbmRwLCA5NjUzMH0sIC8vIF9fYnVpbHRpbl92c3hfeHZtaW5kcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dm1pbnNwLCA5NjU1Mn0sIC8vIF9fYnVpbHRpbl92c3hfeHZtaW5zcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dnJlZHAsIDk2NTc0fSwgLy8gX19idWlsdGluX3ZzeF94dnJlZHAKKyAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZyZXNwLCA5NjU5NX0sIC8vIF9fYnVpbHRpbl92c3hfeHZyZXNwCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2cnNxcnRlZHAsIDk2NjE2fSwgLy8gX19idWlsdGluX3ZzeF94dnJzcXJ0ZWRwCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2cnNxcnRlc3AsIDk2NjQxfSwgLy8gX19idWlsdGluX3ZzeF94dnJzcXJ0ZXNwCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2dHN0ZGNkcCwgOTY2NjZ9LCAvLyBfX2J1aWx0aW5fdnN4X3h2dHN0ZGNkcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dnRzdGRjc3AsIDk2NjkwfSwgLy8gX19idWlsdGluX3ZzeF94dnRzdGRjc3AKKyAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZ4ZXhwZHAsIDk2NzE0fSwgLy8gX19idWlsdGluX3ZzeF94dnhleHBkcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94dnhleHBzcCwgOTY3Mzd9LCAvLyBfX2J1aWx0aW5fdnN4X3h2eGV4cHNwCisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h2eHNpZ2RwLCA5Njc2MH0sIC8vIF9fYnVpbHRpbl92c3hfeHZ4c2lnZHAKKyAgICAgIHtJbnRyaW5zaWM6OnBwY192c3hfeHZ4c2lnc3AsIDk2NzgzfSwgLy8gX19idWlsdGluX3ZzeF94dnhzaWdzcAorICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94eGV4dHJhY3R1dywgOTY4MDZ9LCAvLyBfX2J1aWx0aW5fdnN4X3h4ZXh0cmFjdHV3CisgICAgICB7SW50cmluc2ljOjpwcGNfdnN4X3h4aW5zZXJ0dywgOTY4MzJ9LCAvLyBfX2J1aWx0aW5fdnN4X3h4aW5zZXJ0dworICAgICAge0ludHJpbnNpYzo6cHBjX3ZzeF94eGxlcXYsIDk2ODU2fSwgLy8gX19idWlsdGluX3ZzeF94eGxlcXYKICAgICB9OwogICAgIGF1dG8gSSA9IHN0ZDo6bG93ZXJfYm91bmQoc3RkOjpiZWdpbihwcGNOYW1lcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuZChwcGNOYW1lcyksCkBAIC0yODQzMCwxOCArMjgzMjQsMTggQEAKICAgfQogICBpZiAoVGFyZ2V0UHJlZml4ID09ICJyNjAwIikgewogICAgIHN0YXRpYyBjb25zdCBCdWlsdGluRW50cnkgcjYwME5hbWVzW10gPSB7Ci0gICAgICB7SW50cmluc2ljOjpyNjAwX2dyb3VwX2JhcnJpZXIsIDk1MjE4fSwgLy8gX19idWlsdGluX3I2MDBfZ3JvdXBfYmFycmllcgotICAgICAge0ludHJpbnNpYzo6cjYwMF9pbXBsaWNpdGFyZ19wdHIsIDk1MjQ3fSwgLy8gX19idWlsdGluX3I2MDBfaW1wbGljaXRhcmdfcHRyCi0gICAgICB7SW50cmluc2ljOjpyNjAwX3JhdF9zdG9yZV90eXBlZCwgOTUyNzh9LCAvLyBfX2J1aWx0aW5fcjYwMF9yYXRfc3RvcmVfdHlwZWQKLSAgICAgIHtJbnRyaW5zaWM6OnI2MDBfcmVhZF9nbG9iYWxfc2l6ZV94LCA5NTMwOX0sIC8vIF9fYnVpbHRpbl9yNjAwX3JlYWRfZ2xvYmFsX3NpemVfeAotICAgICAge0ludHJpbnNpYzo6cjYwMF9yZWFkX2dsb2JhbF9zaXplX3ksIDk1MzQzfSwgLy8gX19idWlsdGluX3I2MDBfcmVhZF9nbG9iYWxfc2l6ZV95Ci0gICAgICB7SW50cmluc2ljOjpyNjAwX3JlYWRfZ2xvYmFsX3NpemVfeiwgOTUzNzd9LCAvLyBfX2J1aWx0aW5fcjYwMF9yZWFkX2dsb2JhbF9zaXplX3oKLSAgICAgIHtJbnRyaW5zaWM6OnI2MDBfcmVhZF9uZ3JvdXBzX3gsIDk1NDExfSwgLy8gX19idWlsdGluX3I2MDBfcmVhZF9uZ3JvdXBzX3gKLSAgICAgIHtJbnRyaW5zaWM6OnI2MDBfcmVhZF9uZ3JvdXBzX3ksIDk1NDQxfSwgLy8gX19idWlsdGluX3I2MDBfcmVhZF9uZ3JvdXBzX3kKLSAgICAgIHtJbnRyaW5zaWM6OnI2MDBfcmVhZF9uZ3JvdXBzX3osIDk1NDcxfSwgLy8gX19idWlsdGluX3I2MDBfcmVhZF9uZ3JvdXBzX3oKLSAgICAgIHtJbnRyaW5zaWM6OnI2MDBfcmVhZF90Z2lkX3gsIDk1NTAxfSwgLy8gX19idWlsdGluX3I2MDBfcmVhZF90Z2lkX3gKLSAgICAgIHtJbnRyaW5zaWM6OnI2MDBfcmVhZF90Z2lkX3ksIDk1NTI4fSwgLy8gX19idWlsdGluX3I2MDBfcmVhZF90Z2lkX3kKLSAgICAgIHtJbnRyaW5zaWM6OnI2MDBfcmVhZF90Z2lkX3osIDk1NTU1fSwgLy8gX19idWlsdGluX3I2MDBfcmVhZF90Z2lkX3oKKyAgICAgIHtJbnRyaW5zaWM6OnI2MDBfZ3JvdXBfYmFycmllciwgOTY4Nzd9LCAvLyBfX2J1aWx0aW5fcjYwMF9ncm91cF9iYXJyaWVyCisgICAgICB7SW50cmluc2ljOjpyNjAwX2ltcGxpY2l0YXJnX3B0ciwgOTY5MDZ9LCAvLyBfX2J1aWx0aW5fcjYwMF9pbXBsaWNpdGFyZ19wdHIKKyAgICAgIHtJbnRyaW5zaWM6OnI2MDBfcmF0X3N0b3JlX3R5cGVkLCA5NjkzN30sIC8vIF9fYnVpbHRpbl9yNjAwX3JhdF9zdG9yZV90eXBlZAorICAgICAge0ludHJpbnNpYzo6cjYwMF9yZWFkX2dsb2JhbF9zaXplX3gsIDk2OTY4fSwgLy8gX19idWlsdGluX3I2MDBfcmVhZF9nbG9iYWxfc2l6ZV94CisgICAgICB7SW50cmluc2ljOjpyNjAwX3JlYWRfZ2xvYmFsX3NpemVfeSwgOTcwMDJ9LCAvLyBfX2J1aWx0aW5fcjYwMF9yZWFkX2dsb2JhbF9zaXplX3kKKyAgICAgIHtJbnRyaW5zaWM6OnI2MDBfcmVhZF9nbG9iYWxfc2l6ZV96LCA5NzAzNn0sIC8vIF9fYnVpbHRpbl9yNjAwX3JlYWRfZ2xvYmFsX3NpemVfegorICAgICAge0ludHJpbnNpYzo6cjYwMF9yZWFkX25ncm91cHNfeCwgOTcwNzB9LCAvLyBfX2J1aWx0aW5fcjYwMF9yZWFkX25ncm91cHNfeAorICAgICAge0ludHJpbnNpYzo6cjYwMF9yZWFkX25ncm91cHNfeSwgOTcxMDB9LCAvLyBfX2J1aWx0aW5fcjYwMF9yZWFkX25ncm91cHNfeQorICAgICAge0ludHJpbnNpYzo6cjYwMF9yZWFkX25ncm91cHNfeiwgOTcxMzB9LCAvLyBfX2J1aWx0aW5fcjYwMF9yZWFkX25ncm91cHNfegorICAgICAge0ludHJpbnNpYzo6cjYwMF9yZWFkX3RnaWRfeCwgOTcxNjB9LCAvLyBfX2J1aWx0aW5fcjYwMF9yZWFkX3RnaWRfeAorICAgICAge0ludHJpbnNpYzo6cjYwMF9yZWFkX3RnaWRfeSwgOTcxODd9LCAvLyBfX2J1aWx0aW5fcjYwMF9yZWFkX3RnaWRfeQorICAgICAge0ludHJpbnNpYzo6cjYwMF9yZWFkX3RnaWRfeiwgOTcyMTR9LCAvLyBfX2J1aWx0aW5fcjYwMF9yZWFkX3RnaWRfegogICAgIH07CiAgICAgYXV0byBJID0gc3RkOjpsb3dlcl9ib3VuZChzdGQ6OmJlZ2luKHI2MDBOYW1lcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuZChyNjAwTmFtZXMpLApAQCAtMjg0NTIsMTYxICsyODM0NiwxNjEgQEAKICAgfQogICBpZiAoVGFyZ2V0UHJlZml4ID09ICJzMzkwIikgewogICAgIHN0YXRpYyBjb25zdCBCdWlsdGluRW50cnkgczM5ME5hbWVzW10gPSB7Ci0gICAgICB7SW50cmluc2ljOjpzMzkwX2VmcGMsIDk1NTgyfSwgLy8gX19idWlsdGluX3MzOTBfZWZwYwotICAgICAge0ludHJpbnNpYzo6czM5MF9sY2JiLCA5NTYyOX0sIC8vIF9fYnVpbHRpbl9zMzkwX2xjYmIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfc2ZwYywgOTU2Njl9LCAvLyBfX2J1aWx0aW5fczM5MF9zZnBjCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZhY2NiLCA5NTY4OX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZhY2NiCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZhY2NjcSwgOTU3MTB9LCAvLyBfX2J1aWx0aW5fczM5MF92YWNjY3EKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmFjY2YsIDk1NzMyfSwgLy8gX19idWlsdGluX3MzOTBfdmFjY2YKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmFjY2csIDk1NzUzfSwgLy8gX19idWlsdGluX3MzOTBfdmFjY2cKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmFjY2gsIDk1Nzc0fSwgLy8gX19idWlsdGluX3MzOTBfdmFjY2gKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmFjY3EsIDk1Nzk1fSwgLy8gX19idWlsdGluX3MzOTBfdmFjY3EKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmFjcSwgOTU4MTZ9LCAvLyBfX2J1aWx0aW5fczM5MF92YWNxCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZhcSwgOTU4MzZ9LCAvLyBfX2J1aWx0aW5fczM5MF92YXEKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmF2Z2IsIDk1ODU1fSwgLy8gX19idWlsdGluX3MzOTBfdmF2Z2IKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmF2Z2YsIDk1ODc2fSwgLy8gX19idWlsdGluX3MzOTBfdmF2Z2YKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmF2Z2csIDk1ODk3fSwgLy8gX19idWlsdGluX3MzOTBfdmF2Z2cKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmF2Z2gsIDk1OTE4fSwgLy8gX19idWlsdGluX3MzOTBfdmF2Z2gKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmF2Z2xiLCA5NTkzOX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZhdmdsYgotICAgICAge0ludHJpbnNpYzo6czM5MF92YXZnbGYsIDk1OTYxfSwgLy8gX19idWlsdGluX3MzOTBfdmF2Z2xmCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZhdmdsZywgOTU5ODN9LCAvLyBfX2J1aWx0aW5fczM5MF92YXZnbGcKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmF2Z2xoLCA5NjAwNX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZhdmdsaAotICAgICAge0ludHJpbnNpYzo6czM5MF92YnBlcm0sIDk2MDI3fSwgLy8gX19idWlsdGluX3MzOTBfdmJwZXJtCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3Zja3NtLCA5NjA0OX0sIC8vIF9fYnVpbHRpbl9zMzkwX3Zja3NtCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZlcmltYiwgOTYwNzB9LCAvLyBfX2J1aWx0aW5fczM5MF92ZXJpbWIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmVyaW1mLCA5NjA5Mn0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZlcmltZgotICAgICAge0ludHJpbnNpYzo6czM5MF92ZXJpbWcsIDk2MTE0fSwgLy8gX19idWlsdGluX3MzOTBfdmVyaW1nCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZlcmltaCwgOTYxMzZ9LCAvLyBfX2J1aWx0aW5fczM5MF92ZXJpbWgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmVybGxiLCA5NjE1OH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZlcmxsYgotICAgICAge0ludHJpbnNpYzo6czM5MF92ZXJsbGYsIDk2MTgwfSwgLy8gX19idWlsdGluX3MzOTBfdmVybGxmCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZlcmxsZywgOTYyMDJ9LCAvLyBfX2J1aWx0aW5fczM5MF92ZXJsbGcKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmVybGxoLCA5NjIyNH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZlcmxsaAotICAgICAge0ludHJpbnNpYzo6czM5MF92ZXJsbHZiLCA5NjI0Nn0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZlcmxsdmIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmVybGx2ZiwgOTYyNjl9LCAvLyBfX2J1aWx0aW5fczM5MF92ZXJsbHZmCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZlcmxsdmcsIDk2MjkyfSwgLy8gX19idWlsdGluX3MzOTBfdmVybGx2ZwotICAgICAge0ludHJpbnNpYzo6czM5MF92ZXJsbHZoLCA5NjMxNX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZlcmxsdmgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmZhZWIsIDk2MzM4fSwgLy8gX19idWlsdGluX3MzOTBfdmZhZWIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmZhZWYsIDk2MzU5fSwgLy8gX19idWlsdGluX3MzOTBfdmZhZWYKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmZhZWgsIDk2MzgwfSwgLy8gX19idWlsdGluX3MzOTBfdmZhZWgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmZhZXpiLCA5NjQwMX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZmYWV6YgotICAgICAge0ludHJpbnNpYzo6czM5MF92ZmFlemYsIDk2NDIzfSwgLy8gX19idWlsdGluX3MzOTBfdmZhZXpmCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZmYWV6aCwgOTY0NDV9LCAvLyBfX2J1aWx0aW5fczM5MF92ZmFlemgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmZlZWIsIDk2NDY3fSwgLy8gX19idWlsdGluX3MzOTBfdmZlZWIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmZlZWYsIDk2NDg4fSwgLy8gX19idWlsdGluX3MzOTBfdmZlZWYKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmZlZWgsIDk2NTA5fSwgLy8gX19idWlsdGluX3MzOTBfdmZlZWgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmZlZXpiLCA5NjUzMH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZmZWV6YgotICAgICAge0ludHJpbnNpYzo6czM5MF92ZmVlemYsIDk2NTUyfSwgLy8gX19idWlsdGluX3MzOTBfdmZlZXpmCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZmZWV6aCwgOTY1NzR9LCAvLyBfX2J1aWx0aW5fczM5MF92ZmVlemgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmZlbmViLCA5NjU5Nn0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZmZW5lYgotICAgICAge0ludHJpbnNpYzo6czM5MF92ZmVuZWYsIDk2NjE4fSwgLy8gX19idWlsdGluX3MzOTBfdmZlbmVmCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZmZW5laCwgOTY2NDB9LCAvLyBfX2J1aWx0aW5fczM5MF92ZmVuZWgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmZlbmV6YiwgOTY2NjJ9LCAvLyBfX2J1aWx0aW5fczM5MF92ZmVuZXpiCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZmZW5lemYsIDk2Njg1fSwgLy8gX19idWlsdGluX3MzOTBfdmZlbmV6ZgotICAgICAge0ludHJpbnNpYzo6czM5MF92ZmVuZXpoLCA5NjcwOH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZmZW5lemgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmdmbWFiLCA5NjczMX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZnZm1hYgotICAgICAge0ludHJpbnNpYzo6czM5MF92Z2ZtYWYsIDk2NzUzfSwgLy8gX19idWlsdGluX3MzOTBfdmdmbWFmCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZnZm1hZywgOTY3NzV9LCAvLyBfX2J1aWx0aW5fczM5MF92Z2ZtYWcKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmdmbWFoLCA5Njc5N30sIC8vIF9fYnVpbHRpbl9zMzkwX3ZnZm1haAotICAgICAge0ludHJpbnNpYzo6czM5MF92Z2ZtYiwgOTY4MTl9LCAvLyBfX2J1aWx0aW5fczM5MF92Z2ZtYgotICAgICAge0ludHJpbnNpYzo6czM5MF92Z2ZtZiwgOTY4NDB9LCAvLyBfX2J1aWx0aW5fczM5MF92Z2ZtZgotICAgICAge0ludHJpbnNpYzo6czM5MF92Z2ZtZywgOTY4NjF9LCAvLyBfX2J1aWx0aW5fczM5MF92Z2ZtZwotICAgICAge0ludHJpbnNpYzo6czM5MF92Z2ZtaCwgOTY4ODJ9LCAvLyBfX2J1aWx0aW5fczM5MF92Z2ZtaAotICAgICAge0ludHJpbnNpYzo6czM5MF92aXN0cmIsIDk2OTAzfSwgLy8gX19idWlsdGluX3MzOTBfdmlzdHJiCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3Zpc3RyZiwgOTY5MjV9LCAvLyBfX2J1aWx0aW5fczM5MF92aXN0cmYKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmlzdHJoLCA5Njk0N30sIC8vIF9fYnVpbHRpbl9zMzkwX3Zpc3RyaAotICAgICAge0ludHJpbnNpYzo6czM5MF92bGJiLCA5Njk2OX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZsYmIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmxsLCA5Njk4OX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZsbAotICAgICAge0ludHJpbnNpYzo6czM5MF92bHJsLCA5NzAwOH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZscmwKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1hZWIsIDk3MDI4fSwgLy8gX19idWlsdGluX3MzOTBfdm1hZWIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1hZWYsIDk3MDQ5fSwgLy8gX19idWlsdGluX3MzOTBfdm1hZWYKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1hZWgsIDk3MDcwfSwgLy8gX19idWlsdGluX3MzOTBfdm1hZWgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1haGIsIDk3MDkxfSwgLy8gX19idWlsdGluX3MzOTBfdm1haGIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1haGYsIDk3MTEyfSwgLy8gX19idWlsdGluX3MzOTBfdm1haGYKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1haGgsIDk3MTMzfSwgLy8gX19idWlsdGluX3MzOTBfdm1haGgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1hbGViLCA5NzE1NH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZtYWxlYgotICAgICAge0ludHJpbnNpYzo6czM5MF92bWFsZWYsIDk3MTc2fSwgLy8gX19idWlsdGluX3MzOTBfdm1hbGVmCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZtYWxlaCwgOTcxOTh9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFsZWgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1hbGhiLCA5NzIyMH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZtYWxoYgotICAgICAge0ludHJpbnNpYzo6czM5MF92bWFsaGYsIDk3MjQyfSwgLy8gX19idWlsdGluX3MzOTBfdm1hbGhmCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZtYWxoaCwgOTcyNjR9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFsaGgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1hbG9iLCA5NzI4Nn0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZtYWxvYgotICAgICAge0ludHJpbnNpYzo6czM5MF92bWFsb2YsIDk3MzA4fSwgLy8gX19idWlsdGluX3MzOTBfdm1hbG9mCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZtYWxvaCwgOTczMzB9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFsb2gKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1hb2IsIDk3MzUyfSwgLy8gX19idWlsdGluX3MzOTBfdm1hb2IKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1hb2YsIDk3MzczfSwgLy8gX19idWlsdGluX3MzOTBfdm1hb2YKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1hb2gsIDk3Mzk0fSwgLy8gX19idWlsdGluX3MzOTBfdm1hb2gKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1lYiwgOTc0MTV9LCAvLyBfX2J1aWx0aW5fczM5MF92bWViCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZtZWYsIDk3NDM1fSwgLy8gX19idWlsdGluX3MzOTBfdm1lZgotICAgICAge0ludHJpbnNpYzo6czM5MF92bWVoLCA5NzQ1NX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZtZWgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1oYiwgOTc0NzV9LCAvLyBfX2J1aWx0aW5fczM5MF92bWhiCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZtaGYsIDk3NDk1fSwgLy8gX19idWlsdGluX3MzOTBfdm1oZgotICAgICAge0ludHJpbnNpYzo6czM5MF92bWhoLCA5NzUxNX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZtaGgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1sZWIsIDk3NTM1fSwgLy8gX19idWlsdGluX3MzOTBfdm1sZWIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1sZWYsIDk3NTU2fSwgLy8gX19idWlsdGluX3MzOTBfdm1sZWYKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1sZWgsIDk3NTc3fSwgLy8gX19idWlsdGluX3MzOTBfdm1sZWgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1saGIsIDk3NTk4fSwgLy8gX19idWlsdGluX3MzOTBfdm1saGIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1saGYsIDk3NjE5fSwgLy8gX19idWlsdGluX3MzOTBfdm1saGYKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1saGgsIDk3NjQwfSwgLy8gX19idWlsdGluX3MzOTBfdm1saGgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1sb2IsIDk3NjYxfSwgLy8gX19idWlsdGluX3MzOTBfdm1sb2IKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1sb2YsIDk3NjgyfSwgLy8gX19idWlsdGluX3MzOTBfdm1sb2YKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1sb2gsIDk3NzAzfSwgLy8gX19idWlsdGluX3MzOTBfdm1sb2gKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1vYiwgOTc3MjR9LCAvLyBfX2J1aWx0aW5fczM5MF92bW9iCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3Ztb2YsIDk3NzQ0fSwgLy8gX19idWlsdGluX3MzOTBfdm1vZgotICAgICAge0ludHJpbnNpYzo6czM5MF92bW9oLCA5Nzc2NH0sIC8vIF9fYnVpbHRpbl9zMzkwX3Ztb2gKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1zbGcsIDk3Nzg0fSwgLy8gX19idWlsdGluX3MzOTBfdm1zbGcKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnBkaSwgOTc4MDV9LCAvLyBfX2J1aWx0aW5fczM5MF92cGRpCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZwZXJtLCA5NzgyNX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZwZXJtCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3Zwa2xzZiwgOTc4NDZ9LCAvLyBfX2J1aWx0aW5fczM5MF92cGtsc2YKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnBrbHNnLCA5Nzg2OH0sIC8vIF9fYnVpbHRpbl9zMzkwX3Zwa2xzZwotICAgICAge0ludHJpbnNpYzo6czM5MF92cGtsc2gsIDk3ODkwfSwgLy8gX19idWlsdGluX3MzOTBfdnBrbHNoCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3Zwa3NmLCA5NzkxMn0sIC8vIF9fYnVpbHRpbl9zMzkwX3Zwa3NmCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3Zwa3NnLCA5NzkzM30sIC8vIF9fYnVpbHRpbl9zMzkwX3Zwa3NnCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3Zwa3NoLCA5Nzk1NH0sIC8vIF9fYnVpbHRpbl9zMzkwX3Zwa3NoCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZzYmNiaXEsIDk3OTc1fSwgLy8gX19idWlsdGluX3MzOTBfdnNiY2JpcQotICAgICAge0ludHJpbnNpYzo6czM5MF92c2JpcSwgOTc5OTh9LCAvLyBfX2J1aWx0aW5fczM5MF92c2JpcQotICAgICAge0ludHJpbnNpYzo6czM5MF92c2NiaWIsIDk4MDE5fSwgLy8gX19idWlsdGluX3MzOTBfdnNjYmliCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZzY2JpZiwgOTgwNDF9LCAvLyBfX2J1aWx0aW5fczM5MF92c2NiaWYKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnNjYmlnLCA5ODA2M30sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzY2JpZwotICAgICAge0ludHJpbnNpYzo6czM5MF92c2NiaWgsIDk4MDg1fSwgLy8gX19idWlsdGluX3MzOTBfdnNjYmloCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZzY2JpcSwgOTgxMDd9LCAvLyBfX2J1aWx0aW5fczM5MF92c2NiaXEKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnNsLCA5ODEyOX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzbAotICAgICAge0ludHJpbnNpYzo6czM5MF92c2xiLCA5ODE0OH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzbGIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnNsZGIsIDk4MTY4fSwgLy8gX19idWlsdGluX3MzOTBfdnNsZGIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnNxLCA5ODE4OX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzcQotICAgICAge0ludHJpbnNpYzo6czM5MF92c3JhLCA5ODIwOH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzcmEKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnNyYWIsIDk4MjI4fSwgLy8gX19idWlsdGluX3MzOTBfdnNyYWIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnNybCwgOTgyNDl9LCAvLyBfX2J1aWx0aW5fczM5MF92c3JsCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZzcmxiLCA5ODI2OX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzcmxiCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZzdGwsIDk4MjkwfSwgLy8gX19idWlsdGluX3MzOTBfdnN0bAotICAgICAge0ludHJpbnNpYzo6czM5MF92c3RyY2IsIDk4MzEwfSwgLy8gX19idWlsdGluX3MzOTBfdnN0cmNiCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZzdHJjZiwgOTgzMzJ9LCAvLyBfX2J1aWx0aW5fczM5MF92c3RyY2YKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnN0cmNoLCA5ODM1NH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzdHJjaAotICAgICAge0ludHJpbnNpYzo6czM5MF92c3RyY3piLCA5ODM3Nn0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzdHJjemIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnN0cmN6ZiwgOTgzOTl9LCAvLyBfX2J1aWx0aW5fczM5MF92c3RyY3pmCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZzdHJjemgsIDk4NDIyfSwgLy8gX19idWlsdGluX3MzOTBfdnN0cmN6aAotICAgICAge0ludHJpbnNpYzo6czM5MF92c3RybCwgOTg0NDV9LCAvLyBfX2J1aWx0aW5fczM5MF92c3RybAotICAgICAge0ludHJpbnNpYzo6czM5MF92c3VtYiwgOTg0NjZ9LCAvLyBfX2J1aWx0aW5fczM5MF92c3VtYgotICAgICAge0ludHJpbnNpYzo6czM5MF92c3VtZ2YsIDk4NDg3fSwgLy8gX19idWlsdGluX3MzOTBfdnN1bWdmCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3ZzdW1naCwgOTg1MDl9LCAvLyBfX2J1aWx0aW5fczM5MF92c3VtZ2gKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnN1bWgsIDk4NTMxfSwgLy8gX19idWlsdGluX3MzOTBfdnN1bWgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnN1bXFmLCA5ODU1Mn0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzdW1xZgotICAgICAge0ludHJpbnNpYzo6czM5MF92c3VtcWcsIDk4NTc0fSwgLy8gX19idWlsdGluX3MzOTBfdnN1bXFnCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3Z0bSwgOTg1OTZ9LCAvLyBfX2J1aWx0aW5fczM5MF92dG0KLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnVwaGIsIDk4NjE1fSwgLy8gX19idWlsdGluX3MzOTBfdnVwaGIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnVwaGYsIDk4NjM2fSwgLy8gX19idWlsdGluX3MzOTBfdnVwaGYKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnVwaGgsIDk4NjU3fSwgLy8gX19idWlsdGluX3MzOTBfdnVwaGgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnVwbGIsIDk4Njc4fSwgLy8gX19idWlsdGluX3MzOTBfdnVwbGIKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnVwbGYsIDk4Njk5fSwgLy8gX19idWlsdGluX3MzOTBfdnVwbGYKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnVwbGhiLCA5ODcyMH0sIC8vIF9fYnVpbHRpbl9zMzkwX3Z1cGxoYgotICAgICAge0ludHJpbnNpYzo6czM5MF92dXBsaGYsIDk4NzQyfSwgLy8gX19idWlsdGluX3MzOTBfdnVwbGhmCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3Z1cGxoaCwgOTg3NjR9LCAvLyBfX2J1aWx0aW5fczM5MF92dXBsaGgKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnVwbGh3LCA5ODc4Nn0sIC8vIF9fYnVpbHRpbl9zMzkwX3Z1cGxodwotICAgICAge0ludHJpbnNpYzo6czM5MF92dXBsbGIsIDk4ODA4fSwgLy8gX19idWlsdGluX3MzOTBfdnVwbGxiCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3Z1cGxsZiwgOTg4MzB9LCAvLyBfX2J1aWx0aW5fczM5MF92dXBsbGYKLSAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnVwbGxoLCA5ODg1Mn0sIC8vIF9fYnVpbHRpbl9zMzkwX3Z1cGxsaAotICAgICAge0ludHJpbnNpYzo6czM5MF90ZW5kLCA5Mzk4NH0sIC8vIF9fYnVpbHRpbl90ZW5kCi0gICAgICB7SW50cmluc2ljOjpzMzkwX3BwYV90eGFzc2lzdCwgOTU2NDl9LCAvLyBfX2J1aWx0aW5fdHhfYXNzaXN0Ci0gICAgICB7SW50cmluc2ljOjpzMzkwX2V0bmQsIDk1NjAyfSwgLy8gX19idWlsdGluX3R4X25lc3RpbmdfZGVwdGgKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfZWZwYywgOTcyNDF9LCAvLyBfX2J1aWx0aW5fczM5MF9lZnBjCisgICAgICB7SW50cmluc2ljOjpzMzkwX2xjYmIsIDk3Mjg4fSwgLy8gX19idWlsdGluX3MzOTBfbGNiYgorICAgICAge0ludHJpbnNpYzo6czM5MF9zZnBjLCA5NzMyOH0sIC8vIF9fYnVpbHRpbl9zMzkwX3NmcGMKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmFjY2IsIDk3MzQ4fSwgLy8gX19idWlsdGluX3MzOTBfdmFjY2IKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmFjY2NxLCA5NzM2OX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZhY2NjcQorICAgICAge0ludHJpbnNpYzo6czM5MF92YWNjZiwgOTczOTF9LCAvLyBfX2J1aWx0aW5fczM5MF92YWNjZgorICAgICAge0ludHJpbnNpYzo6czM5MF92YWNjZywgOTc0MTJ9LCAvLyBfX2J1aWx0aW5fczM5MF92YWNjZworICAgICAge0ludHJpbnNpYzo6czM5MF92YWNjaCwgOTc0MzN9LCAvLyBfX2J1aWx0aW5fczM5MF92YWNjaAorICAgICAge0ludHJpbnNpYzo6czM5MF92YWNjcSwgOTc0NTR9LCAvLyBfX2J1aWx0aW5fczM5MF92YWNjcQorICAgICAge0ludHJpbnNpYzo6czM5MF92YWNxLCA5NzQ3NX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZhY3EKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmFxLCA5NzQ5NX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZhcQorICAgICAge0ludHJpbnNpYzo6czM5MF92YXZnYiwgOTc1MTR9LCAvLyBfX2J1aWx0aW5fczM5MF92YXZnYgorICAgICAge0ludHJpbnNpYzo6czM5MF92YXZnZiwgOTc1MzV9LCAvLyBfX2J1aWx0aW5fczM5MF92YXZnZgorICAgICAge0ludHJpbnNpYzo6czM5MF92YXZnZywgOTc1NTZ9LCAvLyBfX2J1aWx0aW5fczM5MF92YXZnZworICAgICAge0ludHJpbnNpYzo6czM5MF92YXZnaCwgOTc1Nzd9LCAvLyBfX2J1aWx0aW5fczM5MF92YXZnaAorICAgICAge0ludHJpbnNpYzo6czM5MF92YXZnbGIsIDk3NTk4fSwgLy8gX19idWlsdGluX3MzOTBfdmF2Z2xiCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZhdmdsZiwgOTc2MjB9LCAvLyBfX2J1aWx0aW5fczM5MF92YXZnbGYKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmF2Z2xnLCA5NzY0Mn0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZhdmdsZworICAgICAge0ludHJpbnNpYzo6czM5MF92YXZnbGgsIDk3NjY0fSwgLy8gX19idWlsdGluX3MzOTBfdmF2Z2xoCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZicGVybSwgOTc2ODZ9LCAvLyBfX2J1aWx0aW5fczM5MF92YnBlcm0KKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmNrc20sIDk3NzA4fSwgLy8gX19idWlsdGluX3MzOTBfdmNrc20KKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmVyaW1iLCA5NzcyOX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZlcmltYgorICAgICAge0ludHJpbnNpYzo6czM5MF92ZXJpbWYsIDk3NzUxfSwgLy8gX19idWlsdGluX3MzOTBfdmVyaW1mCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZlcmltZywgOTc3NzN9LCAvLyBfX2J1aWx0aW5fczM5MF92ZXJpbWcKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmVyaW1oLCA5Nzc5NX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZlcmltaAorICAgICAge0ludHJpbnNpYzo6czM5MF92ZXJsbGIsIDk3ODE3fSwgLy8gX19idWlsdGluX3MzOTBfdmVybGxiCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZlcmxsZiwgOTc4Mzl9LCAvLyBfX2J1aWx0aW5fczM5MF92ZXJsbGYKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmVybGxnLCA5Nzg2MX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZlcmxsZworICAgICAge0ludHJpbnNpYzo6czM5MF92ZXJsbGgsIDk3ODgzfSwgLy8gX19idWlsdGluX3MzOTBfdmVybGxoCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZlcmxsdmIsIDk3OTA1fSwgLy8gX19idWlsdGluX3MzOTBfdmVybGx2YgorICAgICAge0ludHJpbnNpYzo6czM5MF92ZXJsbHZmLCA5NzkyOH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZlcmxsdmYKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmVybGx2ZywgOTc5NTF9LCAvLyBfX2J1aWx0aW5fczM5MF92ZXJsbHZnCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZlcmxsdmgsIDk3OTc0fSwgLy8gX19idWlsdGluX3MzOTBfdmVybGx2aAorICAgICAge0ludHJpbnNpYzo6czM5MF92ZmFlYiwgOTc5OTd9LCAvLyBfX2J1aWx0aW5fczM5MF92ZmFlYgorICAgICAge0ludHJpbnNpYzo6czM5MF92ZmFlZiwgOTgwMTh9LCAvLyBfX2J1aWx0aW5fczM5MF92ZmFlZgorICAgICAge0ludHJpbnNpYzo6czM5MF92ZmFlaCwgOTgwMzl9LCAvLyBfX2J1aWx0aW5fczM5MF92ZmFlaAorICAgICAge0ludHJpbnNpYzo6czM5MF92ZmFlemIsIDk4MDYwfSwgLy8gX19idWlsdGluX3MzOTBfdmZhZXpiCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZmYWV6ZiwgOTgwODJ9LCAvLyBfX2J1aWx0aW5fczM5MF92ZmFlemYKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmZhZXpoLCA5ODEwNH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZmYWV6aAorICAgICAge0ludHJpbnNpYzo6czM5MF92ZmVlYiwgOTgxMjZ9LCAvLyBfX2J1aWx0aW5fczM5MF92ZmVlYgorICAgICAge0ludHJpbnNpYzo6czM5MF92ZmVlZiwgOTgxNDd9LCAvLyBfX2J1aWx0aW5fczM5MF92ZmVlZgorICAgICAge0ludHJpbnNpYzo6czM5MF92ZmVlaCwgOTgxNjh9LCAvLyBfX2J1aWx0aW5fczM5MF92ZmVlaAorICAgICAge0ludHJpbnNpYzo6czM5MF92ZmVlemIsIDk4MTg5fSwgLy8gX19idWlsdGluX3MzOTBfdmZlZXpiCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZmZWV6ZiwgOTgyMTF9LCAvLyBfX2J1aWx0aW5fczM5MF92ZmVlemYKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmZlZXpoLCA5ODIzM30sIC8vIF9fYnVpbHRpbl9zMzkwX3ZmZWV6aAorICAgICAge0ludHJpbnNpYzo6czM5MF92ZmVuZWIsIDk4MjU1fSwgLy8gX19idWlsdGluX3MzOTBfdmZlbmViCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZmZW5lZiwgOTgyNzd9LCAvLyBfX2J1aWx0aW5fczM5MF92ZmVuZWYKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmZlbmVoLCA5ODI5OX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZmZW5laAorICAgICAge0ludHJpbnNpYzo6czM5MF92ZmVuZXpiLCA5ODMyMX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZmZW5lemIKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmZlbmV6ZiwgOTgzNDR9LCAvLyBfX2J1aWx0aW5fczM5MF92ZmVuZXpmCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZmZW5lemgsIDk4MzY3fSwgLy8gX19idWlsdGluX3MzOTBfdmZlbmV6aAorICAgICAge0ludHJpbnNpYzo6czM5MF92Z2ZtYWIsIDk4MzkwfSwgLy8gX19idWlsdGluX3MzOTBfdmdmbWFiCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZnZm1hZiwgOTg0MTJ9LCAvLyBfX2J1aWx0aW5fczM5MF92Z2ZtYWYKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmdmbWFnLCA5ODQzNH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZnZm1hZworICAgICAge0ludHJpbnNpYzo6czM5MF92Z2ZtYWgsIDk4NDU2fSwgLy8gX19idWlsdGluX3MzOTBfdmdmbWFoCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZnZm1iLCA5ODQ3OH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZnZm1iCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZnZm1mLCA5ODQ5OX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZnZm1mCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZnZm1nLCA5ODUyMH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZnZm1nCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZnZm1oLCA5ODU0MX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZnZm1oCisgICAgICB7SW50cmluc2ljOjpzMzkwX3Zpc3RyYiwgOTg1NjJ9LCAvLyBfX2J1aWx0aW5fczM5MF92aXN0cmIKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdmlzdHJmLCA5ODU4NH0sIC8vIF9fYnVpbHRpbl9zMzkwX3Zpc3RyZgorICAgICAge0ludHJpbnNpYzo6czM5MF92aXN0cmgsIDk4NjA2fSwgLy8gX19idWlsdGluX3MzOTBfdmlzdHJoCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZsYmIsIDk4NjI4fSwgLy8gX19idWlsdGluX3MzOTBfdmxiYgorICAgICAge0ludHJpbnNpYzo6czM5MF92bGwsIDk4NjQ4fSwgLy8gX19idWlsdGluX3MzOTBfdmxsCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZscmwsIDk4NjY3fSwgLy8gX19idWlsdGluX3MzOTBfdmxybAorICAgICAge0ludHJpbnNpYzo6czM5MF92bWFlYiwgOTg2ODd9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFlYgorICAgICAge0ludHJpbnNpYzo6czM5MF92bWFlZiwgOTg3MDh9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFlZgorICAgICAge0ludHJpbnNpYzo6czM5MF92bWFlaCwgOTg3Mjl9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFlaAorICAgICAge0ludHJpbnNpYzo6czM5MF92bWFoYiwgOTg3NTB9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFoYgorICAgICAge0ludHJpbnNpYzo6czM5MF92bWFoZiwgOTg3NzF9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFoZgorICAgICAge0ludHJpbnNpYzo6czM5MF92bWFoaCwgOTg3OTJ9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFoaAorICAgICAge0ludHJpbnNpYzo6czM5MF92bWFsZWIsIDk4ODEzfSwgLy8gX19idWlsdGluX3MzOTBfdm1hbGViCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZtYWxlZiwgOTg4MzV9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFsZWYKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1hbGVoLCA5ODg1N30sIC8vIF9fYnVpbHRpbl9zMzkwX3ZtYWxlaAorICAgICAge0ludHJpbnNpYzo6czM5MF92bWFsaGIsIDk4ODc5fSwgLy8gX19idWlsdGluX3MzOTBfdm1hbGhiCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZtYWxoZiwgOTg5MDF9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFsaGYKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1hbGhoLCA5ODkyM30sIC8vIF9fYnVpbHRpbl9zMzkwX3ZtYWxoaAorICAgICAge0ludHJpbnNpYzo6czM5MF92bWFsb2IsIDk4OTQ1fSwgLy8gX19idWlsdGluX3MzOTBfdm1hbG9iCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZtYWxvZiwgOTg5Njd9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFsb2YKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1hbG9oLCA5ODk4OX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZtYWxvaAorICAgICAge0ludHJpbnNpYzo6czM5MF92bWFvYiwgOTkwMTF9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFvYgorICAgICAge0ludHJpbnNpYzo6czM5MF92bWFvZiwgOTkwMzJ9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFvZgorICAgICAge0ludHJpbnNpYzo6czM5MF92bWFvaCwgOTkwNTN9LCAvLyBfX2J1aWx0aW5fczM5MF92bWFvaAorICAgICAge0ludHJpbnNpYzo6czM5MF92bWViLCA5OTA3NH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZtZWIKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1lZiwgOTkwOTR9LCAvLyBfX2J1aWx0aW5fczM5MF92bWVmCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZtZWgsIDk5MTE0fSwgLy8gX19idWlsdGluX3MzOTBfdm1laAorICAgICAge0ludHJpbnNpYzo6czM5MF92bWhiLCA5OTEzNH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZtaGIKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1oZiwgOTkxNTR9LCAvLyBfX2J1aWx0aW5fczM5MF92bWhmCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZtaGgsIDk5MTc0fSwgLy8gX19idWlsdGluX3MzOTBfdm1oaAorICAgICAge0ludHJpbnNpYzo6czM5MF92bWxlYiwgOTkxOTR9LCAvLyBfX2J1aWx0aW5fczM5MF92bWxlYgorICAgICAge0ludHJpbnNpYzo6czM5MF92bWxlZiwgOTkyMTV9LCAvLyBfX2J1aWx0aW5fczM5MF92bWxlZgorICAgICAge0ludHJpbnNpYzo6czM5MF92bWxlaCwgOTkyMzZ9LCAvLyBfX2J1aWx0aW5fczM5MF92bWxlaAorICAgICAge0ludHJpbnNpYzo6czM5MF92bWxoYiwgOTkyNTd9LCAvLyBfX2J1aWx0aW5fczM5MF92bWxoYgorICAgICAge0ludHJpbnNpYzo6czM5MF92bWxoZiwgOTkyNzh9LCAvLyBfX2J1aWx0aW5fczM5MF92bWxoZgorICAgICAge0ludHJpbnNpYzo6czM5MF92bWxoaCwgOTkyOTl9LCAvLyBfX2J1aWx0aW5fczM5MF92bWxoaAorICAgICAge0ludHJpbnNpYzo6czM5MF92bWxvYiwgOTkzMjB9LCAvLyBfX2J1aWx0aW5fczM5MF92bWxvYgorICAgICAge0ludHJpbnNpYzo6czM5MF92bWxvZiwgOTkzNDF9LCAvLyBfX2J1aWx0aW5fczM5MF92bWxvZgorICAgICAge0ludHJpbnNpYzo6czM5MF92bWxvaCwgOTkzNjJ9LCAvLyBfX2J1aWx0aW5fczM5MF92bWxvaAorICAgICAge0ludHJpbnNpYzo6czM5MF92bW9iLCA5OTM4M30sIC8vIF9fYnVpbHRpbl9zMzkwX3Ztb2IKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdm1vZiwgOTk0MDN9LCAvLyBfX2J1aWx0aW5fczM5MF92bW9mCisgICAgICB7SW50cmluc2ljOjpzMzkwX3Ztb2gsIDk5NDIzfSwgLy8gX19idWlsdGluX3MzOTBfdm1vaAorICAgICAge0ludHJpbnNpYzo6czM5MF92bXNsZywgOTk0NDN9LCAvLyBfX2J1aWx0aW5fczM5MF92bXNsZworICAgICAge0ludHJpbnNpYzo6czM5MF92cGRpLCA5OTQ2NH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZwZGkKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnBlcm0sIDk5NDg0fSwgLy8gX19idWlsdGluX3MzOTBfdnBlcm0KKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnBrbHNmLCA5OTUwNX0sIC8vIF9fYnVpbHRpbl9zMzkwX3Zwa2xzZgorICAgICAge0ludHJpbnNpYzo6czM5MF92cGtsc2csIDk5NTI3fSwgLy8gX19idWlsdGluX3MzOTBfdnBrbHNnCisgICAgICB7SW50cmluc2ljOjpzMzkwX3Zwa2xzaCwgOTk1NDl9LCAvLyBfX2J1aWx0aW5fczM5MF92cGtsc2gKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnBrc2YsIDk5NTcxfSwgLy8gX19idWlsdGluX3MzOTBfdnBrc2YKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnBrc2csIDk5NTkyfSwgLy8gX19idWlsdGluX3MzOTBfdnBrc2cKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnBrc2gsIDk5NjEzfSwgLy8gX19idWlsdGluX3MzOTBfdnBrc2gKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnNiY2JpcSwgOTk2MzR9LCAvLyBfX2J1aWx0aW5fczM5MF92c2JjYmlxCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZzYmlxLCA5OTY1N30sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzYmlxCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZzY2JpYiwgOTk2Nzh9LCAvLyBfX2J1aWx0aW5fczM5MF92c2NiaWIKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnNjYmlmLCA5OTcwMH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzY2JpZgorICAgICAge0ludHJpbnNpYzo6czM5MF92c2NiaWcsIDk5NzIyfSwgLy8gX19idWlsdGluX3MzOTBfdnNjYmlnCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZzY2JpaCwgOTk3NDR9LCAvLyBfX2J1aWx0aW5fczM5MF92c2NiaWgKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnNjYmlxLCA5OTc2Nn0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzY2JpcQorICAgICAge0ludHJpbnNpYzo6czM5MF92c2wsIDk5Nzg4fSwgLy8gX19idWlsdGluX3MzOTBfdnNsCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZzbGIsIDk5ODA3fSwgLy8gX19idWlsdGluX3MzOTBfdnNsYgorICAgICAge0ludHJpbnNpYzo6czM5MF92c2xkYiwgOTk4Mjd9LCAvLyBfX2J1aWx0aW5fczM5MF92c2xkYgorICAgICAge0ludHJpbnNpYzo6czM5MF92c3EsIDk5ODQ4fSwgLy8gX19idWlsdGluX3MzOTBfdnNxCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZzcmEsIDk5ODY3fSwgLy8gX19idWlsdGluX3MzOTBfdnNyYQorICAgICAge0ludHJpbnNpYzo6czM5MF92c3JhYiwgOTk4ODd9LCAvLyBfX2J1aWx0aW5fczM5MF92c3JhYgorICAgICAge0ludHJpbnNpYzo6czM5MF92c3JsLCA5OTkwOH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzcmwKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnNybGIsIDk5OTI4fSwgLy8gX19idWlsdGluX3MzOTBfdnNybGIKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnN0bCwgOTk5NDl9LCAvLyBfX2J1aWx0aW5fczM5MF92c3RsCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZzdHJjYiwgOTk5Njl9LCAvLyBfX2J1aWx0aW5fczM5MF92c3RyY2IKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnN0cmNmLCA5OTk5MX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzdHJjZgorICAgICAge0ludHJpbnNpYzo6czM5MF92c3RyY2gsIDEwMDAxM30sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzdHJjaAorICAgICAge0ludHJpbnNpYzo6czM5MF92c3RyY3piLCAxMDAwMzV9LCAvLyBfX2J1aWx0aW5fczM5MF92c3RyY3piCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZzdHJjemYsIDEwMDA1OH0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzdHJjemYKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnN0cmN6aCwgMTAwMDgxfSwgLy8gX19idWlsdGluX3MzOTBfdnN0cmN6aAorICAgICAge0ludHJpbnNpYzo6czM5MF92c3RybCwgMTAwMTA0fSwgLy8gX19idWlsdGluX3MzOTBfdnN0cmwKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnN1bWIsIDEwMDEyNX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzdW1iCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZzdW1nZiwgMTAwMTQ2fSwgLy8gX19idWlsdGluX3MzOTBfdnN1bWdmCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZzdW1naCwgMTAwMTY4fSwgLy8gX19idWlsdGluX3MzOTBfdnN1bWdoCisgICAgICB7SW50cmluc2ljOjpzMzkwX3ZzdW1oLCAxMDAxOTB9LCAvLyBfX2J1aWx0aW5fczM5MF92c3VtaAorICAgICAge0ludHJpbnNpYzo6czM5MF92c3VtcWYsIDEwMDIxMX0sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzdW1xZgorICAgICAge0ludHJpbnNpYzo6czM5MF92c3VtcWcsIDEwMDIzM30sIC8vIF9fYnVpbHRpbl9zMzkwX3ZzdW1xZworICAgICAge0ludHJpbnNpYzo6czM5MF92dG0sIDEwMDI1NX0sIC8vIF9fYnVpbHRpbl9zMzkwX3Z0bQorICAgICAge0ludHJpbnNpYzo6czM5MF92dXBoYiwgMTAwMjc0fSwgLy8gX19idWlsdGluX3MzOTBfdnVwaGIKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnVwaGYsIDEwMDI5NX0sIC8vIF9fYnVpbHRpbl9zMzkwX3Z1cGhmCisgICAgICB7SW50cmluc2ljOjpzMzkwX3Z1cGhoLCAxMDAzMTZ9LCAvLyBfX2J1aWx0aW5fczM5MF92dXBoaAorICAgICAge0ludHJpbnNpYzo6czM5MF92dXBsYiwgMTAwMzM3fSwgLy8gX19idWlsdGluX3MzOTBfdnVwbGIKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfdnVwbGYsIDEwMDM1OH0sIC8vIF9fYnVpbHRpbl9zMzkwX3Z1cGxmCisgICAgICB7SW50cmluc2ljOjpzMzkwX3Z1cGxoYiwgMTAwMzc5fSwgLy8gX19idWlsdGluX3MzOTBfdnVwbGhiCisgICAgICB7SW50cmluc2ljOjpzMzkwX3Z1cGxoZiwgMTAwNDAxfSwgLy8gX19idWlsdGluX3MzOTBfdnVwbGhmCisgICAgICB7SW50cmluc2ljOjpzMzkwX3Z1cGxoaCwgMTAwNDIzfSwgLy8gX19idWlsdGluX3MzOTBfdnVwbGhoCisgICAgICB7SW50cmluc2ljOjpzMzkwX3Z1cGxodywgMTAwNDQ1fSwgLy8gX19idWlsdGluX3MzOTBfdnVwbGh3CisgICAgICB7SW50cmluc2ljOjpzMzkwX3Z1cGxsYiwgMTAwNDY3fSwgLy8gX19idWlsdGluX3MzOTBfdnVwbGxiCisgICAgICB7SW50cmluc2ljOjpzMzkwX3Z1cGxsZiwgMTAwNDg5fSwgLy8gX19idWlsdGluX3MzOTBfdnVwbGxmCisgICAgICB7SW50cmluc2ljOjpzMzkwX3Z1cGxsaCwgMTAwNTExfSwgLy8gX19idWlsdGluX3MzOTBfdnVwbGxoCisgICAgICB7SW50cmluc2ljOjpzMzkwX3RlbmQsIDk1NjQzfSwgLy8gX19idWlsdGluX3RlbmQKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfcHBhX3R4YXNzaXN0LCA5NzMwOH0sIC8vIF9fYnVpbHRpbl90eF9hc3Npc3QKKyAgICAgIHtJbnRyaW5zaWM6OnMzOTBfZXRuZCwgOTcyNjF9LCAvLyBfX2J1aWx0aW5fdHhfbmVzdGluZ19kZXB0aAogICAgIH07CiAgICAgYXV0byBJID0gc3RkOjpsb3dlcl9ib3VuZChzdGQ6OmJlZ2luKHMzOTBOYW1lcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmVuZChzMzkwTmFtZXMpLApAQCAtMjg2MTcsMTE4MCArMjg1MTEsOTc5IEBACiAgIH0KICAgaWYgKFRhcmdldFByZWZpeCA9PSAieDg2IikgewogICAgIHN0YXRpYyBjb25zdCBCdWlsdGluRW50cnkgeDg2TmFtZXNbXSA9IHsKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfYWRkX3BkXzUxMiwgMTAzMjI1fSwgLy8gX19idWlsdGluX2lhMzJfYWRkcGQ1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfYWRkX3BzXzUxMiwgMTAzMjQ5fSwgLy8gX19idWlsdGluX2lhMzJfYWRkcHM1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19hZGRfc2Rfcm91bmQsIDEwNDgyM30sIC8vIF9fYnVpbHRpbl9pYTMyX2FkZHNkX3JvdW5kX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19hZGRfc3Nfcm91bmQsIDEwNDg1NX0sIC8vIF9fYnVpbHRpbl9pYTMyX2FkZHNzX3JvdW5kX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UzX2FkZHN1Yl9wZCwgMTI3MDc2fSwgLy8gX19idWlsdGluX2lhMzJfYWRkc3VicGQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfYWRkc3ViX3BkXzI1NiwgOTk3NjV9LCAvLyBfX2J1aWx0aW5faWEzMl9hZGRzdWJwZDI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTNfYWRkc3ViX3BzLCAxMjcxMDB9LCAvLyBfX2J1aWx0aW5faWEzMl9hZGRzdWJwcwotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9hZGRzdWJfcHNfMjU2LCA5OTc5Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX2FkZHN1YnBzMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYWVzbmlfYWVzZGVjLCA5OTM4Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX2Flc2RlYzEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2Flc25pX2Flc2RlY18yNTYsIDk5NDA3fSwgLy8gX19idWlsdGluX2lhMzJfYWVzZGVjMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYWVzbmlfYWVzZGVjXzUxMiwgOTk0MzJ9LCAvLyBfX2J1aWx0aW5faWEzMl9hZXNkZWM1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hZXNuaV9hZXNkZWNsYXN0LCA5OTQ1N30sIC8vIF9fYnVpbHRpbl9pYTMyX2Flc2RlY2xhc3QxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hZXNuaV9hZXNkZWNsYXN0XzI1NiwgOTk0ODZ9LCAvLyBfX2J1aWx0aW5faWEzMl9hZXNkZWNsYXN0MjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYWVzbmlfYWVzZGVjbGFzdF81MTIsIDk5NTE1fSwgLy8gX19idWlsdGluX2lhMzJfYWVzZGVjbGFzdDUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X2Flc25pX2Flc2VuYywgOTk1NDR9LCAvLyBfX2J1aWx0aW5faWEzMl9hZXNlbmMxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hZXNuaV9hZXNlbmNfMjU2LCA5OTU2OX0sIC8vIF9fYnVpbHRpbl9pYTMyX2Flc2VuYzI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2Flc25pX2Flc2VuY181MTIsIDk5NTk0fSwgLy8gX19idWlsdGluX2lhMzJfYWVzZW5jNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYWVzbmlfYWVzZW5jbGFzdCwgOTk2MTl9LCAvLyBfX2J1aWx0aW5faWEzMl9hZXNlbmNsYXN0MTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYWVzbmlfYWVzZW5jbGFzdF8yNTYsIDk5NjQ4fSwgLy8gX19idWlsdGluX2lhMzJfYWVzZW5jbGFzdDI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2Flc25pX2Flc2VuY2xhc3RfNTEyLCA5OTY3N30sIC8vIF9fYnVpbHRpbl9pYTMyX2Flc2VuY2xhc3Q1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hZXNuaV9hZXNpbWMsIDk5NzA2fSwgLy8gX19idWlsdGluX2lhMzJfYWVzaW1jMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYWVzbmlfYWVza2V5Z2VuYXNzaXN0LCA5OTczMX0sIC8vIF9fYnVpbHRpbl9pYTMyX2Flc2tleWdlbmFzc2lzdDEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2JtaV9iZXh0cl8zMiwgMTIxNzM4fSwgLy8gX19idWlsdGluX2lhMzJfYmV4dHJfdTMyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYm1pX2JleHRyXzY0LCAxMjE3NjN9LCAvLyBfX2J1aWx0aW5faWEzMl9iZXh0cl91NjQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl90Ym1fYmV4dHJpX3UzMiwgMTI4ODk1fSwgLy8gX19idWlsdGluX2lhMzJfYmV4dHJpX3UzMgotICAgICAge0ludHJpbnNpYzo6eDg2X3RibV9iZXh0cmlfdTY0LCAxMjg5MjF9LCAvLyBfX2J1aWx0aW5faWEzMl9iZXh0cmlfdTY0Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDFfYmxlbmR2cGQsIDEyNzI3N30sIC8vIF9fYnVpbHRpbl9pYTMyX2JsZW5kdnBkCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X2JsZW5kdl9wZF8yNTYsIDk5ODE5fSwgLy8gX19idWlsdGluX2lhMzJfYmxlbmR2cGQyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0MV9ibGVuZHZwcywgMTI3MzAxfSwgLy8gX19idWlsdGluX2lhMzJfYmxlbmR2cHMKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfYmxlbmR2X3BzXzI1NiwgOTk4NDZ9LCAvLyBfX2J1aWx0aW5faWEzMl9ibGVuZHZwczI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9icm9hZGNhc3RtYl8xMjgsIDEwMzI3M30sIC8vIF9fYnVpbHRpbl9pYTMyX2Jyb2FkY2FzdG1iMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2Jyb2FkY2FzdG1iXzI1NiwgMTAzMzAzfSwgLy8gX19idWlsdGluX2lhMzJfYnJvYWRjYXN0bWIyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfYnJvYWRjYXN0bWJfNTEyLCAxMDMzMzN9LCAvLyBfX2J1aWx0aW5faWEzMl9icm9hZGNhc3RtYjUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9icm9hZGNhc3Rtd18xMjgsIDEwMzM2M30sIC8vIF9fYnVpbHRpbl9pYTMyX2Jyb2FkY2FzdG13MTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2Jyb2FkY2FzdG13XzI1NiwgMTAzMzkzfSwgLy8gX19idWlsdGluX2lhMzJfYnJvYWRjYXN0bXcyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfYnJvYWRjYXN0bXdfNTEyLCAxMDM0MjN9LCAvLyBfX2J1aWx0aW5faWEzMl9icm9hZGNhc3RtdzUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X2JtaV9iemhpXzY0LCAxMjE4MTF9LCAvLyBfX2J1aWx0aW5faWEzMl9iemhpX2RpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYm1pX2J6aGlfMzIsIDEyMTc4OH0sIC8vIF9fYnVpbHRpbl9pYTMyX2J6aGlfc2kKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9jbGRlbW90ZSwgMTIxOTI2fSwgLy8gX19idWlsdGluX2lhMzJfY2xkZW1vdGUKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX2NsZmx1c2gsIDEyNTU4N30sIC8vIF9fYnVpbHRpbl9pYTMyX2NsZmx1c2gKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9jbGZsdXNob3B0LCAxMjE5NTB9LCAvLyBfX2J1aWx0aW5faWEzMl9jbGZsdXNob3B0Ci0gICAgICB7SW50cmluc2ljOjp4ODZfY2xyc3Nic3ksIDEyMTk3Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX2NscnNzYnN5Ci0gICAgICB7SW50cmluc2ljOjp4ODZfY2x3YiwgMTIyMDAwfSwgLy8gX19idWlsdGluX2lhMzJfY2x3YgotICAgICAge0ludHJpbnNpYzo6eDg2X2NsemVybywgMTIyMDIwfSwgLy8gX19idWlsdGluX2lhMzJfY2x6ZXJvCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9jbXBfc2QsIDEyNTYxMH0sIC8vIF9fYnVpbHRpbl9pYTMyX2NtcHNkCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY21wX3NkLCAxMDQ4ODd9LCAvLyBfX2J1aWx0aW5faWEzMl9jbXBzZF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlX2NtcF9zcywgMTI0ODA2fSwgLy8gX19idWlsdGluX2lhMzJfY21wc3MKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jbXBfc3MsIDEwNDkxM30sIC8vIF9fYnVpbHRpbl9pYTMyX2NtcHNzX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY29taWVxX3NzLCAxMjQ4Mjd9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pZXEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY29taWdlX3NzLCAxMjQ4NDl9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pZ2UKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY29taWd0X3NzLCAxMjQ4NzF9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pZ3QKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY29taWxlX3NzLCAxMjQ4OTN9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pbGUKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY29taWx0X3NzLCAxMjQ5MTV9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pbHQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY29taW5lcV9zcywgMTI0OTM3fSwgLy8gX19idWlsdGluX2lhMzJfY29taW5lcQotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY29taWVxX3NkLCAxMjU2MzF9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pc2RlcQotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY29taWdlX3NkLCAxMjU2NTV9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pc2RnZQotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY29taWd0X3NkLCAxMjU2Nzl9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pc2RndAotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY29taWxlX3NkLCAxMjU3MDN9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pc2RsZQotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY29taWx0X3NkLCAxMjU3Mjd9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pc2RsdAotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY29taW5lcV9zZCwgMTI1NzUxfSwgLy8gX19idWlsdGluX2lhMzJfY29taXNkbmVxCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY29tcHJlc3NfcGRfMTI4LCAxMDUxNDN9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21wcmVzc2RmMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jb21wcmVzc19wZF8yNTYsIDEwNTE3N30sIC8vIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzZGYyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX3BkXzUxMiwgMTA1MjExfSwgLy8gX19idWlsdGluX2lhMzJfY29tcHJlc3NkZjUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY29tcHJlc3NfcV8xMjgsIDEwNTM0N30sIC8vIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzZGkxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX3FfMjU2LCAxMDUzODF9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21wcmVzc2RpMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jb21wcmVzc19xXzUxMiwgMTA1NDE1fSwgLy8gX19idWlsdGluX2lhMzJfY29tcHJlc3NkaTUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY29tcHJlc3Nfd18xMjgsIDEwNTQ0OX0sIC8vIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzaGkxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX3dfMjU2LCAxMDU0ODN9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21wcmVzc2hpMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jb21wcmVzc193XzUxMiwgMTA1NTE3fSwgLy8gX19idWlsdGluX2lhMzJfY29tcHJlc3NoaTUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY29tcHJlc3NfYl8xMjgsIDEwNDkzOX0sIC8vIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzcWkxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX2JfMjU2LCAxMDQ5NzN9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3FpMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jb21wcmVzc19iXzUxMiwgMTA1MDA3fSwgLy8gX19idWlsdGluX2lhMzJfY29tcHJlc3NxaTUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY29tcHJlc3NfcHNfMTI4LCAxMDUyNDV9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3NmMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jb21wcmVzc19wc18yNTYsIDEwNTI3OX0sIC8vIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzc2YyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX3BzXzUxMiwgMTA1MzEzfSwgLy8gX19idWlsdGluX2lhMzJfY29tcHJlc3NzZjUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY29tcHJlc3NfZF8xMjgsIDEwNTA0MX0sIC8vIF9fYnVpbHRpbl9pYTMyX2NvbXByZXNzc2kxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX2RfMjU2LCAxMDUwNzV9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21wcmVzc3NpMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jb21wcmVzc19kXzUxMiwgMTA1MTA5fSwgLy8gX19idWlsdGluX2lhMzJfY29tcHJlc3NzaTUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDJfY3JjMzJfNjRfNjQsIDEyNzczOX0sIC8vIF9fYnVpbHRpbl9pYTMyX2NyYzMyZGkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0Ml9jcmMzMl8zMl8xNiwgMTI3NjcwfSwgLy8gX19idWlsdGluX2lhMzJfY3JjMzJoaQotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQyX2NyYzMyXzMyXzgsIDEyNzcxNn0sIC8vIF9fYnVpbHRpbl9pYTMyX2NyYzMycWkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0Ml9jcmMzMl8zMl8zMiwgMTI3NjkzfSwgLy8gX19idWlsdGluX2lhMzJfY3JjMzJzaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dGRxMnBzXzUxMiwgMTA1NzczfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0ZHEycHM1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY3Z0cGQyZHEsIDEyNTc3Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBkMmRxCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0cGQyZHFfMTI4LCAxMDU4MDV9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwZDJkcTEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X2N2dF9wZDJkcV8yNTYsIDk5OTAwfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cGQyZHEyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwZDJkcV81MTIsIDEwNTgzN30sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBkMmRxNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY3Z0cGQycGksIDEyNDk2MH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnBpCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9jdnRwZDJwcywgMTI1ODAwfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cGQycHMKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfY3Z0X3BkMl9wc18yNTYsIDk5ODczfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cGQycHMyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwZDJwc181MTIsIDEwNTg5OH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnBzNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwZDJwcywgMTA1ODY5fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cGQycHNfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBkMnFxXzEyOCwgMTA1OTMwfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cGQycXExMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBkMnFxXzI1NiwgMTA1OTYyfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cGQycXEyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBkMnFxXzUxMiwgMTA1OTk0fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cGQycXE1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBkMnVkcV8xMjgsIDEwNjAyNn0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnVkcTEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0cGQydWRxXzI1NiwgMTA2MDU5fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cGQydWRxMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwZDJ1ZHFfNTEyLCAxMDYwOTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwZDJ1ZHE1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBkMnVxcV8xMjgsIDEwNjEyNX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnVxcTEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0cGQydXFxXzI1NiwgMTA2MTU4fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cGQydXFxMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwZDJ1cXFfNTEyLCAxMDYxOTF9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwZDJ1cXE1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9jdnRwaTJwZCwgMTI0OTg0fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cGkycGQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY3Z0cGkycHMsIDEyNTAwOH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBpMnBzCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9jdnRwczJkcSwgMTI1ODI0fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cHMyZHEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwczJkcV8xMjgsIDEwNjIyNH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBzMmRxMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfY3Z0X3BzMmRxXzI1NiwgOTk5Mjd9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwczJkcTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBzMmRxXzI1NiwgMTA2MjU2fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cHMyZHEyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBzMmRxXzUxMiwgMTA2Mjg4fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cHMyZHE1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBzMnBkXzUxMiwgMTA2MzIwfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cHMycGQ1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9jdnRwczJwaSwgMTI1MDMyfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cHMycGkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwczJxcV8xMjgsIDEwNjM1Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnFxMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwczJxcV8yNTYsIDEwNjM4NH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnFxMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwczJxcV81MTIsIDEwNjQxNn0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnFxNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwczJ1ZHFfMTI4LCAxMDY0NDh9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwczJ1ZHExMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBzMnVkcV8yNTYsIDEwNjQ4MX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnVkcTI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0cHMydWRxXzUxMiwgMTA2NTE0fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cHMydWRxNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwczJ1cXFfMTI4LCAxMDY1NDd9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwczJ1cXExMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBzMnVxcV8yNTYsIDEwNjU4MH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnVxcTI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0cHMydXFxXzUxMiwgMTA2NjEzfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cHMydXFxNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRxcTJwZF81MTIsIDEwNjY0Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHFxMnBkNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRxcTJwc18xMjgsIDEwNjY3OH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHFxMnBzMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRxcTJwc18yNTYsIDEwNjcxMH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHFxMnBzMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRxcTJwc181MTIsIDEwNjc0Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHFxMnBzNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX2N2dHNkMnNpLCAxMjU4NDh9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRzZDJzaQotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY3Z0c2Qyc2k2NCwgMTI1ODcyfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0c2Qyc2k2NAotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY3Z0c2Qyc3MsIDEyNTg5OH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHNkMnNzCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0c2Qyc3Nfcm91bmQsIDEwNjc3NH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHNkMnNzX3JvdW5kX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfY3Z0c2kyc2Q2NCwgMTAzNDUzfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0c2kyc2Q2NAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9jdnRzaTJzczMyLCAxMDM0Nzl9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRzaTJzczMyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2N2dHNpMnNzNjQsIDEwMzUwNX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHNpMnNzNjQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRzczJzZF9yb3VuZCwgMTA2ODA5fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0c3Myc2Rfcm91bmRfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9jdnRzczJzaSwgMTI1MDU2fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0c3Myc2kKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY3Z0c3Myc2k2NCwgMTI1MDgwfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0c3Myc2k2NAotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY3Z0dHBkMmRxLCAxMjU5MjJ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cGQyZHFfMTI4LCAxMDY4NDR9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHExMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9jdnR0X3BkMmRxXzI1NiwgOTk5NTR9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHEyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cGQyZHFfNTEyLCAxMDY4Nzd9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHE1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9jdnR0cGQycGksIDEyNTEwNn0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJwaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHRwZDJxcV8xMjgsIDEwNjkxMH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJxcTEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dHBkMnFxXzI1NiwgMTA2OTQzfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBkMnFxMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cGQycXFfNTEyLCAxMDY5NzZ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cGQycXE1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHRwZDJ1ZHFfMTI4LCAxMDcwMDl9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cGQydWRxMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cGQydWRxXzI1NiwgMTA3MDQzfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBkMnVkcTI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dHBkMnVkcV81MTIsIDEwNzA3N30sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJ1ZHE1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHRwZDJ1cXFfMTI4LCAxMDcxMTF9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cGQydXFxMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cGQydXFxXzI1NiwgMTA3MTQ1fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBkMnVxcTI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dHBkMnVxcV81MTIsIDEwNzE3OX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJ1cXE1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY3Z0dHBzMmRxLCAxMjU5NDd9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cHMyZHEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfY3Z0dF9wczJkcV8yNTYsIDk5OTgyfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBzMmRxMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dHBzMmRxXzUxMiwgMTA3MjEzfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBzMmRxNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY3Z0dHBzMnBpLCAxMjUxMzF9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cHMycGkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cHMycXFfMTI4LCAxMDcyNDZ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cHMycXExMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHRwczJxcV8yNTYsIDEwNzI3OX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJxcTI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dHBzMnFxXzUxMiwgMTA3MzEyfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBzMnFxNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cHMydWRxXzEyOCwgMTA3MzQ1fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBzMnVkcTEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dHBzMnVkcV8yNTYsIDEwNzM3OX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJ1ZHEyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHRwczJ1ZHFfNTEyLCAxMDc0MTN9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cHMydWRxNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cHMydXFxXzEyOCwgMTA3NDQ3fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBzMnVxcTEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dHBzMnVxcV8yNTYsIDEwNzQ4MX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJ1cXEyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHRwczJ1cXFfNTEyLCAxMDc1MTV9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cHMydXFxNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX2N2dHRzZDJzaSwgMTI1OTcyfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHNkMnNpCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9jdnR0c2Qyc2k2NCwgMTI1OTk3fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHNkMnNpNjQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY3Z0dHNzMnNpLCAxMjUxNTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0c3Myc2kKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY3Z0dHNzMnNpNjQsIDEyNTE4MX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRzczJzaTY0Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dWRxMnBzXzUxMiwgMTA3NTQ5fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dWRxMnBzNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR1cXEycGRfNTEyLCAxMDc1ODJ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR1cXEycGQ1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHVxcTJwc18xMjgsIDEwNzYxNX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHVxcTJwczEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dXFxMnBzXzI1NiwgMTA3NjQ4fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dXFxMnBzMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR1cXEycHNfNTEyLCAxMDc2ODF9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR1cXEycHM1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9jdnR1c2k2NDJzZCwgMTAzNzg2fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dXNpMnNkNjQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfY3Z0dXNpMnNzLCAxMDM3NTl9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR1c2kyc3MzMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9jdnR1c2k2NDJzcywgMTAzODEzfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dXNpMnNzNjQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfZGJwc2FkYndfMTI4LCAxMDM4NDB9LCAvLyBfX2J1aWx0aW5faWEzMl9kYnBzYWRidzEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9kYnBzYWRid18yNTYsIDEwMzg2N30sIC8vIF9fYnVpbHRpbl9pYTMyX2RicHNhZGJ3MjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2RicHNhZGJ3XzUxMiwgMTAzODk0fSwgLy8gX19idWlsdGluX2lhMzJfZGJwc2FkYnc1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9kaXJlY3RzdG9yZTMyLCAxMjIwNDJ9LCAvLyBfX2J1aWx0aW5faWEzMl9kaXJlY3RzdG9yZV91MzIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9kaXJlY3RzdG9yZTY0LCAxMjIwNzN9LCAvLyBfX2J1aWx0aW5faWEzMl9kaXJlY3RzdG9yZV91NjQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfZGl2X3BkXzUxMiwgMTAzOTIxfSwgLy8gX19idWlsdGluX2lhMzJfZGl2cGQ1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfZGl2X3BzXzUxMiwgMTAzOTQ1fSwgLy8gX19idWlsdGluX2lhMzJfZGl2cHM1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19kaXZfc2Rfcm91bmQsIDEwNzcxNH0sIC8vIF9fYnVpbHRpbl9pYTMyX2RpdnNkX3JvdW5kX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19kaXZfc3Nfcm91bmQsIDEwNzc0Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX2RpdnNzX3JvdW5kX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0MV9kcHBkLCAxMjczMjV9LCAvLyBfX2J1aWx0aW5faWEzMl9kcHBkCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDFfZHBwcywgMTI3MzQ1fSwgLy8gX19idWlsdGluX2lhMzJfZHBwcwotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9kcF9wc18yNTYsIDEwMDAxMH0sIC8vIF9fYnVpbHRpbl9pYTMyX2RwcHMyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfZW1tcywgMTIyNTA3fSwgLy8gX19idWlsdGluX2lhMzJfZW1tcwotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9leHAyX3BkLCAxMDM5Njl9LCAvLyBfX2J1aWx0aW5faWEzMl9leHAycGRfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9leHAyX3BzLCAxMDM5OTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9leHAycHNfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9wZF8xMjgsIDEwNzk3MH0sIC8vIF9fYnVpbHRpbl9pYTMyX2V4cGFuZGRmMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19leHBhbmRfcGRfMjU2LCAxMDgwMDJ9LCAvLyBfX2J1aWx0aW5faWEzMl9leHBhbmRkZjI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfZXhwYW5kX3BkXzUxMiwgMTA4MDM0fSwgLy8gX19idWlsdGluX2lhMzJfZXhwYW5kZGY1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9xXzEyOCwgMTA4MTYyfSwgLy8gX19idWlsdGluX2lhMzJfZXhwYW5kZGkxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9xXzI1NiwgMTA4MTk0fSwgLy8gX19idWlsdGluX2lhMzJfZXhwYW5kZGkyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9xXzUxMiwgMTA4MjI2fSwgLy8gX19idWlsdGluX2lhMzJfZXhwYW5kZGk1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2V4cGFuZF93XzEyOCwgMTA4MjU4fSwgLy8gX19idWlsdGluX2lhMzJfZXhwYW5kaGkxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2V4cGFuZF93XzI1NiwgMTA4MjkwfSwgLy8gX19idWlsdGluX2lhMzJfZXhwYW5kaGkyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2V4cGFuZF93XzUxMiwgMTA4MzIyfSwgLy8gX19idWlsdGluX2lhMzJfZXhwYW5kaGk1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9iXzEyOCwgMTA3Nzc4fSwgLy8gX19idWlsdGluX2lhMzJfZXhwYW5kcWkxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9iXzI1NiwgMTA3ODEwfSwgLy8gX19idWlsdGluX2lhMzJfZXhwYW5kcWkyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9iXzUxMiwgMTA3ODQyfSwgLy8gX19idWlsdGluX2lhMzJfZXhwYW5kcWk1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9wc18xMjgsIDEwODA2Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX2V4cGFuZHNmMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19leHBhbmRfcHNfMjU2LCAxMDgwOTh9LCAvLyBfX2J1aWx0aW5faWEzMl9leHBhbmRzZjI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfZXhwYW5kX3BzXzUxMiwgMTA4MTMwfSwgLy8gX19idWlsdGluX2lhMzJfZXhwYW5kc2Y1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9kXzEyOCwgMTA3ODc0fSwgLy8gX19idWlsdGluX2lhMzJfZXhwYW5kc2kxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9kXzI1NiwgMTA3OTA2fSwgLy8gX19idWlsdGluX2lhMzJfZXhwYW5kc2kyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9kXzUxMiwgMTA3OTM4fSwgLy8gX19idWlsdGluX2lhMzJfZXhwYW5kc2k1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTRhX2V4dHJxLCAxMjgxNjR9LCAvLyBfX2J1aWx0aW5faWEzMl9leHRycQotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTRhX2V4dHJxaSwgMTI4MTg1fSwgLy8gX19idWlsdGluX2lhMzJfZXh0cnFpCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X2ZlbW1zLCAxMjI1Mjd9LCAvLyBfX2J1aWx0aW5faWEzMl9mZW1tcwotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3BkXzEyOCwgMTA4MzU0fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3BkXzEyOCwgMTE0ODEyfSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDEyOF9tYXNregotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3BkXzI1NiwgMTA4Mzg4fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3BkXzI1NiwgMTE0ODQ3fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDI1Nl9tYXNregotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3BkXzUxMiwgMTA4NDIyfSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3BkXzUxMiwgMTE0ODgyfSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDUxMl9tYXNregotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3BzXzEyOCwgMTA4NDU2fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wczEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3BzXzEyOCwgMTE0OTE3fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wczEyOF9tYXNregotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3BzXzI1NiwgMTA4NDkwfSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wczI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3BzXzI1NiwgMTE0OTUyfSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wczI1Nl9tYXNregotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3BzXzUxMiwgMTA4NTI0fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wczUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3BzXzUxMiwgMTE0OTg3fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wczUxMl9tYXNregotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3NkLCAxMDg1NTh9LCAvLyBfX2J1aWx0aW5faWEzMl9maXh1cGltbXNkX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza3pfZml4dXBpbW1fc2QsIDExNTAyMn0sIC8vIF9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tc2RfbWFza3oKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19maXh1cGltbV9zcywgMTA4NTg5fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1zc19tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3NzLCAxMTUwNTR9LCAvLyBfX2J1aWx0aW5faWEzMl9maXh1cGltbXNzX21hc2t6Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfZnBjbGFzc19zZCwgMTA4NjIwfSwgLy8gX19idWlsdGluX2lhMzJfZnBjbGFzc3NkX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19mcGNsYXNzX3NzLCAxMDg2NTB9LCAvLyBfX2J1aWx0aW5faWEzMl9mcGNsYXNzc3NfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2Z4cnN0b3IsIDEyMjIyNn0sIC8vIF9fYnVpbHRpbl9pYTMyX2Z4cnN0b3IKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9meHJzdG9yNjQsIDEyMjI0OX0sIC8vIF9fYnVpbHRpbl9pYTMyX2Z4cnN0b3I2NAotICAgICAge0ludHJpbnNpYzo6eDg2X2Z4c2F2ZSwgMTIyMjc0fSwgLy8gX19idWlsdGluX2lhMzJfZnhzYXZlCi0gICAgICB7SW50cmluc2ljOjp4ODZfZnhzYXZlNjQsIDEyMjI5Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX2Z4c2F2ZTY0Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNkaXYyX2RmLCAxMDQyNTF9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2MmRmCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNkaXYyX2RpLCAxMDQyODB9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2MmRpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNkaXY0X2RmLCAxMDQzMDl9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2NGRmCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNkaXY0X2RpLCAxMDQzMzh9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2NGRpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNkaXY0X3NmLCAxMDQzNjd9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2NHNmCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNkaXY0X3NpLCAxMDQzOTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2NHNpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNkaXY4X3NmLCAxMDQ0MjV9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2OHNmCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNkaXY4X3NpLCAxMDQ0NTR9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2OHNpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNzaXYyX2RmLCAxMDQ0ODN9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2MmRmCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNzaXYyX2RpLCAxMDQ1MTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2MmRpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNzaXY0X2RmLCAxMDQ1NDF9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2NGRmCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNzaXY0X2RpLCAxMDQ1NzB9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2NGRpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNzaXY0X3NmLCAxMDQ1OTl9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2NHNmCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNzaXY0X3NpLCAxMDQ2Mjh9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2NHNpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNzaXY4X3NmLCAxMDQ2NTd9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2OHNmCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcjNzaXY4X3NpLCAxMDQ2ODZ9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2OHNpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9nYXRoZXJfZF9kLCAxMDExOTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJkX2QKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX2dhdGhlcl9kX2RfMjU2LCAxMDEyMTd9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJkX2QyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX2dhdGhlcl9kX3BkLCAxMDEyNDV9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJkX3BkCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9nYXRoZXJfZF9wZF8yNTYsIDEwMTI3MX0sIC8vIF9fYnVpbHRpbl9pYTMyX2dhdGhlcmRfcGQyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX2dhdGhlcl9kX3BzLCAxMDEzMDB9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJkX3BzCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9nYXRoZXJfZF9wc18yNTYsIDEwMTMyNn0sIC8vIF9fYnVpbHRpbl9pYTMyX2dhdGhlcmRfcHMyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX2dhdGhlcl9kX3EsIDEwMTM1NX0sIC8vIF9fYnVpbHRpbl9pYTMyX2dhdGhlcmRfcQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfZ2F0aGVyX2RfcV8yNTYsIDEwMTM4MH0sIC8vIF9fYnVpbHRpbl9pYTMyX2dhdGhlcmRfcTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9nYXRoZXJfcXBzXzUxMiwgMTA0MjIyfSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVyZGl2MTZzZgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9nYXRoZXJfcXBpXzUxMiwgMTA0MTY1fSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVyZGl2MTZzaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9nYXRoZXJfcXBkXzUxMiwgMTA0MTM3fSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVyZGl2OGRmCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcl9xcHFfNTEyLCAxMDQxOTR9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJkaXY4ZGkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfZ2F0aGVycGZfZHBkXzUxMiwgMTA0NzE1fSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVycGZkcGQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfZ2F0aGVycGZfZHBzXzUxMiwgMTA0NzQyfSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVycGZkcHMKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfZ2F0aGVycGZfcXBkXzUxMiwgMTA0NzY5fSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVycGZxcGQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfZ2F0aGVycGZfcXBzXzUxMiwgMTA0Nzk2fSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVycGZxcHMKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX2dhdGhlcl9xX2QsIDEwMTQwOH0sIC8vIF9fYnVpbHRpbl9pYTMyX2dhdGhlcnFfZAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfZ2F0aGVyX3FfZF8yNTYsIDEwMTQzM30sIC8vIF9fYnVpbHRpbl9pYTMyX2dhdGhlcnFfZDI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfZ2F0aGVyX3FfcGQsIDEwMTQ2MX0sIC8vIF9fYnVpbHRpbl9pYTMyX2dhdGhlcnFfcGQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX2dhdGhlcl9xX3BkXzI1NiwgMTAxNDg3fSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVycV9wZDI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfZ2F0aGVyX3FfcHMsIDEwMTUxNn0sIC8vIF9fYnVpbHRpbl9pYTMyX2dhdGhlcnFfcHMKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX2dhdGhlcl9xX3BzXzI1NiwgMTAxNTQyfSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVycV9wczI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfZ2F0aGVyX3FfcSwgMTAxNTcxfSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVycV9xCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9nYXRoZXJfcV9xXzI1NiwgMTAxNTk2fSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVycV9xMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcl9kcHNfNTEyLCAxMDQxMDh9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJzaXYxNnNmCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcl9kcGlfNTEyLCAxMDQwNTF9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJzaXYxNnNpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2dhdGhlcl9kcGRfNTEyLCAxMDQwMjN9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJzaXY4ZGYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfZ2F0aGVyX2RwcV81MTIsIDEwNDA4MH0sIC8vIF9fYnVpbHRpbl9pYTMyX2dhdGhlcnNpdjhkaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2dldGV4cF9wZF8xMjgsIDEwODY4MH0sIC8vIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBkMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19nZXRleHBfcGRfMjU2LCAxMDg3MTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9nZXRleHBwZDI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfZ2V0ZXhwX3BkXzUxMiwgMTA4NzQ0fSwgLy8gX19idWlsdGluX2lhMzJfZ2V0ZXhwcGQ1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2dldGV4cF9wc18xMjgsIDEwODc3Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBzMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19nZXRleHBfcHNfMjU2LCAxMDg4MDh9LCAvLyBfX2J1aWx0aW5faWEzMl9nZXRleHBwczI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfZ2V0ZXhwX3BzXzUxMiwgMTA4ODQwfSwgLy8gX19idWlsdGluX2lhMzJfZ2V0ZXhwcHM1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2dldGV4cF9zZCwgMTA4ODcyfSwgLy8gX19idWlsdGluX2lhMzJfZ2V0ZXhwc2QxMjhfcm91bmRfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2dldGV4cF9zcywgMTA4OTEwfSwgLy8gX19idWlsdGluX2lhMzJfZ2V0ZXhwc3MxMjhfcm91bmRfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2dldG1hbnRfcGRfMTI4LCAxMDg5NDh9LCAvLyBfX2J1aWx0aW5faWEzMl9nZXRtYW50cGQxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2dldG1hbnRfcGRfMjU2LCAxMDg5ODF9LCAvLyBfX2J1aWx0aW5faWEzMl9nZXRtYW50cGQyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2dldG1hbnRfcGRfNTEyLCAxMDkwMTR9LCAvLyBfX2J1aWx0aW5faWEzMl9nZXRtYW50cGQ1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2dldG1hbnRfcHNfMTI4LCAxMDkwNDd9LCAvLyBfX2J1aWx0aW5faWEzMl9nZXRtYW50cHMxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2dldG1hbnRfcHNfMjU2LCAxMDkwODB9LCAvLyBfX2J1aWx0aW5faWEzMl9nZXRtYW50cHMyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2dldG1hbnRfcHNfNTEyLCAxMDkxMTN9LCAvLyBfX2J1aWx0aW5faWEzMl9nZXRtYW50cHM1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2dldG1hbnRfc2QsIDEwOTE0Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX2dldG1hbnRzZF9yb3VuZF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfZ2V0bWFudF9zcywgMTA5MTgyfSwgLy8gX19idWlsdGluX2lhMzJfZ2V0bWFudHNzX3JvdW5kX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UzX2hhZGRfcGQsIDEyNzEyNH0sIC8vIF9fYnVpbHRpbl9pYTMyX2hhZGRwZAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9oYWRkX3BkXzI1NiwgMTAwMDMzfSwgLy8gX19idWlsdGluX2lhMzJfaGFkZHBkMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlM19oYWRkX3BzLCAxMjcxNDZ9LCAvLyBfX2J1aWx0aW5faWEzMl9oYWRkcHMKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfaGFkZF9wc18yNTYsIDEwMDA1OH0sIC8vIF9fYnVpbHRpbl9pYTMyX2hhZGRwczI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTNfaHN1Yl9wZCwgMTI3MTY4fSwgLy8gX19idWlsdGluX2lhMzJfaHN1YnBkCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X2hzdWJfcGRfMjU2LCAxMDAwODN9LCAvLyBfX2J1aWx0aW5faWEzMl9oc3VicGQyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UzX2hzdWJfcHMsIDEyNzE5MH0sIC8vIF9fYnVpbHRpbl9pYTMyX2hzdWJwcwotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9oc3ViX3BzXzI1NiwgMTAwMTA4fSwgLy8gX19idWlsdGluX2lhMzJfaHN1YnBzMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfaW5jc3NwZCwgMTIyMzIwfSwgLy8gX19idWlsdGluX2lhMzJfaW5jc3NwZAotICAgICAge0ludHJpbnNpYzo6eDg2X2luY3NzcHEsIDEyMjM0M30sIC8vIF9fYnVpbHRpbl9pYTMyX2luY3NzcHEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0MV9pbnNlcnRwcywgMTI3MzY1fSwgLy8gX19idWlsdGluX2lhMzJfaW5zZXJ0cHMxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0YV9pbnNlcnRxLCAxMjgyMDd9LCAvLyBfX2J1aWx0aW5faWEzMl9pbnNlcnRxCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlNGFfaW5zZXJ0cWksIDEyODIzMH0sIC8vIF9fYnVpbHRpbl9pYTMyX2luc2VydHFpCi0gICAgICB7SW50cmluc2ljOjp4ODZfaW52cGNpZCwgMTIyMzY2fSwgLy8gX19idWlsdGluX2lhMzJfaW52cGNpZAotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTNfbGR1X2RxLCAxMjcyMTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9sZGRxdQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9sZHVfZHFfMjU2LCAxMDAxMzN9LCAvLyBfX2J1aWx0aW5faWEzMl9sZGRxdTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfbGZlbmNlLCAxMjYwMjR9LCAvLyBfX2J1aWx0aW5faWEzMl9sZmVuY2UKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9sbHdwY2IsIDEyMjM4OX0sIC8vIF9fYnVpbHRpbl9pYTMyX2xsd3BjYgotICAgICAge0ludHJpbnNpYzo6eDg2X2x3cGluczMyLCAxMjI0MTF9LCAvLyBfX2J1aWx0aW5faWEzMl9sd3BpbnMzMgotICAgICAge0ludHJpbnNpYzo6eDg2X2x3cGluczY0LCAxMjI0MzV9LCAvLyBfX2J1aWx0aW5faWEzMl9sd3BpbnM2NAotICAgICAge0ludHJpbnNpYzo6eDg2X2x3cHZhbDMyLCAxMjI0NTl9LCAvLyBfX2J1aWx0aW5faWEzMl9sd3B2YWwzMgotICAgICAge0ludHJpbnNpYzo6eDg2X2x3cHZhbDY0LCAxMjI0ODN9LCAvLyBfX2J1aWx0aW5faWEzMl9sd3B2YWw2NAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfbWFza2xvYWRfZCwgMTAxNjI0fSwgLy8gX19idWlsdGluX2lhMzJfbWFza2xvYWRkCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9tYXNrbG9hZF9kXzI1NiwgMTAxNjQ5fSwgLy8gX19idWlsdGluX2lhMzJfbWFza2xvYWRkMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X21hc2tsb2FkX3BkLCAxMDAxNTd9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXNrbG9hZHBkCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X21hc2tsb2FkX3BkXzI1NiwgMTAwMTgzfSwgLy8gX19idWlsdGluX2lhMzJfbWFza2xvYWRwZDI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9tYXNrbG9hZF9wcywgMTAwMjEyfSwgLy8gX19idWlsdGluX2lhMzJfbWFza2xvYWRwcwotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9tYXNrbG9hZF9wc18yNTYsIDEwMDIzOH0sIC8vIF9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcHMyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX21hc2tsb2FkX3EsIDEwMTY3N30sIC8vIF9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfbWFza2xvYWRfcV8yNTYsIDEwMTcwMn0sIC8vIF9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfbWFza21vdl9kcXUsIDEyNjA0Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX21hc2ttb3ZkcXUKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfbWFza21vdnEsIDEyMjU0OH0sIC8vIF9fYnVpbHRpbl9pYTMyX21hc2ttb3ZxCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9tYXNrc3RvcmVfZCwgMTAxNzMwfSwgLy8gX19idWlsdGluX2lhMzJfbWFza3N0b3JlZAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfbWFza3N0b3JlX2RfMjU2LCAxMDE3NTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXNrc3RvcmVkMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X21hc2tzdG9yZV9wZCwgMTAwMjY3fSwgLy8gX19idWlsdGluX2lhMzJfbWFza3N0b3JlcGQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfbWFza3N0b3JlX3BkXzI1NiwgMTAwMjk0fSwgLy8gX19idWlsdGluX2lhMzJfbWFza3N0b3JlcGQyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfbWFza3N0b3JlX3BzLCAxMDAzMjR9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXNrc3RvcmVwcwotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9tYXNrc3RvcmVfcHNfMjU2LCAxMDAzNTF9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXNrc3RvcmVwczI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfbWFza3N0b3JlX3EsIDEwMTc4NX0sIC8vIF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZXEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX21hc2tzdG9yZV9xXzI1NiwgMTAxODExfSwgLy8gX19idWlsdGluX2lhMzJfbWFza3N0b3JlcTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfbWF4X3BkLCAxMjYwNzJ9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXhwZAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9tYXhfcGRfMjU2LCAxMDAzODF9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXhwZDI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXhfcGRfNTEyLCAxMTU2ODB9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXhwZDUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9tYXhfcHMsIDEyNTIwOH0sIC8vIF9fYnVpbHRpbl9pYTMyX21heHBzCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X21heF9wc18yNTYsIDEwMDQwNX0sIC8vIF9fYnVpbHRpbl9pYTMyX21heHBzMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21heF9wc181MTIsIDExNTcwNH0sIC8vIF9fYnVpbHRpbl9pYTMyX21heHBzNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9tYXhfc2QsIDEyNjA5M30sIC8vIF9fYnVpbHRpbl9pYTMyX21heHNkCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfbWF4X3NkX3JvdW5kLCAxMDkyMTh9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXhzZF9yb3VuZF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlX21heF9zcywgMTI1MjI5fSwgLy8gX19idWlsdGluX2lhMzJfbWF4c3MKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19tYXhfc3Nfcm91bmQsIDEwOTI1MH0sIC8vIF9fYnVpbHRpbl9pYTMyX21heHNzX3JvdW5kX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX21mZW5jZSwgMTI2MTE0fSwgLy8gX19idWlsdGluX2lhMzJfbWZlbmNlCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9taW5fcGQsIDEyNjEzNn0sIC8vIF9fYnVpbHRpbl9pYTMyX21pbnBkCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X21pbl9wZF8yNTYsIDEwMDQyOX0sIC8vIF9fYnVpbHRpbl9pYTMyX21pbnBkMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21pbl9wZF81MTIsIDExNTcyOH0sIC8vIF9fYnVpbHRpbl9pYTMyX21pbnBkNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlX21pbl9wcywgMTI1MjUwfSwgLy8gX19idWlsdGluX2lhMzJfbWlucHMKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfbWluX3BzXzI1NiwgMTAwNDUzfSwgLy8gX19idWlsdGluX2lhMzJfbWlucHMyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWluX3BzXzUxMiwgMTE1NzUyfSwgLy8gX19idWlsdGluX2lhMzJfbWlucHM1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX21pbl9zZCwgMTI2MTU3fSwgLy8gX19idWlsdGluX2lhMzJfbWluc2QKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19taW5fc2Rfcm91bmQsIDEwOTI4Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX21pbnNkX3JvdW5kX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfbWluX3NzLCAxMjUyNzF9LCAvLyBfX2J1aWx0aW5faWEzMl9taW5zcwotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX21pbl9zc19yb3VuZCwgMTA5MzE0fSwgLy8gX19idWlsdGluX2lhMzJfbWluc3Nfcm91bmRfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTNfbW9uaXRvciwgMTI3MjMzfSwgLy8gX19idWlsdGluX2lhMzJfbW9uaXRvcgotICAgICAge0ludHJpbnNpYzo6eDg2X21vbml0b3J4LCAxMjQwOTR9LCAvLyBfX2J1aWx0aW5faWEzMl9tb25pdG9yeAotICAgICAge0ludHJpbnNpYzo6eDg2X21vdmRpcjY0YiwgMTI0MTE4fSwgLy8gX19idWlsdGluX2lhMzJfbW92ZGlyNjRiCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9tb3Ztc2tfcGQsIDEyNjE3OH0sIC8vIF9fYnVpbHRpbl9pYTMyX21vdm1za3BkCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X21vdm1za19wZF8yNTYsIDEwMDQ3N30sIC8vIF9fYnVpbHRpbl9pYTMyX21vdm1za3BkMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlX21vdm1za19wcywgMTI1MjkyfSwgLy8gX19idWlsdGluX2lhMzJfbW92bXNrcHMKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfbW92bXNrX3BzXzI1NiwgMTAwNTA0fSwgLy8gX19idWlsdGluX2lhMzJfbW92bXNrcHMyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfbW92bnRfZHEsIDEyMjU3Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX21vdm50cQotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQxX21wc2FkYncsIDEyNzM5Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX21wc2FkYncxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX21wc2FkYncsIDEwMTg0MH0sIC8vIF9fYnVpbHRpbl9pYTMyX21wc2FkYncyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbXVsX3BkXzUxMiwgMTE1Nzc2fSwgLy8gX19idWlsdGluX2lhMzJfbXVscGQ1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbXVsX3BzXzUxMiwgMTE1ODAwfSwgLy8gX19idWlsdGluX2lhMzJfbXVscHM1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19tdWxfc2Rfcm91bmQsIDEwOTM0Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX211bHNkX3JvdW5kX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19tdWxfc3Nfcm91bmQsIDEwOTM3OH0sIC8vIF9fYnVpbHRpbl9pYTMyX211bHNzX3JvdW5kX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UzX213YWl0LCAxMjcyNTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9td2FpdAotICAgICAge0ludHJpbnNpYzo6eDg2X213YWl0eCwgMTI0MTQzfSwgLy8gX19idWlsdGluX2lhMzJfbXdhaXR4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcGFic19iLCAxMjgyNTR9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWJzYgotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BhYnNfZCwgMTI4Mjc1fSwgLy8gX19idWlsdGluX2lhMzJfcGFic2QKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc3NlM19wYWJzX3csIDEyODI5Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhYnN3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BhY2tzc2R3LCAxMjI1OTR9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWNrc3NkdwotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcGFja3NzZHdfMTI4LCAxMjYyMDJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWNrc3NkdzEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcGFja3NzZHcsIDEwMTg2Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhY2tzc2R3MjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BhY2tzc2R3XzUxMiwgMTE1ODI0fSwgLy8gX19idWlsdGluX2lhMzJfcGFja3NzZHc1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcGFja3Nzd2IsIDEyMjYxOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhY2tzc3diCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wYWNrc3N3Yl8xMjgsIDEyNjIyOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhY2tzc3diMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wYWNrc3N3YiwgMTAxODkzfSwgLy8gX19idWlsdGluX2lhMzJfcGFja3Nzd2IyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcGFja3Nzd2JfNTEyLCAxMTU4NTF9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWNrc3N3YjUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQxX3BhY2t1c2R3LCAxMjc0MTh9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWNrdXNkdzEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcGFja3VzZHcsIDEwMTkyMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhY2t1c2R3MjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BhY2t1c2R3XzUxMiwgMTE1ODc4fSwgLy8gX19idWlsdGluX2lhMzJfcGFja3VzZHc1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcGFja3Vzd2IsIDEyMjY0Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhY2t1c3diCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wYWNrdXN3Yl8xMjgsIDEyNjI1Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhY2t1c3diMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wYWNrdXN3YiwgMTAxOTQ3fSwgLy8gX19idWlsdGluX2lhMzJfcGFja3Vzd2IyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcGFja3Vzd2JfNTEyLCAxMTU5MDV9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWNrdXN3YjUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wYWRkX2IsIDEyMjY2Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhZGRiCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BhZGRfZCwgMTIyNjg3fSwgLy8gX19idWlsdGluX2lhMzJfcGFkZGQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcGFkZF9xLCAxMjI3MDh9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWRkcQotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wYWRkc19iLCAxMjI3NTB9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWRkc2IKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BhZGRzX2IsIDEyNjI4M30sIC8vIF9fYnVpbHRpbl9pYTMyX3BhZGRzYjEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcGFkZHNfYiwgMTAxOTc0fSwgLy8gX19idWlsdGluX2lhMzJfcGFkZHNiMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BhZGRzX2JfNTEyLCAxMTU5MzJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWRkc2I1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcGFkZHNfdywgMTIyNzcyfSwgLy8gX19idWlsdGluX2lhMzJfcGFkZHN3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wYWRkc193LCAxMjYzMDh9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWRkc3cxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BhZGRzX3csIDEwMTk5OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhZGRzdzI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wYWRkc193XzUxMiwgMTE1OTU3fSwgLy8gX19idWlsdGluX2lhMzJfcGFkZHN3NTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BhZGR1c19iLCAxMjI3OTR9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWRkdXNiCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BhZGR1c193LCAxMjI4MTd9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWRkdXN3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BhZGRfdywgMTIyNzI5fSwgLy8gX19idWlsdGluX2lhMzJfcGFkZHcKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcGFsaWducl9iLCAxMjI4NDB9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWxpZ25yCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BhbmQsIDEyMjg2M30sIC8vIF9fYnVpbHRpbl9pYTMyX3BhbmQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcGFuZG4sIDEyMjg4M30sIC8vIF9fYnVpbHRpbl9pYTMyX3BhbmRuCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wYXVzZSwgMTI2MzMzfSwgLy8gX19idWlsdGluX2lhMzJfcGF1c2UKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcGF2Z19iLCAxMjI5MDR9LCAvLyBfX2J1aWx0aW5faWEzMl9wYXZnYgotICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3Bhdmd1c2IsIDk4ODc0fSwgLy8gX19idWlsdGluX2lhMzJfcGF2Z3VzYgotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wYXZnX3csIDEyMjkyNX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Bhdmd3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDFfcGJsZW5kdmIsIDEyNzQ0NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BibGVuZHZiMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wYmxlbmR2YiwgMTAyMDI0fSwgLy8gX19idWlsdGluX2lhMzJfcGJsZW5kdmIyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9wY2xtdWxxZHEsIDEyNDE2NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BjbG11bHFkcTEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X3BjbG11bHFkcV8yNTYsIDEyNDE5M30sIC8vIF9fYnVpbHRpbl9pYTMyX3BjbG11bHFkcTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X3BjbG11bHFkcV81MTIsIDEyNDIyMX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BjbG11bHFkcTUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wY21wZXFfYiwgMTIyOTQ2fSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGVxYgotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wY21wZXFfZCwgMTIyOTY5fSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGVxZAotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wY21wZXFfdywgMTIyOTkyfSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGVxdwotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQyX3BjbXBlc3RyaTEyOCwgMTI3NzYyfSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGVzdHJpMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDJfcGNtcGVzdHJpYTEyOCwgMTI3NzkwfSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGVzdHJpYTEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQyX3BjbXBlc3RyaWMxMjgsIDEyNzgxOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BjbXBlc3RyaWMxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0Ml9wY21wZXN0cmlvMTI4LCAxMjc4NDh9LCAvLyBfX2J1aWx0aW5faWEzMl9wY21wZXN0cmlvMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDJfcGNtcGVzdHJpczEyOCwgMTI3ODc3fSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGVzdHJpczEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQyX3BjbXBlc3RyaXoxMjgsIDEyNzkwNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BjbXBlc3RyaXoxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0Ml9wY21wZXN0cm0xMjgsIDEyNzkzNX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BjbXBlc3RybTEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wY21wZ3RfYiwgMTIzMDE1fSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGd0YgotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wY21wZ3RfZCwgMTIzMDM4fSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGd0ZAotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wY21wZ3RfdywgMTIzMDYxfSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGd0dwotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQyX3BjbXBpc3RyaTEyOCwgMTI3OTYzfSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGlzdHJpMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDJfcGNtcGlzdHJpYTEyOCwgMTI3OTkxfSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGlzdHJpYTEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQyX3BjbXBpc3RyaWMxMjgsIDEyODAyMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BjbXBpc3RyaWMxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0Ml9wY21waXN0cmlvMTI4LCAxMjgwNDl9LCAvLyBfX2J1aWx0aW5faWEzMl9wY21waXN0cmlvMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDJfcGNtcGlzdHJpczEyOCwgMTI4MDc4fSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGlzdHJpczEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQyX3BjbXBpc3RyaXoxMjgsIDEyODEwN30sIC8vIF9fYnVpbHRpbl9pYTMyX3BjbXBpc3RyaXoxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0Ml9wY21waXN0cm0xMjgsIDEyODEzNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BjbXBpc3RybTEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2JtaV9wZGVwXzY0LCAxMjE4NTd9LCAvLyBfX2J1aWx0aW5faWEzMl9wZGVwX2RpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYm1pX3BkZXBfMzIsIDEyMTgzNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BkZXBfc2kKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcGVybXZhcl9kZl8yNTYsIDExNTk4Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Blcm12YXJkZjI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wZXJtdmFyX2RmXzUxMiwgMTE2MDEwfSwgLy8gX19idWlsdGluX2lhMzJfcGVybXZhcmRmNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Blcm12YXJfZGlfMjU2LCAxMTYwMzh9LCAvLyBfX2J1aWx0aW5faWEzMl9wZXJtdmFyZGkyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcGVybXZhcl9kaV81MTIsIDExNjA2Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Blcm12YXJkaTUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wZXJtdmFyX2hpXzEyOCwgMTE2MDk0fSwgLy8gX19idWlsdGluX2lhMzJfcGVybXZhcmhpMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Blcm12YXJfaGlfMjU2LCAxMTYxMjJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wZXJtdmFyaGkyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcGVybXZhcl9oaV81MTIsIDExNjE1MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Blcm12YXJoaTUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wZXJtdmFyX3FpXzEyOCwgMTE2MTc4fSwgLy8gX19idWlsdGluX2lhMzJfcGVybXZhcnFpMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Blcm12YXJfcWlfMjU2LCAxMTYyMDZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wZXJtdmFycWkyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcGVybXZhcl9xaV81MTIsIDExNjIzNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Blcm12YXJxaTUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcGVybXBzLCAxMDIwNzl9LCAvLyBfX2J1aWx0aW5faWEzMl9wZXJtdmFyc2YyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcGVybXZhcl9zZl81MTIsIDExNjI2Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Blcm12YXJzZjUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcGVybWQsIDEwMjA1MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Blcm12YXJzaTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wZXJtdmFyX3NpXzUxMiwgMTE2MjkwfSwgLy8gX19idWlsdGluX2lhMzJfcGVybXZhcnNpNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYm1pX3BleHRfNjQsIDEyMTkwM30sIC8vIF9fYnVpbHRpbl9pYTMyX3BleHRfZGkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9ibWlfcGV4dF8zMiwgMTIxODgwfSwgLy8gX19idWlsdGluX2lhMzJfcGV4dF9zaQotICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BmMmlkLCA5ODg5N30sIC8vIF9fYnVpbHRpbl9pYTMyX3BmMmlkCi0gICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dhX3BmMml3LCA5OTI5NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BmMml3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dfcGZhY2MsIDk4OTE4fSwgLy8gX19idWlsdGluX2lhMzJfcGZhY2MKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl8zZG5vd19wZmFkZCwgOTg5Mzl9LCAvLyBfX2J1aWx0aW5faWEzMl9wZmFkZAotICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BmY21wZXEsIDk4OTYwfSwgLy8gX19idWlsdGluX2lhMzJfcGZjbXBlcQotICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BmY21wZ2UsIDk4OTgzfSwgLy8gX19idWlsdGluX2lhMzJfcGZjbXBnZQotICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BmY21wZ3QsIDk5MDA2fSwgLy8gX19idWlsdGluX2lhMzJfcGZjbXBndAotICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BmbWF4LCA5OTAyOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BmbWF4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dfcGZtaW4sIDk5MDUwfSwgLy8gX19idWlsdGluX2lhMzJfcGZtaW4KLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl8zZG5vd19wZm11bCwgOTkwNzF9LCAvLyBfX2J1aWx0aW5faWEzMl9wZm11bAotICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93YV9wZm5hY2MsIDk5MzE2fSwgLy8gX19idWlsdGluX2lhMzJfcGZuYWNjCi0gICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dhX3BmcG5hY2MsIDk5MzM4fSwgLy8gX19idWlsdGluX2lhMzJfcGZwbmFjYwotICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BmcmNwLCA5OTA5Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BmcmNwCi0gICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dfcGZyY3BpdDEsIDk5MTEzfSwgLy8gX19idWlsdGluX2lhMzJfcGZyY3BpdDEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl8zZG5vd19wZnJjcGl0MiwgOTkxMzd9LCAvLyBfX2J1aWx0aW5faWEzMl9wZnJjcGl0MgotICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BmcnNxaXQxLCA5OTE2MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BmcnNxaXQxCi0gICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dfcGZyc3FydCwgOTkxODV9LCAvLyBfX2J1aWx0aW5faWEzMl9wZnJzcXJ0Ci0gICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dfcGZzdWIsIDk5MjA4fSwgLy8gX19idWlsdGluX2lhMzJfcGZzdWIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl8zZG5vd19wZnN1YnIsIDk5MjI5fSwgLy8gX19idWlsdGluX2lhMzJfcGZzdWJyCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcGhhZGRfZCwgMTI4MzE3fSwgLy8gX19idWlsdGluX2lhMzJfcGhhZGRkCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcGhhZGRfZF8xMjgsIDEyODMzOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BoYWRkZDEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcGhhZGRfZCwgMTAyMTA3fSwgLy8gX19idWlsdGluX2lhMzJfcGhhZGRkMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcGhhZGRfc3csIDEyODM2NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BoYWRkc3cKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc3NlM19waGFkZF9zd18xMjgsIDEyODM4N30sIC8vIF9fYnVpbHRpbl9pYTMyX3BoYWRkc3cxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BoYWRkX3N3LCAxMDIxMzJ9LCAvLyBfX2J1aWx0aW5faWEzMl9waGFkZHN3MjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcGhhZGRfdywgMTI4NDEzfSwgLy8gX19idWlsdGluX2lhMzJfcGhhZGR3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcGhhZGRfd18xMjgsIDEyODQzNX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BoYWRkdzEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcGhhZGRfdywgMTAyMTU4fSwgLy8gX19idWlsdGluX2lhMzJfcGhhZGR3MjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDFfcGhtaW5wb3N1dywgMTI3NDcyfSwgLy8gX19idWlsdGluX2lhMzJfcGhtaW5wb3N1dzEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3Boc3ViX2QsIDEyODQ2MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Boc3ViZAotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3Boc3ViX2RfMTI4LCAxMjg0ODJ9LCAvLyBfX2J1aWx0aW5faWEzMl9waHN1YmQxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3Boc3ViX2QsIDEwMjE4M30sIC8vIF9fYnVpbHRpbl9pYTMyX3Boc3ViZDI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3Boc3ViX3N3LCAxMjg1MDd9LCAvLyBfX2J1aWx0aW5faWEzMl9waHN1YnN3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcGhzdWJfc3dfMTI4LCAxMjg1MzB9LCAvLyBfX2J1aWx0aW5faWEzMl9waHN1YnN3MTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9waHN1Yl9zdywgMTAyMjA4fSwgLy8gX19idWlsdGluX2lhMzJfcGhzdWJzdzI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3Boc3ViX3csIDEyODU1Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Boc3VidwotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3Boc3ViX3dfMTI4LCAxMjg1Nzh9LCAvLyBfX2J1aWx0aW5faWEzMl9waHN1YncxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3Boc3ViX3csIDEwMjIzNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Boc3VidzI1NgotICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BpMmZkLCA5OTI1MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BpMmZkCi0gICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dhX3BpMmZ3LCA5OTM2MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BpMmZ3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcG1hZGRfdWJfc3csIDEyODYwM30sIC8vIF9fYnVpbHRpbl9pYTMyX3BtYWRkdWJzdwotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BtYWRkX3ViX3N3XzEyOCwgMTI4NjI4fSwgLy8gX19idWlsdGluX2lhMzJfcG1hZGR1YnN3MTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wbWFkZF91Yl9zdywgMTAyMjU5fSwgLy8gX19idWlsdGluX2lhMzJfcG1hZGR1YnN3MjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BtYWRkdWJzX3dfNTEyLCAxMTYzMTh9LCAvLyBfX2J1aWx0aW5faWEzMl9wbWFkZHVic3c1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcG1hZGRfd2QsIDEyMzE0MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BtYWRkd2QKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BtYWRkX3dkLCAxMjYzNTR9LCAvLyBfX2J1aWx0aW5faWEzMl9wbWFkZHdkMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wbWFkZF93ZCwgMTAyMjg3fSwgLy8gX19idWlsdGluX2lhMzJfcG1hZGR3ZDI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wbWFkZHdfZF81MTIsIDExNjM0Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BtYWRkd2Q1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcG1heHNfdywgMTIzMTYzfSwgLy8gX19idWlsdGluX2lhMzJfcG1heHN3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BtYXh1X2IsIDEyMzE4NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BtYXh1YgotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wbWluc193LCAxMjMyMDd9LCAvLyBfX2J1aWx0aW5faWEzMl9wbWluc3cKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcG1pbnVfYiwgMTIzMjI5fSwgLy8gX19idWlsdGluX2lhMzJfcG1pbnViCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9kYl8xMjgsIDEwOTQxMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZkYjEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9kYl9tZW1fMTI4LCAxMDk0NzB9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92ZGIxMjhtZW1fbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfZGJfMjU2LCAxMDk0NDB9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92ZGIyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfZGJfbWVtXzI1NiwgMTA5NTAzfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdmRiMjU2bWVtX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X2RiX21lbV81MTIsIDEwOTUzNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZkYjUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9kd18xMjgsIDEwOTU2OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZkdzEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9kd19tZW1fMTI4LCAxMDk2Mjl9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92ZHcxMjhtZW1fbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfZHdfMjU2LCAxMDk1OTl9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92ZHcyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfZHdfbWVtXzI1NiwgMTA5NjYyfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdmR3MjU2bWVtX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X2R3X21lbV81MTIsIDEwOTY5NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZkdzUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3Btb3Ztc2tiLCAxMjMyNTF9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92bXNrYgotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcG1vdm1za2JfMTI4LCAxMjYzODB9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92bXNrYjEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcG1vdm1za2IsIDEwMjMxM30sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Ztc2tiMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9xYl8xMjgsIDEwOTcyOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZxYjEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9xYl9tZW1fMTI4LCAxMDk4MTh9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92cWIxMjhtZW1fbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfcWJfMjU2LCAxMDk3NTh9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92cWIyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfcWJfbWVtXzI1NiwgMTA5ODUxfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnFiMjU2bWVtX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X3FiXzUxMiwgMTA5Nzg4fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnFiNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X3FiX21lbV81MTIsIDEwOTg4NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZxYjUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9xZF8xMjgsIDEwOTkxN30sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZxZDEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9xZF9tZW1fMTI4LCAxMDk5NDd9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92cWQxMjhtZW1fbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfcWRfbWVtXzI1NiwgMTA5OTgwfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnFkMjU2bWVtX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X3FkX21lbV81MTIsIDExMDAxM30sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZxZDUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9xd18xMjgsIDExMDA0Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZxdzEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9xd19tZW1fMTI4LCAxMTAxMDZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92cXcxMjhtZW1fbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfcXdfMjU2LCAxMTAwNzZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92cXcyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfcXdfbWVtXzI1NiwgMTEwMTM5fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnF3MjU2bWVtX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X3F3X21lbV81MTIsIDExMDE3Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZxdzUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfZGJfMTI4LCAxMTAzMzR9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c2RiMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19kYl9tZW1fMTI4LCAxMTA0Mjd9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c2RiMTI4bWVtX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19kYl8yNTYsIDExMDM2NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzZGIyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX2RiX21lbV8yNTYsIDExMDQ2MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzZGIyNTZtZW1fbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX2RiXzUxMiwgMTEwMzk2fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNkYjUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfZGJfbWVtXzUxMiwgMTEwNDk1fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNkYjUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfZHdfMTI4LCAxMTA1Mjl9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c2R3MTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19kd19tZW1fMTI4LCAxMTA2MjJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c2R3MTI4bWVtX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19kd18yNTYsIDExMDU2MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzZHcyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX2R3X21lbV8yNTYsIDExMDY1Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzZHcyNTZtZW1fbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX2R3XzUxMiwgMTEwNTkxfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNkdzUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfZHdfbWVtXzUxMiwgMTEwNjkwfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNkdzUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfcWJfMTI4LCAxMTA3MjR9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3FiMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19xYl9tZW1fMTI4LCAxMTA4MTd9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3FiMTI4bWVtX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19xYl8yNTYsIDExMDc1NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWIyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3FiX21lbV8yNTYsIDExMDg1MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWIyNTZtZW1fbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3FiXzUxMiwgMTEwNzg2fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNxYjUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfcWJfbWVtXzUxMiwgMTEwODg1fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNxYjUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfcWRfMTI4LCAxMTA5MTl9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3FkMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19xZF9tZW1fMTI4LCAxMTEwMTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3FkMTI4bWVtX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19xZF8yNTYsIDExMDk1MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWQyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3FkX21lbV8yNTYsIDExMTA0Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWQyNTZtZW1fbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3FkXzUxMiwgMTEwOTgxfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNxZDUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfcWRfbWVtXzUxMiwgMTExMDgwfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNxZDUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfcXdfMTI4LCAxMTExMTR9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3F3MTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19xd19tZW1fMTI4LCAxMTEyMDd9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3F3MTI4bWVtX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19xd18yNTYsIDExMTE0NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXcyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3F3X21lbV8yNTYsIDExMTI0MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXcyNTZtZW1fbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3F3XzUxMiwgMTExMTc2fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNxdzUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfcXdfbWVtXzUxMiwgMTExMjc1fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNxdzUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfd2JfMTI4LCAxMTEzMDl9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3diMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c193Yl9tZW1fMTI4LCAxMTE0MDJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3diMTI4bWVtX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c193Yl8yNTYsIDExMTM0MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Zzd2IyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3diX21lbV8yNTYsIDExMTQzNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Zzd2IyNTZtZW1fbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3diXzUxMiwgMTExMzcxfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnN3YjUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfd2JfbWVtXzUxMiwgMTExNDcwfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnN3YjUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX2RiXzEyOCwgMTExNTA0fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzZGIxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19kYl9tZW1fMTI4LCAxMTE2MDB9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNkYjEyOG1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX2RiXzI1NiwgMTExNTM2fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzZGIyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19kYl9tZW1fMjU2LCAxMTE2MzV9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNkYjI1Nm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX2RiXzUxMiwgMTExNTY4fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzZGI1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19kYl9tZW1fNTEyLCAxMTE2NzB9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNkYjUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX2R3XzEyOCwgMTExNzA1fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzZHcxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19kd19tZW1fMTI4LCAxMTE4MDF9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNkdzEyOG1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX2R3XzI1NiwgMTExNzM3fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzZHcyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19kd19tZW1fMjU2LCAxMTE4MzZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNkdzI1Nm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX2R3XzUxMiwgMTExNzY5fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzZHc1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19kd19tZW1fNTEyLCAxMTE4NzF9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNkdzUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3FiXzEyOCwgMTExOTA2fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzcWIxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19xYl9tZW1fMTI4LCAxMTIwMDJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxYjEyOG1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3FiXzI1NiwgMTExOTM4fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzcWIyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19xYl9tZW1fMjU2LCAxMTIwMzd9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxYjI1Nm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3FiXzUxMiwgMTExOTcwfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzcWI1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19xYl9tZW1fNTEyLCAxMTIwNzJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxYjUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3FkXzEyOCwgMTEyMTA3fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzcWQxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19xZF9tZW1fMTI4LCAxMTIyMDN9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxZDEyOG1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3FkXzI1NiwgMTEyMTM5fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzcWQyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19xZF9tZW1fMjU2LCAxMTIyMzh9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxZDI1Nm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3FkXzUxMiwgMTEyMTcxfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzcWQ1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19xZF9tZW1fNTEyLCAxMTIyNzN9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxZDUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3F3XzEyOCwgMTEyMzA4fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzcXcxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19xd19tZW1fMTI4LCAxMTI0MDR9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxdzEyOG1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3F3XzI1NiwgMTEyMzQwfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzcXcyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19xd19tZW1fMjU2LCAxMTI0Mzl9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxdzI1Nm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3F3XzUxMiwgMTEyMzcyfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzcXc1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c19xd19tZW1fNTEyLCAxMTI0NzR9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxdzUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3diXzEyOCwgMTEyNTA5fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzd2IxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c193Yl9tZW1fMTI4LCAxMTI2MDV9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXN3YjEyOG1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3diXzI1NiwgMTEyNTQxfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzd2IyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c193Yl9tZW1fMjU2LCAxMTI2NDB9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXN3YjI1Nm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3diXzUxMiwgMTEyNTczfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnVzd2I1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Z1c193Yl9tZW1fNTEyLCAxMTI2NzV9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXN3YjUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl93Yl8xMjgsIDExMDIwNX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z3YjEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl93Yl9tZW1fMTI4LCAxMTAyMzV9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92d2IxMjhtZW1fbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Zfd2JfbWVtXzI1NiwgMTEwMjY4fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdndiMjU2bWVtX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X3diX21lbV81MTIsIDExMDMwMX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z3YjUxMm1lbV9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcG11bF9ocl9zdywgMTI4NjU2fSwgLy8gX19idWlsdGluX2lhMzJfcG11bGhyc3cKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc3NlM19wbXVsX2hyX3N3XzEyOCwgMTI4NjgwfSwgLy8gX19idWlsdGluX2lhMzJfcG11bGhyc3cxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BtdWxfaHJfc3csIDEwMjM0MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BtdWxocnN3MjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BtdWxfaHJfc3dfNTEyLCAxMTYzNzJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbXVsaHJzdzUxMgotICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BtdWxocncsIDk5MjcyfSwgLy8gX19idWlsdGluX2lhMzJfcG11bGhydwotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wbXVsaHVfdywgMTIzMjk3fSwgLy8gX19idWlsdGluX2lhMzJfcG11bGh1dwotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcG11bGh1X3csIDEyNjQzMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BtdWxodXcxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BtdWxodV93LCAxMDIzOTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbXVsaHV3MjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BtdWxodV93XzUxMiwgMTE2NDI0fSwgLy8gX19idWlsdGluX2lhMzJfcG11bGh1dzUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wbXVsaF93LCAxMjMyNzV9LCAvLyBfX2J1aWx0aW5faWEzMl9wbXVsaHcKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BtdWxoX3csIDEyNjQwN30sIC8vIF9fYnVpbHRpbl9pYTMyX3BtdWxodzEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcG11bGhfdywgMTAyMzY3fSwgLy8gX19idWlsdGluX2lhMzJfcG11bGh3MjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BtdWxoX3dfNTEyLCAxMTYzOTl9LCAvLyBfX2J1aWx0aW5faWEzMl9wbXVsaHc1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcG11bGxfdywgMTIzMzIwfSwgLy8gX19idWlsdGluX2lhMzJfcG11bGx3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BtdWx1X2RxLCAxMjMzNDJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbXVsdWRxCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BvciwgMTIzMzY1fSwgLy8gX19idWlsdGluX2lhMzJfcG9yCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb2xfZF8xMjgsIDExNjQ1MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb2xkMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb2xfZF8yNTYsIDExNjQ3NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb2xkMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb2xfZF81MTIsIDExNjQ5OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb2xkNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb2xfcV8xMjgsIDExNjUyMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb2xxMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb2xfcV8yNTYsIDExNjU0Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb2xxMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb2xfcV81MTIsIDExNjU3MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb2xxNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb2x2X2RfMTI4LCAxMTY1OTR9LCAvLyBfX2J1aWx0aW5faWEzMl9wcm9sdmQxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHJvbHZfZF8yNTYsIDExNjYxOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb2x2ZDI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wcm9sdl9kXzUxMiwgMTE2NjQ0fSwgLy8gX19idWlsdGluX2lhMzJfcHJvbHZkNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb2x2X3FfMTI4LCAxMTY2Njl9LCAvLyBfX2J1aWx0aW5faWEzMl9wcm9sdnExMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHJvbHZfcV8yNTYsIDExNjY5NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb2x2cTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wcm9sdl9xXzUxMiwgMTE2NzE5fSwgLy8gX19idWlsdGluX2lhMzJfcHJvbHZxNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb3JfZF8xMjgsIDExNjc0NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb3JkMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb3JfZF8yNTYsIDExNjc2OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb3JkMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb3JfZF81MTIsIDExNjc5Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb3JkNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb3JfcV8xMjgsIDExNjgxNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb3JxMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb3JfcV8yNTYsIDExNjg0MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb3JxMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb3JfcV81MTIsIDExNjg2NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb3JxNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb3J2X2RfMTI4LCAxMTY4ODh9LCAvLyBfX2J1aWx0aW5faWEzMl9wcm9ydmQxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHJvcnZfZF8yNTYsIDExNjkxM30sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb3J2ZDI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wcm9ydl9kXzUxMiwgMTE2OTM4fSwgLy8gX19idWlsdGluX2lhMzJfcHJvcnZkNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Byb3J2X3FfMTI4LCAxMTY5NjN9LCAvLyBfX2J1aWx0aW5faWEzMl9wcm9ydnExMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHJvcnZfcV8yNTYsIDExNjk4OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Byb3J2cTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wcm9ydl9xXzUxMiwgMTE3MDEzfSwgLy8gX19idWlsdGluX2lhMzJfcHJvcnZxNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzYWRfYncsIDEyMzM4NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzYWRidwotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcHNhZF9idywgMTI2NDU4fSwgLy8gX19idWlsdGluX2lhMzJfcHNhZGJ3MTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc2FkX2J3LCAxMDI0MTh9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2FkYncyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNhZF9id181MTIsIDExNzAzOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzYWRidzUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaHVmX2IsIDEyODcwN30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaHVmYgotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaHVmX2JfMTI4LCAxMjg3Mjl9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2h1ZmIxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzaHVmX2IsIDEwMjQ0M30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaHVmYjI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc2h1Zl9iXzUxMiwgMTE3MDYzfSwgLy8gX19idWlsdGluX2lhMzJfcHNodWZiNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlX3BzaHVmX3csIDEyNTMxNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaHVmdwotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaWduX2IsIDEyODc1NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaWduYgotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaWduX2JfMTI4LCAxMjg3NzZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2lnbmIxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzaWduX2IsIDEwMjQ2OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaWduYjI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaWduX2QsIDEyODgwMX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaWduZAotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaWduX2RfMTI4LCAxMjg4MjN9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2lnbmQxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzaWduX2QsIDEwMjQ5M30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaWduZDI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaWduX3csIDEyODg0OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaWdudwotICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaWduX3dfMTI4LCAxMjg4NzB9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2lnbncxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzaWduX3csIDEwMjUxOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaWdudzI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wc2xsX2QsIDEyMzQwNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxkCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc2xsX2QsIDEyNjQ4M30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxkMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc2xsX2QsIDEwMjU0M30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxkMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzbGxfZF81MTIsIDExNzA4OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxkNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzbGxpX2QsIDEyMzQ2OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxkaQotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcHNsbGlfZCwgMTI2NTU1fSwgLy8gX19idWlsdGluX2lhMzJfcHNsbGRpMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc2xsaV9kLCAxMDI2MTV9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2xsZGkyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNsbGlfZF81MTIsIDExNzE2MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxkaTUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wc2xsX3EsIDEyMzQyN30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxxCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc2xsX3EsIDEyNjUwN30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxxMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc2xsX3EsIDEwMjU2N30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxxMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzbGxfcV81MTIsIDExNzExMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxxNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzbGxpX3EsIDEyMzQ5MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxxaQotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcHNsbGlfcSwgMTI2NTgwfSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHFpMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc2xsaV9xLCAxMDI2NDB9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2xscWkyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNsbGlfcV81MTIsIDExNzE4NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxxaTUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc2xsdl93XzI1NiwgMTE3MzA4fSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHYxNmhpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzbGx2X2RfNTEyLCAxMTcyMzV9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2xsdjE2c2kKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzbGx2X3EsIDEwMjczOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGx2MmRpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzbGx2X3dfNTEyLCAxMTczMzN9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2xsdjMyaGkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzbGx2X3FfMjU2LCAxMDI3NjJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2xsdjRkaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcHNsbHZfZCwgMTAyNjkwfSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHY0c2kKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNsbHZfcV81MTIsIDExNzI2MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGx2OGRpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzbGx2X3dfMTI4LCAxMTcyODR9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2xsdjhoaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcHNsbHZfZF8yNTYsIDEwMjcxNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGx2OHNpCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzbGxfdywgMTIzNDQ4fSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHcKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BzbGxfdywgMTI2NTMxfSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHcxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzbGxfdywgMTAyNTkxfSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHcyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNsbF93XzUxMiwgMTE3MTM2fSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHc1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHNsbGlfdywgMTIzNTEzfSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHdpCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc2xsaV93LCAxMjY2MDV9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2xsd2kxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzbGxpX3csIDEwMjY2NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGx3aTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc2xsaV93XzUxMiwgMTE3MjEwfSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHdpNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzcmFfZCwgMTIzNTM1fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYWQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BzcmFfZCwgMTI2NjMwfSwgLy8gX19idWlsdGluX2lhMzJfcHNyYWQxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmFfZCwgMTAyNzg2fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYWQyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNyYV9kXzUxMiwgMTE3MzU4fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYWQ1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHNyYWlfZCwgMTIzNTc3fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYWRpCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc3JhaV9kLCAxMjY2Nzh9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JhZGkxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmFpX2QsIDEwMjgzNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmFkaTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3JhaV9kXzUxMiwgMTE3NDc4fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYWRpNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzcmFfcV8xMjgsIDExNzM4Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmFxMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzcmFfcV8yNTYsIDExNzQwNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmFxMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzcmFfcV81MTIsIDExNzQzMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmFxNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzcmFpX3FfMTI4LCAxMTc1MDN9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JhcWkxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNyYWlfcV8yNTYsIDExNzUyOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmFxaTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3JhaV9xXzUxMiwgMTE3NTUzfSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXFpNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzcmF2X3dfMjU2LCAxMTc3MjZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JhdjE2aGkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNyYXZfZF81MTIsIDExNzYwM30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmF2MTZzaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3Jhdl93XzUxMiwgMTE3NzUxfSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXYzMmhpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc3Jhdl9kLCAxMDI4ODR9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JhdjRzaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3Jhdl9xXzUxMiwgMTE3Njc4fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXY4ZGkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNyYXZfd18xMjgsIDExNzcwMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmF2OGhpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc3Jhdl9kXzI1NiwgMTAyOTA4fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXY4c2kKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNyYXZfcV8xMjgsIDExNzYyOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmF2cTEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3Jhdl9xXzI1NiwgMTE3NjUzfSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXZxMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzcmFfdywgMTIzNTU2fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXcKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BzcmFfdywgMTI2NjU0fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXcxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmFfdywgMTAyODEwfSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXcyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNyYV93XzUxMiwgMTE3NDU0fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXc1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHNyYWlfdywgMTIzNTk5fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXdpCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc3JhaV93LCAxMjY3MDN9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3Jhd2kxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmFpX3csIDEwMjg1OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmF3aTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3JhaV93XzUxMiwgMTE3NTc4fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXdpNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzcmxfZCwgMTIzNjIxfSwgLy8gX19idWlsdGluX2lhMzJfcHNybGQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BzcmxfZCwgMTI2NzI4fSwgLy8gX19idWlsdGluX2lhMzJfcHNybGQxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmxfZCwgMTAyOTMyfSwgLy8gX19idWlsdGluX2lhMzJfcHNybGQyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNybF9kXzUxMiwgMTE3Nzc2fSwgLy8gX19idWlsdGluX2lhMzJfcHNybGQ1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHNybGlfZCwgMTIzNjg0fSwgLy8gX19idWlsdGluX2lhMzJfcHNybGRpCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc3JsaV9kLCAxMjY4MDB9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JsZGkxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmxpX2QsIDEwMzAwNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmxkaTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3JsaV9kXzUxMiwgMTE3ODQ4fSwgLy8gX19idWlsdGluX2lhMzJfcHNybGRpNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzcmxfcSwgMTIzNjQyfSwgLy8gX19idWlsdGluX2lhMzJfcHNybHEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BzcmxfcSwgMTI2NzUyfSwgLy8gX19idWlsdGluX2lhMzJfcHNybHExMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmxfcSwgMTAyOTU2fSwgLy8gX19idWlsdGluX2lhMzJfcHNybHEyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNybF9xXzUxMiwgMTE3ODAwfSwgLy8gX19idWlsdGluX2lhMzJfcHNybHE1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHNybGlfcSwgMTIzNzA2fSwgLy8gX19idWlsdGluX2lhMzJfcHNybHFpCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc3JsaV9xLCAxMjY4MjV9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JscWkxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmxpX3EsIDEwMzAyOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmxxaTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3JsaV9xXzUxMiwgMTE3ODczfSwgLy8gX19idWlsdGluX2lhMzJfcHNybHFpNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Bzcmx2X3dfMjU2LCAxMTc5OTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JsdjE2aGkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNybHZfZF81MTIsIDExNzkyM30sIC8vIF9fYnVpbHRpbl9pYTMyX3Bzcmx2MTZzaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcHNybHZfcSwgMTAzMTI3fSwgLy8gX19idWlsdGluX2lhMzJfcHNybHYyZGkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNybHZfd181MTIsIDExODAyMX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Bzcmx2MzJoaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcHNybHZfcV8yNTYsIDEwMzE1MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Bzcmx2NGRpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc3Jsdl9kLCAxMDMwNzl9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JsdjRzaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3Jsdl9xXzUxMiwgMTE3OTQ4fSwgLy8gX19idWlsdGluX2lhMzJfcHNybHY4ZGkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNybHZfd18xMjgsIDExNzk3Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Bzcmx2OGhpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc3Jsdl9kXzI1NiwgMTAzMTAzfSwgLy8gX19idWlsdGluX2lhMzJfcHNybHY4c2kKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHNybF93LCAxMjM2NjN9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JsdwotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcHNybF93LCAxMjY3NzZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JsdzEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcHNybF93LCAxMDI5ODB9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JsdzI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3JsX3dfNTEyLCAxMTc4MjR9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JsdzUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wc3JsaV93LCAxMjM3Mjh9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3Jsd2kKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BzcmxpX3csIDEyNjg1MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Bzcmx3aTEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcHNybGlfdywgMTAzMDU0fSwgLy8gX19idWlsdGluX2lhMzJfcHNybHdpMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzcmxpX3dfNTEyLCAxMTc4OTh9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3Jsd2k1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHN1Yl9iLCAxMjM3NTB9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3ViYgotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wc3ViX2QsIDEyMzc3MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzdWJkCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzdWJfcSwgMTIzNzkyfSwgLy8gX19idWlsdGluX2lhMzJfcHN1YnEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHN1YnNfYiwgMTIzODM0fSwgLy8gX19idWlsdGluX2lhMzJfcHN1YnNiCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc3Vic19iLCAxMjY4NzV9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3Vic2IxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzdWJzX2IsIDEwMzE3NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzdWJzYjI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3Vic19iXzUxMiwgMTE4MDQ2fSwgLy8gX19idWlsdGluX2lhMzJfcHN1YnNiNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzdWJzX3csIDEyMzg1Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzdWJzdwotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcHN1YnNfdywgMTI2OTAwfSwgLy8gX19idWlsdGluX2lhMzJfcHN1YnN3MTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc3Vic193LCAxMDMyMDB9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3Vic3cyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHN1YnNfd181MTIsIDExODA3MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzdWJzdzUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wc3VidXNfYiwgMTIzODc4fSwgLy8gX19idWlsdGluX2lhMzJfcHN1YnVzYgotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wc3VidXNfdywgMTIzOTAxfSwgLy8gX19idWlsdGluX2lhMzJfcHN1YnVzdwotICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wc3ViX3csIDEyMzgxM30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzdWJ3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3B0ZXJubG9nX2RfMTI4LCAxMTgwOTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wdGVybmxvZ2QxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHRlcm5sb2dfZF8yNTYsIDExODEyNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3B0ZXJubG9nZDI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wdGVybmxvZ19kXzUxMiwgMTE4MTUyfSwgLy8gX19idWlsdGluX2lhMzJfcHRlcm5sb2dkNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3B0ZXJubG9nX3FfMTI4LCAxMTgxODB9LCAvLyBfX2J1aWx0aW5faWEzMl9wdGVybmxvZ3ExMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHRlcm5sb2dfcV8yNTYsIDExODIwOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3B0ZXJubG9ncTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wdGVybmxvZ19xXzUxMiwgMTE4MjM2fSwgLy8gX19idWlsdGluX2lhMzJfcHRlcm5sb2dxNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDFfcHRlc3RjLCAxMjc1MDF9LCAvLyBfX2J1aWx0aW5faWEzMl9wdGVzdGMxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfcHRlc3RjXzI1NiwgMTAwNTMxfSwgLy8gX19idWlsdGluX2lhMzJfcHRlc3RjMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDFfcHRlc3RuemMsIDEyNzUyNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3B0ZXN0bnpjMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3B0ZXN0bnpjXzI1NiwgMTAwNTU2fSwgLy8gX19idWlsdGluX2lhMzJfcHRlc3RuemMyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0MV9wdGVzdHosIDEyNzU1M30sIC8vIF9fYnVpbHRpbl9pYTMyX3B0ZXN0ejEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9wdGVzdHpfMjU2LCAxMDA1ODN9LCAvLyBfX2J1aWx0aW5faWEzMl9wdGVzdHoyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9wdHdyaXRlMzIsIDEyNDI0OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3B0d3JpdGUzMgotICAgICAge0ludHJpbnNpYzo6eDg2X3B0d3JpdGU2NCwgMTI0Mjc0fSwgLy8gX19idWlsdGluX2lhMzJfcHR3cml0ZTY0Ci0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3B1bnBja2hidywgMTIzOTI0fSwgLy8gX19idWlsdGluX2lhMzJfcHVucGNraGJ3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3B1bnBja2hkcSwgMTIzOTQ5fSwgLy8gX19idWlsdGluX2lhMzJfcHVucGNraGRxCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3B1bnBja2h3ZCwgMTIzOTc0fSwgLy8gX19idWlsdGluX2lhMzJfcHVucGNraHdkCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3B1bnBja2xidywgMTIzOTk5fSwgLy8gX19idWlsdGluX2lhMzJfcHVucGNrbGJ3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3B1bnBja2xkcSwgMTI0MDI0fSwgLy8gX19idWlsdGluX2lhMzJfcHVucGNrbGRxCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3B1bnBja2x3ZCwgMTI0MDQ5fSwgLy8gX19idWlsdGluX2lhMzJfcHVucGNrbHdkCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3B4b3IsIDEyNDA3NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3B4b3IKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19yYW5nZV9wZF8xMjgsIDExMjgyNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JhbmdlcGQxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JhbmdlX3BkXzI1NiwgMTEyODU1fSwgLy8gX19idWlsdGluX2lhMzJfcmFuZ2VwZDI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcmFuZ2VfcGRfNTEyLCAxMTI4ODZ9LCAvLyBfX2J1aWx0aW5faWEzMl9yYW5nZXBkNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19yYW5nZV9wc18xMjgsIDExMjkxN30sIC8vIF9fYnVpbHRpbl9pYTMyX3JhbmdlcHMxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JhbmdlX3BzXzI1NiwgMTEyOTQ4fSwgLy8gX19idWlsdGluX2lhMzJfcmFuZ2VwczI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcmFuZ2VfcHNfNTEyLCAxMTI5Nzl9LCAvLyBfX2J1aWx0aW5faWEzMl9yYW5nZXBzNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19yYW5nZV9zZCwgMTEzMDEwfSwgLy8gX19idWlsdGluX2lhMzJfcmFuZ2VzZDEyOF9yb3VuZF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcmFuZ2Vfc3MsIDExMzA0N30sIC8vIF9fYnVpbHRpbl9pYTMyX3Jhbmdlc3MxMjhfcm91bmRfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AxNF9wZF8xMjgsIDExODI2NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDE0cGQxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AxNF9wZF8yNTYsIDExODI5NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDE0cGQyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AxNF9wZF81MTIsIDExODMyNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDE0cGQ1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AxNF9wc18xMjgsIDExODM1N30sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDE0cHMxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AxNF9wc18yNTYsIDExODM4OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDE0cHMyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AxNF9wc181MTIsIDExODQxOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDE0cHM1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AxNF9zZCwgMTE4NDUwfSwgLy8gX19idWlsdGluX2lhMzJfcmNwMTRzZF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3JjcDE0X3NzLCAxMTg0Nzh9LCAvLyBfX2J1aWx0aW5faWEzMl9yY3AxNHNzX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcmNwMjhfcGQsIDExODUwNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDI4cGRfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AyOF9wcywgMTE4NTM0fSwgLy8gX19idWlsdGluX2lhMzJfcmNwMjhwc19tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3JjcDI4X3NkLCAxMTg1NjJ9LCAvLyBfX2J1aWx0aW5faWEzMl9yY3AyOHNkX3JvdW5kX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcmNwMjhfc3MsIDExODU5Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDI4c3Nfcm91bmRfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9yY3BfcHMsIDEyNTMzOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcHBzCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3JjcF9wc18yNTYsIDEwMDYwOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcHBzMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlX3JjcF9zcywgMTI1MzU5fSwgLy8gX19idWlsdGluX2lhMzJfcmNwc3MKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9yZGZzYmFzZV8zMiwgMTI0Mjk5fSwgLy8gX19idWlsdGluX2lhMzJfcmRmc2Jhc2UzMgotICAgICAge0ludHJpbnNpYzo6eDg2X3JkZnNiYXNlXzY0LCAxMjQzMjV9LCAvLyBfX2J1aWx0aW5faWEzMl9yZGZzYmFzZTY0Ci0gICAgICB7SW50cmluc2ljOjp4ODZfcmRnc2Jhc2VfMzIsIDEyNDM1MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3JkZ3NiYXNlMzIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9yZGdzYmFzZV82NCwgMTI0Mzc3fSwgLy8gX19idWlsdGluX2lhMzJfcmRnc2Jhc2U2NAotICAgICAge0ludHJpbnNpYzo6eDg2X3JkcGlkLCAxMjQ0MDN9LCAvLyBfX2J1aWx0aW5faWEzMl9yZHBpZAotICAgICAge0ludHJpbnNpYzo6eDg2X3JkcGtydSwgMTI0NDI0fSwgLy8gX19idWlsdGluX2lhMzJfcmRwa3J1Ci0gICAgICB7SW50cmluc2ljOjp4ODZfcmRwbWMsIDEyNDQ0Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3JkcG1jCi0gICAgICB7SW50cmluc2ljOjp4ODZfcmRzc3BkLCAxMjQ0Njd9LCAvLyBfX2J1aWx0aW5faWEzMl9yZHNzcGQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9yZHNzcHEsIDEyNDQ4OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Jkc3NwcQotICAgICAge0ludHJpbnNpYzo6eDg2X3JkdHNjLCAxMjQ1MTF9LCAvLyBfX2J1aWx0aW5faWEzMl9yZHRzYwotICAgICAge0ludHJpbnNpYzo6eDg2X2ZsYWdzX3JlYWRfdTMyLCAxMjIxMDR9LCAvLyBfX2J1aWx0aW5faWEzMl9yZWFkZWZsYWdzX3UzMgotICAgICAge0ludHJpbnNpYzo6eDg2X2ZsYWdzX3JlYWRfdTY0LCAxMjIxMzR9LCAvLyBfX2J1aWx0aW5faWEzMl9yZWFkZWZsYWdzX3U2NAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JlZHVjZV9wZF8xMjgsIDExMzA4NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JlZHVjZXBkMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19yZWR1Y2VfcGRfMjU2LCAxMTMxMTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9yZWR1Y2VwZDI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcmVkdWNlX3BkXzUxMiwgMTEzMTQ4fSwgLy8gX19idWlsdGluX2lhMzJfcmVkdWNlcGQ1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JlZHVjZV9wc18xMjgsIDExMzE4MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JlZHVjZXBzMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19yZWR1Y2VfcHNfMjU2LCAxMTMyMTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9yZWR1Y2VwczI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcmVkdWNlX3BzXzUxMiwgMTEzMjQ0fSwgLy8gX19idWlsdGluX2lhMzJfcmVkdWNlcHM1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JlZHVjZV9zZCwgMTEzMjc2fSwgLy8gX19idWlsdGluX2lhMzJfcmVkdWNlc2RfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JlZHVjZV9zcywgMTEzMzA1fSwgLy8gX19idWlsdGluX2lhMzJfcmVkdWNlc3NfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JuZHNjYWxlX3BkXzEyOCwgMTEzMzM0fSwgLy8gX19idWlsdGluX2lhMzJfcm5kc2NhbGVwZF8xMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JuZHNjYWxlX3BkXzI1NiwgMTEzMzY5fSwgLy8gX19idWlsdGluX2lhMzJfcm5kc2NhbGVwZF8yNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JuZHNjYWxlX3BkXzUxMiwgMTEzNDA0fSwgLy8gX19idWlsdGluX2lhMzJfcm5kc2NhbGVwZF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcm5kc2NhbGVfcHNfMTI4LCAxMTM0MzV9LCAvLyBfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBzXzEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcm5kc2NhbGVfcHNfMjU2LCAxMTM0NzB9LCAvLyBfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBzXzI1Nl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcm5kc2NhbGVfcHNfNTEyLCAxMTM1MDV9LCAvLyBfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBzX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19ybmRzY2FsZV9zZCwgMTEzNTM2fSwgLy8gX19idWlsdGluX2lhMzJfcm5kc2NhbGVzZF9yb3VuZF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcm5kc2NhbGVfc3MsIDExMzU3M30sIC8vIF9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlc3Nfcm91bmRfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQxX3JvdW5kX3BkLCAxMjc1Nzh9LCAvLyBfX2J1aWx0aW5faWEzMl9yb3VuZHBkCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3JvdW5kX3BkXzI1NiwgMTAwNjMyfSwgLy8gX19idWlsdGluX2lhMzJfcm91bmRwZDI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQxX3JvdW5kX3BzLCAxMjc2MDF9LCAvLyBfX2J1aWx0aW5faWEzMl9yb3VuZHBzCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3JvdW5kX3BzXzI1NiwgMTAwNjU4fSwgLy8gX19idWlsdGluX2lhMzJfcm91bmRwczI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQxX3JvdW5kX3NkLCAxMjc2MjR9LCAvLyBfX2J1aWx0aW5faWEzMl9yb3VuZHNkCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDFfcm91bmRfc3MsIDEyNzY0N30sIC8vIF9fYnVpbHRpbl9pYTMyX3JvdW5kc3MKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQxNF9wZF8xMjgsIDExODYzMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JzcXJ0MTRwZDEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3JzcXJ0MTRfcGRfMjU2LCAxMTg2NjN9LCAvLyBfX2J1aWx0aW5faWEzMl9yc3FydDE0cGQyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yc3FydDE0X3BkXzUxMiwgMTE4Njk2fSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQxNHBkNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQxNF9wc18xMjgsIDExODcyOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3JzcXJ0MTRwczEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3JzcXJ0MTRfcHNfMjU2LCAxMTg3NjJ9LCAvLyBfX2J1aWx0aW5faWEzMl9yc3FydDE0cHMyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yc3FydDE0X3BzXzUxMiwgMTE4Nzk1fSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQxNHBzNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQxNF9zZCwgMTE4ODI4fSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQxNHNkX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQxNF9zcywgMTE4ODU4fSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQxNHNzX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQyOF9wZCwgMTE4ODg4fSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQyOHBkX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQyOF9wcywgMTE4OTE4fSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQyOHBzX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQyOF9zZCwgMTE4OTQ4fSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQyOHNkX3JvdW5kX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQyOF9zcywgMTE4OTg0fSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQyOHNzX3JvdW5kX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfcnNxcnRfcHMsIDEyNTM4MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JzcXJ0cHMKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfcnNxcnRfcHNfMjU2LCAxMDA2ODR9LCAvLyBfX2J1aWx0aW5faWEzMl9yc3FydHBzMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlX3JzcXJ0X3NzLCAxMjU0MDN9LCAvLyBfX2J1aWx0aW5faWEzMl9yc3FydHNzCi0gICAgICB7SW50cmluc2ljOjp4ODZfcnN0b3Jzc3AsIDEyNDUzMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3JzdG9yc3NwCi0gICAgICB7SW50cmluc2ljOjp4ODZfc2F2ZXByZXZzc3AsIDEyNDU1Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3NhdmVwcmV2c3NwCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfc2NhbGVmX3BkXzEyOCwgMTEzNjEwfSwgLy8gX19idWlsdGluX2lhMzJfc2NhbGVmcGQxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3NjYWxlZl9wZF8yNTYsIDExMzY0Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3NjYWxlZnBkMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19zY2FsZWZfcGRfNTEyLCAxMTM2NzR9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2FsZWZwZDUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfc2NhbGVmX3BzXzEyOCwgMTEzNzA2fSwgLy8gX19idWlsdGluX2lhMzJfc2NhbGVmcHMxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3NjYWxlZl9wc18yNTYsIDExMzczOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3NjYWxlZnBzMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19zY2FsZWZfcHNfNTEyLCAxMTM3NzB9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2FsZWZwczUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfc2NhbGVmX3NkLCAxMTM4MDJ9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2FsZWZzZF9yb3VuZF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfc2NhbGVmX3NzLCAxMTM4Mzd9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2FsZWZzc19yb3VuZF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3NjYXR0ZXJfcXBzXzUxMiwgMTE5MjI2fSwgLy8gX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjE2c2YKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfc2NhdHRlcl9xcGlfNTEyLCAxMTkxNjd9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2MTZzaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zY2F0dGVyZGl2Ml9kZiwgMTE5MjU2fSwgLy8gX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjJkZgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zY2F0dGVyZGl2Ml9kaSwgMTE5Mjg1fSwgLy8gX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjJkaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zY2F0dGVyZGl2NF9kZiwgMTE5MzE0fSwgLy8gX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjRkZgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zY2F0dGVyZGl2NF9kaSwgMTE5MzQzfSwgLy8gX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjRkaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zY2F0dGVyZGl2NF9zZiwgMTE5MzcyfSwgLy8gX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjRzZgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zY2F0dGVyZGl2NF9zaSwgMTE5NDAxfSwgLy8gX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjRzaQotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zY2F0dGVyX3FwZF81MTIsIDExOTEzOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXY4ZGYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfc2NhdHRlcl9xcHFfNTEyLCAxMTkxOTd9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2OGRpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3NjYXR0ZXJkaXY4X3NmLCAxMTk0MzB9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2OHNmCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3NjYXR0ZXJkaXY4X3NpLCAxMTk0NTl9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2OHNpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3NjYXR0ZXJwZl9kcGRfNTEyLCAxMTk0ODh9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVycGZkcGQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfc2NhdHRlcnBmX2Rwc181MTIsIDExOTUxNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJwZmRwcwotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zY2F0dGVycGZfcXBkXzUxMiwgMTE5NTQ0fSwgLy8gX19idWlsdGluX2lhMzJfc2NhdHRlcnBmcXBkCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3NjYXR0ZXJwZl9xcHNfNTEyLCAxMTk1NzJ9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVycGZxcHMKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfc2NhdHRlcl9kcHNfNTEyLCAxMTkxMDh9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2MTZzZgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zY2F0dGVyX2RwaV81MTIsIDExOTA0OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXYxNnNpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3NjYXR0ZXJzaXYyX2RmLCAxMTk2MDB9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2MmRmCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3NjYXR0ZXJzaXYyX2RpLCAxMTk2Mjl9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2MmRpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3NjYXR0ZXJzaXY0X2RmLCAxMTk2NTh9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2NGRmCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3NjYXR0ZXJzaXY0X2RpLCAxMTk2ODd9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2NGRpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3NjYXR0ZXJzaXY0X3NmLCAxMTk3MTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2NHNmCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3NjYXR0ZXJzaXY0X3NpLCAxMTk3NDV9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2NHNpCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3NjYXR0ZXJfZHBkXzUxMiwgMTE5MDIwfSwgLy8gX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjhkZgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zY2F0dGVyX2RwcV81MTIsIDExOTA3OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY4ZGkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfc2NhdHRlcnNpdjhfc2YsIDExOTc3NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY4c2YKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfc2NhdHRlcnNpdjhfc2ksIDExOTgwM30sIC8vIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY4c2kKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zZXRzc2JzeSwgMTI0NTgzfSwgLy8gX19idWlsdGluX2lhMzJfc2V0c3Nic3kKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2Vfc2ZlbmNlLCAxMjU0MjZ9LCAvLyBfX2J1aWx0aW5faWEzMl9zZmVuY2UKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zaGExbXNnMSwgMTI0NjA3fSwgLy8gX19idWlsdGluX2lhMzJfc2hhMW1zZzEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zaGExbXNnMiwgMTI0NjMxfSwgLy8gX19idWlsdGluX2lhMzJfc2hhMW1zZzIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zaGExbmV4dGUsIDEyNDY1NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3NoYTFuZXh0ZQotICAgICAge0ludHJpbnNpYzo6eDg2X3NoYTFybmRzNCwgMTI0NjgwfSwgLy8gX19idWlsdGluX2lhMzJfc2hhMXJuZHM0Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc2hhMjU2bXNnMSwgMTI0NzA1fSwgLy8gX19idWlsdGluX2lhMzJfc2hhMjU2bXNnMQotICAgICAge0ludHJpbnNpYzo6eDg2X3NoYTI1Nm1zZzIsIDEyNDczMX0sIC8vIF9fYnVpbHRpbl9pYTMyX3NoYTI1Nm1zZzIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zaGEyNTZybmRzMiwgMTI0NzU3fSwgLy8gX19idWlsdGluX2lhMzJfc2hhMjU2cm5kczIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zbHdwY2IsIDEyNDc4NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Nsd3BjYgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zdWJfcGRfNTEyLCAxMTk4MzJ9LCAvLyBfX2J1aWx0aW5faWEzMl9zdWJwZDUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zdWJfcHNfNTEyLCAxMTk4NTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9zdWJwczUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3N1Yl9zZF9yb3VuZCwgMTEzODcyfSwgLy8gX19idWlsdGluX2lhMzJfc3Vic2Rfcm91bmRfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3N1Yl9zc19yb3VuZCwgMTEzOTA0fSwgLy8gX19idWlsdGluX2lhMzJfc3Vic3Nfcm91bmRfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X3RwYXVzZSwgMTI4OTQ3fSwgLy8gX19idWlsdGluX2lhMzJfdHBhdXNlCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlX3Vjb21pZXFfc3MsIDEyNTQ0OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Vjb21pZXEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfdWNvbWlnZV9zcywgMTI1NDcxfSwgLy8gX19idWlsdGluX2lhMzJfdWNvbWlnZQotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV91Y29taWd0X3NzLCAxMjU0OTR9LCAvLyBfX2J1aWx0aW5faWEzMl91Y29taWd0Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlX3Vjb21pbGVfc3MsIDEyNTUxN30sIC8vIF9fYnVpbHRpbl9pYTMyX3Vjb21pbGUKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfdWNvbWlsdF9zcywgMTI1NTQwfSwgLy8gX19idWlsdGluX2lhMzJfdWNvbWlsdAotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV91Y29taW5lcV9zcywgMTI1NTYzfSwgLy8gX19idWlsdGluX2lhMzJfdWNvbWluZXEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3Vjb21pZXFfc2QsIDEyNjkyNX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Vjb21pc2RlcQotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfdWNvbWlnZV9zZCwgMTI2OTUwfSwgLy8gX19idWlsdGluX2lhMzJfdWNvbWlzZGdlCi0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl91Y29taWd0X3NkLCAxMjY5NzV9LCAvLyBfX2J1aWx0aW5faWEzMl91Y29taXNkZ3QKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3Vjb21pbGVfc2QsIDEyNzAwMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Vjb21pc2RsZQotICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfdWNvbWlsdF9zZCwgMTI3MDI1fSwgLy8gX19idWlsdGluX2lhMzJfdWNvbWlzZGx0Ci0gICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl91Y29taW5lcV9zZCwgMTI3MDUwfSwgLy8gX19idWlsdGluX2lhMzJfdWNvbWlzZG5lcQotICAgICAge0ludHJpbnNpYzo6eDg2X3Vtb25pdG9yLCAxMjg5Njl9LCAvLyBfX2J1aWx0aW5faWEzMl91bW9uaXRvcgotICAgICAge0ludHJpbnNpYzo6eDg2X3Vtd2FpdCwgMTI4OTkzfSwgLy8gX19idWlsdGluX2lhMzJfdW13YWl0Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Zjb21pX3NkLCAxMTk4ODB9LCAvLyBfX2J1aWx0aW5faWEzMl92Y29taXNkCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Zjb21pX3NzLCAxMTk5MDN9LCAvLyBfX2J1aWx0aW5faWEzMl92Y29taXNzCi0gICAgICB7SW50cmluc2ljOjp4ODZfdmN2dHBoMnBzXzEyOCwgMTI5MDE1fSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHBoMnBzCi0gICAgICB7SW50cmluc2ljOjp4ODZfdmN2dHBoMnBzXzI1NiwgMTI5MDQwfSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHBoMnBzMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfdmN2dHBoMnBzXzI1NiwgMTEzOTY2fSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHBoMnBzMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza192Y3Z0cGgycHNfNTEyLCAxMTM5OTl9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0cGgycHM1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3ZjdnRwaDJwc18xMjgsIDExMzkzNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwc19tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfdmN2dHBzMnBoXzEyOCwgMTI5MDY4fSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHBzMnBoCi0gICAgICB7SW50cmluc2ljOjp4ODZfdmN2dHBzMnBoXzI1NiwgMTI5MDkzfSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHBzMnBoMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfdmN2dHBzMnBoXzI1NiwgMTE0MDYyfSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHBzMnBoMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza192Y3Z0cHMycGhfNTEyLCAxMTQwOTV9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0cHMycGg1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3ZjdnRwczJwaF8xMjgsIDExNDAzMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnRwczJwaF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZjdnRzZDJzaTMyLCAxMTk5MjZ9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0c2Qyc2kzMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92Y3Z0c2Qyc2k2NCwgMTE5OTUzfSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHNkMnNpNjQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdmN2dHNkMnVzaTMyLCAxMTk5ODB9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0c2QydXNpMzIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdmN2dHNkMnVzaTY0LCAxMjAwMDh9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0c2QydXNpNjQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdmN2dHNzMnNpMzIsIDEyMDAzNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnRzczJzaTMyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZjdnRzczJzaTY0LCAxMjAwNjN9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0c3Myc2k2NAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92Y3Z0c3MydXNpMzIsIDEyMDA5MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnRzczJ1c2kzMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92Y3Z0c3MydXNpNjQsIDEyMDExOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnRzczJ1c2k2NAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9jdnR0c2Qyc2ksIDEwMzUzMX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnR0c2Qyc2kzMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9jdnR0c2Qyc2k2NCwgMTAzNTU5fSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHRzZDJzaTY0Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2N2dHRzZDJ1c2ksIDEwMzU4N30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnR0c2QydXNpMzIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfY3Z0dHNkMnVzaTY0LCAxMDM2MTZ9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0dHNkMnVzaTY0Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2N2dHRzczJzaSwgMTAzNjQ1fSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHRzczJzaTMyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2N2dHRzczJzaTY0LCAxMDM2NzN9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0dHNzMnNpNjQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfY3Z0dHNzMnVzaSwgMTAzNzAxfSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHRzczJ1c2kzMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9jdnR0c3MydXNpNjQsIDEwMzczMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnR0c3MydXNpNjQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcGV4dHJfdywgMTIzMDg0fSwgLy8gX19idWlsdGluX2lhMzJfdmVjX2V4dF92NGhpCi0gICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BpbnNyX3csIDEyMzExMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZlY19zZXRfdjRoaQotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92ZnJjel9wZCwgMTI5NzY0fSwgLy8gX19idWlsdGluX2lhMzJfdmZyY3pwZAotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92ZnJjel9wZF8yNTYsIDEyOTc4N30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZmcmN6cGQyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdmZyY3pfcHMsIDEyOTgxM30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZmcmN6cHMKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdmZyY3pfcHNfMjU2LCAxMjk4MzZ9LCAvLyBfX2J1aWx0aW5faWEzMl92ZnJjenBzMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZmcmN6X3NkLCAxMjk4NjJ9LCAvLyBfX2J1aWx0aW5faWEzMl92ZnJjenNkCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZmcmN6X3NzLCAxMjk4ODV9LCAvLyBfX2J1aWx0aW5faWEzMl92ZnJjenNzCi0gICAgICB7SW50cmluc2ljOjp4ODZfdmdmMnA4YWZmaW5laW52cWJfMTI4LCAxMjkxMjF9LCAvLyBfX2J1aWx0aW5faWEzMl92Z2YycDhhZmZpbmVpbnZxYl92MTZxaQotICAgICAge0ludHJpbnNpYzo6eDg2X3ZnZjJwOGFmZmluZWludnFiXzI1NiwgMTI5MTYwfSwgLy8gX19idWlsdGluX2lhMzJfdmdmMnA4YWZmaW5laW52cWJfdjMycWkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl92Z2YycDhhZmZpbmVpbnZxYl81MTIsIDEyOTE5OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZnZjJwOGFmZmluZWludnFiX3Y2NHFpCi0gICAgICB7SW50cmluc2ljOjp4ODZfdmdmMnA4YWZmaW5lcWJfMTI4LCAxMjkyMzh9LCAvLyBfX2J1aWx0aW5faWEzMl92Z2YycDhhZmZpbmVxYl92MTZxaQotICAgICAge0ludHJpbnNpYzo6eDg2X3ZnZjJwOGFmZmluZXFiXzI1NiwgMTI5Mjc0fSwgLy8gX19idWlsdGluX2lhMzJfdmdmMnA4YWZmaW5lcWJfdjMycWkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl92Z2YycDhhZmZpbmVxYl81MTIsIDEyOTMxMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZnZjJwOGFmZmluZXFiX3Y2NHFpCi0gICAgICB7SW50cmluc2ljOjp4ODZfdmdmMnA4bXVsYl8xMjgsIDEyOTM0Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZnZjJwOG11bGJfdjE2cWkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl92Z2YycDhtdWxiXzI1NiwgMTI5Mzc4fSwgLy8gX19idWlsdGluX2lhMzJfdmdmMnA4bXVsYl92MzJxaQotICAgICAge0ludHJpbnNpYzo6eDg2X3ZnZjJwOG11bGJfNTEyLCAxMjk0MTB9LCAvLyBfX2J1aWx0aW5faWEzMl92Z2YycDhtdWxiX3Y2NHFpCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwY29tYiwgMTI5OTA4fSwgLy8gX19idWlsdGluX2lhMzJfdnBjb21iCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwY29tZCwgMTI5OTMwfSwgLy8gX19idWlsdGluX2lhMzJfdnBjb21kCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwY29tcSwgMTI5OTUyfSwgLy8gX19idWlsdGluX2lhMzJfdnBjb21xCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwY29tdWIsIDEyOTk3NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwY29tdWIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBjb211ZCwgMTI5OTk3fSwgLy8gX19idWlsdGluX2lhMzJfdnBjb211ZAotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cGNvbXVxLCAxMzAwMjB9LCAvLyBfX2J1aWx0aW5faWEzMl92cGNvbXVxCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwY29tdXcsIDEzMDA0M30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwY29tdXcKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBjb213LCAxMzAwNjZ9LCAvLyBfX2J1aWx0aW5faWEzMl92cGNvbXcKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jb25mbGljdF9xXzEyOCwgMTA1NjYyfSwgLy8gX19idWlsdGluX2lhMzJfdnBjb25mbGljdGRpXzEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY29uZmxpY3RfcV8yNTYsIDEwNTY5OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwY29uZmxpY3RkaV8yNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2NvbmZsaWN0X3FfNTEyLCAxMDU3MzZ9LCAvLyBfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0ZGlfNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jb25mbGljdF9kXzEyOCwgMTA1NTUxfSwgLy8gX19idWlsdGluX2lhMzJfdnBjb25mbGljdHNpXzEyOF9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY29uZmxpY3RfZF8yNTYsIDEwNTU4OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwY29uZmxpY3RzaV8yNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2NvbmZsaWN0X2RfNTEyLCAxMDU2MjV9LCAvLyBfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0c2lfNTEyX21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBkcGJ1c2RfMTI4LCAxMjAxNDZ9LCAvLyBfX2J1aWx0aW5faWEzMl92cGRwYnVzZDEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGRwYnVzZF8yNTYsIDEyMDE3M30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZHBidXNkMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZHBidXNkXzUxMiwgMTIwMjAwfSwgLy8gX19idWlsdGluX2lhMzJfdnBkcGJ1c2Q1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBkcGJ1c2RzXzEyOCwgMTIwMjI3fSwgLy8gX19idWlsdGluX2lhMzJfdnBkcGJ1c2RzMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZHBidXNkc18yNTYsIDEyMDI1NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZHBidXNkczI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGRwYnVzZHNfNTEyLCAxMjAyODN9LCAvLyBfX2J1aWx0aW5faWEzMl92cGRwYnVzZHM1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBkcHdzc2RfMTI4LCAxMjAzMTF9LCAvLyBfX2J1aWx0aW5faWEzMl92cGRwd3NzZDEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGRwd3NzZF8yNTYsIDEyMDMzOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZHB3c3NkMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZHB3c3NkXzUxMiwgMTIwMzY1fSwgLy8gX19idWlsdGluX2lhMzJfdnBkcHdzc2Q1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBkcHdzc2RzXzEyOCwgMTIwMzkyfSwgLy8gX19idWlsdGluX2lhMzJfdnBkcHdzc2RzMTI4Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZHB3c3Nkc18yNTYsIDEyMDQyMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZHB3c3NkczI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGRwd3NzZHNfNTEyLCAxMjA0NDh9LCAvLyBfX2J1aWx0aW5faWEzMl92cGRwd3NzZHM1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pMnZhcl9kXzEyOCwgMTIwNDc2fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcmQxMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pMnZhcl9kXzI1NiwgMTIwNTA2fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcmQyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pMnZhcl9kXzUxMiwgMTIwNTM2fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcmQ1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pMnZhcl9oaV8xMjgsIDEyMDU2Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJoaTEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGVybWkydmFyX2hpXzI1NiwgMTIwNTk3fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcmhpMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaTJ2YXJfaGlfNTEyLCAxMjA2Mjh9LCAvLyBfX2J1aWx0aW5faWEzMl92cGVybWkydmFyaGk1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pMnZhcl9wZF8xMjgsIDEyMDY1OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJwZDEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGVybWkydmFyX3BkXzI1NiwgMTIwNjkwfSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcnBkMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaTJ2YXJfcGRfNTEyLCAxMjA3MjF9LCAvLyBfX2J1aWx0aW5faWEzMl92cGVybWkydmFycGQ1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pMnZhcl9wc18xMjgsIDEyMDc1Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJwczEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGVybWkydmFyX3BzXzI1NiwgMTIwNzgzfSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcnBzMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaTJ2YXJfcHNfNTEyLCAxMjA4MTR9LCAvLyBfX2J1aWx0aW5faWEzMl92cGVybWkydmFycHM1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pMnZhcl9xXzEyOCwgMTIwODQ1fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcnExMjgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pMnZhcl9xXzI1NiwgMTIwODc1fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcnEyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pMnZhcl9xXzUxMiwgMTIwOTA1fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcnE1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pMnZhcl9xaV8xMjgsIDEyMDkzNX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJxaTEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGVybWkydmFyX3FpXzI1NiwgMTIwOTY2fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcnFpMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaTJ2YXJfcWlfNTEyLCAxMjA5OTd9LCAvLyBfX2J1aWx0aW5faWEzMl92cGVybWkydmFycWk1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBlcm1pbDJwZCwgMTMwMDg4fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pbDJwZAotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cGVybWlsMnBkXzI1NiwgMTMwMTE0fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pbDJwZDI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cGVybWlsMnBzLCAxMzAxNDN9LCAvLyBfX2J1aWx0aW5faWEzMl92cGVybWlsMnBzCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwZXJtaWwycHNfMjU2LCAxMzAxNjl9LCAvLyBfX2J1aWx0aW5faWEzMl92cGVybWlsMnBzMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3ZwZXJtaWx2YXJfcGQsIDEwMDcxMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaWx2YXJwZAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92cGVybWlsdmFyX3BkXzI1NiwgMTAwNzM4fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pbHZhcnBkMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaWx2YXJfcGRfNTEyLCAxMjEwMjh9LCAvLyBfX2J1aWx0aW5faWEzMl92cGVybWlsdmFycGQ1MTIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfdnBlcm1pbHZhcl9wcywgMTAwNzY5fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pbHZhcnBzCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3ZwZXJtaWx2YXJfcHNfMjU2LCAxMDA3OTd9LCAvLyBfX2J1aWx0aW5faWEzMl92cGVybWlsdmFycHMyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pbHZhcl9wc181MTIsIDEyMTA1OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaWx2YXJwczUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cGhhZGRiZCwgMTMwMTk4fSwgLy8gX19idWlsdGluX2lhMzJfdnBoYWRkYmQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBoYWRkYnEsIDEzMDIyMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwaGFkZGJxCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwaGFkZGJ3LCAxMzAyNDZ9LCAvLyBfX2J1aWx0aW5faWEzMl92cGhhZGRidwotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cGhhZGRkcSwgMTMwMjcwfSwgLy8gX19idWlsdGluX2lhMzJfdnBoYWRkZHEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBoYWRkdWJkLCAxMzAyOTR9LCAvLyBfX2J1aWx0aW5faWEzMl92cGhhZGR1YmQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBoYWRkdWJxLCAxMzAzMTl9LCAvLyBfX2J1aWx0aW5faWEzMl92cGhhZGR1YnEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBoYWRkdWJ3LCAxMzAzNDR9LCAvLyBfX2J1aWx0aW5faWEzMl92cGhhZGR1YncKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBoYWRkdWRxLCAxMzAzNjl9LCAvLyBfX2J1aWx0aW5faWEzMl92cGhhZGR1ZHEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBoYWRkdXdkLCAxMzAzOTR9LCAvLyBfX2J1aWx0aW5faWEzMl92cGhhZGR1d2QKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBoYWRkdXdxLCAxMzA0MTl9LCAvLyBfX2J1aWx0aW5faWEzMl92cGhhZGR1d3EKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBoYWRkd2QsIDEzMDQ0NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwaGFkZHdkCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwaGFkZHdxLCAxMzA0Njh9LCAvLyBfX2J1aWx0aW5faWEzMl92cGhhZGR3cQotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cGhzdWJidywgMTMwNDkyfSwgLy8gX19idWlsdGluX2lhMzJfdnBoc3ViYncKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBoc3ViZHEsIDEzMDUxNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwaHN1YmRxCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwaHN1YndkLCAxMzA1NDB9LCAvLyBfX2J1aWx0aW5faWEzMl92cGhzdWJ3ZAotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cG1hY3NkZCwgMTMwNTY0fSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWNzZGQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBtYWNzZHFoLCAxMzA1ODh9LCAvLyBfX2J1aWx0aW5faWEzMl92cG1hY3NkcWgKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBtYWNzZHFsLCAxMzA2MTN9LCAvLyBfX2J1aWx0aW5faWEzMl92cG1hY3NkcWwKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBtYWNzc2RkLCAxMzA2Mzh9LCAvLyBfX2J1aWx0aW5faWEzMl92cG1hY3NzZGQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBtYWNzc2RxaCwgMTMwNjYzfSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWNzc2RxaAotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cG1hY3NzZHFsLCAxMzA2ODl9LCAvLyBfX2J1aWx0aW5faWEzMl92cG1hY3NzZHFsCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwbWFjc3N3ZCwgMTMwNzE1fSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWNzc3dkCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwbWFjc3N3dywgMTMwNzQwfSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWNzc3d3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwbWFjc3dkLCAxMzA3NjV9LCAvLyBfX2J1aWx0aW5faWEzMl92cG1hY3N3ZAotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cG1hY3N3dywgMTMwNzg5fSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWNzd3cKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBtYWRjc3N3ZCwgMTMwODEzfSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWRjc3N3ZAotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cG1hZGNzd2QsIDEzMDgzOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwbWFkY3N3ZAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cG1hZGQ1MmhfdXFfMTI4LCAxMjEwOTB9LCAvLyBfX2J1aWx0aW5faWEzMl92cG1hZGQ1Mmh1cTEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cG1hZGQ1MmhfdXFfMjU2LCAxMjExMjB9LCAvLyBfX2J1aWx0aW5faWEzMl92cG1hZGQ1Mmh1cTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cG1hZGQ1MmhfdXFfNTEyLCAxMjExNTB9LCAvLyBfX2J1aWx0aW5faWEzMl92cG1hZGQ1Mmh1cTUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cG1hZGQ1MmxfdXFfMTI4LCAxMjExODB9LCAvLyBfX2J1aWx0aW5faWEzMl92cG1hZGQ1Mmx1cTEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cG1hZGQ1MmxfdXFfMjU2LCAxMjEyMTB9LCAvLyBfX2J1aWx0aW5faWEzMl92cG1hZGQ1Mmx1cTI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cG1hZGQ1MmxfdXFfNTEyLCAxMjEyNDB9LCAvLyBfX2J1aWx0aW5faWEzMl92cG1hZGQ1Mmx1cTUxMgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3BtdWx0aXNoaWZ0X3FiXzEyOCwgMTEyNzEwfSwgLy8gX19idWlsdGluX2lhMzJfdnBtdWx0aXNoaWZ0cWIxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3BtdWx0aXNoaWZ0X3FiXzI1NiwgMTEyNzQ4fSwgLy8gX19idWlsdGluX2lhMzJfdnBtdWx0aXNoaWZ0cWIyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3BtdWx0aXNoaWZ0X3FiXzUxMiwgMTEyNzg2fSwgLy8gX19idWlsdGluX2lhMzJfdnBtdWx0aXNoaWZ0cWI1MTJfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cHBlcm0sIDEzMDg2NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwcGVybQotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cHJvdGIsIDEzMDg4Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwcm90YgotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cHJvdGJpLCAxMzA5MDh9LCAvLyBfX2J1aWx0aW5faWEzMl92cHJvdGJpCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3Zwcm90ZCwgMTMwOTMxfSwgLy8gX19idWlsdGluX2lhMzJfdnByb3RkCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3Zwcm90ZGksIDEzMDk1M30sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwcm90ZGkKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnByb3RxLCAxMzA5NzZ9LCAvLyBfX2J1aWx0aW5faWEzMl92cHJvdHEKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnByb3RxaSwgMTMwOTk4fSwgLy8gX19idWlsdGluX2lhMzJfdnByb3RxaQotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cHJvdHcsIDEzMTAyMX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwcm90dwotICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cHJvdHdpLCAxMzEwNDN9LCAvLyBfX2J1aWx0aW5faWEzMl92cHJvdHdpCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3Zwc2hhYiwgMTMxMDY2fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGFiCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3Zwc2hhZCwgMTMxMDg4fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGFkCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3Zwc2hhcSwgMTMxMTEwfSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGFxCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3Zwc2hhdywgMTMxMTMyfSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGF3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3Zwc2hsYiwgMTMxMTU0fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGxiCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3Zwc2hsZCwgMTMxMTc2fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGxkCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Zwc2hsZF9kXzEyOCwgMTIxMjcwfSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGxkZDEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cHNobGRfZF8yNTYsIDEyMTI5Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hsZGQyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBzaGxkX2RfNTEyLCAxMjEzMjJ9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNobGRkNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Zwc2hsZF9xXzEyOCwgMTIxMzQ4fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGxkcTEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cHNobGRfcV8yNTYsIDEyMTM3NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHEyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBzaGxkX3FfNTEyLCAxMjE0MDB9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNobGRxNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfdnBzaGxkdl9kXzEyOCwgMTE0MTI4fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGxkdmQxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrel92cHNobGR2X2RfMTI4LCAxMTUwODZ9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNobGR2ZDEyOF9tYXNregotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Zwc2hsZHZfZF8yNTYsIDExNDE2MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZkMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza3pfdnBzaGxkdl9kXzI1NiwgMTE1MTE5fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGxkdmQyNTZfbWFza3oKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza192cHNobGR2X2RfNTEyLCAxMTQxOTJ9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNobGR2ZDUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X3Zwc2hsZHZfZF81MTIsIDExNTE1Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZkNTEyX21hc2t6Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfdnBzaGxkdl9xXzEyOCwgMTE0MjI0fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGxkdnExMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrel92cHNobGR2X3FfMTI4LCAxMTUxODV9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNobGR2cTEyOF9tYXNregotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Zwc2hsZHZfcV8yNTYsIDExNDI1Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZxMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza3pfdnBzaGxkdl9xXzI1NiwgMTE1MjE4fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGxkdnEyNTZfbWFza3oKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza192cHNobGR2X3FfNTEyLCAxMTQyODh9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNobGR2cTUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X3Zwc2hsZHZfcV81MTIsIDExNTI1MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZxNTEyX21hc2t6Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfdnBzaGxkdl93XzEyOCwgMTE0MzIwfSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGxkdncxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrel92cHNobGR2X3dfMTI4LCAxMTUyODR9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNobGR2dzEyOF9tYXNregotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Zwc2hsZHZfd18yNTYsIDExNDM1Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZ3MjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza3pfdnBzaGxkdl93XzI1NiwgMTE1MzE3fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGxkdncyNTZfbWFza3oKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza192cHNobGR2X3dfNTEyLCAxMTQzODR9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNobGR2dzUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X3Zwc2hsZHZfd181MTIsIDExNTM1MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZ3NTEyX21hc2t6Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Zwc2hsZF93XzEyOCwgMTIxNDI2fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGxkdzEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cHNobGRfd18yNTYsIDEyMTQ1Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hsZHcyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBzaGxkX3dfNTEyLCAxMjE0Nzh9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNobGR3NTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3Zwc2hscSwgMTMxMTk4fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGxxCi0gICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3Zwc2hsdywgMTMxMjIwfSwgLy8gX19idWlsdGluX2lhMzJfdnBzaGx3Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Zwc2hyZF9kXzEyOCwgMTIxNTA0fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaHJkZDEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cHNocmRfZF8yNTYsIDEyMTUzMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hyZGQyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBzaHJkX2RfNTEyLCAxMjE1NTZ9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNocmRkNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Zwc2hyZF9xXzEyOCwgMTIxNTgyfSwgLy8gX19idWlsdGluX2lhMzJfdnBzaHJkcTEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cHNocmRfcV8yNTYsIDEyMTYwOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hyZHEyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBzaHJkX3FfNTEyLCAxMjE2MzR9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNocmRxNTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfdnBzaHJkdl9kXzEyOCwgMTE0NDE2fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaHJkdmQxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrel92cHNocmR2X2RfMTI4LCAxMTUzODN9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNocmR2ZDEyOF9tYXNregotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Zwc2hyZHZfZF8yNTYsIDExNDQ0OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZkMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza3pfdnBzaHJkdl9kXzI1NiwgMTE1NDE2fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaHJkdmQyNTZfbWFza3oKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza192cHNocmR2X2RfNTEyLCAxMTQ0ODB9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNocmR2ZDUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X3Zwc2hyZHZfZF81MTIsIDExNTQ0OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZkNTEyX21hc2t6Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfdnBzaHJkdl9xXzEyOCwgMTE0NTEyfSwgLy8gX19idWlsdGluX2lhMzJfdnBzaHJkdnExMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrel92cHNocmR2X3FfMTI4LCAxMTU0ODJ9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNocmR2cTEyOF9tYXNregotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Zwc2hyZHZfcV8yNTYsIDExNDU0NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZxMjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza3pfdnBzaHJkdl9xXzI1NiwgMTE1NTE1fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaHJkdnEyNTZfbWFza3oKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza192cHNocmR2X3FfNTEyLCAxMTQ1NzZ9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNocmR2cTUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X3Zwc2hyZHZfcV81MTIsIDExNTU0OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZxNTEyX21hc2t6Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfdnBzaHJkdl93XzEyOCwgMTE0NjA4fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaHJkdncxMjhfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrel92cHNocmR2X3dfMTI4LCAxMTU1ODF9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNocmR2dzEyOF9tYXNregotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Zwc2hyZHZfd18yNTYsIDExNDY0MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZ3MjU2X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza3pfdnBzaHJkdl93XzI1NiwgMTE1NjE0fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaHJkdncyNTZfbWFza3oKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza192cHNocmR2X3dfNTEyLCAxMTQ2NzJ9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNocmR2dzUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X3Zwc2hyZHZfd181MTIsIDExNTY0N30sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZ3NTEyX21hc2t6Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Zwc2hyZF93XzEyOCwgMTIxNjYwfSwgLy8gX19idWlsdGluX2lhMzJfdnBzaHJkdzEyOAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cHNocmRfd18yNTYsIDEyMTY4Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2hyZHcyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBzaHJkX3dfNTEyLCAxMjE3MTJ9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNocmR3NTEyCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfdnBzaHVmYml0cW1iXzEyOCwgMTE0NzA0fSwgLy8gX19idWlsdGluX2lhMzJfdnBzaHVmYml0cW1iMTI4X21hc2sKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza192cHNodWZiaXRxbWJfMjU2LCAxMTQ3NDB9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNodWZiaXRxbWIyNTZfbWFzawotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Zwc2h1ZmJpdHFtYl81MTIsIDExNDc3Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Zwc2h1ZmJpdHFtYjUxMl9tYXNrCi0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3Z0ZXN0Y19wZCwgMTAwODI4fSwgLy8gX19idWlsdGluX2lhMzJfdnRlc3RjcGQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfdnRlc3RjX3BkXzI1NiwgMTAwODUyfSwgLy8gX19idWlsdGluX2lhMzJfdnRlc3RjcGQyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfdnRlc3RjX3BzLCAxMDA4Nzl9LCAvLyBfX2J1aWx0aW5faWEzMl92dGVzdGNwcwotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92dGVzdGNfcHNfMjU2LCAxMDA5MDN9LCAvLyBfX2J1aWx0aW5faWEzMl92dGVzdGNwczI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92dGVzdG56Y19wZCwgMTAwOTMwfSwgLy8gX19idWlsdGluX2lhMzJfdnRlc3RuemNwZAotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92dGVzdG56Y19wZF8yNTYsIDEwMDk1Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0bnpjcGQyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfdnRlc3RuemNfcHMsIDEwMDk4NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0bnpjcHMKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfdnRlc3RuemNfcHNfMjU2LCAxMDEwMTF9LCAvLyBfX2J1aWx0aW5faWEzMl92dGVzdG56Y3BzMjU2Ci0gICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3Z0ZXN0el9wZCwgMTAxMDQwfSwgLy8gX19idWlsdGluX2lhMzJfdnRlc3R6cGQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfdnRlc3R6X3BkXzI1NiwgMTAxMDY0fSwgLy8gX19idWlsdGluX2lhMzJfdnRlc3R6cGQyNTYKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfdnRlc3R6X3BzLCAxMDEwOTF9LCAvLyBfX2J1aWx0aW5faWEzMl92dGVzdHpwcwotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92dGVzdHpfcHNfMjU2LCAxMDExMTV9LCAvLyBfX2J1aWx0aW5faWEzMl92dGVzdHpwczI1NgotICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92emVyb2FsbCwgMTAxMTQyfSwgLy8gX19idWlsdGluX2lhMzJfdnplcm9hbGwKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfdnplcm91cHBlciwgMTAxMTY2fSwgLy8gX19idWlsdGluX2lhMzJfdnplcm91cHBlcgotICAgICAge0ludHJpbnNpYzo6eDg2X3diaW52ZCwgMTI5NDQyfSwgLy8gX19idWlsdGluX2lhMzJfd2JpbnZkCi0gICAgICB7SW50cmluc2ljOjp4ODZfd2Jub2ludmQsIDEyOTQ2NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3dibm9pbnZkCi0gICAgICB7SW50cmluc2ljOjp4ODZfd3Jmc2Jhc2VfMzIsIDEyOTQ4OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3dyZnNiYXNlMzIKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl93cmZzYmFzZV82NCwgMTI5NTE0fSwgLy8gX19idWlsdGluX2lhMzJfd3Jmc2Jhc2U2NAotICAgICAge0ludHJpbnNpYzo6eDg2X3dyZ3NiYXNlXzMyLCAxMjk1NDB9LCAvLyBfX2J1aWx0aW5faWEzMl93cmdzYmFzZTMyCi0gICAgICB7SW50cmluc2ljOjp4ODZfd3Jnc2Jhc2VfNjQsIDEyOTU2Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3dyZ3NiYXNlNjQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl9mbGFnc193cml0ZV91MzIsIDEyMjE2NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3dyaXRlZWZsYWdzX3UzMgotICAgICAge0ludHJpbnNpYzo6eDg2X2ZsYWdzX3dyaXRlX3U2NCwgMTIyMTk1fSwgLy8gX19idWlsdGluX2lhMzJfd3JpdGVlZmxhZ3NfdTY0Ci0gICAgICB7SW50cmluc2ljOjp4ODZfd3Jwa3J1LCAxMjk1OTJ9LCAvLyBfX2J1aWx0aW5faWEzMl93cnBrcnUKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl93cnNzZCwgMTI5NjE0fSwgLy8gX19idWlsdGluX2lhMzJfd3Jzc2QKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl93cnNzcSwgMTI5NjM1fSwgLy8gX19idWlsdGluX2lhMzJfd3Jzc3EKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl93cnVzc2QsIDEyOTY1Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3dydXNzZAotICAgICAge0ludHJpbnNpYzo6eDg2X3dydXNzcSwgMTI5Njc4fSwgLy8gX19idWlsdGluX2lhMzJfd3J1c3NxCi0gICAgICB7SW50cmluc2ljOjp4ODZfeGFib3J0LCAxMjk3MDB9LCAvLyBfX2J1aWx0aW5faWEzMl94YWJvcnQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94YmVnaW4sIDEyOTcyMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3hiZWdpbgotICAgICAge0ludHJpbnNpYzo6eDg2X3hlbmQsIDEyOTc0NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3hlbmQKLSAgICAgIHtJbnRyaW5zaWM6Ong4Nl94dGVzdCwgMTMxMjQyfSwgLy8gX19idWlsdGluX2lhMzJfeHRlc3QKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfYWRkX3BkXzUxMiwgMTA0Nzg0fSwgLy8gX19idWlsdGluX2lhMzJfYWRkcGQ1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfYWRkX3BzXzUxMiwgMTA0ODA4fSwgLy8gX19idWlsdGluX2lhMzJfYWRkcHM1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19hZGRfc2Rfcm91bmQsIDEwNTg4Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX2FkZHNkX3JvdW5kX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19hZGRfc3Nfcm91bmQsIDEwNTkxNH0sIC8vIF9fYnVpbHRpbl9pYTMyX2FkZHNzX3JvdW5kX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UzX2FkZHN1Yl9wZCwgMTIzMjE2fSwgLy8gX19idWlsdGluX2lhMzJfYWRkc3VicGQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfYWRkc3ViX3BkXzI1NiwgMTAxNDI0fSwgLy8gX19idWlsdGluX2lhMzJfYWRkc3VicGQyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UzX2FkZHN1Yl9wcywgMTIzMjQwfSwgLy8gX19idWlsdGluX2lhMzJfYWRkc3VicHMKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfYWRkc3ViX3BzXzI1NiwgMTAxNDUxfSwgLy8gX19idWlsdGluX2lhMzJfYWRkc3VicHMyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hZXNuaV9hZXNkZWMsIDEwMTA0MX0sIC8vIF9fYnVpbHRpbl9pYTMyX2Flc2RlYzEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2Flc25pX2Flc2RlY18yNTYsIDEwMTA2Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX2Flc2RlYzI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2Flc25pX2Flc2RlY181MTIsIDEwMTA5MX0sIC8vIF9fYnVpbHRpbl9pYTMyX2Flc2RlYzUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X2Flc25pX2Flc2RlY2xhc3QsIDEwMTExNn0sIC8vIF9fYnVpbHRpbl9pYTMyX2Flc2RlY2xhc3QxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hZXNuaV9hZXNkZWNsYXN0XzI1NiwgMTAxMTQ1fSwgLy8gX19idWlsdGluX2lhMzJfYWVzZGVjbGFzdDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2Flc25pX2Flc2RlY2xhc3RfNTEyLCAxMDExNzR9LCAvLyBfX2J1aWx0aW5faWEzMl9hZXNkZWNsYXN0NTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYWVzbmlfYWVzZW5jLCAxMDEyMDN9LCAvLyBfX2J1aWx0aW5faWEzMl9hZXNlbmMxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hZXNuaV9hZXNlbmNfMjU2LCAxMDEyMjh9LCAvLyBfX2J1aWx0aW5faWEzMl9hZXNlbmMyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hZXNuaV9hZXNlbmNfNTEyLCAxMDEyNTN9LCAvLyBfX2J1aWx0aW5faWEzMl9hZXNlbmM1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hZXNuaV9hZXNlbmNsYXN0LCAxMDEyNzh9LCAvLyBfX2J1aWx0aW5faWEzMl9hZXNlbmNsYXN0MTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYWVzbmlfYWVzZW5jbGFzdF8yNTYsIDEwMTMwN30sIC8vIF9fYnVpbHRpbl9pYTMyX2Flc2VuY2xhc3QyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hZXNuaV9hZXNlbmNsYXN0XzUxMiwgMTAxMzM2fSwgLy8gX19idWlsdGluX2lhMzJfYWVzZW5jbGFzdDUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X2Flc25pX2Flc2ltYywgMTAxMzY1fSwgLy8gX19idWlsdGluX2lhMzJfYWVzaW1jMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYWVzbmlfYWVza2V5Z2VuYXNzaXN0LCAxMDEzOTB9LCAvLyBfX2J1aWx0aW5faWEzMl9hZXNrZXlnZW5hc3Npc3QxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9ibWlfYmV4dHJfMzIsIDExNzk3OH0sIC8vIF9fYnVpbHRpbl9pYTMyX2JleHRyX3UzMgorICAgICAge0ludHJpbnNpYzo6eDg2X2JtaV9iZXh0cl82NCwgMTE4MDAzfSwgLy8gX19idWlsdGluX2lhMzJfYmV4dHJfdTY0CisgICAgICB7SW50cmluc2ljOjp4ODZfdGJtX2JleHRyaV91MzIsIDEyNTAzNX0sIC8vIF9fYnVpbHRpbl9pYTMyX2JleHRyaV91MzIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl90Ym1fYmV4dHJpX3U2NCwgMTI1MDYxfSwgLy8gX19idWlsdGluX2lhMzJfYmV4dHJpX3U2NAorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQxX2JsZW5kdnBkLCAxMjM0MTd9LCAvLyBfX2J1aWx0aW5faWEzMl9ibGVuZHZwZAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9ibGVuZHZfcGRfMjU2LCAxMDE0Nzh9LCAvLyBfX2J1aWx0aW5faWEzMl9ibGVuZHZwZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQxX2JsZW5kdnBzLCAxMjM0NDF9LCAvLyBfX2J1aWx0aW5faWEzMl9ibGVuZHZwcworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9ibGVuZHZfcHNfMjU2LCAxMDE1MDV9LCAvLyBfX2J1aWx0aW5faWEzMl9ibGVuZHZwczI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9icm9hZGNhc3RtYl8xMjgsIDEwNDgzMn0sIC8vIF9fYnVpbHRpbl9pYTMyX2Jyb2FkY2FzdG1iMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2Jyb2FkY2FzdG1iXzI1NiwgMTA0ODYyfSwgLy8gX19idWlsdGluX2lhMzJfYnJvYWRjYXN0bWIyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfYnJvYWRjYXN0bWJfNTEyLCAxMDQ4OTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9icm9hZGNhc3RtYjUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9icm9hZGNhc3Rtd18xMjgsIDEwNDkyMn0sIC8vIF9fYnVpbHRpbl9pYTMyX2Jyb2FkY2FzdG13MTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2Jyb2FkY2FzdG13XzI1NiwgMTA0OTUyfSwgLy8gX19idWlsdGluX2lhMzJfYnJvYWRjYXN0bXcyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfYnJvYWRjYXN0bXdfNTEyLCAxMDQ5ODJ9LCAvLyBfX2J1aWx0aW5faWEzMl9icm9hZGNhc3RtdzUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X2JtaV9iemhpXzY0LCAxMTgwNTF9LCAvLyBfX2J1aWx0aW5faWEzMl9iemhpX2RpCisgICAgICB7SW50cmluc2ljOjp4ODZfYm1pX2J6aGlfMzIsIDExODAyOH0sIC8vIF9fYnVpbHRpbl9pYTMyX2J6aGlfc2kKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9jbGRlbW90ZSwgMTE4MTY2fSwgLy8gX19idWlsdGluX2lhMzJfY2xkZW1vdGUKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX2NsZmx1c2gsIDEyMTgyN30sIC8vIF9fYnVpbHRpbl9pYTMyX2NsZmx1c2gKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9jbGZsdXNob3B0LCAxMTgxOTB9LCAvLyBfX2J1aWx0aW5faWEzMl9jbGZsdXNob3B0CisgICAgICB7SW50cmluc2ljOjp4ODZfY2xyc3Nic3ksIDExODIxNn0sIC8vIF9fYnVpbHRpbl9pYTMyX2NscnNzYnN5CisgICAgICB7SW50cmluc2ljOjp4ODZfY2x3YiwgMTE4MjQwfSwgLy8gX19idWlsdGluX2lhMzJfY2x3YgorICAgICAge0ludHJpbnNpYzo6eDg2X2NsemVybywgMTE4MjYwfSwgLy8gX19idWlsdGluX2lhMzJfY2x6ZXJvCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9jbXBfc2QsIDEyMTg1MH0sIC8vIF9fYnVpbHRpbl9pYTMyX2NtcHNkCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY21wX3NkLCAxMDU5NDZ9LCAvLyBfX2J1aWx0aW5faWEzMl9jbXBzZF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlX2NtcF9zcywgMTIxMDQ2fSwgLy8gX19idWlsdGluX2lhMzJfY21wc3MKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jbXBfc3MsIDEwNTk3Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX2NtcHNzX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY29taWVxX3NzLCAxMjEwNjd9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pZXEKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY29taWdlX3NzLCAxMjEwODl9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pZ2UKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY29taWd0X3NzLCAxMjExMTF9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pZ3QKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY29taWxlX3NzLCAxMjExMzN9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pbGUKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY29taWx0X3NzLCAxMjExNTV9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pbHQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY29taW5lcV9zcywgMTIxMTc3fSwgLy8gX19idWlsdGluX2lhMzJfY29taW5lcQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY29taWVxX3NkLCAxMjE4NzF9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pc2RlcQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY29taWdlX3NkLCAxMjE4OTV9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pc2RnZQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY29taWd0X3NkLCAxMjE5MTl9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pc2RndAorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY29taWxlX3NkLCAxMjE5NDN9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pc2RsZQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY29taWx0X3NkLCAxMjE5Njd9LCAvLyBfX2J1aWx0aW5faWEzMl9jb21pc2RsdAorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY29taW5lcV9zZCwgMTIxOTkxfSwgLy8gX19idWlsdGluX2lhMzJfY29taXNkbmVxCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDJfY3JjMzJfNjRfNjQsIDEyMzg3OX0sIC8vIF9fYnVpbHRpbl9pYTMyX2NyYzMyZGkKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0Ml9jcmMzMl8zMl8xNiwgMTIzODEwfSwgLy8gX19idWlsdGluX2lhMzJfY3JjMzJoaQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQyX2NyYzMyXzMyXzgsIDEyMzg1Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX2NyYzMycWkKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0Ml9jcmMzMl8zMl8zMiwgMTIzODMzfSwgLy8gX19idWlsdGluX2lhMzJfY3JjMzJzaQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY3Z0cGQyZHEsIDEyMjAxNn0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBkMmRxCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0cGQyZHFfMTI4LCAxMDU5OTh9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwZDJkcTEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X2N2dF9wZDJkcV8yNTYsIDEwMTU1OX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBkMmRxMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0cGQyZHFfNTEyLCAxMDYwMzB9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwZDJkcTUxMl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlX2N2dHBkMnBpLCAxMjEyMDB9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwZDJwaQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY3Z0cGQycHMsIDEyMjA0MH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnBzCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X2N2dF9wZDJfcHNfMjU2LCAxMDE1MzJ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwZDJwczI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBkMnBzXzUxMiwgMTA2MDkxfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cGQycHM1MTJfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBkMnBzLCAxMDYwNjJ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwZDJwc19tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0cGQycXFfMTI4LCAxMDYxMjN9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwZDJxcTEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0cGQycXFfMjU2LCAxMDYxNTV9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwZDJxcTI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0cGQycXFfNTEyLCAxMDYxODd9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwZDJxcTUxMl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0cGQydWRxXzEyOCwgMTA2MjE5fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cGQydWRxMTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwZDJ1ZHFfMjU2LCAxMDYyNTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwZDJ1ZHEyNTZfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBkMnVkcV81MTIsIDEwNjI4NX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnVkcTUxMl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0cGQydXFxXzEyOCwgMTA2MzE4fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cGQydXFxMTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwZDJ1cXFfMjU2LCAxMDYzNTF9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwZDJ1cXEyNTZfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBkMnVxcV81MTIsIDEwNjM4NH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBkMnVxcTUxMl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlX2N2dHBpMnBkLCAxMjEyMjR9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwaTJwZAorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9jdnRwaTJwcywgMTIxMjQ4fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cGkycHMKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX2N2dHBzMmRxLCAxMjIwNjR9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwczJkcQorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBzMmRxXzEyOCwgMTA2NDE3fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cHMyZHExMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9jdnRfcHMyZHFfMjU2LCAxMDE1ODZ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwczJkcTI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBzMmRxXzI1NiwgMTA2NDQ5fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cHMyZHEyNTZfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBzMmRxXzUxMiwgMTA2NDgxfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cHMyZHE1MTJfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBzMnBkXzUxMiwgMTA2NTEzfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cHMycGQ1MTJfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9jdnRwczJwaSwgMTIxMjcyfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cHMycGkKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwczJxcV8xMjgsIDEwNjU0NX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnFxMTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwczJxcV8yNTYsIDEwNjU3N30sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnFxMjU2X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwczJxcV81MTIsIDEwNjYwOX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnFxNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwczJ1ZHFfMTI4LCAxMDY2NDF9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwczJ1ZHExMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBzMnVkcV8yNTYsIDEwNjY3NH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnVkcTI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0cHMydWRxXzUxMiwgMTA2NzA3fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cHMydWRxNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRwczJ1cXFfMTI4LCAxMDY3NDB9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRwczJ1cXExMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHBzMnVxcV8yNTYsIDEwNjc3M30sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHBzMnVxcTI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0cHMydXFxXzUxMiwgMTA2ODA2fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0cHMydXFxNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRxcTJwc18xMjgsIDEwNjgzOX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHFxMnBzMTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX2N2dHNkMnNpLCAxMjIwODh9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRzZDJzaQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY3Z0c2Qyc2k2NCwgMTIyMTEyfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0c2Qyc2k2NAorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY3Z0c2Qyc3MsIDEyMjEzOH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHNkMnNzCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0c2Qyc3Nfcm91bmQsIDEwNjg3MX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHNkMnNzX3JvdW5kX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfY3Z0c2kyc2Q2NCwgMTA1MjA0fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0c2kyc2Q2NAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9jdnRzaTJzczMyLCAxMDUyMzB9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnRzaTJzczMyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2N2dHNpMnNzNjQsIDEwNTI1Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHNpMnNzNjQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnRzczJzZF9yb3VuZCwgMTA2OTA2fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0c3Myc2Rfcm91bmRfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9jdnRzczJzaSwgMTIxMjk2fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0c3Myc2kKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY3Z0c3Myc2k2NCwgMTIxMzIwfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0c3Myc2k2NAorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY3Z0dHBkMmRxLCAxMjIxNjJ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHEKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cGQyZHFfMTI4LCAxMDY5NDF9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cGQyZHExMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9jdnR0X3BkMmRxXzI1NiwgMTAxNjEzfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBkMmRxMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dHBkMmRxXzUxMiwgMTA2OTc0fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBkMmRxNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfY3Z0dHBkMnBpLCAxMjEzNDZ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cGQycGkKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cGQycXFfMTI4LCAxMDcwMDd9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cGQycXExMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHRwZDJxcV8yNTYsIDEwNzA0MH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJxcTI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dHBkMnFxXzUxMiwgMTA3MDczfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBkMnFxNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cGQydWRxXzEyOCwgMTA3MTA2fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBkMnVkcTEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dHBkMnVkcV8yNTYsIDEwNzE0MH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJ1ZHEyNTZfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHRwZDJ1ZHFfNTEyLCAxMDcxNzR9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cGQydWRxNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cGQydXFxXzEyOCwgMTA3MjA4fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBkMnVxcTEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dHBkMnVxcV8yNTYsIDEwNzI0Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRwZDJ1cXEyNTZfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHRwZDJ1cXFfNTEyLCAxMDcyNzZ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cGQydXFxNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX2N2dHRwczJkcSwgMTIyMTg3fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBzMmRxCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X2N2dHRfcHMyZHFfMjU2LCAxMDE2NDF9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cHMyZHEyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cHMyZHFfNTEyLCAxMDczMTB9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cHMyZHE1MTJfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9jdnR0cHMycGksIDEyMTM3MX0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJwaQorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHRwczJxcV8xMjgsIDEwNzM0M30sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJxcTEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dHBzMnFxXzI1NiwgMTA3Mzc2fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBzMnFxMjU2X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cHMycXFfNTEyLCAxMDc0MDl9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cHMycXE1MTJfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHRwczJ1ZHFfMTI4LCAxMDc0NDJ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cHMydWRxMTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cHMydWRxXzI1NiwgMTA3NDc2fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBzMnVkcTI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dHBzMnVkcV81MTIsIDEwNzUxMH0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJ1ZHE1MTJfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2N2dHRwczJ1cXFfMTI4LCAxMDc1NDR9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0cHMydXFxMTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR0cHMydXFxXzI1NiwgMTA3NTc4fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHBzMnVxcTI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfY3Z0dHBzMnVxcV81MTIsIDEwNzYxMn0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRwczJ1cXE1MTJfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfY3Z0dHNkMnNpLCAxMjIyMTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0c2Qyc2kKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX2N2dHRzZDJzaTY0LCAxMjIyMzd9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR0c2Qyc2k2NAorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9jdnR0c3Myc2ksIDEyMTM5Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX2N2dHRzczJzaQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9jdnR0c3Myc2k2NCwgMTIxNDIxfSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dHNzMnNpNjQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19jdnR1cXEycHNfMTI4LCAxMDc2NDZ9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR1cXEycHMxMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9jdnR1c2k2NDJzZCwgMTA1NTM3fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dXNpMnNkNjQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfY3Z0dXNpMnNzLCAxMDU1MTB9LCAvLyBfX2J1aWx0aW5faWEzMl9jdnR1c2kyc3MzMgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9jdnR1c2k2NDJzcywgMTA1NTY0fSwgLy8gX19idWlsdGluX2lhMzJfY3Z0dXNpMnNzNjQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfZGJwc2FkYndfMTI4LCAxMDU1OTF9LCAvLyBfX2J1aWx0aW5faWEzMl9kYnBzYWRidzEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9kYnBzYWRid18yNTYsIDEwNTYxOH0sIC8vIF9fYnVpbHRpbl9pYTMyX2RicHNhZGJ3MjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2RicHNhZGJ3XzUxMiwgMTA1NjQ1fSwgLy8gX19idWlsdGluX2lhMzJfZGJwc2FkYnc1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9kaXJlY3RzdG9yZTMyLCAxMTgyODJ9LCAvLyBfX2J1aWx0aW5faWEzMl9kaXJlY3RzdG9yZV91MzIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9kaXJlY3RzdG9yZTY0LCAxMTgzMTN9LCAvLyBfX2J1aWx0aW5faWEzMl9kaXJlY3RzdG9yZV91NjQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfZGl2X3BkXzUxMiwgMTA1NjcyfSwgLy8gX19idWlsdGluX2lhMzJfZGl2cGQ1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfZGl2X3BzXzUxMiwgMTA1Njk2fSwgLy8gX19idWlsdGluX2lhMzJfZGl2cHM1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19kaXZfc2Rfcm91bmQsIDEwNzY3OX0sIC8vIF9fYnVpbHRpbl9pYTMyX2RpdnNkX3JvdW5kX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19kaXZfc3Nfcm91bmQsIDEwNzcxMX0sIC8vIF9fYnVpbHRpbl9pYTMyX2RpdnNzX3JvdW5kX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0MV9kcHBkLCAxMjM0NjV9LCAvLyBfX2J1aWx0aW5faWEzMl9kcHBkCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDFfZHBwcywgMTIzNDg1fSwgLy8gX19idWlsdGluX2lhMzJfZHBwcworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9kcF9wc18yNTYsIDEwMTY2OX0sIC8vIF9fYnVpbHRpbl9pYTMyX2RwcHMyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfZW1tcywgMTE4NzQ3fSwgLy8gX19idWlsdGluX2lhMzJfZW1tcworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9leHAyX3BkLCAxMDU3MjB9LCAvLyBfX2J1aWx0aW5faWEzMl9leHAycGRfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9leHAyX3BzLCAxMDU3NDd9LCAvLyBfX2J1aWx0aW5faWEzMl9leHAycHNfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTRhX2V4dHJxLCAxMjQzMDR9LCAvLyBfX2J1aWx0aW5faWEzMl9leHRycQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTRhX2V4dHJxaSwgMTI0MzI1fSwgLy8gX19idWlsdGluX2lhMzJfZXh0cnFpCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X2ZlbW1zLCAxMTg3Njd9LCAvLyBfX2J1aWx0aW5faWEzMl9mZW1tcworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3BkXzEyOCwgMTA3NzQzfSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3BkXzEyOCwgMTEzNDAzfSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDEyOF9tYXNregorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3BkXzI1NiwgMTA3Nzc3fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3BkXzI1NiwgMTEzNDM4fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDI1Nl9tYXNregorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3BkXzUxMiwgMTA3ODExfSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDUxMl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3BkXzUxMiwgMTEzNDczfSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wZDUxMl9tYXNregorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3BzXzEyOCwgMTA3ODQ1fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wczEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3BzXzEyOCwgMTEzNTA4fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wczEyOF9tYXNregorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3BzXzI1NiwgMTA3ODc5fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wczI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3BzXzI1NiwgMTEzNTQzfSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wczI1Nl9tYXNregorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3BzXzUxMiwgMTA3OTEzfSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wczUxMl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3BzXzUxMiwgMTEzNTc4fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1wczUxMl9tYXNregorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2ZpeHVwaW1tX3NkLCAxMDc5NDd9LCAvLyBfX2J1aWx0aW5faWEzMl9maXh1cGltbXNkX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza3pfZml4dXBpbW1fc2QsIDExMzYxM30sIC8vIF9fYnVpbHRpbl9pYTMyX2ZpeHVwaW1tc2RfbWFza3oKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19maXh1cGltbV9zcywgMTA3OTc4fSwgLy8gX19idWlsdGluX2lhMzJfZml4dXBpbW1zc19tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2t6X2ZpeHVwaW1tX3NzLCAxMTM2NDV9LCAvLyBfX2J1aWx0aW5faWEzMl9maXh1cGltbXNzX21hc2t6CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfZnBjbGFzc19zZCwgMTA4MDA5fSwgLy8gX19idWlsdGluX2lhMzJfZnBjbGFzc3NkX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19mcGNsYXNzX3NzLCAxMDgwMzl9LCAvLyBfX2J1aWx0aW5faWEzMl9mcGNsYXNzc3NfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2Z4cnN0b3IsIDExODQ2Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX2Z4cnN0b3IKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9meHJzdG9yNjQsIDExODQ4OX0sIC8vIF9fYnVpbHRpbl9pYTMyX2Z4cnN0b3I2NAorICAgICAge0ludHJpbnNpYzo6eDg2X2Z4c2F2ZSwgMTE4NTE0fSwgLy8gX19idWlsdGluX2lhMzJfZnhzYXZlCisgICAgICB7SW50cmluc2ljOjp4ODZfZnhzYXZlNjQsIDExODUzNn0sIC8vIF9fYnVpbHRpbl9pYTMyX2Z4c2F2ZTY0CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9nYXRoZXJfZF9kLCAxMDI4NTF9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJkX2QKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX2dhdGhlcl9kX2RfMjU2LCAxMDI4NzZ9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJkX2QyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX2dhdGhlcl9kX3BkLCAxMDI5MDR9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJkX3BkCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9nYXRoZXJfZF9wZF8yNTYsIDEwMjkzMH0sIC8vIF9fYnVpbHRpbl9pYTMyX2dhdGhlcmRfcGQyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX2dhdGhlcl9kX3BzLCAxMDI5NTl9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJkX3BzCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9nYXRoZXJfZF9wc18yNTYsIDEwMjk4NX0sIC8vIF9fYnVpbHRpbl9pYTMyX2dhdGhlcmRfcHMyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX2dhdGhlcl9kX3EsIDEwMzAxNH0sIC8vIF9fYnVpbHRpbl9pYTMyX2dhdGhlcmRfcQorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfZ2F0aGVyX2RfcV8yNTYsIDEwMzAzOX0sIC8vIF9fYnVpbHRpbl9pYTMyX2dhdGhlcmRfcTI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9nYXRoZXJwZl9kcGRfNTEyLCAxMDU3NzR9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJwZmRwZAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9nYXRoZXJwZl9kcHNfNTEyLCAxMDU4MDF9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJwZmRwcworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9nYXRoZXJwZl9xcGRfNTEyLCAxMDU4Mjh9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJwZnFwZAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9nYXRoZXJwZl9xcHNfNTEyLCAxMDU4NTV9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJwZnFwcworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfZ2F0aGVyX3FfZCwgMTAzMDY3fSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVycV9kCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9nYXRoZXJfcV9kXzI1NiwgMTAzMDkyfSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVycV9kMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9nYXRoZXJfcV9wZCwgMTAzMTIwfSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVycV9wZAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfZ2F0aGVyX3FfcGRfMjU2LCAxMDMxNDZ9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJxX3BkMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9nYXRoZXJfcV9wcywgMTAzMTc1fSwgLy8gX19idWlsdGluX2lhMzJfZ2F0aGVycV9wcworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfZ2F0aGVyX3FfcHNfMjU2LCAxMDMyMDF9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJxX3BzMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9nYXRoZXJfcV9xLCAxMDMyMzB9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJxX3EKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX2dhdGhlcl9xX3FfMjU2LCAxMDMyNTV9LCAvLyBfX2J1aWx0aW5faWEzMl9nYXRoZXJxX3EyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19nZXRleHBfcGRfMTI4LCAxMDgwNjl9LCAvLyBfX2J1aWx0aW5faWEzMl9nZXRleHBwZDEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfZ2V0ZXhwX3BkXzI1NiwgMTA4MTAxfSwgLy8gX19idWlsdGluX2lhMzJfZ2V0ZXhwcGQyNTZfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2dldGV4cF9wZF81MTIsIDEwODEzM30sIC8vIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBkNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19nZXRleHBfcHNfMTI4LCAxMDgxNjV9LCAvLyBfX2J1aWx0aW5faWEzMl9nZXRleHBwczEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfZ2V0ZXhwX3BzXzI1NiwgMTA4MTk3fSwgLy8gX19idWlsdGluX2lhMzJfZ2V0ZXhwcHMyNTZfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2dldGV4cF9wc181MTIsIDEwODIyOX0sIC8vIF9fYnVpbHRpbl9pYTMyX2dldGV4cHBzNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19nZXRleHBfc2QsIDEwODI2MX0sIC8vIF9fYnVpbHRpbl9pYTMyX2dldGV4cHNkMTI4X3JvdW5kX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19nZXRleHBfc3MsIDEwODI5OX0sIC8vIF9fYnVpbHRpbl9pYTMyX2dldGV4cHNzMTI4X3JvdW5kX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19nZXRtYW50X3BkXzEyOCwgMTA4MzM3fSwgLy8gX19idWlsdGluX2lhMzJfZ2V0bWFudHBkMTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19nZXRtYW50X3BkXzI1NiwgMTA4MzcwfSwgLy8gX19idWlsdGluX2lhMzJfZ2V0bWFudHBkMjU2X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19nZXRtYW50X3BkXzUxMiwgMTA4NDAzfSwgLy8gX19idWlsdGluX2lhMzJfZ2V0bWFudHBkNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19nZXRtYW50X3BzXzEyOCwgMTA4NDM2fSwgLy8gX19idWlsdGluX2lhMzJfZ2V0bWFudHBzMTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19nZXRtYW50X3BzXzI1NiwgMTA4NDY5fSwgLy8gX19idWlsdGluX2lhMzJfZ2V0bWFudHBzMjU2X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19nZXRtYW50X3BzXzUxMiwgMTA4NTAyfSwgLy8gX19idWlsdGluX2lhMzJfZ2V0bWFudHBzNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19nZXRtYW50X3NkLCAxMDg1MzV9LCAvLyBfX2J1aWx0aW5faWEzMl9nZXRtYW50c2Rfcm91bmRfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX2dldG1hbnRfc3MsIDEwODU3MX0sIC8vIF9fYnVpbHRpbl9pYTMyX2dldG1hbnRzc19yb3VuZF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlM19oYWRkX3BkLCAxMjMyNjR9LCAvLyBfX2J1aWx0aW5faWEzMl9oYWRkcGQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfaGFkZF9wZF8yNTYsIDEwMTY5Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX2hhZGRwZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTNfaGFkZF9wcywgMTIzMjg2fSwgLy8gX19idWlsdGluX2lhMzJfaGFkZHBzCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X2hhZGRfcHNfMjU2LCAxMDE3MTd9LCAvLyBfX2J1aWx0aW5faWEzMl9oYWRkcHMyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UzX2hzdWJfcGQsIDEyMzMwOH0sIC8vIF9fYnVpbHRpbl9pYTMyX2hzdWJwZAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9oc3ViX3BkXzI1NiwgMTAxNzQyfSwgLy8gX19idWlsdGluX2lhMzJfaHN1YnBkMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlM19oc3ViX3BzLCAxMjMzMzB9LCAvLyBfX2J1aWx0aW5faWEzMl9oc3VicHMKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfaHN1Yl9wc18yNTYsIDEwMTc2N30sIC8vIF9fYnVpbHRpbl9pYTMyX2hzdWJwczI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2luY3NzcGQsIDExODU2MH0sIC8vIF9fYnVpbHRpbl9pYTMyX2luY3NzcGQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9pbmNzc3BxLCAxMTg1ODN9LCAvLyBfX2J1aWx0aW5faWEzMl9pbmNzc3BxCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDFfaW5zZXJ0cHMsIDEyMzUwNX0sIC8vIF9fYnVpbHRpbl9pYTMyX2luc2VydHBzMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlNGFfaW5zZXJ0cSwgMTI0MzQ3fSwgLy8gX19idWlsdGluX2lhMzJfaW5zZXJ0cQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTRhX2luc2VydHFpLCAxMjQzNzB9LCAvLyBfX2J1aWx0aW5faWEzMl9pbnNlcnRxaQorICAgICAge0ludHJpbnNpYzo6eDg2X2ludnBjaWQsIDExODYwNn0sIC8vIF9fYnVpbHRpbl9pYTMyX2ludnBjaWQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UzX2xkdV9kcSwgMTIzMzUyfSwgLy8gX19idWlsdGluX2lhMzJfbGRkcXUKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfbGR1X2RxXzI1NiwgMTAxNzkyfSwgLy8gX19idWlsdGluX2lhMzJfbGRkcXUyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX2xmZW5jZSwgMTIyMjY0fSwgLy8gX19idWlsdGluX2lhMzJfbGZlbmNlCisgICAgICB7SW50cmluc2ljOjp4ODZfbGx3cGNiLCAxMTg2Mjl9LCAvLyBfX2J1aWx0aW5faWEzMl9sbHdwY2IKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9sd3BpbnMzMiwgMTE4NjUxfSwgLy8gX19idWlsdGluX2lhMzJfbHdwaW5zMzIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9sd3BpbnM2NCwgMTE4Njc1fSwgLy8gX19idWlsdGluX2lhMzJfbHdwaW5zNjQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9sd3B2YWwzMiwgMTE4Njk5fSwgLy8gX19idWlsdGluX2lhMzJfbHdwdmFsMzIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9sd3B2YWw2NCwgMTE4NzIzfSwgLy8gX19idWlsdGluX2lhMzJfbHdwdmFsNjQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX21hc2tsb2FkX2QsIDEwMzI4M30sIC8vIF9fYnVpbHRpbl9pYTMyX21hc2tsb2FkZAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfbWFza2xvYWRfZF8yNTYsIDEwMzMwOH0sIC8vIF9fYnVpbHRpbl9pYTMyX21hc2tsb2FkZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9tYXNrbG9hZF9wZCwgMTAxODE2fSwgLy8gX19idWlsdGluX2lhMzJfbWFza2xvYWRwZAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9tYXNrbG9hZF9wZF8yNTYsIDEwMTg0Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcGQyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfbWFza2xvYWRfcHMsIDEwMTg3MX0sIC8vIF9fYnVpbHRpbl9pYTMyX21hc2tsb2FkcHMKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfbWFza2xvYWRfcHNfMjU2LCAxMDE4OTd9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXNrbG9hZHBzMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9tYXNrbG9hZF9xLCAxMDMzMzZ9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXNrbG9hZHEKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX21hc2tsb2FkX3FfMjU2LCAxMDMzNjF9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXNrbG9hZHEyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX21hc2ttb3ZfZHF1LCAxMjIyODZ9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXNrbW92ZHF1CisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X21hc2ttb3ZxLCAxMTg3ODh9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXNrbW92cQorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfbWFza3N0b3JlX2QsIDEwMzM4OX0sIC8vIF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZWQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX21hc2tzdG9yZV9kXzI1NiwgMTAzNDE1fSwgLy8gX19idWlsdGluX2lhMzJfbWFza3N0b3JlZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9tYXNrc3RvcmVfcGQsIDEwMTkyNn0sIC8vIF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZXBkCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X21hc2tzdG9yZV9wZF8yNTYsIDEwMTk1M30sIC8vIF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZXBkMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X21hc2tzdG9yZV9wcywgMTAxOTgzfSwgLy8gX19idWlsdGluX2lhMzJfbWFza3N0b3JlcHMKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfbWFza3N0b3JlX3BzXzI1NiwgMTAyMDEwfSwgLy8gX19idWlsdGluX2lhMzJfbWFza3N0b3JlcHMyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX21hc2tzdG9yZV9xLCAxMDM0NDR9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXNrc3RvcmVxCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9tYXNrc3RvcmVfcV8yNTYsIDEwMzQ3MH0sIC8vIF9fYnVpbHRpbl9pYTMyX21hc2tzdG9yZXEyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX21heF9wZCwgMTIyMzEyfSwgLy8gX19idWlsdGluX2lhMzJfbWF4cGQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfbWF4X3BkXzI1NiwgMTAyMDQwfSwgLy8gX19idWlsdGluX2lhMzJfbWF4cGQyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWF4X3BkXzUxMiwgMTEzNjc3fSwgLy8gX19idWlsdGluX2lhMzJfbWF4cGQ1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfbWF4X3BzLCAxMjE0NDh9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXhwcworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9tYXhfcHNfMjU2LCAxMDIwNjR9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXhwczI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXhfcHNfNTEyLCAxMTM3MDF9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXhwczUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfbWF4X3NkLCAxMjIzMzN9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXhzZAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX21heF9zZF9yb3VuZCwgMTA4NjA3fSwgLy8gX19idWlsdGluX2lhMzJfbWF4c2Rfcm91bmRfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9tYXhfc3MsIDEyMTQ2OX0sIC8vIF9fYnVpbHRpbl9pYTMyX21heHNzCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfbWF4X3NzX3JvdW5kLCAxMDg2Mzl9LCAvLyBfX2J1aWx0aW5faWEzMl9tYXhzc19yb3VuZF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9tZmVuY2UsIDEyMjM1NH0sIC8vIF9fYnVpbHRpbl9pYTMyX21mZW5jZQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfbWluX3BkLCAxMjIzNzZ9LCAvLyBfX2J1aWx0aW5faWEzMl9taW5wZAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9taW5fcGRfMjU2LCAxMDIwODh9LCAvLyBfX2J1aWx0aW5faWEzMl9taW5wZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9taW5fcGRfNTEyLCAxMTM3MjV9LCAvLyBfX2J1aWx0aW5faWEzMl9taW5wZDUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9taW5fcHMsIDEyMTQ5MH0sIC8vIF9fYnVpbHRpbl9pYTMyX21pbnBzCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X21pbl9wc18yNTYsIDEwMjExMn0sIC8vIF9fYnVpbHRpbl9pYTMyX21pbnBzMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21pbl9wc181MTIsIDExMzc0OX0sIC8vIF9fYnVpbHRpbl9pYTMyX21pbnBzNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9taW5fc2QsIDEyMjM5N30sIC8vIF9fYnVpbHRpbl9pYTMyX21pbnNkCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfbWluX3NkX3JvdW5kLCAxMDg2NzF9LCAvLyBfX2J1aWx0aW5faWEzMl9taW5zZF9yb3VuZF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlX21pbl9zcywgMTIxNTExfSwgLy8gX19idWlsdGluX2lhMzJfbWluc3MKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19taW5fc3Nfcm91bmQsIDEwODcwM30sIC8vIF9fYnVpbHRpbl9pYTMyX21pbnNzX3JvdW5kX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UzX21vbml0b3IsIDEyMzM3M30sIC8vIF9fYnVpbHRpbl9pYTMyX21vbml0b3IKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tb25pdG9yeCwgMTIwMzM0fSwgLy8gX19idWlsdGluX2lhMzJfbW9uaXRvcngKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tb3ZkaXI2NGIsIDEyMDM1OH0sIC8vIF9fYnVpbHRpbl9pYTMyX21vdmRpcjY0YgorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfbW92bXNrX3BkLCAxMjI0MTh9LCAvLyBfX2J1aWx0aW5faWEzMl9tb3Ztc2twZAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9tb3Ztc2tfcGRfMjU2LCAxMDIxMzZ9LCAvLyBfX2J1aWx0aW5faWEzMl9tb3Ztc2twZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9tb3Ztc2tfcHMsIDEyMTUzMn0sIC8vIF9fYnVpbHRpbl9pYTMyX21vdm1za3BzCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X21vdm1za19wc18yNTYsIDEwMjE2M30sIC8vIF9fYnVpbHRpbl9pYTMyX21vdm1za3BzMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X21vdm50X2RxLCAxMTg4MTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9tb3ZudHEKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0MV9tcHNhZGJ3LCAxMjM1MzJ9LCAvLyBfX2J1aWx0aW5faWEzMl9tcHNhZGJ3MTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9tcHNhZGJ3LCAxMDM0OTl9LCAvLyBfX2J1aWx0aW5faWEzMl9tcHNhZGJ3MjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX211bF9wZF81MTIsIDExMzc3M30sIC8vIF9fYnVpbHRpbl9pYTMyX211bHBkNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX211bF9wc181MTIsIDExMzc5N30sIC8vIF9fYnVpbHRpbl9pYTMyX211bHBzNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfbXVsX3NkX3JvdW5kLCAxMDg3MzV9LCAvLyBfX2J1aWx0aW5faWEzMl9tdWxzZF9yb3VuZF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfbXVsX3NzX3JvdW5kLCAxMDg3Njd9LCAvLyBfX2J1aWx0aW5faWEzMl9tdWxzc19yb3VuZF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlM19td2FpdCwgMTIzMzk2fSwgLy8gX19idWlsdGluX2lhMzJfbXdhaXQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9td2FpdHgsIDEyMDM4M30sIC8vIF9fYnVpbHRpbl9pYTMyX213YWl0eAorICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BhYnNfYiwgMTI0Mzk0fSwgLy8gX19idWlsdGluX2lhMzJfcGFic2IKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc3NlM19wYWJzX2QsIDEyNDQxNX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhYnNkCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcGFic193LCAxMjQ0MzZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWJzdworICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wYWNrc3NkdywgMTE4ODM0fSwgLy8gX19idWlsdGluX2lhMzJfcGFja3NzZHcKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BhY2tzc2R3XzEyOCwgMTIyNDQyfSwgLy8gX19idWlsdGluX2lhMzJfcGFja3NzZHcxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BhY2tzc2R3LCAxMDM1MjV9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWNrc3NkdzI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wYWNrc3Nkd181MTIsIDExMzgyMX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhY2tzc2R3NTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BhY2tzc3diLCAxMTg4NTh9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWNrc3N3YgorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcGFja3Nzd2JfMTI4LCAxMjI0Njl9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWNrc3N3YjEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcGFja3Nzd2IsIDEwMzU1Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhY2tzc3diMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BhY2tzc3diXzUxMiwgMTEzODQ4fSwgLy8gX19idWlsdGluX2lhMzJfcGFja3Nzd2I1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0MV9wYWNrdXNkdywgMTIzNTU4fSwgLy8gX19idWlsdGluX2lhMzJfcGFja3VzZHcxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BhY2t1c2R3LCAxMDM1Nzl9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWNrdXNkdzI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wYWNrdXNkd181MTIsIDExMzg3NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhY2t1c2R3NTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BhY2t1c3diLCAxMTg4ODJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWNrdXN3YgorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcGFja3Vzd2JfMTI4LCAxMjI0OTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWNrdXN3YjEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcGFja3Vzd2IsIDEwMzYwNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhY2t1c3diMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BhY2t1c3diXzUxMiwgMTEzOTAyfSwgLy8gX19idWlsdGluX2lhMzJfcGFja3Vzd2I1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcGFkZF9iLCAxMTg5MDZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wYWRkYgorICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wYWRkX2QsIDExODkyN30sIC8vIF9fYnVpbHRpbl9pYTMyX3BhZGRkCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BhZGRfcSwgMTE4OTQ4fSwgLy8gX19idWlsdGluX2lhMzJfcGFkZHEKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcGFkZHNfYiwgMTE4OTkwfSwgLy8gX19idWlsdGluX2lhMzJfcGFkZHNiCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BhZGRzX3csIDExOTAxMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhZGRzdworICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wYWRkdXNfYiwgMTE5MDM0fSwgLy8gX19idWlsdGluX2lhMzJfcGFkZHVzYgorICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wYWRkdXNfdywgMTE5MDU3fSwgLy8gX19idWlsdGluX2lhMzJfcGFkZHVzdworICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wYWRkX3csIDExODk2OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BhZGR3CisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BhbGlnbnJfYiwgMTE5MDgwfSwgLy8gX19idWlsdGluX2lhMzJfcGFsaWducgorICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wYW5kLCAxMTkxMDN9LCAvLyBfX2J1aWx0aW5faWEzMl9wYW5kCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BhbmRuLCAxMTkxMjN9LCAvLyBfX2J1aWx0aW5faWEzMl9wYW5kbgorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcGF1c2UsIDEyMjUyM30sIC8vIF9fYnVpbHRpbl9pYTMyX3BhdXNlCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BhdmdfYiwgMTE5MTQ0fSwgLy8gX19idWlsdGluX2lhMzJfcGF2Z2IKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl8zZG5vd19wYXZndXNiLCAxMDA1MzN9LCAvLyBfX2J1aWx0aW5faWEzMl9wYXZndXNiCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BhdmdfdywgMTE5MTY1fSwgLy8gX19idWlsdGluX2lhMzJfcGF2Z3cKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0MV9wYmxlbmR2YiwgMTIzNTg1fSwgLy8gX19idWlsdGluX2lhMzJfcGJsZW5kdmIxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BibGVuZHZiLCAxMDM2MzN9LCAvLyBfX2J1aWx0aW5faWEzMl9wYmxlbmR2YjI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X3BjbG11bHFkcSwgMTIwNDA1fSwgLy8gX19idWlsdGluX2lhMzJfcGNsbXVscWRxMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfcGNsbXVscWRxXzI1NiwgMTIwNDMzfSwgLy8gX19idWlsdGluX2lhMzJfcGNsbXVscWRxMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfcGNsbXVscWRxXzUxMiwgMTIwNDYxfSwgLy8gX19idWlsdGluX2lhMzJfcGNsbXVscWRxNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BjbXBlcV9iLCAxMTkxODZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wY21wZXFiCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BjbXBlcV9kLCAxMTkyMDl9LCAvLyBfX2J1aWx0aW5faWEzMl9wY21wZXFkCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BjbXBlcV93LCAxMTkyMzJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wY21wZXF3CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDJfcGNtcGVzdHJpMTI4LCAxMjM5MDJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wY21wZXN0cmkxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0Ml9wY21wZXN0cmlhMTI4LCAxMjM5MzB9LCAvLyBfX2J1aWx0aW5faWEzMl9wY21wZXN0cmlhMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDJfcGNtcGVzdHJpYzEyOCwgMTIzOTU5fSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGVzdHJpYzEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQyX3BjbXBlc3RyaW8xMjgsIDEyMzk4OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BjbXBlc3RyaW8xMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0Ml9wY21wZXN0cmlzMTI4LCAxMjQwMTd9LCAvLyBfX2J1aWx0aW5faWEzMl9wY21wZXN0cmlzMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDJfcGNtcGVzdHJpejEyOCwgMTI0MDQ2fSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGVzdHJpejEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQyX3BjbXBlc3RybTEyOCwgMTI0MDc1fSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGVzdHJtMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BjbXBndF9iLCAxMTkyNTV9LCAvLyBfX2J1aWx0aW5faWEzMl9wY21wZ3RiCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BjbXBndF9kLCAxMTkyNzh9LCAvLyBfX2J1aWx0aW5faWEzMl9wY21wZ3RkCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BjbXBndF93LCAxMTkzMDF9LCAvLyBfX2J1aWx0aW5faWEzMl9wY21wZ3R3CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDJfcGNtcGlzdHJpMTI4LCAxMjQxMDN9LCAvLyBfX2J1aWx0aW5faWEzMl9wY21waXN0cmkxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0Ml9wY21waXN0cmlhMTI4LCAxMjQxMzF9LCAvLyBfX2J1aWx0aW5faWEzMl9wY21waXN0cmlhMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDJfcGNtcGlzdHJpYzEyOCwgMTI0MTYwfSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGlzdHJpYzEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQyX3BjbXBpc3RyaW8xMjgsIDEyNDE4OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BjbXBpc3RyaW8xMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0Ml9wY21waXN0cmlzMTI4LCAxMjQyMTh9LCAvLyBfX2J1aWx0aW5faWEzMl9wY21waXN0cmlzMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDJfcGNtcGlzdHJpejEyOCwgMTI0MjQ3fSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGlzdHJpejEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQyX3BjbXBpc3RybTEyOCwgMTI0Mjc2fSwgLy8gX19idWlsdGluX2lhMzJfcGNtcGlzdHJtMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYm1pX3BkZXBfNjQsIDExODA5N30sIC8vIF9fYnVpbHRpbl9pYTMyX3BkZXBfZGkKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9ibWlfcGRlcF8zMiwgMTE4MDc0fSwgLy8gX19idWlsdGluX2lhMzJfcGRlcF9zaQorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wZXJtdmFyX2RmXzI1NiwgMTEzOTI5fSwgLy8gX19idWlsdGluX2lhMzJfcGVybXZhcmRmMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Blcm12YXJfZGZfNTEyLCAxMTM5NTd9LCAvLyBfX2J1aWx0aW5faWEzMl9wZXJtdmFyZGY1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcGVybXZhcl9kaV8yNTYsIDExMzk4NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Blcm12YXJkaTI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wZXJtdmFyX2RpXzUxMiwgMTE0MDEzfSwgLy8gX19idWlsdGluX2lhMzJfcGVybXZhcmRpNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Blcm12YXJfaGlfMTI4LCAxMTQwNDF9LCAvLyBfX2J1aWx0aW5faWEzMl9wZXJtdmFyaGkxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcGVybXZhcl9oaV8yNTYsIDExNDA2OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Blcm12YXJoaTI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wZXJtdmFyX2hpXzUxMiwgMTE0MDk3fSwgLy8gX19idWlsdGluX2lhMzJfcGVybXZhcmhpNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Blcm12YXJfcWlfMTI4LCAxMTQxMjV9LCAvLyBfX2J1aWx0aW5faWEzMl9wZXJtdmFycWkxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcGVybXZhcl9xaV8yNTYsIDExNDE1M30sIC8vIF9fYnVpbHRpbl9pYTMyX3Blcm12YXJxaTI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wZXJtdmFyX3FpXzUxMiwgMTE0MTgxfSwgLy8gX19idWlsdGluX2lhMzJfcGVybXZhcnFpNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wZXJtcHMsIDEwMzY4OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Blcm12YXJzZjI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wZXJtdmFyX3NmXzUxMiwgMTE0MjA5fSwgLy8gX19idWlsdGluX2lhMzJfcGVybXZhcnNmNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wZXJtZCwgMTAzNjYwfSwgLy8gX19idWlsdGluX2lhMzJfcGVybXZhcnNpMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Blcm12YXJfc2lfNTEyLCAxMTQyMzd9LCAvLyBfX2J1aWx0aW5faWEzMl9wZXJtdmFyc2k1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9ibWlfcGV4dF82NCwgMTE4MTQzfSwgLy8gX19idWlsdGluX2lhMzJfcGV4dF9kaQorICAgICAge0ludHJpbnNpYzo6eDg2X2JtaV9wZXh0XzMyLCAxMTgxMjB9LCAvLyBfX2J1aWx0aW5faWEzMl9wZXh0X3NpCisgICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dfcGYyaWQsIDEwMDU1Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BmMmlkCisgICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dhX3BmMml3LCAxMDA5NTR9LCAvLyBfX2J1aWx0aW5faWEzMl9wZjJpdworICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BmYWNjLCAxMDA1Nzd9LCAvLyBfX2J1aWx0aW5faWEzMl9wZmFjYworICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BmYWRkLCAxMDA1OTh9LCAvLyBfX2J1aWx0aW5faWEzMl9wZmFkZAorICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BmY21wZXEsIDEwMDYxOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BmY21wZXEKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl8zZG5vd19wZmNtcGdlLCAxMDA2NDJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wZmNtcGdlCisgICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dfcGZjbXBndCwgMTAwNjY1fSwgLy8gX19idWlsdGluX2lhMzJfcGZjbXBndAorICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BmbWF4LCAxMDA2ODh9LCAvLyBfX2J1aWx0aW5faWEzMl9wZm1heAorICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BmbWluLCAxMDA3MDl9LCAvLyBfX2J1aWx0aW5faWEzMl9wZm1pbgorICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BmbXVsLCAxMDA3MzB9LCAvLyBfX2J1aWx0aW5faWEzMl9wZm11bAorICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93YV9wZm5hY2MsIDEwMDk3NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BmbmFjYworICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93YV9wZnBuYWNjLCAxMDA5OTd9LCAvLyBfX2J1aWx0aW5faWEzMl9wZnBuYWNjCisgICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dfcGZyY3AsIDEwMDc1MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BmcmNwCisgICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dfcGZyY3BpdDEsIDEwMDc3Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BmcmNwaXQxCisgICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dfcGZyY3BpdDIsIDEwMDc5Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BmcmNwaXQyCisgICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dfcGZyc3FpdDEsIDEwMDgyMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BmcnNxaXQxCisgICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dfcGZyc3FydCwgMTAwODQ0fSwgLy8gX19idWlsdGluX2lhMzJfcGZyc3FydAorICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3Bmc3ViLCAxMDA4Njd9LCAvLyBfX2J1aWx0aW5faWEzMl9wZnN1YgorICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3Bmc3ViciwgMTAwODg4fSwgLy8gX19idWlsdGluX2lhMzJfcGZzdWJyCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcGhhZGRfZCwgMTI0NDU3fSwgLy8gX19idWlsdGluX2lhMzJfcGhhZGRkCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcGhhZGRfZF8xMjgsIDEyNDQ3OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BoYWRkZDEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcGhhZGRfZCwgMTAzNzE2fSwgLy8gX19idWlsdGluX2lhMzJfcGhhZGRkMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcGhhZGRfc3csIDEyNDUwNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BoYWRkc3cKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc3NlM19waGFkZF9zd18xMjgsIDEyNDUyN30sIC8vIF9fYnVpbHRpbl9pYTMyX3BoYWRkc3cxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BoYWRkX3N3LCAxMDM3NDF9LCAvLyBfX2J1aWx0aW5faWEzMl9waGFkZHN3MjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcGhhZGRfdywgMTI0NTUzfSwgLy8gX19idWlsdGluX2lhMzJfcGhhZGR3CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcGhhZGRfd18xMjgsIDEyNDU3NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BoYWRkdzEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcGhhZGRfdywgMTAzNzY3fSwgLy8gX19idWlsdGluX2lhMzJfcGhhZGR3MjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDFfcGhtaW5wb3N1dywgMTIzNjEyfSwgLy8gX19idWlsdGluX2lhMzJfcGhtaW5wb3N1dzEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3Boc3ViX2QsIDEyNDYwMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Boc3ViZAorICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3Boc3ViX2RfMTI4LCAxMjQ2MjJ9LCAvLyBfX2J1aWx0aW5faWEzMl9waHN1YmQxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3Boc3ViX2QsIDEwMzc5Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Boc3ViZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3Boc3ViX3N3LCAxMjQ2NDd9LCAvLyBfX2J1aWx0aW5faWEzMl9waHN1YnN3CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcGhzdWJfc3dfMTI4LCAxMjQ2NzB9LCAvLyBfX2J1aWx0aW5faWEzMl9waHN1YnN3MTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9waHN1Yl9zdywgMTAzODE3fSwgLy8gX19idWlsdGluX2lhMzJfcGhzdWJzdzI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3Boc3ViX3csIDEyNDY5Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Boc3VidworICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3Boc3ViX3dfMTI4LCAxMjQ3MTh9LCAvLyBfX2J1aWx0aW5faWEzMl9waHN1YncxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3Boc3ViX3csIDEwMzg0M30sIC8vIF9fYnVpbHRpbl9pYTMyX3Boc3VidzI1NgorICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93X3BpMmZkLCAxMDA5MTB9LCAvLyBfX2J1aWx0aW5faWEzMl9waTJmZAorICAgICAge0ludHJpbnNpYzo6eDg2XzNkbm93YV9waTJmdywgMTAxMDIwfSwgLy8gX19idWlsdGluX2lhMzJfcGkyZncKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc3NlM19wbWFkZF91Yl9zdywgMTI0NzQzfSwgLy8gX19idWlsdGluX2lhMzJfcG1hZGR1YnN3CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NzZTNfcG1hZGRfdWJfc3dfMTI4LCAxMjQ3Njh9LCAvLyBfX2J1aWx0aW5faWEzMl9wbWFkZHVic3cxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BtYWRkX3ViX3N3LCAxMDM4Njh9LCAvLyBfX2J1aWx0aW5faWEzMl9wbWFkZHVic3cyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcG1hZGR1YnNfd181MTIsIDExNDI2NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BtYWRkdWJzdzUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wbWFkZF93ZCwgMTE5MzgwfSwgLy8gX19idWlsdGluX2lhMzJfcG1hZGR3ZAorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcG1hZGRfd2QsIDEyMjU0NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BtYWRkd2QxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BtYWRkX3dkLCAxMDM4OTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbWFkZHdkMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BtYWRkd19kXzUxMiwgMTE0MjkzfSwgLy8gX19idWlsdGluX2lhMzJfcG1hZGR3ZDUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wbWF4c193LCAxMTk0MDN9LCAvLyBfX2J1aWx0aW5faWEzMl9wbWF4c3cKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcG1heHVfYiwgMTE5NDI1fSwgLy8gX19idWlsdGluX2lhMzJfcG1heHViCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BtaW5zX3csIDExOTQ0N30sIC8vIF9fYnVpbHRpbl9pYTMyX3BtaW5zdworICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wbWludV9iLCAxMTk0Njl9LCAvLyBfX2J1aWx0aW5faWEzMl9wbWludWIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X2RiXzEyOCwgMTA4Nzk5fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdmRiMTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X2RiX21lbV8xMjgsIDEwODg1OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZkYjEyOG1lbV9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9kYl8yNTYsIDEwODgyOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZkYjI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9kYl9tZW1fMjU2LCAxMDg4OTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92ZGIyNTZtZW1fbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfZGJfbWVtXzUxMiwgMTA4OTI1fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdmRiNTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X2R3XzEyOCwgMTA4OTU4fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdmR3MTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X2R3X21lbV8xMjgsIDEwOTAxOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZkdzEyOG1lbV9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9kd18yNTYsIDEwODk4OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZkdzI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9kd19tZW1fMjU2LCAxMDkwNTF9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92ZHcyNTZtZW1fbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfZHdfbWVtXzUxMiwgMTA5MDg0fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdmR3NTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcG1vdm1za2IsIDExOTQ5MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Ztc2tiCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wbW92bXNrYl8xMjgsIDEyMjU3MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Ztc2tiMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wbW92bXNrYiwgMTAzOTIyfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdm1za2IyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X3FiXzEyOCwgMTA5MTE3fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnFiMTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X3FiX21lbV8xMjgsIDEwOTIwN30sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZxYjEyOG1lbV9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9xYl8yNTYsIDEwOTE0N30sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZxYjI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9xYl9tZW1fMjU2LCAxMDkyNDB9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92cWIyNTZtZW1fbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfcWJfNTEyLCAxMDkxNzd9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92cWI1MTJfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfcWJfbWVtXzUxMiwgMTA5MjczfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnFiNTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X3FkXzEyOCwgMTA5MzA2fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnFkMTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X3FkX21lbV8xMjgsIDEwOTMzNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZxZDEyOG1lbV9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9xZF9tZW1fMjU2LCAxMDkzNjl9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92cWQyNTZtZW1fbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfcWRfbWVtXzUxMiwgMTA5NDAyfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnFkNTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X3F3XzEyOCwgMTA5NDM1fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnF3MTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X3F3X21lbV8xMjgsIDEwOTQ5NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZxdzEyOG1lbV9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9xd18yNTYsIDEwOTQ2NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZxdzI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl9xd19tZW1fMjU2LCAxMDk1Mjh9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92cXcyNTZtZW1fbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZfcXdfbWVtXzUxMiwgMTA5NTYxfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnF3NTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19kYl8xMjgsIDEwOTcyM30sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzZGIxMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX2RiX21lbV8xMjgsIDEwOTgxNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzZGIxMjhtZW1fbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX2RiXzI1NiwgMTA5NzU0fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNkYjI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfZGJfbWVtXzI1NiwgMTA5ODUwfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNkYjI1Nm1lbV9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfZGJfNTEyLCAxMDk3ODV9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c2RiNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19kYl9tZW1fNTEyLCAxMDk4ODR9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c2RiNTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19kd18xMjgsIDEwOTkxOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzZHcxMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX2R3X21lbV8xMjgsIDExMDAxMX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzZHcxMjhtZW1fbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX2R3XzI1NiwgMTA5OTQ5fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNkdzI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfZHdfbWVtXzI1NiwgMTEwMDQ1fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNkdzI1Nm1lbV9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfZHdfNTEyLCAxMDk5ODB9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c2R3NTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19kd19tZW1fNTEyLCAxMTAwNzl9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c2R3NTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19xYl8xMjgsIDExMDExM30sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWIxMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3FiX21lbV8xMjgsIDExMDIwNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWIxMjhtZW1fbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3FiXzI1NiwgMTEwMTQ0fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNxYjI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfcWJfbWVtXzI1NiwgMTEwMjQwfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNxYjI1Nm1lbV9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfcWJfNTEyLCAxMTAxNzV9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3FiNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19xYl9tZW1fNTEyLCAxMTAyNzR9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3FiNTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19xZF8xMjgsIDExMDMwOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWQxMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3FkX21lbV8xMjgsIDExMDQwMX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcWQxMjhtZW1fbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3FkXzI1NiwgMTEwMzM5fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNxZDI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfcWRfbWVtXzI1NiwgMTEwNDM1fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNxZDI1Nm1lbV9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfcWRfNTEyLCAxMTAzNzB9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3FkNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19xZF9tZW1fNTEyLCAxMTA0Njl9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3FkNTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19xd18xMjgsIDExMDUwM30sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXcxMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3F3X21lbV8xMjgsIDExMDU5Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3ZzcXcxMjhtZW1fbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3F3XzI1NiwgMTEwNTM0fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNxdzI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfcXdfbWVtXzI1NiwgMTEwNjMwfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnNxdzI1Nm1lbV9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfcXdfNTEyLCAxMTA1NjV9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3F3NTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c19xd19tZW1fNTEyLCAxMTA2NjR9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3F3NTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c193Yl8xMjgsIDExMDY5OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Zzd2IxMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3diX21lbV8xMjgsIDExMDc5MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Zzd2IxMjhtZW1fbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3ZzX3diXzI1NiwgMTEwNzI5fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnN3YjI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfd2JfbWVtXzI1NiwgMTEwODI1fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdnN3YjI1Nm1lbV9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnNfd2JfNTEyLCAxMTA3NjB9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3diNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92c193Yl9tZW1fNTEyLCAxMTA4NTl9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92c3diNTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfZGJfMTI4LCAxMTA4OTN9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNkYjEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX2RiX21lbV8xMjgsIDExMDk4OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2RiMTI4bWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfZGJfMjU2LCAxMTA5MjV9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNkYjI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX2RiX21lbV8yNTYsIDExMTAyNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2RiMjU2bWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfZGJfNTEyLCAxMTA5NTd9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNkYjUxMl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX2RiX21lbV81MTIsIDExMTA1OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2RiNTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfZHdfMTI4LCAxMTEwOTR9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNkdzEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX2R3X21lbV8xMjgsIDExMTE5MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2R3MTI4bWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfZHdfMjU2LCAxMTExMjZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNkdzI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX2R3X21lbV8yNTYsIDExMTIyNX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2R3MjU2bWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfZHdfNTEyLCAxMTExNTh9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNkdzUxMl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX2R3X21lbV81MTIsIDExMTI2MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c2R3NTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfcWJfMTI4LCAxMTEyOTV9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxYjEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3FiX21lbV8xMjgsIDExMTM5MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3FiMTI4bWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfcWJfMjU2LCAxMTEzMjd9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxYjI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3FiX21lbV8yNTYsIDExMTQyNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3FiMjU2bWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfcWJfNTEyLCAxMTEzNTl9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxYjUxMl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3FiX21lbV81MTIsIDExMTQ2MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3FiNTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfcWRfMTI4LCAxMTE0OTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxZDEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3FkX21lbV8xMjgsIDExMTU5Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3FkMTI4bWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfcWRfMjU2LCAxMTE1Mjh9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxZDI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3FkX21lbV8yNTYsIDExMTYyN30sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3FkMjU2bWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfcWRfNTEyLCAxMTE1NjB9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxZDUxMl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3FkX21lbV81MTIsIDExMTY2Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3FkNTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfcXdfMTI4LCAxMTE2OTd9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxdzEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3F3X21lbV8xMjgsIDExMTc5M30sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3F3MTI4bWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfcXdfMjU2LCAxMTE3Mjl9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxdzI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3F3X21lbV8yNTYsIDExMTgyOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3F3MjU2bWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfcXdfNTEyLCAxMTE3NjF9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXNxdzUxMl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3F3X21lbV81MTIsIDExMTg2M30sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3F3NTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfd2JfMTI4LCAxMTE4OTh9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXN3YjEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3diX21lbV8xMjgsIDExMTk5NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3diMTI4bWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfd2JfMjU2LCAxMTE5MzB9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXN3YjI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3diX21lbV8yNTYsIDExMjAyOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3diMjU2bWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92dXNfd2JfNTEyLCAxMTE5NjJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92dXN3YjUxMl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdnVzX3diX21lbV81MTIsIDExMjA2NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z1c3diNTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X3diXzEyOCwgMTA5NTk0fSwgLy8gX19idWlsdGluX2lhMzJfcG1vdndiMTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19wbW92X3diX21lbV8xMjgsIDEwOTYyNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Btb3Z3YjEyOG1lbV9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcG1vdl93Yl9tZW1fMjU2LCAxMDk2NTd9LCAvLyBfX2J1aWx0aW5faWEzMl9wbW92d2IyNTZtZW1fbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3Btb3Zfd2JfbWVtXzUxMiwgMTA5NjkwfSwgLy8gX19idWlsdGluX2lhMzJfcG1vdndiNTEybWVtX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc3NlM19wbXVsX2hyX3N3LCAxMjQ3OTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbXVsaHJzdworICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BtdWxfaHJfc3dfMTI4LCAxMjQ4MjB9LCAvLyBfX2J1aWx0aW5faWEzMl9wbXVsaHJzdzEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcG11bF9ocl9zdywgMTAzOTQ5fSwgLy8gX19idWlsdGluX2lhMzJfcG11bGhyc3cyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcG11bF9ocl9zd181MTIsIDExNDMxOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BtdWxocnN3NTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfM2Rub3dfcG11bGhydywgMTAwOTMxfSwgLy8gX19idWlsdGluX2lhMzJfcG11bGhydworICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wbXVsaHVfdywgMTE5NTM3fSwgLy8gX19idWlsdGluX2lhMzJfcG11bGh1dworICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcG11bGh1X3csIDEyMjYyMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BtdWxodXcxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BtdWxodV93LCAxMDQwMDF9LCAvLyBfX2J1aWx0aW5faWEzMl9wbXVsaHV3MjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BtdWxodV93XzUxMiwgMTE0MzcxfSwgLy8gX19idWlsdGluX2lhMzJfcG11bGh1dzUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wbXVsaF93LCAxMTk1MTV9LCAvLyBfX2J1aWx0aW5faWEzMl9wbXVsaHcKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BtdWxoX3csIDEyMjU5N30sIC8vIF9fYnVpbHRpbl9pYTMyX3BtdWxodzEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcG11bGhfdywgMTAzOTc2fSwgLy8gX19idWlsdGluX2lhMzJfcG11bGh3MjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BtdWxoX3dfNTEyLCAxMTQzNDZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbXVsaHc1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcG11bGxfdywgMTE5NTYwfSwgLy8gX19idWlsdGluX2lhMzJfcG11bGx3CisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BtdWx1X2RxLCAxMTk1ODJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wbXVsdWRxCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BvciwgMTE5NjA1fSwgLy8gX19idWlsdGluX2lhMzJfcG9yCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzYWRfYncsIDExOTYyNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzYWRidworICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcHNhZF9idywgMTIyNjQ4fSwgLy8gX19idWlsdGluX2lhMzJfcHNhZGJ3MTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc2FkX2J3LCAxMDQwMjd9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2FkYncyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNhZF9id181MTIsIDExNDQ5Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzYWRidzUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaHVmX2IsIDEyNDg0N30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaHVmYgorICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaHVmX2JfMTI4LCAxMjQ4Njl9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2h1ZmIxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzaHVmX2IsIDEwNDA1Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaHVmYjI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc2h1Zl9iXzUxMiwgMTE0NTIxfSwgLy8gX19idWlsdGluX2lhMzJfcHNodWZiNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlX3BzaHVmX3csIDEyMTU1Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaHVmdworICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaWduX2IsIDEyNDg5NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaWduYgorICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaWduX2JfMTI4LCAxMjQ5MTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2lnbmIxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzaWduX2IsIDEwNDA3N30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaWduYjI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaWduX2QsIDEyNDk0MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaWduZAorICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaWduX2RfMTI4LCAxMjQ5NjN9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2lnbmQxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzaWduX2QsIDEwNDEwMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaWduZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaWduX3csIDEyNDk4OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaWdudworICAgICAge0ludHJpbnNpYzo6eDg2X3Nzc2UzX3BzaWduX3dfMTI4LCAxMjUwMTB9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2lnbncxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzaWduX3csIDEwNDEyN30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzaWdudzI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wc2xsX2QsIDExOTY0Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxkCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc2xsX2QsIDEyMjY3M30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxkMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc2xsX2QsIDEwNDE1Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxkMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzbGxfZF81MTIsIDExNDU0Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxkNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzbGxpX2QsIDExOTcwOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxkaQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcHNsbGlfZCwgMTIyNzQ1fSwgLy8gX19idWlsdGluX2lhMzJfcHNsbGRpMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc2xsaV9kLCAxMDQyMjR9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2xsZGkyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNsbGlfZF81MTIsIDExNDYxOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxkaTUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wc2xsX3EsIDExOTY2N30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxxCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc2xsX3EsIDEyMjY5N30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxxMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc2xsX3EsIDEwNDE3Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxxMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzbGxfcV81MTIsIDExNDU3MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxxNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzbGxpX3EsIDExOTczMX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxxaQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcHNsbGlfcSwgMTIyNzcwfSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHFpMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc2xsaV9xLCAxMDQyNDl9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2xscWkyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNsbGlfcV81MTIsIDExNDY0M30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGxxaTUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc2xsdl93XzI1NiwgMTE0NzY2fSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHYxNmhpCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzbGx2X2RfNTEyLCAxMTQ2OTN9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2xsdjE2c2kKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzbGx2X3EsIDEwNDM0N30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGx2MmRpCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzbGx2X3dfNTEyLCAxMTQ3OTF9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2xsdjMyaGkKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzbGx2X3FfMjU2LCAxMDQzNzF9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2xsdjRkaQorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcHNsbHZfZCwgMTA0Mjk5fSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHY0c2kKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNsbHZfcV81MTIsIDExNDcxOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGx2OGRpCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzbGx2X3dfMTI4LCAxMTQ3NDJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2xsdjhoaQorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcHNsbHZfZF8yNTYsIDEwNDMyM30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGx2OHNpCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzbGxfdywgMTE5Njg4fSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHcKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BzbGxfdywgMTIyNzIxfSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHcxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzbGxfdywgMTA0MjAwfSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHcyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNsbF93XzUxMiwgMTE0NTk0fSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHc1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHNsbGlfdywgMTE5NzUzfSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHdpCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc2xsaV93LCAxMjI3OTV9LCAvLyBfX2J1aWx0aW5faWEzMl9wc2xsd2kxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzbGxpX3csIDEwNDI3NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzbGx3aTI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc2xsaV93XzUxMiwgMTE0NjY4fSwgLy8gX19idWlsdGluX2lhMzJfcHNsbHdpNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzcmFfZCwgMTE5Nzc1fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYWQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BzcmFfZCwgMTIyODIwfSwgLy8gX19idWlsdGluX2lhMzJfcHNyYWQxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmFfZCwgMTA0Mzk1fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYWQyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNyYV9kXzUxMiwgMTE0ODE2fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYWQ1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHNyYWlfZCwgMTE5ODE3fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYWRpCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc3JhaV9kLCAxMjI4Njh9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JhZGkxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmFpX2QsIDEwNDQ0M30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmFkaTI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3JhaV9kXzUxMiwgMTE0OTM2fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYWRpNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzcmFfcV8xMjgsIDExNDg0MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmFxMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzcmFfcV8yNTYsIDExNDg2NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmFxMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzcmFfcV81MTIsIDExNDg4OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmFxNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzcmFpX3FfMTI4LCAxMTQ5NjF9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JhcWkxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNyYWlfcV8yNTYsIDExNDk4Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmFxaTI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3JhaV9xXzUxMiwgMTE1MDExfSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXFpNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzcmF2X3dfMjU2LCAxMTUxODR9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JhdjE2aGkKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNyYXZfZF81MTIsIDExNTA2MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmF2MTZzaQorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3Jhdl93XzUxMiwgMTE1MjA5fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXYzMmhpCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc3Jhdl9kLCAxMDQ0OTN9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JhdjRzaQorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3Jhdl9xXzUxMiwgMTE1MTM2fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXY4ZGkKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNyYXZfd18xMjgsIDExNTE2MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmF2OGhpCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc3Jhdl9kXzI1NiwgMTA0NTE3fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXY4c2kKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNyYXZfcV8xMjgsIDExNTA4Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmF2cTEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3Jhdl9xXzI1NiwgMTE1MTExfSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXZxMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzcmFfdywgMTE5Nzk2fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXcKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BzcmFfdywgMTIyODQ0fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXcxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmFfdywgMTA0NDE5fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXcyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNyYV93XzUxMiwgMTE0OTEyfSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXc1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHNyYWlfdywgMTE5ODM5fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXdpCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc3JhaV93LCAxMjI4OTN9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3Jhd2kxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmFpX3csIDEwNDQ2OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmF3aTI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3JhaV93XzUxMiwgMTE1MDM2fSwgLy8gX19idWlsdGluX2lhMzJfcHNyYXdpNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzcmxfZCwgMTE5ODYxfSwgLy8gX19idWlsdGluX2lhMzJfcHNybGQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BzcmxfZCwgMTIyOTE4fSwgLy8gX19idWlsdGluX2lhMzJfcHNybGQxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmxfZCwgMTA0NTQxfSwgLy8gX19idWlsdGluX2lhMzJfcHNybGQyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNybF9kXzUxMiwgMTE1MjM0fSwgLy8gX19idWlsdGluX2lhMzJfcHNybGQ1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHNybGlfZCwgMTE5OTI0fSwgLy8gX19idWlsdGluX2lhMzJfcHNybGRpCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc3JsaV9kLCAxMjI5OTB9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JsZGkxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmxpX2QsIDEwNDYxM30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmxkaTI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3JsaV9kXzUxMiwgMTE1MzA2fSwgLy8gX19idWlsdGluX2lhMzJfcHNybGRpNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzcmxfcSwgMTE5ODgyfSwgLy8gX19idWlsdGluX2lhMzJfcHNybHEKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BzcmxfcSwgMTIyOTQyfSwgLy8gX19idWlsdGluX2lhMzJfcHNybHExMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmxfcSwgMTA0NTY1fSwgLy8gX19idWlsdGluX2lhMzJfcHNybHEyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNybF9xXzUxMiwgMTE1MjU4fSwgLy8gX19idWlsdGluX2lhMzJfcHNybHE1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHNybGlfcSwgMTE5OTQ2fSwgLy8gX19idWlsdGluX2lhMzJfcHNybHFpCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl9wc3JsaV9xLCAxMjMwMTV9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JscWkxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdngyX3BzcmxpX3EsIDEwNDYzOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzcmxxaTI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3JsaV9xXzUxMiwgMTE1MzMxfSwgLy8gX19idWlsdGluX2lhMzJfcHNybHFpNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Bzcmx2X3dfMjU2LCAxMTU0NTR9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JsdjE2aGkKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNybHZfZF81MTIsIDExNTM4MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Bzcmx2MTZzaQorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcHNybHZfcSwgMTA0NzM2fSwgLy8gX19idWlsdGluX2lhMzJfcHNybHYyZGkKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNybHZfd181MTIsIDExNTQ3OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Bzcmx2MzJoaQorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcHNybHZfcV8yNTYsIDEwNDc2MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Bzcmx2NGRpCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc3Jsdl9kLCAxMDQ2ODh9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JsdjRzaQorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3Jsdl9xXzUxMiwgMTE1NDA2fSwgLy8gX19idWlsdGluX2lhMzJfcHNybHY4ZGkKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHNybHZfd18xMjgsIDExNTQzMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Bzcmx2OGhpCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4Ml9wc3Jsdl9kXzI1NiwgMTA0NzEyfSwgLy8gX19idWlsdGluX2lhMzJfcHNybHY4c2kKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHNybF93LCAxMTk5MDN9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JsdworICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfcHNybF93LCAxMjI5NjZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JsdzEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcHNybF93LCAxMDQ1ODl9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JsdzI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wc3JsX3dfNTEyLCAxMTUyODJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3JsdzUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wc3JsaV93LCAxMTk5Njh9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3Jsd2kKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3BzcmxpX3csIDEyMzA0MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Bzcmx3aTEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDJfcHNybGlfdywgMTA0NjYzfSwgLy8gX19idWlsdGluX2lhMzJfcHNybHdpMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BzcmxpX3dfNTEyLCAxMTUzNTZ9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3Jsd2k1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHN1Yl9iLCAxMTk5OTB9LCAvLyBfX2J1aWx0aW5faWEzMl9wc3ViYgorICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wc3ViX2QsIDEyMDAxMX0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzdWJkCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzdWJfcSwgMTIwMDMyfSwgLy8gX19idWlsdGluX2lhMzJfcHN1YnEKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcHN1YnNfYiwgMTIwMDc0fSwgLy8gX19idWlsdGluX2lhMzJfcHN1YnNiCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BzdWJzX3csIDEyMDA5Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3BzdWJzdworICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wc3VidXNfYiwgMTIwMTE4fSwgLy8gX19idWlsdGluX2lhMzJfcHN1YnVzYgorICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wc3VidXNfdywgMTIwMTQxfSwgLy8gX19idWlsdGluX2lhMzJfcHN1YnVzdworICAgICAge0ludHJpbnNpYzo6eDg2X21teF9wc3ViX3csIDEyMDA1M30sIC8vIF9fYnVpbHRpbl9pYTMyX3BzdWJ3CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3B0ZXJubG9nX2RfMTI4LCAxMTU1MDR9LCAvLyBfX2J1aWx0aW5faWEzMl9wdGVybmxvZ2QxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHRlcm5sb2dfZF8yNTYsIDExNTUzMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3B0ZXJubG9nZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wdGVybmxvZ19kXzUxMiwgMTE1NTYwfSwgLy8gX19idWlsdGluX2lhMzJfcHRlcm5sb2dkNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3B0ZXJubG9nX3FfMTI4LCAxMTU1ODh9LCAvLyBfX2J1aWx0aW5faWEzMl9wdGVybmxvZ3ExMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcHRlcm5sb2dfcV8yNTYsIDExNTYxNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3B0ZXJubG9ncTI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wdGVybmxvZ19xXzUxMiwgMTE1NjQ0fSwgLy8gX19idWlsdGluX2lhMzJfcHRlcm5sb2dxNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDFfcHRlc3RjLCAxMjM2NDF9LCAvLyBfX2J1aWx0aW5faWEzMl9wdGVzdGMxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfcHRlc3RjXzI1NiwgMTAyMTkwfSwgLy8gX19idWlsdGluX2lhMzJfcHRlc3RjMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDFfcHRlc3RuemMsIDEyMzY2Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3B0ZXN0bnpjMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3B0ZXN0bnpjXzI1NiwgMTAyMjE1fSwgLy8gX19idWlsdGluX2lhMzJfcHRlc3RuemMyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2U0MV9wdGVzdHosIDEyMzY5M30sIC8vIF9fYnVpbHRpbl9pYTMyX3B0ZXN0ejEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF9wdGVzdHpfMjU2LCAxMDIyNDJ9LCAvLyBfX2J1aWx0aW5faWEzMl9wdGVzdHoyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9wdHdyaXRlMzIsIDEyMDQ4OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3B0d3JpdGUzMgorICAgICAge0ludHJpbnNpYzo6eDg2X3B0d3JpdGU2NCwgMTIwNTE0fSwgLy8gX19idWlsdGluX2lhMzJfcHR3cml0ZTY0CisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3B1bnBja2hidywgMTIwMTY0fSwgLy8gX19idWlsdGluX2lhMzJfcHVucGNraGJ3CisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3B1bnBja2hkcSwgMTIwMTg5fSwgLy8gX19idWlsdGluX2lhMzJfcHVucGNraGRxCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3B1bnBja2h3ZCwgMTIwMjE0fSwgLy8gX19idWlsdGluX2lhMzJfcHVucGNraHdkCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3B1bnBja2xidywgMTIwMjM5fSwgLy8gX19idWlsdGluX2lhMzJfcHVucGNrbGJ3CisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3B1bnBja2xkcSwgMTIwMjY0fSwgLy8gX19idWlsdGluX2lhMzJfcHVucGNrbGRxCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3B1bnBja2x3ZCwgMTIwMjg5fSwgLy8gX19idWlsdGluX2lhMzJfcHVucGNrbHdkCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3B4b3IsIDEyMDMxNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3B4b3IKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19yYW5nZV9wZF8xMjgsIDExMjA5OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3JhbmdlcGQxMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JhbmdlX3BkXzI1NiwgMTEyMTMwfSwgLy8gX19idWlsdGluX2lhMzJfcmFuZ2VwZDI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcmFuZ2VfcGRfNTEyLCAxMTIxNjF9LCAvLyBfX2J1aWx0aW5faWEzMl9yYW5nZXBkNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19yYW5nZV9wc18xMjgsIDExMjE5Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3JhbmdlcHMxMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JhbmdlX3BzXzI1NiwgMTEyMjIzfSwgLy8gX19idWlsdGluX2lhMzJfcmFuZ2VwczI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcmFuZ2VfcHNfNTEyLCAxMTIyNTR9LCAvLyBfX2J1aWx0aW5faWEzMl9yYW5nZXBzNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19yYW5nZV9zZCwgMTEyMjg1fSwgLy8gX19idWlsdGluX2lhMzJfcmFuZ2VzZDEyOF9yb3VuZF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcmFuZ2Vfc3MsIDExMjMyMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Jhbmdlc3MxMjhfcm91bmRfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AxNF9wZF8xMjgsIDExNTY3Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDE0cGQxMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AxNF9wZF8yNTYsIDExNTcwM30sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDE0cGQyNTZfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AxNF9wZF81MTIsIDExNTczNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDE0cGQ1MTJfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AxNF9wc18xMjgsIDExNTc2NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDE0cHMxMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AxNF9wc18yNTYsIDExNTc5Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDE0cHMyNTZfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AxNF9wc181MTIsIDExNTgyN30sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDE0cHM1MTJfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AxNF9zZCwgMTE1ODU4fSwgLy8gX19idWlsdGluX2lhMzJfcmNwMTRzZF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3JjcDE0X3NzLCAxMTU4ODZ9LCAvLyBfX2J1aWx0aW5faWEzMl9yY3AxNHNzX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcmNwMjhfcGQsIDExNTkxNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDI4cGRfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yY3AyOF9wcywgMTE1OTQyfSwgLy8gX19idWlsdGluX2lhMzJfcmNwMjhwc19tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3JjcDI4X3NkLCAxMTU5NzB9LCAvLyBfX2J1aWx0aW5faWEzMl9yY3AyOHNkX3JvdW5kX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcmNwMjhfc3MsIDExNjAwNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcDI4c3Nfcm91bmRfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV9yY3BfcHMsIDEyMTU3OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcHBzCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3JjcF9wc18yNTYsIDEwMjI2N30sIC8vIF9fYnVpbHRpbl9pYTMyX3JjcHBzMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlX3JjcF9zcywgMTIxNTk5fSwgLy8gX19idWlsdGluX2lhMzJfcmNwc3MKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9yZGZzYmFzZV8zMiwgMTIwNTM5fSwgLy8gX19idWlsdGluX2lhMzJfcmRmc2Jhc2UzMgorICAgICAge0ludHJpbnNpYzo6eDg2X3JkZnNiYXNlXzY0LCAxMjA1NjV9LCAvLyBfX2J1aWx0aW5faWEzMl9yZGZzYmFzZTY0CisgICAgICB7SW50cmluc2ljOjp4ODZfcmRnc2Jhc2VfMzIsIDEyMDU5MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3JkZ3NiYXNlMzIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9yZGdzYmFzZV82NCwgMTIwNjE3fSwgLy8gX19idWlsdGluX2lhMzJfcmRnc2Jhc2U2NAorICAgICAge0ludHJpbnNpYzo6eDg2X3JkcGlkLCAxMjA2NDN9LCAvLyBfX2J1aWx0aW5faWEzMl9yZHBpZAorICAgICAge0ludHJpbnNpYzo6eDg2X3JkcGtydSwgMTIwNjY0fSwgLy8gX19idWlsdGluX2lhMzJfcmRwa3J1CisgICAgICB7SW50cmluc2ljOjp4ODZfcmRwbWMsIDEyMDY4Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3JkcG1jCisgICAgICB7SW50cmluc2ljOjp4ODZfcmRzc3BkLCAxMjA3MDd9LCAvLyBfX2J1aWx0aW5faWEzMl9yZHNzcGQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9yZHNzcHEsIDEyMDcyOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Jkc3NwcQorICAgICAge0ludHJpbnNpYzo6eDg2X3JkdHNjLCAxMjA3NTF9LCAvLyBfX2J1aWx0aW5faWEzMl9yZHRzYworICAgICAge0ludHJpbnNpYzo6eDg2X2ZsYWdzX3JlYWRfdTMyLCAxMTgzNDR9LCAvLyBfX2J1aWx0aW5faWEzMl9yZWFkZWZsYWdzX3UzMgorICAgICAge0ludHJpbnNpYzo6eDg2X2ZsYWdzX3JlYWRfdTY0LCAxMTgzNzR9LCAvLyBfX2J1aWx0aW5faWEzMl9yZWFkZWZsYWdzX3U2NAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JlZHVjZV9wZF8xMjgsIDExMjM1OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3JlZHVjZXBkMTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19yZWR1Y2VfcGRfMjU2LCAxMTIzOTF9LCAvLyBfX2J1aWx0aW5faWEzMl9yZWR1Y2VwZDI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcmVkdWNlX3BkXzUxMiwgMTEyNDIzfSwgLy8gX19idWlsdGluX2lhMzJfcmVkdWNlcGQ1MTJfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JlZHVjZV9wc18xMjgsIDExMjQ1NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3JlZHVjZXBzMTI4X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19yZWR1Y2VfcHNfMjU2LCAxMTI0ODd9LCAvLyBfX2J1aWx0aW5faWEzMl9yZWR1Y2VwczI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcmVkdWNlX3BzXzUxMiwgMTEyNTE5fSwgLy8gX19idWlsdGluX2lhMzJfcmVkdWNlcHM1MTJfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JlZHVjZV9zZCwgMTEyNTUxfSwgLy8gX19idWlsdGluX2lhMzJfcmVkdWNlc2RfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JlZHVjZV9zcywgMTEyNTgwfSwgLy8gX19idWlsdGluX2lhMzJfcmVkdWNlc3NfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JuZHNjYWxlX3BkXzEyOCwgMTEyNjA5fSwgLy8gX19idWlsdGluX2lhMzJfcm5kc2NhbGVwZF8xMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JuZHNjYWxlX3BkXzI1NiwgMTEyNjQ0fSwgLy8gX19idWlsdGluX2lhMzJfcm5kc2NhbGVwZF8yNTZfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3JuZHNjYWxlX3BkXzUxMiwgMTEyNjc5fSwgLy8gX19idWlsdGluX2lhMzJfcm5kc2NhbGVwZF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcm5kc2NhbGVfcHNfMTI4LCAxMTI3MTB9LCAvLyBfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBzXzEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcm5kc2NhbGVfcHNfMjU2LCAxMTI3NDV9LCAvLyBfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBzXzI1Nl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcm5kc2NhbGVfcHNfNTEyLCAxMTI3ODB9LCAvLyBfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBzX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19ybmRzY2FsZV9zZCwgMTEyODExfSwgLy8gX19idWlsdGluX2lhMzJfcm5kc2NhbGVzZF9yb3VuZF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfcm5kc2NhbGVfc3MsIDExMjg0OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JuZHNjYWxlc3Nfcm91bmRfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQxX3JvdW5kX3BkLCAxMjM3MTh9LCAvLyBfX2J1aWx0aW5faWEzMl9yb3VuZHBkCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3JvdW5kX3BkXzI1NiwgMTAyMjkxfSwgLy8gX19idWlsdGluX2lhMzJfcm91bmRwZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQxX3JvdW5kX3BzLCAxMjM3NDF9LCAvLyBfX2J1aWx0aW5faWEzMl9yb3VuZHBzCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3JvdW5kX3BzXzI1NiwgMTAyMzE3fSwgLy8gX19idWlsdGluX2lhMzJfcm91bmRwczI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTQxX3JvdW5kX3NkLCAxMjM3NjR9LCAvLyBfX2J1aWx0aW5faWEzMl9yb3VuZHNkCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlNDFfcm91bmRfc3MsIDEyMzc4N30sIC8vIF9fYnVpbHRpbl9pYTMyX3JvdW5kc3MKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQxNF9wZF8xMjgsIDExNjAzOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JzcXJ0MTRwZDEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3JzcXJ0MTRfcGRfMjU2LCAxMTYwNzF9LCAvLyBfX2J1aWx0aW5faWEzMl9yc3FydDE0cGQyNTZfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yc3FydDE0X3BkXzUxMiwgMTE2MTA0fSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQxNHBkNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQxNF9wc18xMjgsIDExNjEzN30sIC8vIF9fYnVpbHRpbl9pYTMyX3JzcXJ0MTRwczEyOF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3JzcXJ0MTRfcHNfMjU2LCAxMTYxNzB9LCAvLyBfX2J1aWx0aW5faWEzMl9yc3FydDE0cHMyNTZfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9yc3FydDE0X3BzXzUxMiwgMTE2MjAzfSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQxNHBzNTEyX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQxNF9zZCwgMTE2MjM2fSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQxNHNkX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQxNF9zcywgMTE2MjY2fSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQxNHNzX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQyOF9wZCwgMTE2Mjk2fSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQyOHBkX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQyOF9wcywgMTE2MzI2fSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQyOHBzX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQyOF9zZCwgMTE2MzU2fSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQyOHNkX3JvdW5kX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcnNxcnQyOF9zcywgMTE2MzkyfSwgLy8gX19idWlsdGluX2lhMzJfcnNxcnQyOHNzX3JvdW5kX21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfcnNxcnRfcHMsIDEyMTYyMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3JzcXJ0cHMKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfcnNxcnRfcHNfMjU2LCAxMDIzNDN9LCAvLyBfX2J1aWx0aW5faWEzMl9yc3FydHBzMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlX3JzcXJ0X3NzLCAxMjE2NDN9LCAvLyBfX2J1aWx0aW5faWEzMl9yc3FydHNzCisgICAgICB7SW50cmluc2ljOjp4ODZfcnN0b3Jzc3AsIDEyMDc3Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3JzdG9yc3NwCisgICAgICB7SW50cmluc2ljOjp4ODZfc2F2ZXByZXZzc3AsIDEyMDc5Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3NhdmVwcmV2c3NwCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfc2NhbGVmX3BkXzEyOCwgMTEyODg1fSwgLy8gX19idWlsdGluX2lhMzJfc2NhbGVmcGQxMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3NjYWxlZl9wZF8yNTYsIDExMjkxN30sIC8vIF9fYnVpbHRpbl9pYTMyX3NjYWxlZnBkMjU2X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19zY2FsZWZfcGRfNTEyLCAxMTI5NDl9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2FsZWZwZDUxMl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfc2NhbGVmX3BzXzEyOCwgMTEyOTgxfSwgLy8gX19idWlsdGluX2lhMzJfc2NhbGVmcHMxMjhfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3NjYWxlZl9wc18yNTYsIDExMzAxM30sIC8vIF9fYnVpbHRpbl9pYTMyX3NjYWxlZnBzMjU2X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza19zY2FsZWZfcHNfNTEyLCAxMTMwNDV9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2FsZWZwczUxMl9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfc2NhbGVmX3NkLCAxMTMwNzd9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2FsZWZzZF9yb3VuZF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfc2NhbGVmX3NzLCAxMTMxMTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2FsZWZzc19yb3VuZF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3NjYXR0ZXJwZl9kcGRfNTEyLCAxMTY0Mjh9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVycGZkcGQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfc2NhdHRlcnBmX2Rwc181MTIsIDExNjQ1Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJwZmRwcworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zY2F0dGVycGZfcXBkXzUxMiwgMTE2NDg0fSwgLy8gX19idWlsdGluX2lhMzJfc2NhdHRlcnBmcXBkCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3NjYXR0ZXJwZl9xcHNfNTEyLCAxMTY1MTJ9LCAvLyBfX2J1aWx0aW5faWEzMl9zY2F0dGVycGZxcHMKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zZXRzc2JzeSwgMTIwODIzfSwgLy8gX19idWlsdGluX2lhMzJfc2V0c3Nic3kKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2Vfc2ZlbmNlLCAxMjE2NjZ9LCAvLyBfX2J1aWx0aW5faWEzMl9zZmVuY2UKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zaGExbXNnMSwgMTIwODQ3fSwgLy8gX19idWlsdGluX2lhMzJfc2hhMW1zZzEKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zaGExbXNnMiwgMTIwODcxfSwgLy8gX19idWlsdGluX2lhMzJfc2hhMW1zZzIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zaGExbmV4dGUsIDEyMDg5NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3NoYTFuZXh0ZQorICAgICAge0ludHJpbnNpYzo6eDg2X3NoYTFybmRzNCwgMTIwOTIwfSwgLy8gX19idWlsdGluX2lhMzJfc2hhMXJuZHM0CisgICAgICB7SW50cmluc2ljOjp4ODZfc2hhMjU2bXNnMSwgMTIwOTQ1fSwgLy8gX19idWlsdGluX2lhMzJfc2hhMjU2bXNnMQorICAgICAge0ludHJpbnNpYzo6eDg2X3NoYTI1Nm1zZzIsIDEyMDk3MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3NoYTI1Nm1zZzIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zaGEyNTZybmRzMiwgMTIwOTk3fSwgLy8gX19idWlsdGluX2lhMzJfc2hhMjU2cm5kczIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zbHdwY2IsIDEyMTAyNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Nsd3BjYgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zdWJfcGRfNTEyLCAxMTY1NDB9LCAvLyBfX2J1aWx0aW5faWEzMl9zdWJwZDUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9zdWJfcHNfNTEyLCAxMTY1NjR9LCAvLyBfX2J1aWx0aW5faWEzMl9zdWJwczUxMgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3N1Yl9zZF9yb3VuZCwgMTEzMTQ3fSwgLy8gX19idWlsdGluX2lhMzJfc3Vic2Rfcm91bmRfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3N1Yl9zc19yb3VuZCwgMTEzMTc5fSwgLy8gX19idWlsdGluX2lhMzJfc3Vic3Nfcm91bmRfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X3RwYXVzZSwgMTI1MDg3fSwgLy8gX19idWlsdGluX2lhMzJfdHBhdXNlCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlX3Vjb21pZXFfc3MsIDEyMTY4OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Vjb21pZXEKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfdWNvbWlnZV9zcywgMTIxNzExfSwgLy8gX19idWlsdGluX2lhMzJfdWNvbWlnZQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV91Y29taWd0X3NzLCAxMjE3MzR9LCAvLyBfX2J1aWx0aW5faWEzMl91Y29taWd0CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlX3Vjb21pbGVfc3MsIDEyMTc1N30sIC8vIF9fYnVpbHRpbl9pYTMyX3Vjb21pbGUKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2VfdWNvbWlsdF9zcywgMTIxNzgwfSwgLy8gX19idWlsdGluX2lhMzJfdWNvbWlsdAorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZV91Y29taW5lcV9zcywgMTIxODAzfSwgLy8gX19idWlsdGluX2lhMzJfdWNvbWluZXEKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3Vjb21pZXFfc2QsIDEyMzA2NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3Vjb21pc2RlcQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfdWNvbWlnZV9zZCwgMTIzMDkwfSwgLy8gX19idWlsdGluX2lhMzJfdWNvbWlzZGdlCisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl91Y29taWd0X3NkLCAxMjMxMTV9LCAvLyBfX2J1aWx0aW5faWEzMl91Y29taXNkZ3QKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9zc2UyX3Vjb21pbGVfc2QsIDEyMzE0MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Vjb21pc2RsZQorICAgICAge0ludHJpbnNpYzo6eDg2X3NzZTJfdWNvbWlsdF9zZCwgMTIzMTY1fSwgLy8gX19idWlsdGluX2lhMzJfdWNvbWlzZGx0CisgICAgICB7SW50cmluc2ljOjp4ODZfc3NlMl91Y29taW5lcV9zZCwgMTIzMTkwfSwgLy8gX19idWlsdGluX2lhMzJfdWNvbWlzZG5lcQorICAgICAge0ludHJpbnNpYzo6eDg2X3Vtb25pdG9yLCAxMjUxMDl9LCAvLyBfX2J1aWx0aW5faWEzMl91bW9uaXRvcgorICAgICAge0ludHJpbnNpYzo6eDg2X3Vtd2FpdCwgMTI1MTMzfSwgLy8gX19idWlsdGluX2lhMzJfdW13YWl0CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Zjb21pX3NkLCAxMTY1ODh9LCAvLyBfX2J1aWx0aW5faWEzMl92Y29taXNkCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3Zjb21pX3NzLCAxMTY2MTF9LCAvLyBfX2J1aWx0aW5faWEzMl92Y29taXNzCisgICAgICB7SW50cmluc2ljOjp4ODZfdmN2dHBoMnBzXzEyOCwgMTI1MTU1fSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHBoMnBzCisgICAgICB7SW50cmluc2ljOjp4ODZfdmN2dHBoMnBzXzI1NiwgMTI1MTgwfSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHBoMnBzMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfdmN2dHBoMnBzXzI1NiwgMTEzMjQxfSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHBoMnBzMjU2X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza192Y3Z0cGgycHNfNTEyLCAxMTMyNzR9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0cGgycHM1MTJfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3ZjdnRwaDJwc18xMjgsIDExMzIxMX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnRwaDJwc19tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfdmN2dHBzMnBoXzEyOCwgMTI1MjA4fSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHBzMnBoCisgICAgICB7SW50cmluc2ljOjp4ODZfdmN2dHBzMnBoXzI1NiwgMTI1MjMzfSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHBzMnBoMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX21hc2tfdmN2dHBzMnBoXzI1NiwgMTEzMzM3fSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHBzMnBoMjU2X21hc2sKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfbWFza192Y3Z0cHMycGhfNTEyLCAxMTMzNzB9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0cHMycGg1MTJfbWFzaworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9tYXNrX3ZjdnRwczJwaF8xMjgsIDExMzMwN30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnRwczJwaF9tYXNrCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZjdnRzZDJzaTMyLCAxMTY2MzR9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0c2Qyc2kzMgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92Y3Z0c2Qyc2k2NCwgMTE2NjYxfSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHNkMnNpNjQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdmN2dHNkMnVzaTMyLCAxMTY2ODh9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0c2QydXNpMzIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdmN2dHNkMnVzaTY0LCAxMTY3MTZ9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0c2QydXNpNjQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdmN2dHNzMnNpMzIsIDExNjc0NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnRzczJzaTMyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZjdnRzczJzaTY0LCAxMTY3NzF9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0c3Myc2k2NAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92Y3Z0c3MydXNpMzIsIDExNjc5OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnRzczJ1c2kzMgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92Y3Z0c3MydXNpNjQsIDExNjgyNn0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnRzczJ1c2k2NAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9jdnR0c2Qyc2ksIDEwNTI4Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnR0c2Qyc2kzMgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9jdnR0c2Qyc2k2NCwgMTA1MzEwfSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHRzZDJzaTY0CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2N2dHRzZDJ1c2ksIDEwNTMzOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnR0c2QydXNpMzIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfY3Z0dHNkMnVzaTY0LCAxMDUzNjd9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0dHNkMnVzaTY0CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2N2dHRzczJzaSwgMTA1Mzk2fSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHRzczJzaTMyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2N2dHRzczJzaTY0LCAxMDU0MjR9LCAvLyBfX2J1aWx0aW5faWEzMl92Y3Z0dHNzMnNpNjQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfY3Z0dHNzMnVzaSwgMTA1NDUyfSwgLy8gX19idWlsdGluX2lhMzJfdmN2dHRzczJ1c2kzMgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9jdnR0c3MydXNpNjQsIDEwNTQ4MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZjdnR0c3MydXNpNjQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9tbXhfcGV4dHJfdywgMTE5MzI0fSwgLy8gX19idWlsdGluX2lhMzJfdmVjX2V4dF92NGhpCisgICAgICB7SW50cmluc2ljOjp4ODZfbW14X3BpbnNyX3csIDExOTM1Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZlY19zZXRfdjRoaQorICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92ZnJjel9wZCwgMTI1OTA0fSwgLy8gX19idWlsdGluX2lhMzJfdmZyY3pwZAorICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92ZnJjel9wZF8yNTYsIDEyNTkyN30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZmcmN6cGQyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdmZyY3pfcHMsIDEyNTk1M30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZmcmN6cHMKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdmZyY3pfcHNfMjU2LCAxMjU5NzZ9LCAvLyBfX2J1aWx0aW5faWEzMl92ZnJjenBzMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZmcmN6X3NkLCAxMjYwMDJ9LCAvLyBfX2J1aWx0aW5faWEzMl92ZnJjenNkCisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZmcmN6X3NzLCAxMjYwMjV9LCAvLyBfX2J1aWx0aW5faWEzMl92ZnJjenNzCisgICAgICB7SW50cmluc2ljOjp4ODZfdmdmMnA4YWZmaW5laW52cWJfMTI4LCAxMjUyNjF9LCAvLyBfX2J1aWx0aW5faWEzMl92Z2YycDhhZmZpbmVpbnZxYl92MTZxaQorICAgICAge0ludHJpbnNpYzo6eDg2X3ZnZjJwOGFmZmluZWludnFiXzI1NiwgMTI1MzAwfSwgLy8gX19idWlsdGluX2lhMzJfdmdmMnA4YWZmaW5laW52cWJfdjMycWkKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl92Z2YycDhhZmZpbmVpbnZxYl81MTIsIDEyNTMzOX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZnZjJwOGFmZmluZWludnFiX3Y2NHFpCisgICAgICB7SW50cmluc2ljOjp4ODZfdmdmMnA4YWZmaW5lcWJfMTI4LCAxMjUzNzh9LCAvLyBfX2J1aWx0aW5faWEzMl92Z2YycDhhZmZpbmVxYl92MTZxaQorICAgICAge0ludHJpbnNpYzo6eDg2X3ZnZjJwOGFmZmluZXFiXzI1NiwgMTI1NDE0fSwgLy8gX19idWlsdGluX2lhMzJfdmdmMnA4YWZmaW5lcWJfdjMycWkKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl92Z2YycDhhZmZpbmVxYl81MTIsIDEyNTQ1MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZnZjJwOGFmZmluZXFiX3Y2NHFpCisgICAgICB7SW50cmluc2ljOjp4ODZfdmdmMnA4bXVsYl8xMjgsIDEyNTQ4Nn0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZnZjJwOG11bGJfdjE2cWkKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl92Z2YycDhtdWxiXzI1NiwgMTI1NTE4fSwgLy8gX19idWlsdGluX2lhMzJfdmdmMnA4bXVsYl92MzJxaQorICAgICAge0ludHJpbnNpYzo6eDg2X3ZnZjJwOG11bGJfNTEyLCAxMjU1NTB9LCAvLyBfX2J1aWx0aW5faWEzMl92Z2YycDhtdWxiX3Y2NHFpCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2NvbmZsaWN0X3FfMTI4LCAxMDUxMDh9LCAvLyBfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0ZGlfMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2NvbmZsaWN0X3FfMjU2LCAxMDUxNDB9LCAvLyBfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0ZGlfMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2NvbmZsaWN0X3FfNTEyLCAxMDUxNzJ9LCAvLyBfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0ZGlfNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2NvbmZsaWN0X2RfMTI4LCAxMDUwMTJ9LCAvLyBfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0c2lfMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2NvbmZsaWN0X2RfMjU2LCAxMDUwNDR9LCAvLyBfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0c2lfMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX2NvbmZsaWN0X2RfNTEyLCAxMDUwNzZ9LCAvLyBfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0c2lfNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZHBidXNkXzEyOCwgMTE2ODU0fSwgLy8gX19idWlsdGluX2lhMzJfdnBkcGJ1c2QxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBkcGJ1c2RfMjU2LCAxMTY4ODF9LCAvLyBfX2J1aWx0aW5faWEzMl92cGRwYnVzZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGRwYnVzZF81MTIsIDExNjkwOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZHBidXNkNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZHBidXNkc18xMjgsIDExNjkzNX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZHBidXNkczEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGRwYnVzZHNfMjU2LCAxMTY5NjN9LCAvLyBfX2J1aWx0aW5faWEzMl92cGRwYnVzZHMyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBkcGJ1c2RzXzUxMiwgMTE2OTkxfSwgLy8gX19idWlsdGluX2lhMzJfdnBkcGJ1c2RzNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZHB3c3NkXzEyOCwgMTE3MDE5fSwgLy8gX19idWlsdGluX2lhMzJfdnBkcHdzc2QxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBkcHdzc2RfMjU2LCAxMTcwNDZ9LCAvLyBfX2J1aWx0aW5faWEzMl92cGRwd3NzZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGRwd3NzZF81MTIsIDExNzA3M30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZHB3c3NkNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZHB3c3Nkc18xMjgsIDExNzEwMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZHB3c3NkczEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGRwd3NzZHNfMjU2LCAxMTcxMjh9LCAvLyBfX2J1aWx0aW5faWEzMl92cGRwd3NzZHMyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBkcHdzc2RzXzUxMiwgMTE3MTU2fSwgLy8gX19idWlsdGluX2lhMzJfdnBkcHdzc2RzNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaTJ2YXJfZF8xMjgsIDExNzE4NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJkMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaTJ2YXJfZF8yNTYsIDExNzIxNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJkMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaTJ2YXJfZF81MTIsIDExNzI0NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJkNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaTJ2YXJfaGlfMTI4LCAxMTcyNzR9LCAvLyBfX2J1aWx0aW5faWEzMl92cGVybWkydmFyaGkxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pMnZhcl9oaV8yNTYsIDExNzMwNX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJoaTI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGVybWkydmFyX2hpXzUxMiwgMTE3MzM2fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcmhpNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaTJ2YXJfcGRfMTI4LCAxMTczNjd9LCAvLyBfX2J1aWx0aW5faWEzMl92cGVybWkydmFycGQxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pMnZhcl9wZF8yNTYsIDExNzM5OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJwZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGVybWkydmFyX3BkXzUxMiwgMTE3NDI5fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcnBkNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaTJ2YXJfcHNfMTI4LCAxMTc0NjB9LCAvLyBfX2J1aWx0aW5faWEzMl92cGVybWkydmFycHMxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pMnZhcl9wc18yNTYsIDExNzQ5MX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJwczI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGVybWkydmFyX3BzXzUxMiwgMTE3NTIyfSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcnBzNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaTJ2YXJfcV8xMjgsIDExNzU1M30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJxMTI4CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaTJ2YXJfcV8yNTYsIDExNzU4M30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJxMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaTJ2YXJfcV81MTIsIDExNzYxM30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJxNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaTJ2YXJfcWlfMTI4LCAxMTc2NDN9LCAvLyBfX2J1aWx0aW5faWEzMl92cGVybWkydmFycWkxMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBlcm1pMnZhcl9xaV8yNTYsIDExNzY3NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaTJ2YXJxaTI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGVybWkydmFyX3FpXzUxMiwgMTE3NzA1fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pMnZhcnFpNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwZXJtaWwycGQsIDEyNjA0OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaWwycGQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBlcm1pbDJwZF8yNTYsIDEyNjA3NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaWwycGQyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBlcm1pbDJwcywgMTI2MTAzfSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pbDJwcworICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cGVybWlsMnBzXzI1NiwgMTI2MTI5fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pbDJwczI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92cGVybWlsdmFyX3BkLCAxMDIzNjl9LCAvLyBfX2J1aWx0aW5faWEzMl92cGVybWlsdmFycGQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfdnBlcm1pbHZhcl9wZF8yNTYsIDEwMjM5N30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaWx2YXJwZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl92cGVybWlsdmFyX3BkXzUxMiwgMTE3NzM2fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pbHZhcnBkNTEyCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3ZwZXJtaWx2YXJfcHMsIDEwMjQyOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwZXJtaWx2YXJwcworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92cGVybWlsdmFyX3BzXzI1NiwgMTAyNDU2fSwgLy8gX19idWlsdGluX2lhMzJfdnBlcm1pbHZhcnBzMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3ZwZXJtaWx2YXJfcHNfNTEyLCAxMTc3Njd9LCAvLyBfX2J1aWx0aW5faWEzMl92cGVybWlsdmFycHM1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBoYWRkYmQsIDEyNjE1OH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwaGFkZGJkCisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwaGFkZGJxLCAxMjYxODJ9LCAvLyBfX2J1aWx0aW5faWEzMl92cGhhZGRicQorICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cGhhZGRidywgMTI2MjA2fSwgLy8gX19idWlsdGluX2lhMzJfdnBoYWRkYncKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBoYWRkZHEsIDEyNjIzMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwaGFkZGRxCisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwaGFkZHViZCwgMTI2MjU0fSwgLy8gX19idWlsdGluX2lhMzJfdnBoYWRkdWJkCisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwaGFkZHVicSwgMTI2Mjc5fSwgLy8gX19idWlsdGluX2lhMzJfdnBoYWRkdWJxCisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwaGFkZHVidywgMTI2MzA0fSwgLy8gX19idWlsdGluX2lhMzJfdnBoYWRkdWJ3CisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwaGFkZHVkcSwgMTI2MzI5fSwgLy8gX19idWlsdGluX2lhMzJfdnBoYWRkdWRxCisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwaGFkZHV3ZCwgMTI2MzU0fSwgLy8gX19idWlsdGluX2lhMzJfdnBoYWRkdXdkCisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwaGFkZHV3cSwgMTI2Mzc5fSwgLy8gX19idWlsdGluX2lhMzJfdnBoYWRkdXdxCisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwaGFkZHdkLCAxMjY0MDR9LCAvLyBfX2J1aWx0aW5faWEzMl92cGhhZGR3ZAorICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cGhhZGR3cSwgMTI2NDI4fSwgLy8gX19idWlsdGluX2lhMzJfdnBoYWRkd3EKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBoc3ViYncsIDEyNjQ1Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwaHN1YmJ3CisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwaHN1YmRxLCAxMjY0NzZ9LCAvLyBfX2J1aWx0aW5faWEzMl92cGhzdWJkcQorICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cGhzdWJ3ZCwgMTI2NTAwfSwgLy8gX19idWlsdGluX2lhMzJfdnBoc3Vid2QKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBtYWNzZGQsIDEyNjUyNH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwbWFjc2RkCisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwbWFjc2RxaCwgMTI2NTQ4fSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWNzZHFoCisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwbWFjc2RxbCwgMTI2NTczfSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWNzZHFsCisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwbWFjc3NkZCwgMTI2NTk4fSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWNzc2RkCisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwbWFjc3NkcWgsIDEyNjYyM30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwbWFjc3NkcWgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBtYWNzc2RxbCwgMTI2NjQ5fSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWNzc2RxbAorICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cG1hY3Nzd2QsIDEyNjY3NX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwbWFjc3N3ZAorICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cG1hY3Nzd3csIDEyNjcwMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwbWFjc3N3dworICAgICAge0ludHJpbnNpYzo6eDg2X3hvcF92cG1hY3N3ZCwgMTI2NzI1fSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWNzd2QKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBtYWNzd3csIDEyNjc0OX0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwbWFjc3d3CisgICAgICB7SW50cmluc2ljOjp4ODZfeG9wX3ZwbWFkY3Nzd2QsIDEyNjc3M30sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwbWFkY3Nzd2QKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBtYWRjc3dkLCAxMjY3OTl9LCAvLyBfX2J1aWx0aW5faWEzMl92cG1hZGNzd2QKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBtYWRkNTJoX3VxXzEyOCwgMTE3Nzk4fSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWRkNTJodXExMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBtYWRkNTJoX3VxXzI1NiwgMTE3ODI4fSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWRkNTJodXEyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBtYWRkNTJoX3VxXzUxMiwgMTE3ODU4fSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWRkNTJodXE1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBtYWRkNTJsX3VxXzEyOCwgMTE3ODg4fSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWRkNTJsdXExMjgKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBtYWRkNTJsX3VxXzI1NiwgMTE3OTE4fSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWRkNTJsdXEyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfdnBtYWRkNTJsX3VxXzUxMiwgMTE3OTQ4fSwgLy8gX19idWlsdGluX2lhMzJfdnBtYWRkNTJsdXE1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdng1MTJfcG11bHRpc2hpZnRfcWJfMTI4LCAxMTQzOTd9LCAvLyBfX2J1aWx0aW5faWEzMl92cG11bHRpc2hpZnRxYjEyOAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eDUxMl9wbXVsdGlzaGlmdF9xYl8yNTYsIDExNDQzMH0sIC8vIF9fYnVpbHRpbl9pYTMyX3ZwbXVsdGlzaGlmdHFiMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4NTEyX3BtdWx0aXNoaWZ0X3FiXzUxMiwgMTE0NDYzfSwgLy8gX19idWlsdGluX2lhMzJfdnBtdWx0aXNoaWZ0cWI1MTIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBwZXJtLCAxMjY4MjR9LCAvLyBfX2J1aWx0aW5faWEzMl92cHBlcm0KKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBzaGFiLCAxMjY4NDZ9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNoYWIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBzaGFkLCAxMjY4Njh9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNoYWQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBzaGFxLCAxMjY4OTB9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNoYXEKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBzaGF3LCAxMjY5MTJ9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNoYXcKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBzaGxiLCAxMjY5MzR9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNobGIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBzaGxkLCAxMjY5NTZ9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNobGQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBzaGxxLCAxMjY5Nzh9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNobHEKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94b3BfdnBzaGx3LCAxMjcwMDB9LCAvLyBfX2J1aWx0aW5faWEzMl92cHNobHcKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfdnRlc3RjX3BkLCAxMDI0ODd9LCAvLyBfX2J1aWx0aW5faWEzMl92dGVzdGNwZAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92dGVzdGNfcGRfMjU2LCAxMDI1MTF9LCAvLyBfX2J1aWx0aW5faWEzMl92dGVzdGNwZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92dGVzdGNfcHMsIDEwMjUzOH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0Y3BzCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3Z0ZXN0Y19wc18yNTYsIDEwMjU2Mn0sIC8vIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0Y3BzMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3Z0ZXN0bnpjX3BkLCAxMDI1ODl9LCAvLyBfX2J1aWx0aW5faWEzMl92dGVzdG56Y3BkCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3Z0ZXN0bnpjX3BkXzI1NiwgMTAyNjE1fSwgLy8gX19idWlsdGluX2lhMzJfdnRlc3RuemNwZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92dGVzdG56Y19wcywgMTAyNjQ0fSwgLy8gX19idWlsdGluX2lhMzJfdnRlc3RuemNwcworICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92dGVzdG56Y19wc18yNTYsIDEwMjY3MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0bnpjcHMyNTYKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl9hdnhfdnRlc3R6X3BkLCAxMDI2OTl9LCAvLyBfX2J1aWx0aW5faWEzMl92dGVzdHpwZAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92dGVzdHpfcGRfMjU2LCAxMDI3MjN9LCAvLyBfX2J1aWx0aW5faWEzMl92dGVzdHpwZDI1NgorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92dGVzdHpfcHMsIDEwMjc1MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0enBzCisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3Z0ZXN0el9wc18yNTYsIDEwMjc3NH0sIC8vIF9fYnVpbHRpbl9pYTMyX3Z0ZXN0enBzMjU2CisgICAgICB7SW50cmluc2ljOjp4ODZfYXZ4X3Z6ZXJvYWxsLCAxMDI4MDF9LCAvLyBfX2J1aWx0aW5faWEzMl92emVyb2FsbAorICAgICAge0ludHJpbnNpYzo6eDg2X2F2eF92emVyb3VwcGVyLCAxMDI4MjV9LCAvLyBfX2J1aWx0aW5faWEzMl92emVyb3VwcGVyCisgICAgICB7SW50cmluc2ljOjp4ODZfd2JpbnZkLCAxMjU1ODJ9LCAvLyBfX2J1aWx0aW5faWEzMl93YmludmQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl93Ym5vaW52ZCwgMTI1NjA0fSwgLy8gX19idWlsdGluX2lhMzJfd2Jub2ludmQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl93cmZzYmFzZV8zMiwgMTI1NjI4fSwgLy8gX19idWlsdGluX2lhMzJfd3Jmc2Jhc2UzMgorICAgICAge0ludHJpbnNpYzo6eDg2X3dyZnNiYXNlXzY0LCAxMjU2NTR9LCAvLyBfX2J1aWx0aW5faWEzMl93cmZzYmFzZTY0CisgICAgICB7SW50cmluc2ljOjp4ODZfd3Jnc2Jhc2VfMzIsIDEyNTY4MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3dyZ3NiYXNlMzIKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl93cmdzYmFzZV82NCwgMTI1NzA2fSwgLy8gX19idWlsdGluX2lhMzJfd3Jnc2Jhc2U2NAorICAgICAge0ludHJpbnNpYzo6eDg2X2ZsYWdzX3dyaXRlX3UzMiwgMTE4NDA0fSwgLy8gX19idWlsdGluX2lhMzJfd3JpdGVlZmxhZ3NfdTMyCisgICAgICB7SW50cmluc2ljOjp4ODZfZmxhZ3Nfd3JpdGVfdTY0LCAxMTg0MzV9LCAvLyBfX2J1aWx0aW5faWEzMl93cml0ZWVmbGFnc191NjQKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl93cnBrcnUsIDEyNTczMn0sIC8vIF9fYnVpbHRpbl9pYTMyX3dycGtydQorICAgICAge0ludHJpbnNpYzo6eDg2X3dyc3NkLCAxMjU3NTR9LCAvLyBfX2J1aWx0aW5faWEzMl93cnNzZAorICAgICAge0ludHJpbnNpYzo6eDg2X3dyc3NxLCAxMjU3NzV9LCAvLyBfX2J1aWx0aW5faWEzMl93cnNzcQorICAgICAge0ludHJpbnNpYzo6eDg2X3dydXNzZCwgMTI1Nzk2fSwgLy8gX19idWlsdGluX2lhMzJfd3J1c3NkCisgICAgICB7SW50cmluc2ljOjp4ODZfd3J1c3NxLCAxMjU4MTh9LCAvLyBfX2J1aWx0aW5faWEzMl93cnVzc3EKKyAgICAgIHtJbnRyaW5zaWM6Ong4Nl94YWJvcnQsIDEyNTg0MH0sIC8vIF9fYnVpbHRpbl9pYTMyX3hhYm9ydAorICAgICAge0ludHJpbnNpYzo6eDg2X3hiZWdpbiwgMTI1ODYyfSwgLy8gX19idWlsdGluX2lhMzJfeGJlZ2luCisgICAgICB7SW50cmluc2ljOjp4ODZfeGVuZCwgMTI1ODg0fSwgLy8gX19idWlsdGluX2lhMzJfeGVuZAorICAgICAge0ludHJpbnNpYzo6eDg2X3h0ZXN0LCAxMjcwMjJ9LCAvLyBfX2J1aWx0aW5faWEzMl94dGVzdAogICAgIH07CiAgICAgYXV0byBJID0gc3RkOjpsb3dlcl9ib3VuZChzdGQ6OmJlZ2luKHg4Nk5hbWVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZW5kKHg4Nk5hbWVzKSwKQEAgLTI5ODAxLDEwICsyOTQ5NCwxMCBAQAogICB9CiAgIGlmIChUYXJnZXRQcmVmaXggPT0gInhjb3JlIikgewogICAgIHN0YXRpYyBjb25zdCBCdWlsdGluRW50cnkgeGNvcmVOYW1lc1tdID0gewotICAgICAge0ludHJpbnNpYzo6eGNvcmVfYml0cmV2LCAxMzEyNjN9LCAvLyBfX2J1aWx0aW5fYml0cmV2Ci0gICAgICB7SW50cmluc2ljOjp4Y29yZV9nZXRpZCwgMTMxMjgwfSwgLy8gX19idWlsdGluX2dldGlkCi0gICAgICB7SW50cmluc2ljOjp4Y29yZV9nZXRwcywgMTMxMjk2fSwgLy8gX19idWlsdGluX2dldHBzCi0gICAgICB7SW50cmluc2ljOjp4Y29yZV9zZXRwcywgMTMxMzEyfSwgLy8gX19idWlsdGluX3NldHBzCisgICAgICB7SW50cmluc2ljOjp4Y29yZV9iaXRyZXYsIDEyNzA0M30sIC8vIF9fYnVpbHRpbl9iaXRyZXYKKyAgICAgIHtJbnRyaW5zaWM6Onhjb3JlX2dldGlkLCAxMjcwNjB9LCAvLyBfX2J1aWx0aW5fZ2V0aWQKKyAgICAgIHtJbnRyaW5zaWM6Onhjb3JlX2dldHBzLCAxMjcwNzZ9LCAvLyBfX2J1aWx0aW5fZ2V0cHMKKyAgICAgIHtJbnRyaW5zaWM6Onhjb3JlX3NldHBzLCAxMjcwOTJ9LCAvLyBfX2J1aWx0aW5fc2V0cHMKICAgICB9OwogICAgIGF1dG8gSSA9IHN0ZDo6bG93ZXJfYm91bmQoc3RkOjpiZWdpbih4Y29yZU5hbWVzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6ZW5kKHhjb3JlTmFtZXMpLApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNJbnN0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY0luc3QuaAppbmRleCAzMmE2MmE0Li42MmJiNGZhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY0luc3QuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY0luc3QuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9JbnRyaW5zaWNJbnN0LmggLSBJbnRyaW5zaWMgSW5zdHJ1Y3Rpb24gV3JhcHBlcnMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjUxLDYgKzI1MCwxMiBAQAogICAgICAgY2FzZSBJbnRyaW5zaWM6OmV4cGVyaW1lbnRhbF9jb25zdHJhaW5lZF9sb2cyOgogICAgICAgY2FzZSBJbnRyaW5zaWM6OmV4cGVyaW1lbnRhbF9jb25zdHJhaW5lZF9yaW50OgogICAgICAgY2FzZSBJbnRyaW5zaWM6OmV4cGVyaW1lbnRhbF9jb25zdHJhaW5lZF9uZWFyYnlpbnQ6CisgICAgICBjYXNlIEludHJpbnNpYzo6ZXhwZXJpbWVudGFsX2NvbnN0cmFpbmVkX21heG51bToKKyAgICAgIGNhc2UgSW50cmluc2ljOjpleHBlcmltZW50YWxfY29uc3RyYWluZWRfbWlubnVtOgorICAgICAgY2FzZSBJbnRyaW5zaWM6OmV4cGVyaW1lbnRhbF9jb25zdHJhaW5lZF9jZWlsOgorICAgICAgY2FzZSBJbnRyaW5zaWM6OmV4cGVyaW1lbnRhbF9jb25zdHJhaW5lZF9mbG9vcjoKKyAgICAgIGNhc2UgSW50cmluc2ljOjpleHBlcmltZW50YWxfY29uc3RyYWluZWRfcm91bmQ6CisgICAgICBjYXNlIEludHJpbnNpYzo6ZXhwZXJpbWVudGFsX2NvbnN0cmFpbmVkX3RydW5jOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgIGRlZmF1bHQ6IHJldHVybiBmYWxzZTsKICAgICAgIH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzLmgKaW5kZXggZTFlMTdmOS4uYWQ1ZTdkMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzLmgKQEAgLTEsOSArMSw4IEBACi0vLz09PS0tIGxsdm0vSW5zdHJpbnNpY3MuaCAtIExMVk0gSW50cmluc2ljIEZ1bmN0aW9uIEhhbmRsaW5nIC0tLSotIEMrKyAtKi09PT0vLworLy89PT0tIEludHJpbnNpY3MuaCAtIExMVk0gSW50cmluc2ljIEZ1bmN0aW9uIEhhbmRsaW5nIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3MudGQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3MudGQKaW5kZXggYjQwNWU4Ni4uMDkwZWU2MCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzLnRkCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljcy50ZApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJbnRyaW5zaWNzLnRkIC0gRGVmaW5lcyBhbGwgTExWTSBpbnRyaW5zaWNzIC0tLS0tLS0tLSotIHRhYmxlZ2VuIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtOTAsNiArODksMTAgQEAKIAogZGVmIEludHJOb1JldHVybiA6IEludHJpbnNpY1Byb3BlcnR5OwogCisvLyBJbnRyQ29sZCAtIENhbGxzIHRvIHRoaXMgaW50cmluc2ljIGFyZSBjb2xkLgorLy8gUGFyYWxsZWxzIHRoZSBjb2xkIGF0dHJpYnV0ZSBvbiBMTFZNIElSIGZ1bmN0aW9ucy4KK2RlZiBJbnRyQ29sZCA6IEludHJpbnNpY1Byb3BlcnR5OworCiAvLyBJbnRyTm9kdXBsaWNhdGUgLSBDYWxscyB0byB0aGlzIGludHJpbnNpYyBjYW5ub3QgYmUgZHVwbGljYXRlZC4KIC8vIFBhcmFsbGVscyB0aGUgbm9kdXBsaWNhdGUgYXR0cmlidXRlIG9uIExMVk0gSVIgZnVuY3Rpb25zLgogZGVmIEludHJOb0R1cGxpY2F0ZSA6IEludHJpbnNpY1Byb3BlcnR5OwpAQCAtMTUzLDEwICsxNTYsMTUgQEAKIC8vIHRoZSBpbnRyaW5zaWMgaXMgb3ZlcmxvYWRlZCwgc28gdGhlIG1hdGNoZWQgdHlwZSBzaG91bGQgYmUgZGVjbGFyZWQgYXMgaUFueS4KIGNsYXNzIExMVk1FeHRlbmRlZFR5cGU8aW50IG51bT4gOiBMTFZNTWF0Y2hUeXBlPG51bT47CiBjbGFzcyBMTFZNVHJ1bmNhdGVkVHlwZTxpbnQgbnVtPiA6IExMVk1NYXRjaFR5cGU8bnVtPjsKLWNsYXNzIExMVk1WZWN0b3JTYW1lV2lkdGg8aW50IG51bSwgTExWTVR5cGUgZWx0eT4KLSAgOiBMTFZNTWF0Y2hUeXBlPG51bT4geworCisvLyBNYXRjaCB0aGUgc2NhbGFyL3ZlY3RvciBvZiBhbm90aGVyIGludHJpbnNpYyBwYXJhbWV0ZXIgYnV0IHdpdGggYSBkaWZmZXJlbnQKKy8vIGVsZW1lbnQgdHlwZS4gRWl0aGVyIGJvdGggYXJlIHNjYWxhcnMgb3IgYm90aCBhcmUgdmVjdG9ycyB3aXRoIHRoZSBzYW1lCisvLyBudW1iZXIgb2YgZWxlbWVudHMuCitjbGFzcyBMTFZNU2NhbGFyT3JTYW1lVmVjdG9yV2lkdGg8aW50IGlkeCwgTExWTVR5cGUgZWx0eT4KKyAgOiBMTFZNTWF0Y2hUeXBlPGlkeD4gewogICBWYWx1ZVR5cGUgRWxUeSA9IGVsdHkuVlQ7CiB9CisKIGNsYXNzIExMVk1Qb2ludGVyVG88aW50IG51bT4gOiBMTFZNTWF0Y2hUeXBlPG51bT47CiBjbGFzcyBMTFZNUG9pbnRlclRvRWx0PGludCBudW0+IDogTExWTU1hdGNoVHlwZTxudW0+OwogY2xhc3MgTExWTVZlY3Rvck9mQW55UG9pbnRlcnNUb0VsdDxpbnQgbnVtPiA6IExMVk1NYXRjaFR5cGU8bnVtPjsKQEAgLTMxNSwxMSArMzIzLDg0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fcHRyX3R5LCBsbHZtX3B0cl90eSwgbGx2bV9wdHJwdHJfdHldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyQXJnTWVtT25seSwgTm9DYXB0dXJlPDE+LCBOb0NhcHR1cmU8Mj5dPjsKIAorLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tIE9iakMgQVJDIHJ1bnRpbWUgSW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gTm90ZSB0aGVzZSBhcmUgdG8gc3VwcG9ydCB0aGUgT2JqZWN0aXZlLUMgQVJDIG9wdGltaXplciB3aGljaCB3YW50cyB0bworLy8gZWxpbWluYXRlIHJldGFpbiBhbmQgcmVsZWFzZXMgd2hlcmUgcG9zc2libGUuCisKK2RlZiBpbnRfb2JqY19hdXRvcmVsZWFzZSAgICAgICAgICAgICAgICAgICAgOiBJbnRyaW5zaWM8W2xsdm1fcHRyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fcHRyX3R5XT47CitkZWYgaW50X29iamNfYXV0b3JlbGVhc2VQb29sUG9wICAgICAgICAgICAgIDogSW50cmluc2ljPFtdLCBbbGx2bV9wdHJfdHldPjsKK2RlZiBpbnRfb2JqY19hdXRvcmVsZWFzZVBvb2xQdXNoICAgICAgICAgICAgOiBJbnRyaW5zaWM8W2xsdm1fcHRyX3R5XSwgW10+OworZGVmIGludF9vYmpjX2F1dG9yZWxlYXNlUmV0dXJuVmFsdWUgICAgICAgICA6IEludHJpbnNpYzxbbGx2bV9wdHJfdHldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9wdHJfdHldPjsKK2RlZiBpbnRfb2JqY19jb3B5V2VhayAgICAgICAgICAgICAgICAgICAgICAgOiBJbnRyaW5zaWM8W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3B0cnB0cl90eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fcHRycHRyX3R5XT47CitkZWYgaW50X29iamNfZGVzdHJveVdlYWsgICAgICAgICAgICAgICAgICAgIDogSW50cmluc2ljPFtdLCBbbGx2bV9wdHJwdHJfdHldPjsKK2RlZiBpbnRfb2JqY19pbml0V2VhayAgICAgICAgICAgICAgICAgICAgICAgOiBJbnRyaW5zaWM8W2xsdm1fcHRyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fcHRycHRyX3R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9wdHJfdHldPjsKK2RlZiBpbnRfb2JqY19sb2FkV2VhayAgICAgICAgICAgICAgICAgICAgICAgOiBJbnRyaW5zaWM8W2xsdm1fcHRyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fcHRycHRyX3R5XT47CitkZWYgaW50X29iamNfbG9hZFdlYWtSZXRhaW5lZCAgICAgICAgICAgICAgIDogSW50cmluc2ljPFtsbHZtX3B0cl90eV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3B0cnB0cl90eV0+OworZGVmIGludF9vYmpjX21vdmVXZWFrICAgICAgICAgICAgICAgICAgICAgICA6IEludHJpbnNpYzxbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fcHRycHRyX3R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9wdHJwdHJfdHldPjsKK2RlZiBpbnRfb2JqY19yZWxlYXNlICAgICAgICAgICAgICAgICAgICAgICAgOiBJbnRyaW5zaWM8W10sIFtsbHZtX3B0cl90eV0+OworZGVmIGludF9vYmpjX3JldGFpbiAgICAgICAgICAgICAgICAgICAgICAgICA6IEludHJpbnNpYzxbbGx2bV9wdHJfdHldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9wdHJfdHldPjsKK2RlZiBpbnRfb2JqY19yZXRhaW5BdXRvcmVsZWFzZSAgICAgICAgICAgICAgOiBJbnRyaW5zaWM8W2xsdm1fcHRyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fcHRyX3R5XT47CitkZWYgaW50X29iamNfcmV0YWluQXV0b3JlbGVhc2VSZXR1cm5WYWx1ZSAgIDogSW50cmluc2ljPFtsbHZtX3B0cl90eV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3B0cl90eV0+OworZGVmIGludF9vYmpjX3JldGFpbkF1dG9yZWxlYXNlZFJldHVyblZhbHVlICA6IEludHJpbnNpYzxbbGx2bV9wdHJfdHldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9wdHJfdHldPjsKK2RlZiBpbnRfb2JqY19yZXRhaW5CbG9jayAgICAgICAgICAgICAgICAgICAgOiBJbnRyaW5zaWM8W2xsdm1fcHRyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fcHRyX3R5XT47CitkZWYgaW50X29iamNfc3RvcmVTdHJvbmcgICAgICAgICAgICAgICAgICAgIDogSW50cmluc2ljPFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9wdHJwdHJfdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3B0cl90eV0+OworZGVmIGludF9vYmpjX3N0b3JlV2VhayAgICAgICAgICAgICAgICAgICAgICA6IEludHJpbnNpYzxbbGx2bV9wdHJfdHldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9wdHJwdHJfdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3B0cl90eV0+OworZGVmIGludF9vYmpjX2NsYW5nX2FyY191c2UgICAgICAgICAgICAgICAgICA6IEludHJpbnNpYzxbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdmFyYXJnX3R5XT47CitkZWYgaW50X29iamNfdW5zYWZlQ2xhaW1BdXRvcmVsZWFzZWRSZXR1cm5WYWx1ZSA6IEludHJpbnNpYzxbbGx2bV9wdHJfdHldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fcHRyX3R5XT47CitkZWYgaW50X29iamNfcmV0YWluZWRPYmplY3QgICAgICAgICAgICAgICAgIDogSW50cmluc2ljPFtsbHZtX3B0cl90eV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3B0cl90eV0+OworZGVmIGludF9vYmpjX3VucmV0YWluZWRPYmplY3QgICAgICAgICAgICAgICA6IEludHJpbnNpYzxbbGx2bV9wdHJfdHldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9wdHJfdHldPjsKK2RlZiBpbnRfb2JqY191bnJldGFpbmVkUG9pbnRlciAgICAgICAgICAgICAgOiBJbnRyaW5zaWM8W2xsdm1fcHRyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fcHRyX3R5XT47CitkZWYgaW50X29iamNfcmV0YWluX2F1dG9yZWxlYXNlICAgICAgICAgICAgIDogSW50cmluc2ljPFtsbHZtX3B0cl90eV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3B0cl90eV0+OworZGVmIGludF9vYmpjX3N5bmNfZW50ZXIgICAgICAgICAgICAgICAgICAgICA6IEludHJpbnNpYzxbbGx2bV9pMzJfdHldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9wdHJfdHldPjsKK2RlZiBpbnRfb2JqY19zeW5jX2V4aXQgICAgICAgICAgICAgICAgICAgICAgOiBJbnRyaW5zaWM8W2xsdm1faTMyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fcHRyX3R5XT47CitkZWYgaW50X29iamNfYXJjX2Fubm90YXRpb25fdG9wZG93bl9iYnN0YXJ0IDogSW50cmluc2ljPFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9wdHJwdHJfdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3B0cnB0cl90eV0+OworZGVmIGludF9vYmpjX2FyY19hbm5vdGF0aW9uX3RvcGRvd25fYmJlbmQgICA6IEludHJpbnNpYzxbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fcHRycHRyX3R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9wdHJwdHJfdHldPjsKK2RlZiBpbnRfb2JqY19hcmNfYW5ub3RhdGlvbl9ib3R0b211cF9iYnN0YXJ0ICA6IEludHJpbnNpYzxbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9wdHJwdHJfdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fcHRycHRyX3R5XT47CitkZWYgaW50X29iamNfYXJjX2Fubm90YXRpb25fYm90dG9tdXBfYmJlbmQgIDogSW50cmluc2ljPFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9wdHJwdHJfdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3B0cnB0cl90eV0+OworCisKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvZGUgR2VuZXJhdG9yIEludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwogZGVmIGludF9yZXR1cm5hZGRyZXNzIDogSW50cmluc2ljPFtsbHZtX3B0cl90eV0sIFtsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKIGRlZiBpbnRfYWRkcmVzc29mcmV0dXJuYWRkcmVzcyA6IEludHJpbnNpYzxbbGx2bV9wdHJfdHldLCBbXSwgW0ludHJOb01lbV0+OwogZGVmIGludF9mcmFtZWFkZHJlc3MgIDogSW50cmluc2ljPFtsbHZtX3B0cl90eV0sIFtsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKK2RlZiBpbnRfc3BvbmVudHJ5ICA6IEludHJpbnNpYzxbbGx2bV9wdHJfdHldLCBbXSwgW0ludHJOb01lbV0+OwogZGVmIGludF9yZWFkX3JlZ2lzdGVyICA6IEludHJpbnNpYzxbbGx2bV9hbnlpbnRfdHldLCBbbGx2bV9tZXRhZGF0YV90eV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyUmVhZE1lbV0sICJsbHZtLnJlYWRfcmVnaXN0ZXIiPjsKIGRlZiBpbnRfd3JpdGVfcmVnaXN0ZXIgOiBJbnRyaW5zaWM8W10sIFtsbHZtX21ldGFkYXRhX3R5LCBsbHZtX2FueWludF90eV0sCkBAIC0zMzcsNiArNDE4LDEzIEBACiBkZWYgaW50X2xvY2FscmVjb3ZlciA6IEludHJpbnNpYzxbbGx2bV9wdHJfdHldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fcHRyX3R5LCBsbHZtX3B0cl90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OworCisvLyBHaXZlbiB0aGUgZnJhbWUgcG9pbnRlciBwYXNzZWQgaW50byBhbiBTRUggZmlsdGVyIGZ1bmN0aW9uLCByZXR1cm5zIGEKKy8vIHBvaW50ZXIgdG8gdGhlIGxvY2FsIHZhcmlhYmxlIGFyZWEgc3VpdGFibGUgZm9yIHVzZSB3aXRoIGxsdm0ubG9jYWxyZWNvdmVyLgorZGVmIGludF9laF9yZWNvdmVyZnAgOiBJbnRyaW5zaWM8W2xsdm1fcHRyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3B0cl90eSwgbGx2bV9wdHJfdHldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OworCiAvLyBOb3RlOiB3ZSB0cmVhdCBzdGFja3NhdmUvc3RhY2tyZXN0b3JlIGFzIHdyaXRlbWVtIGJlY2F1c2Ugd2UgZG9uJ3Qgb3RoZXJ3aXNlCiAvLyBtb2RlbCB0aGVpciBkZXBlbmRlbmNpZXMgb24gYWxsb2Nhcy4KIGRlZiBpbnRfc3RhY2tzYXZlICAgICA6IEludHJpbnNpYzxbbGx2bV9wdHJfdHldPiwKQEAgLTQ1Myw2ICs1NDEsMTQgQEAKICAgW0xMVk1NYXRjaFR5cGU8MD4sIExMVk1NYXRjaFR5cGU8MD5dLAogICBbSW50ck5vTWVtLCBJbnRyU3BlY3VsYXRhYmxlLCBDb21tdXRhdGl2ZV0KID47CitkZWYgaW50X21pbmltdW0gOiBJbnRyaW5zaWM8W2xsdm1fYW55ZmxvYXRfdHldLAorICBbTExWTU1hdGNoVHlwZTwwPiwgTExWTU1hdGNoVHlwZTwwPl0sCisgIFtJbnRyTm9NZW0sIEludHJTcGVjdWxhdGFibGUsIENvbW11dGF0aXZlXQorPjsKK2RlZiBpbnRfbWF4aW11bSA6IEludHJpbnNpYzxbbGx2bV9hbnlmbG9hdF90eV0sCisgIFtMTFZNTWF0Y2hUeXBlPDA+LCBMTFZNTWF0Y2hUeXBlPDA+XSwKKyAgW0ludHJOb01lbSwgSW50clNwZWN1bGF0YWJsZSwgQ29tbXV0YXRpdmVdCis+OwogCiAvLyBOT1RFOiB0aGVzZSBhcmUgaW50ZXJuYWwgaW50ZXJmYWNlcy4KIGRlZiBpbnRfc2V0am1wICAgICA6IEludHJpbnNpYzxbbGx2bV9pMzJfdHldLCAgW2xsdm1fcHRyX3R5XT47CkBAIC00NjIsNyArNTU4LDggQEAKIAogLy8gSW50ZXJuYWwgaW50ZXJmYWNlIGZvciBvYmplY3Qgc2l6ZSBjaGVja2luZwogZGVmIGludF9vYmplY3RzaXplIDogSW50cmluc2ljPFtsbHZtX2FueWludF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fYW55cHRyX3R5LCBsbHZtX2kxX3R5LCBsbHZtX2kxX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9hbnlwdHJfdHksIGxsdm1faTFfdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTFfdHksIGxsdm1faTFfdHldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW0sIEludHJTcGVjdWxhdGFibGVdPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5fb2JqZWN0X3NpemUiPjsKIApAQCAtNTU3LDkgKzY1NCwzNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBMTFZNTWF0Y2hUeXBlPDA+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX21ldGFkYXRhX3R5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX21ldGFkYXRhX3R5IF0+OworICBkZWYgaW50X2V4cGVyaW1lbnRhbF9jb25zdHJhaW5lZF9tYXhudW0gOiBJbnRyaW5zaWM8WyBsbHZtX2FueWZsb2F0X3R5IF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIExMVk1NYXRjaFR5cGU8MD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1NYXRjaFR5cGU8MD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fbWV0YWRhdGFfdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fbWV0YWRhdGFfdHkgXT47CisgIGRlZiBpbnRfZXhwZXJpbWVudGFsX2NvbnN0cmFpbmVkX21pbm51bSA6IEludHJpbnNpYzxbIGxsdm1fYW55ZmxvYXRfdHkgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgTExWTU1hdGNoVHlwZTwwPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTU1hdGNoVHlwZTwwPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9tZXRhZGF0YV90eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9tZXRhZGF0YV90eSBdPjsKKyAgZGVmIGludF9leHBlcmltZW50YWxfY29uc3RyYWluZWRfY2VpbCA6IEludHJpbnNpYzxbIGxsdm1fYW55ZmxvYXRfdHkgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIExMVk1NYXRjaFR5cGU8MD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX21ldGFkYXRhX3R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9tZXRhZGF0YV90eSBdPjsKKyAgZGVmIGludF9leHBlcmltZW50YWxfY29uc3RyYWluZWRfZmxvb3IgOiBJbnRyaW5zaWM8WyBsbHZtX2FueWZsb2F0X3R5IF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgTExWTU1hdGNoVHlwZTwwPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX21ldGFkYXRhX3R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fbWV0YWRhdGFfdHkgXT47CisgIGRlZiBpbnRfZXhwZXJpbWVudGFsX2NvbnN0cmFpbmVkX3JvdW5kIDogSW50cmluc2ljPFsgbGx2bV9hbnlmbG9hdF90eSBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIExMVk1NYXRjaFR5cGU8MD4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX21ldGFkYXRhX3R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9tZXRhZGF0YV90eSBdPjsKKyAgZGVmIGludF9leHBlcmltZW50YWxfY29uc3RyYWluZWRfdHJ1bmMgOiBJbnRyaW5zaWM8WyBsbHZtX2FueWZsb2F0X3R5IF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgTExWTU1hdGNoVHlwZTwwPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX21ldGFkYXRhX3R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fbWV0YWRhdGFfdHkgXT47CiB9CiAvLyBGSVhNRTogQWRkIGludHJpbnNpY3MgZm9yIGZjbXAsIGZwdHJ1bmMsIGZwZXh0LCBmcHRvdWkgYW5kIGZwdG9zaS4KLS8vIEZJWE1FOiBBZGQgaW50cmluc2ljcyBmb3IgZmFicywgY29weXNpZ24sIGZsb29yLCBjZWlsLCB0cnVuYyBhbmQgcm91bmQ/CisvLyBGSVhNRTogQWRkIGludHJpbnNpY3MgZm9yIGZhYnMgYW5kIGNvcHlzaWduPyAKIAogCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwZWN0IEludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwpAQCAtNjc5LDI3ICs4MDIsNTggQEAKIC8vCiAKIC8vIEV4cG9zZSB0aGUgY2FycnkgZmxhZyBmcm9tIGFkZCBvcGVyYXRpb25zIG9uIHR3byBpbnRlZ3JhbHMuCi1kZWYgaW50X3NhZGRfd2l0aF9vdmVyZmxvdyA6IEludHJpbnNpYzxbbGx2bV9hbnlpbnRfdHksIGxsdm1faTFfdHldLAorZGVmIGludF9zYWRkX3dpdGhfb3ZlcmZsb3cgOiBJbnRyaW5zaWM8W2xsdm1fYW55aW50X3R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1TY2FsYXJPclNhbWVWZWN0b3JXaWR0aDwwLCBsbHZtX2kxX3R5Pl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTExWTU1hdGNoVHlwZTwwPiwgTExWTU1hdGNoVHlwZTwwPl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtLCBJbnRyU3BlY3VsYXRhYmxlXT47Ci1kZWYgaW50X3VhZGRfd2l0aF9vdmVyZmxvdyA6IEludHJpbnNpYzxbbGx2bV9hbnlpbnRfdHksIGxsdm1faTFfdHldLAorZGVmIGludF91YWRkX3dpdGhfb3ZlcmZsb3cgOiBJbnRyaW5zaWM8W2xsdm1fYW55aW50X3R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1TY2FsYXJPclNhbWVWZWN0b3JXaWR0aDwwLCBsbHZtX2kxX3R5Pl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTExWTU1hdGNoVHlwZTwwPiwgTExWTU1hdGNoVHlwZTwwPl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtLCBJbnRyU3BlY3VsYXRhYmxlXT47CiAKLWRlZiBpbnRfc3N1Yl93aXRoX292ZXJmbG93IDogSW50cmluc2ljPFtsbHZtX2FueWludF90eSwgbGx2bV9pMV90eV0sCitkZWYgaW50X3NzdWJfd2l0aF9vdmVyZmxvdyA6IEludHJpbnNpYzxbbGx2bV9hbnlpbnRfdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVNjYWxhck9yU2FtZVZlY3RvcldpZHRoPDAsIGxsdm1faTFfdHk+XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtMTFZNTWF0Y2hUeXBlPDA+LCBMTFZNTWF0Y2hUeXBlPDA+XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW0sIEludHJTcGVjdWxhdGFibGVdPjsKLWRlZiBpbnRfdXN1Yl93aXRoX292ZXJmbG93IDogSW50cmluc2ljPFtsbHZtX2FueWludF90eSwgbGx2bV9pMV90eV0sCitkZWYgaW50X3VzdWJfd2l0aF9vdmVyZmxvdyA6IEludHJpbnNpYzxbbGx2bV9hbnlpbnRfdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVNjYWxhck9yU2FtZVZlY3RvcldpZHRoPDAsIGxsdm1faTFfdHk+XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtMTFZNTWF0Y2hUeXBlPDA+LCBMTFZNTWF0Y2hUeXBlPDA+XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW0sIEludHJTcGVjdWxhdGFibGVdPjsKIAotZGVmIGludF9zbXVsX3dpdGhfb3ZlcmZsb3cgOiBJbnRyaW5zaWM8W2xsdm1fYW55aW50X3R5LCBsbHZtX2kxX3R5XSwKK2RlZiBpbnRfc211bF93aXRoX292ZXJmbG93IDogSW50cmluc2ljPFtsbHZtX2FueWludF90eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNU2NhbGFyT3JTYW1lVmVjdG9yV2lkdGg8MCwgbGx2bV9pMV90eT5dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0xMVk1NYXRjaFR5cGU8MD4sIExMVk1NYXRjaFR5cGU8MD5dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbSwgSW50clNwZWN1bGF0YWJsZV0+OwotZGVmIGludF91bXVsX3dpdGhfb3ZlcmZsb3cgOiBJbnRyaW5zaWM8W2xsdm1fYW55aW50X3R5LCBsbHZtX2kxX3R5XSwKK2RlZiBpbnRfdW11bF93aXRoX292ZXJmbG93IDogSW50cmluc2ljPFtsbHZtX2FueWludF90eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNU2NhbGFyT3JTYW1lVmVjdG9yV2lkdGg8MCwgbGx2bV9pMV90eT5dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0xMVk1NYXRjaFR5cGU8MD4sIExMVk1NYXRjaFR5cGU8MD5dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbSwgSW50clNwZWN1bGF0YWJsZV0+OwogCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2F0dXJhdGlvbiBBcml0aG1ldGljIEludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCitkZWYgaW50X3NhZGRfc2F0IDogSW50cmluc2ljPFtsbHZtX2FueWludF90eV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtMTFZNTWF0Y2hUeXBlPDA+LCBMTFZNTWF0Y2hUeXBlPDA+XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbSwgSW50clNwZWN1bGF0YWJsZSwgQ29tbXV0YXRpdmVdPjsKK2RlZiBpbnRfdWFkZF9zYXQgOiBJbnRyaW5zaWM8W2xsdm1fYW55aW50X3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0xMVk1NYXRjaFR5cGU8MD4sIExMVk1NYXRjaFR5cGU8MD5dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtLCBJbnRyU3BlY3VsYXRhYmxlLCBDb21tdXRhdGl2ZV0+OworZGVmIGludF9zc3ViX3NhdCA6IEludHJpbnNpYzxbbGx2bV9hbnlpbnRfdHldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTExWTU1hdGNoVHlwZTwwPiwgTExWTU1hdGNoVHlwZTwwPl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW0sIEludHJTcGVjdWxhdGFibGVdPjsKK2RlZiBpbnRfdXN1Yl9zYXQgOiBJbnRyaW5zaWM8W2xsdm1fYW55aW50X3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0xMVk1NYXRjaFR5cGU8MD4sIExMVk1NYXRjaFR5cGU8MD5dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtLCBJbnRyU3BlY3VsYXRhYmxlXT47CisKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGaXhlZCBQb2ludCBBcml0aG1ldGljIEludHJpbnNpY3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCitkZWYgaW50X3NtdWxfZml4IDogSW50cmluc2ljPFtsbHZtX2FueWludF90eV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtMTFZNTWF0Y2hUeXBlPDA+LCBMTFZNTWF0Y2hUeXBlPDA+LCBsbHZtX2kzMl90eV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW0sIEludHJTcGVjdWxhdGFibGUsIENvbW11dGF0aXZlXT47CisKK2RlZiBpbnRfdW11bF9maXggOiBJbnRyaW5zaWM8W2xsdm1fYW55aW50X3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0xMVk1NYXRjaFR5cGU8MD4sIExMVk1NYXRjaFR5cGU8MD4sIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbSwgSW50clNwZWN1bGF0YWJsZSwgQ29tbXV0YXRpdmVdPjsKKwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE1lbW9yeSBVc2UgTWFya2VycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCiBkZWYgaW50X2xpZmV0aW1lX3N0YXJ0ICA6IEludHJpbnNpYzxbXSwKQEAgLTgxNyw3ICs5NzEsNyBAQAogLy8KIGRlZiBpbnRfZmx0X3JvdW5kcyA6IEludHJpbnNpYzxbbGx2bV9pMzJfdHldPiwKICAgICAgICAgICAgICAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9mbHRfcm91bmRzIj47Ci1kZWYgaW50X3RyYXAgOiBJbnRyaW5zaWM8W10sIFtdLCBbSW50ck5vUmV0dXJuXT4sCitkZWYgaW50X3RyYXAgOiBJbnRyaW5zaWM8W10sIFtdLCBbSW50ck5vUmV0dXJuLCBJbnRyQ29sZF0+LAogICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX3RyYXAiPjsKIGRlZiBpbnRfZGVidWd0cmFwIDogSW50cmluc2ljPFtdPiwKICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2RlYnVndHJhcCI+OwpAQCAtODMwLDYgKzk4NCwxMCBAQAogZGVmIGludF9leHBlcmltZW50YWxfZ3VhcmQgOiBJbnRyaW5zaWM8W10sIFtsbHZtX2kxX3R5LCBsbHZtX3ZhcmFyZ190eV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbVGhyb3dzXT47CiAKKy8vIFN1cHBvcnRzIHdpZGVuYWJsZSBjb25kaXRpb25zIGZvciBndWFyZHMgcmVwcmVzZW50ZWQgYXMgZXhwbGljaXQgYnJhbmNoZXMuCitkZWYgaW50X2V4cGVyaW1lbnRhbF93aWRlbmFibGVfY29uZGl0aW9uIDogSW50cmluc2ljPFtsbHZtX2kxX3R5XSwgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJJbmFjY2Vzc2libGVNZW1Pbmx5XT47CisKIC8vIE5PUDogY2FsbHMvaW52b2tlcyB0byB0aGlzIGludHJpbnNpYyBhcmUgcmVtb3ZlZCBieSBjb2RlZ2VuCiBkZWYgaW50X2Rvbm90aGluZyA6IEludHJpbnNpYzxbXSwgW10sIFtJbnRyTm9NZW1dPjsKIApAQCAtODUwLDQwICsxMDA4LDQ0IEBACiBkZWYgaW50X2NsZWFyX2NhY2hlIDogSW50cmluc2ljPFtdLCBbbGx2bV9wdHJfdHksIGxsdm1fcHRyX3R5XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sICJsbHZtLmNsZWFyX2NhY2hlIj47CiAKKy8vIEludHJpbnNpYyB0byBkZXRlY3Qgd2hldGhlciBpdHMgYXJndW1lbnQgaXMgYSBjb25zdGFudC4KK2RlZiBpbnRfaXNfY29uc3RhbnQgOiBJbnRyaW5zaWM8W2xsdm1faTFfdHldLCBbbGx2bV9hbnlfdHldLCBbSW50ck5vTWVtXSwgImxsdm0uaXMuY29uc3RhbnQiPjsKKworCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE1hc2tlZCBJbnRyaW5zaWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KIGRlZiBpbnRfbWFza2VkX3N0b3JlIDogSW50cmluc2ljPFtdLCBbbGx2bV9hbnl2ZWN0b3JfdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1BbnlQb2ludGVyVHlwZTxMTFZNTWF0Y2hUeXBlPDA+PiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9pMzJfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1WZWN0b3JTYW1lV2lkdGg8MCwgbGx2bV9pMV90eT5dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNU2NhbGFyT3JTYW1lVmVjdG9yV2lkdGg8MCwgbGx2bV9pMV90eT5dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CiAKIGRlZiBpbnRfbWFza2VkX2xvYWQgIDogSW50cmluc2ljPFtsbHZtX2FueXZlY3Rvcl90eV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTExWTUFueVBvaW50ZXJUeXBlPExMVk1NYXRjaFR5cGU8MD4+LCBsbHZtX2kzMl90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVmVjdG9yU2FtZVdpZHRoPDAsIGxsdm1faTFfdHk+LCBMTFZNTWF0Y2hUeXBlPDA+XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNU2NhbGFyT3JTYW1lVmVjdG9yV2lkdGg8MCwgbGx2bV9pMV90eT4sIExMVk1NYXRjaFR5cGU8MD5dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJSZWFkTWVtLCBJbnRyQXJnTWVtT25seV0+OwogCiBkZWYgaW50X21hc2tlZF9nYXRoZXI6IEludHJpbnNpYzxbbGx2bV9hbnl2ZWN0b3JfdHldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0xMVk1WZWN0b3JPZkFueVBvaW50ZXJzVG9FbHQ8MD4sIGxsdm1faTMyX3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1WZWN0b3JTYW1lV2lkdGg8MCwgbGx2bV9pMV90eT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVNjYWxhck9yU2FtZVZlY3RvcldpZHRoPDAsIGxsdm1faTFfdHk+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1NYXRjaFR5cGU8MD5dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJSZWFkTWVtXT47CiAKIGRlZiBpbnRfbWFza2VkX3NjYXR0ZXI6IEludHJpbnNpYzxbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9hbnl2ZWN0b3JfdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1WZWN0b3JPZkFueVBvaW50ZXJzVG9FbHQ8MD4sIGxsdm1faTMyX3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVmVjdG9yU2FtZVdpZHRoPDAsIGxsdm1faTFfdHk+XT47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1TY2FsYXJPclNhbWVWZWN0b3JXaWR0aDwwLCBsbHZtX2kxX3R5Pl0+OwogCiBkZWYgaW50X21hc2tlZF9leHBhbmRsb2FkOiBJbnRyaW5zaWM8W2xsdm1fYW55dmVjdG9yX3R5XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbTExWTVBvaW50ZXJUb0VsdDwwPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVZlY3RvclNhbWVXaWR0aDwwLCBsbHZtX2kxX3R5PiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVNjYWxhck9yU2FtZVZlY3RvcldpZHRoPDAsIGxsdm1faTFfdHk+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNTWF0Y2hUeXBlPDA+XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50clJlYWRNZW1dPjsKIAogZGVmIGludF9tYXNrZWRfY29tcHJlc3NzdG9yZTogSW50cmluc2ljPFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2FueXZlY3Rvcl90eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVBvaW50ZXJUb0VsdDwwPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVZlY3RvclNhbWVXaWR0aDwwLCBsbHZtX2kxX3R5Pl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1TY2FsYXJPclNhbWVWZWN0b3JXaWR0aDwwLCBsbHZtX2kxX3R5Pl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CiAKIC8vIFRlc3Qgd2hldGhlciBhIHBvaW50ZXIgaXMgYXNzb2NpYXRlZCB3aXRoIGEgdHlwZSBtZXRhZGF0YSBpZGVudGlmaWVyLgpAQCAtOTAyLDYgKzEwNjQsOSBAQAogZGVmIGludF9sb2FkX3JlbGF0aXZlOiBJbnRyaW5zaWM8W2xsdm1fcHRyX3R5XSwgW2xsdm1fcHRyX3R5LCBsbHZtX2FueWludF90eV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CiAKK2RlZiBpbnRfaHdhc2FuX2NoZWNrX21lbWFjY2VzcyA6CisgIEludHJpbnNpYzxbXSwgW2xsdm1fcHRyX3R5LCBsbHZtX3B0cl90eSwgbGx2bV9pMzJfdHldLCBbSW50ckluYWNjZXNzaWJsZU1lbU9ubHldPjsKKwogLy8gWHJheSBpbnRyaW5zaWNzCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gQ3VzdG9tIGV2ZW50IGxvZ2dpbmcgZm9yIHgtcmF5LgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzQUFyY2g2NC50ZCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc0FBcmNoNjQudGQKaW5kZXggNjg4ZTg2My4uM2FiZWZmNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzQUFyY2g2NC50ZAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NBQXJjaDY0LnRkCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEludHJpbnNpY3NBQVJDSDY0LnRkIC0gRGVmaW5lcyBBQVJDSDY0IGludHJpbnNpY3MgLS0tKi0gdGFibGVnZW4gLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00NCw2ICs0MywxMiBAQAogZGVmIGludF9hYXJjaDY0X2RzYiA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9hcm1fZHNiIj4sIE1TQnVpbHRpbjwiX19kc2IiPiwgSW50cmluc2ljPFtdLCBbbGx2bV9pMzJfdHldPjsKIGRlZiBpbnRfYWFyY2g2NF9pc2IgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5fYXJtX2lzYiI+LCBNU0J1aWx0aW48Il9faXNiIj4sIEludHJpbnNpYzxbXSwgW2xsdm1faTMyX3R5XT47CiAKKy8vIEEgc3BhY2UtY29uc3VtaW5nIGludHJpbnNpYyBwcmltYXJpbHkgZm9yIHRlc3RpbmcgYmxvY2sgYW5kIGp1bXAgdGFibGUKKy8vIHBsYWNlbWVudHMuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoaXMgImluc3RydWN0aW9uIgorLy8gdGFrZXMgdXAsIHRoZSBzZWNvbmQgYW5kIHJldHVybiB2YWx1ZSBhcmUgZXNzZW50aWFsbHkgY2hhaW5zLCB1c2VkIHRvIGZvcmNlCisvLyBvcmRlcmluZyBkdXJpbmcgSVNlbC4KK2RlZiBpbnRfYWFyY2g2NF9zcGFjZSA6IEludHJpbnNpYzxbbGx2bV9pNjRfdHldLCBbbGx2bV9pMzJfdHksIGxsdm1faTY0X3R5XSwgW10+OworCiB9CiAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCkBAIC0xNTQsNiArMTU5LDExIEBACiAgICAgOiBJbnRyaW5zaWM8W2xsdm1fYW55dmVjdG9yX3R5XSwKICAgICAgICAgICAgICAgICBbTExWTU1hdGNoVHlwZTwwPiwgbGx2bV9hbnl2ZWN0b3JfdHksIExMVk1NYXRjaFR5cGU8MT5dLAogICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKKworICBjbGFzcyBBZHZTSU1EX0ZQMTZGTUxfSW50cmluc2ljCisgICAgOiBJbnRyaW5zaWM8W2xsdm1fYW55dmVjdG9yX3R5XSwKKyAgICAgICAgICAgICAgICBbTExWTU1hdGNoVHlwZTwwPiwgbGx2bV9hbnl2ZWN0b3JfdHksIExMVk1NYXRjaFR5cGU8MT5dLAorICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKIH0KIAogLy8gQXJpdGhtZXRpYyBvcHMKQEAgLTQyNCw2ICs0MzQsMTIgQEAKICAgLy8gdjguMi1BIERvdCBQcm9kdWN0CiAgIGRlZiBpbnRfYWFyY2g2NF9uZW9uX3Vkb3QgOiBBZHZTSU1EX0RvdF9JbnRyaW5zaWM7CiAgIGRlZiBpbnRfYWFyY2g2NF9uZW9uX3Nkb3QgOiBBZHZTSU1EX0RvdF9JbnRyaW5zaWM7CisKKyAgLy8gdjguMi1BIEZQMTYgRnVzZWQgTXVsdGlwbHktQWRkIExvbmcKKyAgZGVmIGludF9hYXJjaDY0X25lb25fZm1sYWwgOiBBZHZTSU1EX0ZQMTZGTUxfSW50cmluc2ljOworICBkZWYgaW50X2FhcmNoNjRfbmVvbl9mbWxzbCA6IEFkdlNJTURfRlAxNkZNTF9JbnRyaW5zaWM7CisgIGRlZiBpbnRfYWFyY2g2NF9uZW9uX2ZtbGFsMiA6IEFkdlNJTURfRlAxNkZNTF9JbnRyaW5zaWM7CisgIGRlZiBpbnRfYWFyY2g2NF9uZW9uX2ZtbHNsMiA6IEFkdlNJTURfRlAxNkZNTF9JbnRyaW5zaWM7CiB9CiAKIGxldCBUYXJnZXRQcmVmaXggPSAiYWFyY2g2NCIgaW4geyAgLy8gQWxsIGludHJpbnNpY3Mgc3RhcnQgd2l0aCAibGx2bS5hYXJjaDY0LiIuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NBTURHUFUudGQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NBTURHUFUudGQKaW5kZXggY2NmNDNhNi4uMTUxMzI5YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzQU1ER1BVLnRkCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc0FNREdQVS50ZApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJbnRyaW5zaWNzQU1ER1BVLnRkIC0gRGVmaW5lcyBBTURHUFUgaW50cmluc2ljcyAtLS0tLSotIHRhYmxlZ2VuIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzkyLDYgKzM5MSwzNSBAQAogICAgIFtJbnRyQXJnTWVtT25seSwgTm9DYXB0dXJlPDA+XQogPjsKIAorY2xhc3MgQU1ER1BVRFNPcmRlcmVkSW50cmluc2ljIDogSW50cmluc2ljPAorICBbbGx2bV9pMzJfdHldLAorICAvLyBNMCA9IHtoaTE2OmFkZHJlc3MsIGxvMTY6d2F2ZUlEfS4gQWxsb3cgcGFzc2luZyBNMCBhcyBhIHBvaW50ZXIsIHNvIHRoYXQKKyAgLy8gdGhlIGJpdCBwYWNraW5nIGNhbiBiZSBvcHRpbWl6ZWQgYXQgdGhlIElSIGxldmVsLgorICBbTExWTVF1YWxQb2ludGVyVHlwZTxsbHZtX2kzMl90eSwgMj4sIC8vIEludFRvUHRyKE0wKQorICAgbGx2bV9pMzJfdHksIC8vIHZhbHVlIHRvIGFkZCBvciBzd2FwCisgICBsbHZtX2kzMl90eSwgLy8gb3JkZXJpbmcKKyAgIGxsdm1faTMyX3R5LCAvLyBzY29wZQorICAgbGx2bV9pMV90eSwgIC8vIGlzVm9sYXRpbGUKKyAgIGxsdm1faTMyX3R5LCAvLyBvcmRlcmVkIGNvdW50IGluZGV4IChPQSBpbmRleCksIGFsc28gYWRkZWQgdG8gdGhlIGFkZHJlc3MKKyAgIGxsdm1faTFfdHksICAvLyB3YXZlIHJlbGVhc2UsIHVzdWFsbHkgc2V0IHRvIDEKKyAgIGxsdm1faTFfdHldLCAvLyB3YXZlIGRvbmUsIHNldCB0byAxIGZvciB0aGUgbGFzdCBvcmRlcmVkIGluc3RydWN0aW9uCisgIFtOb0NhcHR1cmU8MD5dCis+OworCitjbGFzcyBBTURHUFVEU0FwcGVuZENvbnN1bWVkSW50cmluc2ljIDogSW50cmluc2ljPAorICBbbGx2bV9pMzJfdHldLAorICBbbGx2bV9hbnlwdHJfdHksIC8vIExEUyBvciBHRFMgcHRyCisgICBsbHZtX2kxX3R5XSwgLy8gaXNWb2xhdGlsZQorICAgW0ludHJDb252ZXJnZW50LCBJbnRyQXJnTWVtT25seSwgTm9DYXB0dXJlPDA+XQorPjsKKworZGVmIGludF9hbWRnY25fZHNfb3JkZXJlZF9hZGQgOiBBTURHUFVEU09yZGVyZWRJbnRyaW5zaWM7CitkZWYgaW50X2FtZGdjbl9kc19vcmRlcmVkX3N3YXAgOiBBTURHUFVEU09yZGVyZWRJbnRyaW5zaWM7CisKKy8vIFRoZSBwb2ludGVyIGFyZ3VtZW50IGlzIGFzc3VtZWQgdG8gYmUgZHluYW1pY2FsbHkgdW5pZm9ybSBpZiBhIFZHUFIuCitkZWYgaW50X2FtZGdjbl9kc19hcHBlbmQgOiBBTURHUFVEU0FwcGVuZENvbnN1bWVkSW50cmluc2ljOworZGVmIGludF9hbWRnY25fZHNfY29uc3VtZSA6IEFNREdQVURTQXBwZW5kQ29uc3VtZWRJbnRyaW5zaWM7CisKIGRlZiBpbnRfYW1kZ2NuX2RzX2ZhZGQgOiBBTURHUFVMRFNGMzJJbnRyaW48Il9fYnVpbHRpbl9hbWRnY25fZHNfZmFkZGYiPjsKIGRlZiBpbnRfYW1kZ2NuX2RzX2ZtaW4gOiBBTURHUFVMRFNGMzJJbnRyaW48Il9fYnVpbHRpbl9hbWRnY25fZHNfZm1pbmYiPjsKIGRlZiBpbnRfYW1kZ2NuX2RzX2ZtYXggOiBBTURHUFVMRFNGMzJJbnRyaW48Il9fYnVpbHRpbl9hbWRnY25fZHNfZm1heGYiPjsKQEAgLTU5MCw3ICs2MTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBTURHUFVEaW1Qcm9wcyBkaW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFNREdQVVNhbXBsZVZhcmlhbnQgc2FtcGxlPiA6IEFNREdQVURpbVByb2ZpbGU8b3Btb2QsIGRpbT4gewogICBsZXQgSXNTYW1wbGUgPSAxOwotICBsZXQgUmV0VHlwZXMgPSBbbGx2bV9hbnlmbG9hdF90eV07CisgIGxldCBSZXRUeXBlcyA9IFtsbHZtX2FueV90eV07CiAgIGxldCBFeHRyYUFkZHJBcmdzID0gc2FtcGxlLkV4dHJhQWRkckFyZ3M7CiAgIGxldCBHcmFkaWVudHMgPSBzYW1wbGUuR3JhZGllbnRzOwogICBsZXQgTG9kQ2xhbXBNaXAgPSBzYW1wbGUuTG9kT3JDbGFtcDsKQEAgLTY4MywxMSArNzExLDExIEBACiAgIH0KIAogICBkZWZtIGludF9hbWRnY25faW1hZ2VfbG9hZAotICAgIDogQU1ER1BVSW1hZ2VEaW1JbnRyaW5zaWNzQWxsPCJMT0FEIiwgW2xsdm1fYW55ZmxvYXRfdHldLCBbXSwgW0ludHJSZWFkTWVtXSwKKyAgICA6IEFNREdQVUltYWdlRGltSW50cmluc2ljc0FsbDwiTE9BRCIsIFtsbHZtX2FueV90eV0sIFtdLCBbSW50clJlYWRNZW1dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTRE5QTWVtT3BlcmFuZF0+LAogICAgICAgQU1ER1BVSW1hZ2VETWFza0ludHJpbnNpYzsKICAgZGVmbSBpbnRfYW1kZ2NuX2ltYWdlX2xvYWRfbWlwCi0gICAgOiBBTURHUFVJbWFnZURpbUludHJpbnNpY3NOb01zYWE8IkxPQURfTUlQIiwgW2xsdm1fYW55ZmxvYXRfdHldLCBbXSwKKyAgICA6IEFNREdQVUltYWdlRGltSW50cmluc2ljc05vTXNhYTwiTE9BRF9NSVAiLCBbbGx2bV9hbnlfdHldLCBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50clJlYWRNZW1dLCBbU0ROUE1lbU9wZXJhbmRdLCAxPiwKICAgICAgIEFNREdQVUltYWdlRE1hc2tJbnRyaW5zaWM7CiAKQEAgLTgwMyw3ICs4MzEsNyBAQAogZGVmIGludF9hbWRnY25fYnVmZmVyX2xvYWQgOiBBTURHUFVCdWZmZXJMb2FkOwogCiBkZWYgaW50X2FtZGdjbl9zX2J1ZmZlcl9sb2FkIDogSW50cmluc2ljIDwKLSAgW2xsdm1fYW55aW50X3R5XSwKKyAgW2xsdm1fYW55X3R5XSwKICAgW2xsdm1fdjRpMzJfdHksICAgICAvLyByc3JjKFNHUFIpCiAgICBsbHZtX2kzMl90eSwgICAgICAgLy8gYnl0ZSBvZmZzZXQoU0dQUi9WR1BSL2ltbSkKICAgIGxsdm1faTMyX3R5XSwgICAgICAvLyBjYWNoZXBvbGljeShpbW07IGJpdCAwID0gZ2xjKQpAQCAtODM1LDcgKzg2Myw3IEBACiAgIFtsbHZtX3Y0aTMyX3R5LCAgICAgLy8gcnNyYyhTR1BSKQogICAgbGx2bV9pMzJfdHksICAgICAgIC8vIG9mZnNldChWR1BSL2ltbSwgaW5jbHVkZWQgaW4gYm91bmRzIGNoZWNraW5nIGFuZCBzd2l6emxpbmcpCiAgICBsbHZtX2kzMl90eSwgICAgICAgLy8gc29mZnNldChTR1BSL2ltbSwgZXhjbHVkZWQgZnJvbSBib3VuZHMgY2hlY2tpbmcgYW5kIHN3aXp6bGluZykKLSAgIGxsdm1faTMyX3R5XSwgICAgICAvLyBjYWNoZXBvbGljeShpbW07IGJpdCAwID0gZ2xjLCBiaXQgMSA9IHNsYykgCisgICBsbHZtX2kzMl90eV0sICAgICAgLy8gY2FjaGVwb2xpY3koaW1tOyBiaXQgMCA9IGdsYywgYml0IDEgPSBzbGMpCiAgIFtJbnRyUmVhZE1lbV0sICIiLCBbU0ROUE1lbU9wZXJhbmRdPiwKICAgQU1ER1BVUnNyY0ludHJpbnNpYzwwPjsKIGRlZiBpbnRfYW1kZ2NuX3Jhd19idWZmZXJfbG9hZF9mb3JtYXQgOiBBTURHUFVSYXdCdWZmZXJMb2FkOwpAQCAtODQ3LDcgKzg3NSw3IEBACiAgICBsbHZtX2kzMl90eSwgICAgICAgLy8gdmluZGV4KFZHUFIpCiAgICBsbHZtX2kzMl90eSwgICAgICAgLy8gb2Zmc2V0KFZHUFIvaW1tLCBpbmNsdWRlZCBpbiBib3VuZHMgY2hlY2tpbmcgYW5kIHN3aXp6bGluZykKICAgIGxsdm1faTMyX3R5LCAgICAgICAvLyBzb2Zmc2V0KFNHUFIvaW1tLCBleGNsdWRlZCBmcm9tIGJvdW5kcyBjaGVja2luZyBhbmQgc3dpenpsaW5nKQotICAgbGx2bV9pMzJfdHldLCAgICAgIC8vIGNhY2hlcG9saWN5KGltbTsgYml0IDAgPSBnbGMsIGJpdCAxID0gc2xjKSAKKyAgIGxsdm1faTMyX3R5XSwgICAgICAvLyBjYWNoZXBvbGljeShpbW07IGJpdCAwID0gZ2xjLCBiaXQgMSA9IHNsYykKICAgW0ludHJSZWFkTWVtXSwgIiIsIFtTRE5QTWVtT3BlcmFuZF0+LAogICBBTURHUFVSc3JjSW50cmluc2ljPDA+OwogZGVmIGludF9hbWRnY25fc3RydWN0X2J1ZmZlcl9sb2FkX2Zvcm1hdCA6IEFNREdQVVN0cnVjdEJ1ZmZlckxvYWQ7CkBAIC04NTksNyArODg3LDcgQEAKICAgIGxsdm1fdjRpMzJfdHksICAgICAvLyByc3JjKFNHUFIpCiAgICBsbHZtX2kzMl90eSwgICAgICAgLy8gb2Zmc2V0KFZHUFIvaW1tLCBpbmNsdWRlZCBpbiBib3VuZHMgY2hlY2tpbmcgYW5kIHN3aXp6bGluZykKICAgIGxsdm1faTMyX3R5LCAgICAgICAvLyBzb2Zmc2V0KFNHUFIvaW1tLCBleGNsdWRlZCBmcm9tIGJvdW5kcyBjaGVja2luZyBhbmQgc3dpenpsaW5nKQotICAgbGx2bV9pMzJfdHldLCAgICAgIC8vIGNhY2hlcG9saWN5KGltbTsgYml0IDAgPSBnbGMsIGJpdCAxID0gc2xjKSAKKyAgIGxsdm1faTMyX3R5XSwgICAgICAvLyBjYWNoZXBvbGljeShpbW07IGJpdCAwID0gZ2xjLCBiaXQgMSA9IHNsYykKICAgW0ludHJXcml0ZU1lbV0sICIiLCBbU0ROUE1lbU9wZXJhbmRdPiwKICAgQU1ER1BVUnNyY0ludHJpbnNpYzwxPjsKIGRlZiBpbnRfYW1kZ2NuX3Jhd19idWZmZXJfc3RvcmVfZm9ybWF0IDogQU1ER1BVUmF3QnVmZmVyU3RvcmU7CkBAIC04NzIsNyArOTAwLDcgQEAKICAgIGxsdm1faTMyX3R5LCAgICAgICAvLyB2aW5kZXgoVkdQUikKICAgIGxsdm1faTMyX3R5LCAgICAgICAvLyBvZmZzZXQoVkdQUi9pbW0sIGluY2x1ZGVkIGluIGJvdW5kcyBjaGVja2luZyBhbmQgc3dpenpsaW5nKQogICAgbGx2bV9pMzJfdHksICAgICAgIC8vIHNvZmZzZXQoU0dQUi9pbW0sIGV4Y2x1ZGVkIGZyb20gYm91bmRzIGNoZWNraW5nIGFuZCBzd2l6emxpbmcpCi0gICBsbHZtX2kzMl90eV0sICAgICAgLy8gY2FjaGVwb2xpY3koaW1tOyBiaXQgMCA9IGdsYywgYml0IDEgPSBzbGMpIAorICAgbGx2bV9pMzJfdHldLCAgICAgIC8vIGNhY2hlcG9saWN5KGltbTsgYml0IDAgPSBnbGMsIGJpdCAxID0gc2xjKQogICBbSW50cldyaXRlTWVtXSwgIiIsIFtTRE5QTWVtT3BlcmFuZF0+LAogICBBTURHUFVSc3JjSW50cmluc2ljPDE+OwogZGVmIGludF9hbWRnY25fc3RydWN0X2J1ZmZlcl9zdG9yZV9mb3JtYXQgOiBBTURHUFVTdHJ1Y3RCdWZmZXJTdG9yZTsKQEAgLTg4NCw3ICs5MTIsNyBAQAogICAgbGx2bV92NGkzMl90eSwgICAgIC8vIHJzcmMoU0dQUikKICAgIGxsdm1faTMyX3R5LCAgICAgICAvLyBvZmZzZXQoVkdQUi9pbW0sIGluY2x1ZGVkIGluIGJvdW5kcyBjaGVja2luZyBhbmQgc3dpenpsaW5nKQogICAgbGx2bV9pMzJfdHksICAgICAgIC8vIHNvZmZzZXQoU0dQUi9pbW0sIGV4Y2x1ZGVkIGZyb20gYm91bmRzIGNoZWNraW5nIGFuZCBzd2l6emxpbmcpCi0gICBsbHZtX2kzMl90eV0sICAgICAgLy8gY2FjaGVwb2xpY3koaW1tOyBiaXQgMSA9IHNsYykgCisgICBsbHZtX2kzMl90eV0sICAgICAgLy8gY2FjaGVwb2xpY3koaW1tOyBiaXQgMSA9IHNsYykKICAgW10sICIiLCBbU0ROUE1lbU9wZXJhbmRdPiwKICAgQU1ER1BVUnNyY0ludHJpbnNpYzwxLCAwPjsKIGRlZiBpbnRfYW1kZ2NuX3Jhd19idWZmZXJfYXRvbWljX3N3YXAgOiBBTURHUFVSYXdCdWZmZXJBdG9taWM7CkBAIC05MDQsNyArOTMyLDcgQEAKICAgIGxsdm1fdjRpMzJfdHksICAgICAvLyByc3JjKFNHUFIpCiAgICBsbHZtX2kzMl90eSwgICAgICAgLy8gb2Zmc2V0KFZHUFIvaW1tLCBpbmNsdWRlZCBpbiBib3VuZHMgY2hlY2tpbmcgYW5kIHN3aXp6bGluZykKICAgIGxsdm1faTMyX3R5LCAgICAgICAvLyBzb2Zmc2V0KFNHUFIvaW1tLCBleGNsdWRlZCBmcm9tIGJvdW5kcyBjaGVja2luZyBhbmQgc3dpenpsaW5nKQotICAgbGx2bV9pMzJfdHldLCAgICAgIC8vIGNhY2hlcG9saWN5KGltbTsgYml0IDEgPSBzbGMpIAorICAgbGx2bV9pMzJfdHldLCAgICAgIC8vIGNhY2hlcG9saWN5KGltbTsgYml0IDEgPSBzbGMpCiAgIFtdLCAiIiwgW1NETlBNZW1PcGVyYW5kXT4sCiAgIEFNREdQVVJzcmNJbnRyaW5zaWM8MiwgMD47CiAKQEAgLTkxNSw3ICs5NDMsNyBAQAogICAgbGx2bV9pMzJfdHksICAgICAgIC8vIHZpbmRleChWR1BSKQogICAgbGx2bV9pMzJfdHksICAgICAgIC8vIG9mZnNldChWR1BSL2ltbSwgaW5jbHVkZWQgaW4gYm91bmRzIGNoZWNraW5nIGFuZCBzd2l6emxpbmcpCiAgICBsbHZtX2kzMl90eSwgICAgICAgLy8gc29mZnNldChTR1BSL2ltbSwgZXhjbHVkZWQgZnJvbSBib3VuZHMgY2hlY2tpbmcgYW5kIHN3aXp6bGluZykKLSAgIGxsdm1faTMyX3R5XSwgICAgICAvLyBjYWNoZXBvbGljeShpbW07IGJpdCAxID0gc2xjKSAKKyAgIGxsdm1faTMyX3R5XSwgICAgICAvLyBjYWNoZXBvbGljeShpbW07IGJpdCAxID0gc2xjKQogICBbXSwgIiIsIFtTRE5QTWVtT3BlcmFuZF0+LAogICBBTURHUFVSc3JjSW50cmluc2ljPDEsIDA+OwogZGVmIGludF9hbWRnY25fc3RydWN0X2J1ZmZlcl9hdG9taWNfc3dhcCA6IEFNREdQVVN0cnVjdEJ1ZmZlckF0b21pYzsKQEAgLTkzNiw3ICs5NjQsNyBAQAogICAgbGx2bV9pMzJfdHksICAgICAgIC8vIHZpbmRleChWR1BSKQogICAgbGx2bV9pMzJfdHksICAgICAgIC8vIG9mZnNldChWR1BSL2ltbSwgaW5jbHVkZWQgaW4gYm91bmRzIGNoZWNraW5nIGFuZCBzd2l6emxpbmcpCiAgICBsbHZtX2kzMl90eSwgICAgICAgLy8gc29mZnNldChTR1BSL2ltbSwgZXhjbHVkZWQgZnJvbSBib3VuZHMgY2hlY2tpbmcgYW5kIHN3aXp6bGluZykKLSAgIGxsdm1faTMyX3R5XSwgICAgICAvLyBjYWNoZXBvbGljeShpbW07IGJpdCAxID0gc2xjKSAKKyAgIGxsdm1faTMyX3R5XSwgICAgICAvLyBjYWNoZXBvbGljeShpbW07IGJpdCAxID0gc2xjKQogICBbXSwgIiIsIFtTRE5QTWVtT3BlcmFuZF0+LAogICBBTURHUFVSc3JjSW50cmluc2ljPDIsIDA+OwogCkBAIC05ODAsNyArMTAwOCw3IEBACiAgICAgIGxsdm1faTMyX3R5LCAgICAgLy8gb2Zmc2V0KFZHUFIvaW1tLCBpbmNsdWRlZCBpbiBib3VuZHMgY2hlY2tpbmcgYW5kIHN3aXp6bGluZykKICAgICAgbGx2bV9pMzJfdHksICAgICAvLyBzb2Zmc2V0KFNHUFIvaW1tLCBleGNsdWRlZCBmcm9tIGJvdW5kcyBjaGVja2luZyBhbmQgc3dpenpsaW5nKQogICAgICBsbHZtX2kzMl90eSwgICAgIC8vIGZvcm1hdChpbW07IGJpdHMgMy4uMCA9IGRmbXQsIGJpdHMgNi4uNCA9IG5mbXQpCi0gICAgIGxsdm1faTMyX3R5XSwgICAgLy8gY2FjaGVwb2xpY3koaW1tOyBiaXQgMCA9IGdsYywgYml0IDEgPSBzbGMpIAorICAgICBsbHZtX2kzMl90eV0sICAgIC8vIGNhY2hlcG9saWN5KGltbTsgYml0IDAgPSBnbGMsIGJpdCAxID0gc2xjKQogICAgIFtJbnRyUmVhZE1lbV0sICIiLCBbU0ROUE1lbU9wZXJhbmRdPiwKICAgQU1ER1BVUnNyY0ludHJpbnNpYzwwPjsKIApAQCAtOTkxLDcgKzEwMTksNyBAQAogICAgICBsbHZtX2kzMl90eSwgICAgLy8gb2Zmc2V0KFZHUFIvaW1tLCBpbmNsdWRlZCBpbiBib3VuZHMgY2hlY2tpbmcgYW5kIHN3aXp6bGluZykKICAgICAgbGx2bV9pMzJfdHksICAgIC8vIHNvZmZzZXQoU0dQUi9pbW0sIGV4Y2x1ZGVkIGZyb20gYm91bmRzIGNoZWNraW5nIGFuZCBzd2l6emxpbmcpCiAgICAgIGxsdm1faTMyX3R5LCAgICAvLyBmb3JtYXQoaW1tOyBiaXRzIDMuLjAgPSBkZm10LCBiaXRzIDYuLjQgPSBuZm10KQotICAgICBsbHZtX2kzMl90eV0sICAgLy8gY2FjaGVwb2xpY3koaW1tOyBiaXQgMCA9IGdsYywgYml0IDEgPSBzbGMpIAorICAgICBsbHZtX2kzMl90eV0sICAgLy8gY2FjaGVwb2xpY3koaW1tOyBiaXQgMCA9IGdsYywgYml0IDEgPSBzbGMpCiAgICAgW0ludHJXcml0ZU1lbV0sICIiLCBbU0ROUE1lbU9wZXJhbmRdPiwKICAgQU1ER1BVUnNyY0ludHJpbnNpYzwxPjsKIApAQCAtMTAwMiw3ICsxMDMwLDcgQEAKICAgICAgbGx2bV9pMzJfdHksICAgICAvLyBvZmZzZXQoVkdQUi9pbW0sIGluY2x1ZGVkIGluIGJvdW5kcyBjaGVja2luZyBhbmQgc3dpenpsaW5nKQogICAgICBsbHZtX2kzMl90eSwgICAgIC8vIHNvZmZzZXQoU0dQUi9pbW0sIGV4Y2x1ZGVkIGZyb20gYm91bmRzIGNoZWNraW5nIGFuZCBzd2l6emxpbmcpCiAgICAgIGxsdm1faTMyX3R5LCAgICAgLy8gZm9ybWF0KGltbTsgYml0cyAzLi4wID0gZGZtdCwgYml0cyA2Li40ID0gbmZtdCkKLSAgICAgbGx2bV9pMzJfdHldLCAgICAvLyBjYWNoZXBvbGljeShpbW07IGJpdCAwID0gZ2xjLCBiaXQgMSA9IHNsYykgCisgICAgIGxsdm1faTMyX3R5XSwgICAgLy8gY2FjaGVwb2xpY3koaW1tOyBiaXQgMCA9IGdsYywgYml0IDEgPSBzbGMpCiAgICAgW0ludHJSZWFkTWVtXSwgIiIsIFtTRE5QTWVtT3BlcmFuZF0+LAogICBBTURHUFVSc3JjSW50cmluc2ljPDA+OwogCkBAIC0xMDE0LDcgKzEwNDIsNyBAQAogICAgICBsbHZtX2kzMl90eSwgICAgLy8gb2Zmc2V0KFZHUFIvaW1tLCBpbmNsdWRlZCBpbiBib3VuZHMgY2hlY2tpbmcgYW5kIHN3aXp6bGluZykKICAgICAgbGx2bV9pMzJfdHksICAgIC8vIHNvZmZzZXQoU0dQUi9pbW0sIGV4Y2x1ZGVkIGZyb20gYm91bmRzIGNoZWNraW5nIGFuZCBzd2l6emxpbmcpCiAgICAgIGxsdm1faTMyX3R5LCAgICAvLyBmb3JtYXQoaW1tOyBiaXRzIDMuLjAgPSBkZm10LCBiaXRzIDYuLjQgPSBuZm10KQotICAgICBsbHZtX2kzMl90eV0sICAgLy8gY2FjaGVwb2xpY3koaW1tOyBiaXQgMCA9IGdsYywgYml0IDEgPSBzbGMpIAorICAgICBsbHZtX2kzMl90eV0sICAgLy8gY2FjaGVwb2xpY3koaW1tOyBiaXQgMCA9IGdsYywgYml0IDEgPSBzbGMpCiAgICAgW0ludHJXcml0ZU1lbV0sICIiLCBbU0ROUE1lbU9wZXJhbmRdPiwKICAgQU1ER1BVUnNyY0ludHJpbnNpYzwxPjsKIApAQCAtMTE0OCw2ICsxMTc2LDIwIEBACiAgICAgICAgICAgICBbSW50ck5vTWVtLCBJbnRyU3BlY3VsYXRhYmxlXT47CiAgICAgICAgICAgLy8gU2VlIGludF9hbWRnY25fdl9pbnRlcnBfcDEgZm9yIHdoeSB0aGlzIGlzIEludHJOb01lbS4KIAorLy8gX19idWlsdGluX2FtZGdjbl9pbnRlcnBfcDFfZjE2IDxpPiwgPGF0dHJfY2hhbj4sIDxhdHRyPiwgPGhpZ2g+LCA8bTA+CitkZWYgaW50X2FtZGdjbl9pbnRlcnBfcDFfZjE2IDoKKyAgR0NDQnVpbHRpbjwiX19idWlsdGluX2FtZGdjbl9pbnRlcnBfcDFfZjE2Ij4sCisgIEludHJpbnNpYzxbbGx2bV9mbG9hdF90eV0sCisgICAgICAgICAgICBbbGx2bV9mbG9hdF90eSwgbGx2bV9pMzJfdHksIGxsdm1faTMyX3R5LCBsbHZtX2kxX3R5LCBsbHZtX2kzMl90eV0sCisgICAgICAgICAgICBbSW50ck5vTWVtLCBJbnRyU3BlY3VsYXRhYmxlXT47CisKKy8vIF9fYnVpbHRpbl9hbWRnY25faW50ZXJwX3AyX2YxNiA8cDE+LCA8aj4sIDxhdHRyX2NoYW4+LCA8YXR0cj4sIDxoaWdoPiwgPG0wPgorZGVmIGludF9hbWRnY25faW50ZXJwX3AyX2YxNiA6CisgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9hbWRnY25faW50ZXJwX3AyX2YxNiI+LAorICBJbnRyaW5zaWM8W2xsdm1faGFsZl90eV0sCisgICAgICAgICAgICBbbGx2bV9mbG9hdF90eSwgbGx2bV9mbG9hdF90eSwgbGx2bV9pMzJfdHksIGxsdm1faTMyX3R5LCBsbHZtX2kxX3R5LCBsbHZtX2kzMl90eV0sCisgICAgICAgICAgICBbSW50ck5vTWVtLCBJbnRyU3BlY3VsYXRhYmxlXT47CisKIC8vIFBpeGVsIHNoYWRlcnMgb25seTogd2hldGhlciB0aGUgY3VycmVudCBwaXhlbCBpcyBsaXZlIChpLmUuIG5vdCBhIGhlbHBlcgogLy8gaW52b2NhdGlvbiBmb3IgZGVyaXZhdGl2ZSBjb21wdXRhdGlvbikuCiBkZWYgaW50X2FtZGdjbl9wc19saXZlIDogSW50cmluc2ljIDwKQEAgLTE0ODQsMTggKzE1MjYsMTAgQEAKICAgW2xsdm1faTY0X3R5XSwgW0ludHJDb252ZXJnZW50XQogPjsKIAotZGVmIGludF9hbWRnY25fYnJlYWsgOiBJbnRyaW5zaWM8W2xsdm1faTY0X3R5XSwKLSAgW2xsdm1faTY0X3R5XSwgW0ludHJOb01lbSwgSW50ckNvbnZlcmdlbnRdCi0+OwotCiBkZWYgaW50X2FtZGdjbl9pZl9icmVhayA6IEludHJpbnNpYzxbbGx2bV9pNjRfdHldLAogICBbbGx2bV9pMV90eSwgbGx2bV9pNjRfdHldLCBbSW50ck5vTWVtLCBJbnRyQ29udmVyZ2VudF0KID47CiAKLWRlZiBpbnRfYW1kZ2NuX2Vsc2VfYnJlYWsgOiBJbnRyaW5zaWM8W2xsdm1faTY0X3R5XSwKLSAgW2xsdm1faTY0X3R5LCBsbHZtX2k2NF90eV0sIFtJbnRyTm9NZW0sIEludHJDb252ZXJnZW50XQotPjsKLQogZGVmIGludF9hbWRnY25fbG9vcCA6IEludHJpbnNpYzxbbGx2bV9pMV90eV0sCiAgIFtsbHZtX2k2NF90eV0sIFtJbnRyQ29udmVyZ2VudF0KID47CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NBUk0udGQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NBUk0udGQKaW5kZXggNGUxMWY5Yy4uMjI5YzIwYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzQVJNLnRkCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc0FSTS50ZApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJbnRyaW5zaWNzQVJNLnRkIC0gRGVmaW5lcyBBUk0gaW50cmluc2ljcyAtLS0tLS0tLS0tLSotIHRhYmxlZ2VuIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzQlBGLnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzQlBGLnRkCmluZGV4IDk0ZWNhOGUuLmQ3NTk1YTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc0JQRi50ZAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NCUEYudGQKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSW50cmluc2ljc0JQRi50ZCAtIERlZmluZXMgQlBGIGludHJpbnNpY3MgLS0tLS0tLS0tLS0qLSB0YWJsZWdlbiAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc0hleGFnb24udGQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NIZXhhZ29uLnRkCmluZGV4IDI1ZjQyMTUuLjNlMzE2NmQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc0hleGFnb24udGQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzSGV4YWdvbi50ZApAQCAtMSw4ICsxLDcgQEAKIC8vPT09LSBJbnRyaW5zaWNzSGV4YWdvbi50ZCAtIERlZmluZXMgSGV4YWdvbiBpbnRyaW5zaWNzIC0tLSotIHRhYmxlZ2VuIC0qLT09PS8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNSw3ICsxNCw3IEBACiAvLwogLy8gQWxsIEhleGFnb24gaW50cmluc2ljcyBzdGFydCB3aXRoICJsbHZtLmhleGFnb24uIi4KIGxldCBUYXJnZXRQcmVmaXggPSAiaGV4YWdvbiIgaW4gewotICAvLy8gSGV4YWdvbl9JbnRyaW5zaWMgLSBCYXNlIGNsYXNzIGZvciBhbGwgSGV4YWdvbiBpbnRyaW5zaWNzLgorICAvLy8gSGV4YWdvbl9JbnRyaW5zaWMgLSBCYXNlIGNsYXNzIGZvciB0aGUgbWFqb3JpdHkgb2YgSGV4YWdvbiBpbnRyaW5zaWNzLgogICBjbGFzcyBIZXhhZ29uX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4LCBsaXN0PExMVk1UeXBlPiByZXRfdHlwZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0PExMVk1UeXBlPiBwYXJhbV90eXBlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Q8SW50cmluc2ljUHJvcGVydHk+IHByb3BlcnRpZXM+CkBAIC0zMCwzOTcgKzI5LDYgQEAKICAgICA6IEludHJpbnNpYzxyZXRfdHlwZXMsIHBhcmFtX3R5cGVzLCBwcm9wZXJ0aWVzPjsKIH0KIAotLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8xKFFJX2Z0eXBlX01FTSxCVF9CT09MLEJUX1BUUikgLT4KLS8vIEhleGFnb25fcWlfbWVtX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fcWlfbWVtX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTFfdHldLCBbbGx2bV9wdHJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMShISV9mdHlwZV9TSSxCVF9JMTYsQlRfSU5UKSAtPgotLy8gSGV4YWdvbl9oaV9zaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX2hpX3NpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTE2X3R5XSwgW2xsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzEoU0lfZnR5cGVfU0ksQlRfSU5ULEJUX0lOVCkgLT4KLS8vIEhleGFnb25fc2lfc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9zaV9zaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8xKERJX2Z0eXBlX1NJLEJUX0xPTkdMT05HLEJUX0lOVCkgLT4KLS8vIEhleGFnb25fZGlfc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9kaV9zaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8xKFNJX2Z0eXBlX0RJLEJUX0lOVCxCVF9MT05HTE9ORykgLT4KLS8vIEhleGFnb25fc2lfZGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9zaV9kaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2k2NF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8xKERJX2Z0eXBlX0RJLEJUX0xPTkdMT05HLEJUX0xPTkdMT05HKSAtPgotLy8gSGV4YWdvbl9kaV9kaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX2RpX2RpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTY0X3R5XSwgW2xsdm1faTY0X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzEoUUlfZnR5cGVfUUksQlRfQk9PTCxCVF9CT09MKSAtPgotLy8gSGV4YWdvbl9xaV9xaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX3FpX3FpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTFfdHldLCBbbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMShRSV9mdHlwZV9TSSxCVF9CT09MLEJUX0lOVCkgLT4KLS8vIEhleGFnb25fcWlfc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9xaV9zaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kxX3R5XSwgW2xsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzEoRElfZnR5cGVfUUksQlRfTE9OR0xPTkcsQlRfQk9PTCkgLT4KLS8vIEhleGFnb25fZGlfcWlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9kaV9xaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8xKFNJX2Z0eXBlX1FJLEJUX0lOVCxCVF9CT09MKSAtPgotLy8gSGV4YWdvbl9zaV9xaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX3NpX3FpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTMyX3R5XSwgW2xsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzIoUUlfZnR5cGVfU0lTSSxCVF9CT09MLEJUX0lOVCxCVF9JTlQpIC0+Ci0vLyBIZXhhZ29uX3FpX3Npc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9xaV9zaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTFfdHldLCBbbGx2bV9pMzJfdHksIGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzIodm9pZF9mdHlwZV9TSVNJLEJUX1ZPSUQsQlRfSU5ULEJUX0lOVCkgLT4KLS8vIEhleGFnb25fdm9pZF9zaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fdm9pZF9zaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdm9pZF90eV0sIFtsbHZtX2kzMl90eSwgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMihTSV9mdHlwZV9TSVNJLEJUX0lOVCxCVF9JTlQsQlRfSU5UKSAtPgotLy8gSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2kzMl90eSwgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMihVU0lfZnR5cGVfU0lTSSxCVF9VSU5ULEJUX0lOVCxCVF9JTlQpIC0+Ci0vLyBIZXhhZ29uX3VzaV9zaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fdXNpX3Npc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV9pMzJfdHksIGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzIoRElfZnR5cGVfU0lTSSxCVF9MT05HTE9ORyxCVF9JTlQsQlRfSU5UKSAtPgotLy8gSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2kzMl90eSwgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMihVRElfZnR5cGVfU0lTSSxCVF9VTE9OR0xPTkcsQlRfSU5ULEJUX0lOVCkgLT4KLS8vIEhleGFnb25fdWRpX3Npc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl91ZGlfc2lzaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2kzMl90eSwgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMihESV9mdHlwZV9TSURJLEJUX0xPTkdMT05HLEJUX0lOVCxCVF9MT05HTE9ORykgLT4KLS8vIEhleGFnb25fZGlfc2lkaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX2RpX3NpZGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pNjRfdHldLCBbbGx2bV9pMzJfdHksIGxsdm1faTY0X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzIoRElfZnR5cGVfRElTSSxCVF9MT05HTE9ORyxCVF9MT05HTE9ORyxCVF9JTlQpIC0+Ci0vLyBIZXhhZ29uX2RpX2Rpc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTY0X3R5XSwgW2xsdm1faTY0X3R5LCBsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8yKFNJX2Z0eXBlX1NJREksQlRfSU5ULEJUX0lOVCxCVF9MT05HTE9ORykgLT4KLS8vIEhleGFnb25fc2lfc2lkaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX3NpX3NpZGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV9pMzJfdHksIGxsdm1faTY0X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzIoU0lfZnR5cGVfRElESSxCVF9JTlQsQlRfTE9OR0xPTkcsQlRfTE9OR0xPTkcpIC0+Ci0vLyBIZXhhZ29uX3NpX2RpZGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9zaV9kaWRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTMyX3R5XSwgW2xsdm1faTY0X3R5LCBsbHZtX2k2NF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8yKERJX2Z0eXBlX0RJREksQlRfTE9OR0xPTkcsQlRfTE9OR0xPTkcsQlRfTE9OR0xPTkcpIC0+Ci0vLyBIZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTY0X3R5XSwgW2xsdm1faTY0X3R5LCBsbHZtX2k2NF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8yKFVESV9mdHlwZV9ESURJLEJUX1VMT05HTE9ORyxCVF9MT05HTE9ORyxCVF9MT05HTE9ORykgLT4KLS8vIEhleGFnb25fdWRpX2RpZGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl91ZGlfZGlkaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2k2NF90eSwgbGx2bV9pNjRfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMihTSV9mdHlwZV9ESVNJLEJUX0lOVCxCVF9MT05HTE9ORyxCVF9JTlQpIC0+Ci0vLyBIZXhhZ29uX3NpX2Rpc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9zaV9kaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTMyX3R5XSwgW2xsdm1faTY0X3R5LCBsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8yKFFJX2Z0eXBlX0RJREksQlRfQk9PTCxCVF9MT05HTE9ORyxCVF9MT05HTE9ORykgLT4KLS8vIEhleGFnb25fcWlfZGlkaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX3FpX2RpZGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pMV90eV0sIFtsbHZtX2k2NF90eSwgbGx2bV9pNjRfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMihRSV9mdHlwZV9TSURJLEJUX0JPT0wsQlRfSU5ULEJUX0xPTkdMT05HKSAtPgotLy8gSGV4YWdvbl9xaV9kaWRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fcWlfc2lkaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kxX3R5XSwgW2xsdm1faTMyX3R5LCBsbHZtX2k2NF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8yKFFJX2Z0eXBlX0RJU0ksQlRfQk9PTCxCVF9MT05HTE9ORyxCVF9JTlQpIC0+Ci0vLyBIZXhhZ29uX3FpX2Rpc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9xaV9kaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTFfdHldLCBbbGx2bV9pNjRfdHksIGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzIoUUlfZnR5cGVfUUlRSSxCVF9CT09MLEJUX0JPT0wsQlRfQk9PTCkgLT4KLS8vIEhleGFnb25fcWlfcWlxaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX3FpX3FpcWlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pMV90eV0sIFtsbHZtX2kzMl90eSwgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMihRSV9mdHlwZV9RSVFJUUksQlRfQk9PTCxCVF9CT09MLEJUX0JPT0wpIC0+Ci0vLyBIZXhhZ29uX3FpX3FpcWlxaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX3FpX3FpcWlxaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kxX3R5XSwgW2xsdm1faTFfdHksIGxsdm1faTFfdHksIGxsdm1faTFfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMihTSV9mdHlwZV9RSVFJLEJUX0lOVCxCVF9CT09MLEJUX0JPT0wpIC0+Ci0vLyBIZXhhZ29uX3NpX3FpcWlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9zaV9xaXFpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTMyX3R5XSwgW2xsdm1faTMyX3R5LCBsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8yKFNJX2Z0eXBlX1FJU0ksQlRfSU5ULEJUX0JPT0wsQlRfSU5UKSAtPgotLy8gSGV4YWdvbl9zaV9xaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fc2lfcWlzaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2kxX3R5LCBsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8zKHZvaWRfZnR5cGVfU0lTSVNJLEJUX1ZPSUQsQlRfSU5ULEJUX0lOVCxCVF9JTlQpIC0+Ci0vLyBIZXhhZ29uX3ZvaWRfc2lzaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fdm9pZF9zaXNpc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92b2lkX3R5XSwgW2xsdm1faTMyX3R5LCBsbHZtX2kzMl90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzMoU0lfZnR5cGVfU0lTSVNJLEJUX0lOVCxCVF9JTlQsQlRfSU5ULEJUX0lOVCkgLT4KLS8vIEhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTMyX3R5XSwgW2xsdm1faTMyX3R5LCBsbHZtX2kzMl90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzMoRElfZnR5cGVfU0lTSVNJLEJUX0xPTkdMT05HLEJUX0lOVCxCVF9JTlQsQlRfSU5UKSAtPgotLy8gSGV4YWdvbl9kaV9zaXNpc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9kaV9zaXNpc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pNjRfdHldLCBbbGx2bV9pMzJfdHksIGxsdm1faTMyX3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMyhTSV9mdHlwZV9ESVNJU0ksQlRfSU5ULEJUX0xPTkdMT05HLEJUX0lOVCxCVF9JTlQpIC0+Ci0vLyBIZXhhZ29uX3NpX2Rpc2lzaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX3NpX2Rpc2lzaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2k2NF90eSwgbGx2bV9pMzJfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8zKERJX2Z0eXBlX0RJU0lTSSxCVF9MT05HTE9ORyxCVF9MT05HTE9ORyxCVF9JTlQsQlRfSU5UKSAtPgotLy8gSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pNjRfdHldLCBbbGx2bV9pNjRfdHksIGxsdm1faTMyX3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMyhTSV9mdHlwZV9TSURJU0ksQlRfSU5ULEJUX0lOVCxCVF9MT05HTE9ORyxCVF9JTlQpIC0+Ci0vLyBIZXhhZ29uX3NpX3NpZGlzaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX3NpX3NpZGlzaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2kzMl90eSwgbGx2bV9pNjRfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8zKERJX2Z0eXBlX0RJRElTSSxCVF9MT05HTE9ORyxCVF9MT05HTE9ORywKLS8vICAgICAgICAgICAgICAgICAgICAgQlRfTE9OR0xPTkcsQlRfSU5UKSAtPgotLy8gSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pNjRfdHldLCBbbGx2bV9pNjRfdHksIGxsdm1faTY0X3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMyhTSV9mdHlwZV9TSURJREksQlRfSU5ULEJUX0lOVCxCVF9MT05HTE9ORyxCVF9MT05HTE9ORykgLT4KLS8vIEhleGFnb25fc2lfc2lkaWRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fc2lfc2lkaWRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTMyX3R5XSwgW2xsdm1faTMyX3R5LCBsbHZtX2k2NF90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTY0X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzMoRElfZnR5cGVfRElESURJLEJUX0xPTkdMT05HLEJUX0xPTkdMT05HLEJUX0xPTkdMT05HLAotLy8gICAgICAgICAgICAgICAgICAgICBCVF9MT05HTE9ORykgLT4KLS8vIEhleGFnb25fZGlfZGlkaWRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fZGlfZGlkaWRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTY0X3R5XSwgW2xsdm1faTY0X3R5LCBsbHZtX2k2NF90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTY0X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzMoU0lfZnR5cGVfU0lTSURJLEJUX0lOVCxCVF9JTlQsQlRfSU5ULEJUX0xPTkdMT05HKSAtPgotLy8gSGV4YWdvbl9zaV9zaXNpZGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9zaV9zaXNpZGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV9pMzJfdHksIGxsdm1faTMyX3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9pNjRfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMyhTSV9mdHlwZV9RSVNJU0ksQlRfSU5ULEJUX0JPT0wsQlRfSU5ULEJUX0lOVCkgLT4KLS8vIEhleGFnb25fc2lfcWlzaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fc2lfcWlzaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTMyX3R5XSwgW2xsdm1faTMyX3R5LCBsbHZtX2kzMl90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzMoRElfZnR5cGVfUUlTSVNJLEJUX0xPTkdMT05HLEJUX0JPT0wsQlRfSU5ULEJUX0lOVCkgLT4KLS8vIEhleGFnb25fZGlfcWlzaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fZGlfcWlzaXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTY0X3R5XSwgW2xsdm1faTFfdHksIGxsdm1faTMyX3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfMyhESV9mdHlwZV9RSURJREksQlRfTE9OR0xPTkcsQlRfQk9PTCxCVF9MT05HTE9ORywKLS8vICAgICAgICAgICAgICAgICAgICAgQlRfTE9OR0xPTkcpIC0+Ci0vLyBIZXhhZ29uX2RpX3FpZGlkaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX2RpX3FpZGlkaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2kzMl90eSwgbGx2bV9pNjRfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2k2NF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBERUZfRlVOQ1RJT05fVFlQRV8zKERJX2Z0eXBlX0RJRElRSSxCVF9MT05HTE9ORyxCVF9MT05HTE9ORyxCVF9MT05HTE9ORywKLS8vICAgICAgICAgICAgICAgICAgICAgQlRfQk9PTCkgLT4KLS8vIEhleGFnb25fZGlfZGlkaXFpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fZGlfZGlkaXFpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTY0X3R5XSwgW2xsdm1faTY0X3R5LCBsbHZtX2k2NF90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIERFRl9GVU5DVElPTl9UWVBFXzQoU0lfZnR5cGVfU0lTSVNJU0ksQlRfSU5ULEJUX0lOVCxCVF9JTlQsQlRfSU5ULEJUX0lOVCkgLT4KLS8vIEhleGFnb25fc2lfc2lzaXNpc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9zaV9zaXNpc2lzaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2kzMl90eSwgbGx2bV9pMzJfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2kzMl90eSwgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gREVGX0ZVTkNUSU9OX1RZUEVfNChESV9mdHlwZV9ESURJU0lTSSxCVF9MT05HTE9ORyxCVF9MT05HTE9ORywKLS8vICAgICAgICAgICAgICAgICAgICAgQlRfTE9OR0xPTkcsQlRfSU5ULEJUX0lOVCkgLT4KLS8vIEhleGFnb25fZGlfZGlkaXNpc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9kaV9kaWRpc2lzaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2k2NF90eSwgbGx2bV9pNjRfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2kzMl90eSwgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KIGNsYXNzIEhleGFnb25fbWVtX21lbW1lbXNpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgogICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fcHRyX3R5XSwgW2xsdm1fcHRyX3R5LCBsbHZtX3B0cl90eSwKQEAgLTQ1NywxOTEgKzY1LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyV3JpdGVNZW1dPjsKIAotY2xhc3MgSGV4YWdvbl92MjU2X3YyNTZ2MjU2X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjhpMzJfdHldLCBbbGx2bV92OGkzMl90eSwgbGx2bV92OGkzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OwotCi0vLwotLy8gSGV4YWdvbl9zZl9kZl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX3NmX3NpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fZmxvYXRfdHldLCBbbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtLCBUaHJvd3NdPjsKLS8vCi0vLyBIZXhhZ29uX3NmX2RmX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fc2ZfZGZfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9mbG9hdF90eV0sIFtsbHZtX2RvdWJsZV90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBIZXhhZ29uX3NmX2RpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fc2ZfZGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9mbG9hdF90eV0sIFtsbHZtX2k2NF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBIZXhhZ29uX2RmX3NmX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fZGZfc2ZfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9kb3VibGVfdHldLCBbbGx2bV9mbG9hdF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBIZXhhZ29uX2RpX3NmX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fZGlfc2ZfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pNjRfdHldLCBbbGx2bV9mbG9hdF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBIZXhhZ29uX3NmX3NmX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fc2Zfc2ZfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9mbG9hdF90eV0sIFtsbHZtX2Zsb2F0X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIEhleGFnb25fc2lfc2ZfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9zaV9zZl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2Zsb2F0X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIEhleGFnb25fc2lfZGZfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9zaV9kZl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2RvdWJsZV90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBIZXhhZ29uX3NmX3Nmc2ZfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9zZl9zZnNmX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fZmxvYXRfdHldLCBbbGx2bV9mbG9hdF90eSwgbGx2bV9mbG9hdF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW0sIFRocm93c10+OwotLy8KLS8vIEhleGFnb25fc2lfc2ZzZl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX3NpX3Nmc2ZfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV9mbG9hdF90eSwgbGx2bV9mbG9hdF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW0sIFRocm93c10+OwotLy8KLS8vIEhleGFnb25fc2lfc2ZzaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX3NpX3Nmc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV9mbG9hdF90eSwgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtLCBUaHJvd3NdPjsKLS8vCi0vLyBIZXhhZ29uX3FpX3NmcWlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9xaV9zZnFpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTFfdHldLCBbbGx2bV9mbG9hdF90eSwgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gSGV4YWdvbl9zZl9zZnNmc2ZfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9zZl9zZnNmc2ZfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9mbG9hdF90eV0sIFtsbHZtX2Zsb2F0X3R5LCBsbHZtX2Zsb2F0X3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2Zsb2F0X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbSwgVGhyb3dzXT47Ci0vLwotLy8gSGV4YWdvbl9zZl9zZnNmc2ZxaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX3NmX3Nmc2ZzZnFpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fZmxvYXRfdHldLCBbbGx2bV9mbG9hdF90eSwgbGx2bV9mbG9hdF90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9mbG9hdF90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbSwgVGhyb3dzXT47Ci0vLwotLy8gSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9kaV9kaWRpZGlzaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2k2NF90eSwgbGx2bV9pNjRfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2k2NF90eSwgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gSGV4YWdvbl9kZl9zaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX2RmX3NpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fZG91YmxlX3R5XSwgW2xsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbSwgVGhyb3dzXT47Ci0vLwotLy8gSGV4YWdvbl9kZl9kaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX2RmX2RpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fZG91YmxlX3R5XSwgW2xsdm1faTY0X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotLy8KLS8vIEhleGFnb25fZGlfZGZfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9kaV9kZl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2RvdWJsZV90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLS8vCi0vLyBIZXhhZ29uX2RmX2RmX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fZGZfZGZfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9kb3VibGVfdHldLCBbbGx2bV9kb3VibGVfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0vLwotLy8gSGV4YWdvbl9kZl9kZmRmX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fZGZfZGZkZl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2RvdWJsZV90eV0sIFtsbHZtX2RvdWJsZV90eSwgbGx2bV9kb3VibGVfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtLCBUaHJvd3NdPjsKLS8vCi0vLyBIZXhhZ29uX3NpX2RmZGZfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9zaV9kZmRmX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTMyX3R5XSwgW2xsdm1fZG91YmxlX3R5LCBsbHZtX2RvdWJsZV90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW0sIFRocm93c10+OwotLy8KLS8vIEhleGFnb25fc2lfZGZzaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vCi1jbGFzcyBIZXhhZ29uX3NpX2Rmc2lfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV9kb3VibGVfdHksIGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbSwgVGhyb3dzXT47Ci0vLwotLy8KLS8vIEhleGFnb25fZGZfZGZkZmRmX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8KLWNsYXNzIEhleGFnb25fZGZfZGZkZmRmX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fZG91YmxlX3R5XSwgW2xsdm1fZG91YmxlX3R5LCBsbHZtX2RvdWJsZV90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fZG91YmxlX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbSwgVGhyb3dzXT47Ci0vLwotLy8gSGV4YWdvbl9kZl9kZmRmZGZfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLwotY2xhc3MgSGV4YWdvbl9kZl9kZmRmZGZxaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2RvdWJsZV90eV0sIFtsbHZtX2RvdWJsZV90eSwgbGx2bV9kb3VibGVfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2RvdWJsZV90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtLCBUaHJvd3NdPjsKLQotCi0vLyBUaGlzIG9uZSBiZWxvdyB3aWxsIG5vdCBiZSBhdXRvLWdlbmVyYXRlZCwKLS8vIHNvIG1ha2Ugc3VyZSwgeW91IGRvbid0IG92ZXJ3cml0ZSB0aGlzIG9uZS4KIC8vCiAvLyBCVUlMVElOX0lORk9fTk9OQ09OU1QoY2lyY19sZGQsUFRSX2Z0eXBlX1BUUlBUUlNJU0ksNCkKIC8vCkBAIC02OTksNDIwNCArMTIyLDYgQEAKIGRlZiBpbnRfaGV4YWdvbl9jaXJjX3N0YiA6CiBIZXhhZ29uX21lbV9tZW1zaXNpc2lfSW50cmluc2ljPCJjaXJjX3N0YiI+OwogCi0KLWRlZiBpbnRfaGV4YWdvbl9tbTI1NmlfdmFkZHcgOgotSGV4YWdvbl92MjU2X3YyNTZ2MjU2X0ludHJpbnNpYzwiX21tMjU2aV92YWRkdyI+OwotCi0KLS8vIFRoaXMgb25lIGFib3ZlIHdpbGwgbm90IGJlIGF1dG8tZ2VuZXJhdGVkLAotLy8gc28gbWFrZSBzdXJlLCB5b3UgZG9uJ3Qgb3ZlcndyaXRlIHRoaXMgb25lLgotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2NtcGVxLFFJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQzJfY21wZXEgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9jbXBlcSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2NtcGd0LFFJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQzJfY21wZ3QgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9jbXBndCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2NtcGd0dSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0MyX2NtcGd0dSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0MyX2NtcGd0dSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2NtcGVxcCxRSV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0MyX2NtcGVxcCA6Ci1IZXhhZ29uX3NpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0MyX2NtcGVxcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2NtcGd0cCxRSV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0MyX2NtcGd0cCA6Ci1IZXhhZ29uX3NpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0MyX2NtcGd0cCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2NtcGd0dXAsUUlfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DMl9jbXBndHVwIDoKLUhleGFnb25fc2lfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQzJfY21wZ3R1cCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkE0X3JjbXBlcWksU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF9yY21wZXFpIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfcmNtcGVxaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkE0X3JjbXBuZXFpLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfcmNtcG5lcWkgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9yY21wbmVxaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkE0X3JjbXBlcSxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0E0X3JjbXBlcSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0E0X3JjbXBlcSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkE0X3JjbXBuZXEsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF9yY21wbmVxIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfcmNtcG5lcSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2JpdHNzZXQsUUlfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DMl9iaXRzc2V0IDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzJfYml0c3NldCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2JpdHNjbHIsUUlfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DMl9iaXRzY2xyIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzJfYml0c2NsciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkM0X25iaXRzc2V0LFFJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQzRfbmJpdHNzZXQgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9DNF9uYml0c3NldCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkM0X25iaXRzY2xyLFFJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQzRfbmJpdHNjbHIgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9DNF9uYml0c2NsciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2NtcGVxaSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0MyX2NtcGVxaSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0MyX2NtcGVxaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2NtcGd0aSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0MyX2NtcGd0aSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0MyX2NtcGd0aSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2NtcGd0dWksUUlfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DMl9jbXBndHVpIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzJfY21wZ3R1aSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2NtcGdlaSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0MyX2NtcGdlaSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0MyX2NtcGdlaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2NtcGdldWksUUlfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DMl9jbXBnZXVpIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzJfY21wZ2V1aSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2NtcGx0LFFJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQzJfY21wbHQgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9jbXBsdCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2NtcGx0dSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0MyX2NtcGx0dSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0MyX2NtcGx0dSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2JpdHNjbHJpLFFJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQzJfYml0c2NscmkgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9iaXRzY2xyaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkM0X25iaXRzY2xyaSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0M0X25iaXRzY2xyaSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0M0X25iaXRzY2xyaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkM0X2NtcG5lcWksUUlfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DNF9jbXBuZXFpIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzRfY21wbmVxaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkM0X2NtcGx0ZWksUUlfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DNF9jbXBsdGVpIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzRfY21wbHRlaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkM0X2NtcGx0ZXVpLFFJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQzRfY21wbHRldWkgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9DNF9jbXBsdGV1aSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkM0X2NtcG5lcSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0M0X2NtcG5lcSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0M0X2NtcG5lcSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkM0X2NtcGx0ZSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0M0X2NtcGx0ZSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0M0X2NtcGx0ZSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkM0X2NtcGx0ZXUsUUlfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DNF9jbXBsdGV1IDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzRfY21wbHRldSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2FuZCxRSV9mdHlwZV9RSVFJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0MyX2FuZCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0MyX2FuZCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX29yLFFJX2Z0eXBlX1FJUUksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQzJfb3IgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9vciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX3hvcixRSV9mdHlwZV9RSVFJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0MyX3hvciA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0MyX3hvciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2FuZG4sUUlfZnR5cGVfUUlRSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DMl9hbmRuIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzJfYW5kbiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX25vdCxRSV9mdHlwZV9RSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DMl9ub3QgOgotSGV4YWdvbl9zaV9zaV9JbnRyaW5zaWM8IkhFWEFHT05fQzJfbm90Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQzJfb3JuLFFJX2Z0eXBlX1FJUUksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQzJfb3JuIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzJfb3JuIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQzRfYW5kX2FuZCxRSV9mdHlwZV9RSVFJUUksMykKLS8vCi1kZWYgaW50X2hleGFnb25fQzRfYW5kX2FuZCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzRfYW5kX2FuZCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkM0X2FuZF9vcixRSV9mdHlwZV9RSVFJUUksMykKLS8vCi1kZWYgaW50X2hleGFnb25fQzRfYW5kX29yIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9DNF9hbmRfb3IiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5DNF9vcl9hbmQsUUlfZnR5cGVfUUlRSVFJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX0M0X29yX2FuZCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzRfb3JfYW5kIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQzRfb3Jfb3IsUUlfZnR5cGVfUUlRSVFJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX0M0X29yX29yIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9DNF9vcl9vciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkM0X2FuZF9hbmRuLFFJX2Z0eXBlX1FJUUlRSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DNF9hbmRfYW5kbiA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzRfYW5kX2FuZG4iPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5DNF9hbmRfb3JuLFFJX2Z0eXBlX1FJUUlRSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DNF9hbmRfb3JuIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9DNF9hbmRfb3JuIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQzRfb3JfYW5kbixRSV9mdHlwZV9RSVFJUUksMykKLS8vCi1kZWYgaW50X2hleGFnb25fQzRfb3JfYW5kbiA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzRfb3JfYW5kbiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkM0X29yX29ybixRSV9mdHlwZV9RSVFJUUksMykKLS8vCi1kZWYgaW50X2hleGFnb25fQzRfb3Jfb3JuIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9DNF9vcl9vcm4iPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5DMl9weGZlcl9tYXAsUUlfZnR5cGVfUUksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fQzJfcHhmZXJfbWFwIDoKLUhleGFnb25fc2lfcWlfSW50cmluc2ljPCJIRVhBR09OX0MyX3B4ZmVyX21hcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX2FueTgsUUlfZnR5cGVfUUksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fQzJfYW55OCA6Ci1IZXhhZ29uX3NpX3FpX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9hbnk4Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQzJfYWxsOCxRSV9mdHlwZV9RSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DMl9hbGw4IDoKLUhleGFnb25fc2lfcWlfSW50cmluc2ljPCJIRVhBR09OX0MyX2FsbDgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5DMl92aXRwYWNrLFNJX2Z0eXBlX1FJUUksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQzJfdml0cGFjayA6Ci1IZXhhZ29uX3NpX3FpcWlfSW50cmluc2ljPCJIRVhBR09OX0MyX3ZpdHBhY2siPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5DMl9tdXgsU0lfZnR5cGVfUUlTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX0MyX211eCA6Ci1IZXhhZ29uX3NpX3Fpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzJfbXV4Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQzJfbXV4aWksU0lfZnR5cGVfUUlTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX0MyX211eGlpIDoKLUhleGFnb25fc2lfcWlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9tdXhpaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX211eGlyLFNJX2Z0eXBlX1FJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DMl9tdXhpciA6Ci1IZXhhZ29uX3NpX3Fpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQzJfbXV4aXIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5DMl9tdXhyaSxTSV9mdHlwZV9RSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fQzJfbXV4cmkgOgotSGV4YWdvbl9zaV9xaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX0MyX211eHJpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQzJfdm11eCxESV9mdHlwZV9RSURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fQzJfdm11eCA6Ci1IZXhhZ29uX2RpX3FpZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQzJfdm11eCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkMyX21hc2ssRElfZnR5cGVfUUksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fQzJfbWFzayA6Ci1IZXhhZ29uX2RpX3FpX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9tYXNrIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmNtcGJlcSxRSV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZjbXBiZXEgOgotSGV4YWdvbl9zaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92Y21wYmVxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdmNtcGJlcWksUUlfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF92Y21wYmVxaSA6Ci1IZXhhZ29uX3NpX2Rpc2lfSW50cmluc2ljPCJIRVhBR09OX0E0X3ZjbXBiZXFpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdmNtcGJlcV9hbnksUUlfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF92Y21wYmVxX2FueSA6Ci1IZXhhZ29uX3NpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0E0X3ZjbXBiZXFfYW55Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmNtcGJndHUsUUlfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92Y21wYmd0dSA6Ci1IZXhhZ29uX3NpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZjbXBiZ3R1Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdmNtcGJndHVpLFFJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfdmNtcGJndHVpIDoKLUhleGFnb25fc2lfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfdmNtcGJndHVpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdmNtcGJndCxRSV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0E0X3ZjbXBiZ3QgOgotSGV4YWdvbl9zaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF92Y21wYmd0Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdmNtcGJndGksUUlfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF92Y21wYmd0aSA6Ci1IZXhhZ29uX3NpX2Rpc2lfSW50cmluc2ljPCJIRVhBR09OX0E0X3ZjbXBiZ3RpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfY21wYmVxLFFJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfY21wYmVxIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfY21wYmVxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfY21wYmVxaSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0E0X2NtcGJlcWkgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9jbXBiZXFpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfY21wYmd0dSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0E0X2NtcGJndHUgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9jbXBiZ3R1Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfY21wYmd0dWksUUlfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF9jbXBiZ3R1aSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0E0X2NtcGJndHVpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfY21wYmd0LFFJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfY21wYmd0IDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfY21wYmd0Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfY21wYmd0aSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0E0X2NtcGJndGkgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9jbXBiZ3RpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmNtcGhlcSxRSV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZjbXBoZXEgOgotSGV4YWdvbl9zaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92Y21waGVxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmNtcGhndCxRSV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZjbXBoZ3QgOgotSGV4YWdvbl9zaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92Y21waGd0Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmNtcGhndHUsUUlfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92Y21waGd0dSA6Ci1IZXhhZ29uX3NpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZjbXBoZ3R1Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdmNtcGhlcWksUUlfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF92Y21waGVxaSA6Ci1IZXhhZ29uX3NpX2Rpc2lfSW50cmluc2ljPCJIRVhBR09OX0E0X3ZjbXBoZXFpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdmNtcGhndGksUUlfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF92Y21waGd0aSA6Ci1IZXhhZ29uX3NpX2Rpc2lfSW50cmluc2ljPCJIRVhBR09OX0E0X3ZjbXBoZ3RpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdmNtcGhndHVpLFFJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfdmNtcGhndHVpIDoKLUhleGFnb25fc2lfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfdmNtcGhndHVpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfY21waGVxLFFJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfY21waGVxIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfY21waGVxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfY21waGd0LFFJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfY21waGd0IDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfY21waGd0Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfY21waGd0dSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0E0X2NtcGhndHUgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9jbXBoZ3R1Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfY21waGVxaSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0E0X2NtcGhlcWkgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9jbXBoZXFpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfY21waGd0aSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0E0X2NtcGhndGkgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9jbXBoZ3RpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfY21waGd0dWksUUlfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF9jbXBoZ3R1aSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0E0X2NtcGhndHVpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmNtcHdlcSxRSV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZjbXB3ZXEgOgotSGV4YWdvbl9zaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92Y21wd2VxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmNtcHdndCxRSV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZjbXB3Z3QgOgotSGV4YWdvbl9zaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92Y21wd2d0Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmNtcHdndHUsUUlfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92Y21wd2d0dSA6Ci1IZXhhZ29uX3NpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZjbXB3Z3R1Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdmNtcHdlcWksUUlfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF92Y21wd2VxaSA6Ci1IZXhhZ29uX3NpX2Rpc2lfSW50cmluc2ljPCJIRVhBR09OX0E0X3ZjbXB3ZXFpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdmNtcHdndGksUUlfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF92Y21wd2d0aSA6Ci1IZXhhZ29uX3NpX2Rpc2lfSW50cmluc2ljPCJIRVhBR09OX0E0X3ZjbXB3Z3RpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdmNtcHdndHVpLFFJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfdmNtcHdndHVpIDoKLUhleGFnb25fc2lfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfdmNtcHdndHVpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfYm91bmRzY2hlY2ssUUlfZnR5cGVfU0lESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF9ib3VuZHNjaGVjayA6Ci1IZXhhZ29uX3NpX3NpZGlfSW50cmluc2ljPCJIRVhBR09OX0E0X2JvdW5kc2NoZWNrIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdGxibWF0Y2gsUUlfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF90bGJtYXRjaCA6Ci1IZXhhZ29uX3NpX2Rpc2lfSW50cmluc2ljPCJIRVhBR09OX0E0X3RsYm1hdGNoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQzJfdGZycHIsU0lfZnR5cGVfUUksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fQzJfdGZycHIgOgotSGV4YWdvbl9zaV9xaV9JbnRyaW5zaWM8IkhFWEFHT05fQzJfdGZycHIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5DMl90ZnJycCxRSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9DMl90ZnJycCA6Ci1IZXhhZ29uX3NpX3NpX0ludHJpbnNpYzwiSEVYQUdPTl9DMl90ZnJycCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkM0X2Zhc3Rjb3JuZXI5LFFJX2Z0eXBlX1FJUUksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQzRfZmFzdGNvcm5lcjkgOgotSGV4YWdvbl9zaV9xaXFpX0ludHJpbnNpYzwiSEVYQUdPTl9DNF9mYXN0Y29ybmVyOSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkM0X2Zhc3Rjb3JuZXI5X25vdCxRSV9mdHlwZV9RSVFJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0M0X2Zhc3Rjb3JuZXI5X25vdCA6Ci1IZXhhZ29uX3NpX3FpcWlfSW50cmluc2ljPCJIRVhBR09OX0M0X2Zhc3Rjb3JuZXI5X25vdCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weV9hY2NfaGhfczAsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9hY2NfaGhfczAgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9hY2NfaGhfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlfYWNjX2hoX3MxLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfYWNjX2hoX3MxIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfYWNjX2hoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X2FjY19obF9zMCxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X2FjY19obF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2FjY19obF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weV9hY2NfaGxfczEsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9hY2NfaGxfczEgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9hY2NfaGxfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlfYWNjX2xoX3MwLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfYWNjX2xoX3MwIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfYWNjX2xoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X2FjY19saF9zMSxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X2FjY19saF9zMSA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2FjY19saF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weV9hY2NfbGxfczAsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9hY2NfbGxfczAgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9hY2NfbGxfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlfYWNjX2xsX3MxLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfYWNjX2xsX3MxIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfYWNjX2xsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X25hY19oaF9zMCxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X25hY19oaF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X25hY19oaF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weV9uYWNfaGhfczEsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9uYWNfaGhfczEgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9uYWNfaGhfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlfbmFjX2hsX3MwLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfbmFjX2hsX3MwIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfbmFjX2hsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X25hY19obF9zMSxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X25hY19obF9zMSA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X25hY19obF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weV9uYWNfbGhfczAsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9uYWNfbGhfczAgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9uYWNfbGhfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlfbmFjX2xoX3MxLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfbmFjX2xoX3MxIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfbmFjX2xoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X25hY19sbF9zMCxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X25hY19sbF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X25hY19sbF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weV9uYWNfbGxfczEsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9uYWNfbGxfczEgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9uYWNfbGxfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlfYWNjX3NhdF9oaF9zMCxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X2FjY19zYXRfaGhfczAgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9hY2Nfc2F0X2hoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X2FjY19zYXRfaGhfczEsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9hY2Nfc2F0X2hoX3MxIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfYWNjX3NhdF9oaF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weV9hY2Nfc2F0X2hsX3MwLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfYWNjX3NhdF9obF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2FjY19zYXRfaGxfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlfYWNjX3NhdF9obF9zMSxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X2FjY19zYXRfaGxfczEgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9hY2Nfc2F0X2hsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X2FjY19zYXRfbGhfczAsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9hY2Nfc2F0X2xoX3MwIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfYWNjX3NhdF9saF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weV9hY2Nfc2F0X2xoX3MxLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfYWNjX3NhdF9saF9zMSA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2FjY19zYXRfbGhfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlfYWNjX3NhdF9sbF9zMCxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X2FjY19zYXRfbGxfczAgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9hY2Nfc2F0X2xsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X2FjY19zYXRfbGxfczEsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9hY2Nfc2F0X2xsX3MxIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfYWNjX3NhdF9sbF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weV9uYWNfc2F0X2hoX3MwLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfbmFjX3NhdF9oaF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X25hY19zYXRfaGhfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlfbmFjX3NhdF9oaF9zMSxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X25hY19zYXRfaGhfczEgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9uYWNfc2F0X2hoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X25hY19zYXRfaGxfczAsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9uYWNfc2F0X2hsX3MwIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfbmFjX3NhdF9obF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weV9uYWNfc2F0X2hsX3MxLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfbmFjX3NhdF9obF9zMSA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X25hY19zYXRfaGxfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlfbmFjX3NhdF9saF9zMCxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X25hY19zYXRfbGhfczAgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9uYWNfc2F0X2xoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X25hY19zYXRfbGhfczEsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9uYWNfc2F0X2xoX3MxIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfbmFjX3NhdF9saF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weV9uYWNfc2F0X2xsX3MwLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfbmFjX3NhdF9sbF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X25hY19zYXRfbGxfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlfbmFjX3NhdF9sbF9zMSxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X25hY19zYXRfbGxfczEgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9uYWNfc2F0X2xsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X2hoX3MwLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X2hoX3MwIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2hoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X2hoX3MxLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X2hoX3MxIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2hoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X2hsX3MwLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X2hsX3MwIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2hsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X2hsX3MxLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X2hsX3MxIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2hsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X2xoX3MwLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X2xoX3MwIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2xoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X2xoX3MxLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X2xoX3MxIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2xoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X2xsX3MwLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X2xsX3MwIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2xsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X2xsX3MxLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X2xsX3MxIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2xsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9oaF9zMCxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9zYXRfaGhfczAgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X2hoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9oaF9zMSxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9zYXRfaGhfczEgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X2hoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9obF9zMCxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9zYXRfaGxfczAgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X2hsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9obF9zMSxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9zYXRfaGxfczEgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X2hsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9saF9zMCxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9zYXRfbGhfczAgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X2xoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9saF9zMSxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9zYXRfbGhfczEgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X2xoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9sbF9zMCxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9zYXRfbGxfczAgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X2xsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9sbF9zMSxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9zYXRfbGxfczEgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X2xsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3JuZF9oaF9zMCxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9ybmRfaGhfczAgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfcm5kX2hoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3JuZF9oaF9zMSxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9ybmRfaGhfczEgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfcm5kX2hoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3JuZF9obF9zMCxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9ybmRfaGxfczAgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfcm5kX2hsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3JuZF9obF9zMSxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9ybmRfaGxfczEgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfcm5kX2hsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3JuZF9saF9zMCxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9ybmRfbGhfczAgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfcm5kX2xoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3JuZF9saF9zMSxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9ybmRfbGhfczEgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfcm5kX2xoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3JuZF9sbF9zMCxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9ybmRfbGxfczAgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfcm5kX2xsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3JuZF9sbF9zMSxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weV9ybmRfbGxfczEgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfcm5kX2xsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9ybmRfaGhfczAsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9oaF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9zYXRfcm5kX2hoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9ybmRfaGhfczEsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9oaF9zMSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9zYXRfcm5kX2hoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9ybmRfaGxfczAsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9obF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9zYXRfcm5kX2hsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9ybmRfaGxfczEsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9obF9zMSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9zYXRfcm5kX2hsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9ybmRfbGhfczAsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9saF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9zYXRfcm5kX2xoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9ybmRfbGhfczEsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9saF9zMSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9zYXRfcm5kX2xoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9ybmRfbGxfczAsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9sbF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9zYXRfcm5kX2xsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5X3NhdF9ybmRfbGxfczEsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9sbF9zMSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9zYXRfcm5kX2xsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5ZF9hY2NfaGhfczAsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weWRfYWNjX2hoX3MwIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX2FjY19oaF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfYWNjX2hoX3MxLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2FjY19oaF9zMSA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9hY2NfaGhfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlkX2FjY19obF9zMCxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5ZF9hY2NfaGxfczAgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfYWNjX2hsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5ZF9hY2NfaGxfczEsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weWRfYWNjX2hsX3MxIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX2FjY19obF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfYWNjX2xoX3MwLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2FjY19saF9zMCA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9hY2NfbGhfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlkX2FjY19saF9zMSxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5ZF9hY2NfbGhfczEgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfYWNjX2xoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5ZF9hY2NfbGxfczAsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weWRfYWNjX2xsX3MwIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX2FjY19sbF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfYWNjX2xsX3MxLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2FjY19sbF9zMSA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9hY2NfbGxfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlkX25hY19oaF9zMCxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5ZF9uYWNfaGhfczAgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfbmFjX2hoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5ZF9uYWNfaGhfczEsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weWRfbmFjX2hoX3MxIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX25hY19oaF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfbmFjX2hsX3MwLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX25hY19obF9zMCA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9uYWNfaGxfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlkX25hY19obF9zMSxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5ZF9uYWNfaGxfczEgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfbmFjX2hsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5ZF9uYWNfbGhfczAsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weWRfbmFjX2xoX3MwIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX25hY19saF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfbmFjX2xoX3MxLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX25hY19saF9zMSA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9uYWNfbGhfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlkX25hY19sbF9zMCxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5ZF9uYWNfbGxfczAgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfbmFjX2xsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5ZF9uYWNfbGxfczEsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weWRfbmFjX2xsX3MxIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX25hY19sbF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfaGhfczAsRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2hoX3MwIDoKLUhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9oaF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfaGhfczEsRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2hoX3MxIDoKLUhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9oaF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfaGxfczAsRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2hsX3MwIDoKLUhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9obF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfaGxfczEsRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2hsX3MxIDoKLUhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9obF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfbGhfczAsRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2xoX3MwIDoKLUhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9saF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfbGhfczEsRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2xoX3MxIDoKLUhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9saF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfbGxfczAsRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2xsX3MwIDoKLUhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9sbF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfbGxfczEsRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2xsX3MxIDoKLUhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9sbF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfcm5kX2hoX3MwLERJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5ZF9ybmRfaGhfczAgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX3JuZF9oaF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfcm5kX2hoX3MxLERJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5ZF9ybmRfaGhfczEgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX3JuZF9oaF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfcm5kX2hsX3MwLERJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5ZF9ybmRfaGxfczAgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX3JuZF9obF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfcm5kX2hsX3MxLERJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5ZF9ybmRfaGxfczEgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX3JuZF9obF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfcm5kX2xoX3MwLERJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5ZF9ybmRfbGhfczAgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX3JuZF9saF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfcm5kX2xoX3MxLERJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5ZF9ybmRfbGhfczEgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX3JuZF9saF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfcm5kX2xsX3MwLERJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5ZF9ybmRfbGxfczAgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX3JuZF9sbF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weWRfcm5kX2xsX3MxLERJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5ZF9ybmRfbGxfczEgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX3JuZF9sbF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVfYWNjX2hoX3MwLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X2FjY19oaF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9hY2NfaGhfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1X2FjY19oaF9zMSxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dV9hY2NfaGhfczEgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfYWNjX2hoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dV9hY2NfaGxfczAsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVfYWNjX2hsX3MwIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1X2FjY19obF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVfYWNjX2hsX3MxLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X2FjY19obF9zMSA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9hY2NfaGxfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1X2FjY19saF9zMCxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dV9hY2NfbGhfczAgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfYWNjX2xoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dV9hY2NfbGhfczEsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVfYWNjX2xoX3MxIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1X2FjY19saF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVfYWNjX2xsX3MwLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X2FjY19sbF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9hY2NfbGxfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1X2FjY19sbF9zMSxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dV9hY2NfbGxfczEgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfYWNjX2xsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dV9uYWNfaGhfczAsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVfbmFjX2hoX3MwIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1X25hY19oaF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVfbmFjX2hoX3MxLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X25hY19oaF9zMSA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9uYWNfaGhfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1X25hY19obF9zMCxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dV9uYWNfaGxfczAgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfbmFjX2hsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dV9uYWNfaGxfczEsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVfbmFjX2hsX3MxIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1X25hY19obF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVfbmFjX2xoX3MwLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X25hY19saF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9uYWNfbGhfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1X25hY19saF9zMSxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dV9uYWNfbGhfczEgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfbmFjX2xoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dV9uYWNfbGxfczAsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVfbmFjX2xsX3MwIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1X25hY19sbF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVfbmFjX2xsX3MxLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X25hY19sbF9zMSA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9uYWNfbGxfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1X2hoX3MwLFVTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVfaGhfczAgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1X2hoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dV9oaF9zMSxVU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X2hoX3MxIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9oaF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVfaGxfczAsVVNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dV9obF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfaGxfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1X2hsX3MxLFVTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVfaGxfczEgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1X2hsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dV9saF9zMCxVU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X2xoX3MwIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9saF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVfbGhfczEsVVNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dV9saF9zMSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfbGhfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1X2xsX3MwLFVTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVfbGxfczAgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1X2xsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dV9sbF9zMSxVU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X2xsX3MxIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9sbF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVkX2FjY19oaF9zMCxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dWRfYWNjX2hoX3MwIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9hY2NfaGhfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1ZF9hY2NfaGhfczEsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVkX2FjY19oaF9zMSA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dWRfYWNjX2hoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dWRfYWNjX2hsX3MwLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9hY2NfaGxfczAgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX2FjY19obF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVkX2FjY19obF9zMSxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dWRfYWNjX2hsX3MxIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9hY2NfaGxfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1ZF9hY2NfbGhfczAsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVkX2FjY19saF9zMCA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dWRfYWNjX2xoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dWRfYWNjX2xoX3MxLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9hY2NfbGhfczEgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX2FjY19saF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVkX2FjY19sbF9zMCxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dWRfYWNjX2xsX3MwIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9hY2NfbGxfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1ZF9hY2NfbGxfczEsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVkX2FjY19sbF9zMSA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dWRfYWNjX2xsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dWRfbmFjX2hoX3MwLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9uYWNfaGhfczAgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX25hY19oaF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVkX25hY19oaF9zMSxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dWRfbmFjX2hoX3MxIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9uYWNfaGhfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1ZF9uYWNfaGxfczAsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVkX25hY19obF9zMCA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dWRfbmFjX2hsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dWRfbmFjX2hsX3MxLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9uYWNfaGxfczEgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX25hY19obF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVkX25hY19saF9zMCxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dWRfbmFjX2xoX3MwIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9uYWNfbGhfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1ZF9uYWNfbGhfczEsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVkX25hY19saF9zMSA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dWRfbmFjX2xoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dWRfbmFjX2xsX3MwLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9uYWNfbGxfczAgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX25hY19sbF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVkX25hY19sbF9zMSxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dWRfbmFjX2xsX3MxIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9uYWNfbGxfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1ZF9oaF9zMCxVRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9oaF9zMCA6Ci1IZXhhZ29uX2RpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX2hoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dWRfaGhfczEsVURJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dWRfaGhfczEgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9oaF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVkX2hsX3MwLFVESV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVkX2hsX3MwIDoKLUhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dWRfaGxfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1ZF9obF9zMSxVRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9obF9zMSA6Ci1IZXhhZ29uX2RpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX2hsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dWRfbGhfczAsVURJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dWRfbGhfczAgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9saF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXVkX2xoX3MxLFVESV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVkX2xoX3MxIDoKLUhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dWRfbGhfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1ZF9sbF9zMCxVRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9sbF9zMCA6Ci1IZXhhZ29uX2RpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX2xsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5dWRfbGxfczEsVURJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5dWRfbGxfczEgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9sbF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21weXNtaSxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXNtaSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXNtaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21hY3NpcCxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbWFjc2lwIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tYWNzaXAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tYWNzaW4sU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21hY3NpbiA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbWFjc2luIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfZHBtcHlzc19zMCxESV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX2RwbXB5c3NfczAgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9kcG1weXNzX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfZHBtcHlzc19hY2NfczAsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX2RwbXB5c3NfYWNjX3MwIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9kcG1weXNzX2FjY19zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX2RwbXB5c3NfbmFjX3MwLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9kcG1weXNzX25hY19zMCA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfZHBtcHlzc19uYWNfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9kcG1weXV1X3MwLFVESV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX2RwbXB5dXVfczAgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9kcG1weXV1X3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfZHBtcHl1dV9hY2NfczAsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX2RwbXB5dXVfYWNjX3MwIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9kcG1weXV1X2FjY19zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX2RwbXB5dXVfbmFjX3MwLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9kcG1weXV1X25hY19zMCA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfZHBtcHl1dV9uYWNfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlfdXAsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfdXAgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfdXAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlfdXBfczEsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlfdXBfczEgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfdXBfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlfdXBfczFfc2F0LFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5X3VwX3MxX3NhdCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weV91cF9zMV9zYXQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1X3VwLFVTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVfdXAgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1X3VwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbXB5c3VfdXAsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tcHlzdV91cCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weXN1X3VwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfZHBtcHlzc19ybmRfczAsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9kcG1weXNzX3JuZF9zMCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX2RwbXB5c3Nfcm5kX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTRfbWFjX3VwX3MxX3NhdCxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTRfbWFjX3VwX3MxX3NhdCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTRfbWFjX3VwX3MxX3NhdCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X25hY191cF9zMV9zYXQsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX000X25hY191cF9zMV9zYXQgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX000X25hY191cF9zMV9zYXQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHlpLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbXB5aSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX21weWkiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tcHl1aSxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21weXVpIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dWkiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tYWNpLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tYWNpIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tYWNpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfYWNjaSxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfYWNjaSA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfYWNjaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX2FjY2lpLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9hY2NpaSA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfYWNjaWkiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9uYWNjaSxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbmFjY2kgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX25hY2NpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbmFjY2lpLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9uYWNjaWkgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX25hY2NpaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3N1YmFjYyxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfc3ViYWNjIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9zdWJhY2MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NNF9tcHlycl9hZGRyLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NNF9tcHlycl9hZGRyIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9tcHlycl9hZGRyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTRfbXB5cmlfYWRkcl91MixTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTRfbXB5cmlfYWRkcl91MiA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTRfbXB5cmlfYWRkcl91MiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X21weXJpX2FkZHIsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX000X21weXJpX2FkZHIgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX000X21weXJpX2FkZHIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NNF9tcHlyaV9hZGRpLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NNF9tcHlyaV9hZGRpIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9tcHlyaV9hZGRpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTRfbXB5cnJfYWRkaSxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTRfbXB5cnJfYWRkaSA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTRfbXB5cnJfYWRkaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZtcHkyc19zMCxESV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX3ZtcHkyc19zMCA6Ci1IZXhhZ29uX2RpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX3ZtcHkyc19zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZtcHkyc19zMSxESV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX3ZtcHkyc19zMSA6Ci1IZXhhZ29uX2RpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX3ZtcHkyc19zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZtYWMyc19zMCxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdm1hYzJzX3MwIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92bWFjMnNfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl92bWFjMnNfczEsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX3ZtYWMyc19zMSA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdm1hYzJzX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfdm1weTJzdV9zMCxESV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX3ZtcHkyc3VfczAgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92bXB5MnN1X3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfdm1weTJzdV9zMSxESV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX3ZtcHkyc3VfczEgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92bXB5MnN1X3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfdm1hYzJzdV9zMCxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdm1hYzJzdV9zMCA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdm1hYzJzdV9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZtYWMyc3VfczEsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX3ZtYWMyc3VfczEgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX3ZtYWMyc3VfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl92bXB5MnNfczBwYWNrLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdm1weTJzX3MwcGFjayA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX3ZtcHkyc19zMHBhY2siPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl92bXB5MnNfczFwYWNrLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdm1weTJzX3MxcGFjayA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX3ZtcHkyc19zMXBhY2siPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl92bWFjMixESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdm1hYzIgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX3ZtYWMyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfdm1weTJlc19zMCxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX3ZtcHkyZXNfczAgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92bXB5MmVzX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfdm1weTJlc19zMSxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX3ZtcHkyZXNfczEgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92bXB5MmVzX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfdm1hYzJlc19zMCxESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdm1hYzJlc19zMCA6Ci1IZXhhZ29uX2RpX2RpZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdm1hYzJlc19zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZtYWMyZXNfczEsRElfZnR5cGVfRElESURJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX3ZtYWMyZXNfczEgOgotSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX3ZtYWMyZXNfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl92bWFjMmVzLERJX2Z0eXBlX0RJRElESSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92bWFjMmVzIDoKLUhleGFnb25fZGlfZGlkaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92bWFjMmVzIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfdnJtYWNfczAsRElfZnR5cGVfRElESURJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX3ZybWFjX3MwIDoKLUhleGFnb25fZGlfZGlkaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92cm1hY19zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZybXB5X3MwLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdnJtcHlfczAgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92cm1weV9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZkbXB5cnNfczAsU0lfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92ZG1weXJzX3MwIDoKLUhleGFnb25fc2lfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdmRtcHlyc19zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZkbXB5cnNfczEsU0lfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92ZG1weXJzX3MxIDoKLUhleGFnb25fc2lfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdmRtcHlyc19zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk01X3ZybXB5YnV1LERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTVfdnJtcHlidXUgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NNV92cm1weWJ1dSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk01X3ZybWFjYnV1LERJX2Z0eXBlX0RJRElESSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NNV92cm1hY2J1dSA6Ci1IZXhhZ29uX2RpX2RpZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTVfdnJtYWNidXUiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NNV92cm1weWJzdSxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX001X3ZybXB5YnN1IDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTVfdnJtcHlic3UiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NNV92cm1hY2JzdSxESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTVfdnJtYWNic3UgOgotSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPCJIRVhBR09OX001X3ZybWFjYnN1Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTVfdm1weWJ1dSxESV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX001X3ZtcHlidXUgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NNV92bXB5YnV1Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTVfdm1weWJzdSxESV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX001X3ZtcHlic3UgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NNV92bXB5YnN1Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTVfdm1hY2J1dSxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTVfdm1hY2J1dSA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTVfdm1hY2J1dSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk01X3ZtYWNic3UsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX001X3ZtYWNic3UgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX001X3ZtYWNic3UiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NNV92ZG1weWJzdSxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX001X3ZkbXB5YnN1IDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTVfdmRtcHlic3UiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NNV92ZG1hY2JzdSxESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTVfdmRtYWNic3UgOgotSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPCJIRVhBR09OX001X3ZkbWFjYnN1Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfdmRtYWNzX3MwLERJX2Z0eXBlX0RJRElESSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92ZG1hY3NfczAgOgotSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX3ZkbWFjc19zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZkbWFjc19zMSxESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdmRtYWNzX3MxIDoKLUhleGFnb25fZGlfZGlkaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92ZG1hY3NfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl92ZG1weXNfczAsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92ZG1weXNfczAgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92ZG1weXNfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl92ZG1weXNfczEsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92ZG1weXNfczEgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92ZG1weXNfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9jbXB5cnNfczAsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9jbXB5cnNfczAgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9jbXB5cnNfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9jbXB5cnNfczEsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9jbXB5cnNfczEgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9jbXB5cnNfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9jbXB5cnNjX3MwLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfY21weXJzY19zMCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX2NtcHlyc2NfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9jbXB5cnNjX3MxLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfY21weXJzY19zMSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX2NtcHlyc2NfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9jbWFjc19zMCxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfY21hY3NfczAgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX2NtYWNzX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfY21hY3NfczEsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX2NtYWNzX3MxIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9jbWFjc19zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX2NtYWNzY19zMCxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfY21hY3NjX3MwIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9jbWFjc2NfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9jbWFjc2NfczEsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX2NtYWNzY19zMSA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfY21hY3NjX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfY21weXNfczAsRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9jbXB5c19zMCA6Ci1IZXhhZ29uX2RpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX2NtcHlzX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfY21weXNfczEsRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9jbXB5c19zMSA6Ci1IZXhhZ29uX2RpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX2NtcHlzX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfY21weXNjX3MwLERJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfY21weXNjX3MwIDoKLUhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfY21weXNjX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfY21weXNjX3MxLERJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfY21weXNjX3MxIDoKLUhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfY21weXNjX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfY25hY3NfczAsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX2NuYWNzX3MwIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9jbmFjc19zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX2NuYWNzX3MxLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9jbmFjc19zMSA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfY25hY3NfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9jbmFjc2NfczAsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX2NuYWNzY19zMCA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfY25hY3NjX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfY25hY3NjX3MxLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9jbmFjc2NfczEgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX2NuYWNzY19zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZyY21weXNfczEsRElfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92cmNtcHlzX3MxIDoKLUhleGFnb25fZGlfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdnJjbXB5c19zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZyY21weXNfYWNjX3MxLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92cmNtcHlzX2FjY19zMSA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdnJjbXB5c19hY2NfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl92cmNtcHlzX3MxcnAsU0lfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92cmNtcHlzX3MxcnAgOgotSGV4YWdvbl9zaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92cmNtcHlzX3MxcnAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tbWFjbHNfczAsRElfZnR5cGVfRElESURJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21tYWNsc19zMCA6Ci1IZXhhZ29uX2RpX2RpZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1hY2xzX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbW1hY2xzX3MxLERJX2Z0eXBlX0RJRElESSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tbWFjbHNfczEgOgotSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX21tYWNsc19zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21tYWNoc19zMCxESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbW1hY2hzX3MwIDoKLUhleGFnb25fZGlfZGlkaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbWFjaHNfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tbWFjaHNfczEsRElfZnR5cGVfRElESURJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21tYWNoc19zMSA6Ci1IZXhhZ29uX2RpX2RpZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1hY2hzX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbW1weWxfczAsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tbXB5bF9zMCA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX21tcHlsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbW1weWxfczEsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tbXB5bF9zMSA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX21tcHlsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbW1weWhfczAsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tbXB5aF9zMCA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX21tcHloX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbW1weWhfczEsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tbXB5aF9zMSA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX21tcHloX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbW1hY2xzX3JzMCxESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbW1hY2xzX3JzMCA6Ci1IZXhhZ29uX2RpX2RpZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1hY2xzX3JzMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21tYWNsc19yczEsRElfZnR5cGVfRElESURJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21tYWNsc19yczEgOgotSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX21tYWNsc19yczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tbWFjaHNfcnMwLERJX2Z0eXBlX0RJRElESSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tbWFjaHNfcnMwIDoKLUhleGFnb25fZGlfZGlkaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbWFjaHNfcnMwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbW1hY2hzX3JzMSxESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbW1hY2hzX3JzMSA6Ci1IZXhhZ29uX2RpX2RpZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1hY2hzX3JzMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21tcHlsX3JzMCxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21tcHlsX3JzMCA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX21tcHlsX3JzMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21tcHlsX3JzMSxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21tcHlsX3JzMSA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX21tcHlsX3JzMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21tcHloX3JzMCxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21tcHloX3JzMCA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX21tcHloX3JzMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21tcHloX3JzMSxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21tcHloX3JzMSA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX21tcHloX3JzMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X3ZybXB5ZWhfczAsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NNF92cm1weWVoX3MwIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTRfdnJtcHllaF9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X3ZybXB5ZWhfczEsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NNF92cm1weWVoX3MxIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTRfdnJtcHllaF9zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X3ZybXB5ZWhfYWNjX3MwLERJX2Z0eXBlX0RJRElESSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NNF92cm1weWVoX2FjY19zMCA6Ci1IZXhhZ29uX2RpX2RpZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTRfdnJtcHllaF9hY2NfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NNF92cm1weWVoX2FjY19zMSxESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTRfdnJtcHllaF9hY2NfczEgOgotSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPCJIRVhBR09OX000X3ZybXB5ZWhfYWNjX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTRfdnJtcHlvaF9zMCxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX000X3ZybXB5b2hfczAgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF92cm1weW9oX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTRfdnJtcHlvaF9zMSxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX000X3ZybXB5b2hfczEgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF92cm1weW9oX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTRfdnJtcHlvaF9hY2NfczAsRElfZnR5cGVfRElESURJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX000X3ZybXB5b2hfYWNjX3MwIDoKLUhleGFnb25fZGlfZGlkaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF92cm1weW9oX2FjY19zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X3ZybXB5b2hfYWNjX3MxLERJX2Z0eXBlX0RJRElESSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NNF92cm1weW9oX2FjY19zMSA6Ci1IZXhhZ29uX2RpX2RpZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTRfdnJtcHlvaF9hY2NfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9obW1weWxfcnMxLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfaG1tcHlsX3JzMSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX2htbXB5bF9yczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9obW1weWhfcnMxLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfaG1tcHloX3JzMSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX00yX2htbXB5aF9yczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9obW1weWxfczEsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9obW1weWxfczEgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9obW1weWxfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9obW1weWhfczEsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9obW1weWhfczEgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9obW1weWhfczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tbWFjdWxzX3MwLERJX2Z0eXBlX0RJRElESSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tbWFjdWxzX3MwIDoKLUhleGFnb25fZGlfZGlkaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbWFjdWxzX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbW1hY3Vsc19zMSxESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbW1hY3Vsc19zMSA6Ci1IZXhhZ29uX2RpX2RpZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1hY3Vsc19zMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21tYWN1aHNfczAsRElfZnR5cGVfRElESURJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21tYWN1aHNfczAgOgotSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX21tYWN1aHNfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tbWFjdWhzX3MxLERJX2Z0eXBlX0RJRElESSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tbWFjdWhzX3MxIDoKLUhleGFnb25fZGlfZGlkaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbWFjdWhzX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbW1weXVsX3MwLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbW1weXVsX3MwIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1weXVsX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbW1weXVsX3MxLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbW1weXVsX3MxIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1weXVsX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbW1weXVoX3MwLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbW1weXVoX3MwIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1weXVoX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbW1weXVoX3MxLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbW1weXVoX3MxIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1weXVoX3MxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbW1hY3Vsc19yczAsRElfZnR5cGVfRElESURJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21tYWN1bHNfcnMwIDoKLUhleGFnb25fZGlfZGlkaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbWFjdWxzX3JzMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21tYWN1bHNfcnMxLERJX2Z0eXBlX0RJRElESSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tbWFjdWxzX3JzMSA6Ci1IZXhhZ29uX2RpX2RpZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1hY3Vsc19yczEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9tbWFjdWhzX3JzMCxESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfbW1hY3Voc19yczAgOgotSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX21tYWN1aHNfcnMwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfbW1hY3Voc19yczEsRElfZnR5cGVfRElESURJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX21tYWN1aHNfcnMxIDoKLUhleGFnb25fZGlfZGlkaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbWFjdWhzX3JzMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21tcHl1bF9yczAsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tbXB5dWxfcnMwIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1weXVsX3JzMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21tcHl1bF9yczEsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tbXB5dWxfcnMxIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1weXVsX3JzMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21tcHl1aF9yczAsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tbXB5dWhfcnMwIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1weXVoX3JzMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX21tcHl1aF9yczEsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl9tbXB5dWhfcnMxIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1weXVoX3JzMSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZyY21hY2lfczAsRElfZnR5cGVfRElESURJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX3ZyY21hY2lfczAgOgotSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX3ZyY21hY2lfczAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl92cmNtYWNyX3MwLERJX2Z0eXBlX0RJRElESSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92cmNtYWNyX3MwIDoKLUhleGFnb25fZGlfZGlkaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92cmNtYWNyX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfdnJjbWFjaV9zMGMsRElfZnR5cGVfRElESURJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX3ZyY21hY2lfczBjIDoKLUhleGFnb25fZGlfZGlkaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92cmNtYWNpX3MwYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZyY21hY3JfczBjLERJX2Z0eXBlX0RJRElESSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92cmNtYWNyX3MwYyA6Ci1IZXhhZ29uX2RpX2RpZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdnJjbWFjcl9zMGMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl9jbWFjaV9zMCxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfY21hY2lfczAgOgotSGV4YWdvbl9kaV9kaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX00yX2NtYWNpX3MwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfY21hY3JfczAsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX2NtYWNyX3MwIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9jbWFjcl9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZyY21weWlfczAsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92cmNtcHlpX3MwIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdnJjbXB5aV9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZyY21weXJfczAsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92cmNtcHlyX3MwIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdnJjbXB5cl9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZyY21weWlfczBjLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdnJjbXB5aV9zMGMgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92cmNtcHlpX3MwYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZyY21weXJfczBjLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdnJjbXB5cl9zMGMgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92cmNtcHlyX3MwYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX2NtcHlpX3MwLERJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfY21weWlfczAgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9jbXB5aV9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX2NtcHlyX3MwLERJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfY21weXJfczAgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9jbXB5cl9zMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X2NtcHlpX3doLFNJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTRfY21weWlfd2ggOgotSGV4YWdvbl9zaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9jbXB5aV93aCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X2NtcHlyX3doLFNJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTRfY21weXJfd2ggOgotSGV4YWdvbl9zaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9jbXB5cl93aCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X2NtcHlpX3doYyxTSV9mdHlwZV9ESVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX000X2NtcHlpX3doYyA6Ci1IZXhhZ29uX3NpX2Rpc2lfSW50cmluc2ljPCJIRVhBR09OX000X2NtcHlpX3doYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X2NtcHlyX3doYyxTSV9mdHlwZV9ESVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX000X2NtcHlyX3doYyA6Ci1IZXhhZ29uX3NpX2Rpc2lfSW50cmluc2ljPCJIRVhBR09OX000X2NtcHlyX3doYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZjbXB5X3MwX3NhdF9pLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdmNtcHlfczBfc2F0X2kgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92Y21weV9zMF9zYXRfaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZjbXB5X3MwX3NhdF9yLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdmNtcHlfczBfc2F0X3IgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92Y21weV9zMF9zYXRfciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZjbXB5X3MxX3NhdF9pLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdmNtcHlfczFfc2F0X2kgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92Y21weV9zMV9zYXRfaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZjbXB5X3MxX3NhdF9yLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdmNtcHlfczFfc2F0X3IgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92Y21weV9zMV9zYXRfciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3ZjbWFjX3MwX3NhdF9pLERJX2Z0eXBlX0RJRElESSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92Y21hY19zMF9zYXRfaSA6Ci1IZXhhZ29uX2RpX2RpZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdmNtYWNfczBfc2F0X2kiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl92Y21hY19zMF9zYXRfcixESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdmNtYWNfczBfc2F0X3IgOgotSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPCJIRVhBR09OX00yX3ZjbWFjX3MwX3NhdF9yIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfdmNyb3RhdGUsRElfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl92Y3JvdGF0ZSA6Ci1IZXhhZ29uX2RpX2Rpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX3Zjcm90YXRlIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzRfdnJjcm90YXRlX2FjYyxESV9mdHlwZV9ESURJU0lTSSw0KQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF92cmNyb3RhdGVfYWNjIDoKLUhleGFnb25fZGlfZGlkaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1M0X3ZyY3JvdGF0ZV9hY2MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNF92cmNyb3RhdGUsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1M0X3ZyY3JvdGF0ZSA6Ci1IZXhhZ29uX2RpX2Rpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzRfdnJjcm90YXRlIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfdmNuZWdoLERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdmNuZWdoIDoKLUhleGFnb25fZGlfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdmNuZWdoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfdnJjbmVnaCxESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdnJjbmVnaCA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdnJjbmVnaCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X3BtcHl3LERJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTRfcG1weXcgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9wbXB5dyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X3ZwbXB5aCxESV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX000X3ZwbXB5aCA6Ci1IZXhhZ29uX2RpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX000X3ZwbXB5aCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X3BtcHl3X2FjYyxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTRfcG1weXdfYWNjIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9wbXB5d19hY2MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NNF92cG1weWhfYWNjLERJX2Z0eXBlX0RJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NNF92cG1weWhfYWNjIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF92cG1weWhfYWNjIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfYWRkIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3ViLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfc3ViIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3ViIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkc2F0LFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfYWRkc2F0IDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkc2F0Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3Vic2F0LFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfc3Vic2F0IDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3Vic2F0Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkaSxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX2FkZGkgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hZGRpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkaF9sMTZfbGwsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9hZGRoX2wxNl9sbCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX2FkZGhfbDE2X2xsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkaF9sMTZfaGwsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9hZGRoX2wxNl9obCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX2FkZGhfbDE2X2hsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkaF9sMTZfc2F0X2xsLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfYWRkaF9sMTZfc2F0X2xsIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkaF9sMTZfc2F0X2xsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkaF9sMTZfc2F0X2hsLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfYWRkaF9sMTZfc2F0X2hsIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkaF9sMTZfc2F0X2hsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3ViaF9sMTZfbGwsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zdWJoX2wxNl9sbCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3N1YmhfbDE2X2xsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3ViaF9sMTZfaGwsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zdWJoX2wxNl9obCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3N1YmhfbDE2X2hsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3ViaF9sMTZfc2F0X2xsLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfc3ViaF9sMTZfc2F0X2xsIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3ViaF9sMTZfc2F0X2xsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3ViaF9sMTZfc2F0X2hsLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfc3ViaF9sMTZfc2F0X2hsIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3ViaF9sMTZfc2F0X2hsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkaF9oMTZfbGwsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9hZGRoX2gxNl9sbCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX2FkZGhfaDE2X2xsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkaF9oMTZfbGgsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9hZGRoX2gxNl9saCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX2FkZGhfaDE2X2xoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkaF9oMTZfaGwsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9hZGRoX2gxNl9obCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX2FkZGhfaDE2X2hsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkaF9oMTZfaGgsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9hZGRoX2gxNl9oaCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX2FkZGhfaDE2X2hoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkaF9oMTZfc2F0X2xsLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfYWRkaF9oMTZfc2F0X2xsIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkaF9oMTZfc2F0X2xsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkaF9oMTZfc2F0X2xoLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfYWRkaF9oMTZfc2F0X2xoIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkaF9oMTZfc2F0X2xoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkaF9oMTZfc2F0X2hsLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfYWRkaF9oMTZfc2F0X2hsIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkaF9oMTZfc2F0X2hsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYWRkaF9oMTZfc2F0X2hoLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfYWRkaF9oMTZfc2F0X2hoIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkaF9oMTZfc2F0X2hoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3ViaF9oMTZfbGwsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zdWJoX2gxNl9sbCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3N1YmhfaDE2X2xsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3ViaF9oMTZfbGgsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zdWJoX2gxNl9saCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3N1YmhfaDE2X2xoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3ViaF9oMTZfaGwsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zdWJoX2gxNl9obCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3N1YmhfaDE2X2hsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3ViaF9oMTZfaGgsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zdWJoX2gxNl9oaCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3N1YmhfaDE2X2hoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3ViaF9oMTZfc2F0X2xsLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfc3ViaF9oMTZfc2F0X2xsIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3ViaF9oMTZfc2F0X2xsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3ViaF9oMTZfc2F0X2xoLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfc3ViaF9oMTZfc2F0X2xoIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3ViaF9oMTZfc2F0X2xoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3ViaF9oMTZfc2F0X2hsLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfc3ViaF9oMTZfc2F0X2hsIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3ViaF9oMTZfc2F0X2hsIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3ViaF9oMTZfc2F0X2hoLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfc3ViaF9oMTZfc2F0X2hoIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3ViaF9oMTZfc2F0X2hoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfYXNsaCxTSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9hc2xoIDoKLUhleGFnb25fc2lfc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX2FzbGgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9hc3JoLFNJX2Z0eXBlX1NJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX2FzcmggOgotSGV4YWdvbl9zaV9zaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYXNyaCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX2FkZHAsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9hZGRwIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX2FkZHBzYXQsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9hZGRwc2F0IDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkcHNhdCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX2FkZHNwLERJX2Z0eXBlX1NJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfYWRkc3AgOgotSGV4YWdvbl9kaV9zaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hZGRzcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX3N1YnAsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zdWJwIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3VicCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX25lZyxTSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9uZWcgOgotSGV4YWdvbl9zaV9zaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfbmVnIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfbmVnc2F0LFNJX2Z0eXBlX1NJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX25lZ3NhdCA6Ci1IZXhhZ29uX3NpX3NpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9uZWdzYXQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9hYnMsU0lfZnR5cGVfU0ksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfYWJzIDoKLUhleGFnb25fc2lfc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX2FicyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX2Fic3NhdCxTSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9hYnNzYXQgOgotSGV4YWdvbl9zaV9zaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWJzc2F0Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmNvbmosRElfZnR5cGVfREksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdmNvbmogOgotSGV4YWdvbl9kaV9kaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmNvbmoiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9uZWdwLERJX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX25lZ3AgOgotSGV4YWdvbl9kaV9kaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfbmVncCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX2Fic3AsRElfZnR5cGVfREksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfYWJzcCA6Ci1IZXhhZ29uX2RpX2RpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hYnNwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfbWF4LFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfbWF4IDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfbWF4Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfbWF4dSxVU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9tYXh1IDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfbWF4dSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX21pbixTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX21pbiA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX21pbiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX21pbnUsVVNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfbWludSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX21pbnUiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9tYXhwLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfbWF4cCA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX21heHAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9tYXh1cCxVRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9tYXh1cCA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX21heHVwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfbWlucCxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX21pbnAgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9taW5wIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfbWludXAsVURJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfbWludXAgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9taW51cCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX3RmcixTSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl90ZnIgOgotSGV4YWdvbl9zaV9zaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdGZyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdGZyc2ksU0lfZnR5cGVfU0ksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdGZyc2kgOgotSGV4YWdvbl9zaV9zaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdGZyc2kiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl90ZnJwLERJX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3RmcnAgOgotSGV4YWdvbl9kaV9kaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdGZycCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX3RmcnBpLERJX2Z0eXBlX1NJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3RmcnBpIDoKLUhleGFnb25fZGlfc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3RmcnBpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfenh0YixTSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl96eHRiIDoKLUhleGFnb25fc2lfc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3p4dGIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9zeHRiLFNJX2Z0eXBlX1NJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3N4dGIgOgotSGV4YWdvbl9zaV9zaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3h0YiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX3p4dGgsU0lfZnR5cGVfU0ksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfenh0aCA6Ci1IZXhhZ29uX3NpX3NpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl96eHRoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3h0aCxTSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zeHRoIDoKLUhleGFnb25fc2lfc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3N4dGgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9jb21iaW5ldyxESV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX2NvbWJpbmV3IDoKLUhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfY29tYmluZXciPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BNF9jb21iaW5lcmksRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF9jb21iaW5lcmkgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9jb21iaW5lcmkiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BNF9jb21iaW5laXIsRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF9jb21iaW5laXIgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9jb21iaW5laXIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9jb21iaW5laWksRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9jb21iaW5laWkgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9jb21iaW5laWkiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9jb21iaW5lX2hoLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfY29tYmluZV9oaCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX2NvbWJpbmVfaGgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9jb21iaW5lX2hsLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfY29tYmluZV9obCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX2NvbWJpbmVfaGwiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9jb21iaW5lX2xoLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfY29tYmluZV9saCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX2NvbWJpbmVfbGgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9jb21iaW5lX2xsLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfY29tYmluZV9sbCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX2NvbWJpbmVfbGwiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl90ZnJpbCxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3RmcmlsIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdGZyaWwiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl90ZnJpaCxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3RmcmloIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdGZyaWgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9hbmQsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9hbmQgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hbmQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9vcixTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX29yIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfb3IiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl94b3IsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl94b3IgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl94b3IiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9ub3QsU0lfZnR5cGVfU0ksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfbm90IDoKLUhleGFnb25fc2lfc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX25vdCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk0yX3hvcl94YWNjLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl94b3JfeGFjYyA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfeG9yX3hhY2MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NNF94b3JfeGFjYyxESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTRfeG9yX3hhY2MgOgotSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPCJIRVhBR09OX000X3hvcl94YWNjIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfYW5kbixTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0E0X2FuZG4gOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9hbmRuIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfb3JuLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfb3JuIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfb3JuIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfYW5kbnAsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF9hbmRucCA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0E0X2FuZG5wIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfb3JucCxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0E0X29ybnAgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9vcm5wIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzRfYWRkYWRkaSxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzRfYWRkYWRkaSA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzRfYWRkYWRkaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM0X3N1YmFkZGksU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1M0X3N1YmFkZGkgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1M0X3N1YmFkZGkiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NNF9hbmRfYW5kLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NNF9hbmRfYW5kIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9hbmRfYW5kIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTRfYW5kX2FuZG4sU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX000X2FuZF9hbmRuIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9hbmRfYW5kbiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X2FuZF9vcixTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTRfYW5kX29yIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9hbmRfb3IiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NNF9hbmRfeG9yLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NNF9hbmRfeG9yIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9hbmRfeG9yIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTRfb3JfYW5kLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NNF9vcl9hbmQgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX000X29yX2FuZCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X29yX2FuZG4sU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX000X29yX2FuZG4gOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX000X29yX2FuZG4iPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NNF9vcl9vcixTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fTTRfb3Jfb3IgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX000X29yX29yIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTRfb3JfeG9yLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NNF9vcl94b3IgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX000X29yX3hvciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM0X29yX2FuZGl4LFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF9vcl9hbmRpeCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzRfb3JfYW5kaXgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNF9vcl9hbmRpLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF9vcl9hbmRpIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9vcl9hbmRpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzRfb3Jfb3JpLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF9vcl9vcmkgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1M0X29yX29yaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk00X3hvcl9hbmQsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX000X3hvcl9hbmQgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX000X3hvcl9hbmQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NNF94b3Jfb3IsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX000X3hvcl9vciA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fTTRfeG9yX29yIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTRfeG9yX2FuZG4sU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX000X3hvcl9hbmRuIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9NNF94b3JfYW5kbiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX3N1YnJpLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfc3VicmkgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zdWJyaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX2FuZGlyLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfYW5kaXIgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hbmRpciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX29yaXIsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9vcmlyIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfb3JpciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX2FuZHAsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9hbmRwIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYW5kcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX29ycCxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX29ycCA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX29ycCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX3hvcnAsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl94b3JwIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfeG9ycCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX25vdHAsRElfZnR5cGVfREksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfbm90cCA6Ci1IZXhhZ29uX2RpX2RpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9ub3RwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc3h0dyxESV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zeHR3IDoKLUhleGFnb25fZGlfc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3N4dHciPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9zYXQsU0lfZnR5cGVfREksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfc2F0IDoKLUhleGFnb25fc2lfZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3NhdCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX3JvdW5kc2F0LFNJX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3JvdW5kc2F0IDoKLUhleGFnb25fc2lfZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3JvdW5kc2F0Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc2F0aCxTSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zYXRoIDoKLUhleGFnb25fc2lfc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3NhdGgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9zYXR1aCxTSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zYXR1aCA6Ci1IZXhhZ29uX3NpX3NpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zYXR1aCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX3NhdHViLFNJX2Z0eXBlX1NJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3NhdHViIDoKLUhleGFnb25fc2lfc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3NhdHViIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfc2F0YixTSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zYXRiIDoKLUhleGFnb25fc2lfc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3NhdGIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92YWRkdWIsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92YWRkdWIgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YWRkdWIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92YWRkYl9tYXAsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92YWRkYl9tYXAgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YWRkYl9tYXAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92YWRkdWJzLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdmFkZHVicyA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZhZGR1YnMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92YWRkaCxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZhZGRoIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmFkZGgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92YWRkaHMsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92YWRkaHMgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YWRkaHMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92YWRkdWhzLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdmFkZHVocyA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZhZGR1aHMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BNV92YWRkaHVicyxTSV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0E1X3ZhZGRodWJzIDoKLUhleGFnb25fc2lfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTVfdmFkZGh1YnMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92YWRkdyxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZhZGR3IDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmFkZHciPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92YWRkd3MsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92YWRkd3MgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YWRkd3MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNF92eGFkZHN1YncsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF92eGFkZHN1YncgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9TNF92eGFkZHN1YnciPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNF92eHN1YmFkZHcsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF92eHN1YmFkZHcgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9TNF92eHN1YmFkZHciPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNF92eGFkZHN1YmgsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF92eGFkZHN1YmggOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9TNF92eGFkZHN1YmgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNF92eHN1YmFkZGgsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF92eHN1YmFkZGggOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9TNF92eHN1YmFkZGgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNF92eGFkZHN1YmhyLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzRfdnhhZGRzdWJociA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX1M0X3Z4YWRkc3ViaHIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNF92eHN1YmFkZGhyLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzRfdnhzdWJhZGRociA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX1M0X3Z4c3ViYWRkaHIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9zdmF2Z2gsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zdmF2Z2ggOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zdmF2Z2giPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9zdmF2Z2hzLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfc3ZhdmdocyA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3N2YXZnaHMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9zdm5hdmdoLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfc3ZuYXZnaCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3N2bmF2Z2giPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9zdmFkZGgsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zdmFkZGggOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zdmFkZGgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9zdmFkZGhzLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfc3ZhZGRocyA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3N2YWRkaHMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9zdmFkZHVocyxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3N2YWRkdWhzIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3ZhZGR1aHMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9zdnN1YmgsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl9zdnN1YmggOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zdnN1YmgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9zdnN1YmhzLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfc3ZzdWJocyA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0EyX3N2c3ViaHMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9zdnN1YnVocyxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3N2c3VidWhzIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3ZzdWJ1aHMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92cmFkZHViLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdnJhZGR1YiA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZyYWRkdWIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92cmFkZHViX2FjYyxESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdnJhZGR1Yl9hY2MgOgotSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZyYWRkdWJfYWNjIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfdnJhZGRoLFNJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fTTJfdnJhZGRoIDoKLUhleGFnb25fc2lfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdnJhZGRoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uTTJfdnJhZGR1aCxTSV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX00yX3ZyYWRkdWggOgotSGV4YWdvbl9zaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92cmFkZHVoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdnN1YnViLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdnN1YnViIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdnN1YnViIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdnN1YmJfbWFwLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdnN1YmJfbWFwIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdnN1YmJfbWFwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdnN1YnVicyxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZzdWJ1YnMgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92c3VidWJzIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdnN1YmgsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92c3ViaCA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZzdWJoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdnN1YmhzLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdnN1YmhzIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdnN1YmhzIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdnN1YnVocyxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZzdWJ1aHMgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92c3VidWhzIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdnN1YncsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92c3VidyA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZzdWJ3Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdnN1YndzLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdnN1YndzIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdnN1YndzIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmFic2gsRElfZnR5cGVfREksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdmFic2ggOgotSGV4YWdvbl9kaV9kaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmFic2giPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92YWJzaHNhdCxESV9mdHlwZV9ESSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92YWJzaHNhdCA6Ci1IZXhhZ29uX2RpX2RpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YWJzaHNhdCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkEyX3ZhYnN3LERJX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZhYnN3IDoKLUhleGFnb25fZGlfZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZhYnN3Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmFic3dzYXQsRElfZnR5cGVfREksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdmFic3dzYXQgOgotSGV4YWdvbl9kaV9kaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmFic3dzYXQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl92YWJzZGlmZncsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92YWJzZGlmZncgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92YWJzZGlmZnciPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NMl92YWJzZGlmZmgsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9NMl92YWJzZGlmZmggOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92YWJzZGlmZmgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92cnNhZHViLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdnJzYWR1YiA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3Zyc2FkdWIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92cnNhZHViX2FjYyxESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdnJzYWR1Yl9hY2MgOgotSGV4YWdvbl9kaV9kaWRpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3Zyc2FkdWJfYWNjIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmF2Z3ViLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdmF2Z3ViIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmF2Z3ViIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmF2Z3VoLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdmF2Z3VoIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmF2Z3VoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmF2Z2gsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92YXZnaCA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZhdmdoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdm5hdmdoLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdm5hdmdoIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm5hdmdoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmF2Z3csRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92YXZndyA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3Zhdmd3Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdm5hdmd3LERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdm5hdmd3IDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm5hdmd3Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmF2Z3dyLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdmF2Z3dyIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmF2Z3dyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdm5hdmd3cixESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZuYXZnd3IgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92bmF2Z3dyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmF2Z3djcixESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3Zhdmd3Y3IgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YXZnd2NyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdm5hdmd3Y3IsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92bmF2Z3djciA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZuYXZnd2NyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmF2Z2hjcixESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZhdmdoY3IgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YXZnaGNyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdm5hdmdoY3IsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92bmF2Z2hjciA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZuYXZnaGNyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmF2Z3V3LERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdmF2Z3V3IDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmF2Z3V3Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmF2Z3V3cixESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3Zhdmd1d3IgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YXZndXdyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmF2Z3VicixESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3Zhdmd1YnIgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YXZndWJyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmF2Z3VocixESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3Zhdmd1aHIgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YXZndWhyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdmF2Z2hyLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTJfdmF2Z2hyIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmF2Z2hyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTJfdm5hdmdocixESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZuYXZnaHIgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92bmF2Z2hyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfcm91bmRfcmksU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF9yb3VuZF9yaSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0E0X3JvdW5kX3JpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfcm91bmRfcnIsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF9yb3VuZF9yciA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX0E0X3JvdW5kX3JyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfcm91bmRfcmlfc2F0LFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfcm91bmRfcmlfc2F0IDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfcm91bmRfcmlfc2F0Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfcm91bmRfcnJfc2F0LFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfcm91bmRfcnJfc2F0IDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfcm91bmRfcnJfc2F0Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfY3JvdW5kX3JpLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfY3JvdW5kX3JpIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfY3JvdW5kX3JpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfY3JvdW5kX3JyLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfY3JvdW5kX3JyIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfY3JvdW5kX3JyIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdnJtaW5oLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF92cm1pbmggOgotSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPCJIRVhBR09OX0E0X3ZybWluaCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkE0X3ZybWF4aCxESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfdnJtYXhoIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF92cm1heGgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BNF92cm1pbnVoLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF92cm1pbnVoIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF92cm1pbnVoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdnJtYXh1aCxESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfdnJtYXh1aCA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfdnJtYXh1aCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkE0X3ZybWludyxESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfdnJtaW53IDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF92cm1pbnciPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BNF92cm1heHcsRElfZnR5cGVfRElESVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX0E0X3ZybWF4dyA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfdnJtYXh3Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uQTRfdnJtaW51dyxESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fQTRfdnJtaW51dyA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfdnJtaW51dyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkE0X3ZybWF4dXcsRElfZnR5cGVfRElESVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX0E0X3ZybWF4dXcgOgotSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPCJIRVhBR09OX0E0X3ZybWF4dXciPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92bWluYixESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZtaW5iIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm1pbmIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92bWF4YixESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZtYXhiIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm1heGIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92bWludWIsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92bWludWIgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92bWludWIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92bWF4dWIsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92bWF4dWIgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92bWF4dWIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92bWluaCxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZtaW5oIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm1pbmgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92bWF4aCxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZtYXhoIDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm1heGgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92bWludWgsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92bWludWggOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92bWludWgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92bWF4dWgsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92bWF4dWggOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92bWF4dWgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92bWludyxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZtaW53IDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm1pbnciPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92bWF4dyxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3ZtYXh3IDoKLUhleGFnb25fZGlfZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm1heHciPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92bWludXcsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92bWludXcgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92bWludXciPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl92bWF4dXcsRElfZnR5cGVfRElESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BMl92bWF4dXcgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9BMl92bWF4dXciPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BNF9tb2R3cmFwdSxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0E0X21vZHdyYXB1IDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfbW9kd3JhcHUiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9zZmFkZCxTRl9mdHlwZV9TRlNGLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX3NmYWRkIDoKLUhleGFnb25fc2Zfc2ZzZl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZhZGQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9zZnN1YixTRl9mdHlwZV9TRlNGLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX3Nmc3ViIDoKLUhleGFnb25fc2Zfc2ZzZl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZzdWIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9zZm1weSxTRl9mdHlwZV9TRlNGLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX3NmbXB5IDoKLUhleGFnb25fc2Zfc2ZzZl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZtcHkiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9zZmZtYSxTRl9mdHlwZV9TRlNGU0YsMykKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfc2ZmbWEgOgotSGV4YWdvbl9zZl9zZnNmc2ZfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmZm1hIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uRjJfc2ZmbWFfc2MsU0ZfZnR5cGVfU0ZTRlNGUUksNCkKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfc2ZmbWFfc2MgOgotSGV4YWdvbl9zZl9zZnNmc2ZxaV9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZmbWFfc2MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9zZmZtcyxTRl9mdHlwZV9TRlNGU0YsMykKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfc2ZmbXMgOgotSGV4YWdvbl9zZl9zZnNmc2ZfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmZm1zIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uRjJfc2ZmbWFfbGliLFNGX2Z0eXBlX1NGU0ZTRiwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9GMl9zZmZtYV9saWIgOgotSGV4YWdvbl9zZl9zZnNmc2ZfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmZm1hX2xpYiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkYyX3NmZm1zX2xpYixTRl9mdHlwZV9TRlNGU0YsMykKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfc2ZmbXNfbGliIDoKLUhleGFnb25fc2Zfc2ZzZnNmX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9zZmZtc19saWIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9zZmNtcGVxLFFJX2Z0eXBlX1NGU0YsMikKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfc2ZjbXBlcSA6Ci1IZXhhZ29uX3NpX3Nmc2ZfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmY21wZXEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9zZmNtcGd0LFFJX2Z0eXBlX1NGU0YsMikKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfc2ZjbXBndCA6Ci1IZXhhZ29uX3NpX3Nmc2ZfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmY21wZ3QiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9zZmNtcGdlLFFJX2Z0eXBlX1NGU0YsMikKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfc2ZjbXBnZSA6Ci1IZXhhZ29uX3NpX3Nmc2ZfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmY21wZ2UiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9zZmNtcHVvLFFJX2Z0eXBlX1NGU0YsMikKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfc2ZjbXB1byA6Ci1IZXhhZ29uX3NpX3Nmc2ZfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmY21wdW8iPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9zZm1heCxTRl9mdHlwZV9TRlNGLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX3NmbWF4IDoKLUhleGFnb25fc2Zfc2ZzZl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZtYXgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9zZm1pbixTRl9mdHlwZV9TRlNGLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX3NmbWluIDoKLUhleGFnb25fc2Zfc2ZzZl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZtaW4iPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9zZmNsYXNzLFFJX2Z0eXBlX1NGU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfc2ZjbGFzcyA6Ci1IZXhhZ29uX3NpX3Nmc2lfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmY2xhc3MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9zZmltbV9wLFNGX2Z0eXBlX1NJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX3NmaW1tX3AgOgotSGV4YWdvbl9zZl9zaV9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZpbW1fcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkYyX3NmaW1tX24sU0ZfZnR5cGVfU0ksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfc2ZpbW1fbiA6Ci1IZXhhZ29uX3NmX3NpX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9zZmltbV9uIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uRjJfc2ZmaXh1cG4sU0ZfZnR5cGVfU0ZTRiwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9GMl9zZmZpeHVwbiA6Ci1IZXhhZ29uX3NmX3Nmc2ZfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmZml4dXBuIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uRjJfc2ZmaXh1cGQsU0ZfZnR5cGVfU0ZTRiwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9GMl9zZmZpeHVwZCA6Ci1IZXhhZ29uX3NmX3Nmc2ZfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmZml4dXBkIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uRjJfc2ZmaXh1cHIsU0ZfZnR5cGVfU0YsMSkKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfc2ZmaXh1cHIgOgotSGV4YWdvbl9zZl9zZl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZmaXh1cHIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9kZmNtcGVxLFFJX2Z0eXBlX0RGREYsMikKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfZGZjbXBlcSA6Ci1IZXhhZ29uX3NpX2RmZGZfSW50cmluc2ljPCJIRVhBR09OX0YyX2RmY21wZXEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9kZmNtcGd0LFFJX2Z0eXBlX0RGREYsMikKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfZGZjbXBndCA6Ci1IZXhhZ29uX3NpX2RmZGZfSW50cmluc2ljPCJIRVhBR09OX0YyX2RmY21wZ3QiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9kZmNtcGdlLFFJX2Z0eXBlX0RGREYsMikKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfZGZjbXBnZSA6Ci1IZXhhZ29uX3NpX2RmZGZfSW50cmluc2ljPCJIRVhBR09OX0YyX2RmY21wZ2UiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9kZmNtcHVvLFFJX2Z0eXBlX0RGREYsMikKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfZGZjbXB1byA6Ci1IZXhhZ29uX3NpX2RmZGZfSW50cmluc2ljPCJIRVhBR09OX0YyX2RmY21wdW8iPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9kZmNsYXNzLFFJX2Z0eXBlX0RGU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfZGZjbGFzcyA6Ci1IZXhhZ29uX3NpX2Rmc2lfSW50cmluc2ljPCJIRVhBR09OX0YyX2RmY2xhc3MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9kZmltbV9wLERGX2Z0eXBlX1NJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX2RmaW1tX3AgOgotSGV4YWdvbl9kZl9zaV9JbnRyaW5zaWM8IkhFWEFHT05fRjJfZGZpbW1fcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkYyX2RmaW1tX24sREZfZnR5cGVfU0ksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfZGZpbW1fbiA6Ci1IZXhhZ29uX2RmX3NpX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9kZmltbV9uIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uRjJfY29udl9zZjJkZixERl9mdHlwZV9TRiwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9GMl9jb252X3NmMmRmIDoKLUhleGFnb25fZGZfc2ZfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfc2YyZGYiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9jb252X2RmMnNmLFNGX2Z0eXBlX0RGLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfZGYyc2YgOgotSGV4YWdvbl9zZl9kZl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9kZjJzZiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkYyX2NvbnZfdXcyc2YsU0ZfZnR5cGVfU0ksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfY29udl91dzJzZiA6Ci1IZXhhZ29uX3NmX3NpX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X3V3MnNmIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uRjJfY29udl91dzJkZixERl9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9GMl9jb252X3V3MmRmIDoKLUhleGFnb25fZGZfc2lfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfdXcyZGYiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9jb252X3cyc2YsU0ZfZnR5cGVfU0ksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfY29udl93MnNmIDoKLUhleGFnb25fc2Zfc2lfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfdzJzZiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkYyX2NvbnZfdzJkZixERl9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9GMl9jb252X3cyZGYgOgotSGV4YWdvbl9kZl9zaV9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl93MmRmIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uRjJfY29udl91ZDJzZixTRl9mdHlwZV9ESSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9GMl9jb252X3VkMnNmIDoKLUhleGFnb25fc2ZfZGlfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfdWQyc2YiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9jb252X3VkMmRmLERGX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfdWQyZGYgOgotSGV4YWdvbl9kZl9kaV9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl91ZDJkZiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkYyX2NvbnZfZDJzZixTRl9mdHlwZV9ESSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9GMl9jb252X2Qyc2YgOgotSGV4YWdvbl9zZl9kaV9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9kMnNmIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uRjJfY29udl9kMmRmLERGX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfZDJkZiA6Ci1IZXhhZ29uX2RmX2RpX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X2QyZGYiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9jb252X3NmMnV3LFNJX2Z0eXBlX1NGLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfc2YydXcgOgotSGV4YWdvbl9zaV9zZl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9zZjJ1dyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkYyX2NvbnZfc2YydyxTSV9mdHlwZV9TRiwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9GMl9jb252X3NmMncgOgotSGV4YWdvbl9zaV9zZl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9zZjJ3Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uRjJfY29udl9zZjJ1ZCxESV9mdHlwZV9TRiwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9GMl9jb252X3NmMnVkIDoKLUhleGFnb25fZGlfc2ZfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfc2YydWQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9jb252X3NmMmQsRElfZnR5cGVfU0YsMSkKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfY29udl9zZjJkIDoKLUhleGFnb25fZGlfc2ZfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfc2YyZCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkYyX2NvbnZfZGYydXcsU0lfZnR5cGVfREYsMSkKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfY29udl9kZjJ1dyA6Ci1IZXhhZ29uX3NpX2RmX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X2RmMnV3Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uRjJfY29udl9kZjJ3LFNJX2Z0eXBlX0RGLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfZGYydyA6Ci1IZXhhZ29uX3NpX2RmX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X2RmMnciPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9jb252X2RmMnVkLERJX2Z0eXBlX0RGLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfZGYydWQgOgotSGV4YWdvbl9kaV9kZl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9kZjJ1ZCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkYyX2NvbnZfZGYyZCxESV9mdHlwZV9ERiwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9GMl9jb252X2RmMmQgOgotSGV4YWdvbl9kaV9kZl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9kZjJkIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uRjJfY29udl9zZjJ1d19jaG9wLFNJX2Z0eXBlX1NGLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfc2YydXdfY2hvcCA6Ci1IZXhhZ29uX3NpX3NmX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X3NmMnV3X2Nob3AiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9jb252X3NmMndfY2hvcCxTSV9mdHlwZV9TRiwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9GMl9jb252X3NmMndfY2hvcCA6Ci1IZXhhZ29uX3NpX3NmX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X3NmMndfY2hvcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkYyX2NvbnZfc2YydWRfY2hvcCxESV9mdHlwZV9TRiwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9GMl9jb252X3NmMnVkX2Nob3AgOgotSGV4YWdvbl9kaV9zZl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9zZjJ1ZF9jaG9wIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uRjJfY29udl9zZjJkX2Nob3AsRElfZnR5cGVfU0YsMSkKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfY29udl9zZjJkX2Nob3AgOgotSGV4YWdvbl9kaV9zZl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9zZjJkX2Nob3AiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9jb252X2RmMnV3X2Nob3AsU0lfZnR5cGVfREYsMSkKLS8vCi1kZWYgaW50X2hleGFnb25fRjJfY29udl9kZjJ1d19jaG9wIDoKLUhleGFnb25fc2lfZGZfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfZGYydXdfY2hvcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLkYyX2NvbnZfZGYyd19jaG9wLFNJX2Z0eXBlX0RGLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfZGYyd19jaG9wIDoKLUhleGFnb25fc2lfZGZfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfZGYyd19jaG9wIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uRjJfY29udl9kZjJ1ZF9jaG9wLERJX2Z0eXBlX0RGLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfZGYydWRfY2hvcCA6Ci1IZXhhZ29uX2RpX2RmX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X2RmMnVkX2Nob3AiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5GMl9jb252X2RmMmRfY2hvcCxESV9mdHlwZV9ERiwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9GMl9jb252X2RmMmRfY2hvcCA6Ci1IZXhhZ29uX2RpX2RmX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X2RmMmRfY2hvcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9yX3IsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc3Jfcl9yIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX3JfciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9yX3IsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc2xfcl9yIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX3JfciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzcl9yX3IsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9sc3Jfcl9yIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX3JfciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzbF9yX3IsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9sc2xfcl9yIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNsX3JfciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9yX3AsRElfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc3Jfcl9wIDoKLUhleGFnb25fZGlfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX3JfcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9yX3AsRElfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc2xfcl9wIDoKLUhleGFnb25fZGlfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX3JfcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzcl9yX3AsRElfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9sc3Jfcl9wIDoKLUhleGFnb25fZGlfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX3JfcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzbF9yX3AsRElfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9sc2xfcl9wIDoKLUhleGFnb25fZGlfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNsX3JfcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9yX3JfYWNjLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc3Jfcl9yX2FjYyA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX3Jfcl9hY2MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc2xfcl9yX2FjYyxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNsX3Jfcl9hY2MgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9yX3JfYWNjIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfbHNyX3Jfcl9hY2MsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2xzcl9yX3JfYWNjIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3Jfcl9yX2FjYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzbF9yX3JfYWNjLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9sc2xfcl9yX2FjYyA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNsX3Jfcl9hY2MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc3Jfcl9wX2FjYyxESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNyX3JfcF9hY2MgOgotSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9yX3BfYWNjIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfYXNsX3JfcF9hY2MsRElfZnR5cGVfRElESVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2FzbF9yX3BfYWNjIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfcl9wX2FjYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzcl9yX3BfYWNjLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9sc3Jfcl9wX2FjYyA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX3JfcF9hY2MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9sc2xfcl9wX2FjYyxESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNsX3JfcF9hY2MgOgotSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzbF9yX3BfYWNjIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfYXNyX3Jfcl9uYWMsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9yX3JfbmFjIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3Jfcl9yX25hYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9yX3JfbmFjLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc2xfcl9yX25hYyA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX3Jfcl9uYWMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9sc3Jfcl9yX25hYyxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNyX3Jfcl9uYWMgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9yX3JfbmFjIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfbHNsX3Jfcl9uYWMsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2xzbF9yX3JfbmFjIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc2xfcl9yX25hYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9yX3BfbmFjLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc3Jfcl9wX25hYyA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX3JfcF9uYWMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc2xfcl9wX25hYyxESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNsX3JfcF9uYWMgOgotSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9yX3BfbmFjIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfbHNyX3JfcF9uYWMsRElfZnR5cGVfRElESVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2xzcl9yX3BfbmFjIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3Jfcl9wX25hYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzbF9yX3BfbmFjLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9sc2xfcl9wX25hYyA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNsX3JfcF9uYWMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc3Jfcl9yX2FuZCxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNyX3Jfcl9hbmQgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9yX3JfYW5kIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfYXNsX3Jfcl9hbmQsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2FzbF9yX3JfYW5kIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfcl9yX2FuZCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzcl9yX3JfYW5kLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9sc3Jfcl9yX2FuZCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX3Jfcl9hbmQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9sc2xfcl9yX2FuZCxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNsX3Jfcl9hbmQgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzbF9yX3JfYW5kIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfYXNyX3Jfcl9vcixTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNyX3Jfcl9vciA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX3Jfcl9vciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9yX3Jfb3IsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2FzbF9yX3Jfb3IgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9yX3Jfb3IiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9sc3Jfcl9yX29yLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9sc3Jfcl9yX29yIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3Jfcl9yX29yIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfbHNsX3Jfcl9vcixTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNsX3Jfcl9vciA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNsX3Jfcl9vciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9yX3BfYW5kLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc3Jfcl9wX2FuZCA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX3JfcF9hbmQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc2xfcl9wX2FuZCxESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNsX3JfcF9hbmQgOgotSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9yX3BfYW5kIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfbHNyX3JfcF9hbmQsRElfZnR5cGVfRElESVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2xzcl9yX3BfYW5kIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3Jfcl9wX2FuZCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzbF9yX3BfYW5kLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9sc2xfcl9wX2FuZCA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNsX3JfcF9hbmQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc3Jfcl9wX29yLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc3Jfcl9wX29yIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3Jfcl9wX29yIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfYXNsX3JfcF9vcixESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNsX3JfcF9vciA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX3JfcF9vciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzcl9yX3Bfb3IsRElfZnR5cGVfRElESVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2xzcl9yX3Bfb3IgOgotSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9yX3Bfb3IiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9sc2xfcl9wX29yLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9sc2xfcl9wX29yIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc2xfcl9wX29yIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfYXNyX3JfcF94b3IsRElfZnR5cGVfRElESVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9yX3BfeG9yIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3Jfcl9wX3hvciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9yX3BfeG9yLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc2xfcl9wX3hvciA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX3JfcF94b3IiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9sc3Jfcl9wX3hvcixESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNyX3JfcF94b3IgOgotSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9yX3BfeG9yIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfbHNsX3JfcF94b3IsRElfZnR5cGVfRElESVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2xzbF9yX3BfeG9yIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc2xfcl9wX3hvciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9yX3Jfc2F0LFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNyX3Jfcl9zYXQgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3Jfcl9yX3NhdCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9yX3Jfc2F0LFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNsX3Jfcl9zYXQgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfcl9yX3NhdCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9pX3IsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc3JfaV9yIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX2lfciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzcl9pX3IsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9sc3JfaV9yIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX2lfciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9pX3IsU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc2xfaV9yIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX2lfciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9pX3AsRElfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc3JfaV9wIDoKLUhleGFnb25fZGlfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX2lfcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzcl9pX3AsRElfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9sc3JfaV9wIDoKLUhleGFnb25fZGlfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX2lfcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9pX3AsRElfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc2xfaV9wIDoKLUhleGFnb25fZGlfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX2lfcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9pX3JfYWNjLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc3JfaV9yX2FjYyA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX2lfcl9hY2MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9sc3JfaV9yX2FjYyxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNyX2lfcl9hY2MgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9pX3JfYWNjIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfYXNsX2lfcl9hY2MsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2FzbF9pX3JfYWNjIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfaV9yX2FjYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9pX3BfYWNjLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc3JfaV9wX2FjYyA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX2lfcF9hY2MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9sc3JfaV9wX2FjYyxESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNyX2lfcF9hY2MgOgotSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9pX3BfYWNjIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfYXNsX2lfcF9hY2MsRElfZnR5cGVfRElESVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2FzbF9pX3BfYWNjIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfaV9wX2FjYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9pX3JfbmFjLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc3JfaV9yX25hYyA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX2lfcl9uYWMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9sc3JfaV9yX25hYyxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNyX2lfcl9uYWMgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9pX3JfbmFjIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfYXNsX2lfcl9uYWMsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2FzbF9pX3JfbmFjIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfaV9yX25hYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9pX3BfbmFjLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc3JfaV9wX25hYyA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX2lfcF9uYWMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9sc3JfaV9wX25hYyxESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNyX2lfcF9uYWMgOgotSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9pX3BfbmFjIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfYXNsX2lfcF9uYWMsRElfZnR5cGVfRElESVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2FzbF9pX3BfbmFjIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfaV9wX25hYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzcl9pX3JfeGFjYyxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNyX2lfcl94YWNjIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3JfaV9yX3hhY2MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc2xfaV9yX3hhY2MsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2FzbF9pX3JfeGFjYyA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX2lfcl94YWNjIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfbHNyX2lfcF94YWNjLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9sc3JfaV9wX3hhY2MgOgotSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9pX3BfeGFjYyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9pX3BfeGFjYyxESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNsX2lfcF94YWNjIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfaV9wX3hhY2MiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc3JfaV9yX2FuZCxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNyX2lfcl9hbmQgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9pX3JfYW5kIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfbHNyX2lfcl9hbmQsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2xzcl9pX3JfYW5kIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3JfaV9yX2FuZCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9pX3JfYW5kLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc2xfaV9yX2FuZCA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX2lfcl9hbmQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc3JfaV9yX29yLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc3JfaV9yX29yIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3JfaV9yX29yIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfbHNyX2lfcl9vcixTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNyX2lfcl9vciA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX2lfcl9vciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9pX3Jfb3IsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2FzbF9pX3Jfb3IgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9pX3Jfb3IiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc3JfaV9wX2FuZCxESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNyX2lfcF9hbmQgOgotSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9pX3BfYW5kIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfbHNyX2lfcF9hbmQsRElfZnR5cGVfRElESVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2xzcl9pX3BfYW5kIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3JfaV9wX2FuZCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9pX3BfYW5kLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc2xfaV9wX2FuZCA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX2lfcF9hbmQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc3JfaV9wX29yLERJX2Z0eXBlX0RJRElTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9hc3JfaV9wX29yIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3JfaV9wX29yIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfbHNyX2lfcF9vcixESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNyX2lfcF9vciA6Ci1IZXhhZ29uX2RpX2RpZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX2lfcF9vciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9pX3Bfb3IsRElfZnR5cGVfRElESVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2FzbF9pX3Bfb3IgOgotSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9pX3Bfb3IiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc2xfaV9yX3NhdCxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2FzbF9pX3Jfc2F0IDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX2lfcl9zYXQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc3JfaV9yX3JuZCxTSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9pX3Jfcm5kIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX2lfcl9ybmQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc3JfaV9yX3JuZF9nb29kc3ludGF4LFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNyX2lfcl9ybmRfZ29vZHN5bnRheCA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9pX3Jfcm5kX2dvb2RzeW50YXgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc3JfaV9wX3JuZCxESV9mdHlwZV9ESVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9pX3Bfcm5kIDoKLUhleGFnb25fZGlfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX2lfcF9ybmQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hc3JfaV9wX3JuZF9nb29kc3ludGF4LERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNyX2lfcF9ybmRfZ29vZHN5bnRheCA6Ci1IZXhhZ29uX2RpX2Rpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9pX3Bfcm5kX2dvb2RzeW50YXgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNF9sc2xpLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzRfbHNsaSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX1M0X2xzbGkiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9hZGRhc2xfcnJyaSxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYWRkYXNsX3JycmkgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2FkZGFzbF9ycnJpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzRfYW5kaV9hc2xfcmksU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1M0X2FuZGlfYXNsX3JpIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9hbmRpX2FzbF9yaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM0X29yaV9hc2xfcmksU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1M0X29yaV9hc2xfcmkgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1M0X29yaV9hc2xfcmkiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNF9hZGRpX2FzbF9yaSxTSV9mdHlwZV9TSVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzRfYWRkaV9hc2xfcmkgOgotSGV4YWdvbl9zaV9zaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1M0X2FkZGlfYXNsX3JpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzRfc3ViaV9hc2xfcmksU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1M0X3N1YmlfYXNsX3JpIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9zdWJpX2FzbF9yaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM0X2FuZGlfbHNyX3JpLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF9hbmRpX2xzcl9yaSA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzRfYW5kaV9sc3JfcmkiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNF9vcmlfbHNyX3JpLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF9vcmlfbHNyX3JpIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9vcmlfbHNyX3JpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzRfYWRkaV9sc3JfcmksU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1M0X2FkZGlfbHNyX3JpIDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9hZGRpX2xzcl9yaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM0X3N1YmlfbHNyX3JpLFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF9zdWJpX2xzcl9yaSA6Ci1IZXhhZ29uX3NpX3Npc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzRfc3ViaV9sc3JfcmkiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl92YWxpZ25pYixESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdmFsaWduaWIgOgotSGV4YWdvbl9kaV9kaWRpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZhbGlnbmliIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfdmFsaWducmIsRElfZnR5cGVfRElESVFJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX3ZhbGlnbnJiIDoKLUhleGFnb25fZGlfZGlkaXFpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl92YWxpZ25yYiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3ZzcGxpY2VpYixESV9mdHlwZV9ESURJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdnNwbGljZWliIDoKLUhleGFnb25fZGlfZGlkaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl92c3BsaWNlaWIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl92c3BsaWNlcmIsRElfZnR5cGVfRElESVFJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX3ZzcGxpY2VyYiA6Ci1IZXhhZ29uX2RpX2RpZGlxaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdnNwbGljZXJiIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfdnNwbGF0cmgsRElfZnR5cGVfU0ksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdnNwbGF0cmggOgotSGV4YWdvbl9kaV9zaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdnNwbGF0cmgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl92c3BsYXRyYixTSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl92c3BsYXRyYiA6Ci1IZXhhZ29uX3NpX3NpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl92c3BsYXRyYiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2luc2VydCxTSV9mdHlwZV9TSVNJU0lTSSw0KQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9pbnNlcnQgOgotSGV4YWdvbl9zaV9zaXNpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfaW5zZXJ0Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfdGFibGVpZHhiX2dvb2RzeW50YXgsU0lfZnR5cGVfU0lTSVNJU0ksNCkKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdGFibGVpZHhiX2dvb2RzeW50YXggOgotSGV4YWdvbl9zaV9zaXNpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdGFibGVpZHhiX2dvb2RzeW50YXgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl90YWJsZWlkeGhfZ29vZHN5bnRheCxTSV9mdHlwZV9TSVNJU0lTSSw0KQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl90YWJsZWlkeGhfZ29vZHN5bnRheCA6Ci1IZXhhZ29uX3NpX3Npc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl90YWJsZWlkeGhfZ29vZHN5bnRheCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3RhYmxlaWR4d19nb29kc3ludGF4LFNJX2Z0eXBlX1NJU0lTSVNJLDQpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX3RhYmxlaWR4d19nb29kc3ludGF4IDoKLUhleGFnb25fc2lfc2lzaXNpc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX3RhYmxlaWR4d19nb29kc3ludGF4Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfdGFibGVpZHhkX2dvb2RzeW50YXgsU0lfZnR5cGVfU0lTSVNJU0ksNCkKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdGFibGVpZHhkX2dvb2RzeW50YXggOgotSGV4YWdvbl9zaV9zaXNpc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdGFibGVpZHhkX2dvb2RzeW50YXgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BNF9iaXRzcGxpdGksRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9BNF9iaXRzcGxpdGkgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9iaXRzcGxpdGkiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BNF9iaXRzcGxpdCxESV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX0E0X2JpdHNwbGl0IDoKLUhleGFnb25fZGlfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fQTRfYml0c3BsaXQiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNF9leHRyYWN0LFNJX2Z0eXBlX1NJU0lTSSwzKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF9leHRyYWN0IDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9leHRyYWN0Ij47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfZXh0cmFjdHUsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2V4dHJhY3R1IDoKLUhleGFnb25fc2lfc2lzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9leHRyYWN0dSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2luc2VydHAsRElfZnR5cGVfRElESVNJU0ksNCkKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfaW5zZXJ0cCA6Ci1IZXhhZ29uX2RpX2RpZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9pbnNlcnRwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzRfZXh0cmFjdHAsRElfZnR5cGVfRElTSVNJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1M0X2V4dHJhY3RwIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9leHRyYWN0cCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2V4dHJhY3R1cCxESV9mdHlwZV9ESVNJU0ksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfZXh0cmFjdHVwIDoKLUhleGFnb25fZGlfZGlzaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9leHRyYWN0dXAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9pbnNlcnRfcnAsU0lfZnR5cGVfU0lTSURJLDMpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2luc2VydF9ycCA6Ci1IZXhhZ29uX3NpX3Npc2lkaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfaW5zZXJ0X3JwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzRfZXh0cmFjdF9ycCxTSV9mdHlwZV9TSURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX1M0X2V4dHJhY3RfcnAgOgotSGV4YWdvbl9zaV9zaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9leHRyYWN0X3JwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfZXh0cmFjdHVfcnAsU0lfZnR5cGVfU0lESSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9leHRyYWN0dV9ycCA6Ci1IZXhhZ29uX3NpX3NpZGlfSW50cmluc2ljPCJIRVhBR09OX1MyX2V4dHJhY3R1X3JwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfaW5zZXJ0cF9ycCxESV9mdHlwZV9ESURJREksMykKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfaW5zZXJ0cF9ycCA6Ci1IZXhhZ29uX2RpX2RpZGlkaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfaW5zZXJ0cF9ycCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM0X2V4dHJhY3RwX3JwLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzRfZXh0cmFjdHBfcnAgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9leHRyYWN0cF9ycCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2V4dHJhY3R1cF9ycCxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2V4dHJhY3R1cF9ycCA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX1MyX2V4dHJhY3R1cF9ycCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3RzdGJpdF9pLFFJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdHN0Yml0X2kgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl90c3RiaXRfaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM0X250c3RiaXRfaSxRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX1M0X250c3RiaXRfaSA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX1M0X250c3RiaXRfaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3NldGJpdF9pLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfc2V0Yml0X2kgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9zZXRiaXRfaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3RvZ2dsZWJpdF9pLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdG9nZ2xlYml0X2kgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl90b2dnbGViaXRfaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2NscmJpdF9pLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfY2xyYml0X2kgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9jbHJiaXRfaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3RzdGJpdF9yLFFJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdHN0Yml0X3IgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl90c3RiaXRfciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM0X250c3RiaXRfcixRSV9mdHlwZV9TSVNJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX1M0X250c3RiaXRfciA6Ci1IZXhhZ29uX3NpX3Npc2lfSW50cmluc2ljPCJIRVhBR09OX1M0X250c3RiaXRfciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3NldGJpdF9yLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfc2V0Yml0X3IgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9zZXRiaXRfciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3RvZ2dsZWJpdF9yLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdG9nZ2xlYml0X3IgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl90b2dnbGViaXRfciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2NscmJpdF9yLFNJX2Z0eXBlX1NJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfY2xyYml0X3IgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9jbHJiaXRfciI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9pX3ZoLERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNyX2lfdmggOgotSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3JfaV92aCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzcl9pX3ZoLERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNyX2lfdmggOgotSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3JfaV92aCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9pX3ZoLERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNsX2lfdmggOgotSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfaV92aCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9yX3ZoLERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNyX3JfdmggOgotSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3Jfcl92aCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM1X2Fzcmh1Yl9ybmRfc2F0X2dvb2RzeW50YXgsU0lfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNV9hc3JodWJfcm5kX3NhdF9nb29kc3ludGF4IDoKLUhleGFnb25fc2lfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzVfYXNyaHViX3JuZF9zYXRfZ29vZHN5bnRheCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM1X2Fzcmh1Yl9zYXQsU0lfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNV9hc3JodWJfc2F0IDoKLUhleGFnb25fc2lfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzVfYXNyaHViX3NhdCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM1X3Zhc3Jocm5kX2dvb2RzeW50YXgsRElfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNV92YXNyaHJuZF9nb29kc3ludGF4IDoKLUhleGFnb25fZGlfZGlzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzVfdmFzcmhybmRfZ29vZHN5bnRheCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9yX3ZoLERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNsX3JfdmggOgotSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfcl92aCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzcl9yX3ZoLERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNyX3JfdmggOgotSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3Jfcl92aCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzbF9yX3ZoLERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNsX3JfdmggOgotSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc2xfcl92aCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9pX3Z3LERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNyX2lfdncgOgotSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3JfaV92dyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9pX3N2d190cnVuLFNJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNyX2lfc3Z3X3RydW4gOgotSGV4YWdvbl9zaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3JfaV9zdndfdHJ1biI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9yX3N2d190cnVuLFNJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNyX3Jfc3Z3X3RydW4gOgotSGV4YWdvbl9zaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3Jfcl9zdndfdHJ1biI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzcl9pX3Z3LERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNyX2lfdncgOgotSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3JfaV92dyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9pX3Z3LERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNsX2lfdncgOgotSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfaV92dyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2Fzcl9yX3Z3LERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNyX3JfdncgOgotSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3Jfcl92dyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2FzbF9yX3Z3LERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfYXNsX3JfdncgOgotSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfcl92dyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzcl9yX3Z3LERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNyX3JfdncgOgotSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3Jfcl92dyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2xzbF9yX3Z3LERJX2Z0eXBlX0RJU0ksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbHNsX3JfdncgOgotSGV4YWdvbl9kaV9kaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc2xfcl92dyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3ZybmRwYWNrd2gsU0lfZnR5cGVfREksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdnJuZHBhY2t3aCA6Ci1IZXhhZ29uX3NpX2RpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl92cm5kcGFja3doIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfdnJuZHBhY2t3aHMsU0lfZnR5cGVfREksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdnJuZHBhY2t3aHMgOgotSGV4YWdvbl9zaV9kaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdnJuZHBhY2t3aHMiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl92c3h0YmgsRElfZnR5cGVfU0ksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdnN4dGJoIDoKLUhleGFnb25fZGlfc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZzeHRiaCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3Z6eHRiaCxESV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl92enh0YmggOgotSGV4YWdvbl9kaV9zaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdnp4dGJoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfdnNhdGh1YixTSV9mdHlwZV9ESSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl92c2F0aHViIDoKLUhleGFnb25fc2lfZGlfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZzYXRodWIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9zdnNhdGh1YixTSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9zdnNhdGh1YiA6Ci1IZXhhZ29uX3NpX3NpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9zdnNhdGh1YiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3N2c2F0aGIsU0lfZnR5cGVfU0ksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfc3ZzYXRoYiA6Ci1IZXhhZ29uX3NpX3NpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9zdnNhdGhiIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfdnNhdGhiLFNJX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX3ZzYXRoYiA6Ci1IZXhhZ29uX3NpX2RpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl92c2F0aGIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl92dHJ1bm9oYixTSV9mdHlwZV9ESSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl92dHJ1bm9oYiA6Ci1IZXhhZ29uX3NpX2RpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl92dHJ1bm9oYiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3Z0cnVuZXdoLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdnRydW5ld2ggOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl92dHJ1bmV3aCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3Z0cnVub3doLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdnRydW5vd2ggOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl92dHJ1bm93aCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3Z0cnVuZWhiLFNJX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX3Z0cnVuZWhiIDoKLUhleGFnb25fc2lfZGlfSW50cmluc2ljPCJIRVhBR09OX1MyX3Z0cnVuZWhiIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfdnN4dGh3LERJX2Z0eXBlX1NJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX3ZzeHRodyA6Ci1IZXhhZ29uX2RpX3NpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl92c3h0aHciPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl92enh0aHcsRElfZnR5cGVfU0ksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfdnp4dGh3IDoKLUhleGFnb25fZGlfc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX3Z6eHRodyI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3ZzYXR3aCxTSV9mdHlwZV9ESSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl92c2F0d2ggOgotSGV4YWdvbl9zaV9kaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdnNhdHdoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfdnNhdHd1aCxTSV9mdHlwZV9ESSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl92c2F0d3VoIDoKLUhleGFnb25fc2lfZGlfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZzYXR3dWgiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9wYWNraGwsRElfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9wYWNraGwgOgotSGV4YWdvbl9kaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9wYWNraGwiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BMl9zd2l6LFNJX2Z0eXBlX1NJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX0EyX3N3aXogOgotSGV4YWdvbl9zaV9zaV9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3dpeiI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3ZzYXRodWJfbm9wYWNrLERJX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX3ZzYXRodWJfbm9wYWNrIDoKLUhleGFnb25fZGlfZGlfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZzYXRodWJfbm9wYWNrIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfdnNhdGhiX25vcGFjayxESV9mdHlwZV9ESSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl92c2F0aGJfbm9wYWNrIDoKLUhleGFnb25fZGlfZGlfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZzYXRoYl9ub3BhY2siPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl92c2F0d2hfbm9wYWNrLERJX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX3ZzYXR3aF9ub3BhY2sgOgotSGV4YWdvbl9kaV9kaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdnNhdHdoX25vcGFjayI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX3ZzYXR3dWhfbm9wYWNrLERJX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX3ZzYXR3dWhfbm9wYWNrIDoKLUhleGFnb25fZGlfZGlfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZzYXR3dWhfbm9wYWNrIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfc2h1ZmZvYixESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX3NodWZmb2IgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9zaHVmZm9iIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfc2h1ZmZlYixESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX3NodWZmZWIgOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9zaHVmZmViIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfc2h1ZmZvaCxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX3NodWZmb2ggOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9zaHVmZm9oIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfc2h1ZmZlaCxESV9mdHlwZV9ESURJLDIpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX3NodWZmZWggOgotSGV4YWdvbl9kaV9kaWRpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9zaHVmZmVoIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzVfcG9wY291bnRwLFNJX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX1M1X3BvcGNvdW50cCA6Ci1IZXhhZ29uX3NpX2RpX0ludHJpbnNpYzwiSEVYQUdPTl9TNV9wb3Bjb3VudHAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNF9wYXJpdHksU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF9wYXJpdHkgOgotSGV4YWdvbl9zaV9zaXNpX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9wYXJpdHkiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9wYXJpdHlwLFNJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfcGFyaXR5cCA6Ci1IZXhhZ29uX3NpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX1MyX3Bhcml0eXAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9sZnNwLERJX2Z0eXBlX0RJREksMikKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfbGZzcCA6Ci1IZXhhZ29uX2RpX2RpZGlfSW50cmluc2ljPCJIRVhBR09OX1MyX2xmc3AiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9jbGJub3JtLFNJX2Z0eXBlX1NJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2NsYm5vcm0gOgotSGV4YWdvbl9zaV9zaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfY2xibm9ybSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM0X2NsYmFkZGksU0lfZnR5cGVfU0lTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF9jbGJhZGRpIDoKLUhleGFnb25fc2lfc2lzaV9JbnRyaW5zaWM8IkhFWEFHT05fUzRfY2xiYWRkaSI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM0X2NsYnBub3JtLFNJX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX1M0X2NsYnBub3JtIDoKLUhleGFnb25fc2lfZGlfSW50cmluc2ljPCJIRVhBR09OX1M0X2NsYnBub3JtIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzRfY2xicGFkZGksU0lfZnR5cGVfRElTSSwyKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TNF9jbGJwYWRkaSA6Ci1IZXhhZ29uX3NpX2Rpc2lfSW50cmluc2ljPCJIRVhBR09OX1M0X2NsYnBhZGRpIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfY2xiLFNJX2Z0eXBlX1NJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2NsYiA6Ci1IZXhhZ29uX3NpX3NpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9jbGIiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9jbDAsU0lfZnR5cGVfU0ksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfY2wwIDoKLUhleGFnb25fc2lfc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2NsMCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2NsMSxTSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9jbDEgOgotSGV4YWdvbl9zaV9zaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfY2wxIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfY2xicCxTSV9mdHlwZV9ESSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9jbGJwIDoKLUhleGFnb25fc2lfZGlfSW50cmluc2ljPCJIRVhBR09OX1MyX2NsYnAiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9jbDBwLFNJX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2NsMHAgOgotSGV4YWdvbl9zaV9kaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfY2wwcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2NsMXAsU0lfZnR5cGVfREksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfY2wxcCA6Ci1IZXhhZ29uX3NpX2RpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9jbDFwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfYnJldixTSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9icmV2IDoKLUhleGFnb25fc2lfc2lfSW50cmluc2ljPCJIRVhBR09OX1MyX2JyZXYiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9icmV2cCxESV9mdHlwZV9ESSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9icmV2cCA6Ci1IZXhhZ29uX2RpX2RpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9icmV2cCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2N0MCxTSV9mdHlwZV9TSSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9jdDAgOgotSGV4YWdvbl9zaV9zaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfY3QwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfY3QxLFNJX2Z0eXBlX1NJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2N0MSA6Ci1IZXhhZ29uX3NpX3NpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9jdDEiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9jdDBwLFNJX2Z0eXBlX0RJLDEpCi0vLwotZGVmIGludF9oZXhhZ29uX1MyX2N0MHAgOgotSGV4YWdvbl9zaV9kaV9JbnRyaW5zaWM8IkhFWEFHT05fUzJfY3QwcCI+OwotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2N0MXAsU0lfZnR5cGVfREksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfY3QxcCA6Ci1IZXhhZ29uX3NpX2RpX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9jdDFwIj47Ci0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzJfaW50ZXJsZWF2ZSxESV9mdHlwZV9ESSwxKQotLy8KLWRlZiBpbnRfaGV4YWdvbl9TMl9pbnRlcmxlYXZlIDoKLUhleGFnb25fZGlfZGlfSW50cmluc2ljPCJIRVhBR09OX1MyX2ludGVybGVhdmUiPjsKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TMl9kZWludGVybGVhdmUsRElfZnR5cGVfREksMSkKLS8vCi1kZWYgaW50X2hleGFnb25fUzJfZGVpbnRlcmxlYXZlIDoKLUhleGFnb25fZGlfZGlfSW50cmluc2ljPCJIRVhBR09OX1MyX2RlaW50ZXJsZWF2ZSI+OwotCiAvLwogLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uZGNmZXRjaF9BLHZfZnR5cGVfREkqLDEpCiAvLwpAQCAtNDkzNCw0MzE4ICsxNTksMTMgQEAKIEhleGFnb25fSW50cmluc2ljPCJIRVhBR09OX1M0X3N0b3JlZF9sb2NrZWQiLCBbbGx2bV9pMzJfdHldLAogICAgICAgW2xsdm1fcHRyNjRfdHksIGxsdm1faTY0X3R5XSwgW0ludHJBcmdNZW1Pbmx5LCBOb0NhcHR1cmU8MD5dPjsKIAotLy8gVjYwCitkZWYgaW50X2hleGFnb25fdm1lbWNweSA6IEhleGFnb25fSW50cmluc2ljPCJoZXhhZ29uX3ZtZW1jcHkiLAorICAgIFtdLCBbbGx2bV9wdHJfdHksIGxsdm1fcHRyX3R5LCBsbHZtX2kzMl90eV0sCisgICAgW0ludHJBcmdNZW1Pbmx5LCBOb0NhcHR1cmU8MD4sIE5vQ2FwdHVyZTwxPiwgV3JpdGVPbmx5PDA+LCBSZWFkT25seTwxPl0+OwogCi1jbGFzcyBIZXhhZ29uX3YyMDQ4djIwNDhfSW50cmluc2ljX1Q8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjY0aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLyB0YWcgOiBWNl9oaV9XCi0vLyB0YWcgOiBWNl9sb19XCi1jbGFzcyBIZXhhZ29uX3Y1MTJ2MTAyNF9JbnRyaW5zaWNfVDxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92MzJpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vIHRhZyA6IFY2X2hpX1dfMTI4QgotLy8gdGFnIDogVjZfbG9fV18xMjhCCi1jbGFzcyBIZXhhZ29uX3YxMDI0djIwNDhfSW50cmluc2ljX1Q8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjY0aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi1jbGFzcyBIZXhhZ29uX3YxMDI0djEwMjRfSW50cmluc2ljX1Q8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl9oaV9XLFZJX2Z0eXBlX1ZJLDEpCi0vLyB0YWcgOiBWNl9oaQotZGVmIGludF9oZXhhZ29uX1Y2X2hpIDoKLUhleGFnb25fdjUxMnYxMDI0X0ludHJpbnNpY19UPCJIRVhBR09OX1Y2X2hpIj47Ci0KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X2xvX1csVklfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X2xvCi1kZWYgaW50X2hleGFnb25fVjZfbG8gOgotSGV4YWdvbl92NTEydjEwMjRfSW50cmluc2ljX1Q8IkhFWEFHT05fVjZfbG8iPjsKLQotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfaGlfVyxWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfaGlfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X2hpXzEyOEIgOgotSGV4YWdvbl92MTAyNHYyMDQ4X0ludHJpbnNpY19UPCJIRVhBR09OX1Y2X2hpXzEyOEIiPjsKLQotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfbG9fVyxWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfbG9fMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X2xvXzEyOEIgOgotSGV4YWdvbl92MTAyNHYyMDQ4X0ludHJpbnNpY19UPCJIRVhBR09OX1Y2X2xvXzEyOEIiPjsKLQotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzc2lnbnAsVklfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3Zhc3NpZ25wCi1kZWYgaW50X2hleGFnb25fVjZfdmFzc2lnbnAgOgotSGV4YWdvbl92MTAyNHYxMDI0X0ludHJpbnNpY19UPCJIRVhBR09OX1Y2X3Zhc3NpZ25wIj47Ci0KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3NpZ25wLFZJX2Z0eXBlX1ZJLDEpCi0vLyB0YWcgOiBWNl92YXNzaWducF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFzc2lnbnBfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djIwNDhfSW50cmluc2ljX1Q8IkhFWEFHT05fVjZfdmFzc2lnbnBfMTI4QiI+OwotCi0KLS8vCi0vLyBIZXhhZ29uX2lpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFM2X3JvbF9pX3IKLWNsYXNzIEhleGFnb25faWlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV9pMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX0xMaUxMaWlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBTNl9yb2xfaV9wCi1jbGFzcyBIZXhhZ29uX0xMaUxMaWlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2k2NF90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25faWlpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFM2X3JvbF9pX3JfYWNjCi1jbGFzcyBIZXhhZ29uX2lpaWlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2kzMl90eSxsbHZtX2kzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fTExpTExpTExpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFM2X3JvbF9pX3BfYWNjCi1jbGFzcyBIZXhhZ29uX0xMaUxMaUxMaWlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2k2NF90eSxsbHZtX2k2NF90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhbGlnbmIKLWNsYXNzIEhleGFnb25fdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1fdjE2aTMyX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmFsaWduYl8xMjhCCi1jbGFzcyBIZXhhZ29uX3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjUxMnY1MTJpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdnJvcgotY2xhc3MgSGV4YWdvbl92NTEydjUxMmlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjEwMjR2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92cm9yXzEyOEIKLWNsYXNzIEhleGFnb25fdjEwMjR2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjEwMjR2NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdnVucGFja3ViCi1jbGFzcyBIZXhhZ29uX3YxMDI0djUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MjA0OHYxMDI0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdnVucGFja3ViXzEyOEIKLWNsYXNzIEhleGFnb25fdjIwNDh2MTAyNF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MTAyNHYxMDI0djUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3Z1bnBhY2tvYgotY2xhc3MgSGV4YWdvbl92MTAyNHYxMDI0djUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1fdjE2aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MjA0OHYyMDQ4djEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92dW5wYWNrb2JfMTI4QgotY2xhc3MgSGV4YWdvbl92MjA0OHYyMDQ4djEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3Y2NGkzMl90eSxsbHZtX3YzMmkzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdnBhY2tlYgotY2xhc3MgSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdnBhY2tlYl8xMjhCCi1jbGFzcyBIZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1fdjMyaTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MjA0OHYyMDQ4aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZkbXB5YnVzX2R2XzEyOEIKLWNsYXNzIEhleGFnb25fdjIwNDh2MjA0OGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3Y2NGkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjIwNDh2MjA0OHYyMDQ4aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZkbXB5YnVzX2R2X2FjY18xMjhCCi1jbGFzcyBIZXhhZ29uX3YyMDQ4djIwNDh2MjA0OGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3Y2NGkzMl90eSxsbHZtX3Y2NGkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjUxMnY1MTJ2NTEydjUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZkbXB5aHZzYXRfYWNjCi1jbGFzcyBIZXhhZ29uX3Y1MTJ2NTEydjUxMnY1MTJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjEwMjR2MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92ZG1weWh2c2F0X2FjY18xMjhCCi1jbGFzcyBIZXhhZ29uX3YxMDI0djEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3Y1MTJ2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92ZG1weWhpc2F0Ci1jbGFzcyBIZXhhZ29uX3Y1MTJ2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjEwMjR2MjA0OGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92ZG1weWhpc2F0XzEyOEIKLWNsYXNzIEhleGFnb25fdjEwMjR2MjA0OGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3Y2NGkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjUxMnY1MTJ2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92ZG1weWhpc2F0X2FjYwotY2xhc3MgSGV4YWdvbl92NTEydjUxMnYxMDI0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1fdjMyaTMyX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MTAyNHYxMDI0djIwNDhpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmRtcHloaXNhdF9hY2NfMTI4QgotY2xhc3MgSGV4YWdvbl92MTAyNHYxMDI0djIwNDhpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92NjRpMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3YxMDI0djEwMjRpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZybXB5dWJpCi1jbGFzcyBIZXhhZ29uX3YxMDI0djEwMjRpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1faTMyX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MjA0OHYyMDQ4aWlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92cm1weXViaV8xMjhCCi1jbGFzcyBIZXhhZ29uX3YyMDQ4djIwNDhpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjY0aTMyX3R5LGxsdm1faTMyX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MTAyNHYxMDI0djEwMjRpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZybXB5dWJpX2FjYwotY2xhc3MgSGV4YWdvbl92MTAyNHYxMDI0djEwMjRpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1fdjMyaTMyX3R5LGxsdm1faTMyX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MjA0OHYyMDQ4djIwNDhpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZybXB5dWJpX2FjY18xMjhCCi1jbGFzcyBIZXhhZ29uX3YyMDQ4djIwNDh2MjA0OGlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92NjRpMzJfdHldLCBbbGx2bV92NjRpMzJfdHksbGx2bV92NjRpMzJfdHksbGx2bV9pMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3YyMDQ4djIwNDh2MjA0OF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhZGRiX2R2XzEyOEIKLWNsYXNzIEhleGFnb25fdjIwNDh2MjA0OHYyMDQ4X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92NjRpMzJfdHldLCBbbGx2bV92NjRpMzJfdHksbGx2bV92NjRpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3YxMDI0djUxMnY1MTJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92YWRkdWJoCi1jbGFzcyBIZXhhZ29uX3YxMDI0djUxMnY1MTJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjIwNDh2MTAyNHYxMDI0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmFkZHViaF8xMjhCCi1jbGFzcyBIZXhhZ29uX3YyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1fdjMyaTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmQwCi1jbGFzcyBIZXhhZ29uX3Y1MTJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YxNmkzMl90eV0sIFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3YxMDI0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmQwXzEyOEIKLWNsYXNzIEhleGFnb25fdjEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3Y1MTJ2NjRpdjUxMnY1MTJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92YWRkYnEKLWNsYXNzIEhleGFnb25fdjUxMnY2NGl2NTEydjUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjUxMmkxX3R5LGxsdm1fdjE2aTMyX3R5LGxsdm1fdjE2aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MTAyNHYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhZGRicV8xMjhCCi1jbGFzcyBIZXhhZ29uX3YxMDI0djEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MTAyNGkxX3R5LGxsdm1fdjMyaTMyX3R5LGxsdm1fdjMyaTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92NTEydjUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhYnNoCi1jbGFzcyBIZXhhZ29uX3Y1MTJ2NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92MTZpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3YxMDI0djEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92YWJzaF8xMjhCCi1jbGFzcyBIZXhhZ29uX3YxMDI0djEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjEwMjR2MTAyNHY1MTJ2NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdm1weWJ2X2FjYwotY2xhc3MgSGV4YWdvbl92MTAyNHYxMDI0djUxMnY1MTJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjIwNDh2MjA0OHYxMDI0djEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92bXB5YnZfYWNjXzEyOEIKLWNsYXNzIEhleGFnb25fdjIwNDh2MjA0OHYxMDI0djEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3Y2NGkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjEwMjR2NTEyaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZtcHl1YgotY2xhc3MgSGV4YWdvbl92MTAyNHY1MTJpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MTZpMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3YyMDQ4djEwMjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdm1weXViXzEyOEIKLWNsYXNzIEhleGFnb25fdjIwNDh2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjEwMjR2MTAyNHY1MTJpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdm1weXViX2FjYwotY2xhc3MgSGV4YWdvbl92MTAyNHYxMDI0djUxMmlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YxNmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjIwNDh2MjA0OHYxMDI0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZtcHl1Yl9hY2NfMTI4QgotY2xhc3MgSGV4YWdvbl92MjA0OHYyMDQ4djEwMjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92NjRpMzJfdHldLCBbbGx2bV92NjRpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3Y1MTJ2NjRpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhbmRxcnQKLWNsYXNzIEhleGFnb25fdjUxMnY2NGlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92NTEyaTFfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3YxMDI0djEyOGlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmFuZHFydF8xMjhCCi1jbGFzcyBIZXhhZ29uX3YxMDI0djEyOGlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MTAyNGkxX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92NTEydjUxMnY2NGlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmFuZHFydF9hY2MKLWNsYXNzIEhleGFnb25fdjUxMnY1MTJ2NjRpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1fdjUxMmkxX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MTAyNHYxMDI0djEyOGlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmFuZHFydF9hY2NfMTI4QgotY2xhc3MgSGV4YWdvbl92MTAyNHYxMDI0djEyOGlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MTAyNGkxX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92NjRpdjUxMmlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92YW5kdnJ0Ci1jbGFzcyBIZXhhZ29uX3Y2NGl2NTEyaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjUxMmkxX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MTI4aXYxMDI0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhbmR2cnRfMTI4QgotY2xhc3MgSGV4YWdvbl92MTI4aXYxMDI0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjEwMjRpMV90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjY0aXY2NGl2NTEyaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhbmR2cnRfYWNjCi1jbGFzcyBIZXhhZ29uX3Y2NGl2NjRpdjUxMmlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3Y1MTJpMV90eV0sIFtsbHZtX3Y1MTJpMV90eSxsbHZtX3YxNmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjEyOGl2MTI4aXYxMDI0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhbmR2cnRfYWNjXzEyOEIKLWNsYXNzIEhleGFnb25fdjEyOGl2MTI4aXYxMDI0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjEwMjRpMV90eV0sIFtsbHZtX3YxMDI0aTFfdHksbGx2bV92MzJpMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3Y2NGl2NTEydjUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZndHcKLWNsYXNzIEhleGFnb25fdjY0aXY1MTJ2NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92NTEyaTFfdHldLCBbbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3YxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZndHdfMTI4QgotY2xhc3MgSGV4YWdvbl92MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YxMDI0aTFfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92Z3R3X2FuZAotY2xhc3MgSGV4YWdvbl92NjRpdjY0aXY1MTJ2NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92NTEyaTFfdHldLCBbbGx2bV92NTEyaTFfdHksbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3YxMjhpdjEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmd0d19hbmRfMTI4QgotY2xhc3MgSGV4YWdvbl92MTI4aXYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjEwMjRpMV90eV0sIFtsbHZtX3YxMDI0aTFfdHksbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3Y2NGl2NjRpdjY0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ByZWRfb3IKLWNsYXNzIEhleGFnb25fdjY0aXY2NGl2NjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92NTEyaTFfdHldLCBbbGx2bV92NTEyaTFfdHksbGx2bV92NTEyaTFfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3YxMjhpdjEyOGl2MTI4aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ByZWRfb3JfMTI4QgotY2xhc3MgSGV4YWdvbl92MTI4aXYxMjhpdjEyOGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YxMDI0aTFfdHldLCBbbGx2bV92MTAyNGkxX3R5LGxsdm1fdjEwMjRpMV90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjY0aXY2NGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl9wcmVkX25vdAotY2xhc3MgSGV4YWdvbl92NjRpdjY0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjUxMmkxX3R5XSwgW2xsdm1fdjUxMmkxX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MTI4aXYxMjhpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfcHJlZF9ub3RfMTI4QgotY2xhc3MgSGV4YWdvbl92MTI4aXYxMjhpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MTAyNGkxX3R5XSwgW2xsdm1fdjEwMjRpMV90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjY0aWlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl9wcmVkX3NjYWxhcjIKLWNsYXNzIEhleGFnb25fdjY0aWlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3Y1MTJpMV90eV0sIFtsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjEyOGlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfcHJlZF9zY2FsYXIyXzEyOEIKLWNsYXNzIEhleGFnb25fdjEyOGlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MTAyNGkxX3R5XSwgW2xsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MTAyNHY2NGl2NTEydjUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3Zzd2FwCi1jbGFzcyBIZXhhZ29uX3YxMDI0djY0aXY1MTJ2NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92NTEyaTFfdHksbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3YyMDQ4djEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdnN3YXBfMTI4QgotY2xhc3MgSGV4YWdvbl92MjA0OHYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjEwMjRpMV90eSxsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjEwMjR2NTEydjUxMmlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92c2h1ZmZ2ZGQKLWNsYXNzIEhleGFnb25fdjEwMjR2NTEydjUxMmlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjIwNDh2MTAyNHYxMDI0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZzaHVmZnZkZF8xMjhCCi1jbGFzcyBIZXhhZ29uX3YyMDQ4djEwMjR2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotCi0vLwotLy8gSGV4YWdvbl9pdjUxMmlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl9leHRyYWN0dwotY2xhc3MgSGV4YWdvbl9pdjUxMmlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25faXYxMDI0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X2V4dHJhY3R3XzEyOEIKLWNsYXNzIEhleGFnb25faXYxMDI0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92NTEyaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X2x2c3BsYXR3Ci1jbGFzcyBIZXhhZ29uX3Y1MTJpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3YxMDI0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X2x2c3BsYXR3XzEyOEIKLWNsYXNzIEhleGFnb25fdjEwMjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3Y1MTJ2NTEydjUxMnY1MTJpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmx1dHZ2Yl9vcmFjYwotY2xhc3MgSGV4YWdvbl92NTEydjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1fdjE2aTMyX3R5LGxsdm1fdjE2aTMyX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92MTAyNHYxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92bHV0dnZiX29yYWNjXzEyOEIKLWNsYXNzIEhleGFnb25fdjEwMjR2MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX3YxMDI0djEwMjR2NTEydjUxMmlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92bHV0dndoX29yYWNjCi1jbGFzcyBIZXhhZ29uX3YxMDI0djEwMjR2NTEydjUxMmlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fdjIwNDh2MjA0OHYxMDI0djEwMjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmx1dHZ3aF9vcmFjY18xMjhCCi1jbGFzcyBIZXhhZ29uX3YyMDQ4djIwNDh2MTAyNHYxMDI0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjY0aTMyX3R5LGxsdm1fdjMyaTMyX3R5LGxsdm1fdjMyaTMyX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl92djY0aXZtZW12NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnOiBWNl92UzMyYl9xcHJlZF9haQotY2xhc3MgSGV4YWdvbl92djY0aXZtZW12NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwgW2xsdm1fdjUxMmkxX3R5LGxsdm1fcHRyX3R5LGxsdm1fdjE2aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47Ci0KLS8vCi0vLyBIZXhhZ29uX3Z2MTI4aXZtZW12MTAyNF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZzogVjZfdlMzMmJfcXByZWRfYWlfMTI4QgotY2xhc3MgSGV4YWdvbl92djEyOGl2bWVtdjEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtdLCBbbGx2bV92MTAyNGkxX3R5LGxsdm1fcHRyX3R5LGxsdm1fdjMyaTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNl9yb2xfaV9yLFNJX2Z0eXBlX1NJU0ksMikKLS8vIHRhZyA6IFM2X3JvbF9pX3IKLWRlZiBpbnRfaGV4YWdvbl9TNl9yb2xfaV9yIDoKLUhleGFnb25faWlpX0ludHJpbnNpYzwiSEVYQUdPTl9TNl9yb2xfaV9yIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNl9yb2xfaV9wLERJX2Z0eXBlX0RJU0ksMikKLS8vIHRhZyA6IFM2X3JvbF9pX3AKLWRlZiBpbnRfaGV4YWdvbl9TNl9yb2xfaV9wIDoKLUhleGFnb25fTExpTExpaV9JbnRyaW5zaWM8IkhFWEFHT05fUzZfcm9sX2lfcCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzZfcm9sX2lfcl9hY2MsU0lfZnR5cGVfU0lTSVNJLDMpCi0vLyB0YWcgOiBTNl9yb2xfaV9yX2FjYwotZGVmIGludF9oZXhhZ29uX1M2X3JvbF9pX3JfYWNjIDoKLUhleGFnb25faWlpaV9JbnRyaW5zaWM8IkhFWEFHT05fUzZfcm9sX2lfcl9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM2X3JvbF9pX3BfYWNjLERJX2Z0eXBlX0RJRElTSSwzKQotLy8gdGFnIDogUzZfcm9sX2lfcF9hY2MKLWRlZiBpbnRfaGV4YWdvbl9TNl9yb2xfaV9wX2FjYyA6Ci1IZXhhZ29uX0xMaUxMaUxMaWlfSW50cmluc2ljPCJIRVhBR09OX1M2X3JvbF9pX3BfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNl9yb2xfaV9yX25hYyxTSV9mdHlwZV9TSVNJU0ksMykKLS8vIHRhZyA6IFM2X3JvbF9pX3JfbmFjCi1kZWYgaW50X2hleGFnb25fUzZfcm9sX2lfcl9uYWMgOgotSGV4YWdvbl9paWlpX0ludHJpbnNpYzwiSEVYQUdPTl9TNl9yb2xfaV9yX25hYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzZfcm9sX2lfcF9uYWMsRElfZnR5cGVfRElESVNJLDMpCi0vLyB0YWcgOiBTNl9yb2xfaV9wX25hYwotZGVmIGludF9oZXhhZ29uX1M2X3JvbF9pX3BfbmFjIDoKLUhleGFnb25fTExpTExpTExpaV9JbnRyaW5zaWM8IkhFWEFHT05fUzZfcm9sX2lfcF9uYWMiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM2X3JvbF9pX3JfeGFjYyxTSV9mdHlwZV9TSVNJU0ksMykKLS8vIHRhZyA6IFM2X3JvbF9pX3JfeGFjYwotZGVmIGludF9oZXhhZ29uX1M2X3JvbF9pX3JfeGFjYyA6Ci1IZXhhZ29uX2lpaWlfSW50cmluc2ljPCJIRVhBR09OX1M2X3JvbF9pX3JfeGFjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzZfcm9sX2lfcF94YWNjLERJX2Z0eXBlX0RJRElTSSwzKQotLy8gdGFnIDogUzZfcm9sX2lfcF94YWNjCi1kZWYgaW50X2hleGFnb25fUzZfcm9sX2lfcF94YWNjIDoKLUhleGFnb25fTExpTExpTExpaV9JbnRyaW5zaWM8IkhFWEFHT05fUzZfcm9sX2lfcF94YWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNl9yb2xfaV9yX2FuZCxTSV9mdHlwZV9TSVNJU0ksMykKLS8vIHRhZyA6IFM2X3JvbF9pX3JfYW5kCi1kZWYgaW50X2hleGFnb25fUzZfcm9sX2lfcl9hbmQgOgotSGV4YWdvbl9paWlpX0ludHJpbnNpYzwiSEVYQUdPTl9TNl9yb2xfaV9yX2FuZCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzZfcm9sX2lfcl9vcixTSV9mdHlwZV9TSVNJU0ksMykKLS8vIHRhZyA6IFM2X3JvbF9pX3Jfb3IKLWRlZiBpbnRfaGV4YWdvbl9TNl9yb2xfaV9yX29yIDoKLUhleGFnb25faWlpaV9JbnRyaW5zaWM8IkhFWEFHT05fUzZfcm9sX2lfcl9vciI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzZfcm9sX2lfcF9hbmQsRElfZnR5cGVfRElESVNJLDMpCi0vLyB0YWcgOiBTNl9yb2xfaV9wX2FuZAotZGVmIGludF9oZXhhZ29uX1M2X3JvbF9pX3BfYW5kIDoKLUhleGFnb25fTExpTExpTExpaV9JbnRyaW5zaWM8IkhFWEFHT05fUzZfcm9sX2lfcF9hbmQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM2X3JvbF9pX3Bfb3IsRElfZnR5cGVfRElESVNJLDMpCi0vLyB0YWcgOiBTNl9yb2xfaV9wX29yCi1kZWYgaW50X2hleGFnb25fUzZfcm9sX2lfcF9vciA6Ci1IZXhhZ29uX0xMaUxMaUxMaWlfSW50cmluc2ljPCJIRVhBR09OX1M2X3JvbF9pX3Bfb3IiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlMyX2NhYmFjZW5jYmluLERJX2Z0eXBlX0RJRElRSSwzKQotLy8gdGFnIDogUzJfY2FiYWNlbmNiaW4KLWRlZiBpbnRfaGV4YWdvbl9TMl9jYWJhY2VuY2JpbiA6Ci1IZXhhZ29uX0xMaUxMaUxMaWlfSW50cmluc2ljPCJIRVhBR09OX1MyX2NhYmFjZW5jYmluIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWxpZ25iLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmFsaWduYgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhbGlnbmIgOgotSGV4YWdvbl92NTEydjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWxpZ25iIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWxpZ25iXzEyOEIsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92YWxpZ25iXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWxpZ25iXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWxpZ25iXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZsYWxpZ25iLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmxhbGlnbmIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bGFsaWduYiA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsYWxpZ25iIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bGFsaWduYl8xMjhCLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmxhbGlnbmJfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZsYWxpZ25iXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bGFsaWduYl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWxpZ25iaSxWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZhbGlnbmJpCi1kZWYgaW50X2hleGFnb25fVjZfdmFsaWduYmkgOgotSGV4YWdvbl92NTEydjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWxpZ25iaSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFsaWduYmlfMTI4QixWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZhbGlnbmJpXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWxpZ25iaV8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFsaWduYmlfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmxhbGlnbmJpLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmxhbGlnbmJpCi1kZWYgaW50X2hleGFnb25fVjZfdmxhbGlnbmJpIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmxhbGlnbmJpIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bGFsaWduYmlfMTI4QixWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZsYWxpZ25iaV8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmxhbGlnbmJpXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bGFsaWduYmlfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJvcixWSV9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92cm9yCi1kZWYgaW50X2hleGFnb25fVjZfdnJvciA6Ci1IZXhhZ29uX3Y1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJvciI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJvcl8xMjhCLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3Zyb3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zyb3JfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm9yXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Z1bnBhY2t1YixWRF9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdnVucGFja3ViCi1kZWYgaW50X2hleGFnb25fVjZfdnVucGFja3ViIDoKLUhleGFnb25fdjEwMjR2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dW5wYWNrdWIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Z1bnBhY2t1Yl8xMjhCLFZEX2Z0eXBlX1ZJLDEpCi0vLyB0YWcgOiBWNl92dW5wYWNrdWJfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Z1bnBhY2t1Yl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnVucGFja3ViXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Z1bnBhY2tiLFZEX2Z0eXBlX1ZJLDEpCi0vLyB0YWcgOiBWNl92dW5wYWNrYgotZGVmIGludF9oZXhhZ29uX1Y2X3Z1bnBhY2tiIDoKLUhleGFnb25fdjEwMjR2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dW5wYWNrYiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnVucGFja2JfMTI4QixWRF9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdnVucGFja2JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Z1bnBhY2tiXzEyOEIgOgotSGV4YWdvbl92MjA0OHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dW5wYWNrYl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92dW5wYWNrdWgsVkRfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3Z1bnBhY2t1aAotZGVmIGludF9oZXhhZ29uX1Y2X3Z1bnBhY2t1aCA6Ci1IZXhhZ29uX3YxMDI0djUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnVucGFja3VoIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92dW5wYWNrdWhfMTI4QixWRF9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdnVucGFja3VoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92dW5wYWNrdWhfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z1bnBhY2t1aF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92dW5wYWNraCxWRF9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdnVucGFja2gKLWRlZiBpbnRfaGV4YWdvbl9WNl92dW5wYWNraCA6Ci1IZXhhZ29uX3YxMDI0djUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnVucGFja2giPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Z1bnBhY2toXzEyOEIsVkRfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3Z1bnBhY2toXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92dW5wYWNraF8xMjhCIDoKLUhleGFnb25fdjIwNDh2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnVucGFja2hfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnVucGFja29iLFZEX2Z0eXBlX1ZEVkksMikKLS8vIHRhZyA6IFY2X3Z1bnBhY2tvYgotZGVmIGludF9oZXhhZ29uX1Y2X3Z1bnBhY2tvYiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dW5wYWNrb2IiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Z1bnBhY2tvYl8xMjhCLFZEX2Z0eXBlX1ZEVkksMikKLS8vIHRhZyA6IFY2X3Z1bnBhY2tvYl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnVucGFja29iXzEyOEIgOgotSGV4YWdvbl92MjA0OHYyMDQ4djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z1bnBhY2tvYl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92dW5wYWNrb2gsVkRfZnR5cGVfVkRWSSwyKQotLy8gdGFnIDogVjZfdnVucGFja29oCi1kZWYgaW50X2hleGFnb25fVjZfdnVucGFja29oIDoKLUhleGFnb25fdjEwMjR2MTAyNHY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z1bnBhY2tvaCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnVucGFja29oXzEyOEIsVkRfZnR5cGVfVkRWSSwyKQotLy8gdGFnIDogVjZfdnVucGFja29oXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92dW5wYWNrb2hfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djIwNDh2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnVucGFja29oXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZwYWNrZWIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnBhY2tlYgotZGVmIGludF9oZXhhZ29uX1Y2X3ZwYWNrZWIgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwYWNrZWIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZwYWNrZWJfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92cGFja2ViXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cGFja2ViXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwYWNrZWJfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnBhY2tlaCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92cGFja2VoCi1kZWYgaW50X2hleGFnb25fVjZfdnBhY2tlaCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBhY2tlaCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnBhY2tlaF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZwYWNrZWhfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZwYWNrZWhfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBhY2tlaF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cGFja29iLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZwYWNrb2IKLWRlZiBpbnRfaGV4YWdvbl9WNl92cGFja29iIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cGFja29iIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cGFja29iXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnBhY2tvYl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnBhY2tvYl8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cGFja29iXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZwYWNrb2gsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnBhY2tvaAotZGVmIGludF9oZXhhZ29uX1Y2X3ZwYWNrb2ggOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwYWNrb2giPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZwYWNrb2hfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92cGFja29oXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cGFja29oXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwYWNrb2hfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnBhY2todWJfc2F0LFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZwYWNraHViX3NhdAotZGVmIGludF9oZXhhZ29uX1Y2X3ZwYWNraHViX3NhdCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBhY2todWJfc2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cGFja2h1Yl9zYXRfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92cGFja2h1Yl9zYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZwYWNraHViX3NhdF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cGFja2h1Yl9zYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnBhY2toYl9zYXQsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnBhY2toYl9zYXQKLWRlZiBpbnRfaGV4YWdvbl9WNl92cGFja2hiX3NhdCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBhY2toYl9zYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZwYWNraGJfc2F0XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnBhY2toYl9zYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZwYWNraGJfc2F0XzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwYWNraGJfc2F0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZwYWNrd3VoX3NhdCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92cGFja3d1aF9zYXQKLWRlZiBpbnRfaGV4YWdvbl9WNl92cGFja3d1aF9zYXQgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwYWNrd3VoX3NhdCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnBhY2t3dWhfc2F0XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnBhY2t3dWhfc2F0XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cGFja3d1aF9zYXRfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBhY2t3dWhfc2F0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZwYWNrd2hfc2F0LFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZwYWNrd2hfc2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdnBhY2t3aF9zYXQgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwYWNrd2hfc2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cGFja3doX3NhdF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZwYWNrd2hfc2F0XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cGFja3doX3NhdF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cGFja3doX3NhdF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92emIsVkRfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3Z6YgotZGVmIGludF9oZXhhZ29uX1Y2X3Z6YiA6Ci1IZXhhZ29uX3YxMDI0djUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnpiIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92emJfMTI4QixWRF9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdnpiXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92emJfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z6Yl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c2IsVkRfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3ZzYgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzYiA6Ci1IZXhhZ29uX3YxMDI0djUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNiIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c2JfMTI4QixWRF9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdnNiXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c2JfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzYl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92emgsVkRfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3Z6aAotZGVmIGludF9oZXhhZ29uX1Y2X3Z6aCA6Ci1IZXhhZ29uX3YxMDI0djUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnpoIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92emhfMTI4QixWRF9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdnpoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92emhfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z6aF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c2gsVkRfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3ZzaAotZGVmIGludF9oZXhhZ29uX1Y2X3ZzaCA6Ci1IZXhhZ29uX3YxMDI0djUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNoIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c2hfMTI4QixWRF9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdnNoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c2hfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZG1weWJ1cyxWSV9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92ZG1weWJ1cwotZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5YnVzIDoKLUhleGFnb25fdjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWJ1cyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmRtcHlidXNfMTI4QixWSV9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92ZG1weWJ1c18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmRtcHlidXNfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWJ1c18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZG1weWJ1c19hY2MsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92ZG1weWJ1c19hY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWJ1c19hY2MgOgotSGV4YWdvbl92NTEydjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWJ1c19hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5YnVzX2FjY18xMjhCLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmRtcHlidXNfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWJ1c19hY2NfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5YnVzX2FjY18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZG1weWJ1c19kdixWRF9mdHlwZV9WRFNJLDIpCi0vLyB0YWcgOiBWNl92ZG1weWJ1c19kdgotZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5YnVzX2R2IDoKLUhleGFnb25fdjEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5YnVzX2R2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZG1weWJ1c19kdl8xMjhCLFZEX2Z0eXBlX1ZEU0ksMikKLS8vIHRhZyA6IFY2X3ZkbXB5YnVzX2R2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWJ1c19kdl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5YnVzX2R2XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5YnVzX2R2X2FjYyxWRF9mdHlwZV9WRFZEU0ksMykKLS8vIHRhZyA6IFY2X3ZkbXB5YnVzX2R2X2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5YnVzX2R2X2FjYyA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5YnVzX2R2X2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmRtcHlidXNfZHZfYWNjXzEyOEIsVkRfZnR5cGVfVkRWRFNJLDMpCi0vLyB0YWcgOiBWNl92ZG1weWJ1c19kdl9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5YnVzX2R2X2FjY18xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYyMDQ4aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHlidXNfZHZfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aGIsVklfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfdmRtcHloYgotZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aGIgOgotSGV4YWdvbl92NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aGIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aGJfMTI4QixWSV9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92ZG1weWhiXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhiXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloYl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZG1weWhiX2FjYyxWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZkbXB5aGJfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdmRtcHloYl9hY2MgOgotSGV4YWdvbl92NTEydjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWhiX2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmRtcHloYl9hY2NfMTI4QixWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZkbXB5aGJfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhiX2FjY18xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloYl9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmRtcHloYl9kdixWRF9mdHlwZV9WRFNJLDIpCi0vLyB0YWcgOiBWNl92ZG1weWhiX2R2Ci1kZWYgaW50X2hleGFnb25fVjZfdmRtcHloYl9kdiA6Ci1IZXhhZ29uX3YxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWhiX2R2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZG1weWhiX2R2XzEyOEIsVkRfZnR5cGVfVkRTSSwyKQotLy8gdGFnIDogVjZfdmRtcHloYl9kdl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmRtcHloYl9kdl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aGJfZHZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmRtcHloYl9kdl9hY2MsVkRfZnR5cGVfVkRWRFNJLDMpCi0vLyB0YWcgOiBWNl92ZG1weWhiX2R2X2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aGJfZHZfYWNjIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloYl9kdl9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aGJfZHZfYWNjXzEyOEIsVkRfZnR5cGVfVkRWRFNJLDMpCi0vLyB0YWcgOiBWNl92ZG1weWhiX2R2X2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmRtcHloYl9kdl9hY2NfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djIwNDh2MjA0OGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aGJfZHZfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aHZzYXQsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmRtcHlodnNhdAotZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aHZzYXQgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aHZzYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aHZzYXRfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92ZG1weWh2c2F0XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWh2c2F0XzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aHZzYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmRtcHlodnNhdF9hY2MsVklfZnR5cGVfVklWSVZJLDMpCi0vLyB0YWcgOiBWNl92ZG1weWh2c2F0X2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aHZzYXRfYWNjIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHlodnNhdF9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aHZzYXRfYWNjXzEyOEIsVklfZnR5cGVfVklWSVZJLDMpCi0vLyB0YWcgOiBWNl92ZG1weWh2c2F0X2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmRtcHlodnNhdF9hY2NfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWh2c2F0X2FjY18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZG1weWhzYXQsVklfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfdmRtcHloc2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdmRtcHloc2F0IDoKLUhleGFnb25fdjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWhzYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aHNhdF8xMjhCLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3ZkbXB5aHNhdF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmRtcHloc2F0XzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloc2F0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aHNhdF9hY2MsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92ZG1weWhzYXRfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdmRtcHloc2F0X2FjYyA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aHNhdF9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aHNhdF9hY2NfMTI4QixWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZkbXB5aHNhdF9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aHNhdF9hY2NfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aHNhdF9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmRtcHloaXNhdCxWSV9mdHlwZV9WRFNJLDIpCi0vLyB0YWcgOiBWNl92ZG1weWhpc2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdmRtcHloaXNhdCA6Ci1IZXhhZ29uX3Y1MTJ2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aGlzYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aGlzYXRfMTI4QixWSV9mdHlwZV9WRFNJLDIpCi0vLyB0YWcgOiBWNl92ZG1weWhpc2F0XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhpc2F0XzEyOEIgOgotSGV4YWdvbl92MTAyNHYyMDQ4aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloaXNhdF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZG1weWhpc2F0X2FjYyxWSV9mdHlwZV9WSVZEU0ksMykKLS8vIHRhZyA6IFY2X3ZkbXB5aGlzYXRfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdmRtcHloaXNhdF9hY2MgOgotSGV4YWdvbl92NTEydjUxMnYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloaXNhdF9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aGlzYXRfYWNjXzEyOEIsVklfZnR5cGVfVklWRFNJLDMpCi0vLyB0YWcgOiBWNl92ZG1weWhpc2F0X2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmRtcHloaXNhdF9hY2NfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MjA0OGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aGlzYXRfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aHN1c2F0LFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3ZkbXB5aHN1c2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdmRtcHloc3VzYXQgOgotSGV4YWdvbl92NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aHN1c2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZG1weWhzdXNhdF8xMjhCLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3ZkbXB5aHN1c2F0XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhzdXNhdF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aHN1c2F0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aHN1c2F0X2FjYyxWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZkbXB5aHN1c2F0X2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aHN1c2F0X2FjYyA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aHN1c2F0X2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmRtcHloc3VzYXRfYWNjXzEyOEIsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92ZG1weWhzdXNhdF9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aHN1c2F0X2FjY18xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloc3VzYXRfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aHN1aXNhdCxWSV9mdHlwZV9WRFNJLDIpCi0vLyB0YWcgOiBWNl92ZG1weWhzdWlzYXQKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhzdWlzYXQgOgotSGV4YWdvbl92NTEydjEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWhzdWlzYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aHN1aXNhdF8xMjhCLFZJX2Z0eXBlX1ZEU0ksMikKLS8vIHRhZyA6IFY2X3ZkbXB5aHN1aXNhdF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmRtcHloc3Vpc2F0XzEyOEIgOgotSGV4YWdvbl92MTAyNHYyMDQ4aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloc3Vpc2F0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkbXB5aHN1aXNhdF9hY2MsVklfZnR5cGVfVklWRFNJLDMpCi0vLyB0YWcgOiBWNl92ZG1weWhzdWlzYXRfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdmRtcHloc3Vpc2F0X2FjYyA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWhzdWlzYXRfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZG1weWhzdWlzYXRfYWNjXzEyOEIsVklfZnR5cGVfVklWRFNJLDMpCi0vLyB0YWcgOiBWNl92ZG1weWhzdWlzYXRfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhzdWlzYXRfYWNjXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djIwNDhpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWhzdWlzYXRfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Z0bXB5YixWRF9mdHlwZV9WRFNJLDIpCi0vLyB0YWcgOiBWNl92dG1weWIKLWRlZiBpbnRfaGV4YWdvbl9WNl92dG1weWIgOgotSGV4YWdvbl92MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnRtcHliIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92dG1weWJfMTI4QixWRF9mdHlwZV9WRFNJLDIpCi0vLyB0YWcgOiBWNl92dG1weWJfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Z0bXB5Yl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z0bXB5Yl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92dG1weWJfYWNjLFZEX2Z0eXBlX1ZEVkRTSSwzKQotLy8gdGFnIDogVjZfdnRtcHliX2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3Z0bXB5Yl9hY2MgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dG1weWJfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92dG1weWJfYWNjXzEyOEIsVkRfZnR5cGVfVkRWRFNJLDMpCi0vLyB0YWcgOiBWNl92dG1weWJfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92dG1weWJfYWNjXzEyOEIgOgotSGV4YWdvbl92MjA0OHYyMDQ4djIwNDhpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dG1weWJfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Z0bXB5YnVzLFZEX2Z0eXBlX1ZEU0ksMikKLS8vIHRhZyA6IFY2X3Z0bXB5YnVzCi1kZWYgaW50X2hleGFnb25fVjZfdnRtcHlidXMgOgotSGV4YWdvbl92MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnRtcHlidXMiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Z0bXB5YnVzXzEyOEIsVkRfZnR5cGVfVkRTSSwyKQotLy8gdGFnIDogVjZfdnRtcHlidXNfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Z0bXB5YnVzXzEyOEIgOgotSGV4YWdvbl92MjA0OHYyMDQ4aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnRtcHlidXNfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnRtcHlidXNfYWNjLFZEX2Z0eXBlX1ZEVkRTSSwzKQotLy8gdGFnIDogVjZfdnRtcHlidXNfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdnRtcHlidXNfYWNjIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnRtcHlidXNfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92dG1weWJ1c19hY2NfMTI4QixWRF9mdHlwZV9WRFZEU0ksMykKLS8vIHRhZyA6IFY2X3Z0bXB5YnVzX2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnRtcHlidXNfYWNjXzEyOEIgOgotSGV4YWdvbl92MjA0OHYyMDQ4djIwNDhpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dG1weWJ1c19hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnRtcHloYixWRF9mdHlwZV9WRFNJLDIpCi0vLyB0YWcgOiBWNl92dG1weWhiCi1kZWYgaW50X2hleGFnb25fVjZfdnRtcHloYiA6Ci1IZXhhZ29uX3YxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dG1weWhiIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92dG1weWhiXzEyOEIsVkRfZnR5cGVfVkRTSSwyKQotLy8gdGFnIDogVjZfdnRtcHloYl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnRtcHloYl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z0bXB5aGJfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnRtcHloYl9hY2MsVkRfZnR5cGVfVkRWRFNJLDMpCi0vLyB0YWcgOiBWNl92dG1weWhiX2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3Z0bXB5aGJfYWNjIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnRtcHloYl9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Z0bXB5aGJfYWNjXzEyOEIsVkRfZnR5cGVfVkRWRFNJLDMpCi0vLyB0YWcgOiBWNl92dG1weWhiX2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnRtcHloYl9hY2NfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djIwNDh2MjA0OGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z0bXB5aGJfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZybXB5dWIsVklfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfdnJtcHl1YgotZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5dWIgOgotSGV4YWdvbl92NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5dWIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZybXB5dWJfMTI4QixWSV9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92cm1weXViXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm1weXViXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHl1Yl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm1weXViX2FjYyxWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZybXB5dWJfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdnJtcHl1Yl9hY2MgOgotSGV4YWdvbl92NTEydjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weXViX2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJtcHl1Yl9hY2NfMTI4QixWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZybXB5dWJfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm1weXViX2FjY18xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHl1Yl9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJtcHl1YnYsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnJtcHl1YnYKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm1weXVidiA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHl1YnYiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZybXB5dWJ2XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnJtcHl1YnZfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5dWJ2XzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5dWJ2XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZybXB5dWJ2X2FjYyxWSV9mdHlwZV9WSVZJVkksMykKLS8vIHRhZyA6IFY2X3ZybXB5dWJ2X2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5dWJ2X2FjYyA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5dWJ2X2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJtcHl1YnZfYWNjXzEyOEIsVklfZnR5cGVfVklWSVZJLDMpCi0vLyB0YWcgOiBWNl92cm1weXVidl9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5dWJ2X2FjY18xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5dWJ2X2FjY18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm1weWJ2LFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZybXB5YnYKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ2IDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm1weWJ2XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnJtcHlidl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnJtcHlidl8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ2XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZybXB5YnZfYWNjLFZJX2Z0eXBlX1ZJVklWSSwzKQotLy8gdGFnIDogVjZfdnJtcHlidl9hY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ2X2FjYyA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5YnZfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm1weWJ2X2FjY18xMjhCLFZJX2Z0eXBlX1ZJVklWSSwzKQotLy8gdGFnIDogVjZfdnJtcHlidl9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5YnZfYWNjXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidl9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJtcHl1YmksVkRfZnR5cGVfVkRTSVNJLDMpCi0vLyB0YWcgOiBWNl92cm1weXViaQotZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5dWJpIDoKLUhleGFnb25fdjEwMjR2MTAyNGlpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weXViaSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJtcHl1YmlfMTI4QixWRF9mdHlwZV9WRFNJU0ksMykKLS8vIHRhZyA6IFY2X3ZybXB5dWJpXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm1weXViaV8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OGlpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weXViaV8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm1weXViaV9hY2MsVkRfZnR5cGVfVkRWRFNJU0ksNCkKLS8vIHRhZyA6IFY2X3ZybXB5dWJpX2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5dWJpX2FjYyA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNGlpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weXViaV9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZybXB5dWJpX2FjY18xMjhCLFZEX2Z0eXBlX1ZEVkRTSVNJLDQpCi0vLyB0YWcgOiBWNl92cm1weXViaV9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5dWJpX2FjY18xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYyMDQ4aWlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5dWJpX2FjY18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm1weWJ1cyxWSV9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92cm1weWJ1cwotZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5YnVzIDoKLUhleGFnb25fdjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ1cyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJtcHlidXNfMTI4QixWSV9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92cm1weWJ1c18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnJtcHlidXNfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ1c18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm1weWJ1c19hY2MsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92cm1weWJ1c19hY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ1c19hY2MgOgotSGV4YWdvbl92NTEydjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ1c19hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZybXB5YnVzX2FjY18xMjhCLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdnJtcHlidXNfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ1c19hY2NfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5YnVzX2FjY18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm1weWJ1c2ksVkRfZnR5cGVfVkRTSVNJLDMpCi0vLyB0YWcgOiBWNl92cm1weWJ1c2kKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ1c2kgOgotSGV4YWdvbl92MTAyNHYxMDI0aWlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5YnVzaSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJtcHlidXNpXzEyOEIsVkRfZnR5cGVfVkRTSVNJLDMpCi0vLyB0YWcgOiBWNl92cm1weWJ1c2lfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5YnVzaV8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OGlpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ1c2lfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJtcHlidXNpX2FjYyxWRF9mdHlwZV9WRFZEU0lTSSw0KQotLy8gdGFnIDogVjZfdnJtcHlidXNpX2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5YnVzaV9hY2MgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRpaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidXNpX2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJtcHlidXNpX2FjY18xMjhCLFZEX2Z0eXBlX1ZEVkRTSVNJLDQpCi0vLyB0YWcgOiBWNl92cm1weWJ1c2lfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ1c2lfYWNjXzEyOEIgOgotSGV4YWdvbl92MjA0OHYyMDQ4djIwNDhpaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidXNpX2FjY18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm1weWJ1c3YsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnJtcHlidXN2Ci1kZWYgaW50X2hleGFnb25fVjZfdnJtcHlidXN2IDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ1c3YiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZybXB5YnVzdl8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZybXB5YnVzdl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnJtcHlidXN2XzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5YnVzdl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm1weWJ1c3ZfYWNjLFZJX2Z0eXBlX1ZJVklWSSwzKQotLy8gdGFnIDogVjZfdnJtcHlidXN2X2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5YnVzdl9hY2MgOgotSGV4YWdvbl92NTEydjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ1c3ZfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm1weWJ1c3ZfYWNjXzEyOEIsVklfZnR5cGVfVklWSVZJLDMpCi0vLyB0YWcgOiBWNl92cm1weWJ1c3ZfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ1c3ZfYWNjXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidXN2X2FjY18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZHNhZHVoLFZEX2Z0eXBlX1ZEU0ksMikKLS8vIHRhZyA6IFY2X3Zkc2FkdWgKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZHNhZHVoIDoKLUhleGFnb25fdjEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zkc2FkdWgiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zkc2FkdWhfMTI4QixWRF9mdHlwZV9WRFNJLDIpCi0vLyB0YWcgOiBWNl92ZHNhZHVoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZHNhZHVoXzEyOEIgOgotSGV4YWdvbl92MjA0OHYyMDQ4aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRzYWR1aF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZHNhZHVoX2FjYyxWRF9mdHlwZV9WRFZEU0ksMykKLS8vIHRhZyA6IFY2X3Zkc2FkdWhfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdmRzYWR1aF9hY2MgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZHNhZHVoX2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmRzYWR1aF9hY2NfMTI4QixWRF9mdHlwZV9WRFZEU0ksMykKLS8vIHRhZyA6IFY2X3Zkc2FkdWhfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZHNhZHVoX2FjY18xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYyMDQ4aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRzYWR1aF9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJzYWR1YmksVkRfZnR5cGVfVkRTSVNJLDMpCi0vLyB0YWcgOiBWNl92cnNhZHViaQotZGVmIGludF9oZXhhZ29uX1Y2X3Zyc2FkdWJpIDoKLUhleGFnb25fdjEwMjR2MTAyNGlpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cnNhZHViaSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJzYWR1YmlfMTI4QixWRF9mdHlwZV9WRFNJU0ksMykKLS8vIHRhZyA6IFY2X3Zyc2FkdWJpXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cnNhZHViaV8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OGlpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cnNhZHViaV8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cnNhZHViaV9hY2MsVkRfZnR5cGVfVkRWRFNJU0ksNCkKLS8vIHRhZyA6IFY2X3Zyc2FkdWJpX2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3Zyc2FkdWJpX2FjYyA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNGlpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cnNhZHViaV9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zyc2FkdWJpX2FjY18xMjhCLFZEX2Z0eXBlX1ZEVkRTSVNJLDQpCi0vLyB0YWcgOiBWNl92cnNhZHViaV9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zyc2FkdWJpX2FjY18xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYyMDQ4aWlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zyc2FkdWJpX2FjY18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXNydyxWSV9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92YXNydwotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J3IDoKLUhleGFnb25fdjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNydyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzcndfMTI4QixWSV9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92YXNyd18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFzcndfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyd18xMjhCIj47Ci0KLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc2x3LFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3Zhc2x3Ci1kZWYgaW50X2hleGFnb25fVjZfdmFzbHcgOgotSGV4YWdvbl92NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc2x3Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXNsd18xMjhCLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3Zhc2x3XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNsd18xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc2x3XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zsc3J3LFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3Zsc3J3Ci1kZWYgaW50X2hleGFnb25fVjZfdmxzcncgOgotSGV4YWdvbl92NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zsc3J3Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bHNyd18xMjhCLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3Zsc3J3XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bHNyd18xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zsc3J3XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3J3dixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YXNyd3YKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNyd3YgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J3diI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzcnd2XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFzcnd2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNyd3ZfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcnd2XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc2x3dixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YXNsd3YKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNsd3YgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc2x3diI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzbHd2XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFzbHd2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNsd3ZfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzbHd2XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zsc3J3dixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bHNyd3YKLWRlZiBpbnRfaGV4YWdvbl9WNl92bHNyd3YgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zsc3J3diI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmxzcnd2XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmxzcnd2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bHNyd3ZfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmxzcnd2XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3JoLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3Zhc3JoCi1kZWYgaW50X2hleGFnb25fVjZfdmFzcmggOgotSGV4YWdvbl92NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3JoIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXNyaF8xMjhCLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3Zhc3JoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNyaF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3JoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc2xoLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3Zhc2xoCi1kZWYgaW50X2hleGFnb25fVjZfdmFzbGggOgotSGV4YWdvbl92NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc2xoIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXNsaF8xMjhCLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3Zhc2xoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNsaF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc2xoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zsc3JoLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3Zsc3JoCi1kZWYgaW50X2hleGFnb25fVjZfdmxzcmggOgotSGV4YWdvbl92NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zsc3JoIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bHNyaF8xMjhCLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3Zsc3JoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bHNyaF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zsc3JoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3JodixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YXNyaHYKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNyaHYgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3JodiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzcmh2XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFzcmh2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNyaHZfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcmh2XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc2xodixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YXNsaHYKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNsaHYgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc2xodiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzbGh2XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFzbGh2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNsaHZfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzbGh2XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zsc3JodixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bHNyaHYKLWRlZiBpbnRfaGV4YWdvbl9WNl92bHNyaHYgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zsc3JodiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmxzcmh2XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmxzcmh2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bHNyaHZfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmxzcmh2XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3J3aCxWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3Zhc3J3aAotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J3aCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J3aCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzcndoXzEyOEIsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92YXNyd2hfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J3aF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcndoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3J3aHNhdCxWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3Zhc3J3aHNhdAotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J3aHNhdCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J3aHNhdCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzcndoc2F0XzEyOEIsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92YXNyd2hzYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J3aHNhdF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcndoc2F0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3J3aHJuZHNhdCxWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3Zhc3J3aHJuZHNhdAotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J3aHJuZHNhdCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J3aHJuZHNhdCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzcndocm5kc2F0XzEyOEIsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92YXNyd2hybmRzYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J3aHJuZHNhdF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcndocm5kc2F0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3J3dWhzYXQsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92YXNyd3Voc2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdmFzcnd1aHNhdCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J3dWhzYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3J3dWhzYXRfMTI4QixWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3Zhc3J3dWhzYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J3dWhzYXRfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J3dWhzYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJvdW5kd2gsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnJvdW5kd2gKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm91bmR3aCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJvdW5kd2giPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zyb3VuZHdoXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnJvdW5kd2hfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zyb3VuZHdoXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zyb3VuZHdoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zyb3VuZHd1aCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92cm91bmR3dWgKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm91bmR3dWggOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zyb3VuZHd1aCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJvdW5kd3VoXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnJvdW5kd3VoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm91bmR3dWhfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJvdW5kd3VoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3JodWJzYXQsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92YXNyaHVic2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdmFzcmh1YnNhdCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3JodWJzYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3JodWJzYXRfMTI4QixWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3Zhc3JodWJzYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3JodWJzYXRfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3JodWJzYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzcmh1YnJuZHNhdCxWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3Zhc3JodWJybmRzYXQKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNyaHVicm5kc2F0IDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcmh1YnJuZHNhdCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzcmh1YnJuZHNhdF8xMjhCLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmFzcmh1YnJuZHNhdF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFzcmh1YnJuZHNhdF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcmh1YnJuZHNhdF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXNyaGJybmRzYXQsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92YXNyaGJybmRzYXQKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNyaGJybmRzYXQgOgotSGV4YWdvbl92NTEydjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyaGJybmRzYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3JoYnJuZHNhdF8xMjhCLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmFzcmhicm5kc2F0XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNyaGJybmRzYXRfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3JoYnJuZHNhdF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm91bmRoYixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92cm91bmRoYgotZGVmIGludF9oZXhhZ29uX1Y2X3Zyb3VuZGhiIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm91bmRoYiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJvdW5kaGJfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92cm91bmRoYl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnJvdW5kaGJfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJvdW5kaGJfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJvdW5kaHViLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3Zyb3VuZGh1YgotZGVmIGludF9oZXhhZ29uX1Y2X3Zyb3VuZGh1YiA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJvdW5kaHViIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm91bmRodWJfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92cm91bmRodWJfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zyb3VuZGh1Yl8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm91bmRodWJfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzbHdfYWNjLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmFzbHdfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdmFzbHdfYWNjIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzbHdfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXNsd19hY2NfMTI4QixWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3Zhc2x3X2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFzbHdfYWNjXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNsd19hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzcndfYWNjLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmFzcndfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdmFzcndfYWNjIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcndfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXNyd19hY2NfMTI4QixWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3Zhc3J3X2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFzcndfYWNjXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyd19hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZGIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFkZGIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkYiA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGRiXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFkZGJfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRiXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRiXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJiLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzdWJiCi1kZWYgaW50X2hleGFnb25fVjZfdnN1YmIgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJiIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3ViYl8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzdWJiXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3ViYl8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViYl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkYl9kdixWRF9mdHlwZV9WRFZELDIpCi0vLyB0YWcgOiBWNl92YWRkYl9kdgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRiX2R2IDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkYl9kdiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZGJfZHZfMTI4QixWRF9mdHlwZV9WRFZELDIpCi0vLyB0YWcgOiBWNl92YWRkYl9kdl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFkZGJfZHZfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djIwNDh2MjA0OF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGJfZHZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YmJfZHYsVkRfZnR5cGVfVkRWRCwyKQotLy8gdGFnIDogVjZfdnN1YmJfZHYKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3ViYl9kdiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmJfZHYiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJiX2R2XzEyOEIsVkRfZnR5cGVfVkRWRCwyKQotLy8gdGFnIDogVjZfdnN1YmJfZHZfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJiX2R2XzEyOEIgOgotSGV4YWdvbl92MjA0OHYyMDQ4djIwNDhfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJiX2R2XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGRoLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhZGRoCi1kZWYgaW50X2hleGFnb25fVjZfdmFkZGggOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRoIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkaF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhZGRoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkaF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkaF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3ViaCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c3ViaAotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJoIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViaCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YmhfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c3ViaF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnN1YmhfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmhfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZGhfZHYsVkRfZnR5cGVfVkRWRCwyKQotLy8gdGFnIDogVjZfdmFkZGhfZHYKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkaF9kdiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGhfZHYiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGRoX2R2XzEyOEIsVkRfZnR5cGVfVkRWRCwyKQotLy8gdGFnIDogVjZfdmFkZGhfZHZfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRoX2R2XzEyOEIgOgotSGV4YWdvbl92MjA0OHYyMDQ4djIwNDhfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRoX2R2XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJoX2R2LFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZzdWJoX2R2Ci1kZWYgaW50X2hleGFnb25fVjZfdnN1YmhfZHYgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJoX2R2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3ViaF9kdl8xMjhCLFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZzdWJoX2R2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3ViaF9kdl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYyMDQ4X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViaF9kdl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkdyxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YWRkdwotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR3IDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZHdfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YWRkd18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFkZHdfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHdfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YncsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnN1YncKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3VidyA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnciPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJ3XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnN1YndfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ3XzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ3XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGR3X2R2LFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZhZGR3X2R2Ci1kZWYgaW50X2hleGFnb25fVjZfdmFkZHdfZHYgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR3X2R2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkd19kdl8xMjhCLFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZhZGR3X2R2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkd19kdl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYyMDQ4X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkd19kdl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3Vid19kdixWRF9mdHlwZV9WRFZELDIpCi0vLyB0YWcgOiBWNl92c3Vid19kdgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ3X2R2IDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3Vid19kdiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YndfZHZfMTI4QixWRF9mdHlwZV9WRFZELDIpCi0vLyB0YWcgOiBWNl92c3Vid19kdl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnN1YndfZHZfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djIwNDh2MjA0OF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YndfZHZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZHVic2F0LFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhZGR1YnNhdAotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1YnNhdCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHVic2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkdWJzYXRfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YWRkdWJzYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1YnNhdF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdWJzYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZHVic2F0X2R2LFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZhZGR1YnNhdF9kdgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1YnNhdF9kdiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHVic2F0X2R2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkdWJzYXRfZHZfMTI4QixWRF9mdHlwZV9WRFZELDIpCi0vLyB0YWcgOiBWNl92YWRkdWJzYXRfZHZfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1YnNhdF9kdl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYyMDQ4X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdWJzYXRfZHZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YnVic2F0LFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzdWJ1YnNhdAotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1YnNhdCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnVic2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3VidWJzYXRfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c3VidWJzYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1YnNhdF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3VidWJzYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YnVic2F0X2R2LFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZzdWJ1YnNhdF9kdgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1YnNhdF9kdiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnVic2F0X2R2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3VidWJzYXRfZHZfMTI4QixWRF9mdHlwZV9WRFZELDIpCi0vLyB0YWcgOiBWNl92c3VidWJzYXRfZHZfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1YnNhdF9kdl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYyMDQ4X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3VidWJzYXRfZHZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZHVoc2F0LFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhZGR1aHNhdAotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1aHNhdCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHVoc2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkdWhzYXRfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YWRkdWhzYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1aHNhdF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdWhzYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZHVoc2F0X2R2LFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZhZGR1aHNhdF9kdgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1aHNhdF9kdiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHVoc2F0X2R2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkdWhzYXRfZHZfMTI4QixWRF9mdHlwZV9WRFZELDIpCi0vLyB0YWcgOiBWNl92YWRkdWhzYXRfZHZfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1aHNhdF9kdl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYyMDQ4X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdWhzYXRfZHZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YnVoc2F0LFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzdWJ1aHNhdAotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1aHNhdCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnVoc2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3VidWhzYXRfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c3VidWhzYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1aHNhdF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3VidWhzYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YnVoc2F0X2R2LFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZzdWJ1aHNhdF9kdgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1aHNhdF9kdiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnVoc2F0X2R2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3VidWhzYXRfZHZfMTI4QixWRF9mdHlwZV9WRFZELDIpCi0vLyB0YWcgOiBWNl92c3VidWhzYXRfZHZfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1aHNhdF9kdl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYyMDQ4X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3VidWhzYXRfZHZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZGhzYXQsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFkZGhzYXQKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkaHNhdCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGhzYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGRoc2F0XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFkZGhzYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRoc2F0XzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRoc2F0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGRoc2F0X2R2LFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZhZGRoc2F0X2R2Ci1kZWYgaW50X2hleGFnb25fVjZfdmFkZGhzYXRfZHYgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRoc2F0X2R2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkaHNhdF9kdl8xMjhCLFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZhZGRoc2F0X2R2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkaHNhdF9kdl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYyMDQ4X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkaHNhdF9kdl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3ViaHNhdCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c3ViaHNhdAotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJoc2F0IDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViaHNhdCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YmhzYXRfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c3ViaHNhdF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnN1YmhzYXRfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmhzYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YmhzYXRfZHYsVkRfZnR5cGVfVkRWRCwyKQotLy8gdGFnIDogVjZfdnN1YmhzYXRfZHYKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3ViaHNhdF9kdiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmhzYXRfZHYiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJoc2F0X2R2XzEyOEIsVkRfZnR5cGVfVkRWRCwyKQotLy8gdGFnIDogVjZfdnN1YmhzYXRfZHZfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJoc2F0X2R2XzEyOEIgOgotSGV4YWdvbl92MjA0OHYyMDQ4djIwNDhfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJoc2F0X2R2XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGR3c2F0LFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhZGR3c2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdmFkZHdzYXQgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR3c2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkd3NhdF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhZGR3c2F0XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkd3NhdF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkd3NhdF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkd3NhdF9kdixWRF9mdHlwZV9WRFZELDIpCi0vLyB0YWcgOiBWNl92YWRkd3NhdF9kdgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR3c2F0X2R2IDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkd3NhdF9kdiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZHdzYXRfZHZfMTI4QixWRF9mdHlwZV9WRFZELDIpCi0vLyB0YWcgOiBWNl92YWRkd3NhdF9kdl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFkZHdzYXRfZHZfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djIwNDh2MjA0OF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHdzYXRfZHZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YndzYXQsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnN1YndzYXQKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3Vid3NhdCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YndzYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJ3c2F0XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnN1YndzYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ3c2F0XzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ3c2F0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJ3c2F0X2R2LFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZzdWJ3c2F0X2R2Ci1kZWYgaW50X2hleGFnb25fVjZfdnN1YndzYXRfZHYgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ3c2F0X2R2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3Vid3NhdF9kdl8xMjhCLFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZzdWJ3c2F0X2R2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3Vid3NhdF9kdl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYyMDQ4X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3Vid3NhdF9kdl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXZndWIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmF2Z3ViCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z3ViIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZndWIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhdmd1Yl8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3Zhdmd1Yl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z3ViXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmd1Yl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXZndWJybmQsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmF2Z3Vicm5kCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z3Vicm5kIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZndWJybmQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhdmd1YnJuZF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3Zhdmd1YnJuZF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z3Vicm5kXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmd1YnJuZF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXZndWgsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmF2Z3VoCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z3VoIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZndWgiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhdmd1aF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3Zhdmd1aF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z3VoXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmd1aF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXZndWhybmQsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmF2Z3Vocm5kCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z3Vocm5kIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZndWhybmQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhdmd1aHJuZF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3Zhdmd1aHJuZF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z3Vocm5kXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmd1aHJuZF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXZnaCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YXZnaAotZGVmIGludF9oZXhhZ29uX1Y2X3ZhdmdoIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZnaCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmF2Z2hfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YXZnaF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z2hfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmF2Z2hfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmF2Z2hybmQsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmF2Z2hybmQKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXZnaHJuZCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmF2Z2hybmQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhdmdocm5kXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmF2Z2hybmRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zhdmdocm5kXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmdocm5kXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZuYXZnaCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bmF2Z2gKLWRlZiBpbnRfaGV4YWdvbl9WNl92bmF2Z2ggOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZuYXZnaCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm5hdmdoXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm5hdmdoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bmF2Z2hfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm5hdmdoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhdmd3LFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3Zhdmd3Ci1kZWYgaW50X2hleGFnb25fVjZfdmF2Z3cgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmd3Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXZnd18xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3Zhdmd3XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXZnd18xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZnd18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXZnd3JuZCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YXZnd3JuZAotZGVmIGludF9oZXhhZ29uX1Y2X3Zhdmd3cm5kIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZnd3JuZCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmF2Z3dybmRfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YXZnd3JuZF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z3dybmRfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmF2Z3dybmRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm5hdmd3LFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZuYXZndwotZGVmIGludF9oZXhhZ29uX1Y2X3ZuYXZndyA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm5hdmd3Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bmF2Z3dfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bmF2Z3dfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZuYXZnd18xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bmF2Z3dfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFic2RpZmZ1YixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YWJzZGlmZnViCi1kZWYgaW50X2hleGFnb25fVjZfdmFic2RpZmZ1YiA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFic2RpZmZ1YiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFic2RpZmZ1Yl8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhYnNkaWZmdWJfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhYnNkaWZmdWJfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFic2RpZmZ1Yl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWJzZGlmZnVoLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhYnNkaWZmdWgKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWJzZGlmZnVoIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzZGlmZnVoIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWJzZGlmZnVoXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFic2RpZmZ1aF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFic2RpZmZ1aF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzZGlmZnVoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhYnNkaWZmaCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YWJzZGlmZmgKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWJzZGlmZmggOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhYnNkaWZmaCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFic2RpZmZoXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFic2RpZmZoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWJzZGlmZmhfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFic2RpZmZoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhYnNkaWZmdyxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YWJzZGlmZncKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWJzZGlmZncgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhYnNkaWZmdyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFic2RpZmZ3XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFic2RpZmZ3XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWJzZGlmZndfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFic2RpZmZ3XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZuYXZndWIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm5hdmd1YgotZGVmIGludF9oZXhhZ29uX1Y2X3ZuYXZndWIgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZuYXZndWIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZuYXZndWJfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bmF2Z3ViXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bmF2Z3ViXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZuYXZndWJfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZHViaCxWRF9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YWRkdWJoCi1kZWYgaW50X2hleGFnb25fVjZfdmFkZHViaCA6Ci1IZXhhZ29uX3YxMDI0djUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR1YmgiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGR1YmhfMTI4QixWRF9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YWRkdWJoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkdWJoXzEyOEIgOgotSGV4YWdvbl92MjA0OHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR1YmhfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YnViaCxWRF9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c3VidWJoCi1kZWYgaW50X2hleGFnb25fVjZfdnN1YnViaCA6Ci1IZXhhZ29uX3YxMDI0djUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ1YmgiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJ1YmhfMTI4QixWRF9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c3VidWJoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3VidWJoXzEyOEIgOgotSGV4YWdvbl92MjA0OHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ1YmhfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZGh3LFZEX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhZGRodwotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRodyA6Ci1IZXhhZ29uX3YxMDI0djUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRodyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZGh3XzEyOEIsVkRfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFkZGh3XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkaHdfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGh3XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJodyxWRF9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c3ViaHcKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3ViaHcgOgotSGV4YWdvbl92MTAyNHY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViaHciPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJod18xMjhCLFZEX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzdWJod18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnN1Ymh3XzEyOEIgOgotSGV4YWdvbl92MjA0OHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJod18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkdWh3LFZEX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhZGR1aHcKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkdWh3IDoKLUhleGFnb25fdjEwMjR2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHVodyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZHVod18xMjhCLFZEX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhZGR1aHdfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1aHdfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHVod18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3VidWh3LFZEX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzdWJ1aHcKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3VidWh3IDoKLUhleGFnb25fdjEwMjR2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnVodyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YnVod18xMjhCLFZEX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzdWJ1aHdfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1aHdfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnVod18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZDAsVklfZnR5cGVfLDApCi0vLyB0YWcgOiBWNl92ZDAKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZDAgOgotSGV4YWdvbl92NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZDAiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkMF8xMjhCLFZJX2Z0eXBlXywwKQotLy8gdGFnIDogVjZfdmQwXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZDBfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZDBfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZGJxLFZJX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmFkZGJxCi1kZWYgaW50X2hleGFnb25fVjZfdmFkZGJxIDoKLUhleGFnb25fdjUxMnY2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGJxIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkYnFfMTI4QixWSV9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZhZGRicV8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFkZGJxXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGJxXzEyOEIiPjsKLQotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YmJxLFZJX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdnN1YmJxCi1kZWYgaW50X2hleGFnb25fVjZfdnN1YmJxIDoKLUhleGFnb25fdjUxMnY2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmJxIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3ViYnFfMTI4QixWSV9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZzdWJicV8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnN1YmJxXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmJxXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGRibnEsVklfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92YWRkYm5xCi1kZWYgaW50X2hleGFnb25fVjZfdmFkZGJucSA6Ci1IZXhhZ29uX3Y1MTJ2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRibnEiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGRibnFfMTI4QixWSV9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZhZGRibnFfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRibnFfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkYm5xXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJibnEsVklfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92c3ViYm5xCi1kZWYgaW50X2hleGFnb25fVjZfdnN1YmJucSA6Ci1IZXhhZ29uX3Y1MTJ2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJibnEiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJibnFfMTI4QixWSV9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZzdWJibnFfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJibnFfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViYm5xXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGRocSxWSV9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZhZGRocQotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRocSA6Ci1IZXhhZ29uX3Y1MTJ2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRocSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZGhxXzEyOEIsVklfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92YWRkaHFfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRocV8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRocV8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3ViaHEsVklfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92c3ViaHEKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3ViaHEgOgotSGV4YWdvbl92NTEydjY0aXY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViaHEiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJocV8xMjhCLFZJX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdnN1YmhxXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3ViaHFfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViaHFfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZGhucSxWSV9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZhZGRobnEKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkaG5xIDoKLUhleGFnb25fdjUxMnY2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGhucSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZGhucV8xMjhCLFZJX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmFkZGhucV8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFkZGhucV8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRobnFfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YmhucSxWSV9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZzdWJobnEKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3ViaG5xIDoKLUhleGFnb25fdjUxMnY2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmhucSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YmhucV8xMjhCLFZJX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdnN1YmhucV8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnN1YmhucV8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJobnFfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZHdxLFZJX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmFkZHdxCi1kZWYgaW50X2hleGFnb25fVjZfdmFkZHdxIDoKLUhleGFnb25fdjUxMnY2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHdxIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkd3FfMTI4QixWSV9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZhZGR3cV8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFkZHdxXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHdxXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJ3cSxWSV9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZzdWJ3cQotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ3cSA6Ci1IZXhhZ29uX3Y1MTJ2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ3cSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YndxXzEyOEIsVklfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92c3Vid3FfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ3cV8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ3cV8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkd25xLFZJX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmFkZHducQotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR3bnEgOgotSGV4YWdvbl92NTEydjY0aXY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkd25xIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkd25xXzEyOEIsVklfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92YWRkd25xXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkd25xXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHducV8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3Vid25xLFZJX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdnN1YnducQotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ3bnEgOgotSGV4YWdvbl92NTEydjY0aXY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3Vid25xIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3Vid25xXzEyOEIsVklfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92c3Vid25xXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3Vid25xXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnducV8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWJzaCxWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdmFic2gKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWJzaCA6Ci1IZXhhZ29uX3Y1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzaCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFic2hfMTI4QixWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdmFic2hfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhYnNoXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzaF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWJzaF9zYXQsVklfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3ZhYnNoX3NhdAotZGVmIGludF9oZXhhZ29uX1Y2X3ZhYnNoX3NhdCA6Ci1IZXhhZ29uX3Y1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzaF9zYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhYnNoX3NhdF8xMjhCLFZJX2Z0eXBlX1ZJLDEpCi0vLyB0YWcgOiBWNl92YWJzaF9zYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhYnNoX3NhdF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFic2hfc2F0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhYnN3LFZJX2Z0eXBlX1ZJLDEpCi0vLyB0YWcgOiBWNl92YWJzdwotZGVmIGludF9oZXhhZ29uX1Y2X3ZhYnN3IDoKLUhleGFnb25fdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhYnN3Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWJzd18xMjhCLFZJX2Z0eXBlX1ZJLDEpCi0vLyB0YWcgOiBWNl92YWJzd18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFic3dfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhYnN3XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhYnN3X3NhdCxWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdmFic3dfc2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdmFic3dfc2F0IDoKLUhleGFnb25fdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhYnN3X3NhdCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFic3dfc2F0XzEyOEIsVklfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3ZhYnN3X3NhdF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFic3dfc2F0XzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzd19zYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWJ2LFZEX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtcHlidgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlidiA6Ci1IZXhhZ29uX3YxMDI0djUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlidiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWJ2XzEyOEIsVkRfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm1weWJ2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5YnZfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWJ2XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlidl9hY2MsVkRfZnR5cGVfVkRWSVZJLDMpCi0vLyB0YWcgOiBWNl92bXB5YnZfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWJ2X2FjYyA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWJ2X2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWJ2X2FjY18xMjhCLFZEX2Z0eXBlX1ZEVklWSSwzKQotLy8gdGFnIDogVjZfdm1weWJ2X2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWJ2X2FjY18xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlidl9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weXVidixWRF9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bXB5dWJ2Ci1kZWYgaW50X2hleGFnb25fVjZfdm1weXVidiA6Ci1IZXhhZ29uX3YxMDI0djUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHl1YnYiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHl1YnZfMTI4QixWRF9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bXB5dWJ2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5dWJ2XzEyOEIgOgotSGV4YWdvbl92MjA0OHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHl1YnZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weXVidl9hY2MsVkRfZnR5cGVfVkRWSVZJLDMpCi0vLyB0YWcgOiBWNl92bXB5dWJ2X2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1YnZfYWNjIDoKLUhleGFnb25fdjEwMjR2MTAyNHY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWJ2X2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weXVidl9hY2NfMTI4QixWRF9mdHlwZV9WRFZJVkksMykKLS8vIHRhZyA6IFY2X3ZtcHl1YnZfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5dWJ2X2FjY18xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHl1YnZfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlidXN2LFZEX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtcHlidXN2Ci1kZWYgaW50X2hleGFnb25fVjZfdm1weWJ1c3YgOgotSGV4YWdvbl92MTAyNHY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5YnVzdiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWJ1c3ZfMTI4QixWRF9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bXB5YnVzdl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWJ1c3ZfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWJ1c3ZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWJ1c3ZfYWNjLFZEX2Z0eXBlX1ZEVklWSSwzKQotLy8gdGFnIDogVjZfdm1weWJ1c3ZfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWJ1c3ZfYWNjIDoKLUhleGFnb25fdjEwMjR2MTAyNHY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5YnVzdl9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlidXN2X2FjY18xMjhCLFZEX2Z0eXBlX1ZEVklWSSwzKQotLy8gdGFnIDogVjZfdm1weWJ1c3ZfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5YnVzdl9hY2NfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djIwNDh2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5YnVzdl9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1wYWJ1c3YsVkRfZnR5cGVfVkRWRCwyKQotLy8gdGFnIDogVjZfdm1wYWJ1c3YKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXBhYnVzdiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYWJ1c3YiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcGFidXN2XzEyOEIsVkRfZnR5cGVfVkRWRCwyKQotLy8gdGFnIDogVjZfdm1wYWJ1c3ZfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGFidXN2XzEyOEIgOgotSGV4YWdvbl92MjA0OHYyMDQ4djIwNDhfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGFidXN2XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcGFidXV2LFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZtcGFidXV2Ci1kZWYgaW50X2hleGFnb25fVjZfdm1wYWJ1dXYgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGFidXV2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXBhYnV1dl8xMjhCLFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZtcGFidXV2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXBhYnV1dl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYyMDQ4X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhYnV1dl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aHYsVkRfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm1weWh2Ci1kZWYgaW50X2hleGFnb25fVjZfdm1weWh2IDoKLUhleGFnb25fdjEwMjR2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWh2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aHZfMTI4QixWRF9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bXB5aHZfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlodl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aHZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWh2X2FjYyxWRF9mdHlwZV9WRFZJVkksMykKLS8vIHRhZyA6IFY2X3ZtcHlodl9hY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aHZfYWNjIDoKLUhleGFnb25fdjEwMjR2MTAyNHY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aHZfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aHZfYWNjXzEyOEIsVkRfZnR5cGVfVkRWSVZJLDMpCi0vLyB0YWcgOiBWNl92bXB5aHZfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aHZfYWNjXzEyOEIgOgotSGV4YWdvbl92MjA0OHYyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWh2X2FjY18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5dWh2LFZEX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtcHl1aHYKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5dWh2IDoKLUhleGFnb25fdjEwMjR2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weXVodiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weXVodl8xMjhCLFZEX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtcHl1aHZfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1aHZfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weXVodl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5dWh2X2FjYyxWRF9mdHlwZV9WRFZJVkksMykKLS8vIHRhZyA6IFY2X3ZtcHl1aHZfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdm1weXVodl9hY2MgOgotSGV4YWdvbl92MTAyNHYxMDI0djUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHl1aHZfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5dWh2X2FjY18xMjhCLFZEX2Z0eXBlX1ZEVklWSSwzKQotLy8gdGFnIDogVjZfdm1weXVodl9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1aHZfYWNjXzEyOEIgOgotSGV4YWdvbl92MjA0OHYyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weXVodl9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWh2c3JzLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtcHlodnNycwotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlodnNycyA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWh2c3JzIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aHZzcnNfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bXB5aHZzcnNfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlodnNyc18xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aHZzcnNfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWh1cyxWRF9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bXB5aHVzCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWh1cyA6Ci1IZXhhZ29uX3YxMDI0djUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlodXMiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlodXNfMTI4QixWRF9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bXB5aHVzXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aHVzXzEyOEIgOgotSGV4YWdvbl92MjA0OHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlodXNfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWh1c19hY2MsVkRfZnR5cGVfVkRWSVZJLDMpCi0vLyB0YWcgOiBWNl92bXB5aHVzX2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlodXNfYWNjIDoKLUhleGFnb25fdjEwMjR2MTAyNHY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aHVzX2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWh1c19hY2NfMTI4QixWRF9mdHlwZV9WRFZJVkksMykKLS8vIHRhZyA6IFY2X3ZtcHlodXNfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aHVzX2FjY18xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlodXNfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlpaCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bXB5aWgKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aWggOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpaCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWloXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm1weWloXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aWhfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWloXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlpaF9hY2MsVklfZnR5cGVfVklWSVZJLDMpCi0vLyB0YWcgOiBWNl92bXB5aWhfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWloX2FjYyA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpaF9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlpaF9hY2NfMTI4QixWSV9mdHlwZV9WSVZJVkksMykKLS8vIHRhZyA6IFY2X3ZtcHlpaF9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpaF9hY2NfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aWhfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlld3VoLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtcHlld3VoCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWV3dWggOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlld3VoIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5ZXd1aF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtcHlld3VoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5ZXd1aF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5ZXd1aF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5b3doLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtcHlvd2gKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5b3doIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5b3doIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5b3doXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm1weW93aF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1weW93aF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5b3doXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlvd2hfcm5kLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtcHlvd2hfcm5kCi1kZWYgaW50X2hleGFnb25fVjZfdm1weW93aF9ybmQgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlvd2hfcm5kIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5b3doX3JuZF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtcHlvd2hfcm5kXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5b3doX3JuZF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5b3doX3JuZF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5b3doX3NhY2MsVklfZnR5cGVfVklWSVZJLDMpCi0vLyB0YWcgOiBWNl92bXB5b3doX3NhY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5b3doX3NhY2MgOgotSGV4YWdvbl92NTEydjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5b3doX3NhY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlvd2hfc2FjY18xMjhCLFZJX2Z0eXBlX1ZJVklWSSwzKQotLy8gdGFnIDogVjZfdm1weW93aF9zYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5b3doX3NhY2NfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5b3doX3NhY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weW93aF9ybmRfc2FjYyxWSV9mdHlwZV9WSVZJVkksMykKLS8vIHRhZyA6IFY2X3ZtcHlvd2hfcm5kX3NhY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5b3doX3JuZF9zYWNjIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weW93aF9ybmRfc2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weW93aF9ybmRfc2FjY18xMjhCLFZJX2Z0eXBlX1ZJVklWSSwzKQotLy8gdGFnIDogVjZfdm1weW93aF9ybmRfc2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1weW93aF9ybmRfc2FjY18xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlvd2hfcm5kX3NhY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWllb2gsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm1weWllb2gKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aWVvaCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWllb2giPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlpZW9oXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm1weWllb2hfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpZW9oXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpZW9oXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlpZXd1aCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bXB5aWV3dWgKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aWV3dWggOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpZXd1aCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWlld3VoXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm1weWlld3VoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aWV3dWhfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWlld3VoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlpb3doLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtcHlpb3doCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWlvd2ggOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpb3doIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aW93aF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtcHlpb3doXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aW93aF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aW93aF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aWV3aF9hY2MsVklfZnR5cGVfVklWSVZJLDMpCi0vLyB0YWcgOiBWNl92bXB5aWV3aF9hY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aWV3aF9hY2MgOgotSGV4YWdvbl92NTEydjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aWV3aF9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlpZXdoX2FjY18xMjhCLFZJX2Z0eXBlX1ZJVklWSSwzKQotLy8gdGFnIDogVjZfdm1weWlld2hfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aWV3aF9hY2NfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aWV3aF9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWlld3VoX2FjYyxWSV9mdHlwZV9WSVZJVkksMykKLS8vIHRhZyA6IFY2X3ZtcHlpZXd1aF9hY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aWV3dWhfYWNjIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWlld3VoX2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWlld3VoX2FjY18xMjhCLFZJX2Z0eXBlX1ZJVklWSSwzKQotLy8gdGFnIDogVjZfdm1weWlld3VoX2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWlld3VoX2FjY18xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpZXd1aF9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weXViLFZEX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3ZtcHl1YgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1YiA6Ci1IZXhhZ29uX3YxMDI0djUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHl1YiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weXViXzEyOEIsVkRfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfdm1weXViXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5dWJfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWJfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weXViX2FjYyxWRF9mdHlwZV9WRFZJU0ksMykKLS8vIHRhZyA6IFY2X3ZtcHl1Yl9hY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5dWJfYWNjIDoKLUhleGFnb25fdjEwMjR2MTAyNHY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWJfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5dWJfYWNjXzEyOEIsVkRfZnR5cGVfVkRWSVNJLDMpCi0vLyB0YWcgOiBWNl92bXB5dWJfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5dWJfYWNjXzEyOEIgOgotSGV4YWdvbl92MjA0OHYyMDQ4djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWJfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlidXMsVkRfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfdm1weWJ1cwotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlidXMgOgotSGV4YWdvbl92MTAyNHY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5YnVzIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5YnVzXzEyOEIsVkRfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfdm1weWJ1c18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWJ1c18xMjhCIDoKLUhleGFnb25fdjIwNDh2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlidXNfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWJ1c19hY2MsVkRfZnR5cGVfVkRWSVNJLDMpCi0vLyB0YWcgOiBWNl92bXB5YnVzX2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlidXNfYWNjIDoKLUhleGFnb25fdjEwMjR2MTAyNHY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5YnVzX2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWJ1c19hY2NfMTI4QixWRF9mdHlwZV9WRFZJU0ksMykKLS8vIHRhZyA6IFY2X3ZtcHlidXNfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5YnVzX2FjY18xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWJ1c19hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1wYWJ1cyxWRF9mdHlwZV9WRFNJLDIpCi0vLyB0YWcgOiBWNl92bXBhYnVzCi1kZWYgaW50X2hleGFnb25fVjZfdm1wYWJ1cyA6Ci1IZXhhZ29uX3YxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhYnVzIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXBhYnVzXzEyOEIsVkRfZnR5cGVfVkRTSSwyKQotLy8gdGFnIDogVjZfdm1wYWJ1c18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1wYWJ1c18xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGFidXNfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1wYWJ1c19hY2MsVkRfZnR5cGVfVkRWRFNJLDMpCi0vLyB0YWcgOiBWNl92bXBhYnVzX2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGFidXNfYWNjIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYWJ1c19hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcGFidXNfYWNjXzEyOEIsVkRfZnR5cGVfVkRWRFNJLDMpCi0vLyB0YWcgOiBWNl92bXBhYnVzX2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1wYWJ1c19hY2NfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djIwNDh2MjA0OGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGFidXNfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcGFoYixWRF9mdHlwZV9WRFNJLDIpCi0vLyB0YWcgOiBWNl92bXBhaGIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXBhaGIgOgotSGV4YWdvbl92MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYWhiIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXBhaGJfMTI4QixWRF9mdHlwZV9WRFNJLDIpCi0vLyB0YWcgOiBWNl92bXBhaGJfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGFoYl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGFoYl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXBhaGJfYWNjLFZEX2Z0eXBlX1ZEVkRTSSwzKQotLy8gdGFnIDogVjZfdm1wYWhiX2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGFoYl9hY2MgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhaGJfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXBhaGJfYWNjXzEyOEIsVkRfZnR5cGVfVkRWRFNJLDMpCi0vLyB0YWcgOiBWNl92bXBhaGJfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXBhaGJfYWNjXzEyOEIgOgotSGV4YWdvbl92MjA0OHYyMDQ4djIwNDhpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhaGJfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHloLFZEX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3ZtcHloCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWggOgotSGV4YWdvbl92MTAyNHY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWhfMTI4QixWRF9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92bXB5aF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWhfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aHNhdF9hY2MsVkRfZnR5cGVfVkRWSVNJLDMpCi0vLyB0YWcgOiBWNl92bXB5aHNhdF9hY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aHNhdF9hY2MgOgotSGV4YWdvbl92MTAyNHYxMDI0djUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHloc2F0X2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWhzYXRfYWNjXzEyOEIsVkRfZnR5cGVfVkRWSVNJLDMpCi0vLyB0YWcgOiBWNl92bXB5aHNhdF9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHloc2F0X2FjY18xMjhCIDoKLUhleGFnb25fdjIwNDh2MjA0OHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWhzYXRfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHloc3MsVklfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfdm1weWhzcwotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHloc3MgOgotSGV4YWdvbl92NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHloc3MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHloc3NfMTI4QixWSV9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92bXB5aHNzXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aHNzXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWhzc18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aHNycyxWSV9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92bXB5aHNycwotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHloc3JzIDoKLUhleGFnb25fdjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aHNycyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWhzcnNfMTI4QixWSV9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92bXB5aHNyc18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWhzcnNfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aHNyc18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5dWgsVkRfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfdm1weXVoCi1kZWYgaW50X2hleGFnb25fVjZfdm1weXVoIDoKLUhleGFnb25fdjEwMjR2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weXVoIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5dWhfMTI4QixWRF9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92bXB5dWhfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1aF8xMjhCIDoKLUhleGFnb25fdjIwNDh2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHl1aF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5dWhfYWNjLFZEX2Z0eXBlX1ZEVklTSSwzKQotLy8gdGFnIDogVjZfdm1weXVoX2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1aF9hY2MgOgotSGV4YWdvbl92MTAyNHYxMDI0djUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHl1aF9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHl1aF9hY2NfMTI4QixWRF9mdHlwZV9WRFZJU0ksMykKLS8vIHRhZyA6IFY2X3ZtcHl1aF9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1aF9hY2NfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djIwNDh2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHl1aF9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWloYixWSV9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92bXB5aWhiCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWloYiA6Ci1IZXhhZ29uX3Y1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWloYiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWloYl8xMjhCLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3ZtcHlpaGJfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpaGJfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aWhiXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlpaGJfYWNjLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdm1weWloYl9hY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aWhiX2FjYyA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpaGJfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aWhiX2FjY18xMjhCLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdm1weWloYl9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpaGJfYWNjXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aWhiX2FjY18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aXdiLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3ZtcHlpd2IKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aXdiIDoKLUhleGFnb25fdjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aXdiIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aXdiXzEyOEIsVklfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfdm1weWl3Yl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWl3Yl8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpd2JfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWl3Yl9hY2MsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92bXB5aXdiX2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpd2JfYWNjIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWl3Yl9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlpd2JfYWNjXzEyOEIsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92bXB5aXdiX2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWl3Yl9hY2NfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpd2JfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlpd2gsVklfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfdm1weWl3aAotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpd2ggOgotSGV4YWdvbl92NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpd2giPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlpd2hfMTI4QixWSV9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92bXB5aXdoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aXdoXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWl3aF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aXdoX2FjYyxWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZtcHlpd2hfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWl3aF9hY2MgOgotSGV4YWdvbl92NTEydjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aXdoX2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWl3aF9hY2NfMTI4QixWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZtcHlpd2hfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aXdoX2FjY18xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWl3aF9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFuZCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YW5kCi1kZWYgaW50X2hleGFnb25fVjZfdmFuZCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFuZCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFuZF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhbmRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhbmRfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFuZF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92b3IsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm9yCi1kZWYgaW50X2hleGFnb25fVjZfdm9yIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92b3IiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zvcl8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3Zvcl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm9yXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zvcl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92eG9yLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3Z4b3IKLWRlZiBpbnRfaGV4YWdvbl9WNl92eG9yIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92eG9yIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92eG9yXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnhvcl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnhvcl8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92eG9yXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zub3QsVklfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3Zub3QKLWRlZiBpbnRfaGV4YWdvbl9WNl92bm90IDoKLUhleGFnb25fdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zub3QiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zub3RfMTI4QixWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdm5vdF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm5vdF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm5vdF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YW5kcXJ0LFZJX2Z0eXBlX1FWU0ksMikKLS8vIHRhZyA6IFY2X3ZhbmRxcnQKLWRlZiBpbnRfaGV4YWdvbl9WNl92YW5kcXJ0IDoKLUhleGFnb25fdjUxMnY2NGlpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YW5kcXJ0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YW5kcXJ0XzEyOEIsVklfZnR5cGVfUVZTSSwyKQotLy8gdGFnIDogVjZfdmFuZHFydF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFuZHFydF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTI4aWlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmRxcnRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFuZHFydF9hY2MsVklfZnR5cGVfVklRVlNJLDMpCi0vLyB0YWcgOiBWNl92YW5kcXJ0X2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZhbmRxcnRfYWNjIDoKLUhleGFnb25fdjUxMnY1MTJ2NjRpaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFuZHFydF9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhbmRxcnRfYWNjXzEyOEIsVklfZnR5cGVfVklRVlNJLDMpCi0vLyB0YWcgOiBWNl92YW5kcXJ0X2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFuZHFydF9hY2NfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTI4aWlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmRxcnRfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhbmR2cnQsUVZfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfdmFuZHZydAotZGVmIGludF9oZXhhZ29uX1Y2X3ZhbmR2cnQgOgotSGV4YWdvbl92NjRpdjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmR2cnQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhbmR2cnRfMTI4QixRVl9mdHlwZV9WSVNJLDIpCi0vLyB0YWcgOiBWNl92YW5kdnJ0XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YW5kdnJ0XzEyOEIgOgotSGV4YWdvbl92MTI4aXYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFuZHZydF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YW5kdnJ0X2FjYyxRVl9mdHlwZV9RVlZJU0ksMykKLS8vIHRhZyA6IFY2X3ZhbmR2cnRfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdmFuZHZydF9hY2MgOgotSGV4YWdvbl92NjRpdjY0aXY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YW5kdnJ0X2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFuZHZydF9hY2NfMTI4QixRVl9mdHlwZV9RVlZJU0ksMykKLS8vIHRhZyA6IFY2X3ZhbmR2cnRfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YW5kdnJ0X2FjY18xMjhCIDoKLUhleGFnb25fdjEyOGl2MTI4aXYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFuZHZydF9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0dyxRVl9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92Z3R3Ci1kZWYgaW50X2hleGFnb25fVjZfdmd0dyA6Ci1IZXhhZ29uX3Y2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0d18xMjhCLFFWX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZndHdfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndHdfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0d18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Z3R3X2FuZCxRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndHdfYW5kCi1kZWYgaW50X2hleGFnb25fVjZfdmd0d19hbmQgOgotSGV4YWdvbl92NjRpdjY0aXY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R3X2FuZCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0d19hbmRfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndHdfYW5kXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92Z3R3X2FuZF8xMjhCIDoKLUhleGFnb25fdjEyOGl2MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHdfYW5kXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndHdfb3IsUVZfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92Z3R3X29yCi1kZWYgaW50X2hleGFnb25fVjZfdmd0d19vciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHdfb3IiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndHdfb3JfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndHdfb3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndHdfb3JfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R3X29yXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndHdfeG9yLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmd0d194b3IKLWRlZiBpbnRfaGV4YWdvbl9WNl92Z3R3X3hvciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHdfeG9yIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Z3R3X3hvcl8xMjhCLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmd0d194b3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndHdfeG9yXzEyOEIgOgotSGV4YWdvbl92MTI4aXYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0d194b3JfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmVxdyxRVl9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92ZXF3Ci1kZWYgaW50X2hleGFnb25fVjZfdmVxdyA6Ci1IZXhhZ29uX3Y2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxdyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmVxd18xMjhCLFFWX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZlcXdfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZlcXdfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxd18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZXF3X2FuZCxRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZlcXdfYW5kCi1kZWYgaW50X2hleGFnb25fVjZfdmVxd19hbmQgOgotSGV4YWdvbl92NjRpdjY0aXY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZXF3X2FuZCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmVxd19hbmRfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZlcXdfYW5kXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZXF3X2FuZF8xMjhCIDoKLUhleGFnb25fdjEyOGl2MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcXdfYW5kXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZlcXdfb3IsUVZfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92ZXF3X29yCi1kZWYgaW50X2hleGFnb25fVjZfdmVxd19vciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcXdfb3IiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZlcXdfb3JfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZlcXdfb3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZlcXdfb3JfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZXF3X29yXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZlcXdfeG9yLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmVxd194b3IKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZXF3X3hvciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcXdfeG9yIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZXF3X3hvcl8xMjhCLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmVxd194b3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZlcXdfeG9yXzEyOEIgOgotSGV4YWdvbl92MTI4aXYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxd194b3JfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0aCxRVl9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92Z3RoCi1kZWYgaW50X2hleGFnb25fVjZfdmd0aCA6Ci1IZXhhZ29uX3Y2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0aCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0aF8xMjhCLFFWX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZndGhfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndGhfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0aF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Z3RoX2FuZCxRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndGhfYW5kCi1kZWYgaW50X2hleGFnb25fVjZfdmd0aF9hbmQgOgotSGV4YWdvbl92NjRpdjY0aXY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3RoX2FuZCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0aF9hbmRfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndGhfYW5kXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92Z3RoX2FuZF8xMjhCIDoKLUhleGFnb25fdjEyOGl2MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndGhfYW5kXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndGhfb3IsUVZfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92Z3RoX29yCi1kZWYgaW50X2hleGFnb25fVjZfdmd0aF9vciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndGhfb3IiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndGhfb3JfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndGhfb3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndGhfb3JfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3RoX29yXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndGhfeG9yLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmd0aF94b3IKLWRlZiBpbnRfaGV4YWdvbl9WNl92Z3RoX3hvciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndGhfeG9yIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Z3RoX3hvcl8xMjhCLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmd0aF94b3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndGhfeG9yXzEyOEIgOgotSGV4YWdvbl92MTI4aXYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0aF94b3JfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmVxaCxRVl9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92ZXFoCi1kZWYgaW50X2hleGFnb25fVjZfdmVxaCA6Ci1IZXhhZ29uX3Y2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxaCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmVxaF8xMjhCLFFWX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZlcWhfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZlcWhfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxaF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZXFoX2FuZCxRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZlcWhfYW5kCi1kZWYgaW50X2hleGFnb25fVjZfdmVxaF9hbmQgOgotSGV4YWdvbl92NjRpdjY0aXY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZXFoX2FuZCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmVxaF9hbmRfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZlcWhfYW5kXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZXFoX2FuZF8xMjhCIDoKLUhleGFnb25fdjEyOGl2MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcWhfYW5kXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZlcWhfb3IsUVZfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92ZXFoX29yCi1kZWYgaW50X2hleGFnb25fVjZfdmVxaF9vciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcWhfb3IiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZlcWhfb3JfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZlcWhfb3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZlcWhfb3JfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZXFoX29yXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZlcWhfeG9yLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmVxaF94b3IKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZXFoX3hvciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcWhfeG9yIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZXFoX3hvcl8xMjhCLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmVxaF94b3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZlcWhfeG9yXzEyOEIgOgotSGV4YWdvbl92MTI4aXYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxaF94b3JfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0YixRVl9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92Z3RiCi1kZWYgaW50X2hleGFnb25fVjZfdmd0YiA6Ci1IZXhhZ29uX3Y2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0YiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0Yl8xMjhCLFFWX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZndGJfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndGJfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0Yl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Z3RiX2FuZCxRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndGJfYW5kCi1kZWYgaW50X2hleGFnb25fVjZfdmd0Yl9hbmQgOgotSGV4YWdvbl92NjRpdjY0aXY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3RiX2FuZCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0Yl9hbmRfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndGJfYW5kXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92Z3RiX2FuZF8xMjhCIDoKLUhleGFnb25fdjEyOGl2MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndGJfYW5kXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndGJfb3IsUVZfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92Z3RiX29yCi1kZWYgaW50X2hleGFnb25fVjZfdmd0Yl9vciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndGJfb3IiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndGJfb3JfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndGJfb3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndGJfb3JfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3RiX29yXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndGJfeG9yLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmd0Yl94b3IKLWRlZiBpbnRfaGV4YWdvbl9WNl92Z3RiX3hvciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndGJfeG9yIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Z3RiX3hvcl8xMjhCLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmd0Yl94b3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndGJfeG9yXzEyOEIgOgotSGV4YWdvbl92MTI4aXYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0Yl94b3JfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmVxYixRVl9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92ZXFiCi1kZWYgaW50X2hleGFnb25fVjZfdmVxYiA6Ci1IZXhhZ29uX3Y2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxYiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmVxYl8xMjhCLFFWX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZlcWJfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZlcWJfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxYl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZXFiX2FuZCxRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZlcWJfYW5kCi1kZWYgaW50X2hleGFnb25fVjZfdmVxYl9hbmQgOgotSGV4YWdvbl92NjRpdjY0aXY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZXFiX2FuZCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmVxYl9hbmRfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZlcWJfYW5kXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZXFiX2FuZF8xMjhCIDoKLUhleGFnb25fdjEyOGl2MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcWJfYW5kXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZlcWJfb3IsUVZfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92ZXFiX29yCi1kZWYgaW50X2hleGFnb25fVjZfdmVxYl9vciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcWJfb3IiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZlcWJfb3JfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZlcWJfb3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZlcWJfb3JfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZXFiX29yXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZlcWJfeG9yLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmVxYl94b3IKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZXFiX3hvciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcWJfeG9yIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZXFiX3hvcl8xMjhCLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmVxYl94b3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZlcWJfeG9yXzEyOEIgOgotSGV4YWdvbl92MTI4aXYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxYl94b3JfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0dXcsUVZfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmd0dXcKLWRlZiBpbnRfaGV4YWdvbl9WNl92Z3R1dyA6Ci1IZXhhZ29uX3Y2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dXciPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndHV3XzEyOEIsUVZfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmd0dXdfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndHV3XzEyOEIgOgotSGV4YWdvbl92MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHV3XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndHV3X2FuZCxRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndHV3X2FuZAotZGVmIGludF9oZXhhZ29uX1Y2X3ZndHV3X2FuZCA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHV3X2FuZCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0dXdfYW5kXzEyOEIsUVZfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92Z3R1d19hbmRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndHV3X2FuZF8xMjhCIDoKLUhleGFnb25fdjEyOGl2MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHV3X2FuZF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Z3R1d19vcixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndHV3X29yCi1kZWYgaW50X2hleGFnb25fVjZfdmd0dXdfb3IgOgotSGV4YWdvbl92NjRpdjY0aXY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1d19vciI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0dXdfb3JfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndHV3X29yXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92Z3R1d19vcl8xMjhCIDoKLUhleGFnb25fdjEyOGl2MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHV3X29yXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndHV3X3hvcixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndHV3X3hvcgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndHV3X3hvciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHV3X3hvciI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0dXdfeG9yXzEyOEIsUVZfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92Z3R1d194b3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndHV3X3hvcl8xMjhCIDoKLUhleGFnb25fdjEyOGl2MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHV3X3hvcl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Z3R1aCxRVl9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92Z3R1aAotZGVmIGludF9oZXhhZ29uX1Y2X3ZndHVoIDoKLUhleGFnb25fdjY0aXY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1aCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0dWhfMTI4QixRVl9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92Z3R1aF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmd0dWhfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dWhfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0dWhfYW5kLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmd0dWhfYW5kCi1kZWYgaW50X2hleGFnb25fVjZfdmd0dWhfYW5kIDoKLUhleGFnb25fdjY0aXY2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dWhfYW5kIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Z3R1aF9hbmRfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndHVoX2FuZF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmd0dWhfYW5kXzEyOEIgOgotSGV4YWdvbl92MTI4aXYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dWhfYW5kXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndHVoX29yLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmd0dWhfb3IKLWRlZiBpbnRfaGV4YWdvbl9WNl92Z3R1aF9vciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHVoX29yIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Z3R1aF9vcl8xMjhCLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmd0dWhfb3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndHVoX29yXzEyOEIgOgotSGV4YWdvbl92MTI4aXYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dWhfb3JfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0dWhfeG9yLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmd0dWhfeG9yCi1kZWYgaW50X2hleGFnb25fVjZfdmd0dWhfeG9yIDoKLUhleGFnb25fdjY0aXY2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dWhfeG9yIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Z3R1aF94b3JfMTI4QixRVl9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZndHVoX3hvcl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmd0dWhfeG9yXzEyOEIgOgotSGV4YWdvbl92MTI4aXYxMjhpdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dWhfeG9yXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndHViLFFWX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZndHViCi1kZWYgaW50X2hleGFnb25fVjZfdmd0dWIgOgotSGV4YWdvbl92NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHViIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Z3R1Yl8xMjhCLFFWX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZndHViXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92Z3R1Yl8xMjhCIDoKLUhleGFnb25fdjEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1Yl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Z3R1Yl9hbmQsUVZfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92Z3R1Yl9hbmQKLWRlZiBpbnRfaGV4YWdvbl9WNl92Z3R1Yl9hbmQgOgotSGV4YWdvbl92NjRpdjY0aXY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1Yl9hbmQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndHViX2FuZF8xMjhCLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmd0dWJfYW5kXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92Z3R1Yl9hbmRfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1Yl9hbmRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmd0dWJfb3IsUVZfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92Z3R1Yl9vcgotZGVmIGludF9oZXhhZ29uX1Y2X3ZndHViX29yIDoKLUhleGFnb25fdjY0aXY2NGl2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dWJfb3IiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndHViX29yXzEyOEIsUVZfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92Z3R1Yl9vcl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmd0dWJfb3JfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1Yl9vcl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Z3R1Yl94b3IsUVZfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92Z3R1Yl94b3IKLWRlZiBpbnRfaGV4YWdvbl9WNl92Z3R1Yl94b3IgOgotSGV4YWdvbl92NjRpdjY0aXY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1Yl94b3IiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZndHViX3hvcl8xMjhCLFFWX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdmd0dWJfeG9yXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92Z3R1Yl94b3JfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1Yl94b3JfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfcHJlZF9vcixRVl9mdHlwZV9RVlFWLDIpCi0vLyB0YWcgOiBWNl9wcmVkX29yCi1kZWYgaW50X2hleGFnb25fVjZfcHJlZF9vciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjY0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF9vciI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfcHJlZF9vcl8xMjhCLFFWX2Z0eXBlX1FWUVYsMikKLS8vIHRhZyA6IFY2X3ByZWRfb3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ByZWRfb3JfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEyOGl2MTI4aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF9vcl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl9wcmVkX2FuZCxRVl9mdHlwZV9RVlFWLDIpCi0vLyB0YWcgOiBWNl9wcmVkX2FuZAotZGVmIGludF9oZXhhZ29uX1Y2X3ByZWRfYW5kIDoKLUhleGFnb25fdjY0aXY2NGl2NjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9wcmVkX2FuZCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfcHJlZF9hbmRfMTI4QixRVl9mdHlwZV9RVlFWLDIpCi0vLyB0YWcgOiBWNl9wcmVkX2FuZF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfcHJlZF9hbmRfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpdjEyOGl2MTI4aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF9hbmRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfcHJlZF9ub3QsUVZfZnR5cGVfUVYsMSkKLS8vIHRhZyA6IFY2X3ByZWRfbm90Ci1kZWYgaW50X2hleGFnb25fVjZfcHJlZF9ub3QgOgotSGV4YWdvbl92NjRpdjY0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF9ub3QiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ByZWRfbm90XzEyOEIsUVZfZnR5cGVfUVYsMSkKLS8vIHRhZyA6IFY2X3ByZWRfbm90XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl9wcmVkX25vdF8xMjhCIDoKLUhleGFnb25fdjEyOGl2MTI4aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF9ub3RfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfcHJlZF94b3IsUVZfZnR5cGVfUVZRViwyKQotLy8gdGFnIDogVjZfcHJlZF94b3IKLWRlZiBpbnRfaGV4YWdvbl9WNl9wcmVkX3hvciA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjY0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF94b3IiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ByZWRfeG9yXzEyOEIsUVZfZnR5cGVfUVZRViwyKQotLy8gdGFnIDogVjZfcHJlZF94b3JfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ByZWRfeG9yXzEyOEIgOgotSGV4YWdvbl92MTI4aXYxMjhpdjEyOGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ByZWRfeG9yXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ByZWRfYW5kX24sUVZfZnR5cGVfUVZRViwyKQotLy8gdGFnIDogVjZfcHJlZF9hbmRfbgotZGVmIGludF9oZXhhZ29uX1Y2X3ByZWRfYW5kX24gOgotSGV4YWdvbl92NjRpdjY0aXY2NGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ByZWRfYW5kX24iPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ByZWRfYW5kX25fMTI4QixRVl9mdHlwZV9RVlFWLDIpCi0vLyB0YWcgOiBWNl9wcmVkX2FuZF9uXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl9wcmVkX2FuZF9uXzEyOEIgOgotSGV4YWdvbl92MTI4aXYxMjhpdjEyOGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ByZWRfYW5kX25fMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfcHJlZF9vcl9uLFFWX2Z0eXBlX1FWUVYsMikKLS8vIHRhZyA6IFY2X3ByZWRfb3JfbgotZGVmIGludF9oZXhhZ29uX1Y2X3ByZWRfb3JfbiA6Ci1IZXhhZ29uX3Y2NGl2NjRpdjY0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF9vcl9uIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl9wcmVkX29yX25fMTI4QixRVl9mdHlwZV9RVlFWLDIpCi0vLyB0YWcgOiBWNl9wcmVkX29yX25fMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ByZWRfb3Jfbl8xMjhCIDoKLUhleGFnb25fdjEyOGl2MTI4aXYxMjhpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9wcmVkX29yX25fMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfcHJlZF9zY2FsYXIyLFFWX2Z0eXBlX1NJLDEpCi0vLyB0YWcgOiBWNl9wcmVkX3NjYWxhcjIKLWRlZiBpbnRfaGV4YWdvbl9WNl9wcmVkX3NjYWxhcjIgOgotSGV4YWdvbl92NjRpaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF9zY2FsYXIyIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl9wcmVkX3NjYWxhcjJfMTI4QixRVl9mdHlwZV9TSSwxKQotLy8gdGFnIDogVjZfcHJlZF9zY2FsYXIyXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl9wcmVkX3NjYWxhcjJfMTI4QiA6Ci1IZXhhZ29uX3YxMjhpaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF9zY2FsYXIyXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtdXgsVklfZnR5cGVfUVZWSVZJLDMpCi0vLyB0YWcgOiBWNl92bXV4Ci1kZWYgaW50X2hleGFnb25fVjZfdm11eCA6Ci1IZXhhZ29uX3Y1MTJ2NjRpdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtdXgiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtdXhfMTI4QixWSV9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3ZtdXhfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtdXhfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEyOGl2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXV4XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zzd2FwLFZEX2Z0eXBlX1FWVklWSSwzKQotLy8gdGFnIDogVjZfdnN3YXAKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3dhcCA6Ci1IZXhhZ29uX3YxMDI0djY0aXY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3dhcCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN3YXBfMTI4QixWRF9mdHlwZV9RVlZJVkksMykKLS8vIHRhZyA6IFY2X3Zzd2FwXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3dhcF8xMjhCIDoKLUhleGFnb25fdjIwNDh2MTI4aXYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zzd2FwXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtYXh1YixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bWF4dWIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bWF4dWIgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXh1YiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1heHViXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm1heHViXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bWF4dWJfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1heHViXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtaW51YixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bWludWIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bWludWIgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtaW51YiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1pbnViXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm1pbnViXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bWludWJfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1pbnViXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtYXh1aCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bWF4dWgKLWRlZiBpbnRfaGV4YWdvbl9WNl92bWF4dWggOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXh1aCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1heHVoXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm1heHVoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bWF4dWhfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1heHVoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtaW51aCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bWludWgKLWRlZiBpbnRfaGV4YWdvbl9WNl92bWludWggOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtaW51aCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1pbnVoXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm1pbnVoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bWludWhfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1pbnVoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtYXhoLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtYXhoCi1kZWYgaW50X2hleGFnb25fVjZfdm1heGggOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXhoIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bWF4aF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtYXhoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bWF4aF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWF4aF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bWluaCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bWluaAotZGVmIGludF9oZXhhZ29uX1Y2X3ZtaW5oIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWluaCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1pbmhfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bWluaF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1pbmhfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1pbmhfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1heHcsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm1heHcKLWRlZiBpbnRfaGV4YWdvbl9WNl92bWF4dyA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1heHciPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtYXh3XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm1heHdfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtYXh3XzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXh3XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtaW53LFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtaW53Ci1kZWYgaW50X2hleGFnb25fVjZfdm1pbncgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtaW53Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bWlud18xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtaW53XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bWlud18xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWlud18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c2F0aHViLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzYXRodWIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c2F0aHViIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2F0aHViIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c2F0aHViXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnNhdGh1Yl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnNhdGh1Yl8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2F0aHViXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzYXR3aCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c2F0d2gKLWRlZiBpbnRfaGV4YWdvbl9WNl92c2F0d2ggOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzYXR3aCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnNhdHdoXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnNhdHdoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c2F0d2hfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNhdHdoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzaHVmZmViLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzaHVmZmViCi1kZWYgaW50X2hleGFnb25fVjZfdnNodWZmZWIgOgotSGV4YWdvbl92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaHVmZmViIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c2h1ZmZlYl8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzaHVmZmViXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c2h1ZmZlYl8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2h1ZmZlYl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c2h1ZmZvYixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c2h1ZmZvYgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzaHVmZm9iIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2h1ZmZvYiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnNodWZmb2JfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c2h1ZmZvYl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnNodWZmb2JfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNodWZmb2JfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnNodWZlaCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c2h1ZmVoCi1kZWYgaW50X2hleGFnb25fVjZfdnNodWZlaCA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNodWZlaCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnNodWZlaF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzaHVmZWhfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzaHVmZWhfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNodWZlaF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c2h1Zm9oLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzaHVmb2gKLWRlZiBpbnRfaGV4YWdvbl9WNl92c2h1Zm9oIDoKLUhleGFnb25fdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2h1Zm9oIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c2h1Zm9oXzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnNodWZvaF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnNodWZvaF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2h1Zm9oXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzaHVmZnZkZCxWRF9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZzaHVmZnZkZAotZGVmIGludF9oZXhhZ29uX1Y2X3ZzaHVmZnZkZCA6Ci1IZXhhZ29uX3YxMDI0djUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2h1ZmZ2ZGQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzaHVmZnZkZF8xMjhCLFZEX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdnNodWZmdmRkXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c2h1ZmZ2ZGRfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaHVmZnZkZF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZGVhbHZkZCxWRF9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZkZWFsdmRkCi1kZWYgaW50X2hleGFnb25fVjZfdmRlYWx2ZGQgOgotSGV4YWdvbl92MTAyNHY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRlYWx2ZGQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkZWFsdmRkXzEyOEIsVkRfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92ZGVhbHZkZF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmRlYWx2ZGRfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkZWFsdmRkXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzaHVmb2VoLFZEX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzaHVmb2VoCi1kZWYgaW50X2hleGFnb25fVjZfdnNodWZvZWggOgotSGV4YWdvbl92MTAyNHY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2h1Zm9laCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnNodWZvZWhfMTI4QixWRF9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c2h1Zm9laF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnNodWZvZWhfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNodWZvZWhfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnNodWZvZWIsVkRfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnNodWZvZWIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c2h1Zm9lYiA6Ci1IZXhhZ29uX3YxMDI0djUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaHVmb2ViIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c2h1Zm9lYl8xMjhCLFZEX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzaHVmb2ViXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c2h1Zm9lYl8xMjhCIDoKLUhleGFnb25fdjIwNDh2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2h1Zm9lYl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZGVhbGgsVklfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3ZkZWFsaAotZGVmIGludF9oZXhhZ29uX1Y2X3ZkZWFsaCA6Ci1IZXhhZ29uX3Y1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZGVhbGgiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkZWFsaF8xMjhCLFZJX2Z0eXBlX1ZJLDEpCi0vLyB0YWcgOiBWNl92ZGVhbGhfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZkZWFsaF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRlYWxoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkZWFsYixWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdmRlYWxiCi1kZWYgaW50X2hleGFnb25fVjZfdmRlYWxiIDoKLUhleGFnb25fdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkZWFsYiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmRlYWxiXzEyOEIsVklfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3ZkZWFsYl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmRlYWxiXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZGVhbGJfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmRlYWxiNHcsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmRlYWxiNHcKLWRlZiBpbnRfaGV4YWdvbl9WNl92ZGVhbGI0dyA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRlYWxiNHciPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZkZWFsYjR3XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmRlYWxiNHdfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZkZWFsYjR3XzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkZWFsYjR3XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzaHVmZmgsVklfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3ZzaHVmZmgKLWRlZiBpbnRfaGV4YWdvbl9WNl92c2h1ZmZoIDoKLUhleGFnb25fdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaHVmZmgiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzaHVmZmhfMTI4QixWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdnNodWZmaF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnNodWZmaF8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNodWZmaF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c2h1ZmZiLFZJX2Z0eXBlX1ZJLDEpCi0vLyB0YWcgOiBWNl92c2h1ZmZiCi1kZWYgaW50X2hleGFnb25fVjZfdnNodWZmYiA6Ci1IZXhhZ29uX3Y1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2h1ZmZiIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c2h1ZmZiXzEyOEIsVklfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3ZzaHVmZmJfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzaHVmZmJfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaHVmZmJfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfZXh0cmFjdHcsU0lfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfZXh0cmFjdHcKLWRlZiBpbnRfaGV4YWdvbl9WNl9leHRyYWN0dyA6Ci1IZXhhZ29uX2l2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfZXh0cmFjdHciPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X2V4dHJhY3R3XzEyOEIsU0lfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfZXh0cmFjdHdfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X2V4dHJhY3R3XzEyOEIgOgotSGV4YWdvbl9pdjEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9leHRyYWN0d18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92aW5zZXJ0d3IsVklfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfdmluc2VydHdyCi1kZWYgaW50X2hleGFnb25fVjZfdmluc2VydHdyIDoKLUhleGFnb25fdjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92aW5zZXJ0d3IiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZpbnNlcnR3cl8xMjhCLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3ZpbnNlcnR3cl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmluc2VydHdyXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmluc2VydHdyXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X2x2c3BsYXR3LFZJX2Z0eXBlX1NJLDEpCi0vLyB0YWcgOiBWNl9sdnNwbGF0dwotZGVmIGludF9oZXhhZ29uX1Y2X2x2c3BsYXR3IDoKLUhleGFnb25fdjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X2x2c3BsYXR3Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl9sdnNwbGF0d18xMjhCLFZJX2Z0eXBlX1NJLDEpCi0vLyB0YWcgOiBWNl9sdnNwbGF0d18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfbHZzcGxhdHdfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbHZzcGxhdHdfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzc2lnbixWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdmFzc2lnbgotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3NpZ24gOgotSGV4YWdvbl92NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzc2lnbiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzc2lnbl8xMjhCLFZJX2Z0eXBlX1ZJLDEpCi0vLyB0YWcgOiBWNl92YXNzaWduXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNzaWduXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNzaWduXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zjb21iaW5lLFZEX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3Zjb21iaW5lCi1kZWYgaW50X2hleGFnb25fVjZfdmNvbWJpbmUgOgotSGV4YWdvbl92MTAyNHY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Y29tYmluZSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmNvbWJpbmVfMTI4QixWRF9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92Y29tYmluZV8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmNvbWJpbmVfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmNvbWJpbmVfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmRlbHRhLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZkZWx0YQotZGVmIGludF9oZXhhZ29uX1Y2X3ZkZWx0YSA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRlbHRhIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZGVsdGFfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92ZGVsdGFfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZkZWx0YV8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZGVsdGFfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJkZWx0YSxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92cmRlbHRhCi1kZWYgaW50X2hleGFnb25fVjZfdnJkZWx0YSA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJkZWx0YSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJkZWx0YV8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZyZGVsdGFfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZyZGVsdGFfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJkZWx0YV8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Y2wwdyxWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdmNsMHcKLWRlZiBpbnRfaGV4YWdvbl9WNl92Y2wwdyA6Ci1IZXhhZ29uX3Y1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Y2wwdyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmNsMHdfMTI4QixWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdmNsMHdfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZjbDB3XzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Y2wwd18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92Y2wwaCxWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdmNsMGgKLWRlZiBpbnRfaGV4YWdvbl9WNl92Y2wwaCA6Ci1IZXhhZ29uX3Y1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Y2wwaCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmNsMGhfMTI4QixWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdmNsMGhfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZjbDBoXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Y2wwaF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bm9ybWFtdHcsVklfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3Zub3JtYW10dwotZGVmIGludF9oZXhhZ29uX1Y2X3Zub3JtYW10dyA6Ci1IZXhhZ29uX3Y1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bm9ybWFtdHciPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zub3JtYW10d18xMjhCLFZJX2Z0eXBlX1ZJLDEpCi0vLyB0YWcgOiBWNl92bm9ybWFtdHdfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zub3JtYW10d18xMjhCIDoKLUhleGFnb25fdjEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm5vcm1hbXR3XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zub3JtYW10aCxWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdm5vcm1hbXRoCi1kZWYgaW50X2hleGFnb25fVjZfdm5vcm1hbXRoIDoKLUhleGFnb25fdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zub3JtYW10aCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm5vcm1hbXRoXzEyOEIsVklfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3Zub3JtYW10aF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm5vcm1hbXRoXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bm9ybWFtdGhfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnBvcGNvdW50aCxWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdnBvcGNvdW50aAotZGVmIGludF9oZXhhZ29uX1Y2X3Zwb3Bjb3VudGggOgotSGV4YWdvbl92NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBvcGNvdW50aCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnBvcGNvdW50aF8xMjhCLFZJX2Z0eXBlX1ZJLDEpCi0vLyB0YWcgOiBWNl92cG9wY291bnRoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cG9wY291bnRoXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cG9wY291bnRoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZsdXR2dmIsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92bHV0dnZiCi1kZWYgaW50X2hleGFnb25fVjZfdmx1dHZ2YiA6Ci1IZXhhZ29uX3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2dmIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZsdXR2dmJfMTI4QixWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZsdXR2dmJfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2dmJfMTI4QiA6Ci1IZXhhZ29uX3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2dmJfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmx1dHZ2Yl9vcmFjYyxWSV9mdHlwZV9WSVZJVklTSSw0KQotLy8gdGFnIDogVjZfdmx1dHZ2Yl9vcmFjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2dmJfb3JhY2MgOgotSGV4YWdvbl92NTEydjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ2Yl9vcmFjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmx1dHZ2Yl9vcmFjY18xMjhCLFZJX2Z0eXBlX1ZJVklWSVNJLDQpCi0vLyB0YWcgOiBWNl92bHV0dnZiX29yYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bHV0dnZiX29yYWNjXzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2dmJfb3JhY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmx1dHZ3aCxWRF9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZsdXR2d2gKLWRlZiBpbnRfaGV4YWdvbl9WNl92bHV0dndoIDoKLUhleGFnb25fdjEwMjR2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2d2giPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZsdXR2d2hfMTI4QixWRF9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZsdXR2d2hfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2d2hfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2d2hfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmx1dHZ3aF9vcmFjYyxWRF9mdHlwZV9WRFZJVklTSSw0KQotLy8gdGFnIDogVjZfdmx1dHZ3aF9vcmFjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2d2hfb3JhY2MgOgotSGV4YWdvbl92MTAyNHYxMDI0djUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHV0dndoX29yYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bHV0dndoX29yYWNjXzEyOEIsVkRfZnR5cGVfVkRWSVZJU0ksNCkKLS8vIHRhZyA6IFY2X3ZsdXR2d2hfb3JhY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2d2hfb3JhY2NfMTI4QiA6Ci1IZXhhZ29uX3YyMDQ4djIwNDh2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ3aF9vcmFjY18xMjhCIj47Ci0KLS8vCi0vLyBNYXNrZWQgdmVjdG9yIHN0b3JlcwotLy8KLWRlZiBpbnRfaGV4YWdvbl9WNl92UzMyYl9xcHJlZF9haSA6Ci1IZXhhZ29uX3Z2NjRpdm1lbXY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZTMzJiX3FwcmVkX2FpIj47Ci0KLWRlZiBpbnRfaGV4YWdvbl9WNl92UzMyYl9ucXByZWRfYWkgOgotSGV4YWdvbl92djY0aXZtZW12NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92UzMyYl9ucXByZWRfYWkiPjsKLQotZGVmIGludF9oZXhhZ29uX1Y2X3ZTMzJiX250X3FwcmVkX2FpIDoKLUhleGFnb25fdnY2NGl2bWVtdjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdlMzMmJfbnRfcXByZWRfYWkiPjsKLQotZGVmIGludF9oZXhhZ29uX1Y2X3ZTMzJiX250X25xcHJlZF9haSA6Ci1IZXhhZ29uX3Z2NjRpdm1lbXY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZTMzJiX250X25xcHJlZF9haSI+OwotCi1kZWYgaW50X2hleGFnb25fVjZfdlMzMmJfcXByZWRfYWlfMTI4QiA6Ci1IZXhhZ29uX3Z2MTI4aXZtZW12MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdlMzMmJfcXByZWRfYWlfMTI4QiI+OwotCi1kZWYgaW50X2hleGFnb25fVjZfdlMzMmJfbnFwcmVkX2FpXzEyOEIgOgotSGV4YWdvbl92djEyOGl2bWVtdjEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZTMzJiX25xcHJlZF9haV8xMjhCIj47Ci0KLWRlZiBpbnRfaGV4YWdvbl9WNl92UzMyYl9udF9xcHJlZF9haV8xMjhCIDoKLUhleGFnb25fdnYxMjhpdm1lbXYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92UzMyYl9udF9xcHJlZF9haV8xMjhCIj47Ci0KLWRlZiBpbnRfaGV4YWdvbl9WNl92UzMyYl9udF9ucXByZWRfYWlfMTI4QiA6Ci1IZXhhZ29uX3Z2MTI4aXZtZW12MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdlMzMmJfbnRfbnFwcmVkX2FpXzEyOEIiPjsKLQotZGVmIGludF9oZXhhZ29uX1Y2X3ZtYXNrZWRzdG9yZXEgOgotSGV4YWdvbl92djY0aXZtZW12NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWFza2Vkc3RvcmVxIj47Ci0KLWRlZiBpbnRfaGV4YWdvbl9WNl92bWFza2Vkc3RvcmVucSA6Ci1IZXhhZ29uX3Z2NjRpdm1lbXY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZW5xIj47Ci0KLWRlZiBpbnRfaGV4YWdvbl9WNl92bWFza2Vkc3RvcmVudHEgOgotSGV4YWdvbl92djY0aXZtZW12NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWFza2Vkc3RvcmVudHEiPjsKLQotZGVmIGludF9oZXhhZ29uX1Y2X3ZtYXNrZWRzdG9yZW50bnEgOgotSGV4YWdvbl92djY0aXZtZW12NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWFza2Vkc3RvcmVudG5xIj47Ci0KLWRlZiBpbnRfaGV4YWdvbl9WNl92bWFza2Vkc3RvcmVxXzEyOEIgOgotSGV4YWdvbl92djEyOGl2bWVtdjEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZXFfMTI4QiI+OwotCi1kZWYgaW50X2hleGFnb25fVjZfdm1hc2tlZHN0b3JlbnFfMTI4QiA6Ci1IZXhhZ29uX3Z2MTI4aXZtZW12MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1hc2tlZHN0b3JlbnFfMTI4QiI+OwotCi1kZWYgaW50X2hleGFnb25fVjZfdm1hc2tlZHN0b3JlbnRxXzEyOEIgOgotSGV4YWdvbl92djEyOGl2bWVtdjEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZW50cV8xMjhCIj47Ci0KLWRlZiBpbnRfaGV4YWdvbl9WNl92bWFza2Vkc3RvcmVudG5xXzEyOEIgOgotSGV4YWdvbl92djEyOGl2bWVtdjEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZW50bnFfMTI4QiI+OworZGVmIGludF9oZXhhZ29uX3ZtZW1zZXQgOiBIZXhhZ29uX0ludHJpbnNpYzwiaGV4YWdvbl92bWVtc2V0IiwKKyAgICBbXSwgW2xsdm1fcHRyX3R5LCBsbHZtX2kzMl90eSwgbGx2bV9pMzJfdHldLAorICAgIFtJbnRyQXJnTWVtT25seSwgTm9DYXB0dXJlPDA+LCBXcml0ZU9ubHk8MD5dPjsKIAogbXVsdGljbGFzcyBIZXhhZ29uX2N1c3RvbV9jaXJjX2xkX0ludHJpbnNpYzxMTFZNVHlwZSBFbFR5PiB7CiAgIGRlZiBOQU1FI19wY2kgOiBIZXhhZ29uX05vbkdDQ19JbnRyaW5zaWM8CkBAIC05MzAxLDE0MjQgKzIyMSw3NCBAQAogZGVmIGludF9oZXhhZ29uX1MyX3N0b3JlcmlfcGJyIDogSGV4YWdvbl9tZW1fbWVtc2lzaV9JbnRyaW5zaWM8ImJyZXZfc3R3Ij47CiBkZWYgaW50X2hleGFnb25fUzJfc3RvcmVyZF9wYnIgOiBIZXhhZ29uX21lbV9tZW1kaXNpX0ludHJpbnNpYzwiYnJldl9zdGQiPjsKIAotCi0vLy8KLS8vLyBIZXhhZ29uVjYyIGludHJpbnNpY3MKLS8vLworLy8KKy8vIE1hc2tlZCB2ZWN0b3Igc3RvcmVzCisvLwogCiAvLwotLy8gSGV4YWdvbl9MTGlMTGlMTGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBNNl92YWJzZGlmZmIKLWNsYXNzIEhleGFnb25fTExpTExpTExpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorLy8gSGV4YWdvbl92djY0aXZtZW12NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorLy8gdGFnOiBWNl92UzMyYl9xcHJlZF9haQorY2xhc3MgSGV4YWdvbl92djY0aXZtZW12NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgogIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pNjRfdHldLCBbbGx2bV9pNjRfdHksbGx2bV9pNjRfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLCBbbGx2bV92NTEyaTFfdHksbGx2bV9wdHJfdHksbGx2bV92MTZpMzJfdHldLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKIAogLy8KLS8vIEhleGFnb25fTExpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFM2X3ZzcGxhdHJicAotY2xhc3MgSGV4YWdvbl9MTGlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorLy8gSGV4YWdvbl92djEyOGl2bWVtdjEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisvLyB0YWc6IFY2X3ZTMzJiX3FwcmVkX2FpXzEyOEIKK2NsYXNzIEhleGFnb25fdnYxMjhpdm1lbXYxMDI0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgogIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pNjRfdHldLCBbbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47CisgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLCBbbGx2bV92MTAyNGkxX3R5LGxsdm1fcHRyX3R5LGxsdm1fdjMyaTMyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CiAKLS8vCi0vLyBIZXhhZ29uX1Y2Ml92NTEydjUxMmlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92bHNyYgotY2xhc3MgSGV4YWdvbl9WNjJfdjUxMnY1MTJpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92MTZpMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47CitkZWYgaW50X2hleGFnb25fVjZfdlMzMmJfcXByZWRfYWkgOgorSGV4YWdvbl92djY0aXZtZW12NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92UzMyYl9xcHJlZF9haSI+OwogCi0vLwotLy8gSGV4YWdvbl9WNjJfdjEwMjR2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92bHNyYl8xMjhCCi1jbGFzcyBIZXhhZ29uX1Y2Ml92MTAyNHYxMDI0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OworZGVmIGludF9oZXhhZ29uX1Y2X3ZTMzJiX25xcHJlZF9haSA6CitIZXhhZ29uX3Z2NjRpdm1lbXY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZTMzJiX25xcHJlZF9haSI+OwogCi0vLwotLy8gSGV4YWdvbl9WNjJfdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3Zhc3J3dWhybmRzYXQKLWNsYXNzIEhleGFnb25fVjYyX3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKK2RlZiBpbnRfaGV4YWdvbl9WNl92UzMyYl9udF9xcHJlZF9haSA6CitIZXhhZ29uX3Z2NjRpdm1lbXY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZTMzJiX250X3FwcmVkX2FpIj47CiAKLS8vCi0vLyBIZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmFzcnd1aHJuZHNhdF8xMjhCCi1jbGFzcyBIZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47CitkZWYgaW50X2hleGFnb25fVjZfdlMzMmJfbnRfbnFwcmVkX2FpIDoKK0hleGFnb25fdnY2NGl2bWVtdjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdlMzMmJfbnRfbnFwcmVkX2FpIj47CiAKLS8vCi0vLyBIZXhhZ29uX1Y2Ml92NTEydjUxMnY1MTJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92cm91bmR1d3VoCi1jbGFzcyBIZXhhZ29uX1Y2Ml92NTEydjUxMnY1MTJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKK2RlZiBpbnRfaGV4YWdvbl9WNl92UzMyYl9xcHJlZF9haV8xMjhCIDoKK0hleGFnb25fdnYxMjhpdm1lbXYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92UzMyYl9xcHJlZF9haV8xMjhCIj47CiAKLS8vCi0vLyBIZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92cm91bmR1d3VoXzEyOEIKLWNsYXNzIEhleGFnb25fVjYyX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1fdjMyaTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OworZGVmIGludF9oZXhhZ29uX1Y2X3ZTMzJiX25xcHJlZF9haV8xMjhCIDoKK0hleGFnb25fdnYxMjhpdm1lbXYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92UzMyYl9ucXByZWRfYWlfMTI4QiI+OwogCi0vLwotLy8gSGV4YWdvbl9WNjJfdjIwNDh2MjA0OHYyMDQ4X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmFkZHV3c2F0X2R2XzEyOEIKLWNsYXNzIEhleGFnb25fVjYyX3YyMDQ4djIwNDh2MjA0OF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjY0aTMyX3R5LGxsdm1fdjY0aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OworZGVmIGludF9oZXhhZ29uX1Y2X3ZTMzJiX250X3FwcmVkX2FpXzEyOEIgOgorSGV4YWdvbl92djEyOGl2bWVtdjEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZTMzJiX250X3FwcmVkX2FpXzEyOEIiPjsKIAotLy8KLS8vIEhleGFnb25fVjYyX3YxMDI0djEwMjR2NTEydjUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhZGRod19hY2MKLWNsYXNzIEhleGFnb25fVjYyX3YxMDI0djEwMjR2NTEydjUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1fdjE2aTMyX3R5LGxsdm1fdjE2aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OworZGVmIGludF9oZXhhZ29uX1Y2X3ZTMzJiX250X25xcHJlZF9haV8xMjhCIDoKK0hleGFnb25fdnYxMjhpdm1lbXYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92UzMyYl9udF9ucXByZWRfYWlfMTI4QiI+OwogCi0vLwotLy8gSGV4YWdvbl9WNjJfdjIwNDh2MjA0OHYxMDI0djEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92YWRkaHdfYWNjXzEyOEIKLWNsYXNzIEhleGFnb25fVjYyX3YyMDQ4djIwNDh2MTAyNHYxMDI0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92NjRpMzJfdHldLCBbbGx2bV92NjRpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47CitkZWYgaW50X2hleGFnb25fVjZfdm1hc2tlZHN0b3JlcSA6CitIZXhhZ29uX3Z2NjRpdm1lbXY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZXEiPjsKIAotLy8KLS8vIEhleGFnb25fVjYyX3YxMDI0djUxMnY1MTJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92bXB5ZXd1aF82NAotY2xhc3MgSGV4YWdvbl9WNjJfdjEwMjR2NTEydjUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1fdjE2aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OworZGVmIGludF9oZXhhZ29uX1Y2X3ZtYXNrZWRzdG9yZW5xIDoKK0hleGFnb25fdnY2NGl2bWVtdjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1hc2tlZHN0b3JlbnEiPjsKIAotLy8KLS8vIEhleGFnb25fVjYyX3YyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZtcHlld3VoXzY0XzEyOEIKLWNsYXNzIEhleGFnb25fVjYyX3YyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1fdjMyaTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OworZGVmIGludF9oZXhhZ29uX1Y2X3ZtYXNrZWRzdG9yZW50cSA6CitIZXhhZ29uX3Z2NjRpdm1lbXY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZW50cSI+OwogCi0vLwotLy8gSGV4YWdvbl9WNjJfdjIwNDh2MjA0OGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92bXBhdWhiXzEyOEIKLWNsYXNzIEhleGFnb25fVjYyX3YyMDQ4djIwNDhpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92NjRpMzJfdHldLCBbbGx2bV92NjRpMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47CitkZWYgaW50X2hleGFnb25fVjZfdm1hc2tlZHN0b3JlbnRucSA6CitIZXhhZ29uX3Z2NjRpdm1lbXY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZW50bnEiPjsKIAotLy8KLS8vIEhleGFnb25fVjYyX3YyMDQ4djIwNDh2MjA0OGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92bXBhdWhiX2FjY18xMjhCCi1jbGFzcyBIZXhhZ29uX1Y2Ml92MjA0OHYyMDQ4djIwNDhpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92NjRpMzJfdHldLCBbbGx2bV92NjRpMzJfdHksbGx2bV92NjRpMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47CitkZWYgaW50X2hleGFnb25fVjZfdm1hc2tlZHN0b3JlcV8xMjhCIDoKK0hleGFnb25fdnYxMjhpdm1lbXYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWFza2Vkc3RvcmVxXzEyOEIiPjsKIAotLy8KLS8vIEhleGFnb25fVjYyX3Y1MTJ2NjRpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhbmRucXJ0Ci1jbGFzcyBIZXhhZ29uX1Y2Ml92NTEydjY0aWlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3Y1MTJpMV90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKK2RlZiBpbnRfaGV4YWdvbl9WNl92bWFza2Vkc3RvcmVucV8xMjhCIDoKK0hleGFnb25fdnYxMjhpdm1lbXYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWFza2Vkc3RvcmVucV8xMjhCIj47CiAKLS8vCi0vLyBIZXhhZ29uX1Y2Ml92MTAyNHYxMjhpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhbmRucXJ0XzEyOEIKLWNsYXNzIEhleGFnb25fVjYyX3YxMDI0djEyOGlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MTAyNGkxX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OworZGVmIGludF9oZXhhZ29uX1Y2X3ZtYXNrZWRzdG9yZW50cV8xMjhCIDoKK0hleGFnb25fdnYxMjhpdm1lbXYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWFza2Vkc3RvcmVudHFfMTI4QiI+OwogCi0vLwotLy8gSGV4YWdvbl9WNjJfdjUxMnY1MTJ2NjRpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhbmRucXJ0X2FjYwotY2xhc3MgSGV4YWdvbl9WNjJfdjUxMnY1MTJ2NjRpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1fdjUxMmkxX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl9WNjJfdjEwMjR2MTAyNHYxMjhpaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhbmRucXJ0X2FjY18xMjhCCi1jbGFzcyBIZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djEyOGlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MTAyNGkxX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl9WNjJfdjUxMnY2NGl2NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmFuZHZxdgotY2xhc3MgSGV4YWdvbl9WNjJfdjUxMnY2NGl2NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92NTEyaTFfdHksbGx2bV92MTZpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2Ml92MTAyNHYxMjhpdjEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92YW5kdnF2XzEyOEIKLWNsYXNzIEhleGFnb25fVjYyX3YxMDI0djEyOGl2MTAyNF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjEwMjRpMV90eSxsbHZtX3YzMmkzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fVjYyX3Y2NGlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfcHJlZF9zY2FsYXIydjIKLWNsYXNzIEhleGFnb25fVjYyX3Y2NGlpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92NTEyaTFfdHldLCBbbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2Ml92MTI4aWlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl9wcmVkX3NjYWxhcjJ2Ml8xMjhCCi1jbGFzcyBIZXhhZ29uX1Y2Ml92MTI4aWlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YxMDI0aTFfdHldLCBbbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2Ml92NjRpdjY0aXY2NGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl9zaHVmZmVxdwotY2xhc3MgSGV4YWdvbl9WNjJfdjY0aXY2NGl2NjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92NTEyaTFfdHldLCBbbGx2bV92NTEyaTFfdHksbGx2bV92NTEyaTFfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2Ml92MTI4aXYxMjhpdjEyOGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl9zaHVmZmVxd18xMjhCCi1jbGFzcyBIZXhhZ29uX1Y2Ml92MTI4aXYxMjhpdjEyOGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YxMDI0aTFfdHldLCBbbGx2bV92MTAyNGkxX3R5LGxsdm1fdjEwMjRpMV90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fVjYyX3Y1MTJpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfbHZzcGxhdGgKLWNsYXNzIEhleGFnb25fVjYyX3Y1MTJpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2Ml92MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl9sdnNwbGF0aF8xMjhCCi1jbGFzcyBIZXhhZ29uX1Y2Ml92MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fVjYyX3Y1MTJ2NTEydjUxMnY1MTJpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmx1dHZ2Yl9vcmFjY2kKLWNsYXNzIEhleGFnb25fVjYyX3Y1MTJ2NTEydjUxMnY1MTJpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92bHV0dnZiX29yYWNjaV8xMjhCCi1jbGFzcyBIZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fVjYyX3YxMDI0djUxMnY1MTJpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmx1dHZ3aGkKLWNsYXNzIEhleGFnb25fVjYyX3YxMDI0djUxMnY1MTJpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2Ml92MjA0OHYxMDI0djEwMjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdmx1dHZ3aGlfMTI4QgotY2xhc3MgSGV4YWdvbl9WNjJfdjIwNDh2MTAyNHYxMDI0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1fdjMyaTMyX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl9WNjJfdjEwMjR2MTAyNHY1MTJ2NTEyaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZsdXR2d2hfb3JhY2NpCi1jbGFzcyBIZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djUxMnY1MTJpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2Ml92MjA0OHYyMDQ4djEwMjR2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92bHV0dndoX29yYWNjaV8xMjhCCi1jbGFzcyBIZXhhZ29uX1Y2Ml92MjA0OHYyMDQ4djEwMjR2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3Y2NGkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8gSGV4YWdvbl92NTEydjY0aXY1MTJ2NTEydjY0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZzogVjZfdmFkZGNhcnJ5Ci1jbGFzcyBIZXhhZ29uX3Y1MTJ2NjRpdjUxMnY1MTJ2NjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjE2aTMyX3R5LCBsbHZtX3Y1MTJpMV90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eSxsbHZtX3Y1MTJpMV90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8gSGV4YWdvbl92MTAyNHYxMjhpdjEwMjR2MTAyNHYxMjhpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnOiBWNl92YWRkY2FycnlfMTI4QgotY2xhc3MgSGV4YWdvbl92MTAyNHYxMjhpdjEwMjR2MTAyNHYxMjhpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjMyaTMyX3R5LCBsbHZtX3YxMDI0aTFfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV92MTAyNGkxX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5NNl92YWJzZGlmZmIsRElfZnR5cGVfRElESSwyKQotLy8gdGFnIDogTTZfdmFic2RpZmZiCi1kZWYgaW50X2hleGFnb25fTTZfdmFic2RpZmZiIDoKLUhleGFnb25fTExpTExpTExpX0ludHJpbnNpYzwiSEVYQUdPTl9NNl92YWJzZGlmZmIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLk02X3ZhYnNkaWZmdWIsRElfZnR5cGVfRElESSwyKQotLy8gdGFnIDogTTZfdmFic2RpZmZ1YgotZGVmIGludF9oZXhhZ29uX002X3ZhYnNkaWZmdWIgOgotSGV4YWdvbl9MTGlMTGlMTGlfSW50cmluc2ljPCJIRVhBR09OX002X3ZhYnNkaWZmdWIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlM2X3Z0cnVuZWhiX3BwcCxESV9mdHlwZV9ESURJLDIpCi0vLyB0YWcgOiBTNl92dHJ1bmVoYl9wcHAKLWRlZiBpbnRfaGV4YWdvbl9TNl92dHJ1bmVoYl9wcHAgOgotSGV4YWdvbl9MTGlMTGlMTGlfSW50cmluc2ljPCJIRVhBR09OX1M2X3Z0cnVuZWhiX3BwcCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uUzZfdnRydW5vaGJfcHBwLERJX2Z0eXBlX0RJREksMikKLS8vIHRhZyA6IFM2X3Z0cnVub2hiX3BwcAotZGVmIGludF9oZXhhZ29uX1M2X3Z0cnVub2hiX3BwcCA6Ci1IZXhhZ29uX0xMaUxMaUxMaV9JbnRyaW5zaWM8IkhFWEFHT05fUzZfdnRydW5vaGJfcHBwIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5TNl92c3BsYXRyYnAsRElfZnR5cGVfU0ksMSkKLS8vIHRhZyA6IFM2X3ZzcGxhdHJicAotZGVmIGludF9oZXhhZ29uX1M2X3ZzcGxhdHJicCA6Ci1IZXhhZ29uX0xMaWlfSW50cmluc2ljPCJIRVhBR09OX1M2X3ZzcGxhdHJicCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmxzcmIsVklfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfdmxzcmIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bHNyYiA6Ci1IZXhhZ29uX1Y2Ml92NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zsc3JiIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bHNyYl8xMjhCLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3Zsc3JiXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bHNyYl8xMjhCIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHNyYl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXNyd3Vocm5kc2F0LFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmFzcnd1aHJuZHNhdAotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J3dWhybmRzYXQgOgotSGV4YWdvbl9WNjJfdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcnd1aHJuZHNhdCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzcnd1aHJuZHNhdF8xMjhCLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmFzcnd1aHJuZHNhdF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFzcnd1aHJuZHNhdF8xMjhCIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J3dWhybmRzYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzcnV3dWhybmRzYXQsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92YXNydXd1aHJuZHNhdAotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J1d3Vocm5kc2F0IDoKLUhleGFnb25fVjYyX3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J1d3Vocm5kc2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXNydXd1aHJuZHNhdF8xMjhCLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmFzcnV3dWhybmRzYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J1d3Vocm5kc2F0XzEyOEIgOgotSGV4YWdvbl9WNjJfdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcnV3dWhybmRzYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzcmhic2F0LFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmFzcmhic2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdmFzcmhic2F0IDoKLUhleGFnb25fVjYyX3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3JoYnNhdCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFzcmhic2F0XzEyOEIsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92YXNyaGJzYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3JoYnNhdF8xMjhCIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3JoYnNhdF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm91bmR1d3VoLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3Zyb3VuZHV3dWgKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm91bmR1d3VoIDoKLUhleGFnb25fVjYyX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJvdW5kdXd1aCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJvdW5kdXd1aF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3Zyb3VuZHV3dWhfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zyb3VuZHV3dWhfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zyb3VuZHV3dWhfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJvdW5kdWh1YixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92cm91bmR1aHViCi1kZWYgaW50X2hleGFnb25fVjZfdnJvdW5kdWh1YiA6Ci1IZXhhZ29uX1Y2Ml92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zyb3VuZHVodWIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zyb3VuZHVodWJfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92cm91bmR1aHViXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm91bmR1aHViXzEyOEIgOgotSGV4YWdvbl9WNjJfdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm91bmR1aHViXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGR1d3NhdCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YWRkdXdzYXQKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkdXdzYXQgOgotSGV4YWdvbl9WNjJfdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdXdzYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGR1d3NhdF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhZGR1d3NhdF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFkZHV3c2F0XzEyOEIgOgotSGV4YWdvbl9WNjJfdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdXdzYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZHV3c2F0X2R2LFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZhZGR1d3NhdF9kdgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1d3NhdF9kdiA6Ci1IZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR1d3NhdF9kdiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZHV3c2F0X2R2XzEyOEIsVkRfZnR5cGVfVkRWRCwyKQotLy8gdGFnIDogVjZfdmFkZHV3c2F0X2R2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkdXdzYXRfZHZfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MjA0OHYyMDQ4djIwNDhfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR1d3NhdF9kdl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3VidXdzYXQsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnN1YnV3c2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdnN1YnV3c2F0IDoKLUhleGFnb25fVjYyX3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnV3c2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3VidXdzYXRfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c3VidXdzYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1d3NhdF8xMjhCIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnV3c2F0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJ1d3NhdF9kdixWRF9mdHlwZV9WRFZELDIpCi0vLyB0YWcgOiBWNl92c3VidXdzYXRfZHYKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3VidXdzYXRfZHYgOgotSGV4YWdvbl9WNjJfdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3VidXdzYXRfZHYiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJ1d3NhdF9kdl8xMjhCLFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZzdWJ1d3NhdF9kdl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnN1YnV3c2F0X2R2XzEyOEIgOgotSGV4YWdvbl9WNjJfdjIwNDh2MjA0OHYyMDQ4X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3VidXdzYXRfZHZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZGJzYXQsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFkZGJzYXQKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkYnNhdCA6Ci1IZXhhZ29uX1Y2Ml92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRic2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkYnNhdF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhZGRic2F0XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkYnNhdF8xMjhCIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGJzYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZGJzYXRfZHYsVkRfZnR5cGVfVkRWRCwyKQotLy8gdGFnIDogVjZfdmFkZGJzYXRfZHYKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkYnNhdF9kdiA6Ci1IZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRic2F0X2R2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkYnNhdF9kdl8xMjhCLFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZhZGRic2F0X2R2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkYnNhdF9kdl8xMjhCIDoKLUhleGFnb25fVjYyX3YyMDQ4djIwNDh2MjA0OF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGJzYXRfZHZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YmJzYXQsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnN1YmJzYXQKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3ViYnNhdCA6Ci1IZXhhZ29uX1Y2Ml92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJic2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3ViYnNhdF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzdWJic2F0XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3ViYnNhdF8xMjhCIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmJzYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YmJzYXRfZHYsVkRfZnR5cGVfVkRWRCwyKQotLy8gdGFnIDogVjZfdnN1YmJzYXRfZHYKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3ViYnNhdF9kdiA6Ci1IZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJic2F0X2R2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3ViYnNhdF9kdl8xMjhCLFZEX2Z0eXBlX1ZEVkQsMikKLS8vIHRhZyA6IFY2X3ZzdWJic2F0X2R2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92c3ViYnNhdF9kdl8xMjhCIDoKLUhleGFnb25fVjYyX3YyMDQ4djIwNDh2MjA0OF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmJzYXRfZHZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZHVidWJiX3NhdCxWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YWRkdWJ1YmJfc2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdmFkZHVidWJiX3NhdCA6Ci1IZXhhZ29uX1Y2Ml92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR1YnViYl9zYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGR1YnViYl9zYXRfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YWRkdWJ1YmJfc2F0XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkdWJ1YmJfc2F0XzEyOEIgOgotSGV4YWdvbl9WNjJfdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdWJ1YmJfc2F0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJ1YnViYl9zYXQsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnN1YnVidWJiX3NhdAotZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1YnViYl9zYXQgOgotSGV4YWdvbl9WNjJfdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3VidWJ1YmJfc2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92c3VidWJ1YmJfc2F0XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdnN1YnVidWJiX3NhdF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnN1YnVidWJiX3NhdF8xMjhCIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnVidWJiX3NhdF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkaHdfYWNjLFZEX2Z0eXBlX1ZEVklWSSwzKQotLy8gdGFnIDogVjZfdmFkZGh3X2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRod19hY2MgOgotSGV4YWdvbl9WNjJfdjEwMjR2MTAyNHY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkaHdfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkaHdfYWNjXzEyOEIsVkRfZnR5cGVfVkRWSVZJLDMpCi0vLyB0YWcgOiBWNl92YWRkaHdfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkaHdfYWNjXzEyOEIgOgotSGV4YWdvbl9WNjJfdjIwNDh2MjA0OHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRod19hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZHVod19hY2MsVkRfZnR5cGVfVkRWSVZJLDMpCi0vLyB0YWcgOiBWNl92YWRkdWh3X2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1aHdfYWNjIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjR2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHVod19hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGR1aHdfYWNjXzEyOEIsVkRfZnR5cGVfVkRWSVZJLDMpCi0vLyB0YWcgOiBWNl92YWRkdWh3X2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFkZHVod19hY2NfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MjA0OHYyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHVod19hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZHViaF9hY2MsVkRfZnR5cGVfVkRWSVZJLDMpCi0vLyB0YWcgOiBWNl92YWRkdWJoX2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1YmhfYWNjIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjR2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHViaF9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGR1YmhfYWNjXzEyOEIsVkRfZnR5cGVfVkRWSVZJLDMpCi0vLyB0YWcgOiBWNl92YWRkdWJoX2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFkZHViaF9hY2NfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MjA0OHYyMDQ4djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHViaF9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWV3dWhfNjQsVkRfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdm1weWV3dWhfNjQKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5ZXd1aF82NCA6Ci1IZXhhZ29uX1Y2Ml92MTAyNHY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5ZXd1aF82NCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWV3dWhfNjRfMTI4QixWRF9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bXB5ZXd1aF82NF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWV3dWhfNjRfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MjA0OHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlld3VoXzY0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHlvd2hfNjRfYWNjLFZEX2Z0eXBlX1ZEVklWSSwzKQotLy8gdGFnIDogVjZfdm1weW93aF82NF9hY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5b3doXzY0X2FjYyA6Ci1IZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlvd2hfNjRfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5b3doXzY0X2FjY18xMjhCLFZEX2Z0eXBlX1ZEVklWSSwzKQotLy8gdGFnIDogVjZfdm1weW93aF82NF9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlvd2hfNjRfYWNjXzEyOEIgOgotSGV4YWdvbl9WNjJfdjIwNDh2MjA0OHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlvd2hfNjRfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcGF1aGIsVkRfZnR5cGVfVkRTSSwyKQotLy8gdGFnIDogVjZfdm1wYXVoYgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGF1aGIgOgotSGV4YWdvbl9WNjJfdjEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGF1aGIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcGF1aGJfMTI4QixWRF9mdHlwZV9WRFNJLDIpCi0vLyB0YWcgOiBWNl92bXBhdWhiXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXBhdWhiXzEyOEIgOgotSGV4YWdvbl9WNjJfdjIwNDh2MjA0OGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGF1aGJfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1wYXVoYl9hY2MsVkRfZnR5cGVfVkRWRFNJLDMpCi0vLyB0YWcgOiBWNl92bXBhdWhiX2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGF1aGJfYWNjIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGF1aGJfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXBhdWhiX2FjY18xMjhCLFZEX2Z0eXBlX1ZEVkRTSSwzKQotLy8gdGFnIDogVjZfdm1wYXVoYl9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGF1aGJfYWNjXzEyOEIgOgotSGV4YWdvbl9WNjJfdjIwNDh2MjA0OHYyMDQ4aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYXVoYl9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weWl3dWIsVklfZnR5cGVfVklTSSwyKQotLy8gdGFnIDogVjZfdm1weWl3dWIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aXd1YiA6Ci1IZXhhZ29uX1Y2Ml92NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpd3ViIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aXd1Yl8xMjhCLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3ZtcHlpd3ViXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aXd1Yl8xMjhCIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aXd1Yl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aXd1Yl9hY2MsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92bXB5aXd1Yl9hY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aXd1Yl9hY2MgOgotSGV4YWdvbl9WNjJfdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWl3dWJfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aXd1Yl9hY2NfMTI4QixWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZtcHlpd3ViX2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1weWl3dWJfYWNjXzEyOEIgOgotSGV4YWdvbl9WNjJfdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWl3dWJfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhbmRucXJ0LFZJX2Z0eXBlX1FWU0ksMikKLS8vIHRhZyA6IFY2X3ZhbmRucXJ0Ci1kZWYgaW50X2hleGFnb25fVjZfdmFuZG5xcnQgOgotSGV4YWdvbl9WNjJfdjUxMnY2NGlpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YW5kbnFydCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFuZG5xcnRfMTI4QixWSV9mdHlwZV9RVlNJLDIpCi0vLyB0YWcgOiBWNl92YW5kbnFydF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFuZG5xcnRfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MTAyNHYxMjhpaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFuZG5xcnRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFuZG5xcnRfYWNjLFZJX2Z0eXBlX1ZJUVZTSSwzKQotLy8gdGFnIDogVjZfdmFuZG5xcnRfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdmFuZG5xcnRfYWNjIDoKLUhleGFnb25fVjYyX3Y1MTJ2NTEydjY0aWlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmRucXJ0X2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFuZG5xcnRfYWNjXzEyOEIsVklfZnR5cGVfVklRVlNJLDMpCi0vLyB0YWcgOiBWNl92YW5kbnFydF9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhbmRucXJ0X2FjY18xMjhCIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjR2MTI4aWlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmRucXJ0X2FjY18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YW5kdnF2LFZJX2Z0eXBlX1FWVkksMikKLS8vIHRhZyA6IFY2X3ZhbmR2cXYKLWRlZiBpbnRfaGV4YWdvbl9WNl92YW5kdnF2IDoKLUhleGFnb25fVjYyX3Y1MTJ2NjRpdjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFuZHZxdiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFuZHZxdl8xMjhCLFZJX2Z0eXBlX1FWVkksMikKLS8vIHRhZyA6IFY2X3ZhbmR2cXZfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhbmR2cXZfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MTAyNHYxMjhpdjEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmR2cXZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFuZHZucXYsVklfZnR5cGVfUVZWSSwyKQotLy8gdGFnIDogVjZfdmFuZHZucXYKLWRlZiBpbnRfaGV4YWdvbl9WNl92YW5kdm5xdiA6Ci1IZXhhZ29uX1Y2Ml92NTEydjY0aXY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmR2bnF2Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YW5kdm5xdl8xMjhCLFZJX2Z0eXBlX1FWVkksMikKLS8vIHRhZyA6IFY2X3ZhbmR2bnF2XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YW5kdm5xdl8xMjhCIDoKLUhleGFnb25fVjYyX3YxMDI0djEyOGl2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFuZHZucXZfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfcHJlZF9zY2FsYXIydjIsUVZfZnR5cGVfU0ksMSkKLS8vIHRhZyA6IFY2X3ByZWRfc2NhbGFyMnYyCi1kZWYgaW50X2hleGFnb25fVjZfcHJlZF9zY2FsYXIydjIgOgotSGV4YWdvbl9WNjJfdjY0aWlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ByZWRfc2NhbGFyMnYyIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl9wcmVkX3NjYWxhcjJ2Ml8xMjhCLFFWX2Z0eXBlX1NJLDEpCi0vLyB0YWcgOiBWNl9wcmVkX3NjYWxhcjJ2Ml8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfcHJlZF9zY2FsYXIydjJfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MTI4aWlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ByZWRfc2NhbGFyMnYyXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3NodWZmZXF3LFFWX2Z0eXBlX1FWUVYsMikKLS8vIHRhZyA6IFY2X3NodWZmZXF3Ci1kZWYgaW50X2hleGFnb25fVjZfc2h1ZmZlcXcgOgotSGV4YWdvbl9WNjJfdjY0aXY2NGl2NjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9zaHVmZmVxdyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfc2h1ZmZlcXdfMTI4QixRVl9mdHlwZV9RVlFWLDIpCi0vLyB0YWcgOiBWNl9zaHVmZmVxd18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfc2h1ZmZlcXdfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MTI4aXYxMjhpdjEyOGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3NodWZmZXF3XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3NodWZmZXFoLFFWX2Z0eXBlX1FWUVYsMikKLS8vIHRhZyA6IFY2X3NodWZmZXFoCi1kZWYgaW50X2hleGFnb25fVjZfc2h1ZmZlcWggOgotSGV4YWdvbl9WNjJfdjY0aXY2NGl2NjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9zaHVmZmVxaCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfc2h1ZmZlcWhfMTI4QixRVl9mdHlwZV9RVlFWLDIpCi0vLyB0YWcgOiBWNl9zaHVmZmVxaF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfc2h1ZmZlcWhfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MTI4aXYxMjhpdjEyOGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3NodWZmZXFoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtYXhiLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtYXhiCi1kZWYgaW50X2hleGFnb25fVjZfdm1heGIgOgotSGV4YWdvbl9WNjJfdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWF4YiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1heGJfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bWF4Yl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1heGJfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXhiXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtaW5iLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZtaW5iCi1kZWYgaW50X2hleGFnb25fVjZfdm1pbmIgOgotSGV4YWdvbl9WNjJfdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWluYiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1pbmJfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bWluYl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1pbmJfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtaW5iXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzYXR1d3VoLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZzYXR1d3VoCi1kZWYgaW50X2hleGFnb25fVjZfdnNhdHV3dWggOgotSGV4YWdvbl9WNjJfdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2F0dXd1aCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnNhdHV3dWhfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92c2F0dXd1aF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnNhdHV3dWhfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzYXR1d3VoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X2x2c3BsYXRoLFZJX2Z0eXBlX1NJLDEpCi0vLyB0YWcgOiBWNl9sdnNwbGF0aAotZGVmIGludF9oZXhhZ29uX1Y2X2x2c3BsYXRoIDoKLUhleGFnb25fVjYyX3Y1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9sdnNwbGF0aCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfbHZzcGxhdGhfMTI4QixWSV9mdHlwZV9TSSwxKQotLy8gdGFnIDogVjZfbHZzcGxhdGhfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X2x2c3BsYXRoXzEyOEIgOgotSGV4YWdvbl9WNjJfdjEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9sdnNwbGF0aF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl9sdnNwbGF0YixWSV9mdHlwZV9TSSwxKQotLy8gdGFnIDogVjZfbHZzcGxhdGIKLWRlZiBpbnRfaGV4YWdvbl9WNl9sdnNwbGF0YiA6Ci1IZXhhZ29uX1Y2Ml92NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbHZzcGxhdGIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X2x2c3BsYXRiXzEyOEIsVklfZnR5cGVfU0ksMSkKLS8vIHRhZyA6IFY2X2x2c3BsYXRiXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl9sdnNwbGF0Yl8xMjhCIDoKLUhleGFnb25fVjYyX3YxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbHZzcGxhdGJfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZGNsYncsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFkZGNsYncKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkY2xidyA6Ci1IZXhhZ29uX1Y2Ml92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRjbGJ3Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkY2xid18xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhZGRjbGJ3XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkY2xid18xMjhCIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGNsYndfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFkZGNsYmgsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmFkZGNsYmgKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkY2xiaCA6Ci1IZXhhZ29uX1Y2Ml92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRjbGJoIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkY2xiaF8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhZGRjbGJoXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWRkY2xiaF8xMjhCIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGNsYmhfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmx1dHZ2YmksVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92bHV0dnZiaQotZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2dmJpIDoKLUhleGFnb25fVjYyX3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2dmJpIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bHV0dnZiaV8xMjhCLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmx1dHZ2YmlfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2dmJpXzEyOEIgOgotSGV4YWdvbl9WNjJfdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ2YmlfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmx1dHZ2Yl9vcmFjY2ksVklfZnR5cGVfVklWSVZJU0ksNCkKLS8vIHRhZyA6IFY2X3ZsdXR2dmJfb3JhY2NpCi1kZWYgaW50X2hleGFnb25fVjZfdmx1dHZ2Yl9vcmFjY2kgOgotSGV4YWdvbl9WNjJfdjUxMnY1MTJ2NTEydjUxMmlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2dmJfb3JhY2NpIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bHV0dnZiX29yYWNjaV8xMjhCLFZJX2Z0eXBlX1ZJVklWSVNJLDQpCi0vLyB0YWcgOiBWNl92bHV0dnZiX29yYWNjaV8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmx1dHZ2Yl9vcmFjY2lfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2dmJfb3JhY2NpXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZsdXR2d2hpLFZEX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmx1dHZ3aGkKLWRlZiBpbnRfaGV4YWdvbl9WNl92bHV0dndoaSA6Ci1IZXhhZ29uX1Y2Ml92MTAyNHY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ3aGkiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZsdXR2d2hpXzEyOEIsVkRfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92bHV0dndoaV8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmx1dHZ3aGlfMTI4QiA6Ci1IZXhhZ29uX1Y2Ml92MjA0OHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHV0dndoaV8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bHV0dndoX29yYWNjaSxWRF9mdHlwZV9WRFZJVklTSSw0KQotLy8gdGFnIDogVjZfdmx1dHZ3aF9vcmFjY2kKLWRlZiBpbnRfaGV4YWdvbl9WNl92bHV0dndoX29yYWNjaSA6Ci1IZXhhZ29uX1Y2Ml92MTAyNHYxMDI0djUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHV0dndoX29yYWNjaSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmx1dHZ3aF9vcmFjY2lfMTI4QixWRF9mdHlwZV9WRFZJVklTSSw0KQotLy8gdGFnIDogVjZfdmx1dHZ3aF9vcmFjY2lfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2d2hfb3JhY2NpXzEyOEIgOgotSGV4YWdvbl9WNjJfdjIwNDh2MjA0OHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHV0dndoX29yYWNjaV8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bHV0dnZiX25tLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmx1dHZ2Yl9ubQotZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2dmJfbm0gOgotSGV4YWdvbl9WNjJfdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ2Yl9ubSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmx1dHZ2Yl9ubV8xMjhCLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmx1dHZ2Yl9ubV8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmx1dHZ2Yl9ubV8xMjhCIDoKLUhleGFnb25fVjYyX3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2dmJfbm1fMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmx1dHZ3aF9ubSxWRF9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZsdXR2d2hfbm0KLWRlZiBpbnRfaGV4YWdvbl9WNl92bHV0dndoX25tIDoKLUhleGFnb25fVjYyX3YxMDI0djUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHV0dndoX25tIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bHV0dndoX25tXzEyOEIsVkRfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92bHV0dndoX25tXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bHV0dndoX25tXzEyOEIgOgotSGV4YWdvbl9WNjJfdjIwNDh2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ3aF9ubV8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWRkY2FycnksVklfZnR5cGVfVklWSVFWLDMpCi0vLyB0YWc6IFY2X3ZhZGRjYXJyeQotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRjYXJyeSA6Ci1IZXhhZ29uX3Y1MTJ2NjRpdjUxMnY1MTJ2NjRpX0ludHJpbnNpYzwiSEVYQUdPTl92Nl92YWRkY2FycnkiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhZGRjYXJyeV8xMjhCLFZJX2Z0eXBlX1ZJVklRViwzKQotLy8gdGFnOiBWNl92YWRkY2FycnlfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRjYXJyeV8xMjhCIDoKLUhleGFnb25fdjEwMjR2MTI4aXYxMDI0djEwMjR2MTI4aV9JbnRyaW5zaWM8IkhFWEFHT05fdjZfdmFkZGNhcnJ5XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZzdWJjYXJyeSxWSV9mdHlwZV9WSVZJUVYsMykKLS8vIHRhZzogVjZfdnN1YmNhcnJ5Ci1kZWYgaW50X2hleGFnb25fVjZfdnN1YmNhcnJ5IDoKLUhleGFnb25fdjUxMnY2NGl2NTEydjUxMnY2NGlfSW50cmluc2ljPCJIRVhBR09OX3Y2X3ZzdWJjYXJyeSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnN1YmNhcnJ5XzEyOEIsVklfZnR5cGVfVklWSVFWLDMpCi0vLyB0YWc6IFY2X3ZzdWJjYXJyeV8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnN1YmNhcnJ5XzEyOEIgOgotSGV4YWdvbl92MTAyNHYxMjhpdjEwMjR2MTAyNHYxMjhpX0ludHJpbnNpYzwiSEVYQUdPTl92Nl92c3ViY2FycnlfMTI4QiI+OwotCi0KLS8vLwotLy8vIEhleGFnb25WNjUgaW50cmluc2ljcwotLy8vCi0KLS8vCi0vLyBIZXhhZ29uX1Y2NV9pTExpTExpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogQTZfdmNtcGJlcV9ub3RhbnkKLWNsYXNzIEhleGFnb25fVjY1X2lMTGlMTGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2k2NF90eSxsbHZtX2k2NF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fVjY1X3YxMDI0djUxMkxMaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZybXB5dWJfcnR0Ci1jbGFzcyBIZXhhZ29uX1Y2NV92MTAyNHY1MTJMTGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX2k2NF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fVjY1X3YyMDQ4djEwMjRMTGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92cm1weXViX3J0dF8xMjhCCi1jbGFzcyBIZXhhZ29uX1Y2NV92MjA0OHYxMDI0TExpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92NjRpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV9pNjRfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2NV92MTAyNHYxMDI0djUxMkxMaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZybXB5dWJfcnR0X2FjYwotY2xhc3MgSGV4YWdvbl9WNjVfdjEwMjR2MTAyNHY1MTJMTGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YxNmkzMl90eSxsbHZtX2k2NF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fVjY1X3YyMDQ4djIwNDh2MTAyNExMaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZybXB5dWJfcnR0X2FjY18xMjhCCi1jbGFzcyBIZXhhZ29uX1Y2NV92MjA0OHYyMDQ4djEwMjRMTGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3Y2NGkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX2k2NF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fVjY1X3Y1MTJ2NTEydjUxMmlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92YXNydXd1aHNhdAotY2xhc3MgSGV4YWdvbl9WNjVfdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1fdjE2aTMyX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl9WNjVfdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3Zhc3J1d3Voc2F0XzEyOEIKLWNsYXNzIEhleGFnb25fVjY1X3YxMDI0djEwMjR2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fVjY1X3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3Zhdmd1dwotY2xhc3MgSGV4YWdvbl9WNjVfdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2NV92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92YXZndXdfMTI4QgotY2xhc3MgSGV4YWdvbl9WNjVfdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2NV92NTEydjUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhYnNiCi1jbGFzcyBIZXhhZ29uX1Y2NV92NTEydjUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl9WNjVfdjEwMjR2MTAyNF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZhYnNiXzEyOEIKLWNsYXNzIEhleGFnb25fVjY1X3YxMDI0djEwMjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fVjY1X3YxMDI0djEwMjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdm1wYWJ1dQotY2xhc3MgSGV4YWdvbl9WNjVfdjEwMjR2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fVjY1X3YyMDQ4djIwNDhpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdm1wYWJ1dV8xMjhCCi1jbGFzcyBIZXhhZ29uX1Y2NV92MjA0OHYyMDQ4aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjY0aTMyX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl9WNjVfdjIwNDh2MjA0OHYyMDQ4aV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZtcGFidXVfYWNjXzEyOEIKLWNsYXNzIEhleGFnb25fVjY1X3YyMDQ4djIwNDh2MjA0OGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3Y2NGkzMl90eSxsbHZtX3Y2NGkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fVjY1X3YxMDI0djEwMjR2NTEyaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZtcHloX2FjYwotY2xhc3MgSGV4YWdvbl9WNjVfdjEwMjR2MTAyNHY1MTJpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MTZpMzJfdHksbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2NV92MjA0OHYyMDQ4djEwMjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdm1weWhfYWNjXzEyOEIKLWNsYXNzIEhleGFnb25fVjY1X3YyMDQ4djIwNDh2MTAyNGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3Y2NGkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fVjY1X3Y1MTJ2NTEydjUxMkxMaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZtcGFoaHNhdAotY2xhc3MgSGV4YWdvbl9WNjVfdjUxMnY1MTJ2NTEyTExpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHksbGx2bV9pNjRfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2NV92MTAyNHYxMDI0djEwMjRMTGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92bXBhaGhzYXRfMTI4QgotY2xhc3MgSGV4YWdvbl9WNjVfdjEwMjR2MTAyNHYxMDI0TExpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV9pNjRfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2NV92NTEydjUxMkxMaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZsdXQ0Ci1jbGFzcyBIZXhhZ29uX1Y2NV92NTEydjUxMkxMaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1faTY0X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl9WNjVfdjEwMjR2MTAyNExMaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZsdXQ0XzEyOEIKLWNsYXNzIEhleGFnb25fVjY1X3YxMDI0djEwMjRMTGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX2k2NF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotLy8KLS8vIEhleGFnb25fVjY1X3Y1MTJ2NTEyaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLS8vIHRhZyA6IFY2X3ZtcHl1aGUKLWNsYXNzIEhleGFnb25fVjY1X3Y1MTJ2NTEyaV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KLSA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotCi0vLwotLy8gSGV4YWdvbl9WNjVfdjUxMnY2NGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0vLyB0YWcgOiBWNl92cHJlZml4cWIKLWNsYXNzIEhleGFnb25fVjY1X3Y1MTJ2NjRpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92NTEyaTFfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBIZXhhZ29uX1Y2NV92MTAyNHYxMjhpX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgotLy8gdGFnIDogVjZfdnByZWZpeHFiXzEyOEIKLWNsYXNzIEhleGFnb25fVjY1X3YxMDI0djEyOGlfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+Ci0gOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YxMDI0aTFfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BNl92Y21wYmVxX25vdGFueSxRSV9mdHlwZV9ESURJLDIpCi0vLyB0YWcgOiBBNl92Y21wYmVxX25vdGFueQotZGVmIGludF9oZXhhZ29uX0E2X3ZjbXBiZXFfbm90YW55IDoKLUhleGFnb25fVjY1X2lMTGlMTGlfSW50cmluc2ljPCJIRVhBR09OX0E2X3ZjbXBiZXFfbm90YW55Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5BNl92Y21wYmVxX25vdGFueV8xMjhCLFFJX2Z0eXBlX0RJREksMikKLS8vIHRhZyA6IEE2X3ZjbXBiZXFfbm90YW55XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9BNl92Y21wYmVxX25vdGFueV8xMjhCIDoKLUhleGFnb25fVjY1X2lMTGlMTGlfSW50cmluc2ljPCJIRVhBR09OX0E2X3ZjbXBiZXFfbm90YW55XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZybXB5dWJfcnR0LFZEX2Z0eXBlX1ZJREksMikKLS8vIHRhZyA6IFY2X3ZybXB5dWJfcnR0Ci1kZWYgaW50X2hleGFnb25fVjZfdnJtcHl1Yl9ydHQgOgotSGV4YWdvbl9WNjVfdjEwMjR2NTEyTExpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weXViX3J0dCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJtcHl1Yl9ydHRfMTI4QixWRF9mdHlwZV9WSURJLDIpCi0vLyB0YWcgOiBWNl92cm1weXViX3J0dF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnJtcHl1Yl9ydHRfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MjA0OHYxMDI0TExpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weXViX3J0dF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cm1weXViX3J0dF9hY2MsVkRfZnR5cGVfVkRWSURJLDMpCi0vLyB0YWcgOiBWNl92cm1weXViX3J0dF9hY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm1weXViX3J0dF9hY2MgOgotSGV4YWdvbl9WNjVfdjEwMjR2MTAyNHY1MTJMTGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5dWJfcnR0X2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJtcHl1Yl9ydHRfYWNjXzEyOEIsVkRfZnR5cGVfVkRWSURJLDMpCi0vLyB0YWcgOiBWNl92cm1weXViX3J0dF9hY2NfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5dWJfcnR0X2FjY18xMjhCIDoKLUhleGFnb25fVjY1X3YyMDQ4djIwNDh2MTAyNExMaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHl1Yl9ydHRfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZybXB5YnViX3J0dCxWRF9mdHlwZV9WSURJLDIpCi0vLyB0YWcgOiBWNl92cm1weWJ1Yl9ydHQKLWRlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ1Yl9ydHQgOgotSGV4YWdvbl9WNjVfdjEwMjR2NTEyTExpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ1Yl9ydHQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZybXB5YnViX3J0dF8xMjhCLFZEX2Z0eXBlX1ZJREksMikKLS8vIHRhZyA6IFY2X3ZybXB5YnViX3J0dF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnJtcHlidWJfcnR0XzEyOEIgOgotSGV4YWdvbl9WNjVfdjIwNDh2MTAyNExMaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidWJfcnR0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZybXB5YnViX3J0dF9hY2MsVkRfZnR5cGVfVkRWSURJLDMpCi0vLyB0YWcgOiBWNl92cm1weWJ1Yl9ydHRfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdnJtcHlidWJfcnR0X2FjYyA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0djUxMkxMaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidWJfcnR0X2FjYyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnJtcHlidWJfcnR0X2FjY18xMjhCLFZEX2Z0eXBlX1ZEVklESSwzKQotLy8gdGFnIDogVjZfdnJtcHlidWJfcnR0X2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnJtcHlidWJfcnR0X2FjY18xMjhCIDoKLUhleGFnb25fVjY1X3YyMDQ4djIwNDh2MTAyNExMaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidWJfcnR0X2FjY18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXNydXd1aHNhdCxWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3Zhc3J1d3Voc2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdmFzcnV3dWhzYXQgOgotSGV4YWdvbl9WNjVfdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcnV3dWhzYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3J1d3Voc2F0XzEyOEIsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92YXNydXd1aHNhdF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFzcnV3dWhzYXRfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNydXd1aHNhdF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXNydWh1YnNhdCxWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3Zhc3J1aHVic2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdmFzcnVodWJzYXQgOgotSGV4YWdvbl9WNjVfdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcnVodWJzYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3J1aHVic2F0XzEyOEIsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92YXNydWh1YnNhdF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFzcnVodWJzYXRfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNydWh1YnNhdF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXNydWh1YnJuZHNhdCxWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3Zhc3J1aHVicm5kc2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdmFzcnVodWJybmRzYXQgOgotSGV4YWdvbl9WNjVfdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcnVodWJybmRzYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3J1aHVicm5kc2F0XzEyOEIsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92YXNydWh1YnJuZHNhdF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFzcnVodWJybmRzYXRfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNydWh1YnJuZHNhdF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXNsaF9hY2MsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92YXNsaF9hY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNsaF9hY2MgOgotSGV4YWdvbl9WNjVfdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzbGhfYWNjIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXNsaF9hY2NfMTI4QixWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3Zhc2xoX2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFzbGhfYWNjXzEyOEIgOgotSGV4YWdvbl9WNjVfdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzbGhfYWNjXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3JoX2FjYyxWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3Zhc3JoX2FjYwotZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3JoX2FjYyA6Ci1IZXhhZ29uX1Y2NV92NTEydjUxMnY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyaF9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhc3JoX2FjY18xMjhCLFZJX2Z0eXBlX1ZJVklTSSwzKQotLy8gdGFnIDogVjZfdmFzcmhfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXNyaF9hY2NfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyaF9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmF2Z3V3LFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3Zhdmd1dwotZGVmIGludF9oZXhhZ29uX1Y2X3Zhdmd1dyA6Ci1IZXhhZ29uX1Y2NV92NTEydjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmd1dyI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmF2Z3V3XzEyOEIsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmF2Z3V3XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YXZndXdfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmd1d18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXZndXdybmQsVklfZnR5cGVfVklWSSwyKQotLy8gdGFnIDogVjZfdmF2Z3V3cm5kCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z3V3cm5kIDoKLUhleGFnb25fVjY1X3Y1MTJ2NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmF2Z3V3cm5kIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YXZndXdybmRfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YXZndXdybmRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3Zhdmd1d3JuZF8xMjhCIDoKLUhleGFnb25fVjY1X3YxMDI0djEwMjR2MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmF2Z3V3cm5kXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZhdmdiLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZhdmdiCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z2IgOgotSGV4YWdvbl9WNjVfdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZnYiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmF2Z2JfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YXZnYl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z2JfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhdmdiXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3Zhdmdicm5kLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3Zhdmdicm5kCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z2JybmQgOgotSGV4YWdvbl9WNjVfdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZnYnJuZCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmF2Z2JybmRfMTI4QixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92YXZnYnJuZF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmF2Z2JybmRfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmdicm5kXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZuYXZnYixWSV9mdHlwZV9WSVZJLDIpCi0vLyB0YWcgOiBWNl92bmF2Z2IKLWRlZiBpbnRfaGV4YWdvbl9WNl92bmF2Z2IgOgotSGV4YWdvbl9WNjVfdjUxMnY1MTJ2NTEyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bmF2Z2IiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZuYXZnYl8xMjhCLFZJX2Z0eXBlX1ZJVkksMikKLS8vIHRhZyA6IFY2X3ZuYXZnYl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm5hdmdiXzEyOEIgOgotSGV4YWdvbl9WNjVfdjEwMjR2MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bmF2Z2JfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmFic2IsVklfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3ZhYnNiCi1kZWYgaW50X2hleGFnb25fVjZfdmFic2IgOgotSGV4YWdvbl9WNjVfdjUxMnY1MTJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhYnNiIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWJzYl8xMjhCLFZJX2Z0eXBlX1ZJLDEpCi0vLyB0YWcgOiBWNl92YWJzYl8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmFic2JfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzYl8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWJzYl9zYXQsVklfZnR5cGVfVkksMSkKLS8vIHRhZyA6IFY2X3ZhYnNiX3NhdAotZGVmIGludF9oZXhhZ29uX1Y2X3ZhYnNiX3NhdCA6Ci1IZXhhZ29uX1Y2NV92NTEydjUxMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFic2Jfc2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92YWJzYl9zYXRfMTI4QixWSV9mdHlwZV9WSSwxKQotLy8gdGFnIDogVjZfdmFic2Jfc2F0XzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92YWJzYl9zYXRfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzYl9zYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1wYWJ1dSxWRF9mdHlwZV9WRFNJLDIpCi0vLyB0YWcgOiBWNl92bXBhYnV1Ci1kZWYgaW50X2hleGFnb25fVjZfdm1wYWJ1dSA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYWJ1dSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1wYWJ1dV8xMjhCLFZEX2Z0eXBlX1ZEU0ksMikKLS8vIHRhZyA6IFY2X3ZtcGFidXVfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGFidXVfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MjA0OHYyMDQ4aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYWJ1dV8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXBhYnV1X2FjYyxWRF9mdHlwZV9WRFZEU0ksMykKLS8vIHRhZyA6IFY2X3ZtcGFidXVfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdm1wYWJ1dV9hY2MgOgotSGV4YWdvbl9WNjVfdjEwMjR2MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYWJ1dV9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcGFidXVfYWNjXzEyOEIsVkRfZnR5cGVfVkRWRFNJLDMpCi0vLyB0YWcgOiBWNl92bXBhYnV1X2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1wYWJ1dV9hY2NfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MjA0OHYyMDQ4djIwNDhpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhYnV1X2FjY18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5aF9hY2MsVkRfZnR5cGVfVkRWSVNJLDMpCi0vLyB0YWcgOiBWNl92bXB5aF9hY2MKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aF9hY2MgOgotSGV4YWdvbl9WNjVfdjEwMjR2MTAyNHY1MTJpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aF9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHloX2FjY18xMjhCLFZEX2Z0eXBlX1ZEVklTSSwzKQotLy8gdGFnIDogVjZfdm1weWhfYWNjXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5aF9hY2NfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MjA0OHYyMDQ4djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aF9hY2NfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1wYWhoc2F0LFZJX2Z0eXBlX1ZJVklESSwzKQotLy8gdGFnIDogVjZfdm1wYWhoc2F0Ci1kZWYgaW50X2hleGFnb25fVjZfdm1wYWhoc2F0IDoKLUhleGFnb25fVjY1X3Y1MTJ2NTEydjUxMkxMaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYWhoc2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXBhaGhzYXRfMTI4QixWSV9mdHlwZV9WSVZJREksMykKLS8vIHRhZyA6IFY2X3ZtcGFoaHNhdF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1wYWhoc2F0XzEyOEIgOgotSGV4YWdvbl9WNjVfdjEwMjR2MTAyNHYxMDI0TExpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhaGhzYXRfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1wYXVodWhzYXQsVklfZnR5cGVfVklWSURJLDMpCi0vLyB0YWcgOiBWNl92bXBhdWh1aHNhdAotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGF1aHVoc2F0IDoKLUhleGFnb25fVjY1X3Y1MTJ2NTEydjUxMkxMaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYXVodWhzYXQiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcGF1aHVoc2F0XzEyOEIsVklfZnR5cGVfVklWSURJLDMpCi0vLyB0YWcgOiBWNl92bXBhdWh1aHNhdF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1wYXVodWhzYXRfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0djEwMjRMTGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGF1aHVoc2F0XzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHN1aHVoc2F0LFZJX2Z0eXBlX1ZJVklESSwzKQotLy8gdGFnIDogVjZfdm1wc3VodWhzYXQKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXBzdWh1aHNhdCA6Ci1IZXhhZ29uX1Y2NV92NTEydjUxMnY1MTJMTGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHN1aHVoc2F0Ij47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXBzdWh1aHNhdF8xMjhCLFZJX2Z0eXBlX1ZJVklESSwzKQotLy8gdGFnIDogVjZfdm1wc3VodWhzYXRfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHN1aHVoc2F0XzEyOEIgOgotSGV4YWdvbl9WNjVfdjEwMjR2MTAyNHYxMDI0TExpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBzdWh1aHNhdF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bHV0NCxWSV9mdHlwZV9WSURJLDIpCi0vLyB0YWcgOiBWNl92bHV0NAotZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXQ0IDoKLUhleGFnb25fVjY1X3Y1MTJ2NTEyTExpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHV0NCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmx1dDRfMTI4QixWSV9mdHlwZV9WSURJLDIpCi0vLyB0YWcgOiBWNl92bHV0NF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdmx1dDRfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0TExpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHV0NF8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5dWhlLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3ZtcHl1aGUKLWRlZiBpbnRfaGV4YWdvbl9WNl92bXB5dWhlIDoKLUhleGFnb25fVjY1X3Y1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weXVoZSI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdm1weXVoZV8xMjhCLFZJX2Z0eXBlX1ZJU0ksMikKLS8vIHRhZyA6IFY2X3ZtcHl1aGVfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1aGVfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weXVoZV8xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92bXB5dWhlX2FjYyxWSV9mdHlwZV9WSVZJU0ksMykKLS8vIHRhZyA6IFY2X3ZtcHl1aGVfYWNjCi1kZWYgaW50X2hleGFnb25fVjZfdm1weXVoZV9hY2MgOgotSGV4YWdvbl9WNjVfdjUxMnY1MTJ2NTEyaV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weXVoZV9hY2MiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZtcHl1aGVfYWNjXzEyOEIsVklfZnR5cGVfVklWSVNJLDMpCi0vLyB0YWcgOiBWNl92bXB5dWhlX2FjY18xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdm1weXVoZV9hY2NfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMDI0djEwMjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWhlX2FjY18xMjhCIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cHJlZml4cWIsVklfZnR5cGVfUVYsMSkKLS8vIHRhZyA6IFY2X3ZwcmVmaXhxYgotZGVmIGludF9oZXhhZ29uX1Y2X3ZwcmVmaXhxYiA6Ci1IZXhhZ29uX1Y2NV92NTEydjY0aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnByZWZpeHFiIj47Ci0KLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92cHJlZml4cWJfMTI4QixWSV9mdHlwZV9RViwxKQotLy8gdGFnIDogVjZfdnByZWZpeHFiXzEyOEIKLWRlZiBpbnRfaGV4YWdvbl9WNl92cHJlZml4cWJfMTI4QiA6Ci1IZXhhZ29uX1Y2NV92MTAyNHYxMjhpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cHJlZml4cWJfMTI4QiI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnByZWZpeHFoLFZJX2Z0eXBlX1FWLDEpCi0vLyB0YWcgOiBWNl92cHJlZml4cWgKLWRlZiBpbnRfaGV4YWdvbl9WNl92cHJlZml4cWggOgotSGV4YWdvbl9WNjVfdjUxMnY2NGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwcmVmaXhxaCI+OwotCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdnByZWZpeHFoXzEyOEIsVklfZnR5cGVfUVYsMSkKLS8vIHRhZyA6IFY2X3ZwcmVmaXhxaF8xMjhCCi1kZWYgaW50X2hleGFnb25fVjZfdnByZWZpeHFoXzEyOEIgOgotSGV4YWdvbl9WNjVfdjEwMjR2MTI4aV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnByZWZpeHFoXzEyOEIiPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZwcmVmaXhxdyxWSV9mdHlwZV9RViwxKQotLy8gdGFnIDogVjZfdnByZWZpeHF3Ci1kZWYgaW50X2hleGFnb25fVjZfdnByZWZpeHF3IDoKLUhleGFnb25fVjY1X3Y1MTJ2NjRpX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cHJlZml4cXciPjsKLQotLy8KLS8vIEJVSUxUSU5fSU5GTyhIRVhBR09OLlY2X3ZwcmVmaXhxd18xMjhCLFZJX2Z0eXBlX1FWLDEpCi0vLyB0YWcgOiBWNl92cHJlZml4cXdfMTI4QgotZGVmIGludF9oZXhhZ29uX1Y2X3ZwcmVmaXhxd18xMjhCIDoKLUhleGFnb25fVjY1X3YxMDI0djEyOGlfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwcmVmaXhxd18xMjhCIj47Ci0KK2RlZiBpbnRfaGV4YWdvbl9WNl92bWFza2Vkc3RvcmVudG5xXzEyOEIgOgorSGV4YWdvbl92djEyOGl2bWVtdjEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXNrZWRzdG9yZW50bnFfMTI4QiI+OwogCi0vLyBUaGUgc2NhdHRlci9nYXRoZXIgb25lcyBiZWxvdyB3aWxsIG5vdCBiZSBnZW5lcmF0ZWQgZnJvbSBpc2V0LnB5LiBNYWtlIHN1cmUKLS8vIHlvdSBkb24ndCBvdmVyd3JpdGUgdGhlc2UuCiBjbGFzcyBIZXhhZ29uX1Y2NV92dm1lbWlpdjUxMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sIFtsbHZtX3B0cl90eSxsbHZtX2kzMl90eSxsbHZtX2kzMl90eSwKQEAgLTEwOTYyLDE0ICs1MzIsNTgyNCBAQAogZGVmIGludF9oZXhhZ29uX1Y2X3ZzY2F0dGVybWh3X2FkZF8xMjhCIDoKIEhleGFnb25fVjY1X3ZpaXYyMDQ4djEwMjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzY2F0dGVybWh3X2FkZF8xMjhCIj47CiAKLS8vCi0vLyBCVUlMVElOX0lORk8oSEVYQUdPTi5WNl92ZGQwLFZEX2Z0eXBlXywwKQotLy8gdGFnIDogVjZfdmRkMAotZGVmIGludF9oZXhhZ29uX1Y2X3ZkZDAgOgotSGV4YWdvbl92MTAyNF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRkMCI+OworLy8gQXV0by1nZW5lcmF0ZWQgaW50cmluc2ljcwogCi0vLwotLy8gQlVJTFRJTl9JTkZPKEhFWEFHT04uVjZfdmRkMF8xMjhCLFZEX2Z0eXBlXywwKQotLy8gdGFnIDogVjZfdmRkMF8xMjhCCisvLyB0YWcgOiBTMl92c2F0d2gKK2NsYXNzIEhleGFnb25faTMyX2k2NF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1faTMyX3R5XSwgW2xsdm1faTY0X3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ZybXB5YnVzdgorY2xhc3MgSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdnJtcHlidXN2CitjbGFzcyBIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92YXNsd19hY2MKK2NsYXNzIEhleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1fdjE2aTMyX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3Zhc2x3X2FjYworY2xhc3MgSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdm11eAorY2xhc3MgSGV4YWdvbl92MTZpMzJfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92NTEyaTFfdHksbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdm11eAorY2xhc3MgSGV4YWdvbl92MzJpMzJfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjEwMjRpMV90eSxsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBTMl90YWJsZWlkeGRfZ29vZHN5bnRheAorY2xhc3MgSGV4YWdvbl9pMzJfaTMyaTMyaTMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV9pMzJfdHksbGx2bV9pMzJfdHksbGx2bV9pMzJfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmFuZG5xcnRfYWNjCitjbGFzcyBIZXhhZ29uX3YxNmkzMl92MTZpMzJ2NTEyaTFpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX3Y1MTJpMV90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92YW5kbnFydF9hY2MKK2NsYXNzIEhleGFnb25fdjMyaTMyX3YzMmkzMnYxMDI0aTFpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YxMDI0aTFfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdnJtcHlidXNpCitjbGFzcyBIZXhhZ29uX3YzMmkzMl92MzJpMzJpMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92cm1weWJ1c2kKK2NsYXNzIEhleGFnb25fdjY0aTMyX3Y2NGkzMmkzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjY0aTMyX3R5LGxsdm1faTMyX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ZzdWJiX2R2CitjbGFzcyBIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3Y2NGkzMl90eSxsbHZtX3Y2NGkzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBNMl9tcHlzdV91cAorY2xhc3MgSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV9pMzJfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogTTJfbXB5dWRfYWNjX2xsX3MwCitjbGFzcyBIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2k2NF90eSxsbHZtX2kzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBTMl9sc3JfaV9yX25hYworY2xhc3MgSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV9pMzJfdHksbGx2bV9pMzJfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogTTJfY21weXNjX3MwCitjbGFzcyBIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2kzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl9sbworY2xhc3MgSGV4YWdvbl92MTZpMzJfdjMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92MzJpMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfbG8KK2NsYXNzIEhleGFnb25fdjMyaTMyX3Y2NGkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjY0aTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFMyX3NodWZmb2gKK2NsYXNzIEhleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1faTY0X3R5XSwgW2xsdm1faTY0X3R5LGxsdm1faTY0X3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IEYyX3NmbWF4CitjbGFzcyBIZXhhZ29uX2Zsb2F0X2Zsb2F0ZmxvYXRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2Zsb2F0X3R5XSwgW2xsdm1fZmxvYXRfdHksbGx2bV9mbG9hdF90eV0sCisgICAgICAgW0ludHJOb01lbSwgVGhyb3dzXT47CisKKy8vIHRhZyA6IEEyX3ZhYnN3c2F0CitjbGFzcyBIZXhhZ29uX2k2NF9pNjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2k2NF90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOgorY2xhc3MgSGV4YWdvbl92MzJpMzJfdjMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfbGRucDAKK2NsYXNzIEhleGFnb25fdjE2aTMyX2kzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1faTMyX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X2xkbnAwCitjbGFzcyBIZXhhZ29uX3YzMmkzMl9pMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX2kzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92ZG1weWhiCitjbGFzcyBIZXhhZ29uX3YxNmkzMl92MTZpMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92ZG1weWhiCitjbGFzcyBIZXhhZ29uX3YzMmkzMl92MzJpMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBBNF92Y21waGd0aQorY2xhc3MgSGV4YWdvbl9pMzJfaTY0aTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV9pNjRfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDoKK2NsYXNzIEhleGFnb25fdjMyaTMyX3YxNmkzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFM2X3JvbF9pX3Bfb3IKK2NsYXNzIEhleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1faTY0X3R5XSwgW2xsdm1faTY0X3R5LGxsdm1faTY0X3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ZndHVoX2FuZAorY2xhc3MgSGV4YWdvbl92NTEyaTFfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92NTEyaTFfdHldLCBbbGx2bV92NTEyaTFfdHksbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmd0dWhfYW5kCitjbGFzcyBIZXhhZ29uX3YxMDI0aTFfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjEwMjRpMV90eV0sIFtsbHZtX3YxMDI0aTFfdHksbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogQTJfYWJzc2F0CitjbGFzcyBIZXhhZ29uX2kzMl9pMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBBMl92Y21wd2d0dQorY2xhc3MgSGV4YWdvbl9pMzJfaTY0aTY0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV9pNjRfdHksbGx2bV9pNjRfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdnRtcHlidXNfYWNjCitjbGFzcyBIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3Y2NGkzMl90eSxsbHZtX3Y2NGkzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBGMl9jb252X2RmMnV3X2Nob3AKK2NsYXNzIEhleGFnb25faTMyX2RvdWJsZV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1faTMyX3R5XSwgW2xsdm1fZG91YmxlX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ByZWRfb3IKK2NsYXNzIEhleGFnb25fdjUxMmkxX3Y1MTJpMXY1MTJpMV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjUxMmkxX3R5XSwgW2xsdm1fdjUxMmkxX3R5LGxsdm1fdjUxMmkxX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ByZWRfb3IKK2NsYXNzIEhleGFnb25fdjEwMjRpMV92MTAyNGkxdjEwMjRpMV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjEwMjRpMV90eV0sIFtsbHZtX3YxMDI0aTFfdHksbGx2bV92MTAyNGkxX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFMyX2Fzcl9pX3Bfcm5kX2dvb2RzeW50YXgKK2NsYXNzIEhleGFnb25faTY0X2k2NGkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1faTY0X3R5XSwgW2xsdm1faTY0X3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IEYyX2NvbnZfdzJkZgorY2xhc3MgSGV4YWdvbl9kb3VibGVfaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9kb3VibGVfdHldLCBbbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdnVucGFja3VoCitjbGFzcyBIZXhhZ29uX3YzMmkzMl92MTZpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92dW5wYWNrdWgKK2NsYXNzIEhleGFnb25fdjY0aTMyX3YzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ZhZGR1aHdfYWNjCitjbGFzcyBIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MTZpMzJ2MTZpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92YWRkdWh3X2FjYworY2xhc3MgSGV4YWdvbl92NjRpMzJfdjY0aTMydjMyaTMydjMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92NjRpMzJfdHldLCBbbGx2bV92NjRpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogTTJfdmRtYWNzX3MwCitjbGFzcyBIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2k2NF90eSxsbHZtX2k2NF90eSxsbHZtX2k2NF90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92cm1weWJ1Yl9ydHRfYWNjCitjbGFzcyBIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MTZpMzJpNjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YxNmkzMl90eSxsbHZtX2k2NF90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92cm1weWJ1Yl9ydHRfYWNjCitjbGFzcyBIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2MzJpMzJpNjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3Y2NGkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX2k2NF90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl9sZHUwCitjbGFzcyBIZXhhZ29uX3YxNmkzMl9pMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl9sZHUwCitjbGFzcyBIZXhhZ29uX3YzMmkzMl9pMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBTNF9leHRyYWN0X3JwCitjbGFzcyBIZXhhZ29uX2kzMl9pMzJpNjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2kzMl90eSxsbHZtX2k2NF90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92ZG1weWhzdWlzYXQKK2NsYXNzIEhleGFnb25fdjE2aTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ZkbXB5aHN1aXNhdAorY2xhc3MgSGV4YWdvbl92MzJpMzJfdjY0aTMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92NjRpMzJfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogQTJfYWRkc3AKK2NsYXNzIEhleGFnb25faTY0X2kzMmk2NF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1faTY0X3R5XSwgW2xsdm1faTMyX3R5LGxsdm1faTY0X3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X2V4dHJhY3R3CitjbGFzcyBIZXhhZ29uX2kzMl92MTZpMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl9leHRyYWN0dworY2xhc3MgSGV4YWdvbl9pMzJfdjMyaTMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmx1dHZ3aGkKK2NsYXNzIEhleGFnb25fdjMyaTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1fdjE2aTMyX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ZsdXR2d2hpCitjbGFzcyBIZXhhZ29uX3Y2NGkzMl92MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92Z3R1aAorY2xhc3MgSGV4YWdvbl92NTEyaTFfdjE2aTMydjE2aTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92NTEyaTFfdHldLCBbbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmd0dWgKK2NsYXNzIEhleGFnb25fdjEwMjRpMV92MzJpMzJ2MzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YxMDI0aTFfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogRjJfc2ZmbWFfbGliCitjbGFzcyBIZXhhZ29uX2Zsb2F0X2Zsb2F0ZmxvYXRmbG9hdF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fZmxvYXRfdHldLCBbbGx2bV9mbG9hdF90eSxsbHZtX2Zsb2F0X3R5LGxsdm1fZmxvYXRfdHldLAorICAgICAgIFtJbnRyTm9NZW0sIFRocm93c10+OworCisvLyB0YWcgOiBGMl9jb252X3VkMmRmCitjbGFzcyBIZXhhZ29uX2RvdWJsZV9pNjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2RvdWJsZV90eV0sIFtsbHZtX2k2NF90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBTMl92enh0aHcKK2NsYXNzIEhleGFnb25faTY0X2kzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1faTY0X3R5XSwgW2xsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3Z0bXB5aGIKK2NsYXNzIEhleGFnb25fdjY0aTMyX3Y2NGkzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjY0aTMyX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ZzaHVmb2VoCitjbGFzcyBIZXhhZ29uX3YzMmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92c2h1Zm9laAorY2xhc3MgSGV4YWdvbl92NjRpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92NjRpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmx1dDQKK2NsYXNzIEhleGFnb25fdjE2aTMyX3YxNmkzMmk2NF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1faTY0X3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ZsdXQ0CitjbGFzcyBIZXhhZ29uX3YzMmkzMl92MzJpMzJpNjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX2k2NF90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOgorY2xhc3MgSGV4YWdvbl92MTZpMzJfdjE2aTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92MTZpMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogRjJfY29udl91dzJzZgorY2xhc3MgSGV4YWdvbl9mbG9hdF9pMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2Zsb2F0X3R5XSwgW2xsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3Zzd2FwCitjbGFzcyBIZXhhZ29uX3YzMmkzMl92NTEyaTF2MTZpMzJ2MTZpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3Y1MTJpMV90eSxsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92c3dhcAorY2xhc3MgSGV4YWdvbl92NjRpMzJfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjEwMjRpMV90eSxsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92YW5kbnFydAorY2xhc3MgSGV4YWdvbl92MTZpMzJfdjUxMmkxaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92NTEyaTFfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmFuZG5xcnQKK2NsYXNzIEhleGFnb25fdjMyaTMyX3YxMDI0aTFpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YxMDI0aTFfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdm1weXViCitjbGFzcyBIZXhhZ29uX3Y2NGkzMl92MzJpMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBBNV9BQ1MKK2NsYXNzIEhleGFnb25faTY0aTMyX2k2NGk2NGk2NF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1faTY0X3R5LGxsdm1faTMyX3R5XSwgW2xsdm1faTY0X3R5LGxsdm1faTY0X3R5LGxsdm1faTY0X3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3Z1bnBhY2tvYgorY2xhc3MgSGV4YWdvbl92MzJpMzJfdjMyaTMydjE2aTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MTZpMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdnVucGFja29iCitjbGFzcyBIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2MzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3Y2NGkzMl90eV0sIFtsbHZtX3Y2NGkzMl90eSxsbHZtX3YzMmkzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92bXB5aHNhdF9hY2MKK2NsYXNzIEhleGFnb25fdjMyaTMyX3YzMmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1fdjE2aTMyX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ZtcHloc2F0X2FjYworY2xhc3MgSGV4YWdvbl92NjRpMzJfdjY0aTMydjMyaTMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92NjRpMzJfdHldLCBbbGx2bV92NjRpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmFkZGNhcnJ5c2F0CitjbGFzcyBIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJ2NTEyaTFfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eSxsbHZtX3Y1MTJpMV90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92YWRkY2FycnlzYXQKK2NsYXNzIEhleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMnYxMDI0aTFfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX3YxMDI0aTFfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmx1dHZ2Yl9vcmFjYworY2xhc3MgSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMydjE2aTMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmx1dHZ2Yl9vcmFjYworY2xhc3MgSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdnJtcHlidWJfcnR0CitjbGFzcyBIZXhhZ29uX3YzMmkzMl92MTZpMzJpNjRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX2k2NF90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92cm1weWJ1Yl9ydHQKK2NsYXNzIEhleGFnb25fdjY0aTMyX3YzMmkzMmk2NF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1faTY0X3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IEE0X2FkZHBfYworY2xhc3MgSGV4YWdvbl9pNjRpMzJfaTY0aTY0aTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9pNjRfdHksbGx2bV9pMzJfdHldLCBbbGx2bV9pNjRfdHksbGx2bV9pNjRfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdnJzYWR1YmlfYWNjCitjbGFzcyBIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92cnNhZHViaV9hY2MKK2NsYXNzIEhleGFnb25fdjY0aTMyX3Y2NGkzMnY2NGkzMmkzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjY0aTMyX3R5LGxsdm1fdjY0aTMyX3R5LGxsdm1faTMyX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IEYyX2NvbnZfZGYyc2YKK2NsYXNzIEhleGFnb25fZmxvYXRfZG91YmxlX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9mbG9hdF90eV0sIFtsbHZtX2RvdWJsZV90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92YW5kdnF2CitjbGFzcyBIZXhhZ29uX3YxNmkzMl92NTEyaTF2MTZpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3Y1MTJpMV90eSxsbHZtX3YxNmkzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92YW5kdnF2CitjbGFzcyBIZXhhZ29uX3YzMmkzMl92MTAyNGkxdjMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MTAyNGkxX3R5LGxsdm1fdjMyaTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IEMyX3ZtdXgKK2NsYXNzIEhleGFnb25faTY0X2kzMmk2NGk2NF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1faTY0X3R5XSwgW2xsdm1faTMyX3R5LGxsdm1faTY0X3R5LGxsdm1faTY0X3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IEYyX3NmY21wZXEKK2NsYXNzIEhleGFnb25faTMyX2Zsb2F0ZmxvYXRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2Zsb2F0X3R5LGxsdm1fZmxvYXRfdHldLAorICAgICAgIFtJbnRyTm9NZW0sIFRocm93c10+OworCisvLyB0YWcgOiBWNl92bXBhaGhzYXQKK2NsYXNzIEhleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmk2NF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LGxsdm1fdjE2aTMyX3R5LGxsdm1faTY0X3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ZtcGFoaHNhdAorY2xhc3MgSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTY0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MzJpMzJfdHldLCBbbGx2bV92MzJpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV9pNjRfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmFuZHZydAorY2xhc3MgSGV4YWdvbl92NTEyaTFfdjE2aTMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92NTEyaTFfdHldLCBbbGx2bV92MTZpMzJfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmFuZHZydAorY2xhc3MgSGV4YWdvbl92MTAyNGkxX3YzMmkzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjEwMjRpMV90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92c3ViY2FycnkKK2NsYXNzIEhleGFnb25fY3VzdG9tX3YxNmkzMnY1MTJpMV92MTZpMzJ2MTZpMzJ2NTEyaTFfSW50cmluc2ljCisgIDogSGV4YWdvbl9Ob25HQ0NfSW50cmluc2ljPAorICAgICAgIFtsbHZtX3YxNmkzMl90eSxsbHZtX3Y1MTJpMV90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eSxsbHZtX3Y1MTJpMV90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92c3ViY2FycnkKK2NsYXNzIEhleGFnb25fY3VzdG9tX3YzMmkzMnYxMDI0aTFfdjMyaTMydjMyaTMydjEwMjRpMV9JbnRyaW5zaWNfMTI4QgorICA6IEhleGFnb25fTm9uR0NDX0ludHJpbnNpYzwKKyAgICAgICBbbGx2bV92MzJpMzJfdHksbGx2bV92MTAyNGkxX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1fdjMyaTMyX3R5LGxsdm1fdjEwMjRpMV90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBGMl9zZmZpeHVwcgorY2xhc3MgSGV4YWdvbl9mbG9hdF9mbG9hdF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fZmxvYXRfdHldLCBbbGx2bV9mbG9hdF90eV0sCisgICAgICAgW0ludHJOb01lbSwgVGhyb3dzXT47CisKKy8vIHRhZyA6IFY2X3ZhbmR2cnRfYWNjCitjbGFzcyBIZXhhZ29uX3Y1MTJpMV92NTEyaTF2MTZpMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3Y1MTJpMV90eV0sIFtsbHZtX3Y1MTJpMV90eSxsbHZtX3YxNmkzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92YW5kdnJ0X2FjYworY2xhc3MgSGV4YWdvbl92MTAyNGkxX3YxMDI0aTF2MzJpMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YxMDI0aTFfdHldLCBbbGx2bV92MTAyNGkxX3R5LGxsdm1fdjMyaTMyX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IEYyX2Rmc3ViCitjbGFzcyBIZXhhZ29uX2RvdWJsZV9kb3VibGVkb3VibGVfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2RvdWJsZV90eV0sIFtsbHZtX2RvdWJsZV90eSxsbHZtX2RvdWJsZV90eV0sCisgICAgICAgW0ludHJOb01lbSwgVGhyb3dzXT47CisKKy8vIHRhZyA6IFY2X3ZtcHlvd2hfc2FjYworY2xhc3MgSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMydjE2aTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHksbGx2bV92MTZpMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdm1weW93aF9zYWNjCitjbGFzcyBIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJ2MzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eSxsbHZtX3YzMmkzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBTMl9pbnNlcnRwCitjbGFzcyBIZXhhZ29uX2k2NF9pNjRpNjRpMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2k2NF90eSxsbHZtX2k2NF90eSxsbHZtX2kzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBGMl9zZmludnNxcnRhCitjbGFzcyBIZXhhZ29uX2Zsb2F0aTMyX2Zsb2F0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9mbG9hdF90eSxsbHZtX2kzMl90eV0sIFtsbHZtX2Zsb2F0X3R5XSwKKyAgICAgICBbSW50ck5vTWVtLCBUaHJvd3NdPjsKKworLy8gdGFnIDogVjZfdnRyYW4yeDJfbWFwCitjbGFzcyBIZXhhZ29uX3YxNmkzMnYxNmkzMl92MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSxsbHZtX3YxNmkzMl90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92dHJhbjJ4Ml9tYXAKK2NsYXNzIEhleGFnb25fdjMyaTMydjMyaTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjMyaTMyX3R5LGxsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1fdjMyaTMyX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ZsdXR2d2hfb3JhY2MKK2NsYXNzIEhleGFnb25fdjMyaTMyX3YzMmkzMnYxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1fdjE2aTMyX3R5LGxsdm1fdjE2aTMyX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ZsdXR2d2hfb3JhY2MKK2NsYXNzIEhleGFnb25fdjY0aTMyX3Y2NGkzMnYzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjY0aTMyX3R5LGxsdm1fdjMyaTMyX3R5LGxsdm1fdjMyaTMyX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IEYyX2RmY21wZ2UKK2NsYXNzIEhleGFnb25faTMyX2RvdWJsZWRvdWJsZV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1faTMyX3R5XSwgW2xsdm1fZG91YmxlX3R5LGxsdm1fZG91YmxlX3R5XSwKKyAgICAgICBbSW50ck5vTWVtLCBUaHJvd3NdPjsKKworLy8gdGFnIDogRjJfY29udl9kZjJkX2Nob3AKK2NsYXNzIEhleGFnb25faTY0X2RvdWJsZV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1faTY0X3R5XSwgW2xsdm1fZG91YmxlX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IEYyX2NvbnZfc2YydworY2xhc3MgSGV4YWdvbl9pMzJfZmxvYXRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2kzMl90eV0sIFtsbHZtX2Zsb2F0X3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IEYyX3NmY2xhc3MKK2NsYXNzIEhleGFnb25faTMyX2Zsb2F0aTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV9mbG9hdF90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbSwgVGhyb3dzXT47CisKKy8vIHRhZyA6IEYyX2NvbnZfc2YydWRfY2hvcAorY2xhc3MgSGV4YWdvbl9pNjRfZmxvYXRfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX2k2NF90eV0sIFtsbHZtX2Zsb2F0X3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ByZWRfc2NhbGFyMnYyCitjbGFzcyBIZXhhZ29uX3Y1MTJpMV9pMzJfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3Y1MTJpMV90eV0sIFtsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl9wcmVkX3NjYWxhcjJ2MgorY2xhc3MgSGV4YWdvbl92MTAyNGkxX2kzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjEwMjRpMV90eV0sIFtsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBGMl9zZnJlY2lwYQorY2xhc3MgSGV4YWdvbl9mbG9hdGkzMl9mbG9hdGZsb2F0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9mbG9hdF90eSxsbHZtX2kzMl90eV0sIFtsbHZtX2Zsb2F0X3R5LGxsdm1fZmxvYXRfdHldLAorICAgICAgIFtJbnRyTm9NZW0sIFRocm93c10+OworCisvLyB0YWcgOiBWNl92cHJlZml4cWgKK2NsYXNzIEhleGFnb25fdjE2aTMyX3Y1MTJpMV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjUxMmkxX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ZwcmVmaXhxaAorY2xhc3MgSGV4YWdvbl92MzJpMzJfdjEwMjRpMV9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjEwMjRpMV90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl92ZG1weWhpc2F0X2FjYworY2xhc3MgSGV4YWdvbl92MTZpMzJfdjE2aTMydjMyaTMyaTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92MTZpMzJfdHldLCBbbGx2bV92MTZpMzJfdHksbGx2bV92MzJpMzJfdHksbGx2bV9pMzJfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmRtcHloaXNhdF9hY2MKK2NsYXNzIEhleGFnb25fdjMyaTMyX3YzMmkzMnY2NGkzMmkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjMyaTMyX3R5XSwgW2xsdm1fdjMyaTMyX3R5LGxsdm1fdjY0aTMyX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IEYyX2NvbnZfdWQyc2YKK2NsYXNzIEhleGFnb25fZmxvYXRfaTY0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9mbG9hdF90eV0sIFtsbHZtX2k2NF90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBGMl9jb252X3NmMmRmCitjbGFzcyBIZXhhZ29uX2RvdWJsZV9mbG9hdF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fZG91YmxlX3R5XSwgW2xsdm1fZmxvYXRfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogRjJfc2ZmbWFfc2MKK2NsYXNzIEhleGFnb25fZmxvYXRfZmxvYXRmbG9hdGZsb2F0aTMyX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9mbG9hdF90eV0sIFtsbHZtX2Zsb2F0X3R5LGxsdm1fZmxvYXRfdHksbGx2bV9mbG9hdF90eSxsbHZtX2kzMl90eV0sCisgICAgICAgW0ludHJOb01lbSwgVGhyb3dzXT47CisKKy8vIHRhZyA6IEYyX2RmY2xhc3MKK2NsYXNzIEhleGFnb25faTMyX2RvdWJsZWkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1faTMyX3R5XSwgW2xsdm1fZG91YmxlX3R5LGxsdm1faTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtLCBUaHJvd3NdPjsKKworLy8gdGFnIDogVjZfdmQwCitjbGFzcyBIZXhhZ29uX3YxNmkzMl9fSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YxNmkzMl90eV0sIFtdLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmQwCitjbGFzcyBIZXhhZ29uX3YzMmkzMl9fSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YzMmkzMl90eV0sIFtdLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmRkMAorY2xhc3MgSGV4YWdvbl92NjRpMzJfX0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV92NjRpMzJfdHldLCBbXSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFMyX2luc2VydF9ycAorY2xhc3MgSGV4YWdvbl9pMzJfaTMyaTMyaTY0X0ludHJpbnNpYzxzdHJpbmcgR0NDSW50U3VmZml4PgorICA6IEhleGFnb25fSW50cmluc2ljPEdDQ0ludFN1ZmZpeCwKKyAgICAgICBbbGx2bV9pMzJfdHldLCBbbGx2bV9pMzJfdHksbGx2bV9pMzJfdHksbGx2bV9pNjRfdHldLAorICAgICAgIFtJbnRyTm9NZW1dPjsKKworLy8gdGFnIDogVjZfdmFzc2lnbnAKK2NsYXNzIEhleGFnb25fdjY0aTMyX3Y2NGkzMl9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1fdjY0aTMyX3R5XSwgW2xsdm1fdjY0aTMyX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IEE2X3ZtaW51Yl9SZFAKK2NsYXNzIEhleGFnb25faTY0aTMyX2k2NGk2NF9JbnRyaW5zaWM8c3RyaW5nIEdDQ0ludFN1ZmZpeD4KKyAgOiBIZXhhZ29uX0ludHJpbnNpYzxHQ0NJbnRTdWZmaXgsCisgICAgICAgW2xsdm1faTY0X3R5LGxsdm1faTMyX3R5XSwgW2xsdm1faTY0X3R5LGxsdm1faTY0X3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIHRhZyA6IFY2X3ByZWRfbm90CitjbGFzcyBIZXhhZ29uX3Y1MTJpMV92NTEyaTFfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3Y1MTJpMV90eV0sIFtsbHZtX3Y1MTJpMV90eV0sCisgICAgICAgW0ludHJOb01lbV0+OworCisvLyB0YWcgOiBWNl9wcmVkX25vdAorY2xhc3MgSGV4YWdvbl92MTAyNGkxX3YxMDI0aTFfSW50cmluc2ljPHN0cmluZyBHQ0NJbnRTdWZmaXg+CisgIDogSGV4YWdvbl9JbnRyaW5zaWM8R0NDSW50U3VmZml4LAorICAgICAgIFtsbHZtX3YxMDI0aTFfdHldLCBbbGx2bV92MTAyNGkxX3R5XSwKKyAgICAgICBbSW50ck5vTWVtXT47CisKKy8vIFY1IFNjYWxhciBJbnN0cnVjdGlvbnMuCisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc3Jfcl9wX29yIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX3JfcF9vciI+OworCitkZWYgaW50X2hleGFnb25fUzJfdnNhdHdoIDoKK0hleGFnb25faTMyX2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdnNhdHdoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl90YWJsZWlkeGRfZ29vZHN5bnRheCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX3RhYmxlaWR4ZF9nb29kc3ludGF4Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlzdV91cCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXN1X3VwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9hY2NfbGxfczAgOgorSGV4YWdvbl9pNjRfaTY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9hY2NfbGxfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVkX2FjY19sbF9zMSA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX2FjY19sbF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfY21weXNjX3MxIDoKK0hleGFnb25faTY0X2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfY21weXNjX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9jbXB5c2NfczAgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9jbXB5c2NfczAiPjsKKworZGVmIGludF9oZXhhZ29uX000X2NtcHlpX3doYyA6CitIZXhhZ29uX2kzMl9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX000X2NtcHlpX3doYyI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X3NhdF9ybmRfbGhfczEgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9saF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X3NhdF9ybmRfbGhfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9saF9zMCI+OworCitkZWYgaW50X2hleGFnb25fUzJfdGFibGVpZHhiX2dvb2RzeW50YXggOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl90YWJsZWlkeGJfZ29vZHN5bnRheCI+OworCitkZWYgaW50X2hleGFnb25fUzJfc2h1ZmZvaCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX3NodWZmb2giPjsKKworZGVmIGludF9oZXhhZ29uX0YyX3NmbWF4IDoKK0hleGFnb25fZmxvYXRfZmxvYXRmbG9hdF9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZtYXgiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZhYnN3c2F0IDoKK0hleGFnb25faTY0X2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmFic3dzYXQiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9pX3IgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3JfaV9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc3JfaV9wIDoKK0hleGFnb25faTY0X2k2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX2lfcCI+OworCitkZWYgaW50X2hleGFnb25fQTRfY29tYmluZXJpIDoKK0hleGFnb25faTY0X2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfY29tYmluZXJpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfbmFjX3NhdF9obF9zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9uYWNfc2F0X2hsX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNF92cG1weWhfYWNjIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTRfdnBtcHloX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fTTJfdmNtcHlfczBfc2F0X2kgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl92Y21weV9zMF9zYXRfaSI+OworCitkZWYgaW50X2hleGFnb25fQTJfbm90cCA6CitIZXhhZ29uX2k2NF9pNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX25vdHAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9obF9zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9obF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X2hsX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2hsX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DNF9vcl9hbmQgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DNF9vcl9hbmQiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZtYWMyc19zMCA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX3ZtYWMyc19zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfdm1hYzJzX3MxIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdm1hYzJzX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9icmV2cCA6CitIZXhhZ29uX2k2NF9pNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX2JyZXZwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNF9wbXB5d19hY2MgOgorSGV4YWdvbl9pNjRfaTY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9wbXB5d19hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2NsMSA6CitIZXhhZ29uX2kzMl9pMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2NsMSI+OworCitkZWYgaW50X2hleGFnb25fQzRfY21wbHRlIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzRfY21wbHRlIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tbXB5dWxfczAgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbXB5dWxfczAiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZhZGR3cyA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZhZGR3cyI+OworCitkZWYgaW50X2hleGFnb25fQTJfbWF4dXAgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl9tYXh1cCI+OworCitkZWYgaW50X2hleGFnb25fQTRfdmNtcGhndGkgOgorSGV4YWdvbl9pMzJfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF92Y21waGd0aSI+OworCitkZWYgaW50X2hleGFnb25fUzJfaW50ZXJsZWF2ZSA6CitIZXhhZ29uX2k2NF9pNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX2ludGVybGVhdmUiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZyY21weWlfczAgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl92cmNtcHlpX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9hYnNzYXQgOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hYnNzYXQiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZjbXB3Z3R1IDoKK0hleGFnb25faTMyX2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmNtcHdndHUiPjsKKworZGVmIGludF9oZXhhZ29uX0MyX2NtcGd0dSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0MyX2NtcGd0dSI+OworCitkZWYgaW50X2hleGFnb25fQzJfY21wZ3RwIDoKK0hleGFnb25faTMyX2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQzJfY21wZ3RwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF9jbXBoZ3R1aSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X2NtcGhndHVpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DMl9jbXBndGkgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9jbXBndGkiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weWkgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9jb252X2RmMnV3X2Nob3AgOgorSGV4YWdvbl9pMzJfZG91YmxlX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X2RmMnV3X2Nob3AiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X2NtcGhlcSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X2NtcGhlcSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X2xoX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2xoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfbGhfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfbGhfczAiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzcl9pX3JfeGFjYyA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9pX3JfeGFjYyI+OworCitkZWYgaW50X2hleGFnb25fUzJfdnJjbmVnaCA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZyY25lZ2giPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2V4dHJhY3R1cCA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2V4dHJhY3R1cCI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNyX2lfcF9ybmRfZ29vZHN5bnRheCA6CitIZXhhZ29uX2k2NF9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9pX3Bfcm5kX2dvb2RzeW50YXgiPjsKKworZGVmIGludF9oZXhhZ29uX1M0X250c3RiaXRfciA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1M0X250c3RiaXRfciI+OworCitkZWYgaW50X2hleGFnb25fRjJfY29udl93MnNmIDoKK0hleGFnb25fZmxvYXRfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X3cyc2YiPjsKKworZGVmIGludF9oZXhhZ29uX0MyX25vdCA6CitIZXhhZ29uX2kzMl9pMzJfSW50cmluc2ljPCJIRVhBR09OX0MyX25vdCI+OworCitkZWYgaW50X2hleGFnb25fQzJfdGZycHIgOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DMl90ZnJwciI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X2xsX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2xsX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfbGxfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfbGxfczAiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X2NtcGJndCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X2NtcGJndCI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNyX3Jfcl9hbmQgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3Jfcl9yX2FuZCI+OworCitkZWYgaW50X2hleGFnb25fQTRfcmNtcG5lcWkgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9yY21wbmVxaSI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNsX2lfcl9uYWMgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfaV9yX25hYyI+OworCitkZWYgaW50X2hleGFnb25fTTJfc3ViYWNjIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfc3ViYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9vcnAgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl9vcnAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVfdXAgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1X3VwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfYWNjX3NhdF9saF9zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9hY2Nfc2F0X2xoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc3JfaV92aCA6CitIZXhhZ29uX2k2NF9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9pX3ZoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc3JfaV92dyA6CitIZXhhZ29uX2k2NF9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9pX3Z3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF9jbXBiZ3R1IDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfY21wYmd0dSI+OworCitkZWYgaW50X2hleGFnb25fQTRfdmNtcGJlcV9hbnkgOgorSGV4YWdvbl9pMzJfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BNF92Y21wYmVxX2FueSI+OworCitkZWYgaW50X2hleGFnb25fQTRfY21wYmd0aSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X2NtcGJndGkiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weWRfbGhfczEgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX2xoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc2xfcl9wX25hYyA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9yX3BfbmFjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc3JfaV9yX25hYyA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9pX3JfbmFjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9hZGRzcCA6CitIZXhhZ29uX2k2NF9pMzJpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX2FkZHNwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNF92eHN1YmFkZHcgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9TNF92eHN1YmFkZHciPjsKKworZGVmIGludF9oZXhhZ29uX0E0X3ZjbXBoZXFpIDoKK0hleGFnb25faTMyX2k2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfdmNtcGhlcWkiPjsKKworZGVmIGludF9oZXhhZ29uX1M0X3Z4c3ViYWRkaCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX1M0X3Z4c3ViYWRkaCI+OworCitkZWYgaW50X2hleGFnb25fTTRfcG1weXcgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9wbXB5dyI+OworCitkZWYgaW50X2hleGFnb25fUzJfdnNhdGhiIDoKK0hleGFnb25faTMyX2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdnNhdGhiIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc3Jfcl9wX2FuZCA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9yX3BfYW5kIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X2FjY19saF9zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfYWNjX2xoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X2FjY19saF9zMCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfYWNjX2xoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc2xfcl9wX2FjYyA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzbF9yX3BfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9weG9yZiA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX3B4b3JmIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DMl9jbXBnZWkgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9jbXBnZWkiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZzdWJ1YiA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZzdWJ1YiI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNsX2lfcCA6CitIZXhhZ29uX2k2NF9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9pX3AiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2FzbF9pX3IgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfaV9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF92cm1pbnV3IDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfdnJtaW51dyI+OworCitkZWYgaW50X2hleGFnb25fRjJfc2ZmbWEgOgorSGV4YWdvbl9mbG9hdF9mbG9hdGZsb2F0ZmxvYXRfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmZm1hIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9hYnNwIDoKK0hleGFnb25faTY0X2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWJzcCI+OworCitkZWYgaW50X2hleGFnb25fQzJfYWxsOCA6CitIZXhhZ29uX2kzMl9pMzJfSW50cmluc2ljPCJIRVhBR09OX0MyX2FsbDgiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X3ZybWludWggOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF92cm1pbnVoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9zZmZtYV9saWIgOgorSGV4YWdvbl9mbG9hdF9mbG9hdGZsb2F0ZmxvYXRfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmZm1hX2xpYiI+OworCitkZWYgaW50X2hleGFnb25fTTRfdnJtcHlvaF9zMCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX000X3ZybXB5b2hfczAiPjsKKworZGVmIGludF9oZXhhZ29uX000X3ZybXB5b2hfczEgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NNF92cm1weW9oX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DMl9iaXRzc2V0IDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzJfYml0c3NldCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5c2lwIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5c2lwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlzaW4gOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlzaW4iPjsKKworZGVmIGludF9oZXhhZ29uX0E0X2JvdW5kc2NoZWNrIDoKK0hleGFnb25faTMyX2kzMmk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTRfYm91bmRzY2hlY2siPjsKKworZGVmIGludF9oZXhhZ29uX001X3ZybXB5YnV1IDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTVfdnJtcHlidXUiPjsKKworZGVmIGludF9oZXhhZ29uX0M0X2Zhc3Rjb3JuZXI5IDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzRfZmFzdGNvcm5lcjkiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZyY21weXNfczFycCA6CitIZXhhZ29uX2kzMl9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX3ZyY21weXNfczFycCI+OworCitkZWYgaW50X2hleGFnb25fQTJfbmVnIDoKK0hleGFnb25faTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfbmVnIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9zdWJzYXQgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zdWJzYXQiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2FzbF9yX3IgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfcl9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc2xfcl9wIDoKK0hleGFnb25faTY0X2k2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX3JfcCI+OworCitkZWYgaW50X2hleGFnb25fQTJfdm5hdmdoIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm5hdmdoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfbmFjX3NhdF9obF9zMCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9uYWNfc2F0X2hsX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9jb252X3VkMmRmIDoKK0hleGFnb25fZG91YmxlX2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl91ZDJkZiI+OworCitkZWYgaW50X2hleGFnb25fQTJfdm5hdmd3IDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm5hdmd3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc2xfaV9yX2FjYyA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9pX3JfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNF9zdWJpX2xzcl9yaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1M0X3N1YmlfbHNyX3JpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl92enh0aHcgOgorSGV4YWdvbl9pNjRfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl92enh0aHciPjsKKworZGVmIGludF9oZXhhZ29uX0YyX3NmYWRkIDoKK0hleGFnb25fZmxvYXRfZmxvYXRmbG9hdF9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZhZGQiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3N1YiA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX3N1YiI+OworCitkZWYgaW50X2hleGFnb25fTTJfdm1hYzJzdV9zMCA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX3ZtYWMyc3VfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZtYWMyc3VfczEgOgorSGV4YWdvbl9pNjRfaTY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92bWFjMnN1X3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9kcG1weXNzX3MwIDoKK0hleGFnb25faTY0X2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfZHBtcHlzc19zMCI+OworCitkZWYgaW50X2hleGFnb25fUzJfaW5zZXJ0IDoKK0hleGFnb25faTMyX2kzMmkzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfaW5zZXJ0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9wYWNraGwgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9wYWNraGwiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X3ZjbXB3Z3RpIDoKK0hleGFnb25faTMyX2k2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfdmNtcHdndGkiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3Zhdmd1d3IgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YXZndXdyIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc2xfcl9yX2FuZCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9yX3JfYW5kIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9zdnN1YmhzIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3ZzdWJocyI+OworCitkZWYgaW50X2hleGFnb25fQTJfYWRkaF9sMTZfaGwgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hZGRoX2wxNl9obCI+OworCitkZWYgaW50X2hleGFnb25fTTRfYW5kX2FuZCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX000X2FuZF9hbmQiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfZDJkZiA6CitIZXhhZ29uX2RvdWJsZV9pNjRfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfZDJkZiI+OworCitkZWYgaW50X2hleGFnb25fQzJfY21wZ3R1aSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0MyX2NtcGd0dWkiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3Zjb25qIDoKK0hleGFnb25faTY0X2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmNvbmoiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzcl9yX3Z3IDoKK0hleGFnb25faTY0X2k2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX3JfdnciPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzcl9yX3ZoIDoKK0hleGFnb25faTY0X2k2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX3JfdmgiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3N1YmhfbDE2X2hsIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3ViaF9sMTZfaGwiPjsKKworZGVmIGludF9oZXhhZ29uX1M0X3Z4c3ViYWRkaHIgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9TNF92eHN1YmFkZGhyIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9jbGJwIDoKK0hleGFnb25faTMyX2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzJfY2xicCI+OworCitkZWYgaW50X2hleGFnb25fUzJfZGVpbnRlcmxlYXZlIDoKK0hleGFnb25faTY0X2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzJfZGVpbnRlcmxlYXZlIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DMl9hbnk4IDoKK0hleGFnb25faTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzJfYW55OCI+OworCitkZWYgaW50X2hleGFnb25fUzJfdG9nZ2xlYml0X3IgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl90b2dnbGViaXRfciI+OworCitkZWYgaW50X2hleGFnb25fUzJfdG9nZ2xlYml0X2kgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl90b2dnbGViaXRfaSI+OworCitkZWYgaW50X2hleGFnb25fRjJfY29udl91dzJzZiA6CitIZXhhZ29uX2Zsb2F0X2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl91dzJzZiI+OworCitkZWYgaW50X2hleGFnb25fUzJfdnNhdGhiX25vcGFjayA6CitIZXhhZ29uX2k2NF9pNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZzYXRoYl9ub3BhY2siPjsKKworZGVmIGludF9oZXhhZ29uX00yX2NtYWNzX3MwIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfY21hY3NfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX2NtYWNzX3MxIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfY21hY3NfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9zYXRfaGhfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X2hoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X2hoX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X3NhdF9oaF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbW1hY3Voc19zMSA6CitIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX21tYWN1aHNfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21tYWN1aHNfczAgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbWFjdWhzX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9jbHJiaXRfciA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2NscmJpdF9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DNF9vcl9hbmRuIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzRfb3JfYW5kbiI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNsX3Jfcl9uYWMgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfcl9yX25hYyI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNsX2lfcF9hY2MgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfaV9wX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fQTRfdmNtcHdndHVpIDoKK0hleGFnb25faTMyX2k2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfdmNtcHdndHVpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNF92cm1weW9oX2FjY19zMCA6CitIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX000X3ZybXB5b2hfYWNjX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNF92cm1weW9oX2FjY19zMSA6CitIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX000X3ZybXB5b2hfYWNjX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF92cm1heGggOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF92cm1heGgiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZjbXBiZXEgOgorSGV4YWdvbl9pMzJfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92Y21wYmVxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92Y21waGd0IDoKK0hleGFnb25faTMyX2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmNtcGhndCI+OworCitkZWYgaW50X2hleGFnb25fQTJfdm5hdmd3Y3IgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92bmF2Z3djciI+OworCitkZWYgaW50X2hleGFnb25fTTJfdnJjbWFjcl9zMGMgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl92cmNtYWNyX3MwYyI+OworCitkZWYgaW50X2hleGFnb25fQTJfdmF2Z3djciA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3Zhdmd3Y3IiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2FzbF9pX3BfeGFjYyA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9pX3BfeGFjYyI+OworCitkZWYgaW50X2hleGFnb25fQTRfdnJtYXh3IDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfdnJtYXh3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92bmF2Z2hyIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm5hdmdociI+OworCitkZWYgaW50X2hleGFnb25fTTRfY21weWlfd2ggOgorSGV4YWdvbl9pMzJfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9jbXB5aV93aCI+OworCitkZWYgaW50X2hleGFnb25fQTJfdGZyc2kgOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl90ZnJzaSI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNyX2lfcl9hY2MgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3JfaV9yX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fQTJfc3ZuYXZnaCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX3N2bmF2Z2giPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzcl9pX3IgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3JfaV9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl92bWFjMiA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX3ZtYWMyIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF92Y21waGd0dWkgOgorSGV4YWdvbl9pMzJfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF92Y21waGd0dWkiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3N2YXZnaCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX3N2YXZnaCI+OworCitkZWYgaW50X2hleGFnb25fTTRfdnJtcHllaF9hY2NfczAgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NNF92cm1weWVoX2FjY19zMCI+OworCitkZWYgaW50X2hleGFnb25fTTRfdnJtcHllaF9hY2NfczEgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NNF92cm1weWVoX2FjY19zMSI+OworCitkZWYgaW50X2hleGFnb25fUzJfbHNyX2lfcCA6CitIZXhhZ29uX2k2NF9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9pX3AiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX2NvbWJpbmVfaGwgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9jb21iaW5lX2hsIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfdXAgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfdXAiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX2NvbWJpbmVfaGggOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9jb21iaW5lX2hoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9uZWdzYXQgOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9uZWdzYXQiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weWRfaGxfczAgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX2hsX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2hsX3MxIDoKK0hleGFnb25faTY0X2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9obF9zMSI+OworCitkZWYgaW50X2hleGFnb25fQTRfYml0c3BsaXQgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9iaXRzcGxpdCI+OworCitkZWYgaW50X2hleGFnb25fQTJfdmFic2hzYXQgOgorSGV4YWdvbl9pNjRfaTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YWJzaHNhdCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5dWkgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1aSI+OworCitkZWYgaW50X2hleGFnb25fQTJfYWRkaF9sMTZfc2F0X2xsIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkaF9sMTZfc2F0X2xsIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc2xfcl9yX2FuZCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzbF9yX3JfYW5kIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tbXB5dWxfcnMwIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1weXVsX3JzMCI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNyX2lfcl9ybmRfZ29vZHN5bnRheCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9pX3Jfcm5kX2dvb2RzeW50YXgiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzcl9yX3BfbmFjIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX3JfcF9uYWMiPjsKKworZGVmIGludF9oZXhhZ29uX0MyX2NtcGx0IDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzJfY21wbHQiPjsKKworZGVmIGludF9oZXhhZ29uX00yX2NtYWNyX3MwIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfY21hY3JfczAiPjsKKworZGVmIGludF9oZXhhZ29uX000X29yX2FuZCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX000X29yX2FuZCI+OworCitkZWYgaW50X2hleGFnb25fTTRfbXB5cnJfYWRkaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX000X21weXJyX2FkZGkiPjsKKworZGVmIGludF9oZXhhZ29uX1M0X29yX2FuZGkgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9vcl9hbmRpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X2hsX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X3NhdF9obF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X3NhdF9obF9zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9zYXRfaGxfczEiPjsKKworZGVmIGludF9oZXhhZ29uX000X21weXJyX2FkZHIgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9tcHlycl9hZGRyIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tbWFjaHNfcnMwIDoKK0hleGFnb25faTY0X2k2NGk2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1hY2hzX3JzMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbW1hY2hzX3JzMSA6CitIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX21tYWNoc19yczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZyY21weXJfczBjIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdnJjbXB5cl9zMGMiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9hY2Nfc2F0X2hsX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2FjY19zYXRfaGxfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weWRfYWNjX2xsX3MxIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9hY2NfbGxfczEiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX3NmZml4dXBuIDoKK0hleGFnb25fZmxvYXRfZmxvYXRmbG9hdF9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZmaXh1cG4iPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weWRfYWNjX2xoX3MwIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9hY2NfbGhfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weWRfYWNjX2xoX3MxIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9hY2NfbGhfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9ybmRfaGhfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfcm5kX2hoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfcm5kX2hoX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X3JuZF9oaF9zMSI+OworCitkZWYgaW50X2hleGFnb25fQTJfdmFkZHVocyA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZhZGR1aHMiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZzdWJ1aHMgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92c3VidWhzIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9zdWJoX2gxNl9obCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX3N1YmhfaDE2X2hsIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9zdWJoX2gxNl9oaCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX3N1YmhfaDE2X2hoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl94b3JwIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfeG9ycCI+OworCitkZWYgaW50X2hleGFnb25fQTRfdGZycGNwIDoKK0hleGFnb25faTY0X2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTRfdGZycGNwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9hZGRoX2gxNl9saCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX2FkZGhfaDE2X2xoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9hZGRoX2gxNl9zYXRfaGwgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hZGRoX2gxNl9zYXRfaGwiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX2FkZGhfaDE2X2xsIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkaF9oMTZfbGwiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX2FkZGhfaDE2X3NhdF9oaCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX2FkZGhfaDE2X3NhdF9oaCI+OworCitkZWYgaW50X2hleGFnb25fQTJfenh0YiA6CitIZXhhZ29uX2kzMl9pMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX3p4dGIiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3p4dGggOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl96eHRoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92bmF2Z3dyIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm5hdmd3ciI+OworCitkZWYgaW50X2hleGFnb25fTTRfb3JfeG9yIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTRfb3JfeG9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9hY2NfaGhfczAgOgorSGV4YWdvbl9pNjRfaTY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9hY2NfaGhfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVkX2FjY19oaF9zMSA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX2FjY19oaF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTVfdm1hY2JzdSA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX001X3ZtYWNic3UiPjsKKworZGVmIGludF9oZXhhZ29uX00yX2RwbXB5dXVfYWNjX3MwIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfZHBtcHl1dV9hY2NfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9ybmRfaGxfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfcm5kX2hsX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfcm5kX2hsX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X3JuZF9obF9zMSI+OworCitkZWYgaW50X2hleGFnb25fRjJfc2ZmbXNfbGliIDoKK0hleGFnb25fZmxvYXRfZmxvYXRmbG9hdGZsb2F0X0ludHJpbnNpYzwiSEVYQUdPTl9GMl9zZmZtc19saWIiPjsKKworZGVmIGludF9oZXhhZ29uX0M0X2NtcG5lcWkgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DNF9jbXBuZXFpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNF9hbmRfeG9yIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTRfYW5kX3hvciI+OworCitkZWYgaW50X2hleGFnb25fQTJfc2F0IDoKK0hleGFnb25faTMyX2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX25hY19saF9zMSA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfbmFjX2xoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX25hY19saF9zMCA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfbmFjX2xoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9hZGRzYXQgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hZGRzYXQiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3N2YXZnaHMgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zdmF2Z2hzIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92cnNhZHViX2FjYyA6CitIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3Zyc2FkdWJfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DMl9iaXRzY2xyaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0MyX2JpdHNjbHJpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9zdWJoX2gxNl9zYXRfaGggOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zdWJoX2gxNl9zYXRfaGgiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3N1YmhfaDE2X3NhdF9obCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX3N1YmhfaDE2X3NhdF9obCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbW1hY3Vsc19yczAgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbWFjdWxzX3JzMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbW1hY3Vsc19yczEgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbWFjdWxzX3JzMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfdnJhZGR1aCA6CitIZXhhZ29uX2kzMl9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX3ZyYWRkdWgiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X2FkZHBfYyA6CitIZXhhZ29uX2k2NGkzMl9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X2FkZHBfYyI+OworCitkZWYgaW50X2hleGFnb25fQzJfeG9yIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzJfeG9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc2xfcl9yX2FjYyA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzbF9yX3JfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tbXB5aF9yczEgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbXB5aF9yczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21tcHloX3JzMCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX21tcHloX3JzMCI+OworCitkZWYgaW50X2hleGFnb25fRjJfY29udl9kZjJ1ZF9jaG9wIDoKK0hleGFnb25faTY0X2RvdWJsZV9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9kZjJ1ZF9jaG9wIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DNF9vcl9vciA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0M0X29yX29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNF92eGFkZHN1YmhyIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzRfdnhhZGRzdWJociI+OworCitkZWYgaW50X2hleGFnb25fUzJfdnNhdGh1YiA6CitIZXhhZ29uX2kzMl9pNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZzYXRodWIiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfZGYyc2YgOgorSGV4YWdvbl9mbG9hdF9kb3VibGVfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfZGYyc2YiPjsKKworZGVmIGludF9oZXhhZ29uX00yX2htbXB5aF9yczEgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9obW1weWhfcnMxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9obW1weWhfczEgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9obW1weWhfczEiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3Zhdmd3ciA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3Zhdmd3ciI+OworCitkZWYgaW50X2hleGFnb25fUzJfdGFibGVpZHhoX2dvb2RzeW50YXggOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl90YWJsZWlkeGhfZ29vZHN5bnRheCI+OworCitkZWYgaW50X2hleGFnb25fQTJfc3h0aCA6CitIZXhhZ29uX2kzMl9pMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX3N4dGgiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3N4dGIgOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zeHRiIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DNF9vcl9vcm4gOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DNF9vcl9vcm4iPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZyY21hY2lfczBjIDoKK0hleGFnb25faTY0X2k2NGk2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdnJjbWFjaV9zMGMiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3N4dHcgOgorSGV4YWdvbl9pNjRfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zeHR3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl92YWJzZGlmZmggOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl92YWJzZGlmZmgiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9hY2NfbGhfczEgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfYWNjX2xoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfYWNjX2xoX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2FjY19saF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfaG1tcHlsX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfaG1tcHlsX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9jbDFwIDoKK0hleGFnb25faTMyX2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzJfY2wxcCI+OworCitkZWYgaW50X2hleGFnb25fTTJfdmFic2RpZmZ3IDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdmFic2RpZmZ3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF9hbmRucCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0E0X2FuZG5wIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DMl92bXV4IDoKK0hleGFnb25faTY0X2kzMmk2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQzJfdm11eCI+OworCitkZWYgaW50X2hleGFnb25fUzJfcGFyaXR5cCA6CitIZXhhZ29uX2kzMl9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX3Bhcml0eXAiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzcl9pX3BfYW5kIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX2lfcF9hbmQiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9pX3Jfb3IgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3JfaV9yX29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X25hY19sbF9zMCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfbmFjX2xsX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X25hY19sbF9zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfbmFjX2xsX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9zZmNtcGVxIDoKK0hleGFnb25faTMyX2Zsb2F0ZmxvYXRfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmY21wZXEiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZhZGRiX21hcCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZhZGRiX21hcCI+OworCitkZWYgaW50X2hleGFnb25fUzJfbHNyX3Jfcl9uYWMgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3Jfcl9yX25hYyI+OworCitkZWYgaW50X2hleGFnb25fQTJfdmNtcGhlcSA6CitIZXhhZ29uX2kzMl9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZjbXBoZXEiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2NsYm5vcm0gOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9jbGJub3JtIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9jbmFjc2NfczEgOgorSGV4YWdvbl9pNjRfaTY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9jbmFjc2NfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX2NuYWNzY19zMCA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX2NuYWNzY19zMCI+OworCitkZWYgaW50X2hleGFnb25fUzRfc3ViYWRkaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1M0X3N1YmFkZGkiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVkX25hY19obF9zMSA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX25hY19obF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5dWRfbmFjX2hsX3MwIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dWRfbmFjX2hsX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNV92YXNyaHJuZF9nb29kc3ludGF4IDoKK0hleGFnb25faTY0X2k2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzVfdmFzcmhybmRfZ29vZHN5bnRheCI+OworCitkZWYgaW50X2hleGFnb25fUzJfdHN0Yml0X3IgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl90c3RiaXRfciI+OworCitkZWYgaW50X2hleGFnb25fUzRfdnJjcm90YXRlIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzRfdnJjcm90YXRlIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tbWFjaHNfczEgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbWFjaHNfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21tYWNoc19zMCA6CitIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX21tYWNoc19zMCI+OworCitkZWYgaW50X2hleGFnb25fUzJfdHN0Yml0X2kgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl90c3RiaXRfaSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X3VwX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X3VwX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9leHRyYWN0dV9ycCA6CitIZXhhZ29uX2kzMl9pMzJpNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX2V4dHJhY3R1X3JwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tbXB5dWhfcnMwIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1weXVoX3JzMCI+OworCitkZWYgaW50X2hleGFnb25fUzJfbHNyX2lfdncgOgorSGV4YWdvbl9pNjRfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3JfaV92dyI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X3JuZF9sbF9zMCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9ybmRfbGxfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9ybmRfbGxfczEgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfcm5kX2xsX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNF9vcl9vciA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX000X29yX29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X2hoX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9oaF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5dV9oaF9zMCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfaGhfczAiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2FzbF9yX3BfYWNjIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX3JfcF9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVfbmFjX2xoX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9uYWNfbGhfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVfbmFjX2xoX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9uYWNfbGhfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9zYXRfbGxfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X2xsX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X2xsX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X3NhdF9sbF9zMSI+OworCitkZWYgaW50X2hleGFnb25fRjJfY29udl93MmRmIDoKK0hleGFnb25fZG91YmxlX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl93MmRmIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9zdWJoX2wxNl9zYXRfaGwgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zdWJoX2wxNl9zYXRfaGwiPjsKKworZGVmIGludF9oZXhhZ29uX0MyX2NtcGVxaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0MyX2NtcGVxaSI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNsX2lfcl9hbmQgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfaV9yX2FuZCI+OworCitkZWYgaW50X2hleGFnb25fUzJfdmNuZWdoIDoKK0hleGFnb25faTY0X2k2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdmNuZWdoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF92Y21wd2VxaSA6CitIZXhhZ29uX2kzMl9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X3ZjbXB3ZXFpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl92ZG1weXJzX3MwIDoKK0hleGFnb25faTMyX2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdmRtcHlyc19zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfdmRtcHlyc19zMSA6CitIZXhhZ29uX2kzMl9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX3ZkbXB5cnNfczEiPjsKKworZGVmIGludF9oZXhhZ29uX000X3hvcl94YWNjIDoKK0hleGFnb25faTY0X2k2NGk2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTRfeG9yX3hhY2MiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZkbXB5c19zMSA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX3ZkbXB5c19zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfdmRtcHlzX3MwIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdmRtcHlzX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92YXZndWJyIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmF2Z3ViciI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5dV9obF9zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfaGxfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVfaGxfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1X2hsX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc2xfcl9yX2FjYyA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9yX3JfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9jbDBwIDoKK0hleGFnb25faTMyX2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzJfY2wwcCI+OworCitkZWYgaW50X2hleGFnb25fUzJfdmFsaWduaWIgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl92YWxpZ25pYiI+OworCitkZWYgaW50X2hleGFnb25fRjJfc2ZmaXh1cGQgOgorSGV4YWdvbl9mbG9hdF9mbG9hdGZsb2F0X0ludHJpbnNpYzwiSEVYQUdPTl9GMl9zZmZpeHVwZCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X3NhdF9ybmRfaGxfczEgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9obF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X3NhdF9ybmRfaGxfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9obF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfY21hY3NjX3MwIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfY21hY3NjX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9jbWFjc2NfczEgOgorSGV4YWdvbl9pNjRfaTY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9jbWFjc2NfczEiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2N0MSA6CitIZXhhZ29uX2kzMl9pMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2N0MSI+OworCitkZWYgaW50X2hleGFnb25fUzJfY3QwIDoKK0hleGFnb25faTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfY3QwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9kcG1weXV1X25hY19zMCA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX2RwbXB5dXVfbmFjX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tbXB5dWxfcnMxIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1weXVsX3JzMSI+OworCitkZWYgaW50X2hleGFnb25fUzRfbnRzdGJpdF9pIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzRfbnRzdGJpdF9pIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9zZmZpeHVwciA6CitIZXhhZ29uX2Zsb2F0X2Zsb2F0X0ludHJpbnNpYzwiSEVYQUdPTl9GMl9zZmZpeHVwciI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNyX3JfcF94b3IgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3Jfcl9wX3hvciI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5dWRfYWNjX2hsX3MwIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dWRfYWNjX2hsX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9hY2NfaGxfczEgOgorSGV4YWdvbl9pNjRfaTY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9hY2NfaGxfczEiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZjbXBoZ3R1IDoKK0hleGFnb25faTMyX2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmNtcGhndHUiPjsKKworZGVmIGludF9oZXhhZ29uX0MyX2FuZG4gOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9hbmRuIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl92bXB5MnNfczBwYWNrIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdm1weTJzX3MwcGFjayI+OworCitkZWYgaW50X2hleGFnb25fUzRfYWRkYWRkaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1M0X2FkZGFkZGkiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weWRfYWNjX2xsX3MwIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9hY2NfbGxfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9hY2Nfc2F0X2hsX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2FjY19zYXRfaGxfczEiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X3JjbXBlcWkgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9yY21wZXFpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNF94b3JfYW5kIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTRfeG9yX2FuZCI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNsX2lfcF9hbmQgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfaV9wX2FuZCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbW1weXVoX3JzMSA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX21tcHl1aF9yczEiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9yX3Jfb3IgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3Jfcl9yX29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF9yb3VuZF9yaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X3JvdW5kX3JpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9tYXggOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9tYXgiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X3JvdW5kX3JyIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfcm91bmRfcnIiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X2NvbWJpbmVpaSA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X2NvbWJpbmVpaSI+OworCitkZWYgaW50X2hleGFnb25fQTRfY29tYmluZWlyIDoKK0hleGFnb25faTY0X2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfY29tYmluZWlyIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DNF9hbmRfb3JuIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzRfYW5kX29ybiI+OworCitkZWYgaW50X2hleGFnb25fTTVfdm1hY2J1dSA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX001X3ZtYWNidXUiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X3JjbXBlcSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X3JjbXBlcSI+OworCitkZWYgaW50X2hleGFnb25fTTRfY21weXJfd2hjIDoKK0hleGFnb25faTMyX2k2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTRfY21weXJfd2hjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc3JfaV9yX2FjYyA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9pX3JfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl92enh0YmggOgorSGV4YWdvbl9pNjRfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl92enh0YmgiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21tYWN1aHNfcnMxIDoKK0hleGFnb25faTY0X2k2NGk2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1hY3Voc19yczEiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9yX3Jfc2F0IDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX3Jfcl9zYXQiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX2NvbWJpbmV3IDoKK0hleGFnb25faTY0X2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfY29tYmluZXciPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9hY2NfbGxfczEgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfYWNjX2xsX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfYWNjX2xsX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2FjY19sbF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfY21weWlfczAgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9jbXB5aV9zMCI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNsX3JfcF9vciA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9yX3Bfb3IiPjsKKworZGVmIGludF9oZXhhZ29uX1M0X29yaV9hc2xfcmkgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9vcmlfYXNsX3JpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DNF9uYml0c3NldCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0M0X25iaXRzc2V0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X2FjY19oaF9zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfYWNjX2hoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X2FjY19oaF9zMCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfYWNjX2hoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X2xsX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9sbF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5dV9sbF9zMCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfbGxfczAiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX2FkZGhfbDE2X2xsIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkaF9sMTZfbGwiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzcl9yX3JfYW5kIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX3Jfcl9hbmQiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X21vZHdyYXB1IDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfbW9kd3JhcHUiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X3JjbXBuZXEgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9yY21wbmVxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2FjY19oaF9zMCA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfYWNjX2hoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2FjY19oaF9zMSA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfYWNjX2hoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9zZmltbV9wIDoKK0hleGFnb25fZmxvYXRfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9zZmltbV9wIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9zZmltbV9uIDoKK0hleGFnb25fZmxvYXRfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9zZmltbV9uIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNF9jbXB5cl93aCA6CitIZXhhZ29uX2kzMl9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX000X2NtcHlyX3doIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc2xfcl9wX2FuZCA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzbF9yX3BfYW5kIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92YXZndWIgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YXZndWIiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfZDJzZiA6CitIZXhhZ29uX2Zsb2F0X2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9kMnNmIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92YXZndWggOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YXZndWgiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X2NtcGJlcWkgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9jbXBiZXFpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9zZmNtcHVvIDoKK0hleGFnb25faTMyX2Zsb2F0ZmxvYXRfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmY21wdW8iPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3Zhdmd1dyA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3Zhdmd1dyI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNyX2lfcF9uYWMgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3JfaV9wX25hYyI+OworCitkZWYgaW50X2hleGFnb25fUzJfdnNhdHdoX25vcGFjayA6CitIZXhhZ29uX2k2NF9pNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZzYXR3aF9ub3BhY2siPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weWRfaGhfczAgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX2hoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2hoX3MxIDoKK0hleGFnb25faTY0X2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9oaF9zMSI+OworCitkZWYgaW50X2hleGFnb25fUzJfbHNsX3JfcF9vciA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzbF9yX3Bfb3IiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX21pbnUgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9taW51Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X2xoX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X3NhdF9saF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTRfb3JfYW5kbiA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX000X29yX2FuZG4iPjsKKworZGVmIGludF9oZXhhZ29uX0EyX21pbnAgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl9taW5wIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNF9vcl9hbmRpeCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1M0X29yX2FuZGl4Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfcm5kX2xoX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X3JuZF9saF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X3JuZF9saF9zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9ybmRfbGhfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21tcHl1aF9zMCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX21tcHl1aF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbW1weXVoX3MxIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1weXVoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfYWNjX3NhdF9saF9zMCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9hY2Nfc2F0X2xoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9zZmNtcGdlIDoKK0hleGFnb25faTMyX2Zsb2F0ZmxvYXRfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmY21wZ2UiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX3NmbWluIDoKK0hleGFnb25fZmxvYXRfZmxvYXRmbG9hdF9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZtaW4iPjsKKworZGVmIGludF9oZXhhZ29uX0YyX3NmY21wZ3QgOgorSGV4YWdvbl9pMzJfZmxvYXRmbG9hdF9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZjbXBndCI+OworCitkZWYgaW50X2hleGFnb25fTTRfdnBtcHloIDoKK0hleGFnb25faTY0X2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTRfdnBtcHloIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tbWFjdWhzX3JzMCA6CitIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX21tYWN1aHNfcnMwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX3JuZF9saF9zMSA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfcm5kX2xoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX3JuZF9saF9zMCA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfcm5kX2xoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9yb3VuZHNhdCA6CitIZXhhZ29uX2kzMl9pNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3JvdW5kc2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9jdDFwIDoKK0hleGFnb25faTMyX2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzJfY3QxcCI+OworCitkZWYgaW50X2hleGFnb25fUzRfZXh0cmFjdF9ycCA6CitIZXhhZ29uX2kzMl9pMzJpNjRfSW50cmluc2ljPCJIRVhBR09OX1M0X2V4dHJhY3RfcnAiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzbF9yX3Jfb3IgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc2xfcl9yX29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DNF9jbXBsdGV1aSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0M0X2NtcGx0ZXVpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNF9hZGRpX2xzcl9yaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1M0X2FkZGlfbHNyX3JpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF90ZnJjcHAgOgorSGV4YWdvbl9pNjRfaTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BNF90ZnJjcHAiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9pX3N2d190cnVuIDoKK0hleGFnb25faTMyX2k2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX2lfc3Z3X3RydW4iPjsKKworZGVmIGludF9oZXhhZ29uX0E0X2NtcGhndGkgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9jbXBoZ3RpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF92cm1pbmggOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF92cm1pbmgiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X3ZybWludyA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X3ZybWludyI+OworCitkZWYgaW50X2hleGFnb25fQTRfY21waGd0dSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X2NtcGhndHUiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2luc2VydHBfcnAgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9TMl9pbnNlcnRwX3JwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92bmF2Z2hjciA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZuYXZnaGNyIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNF9zdWJpX2FzbF9yaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1M0X3N1YmlfYXNsX3JpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc2xfcl92aCA6CitIZXhhZ29uX2k2NF9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzbF9yX3ZoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfaGhfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfaGhfczAiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZzdWJ3cyA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZzdWJ3cyI+OworCitkZWYgaW50X2hleGFnb25fQTJfc2F0aCA6CitIZXhhZ29uX2kzMl9pMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX3NhdGgiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2FzbF9yX3BfeG9yIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX3JfcF94b3IiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3NhdGIgOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zYXRiIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DMl9jbXBsdHUgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9jbXBsdHUiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2luc2VydHAgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9pbnNlcnRwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX3JuZF9sbF9zMSA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfcm5kX2xsX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX3JuZF9sbF9zMCA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfcm5kX2xsX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc3JfaV9wX25hYyA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9pX3BfbmFjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9leHRyYWN0dXBfcnAgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9TMl9leHRyYWN0dXBfcnAiPjsKKworZGVmIGludF9oZXhhZ29uX1M0X3Z4YWRkc3VidyA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX1M0X3Z4YWRkc3VidyI+OworCitkZWYgaW50X2hleGFnb25fUzRfdnhhZGRzdWJoIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzRfdnhhZGRzdWJoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9hc3JoIDoKK0hleGFnb25faTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYXNyaCI+OworCitkZWYgaW50X2hleGFnb25fUzRfZXh0cmFjdHBfcnAgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9TNF9leHRyYWN0cF9ycCI+OworCitkZWYgaW50X2hleGFnb25fUzJfbHNyX3Jfcl9hY2MgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3Jfcl9yX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5ZF9uYWNfbGxfczEgOgorSGV4YWdvbl9pNjRfaTY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX25hY19sbF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5ZF9uYWNfbGxfczAgOgorSGV4YWdvbl9pNjRfaTY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlkX25hY19sbF9zMCI+OworCitkZWYgaW50X2hleGFnb25fQzJfb3IgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9vciI+OworCitkZWYgaW50X2hleGFnb25fTTJfbW1weXVsX3MxIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1weXVsX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl92cmNtYWNyX3MwIDoKK0hleGFnb25faTY0X2k2NGk2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdnJjbWFjcl9zMCI+OworCitkZWYgaW50X2hleGFnb25fQTJfeG9yIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfeG9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9hZGQgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hZGQiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZzdWJ1YnMgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92c3VidWJzIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl92bXB5MnNfczEgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92bXB5MnNfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZtcHkyc19zMCA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX3ZtcHkyc19zMCI+OworCitkZWYgaW50X2hleGFnb25fQTJfdnJhZGR1Yl9hY2MgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92cmFkZHViX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fRjJfc2ZpbnZzcXJ0YSA6CitIZXhhZ29uX2Zsb2F0aTMyX2Zsb2F0X0ludHJpbnNpYzwiSEVYQUdPTl9GMl9zZmludnNxcnRhIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9jdDBwIDoKK0hleGFnb25faTMyX2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzJfY3QwcCI+OworCitkZWYgaW50X2hleGFnb25fQTJfc3ZhZGRoIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3ZhZGRoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl92Y3JvdGF0ZSA6CitIZXhhZ29uX2k2NF9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX3Zjcm90YXRlIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9hc2xoIDoKK0hleGFnb25faTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYXNsaCI+OworCitkZWYgaW50X2hleGFnb25fQTJfc3ViaF9oMTZfbGggOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zdWJoX2gxNl9saCI+OworCitkZWYgaW50X2hleGFnb25fQTJfc3ViaF9oMTZfbGwgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zdWJoX2gxNl9sbCI+OworCitkZWYgaW50X2hleGFnb25fTTJfaG1tcHlsX3JzMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX2htbXB5bF9yczEiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9yX3AgOgorSGV4YWdvbl9pNjRfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3Jfcl9wIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl92c3BsYXRyaCA6CitIZXhhZ29uX2k2NF9pMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZzcGxhdHJoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc3Jfcl9yIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX3JfciI+OworCitkZWYgaW50X2hleGFnb25fQTJfYWRkaF9oMTZfaGwgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hZGRoX2gxNl9obCI+OworCitkZWYgaW50X2hleGFnb25fUzJfdnNwbGF0cmIgOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl92c3BsYXRyYiI+OworCitkZWYgaW50X2hleGFnb25fQTJfYWRkaF9oMTZfaGggOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hZGRoX2gxNl9oaCI+OworCitkZWYgaW50X2hleGFnb25fTTJfY21weXJfczAgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9jbXB5cl9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfZHBtcHlzc19ybmRfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9kcG1weXNzX3JuZF9zMCI+OworCitkZWYgaW50X2hleGFnb25fQzJfbXV4cmkgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9tdXhyaSI+OworCitkZWYgaW50X2hleGFnb25fTTJfdm1hYzJlc19zMCA6CitIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX3ZtYWMyZXNfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZtYWMyZXNfczEgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl92bWFjMmVzX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DMl9weGZlcl9tYXAgOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9weGZlcl9tYXAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVfbGhfczEgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1X2xoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X2xoX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9saF9zMCI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNsX2lfcl9vciA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9pX3Jfb3IiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weWRfYWNjX2hsX3MwIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9hY2NfaGxfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weWRfYWNjX2hsX3MxIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9hY2NfaGxfczEiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9yX3BfbmFjIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX3JfcF9uYWMiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZhZGR3IDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmFkZHciPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9pX3JfYW5kIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX2lfcl9hbmQiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZhZGRoIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmFkZGgiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9uYWNfc2F0X2xoX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X25hY19zYXRfbGhfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9uYWNfc2F0X2xoX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X25hY19zYXRfbGhfczAiPjsKKworZGVmIGludF9oZXhhZ29uX0MyX2NtcGVxcCA6CitIZXhhZ29uX2kzMl9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0MyX2NtcGVxcCI+OworCitkZWYgaW50X2hleGFnb25fTTRfbXB5cmlfYWRkaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX000X21weXJpX2FkZGkiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX25vdCA6CitIZXhhZ29uX2kzMl9pMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX25vdCI+OworCitkZWYgaW50X2hleGFnb25fUzRfYW5kaV9sc3JfcmkgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9hbmRpX2xzcl9yaSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbWFjc2lwIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbWFjc2lwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl90ZnJjcnIgOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl90ZnJjcnIiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21hY3NpbiA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21hY3NpbiI+OworCitkZWYgaW50X2hleGFnb25fQzJfb3JuIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzJfb3JuIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNF9hbmRfYW5kbiA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX000X2FuZF9hbmRuIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9zZm1weSA6CitIZXhhZ29uX2Zsb2F0X2Zsb2F0ZmxvYXRfSW50cmluc2ljPCJIRVhBR09OX0YyX3NmbXB5Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9uYWNfaGhfczEgOgorSGV4YWdvbl9pNjRfaTY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9uYWNfaGhfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVkX25hY19oaF9zMCA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX25hY19oaF9zMCI+OworCitkZWYgaW50X2hleGFnb25fUzJfbHNyX3JfcF9hY2MgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3Jfcl9wX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNyX3JfdncgOgorSGV4YWdvbl9pNjRfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3Jfcl92dyI+OworCitkZWYgaW50X2hleGFnb25fTTRfYW5kX29yIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTRfYW5kX29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc3Jfcl92aCA6CitIZXhhZ29uX2k2NF9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9yX3ZoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DMl9tYXNrIDoKK0hleGFnb25faTY0X2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzJfbWFzayI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X25hY19oaF9zMCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9uYWNfaGhfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9uYWNfaGhfczEgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfbmFjX2hoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfdXBfczFfc2F0IDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X3VwX3MxX3NhdCI+OworCitkZWYgaW50X2hleGFnb25fQTRfdmNtcGJndCA6CitIZXhhZ29uX2kzMl9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0E0X3ZjbXBiZ3QiPjsKKworZGVmIGludF9oZXhhZ29uX001X3ZybWFjYnN1IDoKK0hleGFnb25faTY0X2k2NGk2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTVfdnJtYWNic3UiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX3RhYmxlaWR4d19nb29kc3ludGF4IDoKK0hleGFnb25faTMyX2kzMmkzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdGFibGVpZHh3X2dvb2RzeW50YXgiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3Zyc2FkdWIgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92cnNhZHViIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl90ZnJyY3IgOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl90ZnJyY3IiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZyY21weXNfYWNjX3MxIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdnJjbXB5c19hY2NfczEiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX2RmY21wZ2UgOgorSGV4YWdvbl9pMzJfZG91YmxlZG91YmxlX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9kZmNtcGdlIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9hY2NpaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX2FjY2lpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNV92YWRkaHVicyA6CitIZXhhZ29uX2kzMl9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0E1X3ZhZGRodWJzIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92bWF4dyA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZtYXh3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92bWF4YiA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZtYXhiIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92bWF4aCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZtYXhoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl92c3h0aHcgOgorSGV4YWdvbl9pNjRfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl92c3h0aHciPjsKKworZGVmIGludF9oZXhhZ29uX1M0X2FuZGlfYXNsX3JpIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzRfYW5kaV9hc2xfcmkiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2FzbF9pX3BfbmFjIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX2lfcF9uYWMiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzbF9yX3BfeG9yIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNsX3JfcF94b3IiPjsKKworZGVmIGludF9oZXhhZ29uX0MyX2NtcGd0IDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzJfY21wZ3QiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfZGYyZF9jaG9wIDoKK0hleGFnb25faTY0X2RvdWJsZV9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9kZjJkX2Nob3AiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVfbmFjX2hsX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9uYWNfaGxfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVfbmFjX2hsX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9uYWNfaGxfczEiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfc2YydyA6CitIZXhhZ29uX2kzMl9mbG9hdF9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9zZjJ3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc3Jfcl9wX29yIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX3JfcF9vciI+OworCitkZWYgaW50X2hleGFnb25fRjJfc2ZjbGFzcyA6CitIZXhhZ29uX2kzMl9mbG9hdGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZjbGFzcyI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5dWRfYWNjX2xoX3MwIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dWRfYWNjX2xoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNF94b3JfYW5kbiA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX000X3hvcl9hbmRuIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hZGRhc2xfcnJyaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2FkZGFzbF9ycnJpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNV92ZG1weWJzdSA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX001X3ZkbXB5YnN1Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X25hY19oaF9zMCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfbmFjX2hoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1X25hY19oaF9zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVfbmFjX2hoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9hZGRpIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkaSI+OworCitkZWYgaW50X2hleGFnb25fQTJfYWRkcCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX2FkZHAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZtcHkyc19zMXBhY2sgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92bXB5MnNfczFwYWNrIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNF9jbGJwbm9ybSA6CitIZXhhZ29uX2kzMl9pNjRfSW50cmluc2ljPCJIRVhBR09OX1M0X2NsYnBub3JtIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF9yb3VuZF9ycl9zYXQgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9yb3VuZF9ycl9zYXQiPjsKKworZGVmIGludF9oZXhhZ29uX00yX25hY2NpIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbmFjY2kiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX3NodWZmZWggOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9TMl9zaHVmZmVoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc3JfaV9yX2FuZCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9pX3JfYW5kIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9oaF9zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9zYXRfcm5kX2hoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X3JuZF9oaF9zMCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9zYXRfcm5kX2hoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9jb252X3NmMnV3IDoKK0hleGFnb25faTMyX2Zsb2F0X0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X3NmMnV3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92c3ViaCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZzdWJoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9jb252X3NmMnVkIDoKK0hleGFnb25faTY0X2Zsb2F0X0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X3NmMnVkIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92c3VidyA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZzdWJ3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92Y21wd2d0IDoKK0hleGFnb25faTMyX2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmNtcHdndCI+OworCitkZWYgaW50X2hleGFnb25fTTRfeG9yX29yIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTRfeG9yX29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9jb252X3NmMnV3X2Nob3AgOgorSGV4YWdvbl9pMzJfZmxvYXRfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfc2YydXdfY2hvcCI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNsX3JfdncgOgorSGV4YWdvbl9pNjRfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfcl92dyI+OworCitkZWYgaW50X2hleGFnb25fUzJfdnNhdHd1aF9ub3BhY2sgOgorSGV4YWdvbl9pNjRfaTY0X0ludHJpbnNpYzwiSEVYQUdPTl9TMl92c2F0d3VoX25vcGFjayI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNsX3JfdmggOgorSGV4YWdvbl9pNjRfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfcl92aCI+OworCitkZWYgaW50X2hleGFnb25fQTJfc3ZzdWJ1aHMgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zdnN1YnVocyI+OworCitkZWYgaW50X2hleGFnb25fTTVfdm1weWJzdSA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX001X3ZtcHlic3UiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3N1YmhfbDE2X3NhdF9sbCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX3N1YmhfbDE2X3NhdF9sbCI+OworCitkZWYgaW50X2hleGFnb25fQzRfYW5kX2FuZCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0M0X2FuZF9hbmQiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVfYWNjX2hsX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9hY2NfaGxfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVfYWNjX2hsX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dV9hY2NfaGxfczAiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzcl9yX3AgOgorSGV4YWdvbl9pNjRfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3Jfcl9wIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc3Jfcl9yIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX3JfciI+OworCitkZWYgaW50X2hleGFnb25fQTRfc3VicF9jIDoKK0hleGFnb25faTY0aTMyX2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfc3VicF9jIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92c3ViaHMgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92c3ViaHMiPjsKKworZGVmIGludF9oZXhhZ29uX0MyX3ZpdHBhY2sgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DMl92aXRwYWNrIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92YXZndWhyIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmF2Z3VociI+OworCitkZWYgaW50X2hleGFnb25fUzJfdnNwbGljZXJiIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdnNwbGljZXJiIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DNF9uYml0c2NsciA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0M0X25iaXRzY2xyIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92Y21wYmd0dSA6CitIZXhhZ29uX2kzMl9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZjbXBiZ3R1Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9jbXB5c19zMSA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX2NtcHlzX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9jbXB5c19zMCA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX2NtcHlzX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9kZmNtcHVvIDoKK0hleGFnb25faTMyX2RvdWJsZWRvdWJsZV9JbnRyaW5zaWM8IkhFWEFHT05fRjJfZGZjbXB1byI+OworCitkZWYgaW50X2hleGFnb25fUzJfc2h1ZmZvYiA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX3NodWZmb2IiPjsKKworZGVmIGludF9oZXhhZ29uX0MyX2FuZCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0MyX2FuZCI+OworCitkZWYgaW50X2hleGFnb25fUzVfcG9wY291bnRwIDoKK0hleGFnb25faTMyX2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzVfcG9wY291bnRwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNF9leHRyYWN0cCA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1M0X2V4dHJhY3RwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9jbDAgOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9jbDAiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X3ZjbXBiZ3RpIDoKK0hleGFnb25faTMyX2k2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfdmNtcGJndGkiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21tYWNsc19zMSA6CitIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX21tYWNsc19zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbW1hY2xzX3MwIDoKK0hleGFnb25faTY0X2k2NGk2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1hY2xzX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DNF9jbXBuZXEgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DNF9jbXBuZXEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZtYWMyZXMgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl92bWFjMmVzIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl92ZG1hY3NfczAgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl92ZG1hY3NfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZkbWFjc19zMSA6CitIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX3ZkbWFjc19zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5dWRfbGxfczAgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9sbF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5dWRfbGxfczEgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9sbF9zMSI+OworCitkZWYgaW50X2hleGFnb25fUzJfY2xiIDoKK0hleGFnb25faTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfY2xiIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfbmFjX2xsX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X25hY19sbF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X25hY19sbF9zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9uYWNfbGxfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weWRfbmFjX2hsX3MxIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9uYWNfaGxfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weWRfbmFjX2hsX3MwIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9uYWNfaGxfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21hY2kgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tYWNpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92bWF4dWggOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92bWF4dWgiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X2JpdHNwbGl0aSA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X2JpdHNwbGl0aSI+OworCitkZWYgaW50X2hleGFnb25fQTJfdm1heHViIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm1heHViIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9oaF9zMCA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX2hoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9oaF9zMSA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX2hoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl92cm1hY19zMCA6CitIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX3ZybWFjX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfc2F0X2xoX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X3NhdF9saF9zMCI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNsX3Jfcl9zYXQgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfcl9yX3NhdCI+OworCitkZWYgaW50X2hleGFnb25fRjJfY29udl9zZjJkIDoKK0hleGFnb25faTY0X2Zsb2F0X0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X3NmMmQiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9yX3JfbmFjIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX3Jfcl9uYWMiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX2RmaW1tX24gOgorSGV4YWdvbl9kb3VibGVfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9kZmltbV9uIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF9jbXBoZ3QgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9jbXBoZ3QiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX2RmaW1tX3AgOgorSGV4YWdvbl9kb3VibGVfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9kZmltbV9wIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9hY2NfbGhfczEgOgorSGV4YWdvbl9pNjRfaTY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9hY2NfbGhfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZjbXB5X3MxX3NhdF9yIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdmNtcHlfczFfc2F0X3IiPjsKKworZGVmIGludF9oZXhhZ29uX000X21weXJpX2FkZHJfdTIgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9tcHlyaV9hZGRyX3UyIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl92Y21weV9zMV9zYXRfaSA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX3ZjbXB5X3MxX3NhdF9pIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc2xfcl9wX25hYyA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzbF9yX3BfbmFjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNV92cm1hY2J1dSA6CitIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX001X3ZybWFjYnV1Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9TNV9hc3JodWJfcm5kX3NhdF9nb29kc3ludGF4IDoKK0hleGFnb25faTMyX2k2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzVfYXNyaHViX3JuZF9zYXRfZ29vZHN5bnRheCI+OworCitkZWYgaW50X2hleGFnb25fUzJfdnNwbGljZWliIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdnNwbGljZWliIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9kcG1weXNzX2FjY19zMCA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX2RwbXB5c3NfYWNjX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9jbmFjc19zMSA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX2NuYWNzX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9jbmFjc19zMCA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX2NuYWNzX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9tYXh1IDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfbWF4dSI+OworCitkZWYgaW50X2hleGFnb25fQTJfbWF4cCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX21heHAiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX2FuZGlyIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYW5kaXIiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX3NmcmVjaXBhIDoKK0hleGFnb25fZmxvYXRpMzJfZmxvYXRmbG9hdF9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZyZWNpcGEiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX2NvbWJpbmVpaSA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX2NvbWJpbmVpaSI+OworCitkZWYgaW50X2hleGFnb25fQTRfb3JuIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfb3JuIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF9jbXBiZ3R1aSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X2NtcGJndHVpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc3Jfcl9yX29yIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX3Jfcl9vciI+OworCitkZWYgaW50X2hleGFnb25fQTRfdmNtcGJlcWkgOgorSGV4YWdvbl9pMzJfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF92Y21wYmVxaSI+OworCitkZWYgaW50X2hleGFnb25fUzJfbHNsX3JfciA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzbF9yX3IiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzbF9yX3AgOgorSGV4YWdvbl9pNjRfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc2xfcl9wIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9vciA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9kZmNtcGVxIDoKK0hleGFnb25faTMyX2RvdWJsZWRvdWJsZV9JbnRyaW5zaWM8IkhFWEFHT05fRjJfZGZjbXBlcSI+OworCitkZWYgaW50X2hleGFnb25fQzJfY21wZXEgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9jbXBlcSI+OworCitkZWYgaW50X2hleGFnb25fQTJfdGZycCA6CitIZXhhZ29uX2k2NF9pNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3RmcnAiPjsKKworZGVmIGludF9oZXhhZ29uX0M0X2FuZF9hbmRuIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzRfYW5kX2FuZG4iPjsKKworZGVmIGludF9oZXhhZ29uX1MyX3ZzYXRodWJfbm9wYWNrIDoKK0hleGFnb25faTY0X2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdnNhdGh1Yl9ub3BhY2siPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3NhdHVoIDoKK0hleGFnb25faTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc2F0dWgiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3NhdHViIDoKK0hleGFnb25faTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc2F0dWIiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZyY21weXNfczEgOgorSGV4YWdvbl9pNjRfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92cmNtcHlzX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNF9vcl9vcmkgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9vcl9vcmkiPjsKKworZGVmIGludF9oZXhhZ29uX0M0X2Zhc3Rjb3JuZXI5X25vdCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0M0X2Zhc3Rjb3JuZXI5X25vdCI+OworCitkZWYgaW50X2hleGFnb25fQTJfdGZyaWggOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl90ZnJpaCI+OworCitkZWYgaW50X2hleGFnb25fQTJfdGZyaWwgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl90ZnJpbCI+OworCitkZWYgaW50X2hleGFnb25fTTRfbXB5cmlfYWRkciA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX000X21weXJpX2FkZHIiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX3Z0cnVuZWhiIDoKK0hleGFnb25faTMyX2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdnRydW5laGIiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZhYnN3IDoKK0hleGFnb25faTY0X2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmFic3ciPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZhYnNoIDoKK0hleGFnb25faTY0X2k2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmFic2giPjsKKworZGVmIGludF9oZXhhZ29uX0YyX3Nmc3ViIDoKK0hleGFnb25fZmxvYXRfZmxvYXRmbG9hdF9JbnRyaW5zaWM8IkhFWEFHT05fRjJfc2ZzdWIiPjsKKworZGVmIGludF9oZXhhZ29uX0MyX211eGlpIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzJfbXV4aWkiPjsKKworZGVmIGludF9oZXhhZ29uX0MyX211eGlyIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzJfbXV4aXIiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3N3aXogOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zd2l6Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc3JfaV9wX2FuZCA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9pX3BfYW5kIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9jbXB5cnNjX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfY21weXJzY19zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfY21weXJzY19zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX2NtcHlyc2NfczEiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZyYWRkdWIgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92cmFkZHViIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF90bGJtYXRjaCA6CitIZXhhZ29uX2kzMl9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X3RsYm1hdGNoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9jb252X2RmMndfY2hvcCA6CitIZXhhZ29uX2kzMl9kb3VibGVfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfZGYyd19jaG9wIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9hbmQgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hbmQiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzcl9yX3BfYW5kIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX3JfcF9hbmQiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9uYWNfc2F0X2xsX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X25hY19zYXRfbGxfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9uYWNfc2F0X2xsX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X25hY19zYXRfbGxfczAiPjsKKworZGVmIGludF9oZXhhZ29uX1M0X2V4dHJhY3QgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9leHRyYWN0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92Y21wd2VxIDoKK0hleGFnb25faTMyX2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdmNtcHdlcSI+OworCitkZWYgaW50X2hleGFnb25fTTJfYWNjaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX2FjY2kiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzcl9pX3BfYWNjIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNyX2lfcF9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzcl9pX3Bfb3IgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3JfaV9wX29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9jb252X3VkMnNmIDoKK0hleGFnb25fZmxvYXRfaTY0X0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X3VkMnNmIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl90ZnIgOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl90ZnIiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9pX3Bfb3IgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3JfaV9wX29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9zdWJyaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX3N1YnJpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF92cm1heHV3IDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfdnJtYXh1dyI+OworCitkZWYgaW50X2hleGFnb25fTTVfdm1weWJ1dSA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX001X3ZtcHlidXUiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X3ZybWF4dWggOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF92cm1heHVoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc2xfaV92dyA6CitIZXhhZ29uX2k2NF9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2FzbF9pX3Z3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92YXZndyA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3Zhdmd3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9icmV2IDoKK0hleGFnb25faTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYnJldiI+OworCitkZWYgaW50X2hleGFnb25fQTJfdmF2Z2ggOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YXZnaCI+OworCitkZWYgaW50X2hleGFnb25fUzJfY2xyYml0X2kgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9jbHJiaXRfaSI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNsX2lfdmggOgorSGV4YWdvbl9pNjRfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfaV92aCI+OworCitkZWYgaW50X2hleGFnb25fUzJfbHNyX2lfcl9vciA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9pX3Jfb3IiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xzbF9yX3JfbmFjIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfbHNsX3Jfcl9uYWMiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21tcHlsX3JzMSA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX21tcHlsX3JzMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5dWRfaGxfczEgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9obF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbW1weWxfczAgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbXB5bF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbW1weWxfczEgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbXB5bF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbmFjY2lpIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbmFjY2lpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl92cm5kcGFja3docyA6CitIZXhhZ29uX2kzMl9pNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZybmRwYWNrd2hzIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl92dHJ1bmV3aCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX3Z0cnVuZXdoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9kcG1weXNzX25hY19zMCA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX2RwbXB5c3NfbmFjX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2xsX3MwIDoKK0hleGFnb25faTY0X2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9sbF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5ZF9sbF9zMSA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfbGxfczEiPjsKKworZGVmIGludF9oZXhhZ29uX000X21hY191cF9zMV9zYXQgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9tYWNfdXBfczFfc2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9TNF92cmNyb3RhdGVfYWNjIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzRfdnJjcm90YXRlX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fRjJfY29udl91dzJkZiA6CitIZXhhZ29uX2RvdWJsZV9pMzJfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfdXcyZGYiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZhZGR1YnMgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YWRkdWJzIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc3Jfcl9yX2FjYyA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9yX3JfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9vcmlyIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfb3JpciI+OworCitkZWYgaW50X2hleGFnb25fQTJfYW5kcCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX2FuZHAiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2xmc3AgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sZnNwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9taW4gOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9taW4iPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXNtaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXNtaSI+OworCitkZWYgaW50X2hleGFnb25fTTJfdmNtcHlfczBfc2F0X3IgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl92Y21weV9zMF9zYXRfciI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5dV9hY2NfbGxfczEgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1X2FjY19sbF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5dV9hY2NfbGxfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1X2FjY19sbF9zMCI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNyX3Jfc3Z3X3RydW4gOgorSGV4YWdvbl9pMzJfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3Jfcl9zdndfdHJ1biI+OworCitkZWYgaW50X2hleGFnb25fTTJfbW1weWhfczAgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbXB5aF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbW1weWhfczEgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbXB5aF9zMSI+OworCitkZWYgaW50X2hleGFnb25fRjJfY29udl9zZjJkZiA6CitIZXhhZ29uX2RvdWJsZV9mbG9hdF9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9zZjJkZiI+OworCitkZWYgaW50X2hleGFnb25fUzJfdnRydW5vaGIgOgorSGV4YWdvbl9pMzJfaTY0X0ludHJpbnNpYzwiSEVYQUdPTl9TMl92dHJ1bm9oYiI+OworCitkZWYgaW50X2hleGFnb25fRjJfY29udl9zZjJkX2Nob3AgOgorSGV4YWdvbl9pNjRfZmxvYXRfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfc2YyZF9jaG9wIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX2xoX3MwIDoKK0hleGFnb25faTY0X2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9saF9zMCI+OworCitkZWYgaW50X2hleGFnb25fRjJfY29udl9kZjJ3IDoKK0hleGFnb25faTMyX2RvdWJsZV9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9kZjJ3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9TNV9hc3JodWJfc2F0IDoKK0hleGFnb25faTMyX2k2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzVfYXNyaHViX3NhdCI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNsX2lfcl94YWNjIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX2lfcl94YWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9jb252X2RmMmQgOgorSGV4YWdvbl9pNjRfZG91YmxlX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X2RmMmQiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21tYWN1bHNfczEgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbWFjdWxzX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tbWFjdWxzX3MwIDoKK0hleGFnb25faTY0X2k2NGk2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1hY3Vsc19zMCI+OworCitkZWYgaW50X2hleGFnb25fQTJfc3ZhZGR1aHMgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zdmFkZHVocyI+OworCitkZWYgaW50X2hleGFnb25fRjJfY29udl9zZjJ3X2Nob3AgOgorSGV4YWdvbl9pMzJfZmxvYXRfSW50cmluc2ljPCJIRVhBR09OX0YyX2NvbnZfc2Yyd19jaG9wIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9zdnNhdGh1YiA6CitIZXhhZ29uX2kzMl9pMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX3N2c2F0aHViIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX3JuZF9obF9zMSA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfcm5kX2hsX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX3JuZF9obF9zMCA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfcm5kX2hsX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9zZXRiaXRfciA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX3NldGJpdF9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92YXZnaHIgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YXZnaHIiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX3NmZm1hX3NjIDoKK0hleGFnb25fZmxvYXRfZmxvYXRmbG9hdGZsb2F0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9zZmZtYV9zYyI+OworCitkZWYgaW50X2hleGFnb25fRjJfZGZjbGFzcyA6CitIZXhhZ29uX2kzMl9kb3VibGVpMzJfSW50cmluc2ljPCJIRVhBR09OX0YyX2RmY2xhc3MiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfZGYydWQgOgorSGV4YWdvbl9pNjRfZG91YmxlX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9jb252X2RmMnVkIj47CisKK2RlZiBpbnRfaGV4YWdvbl9GMl9jb252X2RmMnV3IDoKK0hleGFnb25faTMyX2RvdWJsZV9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9kZjJ1dyI+OworCitkZWYgaW50X2hleGFnb25fTTJfY21weXJzX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfY21weXJzX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9jbXB5cnNfczEgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9jbXB5cnNfczEiPjsKKworZGVmIGludF9oZXhhZ29uX0M0X2NtcGx0ZWkgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DNF9jbXBsdGVpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DNF9jbXBsdGV1IDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzRfY21wbHRldSI+OworCitkZWYgaW50X2hleGFnb25fQTJfdnN1YmJfbWFwIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdnN1YmJfbWFwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9zdWJoX2wxNl9sbCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX3N1YmhfbDE2X2xsIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc3JfaV9yX3JuZCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9pX3Jfcm5kIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl92cm1weV9zMCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX3ZybXB5X3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX3JuZF9oaF9zMSA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfcm5kX2hoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlkX3JuZF9oaF9zMCA6CitIZXhhZ29uX2k2NF9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weWRfcm5kX2hoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9taW51cCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX21pbnVwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl92YWxpZ25yYiA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZhbGlnbnJiIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9hc3Jfcl9wX2FjYyA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2Fzcl9yX3BfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tbXB5bF9yczAgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbXB5bF9yczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZyY21hY2lfczAgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl92cmNtYWNpX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92YWRkdWIgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YWRkdWIiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX2NvbWJpbmVfbGggOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9jb21iaW5lX2xoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNV92ZG1hY2JzdSA6CitIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX001X3ZkbWFjYnN1Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9jb21iaW5lX2xsIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfY29tYmluZV9sbCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5dWRfaGxfczAgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9obF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfdnJjbXB5aV9zMGMgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl92cmNtcHlpX3MwYyI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNyX2lfcF9ybmQgOgorSGV4YWdvbl9pNjRfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3JfaV9wX3JuZCI+OworCitkZWYgaW50X2hleGFnb25fQTJfYWRkcHNhdCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX2FkZHBzYXQiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3N2YWRkaHMgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zdmFkZGhzIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNF9vcmlfbHNyX3JpIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzRfb3JpX2xzcl9yaSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X3NhdF9ybmRfbGxfczEgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9sbF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X3NhdF9ybmRfbGxfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfc2F0X3JuZF9sbF9zMCI+OworCitkZWYgaW50X2hleGFnb25fQTJfdm1pbncgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92bWludyI+OworCitkZWYgaW50X2hleGFnb25fQTJfdm1pbmggOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92bWluaCI+OworCitkZWYgaW50X2hleGFnb25fTTJfdnJjbXB5cl9zMCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX3ZyY21weXJfczAiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZtaW5iIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm1pbmIiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZjbWFjX3MwX3NhdF9pIDoKK0hleGFnb25faTY0X2k2NGk2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdmNtYWNfczBfc2F0X2kiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVkX2xoX3MwIDoKK0hleGFnb25faTY0X2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dWRfbGhfczAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVkX2xoX3MxIDoKK0hleGFnb25faTY0X2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5dWRfbGhfczEiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2FzbF9yX3Jfb3IgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfcl9yX29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNF9sc2xpIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzRfbHNsaSI+OworCitkZWYgaW50X2hleGFnb25fUzJfbHNsX3JfdncgOgorSGV4YWdvbl9pNjRfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc2xfcl92dyI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X2hoX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2hoX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNF92cm1weWVoX3MwIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTRfdnJtcHllaF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTRfdnJtcHllaF9zMSA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX000X3ZybXB5ZWhfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weV9uYWNfbGhfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfbmFjX2xoX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfbmFjX2xoX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X25hY19saF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfdnJhZGRoIDoKK0hleGFnb25faTMyX2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdnJhZGRoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DMl90ZnJycCA6CitIZXhhZ29uX2kzMl9pMzJfSW50cmluc2ljPCJIRVhBR09OX0MyX3RmcnJwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfYWNjX3NhdF9sbF9zMCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9hY2Nfc2F0X2xsX3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfYWNjX3NhdF9sbF9zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9hY2Nfc2F0X2xsX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl92dHJ1bm93aCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX3Z0cnVub3doIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9hYnMgOgorSGV4YWdvbl9pMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hYnMiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X2NtcGJlcSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X2NtcGJlcSI+OworCitkZWYgaW50X2hleGFnb25fQTJfbmVncCA6CitIZXhhZ29uX2k2NF9pNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX25lZ3AiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2FzbF9pX3Jfc2F0IDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNsX2lfcl9zYXQiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX2FkZGhfbDE2X3NhdF9obCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX2FkZGhfbDE2X3NhdF9obCI+OworCitkZWYgaW50X2hleGFnb25fUzJfdnNhdHd1aCA6CitIZXhhZ29uX2kzMl9pNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZzYXR3dWgiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX2RmY21wZ3QgOgorSGV4YWdvbl9pMzJfZG91YmxlZG91YmxlX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9kZmNtcGd0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9zdnNhdGhiIDoKK0hleGFnb25faTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfc3ZzYXRoYiI+OworCitkZWYgaW50X2hleGFnb25fQzJfY21wZ3R1cCA6CitIZXhhZ29uX2kzMl9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0MyX2NtcGd0dXAiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X2Nyb3VuZF9yaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X2Nyb3VuZF9yaSI+OworCitkZWYgaW50X2hleGFnb25fUzRfY2xicGFkZGkgOgorSGV4YWdvbl9pMzJfaTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TNF9jbGJwYWRkaSI+OworCitkZWYgaW50X2hleGFnb25fQTRfY3JvdW5kX3JyIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfY3JvdW5kX3JyIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DMl9tdXggOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9DMl9tdXgiPjsKKworZGVmIGludF9oZXhhZ29uX00yX2RwbXB5dXVfczAgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9kcG1weXV1X3MwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9zaHVmZmViIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzJfc2h1ZmZlYiI+OworCitkZWYgaW50X2hleGFnb25fQTJfdm1pbnV3IDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm1pbnV3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92YWRkaHMgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YWRkaHMiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2luc2VydF9ycCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX2luc2VydF9ycCI+OworCitkZWYgaW50X2hleGFnb25fQTJfdm1pbnVoIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdm1pbnVoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl92bWludWIgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92bWludWIiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2V4dHJhY3R1IDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfZXh0cmFjdHUiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3N2c3ViaCA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0EyX3N2c3ViaCI+OworCitkZWYgaW50X2hleGFnb25fUzRfY2xiYWRkaSA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1M0X2NsYmFkZGkiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX3NmZm1zIDoKK0hleGFnb25fZmxvYXRfZmxvYXRmbG9hdGZsb2F0X0ludHJpbnNpYzwiSEVYQUdPTl9GMl9zZmZtcyI+OworCitkZWYgaW50X2hleGFnb25fUzJfdnN4dGJoIDoKK0hleGFnb25faTY0X2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfdnN4dGJoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9uYWNfbGxfczEgOgorSGV4YWdvbl9pNjRfaTY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9uYWNfbGxfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVkX25hY19sbF9zMCA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX25hY19sbF9zMCI+OworCitkZWYgaW50X2hleGFnb25fQTJfc3VicCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3N1YnAiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZtcHkyZXNfczEgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NMl92bXB5MmVzX3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl92bXB5MmVzX3MwIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdm1weTJlc19zMCI+OworCitkZWYgaW50X2hleGFnb25fUzRfcGFyaXR5IDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzRfcGFyaXR5Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfYWNjX2hoX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2FjY19oaF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X2FjY19oaF9zMCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9hY2NfaGhfczAiPjsKKworZGVmIGludF9oZXhhZ29uX1M0X2FkZGlfYXNsX3JpIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzRfYWRkaV9hc2xfcmkiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weWRfbmFjX2hoX3MxIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9uYWNfaGhfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weWRfbmFjX2hoX3MwIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5ZF9uYWNfaGhfczAiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2Fzcl9pX3JfbmFjIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfYXNyX2lfcl9uYWMiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X2NtcGhlcWkgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BNF9jbXBoZXFpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc3Jfcl9wX3hvciA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9yX3BfeG9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfYWNjX2hsX3MxIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X2FjY19obF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X2FjY19obF9zMCA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9hY2NfaGxfczAiPjsKKworZGVmIGludF9oZXhhZ29uX0YyX2NvbnZfc2YydWRfY2hvcCA6CitIZXhhZ29uX2k2NF9mbG9hdF9JbnRyaW5zaWM8IkhFWEFHT05fRjJfY29udl9zZjJ1ZF9jaG9wIj47CisKK2RlZiBpbnRfaGV4YWdvbl9DMl9jbXBnZXVpIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzJfY21wZ2V1aSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X2FjY19zYXRfaGhfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfYWNjX3NhdF9oaF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X2FjY19zYXRfaGhfczEgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfYWNjX3NhdF9oaF9zMSI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNsX3JfcF9hbmQgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfcl9wX2FuZCI+OworCitkZWYgaW50X2hleGFnb25fQTJfYWRkaF9oMTZfc2F0X2xoIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfYWRkaF9oMTZfc2F0X2xoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9hZGRoX2gxNl9zYXRfbGwgOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9hZGRoX2gxNl9zYXRfbGwiPjsKKworZGVmIGludF9oZXhhZ29uX000X25hY191cF9zMV9zYXQgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NNF9uYWNfdXBfczFfc2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHl1ZF9uYWNfbGhfczEgOgorSGV4YWdvbl9pNjRfaTY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHl1ZF9uYWNfbGhfczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX21weXVkX25hY19saF9zMCA6CitIZXhhZ29uX2k2NF9pNjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weXVkX25hY19saF9zMCI+OworCitkZWYgaW50X2hleGFnb25fQTRfcm91bmRfcmlfc2F0IDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfcm91bmRfcmlfc2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tcHlfbmFjX2hsX3MwIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbXB5X25hY19obF9zMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X25hY19obF9zMSA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX00yX21weV9uYWNfaGxfczEiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZhdmdoY3IgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BMl92YXZnaGNyIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl9tbWFjbHNfcnMwIDoKK0hleGFnb25faTY0X2k2NGk2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfbW1hY2xzX3JzMCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbW1hY2xzX3JzMSA6CitIZXhhZ29uX2k2NF9pNjRpNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX00yX21tYWNsc19yczEiPjsKKworZGVmIGludF9oZXhhZ29uX00yX2NtYWNpX3MwIDoKK0hleGFnb25faTY0X2k2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfY21hY2lfczAiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX3NldGJpdF9pIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzJfc2V0Yml0X2kiPjsKKworZGVmIGludF9oZXhhZ29uX1MyX2FzbF9pX3Bfb3IgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc2xfaV9wX29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BNF9hbmRuIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTRfYW5kbiI+OworCitkZWYgaW50X2hleGFnb25fTTVfdnJtcHlic3UgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NNV92cm1weWJzdSI+OworCitkZWYgaW50X2hleGFnb25fUzJfdnJuZHBhY2t3aCA6CitIZXhhZ29uX2kzMl9pNjRfSW50cmluc2ljPCJIRVhBR09OX1MyX3ZybmRwYWNrd2giPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZjbWFjX3MwX3NhdF9yIDoKK0hleGFnb25faTY0X2k2NGk2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdmNtYWNfczBfc2F0X3IiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3ZtYXh1dyA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0EyX3ZtYXh1dyI+OworCitkZWYgaW50X2hleGFnb25fQzJfYml0c2NsciA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0MyX2JpdHNjbHIiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3hvcl94YWNjIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfeG9yX3hhY2MiPjsKKworZGVmIGludF9oZXhhZ29uX0E0X3ZjbXBiZ3R1aSA6CitIZXhhZ29uX2kzMl9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX0E0X3ZjbXBiZ3R1aSI+OworCitkZWYgaW50X2hleGFnb25fQTRfb3JucCA6CitIZXhhZ29uX2k2NF9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0E0X29ybnAiPjsKKworZGVmIGludF9oZXhhZ29uX0EyX3RmcnBpIDoKK0hleGFnb25faTY0X2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfdGZycGkiPjsKKworZGVmIGludF9oZXhhZ29uX0M0X2FuZF9vciA6CitIZXhhZ29uX2kzMl9pMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX0M0X2FuZF9vciI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X25hY19zYXRfaGhfczEgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfbmFjX3NhdF9oaF9zMSI+OworCitkZWYgaW50X2hleGFnb25fTTJfbXB5X25hY19zYXRfaGhfczAgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tcHlfbmFjX3NhdF9oaF9zMCI+OworCitkZWYgaW50X2hleGFnb25fQTJfc3ViaF9oMTZfc2F0X2xsIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQTJfc3ViaF9oMTZfc2F0X2xsIj47CisKK2RlZiBpbnRfaGV4YWdvbl9BMl9zdWJoX2gxNl9zYXRfbGggOgorSGV4YWdvbl9pMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9BMl9zdWJoX2gxNl9zYXRfbGgiPjsKKworZGVmIGludF9oZXhhZ29uX00yX3ZtcHkyc3VfczEgOgorSGV4YWdvbl9pNjRfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl92bXB5MnN1X3MxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NMl92bXB5MnN1X3MwIDoKK0hleGFnb25faTY0X2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fTTJfdm1weTJzdV9zMCI+OworCitkZWYgaW50X2hleGFnb25fUzJfYXNyX2lfcF9hY2MgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9hc3JfaV9wX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fQzRfbmJpdHNjbHJpIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fQzRfbmJpdHNjbHJpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc3JfaV92aCA6CitIZXhhZ29uX2k2NF9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX2xzcl9pX3ZoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TMl9sc3JfaV9wX3hhY2MgOgorSGV4YWdvbl9pNjRfaTY0aTY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TMl9sc3JfaV9wX3hhY2MiPjsKKworLy8gVjU1IFNjYWxhciBJbnN0cnVjdGlvbnMuCisKK2RlZiBpbnRfaGV4YWdvbl9BNV9BQ1MgOgorSGV4YWdvbl9pNjRpMzJfaTY0aTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BNV9BQ1MiPjsKKworLy8gVjYwIFNjYWxhciBJbnN0cnVjdGlvbnMuCisKK2RlZiBpbnRfaGV4YWdvbl9TNl9yb2xfaV9wX2FuZCA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1M2X3JvbF9pX3BfYW5kIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNl9yb2xfaV9yX3hhY2MgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TNl9yb2xfaV9yX3hhY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1M2X3JvbF9pX3JfYW5kIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzZfcm9sX2lfcl9hbmQiPjsKKworZGVmIGludF9oZXhhZ29uX1M2X3JvbF9pX3JfYWNjIDoKK0hleGFnb25faTMyX2kzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzZfcm9sX2lfcl9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1M2X3JvbF9pX3BfeGFjYyA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1M2X3JvbF9pX3BfeGFjYyI+OworCitkZWYgaW50X2hleGFnb25fUzZfcm9sX2lfcCA6CitIZXhhZ29uX2k2NF9pNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1M2X3JvbF9pX3AiPjsKKworZGVmIGludF9oZXhhZ29uX1M2X3JvbF9pX3BfbmFjIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzZfcm9sX2lfcF9uYWMiPjsKKworZGVmIGludF9oZXhhZ29uX1M2X3JvbF9pX3BfYWNjIDoKK0hleGFnb25faTY0X2k2NGk2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzZfcm9sX2lfcF9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1M2X3JvbF9pX3Jfb3IgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TNl9yb2xfaV9yX29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNl9yb2xfaV9yIDoKK0hleGFnb25faTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fUzZfcm9sX2lfciI+OworCitkZWYgaW50X2hleGFnb25fUzZfcm9sX2lfcl9uYWMgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TNl9yb2xfaV9yX25hYyI+OworCitkZWYgaW50X2hleGFnb25fUzZfcm9sX2lfcF9vciA6CitIZXhhZ29uX2k2NF9pNjRpNjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1M2X3JvbF9pX3Bfb3IiPjsKKworLy8gVjYyIFNjYWxhciBJbnN0cnVjdGlvbnMuCisKK2RlZiBpbnRfaGV4YWdvbl9TNl92dHJ1bmVoYl9wcHAgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9TNl92dHJ1bmVoYl9wcHAiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X2xkbnRudDAgOgorSGV4YWdvbl92MTZpMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9sZG50bnQwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNl92YWJzZGlmZnViIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fTTZfdmFic2RpZmZ1YiI+OworCitkZWYgaW50X2hleGFnb25fUzZfdnRydW5vaGJfcHBwIDoKK0hleGFnb25faTY0X2k2NGk2NF9JbnRyaW5zaWM8IkhFWEFHT05fUzZfdnRydW5vaGJfcHBwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9NNl92YWJzZGlmZmIgOgorSGV4YWdvbl9pNjRfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9NNl92YWJzZGlmZmIiPjsKKworZGVmIGludF9oZXhhZ29uX0E2X3ZtaW51Yl9SZFAgOgorSGV4YWdvbl9pNjRpMzJfaTY0aTY0X0ludHJpbnNpYzwiSEVYQUdPTl9BNl92bWludWJfUmRQIj47CisKK2RlZiBpbnRfaGV4YWdvbl9TNl92c3BsYXRyYnAgOgorSGV4YWdvbl9pNjRfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9TNl92c3BsYXRyYnAiPjsKKworLy8gVjY1IFNjYWxhciBJbnN0cnVjdGlvbnMuCisKK2RlZiBpbnRfaGV4YWdvbl9BNl92Y21wYmVxX25vdGFueSA6CitIZXhhZ29uX2kzMl9pNjRpNjRfSW50cmluc2ljPCJIRVhBR09OX0E2X3ZjbXBiZXFfbm90YW55Ij47CisKKy8vIFY2NiBTY2FsYXIgSW5zdHJ1Y3Rpb25zLgorCitkZWYgaW50X2hleGFnb25fRjJfZGZzdWIgOgorSGV4YWdvbl9kb3VibGVfZG91YmxlZG91YmxlX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9kZnN1YiI+OworCitkZWYgaW50X2hleGFnb25fRjJfZGZhZGQgOgorSGV4YWdvbl9kb3VibGVfZG91YmxlZG91YmxlX0ludHJpbnNpYzwiSEVYQUdPTl9GMl9kZmFkZCI+OworCitkZWYgaW50X2hleGFnb25fTTJfbW5hY2kgOgorSGV4YWdvbl9pMzJfaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9NMl9tbmFjaSI+OworCitkZWYgaW50X2hleGFnb25fUzJfbWFzayA6CitIZXhhZ29uX2kzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1MyX21hc2siPjsKKworLy8gVjYwIEhWWCBJbnN0cnVjdGlvbnMuCisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZXFiX29yIDoKK0hleGFnb25fdjUxMmkxX3Y1MTJpMXYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxYl9vciI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmVxYl9vcl8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZXFiX29yXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtaW51YiA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtaW51YiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1pbnViXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWludWJfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzbHdfYWNjIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzbHdfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXNsd19hY2NfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc2x3X2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aHZzcnMgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aHZzcnMiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlodnNyc18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWh2c3JzXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzYXRodWIgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2F0aHViIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c2F0aHViXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2F0aHViXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRoX2R2IDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGhfZHYiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRoX2R2XzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkaF9kdl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ1c2kgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ1c2kiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5YnVzaV8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidXNpXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzaHVmb2ggOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2h1Zm9oIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c2h1Zm9oXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2h1Zm9oXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J3diA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J3diI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcnd2XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyd3ZfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRtcHloc3Vpc2F0IDoKK0hleGFnb25fdjE2aTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloc3Vpc2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhzdWlzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92NjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aHN1aXNhdF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cnNhZHViaV9hY2MgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cnNhZHViaV9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zyc2FkdWJpX2FjY18xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMnY2NGkzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJzYWR1YmlfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZuYXZndyA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZuYXZndyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm5hdmd3XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bmF2Z3dfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm5hdmdoIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm5hdmdoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bmF2Z2hfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZuYXZnaF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXZndWIgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZndWIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhdmd1Yl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmF2Z3ViXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJiIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJiXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViYl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R3X2FuZCA6CitIZXhhZ29uX3Y1MTJpMV92NTEyaTF2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHdfYW5kIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R3X2FuZF8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R3X2FuZF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXZndWJybmQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZndWJybmQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhdmd1YnJuZF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmF2Z3Vicm5kXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5YnVzdiA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5YnVzdiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnJtcHlidXN2XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ1c3ZfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YmJucSA6CitIZXhhZ29uX3YxNmkzMl92NTEyaTF2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJibnEiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJibnFfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViYm5xXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zyb3VuZGhiIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJvdW5kaGIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zyb3VuZGhiXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm91bmRoYl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkdWhzYXRfZHYgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdWhzYXRfZHYiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1aHNhdF9kdl8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMnY2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHVoc2F0X2R2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1YnNhdCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ1YnNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YnVic2F0XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3VidWJzYXRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1wYWJ1c19hY2MgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhYnVzX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1wYWJ1c19hY2NfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGFidXNfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtdXggOgorSGV4YWdvbl92MTZpMzJfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXV4Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXV4XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm11eF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aHVzIDoKK0hleGFnb25fdjMyaTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWh1cyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWh1c18xMjhCIDoKK0hleGFnb25fdjY0aTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWh1c18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cGFja2ViIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBhY2tlYiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnBhY2tlYl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBhY2tlYl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3ViaG5xIDoKK0hleGFnb25fdjE2aTMyX3Y1MTJpMXYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmhucSI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YmhucV8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YxMDI0aTF2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJobnFfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmF2Z2hybmQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZnaHJuZCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmF2Z2hybmRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmdocm5kXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Z0cmFuMngyX21hcCA6CitIZXhhZ29uX3YxNmkzMnYxNmkzMl92MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z0cmFuMngyX21hcCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnRyYW4yeDJfbWFwXzEyOEIgOgorSGV4YWdvbl92MzJpMzJ2MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dHJhbjJ4Ml9tYXBfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRlbHRhIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRlbHRhIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZGVsdGFfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkZWx0YV8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R1aF9hbmQgOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1aF9hbmQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZndHVoX2FuZF8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1aF9hbmRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnRtcHloYiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z0bXB5aGIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Z0bXB5aGJfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z0bXB5aGJfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnBhY2tvYiA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwYWNrb2IiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZwYWNrb2JfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwYWNrb2JfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1heGggOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWF4aCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1heGhfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXhoXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Z0bXB5YnVzX2FjYyA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z0bXB5YnVzX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnRtcHlidXNfYWNjXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dG1weWJ1c19hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YnVoc2F0IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnVoc2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3VidWhzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ1aHNhdF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXNyd19hY2MgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyd19hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J3X2FjY18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcndfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ByZWRfb3IgOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxdjUxMmkxX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9wcmVkX29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9wcmVkX29yXzEyOEIgOgorSGV4YWdvbl92MTAyNGkxX3YxMDI0aTF2MTAyNGkxX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9wcmVkX29yXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5dWJfYWNjIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHl1Yl9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5dWJfYWNjXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weXViX2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sbyA6CitIZXhhZ29uX3YxNmkzMl92MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X2xvIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sb18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3Y2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbG9fMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YmJfZHYgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViYl9kdiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YmJfZHZfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJiX2R2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJoc2F0X2R2IDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmhzYXRfZHYiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJoc2F0X2R2XzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViaHNhdF9kdl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aXdoIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWl3aCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWl3aF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWl3aF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aXdiIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWl3YiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWl3Yl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWl3Yl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZHUwIDoKK0hleGFnb25fdjE2aTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGR1MCI+OworCitkZWYgaW50X2hleGFnb25fVjZfbGR1MF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGR1MF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R1aF94b3IgOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1aF94b3IiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZndHVoX3hvcl8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1aF94b3JfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0aF9vciA6CitIZXhhZ29uX3Y1MTJpMV92NTEyaTF2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndGhfb3IiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZndGhfb3JfMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0aF9vcl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXZnaCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhdmdoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXZnaF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmF2Z2hfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmxhbGlnbmIgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bGFsaWduYiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmxhbGlnbmJfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsYWxpZ25iXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzaCA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnNoXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2hfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfcHJlZF9hbmRfbiA6CitIZXhhZ29uX3Y1MTJpMV92NTEyaTF2NTEyaTFfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ByZWRfYW5kX24iPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ByZWRfYW5kX25fMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjEwMjRpMXYxMDI0aTFfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ByZWRfYW5kX25fMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnNiIDoKK0hleGFnb25fdjMyaTMyX3YxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNiIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c2JfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzYl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm91bmR3dWggOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm91bmR3dWgiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zyb3VuZHd1aF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJvdW5kd3VoXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3JodiA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3JodiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcmh2XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyaHZfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnNodWZmaCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaHVmZmgiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzaHVmZmhfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaHVmZmhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGhzYXRfZHYgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkaHNhdF9kdiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGhzYXRfZHZfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRoc2F0X2R2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZuYXZndWIgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bmF2Z3ViIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bmF2Z3ViXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bmF2Z3ViXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5YnYgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ2Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ2XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zub3JtYW10aCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zub3JtYW10aCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm5vcm1hbXRoXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bm9ybWFtdGhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRtcHloYiA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aGIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aGJfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aGJfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmF2Z3VoIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmF2Z3VoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXZndWhfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmd1aF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bHNyd3YgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHNyd3YiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zsc3J3dl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmxzcnd2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zsc3JodiA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zsc3JodiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmxzcmh2XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHNyaHZfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRtcHloaXNhdCA6CitIZXhhZ29uX3YxNmkzMl92MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aGlzYXQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aGlzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92NjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aGlzYXRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRtcHlodnNhdCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aHZzYXQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aHZzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aHZzYXRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZHcgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZHdfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR3XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Z6aCA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z6aCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnpoXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92emhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGggOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkaCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGhfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRoXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtYXh1YiA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXh1YiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1heHViXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWF4dWJfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWh2X2FjYyA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlodl9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlodl9hY2NfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlodl9hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZHVoc2F0IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHVoc2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkdWhzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR1aHNhdF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c2h1Zm9laCA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaHVmb2VoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c2h1Zm9laF8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNodWZvZWhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weXVodl9hY2MgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWh2X2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weXVodl9hY2NfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHl1aHZfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZlcWggOgorSGV4YWdvbl92NTEyaTFfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZXFoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZXFoXzEyOEIgOgorSGV4YWdvbl92MTAyNGkxX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxaF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXBhYnV1diA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGFidXV2Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXBhYnV1dl8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMnY2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYWJ1dXZfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcndoc2F0IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcndoc2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXNyd2hzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J3aHNhdF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bWludWggOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWludWgiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtaW51aF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1pbnVoXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zyb3IgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm9yXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm9yXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlvd2hfcm5kX3NhY2MgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5b3doX3JuZF9zYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5b3doX3JuZF9zYWNjXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5b3doX3JuZF9zYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtYXh1aCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXh1aCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1heHVoXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWF4dWhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFic2hfc2F0IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFic2hfc2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWJzaF9zYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhYnNoX3NhdF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9wcmVkX29yX24gOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxdjUxMmkxX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9wcmVkX29yX24iPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ByZWRfb3Jfbl8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MTAyNGkxdjEwMjRpMV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF9vcl9uXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkZWFsYiA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkZWFsYiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRlYWxiXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZGVhbGJfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWJ1c3YgOgorSGV4YWdvbl92MzJpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5YnVzdiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWJ1c3ZfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlidXN2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Z6YiA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z6YiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnpiXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92emJfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRtcHlidXNfZHYgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWJ1c19kdiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRtcHlidXNfZHZfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5YnVzX2R2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRicSA6CitIZXhhZ29uX3YxNmkzMl92NTEyaTF2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRicSI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGJxXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGJxXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRiIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRiXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkYl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkd3EgOgorSGV4YWdvbl92MTZpMzJfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkd3EiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR3cV8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YxMDI0aTF2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR3cV8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXNyaHVicm5kc2F0IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcmh1YnJuZHNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcmh1YnJuZHNhdF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcmh1YnJuZHNhdF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXNyaHVic2F0IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcmh1YnNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcmh1YnNhdF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcmh1YnNhdF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c2h1Zm9lYiA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaHVmb2ViIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c2h1Zm9lYl8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNodWZvZWJfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnBhY2todWJfc2F0IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBhY2todWJfc2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cGFja2h1Yl9zYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwYWNraHViX3NhdF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aXdoX2FjYyA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpd2hfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aXdoX2FjY18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWl3aF9hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnRtcHliIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnRtcHliIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92dG1weWJfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z0bXB5Yl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXBhYnVzdiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGFidXN2Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXBhYnVzdl8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMnY2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYWJ1c3ZfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfcHJlZF9hbmQgOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxdjUxMmkxX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9wcmVkX2FuZCI+OworCitkZWYgaW50X2hleGFnb25fVjZfcHJlZF9hbmRfMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjEwMjRpMXYxMDI0aTFfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ByZWRfYW5kXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ3bnEgOgorSGV4YWdvbl92MTZpMzJfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3Vid25xIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3Vid25xXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnducV8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cGFja3d1aF9zYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cGFja3d1aF9zYXQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZwYWNrd3VoX3NhdF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBhY2t3dWhfc2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zzd2FwIDoKK0hleGFnb25fdjMyaTMyX3Y1MTJpMXYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN3YXAiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zzd2FwXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN3YXBfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnJtcHl1YnZfYWNjIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHl1YnZfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm1weXVidl9hY2NfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5dWJ2X2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3RiX2FuZCA6CitIZXhhZ29uX3Y1MTJpMV92NTEyaTF2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndGJfYW5kIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3RiX2FuZF8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3RiX2FuZF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXNsdyA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc2x3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXNsd18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzbHdfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnBhY2toYl9zYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cGFja2hiX3NhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnBhY2toYl9zYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwYWNraGJfc2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpaF9hY2MgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aWhfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aWhfYWNjXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aWhfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzaHVmZnZkZCA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaHVmZnZkZCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnNodWZmdmRkXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2h1ZmZ2ZGRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGJfZHYgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkYl9kdiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGJfZHZfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRiX2R2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Z1bnBhY2t1YiA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z1bnBhY2t1YiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnVucGFja3ViXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dW5wYWNrdWJfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0dXcgOgorSGV4YWdvbl92NTEyaTFfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1dyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0dXdfMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1d18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bHV0dndoIDoKK0hleGFnb25fdjMyaTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ3aCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmx1dHZ3aF8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ3aF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R1YiA6CitIZXhhZ29uX3Y1MTJpMV92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHViIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R1Yl8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHViXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlvd2ggOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5b3doIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5b3doXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5b3doXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpZW9oIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWllb2giPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpZW9oXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aWVvaF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9leHRyYWN0dyA6CitIZXhhZ29uX2kzMl92MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X2V4dHJhY3R3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9leHRyYWN0d18xMjhCIDoKK0hleGFnb25faTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfZXh0cmFjdHdfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmF2Z3dybmQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZnd3JuZCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmF2Z3dybmRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmd3cm5kXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aHNhdF9hY2MgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWhzYXRfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhzYXRfYWNjXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWhzYXRfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZndHViX3hvciA6CitIZXhhZ29uX3Y1MTJpMV92NTEyaTF2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHViX3hvciI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0dWJfeG9yXzEyOEIgOgorSGV4YWdvbl92MTAyNGkxX3YxMDI0aTF2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHViX3hvcl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5dWIgOgorSGV4YWdvbl92MzJpMzJfdjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1Yl8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weXViXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1aCA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHl1aCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weXVoXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnVucGFja29iIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnVucGFja29iIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92dW5wYWNrb2JfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z1bnBhY2tvYl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXBhaGIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhaGIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGFoYl8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYWhiXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZlcXdfb3IgOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZXF3X29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZXF3X29yXzEyOEIgOgorSGV4YWdvbl92MTAyNGkxX3YxMDI0aTF2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcXdfb3JfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFuZHFydCA6CitIZXhhZ29uX3YxNmkzMl92NTEyaTFpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmRxcnQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhbmRxcnRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MTAyNGkxaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YW5kcXJ0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Z4b3IgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92eG9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92eG9yXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92eG9yXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J3aHJuZHNhdCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J3aHJuZHNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcndocm5kc2F0XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyd2hybmRzYXRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWhzYXRfYWNjIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWhzYXRfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aHNhdF9hY2NfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHloc2F0X2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ1c19hY2MgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ1c19hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5YnVzX2FjY18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidXNfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJodyA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJodyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1Ymh3XzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViaHdfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRlYWxiNHcgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZGVhbGI0dyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRlYWxiNHdfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkZWFsYjR3XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlvd2hfc2FjYyA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlvd2hfc2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weW93aF9zYWNjXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5b3doX3NhY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWJ2IDoKK0hleGFnb25fdjMyaTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWJ2Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5YnZfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlidl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWJzZGlmZmggOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzZGlmZmgiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhYnNkaWZmaF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFic2RpZmZoXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzaHVmZm9iIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNodWZmb2IiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzaHVmZm9iXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2h1ZmZvYl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5dWJfYWNjIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weXViX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weXViX2FjY18xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weXViX2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bm9ybWFtdHcgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bm9ybWFtdHciPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zub3JtYW10d18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm5vcm1hbXR3XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Z1bnBhY2t1aCA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z1bnBhY2t1aCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnVucGFja3VoXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dW5wYWNrdWhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0dWhfb3IgOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1aF9vciI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0dWhfb3JfMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dWhfb3JfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWlld3VoX2FjYyA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpZXd1aF9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpZXd1aF9hY2NfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpZXd1aF9hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnVucGFja29oIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnVucGFja29oIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92dW5wYWNrb2hfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z1bnBhY2tvaF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhzYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWhzYXQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aHNhdF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloc2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1YnYgOgorSGV4YWdvbl92MzJpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWJ2Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5dWJ2XzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWJ2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHloc3MgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aHNzIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aHNzXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aHNzXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X2hpIDoKK0hleGFnb25fdjE2aTMyX3YzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfaGkiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X2hpXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9oaV8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXNyd3Voc2F0IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcnd1aHNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcnd1aHNhdF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcnd1aHNhdF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZXF3IDoKK0hleGFnb25fdjUxMmkxX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxdyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmVxd18xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcXdfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRzYWR1aCA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zkc2FkdWgiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zkc2FkdWhfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zkc2FkdWhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YncgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3VidyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YndfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ3XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ3X2R2IDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YndfZHYiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ3X2R2XzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3Vid19kdl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZXFiX2FuZCA6CitIZXhhZ29uX3Y1MTJpMV92NTEyaTF2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcWJfYW5kIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZXFiX2FuZF8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZXFiX2FuZF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aWggOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aWgiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpaF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWloXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Z0bXB5Yl9hY2MgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dG1weWJfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92dG1weWJfYWNjXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dG1weWJfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5YnVzIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidXMiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5YnVzXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ1c18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5YnVzX2FjYyA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlidXNfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5YnVzX2FjY18xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWJ1c19hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0aF94b3IgOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3RoX3hvciI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0aF94b3JfMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0aF94b3JfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YmhzYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViaHNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YmhzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJoc2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5dWJpX2FjYyA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5dWJpX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnJtcHl1YmlfYWNjXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjY0aTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weXViaV9hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFic3cgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzdyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFic3dfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhYnN3XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR3c2F0X2R2IDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHdzYXRfZHYiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR3c2F0X2R2XzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkd3NhdF9kdl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bHNydyA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zsc3J3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bHNyd18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmxzcndfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFic2ggOgorSGV4YWdvbl92MTZpMzJfdjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzaCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFic2hfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhYnNoXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zsc3JoIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmxzcmgiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zsc3JoXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHNyaF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWxpZ25iIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFsaWduYiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFsaWduYl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFsaWduYl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3ViaHEgOgorSGV4YWdvbl92MTZpMzJfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViaHEiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJocV8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YxMDI0aTF2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJocV8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cGFja29oIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBhY2tvaCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnBhY2tvaF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBhY2tvaF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWJ1c19hY2MgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWJ1c19hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5YnVzX2FjY18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHlidXNfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aHZzYXRfYWNjIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHlodnNhdF9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aHZzYXRfYWNjXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWh2c2F0X2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ2X2FjYyA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5YnZfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ2X2FjY18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidl9hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGhzYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkaHNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGhzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRoc2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zjb21iaW5lIDoKK0hleGFnb25fdjMyaTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmNvbWJpbmUiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zjb21iaW5lXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Y29tYmluZV8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YW5kcXJ0X2FjYyA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2NTEyaTFpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmRxcnRfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YW5kcXJ0X2FjY18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYxMDI0aTFpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmRxcnRfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc2xodiA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc2xodiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzbGh2XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNsaHZfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmluc2VydHdyIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmluc2VydHdyIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92aW5zZXJ0d3JfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZpbnNlcnR3cl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3ViaF9kdiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJoX2R2Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3ViaF9kdl8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMnY2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmhfZHZfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnNodWZmYiA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaHVmZmIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzaHVmZmJfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaHVmZmJfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFuZCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhbmRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWh2IDoKK0hleGFnb25fdjMyaTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWh2Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aHZfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlodl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhzdWlzYXRfYWNjIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloc3Vpc2F0X2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRtcHloc3Vpc2F0X2FjY18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnY2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloc3Vpc2F0X2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3VidWJzYXRfZHYgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3VidWJzYXRfZHYiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1YnNhdF9kdl8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMnY2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnVic2F0X2R2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZndGJfeG9yIDoKK0hleGFnb25fdjUxMmkxX3Y1MTJpMXYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0Yl94b3IiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZndGJfeG9yXzEyOEIgOgorSGV4YWdvbl92MTAyNGkxX3YxMDI0aTF2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndGJfeG9yXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zkc2FkdWhfYWNjIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRzYWR1aF9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zkc2FkdWhfYWNjXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZHNhZHVoX2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm1weXViIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHl1YiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnJtcHl1Yl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHl1Yl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5dWhfYWNjIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weXVoX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weXVoX2FjY18xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weXVoX2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Y2wwaCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZjbDBoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Y2wwaF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmNsMGhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWh1c19hY2MgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aHVzX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWh1c19hY2NfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlodXNfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlidl9hY2MgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5YnZfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5YnZfYWNjXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5YnZfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zyc2FkdWJpIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJzYWR1YmkiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zyc2FkdWJpXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cnNhZHViaV8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhiX2R2X2FjYyA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aGJfZHZfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhiX2R2X2FjY18xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMnY2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloYl9kdl9hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnNodWZlaCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaHVmZWgiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzaHVmZWhfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzaHVmZWhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWV3dWggOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5ZXd1aCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWV3dWhfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlld3VoXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHloc3JzIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWhzcnMiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHloc3JzXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aHNyc18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWJ1c19kdl9hY2MgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWJ1c19kdl9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5YnVzX2R2X2FjY18xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMnY2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHlidXNfZHZfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1YmggOgorSGV4YWdvbl92MzJpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdWJoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkdWJoXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdWJoXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J3aCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J3aCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcndoXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyd2hfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfbGQwIDoKK0hleGFnb25fdjE2aTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGQwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZDBfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl9pMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X2xkMF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cG9wY291bnRoIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBvcGNvdW50aCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnBvcGNvdW50aF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBvcGNvdW50aF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZG50MCA6CitIZXhhZ29uX3YxNmkzMl9pMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X2xkbnQwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZG50MF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGRudDBfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0aF9hbmQgOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3RoX2FuZCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0aF9hbmRfMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0aF9hbmRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZHVic2F0X2R2IDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHVic2F0X2R2Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkdWJzYXRfZHZfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR1YnNhdF9kdl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cGFja2VoIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBhY2tlaCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnBhY2tlaF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnBhY2tlaF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aCA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHloIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aF8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1pbmggOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWluaCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1pbmhfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtaW5oXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ByZWRfc2NhbGFyMiA6CitIZXhhZ29uX3Y1MTJpMV9pMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ByZWRfc2NhbGFyMiI+OworCitkZWYgaW50X2hleGFnb25fVjZfcHJlZF9zY2FsYXIyXzEyOEIgOgorSGV4YWdvbl92MTAyNGkxX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF9zY2FsYXIyXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkZWFsaCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkZWFsaCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRlYWxoXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZGVhbGhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnBhY2t3aF9zYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cGFja3doX3NhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnBhY2t3aF9zYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwYWNrd2hfc2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc2xoIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzbGgiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc2xoXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNsaF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R1d19hbmQgOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1d19hbmQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZndHV3X2FuZF8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1d19hbmRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm9yIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92b3JfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zvcl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bHV0dnZiIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ2YiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmx1dHZ2Yl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ2Yl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aW93aCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpb3doIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aW93aF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWlvd2hfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmx1dHZ2Yl9vcmFjYyA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2dmJfb3JhY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2dmJfb3JhY2NfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2dmJfb3JhY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFuZHZydCA6CitIZXhhZ29uX3Y1MTJpMV92MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmR2cnQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhbmR2cnRfMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YW5kdnJ0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZlcWhfeG9yIDoKK0hleGFnb25fdjUxMmkxX3Y1MTJpMXYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxaF94b3IiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZlcWhfeG9yXzEyOEIgOgorSGV4YWdvbl92MTAyNGkxX3YxMDI0aTF2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcWhfeG9yXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1aHcgOgorSGV4YWdvbl92MzJpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdWh3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkdWh3XzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdWh3XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZjbDB3IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmNsMHciPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZjbDB3XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Y2wwd18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aWhiIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWloYiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWloYl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWloYl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92dG1weWJ1cyA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z0bXB5YnVzIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92dG1weWJ1c18xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnRtcHlidXNfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmQwIDoKK0hleGFnb25fdjE2aTMyX19JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmQwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZDBfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl9fSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkMF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZXFoX29yIDoKK0hleGFnb25fdjUxMmkxX3Y1MTJpMXYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxaF9vciI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmVxaF9vcl8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZXFoX29yXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZndHdfb3IgOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R3X29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R3X29yXzEyOEIgOgorSGV4YWdvbl92MTAyNGkxX3YxMDI0aTF2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHdfb3JfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRtcHlidXMgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWJ1cyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRtcHlidXNfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5YnVzXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZndHViX29yIDoKK0hleGFnb25fdjUxMmkxX3Y1MTJpMXYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dWJfb3IiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZndHViX29yXzEyOEIgOgorSGV4YWdvbl92MTAyNGkxX3YxMDI0aTF2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHViX29yXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlidXMgOgorSGV4YWdvbl92MzJpMzJfdjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5YnVzIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5YnVzXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5YnVzXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aGJfYWNjIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloYl9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aGJfYWNjXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWhiX2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YW5kdnJ0X2FjYyA6CitIZXhhZ29uX3Y1MTJpMV92NTEyaTF2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmR2cnRfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YW5kdnJ0X2FjY18xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MTAyNGkxdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YW5kdnJ0X2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXNzaWduIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzc2lnbiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzc2lnbl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzc2lnbl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkd25xIDoKK0hleGFnb25fdjE2aTMyX3Y1MTJpMXYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHducSI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZHducV8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YxMDI0aTF2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR3bnFfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0dWJfYW5kIDoKK0hleGFnb25fdjUxMmkxX3Y1MTJpMXYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dWJfYW5kIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R1Yl9hbmRfMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dWJfYW5kXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aGJfZHYgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWhiX2R2Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhiX2R2XzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWhiX2R2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Z1bnBhY2tiIDoKK0hleGFnb25fdjMyaTMyX3YxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnVucGFja2IiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Z1bnBhY2tiXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dW5wYWNrYl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92dW5wYWNraCA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z1bnBhY2toIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92dW5wYWNraF8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3YzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnVucGFja2hfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1wYWhiX2FjYyA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGFoYl9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGFoYl9hY2NfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGFoYl9hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGJucSA6CitIZXhhZ29uX3YxNmkzMl92NTEyaTF2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRibnEiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRibnFfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkYm5xXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZsYWxpZ25iaSA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsYWxpZ25iaSI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmxhbGlnbmJpXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bGFsaWduYmlfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnNhdHdoIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNhdHdoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c2F0d2hfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzYXR3aF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R1aCA6CitIZXhhZ29uX3Y1MTJpMV92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHVoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R1aF8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHVoXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpaGJfYWNjIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWloYl9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpaGJfYWNjXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aWhiX2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ1c3ZfYWNjIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidXN2X2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnJtcHlidXN2X2FjY18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidXN2X2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cmRlbHRhIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJkZWx0YSI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnJkZWx0YV8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJkZWx0YV8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm91bmR3aCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zyb3VuZHdoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm91bmR3aF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJvdW5kd2hfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZHdfZHYgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkd19kdiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZHdfZHZfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR3X2R2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpd2JfYWNjIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWl3Yl9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpd2JfYWNjXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aXdiX2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3ViYnEgOgorSGV4YWdvbl92MTZpMzJfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViYnEiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJicV8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YxMDI0aTF2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJicV8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZXFoX2FuZCA6CitIZXhhZ29uX3Y1MTJpMV92NTEyaTF2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcWhfYW5kIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZXFoX2FuZF8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZXFoX2FuZF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWxpZ25iaSA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbGlnbmJpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWxpZ25iaV8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFsaWduYmlfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZHdzYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkd3NhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZHdzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR3c2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZlcXdfYW5kIDoKK0hleGFnb25fdjUxMmkxX3Y1MTJpMXYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxd19hbmQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZlcXdfYW5kXzEyOEIgOgorSGV4YWdvbl92MTAyNGkxX3YxMDI0aTF2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcXdfYW5kXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhYnNkaWZmdWIgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzZGlmZnViIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWJzZGlmZnViXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzZGlmZnViXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzaHVmZmViIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNodWZmZWIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzaHVmZmViXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c2h1ZmZlYl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWJzZGlmZnVoIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFic2RpZmZ1aCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFic2RpZmZ1aF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFic2RpZmZ1aF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZXF3X3hvciA6CitIZXhhZ29uX3Y1MTJpMV92NTEyaTF2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcXdfeG9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZXF3X3hvcl8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZXF3X3hvcl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3RoIDoKK0hleGFnb25fdjUxMmkxX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0aCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0aF8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndGhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0dXdfeG9yIDoKK0hleGFnb25fdjUxMmkxX3Y1MTJpMXYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dXdfeG9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R1d194b3JfMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dXdfeG9yXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZndGIgOgorSGV4YWdvbl92NTEyaTFfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3RiIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3RiXzEyOEIgOgorSGV4YWdvbl92MTAyNGkxX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0Yl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R3IDoKK0hleGFnb25fdjUxMmkxX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0dyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0d18xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHdfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YndxIDoKK0hleGFnb25fdjE2aTMyX3Y1MTJpMXYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YndxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3Vid3FfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3Vid3FfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm5vdCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zub3QiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zub3RfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zub3RfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0Yl9vciA6CitIZXhhZ29uX3Y1MTJpMV92NTEyaTF2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndGJfb3IiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZndGJfb3JfMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0Yl9vcl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R1d19vciA6CitIZXhhZ29uX3Y1MTJpMV92NTEyaTF2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZndHV3X29yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92Z3R1d19vcl8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R1d19vcl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkdWJzYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdWJzYXQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1YnNhdF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHVic2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtYXh3IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1heHciPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtYXh3XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWF4d18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXNsd3YgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNsd3YiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc2x3dl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzbHd2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhYnN3X3NhdCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhYnN3X3NhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFic3dfc2F0XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzd19zYXRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YndzYXRfZHYgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3Vid3NhdF9kdiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YndzYXRfZHZfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ3c2F0X2R2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zyb3VuZGh1YiA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zyb3VuZGh1YiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnJvdW5kaHViXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm91bmRodWJfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRtcHloaXNhdF9hY2MgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWhpc2F0X2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRtcHloaXNhdF9hY2NfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2NjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aGlzYXRfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGFidXMgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhYnVzIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXBhYnVzXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhYnVzXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3NpZ25wIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzc2lnbnAiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3NpZ25wXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNzaWducF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZXFiIDoKK0hleGFnb25fdjUxMmkxX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxYiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmVxYl8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZlcWJfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YnViaCA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ1YmgiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1YmhfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ1YmhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfbHZzcGxhdHcgOgorSGV4YWdvbl92MTZpMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9sdnNwbGF0dyI+OworCitkZWYgaW50X2hleGFnb25fVjZfbHZzcGxhdHdfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl9pMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X2x2c3BsYXR3XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRobnEgOgorSGV4YWdvbl92MTZpMzJfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkaG5xIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkaG5xXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGhucV8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhzdXNhdCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aHN1c2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZG1weWhzdXNhdF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRtcHloc3VzYXRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfcHJlZF9ub3QgOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9wcmVkX25vdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfcHJlZF9ub3RfMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjEwMjRpMV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF9ub3RfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmx1dHZ3aF9vcmFjYyA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2d2hfb3JhY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2d2hfb3JhY2NfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2d2hfb3JhY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWlld2hfYWNjIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWlld2hfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aWV3aF9hY2NfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpZXdoX2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZGVhbHZkZCA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkZWFsdmRkIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92ZGVhbHZkZF8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmRlYWx2ZGRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmF2Z3cgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZndyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmF2Z3dfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmd3XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkbXB5aHN1c2F0X2FjYyA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkbXB5aHN1c2F0X2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmRtcHloc3VzYXRfYWNjXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZG1weWhzdXNhdF9hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0d194b3IgOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92Z3R3X3hvciI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmd0d194b3JfMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmd0d194b3JfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnRtcHloYl9hY2MgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92dG1weWhiX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnRtcHloYl9hY2NfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Z0bXB5aGJfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRodyA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRodyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGh3XzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkaHdfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGhxIDoKK0hleGFnb25fdjE2aTMyX3Y1MTJpMXYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGhxIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkaHFfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MTAyNGkxdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkaHFfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnJtcHl1YnYgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weXVidiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnJtcHl1YnZfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5dWJ2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJoIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmgiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJoXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViaF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm1weXViaSA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5dWJpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm1weXViaV8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHl1YmlfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1pbncgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bWludyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1pbndfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtaW53XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1YnZfYWNjIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weXVidl9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1YnZfYWNjXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWJ2X2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9wcmVkX3hvciA6CitIZXhhZ29uX3Y1MTJpMV92NTEyaTF2NTEyaTFfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ByZWRfeG9yIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9wcmVkX3hvcl8xMjhCIDoKK0hleGFnb25fdjEwMjRpMV92MTAyNGkxdjEwMjRpMV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF94b3JfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmVxYl94b3IgOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZXFiX3hvciI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmVxYl94b3JfMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjEwMjRpMXYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmVxYl94b3JfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWlld3VoIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWlld3VoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aWV3dWhfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpZXd1aF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5YnVzdl9hY2MgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5YnVzdl9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlidXN2X2FjY18xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMnYzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWJ1c3ZfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhdmd1aHJuZCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmd1aHJuZCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmF2Z3Vocm5kXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZndWhybmRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weW93aF9ybmQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5b3doX3JuZCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weW93aF9ybmRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlvd2hfcm5kXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ3c2F0IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YndzYXQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ3c2F0XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3Vid3NhdF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3VidWh3IDoKK0hleGFnb25fdjMyaTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnVodyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YnVod18xMjhCIDoKK0hleGFnb25fdjY0aTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnVod18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ1c2lfYWNjIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidXNpX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnJtcHlidXNpX2FjY18xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMnY2NGkzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidXNpX2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXNydyA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXNyd18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcndfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcmggOgorSGV4YWdvbl92MTZpMzJfdjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyaCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcmhfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3JoXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1aHYgOgorSGV4YWdvbl92MzJpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWh2Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5dWh2XzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWh2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3JoYnJuZHNhdCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3JoYnJuZHNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcmhicm5kc2F0XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyaGJybmRzYXRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YnVoc2F0X2R2IDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnVoc2F0X2R2Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3VidWhzYXRfZHZfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ1aHNhdF9kdl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWJzZGlmZncgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzZGlmZnciPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhYnNkaWZmd18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFic2RpZmZ3XzEyOEIiPjsKKworLy8gVjYyIEhWWCBJbnN0cnVjdGlvbnMuCisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YW5kbnFydF9hY2MgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjUxMmkxaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YW5kbnFydF9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhbmRucXJ0X2FjY18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYxMDI0aTFpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmRucXJ0X2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkY2xiaCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRjbGJoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkY2xiaF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGNsYmhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weW93aF82NF9hY2MgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5b3doXzY0X2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weW93aF82NF9hY2NfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlvd2hfNjRfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlld3VoXzY0IDoKK0hleGFnb25fdjMyaTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWV3dWhfNjQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlld3VoXzY0XzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5ZXd1aF82NF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c2F0dXd1aCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzYXR1d3VoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c2F0dXd1aF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNhdHV3dWhfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfc2h1ZmZlcWggOgorSGV4YWdvbl92NTEyaTFfdjUxMmkxdjUxMmkxX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9zaHVmZmVxaCI+OworCitkZWYgaW50X2hleGFnb25fVjZfc2h1ZmZlcWhfMTI4QiA6CitIZXhhZ29uX3YxMDI0aTFfdjEwMjRpMXYxMDI0aTFfSW50cmluc2ljPCJIRVhBR09OX1Y2X3NodWZmZXFoXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3NodWZmZXF3IDoKK0hleGFnb25fdjUxMmkxX3Y1MTJpMXY1MTJpMV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfc2h1ZmZlcXciPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3NodWZmZXF3XzEyOEIgOgorSGV4YWdvbl92MTAyNGkxX3YxMDI0aTF2MTAyNGkxX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9zaHVmZmVxd18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZGNucG50MCA6CitIZXhhZ29uX3YxNmkzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X2xkY25wbnQwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZGNucG50MF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGRjbnBudDBfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YmNhcnJ5IDoKK0hleGFnb25fY3VzdG9tX3YxNmkzMnY1MTJpMV92MTZpMzJ2MTZpMzJ2NTEyaTFfSW50cmluc2ljOworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YmNhcnJ5XzEyOEIgOgorSGV4YWdvbl9jdXN0b21fdjMyaTMydjEwMjRpMV92MzJpMzJ2MzJpMzJ2MTAyNGkxX0ludHJpbnNpY18xMjhCOworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcmhic2F0IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcmhic2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXNyaGJzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3JoYnNhdF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bWluYiA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtaW5iIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bWluYl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1pbmJfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1wYXVoYl9hY2MgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhdWhiX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1wYXVoYl9hY2NfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGF1aGJfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRod19hY2MgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkaHdfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkaHdfYWNjXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkaHdfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zsc3JiIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmxzcmIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zsc3JiXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHNyYl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bHV0dndoaSA6CitIZXhhZ29uX3YzMmkzMl92MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2d2hpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bHV0dndoaV8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ3aGlfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZHVidWJiX3NhdCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR1YnViYl9zYXQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1YnViYl9zYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR1YnViYl9zYXRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YmJzYXRfZHYgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3ViYnNhdF9kdiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YmJzYXRfZHZfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJic2F0X2R2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X2xkdHAwIDoKK0hleGFnb25fdjE2aTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGR0cDAiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X2xkdHAwXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9sZHRwMF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bHV0dnZiX29yYWNjaSA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXR2dmJfb3JhY2NpIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bHV0dnZiX29yYWNjaV8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ2Yl9vcmFjY2lfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YnV3c2F0X2R2IDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnV3c2F0X2R2Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3VidXdzYXRfZHZfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2NjRpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJ1d3NhdF9kdl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZHBudDAgOgorSGV4YWdvbl92MTZpMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9sZHBudDAiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X2xkcG50MF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGRwbnQwXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhbmR2bnF2IDoKK0hleGFnb25fdjE2aTMyX3Y1MTJpMXYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFuZHZucXYiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhbmR2bnF2XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjEwMjRpMXYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFuZHZucXZfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfbHZzcGxhdGIgOgorSGV4YWdvbl92MTZpMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9sdnNwbGF0YiI+OworCitkZWYgaW50X2hleGFnb25fVjZfbHZzcGxhdGJfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl9pMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X2x2c3BsYXRiXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X2x2c3BsYXRoIDoKK0hleGFnb25fdjE2aTMyX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbHZzcGxhdGgiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X2x2c3BsYXRoXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9sdnNwbGF0aF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZHRwbnQwIDoKK0hleGFnb25fdjE2aTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGR0cG50MCI+OworCitkZWYgaW50X2hleGFnb25fVjZfbGR0cG50MF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGR0cG50MF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bHV0dndoX25tIDoKK0hleGFnb25fdjMyaTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ3aF9ubSI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmx1dHZ3aF9ubV8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ3aF9ubV8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZG5wbnQwIDoKK0hleGFnb25fdjE2aTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGRucG50MCI+OworCitkZWYgaW50X2hleGFnb25fVjZfbGRucG50MF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGRucG50MF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXBhdWhiIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYXVoYiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1wYXVoYl8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYXVoYl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZHRucDAgOgorSGV4YWdvbl92MTZpMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9sZHRucDAiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X2xkdG5wMF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGR0bnAwXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zyb3VuZHVodWIgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm91bmR1aHViIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm91bmR1aHViXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm91bmR1aHViXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1aHdfYWNjIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHVod19hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1aHdfYWNjXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdWh3X2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZGNwMCA6CitIZXhhZ29uX3YxNmkzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X2xkY3AwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZGNwMF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGRjcDBfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZHV3c2F0IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHV3c2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkdXdzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR1d3NhdF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZHRucG50MCA6CitIZXhhZ29uX3YxNmkzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X2xkdG5wbnQwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZHRucG50MF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGR0bnBudDBfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGJzYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkYnNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGJzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRic2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhbmRucXJ0IDoKK0hleGFnb25fdjE2aTMyX3Y1MTJpMWkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFuZG5xcnQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhbmRucXJ0XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjEwMjRpMWkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFuZG5xcnRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWl3dWJfYWNjIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWl3dWJfYWNjIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5aXd1Yl9hY2NfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHlpd3ViX2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bWF4YiA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtYXhiIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bWF4Yl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1heGJfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFuZHZxdiA6CitIZXhhZ29uX3YxNmkzMl92NTEyaTF2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhbmR2cXYiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhbmR2cXZfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MTAyNGkxdjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YW5kdnF2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRjYXJyeSA6CitIZXhhZ29uX2N1c3RvbV92MTZpMzJ2NTEyaTFfdjE2aTMydjE2aTMydjUxMmkxX0ludHJpbnNpYzsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRjYXJyeV8xMjhCIDoKK0hleGFnb25fY3VzdG9tX3YzMmkzMnYxMDI0aTFfdjMyaTMydjMyaTMydjEwMjRpMV9JbnRyaW5zaWNfMTI4QjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J3dWhybmRzYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyd3Vocm5kc2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXNyd3Vocm5kc2F0XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyd3Vocm5kc2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2dmJpIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ2YmkiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2dmJpXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHV0dnZiaV8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3VidXdzYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92c3VidXdzYXQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZzdWJ1d3NhdF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnV3c2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRic2F0X2R2IDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGJzYXRfZHYiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRic2F0X2R2XzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjY0aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkYnNhdF9kdl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZG5wMCA6CitIZXhhZ29uX3YxNmkzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X2xkbnAwIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZG5wMF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGRucDBfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcnV3dWhybmRzYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNydXd1aHJuZHNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcnV3dWhybmRzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J1d3Vocm5kc2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zyb3VuZHV3dWggOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm91bmR1d3VoIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm91bmR1d3VoXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm91bmR1d3VoXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2dmJfbm0gOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHV0dnZiX25tIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bHV0dnZiX25tXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHV0dnZiX25tXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ByZWRfc2NhbGFyMnYyIDoKK0hleGFnb25fdjUxMmkxX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF9zY2FsYXIydjIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ByZWRfc2NhbGFyMnYyXzEyOEIgOgorSGV4YWdvbl92MTAyNGkxX2kzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfcHJlZF9zY2FsYXIydjJfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfbGRwMCA6CitIZXhhZ29uX3YxNmkzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X2xkcDAiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X2xkcDBfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl9pMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X2xkcDBfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZHViaF9hY2MgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdWJoX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZHViaF9hY2NfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGR1YmhfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRjbGJ3IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGNsYnciPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRjbGJ3XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkY2xid18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZGNwbnQwIDoKK0hleGFnb25fdjE2aTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGRjcG50MCI+OworCitkZWYgaW50X2hleGFnb25fVjZfbGRjcG50MF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGRjcG50MF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWRkdXdzYXRfZHYgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWRkdXdzYXRfZHYiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGR1d3NhdF9kdl8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3Y2NGkzMnY2NGkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZHV3c2F0X2R2XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpd3ViIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1weWl3dWIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHlpd3ViXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aXd1Yl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3VidWJ1YmJfc2F0IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnVidWJiX3NhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnN1YnVidWJiX3NhdF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YnVidWJiX3NhdF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl9sZGNucDAgOgorSGV4YWdvbl92MTZpMzJfaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl9sZGNucDAiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X2xkY25wMF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX2kzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfbGRjbnAwXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2d2hfb3JhY2NpIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dHZ3aF9vcmFjY2kiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZsdXR2d2hfb3JhY2NpXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bHV0dndoX29yYWNjaV8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3ViYnNhdCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzdWJic2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c3ViYnNhdF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnN1YmJzYXRfMTI4QiI+OworCisvLyBWNjUgSFZYIEluc3RydWN0aW9ucy4KKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J1aHVicm5kc2F0IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFzcnVodWJybmRzYXQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3J1aHVicm5kc2F0XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNydWh1YnJuZHNhdF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm1weWJ1Yl9ydHQgOgorSGV4YWdvbl92MzJpMzJfdjE2aTMyaTY0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weWJ1Yl9ydHQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5YnViX3J0dF8xMjhCIDoKK0hleGFnb25fdjY0aTMyX3YzMmkzMmk2NF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHlidWJfcnR0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGFoaHNhdCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJpNjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGFoaHNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1wYWhoc2F0XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTY0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhaGhzYXRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmF2Z3V3cm5kIDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmF2Z3V3cm5kIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXZndXdybmRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmd1d3JuZF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bmF2Z2IgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bmF2Z2IiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZuYXZnYl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm5hdmdiXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3JoX2FjYyA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3JoX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcmhfYWNjXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyaF9hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1wYXVodWhzYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyaTY0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhdWh1aHNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1wYXVodWhzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpNjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcGF1aHVoc2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHloX2FjYyA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHloX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weWhfYWNjXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5aF9hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnJtcHlidWJfcnR0X2FjYyA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MTZpMzJpNjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5YnViX3J0dF9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5YnViX3J0dF9hY2NfMTI4QiA6CitIZXhhZ29uX3Y2NGkzMl92NjRpMzJ2MzJpMzJpNjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5YnViX3J0dF9hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmF2Z2IgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZnYiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmF2Z2JfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhdmdiXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc2xoX2FjYyA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc2xoX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzbGhfYWNjXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNsaF9hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmF2Z3V3IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmF2Z3V3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YXZndXdfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmd1d18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bHV0NCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJpNjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZsdXQ0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bHV0NF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMmk2NF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmx1dDRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weXVoZV9hY2MgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWhlX2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdm1weXVoZV9hY2NfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHl1aGVfYWNjXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5dWJfcnR0IDoKK0hleGFnb25fdjMyaTMyX3YxNmkzMmk2NF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJtcHl1Yl9ydHQiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5dWJfcnR0XzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjMyaTMyaTY0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weXViX3J0dF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXBzdWh1aHNhdCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJpNjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZtcHN1aHVoc2F0Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXBzdWh1aHNhdF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMmk2NF9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wc3VodWhzYXRfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcnVodWJzYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNydWh1YnNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcnVodWJzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J1aHVic2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcHl1aGUgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWhlIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXB5dWhlXzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXB5dWhlXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZybXB5dWJfcnR0X2FjYyA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MTZpMzJpNjRfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZybXB5dWJfcnR0X2FjYyI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnJtcHl1Yl9ydHRfYWNjXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjMyaTMyaTY0X0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cm1weXViX3J0dF9hY2NfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcnV3dWhzYXQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNydXd1aHNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcnV3dWhzYXRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3J1d3Voc2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGFidXVfYWNjIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdm1wYWJ1dV9hY2MiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGFidXVfYWNjXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhYnV1X2FjY18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cHJlZml4cXcgOgorSGV4YWdvbl92MTZpMzJfdjUxMmkxX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cHJlZml4cXciPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZwcmVmaXhxd18xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YxMDI0aTFfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwcmVmaXhxd18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cHJlZml4cWggOgorSGV4YWdvbl92MTZpMzJfdjUxMmkxX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cHJlZml4cWgiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZwcmVmaXhxaF8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YxMDI0aTFfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwcmVmaXhxaF8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cHJlZml4cWIgOgorSGV4YWdvbl92MTZpMzJfdjUxMmkxX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92cHJlZml4cWIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZwcmVmaXhxYl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YxMDI0aTFfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZwcmVmaXhxYl8xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWJzYiA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhYnNiIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92YWJzYl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFic2JfMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmF2Z2JybmQgOgorSGV4YWdvbl92MTZpMzJfdjE2aTMydjE2aTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXZnYnJuZCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmF2Z2JybmRfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhdmdicm5kXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZkZDAgOgorSGV4YWdvbl92MzJpMzJfX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZGQwIj47CisKIGRlZiBpbnRfaGV4YWdvbl9WNl92ZGQwXzEyOEIgOgotSGV4YWdvbl9WNjVfdjIwNDhfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZkZDBfMTI4QiI+OworSGV4YWdvbl92NjRpMzJfX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92ZGQwXzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZtcGFidXUgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhYnV1Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92bXBhYnV1XzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92bXBhYnV1XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhYnNiX3NhdCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhYnNiX3NhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFic2Jfc2F0XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YWJzYl9zYXRfMTI4QiI+OworCisvLyBWNjYgSFZYIEluc3RydWN0aW9ucy4KKworZGVmIGludF9oZXhhZ29uX1Y2X3ZhZGRjYXJyeXNhdCA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJ2NTEyaTFfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZhZGRjYXJyeXNhdCI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFkZGNhcnJ5c2F0XzEyOEIgOgorSGV4YWdvbl92MzJpMzJfdjMyaTMydjMyaTMydjEwMjRpMV9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdmFkZGNhcnJ5c2F0XzEyOEIiPjsKKworZGVmIGludF9oZXhhZ29uX1Y2X3Zhc3JfaW50byA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zhc3JfaW50byI+OworCitkZWYgaW50X2hleGFnb25fVjZfdmFzcl9pbnRvXzEyOEIgOgorSGV4YWdvbl92NjRpMzJfdjY0aTMydjMyaTMydjMyaTMyX0ludHJpbnNpYzwiSEVYQUdPTl9WNl92YXNyX2ludG9fMTI4QiI+OworCitkZWYgaW50X2hleGFnb25fVjZfdnNhdGR3IDoKK0hleGFnb25fdjE2aTMyX3YxNmkzMnYxNmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnNhdGR3Ij47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92c2F0ZHdfMTI4QiA6CitIZXhhZ29uX3YzMmkzMl92MzJpMzJ2MzJpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3ZzYXRkd18xMjhCIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm90ciA6CitIZXhhZ29uX3YxNmkzMl92MTZpMzJ2MTZpMzJfSW50cmluc2ljPCJIRVhBR09OX1Y2X3Zyb3RyIj47CisKK2RlZiBpbnRfaGV4YWdvbl9WNl92cm90cl8xMjhCIDoKK0hleGFnb25fdjMyaTMyX3YzMmkzMnYzMmkzMl9JbnRyaW5zaWM8IkhFWEFHT05fVjZfdnJvdHJfMTI4QiI+OworCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NNaXBzLnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzTWlwcy50ZAppbmRleCA0MjFhNzliLi4yNjE4OWRjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NNaXBzLnRkCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc01pcHMudGQKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSW50cmluc2ljc01pcHMudGQgLSBEZWZpbmVzIE1pcHMgaW50cmluc2ljcyAtLS0tLS0tLS0qLSB0YWJsZWdlbiAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc05WVk0udGQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NOVlZNLnRkCmluZGV4IDdmNjk0ZjYuLmNmMDcyYzcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc05WVk0udGQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzTlZWTS50ZApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJbnRyaW5zaWNzTlZWTS50ZCAtIERlZmluZXMgTlZWTSBpbnRyaW5zaWNzIC0tLS0tLS0tLSotIHRhYmxlZ2VuIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzY3NCwxMSArMzY3MywxOSBAQAogY2xhc3MgUFRYUmVhZFNSZWdJbnRyaW5zaWNfcjMyPHN0cmluZyBuYW1lPgogICA6IEludHJpbnNpYzxbbGx2bV9pMzJfdHldLCBbXSwgW0ludHJOb01lbV0+LAogICAgIEdDQ0J1aWx0aW48Il9fbnZ2bV9yZWFkX3B0eF9zcmVnXyIgIyBuYW1lPjsKLQogY2xhc3MgUFRYUmVhZFNSZWdJbnRyaW5zaWNfcjY0PHN0cmluZyBuYW1lPgogICA6IEludHJpbnNpYzxbbGx2bV9pNjRfdHldLCBbXSwgW0ludHJOb01lbV0+LAogICAgIEdDQ0J1aWx0aW48Il9fbnZ2bV9yZWFkX3B0eF9zcmVnXyIgIyBuYW1lPjsKIAorLy8gSW50cmluc2ljcyB0byByZWFkIHJlZ2lzdGVycyB3aXRoIG5vbi1jb25zdGFudCB2YWx1ZXMuIEUuZy4gdGhlIHZhbHVlcyB0aGF0CisvLyBkbyBjaGFuZ2Ugb3ZlciB0aGUga2VybmVsIGxpZmV0aW1lLiBTdWNoIHJlYWRzIHNob3VsZCBub3QgYmUgQ1NFJ2QuCitjbGFzcyBQVFhSZWFkTkNTUmVnSW50cmluc2ljX3IzMjxzdHJpbmcgbmFtZT4KKyAgOiBJbnRyaW5zaWM8W2xsdm1faTMyX3R5XSwgW10sIFtJbnRySW5hY2Nlc3NpYmxlTWVtT25seV0+LAorICAgIEdDQ0J1aWx0aW48Il9fbnZ2bV9yZWFkX3B0eF9zcmVnXyIgIyBuYW1lPjsKK2NsYXNzIFBUWFJlYWROQ1NSZWdJbnRyaW5zaWNfcjY0PHN0cmluZyBuYW1lPgorICA6IEludHJpbnNpYzxbbGx2bV9pNjRfdHldLCBbXSwgW0ludHJJbmFjY2Vzc2libGVNZW1Pbmx5XT4sCisgICAgR0NDQnVpbHRpbjwiX19udnZtX3JlYWRfcHR4X3NyZWdfIiAjIG5hbWU+OworCiBkZWZtIGludF9udnZtX3JlYWRfcHR4X3NyZWdfdGlkIDogUFRYUmVhZFNSZWdJbnRyaW5zaWNfdjRpMzI8InRpZCI+OwogZGVmbSBpbnRfbnZ2bV9yZWFkX3B0eF9zcmVnX250aWQgOiBQVFhSZWFkU1JlZ0ludHJpbnNpY192NGkzMjwibnRpZCI+OwogCkBAIC0zNzA0LDEzICszNzExLDEzIEBACiBkZWYgaW50X252dm1fcmVhZF9wdHhfc3JlZ19sYW5lbWFza19ndCA6CiAgICAgUFRYUmVhZFNSZWdJbnRyaW5zaWNfcjMyPCJsYW5lbWFza19ndCI+OwogCi1kZWYgaW50X252dm1fcmVhZF9wdHhfc3JlZ19jbG9jayA6IFBUWFJlYWRTUmVnSW50cmluc2ljX3IzMjwiY2xvY2siPjsKLWRlZiBpbnRfbnZ2bV9yZWFkX3B0eF9zcmVnX2Nsb2NrNjQgOiBQVFhSZWFkU1JlZ0ludHJpbnNpY19yNjQ8ImNsb2NrNjQiPjsKK2RlZiBpbnRfbnZ2bV9yZWFkX3B0eF9zcmVnX2Nsb2NrIDogUFRYUmVhZE5DU1JlZ0ludHJpbnNpY19yMzI8ImNsb2NrIj47CitkZWYgaW50X252dm1fcmVhZF9wdHhfc3JlZ19jbG9jazY0IDogUFRYUmVhZE5DU1JlZ0ludHJpbnNpY19yNjQ8ImNsb2NrNjQiPjsKIAotZGVmIGludF9udnZtX3JlYWRfcHR4X3NyZWdfcG0wIDogUFRYUmVhZFNSZWdJbnRyaW5zaWNfcjMyPCJwbTAiPjsKLWRlZiBpbnRfbnZ2bV9yZWFkX3B0eF9zcmVnX3BtMSA6IFBUWFJlYWRTUmVnSW50cmluc2ljX3IzMjwicG0xIj47Ci1kZWYgaW50X252dm1fcmVhZF9wdHhfc3JlZ19wbTIgOiBQVFhSZWFkU1JlZ0ludHJpbnNpY19yMzI8InBtMiI+OwotZGVmIGludF9udnZtX3JlYWRfcHR4X3NyZWdfcG0zIDogUFRYUmVhZFNSZWdJbnRyaW5zaWNfcjMyPCJwbTMiPjsKK2RlZiBpbnRfbnZ2bV9yZWFkX3B0eF9zcmVnX3BtMCA6IFBUWFJlYWROQ1NSZWdJbnRyaW5zaWNfcjMyPCJwbTAiPjsKK2RlZiBpbnRfbnZ2bV9yZWFkX3B0eF9zcmVnX3BtMSA6IFBUWFJlYWROQ1NSZWdJbnRyaW5zaWNfcjMyPCJwbTEiPjsKK2RlZiBpbnRfbnZ2bV9yZWFkX3B0eF9zcmVnX3BtMiA6IFBUWFJlYWROQ1NSZWdJbnRyaW5zaWNfcjMyPCJwbTIiPjsKK2RlZiBpbnRfbnZ2bV9yZWFkX3B0eF9zcmVnX3BtMyA6IFBUWFJlYWROQ1NSZWdJbnRyaW5zaWNfcjMyPCJwbTMiPjsKIAogZGVmIGludF9udnZtX3JlYWRfcHR4X3NyZWdfd2FycHNpemUgOiBQVFhSZWFkU1JlZ0ludHJpbnNpY19yMzI8IndhcnBzaXplIj47CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc1Bvd2VyUEMudGQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NQb3dlclBDLnRkCmluZGV4IDYyYjJlOGYuLmU2YjA4ODQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc1Bvd2VyUEMudGQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzUG93ZXJQQy50ZApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJbnRyaW5zaWNzUG93ZXJQQy50ZCAtIERlZmluZXMgUG93ZXJQQyBpbnRyaW5zaWNzIC0tLSotIHRhYmxlZ2VuIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzUklTQ1YudGQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NSSVNDVi50ZAppbmRleCBiNjU2NjIyLi41YjEzZmM0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NSSVNDVi50ZAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NSSVNDVi50ZApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJbnRyaW5zaWNzUklTQ1YudGQgLSBEZWZpbmVzIFJJU0NWIGludHJpbnNpY3MgLS0tLS0tLSotIHRhYmxlZ2VuIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzYsNCArMzUsMzQgQEAKIGRlZiBpbnRfcmlzY3ZfbWFza2VkX2F0b21pY3Jtd191bWF4X2kzMiA6IE1hc2tlZEF0b21pY1JNVzMySW50cmluc2ljOwogZGVmIGludF9yaXNjdl9tYXNrZWRfYXRvbWljcm13X3VtaW5faTMyIDogTWFza2VkQXRvbWljUk1XMzJJbnRyaW5zaWM7CiAKK2RlZiBpbnRfcmlzY3ZfbWFza2VkX2NtcHhjaGdfaTMyCisgICAgOiBJbnRyaW5zaWM8W2xsdm1faTMyX3R5XSwgW2xsdm1fYW55cHRyX3R5LCBsbHZtX2kzMl90eSwgbGx2bV9pMzJfdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5LCBsbHZtX2kzMl90eV0sCisgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5LCBOb0NhcHR1cmU8MD5dPjsKKworY2xhc3MgTWFza2VkQXRvbWljUk1XNjRJbnRyaW5zaWMKKyAgICA6IEludHJpbnNpYzxbbGx2bV9pNjRfdHldLAorICAgICAgICAgICAgICAgIFtsbHZtX2FueXB0cl90eSwgbGx2bV9pNjRfdHksIGxsdm1faTY0X3R5LCBsbHZtX2k2NF90eV0sCisgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5LCBOb0NhcHR1cmU8MD5dPjsKKworY2xhc3MgTWFza2VkQXRvbWljUk1XNjRXaXRoU2V4dEludHJpbnNpYworICAgIDogSW50cmluc2ljPFtsbHZtX2k2NF90eV0sCisgICAgICAgICAgICAgICAgW2xsdm1fYW55cHRyX3R5LCBsbHZtX2k2NF90eSwgbGx2bV9pNjRfdHksIGxsdm1faTY0X3R5LAorICAgICAgICAgICAgICAgICBsbHZtX2k2NF90eV0sCisgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5LCBOb0NhcHR1cmU8MD5dPjsKKworZGVmIGludF9yaXNjdl9tYXNrZWRfYXRvbWljcm13X3hjaGdfaTY0IDogTWFza2VkQXRvbWljUk1XNjRJbnRyaW5zaWM7CitkZWYgaW50X3Jpc2N2X21hc2tlZF9hdG9taWNybXdfYWRkX2k2NCAgOiBNYXNrZWRBdG9taWNSTVc2NEludHJpbnNpYzsKK2RlZiBpbnRfcmlzY3ZfbWFza2VkX2F0b21pY3Jtd19zdWJfaTY0ICA6IE1hc2tlZEF0b21pY1JNVzY0SW50cmluc2ljOworZGVmIGludF9yaXNjdl9tYXNrZWRfYXRvbWljcm13X25hbmRfaTY0IDogTWFza2VkQXRvbWljUk1XNjRJbnRyaW5zaWM7CitkZWYgaW50X3Jpc2N2X21hc2tlZF9hdG9taWNybXdfbWF4X2k2NCAgOiBNYXNrZWRBdG9taWNSTVc2NFdpdGhTZXh0SW50cmluc2ljOworZGVmIGludF9yaXNjdl9tYXNrZWRfYXRvbWljcm13X21pbl9pNjQgIDogTWFza2VkQXRvbWljUk1XNjRXaXRoU2V4dEludHJpbnNpYzsKK2RlZiBpbnRfcmlzY3ZfbWFza2VkX2F0b21pY3Jtd191bWF4X2k2NCA6IE1hc2tlZEF0b21pY1JNVzY0SW50cmluc2ljOworZGVmIGludF9yaXNjdl9tYXNrZWRfYXRvbWljcm13X3VtaW5faTY0IDogTWFza2VkQXRvbWljUk1XNjRJbnRyaW5zaWM7CisKK2RlZiBpbnRfcmlzY3ZfbWFza2VkX2NtcHhjaGdfaTY0CisgICAgOiBJbnRyaW5zaWM8W2xsdm1faTY0X3R5XSwgW2xsdm1fYW55cHRyX3R5LCBsbHZtX2k2NF90eSwgbGx2bV9pNjRfdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTY0X3R5LCBsbHZtX2k2NF90eV0sCisgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5LCBOb0NhcHR1cmU8MD5dPjsKKwogfSAvLyBUYXJnZXRQcmVmaXggPSAicmlzY3YiCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NTeXN0ZW1aLnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzU3lzdGVtWi50ZAppbmRleCBjYWEyZWMyLi45MWU2NmRkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NTeXN0ZW1aLnRkCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc1N5c3RlbVoudGQKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSW50cmluc2ljc1N5c3RlbVoudGQgLSBEZWZpbmVzIFN5c3RlbVogaW50cmluc2ljcyAtLS0qLSB0YWJsZWdlbiAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc1dlYkFzc2VtYmx5LnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzV2ViQXNzZW1ibHkudGQKaW5kZXggNTQ0MDhkMy4uYmZlYjcwNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzV2ViQXNzZW1ibHkudGQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzV2ViQXNzZW1ibHkudGQKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSW50cmluc2ljc1dlYkFzc2VtYmx5LnRkIC0gRGVmaW5lcyB3YXNtIGludHJpbnNpY3MgLS0qLSB0YWJsZWdlbiAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCkBAIC0yNCwxNyArMjMsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pMzJfdHksIExMVk1NYXRjaFR5cGU8MD5dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdPjsKIAotLy8gVGhlc2UgYXJlIHRoZSBvbGQgbmFtZXMuCi1kZWYgaW50X3dhc21fbWVtX3NpemUgOiBJbnRyaW5zaWM8W2xsdm1fYW55aW50X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9pMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyUmVhZE1lbV0+OwotZGVmIGludF93YXNtX21lbV9ncm93IDogSW50cmluc2ljPFtsbHZtX2FueWludF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1faTMyX3R5LCBMTFZNTWF0Y2hUeXBlPDA+XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXT47CisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8gU2F0dXJhdGluZyBmbG9hdC10by1pbnQgY29udmVyc2lvbnMKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKLS8vIFRoZXNlIGFyZSB0aGUgb2xkIG9sZCBuYW1lcy4gVGhleSBhbHNvIGxhY2sgdGhlIGltbWVkaWF0ZSBmaWVsZC4KLWRlZiBpbnRfd2FzbV9jdXJyZW50X21lbW9yeSA6IEludHJpbnNpYzxbbGx2bV9hbnlpbnRfdHldLCBbXSwgW0ludHJSZWFkTWVtXT47Ci1kZWYgaW50X3dhc21fZ3Jvd19tZW1vcnkgOiBJbnRyaW5zaWM8W2xsdm1fYW55aW50X3R5XSwgW0xMVk1NYXRjaFR5cGU8MD5dLCBbXT47CitkZWYgaW50X3dhc21fdHJ1bmNfc2F0dXJhdGVfc2lnbmVkIDogSW50cmluc2ljPFtsbHZtX2FueWludF90eV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsbHZtX2FueWZsb2F0X3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbSwgSW50clNwZWN1bGF0YWJsZV0+OworZGVmIGludF93YXNtX3RydW5jX3NhdHVyYXRlX3Vuc2lnbmVkIDogSW50cmluc2ljPFtsbHZtX2FueWludF90eV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xsdm1fYW55ZmxvYXRfdHldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW0sIEludHJTcGVjdWxhdGFibGVdPjsKIAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vIEV4Y2VwdGlvbiBoYW5kbGluZyBpbnRyaW5zaWNzCkBAIC01MSwxNiArNDksMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRySGFzU2lkZUVmZmVjdHNdPjsKIGRlZiBpbnRfd2FzbV9nZXRfZWhzZWxlY3RvciA6IEludHJpbnNpYzxbbGx2bV9pMzJfdHldLCBbbGx2bV90b2tlbl90eV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJIYXNTaWRlRWZmZWN0c10+OwotCi0vLyB3YXNtLmNhdGNoIHJldHVybnMgdGhlIHBvaW50ZXIgdG8gdGhlIGV4Y2VwdGlvbiBvYmplY3QgY2F1Z2h0IGJ5IHdhc20gJ2NhdGNoJwotLy8gaW5zdHJ1Y3Rpb24uCi1kZWYgaW50X3dhc21fY2F0Y2ggOiBJbnRyaW5zaWM8W2xsdm1fcHRyX3R5XSwgW2xsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ckhhc1NpZGVFZmZlY3RzXT47CisvLyBUaGlzIGlzIHRoZSBzYW1lIGFzIGxsdm0ud2FzbS5nZXQuZXhjZXB0aW9uIGV4Y2VwdCB0aGF0IGl0IGRvZXMgbm90IHRha2UgYQorLy8gdG9rZW4gb3BlcmFuZC4gVGhpcyBpcyBvbmx5IGZvciBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gcHVycG9zZS4KK2RlZiBpbnRfd2FzbV9leHRyYWN0X2V4Y2VwdGlvbiA6IEludHJpbnNpYzxbbGx2bV9wdHJfdHldLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ckhhc1NpZGVFZmZlY3RzXT47CiAKIC8vIFdlYkFzc2VtYmx5IEVIIG11c3QgbWFpbnRhaW4gdGhlIGxhbmRpbmdwYWRzIGluIHRoZSBvcmRlciBhc3NpZ25lZCB0byB0aGVtCiAvLyBieSBXYXNtRUhQcmVwYXJlIHBhc3MgdG8gZ2VuZXJhdGUgbGFuZGluZ3BhZCB0YWJsZSBpbiBFSFN0cmVhbWVyLiBUaGlzIGlzCiAvLyB1c2VkIGluIG9yZGVyIHRvIGdpdmUgdGhlbSB0aGUgaW5kaWNlcyBpbiBXYXNtRUhQcmVwYXJlLgotZGVmIGludF93YXNtX2xhbmRpbmdwYWRfaW5kZXg6IEludHJpbnNpYzxbXSwgW2xsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OworZGVmIGludF93YXNtX2xhbmRpbmdwYWRfaW5kZXg6IEludHJpbnNpYzxbXSwgW2xsdm1fdG9rZW5fdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwogCiAvLyBSZXR1cm5zIExTREEgYWRkcmVzcyBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi4KIGRlZiBpbnRfd2FzbV9sc2RhIDogSW50cmluc2ljPFtsbHZtX3B0cl90eV0sIFtdLCBbSW50ck5vTWVtXT47CkBAIC05MSwxNCArODksNiBAQAogLy8gU0lNRCBpbnRyaW5zaWNzCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCi1kZWYgaW50X3dhc21fYWRkX3NhdHVyYXRlX3NpZ25lZCA6Ci0gIEludHJpbnNpYzxbbGx2bV9hbnl2ZWN0b3JfdHldLAotICAgICAgICAgICAgW0xMVk1NYXRjaFR5cGU8MD4sIExMVk1NYXRjaFR5cGU8MD5dLAotICAgICAgICAgICAgW0ludHJOb01lbSwgSW50clNwZWN1bGF0YWJsZV0+OwotZGVmIGludF93YXNtX2FkZF9zYXR1cmF0ZV91bnNpZ25lZCA6Ci0gIEludHJpbnNpYzxbbGx2bV9hbnl2ZWN0b3JfdHldLAotICAgICAgICAgICAgW0xMVk1NYXRjaFR5cGU8MD4sIExMVk1NYXRjaFR5cGU8MD5dLAotICAgICAgICAgICAgW0ludHJOb01lbSwgSW50clNwZWN1bGF0YWJsZV0+OwogZGVmIGludF93YXNtX3N1Yl9zYXR1cmF0ZV9zaWduZWQgOgogICBJbnRyaW5zaWM8W2xsdm1fYW55dmVjdG9yX3R5XSwKICAgICAgICAgICAgIFtMTFZNTWF0Y2hUeXBlPDA+LCBMTFZNTWF0Y2hUeXBlPDA+XSwKQEAgLTEyMCw0ICsxMTAsMTggQEAKICAgICAgICAgICAgIFtsbHZtX2FueXZlY3Rvcl90eV0sCiAgICAgICAgICAgICBbSW50ck5vTWVtLCBJbnRyU3BlY3VsYXRhYmxlXT47CiAKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLyBCdWxrIG1lbW9yeSBpbnRyaW5zaWNzCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCitkZWYgaW50X3dhc21fbWVtb3J5X2luaXQgOgorICBJbnRyaW5zaWM8W10sCisgICAgICAgICAgICBbbGx2bV9pMzJfdHksIGxsdm1faTMyX3R5LCBsbHZtX3B0cl90eSwgbGx2bV9pMzJfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICAgIFtJbnRyV3JpdGVNZW0sIEludHJJbmFjY2Vzc2libGVNZW1PckFyZ01lbU9ubHksIFdyaXRlT25seTwyPiwKKyAgICAgICAgICAgICBJbnRySGFzU2lkZUVmZmVjdHNdPjsKK2RlZiBpbnRfd2FzbV9kYXRhX2Ryb3AgOgorICBJbnRyaW5zaWM8W10sCisgICAgICAgICAgICBbbGx2bV9pMzJfdHldLAorICAgICAgICAgICAgW0ludHJOb0R1cGxpY2F0ZSwgSW50ckhhc1NpZGVFZmZlY3RzXT47CisKIH0gLy8gVGFyZ2V0UHJlZml4ID0gIndhc20iCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NYODYudGQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0ludHJpbnNpY3NYODYudGQKaW5kZXggNTNhMWUyMS4uYThjOGNiYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzWDg2LnRkCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc1g4Ni50ZApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJbnRyaW5zaWNzWDg2LnRkIC0gRGVmaW5lcyBYODYgaW50cmluc2ljcyAtLS0tLS0tLS0tLSotIHRhYmxlZ2VuIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjcsMTIgKzI2LDYgQEAKIAogICAvLyBNYXJrcyB0aGUgRUggZ3VhcmQgc2xvdCBub2RlIGNyZWF0ZWQgaW4gTExWTSBJUiBwcmlvciB0byBjb2RlIGdlbmVyYXRpb24uCiAgIGRlZiBpbnRfeDg2X3NlaF9laGd1YXJkIDogSW50cmluc2ljPFtdLCBbbGx2bV9wdHJfdHldLCBbXT47Ci0KLSAgLy8gR2l2ZW4gYSBwb2ludGVyIHRvIHRoZSBlbmQgb2YgYW4gRUggcmVnaXN0cmF0aW9uIG9iamVjdCwgcmV0dXJucyB0aGUgdHJ1ZQotICAvLyBwYXJlbnQgZnJhbWUgYWRkcmVzcyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggbGx2bS5sb2NhbHJlY292ZXIuCi0gIGRlZiBpbnRfeDg2X3NlaF9yZWNvdmVyZnAgOiBJbnRyaW5zaWM8W2xsdm1fcHRyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV9wdHJfdHksIGxsdm1fcHRyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47CiB9CiAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCkBAIC0zNjQsMTggKzM1Nyw2IEBACiAKIC8vIEludGVnZXIgYXJpdGhtZXRpYyBvcHMuCiBsZXQgVGFyZ2V0UHJlZml4ID0gIng4NiIgaW4geyAgLy8gQWxsIGludHJpbnNpY3Mgc3RhcnQgd2l0aCAibGx2bS54ODYuIi4KLSAgZGVmIGludF94ODZfc3NlMl9wYWRkc19iIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfcGFkZHNiMTI4Ij4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92MTZpOF90eV0sIFtsbHZtX3YxNmk4X3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjE2aThfdHldLCBbSW50ck5vTWVtLCBDb21tdXRhdGl2ZV0+OwotICBkZWYgaW50X3g4Nl9zc2UyX3BhZGRzX3cgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wYWRkc3cxMjgiPiwKLSAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTE2X3R5XSwgW2xsdm1fdjhpMTZfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV92OGkxNl90eV0sIFtJbnRyTm9NZW0sIENvbW11dGF0aXZlXT47Ci0gIGRlZiBpbnRfeDg2X3NzZTJfcHN1YnNfYiA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3BzdWJzYjEyOCI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aThfdHldLCBbbGx2bV92MTZpOF90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3YxNmk4X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9zc2UyX3BzdWJzX3cgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wc3Vic3cxMjgiPiwKLSAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTE2X3R5XSwgW2xsdm1fdjhpMTZfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV92OGkxNl90eV0sIFtJbnRyTm9NZW1dPjsKICAgZGVmIGludF94ODZfc3NlMl9wbXVsaHVfdyA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3BtdWxodXcxMjgiPiwKICAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTE2X3R5XSwgW2xsdm1fdjhpMTZfdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV92OGkxNl90eV0sIFtJbnRyTm9NZW0sIENvbW11dGF0aXZlXT47CkBAIC0xMzI0LDIxICsxMzA1LDEyIEBACiAKIC8vIEJJVEFMRyBiaXRzIHNodWZmbGUKIGxldCBUYXJnZXRQcmVmaXggPSAieDg2IiBpbiB7ICAvLyBBbGwgaW50cmluc2ljcyBzdGFydCB3aXRoICJsbHZtLng4Ni4iLgotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza192cHNodWZiaXRxbWJfMTI4IDoKLSAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNodWZiaXRxbWIxMjhfbWFzayI+LAotICAgIEludHJpbnNpYzxbbGx2bV9pMTZfdHldLAotICAgICAgICAgICAgICBbbGx2bV92MTZpOF90eSwgbGx2bV92MTZpOF90eSwgbGx2bV9pMTZfdHldLAotICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3Zwc2h1ZmJpdHFtYl8yNTYgOgotICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2h1ZmJpdHFtYjI1Nl9tYXNrIj4sCi0gICAgSW50cmluc2ljPFtsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgIFtsbHZtX3YzMmk4X3R5LCBsbHZtX3YzMmk4X3R5LCBsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfdnBzaHVmYml0cW1iXzUxMiA6Ci0gICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaHVmYml0cW1iNTEyX21hc2siPiwKLSAgICBJbnRyaW5zaWM8W2xsdm1faTY0X3R5XSwKLSAgICAgICAgICAgICAgW2xsdm1fdjY0aThfdHksIGxsdm1fdjY0aThfdHksIGxsdm1faTY0X3R5XSwKLSAgICAgICAgICAgICAgW0ludHJOb01lbV0+OworICBkZWYgaW50X3g4Nl9hdng1MTJfdnBzaHVmYml0cW1iXzEyOCA6CisgICAgSW50cmluc2ljPFtsbHZtX3YxNmkxX3R5XSwgW2xsdm1fdjE2aThfdHksIGxsdm1fdjE2aThfdHldLCBbSW50ck5vTWVtXT47CisgIGRlZiBpbnRfeDg2X2F2eDUxMl92cHNodWZiaXRxbWJfMjU2IDoKKyAgICBJbnRyaW5zaWM8W2xsdm1fdjMyaTFfdHldLCBbbGx2bV92MzJpOF90eSwgbGx2bV92MzJpOF90eV0sIFtJbnRyTm9NZW1dPjsKKyAgZGVmIGludF94ODZfYXZ4NTEyX3Zwc2h1ZmJpdHFtYl81MTIgOgorICAgIEludHJpbnNpYzxbbGx2bV92NjRpMV90eV0sIFtsbHZtX3Y2NGk4X3R5LCBsbHZtX3Y2NGk4X3R5XSwgW0ludHJOb01lbV0+OwogfQogCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwpAQCAtMTM0NiwxOCArMTMxOCw2IEBACiAKIC8vIEludGVnZXIgYXJpdGhtZXRpYyBvcHMuCiBsZXQgVGFyZ2V0UHJlZml4ID0gIng4NiIgaW4geyAgLy8gQWxsIGludHJpbnNpY3Mgc3RhcnQgd2l0aCAibGx2bS54ODYuIi4KLSAgZGVmIGludF94ODZfYXZ4Ml9wYWRkc19iIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfcGFkZHNiMjU2Ij4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92MzJpOF90eV0sIFtsbHZtX3YzMmk4X3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjMyaThfdHldLCBbSW50ck5vTWVtLCBDb21tdXRhdGl2ZV0+OwotICBkZWYgaW50X3g4Nl9hdngyX3BhZGRzX3cgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wYWRkc3cyNTYiPiwKLSAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmkxNl90eV0sIFtsbHZtX3YxNmkxNl90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3YxNmkxNl90eV0sIFtJbnRyTm9NZW0sIENvbW11dGF0aXZlXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDJfcHN1YnNfYiA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3BzdWJzYjI1NiI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjMyaThfdHldLCBbbGx2bV92MzJpOF90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3YzMmk4X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdngyX3BzdWJzX3cgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wc3Vic3cyNTYiPiwKLSAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmkxNl90eV0sIFtsbHZtX3YxNmkxNl90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3YxNmkxNl90eV0sIFtJbnRyTm9NZW1dPjsKICAgZGVmIGludF94ODZfYXZ4Ml9wbXVsaHVfdyA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3BtdWxodXcyNTYiPiwKICAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmkxNl90eV0sIFtsbHZtX3YxNmkxNl90eSwKICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3YxNmkxNl90eV0sIFtJbnRyTm9NZW0sIENvbW11dGF0aXZlXT47CkBAIC0xNDk0LDE4ICsxNDU0LDE1IEBACiAgICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92OGk2NF90eV0sIFtsbHZtX3Y4aTY0X3R5LAogICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwogCi0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3BtdWx0aXNoaWZ0X3FiXzEyODoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBtdWx0aXNoaWZ0cWIxMjhfbWFzayI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aThfdHldLCBbbGx2bV92MTZpOF90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX3YxNmk4X3R5LCBsbHZtX3YxNmk4X3R5LCBsbHZtX2kxNl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfcG11bHRpc2hpZnRfcWJfMjU2OgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cG11bHRpc2hpZnRxYjI1Nl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92MzJpOF90eV0sIFtsbHZtX3YzMmk4X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1fdjMyaThfdHksIGxsdm1fdjMyaThfdHksIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19wbXVsdGlzaGlmdF9xYl81MTI6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3ZwbXVsdGlzaGlmdHFiNTEyX21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y2NGk4X3R5XSwgW2xsdm1fdjY0aThfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92NjRpOF90eSwgbGx2bV92NjRpOF90eSwgbGx2bV9pNjRfdHldLCBbSW50ck5vTWVtXT47CisgIGRlZiBpbnRfeDg2X2F2eDUxMl9wbXVsdGlzaGlmdF9xYl8xMjg6CisgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3ZwbXVsdGlzaGlmdHFiMTI4Ij4sCisgICAgICAgIEludHJpbnNpYzxbbGx2bV92MTZpOF90eV0sIFtsbHZtX3YxNmk4X3R5LCBsbHZtX3YxNmk4X3R5XSwgW0ludHJOb01lbV0+OworICBkZWYgaW50X3g4Nl9hdng1MTJfcG11bHRpc2hpZnRfcWJfMjU2OgorICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cG11bHRpc2hpZnRxYjI1NiI+LAorICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjMyaThfdHldLCBbbGx2bV92MzJpOF90eSwgbGx2bV92MzJpOF90eV0sIFtJbnRyTm9NZW1dPjsKKyAgZGVmIGludF94ODZfYXZ4NTEyX3BtdWx0aXNoaWZ0X3FiXzUxMjoKKyAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBtdWx0aXNoaWZ0cWI1MTIiPiwKKyAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y2NGk4X3R5XSwgW2xsdm1fdjY0aThfdHksIGxsdm1fdjY0aThfdHldLCBbSW50ck5vTWVtXT47CiB9CiAKIC8vIFBhY2sgb3BzLgpAQCAtMTcxNSw4MyArMTY3Miw2IEBACiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9wc3Jhdl93XzUxMiA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3BzcmF2MzJoaSI+LAogICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjMyaTE2X3R5XSwgW2xsdm1fdjMyaTE2X3R5LCBsbHZtX3YzMmkxNl90eV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLSAgZGVmIGludF94ODZfYXZ4NTEyX3Byb3J2X2RfMTI4IDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfcHJvcnZkMTI4Ij4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGkzMl90eV0sIFtsbHZtX3Y0aTMyX3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjRpMzJfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9wcm9ydl9kXzI1NiA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Byb3J2ZDI1NiI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpMzJfdHldLCBbbGx2bV92OGkzMl90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3Y4aTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfcHJvcnZfZF81MTIgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wcm9ydmQ1MTIiPiwKLSAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3YxNmkzMl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX3Byb3J2X3FfMTI4IDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfcHJvcnZxMTI4Ij4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92Mmk2NF90eV0sIFtsbHZtX3YyaTY0X3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjJpNjRfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9wcm9ydl9xXzI1NiA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Byb3J2cTI1NiI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRpNjRfdHldLCBbbGx2bV92NGk2NF90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3Y0aTY0X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfcHJvcnZfcV81MTIgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wcm9ydnE1MTIiPiwKLSAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTY0X3R5XSwgW2xsdm1fdjhpNjRfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV92OGk2NF90eV0sIFtJbnRyTm9NZW1dPjsKLQotICAgZGVmIGludF94ODZfYXZ4NTEyX3Byb2xfZF8xMjggOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wcm9sZDEyOCI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRpMzJfdHldICwgW2xsdm1fdjRpMzJfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9pMzJfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9wcm9sX2RfMjU2IDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfcHJvbGQyNTYiPiwKLSAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTMyX3R5XSAsIFtsbHZtX3Y4aTMyX3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfcHJvbF9kXzUxMiA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Byb2xkNTEyIj4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92MTZpMzJfdHldICwgW2xsdm1fdjE2aTMyX3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfcHJvbF9xXzEyOCA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Byb2xxMTI4Ij4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92Mmk2NF90eV0gLCBbbGx2bV92Mmk2NF90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX3Byb2xfcV8yNTYgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wcm9scTI1NiI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRpNjRfdHldICwgW2xsdm1fdjRpNjRfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9pMzJfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9wcm9sX3FfNTEyIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfcHJvbHE1MTIiPiwKLSAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTY0X3R5XSAsIFtsbHZtX3Y4aTY0X3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotCi0KLSAgZGVmIGludF94ODZfYXZ4NTEyX3Byb2x2X2RfMTI4IDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfcHJvbHZkMTI4Ij4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGkzMl90eV0sIFtsbHZtX3Y0aTMyX3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjRpMzJfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9wcm9sdl9kXzI1NiA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Byb2x2ZDI1NiI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpMzJfdHldLCBbbGx2bV92OGkzMl90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3Y4aTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfcHJvbHZfZF81MTIgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wcm9sdmQ1MTIiPiwKLSAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3YxNmkzMl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX3Byb2x2X3FfMTI4IDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfcHJvbHZxMTI4Ij4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92Mmk2NF90eV0sIFtsbHZtX3YyaTY0X3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjJpNjRfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9wcm9sdl9xXzI1NiA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Byb2x2cTI1NiI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRpNjRfdHldLCBbbGx2bV92NGk2NF90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3Y0aTY0X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfcHJvbHZfcV81MTIgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wcm9sdnE1MTIiPiwKLSAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTY0X3R5XSwgW2xsdm1fdjhpNjRfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV92OGk2NF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX3Byb3JfZF8xMjggOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wcm9yZDEyOCI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRpMzJfdHldLCBbbGx2bV92NGkzMl90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX3Byb3JfZF8yNTYgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wcm9yZDI1NiI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpMzJfdHldLCBbbGx2bV92OGkzMl90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX3Byb3JfZF81MTIgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wcm9yZDUxMiI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfcHJvcl9xXzEyOCA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Byb3JxMTI4Ij4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92Mmk2NF90eV0sIFtsbHZtX3YyaTY0X3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfcHJvcl9xXzI1NiA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Byb3JxMjU2Ij4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGk2NF90eV0sIFtsbHZtX3Y0aTY0X3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfcHJvcl9xXzUxMiA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Byb3JxNTEyIj4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92OGk2NF90eV0sIFtsbHZtX3Y4aTY0X3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotCiB9CiAKIC8vIEdhdGhlciBvcHMKQEAgLTIwMjgsMzEgKzE5MDgsNiBAQAogICBkZWYgaW50X3g4Nl94b3BfdmZyY3pfcHNfMjU2IDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdmZyY3pwczI1NiI+LAogICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhmMzJfdHldLCBbbGx2bV92OGYzMl90eV0sIFtJbnRyTm9NZW1dPjsKIAotICBkZWYgaW50X3g4Nl94b3BfdnBjb21iIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBjb21iIj4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92MTZpOF90eV0sIFtsbHZtX3YxNmk4X3R5LCBsbHZtX3YxNmk4X3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X3hvcF92cGNvbXcgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cGNvbXciPiwKLSAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTE2X3R5XSwgW2xsdm1fdjhpMTZfdHksIGxsdm1fdjhpMTZfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfeG9wX3ZwY29tZCA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3ZwY29tZCI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRpMzJfdHldLCBbbGx2bV92NGkzMl90eSwgbGx2bV92NGkzMl90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2k4X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl94b3BfdnBjb21xIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBjb21xIj4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92Mmk2NF90eV0sIFtsbHZtX3YyaTY0X3R5LCBsbHZtX3YyaTY0X3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X3hvcF92cGNvbXViIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBjb211YiI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aThfdHldLCBbbGx2bV92MTZpOF90eSwgbGx2bV92MTZpOF90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2k4X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl94b3BfdnBjb211dyA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3ZwY29tdXciPiwKLSAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTE2X3R5XSwgW2xsdm1fdjhpMTZfdHksIGxsdm1fdjhpMTZfdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfeG9wX3ZwY29tdWQgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cGNvbXVkIj4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGkzMl90eV0sIFtsbHZtX3Y0aTMyX3R5LCBsbHZtX3Y0aTMyX3R5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X3hvcF92cGNvbXVxIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBjb211cSI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjJpNjRfdHldLCBbbGx2bV92Mmk2NF90eSwgbGx2bV92Mmk2NF90eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2k4X3R5XSwgW0ludHJOb01lbV0+OwotCiAgIGRlZiBpbnRfeDg2X3hvcF92cGhhZGRiZCA6CiAgICAgICAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3ZwaGFkZGJkIj4sCiAgICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGkzMl90eV0sIFtsbHZtX3YxNmk4X3R5XSwgW0ludHJOb01lbV0+OwpAQCAtMjE2MywzMiArMjAxOCw2IEBACiAgICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92MTZpOF90eV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBbbGx2bV92MTZpOF90eSwgbGx2bV92MTZpOF90eSwgbGx2bV92MTZpOF90eV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLSAgZGVmIGludF94ODZfeG9wX3Zwcm90YiA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwcm90YiI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aThfdHldLCBbbGx2bV92MTZpOF90eSwgbGx2bV92MTZpOF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X3hvcF92cHJvdGQgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHJvdGQiPiwKLSAgICAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0aTMyX3R5XSwgW2xsdm1fdjRpMzJfdHksIGxsdm1fdjRpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl94b3BfdnByb3RxIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnByb3RxIj4sCi0gICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92Mmk2NF90eV0sIFtsbHZtX3YyaTY0X3R5LCBsbHZtX3YyaTY0X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfeG9wX3Zwcm90dyA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwcm90dyI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpMTZfdHldLCBbbGx2bV92OGkxNl90eSwgbGx2bV92OGkxNl90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X3hvcF92cHJvdGJpIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnByb3RiaSI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aThfdHldLCBbbGx2bV92MTZpOF90eSwgbGx2bV9pOF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X3hvcF92cHJvdGRpIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnByb3RkaSI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRpMzJfdHldLCBbbGx2bV92NGkzMl90eSwgbGx2bV9pOF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X3hvcF92cHJvdHFpIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnByb3RxaSI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjJpNjRfdHldLCBbbGx2bV92Mmk2NF90eSwgbGx2bV9pOF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X3hvcF92cHJvdHdpIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnByb3R3aSI+LAotICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpMTZfdHldLCBbbGx2bV92OGkxNl90eSwgbGx2bV9pOF90eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KICAgZGVmIGludF94ODZfeG9wX3Zwc2hhYiA6CiAgICAgICAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hhYiI+LAogICAgICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aThfdHldLCBbbGx2bV92MTZpOF90eSwgbGx2bV92MTZpOF90eV0sCkBAIC0yNzI2LDIyICsyNTU1LDE2IEBACiAvLyBBRFgKIAogbGV0IFRhcmdldFByZWZpeCA9ICJ4ODYiIGluIHsgIC8vIEFsbCBpbnRyaW5zaWNzIHN0YXJ0IHdpdGggImxsdm0ueDg2LiIuCi0gIGRlZiBpbnRfeDg2X2FkZGNhcnJ5eF91MzI6CisgIGRlZiBpbnRfeDg2X2FkZGNhcnJ5XzMyOgogICAgICAgICBJbnRyaW5zaWM8W2xsdm1faThfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICAgICAgICAgIFtsbHZtX2k4X3R5LCBsbHZtX2kzMl90eSwgbGx2bV9pMzJfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2FkZGNhcnJ5eF91NjQ6CisgIGRlZiBpbnRfeDg2X2FkZGNhcnJ5XzY0OgogICAgICAgICBJbnRyaW5zaWM8W2xsdm1faThfdHksIGxsdm1faTY0X3R5XSwKICAgICAgICAgICAgICAgICAgIFtsbHZtX2k4X3R5LCBsbHZtX2k2NF90eSwgbGx2bV9pNjRfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2FkZGNhcnJ5X3UzMjoKKyAgZGVmIGludF94ODZfc3ViYm9ycm93XzMyOgogICAgICAgICBJbnRyaW5zaWM8W2xsdm1faThfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICAgICAgICAgIFtsbHZtX2k4X3R5LCBsbHZtX2kzMl90eSwgbGx2bV9pMzJfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2FkZGNhcnJ5X3U2NDoKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX2k4X3R5LCBsbHZtX2k2NF90eV0sCi0gICAgICAgICAgICAgICAgICBbbGx2bV9pOF90eSwgbGx2bV9pNjRfdHksIGxsdm1faTY0X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9zdWJib3Jyb3dfdTMyOgotICAgICAgICBJbnRyaW5zaWM8W2xsdm1faThfdHksIGxsdm1faTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgIFtsbHZtX2k4X3R5LCBsbHZtX2kzMl90eSwgbGx2bV9pMzJfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X3N1YmJvcnJvd191NjQ6CisgIGRlZiBpbnRfeDg2X3N1YmJvcnJvd182NDoKICAgICAgICAgSW50cmluc2ljPFtsbHZtX2k4X3R5LCBsbHZtX2k2NF90eV0sCiAgICAgICAgICAgICAgICAgICBbbGx2bV9pOF90eSwgbGx2bV9pNjRfdHksIGxsdm1faTY0X3R5XSwgW0ludHJOb01lbV0+OwogfQpAQCAtMjg2NSwxMCArMjY4OCwxMiBAQAogCiAvLyBWZWN0b3IgY29udmVydAogbGV0IFRhcmdldFByZWZpeCA9ICJ4ODYiIGluIHsgIC8vIEFsbCBpbnRyaW5zaWNzIHN0YXJ0IHdpdGggImxsdm0ueDg2LiIuCi0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2N2dGRxMnBzXzUxMiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2N2dGRxMnBzNTEyX21hc2siPiwKLSAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2ZjMyX3R5XSwKLSAgICAgICAgICBbbGx2bV92MTZpMzJfdHksIGxsdm1fdjE2ZjMyX3R5LCAgbGx2bV9pMTZfdHksICBsbHZtX2kzMl90eV0sCisgIGRlZiBpbnRfeDg2X2F2eDUxMl9zaXRvZnBfcm91bmQgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV9hbnlmbG9hdF90eV0sIFtsbHZtX2FueWludF90eSwgbGx2bV9pMzJfdHldLAorICAgICAgICAgIFtJbnRyTm9NZW1dPjsKKworICBkZWYgaW50X3g4Nl9hdng1MTJfdWl0b2ZwX3JvdW5kIDoKKyAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fYW55ZmxvYXRfdHldLCBbbGx2bV9hbnlpbnRfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICBbSW50ck5vTWVtXT47CiAKICAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfY3Z0cGQyZHFfMTI4IDoKQEAgLTMwMzksMzAgKzI4NjQsMTIgQEAKICAgICAgICAgICBbbGx2bV92OGYzMl90eSwgbGx2bV92OGk2NF90eSwgIGxsdm1faThfdHksICBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgW0ludHJOb01lbV0+OwogCi0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2N2dHFxMnBkXzUxMiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2N2dHFxMnBkNTEyX21hc2siPiwKLSAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhmNjRfdHldLAotICAgICAgICAgIFtsbHZtX3Y4aTY0X3R5LCBsbHZtX3Y4ZjY0X3R5LCAgbGx2bV9pOF90eSwgIGxsdm1faTMyX3R5XSwKLSAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KICAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfY3Z0cXEycHNfMTI4IDoKICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY3Z0cXEycHMxMjhfbWFzayI+LAogICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGYzMl90eV0sCiAgICAgICAgICAgW2xsdm1fdjJpNjRfdHksIGxsdm1fdjRmMzJfdHksICBsbHZtX2k4X3R5XSwKICAgICAgICAgICBbSW50ck5vTWVtXT47CiAKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfY3Z0cXEycHNfMjU2IDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY3Z0cXEycHMyNTZfbWFzayI+LAotICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGYzMl90eV0sCi0gICAgICAgICAgW2xsdm1fdjRpNjRfdHksIGxsdm1fdjRmMzJfdHksICBsbHZtX2k4X3R5XSwKLSAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfY3Z0cXEycHNfNTEyIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY3Z0cXEycHM1MTJfbWFzayI+LAotICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92OGYzMl90eV0sCi0gICAgICAgICAgW2xsdm1fdjhpNjRfdHksIGxsdm1fdjhmMzJfdHksICBsbHZtX2k4X3R5LCAgbGx2bV9pMzJfdHldLAotICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQogICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19jdnR0cGQyZHFfMTI4IDoKICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY3Z0dHBkMmRxMTI4X21hc2siPiwKICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRpMzJfdHldLApAQCAtMzE4OSwzNiArMjk5NiwxMiBAQAogICAgICAgICAgIFtsbHZtX3Y4ZjMyX3R5LCBsbHZtX3Y4aTY0X3R5LCAgbGx2bV9pOF90eSwgIGxsdm1faTMyX3R5XSwKICAgICAgICAgICBbSW50ck5vTWVtXT47CiAKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfY3Z0dWRxMnBzXzUxMiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2N2dHVkcTJwczUxMl9tYXNrIj4sCi0gICAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmYzMl90eV0sCi0gICAgICAgICAgW2xsdm1fdjE2aTMyX3R5LCBsbHZtX3YxNmYzMl90eSwgIGxsdm1faTE2X3R5LCAgbGx2bV9pMzJfdHldLAotICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19jdnR1cXEycGRfNTEyIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY3Z0dXFxMnBkNTEyX21hc2siPiwKLSAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhmNjRfdHldLAotICAgICAgICAgIFtsbHZtX3Y4aTY0X3R5LCBsbHZtX3Y4ZjY0X3R5LCAgbGx2bV9pOF90eSwgIGxsdm1faTMyX3R5XSwKLSAgICAgICAgICBbSW50ck5vTWVtXT47Ci0KICAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfY3Z0dXFxMnBzXzEyOCA6CiAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2N2dHVxcTJwczEyOF9tYXNrIj4sCiAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0ZjMyX3R5XSwKICAgICAgICAgICBbbGx2bV92Mmk2NF90eSwgbGx2bV92NGYzMl90eSwgIGxsdm1faThfdHldLAogICAgICAgICAgIFtJbnRyTm9NZW1dPjsKIAotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19jdnR1cXEycHNfMjU2IDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY3Z0dXFxMnBzMjU2X21hc2siPiwKLSAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRmMzJfdHldLAotICAgICAgICAgIFtsbHZtX3Y0aTY0X3R5LCBsbHZtX3Y0ZjMyX3R5LCAgbGx2bV9pOF90eV0sCi0gICAgICAgICAgW0ludHJOb01lbV0+OwotCi0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2N2dHVxcTJwc181MTIgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9jdnR1cXEycHM1MTJfbWFzayI+LAotICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92OGYzMl90eV0sCi0gICAgICAgICAgW2xsdm1fdjhpNjRfdHksIGxsdm1fdjhmMzJfdHksICBsbHZtX2k4X3R5LCAgbGx2bV9pMzJfdHldLAotICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLQogICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19ybmRzY2FsZV9wZF8xMjggOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9ybmRzY2FsZXBkXzEyOF9tYXNrIj4sCiAgICAgICAgIEludHJpbnNpYzxbbGx2bV92MmY2NF90eV0sIFtsbHZtX3YyZjY0X3R5LCBsbHZtX2kzMl90eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3YyZjY0X3R5LCAgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKQEAgLTM2ODMsMTggKzM0NjYsNiBAQAogfQogLy8gSW50ZWdlciBhcml0aG1ldGljIG9wcwogbGV0IFRhcmdldFByZWZpeCA9ICJ4ODYiIGluIHsKLSAgZGVmIGludF94ODZfYXZ4NTEyX3BhZGRzX2JfNTEyIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfcGFkZHNiNTEyIj4sCi0gICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y2NGk4X3R5XSwgW2xsdm1fdjY0aThfdHksIGxsdm1fdjY0aThfdHldLAotICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9wYWRkc193XzUxMiA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3BhZGRzdzUxMiI+LAotICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92MzJpMTZfdHldLCBbbGx2bV92MzJpMTZfdHksIGxsdm1fdjMyaTE2X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX3BzdWJzX2JfNTEyIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfcHN1YnNiNTEyIj4sCi0gICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y2NGk4X3R5XSwgW2xsdm1fdjY0aThfdHksIGxsdm1fdjY0aThfdHldLAotICAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfcHN1YnNfd181MTIgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wc3Vic3c1MTIiPiwKLSAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjMyaTE2X3R5XSwgW2xsdm1fdjMyaTE2X3R5LCBsbHZtX3YzMmkxNl90eV0sCi0gICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47CiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9wbXVsaHVfd181MTIgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wbXVsaHV3NTEyIj4sCiAgICAgICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92MzJpMTZfdHldLCBbbGx2bV92MzJpMTZfdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV92MzJpMTZfdHldLCBbSW50ck5vTWVtLCBDb21tdXRhdGl2ZV0+OwpAQCAtMzcyNiwyNjUgKzM0OTcsMjM1IEBACiAKIC8vIEdhdGhlciBhbmQgU2NhdHRlciBvcHMKIGxldCBUYXJnZXRQcmVmaXggPSAieDg2IiBpbiB7Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9nYXRoZXJfZHBkXzUxMiAgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9nYXRoZXJzaXY4ZGYiPiwKKyAgLy8gTk9URTogVGhlc2UgYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIHZlcnNpb25zIHRoYXQgdGFrZSBhIHZYaTEgbWFzay4KKyAgZGVmIGludF94ODZfYXZ4NTEyX2dhdGhlcl9kcGRfNTEyICA6CiAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4ZjY0X3R5XSwgW2xsdm1fdjhmNjRfdHksIGxsdm1fcHRyX3R5LAogICAgICAgICAgICAgICAgICAgICAgbGx2bV92OGkzMl90eSwgbGx2bV9pOF90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgICAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9nYXRoZXJfZHBzXzUxMiAgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9nYXRoZXJzaXYxNnNmIj4sCisgIGRlZiBpbnRfeDg2X2F2eDUxMl9nYXRoZXJfZHBzXzUxMiAgOgogICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92MTZmMzJfdHldLCBbbGx2bV92MTZmMzJfdHksIGxsdm1fcHRyX3R5LAogICAgICAgICAgICAgICAgICAgICAgbGx2bV92MTZpMzJfdHksIGxsdm1faTE2X3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgICAgICAgICAgIFtJbnRyUmVhZE1lbSwgSW50ckFyZ01lbU9ubHldPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX2dhdGhlcl9xcGRfNTEyICA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2dhdGhlcmRpdjhkZiI+LAorICBkZWYgaW50X3g4Nl9hdng1MTJfZ2F0aGVyX3FwZF81MTIgIDoKICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhmNjRfdHldLCBbbGx2bV92OGY2NF90eSwgbGx2bV9wdHJfdHksCiAgICAgICAgICAgICAgICAgICAgICBsbHZtX3Y4aTY0X3R5LCBsbHZtX2k4X3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgICAgICAgICAgIFtJbnRyUmVhZE1lbSwgSW50ckFyZ01lbU9ubHldPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX2dhdGhlcl9xcHNfNTEyICA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2dhdGhlcmRpdjE2c2YiPiwKKyAgZGVmIGludF94ODZfYXZ4NTEyX2dhdGhlcl9xcHNfNTEyICA6CiAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4ZjMyX3R5XSwgW2xsdm1fdjhmMzJfdHksIGxsdm1fcHRyX3R5LAogICAgICAgICAgICAgICAgICAgICAgbGx2bV92OGk2NF90eSwgbGx2bV9pOF90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgICAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CiAKIAotICBkZWYgaW50X3g4Nl9hdng1MTJfZ2F0aGVyX2RwcV81MTIgIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfZ2F0aGVyc2l2OGRpIj4sCisgIGRlZiBpbnRfeDg2X2F2eDUxMl9nYXRoZXJfZHBxXzUxMiAgOgogICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92OGk2NF90eV0sIFtsbHZtX3Y4aTY0X3R5LCBsbHZtX3B0cl90eSwKICAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjhpMzJfdHksIGxsdm1faThfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICAgICAgICAgICAgW0ludHJSZWFkTWVtLCBJbnRyQXJnTWVtT25seV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfZ2F0aGVyX2RwaV81MTIgIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfZ2F0aGVyc2l2MTZzaSI+LAorICBkZWYgaW50X3g4Nl9hdng1MTJfZ2F0aGVyX2RwaV81MTIgIDoKICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LCBsbHZtX3B0cl90eSwKICAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjE2aTMyX3R5LCBsbHZtX2kxNl90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgICAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9nYXRoZXJfcXBxXzUxMiAgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9nYXRoZXJkaXY4ZGkiPiwKKyAgZGVmIGludF94ODZfYXZ4NTEyX2dhdGhlcl9xcHFfNTEyICA6CiAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTY0X3R5XSwgW2xsdm1fdjhpNjRfdHksIGxsdm1fcHRyX3R5LAogICAgICAgICAgICAgICAgICAgICAgbGx2bV92OGk2NF90eSwgbGx2bV9pOF90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgICAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9nYXRoZXJfcXBpXzUxMiAgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9nYXRoZXJkaXYxNnNpIj4sCisgIGRlZiBpbnRfeDg2X2F2eDUxMl9nYXRoZXJfcXBpXzUxMiAgOgogICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92OGkzMl90eV0sIFtsbHZtX3Y4aTMyX3R5LCBsbHZtX3B0cl90eSwKICAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjhpNjRfdHksIGxsdm1faThfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICAgICAgICAgICAgW0ludHJSZWFkTWVtLCBJbnRyQXJnTWVtT25seV0+OwogCiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9nYXRoZXIzZGl2Ml9kZiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2dhdGhlcjNkaXYyZGYiPiwKICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjJmNjRfdHldLAogICAgICAgICAgIFtsbHZtX3YyZjY0X3R5LCBsbHZtX3B0cl90eSwgbGx2bV92Mmk2NF90eSwgbGx2bV9pOF90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgIFtJbnRyUmVhZE1lbSwgSW50ckFyZ01lbU9ubHldPjsKIAogICBkZWYgaW50X3g4Nl9hdng1MTJfZ2F0aGVyM2RpdjJfZGkgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2MmRpIj4sCiAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3YyaTY0X3R5XSwKICAgICAgICAgICBbbGx2bV92Mmk2NF90eSwgbGx2bV9wdHJfdHksIGxsdm1fdjJpNjRfdHksIGxsdm1faThfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CiAKICAgZGVmIGludF94ODZfYXZ4NTEyX2dhdGhlcjNkaXY0X2RmIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfZ2F0aGVyM2RpdjRkZiI+LAogICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGY2NF90eV0sCiAgICAgICAgICAgW2xsdm1fdjRmNjRfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y0aTY0X3R5LCBsbHZtX2k4X3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgW0ludHJSZWFkTWVtLCBJbnRyQXJnTWVtT25seV0+OwogCiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9nYXRoZXIzZGl2NF9kaSA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2dhdGhlcjNkaXY0ZGkiPiwKICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRpNjRfdHldLAogICAgICAgICAgIFtsbHZtX3Y0aTY0X3R5LCBsbHZtX3B0cl90eSwgbGx2bV92NGk2NF90eSwgbGx2bV9pOF90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgIFtJbnRyUmVhZE1lbSwgSW50ckFyZ01lbU9ubHldPjsKIAogICBkZWYgaW50X3g4Nl9hdng1MTJfZ2F0aGVyM2RpdjRfc2YgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2NHNmIj4sCiAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0ZjMyX3R5XSwKICAgICAgICAgICBbbGx2bV92NGYzMl90eSwgbGx2bV9wdHJfdHksIGxsdm1fdjJpNjRfdHksIGxsdm1faThfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CiAKICAgZGVmIGludF94ODZfYXZ4NTEyX2dhdGhlcjNkaXY0X3NpIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfZ2F0aGVyM2RpdjRzaSI+LAogICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGkzMl90eV0sCiAgICAgICAgICAgW2xsdm1fdjRpMzJfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3YyaTY0X3R5LCBsbHZtX2k4X3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgW0ludHJSZWFkTWVtLCBJbnRyQXJnTWVtT25seV0+OwogCiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9nYXRoZXIzZGl2OF9zZiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2dhdGhlcjNkaXY4c2YiPiwKICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRmMzJfdHldLAogICAgICAgICAgIFtsbHZtX3Y0ZjMyX3R5LCBsbHZtX3B0cl90eSwgbGx2bV92NGk2NF90eSwgbGx2bV9pOF90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgIFtJbnRyUmVhZE1lbSwgSW50ckFyZ01lbU9ubHldPjsKIAogICBkZWYgaW50X3g4Nl9hdng1MTJfZ2F0aGVyM2Rpdjhfc2kgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9nYXRoZXIzZGl2OHNpIj4sCiAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0aTMyX3R5XSwKICAgICAgICAgICBbbGx2bV92NGkzMl90eSwgbGx2bV9wdHJfdHksIGxsdm1fdjRpNjRfdHksIGxsdm1faThfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CiAKICAgZGVmIGludF94ODZfYXZ4NTEyX2dhdGhlcjNzaXYyX2RmIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjJkZiI+LAogICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92MmY2NF90eV0sCiAgICAgICAgICAgW2xsdm1fdjJmNjRfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX2k4X3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgW0ludHJSZWFkTWVtLCBJbnRyQXJnTWVtT25seV0+OwogCiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9nYXRoZXIzc2l2Ml9kaSA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2dhdGhlcjNzaXYyZGkiPiwKICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjJpNjRfdHldLAogICAgICAgICAgIFtsbHZtX3YyaTY0X3R5LCBsbHZtX3B0cl90eSwgbGx2bV92NGkzMl90eSwgbGx2bV9pOF90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgIFtJbnRyUmVhZE1lbSwgSW50ckFyZ01lbU9ubHldPjsKIAogICBkZWYgaW50X3g4Nl9hdng1MTJfZ2F0aGVyM3NpdjRfZGYgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2NGRmIj4sCiAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0ZjY0X3R5XSwKICAgICAgICAgICBbbGx2bV92NGY2NF90eSwgbGx2bV9wdHJfdHksIGxsdm1fdjRpMzJfdHksIGxsdm1faThfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CiAKICAgZGVmIGludF94ODZfYXZ4NTEyX2dhdGhlcjNzaXY0X2RpIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjRkaSI+LAogICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGk2NF90eV0sCiAgICAgICAgICAgW2xsdm1fdjRpNjRfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX2k4X3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgW0ludHJSZWFkTWVtLCBJbnRyQXJnTWVtT25seV0+OwogCiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9nYXRoZXIzc2l2NF9zZiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2dhdGhlcjNzaXY0c2YiPiwKICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRmMzJfdHldLAogICAgICAgICAgIFtsbHZtX3Y0ZjMyX3R5LCBsbHZtX3B0cl90eSwgbGx2bV92NGkzMl90eSwgbGx2bV9pOF90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgIFtJbnRyUmVhZE1lbSwgSW50ckFyZ01lbU9ubHldPjsKIAogICBkZWYgaW50X3g4Nl9hdng1MTJfZ2F0aGVyM3NpdjRfc2kgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9nYXRoZXIzc2l2NHNpIj4sCiAgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0aTMyX3R5XSwKICAgICAgICAgICBbbGx2bV92NGkzMl90eSwgbGx2bV9wdHJfdHksIGxsdm1fdjRpMzJfdHksIGxsdm1faThfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CiAKICAgZGVmIGludF94ODZfYXZ4NTEyX2dhdGhlcjNzaXY4X3NmIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfZ2F0aGVyM3NpdjhzZiI+LAogICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92OGYzMl90eV0sCiAgICAgICAgICAgW2xsdm1fdjhmMzJfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y4aTMyX3R5LCBsbHZtX2k4X3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgW0ludHJSZWFkTWVtLCBJbnRyQXJnTWVtT25seV0+OwogCiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9nYXRoZXIzc2l2OF9zaSA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2dhdGhlcjNzaXY4c2kiPiwKICAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpMzJfdHldLAogICAgICAgICAgIFtsbHZtX3Y4aTMyX3R5LCBsbHZtX3B0cl90eSwgbGx2bV92OGkzMl90eSwgbGx2bV9pOF90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgIFtJbnRyUmVhZE1lbSwgSW50ckFyZ01lbU9ubHldPjsKIAogLy8gc2NhdHRlcgotICBkZWYgaW50X3g4Nl9hdng1MTJfc2NhdHRlcl9kcGRfNTEyICA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY4ZGYiPiwKKyAgLy8gTk9URTogVGhlc2UgYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlIHZlcnNpb25zIHRoYXQgdGFrZSBhIHZYaTEgbWFzay4KKyAgZGVmIGludF94ODZfYXZ4NTEyX3NjYXR0ZXJfZHBkXzUxMiAgOgogICAgICAgICAgIEludHJpbnNpYzxbXSwgW2xsdm1fcHRyX3R5LCBsbHZtX2k4X3R5LAogICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV92OGkzMl90eSwgbGx2bV92OGY2NF90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgICAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX3NjYXR0ZXJfZHBzXzUxMiAgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2MTZzZiI+LAorICBkZWYgaW50X3g4Nl9hdng1MTJfc2NhdHRlcl9kcHNfNTEyICA6CiAgICAgICAgICAgSW50cmluc2ljPFtdLCBbbGx2bV9wdHJfdHksIGxsdm1faTE2X3R5LAogICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3YxNmkzMl90eSwgbGx2bV92MTZmMzJfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9zY2F0dGVyX3FwZF81MTIgIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjhkZiI+LAorICBkZWYgaW50X3g4Nl9hdng1MTJfc2NhdHRlcl9xcGRfNTEyICA6CiAgICAgICAgICAgSW50cmluc2ljPFtdLCBbbGx2bV9wdHJfdHksIGxsdm1faThfdHksCiAgICAgICAgICAgICAgICAgICAgICBsbHZtX3Y4aTY0X3R5LCBsbHZtX3Y4ZjY0X3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfc2NhdHRlcl9xcHNfNTEyICA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXYxNnNmIj4sCisgIGRlZiBpbnRfeDg2X2F2eDUxMl9zY2F0dGVyX3Fwc181MTIgIDoKICAgICAgICAgICBJbnRyaW5zaWM8W10sIFtsbHZtX3B0cl90eSwgbGx2bV9pOF90eSwKICAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjhpNjRfdHksIGxsdm1fdjhmMzJfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CiAKIAotICBkZWYgaW50X3g4Nl9hdng1MTJfc2NhdHRlcl9kcHFfNTEyICA6IEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY4ZGkiPiwKKyAgZGVmIGludF94ODZfYXZ4NTEyX3NjYXR0ZXJfZHBxXzUxMiAgOgogICAgICAgICAgIEludHJpbnNpYzxbXSwgW2xsdm1fcHRyX3R5LCBsbHZtX2k4X3R5LAogICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjhpMzJfdHksIGxsdm1fdjhpNjRfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9zY2F0dGVyX2RwaV81MTIgIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjE2c2kiPiwKKyAgZGVmIGludF94ODZfYXZ4NTEyX3NjYXR0ZXJfZHBpXzUxMiAgOgogICAgICAgICAgIEludHJpbnNpYzxbXSwgW2xsdm1fcHRyX3R5LCBsbHZtX2kxNl90eSwKICAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjE2aTMyX3R5LCBsbHZtX3YxNmkzMl90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgICAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX3NjYXR0ZXJfcXBxXzUxMiAgOiBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2OGRpIj4sCisgIGRlZiBpbnRfeDg2X2F2eDUxMl9zY2F0dGVyX3FwcV81MTIgIDoKICAgICAgICAgICBJbnRyaW5zaWM8W10sIFtsbHZtX3B0cl90eSwgbGx2bV9pOF90eSxsbHZtX3Y4aTY0X3R5LCBsbHZtX3Y4aTY0X3R5LAogICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwKICAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9zY2F0dGVyX3FwaV81MTIgIDogR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjE2c2kiPiwKKyAgZGVmIGludF94ODZfYXZ4NTEyX3NjYXR0ZXJfcXBpXzUxMiAgOgogICAgICAgICAgIEludHJpbnNpYzxbXSwgW2xsdm1fcHRyX3R5LCBsbHZtX2k4X3R5LCBsbHZtX3Y4aTY0X3R5LCBsbHZtX3Y4aTMyX3R5LAogICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwKICAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CiAKICAgZGVmIGludF94ODZfYXZ4NTEyX3NjYXR0ZXJkaXYyX2RmIDoKLSAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2MmRmIj4sCiAgICAgICAgIEludHJpbnNpYzxbXSwKICAgICAgICAgW2xsdm1fcHRyX3R5LCBsbHZtX2k4X3R5LCBsbHZtX3YyaTY0X3R5LCBsbHZtX3YyZjY0X3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OwogCiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9zY2F0dGVyZGl2Ml9kaSA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXYyZGkiPiwKICAgICAgICAgICBJbnRyaW5zaWM8W10sCiAgICAgICAgICAgW2xsdm1fcHRyX3R5LCBsbHZtX2k4X3R5LCBsbHZtX3YyaTY0X3R5LCBsbHZtX3YyaTY0X3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CiAKICAgZGVmIGludF94ODZfYXZ4NTEyX3NjYXR0ZXJkaXY0X2RmIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjRkZiI+LAogICAgICAgICAgIEludHJpbnNpYzxbXSwKICAgICAgICAgICBbbGx2bV9wdHJfdHksIGxsdm1faThfdHksIGxsdm1fdjRpNjRfdHksIGxsdm1fdjRmNjRfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKIAogICBkZWYgaW50X3g4Nl9hdng1MTJfc2NhdHRlcmRpdjRfZGkgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2NGRpIj4sCiAgICAgICAgICAgSW50cmluc2ljPFtdLAogICAgICAgICAgIFtsbHZtX3B0cl90eSwgbGx2bV9pOF90eSwgbGx2bV92NGk2NF90eSwgbGx2bV92NGk2NF90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OwogCiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9zY2F0dGVyZGl2NF9zZiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXY0c2YiPiwKICAgICAgICAgICBJbnRyaW5zaWM8W10sCiAgICAgICAgICAgW2xsdm1fcHRyX3R5LCBsbHZtX2k4X3R5LCBsbHZtX3YyaTY0X3R5LCBsbHZtX3Y0ZjMyX3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CiAKICAgZGVmIGludF94ODZfYXZ4NTEyX3NjYXR0ZXJkaXY0X3NpIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfc2NhdHRlcmRpdjRzaSI+LAogICAgICAgICAgIEludHJpbnNpYzxbXSwKICAgICAgICAgICBbbGx2bV9wdHJfdHksIGxsdm1faThfdHksIGxsdm1fdjJpNjRfdHksIGxsdm1fdjRpMzJfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKIAogICBkZWYgaW50X3g4Nl9hdng1MTJfc2NhdHRlcmRpdjhfc2YgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9zY2F0dGVyZGl2OHNmIj4sCiAgICAgICAgICAgSW50cmluc2ljPFtdLAogICAgICAgICAgIFtsbHZtX3B0cl90eSwgbGx2bV9pOF90eSwgbGx2bV92NGk2NF90eSwgbGx2bV92NGYzMl90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OwogCiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9zY2F0dGVyZGl2OF9zaSA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJkaXY4c2kiPiwKICAgICAgICAgICBJbnRyaW5zaWM8W10sCiAgICAgICAgICAgW2xsdm1fcHRyX3R5LCBsbHZtX2k4X3R5LCBsbHZtX3Y0aTY0X3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CiAKICAgZGVmIGludF94ODZfYXZ4NTEyX3NjYXR0ZXJzaXYyX2RmIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjJkZiI+LAogICAgICAgICAgIEludHJpbnNpYzxbXSwKICAgICAgICAgICBbbGx2bV9wdHJfdHksIGxsdm1faThfdHksIGxsdm1fdjRpMzJfdHksIGxsdm1fdjJmNjRfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKIAogICBkZWYgaW50X3g4Nl9hdng1MTJfc2NhdHRlcnNpdjJfZGkgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2MmRpIj4sCiAgICAgICAgICAgSW50cmluc2ljPFtdLAogICAgICAgICAgIFtsbHZtX3B0cl90eSwgbGx2bV9pOF90eSwgbGx2bV92NGkzMl90eSwgbGx2bV92Mmk2NF90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OwogCiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9zY2F0dGVyc2l2NF9kZiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY0ZGYiPiwKICAgICAgICAgICBJbnRyaW5zaWM8W10sCiAgICAgICAgICAgW2xsdm1fcHRyX3R5LCBsbHZtX2k4X3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX3Y0ZjY0X3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CiAKICAgZGVmIGludF94ODZfYXZ4NTEyX3NjYXR0ZXJzaXY0X2RpIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjRkaSI+LAogICAgICAgICAgIEludHJpbnNpYzxbXSwKICAgICAgICAgICBbbGx2bV9wdHJfdHksIGxsdm1faThfdHksIGxsdm1fdjRpMzJfdHksIGxsdm1fdjRpNjRfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKIAogICBkZWYgaW50X3g4Nl9hdng1MTJfc2NhdHRlcnNpdjRfc2YgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2NHNmIj4sCiAgICAgICAgICAgSW50cmluc2ljPFtdLAogICAgICAgICAgIFtsbHZtX3B0cl90eSwgbGx2bV9pOF90eSwgbGx2bV92NGkzMl90eSwgbGx2bV92NGYzMl90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OwogCiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9zY2F0dGVyc2l2NF9zaSA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3NjYXR0ZXJzaXY0c2kiPiwKICAgICAgICAgICBJbnRyaW5zaWM8W10sCiAgICAgICAgICAgW2xsdm1fcHRyX3R5LCBsbHZtX2k4X3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX2kzMl90eV0sCiAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CiAKICAgZGVmIGludF94ODZfYXZ4NTEyX3NjYXR0ZXJzaXY4X3NmIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfc2NhdHRlcnNpdjhzZiI+LAogICAgICAgICAgIEludHJpbnNpYzxbXSwKICAgICAgICAgICBbbGx2bV9wdHJfdHksIGxsdm1faThfdHksIGxsdm1fdjhpMzJfdHksIGxsdm1fdjhmMzJfdHksIGxsdm1faTMyX3R5XSwKICAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKIAogICBkZWYgaW50X3g4Nl9hdng1MTJfc2NhdHRlcnNpdjhfc2kgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9zY2F0dGVyc2l2OHNpIj4sCiAgICAgICAgICAgSW50cmluc2ljPFtdLAogICAgICAgICAgIFtsbHZtX3B0cl90eSwgbGx2bV9pOF90eSwgbGx2bV92OGkzMl90eSwgbGx2bV92OGkzMl90eSwgbGx2bV9pMzJfdHldLAogICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OwpAQCAtNDAxOCw0MCArMzc1OSwyNjEgQEAKICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5LCBsbHZtX2kzMl90eV0sIFtJbnRyQXJnTWVtT25seV0+OwogfQogCisvLyBBVlg1MTIgZ2F0aGVyL3NjYXR0ZXIgaW50cmluc2ljcyB0aGF0IHVzZSB2WGkxIG1hc2tzLgorbGV0IFRhcmdldFByZWZpeCA9ICJ4ODYiIGluIHsKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyX2RwZF81MTIgIDoKKyAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhmNjRfdHldLCBbbGx2bV92OGY2NF90eSwgbGx2bV9wdHJfdHksCisgICAgICAgICAgICAgICAgICAgICBsbHZtX3Y4aTMyX3R5LCBsbHZtX3Y4aTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgW0ludHJSZWFkTWVtLCBJbnRyQXJnTWVtT25seV0+OworICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19nYXRoZXJfZHBzXzUxMiAgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92MTZmMzJfdHldLCBbbGx2bV92MTZmMzJfdHksIGxsdm1fcHRyX3R5LAorICAgICAgICAgICAgICAgICAgICAgbGx2bV92MTZpMzJfdHksIGxsdm1fdjE2aTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgW0ludHJSZWFkTWVtLCBJbnRyQXJnTWVtT25seV0+OworICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19nYXRoZXJfcXBkXzUxMiAgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92OGY2NF90eV0sIFtsbHZtX3Y4ZjY0X3R5LCBsbHZtX3B0cl90eSwKKyAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjhpNjRfdHksIGxsdm1fdjhpMV90eSwgbGx2bV9pMzJfdHldLAorICAgICAgICAgICAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisgIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2dhdGhlcl9xcHNfNTEyICA6CisgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4ZjMyX3R5XSwgW2xsdm1fdjhmMzJfdHksIGxsdm1fcHRyX3R5LAorICAgICAgICAgICAgICAgICAgICAgbGx2bV92OGk2NF90eSwgbGx2bV92OGkxX3R5LCBsbHZtX2kzMl90eV0sCisgICAgICAgICAgICAgICAgICAgIFtJbnRyUmVhZE1lbSwgSW50ckFyZ01lbU9ubHldPjsKKworCisgIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2dhdGhlcl9kcHFfNTEyICA6CisgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTY0X3R5XSwgW2xsdm1fdjhpNjRfdHksIGxsdm1fcHRyX3R5LAorICAgICAgICAgICAgICAgICAgICAgbGx2bV92OGkzMl90eSwgbGx2bV92OGkxX3R5LCBsbHZtX2kzMl90eV0sCisgICAgICAgICAgICAgICAgICAgIFtJbnRyUmVhZE1lbSwgSW50ckFyZ01lbU9ubHldPjsKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyX2RwaV81MTIgIDoKKyAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LCBsbHZtX3B0cl90eSwKKyAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjE2aTMyX3R5LCBsbHZtX3YxNmkxX3R5LCBsbHZtX2kzMl90eV0sCisgICAgICAgICAgICAgICAgICAgIFtJbnRyUmVhZE1lbSwgSW50ckFyZ01lbU9ubHldPjsKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyX3FwcV81MTIgIDoKKyAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpNjRfdHldLCBbbGx2bV92OGk2NF90eSwgbGx2bV9wdHJfdHksCisgICAgICAgICAgICAgICAgICAgICBsbHZtX3Y4aTY0X3R5LCBsbHZtX3Y4aTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgW0ludHJSZWFkTWVtLCBJbnRyQXJnTWVtT25seV0+OworICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19nYXRoZXJfcXBpXzUxMiAgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92OGkzMl90eV0sIFtsbHZtX3Y4aTMyX3R5LCBsbHZtX3B0cl90eSwKKyAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjhpNjRfdHksIGxsdm1fdjhpMV90eSwgbGx2bV9pMzJfdHldLAorICAgICAgICAgICAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM2RpdjJfZGYgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92MmY2NF90eV0sCisgICAgICAgICAgW2xsdm1fdjJmNjRfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3YyaTY0X3R5LCBsbHZtX3YyaTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM2RpdjJfZGkgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92Mmk2NF90eV0sCisgICAgICAgICAgW2xsdm1fdjJpNjRfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3YyaTY0X3R5LCBsbHZtX3YyaTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM2RpdjRfZGYgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGY2NF90eV0sCisgICAgICAgICAgW2xsdm1fdjRmNjRfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y0aTY0X3R5LCBsbHZtX3Y0aTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM2RpdjRfZGkgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGk2NF90eV0sCisgICAgICAgICAgW2xsdm1fdjRpNjRfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y0aTY0X3R5LCBsbHZtX3Y0aTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM2RpdjRfc2YgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGYzMl90eV0sCisgICAgICAgICAgW2xsdm1fdjRmMzJfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3YyaTY0X3R5LCBsbHZtX3YyaTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM2RpdjRfc2kgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGkzMl90eV0sCisgICAgICAgICAgW2xsdm1fdjRpMzJfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3YyaTY0X3R5LCBsbHZtX3YyaTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM2Rpdjhfc2YgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGYzMl90eV0sCisgICAgICAgICAgW2xsdm1fdjRmMzJfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y0aTY0X3R5LCBsbHZtX3Y0aTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM2Rpdjhfc2kgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGkzMl90eV0sCisgICAgICAgICAgW2xsdm1fdjRpMzJfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y0aTY0X3R5LCBsbHZtX3Y0aTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM3NpdjJfZGYgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92MmY2NF90eV0sCisgICAgICAgICAgW2xsdm1fdjJmNjRfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX3YyaTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM3NpdjJfZGkgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92Mmk2NF90eV0sCisgICAgICAgICAgW2xsdm1fdjJpNjRfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX3YyaTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM3NpdjRfZGYgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGY2NF90eV0sCisgICAgICAgICAgW2xsdm1fdjRmNjRfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX3Y0aTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM3NpdjRfZGkgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGk2NF90eV0sCisgICAgICAgICAgW2xsdm1fdjRpNjRfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX3Y0aTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM3NpdjRfc2YgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGYzMl90eV0sCisgICAgICAgICAgW2xsdm1fdjRmMzJfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX3Y0aTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM3NpdjRfc2kgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGkzMl90eV0sCisgICAgICAgICAgW2xsdm1fdjRpMzJfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX3Y0aTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM3Npdjhfc2YgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92OGYzMl90eV0sCisgICAgICAgICAgW2xsdm1fdjhmMzJfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y4aTMyX3R5LCBsbHZtX3Y4aTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZ2F0aGVyM3Npdjhfc2kgOgorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92OGkzMl90eV0sCisgICAgICAgICAgW2xsdm1fdjhpMzJfdHksIGxsdm1fcHRyX3R5LCBsbHZtX3Y4aTMyX3R5LCBsbHZtX3Y4aTFfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50clJlYWRNZW0sIEludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfc2NhdHRlcl9kcGRfNTEyICA6CisgICAgICAgICAgSW50cmluc2ljPFtdLCBbbGx2bV9wdHJfdHksIGxsdm1fdjhpMV90eSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1fdjhpMzJfdHksIGxsdm1fdjhmNjRfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CisgIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3NjYXR0ZXJfZHBzXzUxMiAgOgorICAgICAgICAgIEludHJpbnNpYzxbXSwgW2xsdm1fcHRyX3R5LCBsbHZtX3YxNmkxX3R5LAorICAgICAgICAgICAgICAgICAgICAgICBsbHZtX3YxNmkzMl90eSwgbGx2bV92MTZmMzJfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CisgIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3NjYXR0ZXJfcXBkXzUxMiAgOgorICAgICAgICAgIEludHJpbnNpYzxbXSwgW2xsdm1fcHRyX3R5LCBsbHZtX3Y4aTFfdHksCisgICAgICAgICAgICAgICAgICAgICBsbHZtX3Y4aTY0X3R5LCBsbHZtX3Y4ZjY0X3R5LCBsbHZtX2kzMl90eV0sCisgICAgICAgICAgICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OworICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19zY2F0dGVyX3Fwc181MTIgIDoKKyAgICAgICAgICBJbnRyaW5zaWM8W10sIFtsbHZtX3B0cl90eSwgbGx2bV92OGkxX3R5LAorICAgICAgICAgICAgICAgICAgICAgbGx2bV92OGk2NF90eSwgbGx2bV92OGYzMl90eSwgbGx2bV9pMzJfdHldLAorICAgICAgICAgICAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKKworCisgIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3NjYXR0ZXJfZHBxXzUxMiAgOgorICAgICAgICAgIEludHJpbnNpYzxbXSwgW2xsdm1fcHRyX3R5LCBsbHZtX3Y4aTFfdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bV92OGkzMl90eSwgbGx2bV92OGk2NF90eSwgbGx2bV9pMzJfdHldLAorICAgICAgICAgICAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfc2NhdHRlcl9kcGlfNTEyICA6CisgICAgICAgICAgSW50cmluc2ljPFtdLCBbbGx2bV9wdHJfdHksIGxsdm1fdjE2aTFfdHksCisgICAgICAgICAgICAgICAgICAgICBsbHZtX3YxNmkzMl90eSwgbGx2bV92MTZpMzJfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CisgIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3NjYXR0ZXJfcXBxXzUxMiAgOgorICAgICAgICAgIEludHJpbnNpYzxbXSwgW2xsdm1fcHRyX3R5LCBsbHZtX3Y4aTFfdHksbGx2bV92OGk2NF90eSwgbGx2bV92OGk2NF90eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtX2kzMl90eV0sCisgICAgICAgICAgICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OworICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19zY2F0dGVyX3FwaV81MTIgIDoKKyAgICAgICAgICBJbnRyaW5zaWM8W10sIFtsbHZtX3B0cl90eSwgbGx2bV92OGkxX3R5LCBsbHZtX3Y4aTY0X3R5LCBsbHZtX3Y4aTMyX3R5LAorICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfc2NhdHRlcmRpdjJfZGYgOgorICAgICAgICBJbnRyaW5zaWM8W10sCisgICAgICAgIFtsbHZtX3B0cl90eSwgbGx2bV92MmkxX3R5LCBsbHZtX3YyaTY0X3R5LCBsbHZtX3YyZjY0X3R5LCBsbHZtX2kzMl90eV0sCisgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OworCisgIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3NjYXR0ZXJkaXYyX2RpIDoKKyAgICAgICAgICBJbnRyaW5zaWM8W10sCisgICAgICAgICAgW2xsdm1fcHRyX3R5LCBsbHZtX3YyaTFfdHksIGxsdm1fdjJpNjRfdHksIGxsdm1fdjJpNjRfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKKworICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19zY2F0dGVyZGl2NF9kZiA6CisgICAgICAgICAgSW50cmluc2ljPFtdLAorICAgICAgICAgIFtsbHZtX3B0cl90eSwgbGx2bV92NGkxX3R5LCBsbHZtX3Y0aTY0X3R5LCBsbHZtX3Y0ZjY0X3R5LCBsbHZtX2kzMl90eV0sCisgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfc2NhdHRlcmRpdjRfZGkgOgorICAgICAgICAgIEludHJpbnNpYzxbXSwKKyAgICAgICAgICBbbGx2bV9wdHJfdHksIGxsdm1fdjRpMV90eSwgbGx2bV92NGk2NF90eSwgbGx2bV92NGk2NF90eSwgbGx2bV9pMzJfdHldLAorICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OworCisgIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3NjYXR0ZXJkaXY0X3NmIDoKKyAgICAgICAgICBJbnRyaW5zaWM8W10sCisgICAgICAgICAgW2xsdm1fcHRyX3R5LCBsbHZtX3YyaTFfdHksIGxsdm1fdjJpNjRfdHksIGxsdm1fdjRmMzJfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKKworICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19zY2F0dGVyZGl2NF9zaSA6CisgICAgICAgICAgSW50cmluc2ljPFtdLAorICAgICAgICAgIFtsbHZtX3B0cl90eSwgbGx2bV92MmkxX3R5LCBsbHZtX3YyaTY0X3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX2kzMl90eV0sCisgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfc2NhdHRlcmRpdjhfc2YgOgorICAgICAgICAgIEludHJpbnNpYzxbXSwKKyAgICAgICAgICBbbGx2bV9wdHJfdHksIGxsdm1fdjRpMV90eSwgbGx2bV92NGk2NF90eSwgbGx2bV92NGYzMl90eSwgbGx2bV9pMzJfdHldLAorICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OworCisgIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3NjYXR0ZXJkaXY4X3NpIDoKKyAgICAgICAgICBJbnRyaW5zaWM8W10sCisgICAgICAgICAgW2xsdm1fcHRyX3R5LCBsbHZtX3Y0aTFfdHksIGxsdm1fdjRpNjRfdHksIGxsdm1fdjRpMzJfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKKworICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19zY2F0dGVyc2l2Ml9kZiA6CisgICAgICAgICAgSW50cmluc2ljPFtdLAorICAgICAgICAgIFtsbHZtX3B0cl90eSwgbGx2bV92MmkxX3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX3YyZjY0X3R5LCBsbHZtX2kzMl90eV0sCisgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfc2NhdHRlcnNpdjJfZGkgOgorICAgICAgICAgIEludHJpbnNpYzxbXSwKKyAgICAgICAgICBbbGx2bV9wdHJfdHksIGxsdm1fdjJpMV90eSwgbGx2bV92NGkzMl90eSwgbGx2bV92Mmk2NF90eSwgbGx2bV9pMzJfdHldLAorICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OworCisgIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3NjYXR0ZXJzaXY0X2RmIDoKKyAgICAgICAgICBJbnRyaW5zaWM8W10sCisgICAgICAgICAgW2xsdm1fcHRyX3R5LCBsbHZtX3Y0aTFfdHksIGxsdm1fdjRpMzJfdHksIGxsdm1fdjRmNjRfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKKworICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19zY2F0dGVyc2l2NF9kaSA6CisgICAgICAgICAgSW50cmluc2ljPFtdLAorICAgICAgICAgIFtsbHZtX3B0cl90eSwgbGx2bV92NGkxX3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX3Y0aTY0X3R5LCBsbHZtX2kzMl90eV0sCisgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfc2NhdHRlcnNpdjRfc2YgOgorICAgICAgICAgIEludHJpbnNpYzxbXSwKKyAgICAgICAgICBbbGx2bV9wdHJfdHksIGxsdm1fdjRpMV90eSwgbGx2bV92NGkzMl90eSwgbGx2bV92NGYzMl90eSwgbGx2bV9pMzJfdHldLAorICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OworCisgIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3NjYXR0ZXJzaXY0X3NpIDoKKyAgICAgICAgICBJbnRyaW5zaWM8W10sCisgICAgICAgICAgW2xsdm1fcHRyX3R5LCBsbHZtX3Y0aTFfdHksIGxsdm1fdjRpMzJfdHksIGxsdm1fdjRpMzJfdHksIGxsdm1faTMyX3R5XSwKKyAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKKworICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19zY2F0dGVyc2l2OF9zZiA6CisgICAgICAgICAgSW50cmluc2ljPFtdLAorICAgICAgICAgIFtsbHZtX3B0cl90eSwgbGx2bV92OGkxX3R5LCBsbHZtX3Y4aTMyX3R5LCBsbHZtX3Y4ZjMyX3R5LCBsbHZtX2kzMl90eV0sCisgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47CisKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfc2NhdHRlcnNpdjhfc2kgOgorICAgICAgICAgIEludHJpbnNpYzxbXSwKKyAgICAgICAgICBbbGx2bV9wdHJfdHksIGxsdm1fdjhpMV90eSwgbGx2bV92OGkzMl90eSwgbGx2bV92OGkzMl90eSwgbGx2bV9pMzJfdHldLAorICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OworfQorCiAvLyBBVlgtNTEyIGNvbmZsaWN0IGRldGVjdGlvbiBpbnN0cnVjdGlvbgogLy8gSW5zdHJ1Y3Rpb25zIHRoYXQgY291bnQgdGhlIG51bWJlciBvZiBsZWFkaW5nIHplcm8gYml0cwogbGV0IFRhcmdldFByZWZpeCA9ICJ4ODYiIGluIHsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfY29uZmxpY3RfZF8xMjggOgotICAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3ZwY29uZmxpY3RzaV8xMjhfbWFzayI+LAotICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGkzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgIFtsbHZtX3Y0aTMyX3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX2k4X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19jb25mbGljdF9kXzI1NiA6Ci0gICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBjb25mbGljdHNpXzI1Nl9tYXNrIj4sCi0gICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjhpMzJfdHksIGxsdm1fdjhpMzJfdHksIGxsdm1faThfdHldLAotICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2NvbmZsaWN0X2RfNTEyIDoKLSAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0c2lfNTEyX21hc2siPiwKLSAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjE2aTMyX3R5LCBsbHZtX3YxNmkzMl90eSwgbGx2bV9pMTZfdHldLAotICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47CisgIGRlZiBpbnRfeDg2X2F2eDUxMl9jb25mbGljdF9kXzEyOCA6CisgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBjb25mbGljdHNpXzEyOCI+LAorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92NGkzMl90eV0sIFtsbHZtX3Y0aTMyX3R5XSwgW0ludHJOb01lbV0+OworICBkZWYgaW50X3g4Nl9hdng1MTJfY29uZmxpY3RfZF8yNTYgOgorICAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3ZwY29uZmxpY3RzaV8yNTYiPiwKKyAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpMzJfdHldLCBbbGx2bV92OGkzMl90eV0sIFtJbnRyTm9NZW1dPjsKKyAgZGVmIGludF94ODZfYXZ4NTEyX2NvbmZsaWN0X2RfNTEyIDoKKyAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0c2lfNTEyIj4sCisgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eV0sIFtJbnRyTm9NZW1dPjsKIAotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19jb25mbGljdF9xXzEyOCA6Ci0gICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBjb25mbGljdGRpXzEyOF9tYXNrIj4sCi0gICAgICAgICAgSW50cmluc2ljPFtsbHZtX3YyaTY0X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjJpNjRfdHksIGxsdm1fdjJpNjRfdHksIGxsdm1faThfdHldLAotICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2NvbmZsaWN0X3FfMjU2IDoKLSAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0ZGlfMjU2X21hc2siPiwKLSAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRpNjRfdHldLAotICAgICAgICAgICAgICAgICAgICBbbGx2bV92NGk2NF90eSwgbGx2bV92NGk2NF90eSwgbGx2bV9pOF90eV0sCi0gICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfY29uZmxpY3RfcV81MTIgOgotICAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3ZwY29uZmxpY3RkaV81MTJfbWFzayI+LAotICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92OGk2NF90eV0sCi0gICAgICAgICAgICAgICAgICAgIFtsbHZtX3Y4aTY0X3R5LCBsbHZtX3Y4aTY0X3R5LCBsbHZtX2k4X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OworICBkZWYgaW50X3g4Nl9hdng1MTJfY29uZmxpY3RfcV8xMjggOgorICAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3ZwY29uZmxpY3RkaV8xMjgiPiwKKyAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjJpNjRfdHldLCBbbGx2bV92Mmk2NF90eV0sIFtJbnRyTm9NZW1dPjsKKyAgZGVmIGludF94ODZfYXZ4NTEyX2NvbmZsaWN0X3FfMjU2IDoKKyAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cGNvbmZsaWN0ZGlfMjU2Ij4sCisgICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0aTY0X3R5XSwgW2xsdm1fdjRpNjRfdHldLCBbSW50ck5vTWVtXT47CisgIGRlZiBpbnRfeDg2X2F2eDUxMl9jb25mbGljdF9xXzUxMiA6CisgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBjb25mbGljdGRpXzUxMiI+LAorICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92OGk2NF90eV0sIFtsbHZtX3Y4aTY0X3R5XSwgW0ludHJOb01lbV0+OwogfQogCiAvLyBDb21wYXJlcwpAQCAtNDA2NywzODcgKzQwMjksMTYgQEAKIAogLy8gQ29tcHJlc3MsIEV4cGFuZAogbGV0IFRhcmdldFByZWZpeCA9ICJ4ODYiIGluIHsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfY29tcHJlc3NfcHNfNTEyIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY29tcHJlc3NzZjUxMl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92MTZmMzJfdHldLCBbbGx2bV92MTZmMzJfdHksIGxsdm1fdjE2ZjMyX3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faTE2X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19jb21wcmVzc19wZF81MTIgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9jb21wcmVzc2RmNTEyX21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4ZjY0X3R5XSwgW2xsdm1fdjhmNjRfdHksIGxsdm1fdjhmNjRfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfY29tcHJlc3NfcHNfMjU2IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY29tcHJlc3NzZjI1Nl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92OGYzMl90eV0sIFtsbHZtX3Y4ZjMyX3R5LCBsbHZtX3Y4ZjMyX3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX3BkXzI1NiA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2NvbXByZXNzZGYyNTZfbWFzayI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRmNjRfdHldLCBbbGx2bV92NGY2NF90eSwgbGx2bV92NGY2NF90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX2k4X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19jb21wcmVzc19wc18xMjggOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9jb21wcmVzc3NmMTI4X21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0ZjMyX3R5XSwgW2xsdm1fdjRmMzJfdHksIGxsdm1fdjRmMzJfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfY29tcHJlc3NfcGRfMTI4IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY29tcHJlc3NkZjEyOF9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92MmY2NF90eV0sIFtsbHZtX3YyZjY0X3R5LCBsbHZtX3YyZjY0X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0KLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfY29tcHJlc3NfZF81MTIgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9jb21wcmVzc3NpNTEyX21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSwgbGx2bV92MTZpMzJfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV9pMTZfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX3FfNTEyIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY29tcHJlc3NkaTUxMl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92OGk2NF90eV0sIFtsbHZtX3Y4aTY0X3R5LCBsbHZtX3Y4aTY0X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX2RfMjU2IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY29tcHJlc3NzaTI1Nl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92OGkzMl90eV0sIFtsbHZtX3Y4aTMyX3R5LCBsbHZtX3Y4aTMyX3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX3FfMjU2IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY29tcHJlc3NkaTI1Nl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92NGk2NF90eV0sIFtsbHZtX3Y0aTY0X3R5LCBsbHZtX3Y0aTY0X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX2RfMTI4IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY29tcHJlc3NzaTEyOF9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92NGkzMl90eV0sIFtsbHZtX3Y0aTMyX3R5LCBsbHZtX3Y0aTMyX3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX3FfMTI4IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY29tcHJlc3NkaTEyOF9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92Mmk2NF90eV0sIFtsbHZtX3YyaTY0X3R5LCBsbHZtX3YyaTY0X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0KLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfY29tcHJlc3NfYl81MTIgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9jb21wcmVzc3FpNTEyX21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y2NGk4X3R5XSwgW2xsdm1fdjY0aThfdHksIGxsdm1fdjY0aThfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV9pNjRfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX3dfNTEyIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY29tcHJlc3NoaTUxMl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92MzJpMTZfdHldLCBbbGx2bV92MzJpMTZfdHksIGxsdm1fdjMyaTE2X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19jb21wcmVzc19iXzI1NiA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2NvbXByZXNzcWkyNTZfbWFzayI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjMyaThfdHldLCBbbGx2bV92MzJpOF90eSwgbGx2bV92MzJpOF90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfY29tcHJlc3Nfd18yNTYgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9jb21wcmVzc2hpMjU2X21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmkxNl90eV0sIFtsbHZtX3YxNmkxNl90eSwgbGx2bV92MTZpMTZfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV9pMTZfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2NvbXByZXNzX2JfMTI4IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfY29tcHJlc3NxaTEyOF9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92MTZpOF90eV0sIFtsbHZtX3YxNmk4X3R5LCBsbHZtX3YxNmk4X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faTE2X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19jb21wcmVzc193XzEyOCA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2NvbXByZXNzaGkxMjhfbWFzayI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpMTZfdHldLCBbbGx2bV92OGkxNl90eSwgbGx2bV92OGkxNl90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX2k4X3R5XSwgW0ludHJOb01lbV0+OwotCi0vLyBleHBhbmQKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZXhwYW5kX3BzXzUxMiA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2V4cGFuZHNmNTEyX21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmYzMl90eV0sIFtsbHZtX3YxNmYzMl90eSwgbGx2bV92MTZmMzJfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV9pMTZfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9wZF81MTIgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9leHBhbmRkZjUxMl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92OGY2NF90eV0sIFtsbHZtX3Y4ZjY0X3R5LCBsbHZtX3Y4ZjY0X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9wc18yNTYgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9leHBhbmRzZjI1Nl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92OGYzMl90eV0sIFtsbHZtX3Y4ZjMyX3R5LCBsbHZtX3Y4ZjMyX3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9wZF8yNTYgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9leHBhbmRkZjI1Nl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92NGY2NF90eV0sIFtsbHZtX3Y0ZjY0X3R5LCBsbHZtX3Y0ZjY0X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9wc18xMjggOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9leHBhbmRzZjEyOF9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92NGYzMl90eV0sIFtsbHZtX3Y0ZjMyX3R5LCBsbHZtX3Y0ZjMyX3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9wZF8xMjggOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9leHBhbmRkZjEyOF9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92MmY2NF90eV0sIFtsbHZtX3YyZjY0X3R5LCBsbHZtX3YyZjY0X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0KLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZXhwYW5kX2RfNTEyIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfZXhwYW5kc2k1MTJfbWFzayI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LCBsbHZtX3YxNmkzMl90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX2kxNl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZXhwYW5kX3FfNTEyIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfZXhwYW5kZGk1MTJfbWFzayI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpNjRfdHldLCBbbGx2bV92OGk2NF90eSwgbGx2bV92OGk2NF90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX2k4X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19leHBhbmRfZF8yNTYgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9leHBhbmRzaTI1Nl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92OGkzMl90eV0sIFtsbHZtX3Y4aTMyX3R5LCBsbHZtX3Y4aTMyX3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9xXzI1NiA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2V4cGFuZGRpMjU2X21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0aTY0X3R5XSwgW2xsdm1fdjRpNjRfdHksIGxsdm1fdjRpNjRfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZXhwYW5kX2RfMTI4IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfZXhwYW5kc2kxMjhfbWFzayI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRpMzJfdHldLCBbbGx2bV92NGkzMl90eSwgbGx2bV92NGkzMl90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX2k4X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19leHBhbmRfcV8xMjggOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9leHBhbmRkaTEyOF9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92Mmk2NF90eV0sIFtsbHZtX3YyaTY0X3R5LCBsbHZtX3YyaTY0X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0KLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZXhwYW5kX2JfNTEyIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9leHBhbmRxaTUxMl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92NjRpOF90eV0sIFtsbHZtX3Y2NGk4X3R5LCBsbHZtX3Y2NGk4X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faTY0X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19leHBhbmRfd181MTIgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2V4cGFuZGhpNTEyX21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3YzMmkxNl90eV0sIFtsbHZtX3YzMmkxNl90eSwgbGx2bV92MzJpMTZfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV9pMzJfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2V4cGFuZF9iXzI1NiA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfZXhwYW5kcWkyNTZfbWFzayI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjMyaThfdHldLCBbbGx2bV92MzJpOF90eSwgbGx2bV92MzJpOF90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZXhwYW5kX3dfMjU2IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9leHBhbmRoaTI1Nl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92MTZpMTZfdHldLCBbbGx2bV92MTZpMTZfdHksIGxsdm1fdjE2aTE2X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1faTE2X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19leHBhbmRfYl8xMjggOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX2V4cGFuZHFpMTI4X21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmk4X3R5XSwgW2xsdm1fdjE2aThfdHksIGxsdm1fdjE2aThfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV9pMTZfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX2V4cGFuZF93XzEyOCA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfZXhwYW5kaGkxMjhfbWFzayI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpMTZfdHldLCBbbGx2bV92OGkxNl90eSwgbGx2bV92OGkxNl90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX2k4X3R5XSwgW0ludHJOb01lbV0+OwotfQotCi0vLyBWQk1JMiBDb25jYXQgJiBTaGlmdAotbGV0IFRhcmdldFByZWZpeCA9ICJ4ODYiIGluIHsgIC8vIEFsbCBpbnRyaW5zaWNzIHN0YXJ0IHdpdGggImxsdm0ueDg2LiIuCi0gIGRlZiBpbnRfeDg2X2F2eDUxMl92cHNobGRfcV81MTIgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNobGRxNTEyIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92OGk2NF90eV0sCi0gICAgICAgICAgICAgICAgICBbbGx2bV92OGk2NF90eSwgbGx2bV92OGk2NF90eSwgbGx2bV9pMzJfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl92cHNobGRfcV8yNTYgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNobGRxMjU2Ij4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92NGk2NF90eV0sCi0gICAgICAgICAgICAgICAgICBbbGx2bV92NGk2NF90eSwgbGx2bV92NGk2NF90eSwgbGx2bV9pMzJfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl92cHNobGRfcV8xMjggOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNobGRxMTI4Ij4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92Mmk2NF90eV0sCi0gICAgICAgICAgICAgICAgICBbbGx2bV92Mmk2NF90eSwgbGx2bV92Mmk2NF90eSwgbGx2bV9pMzJfdHldLCBbSW50ck5vTWVtXT47Ci0KLSAgZGVmIGludF94ODZfYXZ4NTEyX3Zwc2hsZF9kXzUxMiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hsZGQ1MTIiPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmkzMl90eV0sCi0gICAgICAgICAgICAgICAgICBbbGx2bV92MTZpMzJfdHksIGxsdm1fdjE2aTMyX3R5LCBsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX3Zwc2hsZF9kXzI1NiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hsZGQyNTYiPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgIFtsbHZtX3Y4aTMyX3R5LCBsbHZtX3Y4aTMyX3R5LCBsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX3Zwc2hsZF9kXzEyOCA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hsZGQxMjgiPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgIFtsbHZtX3Y0aTMyX3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKLQotICBkZWYgaW50X3g4Nl9hdng1MTJfdnBzaGxkX3dfNTEyIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaGxkdzUxMiI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjMyaTE2X3R5XSwKLSAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkxNl90eSwgbGx2bV92MzJpMTZfdHksIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfdnBzaGxkX3dfMjU2IDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaGxkdzI1NiI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aTE2X3R5XSwKLSAgICAgICAgICAgICAgICAgIFtsbHZtX3YxNmkxNl90eSwgbGx2bV92MTZpMTZfdHksIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfdnBzaGxkX3dfMTI4IDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaGxkdzEyOCI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpMTZfdHldLAotICAgICAgICAgICAgICAgICAgW2xsdm1fdjhpMTZfdHksIGxsdm1fdjhpMTZfdHksIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotCi0gIGRlZiBpbnRfeDg2X2F2eDUxMl92cHNocmRfcV81MTIgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNocmRxNTEyIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92OGk2NF90eV0sCi0gICAgICAgICAgICAgICAgICBbbGx2bV92OGk2NF90eSwgbGx2bV92OGk2NF90eSwgbGx2bV9pMzJfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl92cHNocmRfcV8yNTYgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNocmRxMjU2Ij4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92NGk2NF90eV0sCi0gICAgICAgICAgICAgICAgICBbbGx2bV92NGk2NF90eSwgbGx2bV92NGk2NF90eSwgbGx2bV9pMzJfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl92cHNocmRfcV8xMjggOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNocmRxMTI4Ij4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92Mmk2NF90eV0sCi0gICAgICAgICAgICAgICAgICBbbGx2bV92Mmk2NF90eSwgbGx2bV92Mmk2NF90eSwgbGx2bV9pMzJfdHldLCBbSW50ck5vTWVtXT47Ci0KLSAgZGVmIGludF94ODZfYXZ4NTEyX3Zwc2hyZF9kXzUxMiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hyZGQ1MTIiPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmkzMl90eV0sCi0gICAgICAgICAgICAgICAgICBbbGx2bV92MTZpMzJfdHksIGxsdm1fdjE2aTMyX3R5LCBsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX3Zwc2hyZF9kXzI1NiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hyZGQyNTYiPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgIFtsbHZtX3Y4aTMyX3R5LCBsbHZtX3Y4aTMyX3R5LCBsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX3Zwc2hyZF9kXzEyOCA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hyZGQxMjgiPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgIFtsbHZtX3Y0aTMyX3R5LCBsbHZtX3Y0aTMyX3R5LCBsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKLQotICBkZWYgaW50X3g4Nl9hdng1MTJfdnBzaHJkX3dfNTEyIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaHJkdzUxMiI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjMyaTE2X3R5XSwKLSAgICAgICAgICAgICAgICAgIFtsbHZtX3YzMmkxNl90eSwgbGx2bV92MzJpMTZfdHksIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfdnBzaHJkX3dfMjU2IDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaHJkdzI1NiI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aTE2X3R5XSwKLSAgICAgICAgICAgICAgICAgIFtsbHZtX3YxNmkxNl90eSwgbGx2bV92MTZpMTZfdHksIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfdnBzaHJkX3dfMTI4IDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaHJkdzEyOCI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpMTZfdHldLAotICAgICAgICAgICAgICAgICAgW2xsdm1fdjhpMTZfdHksIGxsdm1fdjhpMTZfdHksIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotCi0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3Zwc2hsZHZfd18xMjggOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNobGR2dzEyOF9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92OGkxNl90eV0sIFtsbHZtX3Y4aTE2X3R5LCBsbHZtX3Y4aTE2X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1fdjhpMTZfdHksIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrel92cHNobGR2X3dfMTI4IDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaGxkdncxMjhfbWFza3oiPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTE2X3R5XSwgW2xsdm1fdjhpMTZfdHksIGxsdm1fdjhpMTZfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92OGkxNl90eSwgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfdnBzaGxkdl93XzI1NiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZ3MjU2X21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmkxNl90eV0sIFtsbHZtX3YxNmkxNl90eSwgbGx2bV92MTZpMTZfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92MTZpMTZfdHksIGxsdm1faTE2X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza3pfdnBzaGxkdl93XzI1NiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZ3MjU2X21hc2t6Ij4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92MTZpMTZfdHldLCBbbGx2bV92MTZpMTZfdHksIGxsdm1fdjE2aTE2X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1fdjE2aTE2X3R5LCBsbHZtX2kxNl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfdnBzaGxkdl93XzUxMiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZ3NTEyX21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3YzMmkxNl90eV0sIFtsbHZtX3YzMmkxNl90eSwgbGx2bV92MzJpMTZfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92MzJpMTZfdHksIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza3pfdnBzaGxkdl93XzUxMiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZ3NTEyX21hc2t6Ij4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92MzJpMTZfdHldLCBbbGx2bV92MzJpMTZfdHksIGxsdm1fdjMyaTE2X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1fdjMyaTE2X3R5LCBsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKLQotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza192cHNobGR2X3FfMTI4IDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaGxkdnExMjhfbWFzayI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjJpNjRfdHldLCBbbGx2bV92Mmk2NF90eSwgbGx2bV92Mmk2NF90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX3YyaTY0X3R5LCBsbHZtX2k4X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza3pfdnBzaGxkdl9xXzEyOCA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZxMTI4X21hc2t6Ij4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92Mmk2NF90eV0sIFtsbHZtX3YyaTY0X3R5LCBsbHZtX3YyaTY0X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1fdjJpNjRfdHksIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3Zwc2hsZHZfcV8yNTYgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNobGR2cTI1Nl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92NGk2NF90eV0sIFtsbHZtX3Y0aTY0X3R5LCBsbHZtX3Y0aTY0X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1fdjRpNjRfdHksIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrel92cHNobGR2X3FfMjU2IDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaGxkdnEyNTZfbWFza3oiPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0aTY0X3R5XSwgW2xsdm1fdjRpNjRfdHksIGxsdm1fdjRpNjRfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92NGk2NF90eSwgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfdnBzaGxkdl9xXzUxMiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZxNTEyX21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTY0X3R5XSwgW2xsdm1fdjhpNjRfdHksIGxsdm1fdjhpNjRfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92OGk2NF90eSwgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2t6X3Zwc2hsZHZfcV81MTIgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNobGR2cTUxMl9tYXNreiI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpNjRfdHldLCBbbGx2bV92OGk2NF90eSwgbGx2bV92OGk2NF90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX3Y4aTY0X3R5LCBsbHZtX2k4X3R5XSwgW0ludHJOb01lbV0+OwotCi0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3Zwc2hsZHZfZF8xMjggOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNobGR2ZDEyOF9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92NGkzMl90eV0sIFtsbHZtX3Y0aTMyX3R5LCBsbHZtX3Y0aTMyX3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1fdjRpMzJfdHksIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrel92cHNobGR2X2RfMTI4IDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaGxkdmQxMjhfbWFza3oiPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0aTMyX3R5XSwgW2xsdm1fdjRpMzJfdHksIGxsdm1fdjRpMzJfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92NGkzMl90eSwgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfdnBzaGxkdl9kXzI1NiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hsZHZkMjU2X21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTMyX3R5XSwgW2xsdm1fdjhpMzJfdHksIGxsdm1fdjhpMzJfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92OGkzMl90eSwgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2t6X3Zwc2hsZHZfZF8yNTYgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNobGR2ZDI1Nl9tYXNreiI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpMzJfdHldLCBbbGx2bV92OGkzMl90eSwgbGx2bV92OGkzMl90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX3Y4aTMyX3R5LCBsbHZtX2k4X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza192cHNobGR2X2RfNTEyIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaGxkdmQ1MTJfbWFzayI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LCBsbHZtX3YxNmkzMl90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX3YxNmkzMl90eSwgbGx2bV9pMTZfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrel92cHNobGR2X2RfNTEyIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaGxkdmQ1MTJfbWFza3oiPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSwgbGx2bV92MTZpMzJfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92MTZpMzJfdHksIGxsdm1faTE2X3R5XSwgW0ludHJOb01lbV0+OwotCi0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3Zwc2hyZHZfd18xMjggOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNocmR2dzEyOF9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92OGkxNl90eV0sIFtsbHZtX3Y4aTE2X3R5LCBsbHZtX3Y4aTE2X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1fdjhpMTZfdHksIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrel92cHNocmR2X3dfMTI4IDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaHJkdncxMjhfbWFza3oiPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTE2X3R5XSwgW2xsdm1fdjhpMTZfdHksIGxsdm1fdjhpMTZfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92OGkxNl90eSwgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfdnBzaHJkdl93XzI1NiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZ3MjU2X21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmkxNl90eV0sIFtsbHZtX3YxNmkxNl90eSwgbGx2bV92MTZpMTZfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92MTZpMTZfdHksIGxsdm1faTE2X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza3pfdnBzaHJkdl93XzI1NiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZ3MjU2X21hc2t6Ij4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92MTZpMTZfdHldLCBbbGx2bV92MTZpMTZfdHksIGxsdm1fdjE2aTE2X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1fdjE2aTE2X3R5LCBsbHZtX2kxNl90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfdnBzaHJkdl93XzUxMiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZ3NTEyX21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3YzMmkxNl90eV0sIFtsbHZtX3YzMmkxNl90eSwgbGx2bV92MzJpMTZfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92MzJpMTZfdHksIGxsdm1faTMyX3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza3pfdnBzaHJkdl93XzUxMiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZ3NTEyX21hc2t6Ij4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92MzJpMTZfdHldLCBbbGx2bV92MzJpMTZfdHksIGxsdm1fdjMyaTE2X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1fdjMyaTE2X3R5LCBsbHZtX2kzMl90eV0sIFtJbnRyTm9NZW1dPjsKLQotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza192cHNocmR2X3FfMTI4IDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaHJkdnExMjhfbWFzayI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjJpNjRfdHldLCBbbGx2bV92Mmk2NF90eSwgbGx2bV92Mmk2NF90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX3YyaTY0X3R5LCBsbHZtX2k4X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza3pfdnBzaHJkdl9xXzEyOCA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZxMTI4X21hc2t6Ij4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92Mmk2NF90eV0sIFtsbHZtX3YyaTY0X3R5LCBsbHZtX3YyaTY0X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1fdjJpNjRfdHksIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3Zwc2hyZHZfcV8yNTYgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNocmR2cTI1Nl9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92NGk2NF90eV0sIFtsbHZtX3Y0aTY0X3R5LCBsbHZtX3Y0aTY0X3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1fdjRpNjRfdHksIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrel92cHNocmR2X3FfMjU2IDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaHJkdnEyNTZfbWFza3oiPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0aTY0X3R5XSwgW2xsdm1fdjRpNjRfdHksIGxsdm1fdjRpNjRfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92NGk2NF90eSwgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfdnBzaHJkdl9xXzUxMiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZxNTEyX21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTY0X3R5XSwgW2xsdm1fdjhpNjRfdHksIGxsdm1fdjhpNjRfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92OGk2NF90eSwgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2t6X3Zwc2hyZHZfcV81MTIgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNocmR2cTUxMl9tYXNreiI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpNjRfdHldLCBbbGx2bV92OGk2NF90eSwgbGx2bV92OGk2NF90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX3Y4aTY0X3R5LCBsbHZtX2k4X3R5XSwgW0ludHJOb01lbV0+OwotCi0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3Zwc2hyZHZfZF8xMjggOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNocmR2ZDEyOF9tYXNrIj4sCi0gICAgICAgIEludHJpbnNpYzxbbGx2bV92NGkzMl90eV0sIFtsbHZtX3Y0aTMyX3R5LCBsbHZtX3Y0aTMyX3R5LAotICAgICAgICAgICAgICAgICAgIGxsdm1fdjRpMzJfdHksIGxsdm1faThfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrel92cHNocmR2X2RfMTI4IDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaHJkdmQxMjhfbWFza3oiPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y0aTMyX3R5XSwgW2xsdm1fdjRpMzJfdHksIGxsdm1fdjRpMzJfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92NGkzMl90eSwgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfdnBzaHJkdl9kXzI1NiA6Ci0gICAgICAgIEdDQ0J1aWx0aW48Il9fYnVpbHRpbl9pYTMyX3Zwc2hyZHZkMjU2X21hc2siPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTMyX3R5XSwgW2xsdm1fdjhpMzJfdHksIGxsdm1fdjhpMzJfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92OGkzMl90eSwgbGx2bV9pOF90eV0sIFtJbnRyTm9NZW1dPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2t6X3Zwc2hyZHZfZF8yNTYgOgotICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl92cHNocmR2ZDI1Nl9tYXNreiI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjhpMzJfdHldLCBbbGx2bV92OGkzMl90eSwgbGx2bV92OGkzMl90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX3Y4aTMyX3R5LCBsbHZtX2k4X3R5XSwgW0ludHJOb01lbV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza192cHNocmR2X2RfNTEyIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaHJkdmQ1MTJfbWFzayI+LAotICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjE2aTMyX3R5XSwgW2xsdm1fdjE2aTMyX3R5LCBsbHZtX3YxNmkzMl90eSwKLSAgICAgICAgICAgICAgICAgICBsbHZtX3YxNmkzMl90eSwgbGx2bV9pMTZfdHldLCBbSW50ck5vTWVtXT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrel92cHNocmR2X2RfNTEyIDoKLSAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfdnBzaHJkdmQ1MTJfbWFza3oiPiwKLSAgICAgICAgSW50cmluc2ljPFtsbHZtX3YxNmkzMl90eV0sIFtsbHZtX3YxNmkzMl90eSwgbGx2bV92MTZpMzJfdHksCi0gICAgICAgICAgICAgICAgICAgbGx2bV92MTZpMzJfdHksIGxsdm1faTE2X3R5XSwgW0ludHJOb01lbV0+OworICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19jb21wcmVzcyA6CisgICAgICAgIEludHJpbnNpYzxbbGx2bV9hbnl2ZWN0b3JfdHldLAorICAgICAgICAgICAgICAgICAgW0xMVk1NYXRjaFR5cGU8MD4sIExMVk1NYXRjaFR5cGU8MD4sCisgICAgICAgICAgICAgICAgICAgTExWTVNjYWxhck9yU2FtZVZlY3RvcldpZHRoPDAsIGxsdm1faTFfdHk+XSwKKyAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKKyAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfZXhwYW5kIDoKKyAgICAgICAgSW50cmluc2ljPFtsbHZtX2FueXZlY3Rvcl90eV0sCisgICAgICAgICAgICAgICAgICBbTExWTU1hdGNoVHlwZTwwPiwgTExWTU1hdGNoVHlwZTwwPiwKKyAgICAgICAgICAgICAgICAgICBMTFZNU2NhbGFyT3JTYW1lVmVjdG9yV2lkdGg8MCwgbGx2bV9pMV90eT5dLAorICAgICAgICAgICAgICAgICAgW0ludHJOb01lbV0+OwogfQogCiAvLyB0cnVuY2F0ZQpAQCAtNDY2MSwxMCArNDI1Miw2IEBACiAgICAgICAgICAgSW50cmluc2ljPFtdLAogICAgICAgICAgICAgICAgICAgICBbbGx2bV9wdHJfdHksIGxsdm1fdjJpNjRfdHksIGxsdm1faThfdHldLAogICAgICAgICAgICAgICAgICAgICBbSW50ckFyZ01lbU9ubHldPjsKLSAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfcG1vdl9xZF8yNTYgOiAvLyBGSVhNRTogUmVwbGFjZSB3aXRoIHRydW5jK3NlbGVjdC4KLSAgICAgICAgICBJbnRyaW5zaWM8W2xsdm1fdjRpMzJfdHldLAotICAgICAgICAgICAgICAgICAgICBbbGx2bV92NGk2NF90eSwgbGx2bV92NGkzMl90eSwgbGx2bV9pOF90eV0sCi0gICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKICAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfcG1vdl9xZF9tZW1fMjU2IDoKICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wbW92cWQyNTZtZW1fbWFzayI+LAogICAgICAgICAgIEludHJpbnNpYzxbXSwKQEAgLTQ2OTAsMTAgKzQyNzcsNiBAQAogICAgICAgICAgIEludHJpbnNpYzxbXSwKICAgICAgICAgICAgICAgICAgICAgW2xsdm1fcHRyX3R5LCBsbHZtX3Y0aTY0X3R5LCBsbHZtX2k4X3R5XSwKICAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3Btb3ZfcWRfNTEyIDogLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCB0cnVuYytzZWxlY3QuCi0gICAgICAgICAgSW50cmluc2ljPFtsbHZtX3Y4aTMyX3R5XSwKLSAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjhpNjRfdHksIGxsdm1fdjhpMzJfdHksIGxsdm1faThfdHldLAotICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47CiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3Btb3ZfcWRfbWVtXzUxMiA6CiAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfcG1vdnFkNTEybWVtX21hc2siPiwKICAgICAgICAgICBJbnRyaW5zaWM8W10sCkBAIC00OTI3LDEwICs0NTEwLDYgQEAKICAgICAgICAgICBJbnRyaW5zaWM8W10sCiAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3B0cl90eSwgbGx2bV92OGkxNl90eSwgbGx2bV9pOF90eV0sCiAgICAgICAgICAgICAgICAgICAgIFtJbnRyQXJnTWVtT25seV0+OwotICBkZWYgaW50X3g4Nl9hdng1MTJfbWFza19wbW92X3diXzI1NiA6IC8vIEZJWE1FOiBSZXBsYWNlIHdpdGggdHJ1bmMrc2VsZWN0LgotICAgICAgICAgIEludHJpbnNpYzxbbGx2bV92MTZpOF90eV0sCi0gICAgICAgICAgICAgICAgICAgIFtsbHZtX3YxNmkxNl90eSwgbGx2bV92MTZpOF90eSwgbGx2bV9pMTZfdHldLAotICAgICAgICAgICAgICAgICAgICBbSW50ck5vTWVtXT47CiAgIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3Btb3Zfd2JfbWVtXzI1NiA6CiAgICAgICAgICAgR0NDQnVpbHRpbjwiX19idWlsdGluX2lhMzJfcG1vdndiMjU2bWVtX21hc2siPiwKICAgICAgICAgICBJbnRyaW5zaWM8W10sCkBAIC00OTU2LDEwICs0NTM1LDYgQEAKICAgICAgICAgICBJbnRyaW5zaWM8W10sCiAgICAgICAgICAgICAgICAgICAgIFtsbHZtX3B0cl90eSwgbGx2bV92MTZpMTZfdHksIGxsdm1faTE2X3R5XSwKICAgICAgICAgICAgICAgICAgICAgW0ludHJBcmdNZW1Pbmx5XT47Ci0gIGRlZiBpbnRfeDg2X2F2eDUxMl9tYXNrX3Btb3Zfd2JfNTEyIDogLy8gRklYTUU6IFJlcGxhY2Ugd2l0aCB0cnVuYytzZWxlY3QuCi0gICAgICAgICAgSW50cmluc2ljPFtsbHZtX3YzMmk4X3R5XSwKLSAgICAgICAgICAgICAgICAgICAgW2xsdm1fdjMyaTE2X3R5LCBsbHZtX3YzMmk4X3R5LCBsbHZtX2kzMl90eV0sCi0gICAgICAgICAgICAgICAgICAgIFtJbnRyTm9NZW1dPjsKICAgZGVmIGludF94ODZfYXZ4NTEyX21hc2tfcG1vdl93Yl9tZW1fNTEyIDoKICAgICAgICAgICBHQ0NCdWlsdGluPCJfX2J1aWx0aW5faWEzMl9wbW92d2I1MTJtZW1fbWFzayI+LAogICAgICAgICAgIEludHJpbnNpYzxbXSwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvSW50cmluc2ljc1hDb3JlLnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzWENvcmUudGQKaW5kZXggYjYxNGUxZS4uN2ZlOGJkZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzWENvcmUudGQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9JbnRyaW5zaWNzWENvcmUudGQKQEAgLTEsOSArMSw4IEBACiAvLz09LSBJbnRyaW5zaWNzWENvcmUudGQgLSBYQ29yZSBpbnRyaW5zaWNzICAgICAgICAgICAgICAgICAtKi0gdGFibGVnZW4gLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTExWTUNvbnRleHQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTExWTUNvbnRleHQuaAppbmRleCBlYmQ0NDU1Li5mMjg0ODBlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0xMVk1Db250ZXh0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9MTFZNQ29udGV4dC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vTExWTUNvbnRleHQuaCAtIENsYXNzIGZvciBtYW5hZ2luZyAiZ2xvYmFsIiBzdGF0ZSAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMDIsNiArMTAxLDggQEAKICAgICBNRF9hc3NvY2lhdGVkID0gMjIsICAgICAgICAgICAgICAgLy8gImFzc29jaWF0ZWQiCiAgICAgTURfY2FsbGVlcyA9IDIzLCAgICAgICAgICAgICAgICAgIC8vICJjYWxsZWVzIgogICAgIE1EX2lycl9sb29wID0gMjQsICAgICAgICAgICAgICAgICAvLyAiaXJyX2xvb3AiCisgICAgTURfYWNjZXNzX2dyb3VwID0gMjUsICAgICAgICAgICAgIC8vICJsbHZtLmFjY2Vzcy5ncm91cCIKKyAgICBNRF9jYWxsYmFjayA9IDI2LCAgICAgICAgICAgICAgICAgLy8gImNhbGxiYWNrIgogICB9OwogCiAgIC8vLyBLbm93biBvcGVyYW5kIGJ1bmRsZSB0YWcgSURzLCB3aGljaCBhbHdheXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4gIEFsbApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9MZWdhY3lQYXNzTWFuYWdlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9MZWdhY3lQYXNzTWFuYWdlci5oCmluZGV4IDUyNTdhMGUuLmQ2YmI3OWEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTGVnYWN5UGFzc01hbmFnZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0xlZ2FjeVBhc3NNYW5hZ2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTGVnYWN5UGFzc01hbmFnZXIuaCAtIExlZ2FjeSBDb250YWluZXIgZm9yIFBhc3NlcyAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTGVnYWN5UGFzc01hbmFnZXJzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0xlZ2FjeVBhc3NNYW5hZ2Vycy5oCmluZGV4IDUxYTJlYjIuLjcyYmM4MGYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTGVnYWN5UGFzc01hbmFnZXJzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9MZWdhY3lQYXNzTWFuYWdlcnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMZWdhY3lQYXNzTWFuYWdlcnMuaCAtIExlZ2FjeSBQYXNzIEluZnJhc3RydWN0dXJlIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9MZWdhY3lQYXNzTmFtZVBhcnNlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9MZWdhY3lQYXNzTmFtZVBhcnNlci5oCmluZGV4IDRjZWMwODEuLjMwODIwZTcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTGVnYWN5UGFzc05hbWVQYXJzZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL0xlZ2FjeVBhc3NOYW1lUGFyc2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTGVnYWN5UGFzc05hbWVQYXJzZXIuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTURCdWlsZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL01EQnVpbGRlci5oCmluZGV4IDE3NDYxNmMuLjNhMmIxYmQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTURCdWlsZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9NREJ1aWxkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tLSBsbHZtL01EQnVpbGRlci5oIC0gQnVpbGRlciBmb3IgTExWTSBtZXRhZGF0YSAtLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtOTUsNiArOTQsMTcgQEAKICAgTUROb2RlICpjcmVhdGVDYWxsZWVzKEFycmF5UmVmPEZ1bmN0aW9uICo+IENhbGxlZXMpOwogCiAgIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKyAgLy8gQ2FsbGJhY2sgbWV0YWRhdGEuCisgIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworICAvLy8gUmV0dXJuIG1ldGFkYXRhIGRlc2NyaWJpbmcgYSBjYWxsYmFjayAoc2VlIGxsdm06OkFic3RyYWN0Q2FsbFNpdGUpLgorICBNRE5vZGUgKmNyZWF0ZUNhbGxiYWNrRW5jb2RpbmcodW5zaWduZWQgQ2FsbGVlQXJnTm8sIEFycmF5UmVmPGludD4gQXJndW1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBWYXJBcmdzQXJlUGFzc2VkKTsKKworICAvLy8gTWVyZ2UgdGhlIG5ldyBjYWxsYmFjayBlbmNvZGluZyBccCBOZXdDQiBpbnRvIFxwIEV4aXN0aW5nQ2FsbGJhY2tzLgorICBNRE5vZGUgKm1lcmdlQ2FsbGJhY2tFbmNvZGluZ3MoTUROb2RlICpFeGlzdGluZ0NhbGxiYWNrcywgTUROb2RlICpOZXdDQik7CisKKyAgLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogICAvLyBBQSBtZXRhZGF0YS4KICAgLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL01hbmdsZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTWFuZ2xlci5oCmluZGV4IDAyNjFjMDAuLmU0YTA1YWIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTWFuZ2xlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTWFuZ2xlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0lSL01hbmdsZXIuaCAtIFNlbGYtY29udGFpbmVkIG5hbWUgbWFuZ2xlciAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL01ldGFkYXRhLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTWV0YWRhdGEuZGVmCmluZGV4IDcwYTAzZjIuLmQ1NDQwMTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTWV0YWRhdGEuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTWV0YWRhdGEuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vSVIvTWV0YWRhdGEuZGVmIC0gTWV0YWRhdGEgZGVmaW5pdGlvbnMgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL01ldGFkYXRhLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL01ldGFkYXRhLmgKaW5kZXggYmU4MmM0ZS4uN2NhMjU0MCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9NZXRhZGF0YS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTWV0YWRhdGEuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0lSL01ldGFkYXRhLmggLSBNZXRhZGF0YSBkZWZpbml0aW9ucyAtLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Nb2R1bGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTW9kdWxlLmgKaW5kZXggOTFlNDRhZC4uNzM3M2I4NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Nb2R1bGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL01vZHVsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vTW9kdWxlLmggLSBDKysgY2xhc3MgdG8gcmVwcmVzZW50IGEgVk0gbW9kdWxlIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00OSw2ICs0OCw3IEBACiBjbGFzcyBSYW5kb21OdW1iZXJHZW5lcmF0b3I7CiB0ZW1wbGF0ZSA8Y2xhc3MgUHRyVHlwZT4gY2xhc3MgU21hbGxQdHJTZXRJbXBsOwogY2xhc3MgU3RydWN0VHlwZTsKK2NsYXNzIFZlcnNpb25UdXBsZTsKIAogLy8vIEEgTW9kdWxlIGluc3RhbmNlIGlzIHVzZWQgdG8gc3RvcmUgYWxsIHRoZSBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGFuCiAvLy8gTExWTSBtb2R1bGUuIE1vZHVsZXMgYXJlIHRoZSB0b3AgbGV2ZWwgY29udGFpbmVyIG9mIGFsbCBvdGhlciBMTFZNCkBAIC0zMzIsMTYgKzMzMiwxOCBAQAogICAvLy8gTG9vayB1cCB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9uIGluIHRoZSBtb2R1bGUgc3ltYm9sIHRhYmxlLiBGb3VyCiAgIC8vLyBwb3NzaWJpbGl0aWVzOgogICAvLy8gICAxLiBJZiBpdCBkb2VzIG5vdCBleGlzdCwgYWRkIGEgcHJvdG90eXBlIGZvciB0aGUgZnVuY3Rpb24gYW5kIHJldHVybiBpdC4KLSAgLy8vICAgMi4gSWYgaXQgZXhpc3RzLCBhbmQgaGFzIGEgbG9jYWwgbGlua2FnZSwgdGhlIGV4aXN0aW5nIGZ1bmN0aW9uIGlzCi0gIC8vLyAgICAgIHJlbmFtZWQgYW5kIGEgbmV3IG9uZSBpcyBpbnNlcnRlZC4KLSAgLy8vICAgMy4gT3RoZXJ3aXNlLCBpZiB0aGUgZXhpc3RpbmcgZnVuY3Rpb24gaGFzIHRoZSBjb3JyZWN0IHByb3RvdHlwZSwgcmV0dXJuCisgIC8vLyAgIDIuIE90aGVyd2lzZSwgaWYgdGhlIGV4aXN0aW5nIGZ1bmN0aW9uIGhhcyB0aGUgY29ycmVjdCBwcm90b3R5cGUsIHJldHVybgogICAvLy8gICAgICB0aGUgZXhpc3RpbmcgZnVuY3Rpb24uCi0gIC8vLyAgIDQuIEZpbmFsbHksIHRoZSBmdW5jdGlvbiBleGlzdHMgYnV0IGhhcyB0aGUgd3JvbmcgcHJvdG90eXBlOiByZXR1cm4gdGhlCisgIC8vLyAgIDMuIEZpbmFsbHksIHRoZSBmdW5jdGlvbiBleGlzdHMgYnV0IGhhcyB0aGUgd3JvbmcgcHJvdG90eXBlOiByZXR1cm4gdGhlCiAgIC8vLyAgICAgIGZ1bmN0aW9uIHdpdGggYSBjb25zdGFudGV4cHIgY2FzdCB0byB0aGUgcmlnaHQgcHJvdG90eXBlLgotICBDb25zdGFudCAqZ2V0T3JJbnNlcnRGdW5jdGlvbihTdHJpbmdSZWYgTmFtZSwgRnVuY3Rpb25UeXBlICpULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVMaXN0IEF0dHJpYnV0ZUxpc3QpOworICAvLy8KKyAgLy8vIEluIGFsbCBjYXNlcywgdGhlIHJldHVybmVkIHZhbHVlIGlzIGEgRnVuY3Rpb25DYWxsZWUgd3JhcHBlciBhcm91bmQgdGhlCisgIC8vLyAnRnVuY3Rpb25UeXBlICpUJyBwYXNzZWQgaW4sIGFzIHdlbGwgYXMgYSAnVmFsdWUqJyBlaXRoZXIgb2YgdGhlIEZ1bmN0aW9uIG9yCisgIC8vLyB0aGUgYml0Y2FzdCB0byB0aGUgZnVuY3Rpb24uCisgIEZ1bmN0aW9uQ2FsbGVlIGdldE9ySW5zZXJ0RnVuY3Rpb24oU3RyaW5nUmVmIE5hbWUsIEZ1bmN0aW9uVHlwZSAqVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVMaXN0IEF0dHJpYnV0ZUxpc3QpOwogCi0gIENvbnN0YW50ICpnZXRPckluc2VydEZ1bmN0aW9uKFN0cmluZ1JlZiBOYW1lLCBGdW5jdGlvblR5cGUgKlQpOworICBGdW5jdGlvbkNhbGxlZSBnZXRPckluc2VydEZ1bmN0aW9uKFN0cmluZ1JlZiBOYW1lLCBGdW5jdGlvblR5cGUgKlQpOwogCiAgIC8vLyBMb29rIHVwIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gaW4gdGhlIG1vZHVsZSBzeW1ib2wgdGFibGUuIElmIGl0IGRvZXMgbm90CiAgIC8vLyBleGlzdCwgYWRkIGEgcHJvdG90eXBlIGZvciB0aGUgZnVuY3Rpb24gYW5kIHJldHVybiBpdC4gVGhpcyBmdW5jdGlvbgpAQCAtMzQ5LDExICszNTEsMTAgQEAKICAgLy8vIG9yIGEgQ29uc3RhbnRFeHByIEJpdENhc3Qgb2YgdGhhdCB0eXBlIGlmIHRoZSBuYW1lZCBmdW5jdGlvbiBoYXMgYQogICAvLy8gZGlmZmVyZW50IHR5cGUuIFRoaXMgdmVyc2lvbiBvZiB0aGUgbWV0aG9kIHRha2VzIGEgbGlzdCBvZgogICAvLy8gZnVuY3Rpb24gYXJndW1lbnRzLCB3aGljaCBtYWtlcyBpdCBlYXNpZXIgZm9yIGNsaWVudHMgdG8gdXNlLgotICB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzVHk+Ci0gIENvbnN0YW50ICpnZXRPckluc2VydEZ1bmN0aW9uKFN0cmluZ1JlZiBOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVMaXN0IEF0dHJpYnV0ZUxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgKlJldFR5LCBBcmdzVHkuLi4gQXJncykKLSAgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJnc1R5PgorICBGdW5jdGlvbkNhbGxlZSBnZXRPckluc2VydEZ1bmN0aW9uKFN0cmluZ1JlZiBOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUxpc3QgQXR0cmlidXRlTGlzdCwgVHlwZSAqUmV0VHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnc1R5Li4uIEFyZ3MpIHsKICAgICBTbWFsbFZlY3RvcjxUeXBlKiwgc2l6ZW9mLi4uKEFyZ3NUeSk+IEFyZ1R5c3tBcmdzLi4ufTsKICAgICByZXR1cm4gZ2V0T3JJbnNlcnRGdW5jdGlvbihOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uVHlwZTo6Z2V0KFJldFR5LCBBcmdUeXMsIGZhbHNlKSwKQEAgLTM2MSwxMSArMzYyLDE4IEBACiAgIH0KIAogICAvLy8gU2FtZSBhcyBhYm92ZSwgYnV0IHdpdGhvdXQgdGhlIGF0dHJpYnV0ZXMuCi0gIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3NUeT4KLSAgQ29uc3RhbnQgKmdldE9ySW5zZXJ0RnVuY3Rpb24oU3RyaW5nUmVmIE5hbWUsIFR5cGUgKlJldFR5LCBBcmdzVHkuLi4gQXJncykgeworICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJnc1R5PgorICBGdW5jdGlvbkNhbGxlZSBnZXRPckluc2VydEZ1bmN0aW9uKFN0cmluZ1JlZiBOYW1lLCBUeXBlICpSZXRUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmdzVHkuLi4gQXJncykgewogICAgIHJldHVybiBnZXRPckluc2VydEZ1bmN0aW9uKE5hbWUsIEF0dHJpYnV0ZUxpc3R7fSwgUmV0VHksIEFyZ3MuLi4pOwogICB9CiAKKyAgLy8gQXZvaWQgYW4gaW5jb3JyZWN0IG9yZGVyaW5nIHRoYXQnZCBvdGhlcndpc2UgY29tcGlsZSBpbmNvcnJlY3RseS4KKyAgdGVtcGxhdGUgPHR5cGVuYW1lLi4uIEFyZ3NUeT4KKyAgRnVuY3Rpb25DYWxsZWUKKyAgZ2V0T3JJbnNlcnRGdW5jdGlvbihTdHJpbmdSZWYgTmFtZSwgQXR0cmlidXRlTGlzdCBBdHRyaWJ1dGVMaXN0LAorICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uVHlwZSAqSW52YWxpZCwgQXJnc1R5Li4uIEFyZ3MpID0gZGVsZXRlOworCiAgIC8vLyBMb29rIHVwIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gaW4gdGhlIG1vZHVsZSBzeW1ib2wgdGFibGUuIElmIGl0IGRvZXMgbm90CiAgIC8vLyBleGlzdCwgcmV0dXJuIG51bGwuCiAgIEZ1bmN0aW9uICpnZXRGdW5jdGlvbihTdHJpbmdSZWYgTmFtZSkgY29uc3Q7CkBAIC00MDIsMTEgKzQxMCwxNSBAQAogICB9CiAKICAgLy8vIExvb2sgdXAgdGhlIHNwZWNpZmllZCBnbG9iYWwgaW4gdGhlIG1vZHVsZSBzeW1ib2wgdGFibGUuCi0gIC8vLyAgIDEuIElmIGl0IGRvZXMgbm90IGV4aXN0LCBhZGQgYSBkZWNsYXJhdGlvbiBvZiB0aGUgZ2xvYmFsIGFuZCByZXR1cm4gaXQuCi0gIC8vLyAgIDIuIEVsc2UsIHRoZSBnbG9iYWwgZXhpc3RzIGJ1dCBoYXMgdGhlIHdyb25nIHR5cGU6IHJldHVybiB0aGUgZnVuY3Rpb24KLSAgLy8vICAgICAgd2l0aCBhIGNvbnN0YW50ZXhwciBjYXN0IHRvIHRoZSByaWdodCB0eXBlLgotICAvLy8gICAzLiBGaW5hbGx5LCBpZiB0aGUgZXhpc3RpbmcgZ2xvYmFsIGlzIHRoZSBjb3JyZWN0IGRlY2xhcmF0aW9uLCByZXR1cm4KLSAgLy8vICAgICAgdGhlIGV4aXN0aW5nIGdsb2JhbC4KKyAgLy8vIElmIGl0IGRvZXMgbm90IGV4aXN0LCBpbnZva2UgYSBjYWxsYmFjayB0byBjcmVhdGUgYSBkZWNsYXJhdGlvbiBvZiB0aGUKKyAgLy8vIGdsb2JhbCBhbmQgcmV0dXJuIGl0LiBUaGUgZ2xvYmFsIGlzIGNvbnN0YW50ZXhwciBjYXN0ZWQgdG8gdGhlIGV4cGVjdGVkCisgIC8vLyB0eXBlIGlmIG5lY2Vzc2FyeS4KKyAgQ29uc3RhbnQgKgorICBnZXRPckluc2VydEdsb2JhbChTdHJpbmdSZWYgTmFtZSwgVHlwZSAqVHksCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX3JlZjxHbG9iYWxWYXJpYWJsZSAqKCk+IENyZWF0ZUdsb2JhbENhbGxiYWNrKTsKKworICAvLy8gTG9vayB1cCB0aGUgc3BlY2lmaWVkIGdsb2JhbCBpbiB0aGUgbW9kdWxlIHN5bWJvbCB0YWJsZS4gSWYgcmVxdWlyZWQsIHRoaXMKKyAgLy8vIG92ZXJsb2FkIGNvbnN0cnVjdHMgdGhlIGdsb2JhbCB2YXJpYWJsZSB1c2luZyBpdHMgY29uc3RydWN0b3IncyBkZWZhdWx0cy4KICAgQ29uc3RhbnQgKmdldE9ySW5zZXJ0R2xvYmFsKFN0cmluZ1JlZiBOYW1lLCBUeXBlICpUeSk7CiAKIC8vLyBAfQpAQCAtODY4LDYgKzg4MCwxNyBAQAogICAvLy8gU2V0IHRoYXQgUExUIHNob3VsZCBiZSBhdm9pZCBmb3IgUlRMaWIgY2FsbHMuCiAgIHZvaWQgc2V0UnRMaWJVc2VHT1QoKTsKIAorICAvLy8gQG5hbWUgVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHF1ZXJ5aW5nIGFuZCBzZXR0aW5nIHRoZSBidWlsZCBTREsgdmVyc2lvbgorICAvLy8gQHsKKworICAvLy8gQXR0YWNoIGEgYnVpbGQgU0RLIHZlcnNpb24gbWV0YWRhdGEgdG8gdGhpcyBtb2R1bGUuCisgIHZvaWQgc2V0U0RLVmVyc2lvbihjb25zdCBWZXJzaW9uVHVwbGUgJlYpOworCisgIC8vLyBHZXQgdGhlIGJ1aWxkIFNESyB2ZXJzaW9uIG1ldGFkYXRhLgorICAvLy8KKyAgLy8vIEFuIGVtcHR5IHZlcnNpb24gaXMgcmV0dXJuZWQgaWYgbm8gc3VjaCBtZXRhZGF0YSBpcyBhdHRhY2hlZC4KKyAgVmVyc2lvblR1cGxlIGdldFNES1ZlcnNpb24oKSBjb25zdDsKKyAgLy8vIEB9CiAKICAgLy8vIFRha2Ugb3duZXJzaGlwIG9mIHRoZSBnaXZlbiBtZW1vcnkgYnVmZmVyLgogICB2b2lkIHNldE93bmVkTWVtb3J5QnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCdWZmZXI+IE1CKTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTW9kdWxlU2xvdFRyYWNrZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTW9kdWxlU2xvdFRyYWNrZXIuaAppbmRleCBlYjI2ZmJhLi44NWY4ZmY5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL01vZHVsZVNsb3RUcmFja2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Nb2R1bGVTbG90VHJhY2tlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL0lSL01vZHVsZVNsb3RUcmFja2VyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Nb2R1bGVTdW1tYXJ5SW5kZXguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTW9kdWxlU3VtbWFyeUluZGV4LmgKaW5kZXggNzc4OTA3Yi4uYmNiM2FhMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Nb2R1bGVTdW1tYXJ5SW5kZXguaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL01vZHVsZVN1bW1hcnlJbmRleC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vTW9kdWxlU3VtbWFyeUluZGV4LmggLSBNb2R1bGUgU3VtbWFyeSBJbmRleCAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNjMsMTMgKzE2MiwxMyBAQAogLy8vIFN0cnVjdCB0aGF0IGhvbGRzIGEgcmVmZXJlbmNlIHRvIGEgcGFydGljdWxhciBHVUlEIGluIGEgZ2xvYmFsIHZhbHVlCiAvLy8gc3VtbWFyeS4KIHN0cnVjdCBWYWx1ZUluZm8gewotICBQb2ludGVySW50UGFpcjxjb25zdCBHbG9iYWxWYWx1ZVN1bW1hcnlNYXBUeTo6dmFsdWVfdHlwZSAqLCAxLCBib29sPgotICAgICAgUmVmQW5kRmxhZzsKKyAgUG9pbnRlckludFBhaXI8Y29uc3QgR2xvYmFsVmFsdWVTdW1tYXJ5TWFwVHk6OnZhbHVlX3R5cGUgKiwgMiwgaW50PgorICAgICAgUmVmQW5kRmxhZ3M7CiAKICAgVmFsdWVJbmZvKCkgPSBkZWZhdWx0OwogICBWYWx1ZUluZm8oYm9vbCBIYXZlR1ZzLCBjb25zdCBHbG9iYWxWYWx1ZVN1bW1hcnlNYXBUeTo6dmFsdWVfdHlwZSAqUikgewotICAgIFJlZkFuZEZsYWcuc2V0UG9pbnRlcihSKTsKLSAgICBSZWZBbmRGbGFnLnNldEludChIYXZlR1ZzKTsKKyAgICBSZWZBbmRGbGFncy5zZXRQb2ludGVyKFIpOworICAgIFJlZkFuZEZsYWdzLnNldEludChIYXZlR1ZzKTsKICAgfQogCiAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBnZXRSZWYoKTsgfQpAQCAtMTg5LDEwICsxODgsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgIDogZ2V0UmVmKCktPnNlY29uZC5VLk5hbWU7CiAgIH0KIAotICBib29sIGhhdmVHVnMoKSBjb25zdCB7IHJldHVybiBSZWZBbmRGbGFnLmdldEludCgpOyB9CisgIGJvb2wgaGF2ZUdWcygpIGNvbnN0IHsgcmV0dXJuIFJlZkFuZEZsYWdzLmdldEludCgpICYgMHgxOyB9CisgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIFJlZkFuZEZsYWdzLmdldEludCgpICYgMHgyOyB9CisgIHZvaWQgc2V0UmVhZE9ubHkoKSB7IFJlZkFuZEZsYWdzLnNldEludChSZWZBbmRGbGFncy5nZXRJbnQoKSB8IDB4Mik7IH0KIAogICBjb25zdCBHbG9iYWxWYWx1ZVN1bW1hcnlNYXBUeTo6dmFsdWVfdHlwZSAqZ2V0UmVmKCkgY29uc3QgewotICAgIHJldHVybiBSZWZBbmRGbGFnLmdldFBvaW50ZXIoKTsKKyAgICByZXR1cm4gUmVmQW5kRmxhZ3MuZ2V0UG9pbnRlcigpOwogICB9CiAKICAgYm9vbCBpc0RTT0xvY2FsKCkgY29uc3Q7CkBAIC00MDgsNiArNDA5LDcgQEAKICAgICByZXR1cm4gY29uc3RfY2FzdDxHbG9iYWxWYWx1ZVN1bW1hcnkgJj4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQWxpYXNTdW1tYXJ5ICo+KHRoaXMpLT5nZXRBbGlhc2VlKCkpOwogICB9CisgIGJvb2wgaGFzQWxpYXNlZUdVSUQoKSBjb25zdCB7IHJldHVybiBBbGlhc2VlR1VJRCAhPSAwOyB9CiAgIGNvbnN0IEdsb2JhbFZhbHVlOjpHVUlEICZnZXRBbGlhc2VlR1VJRCgpIGNvbnN0IHsKICAgICBhc3NlcnQoQWxpYXNlZUdVSUQgJiYgIlVuZXhwZWN0ZWQgbWlzc2luZyBhbGlhc2VlIEdVSUQiKTsKICAgICByZXR1cm4gQWxpYXNlZUdVSUQ7CkBAIC00NzcsMTMgKzQ3OSwxNyBAQAogICAgICAgICBUeXBlQ2hlY2tlZExvYWRDb25zdFZDYWxsczsKICAgfTsKIAotICAvLy8gRnVuY3Rpb24gYXR0cmlidXRlIGZsYWdzLiBVc2VkIHRvIHRyYWNrIGlmIGEgZnVuY3Rpb24gYWNjZXNzZXMgbWVtb3J5LAotICAvLy8gcmVjdXJzZXMgb3IgYWxpYXNlcy4KKyAgLy8vIEZsYWdzIHNwZWNpZmljIHRvIGZ1bmN0aW9uIHN1bW1hcmllcy4KICAgc3RydWN0IEZGbGFncyB7CisgICAgLy8gRnVuY3Rpb24gYXR0cmlidXRlIGZsYWdzLiBVc2VkIHRvIHRyYWNrIGlmIGEgZnVuY3Rpb24gYWNjZXNzZXMgbWVtb3J5LAorICAgIC8vIHJlY3Vyc2VzIG9yIGFsaWFzZXMuCiAgICAgdW5zaWduZWQgUmVhZE5vbmUgOiAxOwogICAgIHVuc2lnbmVkIFJlYWRPbmx5IDogMTsKICAgICB1bnNpZ25lZCBOb1JlY3Vyc2UgOiAxOwogICAgIHVuc2lnbmVkIFJldHVybkRvZXNOb3RBbGlhcyA6IDE7CisKKyAgICAvLyBJbmRpY2F0ZSBpZiB0aGUgZ2xvYmFsIHZhbHVlIGNhbm5vdCBiZSBpbmxpbmVkLgorICAgIHVuc2lnbmVkIE5vSW5saW5lIDogMTsKICAgfTsKIAogICAvLy8gQ3JlYXRlIGFuIGVtcHR5IEZ1bmN0aW9uU3VtbWFyeSAod2l0aCBzcGVjaWZpZWQgY2FsbCBlZGdlcykuCkBAIC00OTQsOCArNTAwLDkgQEAKICAgICAgICAgRnVuY3Rpb25TdW1tYXJ5OjpHVkZsYWdzKAogICAgICAgICAgICAgR2xvYmFsVmFsdWU6OkxpbmthZ2VUeXBlczo6QXZhaWxhYmxlRXh0ZXJuYWxseUxpbmthZ2UsCiAgICAgICAgICAgICAvKk5vdEVsaWdpYmxlVG9JbXBvcnQ9Ki90cnVlLCAvKkxpdmU9Ki90cnVlLCAvKklzTG9jYWw9Ki9mYWxzZSksCi0gICAgICAgIDAsIEZ1bmN0aW9uU3VtbWFyeTo6RkZsYWdze30sIHN0ZDo6dmVjdG9yPFZhbHVlSW5mbz4oKSwKLSAgICAgICAgc3RkOjptb3ZlKEVkZ2VzKSwgc3RkOjp2ZWN0b3I8R2xvYmFsVmFsdWU6OkdVSUQ+KCksCisgICAgICAgIC8qSW5zQ291bnQ9Ki8wLCBGdW5jdGlvblN1bW1hcnk6OkZGbGFnc3t9LCAvKkVudHJ5Q291bnQ9Ki8wLAorICAgICAgICBzdGQ6OnZlY3RvcjxWYWx1ZUluZm8+KCksIHN0ZDo6bW92ZShFZGdlcyksCisgICAgICAgIHN0ZDo6dmVjdG9yPEdsb2JhbFZhbHVlOjpHVUlEPigpLAogICAgICAgICBzdGQ6OnZlY3RvcjxGdW5jdGlvblN1bW1hcnk6OlZGdW5jSWQ+KCksCiAgICAgICAgIHN0ZDo6dmVjdG9yPEZ1bmN0aW9uU3VtbWFyeTo6VkZ1bmNJZD4oKSwKICAgICAgICAgc3RkOjp2ZWN0b3I8RnVuY3Rpb25TdW1tYXJ5OjpDb25zdFZDYWxsPigpLApAQCAtNTEwLDEwICs1MTcsMTQgQEAKICAgLy8vIGR1cmluZyB0aGUgaW5pdGlhbCBjb21waWxlIHN0ZXAgd2hlbiB0aGUgc3VtbWFyeSBpbmRleCBpcyBmaXJzdCBidWlsdC4KICAgdW5zaWduZWQgSW5zdENvdW50OwogCi0gIC8vLyBGdW5jdGlvbiBhdHRyaWJ1dGUgZmxhZ3MuIFVzZWQgdG8gdHJhY2sgaWYgYSBmdW5jdGlvbiBhY2Nlc3NlcyBtZW1vcnksCi0gIC8vLyByZWN1cnNlcyBvciBhbGlhc2VzLgorICAvLy8gRnVuY3Rpb24gc3VtbWFyeSBzcGVjaWZpYyBmbGFncy4KICAgRkZsYWdzIEZ1bkZsYWdzOwogCisgIC8vLyBUaGUgc3ludGhlc2l6ZWQgZW50cnkgY291bnQgb2YgdGhlIGZ1bmN0aW9uLgorICAvLy8gVGhpcyBpcyBvbmx5IHBvcHVsYXRlZCBkdXJpbmcgVGhpbkxpbmsgcGhhc2UgYW5kIHJlbWFpbnMgdW51c2VkIHdoaWxlCisgIC8vLyBnZW5lcmF0aW5nIHBlci1tb2R1bGUgc3VtbWFyaWVzLgorICB1aW50NjRfdCBFbnRyeUNvdW50ID0gMDsKKwogICAvLy8gTGlzdCBvZiA8Q2FsbGVlVmFsdWVJbmZvLCBDYWxsZWVJbmZvPiBjYWxsIGVkZ2UgcGFpcnMgZnJvbSB0aGlzIGZ1bmN0aW9uLgogICBzdGQ6OnZlY3RvcjxFZGdlVHk+IENhbGxHcmFwaEVkZ2VMaXN0OwogCkBAIC01MjEsMTQgKzUzMiwxNSBAQAogCiBwdWJsaWM6CiAgIEZ1bmN0aW9uU3VtbWFyeShHVkZsYWdzIEZsYWdzLCB1bnNpZ25lZCBOdW1JbnN0cywgRkZsYWdzIEZ1bkZsYWdzLAotICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8VmFsdWVJbmZvPiBSZWZzLCBzdGQ6OnZlY3RvcjxFZGdlVHk+IENHRWRnZXMsCisgICAgICAgICAgICAgICAgICB1aW50NjRfdCBFbnRyeUNvdW50LCBzdGQ6OnZlY3RvcjxWYWx1ZUluZm8+IFJlZnMsCisgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxFZGdlVHk+IENHRWRnZXMsCiAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxHbG9iYWxWYWx1ZTo6R1VJRD4gVHlwZVRlc3RzLAogICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8VkZ1bmNJZD4gVHlwZVRlc3RBc3N1bWVWQ2FsbHMsCiAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxWRnVuY0lkPiBUeXBlQ2hlY2tlZExvYWRWQ2FsbHMsCiAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxDb25zdFZDYWxsPiBUeXBlVGVzdEFzc3VtZUNvbnN0VkNhbGxzLAogICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8Q29uc3RWQ2FsbD4gVHlwZUNoZWNrZWRMb2FkQ29uc3RWQ2FsbHMpCiAgICAgICA6IEdsb2JhbFZhbHVlU3VtbWFyeShGdW5jdGlvbktpbmQsIEZsYWdzLCBzdGQ6Om1vdmUoUmVmcykpLAotICAgICAgICBJbnN0Q291bnQoTnVtSW5zdHMpLCBGdW5GbGFncyhGdW5GbGFncyksCisgICAgICAgIEluc3RDb3VudChOdW1JbnN0cyksIEZ1bkZsYWdzKEZ1bkZsYWdzKSwgRW50cnlDb3VudChFbnRyeUNvdW50KSwKICAgICAgICAgQ2FsbEdyYXBoRWRnZUxpc3Qoc3RkOjptb3ZlKENHRWRnZXMpKSB7CiAgICAgaWYgKCFUeXBlVGVzdHMuZW1wdHkoKSB8fCAhVHlwZVRlc3RBc3N1bWVWQ2FsbHMuZW1wdHkoKSB8fAogICAgICAgICAhVHlwZUNoZWNrZWRMb2FkVkNhbGxzLmVtcHR5KCkgfHwgIVR5cGVUZXN0QXNzdW1lQ29uc3RWQ2FsbHMuZW1wdHkoKSB8fApAQCAtNTM5LDE4ICs1NTEsMjYgQEAKICAgICAgICAgICBzdGQ6Om1vdmUoVHlwZVRlc3RBc3N1bWVDb25zdFZDYWxscyksCiAgICAgICAgICAgc3RkOjptb3ZlKFR5cGVDaGVja2VkTG9hZENvbnN0VkNhbGxzKX0pOwogICB9CisgIC8vIEdldHMgdGhlIG51bWJlciBvZiBpbW11dGFibGUgcmVmcyBpbiBSZWZFZGdlTGlzdAorICB1bnNpZ25lZCBpbW11dGFibGVSZWZDb3VudCgpIGNvbnN0OwogCiAgIC8vLyBDaGVjayBpZiB0aGlzIGlzIGEgZnVuY3Rpb24gc3VtbWFyeS4KICAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBHbG9iYWxWYWx1ZVN1bW1hcnkgKkdWUykgewogICAgIHJldHVybiBHVlMtPmdldFN1bW1hcnlLaW5kKCkgPT0gRnVuY3Rpb25LaW5kOwogICB9CiAKLSAgLy8vIEdldCBmdW5jdGlvbiBhdHRyaWJ1dGUgZmxhZ3MuCisgIC8vLyBHZXQgZnVuY3Rpb24gc3VtbWFyeSBmbGFncy4KICAgRkZsYWdzIGZmbGFncygpIGNvbnN0IHsgcmV0dXJuIEZ1bkZsYWdzOyB9CiAKICAgLy8vIEdldCB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgcmVjb3JkZWQgZm9yIHRoaXMgZnVuY3Rpb24uCiAgIHVuc2lnbmVkIGluc3RDb3VudCgpIGNvbnN0IHsgcmV0dXJuIEluc3RDb3VudDsgfQogCisgIC8vLyBHZXQgdGhlIHN5bnRoZXRpYyBlbnRyeSBjb3VudCBmb3IgdGhpcyBmdW5jdGlvbi4KKyAgdWludDY0X3QgZW50cnlDb3VudCgpIGNvbnN0IHsgcmV0dXJuIEVudHJ5Q291bnQ7IH0KKworICAvLy8gU2V0IHRoZSBzeW50aGV0aWMgZW50cnkgY291bnQgZm9yIHRoaXMgZnVuY3Rpb24uCisgIHZvaWQgc2V0RW50cnlDb3VudCh1aW50NjRfdCBFQykgeyBFbnRyeUNvdW50ID0gRUM7IH0KKwogICAvLy8gUmV0dXJuIHRoZSBsaXN0IG9mIDxDYWxsZWVWYWx1ZUluZm8sIENhbGxlZUluZm8+IHBhaXJzLgogICBBcnJheVJlZjxFZGdlVHk+IGNhbGxzKCkgY29uc3QgeyByZXR1cm4gQ2FsbEdyYXBoRWRnZUxpc3Q7IH0KIApAQCAtNjQ4LDE5ICs2NjgsMzAgQEAKIC8vLyBHbG9iYWwgdmFyaWFibGUgc3VtbWFyeSBpbmZvcm1hdGlvbiB0byBhaWQgZGVjaXNpb25zIGFuZAogLy8vIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydGluZy4KIC8vLwotLy8vIEN1cnJlbnRseSB0aGlzIGRvZXNuJ3QgYWRkIGFueXRoaW5nIHRvIHRoZSBiYXNlIFxwIEdsb2JhbFZhbHVlU3VtbWFyeSwKLS8vLyBidXQgaXMgYSBwbGFjZWhvbGRlciBhcyBhZGRpdGlvbmFsIGluZm8gbWF5IGJlIGFkZGVkIHRvIHRoZSBzdW1tYXJ5Ci0vLy8gZm9yIHZhcmlhYmxlcy4KKy8vLyBHbG9iYWwgdmFyaWFibGUgc3VtbWFyeSBoYXMgZXh0cmEgZmxhZywgdGVsbGluZyBpZiBpdCBpcworLy8vIG1vZGlmaWVkIGR1cmluZyB0aGUgcHJvZ3JhbSBydW4gb3Igbm90LiBUaGlzIGFmZmVjdHMgVGhpbkxUTworLy8vIGludGVybmFsaXphdGlvbgogY2xhc3MgR2xvYmFsVmFyU3VtbWFyeSA6IHB1YmxpYyBHbG9iYWxWYWx1ZVN1bW1hcnkgewotCiBwdWJsaWM6Ci0gIEdsb2JhbFZhclN1bW1hcnkoR1ZGbGFncyBGbGFncywgc3RkOjp2ZWN0b3I8VmFsdWVJbmZvPiBSZWZzKQotICAgICAgOiBHbG9iYWxWYWx1ZVN1bW1hcnkoR2xvYmFsVmFyS2luZCwgRmxhZ3MsIHN0ZDo6bW92ZShSZWZzKSkge30KKyAgc3RydWN0IEdWYXJGbGFncyB7CisgICAgR1ZhckZsYWdzKGJvb2wgUmVhZE9ubHkgPSBmYWxzZSkgOiBSZWFkT25seShSZWFkT25seSkge30KKworICAgIHVuc2lnbmVkIFJlYWRPbmx5IDogMTsKKyAgfSBWYXJGbGFnczsKKworICBHbG9iYWxWYXJTdW1tYXJ5KEdWRmxhZ3MgRmxhZ3MsIEdWYXJGbGFncyBWYXJGbGFncywKKyAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxWYWx1ZUluZm8+IFJlZnMpCisgICAgICA6IEdsb2JhbFZhbHVlU3VtbWFyeShHbG9iYWxWYXJLaW5kLCBGbGFncywgc3RkOjptb3ZlKFJlZnMpKSwKKyAgICAgICAgVmFyRmxhZ3MoVmFyRmxhZ3MpIHt9CiAKICAgLy8vIENoZWNrIGlmIHRoaXMgaXMgYSBnbG9iYWwgdmFyaWFibGUgc3VtbWFyeS4KICAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBHbG9iYWxWYWx1ZVN1bW1hcnkgKkdWUykgewogICAgIHJldHVybiBHVlMtPmdldFN1bW1hcnlLaW5kKCkgPT0gR2xvYmFsVmFyS2luZDsKICAgfQorCisgIEdWYXJGbGFncyB2YXJmbGFncygpIGNvbnN0IHsgcmV0dXJuIFZhckZsYWdzOyB9CisgIHZvaWQgc2V0UmVhZE9ubHkoYm9vbCBSTykgeyBWYXJGbGFncy5SZWFkT25seSA9IFJPOyB9CisgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIFZhckZsYWdzLlJlYWRPbmx5OyB9CiB9OwogCiBzdHJ1Y3QgVHlwZVRlc3RSZXNvbHV0aW9uIHsKQEAgLTc4Myw2ICs4MTQsOSBAQAogICAvLy8gY29uc2lkZXJlZCBsaXZlLgogICBib29sIFdpdGhHbG9iYWxWYWx1ZURlYWRTdHJpcHBpbmcgPSBmYWxzZTsKIAorICAvLy8gSW5kaWNhdGVzIHRoYXQgc3VtbWFyeS1iYXNlZCBzeW50aGV0aWMgZW50cnkgY291bnQgcHJvcGFnYXRpb24gaGFzIHJ1bgorICBib29sIEhhc1N5bnRoZXRpY0VudHJ5Q291bnRzID0gZmFsc2U7CisKICAgLy8vIEluZGljYXRlcyB0aGF0IGRpc3RyaWJ1dGVkIGJhY2tlbmQgc2hvdWxkIHNraXAgY29tcGlsYXRpb24gb2YgdGhlCiAgIC8vLyBtb2R1bGUuIEZsYWcgaXMgc3VwcG9zZSB0byBiZSBzZXQgYnkgZGlzdHJpYnV0ZWQgVGhpbkxUTyBpbmRleGluZwogICAvLy8gd2hlbiBpdCBkZXRlY3RlZCB0aGF0IHRoZSBtb2R1bGUgaXMgbm90IG5lZWRlZCBkdXJpbmcgdGhlIGZpbmFsCkBAIC03OTYsNiArODMwLDEzIEBACiAgIC8vLyB1bmlvbi4KICAgYm9vbCBIYXZlR1ZzOwogCisgIC8vIFRydWUgaWYgdGhlIGluZGV4IHdhcyBjcmVhdGVkIGZvciBhIG1vZHVsZSBjb21waWxlZCB3aXRoIC1mc3BsaXQtbHRvLXVuaXQuCisgIGJvb2wgRW5hYmxlU3BsaXRMVE9Vbml0OworCisgIC8vIFRydWUgaWYgc29tZSBvZiB0aGUgbW9kdWxlcyB3ZXJlIGNvbXBpbGVkIHdpdGggLWZzcGxpdC1sdG8tdW5pdCBhbmQKKyAgLy8gc29tZSB3ZXJlIG5vdC4gU2V0IHdoZW4gdGhlIGNvbWJpbmVkIGluZGV4IGlzIGNyZWF0ZWQgZHVyaW5nIHRoZSB0aGluIGxpbmsuCisgIGJvb2wgUGFydGlhbGx5U3BsaXRMVE9Vbml0cyA9IGZhbHNlOworCiAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBDZmlGdW5jdGlvbkRlZnM7CiAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBDZmlGdW5jdGlvbkRlY2xzOwogCkBAIC04MTUsNyArODU2LDkgQEAKIAogcHVibGljOgogICAvLyBTZWUgSGF2ZUdWcyB2YXJpYWJsZSBjb21tZW50LgotICBNb2R1bGVTdW1tYXJ5SW5kZXgoYm9vbCBIYXZlR1ZzKSA6IEhhdmVHVnMoSGF2ZUdWcyksIFNhdmVyKEFsbG9jKSB7fQorICBNb2R1bGVTdW1tYXJ5SW5kZXgoYm9vbCBIYXZlR1ZzLCBib29sIEVuYWJsZVNwbGl0TFRPVW5pdCA9IGZhbHNlKQorICAgICAgOiBIYXZlR1ZzKEhhdmVHVnMpLCBFbmFibGVTcGxpdExUT1VuaXQoRW5hYmxlU3BsaXRMVE9Vbml0KSwgU2F2ZXIoQWxsb2MpIHsKKyAgfQogCiAgIGJvb2wgaGF2ZUdWcygpIGNvbnN0IHsgcmV0dXJuIEhhdmVHVnM7IH0KIApAQCAtODk1LDYgKzkzOCw5IEBACiAgICAgV2l0aEdsb2JhbFZhbHVlRGVhZFN0cmlwcGluZyA9IHRydWU7CiAgIH0KIAorICBib29sIGhhc1N5bnRoZXRpY0VudHJ5Q291bnRzKCkgY29uc3QgeyByZXR1cm4gSGFzU3ludGhldGljRW50cnlDb3VudHM7IH0KKyAgdm9pZCBzZXRIYXNTeW50aGV0aWNFbnRyeUNvdW50cygpIHsgSGFzU3ludGhldGljRW50cnlDb3VudHMgPSB0cnVlOyB9CisKICAgYm9vbCBza2lwTW9kdWxlQnlEaXN0cmlidXRlZEJhY2tlbmQoKSBjb25zdCB7CiAgICAgcmV0dXJuIFNraXBNb2R1bGVCeURpc3RyaWJ1dGVkQmFja2VuZDsKICAgfQpAQCAtOTAyLDYgKzk0OCwxMiBAQAogICAgIFNraXBNb2R1bGVCeURpc3RyaWJ1dGVkQmFja2VuZCA9IHRydWU7CiAgIH0KIAorICBib29sIGVuYWJsZVNwbGl0TFRPVW5pdCgpIGNvbnN0IHsgcmV0dXJuIEVuYWJsZVNwbGl0TFRPVW5pdDsgfQorICB2b2lkIHNldEVuYWJsZVNwbGl0TFRPVW5pdCgpIHsgRW5hYmxlU3BsaXRMVE9Vbml0ID0gdHJ1ZTsgfQorCisgIGJvb2wgcGFydGlhbGx5U3BsaXRMVE9Vbml0cygpIGNvbnN0IHsgcmV0dXJuIFBhcnRpYWxseVNwbGl0TFRPVW5pdHM7IH0KKyAgdm9pZCBzZXRQYXJ0aWFsbHlTcGxpdExUT1VuaXRzKCkgeyBQYXJ0aWFsbHlTcGxpdExUT1VuaXRzID0gdHJ1ZTsgfQorCiAgIGJvb2wgaXNHbG9iYWxWYWx1ZUxpdmUoY29uc3QgR2xvYmFsVmFsdWVTdW1tYXJ5ICpHVlMpIGNvbnN0IHsKICAgICByZXR1cm4gIVdpdGhHbG9iYWxWYWx1ZURlYWRTdHJpcHBpbmcgfHwgR1ZTLT5pc0xpdmUoKTsKICAgfQpAQCAtOTI3LDcgKzk3OSw3IEBACiAgIC8vIFNhdmUgYSBzdHJpbmcgaW4gdGhlIEluZGV4LiBVc2UgYmVmb3JlIHBhc3NpbmcgTmFtZSB0bwogICAvLyBnZXRPckluc2VydFZhbHVlSW5mbyB3aGVuIHRoZSBzdHJpbmcgaXNuJ3Qgb3duZWQgZWxzZXdoZXJlIChlLmcuIG9uIHRoZQogICAvLyBtb2R1bGUncyBTdHJ0YWIpLgotICBTdHJpbmdSZWYgc2F2ZVN0cmluZyhzdGQ6OnN0cmluZyBTdHJpbmcpIHsgcmV0dXJuIFNhdmVyLnNhdmUoU3RyaW5nKTsgfQorICBTdHJpbmdSZWYgc2F2ZVN0cmluZyhTdHJpbmdSZWYgU3RyaW5nKSB7IHJldHVybiBTYXZlci5zYXZlKFN0cmluZyk7IH0KIAogICAvLy8gUmV0dXJuIGEgVmFsdWVJbmZvIGZvciBccCBHVUlEIHNldHRpbmcgdmFsdWUgXHAgTmFtZS4KICAgVmFsdWVJbmZvIGdldE9ySW5zZXJ0VmFsdWVJbmZvKEdsb2JhbFZhbHVlOjpHVUlEIEdVSUQsIFN0cmluZ1JlZiBOYW1lKSB7CkBAIC0xMTMxLDExICsxMTgzLDE1IEBACiAKICAgLy8vIFByaW50IG91dCBzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50cyBmb3IgZGVidWdnaW5nLgogICB2b2lkIGR1bXBTQ0NzKHJhd19vc3RyZWFtICZPUyk7CisKKyAgLy8vIEFuYWx5emUgaW5kZXggYW5kIGRldGVjdCB1bm1vZGlmaWVkIGdsb2JhbHMKKyAgdm9pZCBwcm9wYWdhdGVDb25zdGFudHMoY29uc3QgRGVuc2VTZXQ8R2xvYmFsVmFsdWU6OkdVSUQ+ICZQcmVzZXJ2ZWRTeW1ib2xzKTsKIH07CiAKIC8vLyBHcmFwaFRyYWl0cyBkZWZpbml0aW9uIHRvIGJ1aWxkIFNDQyBmb3IgdGhlIGluZGV4CiB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgR3JhcGhUcmFpdHM8VmFsdWVJbmZvPiB7CiAgIHR5cGVkZWYgVmFsdWVJbmZvIE5vZGVSZWY7CisgIHVzaW5nIEVkZ2VSZWYgPSBGdW5jdGlvblN1bW1hcnk6OkVkZ2VUeSAmOwogCiAgIHN0YXRpYyBOb2RlUmVmIHZhbHVlSW5mb0Zyb21FZGdlKEZ1bmN0aW9uU3VtbWFyeTo6RWRnZVR5ICZQKSB7CiAgICAgcmV0dXJuIFAuZmlyc3Q7CkBAIC0xMTQ0LDYgKzEyMDAsOCBAQAogICAgICAgbWFwcGVkX2l0ZXJhdG9yPHN0ZDo6dmVjdG9yPEZ1bmN0aW9uU3VtbWFyeTo6RWRnZVR5Pjo6aXRlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgZGVjbHR5cGUoJnZhbHVlSW5mb0Zyb21FZGdlKT47CiAKKyAgdXNpbmcgQ2hpbGRFZGdlSXRlcmF0b3JUeXBlID0gc3RkOjp2ZWN0b3I8RnVuY3Rpb25TdW1tYXJ5OjpFZGdlVHk+OjppdGVyYXRvcjsKKwogICBzdGF0aWMgTm9kZVJlZiBnZXRFbnRyeU5vZGUoVmFsdWVJbmZvIFYpIHsgcmV0dXJuIFY7IH0KIAogICBzdGF0aWMgQ2hpbGRJdGVyYXRvclR5cGUgY2hpbGRfYmVnaW4oTm9kZVJlZiBOKSB7CkBAIC0xMTY1LDYgKzEyMjMsMjYgQEAKICAgICAgICAgY2FzdDxGdW5jdGlvblN1bW1hcnk+KE4uZ2V0U3VtbWFyeUxpc3QoKS5mcm9udCgpLT5nZXRCYXNlT2JqZWN0KCkpOwogICAgIHJldHVybiBDaGlsZEl0ZXJhdG9yVHlwZShGLT5DYWxsR3JhcGhFZGdlTGlzdC5lbmQoKSwgJnZhbHVlSW5mb0Zyb21FZGdlKTsKICAgfQorCisgIHN0YXRpYyBDaGlsZEVkZ2VJdGVyYXRvclR5cGUgY2hpbGRfZWRnZV9iZWdpbihOb2RlUmVmIE4pIHsKKyAgICBpZiAoIU4uZ2V0U3VtbWFyeUxpc3QoKS5zaXplKCkpIC8vIGhhbmRsZSBleHRlcm5hbCBmdW5jdGlvbgorICAgICAgcmV0dXJuIEZ1bmN0aW9uU3VtbWFyeTo6RXh0ZXJuYWxOb2RlLkNhbGxHcmFwaEVkZ2VMaXN0LmJlZ2luKCk7CisKKyAgICBGdW5jdGlvblN1bW1hcnkgKkYgPQorICAgICAgICBjYXN0PEZ1bmN0aW9uU3VtbWFyeT4oTi5nZXRTdW1tYXJ5TGlzdCgpLmZyb250KCktPmdldEJhc2VPYmplY3QoKSk7CisgICAgcmV0dXJuIEYtPkNhbGxHcmFwaEVkZ2VMaXN0LmJlZ2luKCk7CisgIH0KKworICBzdGF0aWMgQ2hpbGRFZGdlSXRlcmF0b3JUeXBlIGNoaWxkX2VkZ2VfZW5kKE5vZGVSZWYgTikgeworICAgIGlmICghTi5nZXRTdW1tYXJ5TGlzdCgpLnNpemUoKSkgLy8gaGFuZGxlIGV4dGVybmFsIGZ1bmN0aW9uCisgICAgICByZXR1cm4gRnVuY3Rpb25TdW1tYXJ5OjpFeHRlcm5hbE5vZGUuQ2FsbEdyYXBoRWRnZUxpc3QuZW5kKCk7CisKKyAgICBGdW5jdGlvblN1bW1hcnkgKkYgPQorICAgICAgICBjYXN0PEZ1bmN0aW9uU3VtbWFyeT4oTi5nZXRTdW1tYXJ5TGlzdCgpLmZyb250KCktPmdldEJhc2VPYmplY3QoKSk7CisgICAgcmV0dXJuIEYtPkNhbGxHcmFwaEVkZ2VMaXN0LmVuZCgpOworICB9CisKKyAgc3RhdGljIE5vZGVSZWYgZWRnZV9kZXN0KEVkZ2VSZWYgRSkgeyByZXR1cm4gRS5maXJzdDsgfQogfTsKIAogdGVtcGxhdGUgPD4KQEAgLTExODAsNiArMTI1OCwxNCBAQAogICB9CiB9OwogCitzdGF0aWMgaW5saW5lIGJvb2wgY2FuSW1wb3J0R2xvYmFsVmFyKEdsb2JhbFZhbHVlU3VtbWFyeSAqUykgeworICBhc3NlcnQoaXNhPEdsb2JhbFZhclN1bW1hcnk+KFMtPmdldEJhc2VPYmplY3QoKSkpOworCisgIC8vIFdlIGRvbid0IGltcG9ydCBHViB3aXRoIHJlZmVyZW5jZXMsIGJlY2F1c2UgaXQgY2FuIHJlc3VsdAorICAvLyBpbiBwcm9tb3Rpb24gb2YgbG9jYWwgdmFyaWFibGVzIGluIHRoZSBzb3VyY2UgbW9kdWxlLgorICByZXR1cm4gIUdsb2JhbFZhbHVlOjppc0ludGVycG9zYWJsZUxpbmthZ2UoUy0+bGlua2FnZSgpKSAmJgorICAgICAgICAgIVMtPm5vdEVsaWdpYmxlVG9JbXBvcnQoKSAmJiBTLT5yZWZzKCkuZW1wdHkoKTsKK30KIH0gLy8gZW5kIG5hbWVzcGFjZSBsbHZtCiAKICNlbmRpZiAvLyBMTFZNX0lSX01PRFVMRVNVTU1BUllJTkRFWF9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL01vZHVsZVN1bW1hcnlJbmRleFlBTUwuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTW9kdWxlU3VtbWFyeUluZGV4WUFNTC5oCmluZGV4IDU2ZjU2YjQuLmMzZmVlZWUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTW9kdWxlU3VtbWFyeUluZGV4WUFNTC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTW9kdWxlU3VtbWFyeUluZGV4WUFNTC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL01vZHVsZVN1bW1hcnlJbmRleFlBTUwuaCAtIFlBTUwgSS9PIGZvciBzdW1tYXJ5IC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMjI0LDcgKzIyMyw3IEBACiAgICAgICAgICAgR2xvYmFsVmFsdWVTdW1tYXJ5OjpHVkZsYWdzKAogICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHbG9iYWxWYWx1ZTo6TGlua2FnZVR5cGVzPihGU3VtLkxpbmthZ2UpLAogICAgICAgICAgICAgICBGU3VtLk5vdEVsaWdpYmxlVG9JbXBvcnQsIEZTdW0uTGl2ZSwgRlN1bS5Jc0xvY2FsKSwKLSAgICAgICAgICAwLCBGdW5jdGlvblN1bW1hcnk6OkZGbGFnc3t9LCBSZWZzLAorICAgICAgICAgIC8qTnVtSW5zdHM9Ki8wLCBGdW5jdGlvblN1bW1hcnk6OkZGbGFnc3t9LCAvKkVudHJ5Q291bnQ9Ki8wLCBSZWZzLAogICAgICAgICAgIEFycmF5UmVmPEZ1bmN0aW9uU3VtbWFyeTo6RWRnZVR5Pnt9LCBzdGQ6Om1vdmUoRlN1bS5UeXBlVGVzdHMpLAogICAgICAgICAgIHN0ZDo6bW92ZShGU3VtLlR5cGVUZXN0QXNzdW1lVkNhbGxzKSwKICAgICAgICAgICBzdGQ6Om1vdmUoRlN1bS5UeXBlQ2hlY2tlZExvYWRWQ2FsbHMpLApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Ob0ZvbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Ob0ZvbGRlci5oCmluZGV4IGRlZjA3ZmYuLjdmZDMwMzkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvTm9Gb2xkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL05vRm9sZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTm9Gb2xkZXIuaCAtIENvbnN0YW50IGZvbGRpbmcgaGVscGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvT3BlcmFuZFRyYWl0cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9PcGVyYW5kVHJhaXRzLmgKaW5kZXggYzYxOGFmZi4uOTc5YWQzNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9PcGVyYW5kVHJhaXRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9PcGVyYW5kVHJhaXRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vT3BlcmFuZFRyYWl0cy5oIC0gT3BlcmFuZFRyYWl0cyBjbGFzcyBkZWZpbml0aW9uIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvT3BlcmF0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvT3BlcmF0b3IuaAppbmRleCA2YjM4N2JiLi42MTNkNDM0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL09wZXJhdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9PcGVyYXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL09wZXJhdG9yLmggLSBPcGVyYXRvciB1dGlsaXR5IHN1YmNsYXNzIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL09wdEJpc2VjdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9PcHRCaXNlY3QuaAppbmRleCBhYTI0Yzk0Li44ZDUxYjY4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL09wdEJpc2VjdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvT3B0QmlzZWN0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9JUi9PcHRCaXNlY3QuaCAtIExMVk0gQmlzZWN0IHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1Bhc3NJbnN0cnVtZW50YXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvUGFzc0luc3RydW1lbnRhdGlvbi5oCmluZGV4IDM3MThiNTMuLmY4YTExOTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvUGFzc0luc3RydW1lbnRhdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvUGFzc0luc3RydW1lbnRhdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vSVIvUGFzc0luc3RydW1lbnRhdGlvbi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpAQCAtNjgsMTAgKzY3LDE3IEBACiAvLy8gUGFzc0luc3RydW1lbnRhdGlvbiB0byBwYXNzIGNvbnRyb2wgdG8gdGhlIHJlZ2lzdGVyZWQgY2FsbGJhY2tzLgogY2xhc3MgUGFzc0luc3RydW1lbnRhdGlvbkNhbGxiYWNrcyB7CiBwdWJsaWM6Ci0gIC8vIEJlZm9yZS9BZnRlciBjYWxsYmFja3MgYWNjZXB0IElSVW5pdHMsIHNvIHRoZXkgbmVlZCB0byB0YWtlIHRoZW0KLSAgLy8gYXMgcG9pbnRlcnMsIHdyYXBwZWQgd2l0aCBsbHZtOjpBbnkKKyAgLy8gQmVmb3JlL0FmdGVyIGNhbGxiYWNrcyBhY2NlcHQgSVJVbml0cyB3aGVuZXZlciBhcHByb3ByaWF0ZSwgc28gdGhleSBuZWVkCisgIC8vIHRvIHRha2UgdGhlbSBhcyBjb25zdGFudCBwb2ludGVycywgd3JhcHBlZCB3aXRoIGxsdm06OkFueS4KKyAgLy8gRm9yIHRoZSBjYXNlIHdoZW4gSVJVbml0IGhhcyBiZWVuIGludmFsaWRhdGVkIHRoZXJlIGlzIGEgZGlmZmVyZW50CisgIC8vIGNhbGxiYWNrIHRvIHVzZSAtIEFmdGVyUGFzc0ludmFsaWRhdGVkLgorICAvLyBUT0RPOiBjdXJyZW50bHkgQWZ0ZXJQYXNzSW52YWxpZGF0ZWQgZG9lcyBub3QgYWNjZXB0IElSVW5pdCwgc2luY2UgcGFzc2luZworICAvLyBhbHJlYWR5IGludmFsaWRhdGVkIElSVW5pdCBpcyB1bnNhZmUuIFRoZXJlIGFyZSB3YXlzIHRvIGhhbmRsZSBpbnZhbGlkYXRlZCBJUlVuaXRzCisgIC8vIGluIGEgc2FmZSB3YXksIGFuZCB3ZSBtaWdodCBwdXJzdWUgdGhhdCBhcyBzb29uIGFzIHRoZXJlIGlzIGEgdXNlZnVsIGluc3RydW1lbnRhdGlvbgorICAvLyB0aGF0IG5lZWRzIGl0LgogICB1c2luZyBCZWZvcmVQYXNzRnVuYyA9IGJvb2woU3RyaW5nUmVmLCBBbnkpOwogICB1c2luZyBBZnRlclBhc3NGdW5jID0gdm9pZChTdHJpbmdSZWYsIEFueSk7CisgIHVzaW5nIEFmdGVyUGFzc0ludmFsaWRhdGVkRnVuYyA9IHZvaWQoU3RyaW5nUmVmKTsKICAgdXNpbmcgQmVmb3JlQW5hbHlzaXNGdW5jID0gdm9pZChTdHJpbmdSZWYsIEFueSk7CiAgIHVzaW5nIEFmdGVyQW5hbHlzaXNGdW5jID0gdm9pZChTdHJpbmdSZWYsIEFueSk7CiAKQEAgLTkxLDYgKzk3LDExIEBACiAgIH0KIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2FsbGFibGVUPgorICB2b2lkIHJlZ2lzdGVyQWZ0ZXJQYXNzSW52YWxpZGF0ZWRDYWxsYmFjayhDYWxsYWJsZVQgQykgeworICAgIEFmdGVyUGFzc0ludmFsaWRhdGVkQ2FsbGJhY2tzLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoQykpOworICB9CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIENhbGxhYmxlVD4KICAgdm9pZCByZWdpc3RlckJlZm9yZUFuYWx5c2lzQ2FsbGJhY2soQ2FsbGFibGVUIEMpIHsKICAgICBCZWZvcmVBbmFseXNpc0NhbGxiYWNrcy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKEMpKTsKICAgfQpAQCAtMTA1LDYgKzExNiw4IEBACiAKICAgU21hbGxWZWN0b3I8bGx2bTo6dW5pcXVlX2Z1bmN0aW9uPEJlZm9yZVBhc3NGdW5jPiwgND4gQmVmb3JlUGFzc0NhbGxiYWNrczsKICAgU21hbGxWZWN0b3I8bGx2bTo6dW5pcXVlX2Z1bmN0aW9uPEFmdGVyUGFzc0Z1bmM+LCA0PiBBZnRlclBhc3NDYWxsYmFja3M7CisgIFNtYWxsVmVjdG9yPGxsdm06OnVuaXF1ZV9mdW5jdGlvbjxBZnRlclBhc3NJbnZhbGlkYXRlZEZ1bmM+LCA0PgorICAgICAgQWZ0ZXJQYXNzSW52YWxpZGF0ZWRDYWxsYmFja3M7CiAgIFNtYWxsVmVjdG9yPGxsdm06OnVuaXF1ZV9mdW5jdGlvbjxCZWZvcmVBbmFseXNpc0Z1bmM+LCA0PgogICAgICAgQmVmb3JlQW5hbHlzaXNDYWxsYmFja3M7CiAgIFNtYWxsVmVjdG9yPGxsdm06OnVuaXF1ZV9mdW5jdGlvbjxBZnRlckFuYWx5c2lzRnVuYz4sIDQ+CkBAIC0xMzksNyArMTUyLDggQEAKICAgfQogCiAgIC8vLyBBZnRlclBhc3MgaW5zdHJ1bWVudGF0aW9uIHBvaW50IC0gdGFrZXMgXHAgUGFzcyBpbnN0YW5jZSB0aGF0IGhhcwotICAvLy8ganVzdCBiZWVuIGV4ZWN1dGVkIGFuZCBjb25zdGFudCByZWZlcmVuY2UgdG8gSVIgaXQgb3BlcmF0ZXMgb24uCisgIC8vLyBqdXN0IGJlZW4gZXhlY3V0ZWQgYW5kIGNvbnN0YW50IHJlZmVyZW5jZSB0byBccCBJUiBpdCBvcGVyYXRlcyBvbi4KKyAgLy8vIFxwIElSIGlzIGd1YXJhbnRlZWQgdG8gYmUgdmFsaWQgYXQgdGhpcyBwb2ludC4KICAgdGVtcGxhdGUgPHR5cGVuYW1lIElSVW5pdFQsIHR5cGVuYW1lIFBhc3NUPgogICB2b2lkIHJ1bkFmdGVyUGFzcyhjb25zdCBQYXNzVCAmUGFzcywgY29uc3QgSVJVbml0VCAmSVIpIGNvbnN0IHsKICAgICBpZiAoQ2FsbGJhY2tzKQpAQCAtMTQ3LDYgKzE2MSwxNiBAQAogICAgICAgICBDKFBhc3MubmFtZSgpLCBsbHZtOjpBbnkoJklSKSk7CiAgIH0KIAorICAvLy8gQWZ0ZXJQYXNzSW52YWxpZGF0ZWQgaW5zdHJ1bWVudGF0aW9uIHBvaW50IC0gdGFrZXMgXHAgUGFzcyBpbnN0YW5jZQorICAvLy8gdGhhdCBoYXMganVzdCBiZWVuIGV4ZWN1dGVkLiBGb3IgdXNlIHdoZW4gSVIgaGFzIGJlZW4gaW52YWxpZGF0ZWQKKyAgLy8vIGJ5IFxwIFBhc3MgZXhlY3V0aW9uLgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSVJVbml0VCwgdHlwZW5hbWUgUGFzc1Q+CisgIHZvaWQgcnVuQWZ0ZXJQYXNzSW52YWxpZGF0ZWQoY29uc3QgUGFzc1QgJlBhc3MpIGNvbnN0IHsKKyAgICBpZiAoQ2FsbGJhY2tzKQorICAgICAgZm9yIChhdXRvICZDIDogQ2FsbGJhY2tzLT5BZnRlclBhc3NJbnZhbGlkYXRlZENhbGxiYWNrcykKKyAgICAgICAgQyhQYXNzLm5hbWUoKSk7CisgIH0KKwogICAvLy8gQmVmb3JlQW5hbHlzaXMgaW5zdHJ1bWVudGF0aW9uIHBvaW50IC0gdGFrZXMgXHAgQW5hbHlzaXMgaW5zdGFuY2UKICAgLy8vIHRvIGJlIGV4ZWN1dGVkIGFuZCBjb25zdGFudCByZWZlcmVuY2UgdG8gSVIgaXQgb3BlcmF0ZXMgb24uCiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJUlVuaXRULCB0eXBlbmFtZSBQYXNzVD4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvUGFzc01hbmFnZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvUGFzc01hbmFnZXIuaAppbmRleCA3MzhhMjI0Li40N2JhZDViIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1Bhc3NNYW5hZ2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9QYXNzTWFuYWdlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBhc3NNYW5hZ2VyLmggLSBQYXNzIG1hbmFnZW1lbnQgaW5mcmFzdHJ1Y3R1cmUgLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9QYXNzTWFuYWdlckludGVybmFsLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1Bhc3NNYW5hZ2VySW50ZXJuYWwuaAppbmRleCA1YWQ2OGJlLi41ODE5OGJmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1Bhc3NNYW5hZ2VySW50ZXJuYWwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1Bhc3NNYW5hZ2VySW50ZXJuYWwuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBQYXNzTWFuYWdlciBpbnRlcm5hbCBBUElzIGFuZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvUGFzc1RpbWluZ0luZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvUGFzc1RpbWluZ0luZm8uaAppbmRleCAyYzZhMGUwLi5kZGRkYmRmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1Bhc3NUaW1pbmdJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9QYXNzVGltaW5nSW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBhc3NUaW1pbmdJbmZvLmggLSBwYXNzIGV4ZWN1dGlvbiB0aW1pbmcgLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpAQCAtOTksOCArOTgsOCBAQAogICB2b2lkIHN0b3BUaW1lcihTdHJpbmdSZWYgUGFzc0lEKTsKIAogICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBwYXNzIGluc3RydW1lbnRhdGlvbiBjYWxsYmFja3MuCi0gIGJvb2wgcnVuQmVmb3JlUGFzcyhTdHJpbmdSZWYgUGFzc0lELCBBbnkgSVIpOwotICB2b2lkIHJ1bkFmdGVyUGFzcyhTdHJpbmdSZWYgUGFzc0lELCBBbnkgSVIpOworICBib29sIHJ1bkJlZm9yZVBhc3MoU3RyaW5nUmVmIFBhc3NJRCk7CisgIHZvaWQgcnVuQWZ0ZXJQYXNzKFN0cmluZ1JlZiBQYXNzSUQpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgbGx2bQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9QYXR0ZXJuTWF0Y2guaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvUGF0dGVybk1hdGNoLmgKaW5kZXggN2MwNTgzNC4uNmM1MWQ0OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9QYXR0ZXJuTWF0Y2guaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1BhdHRlcm5NYXRjaC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBhdHRlcm5NYXRjaC5oIC0gTWF0Y2ggb24gdGhlIExMVk0gSVIgLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zMSw3ICszMCw2IEBACiAKICNpbmNsdWRlICJsbHZtL0FEVC9BUEZsb2F0LmgiCiAjaW5jbHVkZSAibGx2bS9BRFQvQVBJbnQuaCIKLSNpbmNsdWRlICJsbHZtL0lSL0NhbGxTaXRlLmgiCiAjaW5jbHVkZSAibGx2bS9JUi9Db25zdGFudC5oIgogI2luY2x1ZGUgImxsdm0vSVIvQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAibGx2bS9JUi9JbnN0clR5cGVzLmgiCkBAIC0yMTUsNiArMjEzLDcgQEAKICAgICAgICAgLy8gTm9uLXNwbGF0IHZlY3RvciBjb25zdGFudDogY2hlY2sgZWFjaCBlbGVtZW50IGZvciBhIG1hdGNoLgogICAgICAgICB1bnNpZ25lZCBOdW1FbHRzID0gVi0+Z2V0VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpOwogICAgICAgICBhc3NlcnQoTnVtRWx0cyAhPSAwICYmICJDb25zdGFudCB2ZWN0b3Igd2l0aCBubyBlbGVtZW50cz8iKTsKKyAgICAgICAgYm9vbCBIYXNOb25VbmRlZkVsZW1lbnRzID0gZmFsc2U7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gTnVtRWx0czsgKytpKSB7CiAgICAgICAgICAgQ29uc3RhbnQgKkVsdCA9IEMtPmdldEFnZ3JlZ2F0ZUVsZW1lbnQoaSk7CiAgICAgICAgICAgaWYgKCFFbHQpCkBAIC0yMjQsOCArMjIzLDkgQEAKICAgICAgICAgICBhdXRvICpDSSA9IGR5bl9jYXN0PENvbnN0YW50SW50PihFbHQpOwogICAgICAgICAgIGlmICghQ0kgfHwgIXRoaXMtPmlzVmFsdWUoQ0ktPmdldFZhbHVlKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIEhhc05vblVuZGVmRWxlbWVudHMgPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gSGFzTm9uVW5kZWZFbGVtZW50czsKICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjcyLDYgKzI3Miw3IEBACiAgICAgICAgIC8vIE5vbi1zcGxhdCB2ZWN0b3IgY29uc3RhbnQ6IGNoZWNrIGVhY2ggZWxlbWVudCBmb3IgYSBtYXRjaC4KICAgICAgICAgdW5zaWduZWQgTnVtRWx0cyA9IFYtPmdldFR5cGUoKS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKTsKICAgICAgICAgYXNzZXJ0KE51bUVsdHMgIT0gMCAmJiAiQ29uc3RhbnQgdmVjdG9yIHdpdGggbm8gZWxlbWVudHM/Iik7CisgICAgICAgIGJvb2wgSGFzTm9uVW5kZWZFbGVtZW50cyA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IE51bUVsdHM7ICsraSkgewogICAgICAgICAgIENvbnN0YW50ICpFbHQgPSBDLT5nZXRBZ2dyZWdhdGVFbGVtZW50KGkpOwogICAgICAgICAgIGlmICghRWx0KQpAQCAtMjgxLDggKzI4Miw5IEBACiAgICAgICAgICAgYXV0byAqQ0YgPSBkeW5fY2FzdDxDb25zdGFudEZQPihFbHQpOwogICAgICAgICAgIGlmICghQ0YgfHwgIXRoaXMtPmlzVmFsdWUoQ0YtPmdldFZhbHVlQVBGKCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIEhhc05vblVuZGVmRWxlbWVudHMgPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gSGFzTm9uVW5kZWZFbGVtZW50czsKICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjU5LDExICs2NjEsMzIgQEAKICAgcmV0dXJuIEJpbmFyeU9wX21hdGNoPExIUywgUkhTLCBJbnN0cnVjdGlvbjo6RlN1Yj4oTCwgUik7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBPcF90PiBzdHJ1Y3QgRk5lZ19tYXRjaCB7CisgIE9wX3QgWDsKKworICBGTmVnX21hdGNoKGNvbnN0IE9wX3QgJk9wKSA6IFgoT3ApIHt9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBPcFR5PiBib29sIG1hdGNoKE9wVHkgKlYpIHsKKyAgICBhdXRvICpGUE1PID0gZHluX2Nhc3Q8RlBNYXRoT3BlcmF0b3I+KFYpOworICAgIGlmICghRlBNTyB8fCBGUE1PLT5nZXRPcGNvZGUoKSAhPSBJbnN0cnVjdGlvbjo6RlN1YikKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoRlBNTy0+aGFzTm9TaWduZWRaZXJvcygpKSB7CisgICAgICAvLyBXaXRoICduc3onLCBhbnkgemVybyBnb2VzLgorICAgICAgaWYgKCFjc3RmcF9wcmVkX3R5PGlzX2FueV96ZXJvX2ZwPigpLm1hdGNoKEZQTU8tPmdldE9wZXJhbmQoMCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgIC8vIFdpdGhvdXQgJ25zeicsIHdlIG5lZWQgZnN1YiAtMC4wLCBYIGV4YWN0bHkuCisgICAgICBpZiAoIWNzdGZwX3ByZWRfdHk8aXNfbmVnX3plcm9fZnA+KCkubWF0Y2goRlBNTy0+Z2V0T3BlcmFuZCgwKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIFgubWF0Y2goRlBNTy0+Z2V0T3BlcmFuZCgxKSk7CisgIH0KK307CisKIC8vLyBNYXRjaCAnZm5lZyBYJyBhcyAnZnN1YiAtMC4wLCBYJy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBSSFM+Ci1pbmxpbmUgQmluYXJ5T3BfbWF0Y2g8Y3N0ZnBfcHJlZF90eTxpc19uZWdfemVyb19mcD4sIFJIUywgSW5zdHJ1Y3Rpb246OkZTdWI+Ci1tX0ZOZWcoY29uc3QgUkhTICZYKSB7Ci0gIHJldHVybiBtX0ZTdWIobV9OZWdaZXJvRlAoKSwgWCk7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BUeT4KK2lubGluZSBGTmVnX21hdGNoPE9wVHk+CittX0ZOZWcoY29uc3QgT3BUeSAmWCkgeworICByZXR1cm4gRk5lZ19tYXRjaDxPcFR5PihYKTsKIH0KIAogLy8vIE1hdGNoICdmbmVnIFgnIGFzICdmc3ViICstMC4wLCBYJy4KQEAgLTE0NDAsNiArMTQ2MywyMCBAQAogICAgICAgaWYgKEFkZEV4cHIubWF0Y2goSUNtcFJIUykgJiYgKElDbXBMSFMgPT0gQWRkTEhTIHx8IElDbXBMSFMgPT0gQWRkUkhTKSkKICAgICAgICAgcmV0dXJuIEwubWF0Y2goQWRkTEhTKSAmJiBSLm1hdGNoKEFkZFJIUykgJiYgUy5tYXRjaChJQ21wUkhTKTsKIAorICAgIC8vIE1hdGNoIHNwZWNpYWwtY2FzZSBmb3IgaW5jcmVtZW50LWJ5LTEuCisgICAgaWYgKFByZWQgPT0gSUNtcEluc3Q6OklDTVBfRVEpIHsKKyAgICAgIC8vIChhICsgMSkgPT0gMAorICAgICAgLy8gKDEgKyBhKSA9PSAwCisgICAgICBpZiAoQWRkRXhwci5tYXRjaChJQ21wTEhTKSAmJiBtX1plcm9JbnQoKS5tYXRjaChJQ21wUkhTKSAmJgorICAgICAgICAgIChtX09uZSgpLm1hdGNoKEFkZExIUykgfHwgbV9PbmUoKS5tYXRjaChBZGRSSFMpKSkKKyAgICAgICAgcmV0dXJuIEwubWF0Y2goQWRkTEhTKSAmJiBSLm1hdGNoKEFkZFJIUykgJiYgUy5tYXRjaChJQ21wTEhTKTsKKyAgICAgIC8vIDAgPT0gKGEgKyAxKQorICAgICAgLy8gMCA9PSAoMSArIGEpCisgICAgICBpZiAobV9aZXJvSW50KCkubWF0Y2goSUNtcExIUykgJiYgQWRkRXhwci5tYXRjaChJQ21wUkhTKSAmJgorICAgICAgICAgIChtX09uZSgpLm1hdGNoKEFkZExIUykgfHwgbV9PbmUoKS5tYXRjaChBZGRSSFMpKSkKKyAgICAgICAgcmV0dXJuIEwubWF0Y2goQWRkTEhTKSAmJiBSLm1hdGNoKEFkZFJIUykgJiYgUy5tYXRjaChJQ21wUkhTKTsKKyAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KIH07CkBAIC0xNDYxLDggKzE0OTgsMTAgQEAKICAgQXJndW1lbnRfbWF0Y2godW5zaWduZWQgT3BJZHgsIGNvbnN0IE9wbmRfdCAmVikgOiBPcEkoT3BJZHgpLCBWYWwoVikge30KIAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3BUeT4gYm9vbCBtYXRjaChPcFR5ICpWKSB7Ci0gICAgQ2FsbFNpdGUgQ1MoVik7Ci0gICAgcmV0dXJuIENTLmlzQ2FsbCgpICYmIFZhbC5tYXRjaChDUy5nZXRBcmd1bWVudChPcEkpKTsKKyAgICAvLyBGSVhNRTogU2hvdWxkIGxpa2VseSBiZSBzd2l0Y2hlZCB0byB1c2UgYENhbGxCYXNlYC4KKyAgICBpZiAoY29uc3QgYXV0byAqQ0kgPSBkeW5fY2FzdDxDYWxsSW5zdD4oVikpCisgICAgICByZXR1cm4gVmFsLm1hdGNoKENJLT5nZXRBcmdPcGVyYW5kKE9wSSkpOworICAgIHJldHVybiBmYWxzZTsKICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9QcmVkSXRlcmF0b3JDYWNoZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9QcmVkSXRlcmF0b3JDYWNoZS5oCmluZGV4IDgxZjUzNTMuLmNjODM1MjcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvUHJlZEl0ZXJhdG9yQ2FjaGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1ByZWRJdGVyYXRvckNhY2hlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUHJlZEl0ZXJhdG9yQ2FjaGUuaCAtIHByZWRfaXRlcmF0b3IgQ2FjaGUgLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvUHJvZmlsZVN1bW1hcnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvUHJvZmlsZVN1bW1hcnkuaAppbmRleCBlMzg2NjM3Li5mMWQ0OWNjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1Byb2ZpbGVTdW1tYXJ5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Qcm9maWxlU3VtbWFyeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFByb2ZpbGVTdW1tYXJ5LmggLSBQcm9maWxlIHN1bW1hcnkgZGF0YSBzdHJ1Y3R1cmUuIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1J1bnRpbWVMaWJjYWxscy5kZWYgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1J1bnRpbWVMaWJjYWxscy5kZWYKaW5kZXggODkwMDUxMi4uOWQ3MjY4ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9SdW50aW1lTGliY2FsbHMuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvUnVudGltZUxpYmNhbGxzLmRlZgpAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9SdW50aW1lTGliY2FsbHMuZGVmIC0gRmlsZSB0aGF0IGRlc2NyaWJlcyBsaWJjYWxscyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9TYWZlcG9pbnRJUlZlcmlmaWVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1NhZmVwb2ludElSVmVyaWZpZXIuaAppbmRleCAwOTIwNTBkLi5jYmRiOGJkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1NhZmVwb2ludElSVmVyaWZpZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1NhZmVwb2ludElSVmVyaWZpZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTYWZlcG9pbnRJUlZlcmlmaWVyLmggLSBDaGVja3MgZm9yIEdDIHJlbG9jYXRpb24gcHJvYmxlbXMgKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9TdGF0ZXBvaW50LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1N0YXRlcG9pbnQuaAppbmRleCA4OTA4ZTFiLi5hZWMwZTliIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1N0YXRlcG9pbnQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1N0YXRlcG9pbnQuaApAQCAtMSwxNCArMSwxMyBAQAogLy89PT0tIGxsdm0vSVIvU3RhdGVwb2ludC5oIC0gZ2Muc3RhdGVwb2ludCB1dGlsaXRpZXMgLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCiAvLyBUaGlzIGZpbGUgY29udGFpbnMgdXRpbGl0eSBmdW5jdGlvbnMgYW5kIGEgd3JhcHBlciBjbGFzcyBhbmFsb2dvdXMgdG8KLS8vIENhbGxTaXRlIGZvciBhY2Nlc3NpbmcgdGhlIGZpZWxkcyBvZiBnYy5zdGF0ZXBvaW50LCBnYy5yZWxvY2F0ZSwKKy8vIENhbGxCYXNlIGZvciBhY2Nlc3NpbmcgdGhlIGZpZWxkcyBvZiBnYy5zdGF0ZXBvaW50LCBnYy5yZWxvY2F0ZSwKIC8vIGdjLnJlc3VsdCBpbnRyaW5zaWNzOyBhbmQgc29tZSBnZW5lcmFsIHV0aWxpdGllcyBoZWxwZnVsIHdoZW4gZGVhbGluZyB3aXRoCiAvLyBnYy5zdGF0ZXBvaW50LgogLy8KQEAgLTIxLDcgKzIwLDYgQEAKICNpbmNsdWRlICJsbHZtL0FEVC9pdGVyYXRvcl9yYW5nZS5oIgogI2luY2x1ZGUgImxsdm0vSVIvQXR0cmlidXRlcy5oIgogI2luY2x1ZGUgImxsdm0vSVIvQmFzaWNCbG9jay5oIgotI2luY2x1ZGUgImxsdm0vSVIvQ2FsbFNpdGUuaCIKICNpbmNsdWRlICJsbHZtL0lSL0NvbnN0YW50cy5oIgogI2luY2x1ZGUgImxsdm0vSVIvRnVuY3Rpb24uaCIKICNpbmNsdWRlICJsbHZtL0lSL0luc3RydWN0aW9uLmgiCkBAIC01Nyw0MiArNTUsMzkgQEAKIGNsYXNzIEdDUmVsb2NhdGVJbnN0OwogY2xhc3MgR0NSZXN1bHRJbnN0OwogCi1ib29sIGlzU3RhdGVwb2ludChJbW11dGFibGVDYWxsU2l0ZSBDUyk7Citib29sIGlzU3RhdGVwb2ludChjb25zdCBDYWxsQmFzZSAqQ2FsbCk7CiBib29sIGlzU3RhdGVwb2ludChjb25zdCBWYWx1ZSAqVik7CiBib29sIGlzU3RhdGVwb2ludChjb25zdCBWYWx1ZSAmVik7CiAKLWJvb2wgaXNHQ1JlbG9jYXRlKEltbXV0YWJsZUNhbGxTaXRlIENTKTsKK2Jvb2wgaXNHQ1JlbG9jYXRlKGNvbnN0IENhbGxCYXNlICpDYWxsKTsKIGJvb2wgaXNHQ1JlbG9jYXRlKGNvbnN0IFZhbHVlICpWKTsKIAotYm9vbCBpc0dDUmVzdWx0KEltbXV0YWJsZUNhbGxTaXRlIENTKTsKK2Jvb2wgaXNHQ1Jlc3VsdChjb25zdCBDYWxsQmFzZSAqQ2FsbCk7CiBib29sIGlzR0NSZXN1bHQoY29uc3QgVmFsdWUgKlYpOwogCi0vLy8gQW5hbG9nb3VzIHRvIENhbGxTaXRlQmFzZSwgdGhpcyBwcm92aWRlcyBtb3N0IG9mIHRoZSBhY3R1YWwKKy8vLyBBIHdyYXBwZXIgYXJvdW5kIGEgR0MgaW50cmluc2ljIGNhbGwsIHRoaXMgcHJvdmlkZXMgbW9zdCBvZiB0aGUgYWN0dWFsCiAvLy8gZnVuY3Rpb25hbGl0eSBmb3IgU3RhdGVwb2ludCBhbmQgSW1tdXRhYmxlU3RhdGVwb2ludC4gIEl0IGlzCiAvLy8gdGVtcGxhdGl6ZWQgdG8gYWxsb3cgZWFzaWx5IHNwZWNpYWxpemluZyBvZiBjb25zdCBhbmQgbm9uLWNvbnN0Ci0vLy8gY29uY3JldGUgc3VidHlwZXMuICBUaGlzIGlzIHN0cnVjdHVyZWQgYW5hbG9nb3VzIHRvIENhbGxTaXRlCi0vLy8gcmF0aGVyIHRoYW4gdGhlIEludHJpbnNpY0luc3QuaCBoZWxwZXJzIHNpbmNlIHdlIG5lZWQgdG8gc3VwcG9ydAotLy8vIGludm9rYWJsZSBzdGF0ZXBvaW50cy4KKy8vLyBjb25jcmV0ZSBzdWJ0eXBlcy4KIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5UeSwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb25UeSwgdHlwZW5hbWUgVmFsdWVUeSwKLSAgICAgICAgICB0eXBlbmFtZSBDYWxsU2l0ZVR5PgorICAgICAgICAgIHR5cGVuYW1lIENhbGxCYXNlVHk+CiBjbGFzcyBTdGF0ZXBvaW50QmFzZSB7Ci0gIENhbGxTaXRlVHkgU3RhdGVwb2ludENTOworICBDYWxsQmFzZVR5ICpTdGF0ZXBvaW50Q2FsbDsKIAogcHJvdGVjdGVkOgogICBleHBsaWNpdCBTdGF0ZXBvaW50QmFzZShJbnN0cnVjdGlvblR5ICpJKSB7CiAgICAgaWYgKGlzU3RhdGVwb2ludChJKSkgewotICAgICAgU3RhdGVwb2ludENTID0gQ2FsbFNpdGVUeShJKTsKLSAgICAgIGFzc2VydChTdGF0ZXBvaW50Q1MgJiYgImlzU3RhdGVwb2ludCBpbXBsaWVzIENhbGxTaXRlIik7CisgICAgICBTdGF0ZXBvaW50Q2FsbCA9IGNhc3Q8Q2FsbEJhc2VUeT4oSSk7CiAgICAgfQogICB9CiAKLSAgZXhwbGljaXQgU3RhdGVwb2ludEJhc2UoQ2FsbFNpdGVUeSBDUykgewotICAgIGlmIChpc1N0YXRlcG9pbnQoQ1MpKQotICAgICAgU3RhdGVwb2ludENTID0gQ1M7CisgIGV4cGxpY2l0IFN0YXRlcG9pbnRCYXNlKENhbGxCYXNlVHkgKkNhbGwpIHsKKyAgICBpZiAoaXNTdGF0ZXBvaW50KENhbGwpKQorICAgICAgU3RhdGVwb2ludENhbGwgPSBDYWxsOwogICB9CiAKIHB1YmxpYzoKLSAgdXNpbmcgYXJnX2l0ZXJhdG9yID0gdHlwZW5hbWUgQ2FsbFNpdGVUeTo6YXJnX2l0ZXJhdG9yOworICB1c2luZyBhcmdfaXRlcmF0b3IgPSB0eXBlbmFtZSBDYWxsQmFzZVR5Ojpjb25zdF9vcF9pdGVyYXRvcjsKIAogICBlbnVtIHsKICAgICBJRFBvcyA9IDAsCkBAIC0xMDcsMzAgKzEwMiwzMCBAQAogICB2b2lkICpvcGVyYXRvciBuZXcoc2l6ZV90IHMpID0gZGVsZXRlOwogCiAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7Ci0gICAgLy8gV2UgZG8gbm90IGFzc2lnbiBub24tc3RhdGVwb2ludCBDYWxsU2l0ZXMgdG8gU3RhdGVwb2ludENTLgotICAgIHJldHVybiAoYm9vbClTdGF0ZXBvaW50Q1M7CisgICAgLy8gV2UgZG8gbm90IGFzc2lnbiBub24tc3RhdGVwb2ludCBjYWxsIGluc3RydWN0aW9ucyB0byBTdGF0ZXBvaW50Q2FsbC4KKyAgICByZXR1cm4gKGJvb2wpU3RhdGVwb2ludENhbGw7CiAgIH0KIAotICAvLy8gUmV0dXJuIHRoZSB1bmRlcmx5aW5nIENhbGxTaXRlLgotICBDYWxsU2l0ZVR5IGdldENhbGxTaXRlKCkgY29uc3QgeworICAvLy8gUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGNhbGwgaW5zdHJ1Y3Rpb24uCisgIENhbGxCYXNlVHkgKmdldENhbGwoKSBjb25zdCB7CiAgICAgYXNzZXJ0KCp0aGlzICYmICJjaGVjayB2YWxpZGl0eSBmaXJzdCEiKTsKLSAgICByZXR1cm4gU3RhdGVwb2ludENTOworICAgIHJldHVybiBTdGF0ZXBvaW50Q2FsbDsKICAgfQogCiAgIHVpbnQ2NF90IGdldEZsYWdzKCkgY29uc3QgewotICAgIHJldHVybiBjYXN0PENvbnN0YW50SW50PihnZXRDYWxsU2l0ZSgpLmdldEFyZ3VtZW50KEZsYWdzUG9zKSkKKyAgICByZXR1cm4gY2FzdDxDb25zdGFudEludD4oZ2V0Q2FsbCgpLT5nZXRBcmdPcGVyYW5kKEZsYWdzUG9zKSkKICAgICAgICAgLT5nZXRaRXh0VmFsdWUoKTsKICAgfQogCiAgIC8vLyBSZXR1cm4gdGhlIElEIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN0YXRlcG9pbnQuCiAgIHVpbnQ2NF90IGdldElEKCkgY29uc3QgewotICAgIGNvbnN0IFZhbHVlICpJRFZhbCA9IGdldENhbGxTaXRlKCkuZ2V0QXJndW1lbnQoSURQb3MpOworICAgIGNvbnN0IFZhbHVlICpJRFZhbCA9IGdldENhbGwoKS0+Z2V0QXJnT3BlcmFuZChJRFBvcyk7CiAgICAgcmV0dXJuIGNhc3Q8Q29uc3RhbnRJbnQ+KElEVmFsKS0+Z2V0WkV4dFZhbHVlKCk7CiAgIH0KIAogICAvLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgcGF0Y2hhYmxlIGJ5dGVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN0YXRlcG9pbnQuCiAgIHVpbnQzMl90IGdldE51bVBhdGNoQnl0ZXMoKSBjb25zdCB7Ci0gICAgY29uc3QgVmFsdWUgKk51bVBhdGNoQnl0ZXNWYWwgPSBnZXRDYWxsU2l0ZSgpLmdldEFyZ3VtZW50KE51bVBhdGNoQnl0ZXNQb3MpOworICAgIGNvbnN0IFZhbHVlICpOdW1QYXRjaEJ5dGVzVmFsID0gZ2V0Q2FsbCgpLT5nZXRBcmdPcGVyYW5kKE51bVBhdGNoQnl0ZXNQb3MpOwogICAgIHVpbnQ2NF90IE51bVBhdGNoQnl0ZXMgPQogICAgICAgY2FzdDxDb25zdGFudEludD4oTnVtUGF0Y2hCeXRlc1ZhbCktPmdldFpFeHRWYWx1ZSgpOwogICAgIGFzc2VydChpc0ludDwzMj4oTnVtUGF0Y2hCeXRlcykgJiYgInNob3VsZCBmaXQgaW4gMzIgYml0cyEiKTsKQEAgLTEzOSwxMiArMTM0LDExIEBACiAKICAgLy8vIFJldHVybiB0aGUgdmFsdWUgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIG9yIGludm9rZWQuCiAgIFZhbHVlVHkgKmdldENhbGxlZFZhbHVlKCkgY29uc3QgewotICAgIHJldHVybiBnZXRDYWxsU2l0ZSgpLmdldEFyZ3VtZW50KENhbGxlZEZ1bmN0aW9uUG9zKTsKKyAgICByZXR1cm4gZ2V0Q2FsbCgpLT5nZXRBcmdPcGVyYW5kKENhbGxlZEZ1bmN0aW9uUG9zKTsKICAgfQogCi0gIEluc3RydWN0aW9uVHkgKmdldEluc3RydWN0aW9uKCkgY29uc3QgewotICAgIHJldHVybiBnZXRDYWxsU2l0ZSgpLmdldEluc3RydWN0aW9uKCk7Ci0gIH0KKyAgLy8gRklYTUU6IE1pZ3JhdGUgdXNlcnMgb2YgdGhpcyB0byBgZ2V0Q2FsbGAgYW5kIHJlbW92ZSBpdC4KKyAgSW5zdHJ1Y3Rpb25UeSAqZ2V0SW5zdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBnZXRDYWxsKCk7IH0KIAogICAvLy8gUmV0dXJuIHRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQgaWYgdGhpcyBpcyBhIGRpcmVjdCBjYWxsLCBvdGhlcndpc2UKICAgLy8vIHJldHVybiBudWxsIChpZiBpdCdzIGFuIGluZGlyZWN0IGNhbGwpLgpAQCAtMTUzLDEyICsxNDcsMTIgQEAKICAgfQogCiAgIC8vLyBSZXR1cm4gdGhlIGNhbGxlciBmdW5jdGlvbiBmb3IgdGhpcyBzdGF0ZXBvaW50LgotICBGdW5UeSAqZ2V0Q2FsbGVyKCkgY29uc3QgeyByZXR1cm4gZ2V0Q2FsbFNpdGUoKS5nZXRDYWxsZXIoKTsgfQorICBGdW5UeSAqZ2V0Q2FsbGVyKCkgY29uc3QgeyByZXR1cm4gZ2V0Q2FsbCgpLT5nZXRDYWxsZXIoKTsgfQogCiAgIC8vLyBEZXRlcm1pbmUgaWYgdGhlIHN0YXRlcG9pbnQgY2Fubm90IHVud2luZC4KICAgYm9vbCBkb2VzTm90VGhyb3coKSBjb25zdCB7CiAgICAgRnVuY3Rpb24gKkYgPSBnZXRDYWxsZWRGdW5jdGlvbigpOwotICAgIHJldHVybiBnZXRDYWxsU2l0ZSgpLmRvZXNOb3RUaHJvdygpIHx8IChGID8gRi0+ZG9lc05vdFRocm93KCkgOiBmYWxzZSk7CisgICAgcmV0dXJuIGdldENhbGwoKS0+ZG9lc05vdFRocm93KCkgfHwgKEYgPyBGLT5kb2VzTm90VGhyb3coKSA6IGZhbHNlKTsKICAgfQogCiAgIC8vLyBSZXR1cm4gdGhlIHR5cGUgb2YgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBjYWxsIHVuZGVybHlpbmcgdGhlCkBAIC0xNzEsMTggKzE2NSwxOCBAQAogCiAgIC8vLyBOdW1iZXIgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgYWN0dWFsIGNhbGxlZS4KICAgaW50IGdldE51bUNhbGxBcmdzKCkgY29uc3QgewotICAgIGNvbnN0IFZhbHVlICpOdW1DYWxsQXJnc1ZhbCA9IGdldENhbGxTaXRlKCkuZ2V0QXJndW1lbnQoTnVtQ2FsbEFyZ3NQb3MpOworICAgIGNvbnN0IFZhbHVlICpOdW1DYWxsQXJnc1ZhbCA9IGdldENhbGwoKS0+Z2V0QXJnT3BlcmFuZChOdW1DYWxsQXJnc1Bvcyk7CiAgICAgcmV0dXJuIGNhc3Q8Q29uc3RhbnRJbnQ+KE51bUNhbGxBcmdzVmFsKS0+Z2V0WkV4dFZhbHVlKCk7CiAgIH0KIAogICBzaXplX3QgYXJnX3NpemUoKSBjb25zdCB7IHJldHVybiBnZXROdW1DYWxsQXJncygpOyB9Ci0gIHR5cGVuYW1lIENhbGxTaXRlVHk6OmFyZ19pdGVyYXRvciBhcmdfYmVnaW4oKSBjb25zdCB7Ci0gICAgYXNzZXJ0KENhbGxBcmdzQmVnaW5Qb3MgPD0gKGludClnZXRDYWxsU2l0ZSgpLmFyZ19zaXplKCkpOwotICAgIHJldHVybiBnZXRDYWxsU2l0ZSgpLmFyZ19iZWdpbigpICsgQ2FsbEFyZ3NCZWdpblBvczsKKyAgYXJnX2l0ZXJhdG9yIGFyZ19iZWdpbigpIGNvbnN0IHsKKyAgICBhc3NlcnQoQ2FsbEFyZ3NCZWdpblBvcyA8PSAoaW50KWdldENhbGwoKS0+YXJnX3NpemUoKSk7CisgICAgcmV0dXJuIGdldENhbGwoKS0+YXJnX2JlZ2luKCkgKyBDYWxsQXJnc0JlZ2luUG9zOwogICB9Ci0gIHR5cGVuYW1lIENhbGxTaXRlVHk6OmFyZ19pdGVyYXRvciBhcmdfZW5kKCkgY29uc3QgeworICBhcmdfaXRlcmF0b3IgYXJnX2VuZCgpIGNvbnN0IHsKICAgICBhdXRvIEkgPSBhcmdfYmVnaW4oKSArIGFyZ19zaXplKCk7Ci0gICAgYXNzZXJ0KChnZXRDYWxsU2l0ZSgpLmFyZ19lbmQoKSAtIEkpID49IDApOworICAgIGFzc2VydCgoZ2V0Q2FsbCgpLT5hcmdfZW5kKCkgLSBJKSA+PSAwKTsKICAgICByZXR1cm4gSTsKICAgfQogCkBAIC0xOTksOCArMTkzLDggQEAKICAgLy8vIFJldHVybiB0cnVlIGlmIHRoZSBjYWxsIG9yIHRoZSBjYWxsZWUgaGFzIHRoZSBnaXZlbiBhdHRyaWJ1dGUuCiAgIGJvb2wgcGFyYW1IYXNBdHRyKHVuc2lnbmVkIGksIEF0dHJpYnV0ZTo6QXR0cktpbmQgQSkgY29uc3QgewogICAgIEZ1bmN0aW9uICpGID0gZ2V0Q2FsbGVkRnVuY3Rpb24oKTsKLSAgICByZXR1cm4gZ2V0Q2FsbFNpdGUoKS5wYXJhbUhhc0F0dHIoaSArIENhbGxBcmdzQmVnaW5Qb3MsIEEpIHx8Ci0gICAgICAgICAgKEYgPyBGLT5nZXRBdHRyaWJ1dGVzKCkuaGFzQXR0cmlidXRlKGksIEEpIDogZmFsc2UpOworICAgIHJldHVybiBnZXRDYWxsKCktPnBhcmFtSGFzQXR0cihpICsgQ2FsbEFyZ3NCZWdpblBvcywgQSkgfHwKKyAgICAgICAgICAgKEYgPyBGLT5nZXRBdHRyaWJ1dGVzKCkuaGFzQXR0cmlidXRlKGksIEEpIDogZmFsc2UpOwogICB9CiAKICAgLy8vIE51bWJlciBvZiBHQyB0cmFuc2l0aW9uIGFyZ3MuCkBAIC0yMDgsMTQgKzIwMiwxNCBAQAogICAgIGNvbnN0IFZhbHVlICpOdW1HQ1RyYW5zaXRpb25BcmdzID0gKmFyZ19lbmQoKTsKICAgICByZXR1cm4gY2FzdDxDb25zdGFudEludD4oTnVtR0NUcmFuc2l0aW9uQXJncyktPmdldFpFeHRWYWx1ZSgpOwogICB9Ci0gIHR5cGVuYW1lIENhbGxTaXRlVHk6OmFyZ19pdGVyYXRvciBnY190cmFuc2l0aW9uX2FyZ3NfYmVnaW4oKSBjb25zdCB7CisgIGFyZ19pdGVyYXRvciBnY190cmFuc2l0aW9uX2FyZ3NfYmVnaW4oKSBjb25zdCB7CiAgICAgYXV0byBJID0gYXJnX2VuZCgpICsgMTsKLSAgICBhc3NlcnQoKGdldENhbGxTaXRlKCkuYXJnX2VuZCgpIC0gSSkgPj0gMCk7CisgICAgYXNzZXJ0KChnZXRDYWxsKCktPmFyZ19lbmQoKSAtIEkpID49IDApOwogICAgIHJldHVybiBJOwogICB9Ci0gIHR5cGVuYW1lIENhbGxTaXRlVHk6OmFyZ19pdGVyYXRvciBnY190cmFuc2l0aW9uX2FyZ3NfZW5kKCkgY29uc3QgeworICBhcmdfaXRlcmF0b3IgZ2NfdHJhbnNpdGlvbl9hcmdzX2VuZCgpIGNvbnN0IHsKICAgICBhdXRvIEkgPSBnY190cmFuc2l0aW9uX2FyZ3NfYmVnaW4oKSArIGdldE51bVRvdGFsR0NUcmFuc2l0aW9uQXJncygpOwotICAgIGFzc2VydCgoZ2V0Q2FsbFNpdGUoKS5hcmdfZW5kKCkgLSBJKSA+PSAwKTsKKyAgICBhc3NlcnQoKGdldENhbGwoKS0+YXJnX2VuZCgpIC0gSSkgPj0gMCk7CiAgICAgcmV0dXJuIEk7CiAgIH0KIApAQCAtMjMxLDE0ICsyMjUsMTQgQEAKICAgICByZXR1cm4gY2FzdDxDb25zdGFudEludD4oTnVtVk1TQXJncyktPmdldFpFeHRWYWx1ZSgpOwogICB9CiAKLSAgdHlwZW5hbWUgQ2FsbFNpdGVUeTo6YXJnX2l0ZXJhdG9yIGRlb3B0X2JlZ2luKCkgY29uc3QgeworICBhcmdfaXRlcmF0b3IgZGVvcHRfYmVnaW4oKSBjb25zdCB7CiAgICAgYXV0byBJID0gZ2NfdHJhbnNpdGlvbl9hcmdzX2VuZCgpICsgMTsKLSAgICBhc3NlcnQoKGdldENhbGxTaXRlKCkuYXJnX2VuZCgpIC0gSSkgPj0gMCk7CisgICAgYXNzZXJ0KChnZXRDYWxsKCktPmFyZ19lbmQoKSAtIEkpID49IDApOwogICAgIHJldHVybiBJOwogICB9Ci0gIHR5cGVuYW1lIENhbGxTaXRlVHk6OmFyZ19pdGVyYXRvciBkZW9wdF9lbmQoKSBjb25zdCB7CisgIGFyZ19pdGVyYXRvciBkZW9wdF9lbmQoKSBjb25zdCB7CiAgICAgYXV0byBJID0gZGVvcHRfYmVnaW4oKSArIGdldE51bVRvdGFsVk1TQXJncygpOwotICAgIGFzc2VydCgoZ2V0Q2FsbFNpdGUoKS5hcmdfZW5kKCkgLSBJKSA+PSAwKTsKKyAgICBhc3NlcnQoKGdldENhbGwoKS0+YXJnX2VuZCgpIC0gSSkgPj0gMCk7CiAgICAgcmV0dXJuIEk7CiAgIH0KIApAQCAtMjQ3LDE1ICsyNDEsMTEgQEAKICAgICByZXR1cm4gbWFrZV9yYW5nZShkZW9wdF9iZWdpbigpLCBkZW9wdF9lbmQoKSk7CiAgIH0KIAotICB0eXBlbmFtZSBDYWxsU2l0ZVR5OjphcmdfaXRlcmF0b3IgZ2NfYXJnc19iZWdpbigpIGNvbnN0IHsKLSAgICByZXR1cm4gZGVvcHRfZW5kKCk7Ci0gIH0KLSAgdHlwZW5hbWUgQ2FsbFNpdGVUeTo6YXJnX2l0ZXJhdG9yIGdjX2FyZ3NfZW5kKCkgY29uc3QgewotICAgIHJldHVybiBnZXRDYWxsU2l0ZSgpLmFyZ19lbmQoKTsKLSAgfQorICBhcmdfaXRlcmF0b3IgZ2NfYXJnc19iZWdpbigpIGNvbnN0IHsgcmV0dXJuIGRlb3B0X2VuZCgpOyB9CisgIGFyZ19pdGVyYXRvciBnY19hcmdzX2VuZCgpIGNvbnN0IHsgcmV0dXJuIGdldENhbGwoKS0+YXJnX2VuZCgpOyB9CiAKICAgdW5zaWduZWQgZ2NBcmdzU3RhcnRJZHgoKSBjb25zdCB7Ci0gICAgcmV0dXJuIGdjX2FyZ3NfYmVnaW4oKSAtIGdldEluc3RydWN0aW9uKCktPm9wX2JlZ2luKCk7CisgICAgcmV0dXJuIGdjX2FyZ3NfYmVnaW4oKSAtIGdldENhbGwoKS0+b3BfYmVnaW4oKTsKICAgfQogCiAgIC8vLyByYW5nZSBhZGFwdGVyIGZvciBnYyBhcmd1bWVudHMKQEAgLTMwNCwyNSArMjk0LDI0IEBACiAvLy8gdG8gYSBnYy5zdGF0ZXBvaW50LgogY2xhc3MgSW1tdXRhYmxlU3RhdGVwb2ludAogICAgIDogcHVibGljIFN0YXRlcG9pbnRCYXNlPGNvbnN0IEZ1bmN0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiwgY29uc3QgVmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1tdXRhYmxlQ2FsbFNpdGU+IHsKLSAgdXNpbmcgQmFzZSA9Ci0gICAgICBTdGF0ZXBvaW50QmFzZTxjb25zdCBGdW5jdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24sIGNvbnN0IFZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgSW1tdXRhYmxlQ2FsbFNpdGU+OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhbGxCYXNlPiB7CisgIHVzaW5nIEJhc2UgPSBTdGF0ZXBvaW50QmFzZTxjb25zdCBGdW5jdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24sIGNvbnN0IFZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FsbEJhc2U+OwogCiBwdWJsaWM6CiAgIGV4cGxpY2l0IEltbXV0YWJsZVN0YXRlcG9pbnQoY29uc3QgSW5zdHJ1Y3Rpb24gKkkpIDogQmFzZShJKSB7fQotICBleHBsaWNpdCBJbW11dGFibGVTdGF0ZXBvaW50KEltbXV0YWJsZUNhbGxTaXRlIENTKSA6IEJhc2UoQ1MpIHt9CisgIGV4cGxpY2l0IEltbXV0YWJsZVN0YXRlcG9pbnQoY29uc3QgQ2FsbEJhc2UgKkNhbGwpIDogQmFzZShDYWxsKSB7fQogfTsKIAogLy8vIEEgc3BlY2lhbGl6YXRpb24gb2YgaXQncyBiYXNlIGNsYXNzIGZvciByZWFkLXdyaXRlIGFjY2VzcwogLy8vIHRvIGEgZ2Muc3RhdGVwb2ludC4KIGNsYXNzIFN0YXRlcG9pbnQKLSAgICA6IHB1YmxpYyBTdGF0ZXBvaW50QmFzZTxGdW5jdGlvbiwgSW5zdHJ1Y3Rpb24sIFZhbHVlLCBDYWxsU2l0ZT4gewotICB1c2luZyBCYXNlID0gU3RhdGVwb2ludEJhc2U8RnVuY3Rpb24sIEluc3RydWN0aW9uLCBWYWx1ZSwgQ2FsbFNpdGU+OworICAgIDogcHVibGljIFN0YXRlcG9pbnRCYXNlPEZ1bmN0aW9uLCBJbnN0cnVjdGlvbiwgVmFsdWUsIENhbGxCYXNlPiB7CisgIHVzaW5nIEJhc2UgPSBTdGF0ZXBvaW50QmFzZTxGdW5jdGlvbiwgSW5zdHJ1Y3Rpb24sIFZhbHVlLCBDYWxsQmFzZT47CiAKIHB1YmxpYzoKICAgZXhwbGljaXQgU3RhdGVwb2ludChJbnN0cnVjdGlvbiAqSSkgOiBCYXNlKEkpIHt9Ci0gIGV4cGxpY2l0IFN0YXRlcG9pbnQoQ2FsbFNpdGUgQ1MpIDogQmFzZShDUykge30KKyAgZXhwbGljaXQgU3RhdGVwb2ludChDYWxsQmFzZSAqQ2FsbCkgOiBCYXNlKENhbGwpIHt9CiB9OwogCiAvLy8gQ29tbW9uIGJhc2UgY2xhc3MgZm9yIHJlcHJlc2VudGluZyB2YWx1ZXMgcHJvamVjdGVkIGZyb20gYSBzdGF0ZXBvaW50LgpAQCAtMzQ3LDE0ICszMzYsMTQgQEAKICAgfQogCiAgIC8vLyBUaGUgc3RhdGVwb2ludCB3aXRoIHdoaWNoIHRoaXMgZ2MucmVsb2NhdGUgaXMgYXNzb2NpYXRlZC4KLSAgY29uc3QgSW5zdHJ1Y3Rpb24gKmdldFN0YXRlcG9pbnQoKSBjb25zdCB7CisgIGNvbnN0IENhbGxCYXNlICpnZXRTdGF0ZXBvaW50KCkgY29uc3QgewogICAgIGNvbnN0IFZhbHVlICpUb2tlbiA9IGdldEFyZ09wZXJhbmQoMCk7CiAKICAgICAvLyBUaGlzIHRha2VzIGNhcmUgYm90aCBvZiByZWxvY2F0ZXMgZm9yIGNhbGwgc3RhdGVwb2ludHMgYW5kIHJlbG9jYXRlcwogICAgIC8vIG9uIG5vcm1hbCBwYXRoIG9mIGludm9rZSBzdGF0ZXBvaW50LgogICAgIGlmICghaXNhPExhbmRpbmdQYWRJbnN0PihUb2tlbikpIHsKICAgICAgIGFzc2VydChpc1N0YXRlcG9pbnQoVG9rZW4pKTsKLSAgICAgIHJldHVybiBjYXN0PEluc3RydWN0aW9uPihUb2tlbik7CisgICAgICByZXR1cm4gY2FzdDxDYWxsQmFzZT4oVG9rZW4pOwogICAgIH0KIAogICAgIC8vIFRoaXMgcmVsb2NhdGUgaXMgb24gZXhjZXB0aW9uYWwgcGF0aCBvZiBhbiBpbnZva2Ugc3RhdGVwb2ludApAQCAtMzY2LDcgKzM1NSw3IEBACiAgICAgICAgICAgICJzYWZlcG9pbnQgYmxvY2sgc2hvdWxkIGJlIHdlbGwgZm9ybWVkIik7CiAgICAgYXNzZXJ0KGlzU3RhdGVwb2ludChJbnZva2VCQi0+Z2V0VGVybWluYXRvcigpKSk7CiAKLSAgICByZXR1cm4gSW52b2tlQkItPmdldFRlcm1pbmF0b3IoKTsKKyAgICByZXR1cm4gY2FzdDxDYWxsQmFzZT4oSW52b2tlQkItPmdldFRlcm1pbmF0b3IoKSk7CiAgIH0KIH07CiAKQEAgLTM5NSwxMyArMzg0LDExIEBACiAgIH0KIAogICBWYWx1ZSAqZ2V0QmFzZVB0cigpIGNvbnN0IHsKLSAgICBJbW11dGFibGVDYWxsU2l0ZSBDUyhnZXRTdGF0ZXBvaW50KCkpOwotICAgIHJldHVybiAqKENTLmFyZ19iZWdpbigpICsgZ2V0QmFzZVB0ckluZGV4KCkpOworICAgIHJldHVybiAqKGdldFN0YXRlcG9pbnQoKS0+YXJnX2JlZ2luKCkgKyBnZXRCYXNlUHRySW5kZXgoKSk7CiAgIH0KIAogICBWYWx1ZSAqZ2V0RGVyaXZlZFB0cigpIGNvbnN0IHsKLSAgICBJbW11dGFibGVDYWxsU2l0ZSBDUyhnZXRTdGF0ZXBvaW50KCkpOwotICAgIHJldHVybiAqKENTLmFyZ19iZWdpbigpICsgZ2V0RGVyaXZlZFB0ckluZGV4KCkpOworICAgIHJldHVybiAqKGdldFN0YXRlcG9pbnQoKS0+YXJnX2JlZ2luKCkgKyBnZXREZXJpdmVkUHRySW5kZXgoKSk7CiAgIH0KIH07CiAKQEAgLTQxOCwyOCArNDA1LDI1IEBACiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuVHksIHR5cGVuYW1lIEluc3RydWN0aW9uVHksIHR5cGVuYW1lIFZhbHVlVHksCi0gICAgICAgICAgdHlwZW5hbWUgQ2FsbFNpdGVUeT4KKyAgICAgICAgICB0eXBlbmFtZSBDYWxsQmFzZVR5Pgogc3RkOjp2ZWN0b3I8Y29uc3QgR0NSZWxvY2F0ZUluc3QgKj4KLVN0YXRlcG9pbnRCYXNlPEZ1blR5LCBJbnN0cnVjdGlvblR5LCBWYWx1ZVR5LCBDYWxsU2l0ZVR5Pjo6Z2V0UmVsb2NhdGVzKCkKK1N0YXRlcG9pbnRCYXNlPEZ1blR5LCBJbnN0cnVjdGlvblR5LCBWYWx1ZVR5LCBDYWxsQmFzZVR5Pjo6Z2V0UmVsb2NhdGVzKCkKICAgICBjb25zdCB7Ci0KICAgc3RkOjp2ZWN0b3I8Y29uc3QgR0NSZWxvY2F0ZUluc3QgKj4gUmVzdWx0OwogCi0gIENhbGxTaXRlVHkgU3RhdGVwb2ludENTID0gZ2V0Q2FsbFNpdGUoKTsKLQogICAvLyBTZWFyY2ggZm9yIHJlbG9jYXRlZCBwb2ludGVycy4gIE5vdGUgdGhhdCB3b3JraW5nIGJhY2t3YXJkcyBmcm9tIHRoZQogICAvLyBnY19yZWxvY2F0ZXMgZW5zdXJlcyB0aGF0IHdlIG9ubHkgZ2V0IHBhaXJzIHdoaWNoIGFyZSBhY3R1YWxseSByZWxvY2F0ZWQKICAgLy8gYW5kIHVzZWQgYWZ0ZXIgdGhlIHN0YXRlcG9pbnQuCi0gIGZvciAoY29uc3QgVXNlciAqVSA6IGdldEluc3RydWN0aW9uKCktPnVzZXJzKCkpCisgIGZvciAoY29uc3QgVXNlciAqVSA6IFN0YXRlcG9pbnRDYWxsLT51c2VycygpKQogICAgIGlmIChhdXRvICpSZWxvY2F0ZSA9IGR5bl9jYXN0PEdDUmVsb2NhdGVJbnN0PihVKSkKICAgICAgIFJlc3VsdC5wdXNoX2JhY2soUmVsb2NhdGUpOwogCi0gIGlmICghU3RhdGVwb2ludENTLmlzSW52b2tlKCkpCisgIGF1dG8gKlN0YXRlcG9pbnRJbnZva2UgPSBkeW5fY2FzdDxJbnZva2VJbnN0PihTdGF0ZXBvaW50Q2FsbCk7CisgIGlmICghU3RhdGVwb2ludEludm9rZSkKICAgICByZXR1cm4gUmVzdWx0OwogCiAgIC8vIFdlIG5lZWQgdG8gc2NhbiB0aG9yb3VnaCBleGNlcHRpb25hbCByZWxvY2F0aW9ucyBpZiBpdCBpcyBpbnZva2Ugc3RhdGVwb2ludAotICBMYW5kaW5nUGFkSW5zdCAqTGFuZGluZ1BhZCA9Ci0gICAgICBjYXN0PEludm9rZUluc3Q+KGdldEluc3RydWN0aW9uKCkpLT5nZXRMYW5kaW5nUGFkSW5zdCgpOworICBMYW5kaW5nUGFkSW5zdCAqTGFuZGluZ1BhZCA9IFN0YXRlcG9pbnRJbnZva2UtPmdldExhbmRpbmdQYWRJbnN0KCk7CiAKICAgLy8gU2VhcmNoIGZvciBnYyByZWxvY2F0ZXMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gdGhpcyBsYW5kaW5ncGFkLgogICBmb3IgKGNvbnN0IFVzZXIgKkxhbmRpbmdQYWRVc2VyIDogTGFuZGluZ1BhZC0+dXNlcnMoKSkgewpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9TeW1ib2xUYWJsZUxpc3RUcmFpdHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvU3ltYm9sVGFibGVMaXN0VHJhaXRzLmgKaW5kZXggODdjZTkwMi4uNWI3OTNlNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9TeW1ib2xUYWJsZUxpc3RUcmFpdHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1N5bWJvbFRhYmxlTGlzdFRyYWl0cy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vU3ltYm9sVGFibGVMaXN0VHJhaXRzLmggLSBUcmFpdHMgZm9yIGlwbGlzdCAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1RyYWNraW5nTURSZWYuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVHJhY2tpbmdNRFJlZi5oCmluZGV4IDA4NGVmYWQuLmQ3Mzc3MzkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVHJhY2tpbmdNRFJlZi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVHJhY2tpbmdNRFJlZi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vSVIvVHJhY2tpbmdNRFJlZi5oIC0gVHJhY2tpbmcgTWV0YWRhdGEgcmVmZXJlbmNlcyAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1R5cGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVHlwZS5oCmluZGV4IDljMWY5OWQuLjVmOWY0NGUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVHlwZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVHlwZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vVHlwZS5oIC0gQ2xhc3NlcyBmb3IgaGFuZGxpbmcgZGF0YSB0eXBlcyAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00NjcsMjggKzQ2Niw2IEBACiAgIH0KIH07CiAKLS8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCi0vLyBQcm92aWRlIHNwZWNpYWxpemF0aW9ucyBvZiBHcmFwaFRyYWl0cyB0byBiZSBhYmxlIHRvIHRyZWF0IGEgdHlwZSBhcyBhCi0vLyBncmFwaCBvZiBzdWIgdHlwZXMuCi0KLXRlbXBsYXRlIDw+IHN0cnVjdCBHcmFwaFRyYWl0czxUeXBlICo+IHsKLSAgdXNpbmcgTm9kZVJlZiA9IFR5cGUgKjsKLSAgdXNpbmcgQ2hpbGRJdGVyYXRvclR5cGUgPSBUeXBlOjpzdWJ0eXBlX2l0ZXJhdG9yOwotCi0gIHN0YXRpYyBOb2RlUmVmIGdldEVudHJ5Tm9kZShUeXBlICpUKSB7IHJldHVybiBUOyB9Ci0gIHN0YXRpYyBDaGlsZEl0ZXJhdG9yVHlwZSBjaGlsZF9iZWdpbihOb2RlUmVmIE4pIHsgcmV0dXJuIE4tPnN1YnR5cGVfYmVnaW4oKTsgfQotICBzdGF0aWMgQ2hpbGRJdGVyYXRvclR5cGUgY2hpbGRfZW5kKE5vZGVSZWYgTikgeyByZXR1cm4gTi0+c3VidHlwZV9lbmQoKTsgfQotfTsKLQotdGVtcGxhdGUgPD4gc3RydWN0IEdyYXBoVHJhaXRzPGNvbnN0IFR5cGUqPiB7Ci0gIHVzaW5nIE5vZGVSZWYgPSBjb25zdCBUeXBlICo7Ci0gIHVzaW5nIENoaWxkSXRlcmF0b3JUeXBlID0gVHlwZTo6c3VidHlwZV9pdGVyYXRvcjsKLQotICBzdGF0aWMgTm9kZVJlZiBnZXRFbnRyeU5vZGUoTm9kZVJlZiBUKSB7IHJldHVybiBUOyB9Ci0gIHN0YXRpYyBDaGlsZEl0ZXJhdG9yVHlwZSBjaGlsZF9iZWdpbihOb2RlUmVmIE4pIHsgcmV0dXJuIE4tPnN1YnR5cGVfYmVnaW4oKTsgfQotICBzdGF0aWMgQ2hpbGRJdGVyYXRvclR5cGUgY2hpbGRfZW5kKE5vZGVSZWYgTikgeyByZXR1cm4gTi0+c3VidHlwZV9lbmQoKTsgfQotfTsKLQogLy8gQ3JlYXRlIHdyYXBwZXJzIGZvciBDIEJpbmRpbmcgdHlwZXMgKHNlZSBDQmluZGluZ1dyYXBwaW5nLmgpLgogREVGSU5FX0lTQV9DT05WRVJTSU9OX0ZVTkNUSU9OUyhUeXBlLCBMTFZNVHlwZVJlZikKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9UeXBlQnVpbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9UeXBlQnVpbGRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMmM2ZjAwLi4wMDAwMDAwCi0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVHlwZUJ1aWxkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwNyArMCwwIEBACi0vLz09PS0tLS0gbGx2bS9UeXBlQnVpbGRlci5oIC0gQnVpbGRlciBmb3IgTExWTSB0eXBlcyAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwotLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KLS8vCi0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotLy8KLS8vIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBUeXBlQnVpbGRlciBjbGFzcywgd2hpY2ggaXMgdXNlZCBhcyBhIGNvbnZlbmllbnQgd2F5IHRvCi0vLyBjcmVhdGUgTExWTSB0eXBlcyB3aXRoIGEgY29uc2lzdGVudCBhbmQgc2ltcGxpZmllZCBpbnRlcmZhY2UuCi0vLwotLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KLQotI2lmbmRlZiBMTFZNX0lSX1RZUEVCVUlMREVSX0gKLSNkZWZpbmUgTExWTV9JUl9UWVBFQlVJTERFUl9ICi0KLSNpbmNsdWRlICJsbHZtL0lSL0Rlcml2ZWRUeXBlcy5oIgotI2luY2x1ZGUgImxsdm0vSVIvTExWTUNvbnRleHQuaCIKLSNpbmNsdWRlIDxjbGltaXRzPgotCi1uYW1lc3BhY2UgbGx2bSB7Ci0KLS8vLyBUeXBlQnVpbGRlciAtIFRoaXMgcHJvdmlkZXMgYSB1bmlmb3JtIEFQSSBmb3IgbG9va2luZyB1cCB0eXBlcwotLy8vIGtub3duIGF0IGNvbXBpbGUgdGltZS4gIFRvIHN1cHBvcnQgY3Jvc3MtY29tcGlsYXRpb24sIHdlIGRlZmluZSBhCi0vLy8gc2VyaWVzIG9mIHRhZyB0eXBlcyBpbiB0aGUgbGx2bTo6dHlwZXMgbmFtZXNwYWNlLCBsaWtlIGk8Tj4sCi0vLy8gaWVlZV9mbG9hdCwgcHBjX2ZwMTI4LCBldGMuICBUeXBlQnVpbGRlcjxULCBmYWxzZT4gYWxsb3dzIFQgdG8gYmUKLS8vLyBhbnkgb2YgdGhlc2UsIGEgbmF0aXZlIEMgdHlwZSAod2hvc2Ugc2l6ZSBtYXkgZGVwZW5kIG9uIHRoZSBob3N0Ci0vLy8gY29tcGlsZXIpLCBvciBhIHBvaW50ZXIsIGZ1bmN0aW9uLCBvciBzdHJ1Y3QgdHlwZSBidWlsdCBvdXQgb2YKLS8vLyB0aGVzZS4gIFR5cGVCdWlsZGVyPFQsIHRydWU+IHJlbW92ZXMgbmF0aXZlIEMgdHlwZXMgZnJvbSB0aGlzIHNldAotLy8vIHRvIGd1YXJhbnRlZSB0aGF0IGl0cyByZXN1bHQgaXMgc3VpdGFibGUgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgotLy8vIFdlIGRlZmluZSB0aGUgcHJpbWl0aXZlIHR5cGVzLCBwb2ludGVyIHR5cGVzLCBhbmQgZnVuY3Rpb25zIHVwIHRvCi0vLy8gNSBhcmd1bWVudHMgaGVyZSwgYnV0IHRvIHVzZSB0aGlzIGNsYXNzIHdpdGggeW91ciBvd24gdHlwZXMsCi0vLy8geW91J2xsIG5lZWQgdG8gc3BlY2lhbGl6ZSBpdC4gIEZvciBleGFtcGxlLCBzYXkgeW91IHdhbnQgdG8gY2FsbCBhCi0vLy8gZnVuY3Rpb24gZGVmaW5lZCBleHRlcm5hbGx5IGFzOgotLy8vCi0vLy8gXGNvZGV7LmNwcH0KLS8vLwotLy8vICAgc3RydWN0IE15VHlwZSB7Ci0vLy8gICAgIGludDMyIGE7Ci0vLy8gICAgIGludDMyICpiOwotLy8vICAgICB2b2lkICphcnJheVsxXTsgIC8vIEludGVuZGVkIGFzIGEgZmxleGlibGUgYXJyYXkuCi0vLy8gICB9OwotLy8vICAgaW50OCBBRnVuY3Rpb24oc3RydWN0IE15VHlwZSAqdmFsdWUpOwotLy8vCi0vLy8gXGVuZGNvZGUKLS8vLwotLy8vIFlvdSdsbCB3YW50IHRvIHVzZQotLy8vICAgRnVuY3Rpb246OkNyZWF0ZShUeXBlQnVpbGRlcjx0eXBlczo6aTw4PihNeVR5cGUqKSwgdHJ1ZT46OmdldCgpLCAuLi4pCi0vLy8gdG8gZGVjbGFyZSB0aGUgZnVuY3Rpb24sIGJ1dCB3aGVuIHlvdSBmaXJzdCB0cnkgdGhpcywgeW91ciBjb21waWxlciB3aWxsCi0vLy8gY29tcGxhaW4gdGhhdCBUeXBlQnVpbGRlcjxNeVR5cGUsIHRydWU+OjpnZXQoKSBkb2Vzbid0IGV4aXN0LiBUbyBmaXggdGhpcywKLS8vLyB3cml0ZToKLS8vLwotLy8vIFxjb2Rley5jcHB9Ci0vLy8KLS8vLyAgIG5hbWVzcGFjZSBsbHZtIHsKLS8vLyAgIHRlbXBsYXRlPGJvb2wgeGNvbXBpbGU+IGNsYXNzIFR5cGVCdWlsZGVyPE15VHlwZSwgeGNvbXBpbGU+IHsKLS8vLyAgIHB1YmxpYzoKLS8vLyAgICAgc3RhdGljIFN0cnVjdFR5cGUgKmdldChMTFZNQ29udGV4dCAmQ29udGV4dCkgewotLy8vICAgICAgIC8vIElmIHlvdSBjYWNoZSB0aGlzIHJlc3VsdCwgYmUgc3VyZSB0byBjYWNoZSBpdCBzZXBhcmF0ZWx5Ci0vLy8gICAgICAgLy8gZm9yIGVhY2ggTExWTUNvbnRleHQuCi0vLy8gICAgICAgcmV0dXJuIFN0cnVjdFR5cGU6OmdldCgKLS8vLyAgICAgICAgIFR5cGVCdWlsZGVyPHR5cGVzOjppPDMyPiwgeGNvbXBpbGU+OjpnZXQoQ29udGV4dCksCi0vLy8gICAgICAgICBUeXBlQnVpbGRlcjx0eXBlczo6aTwzMj4qLCB4Y29tcGlsZT46OmdldChDb250ZXh0KSwKLS8vLyAgICAgICAgIFR5cGVCdWlsZGVyPHR5cGVzOjppPDg+KltdLCB4Y29tcGlsZT46OmdldChDb250ZXh0KSwKLS8vLyAgICAgICAgIG51bGxwdHIpOwotLy8vICAgICB9Ci0vLy8KLS8vLyAgICAgLy8gWW91IG1heSBmaW5kIHRoaXMgYSBjb252ZW5pZW50IHBsYWNlIHRvIHB1dCBzb21lIGNvbnN0YW50cwotLy8vICAgICAvLyB0byBoZWxwIHdpdGggZ2V0ZWxlbWVudHB0ci4gIFRoZXkgZG9uJ3QgaGF2ZSBhbnkgZWZmZWN0IG9uCi0vLy8gICAgIC8vIHRoZSBvcGVyYXRpb24gb2YgVHlwZUJ1aWxkZXIuCi0vLy8gICAgIGVudW0gRmllbGRzIHsKLS8vLyAgICAgICBGSUVMRF9BLAotLy8vICAgICAgIEZJRUxEX0IsCi0vLy8gICAgICAgRklFTERfQVJSQVkKLS8vLyAgICAgfTsKLS8vLyAgIH0KLS8vLyAgIH0gIC8vIG5hbWVzcGFjZSBsbHZtCi0vLy8KLS8vLyBcZW5kY29kZQotLy8vCi0vLy8gVHlwZUJ1aWxkZXIgY2Fubm90IGhhbmRsZSByZWN1cnNpdmUgdHlwZXMgb3IgdHlwZXMgeW91IG9ubHkga25vdyBhdCBydW50aW1lLgotLy8vIElmIHlvdSB0cnkgdG8gZ2l2ZSBpdCBhIHJlY3Vyc2l2ZSB0eXBlLCBpdCB3aWxsIGRlYWRsb2NrLCBpbmZpbml0ZWx5Ci0vLy8gcmVjdXJzZSwgb3IgZG8gc29tZXRoaW5nIHNpbWlsYXJseSB1bmRlc2lyYWJsZS4KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIGJvb2wgY3Jvc3NfY29tcGlsYWJsZT4gY2xhc3MgVHlwZUJ1aWxkZXIge307Ci0KLS8vIFR5cGVzIGZvciB1c2Ugd2l0aCBjcm9zcy1jb21waWxhYmxlIFR5cGVCdWlsZGVycy4gIFRoZXNlIGNvcnJlc3BvbmQKLS8vIGV4YWN0bHkgd2l0aCBhbiBMTFZNLW5hdGl2ZSB0eXBlLgotbmFtZXNwYWNlIHR5cGVzIHsKLS8vLyBpPE4+IGNvcnJlc3BvbmRzIHRvIHRoZSBMTFZNIEludGVnZXJUeXBlIHdpdGggTiBiaXRzLgotdGVtcGxhdGU8dWludDMyX3QgbnVtX2JpdHM+IGNsYXNzIGkge307Ci0KLS8vIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyByZXByZXNlbnQgdGhlIExMVk0gZmxvYXRpbmcgdHlwZXMuCi1jbGFzcyBpZWVlX2Zsb2F0IHt9OwotY2xhc3MgaWVlZV9kb3VibGUge307Ci1jbGFzcyB4ODZfZnA4MCB7fTsKLWNsYXNzIGZwMTI4IHt9OwotY2xhc3MgcHBjX2ZwMTI4IHt9OwotLy8gWDg2IE1NWC4KLWNsYXNzIHg4Nl9tbXgge307Ci19ICAvLyBuYW1lc3BhY2UgdHlwZXMKLQotLy8gTExWTSBkb2Vzbid0IGhhdmUgY29uc3Qgb3Igdm9sYXRpbGUgdHlwZXMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBib29sIGNyb3NzPiBjbGFzcyBUeXBlQnVpbGRlcjxjb25zdCBULCBjcm9zcz4KLSAgOiBwdWJsaWMgVHlwZUJ1aWxkZXI8VCwgY3Jvc3M+IHt9OwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgYm9vbCBjcm9zcz4gY2xhc3MgVHlwZUJ1aWxkZXI8dm9sYXRpbGUgVCwgY3Jvc3M+Ci0gIDogcHVibGljIFR5cGVCdWlsZGVyPFQsIGNyb3NzPiB7fTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIGJvb2wgY3Jvc3M+IGNsYXNzIFR5cGVCdWlsZGVyPGNvbnN0IHZvbGF0aWxlIFQsIGNyb3NzPgotICA6IHB1YmxpYyBUeXBlQnVpbGRlcjxULCBjcm9zcz4ge307Ci0KLS8vIFBvaW50ZXJzCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBib29sIGNyb3NzPiBjbGFzcyBUeXBlQnVpbGRlcjxUKiwgY3Jvc3M+IHsKLXB1YmxpYzoKLSAgc3RhdGljIFBvaW50ZXJUeXBlICpnZXQoTExWTUNvbnRleHQgJkNvbnRleHQpIHsKLSAgICByZXR1cm4gUG9pbnRlclR5cGU6OmdldFVucXVhbChUeXBlQnVpbGRlcjxULGNyb3NzPjo6Z2V0KENvbnRleHQpKTsKLSAgfQotfTsKLQotLy8vIFRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIHJlZmVyZW5jZXMKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIGJvb2wgY3Jvc3M+IGNsYXNzIFR5cGVCdWlsZGVyPFQmLCBjcm9zcz4ge307Ci0KLS8vIEFycmF5cwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IE4sIGJvb2wgY3Jvc3M+IGNsYXNzIFR5cGVCdWlsZGVyPFRbTl0sIGNyb3NzPiB7Ci1wdWJsaWM6Ci0gIHN0YXRpYyBBcnJheVR5cGUgKmdldChMTFZNQ29udGV4dCAmQ29udGV4dCkgewotICAgIHJldHVybiBBcnJheVR5cGU6OmdldChUeXBlQnVpbGRlcjxULCBjcm9zcz46OmdldChDb250ZXh0KSwgTik7Ci0gIH0KLX07Ci0vLy8gTExWTSB1c2VzIGFuIGFycmF5IG9mIGxlbmd0aCAwIHRvIHJlcHJlc2VudCBhbiB1bmtub3duLWxlbmd0aCBhcnJheS4KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIGJvb2wgY3Jvc3M+IGNsYXNzIFR5cGVCdWlsZGVyPFRbXSwgY3Jvc3M+IHsKLXB1YmxpYzoKLSAgc3RhdGljIEFycmF5VHlwZSAqZ2V0KExMVk1Db250ZXh0ICZDb250ZXh0KSB7Ci0gICAgcmV0dXJuIEFycmF5VHlwZTo6Z2V0KFR5cGVCdWlsZGVyPFQsIGNyb3NzPjo6Z2V0KENvbnRleHQpLCAwKTsKLSAgfQotfTsKLQotLy8gRGVmaW5lIHRoZSBDIGludGVncmFsIHR5cGVzIG9ubHkgZm9yIFR5cGVCdWlsZGVyPFQsIGZhbHNlPi4KLS8vCi0vLyBDIGludGVncmFsIHR5cGVzIGRvIG5vdCBoYXZlIGEgZGVmaW5lZCBzaXplLiBJdCB3b3VsZCBiZSBuaWNlIHRvIHVzZSB0aGUKLS8vIHN0ZGludC5oLWRlZmluZWQgdHlwZWRlZnMgdGhhdCBkbyBoYXZlIGRlZmluZWQgc2l6ZXMsIGJ1dCB3ZSdkIHJ1biBpbnRvIHRoZQotLy8gZm9sbG93aW5nIHByb2JsZW06Ci0vLwotLy8gT24gYW4gSUxQMzIgbWFjaGluZSwgc3RkaW50LmggbWlnaHQgZGVmaW5lOgotLy8KLS8vICAgdHlwZWRlZiBpbnQgaW50MzJfdDsKLS8vICAgdHlwZWRlZiBsb25nIGxvbmcgaW50NjRfdDsKLS8vICAgdHlwZWRlZiBsb25nIHNpemVfdDsKLS8vCi0vLyBJZiB3ZSBkZWZpbmVkIFR5cGVCdWlsZGVyPGludDMyX3Q+IGFuZCBUeXBlQnVpbGRlcjxpbnQ2NF90PiwgdGhlbiBhbnkgdXNlIG9mCi0vLyBUeXBlQnVpbGRlcjxzaXplX3Q+IHdvdWxkIGZhaWwuICBXZSBjb3VsZG4ndCBkZWZpbmUgVHlwZUJ1aWxkZXI8c2l6ZV90PiBpbgotLy8gYWRkaXRpb24gdG8gdGhlIGRlZmluZWQtc2l6ZSB0eXBlcyBiZWNhdXNlIHdlJ2QgZ2V0IGR1cGxpY2F0ZSBkZWZpbml0aW9ucyBvbgotLy8gcGxhdGZvcm1zIHdoZXJlIHN0ZGludC5oIGluc3RlYWQgZGVmaW5lczoKLS8vCi0vLyAgIHR5cGVkZWYgaW50IGludDMyX3Q7Ci0vLyAgIHR5cGVkZWYgbG9uZyBsb25nIGludDY0X3Q7Ci0vLyAgIHR5cGVkZWYgaW50IHNpemVfdDsKLS8vCi0vLyBTbyB3ZSBkZWZpbmUgYWxsIHRoZSBwcmltaXRpdmUgQyB0eXBlcyBhbmQgbm90aGluZyBlbHNlLgotI2RlZmluZSBERUZJTkVfSU5URUdSQUxfVFlQRUJVSUxERVIoVCkgXAotdGVtcGxhdGU8PiBjbGFzcyBUeXBlQnVpbGRlcjxULCBmYWxzZT4geyBcCi1wdWJsaWM6IFwKLSAgc3RhdGljIEludGVnZXJUeXBlICpnZXQoTExWTUNvbnRleHQgJkNvbnRleHQpIHsgXAotICAgIHJldHVybiBJbnRlZ2VyVHlwZTo6Z2V0KENvbnRleHQsIHNpemVvZihUKSAqIENIQVJfQklUKTsgXAotICB9IFwKLX07IFwKLXRlbXBsYXRlPD4gY2xhc3MgVHlwZUJ1aWxkZXI8VCwgdHJ1ZT4geyBcCi0gIC8qIFdlIHByb3ZpZGUgYSBkZWZpbml0aW9uIGhlcmUgc28gdXNlcnMgZG9uJ3QgYWNjaWRlbnRhbGx5ICovIFwKLSAgLyogZGVmaW5lIHRoZXNlIHR5cGVzIHRvIHdvcmsuICovIFwKLX0KLURFRklORV9JTlRFR1JBTF9UWVBFQlVJTERFUihjaGFyKTsKLURFRklORV9JTlRFR1JBTF9UWVBFQlVJTERFUihzaWduZWQgY2hhcik7Ci1ERUZJTkVfSU5URUdSQUxfVFlQRUJVSUxERVIodW5zaWduZWQgY2hhcik7Ci1ERUZJTkVfSU5URUdSQUxfVFlQRUJVSUxERVIoc2hvcnQpOwotREVGSU5FX0lOVEVHUkFMX1RZUEVCVUlMREVSKHVuc2lnbmVkIHNob3J0KTsKLURFRklORV9JTlRFR1JBTF9UWVBFQlVJTERFUihpbnQpOwotREVGSU5FX0lOVEVHUkFMX1RZUEVCVUlMREVSKHVuc2lnbmVkIGludCk7Ci1ERUZJTkVfSU5URUdSQUxfVFlQRUJVSUxERVIobG9uZyk7Ci1ERUZJTkVfSU5URUdSQUxfVFlQRUJVSUxERVIodW5zaWduZWQgbG9uZyk7Ci0jaWZkZWYgX01TQ19WRVIKLURFRklORV9JTlRFR1JBTF9UWVBFQlVJTERFUihfX2ludDY0KTsKLURFRklORV9JTlRFR1JBTF9UWVBFQlVJTERFUih1bnNpZ25lZCBfX2ludDY0KTsKLSNlbHNlIC8qIF9NU0NfVkVSICovCi1ERUZJTkVfSU5URUdSQUxfVFlQRUJVSUxERVIobG9uZyBsb25nKTsKLURFRklORV9JTlRFR1JBTF9UWVBFQlVJTERFUih1bnNpZ25lZCBsb25nIGxvbmcpOwotI2VuZGlmIC8qIF9NU0NfVkVSICovCi0jdW5kZWYgREVGSU5FX0lOVEVHUkFMX1RZUEVCVUlMREVSCi0KLXRlbXBsYXRlPHVpbnQzMl90IG51bV9iaXRzLCBib29sIGNyb3NzPgotY2xhc3MgVHlwZUJ1aWxkZXI8dHlwZXM6Omk8bnVtX2JpdHM+LCBjcm9zcz4gewotcHVibGljOgotICBzdGF0aWMgSW50ZWdlclR5cGUgKmdldChMTFZNQ29udGV4dCAmQykgewotICAgIHJldHVybiBJbnRlZ2VyVHlwZTo6Z2V0KEMsIG51bV9iaXRzKTsKLSAgfQotfTsKLQotdGVtcGxhdGU8PiBjbGFzcyBUeXBlQnVpbGRlcjxmbG9hdCwgZmFsc2U+IHsKLXB1YmxpYzoKLSAgc3RhdGljIFR5cGUgKmdldChMTFZNQ29udGV4dCYgQykgewotICAgIHJldHVybiBUeXBlOjpnZXRGbG9hdFR5KEMpOwotICB9Ci19OwotdGVtcGxhdGU8PiBjbGFzcyBUeXBlQnVpbGRlcjxmbG9hdCwgdHJ1ZT4ge307Ci0KLXRlbXBsYXRlPD4gY2xhc3MgVHlwZUJ1aWxkZXI8ZG91YmxlLCBmYWxzZT4gewotcHVibGljOgotICBzdGF0aWMgVHlwZSAqZ2V0KExMVk1Db250ZXh0JiBDKSB7Ci0gICAgcmV0dXJuIFR5cGU6OmdldERvdWJsZVR5KEMpOwotICB9Ci19OwotdGVtcGxhdGU8PiBjbGFzcyBUeXBlQnVpbGRlcjxkb3VibGUsIHRydWU+IHt9OwotCi10ZW1wbGF0ZTxib29sIGNyb3NzPiBjbGFzcyBUeXBlQnVpbGRlcjx0eXBlczo6aWVlZV9mbG9hdCwgY3Jvc3M+IHsKLXB1YmxpYzoKLSAgc3RhdGljIFR5cGUgKmdldChMTFZNQ29udGV4dCYgQykgeyByZXR1cm4gVHlwZTo6Z2V0RmxvYXRUeShDKTsgfQotfTsKLXRlbXBsYXRlPGJvb2wgY3Jvc3M+IGNsYXNzIFR5cGVCdWlsZGVyPHR5cGVzOjppZWVlX2RvdWJsZSwgY3Jvc3M+IHsKLXB1YmxpYzoKLSAgc3RhdGljIFR5cGUgKmdldChMTFZNQ29udGV4dCYgQykgeyByZXR1cm4gVHlwZTo6Z2V0RG91YmxlVHkoQyk7IH0KLX07Ci10ZW1wbGF0ZTxib29sIGNyb3NzPiBjbGFzcyBUeXBlQnVpbGRlcjx0eXBlczo6eDg2X2ZwODAsIGNyb3NzPiB7Ci1wdWJsaWM6Ci0gIHN0YXRpYyBUeXBlICpnZXQoTExWTUNvbnRleHQmIEMpIHsgcmV0dXJuIFR5cGU6OmdldFg4Nl9GUDgwVHkoQyk7IH0KLX07Ci10ZW1wbGF0ZTxib29sIGNyb3NzPiBjbGFzcyBUeXBlQnVpbGRlcjx0eXBlczo6ZnAxMjgsIGNyb3NzPiB7Ci1wdWJsaWM6Ci0gIHN0YXRpYyBUeXBlICpnZXQoTExWTUNvbnRleHQmIEMpIHsgcmV0dXJuIFR5cGU6OmdldEZQMTI4VHkoQyk7IH0KLX07Ci10ZW1wbGF0ZTxib29sIGNyb3NzPiBjbGFzcyBUeXBlQnVpbGRlcjx0eXBlczo6cHBjX2ZwMTI4LCBjcm9zcz4gewotcHVibGljOgotICBzdGF0aWMgVHlwZSAqZ2V0KExMVk1Db250ZXh0JiBDKSB7IHJldHVybiBUeXBlOjpnZXRQUENfRlAxMjhUeShDKTsgfQotfTsKLXRlbXBsYXRlPGJvb2wgY3Jvc3M+IGNsYXNzIFR5cGVCdWlsZGVyPHR5cGVzOjp4ODZfbW14LCBjcm9zcz4gewotcHVibGljOgotICBzdGF0aWMgVHlwZSAqZ2V0KExMVk1Db250ZXh0JiBDKSB7IHJldHVybiBUeXBlOjpnZXRYODZfTU1YVHkoQyk7IH0KLX07Ci0KLXRlbXBsYXRlPGJvb2wgY3Jvc3M+IGNsYXNzIFR5cGVCdWlsZGVyPHZvaWQsIGNyb3NzPiB7Ci1wdWJsaWM6Ci0gIHN0YXRpYyBUeXBlICpnZXQoTExWTUNvbnRleHQgJkMpIHsKLSAgICByZXR1cm4gVHlwZTo6Z2V0Vm9pZFR5KEMpOwotICB9Ci19OwotCi0vLy8gdm9pZCogaXMgZGlzYWxsb3dlZCBpbiBMTFZNIHR5cGVzLCBidXQgaXQgb2NjdXJzIG9mdGVuIGVub3VnaCBpbiBDIGNvZGUgdGhhdAotLy8vIHdlIHNwZWNpYWwgY2FzZSBpdC4KLXRlbXBsYXRlPD4gY2xhc3MgVHlwZUJ1aWxkZXI8dm9pZCosIGZhbHNlPgotICA6IHB1YmxpYyBUeXBlQnVpbGRlcjx0eXBlczo6aTw4PiosIGZhbHNlPiB7fTsKLXRlbXBsYXRlPD4gY2xhc3MgVHlwZUJ1aWxkZXI8Y29uc3Qgdm9pZCosIGZhbHNlPgotICA6IHB1YmxpYyBUeXBlQnVpbGRlcjx0eXBlczo6aTw4PiosIGZhbHNlPiB7fTsKLXRlbXBsYXRlPD4gY2xhc3MgVHlwZUJ1aWxkZXI8dm9sYXRpbGUgdm9pZCosIGZhbHNlPgotICA6IHB1YmxpYyBUeXBlQnVpbGRlcjx0eXBlczo6aTw4PiosIGZhbHNlPiB7fTsKLXRlbXBsYXRlPD4gY2xhc3MgVHlwZUJ1aWxkZXI8Y29uc3Qgdm9sYXRpbGUgdm9pZCosIGZhbHNlPgotICA6IHB1YmxpYyBUeXBlQnVpbGRlcjx0eXBlczo6aTw4PiosIGZhbHNlPiB7fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgYm9vbCBjcm9zcz4gY2xhc3MgVHlwZUJ1aWxkZXI8UigpLCBjcm9zcz4gewotcHVibGljOgotICBzdGF0aWMgRnVuY3Rpb25UeXBlICpnZXQoTExWTUNvbnRleHQgJkNvbnRleHQpIHsKLSAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpnZXQoVHlwZUJ1aWxkZXI8UiwgY3Jvc3M+OjpnZXQoQ29udGV4dCksIGZhbHNlKTsKLSAgfQotfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCBib29sIGNyb3NzPiBjbGFzcyBUeXBlQnVpbGRlcjxSKEExKSwgY3Jvc3M+IHsKLXB1YmxpYzoKLSAgc3RhdGljIEZ1bmN0aW9uVHlwZSAqZ2V0KExMVk1Db250ZXh0ICZDb250ZXh0KSB7Ci0gICAgVHlwZSAqcGFyYW1zW10gPSB7Ci0gICAgICBUeXBlQnVpbGRlcjxBMSwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgfTsKLSAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpnZXQoVHlwZUJ1aWxkZXI8UiwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgZmFsc2UpOwotICB9Ci19OwotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCBib29sIGNyb3NzPgotY2xhc3MgVHlwZUJ1aWxkZXI8UihBMSwgQTIpLCBjcm9zcz4gewotcHVibGljOgotICBzdGF0aWMgRnVuY3Rpb25UeXBlICpnZXQoTExWTUNvbnRleHQgJkNvbnRleHQpIHsKLSAgICBUeXBlICpwYXJhbXNbXSA9IHsKLSAgICAgIFR5cGVCdWlsZGVyPEExLCBjcm9zcz46OmdldChDb250ZXh0KSwKLSAgICAgIFR5cGVCdWlsZGVyPEEyLCBjcm9zcz46OmdldChDb250ZXh0KSwKLSAgICB9OwotICAgIHJldHVybiBGdW5jdGlvblR5cGU6OmdldChUeXBlQnVpbGRlcjxSLCBjcm9zcz46OmdldChDb250ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLCBmYWxzZSk7Ci0gIH0KLX07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCBib29sIGNyb3NzPgotY2xhc3MgVHlwZUJ1aWxkZXI8UihBMSwgQTIsIEEzKSwgY3Jvc3M+IHsKLXB1YmxpYzoKLSAgc3RhdGljIEZ1bmN0aW9uVHlwZSAqZ2V0KExMVk1Db250ZXh0ICZDb250ZXh0KSB7Ci0gICAgVHlwZSAqcGFyYW1zW10gPSB7Ci0gICAgICBUeXBlQnVpbGRlcjxBMSwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICBUeXBlQnVpbGRlcjxBMiwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICBUeXBlQnVpbGRlcjxBMywgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgfTsKLSAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpnZXQoVHlwZUJ1aWxkZXI8UiwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgZmFsc2UpOwotICB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwKLSAgICAgICAgIGJvb2wgY3Jvc3M+Ci1jbGFzcyBUeXBlQnVpbGRlcjxSKEExLCBBMiwgQTMsIEE0KSwgY3Jvc3M+IHsKLXB1YmxpYzoKLSAgc3RhdGljIEZ1bmN0aW9uVHlwZSAqZ2V0KExMVk1Db250ZXh0ICZDb250ZXh0KSB7Ci0gICAgVHlwZSAqcGFyYW1zW10gPSB7Ci0gICAgICBUeXBlQnVpbGRlcjxBMSwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICBUeXBlQnVpbGRlcjxBMiwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICBUeXBlQnVpbGRlcjxBMywgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICBUeXBlQnVpbGRlcjxBNCwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgfTsKLSAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpnZXQoVHlwZUJ1aWxkZXI8UiwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgZmFsc2UpOwotICB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCB0eXBlbmFtZSBBNCwKLSAgICAgICAgIHR5cGVuYW1lIEE1LCBib29sIGNyb3NzPgotY2xhc3MgVHlwZUJ1aWxkZXI8UihBMSwgQTIsIEEzLCBBNCwgQTUpLCBjcm9zcz4gewotcHVibGljOgotICBzdGF0aWMgRnVuY3Rpb25UeXBlICpnZXQoTExWTUNvbnRleHQgJkNvbnRleHQpIHsKLSAgICBUeXBlICpwYXJhbXNbXSA9IHsKLSAgICAgIFR5cGVCdWlsZGVyPEExLCBjcm9zcz46OmdldChDb250ZXh0KSwKLSAgICAgIFR5cGVCdWlsZGVyPEEyLCBjcm9zcz46OmdldChDb250ZXh0KSwKLSAgICAgIFR5cGVCdWlsZGVyPEEzLCBjcm9zcz46OmdldChDb250ZXh0KSwKLSAgICAgIFR5cGVCdWlsZGVyPEE0LCBjcm9zcz46OmdldChDb250ZXh0KSwKLSAgICAgIFR5cGVCdWlsZGVyPEE1LCBjcm9zcz46OmdldChDb250ZXh0KSwKLSAgICB9OwotICAgIHJldHVybiBGdW5jdGlvblR5cGU6OmdldChUeXBlQnVpbGRlcjxSLCBjcm9zcz46OmdldChDb250ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLCBmYWxzZSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIGJvb2wgY3Jvc3M+IGNsYXNzIFR5cGVCdWlsZGVyPFIoLi4uKSwgY3Jvc3M+IHsKLXB1YmxpYzoKLSAgc3RhdGljIEZ1bmN0aW9uVHlwZSAqZ2V0KExMVk1Db250ZXh0ICZDb250ZXh0KSB7Ci0gICAgcmV0dXJuIEZ1bmN0aW9uVHlwZTo6Z2V0KFR5cGVCdWlsZGVyPFIsIGNyb3NzPjo6Z2V0KENvbnRleHQpLCB0cnVlKTsKLSAgfQotfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCBib29sIGNyb3NzPgotY2xhc3MgVHlwZUJ1aWxkZXI8UihBMSwgLi4uKSwgY3Jvc3M+IHsKLXB1YmxpYzoKLSAgc3RhdGljIEZ1bmN0aW9uVHlwZSAqZ2V0KExMVk1Db250ZXh0ICZDb250ZXh0KSB7Ci0gICAgVHlwZSAqcGFyYW1zW10gPSB7Ci0gICAgICBUeXBlQnVpbGRlcjxBMSwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgfTsKLSAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpnZXQoVHlwZUJ1aWxkZXI8UiwgY3Jvc3M+OjpnZXQoQ29udGV4dCksIHBhcmFtcywgdHJ1ZSk7Ci0gIH0KLX07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIGJvb2wgY3Jvc3M+Ci1jbGFzcyBUeXBlQnVpbGRlcjxSKEExLCBBMiwgLi4uKSwgY3Jvc3M+IHsKLXB1YmxpYzoKLSAgc3RhdGljIEZ1bmN0aW9uVHlwZSAqZ2V0KExMVk1Db250ZXh0ICZDb250ZXh0KSB7Ci0gICAgVHlwZSAqcGFyYW1zW10gPSB7Ci0gICAgICBUeXBlQnVpbGRlcjxBMSwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICBUeXBlQnVpbGRlcjxBMiwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgfTsKLSAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpnZXQoVHlwZUJ1aWxkZXI8UiwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgdHJ1ZSk7Ci0gIH0KLX07Ci10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTIsIHR5cGVuYW1lIEEzLCBib29sIGNyb3NzPgotY2xhc3MgVHlwZUJ1aWxkZXI8UihBMSwgQTIsIEEzLCAuLi4pLCBjcm9zcz4gewotcHVibGljOgotICBzdGF0aWMgRnVuY3Rpb25UeXBlICpnZXQoTExWTUNvbnRleHQgJkNvbnRleHQpIHsKLSAgICBUeXBlICpwYXJhbXNbXSA9IHsKLSAgICAgIFR5cGVCdWlsZGVyPEExLCBjcm9zcz46OmdldChDb250ZXh0KSwKLSAgICAgIFR5cGVCdWlsZGVyPEEyLCBjcm9zcz46OmdldChDb250ZXh0KSwKLSAgICAgIFR5cGVCdWlsZGVyPEEzLCBjcm9zcz46OmdldChDb250ZXh0KSwKLSAgICB9OwotICAgIHJldHVybiBGdW5jdGlvblR5cGU6OmdldChUeXBlQnVpbGRlcjxSLCBjcm9zcz46OmdldChDb250ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLCB0cnVlKTsKLSAgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyLCB0eXBlbmFtZSBBMywgdHlwZW5hbWUgQTQsCi0gICAgICAgICBib29sIGNyb3NzPgotY2xhc3MgVHlwZUJ1aWxkZXI8UihBMSwgQTIsIEEzLCBBNCwgLi4uKSwgY3Jvc3M+IHsKLXB1YmxpYzoKLSAgc3RhdGljIEZ1bmN0aW9uVHlwZSAqZ2V0KExMVk1Db250ZXh0ICZDb250ZXh0KSB7Ci0gICAgVHlwZSAqcGFyYW1zW10gPSB7Ci0gICAgICBUeXBlQnVpbGRlcjxBMSwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICBUeXBlQnVpbGRlcjxBMiwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICBUeXBlQnVpbGRlcjxBMywgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICBUeXBlQnVpbGRlcjxBNCwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgfTsKLSAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpnZXQoVHlwZUJ1aWxkZXI8UiwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgdHJ1ZSk7Ci0gIH0KLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMiwgdHlwZW5hbWUgQTMsIHR5cGVuYW1lIEE0LAotICAgICAgICAgdHlwZW5hbWUgQTUsIGJvb2wgY3Jvc3M+Ci1jbGFzcyBUeXBlQnVpbGRlcjxSKEExLCBBMiwgQTMsIEE0LCBBNSwgLi4uKSwgY3Jvc3M+IHsKLXB1YmxpYzoKLSAgc3RhdGljIEZ1bmN0aW9uVHlwZSAqZ2V0KExMVk1Db250ZXh0ICZDb250ZXh0KSB7Ci0gICAgVHlwZSAqcGFyYW1zW10gPSB7Ci0gICAgICBUeXBlQnVpbGRlcjxBMSwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICBUeXBlQnVpbGRlcjxBMiwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICBUeXBlQnVpbGRlcjxBMywgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICBUeXBlQnVpbGRlcjxBNCwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICBUeXBlQnVpbGRlcjxBNSwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgfTsKLSAgICByZXR1cm4gRnVuY3Rpb25UeXBlOjpnZXQoVHlwZUJ1aWxkZXI8UiwgY3Jvc3M+OjpnZXQoQ29udGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgdHJ1ZSk7Ci0gIH0KLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBsbHZtCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9UeXBlRmluZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1R5cGVGaW5kZXIuaAppbmRleCBjMDUwYzM4Li5hODNmODVlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1R5cGVGaW5kZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1R5cGVGaW5kZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL0lSL1R5cGVGaW5kZXIuaCAtIENsYXNzIHRvIGZpbmQgdXNlZCBzdHJ1Y3QgdHlwZXMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Vc2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVXNlLmgKaW5kZXggMjVjNDRlMC4uNmQyOWQ0NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Vc2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1VzZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vVXNlLmggLSBEZWZpbml0aW9uIG9mIHRoZSBVc2UgY2xhc3MgLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Vc2VMaXN0T3JkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVXNlTGlzdE9yZGVyLmgKaW5kZXggYjZiYjBmMS4uYTFmMzEzZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9Vc2VMaXN0T3JkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1VzZUxpc3RPcmRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vSVIvVXNlTGlzdE9yZGVyLmggLSBMTFZNIFVzZSBMaXN0IE9yZGVyIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1VzZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVXNlci5oCmluZGV4IGFlYTMxNDYuLjE5ZDg3YzUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVXNlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVXNlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vVXNlci5oIC0gVXNlciBjbGFzcyBkZWZpbml0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1ZhbHVlLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVmFsdWUuZGVmCmluZGV4IGUyZGRiYTAuLmFhZjE2NTEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVmFsdWUuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVmFsdWUuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tLS0tLSBsbHZtL0lSL1ZhbHVlLmRlZiAtIEZpbGUgdGhhdCBkZXNjcmliZXMgVmFsdWVzIC0tLXYtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9WYWx1ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9WYWx1ZS5oCmluZGV4IDRmM2E0NWMuLmQwZGUwMDggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVmFsdWUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1ZhbHVlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9WYWx1ZS5oIC0gRGVmaW5pdGlvbiBvZiB0aGUgVmFsdWUgY2xhc3MgLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVmFsdWVIYW5kbGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVmFsdWVIYW5kbGUuaAppbmRleCBkOTQ0NzJjLi4xMTM1ZDc5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1ZhbHVlSGFuZGxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9WYWx1ZUhhbmRsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFZhbHVlSGFuZGxlLmggLSBWYWx1ZSBTbWFydCBQb2ludGVyIGNsYXNzZXMgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zMDksMTUgKzMwOCw2IEBACiAgIH0KIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzUG9kTGlrZTxBc3NlcnRpbmdWSDxUPj4gewotI2lmZGVmIE5ERUJVRwotICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IHRydWU7Ci0jZWxzZQotICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOwotI2VuZGlmCi19OwotCiAvLy8gVmFsdWUgaGFuZGxlIHRoYXQgdHJhY2tzIGEgVmFsdWUgYWNyb3NzIFJBVVcuCiAvLy8KIC8vLyBUcmFja2luZ1ZIIGlzIGRlc2lnbmVkIGZvciBzaXR1YXRpb25zIHdoZXJlIGEgY2xpZW50IG5lZWRzIHRvIGhvbGQgYSBoYW5kbGUKQEAgLTU0OSwxNCArNTM5LDYgQEAKICAgfQogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBpc1BvZExpa2U8UG9pc29uaW5nVkg8VD4+IHsKLSNpZmRlZiBOREVCVUcKLSAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOwotI2Vsc2UKLSAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsKLSNlbmRpZgotfTsKLQogfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KIAogI2VuZGlmIC8vIExMVk1fSVJfVkFMVUVIQU5ETEVfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9WYWx1ZU1hcC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9WYWx1ZU1hcC5oCmluZGV4IGU3ZTMzOTEuLjZhNzliMWQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVmFsdWVNYXAuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1ZhbHVlTWFwLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVmFsdWVNYXAuaCAtIFNhZmUgbWFwIGZyb20gVmFsdWVzIHRvIGRhdGEgLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVmFsdWVTeW1ib2xUYWJsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9WYWx1ZVN5bWJvbFRhYmxlLmgKaW5kZXggMDEyZTcxNy4uMTA1ZWE3MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9WYWx1ZVN5bWJvbFRhYmxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9WYWx1ZVN5bWJvbFRhYmxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9WYWx1ZVN5bWJvbFRhYmxlLmggLSBJbXBsZW1lbnQgYSBWYWx1ZSBTeW10YWIgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVmVyaWZpZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVIvVmVyaWZpZXIuaAppbmRleCA3MjU1MTMyLi42MmMzM2M4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSL1ZlcmlmaWVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUi9WZXJpZmllci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFZlcmlmaWVyLmggLSBMTFZNIElSIFZlcmlmaWVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSUmVhZGVyL0lSUmVhZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0lSUmVhZGVyL0lSUmVhZGVyLmgKaW5kZXggYmVkZGU4OS4uMDUxNzEzMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9JUlJlYWRlci9JUlJlYWRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSVJSZWFkZXIvSVJSZWFkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tLSBsbHZtL0lSUmVhZGVyL0lSUmVhZGVyLmggLSBSZWFkZXIgZm9yIExMVk0gSVIgZmlsZXMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjEsMTEgKzIwLDIyIEBACiBuYW1lc3BhY2UgbGx2bSB7CiAKIGNsYXNzIFN0cmluZ1JlZjsKK2NsYXNzIE1lbW9yeUJ1ZmZlcjsKIGNsYXNzIE1lbW9yeUJ1ZmZlclJlZjsKIGNsYXNzIE1vZHVsZTsKIGNsYXNzIFNNRGlhZ25vc3RpYzsKIGNsYXNzIExMVk1Db250ZXh0OwogCisvLy8gSWYgdGhlIGdpdmVuIE1lbW9yeUJ1ZmZlciBob2xkcyBhIGJpdGNvZGUgaW1hZ2UsIHJldHVybiBhIE1vZHVsZQorLy8vIGZvciBpdCB3aGljaCBkb2VzIGxhenkgZGVzZXJpYWxpemF0aW9uIG9mIGZ1bmN0aW9uIGJvZGllcy4gIE90aGVyd2lzZSwKKy8vLyBhdHRlbXB0IHRvIHBhcnNlIGl0IGFzIExMVk0gQXNzZW1ibHkgYW5kIHJldHVybiBhIGZ1bGx5IHBvcHVsYXRlZAorLy8vIE1vZHVsZS4gVGhlIFNob3VsZExhenlMb2FkTWV0YWRhdGEgZmxhZyBpcyBwYXNzZWQgZG93biB0byB0aGUgYml0Y29kZQorLy8vIHJlYWRlciB0byBvcHRpb25hbGx5IGVuYWJsZSBsYXp5IG1ldGFkYXRhIGxvYWRpbmcuIFRoaXMgdGFrZXMgb3duZXJzaGlwCisvLy8gb2YgXHAgQnVmZmVyLgorc3RkOjp1bmlxdWVfcHRyPE1vZHVsZT4gZ2V0TGF6eUlSTW9kdWxlKHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCdWZmZXI+IEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTURpYWdub3N0aWMgJkVyciwgTExWTUNvbnRleHQgJkNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBTaG91bGRMYXp5TG9hZE1ldGFkYXRhID0gZmFsc2UpOworCiAvLy8gSWYgdGhlIGdpdmVuIGZpbGUgaG9sZHMgYSBiaXRjb2RlIGltYWdlLCByZXR1cm4gYSBNb2R1bGUKIC8vLyBmb3IgaXQgd2hpY2ggZG9lcyBsYXp5IGRlc2VyaWFsaXphdGlvbiBvZiBmdW5jdGlvbiBib2RpZXMuICBPdGhlcndpc2UsCiAvLy8gYXR0ZW1wdCB0byBwYXJzZSBpdCBhcyBMTFZNIEFzc2VtYmx5IGFuZCByZXR1cm4gYSBmdWxseSBwb3B1bGF0ZWQKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vSW5pdGlhbGl6ZVBhc3Nlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Jbml0aWFsaXplUGFzc2VzLmgKaW5kZXggMWE5YzZmOC4uZmU2YzE3MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Jbml0aWFsaXplUGFzc2VzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Jbml0aWFsaXplUGFzc2VzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9Jbml0aWFsaXplUGFzc2VzLmggLSBJbml0aWFsaXplIEFsbCBQYXNzZXMgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC04NSw2ICs4NCw3IEBACiB2b2lkIGluaXRpYWxpemVCcmFuY2hSZWxheGF0aW9uUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUJyZWFrQ3JpdGljYWxFZGdlc1Bhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVCcmVha0ZhbHNlRGVwc1Bhc3MoUGFzc1JlZ2lzdHJ5Jik7Cit2b2lkIGluaXRpYWxpemVDYW5vbmljYWxpemVBbGlhc2VzTGVnYWN5UGFzc1Bhc3MoUGFzc1JlZ2lzdHJ5ICYpOwogdm9pZCBpbml0aWFsaXplQ0ZHT25seVByaW50ZXJMZWdhY3lQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUNGR09ubHlWaWV3ZXJMZWdhY3lQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUNGR1ByaW50ZXJMZWdhY3lQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKQEAgLTE0MCw2ICsxNDAsNyBAQAogdm9pZCBpbml0aWFsaXplRXhwYW5kTWVtQ21wUGFzc1Bhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVFeHBhbmRQb3N0UkFQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplRXhwYW5kUmVkdWN0aW9uc1Bhc3MoUGFzc1JlZ2lzdHJ5Jik7Cit2b2lkIGluaXRpYWxpemVNYWtlR3VhcmRzRXhwbGljaXRMZWdhY3lQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUV4dGVybmFsQUFXcmFwcGVyUGFzc1Bhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVGRW50cnlJbnNlcnRlclBhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVGaW5hbGl6ZU1hY2hpbmVCdW5kbGVzUGFzcyhQYXNzUmVnaXN0cnkmKTsKQEAgLTE4Miw2ICsxODMsNyBAQAogdm9pZCBpbml0aWFsaXplSW5zdHJ1Y3Rpb25Db21iaW5pbmdQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUluc3RydWN0aW9uU2VsZWN0UGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUludGVybGVhdmVkQWNjZXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKK3ZvaWQgaW5pdGlhbGl6ZUludGVybGVhdmVkTG9hZENvbWJpbmVQYXNzKFBhc3NSZWdpc3RyeSAmKTsKIHZvaWQgaW5pdGlhbGl6ZUludGVybmFsaXplTGVnYWN5UGFzc1Bhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVJbnRlcnZhbFBhcnRpdGlvblBhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVKdW1wVGhyZWFkaW5nUGFzcyhQYXNzUmVnaXN0cnkmKTsKQEAgLTE5Niw2ICsxOTgsNyBAQAogdm9pZCBpbml0aWFsaXplTGVnYWN5TElDTVBhc3NQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplTGVnYWN5TG9vcFNpbmtQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUxlZ2FsaXplclBhc3MoUGFzc1JlZ2lzdHJ5Jik7Cit2b2lkIGluaXRpYWxpemVHSVNlbENTRUFuYWx5c2lzV3JhcHBlclBhc3NQYXNzKFBhc3NSZWdpc3RyeSAmKTsKIHZvaWQgaW5pdGlhbGl6ZUxpYkNhbGxzU2hyaW5rV3JhcExlZ2FjeVBhc3NQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplTGludFBhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVMaXZlRGVidWdWYWx1ZXNQYXNzKFBhc3NSZWdpc3RyeSYpOwpAQCAtMjA1LDcgKzIwOCw3IEBACiB2b2lkIGluaXRpYWxpemVMaXZlUmVnTWF0cml4UGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUxpdmVTdGFja3NQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplTGl2ZVZhcmlhYmxlc1Bhc3MoUGFzc1JlZ2lzdHJ5Jik7Ci12b2lkIGluaXRpYWxpemVMb2FkU3RvcmVWZWN0b3JpemVyUGFzcyhQYXNzUmVnaXN0cnkmKTsKK3ZvaWQgaW5pdGlhbGl6ZUxvYWRTdG9yZVZlY3Rvcml6ZXJMZWdhY3lQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUxvYWRlclBhc3NQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplTG9jYWxTdGFja1Nsb3RQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUxvY2FsaXplclBhc3MoUGFzc1JlZ2lzdHJ5Jik7CkBAIC0yMzcsNiArMjQwLDcgQEAKIHZvaWQgaW5pdGlhbGl6ZUxvd2VyRW11VExTUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUxvd2VyRXhwZWN0SW50cmluc2ljUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUxvd2VyR3VhcmRJbnRyaW5zaWNMZWdhY3lQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKK3ZvaWQgaW5pdGlhbGl6ZUxvd2VyV2lkZW5hYmxlQ29uZGl0aW9uTGVnYWN5UGFzc1Bhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVMb3dlckludHJpbnNpY3NQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplTG93ZXJJbnZva2VMZWdhY3lQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZUxvd2VyU3dpdGNoUGFzcyhQYXNzUmVnaXN0cnkmKTsKQEAgLTI3MSw3ICsyNzUsNyBAQAogdm9pZCBpbml0aWFsaXplTWVtb3J5RGVwZW5kZW5jZVdyYXBwZXJQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZU1lbW9yeVNTQVByaW50ZXJMZWdhY3lQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZU1lbW9yeVNTQVdyYXBwZXJQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKLXZvaWQgaW5pdGlhbGl6ZU1lbW9yeVNhbml0aXplclBhc3MoUGFzc1JlZ2lzdHJ5Jik7Cit2b2lkIGluaXRpYWxpemVNZW1vcnlTYW5pdGl6ZXJMZWdhY3lQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZU1lcmdlRnVuY3Rpb25zUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZU1lcmdlSUNtcHNQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplTWVyZ2VkTG9hZFN0b3JlTW90aW9uTGVnYWN5UGFzc1Bhc3MoUGFzc1JlZ2lzdHJ5Jik7CkBAIC0zNTQsNyArMzU4LDcgQEAKIHZvaWQgaW5pdGlhbGl6ZVNhbml0aXplckNvdmVyYWdlTW9kdWxlUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZVNjYWxhckV2b2x1dGlvbldyYXBwZXJQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZVNjYWxhcml6ZU1hc2tlZE1lbUludHJpblBhc3MoUGFzc1JlZ2lzdHJ5Jik7Ci12b2lkIGluaXRpYWxpemVTY2FsYXJpemVyUGFzcyhQYXNzUmVnaXN0cnkmKTsKK3ZvaWQgaW5pdGlhbGl6ZVNjYWxhcml6ZXJMZWdhY3lQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZVNjYXZlbmdlclRlc3RQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplU2NvcGVkTm9BbGlhc0FBV3JhcHBlclBhc3NQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplU2VwYXJhdGVDb25zdE9mZnNldEZyb21HRVBQYXNzKFBhc3NSZWdpc3RyeSYpOwpAQCAtMzcxLDYgKzM3NSw4IEBACiB2b2lkIGluaXRpYWxpemVTdGFja0NvbG9yaW5nUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZVN0YWNrTWFwTGl2ZW5lc3NQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplU3RhY2tQcm90ZWN0b3JQYXNzKFBhc3NSZWdpc3RyeSYpOwordm9pZCBpbml0aWFsaXplU3RhY2tTYWZldHlHbG9iYWxJbmZvV3JhcHBlclBhc3NQYXNzKFBhc3NSZWdpc3RyeSAmKTsKK3ZvaWQgaW5pdGlhbGl6ZVN0YWNrU2FmZXR5SW5mb1dyYXBwZXJQYXNzUGFzcyhQYXNzUmVnaXN0cnkgJik7CiB2b2lkIGluaXRpYWxpemVTdGFja1Nsb3RDb2xvcmluZ1Bhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVTdHJhaWdodExpbmVTdHJlbmd0aFJlZHVjZVBhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVTdHJpcERlYWREZWJ1Z0luZm9QYXNzKFBhc3NSZWdpc3RyeSYpOwpAQCAtMzg2LDcgKzM5Miw3IEBACiB2b2lkIGluaXRpYWxpemVUYXJnZXRMaWJyYXJ5SW5mb1dyYXBwZXJQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZVRhcmdldFBhc3NDb25maWdQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplVGFyZ2V0VHJhbnNmb3JtSW5mb1dyYXBwZXJQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKLXZvaWQgaW5pdGlhbGl6ZVRocmVhZFNhbml0aXplclBhc3MoUGFzc1JlZ2lzdHJ5Jik7Cit2b2lkIGluaXRpYWxpemVUaHJlYWRTYW5pdGl6ZXJMZWdhY3lQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZVR3b0FkZHJlc3NJbnN0cnVjdGlvblBhc3NQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplVHlwZUJhc2VkQUFXcmFwcGVyUGFzc1Bhc3MoUGFzc1JlZ2lzdHJ5Jik7CiB2b2lkIGluaXRpYWxpemVVbmlmeUZ1bmN0aW9uRXhpdE5vZGVzUGFzcyhQYXNzUmVnaXN0cnkmKTsKQEAgLTM5Niw2ICs0MDIsNyBAQAogdm9pZCBpbml0aWFsaXplVmVyaWZpZXJMZWdhY3lQYXNzUGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZVZpcnRSZWdNYXBQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplVmlydFJlZ1Jld3JpdGVyUGFzcyhQYXNzUmVnaXN0cnkmKTsKK3ZvaWQgaW5pdGlhbGl6ZVdhcm5NaXNzZWRUcmFuc2Zvcm1hdGlvbnNMZWdhY3lQYXNzKFBhc3NSZWdpc3RyeSAmKTsKIHZvaWQgaW5pdGlhbGl6ZVdhc21FSFByZXBhcmVQYXNzKFBhc3NSZWdpc3RyeSYpOwogdm9pZCBpbml0aWFsaXplV2hvbGVQcm9ncmFtRGV2aXJ0UGFzcyhQYXNzUmVnaXN0cnkmKTsKIHZvaWQgaW5pdGlhbGl6ZVdpbkVIUHJlcGFyZVBhc3MoUGFzc1JlZ2lzdHJ5Jik7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9DYWNoaW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9DYWNoaW5nLmgKaW5kZXggNzIwMWFiMy4uYzIwZDgxOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MVE8vQ2FjaGluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTFRPL0NhY2hpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDYWNoaW5nLmggLSBMTFZNIExpbmsgVGltZSBPcHRpbWl6ZXIgQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MVE8vQ29uZmlnLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9Db25maWcuaAppbmRleCA1N2JiYTVlLi5mMGUxYjFkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9Db25maWcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9Db25maWcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LUNvbmZpZy5oIC0gTExWTSBMaW5rIFRpbWUgT3B0aW1pemVyIENvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNDksNiArNDgsMTAgQEAKICAgLy8vIFVzZSB0aGUgbmV3IHBhc3MgbWFuYWdlcgogICBib29sIFVzZU5ld1BNID0gZmFsc2U7CiAKKyAgLy8vIEZsYWcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgb3B0aW1pemVyIHNob3VsZCBub3QgYXNzdW1lIGJ1aWx0aW5zIGFyZSBwcmVzZW50CisgIC8vLyBvbiB0aGUgdGFyZ2V0LgorICBib29sIEZyZWVzdGFuZGluZyA9IGZhbHNlOworCiAgIC8vLyBEaXNhYmxlIGVudGlyZWx5IHRoZSBvcHRpbWl6ZXIsIGluY2x1ZGluZyBpbXBvcnRpbmcgZm9yIFRoaW5MVE8KICAgYm9vbCBDb2RlR2VuT25seSA9IGZhbHNlOwogCkBAIC03Myw2ICs3Niw5IEBACiAgIC8vLyBTYW1wbGUgUEdPIHByb2ZpbGUgcGF0aC4KICAgc3RkOjpzdHJpbmcgU2FtcGxlUHJvZmlsZTsKIAorICAvLy8gTmFtZSByZW1hcHBpbmcgZmlsZSBmb3IgcHJvZmlsZSBkYXRhLgorICBzdGQ6OnN0cmluZyBQcm9maWxlUmVtYXBwaW5nOworCiAgIC8vLyBUaGUgZGlyZWN0b3J5IHRvIHN0b3JlIC5kd28gZmlsZXMuCiAgIHN0ZDo6c3RyaW5nIER3b0RpcjsKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MVE8vTFRPLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9MVE8uaAppbmRleCAyYTNiYzkxLi4xZjlkNzY0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9MVE8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9MVE8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LUxUTy5oIC0gTExWTSBMaW5rIFRpbWUgT3B0aW1pemVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNjAsNiArNTksMTkgQEAKICAgICBNb2R1bGVTdW1tYXJ5SW5kZXggJkluZGV4LAogICAgIGZ1bmN0aW9uX3JlZjxib29sKFN0cmluZ1JlZiwgR2xvYmFsVmFsdWU6OkdVSUQpPiBpc0V4cG9ydGVkKTsKIAorLy8vIENvbXB1dGVzIGEgdW5pcXVlIGhhc2ggZm9yIHRoZSBNb2R1bGUgY29uc2lkZXJpbmcgdGhlIGN1cnJlbnQgbGlzdCBvZgorLy8vIGV4cG9ydC9pbXBvcnQgYW5kIG90aGVyIGdsb2JhbCBhbmFseXNpcyByZXN1bHRzLgorLy8vIFRoZSBoYXNoIGlzIHByb2R1Y2VkIGluIFxwIEtleS4KK3ZvaWQgY29tcHV0ZUxUT0NhY2hlS2V5KAorICAgIFNtYWxsU3RyaW5nPDQwPiAmS2V5LCBjb25zdCBsdG86OkNvbmZpZyAmQ29uZiwKKyAgICBjb25zdCBNb2R1bGVTdW1tYXJ5SW5kZXggJkluZGV4LCBTdHJpbmdSZWYgTW9kdWxlSUQsCisgICAgY29uc3QgRnVuY3Rpb25JbXBvcnRlcjo6SW1wb3J0TWFwVHkgJkltcG9ydExpc3QsCisgICAgY29uc3QgRnVuY3Rpb25JbXBvcnRlcjo6RXhwb3J0U2V0VHkgJkV4cG9ydExpc3QsCisgICAgY29uc3Qgc3RkOjptYXA8R2xvYmFsVmFsdWU6OkdVSUQsIEdsb2JhbFZhbHVlOjpMaW5rYWdlVHlwZXM+ICZSZXNvbHZlZE9EUiwKKyAgICBjb25zdCBHVlN1bW1hcnlNYXBUeSAmRGVmaW5lZEdsb2JhbHMsCisgICAgY29uc3Qgc3RkOjpzZXQ8R2xvYmFsVmFsdWU6OkdVSUQ+ICZDZmlGdW5jdGlvbkRlZnMgPSB7fSwKKyAgICBjb25zdCBzdGQ6OnNldDxHbG9iYWxWYWx1ZTo6R1VJRD4gJkNmaUZ1bmN0aW9uRGVjbHMgPSB7fSk7CisKIG5hbWVzcGFjZSBsdG8gewogCiAvLy8gR2l2ZW4gdGhlIG9yaWdpbmFsIFxwIFBhdGggdG8gYW4gb3V0cHV0IGZpbGUsIHJlcGxhY2UgYW55IHBhdGgKQEAgLTM4Niw3ICszOTgsMTIgQEAKICAgRXJyb3IgcnVuUmVndWxhckxUTyhBZGRTdHJlYW1GbiBBZGRTdHJlYW0pOwogICBFcnJvciBydW5UaGluTFRPKEFkZFN0cmVhbUZuIEFkZFN0cmVhbSwgTmF0aXZlT2JqZWN0Q2FjaGUgQ2FjaGUpOwogCisgIEVycm9yIGNoZWNrUGFydGlhbGx5U3BsaXQoKTsKKwogICBtdXRhYmxlIGJvb2wgQ2FsbGVkR2V0TWF4VGFza3MgPSBmYWxzZTsKKworICAvLyBVc2UgT3B0aW9uYWwgdG8gZGlzdGluZ3Vpc2ggZmFsc2UgZnJvbSBub3QgeWV0IGluaXRpYWxpemVkLgorICBPcHRpb25hbDxib29sPiBFbmFibGVTcGxpdExUT1VuaXQ7CiB9OwogCiAvLy8gVGhlIHJlc29sdXRpb24gZm9yIGEgc3ltYm9sLiBUaGUgbGlua2VyIG11c3QgcHJvdmlkZSBhIFN5bWJvbFJlc29sdXRpb24gZm9yCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9MVE9CYWNrZW5kLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9MVE9CYWNrZW5kLmgKaW5kZXggZDQ3NDNmNi4uNGZmOGExOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MVE8vTFRPQmFja2VuZC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTFRPL0xUT0JhY2tlbmQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LUxUT0JhY2tlbmQuaCAtIExMVk0gTGluayBUaW1lIE9wdGltaXplciBCYWNrZW5kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MVE8vU3VtbWFyeUJhc2VkT3B0aW1pemF0aW9ucy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MVE8vU3VtbWFyeUJhc2VkT3B0aW1pemF0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2OTdjODIKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9TdW1tYXJ5QmFzZWRPcHRpbWl6YXRpb25zLmgKQEAgLTAsMCArMSwxNiBAQAorLy89LSBsbHZtL0xUTy9TdW1tYXJ5QmFzZWRPcHRpbWl6YXRpb25zLmggLUxpbmsgdGltZSBvcHRpbWl6YXRpb25zLSotIEMrKyAtKi09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX0xUT19TVU1NQVJZQkFTRURPUFRJTUlaQVRJT05TX0gKKyNkZWZpbmUgTExWTV9MVE9fU1VNTUFSWUJBU0VET1BUSU1JWkFUSU9OU19ICituYW1lc3BhY2UgbGx2bSB7CitjbGFzcyBNb2R1bGVTdW1tYXJ5SW5kZXg7Cit2b2lkIGNvbXB1dGVTeW50aGV0aWNDb3VudHMoTW9kdWxlU3VtbWFyeUluZGV4ICZJbmRleCk7CisKK30gLy8gbmFtZXNwYWNlIGxsdm0KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MVE8vbGVnYWN5L0xUT0NvZGVHZW5lcmF0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTFRPL2xlZ2FjeS9MVE9Db2RlR2VuZXJhdG9yLmgKaW5kZXggZjQ4YWIwMi4uMzdmZWYxOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MVE8vbGVnYWN5L0xUT0NvZGVHZW5lcmF0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9sZWdhY3kvTFRPQ29kZUdlbmVyYXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tTFRPQ29kZUdlbmVyYXRvci5oIC0gTExWTSBMaW5rIFRpbWUgT3B0aW1pemVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00OCw2ICs0Nyw5IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAorLy8vIEVuYWJsZSBnbG9iYWwgdmFsdWUgaW50ZXJuYWxpemF0aW9uIGluIExUTy4KK2V4dGVybiBsbHZtOjpjbDo6b3B0PGJvb2w+IEVuYWJsZUxUT0ludGVybmFsaXphdGlvbjsKKwogbmFtZXNwYWNlIGxsdm0gewogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEFycmF5UmVmOwogICBjbGFzcyBMTFZNQ29udGV4dDsKQEAgLTIzMyw3ICsyMzUsNyBAQAogICB1bnNpZ25lZCBPcHRMZXZlbCA9IDI7CiAgIGx0b19kaWFnbm9zdGljX2hhbmRsZXJfdCBEaWFnSGFuZGxlciA9IG51bGxwdHI7CiAgIHZvaWQgKkRpYWdDb250ZXh0ID0gbnVsbHB0cjsKLSAgYm9vbCBTaG91bGRJbnRlcm5hbGl6ZSA9IHRydWU7CisgIGJvb2wgU2hvdWxkSW50ZXJuYWxpemUgPSBFbmFibGVMVE9JbnRlcm5hbGl6YXRpb247CiAgIGJvb2wgU2hvdWxkRW1iZWRVc2VsaXN0cyA9IGZhbHNlOwogICBib29sIFNob3VsZFJlc3RvcmVHbG9iYWxzTGlua2FnZSA9IGZhbHNlOwogICBUYXJnZXRNYWNoaW5lOjpDb2RlR2VuRmlsZVR5cGUgRmlsZVR5cGUgPSBUYXJnZXRNYWNoaW5lOjpDR0ZUX09iamVjdEZpbGU7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9sZWdhY3kvTFRPTW9kdWxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9sZWdhY3kvTFRPTW9kdWxlLmgKaW5kZXggMDE3ZTIyMy4uMDA2NTIxYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MVE8vbGVnYWN5L0xUT01vZHVsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTFRPL2xlZ2FjeS9MVE9Nb2R1bGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LUxUT01vZHVsZS5oIC0gTExWTSBMaW5rIFRpbWUgT3B0aW1pemVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MVE8vbGVnYWN5L1RoaW5MVE9Db2RlR2VuZXJhdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9sZWdhY3kvVGhpbkxUT0NvZGVHZW5lcmF0b3IuaAppbmRleCAyZmYzMTdhLi4xNzMwZTgzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9sZWdhY3kvVGhpbkxUT0NvZGVHZW5lcmF0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9sZWdhY3kvVGhpbkxUT0NvZGVHZW5lcmF0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LVRoaW5MVE9Db2RlR2VuZXJhdG9yLmggLSBMTFZNIExpbmsgVGltZSBPcHRpbWl6ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjczLDggKzI3Miw4IEBACiAgIC8qKgogICAgKiBDb21wdXRlIGFuZCBlbWl0IHRoZSBpbXBvcnRlZCBmaWxlcyBmb3IgbW9kdWxlIGF0IFxwIE1vZHVsZVBhdGguCiAgICAqLwotICBzdGF0aWMgdm9pZCBlbWl0SW1wb3J0cyhTdHJpbmdSZWYgTW9kdWxlUGF0aCwgU3RyaW5nUmVmIE91dHB1dE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE1vZHVsZVN1bW1hcnlJbmRleCAmSW5kZXgpOworICB2b2lkIGVtaXRJbXBvcnRzKE1vZHVsZSAmTW9kdWxlLCBTdHJpbmdSZWYgT3V0cHV0TmFtZSwKKyAgICAgICAgICAgICAgICAgICBNb2R1bGVTdW1tYXJ5SW5kZXggJkluZGV4KTsKIAogICAvKioKICAgICogUGVyZm9ybSBjcm9zcy1tb2R1bGUgaW1wb3J0aW5nIGZvciB0aGUgbW9kdWxlIGlkZW50aWZpZWQgYnkKQEAgLTI4NSw4ICsyODQsOCBAQAogICAvKioKICAgICogQ29tcHV0ZSB0aGUgbGlzdCBvZiBzdW1tYXJpZXMgbmVlZGVkIGZvciBpbXBvcnRpbmcgaW50byBtb2R1bGUuCiAgICAqLwotICBzdGF0aWMgdm9pZCBnYXRoZXJJbXBvcnRlZFN1bW1hcmllc0Zvck1vZHVsZSgKLSAgICAgIFN0cmluZ1JlZiBNb2R1bGVQYXRoLCBNb2R1bGVTdW1tYXJ5SW5kZXggJkluZGV4LAorICB2b2lkIGdhdGhlckltcG9ydGVkU3VtbWFyaWVzRm9yTW9kdWxlKAorICAgICAgTW9kdWxlICZNb2R1bGUsIE1vZHVsZVN1bW1hcnlJbmRleCAmSW5kZXgsCiAgICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgR1ZTdW1tYXJ5TWFwVHk+ICZNb2R1bGVUb1N1bW1hcmllc0ZvckluZGV4KTsKIAogICAvKioKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTFRPL2xlZ2FjeS9VcGRhdGVDb21waWxlclVzZWQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTFRPL2xlZ2FjeS9VcGRhdGVDb21waWxlclVzZWQuaAppbmRleCA0YmUwMDI3Li5hZjlkNjJiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xUTy9sZWdhY3kvVXBkYXRlQ29tcGlsZXJVc2VkLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MVE8vbGVnYWN5L1VwZGF0ZUNvbXBpbGVyVXNlZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PS0tLS0tLSBVcGRhdGVDb21waWxlclVzZWQuaCAtIExMVk0gTGluayBUaW1lIE9wdGltaXplciBVdGlsaXR5IC0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xpbmVFZGl0b3IvTGluZUVkaXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MaW5lRWRpdG9yL0xpbmVFZGl0b3IuaAppbmRleCA2ODk5NWQwLi4wYmVhZjFiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xpbmVFZGl0b3IvTGluZUVkaXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTGluZUVkaXRvci9MaW5lRWRpdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vTGluZUVkaXRvci9MaW5lRWRpdG9yLmggLSBsaW5lIGVkaXRvciAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xpbmtBbGxJUi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MaW5rQWxsSVIuaAppbmRleCA0ZjRhZjcxLi40YjBhYWJlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xpbmtBbGxJUi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTGlua0FsbElSLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLS0tIExpbmtBbGxJUi5oIC0gUmVmZXJlbmNlIEFsbCBWTUNvcmUgQ29kZSAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xpbmtBbGxQYXNzZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTGlua0FsbFBhc3Nlcy5oCmluZGV4IGUyMzc4Y2UuLmVjODFiMTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTGlua0FsbFBhc3Nlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTGlua0FsbFBhc3Nlcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vTGlua0FsbFBhc3Nlcy5oIC0tLS0tLS0tLS0tLSBSZWZlcmVuY2UgQWxsIFBhc3NlcyAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNTAsNiArNDksNyBAQAogI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9TY2FsYXIuaCIKICNpbmNsdWRlICJsbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0dWTi5oIgogI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvSW5zdFNpbXBsaWZ5UGFzcy5oIgorI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvU2NhbGFyaXplci5oIgogI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9VdGlscy5oIgogI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9VdGlscy9TeW1ib2xSZXdyaXRlci5oIgogI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9VdGlscy9VbmlmeUZ1bmN0aW9uRXhpdE5vZGVzLmgiCkBAIC0yMTksNiArMjE5LDcgQEAKICAgICAgICh2b2lkKSBsbHZtOjpjcmVhdGVGbG9hdDJJbnRQYXNzKCk7CiAgICAgICAodm9pZCkgbGx2bTo6Y3JlYXRlRWxpbWluYXRlQXZhaWxhYmxlRXh0ZXJuYWxseVBhc3MoKTsKICAgICAgICh2b2lkKSBsbHZtOjpjcmVhdGVTY2FsYXJpemVNYXNrZWRNZW1JbnRyaW5QYXNzKCk7CisgICAgICAodm9pZCkgbGx2bTo6Y3JlYXRlV2Fybk1pc3NlZFRyYW5zZm9ybWF0aW9uc1Bhc3MoKTsKIAogICAgICAgKHZvaWQpbmV3IGxsdm06OkludGVydmFsUGFydGl0aW9uKCk7CiAgICAgICAodm9pZCluZXcgbGx2bTo6U2NhbGFyRXZvbHV0aW9uV3JhcHBlclBhc3MoKTsKQEAgLTIyOCw3ICsyMjksOCBAQAogICAgICAgbGx2bTo6VGFyZ2V0TGlicmFyeUluZm8gVExJKFRMSUkpOwogICAgICAgbGx2bTo6QWxpYXNBbmFseXNpcyBBQShUTEkpOwogICAgICAgbGx2bTo6QWxpYXNTZXRUcmFja2VyIFgoQUEpOwotICAgICAgWC5hZGQobnVsbHB0ciwgMCwgbGx2bTo6QUFNRE5vZGVzKCkpOyAvLyBmb3IgLXByaW50LWFsaWFzLXNldHMKKyAgICAgIFguYWRkKG51bGxwdHIsIGxsdm06OkxvY2F0aW9uU2l6ZTo6dW5rbm93bigpLAorICAgICAgICAgICAgbGx2bTo6QUFNRE5vZGVzKCkpOyAvLyBmb3IgLXByaW50LWFsaWFzLXNldHMKICAgICAgICh2b2lkKSBsbHZtOjpBcmVTdGF0aXN0aWNzRW5hYmxlZCgpOwogICAgICAgKHZvaWQpIGxsdm06OnN5czo6UnVubmluZ09uVmFsZ3JpbmQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xpbmtlci9JUk1vdmVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL0xpbmtlci9JUk1vdmVyLmgKaW5kZXggMjM1YWRhNC4uZTVkZjgzZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MaW5rZXIvSVJNb3Zlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTGlua2VyL0lSTW92ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJUk1vdmVyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTGlua2VyL0xpbmtlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MaW5rZXIvTGlua2VyLmgKaW5kZXggNzc3NmM3Mi4uYzliMWQ0MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MaW5rZXIvTGlua2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9MaW5rZXIvTGlua2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTGlua2VyLmggLSBNb2R1bGUgTGlua2VyIEludGVyZmFjZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL0NvbnN0YW50UG9vbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvQ29uc3RhbnRQb29scy5oCmluZGV4IGVmMzMyNTAuLjJmZTVjZTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvQ29uc3RhbnRQb29scy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvQ29uc3RhbnRQb29scy5oCkBAIC0xLDkgKzEsOCBAQAotLy89PT0tIENvbnN0YW50UG9vbC5oIC0gS2VlcCB0cmFjayBvZiBhc3NlbWJsZXItZ2VuZXJhdGVkICAtLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vPT09LSBDb25zdGFudFBvb2xzLmggLSBLZWVwIHRyYWNrIG9mIGFzc2VtYmxlci1nZW5lcmF0ZWQgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9MYW5lQml0bWFzay5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9MYW5lQml0bWFzay5oCmluZGV4IDhjMGI0ZWMuLmQ1ZjY5MjggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTGFuZUJpdG1hc2suaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL0xhbmVCaXRtYXNrLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9NQy9MYW5lQml0bWFzay5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQXNtQmFja2VuZC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0FzbUJhY2tlbmQuaAppbmRleCAwMzBkM2MwLi4xZjNhZDZjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQXNtQmFja2VuZC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc21CYWNrZW5kLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9NQy9NQ0FzbUJhY2tlbmQuaCAtIE1DIEFzbSBCYWNrZW5kIC0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC04OCw2ICs4NywyMiBAQAogICAgIHJldHVybiBmYWxzZTsKICAgfQogCisgIC8vLyBIb29rIHRvIGNoZWNrIGlmIGV4dHJhIG5vcCBieXRlcyBtdXN0IGJlIGluc2VydGVkIGZvciBhbGlnbm1lbnQgZGlyZWN0aXZlLgorICAvLy8gRm9yIHNvbWUgdGFyZ2V0cyB0aGlzIG1heSBiZSBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gc3VwcG9ydCBsaW5rZXIKKyAgLy8vIHJlbGF4YXRpb24uIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gaW5zZXJ0IGFyZSByZXR1cm5lZCBpbiBTaXplLgorICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0RXh0cmFOb3BCeXRlc0ZvckNvZGVBbGlnbihjb25zdCBNQ0FsaWduRnJhZ21lbnQgJkFGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAmU2l6ZSkgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIC8vLyBIb29rIHdoaWNoIGluZGljYXRlcyBpZiB0aGUgdGFyZ2V0IHJlcXVpcmVzIGEgZml4dXAgdG8gYmUgZ2VuZXJhdGVkIHdoZW4KKyAgLy8vIGhhbmRsaW5nIGFuIGFsaWduIGRpcmVjdGl2ZSBpbiBhbiBleGVjdXRhYmxlIHNlY3Rpb24KKyAgdmlydHVhbCBib29sIHNob3VsZEluc2VydEZpeHVwRm9yQ29kZUFsaWduKE1DQXNzZW1ibGVyICZBc20sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBNQ0FzbUxheW91dCAmTGF5b3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUNBbGlnbkZyYWdtZW50ICZBRikgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCiAgIC8vLyBBcHBseSB0aGUgXHAgVmFsdWUgZm9yIGdpdmVuIFxwIEZpeHVwIGludG8gdGhlIHByb3ZpZGVkIGRhdGEgZnJhZ21lbnQsIGF0CiAgIC8vLyB0aGUgb2Zmc2V0IHNwZWNpZmllZCBieSB0aGUgZml4dXAgYW5kIGZvbGxvd2luZyB0aGUgZml4dXAga2luZCBhcwogICAvLy8gYXBwcm9wcmlhdGUuIEVycm9ycyAoc3VjaCBhcyBhbiBvdXQgb2YgcmFuZ2UgZml4dXAgdmFsdWUpIHNob3VsZCBiZQpAQCAtMTY1LDYgKzE4MCwxMSBAQAogICAgIHJldHVybiAwOwogICB9CiAKKyAgLy8vIENoZWNrIHdoZXRoZXIgYSBnaXZlbiBzeW1ib2wgaGFzIGJlZW4gZmxhZ2dlZCB3aXRoIE1JQ1JPTUlQUyBmbGFnLgorICB2aXJ0dWFsIGJvb2wgaXNNaWNyb01pcHMoY29uc3QgTUNTeW1ib2wgKlN5bSkgY29uc3QgeworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCiAgIC8vLyBIYW5kbGVzIGFsbCB0YXJnZXQgcmVsYXRlZCBjb2RlIHBhZGRpbmcgd2hlbiBzdGFydGluZyB0byB3cml0ZSBhIG5ldwogICAvLy8gYmFzaWMgYmxvY2sgdG8gYW4gb2JqZWN0IGZpbGUuCiAgIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0FzbUluZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc21JbmZvLmgKaW5kZXggMTIwZmI4Zi4uZTg2MWRmNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0FzbUluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQXNtSW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL01DL01DQXNtSW5mby5oIC0gQXNtIGluZm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00OTIsNyArNDkxLDcgQEAKICAgU3RyaW5nUmVmIGdldFByaXZhdGVMYWJlbFByZWZpeCgpIGNvbnN0IHsgcmV0dXJuIFByaXZhdGVMYWJlbFByZWZpeDsgfQogCiAgIGJvb2wgaGFzTGlua2VyUHJpdmF0ZUdsb2JhbFByZWZpeCgpIGNvbnN0IHsKLSAgICByZXR1cm4gTGlua2VyUHJpdmF0ZUdsb2JhbFByZWZpeFswXSAhPSAnXDAnOworICAgIHJldHVybiAhTGlua2VyUHJpdmF0ZUdsb2JhbFByZWZpeC5lbXB0eSgpOwogICB9CiAKICAgU3RyaW5nUmVmIGdldExpbmtlclByaXZhdGVHbG9iYWxQcmVmaXgoKSBjb25zdCB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQXNtSW5mb0NPRkYuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc21JbmZvQ09GRi5oCmluZGV4IDAxYzhhZTQuLjFkZmI0NzUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc21JbmZvQ09GRi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc21JbmZvQ09GRi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DQXNtSW5mb0NPRkYuaCAtIENPRkYgYXNtIHByb3BlcnRpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0FzbUluZm9EYXJ3aW4uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc21JbmZvRGFyd2luLmgKaW5kZXggYTUzM2Q2MC4uYzg4OWNlOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0FzbUluZm9EYXJ3aW4uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQXNtSW5mb0Rhcndpbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DQXNtSW5mb0Rhcndpbi5oIC0gRGFyd2luIGFzbSBwcm9wZXJ0aWVzIC0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQXNtSW5mb0VMRi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0FzbUluZm9FTEYuaAppbmRleCBmMTEzYWZjLi5hYTJlNTg3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQXNtSW5mb0VMRi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc21JbmZvRUxGLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9NQy9NQ0FzbUluZm9FTEYuaCAtIEVMRiBBc20gaW5mbyAtLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQXNtSW5mb1dhc20uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc21JbmZvV2FzbS5oCmluZGV4IDcxYzZlZTIuLjNhZmM2MTAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc21JbmZvV2FzbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc21JbmZvV2FzbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL01DL01DQXNtSW5mb1dhc20uaCAtIFdhc20gQXNtIGluZm8gLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0FzbUxheW91dC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0FzbUxheW91dC5oCmluZGV4IGI3MTFkYjMuLjQ1YWM5NmYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc21MYXlvdXQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQXNtTGF5b3V0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTUNBc21MYXlvdXQuaCAtIEFzc2VtYmx5IExheW91dCBPYmplY3QgLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQXNtTWFjcm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc21NYWNyby5oCmluZGV4IDA5YjMyYzcuLjM2NGQzYjUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc21NYWNyby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc21NYWNyby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DQXNtTWFjcm8uaCAtIEFzc2VtYmx5IE1hY3JvcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNTIsNyArNTEsNyBAQAogICAgIFBpcGUsIFBpcGVQaXBlLCBDYXJldCwKICAgICBBbXAsIEFtcEFtcCwgRXhjbGFpbSwgRXhjbGFpbUVxdWFsLCBQZXJjZW50LCBIYXNoLAogICAgIExlc3MsIExlc3NFcXVhbCwgTGVzc0xlc3MsIExlc3NHcmVhdGVyLAotICAgIEdyZWF0ZXIsIEdyZWF0ZXJFcXVhbCwgR3JlYXRlckdyZWF0ZXIsIEF0LAorICAgIEdyZWF0ZXIsIEdyZWF0ZXJFcXVhbCwgR3JlYXRlckdyZWF0ZXIsIEF0LCBNaW51c0dyZWF0ZXIsCiAKICAgICAvLyBNSVBTIHVuYXJ5IGV4cHJlc3Npb24gb3BlcmF0b3JzIHN1Y2ggYXMgJW5lZy4KICAgICBQZXJjZW50Q2FsbDE2LCBQZXJjZW50Q2FsbF9IaSwgUGVyY2VudENhbGxfTG8sIFBlcmNlbnREdHByZWxfSGksCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQXNzZW1ibGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQXNzZW1ibGVyLmgKaW5kZXggMGY5NDk5ZC4uNDU0MzAxOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0Fzc2VtYmxlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNBc3NlbWJsZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNQ0Fzc2VtYmxlci5oIC0gT2JqZWN0IEZpbGUgR2VuZXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTIzLDYgKzIyLDcgQEAKICNpbmNsdWRlICJsbHZtL01DL01DRnJhZ21lbnQuaCIKICNpbmNsdWRlICJsbHZtL01DL01DTGlua2VyT3B0aW1pemF0aW9uSGludC5oIgogI2luY2x1ZGUgImxsdm0vTUMvTUNTeW1ib2wuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvVmVyc2lvblR1cGxlLmgiCiAjaW5jbHVkZSA8Y2Fzc2VydD4KICNpbmNsdWRlIDxjc3RkZGVmPgogI2luY2x1ZGUgPGNzdGRpbnQ+CkBAIC05NCw2ICs5NCw4IEBACiAgICAgdW5zaWduZWQgTWFqb3I7CiAgICAgdW5zaWduZWQgTWlub3I7CiAgICAgdW5zaWduZWQgVXBkYXRlOworICAgIC8vLyBBbiBvcHRpb25hbCB2ZXJzaW9uIG9mIHRoZSBTREsgdGhhdCB3YXMgdXNlZCB0byBidWlsZCB0aGUgc291cmNlLgorICAgIFZlcnNpb25UdXBsZSBTREtWZXJzaW9uOwogICB9OwogCiBwcml2YXRlOgpAQCAtMjU1LDIwICsyNTcsMjQgQEAKICAgLy8vIE1hY2hPIGRlcGxveW1lbnQgdGFyZ2V0IHZlcnNpb24gaW5mb3JtYXRpb24uCiAgIGNvbnN0IFZlcnNpb25JbmZvVHlwZSAmZ2V0VmVyc2lvbkluZm8oKSBjb25zdCB7IHJldHVybiBWZXJzaW9uSW5mbzsgfQogICB2b2lkIHNldFZlcnNpb25NaW4oTUNWZXJzaW9uTWluVHlwZSBUeXBlLCB1bnNpZ25lZCBNYWpvciwgdW5zaWduZWQgTWlub3IsCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBVcGRhdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFVwZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25UdXBsZSBTREtWZXJzaW9uID0gVmVyc2lvblR1cGxlKCkpIHsKICAgICBWZXJzaW9uSW5mby5FbWl0QnVpbGRWZXJzaW9uID0gZmFsc2U7CiAgICAgVmVyc2lvbkluZm8uVHlwZU9yUGxhdGZvcm0uVHlwZSA9IFR5cGU7CiAgICAgVmVyc2lvbkluZm8uTWFqb3IgPSBNYWpvcjsKICAgICBWZXJzaW9uSW5mby5NaW5vciA9IE1pbm9yOwogICAgIFZlcnNpb25JbmZvLlVwZGF0ZSA9IFVwZGF0ZTsKKyAgICBWZXJzaW9uSW5mby5TREtWZXJzaW9uID0gU0RLVmVyc2lvbjsKICAgfQogICB2b2lkIHNldEJ1aWxkVmVyc2lvbihNYWNoTzo6UGxhdGZvcm1UeXBlIFBsYXRmb3JtLCB1bnNpZ25lZCBNYWpvciwKLSAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTWlub3IsIHVuc2lnbmVkIFVwZGF0ZSkgeworICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBNaW5vciwgdW5zaWduZWQgVXBkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uVHVwbGUgU0RLVmVyc2lvbiA9IFZlcnNpb25UdXBsZSgpKSB7CiAgICAgVmVyc2lvbkluZm8uRW1pdEJ1aWxkVmVyc2lvbiA9IHRydWU7CiAgICAgVmVyc2lvbkluZm8uVHlwZU9yUGxhdGZvcm0uUGxhdGZvcm0gPSBQbGF0Zm9ybTsKICAgICBWZXJzaW9uSW5mby5NYWpvciA9IE1ham9yOwogICAgIFZlcnNpb25JbmZvLk1pbm9yID0gTWlub3I7CiAgICAgVmVyc2lvbkluZm8uVXBkYXRlID0gVXBkYXRlOworICAgIFZlcnNpb25JbmZvLlNES1ZlcnNpb24gPSBTREtWZXJzaW9uOwogICB9CiAKICAgLy8vIFJldXNlIGFuIGFzc2VtYmxlciBpbnN0YW5jZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0NvZGVFbWl0dGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQ29kZUVtaXR0ZXIuaAppbmRleCBmMWIwYjc4Li4wNGI0MzY3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQ29kZUVtaXR0ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQ29kZUVtaXR0ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL01DL01DQ29kZUVtaXR0ZXIuaCAtIEluc3RydWN0aW9uIEVuY29kaW5nIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNDb2RlUGFkZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQ29kZVBhZGRlci5oCmluZGV4IDRkZGU2YmYuLmY3YjFhMjEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNDb2RlUGFkZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0NvZGVQYWRkZXIuaApAQCAtMSw5ICsxLDggQEAKLS8vPT09LSBsbHZtL01DL0NvZGVQYWRkZXIuaCAtIE1DIENvZGUgUGFkZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLz09PS0gbGx2bS9NQy9NQ0NvZGVQYWRkZXIuaCAtIE1DIENvZGUgUGFkZGVyIC0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQ29kZVZpZXcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNDb2RlVmlldy5oCmluZGV4IDI2NzhjZjQuLjIxMjYzNTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNDb2RlVmlldy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNDb2RlVmlldy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DQ29kZVZpZXcuaCAtIE1hY2hpbmUgQ29kZSBDb2RlVmlldyBzdXBwb3J0IC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xOTQsNyArMTkzLDcgQEAKICAgdm9pZCBlbmNvZGVJbmxpbmVMaW5lVGFibGUoTUNBc21MYXlvdXQgJkxheW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUNDVklubGluZUxpbmVUYWJsZUZyYWdtZW50ICZGKTsKIAotICB2b2lkCisgIE1DRnJhZ21lbnQgKgogICBlbWl0RGVmUmFuZ2UoTUNPYmplY3RTdHJlYW1lciAmT1MsCiAgICAgICAgICAgICAgICBBcnJheVJlZjxzdGQ6OnBhaXI8Y29uc3QgTUNTeW1ib2wgKiwgY29uc3QgTUNTeW1ib2wgKj4+IFJhbmdlcywKICAgICAgICAgICAgICAgIFN0cmluZ1JlZiBGaXhlZFNpemVQb3J0aW9uKTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNDb250ZXh0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DQ29udGV4dC5oCmluZGV4IDNiOGFjOGIuLmI5NjQ5NjUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNDb250ZXh0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0NvbnRleHQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNQ0NvbnRleHQuaCAtIE1hY2hpbmUgQ29kZSBDb250ZXh0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNEaXJlY3RpdmVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DRGlyZWN0aXZlcy5oCmluZGV4IDhjNzRiMTYuLjQwMjkyNjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNEaXJlY3RpdmVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0RpcmVjdGl2ZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNQ0RpcmVjdGl2ZXMuaCAtIEVudW1zIGZvciBkaXJlY3RpdmVzIG9uIHZhcmlvdXMgdGFyZ2V0cyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjAsNiArMTksNyBAQAogICBNQ1NBX0ludmFsaWQgPSAwLCAgICAvLy88IE5vdCBhIHZhbGlkIGRpcmVjdGl2ZS4KIAogICAvLyBWYXJpb3VzIGRpcmVjdGl2ZXMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgorICBNQ1NBX0NvbGQsICAgICAgICAgICAgICAgIC8vLzwgLmNvbGQgKE1hY2hPKQogICBNQ1NBX0VMRl9UeXBlRnVuY3Rpb24sICAgIC8vLzwgLnR5cGUgX2ZvbywgU1RUX0ZVTkMgICMgYWthIEBmdW5jdGlvbgogICBNQ1NBX0VMRl9UeXBlSW5kRnVuY3Rpb24sIC8vLzwgLnR5cGUgX2ZvbywgU1RUX0dOVV9JRlVOQwogICBNQ1NBX0VMRl9UeXBlT2JqZWN0LCAgICAgIC8vLzwgLnR5cGUgX2ZvbywgU1RUX09CSkVDVCAgIyBha2EgQG9iamVjdApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0Rpc2Fzc2VtYmxlci9NQ0Rpc2Fzc2VtYmxlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0Rpc2Fzc2VtYmxlci9NQ0Rpc2Fzc2VtYmxlci5oCmluZGV4IDdmMDljMDUuLjI2OGYzY2MgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNEaXNhc3NlbWJsZXIvTUNEaXNhc3NlbWJsZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DRGlzYXNzZW1ibGVyL01DRGlzYXNzZW1ibGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9NQy9NQ0Rpc2Fzc2VtYmxlci5oIC0gRGlzYXNzZW1ibGVyIGludGVyZmFjZSAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0xNyw2ICsxNiw3IEBACiBuYW1lc3BhY2UgbGx2bSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBBcnJheVJlZjsKK2NsYXNzIFN0cmluZ1JlZjsKIGNsYXNzIE1DQ29udGV4dDsKIGNsYXNzIE1DSW5zdDsKIGNsYXNzIE1DU3VidGFyZ2V0SW5mbzsKQEAgLTgwLDYgKzgwLDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd19vc3RyZWFtICZWU3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdfb3N0cmVhbSAmQ1N0cmVhbSkgY29uc3QgPSAwOwogCisgIC8vLyBNYXkgcGFyc2UgYW55IHByZWx1ZGUgdGhhdCBwcmVjZWRlcyBpbnN0cnVjdGlvbnMgYWZ0ZXIgdGhlIHN0YXJ0IG9mIGEKKyAgLy8vIHN5bWJvbC4gTmVlZGVkIGZvciBzb21lIHRhcmdldHMsIGUuZy4gV2ViQXNzZW1ibHkuCisgIC8vLworICAvLy8gXHBhcmFtIE5hbWUgICAgIC0gVGhlIG5hbWUgb2YgdGhlIHN5bWJvbC4KKyAgLy8vIFxwYXJhbSBTaXplICAgICAtIFRoZSBudW1iZXIgb2YgYnl0ZXMgY29uc3VtZWQuCisgIC8vLyBccGFyYW0gQWRkcmVzcyAgLSBUaGUgYWRkcmVzcywgaW4gdGhlIG1lbW9yeSBzcGFjZSBvZiByZWdpb24sIG9mIHRoZSBmaXJzdAorICAvLy8gICAgICAgICAgICAgICAgICAgYnl0ZSBvZiB0aGUgc3ltYm9sLgorICAvLy8gXHBhcmFtIEJ5dGVzICAgIC0gQSByZWZlcmVuY2UgdG8gdGhlIGFjdHVhbCBieXRlcyBhdCB0aGUgc3ltYm9sIGxvY2F0aW9uLgorICAvLy8gXHBhcmFtIFZTdHJlYW0gIC0gVGhlIHN0cmVhbSB0byBwcmludCB3YXJuaW5ncyBhbmQgZGlhZ25vc3RpYyBtZXNzYWdlcyBvbi4KKyAgLy8vIFxwYXJhbSBDU3RyZWFtICAtIFRoZSBzdHJlYW0gdG8gcHJpbnQgY29tbWVudHMgYW5kIGFubm90YXRpb25zIG9uLgorICAvLy8gXHJldHVybiAgICAgICAgIC0gTUNEaXNhc3NlbWJsZXI6OlN1Y2Nlc3MgaWYgdGhlIGJ5dGVzIGFyZSB2YWxpZCwKKyAgLy8vICAgICAgICAgICAgICAgICAgIE1DRGlzYXNzZW1ibGVyOjpGYWlsIGlmIHRoZSBieXRlcyB3ZXJlIGludmFsaWQuCisgIHZpcnR1YWwgRGVjb2RlU3RhdHVzIG9uU3ltYm9sU3RhcnQoU3RyaW5nUmVmIE5hbWUsIHVpbnQ2NF90ICZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPHVpbnQ4X3Q+IEJ5dGVzLCB1aW50NjRfdCBBZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd19vc3RyZWFtICZWU3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd19vc3RyZWFtICZDU3RyZWFtKSBjb25zdDsKKwogcHJpdmF0ZToKICAgTUNDb250ZXh0ICZDdHg7CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNEaXNhc3NlbWJsZXIvTUNFeHRlcm5hbFN5bWJvbGl6ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNEaXNhc3NlbWJsZXIvTUNFeHRlcm5hbFN5bWJvbGl6ZXIuaAppbmRleCBkZjkwOWEwLi5mZmFjNWVlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DRGlzYXNzZW1ibGVyL01DRXh0ZXJuYWxTeW1ib2xpemVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0Rpc2Fzc2VtYmxlci9NQ0V4dGVybmFsU3ltYm9saXplci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL01DL01DRXh0ZXJuYWxTeW1ib2xpemVyLmggLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DRGlzYXNzZW1ibGVyL01DUmVsb2NhdGlvbkluZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNEaXNhc3NlbWJsZXIvTUNSZWxvY2F0aW9uSW5mby5oCmluZGV4IDYwMzBhZTYuLmVmYzU5ZGEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNEaXNhc3NlbWJsZXIvTUNSZWxvY2F0aW9uSW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNEaXNhc3NlbWJsZXIvTUNSZWxvY2F0aW9uSW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vTUMvTUNSZWxvY2F0aW9uSW5mby5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DRGlzYXNzZW1ibGVyL01DU3ltYm9saXplci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0Rpc2Fzc2VtYmxlci9NQ1N5bWJvbGl6ZXIuaAppbmRleCAwYmZhNTY5Li5iN2NhODNhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DRGlzYXNzZW1ibGVyL01DU3ltYm9saXplci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNEaXNhc3NlbWJsZXIvTUNTeW1ib2xpemVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9NQy9NQ1N5bWJvbGl6ZXIuaCAtIE1DU3ltYm9saXplciBjbGFzcyAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNEd2FyZi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0R3YXJmLmgKaW5kZXggMmJmYWYxOS4uOGVhYTE1MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0R3YXJmLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0R3YXJmLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTUNEd2FyZi5oIC0gTWFjaGluZSBDb2RlIER3YXJmIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTQzMCw2ICs0MjksNyBAQAogICAgIE9wVW5kZWZpbmVkLAogICAgIE9wUmVnaXN0ZXIsCiAgICAgT3BXaW5kb3dTYXZlLAorICAgIE9wTmVnYXRlUkFTdGF0ZSwKICAgICBPcEdudUFyZ3NTaXplCiAgIH07CiAKQEAgLTUwOSw2ICs1MDksMTEgQEAKICAgICByZXR1cm4gTUNDRklJbnN0cnVjdGlvbihPcFdpbmRvd1NhdmUsIEwsIDAsIDAsICIiKTsKICAgfQogCisgIC8vLyAuY2ZpX25lZ2F0ZV9yYV9zdGF0ZSBBQXJjaDY0IG5lZ2F0ZSBSQSBzdGF0ZS4KKyAgc3RhdGljIE1DQ0ZJSW5zdHJ1Y3Rpb24gY3JlYXRlTmVnYXRlUkFTdGF0ZShNQ1N5bWJvbCAqTCkgeworICAgIHJldHVybiBNQ0NGSUluc3RydWN0aW9uKE9wTmVnYXRlUkFTdGF0ZSwgTCwgMCwgMCwgIiIpOworICB9CisKICAgLy8vIC5jZmlfcmVzdG9yZSBzYXlzIHRoYXQgdGhlIHJ1bGUgZm9yIFJlZ2lzdGVyIGlzIG5vdyB0aGUgc2FtZSBhcyBpdAogICAvLy8gd2FzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uLCBhZnRlciBhbGwgaW5pdGlhbCBpbnN0cnVjdGlvbnMgYWRkZWQKICAgLy8vIGJ5IC5jZmlfc3RhcnRwcm9jIHdlcmUgZXhlY3V0ZWQuCkBAIC01OTMsNiArNTk4LDcgQEAKICAgYm9vbCBJc1NpZ25hbEZyYW1lID0gZmFsc2U7CiAgIGJvb2wgSXNTaW1wbGUgPSBmYWxzZTsKICAgdW5zaWduZWQgUkFSZWcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSU5UX01BWCk7CisgIGJvb2wgSXNCS2V5RnJhbWUgPSBmYWxzZTsKIH07CiAKIGNsYXNzIE1DRHdhcmZGcmFtZUVtaXR0ZXIgewpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0VMRk9iamVjdFdyaXRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0VMRk9iamVjdFdyaXRlci5oCmluZGV4IGYyMjZkNmEuLjlmZjcwMTEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNFTEZPYmplY3RXcml0ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DRUxGT2JqZWN0V3JpdGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9NQy9NQ0VMRk9iamVjdFdyaXRlci5oIC0gRUxGIE9iamVjdCBXcml0ZXIgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DRUxGU3RyZWFtZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNFTEZTdHJlYW1lci5oCmluZGV4IDM3OTcwNzkuLjg4MzhkNTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNFTEZTdHJlYW1lci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNFTEZTdHJlYW1lci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DRUxGU3RyZWFtZXIuaCAtIE1DU3RyZWFtZXIgRUxGIE9iamVjdCBGaWxlIEludGVyZmFjZSAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0V4cHIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNFeHByLmgKaW5kZXggMjNkZGUxMC4uODUzMTYzMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0V4cHIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DRXhwci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DRXhwci5oIC0gQXNzZW1ibHkgTGV2ZWwgRXhwcmVzc2lvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMjg4LDYgKzI4Nyw3IEBACiAgICAgVktfV2ViQXNzZW1ibHlfRlVOQ1RJT04sIC8vIEZ1bmN0aW9uIHRhYmxlIGluZGV4LCByYXRoZXIgdGhhbiB2aXJ0dWFsIGFkZHIKICAgICBWS19XZWJBc3NlbWJseV9HTE9CQUwsICAgLy8gR2xvYmFsIG9iamVjdCBpbmRleAogICAgIFZLX1dlYkFzc2VtYmx5X1RZUEVJTkRFWCwvLyBUeXBlIHRhYmxlIGluZGV4CisgICAgVktfV2ViQXNzZW1ibHlfRVZFTlQsICAgIC8vIEV2ZW50IGluZGV4CiAKICAgICBWS19BTURHUFVfR09UUENSRUwzMl9MTywgLy8gc3ltYm9sQGdvdHBjcmVsMzJAbG8KICAgICBWS19BTURHUFVfR09UUENSRUwzMl9ISSwgLy8gc3ltYm9sQGdvdHBjcmVsMzJAaGkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNGaXhlZExlbkRpc2Fzc2VtYmxlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0ZpeGVkTGVuRGlzYXNzZW1ibGVyLmgKaW5kZXggYWQzNGQ5NC4uMjE4YWUwZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0ZpeGVkTGVuRGlzYXNzZW1ibGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0ZpeGVkTGVuRGlzYXNzZW1ibGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vTUMvTUNGaXhlZExlbkRpc2Fzc2VtYmxlci5oIC0gRGVjb2RlciBkcml2ZXIgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gRml4ZWQgbGVuZ3RoIGRpc2Fzc2VtYmxlciBkZWNvZGVyIHN0YXRlIG1hY2hpbmUgZHJpdmVyLgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0ZpeHVwLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DRml4dXAuaAppbmRleCA1ZjMwMWVhLi41NTlhMTllIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DRml4dXAuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DRml4dXAuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9NQy9NQ0ZpeHVwLmggLSBJbnN0cnVjdGlvbiBSZWxvY2F0aW9uIGFuZCBQYXRjaGluZyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNGaXh1cEtpbmRJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DRml4dXBLaW5kSW5mby5oCmluZGV4IDQ4M2FiYjMuLjBlYTM0ODYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNGaXh1cEtpbmRJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0ZpeHVwS2luZEluZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9NQy9NQ0ZpeHVwS2luZEluZm8uaCAtIEZpeHVwIERlc2NyaXB0b3JzIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNGcmFnbWVudC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0ZyYWdtZW50LmgKaW5kZXggYzk5OWM5Zi4uYWFkZjJjZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0ZyYWdtZW50LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0ZyYWdtZW50LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTUNGcmFnbWVudC5oIC0gRnJhZ21lbnQgdHlwZSBoaWVyYXJjaHkgLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DSW5zdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0luc3QuaAppbmRleCA2N2JiMTFhLi45Njc1Yjc4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DSW5zdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNJbnN0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9NQy9NQ0luc3QuaCAtIE1DSW5zdCBjbGFzcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE1NCw4ICsxNTMsNiBAQAogICBib29sIGV2YWx1YXRlQXNDb25zdGFudEltbShpbnQ2NF90ICZJbW0pIGNvbnN0OwogfTsKIAotdGVtcGxhdGUgPD4gc3RydWN0IGlzUG9kTGlrZTxNQ09wZXJhbmQ+IHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOyB9OwotCiAvLy8gSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgcmVwcmVzZW50IGEgc2luZ2xlIGxvdy1sZXZlbCBtYWNoaW5lCiAvLy8gaW5zdHJ1Y3Rpb24uCiBjbGFzcyBNQ0luc3QgewpAQCAtMjA4LDYgKzIwNSw4IEBACiAgIC8vLyBzdHJpbmcuCiAgIHZvaWQgZHVtcF9wcmV0dHkocmF3X29zdHJlYW0gJk9TLCBjb25zdCBNQ0luc3RQcmludGVyICpQcmludGVyID0gbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgU2VwYXJhdG9yID0gIiAiKSBjb25zdDsKKyAgdm9pZCBkdW1wX3ByZXR0eShyYXdfb3N0cmVhbSAmT1MsIFN0cmluZ1JlZiBOYW1lLAorICAgICAgICAgICAgICAgICAgIFN0cmluZ1JlZiBTZXBhcmF0b3IgPSAiICIpIGNvbnN0OwogfTsKIAogaW5saW5lIHJhd19vc3RyZWFtJiBvcGVyYXRvcjw8KHJhd19vc3RyZWFtICZPUywgY29uc3QgTUNPcGVyYW5kICZNTykgewpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0luc3RCdWlsZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DSW5zdEJ1aWxkZXIuaAppbmRleCBjNWM0ZjQ4Li4wYzhlMDFmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DSW5zdEJ1aWxkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DSW5zdEJ1aWxkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9NQy9NQ0luc3RCdWlsZGVyLmggLSBTaW1wbGlmeSBjcmVhdGlvbiBvZiBNQ0luc3RzIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0luc3RQcmludGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DSW5zdFByaW50ZXIuaAppbmRleCBkZjIyMWUxLi45MTZhYTg5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DSW5zdFByaW50ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DSW5zdFByaW50ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNQ0luc3RQcmludGVyLmggLSBNQ0luc3QgdG8gdGFyZ2V0IGFzc2VtYmx5IHN5bnRheCAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNJbnN0ckFuYWx5c2lzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DSW5zdHJBbmFseXNpcy5oCmluZGV4IDk1MGExYWYuLmRmZWZkN2UgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNJbnN0ckFuYWx5c2lzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0luc3RyQW5hbHlzaXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL01DL01DSW5zdHJBbmFseXNpcy5oIC0gSW5zdHJEZXNjIHRhcmdldCBob29rcyAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTM2LDYgKzEzNSwxNyBAQAogICAgIHJldHVybiBpc1plcm9JZGlvbShNSSwgTWFzaywgQ1BVSUQpOwogICB9CiAKKyAgLy8vIFJldHVybnMgdHJ1ZSBpZiBNSSBpcyBhIGNhbmRpZGF0ZSBmb3IgbW92ZSBlbGltaW5hdGlvbi4KKyAgLy8vCisgIC8vLyBEaWZmZXJlbnQgc3VidGFyZ2V0cyBtYXkgYXBwbHkgZGlmZmVyZW50IGNvbnN0cmFpbnRzIHRvIG9wdGltaXphYmxlCisgIC8vLyByZWdpc3RlciBtb3Zlcy4gRm9yIGV4YW1wbGUsIG9uIG1vc3QgWDg2IHN1YnRhcmdldHMsIGEgY2FuZGlkYXRlIGZvciBtb3ZlCisgIC8vLyBlbGltaW5hdGlvbiBjYW5ub3Qgc3BlY2lmeSB0aGUgc2FtZSByZWdpc3RlciBmb3IgYm90aCBzb3VyY2UgYW5kCisgIC8vLyBkZXN0aW5hdGlvbi4KKyAgdmlydHVhbCBib29sIGlzT3B0aW1pemFibGVSZWdpc3Rlck1vdmUoY29uc3QgTUNJbnN0ICZNSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgQ1BVSUQpIGNvbnN0IHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKwogICAvLy8gR2l2ZW4gYSBicmFuY2ggaW5zdHJ1Y3Rpb24gdHJ5IHRvIGdldCB0aGUgYWRkcmVzcyB0aGUgYnJhbmNoCiAgIC8vLyB0YXJnZXRzLiBSZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBhbmQgdGhlIGFkZHJlc3MgaW4gVGFyZ2V0LgogICB2aXJ0dWFsIGJvb2wKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNJbnN0ckRlc2MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNJbnN0ckRlc2MuaAppbmRleCBiYTk3YWViLi5hZDVhM2U5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DSW5zdHJEZXNjLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0luc3RyRGVzYy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL01DL01DSW5zdHJEZXNjLmggLSBJbnN0cnVjdGlvbiBEZXNjcmlwdG9ycyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTUxLDcgKzE1MCw4IEBACiAgIEluc2VydFN1YnJlZywKICAgQ29udmVyZ2VudCwKICAgQWRkLAotICBUcmFwCisgIFRyYXAsCisgIFZhcmlhZGljT3BzQXJlRGVmcywKIH07CiB9CiAKQEAgLTM4Myw2ICszODMsMTEgQEAKICAgLy8vIGFkZGl0aW9uYWwgdmFsdWVzLgogICBib29sIGlzQ29udmVyZ2VudCgpIGNvbnN0IHsgcmV0dXJuIEZsYWdzICYgKDFVTEwgPDwgTUNJRDo6Q29udmVyZ2VudCk7IH0KIAorICAvLy8gUmV0dXJuIHRydWUgaWYgdmFyaWFkaWMgb3BlcmFuZHMgb2YgdGhpcyBpbnN0cnVjdGlvbiBhcmUgZGVmaW5pdGlvbnMuCisgIGJvb2wgdmFyaWFkaWNPcHNBcmVEZWZzKCkgY29uc3QgeworICAgIHJldHVybiBGbGFncyAmICgxVUxMIDw8IE1DSUQ6OlZhcmlhZGljT3BzQXJlRGVmcyk7CisgIH0KKwogICAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KICAgLy8gU2lkZSBFZmZlY3QgQW5hbHlzaXMKICAgLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DSW5zdHJJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DSW5zdHJJbmZvLmgKaW5kZXggMThkYTg3Yy4uODc0YjFlNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0luc3RySW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNJbnN0ckluZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9NQy9NQ0luc3RySW5mby5oIC0gVGFyZ2V0IEluc3RydWN0aW9uIEluZm8gLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0luc3RySXRpbmVyYXJpZXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNJbnN0ckl0aW5lcmFyaWVzLmgKaW5kZXggZmU4MTM3Ni4uNDg1YWE2NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0luc3RySXRpbmVyYXJpZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DSW5zdHJJdGluZXJhcmllcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vTUMvTUNJbnN0ckl0aW5lcmFyaWVzLmggLSBTY2hlZHVsaW5nIC0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DTGFiZWwuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNMYWJlbC5oCmluZGV4IGFhZjcwNjkuLjBiOGFmYWMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNMYWJlbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNMYWJlbC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DTGFiZWwuaCAtIE1hY2hpbmUgQ29kZSBEaXJlY3Rpb25hbCBMb2NhbCBMYWJlbHMgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DTGlua2VyT3B0aW1pemF0aW9uSGludC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ0xpbmtlck9wdGltaXphdGlvbkhpbnQuaAppbmRleCBmMGZkMDdmLi5mMmExMzY0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DTGlua2VyT3B0aW1pemF0aW9uSGludC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNMaW5rZXJPcHRpbWl6YXRpb25IaW50LmgKQEAgLTEsMTAgKzEsOSBAQAogLy89PT0tIE1DTGlua2VyT3B0aW1pemF0aW9uSGludC5oIC0gTE9IIGludGVyZmFjZSAtLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ01hY2hPYmplY3RXcml0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNNYWNoT2JqZWN0V3JpdGVyLmgKaW5kZXggMjJmYmViNy4uMjc4YWViZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ01hY2hPYmplY3RXcml0ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DTWFjaE9iamVjdFdyaXRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vTUMvTUNNYWNoT2JqZWN0V3JpdGVyLmggLSBNYWNoIE9iamVjdCBXcml0ZXIgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ09iamVjdEZpbGVJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DT2JqZWN0RmlsZUluZm8uaAppbmRleCA4Y2Y5ZTFjLi4wYzFhZGU0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DT2JqZWN0RmlsZUluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DT2JqZWN0RmlsZUluZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9NQy9NQ09iamVjdEZpbGVJbmZvLmggLSBPYmplY3QgRmlsZSBJbmZvIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTgsNiArMTcsNyBAQAogI2luY2x1ZGUgImxsdm0vQURUL1RyaXBsZS5oIgogI2luY2x1ZGUgImxsdm0vTUMvTUNTeW1ib2wuaCIKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvQ29kZUdlbi5oIgorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9WZXJzaW9uVHVwbGUuaCIKIAogbmFtZXNwYWNlIGxsdm0gewogY2xhc3MgTUNDb250ZXh0OwpAQCAtMTE3LDYgKzExNyw4IEBACiAgIE1DU2VjdGlvbiAqRHdhcmZBZGRyU2VjdGlvbjsKICAgLy8vIFRoZSBEV0FSRiB2NSByYW5nZSBsaXN0IHNlY3Rpb24uCiAgIE1DU2VjdGlvbiAqRHdhcmZSbmdsaXN0c1NlY3Rpb247CisgIC8vLyBUaGUgRFdBUkYgdjUgbG9jYXRpb25zIGxpc3Qgc2VjdGlvbi4KKyAgTUNTZWN0aW9uICpEd2FyZkxvY2xpc3RzU2VjdGlvbjsKIAogICAvLy8gVGhlIERXQVJGIHY1IHJhbmdlIGxpc3Qgc2VjdGlvbiBmb3IgZmlzc2lvbi4KICAgTUNTZWN0aW9uICpEd2FyZlJuZ2xpc3RzRFdPU2VjdGlvbjsKQEAgLTIzOSw2ICsyNDEsOSBAQAogICBNQ1NlY3Rpb24gKmdldENvbXBhY3RVbndpbmRTZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gQ29tcGFjdFVud2luZFNlY3Rpb247IH0KICAgTUNTZWN0aW9uICpnZXREd2FyZkFiYnJldlNlY3Rpb24oKSBjb25zdCB7IHJldHVybiBEd2FyZkFiYnJldlNlY3Rpb247IH0KICAgTUNTZWN0aW9uICpnZXREd2FyZkluZm9TZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gRHdhcmZJbmZvU2VjdGlvbjsgfQorICBNQ1NlY3Rpb24gKmdldER3YXJmSW5mb1NlY3Rpb24odWludDY0X3QgSGFzaCkgY29uc3QgeworICAgIHJldHVybiBnZXREd2FyZkNvbWRhdFNlY3Rpb24oIi5kZWJ1Z19pbmZvIiwgSGFzaCk7CisgIH0KICAgTUNTZWN0aW9uICpnZXREd2FyZkxpbmVTZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gRHdhcmZMaW5lU2VjdGlvbjsgfQogICBNQ1NlY3Rpb24gKmdldER3YXJmTGluZVN0clNlY3Rpb24oKSBjb25zdCB7IHJldHVybiBEd2FyZkxpbmVTdHJTZWN0aW9uOyB9CiAgIE1DU2VjdGlvbiAqZ2V0RHdhcmZGcmFtZVNlY3Rpb24oKSBjb25zdCB7IHJldHVybiBEd2FyZkZyYW1lU2VjdGlvbjsgfQpAQCAtMjU4LDYgKzI2Myw3IEBACiAgIE1DU2VjdGlvbiAqZ2V0RHdhcmZBUmFuZ2VzU2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuIER3YXJmQVJhbmdlc1NlY3Rpb247IH0KICAgTUNTZWN0aW9uICpnZXREd2FyZlJhbmdlc1NlY3Rpb24oKSBjb25zdCB7IHJldHVybiBEd2FyZlJhbmdlc1NlY3Rpb247IH0KICAgTUNTZWN0aW9uICpnZXREd2FyZlJuZ2xpc3RzU2VjdGlvbigpIGNvbnN0IHsgcmV0dXJuIER3YXJmUm5nbGlzdHNTZWN0aW9uOyB9CisgIE1DU2VjdGlvbiAqZ2V0RHdhcmZMb2NsaXN0c1NlY3Rpb24oKSBjb25zdCB7IHJldHVybiBEd2FyZkxvY2xpc3RzU2VjdGlvbjsgfQogICBNQ1NlY3Rpb24gKmdldER3YXJmTWFjaW5mb1NlY3Rpb24oKSBjb25zdCB7IHJldHVybiBEd2FyZk1hY2luZm9TZWN0aW9uOyB9CiAKICAgTUNTZWN0aW9uICpnZXREd2FyZkRlYnVnTmFtZXNTZWN0aW9uKCkgY29uc3QgewpAQCAtMjc0LDcgKzI4MCw5IEBACiAgICAgcmV0dXJuIER3YXJmQWNjZWxUeXBlc1NlY3Rpb247CiAgIH0KICAgTUNTZWN0aW9uICpnZXREd2FyZkluZm9EV09TZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gRHdhcmZJbmZvRFdPU2VjdGlvbjsgfQotICBNQ1NlY3Rpb24gKmdldER3YXJmVHlwZXNTZWN0aW9uKHVpbnQ2NF90IEhhc2gpIGNvbnN0OworICBNQ1NlY3Rpb24gKmdldER3YXJmVHlwZXNTZWN0aW9uKHVpbnQ2NF90IEhhc2gpIGNvbnN0IHsKKyAgICByZXR1cm4gZ2V0RHdhcmZDb21kYXRTZWN0aW9uKCIuZGVidWdfdHlwZXMiLCBIYXNoKTsKKyAgfQogICBNQ1NlY3Rpb24gKmdldER3YXJmVHlwZXNEV09TZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gRHdhcmZUeXBlc0RXT1NlY3Rpb247IH0KICAgTUNTZWN0aW9uICpnZXREd2FyZkFiYnJldkRXT1NlY3Rpb24oKSBjb25zdCB7IHJldHVybiBEd2FyZkFiYnJldkRXT1NlY3Rpb247IH0KICAgTUNTZWN0aW9uICpnZXREd2FyZlN0ckRXT1NlY3Rpb24oKSBjb25zdCB7IHJldHVybiBEd2FyZlN0ckRXT1NlY3Rpb247IH0KQEAgLTM4MiwxNCArMzkwLDIyIEBACiAgIGJvb2wgUG9zaXRpb25JbmRlcGVuZGVudDsKICAgTUNDb250ZXh0ICpDdHg7CiAgIFRyaXBsZSBUVDsKKyAgVmVyc2lvblR1cGxlIFNES1ZlcnNpb247CiAKICAgdm9pZCBpbml0TWFjaE9NQ09iamVjdEZpbGVJbmZvKGNvbnN0IFRyaXBsZSAmVCk7CiAgIHZvaWQgaW5pdEVMRk1DT2JqZWN0RmlsZUluZm8oY29uc3QgVHJpcGxlICZULCBib29sIExhcmdlKTsKICAgdm9pZCBpbml0Q09GRk1DT2JqZWN0RmlsZUluZm8oY29uc3QgVHJpcGxlICZUKTsKICAgdm9pZCBpbml0V2FzbU1DT2JqZWN0RmlsZUluZm8oY29uc3QgVHJpcGxlICZUKTsKKyAgTUNTZWN0aW9uICpnZXREd2FyZkNvbWRhdFNlY3Rpb24oY29uc3QgY2hhciAqTmFtZSwgdWludDY0X3QgSGFzaCkgY29uc3Q7CiAKIHB1YmxpYzoKICAgY29uc3QgVHJpcGxlICZnZXRUYXJnZXRUcmlwbGUoKSBjb25zdCB7IHJldHVybiBUVDsgfQorCisgIHZvaWQgc2V0U0RLVmVyc2lvbihjb25zdCBWZXJzaW9uVHVwbGUgJlRoZVNES1ZlcnNpb24pIHsKKyAgICBTREtWZXJzaW9uID0gVGhlU0RLVmVyc2lvbjsKKyAgfQorCisgIGNvbnN0IFZlcnNpb25UdXBsZSAmZ2V0U0RLVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIFNES1ZlcnNpb247IH0KIH07CiAKIH0gLy8gZW5kIG5hbWVzcGFjZSBsbHZtCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DT2JqZWN0U3RyZWFtZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNPYmplY3RTdHJlYW1lci5oCmluZGV4IGM5ZTU3N2IuLjhhZmZjYTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNPYmplY3RTdHJlYW1lci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNPYmplY3RTdHJlYW1lci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DT2JqZWN0U3RyZWFtZXIuaCAtIE1DU3RyZWFtZXIgT2JqZWN0IEZpbGUgSW50ZXJmYWNlIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtMzksMTIgKzM4LDIxIEBACiAgIGJvb2wgRW1pdEVIRnJhbWU7CiAgIGJvb2wgRW1pdERlYnVnRnJhbWU7CiAgIFNtYWxsVmVjdG9yPE1DU3ltYm9sICosIDI+IFBlbmRpbmdMYWJlbHM7CisgIHN0cnVjdCBQZW5kaW5nTUNGaXh1cCB7CisgICAgY29uc3QgTUNTeW1ib2wgKlN5bTsKKyAgICBNQ0ZpeHVwIEZpeHVwOworICAgIE1DRGF0YUZyYWdtZW50ICpERjsKKyAgICBQZW5kaW5nTUNGaXh1cChjb25zdCBNQ1N5bWJvbCAqTWNTeW0sIE1DRGF0YUZyYWdtZW50ICpGLCBNQ0ZpeHVwIE1jRml4dXApCisgICAgICAgIDogU3ltKE1jU3ltKSwgRml4dXAoTWNGaXh1cCksIERGKEYpIHt9CisgIH07CisgIFNtYWxsVmVjdG9yPFBlbmRpbmdNQ0ZpeHVwLCAyPiBQZW5kaW5nRml4dXBzOwogCiAgIHZpcnR1YWwgdm9pZCBFbWl0SW5zdFRvRGF0YShjb25zdCBNQ0luc3QgJkluc3QsIGNvbnN0IE1DU3VidGFyZ2V0SW5mbyYpID0gMDsKICAgdm9pZCBFbWl0Q0ZJU3RhcnRQcm9jSW1wbChNQ0R3YXJmRnJhbWVJbmZvICZGcmFtZSkgb3ZlcnJpZGU7CiAgIHZvaWQgRW1pdENGSUVuZFByb2NJbXBsKE1DRHdhcmZGcmFtZUluZm8gJkZyYW1lKSBvdmVycmlkZTsKICAgTUNTeW1ib2wgKkVtaXRDRklMYWJlbCgpIG92ZXJyaWRlOwogICB2b2lkIEVtaXRJbnN0cnVjdGlvbkltcGwoY29uc3QgTUNJbnN0ICZJbnN0LCBjb25zdCBNQ1N1YnRhcmdldEluZm8gJlNUSSk7CisgIHZvaWQgcmVzb2x2ZVBlbmRpbmdGaXh1cHMoKTsKIAogcHJvdGVjdGVkOgogICBNQ09iamVjdFN0cmVhbWVyKE1DQ29udGV4dCAmQ29udGV4dCwgc3RkOjp1bmlxdWVfcHRyPE1DQXNtQmFja2VuZD4gVEFCLApAQCAtMTA3LDggKzExNSw3IEBACiAgIHZvaWQgRW1pdFNMRUIxMjhWYWx1ZShjb25zdCBNQ0V4cHIgKlZhbHVlKSBvdmVycmlkZTsKICAgdm9pZCBFbWl0V2Vha1JlZmVyZW5jZShNQ1N5bWJvbCAqQWxpYXMsIGNvbnN0IE1DU3ltYm9sICpTeW1ib2wpIG92ZXJyaWRlOwogICB2b2lkIENoYW5nZVNlY3Rpb24oTUNTZWN0aW9uICpTZWN0aW9uLCBjb25zdCBNQ0V4cHIgKlN1YnNlY3Rpb24pIG92ZXJyaWRlOwotICB2b2lkIEVtaXRJbnN0cnVjdGlvbihjb25zdCBNQ0luc3QgJkluc3QsIGNvbnN0IE1DU3VidGFyZ2V0SW5mbyAmU1RJLAotICAgICAgICAgICAgICAgICAgICAgICBib29sID0gZmFsc2UpIG92ZXJyaWRlOworICB2b2lkIEVtaXRJbnN0cnVjdGlvbihjb25zdCBNQ0luc3QgJkluc3QsIGNvbnN0IE1DU3VidGFyZ2V0SW5mbyAmU1RJKSBvdmVycmlkZTsKIAogICAvLy8gRW1pdCBhbiBpbnN0cnVjdGlvbiB0byBhIHNwZWNpYWwgZnJhZ21lbnQsIGJlY2F1c2UgdGhpcyBpbnN0cnVjdGlvbgogICAvLy8gY2FuIGNoYW5nZSBpdHMgc2l6ZSBkdXJpbmcgcmVsYXhhdGlvbi4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNPYmplY3RXcml0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNPYmplY3RXcml0ZXIuaAppbmRleCA4YmFlMmJmLi4yNTQ3YjJiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DT2JqZWN0V3JpdGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ09iamVjdFdyaXRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vTUMvTUNPYmplY3RXcml0ZXIuaCAtIE9iamVjdCBGaWxlIFdyaXRlciBJbnRlcmZhY2UgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1BhcnNlci9Bc21Db25kLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DUGFyc2VyL0FzbUNvbmQuaAppbmRleCBhNmUwZmJkLi5lYTIxNTUwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DUGFyc2VyL0FzbUNvbmQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DUGFyc2VyL0FzbUNvbmQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBBc21Db25kLmggLSBBc3NlbWJseSBmaWxlIGNvbmRpdGlvbmFsIGFzc2VtYmx5ICAtLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNQYXJzZXIvQXNtTGV4ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNQYXJzZXIvQXNtTGV4ZXIuaAppbmRleCAyMDcxODNhLi5iNzI5NDQ5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DUGFyc2VyL0FzbUxleGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1BhcnNlci9Bc21MZXhlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEFzbUxleGVyLmggLSBMZXhlciBmb3IgQXNzZW1ibHkgRmlsZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zMCw3ICsyOSw2IEBACiAgIFN0cmluZ1JlZiBDdXJCdWY7CiAgIGJvb2wgSXNBdFN0YXJ0T2ZMaW5lID0gdHJ1ZTsKICAgYm9vbCBJc0F0U3RhcnRPZlN0YXRlbWVudCA9IHRydWU7Ci0gIGJvb2wgSXNQYXJzaW5nTVNJbmxpbmVBc20gPSBmYWxzZTsKICAgYm9vbCBJc1BlZWtpbmcgPSBmYWxzZTsKIAogcHJvdGVjdGVkOgpAQCAtNDQsNyArNDIsNiBAQAogICB+QXNtTGV4ZXIoKSBvdmVycmlkZTsKIAogICB2b2lkIHNldEJ1ZmZlcihTdHJpbmdSZWYgQnVmLCBjb25zdCBjaGFyICpwdHIgPSBudWxscHRyKTsKLSAgdm9pZCBzZXRQYXJzaW5nTVNJbmxpbmVBc20oYm9vbCBWKSB7IElzUGFyc2luZ01TSW5saW5lQXNtID0gVjsgfQogCiAgIFN0cmluZ1JlZiBMZXhVbnRpbEVuZE9mU3RhdGVtZW50KCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNQYXJzZXIvTUNBc21MZXhlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1BhcnNlci9NQ0FzbUxleGVyLmgKaW5kZXggOGZmMGRmMi4uZTg5YWJlYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1BhcnNlci9NQ0FzbUxleGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1BhcnNlci9NQ0FzbUxleGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9NQy9NQ0FzbUxleGVyLmggLSBBYnN0cmFjdCBBc20gTGV4ZXIgSW50ZXJmYWNlIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC01MCw2ICs0OSw3IEBACiAgIGJvb2wgU2tpcFNwYWNlID0gdHJ1ZTsKICAgYm9vbCBBbGxvd0F0SW5JZGVudGlmaWVyOwogICBib29sIElzQXRTdGFydE9mU3RhdGVtZW50ID0gdHJ1ZTsKKyAgYm9vbCBMZXhNYXNtSW50ZWdlcnMgPSBmYWxzZTsKICAgQXNtQ29tbWVudENvbnN1bWVyICpDb21tZW50Q29uc3VtZXIgPSBudWxscHRyOwogCiAgIE1DQXNtTGV4ZXIoKTsKQEAgLTE0Niw2ICsxNDYsMTAgQEAKICAgdm9pZCBzZXRDb21tZW50Q29uc3VtZXIoQXNtQ29tbWVudENvbnN1bWVyICpDb21tZW50Q29uc3VtZXIpIHsKICAgICB0aGlzLT5Db21tZW50Q29uc3VtZXIgPSBDb21tZW50Q29uc3VtZXI7CiAgIH0KKworICAvLy8gU2V0IHdoZXRoZXIgdG8gbGV4IG1hc20tc3R5bGUgYmluYXJ5IGFuZCBoZXggbGl0ZXJhbHMuIFRoZXkgbG9vayBsaWtlCisgIC8vLyAwYjExMDEgYW5kIDBBQkNoIHJlc3BlY3RpdmVseS4KKyAgdm9pZCBzZXRMZXhNYXNtSW50ZWdlcnMoYm9vbCBWKSB7IExleE1hc21JbnRlZ2VycyA9IFY7IH0KIH07CiAKIH0gLy8gZW5kIG5hbWVzcGFjZSBsbHZtCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DUGFyc2VyL01DQXNtUGFyc2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DUGFyc2VyL01DQXNtUGFyc2VyLmgKaW5kZXggMGQ1NmYzNi4uZGE1NjUzZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1BhcnNlci9NQ0FzbVBhcnNlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNQYXJzZXIvTUNBc21QYXJzZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL01DL01DQXNtUGFyc2VyLmggLSBBYnN0cmFjdCBBc20gUGFyc2VyIEludGVyZmFjZSAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTEyMiwxNyArMTIxLDE1IEBACiBwcml2YXRlOgogICBNQ1RhcmdldEFzbVBhcnNlciAqVGFyZ2V0UGFyc2VyID0gbnVsbHB0cjsKIAotICB1bnNpZ25lZCBTaG93UGFyc2VkT3BlcmFuZHMgOiAxOwotCiBwcm90ZWN0ZWQ6IC8vIENhbiBvbmx5IGNyZWF0ZSBzdWJjbGFzc2VzLgogICBNQ0FzbVBhcnNlcigpOwogCisgIFNtYWxsVmVjdG9yPE1DUGVuZGluZ0Vycm9yLCAwPiBQZW5kaW5nRXJyb3JzOworCiAgIC8vLyBGbGFnIHRyYWNraW5nIHdoZXRoZXIgYW55IGVycm9ycyBoYXZlIGJlZW4gZW5jb3VudGVyZWQuCiAgIGJvb2wgSGFkRXJyb3IgPSBmYWxzZTsKLSAgLy8vIEVuYWJsZSBwcmludCBbbGF0ZW5jeTp0aHJvdWdocHV0XSBpbiBvdXRwdXQgZmlsZS4KLSAgYm9vbCBFbmFibGVQcmludFNjaGVkSW5mbyA9IGZhbHNlOwogCi0gIFNtYWxsVmVjdG9yPE1DUGVuZGluZ0Vycm9yLCAxPiBQZW5kaW5nRXJyb3JzOworICBib29sIFNob3dQYXJzZWRPcGVyYW5kcyA9IGZhbHNlOwogCiBwdWJsaWM6CiAgIE1DQXNtUGFyc2VyKGNvbnN0IE1DQXNtUGFyc2VyICYpID0gZGVsZXRlOwpAQCAtMTY1LDkgKzE2Miw2IEBACiAgIGJvb2wgZ2V0U2hvd1BhcnNlZE9wZXJhbmRzKCkgY29uc3QgeyByZXR1cm4gU2hvd1BhcnNlZE9wZXJhbmRzOyB9CiAgIHZvaWQgc2V0U2hvd1BhcnNlZE9wZXJhbmRzKGJvb2wgVmFsdWUpIHsgU2hvd1BhcnNlZE9wZXJhbmRzID0gVmFsdWU7IH0KIAotICB2b2lkIHNldEVuYWJsZVByaW50U2NoZWRJbmZvKGJvb2wgVmFsdWUpIHsgRW5hYmxlUHJpbnRTY2hlZEluZm8gPSBWYWx1ZTsgfQotICBib29sIHNob3VsZFByaW50U2NoZWRJbmZvKCkgeyByZXR1cm4gRW5hYmxlUHJpbnRTY2hlZEluZm87IH0KLQogICAvLy8gUnVuIHRoZSBwYXJzZXIgb24gdGhlIGlucHV0IHNvdXJjZSBidWZmZXIuCiAgIHZpcnR1YWwgYm9vbCBSdW4oYm9vbCBOb0luaXRpYWxUZXh0U2VjdGlvbiwgYm9vbCBOb0ZpbmFsaXplID0gZmFsc2UpID0gMDsKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1BhcnNlci9NQ0FzbVBhcnNlckV4dGVuc2lvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1BhcnNlci9NQ0FzbVBhcnNlckV4dGVuc2lvbi5oCmluZGV4IDFhMTMyYmMuLjVkMmFmZTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNQYXJzZXIvTUNBc21QYXJzZXJFeHRlbnNpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DUGFyc2VyL01DQXNtUGFyc2VyRXh0ZW5zaW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9NQy9NQ0FzbVBhcnNlckV4dGVuc2lvbi5oIC0gQXNtIFBhcnNlciBIb29rcyAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DUGFyc2VyL01DQXNtUGFyc2VyVXRpbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNQYXJzZXIvTUNBc21QYXJzZXJVdGlscy5oCmluZGV4IDg0MTczYmIuLmQ2OTJkYTcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNQYXJzZXIvTUNBc21QYXJzZXJVdGlscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNQYXJzZXIvTUNBc21QYXJzZXJVdGlscy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vTUMvTUNBc21QYXJzZXJVdGlscy5oIC0gQXNtIFBhcnNlciBVdGlsaXRpZXMgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1BhcnNlci9NQ1BhcnNlZEFzbU9wZXJhbmQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNQYXJzZXIvTUNQYXJzZWRBc21PcGVyYW5kLmgKaW5kZXggNGFmNzZhYy4uMmI2ZTJhYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1BhcnNlci9NQ1BhcnNlZEFzbU9wZXJhbmQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DUGFyc2VyL01DUGFyc2VkQXNtT3BlcmFuZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vTUMvTUNQYXJzZWRBc21PcGVyYW5kLmggLSBBc20gUGFyc2VyIE9wZXJhbmQgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1BhcnNlci9NQ1RhcmdldEFzbVBhcnNlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1BhcnNlci9NQ1RhcmdldEFzbVBhcnNlci5oCmluZGV4IGJiOTc5NDIuLmM1NjgzYjcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNQYXJzZXIvTUNUYXJnZXRBc21QYXJzZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DUGFyc2VyL01DVGFyZ2V0QXNtUGFyc2VyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9NQy9NQ1RhcmdldEFzbVBhcnNlci5oIC0gVGFyZ2V0IEFzc2VtYmx5IFBhcnNlciAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC00OTAsNiArNDg5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQ0NvbnRleHQgJkN0eCkgewogICAgIHJldHVybiBudWxscHRyOwogICB9CisKKyAgLy8gRm9yIGFueSBjaGVja3Mgb3IgY2xlYW51cHMgYXQgdGhlIGVuZCBvZiBwYXJzaW5nLgorICB2aXJ0dWFsIHZvaWQgb25FbmRPZkZpbGUoKSB7fQogfTsKIAogfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNSZWdpc3RlckluZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNSZWdpc3RlckluZm8uaAppbmRleCA4ZDhjNjc3Li45MmQzOWMzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DUmVnaXN0ZXJJbmZvLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1JlZ2lzdGVySW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DL01DUmVnaXN0ZXJJbmZvLmggLSBUYXJnZXQgUmVnaXN0ZXIgRGVzY3JpcHRpb24gLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU2NoZWR1bGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTY2hlZHVsZS5oCmluZGV4IDlmNTNhNDYuLmRmMzI0OGUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTY2hlZHVsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTY2hlZHVsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL01DL01DU2NoZWR1bGUuaCAtIFNjaGVkdWxpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNSw2ICsxNCw3IEBACiAjaWZuZGVmIExMVk1fTUNfTUNTQ0hFRFVMRV9ICiAjZGVmaW5lIExMVk1fTUNfTUNTQ0hFRFVMRV9ICiAKKyNpbmNsdWRlICJsbHZtL0FEVC9BcnJheVJlZi5oIgogI2luY2x1ZGUgImxsdm0vQURUL09wdGlvbmFsLmgiCiAjaW5jbHVkZSAibGx2bS9Db25maWcvbGx2bS1jb25maWcuaCIKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvRGF0YVR5cGVzLmgiCkBAIC0xNDIsNiArMTQyLDcgQEAKIHN0cnVjdCBNQ1JlZ2lzdGVyQ29zdEVudHJ5IHsKICAgdW5zaWduZWQgUmVnaXN0ZXJDbGFzc0lEOwogICB1bnNpZ25lZCBDb3N0OworICBib29sIEFsbG93TW92ZUVsaW1pbmF0aW9uOwogfTsKIAogLy8vIEEgcmVnaXN0ZXIgZmlsZSBkZXNjcmlwdG9yLgpAQCAtMTU5LDYgKzE2MCwxMiBAQAogICB1aW50MTZfdCBOdW1SZWdpc3RlckNvc3RFbnRyaWVzOwogICAvLyBJbmRleCBvZiB0aGUgZmlyc3QgY29zdCBlbnRyeSBpbiBNQ0V4dHJhUHJvY2Vzc29ySW5mbzo6UmVnaXN0ZXJDb3N0VGFibGUuCiAgIHVpbnQxNl90IFJlZ2lzdGVyQ29zdEVudHJ5SWR4OworICAvLyBBIHZhbHVlIG9mIHplcm8gbWVhbnM6IHRoZXJlIGlzIG5vIGxpbWl0IGluIHRoZSBudW1iZXIgb2YgbW92ZXMgdGhhdCBjYW4gYmUKKyAgLy8gZWxpbWluYXRlZCBldmVyeSBjeWNsZS4KKyAgdWludDE2X3QgTWF4TW92ZXNFbGltaW5hdGVkUGVyQ3ljbGU7CisgIC8vIFR1cmUgaWYgdGhpcyByZWdpc3RlciBmaWxlIG9ubHkga25vd3MgaG93IHRvIG9wdGltaXplIHJlZ2lzdGVyIG1vdmVzIGZyb20KKyAgLy8ga25vd24gemVybyByZWdpc3RlcnMuCisgIGJvb2wgQWxsb3daZXJvTW92ZUVsaW1pbmF0aW9uT25seTsKIH07CiAKIC8vLyBQcm92aWRlIGV4dHJhIGRldGFpbHMgYWJvdXQgdGhlIG1hY2hpbmUgcHJvY2Vzc29yLgpAQCAtMTc2LDIyICsxODMsOCBAQAogICB1bnNpZ25lZCBOdW1SZWdpc3RlckZpbGVzOwogICBjb25zdCBNQ1JlZ2lzdGVyQ29zdEVudHJ5ICpSZWdpc3RlckNvc3RUYWJsZTsKICAgdW5zaWduZWQgTnVtUmVnaXN0ZXJDb3N0RW50cmllczsKLQotICBzdHJ1Y3QgUGZtQ291bnRlcnNJbmZvIHsKLSAgICAvLyBBbiBvcHRpb25hbCBuYW1lIG9mIGEgcGVyZm9ybWFuY2UgY291bnRlciB0aGF0IGNhbiBiZSB1c2VkIHRvIG1lYXN1cmUKLSAgICAvLyBjeWNsZXMuCi0gICAgY29uc3QgY2hhciAqQ3ljbGVDb3VudGVyOwotCi0gICAgLy8gQW4gb3B0aW9uYWwgbmFtZSBvZiBhIHBlcmZvcm1hbmNlIGNvdW50ZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBtZWFzdXJlCi0gICAgLy8gdW9wcy4KLSAgICBjb25zdCBjaGFyICpVb3BzQ291bnRlcjsKLQotICAgIC8vIEZvciBlYWNoIE1DUHJvY1Jlc291cmNlRGVzYyBkZWZpbmVkIGJ5IHRoZSBwcm9jZXNzb3IsIGFuIG9wdGlvbmFsIGxpc3Qgb2YKLSAgICAvLyBuYW1lcyBvZiBwZXJmb3JtYW5jZSBjb3VudGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvIG1lYXN1cmUgdGhlIHJlc291cmNlCi0gICAgLy8gdXRpbGl6YXRpb24uCi0gICAgY29uc3QgY2hhciAqKklzc3VlQ291bnRlcnM7Ci0gIH07Ci0gIFBmbUNvdW50ZXJzSW5mbyBQZm1Db3VudGVyczsKKyAgdW5zaWduZWQgTG9hZFF1ZXVlSUQ7CisgIHVuc2lnbmVkIFN0b3JlUXVldWVJRDsKIH07CiAKIC8vLyBNYWNoaW5lIG1vZGVsIGZvciBzY2hlZHVsaW5nLCBidW5kbGluZywgYW5kIGhldXJpc3RpY3MuCkBAIC0zNzcsNiArMzcwLDExIEBACiAgIGdldFJlY2lwcm9jYWxUaHJvdWdocHV0KGNvbnN0IE1DU3VidGFyZ2V0SW5mbyAmU1RJLCBjb25zdCBNQ0luc3RySW5mbyAmTUNJSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTUNJbnN0ICZJbnN0KSBjb25zdDsKIAorICAvLy8gUmV0dXJucyB0aGUgbWF4aW11bSBmb3J3YXJkaW5nIGRlbGF5IGZvciByZWdpc3RlciByZWFkcyBkZXBlbmRlbnQgb24KKyAgLy8vIHdyaXRlcyBvZiBzY2hlZHVsaW5nIGNsYXNzIFdyaXRlUmVzb3VyY2VJZHguCisgIHN0YXRpYyB1bnNpZ25lZCBnZXRGb3J3YXJkaW5nRGVsYXlDeWNsZXMoQXJyYXlSZWY8TUNSZWFkQWR2YW5jZUVudHJ5PiBFbnRyaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFdyaXRlUmVzb3VyY2VJZHggPSAwKTsKKwogICAvLy8gUmV0dXJucyB0aGUgZGVmYXVsdCBpbml0aWFsaXplZCBtb2RlbC4KICAgc3RhdGljIGNvbnN0IE1DU2NoZWRNb2RlbCAmR2V0RGVmYXVsdFNjaGVkTW9kZWwoKSB7IHJldHVybiBEZWZhdWx0OyB9CiAgIHN0YXRpYyBjb25zdCBNQ1NjaGVkTW9kZWwgRGVmYXVsdDsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTZWN0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU2VjdGlvbi5oCmluZGV4IGViMjEwYjQuLjI3NDkwZGMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTZWN0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1NlY3Rpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNQ1NlY3Rpb24uaCAtIE1hY2hpbmUgQ29kZSBTZWN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1NlY3Rpb25DT0ZGLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU2VjdGlvbkNPRkYuaAppbmRleCAyNGI5Zjg4Li44YmU5NWUwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU2VjdGlvbkNPRkYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU2VjdGlvbkNPRkYuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNQ1NlY3Rpb25DT0ZGLmggLSBDT0ZGIE1hY2hpbmUgQ29kZSBTZWN0aW9ucyAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNjMsOCArNjIsNiBAQAogICB9CiAKIHB1YmxpYzoKLSAgfk1DU2VjdGlvbkNPRkYoKTsKLQogICAvLy8gRGVjaWRlcyB3aGV0aGVyIGEgJy5zZWN0aW9uJyBkaXJlY3RpdmUgc2hvdWxkIGJlIHByaW50ZWQgYmVmb3JlIHRoZQogICAvLy8gc2VjdGlvbiBuYW1lCiAgIGJvb2wgU2hvdWxkT21pdFNlY3Rpb25EaXJlY3RpdmUoU3RyaW5nUmVmIE5hbWUsIGNvbnN0IE1DQXNtSW5mbyAmTUFJKSBjb25zdDsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTZWN0aW9uRUxGLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU2VjdGlvbkVMRi5oCmluZGV4IDAwYzI4OWMuLmZlNmIyZDcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTZWN0aW9uRUxGLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1NlY3Rpb25FTEYuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNQ1NlY3Rpb25FTEYuaCAtIEVMRiBNYWNoaW5lIENvZGUgU2VjdGlvbnMgLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNjQsOCArNjMsNiBAQAogICB2b2lkIHNldFNlY3Rpb25OYW1lKFN0cmluZ1JlZiBOYW1lKSB7IFNlY3Rpb25OYW1lID0gTmFtZTsgfQogCiBwdWJsaWM6Ci0gIH5NQ1NlY3Rpb25FTEYoKTsKLQogICAvLy8gRGVjaWRlcyB3aGV0aGVyIGEgJy5zZWN0aW9uJyBkaXJlY3RpdmUgc2hvdWxkIGJlIHByaW50ZWQgYmVmb3JlIHRoZQogICAvLy8gc2VjdGlvbiBuYW1lCiAgIGJvb2wgU2hvdWxkT21pdFNlY3Rpb25EaXJlY3RpdmUoU3RyaW5nUmVmIE5hbWUsIGNvbnN0IE1DQXNtSW5mbyAmTUFJKSBjb25zdDsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTZWN0aW9uTWFjaE8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTZWN0aW9uTWFjaE8uaAppbmRleCA4OWRiMDljLi4yYzczNjYxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU2VjdGlvbk1hY2hPLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1NlY3Rpb25NYWNoTy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DU2VjdGlvbk1hY2hPLmggLSBNYWNoTyBNYWNoaW5lIENvZGUgU2VjdGlvbnMgLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU2VjdGlvbldhc20uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTZWN0aW9uV2FzbS5oCmluZGV4IGFiNGNkN2IuLjBlNTc2YjcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTZWN0aW9uV2FzbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTZWN0aW9uV2FzbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DU2VjdGlvbldhc20uaCAtIFdhc20gTWFjaGluZSBDb2RlIFNlY3Rpb25zIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00OSwxNCArNDgsMTAgQEAKICAgICAgIDogTUNTZWN0aW9uKFNWX1dhc20sIEssIEJlZ2luKSwgU2VjdGlvbk5hbWUoU2VjdGlvbiksIFVuaXF1ZUlEKFVuaXF1ZUlEKSwKICAgICAgICAgR3JvdXAoZ3JvdXApIHt9CiAKLSAgdm9pZCBzZXRTZWN0aW9uTmFtZShTdHJpbmdSZWYgTmFtZSkgeyBTZWN0aW9uTmFtZSA9IE5hbWU7IH0KLQogcHVibGljOgotICB+TUNTZWN0aW9uV2FzbSgpOwotCiAgIC8vLyBEZWNpZGVzIHdoZXRoZXIgYSAnLnNlY3Rpb24nIGRpcmVjdGl2ZSBzaG91bGQgYmUgcHJpbnRlZCBiZWZvcmUgdGhlCiAgIC8vLyBzZWN0aW9uIG5hbWUKLSAgYm9vbCBTaG91bGRPbWl0U2VjdGlvbkRpcmVjdGl2ZShTdHJpbmdSZWYgTmFtZSwgY29uc3QgTUNBc21JbmZvICZNQUkpIGNvbnN0OworICBib29sIHNob3VsZE9taXRTZWN0aW9uRGlyZWN0aXZlKFN0cmluZ1JlZiBOYW1lLCBjb25zdCBNQ0FzbUluZm8gJk1BSSkgY29uc3Q7CiAKICAgU3RyaW5nUmVmIGdldFNlY3Rpb25OYW1lKCkgY29uc3QgeyByZXR1cm4gU2VjdGlvbk5hbWU7IH0KICAgY29uc3QgTUNTeW1ib2xXYXNtICpnZXRHcm91cCgpIGNvbnN0IHsgcmV0dXJuIEdyb3VwOyB9CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU3RyZWFtZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTdHJlYW1lci5oCmluZGV4IDkxZmI0ZTUuLmRjMjM4NmYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTdHJlYW1lci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTdHJlYW1lci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DU3RyZWFtZXIuaCAtIEhpZ2gtbGV2ZWwgU3RyZWFtaW5nIE1hY2hpbmUgQ29kZSBPdXRwdXQgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yOCw2ICsyNyw3IEBACiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L01ENS5oIgogI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9TTUxvYy5oIgogI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9UYXJnZXRQYXJzZXIuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvVmVyc2lvblR1cGxlLmgiCiAjaW5jbHVkZSA8Y2Fzc2VydD4KICNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTEwOSw2ICsxMDksMTEgQEAKIAogICB2aXJ0dWFsIHZvaWQgZW1pdFZhbHVlKGNvbnN0IE1DRXhwciAqVmFsdWUpOwogCisgIC8vLyBFbWl0IHRoZSBieXRlcyBpbiBccCBEYXRhIGludG8gdGhlIG91dHB1dC4KKyAgLy8vCisgIC8vLyBUaGlzIGlzIHVzZWQgdG8gZW1pdCBieXRlcyBpbiBccCBEYXRhIGFzIHNlcXVlbmNlIG9mIC5ieXRlIGRpcmVjdGl2ZXMuCisgIHZpcnR1YWwgdm9pZCBlbWl0UmF3Qnl0ZXMoU3RyaW5nUmVmIERhdGEpOworCiAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKTsKIH07CiAKQEAgLTE5MywxMCArMTk4LDYgQEAKIAogICBXaW5FSDo6RnJhbWVJbmZvICpDdXJyZW50V2luRnJhbWVJbmZvOwogCi0gIC8vLyBSZXRyZWl2ZSB0aGUgY3VycmVudCBmcmFtZSBpbmZvIGlmIG9uZSBpcyBhdmFpbGFibGUgYW5kIGl0IGlzIG5vdCB5ZXQKLSAgLy8vIGNsb3NlZC4gT3RoZXJ3aXNlLCBpc3N1ZSBhbiBlcnJvciBhbmQgcmV0dXJuIG51bGwuCi0gIFdpbkVIOjpGcmFtZUluZm8gKkVuc3VyZVZhbGlkV2luRnJhbWVJbmZvKFNNTG9jIExvYyk7Ci0KICAgLy8vIFRyYWNrcyBhbiBpbmRleCB0byByZXByZXNlbnQgdGhlIG9yZGVyIGEgc3ltYm9sIHdhcyBlbWl0dGVkIGluLgogICAvLy8gWmVybyBtZWFucyB3ZSBkaWQgbm90IGVtaXQgdGhhdCBzeW1ib2wuCiAgIERlbnNlTWFwPGNvbnN0IE1DU3ltYm9sICosIHVuc2lnbmVkPiBTeW1ib2xPcmRlcmluZzsKQEAgLTIxOSwxMCArMjIwLDYgQEAKICAgdmlydHVhbCB2b2lkIEVtaXRDRklTdGFydFByb2NJbXBsKE1DRHdhcmZGcmFtZUluZm8gJkZyYW1lKTsKICAgdmlydHVhbCB2b2lkIEVtaXRDRklFbmRQcm9jSW1wbChNQ0R3YXJmRnJhbWVJbmZvICZDdXJGcmFtZSk7CiAKLSAgLy8vIFdoZW4gZW1pdHRpbmcgYW4gb2JqZWN0IGZpbGUsIGNyZWF0ZSBhbmQgZW1pdCBhIHJlYWwgbGFiZWwuIFdoZW4gZW1pdHRpbmcKLSAgLy8vIHRleHR1YWwgYXNzZW1ibHksIHRoaXMgc2hvdWxkIGRvIG5vdGhpbmcgdG8gYXZvaWQgcG9sbHV0aW5nIG91ciBvdXRwdXQuCi0gIHZpcnR1YWwgTUNTeW1ib2wgKkVtaXRDRklMYWJlbCgpOwotCiAgIFdpbkVIOjpGcmFtZUluZm8gKmdldEN1cnJlbnRXaW5GcmFtZUluZm8oKSB7CiAgICAgcmV0dXJuIEN1cnJlbnRXaW5GcmFtZUluZm87CiAgIH0KQEAgLTI2MSw2ICsyNTgsMTQgQEAKICAgICByZXR1cm4gVGFyZ2V0U3RyZWFtZXIuZ2V0KCk7CiAgIH0KIAorICAvLy8gV2hlbiBlbWl0dGluZyBhbiBvYmplY3QgZmlsZSwgY3JlYXRlIGFuZCBlbWl0IGEgcmVhbCBsYWJlbC4gV2hlbiBlbWl0dGluZworICAvLy8gdGV4dHVhbCBhc3NlbWJseSwgdGhpcyBzaG91bGQgZG8gbm90aGluZyB0byBhdm9pZCBwb2xsdXRpbmcgb3VyIG91dHB1dC4KKyAgdmlydHVhbCBNQ1N5bWJvbCAqRW1pdENGSUxhYmVsKCk7CisKKyAgLy8vIFJldHJlaXZlIHRoZSBjdXJyZW50IGZyYW1lIGluZm8gaWYgb25lIGlzIGF2YWlsYWJsZSBhbmQgaXQgaXMgbm90IHlldAorICAvLy8gY2xvc2VkLiBPdGhlcndpc2UsIGlzc3VlIGFuIGVycm9yIGFuZCByZXR1cm4gbnVsbC4KKyAgV2luRUg6OkZyYW1lSW5mbyAqRW5zdXJlVmFsaWRXaW5GcmFtZUluZm8oU01Mb2MgTG9jKTsKKwogICB1bnNpZ25lZCBnZXROdW1GcmFtZUluZm9zKCkgeyByZXR1cm4gRHdhcmZGcmFtZUluZm9zLnNpemUoKTsgfQogICBBcnJheVJlZjxNQ0R3YXJmRnJhbWVJbmZvPiBnZXREd2FyZkZyYW1lSW5mb3MoKSBjb25zdCB7CiAgICAgcmV0dXJuIER3YXJmRnJhbWVJbmZvczsKQEAgLTQ0NywxNCArNDUyLDE3IEBACiAKICAgLy8vIFNwZWNpZnkgdGhlIE1hY2gtTyBtaW5pbXVtIGRlcGxveW1lbnQgdGFyZ2V0IHZlcnNpb24uCiAgIHZpcnR1YWwgdm9pZCBFbWl0VmVyc2lvbk1pbihNQ1ZlcnNpb25NaW5UeXBlIFR5cGUsIHVuc2lnbmVkIE1ham9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTWlub3IsIHVuc2lnbmVkIFVwZGF0ZSkge30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE1pbm9yLCB1bnNpZ25lZCBVcGRhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uVHVwbGUgU0RLVmVyc2lvbikge30KIAogICAvLy8gRW1pdC9TcGVjaWZ5IE1hY2gtTyBidWlsZCB2ZXJzaW9uIGNvbW1hbmQuCiAgIC8vLyBccCBQbGF0Zm9ybSBzaG91bGQgYmUgb25lIG9mIE1hY2hPOjpQbGF0Zm9ybVR5cGUuCiAgIHZpcnR1YWwgdm9pZCBFbWl0QnVpbGRWZXJzaW9uKHVuc2lnbmVkIFBsYXRmb3JtLCB1bnNpZ25lZCBNYWpvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTWlub3IsIHVuc2lnbmVkIFVwZGF0ZSkge30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTWlub3IsIHVuc2lnbmVkIFVwZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvblR1cGxlIFNES1ZlcnNpb24pIHt9CiAKLSAgdm9pZCBFbWl0VmVyc2lvbkZvclRhcmdldChjb25zdCBUcmlwbGUgJlRhcmdldCk7CisgIHZvaWQgRW1pdFZlcnNpb25Gb3JUYXJnZXQoY29uc3QgVHJpcGxlICZUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVyc2lvblR1cGxlICZTREtWZXJzaW9uKTsKIAogICAvLy8gTm90ZSBpbiB0aGUgb3V0cHV0IHRoYXQgdGhlIHNwZWNpZmllZCBccCBGdW5jIGlzIGEgVGh1bWIgbW9kZQogICAvLy8gZnVuY3Rpb24gKEFSTSB0YXJnZXQgb25seSkuCkBAIC03OTcsNiArODA1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsPFN0cmluZ1JlZj4gU291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgQ1VJRCA9IDApOwogCisgIHZpcnR1YWwgdm9pZCBFbWl0Q0ZJQktleUZyYW1lKCk7CisKICAgLy8vIFRoaXMgaW1wbGVtZW50cyB0aGUgRFdBUkYyICcubG9jIGZpbGVubyBsaW5lbm8gLi4uJyBhc3NlbWJsZXIKICAgLy8vIGRpcmVjdGl2ZS4KICAgdmlydHVhbCB2b2lkIEVtaXREd2FyZkxvY0RpcmVjdGl2ZSh1bnNpZ25lZCBGaWxlTm8sIHVuc2lnbmVkIExpbmUsCkBAIC04NzAsNyArODgwLDcgQEAKIAogICB2aXJ0dWFsIE1DU3ltYm9sICpnZXREd2FyZkxpbmVUYWJsZVN5bWJvbCh1bnNpZ25lZCBDVUlEKTsKICAgdmlydHVhbCB2b2lkIEVtaXRDRklTZWN0aW9ucyhib29sIEVILCBib29sIERlYnVnKTsKLSAgdm9pZCBFbWl0Q0ZJU3RhcnRQcm9jKGJvb2wgSXNTaW1wbGUpOworICB2b2lkIEVtaXRDRklTdGFydFByb2MoYm9vbCBJc1NpbXBsZSwgU01Mb2MgTG9jID0gU01Mb2MoKSk7CiAgIHZvaWQgRW1pdENGSUVuZFByb2MoKTsKICAgdmlydHVhbCB2b2lkIEVtaXRDRklEZWZDZmEoaW50NjRfdCBSZWdpc3RlciwgaW50NjRfdCBPZmZzZXQpOwogICB2aXJ0dWFsIHZvaWQgRW1pdENGSURlZkNmYU9mZnNldChpbnQ2NF90IE9mZnNldCk7CkBAIC04OTEsOSArOTAxLDE1IEBACiAgIHZpcnR1YWwgdm9pZCBFbWl0Q0ZJVW5kZWZpbmVkKGludDY0X3QgUmVnaXN0ZXIpOwogICB2aXJ0dWFsIHZvaWQgRW1pdENGSVJlZ2lzdGVyKGludDY0X3QgUmVnaXN0ZXIxLCBpbnQ2NF90IFJlZ2lzdGVyMik7CiAgIHZpcnR1YWwgdm9pZCBFbWl0Q0ZJV2luZG93U2F2ZSgpOworICB2aXJ0dWFsIHZvaWQgRW1pdENGSU5lZ2F0ZVJBU3RhdGUoKTsKIAogICB2aXJ0dWFsIHZvaWQgRW1pdFdpbkNGSVN0YXJ0UHJvYyhjb25zdCBNQ1N5bWJvbCAqU3ltYm9sLCBTTUxvYyBMb2MgPSBTTUxvYygpKTsKICAgdmlydHVhbCB2b2lkIEVtaXRXaW5DRklFbmRQcm9jKFNNTG9jIExvYyA9IFNNTG9jKCkpOworICAvLy8gVGhpcyBpcyB1c2VkIG9uIHBsYXRmb3Jtcywgc3VjaCBhcyBXaW5kb3dzIG9uIEFSTTY0LCB0aGF0IHJlcXVpcmUgZnVuY3Rpb24KKyAgLy8vIG9yIGZ1bmNsZXQgc2l6ZXMgdG8gYmUgZW1pdHRlZCBpbiAueGRhdGEgYmVmb3JlIHRoZSBFbmQgbWFya2VyIGlzIGVtaXR0ZWQKKyAgLy8vIGZvciB0aGUgZnJhbWUuICBXZSBjYW5ub3QgdXNlIHRoZSBFbmQgbWFya2VyLCBhcyBpdCBpcyBub3Qgc2V0IGF0IHRoZQorICAvLy8gcG9pbnQgb2YgZW1pdHRpbmcgLnhkYXRhLCBpbiBvcmRlciB0byBpbmRpY2F0ZSB0aGF0IHRoZSBmcmFtZSBpcyBhY3RpdmUuCisgIHZpcnR1YWwgdm9pZCBFbWl0V2luQ0ZJRnVuY2xldE9yRnVuY0VuZChTTUxvYyBMb2MgPSBTTUxvYygpKTsKICAgdmlydHVhbCB2b2lkIEVtaXRXaW5DRklTdGFydENoYWluZWQoU01Mb2MgTG9jID0gU01Mb2MoKSk7CiAgIHZpcnR1YWwgdm9pZCBFbWl0V2luQ0ZJRW5kQ2hhaW5lZChTTUxvYyBMb2MgPSBTTUxvYygpKTsKICAgdmlydHVhbCB2b2lkIEVtaXRXaW5DRklQdXNoUmVnKHVuc2lnbmVkIFJlZ2lzdGVyLCBTTUxvYyBMb2MgPSBTTUxvYygpKTsKQEAgLTkzNiw5ICs5NTIsNyBAQAogICB2aXJ0dWFsIHZvaWQgRW1pdEFkZHJzaWdTeW0oY29uc3QgTUNTeW1ib2wgKlN5bSkge30KIAogICAvLy8gRW1pdCB0aGUgZ2l2ZW4gXHAgSW5zdHJ1Y3Rpb24gaW50byB0aGUgY3VycmVudCBzZWN0aW9uLgotICAvLy8gUHJpbnRTY2hlZEluZm8gPT0gdHJ1ZSB0aGVuIHNjaGVkdWwgY29tbWVudCBzaG91bGQgYmUgYWRkZWQgdG8gb3V0cHV0Ci0gIHZpcnR1YWwgdm9pZCBFbWl0SW5zdHJ1Y3Rpb24oY29uc3QgTUNJbnN0ICZJbnN0LCBjb25zdCBNQ1N1YnRhcmdldEluZm8gJlNUSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFByaW50U2NoZWRJbmZvID0gZmFsc2UpOworICB2aXJ0dWFsIHZvaWQgRW1pdEluc3RydWN0aW9uKGNvbnN0IE1DSW5zdCAmSW5zdCwgY29uc3QgTUNTdWJ0YXJnZXRJbmZvICZTVEkpOwogCiAgIC8vLyBTZXQgdGhlIGJ1bmRsZSBhbGlnbm1lbnQgbW9kZSBmcm9tIG5vdyBvbiBpbiB0aGUgc2VjdGlvbi4KICAgLy8vIFRoZSBhcmd1bWVudCBpcyB0aGUgcG93ZXIgb2YgMiB0byB3aGljaCB0aGUgYWxpZ25tZW50IGlzIHNldC4gVGhlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU3VidGFyZ2V0SW5mby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1N1YnRhcmdldEluZm8uaAppbmRleCBiM2NlNTIzLi5jNzQ3MmEyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU3VidGFyZ2V0SW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTdWJ0YXJnZXRJbmZvLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9NQy9NQ1N1YnRhcmdldEluZm8uaCAtIFN1YnRhcmdldCBJbmZvcm1hdGlvbiAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE1Myw2ICsxNTIsMTYgQEAKICAgICByZXR1cm4gMDsKICAgfQogCisgIC8vLyBSZXR1cm4gdGhlIHNldCBvZiBSZWFkQWR2YW5jZSBlbnRyaWVzIGRlY2xhcmVkIGJ5IHRoZSBzY2hlZHVsaW5nIGNsYXNzCisgIC8vLyBkZXNjcmlwdG9yIGluIGlucHV0LgorICBBcnJheVJlZjxNQ1JlYWRBZHZhbmNlRW50cnk+CisgIGdldFJlYWRBZHZhbmNlRW50cmllcyhjb25zdCBNQ1NjaGVkQ2xhc3NEZXNjICZTQykgY29uc3QgeworICAgIGlmICghU0MuTnVtUmVhZEFkdmFuY2VFbnRyaWVzKQorICAgICAgcmV0dXJuIEFycmF5UmVmPE1DUmVhZEFkdmFuY2VFbnRyeT4oKTsKKyAgICByZXR1cm4gQXJyYXlSZWY8TUNSZWFkQWR2YW5jZUVudHJ5PigmUmVhZEFkdmFuY2VUYWJsZVtTQy5SZWFkQWR2YW5jZUlkeF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0MuTnVtUmVhZEFkdmFuY2VFbnRyaWVzKTsKKyAgfQorCiAgIC8vLyBHZXQgc2NoZWR1bGluZyBpdGluZXJhcnkgb2YgYSBDUFUuCiAgIEluc3RySXRpbmVyYXJ5RGF0YSBnZXRJbnN0ckl0aW5lcmFyeUZvckNQVShTdHJpbmdSZWYgQ1BVKSBjb25zdDsKIApAQCAtMTcxLDExICsxODAsNiBAQAogICAgIGF1dG8gRm91bmQgPSBzdGQ6Omxvd2VyX2JvdW5kKFByb2NEZXNjLmJlZ2luKCksIFByb2NEZXNjLmVuZCgpLCBDUFUpOwogICAgIHJldHVybiBGb3VuZCAhPSBQcm9jRGVzYy5lbmQoKSAmJiBTdHJpbmdSZWYoRm91bmQtPktleSkgPT0gQ1BVOwogICB9Ci0KLSAgLy8vIFJldHVybnMgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHNjaGVkdWxlciBjb21tZW50Ci0gIHZpcnR1YWwgc3RkOjpzdHJpbmcgZ2V0U2NoZWRJbmZvU3RyKE1DSW5zdCBjb25zdCAmTUNJKSBjb25zdCB7Ci0gICAgcmV0dXJuIHt9OwotICB9CiB9OwogCiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1N5bWJvbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1N5bWJvbC5oCmluZGV4IDQ2ODFhMWIuLjI3M2U1YTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTeW1ib2wuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU3ltYm9sLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTUNTeW1ib2wuaCAtIE1hY2hpbmUgQ29kZSBTeW1ib2xzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTeW1ib2xDT0ZGLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU3ltYm9sQ09GRi5oCmluZGV4IDc5MThjMzUuLjk0MDg3Y2UgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTeW1ib2xDT0ZGLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1N5bWJvbENPRkYuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNQ1N5bWJvbENPRkYuaCAtICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTeW1ib2xFTEYuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTeW1ib2xFTEYuaAppbmRleCBiYmNkMjJlLi4zNGU1YzQzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU3ltYm9sRUxGLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1N5bWJvbEVMRi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DU3ltYm9sRUxGLmggLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KICNpZm5kZWYgTExWTV9NQ19NQ1NZTUJPTEVMRl9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU3ltYm9sTWFjaE8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTeW1ib2xNYWNoTy5oCmluZGV4IDYxMjVjMjAuLjhmOWZmNTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTeW1ib2xNYWNoTy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTeW1ib2xNYWNoTy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DU3ltYm9sTWFjaE8uaCAtICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KICNpZm5kZWYgTExWTV9NQ19NQ1NZTUJPTE1BQ0hPX0gKQEAgLTM1LDYgKzM0LDcgQEAKICAgICBTRl9XZWFrRGVmaW5pdGlvbiAgICAgICAgICAgICAgICAgICAgICAgPSAweDAwODAsCiAgICAgU0ZfU3ltYm9sUmVzb2x2ZXIgICAgICAgICAgICAgICAgICAgICAgID0gMHgwMTAwLAogICAgIFNGX0FsdEVudHJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDIwMCwKKyAgICBTRl9Db2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAweDA0MDAsCiAKICAgICAvLyBDb21tb24gYWxpZ25tZW50CiAgICAgU0ZfQ29tbW9uQWxpZ25tZW50TWFzayAgICAgICAgICAgICAgICAgID0gMHhGMEZGLApAQCAtOTgsNiArOTgsMTAgQEAKICAgICByZXR1cm4gZ2V0RmxhZ3MoKSAmIFNGX0FsdEVudHJ5OwogICB9CiAKKyAgdm9pZCBzZXRDb2xkKCkgY29uc3QgeyBtb2RpZnlGbGFncyhTRl9Db2xkLCBTRl9Db2xkKTsgfQorCisgIGJvb2wgaXNDb2xkKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZ3MoKSAmIFNGX0NvbGQ7IH0KKwogICB2b2lkIHNldERlc2ModW5zaWduZWQgVmFsdWUpIGNvbnN0IHsKICAgICBhc3NlcnQoVmFsdWUgPT0gKFZhbHVlICYgU0ZfRGVzY0ZsYWdzTWFzaykgJiYKICAgICAgICAgICAgIkludmFsaWQgLmRlc2MgdmFsdWUhIik7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU3ltYm9sV2FzbS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1N5bWJvbFdhc20uaAppbmRleCAyODExNzhhLi44ODc1OWZlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DU3ltYm9sV2FzbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNTeW1ib2xXYXNtLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTUNTeW1ib2xXYXNtLmggLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogI2lmbmRlZiBMTFZNX01DX01DU1lNQk9MV0FTTV9ICkBAIC0xOSwxMCArMTgsMTEgQEAKICAgYm9vbCBJc1dlYWsgPSBmYWxzZTsKICAgYm9vbCBJc0hpZGRlbiA9IGZhbHNlOwogICBib29sIElzQ29tZGF0ID0gZmFsc2U7Ci0gIHN0ZDo6c3RyaW5nIE1vZHVsZU5hbWU7CisgIE9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBJbXBvcnRNb2R1bGU7CisgIE9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBJbXBvcnROYW1lOwogICB3YXNtOjpXYXNtU2lnbmF0dXJlICpTaWduYXR1cmUgPSBudWxscHRyOwotICB3YXNtOjpXYXNtR2xvYmFsVHlwZSBHbG9iYWxUeXBlOwotICBib29sIEdsb2JhbFR5cGVTZXQgPSBmYWxzZTsKKyAgT3B0aW9uYWw8d2FzbTo6V2FzbUdsb2JhbFR5cGU+IEdsb2JhbFR5cGU7CisgIE9wdGlvbmFsPHdhc206Oldhc21FdmVudFR5cGU+IEV2ZW50VHlwZTsKIAogICAvLy8gQW4gZXhwcmVzc2lvbiBkZXNjcmliaW5nIGhvdyB0byBjYWxjdWxhdGUgdGhlIHNpemUgb2YgYSBzeW1ib2wuIElmIGEKICAgLy8vIHN5bWJvbCBoYXMgbm8gc2l6ZSB0aGlzIGZpZWxkIHdpbGwgYmUgTlVMTC4KQEAgLTMyLDcgKzMyLDcgQEAKICAgLy8gVXNlIGEgbW9kdWxlIG5hbWUgb2YgImVudiIgZm9yIG5vdywgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyB0b29scy4KICAgLy8gVGhpcyBpcyB0ZW1wb3JhcnksIGFuZCBtYXkgY2hhbmdlLCBhcyB0aGUgQUJJIGlzIG5vdCB5ZXQgc3RhYmxlLgogICBNQ1N5bWJvbFdhc20oY29uc3QgU3RyaW5nTWFwRW50cnk8Ym9vbD4gKk5hbWUsIGJvb2wgaXNUZW1wb3JhcnkpCi0gICAgICA6IE1DU3ltYm9sKFN5bWJvbEtpbmRXYXNtLCBOYW1lLCBpc1RlbXBvcmFyeSksIE1vZHVsZU5hbWUoImVudiIpIHt9CisgICAgICA6IE1DU3ltYm9sKFN5bWJvbEtpbmRXYXNtLCBOYW1lLCBpc1RlbXBvcmFyeSkge30KICAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBNQ1N5bWJvbCAqUykgeyByZXR1cm4gUy0+aXNXYXNtKCk7IH0KIAogICBjb25zdCBNQ0V4cHIgKmdldFNpemUoKSBjb25zdCB7IHJldHVybiBTeW1ib2xTaXplOyB9CkBAIC00Miw5ICs0MiwxNyBAQAogICBib29sIGlzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIFR5cGUgPT0gd2FzbTo6V0FTTV9TWU1CT0xfVFlQRV9EQVRBOyB9CiAgIGJvb2wgaXNHbG9iYWwoKSBjb25zdCB7IHJldHVybiBUeXBlID09IHdhc206OldBU01fU1lNQk9MX1RZUEVfR0xPQkFMOyB9CiAgIGJvb2wgaXNTZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gVHlwZSA9PSB3YXNtOjpXQVNNX1NZTUJPTF9UWVBFX1NFQ1RJT047IH0KKyAgYm9vbCBpc0V2ZW50KCkgY29uc3QgeyByZXR1cm4gVHlwZSA9PSB3YXNtOjpXQVNNX1NZTUJPTF9UWVBFX0VWRU5UOyB9CiAgIHdhc206Oldhc21TeW1ib2xUeXBlIGdldFR5cGUoKSBjb25zdCB7IHJldHVybiBUeXBlOyB9CiAgIHZvaWQgc2V0VHlwZSh3YXNtOjpXYXNtU3ltYm9sVHlwZSB0eXBlKSB7IFR5cGUgPSB0eXBlOyB9CiAKKyAgYm9vbCBpc0V4cG9ydGVkKCkgY29uc3QgeworICAgIHJldHVybiBnZXRGbGFncygpICYgd2FzbTo6V0FTTV9TWU1CT0xfRVhQT1JURUQ7CisgIH0KKyAgdm9pZCBzZXRFeHBvcnRlZCgpIGNvbnN0IHsKKyAgICBtb2RpZnlGbGFncyh3YXNtOjpXQVNNX1NZTUJPTF9FWFBPUlRFRCwgd2FzbTo6V0FTTV9TWU1CT0xfRVhQT1JURUQpOworICB9CisKICAgYm9vbCBpc1dlYWsoKSBjb25zdCB7IHJldHVybiBJc1dlYWs7IH0KICAgdm9pZCBzZXRXZWFrKGJvb2wgaXNXZWFrKSB7IElzV2VhayA9IGlzV2VhazsgfQogCkBAIC01NCwyMSArNjIsMzYgQEAKICAgYm9vbCBpc0NvbWRhdCgpIGNvbnN0IHsgcmV0dXJuIElzQ29tZGF0OyB9CiAgIHZvaWQgc2V0Q29tZGF0KGJvb2wgaXNDb21kYXQpIHsgSXNDb21kYXQgPSBpc0NvbWRhdDsgfQogCi0gIGNvbnN0IFN0cmluZ1JlZiBnZXRNb2R1bGVOYW1lKCkgY29uc3QgeyByZXR1cm4gTW9kdWxlTmFtZTsgfQotICB2b2lkIHNldE1vZHVsZU5hbWUoU3RyaW5nUmVmIE5hbWUpIHsgTW9kdWxlTmFtZSA9IE5hbWU7IH0KKyAgY29uc3QgU3RyaW5nUmVmIGdldEltcG9ydE1vZHVsZSgpIGNvbnN0IHsKKyAgICAgIGlmIChJbXBvcnRNb2R1bGUuaGFzVmFsdWUoKSkgeworICAgICAgICAgIHJldHVybiBJbXBvcnRNb2R1bGUuZ2V0VmFsdWUoKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiAiZW52IjsKKyAgfQorICB2b2lkIHNldEltcG9ydE1vZHVsZShTdHJpbmdSZWYgTmFtZSkgeyBJbXBvcnRNb2R1bGUgPSBOYW1lOyB9CisKKyAgY29uc3QgU3RyaW5nUmVmIGdldEltcG9ydE5hbWUoKSBjb25zdCB7CisgICAgICBpZiAoSW1wb3J0TmFtZS5oYXNWYWx1ZSgpKSB7CisgICAgICAgICAgcmV0dXJuIEltcG9ydE5hbWUuZ2V0VmFsdWUoKTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBnZXROYW1lKCk7CisgIH0KKyAgdm9pZCBzZXRJbXBvcnROYW1lKFN0cmluZ1JlZiBOYW1lKSB7IEltcG9ydE5hbWUgPSBOYW1lOyB9CiAKICAgY29uc3Qgd2FzbTo6V2FzbVNpZ25hdHVyZSAqZ2V0U2lnbmF0dXJlKCkgY29uc3QgeyByZXR1cm4gU2lnbmF0dXJlOyB9CiAgIHZvaWQgc2V0U2lnbmF0dXJlKHdhc206Oldhc21TaWduYXR1cmUgKlNpZykgeyBTaWduYXR1cmUgPSBTaWc7IH0KIAogICBjb25zdCB3YXNtOjpXYXNtR2xvYmFsVHlwZSAmZ2V0R2xvYmFsVHlwZSgpIGNvbnN0IHsKLSAgICBhc3NlcnQoR2xvYmFsVHlwZVNldCk7Ci0gICAgcmV0dXJuIEdsb2JhbFR5cGU7CisgICAgYXNzZXJ0KEdsb2JhbFR5cGUuaGFzVmFsdWUoKSk7CisgICAgcmV0dXJuIEdsb2JhbFR5cGUuZ2V0VmFsdWUoKTsKICAgfQorICB2b2lkIHNldEdsb2JhbFR5cGUod2FzbTo6V2FzbUdsb2JhbFR5cGUgR1QpIHsgR2xvYmFsVHlwZSA9IEdUOyB9CiAKLSAgdm9pZCBzZXRHbG9iYWxUeXBlKHdhc206Oldhc21HbG9iYWxUeXBlIEdUKSB7Ci0gICAgR2xvYmFsVHlwZVNldCA9IHRydWU7Ci0gICAgR2xvYmFsVHlwZSA9IEdUOworICBjb25zdCB3YXNtOjpXYXNtRXZlbnRUeXBlICZnZXRFdmVudFR5cGUoKSBjb25zdCB7CisgICAgYXNzZXJ0KEV2ZW50VHlwZS5oYXNWYWx1ZSgpKTsKKyAgICByZXR1cm4gRXZlbnRUeXBlLmdldFZhbHVlKCk7CiAgIH0KKyAgdm9pZCBzZXRFdmVudFR5cGUod2FzbTo6V2FzbUV2ZW50VHlwZSBFVCkgeyBFdmVudFR5cGUgPSBFVDsgfQogfTsKIAogfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNUYXJnZXRPcHRpb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DVGFyZ2V0T3B0aW9ucy5oCmluZGV4IGY1ZDMzMGYuLjA4N2QxNTUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNUYXJnZXRPcHRpb25zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1RhcmdldE9wdGlvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNQ1RhcmdldE9wdGlvbnMuaCAtIE1DIFRhcmdldCBPcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNUYXJnZXRPcHRpb25zQ29tbWFuZEZsYWdzLmluYyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNUYXJnZXRPcHRpb25zQ29tbWFuZEZsYWdzLmluYwppbmRleCA1MTcyZmE0Li5mODEyOTQ2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DVGFyZ2V0T3B0aW9uc0NvbW1hbmRGbGFncy5pbmMKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1RhcmdldE9wdGlvbnNDb21tYW5kRmxhZ3MuaW5jCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBNQ1RhcmdldE9wdGlvbnNDb21tYW5kRmxhZ3MuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNWYWx1ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1ZhbHVlLmgKaW5kZXggMTFmNTA4Mi4uMGJlN2NlNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1ZhbHVlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1ZhbHVlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vTUMvTUNWYWx1ZS5oIC0gTUNWYWx1ZSBjbGFzcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNXYXNtT2JqZWN0V3JpdGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DV2FzbU9iamVjdFdyaXRlci5oCmluZGV4IDZiNzg4Y2YuLjRhZGJjYTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNXYXNtT2JqZWN0V3JpdGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1dhc21PYmplY3RXcml0ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9NQy9NQ1dhc21PYmplY3RXcml0ZXIuaCAtIFdhc20gT2JqZWN0IFdyaXRlciAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNXYXNtU3RyZWFtZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNXYXNtU3RyZWFtZXIuaAppbmRleCAwMWU2YTQzLi4yZDdmMmI5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DV2FzbVN0cmVhbWVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1dhc21TdHJlYW1lci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DV2FzbVN0cmVhbWVyLmggLSBNQ1N0cmVhbWVyIFdhc20gT2JqZWN0IEZpbGUgSW50ZXJmYWNlIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1dpbjY0RUguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNXaW42NEVILmgKaW5kZXggODNlYTczOC4uNjBlYzA2ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1dpbjY0RUguaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DV2luNjRFSC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DV2luNjRFSC5oIC0gTWFjaGluZSBDb2RlIFdpbjY0IEVIIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC01Niw2ICs1NSwxNCBAQAogICB2b2lkIEVtaXQoTUNTdHJlYW1lciAmU3RyZWFtZXIpIGNvbnN0IG92ZXJyaWRlOwogICB2b2lkIEVtaXRVbndpbmRJbmZvKE1DU3RyZWFtZXIgJlN0cmVhbWVyLCBXaW5FSDo6RnJhbWVJbmZvICpGSSkgY29uc3Qgb3ZlcnJpZGU7CiB9OworCitjbGFzcyBBUk02NFVud2luZEVtaXR0ZXIgOiBwdWJsaWMgV2luRUg6OlVud2luZEVtaXR0ZXIgeworcHVibGljOgorICB2b2lkIEVtaXQoTUNTdHJlYW1lciAmU3RyZWFtZXIpIGNvbnN0IG92ZXJyaWRlOworICB2b2lkIEVtaXRVbndpbmRJbmZvKE1DU3RyZWFtZXIgJlN0cmVhbWVyLAorICAgICAgICAgICAgICAgICAgICAgIFdpbkVIOjpGcmFtZUluZm8gKkZJKSBjb25zdCBvdmVycmlkZTsKK307CisKIH0KIH0gLy8gZW5kIG5hbWVzcGFjZSBsbHZtCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNXaW5DT0ZGT2JqZWN0V3JpdGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DV2luQ09GRk9iamVjdFdyaXRlci5oCmluZGV4IGMxZDM1ZWEuLjNmZTEyNGYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNXaW5DT0ZGT2JqZWN0V3JpdGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1dpbkNPRkZPYmplY3RXcml0ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL01DL01DV2luQ09GRk9iamVjdFdyaXRlci5oIC0gV2luIENPRkYgT2JqZWN0IFdyaXRlciAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNXaW5DT0ZGU3RyZWFtZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTUNXaW5DT0ZGU3RyZWFtZXIuaAppbmRleCAwMDQ5ZDA0Li5jMWMxZWM1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DV2luQ09GRlN0cmVhbWVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1dpbkNPRkZTdHJlYW1lci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1DV2luQ09GRlN0cmVhbWVyLmggLSBDT0ZGIE9iamVjdCBGaWxlIEludGVyZmFjZSAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NQ1dpbkVILmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DV2luRUguaAppbmRleCA0Y2E1MmE2Li5iMWMyOGMwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DV2luRUguaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01DV2luRUguaApAQCAtMSwxNSArMSwxNSBAQAogLy89PT0tIE1DV2luRUguaCAtIFdpbmRvd3MgVW53aW5kaW5nIFN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIAogI2lmbmRlZiBMTFZNX01DX01DV0lORUhfSAogI2RlZmluZSBMTFZNX01DX01DV0lORUhfSAogCisjaW5jbHVkZSAibGx2bS9BRFQvTWFwVmVjdG9yLmgiCiAjaW5jbHVkZSA8dmVjdG9yPgogCiBuYW1lc3BhY2UgbGx2bSB7CkBAIC0yMCw5ICsyMCw5IEBACiBuYW1lc3BhY2UgV2luRUggewogc3RydWN0IEluc3RydWN0aW9uIHsKICAgY29uc3QgTUNTeW1ib2wgKkxhYmVsOwotICBjb25zdCB1bnNpZ25lZCBPZmZzZXQ7Ci0gIGNvbnN0IHVuc2lnbmVkIFJlZ2lzdGVyOwotICBjb25zdCB1bnNpZ25lZCBPcGVyYXRpb247CisgIHVuc2lnbmVkIE9mZnNldDsKKyAgdW5zaWduZWQgUmVnaXN0ZXI7CisgIHVuc2lnbmVkIE9wZXJhdGlvbjsKIAogICBJbnN0cnVjdGlvbih1bnNpZ25lZCBPcCwgTUNTeW1ib2wgKkwsIHVuc2lnbmVkIFJlZywgdW5zaWduZWQgT2ZmKQogICAgIDogTGFiZWwoTCksIE9mZnNldChPZmYpLCBSZWdpc3RlcihSZWcpLCBPcGVyYXRpb24oT3ApIHt9CkBAIC0zMSw2ICszMSw3IEBACiBzdHJ1Y3QgRnJhbWVJbmZvIHsKICAgY29uc3QgTUNTeW1ib2wgKkJlZ2luID0gbnVsbHB0cjsKICAgY29uc3QgTUNTeW1ib2wgKkVuZCA9IG51bGxwdHI7CisgIGNvbnN0IE1DU3ltYm9sICpGdW5jbGV0T3JGdW5jRW5kID0gbnVsbHB0cjsKICAgY29uc3QgTUNTeW1ib2wgKkV4Y2VwdGlvbkhhbmRsZXIgPSBudWxscHRyOwogICBjb25zdCBNQ1N5bWJvbCAqRnVuY3Rpb24gPSBudWxscHRyOwogICBjb25zdCBNQ1N5bWJvbCAqUHJvbG9nRW5kID0gbnVsbHB0cjsKQEAgLTQzLDYgKzQ0LDcgQEAKICAgaW50IExhc3RGcmFtZUluc3QgPSAtMTsKICAgY29uc3QgRnJhbWVJbmZvICpDaGFpbmVkUGFyZW50ID0gbnVsbHB0cjsKICAgc3RkOjp2ZWN0b3I8SW5zdHJ1Y3Rpb24+IEluc3RydWN0aW9uczsKKyAgTWFwVmVjdG9yPE1DU3ltYm9sKiwgc3RkOjp2ZWN0b3I8SW5zdHJ1Y3Rpb24+PiBFcGlsb2dNYXA7CiAKICAgRnJhbWVJbmZvKCkgPSBkZWZhdWx0OwogICBGcmFtZUluZm8oY29uc3QgTUNTeW1ib2wgKkZ1bmN0aW9uLCBjb25zdCBNQ1N5bWJvbCAqQmVnaW5GdW5jRUhMYWJlbCkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTWFjaGluZUxvY2F0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL01hY2hpbmVMb2NhdGlvbi5oCmluZGV4IDkxZWQ2NjEuLjU4NzI1NDAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvTWFjaGluZUxvY2F0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9NYWNoaW5lTG9jYXRpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL01DL01hY2hpbmVMb2NhdGlvbi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLyBUaGUgTWFjaGluZUxvY2F0aW9uIGNsYXNzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGEgc2ltcGxlIGxvY2F0aW9uIGluIGEgbWFjaGluZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9TZWN0aW9uS2luZC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9TZWN0aW9uS2luZC5oCmluZGV4IDY2ZWI5ZWMuLjAzNDJjNGMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvU2VjdGlvbktpbmQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL1NlY3Rpb25LaW5kLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vTUMvU2VjdGlvbktpbmQuaCAtIENsYXNzaWZpY2F0aW9uIG9mIHNlY3Rpb25zIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL1N0cmluZ1RhYmxlQnVpbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQy9TdHJpbmdUYWJsZUJ1aWxkZXIuaAppbmRleCAyNjUyNjBmLi5jODNlY2E0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL1N0cmluZ1RhYmxlQnVpbGRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvU3RyaW5nVGFibGVCdWlsZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3RyaW5nVGFibGVCdWlsZGVyLmggLSBTdHJpbmcgdGFibGUgYnVpbGRpbmcgdXRpbGl0eSAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DL1N1YnRhcmdldEZlYXR1cmUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvU3VidGFyZ2V0RmVhdHVyZS5oCmluZGV4IDc2YzdkZDUuLjVmNDlkMzggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvU3VidGFyZ2V0RmVhdHVyZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUMvU3VidGFyZ2V0RmVhdHVyZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vTUMvU3VidGFyZ2V0RmVhdHVyZS5oIC0gQ1BVIGNoYXJhY3RlcmlzdGljcyAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9Db250ZXh0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9Db250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlmM2UwNQotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUNBL0NvbnRleHQuaApAQCAtMCwwICsxLDY4IEBACisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29udGV4dC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8vIFxmaWxlCisvLy8KKy8vLyBUaGlzIGZpbGUgZGVmaW5lcyBhIGNsYXNzIGZvciBob2xkaW5nIG93bmVyc2hpcCBvZiB2YXJpb3VzIHNpbXVsYXRlZAorLy8vIGhhcmR3YXJlIHVuaXRzLiAgQSBDb250ZXh0IGFsc28gcHJvdmlkZXMgYSB1dGlsaXR5IHJvdXRpbmUgZm9yIGNvbnN0cnVjdGluZworLy8vIGEgZGVmYXVsdCBvdXQtb2Ytb3JkZXIgcGlwZWxpbmUgd2l0aCBmZXRjaCwgZGlzcGF0Y2gsIGV4ZWN1dGUsIGFuZCByZXRpcmUKKy8vLyBzdGFnZXMuCisvLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9NQ0FfQ09OVEVYVF9ICisjZGVmaW5lIExMVk1fTUNBX0NPTlRFWFRfSAorCisjaW5jbHVkZSAibGx2bS9NQy9NQ1JlZ2lzdGVySW5mby5oIgorI2luY2x1ZGUgImxsdm0vTUMvTUNTdWJ0YXJnZXRJbmZvLmgiCisjaW5jbHVkZSAibGx2bS9NQ0EvSGFyZHdhcmVVbml0cy9IYXJkd2FyZVVuaXQuaCIKKyNpbmNsdWRlICJsbHZtL01DQS9JbnN0ckJ1aWxkZXIuaCIKKyNpbmNsdWRlICJsbHZtL01DQS9QaXBlbGluZS5oIgorI2luY2x1ZGUgImxsdm0vTUNBL1NvdXJjZU1nci5oIgorI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIGxsdm0geworbmFtZXNwYWNlIG1jYSB7CisKKy8vLyBUaGlzIGlzIGEgY29udmVuaWVuY2Ugc3RydWN0IHRvIGhvbGQgdGhlIHBhcmFtZXRlcnMgbmVjZXNzYXJ5IGZvciBjcmVhdGluZworLy8vIHRoZSBwcmUtYnVpbHQgImRlZmF1bHQiIG91dC1vZi1vcmRlciBwaXBlbGluZS4KK3N0cnVjdCBQaXBlbGluZU9wdGlvbnMgeworICBQaXBlbGluZU9wdGlvbnModW5zaWduZWQgRFcsIHVuc2lnbmVkIFJGUywgdW5zaWduZWQgTFFTLCB1bnNpZ25lZCBTUVMsCisgICAgICAgICAgICAgICAgICBib29sIE5vQWxpYXMpCisgICAgICA6IERpc3BhdGNoV2lkdGgoRFcpLCBSZWdpc3RlckZpbGVTaXplKFJGUyksIExvYWRRdWV1ZVNpemUoTFFTKSwKKyAgICAgICAgU3RvcmVRdWV1ZVNpemUoU1FTKSwgQXNzdW1lTm9BbGlhcyhOb0FsaWFzKSB7fQorICB1bnNpZ25lZCBEaXNwYXRjaFdpZHRoOworICB1bnNpZ25lZCBSZWdpc3RlckZpbGVTaXplOworICB1bnNpZ25lZCBMb2FkUXVldWVTaXplOworICB1bnNpZ25lZCBTdG9yZVF1ZXVlU2l6ZTsKKyAgYm9vbCBBc3N1bWVOb0FsaWFzOworfTsKKworY2xhc3MgQ29udGV4dCB7CisgIFNtYWxsVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxIYXJkd2FyZVVuaXQ+LCA0PiBIYXJkd2FyZTsKKyAgY29uc3QgTUNSZWdpc3RlckluZm8gJk1SSTsKKyAgY29uc3QgTUNTdWJ0YXJnZXRJbmZvICZTVEk7CisKK3B1YmxpYzoKKyAgQ29udGV4dChjb25zdCBNQ1JlZ2lzdGVySW5mbyAmUiwgY29uc3QgTUNTdWJ0YXJnZXRJbmZvICZTKSA6IE1SSShSKSwgU1RJKFMpIHt9CisgIENvbnRleHQoY29uc3QgQ29udGV4dCAmQykgPSBkZWxldGU7CisgIENvbnRleHQgJm9wZXJhdG9yPShjb25zdCBDb250ZXh0ICZDKSA9IGRlbGV0ZTsKKworICB2b2lkIGFkZEhhcmR3YXJlVW5pdChzdGQ6OnVuaXF1ZV9wdHI8SGFyZHdhcmVVbml0PiBIKSB7CisgICAgSGFyZHdhcmUucHVzaF9iYWNrKHN0ZDo6bW92ZShIKSk7CisgIH0KKworICAvLy8gQ29uc3RydWN0IGEgYmFzaWMgcGlwZWxpbmUgZm9yIHNpbXVsYXRpbmcgYW4gb3V0LW9mLW9yZGVyIHBpcGVsaW5lLgorICAvLy8gVGhpcyBwaXBlbGluZSBjb25zaXN0cyBvZiBGZXRjaCwgRGlzcGF0Y2gsIEV4ZWN1dGUsIGFuZCBSZXRpcmUgc3RhZ2VzLgorICBzdGQ6OnVuaXF1ZV9wdHI8UGlwZWxpbmU+IGNyZWF0ZURlZmF1bHRQaXBlbGluZShjb25zdCBQaXBlbGluZU9wdGlvbnMgJk9wdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RyQnVpbGRlciAmSUIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU1nciAmU3JjTWdyKTsKK307CisKK30gLy8gbmFtZXNwYWNlIG1jYQorfSAvLyBuYW1lc3BhY2UgbGx2bQorI2VuZGlmIC8vIExMVk1fTUNBX0NPTlRFWFRfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvSFdFdmVudExpc3RlbmVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9IV0V2ZW50TGlzdGVuZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODU3YWQyCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvSFdFdmVudExpc3RlbmVyLmgKQEAgLTAsMCArMSwxNTUgQEAKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSFdFdmVudExpc3RlbmVyLmggLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLy8gXGZpbGUKKy8vLworLy8vIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBtYWluIGludGVyZmFjZSBmb3IgaGFyZHdhcmUgZXZlbnQgbGlzdGVuZXJzLgorLy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fTUNBX0hXRVZFTlRMSVNURU5FUl9ICisjZGVmaW5lIExMVk1fTUNBX0hXRVZFTlRMSVNURU5FUl9ICisKKyNpbmNsdWRlICJsbHZtL0FEVC9BcnJheVJlZi5oIgorI2luY2x1ZGUgImxsdm0vTUNBL0luc3RydWN0aW9uLmgiCisjaW5jbHVkZSAibGx2bS9NQ0EvU3VwcG9ydC5oIgorCituYW1lc3BhY2UgbGx2bSB7CituYW1lc3BhY2UgbWNhIHsKKworLy8gQW4gSFdJbnN0cnVjdGlvbkV2ZW50IHJlcHJlc2VudHMgc3RhdGUgY2hhbmdlcyBvZiBpbnN0cnVjdGlvbnMgdGhhdAorLy8gbGlzdGVuZXJzIG1pZ2h0IGJlIGludGVyZXN0ZWQgaW4uIExpc3RlbmVycyBjYW4gY2hvb3NlIHRvIGlnbm9yZSBhbnkgZXZlbnQKKy8vIHRoZXkgYXJlIG5vdCBpbnRlcmVzdGVkIGluLgorY2xhc3MgSFdJbnN0cnVjdGlvbkV2ZW50IHsKK3B1YmxpYzoKKyAgLy8gVGhpcyBpcyB0aGUgbGlzdCBvZiBldmVudCB0eXBlcyB0aGF0IGFyZSBzaGFyZWQgYnkgYWxsIHRhcmdldHMsIHRoYXQKKyAgLy8gZ2VuZXJpYyBzdWJ0YXJnZXQtYWdub3N0aWMgY2xhc3NlcyAoZS5nLiwgUGlwZWxpbmUsIEhXSW5zdHJ1Y3Rpb25FdmVudCwKKyAgLy8gLi4uKSBhbmQgZ2VuZXJpYyBWaWV3cyBjYW4gbWFuaXB1bGF0ZS4KKyAgLy8gU3VidGFyZ2V0cyBhcmUgZnJlZSB0byBkZWZpbmUgYWRkaXRpb25hbCBldmVudCB0eXBlcywgdGhhdCBhcmUgZ29pbiB0byBiZQorICAvLyBoYW5kbGVkIGJ5IGdlbmVyaWMgY29tcG9uZW50cyBhcyBvcGFxdWUgdmFsdWVzLCBidXQgY2FuIHN0aWxsIGJlCisgIC8vIGVtaXR0ZWQgYnkgc3VidGFyZ2V0LXNwZWNpZmljIHBpcGVsaW5lIHN0YWdlcyAoZS5nLiwgRXhlY3V0ZVN0YWdlLAorICAvLyBEaXNwYXRjaFN0YWdlLCAuLi4pIGFuZCBpbnRlcnByZXRlZCBieSBzdWJ0YXJnZXQtc3BlY2lmaWMgRXZlbnRMaXN0ZW5lcgorICAvLyBpbXBsZW1lbnRhdGlvbnMuCisgIGVudW0gR2VuZXJpY0V2ZW50VHlwZSB7CisgICAgSW52YWxpZCA9IDAsCisgICAgLy8gRXZlbnRzIGdlbmVyYXRlZCBieSB0aGUgUmV0aXJlIENvbnRyb2wgVW5pdC4KKyAgICBSZXRpcmVkLAorICAgIC8vIEV2ZW50cyBnZW5lcmF0ZWQgYnkgdGhlIFNjaGVkdWxlci4KKyAgICBSZWFkeSwKKyAgICBJc3N1ZWQsCisgICAgRXhlY3V0ZWQsCisgICAgLy8gRXZlbnRzIGdlbmVyYXRlZCBieSB0aGUgRGlzcGF0Y2ggbG9naWMuCisgICAgRGlzcGF0Y2hlZCwKKworICAgIExhc3RHZW5lcmljRXZlbnRUeXBlLAorICB9OworCisgIEhXSW5zdHJ1Y3Rpb25FdmVudCh1bnNpZ25lZCB0eXBlLCBjb25zdCBJbnN0UmVmICZJbnN0KQorICAgICAgOiBUeXBlKHR5cGUpLCBJUihJbnN0KSB7fQorCisgIC8vIFRoZSBldmVudCB0eXBlLiBUaGUgZXhhY3QgbWVhbmluZyBkZXBlbmRzIG9uIHRoZSBzdWJ0YXJnZXQuCisgIGNvbnN0IHVuc2lnbmVkIFR5cGU7CisKKyAgLy8gVGhlIGluc3RydWN0aW9uIHRoaXMgZXZlbnQgd2FzIGdlbmVyYXRlZCBmb3IuCisgIGNvbnN0IEluc3RSZWYgJklSOworfTsKKworY2xhc3MgSFdJbnN0cnVjdGlvbklzc3VlZEV2ZW50IDogcHVibGljIEhXSW5zdHJ1Y3Rpb25FdmVudCB7CitwdWJsaWM6CisgIHVzaW5nIFJlc291cmNlUmVmID0gc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD47CisgIEhXSW5zdHJ1Y3Rpb25Jc3N1ZWRFdmVudChjb25zdCBJbnN0UmVmICZJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPHN0ZDo6cGFpcjxSZXNvdXJjZVJlZiwgUmVzb3VyY2VDeWNsZXM+PiBVUikKKyAgICAgIDogSFdJbnN0cnVjdGlvbkV2ZW50KEhXSW5zdHJ1Y3Rpb25FdmVudDo6SXNzdWVkLCBJUiksIFVzZWRSZXNvdXJjZXMoVVIpIHt9CisKKyAgQXJyYXlSZWY8c3RkOjpwYWlyPFJlc291cmNlUmVmLCBSZXNvdXJjZUN5Y2xlcz4+IFVzZWRSZXNvdXJjZXM7Cit9OworCitjbGFzcyBIV0luc3RydWN0aW9uRGlzcGF0Y2hlZEV2ZW50IDogcHVibGljIEhXSW5zdHJ1Y3Rpb25FdmVudCB7CitwdWJsaWM6CisgIEhXSW5zdHJ1Y3Rpb25EaXNwYXRjaGVkRXZlbnQoY29uc3QgSW5zdFJlZiAmSVIsIEFycmF5UmVmPHVuc2lnbmVkPiBSZWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFVPcHMpCisgICAgICA6IEhXSW5zdHJ1Y3Rpb25FdmVudChIV0luc3RydWN0aW9uRXZlbnQ6OkRpc3BhdGNoZWQsIElSKSwKKyAgICAgICAgVXNlZFBoeXNSZWdzKFJlZ3MpLCBNaWNyb09wY29kZXMoVU9wcykge30KKyAgLy8gTnVtYmVyIG9mIHBoeXNpY2FsIHJlZ2lzdGVyIGFsbG9jYXRlZCBmb3IgdGhpcyBpbnN0cnVjdGlvbi4gVGhlcmUgaXMgb25lCisgIC8vIGVudHJ5IHBlciByZWdpc3RlciBmaWxlLgorICBBcnJheVJlZjx1bnNpZ25lZD4gVXNlZFBoeXNSZWdzOworICAvLyBOdW1iZXIgb2YgbWljcm8gb3Bjb2RlcyBkaXNwYXRjaGVkLgorICAvLyBUaGlzIGZpZWxkIGlzIG9mdGVuIHNldCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIG1pY3JvLW9wY29kZXMgc3BlY2lmaWVkIGJ5CisgIC8vIHRoZSBpbnN0cnVjdGlvbiBkZXNjcmlwdG9yIG9mIElSLgorICAvLyBUaGUgb25seSBleGNlcHRpb24gaXMgd2hlbiBJUiBkZWNsYXJlcyBhIG51bWJlciBvZiBtaWNybyBvcGNvZGVzCisgIC8vIHdoaWNoIGV4Y2VlZHMgdGhlIHByb2Nlc3NvciBEaXNwYXRjaFdpZHRoLCBhbmQgLSBieSBjb25zdHJ1Y3Rpb24gLSBpdAorICAvLyByZXF1aXJlcyBtdWx0aXBsZSBjeWNsZXMgdG8gYmUgZnVsbHkgZGlzcGF0Y2hlZC4gSW4gdGhhdCBwYXJ0aWN1bGFyIGNhc2UsCisgIC8vIHRoZSBkaXNwYXRjaCBsb2dpYyB3b3VsZCBnZW5lcmF0ZSBtb3JlIHRoYW4gb25lIGRpc3BhdGNoIGV2ZW50IChvbmUgcGVyCisgIC8vIGN5Y2xlKSwgYW5kIGVhY2ggZXZlbnQgd291bGQgZGVjbGFyZSBob3cgbWFueSBtaWNybyBvcGNvZGVzIGFyZSBlZmZlY3RpdmVseQorICAvLyBiZWVuIGRpc3BhdGNoZWQgdG8gdGhlIHNjaGVkdWxlcnMuCisgIHVuc2lnbmVkIE1pY3JvT3Bjb2RlczsKK307CisKK2NsYXNzIEhXSW5zdHJ1Y3Rpb25SZXRpcmVkRXZlbnQgOiBwdWJsaWMgSFdJbnN0cnVjdGlvbkV2ZW50IHsKK3B1YmxpYzoKKyAgSFdJbnN0cnVjdGlvblJldGlyZWRFdmVudChjb25zdCBJbnN0UmVmICZJUiwgQXJyYXlSZWY8dW5zaWduZWQ+IFJlZ3MpCisgICAgICA6IEhXSW5zdHJ1Y3Rpb25FdmVudChIV0luc3RydWN0aW9uRXZlbnQ6OlJldGlyZWQsIElSKSwKKyAgICAgICAgRnJlZWRQaHlzUmVncyhSZWdzKSB7fQorICAvLyBOdW1iZXIgb2YgcmVnaXN0ZXIgd3JpdGVzIHRoYXQgaGF2ZSBiZWVuIGFyY2hpdGVjdHVyYWxseSBjb21taXR0ZWQuIFRoZXJlCisgIC8vIGlzIG9uZSBlbnRyeSBwZXIgcmVnaXN0ZXIgZmlsZS4KKyAgQXJyYXlSZWY8dW5zaWduZWQ+IEZyZWVkUGh5c1JlZ3M7Cit9OworCisvLyBBIEhXU3RhbGxFdmVudCByZXByZXNlbnRzIGEgcGlwZWxpbmUgc3RhbGwgY2F1c2VkIGJ5IHRoZSBsYWNrIG9mIGhhcmR3YXJlCisvLyByZXNvdXJjZXMuCitjbGFzcyBIV1N0YWxsRXZlbnQgeworcHVibGljOgorICBlbnVtIEdlbmVyaWNFdmVudFR5cGUgeworICAgIEludmFsaWQgPSAwLAorICAgIC8vIEdlbmVyaWMgc3RhbGwgZXZlbnRzIGdlbmVyYXRlZCBieSB0aGUgRGlzcGF0Y2hTdGFnZS4KKyAgICBSZWdpc3RlckZpbGVTdGFsbCwKKyAgICBSZXRpcmVDb250cm9sVW5pdFN0YWxsLAorICAgIC8vIEdlbmVyaWMgc3RhbGwgZXZlbnRzIGdlbmVyYXRlZCBieSB0aGUgU2NoZWR1bGVyLgorICAgIERpc3BhdGNoR3JvdXBTdGFsbCwKKyAgICBTY2hlZHVsZXJRdWV1ZUZ1bGwsCisgICAgTG9hZFF1ZXVlRnVsbCwKKyAgICBTdG9yZVF1ZXVlRnVsbCwKKyAgICBMYXN0R2VuZXJpY0V2ZW50CisgIH07CisKKyAgSFdTdGFsbEV2ZW50KHVuc2lnbmVkIHR5cGUsIGNvbnN0IEluc3RSZWYgJkluc3QpIDogVHlwZSh0eXBlKSwgSVIoSW5zdCkge30KKworICAvLyBUaGUgZXhhY3QgbWVhbmluZyBvZiB0aGUgc3RhbGwgZXZlbnQgdHlwZSBkZXBlbmRzIG9uIHRoZSBzdWJ0YXJnZXQuCisgIGNvbnN0IHVuc2lnbmVkIFR5cGU7CisKKyAgLy8gVGhlIGluc3RydWN0aW9uIHRoaXMgZXZlbnQgd2FzIGdlbmVyYXRlZCBmb3IuCisgIGNvbnN0IEluc3RSZWYgJklSOworfTsKKworY2xhc3MgSFdFdmVudExpc3RlbmVyIHsKK3B1YmxpYzoKKyAgLy8gR2VuZXJpYyBldmVudHMgZ2VuZXJhdGVkIGJ5IHRoZSBwaXBlbGluZS4KKyAgdmlydHVhbCB2b2lkIG9uQ3ljbGVCZWdpbigpIHt9CisgIHZpcnR1YWwgdm9pZCBvbkN5Y2xlRW5kKCkge30KKworICB2aXJ0dWFsIHZvaWQgb25FdmVudChjb25zdCBIV0luc3RydWN0aW9uRXZlbnQgJkV2ZW50KSB7fQorICB2aXJ0dWFsIHZvaWQgb25FdmVudChjb25zdCBIV1N0YWxsRXZlbnQgJkV2ZW50KSB7fQorCisgIHVzaW5nIFJlc291cmNlUmVmID0gc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD47CisgIHZpcnR1YWwgdm9pZCBvblJlc291cmNlQXZhaWxhYmxlKGNvbnN0IFJlc291cmNlUmVmICZSUmVmKSB7fQorCisgIC8vIEV2ZW50cyBnZW5lcmF0ZWQgYnkgdGhlIFNjaGVkdWxlciB3aGVuIGJ1ZmZlcmVkIHJlc291cmNlcyBhcmUKKyAgLy8gY29uc3VtZWQvZnJlZWQgZm9yIGFuIGluc3RydWN0aW9uLgorICB2aXJ0dWFsIHZvaWQgb25SZXNlcnZlZEJ1ZmZlcnMoY29uc3QgSW5zdFJlZiAmSW5zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPHVuc2lnbmVkPiBCdWZmZXJzKSB7fQorICB2aXJ0dWFsIHZvaWQgb25SZWxlYXNlZEJ1ZmZlcnMoY29uc3QgSW5zdFJlZiAmSW5zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPHVuc2lnbmVkPiBCdWZmZXJzKSB7fQorCisgIHZpcnR1YWwgfkhXRXZlbnRMaXN0ZW5lcigpIHt9CisKK3ByaXZhdGU6CisgIHZpcnR1YWwgdm9pZCBhbmNob3IoKTsKK307Cit9IC8vIG5hbWVzcGFjZSBtY2EKK30gLy8gbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmIC8vIExMVk1fTUNBX0hXRVZFTlRMSVNURU5FUl9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9IYXJkd2FyZVVuaXRzL0hhcmR3YXJlVW5pdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvSGFyZHdhcmVVbml0cy9IYXJkd2FyZVVuaXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmUxNzhiCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvSGFyZHdhcmVVbml0cy9IYXJkd2FyZVVuaXQuaApAQCAtMCwwICsxLDMyIEBACisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEhhcmR3YXJlVW5pdC5oIC0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8vIFxmaWxlCisvLy8KKy8vLyBUaGlzIGZpbGUgZGVmaW5lcyBhIGJhc2UgY2xhc3MgZm9yIGRlc2NyaWJpbmcgYSBzaW11bGF0ZWQgaGFyZHdhcmUKKy8vLyB1bml0LiAgVGhlc2UgdW5pdHMgYXJlIHVzZWQgdG8gY29uc3RydWN0IGEgc2ltdWxhdGVkIGJhY2tlbmQuCisvLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9NQ0FfSEFSRFdBUkVVTklUX0gKKyNkZWZpbmUgTExWTV9NQ0FfSEFSRFdBUkVVTklUX0gKKworbmFtZXNwYWNlIGxsdm0geworbmFtZXNwYWNlIG1jYSB7CisKK2NsYXNzIEhhcmR3YXJlVW5pdCB7CisgIEhhcmR3YXJlVW5pdChjb25zdCBIYXJkd2FyZVVuaXQgJkgpID0gZGVsZXRlOworICBIYXJkd2FyZVVuaXQgJm9wZXJhdG9yPShjb25zdCBIYXJkd2FyZVVuaXQgJkgpID0gZGVsZXRlOworCitwdWJsaWM6CisgIEhhcmR3YXJlVW5pdCgpID0gZGVmYXVsdDsKKyAgdmlydHVhbCB+SGFyZHdhcmVVbml0KCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBtY2EKK30gLy8gbmFtZXNwYWNlIGxsdm0KKyNlbmRpZiAvLyBMTFZNX01DQV9IQVJEV0FSRVVOSVRfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvSGFyZHdhcmVVbml0cy9MU1VuaXQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUNBL0hhcmR3YXJlVW5pdHMvTFNVbml0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhhOWYyNwotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUNBL0hhcmR3YXJlVW5pdHMvTFNVbml0LmgKQEAgLTAsMCArMSwyMDYgQEAKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMU1VuaXQuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKy0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLy8gXGZpbGUKKy8vLworLy8vIEEgTG9hZC9TdG9yZSB1bml0IGNsYXNzIHRoYXQgbW9kZWxzIGxvYWQvc3RvcmUgcXVldWVzIGFuZCB0aGF0IGltcGxlbWVudHMKKy8vLyBhIHNpbXBsZSB3ZWFrIG1lbW9yeSBjb25zaXN0ZW5jeSBtb2RlbC4KKy8vLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX01DQV9MU1VOSVRfSAorI2RlZmluZSBMTFZNX01DQV9MU1VOSVRfSAorCisjaW5jbHVkZSAibGx2bS9BRFQvU21hbGxTZXQuaCIKKyNpbmNsdWRlICJsbHZtL01DL01DU2NoZWR1bGUuaCIKKyNpbmNsdWRlICJsbHZtL01DQS9IYXJkd2FyZVVuaXRzL0hhcmR3YXJlVW5pdC5oIgorCituYW1lc3BhY2UgbGx2bSB7CituYW1lc3BhY2UgbWNhIHsKKworY2xhc3MgSW5zdFJlZjsKK2NsYXNzIFNjaGVkdWxlcjsKKworLy8vIEEgTG9hZC9TdG9yZSBVbml0IGltcGxlbWVudGluZyBhIGxvYWQgYW5kIHN0b3JlIHF1ZXVlcy4KKy8vLworLy8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBhIGxvYWQgcXVldWUgYW5kIGEgc3RvcmUgcXVldWUgdG8gZW11bGF0ZSB0aGUKKy8vLyBvdXQtb2Ytb3JkZXIgZXhlY3V0aW9uIG9mIG1lbW9yeSBvcGVyYXRpb25zLgorLy8vIEVhY2ggbG9hZCAob3Igc3RvcmUpIGNvbnN1bWVzIGFuIGVudHJ5IGluIHRoZSBsb2FkIChvciBzdG9yZSkgcXVldWUuCisvLy8KKy8vLyBSdWxlcyBhcmU6CisvLy8gMSkgQSB5b3VuZ2VyIGxvYWQgaXMgYWxsb3dlZCB0byBwYXNzIGFuIG9sZGVyIGxvYWQgb25seSBpZiB0aGVyZSBhcmUgbm8KKy8vLyAgICBzdG9yZXMgbm9yIGJhcnJpZXJzIGluIGJldHdlZW4gdGhlIHR3byBsb2Fkcy4KKy8vLyAyKSBBbiB5b3VuZ2VyIHN0b3JlIGlzIG5vdCBhbGxvd2VkIHRvIHBhc3MgYW4gb2xkZXIgc3RvcmUuCisvLy8gMykgQSB5b3VuZ2VyIHN0b3JlIGlzIG5vdCBhbGxvd2VkIHRvIHBhc3MgYW4gb2xkZXIgbG9hZC4KKy8vLyA0KSBBIHlvdW5nZXIgbG9hZCBpcyBhbGxvd2VkIHRvIHBhc3MgYW4gb2xkZXIgc3RvcmUgb25seSBpZiB0aGUgbG9hZCBkb2VzCisvLy8gICAgbm90IGFsaWFzIHdpdGggdGhlIHN0b3JlLgorLy8vCisvLy8gVGhpcyBjbGFzcyBvcHRpbWlzdGljYWxseSBhc3N1bWVzIHRoYXQgbG9hZHMgZG9uJ3QgYWxpYXMgc3RvcmUgb3BlcmF0aW9ucy4KKy8vLyBVbmRlciB0aGlzIGFzc3VtcHRpb24sIHlvdW5nZXIgbG9hZHMgYXJlIGFsd2F5cyBhbGxvd2VkIHRvIHBhc3Mgb2xkZXIKKy8vLyBzdG9yZXMgKHRoaXMgd291bGQgb25seSBhZmZlY3RzIHJ1bGUgNCkuCisvLy8gRXNzZW50aWFsbHksIHRoaXMgY2xhc3MgZG9lc24ndCBwZXJmb3JtIGFueSBzb3J0IGFsaWFzIGFuYWx5c2lzIHRvCisvLy8gaWRlbnRpZnkgYWxpYXNpbmcgbG9hZHMgYW5kIHN0b3Jlcy4KKy8vLworLy8vIFRvIGVuZm9yY2UgYWxpYXNpbmcgYmV0d2VlbiBsb2FkcyBhbmQgc3RvcmVzLCBmbGFnIGBBc3N1bWVOb0FsaWFzYCBtdXN0IGJlCisvLy8gc2V0IHRvIGBmYWxzZWAgYnkgdGhlIGNvbnN0cnVjdG9yIG9mIExTVW5pdC4KKy8vLworLy8vIE5vdGUgdGhhdCB0aGlzIGNsYXNzIGRvZXNuJ3Qga25vdyBhYm91dCB0aGUgZXhpc3RlbmNlIG9mIGRpZmZlcmVudCBtZW1vcnkKKy8vLyB0eXBlcyBmb3IgbWVtb3J5IG9wZXJhdGlvbnMgKGV4YW1wbGU6IHdyaXRlLXRocm91Z2gsIHdyaXRlLWNvbWJpbmluZywgZXRjLikuCisvLy8gRGVyaXZlZCBjbGFzc2VzIGFyZSByZXNwb25zaWJsZSBmb3IgaW1wbGVtZW50aW5nIHRoYXQgZXh0cmEga25vd2xlZGdlLCBhbmQKKy8vLyBwcm92aWRlIGRpZmZlcmVudCBzZXRzIG9mIHJ1bGVzIGZvciBsb2FkcyBhbmQgc3RvcmVzIGJ5IG92ZXJyaWRpbmcgbWV0aG9kCisvLy8gYGlzUmVhZHkoKWAuCisvLy8gVG8gZW11bGF0ZSBhIHdyaXRlLWNvbWJpbmluZyBtZW1vcnkgdHlwZSwgcnVsZSAyLiBtdXN0IGJlIHJlbGF4ZWQgaW4gYQorLy8vIGRlcml2ZWQgY2xhc3MgdG8gZW5hYmxlIHRoZSByZW9yZGVyaW5nIG9mIG5vbi1hbGlhc2luZyBzdG9yZSBvcGVyYXRpb25zLgorLy8vCisvLy8gTm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgYnkgdGhpcyBjbGFzcyBvbiB0aGUgc2l6ZSBvZiB0aGUgc3RvcmUgYnVmZmVyLiAgVGhpcworLy8vIGNsYXNzIGRvZXNuJ3Qga25vdyBob3cgdG8gaWRlbnRpZnkgY2FzZXMgd2hlcmUgc3RvcmUtdG8tbG9hZCBmb3J3YXJkaW5nIG1heQorLy8vIG9jY3VyLgorLy8vCisvLy8gTFNVbml0IGRvZXNuJ3QgYXR0ZW1wdCB0byBwcmVkaWN0IHdoZXRoZXIgYSBsb2FkIG9yIHN0b3JlIGhpdHMgb3IgbWlzc2VzCisvLy8gdGhlIEwxIGNhY2hlLiBUbyBiZSBtb3JlIHNwZWNpZmljLCBMU1VuaXQgZG9lc24ndCBrbm93IGFueXRoaW5nIGFib3V0CisvLy8gY2FjaGUgaGllcmFyY2h5IGFuZCBtZW1vcnkgdHlwZXMuCisvLy8gSXQgb25seSBrbm93cyBpZiBhbiBpbnN0cnVjdGlvbiAibWF5TG9hZCIgYW5kL29yICJtYXlTdG9yZSIuIEZvciBsb2FkcywgdGhlCisvLy8gc2NoZWR1bGluZyBtb2RlbCBwcm92aWRlcyBhbiAib3B0aW1pc3RpYyIgbG9hZC10by11c2UgbGF0ZW5jeSAod2hpY2ggdXN1YWxseQorLy8vIG1hdGNoZXMgdGhlIGxvYWQtdG8tdXNlIGxhdGVuY3kgZm9yIHdoZW4gdGhlcmUgaXMgYSBoaXQgaW4gdGhlIEwxRCkuCisvLy8gRGVyaXZlZCBjbGFzc2VzIG1heSBleHBhbmQgdGhpcyBrbm93bGVkZ2UuCisvLy8KKy8vLyBDbGFzcyBNQ0luc3RyRGVzYyBpbiBMTFZNIGRvZXNuJ3Qga25vdyBhYm91dCBzZXJpYWxpemluZyBvcGVyYXRpb25zLCBub3IKKy8vLyBtZW1vcnktYmFycmllciBsaWtlIGluc3RydWN0aW9ucy4KKy8vLyBMU1VuaXQgY29uc2VydmF0aXZlbHkgYXNzdW1lcyB0aGF0IGFuIGluc3RydWN0aW9uIHdoaWNoIGBtYXlMb2FkYCBhbmQgaGFzCisvLy8gYHVubW9kZWxlZCBzaWRlIGVmZmVjdHNgIGJlaGF2ZSBsaWtlIGEgInNvZnQiIGxvYWQtYmFycmllci4gVGhhdCBtZWFucywgaXQKKy8vLyBzZXJpYWxpemVzIGxvYWRzIHdpdGhvdXQgZm9yY2luZyBhIGZsdXNoIG9mIHRoZSBsb2FkIHF1ZXVlLgorLy8vIFNpbWlsYXJseSwgaW5zdHJ1Y3Rpb25zIHRoYXQgYm90aCBgbWF5U3RvcmVgIGFuZCBoYXZlIGB1bm1vZGVsZWQgc2lkZQorLy8vIGVmZmVjdHNgIGFyZSB0cmVhdGVkIGxpa2Ugc3RvcmUgYmFycmllcnMuIEEgZnVsbCBtZW1vcnkKKy8vLyBiYXJyaWVyIGlzIGEgJ21heUxvYWQnIGFuZCAnbWF5U3RvcmUnIGluc3RydWN0aW9uIHdpdGggdW5tb2RlbGVkIHNpZGUKKy8vLyBlZmZlY3RzLiBUaGlzIGlzIG9idmlvdXNseSBpbmFjY3VyYXRlLCBidXQgdGhpcyBpcyB0aGUgYmVzdCB0aGF0IHdlIGNhbiBkbworLy8vIGF0IHRoZSBtb21lbnQuCisvLy8KKy8vLyBFYWNoIGxvYWQvc3RvcmUgYmFycmllciBjb25zdW1lcyBvbmUgZW50cnkgaW4gdGhlIGxvYWQvc3RvcmUgcXVldWUuIEEKKy8vLyBsb2FkL3N0b3JlIGJhcnJpZXIgZW5mb3JjZXMgb3JkZXJpbmcgb2YgbG9hZHMvc3RvcmVzOgorLy8vICAtIEEgeW91bmdlciBsb2FkIGNhbm5vdCBwYXNzIGEgbG9hZCBiYXJyaWVyLgorLy8vICAtIEEgeW91bmdlciBzdG9yZSBjYW5ub3QgcGFzcyBhIHN0b3JlIGJhcnJpZXIuCisvLy8KKy8vLyBBIHlvdW5nZXIgbG9hZCBoYXMgdG8gd2FpdCBmb3IgdGhlIG1lbW9yeSBsb2FkIGJhcnJpZXIgdG8gZXhlY3V0ZS4KKy8vLyBBIGxvYWQvc3RvcmUgYmFycmllciBpcyAiZXhlY3V0ZWQiIHdoZW4gaXQgYmVjb21lcyB0aGUgb2xkZXN0IGVudHJ5IGluCisvLy8gdGhlIGxvYWQvc3RvcmUgcXVldWUocykuIFRoYXQgYWxzbyBtZWFucywgYWxsIHRoZSBvbGRlciBsb2Fkcy9zdG9yZXMgaGF2ZQorLy8vIGFscmVhZHkgYmVlbiBleGVjdXRlZC4KK2NsYXNzIExTVW5pdCA6IHB1YmxpYyBIYXJkd2FyZVVuaXQgeworICAvLyBMb2FkIHF1ZXVlIHNpemUuCisgIC8vIExRX1NpemUgPT0gMCBtZWFucyB0aGF0IHRoZXJlIGFyZSBpbmZpbml0ZSBzbG90cyBpbiB0aGUgbG9hZCBxdWV1ZS4KKyAgdW5zaWduZWQgTFFfU2l6ZTsKKworICAvLyBTdG9yZSBxdWV1ZSBzaXplLgorICAvLyBTUV9TaXplID09IDAgbWVhbnMgdGhhdCB0aGVyZSBhcmUgaW5maW5pdGUgc2xvdHMgaW4gdGhlIHN0b3JlIHF1ZXVlLgorICB1bnNpZ25lZCBTUV9TaXplOworCisgIC8vIElmIHRydWUsIGxvYWRzIHdpbGwgbmV2ZXIgYWxpYXMgd2l0aCBzdG9yZXMuIFRoaXMgaXMgdGhlIGRlZmF1bHQuCisgIGJvb2wgTm9BbGlhczsKKworICAvLyBXaGVuIGEgYE1heUxvYWRgIGluc3RydWN0aW9uIGlzIGRpc3BhdGNoZWQgdG8gdGhlIHNjaGVkdWxlcnMgZm9yIGV4ZWN1dGlvbiwKKyAgLy8gdGhlIExTVW5pdCByZXNlcnZlcyBhbiBlbnRyeSBpbiB0aGUgYExvYWRRdWV1ZWAgZm9yIGl0LgorICAvLworICAvLyBMb2FkUXVldWUga2VlcHMgdHJhY2sgb2YgYWxsIHRoZSBsb2FkcyB0aGF0IGFyZSBpbi1mbGlnaHQuIEEgbG9hZAorICAvLyBpbnN0cnVjdGlvbiBpcyBldmVudHVhbGx5IHJlbW92ZWQgZnJvbSB0aGUgTG9hZFF1ZXVlIHdoZW4gaXQgcmVhY2hlcworICAvLyBjb21wbGV0aW9uIHN0YWdlLiBUaGF0IG1lYW5zLCBhIGxvYWQgbGVhdmVzIHRoZSBxdWV1ZSB3aGUgaXQgaXMgJ2V4ZWN1dGVkJywKKyAgLy8gYW5kIGl0cyB2YWx1ZSBjYW4gYmUgZm9yd2FyZGVkIG9uIHRoZSBkYXRhIHBhdGggdG8gb3V0c2lkZSB1bml0cy4KKyAgLy8KKyAgLy8gVGhpcyBjbGFzcyBkb2Vzbid0IGtub3cgYWJvdXQgdGhlIGxhdGVuY3kgb2YgYSBsb2FkIGluc3RydWN0aW9uLiBTbywgaXQKKyAgLy8gY29uc2VydmF0aXZlbHkvcGVzc2ltaXN0aWNhbGx5IGFzc3VtZXMgdGhhdCB0aGUgbGF0ZW5jeSBvZiBhIGxvYWQgb3Bjb2RlCisgIC8vIG1hdGNoZXMgdGhlIGluc3RydWN0aW9uIGxhdGVuY3kuCisgIC8vCisgIC8vIEZJWE1FOiBJbiB0aGUgYWJzZW5jZSBvZiBjYWNoZSBtaXNzZXMgKGkuZS4gTDFJL0wxRC9pVExCL2RUTEIgaGl0cy9taXNzZXMpLAorICAvLyBhbmQgbG9hZC9zdG9yZSBjb25mbGljdHMsIHRoZSBsYXRlbmN5IG9mIGEgbG9hZCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBkZXB0aAorICAvLyBvZiB0aGUgbG9hZCBwaXBlbGluZS4gU28sIHdlIGNvdWxkIHVzZSBmaWVsZCBgTG9hZExhdGVuY3lgIGluIHRoZQorICAvLyBNQ1NjaGVkTW9kZWwgdG8gbW9kZWwgdGhhdCBsYXRlbmN5LgorICAvLyBGaWVsZCBgTG9hZExhdGVuY3lgIG9mdGVuIG1hdGNoZXMgdGhlIHNvLWNhbGxlZCAnbG9hZC10by11c2UnIGxhdGVuY3kgZnJvbQorICAvLyBMMUQsIGFuZCBpdCB1c3VhbGx5IGFscmVhZHkgYWNjb3VudHMgZm9yIGFueSBleHRyYSBsYXRlbmN5IGR1ZSB0byBkYXRhCisgIC8vIGZvcndhcmRpbmcuCisgIC8vIFdoZW4gZG9pbmcgdGhyb3VnaHB1dCBhbmFseXNpcywgYExvYWRMYXRlbmN5YCBpcyBsaWtlbHkgdG8KKyAgLy8gYmUgYSBiZXR0ZXIgcHJlZGljdG9yIG9mIGxvYWQgbGF0ZW5jeSB0aGFuIGluc3RydWN0aW9uIGxhdGVuY3kuIFRoaXMgaXMKKyAgLy8gcGFydGljdWxhcmx5IHRydWUgd2hlbiBzaW11bGF0aW5nIGNvZGUgd2l0aCB0ZW1wb3JhbC9zcGF0aWFsIGxvY2FsaXR5IG9mCisgIC8vIG1lbW9yeSBhY2Nlc3Nlcy4KKyAgLy8gVXNpbmcgYExvYWRMYXRlbmN5YCAoaW5zdGVhZCBvZiB0aGUgaW5zdHJ1Y3Rpb24gbGF0ZW5jeSkgaXMgYWxzbyBleHBlY3RlZAorICAvLyB0byBpbXByb3ZlIHRoZSBsb2FkIHF1ZXVlIGFsbG9jYXRpb24gZm9yIGxvbmcgbGF0ZW5jeSBpbnN0cnVjdGlvbnMgd2l0aAorICAvLyBmb2xkZWQgbWVtb3J5IG9wZXJhbmRzIChTZWUgUFIzOTgyOSkuCisgIC8vCisgIC8vIEZJWE1FOiBPbiBzb21lIHByb2Nlc3NvcnMsIGxvYWQvc3RvcmUgb3BlcmF0aW9ucyBhcmUgc3BsaXQgaW50byBtdWx0aXBsZQorICAvLyB1T3BzLiBGb3IgZXhhbXBsZSwgWDg2IEFNRCBKYWd1YXIgbmF0aXZlbHkgc3VwcG9ydHMgMTI4LWJpdCBkYXRhIHR5cGVzLCBidXQKKyAgLy8gbm90IDI1Ni1iaXQgZGF0YSB0eXBlcy4gU28sIGEgMjU2LWJpdCBsb2FkIGlzIGVmZmVjdGl2ZWx5IHNwbGl0IGludG8gdHdvCisgIC8vIDEyOC1iaXQgbG9hZHMsIGFuZCBlYWNoIHNwbGl0IGxvYWQgY29uc3VtZXMgb25lICdMb2FkUXVldWUnIGVudHJ5LiBGb3IKKyAgLy8gc2ltcGxpY2l0eSwgdGhpcyBjbGFzcyBvcHRpbWlzdGljYWxseSBhc3N1bWVzIHRoYXQgYSBsb2FkIGluc3RydWN0aW9uIG9ubHkKKyAgLy8gY29uc3VtZXMgb25lIGVudHJ5IGluIHRoZSBMb2FkUXVldWUuICBTaW1pbGFybHksIHN0b3JlIGluc3RydWN0aW9ucyBvbmx5CisgIC8vIGNvbnN1bWUgYSBzaW5nbGUgZW50cnkgaW4gdGhlIFN0b3JlUXVldWUuCisgIC8vIEluIGZ1dHVyZSwgd2Ugc2hvdWxkIHJlYXNzZXNzIHRoZSBxdWFsaXR5IG9mIHRoaXMgZGVzaWduLCBhbmQgY29uc2lkZXIKKyAgLy8gYWx0ZXJuYXRpdmUgYXBwcm9hY2hlcyB0aGF0IGxldCBpbnN0cnVjdGlvbnMgc3BlY2lmeSB0aGUgbnVtYmVyIG9mCisgIC8vIGxvYWQvc3RvcmUgcXVldWUgZW50cmllcyB3aGljaCB0aGV5IGNvbnN1bWUgYXQgZGlzcGF0Y2ggc3RhZ2UgKFNlZQorICAvLyBQUjM5ODMwKS4KKyAgU21hbGxTZXQ8dW5zaWduZWQsIDE2PiBMb2FkUXVldWU7CisgIFNtYWxsU2V0PHVuc2lnbmVkLCAxNj4gU3RvcmVRdWV1ZTsKKworICB2b2lkIGFzc2lnbkxRU2xvdCh1bnNpZ25lZCBJbmRleCk7CisgIHZvaWQgYXNzaWduU1FTbG90KHVuc2lnbmVkIEluZGV4KTsKKyAgYm9vbCBpc1JlYWR5Tm9BbGlhcyh1bnNpZ25lZCBJbmRleCkgY29uc3Q7CisKKyAgLy8gQW4gaW5zdHJ1Y3Rpb24gdGhhdCBib3RoICdtYXlTdG9yZScgYW5kICdIYXNVbm1vZGVsZWRTaWRlRWZmZWN0cycgaXMKKyAgLy8gY29uc2VydmF0aXZlbHkgdHJlYXRlZCBhcyBhIHN0b3JlIGJhcnJpZXIuIEl0IGZvcmNlcyBvbGRlciBzdG9yZSB0byBiZQorICAvLyBleGVjdXRlZCBiZWZvcmUgbmV3ZXIgc3RvcmVzIGFyZSBpc3N1ZWQuCisgIFNtYWxsU2V0PHVuc2lnbmVkLCA4PiBTdG9yZUJhcnJpZXJzOworCisgIC8vIEFuIGluc3RydWN0aW9uIHRoYXQgYm90aCAnTWF5TG9hZCcgYW5kICdIYXNVbm1vZGVsZWRTaWRlRWZmZWN0cycgaXMKKyAgLy8gY29uc2VydmF0aXZlbHkgdHJlYXRlZCBhcyBhIGxvYWQgYmFycmllci4gSXQgZm9yY2VzIG9sZGVyIGxvYWRzIHRvIGV4ZWN1dGUKKyAgLy8gYmVmb3JlIG5ld2VyIGxvYWRzIGFyZSBpc3N1ZWQuCisgIFNtYWxsU2V0PHVuc2lnbmVkLCA4PiBMb2FkQmFycmllcnM7CisKKyAgYm9vbCBpc1NRRW1wdHkoKSBjb25zdCB7IHJldHVybiBTdG9yZVF1ZXVlLmVtcHR5KCk7IH0KKyAgYm9vbCBpc0xRRW1wdHkoKSBjb25zdCB7IHJldHVybiBMb2FkUXVldWUuZW1wdHkoKTsgfQorICBib29sIGlzU1FGdWxsKCkgY29uc3QgeyByZXR1cm4gU1FfU2l6ZSAhPSAwICYmIFN0b3JlUXVldWUuc2l6ZSgpID09IFNRX1NpemU7IH0KKyAgYm9vbCBpc0xRRnVsbCgpIGNvbnN0IHsgcmV0dXJuIExRX1NpemUgIT0gMCAmJiBMb2FkUXVldWUuc2l6ZSgpID09IExRX1NpemU7IH0KKworcHVibGljOgorICBMU1VuaXQoY29uc3QgTUNTY2hlZE1vZGVsICZTTSwgdW5zaWduZWQgTFEgPSAwLCB1bnNpZ25lZCBTUSA9IDAsCisgICAgICAgICBib29sIEFzc3VtZU5vQWxpYXMgPSBmYWxzZSk7CisKKyNpZm5kZWYgTkRFQlVHCisgIHZvaWQgZHVtcCgpIGNvbnN0OworI2VuZGlmCisKKyAgZW51bSBTdGF0dXMgeyBMU1VfQVZBSUxBQkxFID0gMCwgTFNVX0xRVUVVRV9GVUxMLCBMU1VfU1FVRVVFX0ZVTEwgfTsKKworICAvLyBSZXR1cm5zIExTVV9BVkFJTEFCTEUgaWYgdGhlcmUgYXJlIGVub3VnaCBsb2FkL3N0b3JlIHF1ZXVlIGVudHJpZXMgdG8gc2VydmUKKyAgLy8gSVIuIEl0IGFsc28gcmV0dXJucyBMU1VfQVZBSUxBQkxFIGlmIElSIGlzIG5vdCBhIG1lbW9yeSBvcGVyYXRpb24uCisgIFN0YXR1cyBpc0F2YWlsYWJsZShjb25zdCBJbnN0UmVmICZJUikgY29uc3Q7CisKKyAgLy8gQWxsb2NhdGVzIGxvYWQvc3RvcmUgcXVldWUgcmVzb3VyY2VzIGZvciBJUi4KKyAgLy8KKyAgLy8gVGhpcyBtZXRob2QgYXNzdW1lcyB0aGF0IGEgcHJldmlvdXMgY2FsbCB0byBgaXNBdmFpbGFibGUoSVIpYCByZXR1cm5lZAorICAvLyBMU1VfQVZBSUxBQkxFLCBhbmQgdGhhdCBJUiBpcyBhIG1lbW9yeSBvcGVyYXRpb24uCisgIHZvaWQgZGlzcGF0Y2goY29uc3QgSW5zdFJlZiAmSVIpOworCisgIC8vIEJ5IGRlZmF1bHQsIHJ1bGVzIGFyZToKKyAgLy8gMS4gQSBzdG9yZSBtYXkgbm90IHBhc3MgYSBwcmV2aW91cyBzdG9yZS4KKyAgLy8gMi4gQSBsb2FkIG1heSBub3QgcGFzcyBhIHByZXZpb3VzIHN0b3JlIHVubGVzcyBmbGFnICdOb0FsaWFzJyBpcyBzZXQuCisgIC8vIDMuIEEgbG9hZCBtYXkgcGFzcyBhIHByZXZpb3VzIGxvYWQuCisgIC8vIDQuIEEgc3RvcmUgbWF5IG5vdCBwYXNzIGEgcHJldmlvdXMgbG9hZCAocmVnYXJkbGVzcyBvZiBmbGFnICdOb0FsaWFzJykuCisgIC8vIDUuIEEgbG9hZCBoYXMgdG8gd2FpdCB1bnRpbCBhbiBvbGRlciBsb2FkIGJhcnJpZXIgaXMgZnVsbHkgZXhlY3V0ZWQuCisgIC8vIDYuIEEgc3RvcmUgaGFzIHRvIHdhaXQgdW50aWwgYW4gb2xkZXIgc3RvcmUgYmFycmllciBpcyBmdWxseSBleGVjdXRlZC4KKyAgdmlydHVhbCBib29sIGlzUmVhZHkoY29uc3QgSW5zdFJlZiAmSVIpIGNvbnN0OworCisgIC8vIExvYWQgYW5kIHN0b3JlIGluc3RydWN0aW9ucyBhcmUgdHJhY2tlZCBieSB0aGVpciBjb3JyZXNwb25kaW5nIHF1ZXVlcyBmcm9tCisgIC8vIGRpc3BhdGNoIHVudGlsIHRoZSAiaW5zdHJ1Y3Rpb24gZXhlY3V0ZWQiIGV2ZW50LgorICAvLyBPbmx5IHdoZW4gYSBsb2FkIGluc3RydWN0aW9uIHJlYWNoZXMgdGhlICdFeGVjdXRlZCcgc3RhZ2UsIGl0cyB2YWx1ZQorICAvLyBiZWNvbWVzIGF2YWlsYWJsZSB0byB0aGUgdXNlcnMuIEF0IHRoYXQgcG9pbnQsIHRoZSBsb2FkIG5vIGxvbmdlciBuZWVkcyB0bworICAvLyBiZSB0cmFja2VkIGJ5IHRoZSBsb2FkIHF1ZXVlLgorICAvLyBGSVhNRTogRm9yIHNpbXBsaWNpdHksIHdlIG9wdGltaXN0aWNhbGx5IGFzc3VtZSBhIHNpbWlsYXIgYmVoYXZpb3IgZm9yCisgIC8vIHN0b3JlIGluc3RydWN0aW9ucy4gSW4gcHJhY3RpY2UsIHN0b3JlIG9wZXJhdGlvbnMgZG9uJ3QgdGVuZCB0byBsZWF2ZSB0aGUKKyAgLy8gc3RvcmUgcXVldWUgdW50aWwgdGhleSByZWFjaCB0aGUgJ1JldGlyZWQnIHN0YWdlIChTZWUgUFIzOTgzMCkuCisgIHZvaWQgb25JbnN0cnVjdGlvbkV4ZWN1dGVkKGNvbnN0IEluc3RSZWYgJklSKTsKK307CisKK30gLy8gbmFtZXNwYWNlIG1jYQorfSAvLyBuYW1lc3BhY2UgbGx2bQorCisjZW5kaWYgLy8gTExWTV9NQ0FfTFNVTklUX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUNBL0hhcmR3YXJlVW5pdHMvUmVnaXN0ZXJGaWxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9IYXJkd2FyZVVuaXRzL1JlZ2lzdGVyRmlsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NTA2MzIKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9IYXJkd2FyZVVuaXRzL1JlZ2lzdGVyRmlsZS5oCkBAIC0wLDAgKzEsMjM5IEBACisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZWdpc3RlckZpbGUuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8vIFxmaWxlCisvLy8KKy8vLyBUaGlzIGZpbGUgZGVmaW5lcyBhIHJlZ2lzdGVyIG1hcHBpbmcgZmlsZSBjbGFzcy4gIFRoaXMgY2xhc3MgaXMgcmVzcG9uc2libGUKKy8vLyBmb3IgbWFuYWdpbmcgaGFyZHdhcmUgcmVnaXN0ZXIgZmlsZXMgYW5kIHRoZSB0cmFja2luZyBvZiBkYXRhIGRlcGVuZGVuY2llcworLy8vIGJldHdlZW4gcmVnaXN0ZXJzLgorLy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fTUNBX1JFR0lTVEVSX0ZJTEVfSAorI2RlZmluZSBMTFZNX01DQV9SRUdJU1RFUl9GSUxFX0gKKworI2luY2x1ZGUgImxsdm0vQURUL0FQSW50LmgiCisjaW5jbHVkZSAibGx2bS9BRFQvU21hbGxWZWN0b3IuaCIKKyNpbmNsdWRlICJsbHZtL01DL01DUmVnaXN0ZXJJbmZvLmgiCisjaW5jbHVkZSAibGx2bS9NQy9NQ1NjaGVkdWxlLmgiCisjaW5jbHVkZSAibGx2bS9NQy9NQ1N1YnRhcmdldEluZm8uaCIKKyNpbmNsdWRlICJsbHZtL01DQS9IYXJkd2FyZVVuaXRzL0hhcmR3YXJlVW5pdC5oIgorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9FcnJvci5oIgorCituYW1lc3BhY2UgbGx2bSB7CituYW1lc3BhY2UgbWNhIHsKKworY2xhc3MgUmVhZFN0YXRlOworY2xhc3MgV3JpdGVTdGF0ZTsKK2NsYXNzIFdyaXRlUmVmOworCisvLy8gTWFuYWdlcyBoYXJkd2FyZSByZWdpc3RlciBmaWxlcywgYW5kIHRyYWNrcyByZWdpc3RlciBkZWZpbml0aW9ucyBmb3IKKy8vLyByZWdpc3RlciByZW5hbWluZyBwdXJwb3Nlcy4KK2NsYXNzIFJlZ2lzdGVyRmlsZSA6IHB1YmxpYyBIYXJkd2FyZVVuaXQgeworICBjb25zdCBNQ1JlZ2lzdGVySW5mbyAmTVJJOworCisgIC8vIGNsYXNzIFJlZ2lzdGVyTWFwcGluZ1RyYWNrZXIgaXMgYSAgcGh5c2ljYWwgcmVnaXN0ZXIgZmlsZSAoUFJGKSBkZXNjcmlwdG9yLgorICAvLyBUaGVyZSBpcyBvbmUgUmVnaXN0ZXJNYXBwaW5nVHJhY2tlciBmb3IgZXZlcnkgUFJGIGRlZmluaXRpb24gaW4gdGhlCisgIC8vIHNjaGVkdWxpbmcgbW9kZWwuCisgIC8vCisgIC8vIEFuIGluc3RhbmNlIG9mIFJlZ2lzdGVyTWFwcGluZ1RyYWNrZXIgdHJhY2tzIHRoZSBudW1iZXIgb2YgcGh5c2ljYWwKKyAgLy8gcmVnaXN0ZXJzIGF2YWlsYWJsZSBmb3IgcmVuYW1pbmcuIEl0IGFsc28gdHJhY2tzICB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVyCisgIC8vIG1vdmVzIGVsaW1pbmF0ZWQgcGVyIGN5Y2xlLgorICBzdHJ1Y3QgUmVnaXN0ZXJNYXBwaW5nVHJhY2tlciB7CisgICAgLy8gVGhlIHRvdGFsIG51bWJlciBvZiBwaHlzaWNhbCByZWdpc3RlcnMgdGhhdCBhcmUgYXZhaWxhYmxlIGluIHRoaXMKKyAgICAvLyByZWdpc3RlciBmaWxlIGZvciByZWdpc3RlciByZW5hbWluZyBwdXJwb3VzZXMuICBBIHZhbHVlIG9mIHplcm8gZm9yIHRoaXMKKyAgICAvLyBmaWVsZCBtZWFuczogdGhpcyByZWdpc3RlciBmaWxlIGhhcyBhbiB1bmJvdW5kZWQgbnVtYmVyIG9mIHBoeXNpY2FsCisgICAgLy8gcmVnaXN0ZXJzLgorICAgIGNvbnN0IHVuc2lnbmVkIE51bVBoeXNSZWdzOworICAgIC8vIE51bWJlciBvZiBwaHlzaWNhbCByZWdpc3RlcnMgdGhhdCBhcmUgY3VycmVudGx5IGluIHVzZS4KKyAgICB1bnNpZ25lZCBOdW1Vc2VkUGh5c1JlZ3M7CisKKyAgICAvLyBNYXhpbXVtIG51bWJlciBvZiByZWdpc3RlciBtb3ZlcyB0aGF0IGNhbiBiZSBlbGltaW5hdGVkIGJ5IHRoaXMgUFJGIGV2ZXJ5CisgICAgLy8gY3ljbGUuIEEgdmFsdWUgb2YgemVybyBtZWFucyB0aGF0IHRoZXJlIGlzIG5vIGxpbWl0IGluIHRoZSBudW1iZXIgb2YKKyAgICAvLyBtb3ZlcyB3aGljaCBjYW4gYmUgZWxpbWluYXRlZCBldmVyeSBjeWNsZS4KKyAgICBjb25zdCB1bnNpZ25lZCBNYXhNb3ZlRWxpbWluYXRlZFBlckN5Y2xlOworCisgICAgLy8gTnVtYmVyIG9mIHJlZ2lzdGVyIG1vdmVzIGVsaW1pbmF0ZWQgZHVyaW5nIHRoaXMgY3ljbGUuCisgICAgLy8KKyAgICAvLyBUaGlzIHZhbHVlIGlzIGluY3JlYXNlZCBieSBvbmUgZXZlcnkgdGltZSBhIHJlZ2lzdGVyIG1vdmUgaXMgZWxpbWluYXRlZC4KKyAgICAvLyBFdmVyeSBuZXcgY3ljbGUsIHRoaXMgdmFsdWUgaXMgcmVzZXQgdG8gemVyby4KKyAgICAvLyBBIG1vdmUgY2FuIGJlIGVsaW1pbmF0ZWQgb25seSBpZiBNYXhNb3ZlRWxpbWluYXRlZFBlckN5Y2xlIGlzIHplcm8sIG9yIGlmCisgICAgLy8gTnVtTW92ZUVsaW1pbmF0ZWQgaXMgbGVzcyB0aGFuIE1heE1vdmVFbGltaW5hdGVkUGVyQ3ljbGUuCisgICAgdW5zaWduZWQgTnVtTW92ZUVsaW1pbmF0ZWQ7CisKKyAgICAvLyBJZiBzZXQsIG1vdmUgZWxpbWluYXRpb24gaXMgcmVzdHJpY3RlZCB0byB6ZXJvLXJlZ2lzdGVyIG1vdmVzIG9ubHkuCisgICAgYm9vbCBBbGxvd1plcm9Nb3ZlRWxpbWluYXRpb25Pbmx5OworCisgICAgUmVnaXN0ZXJNYXBwaW5nVHJhY2tlcih1bnNpZ25lZCBOdW1QaHlzUmVnaXN0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTWF4TW92ZUVsaW1pbmF0ZWQgPSAwVSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgQWxsb3daZXJvTW92ZUVsaW1Pbmx5ID0gZmFsc2UpCisgICAgICAgIDogTnVtUGh5c1JlZ3MoTnVtUGh5c1JlZ2lzdGVycyksIE51bVVzZWRQaHlzUmVncygwKSwKKyAgICAgICAgICBNYXhNb3ZlRWxpbWluYXRlZFBlckN5Y2xlKE1heE1vdmVFbGltaW5hdGVkKSwgTnVtTW92ZUVsaW1pbmF0ZWQoMFUpLAorICAgICAgICAgIEFsbG93WmVyb01vdmVFbGltaW5hdGlvbk9ubHkoQWxsb3daZXJvTW92ZUVsaW1Pbmx5KSB7fQorICB9OworCisgIC8vIEEgdmVjdG9yIG9mIHJlZ2lzdGVyIGZpbGUgZGVzY3JpcHRvcnMuICBUaGlzIHNldCBhbHdheXMgY29udGFpbnMgYXQgbGVhc3QKKyAgLy8gb25lIGVudHJ5LiBFbnRyeSBhdCBpbmRleCAjMCBpcyByZXNlcnZlZC4gIFRoYXQgZW50cnkgZGVzY3JpYmVzIGEgcmVnaXN0ZXIKKyAgLy8gZmlsZSB3aXRoIGFuIHVuYm91bmRlZCBudW1iZXIgb2YgcGh5c2ljYWwgcmVnaXN0ZXJzIHRoYXQgInNlZXMiIGFsbCB0aGUKKyAgLy8gaGFyZHdhcmUgcmVnaXN0ZXJzIGRlY2xhcmVkIGJ5IHRoZSB0YXJnZXQgKGkuZS4gYWxsIHRoZSByZWdpc3RlcgorICAvLyBkZWZpbml0aW9ucyBpbiB0aGUgdGFyZ2V0IHNwZWNpZmljIGBYWVpSZWdpc3RlckluZm8udGRgIC0gd2hlcmUgYFhZWmAgaXMKKyAgLy8gdGhlIHRhcmdldCBuYW1lKS4KKyAgLy8KKyAgLy8gVXNlcnMgY2FuIGxpbWl0IHRoZSBudW1iZXIgb2YgcGh5c2ljYWwgcmVnaXN0ZXJzIHRoYXQgYXJlIGF2YWlsYWJsZSBpbgorICAvLyByZWdzaXRlciBmaWxlICMwIHNwZWNpZnlpbmcgY29tbWFuZCBsaW5lIGZsYWcgYC1yZWdpc3Rlci1maWxlLXNpemU9PHVpbnQ+YC4KKyAgU21hbGxWZWN0b3I8UmVnaXN0ZXJNYXBwaW5nVHJhY2tlciwgND4gUmVnaXN0ZXJGaWxlczsKKworICAvLyBUaGlzIHR5cGUgaXMgdXNlZCB0byBwcm9wYWdhdGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG93bmVyIG9mIGEgcmVnaXN0ZXIsCisgIC8vIGFuZCB0aGUgY29zdCBvZiBhbGxvY2F0aW5nIGl0IGluIHRoZSBQUkYuIFJlZ2lzdGVyIGNvc3QgaXMgZGVmaW5lZCBhcyB0aGUKKyAgLy8gbnVtYmVyIG9mIHBoeXNpY2FsIHJlZ2lzdGVycyBjb25zdW1lZCBieSB0aGUgUFJGIHRvIGFsbG9jYXRlIGEgdXNlcgorICAvLyByZWdpc3Rlci4KKyAgLy8KKyAgLy8gRm9yIGV4YW1wbGU6IG9uIFg4NiBCdFZlcjIsIGEgWU1NIHJlZ2lzdGVyIGNvbnN1bWVzIDIgMTI4LWJpdCBwaHlzaWNhbAorICAvLyByZWdpc3RlcnMuIFNvLCB0aGUgY29zdCBvZiBhbGxvY2F0aW5nIGEgWU1NIHJlZ2lzdGVyIGluIEJ0VmVyMiBpcyAyLgorICB1c2luZyBJbmRleFBsdXNDb3N0UGFpclR5ID0gc3RkOjpwYWlyPHVuc2lnbmVkLCB1bnNpZ25lZD47CisKKyAgLy8gU3RydWN0IFJlZ2lzdGVyUmVuYW1pbmdJbmZvIGlzIHVzZWQgdG8gbWFwIGxvZ2ljYWwgcmVnaXN0ZXJzIHRvIHJlZ2lzdGVyCisgIC8vIGZpbGVzLgorICAvLworICAvLyBUaGVyZSBpcyBhIFJlZ2lzdGVyUmVuYW1pbmdJbmZvIG9iamVjdCBmb3IgZXZlcnkgbG9naWNhbCByZWdpc3RlciBkZWZpbmVkCisgIC8vIGJ5IHRoZSB0YXJnZXQuIFJlZ2lzdGVSZW5hbWluZ0luZm8gb2JqZWN0cyBhcmUgc3RvcmVkIGludG8gdmVjdG9yCisgIC8vIGBSZWdpc3Rlck1hcHBpbmdzYCwgYW5kIE1DUGh5c1JlZyBJRHMgY2FuIGJlIHVzZWQgdG8gcmVmZXJlbmNlCisgIC8vIGVsZW1lbnRzIGluIHRoYXQgdmVjdG9yLgorICAvLworICAvLyBFYWNoIFJlZ2lzdGVyUmVuYW1pbmdJbmZvIGlzIG93bmVkIGJ5IGEgUFJGLCBhbmQgZmllbGQgYEluZGV4UGx1c0Nvc3RgCisgIC8vIHNwZWNpZmllcyBib3RoIHRoZSBvd25pbmcgUFJGLCBhcyB3ZWxsIGFzIHRoZSBudW1iZXIgb2YgcGh5c2ljYWwgcmVnaXN0ZXJzCisgIC8vIGNvbnN1bWVkIGF0IHJlZ2lzdGVyIHJlbmFtaW5nIHN0YWdlLgorICAvLworICAvLyBGaWVsZCBgQWxsb3dNb3ZlRWxpbWluYXRpb25gIGlzIHNldCBmb3IgcmVnaXN0ZXJzIHRoYXQgYXJlIHVzZWQgYXMKKyAgLy8gZGVzdGluYXRpb24gYnkgb3B0aW1pemFibGUgcmVnaXN0ZXIgbW92ZXMuCisgIC8vCisgIC8vIEZpZWxkIGBBbGlhc1JlZ0lEYCBpcyBzZXQgYnkgd3JpdGVzIGZyb20gcmVnaXN0ZXIgbW92ZXMgdGhhdCBoYXZlIGJlZW4KKyAgLy8gZWxpbWluYXRlZCBhdCByZWdpc3RlciByZW5hbWluZyBzdGFnZS4gQSBtb3ZlIGVsaW1pbmF0ZWQgYXQgcmVnaXN0ZXIKKyAgLy8gcmVuYW1pbmcgc3RhZ2UgaXMgZWZmZWN0aXZlbHkgYnlwYXNzZWQsIGFuZCBpdHMgd3JpdGUgYWxpYXNlcyB0aGUgc291cmNlCisgIC8vIHJlZ2lzdGVyIGRlZmluaXRpb24uCisgIHN0cnVjdCBSZWdpc3RlclJlbmFtaW5nSW5mbyB7CisgICAgSW5kZXhQbHVzQ29zdFBhaXJUeSBJbmRleFBsdXNDb3N0OworICAgIE1DUGh5c1JlZyBSZW5hbWVBczsKKyAgICBNQ1BoeXNSZWcgQWxpYXNSZWdJRDsKKyAgICBib29sIEFsbG93TW92ZUVsaW1pbmF0aW9uOworICAgIFJlZ2lzdGVyUmVuYW1pbmdJbmZvKCkKKyAgICAgICAgOiBJbmRleFBsdXNDb3N0KHN0ZDo6bWFrZV9wYWlyKDBVLCAxVSkpLCBSZW5hbWVBcygwVSksIEFsaWFzUmVnSUQoMFUpLAorICAgICAgICAgIEFsbG93TW92ZUVsaW1pbmF0aW9uKGZhbHNlKSB7fQorICB9OworCisgIC8vIFJlZ2lzdGVyTWFwcGluZyBvYmplY3RzIGFyZSBtYWlubHkgdXNlZCB0byB0cmFjayBwaHlzaWNhbCByZWdpc3RlcgorICAvLyBkZWZpbml0aW9ucyBhbmQgcmVzb2x2ZSBkYXRhIGRlcGVuZGVuY2llcy4KKyAgLy8KKyAgLy8gRXZlcnkgcmVnaXN0ZXIgZGVjbGFyZWQgYnkgdGhlIFRhcmdldCBpcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5zdGFuY2Ugb2YKKyAgLy8gUmVnaXN0ZXJNYXBwaW5nLiBSZWdpc3Rlck1hcHBpbmcgb2JqZWN0cyBrZWVwIHRyYWNrIG9mIHdyaXRlcyB0byBhIGxvZ2ljYWwKKyAgLy8gcmVnaXN0ZXIuICBUaGF0IGluZm9ybWF0aW9uIGlzIHVzZWQgYnkgY2xhc3MgUmVnaXN0ZXJGaWxlIHRvIHJlc29sdmUgZGF0YQorICAvLyBkZXBlbmRlbmNpZXMsIGFuZCBjb3JyZWN0bHkgc2V0IGxhdGVuY2llcyBmb3IgcmVnaXN0ZXIgdXNlcy4KKyAgLy8KKyAgLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBhbGxvdyBvdmVybGFwcGluZyByZWdpc3RlciBmaWxlcy4gVGhlIG9ubHkKKyAgLy8gcmVnaXN0ZXIgZmlsZSB0aGF0IGlzIGFsbG93ZWQgdG8gb3ZlcmxhcCB3aXRoIG90aGVyIHJlZ2lzdGVyIGZpbGVzIGlzCisgIC8vIHJlZ2lzdGVyIGZpbGUgIzAuIElmIHdlIGV4Y2x1ZGUgcmVnaXN0ZXIgIzAsIGV2ZXJ5IHJlZ2lzdGVyIGlzICJvd25lZCIgYnkKKyAgLy8gYXQgbW9zdCBvbmUgcmVnaXN0ZXIgZmlsZS4KKyAgdXNpbmcgUmVnaXN0ZXJNYXBwaW5nID0gc3RkOjpwYWlyPFdyaXRlUmVmLCBSZWdpc3RlclJlbmFtaW5nSW5mbz47CisKKyAgLy8gVGhlcmUgaXMgb25lIGVudHJ5IHBlciBlYWNoIHJlZ2lzdGVyIGRlZmluZWQgYnkgdGhlIHRhcmdldC4KKyAgc3RkOjp2ZWN0b3I8UmVnaXN0ZXJNYXBwaW5nPiBSZWdpc3Rlck1hcHBpbmdzOworCisgIC8vIFVzZWQgdG8gdHJhY2sgemVybyByZWdpc3RlcnMuIFRoZXJlIGlzIG9uZSBiaXQgZm9yIGVhY2ggcmVnaXN0ZXIgZGVmaW5lZCBieQorICAvLyB0aGUgdGFyZ2V0LiBCaXRzIGFyZSBzZXQgZm9yIHJlZ2lzdGVycyB0aGF0IGFyZSBrbm93biB0byBiZSB6ZXJvLgorICBBUEludCBaZXJvUmVnaXN0ZXJzOworCisgIC8vIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBuZXcgcmVnaXN0ZXIgZmlsZSBkZXNjcmlwdG9yLgorICAvLyBUaGUgbmV3IHJlZ2lzdGVyIGZpbGUgb3ducyBhbGwgb2YgdGhlIHJlZ2lzdGVycyBkZWNsYXJlZCBieSByZWdpc3RlcgorICAvLyBjbGFzc2VzIGluIHRoZSAnUmVnaXN0ZXJDbGFzc2VzJyBzZXQuCisgIC8vCisgIC8vIFByb2Nlc3NvciBtb2RlbHMgYWxsb3cgdGhlIGRlZmluaXRpb24gb2YgUmVnaXN0ZXJGaWxlKHMpIHZpYSB0YWJsZWdlbi4gRm9yCisgIC8vIGV4YW1wbGUsIHRoaXMgaXMgYSB0YWJsZWdlbiBkZWZpbml0aW9uIGZvciBhIHg4NiByZWdpc3RlciBmaWxlIGZvcgorICAvLyBYTU1bMC0xNV0gYW5kIFlNTVswLTE1XSwgdGhhdCBhbGxvd3MgdXAgdG8gNjAgcmVuYW1lcyAoZWFjaCByZW5hbWUgY29zdHMgMQorICAvLyBwaHlzaWNhbCByZWdpc3RlcikuCisgIC8vCisgIC8vICAgIGRlZiBGUFJlZ2lzdGVyRmlsZSA6IFJlZ2lzdGVyRmlsZTw2MCwgW1ZSMTI4UmVnQ2xhc3MsIFZSMjU2UmVnQ2xhc3NdPgorICAvLworICAvLyBIZXJlIEZQUmVnaXN0ZXJGaWxlIGNvbnRhaW5zIGFsbCB0aGUgcmVnaXN0ZXJzIGRlZmluZWQgYnkgcmVnaXN0ZXIgY2xhc3MKKyAgLy8gVlIxMjhSZWdDbGFzcyBhbmQgVlIyNTZSZWdDbGFzcy4gRlBSZWdpc3RlckZpbGUgaW1wbGVtZW50cyA2MAorICAvLyByZWdpc3RlcnMgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIHJlZ2lzdGVyIHJlbmFtaW5nIHB1cnBvc2UuCisgIHZvaWQgYWRkUmVnaXN0ZXJGaWxlKGNvbnN0IE1DUmVnaXN0ZXJGaWxlRGVzYyAmUkYsCisgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPE1DUmVnaXN0ZXJDb3N0RW50cnk+IEVudHJpZXMpOworCisgIC8vIENvbnN1bWVzIHBoeXNpY2FsIHJlZ2lzdGVycyBpbiBlYWNoIHJlZ2lzdGVyIGZpbGUgc3BlY2lmaWVkIGJ5IHRoZQorICAvLyBgSW5kZXhQbHVzQ29zdFBhaXJUeWAuIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBmcm9tIGBhZGRSZWdpc3Rlck1hcHBpbmcoKWAuCisgIHZvaWQgYWxsb2NhdGVQaHlzUmVncyhjb25zdCBSZWdpc3RlclJlbmFtaW5nSW5mbyAmRW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICBNdXRhYmxlQXJyYXlSZWY8dW5zaWduZWQ+IFVzZWRQaHlzUmVncyk7CisKKyAgLy8gUmVsZWFzZXMgcHJldmlvdXNseSBhbGxvY2F0ZWQgcGh5c2ljYWwgcmVnaXN0ZXJzIGZyb20gdGhlIHJlZ2lzdGVyIGZpbGUocykuCisgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBmcm9tIGBpbnZhbGlkYXRlUmVnaXN0ZXJNYXBwaW5nKClgLgorICB2b2lkIGZyZWVQaHlzUmVncyhjb25zdCBSZWdpc3RlclJlbmFtaW5nSW5mbyAmRW50cnksCisgICAgICAgICAgICAgICAgICAgIE11dGFibGVBcnJheVJlZjx1bnNpZ25lZD4gRnJlZWRQaHlzUmVncyk7CisKKyAgLy8gQ29sbGVjdHMgd3JpdGVzIHRoYXQgYXJlIGluIGEgUkFXIGRlcGVuZGVuY3kgd2l0aCBSUy4KKyAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyb20gYGFkZFJlZ2lzdGVyUmVhZCgpYC4KKyAgdm9pZCBjb2xsZWN0V3JpdGVzKGNvbnN0IFJlYWRTdGF0ZSAmUlMsCisgICAgICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8V3JpdGVSZWY+ICZXcml0ZXMpIGNvbnN0OworCisgIC8vIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBSZWdpc3Rlck1hcHBpbmdUcmFja2VyIGZvciBldmVyeSByZWdpc3RlciBmaWxlCisgIC8vIHNwZWNpZmllZCBieSB0aGUgcHJvY2Vzc29yIG1vZGVsLgorICAvLyBJZiBubyByZWdpc3RlciBmaWxlIGlzIHNwZWNpZmllZCwgdGhlbiB0aGlzIG1ldGhvZCBjcmVhdGVzIGEgZGVmYXVsdAorICAvLyByZWdpc3RlciBmaWxlIHdpdGggYW4gdW5ib3VuZGVkIG51bWJlciBvZiBwaHlzaWNhbCByZWdpc3RlcnMuCisgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBNQ1NjaGVkTW9kZWwgJlNNLCB1bnNpZ25lZCBOdW1SZWdzKTsKKworcHVibGljOgorICBSZWdpc3RlckZpbGUoY29uc3QgTUNTY2hlZE1vZGVsICZTTSwgY29uc3QgTUNSZWdpc3RlckluZm8gJm1yaSwKKyAgICAgICAgICAgICAgIHVuc2lnbmVkIE51bVJlZ3MgPSAwKTsKKworICAvLyBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSByZWdpc3RlciBtYXBwaW5ncyBpbnNlcnRpbmcgYSBuZXcgcmVnaXN0ZXIKKyAgLy8gZGVmaW5pdGlvbi4gVGhpcyBtZXRob2QgaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgdXBkYXRpbmcgdGhlIG51bWJlciBvZgorICAvLyBhbGxvY2F0ZWQgcGh5c2ljYWwgcmVnaXN0ZXJzIGluIGVhY2ggcmVnaXN0ZXIgZmlsZSBtb2RpZmllZCBieSB0aGUgd3JpdGUuCisgIC8vIE5vIHBoeXNpY2FsIHJlZ2lzZXIgaXMgYWxsb2NhdGVkIGlmIHRoaXMgd3JpdGUgaXMgZnJvbSBhIHplcm8taWRpb20uCisgIHZvaWQgYWRkUmVnaXN0ZXJXcml0ZShXcml0ZVJlZiBXcml0ZSwgTXV0YWJsZUFycmF5UmVmPHVuc2lnbmVkPiBVc2VkUGh5c1JlZ3MpOworCisgIC8vIENvbGxlY3Qgd3JpdGVzIHRoYXQgYXJlIGluIGEgZGF0YSBkZXBlbmRlbmN5IHdpdGggUlMsIGFuZCB1cGRhdGUgUlMKKyAgLy8gaW50ZXJuYWwgc3RhdGUuCisgIHZvaWQgYWRkUmVnaXN0ZXJSZWFkKFJlYWRTdGF0ZSAmUlMsIGNvbnN0IE1DU3VidGFyZ2V0SW5mbyAmU1RJKSBjb25zdDsKKworICAvLyBSZW1vdmVzIHdyaXRlIFxwYXJhbSBXUyBmcm9tIHRoZSByZWdpc3RlciBtYXBwaW5ncy4KKyAgLy8gUGh5c2ljYWwgcmVnaXN0ZXJzIG1heSBiZSByZWxlYXNlZCB0byByZWZsZWN0IHRoaXMgdXBkYXRlLgorICAvLyBObyByZWdpc3RlcnMgYXJlIHJlbGVhc2VkIGlmIHRoaXMgd3JpdGUgaXMgZnJvbSBhIHplcm8taWRpb20uCisgIHZvaWQgcmVtb3ZlUmVnaXN0ZXJXcml0ZShjb25zdCBXcml0ZVN0YXRlICZXUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE11dGFibGVBcnJheVJlZjx1bnNpZ25lZD4gRnJlZWRQaHlzUmVncyk7CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmIGEgbW92ZSBmcm9tIFJTIHRvIFdTIGNhbiBiZSBlbGltaW5hdGVkLgorICAvLyBPbiBzdWNjZXNzLCBpdCB1cGRhdGVzIFdyaXRlU3RhdGUgYnkgc2V0dGluZyBmbGFnIGBXUy5pc0VsaW1pbmF0ZWRgLgorICAvLyBJZiBSUyBpcyBhIHJlYWQgZnJvbSBhIHplcm8gcmVnaXN0ZXIsIGFuZCBXUyBpcyBlbGltaW5hdGVkLCB0aGVuCisgIC8vIGBXUy5Xcml0ZXNaZXJvYCBpcyBhbHNvIHNldCwgc28gdGhhdCBtZXRob2QgYWRkUmVnaXN0ZXJXcml0ZSgpIHdvdWxkIG5vdAorICAvLyByZXNlcnZlIGEgcGh5c2ljYWwgcmVnaXN0ZXIgZm9yIGl0LgorICBib29sIHRyeUVsaW1pbmF0ZU1vdmUoV3JpdGVTdGF0ZSAmV1MsIFJlYWRTdGF0ZSAmUlMpOworCisgIC8vIENoZWNrcyBpZiB0aGVyZSBhcmUgZW5vdWdoIHBoeXNpY2FsIHJlZ2lzdGVycyBpbiB0aGUgcmVnaXN0ZXIgZmlsZXMuCisgIC8vIFJldHVybnMgYSAicmVzcG9uc2UgbWFzayIgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cyB0aGUgcmVzcG9uc2UgZnJvbSBhCisgIC8vIGRpZmZlcmVudCByZWdpc3RlciBmaWxlLiAgQSBtYXNrIG9mIGFsbCB6ZXJvZXMgbWVhbnMgdGhhdCBhbGwgcmVnaXN0ZXIKKyAgLy8gZmlsZXMgYXJlIGF2YWlsYWJsZS4gIE90aGVyd2lzZSwgdGhlIG1hc2sgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgd2hpY2gKKyAgLy8gcmVnaXN0ZXIgZmlsZSB3YXMgYnVzeS4gIFRoaXMgc2VtYXRpYyBhbGxvd3MgdXMgdG8gY2xhc3NpZnkgZGlzcGF0Y2gKKyAgLy8gc3RhbGxzIGNhdXNlZCBieSB0aGUgbGFjayBvZiByZWdpc3RlciBmaWxlIHJlc291cmNlcy4KKyAgLy8KKyAgLy8gQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBjYW4gc2ltdWxhdGUgdXAgdG8gMzIgcmVnaXN0ZXIgZmlsZXMgKGluY2x1ZGluZyB0aGUKKyAgLy8gc3BlY2lhbCByZWdpc3RlciBmaWxlIGF0IGluZGV4ICMwKS4KKyAgdW5zaWduZWQgaXNBdmFpbGFibGUoQXJyYXlSZWY8dW5zaWduZWQ+IFJlZ3MpIGNvbnN0OworCisgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBQUkZzIGltcGxlbWVudGVkIGJ5IHRoaXMgcHJvY2Vzc29yLgorICB1bnNpZ25lZCBnZXROdW1SZWdpc3RlckZpbGVzKCkgY29uc3QgeyByZXR1cm4gUmVnaXN0ZXJGaWxlcy5zaXplKCk7IH0KKworICAvLyBOb3RpZnkgZWFjaCBQUkYgdGhhdCBhIG5ldyBjeWNsZSBqdXN0IHN0YXJ0ZWQuCisgIHZvaWQgY3ljbGVTdGFydCgpOworCisjaWZuZGVmIE5ERUJVRworICB2b2lkIGR1bXAoKSBjb25zdDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgbWNhCit9IC8vIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZiAvLyBMTFZNX01DQV9SRUdJU1RFUl9GSUxFX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUNBL0hhcmR3YXJlVW5pdHMvUmVzb3VyY2VNYW5hZ2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9IYXJkd2FyZVVuaXRzL1Jlc291cmNlTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZGRhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9IYXJkd2FyZVVuaXRzL1Jlc291cmNlTWFuYWdlci5oCkBAIC0wLDAgKzEsNDI1IEBACisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXNvdXJjZU1hbmFnZXIuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8vIFxmaWxlCisvLy8KKy8vLyBUaGUgY2xhc3NlcyBoZXJlIHJlcHJlc2VudCBwcm9jZXNzb3IgcmVzb3VyY2UgdW5pdHMgYW5kIHRoZWlyIG1hbmFnZW1lbnQKKy8vLyBzdHJhdGVneS4gIFRoZXNlIGNsYXNzZXMgYXJlIG1hbmFnZWQgYnkgdGhlIFNjaGVkdWxlci4KKy8vLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX01DQV9SRVNPVVJDRV9NQU5BR0VSX0gKKyNkZWZpbmUgTExWTV9NQ0FfUkVTT1VSQ0VfTUFOQUdFUl9ICisKKyNpbmNsdWRlICJsbHZtL0FEVC9BcnJheVJlZi5oIgorI2luY2x1ZGUgImxsdm0vQURUL0RlbnNlTWFwLmgiCisjaW5jbHVkZSAibGx2bS9BRFQvU21hbGxWZWN0b3IuaCIKKyNpbmNsdWRlICJsbHZtL01DL01DU2NoZWR1bGUuaCIKKyNpbmNsdWRlICJsbHZtL01DQS9JbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgImxsdm0vTUNBL1N1cHBvcnQuaCIKKworbmFtZXNwYWNlIGxsdm0geworbmFtZXNwYWNlIG1jYSB7CisKKy8vLyBVc2VkIHRvIG5vdGlmeSB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgYSBwcm9jZXNzb3IgcmVzb3VyY2UuCisvLy8KKy8vLyBBIHByb2Nlc3NvciByZXNvdXJjZSBpcyBhdmFpbGFibGUgaWYgaXQgaXMgbm90IHJlc2VydmVkLCBhbmQgdGhlcmUgYXJlCisvLy8gYXZhaWxhYmxlIHNsb3RzIGluIHRoZSBidWZmZXIuICBBIHByb2Nlc3NvciByZXNvdXJjZSBpcyB1bmF2YWlsYWJsZSBpZiBpdAorLy8vIGlzIGVpdGhlciByZXNlcnZlZCwgb3IgdGhlIGFzc29jaWF0ZWQgYnVmZmVyIGlzIGZ1bGwuIEEgcHJvY2Vzc29yIHJlc291cmNlCisvLy8gd2l0aCBhIGJ1ZmZlciBzaXplIG9mIC0xIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgaXQgaXMgbm90IHJlc2VydmVkLgorLy8vCisvLy8gVmFsdWVzIG9mIHR5cGUgUmVzb3VyY2VTdGF0ZUV2ZW50IGFyZSByZXR1cm5lZCBieSBtZXRob2QKKy8vLyBSZXNvdXJjZVN0YXRlOjppc0J1ZmZlckF2YWlsYWJsZSgpLCB3aGljaCBpcyB1c2VkIHRvIHF1ZXJ5IHRoZSBpbnRlcm5hbAorLy8vIHN0YXRlIG9mIGEgcmVzb3VyY2UuCisvLy8KKy8vLyBUaGUgbmFtaW5nIGNvbnZlbnRpb24gZm9yIHJlc291cmNlIHN0YXRlIGV2ZW50cyBpczoKKy8vLyAgKiBFdmVudCBuYW1lcyBzdGFydCB3aXRoIHByZWZpeCBSU18KKy8vLyAgKiBQcmVmaXggUlNfIGlzIGZvbGxvd2VkIGJ5IGEgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGFjdHVhbCByZXNvdXJjZSBzdGF0ZS4KK2VudW0gUmVzb3VyY2VTdGF0ZUV2ZW50IHsKKyAgUlNfQlVGRkVSX0FWQUlMQUJMRSwKKyAgUlNfQlVGRkVSX1VOQVZBSUxBQkxFLAorICBSU19SRVNFUlZFRAorfTsKKworLy8vIFJlc291cmNlIGFsbG9jYXRpb24gc3RyYXRlZ3kgdXNlZCBieSBoYXJkd2FyZSBzY2hlZHVsZXIgcmVzb3VyY2VzLgorY2xhc3MgUmVzb3VyY2VTdHJhdGVneSB7CisgIFJlc291cmNlU3RyYXRlZ3koY29uc3QgUmVzb3VyY2VTdHJhdGVneSAmKSA9IGRlbGV0ZTsKKyAgUmVzb3VyY2VTdHJhdGVneSAmb3BlcmF0b3I9KGNvbnN0IFJlc291cmNlU3RyYXRlZ3kgJikgPSBkZWxldGU7CisKK3B1YmxpYzoKKyAgUmVzb3VyY2VTdHJhdGVneSgpIHt9CisgIHZpcnR1YWwgflJlc291cmNlU3RyYXRlZ3koKTsKKworICAvLy8gU2VsZWN0cyBhIHByb2Nlc3NvciByZXNvdXJjZSB1bml0IGZyb20gYSBSZWFkeU1hc2suCisgIHZpcnR1YWwgdWludDY0X3Qgc2VsZWN0KHVpbnQ2NF90IFJlYWR5TWFzaykgPSAwOworCisgIC8vLyBDYWxsZWQgYnkgdGhlIFJlc291cmNlTWFuYWdlciB3aGVuIGEgcHJvY2Vzc29yIHJlc291cmNlIGdyb3VwLCBvciBhCisgIC8vLyBwcm9jZXNzb3IgcmVzb3VyY2Ugd2l0aCBtdWx0aXBsZSB1bml0cyBoYXMgYmVjb21lIHVuYXZhaWxhYmxlLgorICAvLy8KKyAgLy8vIFRoZSBkZWZhdWx0IHN0cmF0ZWd5IHVzZXMgdGhpcyBpbmZvcm1hdGlvbiB0byBiaWFzIGl0cyBzZWxlY3Rpb24gbG9naWMuCisgIHZpcnR1YWwgdm9pZCB1c2VkKHVpbnQ2NF90IFJlc291cmNlTWFzaykge30KK307CisKKy8vLyBEZWZhdWx0IHJlc291cmNlIGFsbG9jYXRpb24gc3RyYXRlZ3kgdXNlZCBieSBwcm9jZXNzb3IgcmVzb3VyY2UgZ3JvdXBzIGFuZAorLy8vIHByb2Nlc3NvciByZXNvdXJjZXMgd2l0aCBtdWx0aXBsZSB1bml0cy4KK2NsYXNzIERlZmF1bHRSZXNvdXJjZVN0cmF0ZWd5IGZpbmFsIDogcHVibGljIFJlc291cmNlU3RyYXRlZ3kgeworICAvLy8gQSBNYXNrIG9mIHJlc291cmNlIHVuaXQgaWRlbnRpZmllcnMuCisgIC8vLworICAvLy8gVGhlcmUgaXMgb25lIGJpdCBzZXQgZm9yIGV2ZXJ5IGF2YWlsYWJsZSByZXNvdXJjZSB1bml0LgorICAvLy8gSXQgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIGZpZWxkIFJlc291cmNlU2l6ZU1hc2sgaW4gUmVzb3VyY2VTdGF0ZS4KKyAgY29uc3QgdWludDY0X3QgUmVzb3VyY2VVbml0TWFzazsKKworICAvLy8gQSBzaW1wbGUgcm91bmQtcm9iaW4gc2VsZWN0b3IgZm9yIHByb2Nlc3NvciByZXNvdXJjZSB1bml0cy4KKyAgLy8vIEVhY2ggYml0IG9mIHRoaXMgbWFzayBpZGVudGlmaWVzIGEgc3ViIHJlc291cmNlIHdpdGhpbiBhIGdyb3VwLgorICAvLy8KKyAgLy8vIEFzIGFuIGV4YW1wbGUsIGxldHMgYXNzdW1lIHRoYXQgdGhpcyBpcyBhIGRlZmF1bHQgcG9saWN5IGZvciBhCisgIC8vLyBwcm9jZXNzb3IgcmVzb3VyY2UgZ3JvdXAgY29tcG9zZWQgYnkgdGhlIGZvbGxvd2luZyB0aHJlZSB1bml0czoKKyAgLy8vICAgUmVzb3VyY2VBIC0tIDBiMDAxCisgIC8vLyAgIFJlc291cmNlQiAtLSAwYjAxMAorICAvLy8gICBSZXNvdXJjZUMgLS0gMGIxMDAKKyAgLy8vCisgIC8vLyBGaWVsZCBOZXh0SW5TZXF1ZW5jZU1hc2sgaXMgdXNlZCB0byBzZWxlY3QgdGhlIG5leHQgdW5pdCBmcm9tIHRoZSBzZXQgb2YKKyAgLy8vIHJlc291cmNlIHVuaXRzLiBJdCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgZmllbGQgYFJlc291cmNlVW5pdE1hc2tzYCAoaW4KKyAgLy8vIHRoaXMgZXhhbXBsZSwgaXQgZGVmYXVsdHMgdG8gbWFzayAnMGIxMTEnKS4KKyAgLy8vCisgIC8vLyBUaGUgcm91bmQtcm9iaW4gc2VsZWN0b3Igd291bGQgZmlyc3RseSBzZWxlY3QgJ1Jlc291cmNlQycsIHRoZW4KKyAgLy8vICdSZXNvdXJjZUInLCBhbmQgZXZlbnR1YWxseSAnUmVzb3VyY2VBJy4gIFdoZW4gYSByZXNvdXJjZSBSIGlzIHVzZWQsIHRoZQorICAvLy8gY29ycmVzcG9uZGluZyBiaXQgaW4gTmV4dEluU2VxdWVuY2VNYXNrIGlzIGNsZWFyZWQuICBGb3IgZXhhbXBsZSwgaWYKKyAgLy8vICdSZXNvdXJjZUMnIGlzIHNlbGVjdGVkLCB0aGVuIHRoZSBuZXcgdmFsdWUgb2YgTmV4dEluU2VxdWVuY2VNYXNrIGJlY29tZXMKKyAgLy8vIDB4YjAxMS4KKyAgLy8vCisgIC8vLyBXaGVuIE5leHRJblNlcXVlbmNlTWFzayBiZWNvbWVzIHplcm8sIGl0IGlzIGF1dG9tYXRpY2FsbHkgcmVzZXQgdG8gdGhlCisgIC8vLyBkZWZhdWx0IHZhbHVlIChpLmUuIFJlc291cmNlVW5pdE1hc2spLgorICB1aW50NjRfdCBOZXh0SW5TZXF1ZW5jZU1hc2s7CisKKyAgLy8vIFRoaXMgZmllbGQgaXMgdXNlZCB0byB0cmFjayByZXNvdXJjZSB1bml0cyB0aGF0IGFyZSB1c2VkIChpLmUuIHNlbGVjdGVkKQorICAvLy8gYnkgb3RoZXIgZ3JvdXBzIG90aGVyIHRoYW4gdGhlIG9uZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdHJhdGVneSBvYmplY3QuCisgIC8vLworICAvLy8gSW4gTExWTSBwcm9jZXNzb3IgcmVzb3VyY2UgZ3JvdXBzIGFyZSBhbGxvd2VkIHRvIHBhcnRpYWxseSAob3IgZnVsbHkpCisgIC8vLyBvdmVybGFwLiBUaGF0IG1lYW5zLCBhIHNhbWUgdW5pdCBtYXkgYmUgdmlzaWJsZSB0byBtdWx0aXBsZSBncm91cHMuCisgIC8vLyBUaGlzIGZpZWxkIGtlZXBzIHRyYWNrIG9mIHVzZXMgdGhhdCBoYXZlIG9yaWdpbmF0ZWQgZnJvbSBvdXRzaWRlIG9mCisgIC8vLyB0aGlzIGdyb3VwLiBUaGUgaWRlYSBpcyB0byBiaWFzIHRoZSBzZWxlY3Rpb24gc3RyYXRlZ3ksIHNvIHRoYXQgcmVzb3VyY2VzCisgIC8vLyB0aGF0IGhhdmVuJ3QgYmVlbiB1c2VkIGJ5IG90aGVyIGdyb3VwcyBnZXQgcHJpb3JpdGl6ZWQuCisgIC8vLworICAvLy8gVGhlIGVuZCBnb2FsIGlzIHRvICh0cnkgdG8pIGtlZXAgdGhlIHJlc291cmNlIGRpc3RyaWJ1dGlvbiBhcyBtdWNoIHVuaWZvcm0KKyAgLy8vIGFzIHBvc3NpYmxlLiBCeSBjb25zdHJ1Y3Rpb24sIHRoaXMgbWFzayBvbmx5IHRyYWNrcyBvbmUtbGV2ZWwgb2YgcmVzb3VyY2UKKyAgLy8vIHVzYWdlLiBUaGVyZWZvcmUsIHRoaXMgc3RyYXRlZ3kgaXMgZXhwZWN0ZWQgdG8gYmUgbGVzcyBhY2N1cmF0ZSB3aGVuIHNhbWUKKyAgLy8vIHVuaXRzIGFyZSB1c2VkIG11bHRpcGxlIHRpbWVzIGJ5IG90aGVyIGdyb3VwcyB3aXRoaW4gYSBzaW5nbGUgcm91bmQgb2YKKyAgLy8vIHNlbGVjdC4KKyAgLy8vCisgIC8vLyBOb3RlOiBhbiBMUlUgc2VsZWN0b3Igd291bGQgaGF2ZSBhIGJldHRlciBhY2N1cmFjeSBhdCB0aGUgY29zdCBvZiBiZWluZworICAvLy8gc2xpZ2h0bHkgbW9yZSBleHBlbnNpdmUgKG1vc3RseSBpbiB0ZXJtcyBvZiBydW50aW1lIGNvc3QpLiBNZXRob2RzCisgIC8vLyAnc2VsZWN0JyBhbmQgJ3VzZWQnLCBhcmUgYWx3YXlzIGluIHRoZSBob3QgZXhlY3V0aW9uIHBhdGggb2YgbGx2bS1tY2EuCisgIC8vLyBUaGVyZWZvcmUsIGEgc2xvdyBpbXBsZW1lbnRhdGlvbiBvZiAnc2VsZWN0JyB3b3VsZCBoYXZlIGEgbmVnYXRpdmUgaW1wYWN0CisgIC8vLyBvbiB0aGUgb3ZlcmFsbCBwZXJmb3JtYW5jZSBvZiB0aGUgdG9vbC4KKyAgdWludDY0X3QgUmVtb3ZlZEZyb21OZXh0SW5TZXF1ZW5jZTsKKworcHVibGljOgorICBEZWZhdWx0UmVzb3VyY2VTdHJhdGVneSh1aW50NjRfdCBVbml0TWFzaykKKyAgICAgIDogUmVzb3VyY2VTdHJhdGVneSgpLCBSZXNvdXJjZVVuaXRNYXNrKFVuaXRNYXNrKSwKKyAgICAgICAgTmV4dEluU2VxdWVuY2VNYXNrKFVuaXRNYXNrKSwgUmVtb3ZlZEZyb21OZXh0SW5TZXF1ZW5jZSgwKSB7fQorICB2aXJ0dWFsIH5EZWZhdWx0UmVzb3VyY2VTdHJhdGVneSgpID0gZGVmYXVsdDsKKworICB1aW50NjRfdCBzZWxlY3QodWludDY0X3QgUmVhZHlNYXNrKSBvdmVycmlkZTsKKyAgdm9pZCB1c2VkKHVpbnQ2NF90IE1hc2spIG92ZXJyaWRlOworfTsKKworLy8vIEEgcHJvY2Vzc29yIHJlc291cmNlIGRlc2NyaXB0b3IuCisvLy8KKy8vLyBUaGVyZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGZvciBldmVyeSBwcm9jZXNzb3IgcmVzb3VyY2UgZGVmaW5lZCBieQorLy8vIHRoZSBtYWNoaW5lIHNjaGVkdWxpbmcgbW9kZWwuCisvLy8gT2JqZWN0cyBvZiBjbGFzcyBSZXNvdXJjZVN0YXRlIGR5bmFtaWNhbGx5IHRyYWNrIHRoZSB1c2FnZSBvZiBwcm9jZXNzb3IKKy8vLyByZXNvdXJjZSB1bml0cy4KK2NsYXNzIFJlc291cmNlU3RhdGUgeworICAvLy8gQW4gaW5kZXggdG8gdGhlIE1DUHJvY1Jlc291cmNlRGVzYyBlbnRyeSBpbiB0aGUgcHJvY2Vzc29yIG1vZGVsLgorICBjb25zdCB1bnNpZ25lZCBQcm9jUmVzb3VyY2VEZXNjSW5kZXg7CisgIC8vLyBBIHJlc291cmNlIG1hc2suIFRoaXMgaXMgZ2VuZXJhdGVkIGJ5IHRoZSB0b29sIHdpdGggdGhlIGhlbHAgb2YKKyAgLy8vIGZ1bmN0aW9uIGBtY2E6OmNvbXB1dGVQcm9jUmVzb3VyY2VNYXNrcycgKHNlZSBTdXBwb3J0LmgpLgorICAvLy8KKyAgLy8vIEZpZWxkIFJlc291cmNlTWFzayBvbmx5IGhhcyBvbmUgYml0IHNldCBpZiB0aGlzIHJlc291cmNlIHN0YXRlIGRlc2NyaWJlcyBhCisgIC8vLyBwcm9jZXNzb3IgcmVzb3VyY2UgdW5pdCAoaS5lLiB0aGlzIGlzIG5vdCBhIGdyb3VwKS4gVGhhdCBtZWFucywgd2UgY2FuCisgIC8vLyBxdWlja2x5IGNoZWNrIGlmIGEgcmVzb3VyY2UgaXMgYSBncm91cCBieSBzaW1wbHkgY291bnRpbmcgdGhlIG51bWJlciBvZgorICAvLy8gYml0cyB0aGF0IGFyZSBzZXQgaW4gdGhlIG1hc2suCisgIC8vLworICAvLy8gVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IG9mIGEgbWFzayAoTVNCKSB1bmlxdWVseSBpZGVudGlmaWVzIGEgcmVzb3VyY2UuCisgIC8vLyBSZW1haW5pbmcgYml0cyBhcmUgdXNlZCB0byBkZXNjcmliZSB0aGUgY29tcG9zaXRpb24gb2YgYSBncm91cCAoR3JvdXApLgorICAvLy8KKyAgLy8vIEV4YW1wbGUgKGxpdHRsZSBlbmRpYW4pOgorICAvLy8gICAgICAgICAgICBSZXNvdXJjZSB8ICBNYXNrICAgICAgfCAgTVNCICAgICAgIHwgIEdyb3VwCisgIC8vLyAgICAgICAgICAgIC0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAvLy8gICAgICAgICAgICBBICAgICAgICB8ICAwYjAwMDAwMSAgfCAgMGIwMDAwMDEgIHwgIDBiMDAwMDAwCisgIC8vLyAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgfAorICAvLy8gICAgICAgICAgICBCICAgICAgICB8ICAwYjAwMDAxMCAgfCAgMGIwMDAwMTAgIHwgIDBiMDAwMDAwCisgIC8vLyAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgfAorICAvLy8gICAgICAgICAgICBDICAgICAgICB8ICAwYjAxMDAwMCAgfCAgMGIwMTAwMDAgIHwgIDBiMDAwMDAwCisgIC8vLyAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAgICAgICAgfAorICAvLy8gICAgICAgICAgICBEICAgICAgICB8ICAwYjExMDAxMCAgfCAgMGIxMDAwMDAgIHwgIDBiMDEwMDEwCisgIC8vLworICAvLy8gSW4gdGhpcyBleGFtcGxlLCByZXNvdXJjZXMgQSwgQiBhbmQgQyBhcmUgcHJvY2Vzc29yIHJlc291cmNlIHVuaXRzLgorICAvLy8gT25seSByZXNvdXJjZSBEIGlzIGEgZ3JvdXAgcmVzb3VyY2UsIGFuZCBpdCBjb250YWlucyByZXNvdXJjZXMgQiBhbmQgQy4KKyAgLy8vIFRoYXQgaXMgYmVjYXVzZSBNU0IoQikgYW5kIE1TQihDKSBhcmUgYm90aCBjb250YWluZWQgd2l0aGluIEdyb3VwKEQpLgorICBjb25zdCB1aW50NjRfdCBSZXNvdXJjZU1hc2s7CisKKyAgLy8vIEEgUHJvY1Jlc291cmNlIGNhbiBoYXZlIG11bHRpcGxlIHVuaXRzLgorICAvLy8KKyAgLy8vIEZvciBwcm9jZXNzb3IgcmVzb3VyY2UgZ3JvdXBzIHRoaXMgZmllbGQgaXMgYSBtYXNrIG9mIGNvbnRhaW5lZCByZXNvdXJjZQorICAvLy8gdW5pdHMuIEl0IGlzIG9idGFpbmVkIGZyb20gUmVzb3VyY2VNYXNrIGJ5IGNsZWFyaW5nIHRoZSBoaWdoZXN0IHNldCBiaXQuCisgIC8vLyBUaGUgbnVtYmVyIG9mIHJlc291cmNlIHVuaXRzIGluIGEgZ3JvdXAgY2FuIGJlIHNpbXBseSBjb21wdXRlZCBhcyB0aGUKKyAgLy8vIHBvcHVsYXRpb24gY291bnQgb2YgdGhpcyBmaWVsZC4KKyAgLy8vCisgIC8vLyBGb3Igbm9ybWFsIChpLmUuIG5vbi1ncm91cCkgcmVzb3VyY2VzLCB0aGUgbnVtYmVyIG9mIGJpdHMgc2V0IGluIHRoaXMgbWFzaworICAvLy8gaXMgZXF1aXZhbGVudCB0byB0aGUgbnVtYmVyIG9mIHVuaXRzIGRlY2xhcmVkIGJ5IHRoZSBwcm9jZXNzb3IgbW9kZWwgKHNlZQorICAvLy8gZmllbGQgJ051bVVuaXRzJyBpbiAnUHJvY1Jlc291cmNlVW5pdHMnKS4KKyAgdWludDY0X3QgUmVzb3VyY2VTaXplTWFzazsKKworICAvLy8gQSBtYXNrIG9mIHJlYWR5IHVuaXRzLgorICB1aW50NjRfdCBSZWFkeU1hc2s7CisKKyAgLy8vIEJ1ZmZlcmVkIHJlc291cmNlcyB3aWxsIGhhdmUgdGhpcyBmaWVsZCBzZXQgdG8gYSBwb3NpdGl2ZSBudW1iZXIgZGlmZmVyZW50CisgIC8vLyB0aGFuIHplcm8uIEEgYnVmZmVyZWQgcmVzb3VyY2UgYmVoYXZlcyBsaWtlIGEgcmVzZXJ2YXRpb24gc3RhdGlvbgorICAvLy8gaW1wbGVtZW50aW5nIGl0cyBvd24gYnVmZmVyIGZvciBvdXQtb2Ytb3JkZXIgZXhlY3V0aW9uLgorICAvLy8KKyAgLy8vIEEgQnVmZmVyU2l6ZSBvZiAxIGlzIHVzZWQgYnkgc2NoZWR1bGVyIHJlc291cmNlcyB0aGF0IGZvcmNlIGluLW9yZGVyCisgIC8vLyBleGVjdXRpb24uCisgIC8vLworICAvLy8gQSBCdWZmZXJTaXplIG9mIDAgaXMgdXNlZCB0byBtb2RlbCBpbi1vcmRlciBpc3N1ZS9kaXNwYXRjaCByZXNvdXJjZXMuCisgIC8vLyBTaW5jZSBpbi1vcmRlciBpc3N1ZS9kaXNwYXRjaCByZXNvdXJjZXMgZG9uJ3QgaW1wbGVtZW50IGJ1ZmZlcnMsIGRpc3BhdGNoCisgIC8vLyBldmVudHMgY29pbmNpZGUgd2l0aCBpc3N1ZSBldmVudHMuCisgIC8vLyBBbHNvLCBubyBvdGhlciBpbnN0cnVjdGlvbiBjYSBiZSBkaXNwYXRjaGVkL2lzc3VlIHdoaWxlIHRoaXMgcmVzb3VyY2UgaXMKKyAgLy8vIGluIHVzZS4gT25seSB3aGVuIGFsbCB0aGUgInJlc291cmNlIGN5Y2xlcyIgYXJlIGNvbnN1bWVkIChhZnRlciB0aGUgaXNzdWUKKyAgLy8vIGV2ZW50KSwgYSBuZXcgaW5zdHJ1Y3Rpb24gY2EgYmUgZGlzcGF0Y2hlZC4KKyAgY29uc3QgaW50IEJ1ZmZlclNpemU7CisKKyAgLy8vIEF2YWlsYWJsZSBzbG90cyBpbiB0aGUgYnVmZmVyICh6ZXJvLCBpZiB0aGlzIGlzIG5vdCBhIGJ1ZmZlcmVkIHJlc291cmNlKS4KKyAgdW5zaWduZWQgQXZhaWxhYmxlU2xvdHM7CisKKyAgLy8vIFRoaXMgZmllbGQgaXMgc2V0IGlmIHRoaXMgcmVzb3VyY2UgaXMgY3VycmVudGx5IHJlc2VydmVkLgorICAvLy8KKyAgLy8vIFJlc291cmNlcyBjYW4gYmUgcmVzZXJ2ZWQgZm9yIGEgbnVtYmVyIG9mIGN5Y2xlcy4KKyAgLy8vIEluc3RydWN0aW9ucyBjYW4gc3RpbGwgYmUgZGlzcGF0Y2hlZCB0byByZXNlcnZlZCByZXNvdXJjZXMuIEhvd2V2ZXIsCisgIC8vLyBpc3RydWN0aW9ucyBkaXNwYXRjaGVkIHRvIGEgcmVzZXJ2ZWQgcmVzb3VyY2UgY2Fubm90IGJlIGlzc3VlZCB0byB0aGUKKyAgLy8vIHVuZGVybHlpbmcgdW5pdHMgKGkuZS4gcGlwZWxpbmVzKSB1bnRpbCB0aGUgcmVzb3VyY2UgaXMgcmVsZWFzZWQuCisgIGJvb2wgVW5hdmFpbGFibGU7CisKKyAgY29uc3QgYm9vbCBJc0FHcm91cDsKKworICAvLy8gQ2hlY2tzIGZvciB0aGUgYXZhaWxhYmlsaXR5IG9mIHVuaXQgJ1N1YlJlc01hc2snIGluIHRoZSBncm91cC4KKyAgYm9vbCBpc1N1YlJlc291cmNlUmVhZHkodWludDY0X3QgU3ViUmVzTWFzaykgY29uc3QgeworICAgIHJldHVybiBSZWFkeU1hc2sgJiBTdWJSZXNNYXNrOworICB9CisKK3B1YmxpYzoKKyAgUmVzb3VyY2VTdGF0ZShjb25zdCBNQ1Byb2NSZXNvdXJjZURlc2MgJkRlc2MsIHVuc2lnbmVkIEluZGV4LCB1aW50NjRfdCBNYXNrKTsKKworICB1bnNpZ25lZCBnZXRQcm9jUmVzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIFByb2NSZXNvdXJjZURlc2NJbmRleDsgfQorICB1aW50NjRfdCBnZXRSZXNvdXJjZU1hc2soKSBjb25zdCB7IHJldHVybiBSZXNvdXJjZU1hc2s7IH0KKyAgdWludDY0X3QgZ2V0UmVhZHlNYXNrKCkgY29uc3QgeyByZXR1cm4gUmVhZHlNYXNrOyB9CisgIGludCBnZXRCdWZmZXJTaXplKCkgY29uc3QgeyByZXR1cm4gQnVmZmVyU2l6ZTsgfQorCisgIGJvb2wgaXNCdWZmZXJlZCgpIGNvbnN0IHsgcmV0dXJuIEJ1ZmZlclNpemUgPiAwOyB9CisgIGJvb2wgaXNJbk9yZGVyKCkgY29uc3QgeyByZXR1cm4gQnVmZmVyU2l6ZSA9PSAxOyB9CisKKyAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGFuIGluLW9yZGVyIGRpc3BhdGNoL2lzc3VlIHJlc291cmNlLgorICBib29sIGlzQURpc3BhdGNoSGF6YXJkKCkgY29uc3QgeyByZXR1cm4gQnVmZmVyU2l6ZSA9PSAwOyB9CisgIGJvb2wgaXNSZXNlcnZlZCgpIGNvbnN0IHsgcmV0dXJuIFVuYXZhaWxhYmxlOyB9CisKKyAgdm9pZCBzZXRSZXNlcnZlZCgpIHsgVW5hdmFpbGFibGUgPSB0cnVlOyB9CisgIHZvaWQgY2xlYXJSZXNlcnZlZCgpIHsgVW5hdmFpbGFibGUgPSBmYWxzZTsgfQorCisgIC8vLyBSZXR1cnMgdHJ1ZSBpZiB0aGlzIHJlc291cmNlIGlzIG5vdCByZXNlcnZlZCwgYW5kIGlmIHRoZXJlIGFyZSBhdCBsZWFzdAorICAvLy8gYE51bVVuaXRzYCBhdmFpbGFibGUgdW5pdHMuCisgIGJvb2wgaXNSZWFkeSh1bnNpZ25lZCBOdW1Vbml0cyA9IDEpIGNvbnN0OworCisgIGJvb2wgaXNBUmVzb3VyY2VHcm91cCgpIGNvbnN0IHsgcmV0dXJuIElzQUdyb3VwOyB9CisKKyAgYm9vbCBjb250YWluc1Jlc291cmNlKHVpbnQ2NF90IElEKSBjb25zdCB7IHJldHVybiBSZXNvdXJjZU1hc2sgJiBJRDsgfQorCisgIHZvaWQgbWFya1N1YlJlc291cmNlQXNVc2VkKHVpbnQ2NF90IElEKSB7CisgICAgYXNzZXJ0KGlzU3ViUmVzb3VyY2VSZWFkeShJRCkpOworICAgIFJlYWR5TWFzayBePSBJRDsKKyAgfQorCisgIHZvaWQgcmVsZWFzZVN1YlJlc291cmNlKHVpbnQ2NF90IElEKSB7CisgICAgYXNzZXJ0KCFpc1N1YlJlc291cmNlUmVhZHkoSUQpKTsKKyAgICBSZWFkeU1hc2sgXj0gSUQ7CisgIH0KKworICB1bnNpZ25lZCBnZXROdW1Vbml0cygpIGNvbnN0IHsKKyAgICByZXR1cm4gaXNBUmVzb3VyY2VHcm91cCgpID8gMVUgOiBjb3VudFBvcHVsYXRpb24oUmVzb3VyY2VTaXplTWFzayk7CisgIH0KKworICAvLy8gQ2hlY2tzIGlmIHRoZXJlIGlzIGFuIGF2YWlsYWJsZSBzbG90IGluIHRoZSByZXNvdXJjZSBidWZmZXIuCisgIC8vLworICAvLy8gUmV0dXJucyBSU19CVUZGRVJfQVZBSUxBQkxFIGlmIHRoaXMgaXMgbm90IGEgYnVmZmVyZWQgcmVzb3VyY2UsIG9yIGlmCisgIC8vLyB0aGVyZSBpcyBhIHNsb3QgYXZhaWxhYmxlLgorICAvLy8KKyAgLy8vIFJldHVybnMgUlNfUkVTRVJWRUQgaWYgdGhpcyBidWZmZXJlZCByZXNvdXJjZSBpcyBhIGRpc3BhdGNoIGhhemFyZCwgYW5kIGl0CisgIC8vLyBpcyByZXNlcnZlZC4KKyAgLy8vCisgIC8vLyBSZXR1cm5zIFJTX0JVRkZFUl9VTkFWQUlMQUJMRSBpZiB0aGVyZSBhcmUgbm8gYXZhaWxhYmxlIHNsb3RzLgorICBSZXNvdXJjZVN0YXRlRXZlbnQgaXNCdWZmZXJBdmFpbGFibGUoKSBjb25zdDsKKworICAvLy8gUmVzZXJ2ZSBhIHNsb3QgaW4gdGhlIGJ1ZmZlci4KKyAgdm9pZCByZXNlcnZlQnVmZmVyKCkgeworICAgIGlmIChBdmFpbGFibGVTbG90cykKKyAgICAgIEF2YWlsYWJsZVNsb3RzLS07CisgIH0KKworICAvLy8gUmVsZWFzZSBhIHNsb3QgaW4gdGhlIGJ1ZmZlci4KKyAgdm9pZCByZWxlYXNlQnVmZmVyKCkgeworICAgIGlmIChCdWZmZXJTaXplID4gMCkKKyAgICAgIEF2YWlsYWJsZVNsb3RzKys7CisgICAgYXNzZXJ0KEF2YWlsYWJsZVNsb3RzIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihCdWZmZXJTaXplKSk7CisgIH0KKworI2lmbmRlZiBOREVCVUcKKyAgdm9pZCBkdW1wKCkgY29uc3Q7CisjZW5kaWYKK307CisKKy8vLyBBIHJlc291cmNlIHVuaXQgaWRlbnRpZmllci4KKy8vLworLy8vIFRoaXMgaXMgdXNlZCB0byBpZGVudGlmeSBhIHNwZWNpZmljIHByb2Nlc3NvciByZXNvdXJjZSB1bml0IHVzaW5nIGEgcGFpcgorLy8vIG9mIGluZGljZXMgd2hlcmUgdGhlICdmaXJzdCcgaW5kZXggaXMgYSBwcm9jZXNzb3IgcmVzb3VyY2UgbWFzaywgYW5kIHRoZQorLy8vICdzZWNvbmQnIGluZGV4IGlzIGFuIGluZGV4IGZvciBhICJzdWItcmVzb3VyY2UiIChpLmUuIHVuaXQpLgordHlwZWRlZiBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBSZXNvdXJjZVJlZjsKKworLy8gRmlyc3Q6IGEgTUNQcm9jUmVzb3VyY2VEZXNjIGluZGV4IGlkZW50aWZ5aW5nIGEgYnVmZmVyZWQgcmVzb3VyY2UuCisvLyBTZWNvbmQ6IG1heCBudW1iZXIgb2YgYnVmZmVyIGVudHJpZXMgdXNlZCBpbiB0aGlzIHJlc291cmNlLgordHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiBCdWZmZXJVc2FnZUVudHJ5OworCisvLy8gQSByZXNvdXJjZSBtYW5hZ2VyIGZvciBwcm9jZXNzb3IgcmVzb3VyY2UgdW5pdHMgYW5kIGdyb3Vwcy4KKy8vLworLy8vIFRoaXMgY2xhc3Mgb3ducyBhbGwgdGhlIFJlc291cmNlU3RhdGUgb2JqZWN0cywgYW5kIGl0IGlzIHJlc3BvbnNpYmxlIGZvcgorLy8vIGFjdGluZyBvbiByZXF1ZXN0cyBmcm9tIGEgU2NoZWR1bGVyIGJ5IHVwZGF0aW5nIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZgorLy8vIFJlc291cmNlU3RhdGUgb2JqZWN0cy4KKy8vLyBUaGlzIGNsYXNzIGRvZXNuJ3Qga25vdyBhYm91dCBpbnN0cnVjdGlvbiBpdGluZXJhcmllcyBhbmQgZnVuY3Rpb25hbCB1bml0cy4KKy8vLyBJbiBmdXR1cmUsIGl0IGNhbiBiZSBleHRlbmRlZCB0byBzdXBwb3J0IGl0aW5lcmFyaWVzIHRvbyB0aHJvdWdoIHRoZSBzYW1lCisvLy8gcHVibGljIGludGVyZmFjZS4KK2NsYXNzIFJlc291cmNlTWFuYWdlciB7CisgIC8vIFNldCBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIG9uIHRoZSBzdWJ0YXJnZXQuCisgIC8vCisgIC8vIFRoZXJlIGlzIGFuIGluc3RhbmNlIG9mIFJlc291cmNlU3RhdGUgZm9yIGV2ZXJ5IHJlc291cmNlIGRlY2xhcmVkIGJ5IHRoZQorICAvLyB0YXJnZXQgc2NoZWR1bGluZyBtb2RlbC4KKyAgLy8KKyAgLy8gRWxlbWVudHMgb2YgdGhpcyB2ZWN0b3IgYXJlIG9yZGVyZWQgYnkgcmVzb3VyY2Uga2luZC4gSW4gcGFydGljdWxhciwKKyAgLy8gcmVzb3VyY2UgdW5pdHMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcmVzb3VyY2UgZ3JvdXBzLgorICAvLworICAvLyBUaGUgaW5kZXggb2YgYSBwcm9jZXNzb3IgcmVzb3VyY2UgaW4gdGhpcyB2ZWN0b3IgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YKKyAgLy8gaXRzIG1hc2sgKHNlZSB0aGUgZGVzY3JpcHRpb24gb2YgZmllbGQgUmVzb3VyY2VTdGF0ZTo6UmVzb3VyY2VNYXNrKS4gIEluCisgIC8vIHBhcnRpY3VsYXIsIGl0IGlzIGNvbXB1dGVkIGFzIHRoZSBwb3NpdGlvbiBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgc2V0CisgIC8vIChNU0IpIGluIHRoZSBtYXNrIHBsdXMgb25lIChzaW5jZSB3ZSB3YW50IHRvIGlnbm9yZSB0aGUgaW52YWxpZCByZXNvdXJjZQorICAvLyBkZXNjcmlwdG9yIGF0IGluZGV4IHplcm8pLgorICAvLworICAvLyBFeGFtcGxlIChsaXR0bGUgZW5kaWFuKToKKyAgLy8KKyAgLy8gICAgICAgICAgICAgUmVzb3VyY2UgfCBNYXNrICAgIHwgIE1TQiAgICB8IEluZGV4CisgIC8vICAgICAgICAgICAgIC0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyAgLy8gICAgICAgICAgICAgICAgIEEgICAgfCAwYjAwMDAxIHwgMGIwMDAwMSB8ICAgMQorICAvLyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwKKyAgLy8gICAgICAgICAgICAgICAgIEIgICAgfCAwYjAwMTAwIHwgMGIwMDEwMCB8ICAgMworICAvLyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwKKyAgLy8gICAgICAgICAgICAgICAgIEMgICAgfCAwYjEwMDEwIHwgMGIxMDAwMCB8ICAgNQorICAvLworICAvLworICAvLyBUaGUgc2FtZSBpbmRleCBpcyBhbHNvIHVzZWQgdG8gYWRkcmVzcyBlbGVtZW50cyB3aXRoaW4gdmVjdG9yIGBTdHJhdGVnaWVzYAorICAvLyBhbmQgdmVjdG9yIGBSZXNvdXJjZTJHcm91cHNgLgorICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VTdGF0ZT4+IFJlc291cmNlczsKKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFJlc291cmNlU3RyYXRlZ3k+PiBTdHJhdGVnaWVzOworCisgIC8vIFVzZWQgdG8gcXVpY2tseSBpZGVudGlmeSBncm91cHMgdGhhdCBvd24gYSBwYXJ0aWN1bGFyIHJlc291cmNlIHVuaXQuCisgIHN0ZDo6dmVjdG9yPHVpbnQ2NF90PiBSZXNvdXJjZTJHcm91cHM7CisKKyAgLy8gQSB0YWJsZSB0byBtYXAgcHJvY2Vzc29yIHJlc291cmNlIElEcyB0byBwcm9jZXNzb3IgcmVzb3VyY2UgbWFza3MuCisgIFNtYWxsVmVjdG9yPHVpbnQ2NF90LCA4PiBQcm9jUmVzSUQyTWFzazsKKworICAvLyBLZWVwcyB0cmFjayBvZiB3aGljaCByZXNvdXJjZXMgYXJlIGJ1c3ksIGFuZCBob3cgbWFueSBjeWNsZXMgYXJlIGxlZnQKKyAgLy8gYmVmb3JlIHRob3NlIGJlY29tZSB1c2FibGUgYWdhaW4uCisgIFNtYWxsRGVuc2VNYXA8UmVzb3VyY2VSZWYsIHVuc2lnbmVkPiBCdXN5UmVzb3VyY2VzOworCisgIC8vIFNldCBvZiBwcm9jZXNzb3IgcmVzb3VyY2UgdW5pdHMgYXZhaWxhYmxlIG9uIHRoZSB0YXJnZXQuCisgIHVpbnQ2NF90IFByb2NSZXNVbml0TWFzazsKKworICAvLyBTZXQgb2YgcHJvY2Vzc29yIHJlc291cmNlIHVuaXRzIHRoYXQgYXJlIGF2YWlsYWJsZSBkdXJpbmcgdGhpcyBjeWNsZS4KKyAgdWludDY0X3QgQXZhaWxhYmxlUHJvY1Jlc1VuaXRzOworCisgIC8vIFNldCBvZiBwcm9jZXNzb3IgcmVzb3VyY2UgZ3JvdXBzIHRoYXQgYXJlIGN1cnJlbnRseSByZXNlcnZlZC4KKyAgdWludDY0X3QgUmVzZXJ2ZWRSZXNvdXJjZUdyb3VwczsKKworICAvLyBSZXR1cm5zIHRoZSBhY3R1YWwgcmVzb3VyY2UgdW5pdCB0aGF0IHdpbGwgYmUgdXNlZC4KKyAgUmVzb3VyY2VSZWYgc2VsZWN0UGlwZSh1aW50NjRfdCBSZXNvdXJjZUlEKTsKKworICB2b2lkIHVzZShjb25zdCBSZXNvdXJjZVJlZiAmUlIpOworICB2b2lkIHJlbGVhc2UoY29uc3QgUmVzb3VyY2VSZWYgJlJSKTsKKworICB1bnNpZ25lZCBnZXROdW1Vbml0cyh1aW50NjRfdCBSZXNvdXJjZUlEKSBjb25zdDsKKworICAvLyBPdmVycmlkZXMgdGhlIHNlbGVjdGlvbiBzdHJhdGVneSBmb3IgdGhlIHByb2Nlc3NvciByZXNvdXJjZSB3aXRoIHRoZSBnaXZlbgorICAvLyBtYXNrLgorICB2b2lkIHNldEN1c3RvbVN0cmF0ZWd5SW1wbChzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VTdHJhdGVneT4gUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgUmVzb3VyY2VNYXNrKTsKKworcHVibGljOgorICBSZXNvdXJjZU1hbmFnZXIoY29uc3QgTUNTY2hlZE1vZGVsICZTTSk7CisgIHZpcnR1YWwgflJlc291cmNlTWFuYWdlcigpID0gZGVmYXVsdDsKKworICAvLyBPdmVycmlkZXMgdGhlIHNlbGVjdGlvbiBzdHJhdGVneSBmb3IgdGhlIHJlc291cmNlIGF0IGluZGV4IFJlc291cmNlSUQgaW4KKyAgLy8gdGhlIE1DUHJvY1Jlc291cmNlRGVzYyB0YWJsZS4KKyAgdm9pZCBzZXRDdXN0b21TdHJhdGVneShzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VTdHJhdGVneT4gUywKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBSZXNvdXJjZUlEKSB7CisgICAgYXNzZXJ0KFJlc291cmNlSUQgPCBQcm9jUmVzSUQyTWFzay5zaXplKCkgJiYKKyAgICAgICAgICAgIkludmFsaWQgcmVzb3VyY2UgaW5kZXggaW4gaW5wdXQhIik7CisgICAgcmV0dXJuIHNldEN1c3RvbVN0cmF0ZWd5SW1wbChzdGQ6Om1vdmUoUyksIFByb2NSZXNJRDJNYXNrW1Jlc291cmNlSURdKTsKKyAgfQorCisgIC8vIFJldHVybnMgUlNfQlVGRkVSX0FWQUlMQUJMRSBpZiBidWZmZXJlZCByZXNvdXJjZXMgYXJlIG5vdCByZXNlcnZlZCwgYW5kIGlmCisgIC8vIHRoZXJlIGFyZSBlbm91Z2ggYXZhaWxhYmxlIHNsb3RzIGluIHRoZSBidWZmZXJzLgorICBSZXNvdXJjZVN0YXRlRXZlbnQgY2FuQmVEaXNwYXRjaGVkKEFycmF5UmVmPHVpbnQ2NF90PiBCdWZmZXJzKSBjb25zdDsKKworICAvLyBSZXR1cm4gdGhlIHByb2Nlc3NvciByZXNvdXJjZSBpZGVudGlmaWVyIGFzc29jaWF0ZWQgdG8gdGhpcyBNYXNrLgorICB1bnNpZ25lZCByZXNvbHZlUmVzb3VyY2VNYXNrKHVpbnQ2NF90IE1hc2spIGNvbnN0OworCisgIC8vIENvbnN1bWUgYSBzbG90IGluIGV2ZXJ5IGJ1ZmZlcmVkIHJlc291cmNlIGZyb20gYXJyYXkgJ0J1ZmZlcnMnLiBSZXNvdXJjZQorICAvLyB1bml0cyB0aGF0IGFyZSBkaXNwYXRjaCBoYXphcmRzIChpLmUuIEJ1ZmZlclNpemU9MCkgYXJlIG1hcmtlZCBhcyByZXNlcnZlZC4KKyAgdm9pZCByZXNlcnZlQnVmZmVycyhBcnJheVJlZjx1aW50NjRfdD4gQnVmZmVycyk7CisKKyAgLy8gUmVsZWFzZSBidWZmZXIgZW50cmllcyBwcmV2aW91c2x5IGFsbG9jYXRlZCBieSBtZXRob2QgcmVzZXJ2ZUJ1ZmZlcnMuCisgIHZvaWQgcmVsZWFzZUJ1ZmZlcnMoQXJyYXlSZWY8dWludDY0X3Q+IEJ1ZmZlcnMpOworCisgIC8vIFJlc2VydmUgYSBwcm9jZXNzb3IgcmVzb3VyY2UuIEEgcmVzZXJ2ZWQgcmVzb3VyY2UgaXMgbm90IGF2YWlsYWJsZSBmb3IKKyAgLy8gaW5zdHJ1Y3Rpb24gaXNzdWUgdW50aWwgaXQgaXMgcmVsZWFzZWQuCisgIHZvaWQgcmVzZXJ2ZVJlc291cmNlKHVpbnQ2NF90IFJlc291cmNlSUQpOworCisgIC8vIFJlbGVhc2UgYSBwcmV2aW91c2x5IHJlc2VydmVkIHByb2Nlc3NvciByZXNvdXJjZS4KKyAgdm9pZCByZWxlYXNlUmVzb3VyY2UodWludDY0X3QgUmVzb3VyY2VJRCk7CisKKyAgLy8gUmV0dXJucyBhIHplcm8gbWFzayBpZiByZXNvdXJjZXMgcmVxdWVzdGVkIGJ5IERlc2MgYXJlIGFsbCBhdmFpbGFibGUgZHVyaW5nCisgIC8vIHRoaXMgY3ljbGUuIEl0IHJldHVybnMgYSBub24temVybyBtYXNrIHZhbHVlIG9ubHkgaWYgdGhlcmUgYXJlIHVuYXZhaWxhYmxlCisgIC8vIHByb2Nlc3NvciByZXNvdXJjZXM7IGVhY2ggYml0IHNldCBpbiB0aGUgbWFzayByZXByZXNlbnRzIGEgYnVzeSBwcm9jZXNzb3IKKyAgLy8gcmVzb3VyY2UgdW5pdCBvciBhIHJlc2VydmVkIHByb2Nlc3NvciByZXNvdXJjZSBncm91cC4KKyAgdWludDY0X3QgY2hlY2tBdmFpbGFiaWxpdHkoY29uc3QgSW5zdHJEZXNjICZEZXNjKSBjb25zdDsKKworICB1aW50NjRfdCBnZXRQcm9jUmVzVW5pdE1hc2soKSBjb25zdCB7IHJldHVybiBQcm9jUmVzVW5pdE1hc2s7IH0KKyAgdWludDY0X3QgZ2V0QXZhaWxhYmxlUHJvY1Jlc1VuaXRzKCkgY29uc3QgeyByZXR1cm4gQXZhaWxhYmxlUHJvY1Jlc1VuaXRzOyB9CisKKyAgdm9pZCBpc3N1ZUluc3RydWN0aW9uKAorICAgICAgY29uc3QgSW5zdHJEZXNjICZEZXNjLAorICAgICAgU21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxSZXNvdXJjZVJlZiwgUmVzb3VyY2VDeWNsZXM+PiAmUGlwZXMpOworCisgIHZvaWQgY3ljbGVFdmVudChTbWFsbFZlY3RvckltcGw8UmVzb3VyY2VSZWY+ICZSZXNvdXJjZXNGcmVlZCk7CisKKyNpZm5kZWYgTkRFQlVHCisgIHZvaWQgZHVtcCgpIGNvbnN0IHsKKyAgICBmb3IgKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVN0YXRlPiAmUmVzb3VyY2UgOiBSZXNvdXJjZXMpCisgICAgICBSZXNvdXJjZS0+ZHVtcCgpOworICB9CisjZW5kaWYKK307Cit9IC8vIG5hbWVzcGFjZSBtY2EKK30gLy8gbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmIC8vIExMVk1fTUNBX1JFU09VUkNFX01BTkFHRVJfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvSGFyZHdhcmVVbml0cy9SZXRpcmVDb250cm9sVW5pdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvSGFyZHdhcmVVbml0cy9SZXRpcmVDb250cm9sVW5pdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MjkwMTQKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9IYXJkd2FyZVVuaXRzL1JldGlyZUNvbnRyb2xVbml0LmgKQEAgLTAsMCArMSwxMDMgQEAKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXRpcmVDb250cm9sVW5pdC5oIC0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLy8gXGZpbGUKKy8vLworLy8vIFRoaXMgZmlsZSBzaW11bGF0ZXMgdGhlIGhhcmR3YXJlIHJlc3BvbnNpYmxlIGZvciByZXRpcmluZyBpbnN0cnVjdGlvbnMuCisvLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9NQ0FfUkVUSVJFX0NPTlRST0xfVU5JVF9ICisjZGVmaW5lIExMVk1fTUNBX1JFVElSRV9DT05UUk9MX1VOSVRfSAorCisjaW5jbHVkZSAibGx2bS9NQy9NQ1NjaGVkdWxlLmgiCisjaW5jbHVkZSAibGx2bS9NQ0EvSGFyZHdhcmVVbml0cy9IYXJkd2FyZVVuaXQuaCIKKyNpbmNsdWRlICJsbHZtL01DQS9JbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNwYWNlIGxsdm0geworbmFtZXNwYWNlIG1jYSB7CisKKy8vLyBUaGlzIGNsYXNzIHRyYWNrcyB3aGljaCBpbnN0cnVjdGlvbnMgYXJlIGluLWZsaWdodCAoaS5lLiwgZGlzcGF0Y2hlZCBidXQgbm90CisvLy8gcmV0aXJlZCkgaW4gdGhlIE9vTyBiYWNrZW5kLgorLy8KKy8vLyBUaGlzIGNsYXNzIGNoZWNrcyBvbiBldmVyeSBjeWNsZSBpZi93aGljaCBpbnN0cnVjdGlvbnMgY2FuIGJlIHJldGlyZWQuCisvLy8gSW5zdHJ1Y3Rpb25zIGFyZSByZXRpcmVkIGluIHByb2dyYW0gb3JkZXIuCisvLy8gSW4gdGhlIGV2ZW50IG9mIGFuIGluc3RydWN0aW9uIGJlaW5nIHJldGlyZWQsIHRoZSBwaXBlbGluZSB0aGF0IG93bnMKKy8vLyB0aGlzIFJldGlyZUNvbnRyb2xVbml0IChSQ1UpIGdldHMgbm90aWZpZWQuCisvLy8KKy8vLyBPbiBpbnN0cnVjdGlvbiByZXRpcmVkLCByZWdpc3RlciB1cGRhdGVzIGFyZSBhbGwgYXJjaGl0ZWN0dXJhbGx5CisvLy8gY29tbWl0dGVkLCBhbmQgYW55IHBoeXNpY2FsbCByZWdpc3RlcnMgcHJldmlvdXNseSBhbGxvY2F0ZWQgZm9yIHRoZQorLy8vIHJldGlyZWQgaW5zdHJ1Y3Rpb24gYXJlIGZyZWVkLgorc3RydWN0IFJldGlyZUNvbnRyb2xVbml0IDogcHVibGljIEhhcmR3YXJlVW5pdCB7CisgIC8vIEEgUlVUb2tlbiBpcyBjcmVhdGVkIGJ5IHRoZSBSQ1UgZm9yIGV2ZXJ5IGluc3RydWN0aW9uIGRpc3BhdGNoZWQgdG8gdGhlCisgIC8vIHNjaGVkdWxlcnMuICBUaGVzZSAidG9rZW5zIiBhcmUgbWFuYWdlZCBieSB0aGUgUkNVIGluIGl0cyB0b2tlbiBRdWV1ZS4KKyAgLy8KKyAgLy8gT24gZXZlcnkgY3ljbGUgKCdjeWNsZUV2ZW50JyksIHRoZSBSQ1UgaXRlcmF0ZXMgdGhyb3VnaCB0aGUgdG9rZW4gcXVldWUKKyAgLy8gbG9va2luZyBmb3IgYW55IHRva2VuIHdpdGggaXRzICdFeGVjdXRlZCcgZmxhZyBzZXQuICBJZiBhIHRva2VuIGhhcyB0aGF0CisgIC8vIGZsYWcgc2V0LCB0aGVuIHRoZSBpbnN0cnVjdGlvbiBoYXMgcmVhY2hlZCB0aGUgd3JpdGUtYmFjayBzdGFnZSBhbmQgd2lsbAorICAvLyBiZSByZXRpcmVkIGJ5IHRoZSBSQ1UuCisgIC8vCisgIC8vICdOdW1TbG90cycgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgY29uc3VtZWQgYnkgdGhlIGluc3RydWN0aW9uIGluCisgIC8vIHRoZSByZW9yZGVyIGJ1ZmZlci4gVGhvc2UgZW50cmllcyB3aWxsIGJlY29tZSBhdmFpbGFibGUgYWdhaW4gb25jZSB0aGUKKyAgLy8gaW5zdHJ1Y3Rpb24gaXMgcmV0aXJlZC4KKyAgLy8KKyAgLy8gTm90ZSB0aGF0IHRoZSBzaXplIG9mIHRoZSByZW9yZGVyIGJ1ZmZlciBpcyBkZWZpbmVkIGJ5IHRoZSBzY2hlZHVsaW5nCisgIC8vIG1vZGVsIHZpYSBmaWVsZCAnTnVtTWljcm9PcEJ1ZmZlclNpemUnLgorICBzdHJ1Y3QgUlVUb2tlbiB7CisgICAgSW5zdFJlZiBJUjsKKyAgICB1bnNpZ25lZCBOdW1TbG90czsgLy8gU2xvdHMgcmVzZXJ2ZWQgdG8gdGhpcyBpbnN0cnVjdGlvbi4KKyAgICBib29sIEV4ZWN1dGVkOyAgICAgLy8gVHJ1ZSBpZiB0aGUgaW5zdHJ1Y3Rpb24gaXMgcGFzdCB0aGUgV0Igc3RhZ2UuCisgIH07CisKK3ByaXZhdGU6CisgIHVuc2lnbmVkIE5leHRBdmFpbGFibGVTbG90SWR4OworICB1bnNpZ25lZCBDdXJyZW50SW5zdHJ1Y3Rpb25TbG90SWR4OworICB1bnNpZ25lZCBBdmFpbGFibGVTbG90czsKKyAgdW5zaWduZWQgTWF4UmV0aXJlUGVyQ3ljbGU7IC8vIDAgbWVhbnMgbm8gbGltaXQuCisgIHN0ZDo6dmVjdG9yPFJVVG9rZW4+IFF1ZXVlOworCitwdWJsaWM6CisgIFJldGlyZUNvbnRyb2xVbml0KGNvbnN0IE1DU2NoZWRNb2RlbCAmU00pOworCisgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIEF2YWlsYWJsZVNsb3RzID09IFF1ZXVlLnNpemUoKTsgfQorICBib29sIGlzQXZhaWxhYmxlKHVuc2lnbmVkIFF1YW50aXR5ID0gMSkgY29uc3QgeworICAgIC8vIFNvbWUgaW5zdHJ1Y3Rpb25zIG1heSBkZWNsYXJlIGEgbnVtYmVyIG9mIHVPcHMgd2hpY2ggZXhjZWVkcyB0aGUgc2l6ZQorICAgIC8vIG9mIHRoZSByZW9yZGVyIGJ1ZmZlci4gVG8gYXZvaWQgcHJvYmxlbXMsIGNhcCB0aGUgYW1vdW50IG9mIHNsb3RzIHRvCisgICAgLy8gdGhlIHNpemUgb2YgdGhlIHJlb3JkZXIgYnVmZmVyLgorICAgIFF1YW50aXR5ID0gc3RkOjptaW4oUXVhbnRpdHksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihRdWV1ZS5zaXplKCkpKTsKKworICAgIC8vIEZ1cnRoZXIgbm9ybWFsaXplIHRoZSBudW1iZXIgb2YgbWljcm8gb3Bjb2RlcyBmb3IgaW5zdHJ1Y3Rpb25zIHRoYXQKKyAgICAvLyBkZWNsYXJlIHplcm8gb3Bjb2Rlcy4gVGhpcyBzaG91bGQgbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIG1ldGhvZAorICAgIC8vIHJlc2VydmVTbG90KCkuCisgICAgUXVhbnRpdHkgPSBzdGQ6Om1heChRdWFudGl0eSwgMVUpOworICAgIHJldHVybiBBdmFpbGFibGVTbG90cyA+PSBRdWFudGl0eTsKKyAgfQorCisgIHVuc2lnbmVkIGdldE1heFJldGlyZVBlckN5Y2xlKCkgY29uc3QgeyByZXR1cm4gTWF4UmV0aXJlUGVyQ3ljbGU7IH0KKworICAvLyBSZXNlcnZlcyBhIG51bWJlciBvZiBzbG90cywgYW5kIHJldHVybnMgYSBuZXcgdG9rZW4uCisgIHVuc2lnbmVkIHJlc2VydmVTbG90KGNvbnN0IEluc3RSZWYgJklTLCB1bnNpZ25lZCBOdW1NaWNyb09wcyk7CisKKyAgLy8gUmV0dXJuIHRoZSBjdXJyZW50IHRva2VuIGZyb20gdGhlIFJDVSdzIGNpcmN1bGFyIHRva2VuIHF1ZXVlLgorICBjb25zdCBSVVRva2VuICZwZWVrQ3VycmVudFRva2VuKCkgY29uc3Q7CisKKyAgLy8gQWR2YW5jZSB0aGUgcG9pbnRlciB0byB0aGUgbmV4dCB0b2tlbiBpbiB0aGUgY2lyY3VsYXIgdG9rZW4gcXVldWUuCisgIHZvaWQgY29uc3VtZUN1cnJlbnRUb2tlbigpOworCisgIC8vIFVwZGF0ZSB0aGUgUkNVIHRva2VuIHRvIHJlcHJlc2VudCB0aGUgZXhlY3V0ZWQgc3RhdGUuCisgIHZvaWQgb25JbnN0cnVjdGlvbkV4ZWN1dGVkKHVuc2lnbmVkIFRva2VuSUQpOworCisjaWZuZGVmIE5ERUJVRworICB2b2lkIGR1bXAoKSBjb25zdDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgbWNhCit9IC8vIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZiAvLyBMTFZNX01DQV9SRVRJUkVfQ09OVFJPTF9VTklUX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUNBL0hhcmR3YXJlVW5pdHMvU2NoZWR1bGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9IYXJkd2FyZVVuaXRzL1NjaGVkdWxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxY2ZjYmUKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9IYXJkd2FyZVVuaXRzL1NjaGVkdWxlci5oCkBAIC0wLDAgKzEsMjUwIEBACisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTY2hlZHVsZXIuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vLyBcZmlsZQorLy8vCisvLy8gQSBzY2hlZHVsZXIgZm9yIFByb2Nlc3NvciBSZXNvdXJjZSBVbml0cyBhbmQgUHJvY2Vzc29yIFJlc291cmNlIEdyb3Vwcy4KKy8vLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX01DQV9TQ0hFRFVMRVJfSAorI2RlZmluZSBMTFZNX01DQV9TQ0hFRFVMRVJfSAorCisjaW5jbHVkZSAibGx2bS9BRFQvU21hbGxWZWN0b3IuaCIKKyNpbmNsdWRlICJsbHZtL01DL01DU2NoZWR1bGUuaCIKKyNpbmNsdWRlICJsbHZtL01DQS9IYXJkd2FyZVVuaXRzL0hhcmR3YXJlVW5pdC5oIgorI2luY2x1ZGUgImxsdm0vTUNBL0hhcmR3YXJlVW5pdHMvTFNVbml0LmgiCisjaW5jbHVkZSAibGx2bS9NQ0EvSGFyZHdhcmVVbml0cy9SZXNvdXJjZU1hbmFnZXIuaCIKKyNpbmNsdWRlICJsbHZtL01DQS9TdXBwb3J0LmgiCisKK25hbWVzcGFjZSBsbHZtIHsKK25hbWVzcGFjZSBtY2EgeworCitjbGFzcyBTY2hlZHVsZXJTdHJhdGVneSB7CitwdWJsaWM6CisgIFNjaGVkdWxlclN0cmF0ZWd5KCkgPSBkZWZhdWx0OworICB2aXJ0dWFsIH5TY2hlZHVsZXJTdHJhdGVneSgpOworCisgIC8vLyBSZXR1cm5zIHRydWUgaWYgTGhzIHNob3VsZCB0YWtlIHByaW9yaXR5IG92ZXIgUmhzLgorICAvLy8KKyAgLy8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgY2xhc3MgU2NoZWR1bGVyIHRvIHNlbGVjdCB0aGUgImJlc3QiIHJlYWR5CisgIC8vLyBpbnN0cnVjdGlvbiB0byBpc3N1ZSB0byB0aGUgdW5kZXJseWluZyBwaXBlbGluZXMuCisgIHZpcnR1YWwgYm9vbCBjb21wYXJlKGNvbnN0IEluc3RSZWYgJkxocywgY29uc3QgSW5zdFJlZiAmUmhzKSBjb25zdCA9IDA7Cit9OworCisvLy8gRGVmYXVsdCBpbnN0cnVjdGlvbiBzZWxlY3Rpb24gc3RyYXRlZ3kgdXNlZCBieSBjbGFzcyBTY2hlZHVsZXIuCitjbGFzcyBEZWZhdWx0U2NoZWR1bGVyU3RyYXRlZ3kgOiBwdWJsaWMgU2NoZWR1bGVyU3RyYXRlZ3kgeworICAvLy8gVGhpcyBtZXRob2QgcmFua3MgaW5zdHJ1Y3Rpb25zIGJhc2VkIG9uIHRoZWlyIGFnZSwgYW5kIHRoZSBudW1iZXIgb2Yga25vd24KKyAgLy8vIHVzZXJzLiBUaGUgbG93ZXIgdGhlIHJhbmsgdmFsdWUsIHRoZSBiZXR0ZXIuCisgIGludCBjb21wdXRlUmFuayhjb25zdCBJbnN0UmVmICZMaHMpIGNvbnN0IHsKKyAgICByZXR1cm4gTGhzLmdldFNvdXJjZUluZGV4KCkgLSBMaHMuZ2V0SW5zdHJ1Y3Rpb24oKS0+Z2V0TnVtVXNlcnMoKTsKKyAgfQorCitwdWJsaWM6CisgIERlZmF1bHRTY2hlZHVsZXJTdHJhdGVneSgpID0gZGVmYXVsdDsKKyAgdmlydHVhbCB+RGVmYXVsdFNjaGVkdWxlclN0cmF0ZWd5KCk7CisKKyAgYm9vbCBjb21wYXJlKGNvbnN0IEluc3RSZWYgJkxocywgY29uc3QgSW5zdFJlZiAmUmhzKSBjb25zdCBvdmVycmlkZSB7CisgICAgaW50IExoc1JhbmsgPSBjb21wdXRlUmFuayhMaHMpOworICAgIGludCBSaHNSYW5rID0gY29tcHV0ZVJhbmsoUmhzKTsKKworICAgIC8vLyBQcmlvcml0aXplIG9sZGVyIGluc3RydWN0aW9ucyBvdmVyIHlvdW5nZXIgaW5zdHJ1Y3Rpb25zIHRvIG1pbmltaXplIHRoZQorICAgIC8vLyBwcmVzc3VyZSBvbiB0aGUgcmVvcmRlciBidWZmZXIuCisgICAgaWYgKExoc1JhbmsgPT0gUmhzUmFuaykKKyAgICAgIHJldHVybiBMaHMuZ2V0U291cmNlSW5kZXgoKSA8IFJocy5nZXRTb3VyY2VJbmRleCgpOworICAgIHJldHVybiBMaHNSYW5rIDwgUmhzUmFuazsKKyAgfQorfTsKKworLy8vIENsYXNzIFNjaGVkdWxlciBpcyByZXNwb25zaWJsZSBmb3IgaXNzdWluZyBpbnN0cnVjdGlvbnMgdG8gcGlwZWxpbmUKKy8vLyByZXNvdXJjZXMuCisvLy8KKy8vLyBJbnRlcm5hbGx5LCBpdCBkZWxlZ2F0ZXMgdG8gYSBSZXNvdXJjZU1hbmFnZXIgdGhlIG1hbmFnZW1lbnQgb2YgcHJvY2Vzc29yCisvLy8gcmVzb3VyY2VzLiBUaGlzIGNsYXNzIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIHRyYWNraW5nIHRoZSBwcm9ncmVzcyBvZgorLy8vIGluc3RydWN0aW9ucyBmcm9tIHRoZSBkaXNwYXRjaCBzdGFnZSwgdW50aWwgdGhlIHdyaXRlLWJhY2sgc3RhZ2UuCisvLy8KK2NsYXNzIFNjaGVkdWxlciA6IHB1YmxpYyBIYXJkd2FyZVVuaXQgeworICBMU1VuaXQgJkxTVTsKKworICAvLyBJbnN0cnVjdGlvbiBzZWxlY3Rpb24gc3RyYXRlZ3kgZm9yIHRoaXMgU2NoZWR1bGVyLgorICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVyU3RyYXRlZ3k+IFN0cmF0ZWd5OworCisgIC8vIEhhcmR3YXJlIHJlc291cmNlcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5IHRoaXMgc2NoZWR1bGVyLgorICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VNYW5hZ2VyPiBSZXNvdXJjZXM7CisKKyAgLy8gSW5zdHJ1Y3Rpb25zIGRpc3BhdGNoZWQgdG8gdGhlIFNjaGVkdWxlciBhcmUgaW50ZXJuYWxseSBjbGFzc2lmaWVkIGJhc2VkIG9uCisgIC8vIHRoZSBpbnN0cnVjdGlvbiBzdGFnZSAoc2VlIEluc3RydWN0aW9uOjpJbnN0clN0YWdlKS4KKyAgLy8KKyAgLy8gQW4gSW5zdHJ1Y3Rpb24gZGlzcGF0Y2hlZCB0byB0aGUgU2NoZWR1bGVyIGlzIGFkZGVkIHRvIHRoZSBXYWl0U2V0IGlmIG5vdAorICAvLyBhbGwgaXRzIHJlZ2lzdGVyIG9wZXJhbmRzIGFyZSBhdmFpbGFibGUsIGFuZCBhdCBsZWFzdCBvbmUgbGF0ZW5jeSBpcyB1bmtub3duLgorICAvLyBCeSBjb25zdHJ1Y3Rpb24sIHRoZSBXYWl0U2V0IG9ubHkgY29udGFpbnMgaW5zdHJ1Y3Rpb25zIHRoYXQgYXJlIGluIHRoZQorICAvLyBJU19ESVNQQVRDSEVEIHN0YWdlLgorICAvLworICAvLyBBbiBJbnN0cnVjdGlvbiB0cmFuc2l0aW9ucyBmcm9tIHRoZSBXYWl0U2V0IHRvIHRoZSBQZW5kaW5nU2V0IGlmIHRoZQorICAvLyBpbnN0cnVjdGlvbiBpcyBub3QgcmVhZHkgeWV0LCBidXQgdGhlIGxhdGVuY3kgb2YgZXZlcnkgcmVnaXN0ZXIgcmVhZCBpcyBrbm93bi4KKyAgLy8gSW5zdHJ1Y3Rpb25zIGluIHRoZSBQZW5kaW5nU2V0IGFyZSBleHBlY3RlZCB0byBiZSBpbiB0aGUgSVNfUEVORElORyBzdGFnZS4KKyAgLy8KKyAgLy8gSW5zdHJ1Y3Rpb25zIGluIHRoZSBQZW5kaW5nU2V0IGFyZSBpbW1lZGlhdGVseSBkb21pbmF0ZWQgb25seSBieQorICAvLyBpbnN0cnVjdGlvbnMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBpc3N1ZWQgdG8gdGhlIHVuZGVybHlpbmcgcGlwZWxpbmVzLgorICAvLyBJbiB0aGUgcHJlc2VuY2Ugb2YgYm90dGxlbmVja3MgY2F1c2VkIGJ5IGRhdGEgZGVwZW5kZW5jaWVzLCB0aGUgUGVuZGluZ1NldAorICAvLyBjYW4gYmUgaW5zcGVjdGVkIHRvIGlkZW50aWZ5IHByb2JsZW1hdGljIGRhdGEgZGVwZW5kZW5jaWVzIGJldHdlZW4KKyAgLy8gaW5zdHJ1Y3Rpb25zLgorICAvLworICAvLyBBbiBpbnN0cnVjdGlvbiBpcyBtb3ZlZCB0byB0aGUgUmVhZHlTZXQgd2hlbiBhbGwgcmVnaXN0ZXIgb3BlcmFuZHMgYmVjb21lCisgIC8vIGF2YWlsYWJsZSwgYW5kIGFsbCBtZW1vcnkgZGVwZW5kZW5jaWVzIGFyZSBtZXQuICBJbnN0cnVjdGlvbnMgdGhhdCBhcmUKKyAgLy8gbW92ZWQgZnJvbSB0aGUgUGVuZGluZ1NldCB0byB0aGUgUmVhZHlTZXQgdHJhbnNpdGlvbiBpbiBzdGF0ZSBmcm9tCisgIC8vICdJU19QRU5ESU5HJyB0byAnSVNfUkVBRFknLgorICAvLworICAvLyBPbiBldmVyeSBjeWNsZSwgdGhlIFNjaGVkdWxlciBjaGVja3MgaWYgaXQgY2FuIHByb21vdGUgaW5zdHJ1Y3Rpb25zIGZyb20gdGhlCisgIC8vIFBlbmRpbmdTZXQgdG8gdGhlIFJlYWR5U2V0LgorICAvLworICAvLyBBbiBJbnN0cnVjdGlvbiBpcyBtb3ZlZCBmcm9tIHRoZSBSZWFkeVNldCB0byB0aGUgYElzc3VlZFNldGAgd2hlbiBpdCBzdGFydHMKKyAgLy8gZXhlY3Rpb24uIFRoaXMgZXZlbnQgYWxzbyBjYXVzZXMgYW4gaW5zdHJ1Y3Rpb24gc3RhdGUgdHJhbnNpdGlvbiAoaS5lLiBmcm9tCisgIC8vIHN0YXRlIElTX1JFQURZLCB0byBzdGF0ZSBJU19FWEVDVVRJTkcpLiBBbiBJbnN0cnVjdGlvbiBsZWF2ZXMgdGhlIElzc3VlZFNldAorICAvLyBvbmx5IHdoZW4gaXQgcmVhY2hlcyB0aGUgd3JpdGUtYmFjayBzdGFnZS4KKyAgc3RkOjp2ZWN0b3I8SW5zdFJlZj4gV2FpdFNldDsKKyAgc3RkOjp2ZWN0b3I8SW5zdFJlZj4gUGVuZGluZ1NldDsKKyAgc3RkOjp2ZWN0b3I8SW5zdFJlZj4gUmVhZHlTZXQ7CisgIHN0ZDo6dmVjdG9yPEluc3RSZWY+IElzc3VlZFNldDsKKworICAvLyBBIG1hc2sgb2YgYnVzeSByZXNvdXJjZSB1bml0cy4gSXQgZGVmYXVsdHMgdG8gdGhlIGVtcHR5IHNldCAoaS5lLiBhIHplcm8KKyAgLy8gbWFzayksIGFuZCBpdCBpcyBjbGVhcmVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgY3ljbGUuCisgIC8vIEl0IGlzIHVwZGF0ZWQgZXZlcnkgdGltZSB0aGUgc2NoZWR1bGVyIGZhaWxzIHRvIGlzc3VlIGFuIGluc3RydWN0aW9uIGZyb20KKyAgLy8gdGhlIHJlYWR5IHNldCBkdWUgdG8gdW5hdmFpbGFibGUgcGlwZWxpbmUgcmVzb3VyY2VzLgorICAvLyBFYWNoIGJpdCBvZiB0aGUgbWFzayByZXByZXNlbnRzIGFuIHVuYXZhaWxhYmxlIHJlc291cmNlLgorICB1aW50NjRfdCBCdXN5UmVzb3VyY2VVbml0czsKKworICAvLy8gVmVyaWZ5IHRoZSBnaXZlbiBzZWxlY3Rpb24gc3RyYXRlZ3kgYW5kIHNldCB0aGUgU3RyYXRlZ3kgbWVtYmVyCisgIC8vLyBhY2NvcmRpbmdseS4gIElmIG5vIHN0cmF0ZWd5IGlzIHByb3ZpZGVkLCB0aGUgRGVmYXVsdFNjaGVkdWxlclN0cmF0ZWd5IGlzCisgIC8vLyB1c2VkLgorICB2b2lkIGluaXRpYWxpemVTdHJhdGVneShzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVyU3RyYXRlZ3k+IFMpOworCisgIC8vLyBJc3N1ZSBhbiBpbnN0cnVjdGlvbiB3aXRob3V0IHVwZGF0aW5nIHRoZSByZWFkeSBxdWV1ZS4KKyAgdm9pZCBpc3N1ZUluc3RydWN0aW9uSW1wbCgKKyAgICAgIEluc3RSZWYgJklSLAorICAgICAgU21hbGxWZWN0b3JJbXBsPHN0ZDo6cGFpcjxSZXNvdXJjZVJlZiwgUmVzb3VyY2VDeWNsZXM+PiAmUGlwZXMpOworCisgIC8vIElkZW50aWZ5IGluc3RydWN0aW9ucyB0aGF0IGhhdmUgZmluaXNoZWQgZXhlY3V0aW5nLCBhbmQgcmVtb3ZlIHRoZW0gZnJvbQorICAvLyB0aGUgSXNzdWVkU2V0LiBSZWZlcmVuY2VzIHRvIGV4ZWN1dGVkIGluc3RydWN0aW9ucyBhcmUgYWRkZWQgdG8gaW5wdXQKKyAgLy8gdmVjdG9yICdFeGVjdXRlZCcuCisgIHZvaWQgdXBkYXRlSXNzdWVkU2V0KFNtYWxsVmVjdG9ySW1wbDxJbnN0UmVmPiAmRXhlY3V0ZWQpOworCisgIC8vIFRyeSB0byBwcm9tb3RlIGluc3RydWN0aW9ucyBmcm9tIHRoZSBQZW5kaW5nU2V0IHRvIHRoZSBSZWFkeVNldC4KKyAgLy8gQWRkIHByb21vdGVkIGluc3RydWN0aW9ucyB0byB0aGUgJ1JlYWR5JyB2ZWN0b3IgaW4gaW5wdXQuCisgIC8vIFJldHVybnMgdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgaW5zdHJ1Y3Rpb24gd2FzIHByb21vdGVkLgorICBib29sIHByb21vdGVUb1JlYWR5U2V0KFNtYWxsVmVjdG9ySW1wbDxJbnN0UmVmPiAmUmVhZHkpOworCisgIC8vIFRyeSB0byBwcm9tb3RlIGluc3RydWN0aW9ucyBmcm9tIHRoZSBXYWl0U2V0IHRvIHRoZSBQZW5kaW5nU2V0LgorICAvLyBSZXR1cm5zIHRydWUgaWYgYXQgbGVhc3Qgb25lIGluc3RydWN0aW9uIHdhcyBwcm9tb3RlZC4KKyAgYm9vbCBwcm9tb3RlVG9QZW5kaW5nU2V0KCk7CisKK3B1YmxpYzoKKyAgU2NoZWR1bGVyKGNvbnN0IE1DU2NoZWRNb2RlbCAmTW9kZWwsIExTVW5pdCAmTHN1KQorICAgICAgOiBTY2hlZHVsZXIoTW9kZWwsIExzdSwgbnVsbHB0cikge30KKworICBTY2hlZHVsZXIoY29uc3QgTUNTY2hlZE1vZGVsICZNb2RlbCwgTFNVbml0ICZMc3UsCisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVyU3RyYXRlZ3k+IFNlbGVjdFN0cmF0ZWd5KQorICAgICAgOiBTY2hlZHVsZXIobWFrZV91bmlxdWU8UmVzb3VyY2VNYW5hZ2VyPihNb2RlbCksIExzdSwKKyAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShTZWxlY3RTdHJhdGVneSkpIHt9CisKKyAgU2NoZWR1bGVyKHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZU1hbmFnZXI+IFJNLCBMU1VuaXQgJkxzdSwKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZXJTdHJhdGVneT4gU2VsZWN0U3RyYXRlZ3kpCisgICAgICA6IExTVShMc3UpLCBSZXNvdXJjZXMoc3RkOjptb3ZlKFJNKSksIEJ1c3lSZXNvdXJjZVVuaXRzKDApIHsKKyAgICBpbml0aWFsaXplU3RyYXRlZ3koc3RkOjptb3ZlKFNlbGVjdFN0cmF0ZWd5KSk7CisgIH0KKworICAvLyBTdGFsbHMgZ2VuZXJhdGVkIGJ5IHRoZSBzY2hlZHVsZXIuCisgIGVudW0gU3RhdHVzIHsKKyAgICBTQ19BVkFJTEFCTEUsCisgICAgU0NfTE9BRF9RVUVVRV9GVUxMLAorICAgIFNDX1NUT1JFX1FVRVVFX0ZVTEwsCisgICAgU0NfQlVGRkVSU19GVUxMLAorICAgIFNDX0RJU1BBVENIX0dST1VQX1NUQUxMLAorICB9OworCisgIC8vLyBDaGVjayBpZiB0aGUgaW5zdHJ1Y3Rpb24gaW4gJ0lSJyBjYW4gYmUgZGlzcGF0Y2hlZCBhbmQgcmV0dXJucyBhbiBhbnN3ZXIKKyAgLy8vIGluIHRoZSBmb3JtIG9mIGEgU3RhdHVzIHZhbHVlLgorICAvLy8KKyAgLy8vIFRoZSBEaXNwYXRjaFN0YWdlIGlzIHJlc3BvbnNpYmxlIGZvciBxdWVyeWluZyB0aGUgU2NoZWR1bGVyIGJlZm9yZQorICAvLy8gZGlzcGF0Y2hpbmcgbmV3IGluc3RydWN0aW9ucy4gVGhpcyByb3V0aW5lIGlzIHVzZWQgZm9yIHBlcmZvcm1pbmcgc3VjaAorICAvLy8gYSBxdWVyeS4gIElmIHRoZSBpbnN0cnVjdGlvbiAnSVInIGNhbiBiZSBkaXNwYXRjaGVkLCB0aGVuIHRydWUgaXMKKyAgLy8vIHJldHVybmVkLCBvdGhlcndpc2UgZmFsc2UgaXMgcmV0dXJuZWQgd2l0aCBFdmVudCBzZXQgdG8gdGhlIHN0YWxsIHR5cGUuCisgIC8vLyBJbnRlcm5hbGx5LCBpdCBhbHNvIGNoZWNrcyBpZiB0aGUgbG9hZC9zdG9yZSB1bml0IGlzIGF2YWlsYWJsZS4KKyAgU3RhdHVzIGlzQXZhaWxhYmxlKGNvbnN0IEluc3RSZWYgJklSKSBjb25zdDsKKworICAvLy8gUmVzZXJ2ZXMgYnVmZmVyIGFuZCBMU1VuaXQgcXVldWUgcmVzb3VyY2VzIHRoYXQgYXJlIG5lY2Vzc2FyeSB0byBpc3N1ZQorICAvLy8gdGhpcyBpbnN0cnVjdGlvbi4KKyAgLy8vCisgIC8vLyBSZXR1cm5zIHRydWUgaWYgaW5zdHJ1Y3Rpb24gSVIgaXMgcmVhZHkgdG8gYmUgaXNzdWVkIHRvIHRoZSB1bmRlcmx5aW5nCisgIC8vLyBwaXBlbGluZXMuIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBjYW5ub3QgZmFpbDsgaXQgYXNzdW1lcyB0aGF0IGEKKyAgLy8vIHByZXZpb3VzIGNhbGwgdG8gbWV0aG9kIGBpc0F2YWlsYWJsZShJUilgIHJldHVybmVkIGBTQ19BVkFJTEFCTEVgLgorICB2b2lkIGRpc3BhdGNoKGNvbnN0IEluc3RSZWYgJklSKTsKKworICAvLy8gUmV0dXJucyB0cnVlIGlmIElSIGlzIHJlYWR5IHRvIGJlIGV4ZWN1dGVkIGJ5IHRoZSB1bmRlcmx5aW5nIHBpcGVsaW5lcy4KKyAgLy8vIFRoaXMgbWV0aG9kIGFzc3VtZXMgdGhhdCBJUiBoYXMgYmVlbiBwcmV2aW91c2x5IGRpc3BhdGNoZWQuCisgIGJvb2wgaXNSZWFkeShjb25zdCBJbnN0UmVmICZJUikgY29uc3Q7CisKKyAgLy8vIElzc3VlIGFuIGluc3RydWN0aW9uIGFuZCBwb3B1bGF0ZXMgYSB2ZWN0b3Igb2YgdXNlZCBwaXBlbGluZSByZXNvdXJjZXMsCisgIC8vLyBhbmQgYSB2ZWN0b3Igb2YgaW5zdHJ1Y3Rpb25zIHRoYXQgdHJhbnNpdGlvbmVkIHRvIHRoZSByZWFkeSBzdGF0ZSBhcyBhCisgIC8vLyByZXN1bHQgb2YgdGhpcyBldmVudC4KKyAgdm9pZCBpc3N1ZUluc3RydWN0aW9uKAorICAgICAgSW5zdFJlZiAmSVIsCisgICAgICBTbWFsbFZlY3RvckltcGw8c3RkOjpwYWlyPFJlc291cmNlUmVmLCBSZXNvdXJjZUN5Y2xlcz4+ICZVc2VkLAorICAgICAgU21hbGxWZWN0b3JJbXBsPEluc3RSZWY+ICZSZWFkeSk7CisKKyAgLy8vIFJldHVybnMgdHJ1ZSBpZiBJUiBoYXMgdG8gYmUgaXNzdWVkIGltbWVkaWF0ZWx5LCBvciBpZiBJUiBpcyBhIHplcm8KKyAgLy8vIGxhdGVuY3kgaW5zdHJ1Y3Rpb24uCisgIGJvb2wgbXVzdElzc3VlSW1tZWRpYXRlbHkoY29uc3QgSW5zdFJlZiAmSVIpIGNvbnN0OworCisgIC8vLyBUaGlzIHJvdXRpbmUgbm90aWZpZXMgdGhlIFNjaGVkdWxlciB0aGF0IGEgbmV3IGN5Y2xlIGp1c3Qgc3RhcnRlZC4KKyAgLy8vCisgIC8vLyBJdCBub3RpZmllcyB0aGUgdW5kZXJseWluZyBSZXNvdXJjZU1hbmFnZXIgdGhhdCBhIG5ldyBjeWNsZSBqdXN0IHN0YXJ0ZWQuCisgIC8vLyBWZWN0b3IgYEZyZWVkYCBpcyBwb3B1bGF0ZWQgd2l0aCByZXNvdXJjZVJlZiByZWxhdGVkIHRvIHJlc291cmNlcyB0aGF0CisgIC8vLyBoYXZlIGNoYW5nZWQgaW4gc3RhdGUsIGFuZCB0aGF0IGFyZSBub3cgYXZhaWxhYmxlIHRvIG5ldyBpbnN0cnVjdGlvbnMuCisgIC8vLyBJbnN0cnVjdGlvbnMgZXhlY3V0ZWQgYXJlIGFkZGVkIHRvIHZlY3RvciBFeGVjdXRlZCwgd2hpbGUgdmVjdG9yIFJlYWR5IGlzCisgIC8vLyBwb3B1bGF0ZWQgd2l0aCBpbnN0cnVjdGlvbnMgdGhhdCBoYXZlIGJlY29tZSByZWFkeSBpbiB0aGlzIG5ldyBjeWNsZS4KKyAgdm9pZCBjeWNsZUV2ZW50KFNtYWxsVmVjdG9ySW1wbDxSZXNvdXJjZVJlZj4gJkZyZWVkLAorICAgICAgICAgICAgICAgICAgU21hbGxWZWN0b3JJbXBsPEluc3RSZWY+ICZSZWFkeSwKKyAgICAgICAgICAgICAgICAgIFNtYWxsVmVjdG9ySW1wbDxJbnN0UmVmPiAmRXhlY3V0ZWQpOworCisgIC8vLyBDb252ZXJ0IGEgcmVzb3VyY2UgbWFzayBpbnRvIGEgdmFsaWQgbGx2bSBwcm9jZXNzb3IgcmVzb3VyY2UgaWRlbnRpZmllci4KKyAgdW5zaWduZWQgZ2V0UmVzb3VyY2VJRCh1aW50NjRfdCBNYXNrKSBjb25zdCB7CisgICAgcmV0dXJuIFJlc291cmNlcy0+cmVzb2x2ZVJlc291cmNlTWFzayhNYXNrKTsKKyAgfQorCisgIC8vLyBTZWxlY3QgdGhlIG5leHQgaW5zdHJ1Y3Rpb24gdG8gaXNzdWUgZnJvbSB0aGUgUmVhZHlTZXQuIFJldHVybnMgYW4gaW52YWxpZAorICAvLy8gaW5zdHJ1Y3Rpb24gcmVmZXJlbmNlIGlmIHRoZXJlIGFyZSBubyByZWFkeSBpbnN0cnVjdGlvbnMsIG9yIGlmIHByb2Nlc3NvcgorICAvLy8gcmVzb3VyY2VzIGFyZSBub3QgYXZhaWxhYmxlLgorICBJbnN0UmVmIHNlbGVjdCgpOworCisgIC8vLyBSZXR1cm5zIGEgbWFzayBvZiBidXN5IHJlc291cmNlcy4gRWFjaCBiaXQgb2YgdGhlIG1hc2sgaWRlbnRpZmllcyBhIHVuaXF1ZQorICAvLy8gcHJvY2Vzc29yIHJlc291cmNlIHVuaXQuIEluIHRoZSBhYnNlbmNlIG9mIGJvdHRsZW5lY2tzIGNhdXNlZCBieSByZXNvdXJjZQorICAvLy8gcHJlc3N1cmUsIHRoZSBtYXNrIHZhbHVlIHJldHVybmVkIGJ5IHRoaXMgbWV0aG9kIGlzIGFsd2F5cyB6ZXJvLgorICB1aW50NjRfdCBnZXRCdXN5UmVzb3VyY2VVbml0cygpIGNvbnN0IHsgcmV0dXJuIEJ1c3lSZXNvdXJjZVVuaXRzOyB9CisgIGJvb2wgYXJlUGlwZWxpbmVzRnVsbHlVc2VkKCkgY29uc3QgeworICAgIHJldHVybiAhUmVzb3VyY2VzLT5nZXRBdmFpbGFibGVQcm9jUmVzVW5pdHMoKTsKKyAgfQorICBib29sIGlzUmVhZHlTZXRFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIFJlYWR5U2V0LmVtcHR5KCk7IH0KKyAgYm9vbCBpc1dhaXRTZXRFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIFdhaXRTZXQuZW1wdHkoKTsgfQorCisjaWZuZGVmIE5ERUJVRworICAvLyBVcGRhdGUgdGhlIHJlYWR5IHF1ZXVlcy4KKyAgdm9pZCBkdW1wKCkgY29uc3Q7CisKKyAgLy8gVGhpcyByb3V0aW5lIHBlcmZvcm1zIGEgc2FuaXR5IGNoZWNrLiAgVGhpcyByb3V0aW5lIHNob3VsZCBvbmx5IGJlIGNhbGxlZAorICAvLyB3aGVuIHdlIGtub3cgdGhhdCAnSVInIGlzIG5vdCBpbiB0aGUgc2NoZWR1bGVyJ3MgaW5zdHJ1Y3Rpb24gcXVldWVzLgorICB2b2lkIHNhbml0eUNoZWNrKGNvbnN0IEluc3RSZWYgJklSKSBjb25zdCB7CisgICAgYXNzZXJ0KGZpbmQoV2FpdFNldCwgSVIpID09IFdhaXRTZXQuZW5kKCkgJiYgIkFscmVhZHkgaW4gdGhlIHdhaXQgc2V0ISIpOworICAgIGFzc2VydChmaW5kKFJlYWR5U2V0LCBJUikgPT0gUmVhZHlTZXQuZW5kKCkgJiYgIkFscmVhZHkgaW4gdGhlIHJlYWR5IHNldCEiKTsKKyAgICBhc3NlcnQoZmluZChJc3N1ZWRTZXQsIElSKSA9PSBJc3N1ZWRTZXQuZW5kKCkgJiYgIkFscmVhZHkgZXhlY3V0aW5nISIpOworICB9CisjZW5kaWYgLy8gIU5ERUJVRworfTsKK30gLy8gbmFtZXNwYWNlIG1jYQorfSAvLyBuYW1lc3BhY2UgbGx2bQorCisjZW5kaWYgLy8gTExWTV9NQ0FfU0NIRURVTEVSX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUNBL0luc3RyQnVpbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvSW5zdHJCdWlsZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkwMDE2MwotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUNBL0luc3RyQnVpbGRlci5oCkBAIC0wLDAgKzEsNzYgQEAKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tIEluc3RyQnVpbGRlci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLy8gXGZpbGUKKy8vLworLy8vIEEgYnVpbGRlciBjbGFzcyBmb3IgaW5zdHJ1Y3Rpb25zIHRoYXQgYXJlIHN0YXRpY2FsbHkgYW5hbHl6ZWQgYnkgbGx2bS1tY2EuCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX01DQV9JTlNUUkJVSUxERVJfSAorI2RlZmluZSBMTFZNX01DQV9JTlNUUkJVSUxERVJfSAorCisjaW5jbHVkZSAibGx2bS9NQy9NQ0luc3RyQW5hbHlzaXMuaCIKKyNpbmNsdWRlICJsbHZtL01DL01DSW5zdHJJbmZvLmgiCisjaW5jbHVkZSAibGx2bS9NQy9NQ1JlZ2lzdGVySW5mby5oIgorI2luY2x1ZGUgImxsdm0vTUMvTUNTdWJ0YXJnZXRJbmZvLmgiCisjaW5jbHVkZSAibGx2bS9NQ0EvSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJsbHZtL01DQS9TdXBwb3J0LmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0Vycm9yLmgiCisKK25hbWVzcGFjZSBsbHZtIHsKK25hbWVzcGFjZSBtY2EgeworCisvLy8gQSBidWlsZGVyIGNsYXNzIHRoYXQga25vd3MgaG93IHRvIGNvbnN0cnVjdCBJbnN0cnVjdGlvbiBvYmplY3RzLgorLy8vCisvLy8gRXZlcnkgbGx2bS1tY2EgSW5zdHJ1Y3Rpb24gaXMgZGVzY3JpYmVkIGJ5IGFuIG9iamVjdCBvZiBjbGFzcyBJbnN0ckRlc2MuCisvLy8gQW4gSW5zdHJEZXNjIGRlc2NyaWJlcyB3aGljaCByZWdpc3RlcnMgYXJlIHJlYWQvd3JpdHRlbiBieSB0aGUgaW5zdHJ1Y3Rpb24sCisvLy8gYXMgd2VsbCBhcyB0aGUgaW5zdHJ1Y3Rpb24gbGF0ZW5jeSBhbmQgaGFyZHdhcmUgcmVzb3VyY2VzIGNvbnN1bWVkLgorLy8vCisvLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGJ5IHRoZSB0b29sIHRvIGNvbnN0cnVjdCBJbnN0cnVjdGlvbnMgYW5kIGluc3RydWN0aW9uCisvLy8gZGVzY3JpcHRvcnMgKGkuZS4gSW5zdHJEZXNjIG9iamVjdHMpLgorLy8vIEluZm9ybWF0aW9uIGZyb20gdGhlIG1hY2hpbmUgc2NoZWR1bGluZyBtb2RlbCBpcyB1c2VkIHRvIGlkZW50aWZ5IHByb2Nlc3NvcgorLy8vIHJlc291cmNlcyB0aGF0IGFyZSBjb25zdW1lZCBieSBhbiBpbnN0cnVjdGlvbi4KK2NsYXNzIEluc3RyQnVpbGRlciB7CisgIGNvbnN0IE1DU3VidGFyZ2V0SW5mbyAmU1RJOworICBjb25zdCBNQ0luc3RySW5mbyAmTUNJSTsKKyAgY29uc3QgTUNSZWdpc3RlckluZm8gJk1SSTsKKyAgY29uc3QgTUNJbnN0ckFuYWx5c2lzICpNQ0lBOworICBTbWFsbFZlY3Rvcjx1aW50NjRfdCwgOD4gUHJvY1Jlc291cmNlTWFza3M7CisKKyAgRGVuc2VNYXA8dW5zaWduZWQgc2hvcnQsIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBJbnN0ckRlc2M+PiBEZXNjcmlwdG9yczsKKyAgRGVuc2VNYXA8Y29uc3QgTUNJbnN0ICosIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBJbnN0ckRlc2M+PiBWYXJpYW50RGVzY3JpcHRvcnM7CisKKyAgYm9vbCBGaXJzdENhbGxJbnN0OworICBib29sIEZpcnN0UmV0dXJuSW5zdDsKKworICBFeHBlY3RlZDxjb25zdCBJbnN0ckRlc2MgJj4gY3JlYXRlSW5zdHJEZXNjSW1wbChjb25zdCBNQ0luc3QgJk1DSSk7CisgIEV4cGVjdGVkPGNvbnN0IEluc3RyRGVzYyAmPiBnZXRPckNyZWF0ZUluc3RyRGVzYyhjb25zdCBNQ0luc3QgJk1DSSk7CisKKyAgSW5zdHJCdWlsZGVyKGNvbnN0IEluc3RyQnVpbGRlciAmKSA9IGRlbGV0ZTsKKyAgSW5zdHJCdWlsZGVyICZvcGVyYXRvcj0oY29uc3QgSW5zdHJCdWlsZGVyICYpID0gZGVsZXRlOworCisgIHZvaWQgcG9wdWxhdGVXcml0ZXMoSW5zdHJEZXNjICZJRCwgY29uc3QgTUNJbnN0ICZNQ0ksIHVuc2lnbmVkIFNjaGVkQ2xhc3NJRCk7CisgIHZvaWQgcG9wdWxhdGVSZWFkcyhJbnN0ckRlc2MgJklELCBjb25zdCBNQ0luc3QgJk1DSSwgdW5zaWduZWQgU2NoZWRDbGFzc0lEKTsKKyAgRXJyb3IgdmVyaWZ5SW5zdHJEZXNjKGNvbnN0IEluc3RyRGVzYyAmSUQsIGNvbnN0IE1DSW5zdCAmTUNJKSBjb25zdDsKKworcHVibGljOgorICBJbnN0ckJ1aWxkZXIoY29uc3QgTUNTdWJ0YXJnZXRJbmZvICZTVEksIGNvbnN0IE1DSW5zdHJJbmZvICZNQ0lJLAorICAgICAgICAgICAgICAgY29uc3QgTUNSZWdpc3RlckluZm8gJlJJLCBjb25zdCBNQ0luc3RyQW5hbHlzaXMgKklBKTsKKworICB2b2lkIGNsZWFyKCkgeworICAgIFZhcmlhbnREZXNjcmlwdG9ycy5zaHJpbmtfYW5kX2NsZWFyKCk7CisgICAgRmlyc3RDYWxsSW5zdCA9IHRydWU7CisgICAgRmlyc3RSZXR1cm5JbnN0ID0gdHJ1ZTsKKyAgfQorCisgIEV4cGVjdGVkPHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvbj4+IGNyZWF0ZUluc3RydWN0aW9uKGNvbnN0IE1DSW5zdCAmTUNJKTsKK307Cit9IC8vIG5hbWVzcGFjZSBtY2EKK30gLy8gbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmIC8vIExMVk1fTUNBX0lOU1RSQlVJTERFUl9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9JbnN0cnVjdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvSW5zdHJ1Y3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NThiN2ZlCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvSW5zdHJ1Y3Rpb24uaApAQCAtMCwwICsxLDU3MCBAQAorLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSW5zdHJ1Y3Rpb24uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vLyBcZmlsZQorLy8vCisvLy8gVGhpcyBmaWxlIGRlZmluZXMgYWJzdHJhY3Rpb25zIHVzZWQgYnkgdGhlIFBpcGVsaW5lIHRvIG1vZGVsIHJlZ2lzdGVyIHJlYWRzLAorLy8vIHJlZ2lzdGVyIHdyaXRlcyBhbmQgaW5zdHJ1Y3Rpb25zLgorLy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fTUNBX0lOU1RSVUNUSU9OX0gKKyNkZWZpbmUgTExWTV9NQ0FfSU5TVFJVQ1RJT05fSAorCisjaW5jbHVkZSAibGx2bS9BRFQvQXJyYXlSZWYuaCIKKyNpbmNsdWRlICJsbHZtL0FEVC9TVExFeHRyYXMuaCIKKyNpbmNsdWRlICJsbHZtL0FEVC9TbWFsbFZlY3Rvci5oIgorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9NYXRoRXh0cmFzLmgiCisKKyNpZm5kZWYgTkRFQlVHCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L3Jhd19vc3RyZWFtLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPG1lbW9yeT4KKworbmFtZXNwYWNlIGxsdm0geworCituYW1lc3BhY2UgbWNhIHsKKworY29uc3RleHByIGludCBVTktOT1dOX0NZQ0xFUyA9IC01MTI7CisKKy8vLyBBIHJlZ2lzdGVyIHdyaXRlIGRlc2NyaXB0b3IuCitzdHJ1Y3QgV3JpdGVEZXNjcmlwdG9yIHsKKyAgLy8gT3BlcmFuZCBpbmRleC4gVGhlIGluZGV4IGlzIG5lZ2F0aXZlIGZvciBpbXBsaWNpdCB3cml0ZXMgb25seS4KKyAgLy8gRm9yIGltcGxpY2l0IHdyaXRlcywgdGhlIGFjdHVhbCBvcGVyYW5kIGluZGV4IGlzIGNvbXB1dGVkIHBlcmZvcm1pbmcKKyAgLy8gYSBiaXR3aXNlIG5vdCBvZiB0aGUgT3BJbmRleC4KKyAgaW50IE9wSW5kZXg7CisgIC8vIFdyaXRlIGxhdGVuY3kuIE51bWJlciBvZiBjeWNsZXMgYmVmb3JlIHdyaXRlLWJhY2sgc3RhZ2UuCisgIHVuc2lnbmVkIExhdGVuY3k7CisgIC8vIFRoaXMgZmllbGQgaXMgc2V0IHRvIGEgdmFsdWUgZGlmZmVyZW50IHRoYW4gemVybyBvbmx5IGlmIHRoaXMKKyAgLy8gaXMgYW4gaW1wbGljaXQgZGVmaW5pdGlvbi4KKyAgdW5zaWduZWQgUmVnaXN0ZXJJRDsKKyAgLy8gSW5zdHJ1Y3Rpb24gaXRpbmVyYXJpZXMgd291bGQgc2V0IHRoaXMgZmllbGQgdG8gdGhlIFNjaGVkQ2xhc3MgSUQuCisgIC8vIE90aGVyd2lzZSwgaXQgZGVmYXVsdHMgdG8gdGhlIFdyaXRlUmVzb3VyY2VJRCBmcm9tIHRoZSBNQ1dyaXRlTGF0ZW5jeUVudHJ5CisgIC8vIGVsZW1lbnQgYXNzb2NpYXRlZCB0byB0aGlzIHdyaXRlLgorICAvLyBXaGVuIGNvbXB1dGluZyByZWFkIGxhdGVuY2llcywgdGhpcyB2YWx1ZSBpcyBtYXRjaGVkIGFnYWluc3QgdGhlCisgIC8vICJSZWFkQWR2YW5jZSIgaW5mb3JtYXRpb24uIFRoZSBoYXJkd2FyZSBiYWNrZW5kIG1heSBpbXBsZW1lbnQKKyAgLy8gZGVkaWNhdGVkIGZvcndhcmRpbmcgcGF0aHMgdG8gcXVpY2tseSBwcm9wYWdhdGUgd3JpdGUgcmVzdWx0cyB0byBkZXBlbmRlbnQKKyAgLy8gaW5zdHJ1Y3Rpb25zIHdhaXRpbmcgaW4gdGhlIHJlc2VydmF0aW9uIHN0YXRpb24gKGVmZmVjdGl2ZWx5IGJ5cGFzc2luZyB0aGUKKyAgLy8gd3JpdGUtYmFjayBzdGFnZSkuCisgIHVuc2lnbmVkIFNDbGFzc09yV3JpdGVSZXNvdXJjZUlEOworICAvLyBUcnVlIG9ubHkgaWYgdGhpcyBpcyBhIHdyaXRlIG9idGFpbmVkIGZyb20gYW4gb3B0aW9uYWwgZGVmaW5pdGlvbi4KKyAgLy8gT3B0aW9uYWwgZGVmaW5pdGlvbnMgYXJlIGFsbG93ZWQgdG8gcmVmZXJlbmNlIHJlZ0lEIHplcm8gKGkuZS4gIm5vCisgIC8vIHJlZ2lzdGVyIikuCisgIGJvb2wgSXNPcHRpb25hbERlZjsKKworICBib29sIGlzSW1wbGljaXRXcml0ZSgpIGNvbnN0IHsgcmV0dXJuIE9wSW5kZXggPCAwOyB9OworfTsKKworLy8vIEEgcmVnaXN0ZXIgcmVhZCBkZXNjcmlwdG9yLgorc3RydWN0IFJlYWREZXNjcmlwdG9yIHsKKyAgLy8gQSBNQ09wZXJhbmQgaW5kZXguIFRoaXMgaXMgdXNlZCBieSB0aGUgRGlzcGF0Y2ggbG9naWMgdG8gaWRlbnRpZnkgcmVnaXN0ZXIKKyAgLy8gcmVhZHMuIEltcGxpY2l0IHJlYWRzIGhhdmUgbmVnYXRpdmUgaW5kaWNlcy4gVGhlIGFjdHVhbCBvcGVyYW5kIGluZGV4IG9mIGFuCisgIC8vIGltcGxpY2l0IHJlYWQgaXMgdGhlIGJpdHdpc2Ugbm90IG9mIGZpZWxkIE9wSW5kZXguCisgIGludCBPcEluZGV4OworICAvLyBUaGUgYWN0dWFsICJVc2VJZHgiLiBUaGlzIGlzIHVzZWQgdG8gcXVlcnkgdGhlIFJlYWRBZHZhbmNlIHRhYmxlLiBFeHBsaWNpdAorICAvLyB1c2VzIGFsd2F5cyBjb21lIGZpcnN0IGluIHRoZSBzZXF1ZW5jZSBvZiB1c2VzLgorICB1bnNpZ25lZCBVc2VJbmRleDsKKyAgLy8gVGhpcyBmaWVsZCBpcyBvbmx5IHNldCBpZiB0aGlzIGlzIGFuIGltcGxpY2l0IHJlYWQuCisgIHVuc2lnbmVkIFJlZ2lzdGVySUQ7CisgIC8vIFNjaGVkdWxpbmcgQ2xhc3MgSW5kZXguIEl0IGlzIHVzZWQgdG8gcXVlcnkgdGhlIHNjaGVkdWxpbmcgbW9kZWwgZm9yIHRoZQorICAvLyBNQ1NjaGVkQ2xhc3NEZXNjIG9iamVjdC4KKyAgdW5zaWduZWQgU2NoZWRDbGFzc0lEOworCisgIGJvb2wgaXNJbXBsaWNpdFJlYWQoKSBjb25zdCB7IHJldHVybiBPcEluZGV4IDwgMDsgfTsKK307CisKK2NsYXNzIFJlYWRTdGF0ZTsKKworLy8vIFRyYWNrcyB1c2VzIG9mIGEgcmVnaXN0ZXIgZGVmaW5pdGlvbiAoZS5nLiByZWdpc3RlciB3cml0ZSkuCisvLy8KKy8vLyBFYWNoIGltcGxpY2l0L2V4cGxpY2l0IHJlZ2lzdGVyIHdyaXRlIGlzIGFzc29jaWF0ZWQgd2l0aCBhbiBpbnN0YW5jZSBvZgorLy8vIHRoaXMgY2xhc3MuIEEgV3JpdGVTdGF0ZSBvYmplY3QgdHJhY2tzIHRoZSBkZXBlbmRlbnQgdXNlcnMgb2YgYQorLy8vIHJlZ2lzdGVyIHdyaXRlLiBJdCBhbHNvIHRyYWNrcyBob3cgbWFueSBjeWNsZXMgYXJlIGxlZnQgYmVmb3JlIHRoZSB3cml0ZQorLy8vIGJhY2sgc3RhZ2UuCitjbGFzcyBXcml0ZVN0YXRlIHsKKyAgY29uc3QgV3JpdGVEZXNjcmlwdG9yICpXRDsKKyAgLy8gT24gaW5zdHJ1Y3Rpb24gaXNzdWUsIHRoaXMgZmllbGQgaXMgc2V0IGVxdWFsIHRvIHRoZSB3cml0ZSBsYXRlbmN5LgorICAvLyBCZWZvcmUgaW5zdHJ1Y3Rpb24gaXNzdWUsIHRoaXMgZmllbGQgZGVmYXVsdHMgdG8gLTUxMiwgYSBzcGVjaWFsCisgIC8vIHZhbHVlIHRoYXQgcmVwcmVzZW50cyBhbiAidW5rbm93biIgbnVtYmVyIG9mIGN5Y2xlcy4KKyAgaW50IEN5Y2xlc0xlZnQ7CisKKyAgLy8gQWN0dWFsIHJlZ2lzdGVyIGRlZmluZWQgYnkgdGhpcyB3cml0ZS4gVGhpcyBmaWVsZCBpcyBvbmx5IHVzZWQKKyAgLy8gdG8gc3BlZWR1cCBxdWVyaWVzIG9uIHRoZSByZWdpc3RlciBmaWxlLgorICAvLyBGb3IgaW1wbGljaXQgd3JpdGVzLCB0aGlzIGZpZWxkIGFsd2F5cyBtYXRjaGVzIHRoZSB2YWx1ZSBvZgorICAvLyBmaWVsZCBSZWdpc3RlcklEIGZyb20gV0QuCisgIHVuc2lnbmVkIFJlZ2lzdGVySUQ7CisKKyAgLy8gUGh5c2ljYWwgcmVnaXN0ZXIgZmlsZSB0aGF0IHNlcnZlcyByZWdpc3RlciBSZWdpc3RlcklELgorICB1bnNpZ25lZCBQUkZJRDsKKworICAvLyBUcnVlIGlmIHRoaXMgd3JpdGUgaW1wbGljaXRseSBjbGVhcnMgdGhlIHVwcGVyIHBvcnRpb24gb2YgUmVnaXN0ZXJJRCdzCisgIC8vIHN1cGVyLXJlZ2lzdGVycy4KKyAgYm9vbCBDbGVhcnNTdXBlclJlZ3M7CisKKyAgLy8gVHJ1ZSBpZiB0aGlzIHdyaXRlIGlzIGZyb20gYSBkZXBlbmRlbmN5IGJyZWFraW5nIHplcm8taWRpb20gaW5zdHJ1Y3Rpb24uCisgIGJvb2wgV3JpdGVzWmVybzsKKworICAvLyBUcnVlIGlmIHRoaXMgd3JpdGUgaGFzIGJlZW4gZWxpbWluYXRlZCBhdCByZWdpc3RlciByZW5hbWluZyBzdGFnZS4KKyAgLy8gRXhhbXBsZTogYSByZWdpc3RlciBtb3ZlIGRvZXNuJ3QgY29uc3VtZSBzY2hlZHVsZXIvcGlwbGVsaW5lIHJlc291cmNlcyBpZgorICAvLyBpdCBpcyBlbGltaW5hdGVkIGF0IHJlZ2lzdGVyIHJlbmFtaW5nIHN0YWdlLiBJdCBzdGlsbCBjb25zdW1lcworICAvLyBkZWNvZGUgYmFuZHdpZHRoLCBhbmQgUk9CIGVudHJpZXMuCisgIGJvb2wgSXNFbGltaW5hdGVkOworCisgIC8vIFRoaXMgZmllbGQgaXMgc2V0IGlmIHRoaXMgaXMgYSBwYXJ0aWFsIHJlZ2lzdGVyIHdyaXRlLCBhbmQgaXQgaGFzIGEgZmFsc2UKKyAgLy8gZGVwZW5kZW5jeSBvbiBhbnkgcHJldmlvdXMgd3JpdGUgb2YgdGhlIHNhbWUgcmVnaXN0ZXIgKG9yIGEgcG9ydGlvbiBvZiBpdCkuCisgIC8vIERlcGVuZGVudFdyaXRlIG11c3QgYmUgYWJsZSB0byBjb21wbGV0ZSBiZWZvcmUgdGhpcyB3cml0ZSBjb21wbGV0ZXMsIHNvCisgIC8vIHRoYXQgd2UgZG9uJ3QgYnJlYWsgdGhlIFdBVywgYW5kIHRoZSB0d28gd3JpdGVzIGNhbiBiZSBtZXJnZWQgdG9nZXRoZXIuCisgIGNvbnN0IFdyaXRlU3RhdGUgKkRlcGVuZGVudFdyaXRlOworCisgIC8vIEEgcGFydGlhbCB3cml0ZSB0aGF0IGlzIGluIGEgZmFsc2UgZGVwZW5kZW5jeSB3aXRoIHRoaXMgd3JpdGUuCisgIFdyaXRlU3RhdGUgKlBhcnRpYWxXcml0ZTsKKworICB1bnNpZ25lZCBEZXBlbmRlbnRXcml0ZUN5Y2xlc0xlZnQ7CisKKyAgLy8gQSBsaXN0IG9mIGRlcGVuZGVudCByZWFkcy4gVXNlcnMgaXMgYSBzZXQgb2YgZGVwZW5kZW50CisgIC8vIHJlYWRzLiBBIGRlcGVuZGVudCByZWFkIGlzIGFkZGVkIHRvIHRoZSBzZXQgb25seSBpZiBDeWNsZXNMZWZ0CisgIC8vIGlzICJ1bmtub3duIi4gQXMgc29vbiBhcyBDeWNsZXNMZWZ0IGlzICdrbm93bicsIGVhY2ggdXNlciBpbiB0aGUgc2V0CisgIC8vIGdldHMgbm90aWZpZWQgd2l0aCB0aGUgYWN0dWFsIEN5Y2xlc0xlZnQuCisKKyAgLy8gVGhlICdzZWNvbmQnIGVsZW1lbnQgb2YgYSBwYWlyIGlzIGEgIlJlYWRBZHZhbmNlIiBudW1iZXIgb2YgY3ljbGVzLgorICBTbWFsbFZlY3RvcjxzdGQ6OnBhaXI8UmVhZFN0YXRlICosIGludD4sIDQ+IFVzZXJzOworCitwdWJsaWM6CisgIFdyaXRlU3RhdGUoY29uc3QgV3JpdGVEZXNjcmlwdG9yICZEZXNjLCB1bnNpZ25lZCBSZWdJRCwKKyAgICAgICAgICAgICBib29sIGNsZWFyc1N1cGVyUmVncyA9IGZhbHNlLCBib29sIHdyaXRlc1plcm8gPSBmYWxzZSkKKyAgICAgIDogV0QoJkRlc2MpLCBDeWNsZXNMZWZ0KFVOS05PV05fQ1lDTEVTKSwgUmVnaXN0ZXJJRChSZWdJRCksIFBSRklEKDApLAorICAgICAgICBDbGVhcnNTdXBlclJlZ3MoY2xlYXJzU3VwZXJSZWdzKSwgV3JpdGVzWmVybyh3cml0ZXNaZXJvKSwKKyAgICAgICAgSXNFbGltaW5hdGVkKGZhbHNlKSwgRGVwZW5kZW50V3JpdGUobnVsbHB0ciksIFBhcnRpYWxXcml0ZShudWxscHRyKSwKKyAgICAgICAgRGVwZW5kZW50V3JpdGVDeWNsZXNMZWZ0KDApIHt9CisKKyAgV3JpdGVTdGF0ZShjb25zdCBXcml0ZVN0YXRlICZPdGhlcikgPSBkZWZhdWx0OworICBXcml0ZVN0YXRlICZvcGVyYXRvcj0oY29uc3QgV3JpdGVTdGF0ZSAmT3RoZXIpID0gZGVmYXVsdDsKKworICBpbnQgZ2V0Q3ljbGVzTGVmdCgpIGNvbnN0IHsgcmV0dXJuIEN5Y2xlc0xlZnQ7IH0KKyAgdW5zaWduZWQgZ2V0V3JpdGVSZXNvdXJjZUlEKCkgY29uc3QgeyByZXR1cm4gV0QtPlNDbGFzc09yV3JpdGVSZXNvdXJjZUlEOyB9CisgIHVuc2lnbmVkIGdldFJlZ2lzdGVySUQoKSBjb25zdCB7IHJldHVybiBSZWdpc3RlcklEOyB9CisgIHVuc2lnbmVkIGdldFJlZ2lzdGVyRmlsZUlEKCkgY29uc3QgeyByZXR1cm4gUFJGSUQ7IH0KKyAgdW5zaWduZWQgZ2V0TGF0ZW5jeSgpIGNvbnN0IHsgcmV0dXJuIFdELT5MYXRlbmN5OyB9CisKKyAgdm9pZCBhZGRVc2VyKFJlYWRTdGF0ZSAqVXNlLCBpbnQgUmVhZEFkdmFuY2UpOworICB2b2lkIGFkZFVzZXIoV3JpdGVTdGF0ZSAqVXNlKTsKKworICB1bnNpZ25lZCBnZXREZXBlbmRlbnRXcml0ZUN5Y2xlc0xlZnQoKSBjb25zdCB7CisgICAgcmV0dXJuIERlcGVuZGVudFdyaXRlQ3ljbGVzTGVmdDsKKyAgfQorCisgIHVuc2lnbmVkIGdldE51bVVzZXJzKCkgY29uc3QgeworICAgIHVuc2lnbmVkIE51bVVzZXJzID0gVXNlcnMuc2l6ZSgpOworICAgIGlmIChQYXJ0aWFsV3JpdGUpCisgICAgICArK051bVVzZXJzOworICAgIHJldHVybiBOdW1Vc2VyczsKKyAgfQorCisgIGJvb2wgY2xlYXJzU3VwZXJSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBDbGVhcnNTdXBlclJlZ3M7IH0KKyAgYm9vbCBpc1dyaXRlWmVybygpIGNvbnN0IHsgcmV0dXJuIFdyaXRlc1plcm87IH0KKyAgYm9vbCBpc0VsaW1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBJc0VsaW1pbmF0ZWQ7IH0KKworICBib29sIGlzUmVhZHkoKSBjb25zdCB7CisgICAgaWYgKGdldERlcGVuZGVudFdyaXRlKCkpCisgICAgICByZXR1cm4gZmFsc2U7CisgICAgdW5zaWduZWQgQ3ljbGVzTGVmdCA9IGdldERlcGVuZGVudFdyaXRlQ3ljbGVzTGVmdCgpOworICAgIHJldHVybiAhQ3ljbGVzTGVmdCB8fCBDeWNsZXNMZWZ0IDwgZ2V0TGF0ZW5jeSgpOworICB9CisKKyAgYm9vbCBpc0V4ZWN1dGVkKCkgY29uc3QgeworICAgIHJldHVybiBDeWNsZXNMZWZ0ICE9IFVOS05PV05fQ1lDTEVTICYmIEN5Y2xlc0xlZnQgPD0gMDsKKyAgfQorCisgIGNvbnN0IFdyaXRlU3RhdGUgKmdldERlcGVuZGVudFdyaXRlKCkgY29uc3QgeyByZXR1cm4gRGVwZW5kZW50V3JpdGU7IH0KKyAgdm9pZCBzZXREZXBlbmRlbnRXcml0ZShXcml0ZVN0YXRlICpPdGhlcikgeyBEZXBlbmRlbnRXcml0ZSA9IE90aGVyOyB9CisgIHZvaWQgd3JpdGVTdGFydEV2ZW50KHVuc2lnbmVkIEN5Y2xlcykgeworICAgIERlcGVuZGVudFdyaXRlQ3ljbGVzTGVmdCA9IEN5Y2xlczsKKyAgICBEZXBlbmRlbnRXcml0ZSA9IG51bGxwdHI7CisgIH0KKworICB2b2lkIHNldFdyaXRlWmVybygpIHsgV3JpdGVzWmVybyA9IHRydWU7IH0KKyAgdm9pZCBzZXRFbGltaW5hdGVkKCkgeworICAgIGFzc2VydChVc2Vycy5lbXB0eSgpICYmICJXcml0ZSBpcyBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUuIik7CisgICAgQ3ljbGVzTGVmdCA9IDA7CisgICAgSXNFbGltaW5hdGVkID0gdHJ1ZTsKKyAgfQorCisgIHZvaWQgc2V0UFJGKHVuc2lnbmVkIFBSRikgeyBQUkZJRCA9IFBSRjsgfQorCisgIC8vIE9uIGV2ZXJ5IGN5Y2xlLCB1cGRhdGUgQ3ljbGVzTGVmdCBhbmQgbm90aWZ5IGRlcGVuZGVudCB1c2Vycy4KKyAgdm9pZCBjeWNsZUV2ZW50KCk7CisgIHZvaWQgb25JbnN0cnVjdGlvbklzc3VlZCgpOworCisjaWZuZGVmIE5ERUJVRworICB2b2lkIGR1bXAoKSBjb25zdDsKKyNlbmRpZgorfTsKKworLy8vIFRyYWNrcyByZWdpc3RlciBvcGVyYW5kIGxhdGVuY3kgaW4gY3ljbGVzLgorLy8vCisvLy8gQSByZWFkIG1heSBiZSBkZXBlbmRlbnQgb24gbW9yZSB0aGFuIG9uZSB3cml0ZS4gVGhpcyBvY2N1cnMgd2hlbiBzb21lCisvLy8gd3JpdGVzIG9ubHkgcGFydGlhbGx5IHVwZGF0ZSB0aGUgcmVnaXN0ZXIgYXNzb2NpYXRlZCB0byB0aGlzIHJlYWQuCitjbGFzcyBSZWFkU3RhdGUgeworICBjb25zdCBSZWFkRGVzY3JpcHRvciAqUkQ7CisgIC8vIFBoeXNpY2FsIHJlZ2lzdGVyIGlkZW50aWZpZWQgYXNzb2NpYXRlZCB0byB0aGlzIHJlYWQuCisgIHVuc2lnbmVkIFJlZ2lzdGVySUQ7CisgIC8vIFBoeXNpY2FsIHJlZ2lzdGVyIGZpbGUgdGhhdCBzZXJ2ZXMgcmVnaXN0ZXIgUmVnaXN0ZXJJRC4KKyAgdW5zaWduZWQgUFJGSUQ7CisgIC8vIE51bWJlciBvZiB3cml0ZXMgdGhhdCBjb250cmlidXRlIHRvIHRoZSBkZWZpbml0aW9uIG9mIFJlZ2lzdGVySUQuCisgIC8vIEluIHRoZSBhYnNlbmNlIG9mIHBhcnRpYWwgcmVnaXN0ZXIgdXBkYXRlcywgdGhlIG51bWJlciBvZiBEZXBlbmRlbnRXcml0ZXMKKyAgLy8gY2Fubm90IGJlIG1vcmUgdGhhbiBvbmUuCisgIHVuc2lnbmVkIERlcGVuZGVudFdyaXRlczsKKyAgLy8gTnVtYmVyIG9mIGN5Y2xlcyBsZWZ0IGJlZm9yZSBSZWdpc3RlcklEIGNhbiBiZSByZWFkLiBUaGlzIHZhbHVlIGRlcGVuZHMgb24KKyAgLy8gdGhlIGxhdGVuY3kgb2YgYWxsIHRoZSBkZXBlbmRlbnQgd3JpdGVzLiBJdCBkZWZhdWx0cyB0byBVTktOT1dOX0NZQ0xFUy4KKyAgLy8gSXQgZ2V0cyBzZXQgdG8gdGhlIHZhbHVlIG9mIGZpZWxkIFRvdGFsQ3ljbGVzIG9ubHkgd2hlbiB0aGUgJ0N5Y2xlc0xlZnQnIG9mCisgIC8vIGV2ZXJ5IGRlcGVuZGVudCB3cml0ZSBpcyBrbm93bi4KKyAgaW50IEN5Y2xlc0xlZnQ7CisgIC8vIFRoaXMgZmllbGQgaXMgdXBkYXRlZCBvbiBldmVyeSB3cml0ZVN0YXJ0RXZlbnQoKS4gV2hlbiB0aGUgbnVtYmVyIG9mCisgIC8vIGRlcGVuZGVudCB3cml0ZXMgKGkuZS4gZmllbGQgRGVwZW5kZW50V3JpdGUpIGlzIHplcm8sIHRoaXMgdmFsdWUgaXMKKyAgLy8gcHJvcGFnYXRlZCB0byBmaWVsZCBDeWNsZXNMZWZ0LgorICB1bnNpZ25lZCBUb3RhbEN5Y2xlczsKKyAgLy8gVGhpcyBmaWVsZCBpcyBzZXQgdG8gdHJ1ZSBvbmx5IGlmIHRoZXJlIGFyZSBubyBkZXBlbmRlbnQgd3JpdGVzLCBhbmQKKyAgLy8gdGhlcmUgYXJlIG5vIGBDeWNsZXNMZWZ0JyB0byB3YWl0LgorICBib29sIElzUmVhZHk7CisgIC8vIFRydWUgaWYgdGhpcyBpcyBhIHJlYWQgZnJvbSBhIGtub3duIHplcm8gcmVnaXN0ZXIuCisgIGJvb2wgSXNaZXJvOworICAvLyBUcnVlIGlmIHRoaXMgcmVnaXN0ZXIgcmVhZCBpcyBmcm9tIGEgZGVwZW5kZW5jeS1icmVha2luZyBpbnN0cnVjdGlvbi4KKyAgYm9vbCBJbmRlcGVuZGVudEZyb21EZWY7CisKK3B1YmxpYzoKKyAgUmVhZFN0YXRlKGNvbnN0IFJlYWREZXNjcmlwdG9yICZEZXNjLCB1bnNpZ25lZCBSZWdJRCkKKyAgICAgIDogUkQoJkRlc2MpLCBSZWdpc3RlcklEKFJlZ0lEKSwgUFJGSUQoMCksIERlcGVuZGVudFdyaXRlcygwKSwKKyAgICAgICAgQ3ljbGVzTGVmdChVTktOT1dOX0NZQ0xFUyksIFRvdGFsQ3ljbGVzKDApLCBJc1JlYWR5KHRydWUpLAorICAgICAgICBJc1plcm8oZmFsc2UpLCBJbmRlcGVuZGVudEZyb21EZWYoZmFsc2UpIHt9CisKKyAgY29uc3QgUmVhZERlc2NyaXB0b3IgJmdldERlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiAqUkQ7IH0KKyAgdW5zaWduZWQgZ2V0U2NoZWRDbGFzcygpIGNvbnN0IHsgcmV0dXJuIFJELT5TY2hlZENsYXNzSUQ7IH0KKyAgdW5zaWduZWQgZ2V0UmVnaXN0ZXJJRCgpIGNvbnN0IHsgcmV0dXJuIFJlZ2lzdGVySUQ7IH0KKyAgdW5zaWduZWQgZ2V0UmVnaXN0ZXJGaWxlSUQoKSBjb25zdCB7IHJldHVybiBQUkZJRDsgfQorCisgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gIUluZGVwZW5kZW50RnJvbURlZiAmJiBDeWNsZXNMZWZ0ID4gMDsgfQorICBib29sIGlzUmVhZHkoKSBjb25zdCB7IHJldHVybiBJc1JlYWR5OyB9CisgIGJvb2wgaXNJbXBsaWNpdFJlYWQoKSBjb25zdCB7IHJldHVybiBSRC0+aXNJbXBsaWNpdFJlYWQoKTsgfQorCisgIGJvb2wgaXNJbmRlcGVuZGVudEZyb21EZWYoKSBjb25zdCB7IHJldHVybiBJbmRlcGVuZGVudEZyb21EZWY7IH0KKyAgdm9pZCBzZXRJbmRlcGVuZGVudEZyb21EZWYoKSB7IEluZGVwZW5kZW50RnJvbURlZiA9IHRydWU7IH0KKworICB2b2lkIGN5Y2xlRXZlbnQoKTsKKyAgdm9pZCB3cml0ZVN0YXJ0RXZlbnQodW5zaWduZWQgQ3ljbGVzKTsKKyAgdm9pZCBzZXREZXBlbmRlbnRXcml0ZXModW5zaWduZWQgV3JpdGVzKSB7CisgICAgRGVwZW5kZW50V3JpdGVzID0gV3JpdGVzOworICAgIElzUmVhZHkgPSAhV3JpdGVzOworICB9CisKKyAgYm9vbCBpc1JlYWRaZXJvKCkgY29uc3QgeyByZXR1cm4gSXNaZXJvOyB9CisgIHZvaWQgc2V0UmVhZFplcm8oKSB7IElzWmVybyA9IHRydWU7IH0KKyAgdm9pZCBzZXRQUkYodW5zaWduZWQgSUQpIHsgUFJGSUQgPSBJRDsgfQorfTsKKworLy8vIEEgc2VxdWVuY2Ugb2YgY3ljbGVzLgorLy8vCisvLy8gVGhpcyBjbGFzcyBjYW4gYmUgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIHRvIGNvbnN0cnVjdCByYW5nZXMgb2YgY3ljbGVzLgorY2xhc3MgQ3ljbGVTZWdtZW50IHsKKyAgdW5zaWduZWQgQmVnaW47IC8vIEluY2x1c2l2ZS4KKyAgdW5zaWduZWQgRW5kOyAgIC8vIEV4Y2x1c2l2ZS4KKyAgYm9vbCBSZXNlcnZlZDsgIC8vIFJlc291cmNlcyBhc3NvY2lhdGVkIHRvIHRoaXMgc2VnbWVudCBtdXN0IGJlIHJlc2VydmVkLgorCitwdWJsaWM6CisgIEN5Y2xlU2VnbWVudCh1bnNpZ25lZCBTdGFydEN5Y2xlLCB1bnNpZ25lZCBFbmRDeWNsZSwgYm9vbCBJc1Jlc2VydmVkID0gZmFsc2UpCisgICAgICA6IEJlZ2luKFN0YXJ0Q3ljbGUpLCBFbmQoRW5kQ3ljbGUpLCBSZXNlcnZlZChJc1Jlc2VydmVkKSB7fQorCisgIGJvb2wgY29udGFpbnModW5zaWduZWQgQ3ljbGUpIGNvbnN0IHsgcmV0dXJuIEN5Y2xlID49IEJlZ2luICYmIEN5Y2xlIDwgRW5kOyB9CisgIGJvb2wgc3RhcnRzQWZ0ZXIoY29uc3QgQ3ljbGVTZWdtZW50ICZDUykgY29uc3QgeyByZXR1cm4gRW5kIDw9IENTLkJlZ2luOyB9CisgIGJvb2wgZW5kc0JlZm9yZShjb25zdCBDeWNsZVNlZ21lbnQgJkNTKSBjb25zdCB7IHJldHVybiBCZWdpbiA+PSBDUy5FbmQ7IH0KKyAgYm9vbCBvdmVybGFwcyhjb25zdCBDeWNsZVNlZ21lbnQgJkNTKSBjb25zdCB7CisgICAgcmV0dXJuICFzdGFydHNBZnRlcihDUykgJiYgIWVuZHNCZWZvcmUoQ1MpOworICB9CisgIGJvb2wgaXNFeGVjdXRpbmcoKSBjb25zdCB7IHJldHVybiBCZWdpbiA9PSAwICYmIEVuZCAhPSAwOyB9CisgIGJvb2wgaXNFeGVjdXRlZCgpIGNvbnN0IHsgcmV0dXJuIEVuZCA9PSAwOyB9CisgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEN5Y2xlU2VnbWVudCAmT3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gQmVnaW4gPCBPdGhlci5CZWdpbjsKKyAgfQorICBDeWNsZVNlZ21lbnQgJm9wZXJhdG9yLS0odm9pZCkgeworICAgIGlmIChCZWdpbikKKyAgICAgIEJlZ2luLS07CisgICAgaWYgKEVuZCkKKyAgICAgIEVuZC0tOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIEJlZ2luIDw9IEVuZDsgfQorICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gRW5kIC0gQmVnaW47IH07CisgIHZvaWQgc3VidHJhY3QodW5zaWduZWQgQ3ljbGVzKSB7CisgICAgYXNzZXJ0KEVuZCA+PSBDeWNsZXMpOworICAgIEVuZCAtPSBDeWNsZXM7CisgIH0KKworICB1bnNpZ25lZCBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIEJlZ2luOyB9CisgIHVuc2lnbmVkIGVuZCgpIGNvbnN0IHsgcmV0dXJuIEVuZDsgfQorICB2b2lkIHNldEVuZCh1bnNpZ25lZCBOZXdFbmQpIHsgRW5kID0gTmV3RW5kOyB9CisgIGJvb2wgaXNSZXNlcnZlZCgpIGNvbnN0IHsgcmV0dXJuIFJlc2VydmVkOyB9CisgIHZvaWQgc2V0UmVzZXJ2ZWQoKSB7IFJlc2VydmVkID0gdHJ1ZTsgfQorfTsKKworLy8vIEhlbHBlciB1c2VkIGJ5IGNsYXNzIEluc3RyRGVzYyB0byBkZXNjcmliZSBob3cgaGFyZHdhcmUgcmVzb3VyY2VzCisvLy8gYXJlIHVzZWQuCisvLy8KKy8vLyBUaGlzIGNsYXNzIGRlc2NyaWJlcyBob3cgbWFueSByZXNvdXJjZSB1bml0cyBvZiBhIHNwZWNpZmljIHJlc291cmNlIGtpbmQKKy8vLyAoYW5kIGhvdyBtYW55IGN5Y2xlcykgYXJlICJ1c2VkIiBieSBhbiBpbnN0cnVjdGlvbi4KK3N0cnVjdCBSZXNvdXJjZVVzYWdlIHsKKyAgQ3ljbGVTZWdtZW50IENTOworICB1bnNpZ25lZCBOdW1Vbml0czsKKyAgUmVzb3VyY2VVc2FnZShDeWNsZVNlZ21lbnQgQ3ljbGVzLCB1bnNpZ25lZCBVbml0cyA9IDEpCisgICAgICA6IENTKEN5Y2xlcyksIE51bVVuaXRzKFVuaXRzKSB7fQorICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gQ1Muc2l6ZSgpOyB9CisgIGJvb2wgaXNSZXNlcnZlZCgpIGNvbnN0IHsgcmV0dXJuIENTLmlzUmVzZXJ2ZWQoKTsgfQorICB2b2lkIHNldFJlc2VydmVkKCkgeyBDUy5zZXRSZXNlcnZlZCgpOyB9Cit9OworCisvLy8gQW4gaW5zdHJ1Y3Rpb24gZGVzY3JpcHRvcgorc3RydWN0IEluc3RyRGVzYyB7CisgIFNtYWxsVmVjdG9yPFdyaXRlRGVzY3JpcHRvciwgND4gV3JpdGVzOyAvLyBJbXBsaWNpdCB3cml0ZXMgYXJlIGF0IHRoZSBlbmQuCisgIFNtYWxsVmVjdG9yPFJlYWREZXNjcmlwdG9yLCA0PiBSZWFkczsgICAvLyBJbXBsaWNpdCByZWFkcyBhcmUgYXQgdGhlIGVuZC4KKworICAvLyBGb3IgZXZlcnkgcmVzb3VyY2UgdXNlZCBieSBhbiBpbnN0cnVjdGlvbiBvZiB0aGlzIGtpbmQsIHRoaXMgdmVjdG9yCisgIC8vIHJlcG9ydHMgdGhlIG51bWJlciBvZiAiY29uc3VtZWQgY3ljbGVzIi4KKyAgU21hbGxWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90LCBSZXNvdXJjZVVzYWdlPiwgND4gUmVzb3VyY2VzOworCisgIC8vIEEgbGlzdCBvZiBidWZmZXJlZCByZXNvdXJjZXMgY29uc3VtZWQgYnkgdGhpcyBpbnN0cnVjdGlvbi4KKyAgU21hbGxWZWN0b3I8dWludDY0X3QsIDQ+IEJ1ZmZlcnM7CisKKyAgdW5zaWduZWQgVXNlZFByb2NSZXNVbml0czsKKyAgdW5zaWduZWQgVXNlZFByb2NSZXNHcm91cHM7CisKKyAgdW5zaWduZWQgTWF4TGF0ZW5jeTsKKyAgLy8gTnVtYmVyIG9mIE1pY3JvT3BzIGZvciB0aGlzIGluc3RydWN0aW9uLgorICB1bnNpZ25lZCBOdW1NaWNyb09wczsKKyAgLy8gU2NoZWRDbGFzc0lEIHVzZWQgdG8gY29uc3RydWN0IHRoaXMgSW5zdHJEZXNjLgorICAvLyBUaGlzIGluZm9ybWF0aW9uIGlzIGN1cnJlbnRseSB1c2VkIGJ5IHZpZXdzIHRvIGRvIGZhc3QgcXVlcmllcyBvbiB0aGUKKyAgLy8gc3VidGFyZ2V0IHdoZW4gY29tcHV0aW5nIHRoZSByZWNpcHJvY2FsIHRocm91Z2hwdXQuCisgIHVuc2lnbmVkIFNjaGVkQ2xhc3NJRDsKKworICBib29sIE1heUxvYWQ7CisgIGJvb2wgTWF5U3RvcmU7CisgIGJvb2wgSGFzU2lkZUVmZmVjdHM7CisgIGJvb2wgQmVnaW5Hcm91cDsKKyAgYm9vbCBFbmRHcm91cDsKKworICAvLyBUcnVlIGlmIGFsbCBidWZmZXJlZCByZXNvdXJjZXMgYXJlIGluLW9yZGVyLCBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lCisgIC8vIGJ1ZmZlciB3aGljaCBpcyBhIGRpc3BhdGNoIGhhemFyZCAoQnVmZmVyU2l6ZSA9IDApLgorICBib29sIE11c3RJc3N1ZUltbWVkaWF0ZWx5OworCisgIC8vIEEgemVybyBsYXRlbmN5IGluc3RydWN0aW9uIGRvZXNuJ3QgY29uc3VtZSBhbnkgc2NoZWR1bGVyIHJlc291cmNlcy4KKyAgYm9vbCBpc1plcm9MYXRlbmN5KCkgY29uc3QgeyByZXR1cm4gIU1heExhdGVuY3kgJiYgUmVzb3VyY2VzLmVtcHR5KCk7IH0KKworICBJbnN0ckRlc2MoKSA9IGRlZmF1bHQ7CisgIEluc3RyRGVzYyhjb25zdCBJbnN0ckRlc2MgJk90aGVyKSA9IGRlbGV0ZTsKKyAgSW5zdHJEZXNjICZvcGVyYXRvcj0oY29uc3QgSW5zdHJEZXNjICZPdGhlcikgPSBkZWxldGU7Cit9OworCisvLy8gQmFzZSBjbGFzcyBmb3IgaW5zdHJ1Y3Rpb25zIGNvbnN1bWVkIGJ5IHRoZSBzaW11bGF0aW9uIHBpcGVsaW5lLgorLy8vCisvLy8gVGhpcyBjbGFzcyB0cmFja3MgZGF0YSBkZXBlbmRlbmNpZXMgYXMgd2VsbCBhcyBnZW5lcmljIHByb3BlcnRpZXMKKy8vLyBvZiB0aGUgaW5zdHJ1Y3Rpb24uCitjbGFzcyBJbnN0cnVjdGlvbkJhc2UgeworICBjb25zdCBJbnN0ckRlc2MgJkRlc2M7CisKKyAgLy8gVGhpcyBmaWVsZCBpcyBzZXQgZm9yIGluc3RydWN0aW9ucyB0aGF0IGFyZSBjYW5kaWRhdGVzIGZvciBtb3ZlCisgIC8vIGVsaW1pbmF0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBtb3ZlIGVsaW1pbmF0aW9uLCBzZWUgdGhlCisgIC8vIGRlZmluaXRpb24gb2YgUmVnaXN0ZXJNYXBwaW5nVHJhY2tlciBpbiBSZWdpc3RlckZpbGUuaAorICBib29sIElzT3B0aW1pemFibGVNb3ZlOworCisgIC8vIE91dHB1dCBkZXBlbmRlbmNpZXMuCisgIC8vIE9uZSBlbnRyeSBwZXIgZWFjaCBpbXBsaWNpdCBhbmQgZXhwbGljaXQgcmVnaXN0ZXIgZGVmaW5pdGlvbi4KKyAgU21hbGxWZWN0b3I8V3JpdGVTdGF0ZSwgND4gRGVmczsKKworICAvLyBJbnB1dCBkZXBlbmRlbmNpZXMuCisgIC8vIE9uZSBlbnRyeSBwZXIgZWFjaCBpbXBsaWNpdCBhbmQgZXhwbGljaXQgcmVnaXN0ZXIgdXNlLgorICBTbWFsbFZlY3RvcjxSZWFkU3RhdGUsIDQ+IFVzZXM7CisKK3B1YmxpYzoKKyAgSW5zdHJ1Y3Rpb25CYXNlKGNvbnN0IEluc3RyRGVzYyAmRCkgOiBEZXNjKEQpLCBJc09wdGltaXphYmxlTW92ZShmYWxzZSkge30KKworICBTbWFsbFZlY3RvckltcGw8V3JpdGVTdGF0ZT4gJmdldERlZnMoKSB7IHJldHVybiBEZWZzOyB9CisgIGNvbnN0IEFycmF5UmVmPFdyaXRlU3RhdGU+IGdldERlZnMoKSBjb25zdCB7IHJldHVybiBEZWZzOyB9CisgIFNtYWxsVmVjdG9ySW1wbDxSZWFkU3RhdGU+ICZnZXRVc2VzKCkgeyByZXR1cm4gVXNlczsgfQorICBjb25zdCBBcnJheVJlZjxSZWFkU3RhdGU+IGdldFVzZXMoKSBjb25zdCB7IHJldHVybiBVc2VzOyB9CisgIGNvbnN0IEluc3RyRGVzYyAmZ2V0RGVzYygpIGNvbnN0IHsgcmV0dXJuIERlc2M7IH0KKworICB1bnNpZ25lZCBnZXRMYXRlbmN5KCkgY29uc3QgeyByZXR1cm4gRGVzYy5NYXhMYXRlbmN5OyB9CisKKyAgYm9vbCBoYXNEZXBlbmRlbnRVc2VycygpIGNvbnN0IHsKKyAgICByZXR1cm4gYW55X29mKERlZnMsCisgICAgICAgICAgICAgICAgICBbXShjb25zdCBXcml0ZVN0YXRlICZEZWYpIHsgcmV0dXJuIERlZi5nZXROdW1Vc2VycygpID4gMDsgfSk7CisgIH0KKworICB1bnNpZ25lZCBnZXROdW1Vc2VycygpIGNvbnN0IHsKKyAgICB1bnNpZ25lZCBOdW1Vc2VycyA9IDA7CisgICAgZm9yIChjb25zdCBXcml0ZVN0YXRlICZEZWYgOiBEZWZzKQorICAgICAgTnVtVXNlcnMgKz0gRGVmLmdldE51bVVzZXJzKCk7CisgICAgcmV0dXJuIE51bVVzZXJzOworICB9CisKKyAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgaW5zdHJ1Y3Rpb24gaXMgYSBjYW5kaWRhdGUgZm9yIG1vdmUgZWxpbWluYXRpb24uCisgIGJvb2wgaXNPcHRpbWl6YWJsZU1vdmUoKSBjb25zdCB7IHJldHVybiBJc09wdGltaXphYmxlTW92ZTsgfQorICB2b2lkIHNldE9wdGltaXphYmxlTW92ZSgpIHsgSXNPcHRpbWl6YWJsZU1vdmUgPSB0cnVlOyB9Cit9OworCisvLy8gQW4gaW5zdHJ1Y3Rpb24gcHJvcGFnYXRlZCB0aHJvdWdoIHRoZSBzaW11bGF0ZWQgaW5zdHJ1Y3Rpb24gcGlwZWxpbmUuCisvLy8KKy8vLyBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gbW9uaXRvciBjaGFuZ2VzIHRvIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiBpbnN0cnVjdGlvbnMKKy8vLyB0aGF0IGFyZSBzZW50IHRvIHRoZSB2YXJpb3VzIGNvbXBvbmVudHMgb2YgdGhlIHNpbXVsYXRlZCBoYXJkd2FyZSBwaXBlbGluZS4KK2NsYXNzIEluc3RydWN0aW9uIDogcHVibGljIEluc3RydWN0aW9uQmFzZSB7CisgIGVudW0gSW5zdHJTdGFnZSB7CisgICAgSVNfSU5WQUxJRCwgICAgLy8gSW5zdHJ1Y3Rpb24gaW4gYW4gaW52YWxpZCBzdGF0ZS4KKyAgICBJU19ESVNQQVRDSEVELCAvLyBJbnN0cnVjdGlvbiBkaXNwYXRjaGVkIGJ1dCBvcGVyYW5kcyBhcmUgbm90IHJlYWR5LgorICAgIElTX1BFTkRJTkcsICAgIC8vIEluc3RydWN0aW9uIGlzIG5vdCByZWFkeSwgYnV0IG9wZXJhbmQgbGF0ZW5jeSBpcyBrbm93bi4KKyAgICBJU19SRUFEWSwgICAgICAvLyBJbnN0cnVjdGlvbiBkaXNwYXRjaGVkIGFuZCBvcGVyYW5kcyByZWFkeS4KKyAgICBJU19FWEVDVVRJTkcsICAvLyBJbnN0cnVjdGlvbiBpc3N1ZWQuCisgICAgSVNfRVhFQ1VURUQsICAgLy8gSW5zdHJ1Y3Rpb24gZXhlY3V0ZWQuIFZhbHVlcyBhcmUgd3JpdHRlbiBiYWNrLgorICAgIElTX1JFVElSRUQgICAgIC8vIEluc3RydWN0aW9uIHJldGlyZWQuCisgIH07CisKKyAgLy8gVGhlIGN1cnJlbnQgaW5zdHJ1Y3Rpb24gc3RhZ2UuCisgIGVudW0gSW5zdHJTdGFnZSBTdGFnZTsKKworICAvLyBUaGlzIHZhbHVlIGRlZmF1bHRzIHRvIHRoZSBpbnN0cnVjdGlvbiBsYXRlbmN5LiBUaGlzIGluc3RydWN0aW9uIGlzCisgIC8vIGNvbnNpZGVyZWQgZXhlY3V0ZWQgd2hlbiBmaWVsZCBDeWNsZXNMZWZ0IGdvZXMgdG8gemVyby4KKyAgaW50IEN5Y2xlc0xlZnQ7CisKKyAgLy8gUmV0aXJlIFVuaXQgdG9rZW4gSUQgZm9yIHRoaXMgaW5zdHJ1Y3Rpb24uCisgIHVuc2lnbmVkIFJDVVRva2VuSUQ7CisKK3B1YmxpYzoKKyAgSW5zdHJ1Y3Rpb24oY29uc3QgSW5zdHJEZXNjICZEKQorICAgICAgOiBJbnN0cnVjdGlvbkJhc2UoRCksIFN0YWdlKElTX0lOVkFMSUQpLCBDeWNsZXNMZWZ0KFVOS05PV05fQ1lDTEVTKSwKKyAgICAgICAgUkNVVG9rZW5JRCgwKSB7fQorCisgIHVuc2lnbmVkIGdldFJDVVRva2VuSUQoKSBjb25zdCB7IHJldHVybiBSQ1VUb2tlbklEOyB9CisgIGludCBnZXRDeWNsZXNMZWZ0KCkgY29uc3QgeyByZXR1cm4gQ3ljbGVzTGVmdDsgfQorCisgIC8vIFRyYW5zaXRpb24gdG8gdGhlIGRpc3BhdGNoIHN0YWdlLCBhbmQgYXNzaWduIGEgUkNVVG9rZW4gdG8gdGhpcworICAvLyBpbnN0cnVjdGlvbi4gVGhlIFJDVVRva2VuIGlzIHVzZWQgdG8gdHJhY2sgdGhlIGNvbXBsZXRpb24gb2YgZXZlcnkKKyAgLy8gcmVnaXN0ZXIgd3JpdGUgcGVyZm9ybWVkIGJ5IHRoaXMgaW5zdHJ1Y3Rpb24uCisgIHZvaWQgZGlzcGF0Y2godW5zaWduZWQgUkNVVG9rZW5JRCk7CisKKyAgLy8gSW5zdHJ1Y3Rpb24gaXNzdWVkLiBUcmFuc2l0aW9uIHRvIHRoZSBJU19FWEVDVVRJTkcgc3RhdGUsIGFuZCB1cGRhdGUKKyAgLy8gYWxsIHRoZSBkZWZpbml0aW9ucy4KKyAgdm9pZCBleGVjdXRlKCk7CisKKyAgLy8gRm9yY2UgYSB0cmFuc2l0aW9uIGZyb20gdGhlIElTX0RJU1BBVENIRUQgc3RhdGUgdG8gdGhlIElTX1JFQURZIG9yCisgIC8vIElTX1BFTkRJTkcgc3RhdGUuIFN0YXRlIHRyYW5zaXRpb25zIG5vcm1hbGx5IG9jY3VyIGVpdGhlciBhdCB0aGUgYmVnaW5uaW5nCisgIC8vIG9mIGEgbmV3IGN5Y2xlIChzZWUgbWV0aG9kIGN5Y2xlRXZlbnQoKSksIG9yIGFzIGEgcmVzdWx0IG9mIGFub3RoZXIgaXNzdWUKKyAgLy8gZXZlbnQuIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBldmVyeSB0aW1lIHRoZSBpbnN0cnVjdGlvbiBtaWdodCBoYXZlIGNoYW5nZWQKKyAgLy8gaW4gc3RhdGUuIEl0IGludGVybmFsbHkgZGVsZWdhdGVzIHRvIG1ldGhvZCB1cGRhdGVEaXNwYXRjaGVkKCkgYW5kCisgIC8vIHVwZGF0ZVdhaXRpbmcoKS4KKyAgdm9pZCB1cGRhdGUoKTsKKyAgYm9vbCB1cGRhdGVEaXNwYXRjaGVkKCk7CisgIGJvb2wgdXBkYXRlUGVuZGluZygpOworCisgIGJvb2wgaXNEaXNwYXRjaGVkKCkgY29uc3QgeyByZXR1cm4gU3RhZ2UgPT0gSVNfRElTUEFUQ0hFRDsgfQorICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIFN0YWdlID09IElTX1BFTkRJTkc7IH0KKyAgYm9vbCBpc1JlYWR5KCkgY29uc3QgeyByZXR1cm4gU3RhZ2UgPT0gSVNfUkVBRFk7IH0KKyAgYm9vbCBpc0V4ZWN1dGluZygpIGNvbnN0IHsgcmV0dXJuIFN0YWdlID09IElTX0VYRUNVVElORzsgfQorICBib29sIGlzRXhlY3V0ZWQoKSBjb25zdCB7IHJldHVybiBTdGFnZSA9PSBJU19FWEVDVVRFRDsgfQorICBib29sIGlzUmV0aXJlZCgpIGNvbnN0IHsgcmV0dXJuIFN0YWdlID09IElTX1JFVElSRUQ7IH0KKworICBib29sIGlzRWxpbWluYXRlZCgpIGNvbnN0IHsKKyAgICByZXR1cm4gaXNSZWFkeSgpICYmIGdldERlZnMoKS5zaXplKCkgJiYKKyAgICAgICAgICAgYWxsX29mKGdldERlZnMoKSwKKyAgICAgICAgICAgICAgICAgIFtdKGNvbnN0IFdyaXRlU3RhdGUgJlcpIHsgcmV0dXJuIFcuaXNFbGltaW5hdGVkKCk7IH0pOworICB9CisKKyAgLy8gRm9yY2VzIGEgdHJhbnNpdGlvbiBmcm9tIHN0YXRlIElTX0RJU1BBVENIRUQgdG8gc3RhdGUgSVNfRVhFQ1VURUQuCisgIHZvaWQgZm9yY2VFeGVjdXRlZCgpOworCisgIHZvaWQgcmV0aXJlKCkgeworICAgIGFzc2VydChpc0V4ZWN1dGVkKCkgJiYgIkluc3RydWN0aW9uIGlzIGluIGFuIGludmFsaWQgc3RhdGUhIik7CisgICAgU3RhZ2UgPSBJU19SRVRJUkVEOworICB9CisKKyAgdm9pZCBjeWNsZUV2ZW50KCk7Cit9OworCisvLy8gQW4gSW5zdFJlZiBjb250YWlucyBib3RoIGEgU291cmNlTWdyIGluZGV4IGFuZCBJbnN0cnVjdGlvbiBwYWlyLiAgVGhlIGluZGV4CisvLy8gaXMgdXNlZCBhcyBhIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgaW5zdHJ1Y3Rpb24uICBNQ0Egd2lsbCBtYWtlIHVzZSBvZgorLy8vIHRoaXMgaW5kZXggYXMgYSBrZXkgdGhyb3VnaG91dCBNQ0EuCitjbGFzcyBJbnN0UmVmIHsKKyAgc3RkOjpwYWlyPHVuc2lnbmVkLCBJbnN0cnVjdGlvbiAqPiBEYXRhOworCitwdWJsaWM6CisgIEluc3RSZWYoKSA6IERhdGEoc3RkOjptYWtlX3BhaXIoMCwgbnVsbHB0cikpIHt9CisgIEluc3RSZWYodW5zaWduZWQgSW5kZXgsIEluc3RydWN0aW9uICpJKSA6IERhdGEoc3RkOjptYWtlX3BhaXIoSW5kZXgsIEkpKSB7fQorCisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbnN0UmVmICZPdGhlcikgY29uc3QgeyByZXR1cm4gRGF0YSA9PSBPdGhlci5EYXRhOyB9CisKKyAgdW5zaWduZWQgZ2V0U291cmNlSW5kZXgoKSBjb25zdCB7IHJldHVybiBEYXRhLmZpcnN0OyB9CisgIEluc3RydWN0aW9uICpnZXRJbnN0cnVjdGlvbigpIHsgcmV0dXJuIERhdGEuc2Vjb25kOyB9CisgIGNvbnN0IEluc3RydWN0aW9uICpnZXRJbnN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIERhdGEuc2Vjb25kOyB9CisKKyAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHJlZmVyZW5jZXMgYSB2YWxpZCBpbnN0cnVjdGlvbi4KKyAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIERhdGEuc2Vjb25kICE9IG51bGxwdHI7IH0KKworICAvLy8gSW52YWxpZGF0ZSB0aGlzIHJlZmVyZW5jZS4KKyAgdm9pZCBpbnZhbGlkYXRlKCkgeyBEYXRhLnNlY29uZCA9IG51bGxwdHI7IH0KKworI2lmbmRlZiBOREVCVUcKKyAgdm9pZCBwcmludChyYXdfb3N0cmVhbSAmT1MpIGNvbnN0IHsgT1MgPDwgZ2V0U291cmNlSW5kZXgoKTsgfQorI2VuZGlmCit9OworCisjaWZuZGVmIE5ERUJVRworaW5saW5lIHJhd19vc3RyZWFtICZvcGVyYXRvcjw8KHJhd19vc3RyZWFtICZPUywgY29uc3QgSW5zdFJlZiAmSVIpIHsKKyAgSVIucHJpbnQoT1MpOworICByZXR1cm4gT1M7Cit9CisjZW5kaWYKKworLy8vIEEgcmVmZXJlbmNlIHRvIGEgcmVnaXN0ZXIgd3JpdGUuCisvLy8KKy8vLyBUaGlzIGNsYXNzIGlzIG1haW5seSB1c2VkIGJ5IHRoZSByZWdpc3RlciBmaWxlIHRvIGRlc2NyaWJlIHJlZ2lzdGVyCisvLy8gbWFwcGluZ3MuIEl0IGNvcnJlbGF0ZXMgYSByZWdpc3RlciB3cml0ZSB0byB0aGUgc291cmNlIGluZGV4IG9mIHRoZQorLy8vIGRlZmluaW5nIGluc3RydWN0aW9uLgorY2xhc3MgV3JpdGVSZWYgeworICBzdGQ6OnBhaXI8dW5zaWduZWQsIFdyaXRlU3RhdGUgKj4gRGF0YTsKKyAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIElOVkFMSURfSUlEOworCitwdWJsaWM6CisgIFdyaXRlUmVmKCkgOiBEYXRhKElOVkFMSURfSUlELCBudWxscHRyKSB7fQorICBXcml0ZVJlZih1bnNpZ25lZCBTb3VyY2VJbmRleCwgV3JpdGVTdGF0ZSAqV1MpIDogRGF0YShTb3VyY2VJbmRleCwgV1MpIHt9CisKKyAgdW5zaWduZWQgZ2V0U291cmNlSW5kZXgoKSBjb25zdCB7IHJldHVybiBEYXRhLmZpcnN0OyB9CisgIGNvbnN0IFdyaXRlU3RhdGUgKmdldFdyaXRlU3RhdGUoKSBjb25zdCB7IHJldHVybiBEYXRhLnNlY29uZDsgfQorICBXcml0ZVN0YXRlICpnZXRXcml0ZVN0YXRlKCkgeyByZXR1cm4gRGF0YS5zZWNvbmQ7IH0KKyAgdm9pZCBpbnZhbGlkYXRlKCkgeyBEYXRhLnNlY29uZCA9IG51bGxwdHI7IH0KKyAgYm9vbCBpc1dyaXRlWmVybygpIGNvbnN0IHsKKyAgICBhc3NlcnQoaXNWYWxpZCgpICYmICJJbnZhbGlkIG51bGwgV3JpdGVTdGF0ZSBmb3VuZCEiKTsKKyAgICByZXR1cm4gZ2V0V3JpdGVTdGF0ZSgpLT5pc1dyaXRlWmVybygpOworICB9CisKKyAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHJlZ2lzdGVyIHdyaXRlIGhhcyBiZWVuIGV4ZWN1dGVkLCBhbmQgdGhlIG5ldworICAvLy8gcmVnaXN0ZXIgdmFsdWUgaXMgdGhlcmVmb3JlIGF2YWlsYWJsZSB0byB1c2Vycy4KKyAgYm9vbCBpc0F2YWlsYWJsZSgpIGNvbnN0IHsKKyAgICBpZiAoZ2V0U291cmNlSW5kZXgoKSA9PSBJTlZBTElEX0lJRCkKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjb25zdCBXcml0ZVN0YXRlICpXUyA9IGdldFdyaXRlU3RhdGUoKTsKKyAgICByZXR1cm4gIVdTIHx8IFdTLT5pc0V4ZWN1dGVkKCk7CisgIH0KKworICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBEYXRhLmZpcnN0ICE9IElOVkFMSURfSUlEICYmIERhdGEuc2Vjb25kOyB9CisgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXcml0ZVJlZiAmT3RoZXIpIGNvbnN0IHsgcmV0dXJuIERhdGEgPT0gT3RoZXIuRGF0YTsgfQorCisjaWZuZGVmIE5ERUJVRworICB2b2lkIGR1bXAoKSBjb25zdDsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgbWNhCit9IC8vIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZiAvLyBMTFZNX01DQV9JTlNUUlVDVElPTl9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9QaXBlbGluZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvUGlwZWxpbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzUwMzNmCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvUGlwZWxpbmUuaApAQCAtMCwwICsxLDc4IEBACisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQaXBlbGluZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8vIFxmaWxlCisvLy8KKy8vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBhbiBvcmRlcmVkIGNvbnRhaW5lciBvZiBzdGFnZXMgdGhhdCBzaW11bGF0ZSB0aGUKKy8vLyBwaXBlbGluZSBvZiBhIGhhcmR3YXJlIGJhY2tlbmQuCisvLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9NQ0FfUElQRUxJTkVfSAorI2RlZmluZSBMTFZNX01DQV9QSVBFTElORV9ICisKKyNpbmNsdWRlICJsbHZtL0FEVC9TbWFsbFZlY3Rvci5oIgorI2luY2x1ZGUgImxsdm0vTUNBL0hhcmR3YXJlVW5pdHMvU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAibGx2bS9NQ0EvU3RhZ2VzL1N0YWdlLmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0Vycm9yLmgiCisKK25hbWVzcGFjZSBsbHZtIHsKK25hbWVzcGFjZSBtY2EgeworCitjbGFzcyBIV0V2ZW50TGlzdGVuZXI7CisKKy8vLyBBIHBpcGVsaW5lIGZvciBhIHNwZWNpZmljIHN1YnRhcmdldC4KKy8vLworLy8vIEl0IGVtdWxhdGVzIGFuIG91dC1vZi1vcmRlciBleGVjdXRpb24gb2YgaW5zdHJ1Y3Rpb25zLiBJbnN0cnVjdGlvbnMgYXJlCisvLy8gZmV0Y2hlZCBmcm9tIGEgTUNJbnN0IHNlcXVlbmNlIG1hbmFnZWQgYnkgYW4gaW5pdGlhbCAnRmV0Y2gnIHN0YWdlLgorLy8vIEluc3RydWN0aW9ucyBhcmUgZmlyc3RseSBmZXRjaGVkLCB0aGVuIGRpc3BhdGNoZWQgdG8gdGhlIHNjaGVkdWxlcnMsIGFuZAorLy8vIHRoZW4gZXhlY3V0ZWQuCisvLy8KKy8vLyBUaGlzIGNsYXNzIHRyYWNrcyB0aGUgbGlmZXRpbWUgb2YgYW4gaW5zdHJ1Y3Rpb24gZnJvbSB0aGUgbW9tZW50IHdoZXJlCisvLy8gaXQgZ2V0cyBkaXNwYXRjaGVkIHRvIHRoZSBzY2hlZHVsZXJzLCB0byB0aGUgbW9tZW50IHdoZXJlIGl0IGZpbmlzaGVzCisvLy8gZXhlY3V0aW5nIGFuZCByZWdpc3RlciB3cml0ZXMgYXJlIGFyY2hpdGVjdHVyYWxseSBjb21taXR0ZWQuCisvLy8gSW4gcGFydGljdWxhciwgaXQgbW9uaXRvcnMgY2hhbmdlcyBpbiB0aGUgc3RhdGUgb2YgZXZlcnkgaW5zdHJ1Y3Rpb24KKy8vLyBpbiBmbGlnaHQuCisvLy8KKy8vLyBJbnN0cnVjdGlvbnMgYXJlIGV4ZWN1dGVkIGluIGEgbG9vcCBvZiBpdGVyYXRpb25zLiBUaGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMKKy8vLyBpcyBkZWZpbmVkIGJ5IHRoZSBTb3VyY2VNZ3Igb2JqZWN0LCB3aGljaCBpcyBtYW5hZ2VkIGJ5IHRoZSBpbml0aWFsIHN0YWdlCisvLy8gb2YgdGhlIGluc3RydWN0aW9uIHBpcGVsaW5lLgorLy8vCisvLy8gVGhlIFBpcGVsaW5lIGVudHJ5IHBvaW50IGlzIG1ldGhvZCAncnVuKCknIHdoaWNoIGV4ZWN1dGVzIGN5Y2xlcyBpbiBhIGxvb3AKKy8vLyB1bnRpbCB0aGVyZSBhcmUgbmV3IGluc3RydWN0aW9ucyB0byBkaXNwYXRjaCwgYW5kIG5vdCBldmVyeSBpbnN0cnVjdGlvbgorLy8vIGhhcyBiZWVuIHJldGlyZWQuCisvLy8KKy8vLyBJbnRlcm5hbGx5LCB0aGUgUGlwZWxpbmUgY29sbGVjdHMgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24gaW4gdGhlIGZvcm0gb2YKKy8vLyBoaXN0b2dyYW1zLiBGb3IgZXhhbXBsZSwgaXQgdHJhY2tzIGhvdyB0aGUgZGlzcGF0Y2ggZ3JvdXAgc2l6ZSBjaGFuZ2VzCisvLy8gb3ZlciB0aW1lLgorY2xhc3MgUGlwZWxpbmUgeworICBQaXBlbGluZShjb25zdCBQaXBlbGluZSAmUCkgPSBkZWxldGU7CisgIFBpcGVsaW5lICZvcGVyYXRvcj0oY29uc3QgUGlwZWxpbmUgJlApID0gZGVsZXRlOworCisgIC8vLyBBbiBvcmRlcmVkIGxpc3Qgb2Ygc3RhZ2VzIHRoYXQgZGVmaW5lIHRoaXMgaW5zdHJ1Y3Rpb24gcGlwZWxpbmUuCisgIFNtYWxsVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTdGFnZT4sIDg+IFN0YWdlczsKKyAgc3RkOjpzZXQ8SFdFdmVudExpc3RlbmVyICo+IExpc3RlbmVyczsKKyAgdW5zaWduZWQgQ3ljbGVzOworCisgIEVycm9yIHJ1bkN5Y2xlKCk7CisgIGJvb2wgaGFzV29ya1RvUHJvY2VzcygpOworICB2b2lkIG5vdGlmeUN5Y2xlQmVnaW4oKTsKKyAgdm9pZCBub3RpZnlDeWNsZUVuZCgpOworCitwdWJsaWM6CisgIFBpcGVsaW5lKCkgOiBDeWNsZXMoMCkge30KKyAgdm9pZCBhcHBlbmRTdGFnZShzdGQ6OnVuaXF1ZV9wdHI8U3RhZ2U+IFMpOworCisgIC8vLyBSZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2ltdWxhdGVkIGN5Y2xlcy4KKyAgRXhwZWN0ZWQ8dW5zaWduZWQ+IHJ1bigpOworCisgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihIV0V2ZW50TGlzdGVuZXIgKkxpc3RlbmVyKTsKK307Cit9IC8vIG5hbWVzcGFjZSBtY2EKK30gLy8gbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmIC8vIExMVk1fTUNBX1BJUEVMSU5FX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUNBL1NvdXJjZU1nci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvU291cmNlTWdyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJlMzFkYgotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUNBL1NvdXJjZU1nci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNvdXJjZU1nci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLy8gXGZpbGUKKy8vLyBUaGlzIGZpbGUgaW1wbGVtZW50cyBjbGFzcyBTb3VyY2VNZ3IuIENsYXNzIFNvdXJjZU1nciBhYnN0cmFjdHMgdGhlIGlucHV0CisvLy8gY29kZSBzZXF1ZW5jZSAoYSBzZXF1ZW5jZSBvZiBNQ0luc3QpLCBhbmQgYXNzaW5ncyB1bmlxdWUgaWRlbnRpZmllcnMgdG8KKy8vLyBldmVyeSBpbnN0cnVjdGlvbiBpbiB0aGUgc2VxdWVuY2UuCisvLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9NQ0FfU09VUkNFTUdSX0gKKyNkZWZpbmUgTExWTV9NQ0FfU09VUkNFTUdSX0gKKworI2luY2x1ZGUgImxsdm0vQURUL0FycmF5UmVmLmgiCisKK25hbWVzcGFjZSBsbHZtIHsKK25hbWVzcGFjZSBtY2EgeworCitjbGFzcyBJbnN0cnVjdGlvbjsKKwordHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQsIGNvbnN0IEluc3RydWN0aW9uICY+IFNvdXJjZVJlZjsKKworY2xhc3MgU291cmNlTWdyIHsKKyAgdXNpbmcgVW5pcXVlSW5zdCA9IHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvbj47CisgIEFycmF5UmVmPFVuaXF1ZUluc3Q+IFNlcXVlbmNlOworICB1bnNpZ25lZCBDdXJyZW50OworICBjb25zdCB1bnNpZ25lZCBJdGVyYXRpb25zOworICBzdGF0aWMgY29uc3QgdW5zaWduZWQgRGVmYXVsdEl0ZXJhdGlvbnMgPSAxMDA7CisKK3B1YmxpYzoKKyAgU291cmNlTWdyKEFycmF5UmVmPFVuaXF1ZUluc3Q+IFMsIHVuc2lnbmVkIEl0ZXIpCisgICAgICA6IFNlcXVlbmNlKFMpLCBDdXJyZW50KDApLCBJdGVyYXRpb25zKEl0ZXIgPyBJdGVyIDogRGVmYXVsdEl0ZXJhdGlvbnMpIHt9CisKKyAgdW5zaWduZWQgZ2V0TnVtSXRlcmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIEl0ZXJhdGlvbnM7IH0KKyAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIFNlcXVlbmNlLnNpemUoKTsgfQorICBib29sIGhhc05leHQoKSBjb25zdCB7IHJldHVybiBDdXJyZW50IDwgKEl0ZXJhdGlvbnMgKiBTZXF1ZW5jZS5zaXplKCkpOyB9CisgIHZvaWQgdXBkYXRlTmV4dCgpIHsgKytDdXJyZW50OyB9CisKKyAgU291cmNlUmVmIHBlZWtOZXh0KCkgY29uc3QgeworICAgIGFzc2VydChoYXNOZXh0KCkgJiYgIkFscmVhZHkgYXQgZW5kIG9mIHNlcXVlbmNlISIpOworICAgIHJldHVybiBTb3VyY2VSZWYoQ3VycmVudCwgKlNlcXVlbmNlW0N1cnJlbnQgJSBTZXF1ZW5jZS5zaXplKCldKTsKKyAgfQorCisgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gQXJyYXlSZWY8VW5pcXVlSW5zdD46OmNvbnN0X2l0ZXJhdG9yOworICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIFNlcXVlbmNlLmJlZ2luKCk7IH0KKyAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gU2VxdWVuY2UuZW5kKCk7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIG1jYQorfSAvLyBuYW1lc3BhY2UgbGx2bQorCisjZW5kaWYgLy8gTExWTV9NQ0FfU09VUkNFTUdSX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUNBL1N0YWdlcy9EaXNwYXRjaFN0YWdlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9TdGFnZXMvRGlzcGF0Y2hTdGFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzOWYwM2UKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9TdGFnZXMvRGlzcGF0Y2hTdGFnZS5oCkBAIC0wLDAgKzEsOTAgQEAKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGlzcGF0Y2hTdGFnZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLy8gXGZpbGUKKy8vLworLy8vIFRoaXMgZmlsZSBtb2RlbHMgdGhlIGRpc3BhdGNoIGNvbXBvbmVudCBvZiBhbiBpbnN0cnVjdGlvbiBwaXBlbGluZS4KKy8vLworLy8vIFRoZSBEaXNwYXRjaFN0YWdlIGlzIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyBpbnN0cnVjdGlvbiBkZXBlbmRlbmNpZXMKKy8vLyBhbmQgY29tbXVuaWNhdGluZyB0byB0aGUgc2ltdWxhdGVkIGluc3RydWN0aW9uIHNjaGVkdWxlciB0aGF0IGFuIGluc3RydWN0aW9uCisvLy8gaXMgcmVhZHkgdG8gYmUgc2NoZWR1bGVkIGZvciBleGVjdXRpb24uCisvLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9NQ0FfRElTUEFUQ0hfU1RBR0VfSAorI2RlZmluZSBMTFZNX01DQV9ESVNQQVRDSF9TVEFHRV9ICisKKyNpbmNsdWRlICJsbHZtL01DL01DUmVnaXN0ZXJJbmZvLmgiCisjaW5jbHVkZSAibGx2bS9NQy9NQ1N1YnRhcmdldEluZm8uaCIKKyNpbmNsdWRlICJsbHZtL01DQS9IV0V2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJsbHZtL01DQS9IYXJkd2FyZVVuaXRzL1JlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgImxsdm0vTUNBL0hhcmR3YXJlVW5pdHMvUmV0aXJlQ29udHJvbFVuaXQuaCIKKyNpbmNsdWRlICJsbHZtL01DQS9JbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgImxsdm0vTUNBL1N0YWdlcy9TdGFnZS5oIgorCituYW1lc3BhY2UgbGx2bSB7CituYW1lc3BhY2UgbWNhIHsKKworLy8gSW1wbGVtZW50cyB0aGUgaGFyZHdhcmUgZGlzcGF0Y2ggbG9naWMuCisvLworLy8gVGhpcyBjbGFzcyBpcyByZXNwb25zaWJsZSBmb3IgdGhlIGRpc3BhdGNoIHN0YWdlLCBpbiB3aGljaCBpbnN0cnVjdGlvbnMgYXJlCisvLyBkaXNwYXRjaGVkIGluIGdyb3VwcyB0byB0aGUgU2NoZWR1bGVyLiAgQW4gaW5zdHJ1Y3Rpb24gY2FuIGJlIGRpc3BhdGNoZWQgaWYKKy8vIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8gIDEpIFRoZXJlIGFyZSBlbm91Z2ggZW50cmllcyBpbiB0aGUgcmVvcmRlciBidWZmZXIgKHNlZSBjbGFzcworLy8gICAgIFJldGlyZUNvbnRyb2xVbml0KSB0byB3cml0ZSB0aGUgb3Bjb2RlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGluc3RydWN0aW9uLgorLy8gIDIpIFRoZXJlIGFyZSBlbm91Z2ggcGh5c2ljYWwgcmVnaXN0ZXJzIHRvIHJlbmFtZSBvdXRwdXQgcmVnaXN0ZXIgb3BlcmFuZHMuCisvLyAgMykgVGhlcmUgYXJlIGVub3VnaCBlbnRyaWVzIGF2YWlsYWJsZSBpbiB0aGUgdXNlZCBidWZmZXJlZCByZXNvdXJjZShzKS4KKy8vCisvLyBUaGUgbnVtYmVyIG9mIG1pY3JvIG9wY29kZXMgdGhhdCBjYW4gYmUgZGlzcGF0Y2hlZCBpbiBvbmUgY3ljbGUgaXMgbGltaXRlZCBieQorLy8gdGhlIHZhbHVlIG9mIGZpZWxkICdEaXNwYXRjaFdpZHRoJy4gQSAiZHluYW1pYyBkaXNwYXRjaCBzdGFsbCIgb2NjdXJzIHdoZW4KKy8vIHByb2Nlc3NvciByZXNvdXJjZXMgYXJlIG5vdCBhdmFpbGFibGUuIERpc3BhdGNoIHN0YWxsIGV2ZW50cyBhcmUgY291bnRlZAorLy8gZHVyaW5nIHRoZSBlbnRpcmUgZXhlY3V0aW9uIG9mIHRoZSBjb2RlLCBhbmQgZGlzcGxheWVkIGJ5IHRoZSBwZXJmb3JtYW5jZQorLy8gcmVwb3J0IHdoZW4gZmxhZyAnLWRpc3BhdGNoLXN0YXRzJyBpcyBzcGVjaWZpZWQuCisvLworLy8gSWYgdGhlIG51bWJlciBvZiBtaWNybyBvcGNvZGVzIGV4Y2VlZGVzIERpc3BhdGNoV2lkdGgsIHRoZW4gdGhlIGluc3RydWN0aW9uCisvLyBpcyBkaXNwYXRjaGVkIGluIG11bHRpcGxlIGN5Y2xlcy4KK2NsYXNzIERpc3BhdGNoU3RhZ2UgZmluYWwgOiBwdWJsaWMgU3RhZ2UgeworICB1bnNpZ25lZCBEaXNwYXRjaFdpZHRoOworICB1bnNpZ25lZCBBdmFpbGFibGVFbnRyaWVzOworICB1bnNpZ25lZCBDYXJyeU92ZXI7CisgIEluc3RSZWYgQ2FycmllZE92ZXI7CisgIGNvbnN0IE1DU3VidGFyZ2V0SW5mbyAmU1RJOworICBSZXRpcmVDb250cm9sVW5pdCAmUkNVOworICBSZWdpc3RlckZpbGUgJlBSRjsKKworICBib29sIGNoZWNrUkNVKGNvbnN0IEluc3RSZWYgJklSKSBjb25zdDsKKyAgYm9vbCBjaGVja1BSRihjb25zdCBJbnN0UmVmICZJUikgY29uc3Q7CisgIGJvb2wgY2FuRGlzcGF0Y2goY29uc3QgSW5zdFJlZiAmSVIpIGNvbnN0OworICBFcnJvciBkaXNwYXRjaChJbnN0UmVmIElSKTsKKworICB2b2lkIG5vdGlmeUluc3RydWN0aW9uRGlzcGF0Y2hlZChjb25zdCBJbnN0UmVmICZJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8dW5zaWduZWQ+IFVzZWRQaHlzUmVncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdU9wcykgY29uc3Q7CisKK3B1YmxpYzoKKyAgRGlzcGF0Y2hTdGFnZShjb25zdCBNQ1N1YnRhcmdldEluZm8gJlN1YnRhcmdldCwgY29uc3QgTUNSZWdpc3RlckluZm8gJk1SSSwKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBNYXhEaXNwYXRjaFdpZHRoLCBSZXRpcmVDb250cm9sVW5pdCAmUiwKKyAgICAgICAgICAgICAgICBSZWdpc3RlckZpbGUgJkYpCisgICAgICA6IERpc3BhdGNoV2lkdGgoTWF4RGlzcGF0Y2hXaWR0aCksIEF2YWlsYWJsZUVudHJpZXMoTWF4RGlzcGF0Y2hXaWR0aCksCisgICAgICAgIENhcnJ5T3ZlcigwVSksIENhcnJpZWRPdmVyKCksIFNUSShTdWJ0YXJnZXQpLCBSQ1UoUiksIFBSRihGKSB7fQorCisgIGJvb2wgaXNBdmFpbGFibGUoY29uc3QgSW5zdFJlZiAmSVIpIGNvbnN0IG92ZXJyaWRlOworCisgIC8vIFRoZSBkaXNwYXRjaCBsb2dpYyBpbnRlcm5hbGx5IGRvZXNuJ3QgYnVmZmVyIGluc3RydWN0aW9ucy4gU28gdGhlcmUgaXMKKyAgLy8gbmV2ZXIgd29yayB0byBkbyBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5IGN5Y2xlLgorICBib29sIGhhc1dvcmtUb0NvbXBsZXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgRXJyb3IgY3ljbGVTdGFydCgpIG92ZXJyaWRlOworICBFcnJvciBleGVjdXRlKEluc3RSZWYgJklSKSBvdmVycmlkZTsKKworI2lmbmRlZiBOREVCVUcKKyAgdm9pZCBkdW1wKCkgY29uc3Q7CisjZW5kaWYKK307Cit9IC8vIG5hbWVzcGFjZSBtY2EKK30gLy8gbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmIC8vIExMVk1fTUNBX0RJU1BBVENIX1NUQUdFX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUNBL1N0YWdlcy9FbnRyeVN0YWdlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9TdGFnZXMvRW50cnlTdGFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YTJkYWYKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9TdGFnZXMvRW50cnlTdGFnZS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFbnRyeVN0YWdlLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLy8gXGZpbGUKKy8vLworLy8vIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBFbnRyeSBzdGFnZSBvZiBhbiBpbnN0cnVjdGlvbiBwaXBlbGluZS4gIEl0cyBzb2xlCisvLy8gcHVycG9zZSBpbiBsaWZlIGlzIHRvIHBpY2sgaW5zdHJ1Y3Rpb25zIGluIHNlcXVlbmNlIGFuZCBtb3ZlIHRoZW0gdG8gdGhlCisvLy8gbmV4dCBwaXBlbGluZSBzdGFnZS4KKy8vLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX01DQV9FTlRSWV9TVEFHRV9ICisjZGVmaW5lIExMVk1fTUNBX0VOVFJZX1NUQUdFX0gKKworI2luY2x1ZGUgImxsdm0vQURUL1NtYWxsVmVjdG9yLmgiCisjaW5jbHVkZSAibGx2bS9NQ0EvU291cmNlTWdyLmgiCisjaW5jbHVkZSAibGx2bS9NQ0EvU3RhZ2VzL1N0YWdlLmgiCisKK25hbWVzcGFjZSBsbHZtIHsKK25hbWVzcGFjZSBtY2EgeworCitjbGFzcyBFbnRyeVN0YWdlIGZpbmFsIDogcHVibGljIFN0YWdlIHsKKyAgSW5zdFJlZiBDdXJyZW50SW5zdHJ1Y3Rpb247CisgIFNtYWxsVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJbnN0cnVjdGlvbj4sIDE2PiBJbnN0cnVjdGlvbnM7CisgIFNvdXJjZU1nciAmU007CisgIHVuc2lnbmVkIE51bVJldGlyZWQ7CisKKyAgLy8gVXBkYXRlcyB0aGUgcHJvZ3JhbSBjb3VudGVyLCBhbmQgc2V0cyAnQ3VycmVudEluc3RydWN0aW9uJy4KKyAgdm9pZCBnZXROZXh0SW5zdHJ1Y3Rpb24oKTsKKworICBFbnRyeVN0YWdlKGNvbnN0IEVudHJ5U3RhZ2UgJk90aGVyKSA9IGRlbGV0ZTsKKyAgRW50cnlTdGFnZSAmb3BlcmF0b3I9KGNvbnN0IEVudHJ5U3RhZ2UgJk90aGVyKSA9IGRlbGV0ZTsKKworcHVibGljOgorICBFbnRyeVN0YWdlKFNvdXJjZU1nciAmU00pIDogQ3VycmVudEluc3RydWN0aW9uKCksIFNNKFNNKSwgTnVtUmV0aXJlZCgwKSB7IH0KKworICBib29sIGlzQXZhaWxhYmxlKGNvbnN0IEluc3RSZWYgJklSKSBjb25zdCBvdmVycmlkZTsKKyAgYm9vbCBoYXNXb3JrVG9Db21wbGV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICBFcnJvciBleGVjdXRlKEluc3RSZWYgJklSKSBvdmVycmlkZTsKKyAgRXJyb3IgY3ljbGVTdGFydCgpIG92ZXJyaWRlOworICBFcnJvciBjeWNsZUVuZCgpIG92ZXJyaWRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgbWNhCit9IC8vIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZiAvLyBMTFZNX01DQV9GRVRDSF9TVEFHRV9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9TdGFnZXMvRXhlY3V0ZVN0YWdlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9TdGFnZXMvRXhlY3V0ZVN0YWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM5ZWFlMAotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUNBL1N0YWdlcy9FeGVjdXRlU3RhZ2UuaApAQCAtMCwwICsxLDc5IEBACisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhlY3V0ZVN0YWdlLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8vIFxmaWxlCisvLy8KKy8vLyBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgZXhlY3V0aW9uIHN0YWdlIG9mIGEgZGVmYXVsdCBpbnN0cnVjdGlvbiBwaXBlbGluZS4KKy8vLworLy8vIFRoZSBFeGVjdXRlU3RhZ2UgaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoZSBoYXJkd2FyZSBzY2hlZHVsZXIKKy8vLyBhbmQgaXNzdWluZyBub3RpZmljYXRpb25zIHRoYXQgYW4gaW5zdHJ1Y3Rpb24gaGFzIGJlZW4gZXhlY3V0ZWQuCisvLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9NQ0FfRVhFQ1VURV9TVEFHRV9ICisjZGVmaW5lIExMVk1fTUNBX0VYRUNVVEVfU1RBR0VfSAorCisjaW5jbHVkZSAibGx2bS9BRFQvQXJyYXlSZWYuaCIKKyNpbmNsdWRlICJsbHZtL01DQS9IYXJkd2FyZVVuaXRzL1NjaGVkdWxlci5oIgorI2luY2x1ZGUgImxsdm0vTUNBL0luc3RydWN0aW9uLmgiCisjaW5jbHVkZSAibGx2bS9NQ0EvU3RhZ2VzL1N0YWdlLmgiCisKK25hbWVzcGFjZSBsbHZtIHsKK25hbWVzcGFjZSBtY2EgeworCitjbGFzcyBFeGVjdXRlU3RhZ2UgZmluYWwgOiBwdWJsaWMgU3RhZ2UgeworICBTY2hlZHVsZXIgJkhXUzsKKworICBFcnJvciBpc3N1ZUluc3RydWN0aW9uKEluc3RSZWYgJklSKTsKKworICAvLyBDYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIGN5Y2xlIHRvIGlzc3VlIGFscmVhZHkgZGlzcGF0Y2hlZAorICAvLyBpbnN0cnVjdGlvbnMgdG8gdGhlIHVuZGVybHlpbmcgcGlwZWxpbmVzLgorICBFcnJvciBpc3N1ZVJlYWR5SW5zdHJ1Y3Rpb25zKCk7CisKKyAgLy8gVXNlZCB0byBub3RpZnkgaW5zdHJ1Y3Rpb25zIGVsaW1pbmF0ZWQgYXQgcmVnaXN0ZXIgcmVuYW1pbmcgc3RhZ2UuCisgIEVycm9yIGhhbmRsZUluc3RydWN0aW9uRWxpbWluYXRlZChJbnN0UmVmICZJUik7CisKKyAgRXhlY3V0ZVN0YWdlKGNvbnN0IEV4ZWN1dGVTdGFnZSAmT3RoZXIpID0gZGVsZXRlOworICBFeGVjdXRlU3RhZ2UgJm9wZXJhdG9yPShjb25zdCBFeGVjdXRlU3RhZ2UgJk90aGVyKSA9IGRlbGV0ZTsKKworcHVibGljOgorICBFeGVjdXRlU3RhZ2UoU2NoZWR1bGVyICZTKSA6IFN0YWdlKCksIEhXUyhTKSB7fQorCisgIC8vIFRoaXMgc3RhZ2Ugd29ya3MgdW5kZXIgdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgUGlwZWxpbmUgd2lsbCBldmVudHVhbGx5CisgIC8vIGV4ZWN1dGUgYSByZXRpcmUgc3RhZ2UuIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgaWYgcGlwZWxpbmVzIGFuZC9vcgorICAvLyBzY2hlZHVsZXJzIGhhdmUgaW5zdHJ1Y3Rpb25zIHRvIHByb2Nlc3MsIGJlY2F1c2UgdGhvc2UgaW5zdHJ1Y3Rpb25zIGFyZQorICAvLyBhbHNvIHRyYWNrZWQgYnkgdGhlIHJldGlyZSBjb250cm9sIHVuaXQuIFRoYXQgbWVhbnMsCisgIC8vIFJldGlyZUNvbnRyb2xVbml0OjpoYXNXb3JrVG9Db21wbGV0ZSgpIGlzIHJlc3BvbnNpYmxlIGZvciBjaGVja2luZyBpZiB0aGVyZQorICAvLyBhcmUgc3RpbGwgaW5zdHJ1Y3Rpb25zIGluLWZsaWdodCBpbiB0aGUgb3V0LW9mLW9yZGVyIGJhY2tlbmQuCisgIGJvb2wgaGFzV29ya1RvQ29tcGxldGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICBib29sIGlzQXZhaWxhYmxlKGNvbnN0IEluc3RSZWYgJklSKSBjb25zdCBvdmVycmlkZTsKKworICAvLyBOb3RpZmllcyB0aGUgc2NoZWR1bGVyIHRoYXQgYSBuZXcgY3ljbGUganVzdCBzdGFydGVkLgorICAvLworICAvLyBUaGlzIG1ldGhvZCBub3RpZmllcyB0aGUgc2NoZWR1bGVyIHRoYXQgYSBuZXcgY3ljbGUgc3RhcnRlZC4KKyAgLy8gVGhpcyBtZXRob2QgaXMgYWxzbyByZXNwb25zaWJsZSBmb3Igbm90aWZ5aW5nIGxpc3RlbmVycyBhYm91dCBpbnN0cnVjdGlvbnMKKyAgLy8gc3RhdGUgY2hhbmdlcywgYW5kIHByb2Nlc3NvciByZXNvdXJjZXMgZnJlZWQgYnkgdGhlIHNjaGVkdWxlci4KKyAgLy8gSW5zdHJ1Y3Rpb25zIHRoYXQgdHJhbnNpdGlvbmVkIHRvIHRoZSAnRXhlY3V0ZWQnIHN0YXRlIGFyZSBhdXRvbWF0aWNhbGx5CisgIC8vIG1vdmVkIHRvIHRoZSBuZXh0IHN0YWdlIChpLmUuIFJldGlyZVN0YWdlKS4KKyAgRXJyb3IgY3ljbGVTdGFydCgpIG92ZXJyaWRlOworICBFcnJvciBleGVjdXRlKEluc3RSZWYgJklSKSBvdmVycmlkZTsKKworICB2b2lkIG5vdGlmeUluc3RydWN0aW9uSXNzdWVkKAorICAgICAgY29uc3QgSW5zdFJlZiAmSVIsCisgICAgICBNdXRhYmxlQXJyYXlSZWY8c3RkOjpwYWlyPFJlc291cmNlUmVmLCBSZXNvdXJjZUN5Y2xlcz4+IFVzZWQpIGNvbnN0OworICB2b2lkIG5vdGlmeUluc3RydWN0aW9uRXhlY3V0ZWQoY29uc3QgSW5zdFJlZiAmSVIpIGNvbnN0OworICB2b2lkIG5vdGlmeUluc3RydWN0aW9uUmVhZHkoY29uc3QgSW5zdFJlZiAmSVIpIGNvbnN0OworICB2b2lkIG5vdGlmeVJlc291cmNlQXZhaWxhYmxlKGNvbnN0IFJlc291cmNlUmVmICZSUikgY29uc3Q7CisKKyAgLy8gTm90aWZ5IGxpc3RlbmVycyB0aGF0IGJ1ZmZlcmVkIHJlc291cmNlcyBoYXZlIGJlZW4gY29uc3VtZWQgb3IgZnJlZWQuCisgIHZvaWQgbm90aWZ5UmVzZXJ2ZWRPclJlbGVhc2VkQnVmZmVycyhjb25zdCBJbnN0UmVmICZJUiwgYm9vbCBSZXNlcnZlZCkgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBtY2EKK30gLy8gbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmIC8vIExMVk1fTUNBX0VYRUNVVEVfU1RBR0VfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvU3RhZ2VzL0luc3RydWN0aW9uVGFibGVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9TdGFnZXMvSW5zdHJ1Y3Rpb25UYWJsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjQ2M2M5Ci0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvU3RhZ2VzL0luc3RydWN0aW9uVGFibGVzLmgKQEAgLTAsMCArMSw0NSBAQAorLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSW5zdHJ1Y3Rpb25UYWJsZXMuaCAtLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vLyBcZmlsZQorLy8vCisvLy8gVGhpcyBmaWxlIGltcGxlbWVudHMgYSBjdXN0b20gc3RhZ2UgdG8gZ2VuZXJhdGUgaW5zdHJ1Y3Rpb24gdGFibGVzLgorLy8vIFNlZSB0aGUgZGVzY3JpcHRpb24gb2YgY29tbWFuZC1saW5lIGZsYWcgLWluc3RydWN0aW9uLXRhYmxlcyBpbgorLy8vIGRvY3MvQ29tbWFuZEd1aWRlL2x2bS1tY2EucnN0CisvLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9NQ0FfSU5TVFJVQ1RJT05UQUJMRVNfSAorI2RlZmluZSBMTFZNX01DQV9JTlNUUlVDVElPTlRBQkxFU19ICisKKyNpbmNsdWRlICJsbHZtL0FEVC9TbWFsbFZlY3Rvci5oIgorI2luY2x1ZGUgImxsdm0vTUMvTUNTY2hlZHVsZS5oIgorI2luY2x1ZGUgImxsdm0vTUNBL0hhcmR3YXJlVW5pdHMvU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAibGx2bS9NQ0EvU3RhZ2VzL1N0YWdlLmgiCisjaW5jbHVkZSAibGx2bS9NQ0EvU3VwcG9ydC5oIgorCituYW1lc3BhY2UgbGx2bSB7CituYW1lc3BhY2UgbWNhIHsKKworY2xhc3MgSW5zdHJ1Y3Rpb25UYWJsZXMgZmluYWwgOiBwdWJsaWMgU3RhZ2UgeworICBjb25zdCBNQ1NjaGVkTW9kZWwgJlNNOworICBTbWFsbFZlY3RvcjxzdGQ6OnBhaXI8UmVzb3VyY2VSZWYsIFJlc291cmNlQ3ljbGVzPiwgND4gVXNlZFJlc291cmNlczsKKyAgU21hbGxWZWN0b3I8dWludDY0X3QsIDg+IE1hc2tzOworCitwdWJsaWM6CisgIEluc3RydWN0aW9uVGFibGVzKGNvbnN0IE1DU2NoZWRNb2RlbCAmTW9kZWwpCisgICAgICA6IFN0YWdlKCksIFNNKE1vZGVsKSwgTWFza3MoTW9kZWwuZ2V0TnVtUHJvY1Jlc291cmNlS2luZHMoKSkgeworICAgIGNvbXB1dGVQcm9jUmVzb3VyY2VNYXNrcyhNb2RlbCwgTWFza3MpOworICB9CisKKyAgYm9vbCBoYXNXb3JrVG9Db21wbGV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgIEVycm9yIGV4ZWN1dGUoSW5zdFJlZiAmSVIpIG92ZXJyaWRlOworfTsKK30gLy8gbmFtZXNwYWNlIG1jYQorfSAvLyBuYW1lc3BhY2UgbGx2bQorCisjZW5kaWYgLy8gTExWTV9NQ0FfSU5TVFJVQ1RJT05UQUJMRVNfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvU3RhZ2VzL1JldGlyZVN0YWdlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9TdGFnZXMvUmV0aXJlU3RhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGMyMTZhCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvU3RhZ2VzL1JldGlyZVN0YWdlLmgKQEAgLTAsMCArMSw0NyBAQAorLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJldGlyZVN0YWdlLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vLyBcZmlsZQorLy8vCisvLy8gVGhpcyBmaWxlIGRlZmluZXMgdGhlIHJldGlyZSBzdGFnZSBvZiBhIGRlZmF1bHQgaW5zdHJ1Y3Rpb24gcGlwZWxpbmUuCisvLy8gVGhlIFJldGlyZVN0YWdlIHJlcHJlc2VudHMgdGhlIHByb2Nlc3MgbG9naWMgdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGUKKy8vLyBzaW11bGF0ZWQgUmV0aXJlQ29udHJvbFVuaXQgaGFyZHdhcmUuCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX01DQV9SRVRJUkVfU1RBR0VfSAorI2RlZmluZSBMTFZNX01DQV9SRVRJUkVfU1RBR0VfSAorCisjaW5jbHVkZSAibGx2bS9NQ0EvSGFyZHdhcmVVbml0cy9SZWdpc3RlckZpbGUuaCIKKyNpbmNsdWRlICJsbHZtL01DQS9IYXJkd2FyZVVuaXRzL1JldGlyZUNvbnRyb2xVbml0LmgiCisjaW5jbHVkZSAibGx2bS9NQ0EvU3RhZ2VzL1N0YWdlLmgiCisKK25hbWVzcGFjZSBsbHZtIHsKK25hbWVzcGFjZSBtY2EgeworCitjbGFzcyBSZXRpcmVTdGFnZSBmaW5hbCA6IHB1YmxpYyBTdGFnZSB7CisgIC8vIE93bmVyIHdpbGwgZ28gYXdheSB3aGVuIHdlIG1vdmUgbGlzdGVuZXJzL2V2ZW50aW5nIHRvIHRoZSBzdGFnZXMuCisgIFJldGlyZUNvbnRyb2xVbml0ICZSQ1U7CisgIFJlZ2lzdGVyRmlsZSAmUFJGOworCisgIFJldGlyZVN0YWdlKGNvbnN0IFJldGlyZVN0YWdlICZPdGhlcikgPSBkZWxldGU7CisgIFJldGlyZVN0YWdlICZvcGVyYXRvcj0oY29uc3QgUmV0aXJlU3RhZ2UgJk90aGVyKSA9IGRlbGV0ZTsKKworcHVibGljOgorICBSZXRpcmVTdGFnZShSZXRpcmVDb250cm9sVW5pdCAmUiwgUmVnaXN0ZXJGaWxlICZGKQorICAgICAgOiBTdGFnZSgpLCBSQ1UoUiksIFBSRihGKSB7fQorCisgIGJvb2wgaGFzV29ya1RvQ29tcGxldGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhUkNVLmlzRW1wdHkoKTsgfQorICBFcnJvciBjeWNsZVN0YXJ0KCkgb3ZlcnJpZGU7CisgIEVycm9yIGV4ZWN1dGUoSW5zdFJlZiAmSVIpIG92ZXJyaWRlOworICB2b2lkIG5vdGlmeUluc3RydWN0aW9uUmV0aXJlZChjb25zdCBJbnN0UmVmICZJUikgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBtY2EKK30gLy8gbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmIC8vIExMVk1fTUNBX1JFVElSRV9TVEFHRV9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9TdGFnZXMvU3RhZ2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vTUNBL1N0YWdlcy9TdGFnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YjI0MmMKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9TdGFnZXMvU3RhZ2UuaApAQCAtMCwwICsxLDg3IEBACisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RhZ2UuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8vIFxmaWxlCisvLy8KKy8vLyBUaGlzIGZpbGUgZGVmaW5lcyBhIHN0YWdlLgorLy8vIEEgY2hhaW4gb2Ygc3RhZ2VzIGNvbXBvc2UgYW4gaW5zdHJ1Y3Rpb24gcGlwZWxpbmUuCisvLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9NQ0FfU1RBR0VfSAorI2RlZmluZSBMTFZNX01DQV9TVEFHRV9ICisKKyNpbmNsdWRlICJsbHZtL01DQS9IV0V2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvRXJyb3IuaCIKKyNpbmNsdWRlIDxzZXQ+CisKK25hbWVzcGFjZSBsbHZtIHsKK25hbWVzcGFjZSBtY2EgeworCitjbGFzcyBJbnN0UmVmOworCitjbGFzcyBTdGFnZSB7CisgIFN0YWdlICpOZXh0SW5TZXF1ZW5jZTsKKyAgc3RkOjpzZXQ8SFdFdmVudExpc3RlbmVyICo+IExpc3RlbmVyczsKKworICBTdGFnZShjb25zdCBTdGFnZSAmT3RoZXIpID0gZGVsZXRlOworICBTdGFnZSAmb3BlcmF0b3I9KGNvbnN0IFN0YWdlICZPdGhlcikgPSBkZWxldGU7CisKK3Byb3RlY3RlZDoKKyAgY29uc3Qgc3RkOjpzZXQ8SFdFdmVudExpc3RlbmVyICo+ICZnZXRMaXN0ZW5lcnMoKSBjb25zdCB7IHJldHVybiBMaXN0ZW5lcnM7IH0KKworcHVibGljOgorICBTdGFnZSgpIDogTmV4dEluU2VxdWVuY2UobnVsbHB0cikge30KKyAgdmlydHVhbCB+U3RhZ2UoKTsKKworICAvLy8gUmV0dXJucyB0cnVlIGlmIGl0IGNhbiBleGVjdXRlIElSIGR1cmluZyB0aGlzIGN5Y2xlLgorICB2aXJ0dWFsIGJvb2wgaXNBdmFpbGFibGUoY29uc3QgSW5zdFJlZiAmSVIpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAvLy8gUmV0dXJucyB0cnVlIGlmIHNvbWUgaW5zdHJ1Y3Rpb25zIGFyZSBzdGlsbCBleGVjdXRpbmcgdGhpcyBzdGFnZS4KKyAgdmlydHVhbCBib29sIGhhc1dvcmtUb0NvbXBsZXRlKCkgY29uc3QgPSAwOworCisgIC8vLyBDYWxsZWQgb25jZSBhdCB0aGUgc3RhcnQgb2YgZWFjaCBjeWNsZS4gIFRoaXMgY2FuIGJlIHVzZWQgYXMgYSBzZXR1cAorICAvLy8gcGhhc2UgdG8gcHJlcGFyZSBmb3IgdGhlIGV4ZWN1dGlvbnMgZHVyaW5nIHRoZSBjeWNsZS4KKyAgdmlydHVhbCBFcnJvciBjeWNsZVN0YXJ0KCkgeyByZXR1cm4gRXJyb3JTdWNjZXNzKCk7IH0KKworICAvLy8gQ2FsbGVkIG9uY2UgYXQgdGhlIGVuZCBvZiBlYWNoIGN5Y2xlLgorICB2aXJ0dWFsIEVycm9yIGN5Y2xlRW5kKCkgeyByZXR1cm4gRXJyb3JTdWNjZXNzKCk7IH0KKworICAvLy8gVGhlIHByaW1hcnkgYWN0aW9uIHRoYXQgdGhpcyBzdGFnZSBwZXJmb3JtcyBvbiBpbnN0cnVjdGlvbiBJUi4KKyAgdmlydHVhbCBFcnJvciBleGVjdXRlKEluc3RSZWYgJklSKSA9IDA7CisKKyAgdm9pZCBzZXROZXh0SW5TZXF1ZW5jZShTdGFnZSAqTmV4dFN0YWdlKSB7CisgICAgYXNzZXJ0KCFOZXh0SW5TZXF1ZW5jZSAmJiAiVGhpcyBzdGFnZSBhbHJlYWR5IGhhcyBhIE5leHRJblNlcXVlbmNlISIpOworICAgIE5leHRJblNlcXVlbmNlID0gTmV4dFN0YWdlOworICB9CisKKyAgYm9vbCBjaGVja05leHRTdGFnZShjb25zdCBJbnN0UmVmICZJUikgY29uc3QgeworICAgIHJldHVybiBOZXh0SW5TZXF1ZW5jZSAmJiBOZXh0SW5TZXF1ZW5jZS0+aXNBdmFpbGFibGUoSVIpOworICB9CisKKyAgLy8vIENhbGxlZCB3aGVuIGFuIGluc3RydWN0aW9uIGlzIHJlYWR5IHRvIG1vdmUgdGhlIG5leHQgcGlwZWxpbmUgc3RhZ2UuCisgIC8vLworICAvLy8gU3RhZ2VzIGFyZSByZXNwb25zaWJsZSBmb3IgbW92aW5nIGluc3RydWN0aW9ucyB0byB0aGVpciBpbW1lZGlhdGUKKyAgLy8vIHN1Y2Nlc3NvciBzdGFnZXMuCisgIEVycm9yIG1vdmVUb1RoZU5leHRTdGFnZShJbnN0UmVmICZJUikgeworICAgIGFzc2VydChjaGVja05leHRTdGFnZShJUikgJiYgIk5leHQgc3RhZ2UgaXMgbm90IHJlYWR5ISIpOworICAgIHJldHVybiBOZXh0SW5TZXF1ZW5jZS0+ZXhlY3V0ZShJUik7CisgIH0KKworICAvLy8gQWRkIGEgbGlzdGVuZXIgdG8gcmVjZWl2ZSBjYWxsYmFja3MgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhpcyBzdGFnZS4KKyAgdm9pZCBhZGRMaXN0ZW5lcihIV0V2ZW50TGlzdGVuZXIgKkxpc3RlbmVyKTsKKworICAvLy8gTm90aWZ5IGxpc3RlbmVycyBvZiBhIHBhcnRpY3VsYXIgaGFyZHdhcmUgZXZlbnQuCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBFdmVudFQ+IHZvaWQgbm90aWZ5RXZlbnQoY29uc3QgRXZlbnRUICZFdmVudCkgY29uc3QgeworICAgIGZvciAoSFdFdmVudExpc3RlbmVyICpMaXN0ZW5lciA6IExpc3RlbmVycykKKyAgICAgIExpc3RlbmVyLT5vbkV2ZW50KEV2ZW50KTsKKyAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgbWNhCit9IC8vIG5hbWVzcGFjZSBsbHZtCisjZW5kaWYgLy8gTExWTV9NQ0FfU1RBR0VfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvU3VwcG9ydC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9NQ0EvU3VwcG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMzZlZDQKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL01DQS9TdXBwb3J0LmgKQEAgLTAsMCArMSwxMDcgQEAKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN1cHBvcnQuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLy8gXGZpbGUKKy8vLworLy8vIEhlbHBlciBmdW5jdGlvbnMgdXNlZCBieSB2YXJpb3VzIHBpcGVsaW5lIGNvbXBvbmVudHMuCisvLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9NQ0FfU1VQUE9SVF9ICisjZGVmaW5lIExMVk1fTUNBX1NVUFBPUlRfSAorCisjaW5jbHVkZSAibGx2bS9BRFQvQXJyYXlSZWYuaCIKKyNpbmNsdWRlICJsbHZtL0FEVC9TbWFsbFZlY3Rvci5oIgorI2luY2x1ZGUgImxsdm0vTUMvTUNTY2hlZHVsZS5oIgorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9FcnJvci5oIgorCituYW1lc3BhY2UgbGx2bSB7CituYW1lc3BhY2UgbWNhIHsKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBJbnN0cnVjdGlvbkVycm9yIDogcHVibGljIEVycm9ySW5mbzxJbnN0cnVjdGlvbkVycm9yPFQ+PiB7CitwdWJsaWM6CisgIHN0YXRpYyBjaGFyIElEOworICBzdGQ6OnN0cmluZyBNZXNzYWdlOworICBjb25zdCBUICZJbnN0OworCisgIEluc3RydWN0aW9uRXJyb3Ioc3RkOjpzdHJpbmcgTSwgY29uc3QgVCAmTUNJKQorICAgICAgOiBNZXNzYWdlKHN0ZDo6bW92ZShNKSksIEluc3QoTUNJKSB7fQorCisgIHZvaWQgbG9nKHJhd19vc3RyZWFtICZPUykgY29uc3Qgb3ZlcnJpZGUgeyBPUyA8PCBNZXNzYWdlOyB9CisKKyAgc3RkOjplcnJvcl9jb2RlIGNvbnZlcnRUb0Vycm9yQ29kZSgpIGNvbnN0IG92ZXJyaWRlIHsKKyAgICByZXR1cm4gaW5jb252ZXJ0aWJsZUVycm9yQ29kZSgpOworICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2hhciBJbnN0cnVjdGlvbkVycm9yPFQ+OjpJRDsKKworLy8vIFRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIGN5Y2xlcyBwZXIgcmVzb3VyY2UgKGZyYWN0aW9ucyBvZgorLy8vIGN5Y2xlcykuICBUaGF0IHF1YW50aXR5IGlzIG1hbmFnZWQgaGVyZSBhcyBhIHJhdGlvLCBhbmQgYWNjZXNzZWQgdmlhIHRoZQorLy8vIGRvdWJsZSBjYXN0LW9wZXJhdG9yIGJlbG93LiAgVGhlIHR3byBxdWFudGl0aWVzLCBudW1iZXIgb2YgY3ljbGVzIGFuZAorLy8vIG51bWJlciBvZiByZXNvdXJjZXMsIGFyZSBrZXB0IHNlcGFyYXRlLiAgVGhpcyBpcyB1c2VkIGJ5IHRoZQorLy8vIFJlc291cmNlUHJlc3N1cmVWaWV3IHRvIGNhbGN1bGF0ZSB0aGUgYXZlcmFnZSByZXNvdXJjZSBjeWNsZXMKKy8vLyBwZXIgaW5zdHJ1Y3Rpb24vaXRlcmF0aW9uLgorY2xhc3MgUmVzb3VyY2VDeWNsZXMgeworICB1bnNpZ25lZCBOdW1lcmF0b3IsIERlbm9taW5hdG9yOworCitwdWJsaWM6CisgIFJlc291cmNlQ3ljbGVzKCkgOiBOdW1lcmF0b3IoMCksIERlbm9taW5hdG9yKDEpIHt9CisgIFJlc291cmNlQ3ljbGVzKHVuc2lnbmVkIEN5Y2xlcywgdW5zaWduZWQgUmVzb3VyY2VVbml0cyA9IDEpCisgICAgICA6IE51bWVyYXRvcihDeWNsZXMpLCBEZW5vbWluYXRvcihSZXNvdXJjZVVuaXRzKSB7fQorCisgIG9wZXJhdG9yIGRvdWJsZSgpIGNvbnN0IHsKKyAgICBhc3NlcnQoRGVub21pbmF0b3IgJiYgIkludmFsaWQgZGVub21pbmF0b3IgKG11c3QgYmUgbm9uLXplcm8pLiIpOworICAgIHJldHVybiAoRGVub21pbmF0b3IgPT0gMSkgPyBOdW1lcmF0b3IgOiAoZG91YmxlKU51bWVyYXRvciAvIERlbm9taW5hdG9yOworICB9CisKKyAgdW5zaWduZWQgZ2V0TnVtZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gTnVtZXJhdG9yOyB9CisgIHVuc2lnbmVkIGdldERlbm9taW5hdG9yKCkgY29uc3QgeyByZXR1cm4gRGVub21pbmF0b3I7IH0KKworICAvLyBBZGQgdGhlIGNvbXBvbmVudHMgb2YgUkhTIHRvIHRoaXMgaW5zdGFuY2UuICBJbnN0ZWFkIG9mIGNhbGN1bGF0aW5nCisgIC8vIHRoZSBmaW5hbCB2YWx1ZSBoZXJlLCB3ZSBrZWVwIHRyYWNrIG9mIHRoZSBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yCisgIC8vIHNlcGFyYXRlbHksIHRvIHJlZHVjZSBmbG9hdGluZyBwb2ludCBlcnJvci4KKyAgUmVzb3VyY2VDeWNsZXMgJm9wZXJhdG9yKz0oY29uc3QgUmVzb3VyY2VDeWNsZXMgJlJIUyk7Cit9OworCisvLy8gUG9wdWxhdGVzIHZlY3RvciBNYXNrcyB3aXRoIHByb2Nlc3NvciByZXNvdXJjZSBtYXNrcy4KKy8vLworLy8vIFRoZSBudW1iZXIgb2YgYml0cyBzZXQgaW4gYSBtYXNrIGRlcGVuZHMgb24gdGhlIHByb2Nlc3NvciByZXNvdXJjZSB0eXBlLgorLy8vIEVhY2ggcHJvY2Vzc29yIHJlc291cmNlIG1hc2sgaGFzIGF0IGxlYXN0IG9uZSBiaXQgc2V0LiBGb3IgZ3JvdXBzLCB0aGUKKy8vLyBudW1iZXIgb2YgYml0cyBzZXQgaW4gdGhlIG1hc2sgaXMgZXF1YWwgdG8gdGhlIGNhcmRpbmFsaXR5IG9mIHRoZSBncm91cCBwbHVzCisvLy8gb25lLiBFeGNsdWRpbmcgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0LCB0aGUgcmVtYWluaW5nIGJpdHMgaW4gdGhlIG1hc2sKKy8vLyBpZGVudGlmeSBwcm9jZXNzb3IgcmVzb3VyY2VzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIGdyb3VwLgorLy8vCisvLy8gRXhhbXBsZToKKy8vLworLy8vICBSZXNvdXJjZUEgIC0tIE1hc2s6IDBiMDAxCisvLy8gIFJlc291cmNlQiAgLS0gTWFzazogMGIwMTAKKy8vLyAgUmVzb3VyY2VBQiAtLSBNYXNrOiAwYjEwMCBVIChSZXNvdXJjZUE6Ok1hc2sgfCBSZXNvdXJjZUI6Ok1hc2spID09IDBiMTExCisvLy8KKy8vLyBSZXNvdXJjZUFCIGlzIGEgcHJvY2Vzc29yIHJlc291cmNlIGdyb3VwIGNvbnRhaW5pbmcgUmVzb3VyY2VBIGFuZCBSZXNvdXJjZUIuCisvLy8gRWFjaCByZXNvdXJjZSBtYXNrIHVuaXF1ZWx5IGlkZW50aWZpZXMgYSByZXNvdXJjZTsgYm90aCBSZXNvdXJjZUEgYW5kCisvLy8gUmVzb3VyY2VCIG9ubHkgaGF2ZSBvbmUgYml0IHNldC4KKy8vLyBSZXNvdXJjZUFCIGlzIGEgZ3JvdXA7IGV4Y2x1ZGluZyB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgaW4gdGhlIG1hc2ssIHRoZQorLy8vIHJlbWFpbmluZyBiaXRzIGlkZW50aWZ5IHRoZSBjb21wb3NpdGlvbiBvZiB0aGUgZ3JvdXAuCisvLy8KKy8vLyBSZXNvdXJjZSBtYXNrcyBhcmUgdXNlZCBieSB0aGUgUmVzb3VyY2VNYW5hZ2VyIHRvIHNvbHZlIHNldCBtZW1iZXJzaGlwCisvLy8gcHJvYmxlbXMgd2l0aCBzaW1wbGUgYml0IG1hbmlwdWxhdGlvbiBvcGVyYXRpb25zLgordm9pZCBjb21wdXRlUHJvY1Jlc291cmNlTWFza3MoY29uc3QgTUNTY2hlZE1vZGVsICZTTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11dGFibGVBcnJheVJlZjx1aW50NjRfdD4gTWFza3MpOworCisvLy8gQ29tcHV0ZSB0aGUgcmVjaXByb2NhbCBibG9jayB0aHJvdWdocHV0IGZyb20gYSBzZXQgb2YgcHJvY2Vzc29yIHJlc291cmNlCisvLy8gY3ljbGVzLiBUaGUgcmVjaXByb2NhbCBibG9jayB0aHJvdWdocHV0IGlzIGNvbXB1dGVkIGFzIHRoZSBNQVggYmV0d2VlbjoKKy8vLyAgLSBOdW1NaWNyb09wcyAvIERpc3BhdGNoV2lkdGgKKy8vLyAgLSBQcm9jUmVzb3VyY2VDeWNsZXMgLyAjUHJvY1Jlc291cmNlVW5pdHMgIChmb3IgZXZlcnkgY29uc3VtZWQgcmVzb3VyY2UpLgorZG91YmxlIGNvbXB1dGVCbG9ja1JUaHJvdWdocHV0KGNvbnN0IE1DU2NoZWRNb2RlbCAmU00sIHVuc2lnbmVkIERpc3BhdGNoV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTnVtTWljcm9PcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8dW5zaWduZWQ+IFByb2NSZXNvdXJjZVVzYWdlKTsKK30gLy8gbmFtZXNwYWNlIG1jYQorfSAvLyBuYW1lc3BhY2UgbGx2bQorCisjZW5kaWYgLy8gTExWTV9NQ0FfU1VQUE9SVF9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9BcmNoaXZlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9BcmNoaXZlLmgKaW5kZXggOWVmMWU0OC4uYzQwMjc4YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvQXJjaGl2ZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0FyY2hpdmUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBBcmNoaXZlLmggLSBhciBhcmNoaXZlIGZpbGUgZm9ybWF0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTYsNiArMTUsNyBAQAogCiAjaW5jbHVkZSAibGx2bS9BRFQvT3B0aW9uYWwuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9TdHJpbmdSZWYuaCIKKyNpbmNsdWRlICJsbHZtL0FEVC9mYWxsaWJsZV9pdGVyYXRvci5oIgogI2luY2x1ZGUgImxsdm0vQURUL2l0ZXJhdG9yX3JhbmdlLmgiCiAjaW5jbHVkZSAibGx2bS9PYmplY3QvQmluYXJ5LmgiCiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0Nocm9uby5oIgpAQCAtMTQzLDQ0ICsxNDMsMzggQEAKICAgICBnZXRBc0JpbmFyeShMTFZNQ29udGV4dCAqQ29udGV4dCA9IG51bGxwdHIpIGNvbnN0OwogICB9OwogCi0gIGNsYXNzIGNoaWxkX2l0ZXJhdG9yIHsKKyAgY2xhc3MgQ2hpbGRGYWxsaWJsZUl0ZXJhdG9yIHsKICAgICBDaGlsZCBDOwotICAgIEVycm9yICpFID0gbnVsbHB0cjsKIAogICBwdWJsaWM6Ci0gICAgY2hpbGRfaXRlcmF0b3IoKSA6IEMoQ2hpbGQobnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikpIHt9Ci0gICAgY2hpbGRfaXRlcmF0b3IoY29uc3QgQ2hpbGQgJkMsIEVycm9yICpFKSA6IEMoQyksIEUoRSkge30KKyAgICBDaGlsZEZhbGxpYmxlSXRlcmF0b3IoKSA6IEMoQ2hpbGQobnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikpIHt9CisgICAgQ2hpbGRGYWxsaWJsZUl0ZXJhdG9yKGNvbnN0IENoaWxkICZDKSA6IEMoQykge30KIAogICAgIGNvbnN0IENoaWxkICpvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJkM7IH0KICAgICBjb25zdCBDaGlsZCAmb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gQzsgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNoaWxkX2l0ZXJhdG9yICZvdGhlcikgY29uc3QgeworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDaGlsZEZhbGxpYmxlSXRlcmF0b3IgJm90aGVyKSBjb25zdCB7CiAgICAgICAvLyBJZ25vcmUgZXJyb3JzIGhlcmU6IElmIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBpbmNyZW1lbnQgdGhlbiBnZXROZXh0CiAgICAgICAvLyB3aWxsIGhhdmUgYmVlbiBzZXQgdG8gY2hpbGRfZW5kKCksIGFuZCB0aGUgZm9sbG93aW5nIGNvbXBhcmlzb24gc2hvdWxkCiAgICAgICAvLyBkbyB0aGUgcmlnaHQgdGhpbmcuCiAgICAgICByZXR1cm4gQyA9PSBvdGhlci5DOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBjaGlsZF9pdGVyYXRvciAmb3RoZXIpIGNvbnN0IHsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2hpbGRGYWxsaWJsZUl0ZXJhdG9yICZvdGhlcikgY29uc3QgewogICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwogICAgIH0KIAotICAgIC8vIENvZGUgaW4gbG9vcHMgd2l0aCBjaGlsZF9pdGVyYXRvcnMgbXVzdCBjaGVjayBmb3IgZXJyb3JzIG9uIGVhY2ggbG9vcAotICAgIC8vIGl0ZXJhdGlvbi4gIEFuZCBpZiB0aGVyZSBpcyBhbiBlcnJvciBicmVhayBvdXQgb2YgdGhlIGxvb3AuCi0gICAgY2hpbGRfaXRlcmF0b3IgJm9wZXJhdG9yKysoKSB7IC8vIFByZWluY3JlbWVudAotICAgICAgYXNzZXJ0KEUgJiYgIkNhbid0IGluY3JlbWVudCBpdGVyYXRvciB3aXRoIG5vIEVycm9yIGF0dGFjaGVkIik7Ci0gICAgICBFcnJvckFzT3V0UGFyYW1ldGVyIEVyckFzT3V0UGFyYW0oRSk7Ci0gICAgICBpZiAoYXV0byBDaGlsZE9yRXJyID0gQy5nZXROZXh0KCkpCi0gICAgICAgIEMgPSAqQ2hpbGRPckVycjsKLSAgICAgIGVsc2UgewotICAgICAgICBDID0gQy5nZXRQYXJlbnQoKS0+Y2hpbGRfZW5kKCkuQzsKLSAgICAgICAgKkUgPSBDaGlsZE9yRXJyLnRha2VFcnJvcigpOwotICAgICAgICBFID0gbnVsbHB0cjsKLSAgICAgIH0KLSAgICAgIHJldHVybiAqdGhpczsKKyAgICBFcnJvciBpbmMoKSB7CisgICAgICBhdXRvIE5leHRDaGlsZCA9IEMuZ2V0TmV4dCgpOworICAgICAgaWYgKCFOZXh0Q2hpbGQpCisgICAgICAgIHJldHVybiBOZXh0Q2hpbGQudGFrZUVycm9yKCk7CisgICAgICBDID0gc3RkOjptb3ZlKCpOZXh0Q2hpbGQpOworICAgICAgcmV0dXJuIEVycm9yOjpzdWNjZXNzKCk7CiAgICAgfQogICB9OwogCisgIHVzaW5nIGNoaWxkX2l0ZXJhdG9yID0gZmFsbGlibGVfaXRlcmF0b3I8Q2hpbGRGYWxsaWJsZUl0ZXJhdG9yPjsKKwogICBjbGFzcyBTeW1ib2wgewogICAgIGNvbnN0IEFyY2hpdmUgKlBhcmVudDsKICAgICB1aW50MzJfdCBTeW1ib2xJbmRleDsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0FyY2hpdmVXcml0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0FyY2hpdmVXcml0ZXIuaAppbmRleCA0OTViOTQzLi40ZTc5NmViIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9BcmNoaXZlV3JpdGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvQXJjaGl2ZVdyaXRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEFyY2hpdmVXcml0ZXIuaCAtIGFyIGFyY2hpdmUgZmlsZSBmb3JtYXQgd3JpdGVyIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9CaW5hcnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0JpbmFyeS5oCmluZGV4IDk5NzQ1ZTIuLjhjZTJkNWEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0JpbmFyeS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0JpbmFyeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEJpbmFyeS5oIC0gQSBnZW5lcmljIGJpbmFyeSBmaWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9DT0ZGLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9DT0ZGLmgKaW5kZXggZTM5YTliMi4uYzIyYTQ4MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvQ09GRi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0NPRkYuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDT0ZGLmggLSBDT0ZGIG9iamVjdCBmaWxlIGltcGxlbWVudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtOTcxLDYgKzk3MCw5IEBACiAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBkb3NfaGVhZGVyICo+KGJhc2UoKSk7CiAgIH0KKyAgc3RkOjplcnJvcl9jb2RlIGdldENPRkZIZWFkZXIoY29uc3QgY29mZl9maWxlX2hlYWRlciAqJlJlcykgY29uc3Q7CisgIHN0ZDo6ZXJyb3JfY29kZQorICBnZXRDT0ZGQmlnT2JqSGVhZGVyKGNvbnN0IGNvZmZfYmlnb2JqX2ZpbGVfaGVhZGVyIComUmVzKSBjb25zdDsKICAgc3RkOjplcnJvcl9jb2RlIGdldFBFMzJIZWFkZXIoY29uc3QgcGUzMl9oZWFkZXIgKiZSZXMpIGNvbnN0OwogICBzdGQ6OmVycm9yX2NvZGUgZ2V0UEUzMlBsdXNIZWFkZXIoY29uc3QgcGUzMnBsdXNfaGVhZGVyIComUmVzKSBjb25zdDsKICAgc3RkOjplcnJvcl9jb2RlIGdldERhdGFEaXJlY3RvcnkodWludDMyX3QgaW5kZXgsCkBAIC0xMDE5LDYgKzEwMjEsOCBAQAogCiAgIEFycmF5UmVmPHVpbnQ4X3Q+IGdldFN5bWJvbEF1eERhdGEoQ09GRlN5bWJvbFJlZiBTeW1ib2wpIGNvbnN0OwogCisgIHVpbnQzMl90IGdldFN5bWJvbEluZGV4KENPRkZTeW1ib2xSZWYgU3ltYm9sKSBjb25zdDsKKwogICBzaXplX3QgZ2V0U3ltYm9sVGFibGVFbnRyeVNpemUoKSBjb25zdCB7CiAgICAgaWYgKENPRkZIZWFkZXIpCiAgICAgICByZXR1cm4gc2l6ZW9mKGNvZmZfc3ltYm9sMTYpOwpAQCAtMTA2Miw2ICsxMDY2LDggQEAKICAgYm9vbCBpc1JlbG9jYXRhYmxlT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgIGJvb2wgaXM2NCgpIGNvbnN0IHsgcmV0dXJuIFBFMzJQbHVzSGVhZGVyOyB9CiAKKyAgU3RyaW5nUmVmIG1hcERlYnVnU2VjdGlvbk5hbWUoU3RyaW5nUmVmIE5hbWUpIGNvbnN0IG92ZXJyaWRlOworCiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgQmluYXJ5ICp2KSB7IHJldHVybiB2LT5pc0NPRkYoKTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvQ09GRkltcG9ydEZpbGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0NPRkZJbXBvcnRGaWxlLmgKaW5kZXggMGE0NTU2YS4uZDA1MWQ3ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvQ09GRkltcG9ydEZpbGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9DT0ZGSW1wb3J0RmlsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENPRkZJbXBvcnRGaWxlLmggLSBDT0ZGIHNob3J0IGltcG9ydCBmaWxlIGltcGxlbWVudGF0aW9uIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9DT0ZGTW9kdWxlRGVmaW5pdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvQ09GRk1vZHVsZURlZmluaXRpb24uaAppbmRleCBiZTEzOWEyLi5hYjUyMjU5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9DT0ZGTW9kdWxlRGVmaW5pdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0NPRkZNb2R1bGVEZWZpbml0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBDT0ZGTW9kdWxlRGVmaW5pdGlvbi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0NWRGVidWdSZWNvcmQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0NWRGVidWdSZWNvcmQuaAppbmRleCBmYWFkNzJjLi5kNDFjNzM5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9DVkRlYnVnUmVjb3JkLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvQ1ZEZWJ1Z1JlY29yZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENWRGVidWdSZWNvcmQuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvRGVjb21wcmVzc29yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9EZWNvbXByZXNzb3IuaAppbmRleCAyYTc3ZDJmLi5jYzkxODQ4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9EZWNvbXByZXNzb3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9EZWNvbXByZXNzb3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gRGVjb21wcmVzc29yLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvRUxGLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9FTEYuaAppbmRleCA3NTJkNDY4Li4xYmEzMmI0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9FTEYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9FTEYuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBFTEYuaCAtIEVMRiBvYmplY3QgZmlsZSBpbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzIsNyArMzEsNyBAQAogbmFtZXNwYWNlIG9iamVjdCB7CiAKIFN0cmluZ1JlZiBnZXRFTEZSZWxvY2F0aW9uVHlwZU5hbWUodWludDMyX3QgTWFjaGluZSwgdWludDMyX3QgVHlwZSk7Ci11aW50MzJfdCBnZXRFTEZSZWxyUmVsb2NhdGlvblR5cGUodWludDMyX3QgTWFjaGluZSk7Cit1aW50MzJfdCBnZXRFTEZSZWxhdGl2ZVJlbG9jYXRpb25UeXBlKHVpbnQzMl90IE1hY2hpbmUpOwogU3RyaW5nUmVmIGdldEVMRlNlY3Rpb25UeXBlTmFtZSh1aW50MzJfdCBNYWNoaW5lLCB1aW50MzJfdCBUeXBlKTsKIAogLy8gU3ViY2xhc3NlcyBvZiBFTEZGaWxlIG1heSBuZWVkIHRoaXMgZm9yIHRlbXBsYXRlIGluc3RhbnRpYXRpb24KQEAgLTExMyw3ICsxMTIsNyBAQAogICBTdHJpbmdSZWYgZ2V0UmVsb2NhdGlvblR5cGVOYW1lKHVpbnQzMl90IFR5cGUpIGNvbnN0OwogICB2b2lkIGdldFJlbG9jYXRpb25UeXBlTmFtZSh1aW50MzJfdCBUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8Y2hhcj4gJlJlc3VsdCkgY29uc3Q7Ci0gIHVpbnQzMl90IGdldFJlbHJSZWxvY2F0aW9uVHlwZSgpIGNvbnN0OworICB1aW50MzJfdCBnZXRSZWxhdGl2ZVJlbG9jYXRpb25UeXBlKCkgY29uc3Q7CiAKICAgY29uc3QgY2hhciAqZ2V0RHluYW1pY1RhZ0FzU3RyaW5nKHVuc2lnbmVkIEFyY2gsIHVpbnQ2NF90IFR5cGUpIGNvbnN0OwogICBjb25zdCBjaGFyICpnZXREeW5hbWljVGFnQXNTdHJpbmcodWludDY0X3QgVHlwZSkgY29uc3Q7CkBAIC00MTUsOCArNDE0LDggQEAKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEVMRlQ+Ci11aW50MzJfdCBFTEZGaWxlPEVMRlQ+OjpnZXRSZWxyUmVsb2NhdGlvblR5cGUoKSBjb25zdCB7Ci0gIHJldHVybiBnZXRFTEZSZWxyUmVsb2NhdGlvblR5cGUoZ2V0SGVhZGVyKCktPmVfbWFjaGluZSk7Cit1aW50MzJfdCBFTEZGaWxlPEVMRlQ+OjpnZXRSZWxhdGl2ZVJlbG9jYXRpb25UeXBlKCkgY29uc3QgeworICByZXR1cm4gZ2V0RUxGUmVsYXRpdmVSZWxvY2F0aW9uVHlwZShnZXRIZWFkZXIoKS0+ZV9tYWNoaW5lKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEVMRlQ+CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9FTEZPYmplY3RGaWxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9FTEZPYmplY3RGaWxlLmgKaW5kZXggNTQ5MDdjYi4uYWFiNzM0MCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvRUxGT2JqZWN0RmlsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0VMRk9iamVjdEZpbGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBFTEZPYmplY3RGaWxlLmggLSBFTEYgb2JqZWN0IGZpbGUgaW1wbGVtZW50YXRpb24gLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjYwLDYgKzI1OSw4IEBACiAgIGJvb2wgaXNTZWN0aW9uRGF0YShEYXRhUmVmSW1wbCBTZWMpIGNvbnN0IG92ZXJyaWRlOwogICBib29sIGlzU2VjdGlvbkJTUyhEYXRhUmVmSW1wbCBTZWMpIGNvbnN0IG92ZXJyaWRlOwogICBib29sIGlzU2VjdGlvblZpcnR1YWwoRGF0YVJlZkltcGwgU2VjKSBjb25zdCBvdmVycmlkZTsKKyAgYm9vbCBpc0JlcmtlbGV5VGV4dChEYXRhUmVmSW1wbCBTZWMpIGNvbnN0IG92ZXJyaWRlOworICBib29sIGlzQmVya2VsZXlEYXRhKERhdGFSZWZJbXBsIFNlYykgY29uc3Qgb3ZlcnJpZGU7CiAgIHJlbG9jYXRpb25faXRlcmF0b3Igc2VjdGlvbl9yZWxfYmVnaW4oRGF0YVJlZkltcGwgU2VjKSBjb25zdCBvdmVycmlkZTsKICAgcmVsb2NhdGlvbl9pdGVyYXRvciBzZWN0aW9uX3JlbF9lbmQoRGF0YVJlZkltcGwgU2VjKSBjb25zdCBvdmVycmlkZTsKICAgc3RkOjp2ZWN0b3I8U2VjdGlvblJlZj4gZHluYW1pY19yZWxvY2F0aW9uX3NlY3Rpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC0zMzMsOSArMzM0LDEwIEBACiAgICAgLy8gQSBzeW1ib2wgaXMgZXhwb3J0ZWQgaWYgaXRzIGJpbmRpbmcgaXMgZWl0aGVyIEdMT0JBTCBvciBXRUFLLCBhbmQgaXRzCiAgICAgLy8gdmlzaWJpbGl0eSBpcyBlaXRoZXIgREVGQVVMVCBvciBQUk9URUNURUQuIEFsbCBvdGhlciBzeW1ib2xzIGFyZSBub3QKICAgICAvLyBleHBvcnRlZC4KLSAgICByZXR1cm4gKChCaW5kaW5nID09IEVMRjo6U1RCX0dMT0JBTCB8fCBCaW5kaW5nID09IEVMRjo6U1RCX1dFQUspICYmCi0gICAgICAgICAgICAoVmlzaWJpbGl0eSA9PSBFTEY6OlNUVl9ERUZBVUxUIHx8Ci0gICAgICAgICAgICAgVmlzaWJpbGl0eSA9PSBFTEY6OlNUVl9QUk9URUNURUQpKTsKKyAgICByZXR1cm4gKAorICAgICAgICAoQmluZGluZyA9PSBFTEY6OlNUQl9HTE9CQUwgfHwgQmluZGluZyA9PSBFTEY6OlNUQl9XRUFLIHx8CisgICAgICAgICBCaW5kaW5nID09IEVMRjo6U1RCX0dOVV9VTklRVUUpICYmCisgICAgICAgIChWaXNpYmlsaXR5ID09IEVMRjo6U1RWX0RFRkFVTFQgfHwgVmlzaWJpbGl0eSA9PSBFTEY6OlNUVl9QUk9URUNURUQpKTsKICAgfQogCiAgIC8vIFRoaXMgZmxhZyBpcyB1c2VkIGZvciBjbGFzc29mLCB0byBkaXN0aW5ndWlzaCBFTEZPYmplY3RGaWxlIGZyb20KQEAgLTQzOCw3ICs0NDAsMTYgQEAKICAgYXV0byBTeW1TdHJUYWJPckVyciA9IEVGLmdldFN0cmluZ1RhYmxlKFN0cmluZ1RhYmxlU2VjKTsKICAgaWYgKCFTeW1TdHJUYWJPckVycikKICAgICByZXR1cm4gU3ltU3RyVGFiT3JFcnIudGFrZUVycm9yKCk7Ci0gIHJldHVybiBFU3ltLT5nZXROYW1lKCpTeW1TdHJUYWJPckVycik7CisgIEV4cGVjdGVkPFN0cmluZ1JlZj4gTmFtZSA9IEVTeW0tPmdldE5hbWUoKlN5bVN0clRhYk9yRXJyKTsKKworICAvLyBJZiB0aGUgc3ltYm9sIG5hbWUgaXMgZW1wdHkgdXNlIHRoZSBzZWN0aW9uIG5hbWUuCisgIGlmICgoIU5hbWUgfHwgTmFtZS0+ZW1wdHkoKSkgJiYgRVN5bS0+Z2V0VHlwZSgpID09IEVMRjo6U1RUX1NFQ1RJT04pIHsKKyAgICBTdHJpbmdSZWYgU2VjTmFtZTsKKyAgICBFeHBlY3RlZDxzZWN0aW9uX2l0ZXJhdG9yPiBTZWMgPSBnZXRTeW1ib2xTZWN0aW9uKFN5bSk7CisgICAgaWYgKFNlYyAmJiAhKCpTZWMpLT5nZXROYW1lKFNlY05hbWUpKQorICAgICAgcmV0dXJuIFNlY05hbWU7CisgIH0KKyAgcmV0dXJuIE5hbWU7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBFTEZUPgpAQCAtNzU5LDYgKzc3MCwyMCBAQAogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgRUxGVD4KK2Jvb2wgRUxGT2JqZWN0RmlsZTxFTEZUPjo6aXNCZXJrZWxleVRleHQoRGF0YVJlZkltcGwgU2VjKSBjb25zdCB7CisgIHJldHVybiBnZXRTZWN0aW9uKFNlYyktPnNoX2ZsYWdzICYgRUxGOjpTSEZfQUxMT0MgJiYKKyAgICAgICAgIChnZXRTZWN0aW9uKFNlYyktPnNoX2ZsYWdzICYgRUxGOjpTSEZfRVhFQ0lOU1RSIHx8CisgICAgICAgICAgIShnZXRTZWN0aW9uKFNlYyktPnNoX2ZsYWdzICYgRUxGOjpTSEZfV1JJVEUpKTsKK30KKwordGVtcGxhdGUgPGNsYXNzIEVMRlQ+Citib29sIEVMRk9iamVjdEZpbGU8RUxGVD46OmlzQmVya2VsZXlEYXRhKERhdGFSZWZJbXBsIFNlYykgY29uc3QgeworICBjb25zdCBFbGZfU2hkciAqRVNoZHIgPSBnZXRTZWN0aW9uKFNlYyk7CisgIHJldHVybiAhaXNCZXJrZWxleVRleHQoU2VjKSAmJiBFU2hkci0+c2hfdHlwZSAhPSBFTEY6OlNIVF9OT0JJVFMgJiYKKyAgICAgICAgIEVTaGRyLT5zaF9mbGFncyAmIEVMRjo6U0hGX0FMTE9DOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgRUxGVD4KIHJlbG9jYXRpb25faXRlcmF0b3IKIEVMRk9iamVjdEZpbGU8RUxGVD46OnNlY3Rpb25fcmVsX2JlZ2luKERhdGFSZWZJbXBsIFNlYykgY29uc3QgewogICBEYXRhUmVmSW1wbCBSZWxEYXRhOwpAQCAtMTAyMSw2ICsxMDQ2LDggQEAKICAgICAgIHJldHVybiAiRUxGMzItbGFuYWkiOwogICAgIGNhc2UgRUxGOjpFTV9NSVBTOgogICAgICAgcmV0dXJuICJFTEYzMi1taXBzIjsKKyAgICBjYXNlIEVMRjo6RU1fTVNQNDMwOgorICAgICAgcmV0dXJuICJFTEYzMi1tc3A0MzAiOwogICAgIGNhc2UgRUxGOjpFTV9QUEM6CiAgICAgICByZXR1cm4gIkVMRjMyLXBwYyI7CiAgICAgY2FzZSBFTEY6OkVNX1JJU0NWOgpAQCAtMTA5MSw2ICsxMTE4LDggQEAKICAgICBkZWZhdWx0OgogICAgICAgcmVwb3J0X2ZhdGFsX2Vycm9yKCJJbnZhbGlkIEVMRkNMQVNTISIpOwogICAgIH0KKyAgY2FzZSBFTEY6OkVNX01TUDQzMDoKKyAgICByZXR1cm4gVHJpcGxlOjptc3A0MzA7CiAgIGNhc2UgRUxGOjpFTV9QUEM6CiAgICAgcmV0dXJuIFRyaXBsZTo6cHBjOwogICBjYXNlIEVMRjo6RU1fUFBDNjQ6CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9FTEZUeXBlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvRUxGVHlwZXMuaAppbmRleCBmYjM4NjEyLi40NWJiZDZjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9FTEZUeXBlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0VMRlR5cGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRUxGVHlwZXMuaCAtIEVuZGlhbiBzcGVjaWZpYyB0eXBlcyBmb3IgRUxGIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC02MDUsMTMgKzYwNCwxMiBAQAogICB9CiAKICAgLy8vIEdldCB0aGUgbm90ZSdzIGRlc2NyaXB0b3IuCi0gIEFycmF5UmVmPEVsZl9Xb3JkPiBnZXREZXNjKCkgY29uc3QgeworICBBcnJheVJlZjx1aW50OF90PiBnZXREZXNjKCkgY29uc3QgewogICAgIGlmICghTmhkci5uX2Rlc2NzeikKLSAgICAgIHJldHVybiBBcnJheVJlZjxFbGZfV29yZD4oKTsKLSAgICByZXR1cm4gQXJyYXlSZWY8RWxmX1dvcmQ+KAotICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IEVsZl9Xb3JkICo+KAotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KCZOaGRyKSArIHNpemVvZihOaGRyKSArCi0gICAgICAgICAgICBhbGlnblRvPEVsZl9OaGRyX0ltcGw8RUxGVD46OkFsaWduPihOaGRyLm5fbmFtZXN6KSksCisgICAgICByZXR1cm4gQXJyYXlSZWY8dWludDhfdD4oKTsKKyAgICByZXR1cm4gQXJyYXlSZWY8dWludDhfdD4oCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPigmTmhkcikgKyBzaXplb2YoTmhkcikgKworICAgICAgICAgIGFsaWduVG88RWxmX05oZHJfSW1wbDxFTEZUPjo6QWxpZ24+KE5oZHIubl9uYW1lc3opLAogICAgICAgICBOaGRyLm5fZGVzY3N6KTsKICAgfQogCkBAIC02NDMsMTQgKzY0MSwxOSBAQAogICAvLyBjb250YWluZXIsIGVpdGhlciBjbGVhbmx5IG9yIHdpdGggYW4gb3ZlcmZsb3cgZXJyb3IuCiAgIHZvaWQgYWR2YW5jZU5oZHIoY29uc3QgdWludDhfdCAqTmhkclBvcywgc2l6ZV90IE5vdGVTaXplKSB7CiAgICAgUmVtYWluaW5nU2l6ZSAtPSBOb3RlU2l6ZTsKLSAgICBpZiAoUmVtYWluaW5nU2l6ZSA9PSAwdSkKKyAgICBpZiAoUmVtYWluaW5nU2l6ZSA9PSAwdSkgeworICAgICAgLy8gRW5zdXJlIHRoYXQgaWYgdGhlIGl0ZXJhdG9yIHdhbGtzIHRvIHRoZSBlbmQsIHRoZSBlcnJvciBpcyBjaGVja2VkCisgICAgICAvLyBhZnRlcndhcmRzLgorICAgICAgKkVyciA9IEVycm9yOjpzdWNjZXNzKCk7CiAgICAgICBOaGRyID0gbnVsbHB0cjsKLSAgICBlbHNlIGlmIChzaXplb2YoKk5oZHIpID4gUmVtYWluaW5nU2l6ZSkKKyAgICB9IGVsc2UgaWYgKHNpemVvZigqTmhkcikgPiBSZW1haW5pbmdTaXplKQogICAgICAgc3RvcFdpdGhPdmVyZmxvd0Vycm9yKCk7CiAgICAgZWxzZSB7CiAgICAgICBOaGRyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBFbGZfTmhkcl9JbXBsPEVMRlQ+ICo+KE5oZHJQb3MgKyBOb3RlU2l6ZSk7CiAgICAgICBpZiAoTmhkci0+Z2V0U2l6ZSgpID4gUmVtYWluaW5nU2l6ZSkKICAgICAgICAgc3RvcFdpdGhPdmVyZmxvd0Vycm9yKCk7CisgICAgICBlbHNlCisgICAgICAgICpFcnIgPSBFcnJvcjo6c3VjY2VzcygpOwogICAgIH0KICAgfQogCkBAIC02NTgsNiArNjYxLDcgQEAKICAgZXhwbGljaXQgRWxmX05vdGVfSXRlcmF0b3JfSW1wbChFcnJvciAmRXJyKSA6IEVycigmRXJyKSB7fQogICBFbGZfTm90ZV9JdGVyYXRvcl9JbXBsKGNvbnN0IHVpbnQ4X3QgKlN0YXJ0LCBzaXplX3QgU2l6ZSwgRXJyb3IgJkVycikKICAgICAgIDogUmVtYWluaW5nU2l6ZShTaXplKSwgRXJyKCZFcnIpIHsKKyAgICBjb25zdW1lRXJyb3Ioc3RkOjptb3ZlKEVycikpOwogICAgIGFzc2VydChTdGFydCAmJiAiRUxGIG5vdGUgaXRlcmF0b3Igc3RhcnRpbmcgYXQgTlVMTCIpOwogICAgIGFkdmFuY2VOaGRyKFN0YXJ0LCAwdSk7CiAgIH0KQEAgLTY3MSw2ICs2NzUsMTAgQEAKICAgICByZXR1cm4gKnRoaXM7CiAgIH0KICAgYm9vbCBvcGVyYXRvcj09KEVsZl9Ob3RlX0l0ZXJhdG9yX0ltcGwgT3RoZXIpIGNvbnN0IHsKKyAgICBpZiAoIU5oZHIgJiYgT3RoZXIuRXJyKQorICAgICAgKHZvaWQpKGJvb2wpKCpPdGhlci5FcnIpOworICAgIGlmICghT3RoZXIuTmhkciAmJiBFcnIpCisgICAgICAodm9pZCkoYm9vbCkoKkVycik7CiAgICAgcmV0dXJuIE5oZHIgPT0gT3RoZXIuTmhkcjsKICAgfQogICBib29sIG9wZXJhdG9yIT0oRWxmX05vdGVfSXRlcmF0b3JfSW1wbCBPdGhlcikgY29uc3QgewpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvRXJyb3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0Vycm9yLmgKaW5kZXggZWI5MzgzMy4uYjdiYmYwNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvRXJyb3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9FcnJvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEVycm9yLmggLSBzeXN0ZW1fZXJyb3IgZXh0ZW5zaW9ucyBmb3IgT2JqZWN0IC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC01MCw2ICs0OSw3IEBACiAvLy8gQ3VycmVudGx5IGluaGVyaXRzIGZyb20gRUNFcnJvciBmb3IgZWFzeSBpbnRlcm9wZXJhYmlsaXR5IHdpdGgKIC8vLyBzdGQ6OmVycm9yX2NvZGUsIGJ1dCB0aGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLgogY2xhc3MgQmluYXJ5RXJyb3IgOiBwdWJsaWMgRXJyb3JJbmZvPEJpbmFyeUVycm9yLCBFQ0Vycm9yPiB7CisgIHZpcnR1YWwgdm9pZCBhbmNob3IoKTsKIHB1YmxpYzoKICAgc3RhdGljIGNoYXIgSUQ7CiAgIEJpbmFyeUVycm9yKCkgewpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvSVJPYmplY3RGaWxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9JUk9iamVjdEZpbGUuaAppbmRleCA5OTMzNTliLi4zOTQ1NGIwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9JUk9iamVjdEZpbGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9JUk9iamVjdEZpbGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJUk9iamVjdEZpbGUuaCAtIExMVk0gSVIgb2JqZWN0IGZpbGUgaW1wbGVtZW50YXRpb24gLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvSVJTeW10YWIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L0lSU3ltdGFiLmgKaW5kZXggNWY2YTAyNC4uMDYwMWQ5OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvSVJTeW10YWIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9JUlN5bXRhYi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIElSU3ltdGFiLmggLSBkYXRhIGRlZmluaXRpb25zIGZvciBJUiBzeW1ib2wgdGFibGVzIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9NYWNoTy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvTWFjaE8uaAppbmRleCAxNTljMTc2Li43OWVjOGJiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9NYWNoTy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L01hY2hPLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTWFjaE8uaCAtIE1hY2hPIG9iamVjdCBmaWxlIGltcGxlbWVudGF0aW9uIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTM1Niw3ICszNTUsNyBAQAogICBiYXNpY19zeW1ib2xfaXRlcmF0b3Igc3ltYm9sX2VuZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgIC8vIE1hY2hPIHNwZWNpZmljLgotICBiYXNpY19zeW1ib2xfaXRlcmF0b3IgZ2V0U3ltYm9sQnlJbmRleCh1bnNpZ25lZCBJbmRleCkgY29uc3Q7CisgIHN5bWJvbF9pdGVyYXRvciBnZXRTeW1ib2xCeUluZGV4KHVuc2lnbmVkIEluZGV4KSBjb25zdDsKICAgdWludDY0X3QgZ2V0U3ltYm9sSW5kZXgoRGF0YVJlZkltcGwgU3ltYikgY29uc3Q7CiAKICAgc2VjdGlvbl9pdGVyYXRvciBzZWN0aW9uX2JlZ2luKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC02MTYsNiArNjE1LDkgQEAKICAgICBjYXNlIE1hY2hPOjpQTEFURk9STV9UVk9TOiByZXR1cm4gInR2b3MiOwogICAgIGNhc2UgTWFjaE86OlBMQVRGT1JNX1dBVENIT1M6IHJldHVybiAid2F0Y2hvcyI7CiAgICAgY2FzZSBNYWNoTzo6UExBVEZPUk1fQlJJREdFT1M6IHJldHVybiAiYnJpZGdlb3MiOworICAgIGNhc2UgTWFjaE86OlBMQVRGT1JNX0lPU1NJTVVMQVRPUjogcmV0dXJuICJpb3NzaW11bGF0b3IiOworICAgIGNhc2UgTWFjaE86OlBMQVRGT1JNX1RWT1NTSU1VTEFUT1I6IHJldHVybiAidHZvc3NpbXVsYXRvciI7CisgICAgY2FzZSBNYWNoTzo6UExBVEZPUk1fV0FUQ0hPU1NJTVVMQVRPUjogcmV0dXJuICJ3YXRjaG9zc2ltdWxhdG9yIjsKICAgICBkZWZhdWx0OgogICAgICAgc3RkOjpzdHJpbmcgcmV0OwogICAgICAgcmF3X3N0cmluZ19vc3RyZWFtIHNzKHJldCk7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9NYWNoT1VuaXZlcnNhbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvTWFjaE9Vbml2ZXJzYWwuaAppbmRleCA5ZTcwYjBiLi41YmY3MjRmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9NYWNoT1VuaXZlcnNhbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L01hY2hPVW5pdmVyc2FsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTWFjaE9Vbml2ZXJzYWwuaCAtIE1hY2gtTyB1bml2ZXJzYWwgYmluYXJpZXMgLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L01vZHVsZVN5bWJvbFRhYmxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9Nb2R1bGVTeW1ib2xUYWJsZS5oCmluZGV4IGMzY2JjMjcuLjRjNTgyZmIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L01vZHVsZVN5bWJvbFRhYmxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvTW9kdWxlU3ltYm9sVGFibGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBNb2R1bGVTeW1ib2xUYWJsZS5oIC0gc3ltYm9sIHRhYmxlIGZvciBpbi1tZW1vcnkgSVIgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvT2JqZWN0RmlsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvT2JqZWN0RmlsZS5oCmluZGV4IDAyZDYyZTguLmYxMzc3NWMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L09iamVjdEZpbGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9PYmplY3RGaWxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gT2JqZWN0RmlsZS5oIC0gRmlsZSBmb3JtYXQgaW5kZXBlbmRlbnQgb2JqZWN0IGZpbGUgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTEwNCwxMyArMTAzLDI1IEBACiAgIHVpbnQ2NF90IGdldEFsaWdubWVudCgpIGNvbnN0OwogCiAgIGJvb2wgaXNDb21wcmVzc2VkKCkgY29uc3Q7CisgIC8vLyBXaGV0aGVyIHRoaXMgc2VjdGlvbiBjb250YWlucyBpbnN0cnVjdGlvbnMuCiAgIGJvb2wgaXNUZXh0KCkgY29uc3Q7CisgIC8vLyBXaGV0aGVyIHRoaXMgc2VjdGlvbiBjb250YWlucyBkYXRhLCBub3QgaW5zdHJ1Y3Rpb25zLgogICBib29sIGlzRGF0YSgpIGNvbnN0OworICAvLy8gV2hldGhlciB0aGlzIHNlY3Rpb24gY29udGFpbnMgQlNTIHVuaW5pdGlhbGl6ZWQgZGF0YS4KICAgYm9vbCBpc0JTUygpIGNvbnN0OwogICBib29sIGlzVmlydHVhbCgpIGNvbnN0OwogICBib29sIGlzQml0Y29kZSgpIGNvbnN0OwogICBib29sIGlzU3RyaXBwZWQoKSBjb25zdDsKIAorICAvLy8gV2hldGhlciB0aGlzIHNlY3Rpb24gd2lsbCBiZSBwbGFjZWQgaW4gdGhlIHRleHQgc2VnbWVudCwgYWNjb3JkaW5nIHRvIHRoZQorICAvLy8gQmVya2VsZXkgc2l6ZSBmb3JtYXQuIFRoaXMgaXMgdHJ1ZSBpZiB0aGUgc2VjdGlvbiBpcyBhbGxvY2F0YWJsZSwgYW5kCisgIC8vLyBjb250YWlucyBlaXRoZXIgY29kZSBvciByZWFkb25seSBkYXRhLgorICBib29sIGlzQmVya2VsZXlUZXh0KCkgY29uc3Q7CisgIC8vLyBXaGV0aGVyIHRoaXMgc2VjdGlvbiB3aWxsIGJlIHBsYWNlZCBpbiB0aGUgZGF0YSBzZWdtZW50LCBhY2NvcmRpbmcgdG8gdGhlCisgIC8vLyBCZXJrZWxleSBzaXplIGZvcm1hdC4gVGhpcyBpcyB0cnVlIGlmIHRoZSBzZWN0aW9uIGlzIGFsbG9jYXRhYmxlIGFuZAorICAvLy8gY29udGFpbnMgZGF0YSAoZS5nLiBQUk9HQklUUyksIGJ1dCBpcyBub3QgdGV4dC4KKyAgYm9vbCBpc0JlcmtlbGV5RGF0YSgpIGNvbnN0OworCiAgIGJvb2wgY29udGFpbnNTeW1ib2woU3ltYm9sUmVmIFMpIGNvbnN0OwogCiAgIHJlbG9jYXRpb25faXRlcmF0b3IgcmVsb2NhdGlvbl9iZWdpbigpIGNvbnN0OwpAQCAtMjM4LDYgKzI0OSw4IEBACiAgIHZpcnR1YWwgYm9vbCBpc1NlY3Rpb25WaXJ0dWFsKERhdGFSZWZJbXBsIFNlYykgY29uc3QgPSAwOwogICB2aXJ0dWFsIGJvb2wgaXNTZWN0aW9uQml0Y29kZShEYXRhUmVmSW1wbCBTZWMpIGNvbnN0OwogICB2aXJ0dWFsIGJvb2wgaXNTZWN0aW9uU3RyaXBwZWQoRGF0YVJlZkltcGwgU2VjKSBjb25zdDsKKyAgdmlydHVhbCBib29sIGlzQmVya2VsZXlUZXh0KERhdGFSZWZJbXBsIFNlYykgY29uc3Q7CisgIHZpcnR1YWwgYm9vbCBpc0JlcmtlbGV5RGF0YShEYXRhUmVmSW1wbCBTZWMpIGNvbnN0OwogICB2aXJ0dWFsIHJlbG9jYXRpb25faXRlcmF0b3Igc2VjdGlvbl9yZWxfYmVnaW4oRGF0YVJlZkltcGwgU2VjKSBjb25zdCA9IDA7CiAgIHZpcnR1YWwgcmVsb2NhdGlvbl9pdGVyYXRvciBzZWN0aW9uX3JlbF9lbmQoRGF0YVJlZkltcGwgU2VjKSBjb25zdCA9IDA7CiAgIHZpcnR1YWwgc2VjdGlvbl9pdGVyYXRvciBnZXRSZWxvY2F0ZWRTZWN0aW9uKERhdGFSZWZJbXBsIFNlYykgY29uc3Q7CkBAIC00NDksNiArNDYyLDE0IEBACiAgIHJldHVybiBPd25pbmdPYmplY3QtPmlzU2VjdGlvblN0cmlwcGVkKFNlY3Rpb25QaW1wbCk7CiB9CiAKK2lubGluZSBib29sIFNlY3Rpb25SZWY6OmlzQmVya2VsZXlUZXh0KCkgY29uc3QgeworICByZXR1cm4gT3duaW5nT2JqZWN0LT5pc0JlcmtlbGV5VGV4dChTZWN0aW9uUGltcGwpOworfQorCitpbmxpbmUgYm9vbCBTZWN0aW9uUmVmOjppc0JlcmtlbGV5RGF0YSgpIGNvbnN0IHsKKyAgcmV0dXJuIE93bmluZ09iamVjdC0+aXNCZXJrZWxleURhdGEoU2VjdGlvblBpbXBsKTsKK30KKwogaW5saW5lIHJlbG9jYXRpb25faXRlcmF0b3IgU2VjdGlvblJlZjo6cmVsb2NhdGlvbl9iZWdpbigpIGNvbnN0IHsKICAgcmV0dXJuIE93bmluZ09iamVjdC0+c2VjdGlvbl9yZWxfYmVnaW4oU2VjdGlvblBpbXBsKTsKIH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L1JlbG9jVmlzaXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvUmVsb2NWaXNpdG9yLmgKaW5kZXggMDA4ZTEwOS4uNzZmM2ZhYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvUmVsb2NWaXNpdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvUmVsb2NWaXNpdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUmVsb2NWaXNpdG9yLmggLSBWaXNpdG9yIGZvciBvYmplY3QgZmlsZSByZWxvY2F0aW9ucyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTEwMSw2ICsxMDAsOCBAQAogICAgIGNhc2UgVHJpcGxlOjphcm06CiAgICAgY2FzZSBUcmlwbGU6OmFybWViOgogICAgICAgcmV0dXJuIHZpc2l0QVJNKFJlbCwgUiwgVmFsdWUpOworICAgIGNhc2UgVHJpcGxlOjphdnI6CisgICAgICByZXR1cm4gdmlzaXRBVlIoUmVsLCBSLCBWYWx1ZSk7CiAgICAgY2FzZSBUcmlwbGU6OmxhbmFpOgogICAgICAgcmV0dXJuIHZpc2l0TGFuYWkoUmVsLCBSLCBWYWx1ZSk7CiAgICAgY2FzZSBUcmlwbGU6Om1pcHNlbDoKQEAgLTEyOSw2ICsxMzAsOCBAQAogICAgIGNhc2UgRUxGOjpSX1g4Nl82NF9OT05FOgogICAgICAgcmV0dXJuIDA7CiAgICAgY2FzZSBFTEY6OlJfWDg2XzY0XzY0OgorICAgIGNhc2UgRUxGOjpSX1g4Nl82NF9EVFBPRkYzMjoKKyAgICBjYXNlIEVMRjo6Ul9YODZfNjRfRFRQT0ZGNjQ6CiAgICAgICByZXR1cm4gVmFsdWUgKyBnZXRFTEZBZGRlbmQoUik7CiAgICAgY2FzZSBFTEY6OlJfWDg2XzY0X1BDMzI6CiAgICAgICByZXR1cm4gVmFsdWUgKyBnZXRFTEZBZGRlbmQoUikgLSBSLmdldE9mZnNldCgpOwpAQCAtMjU3LDYgKzI2MCwxNiBAQAogICAgIHJldHVybiAwOwogICB9CiAKKyAgdWludDY0X3QgdmlzaXRBVlIodWludDMyX3QgUmVsLCBSZWxvY2F0aW9uUmVmIFIsIHVpbnQ2NF90IFZhbHVlKSB7CisgICAgaWYgKFJlbCA9PSBFTEY6OlJfQVZSXzE2KSB7CisgICAgICByZXR1cm4gKFZhbHVlICsgZ2V0RUxGQWRkZW5kKFIpKSAmIDB4RkZGRjsKKyAgICB9IGVsc2UgaWYgKFJlbCA9PSBFTEY6OlJfQVZSXzMyKSB7CisgICAgICByZXR1cm4gKFZhbHVlICsgZ2V0RUxGQWRkZW5kKFIpKSAmIDB4RkZGRkZGRkY7CisgICAgfQorICAgIEhhc0Vycm9yID0gdHJ1ZTsKKyAgICByZXR1cm4gMDsKKyAgfQorCiAgIHVpbnQ2NF90IHZpc2l0TGFuYWkodWludDMyX3QgUmVsLCBSZWxvY2F0aW9uUmVmIFIsIHVpbnQ2NF90IFZhbHVlKSB7CiAgICAgaWYgKFJlbCA9PSBFTEY6OlJfTEFOQUlfMzIpCiAgICAgICByZXR1cm4gKFZhbHVlICsgZ2V0RUxGQWRkZW5kKFIpKSAmIDB4RkZGRkZGRkY7CkBAIC0zMjMsMTYgKzMzNiwxNyBAQAogICB1aW50NjRfdCB2aXNpdFdhc20odWludDMyX3QgUmVsLCBSZWxvY2F0aW9uUmVmIFIsIHVpbnQ2NF90IFZhbHVlKSB7CiAgICAgaWYgKE9ialRvVmlzaXQuZ2V0QXJjaCgpID09IFRyaXBsZTo6d2FzbTMyKSB7CiAgICAgICBzd2l0Y2ggKFJlbCkgewotICAgICAgY2FzZSB3YXNtOjpSX1dFQkFTU0VNQkxZX0ZVTkNUSU9OX0lOREVYX0xFQjoKLSAgICAgIGNhc2Ugd2FzbTo6Ul9XRUJBU1NFTUJMWV9UQUJMRV9JTkRFWF9TTEVCOgotICAgICAgY2FzZSB3YXNtOjpSX1dFQkFTU0VNQkxZX1RBQkxFX0lOREVYX0kzMjoKLSAgICAgIGNhc2Ugd2FzbTo6Ul9XRUJBU1NFTUJMWV9NRU1PUllfQUREUl9MRUI6Ci0gICAgICBjYXNlIHdhc206OlJfV0VCQVNTRU1CTFlfTUVNT1JZX0FERFJfU0xFQjoKLSAgICAgIGNhc2Ugd2FzbTo6Ul9XRUJBU1NFTUJMWV9NRU1PUllfQUREUl9JMzI6Ci0gICAgICBjYXNlIHdhc206OlJfV0VCQVNTRU1CTFlfVFlQRV9JTkRFWF9MRUI6Ci0gICAgICBjYXNlIHdhc206OlJfV0VCQVNTRU1CTFlfR0xPQkFMX0lOREVYX0xFQjoKLSAgICAgIGNhc2Ugd2FzbTo6Ul9XRUJBU1NFTUJMWV9GVU5DVElPTl9PRkZTRVRfSTMyOgotICAgICAgY2FzZSB3YXNtOjpSX1dFQkFTU0VNQkxZX1NFQ1RJT05fT0ZGU0VUX0kzMjoKKyAgICAgIGNhc2Ugd2FzbTo6Ul9XQVNNX0ZVTkNUSU9OX0lOREVYX0xFQjoKKyAgICAgIGNhc2Ugd2FzbTo6Ul9XQVNNX1RBQkxFX0lOREVYX1NMRUI6CisgICAgICBjYXNlIHdhc206OlJfV0FTTV9UQUJMRV9JTkRFWF9JMzI6CisgICAgICBjYXNlIHdhc206OlJfV0FTTV9NRU1PUllfQUREUl9MRUI6CisgICAgICBjYXNlIHdhc206OlJfV0FTTV9NRU1PUllfQUREUl9TTEVCOgorICAgICAgY2FzZSB3YXNtOjpSX1dBU01fTUVNT1JZX0FERFJfSTMyOgorICAgICAgY2FzZSB3YXNtOjpSX1dBU01fVFlQRV9JTkRFWF9MRUI6CisgICAgICBjYXNlIHdhc206OlJfV0FTTV9HTE9CQUxfSU5ERVhfTEVCOgorICAgICAgY2FzZSB3YXNtOjpSX1dBU01fRlVOQ1RJT05fT0ZGU0VUX0kzMjoKKyAgICAgIGNhc2Ugd2FzbTo6Ul9XQVNNX1NFQ1RJT05fT0ZGU0VUX0kzMjoKKyAgICAgIGNhc2Ugd2FzbTo6Ul9XQVNNX0VWRU5UX0lOREVYX0xFQjoKICAgICAgICAgLy8gRm9yIHdhc20gc2VjdGlvbiwgaXRzIG9mZnNldCBhdCAwIC0tIGlnbm9yaW5nIFZhbHVlCiAgICAgICAgIHJldHVybiAwOwogICAgICAgfQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvU3RhY2tNYXBQYXJzZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L1N0YWNrTWFwUGFyc2VyLmgKaW5kZXggNTU3ZGI1YS4uODgxNzUxNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvU3RhY2tNYXBQYXJzZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9TdGFja01hcFBhcnNlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFN0YWNrTWFwUGFyc2VyLmggLSBTdGFja01hcCBQYXJzaW5nIFN1cHBvcnQgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvU3ltYm9sU2l6ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvU3ltYm9sU2l6ZS5oCmluZGV4IDFhMWRjODcuLjA4NTYyM2UgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L1N5bWJvbFNpemUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9TeW1ib2xTaXplLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3ltYm9sU2l6ZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L1N5bWJvbGljRmlsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvU3ltYm9saWNGaWxlLmgKaW5kZXggNWI5NTQ5Yi4uNmQ5NWQ3YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvU3ltYm9saWNGaWxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvU3ltYm9saWNGaWxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3ltYm9saWNGaWxlLmggLSBJbnRlcmZhY2UgdGhhdCBvbmx5IHByb3ZpZGVzIHN5bWJvbHMgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L1dhc20uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L1dhc20uaAppbmRleCAyNTkwM2ZjLi5hMGEyYzRiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9XYXNtLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvV2FzbS5oCkBAIC0xLDkgKzEsOCBAQAotLy89PT0tIFdhc21PYmplY3RGaWxlLmggLSBXYXNtIG9iamVjdCBmaWxlIGltcGxlbWVudGF0aW9uIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vPT09LSBXYXNtLmggLSBXYXNtIG9iamVjdCBmaWxlIGltcGxlbWVudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzcsMTMgKzM2LDE2IEBACiBjbGFzcyBXYXNtU3ltYm9sIHsKIHB1YmxpYzoKICAgV2FzbVN5bWJvbChjb25zdCB3YXNtOjpXYXNtU3ltYm9sSW5mbyAmSW5mbywKLSAgICAgICAgICAgICBjb25zdCB3YXNtOjpXYXNtU2lnbmF0dXJlICpGdW5jdGlvblR5cGUsCi0gICAgICAgICAgICAgY29uc3Qgd2FzbTo6V2FzbUdsb2JhbFR5cGUgKkdsb2JhbFR5cGUpCi0gICAgICA6IEluZm8oSW5mbyksIEZ1bmN0aW9uVHlwZShGdW5jdGlvblR5cGUpLCBHbG9iYWxUeXBlKEdsb2JhbFR5cGUpIHt9CisgICAgICAgICAgICAgY29uc3Qgd2FzbTo6V2FzbUdsb2JhbFR5cGUgKkdsb2JhbFR5cGUsCisgICAgICAgICAgICAgY29uc3Qgd2FzbTo6V2FzbUV2ZW50VHlwZSAqRXZlbnRUeXBlLAorICAgICAgICAgICAgIGNvbnN0IHdhc206Oldhc21TaWduYXR1cmUgKlNpZ25hdHVyZSkKKyAgICAgIDogSW5mbyhJbmZvKSwgR2xvYmFsVHlwZShHbG9iYWxUeXBlKSwgRXZlbnRUeXBlKEV2ZW50VHlwZSksCisgICAgICAgIFNpZ25hdHVyZShTaWduYXR1cmUpIHt9CiAKICAgY29uc3Qgd2FzbTo6V2FzbVN5bWJvbEluZm8gJkluZm87Ci0gIGNvbnN0IHdhc206Oldhc21TaWduYXR1cmUgKkZ1bmN0aW9uVHlwZTsKICAgY29uc3Qgd2FzbTo6V2FzbUdsb2JhbFR5cGUgKkdsb2JhbFR5cGU7CisgIGNvbnN0IHdhc206Oldhc21FdmVudFR5cGUgKkV2ZW50VHlwZTsKKyAgY29uc3Qgd2FzbTo6V2FzbVNpZ25hdHVyZSAqU2lnbmF0dXJlOwogCiAgIGJvb2wgaXNUeXBlRnVuY3Rpb24oKSBjb25zdCB7CiAgICAgcmV0dXJuIEluZm8uS2luZCA9PSB3YXNtOjpXQVNNX1NZTUJPTF9UWVBFX0ZVTkNUSU9OOwpAQCAtNTksNiArNjEsOCBAQAogICAgIHJldHVybiBJbmZvLktpbmQgPT0gd2FzbTo6V0FTTV9TWU1CT0xfVFlQRV9TRUNUSU9OOwogICB9CiAKKyAgYm9vbCBpc1R5cGVFdmVudCgpIGNvbnN0IHsgcmV0dXJuIEluZm8uS2luZCA9PSB3YXNtOjpXQVNNX1NZTUJPTF9UWVBFX0VWRU5UOyB9CisKICAgYm9vbCBpc0RlZmluZWQoKSBjb25zdCB7IHJldHVybiAhaXNVbmRlZmluZWQoKTsgfQogCiAgIGJvb2wgaXNVbmRlZmluZWQoKSBjb25zdCB7CkBAIC0xMjQsMTIgKzEyOCwxNSBAQAogCiAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgQmluYXJ5ICp2KSB7IHJldHVybiB2LT5pc1dhc20oKTsgfQogCisgIGNvbnN0IHdhc206Oldhc21EeWxpbmtJbmZvICZkeWxpbmtJbmZvKCkgY29uc3QgeyByZXR1cm4gRHlsaW5rSW5mbzsgfQorICBjb25zdCB3YXNtOjpXYXNtUHJvZHVjZXJJbmZvICZnZXRQcm9kdWNlckluZm8oKSBjb25zdCB7IHJldHVybiBQcm9kdWNlckluZm87IH0KICAgQXJyYXlSZWY8d2FzbTo6V2FzbVNpZ25hdHVyZT4gdHlwZXMoKSBjb25zdCB7IHJldHVybiBTaWduYXR1cmVzOyB9CiAgIEFycmF5UmVmPHVpbnQzMl90PiBmdW5jdGlvblR5cGVzKCkgY29uc3QgeyByZXR1cm4gRnVuY3Rpb25UeXBlczsgfQogICBBcnJheVJlZjx3YXNtOjpXYXNtSW1wb3J0PiBpbXBvcnRzKCkgY29uc3QgeyByZXR1cm4gSW1wb3J0czsgfQogICBBcnJheVJlZjx3YXNtOjpXYXNtVGFibGU+IHRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIFRhYmxlczsgfQogICBBcnJheVJlZjx3YXNtOjpXYXNtTGltaXRzPiBtZW1vcmllcygpIGNvbnN0IHsgcmV0dXJuIE1lbW9yaWVzOyB9CiAgIEFycmF5UmVmPHdhc206Oldhc21HbG9iYWw+IGdsb2JhbHMoKSBjb25zdCB7IHJldHVybiBHbG9iYWxzOyB9CisgIEFycmF5UmVmPHdhc206Oldhc21FdmVudD4gZXZlbnRzKCkgY29uc3QgeyByZXR1cm4gRXZlbnRzOyB9CiAgIEFycmF5UmVmPHdhc206Oldhc21FeHBvcnQ+IGV4cG9ydHMoKSBjb25zdCB7IHJldHVybiBFeHBvcnRzOyB9CiAgIEFycmF5UmVmPFdhc21TeW1ib2w+IHN5bXMoKSBjb25zdCB7IHJldHVybiBTeW1ib2xzOyB9CiAgIGNvbnN0IHdhc206Oldhc21MaW5raW5nRGF0YSAmbGlua2luZ0RhdGEoKSBjb25zdCB7IHJldHVybiBMaW5raW5nRGF0YTsgfQpAQCAtMTQxLDcgKzE0OCw3IEBACiAgIHVpbnQzMl90IHN0YXJ0RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBTdGFydEZ1bmN0aW9uOyB9CiAgIHVpbnQzMl90IGdldE51bUltcG9ydGVkR2xvYmFscygpIGNvbnN0IHsgcmV0dXJuIE51bUltcG9ydGVkR2xvYmFsczsgfQogICB1aW50MzJfdCBnZXROdW1JbXBvcnRlZEZ1bmN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIE51bUltcG9ydGVkRnVuY3Rpb25zOyB9Ci0KKyAgdWludDMyX3QgZ2V0TnVtSW1wb3J0ZWRFdmVudHMoKSBjb25zdCB7IHJldHVybiBOdW1JbXBvcnRlZEV2ZW50czsgfQogICB2b2lkIG1vdmVTeW1ib2xOZXh0KERhdGFSZWZJbXBsICZTeW1iKSBjb25zdCBvdmVycmlkZTsKIAogICB1aW50MzJfdCBnZXRTeW1ib2xGbGFncyhEYXRhUmVmSW1wbCBTeW1iKSBjb25zdCBvdmVycmlkZTsKQEAgLTE5Myw2ICsyMDAsNyBAQAogICBUcmlwbGU6OkFyY2hUeXBlIGdldEFyY2goKSBjb25zdCBvdmVycmlkZTsKICAgU3VidGFyZ2V0RmVhdHVyZXMgZ2V0RmVhdHVyZXMoKSBjb25zdCBvdmVycmlkZTsKICAgYm9vbCBpc1JlbG9jYXRhYmxlT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgIGJvb2wgaXNTaGFyZWRPYmplY3QoKSBjb25zdDsKIAogICBzdHJ1Y3QgUmVhZENvbnRleHQgewogICAgIGNvbnN0IHVpbnQ4X3QgKlN0YXJ0OwpAQCAtMjA1LDE3ICsyMTMsMjEgQEAKICAgYm9vbCBpc0RlZmluZWRGdW5jdGlvbkluZGV4KHVpbnQzMl90IEluZGV4KSBjb25zdDsKICAgYm9vbCBpc1ZhbGlkR2xvYmFsSW5kZXgodWludDMyX3QgSW5kZXgpIGNvbnN0OwogICBib29sIGlzRGVmaW5lZEdsb2JhbEluZGV4KHVpbnQzMl90IEluZGV4KSBjb25zdDsKKyAgYm9vbCBpc1ZhbGlkRXZlbnRJbmRleCh1aW50MzJfdCBJbmRleCkgY29uc3Q7CisgIGJvb2wgaXNEZWZpbmVkRXZlbnRJbmRleCh1aW50MzJfdCBJbmRleCkgY29uc3Q7CiAgIGJvb2wgaXNWYWxpZEZ1bmN0aW9uU3ltYm9sKHVpbnQzMl90IEluZGV4KSBjb25zdDsKICAgYm9vbCBpc1ZhbGlkR2xvYmFsU3ltYm9sKHVpbnQzMl90IEluZGV4KSBjb25zdDsKKyAgYm9vbCBpc1ZhbGlkRXZlbnRTeW1ib2wodWludDMyX3QgSW5kZXgpIGNvbnN0OwogICBib29sIGlzVmFsaWREYXRhU3ltYm9sKHVpbnQzMl90IEluZGV4KSBjb25zdDsKICAgYm9vbCBpc1ZhbGlkU2VjdGlvblN5bWJvbCh1aW50MzJfdCBJbmRleCkgY29uc3Q7CiAgIHdhc206Oldhc21GdW5jdGlvbiAmZ2V0RGVmaW5lZEZ1bmN0aW9uKHVpbnQzMl90IEluZGV4KTsKKyAgY29uc3Qgd2FzbTo6V2FzbUZ1bmN0aW9uICZnZXREZWZpbmVkRnVuY3Rpb24odWludDMyX3QgSW5kZXgpIGNvbnN0OwogICB3YXNtOjpXYXNtR2xvYmFsICZnZXREZWZpbmVkR2xvYmFsKHVpbnQzMl90IEluZGV4KTsKKyAgd2FzbTo6V2FzbUV2ZW50ICZnZXREZWZpbmVkRXZlbnQodWludDMyX3QgSW5kZXgpOwogCiAgIGNvbnN0IFdhc21TZWN0aW9uICZnZXRXYXNtU2VjdGlvbihEYXRhUmVmSW1wbCBSZWYpIGNvbnN0OwogICBjb25zdCB3YXNtOjpXYXNtUmVsb2NhdGlvbiAmZ2V0V2FzbVJlbG9jYXRpb24oRGF0YVJlZkltcGwgUmVmKSBjb25zdDsKIAotICBjb25zdCB1aW50OF90ICpnZXRQdHIoc2l6ZV90IE9mZnNldCkgY29uc3Q7CiAgIEVycm9yIHBhcnNlU2VjdGlvbihXYXNtU2VjdGlvbiAmU2VjKTsKICAgRXJyb3IgcGFyc2VDdXN0b21TZWN0aW9uKFdhc21TZWN0aW9uICZTZWMsIFJlYWRDb250ZXh0ICZDdHgpOwogCkBAIC0yMjYsNiArMjM4LDcgQEAKICAgRXJyb3IgcGFyc2VUYWJsZVNlY3Rpb24oUmVhZENvbnRleHQgJkN0eCk7CiAgIEVycm9yIHBhcnNlTWVtb3J5U2VjdGlvbihSZWFkQ29udGV4dCAmQ3R4KTsKICAgRXJyb3IgcGFyc2VHbG9iYWxTZWN0aW9uKFJlYWRDb250ZXh0ICZDdHgpOworICBFcnJvciBwYXJzZUV2ZW50U2VjdGlvbihSZWFkQ29udGV4dCAmQ3R4KTsKICAgRXJyb3IgcGFyc2VFeHBvcnRTZWN0aW9uKFJlYWRDb250ZXh0ICZDdHgpOwogICBFcnJvciBwYXJzZVN0YXJ0U2VjdGlvbihSZWFkQ29udGV4dCAmQ3R4KTsKICAgRXJyb3IgcGFyc2VFbGVtU2VjdGlvbihSZWFkQ29udGV4dCAmQ3R4KTsKQEAgLTIzMywxOSArMjQ2LDI0IEBACiAgIEVycm9yIHBhcnNlRGF0YVNlY3Rpb24oUmVhZENvbnRleHQgJkN0eCk7CiAKICAgLy8gQ3VzdG9tIHNlY3Rpb24gdHlwZXMKKyAgRXJyb3IgcGFyc2VEeWxpbmtTZWN0aW9uKFJlYWRDb250ZXh0ICZDdHgpOwogICBFcnJvciBwYXJzZU5hbWVTZWN0aW9uKFJlYWRDb250ZXh0ICZDdHgpOwogICBFcnJvciBwYXJzZUxpbmtpbmdTZWN0aW9uKFJlYWRDb250ZXh0ICZDdHgpOwogICBFcnJvciBwYXJzZUxpbmtpbmdTZWN0aW9uU3ltdGFiKFJlYWRDb250ZXh0ICZDdHgpOwogICBFcnJvciBwYXJzZUxpbmtpbmdTZWN0aW9uQ29tZGF0KFJlYWRDb250ZXh0ICZDdHgpOworICBFcnJvciBwYXJzZVByb2R1Y2Vyc1NlY3Rpb24oUmVhZENvbnRleHQgJkN0eCk7CiAgIEVycm9yIHBhcnNlUmVsb2NTZWN0aW9uKFN0cmluZ1JlZiBOYW1lLCBSZWFkQ29udGV4dCAmQ3R4KTsKIAogICB3YXNtOjpXYXNtT2JqZWN0SGVhZGVyIEhlYWRlcjsKICAgc3RkOjp2ZWN0b3I8V2FzbVNlY3Rpb24+IFNlY3Rpb25zOworICB3YXNtOjpXYXNtRHlsaW5rSW5mbyBEeWxpbmtJbmZvOworICB3YXNtOjpXYXNtUHJvZHVjZXJJbmZvIFByb2R1Y2VySW5mbzsKICAgc3RkOjp2ZWN0b3I8d2FzbTo6V2FzbVNpZ25hdHVyZT4gU2lnbmF0dXJlczsKICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+IEZ1bmN0aW9uVHlwZXM7CiAgIHN0ZDo6dmVjdG9yPHdhc206Oldhc21UYWJsZT4gVGFibGVzOwogICBzdGQ6OnZlY3Rvcjx3YXNtOjpXYXNtTGltaXRzPiBNZW1vcmllczsKICAgc3RkOjp2ZWN0b3I8d2FzbTo6V2FzbUdsb2JhbD4gR2xvYmFsczsKKyAgc3RkOjp2ZWN0b3I8d2FzbTo6V2FzbUV2ZW50PiBFdmVudHM7CiAgIHN0ZDo6dmVjdG9yPHdhc206Oldhc21JbXBvcnQ+IEltcG9ydHM7CiAgIHN0ZDo6dmVjdG9yPHdhc206Oldhc21FeHBvcnQ+IEV4cG9ydHM7CiAgIHN0ZDo6dmVjdG9yPHdhc206Oldhc21FbGVtU2VnbWVudD4gRWxlbVNlZ21lbnRzOwpAQCAtMjU1LDEyICsyNzMsNTggQEAKICAgc3RkOjp2ZWN0b3I8d2FzbTo6V2FzbUZ1bmN0aW9uTmFtZT4gRGVidWdOYW1lczsKICAgdWludDMyX3QgU3RhcnRGdW5jdGlvbiA9IC0xOwogICBib29sIEhhc0xpbmtpbmdTZWN0aW9uID0gZmFsc2U7CisgIGJvb2wgSGFzRHlsaW5rU2VjdGlvbiA9IGZhbHNlOwogICB3YXNtOjpXYXNtTGlua2luZ0RhdGEgTGlua2luZ0RhdGE7CiAgIHVpbnQzMl90IE51bUltcG9ydGVkR2xvYmFscyA9IDA7CiAgIHVpbnQzMl90IE51bUltcG9ydGVkRnVuY3Rpb25zID0gMDsKKyAgdWludDMyX3QgTnVtSW1wb3J0ZWRFdmVudHMgPSAwOwogICB1aW50MzJfdCBDb2RlU2VjdGlvbiA9IDA7CiAgIHVpbnQzMl90IERhdGFTZWN0aW9uID0gMDsKICAgdWludDMyX3QgR2xvYmFsU2VjdGlvbiA9IDA7CisgIHVpbnQzMl90IEV2ZW50U2VjdGlvbiA9IDA7Cit9OworCitjbGFzcyBXYXNtU2VjdGlvbk9yZGVyQ2hlY2tlciB7CitwdWJsaWM6CisgIC8vIFdlIGRlZmluZSBvcmRlcnMgZm9yIGFsbCBjb3JlIHdhc20gc2VjdGlvbnMgYW5kIGtub3duIGN1c3RvbSBzZWN0aW9ucy4KKyAgZW51bSA6IGludCB7CisgICAgLy8gQ29yZSBzZWN0aW9ucworICAgIC8vIFRoZSBvcmRlciBvZiBzdGFuZGFyZCBzZWN0aW9ucyBpcyBwcmVjaXNlbHkgZ2l2ZW4gYnkgdGhlIHNwZWMuCisgICAgV0FTTV9TRUNfT1JERVJfVFlQRSA9IDEsCisgICAgV0FTTV9TRUNfT1JERVJfSU1QT1JUID0gMiwKKyAgICBXQVNNX1NFQ19PUkRFUl9GVU5DVElPTiA9IDMsCisgICAgV0FTTV9TRUNfT1JERVJfVEFCTEUgPSA0LAorICAgIFdBU01fU0VDX09SREVSX01FTU9SWSA9IDUsCisgICAgV0FTTV9TRUNfT1JERVJfR0xPQkFMID0gNiwKKyAgICBXQVNNX1NFQ19PUkRFUl9FVkVOVCA9IDcsCisgICAgV0FTTV9TRUNfT1JERVJfRVhQT1JUID0gOCwKKyAgICBXQVNNX1NFQ19PUkRFUl9TVEFSVCA9IDksCisgICAgV0FTTV9TRUNfT1JERVJfRUxFTSA9IDEwLAorICAgIFdBU01fU0VDX09SREVSX0RBVEFDT1VOVCA9IDExLAorICAgIFdBU01fU0VDX09SREVSX0NPREUgPSAxMiwKKyAgICBXQVNNX1NFQ19PUkRFUl9EQVRBID0gMTMsCisKKyAgICAvLyBDdXN0b20gc2VjdGlvbnMKKyAgICAvLyAiZHlsaW5rIiBzaG91bGQgYmUgdGhlIHZlcnkgZmlyc3Qgc2VjdGlvbiBpbiB0aGUgbW9kdWxlCisgICAgV0FTTV9TRUNfT1JERVJfRFlMSU5LID0gMCwKKyAgICAvLyAibGlua2luZyIgc2VjdGlvbiByZXF1aXJlcyBEQVRBIHNlY3Rpb24gaW4gb3JkZXIgdG8gdmFsaWRhdGUgZGF0YSBzeW1ib2xzCisgICAgV0FTTV9TRUNfT1JERVJfTElOS0lORyA9IDEwMCwKKyAgICAvLyBNdXN0IGNvbWUgYWZ0ZXIgImxpbmtpbmciIHNlY3Rpb24gaW4gb3JkZXIgdG8gdmFsaWRhdGUgcmVsb2MgaW5kZXhlcy4KKyAgICBXQVNNX1NFQ19PUkRFUl9SRUxPQyA9IDEwMSwKKyAgICAvLyAibmFtZSIgc2VjdGlvbiBtdXN0IGFwcGVhciBhZnRlciBEQVRBLiBDb21lcyBhZnRlciAibGlua2luZyIgdG8gYWxsb3cKKyAgICAvLyBzeW1ib2wgdGFibGUgdG8gc2V0IGRlZmF1bHQgZnVuY3Rpb24gbmFtZS4KKyAgICBXQVNNX1NFQ19PUkRFUl9OQU1FID0gMTAyLAorICAgIC8vICJwcm9kdWNlcnMiIHNlY3Rpb24gbXVzdCBhcHBlYXIgYWZ0ZXIgIm5hbWUiIHNlY3Rpb24uCisgICAgV0FTTV9TRUNfT1JERVJfUFJPRFVDRVJTID0gMTAzCisgIH07CisKKyAgYm9vbCBpc1ZhbGlkU2VjdGlvbk9yZGVyKHVuc2lnbmVkIElELCBTdHJpbmdSZWYgQ3VzdG9tU2VjdGlvbk5hbWUgPSAiIik7CisKK3ByaXZhdGU6CisgIGludCBMYXN0T3JkZXIgPSAtMTsgLy8gTGFzdGx5IHNlZW4ga25vd24gc2VjdGlvbidzIG9yZGVyCisKKyAgLy8gUmV0dXJucyAtMSBmb3IgdW5rbm93biBzZWN0aW9ucy4KKyAgaW50IGdldFNlY3Rpb25PcmRlcih1bnNpZ25lZCBJRCwgU3RyaW5nUmVmIEN1c3RvbVNlY3Rpb25OYW1lID0gIiIpOwogfTsKIAogfSAvLyBlbmQgbmFtZXNwYWNlIG9iamVjdApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvV2FzbVRyYWl0cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvV2FzbVRyYWl0cy5oCmluZGV4IDA0OWQ3MmYuLjNlZWU4ZTcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L1dhc21UcmFpdHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdC9XYXNtVHJhaXRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gV2FzbVRyYWl0cy5oIC0gRGVuc2VNYXAgdHJhaXRzIGZvciB0aGUgV2FzbSBzdHJ1Y3R1cmVzIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0L1dpbmRvd3NSZXNvdXJjZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvV2luZG93c1Jlc291cmNlLmgKaW5kZXggYTA3N2M4Mi4uZmQwNGU2MCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvV2luZG93c1Jlc291cmNlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3QvV2luZG93c1Jlc291cmNlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFdpbmRvd3NSZXNvdXJjZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKy0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvQ09GRllBTUwuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9DT0ZGWUFNTC5oCmluZGV4IDc4ZjAyMWYuLmVlYzVhZjkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9DT0ZGWUFNTC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9DT0ZGWUFNTC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENPRkZZQU1MLmggLSBDT0ZGIFlBTUxJTyBpbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC01OCw3ICs1NywxMyBAQAogc3RydWN0IFJlbG9jYXRpb24gewogICB1aW50MzJfdCBWaXJ0dWFsQWRkcmVzczsKICAgdWludDE2X3QgVHlwZTsKKworICAvLyBOb3JtYWxseSBhIFJlbG9jYXRpb24gY2FuIHJlZmVyIHRvIHRoZSBzeW1ib2wgdmlhIGl0cyBuYW1lLgorICAvLyBJdCBjYW4gYWxzbyB1c2UgYSBkaXJlY3Qgc3ltYm9sIHRhYmxlIGluZGV4IGluc3RlYWQgKHdpdGggbm8gbmFtZQorICAvLyBzcGVjaWZpZWQpLCBhbGxvd2luZyBkaXNhbWJpZ3VhdGluZyBiZXR3ZWVuIG11bHRpcGxlIHN5bWJvbHMgd2l0aCB0aGUKKyAgLy8gc2FtZSBuYW1lIG9yIGNyYWZ0aW5nIGludGVudGlvbmFsbHkgYnJva2VuIGZpbGVzIGZvciB0ZXN0aW5nLgogICBTdHJpbmdSZWYgU3ltYm9sTmFtZTsKKyAgT3B0aW9uYWw8dWludDMyX3Q+IFN5bWJvbFRhYmxlSW5kZXg7CiB9OwogCiBzdHJ1Y3QgU2VjdGlvbiB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvQ29kZVZpZXdZQU1MRGVidWdTZWN0aW9ucy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3RZQU1ML0NvZGVWaWV3WUFNTERlYnVnU2VjdGlvbnMuaAppbmRleCBkNjIwMDA4Li45Y2JhY2I4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvQ29kZVZpZXdZQU1MRGVidWdTZWN0aW9ucy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9Db2RlVmlld1lBTUxEZWJ1Z1NlY3Rpb25zLmgKQEAgLTEsOSArMSw4IEBACiAvLz0tIENvZGVWaWV3WUFNTERlYnVnU2VjdGlvbnMuaCAtIENvZGVWaWV3IFlBTUxJTyBkZWJ1ZyBzZWN0aW9ucyAtKi0gQysrIC0qLT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9Db2RlVmlld1lBTUxTeW1ib2xzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvQ29kZVZpZXdZQU1MU3ltYm9scy5oCmluZGV4IDc5MTE5M2MuLjdjMDVjOWUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9Db2RlVmlld1lBTUxTeW1ib2xzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3RZQU1ML0NvZGVWaWV3WUFNTFN5bWJvbHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDb2RlVmlld1lBTUxTeW1ib2xzLmggLSBDb2RlVmlldyBZQU1MSU8gU3ltYm9sIGltcGxlbWVudGF0aW9uIC0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3RZQU1ML0NvZGVWaWV3WUFNTFR5cGVIYXNoaW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvQ29kZVZpZXdZQU1MVHlwZUhhc2hpbmcuaAppbmRleCAzNDQ5NjZmLi5kNmNlYzhkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvQ29kZVZpZXdZQU1MVHlwZUhhc2hpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvQ29kZVZpZXdZQU1MVHlwZUhhc2hpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIENvZGVWaWV3WUFNTFR5cGVIYXNoaW5nLmggLSBDb2RlVmlldyBZQU1MSU8gVHlwZSBoYXNoaW5nIC0tLS0qLSBDKystKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3RZQU1ML0NvZGVWaWV3WUFNTFR5cGVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvQ29kZVZpZXdZQU1MVHlwZXMuaAppbmRleCAxYjEzMDZkLi4wNGI1ZTBiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvQ29kZVZpZXdZQU1MVHlwZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvQ29kZVZpZXdZQU1MVHlwZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIENvZGVWaWV3WUFNTFR5cGVzLmggLSBDb2RlVmlldyBZQU1MSU8gVHlwZSBpbXBsZW1lbnRhdGlvbiAtLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3RZQU1ML0RXQVJGRW1pdHRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3RZQU1ML0RXQVJGRW1pdHRlci5oCmluZGV4IGNlMzIyNzQuLjJjY2M4NzYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9EV0FSRkVtaXR0ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvRFdBUkZFbWl0dGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBEV0FSRkVtaXR0ZXIuaCAtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvRFdBUkZZQU1MLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvRFdBUkZZQU1MLmgKaW5kZXggNzA1Yzg4Ny4uNzhkNzM2YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3RZQU1ML0RXQVJGWUFNTC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9EV0FSRllBTUwuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEV0FSRllBTUwuaCAtIERXQVJGIFlBTUxJTyBpbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9FTEZZQU1MLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvRUxGWUFNTC5oCmluZGV4IDkyMDgxZjAuLmUxOTRlNTkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9FTEZZQU1MLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3RZQU1ML0VMRllBTUwuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBFTEZZQU1MLmggLSBFTEYgWUFNTElPIGltcGxlbWVudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KQEAgLTQ0LDYgKzQzLDggQEAKIExMVk1fWUFNTF9TVFJPTkdfVFlQRURFRih1aW50OF90LCBFTEZfRUxGT1NBQkkpCiAvLyBKdXN0IHVzZSA2NCwgc2luY2UgaXQgY2FuIGhvbGQgMzItYml0IHZhbHVlcyB0b28uCiBMTFZNX1lBTUxfU1RST05HX1RZUEVERUYodWludDY0X3QsIEVMRl9FRikKKy8vIEp1c3QgdXNlIDY0LCBzaW5jZSBpdCBjYW4gaG9sZCAzMi1iaXQgdmFsdWVzIHRvby4KK0xMVk1fWUFNTF9TVFJPTkdfVFlQRURFRih1aW50NjRfdCwgRUxGX0RZTlRBRykKIExMVk1fWUFNTF9TVFJPTkdfVFlQRURFRih1aW50MzJfdCwgRUxGX1BGKQogTExWTV9ZQU1MX1NUUk9OR19UWVBFREVGKHVpbnQzMl90LCBFTEZfU0hUKQogTExWTV9ZQU1MX1NUUk9OR19UWVBFREVGKHVpbnQzMl90LCBFTEZfUkVMKQpAQCAtNjgsNiArNjksNyBAQAogICBFTEZfRUxGQ0xBU1MgQ2xhc3M7CiAgIEVMRl9FTEZEQVRBIERhdGE7CiAgIEVMRl9FTEZPU0FCSSBPU0FCSTsKKyAgbGx2bTo6eWFtbDo6SGV4OCBBQklWZXJzaW9uOwogICBFTEZfRVQgVHlwZTsKICAgRUxGX0VNIE1hY2hpbmU7CiAgIEVMRl9FRiBGbGFnczsKQEAgLTEwNyw4ICsxMDksMTQgQEAKICAgU3RyaW5nUmVmIHNlY3Rpb25OYW1lT3JUeXBlOwogfTsKIAorc3RydWN0IER5bmFtaWNFbnRyeSB7CisgIEVMRl9EWU5UQUcgVGFnOworICBsbHZtOjp5YW1sOjpIZXg2NCBWYWw7Cit9OworCiBzdHJ1Y3QgU2VjdGlvbiB7CiAgIGVudW0gY2xhc3MgU2VjdGlvbktpbmQgeworICAgIER5bmFtaWMsCiAgICAgR3JvdXAsCiAgICAgUmF3Q29udGVudCwKICAgICBSZWxvY2F0aW9uLApAQCAtMTIxLDEzICsxMjksMjMgQEAKICAgRUxGX1NIRiBGbGFnczsKICAgbGx2bTo6eWFtbDo6SGV4NjQgQWRkcmVzczsKICAgU3RyaW5nUmVmIExpbms7Ci0gIFN0cmluZ1JlZiBJbmZvOwogICBsbHZtOjp5YW1sOjpIZXg2NCBBZGRyZXNzQWxpZ247CiAgIE9wdGlvbmFsPGxsdm06OnlhbWw6OkhleDY0PiBFbnRTaXplOwogCiAgIFNlY3Rpb24oU2VjdGlvbktpbmQgS2luZCkgOiBLaW5kKEtpbmQpIHt9CiAgIHZpcnR1YWwgflNlY3Rpb24oKTsKIH07CisKK3N0cnVjdCBEeW5hbWljU2VjdGlvbiA6IFNlY3Rpb24geworICBzdGQ6OnZlY3RvcjxEeW5hbWljRW50cnk+IEVudHJpZXM7CisKKyAgRHluYW1pY1NlY3Rpb24oKSA6IFNlY3Rpb24oU2VjdGlvbktpbmQ6OkR5bmFtaWMpIHt9CisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBTZWN0aW9uICpTKSB7CisgICAgcmV0dXJuIFMtPktpbmQgPT0gU2VjdGlvbktpbmQ6OkR5bmFtaWM7CisgIH0KK307CisKIHN0cnVjdCBSYXdDb250ZW50U2VjdGlvbiA6IFNlY3Rpb24gewogICB5YW1sOjpCaW5hcnlSZWYgQ29udGVudDsKICAgbGx2bTo6eWFtbDo6SGV4NjQgU2l6ZTsKQEAgLTE1Myw2ICsxNzEsNyBAQAogICAvLyBNZW1iZXJzIG9mIGEgZ3JvdXAgY29udGFpbiBhIGZsYWcgYW5kIGEgbGlzdCBvZiBzZWN0aW9uIGluZGljZXMKICAgLy8gdGhhdCBhcmUgcGFydCBvZiB0aGUgZ3JvdXAuCiAgIHN0ZDo6dmVjdG9yPFNlY3Rpb25PclR5cGU+IE1lbWJlcnM7CisgIFN0cmluZ1JlZiBTaWduYXR1cmU7IC8qIEluZm8gKi8KIAogICBHcm91cCgpIDogU2VjdGlvbihTZWN0aW9uS2luZDo6R3JvdXApIHt9CiAKQEAgLTE3MCw2ICsxODksNyBAQAogCiBzdHJ1Y3QgUmVsb2NhdGlvblNlY3Rpb24gOiBTZWN0aW9uIHsKICAgc3RkOjp2ZWN0b3I8UmVsb2NhdGlvbj4gUmVsb2NhdGlvbnM7CisgIFN0cmluZ1JlZiBSZWxvY2F0YWJsZVNlYzsgLyogSW5mbyAqLwogCiAgIFJlbG9jYXRpb25TZWN0aW9uKCkgOiBTZWN0aW9uKFNlY3Rpb25LaW5kOjpSZWxvY2F0aW9uKSB7fQogCkBAIC0yMTQsNiArMjM0LDcgQEAKIH0gLy8gZW5kIG5hbWVzcGFjZSBFTEZZQU1MCiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQogCitMTFZNX1lBTUxfSVNfU0VRVUVOQ0VfVkVDVE9SKGxsdm06OkVMRllBTUw6OkR5bmFtaWNFbnRyeSkKIExMVk1fWUFNTF9JU19TRVFVRU5DRV9WRUNUT1IobGx2bTo6RUxGWUFNTDo6UHJvZ3JhbUhlYWRlcikKIExMVk1fWUFNTF9JU19TRVFVRU5DRV9WRUNUT1Ioc3RkOjp1bmlxdWVfcHRyPGxsdm06OkVMRllBTUw6OlNlY3Rpb24+KQogTExWTV9ZQU1MX0lTX1NFUVVFTkNFX1ZFQ1RPUihsbHZtOjpFTEZZQU1MOjpTeW1ib2wpCkBAIC0yOTcsNiArMzE4LDExIEBACiB9OwogCiB0ZW1wbGF0ZSA8Pgorc3RydWN0IFNjYWxhckVudW1lcmF0aW9uVHJhaXRzPEVMRllBTUw6OkVMRl9EWU5UQUc+IHsKKyAgc3RhdGljIHZvaWQgZW51bWVyYXRpb24oSU8gJklPLCBFTEZZQU1MOjpFTEZfRFlOVEFHICZWYWx1ZSk7Cit9OworCit0ZW1wbGF0ZSA8Pgogc3RydWN0IFNjYWxhckVudW1lcmF0aW9uVHJhaXRzPEVMRllBTUw6OkVMRl9SU1M+IHsKICAgc3RhdGljIHZvaWQgZW51bWVyYXRpb24oSU8gJklPLCBFTEZZQU1MOjpFTEZfUlNTICZWYWx1ZSk7CiB9OwpAQCAtMzUxLDYgKzM3NywxMCBAQAogICBzdGF0aWMgdm9pZCBtYXBwaW5nKElPICZJTywgRUxGWUFNTDo6TG9jYWxHbG9iYWxXZWFrU3ltYm9scyAmU3ltYm9scyk7CiB9OwogCit0ZW1wbGF0ZSA8PiBzdHJ1Y3QgTWFwcGluZ1RyYWl0czxFTEZZQU1MOjpEeW5hbWljRW50cnk+IHsKKyAgc3RhdGljIHZvaWQgbWFwcGluZyhJTyAmSU8sIEVMRllBTUw6OkR5bmFtaWNFbnRyeSAmUmVsKTsKK307CisKIHRlbXBsYXRlIDw+IHN0cnVjdCBNYXBwaW5nVHJhaXRzPEVMRllBTUw6OlJlbG9jYXRpb24+IHsKICAgc3RhdGljIHZvaWQgbWFwcGluZyhJTyAmSU8sIEVMRllBTUw6OlJlbG9jYXRpb24gJlJlbCk7CiB9OwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3RZQU1ML01hY2hPWUFNTC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3RZQU1ML01hY2hPWUFNTC5oCmluZGV4IGNlYzRmODYuLmQ3ZTFjMDMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9NYWNoT1lBTUwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvTWFjaE9ZQU1MLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTWFjaE9ZQU1MLmggLSBNYWNoLU8gWUFNTElPIGltcGxlbWVudGF0aW9uIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvT2JqZWN0WUFNTC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3RZQU1ML09iamVjdFlBTUwuaAppbmRleCAwMGNlODY0Li41NmY1ZjM5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvT2JqZWN0WUFNTC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9PYmplY3RZQU1MLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gT2JqZWN0WUFNTC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvV2FzbVlBTUwuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9XYXNtWUFNTC5oCmluZGV4IDhjZDA4ZTUuLmY1MjYwYmIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9XYXNtWUFNTC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9XYXNtWUFNTC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFdhc21ZQU1MLmggLSBXYXNtIFlBTUxJTyBpbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpAQCAtNzQsNiArNzMsMTIgQEAKICAgd2FzbTo6V2FzbUluaXRFeHByIEluaXRFeHByOwogfTsKIAorc3RydWN0IEV2ZW50IHsKKyAgdWludDMyX3QgSW5kZXg7CisgIHVpbnQzMl90IEF0dHJpYnV0ZTsKKyAgdWludDMyX3QgU2lnSW5kZXg7Cit9OworCiBzdHJ1Y3QgSW1wb3J0IHsKICAgU3RyaW5nUmVmIE1vZHVsZTsKICAgU3RyaW5nUmVmIEZpZWxkOwpAQCAtODMsNiArODgsNyBAQAogICAgIEdsb2JhbCBHbG9iYWxJbXBvcnQ7CiAgICAgVGFibGUgVGFibGVJbXBvcnQ7CiAgICAgTGltaXRzIE1lbW9yeTsKKyAgICBFdmVudCBFdmVudEltcG9ydDsKICAgfTsKIH07CiAKQEAgLTExNiw2ICsxMjIsMTEgQEAKICAgU3RyaW5nUmVmIE5hbWU7CiB9OwogCitzdHJ1Y3QgUHJvZHVjZXJFbnRyeSB7CisgIHN0ZDo6c3RyaW5nIE5hbWU7CisgIHN0ZDo6c3RyaW5nIFZlcnNpb247Cit9OworCiBzdHJ1Y3QgU2VnbWVudEluZm8gewogICB1aW50MzJfdCBJbmRleDsKICAgU3RyaW5nUmVmIE5hbWU7CkBAIC0xNzYsNiArMTg3LDIxIEBACiAgIHlhbWw6OkJpbmFyeVJlZiBQYXlsb2FkOwogfTsKIAorc3RydWN0IER5bGlua1NlY3Rpb24gOiBDdXN0b21TZWN0aW9uIHsKKyAgRHlsaW5rU2VjdGlvbigpIDogQ3VzdG9tU2VjdGlvbigiZHlsaW5rIikge30KKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFNlY3Rpb24gKlMpIHsKKyAgICBhdXRvIEMgPSBkeW5fY2FzdDxDdXN0b21TZWN0aW9uPihTKTsKKyAgICByZXR1cm4gQyAmJiBDLT5OYW1lID09ICJkeWxpbmsiOworICB9CisKKyAgdWludDMyX3QgTWVtb3J5U2l6ZTsKKyAgdWludDMyX3QgTWVtb3J5QWxpZ25tZW50OworICB1aW50MzJfdCBUYWJsZVNpemU7CisgIHVpbnQzMl90IFRhYmxlQWxpZ25tZW50OworICBzdGQ6OnZlY3RvcjxTdHJpbmdSZWY+IE5lZWRlZDsKK307CisKIHN0cnVjdCBOYW1lU2VjdGlvbiA6IEN1c3RvbVNlY3Rpb24gewogICBOYW1lU2VjdGlvbigpIDogQ3VzdG9tU2VjdGlvbigibmFtZSIpIHt9CiAKQEAgLTIwMiw2ICsyMjgsMTkgQEAKICAgc3RkOjp2ZWN0b3I8Q29tZGF0PiBDb21kYXRzOwogfTsKIAorc3RydWN0IFByb2R1Y2Vyc1NlY3Rpb24gOiBDdXN0b21TZWN0aW9uIHsKKyAgUHJvZHVjZXJzU2VjdGlvbigpIDogQ3VzdG9tU2VjdGlvbigicHJvZHVjZXJzIikge30KKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFNlY3Rpb24gKlMpIHsKKyAgICBhdXRvIEMgPSBkeW5fY2FzdDxDdXN0b21TZWN0aW9uPihTKTsKKyAgICByZXR1cm4gQyAmJiBDLT5OYW1lID09ICJwcm9kdWNlcnMiOworICB9CisKKyAgc3RkOjp2ZWN0b3I8UHJvZHVjZXJFbnRyeT4gTGFuZ3VhZ2VzOworICBzdGQ6OnZlY3RvcjxQcm9kdWNlckVudHJ5PiBUb29sczsKKyAgc3RkOjp2ZWN0b3I8UHJvZHVjZXJFbnRyeT4gU0RLczsKK307CisKIHN0cnVjdCBUeXBlU2VjdGlvbiA6IFNlY3Rpb24gewogICBUeXBlU2VjdGlvbigpIDogU2VjdGlvbih3YXNtOjpXQVNNX1NFQ19UWVBFKSB7fQogCkBAIC0yNjIsNiArMzAxLDE2IEBACiAgIHN0ZDo6dmVjdG9yPEdsb2JhbD4gR2xvYmFsczsKIH07CiAKK3N0cnVjdCBFdmVudFNlY3Rpb24gOiBTZWN0aW9uIHsKKyAgRXZlbnRTZWN0aW9uKCkgOiBTZWN0aW9uKHdhc206OldBU01fU0VDX0VWRU5UKSB7fQorCisgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgU2VjdGlvbiAqUykgeworICAgIHJldHVybiBTLT5UeXBlID09IHdhc206OldBU01fU0VDX0VWRU5UOworICB9CisKKyAgc3RkOjp2ZWN0b3I8RXZlbnQ+IEV2ZW50czsKK307CisKIHN0cnVjdCBFeHBvcnRTZWN0aW9uIDogU2VjdGlvbiB7CiAgIEV4cG9ydFNlY3Rpb24oKSA6IFNlY3Rpb24od2FzbTo6V0FTTV9TRUNfRVhQT1JUKSB7fQogCkBAIC0zMzQsMTEgKzM4MywxMyBAQAogTExWTV9ZQU1MX0lTX1NFUVVFTkNFX1ZFQ1RPUihsbHZtOjpXYXNtWUFNTDo6TG9jYWxEZWNsKQogTExWTV9ZQU1MX0lTX1NFUVVFTkNFX1ZFQ1RPUihsbHZtOjpXYXNtWUFNTDo6UmVsb2NhdGlvbikKIExMVk1fWUFNTF9JU19TRVFVRU5DRV9WRUNUT1IobGx2bTo6V2FzbVlBTUw6Ok5hbWVFbnRyeSkKK0xMVk1fWUFNTF9JU19TRVFVRU5DRV9WRUNUT1IobGx2bTo6V2FzbVlBTUw6OlByb2R1Y2VyRW50cnkpCiBMTFZNX1lBTUxfSVNfU0VRVUVOQ0VfVkVDVE9SKGxsdm06Oldhc21ZQU1MOjpTZWdtZW50SW5mbykKIExMVk1fWUFNTF9JU19TRVFVRU5DRV9WRUNUT1IobGx2bTo6V2FzbVlBTUw6OlN5bWJvbEluZm8pCiBMTFZNX1lBTUxfSVNfU0VRVUVOQ0VfVkVDVE9SKGxsdm06Oldhc21ZQU1MOjpJbml0RnVuY3Rpb24pCiBMTFZNX1lBTUxfSVNfU0VRVUVOQ0VfVkVDVE9SKGxsdm06Oldhc21ZQU1MOjpDb21kYXRFbnRyeSkKIExMVk1fWUFNTF9JU19TRVFVRU5DRV9WRUNUT1IobGx2bTo6V2FzbVlBTUw6OkNvbWRhdCkKK0xMVk1fWUFNTF9JU19TRVFVRU5DRV9WRUNUT1IobGx2bTo6V2FzbVlBTUw6OkV2ZW50KQogCiBuYW1lc3BhY2UgbGx2bSB7CiBuYW1lc3BhY2UgeWFtbCB7CkBAIC00MTEsNiArNDYyLDEwIEBACiAgIHN0YXRpYyB2b2lkIG1hcHBpbmcoSU8gJklPLCBXYXNtWUFNTDo6TmFtZUVudHJ5ICZOYW1lRW50cnkpOwogfTsKIAordGVtcGxhdGUgPD4gc3RydWN0IE1hcHBpbmdUcmFpdHM8V2FzbVlBTUw6OlByb2R1Y2VyRW50cnk+IHsKKyAgc3RhdGljIHZvaWQgbWFwcGluZyhJTyAmSU8sIFdhc21ZQU1MOjpQcm9kdWNlckVudHJ5ICZQcm9kdWNlckVudHJ5KTsKK307CisKIHRlbXBsYXRlIDw+IHN0cnVjdCBNYXBwaW5nVHJhaXRzPFdhc21ZQU1MOjpTZWdtZW50SW5mbz4gewogICBzdGF0aWMgdm9pZCBtYXBwaW5nKElPICZJTywgV2FzbVlBTUw6OlNlZ21lbnRJbmZvICZTZWdtZW50SW5mbyk7CiB9OwpAQCAtNDcxLDYgKzUyNiwxMCBAQAogICBzdGF0aWMgdm9pZCBlbnVtZXJhdGlvbihJTyAmSU8sIFdhc21ZQU1MOjpSZWxvY1R5cGUgJktpbmQpOwogfTsKIAordGVtcGxhdGUgPD4gc3RydWN0IE1hcHBpbmdUcmFpdHM8V2FzbVlBTUw6OkV2ZW50PiB7CisgIHN0YXRpYyB2b2lkIG1hcHBpbmcoSU8gJklPLCBXYXNtWUFNTDo6RXZlbnQgJkV2ZW50KTsKK307CisKIH0gLy8gZW5kIG5hbWVzcGFjZSB5YW1sCiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvWUFNTC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PYmplY3RZQU1ML1lBTUwuaAppbmRleCAxNjNjZDhkLi5hMTRiZmJjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09iamVjdFlBTUwvWUFNTC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT2JqZWN0WUFNTC9ZQU1MLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gWUFNTC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09wdGlvbi9BcmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT3B0aW9uL0FyZy5oCmluZGV4IGQwMDg2YmIuLmQzNjIzYTAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT3B0aW9uL0FyZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT3B0aW9uL0FyZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEFyZy5oIC0gUGFyc2VkIEFyZ3VtZW50IENsYXNzZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PcHRpb24vQXJnTGlzdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PcHRpb24vQXJnTGlzdC5oCmluZGV4IDY4N2M4Y2IuLmEwY2QyYjggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT3B0aW9uL0FyZ0xpc3QuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09wdGlvbi9BcmdMaXN0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQXJnTGlzdC5oIC0gQXJndW1lbnQgTGlzdCBNYW5hZ2VtZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09wdGlvbi9PcHRQYXJzZXIudGQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09wdGlvbi9PcHRQYXJzZXIudGQKaW5kZXggOWMzNzM3NC4uYTY4ZjE3YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PcHRpb24vT3B0UGFyc2VyLnRkCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT3B0aW9uL09wdFBhcnNlci50ZApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIE9wdFBhcnNlci50ZCAtIENvbW1vbiBPcHRpb24gUGFyc2luZyBJbnRlcmZhY2VzIC0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PcHRpb24vT3B0U3BlY2lmaWVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09wdGlvbi9PcHRTcGVjaWZpZXIuaAppbmRleCA4NGMzY2Y4Li43YTVmY2ZiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09wdGlvbi9PcHRTcGVjaWZpZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09wdGlvbi9PcHRTcGVjaWZpZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBPcHRTcGVjaWZpZXIuaCAtIE9wdGlvbiBTcGVjaWZpZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT3B0aW9uL09wdFRhYmxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL09wdGlvbi9PcHRUYWJsZS5oCmluZGV4IGZkYjA1ZDguLjVkYjMwNDMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT3B0aW9uL09wdFRhYmxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PcHRpb24vT3B0VGFibGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBPcHRUYWJsZS5oIC0gT3B0aW9uIFRhYmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vT3B0aW9uL09wdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PcHRpb24vT3B0aW9uLmgKaW5kZXggYjA5ZjYwNC4uYzExNDg3ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PcHRpb24vT3B0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9PcHRpb24vT3B0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gT3B0aW9uLmggLSBBYnN0cmFjdCBEcml2ZXIgT3B0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Bhc3MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUGFzcy5oCmluZGV4IDU5MzVhMDguLjMyOWY3ZWEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUGFzcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUGFzcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vUGFzcy5oIC0gQmFzZSBjbGFzcyBmb3IgUGFzc2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Bhc3NBbmFseXNpc1N1cHBvcnQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUGFzc0FuYWx5c2lzU3VwcG9ydC5oCmluZGV4IGEwNzVlYjUuLjEyMjg1MzQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUGFzc0FuYWx5c2lzU3VwcG9ydC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUGFzc0FuYWx5c2lzU3VwcG9ydC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vUGFzc0FuYWx5c2lzU3VwcG9ydC5oIC0gQW5hbHlzaXMgUGFzcyBTdXBwb3J0IGNvZGUgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Bhc3NJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Bhc3NJbmZvLmgKaW5kZXggMmYxYWI0ZC4uNjg2ZmMwNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9QYXNzSW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUGFzc0luZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1Bhc3NJbmZvLmggLSBQYXNzIEluZm8gY2xhc3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9QYXNzUmVnaXN0cnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUGFzc1JlZ2lzdHJ5LmgKaW5kZXggNTc0NjIxMy4uYjlhMDE1NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9QYXNzUmVnaXN0cnkuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Bhc3NSZWdpc3RyeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vUGFzc1JlZ2lzdHJ5LmggLSBQYXNzIEluZm9ybWF0aW9uIFJlZ2lzdHJ5IC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Bhc3NTdXBwb3J0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Bhc3NTdXBwb3J0LmgKaW5kZXggMWJmMjNkYy4uYWI5MDIxNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9QYXNzU3VwcG9ydC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUGFzc1N1cHBvcnQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1Bhc3NTdXBwb3J0LmggLSBQYXNzIFN1cHBvcnQgY29kZSAtLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9QYXNzZXMvUGFzc0J1aWxkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUGFzc2VzL1Bhc3NCdWlsZGVyLmgKaW5kZXggMDJkM2RjMy4uOWM5MTVjNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9QYXNzZXMvUGFzc0J1aWxkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Bhc3Nlcy9QYXNzQnVpbGRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBhcnNpbmcsIHNlbGVjdGlvbiwgYW5kIGNvbnN0cnVjdGlvbiBvZiBwYXNzIHBpcGVsaW5lcyAtLSotIEMrKyAtKi0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpAQCAtMTksNiArMTgsNyBAQAogI2luY2x1ZGUgImxsdm0vQURUL09wdGlvbmFsLmgiCiAjaW5jbHVkZSAibGx2bS9BbmFseXNpcy9DR1NDQ1Bhc3NNYW5hZ2VyLmgiCiAjaW5jbHVkZSAibGx2bS9JUi9QYXNzTWFuYWdlci5oIgorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9FcnJvci5oIgogI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJsbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BQYXNzTWFuYWdlci5oIgogI2luY2x1ZGUgPHZlY3Rvcj4KQEAgLTMyLDEwICszMiwxMyBAQAogLy8vIEEgc3RydWN0IGNhcHR1cmluZyBQR08gdHVuYWJsZXMuCiBzdHJ1Y3QgUEdPT3B0aW9ucyB7CiAgIFBHT09wdGlvbnMoc3RkOjpzdHJpbmcgUHJvZmlsZUdlbkZpbGUgPSAiIiwgc3RkOjpzdHJpbmcgUHJvZmlsZVVzZUZpbGUgPSAiIiwKLSAgICAgICAgICAgICBzdGQ6OnN0cmluZyBTYW1wbGVQcm9maWxlRmlsZSA9ICIiLCBib29sIFJ1blByb2ZpbGVHZW4gPSBmYWxzZSwKLSAgICAgICAgICAgICBib29sIFNhbXBsZVBHT1N1cHBvcnQgPSBmYWxzZSkKKyAgICAgICAgICAgICBzdGQ6OnN0cmluZyBTYW1wbGVQcm9maWxlRmlsZSA9ICIiLAorICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIFByb2ZpbGVSZW1hcHBpbmdGaWxlID0gIiIsCisgICAgICAgICAgICAgYm9vbCBSdW5Qcm9maWxlR2VuID0gZmFsc2UsIGJvb2wgU2FtcGxlUEdPU3VwcG9ydCA9IGZhbHNlKQogICAgICAgOiBQcm9maWxlR2VuRmlsZShQcm9maWxlR2VuRmlsZSksIFByb2ZpbGVVc2VGaWxlKFByb2ZpbGVVc2VGaWxlKSwKLSAgICAgICAgU2FtcGxlUHJvZmlsZUZpbGUoU2FtcGxlUHJvZmlsZUZpbGUpLCBSdW5Qcm9maWxlR2VuKFJ1blByb2ZpbGVHZW4pLAorICAgICAgICBTYW1wbGVQcm9maWxlRmlsZShTYW1wbGVQcm9maWxlRmlsZSksCisgICAgICAgIFByb2ZpbGVSZW1hcHBpbmdGaWxlKFByb2ZpbGVSZW1hcHBpbmdGaWxlKSwKKyAgICAgICAgUnVuUHJvZmlsZUdlbihSdW5Qcm9maWxlR2VuKSwKICAgICAgICAgU2FtcGxlUEdPU3VwcG9ydChTYW1wbGVQR09TdXBwb3J0IHx8ICFTYW1wbGVQcm9maWxlRmlsZS5lbXB0eSgpKSB7CiAgICAgYXNzZXJ0KChSdW5Qcm9maWxlR2VuIHx8CiAgICAgICAgICAgICAhU2FtcGxlUHJvZmlsZUZpbGUuZW1wdHkoKSB8fApAQCAtNDUsMTMgKzQ4LDE0IEBACiAgIHN0ZDo6c3RyaW5nIFByb2ZpbGVHZW5GaWxlOwogICBzdGQ6OnN0cmluZyBQcm9maWxlVXNlRmlsZTsKICAgc3RkOjpzdHJpbmcgU2FtcGxlUHJvZmlsZUZpbGU7CisgIHN0ZDo6c3RyaW5nIFByb2ZpbGVSZW1hcHBpbmdGaWxlOwogICBib29sIFJ1blByb2ZpbGVHZW47CiAgIGJvb2wgU2FtcGxlUEdPU3VwcG9ydDsKIH07CiAKIC8vLyBUaGlzIGNsYXNzIHByb3ZpZGVzIGFjY2VzcyB0byBidWlsZGluZyBMTFZNJ3MgcGFzc2VzLgogLy8vCi0vLy8gSXQncyBtZW1iZXJzIHByb3ZpZGUgdGhlIGJhc2VsaW5lIHN0YXRlIGF2YWlsYWJsZSB0byBwYXNzZXMgZHVyaW5nIHRoZWlyCisvLy8gSXRzIG1lbWJlcnMgcHJvdmlkZSB0aGUgYmFzZWxpbmUgc3RhdGUgYXZhaWxhYmxlIHRvIHBhc3NlcyBkdXJpbmcgdGhlaXIKIC8vLyBjb25zdHJ1Y3Rpb24uIFRoZSBcYyBQYXNzUmVnaXN0cnkuZGVmIGZpbGUgc3BlY2lmaWVzIGhvdyB0byBjb25zdHJ1Y3QgYWxsCiAvLy8gb2YgdGhlIGJ1aWx0LWluIHBhc3NlcywgYW5kIHRob3NlIG1heSByZWZlcmVuY2UgdGhlc2UgbWVtYmVycyBkdXJpbmcKIC8vLyBjb25zdHJ1Y3Rpb24uCkBAIC0zODAsOCArMzg0LDkgQEAKICAgLy8vIElmIHRoZSBzZXF1ZW5jZSBvZiBwYXNzZXMgYXJlbid0IGFsbCB0aGUgZXhhY3Qgc2FtZSBraW5kIG9mIHBhc3MsIGl0IHdpbGwKICAgLy8vIGJlIGFuIGVycm9yLiBZb3UgY2Fubm90IG1peCBkaWZmZXJlbnQgbGV2ZWxzIGltcGxpY2l0bHksIHlvdSBtdXN0CiAgIC8vLyBleHBsaWNpdGx5IGZvcm0gYSBwYXNzIG1hbmFnZXIgaW4gd2hpY2ggdG8gbmVzdCBwYXNzZXMuCi0gIGJvb2wgcGFyc2VQYXNzUGlwZWxpbmUoTW9kdWxlUGFzc01hbmFnZXIgJk1QTSwgU3RyaW5nUmVmIFBpcGVsaW5lVGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFZlcmlmeUVhY2hQYXNzID0gdHJ1ZSwgYm9vbCBEZWJ1Z0xvZ2dpbmcgPSBmYWxzZSk7CisgIEVycm9yIHBhcnNlUGFzc1BpcGVsaW5lKE1vZHVsZVBhc3NNYW5hZ2VyICZNUE0sIFN0cmluZ1JlZiBQaXBlbGluZVRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVmVyaWZ5RWFjaFBhc3MgPSB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIERlYnVnTG9nZ2luZyA9IGZhbHNlKTsKIAogICAvLy8ge3tAIFBhcnNlIGEgdGV4dHVhbCBwYXNzIHBpcGVsaW5lIGRlc2NyaXB0aW9uIGludG8gYSBzcGVjaWZpYyBQYXNzTWFuYWdlcgogICAvLy8KQEAgLTM5MCwxMiArMzk1LDE1IEBACiAgIC8vLyB0aGlzIGlzIHRoZSB2YWxpZCBwaXBlbGluZSB0ZXh0OgogICAvLy8KICAgLy8vICAgZnVuY3Rpb24obHBhc3MpCi0gIGJvb2wgcGFyc2VQYXNzUGlwZWxpbmUoQ0dTQ0NQYXNzTWFuYWdlciAmQ0dQTSwgU3RyaW5nUmVmIFBpcGVsaW5lVGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFZlcmlmeUVhY2hQYXNzID0gdHJ1ZSwgYm9vbCBEZWJ1Z0xvZ2dpbmcgPSBmYWxzZSk7Ci0gIGJvb2wgcGFyc2VQYXNzUGlwZWxpbmUoRnVuY3Rpb25QYXNzTWFuYWdlciAmRlBNLCBTdHJpbmdSZWYgUGlwZWxpbmVUZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVmVyaWZ5RWFjaFBhc3MgPSB0cnVlLCBib29sIERlYnVnTG9nZ2luZyA9IGZhbHNlKTsKLSAgYm9vbCBwYXJzZVBhc3NQaXBlbGluZShMb29wUGFzc01hbmFnZXIgJkxQTSwgU3RyaW5nUmVmIFBpcGVsaW5lVGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFZlcmlmeUVhY2hQYXNzID0gdHJ1ZSwgYm9vbCBEZWJ1Z0xvZ2dpbmcgPSBmYWxzZSk7CisgIEVycm9yIHBhcnNlUGFzc1BpcGVsaW5lKENHU0NDUGFzc01hbmFnZXIgJkNHUE0sIFN0cmluZ1JlZiBQaXBlbGluZVRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVmVyaWZ5RWFjaFBhc3MgPSB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIERlYnVnTG9nZ2luZyA9IGZhbHNlKTsKKyAgRXJyb3IgcGFyc2VQYXNzUGlwZWxpbmUoRnVuY3Rpb25QYXNzTWFuYWdlciAmRlBNLCBTdHJpbmdSZWYgUGlwZWxpbmVUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFZlcmlmeUVhY2hQYXNzID0gdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBEZWJ1Z0xvZ2dpbmcgPSBmYWxzZSk7CisgIEVycm9yIHBhcnNlUGFzc1BpcGVsaW5lKExvb3BQYXNzTWFuYWdlciAmTFBNLCBTdHJpbmdSZWYgUGlwZWxpbmVUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFZlcmlmeUVhY2hQYXNzID0gdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBEZWJ1Z0xvZ2dpbmcgPSBmYWxzZSk7CiAgIC8vLyBAfX0KIAogICAvLy8gUGFyc2UgYSB0ZXh0dWFsIGFsaWFzIGFuYWx5c2lzIHBpcGVsaW5lIGludG8gdGhlIHByb3ZpZGVkIEFBIG1hbmFnZXIuCkBAIC00MTMsNyArNDIxLDcgQEAKICAgLy8vIFJldHVybnMgZmFsc2UgaWYgdGhlIHRleHQgY2Fubm90IGJlIHBhcnNlZCBjbGVhbmx5LiBUaGUgc3BlY2lmaWMgc3RhdGUgb2YKICAgLy8vIHRoZSBccCBBQSBtYW5hZ2VyIGlzIHVuc3BlY2lmaWVkIGlmIHN1Y2ggYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQgYW5kIHRoaXMKICAgLy8vIHJldHVybnMgZmFsc2UuCi0gIGJvb2wgcGFyc2VBQVBpcGVsaW5lKEFBTWFuYWdlciAmQUEsIFN0cmluZ1JlZiBQaXBlbGluZVRleHQpOworICBFcnJvciBwYXJzZUFBUGlwZWxpbmUoQUFNYW5hZ2VyICZBQSwgU3RyaW5nUmVmIFBpcGVsaW5lVGV4dCk7CiAKICAgLy8vIFJlZ2lzdGVyIGEgY2FsbGJhY2sgZm9yIGEgZGVmYXVsdCBvcHRpbWl6ZXIgcGlwZWxpbmUgZXh0ZW5zaW9uCiAgIC8vLyBwb2ludApAQCAtNDkyLDYgKzUwMCwxOCBAQAogICAgIFBpcGVsaW5lU3RhcnRFUENhbGxiYWNrcy5wdXNoX2JhY2soQyk7CiAgIH0KIAorICAvLy8gUmVnaXN0ZXIgYSBjYWxsYmFjayBmb3IgYSBkZWZhdWx0IG9wdGltaXplciBwaXBlbGluZSBleHRlbnNpb24gcG9pbnQKKyAgLy8vCisgIC8vLyBUaGlzIGV4dGVuc2lvbiBwb2ludCBhbGxvd3MgYWRkaW5nIG9wdGltaXphdGlvbnMgYXQgdGhlIHZlcnkgZW5kIG9mIHRoZQorICAvLy8gZnVuY3Rpb24gb3B0aW1pemF0aW9uIHBpcGVsaW5lLiBBIGtleSBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBhbmQgdGhlCisgIC8vLyBsZWdhY3kgUGFzc01hbmFnZXIncyBPcHRpbWl6ZXJMYXN0IGNhbGxiYWNrIGlzIHRoYXQgdGhpcyBleHRlbnNpb24gcG9pbnQKKyAgLy8vIGlzIG5vdCB0cmlnZ2VyZWQgYXQgTzAuIEV4dGVuc2lvbnMgdG8gdGhlIE8wIHBpcGVsaW5lIHNob3VsZCBhcHBlbmQgdGhlaXIKKyAgLy8vIHBhc3NlcyB0byB0aGUgZW5kIG9mIHRoZSBvdmVyYWxsIHBpcGVsaW5lLgorICB2b2lkIHJlZ2lzdGVyT3B0aW1pemVyTGFzdEVQQ2FsbGJhY2soCisgICAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoRnVuY3Rpb25QYXNzTWFuYWdlciAmLCBPcHRpbWl6YXRpb25MZXZlbCk+ICZDKSB7CisgICAgT3B0aW1pemVyTGFzdEVQQ2FsbGJhY2tzLnB1c2hfYmFjayhDKTsKKyAgfQorCiAgIC8vLyBSZWdpc3RlciBhIGNhbGxiYWNrIGZvciBwYXJzaW5nIGFuIEFsaWFzQW5hbHlzaXMgTmFtZSB0byBwb3B1bGF0ZQogICAvLy8gdGhlIGdpdmVuIEFBTWFuYWdlciBccCBBQQogICB2b2lkIHJlZ2lzdGVyUGFyc2VBQUNhbGxiYWNrKApAQCAtNTYxLDMzICs1ODEsMzQgQEAKICAgc3RhdGljIE9wdGlvbmFsPHN0ZDo6dmVjdG9yPFBpcGVsaW5lRWxlbWVudD4+CiAgIHBhcnNlUGlwZWxpbmVUZXh0KFN0cmluZ1JlZiBUZXh0KTsKIAotICBib29sIHBhcnNlTW9kdWxlUGFzcyhNb2R1bGVQYXNzTWFuYWdlciAmTVBNLCBjb25zdCBQaXBlbGluZUVsZW1lbnQgJkUsCisgIEVycm9yIHBhcnNlTW9kdWxlUGFzcyhNb2R1bGVQYXNzTWFuYWdlciAmTVBNLCBjb25zdCBQaXBlbGluZUVsZW1lbnQgJkUsCisgICAgICAgICAgICAgICAgICAgICAgICBib29sIFZlcmlmeUVhY2hQYXNzLCBib29sIERlYnVnTG9nZ2luZyk7CisgIEVycm9yIHBhcnNlQ0dTQ0NQYXNzKENHU0NDUGFzc01hbmFnZXIgJkNHUE0sIGNvbnN0IFBpcGVsaW5lRWxlbWVudCAmRSwKICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBWZXJpZnlFYWNoUGFzcywgYm9vbCBEZWJ1Z0xvZ2dpbmcpOwotICBib29sIHBhcnNlQ0dTQ0NQYXNzKENHU0NDUGFzc01hbmFnZXIgJkNHUE0sIGNvbnN0IFBpcGVsaW5lRWxlbWVudCAmRSwKKyAgRXJyb3IgcGFyc2VGdW5jdGlvblBhc3MoRnVuY3Rpb25QYXNzTWFuYWdlciAmRlBNLCBjb25zdCBQaXBlbGluZUVsZW1lbnQgJkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVmVyaWZ5RWFjaFBhc3MsIGJvb2wgRGVidWdMb2dnaW5nKTsKKyAgRXJyb3IgcGFyc2VMb29wUGFzcyhMb29wUGFzc01hbmFnZXIgJkxQTSwgY29uc3QgUGlwZWxpbmVFbGVtZW50ICZFLAogICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVmVyaWZ5RWFjaFBhc3MsIGJvb2wgRGVidWdMb2dnaW5nKTsKLSAgYm9vbCBwYXJzZUZ1bmN0aW9uUGFzcyhGdW5jdGlvblBhc3NNYW5hZ2VyICZGUE0sIGNvbnN0IFBpcGVsaW5lRWxlbWVudCAmRSwKLSAgICAgICAgICAgICAgICAgICAgIGJvb2wgVmVyaWZ5RWFjaFBhc3MsIGJvb2wgRGVidWdMb2dnaW5nKTsKLSAgYm9vbCBwYXJzZUxvb3BQYXNzKExvb3BQYXNzTWFuYWdlciAmTFBNLCBjb25zdCBQaXBlbGluZUVsZW1lbnQgJkUsCi0gICAgICAgICAgICAgICAgICAgICBib29sIFZlcmlmeUVhY2hQYXNzLCBib29sIERlYnVnTG9nZ2luZyk7CiAgIGJvb2wgcGFyc2VBQVBhc3NOYW1lKEFBTWFuYWdlciAmQUEsIFN0cmluZ1JlZiBOYW1lKTsKIAotICBib29sIHBhcnNlTG9vcFBhc3NQaXBlbGluZShMb29wUGFzc01hbmFnZXIgJkxQTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8UGlwZWxpbmVFbGVtZW50PiBQaXBlbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBWZXJpZnlFYWNoUGFzcywgYm9vbCBEZWJ1Z0xvZ2dpbmcpOwotICBib29sIHBhcnNlRnVuY3Rpb25QYXNzUGlwZWxpbmUoRnVuY3Rpb25QYXNzTWFuYWdlciAmRlBNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8UGlwZWxpbmVFbGVtZW50PiBQaXBlbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVmVyaWZ5RWFjaFBhc3MsIGJvb2wgRGVidWdMb2dnaW5nKTsKLSAgYm9vbCBwYXJzZUNHU0NDUGFzc1BpcGVsaW5lKENHU0NDUGFzc01hbmFnZXIgJkNHUE0sCisgIEVycm9yIHBhcnNlTG9vcFBhc3NQaXBlbGluZShMb29wUGFzc01hbmFnZXIgJkxQTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFBpcGVsaW5lRWxlbWVudD4gUGlwZWxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFZlcmlmeUVhY2hQYXNzLCBib29sIERlYnVnTG9nZ2luZyk7Ci0gIGJvb2wgcGFyc2VNb2R1bGVQYXNzUGlwZWxpbmUoTW9kdWxlUGFzc01hbmFnZXIgJk1QTSwKKyAgRXJyb3IgcGFyc2VGdW5jdGlvblBhc3NQaXBlbGluZShGdW5jdGlvblBhc3NNYW5hZ2VyICZGUE0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8UGlwZWxpbmVFbGVtZW50PiBQaXBlbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFZlcmlmeUVhY2hQYXNzLCBib29sIERlYnVnTG9nZ2luZyk7CisgIEVycm9yIHBhcnNlQ0dTQ0NQYXNzUGlwZWxpbmUoQ0dTQ0NQYXNzTWFuYWdlciAmQ0dQTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxQaXBlbGluZUVsZW1lbnQ+IFBpcGVsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVmVyaWZ5RWFjaFBhc3MsIGJvb2wgRGVidWdMb2dnaW5nKTsKKyAgRXJyb3IgcGFyc2VNb2R1bGVQYXNzUGlwZWxpbmUoTW9kdWxlUGFzc01hbmFnZXIgJk1QTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8UGlwZWxpbmVFbGVtZW50PiBQaXBlbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBWZXJpZnlFYWNoUGFzcywgYm9vbCBEZWJ1Z0xvZ2dpbmcpOwogCiAgIHZvaWQgYWRkUEdPSW5zdHJQYXNzZXMoTW9kdWxlUGFzc01hbmFnZXIgJk1QTSwgYm9vbCBEZWJ1Z0xvZ2dpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW1pemF0aW9uTGV2ZWwgTGV2ZWwsIGJvb2wgUnVuUHJvZmlsZUdlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBQcm9maWxlR2VuRmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBQcm9maWxlVXNlRmlsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgUHJvZmlsZVVzZUZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgUHJvZmlsZVJlbWFwcGluZ0ZpbGUpOwogCiAgIHZvaWQgaW52b2tlUGVlcGhvbGVFUENhbGxiYWNrcyhGdW5jdGlvblBhc3NNYW5hZ2VyICYsIE9wdGltaXphdGlvbkxldmVsKTsKIApAQCAtNjA0LDYgKzYyNSw4IEBACiAgICAgICBDR1NDQ09wdGltaXplckxhdGVFUENhbGxiYWNrczsKICAgU21hbGxWZWN0b3I8c3RkOjpmdW5jdGlvbjx2b2lkKEZ1bmN0aW9uUGFzc01hbmFnZXIgJiwgT3B0aW1pemF0aW9uTGV2ZWwpPiwgMj4KICAgICAgIFZlY3Rvcml6ZXJTdGFydEVQQ2FsbGJhY2tzOworICBTbWFsbFZlY3RvcjxzdGQ6OmZ1bmN0aW9uPHZvaWQoRnVuY3Rpb25QYXNzTWFuYWdlciAmLCBPcHRpbWl6YXRpb25MZXZlbCk+LCAyPgorICAgICAgT3B0aW1pemVyTGFzdEVQQ2FsbGJhY2tzOwogICAvLyBNb2R1bGUgY2FsbGJhY2tzCiAgIFNtYWxsVmVjdG9yPHN0ZDo6ZnVuY3Rpb248dm9pZChNb2R1bGVQYXNzTWFuYWdlciAmKT4sIDI+CiAgICAgICBQaXBlbGluZVN0YXJ0RVBDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Bhc3Nlcy9QYXNzUGx1Z2luLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Bhc3Nlcy9QYXNzUGx1Z2luLmgKaW5kZXggYWY4ZjExYS4uMDEzYjdhOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9QYXNzZXMvUGFzc1BsdWdpbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUGFzc2VzL1Bhc3NQbHVnaW4uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1Bhc3Nlcy9QYXNzUGx1Z2luLmggLSBQdWJsaWMgUGx1Z2luIEFQSSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9QYXNzZXMvU3RhbmRhcmRJbnN0cnVtZW50YXRpb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Bhc3Nlcy9TdGFuZGFyZEluc3RydW1lbnRhdGlvbnMuaAppbmRleCBiNmE3M2IwLi41NjcyNTQzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Bhc3Nlcy9TdGFuZGFyZEluc3RydW1lbnRhdGlvbnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Bhc3Nlcy9TdGFuZGFyZEluc3RydW1lbnRhdGlvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTdGFuZGFyZEluc3RydW1lbnRhdGlvbnMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKQEAgLTE2LDE0ICsxNSw0OCBAQAogI2lmbmRlZiBMTFZNX1BBU1NFU19TVEFOREFSRElOU1RSVU1FTlRBVElPTlNfSAogI2RlZmluZSBMTFZNX1BBU1NFU19TVEFOREFSRElOU1RSVU1FTlRBVElPTlNfSAogCisjaW5jbHVkZSAibGx2bS9BRFQvU21hbGxWZWN0b3IuaCIKICNpbmNsdWRlICJsbHZtL0lSL1Bhc3NJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJsbHZtL0lSL1Bhc3NUaW1pbmdJbmZvLmgiCiAKKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dXRpbGl0eT4KKwogbmFtZXNwYWNlIGxsdm0gewogCitjbGFzcyBNb2R1bGU7CisKKy8vLyBJbnN0cnVtZW50YXRpb24gdG8gcHJpbnQgSVIgYmVmb3JlL2FmdGVyIHBhc3Nlcy4KKy8vLworLy8vIE5lZWRzIHN0YXRlIHRvIGJlIGFibGUgdG8gcHJpbnQgbW9kdWxlIGFmdGVyIHBhc3MgdGhhdCBpbnZhbGlkYXRlcyBJUiB1bml0CisvLy8gKHR5cGljYWxseSBMb29wIG9yIFNDQykuCitjbGFzcyBQcmludElSSW5zdHJ1bWVudGF0aW9uIHsKK3B1YmxpYzoKKyAgUHJpbnRJUkluc3RydW1lbnRhdGlvbigpID0gZGVmYXVsdDsKKyAgflByaW50SVJJbnN0cnVtZW50YXRpb24oKTsKKworICB2b2lkIHJlZ2lzdGVyQ2FsbGJhY2tzKFBhc3NJbnN0cnVtZW50YXRpb25DYWxsYmFja3MgJlBJQyk7CisKK3ByaXZhdGU6CisgIGJvb2wgcHJpbnRCZWZvcmVQYXNzKFN0cmluZ1JlZiBQYXNzSUQsIEFueSBJUik7CisgIHZvaWQgcHJpbnRBZnRlclBhc3MoU3RyaW5nUmVmIFBhc3NJRCwgQW55IElSKTsKKyAgdm9pZCBwcmludEFmdGVyUGFzc0ludmFsaWRhdGVkKFN0cmluZ1JlZiBQYXNzSUQpOworCisgIHVzaW5nIFByaW50TW9kdWxlRGVzYyA9IHN0ZDo6dHVwbGU8Y29uc3QgTW9kdWxlICosIHN0ZDo6c3RyaW5nLCBTdHJpbmdSZWY+OworCisgIHZvaWQgcHVzaE1vZHVsZURlc2MoU3RyaW5nUmVmIFBhc3NJRCwgQW55IElSKTsKKyAgUHJpbnRNb2R1bGVEZXNjIHBvcE1vZHVsZURlc2MoU3RyaW5nUmVmIFBhc3NJRCk7CisKKyAgLy8vIFN0YWNrIG9mIE1vZHVsZSBkZXNjcmlwdGlvbiwgZW5vdWdoIHRvIHByaW50IHRoZSBtb2R1bGUgYWZ0ZXIgYSBnaXZlbgorICAvLy8gcGFzcy4KKyAgU21hbGxWZWN0b3I8UHJpbnRNb2R1bGVEZXNjLCAyPiBNb2R1bGVEZXNjU3RhY2s7CisgIGJvb2wgU3RvcmVNb2R1bGVEZXNjID0gZmFsc2U7Cit9OworCiAvLy8gVGhpcyBjbGFzcyBwcm92aWRlcyBhbiBpbnRlcmZhY2UgdG8gcmVnaXN0ZXIgYWxsIHRoZSBzdGFuZGFyZCBwYXNzCiAvLy8gaW5zdHJ1bWVudGF0aW9ucyBhbmQgbWFuYWdlcyB0aGVpciBzdGF0ZSAoaWYgYW55KS4KIGNsYXNzIFN0YW5kYXJkSW5zdHJ1bWVudGF0aW9ucyB7CisgIFByaW50SVJJbnN0cnVtZW50YXRpb24gUHJpbnRJUjsKICAgVGltZVBhc3Nlc0hhbmRsZXIgVGltZVBhc3NlczsKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9Db3ZlcmFnZS9Db3ZlcmFnZU1hcHBpbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvQ292ZXJhZ2UvQ292ZXJhZ2VNYXBwaW5nLmgKaW5kZXggYmVhYTM2NS4uMTE3NThhYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9Db3ZlcmFnZS9Db3ZlcmFnZU1hcHBpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Byb2ZpbGVEYXRhL0NvdmVyYWdlL0NvdmVyYWdlTWFwcGluZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvdmVyYWdlTWFwcGluZy5oIC0gQ29kZSBjb3ZlcmFnZSBtYXBwaW5nIHN1cHBvcnQgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Byb2ZpbGVEYXRhL0NvdmVyYWdlL0NvdmVyYWdlTWFwcGluZ1JlYWRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9Db3ZlcmFnZS9Db3ZlcmFnZU1hcHBpbmdSZWFkZXIuaAppbmRleCBjODhjNzFhLi5kYmIxOTc2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Byb2ZpbGVEYXRhL0NvdmVyYWdlL0NvdmVyYWdlTWFwcGluZ1JlYWRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvQ292ZXJhZ2UvQ292ZXJhZ2VNYXBwaW5nUmVhZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ292ZXJhZ2VNYXBwaW5nUmVhZGVyLmggLSBDb2RlIGNvdmVyYWdlIG1hcHBpbmcgcmVhZGVyIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvQ292ZXJhZ2UvQ292ZXJhZ2VNYXBwaW5nV3JpdGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Byb2ZpbGVEYXRhL0NvdmVyYWdlL0NvdmVyYWdlTWFwcGluZ1dyaXRlci5oCmluZGV4IDg2ZmIxYmQuLjVmODhjYWMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvQ292ZXJhZ2UvQ292ZXJhZ2VNYXBwaW5nV3JpdGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9Db3ZlcmFnZS9Db3ZlcmFnZU1hcHBpbmdXcml0ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDb3ZlcmFnZU1hcHBpbmdXcml0ZXIuaCAtIENvZGUgY292ZXJhZ2UgbWFwcGluZyB3cml0ZXIgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9HQ09WLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Byb2ZpbGVEYXRhL0dDT1YuaAppbmRleCBhMDg4ZjYzLi4yN2I3NmI1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Byb2ZpbGVEYXRhL0dDT1YuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Byb2ZpbGVEYXRhL0dDT1YuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBHQ09WLmggLSBMTFZNIGNvdmVyYWdlIHRvb2wgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9JbnN0clByb2YuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvSW5zdHJQcm9mLmgKaW5kZXggZGM0NTAyMS4uOWVhMWI5YiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9JbnN0clByb2YuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Byb2ZpbGVEYXRhL0luc3RyUHJvZi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEluc3RyUHJvZi5oIC0gSW5zdHJ1bWVudGVkIHByb2ZpbGluZyBmb3JtYXQgc3VwcG9ydCAtLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMDQxLDYgKzEwNDAsOSBAQAogdm9pZCBnZXRNZW1PUFNpemVSYW5nZUZyb21PcHRpb24oU3RyaW5nUmVmIFN0ciwgaW50NjRfdCAmUmFuZ2VTdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgJlJhbmdlTGFzdCk7CiAKKy8vIENyZWF0ZSB0aGUgdmFyaWFibGUgZm9yIHRoZSBwcm9maWxlIGZpbGUgbmFtZS4KK3ZvaWQgY3JlYXRlUHJvZmlsZUZpbGVOYW1lVmFyKE1vZHVsZSAmTSwgU3RyaW5nUmVmIEluc3RyUHJvZmlsZU91dHB1dCk7CisKIH0gLy8gZW5kIG5hbWVzcGFjZSBsbHZtCiAKICNlbmRpZiAvLyBMTFZNX1BST0ZJTEVEQVRBX0lOU1RSUFJPRl9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Byb2ZpbGVEYXRhL0luc3RyUHJvZkRhdGEuaW5jIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9JbnN0clByb2ZEYXRhLmluYwppbmRleCA0NTQ2MjBlLi5lMWUyZGY1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Byb2ZpbGVEYXRhL0luc3RyUHJvZkRhdGEuaW5jCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvSW5zdHJQcm9mRGF0YS5pbmMKQEAgLTEsOSArMSw4IEBACiAvKj09PS0tIEluc3RyUHJvZkRhdGEuaW5jIC0gaW5zdHIgcHJvZmlsaW5nIHJ1bnRpbWUgc3RydWN0dXJlcyAtKi0gQysrIC0qLT09PSAqXAogfCoKLXwqICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLXwqCi18KiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLXwqIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KK3wqIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCit8KiBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KK3wqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIHwqCiBcKj09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0qLwogLyoKQEAgLTI1MCwyMiArMjQ5LDIyIEBACiAjZGVmaW5lIElOU1RSX1BST0ZfREFUQV9ERUZJTkVECiBJTlNUUl9QUk9GX1NFQ1RfRU5UUlkoSVBTS19kYXRhLCBcCiAgICAgICAgICAgICAgICAgICAgICAgSU5TVFJfUFJPRl9RVU9URShJTlNUUl9QUk9GX0RBVEFfQ09NTU9OKSwgXAotICAgICAgICAgICAgICAgICAgICAgIElOU1RSX1BST0ZfUVVPVEUoSU5TVFJfUFJPRl9EQVRBX0NPRkYpLCAiX19EQVRBLCIpCisgICAgICAgICAgICAgICAgICAgICAgSU5TVFJfUFJPRl9EQVRBX0NPRkYsICJfX0RBVEEsIikKIElOU1RSX1BST0ZfU0VDVF9FTlRSWShJUFNLX2NudHMsIFwKICAgICAgICAgICAgICAgICAgICAgICBJTlNUUl9QUk9GX1FVT1RFKElOU1RSX1BST0ZfQ05UU19DT01NT04pLCBcCi0gICAgICAgICAgICAgICAgICAgICAgSU5TVFJfUFJPRl9RVU9URShJTlNUUl9QUk9GX0NOVFNfQ09GRiksICJfX0RBVEEsIikKKyAgICAgICAgICAgICAgICAgICAgICBJTlNUUl9QUk9GX0NOVFNfQ09GRiwgIl9fREFUQSwiKQogSU5TVFJfUFJPRl9TRUNUX0VOVFJZKElQU0tfbmFtZSwgXAogICAgICAgICAgICAgICAgICAgICAgIElOU1RSX1BST0ZfUVVPVEUoSU5TVFJfUFJPRl9OQU1FX0NPTU1PTiksIFwKLSAgICAgICAgICAgICAgICAgICAgICBJTlNUUl9QUk9GX1FVT1RFKElOU1RSX1BST0ZfTkFNRV9DT0ZGKSwgIl9fREFUQSwiKQorICAgICAgICAgICAgICAgICAgICAgIElOU1RSX1BST0ZfTkFNRV9DT0ZGLCAiX19EQVRBLCIpCiBJTlNUUl9QUk9GX1NFQ1RfRU5UUlkoSVBTS192YWxzLCBcCiAgICAgICAgICAgICAgICAgICAgICAgSU5TVFJfUFJPRl9RVU9URShJTlNUUl9QUk9GX1ZBTFNfQ09NTU9OKSwgXAotICAgICAgICAgICAgICAgICAgICAgIElOU1RSX1BST0ZfUVVPVEUoSU5TVFJfUFJPRl9WQUxTX0NPRkYpLCAiX19EQVRBLCIpCisgICAgICAgICAgICAgICAgICAgICAgSU5TVFJfUFJPRl9WQUxTX0NPRkYsICJfX0RBVEEsIikKIElOU1RSX1BST0ZfU0VDVF9FTlRSWShJUFNLX3Zub2RlcywgXAogICAgICAgICAgICAgICAgICAgICAgIElOU1RSX1BST0ZfUVVPVEUoSU5TVFJfUFJPRl9WTk9ERVNfQ09NTU9OKSwgXAotICAgICAgICAgICAgICAgICAgICAgIElOU1RSX1BST0ZfUVVPVEUoSU5TVFJfUFJPRl9WTk9ERVNfQ09GRiksICJfX0RBVEEsIikKKyAgICAgICAgICAgICAgICAgICAgICBJTlNUUl9QUk9GX1ZOT0RFU19DT0ZGLCAiX19EQVRBLCIpCiBJTlNUUl9QUk9GX1NFQ1RfRU5UUlkoSVBTS19jb3ZtYXAsIFwKICAgICAgICAgICAgICAgICAgICAgICBJTlNUUl9QUk9GX1FVT1RFKElOU1RSX1BST0ZfQ09WTUFQX0NPTU1PTiksIFwKLSAgICAgICAgICAgICAgICAgICAgICBJTlNUUl9QUk9GX1FVT1RFKElOU1RSX1BST0ZfQ09WTUFQX0NPRkYpLCAiX19MTFZNX0NPViwiKQorICAgICAgICAgICAgICAgICAgICAgIElOU1RSX1BST0ZfQ09WTUFQX0NPRkYsICJfX0xMVk1fQ09WLCIpCiAKICN1bmRlZiBJTlNUUl9QUk9GX1NFQ1RfRU5UUlkKICNlbmRpZgpAQCAtNjU1LDEzICs2NTQsMTUgQEAKICNkZWZpbmUgSU5TVFJfUFJPRl9WQUxTX0NPTU1PTiBfX2xsdm1fcHJmX3ZhbHMKICNkZWZpbmUgSU5TVFJfUFJPRl9WTk9ERVNfQ09NTU9OIF9fbGx2bV9wcmZfdm5kcwogI2RlZmluZSBJTlNUUl9QUk9GX0NPVk1BUF9DT01NT04gX19sbHZtX2Nvdm1hcAotLyogV2luMzIgKi8KLSNkZWZpbmUgSU5TVFJfUFJPRl9EQVRBX0NPRkYgLmxwcmZkCi0jZGVmaW5lIElOU1RSX1BST0ZfTkFNRV9DT0ZGIC5scHJmbgotI2RlZmluZSBJTlNUUl9QUk9GX0NOVFNfQ09GRiAubHByZmMKLSNkZWZpbmUgSU5TVFJfUFJPRl9WQUxTX0NPRkYgLmxwcmZ2Ci0jZGVmaW5lIElOU1RSX1BST0ZfVk5PREVTX0NPRkYgLmxwcmZuZAotI2RlZmluZSBJTlNUUl9QUk9GX0NPVk1BUF9DT0ZGIC5sY292bWFwCisvKiBXaW5kb3dzIHNlY3Rpb24gbmFtZXMuIEJlY2F1c2UgdGhlc2Ugc2VjdGlvbiBuYW1lcyBjb250YWluIGRvbGxhciBjaGFyYWN0ZXJzLAorICogdGhleSBtdXN0IGJlIHF1b3RlZC4KKyAqLworI2RlZmluZSBJTlNUUl9QUk9GX0RBVEFfQ09GRiAiLmxwcmZkJE0iCisjZGVmaW5lIElOU1RSX1BST0ZfTkFNRV9DT0ZGICIubHByZm4kTSIKKyNkZWZpbmUgSU5TVFJfUFJPRl9DTlRTX0NPRkYgIi5scHJmYyRNIgorI2RlZmluZSBJTlNUUl9QUk9GX1ZBTFNfQ09GRiAiLmxwcmZ2JE0iCisjZGVmaW5lIElOU1RSX1BST0ZfVk5PREVTX0NPRkYgIi5scHJmbmQkTSIKKyNkZWZpbmUgSU5TVFJfUFJPRl9DT1ZNQVBfQ09GRiAiLmxjb3ZtYXAkTSIKIAogI2lmZGVmIF9XSU4zMgogLyogUnVudGltZSBzZWN0aW9uIG5hbWVzIGFuZCBuYW1lIHN0cmluZ3MuICAqLwpAQCAtNjc3LDMxICs2NzgsMTggQEAKICNkZWZpbmUgSU5TVFJfUFJPRl9DT1ZNQVBfU0VDVF9OQU1FIElOU1RSX1BST0ZfQ09WTUFQX0NPRkYKICNlbHNlCiAvKiBSdW50aW1lIHNlY3Rpb24gbmFtZXMgYW5kIG5hbWUgc3RyaW5ncy4gICovCi0jZGVmaW5lIElOU1RSX1BST0ZfREFUQV9TRUNUX05BTUUgSU5TVFJfUFJPRl9EQVRBX0NPTU1PTgotI2RlZmluZSBJTlNUUl9QUk9GX05BTUVfU0VDVF9OQU1FIElOU1RSX1BST0ZfTkFNRV9DT01NT04KLSNkZWZpbmUgSU5TVFJfUFJPRl9DTlRTX1NFQ1RfTkFNRSBJTlNUUl9QUk9GX0NOVFNfQ09NTU9OCisjZGVmaW5lIElOU1RSX1BST0ZfREFUQV9TRUNUX05BTUUgSU5TVFJfUFJPRl9RVU9URShJTlNUUl9QUk9GX0RBVEFfQ09NTU9OKQorI2RlZmluZSBJTlNUUl9QUk9GX05BTUVfU0VDVF9OQU1FIElOU1RSX1BST0ZfUVVPVEUoSU5TVFJfUFJPRl9OQU1FX0NPTU1PTikKKyNkZWZpbmUgSU5TVFJfUFJPRl9DTlRTX1NFQ1RfTkFNRSBJTlNUUl9QUk9GX1FVT1RFKElOU1RSX1BST0ZfQ05UU19DT01NT04pCiAvKiBBcnJheSBvZiBwb2ludGVycy4gRWFjaCBwb2ludGVyIHBvaW50cyB0byBhIGxpc3QKICAqIG9mIHZhbHVlIG5vZGVzIGFzc29jaWF0ZWQgd2l0aCBvbmUgdmFsdWUgc2l0ZS4KICAqLwotI2RlZmluZSBJTlNUUl9QUk9GX1ZBTFNfU0VDVF9OQU1FIElOU1RSX1BST0ZfVkFMU19DT01NT04KKyNkZWZpbmUgSU5TVFJfUFJPRl9WQUxTX1NFQ1RfTkFNRSBJTlNUUl9QUk9GX1FVT1RFKElOU1RSX1BST0ZfVkFMU19DT01NT04pCiAvKiBWYWx1ZSBwcm9maWxlIG5vZGVzIHNlY3Rpb24uICovCi0jZGVmaW5lIElOU1RSX1BST0ZfVk5PREVTX1NFQ1RfTkFNRSBJTlNUUl9QUk9GX1ZOT0RFU19DT01NT04KLSNkZWZpbmUgSU5TVFJfUFJPRl9DT1ZNQVBfU0VDVF9OQU1FIElOU1RSX1BST0ZfQ09WTUFQX0NPTU1PTgorI2RlZmluZSBJTlNUUl9QUk9GX1ZOT0RFU19TRUNUX05BTUUgSU5TVFJfUFJPRl9RVU9URShJTlNUUl9QUk9GX1ZOT0RFU19DT01NT04pCisjZGVmaW5lIElOU1RSX1BST0ZfQ09WTUFQX1NFQ1RfTkFNRSBJTlNUUl9QUk9GX1FVT1RFKElOU1RSX1BST0ZfQ09WTUFQX0NPTU1PTikKICNlbmRpZgogCi0jZGVmaW5lIElOU1RSX1BST0ZfREFUQV9TRUNUX05BTUVfU1RSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBJTlNUUl9QUk9GX1FVT1RFKElOU1RSX1BST0ZfREFUQV9TRUNUX05BTUUpCi0jZGVmaW5lIElOU1RSX1BST0ZfTkFNRV9TRUNUX05BTUVfU1RSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBJTlNUUl9QUk9GX1FVT1RFKElOU1RSX1BST0ZfTkFNRV9TRUNUX05BTUUpCi0jZGVmaW5lIElOU1RSX1BST0ZfQ05UU19TRUNUX05BTUVfU1RSICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBJTlNUUl9QUk9GX1FVT1RFKElOU1RSX1BST0ZfQ05UU19TRUNUX05BTUUpCi0jZGVmaW5lIElOU1RSX1BST0ZfQ09WTUFQX1NFQ1RfTkFNRV9TVFIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBJTlNUUl9QUk9GX1FVT1RFKElOU1RSX1BST0ZfQ09WTUFQX1NFQ1RfTkFNRSkKLSNkZWZpbmUgSU5TVFJfUFJPRl9WQUxTX1NFQ1RfTkFNRV9TVFIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIElOU1RSX1BST0ZfUVVPVEUoSU5TVFJfUFJPRl9WQUxTX1NFQ1RfTkFNRSkKLSNkZWZpbmUgSU5TVFJfUFJPRl9WTk9ERVNfU0VDVF9OQU1FX1NUUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIElOU1RSX1BST0ZfUVVPVEUoSU5TVFJfUFJPRl9WTk9ERVNfU0VDVF9OQU1FKQotCiAvKiBNYWNyb3MgdG8gZGVmaW5lIHN0YXJ0L3N0b3Agc2VjdGlvbiBzeW1ib2wgZm9yIGEgZ2l2ZW4KICAqIHNlY3Rpb24gb24gTGludXguIEZvciBpbnN0YW5jZQogICogSU5TVFJfUFJPRl9TRUNUX1NUQVJUKElOU1RSX1BST0ZfREFUQV9TRUNUX05BTUUpIHdpbGwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvSW5zdHJQcm9mUmVhZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Byb2ZpbGVEYXRhL0luc3RyUHJvZlJlYWRlci5oCmluZGV4IGVmYzIyZGMuLmQ0NjU0MjAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvSW5zdHJQcm9mUmVhZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9JbnN0clByb2ZSZWFkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJbnN0clByb2ZSZWFkZXIuaCAtIEluc3RydW1lbnRlZCBwcm9maWxpbmcgcmVhZGVycyAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzQ5LDEyICszNDgsMTcgQEAKICAgICBPbkRpc2tJdGVyYWJsZUNoYWluZWRIYXNoVGFibGU8SW5zdHJQcm9mTG9va3VwVHJhaXQ+OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFRhYmxlSW1wbD4KK2NsYXNzIEluc3RyUHJvZlJlYWRlckl0YW5pdW1SZW1hcHBlcjsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hUYWJsZUltcGw+CiBjbGFzcyBJbnN0clByb2ZSZWFkZXJJbmRleCA6IHB1YmxpYyBJbnN0clByb2ZSZWFkZXJJbmRleEJhc2UgewogcHJpdmF0ZToKICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hUYWJsZUltcGw+IEhhc2hUYWJsZTsKICAgdHlwZW5hbWUgSGFzaFRhYmxlSW1wbDo6ZGF0YV9pdGVyYXRvciBSZWNvcmRJdGVyYXRvcjsKICAgdWludDY0X3QgRm9ybWF0VmVyc2lvbjsKIAorICBmcmllbmQgY2xhc3MgSW5zdHJQcm9mUmVhZGVySXRhbml1bVJlbWFwcGVyPEhhc2hUYWJsZUltcGw+OworCiBwdWJsaWM6CiAgIEluc3RyUHJvZlJlYWRlckluZGV4KGNvbnN0IHVuc2lnbmVkIGNoYXIgKkJ1Y2tldHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNvbnN0IFBheWxvYWQsCkBAIC0zODYsMTMgKzM5MCwyNiBAQAogICB9CiB9OwogCisvLy8gTmFtZSBtYXRjaGVyIHN1cHBvcnRpbmcgZnV6enkgbWF0Y2hpbmcgb2Ygc3ltYm9sIG5hbWVzIHRvIG5hbWVzIGluIHByb2ZpbGVzLgorY2xhc3MgSW5zdHJQcm9mUmVhZGVyUmVtYXBwZXIgeworcHVibGljOgorICB2aXJ0dWFsIH5JbnN0clByb2ZSZWFkZXJSZW1hcHBlcigpIHt9CisgIHZpcnR1YWwgRXJyb3IgcG9wdWxhdGVSZW1hcHBpbmdzKCkgeyByZXR1cm4gRXJyb3I6OnN1Y2Nlc3MoKTsgfQorICB2aXJ0dWFsIEVycm9yIGdldFJlY29yZHMoU3RyaW5nUmVmIEZ1bmNOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8TmFtZWRJbnN0clByb2ZSZWNvcmQ+ICZEYXRhKSA9IDA7Cit9OworCiAvLy8gUmVhZGVyIGZvciB0aGUgaW5kZXhlZCBiaW5hcnkgaW5zdHJwcm9mIGZvcm1hdC4KIGNsYXNzIEluZGV4ZWRJbnN0clByb2ZSZWFkZXIgOiBwdWJsaWMgSW5zdHJQcm9mUmVhZGVyIHsKIHByaXZhdGU6CiAgIC8vLyBUaGUgcHJvZmlsZSBkYXRhIGZpbGUgY29udGVudHMuCiAgIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCdWZmZXI+IERhdGFCdWZmZXI7CisgIC8vLyBUaGUgcHJvZmlsZSByZW1hcHBpbmcgZmlsZSBjb250ZW50cy4KKyAgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJ1ZmZlcj4gUmVtYXBwaW5nQnVmZmVyOwogICAvLy8gVGhlIGluZGV4IGludG8gdGhlIHByb2ZpbGUgZGF0YS4KICAgc3RkOjp1bmlxdWVfcHRyPEluc3RyUHJvZlJlYWRlckluZGV4QmFzZT4gSW5kZXg7CisgIC8vLyBUaGUgcHJvZmlsZSByZW1hcHBpbmcgZmlsZSBjb250ZW50cy4KKyAgc3RkOjp1bmlxdWVfcHRyPEluc3RyUHJvZlJlYWRlclJlbWFwcGVyPiBSZW1hcHBlcjsKICAgLy8vIFByb2ZpbGUgc3VtbWFyeSBkYXRhLgogICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZmlsZVN1bW1hcnk+IFN1bW1hcnk7CiAgIC8vIEluZGV4IHRvIHRoZSBjdXJyZW50IHJlY29yZCBpbiB0aGUgcmVjb3JkIGFycmF5LgpAQCAtNDA0LDggKzQyMSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpDdXIpOwogCiBwdWJsaWM6Ci0gIEluZGV4ZWRJbnN0clByb2ZSZWFkZXIoc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJ1ZmZlcj4gRGF0YUJ1ZmZlcikKLSAgICAgIDogRGF0YUJ1ZmZlcihzdGQ6Om1vdmUoRGF0YUJ1ZmZlcikpLCBSZWNvcmRJbmRleCgwKSB7fQorICBJbmRleGVkSW5zdHJQcm9mUmVhZGVyKAorICAgICAgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJ1ZmZlcj4gRGF0YUJ1ZmZlciwKKyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlCdWZmZXI+IFJlbWFwcGluZ0J1ZmZlciA9IG51bGxwdHIpCisgICAgICA6IERhdGFCdWZmZXIoc3RkOjptb3ZlKERhdGFCdWZmZXIpKSwKKyAgICAgICAgUmVtYXBwaW5nQnVmZmVyKHN0ZDo6bW92ZShSZW1hcHBpbmdCdWZmZXIpKSwgUmVjb3JkSW5kZXgoMCkge30KICAgSW5kZXhlZEluc3RyUHJvZlJlYWRlcihjb25zdCBJbmRleGVkSW5zdHJQcm9mUmVhZGVyICYpID0gZGVsZXRlOwogICBJbmRleGVkSW5zdHJQcm9mUmVhZGVyICZvcGVyYXRvcj0oY29uc3QgSW5kZXhlZEluc3RyUHJvZlJlYWRlciAmKSA9IGRlbGV0ZTsKIApAQCAtNDM0LDEwICs0NTQsMTEgQEAKIAogICAvLy8gRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGFuIGluZGV4ZWQgcmVhZGVyLgogICBzdGF0aWMgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEluZGV4ZWRJbnN0clByb2ZSZWFkZXI+PgotICBjcmVhdGUoY29uc3QgVHdpbmUgJlBhdGgpOworICBjcmVhdGUoY29uc3QgVHdpbmUgJlBhdGgsIGNvbnN0IFR3aW5lICZSZW1hcHBpbmdQYXRoID0gIiIpOwogCiAgIHN0YXRpYyBFeHBlY3RlZDxzdGQ6OnVuaXF1ZV9wdHI8SW5kZXhlZEluc3RyUHJvZlJlYWRlcj4+Ci0gIGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QnVmZmVyPiBCdWZmZXIpOworICBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJ1ZmZlcj4gQnVmZmVyLAorICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJ1ZmZlcj4gUmVtYXBwaW5nQnVmZmVyID0gbnVsbHB0cik7CiAKICAgLy8gVXNlZCBmb3IgdGVzdGluZyBwdXJwb3NlIG9ubHkuCiAgIHZvaWQgc2V0VmFsdWVQcm9mRGF0YUVuZGlhbm5lc3Moc3VwcG9ydDo6ZW5kaWFubmVzcyBFbmRpYW5uZXNzKSB7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Byb2ZpbGVEYXRhL0luc3RyUHJvZldyaXRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9JbnN0clByb2ZXcml0ZXIuaAppbmRleCA4MTA3YWIzLi5iMGFiMzFkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Byb2ZpbGVEYXRhL0luc3RyUHJvZldyaXRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvSW5zdHJQcm9mV3JpdGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSW5zdHJQcm9mV3JpdGVyLmggLSBJbnN0cnVtZW50ZWQgcHJvZmlsaW5nIHdyaXRlciAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvUHJvZmlsZUNvbW1vbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9Qcm9maWxlQ29tbW9uLmgKaW5kZXggMDg3NTg4Zi4uYjUyZjg4NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9Qcm9maWxlQ29tbW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9Qcm9maWxlQ29tbW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUHJvZmlsZUNvbW1vbi5oIC0gQ29tbW9uIHByb2ZpbGluZyBBUElzLiAtLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvU2FtcGxlUHJvZi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9TYW1wbGVQcm9mLmgKaW5kZXggZTYzMmExYy4uY2EzZTJkZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9TYW1wbGVQcm9mLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9TYW1wbGVQcm9mLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU2FtcGxlUHJvZi5oIC0gU2FtcGxpbmcgcHJvZmlsaW5nIGZvcm1hdCBzdXBwb3J0IC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTQ4OCw4ICs0ODcsNiBAQAogICAvLyBJZiB0aGUgZm9ybWF0IGlzIFNQRl9Db21wYWN0X0JpbmFyeSwgdGhlIG5hbWUgaXMgYWxyZWFkeSBhIEdVSUQgYW5kIHdlCiAgIC8vIGRvbid0IHdhbnQgdG8gcmV0dXJuIHRoZSBHVUlEIG9mIEdVSUQuCiAgIHN0YXRpYyB1aW50NjRfdCBnZXRHVUlEKFN0cmluZ1JlZiBOYW1lKSB7Ci0gICAgaWYgKEZvcm1hdCA9PSBTUEZfQ29tcGFjdF9CaW5hcnkpCi0gICAgICBlcnJzKCkgPDwgTmFtZSA8PCAnXG4nOwogICAgIHJldHVybiAoRm9ybWF0ID09IFNQRl9Db21wYWN0X0JpbmFyeSkgPyBzdGQ6OnN0b3VsbChOYW1lLmRhdGEoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRnVuY3Rpb246OmdldEdVSUQoTmFtZSk7CiAgIH0KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvU2FtcGxlUHJvZlJlYWRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9TYW1wbGVQcm9mUmVhZGVyLmgKaW5kZXggYzEwMGU4MC4uMzJiOGY5MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9TYW1wbGVQcm9mUmVhZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Qcm9maWxlRGF0YS9TYW1wbGVQcm9mUmVhZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU2FtcGxlUHJvZlJlYWRlci5oIC0gUmVhZCBMTFZNIHNhbXBsZSBwcm9maWxlIGRhdGEgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yMjIsNiArMjIxLDcgQEAKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvRGVidWcuaCIKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvRXJyb3JPci5oIgogI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9NZW1vcnlCdWZmZXIuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvU3ltYm9sUmVtYXBwaW5nUmVhZGVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtMjg5LDExICsyODksMTYgQEAKICAgICAvLyBUaGUgZnVuY3Rpb24gbmFtZSBtYXkgaGF2ZSBiZWVuIHVwZGF0ZWQgYnkgYWRkaW5nIHN1ZmZpeC4gSW4gc2FtcGxlCiAgICAgLy8gcHJvZmlsZSwgdGhlIGZ1bmN0aW9uIG5hbWVzIGFyZSBhbGwgc3RyaXBwZWQsIHNvIHdlIG5lZWQgdG8gc3RyaXAKICAgICAvLyB0aGUgZnVuY3Rpb24gbmFtZSBzdWZmaXggYmVmb3JlIG1hdGNoaW5nIHdpdGggcHJvZmlsZS4KLSAgICBTdHJpbmdSZWYgRm5hbWUgPSBGLmdldE5hbWUoKS5zcGxpdCgnLicpLmZpcnN0OworICAgIHJldHVybiBnZXRTYW1wbGVzRm9yKEYuZ2V0TmFtZSgpLnNwbGl0KCcuJykuZmlyc3QpOworICB9CisKKyAgLy8vIFJldHVybiB0aGUgc2FtcGxlcyBjb2xsZWN0ZWQgZm9yIGZ1bmN0aW9uIFxwIEYuCisgIHZpcnR1YWwgRnVuY3Rpb25TYW1wbGVzICpnZXRTYW1wbGVzRm9yKFN0cmluZ1JlZiBGbmFtZSkgewogICAgIHN0ZDo6c3RyaW5nIEZHVUlEOwogICAgIEZuYW1lID0gZ2V0UmVwSW5Gb3JtYXQoRm5hbWUsIGdldEZvcm1hdCgpLCBGR1VJRCk7Ci0gICAgaWYgKFByb2ZpbGVzLmNvdW50KEZuYW1lKSkKLSAgICAgIHJldHVybiAmUHJvZmlsZXNbRm5hbWVdOworICAgIGF1dG8gSXQgPSBQcm9maWxlcy5maW5kKEZuYW1lKTsKKyAgICBpZiAoSXQgIT0gUHJvZmlsZXMuZW5kKCkpCisgICAgICByZXR1cm4gJkl0LT5zZWNvbmQ7CiAgICAgcmV0dXJuIG51bGxwdHI7CiAgIH0KIApAQCAtMzM3LDYgKzM0MiwxMiBAQAogICAvLy8gUHJvZmlsZSBzdW1tYXJ5IGluZm9ybWF0aW9uLgogICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZmlsZVN1bW1hcnk+IFN1bW1hcnk7CiAKKyAgLy8vIFRha2Ugb3duZXJzaGlwIG9mIHRoZSBzdW1tYXJ5IG9mIHRoaXMgcmVhZGVyLgorICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFByb2ZpbGVTdW1tYXJ5PgorICB0YWtlU3VtbWFyeShTYW1wbGVQcm9maWxlUmVhZGVyICZSZWFkZXIpIHsKKyAgICByZXR1cm4gc3RkOjptb3ZlKFJlYWRlci5TdW1tYXJ5KTsKKyAgfQorCiAgIC8vLyBDb21wdXRlIHN1bW1hcnkgZm9yIHRoaXMgcHJvZmlsZS4KICAgdm9pZCBjb21wdXRlU3VtbWFyeSgpOwogCkBAIC01MjUsNiArNTM2LDQ0IEBACiAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBHQ09WVGFnQUZET0Z1bmN0aW9uID0gMHhhYzAwMDAwMDsKIH07CiAKKy8vLyBBIHByb2ZpbGUgZGF0YSByZWFkZXIgcHJveHkgdGhhdCByZW1hcHMgdGhlIHByb2ZpbGUgZGF0YSBmcm9tIGFub3RoZXIKKy8vLyBzYW1wbGUgcHJvZmlsZSBkYXRhIHJlYWRlciwgYnkgYXBwbHlpbmcgYSBwcm92aWRlZCBzZXQgb2YgZXF1aXZhbGVuY2VzCisvLy8gYmV0d2VlbiBjb21wb25lbnRzIG9mIHRoZSBzeW1ib2wgbmFtZXMgaW4gdGhlIHByb2ZpbGUuCitjbGFzcyBTYW1wbGVQcm9maWxlUmVhZGVySXRhbml1bVJlbWFwcGVyIDogcHVibGljIFNhbXBsZVByb2ZpbGVSZWFkZXIgeworcHVibGljOgorICBTYW1wbGVQcm9maWxlUmVhZGVySXRhbml1bVJlbWFwcGVyKAorICAgICAgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJ1ZmZlcj4gQiwgTExWTUNvbnRleHQgJkMsCisgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2FtcGxlUHJvZmlsZVJlYWRlcj4gVW5kZXJseWluZykKKyAgICAgIDogU2FtcGxlUHJvZmlsZVJlYWRlcihzdGQ6Om1vdmUoQiksIEMsIFVuZGVybHlpbmctPmdldEZvcm1hdCgpKSB7CisgICAgUHJvZmlsZXMgPSBzdGQ6Om1vdmUoVW5kZXJseWluZy0+Z2V0UHJvZmlsZXMoKSk7CisgICAgU3VtbWFyeSA9IHRha2VTdW1tYXJ5KCpVbmRlcmx5aW5nKTsKKyAgICAvLyBLZWVwIHRoZSB1bmRlcmx5aW5nIHJlYWRlciBhbGl2ZTsgdGhlIHByb2ZpbGUgZGF0YSBtYXkgY29udGFpbgorICAgIC8vIFN0cmluZ1JlZnMgcmVmZXJlbmNpbmcgbmFtZXMgaW4gaXRzIG5hbWUgdGFibGUuCisgICAgVW5kZXJseWluZ1JlYWRlciA9IHN0ZDo6bW92ZShVbmRlcmx5aW5nKTsKKyAgfQorCisgIC8vLyBDcmVhdGUgYSByZW1hcHBlZCBzYW1wbGUgcHJvZmlsZSBmcm9tIHRoZSBnaXZlbiByZW1hcHBpbmcgZmlsZSBhbmQKKyAgLy8vIHVuZGVybHlpbmcgc2FtcGxlcy4KKyAgc3RhdGljIEVycm9yT3I8c3RkOjp1bmlxdWVfcHRyPFNhbXBsZVByb2ZpbGVSZWFkZXI+PgorICBjcmVhdGUoY29uc3QgVHdpbmUgJkZpbGVuYW1lLCBMTFZNQ29udGV4dCAmQywKKyAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxTYW1wbGVQcm9maWxlUmVhZGVyPiBVbmRlcmx5aW5nKTsKKworICAvLy8gUmVhZCBhbmQgdmFsaWRhdGUgdGhlIGZpbGUgaGVhZGVyLgorICBzdGQ6OmVycm9yX2NvZGUgcmVhZEhlYWRlcigpIG92ZXJyaWRlIHsgcmV0dXJuIHNhbXBsZXByb2ZfZXJyb3I6OnN1Y2Nlc3M7IH0KKworICAvLy8gUmVhZCByZW1hcHBpbmcgZmlsZSBhbmQgYXBwbHkgaXQgdG8gdGhlIHNhbXBsZSBwcm9maWxlLgorICBzdGQ6OmVycm9yX2NvZGUgcmVhZCgpIG92ZXJyaWRlOworCisgIC8vLyBSZXR1cm4gdGhlIHNhbXBsZXMgY29sbGVjdGVkIGZvciBmdW5jdGlvbiBccCBGLgorICBGdW5jdGlvblNhbXBsZXMgKmdldFNhbXBsZXNGb3IoU3RyaW5nUmVmIEZ1bmN0aW9uTmFtZSkgb3ZlcnJpZGU7CisgIHVzaW5nIFNhbXBsZVByb2ZpbGVSZWFkZXI6OmdldFNhbXBsZXNGb3I7CisKK3ByaXZhdGU6CisgIFN5bWJvbFJlbWFwcGluZ1JlYWRlciBSZW1hcHBpbmdzOworICBEZW5zZU1hcDxTeW1ib2xSZW1hcHBpbmdSZWFkZXI6OktleSwgRnVuY3Rpb25TYW1wbGVzKj4gU2FtcGxlTWFwOworICBzdGQ6OnVuaXF1ZV9wdHI8U2FtcGxlUHJvZmlsZVJlYWRlcj4gVW5kZXJseWluZ1JlYWRlcjsKK307CisKIH0gLy8gZW5kIG5hbWVzcGFjZSBzYW1wbGVwcm9mCiAKIH0gLy8gZW5kIG5hbWVzcGFjZSBsbHZtCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Byb2ZpbGVEYXRhL1NhbXBsZVByb2ZXcml0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvU2FtcGxlUHJvZldyaXRlci5oCmluZGV4IGQ1YWM2ZTUuLjgxZTZlM2EgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvU2FtcGxlUHJvZldyaXRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vUHJvZmlsZURhdGEvU2FtcGxlUHJvZldyaXRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFNhbXBsZVByb2ZXcml0ZXIuaCAtIFdyaXRlIExMVk0gc2FtcGxlIHByb2ZpbGUgZGF0YSAtLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FBcmNoNjRUYXJnZXRQYXJzZXIuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FBcmNoNjRUYXJnZXRQYXJzZXIuZGVmCmluZGV4IDY1YmZlZTguLmQ4YzY5YzIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BQXJjaDY0VGFyZ2V0UGFyc2VyLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQUFyY2g2NFRhcmdldFBhcnNlci5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQUFSQ0g2NFRhcmdldFBhcnNlci5kZWYgLSBBQVJDSDY0IHRhcmdldCBwYXJzaW5nIGRlZmluZXMgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNzIsNiArNzEsOSBAQAogQUFSQ0g2NF9BUkNIX0VYVF9OQU1FKCJyY3BjIiwgICAgIEFBcmNoNjQ6OkFFS19SQ1BDLCAgICAgIityY3BjIiwgIi1yY3BjIikKIEFBUkNINjRfQVJDSF9FWFRfTkFNRSgicm5nIiwgICAgICBBQXJjaDY0OjpBRUtfUkFORCwgICAgICIrcmFuZCIsICAiLXJhbmQiKQogQUFSQ0g2NF9BUkNIX0VYVF9OQU1FKCJtZW10YWciLCAgIEFBcmNoNjQ6OkFFS19NVEUsICAgICAgIittdGUiLCAgICItbXRlIikKK0FBUkNINjRfQVJDSF9FWFRfTkFNRSgic3NicyIsICAgICBBQXJjaDY0OjpBRUtfU1NCUywgICAgICIrc3NicyIsICAiLXNzYnMiKQorQUFSQ0g2NF9BUkNIX0VYVF9OQU1FKCJzYiIsICAgICAgIEFBcmNoNjQ6OkFFS19TQiwgICAgICAgIitzYiIsICAgICItc2IiKQorQUFSQ0g2NF9BUkNIX0VYVF9OQU1FKCJwcmVkcmVzIiwgIEFBcmNoNjQ6OkFFS19QUkVEUkVTLCAgIitwcmVkcmVzIiwgIi1wcmVkcmVzIikKICN1bmRlZiBBQVJDSDY0X0FSQ0hfRVhUX05BTUUKIAogI2lmbmRlZiBBQVJDSDY0X0NQVV9OQU1FCkBAIC05OSw4ICsxMDEsOCBAQAogICAgICAgICAgICAgICAgIChBQXJjaDY0OjpBRUtfQ1JDKSkKIEFBUkNINjRfQ1BVX05BTUUoImV4eW5vcy1tMyIsIEFSTVY4QSwgRktfQ1JZUFRPX05FT05fRlBfQVJNVjgsIGZhbHNlLAogICAgICAgICAgICAgICAgIChBQXJjaDY0OjpBRUtfQ1JDKSkKLUFBUkNINjRfQ1BVX05BTUUoImV4eW5vcy1tNCIsIEFSTVY4QSwgRktfQ1JZUFRPX05FT05fRlBfQVJNVjgsIGZhbHNlLAotICAgICAgICAgICAgICAgIChBQXJjaDY0OjpBRUtfQ1JDKSkKK0FBUkNINjRfQ1BVX05BTUUoImV4eW5vcy1tNCIsIEFSTVY4XzJBLCBGS19DUllQVE9fTkVPTl9GUF9BUk1WOCwgZmFsc2UsCisgICAgICAgICAgICAgICAgKEFBcmNoNjQ6OkFFS19GUDE2IHwgQUFyY2g2NDo6QUVLX0RPVFBST0QpKQogQUFSQ0g2NF9DUFVfTkFNRSgiZmFsa29yIiwgQVJNVjhBLCBGS19DUllQVE9fTkVPTl9GUF9BUk1WOCwgZmFsc2UsCiAgICAgICAgICAgICAgICAgKEFBcmNoNjQ6OkFFS19DUkMgfCBBQXJjaDY0OjpBRUtfUkRNKSkKIEFBUkNINjRfQ1BVX05BTUUoInNhcGhpcmEiLCBBUk1WOF8zQSwgRktfQ1JZUFRPX05FT05fRlBfQVJNVjgsIGZhbHNlLApAQCAtMTE3LDYgKzExOSw5IEBACiAgICAgICAgICAgICAgICAgKEFBcmNoNjQ6OkFFS19DUkMgfCBBQXJjaDY0OjpBRUtfUFJPRklMRSkpCiBBQVJDSDY0X0NQVV9OQU1FKCJ0aHVuZGVyeHQ4MyIsIEFSTVY4QSwgRktfQ1JZUFRPX05FT05fRlBfQVJNVjgsIGZhbHNlLAogICAgICAgICAgICAgICAgIChBQXJjaDY0OjpBRUtfQ1JDIHwgQUFyY2g2NDo6QUVLX1BST0ZJTEUpKQorQUFSQ0g2NF9DUFVfTkFNRSgidHN2MTEwIiwgQVJNVjhfMkEsIEZLX0NSWVBUT19ORU9OX0ZQX0FSTVY4LCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgKEFBcmNoNjQ6OkFFS19QUk9GSUxFIHwgQUFyY2g2NDo6QUVLX0ZQMTYgfCBBQXJjaDY0OjpBRUtfRlAxNkZNTCB8CisgICAgICAgICAgICAgICAgICBBQXJjaDY0OjpBRUtfRE9UUFJPRCkpCiAvLyBJbnZhbGlkIENQVQogQUFSQ0g2NF9DUFVfTkFNRSgiaW52YWxpZCIsIElOVkFMSUQsIEZLX0lOVkFMSUQsIHRydWUsIEFBcmNoNjQ6OkFFS19JTlZBTElEKQogI3VuZGVmIEFBUkNINjRfQ1BVX05BTUUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BQXJjaDY0VGFyZ2V0UGFyc2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQUFyY2g2NFRhcmdldFBhcnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZjFjNWMKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQUFyY2g2NFRhcmdldFBhcnNlci5oCkBAIC0wLDAgKzEsMTIzIEBACisvLz09PS0tIEFBcmNoNjRUYXJnZXRQYXJzZXIgLSBQYXJzZXIgZm9yIEFBcmNoNjQgZmVhdHVyZXMgLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGEgdGFyZ2V0IHBhcnNlciB0byByZWNvZ25pc2UgQUFyY2g2NCBoYXJkd2FyZSBmZWF0dXJlcworLy8gc3VjaCBhcyBGUFUvQ1BVL0FSQ0ggYW5kIGV4dGVuc2lvbiBuYW1lcy4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fU1VQUE9SVF9BQVJDSDY0VEFSR0VUUEFSU0VSQ09NTU9OX0gKKyNkZWZpbmUgTExWTV9TVVBQT1JUX0FBUkNINjRUQVJHRVRQQVJTRVJDT01NT05fSAorCisjaW5jbHVkZSAibGx2bS9BRFQvU3RyaW5nUmVmLmgiCisjaW5jbHVkZSAibGx2bS9BRFQvVHJpcGxlLmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0FSTVRhcmdldFBhcnNlci5oIgorI2luY2x1ZGUgPHZlY3Rvcj4KKworLy8gRklYTUU6VGhpcyBzaG91bGQgYmUgbWFkZSBpbnRvIGNsYXNzIGRlc2lnbix0byBhdm9pZCBkdXBwbGljYXRpb24uCituYW1lc3BhY2UgbGx2bSB7CituYW1lc3BhY2UgQUFyY2g2NCB7CisKKy8vIEFyY2ggZXh0ZW5zaW9uIG1vZGlmaWVycyBmb3IgQ1BVcy4KK2VudW0gQXJjaEV4dEtpbmQgOiB1bnNpZ25lZCB7CisgIEFFS19JTlZBTElEID0gICAgIDAsCisgIEFFS19OT05FID0gICAgICAgIDEsCisgIEFFS19DUkMgPSAgICAgICAgIDEgPDwgMSwKKyAgQUVLX0NSWVBUTyA9ICAgICAgMSA8PCAyLAorICBBRUtfRlAgPSAgICAgICAgICAxIDw8IDMsCisgIEFFS19TSU1EID0gICAgICAgIDEgPDwgNCwKKyAgQUVLX0ZQMTYgPSAgICAgICAgMSA8PCA1LAorICBBRUtfUFJPRklMRSA9ICAgICAxIDw8IDYsCisgIEFFS19SQVMgPSAgICAgICAgIDEgPDwgNywKKyAgQUVLX0xTRSA9ICAgICAgICAgMSA8PCA4LAorICBBRUtfU1ZFID0gICAgICAgICAxIDw8IDksCisgIEFFS19ET1RQUk9EID0gICAgIDEgPDwgMTAsCisgIEFFS19SQ1BDID0gICAgICAgIDEgPDwgMTEsCisgIEFFS19SRE0gPSAgICAgICAgIDEgPDwgMTIsCisgIEFFS19TTTQgPSAgICAgICAgIDEgPDwgMTMsCisgIEFFS19TSEEzID0gICAgICAgIDEgPDwgMTQsCisgIEFFS19TSEEyID0gICAgICAgIDEgPDwgMTUsCisgIEFFS19BRVMgPSAgICAgICAgIDEgPDwgMTYsCisgIEFFS19GUDE2Rk1MID0gICAgIDEgPDwgMTcsCisgIEFFS19SQU5EID0gICAgICAgIDEgPDwgMTgsCisgIEFFS19NVEUgPSAgICAgICAgIDEgPDwgMTksCisgIEFFS19TU0JTID0gICAgICAgIDEgPDwgMjAsCisgIEFFS19TQiA9ICAgICAgICAgIDEgPDwgMjEsCisgIEFFS19QUkVEUkVTID0gICAgIDEgPDwgMjIsCit9OworCitlbnVtIGNsYXNzIEFyY2hLaW5kIHsKKyNkZWZpbmUgQUFSQ0g2NF9BUkNIKE5BTUUsIElELCBDUFVfQVRUUiwgU1VCX0FSQ0gsIEFSQ0hfQVRUUiwgQVJDSF9GUFUsIEFSQ0hfQkFTRV9FWFQpIElELAorI2luY2x1ZGUgIkFBcmNoNjRUYXJnZXRQYXJzZXIuZGVmIgorfTsKKworY29uc3QgQVJNOjpBcmNoTmFtZXM8QXJjaEtpbmQ+IEFBcmNoNjRBUkNITmFtZXNbXSA9IHsKKyNkZWZpbmUgQUFSQ0g2NF9BUkNIKE5BTUUsIElELCBDUFVfQVRUUiwgU1VCX0FSQ0gsIEFSQ0hfQVRUUiwgQVJDSF9GUFUsICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBBUkNIX0JBU0VfRVhUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB7TkFNRSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIHNpemVvZihOQU1FKSAtIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICBDUFVfQVRUUiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgc2l6ZW9mKENQVV9BVFRSKSAtIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIFNVQl9BUkNILCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICBzaXplb2YoU1VCX0FSQ0gpIC0gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgQVJNOjpGUFVLaW5kOjpBUkNIX0ZQVSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIEFSQ0hfQkFTRV9FWFQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICBBQXJjaDY0OjpBcmNoS2luZDo6SUQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgQVJDSF9BVFRSfSwKKyNpbmNsdWRlICJBQXJjaDY0VGFyZ2V0UGFyc2VyLmRlZiIKK307CisKK2NvbnN0IEFSTTo6RXh0TmFtZSBBQXJjaDY0QVJDSEV4dE5hbWVzW10gPSB7CisjZGVmaW5lIEFBUkNINjRfQVJDSF9FWFRfTkFNRShOQU1FLCBJRCwgRkVBVFVSRSwgTkVHRkVBVFVSRSkgICAgICAgICAgICAgICAgICAgXAorICB7TkFNRSwgc2l6ZW9mKE5BTUUpIC0gMSwgSUQsIEZFQVRVUkUsIE5FR0ZFQVRVUkV9LAorI2luY2x1ZGUgIkFBcmNoNjRUYXJnZXRQYXJzZXIuZGVmIgorfTsKKworY29uc3QgQVJNOjpDcHVOYW1lczxBcmNoS2luZD4gQUFyY2g2NENQVU5hbWVzW10gPSB7CisjZGVmaW5lIEFBUkNINjRfQ1BVX05BTUUoTkFNRSwgSUQsIERFRkFVTFRfRlBVLCBJU19ERUZBVUxULCBERUZBVUxUX0VYVCkgICAgICAgXAorICB7TkFNRSwgc2l6ZW9mKE5BTUUpIC0gMSwgQUFyY2g2NDo6QXJjaEtpbmQ6OklELCBJU19ERUZBVUxULCBERUZBVUxUX0VYVH0sCisjaW5jbHVkZSAiQUFyY2g2NFRhcmdldFBhcnNlci5kZWYiCit9OworCitjb25zdCBBcmNoS2luZCBBcmNoS2luZHNbXSA9IHsKKyNkZWZpbmUgQUFSQ0g2NF9BUkNIKE5BTUUsIElELCBDUFVfQVRUUiwgU1VCX0FSQ0gsIEFSQ0hfQVRUUiwgQVJDSF9GUFUsIEFSQ0hfQkFTRV9FWFQpIFwKKyAgICBBcmNoS2luZDo6SUQsCisjaW5jbHVkZSAiQUFyY2g2NFRhcmdldFBhcnNlci5kZWYiCit9OworCisvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIG1vdmVkIHRvIFRhcmdldFR1cGxlIG9uY2UgaXQgZXhpc3RzCitib29sIGdldEV4dGVuc2lvbkZlYXR1cmVzKHVuc2lnbmVkIEV4dGVuc2lvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZ1JlZj4gJkZlYXR1cmVzKTsKK2Jvb2wgZ2V0QXJjaEZlYXR1cmVzKEFyY2hLaW5kIEFLLCBzdGQ6OnZlY3RvcjxTdHJpbmdSZWY+ICZGZWF0dXJlcyk7CisKK1N0cmluZ1JlZiBnZXRBcmNoTmFtZShBcmNoS2luZCBBSyk7Cit1bnNpZ25lZCBnZXRBcmNoQXR0cihBcmNoS2luZCBBSyk7CitTdHJpbmdSZWYgZ2V0Q1BVQXR0cihBcmNoS2luZCBBSyk7CitTdHJpbmdSZWYgZ2V0U3ViQXJjaChBcmNoS2luZCBBSyk7CitTdHJpbmdSZWYgZ2V0QXJjaEV4dE5hbWUodW5zaWduZWQgQXJjaEV4dEtpbmQpOworU3RyaW5nUmVmIGdldEFyY2hFeHRGZWF0dXJlKFN0cmluZ1JlZiBBcmNoRXh0KTsKKworLy8gSW5mb3JtYXRpb24gYnkgTmFtZQordW5zaWduZWQgZ2V0RGVmYXVsdEZQVShTdHJpbmdSZWYgQ1BVLCBBcmNoS2luZCBBSyk7Cit1bnNpZ25lZCBnZXREZWZhdWx0RXh0ZW5zaW9ucyhTdHJpbmdSZWYgQ1BVLCBBcmNoS2luZCBBSyk7CitTdHJpbmdSZWYgZ2V0RGVmYXVsdENQVShTdHJpbmdSZWYgQXJjaCk7CitBcmNoS2luZCBnZXRDUFVBcmNoS2luZChTdHJpbmdSZWYgQ1BVKTsKKworLy8gUGFyc2VyCitBcmNoS2luZCBwYXJzZUFyY2goU3RyaW5nUmVmIEFyY2gpOworQXJjaEV4dEtpbmQgcGFyc2VBcmNoRXh0KFN0cmluZ1JlZiBBcmNoRXh0KTsKK0FyY2hLaW5kIHBhcnNlQ1BVQXJjaChTdHJpbmdSZWYgQ1BVKTsKKy8vIFVzZWQgYnkgdGFyZ2V0IHBhcnNlciB0ZXN0cwordm9pZCBmaWxsVmFsaWRDUFVBcmNoTGlzdChTbWFsbFZlY3RvckltcGw8U3RyaW5nUmVmPiAmVmFsdWVzKTsKKworYm9vbCBpc1gxOFJlc2VydmVkQnlEZWZhdWx0KGNvbnN0IFRyaXBsZSAmVFQpOworCit9IC8vIG5hbWVzcGFjZSBBQXJjaDY0Cit9IC8vIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FNREdQVU1ldGFkYXRhLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQU1ER1BVTWV0YWRhdGEuaAppbmRleCA2NjdmYjNmLi5mNDNiZTUxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQU1ER1BVTWV0YWRhdGEuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQU1ER1BVTWV0YWRhdGEuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEFNREdQVU1ldGFkYXRhLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNDMxLDYgKzQzMCwyMSBAQAogLy8vIENvbnZlcnRzIFxwIEhTQU1ldGFkYXRhIHRvIFxwIFN0cmluZy4KIHN0ZDo6ZXJyb3JfY29kZSB0b1N0cmluZyhNZXRhZGF0YSBIU0FNZXRhZGF0YSwgc3RkOjpzdHJpbmcgJlN0cmluZyk7CiAKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLyBIU0EgbWV0YWRhdGEgZm9yIHYzIGNvZGUgb2JqZWN0LgorLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KK25hbWVzcGFjZSBWMyB7CisvLy8gSFNBIG1ldGFkYXRhIG1ham9yIHZlcnNpb24uCitjb25zdGV4cHIgdWludDMyX3QgVmVyc2lvbk1ham9yID0gMTsKKy8vLyBIU0EgbWV0YWRhdGEgbWlub3IgdmVyc2lvbi4KK2NvbnN0ZXhwciB1aW50MzJfdCBWZXJzaW9uTWlub3IgPSAwOworCisvLy8gSFNBIG1ldGFkYXRhIGJlZ2lubmluZyBhc3NlbWJsZXIgZGlyZWN0aXZlLgorY29uc3RleHByIGNoYXIgQXNzZW1ibGVyRGlyZWN0aXZlQmVnaW5bXSA9ICIuYW1kZ3B1X21ldGFkYXRhIjsKKy8vLyBIU0EgbWV0YWRhdGEgZW5kaW5nIGFzc2VtYmxlciBkaXJlY3RpdmUuCitjb25zdGV4cHIgY2hhciBBc3NlbWJsZXJEaXJlY3RpdmVFbmRbXSA9ICIuZW5kX2FtZGdwdV9tZXRhZGF0YSI7Cit9IC8vIGVuZCBuYW1lc3BhY2UgVjMKKwogfSAvLyBlbmQgbmFtZXNwYWNlIEhTQU1ECiAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQU1ESFNBS2VybmVsRGVzY3JpcHRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FNREhTQUtlcm5lbERlc2NyaXB0b3IuaAppbmRleCA3NTE2OTllLi5kY2ExYTMxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQU1ESFNBS2VybmVsRGVzY3JpcHRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BTURIU0FLZXJuZWxEZXNjcmlwdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBBTURIU0FLZXJuZWxEZXNjcmlwdG9yLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BUk1BdHRyaWJ1dGVQYXJzZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BUk1BdHRyaWJ1dGVQYXJzZXIuaAppbmRleCA5MTlmMzk3Li5jN2FlYWY5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQVJNQXR0cmlidXRlUGFyc2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FSTUF0dHJpYnV0ZVBhcnNlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQVJNQXR0cmlidXRlUGFyc2VyLmggLSBBUk0gQXR0cmlidXRlIEluZm9ybWF0aW9uIFByaW50ZXIgLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FSTUJ1aWxkQXR0cmlidXRlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FSTUJ1aWxkQXR0cmlidXRlcy5oCmluZGV4IGI4YTAzNzYuLjEyOTljMGIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BUk1CdWlsZEF0dHJpYnV0ZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQVJNQnVpbGRBdHRyaWJ1dGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIEFSTUJ1aWxkQXR0cmlidXRlcy5oIC0gQVJNIEJ1aWxkIEF0dHJpYnV0ZXMgLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BUk1FSEFCSS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FSTUVIQUJJLmgKaW5kZXggOWIwNTJkZi4uM2ZiYjU2ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FSTUVIQUJJLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FSTUVIQUJJLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBBUk1FSEFCSS5oIC0gQVJNIEV4Y2VwdGlvbiBIYW5kbGluZyBBQkkgLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BUk1UYXJnZXRQYXJzZXIuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FSTVRhcmdldFBhcnNlci5kZWYKaW5kZXggYWRmNjQzOS4uMzVmODMzMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FSTVRhcmdldFBhcnNlci5kZWYKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FSTVRhcmdldFBhcnNlci5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQVJNVGFyZ2V0UGFyc2VyLmRlZiAtIEFSTSB0YXJnZXQgcGFyc2luZyBkZWZpbmVzIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE1OCw2ICsxNTcsNyBAQAogQVJNX0FSQ0hfRVhUX05BTUUoIm1hdmVyaWNrIiwgQVJNOjpBRUtfTUFWRVJJQ0ssIG51bGxwdHIsICBudWxscHRyKQogQVJNX0FSQ0hfRVhUX05BTUUoInhzY2FsZSIsICAgQVJNOjpBRUtfWFNDQUxFLCAgIG51bGxwdHIsICBudWxscHRyKQogQVJNX0FSQ0hfRVhUX05BTUUoImZwMTZmbWwiLCAgQVJNOjpBRUtfRlAxNkZNTCwgICIrZnAxNmZtbCIsICItZnAxNmZtbCIpCitBUk1fQVJDSF9FWFRfTkFNRSgic2IiLCAgICAgICBBUk06OkFFS19TQiwgICAgICAgIitzYiIsICAgICAgIi1zYiIpCiAjdW5kZWYgQVJNX0FSQ0hfRVhUX05BTUUKIAogI2lmbmRlZiBBUk1fSFdfRElWX05BTUUKQEAgLTI2NSw3ICsyNjUsOCBAQAogQVJNX0NQVV9OQU1FKCJleHlub3MtbTEiLCBBUk1WOEEsIEZLX0NSWVBUT19ORU9OX0ZQX0FSTVY4LCBmYWxzZSwgQVJNOjpBRUtfQ1JDKQogQVJNX0NQVV9OQU1FKCJleHlub3MtbTIiLCBBUk1WOEEsIEZLX0NSWVBUT19ORU9OX0ZQX0FSTVY4LCBmYWxzZSwgQVJNOjpBRUtfQ1JDKQogQVJNX0NQVV9OQU1FKCJleHlub3MtbTMiLCBBUk1WOEEsIEZLX0NSWVBUT19ORU9OX0ZQX0FSTVY4LCBmYWxzZSwgQVJNOjpBRUtfQ1JDKQotQVJNX0NQVV9OQU1FKCJleHlub3MtbTQiLCBBUk1WOEEsIEZLX0NSWVBUT19ORU9OX0ZQX0FSTVY4LCBmYWxzZSwgQVJNOjpBRUtfQ1JDKQorQVJNX0NQVV9OQU1FKCJleHlub3MtbTQiLCBBUk1WOF8yQSwgRktfQ1JZUFRPX05FT05fRlBfQVJNVjgsIGZhbHNlLAorICAgICAgICAgICAgIChBUk06OkFFS19GUDE2IHwgQVJNOjpBRUtfRE9UUFJPRCkpCiBBUk1fQ1BVX05BTUUoImtyeW8iLCBBUk1WOEEsIEZLX0NSWVBUT19ORU9OX0ZQX0FSTVY4LCBmYWxzZSwgQVJNOjpBRUtfQ1JDKQogLy8gTm9uLXN0YW5kYXJkIEFyY2ggbmFtZXMuCiBBUk1fQ1BVX05BTUUoIml3bW14dCIsIElXTU1YVCwgRktfTk9ORSwgdHJ1ZSwgQVJNOjpBRUtfTk9ORSkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BUk1UYXJnZXRQYXJzZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BUk1UYXJnZXRQYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGQ0N2VmCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FSTVRhcmdldFBhcnNlci5oCkBAIC0wLDAgKzEsMjYzIEBACisvLz09PS0tIEFSTVRhcmdldFBhcnNlciAtIFBhcnNlciBmb3IgQVJNIHRhcmdldCBmZWF0dXJlcyAtLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGEgdGFyZ2V0IHBhcnNlciB0byByZWNvZ25pc2UgQVJNIGhhcmR3YXJlIGZlYXR1cmVzCisvLyBzdWNoIGFzIEZQVS9DUFUvQVJDSC9leHRlbnNpb25zIGFuZCBzcGVjaWZpYyBzdXBwb3J0IHN1Y2ggYXMgSFdESVYuCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX1NVUFBPUlRfQVJNVEFSR0VUUEFSU0VSX0gKKyNkZWZpbmUgTExWTV9TVVBQT1JUX0FSTVRBUkdFVFBBUlNFUl9ICisKKyNpbmNsdWRlICJsbHZtL0FEVC9TdHJpbmdSZWYuaCIKKyNpbmNsdWRlICJsbHZtL0FEVC9UcmlwbGUuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvQVJNQnVpbGRBdHRyaWJ1dGVzLmgiCisjaW5jbHVkZSA8dmVjdG9yPgorCituYW1lc3BhY2UgbGx2bSB7CituYW1lc3BhY2UgQVJNIHsKKworLy8gQXJjaCBleHRlbnNpb24gbW9kaWZpZXJzIGZvciBDUFVzLgorLy8gTm90ZSB0aGF0IHRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBBQXJjaDY0IGxpc3QKK2VudW0gQXJjaEV4dEtpbmQgOiB1bnNpZ25lZCB7CisgIEFFS19JTlZBTElEID0gICAgIDAsCisgIEFFS19OT05FID0gICAgICAgIDEsCisgIEFFS19DUkMgPSAgICAgICAgIDEgPDwgMSwKKyAgQUVLX0NSWVBUTyA9ICAgICAgMSA8PCAyLAorICBBRUtfRlAgPSAgICAgICAgICAxIDw8IDMsCisgIEFFS19IV0RJVlRIVU1CID0gIDEgPDwgNCwKKyAgQUVLX0hXRElWQVJNID0gICAgMSA8PCA1LAorICBBRUtfTVAgPSAgICAgICAgICAxIDw8IDYsCisgIEFFS19TSU1EID0gICAgICAgIDEgPDwgNywKKyAgQUVLX1NFQyA9ICAgICAgICAgMSA8PCA4LAorICBBRUtfVklSVCA9ICAgICAgICAxIDw8IDksCisgIEFFS19EU1AgPSAgICAgICAgIDEgPDwgMTAsCisgIEFFS19GUDE2ID0gICAgICAgIDEgPDwgMTEsCisgIEFFS19SQVMgPSAgICAgICAgIDEgPDwgMTIsCisgIEFFS19TVkUgPSAgICAgICAgIDEgPDwgMTMsCisgIEFFS19ET1RQUk9EID0gICAgIDEgPDwgMTQsCisgIEFFS19TSEEyICAgID0gICAgIDEgPDwgMTUsCisgIEFFS19BRVMgICAgID0gICAgIDEgPDwgMTYsCisgIEFFS19GUDE2Rk1MID0gICAgIDEgPDwgMTcsCisgIEFFS19TQiAgICAgID0gICAgIDEgPDwgMTgsCisgIC8vIFVuc3VwcG9ydGVkIGV4dGVuc2lvbnMuCisgIEFFS19PUyA9IDB4ODAwMDAwMCwKKyAgQUVLX0lXTU1YVCA9IDB4MTAwMDAwMDAsCisgIEFFS19JV01NWFQyID0gMHgyMDAwMDAwMCwKKyAgQUVLX01BVkVSSUNLID0gMHg0MDAwMDAwMCwKKyAgQUVLX1hTQ0FMRSA9IDB4ODAwMDAwMDAsCit9OworCisvLyBMaXN0IG9mIEFyY2ggRXh0ZW5zaW9uIG5hbWVzLgorLy8gRklYTUU6IFRhYmxlR2VuIHRoaXMuCitzdHJ1Y3QgRXh0TmFtZSB7CisgIGNvbnN0IGNoYXIgKk5hbWVDU3RyOworICBzaXplX3QgTmFtZUxlbmd0aDsKKyAgdW5zaWduZWQgSUQ7CisgIGNvbnN0IGNoYXIgKkZlYXR1cmU7CisgIGNvbnN0IGNoYXIgKk5lZ0ZlYXR1cmU7CisKKyAgU3RyaW5nUmVmIGdldE5hbWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmdSZWYoTmFtZUNTdHIsIE5hbWVMZW5ndGgpOyB9Cit9OworCitjb25zdCBFeHROYW1lIEFSQ0hFeHROYW1lc1tdID0geworI2RlZmluZSBBUk1fQVJDSF9FWFRfTkFNRShOQU1FLCBJRCwgRkVBVFVSRSwgTkVHRkVBVFVSRSkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAge05BTUUsIHNpemVvZihOQU1FKSAtIDEsIElELCBGRUFUVVJFLCBORUdGRUFUVVJFfSwKKyNpbmNsdWRlICJBUk1UYXJnZXRQYXJzZXIuZGVmIgorfTsKKworLy8gTGlzdCBvZiBIV0RpdiBuYW1lcyAodXNlIGdldEhXRGl2U3lub255bSkgYW5kIHdoaWNoIGFyY2hpdGVjdHVyYWwKKy8vIGZlYXR1cmVzIHRoZXkgY29ycmVzcG9uZCB0byAodXNlIGdldEhXRGl2RmVhdHVyZXMpLgorLy8gRklYTUU6IFRhYmxlR2VuIHRoaXMuCitjb25zdCBzdHJ1Y3QgeworICBjb25zdCBjaGFyICpOYW1lQ1N0cjsKKyAgc2l6ZV90IE5hbWVMZW5ndGg7CisgIHVuc2lnbmVkIElEOworCisgIFN0cmluZ1JlZiBnZXROYW1lKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nUmVmKE5hbWVDU3RyLCBOYW1lTGVuZ3RoKTsgfQorfSBIV0Rpdk5hbWVzW10gPSB7CisjZGVmaW5lIEFSTV9IV19ESVZfTkFNRShOQU1FLCBJRCkge05BTUUsIHNpemVvZihOQU1FKSAtIDEsIElEfSwKKyNpbmNsdWRlICJBUk1UYXJnZXRQYXJzZXIuZGVmIgorfTsKKworLy8gQXJjaCBuYW1lcy4KK2VudW0gY2xhc3MgQXJjaEtpbmQgeworI2RlZmluZSBBUk1fQVJDSChOQU1FLCBJRCwgQ1BVX0FUVFIsIFNVQl9BUkNILCBBUkNIX0FUVFIsIEFSQ0hfRlBVLCBBUkNIX0JBU0VfRVhUKSBJRCwKKyNpbmNsdWRlICJBUk1UYXJnZXRQYXJzZXIuZGVmIgorfTsKKworLy8gTGlzdCBvZiBDUFUgbmFtZXMgYW5kIHRoZWlyIGFyY2hlcy4KKy8vIFRoZSBzYW1lIENQVSBjYW4gaGF2ZSBtdWx0aXBsZSBhcmNoZXMgYW5kIGNhbiBiZSBkZWZhdWx0IG9uIG11bHRpcGxlIGFyY2hlcy4KKy8vIFdoZW4gZmluZGluZyB0aGUgQXJjaCBmb3IgYSBDUFUsIGZpcnN0LWZvdW5kIHByZXZhaWxzLiBTb3J0IHRoZW0gYWNjb3JkaW5nbHkuCisvLyBXaGVuIHRoaXMgYmVjb21lcyB0YWJsZS1nZW5lcmF0ZWQsIHdlJ2QgcHJvYmFibHkgbmVlZCB0d28gdGFibGVzLgorLy8gRklYTUU6IFRhYmxlR2VuIHRoaXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IENwdU5hbWVzIHsKKyAgY29uc3QgY2hhciAqTmFtZUNTdHI7CisgIHNpemVfdCBOYW1lTGVuZ3RoOworICBUIEFyY2hJRDsKKyAgYm9vbCBEZWZhdWx0OyAvLyBpcyAkTmFtZSB0aGUgZGVmYXVsdCBDUFUgZm9yICRBcmNoSUQgPworICB1bnNpZ25lZCBEZWZhdWx0RXh0ZW5zaW9uczsKKworICBTdHJpbmdSZWYgZ2V0TmFtZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZ1JlZihOYW1lQ1N0ciwgTmFtZUxlbmd0aCk7IH0KK307CisKK2NvbnN0IENwdU5hbWVzPEFyY2hLaW5kPiBDUFVOYW1lc1tdID0geworI2RlZmluZSBBUk1fQ1BVX05BTUUoTkFNRSwgSUQsIERFRkFVTFRfRlBVLCBJU19ERUZBVUxULCBERUZBVUxUX0VYVCkgICAgICAgICAgIFwKKyAge05BTUUsIHNpemVvZihOQU1FKSAtIDEsIEFSTTo6QXJjaEtpbmQ6OklELCBJU19ERUZBVUxULCBERUZBVUxUX0VYVH0sCisjaW5jbHVkZSAiQVJNVGFyZ2V0UGFyc2VyLmRlZiIKK307CisKKy8vIEZQVSBuYW1lcy4KK2VudW0gRlBVS2luZCB7CisjZGVmaW5lIEFSTV9GUFUoTkFNRSwgS0lORCwgVkVSU0lPTiwgTkVPTl9TVVBQT1JULCBSRVNUUklDVElPTikgS0lORCwKKyNpbmNsdWRlICJBUk1UYXJnZXRQYXJzZXIuZGVmIgorICBGS19MQVNUCit9OworCisvLyBGUFUgVmVyc2lvbgorZW51bSBjbGFzcyBGUFVWZXJzaW9uIHsKKyAgTk9ORSwKKyAgVkZQVjIsCisgIFZGUFYzLAorICBWRlBWM19GUDE2LAorICBWRlBWNCwKKyAgVkZQVjUKK307CisKKy8vIEFuIEZQVSBuYW1lIHJlc3RyaWN0cyB0aGUgRlBVIGluIG9uZSBvZiB0aHJlZSB3YXlzOgorZW51bSBjbGFzcyBGUFVSZXN0cmljdGlvbiB7CisgIE5vbmUgPSAwLCAvLy88IE5vIHJlc3RyaWN0aW9uCisgIEQxNiwgICAgICAvLy88IE9ubHkgMTYgRCByZWdpc3RlcnMKKyAgU1BfRDE2ICAgIC8vLzwgT25seSBzaW5nbGUtcHJlY2lzaW9uIGluc3RydWN0aW9ucywgd2l0aCAxNiBEIHJlZ2lzdGVycworfTsKKworLy8gQW4gRlBVIG5hbWUgaW1wbGllcyBvbmUgb2YgdGhyZWUgbGV2ZWxzIG9mIE5lb24gc3VwcG9ydDoKK2VudW0gY2xhc3MgTmVvblN1cHBvcnRMZXZlbCB7CisgIE5vbmUgPSAwLCAvLy88IE5vIE5lb24KKyAgTmVvbiwgICAgIC8vLzwgTmVvbgorICBDcnlwdG8gICAgLy8vPCBOZW9uIHdpdGggQ3J5cHRvCit9OworCisvLyBJU0Ega2luZHMuCitlbnVtIGNsYXNzIElTQUtpbmQgeyBJTlZBTElEID0gMCwgQVJNLCBUSFVNQiwgQUFSQ0g2NCB9OworCisvLyBFbmRpYW5uZXNzCisvLyBGSVhNRTogQkU4IHZzLiBCRTMyPworZW51bSBjbGFzcyBFbmRpYW5LaW5kIHsgSU5WQUxJRCA9IDAsIExJVFRMRSwgQklHIH07CisKKy8vIHY2L3Y3L3Y4IFByb2ZpbGUKK2VudW0gY2xhc3MgUHJvZmlsZUtpbmQgeyBJTlZBTElEID0gMCwgQSwgUiwgTSB9OworCisvLyBMaXN0IG9mIGNhbm9uaWNhbCBGUFUgbmFtZXMgKHVzZSBnZXRGUFVTeW5vbnltKSBhbmQgd2hpY2ggYXJjaGl0ZWN0dXJhbAorLy8gZmVhdHVyZXMgdGhleSBjb3JyZXNwb25kIHRvICh1c2UgZ2V0RlBVRmVhdHVyZXMpLgorLy8gRklYTUU6IFRhYmxlR2VuIHRoaXMuCisvLyBUaGUgZW50cmllcyBtdXN0IGFwcGVhciBpbiB0aGUgb3JkZXIgbGlzdGVkIGluIEFSTTo6RlBVS2luZCBmb3IgY29ycmVjdAorLy8gaW5kZXhpbmcKK3N0cnVjdCBGUFVOYW1lIHsKKyAgY29uc3QgY2hhciAqTmFtZUNTdHI7CisgIHNpemVfdCBOYW1lTGVuZ3RoOworICBGUFVLaW5kIElEOworICBGUFVWZXJzaW9uIEZQVVZlcjsKKyAgTmVvblN1cHBvcnRMZXZlbCBOZW9uU3VwcG9ydDsKKyAgRlBVUmVzdHJpY3Rpb24gUmVzdHJpY3Rpb247CisKKyAgU3RyaW5nUmVmIGdldE5hbWUoKSBjb25zdCB7IHJldHVybiBTdHJpbmdSZWYoTmFtZUNTdHIsIE5hbWVMZW5ndGgpOyB9Cit9OworCitzdGF0aWMgY29uc3QgRlBVTmFtZSBGUFVOYW1lc1tdID0geworI2RlZmluZSBBUk1fRlBVKE5BTUUsIEtJTkQsIFZFUlNJT04sIE5FT05fU1VQUE9SVCwgUkVTVFJJQ1RJT04pICAgICAgICAgICAgICAgIFwKKyAge05BTUUsIHNpemVvZihOQU1FKSAtIDEsIEtJTkQsIFZFUlNJT04sIE5FT05fU1VQUE9SVCwgUkVTVFJJQ1RJT059LAorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9BUk1UYXJnZXRQYXJzZXIuZGVmIgorfTsKKworLy8gTGlzdCBvZiBjYW5vbmljYWwgYXJjaCBuYW1lcyAodXNlIGdldEFyY2hTeW5vbnltKS4KKy8vIFRoaXMgdGFibGUgYWxzbyBwcm92aWRlcyB0aGUgYnVpbGQgYXR0cmlidXRlIGZpZWxkcyBmb3IgQ1BVIGFyY2gKKy8vIGFuZCBBcmNoIElELCBhY2NvcmRpbmcgdG8gdGhlIEFkZGVuZGEgdG8gdGhlIEFSTSBBQkksIGNoYXB0ZXJzCisvLyAyLjQgYW5kIDIuMy41LjIgcmVzcGVjdGl2ZWx5LgorLy8gRklYTUU6IFN1YkFyY2ggdmFsdWVzIHdlcmUgc2ltcGxpZmllZCB0byBmaXQgaW50byB0aGUgZXhwZWN0YXRpb25zCisvLyBvZiB0aGUgdHJpcGxlcyBhbmQgYXJlIG5vdCBjb25mb3JtaW5nIHdpdGggdGhlaXIgb2ZmaWNpYWwgbmFtZXMuCisvLyBDaGVjayB0byBzZWUgaWYgdGhlIGV4cGVjdGF0aW9uIHNob3VsZCBiZSBjaGFuZ2VkLgorLy8gRklYTUU6IFRhYmxlR2VuIHRoaXMuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEFyY2hOYW1lcyB7CisgIGNvbnN0IGNoYXIgKk5hbWVDU3RyOworICBzaXplX3QgTmFtZUxlbmd0aDsKKyAgY29uc3QgY2hhciAqQ1BVQXR0ckNTdHI7CisgIHNpemVfdCBDUFVBdHRyTGVuZ3RoOworICBjb25zdCBjaGFyICpTdWJBcmNoQ1N0cjsKKyAgc2l6ZV90IFN1YkFyY2hMZW5ndGg7CisgIHVuc2lnbmVkIERlZmF1bHRGUFU7CisgIHVuc2lnbmVkIEFyY2hCYXNlRXh0ZW5zaW9uczsKKyAgVCBJRDsKKyAgQVJNQnVpbGRBdHRyczo6Q1BVQXJjaCBBcmNoQXR0cjsgLy8gQXJjaCBJRCBpbiBidWlsZCBhdHRyaWJ1dGVzLgorCisgIFN0cmluZ1JlZiBnZXROYW1lKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nUmVmKE5hbWVDU3RyLCBOYW1lTGVuZ3RoKTsgfQorCisgIC8vIENQVSBjbGFzcyBpbiBidWlsZCBhdHRyaWJ1dGVzLgorICBTdHJpbmdSZWYgZ2V0Q1BVQXR0cigpIGNvbnN0IHsgcmV0dXJuIFN0cmluZ1JlZihDUFVBdHRyQ1N0ciwgQ1BVQXR0ckxlbmd0aCk7IH0KKworICAvLyBTdWItQXJjaCBuYW1lLgorICBTdHJpbmdSZWYgZ2V0U3ViQXJjaCgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZ1JlZihTdWJBcmNoQ1N0ciwgU3ViQXJjaExlbmd0aCk7IH0KK307CisKK3N0YXRpYyBjb25zdCBBcmNoTmFtZXM8QXJjaEtpbmQ+IEFSQ0hOYW1lc1tdID0geworI2RlZmluZSBBUk1fQVJDSChOQU1FLCBJRCwgQ1BVX0FUVFIsIFNVQl9BUkNILCBBUkNIX0FUVFIsIEFSQ0hfRlBVLCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgQVJDSF9CQVNFX0VYVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHtOQU1FLCAgICAgICAgIHNpemVvZihOQU1FKSAtIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgQ1BVX0FUVFIsICAgICBzaXplb2YoQ1BVX0FUVFIpIC0gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgIFNVQl9BUkNILCAgICAgc2l6ZW9mKFNVQl9BUkNIKSAtIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICBBUkNIX0ZQVSwgICAgIEFSQ0hfQkFTRV9FWFQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgQXJjaEtpbmQ6OklELCBBUkNIX0FUVFJ9LAorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9BUk1UYXJnZXRQYXJzZXIuZGVmIgorfTsKKworLy8gSW5mb3JtYXRpb24gYnkgSUQKK1N0cmluZ1JlZiBnZXRGUFVOYW1lKHVuc2lnbmVkIEZQVUtpbmQpOworRlBVVmVyc2lvbiBnZXRGUFVWZXJzaW9uKHVuc2lnbmVkIEZQVUtpbmQpOworTmVvblN1cHBvcnRMZXZlbCBnZXRGUFVOZW9uU3VwcG9ydExldmVsKHVuc2lnbmVkIEZQVUtpbmQpOworRlBVUmVzdHJpY3Rpb24gZ2V0RlBVUmVzdHJpY3Rpb24odW5zaWduZWQgRlBVS2luZCk7CisKKy8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgbW92ZWQgdG8gVGFyZ2V0VHVwbGUgb25jZSBpdCBleGlzdHMKK2Jvb2wgZ2V0RlBVRmVhdHVyZXModW5zaWduZWQgRlBVS2luZCwgc3RkOjp2ZWN0b3I8U3RyaW5nUmVmPiAmRmVhdHVyZXMpOworYm9vbCBnZXRIV0RpdkZlYXR1cmVzKHVuc2lnbmVkIEhXRGl2S2luZCwgc3RkOjp2ZWN0b3I8U3RyaW5nUmVmPiAmRmVhdHVyZXMpOworYm9vbCBnZXRFeHRlbnNpb25GZWF0dXJlcyh1bnNpZ25lZCBFeHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmdSZWY+ICZGZWF0dXJlcyk7CisKK1N0cmluZ1JlZiBnZXRBcmNoTmFtZShBcmNoS2luZCBBSyk7Cit1bnNpZ25lZCBnZXRBcmNoQXR0cihBcmNoS2luZCBBSyk7CitTdHJpbmdSZWYgZ2V0Q1BVQXR0cihBcmNoS2luZCBBSyk7CitTdHJpbmdSZWYgZ2V0U3ViQXJjaChBcmNoS2luZCBBSyk7CitTdHJpbmdSZWYgZ2V0QXJjaEV4dE5hbWUodW5zaWduZWQgQXJjaEV4dEtpbmQpOworU3RyaW5nUmVmIGdldEFyY2hFeHRGZWF0dXJlKFN0cmluZ1JlZiBBcmNoRXh0KTsKK1N0cmluZ1JlZiBnZXRIV0Rpdk5hbWUodW5zaWduZWQgSFdEaXZLaW5kKTsKKworLy8gSW5mb3JtYXRpb24gYnkgTmFtZQordW5zaWduZWQgZ2V0RGVmYXVsdEZQVShTdHJpbmdSZWYgQ1BVLCBBcmNoS2luZCBBSyk7Cit1bnNpZ25lZCBnZXREZWZhdWx0RXh0ZW5zaW9ucyhTdHJpbmdSZWYgQ1BVLCBBcmNoS2luZCBBSyk7CitTdHJpbmdSZWYgZ2V0RGVmYXVsdENQVShTdHJpbmdSZWYgQXJjaCk7CitTdHJpbmdSZWYgZ2V0Q2Fub25pY2FsQXJjaE5hbWUoU3RyaW5nUmVmIEFyY2gpOworU3RyaW5nUmVmIGdldEZQVVN5bm9ueW0oU3RyaW5nUmVmIEZQVSk7CitTdHJpbmdSZWYgZ2V0QXJjaFN5bm9ueW0oU3RyaW5nUmVmIEFyY2gpOworCisvLyBQYXJzZXIKK3Vuc2lnbmVkIHBhcnNlSFdEaXYoU3RyaW5nUmVmIEhXRGl2KTsKK3Vuc2lnbmVkIHBhcnNlRlBVKFN0cmluZ1JlZiBGUFUpOworQXJjaEtpbmQgcGFyc2VBcmNoKFN0cmluZ1JlZiBBcmNoKTsKK3Vuc2lnbmVkIHBhcnNlQXJjaEV4dChTdHJpbmdSZWYgQXJjaEV4dCk7CitBcmNoS2luZCBwYXJzZUNQVUFyY2goU3RyaW5nUmVmIENQVSk7CitJU0FLaW5kIHBhcnNlQXJjaElTQShTdHJpbmdSZWYgQXJjaCk7CitFbmRpYW5LaW5kIHBhcnNlQXJjaEVuZGlhbihTdHJpbmdSZWYgQXJjaCk7CitQcm9maWxlS2luZCBwYXJzZUFyY2hQcm9maWxlKFN0cmluZ1JlZiBBcmNoKTsKK3Vuc2lnbmVkIHBhcnNlQXJjaFZlcnNpb24oU3RyaW5nUmVmIEFyY2gpOworCit2b2lkIGZpbGxWYWxpZENQVUFyY2hMaXN0KFNtYWxsVmVjdG9ySW1wbDxTdHJpbmdSZWY+ICZWYWx1ZXMpOworU3RyaW5nUmVmIGNvbXB1dGVEZWZhdWx0VGFyZ2V0QUJJKGNvbnN0IFRyaXBsZSAmVFQsIFN0cmluZ1JlZiBDUFUpOworCit9IC8vIG5hbWVzcGFjZSBBUk0KK30gLy8gbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQVJNV2luRUguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BUk1XaW5FSC5oCmluZGV4IDE0NjM2MjkuLmIxYjgyMWIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BUk1XaW5FSC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BUk1XaW5FSC5oCkBAIC0xLDkgKzEsOCBAQAotLy89PT0tLSBsbHZtL1N1cHBvcnQvV2luQVJNRUguaCAtIFdpbmRvd3Mgb24gQVJNIEVIIENvbnN0YW50cyAtLS0qLSBDKysgLSotPT09Ly8KKy8vPT09LS0gbGx2bS9TdXBwb3J0L0FSTVdpbkVILmggLSBXaW5kb3dzIG9uIEFSTSBFSCBDb25zdGFudHMgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTIwNyw2ICsyMDYsOCBAQAogCiAvLy8gRXhjZXB0aW9uRGF0YVJlY29yZCAtIEFuIGVudHJ5IGluIHRoZSB0YWJsZSBvZiBleGNlcHRpb24gZGF0YSAoLnhkYXRhKQogLy8vCisvLy8gVGhlIGZvcm1hdCBvbiBBUk0gaXM6CisvLy8KIC8vLyAgMyAzIDIgMiAyIDIgMiAyIDIgMiAyIDIgMSAxIDEgMSAxIDEgMSAxIDEgMSAwIDAgMCAwIDAgMCAwIDAgMCAwCiAvLy8gIDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDAgOSA4IDcgNiA1IDQgMyAyIDEgMAogLy8vICstLS0tLS0tKy0tLS0tLS0tLSstKy0rLSstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC0yMTUsNiArMjE2LDE2IEBACiAvLy8gfCAgICBSZXNlcnZlZCAgICB8RXguIENvZGUgV29yZHN8ICAgKEV4dGVuZGVkIEVwaWxvZ3VlIENvdW50KSAgIHwKIC8vLyArLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogLy8vCisvLy8gVGhlIGZvcm1hdCBvbiBBUk02NCBpczoKKy8vLworLy8vICAzIDMgMiAyIDIgMiAyIDIgMiAyIDIgMiAxIDEgMSAxIDEgMSAxIDEgMSAxIDAgMCAwIDAgMCAwIDAgMCAwIDAKKy8vLyAgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDAgOSA4IDcgNiA1IDQgMyAyIDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwCisvLy8gKy0tLS0tLS0tLSstLS0tLS0tLS0rLSstKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKy8vLyB8ICBDIFdyZCAgfCBFcGkgQ250IHxFfFh8VmVyfCAgICAgICAgIEZ1bmN0aW9uIExlbmd0aCAgICAgICAgICAgfAorLy8vICstLS0tLS0tLS0rLS0tLS0tKy0tJy0nLSctLS0nLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisvLy8gfCAgICBSZXNlcnZlZCAgICB8RXguIENvZGUgV29yZHN8ICAgKEV4dGVuZGVkIEVwaWxvZ3VlIENvdW50KSAgIHwKKy8vLyArLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworLy8vCiAvLy8gRnVuY3Rpb24gTGVuZ3RoIDogMTgtYml0IGZpZWxkIGluZGljYXRpbmcgdGhlIHRvdGFsIGxlbmd0aCBvZiB0aGUgZnVuY3Rpb24KIC8vLyAgICAgICAgICAgICAgICAgICBpbiBieXRlcyBkaXZpZGVkIGJ5IDIuICBJZiBhIGZ1bmN0aW9uIGlzIGxhcmdlciB0aGFuCiAvLy8gICAgICAgICAgICAgICAgICAgNTEyS0IsIHRoZW4gbXVsdGlwbGUgcGRhdGEgYW5kIHhkYXRhIHJlY29yZHMgbXVzdCBiZSB1c2VkLgpAQCAtMjI1LDcgKzIzNiw3IEBACiAvLy8gICAgIGhlYWRlcgogLy8vIEYgOiAxLWJpdCBmaWVsZCBpbmRpY2F0aW5nIHRoYXQgdGhlIHJlY29yZCBkZXNjcmliZXMgYSBmdW5jdGlvbiBmcmFnbWVudAogLy8vICAgICAoaW1wbGllcyB0aGF0IG5vIHByb2xvZ3VlIGlzIHByZXNlbnQsIGFuZCBwcm9sb2d1ZSBwcm9jZXNzaW5nIHNob3VsZCBiZQotLy8vICAgICBza2lwcGVkKQorLy8vICAgICBza2lwcGVkKSAoQVJNIG9ubHkpCiAvLy8gRXBpbG9ndWUgQ291bnQgOiA1LWJpdCBmaWVsZCB0aGF0IGRpZmZlcnMgaW4gbWVhbmluZyBiYXNlZCBvbiB0aGUgRSBmaWVsZC4KIC8vLwogLy8vICAgICAgICAgICAgICAgICAgSWYgRSBpcyBzZXQsIHRoZW4gdGhpcyBmaWVsZCBzcGVjaWZpZXMgdGhlIGluZGV4IG9mIHRoZQpAQCAtMjM1LDMzICsyNDYsNDMgQEAKIC8vLyAgICAgICAgICAgICAgICAgIHNjb3Blcy4gIElmIG1vcmUgdGhhbiAzMSBzY29wZXMgZXhpc3QsIHRoZW4gdGhpcyBmaWVsZCBhbmQKIC8vLyAgICAgICAgICAgICAgICAgIHRoZSBDb2RlIFdvcmRzIGZpZWxkIG11c3QgYm90aCBiZSBzZXQgdG8gMCB0byBpbmRpY2F0ZSB0aGF0CiAvLy8gICAgICAgICAgICAgICAgICBhbiBleHRlbnNpb24gd29yZCBpcyByZXF1aXJlZC4KLS8vLyBDb2RlIFdvcmRzIDogNC1iaXQgZmllbGQgdGhhdCBzcGVjaWVzIHRoZSBudW1iZXIgb2YgMzItYml0IHdvcmRzIG5lZWRlZCB0bwotLy8vICAgICAgICAgICAgICBjb250YWluIGFsbCB0aGUgdW53aW5kIGNvZGVzLiAgSWYgbW9yZSB0aGFuIDE1IHdvcmRzICg2MyBjb2RlCi0vLy8gICAgICAgICAgICAgIGJ5dGVzKSBhcmUgcmVxdWlyZWQsIHRoZW4gdGhpcyBmaWVsZCBhbmQgdGhlIEVwaWxvZ3VlIENvdW50Ci0vLy8gICAgICAgICAgICAgIGZpZWxkIG11c3QgYm90aCBiZSBzZXQgdG8gMCB0byBpbmRpY2F0ZSB0aGF0IGFuIGV4dGVuc2lvbiB3b3JkCi0vLy8gICAgICAgICAgICAgIGlzIHJlcXVpcmVkLgorLy8vIENvZGUgV29yZHMgOiA0LWJpdCAoNS1iaXQgb24gQVJNNjQpIGZpZWxkIHRoYXQgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YKKy8vLyAgICAgICAgICAgICAgMzItYml0IHdvcmRzIG5lZWRlZCB0byBjb250YWluIGFsbCB0aGUgdW53aW5kIGNvZGVzLiAgSWYgbW9yZQorLy8vICAgICAgICAgICAgICB0aGFuIDE1IHdvcmRzICgzMSB3b3JkcyBvbiBBUk02NCkgYXJlIHJlcXVpcmVkLCB0aGVuIHRoaXMgZmllbGQKKy8vLyAgICAgICAgICAgICAgYW5kIHRoZSBFcGlsb2d1ZSBDb3VudCBmaWVsZCBtdXN0IGJvdGggYmUgc2V0IHRvIDAgdG8gaW5kaWNhdGUKKy8vLyAgICAgICAgICAgICAgdGhhdCBhbiBleHRlbnNpb24gd29yZCBpcyByZXF1aXJlZC4KIC8vLyBFeHRlbmRlZCBFcGlsb2d1ZSBDb3VudCwgRXh0ZW5kZWQgQ29kZSBXb3JkcyA6CiAvLy8gICAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkIG9ubHkgaWYgRXBpbG9nIENvdW50IGFuZCBDb2RlIFdvcmRzIGFyZSBib3RoCiAvLy8gICAgICAgICAgICAgICAgICAgICAgICAgIHNldCB0byAwLiAgUHJvdmlkZXMgYW4gOC1iaXQgZXh0ZW5kZWQgY29kZSB3b3JkCiAvLy8gICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50IGFuZCAxNi1iaXRzIGZvciBlcGlsb2d1ZSBjb3VudAogLy8vCisvLy8gVGhlIGVwaWxvZ3VlIHNjb3BlIGZvcm1hdCBvbiBBUk0gaXM6CisvLy8KIC8vLyAgMyAzIDIgMiAyIDIgMiAyIDIgMiAyIDIgMSAxIDEgMSAxIDEgMSAxIDEgMSAwIDAgMCAwIDAgMCAwIDAgMCAwCiAvLy8gIDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDAgOSA4IDcgNiA1IDQgMyAyIDEgMAogLy8vICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLSstLS0rLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAvLy8gfCAgRXAgU3RhcnQgSWR4ICB8IENvbmQgfFJlc3wgICAgICAgRXBpbG9ndWUgU3RhcnQgT2Zmc2V0ICAgICAgIHwKIC8vLyArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogLy8vCisvLy8gVGhlIGVwaWxvZ3VlIHNjb3BlIGZvcm1hdCBvbiBBUk02NCBpczoKKy8vLworLy8vICAzIDMgMiAyIDIgMiAyIDIgMiAyIDIgMiAxIDEgMSAxIDEgMSAxIDEgMSAxIDAgMCAwIDAgMCAwIDAgMCAwIDAKKy8vLyAgMSAwIDkgOCA3IDYgNSA0IDMgMiAxIDAgOSA4IDcgNiA1IDQgMyAyIDEgMCA5IDggNyA2IDUgNCAzIDIgMSAwCisvLy8gKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKy8vLyB8ICBFcCBTdGFydCBJZHggICAgIHwgIFJlcyAgfCAgIEVwaWxvZ3VlIFN0YXJ0IE9mZnNldCAgICAgICAgICAgfAorLy8vICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisvLy8KIC8vLyBJZiB0aGUgRSBiaXQgaXMgdW5zZXQgaW4gdGhlIGhlYWRlciwgdGhlIGhlYWRlciBpcyBmb2xsb3dlZCBieSBhIHNlcmllcyBvZgogLy8vIGVwaWxvZ3VlIHNjb3Blcywgd2hpY2ggYXJlIHNvcnRlZCBieSB0aGVpciBvZmZzZXQuCiAvLy8KIC8vLyBFcGlsb2d1ZSBTdGFydCBPZmZzZXQ6IDE4LWJpdCBmaWVsZCBlbmNvZGluZyB0aGUgb2Zmc2V0IG9mIGVwaWxvZ3VlIHJlbGF0aXZlCiAvLy8gICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uIGluIGJ5dGVzIGRpdmlkZWQgYnkgdHdvCiAvLy8gUmVzIDogMi1iaXQgZmllbGQgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBleHBhbnNpb24gKG11c3QgYmUgc2V0IHRvIDApCi0vLy8gQ29uZGl0aW9uIDogNC1iaXQgZmllbGQgcHJvdmlkaW5nIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggdGhlIGVwaWxvZ3VlIGlzCi0vLy8gICAgICAgICAgICAgZXhlY3V0ZWQuICBVbmNvbmRpdGlvbmFsIGVwaWxvZ3VlcyBzaG91bGQgc2V0IHRoaXMgZmllbGQgdG8gMHhlLgotLy8vICAgICAgICAgICAgIEVwaWxvZ3VlcyBtdXN0IGJlIGVudGlyZWx5IGNvbmRpdGlvbmFsIG9yIHVuY29uZGl0aW9uYWwsIGFuZCBpbgotLy8vICAgICAgICAgICAgIFRodW1iLTIgbW9kZS4gIFRoZSBlcGlsb2d1ZSBiZWluZ3Mgd2l0aCB0aGUgZmlyc3QgaW5zdHJ1Y3Rpb24KLS8vLyAgICAgICAgICAgICBhZnRlciB0aGUgSVQgb3Bjb2RlLgorLy8vIENvbmRpdGlvbiA6IChBUk0gb25seSkgNC1iaXQgZmllbGQgcHJvdmlkaW5nIHRoZSBjb25kaXRpb24gdW5kZXIgd2hpY2ggdGhlCisvLy8gICAgICAgICAgICAgZXBpbG9ndWUgaXMgZXhlY3V0ZWQuICBVbmNvbmRpdGlvbmFsIGVwaWxvZ3VlcyBzaG91bGQgc2V0IHRoaXMKKy8vLyAgICAgICAgICAgICBmaWVsZCB0byAweGUuIEVwaWxvZ3VlcyBtdXN0IGJlIGVudGlyZWx5IGNvbmRpdGlvbmFsIG9yCisvLy8gICAgICAgICAgICAgdW5jb25kaXRpb25hbCwgYW5kIGluIFRodW1iLTIgbW9kZS4gIFRoZSBlcGlsb2d1ZSBiZWdpbnMgd2l0aAorLy8vICAgICAgICAgICAgIHRoZSBmaXJzdCBpbnN0cnVjdGlvbiBhZnRlciB0aGUgSVQgb3Bjb2RlLgogLy8vIEVwaWxvZ3VlIFN0YXJ0IEluZGV4IDogOC1iaXQgZmllbGQgaW5kaWNhdGluZyB0aGUgYnl0ZSBpbmRleCBvZiB0aGUgZmlyc3QKIC8vLyAgICAgICAgICAgICAgICAgICAgICAgIHVud2luZCBjb2RlIGRlc2NyaWJpbmcgdGhlIGVwaWxvZ3VlCiAvLy8KQEAgLTI5MywxOCArMzE0LDMzIEBACiAgIGNvbnN0IHN1cHBvcnQ6OnVsaXR0bGUzMl90IEVTOwogCiAgIEVwaWxvZ3VlU2NvcGUoY29uc3Qgc3VwcG9ydDo6dWxpdHRsZTMyX3QgRGF0YSkgOiBFUyhEYXRhKSB7fQorICAvLyBTYW1lIGZvciBib3RoIEFSTSBhbmQgQUFyY2g2NC4KICAgdWludDMyX3QgRXBpbG9ndWVTdGFydE9mZnNldCgpIGNvbnN0IHsKICAgICByZXR1cm4gKEVTICYgMHgwMDAzZmZmZik7CiAgIH0KLSAgdWludDhfdCBSZXMoKSBjb25zdCB7CisKKyAgLy8gRGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBmb3IgQVJNIGFuZCBBQXJjaDY0LgorICB1aW50OF90IFJlc0FSTSgpIGNvbnN0IHsKICAgICByZXR1cm4gKChFUyAmIDB4MDAwYzAwMDApID4+IDE4KTsKICAgfQorCisgIHVpbnQ4X3QgUmVzQUFyY2g2NCgpIGNvbnN0IHsKKyAgICByZXR1cm4gKChFUyAmIDB4MDAwZjAwMDApID4+IDE4KTsKKyAgfQorCisgIC8vIENvbmRpdGlvbiBpcyBvbmx5IGFwcGxpY2FibGUgdG8gQVJNLgogICB1aW50OF90IENvbmRpdGlvbigpIGNvbnN0IHsKICAgICByZXR1cm4gKChFUyAmIDB4MDBmMDAwMDApID4+IDIwKTsKICAgfQotICB1aW50OF90IEVwaWxvZ3VlU3RhcnRJbmRleCgpIGNvbnN0IHsKKworICAvLyBEaWZmZXJlbnQgaW1wbGVtZW50YXRpb25zIGZvciBBUk0gYW5kIEFBcmNoNjQuCisgIHVpbnQ4X3QgRXBpbG9ndWVTdGFydEluZGV4QVJNKCkgY29uc3QgewogICAgIHJldHVybiAoKEVTICYgMHhmZjAwMDAwMCkgPj4gMjQpOwogICB9CisKKyAgdWludDE2X3QgRXBpbG9ndWVTdGFydEluZGV4QUFyY2g2NCgpIGNvbnN0IHsKKyAgICByZXR1cm4gKChFUyAmIDB4ZmZjMDAwMDApID4+IDIyKTsKKyAgfQogfTsKIAogc3RydWN0IEV4Y2VwdGlvbkRhdGFSZWNvcmQ7CkBAIC0zMTIsMTMgKzM0OCwyMyBAQAogCiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YVJlY29yZCB7CiAgIGNvbnN0IHN1cHBvcnQ6OnVsaXR0bGUzMl90ICpEYXRhOworICBib29sIGlzQUFyY2g2NDsKIAotICBFeGNlcHRpb25EYXRhUmVjb3JkKGNvbnN0IHN1cHBvcnQ6OnVsaXR0bGUzMl90ICpEYXRhKSA6IERhdGEoRGF0YSkge30KKyAgRXhjZXB0aW9uRGF0YVJlY29yZChjb25zdCBzdXBwb3J0Ojp1bGl0dGxlMzJfdCAqRGF0YSwgYm9vbCBpc0FBcmNoNjQpIDoKKyAgICBEYXRhKERhdGEpLCBpc0FBcmNoNjQoaXNBQXJjaDY0KSB7fQogCiAgIHVpbnQzMl90IEZ1bmN0aW9uTGVuZ3RoKCkgY29uc3QgewogICAgIHJldHVybiAoRGF0YVswXSAmIDB4MDAwM2ZmZmYpOwogICB9CiAKKyAgdWludDMyX3QgRnVuY3Rpb25MZW5ndGhJbkJ5dGVzQVJNKCkgY29uc3QgeworICAgIHJldHVybiBGdW5jdGlvbkxlbmd0aCgpIDw8IDE7CisgIH0KKworICB1aW50MzJfdCBGdW5jdGlvbkxlbmd0aEluQnl0ZXNBQXJjaDY0KCkgY29uc3QgeworICAgIHJldHVybiBGdW5jdGlvbkxlbmd0aCgpIDw8IDI7CisgIH0KKwogICB1aW50OF90IFZlcnMoKSBjb25zdCB7CiAgICAgcmV0dXJuIChEYXRhWzBdICYgMHgwMDBDMDAwMCkgPj4gMTg7CiAgIH0KQEAgLTMzMiwxOCArMzc4LDI1IEBACiAgIH0KIAogICBib29sIEYoKSBjb25zdCB7CisgICAgYXNzZXJ0KCFpc0FBcmNoNjQgJiYgIkZyYWdtZW50cyBhcmUgb25seSBzdXBwb3J0ZWQgb24gQVJNdjcgV2luRUgiKTsKICAgICByZXR1cm4gKChEYXRhWzBdICYgMHgwMDQwMDAwMCkgPj4gMjIpOwogICB9CiAKICAgdWludDhfdCBFcGlsb2d1ZUNvdW50KCkgY29uc3QgewotICAgIGlmIChIZWFkZXJXb3JkcygqdGhpcykgPT0gMSkKKyAgICBpZiAoSGVhZGVyV29yZHMoKnRoaXMpID09IDEpIHsKKyAgICAgIGlmIChpc0FBcmNoNjQpCisgICAgICAgIHJldHVybiAoRGF0YVswXSAmIDB4MDdDMDAwMDApID4+IDIyOwogICAgICAgcmV0dXJuIChEYXRhWzBdICYgMHgwZjgwMDAwMCkgPj4gMjM7CisgICAgfQogICAgIHJldHVybiBEYXRhWzFdICYgMHgwMDAwZmZmZjsKICAgfQogCiAgIHVpbnQ4X3QgQ29kZVdvcmRzKCkgY29uc3QgewotICAgIGlmIChIZWFkZXJXb3JkcygqdGhpcykgPT0gMSkKKyAgICBpZiAoSGVhZGVyV29yZHMoKnRoaXMpID09IDEpIHsKKyAgICAgIGlmIChpc0FBcmNoNjQpCisgICAgICAgIHJldHVybiAoRGF0YVswXSAmIDB4ZjgwMDAwMDApID4+IDI3OwogICAgICAgcmV0dXJuIChEYXRhWzBdICYgMHhmMDAwMDAwMCkgPj4gMjg7CisgICAgfQogICAgIHJldHVybiAoRGF0YVsxXSAmIDB4MDBmZjAwMDApID4+IDE2OwogICB9CiAKQEAgLTM3Myw2ICs0MjYsOCBAQAogfTsKIAogaW5saW5lIHNpemVfdCBIZWFkZXJXb3Jkcyhjb25zdCBFeGNlcHRpb25EYXRhUmVjb3JkICZYUikgeworICBpZiAoWFIuaXNBQXJjaDY0KQorICAgIHJldHVybiAoWFIuRGF0YVswXSAmIDB4ZmZjMDAwMDApID8gMSA6IDI7CiAgIHJldHVybiAoWFIuRGF0YVswXSAmIDB4ZmY4MDAwMDApID8gMSA6IDI7CiB9CiB9CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQWxpZ25PZi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FsaWduT2YuaAppbmRleCA5ZTdhNjJiLi5kMTI0MDFmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQWxpZ25PZi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BbGlnbk9mLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBBbGlnbk9mLmggLSBQb3J0YWJsZSBjYWxjdWxhdGlvbiBvZiB0eXBlIGFsaWdubWVudCAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BbGxvY2F0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BbGxvY2F0b3IuaAppbmRleCBiMWIzNTE4Li4wOWU5NjdiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQWxsb2NhdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FsbG9jYXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEFsbG9jYXRvci5oIC0gU2ltcGxlIG1lbW9yeSBhbGxvY2F0aW9uIGFic3RyYWN0aW9uIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpAQCAtMzExLDYgKzMxMCwzMyBAQAogICAgIHJldHVybiBOb25lOwogICB9CiAKKyAgLy8vIEEgd3JhcHBlciBhcm91bmQgaWRlbnRpZnlPYmplY3QgdGhhdCBhZGRpdGlvbmFsbHkgYXNzZXJ0cyB0aGF0CisgIC8vLyB0aGUgb2JqZWN0IGlzIGluZGVlZCB3aXRoaW4gdGhlIGFsbG9jYXRvci4KKyAgLy8vIFxyZXR1cm4gQW4gaW5kZXggdW5pcXVlbHkgYW5kIHJlcHJvZHVjaWJseSBpZGVudGlmeWluZworICAvLy8gYW4gaW5wdXQgcG9pbnRlciBccCBQdHIgaW4gdGhlIGdpdmVuIGFsbG9jYXRvci4KKyAgaW50NjRfdCBpZGVudGlmeUtub3duT2JqZWN0KGNvbnN0IHZvaWQgKlB0cikgeworICAgIE9wdGlvbmFsPGludDY0X3Q+IE91dCA9IGlkZW50aWZ5T2JqZWN0KFB0cik7CisgICAgYXNzZXJ0KE91dCAmJiAiV3JvbmcgYWxsb2NhdG9yIHVzZWQiKTsKKyAgICByZXR1cm4gKk91dDsKKyAgfQorCisgIC8vLyBBIHdyYXBwZXIgYXJvdW5kIGlkZW50aWZ5S25vd25PYmplY3QuIEFjY2VwdHMgdHlwZSBpbmZvcm1hdGlvbgorICAvLy8gYWJvdXQgdGhlIG9iamVjdCBhbmQgcHJvZHVjZXMgYSBzbWFsbGVyIGlkZW50aWZpZXIgYnkgcmVseWluZyBvbgorICAvLy8gdGhlIGFsaWdubWVudCBpbmZvcm1hdGlvbi4gTm90ZSB0aGF0IHN1Yi1jbGFzc2VzIG1heSBoYXZlIGRpZmZlcmVudAorICAvLy8gYWxpZ25tZW50LCBzbyB0aGUgbW9zdCBiYXNlIGNsYXNzIHNob3VsZCBiZSBwYXNzZWQgYXMgdGVtcGxhdGUgcGFyYW1ldGVyCisgIC8vLyBpbiBvcmRlciB0byBvYnRhaW4gY29ycmVjdCByZXN1bHRzLiBGb3IgdGhhdCByZWFzb24gYXV0b21hdGljIHRlbXBsYXRlCisgIC8vLyBwYXJhbWV0ZXIgZGVkdWN0aW9uIGlzIGRpc2FibGVkLgorICAvLy8gXHJldHVybiBBbiBpbmRleCB1bmlxdWVseSBhbmQgcmVwcm9kdWNpYmx5IGlkZW50aWZ5aW5nCisgIC8vLyBhbiBpbnB1dCBwb2ludGVyIFxwIFB0ciBpbiB0aGUgZ2l2ZW4gYWxsb2NhdG9yLiBUaGlzIGlkZW50aWZpZXIgaXMKKyAgLy8vIGRpZmZlcmVudCBmcm9tIHRoZSBvbmVzIHByb2R1Y2VkIGJ5IGlkZW50aWZ5T2JqZWN0IGFuZAorICAvLy8gaWRlbnRpZnlBbGlnbmVkT2JqZWN0LgorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgaW50NjRfdCBpZGVudGlmeUtub3duQWxpZ25lZE9iamVjdChjb25zdCB2b2lkICpQdHIpIHsKKyAgICBpbnQ2NF90IE91dCA9IGlkZW50aWZ5S25vd25PYmplY3QoUHRyKTsKKyAgICBhc3NlcnQoT3V0ICUgYWxpZ25vZihUKSA9PSAwICYmICJXcm9uZyBhbGlnbm1lbnQgaW5mb3JtYXRpb24iKTsKKyAgICByZXR1cm4gT3V0IC8gYWxpZ25vZihUKTsKKyAgfQorCiAgIHNpemVfdCBnZXRUb3RhbE1lbW9yeSgpIGNvbnN0IHsKICAgICBzaXplX3QgVG90YWxNZW1vcnkgPSAwOwogICAgIGZvciAoYXV0byBJID0gU2xhYnMuYmVnaW4oKSwgRSA9IFNsYWJzLmVuZCgpOyBJICE9IEU7ICsrSSkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BcnJheVJlY3ljbGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQXJyYXlSZWN5Y2xlci5oCmluZGV4IDY4Njk2YmUuLjUyNTZjZTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BcnJheVJlY3ljbGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0FycmF5UmVjeWNsZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIGxsdm0vU3VwcG9ydC9BcnJheVJlY3ljbGVyLmggLSBSZWN5Y2xpbmcgb2YgQXJyYXlzIC0tLS0tLS0tLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0F0b21pYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0F0b21pYy5oCmluZGV4IDU1MjMxM2YuLmE4NDQ1ZmQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BdG9taWMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQXRvbWljLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L0F0b21pYy5oIC0gQXRvbWljIE9wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQXRvbWljT3JkZXJpbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BdG9taWNPcmRlcmluZy5oCmluZGV4IGE2NzlhYjMuLjc2M2JjM2UgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BdG9taWNPcmRlcmluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9BdG9taWNPcmRlcmluZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL1N1cHBvcnQvQXRvbWljT3JkZXJpbmcuaCAtLS1BdG9taWMgT3JkZXJpbmctLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0JpbmFyeUJ5dGVTdHJlYW0uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CaW5hcnlCeXRlU3RyZWFtLmgKaW5kZXggOTgwOGQzYi4uN2FjY2U5YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0JpbmFyeUJ5dGVTdHJlYW0uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQmluYXJ5Qnl0ZVN0cmVhbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEJpbmFyeUJ5dGVTdHJlYW0uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gQSBCaW5hcnlTdHJlYW0gd2hpY2ggc3RvcmVzIGRhdGEgaW4gYSBzaW5nbGUgY29udGluZ3VvdXMgbWVtb3J5IGJ1ZmZlci4KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQmluYXJ5SXRlbVN0cmVhbS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0JpbmFyeUl0ZW1TdHJlYW0uaAppbmRleCAyNzg3MjNkLi40Y2Q2NmFkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQmluYXJ5SXRlbVN0cmVhbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CaW5hcnlJdGVtU3RyZWFtLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQmluYXJ5SXRlbVN0cmVhbS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQmluYXJ5U3RyZWFtLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQmluYXJ5U3RyZWFtLmgKaW5kZXggNzY3NzIxNC4uZmNmNDM5OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0JpbmFyeVN0cmVhbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CaW5hcnlTdHJlYW0uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBCaW5hcnlTdHJlYW0uaCAtIEJhc2UgaW50ZXJmYWNlIGZvciBhIHN0cmVhbSBvZiBkYXRhIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CaW5hcnlTdHJlYW1BcnJheS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0JpbmFyeVN0cmVhbUFycmF5LmgKaW5kZXggZDE1NzFjYi4uOTZkMDlkYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0JpbmFyeVN0cmVhbUFycmF5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0JpbmFyeVN0cmVhbUFycmF5LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQmluYXJ5U3RyZWFtQXJyYXkuaCAtIEFycmF5IGJhY2tlZCBieSBhbiBhcmJpdHJhcnkgc3RyZWFtICotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC05NiwyMSArOTUsMzIgQEAKIAogICBleHBsaWNpdCBWYXJTdHJlYW1BcnJheShjb25zdCBFeHRyYWN0b3IgJkUpIDogRShFKSB7fQogCi0gIGV4cGxpY2l0IFZhclN0cmVhbUFycmF5KEJpbmFyeVN0cmVhbVJlZiBTdHJlYW0pIDogU3RyZWFtKFN0cmVhbSkge30KKyAgZXhwbGljaXQgVmFyU3RyZWFtQXJyYXkoQmluYXJ5U3RyZWFtUmVmIFN0cmVhbSwgdWludDMyX3QgU2tldyA9IDApCisgICAgICA6IFN0cmVhbShTdHJlYW0pLCBTa2V3KFNrZXcpIHt9CiAKLSAgVmFyU3RyZWFtQXJyYXkoQmluYXJ5U3RyZWFtUmVmIFN0cmVhbSwgY29uc3QgRXh0cmFjdG9yICZFKQotICAgICAgOiBTdHJlYW0oU3RyZWFtKSwgRShFKSB7fQorICBWYXJTdHJlYW1BcnJheShCaW5hcnlTdHJlYW1SZWYgU3RyZWFtLCBjb25zdCBFeHRyYWN0b3IgJkUsIHVpbnQzMl90IFNrZXcgPSAwKQorICAgICAgOiBTdHJlYW0oU3RyZWFtKSwgRShFKSwgU2tldyhTa2V3KSB7fQogCiAgIEl0ZXJhdG9yIGJlZ2luKGJvb2wgKkhhZEVycm9yID0gbnVsbHB0cikgY29uc3QgewotICAgIHJldHVybiBJdGVyYXRvcigqdGhpcywgRSwgSGFkRXJyb3IpOworICAgIHJldHVybiBJdGVyYXRvcigqdGhpcywgRSwgU2tldywgbnVsbHB0cik7CiAgIH0KIAogICBib29sIHZhbGlkKCkgY29uc3QgeyByZXR1cm4gU3RyZWFtLnZhbGlkKCk7IH0KIAorICB1aW50MzJfdCBza2V3KCkgY29uc3QgeyByZXR1cm4gU2tldzsgfQogICBJdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBJdGVyYXRvcihFKTsgfQogCiAgIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiBTdHJlYW0uZ2V0TGVuZ3RoKCkgPT0gMDsgfQogCisgIFZhclN0cmVhbUFycmF5PFZhbHVlVHlwZSwgRXh0cmFjdG9yPiBzdWJzdHJlYW0odWludDMyX3QgQmVnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgRW5kKSBjb25zdCB7CisgICAgYXNzZXJ0KEJlZ2luID49IFNrZXcpOworICAgIC8vIFdlIHNob3VsZCBuZXZlciBjdXQgb2ZmIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmVhbSBzaW5jZSBpdCBtaWdodCBiZQorICAgIC8vIHNrZXdlZCwgbWVhbmluZyB0aGUgaW5pdGlhbCBieXRlcyBhcmUgaW1wb3J0YW50LgorICAgIEJpbmFyeVN0cmVhbVJlZiBOZXdTdHJlYW0gPSBTdHJlYW0uc2xpY2UoMCwgRW5kKTsKKyAgICByZXR1cm4ge05ld1N0cmVhbSwgRSwgQmVnaW59OworICB9CisKICAgLy8vIGdpdmVuIGFuIG9mZnNldCBpbnRvIHRoZSBhcnJheSdzIHVuZGVybHlpbmcgc3RyZWFtLCByZXR1cm4gYW4KICAgLy8vIGl0ZXJhdG9yIHRvIHRoZSByZWNvcmQgYXQgdGhhdCBvZmZzZXQuICBUaGlzIGlzIGNvbnNpZGVyZWQgdW5zYWZlCiAgIC8vLyBzaW5jZSB0aGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmIFxwIE9mZnNldCBkb2VzIG5vdCByZWZlciB0byB0aGUKQEAgLTEyMywxMSArMTMzLDE3IEBACiAgIEV4dHJhY3RvciAmZ2V0RXh0cmFjdG9yKCkgeyByZXR1cm4gRTsgfQogCiAgIEJpbmFyeVN0cmVhbVJlZiBnZXRVbmRlcmx5aW5nU3RyZWFtKCkgY29uc3QgeyByZXR1cm4gU3RyZWFtOyB9Ci0gIHZvaWQgc2V0VW5kZXJseWluZ1N0cmVhbShCaW5hcnlTdHJlYW1SZWYgUykgeyBTdHJlYW0gPSBTOyB9CisgIHZvaWQgc2V0VW5kZXJseWluZ1N0cmVhbShCaW5hcnlTdHJlYW1SZWYgUywgdWludDMyX3QgU2tldyA9IDApIHsKKyAgICBTdHJlYW0gPSBTOworICAgIHRoaXMtPlNrZXcgPSBTa2V3OworICB9CisKKyAgdm9pZCBkcm9wX2Zyb250KCkgeyBTa2V3ICs9IGJlZ2luKCktPmxlbmd0aCgpOyB9CiAKIHByaXZhdGU6CiAgIEJpbmFyeVN0cmVhbVJlZiBTdHJlYW07CiAgIEV4dHJhY3RvciBFOworICB1aW50MzJfdCBTa2V3OwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUgRXh0cmFjdG9yPgpAQCAtMTM5LDEwICsxNTUsNiBAQAogCiBwdWJsaWM6CiAgIFZhclN0cmVhbUFycmF5SXRlcmF0b3IoY29uc3QgQXJyYXlUeXBlICZBcnJheSwgY29uc3QgRXh0cmFjdG9yICZFLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKkhhZEVycm9yKQotICAgICAgOiBWYXJTdHJlYW1BcnJheUl0ZXJhdG9yKEFycmF5LCBFLCAwLCBIYWRFcnJvcikge30KLQotICBWYXJTdHJlYW1BcnJheUl0ZXJhdG9yKGNvbnN0IEFycmF5VHlwZSAmQXJyYXksIGNvbnN0IEV4dHJhY3RvciAmRSwKICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBPZmZzZXQsIGJvb2wgKkhhZEVycm9yKQogICAgICAgOiBJdGVyUmVmKEFycmF5LlN0cmVhbS5kcm9wX2Zyb250KE9mZnNldCkpLCBFeHRyYWN0KEUpLAogICAgICAgICBBcnJheSgmQXJyYXkpLCBBYnNPZmZzZXQoT2Zmc2V0KSwgSGFkRXJyb3IoSGFkRXJyb3IpIHsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CaW5hcnlTdHJlYW1FcnJvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0JpbmFyeVN0cmVhbUVycm9yLmgKaW5kZXggN2Q5Njk5ZC4uY2Y2ZTAzNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0JpbmFyeVN0cmVhbUVycm9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0JpbmFyeVN0cmVhbUVycm9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQmluYXJ5U3RyZWFtRXJyb3IuaCAtIEVycm9yIGV4dGVuc2lvbnMgZm9yIEJpbmFyeSBTdHJlYW1zICotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQmluYXJ5U3RyZWFtUmVhZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQmluYXJ5U3RyZWFtUmVhZGVyLmgKaW5kZXggZmU3N2I1NS4uMzJlNTcyOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0JpbmFyeVN0cmVhbVJlYWRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CaW5hcnlTdHJlYW1SZWFkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBCaW5hcnlTdHJlYW1SZWFkZXIuaCAtIFJlYWRzIG9iamVjdHMgZnJvbSBhIGJpbmFyeSBzdHJlYW0gKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTIwMywxMSArMjAyLDEyIEBACiAgIC8vLyBccmV0dXJucyBhIHN1Y2Nlc3MgZXJyb3IgY29kZSBpZiB0aGUgZGF0YSB3YXMgc3VjY2Vzc2Z1bGx5IHJlYWQsIG90aGVyd2lzZQogICAvLy8gcmV0dXJucyBhbiBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLSAgRXJyb3IgcmVhZEFycmF5KFZhclN0cmVhbUFycmF5PFQsIFU+ICZBcnJheSwgdWludDMyX3QgU2l6ZSkgeworICBFcnJvciByZWFkQXJyYXkoVmFyU3RyZWFtQXJyYXk8VCwgVT4gJkFycmF5LCB1aW50MzJfdCBTaXplLAorICAgICAgICAgICAgICAgICAgdWludDMyX3QgU2tldyA9IDApIHsKICAgICBCaW5hcnlTdHJlYW1SZWYgUzsKICAgICBpZiAoYXV0byBFQyA9IHJlYWRTdHJlYW1SZWYoUywgU2l6ZSkpCiAgICAgICByZXR1cm4gRUM7Ci0gICAgQXJyYXkuc2V0VW5kZXJseWluZ1N0cmVhbShTKTsKKyAgICBBcnJheS5zZXRVbmRlcmx5aW5nU3RyZWFtKFMsIFNrZXcpOwogICAgIHJldHVybiBFcnJvcjo6c3VjY2VzcygpOwogICB9CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CaW5hcnlTdHJlYW1SZWYuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CaW5hcnlTdHJlYW1SZWYuaAppbmRleCBkOGRjMTM5Li43NDI3YjhkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQmluYXJ5U3RyZWFtUmVmLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0JpbmFyeVN0cmVhbVJlZi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEJpbmFyeVN0cmVhbVJlZi5oIC0gQSBjb3B5YWJsZSByZWZlcmVuY2UgdG8gYSBzdHJlYW0gLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0JpbmFyeVN0cmVhbVdyaXRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0JpbmFyeVN0cmVhbVdyaXRlci5oCmluZGV4IDZlOGE2OGEuLmFlMDE5YzggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CaW5hcnlTdHJlYW1Xcml0ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQmluYXJ5U3RyZWFtV3JpdGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQmluYXJ5U3RyZWFtV3JpdGVyLmggLSBXcml0ZXMgb2JqZWN0cyB0byBhIEJpbmFyeVN0cmVhbSAtLS0qLSBDKystKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQmxvY2tGcmVxdWVuY3kuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CbG9ja0ZyZXF1ZW5jeS5oCmluZGV4IDRiNDY4ZjcuLjE4ZmI2MGUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CbG9ja0ZyZXF1ZW5jeS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CbG9ja0ZyZXF1ZW5jeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tLS0tLSBCbG9ja0ZyZXF1ZW5jeS5oIC0gQmxvY2sgRnJlcXVlbmN5IFdyYXBwZXIgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQnJhbmNoUHJvYmFiaWxpdHkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CcmFuY2hQcm9iYWJpbGl0eS5oCmluZGV4IDNhODhlNzEuLmRkMGFiYTAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CcmFuY2hQcm9iYWJpbGl0eS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CcmFuY2hQcm9iYWJpbGl0eS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEJyYW5jaFByb2JhYmlsaXR5LmggLSBCcmFuY2ggUHJvYmFiaWxpdHkgV3JhcHBlciAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQnVyeVBvaW50ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9CdXJ5UG9pbnRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NmE1YjcKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQnVyeVBvaW50ZXIuaApAQCAtMCwwICsxLDI5IEBACisvLz09PS0gbGx2bS9TdXBwb3J0L0J1cnlQb2ludGVyLmggLSBNZW1vcnkgTWFuaXB1bGF0aW9uL0xlYWsgLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fU1VQUE9SVF9CVVJZUE9JTlRFUl9ICisjZGVmaW5lIExMVk1fU1VQUE9SVF9CVVJZUE9JTlRFUl9ICisKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVzcGFjZSBsbHZtIHsKKworLy8gSW4gdG9vbHMgdGhhdCB3aWxsIGV4aXQgc29vbiBhbnl3YXksIGdvaW5nIHRocm91Z2ggdGhlIHByb2Nlc3Mgb2YgZXhwbGljaXRseQorLy8gZGVhbGxvY2F0aW5nIHJlc291cmNlcyBjYW4gYmUgdW5uZWNlc3NhcnkgLSBiZXR0ZXIgdG8gbGVhayB0aGUgcmVzb3VyY2VzIGFuZAorLy8gbGV0IHRoZSBPUyBjbGVhbiB0aGVtIHVwIHdoZW4gdGhlIHByb2Nlc3MgZW5kcy4gVXNlIHRoaXMgZnVuY3Rpb24gdG8gZW5zdXJlCisvLyB0aGUgbWVtb3J5IGlzIG5vdCBtaXNkaWFnbm9zZWQgYXMgYW4gdW5pbnRlbnRpb25hbCBsZWFrIGJ5IGxlYWsgZGV0ZWN0aW9uCisvLyB0b29scyAodGhpcyBpcyBhY2hpZXZlZCBieSBwcmVzZXJ2aW5nIHBvaW50ZXJzIHRvIHRoZSBvYmplY3QgaW4gYSBnbG9iYWxseQorLy8gdmlzaWJsZSBhcnJheSkuCit2b2lkIEJ1cnlQb2ludGVyKGNvbnN0IHZvaWQgKlB0cik7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBCdXJ5UG9pbnRlcihzdGQ6OnVuaXF1ZV9wdHI8VD4gUHRyKSB7CisgIEJ1cnlQb2ludGVyKFB0ci5yZWxlYXNlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NCaW5kaW5nV3JhcHBpbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9DQmluZGluZ1dyYXBwaW5nLmgKaW5kZXggZjYwZjk5ZC4uNDZkNmI0ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NCaW5kaW5nV3JhcHBpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ0JpbmRpbmdXcmFwcGluZy5oCkBAIC0xLDkgKzEsOCBAQAotLy89PT0tIGxsdm0vU3VwcG9ydC9DQmluZGluZ1dyYXBwaC5oIC0gQyBJbnRlcmZhY2UgV3JhcHBpbmcgLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vPT09LSBsbHZtL1N1cHBvcnQvQ0JpbmRpbmdXcmFwcGluZy5oIC0gQyBJbnRlcmZhY2UgV3JhcHBpbmcgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NGR1VwZGF0ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NGR1VwZGF0ZS5oCmluZGV4IDYzYzI0YTMuLmVlYWY1ZDAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9DRkdVcGRhdGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ0ZHVXBkYXRlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ0ZHVXBkYXRlLmggLSBFbmNvZGUgYSBDRkcgRWRnZSBVcGRhdGUuIC0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9DT00uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9DT00uaAppbmRleCBhMmQ1YTdhLi5kNTk5NjZmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ09NLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NPTS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vU3VwcG9ydC9DT00uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NhY2hlUHJ1bmluZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NhY2hlUHJ1bmluZy5oCmluZGV4IGNmM2Y4ZWMuLmE3MmE4NjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9DYWNoZVBydW5pbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ2FjaGVQcnVuaW5nLmgKQEAgLTEsOSArMSw4IEBACiAvLz0tIENhY2hlUHJ1bmluZy5oIC0gSGVscGVyIHRvIG1hbmFnZSB0aGUgcHJ1bmluZyBvZiBhIGNhY2hlIGRpciAtKi0gQysrIC0qLT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9DYXBhY2l0eS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NhcGFjaXR5LmgKaW5kZXggNzQ2MGY5OC4uNmI5OWUwYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NhcGFjaXR5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NhcGFjaXR5LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBDYXBhY2l0eS5oIC0gR2VuZXJpYyBjb21wdXRhdGlvbiBvZiBBRFQgbWVtb3J5IHVzZSAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9DYXN0aW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ2FzdGluZy5oCmluZGV4IDNmMjFlMGYuLmNkZGVlMzYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9DYXN0aW5nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0Nhc3RpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1N1cHBvcnQvQ2FzdGluZy5oIC0gQWxsb3cgZmxleGlibGUsIGNoZWNrZWQsIGNhc3RzIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NoZWNrZWRBcml0aG1ldGljLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ2hlY2tlZEFyaXRobWV0aWMuaAppbmRleCAwMzljMzc0Li44ZjdmYmRlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ2hlY2tlZEFyaXRobWV0aWMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ2hlY2tlZEFyaXRobWV0aWMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tLSBsbHZtL1N1cHBvcnQvQ2hlY2tlZEFyaXRobWV0aWMuaCAtIFNhZmUgYXJpdGhtZXRpY2FsIG9wZXJhdGlvbnMgKi0gQysrIC8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0Nocm9uby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0Nocm9uby5oCmluZGV4IDk5NDA2OGEuLjMzNGFiNjAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9DaHJvbm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ2hyb25vLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L0Nocm9uby5oIC0gVXRpbGl0aWVzIGZvciBUaW1pbmcgTWFuaXB1bGF0aW9uLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0zNCwxOSArMzMsMjcgQEAKIHVzaW5nIFRpbWVQb2ludCA9IHN0ZDo6Y2hyb25vOjp0aW1lX3BvaW50PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2ssIEQ+OwogCiAvLy8gQ29udmVydCBhIFRpbWVQb2ludCB0byBzdGQ6OnRpbWVfdAotTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBpbmxpbmUgc3RkOjp0aW1lX3QgdG9UaW1lVChUaW1lUG9pbnQ8PiBUUCkgeworaW5saW5lIHN0ZDo6dGltZV90IHRvVGltZVQoVGltZVBvaW50PD4gVFApIHsKICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwogICByZXR1cm4gc3lzdGVtX2Nsb2NrOjp0b190aW1lX3QoCiAgICAgICB0aW1lX3BvaW50X2Nhc3Q8c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50OjpkdXJhdGlvbj4oVFApKTsKIH0KIAogLy8vIENvbnZlcnQgYSBzdGQ6OnRpbWVfdCB0byBhIFRpbWVQb2ludAotTExWTV9BVFRSSUJVVEVfQUxXQVlTX0lOTElORSBpbmxpbmUgVGltZVBvaW50PHN0ZDo6Y2hyb25vOjpzZWNvbmRzPgoraW5saW5lIFRpbWVQb2ludDxzdGQ6OmNocm9ubzo6c2Vjb25kcz4KIHRvVGltZVBvaW50KHN0ZDo6dGltZV90IFQpIHsKICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwogICByZXR1cm4gdGltZV9wb2ludF9jYXN0PHNlY29uZHM+KHN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoVCkpOwogfQogCisvLy8gQ29udmVydCBhIHN0ZDo6dGltZV90ICsgbmFub3NlY29uZHMgdG8gYSBUaW1lUG9pbnQKK2lubGluZSBUaW1lUG9pbnQ8PgordG9UaW1lUG9pbnQoc3RkOjp0aW1lX3QgVCwgdWludDMyX3QgbnNlYykgeworICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CisgIHJldHVybiB0aW1lX3BvaW50X2Nhc3Q8bmFub3NlY29uZHM+KHN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoVCkpCisgICAgKyBuYW5vc2Vjb25kcyhuc2VjKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ugc3lzCiAKIHJhd19vc3RyZWFtICZvcGVyYXRvcjw8KHJhd19vc3RyZWFtICZPUywgc3lzOjpUaW1lUG9pbnQ8PiBUUCk7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ29kZUdlbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NvZGVHZW4uaAppbmRleCBjZTNhNjIzLi4zMTc1YjI5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ29kZUdlbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Db2RlR2VuLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vU3VwcG9ydC9Db2RlR2VuLmggLSBDb2RlR2VuIENvbmNlcHRzIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTUwLDEzICs0OSwxOCBAQAogICAvLyBDb2RlIGdlbmVyYXRpb24gb3B0aW1pemF0aW9uIGxldmVsLgogICBuYW1lc3BhY2UgQ29kZUdlbk9wdCB7CiAgICAgZW51bSBMZXZlbCB7Ci0gICAgICBOb25lLCAgICAgICAgLy8gLU8wCi0gICAgICBMZXNzLCAgICAgICAgLy8gLU8xCi0gICAgICBEZWZhdWx0LCAgICAgLy8gLU8yLCAtT3MKLSAgICAgIEFnZ3Jlc3NpdmUgICAvLyAtTzMKKyAgICAgIE5vbmUgPSAwLCAgICAgIC8vIC1PMAorICAgICAgTGVzcyA9IDEsICAgICAgLy8gLU8xCisgICAgICBEZWZhdWx0ID0gMiwgICAvLyAtTzIsIC1PcworICAgICAgQWdncmVzc2l2ZSA9IDMgLy8gLU8zCiAgICAgfTsKICAgfQogCisgIC8vIFNwZWNpZnkgZWZmZWN0IG9mIGZyYW1lIHBvaW50ZXIgZWxpbWluYXRpb24gb3B0aW1pemF0aW9uLgorICBuYW1lc3BhY2UgRnJhbWVQb2ludGVyIHsKKyAgICBlbnVtIEZQIHtBbGwsIE5vbkxlYWYsIE5vbmV9OworICB9CisKIH0gIC8vIGVuZCBsbHZtIG5hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Db2RlR2VuQ292ZXJhZ2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Db2RlR2VuQ292ZXJhZ2UuaAppbmRleCBjODYzYmUzLi4wYjFhZjc3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ29kZUdlbkNvdmVyYWdlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NvZGVHZW5Db3ZlcmFnZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PSBsbHZtL1N1cHBvcnQvQ29kZUdlbkNvdmVyYWdlLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZSBUaGlzIGZpbGUgcHJvdmlkZXMgcnVsZSBjb3ZlcmFnZSB0cmFja2luZyBmb3IgdGFibGVnZW4tZXJhdGVkIENvZGVHZW4uCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ29tbWFuZExpbmUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Db21tYW5kTGluZS5oCmluZGV4IDc5OWI0MWYuLmE3ODAyMGYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Db21tYW5kTGluZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Db21tYW5kTGluZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vU3VwcG9ydC9Db21tYW5kTGluZS5oIC0gQ29tbWFuZCBsaW5lIGhhbmRsZXIgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC01Niw5ICs1NSwxOCBAQAogLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuIE90aGVyd2lzZSwgdGhpcyB3aWxsIHByaW50IHRoZSBlcnJvciBtZXNzYWdlIHRvCiAvLyBzdGRlcnIgYW5kIGV4aXQgaWYgXHAgRXJycyBpcyBub3Qgc2V0IChudWxscHRyIGJ5IGRlZmF1bHQpLCBvciBwcmludCB0aGUKIC8vIGVycm9yIG1lc3NhZ2UgdG8gXHAgRXJycyBhbmQgcmV0dXJuIGZhbHNlIGlmIFxwIEVycnMgaXMgcHJvdmlkZWQuCisvLworLy8gSWYgRW52VmFyIGlzIG5vdCBudWxscHRyLCBjb21tYW5kLWxpbmUgb3B0aW9ucyBhcmUgYWxzbyBwYXJzZWQgZnJvbSB0aGUKKy8vIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVkIGJ5IEVudlZhci4gIFByZWNlZGVuY2UgaXMgZ2l2ZW4gdG8gb2NjdXJyZW5jZXMKKy8vIGZyb20gYXJndi4gIFRoaXMgcHJlY2VkZW5jZSBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgYnkgcGFyc2luZyBhcmd2IGFmdGVyCisvLyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUsIHNvIGl0IGlzIG9ubHkgaW1wbGVtZW50ZWQgY29ycmVjdGx5IGZvciBvcHRpb25zCisvLyB0aGF0IGdpdmUgcHJlY2VkZW5jZSB0byBsYXRlciBvY2N1cnJlbmNlcy4gIElmIHlvdXIgcHJvZ3JhbSBzdXBwb3J0cyBvcHRpb25zCisvLyB0aGF0IGdpdmUgcHJlY2VkZW5jZSB0byBlYXJsaWVyIG9jY3VycmVuY2VzLCB5b3Ugd2lsbCBuZWVkIHRvIGV4dGVuZCB0aGlzCisvLyBmdW5jdGlvbiB0byBzdXBwb3J0IGl0IGNvcnJlY3RseS4KIGJvb2wgUGFyc2VDb21tYW5kTGluZU9wdGlvbnMoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmNvbnN0ICphcmd2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdSZWYgT3ZlcnZpZXcgPSAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3X29zdHJlYW0gKkVycnMgPSBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3X29zdHJlYW0gKkVycnMgPSBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpFbnZWYXIgPSBudWxscHRyKTsKIAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vIFBhcnNlRW52aXJvbm1lbnRPcHRpb25zIC0gRW52aXJvbm1lbnQgdmFyaWFibGUgb3B0aW9uIHByb2Nlc3NpbmcgYWx0ZXJuYXRlCkBAIC0xNDcsNiArMTU1LDkgQEAKIC8vIGVuYWJsZWQsIGFuZCB1c2VkLCB0aGUgdmFsdWUgZm9yIHRoZSBmbGFnIGNvbWVzIGZyb20gdGhlIHN1ZmZpeCBvZiB0aGUKIC8vIGFyZ3VtZW50LgogLy8KKy8vIEFsd2F5c1ByZWZpeCAtIE9ubHkgYWxsb3cgdGhlIGJlaGF2aW9yIGVuYWJsZWQgYnkgdGhlIFByZWZpeCBmbGFnIGFuZCByZWplY3QKKy8vIHRoZSBPcHRpb249VmFsdWUgZm9ybS4KKy8vCiAvLyBHcm91cGluZyAtIFdpdGggdGhpcyBvcHRpb24gZW5hYmxlZCwgbXVsdGlwbGUgbGV0dGVyIG9wdGlvbnMgYXJlIGFsbG93ZWQgdG8KIC8vIGJ1bmNoIHRvZ2V0aGVyIHdpdGggb25seSBhIHNpbmdsZSBoeXBoZW4gZm9yIHRoZSB3aG9sZSBncm91cC4gIFRoaXMgYWxsb3dzCiAvLyBlbXVsYXRpb24gb2YgdGhlIGJlaGF2aW9yIHRoYXQgbHMgdXNlcyBmb3IgZXhhbXBsZTogbHMgLWxhID09PSBscyAtbCAtYQpAQCAtMTU2LDcgKzE2Nyw4IEBACiAgIE5vcm1hbEZvcm1hdHRpbmcgPSAweDAwLCAvLyBOb3RoaW5nIHNwZWNpYWwKICAgUG9zaXRpb25hbCA9IDB4MDEsICAgICAgIC8vIElzIGEgcG9zaXRpb25hbCBhcmd1bWVudCwgbm8gJy0nIHJlcXVpcmVkCiAgIFByZWZpeCA9IDB4MDIsICAgICAgICAgICAvLyBDYW4gdGhpcyBvcHRpb24gZGlyZWN0bHkgcHJlZml4IGl0cyB2YWx1ZT8KLSAgR3JvdXBpbmcgPSAweDAzICAgICAgICAgIC8vIENhbiB0aGlzIG9wdGlvbiBncm91cCB3aXRoIG90aGVyIG9wdGlvbnM/CisgIEFsd2F5c1ByZWZpeCA9IDB4MDMsICAgICAvLyBDYW4gdGhpcyBvcHRpb24gb25seSBkaXJlY3RseSBwcmVmaXggaXRzIHZhbHVlPworICBHcm91cGluZyA9IDB4MDQgICAgICAgICAgLy8gQ2FuIHRoaXMgb3B0aW9uIGdyb3VwIHdpdGggb3RoZXIgb3B0aW9ucz8KIH07CiAKIGVudW0gTWlzY0ZsYWdzIHsgICAgICAgICAgICAgLy8gTWlzY2VsbGFuZW91cyBmbGFncyB0byBhZGp1c3QgYXJndW1lbnQKQEAgLTI1Niw3ICsyNjgsNyBAQAogICAvLyBkZXRhaWwgcmVwcmVzZW50aW5nIHRoZSBub24tdmFsdWUKICAgdW5zaWduZWQgVmFsdWUgOiAyOwogICB1bnNpZ25lZCBIaWRkZW5GbGFnIDogMjsgLy8gZW51bSBPcHRpb25IaWRkZW4KLSAgdW5zaWduZWQgRm9ybWF0dGluZyA6IDI7IC8vIGVudW0gRm9ybWF0dGluZ0ZsYWdzCisgIHVuc2lnbmVkIEZvcm1hdHRpbmcgOiAzOyAvLyBlbnVtIEZvcm1hdHRpbmdGbGFncwogICB1bnNpZ25lZCBNaXNjIDogMzsKICAgdW5zaWduZWQgUG9zaXRpb24gPSAwOyAgICAgICAvLyBQb3NpdGlvbiBvZiBsYXN0IG9jY3VycmVuY2Ugb2YgdGhlIG9wdGlvbgogICB1bnNpZ25lZCBBZGRpdGlvbmFsVmFscyA9IDA7IC8vIEdyZWF0ZXIgdGhhbiAwIGZvciBtdWx0aS12YWx1ZWQgb3B0aW9uLgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NvbXBpbGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ29tcGlsZXIuaAppbmRleCAxNGU0ZDZlLi5hODE0ODhhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ29tcGlsZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ29tcGlsZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9TdXBwb3J0L0NvbXBpbGVyLmggLSBDb21waWxlciBhYnN0cmFjdGlvbiBzdXBwb3J0IC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NvbXByZXNzaW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ29tcHJlc3Npb24uaAppbmRleCBmNzI1OGY0Li41YmMwZTU2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ29tcHJlc3Npb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ29tcHJlc3Npb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9TdXBwb3J0L0NvbXByZXNzaW9uLmggLS0tQ29tcHJlc3Npb24tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NvbnZlcnRVVEYuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Db252ZXJ0VVRGLmgKaW5kZXggNmFlNTZjMi4uMWFkZDE4NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0NvbnZlcnRVVEYuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ29udmVydFVURi5oCkBAIC0xLDkgKzEsOCBAQAogLyo9PT0tLS0gQ29udmVydFVURi5oIC0gVW5pdmVyc2FsIENoYXJhY3RlciBOYW1lcyBjb252ZXJzaW9ucyAtLS0tLS0tLS0tLS0tLS09PT0KICAqCi0gKiAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0gKgotICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0gKiBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisgKiBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorICogU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAgKgogICo9PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09Ki8KIC8qCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvQ3Jhc2hSZWNvdmVyeUNvbnRleHQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9DcmFzaFJlY292ZXJ5Q29udGV4dC5oCmluZGV4IDdiM2ZkNGYuLmZlYjQ0OWUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9DcmFzaFJlY292ZXJ5Q29udGV4dC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9DcmFzaFJlY292ZXJ5Q29udGV4dC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gQ3Jhc2hSZWNvdmVyeUNvbnRleHQuaCAtIENyYXNoIFJlY292ZXJ5IC0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0RKQi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0RKQi5oCmluZGV4IGUwMzExMTQuLjhhMDRhMzIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9ESkIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvREpCLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vU3VwcG9ydC9ESkIuaCAtLS1ESkIgSGFzaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9ET1RHcmFwaFRyYWl0cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0RPVEdyYXBoVHJhaXRzLmgKaW5kZXggNDM4MWI1Yi4uZWMwMWI3ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0RPVEdyYXBoVHJhaXRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0RPVEdyYXBoVHJhaXRzLmgKQEAgLTEsOSArMSw4IEBACi0vLz09PS0tIGxsdm0vU3VwcG9ydC9Eb3RHcmFwaFRyYWl0cy5oIC0gQ3VzdG9taXplIC5kb3Qgb3V0cHV0IC0tLSotIEMrKyAtKi09PT0vLworLy89PT0tLSBsbHZtL1N1cHBvcnQvRE9UR3JhcGhUcmFpdHMuaCAtIEN1c3RvbWl6ZSAuZG90IG91dHB1dCAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRGF0YUV4dHJhY3Rvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0RhdGFFeHRyYWN0b3IuaAppbmRleCAyYjE2Mzk4Li42YjA4YTJhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRGF0YUV4dHJhY3Rvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9EYXRhRXh0cmFjdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIERhdGFFeHRyYWN0b3IuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRGF0YVR5cGVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRGF0YVR5cGVzLmgKaW5kZXggYWQ2MGE1Yi4uYTNmY2M4MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0RhdGFUeXBlcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9EYXRhVHlwZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9TdXBwb3J0L0RhdGFUeXBlcy5oIC0gRGVmaW5lIGZpeGVkIHNpemUgdHlwZXMgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0RlYnVnLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRGVidWcuaAppbmRleCBkZjg2ZGJiLi42NGI3MzA5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRGVidWcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRGVidWcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1N1cHBvcnQvRGVidWcuaCAtIEVhc3kgd2F5IHRvIGFkZCBkZWJ1ZyBvdXRwdXQgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0RlYnVnQ291bnRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0RlYnVnQ291bnRlci5oCmluZGV4IDgzYmQ1YTAuLmU3ZDFmYTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9EZWJ1Z0NvdW50ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRGVidWdDb3VudGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L0RlYnVnQ291bnRlci5oIC0gRGVidWcgY291bnRlciBzdXBwb3J0IC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCkBAIC01NSw2ICs1NCw4IEBACiAKIGNsYXNzIERlYnVnQ291bnRlciB7CiBwdWJsaWM6CisgIH5EZWJ1Z0NvdW50ZXIoKTsKKwogICAvLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgc2luZ2xldG9uIGluc3RhbmNlLgogICBzdGF0aWMgRGVidWdDb3VudGVyICZpbnN0YW5jZSgpOwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRHluYW1pY0xpYnJhcnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9EeW5hbWljTGlicmFyeS5oCmluZGV4IDk1NjNiNDguLjk1ZDViYTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9EeW5hbWljTGlicmFyeS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9EeW5hbWljTGlicmFyeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL1N1cHBvcnQvRHluYW1pY0xpYnJhcnkuaCAtIFBvcnRhYmxlIER5bmFtaWMgTGlicmFyeSAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0VuZGlhbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0VuZGlhbi5oCmluZGV4IGE0ZDNmNGYuLmEwNjMyYmIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9FbmRpYW4uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRW5kaWFuLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRW5kaWFuLmggLSBVdGlsaXRpZXMgZm9yIElPIHdpdGggZW5kaWFuIHNwZWNpZmljIGRhdGEgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9FbmRpYW5TdHJlYW0uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9FbmRpYW5TdHJlYW0uaAppbmRleCA5NzQyZTI1Li44Nzg5ODAzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRW5kaWFuU3RyZWFtLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0VuZGlhblN0cmVhbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEVuZGlhblN0cmVhbS5oIC0gU3RyZWFtIG9wcyB3aXRoIGVuZGlhbiBzcGVjaWZpYyBkYXRhIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRXJyYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0VycmMuaAppbmRleCBkY2U0Mjc4Li45YmU4ZTU3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRXJyYy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9FcnJjLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L0VycmMuaCAtIERlZmluZXMgdGhlIGxsdm06OmVycmMgZW51bSAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9FcnJuby5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0Vycm5vLmgKaW5kZXggODA2OWMzNi4uYWVkYjVmYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0Vycm5vLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0Vycm5vLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L0Vycm5vLmggLSBQb3J0YWJsZStjb252ZW5pZW50IGVycm5vIGhhbmRsaW5nIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRXJyb3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9FcnJvci5oCmluZGV4IDRlMTYxOTAuLjIzYTQ4ZWQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9FcnJvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9FcnJvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vU3VwcG9ydC9FcnJvci5oIC0gUmVjb3ZlcmFibGUgZXJyb3IgaGFuZGxpbmcgLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC05NTMsMTAgKzk1MiwxNCBAQAogLy8vIHdpbGwgYmUgcHJpbnRlZCBiZWZvcmUgdGhlIGZpcnN0IG9uZSBpcyBsb2dnZWQuIEEgbmV3bGluZSB3aWxsIGJlIHByaW50ZWQKIC8vLyBhZnRlciBlYWNoIGVycm9yLgogLy8vCisvLy8gVGhpcyBmdW5jdGlvbiBpcyBjb21wYXRpYmxlIHdpdGggdGhlIGhlbHBlcnMgZnJvbSBTdXBwb3J0L1dpdGhDb2xvci5oLiBZb3UKKy8vLyBjYW4gcGFzcyBhbnkgb2YgdGhlbSBhcyB0aGUgT1MuIFBsZWFzZSBjb25zaWRlciB1c2luZyB0aGVtIGluc3RlYWQgb2YKKy8vLyBpbmNsdWRpbmcgJ2Vycm9yOiAnIGluIHRoZSBFcnJvckJhbm5lci4KKy8vLwogLy8vIFRoaXMgaXMgdXNlZnVsIGluIHRoZSBiYXNlIGxldmVsIG9mIHlvdXIgcHJvZ3JhbSB0byBhbGxvdyBjbGVhbiB0ZXJtaW5hdGlvbgogLy8vIChhbGxvd2luZyBjbGVhbiBkZWFsbG9jYXRpb24gb2YgcmVzb3VyY2VzLCBldGMuKSwgd2hpbGUgcmVwb3J0aW5nIGVycm9yCiAvLy8gaW5mb3JtYXRpb24gdG8gdGhlIHVzZXIuCi12b2lkIGxvZ0FsbFVuaGFuZGxlZEVycm9ycyhFcnJvciBFLCByYXdfb3N0cmVhbSAmT1MsIFR3aW5lIEVycm9yQmFubmVyKTsKK3ZvaWQgbG9nQWxsVW5oYW5kbGVkRXJyb3JzKEVycm9yIEUsIHJhd19vc3RyZWFtICZPUywgVHdpbmUgRXJyb3JCYW5uZXIgPSB7fSk7CiAKIC8vLyBXcml0ZSBhbGwgZXJyb3IgbWVzc2FnZXMgKGlmIGFueSkgaW4gRSB0byBhIHN0cmluZy4gVGhlIG5ld2xpbmUgY2hhcmFjdGVyCiAvLy8gaXMgdXNlZCB0byBzZXBhcmF0ZSBlcnJvciBtZXNzYWdlcy4KQEAgLTEwNjIsNiArMTA2NSw4IEBACiBjbGFzcyBFQ0Vycm9yIDogcHVibGljIEVycm9ySW5mbzxFQ0Vycm9yPiB7CiAgIGZyaWVuZCBFcnJvciBlcnJvckNvZGVUb0Vycm9yKHN0ZDo6ZXJyb3JfY29kZSk7CiAKKyAgdmlydHVhbCB2b2lkIGFuY2hvcigpIG92ZXJyaWRlOworCiBwdWJsaWM6CiAgIHZvaWQgc2V0RXJyb3JDb2RlKHN0ZDo6ZXJyb3JfY29kZSBFQykgeyB0aGlzLT5FQyA9IEVDOyB9CiAgIHN0ZDo6ZXJyb3JfY29kZSBjb252ZXJ0VG9FcnJvckNvZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBFQzsgfQpAQCAtMTE3MSw3ICsxMTc2LDcgQEAKIC8vLyBzaG93IG1vcmUgZGV0YWlsZWQgaW5mb3JtYXRpb24gdG8gdGhlIHVzZXIuCiBjbGFzcyBGaWxlRXJyb3IgZmluYWwgOiBwdWJsaWMgRXJyb3JJbmZvPEZpbGVFcnJvcj4gewogCi0gIGZyaWVuZCBFcnJvciBjcmVhdGVGaWxlRXJyb3Ioc3RkOjpzdHJpbmcsIEVycm9yKTsKKyAgZnJpZW5kIEVycm9yIGNyZWF0ZUZpbGVFcnJvcihjb25zdCBUd2luZSAmLCBFcnJvcik7CiAKIHB1YmxpYzoKICAgdm9pZCBsb2cocmF3X29zdHJlYW0gJk9TKSBjb25zdCBvdmVycmlkZSB7CkBAIC0xMTg4LDE1ICsxMTkzLDE1IEBACiAgIHN0YXRpYyBjaGFyIElEOwogCiBwcml2YXRlOgotICBGaWxlRXJyb3Ioc3RkOjpzdHJpbmcgRiwgc3RkOjp1bmlxdWVfcHRyPEVycm9ySW5mb0Jhc2U+IEUpIHsKKyAgRmlsZUVycm9yKGNvbnN0IFR3aW5lICZGLCBzdGQ6OnVuaXF1ZV9wdHI8RXJyb3JJbmZvQmFzZT4gRSkgewogICAgIGFzc2VydChFICYmICJDYW5ub3QgY3JlYXRlIEZpbGVFcnJvciBmcm9tIEVycm9yIHN1Y2Nlc3MgdmFsdWUuIik7Ci0gICAgYXNzZXJ0KCFGLmVtcHR5KCkgJiYKKyAgICBhc3NlcnQoIUYuaXNUcml2aWFsbHlFbXB0eSgpICYmCiAgICAgICAgICAgICJUaGUgZmlsZSBuYW1lIHByb3ZpZGVkIHRvIEZpbGVFcnJvciBtdXN0IG5vdCBiZSBlbXB0eS4iKTsKLSAgICBGaWxlTmFtZSA9IEY7CisgICAgRmlsZU5hbWUgPSBGLnN0cigpOwogICAgIEVyciA9IHN0ZDo6bW92ZShFKTsKICAgfQogCi0gIHN0YXRpYyBFcnJvciBidWlsZChzdGQ6OnN0cmluZyBGLCBFcnJvciBFKSB7CisgIHN0YXRpYyBFcnJvciBidWlsZChjb25zdCBUd2luZSAmRiwgRXJyb3IgRSkgewogICAgIHJldHVybiBFcnJvcihzdGQ6OnVuaXF1ZV9wdHI8RmlsZUVycm9yPihuZXcgRmlsZUVycm9yKEYsIEUudGFrZVBheWxvYWQoKSkpKTsKICAgfQogCkBAIC0xMjA2LDExICsxMjExLDE3IEBACiAKIC8vLyBDb25jYXRlbmF0ZSBhIHNvdXJjZSBmaWxlIHBhdGggYW5kL29yIG5hbWUgd2l0aCBhbiBFcnJvci4gVGhlIHJlc3VsdGluZwogLy8vIEVycm9yIGlzIHVuY2hlY2tlZC4KLWlubGluZSBFcnJvciBjcmVhdGVGaWxlRXJyb3Ioc3RkOjpzdHJpbmcgRiwgRXJyb3IgRSkgeworaW5saW5lIEVycm9yIGNyZWF0ZUZpbGVFcnJvcihjb25zdCBUd2luZSAmRiwgRXJyb3IgRSkgewogICByZXR1cm4gRmlsZUVycm9yOjpidWlsZChGLCBzdGQ6Om1vdmUoRSkpOwogfQogCi1FcnJvciBjcmVhdGVGaWxlRXJyb3Ioc3RkOjpzdHJpbmcgRiwgRXJyb3JTdWNjZXNzKSA9IGRlbGV0ZTsKKy8vLyBDb25jYXRlbmF0ZSBhIHNvdXJjZSBmaWxlIHBhdGggYW5kL29yIG5hbWUgd2l0aCBhIHN0ZDo6ZXJyb3JfY29kZSAKKy8vLyB0byBmb3JtIGFuIEVycm9yIG9iamVjdC4KK2lubGluZSBFcnJvciBjcmVhdGVGaWxlRXJyb3IoY29uc3QgVHdpbmUgJkYsIHN0ZDo6ZXJyb3JfY29kZSBFQykgeworICByZXR1cm4gY3JlYXRlRmlsZUVycm9yKEYsIGVycm9yQ29kZVRvRXJyb3IoRUMpKTsKK30KKworRXJyb3IgY3JlYXRlRmlsZUVycm9yKGNvbnN0IFR3aW5lICZGLCBFcnJvclN1Y2Nlc3MpID0gZGVsZXRlOwogCiAvLy8gSGVscGVyIGZvciBjaGVjay1hbmQtZXhpdCBlcnJvciBoYW5kbGluZy4KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0Vycm9ySGFuZGxpbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9FcnJvckhhbmRsaW5nLmgKaW5kZXggMzljYmZlZC4uZjc1YzI5OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0Vycm9ySGFuZGxpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRXJyb3JIYW5kbGluZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vU3VwcG9ydC9FcnJvckhhbmRsaW5nLmggLSBGYXRhbCBlcnJvciBoYW5kbGluZyAtLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMTIsOCArMTExLDggQEAKIC8vLyBpbiB0aGUgdW53aW5kIGNoYWluLgogLy8vCiAvLy8gSWYgbm8gZXJyb3IgaGFuZGxlciBpcyBpbnN0YWxsZWQgKGRlZmF1bHQpLCB0aGVuIGEgYmFkX2FsbG9jIGV4Y2VwdGlvbgotLy8vIGlzIHRocm93biwgaWYgTExWTSBpcyBjb21waWxlZCB3aXRoIGV4Y2VwdGlvbiBzdXBwb3J0LCBvdGhlcndpc2UgYW4gYXNzZXJ0aW9uCi0vLy8gaXMgY2FsbGVkLgorLy8vIGlzIHRocm93biwgaWYgTExWTSBpcyBjb21waWxlZCB3aXRoIGV4Y2VwdGlvbiBzdXBwb3J0LCBvdGhlcndpc2UgYW4KKy8vLyBhc3NlcnRpb24gaXMgY2FsbGVkLgogdm9pZCByZXBvcnRfYmFkX2FsbG9jX2Vycm9yKGNvbnN0IGNoYXIgKlJlYXNvbiwgYm9vbCBHZW5DcmFzaERpYWcgPSB0cnVlKTsKIAogLy8vIFRoaXMgZnVuY3Rpb24gY2FsbHMgYWJvcnQoKSwgYW5kIHByaW50cyB0aGUgb3B0aW9uYWwgbWVzc2FnZSB0byBzdGRlcnIuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRXJyb3JPci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0Vycm9yT3IuaAppbmRleCBlNmNlNzY0Li44MjExZjRkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRXJyb3JPci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9FcnJvck9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L0Vycm9yT3IuaCAtIEVycm9yIFNtYXJ0IFBvaW50ZXIgLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBMaW5rZXIKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRmlsZUNoZWNrLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRmlsZUNoZWNrLmgKaW5kZXggZGU4ZDQ2Yi4uMDFlOTM2MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0ZpbGVDaGVjay5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9GaWxlQ2hlY2suaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tLSBsbHZtL1N1cHBvcnQvRmlsZUNoZWNrLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00Myw3ICs0Miw4IEBACiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCiBuYW1lc3BhY2UgQ2hlY2sgewotZW51bSBGaWxlQ2hlY2tUeXBlIHsKKworZW51bSBGaWxlQ2hlY2tLaW5kIHsKICAgQ2hlY2tOb25lID0gMCwKICAgQ2hlY2tQbGFpbiwKICAgQ2hlY2tOZXh0LApAQCAtNTgsMTAgKzU4LDMxIEBACiAgIENoZWNrRU9GLAogCiAgIC8vLyBNYXJrcyB3aGVuIHBhcnNpbmcgZm91bmQgYSAtTk9UIGNoZWNrIGNvbWJpbmVkIHdpdGggYW5vdGhlciBDSEVDSyBzdWZmaXguCi0gIENoZWNrQmFkTm90CisgIENoZWNrQmFkTm90LAorCisgIC8vLyBNYXJrcyB3aGVuIHBhcnNpbmcgZm91bmQgYSAtQ09VTlQgZGlyZWN0aXZlIHdpdGggaW52YWxpZCBjb3VudCB2YWx1ZS4KKyAgQ2hlY2tCYWRDb3VudAorfTsKKworY2xhc3MgRmlsZUNoZWNrVHlwZSB7CisgIEZpbGVDaGVja0tpbmQgS2luZDsKKyAgaW50IENvdW50OyAvLy88IG9wdGlvbmFsIENvdW50IGZvciBzb21lIGNoZWNrcworCitwdWJsaWM6CisgIEZpbGVDaGVja1R5cGUoRmlsZUNoZWNrS2luZCBLaW5kID0gQ2hlY2tOb25lKSA6IEtpbmQoS2luZCksIENvdW50KDEpIHt9CisgIEZpbGVDaGVja1R5cGUoY29uc3QgRmlsZUNoZWNrVHlwZSAmKSA9IGRlZmF1bHQ7CisKKyAgb3BlcmF0b3IgRmlsZUNoZWNrS2luZCgpIGNvbnN0IHsgcmV0dXJuIEtpbmQ7IH0KKworICBpbnQgZ2V0Q291bnQoKSBjb25zdCB7IHJldHVybiBDb3VudDsgfQorICBGaWxlQ2hlY2tUeXBlICZzZXRDb3VudChpbnQgQyk7CisKKyAgc3RkOjpzdHJpbmcgZ2V0RGVzY3JpcHRpb24oU3RyaW5nUmVmIFByZWZpeCkgY29uc3Q7CiB9OwogfQogCitzdHJ1Y3QgRmlsZUNoZWNrRGlhZzsKKwogY2xhc3MgRmlsZUNoZWNrUGF0dGVybiB7CiAgIFNNTG9jIFBhdHRlcm5Mb2M7CiAKQEAgLTEwNSw3ICsxMjYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZ01hcDxTdHJpbmdSZWY+ICZWYXJpYWJsZVRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgIFNNUmFuZ2UgTWF0Y2hSYW5nZSA9IE5vbmUpIGNvbnN0OwogICB2b2lkIFByaW50RnV6enlNYXRjaChjb25zdCBTb3VyY2VNZ3IgJlNNLCBTdHJpbmdSZWYgQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmdNYXA8U3RyaW5nUmVmPiAmVmFyaWFibGVUYWJsZSkgY29uc3Q7CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZ01hcDxTdHJpbmdSZWY+ICZWYXJpYWJsZVRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxGaWxlQ2hlY2tEaWFnPiAqRGlhZ3MpIGNvbnN0OwogCiAgIGJvb2wgaGFzVmFyaWFibGUoKSBjb25zdCB7CiAgICAgcmV0dXJuICEoVmFyaWFibGVVc2VzLmVtcHR5KCkgJiYgVmFyaWFibGVEZWZzLmVtcHR5KCkpOwpAQCAtMTEzLDYgKzEzNSw4IEBACiAKICAgQ2hlY2s6OkZpbGVDaGVja1R5cGUgZ2V0Q2hlY2tUeSgpIGNvbnN0IHsgcmV0dXJuIENoZWNrVHk7IH0KIAorICBpbnQgZ2V0Q291bnQoKSBjb25zdCB7IHJldHVybiBDaGVja1R5LmdldENvdW50KCk7IH0KKwogcHJpdmF0ZToKICAgYm9vbCBBZGRSZWdFeFRvUmVnRXgoU3RyaW5nUmVmIFJTLCB1bnNpZ25lZCAmQ3VyUGFyZW4sIFNvdXJjZU1nciAmU00pOwogICB2b2lkIEFkZEJhY2tyZWZUb1JlZ0V4KHVuc2lnbmVkIEJhY2tyZWZOdW0pOwpAQCAtMTI0LDYgKzE0OCw1OSBAQAogfTsKIAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vLyBTdW1tYXJ5IG9mIGEgRmlsZUNoZWNrIGRpYWdub3N0aWMuCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCitzdHJ1Y3QgRmlsZUNoZWNrRGlhZyB7CisgIC8vLyBXaGF0IGlzIHRoZSBGaWxlQ2hlY2sgZGlyZWN0aXZlIGZvciB0aGlzIGRpYWdub3N0aWM/CisgIENoZWNrOjpGaWxlQ2hlY2tUeXBlIENoZWNrVHk7CisgIC8vLyBXaGVyZSBpcyB0aGUgRmlsZUNoZWNrIGRpcmVjdGl2ZSBmb3IgdGhpcyBkaWFnbm9zdGljPworICB1bnNpZ25lZCBDaGVja0xpbmUsIENoZWNrQ29sOworICAvLy8gV2hhdCB0eXBlIG9mIG1hdGNoIHJlc3VsdCBkb2VzIHRoaXMgZGlhZ25vc3RpYyBkZXNjcmliZT8KKyAgLy8vCisgIC8vLyBBIGRpcmVjdGl2ZSdzIHN1cHBsaWVkIHBhdHRlcm4gaXMgc2FpZCB0byBiZSBlaXRoZXIgZXhwZWN0ZWQgb3IgZXhjbHVkZWQKKyAgLy8vIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBwYXR0ZXJuIG11c3QgaGF2ZSBvciBtdXN0IG5vdCBoYXZlIGEgbWF0Y2ggaW4KKyAgLy8vIG9yZGVyIGZvciB0aGUgZGlyZWN0aXZlIHRvIHN1Y2NlZWQuICBGb3IgZXhhbXBsZSwgYSBDSEVDSyBkaXJlY3RpdmUncworICAvLy8gcGF0dGVybiBpcyBleHBlY3RlZCwgYW5kIGEgQ0hFQ0stTk9UIGRpcmVjdGl2ZSdzIHBhdHRlcm4gaXMgZXhjbHVkZWQuCisgIC8vLyBBbGwgbWF0Y2ggcmVzdWx0IHR5cGVzIHdob3NlIG5hbWVzIGVuZCB3aXRoICJFeGNsdWRlZCIgYXJlIGZvciBleGNsdWRlZAorICAvLy8gcGF0dGVybnMsIGFuZCBhbGwgb3RoZXJzIGFyZSBmb3IgZXhwZWN0ZWQgcGF0dGVybnMuCisgIC8vLworICAvLy8gVGhlcmUgbWlnaHQgYmUgbW9yZSB0aGFuIG9uZSBtYXRjaCByZXN1bHQgZm9yIGEgc2luZ2xlIHBhdHRlcm4uICBGb3IKKyAgLy8vIGV4YW1wbGUsIHRoZXJlIG1pZ2h0IGJlIHNldmVyYWwgZGlzY2FyZGVkIG1hdGNoZXMKKyAgLy8vIChNYXRjaEZvdW5kQnV0RGlzY2FyZGVkKSBiZWZvcmUgZWl0aGVyIGEgZ29vZCBtYXRjaAorICAvLy8gKE1hdGNoRm91bmRBbmRFeHBlY3RlZCkgb3IgYSBmYWlsdXJlIHRvIG1hdGNoIChNYXRjaE5vbmVCdXRFeHBlY3RlZCksCisgIC8vLyBhbmQgdGhlcmUgbWlnaHQgYmUgYSBmdXp6eSBtYXRjaCAoTWF0Y2hGdXp6eSkgYWZ0ZXIgdGhlIGxhdHRlci4KKyAgZW51bSBNYXRjaFR5cGUgeworICAgIC8vLyBJbmRpY2F0ZXMgYSBnb29kIG1hdGNoIGZvciBhbiBleHBlY3RlZCBwYXR0ZXJuLgorICAgIE1hdGNoRm91bmRBbmRFeHBlY3RlZCwKKyAgICAvLy8gSW5kaWNhdGVzIGEgbWF0Y2ggZm9yIGFuIGV4Y2x1ZGVkIHBhdHRlcm4uCisgICAgTWF0Y2hGb3VuZEJ1dEV4Y2x1ZGVkLAorICAgIC8vLyBJbmRpY2F0ZXMgYSBtYXRjaCBmb3IgYW4gZXhwZWN0ZWQgcGF0dGVybiwgYnV0IHRoZSBtYXRjaCBpcyBvbiB0aGUKKyAgICAvLy8gd3JvbmcgbGluZS4KKyAgICBNYXRjaEZvdW5kQnV0V3JvbmdMaW5lLAorICAgIC8vLyBJbmRpY2F0ZXMgYSBkaXNjYXJkZWQgbWF0Y2ggZm9yIGFuIGV4cGVjdGVkIHBhdHRlcm4uCisgICAgTWF0Y2hGb3VuZEJ1dERpc2NhcmRlZCwKKyAgICAvLy8gSW5kaWNhdGVzIG5vIG1hdGNoIGZvciBhbiBleGNsdWRlZCBwYXR0ZXJuLgorICAgIE1hdGNoTm9uZUFuZEV4Y2x1ZGVkLAorICAgIC8vLyBJbmRpY2F0ZXMgbm8gbWF0Y2ggZm9yIGFuIGV4cGVjdGVkIHBhdHRlcm4sIGJ1dCB0aGlzIG1pZ2h0IGZvbGxvdyBnb29kCisgICAgLy8vIG1hdGNoZXMgd2hlbiBtdWx0aXBsZSBtYXRjaGVzIGFyZSBleHBlY3RlZCBmb3IgdGhlIHBhdHRlcm4sIG9yIGl0IG1pZ2h0CisgICAgLy8vIGZvbGxvdyBkaXNjYXJkZWQgbWF0Y2hlcyBmb3IgdGhlIHBhdHRlcm4uCisgICAgTWF0Y2hOb25lQnV0RXhwZWN0ZWQsCisgICAgLy8vIEluZGljYXRlcyBhIGZ1enp5IG1hdGNoIHRoYXQgc2VydmVzIGFzIGEgc3VnZ2VzdGlvbiBmb3IgdGhlIG5leHQKKyAgICAvLy8gaW50ZW5kZWQgbWF0Y2ggZm9yIGFuIGV4cGVjdGVkIHBhdHRlcm4gd2l0aCB0b28gZmV3IG9yIG5vIGdvb2QgbWF0Y2hlcy4KKyAgICBNYXRjaEZ1enp5LAorICB9IE1hdGNoVHk7CisgIC8vLyBUaGUgc2VhcmNoIHJhbmdlIGlmIE1hdGNoVHkgaXMgTWF0Y2hOb25lQW5kRXhjbHVkZWQgb3IKKyAgLy8vIE1hdGNoTm9uZUJ1dEV4cGVjdGVkLCBvciB0aGUgbWF0Y2ggcmFuZ2Ugb3RoZXJ3aXNlLgorICB1bnNpZ25lZCBJbnB1dFN0YXJ0TGluZTsKKyAgdW5zaWduZWQgSW5wdXRTdGFydENvbDsKKyAgdW5zaWduZWQgSW5wdXRFbmRMaW5lOworICB1bnNpZ25lZCBJbnB1dEVuZENvbDsKKyAgRmlsZUNoZWNrRGlhZyhjb25zdCBTb3VyY2VNZ3IgJlNNLCBjb25zdCBDaGVjazo6RmlsZUNoZWNrVHlwZSAmQ2hlY2tUeSwKKyAgICAgICAgICAgICAgICBTTUxvYyBDaGVja0xvYywgTWF0Y2hUeXBlIE1hdGNoVHksIFNNUmFuZ2UgSW5wdXRSYW5nZSk7Cit9OworCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gQ2hlY2sgU3RyaW5ncy4KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTE0NywxOCArMjI0LDIwIEBACiAKICAgc2l6ZV90IENoZWNrKGNvbnN0IFNvdXJjZU1nciAmU00sIFN0cmluZ1JlZiBCdWZmZXIsIGJvb2wgSXNMYWJlbFNjYW5Nb2RlLAogICAgICAgICAgICAgICAgc2l6ZV90ICZNYXRjaExlbiwgU3RyaW5nTWFwPFN0cmluZ1JlZj4gJlZhcmlhYmxlVGFibGUsCi0gICAgICAgICAgICAgICBGaWxlQ2hlY2tSZXF1ZXN0ICZSZXEpIGNvbnN0OworICAgICAgICAgICAgICAgRmlsZUNoZWNrUmVxdWVzdCAmUmVxLCBzdGQ6OnZlY3RvcjxGaWxlQ2hlY2tEaWFnPiAqRGlhZ3MpIGNvbnN0OwogCiAgIGJvb2wgQ2hlY2tOZXh0KGNvbnN0IFNvdXJjZU1nciAmU00sIFN0cmluZ1JlZiBCdWZmZXIpIGNvbnN0OwogICBib29sIENoZWNrU2FtZShjb25zdCBTb3VyY2VNZ3IgJlNNLCBTdHJpbmdSZWYgQnVmZmVyKSBjb25zdDsKICAgYm9vbCBDaGVja05vdChjb25zdCBTb3VyY2VNZ3IgJlNNLCBTdHJpbmdSZWYgQnVmZmVyLAogICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IEZpbGVDaGVja1BhdHRlcm4gKj4gJk5vdFN0cmluZ3MsCiAgICAgICAgICAgICAgICAgU3RyaW5nTWFwPFN0cmluZ1JlZj4gJlZhcmlhYmxlVGFibGUsCi0gICAgICAgICAgICAgICAgY29uc3QgRmlsZUNoZWNrUmVxdWVzdCAmUmVxKSBjb25zdDsKKyAgICAgICAgICAgICAgICBjb25zdCBGaWxlQ2hlY2tSZXF1ZXN0ICZSZXEsCisgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8RmlsZUNoZWNrRGlhZz4gKkRpYWdzKSBjb25zdDsKICAgc2l6ZV90IENoZWNrRGFnKGNvbnN0IFNvdXJjZU1nciAmU00sIFN0cmluZ1JlZiBCdWZmZXIsCiAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rvcjxjb25zdCBGaWxlQ2hlY2tQYXR0ZXJuICo+ICZOb3RTdHJpbmdzLAogICAgICAgICAgICAgICAgICAgU3RyaW5nTWFwPFN0cmluZ1JlZj4gJlZhcmlhYmxlVGFibGUsCi0gICAgICAgICAgICAgICAgICBjb25zdCBGaWxlQ2hlY2tSZXF1ZXN0ICZSZXEpIGNvbnN0OworICAgICAgICAgICAgICAgICAgY29uc3QgRmlsZUNoZWNrUmVxdWVzdCAmUmVxLAorICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8RmlsZUNoZWNrRGlhZz4gKkRpYWdzKSBjb25zdDsKIH07CiAKIC8vLyBGaWxlQ2hlY2sgY2xhc3MgdGFrZXMgdGhlIHJlcXVlc3QgYW5kIGV4cG9zZXMgdmFyaW91cyBtZXRob2RzIHRoYXQKQEAgLTE5NSw3ICsyNzQsOCBAQAogICAvLy8KICAgLy8vIFJldHVybnMgZmFsc2UgaWYgdGhlIGlucHV0IGZhaWxzIHRvIHNhdGlzZnkgdGhlIGNoZWNrcy4KICAgYm9vbCBDaGVja0lucHV0KFNvdXJjZU1nciAmU00sIFN0cmluZ1JlZiBCdWZmZXIsCi0gICAgICAgICAgICAgICAgICBBcnJheVJlZjxGaWxlQ2hlY2tTdHJpbmc+IENoZWNrU3RyaW5ncyk7CisgICAgICAgICAgICAgICAgICBBcnJheVJlZjxGaWxlQ2hlY2tTdHJpbmc+IENoZWNrU3RyaW5ncywKKyAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEZpbGVDaGVja0RpYWc+ICpEaWFncyA9IG51bGxwdHIpOwogfTsKIH0gLy8gbmFtZXNwYWNlIGxsdm0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0ZpbGVPdXRwdXRCdWZmZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9GaWxlT3V0cHV0QnVmZmVyLmgKaW5kZXggNjgyMjZjYS4uOTk5ZjU1MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0ZpbGVPdXRwdXRCdWZmZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRmlsZU91dHB1dEJ1ZmZlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0gRmlsZU91dHB1dEJ1ZmZlci5oIC0gRmlsZSBPdXRwdXQgQnVmZmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zMywxMSArMzIsNiBAQAogICBlbnVtIHsKICAgICAvLy8gc2V0IHRoZSAneCcgYml0IG9uIHRoZSByZXN1bHRpbmcgZmlsZQogICAgIEZfZXhlY3V0YWJsZSA9IDEsCi0KLSAgICAvLy8gdGhlIGNvbnRlbnRzIG9mIHRoZSBuZXcgZmlsZSBhcmUgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgZmlsZSB0aGF0IGV4aXN0cwotICAgIC8vLyBhdCB0aGUgbG9jYXRpb24gKGlmIHByZXNlbnQpLiAgVGhpcyBhbGxvd3MgaW4tcGxhY2UgbW9kaWZpY2F0aW9uIG9mIGFuCi0gICAgLy8vIGV4aXN0aW5nIGZpbGUuCi0gICAgRl9tb2RpZnkgPSAyCiAgIH07CiAKICAgLy8vIEZhY3RvcnkgbWV0aG9kIHRvIGNyZWF0ZSBhbiBPdXRwdXRCdWZmZXIgb2JqZWN0IHdoaWNoIG1hbmFnZXMgYSByZWFkL3dyaXRlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRmlsZVN5c3RlbS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0ZpbGVTeXN0ZW0uaAppbmRleCBhNzZlYWI2Li4xNTYyNTBmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRmlsZVN5c3RlbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9GaWxlU3lzdGVtLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L0ZpbGVTeXN0ZW0uaCAtIEZpbGUgU3lzdGVtIE9TIENvbmNlcHQgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE2MCw2ICsxNTksOCBAQAogICAjaWYgZGVmaW5lZChMTFZNX09OX1VOSVgpCiAgIHRpbWVfdCBmc19zdF9hdGltZSA9IDA7CiAgIHRpbWVfdCBmc19zdF9tdGltZSA9IDA7CisgIHVpbnQzMl90IGZzX3N0X2F0aW1lX25zZWMgPSAwOworICB1aW50MzJfdCBmc19zdF9tdGltZV9uc2VjID0gMDsKICAgdWlkX3QgZnNfc3RfdWlkID0gMDsKICAgZ2lkX3QgZnNfc3RfZ2lkID0gMDsKICAgb2ZmX3QgZnNfc3Rfc2l6ZSA9IDA7CkBAIC0xODAsOSArMTgxLDEyIEBACiAgIGV4cGxpY2l0IGJhc2ljX2ZpbGVfc3RhdHVzKGZpbGVfdHlwZSBUeXBlKSA6IFR5cGUoVHlwZSkge30KIAogICAjaWYgZGVmaW5lZChMTFZNX09OX1VOSVgpCi0gIGJhc2ljX2ZpbGVfc3RhdHVzKGZpbGVfdHlwZSBUeXBlLCBwZXJtcyBQZXJtcywgdGltZV90IEFUaW1lLCB0aW1lX3QgTVRpbWUsCisgIGJhc2ljX2ZpbGVfc3RhdHVzKGZpbGVfdHlwZSBUeXBlLCBwZXJtcyBQZXJtcywgdGltZV90IEFUaW1lLAorICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBBVGltZU5TZWMsIHRpbWVfdCBNVGltZSwgdWludDMyX3QgTVRpbWVOU2VjLAogICAgICAgICAgICAgICAgICAgICB1aWRfdCBVSUQsIGdpZF90IEdJRCwgb2ZmX3QgU2l6ZSkKLSAgICAgIDogZnNfc3RfYXRpbWUoQVRpbWUpLCBmc19zdF9tdGltZShNVGltZSksIGZzX3N0X3VpZChVSUQpLCBmc19zdF9naWQoR0lEKSwKKyAgICAgIDogZnNfc3RfYXRpbWUoQVRpbWUpLCBmc19zdF9tdGltZShNVGltZSksCisgICAgICAgIGZzX3N0X2F0aW1lX25zZWMoQVRpbWVOU2VjKSwgZnNfc3RfbXRpbWVfbnNlYyhNVGltZU5TZWMpLAorICAgICAgICBmc19zdF91aWQoVUlEKSwgZnNfc3RfZ2lkKEdJRCksCiAgICAgICAgIGZzX3N0X3NpemUoU2l6ZSksIFR5cGUoVHlwZSksIFBlcm1zKFBlcm1zKSB7fQogI2VsaWYgZGVmaW5lZChfV0lOMzIpCiAgIGJhc2ljX2ZpbGVfc3RhdHVzKGZpbGVfdHlwZSBUeXBlLCBwZXJtcyBQZXJtcywgdWludDMyX3QgTGFzdEFjY2Vzc1RpbWVIaWdoLApAQCAtMTk5LDcgKzIwMywyMCBAQAogICAvLyBnZXR0ZXJzCiAgIGZpbGVfdHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gVHlwZTsgfQogICBwZXJtcyBwZXJtaXNzaW9ucygpIGNvbnN0IHsgcmV0dXJuIFBlcm1zOyB9CisKKyAgLy8vIFRoZSBmaWxlIGFjY2VzcyB0aW1lIGFzIHJlcG9ydGVkIGZyb20gdGhlIHVuZGVybHlpbmcgZmlsZSBzeXN0ZW0uCisgIC8vLworICAvLy8gQWxzbyBzZWUgY29tbWVudHMgb24gXGMgZ2V0TGFzdE1vZGlmaWNhdGlvblRpbWUoKSByZWxhdGVkIHRvIHRoZSBwcmVjaXNpb24KKyAgLy8vIG9mIHRoZSByZXR1cm5lZCB2YWx1ZS4KICAgVGltZVBvaW50PD4gZ2V0TGFzdEFjY2Vzc2VkVGltZSgpIGNvbnN0OworCisgIC8vLyBUaGUgZmlsZSBtb2RpZmljYXRpb24gdGltZSBhcyByZXBvcnRlZCBmcm9tIHRoZSB1bmRlcmx5aW5nIGZpbGUgc3lzdGVtLgorICAvLy8KKyAgLy8vIFRoZSByZXR1cm5lZCB2YWx1ZSBhbGxvd3MgZm9yIG5hbm9zZWNvbmQgcHJlY2lzaW9uIGJ1dCB0aGUgYWN0dWFsCisgIC8vLyByZXNvbHV0aW9uIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCBvZiB0aGUgdW5kZXJseWluZyBmaWxlIHN5c3RlbS4KKyAgLy8vIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSBmb3Igd2hhdCBraW5kIG9mIHJlc29sdXRpb24geW91IGNhbiBleHBlY3QsIHRoZQorICAvLy8gcmVzb2x1dGlvbiBjYW4gZGlmZmVyIGFjcm9zcyBwbGF0Zm9ybXMgYW5kIGV2ZW4gYWNyb3NzIG1vdW50cG9pbnRzIG9uIHRoZQorICAvLy8gc2FtZSBtYWNoaW5lLgogICBUaW1lUG9pbnQ8PiBnZXRMYXN0TW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0OwogCiAgICNpZiBkZWZpbmVkKExMVk1fT05fVU5JWCkKQEAgLTI0Nyw4ICsyNjQsMTEgQEAKIAogICAjaWYgZGVmaW5lZChMTFZNX09OX1VOSVgpCiAgIGZpbGVfc3RhdHVzKGZpbGVfdHlwZSBUeXBlLCBwZXJtcyBQZXJtcywgZGV2X3QgRGV2LCBubGlua190IExpbmtzLCBpbm9fdCBJbm8sCi0gICAgICAgICAgICAgIHRpbWVfdCBBVGltZSwgdGltZV90IE1UaW1lLCB1aWRfdCBVSUQsIGdpZF90IEdJRCwgb2ZmX3QgU2l6ZSkKLSAgICAgIDogYmFzaWNfZmlsZV9zdGF0dXMoVHlwZSwgUGVybXMsIEFUaW1lLCBNVGltZSwgVUlELCBHSUQsIFNpemUpLAorICAgICAgICAgICAgICB0aW1lX3QgQVRpbWUsIHVpbnQzMl90IEFUaW1lTlNlYywKKyAgICAgICAgICAgICAgdGltZV90IE1UaW1lLCB1aW50MzJfdCBNVGltZU5TZWMsCisgICAgICAgICAgICAgIHVpZF90IFVJRCwgZ2lkX3QgR0lELCBvZmZfdCBTaXplKQorICAgICAgOiBiYXNpY19maWxlX3N0YXR1cyhUeXBlLCBQZXJtcywgQVRpbWUsIEFUaW1lTlNlYywgTVRpbWUsIE1UaW1lTlNlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVUlELCBHSUQsIFNpemUpLAogICAgICAgICBmc19zdF9kZXYoRGV2KSwgZnNfc3RfbmxpbmtzKExpbmtzKSwgZnNfc3RfaW5vKElubykge30KICAgI2VsaWYgZGVmaW5lZChfV0lOMzIpCiAgIGZpbGVfc3RhdHVzKGZpbGVfdHlwZSBUeXBlLCBwZXJtcyBQZXJtcywgdWludDMyX3QgTGlua0NvdW50LApAQCAtMjgxLDEwICszMDEsNyBAQAogLy8vIHJlbGF0aXZlLy4uL3BhdGggPT4gPGN1cnJlbnQtZGlyZWN0b3J5Pi9yZWxhdGl2ZS8uLi9wYXRoCiAvLy8KIC8vLyBAcGFyYW0gcGF0aCBBIHBhdGggdGhhdCBpcyBtb2RpZmllZCB0byBiZSBhbiBhYnNvbHV0ZSBwYXRoLgotLy8vIEByZXR1cm5zIGVycmM6OnN1Y2Nlc3MgaWYgXGEgcGF0aCBoYXMgYmVlbiBtYWRlIGFic29sdXRlLCBvdGhlcndpc2UgYQotLy8vICAgICAgICAgIHBsYXRmb3JtLXNwZWNpZmljIGVycm9yX2NvZGUuCi1zdGQ6OmVycm9yX2NvZGUgbWFrZV9hYnNvbHV0ZShjb25zdCBUd2luZSAmY3VycmVudF9kaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8Y2hhcj4gJnBhdGgpOwordm9pZCBtYWtlX2Fic29sdXRlKGNvbnN0IFR3aW5lICZjdXJyZW50X2RpcmVjdG9yeSwgU21hbGxWZWN0b3JJbXBsPGNoYXI+ICZwYXRoKTsKIAogLy8vIE1ha2UgXGEgcGF0aCBhbiBhYnNvbHV0ZSBwYXRoLgogLy8vCkBAIC0zNDksNiArMzY2LDEyIEBACiBzdGQ6OmVycm9yX2NvZGUgcmVhbF9wYXRoKGNvbnN0IFR3aW5lICZwYXRoLCBTbWFsbFZlY3RvckltcGw8Y2hhcj4gJm91dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHBhbmRfdGlsZGUgPSBmYWxzZSk7CiAKKy8vLyBFeHBhbmRzIH4gZXhwcmVzc2lvbnMgdG8gdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeS4gT24gVW5peCB+dXNlcgorLy8vIGRpcmVjdG9yaWVzIGFyZSByZXNvbHZlZCBhcyB3ZWxsLgorLy8vCisvLy8gQHBhcmFtIHBhdGggVGhlIHBhdGggdG8gcmVzb2x2ZS4KK3ZvaWQgZXhwYW5kX3RpbGRlKGNvbnN0IFR3aW5lICZwYXRoLCBTbWFsbFZlY3RvckltcGw8Y2hhcj4gJm91dHB1dCk7CisKIC8vLyBHZXQgdGhlIGN1cnJlbnQgcGF0aC4KIC8vLwogLy8vIEBwYXJhbSByZXN1bHQgSG9sZHMgdGhlIGN1cnJlbnQgcGF0aCBvbiByZXR1cm4uCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRmlsZVV0aWxpdGllcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0ZpbGVVdGlsaXRpZXMuaAppbmRleCAyZWUyYzYwLi4xNmIyMjA2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRmlsZVV0aWxpdGllcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9GaWxlVXRpbGl0aWVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L0ZpbGVVdGlsaXRpZXMuaCAtIEZpbGUgU3lzdGVtIFV0aWxpdGllcyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Gb3JtYXQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Gb3JtYXQuaAppbmRleCBiY2JkMmJlLi43N2RjYmFlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRm9ybWF0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0Zvcm1hdC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEZvcm1hdC5oIC0gRWZmaWNpZW50IHByaW50Zi1zdHlsZSBmb3JtYXR0aW5nIGZvciBzdHJlYW1zIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRm9ybWF0QWRhcHRlcnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Gb3JtYXRBZGFwdGVycy5oCmluZGV4IDgzMjBlYWEuLmEwZThjYzQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Gb3JtYXRBZGFwdGVycy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Gb3JtYXRBZGFwdGVycy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEZvcm1hdEFkYXB0ZXJzLmggLSBGb3JtYXR0ZXJzIGZvciBjb21tb24gTExWTSB0eXBlcyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRm9ybWF0Q29tbW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRm9ybWF0Q29tbW9uLmgKaW5kZXggMzZmYmFkMi4uM2MxMTlkMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0Zvcm1hdENvbW1vbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Gb3JtYXRDb21tb24uaApAQCAtMSw5ICsxLDggQEAKLS8vPT09LSBGb3JtYXRBZGFwdGVycy5oIC0gRm9ybWF0dGVycyBmb3IgY29tbW9uIExMVk0gdHlwZXMgLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vPT09LSBGb3JtYXRDb21tb24uaCAtIEZvcm1hdHRlcnMgZm9yIGNvbW1vbiBMTFZNIHR5cGVzIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Gb3JtYXRQcm92aWRlcnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Gb3JtYXRQcm92aWRlcnMuaAppbmRleCA0ZTU3MDM0Li42MjlhNDg0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRm9ybWF0UHJvdmlkZXJzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0Zvcm1hdFByb3ZpZGVycy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEZvcm1hdFByb3ZpZGVycy5oIC0gRm9ybWF0dGVycyBmb3IgY29tbW9uIExMVk0gdHlwZXMgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRm9ybWF0VmFyaWFkaWMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Gb3JtYXRWYXJpYWRpYy5oCmluZGV4IGIwZjU4MjUuLjViYmRhOWQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Gb3JtYXRWYXJpYWRpYy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Gb3JtYXRWYXJpYWRpYy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEZvcm1hdFZhcmlhZGljLmggLSBFZmZpY2llbnQgdHlwZS1zYWZlIHN0cmluZyBmb3JtYXR0aW5nIC0tKi0gQysrLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRm9ybWF0VmFyaWFkaWNEZXRhaWxzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRm9ybWF0VmFyaWFkaWNEZXRhaWxzLmgKaW5kZXggNTZkZGE0My4uZTNjMTg1MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0Zvcm1hdFZhcmlhZGljRGV0YWlscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Gb3JtYXRWYXJpYWRpY0RldGFpbHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBGb3JtYXRWYXJpYWRpY0RldGFpbHMuaCAtIEhlbHBlcnMgZm9yIEZvcm1hdFZhcmlhZGljLmggLS0tLSotIEMrKy0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTIxLDYgKzIwLDggQEAKIAogbmFtZXNwYWNlIGRldGFpbCB7CiBjbGFzcyBmb3JtYXRfYWRhcHRlciB7CisgIHZpcnR1YWwgdm9pZCBhbmNob3IoKTsKKwogcHJvdGVjdGVkOgogICB2aXJ0dWFsIH5mb3JtYXRfYWRhcHRlcigpIHt9CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Gb3JtYXR0ZWRTdHJlYW0uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Gb3JtYXR0ZWRTdHJlYW0uaAppbmRleCA0YTEzNWNkLi5iNDljOGQ4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvRm9ybWF0dGVkU3RyZWFtLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0Zvcm1hdHRlZFN0cmVhbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL1N1cHBvcnQvRm9ybWF0dGVkU3RyZWFtLmggLSBGb3JtYXR0ZWQgc3RyZWFtcyAtLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvR2VuZXJpY0RvbVRyZWUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9HZW5lcmljRG9tVHJlZS5oCmluZGV4IGIzMDE4YmEuLjUzYTYxM2UgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9HZW5lcmljRG9tVHJlZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9HZW5lcmljRG9tVHJlZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEdlbmVyaWNEb21UcmVlLmggLSBHZW5lcmljIGRvbWluYXRvciB0cmVlcyBmb3IgZ3JhcGhzIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0dlbmVyaWNEb21UcmVlQ29uc3RydWN0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvR2VuZXJpY0RvbVRyZWVDb25zdHJ1Y3Rpb24uaAppbmRleCAzNDQ0ODRiLi42OWNjNzIxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvR2VuZXJpY0RvbVRyZWVDb25zdHJ1Y3Rpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvR2VuZXJpY0RvbVRyZWVDb25zdHJ1Y3Rpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBHZW5lcmljRG9tVHJlZUNvbnN0cnVjdGlvbi5oIC0gRG9taW5hdG9yIENhbGN1bGF0aW9uIC0tLS0tLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKQEAgLTExOTEsNiArMTE5MCwyMCBAQAogICAgIH0pOwogICAgIExMVk1fREVCVUcoZGJncygpIDw8ICJcbiIpOwogCisgICAgLy8gUmVjYWxjdWxhdGUgdGhlIERvbWluYXRvclRyZWUgd2hlbiB0aGUgbnVtYmVyIG9mIHVwZGF0ZXMKKyAgICAvLyBleGNlZWRzIGEgdGhyZXNob2xkLCB3aGljaCB1c3VhbGx5IG1ha2VzIGRpcmVjdCB1cGRhdGluZyBzbG93ZXIgdGhhbgorICAgIC8vIHJlY2FsY3VsYXRpb24uIFdlIHNlbGVjdCB0aGlzIHRocmVzaG9sZCBwcm9wb3J0aW9uYWwgdG8gdGhlCisgICAgLy8gc2l6ZSBvZiB0aGUgRG9taW5hdG9yVHJlZS4gVGhlIGNvbnN0YW50IGlzIHNlbGVjdGVkCisgICAgLy8gYnkgY2hvb3NpbmcgdGhlIG9uZSB3aXRoIGFuIGFjY2VwdGFibGUgcGVyZm9ybWFuY2Ugb24gc29tZSByZWFsLXdvcmxkCisgICAgLy8gaW5wdXRzLgorCisgICAgLy8gTWFrZSB1bml0dGVzdHMgb2YgdGhlIGluY3JlbWVudGFsIGFsZ29yaXRobSB3b3JrCisgICAgaWYgKERULkRvbVRyZWVOb2Rlcy5zaXplKCkgPD0gMTAwKSB7CisgICAgICBpZiAoTnVtTGVnYWxpemVkID4gRFQuRG9tVHJlZU5vZGVzLnNpemUoKSkKKyAgICAgICAgQ2FsY3VsYXRlRnJvbVNjcmF0Y2goRFQsICZCVUkpOworICAgIH0gZWxzZSBpZiAoTnVtTGVnYWxpemVkID4gRFQuRG9tVHJlZU5vZGVzLnNpemUoKSAvIDQwKQorICAgICAgQ2FsY3VsYXRlRnJvbVNjcmF0Y2goRFQsICZCVUkpOworCiAgICAgLy8gSWYgdGhlIERvbWluYXRvclRyZWUgd2FzIHJlY2FsY3VsYXRlZCBhdCBzb21lIHBvaW50LCBzdG9wIHRoZSBiYXRjaAogICAgIC8vIHVwZGF0ZXMuIEZ1bGwgcmVjYWxjdWxhdGlvbnMgaWdub3JlIGJhdGNoIHVwZGF0ZXMgYW5kIGxvb2sgYXQgdGhlIGFjdHVhbAogICAgIC8vIENGRy4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9HbG9iUGF0dGVybi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0dsb2JQYXR0ZXJuLmgKaW5kZXggYzk0MzZhMS4uNjZhNGNkOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0dsb2JQYXR0ZXJuLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0dsb2JQYXR0ZXJuLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIEdsb2JQYXR0ZXJuLmggLSBnbG9iIHBhdHRlcm4gbWF0Y2hlciBpbXBsZW1lbnRhdGlvbiAtKi0gQysrIC0qLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9HcmFwaFdyaXRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0dyYXBoV3JpdGVyLmgKaW5kZXggMDJkOThiZS4uNDY2YTA0NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0dyYXBoV3JpdGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0dyYXBoV3JpdGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L0dyYXBoV3JpdGVyLmggLSBXcml0ZSBncmFwaCB0byBhIC5kb3QgZmlsZSAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Ib3N0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvSG9zdC5oCmluZGV4IDU3Yzc5YzAuLmIzN2NjNTEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Ib3N0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0hvc3QuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1N1cHBvcnQvSG9zdC5oIC0gSG9zdCBtYWNoaW5lIGNoYXJhY3RlcmlzdGljcyAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Jbml0TExWTS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0luaXRMTFZNLmgKaW5kZXggMGY2MjljOS4uNTdhMGViYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0luaXRMTFZNLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0luaXRMTFZNLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSW5pdExMVk0uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvSXRhbml1bU1hbmdsaW5nQ2Fub25pY2FsaXplci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0l0YW5pdW1NYW5nbGluZ0Nhbm9uaWNhbGl6ZXIuaAppbmRleCAzNGViOWY3Li42OTIwMDAwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvSXRhbml1bU1hbmdsaW5nQ2Fub25pY2FsaXplci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9JdGFuaXVtTWFuZ2xpbmdDYW5vbmljYWxpemVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBJdGFuaXVtTWFuZ2xpbmdDYW5vbmljYWxpemVyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9KU09OLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvSlNPTi5oCmluZGV4IDJmYzBlN2QuLmUzY2I5NTAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9KU09OLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0pTT04uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIEpTT04uaCAtIEpTT04gdmFsdWVzLCBwYXJzaW5nIGFuZCBzZXJpYWxpemF0aW9uIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCkBAIC0yOTQsOSArMjkzLDEzIEBACiAgIFZhbHVlKGpzb246OkFycmF5ICYmRWxlbWVudHMpIDogVHlwZShUX0FycmF5KSB7CiAgICAgY3JlYXRlPGpzb246OkFycmF5PihzdGQ6Om1vdmUoRWxlbWVudHMpKTsKICAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWx0PgorICBWYWx1ZShjb25zdCBzdGQ6OnZlY3RvcjxFbHQ+ICZDKSA6IFZhbHVlKGpzb246OkFycmF5KEMpKSB7fQogICBWYWx1ZShqc29uOjpPYmplY3QgJiZQcm9wZXJ0aWVzKSA6IFR5cGUoVF9PYmplY3QpIHsKICAgICBjcmVhdGU8anNvbjo6T2JqZWN0PihzdGQ6Om1vdmUoUHJvcGVydGllcykpOwogICB9CisgIHRlbXBsYXRlIDx0eXBlbmFtZSBFbHQ+CisgIFZhbHVlKGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBFbHQ+ICZDKSA6IFZhbHVlKGpzb246Ok9iamVjdChDKSkge30KICAgLy8gU3RyaW5nczogdHlwZXMgd2l0aCB2YWx1ZSBzZW1hbnRpY3MuIE11c3QgYmUgdmFsaWQgVVRGLTguCiAgIFZhbHVlKHN0ZDo6c3RyaW5nIFYpIDogVHlwZShUX1N0cmluZykgewogICAgIGlmIChMTFZNX1VOTElLRUxZKCFpc1VURjgoVikpKSB7CkBAIC00NzcsNiArNDgwLDcgQEAKICAgbXV0YWJsZSBsbHZtOjpBbGlnbmVkQ2hhckFycmF5VW5pb248Ym9vbCwgZG91YmxlLCBpbnQ2NF90LCBsbHZtOjpTdHJpbmdSZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nLCBqc29uOjpBcnJheSwganNvbjo6T2JqZWN0PgogICAgICAgVW5pb247CisgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgVmFsdWUgJiwgY29uc3QgVmFsdWUgJik7CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgVmFsdWUgJiwgY29uc3QgVmFsdWUgJik7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvSmFtQ1JDLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvSmFtQ1JDLmgKaW5kZXggODQ2ZDZjZS4uYjZmYzRlNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0phbUNSQy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9KYW1DUkMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9TdXBwb3J0L0phbUNSQy5oIC0gQ3ljbGljIFJlZHVuZGFuY3kgQ2hlY2sgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0tub3duQml0cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0tub3duQml0cy5oCmluZGV4IDI1OWRmOTUuLjg5ODNhMDYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Lbm93bkJpdHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvS25vd25CaXRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L0tub3duQml0cy5oIC0gU3RvcmVzIGtub3duIHplcm9zL29uZXMgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9MRUIxMjguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9MRUIxMjguaAppbmRleCA5ZmViMDcyLi5lYjQzYzg1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTEVCMTI4LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0xFQjEyOC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vU3VwcG9ydC9MRUIxMjguaCAtIFtTVV1MRUIxMjggdXRpbGl0eSBmdW5jdGlvbnMgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTGluZUl0ZXJhdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTGluZUl0ZXJhdG9yLmgKaW5kZXggODkyZDI4OS4uYzlmMTBjYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0xpbmVJdGVyYXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9MaW5lSXRlcmF0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMaW5lSXRlcmF0b3IuaCAtIEl0ZXJhdG9yIHRvIHJlYWQgYSB0ZXh0IGJ1ZmZlcidzIGxpbmVzIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Mb2NrRmlsZU1hbmFnZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Mb2NrRmlsZU1hbmFnZXIuaAppbmRleCA4NmRiMGIyLi41N2U0ZmJkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTG9ja0ZpbGVNYW5hZ2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0xvY2tGaWxlTWFuYWdlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gTG9ja0ZpbGVNYW5hZ2VyLmggLSBGaWxlLWxldmVsIGxvY2tpbmcgdXRpbGl0eSAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KICNpZm5kZWYgTExWTV9TVVBQT1JUX0xPQ0tGSUxFTUFOQUdFUl9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTG93TGV2ZWxUeXBlSW1wbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L0xvd0xldmVsVHlwZUltcGwuaAppbmRleCBhMGE1YTUyLi5lZmU1YzUxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTG93TGV2ZWxUeXBlSW1wbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Mb3dMZXZlbFR5cGVJbXBsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09IGxsdm0vU3VwcG9ydC9Mb3dMZXZlbFR5cGVJbXBsLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTQ2LDggKzQ1LDggQEAKICAgICAgICAgICAgICAgIFNpemVJbkJpdHMsIC8qQWRkcmVzc1NwYWNlPSovMH07CiAgIH0KIAotICAvLy8gR2V0IGEgbG93LWxldmVsIHBvaW50ZXIgaW4gdGhlIGdpdmVuIGFkZHJlc3Mgc3BhY2UgKGRlZmF1bHRpbmcgdG8gMCkuCi0gIHN0YXRpYyBMTFQgcG9pbnRlcih1aW50MTZfdCBBZGRyZXNzU3BhY2UsIHVuc2lnbmVkIFNpemVJbkJpdHMpIHsKKyAgLy8vIEdldCBhIGxvdy1sZXZlbCBwb2ludGVyIGluIHRoZSBnaXZlbiBhZGRyZXNzIHNwYWNlLgorICBzdGF0aWMgTExUIHBvaW50ZXIodW5zaWduZWQgQWRkcmVzc1NwYWNlLCB1bnNpZ25lZCBTaXplSW5CaXRzKSB7CiAgICAgYXNzZXJ0KFNpemVJbkJpdHMgPiAwICYmICJpbnZhbGlkIHBvaW50ZXIgc2l6ZSIpOwogICAgIHJldHVybiBMTFR7Lyppc1BvaW50ZXI9Ki90cnVlLCAvKmlzVmVjdG9yPSovZmFsc2UsIC8qTnVtRWxlbWVudHM9Ki8wLAogICAgICAgICAgICAgICAgU2l6ZUluQml0cywgQWRkcmVzc1NwYWNlfTsKQEAgLTcxLDYgKzcwLDE0IEBACiAgICAgICAgICAgICAgICBTY2FsYXJUeS5pc1BvaW50ZXIoKSA/IFNjYWxhclR5LmdldEFkZHJlc3NTcGFjZSgpIDogMH07CiAgIH0KIAorICBzdGF0aWMgTExUIHNjYWxhck9yVmVjdG9yKHVpbnQxNl90IE51bUVsZW1lbnRzLCBMTFQgU2NhbGFyVHkpIHsKKyAgICByZXR1cm4gTnVtRWxlbWVudHMgPT0gMSA/IFNjYWxhclR5IDogTExUOjp2ZWN0b3IoTnVtRWxlbWVudHMsIFNjYWxhclR5KTsKKyAgfQorCisgIHN0YXRpYyBMTFQgc2NhbGFyT3JWZWN0b3IodWludDE2X3QgTnVtRWxlbWVudHMsIHVuc2lnbmVkIFNjYWxhclNpemUpIHsKKyAgICByZXR1cm4gc2NhbGFyT3JWZWN0b3IoTnVtRWxlbWVudHMsIExMVDo6c2NhbGFyKFNjYWxhclNpemUpKTsKKyAgfQorCiAgIGV4cGxpY2l0IExMVChib29sIGlzUG9pbnRlciwgYm9vbCBpc1ZlY3RvciwgdWludDE2X3QgTnVtRWxlbWVudHMsCiAgICAgICAgICAgICAgICB1bnNpZ25lZCBTaXplSW5CaXRzLCB1bnNpZ25lZCBBZGRyZXNzU3BhY2UpIHsKICAgICBpbml0KGlzUG9pbnRlciwgaXNWZWN0b3IsIE51bUVsZW1lbnRzLCBTaXplSW5CaXRzLCBBZGRyZXNzU3BhY2UpOwpAQCAtMTA0LDYgKzExMSwyNiBAQAogICAgIHJldHVybiBnZXRTY2FsYXJTaXplSW5CaXRzKCkgKiBnZXROdW1FbGVtZW50cygpOwogICB9CiAKKyAgTExUIGdldFNjYWxhclR5cGUoKSBjb25zdCB7CisgICAgcmV0dXJuIGlzVmVjdG9yKCkgPyBnZXRFbGVtZW50VHlwZSgpIDogKnRoaXM7CisgIH0KKworICAvLy8gSWYgdGhpcyB0eXBlIGlzIGEgdmVjdG9yLCByZXR1cm4gYSB2ZWN0b3Igd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHMKKyAgLy8vIGJ1dCB0aGUgbmV3IGVsZW1lbnQgdHlwZS4gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIG5ldyBlbGVtZW50IHR5cGUuCisgIExMVCBjaGFuZ2VFbGVtZW50VHlwZShMTFQgTmV3RWx0VHkpIGNvbnN0IHsKKyAgICByZXR1cm4gaXNWZWN0b3IoKSA/IExMVDo6dmVjdG9yKGdldE51bUVsZW1lbnRzKCksIE5ld0VsdFR5KSA6IE5ld0VsdFR5OworICB9CisKKyAgLy8vIElmIHRoaXMgdHlwZSBpcyBhIHZlY3RvciwgcmV0dXJuIGEgdmVjdG9yIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1lbnRzCisgIC8vLyBidXQgdGhlIG5ldyBlbGVtZW50IHNpemUuIE90aGVyd2lzZSwgcmV0dXJuIHRoZSBuZXcgZWxlbWVudCB0eXBlLiBJbnZhbGlkCisgIC8vLyBmb3IgcG9pbnRlciB0eXBlcy4gRm9yIHBvaW50ZXIgdHlwZXMsIHVzZSBjaGFuZ2VFbGVtZW50VHlwZS4KKyAgTExUIGNoYW5nZUVsZW1lbnRTaXplKHVuc2lnbmVkIE5ld0VsdFNpemUpIGNvbnN0IHsKKyAgICBhc3NlcnQoIWdldFNjYWxhclR5cGUoKS5pc1BvaW50ZXIoKSAmJgorICAgICAgICAgICAiaW52YWxpZCB0byBkaXJlY3RseSBjaGFuZ2UgZWxlbWVudCBzaXplIGZvciBwb2ludGVycyIpOworICAgIHJldHVybiBpc1ZlY3RvcigpID8gTExUOjp2ZWN0b3IoZ2V0TnVtRWxlbWVudHMoKSwgTmV3RWx0U2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgICA6IExMVDo6c2NhbGFyKE5ld0VsdFNpemUpOworICB9CisKICAgdW5zaWduZWQgZ2V0U2NhbGFyU2l6ZUluQml0cygpIGNvbnN0IHsKICAgICBhc3NlcnQoUmF3RGF0YSAhPSAwICYmICJJbnZhbGlkIFR5cGUiKTsKICAgICBpZiAoIUlzVmVjdG9yKSB7CkBAIC0xNDcsNiArMTc0LDcgQEAKICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExMVCAmUkhTKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IFJIUyk7IH0KIAogICBmcmllbmQgc3RydWN0IERlbnNlTWFwSW5mbzxMTFQ+OworICBmcmllbmQgY2xhc3MgR0lTZWxJbnN0UHJvZmlsZUJ1aWxkZXI7CiAKIHByaXZhdGU6CiAgIC8vLyBMTFQgaXMgcGFja2VkIGludG8gNjQgYml0cyBhcyBmb2xsb3dzOgpAQCAtMTY5LDEwICsxOTcsMTAgQEAKICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBCaXRGaWVsZEluZm8gU2NhbGFyU2l6ZUZpZWxkSW5mb3szMiwgMH07CiAgIC8vLyAqIFBvaW50ZXIgKGlzUG9pbnRlciA9PSAxICYmIGlzVmVjdG9yID09IDApOgogICAvLy8gICBTaXplSW5CaXRzOiAxNjsKLSAgLy8vICAgQWRkcmVzc1NwYWNlOiAyMzsKKyAgLy8vICAgQWRkcmVzc1NwYWNlOiAyNDsKICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBCaXRGaWVsZEluZm8gUG9pbnRlclNpemVGaWVsZEluZm97MTYsIDB9OwogICBzdGF0aWMgY29uc3QgY29uc3RleHByIEJpdEZpZWxkSW5mbyBQb2ludGVyQWRkcmVzc1NwYWNlRmllbGRJbmZvewotICAgICAgMjMsIFBvaW50ZXJTaXplRmllbGRJbmZvWzBdICsgUG9pbnRlclNpemVGaWVsZEluZm9bMV19OworICAgICAgMjQsIFBvaW50ZXJTaXplRmllbGRJbmZvWzBdICsgUG9pbnRlclNpemVGaWVsZEluZm9bMV19OwogICAvLy8gKiBWZWN0b3Itb2Ytbm9uLXBvaW50ZXIgKGlzUG9pbnRlciA9PSAwICYmIGlzVmVjdG9yID09IDEpOgogICAvLy8gICBOdW1FbGVtZW50czogMTY7CiAgIC8vLyAgIFNpemVPZkVsZW1lbnQ6IDMyOwpAQCAtMTgyLDEzICsyMTAsMTMgQEAKICAgLy8vICogVmVjdG9yLW9mLXBvaW50ZXIgKGlzUG9pbnRlciA9PSAxICYmIGlzVmVjdG9yID09IDEpOgogICAvLy8gICBOdW1FbGVtZW50czogMTY7CiAgIC8vLyAgIFNpemVPZkVsZW1lbnQ6IDE2OwotICAvLy8gICBBZGRyZXNzU3BhY2U6IDIzOworICAvLy8gICBBZGRyZXNzU3BhY2U6IDI0OwogICBzdGF0aWMgY29uc3QgY29uc3RleHByIEJpdEZpZWxkSW5mbyBQb2ludGVyVmVjdG9yRWxlbWVudHNGaWVsZEluZm97MTYsIDB9OwogICBzdGF0aWMgY29uc3QgY29uc3RleHByIEJpdEZpZWxkSW5mbyBQb2ludGVyVmVjdG9yU2l6ZUZpZWxkSW5mb3sKICAgICAgIDE2LAogICAgICAgUG9pbnRlclZlY3RvckVsZW1lbnRzRmllbGRJbmZvWzFdICsgUG9pbnRlclZlY3RvckVsZW1lbnRzRmllbGRJbmZvWzBdfTsKICAgc3RhdGljIGNvbnN0IGNvbnN0ZXhwciBCaXRGaWVsZEluZm8gUG9pbnRlclZlY3RvckFkZHJlc3NTcGFjZUZpZWxkSW5mb3sKLSAgICAgIDIzLCBQb2ludGVyVmVjdG9yU2l6ZUZpZWxkSW5mb1sxXSArIFBvaW50ZXJWZWN0b3JTaXplRmllbGRJbmZvWzBdfTsKKyAgICAgIDI0LCBQb2ludGVyVmVjdG9yU2l6ZUZpZWxkSW5mb1sxXSArIFBvaW50ZXJWZWN0b3JTaXplRmllbGRJbmZvWzBdfTsKIAogICB1aW50NjRfdCBJc1BvaW50ZXIgOiAxOwogICB1aW50NjRfdCBJc1ZlY3RvciA6IDE7CkBAIC0yMzEsNiArMjU5LDExIEBACiAgICAgICAgICAgICBtYXNrQW5kU2hpZnQoQWRkcmVzc1NwYWNlLCBQb2ludGVyVmVjdG9yQWRkcmVzc1NwYWNlRmllbGRJbmZvKTsKICAgICB9CiAgIH0KKworICB1aW50NjRfdCBnZXRVbmlxdWVSQVdMTFREYXRhKCkgY29uc3QgeworICAgIHJldHVybiAoKHVpbnQ2NF90KVJhd0RhdGEpIDw8IDIgfCAoKHVpbnQ2NF90KUlzUG9pbnRlcikgPDwgMSB8CisgICAgICAgICAgICgodWludDY0X3QpSXNWZWN0b3IpOworICB9CiB9OwogCiBpbmxpbmUgcmF3X29zdHJlYW0mIG9wZXJhdG9yPDwocmF3X29zdHJlYW0gJk9TLCBjb25zdCBMTFQgJlR5KSB7CkBAIC0yNTAsOCArMjgzLDcgQEAKICAgICByZXR1cm4gSW52YWxpZDsKICAgfQogICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGdldEhhc2hWYWx1ZShjb25zdCBMTFQgJlR5KSB7Ci0gICAgdWludDY0X3QgVmFsID0gKCh1aW50NjRfdClUeS5SYXdEYXRhKSA8PCAyIHwgKCh1aW50NjRfdClUeS5Jc1BvaW50ZXIpIDw8IDEgfAotICAgICAgICAgICAgICAgICAgICgodWludDY0X3QpVHkuSXNWZWN0b3IpOworICAgIHVpbnQ2NF90IFZhbCA9IFR5LmdldFVuaXF1ZVJBV0xMVERhdGEoKTsKICAgICByZXR1cm4gRGVuc2VNYXBJbmZvPHVpbnQ2NF90Pjo6Z2V0SGFzaFZhbHVlKFZhbCk7CiAgIH0KICAgc3RhdGljIGJvb2wgaXNFcXVhbChjb25zdCBMTFQgJkxIUywgY29uc3QgTExUICZSSFMpIHsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9NU1ZDRXJyb3JXb3JrYXJvdW5kcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L01TVkNFcnJvcldvcmthcm91bmRzLmgKaW5kZXggMDUzZWNmNi4uMzBlOGZlYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L01TVkNFcnJvcldvcmthcm91bmRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L01TVkNFcnJvcldvcmthcm91bmRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBNU1ZDRXJyb3JXb3JrYXJvdW5kcy5oIC0gRW5hYmxlIGZ1dHVyZTxFcnJvcj4gaW4gTVNWQyAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9NYWNoaW5lVmFsdWVUeXBlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTWFjaGluZVZhbHVlVHlwZS5oCmluZGV4IDU1MmRlYTAuLjc2NTFiMjggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9NYWNoaW5lVmFsdWVUeXBlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L01hY2hpbmVWYWx1ZVR5cGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTdXBwb3J0L01hY2hpbmVWYWx1ZVR5cGUuaCAtIE1hY2hpbmUtTGV2ZWwgdHlwZXMgLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L01hbmFnZWRTdGF0aWMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9NYW5hZ2VkU3RhdGljLmgKaW5kZXggYjRiZjMyMS4uNDQxZjI0ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L01hbmFnZWRTdGF0aWMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTWFuYWdlZFN0YXRpYy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL1N1cHBvcnQvTWFuYWdlZFN0YXRpYy5oIC0gU3RhdGljIEdsb2JhbCB3cmFwcGVyIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTWF0aEV4dHJhcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L01hdGhFeHRyYXMuaAppbmRleCBiNTlmMjFiLi5lOTAyYTcyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTWF0aEV4dHJhcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9NYXRoRXh0cmFzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vU3VwcG9ydC9NYXRoRXh0cmFzLmggLSBVc2VmdWwgbWF0aCBmdW5jdGlvbnMgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9NZW1BbGxvYy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L01lbUFsbG9jLmgKaW5kZXggZDA2YzY1OS4uZWQwNzZmZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L01lbUFsbG9jLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L01lbUFsbG9jLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTWVtQWxsb2MuaCAtIE1lbW9yeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTWVtb3J5LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTWVtb3J5LmgKaW5kZXggZmEwMjZkNC4uMmY0Y2FmZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L01lbW9yeS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9NZW1vcnkuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1N1cHBvcnQvTWVtb3J5LmggLSBNZW1vcnkgU3VwcG9ydCAtLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L01lbW9yeUJ1ZmZlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L01lbW9yeUJ1ZmZlci5oCmluZGV4IDg5MzMyOTUuLjQ0MDUyNjkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9NZW1vcnlCdWZmZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTWVtb3J5QnVmZmVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBNZW1vcnlCdWZmZXIuaCAtIE1lbW9yeSBCdWZmZXIgSW50ZXJmYWNlIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9NaXBzQUJJRmxhZ3MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9NaXBzQUJJRmxhZ3MuaAppbmRleCAxMmMzNTAwLi5kMzIzM2Y2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTWlwc0FCSUZsYWdzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L01pcHNBQklGbGFncy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gTWlwc0FCSUZsYWdzLmggLSBNSVBTIEFCSSBmbGFncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTXV0ZXguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9NdXRleC5oCmluZGV4IDY4MGQ5NGIuLmMzYWJmYzcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9NdXRleC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9NdXRleC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vU3VwcG9ydC9NdXRleC5oIC0gTXV0ZXggT3BlcmF0aW5nIFN5c3RlbSBDb25jZXB0IC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L011dGV4R3VhcmQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9NdXRleEd1YXJkLmgKaW5kZXggNjQxZDY0ZC4uZDg2Y2VkMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L011dGV4R3VhcmQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTXV0ZXhHdWFyZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBTdXBwb3J0L011dGV4R3VhcmQuaCAtIEFjcXVpcmUvUmVsZWFzZSBNdXRleCBJbiBTY29wZSAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTmF0aXZlRm9ybWF0dGluZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L05hdGl2ZUZvcm1hdHRpbmcuaAppbmRleCA2ZDFkZDdiLi44MjVhNDRjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvTmF0aXZlRm9ybWF0dGluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9OYXRpdmVGb3JtYXR0aW5nLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTmF0aXZlRm9ybWF0dGluZy5oIC0gTG93IGxldmVsIGZvcm1hdHRpbmcgaGVscGVycyAtLS0tLS0tLS0qLSBDKystKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvT25EaXNrSGFzaFRhYmxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvT25EaXNrSGFzaFRhYmxlLmgKaW5kZXggOTEyZTI3MC4uZDg0ZGE5MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L09uRGlza0hhc2hUYWJsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9PbkRpc2tIYXNoVGFibGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIE9uRGlza0hhc2hUYWJsZS5oIC0gT24tRGlzayBIYXNoIFRhYmxlIEltcGxlbWVudGF0aW9uIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9PcHRpb25zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvT3B0aW9ucy5oCmluZGV4IGRkMzIxYzYuLmQwMmVmODUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9PcHRpb25zLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L09wdGlvbnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1N1cHBvcnQvT3B0aW9ucy5oIC0gRGVidWcgb3B0aW9ucyBzdXBwb3J0IC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9QYXJhbGxlbC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1BhcmFsbGVsLmgKaW5kZXggMTQ2MjI2NS4uOTg0M2I5NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1BhcmFsbGVsLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1BhcmFsbGVsLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L1BhcmFsbGVsLmggLSBQYXJhbGxlbCBhbGdvcml0aG1zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUGF0aC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1BhdGguaAppbmRleCA3NmRlODg3Li41YzBiZWU1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUGF0aC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9QYXRoLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L1BhdGguaCAtIFBhdGggT3BlcmF0aW5nIFN5c3RlbSBDb25jZXB0IC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9QbHVnaW5Mb2FkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9QbHVnaW5Mb2FkZXIuaAppbmRleCBiZGJiMTM0Li5jMGM1MTZiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUGx1Z2luTG9hZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1BsdWdpbkxvYWRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL1N1cHBvcnQvUGx1Z2luTG9hZGVyLmggLSBQbHVnaW4gTG9hZGVyIGZvciBUb29scyAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUG9pbnRlckxpa2VUeXBlVHJhaXRzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUG9pbnRlckxpa2VUeXBlVHJhaXRzLmgKaW5kZXggMTcxMGI1Ny4uMWU3ZTViNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1BvaW50ZXJMaWtlVHlwZVRyYWl0cy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Qb2ludGVyTGlrZVR5cGVUcmFpdHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1N1cHBvcnQvUG9pbnRlckxpa2VUeXBlVHJhaXRzLmggLSBQb2ludGVyIFRyYWl0cyAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1ByZXR0eVN0YWNrVHJhY2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9QcmV0dHlTdGFja1RyYWNlLmgKaW5kZXggNGQ2NGZlNC4uZjZlZDdjOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1ByZXR0eVN0YWNrVHJhY2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUHJldHR5U3RhY2tUcmFjZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vU3VwcG9ydC9QcmV0dHlTdGFja1RyYWNlLmggLSBQcmV0dHkgQ3Jhc2ggSGFuZGxpbmcgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUHJpbnRhYmxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUHJpbnRhYmxlLmgKaW5kZXggY2I1NWQ0MS4uMGY4NjcwZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1ByaW50YWJsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9QcmludGFibGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFByaW50YWJsZS5oIC0gUHJpbnQgZnVuY3Rpb24gaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1Byb2Nlc3MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Qcm9jZXNzLmgKaW5kZXggZjlmMWNhYy4uOWE3MDMwNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1Byb2Nlc3MuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUHJvY2Vzcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vU3VwcG9ydC9Qcm9jZXNzLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1Byb2dyYW0uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Qcm9ncmFtLmgKaW5kZXggMWY0ZGJkYy4uNmIyMzE1YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1Byb2dyYW0uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUHJvZ3JhbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vU3VwcG9ydC9Qcm9ncmFtLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1JXTXV0ZXguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9SV011dGV4LmgKaW5kZXggNWFjM2U1NS4uOWNkNTdjYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1JXTXV0ZXguaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUldNdXRleC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFJXTXV0ZXguaCAtIFJlYWRlci9Xcml0ZXIgTXV0dWFsIEV4Y2x1c2lvbiBMb2NrIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUmFuZG9tTnVtYmVyR2VuZXJhdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUmFuZG9tTnVtYmVyR2VuZXJhdG9yLmgKaW5kZXggMTM5OWRhYi4uNTVkNjg3NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1JhbmRvbU51bWJlckdlbmVyYXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9SYW5kb21OdW1iZXJHZW5lcmF0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIGxsdm0vU3VwcG9ydC9SYW5kb21OdW1iZXJHZW5lcmF0b3IuaCAtIFJORyBmb3IgZGl2ZXJzaXR5IC0tLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1JlY3ljbGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUmVjeWNsZXIuaAppbmRleCA1M2RiMmU4Li5iYmQ5YWUzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUmVjeWNsZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUmVjeWNsZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIGxsdm0vU3VwcG9ydC9SZWN5Y2xlci5oIC0gUmVjeWNsaW5nIEFsbG9jYXRvciAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1JlY3ljbGluZ0FsbG9jYXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1JlY3ljbGluZ0FsbG9jYXRvci5oCmluZGV4IDMyYjAzM2IuLjJjMjlkYWMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9SZWN5Y2xpbmdBbGxvY2F0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvUmVjeWNsaW5nQWxsb2NhdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09LSBsbHZtL1N1cHBvcnQvUmVjeWNsaW5nQWxsb2NhdG9yLmggLSBSZWN5Y2xpbmcgQWxsb2NhdG9yIC0tLS0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9SZWdleC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1JlZ2V4LmgKaW5kZXggZDkwMWViMS4uMmQxOWIxMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1JlZ2V4LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1JlZ2V4LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFJlZ2V4LmggLSBSZWd1bGFyIEV4cHJlc3Npb24gbWF0Y2hlciBpbXBsZW1lbnRhdGlvbiAtKi0gQysrIC0qLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9SZWdpc3RyeS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1JlZ2lzdHJ5LmgKaW5kZXggMDJmZDViOS4uNGQ4YWE1ZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1JlZ2lzdHJ5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1JlZ2lzdHJ5LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PSBSZWdpc3RyeS5oIC0gTGlua2VyLXN1cHBvcnRlZCBwbHVnaW4gcmVnaXN0cmllcyAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTgxLDE3ICs4MCwxNyBAQAogCiAgICAgLy8vIEl0ZXJhdG9ycyBmb3IgcmVnaXN0cnkgZW50cmllcy4KICAgICAvLy8KLSAgICBjbGFzcyBpdGVyYXRvciB7CisgICAgY2xhc3MgaXRlcmF0b3IKKyAgICAgICAgOiBwdWJsaWMgbGx2bTo6aXRlcmF0b3JfZmFjYWRlX2Jhc2U8aXRlcmF0b3IsIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVudHJ5PiB7CiAgICAgICBjb25zdCBub2RlICpDdXI7CiAKICAgICBwdWJsaWM6CiAgICAgICBleHBsaWNpdCBpdGVyYXRvcihjb25zdCBub2RlICpOKSA6IEN1cihOKSB7fQogCiAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3IgJlRoYXQpIGNvbnN0IHsgcmV0dXJuIEN1ciA9PSBUaGF0LkN1cjsgfQotICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yICZUaGF0KSBjb25zdCB7IHJldHVybiBDdXIgIT0gVGhhdC5DdXI7IH0KICAgICAgIGl0ZXJhdG9yICZvcGVyYXRvcisrKCkgeyBDdXIgPSBDdXItPk5leHQ7IHJldHVybiAqdGhpczsgfQogICAgICAgY29uc3QgZW50cnkgJm9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIEN1ci0+VmFsOyB9Ci0gICAgICBjb25zdCBlbnRyeSAqb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICZDdXItPlZhbDsgfQogICAgIH07CiAKICAgICAvLyBiZWdpbiBpcyBub3QgZGVmaW5lZCBoZXJlIGluIG9yZGVyIHRvIGF2b2lkIHVzYWdlIG9mIGFuIHVuZGVmaW5lZCBzdGF0aWMKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TSEExLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU0hBMS5oCmluZGV4IDFmYzYwYTguLjg3ZmU5NGIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TSEExLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1NIQTEuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIFNIQTEuaCAtIFNIQTEgaW1wbGVtZW50YXRpb24gZm9yIExMVk0gICAgICAgICAgICAgICAgICAgICAtLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLyBUaGlzIGNvZGUgaXMgdGFrZW4gZnJvbSBwdWJsaWMgZG9tYWluCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU01Mb2MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TTUxvYy5oCmluZGV4IGM3NGZlZmYuLmQ4NjA3MDMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TTUxvYy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TTUxvYy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFNNTG9jLmggLSBTb3VyY2UgbG9jYXRpb24gZm9yIHVzZSB3aXRoIGRpYWdub3N0aWNzIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU2F2ZUFuZFJlc3RvcmUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TYXZlQW5kUmVzdG9yZS5oCmluZGV4IDhlMTE3ODkuLjNjMDMzM2IgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TYXZlQW5kUmVzdG9yZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TYXZlQW5kUmVzdG9yZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBTYXZlQW5kUmVzdG9yZS5oIC0gVXRpbGl0eSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1NjYWxlZE51bWJlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1NjYWxlZE51bWJlci5oCmluZGV4IDNiZDNjY2UuLjU1MmRhMzQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TY2FsZWROdW1iZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU2NhbGVkTnVtYmVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L1NjYWxlZE51bWJlci5oIC0gU3VwcG9ydCBmb3Igc2NhbGVkIG51bWJlcnMgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTg4NywxMCArODg2LDYgQEAKICAgRGlnaXRzID4+PSBTaGlmdDsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBpc1BvZExpa2U7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzUG9kTGlrZTxTY2FsZWROdW1iZXI8VD4+IHsKLSAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSB0cnVlOwotfTsKIAogfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1Njb3BlZFByaW50ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TY29wZWRQcmludGVyLmgKaW5kZXggMzRjMWEyOC4uMTY5OTY1NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1Njb3BlZFByaW50ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU2NvcGVkUHJpbnRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBTY29wZWRQcmludGVyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1NpZ25hbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TaWduYWxzLmgKaW5kZXggZjI1YTA0OS4uOWYyY2I4NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1NpZ25hbHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU2lnbmFscy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vU3VwcG9ydC9TaWduYWxzLmggLSBTaWduYWwgSGFuZGxpbmcgc3VwcG9ydCAtLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1NtYWxsVmVjdG9yTWVtb3J5QnVmZmVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU21hbGxWZWN0b3JNZW1vcnlCdWZmZXIuaAppbmRleCBjNGE2MDBlLi5iNjNiNThlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU21hbGxWZWN0b3JNZW1vcnlCdWZmZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU21hbGxWZWN0b3JNZW1vcnlCdWZmZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTbWFsbFZlY3Rvck1lbW9yeUJ1ZmZlci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1NvbGFyaXMvc3lzL3JlZ3NldC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1NvbGFyaXMvc3lzL3JlZ3NldC5oCmluZGV4IDZhNjllYmUuLjZiZDk4ZmEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Tb2xhcmlzL3N5cy9yZWdzZXQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU29sYXJpcy9zeXMvcmVnc2V0LmgKQEAgLTEsOSArMSw4IEBACiAvKj09PS0gbGx2bS9TdXBwb3J0L1NvbGFyaXMvc3lzL3JlZ3NldC5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0qCiAgKgotICogICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotICoKLSAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotICogTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorICogUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKyAqIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogICoKICAqPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PSoKICAqCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU291cmNlTWdyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU291cmNlTWdyLmgKaW5kZXggNjNhYzg5My4uN2IwODFkMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1NvdXJjZU1nci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Tb3VyY2VNZ3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTb3VyY2VNZ3IuaCAtIE1hbmFnZXIgZm9yIFNvdXJjZSBCdWZmZXJzICYgRGlhZ25vc3RpY3MgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1NwZWNpYWxDYXNlTGlzdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1NwZWNpYWxDYXNlTGlzdC5oCmluZGV4IGZkNjJmYzQuLmI3NDAwMjYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TcGVjaWFsQ2FzZUxpc3QuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU3BlY2lhbENhc2VMaXN0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFNwZWNpYWxDYXNlTGlzdC5oIC0gc3BlY2lhbCBjYXNlIGxpc3QgZm9yIHNhbml0aXplcnMgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwogLy8gVGhpcyBpcyBhIHV0aWxpdHkgY2xhc3MgdXNlZCB0byBwYXJzZSB1c2VyLXByb3ZpZGVkIHRleHQgZmlsZXMgd2l0aApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1N0cmluZ1Bvb2wuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TdHJpbmdQb29sLmgKaW5kZXggYmI1ZmQwNy4uYTRmNDU5MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1N0cmluZ1Bvb2wuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU3RyaW5nUG9vbC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFN0cmluZ1Bvb2wuaCAtIEludGVybmVkIHN0cmluZyBwb29sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU3RyaW5nU2F2ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TdHJpbmdTYXZlci5oCmluZGV4IDZiNzdkNDguLmM1NDA0NGUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TdHJpbmdTYXZlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TdHJpbmdTYXZlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vU3VwcG9ydC9TdHJpbmdTYXZlci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1N3YXBCeXRlT3JkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Td2FwQnl0ZU9yZGVyLmgKaW5kZXggNzFkMzcyNC4uZjU4YjRkOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1N3YXBCeXRlT3JkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU3dhcEJ5dGVPcmRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFN3YXBCeXRlT3JkZXIuaCAtIEdlbmVyaWMgYW5kIG9wdGltaXplZCBieXRlIHN3YXBzIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU3ltYm9sUmVtYXBwaW5nUmVhZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvU3ltYm9sUmVtYXBwaW5nUmVhZGVyLmgKaW5kZXggYjQ1N2I5ZS4uMmI5YWI1NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1N5bWJvbFJlbWFwcGluZ1JlYWRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TeW1ib2xSZW1hcHBpbmdSZWFkZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTeW1ib2xSZW1hcHBpbmdSZWFkZXIuaCAtIFJlYWQgc3ltYm9sIHJlbWFwcGluZyBmaWxlIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9TeXN0ZW1VdGlscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1N5c3RlbVV0aWxzLmgKaW5kZXggYmQ2MDc5My4uNzdkZWRkYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1N5c3RlbVV0aWxzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1N5c3RlbVV0aWxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3lzdGVtVXRpbHMuaCAtIFV0aWxpdGllcyB0byBkbyBsb3ctbGV2ZWwgc3lzdGVtIHN0dWZmIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UYXJXcml0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UYXJXcml0ZXIuaAppbmRleCA2MzlmNjFiLi43MTE2NGUyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVGFyV3JpdGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RhcldyaXRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL1N1cHBvcnQvVGFyV3JpdGVyLmggLSBUYXIgYXJjaGl2ZSBmaWxlIGNyZWF0b3IgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RhcmdldE9wY29kZXMuZGVmIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RhcmdldE9wY29kZXMuZGVmCmluZGV4IGE2ODNmMDUuLjY2MTIyNzQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UYXJnZXRPcGNvZGVzLmRlZgorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVGFyZ2V0T3Bjb2Rlcy5kZWYKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vU3VwcG9ydC9UYXJnZXRPcGNvZGVzLmRlZiAtIFRhcmdldCBJbmRlcCBPcGNvZGVzIC0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI5LDYgKzI4LDcgQEAKIC8vLwogSEFORExFX1RBUkdFVF9PUENPREUoUEhJKQogSEFORExFX1RBUkdFVF9PUENPREUoSU5MSU5FQVNNKQorSEFORExFX1RBUkdFVF9PUENPREUoSU5MSU5FQVNNX0JSKQogSEFORExFX1RBUkdFVF9PUENPREUoQ0ZJX0lOU1RSVUNUSU9OKQogSEFORExFX1RBUkdFVF9PUENPREUoRUhfTEFCRUwpCiBIQU5ETEVfVEFSR0VUX09QQ09ERShHQ19MQUJFTCkKQEAgLTI1OCw2ICsyNTgsMTcgQEAKIC8vLyBsYXJnZXIgcmVnaXN0ZXIuCiBIQU5ETEVfVEFSR0VUX09QQ09ERShHX01FUkdFX1ZBTFVFUykKIAorLy8vIEdlbmVyaWMgaW5zdHJ1Y3Rpb24gdG8gY3JlYXRlIGEgdmVjdG9yIHZhbHVlIGZyb20gYSBudW1iZXIgb2Ygc2NhbGFyCisvLy8gY29tcG9uZW50cy4KK0hBTkRMRV9UQVJHRVRfT1BDT0RFKEdfQlVJTERfVkVDVE9SKQorCisvLy8gR2VuZXJpYyBpbnN0cnVjdGlvbiB0byBjcmVhdGUgYSB2ZWN0b3IgdmFsdWUgZnJvbSBhIG51bWJlciBvZiBzY2FsYXIKKy8vLyBjb21wb25lbnRzLCB3aGljaCBoYXZlIHR5cGVzIGxhcmdlciB0aGFuIHRoZSByZXN1bHQgdmVjdG9yIGVsdCB0eXBlLgorSEFORExFX1RBUkdFVF9PUENPREUoR19CVUlMRF9WRUNUT1JfVFJVTkMpCisKKy8vLyBHZW5lcmljIGluc3RydWN0aW9uIHRvIGNyZWF0ZSBhIHZlY3RvciBieSBjb25jYXRlbmF0aW5nIG11bHRpcGxlIHZlY3RvcnMuCitIQU5ETEVfVEFSR0VUX09QQ09ERShHX0NPTkNBVF9WRUNUT1JTKQorCiAvLy8gR2VuZXJpYyBwb2ludGVyIHRvIGludCBjb252ZXJzaW9uLgogSEFORExFX1RBUkdFVF9PUENPREUoR19QVFJUT0lOVCkKIApAQCAtNDQzLDYgKzQ1NCw5IEBACiAvLy8gRmxvYXRpbmcgcG9pbnQgYmFzZS0yIGxvZ2FyaXRobSBvZiBhIHZhbHVlLgogSEFORExFX1RBUkdFVF9PUENPREUoR19GTE9HMikKIAorLy8vIEZsb2F0aW5nIHBvaW50IGJhc2UtMTAgbG9nYXJpdGhtIG9mIGEgdmFsdWUuCitIQU5ETEVfVEFSR0VUX09QQ09ERShHX0ZMT0cxMCkKKwogLy8vIEdlbmVyaWMgRlAgbmVnYXRpb24uCiBIQU5ETEVfVEFSR0VUX09QQ09ERShHX0ZORUcpCiAKQEAgLTQ2Nyw2ICs0ODEsOSBAQAogLy8vIEdlbmVyaWMgRlAgYWJzb2x1dGUgdmFsdWUuCiBIQU5ETEVfVEFSR0VUX09QQ09ERShHX0ZBQlMpCiAKKy8vLyBHZW5lcmljIEZQIGNhbm9uaWNhbGl6ZSB2YWx1ZS4KK0hBTkRMRV9UQVJHRVRfT1BDT0RFKEdfRkNBTk9OSUNBTElaRSkKKwogLy8vIEdlbmVyaWMgcG9pbnRlciBvZmZzZXQKIEhBTkRMRV9UQVJHRVRfT1BDT0RFKEdfR0VQKQogCkBAIC01MDQsNiArNTIxLDIxIEBACiAvLy8gR2VuZXJpYyBieXRlIHN3YXAuCiBIQU5ETEVfVEFSR0VUX09QQ09ERShHX0JTV0FQKQogCisvLy8gRmxvYXRpbmcgcG9pbnQgY2VpbC4KK0hBTkRMRV9UQVJHRVRfT1BDT0RFKEdfRkNFSUwpCisKKy8vLyBGbG9hdGluZyBwb2ludCBjb3NpbmUuCitIQU5ETEVfVEFSR0VUX09QQ09ERShHX0ZDT1MpCisKKy8vLyBGbG9hdGluZyBwb2ludCBzaW5lLgorSEFORExFX1RBUkdFVF9PUENPREUoR19GU0lOKQorCisvLy8gRmxvYXRpbmcgcG9pbnQgc3F1YXJlIHJvb3QuCitIQU5ETEVfVEFSR0VUX09QQ09ERShHX0ZTUVJUKQorCisvLy8gRmxvYXRpbmcgcG9pbnQgZmxvb3IuCitIQU5ETEVfVEFSR0VUX09QQ09ERShHX0ZGTE9PUikKKwogLy8vIEdlbmVyaWMgQWRkcmVzc1NwYWNlQ2FzdC4KIEhBTkRMRV9UQVJHRVRfT1BDT0RFKEdfQUREUlNQQUNFX0NBU1QpCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UYXJnZXRQYXJzZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UYXJnZXRQYXJzZXIuaAppbmRleCAwMTM5N2U4Li43ZWZkMDIyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVGFyZ2V0UGFyc2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RhcmdldFBhcnNlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBUYXJnZXRQYXJzZXIgLSBQYXJzZXIgZm9yIHRhcmdldCBmZWF0dXJlcyAtLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xOCwyMTUgKzE3LDIwIEBACiAvLyBGSVhNRTogdmVjdG9yIGlzIHVzZWQgYmVjYXVzZSB0aGF0J3Mgd2hhdCBjbGFuZyB1c2VzIGZvciBzdWJ0YXJnZXQgZmVhdHVyZQogLy8gbGlzdHMsIGJ1dCBTbWFsbFZlY3RvciB3b3VsZCBwcm9iYWJseSBiZSBiZXR0ZXIKICNpbmNsdWRlICJsbHZtL0FEVC9UcmlwbGUuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvQVJNVGFyZ2V0UGFyc2VyLmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0FBcmNoNjRUYXJnZXRQYXJzZXIuaCIKICNpbmNsdWRlIDx2ZWN0b3I+CiAKIG5hbWVzcGFjZSBsbHZtIHsKIGNsYXNzIFN0cmluZ1JlZjsKIAotLy8gVGFyZ2V0IHNwZWNpZmljIGluZm9ybWF0aW9uIGludG8gdGhlaXIgb3duIG5hbWVzcGFjZXMuIFRoZXNlIHNob3VsZCBiZQotLy8gZ2VuZXJhdGVkIGZyb20gVGFibGVHZW4gYmVjYXVzZSB0aGUgaW5mb3JtYXRpb24gaXMgYWxyZWFkeSB0aGVyZSwgYW5kIHRoZXJlCi0vLyBpcyB3aGVyZSBuZXcgaW5mb3JtYXRpb24gYWJvdXQgdGFyZ2V0cyB3aWxsIGJlIGFkZGVkLgorLy8gVGFyZ2V0IHNwZWNpZmljIGluZm9ybWF0aW9uIGluIHRoZWlyIG93biBuYW1lc3BhY2VzLgorLy8gKEFSTS9BQXJjaDY0IGFyZSBkZWNsYXJlZCBpbiBBUk0vQUFyY2g2NFRhcmdldFBhcnNlci5oKQorLy8gVGhlc2Ugc2hvdWxkIGJlIGdlbmVyYXRlZCBmcm9tIFRhYmxlR2VuIGJlY2F1c2UgdGhlIGluZm9ybWF0aW9uIGlzIGFscmVhZHkKKy8vIHRoZXJlLCBhbmQgdGhlcmUgaXMgd2hlcmUgbmV3IGluZm9ybWF0aW9uIGFib3V0IHRhcmdldHMgd2lsbCBiZSBhZGRlZC4KIC8vIEZJWE1FOiBUbyBUYWJsZUdlbiB0aGlzIHdlIG5lZWQgdG8gbWFrZSBzb21lIHRhYmxlIGdlbmVyYXRlZCBmaWxlcyBhdmFpbGFibGUKIC8vIGV2ZW4gaWYgdGhlIGJhY2stZW5kIGlzIG5vdCBjb21waWxlZCB3aXRoIExMVk0sIHBsdXMgd2UgbmVlZCB0byBjcmVhdGUgYSBuZXcKIC8vIGJhY2stZW5kIHRvIFRhYmxlR2VuIHRvIGNyZWF0ZSB0aGVzZSBjbGVhbiB0YWJsZXMuCi1uYW1lc3BhY2UgQVJNIHsKLQotLy8gRlBVIFZlcnNpb24KLWVudW0gY2xhc3MgRlBVVmVyc2lvbiB7Ci0gIE5PTkUsCi0gIFZGUFYyLAotICBWRlBWMywKLSAgVkZQVjNfRlAxNiwKLSAgVkZQVjQsCi0gIFZGUFY1Ci19OwotCi0vLyBBbiBGUFUgbmFtZSByZXN0cmljdHMgdGhlIEZQVSBpbiBvbmUgb2YgdGhyZWUgd2F5czoKLWVudW0gY2xhc3MgRlBVUmVzdHJpY3Rpb24gewotICBOb25lID0gMCwgLy8vPCBObyByZXN0cmljdGlvbgotICBEMTYsICAgICAgLy8vPCBPbmx5IDE2IEQgcmVnaXN0ZXJzCi0gIFNQX0QxNiAgICAvLy88IE9ubHkgc2luZ2xlLXByZWNpc2lvbiBpbnN0cnVjdGlvbnMsIHdpdGggMTYgRCByZWdpc3RlcnMKLX07Ci0KLS8vIEFuIEZQVSBuYW1lIGltcGxpZXMgb25lIG9mIHRocmVlIGxldmVscyBvZiBOZW9uIHN1cHBvcnQ6Ci1lbnVtIGNsYXNzIE5lb25TdXBwb3J0TGV2ZWwgewotICBOb25lID0gMCwgLy8vPCBObyBOZW9uCi0gIE5lb24sICAgICAvLy88IE5lb24KLSAgQ3J5cHRvICAgIC8vLzwgTmVvbiB3aXRoIENyeXB0bwotfTsKLQotLy8gRlBVIG5hbWVzLgotZW51bSBGUFVLaW5kIHsKLSNkZWZpbmUgQVJNX0ZQVShOQU1FLCBLSU5ELCBWRVJTSU9OLCBORU9OX1NVUFBPUlQsIFJFU1RSSUNUSU9OKSBLSU5ELAotI2luY2x1ZGUgIkFSTVRhcmdldFBhcnNlci5kZWYiCi0gIEZLX0xBU1QKLX07Ci0KLS8vIEFyY2ggbmFtZXMuCi1lbnVtIGNsYXNzIEFyY2hLaW5kIHsKLSNkZWZpbmUgQVJNX0FSQ0goTkFNRSwgSUQsIENQVV9BVFRSLCBTVUJfQVJDSCwgQVJDSF9BVFRSLCBBUkNIX0ZQVSwgQVJDSF9CQVNFX0VYVCkgSUQsCi0jaW5jbHVkZSAiQVJNVGFyZ2V0UGFyc2VyLmRlZiIKLX07Ci0KLS8vIEFyY2ggZXh0ZW5zaW9uIG1vZGlmaWVycyBmb3IgQ1BVcy4KLWVudW0gQXJjaEV4dEtpbmQgOiB1bnNpZ25lZCB7Ci0gIEFFS19JTlZBTElEID0gICAgIDAsCi0gIEFFS19OT05FID0gICAgICAgIDEsCi0gIEFFS19DUkMgPSAgICAgICAgIDEgPDwgMSwKLSAgQUVLX0NSWVBUTyA9ICAgICAgMSA8PCAyLAotICBBRUtfRlAgPSAgICAgICAgICAxIDw8IDMsCi0gIEFFS19IV0RJVlRIVU1CID0gIDEgPDwgNCwKLSAgQUVLX0hXRElWQVJNID0gICAgMSA8PCA1LAotICBBRUtfTVAgPSAgICAgICAgICAxIDw8IDYsCi0gIEFFS19TSU1EID0gICAgICAgIDEgPDwgNywKLSAgQUVLX1NFQyA9ICAgICAgICAgMSA8PCA4LAotICBBRUtfVklSVCA9ICAgICAgICAxIDw8IDksCi0gIEFFS19EU1AgPSAgICAgICAgIDEgPDwgMTAsCi0gIEFFS19GUDE2ID0gICAgICAgIDEgPDwgMTEsCi0gIEFFS19SQVMgPSAgICAgICAgIDEgPDwgMTIsCi0gIEFFS19TVkUgPSAgICAgICAgIDEgPDwgMTMsCi0gIEFFS19ET1RQUk9EID0gICAgIDEgPDwgMTQsCi0gIEFFS19TSEEyICAgID0gICAgIDEgPDwgMTUsCi0gIEFFS19BRVMgICAgID0gICAgIDEgPDwgMTYsCi0gIEFFS19GUDE2Rk1MID0gICAgIDEgPDwgMTcsCi0gIC8vIFVuc3VwcG9ydGVkIGV4dGVuc2lvbnMuCi0gIEFFS19PUyA9IDB4ODAwMDAwMCwKLSAgQUVLX0lXTU1YVCA9IDB4MTAwMDAwMDAsCi0gIEFFS19JV01NWFQyID0gMHgyMDAwMDAwMCwKLSAgQUVLX01BVkVSSUNLID0gMHg0MDAwMDAwMCwKLSAgQUVLX1hTQ0FMRSA9IDB4ODAwMDAwMDAsCi19OwotCi0vLyBJU0Ega2luZHMuCi1lbnVtIGNsYXNzIElTQUtpbmQgeyBJTlZBTElEID0gMCwgQVJNLCBUSFVNQiwgQUFSQ0g2NCB9OwotCi0vLyBFbmRpYW5uZXNzCi0vLyBGSVhNRTogQkU4IHZzLiBCRTMyPwotZW51bSBjbGFzcyBFbmRpYW5LaW5kIHsgSU5WQUxJRCA9IDAsIExJVFRMRSwgQklHIH07Ci0KLS8vIHY2L3Y3L3Y4IFByb2ZpbGUKLWVudW0gY2xhc3MgUHJvZmlsZUtpbmQgeyBJTlZBTElEID0gMCwgQSwgUiwgTSB9OwotCi1TdHJpbmdSZWYgZ2V0Q2Fub25pY2FsQXJjaE5hbWUoU3RyaW5nUmVmIEFyY2gpOwotCi0vLyBJbmZvcm1hdGlvbiBieSBJRAotU3RyaW5nUmVmIGdldEZQVU5hbWUodW5zaWduZWQgRlBVS2luZCk7Ci1GUFVWZXJzaW9uIGdldEZQVVZlcnNpb24odW5zaWduZWQgRlBVS2luZCk7Ci1OZW9uU3VwcG9ydExldmVsIGdldEZQVU5lb25TdXBwb3J0TGV2ZWwodW5zaWduZWQgRlBVS2luZCk7Ci1GUFVSZXN0cmljdGlvbiBnZXRGUFVSZXN0cmljdGlvbih1bnNpZ25lZCBGUFVLaW5kKTsKLQotLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBtb3ZlZCB0byBUYXJnZXRUdXBsZSBvbmNlIGl0IGV4aXN0cwotYm9vbCBnZXRGUFVGZWF0dXJlcyh1bnNpZ25lZCBGUFVLaW5kLCBzdGQ6OnZlY3RvcjxTdHJpbmdSZWY+ICZGZWF0dXJlcyk7Ci1ib29sIGdldEhXRGl2RmVhdHVyZXModW5zaWduZWQgSFdEaXZLaW5kLCBzdGQ6OnZlY3RvcjxTdHJpbmdSZWY+ICZGZWF0dXJlcyk7Ci1ib29sIGdldEV4dGVuc2lvbkZlYXR1cmVzKHVuc2lnbmVkIEV4dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZ1JlZj4gJkZlYXR1cmVzKTsKLQotU3RyaW5nUmVmIGdldEFyY2hOYW1lKEFyY2hLaW5kIEFLKTsKLXVuc2lnbmVkIGdldEFyY2hBdHRyKEFyY2hLaW5kIEFLKTsKLVN0cmluZ1JlZiBnZXRDUFVBdHRyKEFyY2hLaW5kIEFLKTsKLVN0cmluZ1JlZiBnZXRTdWJBcmNoKEFyY2hLaW5kIEFLKTsKLVN0cmluZ1JlZiBnZXRBcmNoRXh0TmFtZSh1bnNpZ25lZCBBcmNoRXh0S2luZCk7Ci1TdHJpbmdSZWYgZ2V0QXJjaEV4dEZlYXR1cmUoU3RyaW5nUmVmIEFyY2hFeHQpOwotU3RyaW5nUmVmIGdldEhXRGl2TmFtZSh1bnNpZ25lZCBIV0RpdktpbmQpOwotCi0vLyBJbmZvcm1hdGlvbiBieSBOYW1lCi11bnNpZ25lZCAgZ2V0RGVmYXVsdEZQVShTdHJpbmdSZWYgQ1BVLCBBcmNoS2luZCBBSyk7Ci11bnNpZ25lZCAgZ2V0RGVmYXVsdEV4dGVuc2lvbnMoU3RyaW5nUmVmIENQVSwgQXJjaEtpbmQgQUspOwotU3RyaW5nUmVmIGdldERlZmF1bHRDUFUoU3RyaW5nUmVmIEFyY2gpOwotCi0vLyBQYXJzZXIKLXVuc2lnbmVkIHBhcnNlSFdEaXYoU3RyaW5nUmVmIEhXRGl2KTsKLXVuc2lnbmVkIHBhcnNlRlBVKFN0cmluZ1JlZiBGUFUpOwotQXJjaEtpbmQgcGFyc2VBcmNoKFN0cmluZ1JlZiBBcmNoKTsKLXVuc2lnbmVkIHBhcnNlQXJjaEV4dChTdHJpbmdSZWYgQXJjaEV4dCk7Ci1BcmNoS2luZCBwYXJzZUNQVUFyY2goU3RyaW5nUmVmIENQVSk7Ci12b2lkIGZpbGxWYWxpZENQVUFyY2hMaXN0KFNtYWxsVmVjdG9ySW1wbDxTdHJpbmdSZWY+ICZWYWx1ZXMpOwotSVNBS2luZCBwYXJzZUFyY2hJU0EoU3RyaW5nUmVmIEFyY2gpOwotRW5kaWFuS2luZCBwYXJzZUFyY2hFbmRpYW4oU3RyaW5nUmVmIEFyY2gpOwotUHJvZmlsZUtpbmQgcGFyc2VBcmNoUHJvZmlsZShTdHJpbmdSZWYgQXJjaCk7Ci11bnNpZ25lZCBwYXJzZUFyY2hWZXJzaW9uKFN0cmluZ1JlZiBBcmNoKTsKLQotU3RyaW5nUmVmIGNvbXB1dGVEZWZhdWx0VGFyZ2V0QUJJKGNvbnN0IFRyaXBsZSAmVFQsIFN0cmluZ1JlZiBDUFUpOwotCi19IC8vIG5hbWVzcGFjZSBBUk0KLQotLy8gRklYTUU6VGhpcyBzaG91bGQgYmUgbWFkZSBpbnRvIGNsYXNzIGRlc2lnbix0byBhdm9pZCBkdXBwbGljYXRpb24uCi1uYW1lc3BhY2UgQUFyY2g2NCB7Ci0KLS8vIEFyY2ggbmFtZXMuCi1lbnVtIGNsYXNzIEFyY2hLaW5kIHsKLSNkZWZpbmUgQUFSQ0g2NF9BUkNIKE5BTUUsIElELCBDUFVfQVRUUiwgU1VCX0FSQ0gsIEFSQ0hfQVRUUiwgQVJDSF9GUFUsIEFSQ0hfQkFTRV9FWFQpIElELAotI2luY2x1ZGUgIkFBcmNoNjRUYXJnZXRQYXJzZXIuZGVmIgotfTsKLQotLy8gQXJjaCBleHRlbnNpb24gbW9kaWZpZXJzIGZvciBDUFVzLgotZW51bSBBcmNoRXh0S2luZCA6IHVuc2lnbmVkIHsKLSAgQUVLX0lOVkFMSUQgPSAgICAgMCwKLSAgQUVLX05PTkUgPSAgICAgICAgMSwKLSAgQUVLX0NSQyA9ICAgICAgICAgMSA8PCAxLAotICBBRUtfQ1JZUFRPID0gICAgICAxIDw8IDIsCi0gIEFFS19GUCA9ICAgICAgICAgIDEgPDwgMywKLSAgQUVLX1NJTUQgPSAgICAgICAgMSA8PCA0LAotICBBRUtfRlAxNiA9ICAgICAgICAxIDw8IDUsCi0gIEFFS19QUk9GSUxFID0gICAgIDEgPDwgNiwKLSAgQUVLX1JBUyA9ICAgICAgICAgMSA8PCA3LAotICBBRUtfTFNFID0gICAgICAgICAxIDw8IDgsCi0gIEFFS19TVkUgPSAgICAgICAgIDEgPDwgOSwKLSAgQUVLX0RPVFBST0QgPSAgICAgMSA8PCAxMCwKLSAgQUVLX1JDUEMgPSAgICAgICAgMSA8PCAxMSwKLSAgQUVLX1JETSA9ICAgICAgICAgMSA8PCAxMiwKLSAgQUVLX1NNNCA9ICAgICAgICAgMSA8PCAxMywKLSAgQUVLX1NIQTMgPSAgICAgICAgMSA8PCAxNCwKLSAgQUVLX1NIQTIgPSAgICAgICAgMSA8PCAxNSwKLSAgQUVLX0FFUyA9ICAgICAgICAgMSA8PCAxNiwKLSAgQUVLX0ZQMTZGTUwgPSAgICAgMSA8PCAxNywKLSAgQUVLX1JBTkQgPSAgICAgICAgMSA8PCAxOCwKLSAgQUVLX01URSA9ICAgICAgICAgMSA8PCAxOSwKLX07Ci0KLVN0cmluZ1JlZiBnZXRDYW5vbmljYWxBcmNoTmFtZShTdHJpbmdSZWYgQXJjaCk7Ci0KLS8vIEluZm9ybWF0aW9uIGJ5IElECi1TdHJpbmdSZWYgZ2V0RlBVTmFtZSh1bnNpZ25lZCBGUFVLaW5kKTsKLUFSTTo6RlBVVmVyc2lvbiBnZXRGUFVWZXJzaW9uKHVuc2lnbmVkIEZQVUtpbmQpOwotQVJNOjpOZW9uU3VwcG9ydExldmVsIGdldEZQVU5lb25TdXBwb3J0TGV2ZWwodW5zaWduZWQgRlBVS2luZCk7Ci1BUk06OkZQVVJlc3RyaWN0aW9uIGdldEZQVVJlc3RyaWN0aW9uKHVuc2lnbmVkIEZQVUtpbmQpOwotCi0vLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIG1vdmVkIHRvIFRhcmdldFR1cGxlIG9uY2UgaXQgZXhpc3RzCi1ib29sIGdldEZQVUZlYXR1cmVzKHVuc2lnbmVkIEZQVUtpbmQsIHN0ZDo6dmVjdG9yPFN0cmluZ1JlZj4gJkZlYXR1cmVzKTsKLWJvb2wgZ2V0RXh0ZW5zaW9uRmVhdHVyZXModW5zaWduZWQgRXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nUmVmPiAmRmVhdHVyZXMpOwotYm9vbCBnZXRBcmNoRmVhdHVyZXMoQXJjaEtpbmQgQUssIHN0ZDo6dmVjdG9yPFN0cmluZ1JlZj4gJkZlYXR1cmVzKTsKLQotU3RyaW5nUmVmIGdldEFyY2hOYW1lKEFyY2hLaW5kIEFLKTsKLXVuc2lnbmVkIGdldEFyY2hBdHRyKEFyY2hLaW5kIEFLKTsKLVN0cmluZ1JlZiBnZXRDUFVBdHRyKEFyY2hLaW5kIEFLKTsKLVN0cmluZ1JlZiBnZXRTdWJBcmNoKEFyY2hLaW5kIEFLKTsKLVN0cmluZ1JlZiBnZXRBcmNoRXh0TmFtZSh1bnNpZ25lZCBBcmNoRXh0S2luZCk7Ci1TdHJpbmdSZWYgZ2V0QXJjaEV4dEZlYXR1cmUoU3RyaW5nUmVmIEFyY2hFeHQpOwotdW5zaWduZWQgY2hlY2tBcmNoVmVyc2lvbihTdHJpbmdSZWYgQXJjaCk7Ci0KLS8vIEluZm9ybWF0aW9uIGJ5IE5hbWUKLXVuc2lnbmVkICBnZXREZWZhdWx0RlBVKFN0cmluZ1JlZiBDUFUsIEFyY2hLaW5kIEFLKTsKLXVuc2lnbmVkICBnZXREZWZhdWx0RXh0ZW5zaW9ucyhTdHJpbmdSZWYgQ1BVLCBBcmNoS2luZCBBSyk7Ci1TdHJpbmdSZWYgZ2V0RGVmYXVsdENQVShTdHJpbmdSZWYgQXJjaCk7Ci1BQXJjaDY0OjpBcmNoS2luZCBnZXRDUFVBcmNoS2luZChTdHJpbmdSZWYgQ1BVKTsKLQotLy8gUGFyc2VyCi11bnNpZ25lZCBwYXJzZUZQVShTdHJpbmdSZWYgRlBVKTsKLUFBcmNoNjQ6OkFyY2hLaW5kIHBhcnNlQXJjaChTdHJpbmdSZWYgQXJjaCk7Ci1BcmNoRXh0S2luZCBwYXJzZUFyY2hFeHQoU3RyaW5nUmVmIEFyY2hFeHQpOwotQXJjaEtpbmQgcGFyc2VDUFVBcmNoKFN0cmluZ1JlZiBDUFUpOwotdm9pZCBmaWxsVmFsaWRDUFVBcmNoTGlzdChTbWFsbFZlY3RvckltcGw8U3RyaW5nUmVmPiAmVmFsdWVzKTsKLUFSTTo6SVNBS2luZCBwYXJzZUFyY2hJU0EoU3RyaW5nUmVmIEFyY2gpOwotQVJNOjpFbmRpYW5LaW5kIHBhcnNlQXJjaEVuZGlhbihTdHJpbmdSZWYgQXJjaCk7Ci1BUk06OlByb2ZpbGVLaW5kIHBhcnNlQXJjaFByb2ZpbGUoU3RyaW5nUmVmIEFyY2gpOwotdW5zaWduZWQgcGFyc2VBcmNoVmVyc2lvbihTdHJpbmdSZWYgQXJjaCk7Ci0KLWJvb2wgaXNYMThSZXNlcnZlZEJ5RGVmYXVsdChjb25zdCBUcmlwbGUgJlRUKTsKLQotfSAvLyBuYW1lc3BhY2UgQUFyY2g2NAotCiBuYW1lc3BhY2UgWDg2IHsKIAogLy8gVGhpcyBzaG91bGQgYmUga2VwdCBpbiBzeW5jIHdpdGggbGliY2MvY29tcGlsZXItcnQgYXMgaXRzIGluY2x1ZGVkIGJ5IGNsYW5nCkBAIC0zMTcsOSArMTIxLDEwIEBACiAgIEdLX0dGWDkwMiA9IDYxLAogICBHS19HRlg5MDQgPSA2MiwKICAgR0tfR0ZYOTA2ID0gNjMsCisgIEdLX0dGWDkwOSA9IDY1LAogCiAgIEdLX0FNREdDTl9GSVJTVCA9IEdLX0dGWDYwMCwKLSAgR0tfQU1ER0NOX0xBU1QgPSBHS19HRlg5MDYsCisgIEdLX0FNREdDTl9MQVNUID0gR0tfR0ZYOTA5LAogfTsKIAogLy8vIEluc3RydWN0aW9uIHNldCBhcmNoaXRlY3R1cmUgdmVyc2lvbi4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UYXJnZXRSZWdpc3RyeS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RhcmdldFJlZ2lzdHJ5LmgKaW5kZXggMWJhZmM0ZS4uNTg1NGQ1NyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RhcmdldFJlZ2lzdHJ5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RhcmdldFJlZ2lzdHJ5LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3VwcG9ydC9UYXJnZXRSZWdpc3RyeS5oIC0gVGFyZ2V0IFJlZ2lzdHJhdGlvbiAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UYXJnZXRTZWxlY3QuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UYXJnZXRTZWxlY3QuaAppbmRleCA1ODI3ODVjLi45ZmZiODRjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVGFyZ2V0U2VsZWN0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RhcmdldFNlbGVjdC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFRhcmdldFNlbGVjdC5oIC0gVGFyZ2V0IFNlbGVjdGlvbiAmIFJlZ2lzdHJhdGlvbiAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVGFza1F1ZXVlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVGFza1F1ZXVlLmgKaW5kZXggNDk5ODFhZC4uZGYyZmZkZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1Rhc2tRdWV1ZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UYXNrUXVldWUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9TdXBwb3J0L1Rhc2tRdWV1ZS5oIC0gQSBUYXNrUXVldWUgaW1wbGVtZW50YXRpb24gLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RocmVhZExvY2FsLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVGhyZWFkTG9jYWwuaAppbmRleCA4ODViZDE4Li5kNjgzOGMxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVGhyZWFkTG9jYWwuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVGhyZWFkTG9jYWwuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1N1cHBvcnQvVGhyZWFkTG9jYWwuaCAtIFRocmVhZCBMb2NhbCBEYXRhIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UaHJlYWRQb29sLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVGhyZWFkUG9vbC5oCmluZGV4IDRmZGJkNTIuLjRiY2JhYTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UaHJlYWRQb29sLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RocmVhZFBvb2wuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9TdXBwb3J0L1RocmVhZFBvb2wuaCAtIEEgVGhyZWFkUG9vbCBpbXBsZW1lbnRhdGlvbiAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RocmVhZGluZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RocmVhZGluZy5oCmluZGV4IGU4MDIxZjYuLjIzYjExNWYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UaHJlYWRpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVGhyZWFkaW5nLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vU3VwcG9ydC9UaHJlYWRpbmcuaCAtIENvbnRyb2wgbXVsdGl0aHJlYWRpbmcgbW9kZSAtLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI3LDcgKzI2LDggQEAKICNkZWZpbmUgTExWTV9USFJFQURJTkdfVVNFX1NURF9DQUxMX09OQ0UgMQogI2VsaWYgZGVmaW5lZChMTFZNX09OX1VOSVgpICYmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAoZGVmaW5lZChfTElCQ1BQX1ZFUlNJT04pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICEoZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKF9fcHBjX18pKSkKKyAgICAgIShkZWZpbmVkKF9fTmV0QlNEX18pIHx8IGRlZmluZWQoX19PcGVuQlNEX18pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgKGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX1BQQ19fKSkpKQogLy8gc3RkOjpjYWxsX29uY2UgZnJvbSBsaWJjKysgaXMgdXNlZCBvbiBhbGwgVW5peCBwbGF0Zm9ybXMuIE90aGVyCiAvLyBpbXBsZW1lbnRhdGlvbnMgbGlrZSBsaWJzdGRjKysgYXJlIGtub3duIHRvIGhhdmUgcHJvYmxlbXMgb24gTmV0QlNELAogLy8gT3BlbkJTRCBhbmQgUG93ZXJQQy4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UaW1lci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RpbWVyLmgKaW5kZXggYTExYzNjZS4uMDlmNzQyMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RpbWVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RpbWVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vU3VwcG9ydC9UaW1lci5oIC0gSW50ZXJ2YWwgVGltaW5nIFN1cHBvcnQgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVG9vbE91dHB1dEZpbGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Ub29sT3V0cHV0RmlsZS5oCmluZGV4IGNmM2JjMmYuLmE5OWUzMjcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Ub29sT3V0cHV0RmlsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Ub29sT3V0cHV0RmlsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFRvb2xPdXRwdXRGaWxlLmggLSBPdXRwdXQgZmlsZXMgZm9yIGNvbXBpbGVyLWxpa2UgdG9vbHMgLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UcmFpbGluZ09iamVjdHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UcmFpbGluZ09iamVjdHMuaAppbmRleCA0OTBiZDk0Li44Y2Y0ZjdhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVHJhaWxpbmdPYmplY3RzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RyYWlsaW5nT2JqZWN0cy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gVHJhaWxpbmdPYmplY3RzLmggLSBWYXJpYWJsZS1sZW5ndGggY2xhc3NlcyAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RyaWdyYW1JbmRleC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1RyaWdyYW1JbmRleC5oCmluZGV4IGRhMGI2ZGEuLjkzNTFjMmQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9UcmlncmFtSW5kZXguaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVHJpZ3JhbUluZGV4LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFRyaWdyYW1JbmRleC5oIC0gYSBoZXVyaXN0aWMgZm9yIFNwZWNpYWxDYXNlTGlzdCAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwogLy8gVHJpZ3JhbUluZGV4IGltcGxlbWVudHMgYSBoZXVyaXN0aWMgZm9yIFNwZWNpYWxDYXNlTGlzdCB0aGF0IGFsbG93cyB0bwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1R5cGVOYW1lLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVHlwZU5hbWUuaAppbmRleCAwZWI3ZWFkLi4yMzY0OTBhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVHlwZU5hbWUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVHlwZU5hbWUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUeXBlTmFtZS5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Vbmljb2RlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVW5pY29kZS5oCmluZGV4IDk4M2FjYWYuLmNhMTdiYmEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9Vbmljb2RlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1VuaWNvZGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1N1cHBvcnQvVW5pY29kZS5oIC0gVW5pY29kZSBjaGFyYWN0ZXIgcHJvcGVydGllcyAgLSotIEMrKyAtKi09PT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1VuaWNvZGVDaGFyUmFuZ2VzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVW5pY29kZUNoYXJSYW5nZXMuaAppbmRleCAzY2Y0YTZkLi40YjU5ZjhhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVW5pY29kZUNoYXJSYW5nZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVW5pY29kZUNoYXJSYW5nZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFVuaWNvZGVDaGFyUmFuZ2VzLmggLSBUeXBlcyBhbmQgZnVuY3Rpb25zIGZvciBjaGFyYWN0ZXIgcmFuZ2VzIC0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAjaWZuZGVmIExMVk1fU1VQUE9SVF9VTklDT0RFQ0hBUlJBTkdFU19ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVW5pcXVlTG9jay5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1VuaXF1ZUxvY2suaAppbmRleCA5MWRjOTExLi4wYTg4N2FkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVW5pcXVlTG9jay5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9VbmlxdWVMb2NrLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3VwcG9ydC9VbmlxdWVMb2NrLmggLSBBY3F1aXJlL1JlbGVhc2UgTXV0ZXggSW4gU2NvcGUgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9WQ1NSZXZpc2lvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1ZDU1JldmlzaW9uLmgKaW5kZXggN2U1NTRiYi4uYTZhOGI5YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1ZDU1JldmlzaW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1ZDU1JldmlzaW9uLmgKQEAgLTEgKzEsMiBAQAotI2RlZmluZSBMTFZNX1JFVklTSU9OICJnaXQtZTZiYmVhM2E3MDkiCisjZGVmaW5lIExMVk1fUkVWSVNJT04gIjYwY2YyM2U1NGU0NmM4MDc1MTNmN2EzNmQwYTdiNzc3OTIwYjU4ODEiCisjZGVmaW5lIExMVk1fUkVQT1NJVE9SWSAiL2J1aWxkYm90L3RtcC90bXBDZEZaX1ciCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVmFsZ3JpbmQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9WYWxncmluZC5oCmluZGV4IDA4NGI5MDEuLjFlMTRkZmUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9WYWxncmluZC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9WYWxncmluZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vU3VwcG9ydC9WYWxncmluZC5oIC0gQ29tbXVuaWNhdGlvbiB3aXRoIFZhbGdyaW5kIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVmVyc2lvblR1cGxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvVmVyc2lvblR1cGxlLmgKaW5kZXggZTg1YTE4OC4uMTQ3MzZkNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1ZlcnNpb25UdXBsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9WZXJzaW9uVHVwbGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBWZXJzaW9uVHVwbGUuaCAtIFZlcnNpb24gTnVtYmVyIEhhbmRsaW5nIC0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9WaXJ0dWFsRmlsZVN5c3RlbS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1ZpcnR1YWxGaWxlU3lzdGVtLmgKaW5kZXggZjJmOGZmYS4uN2I3YzlmOCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1ZpcnR1YWxGaWxlU3lzdGVtLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1ZpcnR1YWxGaWxlU3lzdGVtLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVmlydHVhbEZpbGVTeXN0ZW0uaCAtIFZpcnR1YWwgRmlsZSBTeXN0ZW0gTGF5ZXIgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI0LDYgKzIzLDcgQEAKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvQ2hyb25vLmgiCiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0Vycm9yT3IuaCIKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9QYXRoLmgiCiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L1NvdXJjZU1nci5oIgogI2luY2x1ZGUgPGNhc3NlcnQ+CiAjaW5jbHVkZSA8Y3N0ZGludD4KQEAgLTE5MywxNCArMTkzLDIyIEBACiAKIGNsYXNzIEZpbGVTeXN0ZW07CiAKK25hbWVzcGFjZSBkZXRhaWwgeworCisvLy8gS2VlcHMgc3RhdGUgZm9yIHRoZSByZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yLgorc3RydWN0IFJlY0Rpckl0ZXJTdGF0ZSB7CisgIHN0ZDo6c3RhY2s8ZGlyZWN0b3J5X2l0ZXJhdG9yLCBzdGQ6OnZlY3RvcjxkaXJlY3RvcnlfaXRlcmF0b3I+PiBTdGFjazsKKyAgYm9vbCBIYXNOb1B1c2hSZXF1ZXN0ID0gZmFsc2U7Cit9OworCit9IC8vIGVuZCBuYW1lc3BhY2UgZGV0YWlsCisKIC8vLyBBbiBpbnB1dCBpdGVyYXRvciBvdmVyIHRoZSByZWN1cnNpdmUgY29udGVudHMgb2YgYSB2aXJ0dWFsIHBhdGgsCiAvLy8gc2ltaWxhciB0byBsbHZtOjpzeXM6OmZzOjpyZWN1cnNpdmVfZGlyZWN0b3J5X2l0ZXJhdG9yLgogY2xhc3MgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciB7Ci0gIHVzaW5nIEl0ZXJTdGF0ZSA9Ci0gICAgICBzdGQ6OnN0YWNrPGRpcmVjdG9yeV9pdGVyYXRvciwgc3RkOjp2ZWN0b3I8ZGlyZWN0b3J5X2l0ZXJhdG9yPj47Ci0KICAgRmlsZVN5c3RlbSAqRlM7Ci0gIHN0ZDo6c2hhcmVkX3B0cjxJdGVyU3RhdGU+IFN0YXRlOyAvLyBJbnB1dCBpdGVyYXRvciBzZW1hbnRpY3Mgb24gY29weS4KKyAgc3RkOjpzaGFyZWRfcHRyPGRldGFpbDo6UmVjRGlySXRlclN0YXRlPgorICAgICAgU3RhdGU7IC8vIElucHV0IGl0ZXJhdG9yIHNlbWFudGljcyBvbiBjb3B5LgogCiBwdWJsaWM6CiAgIHJlY3Vyc2l2ZV9kaXJlY3RvcnlfaXRlcmF0b3IoRmlsZVN5c3RlbSAmRlMsIGNvbnN0IFR3aW5lICZQYXRoLApAQCAtMjEyLDggKzIyMCw4IEBACiAgIC8vLyBFcXVpdmFsZW50IHRvIG9wZXJhdG9yKyssIHdpdGggYW4gZXJyb3IgY29kZS4KICAgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciAmaW5jcmVtZW50KHN0ZDo6ZXJyb3JfY29kZSAmRUMpOwogCi0gIGNvbnN0IGRpcmVjdG9yeV9lbnRyeSAmb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKlN0YXRlLT50b3AoKTsgfQotICBjb25zdCBkaXJlY3RvcnlfZW50cnkgKm9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmKlN0YXRlLT50b3AoKTsgfQorICBjb25zdCBkaXJlY3RvcnlfZW50cnkgJm9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpTdGF0ZS0+U3RhY2sudG9wKCk7IH0KKyAgY29uc3QgZGlyZWN0b3J5X2VudHJ5ICpvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJipTdGF0ZS0+U3RhY2sudG9wKCk7IH0KIAogICBib29sIG9wZXJhdG9yPT0oY29uc3QgcmVjdXJzaXZlX2RpcmVjdG9yeV9pdGVyYXRvciAmT3RoZXIpIGNvbnN0IHsKICAgICByZXR1cm4gU3RhdGUgPT0gT3RoZXIuU3RhdGU7IC8vIGlkZW50aXR5CkBAIC0yMjQsOSArMjMyLDEyIEBACiAKICAgLy8vIEdldHMgdGhlIGN1cnJlbnQgbGV2ZWwuIFN0YXJ0aW5nIHBhdGggaXMgYXQgbGV2ZWwgMC4KICAgaW50IGxldmVsKCkgY29uc3QgewotICAgIGFzc2VydCghU3RhdGUtPmVtcHR5KCkgJiYgIkNhbm5vdCBnZXQgbGV2ZWwgd2l0aG91dCBhbnkgaXRlcmF0aW9uIHN0YXRlIik7Ci0gICAgcmV0dXJuIFN0YXRlLT5zaXplKCkgLSAxOworICAgIGFzc2VydCghU3RhdGUtPlN0YWNrLmVtcHR5KCkgJiYKKyAgICAgICAgICAgIkNhbm5vdCBnZXQgbGV2ZWwgd2l0aG91dCBhbnkgaXRlcmF0aW9uIHN0YXRlIik7CisgICAgcmV0dXJuIFN0YXRlLT5TdGFjay5zaXplKCkgLSAxOwogICB9CisKKyAgdm9pZCBub19wdXNoKCkgeyBTdGF0ZS0+SGFzTm9QdXNoUmVxdWVzdCA9IHRydWU7IH0KIH07CiAKIC8vLyBUaGUgdmlydHVhbCBmaWxlIHN5c3RlbSBpbnRlcmZhY2UuCkBAIC0yNjgsNiArMjc5LDkgQEAKICAgLy8vIENoZWNrIHdoZXRoZXIgYSBmaWxlIGV4aXN0cy4gUHJvdmlkZWQgZm9yIGNvbnZlbmllbmNlLgogICBib29sIGV4aXN0cyhjb25zdCBUd2luZSAmUGF0aCk7CiAKKyAgLy8vIElzIHRoZSBmaWxlIG1vdW50ZWQgb24gYSBsb2NhbCBmaWxlc3lzdGVtPworICB2aXJ0dWFsIHN0ZDo6ZXJyb3JfY29kZSBpc0xvY2FsKGNvbnN0IFR3aW5lICZQYXRoLCBib29sICZSZXN1bHQpOworCiAgIC8vLyBNYWtlIFxhIFBhdGggYW4gYWJzb2x1dGUgcGF0aC4KICAgLy8vCiAgIC8vLyBNYWtlcyBcYSBQYXRoIGFic29sdXRlIHVzaW5nIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpZiBpdCBpcyBub3QgYWxyZWFkeS4KQEAgLTMxNSw2ICszMjksNyBAQAogICBkaXJlY3RvcnlfaXRlcmF0b3IgZGlyX2JlZ2luKGNvbnN0IFR3aW5lICZEaXIsIHN0ZDo6ZXJyb3JfY29kZSAmRUMpIG92ZXJyaWRlOwogICBsbHZtOjpFcnJvck9yPHN0ZDo6c3RyaW5nPiBnZXRDdXJyZW50V29ya2luZ0RpcmVjdG9yeSgpIGNvbnN0IG92ZXJyaWRlOwogICBzdGQ6OmVycm9yX2NvZGUgc2V0Q3VycmVudFdvcmtpbmdEaXJlY3RvcnkoY29uc3QgVHdpbmUgJlBhdGgpIG92ZXJyaWRlOworICBzdGQ6OmVycm9yX2NvZGUgaXNMb2NhbChjb25zdCBUd2luZSAmUGF0aCwgYm9vbCAmUmVzdWx0KSBvdmVycmlkZTsKICAgc3RkOjplcnJvcl9jb2RlIGdldFJlYWxQYXRoKGNvbnN0IFR3aW5lICZQYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU21hbGxWZWN0b3JJbXBsPGNoYXI+ICZPdXRwdXQpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0zNTksMTIgKzM3NCwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU21hbGxWZWN0b3JJbXBsPGNoYXI+ICZPdXRwdXQpIGNvbnN0IG92ZXJyaWRlIHsKICAgICByZXR1cm4gRlMtPmdldFJlYWxQYXRoKFBhdGgsIE91dHB1dCk7CiAgIH0KKyAgc3RkOjplcnJvcl9jb2RlIGlzTG9jYWwoY29uc3QgVHdpbmUgJlBhdGgsIGJvb2wgJlJlc3VsdCkgb3ZlcnJpZGUgeworICAgIHJldHVybiBGUy0+aXNMb2NhbChQYXRoLCBSZXN1bHQpOworICB9CiAKIHByb3RlY3RlZDoKICAgRmlsZVN5c3RlbSAmZ2V0VW5kZXJseWluZ0ZTKCkgeyByZXR1cm4gKkZTOyB9CiAKIHByaXZhdGU6CiAgIEludHJ1c2l2ZVJlZkNudFB0cjxGaWxlU3lzdGVtPiBGUzsKKworICB2aXJ0dWFsIHZvaWQgYW5jaG9yKCk7CiB9OwogCiBuYW1lc3BhY2UgZGV0YWlsIHsKQEAgLTQ1Miw3ICs0NzIsNyBAQAogICAvLy8gc3lzdGVtLgogICBzdGQ6OmVycm9yX2NvZGUgZ2V0UmVhbFBhdGgoY29uc3QgVHdpbmUgJlBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8Y2hhcj4gJk91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7Ci0KKyAgc3RkOjplcnJvcl9jb2RlIGlzTG9jYWwoY29uc3QgVHdpbmUgJlBhdGgsIGJvb2wgJlJlc3VsdCkgb3ZlcnJpZGU7CiAgIHN0ZDo6ZXJyb3JfY29kZSBzZXRDdXJyZW50V29ya2luZ0RpcmVjdG9yeShjb25zdCBUd2luZSAmUGF0aCkgb3ZlcnJpZGU7CiB9OwogCkBAIC00NzUsNiArNDk1LDIzMCBAQAogICBzdGQ6OnN0cmluZyBSUGF0aDsKIH07CiAKK2NsYXNzIFZGU0Zyb21ZYW1sRGlySXRlckltcGw7CitjbGFzcyBSZWRpcmVjdGluZ0ZpbGVTeXN0ZW1QYXJzZXI7CisKKy8vLyBBIHZpcnR1YWwgZmlsZSBzeXN0ZW0gcGFyc2VkIGZyb20gYSBZQU1MIGZpbGUuCisvLy8KKy8vLyBDdXJyZW50bHksIHRoaXMgY2xhc3MgYWxsb3dzIGNyZWF0aW5nIHZpcnR1YWwgZGlyZWN0b3JpZXMgYW5kIG1hcHBpbmcKKy8vLyB2aXJ0dWFsIGZpbGUgcGF0aHMgdG8gZXhpc3RpbmcgZXh0ZXJuYWwgZmlsZXMsIGF2YWlsYWJsZSBpbiBcYyBFeHRlcm5hbEZTLgorLy8vCisvLy8gVGhlIGJhc2ljIHN0cnVjdHVyZSBvZiB0aGUgcGFyc2VkIGZpbGUgaXM6CisvLy8gXHZlcmJhdGltCisvLy8geworLy8vICAgJ3ZlcnNpb24nOiA8dmVyc2lvbiBudW1iZXI+LAorLy8vICAgPG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24+CisvLy8gICAncm9vdHMnOiBbCisvLy8gICAgICAgICAgICAgIDxkaXJlY3RvcnkgZW50cmllcz4KKy8vLyAgICAgICAgICAgIF0KKy8vLyB9CisvLy8gXGVuZHZlcmJhdGltCisvLy8KKy8vLyBBbGwgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBvcHRpb25hbC4KKy8vLyAgICdjYXNlLXNlbnNpdGl2ZSc6IDxib29sZWFuLCBkZWZhdWx0PXRydWU+CisvLy8gICAndXNlLWV4dGVybmFsLW5hbWVzJzogPGJvb2xlYW4sIGRlZmF1bHQ9dHJ1ZT4KKy8vLyAgICdvdmVybGF5LXJlbGF0aXZlJzogPGJvb2xlYW4sIGRlZmF1bHQ9ZmFsc2U+CisvLy8gICAnZmFsbHRocm91Z2gnOiA8Ym9vbGVhbiwgZGVmYXVsdD10cnVlPgorLy8vCisvLy8gVmlydHVhbCBkaXJlY3RvcmllcyBhcmUgcmVwcmVzZW50ZWQgYXMKKy8vLyBcdmVyYmF0aW0KKy8vLyB7CisvLy8gICAndHlwZSc6ICdkaXJlY3RvcnknLAorLy8vICAgJ25hbWUnOiA8c3RyaW5nPiwKKy8vLyAgICdjb250ZW50cyc6IFsgPGZpbGUgb3IgZGlyZWN0b3J5IGVudHJpZXM+IF0KKy8vLyB9CisvLy8gXGVuZHZlcmJhdGltCisvLy8KKy8vLyBUaGUgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciB2aXJ0dWFsIGRpcmVjdG9yaWVzIGFyZToKKy8vLyBcdmVyYmF0aW0KKy8vLyBNVGltZSA9IG5vdygpIHdoZW4gY3JlYXRlZAorLy8vIFBlcm1zID0gMDc3NworLy8vIFVzZXIgPSBHcm91cCA9IDAKKy8vLyBTaXplID0gMAorLy8vIFVuaXF1ZUlEID0gdW5zcGVjaWZpZWQgdW5pcXVlIHZhbHVlCisvLy8gXGVuZHZlcmJhdGltCisvLy8KKy8vLyBSZS1tYXBwZWQgZmlsZXMgYXJlIHJlcHJlc2VudGVkIGFzCisvLy8gXHZlcmJhdGltCisvLy8geworLy8vICAgJ3R5cGUnOiAnZmlsZScsCisvLy8gICAnbmFtZSc6IDxzdHJpbmc+LAorLy8vICAgJ3VzZS1leHRlcm5hbC1uYW1lJzogPGJvb2xlYW4+ICMgT3B0aW9uYWwKKy8vLyAgICdleHRlcm5hbC1jb250ZW50cyc6IDxwYXRoIHRvIGV4dGVybmFsIGZpbGU+CisvLy8gfQorLy8vIFxlbmR2ZXJiYXRpbQorLy8vCisvLy8gYW5kIGluaGVyaXQgdGhlaXIgYXR0cmlidXRlcyBmcm9tIHRoZSBleHRlcm5hbCBjb250ZW50cy4KKy8vLworLy8vIEluIGJvdGggY2FzZXMsIHRoZSAnbmFtZScgZmllbGQgbWF5IGNvbnRhaW4gbXVsdGlwbGUgcGF0aCBjb21wb25lbnRzIChlLmcuCisvLy8gL3BhdGgvdG8vZmlsZSkuIEhvd2V2ZXIsIGFueSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBtb3JlIHRoYW4gb25lIGNoaWxkCisvLy8gbXVzdCBiZSB1bmlxdWVseSByZXByZXNlbnRlZCBieSBhIGRpcmVjdG9yeSBlbnRyeS4KK2NsYXNzIFJlZGlyZWN0aW5nRmlsZVN5c3RlbSA6IHB1YmxpYyB2ZnM6OkZpbGVTeXN0ZW0geworcHVibGljOgorICBlbnVtIEVudHJ5S2luZCB7IEVLX0RpcmVjdG9yeSwgRUtfRmlsZSB9OworCisgIC8vLyBBIHNpbmdsZSBmaWxlIG9yIGRpcmVjdG9yeSBpbiB0aGUgVkZTLgorICBjbGFzcyBFbnRyeSB7CisgICAgRW50cnlLaW5kIEtpbmQ7CisgICAgc3RkOjpzdHJpbmcgTmFtZTsKKworICBwdWJsaWM6CisgICAgRW50cnkoRW50cnlLaW5kIEssIFN0cmluZ1JlZiBOYW1lKSA6IEtpbmQoSyksIE5hbWUoTmFtZSkge30KKyAgICB2aXJ0dWFsIH5FbnRyeSgpID0gZGVmYXVsdDsKKworICAgIFN0cmluZ1JlZiBnZXROYW1lKCkgY29uc3QgeyByZXR1cm4gTmFtZTsgfQorICAgIEVudHJ5S2luZCBnZXRLaW5kKCkgY29uc3QgeyByZXR1cm4gS2luZDsgfQorICB9OworCisgIGNsYXNzIFJlZGlyZWN0aW5nRGlyZWN0b3J5RW50cnkgOiBwdWJsaWMgRW50cnkgeworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4+IENvbnRlbnRzOworICAgIFN0YXR1cyBTOworCisgIHB1YmxpYzoKKyAgICBSZWRpcmVjdGluZ0RpcmVjdG9yeUVudHJ5KFN0cmluZ1JlZiBOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEVudHJ5Pj4gQ29udGVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXMgUykKKyAgICAgICAgOiBFbnRyeShFS19EaXJlY3RvcnksIE5hbWUpLCBDb250ZW50cyhzdGQ6Om1vdmUoQ29udGVudHMpKSwKKyAgICAgICAgICBTKHN0ZDo6bW92ZShTKSkge30KKyAgICBSZWRpcmVjdGluZ0RpcmVjdG9yeUVudHJ5KFN0cmluZ1JlZiBOYW1lLCBTdGF0dXMgUykKKyAgICAgICAgOiBFbnRyeShFS19EaXJlY3RvcnksIE5hbWUpLCBTKHN0ZDo6bW92ZShTKSkge30KKworICAgIFN0YXR1cyBnZXRTdGF0dXMoKSB7IHJldHVybiBTOyB9CisKKyAgICB2b2lkIGFkZENvbnRlbnQoc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDb250ZW50KSB7CisgICAgICBDb250ZW50cy5wdXNoX2JhY2soc3RkOjptb3ZlKENvbnRlbnQpKTsKKyAgICB9CisKKyAgICBFbnRyeSAqZ2V0TGFzdENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBDb250ZW50cy5iYWNrKCkuZ2V0KCk7IH0KKworICAgIHVzaW5nIGl0ZXJhdG9yID0gZGVjbHR5cGUoQ29udGVudHMpOjppdGVyYXRvcjsKKworICAgIGl0ZXJhdG9yIGNvbnRlbnRzX2JlZ2luKCkgeyByZXR1cm4gQ29udGVudHMuYmVnaW4oKTsgfQorICAgIGl0ZXJhdG9yIGNvbnRlbnRzX2VuZCgpIHsgcmV0dXJuIENvbnRlbnRzLmVuZCgpOyB9CisKKyAgICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEVudHJ5ICpFKSB7IHJldHVybiBFLT5nZXRLaW5kKCkgPT0gRUtfRGlyZWN0b3J5OyB9CisgIH07CisKKyAgY2xhc3MgUmVkaXJlY3RpbmdGaWxlRW50cnkgOiBwdWJsaWMgRW50cnkgeworICBwdWJsaWM6CisgICAgZW51bSBOYW1lS2luZCB7IE5LX05vdFNldCwgTktfRXh0ZXJuYWwsIE5LX1ZpcnR1YWwgfTsKKworICBwcml2YXRlOgorICAgIHN0ZDo6c3RyaW5nIEV4dGVybmFsQ29udGVudHNQYXRoOworICAgIE5hbWVLaW5kIFVzZU5hbWU7CisKKyAgcHVibGljOgorICAgIFJlZGlyZWN0aW5nRmlsZUVudHJ5KFN0cmluZ1JlZiBOYW1lLCBTdHJpbmdSZWYgRXh0ZXJuYWxDb250ZW50c1BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUtpbmQgVXNlTmFtZSkKKyAgICAgICAgOiBFbnRyeShFS19GaWxlLCBOYW1lKSwgRXh0ZXJuYWxDb250ZW50c1BhdGgoRXh0ZXJuYWxDb250ZW50c1BhdGgpLAorICAgICAgICAgIFVzZU5hbWUoVXNlTmFtZSkge30KKworICAgIFN0cmluZ1JlZiBnZXRFeHRlcm5hbENvbnRlbnRzUGF0aCgpIGNvbnN0IHsgcmV0dXJuIEV4dGVybmFsQ29udGVudHNQYXRoOyB9CisKKyAgICAvLy8gd2hldGhlciB0byB1c2UgdGhlIGV4dGVybmFsIHBhdGggYXMgdGhlIG5hbWUgZm9yIHRoaXMgZmlsZS4KKyAgICBib29sIHVzZUV4dGVybmFsTmFtZShib29sIEdsb2JhbFVzZUV4dGVybmFsTmFtZSkgY29uc3QgeworICAgICAgcmV0dXJuIFVzZU5hbWUgPT0gTktfTm90U2V0ID8gR2xvYmFsVXNlRXh0ZXJuYWxOYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoVXNlTmFtZSA9PSBOS19FeHRlcm5hbCk7CisgICAgfQorCisgICAgTmFtZUtpbmQgZ2V0VXNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIFVzZU5hbWU7IH0KKworICAgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgRW50cnkgKkUpIHsgcmV0dXJuIEUtPmdldEtpbmQoKSA9PSBFS19GaWxlOyB9CisgIH07CisKK3ByaXZhdGU6CisgIGZyaWVuZCBjbGFzcyBWRlNGcm9tWWFtbERpckl0ZXJJbXBsOworICBmcmllbmQgY2xhc3MgUmVkaXJlY3RpbmdGaWxlU3lzdGVtUGFyc2VyOworCisgIC8vLyBUaGUgcm9vdChzKSBvZiB0aGUgdmlydHVhbCBmaWxlIHN5c3RlbS4KKyAgc3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEVudHJ5Pj4gUm9vdHM7CisKKyAgLy8vIFRoZSBmaWxlIHN5c3RlbSB0byB1c2UgZm9yIGV4dGVybmFsIHJlZmVyZW5jZXMuCisgIEludHJ1c2l2ZVJlZkNudFB0cjxGaWxlU3lzdGVtPiBFeHRlcm5hbEZTOworCisgIC8vLyBJZiBJc1JlbGF0aXZlT3ZlcmxheSBpcyBzZXQsIHRoaXMgcmVwcmVzZW50cyB0aGUgZGlyZWN0b3J5CisgIC8vLyBwYXRoIHRoYXQgc2hvdWxkIGJlIHByZWZpeGVkIHRvIGVhY2ggJ2V4dGVybmFsLWNvbnRlbnRzJyBlbnRyeQorICAvLy8gd2hlbiByZWFkaW5nIGZyb20gWUFNTCBmaWxlcy4KKyAgc3RkOjpzdHJpbmcgRXh0ZXJuYWxDb250ZW50c1ByZWZpeERpcjsKKworICAvLy8gQG5hbWUgQ29uZmlndXJhdGlvbgorICAvLy8gQHsKKworICAvLy8gV2hldGhlciB0byBwZXJmb3JtIGNhc2Utc2Vuc2l0aXZlIGNvbXBhcmlzb25zLgorICAvLy8KKyAgLy8vIEN1cnJlbnRseSwgY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZyBvbmx5IHdvcmtzIGNvcnJlY3RseSB3aXRoIEFTQ0lJLgorICBib29sIENhc2VTZW5zaXRpdmUgPSB0cnVlOworCisgIC8vLyBJc1JlbGF0aXZlT3ZlcmxheSBtYXJrcyB3aGV0aGVyIGEgRXh0ZXJuYWxDb250ZW50c1ByZWZpeERpciBwYXRoIG11c3QKKyAgLy8vIGJlIHByZWZpeGVkIGluIGV2ZXJ5ICdleHRlcm5hbC1jb250ZW50cycgd2hlbiByZWFkaW5nIGZyb20gWUFNTCBmaWxlcy4KKyAgYm9vbCBJc1JlbGF0aXZlT3ZlcmxheSA9IGZhbHNlOworCisgIC8vLyBXaGV0aGVyIHRvIHVzZSB0byB1c2UgdGhlIHZhbHVlIG9mICdleHRlcm5hbC1jb250ZW50cycgZm9yIHRoZQorICAvLy8gbmFtZXMgb2YgZmlsZXMuICBUaGlzIGdsb2JhbCB2YWx1ZSBpcyBvdmVycmlkYWJsZSBvbiBhIHBlci1maWxlIGJhc2lzLgorICBib29sIFVzZUV4dGVybmFsTmFtZXMgPSB0cnVlOworCisgIC8vLyBXaGV0aGVyIHRvIGF0dGVtcHQgYSBmaWxlIGxvb2t1cCBpbiBleHRlcm5hbCBmaWxlIHN5c3RlbSBhZnRlciBpdCB3YXNuJ3QKKyAgLy8vIGZvdW5kIGluIFZGUy4KKyAgYm9vbCBJc0ZhbGx0aHJvdWdoID0gdHJ1ZTsKKyAgLy8vIEB9CisKKyAgLy8vIFZpcnR1YWwgZmlsZSBwYXRocyBhbmQgZXh0ZXJuYWwgZmlsZXMgY291bGQgYmUgY2Fub25pY2FsaXplZCB3aXRob3V0ICIuLiIsCisgIC8vLyAiLiIgYW5kICIuLyIgaW4gdGhlaXIgcGF0aHMuIEZJWE1FOiBzb21lIHVuaXR0ZXN0cyBjdXJyZW50bHkgZmFpbCBvbgorICAvLy8gd2luMzIgd2hlbiB1c2luZyByZW1vdmVfZG90cyBhbmQgcmVtb3ZlX2xlYWRpbmdfZG90c2xhc2ggb24gcGF0aHMuCisgIGJvb2wgVXNlQ2Fub25pY2FsaXplZFBhdGhzID0KKyNpZmRlZiBfV0lOMzIKKyAgICAgIGZhbHNlOworI2Vsc2UKKyAgICAgIHRydWU7CisjZW5kaWYKKworICBSZWRpcmVjdGluZ0ZpbGVTeXN0ZW0oSW50cnVzaXZlUmVmQ250UHRyPEZpbGVTeXN0ZW0+IEV4dGVybmFsRlMpCisgICAgICA6IEV4dGVybmFsRlMoc3RkOjptb3ZlKEV4dGVybmFsRlMpKSB7fQorCisgIC8vLyBMb29rcyB1cCB0aGUgcGF0aCA8dHQ+W1N0YXJ0LCBFbmQpPC90dD4gaW4gXHAgRnJvbSwgcG9zc2libHkKKyAgLy8vIHJlY3Vyc2luZyBpbnRvIHRoZSBjb250ZW50cyBvZiBccCBGcm9tIGlmIGl0IGlzIGEgZGlyZWN0b3J5LgorICBFcnJvck9yPEVudHJ5ICo+IGxvb2t1cFBhdGgobGx2bTo6c3lzOjpwYXRoOjpjb25zdF9pdGVyYXRvciBTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OnN5czo6cGF0aDo6Y29uc3RfaXRlcmF0b3IgRW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW50cnkgKkZyb20pIGNvbnN0OworCisgIC8vLyBHZXQgdGhlIHN0YXR1cyBvZiBhIGdpdmVuIGFuIFxjIEVudHJ5LgorICBFcnJvck9yPFN0YXR1cz4gc3RhdHVzKGNvbnN0IFR3aW5lICZQYXRoLCBFbnRyeSAqRSk7CisKK3B1YmxpYzoKKyAgLy8vIExvb2tzIHVwIFxwIFBhdGggaW4gXGMgUm9vdHMuCisgIEVycm9yT3I8RW50cnkgKj4gbG9va3VwUGF0aChjb25zdCBUd2luZSAmUGF0aCkgY29uc3Q7CisKKyAgLy8vIFBhcnNlcyBccCBCdWZmZXIsIHdoaWNoIGlzIGV4cGVjdGVkIHRvIGJlIGluIFlBTUwgZm9ybWF0IGFuZAorICAvLy8gcmV0dXJucyBhIHZpcnR1YWwgZmlsZSBzeXN0ZW0gcmVwcmVzZW50aW5nIGl0cyBjb250ZW50cy4KKyAgc3RhdGljIFJlZGlyZWN0aW5nRmlsZVN5c3RlbSAqCisgIGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QnVmZmVyPiBCdWZmZXIsCisgICAgICAgICBTb3VyY2VNZ3I6OkRpYWdIYW5kbGVyVHkgRGlhZ0hhbmRsZXIsIFN0cmluZ1JlZiBZQU1MRmlsZVBhdGgsCisgICAgICAgICB2b2lkICpEaWFnQ29udGV4dCwgSW50cnVzaXZlUmVmQ250UHRyPEZpbGVTeXN0ZW0+IEV4dGVybmFsRlMpOworCisgIEVycm9yT3I8U3RhdHVzPiBzdGF0dXMoY29uc3QgVHdpbmUgJlBhdGgpIG92ZXJyaWRlOworICBFcnJvck9yPHN0ZDo6dW5pcXVlX3B0cjxGaWxlPj4gb3BlbkZpbGVGb3JSZWFkKGNvbnN0IFR3aW5lICZQYXRoKSBvdmVycmlkZTsKKworICBzdGQ6OmVycm9yX2NvZGUgZ2V0UmVhbFBhdGgoY29uc3QgVHdpbmUgJlBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8Y2hhcj4gJk91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgbGx2bTo6RXJyb3JPcjxzdGQ6OnN0cmluZz4gZ2V0Q3VycmVudFdvcmtpbmdEaXJlY3RvcnkoKSBjb25zdCBvdmVycmlkZTsKKworICBzdGQ6OmVycm9yX2NvZGUgc2V0Q3VycmVudFdvcmtpbmdEaXJlY3RvcnkoY29uc3QgVHdpbmUgJlBhdGgpIG92ZXJyaWRlOworCisgIHN0ZDo6ZXJyb3JfY29kZSBpc0xvY2FsKGNvbnN0IFR3aW5lICZQYXRoLCBib29sICZSZXN1bHQpIG92ZXJyaWRlOworCisgIGRpcmVjdG9yeV9pdGVyYXRvciBkaXJfYmVnaW4oY29uc3QgVHdpbmUgJkRpciwgc3RkOjplcnJvcl9jb2RlICZFQykgb3ZlcnJpZGU7CisKKyAgdm9pZCBzZXRFeHRlcm5hbENvbnRlbnRzUHJlZml4RGlyKFN0cmluZ1JlZiBQcmVmaXhEaXIpOworCisgIFN0cmluZ1JlZiBnZXRFeHRlcm5hbENvbnRlbnRzUHJlZml4RGlyKCkgY29uc3Q7CisKKyNpZiAhZGVmaW5lZChOREVCVUcpIHx8IGRlZmluZWQoTExWTV9FTkFCTEVfRFVNUCkKKyAgTExWTV9EVU1QX01FVEhPRCB2b2lkIGR1bXAoKSBjb25zdDsKKyAgTExWTV9EVU1QX01FVEhPRCB2b2lkIGR1bXBFbnRyeShFbnRyeSAqRSwgaW50IE51bVNwYWNlcyA9IDApIGNvbnN0OworI2VuZGlmCit9OworCiAvLy8gQ29sbGVjdCBhbGwgcGFpcnMgb2YgPHZpcnR1YWwgcGF0aCwgcmVhbCBwYXRoPiBlbnRyaWVzIGZyb20gdGhlCiAvLy8gXHAgWUFNTEZpbGVQYXRoLiBUaGlzIGlzIHVzZWQgYnkgdGhlIG1vZHVsZSBkZXBlbmRlbmN5IGNvbGxlY3RvciB0byBmb3J3YXJkCiAvLy8gdGhlIGVudHJpZXMgaW50byB0aGUgcmVwcm9kdWNlciBvdXRwdXQgVkZTIFlBTUwgZmlsZS4KQEAgLTQ5MCw3ICs3MzQsNiBAQAogICBPcHRpb25hbDxib29sPiBJc0Nhc2VTZW5zaXRpdmU7CiAgIE9wdGlvbmFsPGJvb2w+IElzT3ZlcmxheVJlbGF0aXZlOwogICBPcHRpb25hbDxib29sPiBVc2VFeHRlcm5hbE5hbWVzOwotICBPcHRpb25hbDxib29sPiBJZ25vcmVOb25FeGlzdGVudENvbnRlbnRzOwogICBzdGQ6OnN0cmluZyBPdmVybGF5RGlyOwogCiBwdWJsaWM6CkBAIC01MDQsMTUgKzc0NywxMyBAQAogCiAgIHZvaWQgc2V0VXNlRXh0ZXJuYWxOYW1lcyhib29sIFVzZUV4dE5hbWVzKSB7IFVzZUV4dGVybmFsTmFtZXMgPSBVc2VFeHROYW1lczsgfQogCi0gIHZvaWQgc2V0SWdub3JlTm9uRXhpc3RlbnRDb250ZW50cyhib29sIElnbm9yZUNvbnRlbnRzKSB7Ci0gICAgSWdub3JlTm9uRXhpc3RlbnRDb250ZW50cyA9IElnbm9yZUNvbnRlbnRzOwotICB9Ci0KICAgdm9pZCBzZXRPdmVybGF5RGlyKFN0cmluZ1JlZiBPdmVybGF5RGlyZWN0b3J5KSB7CiAgICAgSXNPdmVybGF5UmVsYXRpdmUgPSB0cnVlOwogICAgIE92ZXJsYXlEaXIuYXNzaWduKE92ZXJsYXlEaXJlY3Rvcnkuc3RyKCkpOwogICB9CiAKKyAgY29uc3Qgc3RkOjp2ZWN0b3I8WUFNTFZGU0VudHJ5PiAmZ2V0TWFwcGluZ3MoKSBjb25zdCB7IHJldHVybiBNYXBwaW5nczsgfQorCiAgIHZvaWQgd3JpdGUobGx2bTo6cmF3X29zdHJlYW0gJk9TKTsKIH07CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9XYXRjaGRvZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1dhdGNoZG9nLmgKaW5kZXggMDFlMWQ5Mi4uMjgxNTk1ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1dhdGNoZG9nLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1dhdGNoZG9nLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tLSBXYXRjaGRvZy5oIC0gV2F0Y2hkb2cgdGltZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9XaW42NEVILmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvV2luNjRFSC5oCmluZGV4IDkyOGViOTAuLmJkZDIzYjQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9XaW42NEVILmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1dpbjY0RUguaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9TdXBwb3J0L1dpbjY0RUguaCAtLS1XaW42NCBFSCBDb25zdGFudHMtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzMsNyArMzIsMjQgQEAKICAgVU9QX1NhdmVOb25Wb2xCaWcsCiAgIFVPUF9TYXZlWE1NMTI4ID0gOCwKICAgVU9QX1NhdmVYTU0xMjhCaWcsCi0gIFVPUF9QdXNoTWFjaEZyYW1lCisgIFVPUF9QdXNoTWFjaEZyYW1lLAorICAvLyBUaGUgZm9sbG93aW5nIHNldCBvZiB1bndpbmQgb3Bjb2RlcyBpcyBmb3IgQVJNNjQuICBUaGV5IGFyZSBkb2N1bWVudGVkIGF0CisgIC8vIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL2NwcC9idWlsZC9hcm02NC1leGNlcHRpb24taGFuZGxpbmcKKyAgVU9QX0FsbG9jTWVkaXVtLAorICBVT1BfU2F2ZUZQTFJYLAorICBVT1BfU2F2ZUZQTFIsCisgIFVPUF9TYXZlUmVnLAorICBVT1BfU2F2ZVJlZ1gsCisgIFVPUF9TYXZlUmVnUCwKKyAgVU9QX1NhdmVSZWdQWCwKKyAgVU9QX1NhdmVGUmVnLAorICBVT1BfU2F2ZUZSZWdYLAorICBVT1BfU2F2ZUZSZWdQLAorICBVT1BfU2F2ZUZSZWdQWCwKKyAgVU9QX1NldEZQLAorICBVT1BfQWRkRlAsCisgIFVPUF9Ob3AsCisgIFVPUF9FbmQKIH07CiAKIC8vLyBVbndpbmRDb2RlIC0gVGhpcyB1bmlvbiBkZXNjcmliZXMgYSBzaW5nbGUgb3BlcmF0aW9uIGluIGEgZnVuY3Rpb24gcHJvbG9nLApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1dpbmRvd3NFcnJvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1dpbmRvd3NFcnJvci5oCmluZGV4IDYzYmZlNTkuLjE5NTQwNTIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9XaW5kb3dzRXJyb3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvV2luZG93c0Vycm9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFdpbmRvd3NFcnJvci5oIC0gU3VwcG9ydCBmb3IgbWFwcGluZyB3aW5kb3dzIGVycm9ycyB0byBwb3NpeC0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvV2l0aENvbG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvV2l0aENvbG9yLmgKaW5kZXggODVmYzVmYS4uZjRlMTA3NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1dpdGhDb2xvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9XaXRoQ29sb3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBXaXRoQ29sb3IuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKQEAgLTI5LDIzICsyOCw0OSBAQAogICBNYWNybywKICAgRXJyb3IsCiAgIFdhcm5pbmcsCi0gIE5vdGUKKyAgTm90ZSwKKyAgUmVtYXJrCiB9OwogCiAvLy8gQW4gUkFJSSBvYmplY3QgdGhhdCB0ZW1wb3JhcmlseSBzd2l0Y2hlcyBhbiBvdXRwdXQgc3RyZWFtIHRvIGEgc3BlY2lmaWMKIC8vLyBjb2xvci4KIGNsYXNzIFdpdGhDb2xvciB7CiAgIHJhd19vc3RyZWFtICZPUzsKLSAgLy8vIERldGVybWluZSB3aGV0aGVyIGNvbG9ycyBzaG91bGQgYmUgZGlzcGxheWVkLgotICBib29sIGNvbG9yc0VuYWJsZWQocmF3X29zdHJlYW0gJk9TKTsKKyAgYm9vbCBEaXNhYmxlQ29sb3JzOwogCiBwdWJsaWM6CiAgIC8vLyBUbyBiZSB1c2VkIGxpa2UgdGhpczogV2l0aENvbG9yKE9TLCBIaWdobGlnaHRDb2xvcjo6U3RyaW5nKSA8PCAidGV4dCI7Ci0gIFdpdGhDb2xvcihyYXdfb3N0cmVhbSAmT1MsIEhpZ2hsaWdodENvbG9yIFMpOworICAvLy8gQHBhcmFtIE9TIFRoZSBvdXRwdXQgc3RyZWFtCisgIC8vLyBAcGFyYW0gUyBTeW1ib2xpYyBuYW1lIGZvciBzeW50YXggZWxlbWVudCB0byBjb2xvcgorICAvLy8gQHBhcmFtIERpc2FibGVDb2xvcnMgV2hldGhlciB0byBpZ25vcmUgY29sb3IgY2hhbmdlcyByZWdhcmRsZXNzIG9mIC1jb2xvcgorICAvLy8gYW5kIHN1cHBvcnQgaW4gT1MKKyAgV2l0aENvbG9yKHJhd19vc3RyZWFtICZPUywgSGlnaGxpZ2h0Q29sb3IgUywgYm9vbCBEaXNhYmxlQ29sb3JzID0gZmFsc2UpOworICAvLy8gVG8gYmUgdXNlZCBsaWtlIHRoaXM6IFdpdGhDb2xvcihPUywgcmF3X29zdHJlYW06OkJsYWNrKSA8PCAidGV4dCI7CisgIC8vLyBAcGFyYW0gT1MgVGhlIG91dHB1dCBzdHJlYW0KKyAgLy8vIEBwYXJhbSBDb2xvciBBTlNJIGNvbG9yIHRvIHVzZSwgdGhlIHNwZWNpYWwgU0FWRURDT0xPUiBjYW4gYmUgdXNlZCB0bworICAvLy8gY2hhbmdlIG9ubHkgdGhlIGJvbGQgYXR0cmlidXRlLCBhbmQga2VlcCBjb2xvcnMgdW50b3VjaGVkCisgIC8vLyBAcGFyYW0gQm9sZCBCb2xkL2JyaWdodGVyIHRleHQsIGRlZmF1bHQgZmFsc2UKKyAgLy8vIEBwYXJhbSBCRyBJZiB0cnVlLCBjaGFuZ2UgdGhlIGJhY2tncm91bmQsIGRlZmF1bHQ6IGNoYW5nZSBmb3JlZ3JvdW5kCisgIC8vLyBAcGFyYW0gRGlzYWJsZUNvbG9ycyBXaGV0aGVyIHRvIGlnbm9yZSBjb2xvciBjaGFuZ2VzIHJlZ2FyZGxlc3Mgb2YgLWNvbG9yCisgIC8vLyBhbmQgc3VwcG9ydCBpbiBPUworICBXaXRoQ29sb3IocmF3X29zdHJlYW0gJk9TLAorICAgICAgICAgICAgcmF3X29zdHJlYW06OkNvbG9ycyBDb2xvciA9IHJhd19vc3RyZWFtOjpTQVZFRENPTE9SLAorICAgICAgICAgICAgYm9vbCBCb2xkID0gZmFsc2UsIGJvb2wgQkcgPSBmYWxzZSwgYm9vbCBEaXNhYmxlQ29sb3JzID0gZmFsc2UpCisgICAgICA6IE9TKE9TKSwgRGlzYWJsZUNvbG9ycyhEaXNhYmxlQ29sb3JzKSB7CisgICAgY2hhbmdlQ29sb3IoQ29sb3IsIEJvbGQsIEJHKTsKKyAgfQogICB+V2l0aENvbG9yKCk7CiAKICAgcmF3X29zdHJlYW0gJmdldCgpIHsgcmV0dXJuIE9TOyB9CiAgIG9wZXJhdG9yIHJhd19vc3RyZWFtICYoKSB7IHJldHVybiBPUzsgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gV2l0aENvbG9yICZvcGVyYXRvcjw8KFQgJk8pIHsKKyAgICBPUyA8PCBPOworICAgIHJldHVybiAqdGhpczsKKyAgfQorICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gV2l0aENvbG9yICZvcGVyYXRvcjw8KGNvbnN0IFQgJk8pIHsKKyAgICBPUyA8PCBPOworICAgIHJldHVybiAqdGhpczsKKyAgfQogCiAgIC8vLyBDb252ZW5pZW5jZSBtZXRob2QgZm9yIHByaW50aW5nICJlcnJvcjogIiB0byBzdGRlcnIuCiAgIHN0YXRpYyByYXdfb3N0cmVhbSAmZXJyb3IoKTsKQEAgLTUzLDEzICs3OCwzNiBAQAogICBzdGF0aWMgcmF3X29zdHJlYW0gJndhcm5pbmcoKTsKICAgLy8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgcHJpbnRpbmcgIm5vdGU6ICIgdG8gc3RkZXJyLgogICBzdGF0aWMgcmF3X29zdHJlYW0gJm5vdGUoKTsKKyAgLy8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgcHJpbnRpbmcgInJlbWFyazogIiB0byBzdGRlcnIuCisgIHN0YXRpYyByYXdfb3N0cmVhbSAmcmVtYXJrKCk7CiAKICAgLy8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgcHJpbnRpbmcgImVycm9yOiAiIHRvIHRoZSBnaXZlbiBzdHJlYW0uCi0gIHN0YXRpYyByYXdfb3N0cmVhbSAmZXJyb3IocmF3X29zdHJlYW0gJk9TLCBTdHJpbmdSZWYgUHJlZml4ID0gIiIpOworICBzdGF0aWMgcmF3X29zdHJlYW0gJmVycm9yKHJhd19vc3RyZWFtICZPUywgU3RyaW5nUmVmIFByZWZpeCA9ICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgRGlzYWJsZUNvbG9ycyA9IGZhbHNlKTsKICAgLy8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgcHJpbnRpbmcgIndhcm5pbmc6ICIgdG8gdGhlIGdpdmVuIHN0cmVhbS4KLSAgc3RhdGljIHJhd19vc3RyZWFtICZ3YXJuaW5nKHJhd19vc3RyZWFtICZPUywgU3RyaW5nUmVmIFByZWZpeCA9ICIiKTsKKyAgc3RhdGljIHJhd19vc3RyZWFtICZ3YXJuaW5nKHJhd19vc3RyZWFtICZPUywgU3RyaW5nUmVmIFByZWZpeCA9ICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBEaXNhYmxlQ29sb3JzID0gZmFsc2UpOwogICAvLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZvciBwcmludGluZyAibm90ZTogIiB0byB0aGUgZ2l2ZW4gc3RyZWFtLgotICBzdGF0aWMgcmF3X29zdHJlYW0gJm5vdGUocmF3X29zdHJlYW0gJk9TLCBTdHJpbmdSZWYgUHJlZml4ID0gIiIpOworICBzdGF0aWMgcmF3X29zdHJlYW0gJm5vdGUocmF3X29zdHJlYW0gJk9TLCBTdHJpbmdSZWYgUHJlZml4ID0gIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIERpc2FibGVDb2xvcnMgPSBmYWxzZSk7CisgIC8vLyBDb252ZW5pZW5jZSBtZXRob2QgZm9yIHByaW50aW5nICJyZW1hcms6ICIgdG8gdGhlIGdpdmVuIHN0cmVhbS4KKyAgc3RhdGljIHJhd19vc3RyZWFtICZyZW1hcmsocmF3X29zdHJlYW0gJk9TLCBTdHJpbmdSZWYgUHJlZml4ID0gIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgRGlzYWJsZUNvbG9ycyA9IGZhbHNlKTsKKworICAvLy8gRGV0ZXJtaW5lIHdoZXRoZXIgY29sb3JzIGFyZSBkaXNwbGF5ZWQuCisgIGJvb2wgY29sb3JzRW5hYmxlZCgpOworCisgIC8vLyBDaGFuZ2UgdGhlIGNvbG9yIG9mIHRleHQgdGhhdCB3aWxsIGJlIG91dHB1dCBmcm9tIHRoaXMgcG9pbnQgZm9yd2FyZC4KKyAgLy8vIEBwYXJhbSBDb2xvciBBTlNJIGNvbG9yIHRvIHVzZSwgdGhlIHNwZWNpYWwgU0FWRURDT0xPUiBjYW4gYmUgdXNlZCB0bworICAvLy8gY2hhbmdlIG9ubHkgdGhlIGJvbGQgYXR0cmlidXRlLCBhbmQga2VlcCBjb2xvcnMgdW50b3VjaGVkCisgIC8vLyBAcGFyYW0gQm9sZCBCb2xkL2JyaWdodGVyIHRleHQsIGRlZmF1bHQgZmFsc2UKKyAgLy8vIEBwYXJhbSBCRyBJZiB0cnVlLCBjaGFuZ2UgdGhlIGJhY2tncm91bmQsIGRlZmF1bHQ6IGNoYW5nZSBmb3JlZ3JvdW5kCisgIFdpdGhDb2xvciAmY2hhbmdlQ29sb3IocmF3X29zdHJlYW06OkNvbG9ycyBDb2xvciwgYm9vbCBCb2xkID0gZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBCRyA9IGZhbHNlKTsKKworICAvLy8gUmVzZXQgdGhlIGNvbG9ycyB0byB0ZXJtaW5hbCBkZWZhdWx0cy4gQ2FsbCB0aGlzIHdoZW4geW91IGFyZSBkb25lCisgIC8vLyBvdXRwdXR0aW5nIGNvbG9yZWQgdGV4dCwgb3IgYmVmb3JlIHByb2dyYW0gZXhpdC4KKyAgV2l0aENvbG9yICZyZXNldENvbG9yKCk7CiB9OwogCiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1g4NkRpc2Fzc2VtYmxlckRlY29kZXJDb21tb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9YODZEaXNhc3NlbWJsZXJEZWNvZGVyQ29tbW9uLmgKaW5kZXggMTg1YjM1Ny4uODNjODY3MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1g4NkRpc2Fzc2VtYmxlckRlY29kZXJDb21tb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvWDg2RGlzYXNzZW1ibGVyRGVjb2RlckNvbW1vbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBYODZEaXNhc3NlbWJsZXJEZWNvZGVyQ29tbW9uLmggLSBEaXNhc3NlbWJsZXIgZGVjb2RlciAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00MTQsNyArNDEzLDcgQEAKICAgRU5VTV9FTlRSWShUWVBFX1IxNiwgICAgICAgICIyLWJ5dGUiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIEVOVU1fRU5UUlkoVFlQRV9SMzIsICAgICAgICAiNC1ieXRlIikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICBFTlVNX0VOVFJZKFRZUEVfUjY0LCAgICAgICAgIjgtYnl0ZSIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgRU5VTV9FTlRSWShUWVBFX0lNTSwgICAgICAgICJpbW1lZGlhdGUgb3BlcmFuZCIpICAgICAgICAgICAgICAgICAgICAgIFwKKyAgRU5VTV9FTlRSWShUWVBFX0lNTSwgICAgICAgICJpbW1lZGlhdGUgb3BlcmFuZCIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIEVOVU1fRU5UUlkoVFlQRV9JTU0zLCAgICAgICAiMS1ieXRlIGltbWVkaWF0ZSBvcGVyYW5kIGJldHdlZW4gMCBhbmQgNyIpICAgICAgXAogICBFTlVNX0VOVFJZKFRZUEVfSU1NNSwgICAgICAgIjEtYnl0ZSBpbW1lZGlhdGUgb3BlcmFuZCBiZXR3ZWVuIDAgYW5kIDMxIikgICAgIFwKICAgRU5VTV9FTlRSWShUWVBFX0FWWDUxMklDQywgICIxLWJ5dGUgaW1tZWRpYXRlIG9wZXJhbmQgZm9yIEFWWDUxMiBpY21wIikgICAgICBcCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvWDg2VGFyZ2V0UGFyc2VyLmRlZiBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9YODZUYXJnZXRQYXJzZXIuZGVmCmluZGV4IGU0YWYwNjUuLmZiODIyMjggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9YODZUYXJnZXRQYXJzZXIuZGVmCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9YODZUYXJnZXRQYXJzZXIuZGVmCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFg4NlRhcmdldFBhcnNlci5kZWYgLSBYODYgdGFyZ2V0IHBhcnNpbmcgZGVmaW5lcyAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zNCwxNyArMzMsMjAgQEAKICNpZm5kZWYgWDg2X0NQVV9UWVBFCiAjZGVmaW5lIFg4Nl9DUFVfVFlQRShBUkNITkFNRSwgRU5VTSkKICNlbmRpZgotWDg2X0NQVV9UWVBFX0NPTVBBVF9XSVRIX0FMSUFTKCJib25uZWxsIiwgICAgSU5URUxfQk9OTkVMTCwgICAgImJvbm5lbGwiLCAiYXRvbSIpCi1YODZfQ1BVX1RZUEVfQ09NUEFUICAgICAgICAgICAoImNvcmUyIiwgICAgICBJTlRFTF9DT1JFMiwgICAgICAiY29yZTIiKQotWDg2X0NQVV9UWVBFX0NPTVBBVCAgICAgICAgICAgKCJuZWhhbGVtIiwgICAgSU5URUxfQ09SRUk3LCAgICAgImNvcmVpNyIpCi1YODZfQ1BVX1RZUEVfQ09NUEFUX1dJVEhfQUxJQVMoImFtZGZhbTEwIiwgICBBTURGQU0xMEgsICAgICAgICAiYW1kZmFtMTBoIiwgImFtZGZhbTEwIikKLVg4Nl9DUFVfVFlQRV9DT01QQVRfV0lUSF9BTElBUygiYmR2ZXIxIiwgICAgIEFNREZBTTE1SCwgICAgICAgICJhbWRmYW0xNWgiLCAiYW1kZmFtMTUiKQotWDg2X0NQVV9UWVBFX0NPTVBBVF9XSVRIX0FMSUFTKCJzaWx2ZXJtb250IiwgSU5URUxfU0lMVkVSTU9OVCwgInNpbHZlcm1vbnQiLCAic2xtIikKLVg4Nl9DUFVfVFlQRV9DT01QQVQgICAgICAgICAgICgia25sIiwgICAgICAgIElOVEVMX0tOTCwgICAgICAgICJrbmwiKQotWDg2X0NQVV9UWVBFX0NPTVBBVCAgICAgICAgICAgKCJidHZlcjEiLCAgICAgQU1EX0JUVkVSMSwgICAgICAgImJ0dmVyMSIpCi1YODZfQ1BVX1RZUEVfQ09NUEFUICAgICAgICAgICAoImJ0dmVyMiIsICAgICBBTURfQlRWRVIyLCAgICAgICAiYnR2ZXIyIikKLVg4Nl9DUFVfVFlQRV9DT01QQVQgICAgICAgICAgICgiem52ZXIxIiwgICAgIEFNREZBTTE3SCwgICAgICAgICJhbWRmYW0xN2giKQotWDg2X0NQVV9UWVBFX0NPTVBBVCAgICAgICAgICAgKCJrbm0iLCAgICAgICAgSU5URUxfS05NLCAgICAgICAgImtubSIpCitYODZfQ1BVX1RZUEVfQ09NUEFUX1dJVEhfQUxJQVMoImJvbm5lbGwiLCAgICAgICBJTlRFTF9CT05ORUxMLCAgICAgICAiYm9ubmVsbCIsICJhdG9tIikKK1g4Nl9DUFVfVFlQRV9DT01QQVQgICAgICAgICAgICgiY29yZTIiLCAgICAgICAgIElOVEVMX0NPUkUyLCAgICAgICAgICJjb3JlMiIpCitYODZfQ1BVX1RZUEVfQ09NUEFUICAgICAgICAgICAoIm5laGFsZW0iLCAgICAgICBJTlRFTF9DT1JFSTcsICAgICAgICAiY29yZWk3IikKK1g4Nl9DUFVfVFlQRV9DT01QQVRfV0lUSF9BTElBUygiYW1kZmFtMTAiLCAgICAgIEFNREZBTTEwSCwgICAgICAgICAgICJhbWRmYW0xMGgiLCAiYW1kZmFtMTAiKQorWDg2X0NQVV9UWVBFX0NPTVBBVF9XSVRIX0FMSUFTKCJiZHZlcjEiLCAgICAgICAgQU1ERkFNMTVILCAgICAgICAgICAgImFtZGZhbTE1aCIsICJhbWRmYW0xNSIpCitYODZfQ1BVX1RZUEVfQ09NUEFUX1dJVEhfQUxJQVMoInNpbHZlcm1vbnQiLCAgICBJTlRFTF9TSUxWRVJNT05ULCAgICAic2lsdmVybW9udCIsICJzbG0iKQorWDg2X0NQVV9UWVBFX0NPTVBBVCAgICAgICAgICAgKCJrbmwiLCAgICAgICAgICAgSU5URUxfS05MLCAgICAgICAgICAgImtubCIpCitYODZfQ1BVX1RZUEVfQ09NUEFUICAgICAgICAgICAoImJ0dmVyMSIsICAgICAgICBBTURfQlRWRVIxLCAgICAgICAgICAiYnR2ZXIxIikKK1g4Nl9DUFVfVFlQRV9DT01QQVQgICAgICAgICAgICgiYnR2ZXIyIiwgICAgICAgIEFNRF9CVFZFUjIsICAgICAgICAgICJidHZlcjIiKQorWDg2X0NQVV9UWVBFX0NPTVBBVCAgICAgICAgICAgKCJ6bnZlcjEiLCAgICAgICAgQU1ERkFNMTdILCAgICAgICAgICAgImFtZGZhbTE3aCIpCitYODZfQ1BVX1RZUEVfQ09NUEFUICAgICAgICAgICAoImtubSIsICAgICAgICAgICBJTlRFTF9LTk0sICAgICAgICAgICAia25tIikKK1g4Nl9DUFVfVFlQRV9DT01QQVQgICAgICAgICAgICgiZ29sZG1vbnQiLCAgICAgIElOVEVMX0dPTERNT05ULCAgICAgICJnb2xkbW9udCIpCitYODZfQ1BVX1RZUEVfQ09NUEFUICAgICAgICAgICAoImdvbGRtb250LXBsdXMiLCBJTlRFTF9HT0xETU9OVF9QTFVTLCAiZ29sZG1vbnQtcGx1cyIpCitYODZfQ1BVX1RZUEVfQ09NUEFUICAgICAgICAgICAoInRyZW1vbnQiLCAgICAgICBJTlRFTF9UUkVNT05ULCAgICAgICAidHJlbW9udCIpCiAvLyBFbnRyaWVzIGJlbG93IHRoaXMgYXJlIG5vdCBpbiBsaWJnY2MvY29tcGlsZXItcnQuCiBYODZfQ1BVX1RZUEUgICAgICAgICAgICAgICAgICAoImkzODYiLCAgICAgICAgSU5URUxfaTM4NikKIFg4Nl9DUFVfVFlQRSAgICAgICAgICAgICAgICAgICgiaTQ4NiIsICAgICAgICBJTlRFTF9pNDg2KQpAQCAtNjQsOSArNjYsNiBAQAogWDg2X0NQVV9UWVBFICAgICAgICAgICAgICAgICAgKCJhdGhsb24teHAiLCAgIEFNRF9BVEhMT05fWFApCiBYODZfQ1BVX1RZUEUgICAgICAgICAgICAgICAgICAoIms4IiwgICAgICAgICAgQU1EX0s4KQogWDg2X0NQVV9UWVBFICAgICAgICAgICAgICAgICAgKCJrOC1zc2UzIiwgICAgIEFNRF9LOFNTRTMpCi1YODZfQ1BVX1RZUEUgICAgICAgICAgICAgICAgICAoImdvbGRtb250IiwgICAgSU5URUxfR09MRE1PTlQpCi1YODZfQ1BVX1RZUEUgICAgICAgICAgICAgICAgICAoImdvbGRtb250LXBsdXMiLCBJTlRFTF9HT0xETU9OVF9QTFVTKQotWDg2X0NQVV9UWVBFICAgICAgICAgICAgICAgICAgKCJ0cmVtb250IiwgICAgIElOVEVMX1RSRU1PTlQpCiAjdW5kZWYgWDg2X0NQVV9UWVBFX0NPTVBBVF9XSVRIX0FMSUFTCiAjdW5kZWYgWDg2X0NQVV9UWVBFX0NPTVBBVAogI3VuZGVmIFg4Nl9DUFVfVFlQRQpAQCAtOTcsOSArOTYsMTIgQEAKIFg4Nl9DUFVfU1VCVFlQRV9DT01QQVQoInNreWxha2UiLCAgICAgICAgSU5URUxfQ09SRUk3X1NLWUxBS0UsICAgICAgICAic2t5bGFrZSIpCiBYODZfQ1BVX1NVQlRZUEVfQ09NUEFUKCJza3lsYWtlLWF2eDUxMiIsIElOVEVMX0NPUkVJN19TS1lMQUtFX0FWWDUxMiwgInNreWxha2UtYXZ4NTEyIikKIFg4Nl9DUFVfU1VCVFlQRV9DT01QQVQoImNhbm5vbmxha2UiLCAgICAgSU5URUxfQ09SRUk3X0NBTk5PTkxBS0UsICAgICAiY2Fubm9ubGFrZSIpCitYODZfQ1BVX1NVQlRZUEVfQ09NUEFUKCJpY2VsYWtlLWNsaWVudCIsIElOVEVMX0NPUkVJN19JQ0VMQUtFX0NMSUVOVCwgImljZWxha2UtY2xpZW50IikKK1g4Nl9DUFVfU1VCVFlQRV9DT01QQVQoImljZWxha2Utc2VydmVyIiwgSU5URUxfQ09SRUk3X0lDRUxBS0VfU0VSVkVSLCAiaWNlbGFrZS1zZXJ2ZXIiKQogLy8gRW50cmllcyBiZWxvdyB0aGlzIGFyZSBub3QgaW4gbGliZ2NjL2NvbXBpbGVyLXJ0LgogWDg2X0NQVV9TVUJUWVBFICAgICAgICgiY29yZTIiLCAgICAgICAgICBJTlRFTF9DT1JFMl82NSkKIFg4Nl9DUFVfU1VCVFlQRSAgICAgICAoInBlbnJ5biIsICAgICAgICAgSU5URUxfQ09SRTJfNDUpCitYODZfQ1BVX1NVQlRZUEUgICAgICAgKCJjYXNjYWRlbGFrZSIsICAgIElOVEVMX0NPUkVJN19DQVNDQURFTEFLRSkKIFg4Nl9DUFVfU1VCVFlQRSAgICAgICAoIms2IiwgICAgICAgICAgICAgQU1EUEVOVElVTV9LNikKIFg4Nl9DUFVfU1VCVFlQRSAgICAgICAoIms2LTIiLCAgICAgICAgICAgQU1EUEVOVElVTV9LNjIpCiBYODZfQ1BVX1NVQlRZUEUgICAgICAgKCJrNi0zIiwgICAgICAgICAgIEFNRFBFTlRJVU1fSzYzKQpAQCAtMTQ3LDExICsxNDksMTYgQEAKIFg4Nl9GRUFUVVJFX0NPTVBBVCgyOCwgRkVBVFVSRV9BVlg1MTI0Vk5OSVcsICAgICJhdng1MTI0dm5uaXciKQogWDg2X0ZFQVRVUkVfQ09NUEFUKDI5LCBGRUFUVVJFX0FWWDUxMjRGTUFQUywgICAgImF2eDUxMjRmbWFwcyIpCiBYODZfRkVBVFVSRV9DT01QQVQoMzAsIEZFQVRVUkVfQVZYNTEyVlBPUENOVERRLCAiYXZ4NTEydnBvcGNudGRxIikKK1g4Nl9GRUFUVVJFX0NPTVBBVCgzMSwgRkVBVFVSRV9BVlg1MTJWQk1JMiwgICAgICJhdng1MTJ2Ym1pMiIpCitYODZfRkVBVFVSRV9DT01QQVQoMzIsIEZFQVRVUkVfR0ZOSSwgICAgICAgICAgICAiZ2ZuaSIpCitYODZfRkVBVFVSRV9DT01QQVQoMzMsIEZFQVRVUkVfVlBDTE1VTFFEUSwgICAgICAidnBjbG11bHFkcSIpCitYODZfRkVBVFVSRV9DT01QQVQoMzQsIEZFQVRVUkVfQVZYNTEyVk5OSSwgICAgICAiYXZ4NTEydm5uaSIpCitYODZfRkVBVFVSRV9DT01QQVQoMzUsIEZFQVRVUkVfQVZYNTEyQklUQUxHLCAgICAiYXZ4NTEyYml0YWxnIikKIC8vIEZlYXR1cmVzIGJlbG93IGhlcmUgYXJlIG5vdCBpbiBsaWJnY2MvY29tcGlsZXItcnQuCi1YODZfRkVBVFVSRSAgICAgICAoMzIsIEZFQVRVUkVfTU9WQkUpCi1YODZfRkVBVFVSRSAgICAgICAoMzMsIEZFQVRVUkVfQURYKQotWDg2X0ZFQVRVUkUgICAgICAgKDM0LCBGRUFUVVJFX0VNNjRUKQotWDg2X0ZFQVRVUkUgICAgICAgKDM1LCBGRUFUVVJFX0NMRkxVU0hPUFQpCi1YODZfRkVBVFVSRSAgICAgICAoMzYsIEZFQVRVUkVfU0hBKQorWDg2X0ZFQVRVUkUgICAgICAgKDY0LCBGRUFUVVJFX01PVkJFKQorWDg2X0ZFQVRVUkUgICAgICAgKDY1LCBGRUFUVVJFX0FEWCkKK1g4Nl9GRUFUVVJFICAgICAgICg2NiwgRkVBVFVSRV9FTTY0VCkKK1g4Nl9GRUFUVVJFICAgICAgICg2NywgRkVBVFVSRV9DTEZMVVNIT1BUKQorWDg2X0ZFQVRVUkUgICAgICAgKDY4LCBGRUFUVVJFX1NIQSkKICN1bmRlZiBYODZfRkVBVFVSRV9DT01QQVQKICN1bmRlZiBYODZfRkVBVFVSRQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1lBTUxQYXJzZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9ZQU1MUGFyc2VyLmgKaW5kZXggNWIwMzFhOS4uMzU3MDExOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1lBTUxQYXJzZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvWUFNTFBhcnNlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFlBTUxQYXJzZXIuaCAtIFNpbXBsZSBZQU1MIHBhcnNlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvWUFNTFRyYWl0cy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L1lBTUxUcmFpdHMuaAppbmRleCA2ODM2YWEyLi5lOTkxZjNiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvWUFNTFRyYWl0cy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9ZQU1MVHJhaXRzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9TdXBwb3J0L1lBTUxUcmFpdHMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBMaW5rZXIKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCkBAIC0zOSw2ICszOCwxMiBAQAogbmFtZXNwYWNlIGxsdm0gewogbmFtZXNwYWNlIHlhbWwgewogCitlbnVtIGNsYXNzIE5vZGVLaW5kIDogdWludDhfdCB7CisgIFNjYWxhciwKKyAgTWFwLAorICBTZXF1ZW5jZSwKK307CisKIHN0cnVjdCBFbXB0eUNvbnRleHQge307CiAKIC8vLyBUaGlzIGNsYXNzIHNob3VsZCBiZSBzcGVjaWFsaXplZCBieSBhbnkgdHlwZSB0aGF0IG5lZWRzIHRvIGJlIGNvbnZlcnRlZApAQCAtMTQ1LDE0ICsxNTAsMTQgQEAKICAgLy8gTXVzdCBwcm92aWRlOgogICAvLwogICAvLyBGdW5jdGlvbiB0byB3cml0ZSB0aGUgdmFsdWUgYXMgYSBzdHJpbmc6Ci0gIC8vc3RhdGljIHZvaWQgb3V0cHV0KGNvbnN0IFQgJnZhbHVlLCB2b2lkICpjdHh0LCBsbHZtOjpyYXdfb3N0cmVhbSAmb3V0KTsKKyAgLy8gc3RhdGljIHZvaWQgb3V0cHV0KGNvbnN0IFQgJnZhbHVlLCB2b2lkICpjdHh0LCBsbHZtOjpyYXdfb3N0cmVhbSAmb3V0KTsKICAgLy8KICAgLy8gRnVuY3Rpb24gdG8gY29udmVydCBhIHN0cmluZyB0byBhIHZhbHVlLiAgUmV0dXJucyB0aGUgZW1wdHkKICAgLy8gU3RyaW5nUmVmIG9uIHN1Y2Nlc3Mgb3IgYW4gZXJyb3Igc3RyaW5nIGlmIHN0cmluZyBpcyBtYWxmb3JtZWQ6Ci0gIC8vc3RhdGljIFN0cmluZ1JlZiBpbnB1dChTdHJpbmdSZWYgc2NhbGFyLCB2b2lkICpjdHh0LCBUICZ2YWx1ZSk7CisgIC8vIHN0YXRpYyBTdHJpbmdSZWYgaW5wdXQoU3RyaW5nUmVmIHNjYWxhciwgdm9pZCAqY3R4dCwgVCAmdmFsdWUpOwogICAvLwogICAvLyBGdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgdGhlIHZhbHVlIHNob3VsZCBiZSBxdW90ZWQuCi0gIC8vc3RhdGljIFF1b3RpbmdUeXBlIG11c3RRdW90ZShTdHJpbmdSZWYpOworICAvLyBzdGF0aWMgUXVvdGluZ1R5cGUgbXVzdFF1b3RlKFN0cmluZ1JlZik7CiB9OwogCiAvLy8gVGhpcyBjbGFzcyBzaG91bGQgYmUgc3BlY2lhbGl6ZWQgYnkgdHlwZSB0aGF0IHJlcXVpcmVzIGN1c3RvbSBjb252ZXJzaW9uCkBAIC0xNjMsNyArMTY4LDcgQEAKIC8vLyAgICAgIHN0YXRpYyB2b2lkIG91dHB1dChjb25zdCBNeVR5cGUgJlZhbHVlLCB2b2lkKiwgbGx2bTo6cmF3X29zdHJlYW0gJk91dCkKIC8vLyAgICAgIHsKIC8vLyAgICAgICAgLy8gc3RyZWFtIG91dCBjdXN0b20gZm9ybWF0dGluZwotLy8vICAgICAgICBPdXQgPDwgVmFsOworLy8vICAgICAgICBPdXQgPDwgVmFsdWU7CiAvLy8gICAgICB9CiAvLy8gICAgICBzdGF0aWMgU3RyaW5nUmVmIGlucHV0KFN0cmluZ1JlZiBTY2FsYXIsIHZvaWQqLCBNeVR5cGUgJlZhbHVlKSB7CiAvLy8gICAgICAgIC8vIHBhcnNlIHNjYWxhciBhbmQgc2V0IGB2YWx1ZWAKQEAgLTE4MSw2ICsxODYsNDcgQEAKICAgLy8gRnVuY3Rpb24gdG8gY29udmVydCBhIHN0cmluZyB0byBhIHZhbHVlLiAgUmV0dXJucyB0aGUgZW1wdHkKICAgLy8gU3RyaW5nUmVmIG9uIHN1Y2Nlc3Mgb3IgYW4gZXJyb3Igc3RyaW5nIGlmIHN0cmluZyBpcyBtYWxmb3JtZWQ6CiAgIC8vIHN0YXRpYyBTdHJpbmdSZWYgaW5wdXQoU3RyaW5nUmVmIFNjYWxhciwgdm9pZCAqY3R4dCwgVCAmVmFsdWUpOworICAvLworICAvLyBPcHRpb25hbDoKKyAgLy8gc3RhdGljIFN0cmluZ1JlZiBpbnB1dFRhZyhUICZWYWwsIHN0ZDo6c3RyaW5nIFRhZykKKyAgLy8gc3RhdGljIHZvaWQgb3V0cHV0VGFnKGNvbnN0IFQgJlZhbCwgcmF3X29zdHJlYW0gJk91dCkKK307CisKKy8vLyBUaGlzIGNsYXNzIHNob3VsZCBiZSBzcGVjaWFsaXplZCBieSB0eXBlIHRoYXQgcmVxdWlyZXMgY3VzdG9tIGNvbnZlcnNpb24KKy8vLyB0by9mcm9tIGEgWUFNTCBzY2FsYXIgd2l0aCBvcHRpb25hbCB0YWdzLiBGb3IgZXhhbXBsZToKKy8vLworLy8vICAgIHRlbXBsYXRlIDw+CisvLy8gICAgc3RydWN0IFRhZ2dlZFNjYWxhclRyYWl0czxNeVR5cGU+IHsKKy8vLyAgICAgIHN0YXRpYyB2b2lkIG91dHB1dChjb25zdCBNeVR5cGUgJlZhbHVlLCB2b2lkKiwgbGx2bTo6cmF3X29zdHJlYW0KKy8vLyAgICAgICZTY2FsYXJPdXQsIGxsdm06OnJhd19vc3RyZWFtICZUYWdPdXQpCisvLy8gICAgICB7CisvLy8gICAgICAgIC8vIHN0cmVhbSBvdXQgY3VzdG9tIGZvcm1hdHRpbmcgaW5jbHVkaW5nIG9wdGlvbmFsIFRhZworLy8vICAgICAgICBPdXQgPDwgVmFsdWU7CisvLy8gICAgICB9CisvLy8gICAgICBzdGF0aWMgU3RyaW5nUmVmIGlucHV0KFN0cmluZ1JlZiBTY2FsYXIsIFN0cmluZ1JlZiBUYWcsIHZvaWQqLCBNeVR5cGUKKy8vLyAgICAgICZWYWx1ZSkgeworLy8vICAgICAgICAvLyBwYXJzZSBzY2FsYXIgYW5kIHNldCBgdmFsdWVgCisvLy8gICAgICAgIC8vIHJldHVybiBlbXB0eSBzdHJpbmcgb24gc3VjY2Vzcywgb3IgZXJyb3Igc3RyaW5nCisvLy8gICAgICAgIHJldHVybiBTdHJpbmdSZWYoKTsKKy8vLyAgICAgIH0KKy8vLyAgICAgIHN0YXRpYyBRdW90aW5nVHlwZSBtdXN0UXVvdGUoY29uc3QgTXlUeXBlICZWYWx1ZSwgU3RyaW5nUmVmKSB7CisvLy8gICAgICAgIHJldHVybiBRdW90aW5nVHlwZTo6U2luZ2xlOworLy8vICAgICAgfQorLy8vICAgIH07Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFRhZ2dlZFNjYWxhclRyYWl0cyB7CisgIC8vIE11c3QgcHJvdmlkZToKKyAgLy8KKyAgLy8gRnVuY3Rpb24gdG8gd3JpdGUgdGhlIHZhbHVlIGFuZCB0YWcgYXMgc3RyaW5nczoKKyAgLy8gc3RhdGljIHZvaWQgb3V0cHV0KGNvbnN0IFQgJlZhbHVlLCB2b2lkICpjdHgsIGxsdm06OnJhd19vc3RyZWFtICZTY2FsYXJPdXQsCisgIC8vIGxsdm06OnJhd19vc3RyZWFtICZUYWdPdXQpOworICAvLworICAvLyBGdW5jdGlvbiB0byBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgdmFsdWUuICBSZXR1cm5zIHRoZSBlbXB0eQorICAvLyBTdHJpbmdSZWYgb24gc3VjY2VzcyBvciBhbiBlcnJvciBzdHJpbmcgaWYgc3RyaW5nIGlzIG1hbGZvcm1lZDoKKyAgLy8gc3RhdGljIFN0cmluZ1JlZiBpbnB1dChTdHJpbmdSZWYgU2NhbGFyLCBTdHJpbmdSZWYgVGFnLCB2b2lkICpjdHh0LCBUCisgIC8vICZWYWx1ZSk7CisgIC8vCisgIC8vIEZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiB0aGUgdmFsdWUgc2hvdWxkIGJlIHF1b3RlZC4KKyAgLy8gc3RhdGljIFF1b3RpbmdUeXBlIG11c3RRdW90ZShjb25zdCBUICZWYWx1ZSwgU3RyaW5nUmVmIFNjYWxhcik7CiB9OwogCiAvLy8gVGhpcyBjbGFzcyBzaG91bGQgYmUgc3BlY2lhbGl6ZWQgYnkgYW55IHR5cGUgdGhhdCBuZWVkcyB0byBiZSBjb252ZXJ0ZWQKQEAgLTIzNCw2ICsyODAsMzEgQEAKICAgLy8gc3RhdGljIHZvaWQgb3V0cHV0KElPICZpbywgVCAmZWxlbSk7CiB9OwogCisvLy8gVGhpcyBjbGFzcyBzaG91bGQgYmUgc3BlY2lhbGl6ZWQgYnkgYW55IHR5cGUgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgYXMKKy8vLyBhIHNjYWxhciwgbWFwLCBvciBzZXF1ZW5jZSwgZGVjaWRlZCBkeW5hbWljYWxseS4gRm9yIGV4YW1wbGU6CisvLy8KKy8vLyAgICB0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxNeUJhc2U+IE15UG9seTsKKy8vLworLy8vICAgIHRlbXBsYXRlPD4KKy8vLyAgICBzdHJ1Y3QgUG9seW1vcnBoaWNUcmFpdHM8TXlQb2x5PiB7CisvLy8gICAgICBzdGF0aWMgTm9kZUtpbmQgZ2V0S2luZChjb25zdCBNeVBvbHkgJnBvbHkpIHsKKy8vLyAgICAgICAgcmV0dXJuIHBvbHktPmdldEtpbmQoKTsKKy8vLyAgICAgIH0KKy8vLyAgICAgIHN0YXRpYyBNeVNjYWxhciYgZ2V0QXNTY2FsYXIoTXlQb2x5ICZwb2x5KSB7CisvLy8gICAgICAgIGlmICghcG9seSB8fCAhaXNhPE15U2NhbGFyPihwb2x5KSkKKy8vLyAgICAgICAgICBwb2x5LnJlc2V0KG5ldyBNeVNjYWxhcigpKTsKKy8vLyAgICAgICAgcmV0dXJuICpjYXN0PE15U2NhbGFyPihwb2x5LmdldCgpKTsKKy8vLyAgICAgIH0KKy8vLyAgICAgIC8vIC4uLgorLy8vICAgIH07Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFBvbHltb3JwaGljVHJhaXRzIHsKKyAgLy8gTXVzdCBwcm92aWRlOgorICAvLyBzdGF0aWMgTm9kZUtpbmQgZ2V0S2luZChjb25zdCBUICZwb2x5KTsKKyAgLy8gc3RhdGljIHNjYWxhcl90eXBlICZnZXRBc1NjYWxhcihUICZwb2x5KTsKKyAgLy8gc3RhdGljIG1hcF90eXBlICZnZXRBc01hcChUICZwb2x5KTsKKyAgLy8gc3RhdGljIHNlcXVlbmNlX3R5cGUgJmdldEFzU2VxdWVuY2UoVCAmcG9seSk7Cit9OworCiAvLyBPbmx5IHVzZWQgZm9yIGJldHRlciBkaWFnbm9zdGljcyBvZiBtaXNzaW5nIHRyYWl0cwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgTWlzc2luZ1RyYWl0OwpAQCAtMjUwLDcgKzMyMSw2IEBACiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgogICBzdGF0aWMgZG91YmxlIHRlc3QoLi4uKTsKIAotcHVibGljOgogICBzdGF0aWMgYm9vbCBjb25zdCB2YWx1ZSA9CiAgICAgKHNpemVvZih0ZXN0PFNjYWxhckVudW1lcmF0aW9uVHJhaXRzPFQ+PihudWxscHRyKSkgPT0gMSk7CiB9OwpAQCAtMjY3LDcgKzMzNyw2IEBACiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgogICBzdGF0aWMgZG91YmxlIHRlc3QoLi4uKTsKIAotcHVibGljOgogICBzdGF0aWMgYm9vbCBjb25zdCB2YWx1ZSA9IChzaXplb2YodGVzdDxTY2FsYXJCaXRTZXRUcmFpdHM8VD4+KG51bGxwdHIpKSA9PSAxKTsKIH07CiAKQEAgLTI4Nyw3ICszNTYsNiBAQAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KICAgc3RhdGljIGRvdWJsZSB0ZXN0KC4uLik7CiAKLXB1YmxpYzoKICAgc3RhdGljIGJvb2wgY29uc3QgdmFsdWUgPQogICAgICAgKHNpemVvZih0ZXN0PFNjYWxhclRyYWl0czxUPj4obnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikpID09IDEpOwogfTsKQEAgLTMwNiwxMSArMzc0LDI4IEBACiAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgogICBzdGF0aWMgZG91YmxlIHRlc3QoLi4uKTsKIAotcHVibGljOgogICBzdGF0aWMgYm9vbCBjb25zdCB2YWx1ZSA9CiAgICAgICAoc2l6ZW9mKHRlc3Q8QmxvY2tTY2FsYXJUcmFpdHM8VD4+KG51bGxwdHIsIG51bGxwdHIpKSA9PSAxKTsKIH07CiAKKy8vIFRlc3QgaWYgVGFnZ2VkU2NhbGFyVHJhaXRzPFQ+IGlzIGRlZmluZWQgb24gdHlwZSBULgordGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBoYXNfVGFnZ2VkU2NhbGFyVHJhaXRzIHsKKyAgdXNpbmcgU2lnbmF0dXJlX2lucHV0ID0gU3RyaW5nUmVmICgqKShTdHJpbmdSZWYsIFN0cmluZ1JlZiwgdm9pZCAqLCBUICYpOworICB1c2luZyBTaWduYXR1cmVfb3V0cHV0ID0gdm9pZCAoKikoY29uc3QgVCAmLCB2b2lkICosIHJhd19vc3RyZWFtICYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdfb3N0cmVhbSAmKTsKKyAgdXNpbmcgU2lnbmF0dXJlX211c3RRdW90ZSA9IFF1b3RpbmdUeXBlICgqKShjb25zdCBUICYsIFN0cmluZ1JlZik7CisKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CisgIHN0YXRpYyBjaGFyIHRlc3QoU2FtZVR5cGU8U2lnbmF0dXJlX2lucHV0LCAmVTo6aW5wdXQ+ICosCisgICAgICAgICAgICAgICAgICAgU2FtZVR5cGU8U2lnbmF0dXJlX291dHB1dCwgJlU6Om91dHB1dD4gKiwKKyAgICAgICAgICAgICAgICAgICBTYW1lVHlwZTxTaWduYXR1cmVfbXVzdFF1b3RlLCAmVTo6bXVzdFF1b3RlPiAqKTsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gc3RhdGljIGRvdWJsZSB0ZXN0KC4uLik7CisKKyAgc3RhdGljIGJvb2wgY29uc3QgdmFsdWUgPQorICAgICAgKHNpemVvZih0ZXN0PFRhZ2dlZFNjYWxhclRyYWl0czxUPj4obnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikpID09IDEpOworfTsKKwogLy8gVGVzdCBpZiBNYXBwaW5nQ29udGV4dFRyYWl0czxUPiBpcyBkZWZpbmVkIG9uIHR5cGUgVC4KIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBDb250ZXh0PiBzdHJ1Y3QgaGFzX01hcHBpbmdUcmFpdHMgewogICB1c2luZyBTaWduYXR1cmVfbWFwcGluZyA9IHZvaWQgKCopKGNsYXNzIElPICYsIFQgJiwgQ29udGV4dCAmKTsKQEAgLTMyMSw3ICs0MDYsNiBAQAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KICAgc3RhdGljIGRvdWJsZSB0ZXN0KC4uLik7CiAKLXB1YmxpYzoKICAgc3RhdGljIGJvb2wgY29uc3QgdmFsdWUgPQogICAgICAgKHNpemVvZih0ZXN0PE1hcHBpbmdDb250ZXh0VHJhaXRzPFQsIENvbnRleHQ+PihudWxscHRyKSkgPT0gMSk7CiB9OwpAQCAtMzM1LDcgKzQxOSw2IEBACiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IHN0YXRpYyBkb3VibGUgdGVzdCguLi4pOwogCi1wdWJsaWM6CiAgIHN0YXRpYyBib29sIGNvbnN0IHZhbHVlID0gKHNpemVvZih0ZXN0PE1hcHBpbmdUcmFpdHM8VD4+KG51bGxwdHIpKSA9PSAxKTsKIH07CiAKQEAgLTM0OSw3ICs0MzIsNiBAQAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KICAgc3RhdGljIGRvdWJsZSB0ZXN0KC4uLik7CiAKLXB1YmxpYzoKICAgc3RhdGljIGJvb2wgY29uc3QgdmFsdWUgPQogICAgICAgKHNpemVvZih0ZXN0PE1hcHBpbmdDb250ZXh0VHJhaXRzPFQsIENvbnRleHQ+PihudWxscHRyKSkgPT0gMSk7CiB9OwpAQCAtMzYzLDcgKzQ0NSw2IEBACiAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IHN0YXRpYyBkb3VibGUgdGVzdCguLi4pOwogCi1wdWJsaWM6CiAgIHN0YXRpYyBib29sIGNvbnN0IHZhbHVlID0gKHNpemVvZih0ZXN0PE1hcHBpbmdUcmFpdHM8VD4+KG51bGxwdHIpKSA9PSAxKTsKIH07CiAKQEAgLTM3OSw3ICs0NjAsNiBAQAogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KICAgc3RhdGljIGRvdWJsZSB0ZXN0KC4uLik7CiAKLXB1YmxpYzoKICAgc3RhdGljIGJvb2wgY29uc3QgdmFsdWUgPSAgKHNpemVvZih0ZXN0PFNlcXVlbmNlVHJhaXRzPFQ+PihudWxscHRyKSkgPT0gMSk7CiB9OwogCkBAIC0zOTUsNyArNDc1LDYgQEAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CiAgIHN0YXRpYyBkb3VibGUgdGVzdCguLi4pOwogCi1wdWJsaWM6CiAgIHN0YXRpYyBib29sIGNvbnN0IHZhbHVlID0KICAgICAgIChzaXplb2YodGVzdDxDdXN0b21NYXBwaW5nVHJhaXRzPFQ+PihudWxscHRyKSkgPT0gMSk7CiB9OwpAQCAtNDI1LDcgKzUwNCw2IEBACiAgIHRlbXBsYXRlPHR5cGVuYW1lIEM+CiAgIHN0YXRpYyBjaGFyICgmZiguLi4pKVsyXTsKIAotcHVibGljOgogICBzdGF0aWMgYm9vbCBjb25zdCB2YWx1ZSA9IHNpemVvZihmPERlcml2ZWQ+KG51bGxwdHIpKSA9PSAyOwogfTsKIApAQCAtNDQ2LDEwICs1MjQsMjAgQEAKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+CiAgIHN0YXRpYyBkb3VibGUgdGVzdCguLi4pOwogCi1wdWJsaWM6CiAgIHN0YXRpYyBib29sIGNvbnN0IHZhbHVlID0gKHNpemVvZih0ZXN0PERvY3VtZW50TGlzdFRyYWl0czxUPj4obnVsbHB0cikpPT0xKTsKIH07CiAKK3RlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaGFzX1BvbHltb3JwaGljVHJhaXRzIHsKKyAgdXNpbmcgU2lnbmF0dXJlX2dldEtpbmQgPSBOb2RlS2luZCAoKikoY29uc3QgVCAmKTsKKworICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KKyAgc3RhdGljIGNoYXIgdGVzdChTYW1lVHlwZTxTaWduYXR1cmVfZ2V0S2luZCwgJlU6OmdldEtpbmQ+ICopOworCisgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiBzdGF0aWMgZG91YmxlIHRlc3QoLi4uKTsKKworICBzdGF0aWMgYm9vbCBjb25zdCB2YWx1ZSA9IChzaXplb2YodGVzdDxQb2x5bW9ycGhpY1RyYWl0czxUPj4obnVsbHB0cikpID09IDEpOworfTsKKwogaW5saW5lIGJvb2wgaXNOdW1lcmljKFN0cmluZ1JlZiBTKSB7CiAgIGNvbnN0IHN0YXRpYyBhdXRvIHNraXBEaWdpdHMgPSBbXShTdHJpbmdSZWYgSW5wdXQpIHsKICAgICByZXR1cm4gSW5wdXQuZHJvcF9mcm9udCgKQEAgLTU5MCw3ICs2NzgsNiBAQAogICAgIC8vIFNhZmUgc2NhbGFyIGNoYXJhY3RlcnMuCiAgICAgY2FzZSAnXyc6CiAgICAgY2FzZSAnLSc6Ci0gICAgY2FzZSAnLyc6CiAgICAgY2FzZSAnXic6CiAgICAgY2FzZSAnLic6CiAgICAgY2FzZSAnLCc6CkBAIC02MDcsNiArNjk0LDEyIEBACiAgICAgLy8gREVMICgweDdGKSBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgYWxsb3dlZCBjaGFyYWN0ZXIgcmFuZ2UuCiAgICAgY2FzZSAweDdGOgogICAgICAgcmV0dXJuIFF1b3RpbmdUeXBlOjpEb3VibGU7CisgICAgLy8gRm9yd2FyZCBzbGFzaCBpcyBhbGxvd2VkIHRvIGJlIHVucXVvdGVkLCBidXQgd2UgcXVvdGUgaXQgYW55d2F5LiAgV2UgaGF2ZQorICAgIC8vIG1hbnkgdGVzdHMgdGhhdCB1c2UgRmlsZUNoZWNrIGFnYWluc3QgWUFNTCBvdXRwdXQsIGFuZCB0aGlzIG91dHB1dCBvZnRlbgorICAgIC8vIGNvbnRhaW5zIHBhdGhzLiAgSWYgd2UgcXVvdGUgYmFja3NsYXNoZXMgYnV0IG5vdCBmb3J3YXJkIHNsYXNoZXMgdGhlbgorICAgIC8vIHBhdGhzIHdpbGwgY29tZSBvdXQgZWl0aGVyIHF1b3RlZCBvciB1bnF1b3RlZCBkZXBlbmRpbmcgb24gd2hpY2ggcGxhdGZvcm0KKyAgICAvLyB0aGUgdGVzdCBpcyBydW4gb24sIG1ha2luZyBGaWxlQ2hlY2sgY29tcGFyaXNvbnMgZGlmZmljdWx0LgorICAgIGNhc2UgJy8nOgogICAgIGRlZmF1bHQ6IHsKICAgICAgIC8vIEMwIGNvbnRyb2wgYmxvY2sgKDB4MCAtIDB4MUYpIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIGFsbG93ZWQgY2hhcmFjdGVyCiAgICAgICAvLyByYW5nZS4KQEAgLTYzMywxMCArNzI2LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWhhc19TY2FsYXJCaXRTZXRUcmFpdHM8VD46OnZhbHVlICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWhhc19TY2FsYXJUcmFpdHM8VD46OnZhbHVlICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWhhc19CbG9ja1NjYWxhclRyYWl0czxUPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaGFzX1RhZ2dlZFNjYWxhclRyYWl0czxUPjo6dmFsdWUgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaGFzX01hcHBpbmdUcmFpdHM8VCwgQ29udGV4dD46OnZhbHVlICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWhhc19TZXF1ZW5jZVRyYWl0czxUPjo6dmFsdWUgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaGFzX0N1c3RvbU1hcHBpbmdUcmFpdHM8VD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWhhc19Eb2N1bWVudExpc3RUcmFpdHM8VD46OnZhbHVlPiB7fTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaGFzX0RvY3VtZW50TGlzdFRyYWl0czxUPjo6dmFsdWUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaGFzX1BvbHltb3JwaGljVHJhaXRzPFQ+Ojp2YWx1ZT4ge307CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb250ZXh0Pgogc3RydWN0IHZhbGlkYXRlZE1hcHBpbmdUcmFpdHMKQEAgLTY5MCw2ICs3ODUsOSBAQAogCiAgIHZpcnR1YWwgdm9pZCBzY2FsYXJTdHJpbmcoU3RyaW5nUmVmICYsIFF1b3RpbmdUeXBlKSA9IDA7CiAgIHZpcnR1YWwgdm9pZCBibG9ja1NjYWxhclN0cmluZyhTdHJpbmdSZWYgJikgPSAwOworICB2aXJ0dWFsIHZvaWQgc2NhbGFyVGFnKHN0ZDo6c3RyaW5nICYpID0gMDsKKworICB2aXJ0dWFsIE5vZGVLaW5kIGdldE5vZGVLaW5kKCkgPSAwOwogCiAgIHZpcnR1YWwgdm9pZCBzZXRFcnJvcihjb25zdCBUd2luZSAmKSA9IDA7CiAKQEAgLTkyNCw2ICsxMDIyLDMxIEBACiAgIH0KIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cit0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxoYXNfVGFnZ2VkU2NhbGFyVHJhaXRzPFQ+Ojp2YWx1ZSwgdm9pZD46OnR5cGUKK3lhbWxpemUoSU8gJmlvLCBUICZWYWwsIGJvb2wsIEVtcHR5Q29udGV4dCAmQ3R4KSB7CisgIGlmIChpby5vdXRwdXR0aW5nKCkpIHsKKyAgICBzdGQ6OnN0cmluZyBTY2FsYXJTdG9yYWdlLCBUYWdTdG9yYWdlOworICAgIHJhd19zdHJpbmdfb3N0cmVhbSBTY2FsYXJCdWZmZXIoU2NhbGFyU3RvcmFnZSksIFRhZ0J1ZmZlcihUYWdTdG9yYWdlKTsKKyAgICBUYWdnZWRTY2FsYXJUcmFpdHM8VD46Om91dHB1dChWYWwsIGlvLmdldENvbnRleHQoKSwgU2NhbGFyQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhZ0J1ZmZlcik7CisgICAgaW8uc2NhbGFyVGFnKFRhZ0J1ZmZlci5zdHIoKSk7CisgICAgU3RyaW5nUmVmIFNjYWxhclN0ciA9IFNjYWxhckJ1ZmZlci5zdHIoKTsKKyAgICBpby5zY2FsYXJTdHJpbmcoU2NhbGFyU3RyLAorICAgICAgICAgICAgICAgICAgICBUYWdnZWRTY2FsYXJUcmFpdHM8VD46Om11c3RRdW90ZShWYWwsIFNjYWxhclN0cikpOworICB9IGVsc2UgeworICAgIHN0ZDo6c3RyaW5nIFRhZzsKKyAgICBpby5zY2FsYXJUYWcoVGFnKTsKKyAgICBTdHJpbmdSZWYgU3RyOworICAgIGlvLnNjYWxhclN0cmluZyhTdHIsIFF1b3RpbmdUeXBlOjpOb25lKTsKKyAgICBTdHJpbmdSZWYgUmVzdWx0ID0KKyAgICAgICAgVGFnZ2VkU2NhbGFyVHJhaXRzPFQ+OjppbnB1dChTdHIsIFRhZywgaW8uZ2V0Q29udGV4dCgpLCBWYWwpOworICAgIGlmICghUmVzdWx0LmVtcHR5KCkpIHsKKyAgICAgIGlvLnNldEVycm9yKFR3aW5lKFJlc3VsdCkpOworICAgIH0KKyAgfQorfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udGV4dD4KIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHZhbGlkYXRlZE1hcHBpbmdUcmFpdHM8VCwgQ29udGV4dD46OnZhbHVlLCB2b2lkPjo6dHlwZQogeWFtbGl6ZShJTyAmaW8sIFQgJlZhbCwgYm9vbCwgQ29udGV4dCAmQ3R4KSB7CkBAIC05ODAsNiArMTEwMywyMCBAQAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3R5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPGhhc19Qb2x5bW9ycGhpY1RyYWl0czxUPjo6dmFsdWUsIHZvaWQ+Ojp0eXBlCit5YW1saXplKElPICZpbywgVCAmVmFsLCBib29sLCBFbXB0eUNvbnRleHQgJkN0eCkgeworICBzd2l0Y2ggKGlvLm91dHB1dHRpbmcoKSA/IFBvbHltb3JwaGljVHJhaXRzPFQ+OjpnZXRLaW5kKFZhbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpby5nZXROb2RlS2luZCgpKSB7CisgIGNhc2UgTm9kZUtpbmQ6OlNjYWxhcjoKKyAgICByZXR1cm4geWFtbGl6ZShpbywgUG9seW1vcnBoaWNUcmFpdHM8VD46OmdldEFzU2NhbGFyKFZhbCksIHRydWUsIEN0eCk7CisgIGNhc2UgTm9kZUtpbmQ6Ok1hcDoKKyAgICByZXR1cm4geWFtbGl6ZShpbywgUG9seW1vcnBoaWNUcmFpdHM8VD46OmdldEFzTWFwKFZhbCksIHRydWUsIEN0eCk7CisgIGNhc2UgTm9kZUtpbmQ6OlNlcXVlbmNlOgorICAgIHJldHVybiB5YW1saXplKGlvLCBQb2x5bW9ycGhpY1RyYWl0czxUPjo6Z2V0QXNTZXF1ZW5jZShWYWwpLCB0cnVlLCBDdHgpOworICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgogdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8bWlzc2luZ1RyYWl0czxULCBFbXB0eUNvbnRleHQ+Ojp2YWx1ZSwgdm9pZD46OnR5cGUKIHlhbWxpemUoSU8gJmlvLCBUICZWYWwsIGJvb2wsIEVtcHR5Q29udGV4dCAmQ3R4KSB7CiAgIGNoYXIgbWlzc2luZ195YW1sX3RyYWl0X2Zvcl90eXBlW3NpemVvZihNaXNzaW5nVHJhaXQ8VD4pXTsKQEAgLTEyNTcsNiArMTM5NCw4IEBACiAgIHZvaWQgZW5kQml0U2V0U2NhbGFyKCkgb3ZlcnJpZGU7CiAgIHZvaWQgc2NhbGFyU3RyaW5nKFN0cmluZ1JlZiAmLCBRdW90aW5nVHlwZSkgb3ZlcnJpZGU7CiAgIHZvaWQgYmxvY2tTY2FsYXJTdHJpbmcoU3RyaW5nUmVmICYpIG92ZXJyaWRlOworICB2b2lkIHNjYWxhclRhZyhzdGQ6OnN0cmluZyAmKSBvdmVycmlkZTsKKyAgTm9kZUtpbmQgZ2V0Tm9kZUtpbmQoKSBvdmVycmlkZTsKICAgdm9pZCBzZXRFcnJvcihjb25zdCBUd2luZSAmbWVzc2FnZSkgb3ZlcnJpZGU7CiAgIGJvb2wgY2FuRWxpZGVFbXB0eVNlcXVlbmNlKCkgb3ZlcnJpZGU7CiAKQEAgLTE0MDIsNiArMTU0MSw4IEBACiAgIHZvaWQgZW5kQml0U2V0U2NhbGFyKCkgb3ZlcnJpZGU7CiAgIHZvaWQgc2NhbGFyU3RyaW5nKFN0cmluZ1JlZiAmLCBRdW90aW5nVHlwZSkgb3ZlcnJpZGU7CiAgIHZvaWQgYmxvY2tTY2FsYXJTdHJpbmcoU3RyaW5nUmVmICYpIG92ZXJyaWRlOworICB2b2lkIHNjYWxhclRhZyhzdGQ6OnN0cmluZyAmKSBvdmVycmlkZTsKKyAgTm9kZUtpbmQgZ2V0Tm9kZUtpbmQoKSBvdmVycmlkZTsKICAgdm9pZCBzZXRFcnJvcihjb25zdCBUd2luZSAmbWVzc2FnZSkgb3ZlcnJpZGU7CiAgIGJvb2wgY2FuRWxpZGVFbXB0eVNlcXVlbmNlKCkgb3ZlcnJpZGU7CiAKQEAgLTE0MjEsMTQgKzE1NjIsMjEgQEAKICAgdm9pZCBmbG93S2V5KFN0cmluZ1JlZiBLZXkpOwogCiAgIGVudW0gSW5TdGF0ZSB7Ci0gICAgaW5TZXEsCi0gICAgaW5GbG93U2VxLAorICAgIGluU2VxRmlyc3RFbGVtZW50LAorICAgIGluU2VxT3RoZXJFbGVtZW50LAorICAgIGluRmxvd1NlcUZpcnN0RWxlbWVudCwKKyAgICBpbkZsb3dTZXFPdGhlckVsZW1lbnQsCiAgICAgaW5NYXBGaXJzdEtleSwKICAgICBpbk1hcE90aGVyS2V5LAogICAgIGluRmxvd01hcEZpcnN0S2V5LAogICAgIGluRmxvd01hcE90aGVyS2V5CiAgIH07CiAKKyAgc3RhdGljIGJvb2wgaW5TZXFBbnlFbGVtZW50KEluU3RhdGUgU3RhdGUpOworICBzdGF0aWMgYm9vbCBpbkZsb3dTZXFBbnlFbGVtZW50KEluU3RhdGUgU3RhdGUpOworICBzdGF0aWMgYm9vbCBpbk1hcEFueUtleShJblN0YXRlIFN0YXRlKTsKKyAgc3RhdGljIGJvb2wgaW5GbG93TWFwQW55S2V5KEluU3RhdGUgU3RhdGUpOworCiAgIHJhd19vc3RyZWFtICZPdXQ7CiAgIGludCBXcmFwQ29sdW1uOwogICBTbWFsbFZlY3RvcjxJblN0YXRlLCA4PiBTdGF0ZVN0YWNrOwpAQCAtMTU2NCw2ICsxNzEyLDE2IEBACiAgIHJldHVybiBJbjsKIH0KIAorLy8gRGVmaW5lIG5vbi1tZW1iZXIgb3BlcmF0b3I+PiBzbyB0aGF0IElucHV0IGNhbiBzdHJlYW0gaW4gYSBwb2x5bW9ycGhpYyB0eXBlLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitpbmxpbmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8aGFzX1BvbHltb3JwaGljVHJhaXRzPFQ+Ojp2YWx1ZSwgSW5wdXQgJj46OnR5cGUKK29wZXJhdG9yPj4oSW5wdXQgJkluLCBUICZWYWwpIHsKKyAgRW1wdHlDb250ZXh0IEN0eDsKKyAgaWYgKEluLnNldEN1cnJlbnREb2N1bWVudCgpKQorICAgIHlhbWxpemUoSW4sIFZhbCwgdHJ1ZSwgQ3R4KTsKKyAgcmV0dXJuIEluOworfQorCiAvLyBQcm92aWRlIGJldHRlciBlcnJvciBtZXNzYWdlIGFib3V0IHR5cGVzIG1pc3NpbmcgYSB0cmFpdCBzcGVjaWFsaXphdGlvbgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8bWlzc2luZ1RyYWl0czxULCBFbXB0eUNvbnRleHQ+Ojp2YWx1ZSwKQEAgLTE2NTIsNiArMTgxMCwyNCBAQAogICByZXR1cm4gT3V0OwogfQogCisvLyBEZWZpbmUgbm9uLW1lbWJlciBvcGVyYXRvcjw8IHNvIHRoYXQgT3V0cHV0IGNhbiBzdHJlYW0gb3V0IGEgcG9seW1vcnBoaWMKKy8vIHR5cGUuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK2lubGluZSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxoYXNfUG9seW1vcnBoaWNUcmFpdHM8VD46OnZhbHVlLCBPdXRwdXQgJj46OnR5cGUKK29wZXJhdG9yPDwoT3V0cHV0ICZPdXQsIFQgJlZhbCkgeworICBFbXB0eUNvbnRleHQgQ3R4OworICBPdXQuYmVnaW5Eb2N1bWVudHMoKTsKKyAgaWYgKE91dC5wcmVmbGlnaHREb2N1bWVudCgwKSkgeworICAgIC8vIEZJWE1FOiBUaGUgcGFyc2VyIGRvZXMgbm90IHN1cHBvcnQgZXhwbGljaXQgZG9jdW1lbnRzIHRlcm1pbmF0ZWQgd2l0aCBhCisgICAgLy8gcGxhaW4gc2NhbGFyOyB0aGUgZW5kLW1hcmtlciBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZSBzY2FsYXIgdG9rZW4uCisgICAgYXNzZXJ0KFBvbHltb3JwaGljVHJhaXRzPFQ+OjpnZXRLaW5kKFZhbCkgIT0gTm9kZUtpbmQ6OlNjYWxhciAmJiAicGxhaW4gc2NhbGFyIGRvY3VtZW50cyBhcmUgbm90IHN1cHBvcnRlZCIpOworICAgIHlhbWxpemUoT3V0LCBWYWwsIHRydWUsIEN0eCk7CisgICAgT3V0LnBvc3RmbGlnaHREb2N1bWVudCgpOworICB9CisgIE91dC5lbmREb2N1bWVudHMoKTsKKyAgcmV0dXJuIE91dDsKK30KKwogLy8gUHJvdmlkZSBiZXR0ZXIgZXJyb3IgbWVzc2FnZSBhYm91dCB0eXBlcyBtaXNzaW5nIGEgdHJhaXQgc3BlY2lhbGl6YXRpb24KIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogaW5saW5lIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPG1pc3NpbmdUcmFpdHM8VCwgRW1wdHlDb250ZXh0Pjo6dmFsdWUsCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvY2lyY3VsYXJfcmF3X29zdHJlYW0uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9jaXJjdWxhcl9yYXdfb3N0cmVhbS5oCmluZGV4IGI0NmZkN2YuLjRlY2RiMTcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9jaXJjdWxhcl9yYXdfb3N0cmVhbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9jaXJjdWxhcl9yYXdfb3N0cmVhbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL1N1cHBvcnQvY2lyY3VsYXJfcmF3X29zdHJlYW0uaCAtIEJ1ZmZlcmVkIHN0cmVhbXMgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvcmF3X29zX29zdHJlYW0uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9yYXdfb3Nfb3N0cmVhbS5oCmluZGV4IGE5ODNhZWIuLmM1MWE5NGQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9yYXdfb3Nfb3N0cmVhbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9yYXdfb3Nfb3N0cmVhbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIHJhd19vc19vc3RyZWFtLmggLSBzdGQ6Om9zdHJlYW0gYWRhcHRvciBmb3IgcmF3X29zdHJlYW0gLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvcmF3X29zdHJlYW0uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9yYXdfb3N0cmVhbS5oCmluZGV4IDlhODZmM2EuLjFlYjEzYzcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9yYXdfb3N0cmVhbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9yYXdfb3N0cmVhbS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0gcmF3X29zdHJlYW0uaCAtIFJhdyBvdXRwdXQgc3RyZWFtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC01NTQsNiArNTUzLDggQEAKICAgcmF3X29zdHJlYW0gJk9TOwogICBTbWFsbFZlY3RvcjxjaGFyLCAwPiBCdWZmZXI7CiAKKyAgdmlydHVhbCB2b2lkIGFuY2hvcigpIG92ZXJyaWRlOworCiBwdWJsaWM6CiAgIGJ1ZmZlcl9vc3RyZWFtKHJhd19vc3RyZWFtICZPUykgOiByYXdfc3ZlY3Rvcl9vc3RyZWFtKEJ1ZmZlciksIE9TKE9TKSB7fQogICB+YnVmZmVyX29zdHJlYW0oKSBvdmVycmlkZSB7IE9TIDw8IHN0cigpOyB9CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvcmF3X3NoYTFfb3N0cmVhbS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L3Jhd19zaGExX29zdHJlYW0uaAppbmRleCBiZDU1ZDk4Li4zOTkxNjkxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvcmF3X3NoYTFfb3N0cmVhbS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC9yYXdfc2hhMV9vc3RyZWFtLmgKQEAgLTEsOSArMSw4IEBACiAvLz09LSByYXdfc2hhMV9vc3RyZWFtLmggLSByYXdfb3N0cmVhbSB0aGF0IGNvbXB1dGUgU0hBMSAgICAgICAgLS0qLSBDKysgLSotPT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC90aHJlYWQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC90aHJlYWQuaAppbmRleCA3ODdhNTEzLi4wODRlZDE2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvdGhyZWFkLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9TdXBwb3J0L3RocmVhZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL1N1cHBvcnQvdGhyZWFkLmggLSBXcmFwcGVyIGZvciA8dGhyZWFkPiAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1N1cHBvcnQvdHlwZV90cmFpdHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC90eXBlX3RyYWl0cy5oCmluZGV4IDU1ZDg0ZjEuLmM4YzZhNzYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC90eXBlX3RyYWl0cy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vU3VwcG9ydC90eXBlX3RyYWl0cy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vU3VwcG9ydC90eXBlX3RyYWl0cy5oIC0gU2ltcGxmaWVkIHR5cGUgdHJhaXRzIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yNSwzNCArMjQsNiBAQAogCiBuYW1lc3BhY2UgbGx2bSB7CiAKLS8vLyBpc1BvZExpa2UgLSBUaGlzIGlzIGEgdHlwZSB0cmFpdCB0aGF0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbgotLy8vIHR5cGUgY2FuIGJlIGNvcGllZCBhcm91bmQgd2l0aCBtZW1jcHkgaW5zdGVhZCBvZiBydW5uaW5nIGN0b3JzIGV0Yy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzUG9kTGlrZSB7Ci0gIC8vIHN0ZDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlIGlzIGF2YWlsYWJsZSBpbiBsaWJjKysgd2l0aCBjbGFuZywgbGlic3RkYysrCi0gIC8vIHRoYXQgY29tZXMgd2l0aCBHQ0MgNS4KLSNpZiAoX19oYXNfZmVhdHVyZShpc190cml2aWFsbHlfY29weWFibGUpICYmIGRlZmluZWQoX0xJQkNQUF9WRVJTSU9OKSkgfHwgICAgICBcCi0gICAgKGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID49IDUpCi0gIC8vIElmIHRoZSBjb21waWxlciBzdXBwb3J0cyB0aGUgaXNfdHJpdmlhbGx5X2NvcHlhYmxlIHRyYWl0IHVzZSBpdCwgYXMgaXQKLSAgLy8gbWF0Y2hlcyB0aGUgZGVmaW5pdGlvbiBvZiBpc1BvZExpa2UgY2xvc2VseS4KLSAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBzdGQ6OmlzX3RyaXZpYWxseV9jb3B5YWJsZTxUPjo6dmFsdWU7Ci0jZWxpZiBfX2hhc19mZWF0dXJlKGlzX3RyaXZpYWxseV9jb3B5YWJsZSkKLSAgLy8gVXNlIHRoZSBpbnRlcm5hbCBuYW1lIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBpc190cml2aWFsbHlfY29weWFibGUgYnV0IHdlCi0gIC8vIGRvbid0IGtub3cgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lcy4gVGhpcyBpcyB0aGUgY2FzZSBmb3IgY2xhbmcgaW4KLSAgLy8gY29uanVuY3Rpb24gd2l0aCBsaWJzdGRjKysgZnJvbSBHQ0MgNC54LgotICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IF9faXNfdHJpdmlhbGx5X2NvcHlhYmxlKFQpOwotI2Vsc2UKLSAgLy8gSWYgd2UgZG9uJ3Qga25vdyBhbnl0aGluZyBlbHNlLCB3ZSBjYW4gKGF0IGxlYXN0KSBhc3N1bWUgdGhhdCBhbGwgbm9uLWNsYXNzCi0gIC8vIHR5cGVzIGFyZSBQT0RzLgotICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9ICFzdGQ6OmlzX2NsYXNzPFQ+Ojp2YWx1ZTsKLSNlbmRpZgotfTsKLQotLy8gc3RkOjpwYWlyJ3MgYXJlIHBvZC1saWtlIGlmIHRoZWlyIGVsZW1lbnRzIGFyZS4KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Ci1zdHJ1Y3QgaXNQb2RMaWtlPHN0ZDo6cGFpcjxULCBVPj4gewotICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGlzUG9kTGlrZTxUPjo6dmFsdWUgJiYgaXNQb2RMaWtlPFU+Ojp2YWx1ZTsKLX07CiAKIC8vLyBNZXRhZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIHR5cGUgaXMgZWl0aGVyIGFuCiAvLy8gaW50ZWdyYWwgdHlwZSBvciBhbiBlbnVtZXJhdGlvbiB0eXBlLCBpbmNsdWRpbmcgZW51bSBjbGFzc2VzLgpAQCAtMTE5LDYgKzkwLDEyIEBACiAgICAgbW92ZV9jb25zdHJ1Y3Rpb25fdHJpdmlhbGl0eV9oZWxwZXIobW92ZV9jb25zdHJ1Y3Rpb25fdHJpdmlhbGl0eV9oZWxwZXImJikgPSBkZWZhdWx0OwogICAgIH5tb3ZlX2NvbnN0cnVjdGlvbl90cml2aWFsaXR5X2hlbHBlcigpID0gZGVmYXVsdDsKIH07CisKK3RlbXBsYXRlPGNsYXNzIFQ+Cit1bmlvbiB0cml2aWFsX2hlbHBlciB7CisgICAgVCB0OworfTsKKwogfSAvLyBlbmQgbmFtZXNwYWNlIGRldGFpbAogCiAvLy8gQW4gaW1wbGVtZW50YXRpb24gb2YgYHN0ZDo6aXNfdHJpdmlhbGx5X2NvcHlfY29uc3RydWN0aWJsZWAgc2luY2Ugd2UgaGF2ZQpAQCAtMTQzLDYgKzEyMCw3OCBAQAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdHJ1Y3QgaXNfdHJpdmlhbGx5X21vdmVfY29uc3RydWN0aWJsZTxUICYmPiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OwogCisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RydWN0IGlzX2NvcHlfYXNzaWduYWJsZSB7CisgIHRlbXBsYXRlPGNsYXNzIEY+CisgICAgc3RhdGljIGF1dG8gZ2V0KEYqKSAtPiBkZWNsdHlwZShzdGQ6OmRlY2x2YWw8RiAmPigpID0gc3RkOjpkZWNsdmFsPGNvbnN0IEYgJj4oKSwgc3RkOjp0cnVlX3R5cGV7fSk7CisgICAgc3RhdGljIHN0ZDo6ZmFsc2VfdHlwZSBnZXQoLi4uKTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPSBkZWNsdHlwZShnZXQoKFQqKW51bGxwdHIpKTo6dmFsdWU7Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0cnVjdCBpc19tb3ZlX2Fzc2lnbmFibGUgeworICB0ZW1wbGF0ZTxjbGFzcyBGPgorICAgIHN0YXRpYyBhdXRvIGdldChGKikgLT4gZGVjbHR5cGUoc3RkOjpkZWNsdmFsPEYgJj4oKSA9IHN0ZDo6ZGVjbHZhbDxGICYmPigpLCBzdGQ6OnRydWVfdHlwZXt9KTsKKyAgICBzdGF0aWMgc3RkOjpmYWxzZV90eXBlIGdldCguLi4pOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1ZSA9IGRlY2x0eXBlKGdldCgoVCopbnVsbHB0cikpOjp2YWx1ZTsKK307CisKKworLy8gQW4gaW1wbGVtZW50YXRpb24gb2YgYHN0ZDo6aXNfdHJpdmlhbGx5X2NvcHlhYmxlYCBzaW5jZSBTVEwgdmVyc2lvbgorLy8gaXMgbm90IGVxdWFsbHkgc3VwcG9ydGVkIGJ5IGFsbCBjb21waWxlcnMsIGVzcGVjaWFsbHkgR0NDIDQuOS4KKy8vIFVuaWZvcm0gaW1wbGVtZW50YXRpb24gb2YgdGhpcyB0cmFpdCBpcyBpbXBvcnRhbnQgZm9yIEFCSSBjb21wYXRpYmlsaXR5CisvLyBhcyBpdCBoYXMgYW4gaW1wYWN0IG9uIFNtYWxsVmVjdG9yJ3MgQUJJIChhbW9uZyBvdGhlcnMpLgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBpc190cml2aWFsbHlfY29weWFibGUgeworCisgIC8vIGNvcHkgY29uc3RydWN0b3JzCisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yID0KKyAgICAgIHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPGRldGFpbDo6dHJpdmlhbF9oZWxwZXI8VD4+Ojp2YWx1ZTsKKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19kZWxldGVkX2NvcHlfY29uc3RydWN0b3IgPQorICAgICAgIXN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPFQ+Ojp2YWx1ZTsKKworICAvLyBtb3ZlIGNvbnN0cnVjdG9ycworICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3RvciA9CisgICAgICBzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxkZXRhaWw6OnRyaXZpYWxfaGVscGVyPFQ+Pjo6dmFsdWU7CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfZGVsZXRlZF9tb3ZlX2NvbnN0cnVjdG9yID0KKyAgICAgICFzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxUPjo6dmFsdWU7CisKKyAgLy8gY29weSBhc3NpZ24KKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc190cml2aWFsX2NvcHlfYXNzaWduID0KKyAgICAgIGlzX2NvcHlfYXNzaWduYWJsZTxkZXRhaWw6OnRyaXZpYWxfaGVscGVyPFQ+Pjo6dmFsdWU7CisgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBoYXNfZGVsZXRlZF9jb3B5X2Fzc2lnbiA9CisgICAgICAhaXNfY29weV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZTsKKworICAvLyBtb3ZlIGFzc2lnbgorICBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24gPQorICAgICAgaXNfbW92ZV9hc3NpZ25hYmxlPGRldGFpbDo6dHJpdmlhbF9oZWxwZXI8VD4+Ojp2YWx1ZTsKKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19kZWxldGVkX21vdmVfYXNzaWduID0KKyAgICAgICFpc19tb3ZlX2Fzc2lnbmFibGU8VD46OnZhbHVlOworCisgIC8vIGRlc3RydWN0b3IKKyAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc190cml2aWFsX2Rlc3RydWN0b3IgPQorICAgICAgc3RkOjppc19kZXN0cnVjdGlibGU8ZGV0YWlsOjp0cml2aWFsX2hlbHBlcjxUPj46OnZhbHVlOworCisgIHB1YmxpYzoKKworICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmFsdWUgPQorICAgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvciAmJgorICAgICAgKGhhc19kZWxldGVkX21vdmVfYXNzaWduIHx8IGhhc190cml2aWFsX21vdmVfYXNzaWduKSAmJgorICAgICAgKGhhc19kZWxldGVkX21vdmVfY29uc3RydWN0b3IgfHwgaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3RvcikgJiYKKyAgICAgIChoYXNfZGVsZXRlZF9jb3B5X2Fzc2lnbiB8fCBoYXNfdHJpdmlhbF9jb3B5X2Fzc2lnbikgJiYKKyAgICAgIChoYXNfZGVsZXRlZF9jb3B5X2NvbnN0cnVjdG9yIHx8IGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3IpOworCisjaWZkZWYgSEFWRV9TVERfSVNfVFJJVklBTExZX0NPUFlBQkxFCisgIHN0YXRpY19hc3NlcnQodmFsdWUgPT0gc3RkOjppc190cml2aWFsbHlfY29weWFibGU8VD46OnZhbHVlLAorICAgICAgICAgICAgICAgICJpbmNvbnNpc3RlbnQgYmVoYXZpb3IgYmV0d2VlbiBsbHZtOjogYW5kIHN0ZDo6IGltcGxlbWVudGF0aW9uIG9mIGlzX3RyaXZpYWxseV9jb3B5YWJsZSIpOworI2VuZGlmCit9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBpc190cml2aWFsbHlfY29weWFibGU8VCo+IDogcHVibGljIHN0ZDo6dHJ1ZV90eXBlIHsKK307CisKKwogfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KIAogLy8gSWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGRldGVjdGluZyB3aGV0aGVyIGEgY2xhc3MgaXMgZmluYWwsIGRlZmluZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYWJsZUdlbi9FcnJvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYWJsZUdlbi9FcnJvci5oCmluZGV4IGRlNGQzYmYuLjdjODNiNjIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFibGVHZW4vRXJyb3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhYmxlR2VuL0Vycm9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9UYWJsZUdlbi9FcnJvci5oIC0gdGJsZ2VuIGVycm9yIGhhbmRsaW5nIGhlbHBlcnMgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFibGVHZW4vTWFpbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYWJsZUdlbi9NYWluLmgKaW5kZXggNjcwNTcyZC4uZTQ2NGNkNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYWJsZUdlbi9NYWluLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYWJsZUdlbi9NYWluLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9UYWJsZUdlbi9NYWluLmggLSB0YmxnZW4gZW50cnkgcG9pbnQgLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFibGVHZW4vUmVjb3JkLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhYmxlR2VuL1JlY29yZC5oCmluZGV4IGUwMjJiYzguLmU0YTA3YmIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFibGVHZW4vUmVjb3JkLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYWJsZUdlbi9SZWNvcmQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1RhYmxlR2VuL1JlY29yZC5oIC0gQ2xhc3NlcyBmb3IgVGFibGUgUmVjb3JkcyAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzE2LDYgKzMxNSw3IEBACiAgICAgSUtfVGVybk9wSW5pdCwKICAgICBJS19Vbk9wSW5pdCwKICAgICBJS19MYXN0T3BJbml0LAorICAgIElLX0NvbmRPcEluaXQsCiAgICAgSUtfRm9sZE9wSW5pdCwKICAgICBJS19Jc0FPcEluaXQsCiAgICAgSUtfU3RyaW5nSW5pdCwKQEAgLTkxMiw2ICs5MTIsODMgQEAKICAgc3RkOjpzdHJpbmcgZ2V0QXNTdHJpbmcoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKKy8vLyAhY29uZChjb25kaXRpb25fMTogdmFsdWUxLCAuLi4gLCBjb25kaXRpb25fbjogdmFsdWUpCisvLy8gU2VsZWN0cyB0aGUgZmlyc3QgdmFsdWUgZm9yIHdoaWNoIGNvbmRpdGlvbiBpcyB0cnVlLgorLy8vIE90aGVyd2lzZSByZXBvcnRzIGFuIGVycm9yLgorY2xhc3MgQ29uZE9wSW5pdCBmaW5hbCA6IHB1YmxpYyBUeXBlZEluaXQsIHB1YmxpYyBGb2xkaW5nU2V0Tm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgVHJhaWxpbmdPYmplY3RzPENvbmRPcEluaXQsIEluaXQgKj4geworICB1bnNpZ25lZCBOdW1Db25kczsKKyAgUmVjVHkgKlZhbFR5cGU7CisKKyAgQ29uZE9wSW5pdCh1bnNpZ25lZCBOQywgUmVjVHkgKlR5cGUpCisgICAgOiBUeXBlZEluaXQoSUtfQ29uZE9wSW5pdCwgVHlwZSksCisgICAgICBOdW1Db25kcyhOQyksIFZhbFR5cGUoVHlwZSkge30KKworICBzaXplX3QgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2FkVG9rZW48SW5pdCAqPikgY29uc3QgeworICAgIHJldHVybiAyKk51bUNvbmRzOworICB9CisKK3B1YmxpYzoKKyAgQ29uZE9wSW5pdChjb25zdCBDb25kT3BJbml0ICYpID0gZGVsZXRlOworICBDb25kT3BJbml0ICZvcGVyYXRvcj0oY29uc3QgQ29uZE9wSW5pdCAmKSA9IGRlbGV0ZTsKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IEluaXQgKkkpIHsKKyAgICByZXR1cm4gSS0+Z2V0S2luZCgpID09IElLX0NvbmRPcEluaXQ7CisgIH0KKworICBzdGF0aWMgQ29uZE9wSW5pdCAqZ2V0KEFycmF5UmVmPEluaXQqPiBDLCBBcnJheVJlZjxJbml0Kj4gViwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlY1R5ICpUeXBlKTsKKworICB2b2lkIFByb2ZpbGUoRm9sZGluZ1NldE5vZGVJRCAmSUQpIGNvbnN0OworCisgIFJlY1R5ICpnZXRWYWxUeXBlKCkgY29uc3QgeyByZXR1cm4gVmFsVHlwZTsgfQorCisgIHVuc2lnbmVkIGdldE51bUNvbmRzKCkgY29uc3QgeyByZXR1cm4gTnVtQ29uZHM7IH0KKworICBJbml0ICpnZXRDb25kKHVuc2lnbmVkIE51bSkgY29uc3QgeworICAgIGFzc2VydChOdW0gPCBOdW1Db25kcyAmJiAiQ29uZGl0aW9uIG51bWJlciBvdXQgb2YgcmFuZ2UhIik7CisgICAgcmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxJbml0ICo+KClbTnVtXTsKKyAgfQorCisgIEluaXQgKmdldFZhbCh1bnNpZ25lZCBOdW0pIGNvbnN0IHsKKyAgICBhc3NlcnQoTnVtIDwgTnVtQ29uZHMgJiYgIlZhbCBudW1iZXIgb3V0IG9mIHJhbmdlISIpOworICAgIHJldHVybiBnZXRUcmFpbGluZ09iamVjdHM8SW5pdCAqPigpW051bStOdW1Db25kc107CisgIH0KKworICBBcnJheVJlZjxJbml0ICo+IGdldENvbmRzKCkgY29uc3QgeworICAgIHJldHVybiBtYWtlQXJyYXlSZWYoZ2V0VHJhaWxpbmdPYmplY3RzPEluaXQgKj4oKSwgTnVtQ29uZHMpOworICB9CisKKyAgQXJyYXlSZWY8SW5pdCAqPiBnZXRWYWxzKCkgY29uc3QgeworICAgIHJldHVybiBtYWtlQXJyYXlSZWYoZ2V0VHJhaWxpbmdPYmplY3RzPEluaXQgKj4oKStOdW1Db25kcywgTnVtQ29uZHMpOworICB9CisKKyAgSW5pdCAqRm9sZChSZWNvcmQgKkN1clJlYykgY29uc3Q7CisKKyAgSW5pdCAqcmVzb2x2ZVJlZmVyZW5jZXMoUmVzb2x2ZXIgJlIpIGNvbnN0IG92ZXJyaWRlOworCisgIGJvb2wgaXNDb25jcmV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICBib29sIGlzQ29tcGxldGUoKSBjb25zdCBvdmVycmlkZTsKKyAgc3RkOjpzdHJpbmcgZ2V0QXNTdHJpbmcoKSBjb25zdCBvdmVycmlkZTsKKworICB1c2luZyBjb25zdF9jYXNlX2l0ZXJhdG9yID0gU21hbGxWZWN0b3JJbXBsPEluaXQqPjo6Y29uc3RfaXRlcmF0b3I7CisgIHVzaW5nIGNvbnN0X3ZhbF9pdGVyYXRvciA9IFNtYWxsVmVjdG9ySW1wbDxJbml0Kj46OmNvbnN0X2l0ZXJhdG9yOworCisgIGlubGluZSBjb25zdF9jYXNlX2l0ZXJhdG9yICBhcmdfYmVnaW4oKSBjb25zdCB7IHJldHVybiBnZXRDb25kcygpLmJlZ2luKCk7IH0KKyAgaW5saW5lIGNvbnN0X2Nhc2VfaXRlcmF0b3IgIGFyZ19lbmQgICgpIGNvbnN0IHsgcmV0dXJuIGdldENvbmRzKCkuZW5kKCk7IH0KKworICBpbmxpbmUgc2l6ZV90ICAgICAgICAgICAgICBjYXNlX3NpemUgKCkgY29uc3QgeyByZXR1cm4gTnVtQ29uZHM7IH0KKyAgaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgY2FzZV9lbXB0eSgpIGNvbnN0IHsgcmV0dXJuIE51bUNvbmRzID09IDA7IH0KKworICBpbmxpbmUgY29uc3RfdmFsX2l0ZXJhdG9yIG5hbWVfYmVnaW4oKSBjb25zdCB7IHJldHVybiBnZXRWYWxzKCkuYmVnaW4oKTt9CisgIGlubGluZSBjb25zdF92YWxfaXRlcmF0b3IgbmFtZV9lbmQgICgpIGNvbnN0IHsgcmV0dXJuIGdldFZhbHMoKS5lbmQoKTsgfQorCisgIGlubGluZSBzaXplX3QgICAgICAgICAgICAgIHZhbF9zaXplICgpIGNvbnN0IHsgcmV0dXJuIE51bUNvbmRzOyB9CisgIGlubGluZSBib29sICAgICAgICAgICAgICAgIHZhbF9lbXB0eSgpIGNvbnN0IHsgcmV0dXJuIE51bUNvbmRzID09IDA7IH0KKworICBJbml0ICpnZXRCaXQodW5zaWduZWQgQml0KSBjb25zdCBvdmVycmlkZTsKK307CisKIC8vLyAhZm9sZGwgKGEsIGIsIGV4cHIsIHN0YXJ0LCBsc3QpIC0gRm9sZCBvdmVyIGEgbGlzdC4KIGNsYXNzIEZvbGRPcEluaXQgOiBwdWJsaWMgVHlwZWRJbml0LCBwdWJsaWMgRm9sZGluZ1NldE5vZGUgewogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFibGVHZW4vU2VhcmNoYWJsZVRhYmxlLnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYWJsZUdlbi9TZWFyY2hhYmxlVGFibGUudGQKaW5kZXggMTA4OWQzNi4uMjY4MGM3MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYWJsZUdlbi9TZWFyY2hhYmxlVGFibGUudGQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYWJsZUdlbi9TZWFyY2hhYmxlVGFibGUudGQKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU2VhcmNoYWJsZVRhYmxlLnRkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSB0YWJsZWdlbiAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFibGVHZW4vU2V0VGhlb3J5LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhYmxlR2VuL1NldFRoZW9yeS5oCmluZGV4IDRiMzJmOWUuLjM1MTU2NDIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFibGVHZW4vU2V0VGhlb3J5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYWJsZUdlbi9TZXRUaGVvcnkuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTZXRUaGVvcnkuaCAtIEdlbmVyYXRlIG9yZGVyZWQgc2V0cyBmcm9tIERBRyBleHByZXNzaW9ucyAtKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYWJsZUdlbi9TdHJpbmdNYXRjaGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhYmxlR2VuL1N0cmluZ01hdGNoZXIuaAppbmRleCAzYWEzNTQwLi43OTViN2E2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhYmxlR2VuL1N0cmluZ01hdGNoZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhYmxlR2VuL1N0cmluZ01hdGNoZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTdHJpbmdNYXRjaGVyLmggLSBHZW5lcmF0ZSBhIG1hdGNoZXIgZm9yIGlucHV0IHN0cmluZ3MgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYWJsZUdlbi9TdHJpbmdUb09mZnNldFRhYmxlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhYmxlR2VuL1N0cmluZ1RvT2Zmc2V0VGFibGUuaAppbmRleCA0YjExZTg4Li43NmNlNTE4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhYmxlR2VuL1N0cmluZ1RvT2Zmc2V0VGFibGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhYmxlR2VuL1N0cmluZ1RvT2Zmc2V0VGFibGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTdHJpbmdUb09mZnNldFRhYmxlLmggLSBFbWl0IGEgYmlnIGNvbmNhdGVuYXRlZCBzdHJpbmcgLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFibGVHZW4vVGFibGVHZW5CYWNrZW5kLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhYmxlR2VuL1RhYmxlR2VuQmFja2VuZC5oCmluZGV4IGQyMjZmMWYuLmE0MjZlNDIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFibGVHZW4vVGFibGVHZW5CYWNrZW5kLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYWJsZUdlbi9UYWJsZUdlbkJhY2tlbmQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1RhYmxlR2VuL1RhYmxlR2VuQmFja2VuZC5oIC0gQmFja2VuZCB1dGlsaXRpZXMgLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjMsNiArMjIsOCBAQAogLy8vIHJhd19vc3RyZWFtLgogdm9pZCBlbWl0U291cmNlRmlsZUhlYWRlcihTdHJpbmdSZWYgRGVzYywgcmF3X29zdHJlYW0gJk9TKTsKIAorZXh0ZXJuIGJvb2wgVGltZVJlZ2lvbnM7CisKIH0gLy8gRW5kIGxsdm0gbmFtZXNwYWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvQ29kZUdlbkNXcmFwcGVycy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvQ29kZUdlbkNXcmFwcGVycy5oCmluZGV4IDNhZDc3YzUuLmE5OTU0NjMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L0NvZGVHZW5DV3JhcHBlcnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9Db2RlR2VuQ1dyYXBwZXJzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9UYXJnZXQvQ29kZUdlbkNXcmFwcGVycy5oIC0gQ29kZUdlbiBDIFdyYXBwZXJzIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L0dlbmVyaWNPcGNvZGVzLnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvR2VuZXJpY09wY29kZXMudGQKaW5kZXggMzk5Y2VhOS4uZTRiNDUyZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvR2VuZXJpY09wY29kZXMudGQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvR2VuZXJpY09wY29kZXMudGQKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIEdlbmVyaWNPcGNvZGVzLnRkIC0gT3Bjb2RlcyB1c2VkIHdpdGggR2xvYmFsSVNlbCAtLS0qLSB0YWJsZWdlbiAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTkzLDEyICs5MiwxNCBAQAogICBsZXQgaGFzU2lkZUVmZmVjdHMgPSAwOwogfQogCisvLyBPbmx5IHN1cHBvcnRzIHNjYWxhciByZXN1bHQgdHlwZXMKIGRlZiBHX0NPTlNUQU5UIDogR2VuZXJpY0luc3RydWN0aW9uIHsKICAgbGV0IE91dE9wZXJhbmRMaXN0ID0gKG91dHMgdHlwZTA6JGRzdCk7CiAgIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyB1bmtub3duOiRpbW0pOwogICBsZXQgaGFzU2lkZUVmZmVjdHMgPSAwOwogfQogCisvLyBPbmx5IHN1cHBvcnRzIHNjYWxhciByZXN1bHQgdHlwZXMKIGRlZiBHX0ZDT05TVEFOVCA6IEdlbmVyaWNJbnN0cnVjdGlvbiB7CiAgIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzIHR5cGUwOiRkc3QpOwogICBsZXQgSW5PcGVyYW5kTGlzdCA9IChpbnMgdW5rbm93bjokaW1tKTsKQEAgLTEyMiwzMSArMTIzLDMxIEBACiAKIGRlZiBHX0NUTFogOiBHZW5lcmljSW5zdHJ1Y3Rpb24gewogICBsZXQgT3V0T3BlcmFuZExpc3QgPSAob3V0cyB0eXBlMDokZHN0KTsKLSAgbGV0IEluT3BlcmFuZExpc3QgPSAoaW5zIHR5cGUwOiRzcmMpOworICBsZXQgSW5PcGVyYW5kTGlzdCA9IChpbnMgdHlwZTE6JHNyYyk7CiAgIGxldCBoYXNTaWRlRWZmZWN0cyA9IDA7CiB9CiAKIGRlZiBHX0NUTFpfWkVST19VTkRFRiA6IEdlbmVyaWNJbnN0cnVjdGlvbiB7CiAgIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzIHR5cGUwOiRkc3QpOwotICBsZXQgSW5PcGVyYW5kTGlzdCA9IChpbnMgdHlwZTA6JHNyYyk7CisgIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyB0eXBlMTokc3JjKTsKICAgbGV0IGhhc1NpZGVFZmZlY3RzID0gMDsKIH0KIAogZGVmIEdfQ1RUWiA6IEdlbmVyaWNJbnN0cnVjdGlvbiB7CiAgIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzIHR5cGUwOiRkc3QpOwotICBsZXQgSW5PcGVyYW5kTGlzdCA9IChpbnMgdHlwZTA6JHNyYyk7CisgIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyB0eXBlMTokc3JjKTsKICAgbGV0IGhhc1NpZGVFZmZlY3RzID0gMDsKIH0KIAogZGVmIEdfQ1RUWl9aRVJPX1VOREVGIDogR2VuZXJpY0luc3RydWN0aW9uIHsKICAgbGV0IE91dE9wZXJhbmRMaXN0ID0gKG91dHMgdHlwZTA6JGRzdCk7Ci0gIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyB0eXBlMDokc3JjKTsKKyAgbGV0IEluT3BlcmFuZExpc3QgPSAoaW5zIHR5cGUxOiRzcmMpOwogICBsZXQgaGFzU2lkZUVmZmVjdHMgPSAwOwogfQogCiBkZWYgR19DVFBPUCA6IEdlbmVyaWNJbnN0cnVjdGlvbiB7CiAgIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzIHR5cGUwOiRkc3QpOwotICBsZXQgSW5PcGVyYW5kTGlzdCA9IChpbnMgdHlwZTA6JHNyYyk7CisgIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyB0eXBlMTokc3JjKTsKICAgbGV0IGhhc1NpZGVFZmZlY3RzID0gMDsKIH0KIApAQCAtMjU1LDIxICsyNTYsMjEgQEAKIC8vIEdlbmVyaWMgbGVmdC1zaGlmdC4KIGRlZiBHX1NITCA6IEdlbmVyaWNJbnN0cnVjdGlvbiB7CiAgIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzIHR5cGUwOiRkc3QpOwotICBsZXQgSW5PcGVyYW5kTGlzdCA9IChpbnMgdHlwZTA6JHNyYzEsIHR5cGUwOiRzcmMyKTsKKyAgbGV0IEluT3BlcmFuZExpc3QgPSAoaW5zIHR5cGUwOiRzcmMxLCB0eXBlMTokc3JjMik7CiAgIGxldCBoYXNTaWRlRWZmZWN0cyA9IDA7CiB9CiAKIC8vIEdlbmVyaWMgbG9naWNhbCByaWdodC1zaGlmdC4KIGRlZiBHX0xTSFIgOiBHZW5lcmljSW5zdHJ1Y3Rpb24gewogICBsZXQgT3V0T3BlcmFuZExpc3QgPSAob3V0cyB0eXBlMDokZHN0KTsKLSAgbGV0IEluT3BlcmFuZExpc3QgPSAoaW5zIHR5cGUwOiRzcmMxLCB0eXBlMDokc3JjMik7CisgIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyB0eXBlMDokc3JjMSwgdHlwZTE6JHNyYzIpOwogICBsZXQgaGFzU2lkZUVmZmVjdHMgPSAwOwogfQogCiAvLyBHZW5lcmljIGFyaXRobWV0aWMgcmlnaHQtc2hpZnQuCiBkZWYgR19BU0hSIDogR2VuZXJpY0luc3RydWN0aW9uIHsKICAgbGV0IE91dE9wZXJhbmRMaXN0ID0gKG91dHMgdHlwZTA6JGRzdCk7Ci0gIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyB0eXBlMDokc3JjMSwgdHlwZTA6JHNyYzIpOworICBsZXQgSW5PcGVyYW5kTGlzdCA9IChpbnMgdHlwZTA6JHNyYzEsIHR5cGUxOiRzcmMyKTsKICAgbGV0IGhhc1NpZGVFZmZlY3RzID0gMDsKIH0KIApAQCAtNDU0LDYgKzQ1NSwxMiBAQAogICBsZXQgaGFzU2lkZUVmZmVjdHMgPSAwOwogfQogCitkZWYgR19GQ0FOT05JQ0FMSVpFIDogR2VuZXJpY0luc3RydWN0aW9uIHsKKyAgbGV0IE91dE9wZXJhbmRMaXN0ID0gKG91dHMgdHlwZTA6JGRzdCk7CisgIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyB0eXBlMDokc3JjKTsKKyAgbGV0IGhhc1NpZGVFZmZlY3RzID0gMDsKK30KKwogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIEZsb2F0aW5nIFBvaW50IEJpbmFyeSBvcHMuCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTQwLDYgKzU0Nyw1MSBAQAogICBsZXQgaGFzU2lkZUVmZmVjdHMgPSAwOwogfQogCisvLyBGbG9hdGluZyBwb2ludCBiYXNlLTEwIGxvZ2FyaXRobSBvZiBhIHZhbHVlLgorZGVmIEdfRkxPRzEwIDogR2VuZXJpY0luc3RydWN0aW9uIHsKKyAgbGV0IE91dE9wZXJhbmRMaXN0ID0gKG91dHMgdHlwZTA6JGRzdCk7CisgIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyB0eXBlMDokc3JjMSk7CisgIGxldCBoYXNTaWRlRWZmZWN0cyA9IDA7Cit9CisKKy8vIEZsb2F0aW5nIHBvaW50IGNlaWxpbmcgb2YgYSB2YWx1ZS4KK2RlZiBHX0ZDRUlMIDogR2VuZXJpY0luc3RydWN0aW9uIHsKKyAgbGV0IE91dE9wZXJhbmRMaXN0ID0gKG91dHMgdHlwZTA6JGRzdCk7CisgIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyB0eXBlMDokc3JjMSk7CisgIGxldCBoYXNTaWRlRWZmZWN0cyA9IDA7Cit9CisKKy8vIEZsb2F0aW5nIHBvaW50IGNvc2luZSBvZiBhIHZhbHVlLgorZGVmIEdfRkNPUyA6IEdlbmVyaWNJbnN0cnVjdGlvbiB7CisgIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzIHR5cGUwOiRkc3QpOworICBsZXQgSW5PcGVyYW5kTGlzdCA9IChpbnMgdHlwZTA6JHNyYzEpOworICBsZXQgaGFzU2lkZUVmZmVjdHMgPSAwOworfQorCisvLyBGbG9hdGluZyBwb2ludCBzaW5lIG9mIGEgdmFsdWUuCitkZWYgR19GU0lOIDogR2VuZXJpY0luc3RydWN0aW9uIHsKKyAgbGV0IE91dE9wZXJhbmRMaXN0ID0gKG91dHMgdHlwZTA6JGRzdCk7CisgIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyB0eXBlMDokc3JjMSk7CisgIGxldCBoYXNTaWRlRWZmZWN0cyA9IDA7Cit9CisKKy8vIEZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290IG9mIGEgdmFsdWUuCisvLyBUaGlzIHJldHVybnMgTmFOIGZvciBuZWdhdGl2ZSBub256ZXJvIHZhbHVlcy4KKy8vIE5PVEU6IFVubGlrZSBsaWJtIHNxcnQoKSwgdGhpcyBuZXZlciBzZXRzIGVycm5vLiBJbiBhbGwgb3RoZXIgcmVzcGVjdHMgaXQncworLy8gbGlibS1jb25mb3JtYW50LgorZGVmIEdfRlNRUlQgOiBHZW5lcmljSW5zdHJ1Y3Rpb24geworICBsZXQgT3V0T3BlcmFuZExpc3QgPSAob3V0cyB0eXBlMDokZHN0KTsKKyAgbGV0IEluT3BlcmFuZExpc3QgPSAoaW5zIHR5cGUwOiRzcmMxKTsKKyAgbGV0IGhhc1NpZGVFZmZlY3RzID0gMDsKK30KKworLy8gRmxvYXRpbmcgcG9pbnQgZmxvb3Igb2YgYSB2YWx1ZS4KK2RlZiBHX0ZGTE9PUiA6IEdlbmVyaWNJbnN0cnVjdGlvbiB7CisgIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzIHR5cGUwOiRkc3QpOworICBsZXQgSW5PcGVyYW5kTGlzdCA9IChpbnMgdHlwZTA6JHNyYzEpOworICBsZXQgaGFzU2lkZUVmZmVjdHMgPSAwOworfQorCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gT3Bjb2RlcyBmb3IgTExWTSBJbnRyaW5zaWNzCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjQ5LDYgKzcwMSw5IEBACiAvLyBFeHRyYWN0IG11bHRpcGxlIHJlZ2lzdGVycyBzcGVjaWZpZWQgc2l6ZSwgc3RhcnRpbmcgZnJvbSBibG9ja3MgZ2l2ZW4gYnkKIC8vIGluZGV4ZXMuIFRoaXMgd2lsbCBhbG1vc3QgY2VydGFpbmx5IGJlIG1hcHBlZCB0byBzdWItcmVnaXN0ZXIgQ09QWXMgYWZ0ZXIKIC8vIHJlZ2lzdGVyIGJhbmtzIGhhdmUgYmVlbiBzZWxlY3RlZC4KKy8vIFRoZSBvdXRwdXQgb3BlcmFuZHMgYXJlIGFsd2F5cyBvcmRlcmVkIGZyb20gbG93ZXN0IGJpdHMgdG8gaGlnaGVzdDoKKy8vICAgJWJpdHNfMF83OihzOCksICViaXRzXzhfMTU6KHM4KSwKKy8vICAgICAgICViaXRzXzE2XzIzOihzOCksICViaXRzXzI0XzMxOihzOCkgPSBHX1VOTUVSR0VfVkFMVUVTICUwOihzMzIpCiBkZWYgR19VTk1FUkdFX1ZBTFVFUyA6IEdlbmVyaWNJbnN0cnVjdGlvbiB7CiAgIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzIHR5cGUwOiRkc3QwLCB2YXJpYWJsZV9vcHMpOwogICBsZXQgSW5PcGVyYW5kTGlzdCA9IChpbnMgdHlwZTE6JHNyYyk7CkBAIC02NjIsMTMgKzcxNyw0MCBAQAogICBsZXQgaGFzU2lkZUVmZmVjdHMgPSAwOwogfQogCi0vLy8gQ29uY2F0ZW5hdGUgbXVsdGlwbGUgcmVnaXN0ZXJzIG9mIHRoZSBzYW1lIHNpemUgaW50byBhIHdpZGVyIHJlZ2lzdGVyLgorLy8gQ29uY2F0ZW5hdGUgbXVsdGlwbGUgcmVnaXN0ZXJzIG9mIHRoZSBzYW1lIHNpemUgaW50byBhIHdpZGVyIHJlZ2lzdGVyLgorLy8gVGhlIGlucHV0IG9wZXJhbmRzIGFyZSBhbHdheXMgb3JkZXJlZCBmcm9tIGxvd2VzdCBiaXRzIHRvIGhpZ2hlc3Q6CisvLyAgICUwOihzMzIpID0gR19NRVJHRV9WQUxVRVMgJWJpdHNfMF83OihzOCksICViaXRzXzhfMTU6KHM4KSwKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlYml0c18xNl8yMzooczgpLCAlYml0c18yNF8zMTooczgpCiBkZWYgR19NRVJHRV9WQUxVRVMgOiBHZW5lcmljSW5zdHJ1Y3Rpb24gewogICBsZXQgT3V0T3BlcmFuZExpc3QgPSAob3V0cyB0eXBlMDokZHN0KTsKICAgbGV0IEluT3BlcmFuZExpc3QgPSAoaW5zIHR5cGUxOiRzcmMwLCB2YXJpYWJsZV9vcHMpOwogICBsZXQgaGFzU2lkZUVmZmVjdHMgPSAwOwogfQogCisvLy8gQ3JlYXRlIGEgdmVjdG9yIGZyb20gbXVsdGlwbGUgc2NhbGFyIHJlZ2lzdGVycy4gTm8gaW1wbGljaXQKKy8vLyBjb252ZXJzaW9uIGlzIHBlcmZvcm1lZCAoaS5lLiB0aGUgcmVzdWx0IGVsZW1lbnQgdHlwZSBtdXN0IGJlIHRoZQorLy8vIHNhbWUgYXMgYWxsIHNvdXJjZSBvcGVyYW5kcykKK2RlZiBHX0JVSUxEX1ZFQ1RPUiA6IEdlbmVyaWNJbnN0cnVjdGlvbiB7CisgIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzIHR5cGUwOiRkc3QpOworICBsZXQgSW5PcGVyYW5kTGlzdCA9IChpbnMgdHlwZTE6JHNyYzAsIHZhcmlhYmxlX29wcyk7CisgIGxldCBoYXNTaWRlRWZmZWN0cyA9IDA7Cit9CisKKy8vLyBMaWtlIEdfQlVJTERfVkVDVE9SLCBidXQgdHJ1bmNhdGVzIHRoZSBsYXJnZXIgb3BlcmFuZCB0eXBlcyB0byBmaXQgdGhlCisvLy8gZGVzdGluYXRpb24gdmVjdG9yIGVsdCB0eXBlLgorZGVmIEdfQlVJTERfVkVDVE9SX1RSVU5DIDogR2VuZXJpY0luc3RydWN0aW9uIHsKKyAgbGV0IE91dE9wZXJhbmRMaXN0ID0gKG91dHMgdHlwZTA6JGRzdCk7CisgIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyB0eXBlMTokc3JjMCwgdmFyaWFibGVfb3BzKTsKKyAgbGV0IGhhc1NpZGVFZmZlY3RzID0gMDsKK30KKworLy8vIENyZWF0ZSBhIHZlY3RvciBieSBjb25jYXRlbmF0aW5nIHZlY3RvcnMgdG9nZXRoZXIuCitkZWYgR19DT05DQVRfVkVDVE9SUyA6IEdlbmVyaWNJbnN0cnVjdGlvbiB7CisgIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzIHR5cGUwOiRkc3QpOworICBsZXQgSW5PcGVyYW5kTGlzdCA9IChpbnMgdHlwZTE6JHNyYzAsIHZhcmlhYmxlX29wcyk7CisgIGxldCBoYXNTaWRlRWZmZWN0cyA9IDA7Cit9CisKIC8vIEludHJpbnNpYyB3aXRob3V0IHNpZGUgZWZmZWN0cy4KIGRlZiBHX0lOVFJJTlNJQyA6IEdlbmVyaWNJbnN0cnVjdGlvbiB7CiAgIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzKTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L0dsb2JhbElTZWwvUmVnaXN0ZXJCYW5rLnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvR2xvYmFsSVNlbC9SZWdpc3RlckJhbmsudGQKaW5kZXggNGRmZDEzOS4uNTE1NzhiNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvR2xvYmFsSVNlbC9SZWdpc3RlckJhbmsudGQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvR2xvYmFsSVNlbC9SZWdpc3RlckJhbmsudGQKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUmVnaXN0ZXJCYW5rLnRkIC0gUmVnaXN0ZXIgYmFuayBkZWZpbml0aW9ucyAtLS0tLS0tLS0qLSB0YWJsZWdlbiAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L0dsb2JhbElTZWwvU2VsZWN0aW9uREFHQ29tcGF0LnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvR2xvYmFsSVNlbC9TZWxlY3Rpb25EQUdDb21wYXQudGQKaW5kZXggYTNkMzEwYy4uNmIwNDM0YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvR2xvYmFsSVNlbC9TZWxlY3Rpb25EQUdDb21wYXQudGQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvR2xvYmFsSVNlbC9TZWxlY3Rpb25EQUdDb21wYXQudGQKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVGFyZ2V0R2xvYmFsSVNlbC50ZCAtIENvbW1vbiBjb2RlIGZvciBHbG9iYWxJU2VsIC0tLS0qLSB0YWJsZWdlbiAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTg4LDYgKzg3LDEzIEBACiBkZWYgOiBHSU5vZGVFcXVpdjxHX0NUTFpfWkVST19VTkRFRiwgY3Rsel96ZXJvX3VuZGVmPjsKIGRlZiA6IEdJTm9kZUVxdWl2PEdfQ1RUWl9aRVJPX1VOREVGLCBjdHR6X3plcm9fdW5kZWY+OwogZGVmIDogR0lOb2RlRXF1aXY8R19DVFBPUCwgY3Rwb3A+OworZGVmIDogR0lOb2RlRXF1aXY8R19FWFRSQUNUX1ZFQ1RPUl9FTFQsIHZlY3Rvcl9leHRyYWN0PjsKK2RlZiA6IEdJTm9kZUVxdWl2PEdfRkNFSUwsIGZjZWlsPjsKK2RlZiA6IEdJTm9kZUVxdWl2PEdfRkNPUywgZmNvcz47CitkZWYgOiBHSU5vZGVFcXVpdjxHX0ZTSU4sIGZzaW4+OworZGVmIDogR0lOb2RlRXF1aXY8R19GQUJTLCBmYWJzPjsKK2RlZiA6IEdJTm9kZUVxdWl2PEdfRlNRUlQsIGZzcXJ0PjsKK2RlZiA6IEdJTm9kZUVxdWl2PEdfRkZMT09SLCBmZmxvb3I+OwogCiAvLyBCcm9hZGx5IHNwZWFraW5nIEdfTE9BRCBpcyBlcXVpdmFsZW50IHRvIElTRDo6TE9BRCBidXQgdGhlcmUgYXJlIHNvbWUKIC8vIGNvbXBsaWNhdGlvbnMgdGhhdCB0YWJsZWdlbiBtdXN0IHRha2UgY2FyZSBvZi4gRm9yIGV4YW1wbGUsIFByZWRpY2F0ZXMgc3VjaApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvR2xvYmFsSVNlbC9UYXJnZXQudGQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9HbG9iYWxJU2VsL1RhcmdldC50ZAppbmRleCA2NzQwZjQwLi41MzhjYTY1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9HbG9iYWxJU2VsL1RhcmdldC50ZAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9HbG9iYWxJU2VsL1RhcmdldC50ZApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUYXJnZXQudGQgLSBEZWZpbmUgR2xvYmFsSVNlbCBydWxlcyAtLS0tLS0tLS0tLS0tLS0tLSotIHRhYmxlZ2VuIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0LnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0LnRkCmluZGV4IDUzODYwNWEuLjM4MGU4NDggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L1RhcmdldC50ZAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9UYXJnZXQudGQKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVGFyZ2V0LnRkIC0gVGFyZ2V0IEluZGVwZW5kZW50IFRhYmxlR2VuIGludGVyZmFjZSAtLS0qLSB0YWJsZWdlbiAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTQ3OSw2ICs0NzgsNyBAQAogICBiaXQgaXNJbnNlcnRTdWJyZWcgPSAwOyAgIC8vIElzIHRoaXMgaW5zdHJ1Y3Rpb24gYSBraW5kIG9mIGluc2VydCBzdWJyZWc/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgc28sIG1ha2Ugc3VyZSB0byBvdmVycmlkZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRhcmdldEluc3RySW5mbzo6Z2V0SW5zZXJ0U3VicmVnTGlrZUlucHV0cy4KKyAgYml0IHZhcmlhZGljT3BzQXJlRGVmcyA9IDA7IC8vIEFyZSB2YXJpYWRpYyBvcGVyYW5kcyBkZWZpbml0aW9ucz8KIAogICAvLyBEb2VzIHRoZSBpbnN0cnVjdGlvbiBoYXZlIHNpZGUgZWZmZWN0cyB0aGF0IGFyZSBub3QgY2FwdHVyZWQgYnkgYW55CiAgIC8vIG9wZXJhbmRzIG9mIHRoZSBpbnN0cnVjdGlvbiBvciBvdGhlciBmbGFncz8KQEAgLTkzMyw2ICs5MzMsMTUgQEAKICAgbGV0IEFzbVN0cmluZyA9ICIiOwogICBsZXQgaGFzU2lkZUVmZmVjdHMgPSAwOyAgLy8gTm90ZSBzaWRlIGVmZmVjdCBpcyBlbmNvZGVkIGluIGFuIG9wZXJhbmQuCiB9CitkZWYgSU5MSU5FQVNNX0JSIDogU3RhbmRhcmRQc2V1ZG9JbnN0cnVjdGlvbiB7CisgIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzKTsKKyAgbGV0IEluT3BlcmFuZExpc3QgPSAoaW5zIHZhcmlhYmxlX29wcyk7CisgIGxldCBBc21TdHJpbmcgPSAiIjsKKyAgbGV0IGhhc1NpZGVFZmZlY3RzID0gMDsgIC8vIE5vdGUgc2lkZSBlZmZlY3QgaXMgZW5jb2RlZCBpbiBhbiBvcGVyYW5kLgorICBsZXQgaXNUZXJtaW5hdG9yID0gMTsKKyAgbGV0IGlzQnJhbmNoID0gMTsKKyAgbGV0IGlzSW5kaXJlY3RCcmFuY2ggPSAxOworfQogZGVmIENGSV9JTlNUUlVDVElPTiA6IFN0YW5kYXJkUHNldWRvSW5zdHJ1Y3Rpb24gewogICBsZXQgT3V0T3BlcmFuZExpc3QgPSAob3V0cyk7CiAgIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyBpMzJpbW06JGlkKTsKQEAgLTExMDQsNyArMTExMyw3IEBACiAgIGxldCBpc0JyYW5jaCA9IDE7CiB9CiBkZWYgUEFUQ0hBQkxFX09QIDogU3RhbmRhcmRQc2V1ZG9JbnN0cnVjdGlvbiB7Ci0gIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzIHVua25vd246JGRzdCk7CisgIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzKTsKICAgbGV0IEluT3BlcmFuZExpc3QgPSAoaW5zIHZhcmlhYmxlX29wcyk7CiAgIGxldCB1c2VzQ3VzdG9tSW5zZXJ0ZXIgPSAxOwogICBsZXQgbWF5TG9hZCA9IDE7CkBAIC0xMTY0LDggKzExNzMsOCBAQAogICBsZXQgaGFzU2lkZUVmZmVjdHMgPSAxOwogfQogZGVmIEZFTlRSWV9DQUxMIDogU3RhbmRhcmRQc2V1ZG9JbnN0cnVjdGlvbiB7Ci0gIGxldCBPdXRPcGVyYW5kTGlzdCA9IChvdXRzIHVua25vd246JGRzdCk7Ci0gIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyB2YXJpYWJsZV9vcHMpOworICBsZXQgT3V0T3BlcmFuZExpc3QgPSAob3V0cyk7CisgIGxldCBJbk9wZXJhbmRMaXN0ID0gKGlucyk7CiAgIGxldCBBc21TdHJpbmcgPSAiIyBGRW50cnkgY2FsbCI7CiAgIGxldCB1c2VzQ3VzdG9tSW5zZXJ0ZXIgPSAxOwogICBsZXQgbWF5TG9hZCA9IDE7CkBAIC0xNTU1LDMgKzE1NjQsOCBAQAogLy8gUHVsbCBpbiB0aGUgY29tbW9uIHN1cHBvcnQgZm9yIHRoZSBHbG9iYWwgSVNlbCBEQUctYmFzZWQgc2VsZWN0b3IgZ2VuZXJhdGlvbi4KIC8vCiBpbmNsdWRlICJsbHZtL1RhcmdldC9HbG9iYWxJU2VsL1NlbGVjdGlvbkRBR0NvbXBhdC50ZCIKKworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vIFB1bGwgaW4gdGhlIGNvbW1vbiBzdXBwb3J0IGZvciBQZm0gQ291bnRlcnMgZ2VuZXJhdGlvbi4KKy8vCitpbmNsdWRlICJsbHZtL1RhcmdldC9UYXJnZXRQZm1Db3VudGVycy50ZCIKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L1RhcmdldENhbGxpbmdDb252LnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0Q2FsbGluZ0NvbnYudGQKaW5kZXggOTVkMmI0Mi4uMTFlZDRmNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0Q2FsbGluZ0NvbnYudGQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0Q2FsbGluZ0NvbnYudGQKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVGFyZ2V0Q2FsbGluZ0NvbnYudGQgLSBUYXJnZXQgQ2FsbGluZyBDb252ZW50aW9ucyAtLS0qLSB0YWJsZWdlbiAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTE2MCw2ICsxNTksMTEgQEAKIC8vLyB0aGF0IHRoZSB0YXJnZXQgc3VwcG9ydHMuCiBjbGFzcyBDYWxsaW5nQ29udjxsaXN0PENDQWN0aW9uPiBhY3Rpb25zPiB7CiAgIGxpc3Q8Q0NBY3Rpb24+IEFjdGlvbnMgPSBhY3Rpb25zOworCisgIC8vLyBJZiB0cnVlLCB0aGlzIGNhbGxpbmcgY29udmVudGlvbiB3aWxsIGJlIGVtaXR0ZWQgYXMgZXh0ZXJuYWxseSB2aXNpYmxlIGluCisgIC8vLyB0aGUgbGx2bSBuYW1lc3BhY2VzIGluc3RlYWQgb2YgYXMgYSBzdGF0aWMgZnVuY3Rpb24uCisgIGJpdCBFbnRyeSA9IDA7CisKICAgYml0IEN1c3RvbSA9IDA7CiB9CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L1RhcmdldEluc3RyUHJlZGljYXRlLnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0SW5zdHJQcmVkaWNhdGUudGQKaW5kZXggYzRiMTRlYi4uNTYyMzQ2MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0SW5zdHJQcmVkaWNhdGUudGQKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0SW5zdHJQcmVkaWNhdGUudGQKQEAgLTEsMzUgKzEsNDQgQEAKIC8vPT09LSBUYXJnZXRJbnN0clByZWRpY2F0ZS50ZCAtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIHRhYmxlZ2VuIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gVGhpcyBmaWxlIGRlZmluZXMgTUNJbnN0UHJlZGljYXRlIGNsYXNzZXMgYW5kIGl0cyBzdWJjbGFzc2VzLgorLy8gVGhpcyBmaWxlIGRlZmluZXMgY2xhc3MgTUNJbnN0UHJlZGljYXRlIGFuZCBpdHMgc3ViY2xhc3Nlcy4KIC8vCi0vLyBNQ0luc3RQcmVkaWNhdGUgaXMgdXNlZCB0byBkZXNjcmliZSBjb25zdHJhaW50cyBvbiB0aGUgb3Bjb2RlL29wZXJhbmQocykgb2YKLS8vIGFuIGluc3RydWN0aW9uLiBFYWNoIE1DSW5zdFByZWRpY2F0ZSBjbGFzcyBoYXMgYSB3ZWxsLWtub3duIHNlbWFudGljLCBhbmQgaXQKLS8vIGlzIHVzZWQgYnkgYSBQcmVkaWNhdGVFeHBhbmRlciB0byBnZW5lcmF0ZSBjb2RlIGZvciBNYWNoaW5lSW5zdHIgYW5kL29yCi0vLyBNQ0luc3QuCisvLyBNQ0luc3RQcmVkaWNhdGUgZGVmaW5pdGlvbnMgYXJlIHVzZWQgYnkgdGFyZ2V0IHNjaGVkdWxpbmcgbW9kZWxzIHRvIGRlc2NyaWJlCisvLyBjb25zdHJhaW50cyBvbiBpbnN0cnVjdGlvbnMuCiAvLwotLy8gTUNJbnN0UHJlZGljYXRlIGRlZmluaXRpb25zIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBNQ1NjaGVkUHJlZGljYXRlCi0vLyBkZWZpbml0aW9ucy4gQW4gTUNTY2hlZFByZWRpY2F0ZSBjYW4gYmUgdXNlZCBpbiBwbGFjZSBvZiBhIFNjaGVkUHJlZGljYXRlCi0vLyB3aGVuIGRlZmluaW5nIFNjaGVkUmVhZFZhcmlhbnQgYW5kIFNjaGVkV3JpdGVWYXJpYW50IHVzZWQgYnkgYSBwcm9jZXNzb3IKLS8vIHNjaGVkdWxpbmcgbW9kZWwuCi0vLwotLy8gSGVyZSBpcyBhbiBleGFtcGxlIG9mIE1DSW5zdFByZWRpY2F0ZSBkZWZpbml0aW9uOgorLy8gSGVyZSBpcyBhbiBleGFtcGxlIG9mIGFuIE1DSW5zdFByZWRpY2F0ZSBkZWZpbml0aW9uIGluIHRhYmxlZ2VuOgogLy8KIC8vIGRlZiBNQ0luc3RQcmVkaWNhdGVFeGFtcGxlIDogQ2hlY2tBbGw8WwogLy8gICAgQ2hlY2tPcGNvZGU8W0JMUl0+LAogLy8gICAgQ2hlY2tJc1JlZ09wZXJhbmQ8MD4sCiAvLyAgICBDaGVja05vdDxDaGVja1JlZ09wZXJhbmQ8MCwgTFI+Pl0+OwogLy8KLS8vIFByZWRpY2F0ZSBgTUNJbnN0UHJlZGljYXRlRXhhbXBsZWAgY2hlY2tzIHRoYXQgdGhlIG1hY2hpbmUgaW5zdHJ1Y3Rpb24gaW4KLS8vIGlucHV0IGlzIGEgQkxSLCBhbmQgdGhhdCBvcGVyYW5kIGF0IGluZGV4IDAgaXMgcmVnaXN0ZXIgYExSYC4KKy8vIFRoZSBzeW50YXggZm9yIE1DSW5zdFByZWRpY2F0ZSBpcyBkZWNsYXJhdGl2ZSwgYW5kIHByZWRpY2F0ZSBkZWZpbml0aW9ucyBjYW4KKy8vIGJlIGNvbXBvc2VkIHRvZ2V0aGVyIGluIG9yZGVyIHRvIGdlbmVyYXRlIG1vcmUgY29tcGxleCBjb25zdHJhaW50cy4KIC8vCi0vLyBUaGF0IHByZWRpY2F0ZSBjb3VsZCBiZSB1c2VkIHRvIHJld3JpdGUgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9uIChmcm9tCisvLyBUaGUgYENoZWNrQWxsYCBmcm9tIHRoZSBleGFtcGxlIGRlZmluZXMgYSBjb21wb3NpdGlvbiBvZiB0aHJlZSBkaWZmZXJlbnQKKy8vIHByZWRpY2F0ZXMuICBEZWZpbml0aW9uIGBNQ0luc3RQcmVkaWNhdGVFeGFtcGxlYCBpZGVudGlmaWVzIGluc3RydWN0aW9ucworLy8gd2hvc2Ugb3Bjb2RlIGlzIEJMUiwgYW5kIHdob3NlIGZpcnN0IG9wZXJhbmQgaXMgYSByZWdpc3RlciBkaWZmZXJlbnQgZnJvbQorLy8gcmVnaXN0ZXIgYExSYC4KKy8vCisvLyBFdmVyeSBNQ0luc3RQcmVkaWNhdGUgY2xhc3MgaGFzIGEgd2VsbC1rbm93biBzZW1hbnRpYyBpbiB0YWJsZWdlbi4gRm9yCisvLyBleGFtcGxlLCBgQ2hlY2tPcGNvZGVgIGlzIGEgc3BlY2lhbCB0eXBlIG9mIHByZWRpY2F0ZSB1c2VkIHRvIGRlc2NyaWJlIGEKKy8vIGNvbnN0cmFpbnQgb24gdGhlIHZhbHVlIG9mIGFuIGluc3RydWN0aW9uIG9wY29kZS4KKy8vCisvLyBNQ0luc3RQcmVkaWNhdGUgZGVmaW5pdGlvbnMgYXJlIHR5cGljYWxseSB1c2VkIGJ5IHNjaGVkdWxpbmcgbW9kZWxzIHRvCisvLyBjb25zdHJ1Y3QgTUNTY2hlZFByZWRpY2F0ZSBkZWZpbml0aW9ucyAoc2VlIHRoZSBkZWZpbml0aW9uIG9mIGNsYXNzCisvLyBNQ1NjaGVkUHJlZGljYXRlIGluIGxsdm0vVGFyZ2V0L1RhcmdldFNjaGVkdWxlLnRkKS4KKy8vIEluIHBhcnRpY3VsYXIsIGFuIE1DU2NoZWRQcmVkaWNhdGUgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBhIFNjaGVkUHJlZGljYXRlCisvLyB3aGVuIGRlZmluaW5nIHRoZSBzZXQgb2YgU2NoZWRSZWFkVmFyaWFudCBhbmQgU2NoZWRXcml0ZVZhcmlhbnQgb2YgYQorLy8gcHJvY2Vzc29yIHNjaGVkdWxpbmcgbW9kZWwuCisvLworLy8gVGhlIGBNQ0luc3RQcmVkaWNhdGVFeGFtcGxlYCBkZWZpbml0aW9uIGFib3ZlIGlzIGVxdWl2YWxlbnQgKGFuZCB0aGVyZWZvcmUKKy8vIGNvdWxkIHJlcGxhY2UpIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbiBmcm9tIGEgcHJldmlvdXMgRXh5bm9zTTMgbW9kZWwgKHNlZQogLy8gQUFyY2g2NFNjaGVkRXh5bm9zTTMudGQpOgogLy8KIC8vIGRlZiBNM0JyYW5jaExpbmtGYXN0UHJlZCAgOiBTY2hlZFByZWRpY2F0ZTxbewpAQCAtMzcsMjIgKzQ2LDEzIEBACiAvLyAgICBNSS0+Z2V0T3BlcmFuZCgwKS5pc1JlZygpICYmCiAvLyAgICBNSS0+Z2V0T3BlcmFuZCgwKS5nZXRSZWcoKSAhPSBBQXJjaDY0OjpMUn1dPjsKIC8vCi0vLyBNQ0luc3RQcmVkaWNhdGUgZGVmaW5pdGlvbnMgYXJlIHVzZWQgdG8gY29uc3RydWN0IE1DU2NoZWRQcmVkaWNhdGUgKHNlZSB0aGUKLS8vIGRlZmluaXRpb24gb2YgY2xhc3MgTUNTY2hlZFByZWRpY2F0ZSBpbiBsbHZtL1RhcmdldC9UYXJnZXRTY2hlZHVsZS50ZCkuICBBbgotLy8gTUNTY2hlZFByZWRpY2F0ZSBjYW4gYmUgdXNlZCBieSBhIGBTY2hlZFZhcmAgdG8gYXNzb2NpYXRlIGEgcHJlZGljYXRlIHdpdGggYQotLy8gbGlzdCBvZiBTY2hlZFJlYWRXcml0ZXMuIE5vdGUgdGhhdCBgU2NoZWRWYXJgIGFyZSB1c2VkIHRvIGNyZWF0ZSBTY2hlZFZhcmlhbnQKLS8vIGRlZmluaXRpb25zLgotLy8KLS8vIEVhY2ggTUNJbnN0UHJlZGljYXRlIGNsYXNzIGhhcyBhIHdlbGwga25vd24gc2VtYW50aWMuIEZvciBleGFtcGxlLAotLy8gYENoZWNrT3Bjb2RlYCBpcyBvbmx5IHVzZWQgdG8gY2hlY2sgdGhlIGluc3RydWN0aW9uIG9wY29kZSB2YWx1ZS4KLS8vCi0vLyBNQ0luc3RQcmVkaWNhdGUgY2xhc3NlcyBhbGxvdyB0aGUgZGVmaW5pdGlvbiBvZiBwcmVkaWNhdGVzIGluIGEgZGVjbGFyYXRpdmUKLS8vIHdheS4gIFRoZXNlIHByZWRpY2F0ZXMgZG9uJ3QgcmVxdWlyZSBhIGN1c3RvbSBibG9jayBvZiBDKyssIGFuZCBjYW4gYmUgdXNlZAotLy8gdG8gZGVmaW5lIGNvbmRpdGlvbnMgb24gaW5zdHJ1Y3Rpb25zIHdpdGhvdXQgYmVpbmcgYm91bmQgdG8gYSBwYXJ0aWN1bGFyCisvLyBUaGUgbWFpbiBhZHZhbnRhZ2Ugb2YgdXNpbmcgTUNJbnN0UHJlZGljYXRlIGluc3RlYWQgb2YgU2NoZWRQcmVkaWNhdGUgaXMKKy8vIHBvcnRhYmlsaXR5OiB1c2VycyBkb24ndCBuZWVkIHRvIHNwZWNpZnkgcHJlZGljYXRlcyBpbiBDKysuIEFzIGEgY29uc2VxdWVuY2UKKy8vIG9mIHRoaXMsIE1DSW5zdFByZWRpY2F0ZSBkZWZpbml0aW9ucyBhcmUgbm90IGJvdW5kIHRvIGEgcGFydGljdWxhcgogLy8gcmVwcmVzZW50YXRpb24gKGkuZS4gTWFjaGluZUluc3RyIHZzIE1DSW5zdCkuCiAvLwotLy8gSXQgYWxzbyBtZWFucyB0aGF0IHRhYmxlZ2VuIGJhY2tlbmRzIG11c3Qga25vdyBob3cgdG8gcGFyc2UgYW5kIGV4cGFuZCB0aGVtCi0vLyBpbnRvIGNvZGUgdGhhdCB3b3JrcyBvbiBNQ0luc3QgKG9yIE1hY2hpbmVJbnN0KS4KKy8vIFRhYmxlZ2VuIGJhY2tlbmRzIGtub3cgaG93IHRvIGV4cGFuZCBNQ0luc3RQcmVkaWNhdGUgZGVmaW5pdGlvbnMgaW50byBhY3R1YWwKKy8vIEMrKyBjb2RlIHRoYXQgd29ya3Mgb24gTWFjaGluZUluc3RyIChhbmQvb3IgTUNJbnN0KS4KIC8vCiAvLyBJbnN0YW5jZXMgb2YgY2xhc3MgUHJlZGljYXRlRXhwYW5kZXIgKHNlZSB1dGlscy9UYWJsZWdlbi9QcmVkaWNhdGVFeHBhbmRlci5oKQogLy8ga25vdyBob3cgdG8gZXhwYW5kIGEgcHJlZGljYXRlLiBGb3IgZWFjaCBNQ0luc3RQcmVkaWNhdGUgY2xhc3MsIHRoZXJlIG11c3QgYmUKQEAgLTEwNSwyOCArMTA1LDUwIEBACiAgIGludCBTZWNvbmRJbmRleCA9IFNlY29uZDsKIH0KIAorLy8gQmFzZSBjbGFzcyBmb3IgY2hlY2tzIG9uIHJlZ2lzdGVyL2ltbWVkaWF0ZSBvcGVyYW5kcy4KKy8vIEl0IGFsbG93cyB1c2VycyB0byBkZWZpbmUgY2hlY2tzIGxpa2U6CisvLyAgICBNeUZ1bmN0aW9uKE1JLT5nZXRPcGVyYW5kKEluZGV4KS5nZXRJbW0oKSkgPT0gVmFsOworLy8KKy8vIEluIHRoZSBleGFtcGxlIGFib3ZlLCBgTXlGdW5jdGlvbmAgaXMgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFzIGlucHV0IGFuCisvLyBpbW1lZGlhdGUgb3BlcmFuZCB2YWx1ZSwgYW5kIHJldHVybnMgYW5vdGhlciB2YWx1ZS4gRmllbGQgYEZ1bmN0aW9uTWFwcGVyYCBpcworLy8gdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gdGhlIG9wZXJhbmQgdmFsdWUuCitjbGFzcyBDaGVja09wZXJhbmRCYXNlPGludCBJbmRleCwgc3RyaW5nIEZuID0gIiI+IDogTUNPcGVyYW5kUHJlZGljYXRlPEluZGV4PiB7CisgIHN0cmluZyBGdW5jdGlvbk1hcHBlciA9IEZuOworfQorCiAvLyBDaGVjayB0aGF0IHRoZSBtYWNoaW5lIHJlZ2lzdGVyIG9wZXJhbmQgYXQgcG9zaXRpb24gYEluZGV4YCByZWZlcmVuY2VzCiAvLyByZWdpc3RlciBSLiBUaGlzIHByZWRpY2F0ZSBhc3N1bWVzIHRoYXQgd2UgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlIG1hY2hpbmUKIC8vIG9wZXJhbmQgYXQgcG9zaXRpb24gYEluZGV4YCBpcyBhIHJlZ2lzdGVyIG9wZXJhbmQuCi1jbGFzcyBDaGVja1JlZ09wZXJhbmQ8aW50IEluZGV4LCBSZWdpc3RlciBSPiA6IE1DT3BlcmFuZFByZWRpY2F0ZTxJbmRleD4geworY2xhc3MgQ2hlY2tSZWdPcGVyYW5kPGludCBJbmRleCwgUmVnaXN0ZXIgUj4gOiBDaGVja09wZXJhbmRCYXNlPEluZGV4PiB7CiAgIFJlZ2lzdGVyIFJlZyA9IFI7CiB9CiAKIC8vIENoZWNrIGlmIHJlZ2lzdGVyIG9wZXJhbmQgYXQgaW5kZXggYEluZGV4YCBpcyB0aGUgaW52YWxpZCByZWdpc3Rlci4KLWNsYXNzIENoZWNrSW52YWxpZFJlZ09wZXJhbmQ8aW50IEluZGV4PiA6IE1DT3BlcmFuZFByZWRpY2F0ZTxJbmRleD47CitjbGFzcyBDaGVja0ludmFsaWRSZWdPcGVyYW5kPGludCBJbmRleD4gOiBDaGVja09wZXJhbmRCYXNlPEluZGV4PjsKIAogLy8gQ2hlY2sgdGhhdCB0aGUgb3BlcmFuZCBhdCBwb3NpdGlvbiBgSW5kZXhgIGlzIGltbWVkaWF0ZSBgSW1tYC4KLWNsYXNzIENoZWNrSW1tT3BlcmFuZDxpbnQgSW5kZXgsIGludCBJbW0+IDogTUNPcGVyYW5kUHJlZGljYXRlPEluZGV4PiB7CisvLyBJZiBmaWVsZCBgRnVuY3Rpb25NYXBwZXJgIGlzIGEgbm9uLWVtcHR5IHN0cmluZywgdGhlbiBmdW5jdGlvbgorLy8gYEZ1bmN0aW9uTWFwcGVyYCBpcyBhcHBsaWVkIHRvIHRoZSBvcGVyYW5kIHZhbHVlLCBhbmQgdGhlIHJldHVybiB2YWx1ZSBpcyB0aGVuCisvLyBjb21wYXJlZCBhZ2FpbnN0IGBJbW1gLgorY2xhc3MgQ2hlY2tJbW1PcGVyYW5kPGludCBJbmRleCwgaW50IEltbT4gOiBDaGVja09wZXJhbmRCYXNlPEluZGV4PiB7CiAgIGludCBJbW1WYWwgPSBJbW07CiB9CiAKIC8vIFNpbWlsYXIgdG8gQ2hlY2tJbW1PcGVyYW5kLCBob3dldmVyIHRoZSBpbW1lZGlhdGUgaXMgbm90IGEgbGl0ZXJhbCBudW1iZXIuCiAvLyBUaGlzIGlzIHVzZWZ1bCB3aGVuIHdlIHdhbnQgdG8gY29tcGFyZSB0aGUgdmFsdWUgb2YgYW4gb3BlcmFuZCBhZ2FpbnN0IGFuCiAvLyBlbnVtIHZhbHVlLCBhbmQgd2Uga25vdyB0aGUgYWN0dWFsIGludGVnZXIgdmFsdWUgb2YgdGhhdCBlbnVtLgotY2xhc3MgQ2hlY2tJbW1PcGVyYW5kX3M8aW50IEluZGV4LCBzdHJpbmcgVmFsdWU+IDogTUNPcGVyYW5kUHJlZGljYXRlPEluZGV4PiB7CitjbGFzcyBDaGVja0ltbU9wZXJhbmRfczxpbnQgSW5kZXgsIHN0cmluZyBWYWx1ZT4gOiBDaGVja09wZXJhbmRCYXNlPEluZGV4PiB7CiAgIHN0cmluZyBJbW1WYWwgPSBWYWx1ZTsKIH0KIAorLy8gRXhwYW5kcyB0byBhIGNhbGwgdG8gYEZ1bmN0aW9uTWFwcGVyYCBpZiBmaWVsZCBgRnVuY3Rpb25NYXBwZXJgIGlzIHNldC4KKy8vIE90aGVyd2lzZSwgaXQgZXhwYW5kcyB0byBhIENoZWNrTm90PENoZWNrSW52YWxpZFJlZ09wZXJhbmQ8SW5kZXg+Pi4KK2NsYXNzIENoZWNrUmVnT3BlcmFuZFNpbXBsZTxpbnQgSW5kZXg+IDogQ2hlY2tPcGVyYW5kQmFzZTxJbmRleD47CisKKy8vIEV4cGFuZHMgdG8gYSBjYWxsIHRvIGBGdW5jdGlvbk1hcHBlcmAgaWYgZmllbGQgYEZ1bmN0aW9uTWFwcGVyYCBpcyBzZXQuCisvLyBPdGhlcndpc2UsIGl0IHNpbXBseSBldmFsdWF0ZXMgdG8gVHJ1ZVByZWQuCitjbGFzcyBDaGVja0ltbU9wZXJhbmRTaW1wbGU8aW50IEluZGV4PiA6IENoZWNrT3BlcmFuZEJhc2U8SW5kZXg+OworCiAvLyBDaGVjayB0aGF0IHRoZSBvcGVyYW5kIGF0IHBvc2l0aW9uIGBJbmRleGAgaXMgaW1tZWRpYXRlIHZhbHVlIHplcm8uCiBjbGFzcyBDaGVja1plcm9PcGVyYW5kPGludCBJbmRleD4gOiBDaGVja0ltbU9wZXJhbmQ8SW5kZXgsIDA+OwogCkBAIC0yMDUsMTMgKzIyNywxMyBAQAogICBNQ1N0YXRlbWVudCBCb2R5ID0gYm9keTsKIH0KIAotLy8gQ2hlY2sgdGhhdCBhIGNhbGwgdG8gbWV0aG9kIGBOYW1lYCBpbiBjbGFzcyAiWFhYR2VuSW5zdHJJbmZvIiAod2hlcmUgWFhYIGlzCisvLyBDaGVjayB0aGF0IGEgY2FsbCB0byBtZXRob2QgYE5hbWVgIGluIGNsYXNzICJYWFhJbnN0ckluZm8iICh3aGVyZSBYWFggaXMKIC8vIHRoZSBuYW1lIG9mIGEgdGFyZ2V0KSByZXR1cm5zIHRydWUuCiAvLwogLy8gVElJUHJlZGljYXRlIGRlZmluaXRpb25zIGFyZSB1c2VkIHRvIG1vZGVsIGNhbGxzIHRvIHRoZSB0YXJnZXQtc3BlY2lmaWMKIC8vIEluc3RySW5mby4gQSBUSUlQcmVkaWNhdGUgaXMgdHJlYXRlZCBzcGVjaWFsbHkgYnkgdGhlIEluc3RySW5mb0VtaXR0ZXIKIC8vIHRhYmxlZ2VuIGJhY2tlbmQsIHdoaWNoIHdpbGwgdXNlIGl0IHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBkZWZpbml0aW9uIGluCi0vLyB0aGUgdGFyZ2V0IHNwZWNpZmljIGBHZW5JbnN0ckluZm9gIGNsYXNzLgorLy8gdGhlIHRhcmdldCBzcGVjaWZpYyBgSW5zdHJJbmZvYCBjbGFzcy4KIC8vCiAvLyBUaGVyZSBjYW5ub3QgYmUgbXVsdGlwbGUgVElJUHJlZGljYXRlIGRlZmluaXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSBmb3IgdGhlCiAvLyBzYW1lIHRhcmdldC4KQEAgLTMxMyw3ICszMzUsNyBAQAogfQogCiAvLyBDb252ZW5pZW5jZSBjbGFzc2VzIGFuZCBkZWZpbml0aW9ucyB1c2VkIGJ5IHByb2Nlc3NvciBzY2hlZHVsaW5nIG1vZGVscyB0bwotLy8gZGVzY3JpYmUgZGVwZW5kZW5jeSBicmVha2luZyBpbnN0cnVjdGlvbnMuCisvLyBkZXNjcmliZSBkZXBlbmRlbmN5IGJyZWFraW5nIGluc3RydWN0aW9ucyBhbmQgbW92ZSBlbGltaW5hdGlvbiBjYW5kaWRhdGVzLgogbGV0IFVwZGF0ZXNPcGNvZGVNYXNrID0gMSBpbiB7CiAKIGRlZiBJc1plcm9JZGlvbURlY2wgOiBTVElQcmVkaWNhdGVEZWNsPCJpc1plcm9JZGlvbSI+OwpAQCAtMzIzLDggKzM0NSwxNCBAQAogCiB9IC8vIFVwZGF0ZXNPcGNvZGVNYXNrCiAKK2RlZiBJc09wdGltaXphYmxlUmVnaXN0ZXJNb3ZlRGVjbAorICAgIDogU1RJUHJlZGljYXRlRGVjbDwiaXNPcHRpbWl6YWJsZVJlZ2lzdGVyTW92ZSI+OworCiBjbGFzcyBJc1plcm9JZGlvbUZ1bmN0aW9uPGxpc3Q8RGVwQnJlYWtpbmdDbGFzcz4gY2xhc3Nlcz4KICAgICA6IFNUSVByZWRpY2F0ZTxJc1plcm9JZGlvbURlY2wsIGNsYXNzZXM+OwogCiBjbGFzcyBJc0RlcEJyZWFraW5nRnVuY3Rpb248bGlzdDxEZXBCcmVha2luZ0NsYXNzPiBjbGFzc2VzPgogICAgIDogU1RJUHJlZGljYXRlPElzRGVwQnJlYWtpbmdEZWNsLCBjbGFzc2VzPjsKKworY2xhc3MgSXNPcHRpbWl6YWJsZVJlZ2lzdGVyTW92ZTxsaXN0PEluc3RydWN0aW9uRXF1aXZhbGVuY2VDbGFzcz4gY2xhc3Nlcz4KKyAgICA6IFNUSVByZWRpY2F0ZTxJc09wdGltaXphYmxlUmVnaXN0ZXJNb3ZlRGVjbCwgY2xhc3Nlcz47CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9UYXJnZXRJbnRyaW5zaWNJbmZvLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9UYXJnZXRJbnRyaW5zaWNJbmZvLmgKaW5kZXggNmE5MmJkZS4uZWY1NzFiMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0SW50cmluc2ljSW5mby5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L1RhcmdldEludHJpbnNpY0luZm8uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9UYXJnZXQvVGFyZ2V0SW50cmluc2ljSW5mby5oIC0gSW5zdHJ1Y3Rpb24gSW5mbyAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0SXRpbmVyYXJ5LnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0SXRpbmVyYXJ5LnRkCmluZGV4IDE4MjA1NGQuLmI2OGVkMDQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L1RhcmdldEl0aW5lcmFyeS50ZAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9UYXJnZXRJdGluZXJhcnkudGQKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVGFyZ2V0SXRpbmVyYXJ5LnRkIC0gVGFyZ2V0IEl0aW5pZXJhcnkgRGVzY3JpcHRpb24gLS0qLSB0YWJsZWdlbiAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L1RhcmdldExvd2VyaW5nT2JqZWN0RmlsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0TG93ZXJpbmdPYmplY3RGaWxlLmgKaW5kZXggNDBiNzdjMy4uZjk2ZTM1MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0TG93ZXJpbmdPYmplY3RGaWxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0TG93ZXJpbmdPYmplY3RGaWxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vVGFyZ2V0L1RhcmdldExvd2VyaW5nT2JqZWN0RmlsZS5oIC0gT2JqZWN0IEluZm8gLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTIwMSw2ICsyMDAsMTIgQEAKICAgdmlydHVhbCB2b2lkIGVtaXRMaW5rZXJGbGFnc0ZvclVzZWQocmF3X29zdHJlYW0gJk9TLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHbG9iYWxWYWx1ZSAqR1YpIGNvbnN0IHt9CiAKKyAgLy8vIElmIHN1cHBvcnRlZCwgcmV0dXJuIHRoZSBzZWN0aW9uIHRvIHVzZSBmb3IgdGhlIGxsdm0uY29tbWFuZGxpbmUKKyAgLy8vIG1ldGFkYXRhLiBPdGhlcndpc2UsIHJldHVybiBudWxscHRyLgorICB2aXJ0dWFsIE1DU2VjdGlvbiAqZ2V0U2VjdGlvbkZvckNvbW1hbmRMaW5lcygpIGNvbnN0IHsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyAgfQorCiBwcm90ZWN0ZWQ6CiAgIHZpcnR1YWwgTUNTZWN0aW9uICpTZWxlY3RTZWN0aW9uRm9yR2xvYmFsKGNvbnN0IEdsb2JhbE9iamVjdCAqR08sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb25LaW5kIEtpbmQsCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9UYXJnZXRNYWNoaW5lLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9UYXJnZXRNYWNoaW5lLmgKaW5kZXggZTc0M2U5Zi4uN2RkOWI5OSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0TWFjaGluZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L1RhcmdldE1hY2hpbmUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gbGx2bS9UYXJnZXQvVGFyZ2V0TWFjaGluZS5oIC0gVGFyZ2V0IEluZm9ybWF0aW9uIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjAxLDYgKzIwMCw5IEBACiAgIGJvb2wgZ2V0TzBXYW50c0Zhc3RJU2VsKCkgeyByZXR1cm4gTzBXYW50c0Zhc3RJU2VsOyB9CiAgIHZvaWQgc2V0TzBXYW50c0Zhc3RJU2VsKGJvb2wgRW5hYmxlKSB7IE8wV2FudHNGYXN0SVNlbCA9IEVuYWJsZTsgfQogICB2b2lkIHNldEdsb2JhbElTZWwoYm9vbCBFbmFibGUpIHsgT3B0aW9ucy5FbmFibGVHbG9iYWxJU2VsID0gRW5hYmxlOyB9CisgIHZvaWQgc2V0R2xvYmFsSVNlbEFib3J0KEdsb2JhbElTZWxBYm9ydE1vZGUgTW9kZSkgeworICAgIE9wdGlvbnMuR2xvYmFsSVNlbEFib3J0ID0gTW9kZTsKKyAgfQogICB2b2lkIHNldE1hY2hpbmVPdXRsaW5lcihib29sIEVuYWJsZSkgewogICAgIE9wdGlvbnMuRW5hYmxlTWFjaGluZU91dGxpbmVyID0gRW5hYmxlOwogICB9CkBAIC0yODQsMTggKzI4Niw2IEBACiAgIHZvaWQgZ2V0TmFtZVdpdGhQcmVmaXgoU21hbGxWZWN0b3JJbXBsPGNoYXI+ICZOYW1lLCBjb25zdCBHbG9iYWxWYWx1ZSAqR1YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgTWFuZ2xlciAmTWFuZywgYm9vbCBNYXlBbHdheXNVc2VQcml2YXRlID0gZmFsc2UpIGNvbnN0OwogICBNQ1N5bWJvbCAqZ2V0U3ltYm9sKGNvbnN0IEdsb2JhbFZhbHVlICpHVikgY29uc3Q7Ci0KLSAgLy8vIFRydWUgaWYgdGhlIHRhcmdldCB1c2VzIHBoeXNpY2FsIHJlZ3MgYXQgUHJvbG9nL0VwaWxvZyBpbnNlcnRpb24KLSAgLy8vIHRpbWUuIElmIHRydWUgKG1vc3QgbWFjaGluZXMpLCBhbGwgdnJlZ3MgbXVzdCBiZSBhbGxvY2F0ZWQgYmVmb3JlCi0gIC8vLyBQRUkuIElmIGZhbHNlICh2aXJ0dWFsLXJlZ2lzdGVyIG1hY2hpbmVzKSwgdGhlbiBjYWxsZWUtc2F2ZSByZWdpc3RlcgotICAvLy8gc3BpbGxpbmcgYW5kIHNjYXZlbmdpbmcgYXJlIG5vdCBuZWVkZWQgb3IgdXNlZC4KLSAgdmlydHVhbCBib29sIHVzZXNQaHlzUmVnc0ZvclBFSSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAvLy8gVHJ1ZSBpZiB0aGUgdGFyZ2V0IHdhbnRzIHRvIHVzZSBpbnRlcnByb2NlZHVyYWwgcmVnaXN0ZXIgYWxsb2NhdGlvbiBieQotICAvLy8gZGVmYXVsdC4gVGhlIC1lbmFibGUtaXByYSBmbGFnIGNhbiBiZSB1c2VkIHRvIG92ZXJyaWRlIHRoaXMuCi0gIHZpcnR1YWwgYm9vbCB1c2VJUFJBKCkgY29uc3QgewotICAgIHJldHVybiBmYWxzZTsKLSAgfQogfTsKIAogLy8vIFRoaXMgY2xhc3MgZGVzY3JpYmVzIGEgdGFyZ2V0IG1hY2hpbmUgdGhhdCBpcyBpbXBsZW1lbnRlZCB3aXRoIHRoZSBMTFZNCkBAIC0zNDksOCArMzM5LDM3IEBACiAgIGJvb2wgYWRkQXNtUHJpbnRlcihQYXNzTWFuYWdlckJhc2UgJlBNLCByYXdfcHdyaXRlX3N0cmVhbSAmT3V0LAogICAgICAgICAgICAgICAgICAgICAgcmF3X3B3cml0ZV9zdHJlYW0gKkR3b091dCwgQ29kZUdlbkZpbGVUeXBlIEZpbGVUWXBlLAogICAgICAgICAgICAgICAgICAgICAgTUNDb250ZXh0ICZDb250ZXh0KTsKKworICAvLy8gVHJ1ZSBpZiB0aGUgdGFyZ2V0IHVzZXMgcGh5c2ljYWwgcmVncyBhdCBQcm9sb2cvRXBpbG9nIGluc2VydGlvbgorICAvLy8gdGltZS4gSWYgdHJ1ZSAobW9zdCBtYWNoaW5lcyksIGFsbCB2cmVncyBtdXN0IGJlIGFsbG9jYXRlZCBiZWZvcmUKKyAgLy8vIFBFSS4gSWYgZmFsc2UgKHZpcnR1YWwtcmVnaXN0ZXIgbWFjaGluZXMpLCB0aGVuIGNhbGxlZS1zYXZlIHJlZ2lzdGVyCisgIC8vLyBzcGlsbGluZyBhbmQgc2NhdmVuZ2luZyBhcmUgbm90IG5lZWRlZCBvciB1c2VkLgorICB2aXJ0dWFsIGJvb2wgdXNlc1BoeXNSZWdzRm9yUEVJKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgIC8vLyBUcnVlIGlmIHRoZSB0YXJnZXQgd2FudHMgdG8gdXNlIGludGVycHJvY2VkdXJhbCByZWdpc3RlciBhbGxvY2F0aW9uIGJ5CisgIC8vLyBkZWZhdWx0LiBUaGUgLWVuYWJsZS1pcHJhIGZsYWcgY2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhpcy4KKyAgdmlydHVhbCBib29sIHVzZUlQUkEoKSBjb25zdCB7CisgICAgcmV0dXJuIGZhbHNlOworICB9CiB9OwogCisvLy8gSGVscGVyIG1ldGhvZCBmb3IgZ2V0dGluZyB0aGUgY29kZSBtb2RlbCwgcmV0dXJuaW5nIERlZmF1bHQgaWYKKy8vLyBDTSBkb2VzIG5vdCBoYXZlIGEgdmFsdWUuIFRoZSB0aW55IGFuZCBrZXJuZWwgbW9kZWxzIHdpbGwgcHJvZHVjZQorLy8vIGFuIGVycm9yLCBzbyB0YXJnZXRzIHRoYXQgc3VwcG9ydCB0aGVtIG9yIHJlcXVpcmUgbW9yZSBjb21wbGV4IGNvZGVtb2RlbAorLy8vIHNlbGVjdGlvbiBsb2dpYyBzaG91bGQgaW1wbGVtZW50IGFuZCBjYWxsIHRoZWlyIG93biBnZXRFZmZlY3RpdmVDb2RlTW9kZWwuCitpbmxpbmUgQ29kZU1vZGVsOjpNb2RlbCBnZXRFZmZlY3RpdmVDb2RlTW9kZWwoT3B0aW9uYWw8Q29kZU1vZGVsOjpNb2RlbD4gQ00sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kZU1vZGVsOjpNb2RlbCBEZWZhdWx0KSB7CisgIGlmIChDTSkgeworICAgIC8vIEJ5IGRlZmF1bHQsIHRhcmdldHMgZG8gbm90IHN1cHBvcnQgdGhlIHRpbnkgYW5kIGtlcm5lbCBtb2RlbHMuCisgICAgaWYgKCpDTSA9PSBDb2RlTW9kZWw6OlRpbnkpCisgICAgICByZXBvcnRfZmF0YWxfZXJyb3IoIlRhcmdldCBkb2VzIG5vdCBzdXBwb3J0IHRoZSB0aW55IENvZGVNb2RlbCIpOworICAgIGlmICgqQ00gPT0gQ29kZU1vZGVsOjpLZXJuZWwpCisgICAgICByZXBvcnRfZmF0YWxfZXJyb3IoIlRhcmdldCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBrZXJuZWwgQ29kZU1vZGVsIik7CisgICAgcmV0dXJuICpDTTsKKyAgfQorICByZXR1cm4gRGVmYXVsdDsKK30KKwogfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KIAogI2VuZGlmIC8vIExMVk1fVEFSR0VUX1RBUkdFVE1BQ0hJTkVfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0T3B0aW9ucy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0T3B0aW9ucy5oCmluZGV4IDA3ZWQ3NzMuLjZiNzZhMTEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L1RhcmdldE9wdGlvbnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9UYXJnZXRPcHRpb25zLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIGxsdm0vVGFyZ2V0L1RhcmdldE9wdGlvbnMuaCAtIFRhcmdldCBPcHRpb25zIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTk2LDYgKzk1LDE0IEBACiAgICAgU0NFICAgICAgIC8vIFR1bmUgZGVidWcgaW5mbyBmb3IgU0NFIHRhcmdldHMgKGUuZy4gUFM0KS4KICAgfTsKIAorICAvLy8gRW5hYmxlIGFib3J0IGNhbGxzIHdoZW4gZ2xvYmFsIGluc3RydWN0aW9uIHNlbGVjdGlvbiBmYWlscyB0byBsb3dlci9zZWxlY3QKKyAgLy8vIGFuIGluc3RydWN0aW9uLgorICBlbnVtIGNsYXNzIEdsb2JhbElTZWxBYm9ydE1vZGUgeworICAgIERpc2FibGUsICAgICAgICAvLyBEaXNhYmxlIHRoZSBhYm9ydC4KKyAgICBFbmFibGUsICAgICAgICAgLy8gRW5hYmxlIHRoZSBhYm9ydC4KKyAgICBEaXNhYmxlV2l0aERpYWcgLy8gRGlzYWJsZSB0aGUgYWJvcnQgYnV0IGVtaXQgYSBkaWFnbm9zdGljIG9uIGZhaWx1cmUuCisgIH07CisKICAgY2xhc3MgVGFyZ2V0T3B0aW9ucyB7CiAgIHB1YmxpYzoKICAgICBUYXJnZXRPcHRpb25zKCkKQEAgLTE5Miw2ICsxOTksMTAgQEAKICAgICAvLy8gRW5hYmxlR2xvYmFsSVNlbCAtIFRoaXMgZmxhZyBlbmFibGVzIGdsb2JhbCBpbnN0cnVjdGlvbiBzZWxlY3Rpb24uCiAgICAgdW5zaWduZWQgRW5hYmxlR2xvYmFsSVNlbCA6IDE7CiAKKyAgICAvLy8gRW5hYmxlR2xvYmFsSVNlbEFib3J0IC0gQ29udHJvbCBhYm9ydCBiZWhhdmlvdXIgd2hlbiBnbG9iYWwgaW5zdHJ1Y3Rpb24KKyAgICAvLy8gc2VsZWN0aW9uIGZhaWxzIHRvIGxvd2VyL3NlbGVjdCBhbiBpbnN0cnVjdGlvbi4KKyAgICBHbG9iYWxJU2VsQWJvcnRNb2RlIEdsb2JhbElTZWxBYm9ydCA9IEdsb2JhbElTZWxBYm9ydE1vZGU6OkVuYWJsZTsKKwogICAgIC8vLyBVc2VJbml0QXJyYXkgLSBVc2UgLmluaXRfYXJyYXkgaW5zdGVhZCBvZiAuY3RvcnMgZm9yIHN0YXRpYwogICAgIC8vLyBjb25zdHJ1Y3RvcnMuCiAgICAgdW5zaWduZWQgVXNlSW5pdEFycmF5IDogMTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L1RhcmdldFBmbUNvdW50ZXJzLnRkIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0UGZtQ291bnRlcnMudGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFkNTAxMwotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L1RhcmdldFBmbUNvdW50ZXJzLnRkCkBAIC0wLDAgKzEsNDkgQEAKKy8vPT09LSBUYXJnZXRQZm1Db3VudGVycy50ZCAtIFRhcmdldCBQZm0gQ291bnRlcnMgLSotIHRhYmxlZ2VuIC0tLS0tLS0tLS0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gVGhpcyBmaWxlIGRlZmluZXMgdGhlIHRhcmdldC1pbmRlcGVuZGVudCBpbnRlcmZhY2VzIGZvciBwZXJmb3JtYW5jZSBjb3VudGVycy4KKworLy8gRGVmaW5pdGlvbiBvZiBhIGhhcmR3YXJlIGNvdW50ZXJzIGZyb20gbGlicGZtIGlkZW50aWZpZXJzLgorY2xhc3MgUGZtQ291bnRlcjxzdHJpbmcgY291bnRlcj4geworICAvLyBUaGUgbmFtZSBvZiB0aGUgY291bnRlciB0aGF0IG1lYXN1cmVzIGV2ZW50cy4KKyAgLy8gVGhlIG5hbWUgY2FuIGJlICJzb21lX2NvdW50ZXIgKyBzb21lX290aGVyX2NvdW50ZXIiLCBpbiB3aGljaCBjYXNlIHRoZQorICAvLyBtZWFzdXJlZCB2YWx1ZSBpcyB0aGUgc3VtIG9mIGV2ZW50cyBvbiB0aGVzZSBjb3VudGVycy4KKyAgc3RyaW5nIENvdW50ZXIgPSBjb3VudGVyOworfQorCisvLyBJc3N1ZSBjb3VudGVycyBjYW4gYmUgdGllZCB0byBhIFByb2NSZXNvdXJjZQorY2xhc3MgUGZtSXNzdWVDb3VudGVyPHN0cmluZyByZXNvdXJjZV9uYW1lLCBzdHJpbmcgY291bnRlcj4KKyAgICA6IFBmbUNvdW50ZXI8Y291bnRlcj4geworICAvLyBUaGUgbmFtZSBvZiB0aGUgUHJvY1Jlc291cmNlIG9uIHdoaWNoIHVvcHMgYXJlIGlzc3VlZC4gVGhpcyBpcyB1c2VkIGJ5CisgIC8vIGxsdm0tZXhlZ2VzaXMgdG8gY29tcGFyZSBtZWFzdXJlbWVudHMgd2l0aCB2YWx1ZXMgaW4gdGhlIFNjaGVkTW9kZWxzLgorICAvLyBJZiB0aGUgQ1BVIGhhcyBhIHNjaGVkIG1vZGVsLCB0aGlzIHNob3VsZCBjb3JyZXNwb25kIHRvIHRoZSBuYW1lIG9mIGEKKyAgLy8gUHJvY1Jlc291cmNlLgorICBzdHJpbmcgUmVzb3VyY2VOYW1lID0gcmVzb3VyY2VfbmFtZTsKK30KKworZGVmIE5vUGZtQ291bnRlciA6IFBmbUNvdW50ZXIgPCIiPiB7fQorCisvLyBTZXQgb2YgUGZtQ291bnRlcnMgZm9yIG1lYXN1cmluZyBzY2hlZCBtb2RlbCBjaGFyYWN0ZXJpc3RpY3MuCitjbGFzcyBQcm9jUGZtQ291bnRlcnMgeworICAvLyBQcm9jZXNzb3JzIGNhbiBkZWZpbmUgaG93IHRvIG1lYXN1cmUgY3ljbGVzIGJ5IGRlZmluaW5nIGEgQ3ljbGVDb3VudGVyLgorICBQZm1Db3VudGVyIEN5Y2xlQ291bnRlciA9IE5vUGZtQ291bnRlcjsKKyAgLy8gUHJvY2Vzc29ycyBjYW4gZGVmaW5lIGhvdyB0byBtZWFzdXJlIHVvcHMgYnkgZGVmaW5pbmcgYSBVb3BzQ291bnRlci4KKyAgUGZtQ291bnRlciBVb3BzQ291bnRlciA9IE5vUGZtQ291bnRlcjsKKyAgLy8gUHJvY2Vzc29ycyBjYW4gZGVmaW5lIGhvdyB0byBtZWFzdXJlIGlzc3VlZCB1b3BzIGJ5IGRlZmluaW5nIElzc3VlQ291bnRlcnMuCisgIGxpc3Q8UGZtSXNzdWVDb3VudGVyPiBJc3N1ZUNvdW50ZXJzID0gW107Cit9CisKKy8vIEEgYmluZGluZyBvZiBhIHNldCBvZiBjb3VudGVycyB0byBhIENQVS4KK2NsYXNzIFBmbUNvdW50ZXJzQmluZGluZzxzdHJpbmcgY3B1X25hbWUsIFByb2NQZm1Db3VudGVycyBjb3VudGVycz4geworICBzdHJpbmcgQ3B1TmFtZSA9IGNwdV9uYW1lOworICBQcm9jUGZtQ291bnRlcnMgQ291bnRlcnMgPSBjb3VudGVyczsKK30KKworLy8gRGVjbGFyZXMgdGhlIGRlZmF1bHQgYmluZGluZyBmb3IgdW5ib3VuZCBDUFVzIGZvciB0aGUgdGFyZ2V0LgorY2xhc3MgUGZtQ291bnRlcnNEZWZhdWx0QmluZGluZzxQcm9jUGZtQ291bnRlcnMgY291bnRlcnM+CisgICAgOiBQZm1Db3VudGVyc0JpbmRpbmc8IiIsIGNvdW50ZXJzPiB7fQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0U2NoZWR1bGUudGQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9UYXJnZXRTY2hlZHVsZS50ZAppbmRleCA3ZDdjZTJkLi5jYmZhZDVmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9UYXJnZXRTY2hlZHVsZS50ZAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9UYXJnZXRTY2hlZHVsZS50ZApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUYXJnZXRTY2hlZHVsZS50ZCAtIFRhcmdldCBJbmRlcGVuZGVudCBTY2hlZHVsaW5nIC0tLSotIHRhYmxlZ2VuIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMzczLDYgKzM3MiwxMCBAQAogICBTY2hlZE1hY2hpbmVNb2RlbCBTY2hlZE1vZGVsID0gPzsKICAgY29kZSBQcmVkaWNhdGUgPSBwcmVkOwogfQorCisvLyBEZWZpbmUgYSBwcmVkaWNhdGUgdG8gYmUgdHlwaWNhbGx5IHVzZWQgYXMgdGhlIGRlZmF1bHQgY2FzZSBpbiBhCisvLyBTY2hlZFZhcmlhbnQuICBJdCB0aGUgU2NoZWRWYXJpYW50IGRvZXMgbm90IHVzZSBhbnkgb3RoZXIgcHJlZGljYXRlIGJhc2VkIG9uCisvLyBNQ1NjaGVkUHJlZGljYXRlLCB0aGlzIGlzIHRoZSBkZWZhdWx0IHNjaGVkdWxpbmcgY2FzZSB1c2VkIGJ5IGxsdm0tbWNhLgogZGVmIE5vU2NoZWRQcmVkIDogTUNTY2hlZFByZWRpY2F0ZTxUcnVlUHJlZD47CiAKIC8vIEFzc29jaWF0ZSBhIHByZWRpY2F0ZSB3aXRoIGEgbGlzdCBvZiBTY2hlZFJlYWRXcml0ZXMuIEJ5IGRlZmF1bHQsCkBAIC00NjAsNiArNDYzLDEwIEBACiAvLyAgLSBUaGUgbnVtYmVyIG9mIHBoeXNpY2FsIHJlZ2lzdGVycyB3aGljaCBjYW4gYmUgdXNlZCBmb3IgcmVnaXN0ZXIgcmVuYW1pbmcKIC8vICAgIHB1cnBvc2UuCiAvLyAgLSBUaGUgY29zdCBvZiBhIHJlZ2lzdGVyIHJlbmFtZS4KKy8vICAtIFRoZSBzZXQgb2YgcmVnaXN0ZXJzIHRoYXQgYWxsb3cgbW92ZSBlbGltaW5hdGlvbi4KKy8vICAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBtb3ZlcyB0aGF0IGNhbiBiZSBlbGltaW5hdGVkIGV2ZXJ5IGN5Y2xlLgorLy8gIC0gV2hldGhlciBtb3ZlIGVsaW1pbmF0aW9uIGlzIGxpbWl0ZWQgdG8gcmVnaXN0ZXIgbW92ZXMgd2hvc2UgaW5wdXQKKy8vICAgIGlzIGtub3duIHRvIGJlIHplcm8uCiAvLwogLy8gVGhlIGNvc3Qgb2YgYSByZW5hbWUgaXMgdGhlIG51bWJlciBvZiBwaHlzaWNhbCByZWdpc3RlcnMgYWxsb2NhdGVkIGJ5IHRoZQogLy8gcmVnaXN0ZXIgYWxpYXMgdGFibGUgdG8gbWFwIHRoZSBuZXcgZGVmaW5pdGlvbi4gQnkgZGVmYXVsdCwgcmVnaXN0ZXIgY2FuIGJlCkBAIC01MDYsMTEgKzUxMywzNSBAQAogLy8gcGFydGlhbCB3cml0ZSBpcyBjb21iaW5lZCB3aXRoIHRoZSBwcmV2aW91cyBzdXBlci1yZWdpc3RlciBkZWZpbml0aW9uLiAgV2UKIC8vIHNob3VsZCBhZGQgc3VwcG9ydCBmb3IgdGhlc2UgY2FzZXMsIGFuZCBjb3JyZWN0bHkgbW9kZWwgbWVyZ2UgcHJvYmxlbXMgd2l0aAogLy8gcGFydGlhbCByZWdpc3RlciBhY2Nlc3Nlcy4KKy8vCisvLyBGaWVsZCBNYXhNb3Zlc0VsaW1pbmF0ZWRQZXJDeWNsZSBzcGVjaWZpZXMgaG93IG1hbnkgbW92ZXMgY2FuIGJlIGVsaW1pbmF0ZWQKKy8vIGV2ZXJ5IGN5Y2xlLiBBIGRlZmF1bHQgdmFsdWUgb2YgemVybyBmb3IgdGhhdCBmaWVsZCBtZWFuczogdGhlcmUgaXMgbm8gbGltaXQKKy8vIHRvIHRoZSBudW1iZXIgb2YgbW92ZXMgdGhhdCBjYW4gYmUgZWxpbWluYXRlZCBieSB0aGlzIHJlZ2lzdGVyIGZpbGUuCisvLworLy8gQW4gaW5zdHJ1Y3Rpb24gTUkgaXMgYSBjYW5kaWRhdGUgZm9yIG1vdmUgZWxpbWluYXRpb24gaWYgYSBjYWxsIHRvCisvLyBtZXRob2QgVGFyZ2V0U3VidGFyZ2V0SW5mbzo6aXNPcHRpbWl6YWJsZVJlZ2lzdGVyTW92ZShNSSkgcmV0dXJucyB0cnVlIChzZWUKKy8vIGxsdm0vQ29kZUdlbi9UYXJnZXRTdWJ0YXJnZXRJbmZvLmgsIGFuZCBsbHZtL01DL01DSW5zdHJBbmFseXNpcy5oKS4KKy8vCisvLyBTdWJ0YXJnZXRzIGNhbiBpbnN0YW50aWF0ZSB0YWJsZWdlbiBjbGFzcyBJc09wdGltaXphYmxlUmVnaXN0ZXJNb3ZlIChzZWUKKy8vIGxsdm0vVGFyZ2V0L1RhcmdldEluc3RyUHJlZGljYXRlLnRkKSB0byBjdXN0b21pemUgdGhlIHNldCBvZiBtb3ZlIGVsaW1pbmF0aW9uCisvLyBjYW5kaWRhdGVzLiBCeSBkZWZhdWx0LCBubyBpbnN0cnVjdGlvbiBpcyBhIHZhbGlkIG1vdmUgZWxpbWluYXRpb24gY2FuZGlkYXRlLgorLy8KKy8vIEEgcmVnaXN0ZXIgbW92ZSBNSSBpcyBlbGltaW5hdGVkIG9ubHkgaWY6CisvLyAgLSBNSSBpcyBhIG1vdmUgZWxpbWluYXRpb24gY2FuZGlkYXRlLgorLy8gIC0gVGhlIGRlc3RpbmF0aW9uIHJlZ2lzdGVyIGlzIGZyb20gYSByZWdpc3RlciBjbGFzcyB0aGF0IGFsbG93cyBtb3ZlCisvLyAgICBlbGltaW5hdGlvbiAoc2VlIGZpZWxkIGBBbGxvd01vdmVFbGltaW5hdGlvbmAgYmVsb3cpLgorLy8gIC0gQ29uc3RyYWludHMgb24gdGhlIG1vdmUga2luZCwgYW5kIHRoZSBtYXhpbXVtIG51bWJlciBvZiBtb3ZlcyB0aGF0IGNhbiBiZQorLy8gICAgZWxpbWluYXRlZCBwZXIgY3ljbGUgYXJlIGFsbCBtZXQuCisKIGNsYXNzIFJlZ2lzdGVyRmlsZTxpbnQgbnVtUGh5c1JlZ3MsIGxpc3Q8UmVnaXN0ZXJDbGFzcz4gQ2xhc3NlcyA9IFtdLAotICAgICAgICAgICAgICAgICAgIGxpc3Q8aW50PiBDb3N0cyA9IFtdPiB7CisgICAgICAgICAgICAgICAgICAgbGlzdDxpbnQ+IENvc3RzID0gW10sIGxpc3Q8Yml0PiBBbGxvd01vdmVFbGltID0gW10sCisgICAgICAgICAgICAgICAgICAgaW50IE1heE1vdmVFbGltUGVyQ3kgPSAwLCBiaXQgQWxsb3daZXJvTW92ZUVsaW1Pbmx5ID0gMD4gewogICBsaXN0PFJlZ2lzdGVyQ2xhc3M+IFJlZ0NsYXNzZXMgPSBDbGFzc2VzOwogICBsaXN0PGludD4gUmVnQ29zdHMgPSBDb3N0czsKKyAgbGlzdDxiaXQ+IEFsbG93TW92ZUVsaW1pbmF0aW9uID0gQWxsb3dNb3ZlRWxpbTsKICAgaW50IE51bVBoeXNSZWdzID0gbnVtUGh5c1JlZ3M7CisgIGludCBNYXhNb3Zlc0VsaW1pbmF0ZWRQZXJDeWNsZSA9IE1heE1vdmVFbGltUGVyQ3k7CisgIGJpdCBBbGxvd1plcm9Nb3ZlRWxpbWluYXRpb25Pbmx5ID0gQWxsb3daZXJvTW92ZUVsaW1Pbmx5OwogICBTY2hlZE1hY2hpbmVNb2RlbCBTY2hlZE1vZGVsID0gPzsKIH0KIApAQCAtNTMwLDMwICs1NjEsMTIgQEAKICAgU2NoZWRNYWNoaW5lTW9kZWwgU2NoZWRNb2RlbCA9ID87CiB9CiAKLS8vIEFsbG93IHRoZSBkZWZpbml0aW9uIG9mIGhhcmR3YXJlIGNvdW50ZXJzLgotY2xhc3MgUGZtQ291bnRlciB7CisvLyBCYXNlIGNsYXNzIGZvciBMb2FkL1N0b3JlUXVldWUuICBJdCBpcyB1c2VkIHRvIGlkZW50aWZ5IHByb2Nlc3NvciByZXNvdXJjZXMKKy8vIHdoaWNoIGRlc2NyaWJlIGxvYWQvc3RvcmUgcXVldWVzIGluIHRoZSBMUyB1bml0LgorY2xhc3MgTWVtb3J5UXVldWU8UHJvY1Jlc291cmNlIFBSPiB7CisgIFByb2NSZXNvdXJjZSBRdWV1ZURlc2NyaXB0b3IgPSBQUjsKICAgU2NoZWRNYWNoaW5lTW9kZWwgU2NoZWRNb2RlbCA9ID87CiB9CiAKLS8vIEVhY2ggcHJvY2Vzc29yIGNhbiBkZWZpbmUgaG93IHRvIG1lYXN1cmUgY3ljbGVzIGJ5IGRlZmluaW5nIGEKLS8vIFBmbUN5Y2xlQ291bnRlci4KLWNsYXNzIFBmbUN5Y2xlQ291bnRlcjxzdHJpbmcgY291bnRlcj4gOiBQZm1Db3VudGVyIHsKLSAgc3RyaW5nIENvdW50ZXIgPSBjb3VudGVyOwotfQotCi0vLyBFYWNoIFByb2NSZXNvdXJjZVVuaXRzIGNhbiBkZWZpbmUgaG93IHRvIG1lYXN1cmUgaXNzdWVkIHVvcHMgYnkgZGVmaW5pbmcKLS8vIGEgUGZtSXNzdWVDb3VudGVyLgotY2xhc3MgUGZtSXNzdWVDb3VudGVyPFByb2NSZXNvdXJjZVVuaXRzIHJlc291cmNlLCBsaXN0PHN0cmluZz4gY291bnRlcnM+Ci0gICAgOiBQZm1Db3VudGVyewotICAvLyBUaGUgcmVzb3VyY2UgdW5pdHMgb24gd2hpY2ggdW9wcyBhcmUgaXNzdWVkLgotICBQcm9jUmVzb3VyY2VVbml0cyBSZXNvdXJjZSA9IHJlc291cmNlOwotICAvLyBUaGUgbGlzdCBvZiBjb3VudGVycyB0aGF0IG1lYXN1cmUgaXNzdWUgZXZlbnRzLgotICBsaXN0PHN0cmluZz4gQ291bnRlcnMgPSBjb3VudGVyczsKLX0KLQotLy8gRWFjaCBwcm9jZXNzb3IgY2FuIGRlZmluZSBob3cgdG8gbWVhc3VyZSBOdW1NaWNyb09wcyBieSBkZWZpbmluZyBhCi0vLyBQZm1Vb3BzQ291bnRlci4KLWNsYXNzIFBmbVVvcHNDb3VudGVyPHN0cmluZyBjb3VudGVyPiA6IFBmbUNvdW50ZXIgewotICBzdHJpbmcgQ291bnRlciA9IGNvdW50ZXI7Ci19Ci0KK2NsYXNzIExvYWRRdWV1ZTxQcm9jUmVzb3VyY2UgTERRdWV1ZT4gOiBNZW1vcnlRdWV1ZTxMRFF1ZXVlPjsKK2NsYXNzIFN0b3JlUXVldWU8UHJvY1Jlc291cmNlIFNUUXVldWU+IDogTWVtb3J5UXVldWU8U1RRdWV1ZT47CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9UYXJnZXRTZWxlY3Rpb25EQUcudGQgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RhcmdldC9UYXJnZXRTZWxlY3Rpb25EQUcudGQKaW5kZXggNGU0NjNiOS4uMTc0ZDk3YSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UYXJnZXQvVGFyZ2V0U2VsZWN0aW9uREFHLnRkCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGFyZ2V0L1RhcmdldFNlbGVjdGlvbkRBRy50ZApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUYXJnZXRTZWxlY3Rpb25EQUcudGQgLSBDb21tb24gY29kZSBmb3IgREFHIGlzZWxzIC0tLSotIHRhYmxlZ2VuIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTE2LDEyICsxMTUsMTggQEAKIGRlZiBTRFRJbnRTaGlmdE9wIDogU0RUeXBlUHJvZmlsZTwxLCAyLCBbICAgLy8gc2hsLCBzcmEsIHNybAogICBTRFRDaXNTYW1lQXM8MCwgMT4sIFNEVENpc0ludDwwPiwgU0RUQ2lzSW50PDI+CiBdPjsKK2RlZiBTRFRJbnRTaGlmdERPcDogU0RUeXBlUHJvZmlsZTwxLCAzLCBbICAgLy8gZnNobCwgZnNocgorICBTRFRDaXNTYW1lQXM8MCwgMT4sIFNEVENpc1NhbWVBczwwLCAyPiwgU0RUQ2lzSW50PDA+LCBTRFRDaXNJbnQ8Mz4KK10+OwogZGVmIFNEVEludFNhdE5vU2hPcCA6IFNEVHlwZVByb2ZpbGU8MSwgMiwgWyAgIC8vIHNzYXQgd2l0aCBubyBzaGlmdAogICBTRFRDaXNTYW1lQXM8MCwgMT4sIFNEVENpc0ludDwyPgogXT47CiBkZWYgU0RUSW50QmluSGlMb09wIDogU0RUeXBlUHJvZmlsZTwyLCAyLCBbIC8vIG11bGhpLCBtdWxsbywgc2RpdnJlbSwgdWRpdnJlbQogICBTRFRDaXNTYW1lQXM8MCwgMT4sIFNEVENpc1NhbWVBczwwLCAyPiwgU0RUQ2lzU2FtZUFzPDAsIDM+LFNEVENpc0ludDwwPgogXT47CitkZWYgU0RUSW50U2NhbGVkQmluT3AgOiBTRFR5cGVQcm9maWxlPDEsIDMsIFsgIC8vIHNtdWxmaXgsIHVtdWxmaXgKKyAgU0RUQ2lzU2FtZUFzPDAsIDE+LCBTRFRDaXNTYW1lQXM8MCwgMj4sIFNEVENpc0ludDwwPiwgU0RUQ2lzSW50PDM+CitdPjsKIAogZGVmIFNEVEZQQmluT3AgOiBTRFR5cGVQcm9maWxlPDEsIDIsIFsgICAgICAvLyBmYWRkLCBmbXVsLCBldGMuCiAgIFNEVENpc1NhbWVBczwwLCAxPiwgU0RUQ2lzU2FtZUFzPDAsIDI+LCBTRFRDaXNGUDwwPgpAQCAtMTYyLDcgKzE2Nyw3IEBACiBdPjsKIGRlZiBTRFRFeHRJbnZlYyA6IFNEVHlwZVByb2ZpbGU8MSwgMSwgWyAgICAgLy8gc2V4dF9pbnZlYwogICBTRFRDaXNJbnQ8MD4sIFNEVENpc1ZlYzwwPiwgU0RUQ2lzSW50PDE+LCBTRFRDaXNWZWM8MT4sCi0gIFNEVENpc09wU21hbGxlclRoYW5PcDwxLCAwPiwgU0RUQ2lzU2FtZVNpemVBczwwLDE+CisgIFNEVENpc09wU21hbGxlclRoYW5PcDwxLCAwPgogXT47CiAKIGRlZiBTRFRTZXRDQyA6IFNEVHlwZVByb2ZpbGU8MSwgMywgWyAgICAgICAgLy8gc2V0Y2MKQEAgLTI1OSw2ICsyNjQsMTEgQEAKIGRlZiBTRFRBdG9taWMyIDogU0RUeXBlUHJvZmlsZTwxLCAyLCBbCiAgIFNEVENpc1NhbWVBczwwLDI+LCBTRFRDaXNJbnQ8MD4sIFNEVENpc1B0clR5PDE+CiBdPjsKKworZGVmIFNEVEZQQXRvbWljMiA6IFNEVHlwZVByb2ZpbGU8MSwgMiwgWworICBTRFRDaXNTYW1lQXM8MCwyPiwgU0RUQ2lzRlA8MD4sIFNEVENpc1B0clR5PDE+CitdPjsKKwogZGVmIFNEVEF0b21pY1N0b3JlIDogU0RUeXBlUHJvZmlsZTwwLCAyLCBbCiAgIFNEVENpc1B0clR5PDA+LCBTRFRDaXNJbnQ8MT4KIF0+OwpAQCAtMzUwLDYgKzM2MCw4IEBACiBkZWYgc2hsICAgICAgICA6IFNETm9kZTwiSVNEOjpTSEwiICAgICAgICwgU0RUSW50U2hpZnRPcD47CiBkZWYgcm90bCAgICAgICA6IFNETm9kZTwiSVNEOjpST1RMIiAgICAgICwgU0RUSW50U2hpZnRPcD47CiBkZWYgcm90ciAgICAgICA6IFNETm9kZTwiSVNEOjpST1RSIiAgICAgICwgU0RUSW50U2hpZnRPcD47CitkZWYgZnNobCAgICAgICA6IFNETm9kZTwiSVNEOjpGU0hMIiAgICAgICwgU0RUSW50U2hpZnRET3A+OworZGVmIGZzaHIgICAgICAgOiBTRE5vZGU8IklTRDo6RlNIUiIgICAgICAsIFNEVEludFNoaWZ0RE9wPjsKIGRlZiBhbmQgICAgICAgIDogU0ROb2RlPCJJU0Q6OkFORCIgICAgICAgLCBTRFRJbnRCaW5PcCwKICAgICAgICAgICAgICAgICAgICAgICAgIFtTRE5QQ29tbXV0YXRpdmUsIFNETlBBc3NvY2lhdGl2ZV0+OwogZGVmIG9yICAgICAgICAgOiBTRE5vZGU8IklTRDo6T1IiICAgICAgICAsIFNEVEludEJpbk9wLApAQCAtMzczLDYgKzM4NSwxNCBAQAogZGVmIHVtYXggICAgICAgOiBTRE5vZGU8IklTRDo6VU1BWCIgICAgICAsIFNEVEludEJpbk9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTRE5QQ29tbXV0YXRpdmUsIFNETlBBc3NvY2lhdGl2ZV0+OwogCitkZWYgc2FkZHNhdCAgICA6IFNETm9kZTwiSVNEOjpTQUREU0FUIiAgICwgU0RUSW50QmluT3AsIFtTRE5QQ29tbXV0YXRpdmVdPjsKK2RlZiB1YWRkc2F0ICAgIDogU0ROb2RlPCJJU0Q6OlVBRERTQVQiICAgLCBTRFRJbnRCaW5PcCwgW1NETlBDb21tdXRhdGl2ZV0+OworZGVmIHNzdWJzYXQgICAgOiBTRE5vZGU8IklTRDo6U1NVQlNBVCIgICAsIFNEVEludEJpbk9wPjsKK2RlZiB1c3Vic2F0ICAgIDogU0ROb2RlPCJJU0Q6OlVTVUJTQVQiICAgLCBTRFRJbnRCaW5PcD47CisKK2RlZiBzbXVsZml4ICAgIDogU0ROb2RlPCJJU0Q6OlNNVUxGSVgiICAgLCBTRFRJbnRTY2FsZWRCaW5PcCwgW1NETlBDb21tdXRhdGl2ZV0+OworZGVmIHVtdWxmaXggICAgOiBTRE5vZGU8IklTRDo6VU1VTEZJWCIgICAsIFNEVEludFNjYWxlZEJpbk9wLCBbU0ROUENvbW11dGF0aXZlXT47CisKIGRlZiBzZXh0X2lucmVnIDogU0ROb2RlPCJJU0Q6OlNJR05fRVhURU5EX0lOUkVHIiwgU0RURXh0SW5yZWc+OwogZGVmIHNleHRfaW52ZWMgOiBTRE5vZGU8IklTRDo6U0lHTl9FWFRFTkRfVkVDVE9SX0lOUkVHIiwgU0RURXh0SW52ZWM+OwogZGVmIHpleHRfaW52ZWMgOiBTRE5vZGU8IklTRDo6WkVST19FWFRFTkRfVkVDVE9SX0lOUkVHIiwgU0RURXh0SW52ZWM+OwpAQCAtNDA2LDggKzQyNiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTRE5QQ29tbXV0YXRpdmUsIFNETlBBc3NvY2lhdGl2ZV0+OwogZGVmIGZtYXhudW0gICAgOiBTRE5vZGU8IklTRDo6Rk1BWE5VTSIgICAgLCBTRFRGUEJpbk9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtTRE5QQ29tbXV0YXRpdmUsIFNETlBBc3NvY2lhdGl2ZV0+OwotZGVmIGZtaW5uYW4gICAgOiBTRE5vZGU8IklTRDo6Rk1JTk5BTiIgICAgLCBTRFRGUEJpbk9wPjsKLWRlZiBmbWF4bmFuICAgIDogU0ROb2RlPCJJU0Q6OkZNQVhOQU4iICAgICwgU0RURlBCaW5PcD47CitkZWYgZm1pbm51bV9pZWVlIDogU0ROb2RlPCJJU0Q6OkZNSU5OVU1fSUVFRSIsIFNEVEZQQmluT3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtTRE5QQ29tbXV0YXRpdmVdPjsKK2RlZiBmbWF4bnVtX2llZWUgIDogU0ROb2RlPCJJU0Q6OkZNQVhOVU1fSUVFRSIsIFNEVEZQQmluT3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBbU0ROUENvbW11dGF0aXZlXT47CitkZWYgZm1pbmltdW0gICA6IFNETm9kZTwiSVNEOjpGTUlOSU1VTSIgICAsIFNEVEZQQmluT3AsCisgICAgICAgICAgICAgICAgICAgICAgICBbU0ROUENvbW11dGF0aXZlLCBTRE5QQXNzb2NpYXRpdmVdPjsKK2RlZiBmbWF4aW11bSAgIDogU0ROb2RlPCJJU0Q6OkZNQVhJTVVNIiAgICwgU0RURlBCaW5PcCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFtTRE5QQ29tbXV0YXRpdmUsIFNETlBBc3NvY2lhdGl2ZV0+OwogZGVmIGZnZXRzaWduICAgOiBTRE5vZGU8IklTRDo6RkdFVFNJR04iICAgLCBTRFRGUFRvSW50T3A+OwogZGVmIGZjYW5vbmljYWxpemUgOiBTRE5vZGU8IklTRDo6RkNBTk9OSUNBTElaRSIsIFNEVEZQVW5hcnlPcD47CiBkZWYgZm5lZyAgICAgICA6IFNETm9kZTwiSVNEOjpGTkVHIiAgICAgICAsIFNEVEZQVW5hcnlPcD47CkBAIC00OTEsNiArNTE3LDExIEBACiAgICAgICAgICAgICAgICAgICAgIFtTRE5QSGFzQ2hhaW4sIFNETlBNYXlTdG9yZSwgU0ROUE1heUxvYWQsIFNETlBNZW1PcGVyYW5kXT47CiBkZWYgYXRvbWljX2xvYWRfdW1heCA6IFNETm9kZTwiSVNEOjpBVE9NSUNfTE9BRF9VTUFYIiwgU0RUQXRvbWljMiwKICAgICAgICAgICAgICAgICAgICAgW1NETlBIYXNDaGFpbiwgU0ROUE1heVN0b3JlLCBTRE5QTWF5TG9hZCwgU0ROUE1lbU9wZXJhbmRdPjsKK2RlZiBhdG9taWNfbG9hZF9mYWRkIDogU0ROb2RlPCJJU0Q6OkFUT01JQ19MT0FEX0ZBREQiICwgU0RURlBBdG9taWMyLAorICAgICAgICAgICAgICAgICAgICBbU0ROUEhhc0NoYWluLCBTRE5QTWF5U3RvcmUsIFNETlBNYXlMb2FkLCBTRE5QTWVtT3BlcmFuZF0+OworZGVmIGF0b21pY19sb2FkX2ZzdWIgOiBTRE5vZGU8IklTRDo6QVRPTUlDX0xPQURfRlNVQiIgLCBTRFRGUEF0b21pYzIsCisgICAgICAgICAgICAgICAgICAgIFtTRE5QSGFzQ2hhaW4sIFNETlBNYXlTdG9yZSwgU0ROUE1heUxvYWQsIFNETlBNZW1PcGVyYW5kXT47CisKIGRlZiBhdG9taWNfbG9hZCAgICAgIDogU0ROb2RlPCJJU0Q6OkFUT01JQ19MT0FEIiwgU0RUQXRvbWljTG9hZCwKICAgICAgICAgICAgICAgICAgICAgW1NETlBIYXNDaGFpbiwgU0ROUE1heUxvYWQsIFNETlBNZW1PcGVyYW5kXT47CiBkZWYgYXRvbWljX3N0b3JlICAgICA6IFNETm9kZTwiSVNEOjpBVE9NSUNfU1RPUkUiLCBTRFRBdG9taWNTdG9yZSwKQEAgLTYxNiw2ICs2NDcsMTUgQEAKICAgY29kZSBJbW1lZGlhdGVDb2RlID0gW3t9XTsKICAgU0ROb2RlWEZvcm0gT3BlcmFuZFRyYW5zZm9ybSA9IHhmb3JtOwogCisgIC8vIFdoZW4gdGhpcyBpcyBzZXQsIHRoZSBQcmVkaWNhdGVDb2RlIG1heSByZWZlciB0byBhIGNvbnN0YW50IE9wZXJhbmRzCisgIC8vIHZlY3RvciB3aGljaCBjb250YWlucyB0aGUgY2FwdHVyZWQgbm9kZXMgb2YgdGhlIERBRywgaW4gdGhlIG9yZGVyIGxpc3RlZAorICAvLyBieSB0aGUgT3BlcmFuZHMgZmllbGQgYWJvdmUuCisgIC8vCisgIC8vIFRoaXMgaXMgdXNlZnVsIHdoZW4gRnJhZ21lbnRzIGludm9sdmVzIGFzc29jaWF0aXZlIC8gY29tbXV0YXRpdmUKKyAgLy8gb3BlcmF0b3JzOiBhIHNpbmdsZSBwaWVjZSBvZiBjb2RlIGNhbiBlYXNpbHkgcmVmZXIgdG8gYWxsIG9wZXJhbmRzIGV2ZW4KKyAgLy8gd2hlbiByZS1hc3NvY2lhdGVkIC8gY29tbXV0ZWQgdmFyaWFudHMgb2YgdGhlIGZyYWdtZW50IGFyZSBtYXRjaGVkLgorICBiaXQgUHJlZGljYXRlQ29kZVVzZXNPcGVyYW5kcyA9IDA7CisKICAgLy8gRGVmaW5lIGEgZmV3IHByZS1wYWNrYWdlZCBwcmVkaWNhdGVzLiBUaGlzIGhlbHBzIEdsb2JhbElTZWwgaW1wb3J0CiAgIC8vIGV4aXN0aW5nIHJ1bGVzIGZyb20gU2VsZWN0aW9uREFHIGZvciBtYW55IGNvbW1vbiBjYXNlcy4KICAgLy8gVGhleSB3aWxsIGJlIHRlc3RlZCBwcmlvciB0byB0aGUgY29kZSBpbiBwcmVkIGFuZCBtdXN0IG5vdCBiZSB1c2VkIGluCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Rlc3RpbmcvU3VwcG9ydC9FcnJvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UZXN0aW5nL1N1cHBvcnQvRXJyb3IuaAppbmRleCAwZTViNTQwLi44NTMyOGYyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Rlc3RpbmcvU3VwcG9ydC9FcnJvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGVzdGluZy9TdXBwb3J0L0Vycm9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9UZXN0aW5nL1N1cHBvcnQvRXJyb3IuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Rlc3RpbmcvU3VwcG9ydC9TdXBwb3J0SGVscGVycy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UZXN0aW5nL1N1cHBvcnQvU3VwcG9ydEhlbHBlcnMuaAppbmRleCBiMjk3NWVjLi5hMGYwMzRkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Rlc3RpbmcvU3VwcG9ydC9TdXBwb3J0SGVscGVycy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGVzdGluZy9TdXBwb3J0L1N1cHBvcnRIZWxwZXJzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVGVzdGluZy9TdXBwb3J0L1N1cHBvcnRIZWxwZXJzLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RleHRBUEkvRUxGL0VMRlN0dWIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGV4dEFQSS9FTEYvRUxGU3R1Yi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2YjJhZjEKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RleHRBUEkvRUxGL0VMRlN0dWIuaApAQCAtMCwwICsxLDY4IEBACisvLz09PS0gRUxGU3R1Yi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09LworLy8vCisvLy8gXGZpbGUKKy8vLyBUaGlzIGZpbGUgZGVmaW5lcyBhbiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBhbiBFTEYgc3R1Yi4KKy8vLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8KKworI2lmbmRlZiBMTFZNX1RFWFRBUElfRUxGX0VMRlNUVUJfSAorI2RlZmluZSBMTFZNX1RFWFRBUElfRUxGX0VMRlNUVUJfSAorCisjaW5jbHVkZSAibGx2bS9CaW5hcnlGb3JtYXQvRUxGLmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L1ZlcnNpb25UdXBsZS5oIgorI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxzZXQ+CisKK25hbWVzcGFjZSBsbHZtIHsKK25hbWVzcGFjZSBlbGZhYmkgeworCit0eXBlZGVmIHVpbnQxNl90IEVMRkFyY2g7CisKK2VudW0gY2xhc3MgRUxGU3ltYm9sVHlwZSB7CisgIE5vVHlwZSA9IEVMRjo6U1RUX05PVFlQRSwKKyAgT2JqZWN0ID0gRUxGOjpTVFRfT0JKRUNULAorICBGdW5jID0gRUxGOjpTVFRfRlVOQywKKyAgVExTID0gRUxGOjpTVFRfVExTLAorCisgIC8vIFR5cGUgaW5mb3JtYXRpb24gaXMgNCBiaXRzLCBzbyAxNiBpcyBzYWZlbHkgb3V0IG9mIHJhbmdlLgorICBVbmtub3duID0gMTYsCit9OworCitzdHJ1Y3QgRUxGU3ltYm9sIHsKKyAgRUxGU3ltYm9sKHN0ZDo6c3RyaW5nIFN5bWJvbE5hbWUpIDogTmFtZShTeW1ib2xOYW1lKSB7fQorICBzdGQ6OnN0cmluZyBOYW1lOworICB1aW50NjRfdCBTaXplOworICBFTEZTeW1ib2xUeXBlIFR5cGU7CisgIGJvb2wgVW5kZWZpbmVkOworICBib29sIFdlYWs7CisgIE9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBXYXJuaW5nOworICBib29sIG9wZXJhdG9yPChjb25zdCBFTEZTeW1ib2wgJlJIUykgY29uc3QgeworICAgIHJldHVybiBOYW1lIDwgUkhTLk5hbWU7CisgIH0KK307CisKKy8vIEEgY3VtdWxhdGl2ZSByZXByZXNlbnRhdGlvbiBvZiBFTEYgc3R1YnMuCisvLyBCb3RoIHRleHR1YWwgYW5kIGJpbmFyeSBzdHVicyB3aWxsIHJlYWQgaW50byBhbmQgd3JpdGUgZnJvbSB0aGlzIG9iamVjdC4KK2NsYXNzIEVMRlN0dWIgeworLy8gVE9ETzogQWRkIHN1cHBvcnQgZm9yIHN5bWJvbCB2ZXJzaW9uaW5nLgorcHVibGljOgorICBWZXJzaW9uVHVwbGUgVGJlVmVyc2lvbjsKKyAgT3B0aW9uYWw8c3RkOjpzdHJpbmc+IFNvTmFtZTsKKyAgRUxGQXJjaCBBcmNoOworICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gTmVlZGVkTGliczsKKyAgc3RkOjpzZXQ8RUxGU3ltYm9sPiBTeW1ib2xzOworCisgIEVMRlN0dWIoKSB7fQorICBFTEZTdHViKGNvbnN0IEVMRlN0dWIgJlN0dWIpOworICBFTEZTdHViKEVMRlN0dWIgJiZTdHViKTsKK307Cit9IC8vIGVuZCBuYW1lc3BhY2UgZWxmYWJpCit9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQorCisjZW5kaWYgLy8gTExWTV9URVhUQVBJX0VMRl9FTEZTVFVCX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGV4dEFQSS9FTEYvVEJFSGFuZGxlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UZXh0QVBJL0VMRi9UQkVIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc0OGZkMQotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVGV4dEFQSS9FTEYvVEJFSGFuZGxlci5oCkBAIC0wLDAgKzEsNDQgQEAKKy8vPT09LSBUQkVIYW5kbGVyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vCisvLy8KKy8vLyBcZmlsZQorLy8vIFRoaXMgZmlsZSBkZWNsYXJlcyBhbiBpbnRlcmZhY2UgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgLnRiZSAodGV4dC1iYXNlZAorLy8vIEVMRikgZmlsZXMuCisvLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vCisKKyNpZm5kZWYgTExWTV9URVhUQVBJX0VMRl9UQkVIQU5ETEVSX0gKKyNkZWZpbmUgTExWTV9URVhUQVBJX0VMRl9UQkVIQU5ETEVSX0gKKworI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9WZXJzaW9uVHVwbGUuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvRXJyb3IuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CisKK25hbWVzcGFjZSBsbHZtIHsKKworY2xhc3MgcmF3X29zdHJlYW07CitjbGFzcyBFcnJvcjsKK2NsYXNzIFN0cmluZ1JlZjsKK2NsYXNzIFZlcnNpb25UdXBsZTsKKworbmFtZXNwYWNlIGVsZmFiaSB7CisKK2NsYXNzIEVMRlN0dWI7CisKK2NvbnN0IFZlcnNpb25UdXBsZSBUQkVWZXJzaW9uQ3VycmVudCgxLCAwKTsKKworLy8vIEF0dGVtcHRzIHRvIHJlYWQgYW4gRUxGIGludGVyZmFjZSBmaWxlIGZyb20gYSBTdHJpbmdSZWYgYnVmZmVyLgorRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPEVMRlN0dWI+PiByZWFkVEJFRnJvbUJ1ZmZlcihTdHJpbmdSZWYgQnVmKTsKKworLy8vIEF0dGVtcHRzIHRvIHdyaXRlIGFuIEVMRiBpbnRlcmZhY2UgZmlsZSB0byBhIHJhd19vc3RyZWFtLgorRXJyb3Igd3JpdGVUQkVUb091dHB1dFN0cmVhbShyYXdfb3N0cmVhbSAmT1MsIGNvbnN0IEVMRlN0dWIgJlN0dWIpOworCit9IC8vIGVuZCBuYW1lc3BhY2UgZWxmYWJpCit9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQorCisjZW5kaWYgLy8gTExWTV9URVhUQVBJX0VMRl9UQkVIQU5ETEVSX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVG9vbERyaXZlcnMvbGx2bS1kbGx0b29sL0RsbHRvb2xEcml2ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVG9vbERyaXZlcnMvbGx2bS1kbGx0b29sL0RsbHRvb2xEcml2ZXIuaAppbmRleCA5NjRiMGY3Li5kMTQ0ZjYyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Rvb2xEcml2ZXJzL2xsdm0tZGxsdG9vbC9EbGx0b29sRHJpdmVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Ub29sRHJpdmVycy9sbHZtLWRsbHRvb2wvRGxsdG9vbERyaXZlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERsbHRvb2xEcml2ZXIuaCAtIGRsbHRvb2wuZXhlLWNvbXBhdGlibGUgZHJpdmVyIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Rvb2xEcml2ZXJzL2xsdm0tbGliL0xpYkRyaXZlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9Ub29sRHJpdmVycy9sbHZtLWxpYi9MaWJEcml2ZXIuaAppbmRleCBhNDgwNmFjLi43ZDA3MzVmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1Rvb2xEcml2ZXJzL2xsdm0tbGliL0xpYkRyaXZlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVG9vbERyaXZlcnMvbGx2bS1saWIvTGliRHJpdmVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS1saWIvTGliRHJpdmVyLmggLSBsaWIuZXhlLWNvbXBhdGlibGUgZHJpdmVyIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9BZ2dyZXNzaXZlSW5zdENvbWJpbmUvQWdncmVzc2l2ZUluc3RDb21iaW5lLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvQWdncmVzc2l2ZUluc3RDb21iaW5lL0FnZ3Jlc3NpdmVJbnN0Q29tYmluZS5oCmluZGV4IGY5NzBhY2QuLjg4N2M4ODAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9BZ2dyZXNzaXZlSW5zdENvbWJpbmUvQWdncmVzc2l2ZUluc3RDb21iaW5lLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0FnZ3Jlc3NpdmVJbnN0Q29tYmluZS9BZ2dyZXNzaXZlSW5zdENvbWJpbmUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBBZ2dyZXNzaXZlSW5zdENvbWJpbmUuaCAtIEFnZ3Jlc3NpdmVJbnN0Q29tYmluZSBwYXNzIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9Db3JvdXRpbmVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvQ29yb3V0aW5lcy5oCmluZGV4IDUxYmViNDQuLjlkZjNlYzAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9Db3JvdXRpbmVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0Nvcm91dGluZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gQ29yb3V0aW5lcy5oIC0gQ29yb3V0aW5lIFRyYW5zZm9ybWF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLyBEZWNsYXJlIGFjY2Vzc29yIGZ1bmN0aW9ucyBmb3IgY29yb3V0aW5lIGxvd2VyaW5nIHBhc3Nlcy4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8uaAppbmRleCAxMWQzNjNiLi40ZjdhMWJhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vVHJhbnNmb3Jtcy9JUE8uaCAtIEludGVycHJvY2VkdXJhbCBUcmFuc2Zvcm1hdGlvbnMgLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0Fsd2F5c0lubGluZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vQWx3YXlzSW5saW5lci5oCmluZGV4IGI1MmMwZmQuLjY0ZTI1MjMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vQWx3YXlzSW5saW5lci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vQWx3YXlzSW5saW5lci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBBbHdheXNJbmxpbmVyLmggLSBQYXNzIHRvIGlubGluZSAiYWx3YXlzX2lubGluZSIgZnVuY3Rpb25zIC0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9Bcmd1bWVudFByb21vdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9Bcmd1bWVudFByb21vdGlvbi5oCmluZGV4IDQ5Y2E2Y2MuLmM4YWZiN2IgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vQXJndW1lbnRQcm9tb3Rpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0FyZ3VtZW50UHJvbW90aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQXJndW1lbnRQcm9tb3Rpb24uaCAtIFByb21vdGUgYnktcmVmZXJlbmNlIGFyZ3VtZW50cyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0NhbGxlZFZhbHVlUHJvcGFnYXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vQ2FsbGVkVmFsdWVQcm9wYWdhdGlvbi5oCmluZGV4IDM1MmJkYzcuLmMyNjI2ZDAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vQ2FsbGVkVmFsdWVQcm9wYWdhdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vQ2FsbGVkVmFsdWVQcm9wYWdhdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENhbGxlZFZhbHVlUHJvcGFnYXRpb24uaCAtIFByb3BhZ2F0ZSBjYWxsZWQgdmFsdWVzIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0NvbnN0YW50TWVyZ2UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vQ29uc3RhbnRNZXJnZS5oCmluZGV4IGUwNGQzYWUuLjEyZDM4YjUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vQ29uc3RhbnRNZXJnZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vQ29uc3RhbnRNZXJnZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvbnN0YW50TWVyZ2UuaCAtIE1lcmdlIGR1cGxpY2F0ZSBnbG9iYWwgY29uc3RhbnRzIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0Nyb3NzRFNPQ0ZJLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0Nyb3NzRFNPQ0ZJLmgKaW5kZXggMDk3OWY1Yi4uODQ0MGRmNiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9Dcm9zc0RTT0NGSS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vQ3Jvc3NEU09DRkkuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gQ3Jvc3NEU09DRkkuY3BwIC0gRXh0ZXJuYWxpemUgdGhpcyBtb2R1bGUncyBDRkkgY2hlY2tzIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9EZWFkQXJndW1lbnRFbGltaW5hdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9EZWFkQXJndW1lbnRFbGltaW5hdGlvbi5oCmluZGV4IGJhNTY2NmYuLjczNzk3YmMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vRGVhZEFyZ3VtZW50RWxpbWluYXRpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0RlYWRBcmd1bWVudEVsaW1pbmF0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRGVhZEFyZ3VtZW50RWxpbWluYXRpb24uaCAtIEVsaW1pbmF0ZSBEZWFkIEFyZ3MgLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vRWxpbUF2YWlsRXh0ZXJuLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0VsaW1BdmFpbEV4dGVybi5oCmluZGV4IDk0Y2I5NTQuLjkyYzMxOWIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vRWxpbUF2YWlsRXh0ZXJuLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9FbGltQXZhaWxFeHRlcm4uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBFbGltQXZhaWxFeHRlcm4uaCAtIE9wdGltaXplIEdsb2JhbCBWYXJpYWJsZXMgLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9Gb3JjZUZ1bmN0aW9uQXR0cnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vRm9yY2VGdW5jdGlvbkF0dHJzLmgKaW5kZXggZmY4YTY1NC4uNzM3OTAwOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9Gb3JjZUZ1bmN0aW9uQXR0cnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0ZvcmNlRnVuY3Rpb25BdHRycy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBGb3JjZUZ1bmN0aW9uQXR0cnMuaCAtIEZvcmNlIGZ1bmN0aW9uIGF0dHJzIGZvciBkZWJ1Z2dpbmcgLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9GdW5jdGlvbkF0dHJzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0Z1bmN0aW9uQXR0cnMuaAppbmRleCA5MDFmZWQ3Li5jZTYxZWVhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0Z1bmN0aW9uQXR0cnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0Z1bmN0aW9uQXR0cnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBGdW5jdGlvbkF0dHJzLmggLSBDb21wdXRlIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9GdW5jdGlvbkltcG9ydC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9GdW5jdGlvbkltcG9ydC5oCmluZGV4IGFmMWFlZGQuLmJiZjI3MGMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vRnVuY3Rpb25JbXBvcnQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0Z1bmN0aW9uSW1wb3J0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9UcmFuc2Zvcm1zL0lQTy9GdW5jdGlvbkltcG9ydC5oIC0gVGhpbkxUTyBpbXBvcnRpbmcgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApAQCAtNTYsMTAgKzU1LDE0IEBACiAgICAgLy8gdG8gZmluZCBhdCBsZWFzdCBvbmUgc3VtbWFyeSBmb3IgdGhlIEdVSUQgdGhhdCBpcyBnbG9iYWwgb3IgYSBsb2NhbAogICAgIC8vIGluIHRoZSByZWZlcmVuY2VkIG1vZHVsZSBmb3IgZGlyZWN0IGNhbGxzLgogICAgIExvY2FsTGlua2FnZU5vdEluTW9kdWxlLAotICAgIC8vIFRoaXMgY29ycmVzcG9uc2UgdG8gdGhlIE5vdEVsaWdpYmxlVG9JbXBvcnQgYmVpbmcgc2V0IG9uIHRoZSBzdW1tYXJ5LAorICAgIC8vIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhlIE5vdEVsaWdpYmxlVG9JbXBvcnQgYmVpbmcgc2V0IG9uIHRoZSBzdW1tYXJ5LAogICAgIC8vIHdoaWNoIGNhbiBoYXBwZW4gaW4gYSBmZXcgZGlmZmVyZW50IGNhc2VzIChlLmcuIGxvY2FsIHRoYXQgY2FuJ3QgYmUKICAgICAvLyByZW5hbWVkIG9yIHByb21vdGVkIGJlY2F1c2UgaXQgaXMgcmVmZXJlbmNlZCBvbiBhIGxsdm0qLnVzZWQgdmFyaWFibGUpLgotICAgIE5vdEVsaWdpYmxlCisgICAgTm90RWxpZ2libGUsCisgICAgLy8gVGhpcyBjb3JyZXNwb25kcyB0byBOb0lubGluZSBiZWluZyBzZXQgb24gdGhlIGZ1bmN0aW9uIHN1bW1hcnksCisgICAgLy8gd2hpY2ggd2lsbCBoYXBwZW4gaWYgaXQgaXMga25vd24gdGhhdCB0aGUgaW5saW5lciB3aWxsIG5vdCBiZSBhYmxlCisgICAgLy8gdG8gaW5saW5lIHRoZSBmdW5jdGlvbiAoZS5nLiBpdCBpcyBtYXJrZWQgd2l0aCBhIE5vSW5saW5lIGF0dHJpYnV0ZSkuCisgICAgTm9JbmxpbmUKICAgfTsKIAogICAvLy8gSW5mb3JtYXRpb24gb3B0aW9uYWxseSB0cmFja2VkIGZvciBjYW5kaWRhdGVzIHRoZSBpbXBvcnRlciBkZWNpZGVkCkBAIC0xNzIsNiArMTc1LDE0IEBACiAgICAgY29uc3QgRGVuc2VTZXQ8R2xvYmFsVmFsdWU6OkdVSUQ+ICZHVUlEUHJlc2VydmVkU3ltYm9scywKICAgICBmdW5jdGlvbl9yZWY8UHJldmFpbGluZ1R5cGUoR2xvYmFsVmFsdWU6OkdVSUQpPiBpc1ByZXZhaWxpbmcpOwogCisvLy8gQ29tcHV0ZSBkZWFkIHN5bWJvbHMgYW5kIHJ1biBjb25zdGFudCBwcm9wYWdhdGlvbiBpbiBjb21iaW5lZCBpbmRleAorLy8vIGFmdGVyIHRoYXQuCit2b2lkIGNvbXB1dGVEZWFkU3ltYm9sc1dpdGhDb25zdFByb3AoCisgICAgTW9kdWxlU3VtbWFyeUluZGV4ICZJbmRleCwKKyAgICBjb25zdCBEZW5zZVNldDxHbG9iYWxWYWx1ZTo6R1VJRD4gJkdVSURQcmVzZXJ2ZWRTeW1ib2xzLAorICAgIGZ1bmN0aW9uX3JlZjxQcmV2YWlsaW5nVHlwZShHbG9iYWxWYWx1ZTo6R1VJRCk+IGlzUHJldmFpbGluZywKKyAgICBib29sIEltcG9ydEVuYWJsZWQpOworCiAvLy8gQ29udmVydHMgdmFsdWUgXHAgR1YgdG8gZGVjbGFyYXRpb24sIG9yIHJlcGxhY2VzIHdpdGggYSBkZWNsYXJhdGlvbiBpZgogLy8vIGl0IGlzIGFuIGFsaWFzLiBSZXR1cm5zIHRydWUgaWYgY29udmVydGVkLCBmYWxzZSBpZiByZXBsYWNlZC4KIGJvb2wgY29udmVydFRvRGVjbGFyYXRpb24oR2xvYmFsVmFsdWUgJkdWKTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vR2xvYmFsRENFLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0dsb2JhbERDRS5oCmluZGV4IDdjYTI0MWYuLmM0MzQ0ODQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vR2xvYmFsRENFLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9HbG9iYWxEQ0UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gR2xvYmFsRENFLmggLSBEQ0UgdW5yZWFjaGFibGUgaW50ZXJuYWwgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9HbG9iYWxPcHQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vR2xvYmFsT3B0LmgKaW5kZXggNWI0ODc4Ni4uNDhhODYxZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9HbG9iYWxPcHQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0dsb2JhbE9wdC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEdsb2JhbE9wdC5oIC0gT3B0aW1pemUgR2xvYmFsIFZhcmlhYmxlcyAtLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0dsb2JhbFNwbGl0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0dsb2JhbFNwbGl0LmgKaW5kZXggNTZjZWZiNy4uNjkwYjIzYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9HbG9iYWxTcGxpdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vR2xvYmFsU3BsaXQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBHbG9iYWxTcGxpdC5oIC0gZ2xvYmFsIHZhcmlhYmxlIHNwbGl0dGVyIC0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9Ib3RDb2xkU3BsaXR0aW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0hvdENvbGRTcGxpdHRpbmcuaAppbmRleCA1N2U5YTllLi43MzY2ODg0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0hvdENvbGRTcGxpdHRpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0hvdENvbGRTcGxpdHRpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBIb3RDb2xkU3BsaXR0aW5nLmggLS0tLSBPdXRsaW5lIENvbGQgUmVnaW9ucyAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCiAvLyBUaGlzIHBhc3Mgb3V0bGluZXMgY29sZCByZWdpb25zIHRvIGEgc2VwYXJhdGUgZnVuY3Rpb24uCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0luZmVyRnVuY3Rpb25BdHRycy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9JbmZlckZ1bmN0aW9uQXR0cnMuaAppbmRleCA1NGUxYzI0Li5iYjc5MDdmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0luZmVyRnVuY3Rpb25BdHRycy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vSW5mZXJGdW5jdGlvbkF0dHJzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIEluZmVyRnVuY3Rpb25BdHRycy5oIC0gSW5mZXIgaW1wbGljaXQgZnVuY3Rpb24gYXR0cmlidXRlcyAtLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0lubGluZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vSW5saW5lci5oCmluZGV4IDYxMGU0NTAuLjgyMDJiOTQgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vSW5saW5lci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vSW5saW5lci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIElubGluZXIuaCAtIElubGluZXIgcGFzcyBhbmQgaW5mcmFzdHJ1Y3R1cmUgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9JbnRlcm5hbGl6ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9JbnRlcm5hbGl6ZS5oCmluZGV4IDQ1ZDY3NmQuLmE3ZWZkM2UgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vSW50ZXJuYWxpemUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0ludGVybmFsaXplLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PT0tIEludGVybmFsaXplLmggLSBJbnRlcm5hbGl6YXRpb24gQVBJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0xvd2VyVHlwZVRlc3RzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL0xvd2VyVHlwZVRlc3RzLmgKaW5kZXggYmM0NDgzOC4uMzliMjNmNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9Mb3dlclR5cGVUZXN0cy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vTG93ZXJUeXBlVGVzdHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMb3dlclR5cGVUZXN0cy5oIC0gdHlwZSBtZXRhZGF0YSBsb3dlcmluZyBwYXNzIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9QYXJ0aWFsSW5saW5pbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vUGFydGlhbElubGluaW5nLmgKaW5kZXggZWM2ZGQzNi4uM2I4Mjk3ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9QYXJ0aWFsSW5saW5pbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL1BhcnRpYWxJbmxpbmluZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFBhcnRpYWxJbmxpbmluZy5oIC0gSW5saW5lIHBhcnRzIG9mIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL1Bhc3NNYW5hZ2VyQnVpbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9QYXNzTWFuYWdlckJ1aWxkZXIuaAppbmRleCAyNzYzMDZmLi5mODJjZmRjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL1Bhc3NNYW5hZ2VyQnVpbGRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vUGFzc01hbmFnZXJCdWlsZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLyBsbHZtL1RyYW5zZm9ybXMvSVBPL1Bhc3NNYW5hZ2VyQnVpbGRlci5oIC0gQnVpbGQgU3RhbmRhcmQgUGFzcyAtKi0gQysrIC0qLT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vU0NDUC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9TQ0NQLmgKaW5kZXggZmRiNzg2NS4uM2M0MGQ0NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9TQ0NQLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9TQ0NQLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU0NDUC5oIC0gU3BhcnNlIENvbmRpdGlvbmFsIENvbnN0YW50IFByb3BhZ2F0aW9uIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vU2FtcGxlUHJvZmlsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9TYW1wbGVQcm9maWxlLmgKaW5kZXggY2Q1YTA1Ni4uYTVhZDQ0NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9TYW1wbGVQcm9maWxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9TYW1wbGVQcm9maWxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU2FtcGxlUHJvZmlsZS5oIC0gU2FtcGxlUEdPIHBhc3MgLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI1LDEzICsyNCwxNiBAQAogLy8vIFRoZSBzYW1wbGUgcHJvZmlsZXIgZGF0YSBsb2FkZXIgcGFzcy4KIGNsYXNzIFNhbXBsZVByb2ZpbGVMb2FkZXJQYXNzIDogcHVibGljIFBhc3NJbmZvTWl4aW48U2FtcGxlUHJvZmlsZUxvYWRlclBhc3M+IHsKIHB1YmxpYzoKLSAgU2FtcGxlUHJvZmlsZUxvYWRlclBhc3Moc3RkOjpzdHJpbmcgRmlsZSA9ICIiLCBib29sIElzVGhpbkxUT1ByZUxpbmsgPSBmYWxzZSkKLSAgICAgIDogUHJvZmlsZUZpbGVOYW1lKEZpbGUpLCBJc1RoaW5MVE9QcmVMaW5rKElzVGhpbkxUT1ByZUxpbmspIHt9CisgIFNhbXBsZVByb2ZpbGVMb2FkZXJQYXNzKHN0ZDo6c3RyaW5nIEZpbGUgPSAiIiwgc3RkOjpzdHJpbmcgUmVtYXBwaW5nRmlsZSA9ICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIElzVGhpbkxUT1ByZUxpbmsgPSBmYWxzZSkKKyAgICAgIDogUHJvZmlsZUZpbGVOYW1lKEZpbGUpLCBQcm9maWxlUmVtYXBwaW5nRmlsZU5hbWUoUmVtYXBwaW5nRmlsZSksCisgICAgICAgIElzVGhpbkxUT1ByZUxpbmsoSXNUaGluTFRPUHJlTGluaykge30KIAogICBQcmVzZXJ2ZWRBbmFseXNlcyBydW4oTW9kdWxlICZNLCBNb2R1bGVBbmFseXNpc01hbmFnZXIgJkFNKTsKIAogcHJpdmF0ZToKICAgc3RkOjpzdHJpbmcgUHJvZmlsZUZpbGVOYW1lOworICBzdGQ6OnN0cmluZyBQcm9maWxlUmVtYXBwaW5nRmlsZU5hbWU7CiAgIGJvb2wgSXNUaGluTFRPUHJlTGluazsKIH07CiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vU3RyaXBEZWFkUHJvdG90eXBlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9TdHJpcERlYWRQcm90b3R5cGVzLmgKaW5kZXggNWEwNWNkNy4uZjRhMTVjMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9TdHJpcERlYWRQcm90b3R5cGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9TdHJpcERlYWRQcm90b3R5cGVzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFN0cmlwRGVhZFByb3RvdHlwZXMuaCAtIFJlbW92ZSB1bnVzZWQgZnVuY3Rpb24gZGVjbGFyYXRpb25zIC0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vVGhpbkxUT0JpdGNvZGVXcml0ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vVGhpbkxUT0JpdGNvZGVXcml0ZXIuaAppbmRleCBiZjA0YmJmLi43YWNiOTIyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL1RoaW5MVE9CaXRjb2RlV3JpdGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9UaGluTFRPQml0Y29kZVdyaXRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFRoaW5MVE9CaXRjb2RlV3JpdGVyLmggLSBCaXRjb2RlIHdyaXRpbmcgcGFzcyBmb3IgVGhpbkxUTyAtLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL1dob2xlUHJvZ3JhbURldmlydC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0lQTy9XaG9sZVByb2dyYW1EZXZpcnQuaAppbmRleCBiZjJjNzliLi41MDlmY2M4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSVBPL1dob2xlUHJvZ3JhbURldmlydC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JUE8vV2hvbGVQcm9ncmFtRGV2aXJ0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gV2hvbGVQcm9ncmFtRGV2aXJ0LmggLSBXaG9sZS1wcm9ncmFtIGRldmlydCBwYXNzIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JbnN0Q29tYmluZS9JbnN0Q29tYmluZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0luc3RDb21iaW5lL0luc3RDb21iaW5lLmgKaW5kZXggYWIyNWZlMC4uODg5NGQ5NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0luc3RDb21iaW5lL0luc3RDb21iaW5lLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0luc3RDb21iaW5lL0luc3RDb21iaW5lLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSW5zdENvbWJpbmUuaCAtIEluc3RDb21iaW5lIHBhc3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdENvbWJpbmUvSW5zdENvbWJpbmVXb3JrbGlzdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0luc3RDb21iaW5lL0luc3RDb21iaW5lV29ya2xpc3QuaAppbmRleCBmODYwYjRiLi42YzMzYmRiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdENvbWJpbmUvSW5zdENvbWJpbmVXb3JrbGlzdC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JbnN0Q29tYmluZS9JbnN0Q29tYmluZVdvcmtsaXN0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSW5zdENvbWJpbmVXb3JrbGlzdC5oIC0gV29ya2xpc3QgZm9yIEluc3RDb21iaW5lIHBhc3MgLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZDZkOTUyOS4uMjljYjI4MSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0luc3RydW1lbnRhdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUcmFuc2Zvcm1zL0luc3RydW1lbnRhdGlvbi5oIC0gSW5zdHJ1bWVudGF0aW9uIHBhc3NlcyAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjQsOSArMjMsMTEgQEAKIAogbmFtZXNwYWNlIGxsdm0gewogCitjbGFzcyBUcmlwbGU7CiBjbGFzcyBGdW5jdGlvblBhc3M7CiBjbGFzcyBNb2R1bGVQYXNzOwogY2xhc3MgT3B0aW1pemF0aW9uUmVtYXJrRW1pdHRlcjsKK2NsYXNzIENvbWRhdDsKIAogLy8vIEluc3RydW1lbnRhdGlvbiBwYXNzZXMgb2Z0ZW4gaW5zZXJ0IGNvbmRpdGlvbmFsIGNoZWNrcyBpbnRvIGVudHJ5IGJsb2Nrcy4KIC8vLyBDYWxsIHRoaXMgZnVuY3Rpb24gYmVmb3JlIHNwbGl0dGluZyB0aGUgZW50cnkgYmxvY2sgdG8gbW92ZSBpbnN0cnVjdGlvbnMKQEAgLTM2LDYgKzM3LDE3IEBACiBCYXNpY0Jsb2NrOjppdGVyYXRvciBQcmVwYXJlVG9TcGxpdEVudHJ5QmxvY2soQmFzaWNCbG9jayAmQkIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jazo6aXRlcmF0b3IgSVApOwogCisvLyBDcmVhdGUgYSBjb25zdGFudCBmb3IgU3RyIHNvIHRoYXQgd2UgY2FuIHBhc3MgaXQgdG8gdGhlIHJ1bi10aW1lIGxpYi4KK0dsb2JhbFZhcmlhYmxlICpjcmVhdGVQcml2YXRlR2xvYmFsRm9yU3RyaW5nKE1vZHVsZSAmTSwgU3RyaW5nUmVmIFN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgQWxsb3dNZXJnaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqTmFtZVByZWZpeCA9ICIiKTsKKworLy8gUmV0dXJucyBGLmdldENvbWRhdCgpIGlmIGl0IGV4aXN0cy4KKy8vIE90aGVyd2lzZSBjcmVhdGVzIGEgbmV3IGNvbWRhdCwgc2V0cyBGJ3MgY29tZGF0LCBhbmQgcmV0dXJucyBpdC4KKy8vIFJldHVybnMgbnVsbHB0ciBvbiBmYWlsdXJlLgorQ29tZGF0ICpHZXRPckNyZWF0ZUZ1bmN0aW9uQ29tZGF0KEZ1bmN0aW9uICZGLCBUcmlwbGUgJlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJk1vZHVsZUlkKTsKKwogLy8gSW5zZXJ0IEdDT1YgcHJvZmlsaW5nIGluc3RydW1lbnRhdGlvbgogc3RydWN0IEdDT1ZPcHRpb25zIHsKICAgc3RhdGljIEdDT1ZPcHRpb25zIGdldERlZmF1bHQoKTsKQEAgLTY0LDYgKzc2LDEyIEBACiAgIC8vIEVtaXQgdGhlIGV4aXQgYmxvY2sgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHN0YXJ0IGJsb2NrLCByYXRoZXIgdGhhbiBhZnRlcgogICAvLyBhbGwgb2YgdGhlIGZ1bmN0aW9uIGJvZHkncyBibG9ja3MuCiAgIGJvb2wgRXhpdEJsb2NrQmVmb3JlQm9keTsKKworICAvLyBSZWdleGVzIHNlcGFyYXRlZCBieSBhIHNlbWktY29sb24gdG8gZmlsdGVyIHRoZSBmaWxlcyB0byBpbnN0cnVtZW50LgorICBzdGQ6OnN0cmluZyBGaWx0ZXI7CisKKyAgLy8gUmVnZXhlcyBzZXBhcmF0ZWQgYnkgYSBzZW1pLWNvbG9uIHRvIGZpbHRlciB0aGUgZmlsZXMgdG8gbm90IGluc3RydW1lbnQuCisgIHN0ZDo6c3RyaW5nIEV4Y2x1ZGU7CiB9OwogCiBNb2R1bGVQYXNzICpjcmVhdGVHQ09WUHJvZmlsZXJQYXNzKGNvbnN0IEdDT1ZPcHRpb25zICZPcHRpb25zID0KQEAgLTEzMCwxOSArMTQ4LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBVc2VBZnRlclNjb3BlID0gZmFsc2UpOwogTW9kdWxlUGFzcyAqY3JlYXRlQWRkcmVzc1Nhbml0aXplck1vZHVsZVBhc3MoYm9vbCBDb21waWxlS2VybmVsID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFJlY292ZXIgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVXNlR2xvYmFsc0dDID0gdHJ1ZSk7Ci0KLS8vIEluc2VydCBNZW1vcnlTYW5pdGl6ZXIgaW5zdHJ1bWVudGF0aW9uIChkZXRlY3Rpb24gb2YgdW5pbml0aWFsaXplZCByZWFkcykKLUZ1bmN0aW9uUGFzcyAqY3JlYXRlTWVtb3J5U2FuaXRpemVyUGFzcyhpbnQgVHJhY2tPcmlnaW5zID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFJlY292ZXIgPSBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIEVuYWJsZUttc2FuID0gZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBVc2VHbG9iYWxzR0MgPSB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBVc2VPZHJJbmRpY2F0b3IgPSB0cnVlKTsKIAogRnVuY3Rpb25QYXNzICpjcmVhdGVIV0FkZHJlc3NTYW5pdGl6ZXJQYXNzKGJvb2wgQ29tcGlsZUtlcm5lbCA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgUmVjb3ZlciA9IGZhbHNlKTsKIAotLy8gSW5zZXJ0IFRocmVhZFNhbml0aXplciAocmFjZSBkZXRlY3Rpb24pIGluc3RydW1lbnRhdGlvbgotRnVuY3Rpb25QYXNzICpjcmVhdGVUaHJlYWRTYW5pdGl6ZXJQYXNzKCk7Ci0KIC8vIEluc2VydCBEYXRhRmxvd1Nhbml0aXplciAoZHluYW1pYyBkYXRhIGZsb3cgYW5hbHlzaXMpIGluc3RydW1lbnRhdGlvbgogTW9kdWxlUGFzcyAqY3JlYXRlRGF0YUZsb3dTYW5pdGl6ZXJQYXNzKAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiAmQUJJTGlzdEZpbGVzID0gc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+KCksCkBAIC0yMTAsNyArMjIxLDYgQEAKICAgYXNzZXJ0KFNjYWxlZCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgJiYgIm92ZXJmbG93IDMyLWJpdHMiKTsKICAgcmV0dXJuIFNjYWxlZDsKIH0KLQogfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KIAogI2VuZGlmIC8vIExMVk1fVFJBTlNGT1JNU19JTlNUUlVNRU5UQVRJT05fSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0luc3RydW1lbnRhdGlvbi9Cb3VuZHNDaGVja2luZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0luc3RydW1lbnRhdGlvbi9Cb3VuZHNDaGVja2luZy5oCmluZGV4IDNkNGY2MmMuLjEyMGM2YTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24vQm91bmRzQ2hlY2tpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uL0JvdW5kc0NoZWNraW5nLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQm91bmRzQ2hlY2tpbmcuaCAtIEJvdW5kcyBjaGVja2luZyBpbnN0cnVtZW50YXRpb24gLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uL0NHUHJvZmlsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0luc3RydW1lbnRhdGlvbi9DR1Byb2ZpbGUuaAppbmRleCBjMDZjMWEyLi4yOGZkMzgwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uL0NHUHJvZmlsZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24vQ0dQcm9maWxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24vQ0dQcm9maWxlLmggLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uL0NvbnRyb2xIZWlnaHRSZWR1Y3Rpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24vQ29udHJvbEhlaWdodFJlZHVjdGlvbi5oCmluZGV4IDQ2MDM0MmQuLjE4YjQyODUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24vQ29udHJvbEhlaWdodFJlZHVjdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24vQ29udHJvbEhlaWdodFJlZHVjdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENvbnRyb2xIZWlnaHRSZWR1Y3Rpb24uaCAtIENvbnRyb2wgSGVpZ2h0IFJlZHVjdGlvbiAtLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uL0dDT1ZQcm9maWxlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0luc3RydW1lbnRhdGlvbi9HQ09WUHJvZmlsZXIuaAppbmRleCBkZDU1ZmJlLi5iMzk3MWU0IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uL0dDT1ZQcm9maWxlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24vR0NPVlByb2ZpbGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24vR0NPVlByb2ZpbGVyLmggLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uL0luc3RyUHJvZmlsaW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uL0luc3RyUHJvZmlsaW5nLmgKaW5kZXggMTNmYjNkYi4uNGZhZDY1MCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0luc3RydW1lbnRhdGlvbi9JbnN0clByb2ZpbGluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24vSW5zdHJQcm9maWxpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUcmFuc2Zvcm1zL0luc3RydW1lbnRhdGlvbi9JbnN0clByb2ZpbGluZy5oIC0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24vTWVtb3J5U2FuaXRpemVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uL01lbW9yeVNhbml0aXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MzlkOWUKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uL01lbW9yeVNhbml0aXplci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8vPT09LSBUcmFuc2Zvcm1zL0luc3RydW1lbnRhdGlvbi9NZW1vcnlTYW5pdGl6ZXIuaCAtIE1TYW4gUGFzcyAtLS0tLS0tLS0tLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gVGhpcyBmaWxlIGRlZmluZXMgdGhlIG1lbW95IHNhbml0aXplciBwYXNzLgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9UUkFOU0ZPUk1TX0lOU1RSVU1FTlRBVElPTl9NRU1PUllTQU5JVElaRVJfSAorI2RlZmluZSBMTFZNX1RSQU5TRk9STVNfSU5TVFJVTUVOVEFUSU9OX01FTU9SWVNBTklUSVpFUl9ICisKKyNpbmNsdWRlICJsbHZtL0lSL1Bhc3NNYW5hZ2VyLmgiCisjaW5jbHVkZSAibGx2bS9QYXNzLmgiCisKK25hbWVzcGFjZSBsbHZtIHsKKworc3RydWN0IE1lbW9yeVNhbml0aXplck9wdGlvbnMgeworICBNZW1vcnlTYW5pdGl6ZXJPcHRpb25zKCkgPSBkZWZhdWx0OworICBNZW1vcnlTYW5pdGl6ZXJPcHRpb25zKGludCBUcmFja09yaWdpbnMsIGJvb2wgUmVjb3ZlciwgYm9vbCBLZXJuZWwpCisgICAgICA6IFRyYWNrT3JpZ2lucyhUcmFja09yaWdpbnMpLCBSZWNvdmVyKFJlY292ZXIpLCBLZXJuZWwoS2VybmVsKSB7fQorICBpbnQgVHJhY2tPcmlnaW5zID0gMDsKKyAgYm9vbCBSZWNvdmVyID0gZmFsc2U7CisgIGJvb2wgS2VybmVsID0gZmFsc2U7Cit9OworCisvLyBJbnNlcnQgTWVtb3J5U2FuaXRpemVyIGluc3RydW1lbnRhdGlvbiAoZGV0ZWN0aW9uIG9mIHVuaW5pdGlhbGl6ZWQgcmVhZHMpCitGdW5jdGlvblBhc3MgKgorY3JlYXRlTWVtb3J5U2FuaXRpemVyTGVnYWN5UGFzc1Bhc3MoTWVtb3J5U2FuaXRpemVyT3B0aW9ucyBPcHRpb25zID0ge30pOworCisvLy8gQSBmdW5jdGlvbiBwYXNzIGZvciBtc2FuIGluc3RydW1lbnRhdGlvbi4KKy8vLworLy8vIEluc3RydW1lbnRzIGZ1bmN0aW9ucyB0byBkZXRlY3QgdW5pdGlhbGl6ZWQgcmVhZHMuIFRoaXMgZnVuY3Rpb24gcGFzcworLy8vIGluc2VydHMgY2FsbHMgdG8gcnVudGltZSBsaWJyYXJ5IGZ1bmN0aW9ucy4gSWYgdGhlIGZ1bmN0aW9ucyBhcmVuJ3QgZGVjbGFyZWQKKy8vLyB5ZXQsIHRoZSBwYXNzIGluc2VydHMgdGhlIGRlY2xhcmF0aW9ucy4gT3RoZXJ3aXNlIHRoZSBleGlzdGluZyBnbG9iYWxzIGFyZQorLy8vIHVzZWQuCitzdHJ1Y3QgTWVtb3J5U2FuaXRpemVyUGFzcyA6IHB1YmxpYyBQYXNzSW5mb01peGluPE1lbW9yeVNhbml0aXplclBhc3M+IHsKKyAgTWVtb3J5U2FuaXRpemVyUGFzcyhNZW1vcnlTYW5pdGl6ZXJPcHRpb25zIE9wdGlvbnMpIDogT3B0aW9ucyhPcHRpb25zKSB7fQorCisgIFByZXNlcnZlZEFuYWx5c2VzIHJ1bihGdW5jdGlvbiAmRiwgRnVuY3Rpb25BbmFseXNpc01hbmFnZXIgJkZBTSk7CisKK3ByaXZhdGU6CisgIE1lbW9yeVNhbml0aXplck9wdGlvbnMgT3B0aW9uczsKK307Cit9CisKKyNlbmRpZiAvKiBMTFZNX1RSQU5TRk9STVNfSU5TVFJVTUVOVEFUSU9OX01FTU9SWVNBTklUSVpFUl9IICovCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uL1BHT0luc3RydW1lbnRhdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL0luc3RydW1lbnRhdGlvbi9QR09JbnN0cnVtZW50YXRpb24uaAppbmRleCBjMGIzN2M0Li40ZjIyZTI4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uL1BHT0luc3RydW1lbnRhdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24vUEdPSW5zdHJ1bWVudGF0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24vUEdPSW5zdHJ1bWVudGF0aW9uLmggLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTM2LDEyICszNSwxNCBAQAogLy8vIFRoZSBwcm9maWxlIGFubm90YXRpb24gKHByb2ZpbGUtaW5zdHItdXNlKSBwYXNzIGZvciBJUiBiYXNlZCBQR08uCiBjbGFzcyBQR09JbnN0cnVtZW50YXRpb25Vc2UgOiBwdWJsaWMgUGFzc0luZm9NaXhpbjxQR09JbnN0cnVtZW50YXRpb25Vc2U+IHsKIHB1YmxpYzoKLSAgUEdPSW5zdHJ1bWVudGF0aW9uVXNlKHN0ZDo6c3RyaW5nIEZpbGVuYW1lID0gIiIpOworICBQR09JbnN0cnVtZW50YXRpb25Vc2Uoc3RkOjpzdHJpbmcgRmlsZW5hbWUgPSAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIFJlbWFwcGluZ0ZpbGVuYW1lID0gIiIpOwogCiAgIFByZXNlcnZlZEFuYWx5c2VzIHJ1bihNb2R1bGUgJk0sIE1vZHVsZUFuYWx5c2lzTWFuYWdlciAmQU0pOwogCiBwcml2YXRlOgogICBzdGQ6OnN0cmluZyBQcm9maWxlRmlsZU5hbWU7CisgIHN0ZDo6c3RyaW5nIFByb2ZpbGVSZW1hcHBpbmdGaWxlTmFtZTsKIH07CiAKIC8vLyBUaGUgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbCBwcm9tb3Rpb24gcGFzcy4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9JbnN0cnVtZW50YXRpb24vVGhyZWFkU2FuaXRpemVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uL1RocmVhZFNhbml0aXplci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZTdkOTkKLS0tIC9kZXYvbnVsbAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvSW5zdHJ1bWVudGF0aW9uL1RocmVhZFNhbml0aXplci5oCkBAIC0wLDAgKzEsMzIgQEAKKy8vPT09LSBUcmFuc2Zvcm1zL0luc3RydW1lbnRhdGlvbi9UaHJlYWRTYW5pdGl6ZXIuaCAtIFRTYW4gUGFzcyAtLS0tLS0tLS0tLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gVGhpcyBmaWxlIGRlZmluZXMgdGhlIHRocmVhZCBzYW5pdGl6ZXIgcGFzcy4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fVFJBTlNGT1JNU19JTlNUUlVNRU5UQVRJT05fVEhSRUFEU0FOSVRJWkVSX0gKKyNkZWZpbmUgTExWTV9UUkFOU0ZPUk1TX0lOU1RSVU1FTlRBVElPTl9USFJFQURTQU5JVElaRVJfSAorCisjaW5jbHVkZSAibGx2bS9JUi9QYXNzTWFuYWdlci5oIgorI2luY2x1ZGUgImxsdm0vUGFzcy5oIgorCituYW1lc3BhY2UgbGx2bSB7CisvLyBJbnNlcnQgVGhyZWFkU2FuaXRpemVyIChyYWNlIGRldGVjdGlvbikgaW5zdHJ1bWVudGF0aW9uCitGdW5jdGlvblBhc3MgKmNyZWF0ZVRocmVhZFNhbml0aXplckxlZ2FjeVBhc3NQYXNzKCk7CisKKy8vLyBBIGZ1bmN0aW9uIHBhc3MgZm9yIHRzYW4gaW5zdHJ1bWVudGF0aW9uLgorLy8vCisvLy8gSW5zdHJ1bWVudHMgZnVuY3Rpb25zIHRvIGRldGVjdCByYWNlIGNvbmRpdGlvbnMgcmVhZHMuIFRoaXMgZnVuY3Rpb24gcGFzcworLy8vIGluc2VydHMgY2FsbHMgdG8gcnVudGltZSBsaWJyYXJ5IGZ1bmN0aW9ucy4gSWYgdGhlIGZ1bmN0aW9ucyBhcmVuJ3QgZGVjbGFyZWQKKy8vLyB5ZXQsIHRoZSBwYXNzIGluc2VydHMgdGhlIGRlY2xhcmF0aW9ucy4gT3RoZXJ3aXNlIHRoZSBleGlzdGluZyBnbG9iYWxzIGFyZQorc3RydWN0IFRocmVhZFNhbml0aXplclBhc3MgOiBwdWJsaWMgUGFzc0luZm9NaXhpbjxUaHJlYWRTYW5pdGl6ZXJQYXNzPiB7CisgIFByZXNlcnZlZEFuYWx5c2VzIHJ1bihGdW5jdGlvbiAmRiwgRnVuY3Rpb25BbmFseXNpc01hbmFnZXIgJkZBTSk7Cit9OworfSAvLyBuYW1lc3BhY2UgbGx2bQorI2VuZGlmIC8qIExMVk1fVFJBTlNGT1JNU19JTlNUUlVNRU5UQVRJT05fVEhSRUFEU0FOSVRJWkVSX0ggKi8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9PYmpDQVJDLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvT2JqQ0FSQy5oCmluZGV4IDE4OTdhZGMuLjJmMTE0YzcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9PYmpDQVJDLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL09iakNBUkMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gT2JqQ0FSQy5oIC0gT2JqQ0FSQyBTY2FsYXIgVHJhbnNmb3JtYXRpb25zIC0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci5oCmluZGV4IDk0OTFlMWIuLjk3YTRjMDYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFNjYWxhci5oIC0gU2NhbGFyIFRyYW5zZm9ybWF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTI2LDcgKzI1LDYgQEAKIGNsYXNzIFBhc3M7CiBjbGFzcyBHZXRFbGVtZW50UHRySW5zdDsKIGNsYXNzIFBhc3NJbmZvOwotY2xhc3MgVGVybWluYXRvckluc3Q7CiBjbGFzcyBUYXJnZXRMb3dlcmluZzsKIGNsYXNzIFRhcmdldE1hY2hpbmU7CiAKQEAgLTE4NCwxMSArMTgyLDEyIEBACiAvLwogLy8gTG9vcFVucm9sbCAtIFRoaXMgcGFzcyBpcyBhIHNpbXBsZSBsb29wIHVucm9sbGluZyBwYXNzLgogLy8KLVBhc3MgKmNyZWF0ZUxvb3BVbnJvbGxQYXNzKGludCBPcHRMZXZlbCA9IDIsIGludCBUaHJlc2hvbGQgPSAtMSwgaW50IENvdW50ID0gLTEsCitQYXNzICpjcmVhdGVMb29wVW5yb2xsUGFzcyhpbnQgT3B0TGV2ZWwgPSAyLCBib29sIE9ubHlXaGVuRm9yY2VkID0gZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgVGhyZXNob2xkID0gLTEsIGludCBDb3VudCA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IEFsbG93UGFydGlhbCA9IC0xLCBpbnQgUnVudGltZSA9IC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IFVwcGVyQm91bmQgPSAtMSwgaW50IEFsbG93UGVlbGluZyA9IC0xKTsKIC8vIENyZWF0ZSBhbiB1bnJvbGxpbmcgcGFzcyBmb3IgZnVsbCB1bnJvbGxpbmcgdGhhdCB1c2VzIGV4YWN0IHRyaXAgY291bnQgb25seS4KLVBhc3MgKmNyZWF0ZVNpbXBsZUxvb3BVbnJvbGxQYXNzKGludCBPcHRMZXZlbCA9IDIpOworUGFzcyAqY3JlYXRlU2ltcGxlTG9vcFVucm9sbFBhc3MoaW50IE9wdExldmVsID0gMiwgYm9vbCBPbmx5V2hlbkZvcmNlZCA9IGZhbHNlKTsKIAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zNjAsNiArMzU5LDEyIEBACiAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLworLy8gTG93ZXJXaWRlbmFibGVDb25kaXRpb24gLSBMb3dlciB3aWRlbmFibGUgY29uZGl0aW9uIHRvIGkxIHRydWUuCisvLworUGFzcyAqY3JlYXRlTG93ZXJXaWRlbmFibGVDb25kaXRpb25QYXNzKCk7CisKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLwogLy8gTWVyZ2VJQ21wcyAtIE1lcmdlIGludGVnZXIgY29tcGFyaXNvbiBjaGFpbnMgaW50byBhIG1lbWNtcAogLy8KIFBhc3MgKmNyZWF0ZU1lcmdlSUNtcHNQYXNzKCk7CkBAIC0zOTQsMTIgKzM5OSw2IEBACiAKIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gU2NhbGFyaXplclBhc3MgLSBDb252ZXJ0cyB2ZWN0b3Igb3BlcmF0aW9ucyBpbnRvIHNjYWxhciBvcGVyYXRpb25zCi0vLwotRnVuY3Rpb25QYXNzICpjcmVhdGVTY2FsYXJpemVyUGFzcygpOwotCi0vLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwotLy8KIC8vIFNlcGFyYXRlQ29uc3RPZmZzZXRGcm9tR0VQIC0gU3BsaXQgR0VQcyBmb3IgYmV0dGVyIENTRQogLy8KIEZ1bmN0aW9uUGFzcyAqY3JlYXRlU2VwYXJhdGVDb25zdE9mZnNldEZyb21HRVBQYXNzKGJvb2wgTG93ZXJHRVAgPSBmYWxzZSk7CkBAIC00NzcsNiArNDc2LDcgQEAKIAogLy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIE1vZHVsZVBhc3MgKmNyZWF0ZU5hbWVBbm9uR2xvYmFsUGFzcygpOworTW9kdWxlUGFzcyAqY3JlYXRlQ2Fub25pY2FsaXplQWxpYXNlc1Bhc3MoKTsKIAogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC00OTEsNiArNDkxLDEzIEBACiAvLyBwcmltYXJpbHkgdG8gaGVscCBvdGhlciBsb29wIHBhc3Nlcy4KIC8vCiBQYXNzICpjcmVhdGVMb29wU2ltcGxpZnlDRkdQYXNzKCk7CisKKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gV2Fybk1pc3NlZFRyYW5zZm9ybWF0aW9ucyAtIFRoaXMgcGFzcyBlbWl0cyB3YXJuaW5ncyBmb3IgbGVmdG92ZXIgZm9yY2VkCisvLyB0cmFuc2Zvcm1hdGlvbnMuCisvLworUGFzcyAqY3JlYXRlV2Fybk1pc3NlZFRyYW5zZm9ybWF0aW9uc1Bhc3MoKTsKIH0gLy8gRW5kIGxsdm0gbmFtZXNwYWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9BRENFLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0FEQ0UuaAppbmRleCBmOThhZjYyLi43ZDhiN2FlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0FEQ0UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0FEQ0UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBBRENFLmggLSBBZ2dyZXNzaXZlIGRlYWQgY29kZSBlbGltaW5hdGlvbiAtLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9BbGlnbm1lbnRGcm9tQXNzdW1wdGlvbnMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvQWxpZ25tZW50RnJvbUFzc3VtcHRpb25zLmgKaW5kZXggNjE5NzUwMy4uZmIxNjg3ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9BbGlnbm1lbnRGcm9tQXNzdW1wdGlvbnMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0FsaWdubWVudEZyb21Bc3N1bXB0aW9ucy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tIEFsaWdubWVudEZyb21Bc3N1bXB0aW9ucy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0JEQ0UuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvQkRDRS5oCmluZGV4IGQ3ZDI3MzAuLjk5NjYyMmIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvQkRDRS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvQkRDRS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tIEJEQ0UuY3BwIC0gQml0LXRyYWNraW5nIGRlYWQgY29kZSBlbGltaW5hdGlvbiAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0NhbGxTaXRlU3BsaXR0aW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0NhbGxTaXRlU3BsaXR0aW5nLmgKaW5kZXggYjJjYTJhMS4uYjYwNTU2MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9DYWxsU2l0ZVNwbGl0dGluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvQ2FsbFNpdGVTcGxpdHRpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBDYWxsU2l0ZVNwbGl0dGluZy4uaCAtIENhbGxzaXRlIFNwbGl0dGluZyAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Db25zdGFudEhvaXN0aW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0NvbnN0YW50SG9pc3RpbmcuaAppbmRleCBiYTMyZTEyLi4yOTMxMWNhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0NvbnN0YW50SG9pc3RpbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0NvbnN0YW50SG9pc3RpbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT0tIENvbnN0YW50SG9pc3RpbmcuaCAtIFByZXBhcmUgY29kZSBmb3IgZXhwZW5zaXZlIGNvbnN0YW50cyAtLSotIEMrKyAtKi09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Db3JyZWxhdGVkVmFsdWVQcm9wYWdhdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Db3JyZWxhdGVkVmFsdWVQcm9wYWdhdGlvbi5oCmluZGV4IDIwOTMwNjkuLjI1Nzk1ZGUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvQ29ycmVsYXRlZFZhbHVlUHJvcGFnYXRpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0NvcnJlbGF0ZWRWYWx1ZVByb3BhZ2F0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ29ycmVsYXRlZFZhbHVlUHJvcGFnYXRpb24uaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0RDRS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9EQ0UuaAppbmRleCAyNzMzNDZjLi45NzRlNGIyIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0RDRS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvRENFLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRENFLmggLSBEZWFkIGNvZGUgZWxpbWluYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvRGVhZFN0b3JlRWxpbWluYXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvRGVhZFN0b3JlRWxpbWluYXRpb24uaAppbmRleCBjZmViMjE4Li5iNjZiMGRlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0RlYWRTdG9yZUVsaW1pbmF0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9EZWFkU3RvcmVFbGltaW5hdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIERlYWRTdG9yZUVsaW1pbmF0aW9uLmggLSBGYXN0IERlYWQgU3RvcmUgRWxpbWluYXRpb24gLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0RpdlJlbVBhaXJzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0RpdlJlbVBhaXJzLmgKaW5kZXggMGE0MzQ2Zi4uNzQwMWUwMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9EaXZSZW1QYWlycy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvRGl2UmVtUGFpcnMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBEaXZSZW1QYWlycy5oIC0gSG9pc3QvZGVjb21wb3NlIGludGVnZXIgZGl2aXNpb24gYW5kIHJlbWFpbmRlciAtLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9FYXJseUNTRS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9FYXJseUNTRS5oCmluZGV4IGZhZjAzYTQuLjFlN2ZkNzEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvRWFybHlDU0UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0Vhcmx5Q1NFLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRWFybHlDU0UuaCAtIFNpbXBsZSBhbmQgZmFzdCBDU0UgcGFzcyAtLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvRmxvYXQySW50LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0Zsb2F0MkludC5oCmluZGV4IDIwNmVlOTguLjA2YWViODMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvRmxvYXQySW50LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9GbG9hdDJJbnQuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gRmxvYXQySW50LmggLSBEZW1vdGUgZmxvYXRpbmcgcG9pbnQgb3BzIHRvIHdvcmsgb24gaW50ZWdlcnMgLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9HVk4uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvR1ZOLmgKaW5kZXggYzAxYTFkNy4uOWZlMDBhOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9HVk4uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0dWTi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEdWTi5oIC0gRWxpbWluYXRlIHJlZHVuZGFudCB2YWx1ZXMgYW5kIGxvYWRzIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpAQCAtMjcsNiArMjYsNyBAQAogI2luY2x1ZGUgImxsdm0vSVIvRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgImxsdm0vSVIvSW5zdHJUeXBlcy5oIgogI2luY2x1ZGUgImxsdm0vSVIvUGFzc01hbmFnZXIuaCIKKyNpbmNsdWRlICJsbHZtL0lSL1ZhbHVlSGFuZGxlLmgiCiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0FsbG9jYXRvci5oIgogI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9Db21waWxlci5oIgogI2luY2x1ZGUgPGNzdGRpbnQ+CkBAIC0xODAsNyArMTgwLDEyIEBACiAKICAgLy8gTWFwIHRoZSBibG9jayB0byByZXZlcnNlZCBwb3N0b3JkZXIgdHJhdmVyc2FsIG51bWJlci4gSXQgaXMgdXNlZCB0bwogICAvLyBmaW5kIGJhY2sgZWRnZSBlYXNpbHkuCi0gIERlbnNlTWFwPGNvbnN0IEJhc2ljQmxvY2sgKiwgdWludDMyX3Q+IEJsb2NrUlBPTnVtYmVyOworICBEZW5zZU1hcDxBc3NlcnRpbmdWSDxCYXNpY0Jsb2NrPiwgdWludDMyX3Q+IEJsb2NrUlBPTnVtYmVyOworCisgIC8vIFRoaXMgaXMgc2V0ICd0cnVlJyBpbml0aWFsbHkgYW5kIGFsc28gd2hlbiBuZXcgYmxvY2tzIGhhdmUgYmVlbiBhZGRlZCB0bworICAvLyB0aGUgZnVuY3Rpb24gYmVpbmcgYW5hbHl6ZWQuIFRoaXMgYm9vbGVhbiBpcyB1c2VkIHRvIGNvbnRyb2wgdGhlIHVwZGF0aW5nCisgIC8vIG9mIEJsb2NrUlBPTnVtYmVyIHByaW9yIHRvIGFjY2Vzc2luZyB0aGUgY29udGVudHMgb2YgQmxvY2tSUE9OdW1iZXIuCisgIGJvb2wgSW52YWxpZEJsb2NrUlBPTnVtYmVycyA9IHRydWU7CiAKICAgdXNpbmcgTG9hZERlcFZlY3QgPSBTbWFsbFZlY3RvcjxOb25Mb2NhbERlcFJlc3VsdCwgNjQ+OwogICB1c2luZyBBdmFpbFZhbEluQmxrVmVjdCA9IFNtYWxsVmVjdG9yPGd2bjo6QXZhaWxhYmxlVmFsdWVJbkJsb2NrLCA2ND47CkBAIC0yMzcsNyArMjQyLDcgQEAKICAgfQogCiAgIC8vIExpc3Qgb2YgY3JpdGljYWwgZWRnZXMgdG8gYmUgc3BsaXQgYmV0d2VlbiBpdGVyYXRpb25zLgotICBTbWFsbFZlY3RvcjxzdGQ6OnBhaXI8VGVybWluYXRvckluc3QgKiwgdW5zaWduZWQ+LCA0PiB0b1NwbGl0OworICBTbWFsbFZlY3RvcjxzdGQ6OnBhaXI8SW5zdHJ1Y3Rpb24gKiwgdW5zaWduZWQ+LCA0PiB0b1NwbGl0OwogCiAgIC8vIEhlbHBlciBmdW5jdGlvbnMgb2YgcmVkdW5kYW50IGxvYWQgZWxpbWluYXRpb24KICAgYm9vbCBwcm9jZXNzTG9hZChMb2FkSW5zdCAqTCk7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0dWTkV4cHJlc3Npb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvR1ZORXhwcmVzc2lvbi5oCmluZGV4IDhiMzQ2OTYuLjNkYzQ1MTUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvR1ZORXhwcmVzc2lvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvR1ZORXhwcmVzc2lvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEdWTkV4cHJlc3Npb24uaCAtIEdWTiBFeHByZXNzaW9uIGNsYXNzZXMgLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0d1YXJkV2lkZW5pbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvR3VhcmRXaWRlbmluZy5oCmluZGV4IDJiYzA5NDAuLjNhZGVhMDUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvR3VhcmRXaWRlbmluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvR3VhcmRXaWRlbmluZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEd1YXJkV2lkZW5pbmcuaCAtIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0lWVXNlcnNQcmludGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0lWVXNlcnNQcmludGVyLmgKaW5kZXggZmFkMDBkOC4uYTFmMjBkOSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9JVlVzZXJzUHJpbnRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvSVZVc2Vyc1ByaW50ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJVlVzZXJzUHJpbnRlci5oIC0gSW5kdWN0aW9uIFZhcmlhYmxlIFVzZXJzIFByaW50aW5nIC0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvSW5kVmFyU2ltcGxpZnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvSW5kVmFyU2ltcGxpZnkuaAppbmRleCBlMzIxYzhmLi4zYzIwNTM3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0luZFZhclNpbXBsaWZ5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9JbmRWYXJTaW1wbGlmeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEluZFZhclNpbXBsaWZ5LmggLSBJbmR1Y3Rpb24gVmFyaWFibGUgU2ltcGxpZmljYXRpb24gLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0luZHVjdGl2ZVJhbmdlQ2hlY2tFbGltaW5hdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9JbmR1Y3RpdmVSYW5nZUNoZWNrRWxpbWluYXRpb24uaAppbmRleCAzMTFjNTQ5Li5iMWU3MDA3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0luZHVjdGl2ZVJhbmdlQ2hlY2tFbGltaW5hdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvSW5kdWN0aXZlUmFuZ2VDaGVja0VsaW1pbmF0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSW5kdWN0aXZlUmFuZ2VDaGVja0VsaW1pbmF0aW9uLmggLSBJUkNFIC0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvSW5zdFNpbXBsaWZ5UGFzcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9JbnN0U2ltcGxpZnlQYXNzLmgKaW5kZXggZGE3OWExMy4uMGMzMGI2MiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9JbnN0U2ltcGxpZnlQYXNzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9JbnN0U2ltcGxpZnlQYXNzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gSW5zdFNpbXBsaWZ5UGFzcy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0p1bXBUaHJlYWRpbmcuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvSnVtcFRocmVhZGluZy5oCmluZGV4IGM4Mzc2ZGQuLjA0NjRkNDAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvSnVtcFRocmVhZGluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvSnVtcFRocmVhZGluZy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEp1bXBUaHJlYWRpbmcuaCAtIHRocmVhZCBjb250cm9sIHRocm91Z2ggY29uZGl0aW9uYWwgQkJzIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yMyw3ICsyMiw3IEBACiAjaW5jbHVkZSAibGx2bS9BbmFseXNpcy9BbGlhc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAibGx2bS9BbmFseXNpcy9CbG9ja0ZyZXF1ZW5jeUluZm8uaCIKICNpbmNsdWRlICJsbHZtL0FuYWx5c2lzL0JyYW5jaFByb2JhYmlsaXR5SW5mby5oIgotI2luY2x1ZGUgImxsdm0vSVIvRG9tVHJlZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJsbHZtL0FuYWx5c2lzL0RvbVRyZWVVcGRhdGVyLmgiCiAjaW5jbHVkZSAibGx2bS9JUi9WYWx1ZUhhbmRsZS5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx1dGlsaXR5PgpAQCAtODksMjIgKzg4LDkgQEAKICNlbHNlCiAgIFNtYWxsU2V0PEFzc2VydGluZ1ZIPGNvbnN0IEJhc2ljQmxvY2s+LCAxNj4gTG9vcEhlYWRlcnM7CiAjZW5kaWYKLSAgRGVuc2VTZXQ8c3RkOjpwYWlyPFZhbHVlICosIEJhc2ljQmxvY2sgKj4+IFJlY3Vyc2lvblNldDsKIAogICB1bnNpZ25lZCBCQkR1cFRocmVzaG9sZDsKIAotICAvLyBSQUlJIGhlbHBlciBmb3IgdXBkYXRpbmcgdGhlIHJlY3Vyc2lvbiBzdGFjay4KLSAgc3RydWN0IFJlY3Vyc2lvblNldFJlbW92ZXIgewotICAgIERlbnNlU2V0PHN0ZDo6cGFpcjxWYWx1ZSAqLCBCYXNpY0Jsb2NrICo+PiAmVGhlU2V0OwotICAgIHN0ZDo6cGFpcjxWYWx1ZSAqLCBCYXNpY0Jsb2NrICo+IFRoZVBhaXI7Ci0KLSAgICBSZWN1cnNpb25TZXRSZW1vdmVyKERlbnNlU2V0PHN0ZDo6cGFpcjxWYWx1ZSAqLCBCYXNpY0Jsb2NrICo+PiAmUywKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxWYWx1ZSAqLCBCYXNpY0Jsb2NrICo+IFApCi0gICAgICAgIDogVGhlU2V0KFMpLCBUaGVQYWlyKFApIHt9Ci0KLSAgICB+UmVjdXJzaW9uU2V0UmVtb3ZlcigpIHsgVGhlU2V0LmVyYXNlKFRoZVBhaXIpOyB9Ci0gIH07Ci0KIHB1YmxpYzoKICAgSnVtcFRocmVhZGluZ1Bhc3MoaW50IFQgPSAtMSk7CiAKQEAgLTEyOCwxMSArMTE0LDIxIEBACiAgIGJvb2wgRHVwbGljYXRlQ29uZEJyYW5jaE9uUEhJSW50b1ByZWQoCiAgICAgICBCYXNpY0Jsb2NrICpCQiwgY29uc3QgU21hbGxWZWN0b3JJbXBsPEJhc2ljQmxvY2sgKj4gJlByZWRCQnMpOwogCisgIGJvb2wgQ29tcHV0ZVZhbHVlS25vd25JblByZWRlY2Vzc29yc0ltcGwoCisgICAgICBWYWx1ZSAqViwgQmFzaWNCbG9jayAqQkIsIGp1bXB0aHJlYWRpbmc6OlByZWRWYWx1ZUluZm8gJlJlc3VsdCwKKyAgICAgIGp1bXB0aHJlYWRpbmc6OkNvbnN0YW50UHJlZmVyZW5jZSBQcmVmZXJlbmNlLAorICAgICAgRGVuc2VTZXQ8c3RkOjpwYWlyPFZhbHVlICosIEJhc2ljQmxvY2sgKj4+ICZSZWN1cnNpb25TZXQsCisgICAgICBJbnN0cnVjdGlvbiAqQ3h0SSA9IG51bGxwdHIpOwogICBib29sCiAgIENvbXB1dGVWYWx1ZUtub3duSW5QcmVkZWNlc3NvcnMoVmFsdWUgKlYsIEJhc2ljQmxvY2sgKkJCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXB0aHJlYWRpbmc6OlByZWRWYWx1ZUluZm8gJlJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdW1wdGhyZWFkaW5nOjpDb25zdGFudFByZWZlcmVuY2UgUHJlZmVyZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiAqQ3h0SSA9IG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpDeHRJID0gbnVsbHB0cikgeworICAgIERlbnNlU2V0PHN0ZDo6cGFpcjxWYWx1ZSAqLCBCYXNpY0Jsb2NrICo+PiBSZWN1cnNpb25TZXQ7CisgICAgcmV0dXJuIENvbXB1dGVWYWx1ZUtub3duSW5QcmVkZWNlc3NvcnNJbXBsKFYsIEJCLCBSZXN1bHQsIFByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY3Vyc2lvblNldCwgQ3h0SSk7CisgIH0KKwogICBib29sIFByb2Nlc3NUaHJlYWRhYmxlRWRnZXMoVmFsdWUgKkNvbmQsIEJhc2ljQmxvY2sgKkJCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcHRocmVhZGluZzo6Q29uc3RhbnRQcmVmZXJlbmNlIFByZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiAqQ3h0SSA9IG51bGxwdHIpOwpAQCAtMTQyLDcgKzEzOCwxMSBAQAogICBib29sIFByb2Nlc3NJbXBsaWVkQ29uZGl0aW9uKEJhc2ljQmxvY2sgKkJCKTsKIAogICBib29sIFNpbXBsaWZ5UGFydGlhbGx5UmVkdW5kYW50TG9hZChMb2FkSW5zdCAqTEkpOworICB2b2lkIFVuZm9sZFNlbGVjdEluc3RyKEJhc2ljQmxvY2sgKlByZWQsIEJhc2ljQmxvY2sgKkJCLCBTZWxlY3RJbnN0ICpTSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQSElOb2RlICpTSVVzZSwgdW5zaWduZWQgSWR4KTsKKwogICBib29sIFRyeVRvVW5mb2xkU2VsZWN0KENtcEluc3QgKkNvbmRDbXAsIEJhc2ljQmxvY2sgKkJCKTsKKyAgYm9vbCBUcnlUb1VuZm9sZFNlbGVjdChTd2l0Y2hJbnN0ICpTSSwgQmFzaWNCbG9jayAqQkIpOwogICBib29sIFRyeVRvVW5mb2xkU2VsZWN0SW5DdXJyQkIoQmFzaWNCbG9jayAqQkIpOwogCiAgIGJvb2wgUHJvY2Vzc0d1YXJkcyhCYXNpY0Jsb2NrICpCQik7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xJQ00uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTElDTS5oCmluZGV4IDY4YWQxOTAuLmVhOTQ3ZWEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTElDTS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTElDTS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExJQ00uaCAtIExvb3AgSW52YXJpYW50IENvZGUgTW90aW9uIFBhc3MgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcEFjY2Vzc0FuYWx5c2lzUHJpbnRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wQWNjZXNzQW5hbHlzaXNQcmludGVyLmgKaW5kZXggZTFiMzM3OS4uM2YyNTBmYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wQWNjZXNzQW5hbHlzaXNQcmludGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wQWNjZXNzQW5hbHlzaXNQcmludGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9BbmFseXNpcy9Mb29wQWNjZXNzQW5hbHlzaXNQcmludGVyLmggLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BEYXRhUHJlZmV0Y2guaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcERhdGFQcmVmZXRjaC5oCmluZGV4IGUxYWQ2N2EuLjllYmQ1OTggMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcERhdGFQcmVmZXRjaC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcERhdGFQcmVmZXRjaC5oCkBAIC0xLDEwICsxLDkgQEAKIC8vPT09LS0tLS0tLS0gTG9vcERhdGFQcmVmZXRjaC5oIC0gTG9vcCBEYXRhIFByZWZldGNoaW5nIFBhc3MgLS0tKi0gQysrIC0qLT09PS8vCiAvLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BEZWxldGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wRGVsZXRpb24uaAppbmRleCA3YjhjYjFlLi41NTc2MTZlIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BEZWxldGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcERlbGV0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTG9vcERlbGV0aW9uLmggLSBMb29wIERlbGV0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcERpc3RyaWJ1dGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcERpc3RyaWJ1dGUuaAppbmRleCAyYmYxYzlkLi4xYTgyMTc2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BEaXN0cmlidXRlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wRGlzdHJpYnV0ZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExvb3BEaXN0cmlidXRlLmNwcCAtIExvb3AgRGlzdHJpYnV0aW9uIFBhc3MgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BJZGlvbVJlY29nbml6ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wSWRpb21SZWNvZ25pemUuaAppbmRleCA3YWRkZWQ4Li5kMmZmZjhiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BJZGlvbVJlY29nbml6ZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcElkaW9tUmVjb2duaXplLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTG9vcElkaW9tUmVjb2duaXplLmggLSBMb29wIElkaW9tIFJlY29nbml6ZSBQYXNzIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcEluc3RTaW1wbGlmeS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wSW5zdFNpbXBsaWZ5LmgKaW5kZXggMDRkYzc5Yy4uZjZlODZkMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wSW5zdFNpbXBsaWZ5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wSW5zdFNpbXBsaWZ5LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTG9vcEluc3RTaW1wbGlmeS5oIC0gTG9vcCBJbnN0IFNpbXBsaWZ5IFBhc3MgLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcExvYWRFbGltaW5hdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wTG9hZEVsaW1pbmF0aW9uLmgKaW5kZXggYjA1MTRhNC4uNjViOWFhYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wTG9hZEVsaW1pbmF0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wTG9hZEVsaW1pbmF0aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTG9vcExvYWRFbGltaW5hdGlvbi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcFBhc3NNYW5hZ2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BQYXNzTWFuYWdlci5oCmluZGV4IGU1NDk2MGQuLjYxZWM1ODUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcFBhc3NNYW5hZ2VyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wUGFzc01hbmFnZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMb29wUGFzc01hbmFnZXIuaCAtIExvb3AgcGFzcyBtYW5hZ2VtZW50IC0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKQEAgLTM1Miw3ICszNTEsMTEgQEAKICAgICAgICAgY29udGludWU7CiAgICAgICBQcmVzZXJ2ZWRBbmFseXNlcyBQYXNzUEEgPSBQYXNzLnJ1bigqTCwgTEFNLCBMQVIsIFVwZGF0ZXIpOwogCi0gICAgICBQSS5ydW5BZnRlclBhc3M8TG9vcD4oUGFzcywgKkwpOworICAgICAgLy8gRG8gbm90IHBhc3MgZGVsZXRlZCBMb29wIGludG8gdGhlIGluc3RydW1lbnRhdGlvbi4KKyAgICAgIGlmIChVcGRhdGVyLnNraXBDdXJyZW50TG9vcCgpKQorICAgICAgICBQSS5ydW5BZnRlclBhc3NJbnZhbGlkYXRlZDxMb29wPihQYXNzKTsKKyAgICAgIGVsc2UKKyAgICAgICAgUEkucnVuQWZ0ZXJQYXNzPExvb3A+KFBhc3MsICpMKTsKIAogICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB2ZXJpZnkgdGhlIHNldCBvZiBhbmFseXNlcyByZWxldmFudCB0byBMb29wIHBhc3NlcwogICAgICAgLy8gYXJlIHByZXNlcnZlZC4KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcFByZWRpY2F0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BQcmVkaWNhdGlvbi5oCmluZGV4IDU3Mzk4YmQuLjI1MmRhYWYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcFByZWRpY2F0aW9uLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wUHJlZGljYXRpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMb29wUHJlZGljYXRpb24uaCAtIEd1YXJkIGJhc2VkIGxvb3AgcHJlZGljYXRpb24gcGFzcyAtLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wUm90YXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcFJvdGF0aW9uLmgKaW5kZXggZWE4ZDU2MS4uMjU0ZTYwNyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wUm90YXRpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BSb3RhdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExvb3BSb3RhdGlvbi5oIC0gTG9vcCBSb3RhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BTaW1wbGlmeUNGRy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wU2ltcGxpZnlDRkcuaAppbmRleCA3NjI4Yzc0Li4yZDcxODU5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BTaW1wbGlmeUNGRy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcFNpbXBsaWZ5Q0ZHLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTG9vcFNpbXBsaWZ5Q0ZHLmNwcCAtIExvb3AgQ0ZHIFNpbXBsaWZpY2F0aW9uIFBhc3MgLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcFNpbmsuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcFNpbmsuaAppbmRleCAzNzFhN2M4Li4yMzRjNDhjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BTaW5rLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wU2luay5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExvb3BTaW5rLmggLSBMb29wIFNpbmsgUGFzcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BTdHJlbmd0aFJlZHVjZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wU3RyZW5ndGhSZWR1Y2UuaAppbmRleCA2MmMwMzhhLi41Y2Y4MDViIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BTdHJlbmd0aFJlZHVjZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcFN0cmVuZ3RoUmVkdWNlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTG9vcFN0cmVuZ3RoUmVkdWNlLmggLSBMb29wIFN0cmVuZ3RoIFJlZHVjZSBQYXNzIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcFVucm9sbEFuZEphbVBhc3MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcFVucm9sbEFuZEphbVBhc3MuaAppbmRleCBmYzY5YWEzLi43OTIwMjY5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BVbnJvbGxBbmRKYW1QYXNzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wVW5yb2xsQW5kSmFtUGFzcy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExvb3BVbnJvbGxBbmRKYW1QYXNzLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wVW5yb2xsUGFzcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb29wVW5yb2xsUGFzcy5oCmluZGV4IDk4NDhlMGQuLjE0NDUzNzMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG9vcFVucm9sbFBhc3MuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvb3BVbnJvbGxQYXNzLmgKQEAgLTEsMTUgKzEsMTUgQEAKIC8vPT09LSBMb29wVW5yb2xsUGFzcy5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAKICNpZm5kZWYgTExWTV9UUkFOU0ZPUk1TX1NDQUxBUl9MT09QVU5ST0xMUEFTU19ICiAjZGVmaW5lIExMVk1fVFJBTlNGT1JNU19TQ0FMQVJfTE9PUFVOUk9MTFBBU1NfSAogCisjaW5jbHVkZSAibGx2bS9BRFQvT3B0aW9uYWwuaCIKICNpbmNsdWRlICJsbHZtL0FuYWx5c2lzL0xvb3BBbmFseXNpc01hbmFnZXIuaCIKICNpbmNsdWRlICJsbHZtL0lSL1Bhc3NNYW5hZ2VyLmgiCiAKQEAgLTIzLDIzICsyMyw5MCBAQAogY2xhc3MgTG9vcEZ1bGxVbnJvbGxQYXNzIDogcHVibGljIFBhc3NJbmZvTWl4aW48TG9vcEZ1bGxVbnJvbGxQYXNzPiB7CiAgIGNvbnN0IGludCBPcHRMZXZlbDsKIAorICAvLy8gSWYgZmFsc2UsIHVzZSBhIGNvc3QgbW9kZWwgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdW5yb2xsaW5nIG9mIGEgbG9vcCBpcworICAvLy8gcHJvZml0YWJsZS4gSWYgdHJ1ZSwgb25seSBsb29wcyB0aGF0IGV4cGxpY2l0bHkgcmVxdWVzdCB1bnJvbGxpbmcgdmlhCisgIC8vLyBtZXRhZGF0YSBhcmUgY29uc2lkZXJlZC4gQWxsIG90aGVyIGxvb3BzIGFyZSBza2lwcGVkLgorICBjb25zdCBib29sIE9ubHlXaGVuRm9yY2VkOworCiBwdWJsaWM6Ci0gIGV4cGxpY2l0IExvb3BGdWxsVW5yb2xsUGFzcyhpbnQgT3B0TGV2ZWwgPSAyKSA6IE9wdExldmVsKE9wdExldmVsKSB7fQorICBleHBsaWNpdCBMb29wRnVsbFVucm9sbFBhc3MoaW50IE9wdExldmVsID0gMiwgYm9vbCBPbmx5V2hlbkZvcmNlZCA9IGZhbHNlKQorICAgICAgOiBPcHRMZXZlbChPcHRMZXZlbCksIE9ubHlXaGVuRm9yY2VkKE9ubHlXaGVuRm9yY2VkKSB7fQogCiAgIFByZXNlcnZlZEFuYWx5c2VzIHJ1bihMb29wICZMLCBMb29wQW5hbHlzaXNNYW5hZ2VyICZBTSwKICAgICAgICAgICAgICAgICAgICAgICAgIExvb3BTdGFuZGFyZEFuYWx5c2lzUmVzdWx0cyAmQVIsIExQTVVwZGF0ZXIgJlUpOwogfTsKIAorLy8vIEEgc2V0IG9mIHBhcmFtZXRlcnMgdXNlZCB0byBjb250cm9sIHZhcmlvdXMgdHJhbnNmb3JtcyBwZXJmb3JtZWQgYnkgdGhlCisvLy8gTG9vcFVucm9sbCBwYXNzLiBFYWNoIG9mIHRoZSBib29sZWFuIHBhcmFtZXRlcnMgY2FuIGJlIHNldCB0bzoKKy8vLyAgICAgIHRydWUgLSBlbmFibGluZyB0aGUgdHJhbnNmb3JtYXRpb24uCisvLy8gICAgICBmYWxzZSAtIGRpc2FibGluZyB0aGUgdHJhbnNmb3JtYXRpb24uCisvLy8gICAgICBOb25lIC0gcmVseWluZyBvbiBhIGdsb2JhbCBkZWZhdWx0LgorLy8vCisvLy8gVGhlcmUgaXMgYWxzbyBPcHRMZXZlbCBwYXJhbWV0ZXIsIHdoaWNoIGlzIHVzZWQgZm9yIGFkZGl0aW9uYWwgbG9vcCB1bnJvbGwKKy8vLyB0dW5pbmcuCisvLy8KKy8vLyBJbnRlbmRlZCB1c2UgaXMgdG8gY3JlYXRlIGEgZGVmYXVsdCBvYmplY3QsIG1vZGlmeSBwYXJhbWV0ZXJzIHdpdGgKKy8vLyBhZGRpdGlvbmFsIHNldHRlcnMgYW5kIHRoZW4gcGFzcyBpdCB0byBMb29wVW5yb2xsUGFzcy4KKy8vLworc3RydWN0IExvb3BVbnJvbGxPcHRpb25zIHsKKyAgT3B0aW9uYWw8Ym9vbD4gQWxsb3dQYXJ0aWFsOworICBPcHRpb25hbDxib29sPiBBbGxvd1BlZWxpbmc7CisgIE9wdGlvbmFsPGJvb2w+IEFsbG93UnVudGltZTsKKyAgT3B0aW9uYWw8Ym9vbD4gQWxsb3dVcHBlckJvdW5kOworICBpbnQgT3B0TGV2ZWw7CisKKyAgLy8vIElmIGZhbHNlLCB1c2UgYSBjb3N0IG1vZGVsIHRvIGRldGVybWluZSB3aGV0aGVyIHVucm9sbGluZyBvZiBhIGxvb3AgaXMKKyAgLy8vIHByb2ZpdGFibGUuIElmIHRydWUsIG9ubHkgbG9vcHMgdGhhdCBleHBsaWNpdGx5IHJlcXVlc3QgdW5yb2xsaW5nIHZpYQorICAvLy8gbWV0YWRhdGEgYXJlIGNvbnNpZGVyZWQuIEFsbCBvdGhlciBsb29wcyBhcmUgc2tpcHBlZC4KKyAgYm9vbCBPbmx5V2hlbkZvcmNlZDsKKworICBMb29wVW5yb2xsT3B0aW9ucyhpbnQgT3B0TGV2ZWwgPSAyLCBib29sIE9ubHlXaGVuRm9yY2VkID0gZmFsc2UpCisgICAgICA6IE9wdExldmVsKE9wdExldmVsKSwgT25seVdoZW5Gb3JjZWQoT25seVdoZW5Gb3JjZWQpIHt9CisKKyAgLy8vIEVuYWJsZXMgb3IgZGlzYWJsZXMgcGFydGlhbCB1bnJvbGxpbmcuIFdoZW4gZGlzYWJsZWQgb25seSBmdWxsIHVucm9sbGluZworICAvLy8gaXMgYWxsb3dlZC4KKyAgTG9vcFVucm9sbE9wdGlvbnMgJnNldFBhcnRpYWwoYm9vbCBQYXJ0aWFsKSB7CisgICAgQWxsb3dQYXJ0aWFsID0gUGFydGlhbDsKKyAgICByZXR1cm4gKnRoaXM7CisgIH0KKworICAvLy8gRW5hYmxlcyBvciBkaXNhYmxlcyB1bnJvbGxpbmcgb2YgbG9vcHMgd2l0aCBydW50aW1lIHRyaXAgY291bnQuCisgIExvb3BVbnJvbGxPcHRpb25zICZzZXRSdW50aW1lKGJvb2wgUnVudGltZSkgeworICAgIEFsbG93UnVudGltZSA9IFJ1bnRpbWU7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgLy8vIEVuYWJsZXMgb3IgZGlzYWJsZXMgbG9vcCBwZWVsaW5nLgorICBMb29wVW5yb2xsT3B0aW9ucyAmc2V0UGVlbGluZyhib29sIFBlZWxpbmcpIHsKKyAgICBBbGxvd1BlZWxpbmcgPSBQZWVsaW5nOworICAgIHJldHVybiAqdGhpczsKKyAgfQorCisgIC8vLyBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSB1c2Ugb2YgdHJpcCBjb3VudCB1cHBlciBib3VuZAorICAvLy8gaW4gbG9vcCB1bnJvbGxpbmcuCisgIExvb3BVbnJvbGxPcHRpb25zICZzZXRVcHBlckJvdW5kKGJvb2wgVXBwZXJCb3VuZCkgeworICAgIEFsbG93VXBwZXJCb3VuZCA9IFVwcGVyQm91bmQ7CisgICAgcmV0dXJuICp0aGlzOworICB9CisKKyAgLy8gU2V0cyAib3B0aW1pemF0aW9uIGxldmVsIiB0dW5pbmcgcGFyYW1ldGVyIGZvciBsb29wIHVucm9sbGluZy4KKyAgTG9vcFVucm9sbE9wdGlvbnMgJnNldE9wdExldmVsKGludCBPKSB7CisgICAgT3B0TGV2ZWwgPSBPOworICAgIHJldHVybiAqdGhpczsKKyAgfQorfTsKKwogLy8vIExvb3AgdW5yb2xsIHBhc3MgdGhhdCB3aWxsIHN1cHBvcnQgYm90aCBmdWxsIGFuZCBwYXJ0aWFsIHVucm9sbGluZy4KIC8vLyBJdCBpcyBhIGZ1bmN0aW9uIHBhc3MgdG8gaGF2ZSBhY2Nlc3MgdG8gZnVuY3Rpb24gYW5kIG1vZHVsZSBhbmFseXNlcy4KIC8vLyBJdCB3aWxsIGFsc28gcHV0IGxvb3BzIGludG8gY2Fub25pY2FsIGZvcm0gKHNpbXBsaWZpZWQgYW5kIExDU1NBKS4KIGNsYXNzIExvb3BVbnJvbGxQYXNzIDogcHVibGljIFBhc3NJbmZvTWl4aW48TG9vcFVucm9sbFBhc3M+IHsKLSAgY29uc3QgaW50IE9wdExldmVsOworICBMb29wVW5yb2xsT3B0aW9ucyBVbnJvbGxPcHRzOwogCiBwdWJsaWM6CiAgIC8vLyBUaGlzIHVzZXMgdGhlIHRhcmdldCBpbmZvcm1hdGlvbiAob3IgZmxhZ3MpIHRvIGNvbnRyb2wgdGhlIHRocmVzaG9sZHMgZm9yCiAgIC8vLyBkaWZmZXJlbnQgdW5yb2xsaW5nIHN0YXRlZ2llcyBidXQgc3VwcG9ydHMgYWxsIG9mIHRoZW0uCi0gIGV4cGxpY2l0IExvb3BVbnJvbGxQYXNzKGludCBPcHRMZXZlbCA9IDIpIDogT3B0TGV2ZWwoT3B0TGV2ZWwpIHt9CisgIGV4cGxpY2l0IExvb3BVbnJvbGxQYXNzKExvb3BVbnJvbGxPcHRpb25zIFVucm9sbE9wdHMgPSB7fSkKKyAgICAgIDogVW5yb2xsT3B0cyhVbnJvbGxPcHRzKSB7fQogCiAgIFByZXNlcnZlZEFuYWx5c2VzIHJ1bihGdW5jdGlvbiAmRiwgRnVuY3Rpb25BbmFseXNpc01hbmFnZXIgJkFNKTsKIH07CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvd2VyQXRvbWljLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvd2VyQXRvbWljLmgKaW5kZXggYTRhMmU3YS4uNDBmOGNhNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb3dlckF0b21pYy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG93ZXJBdG9taWMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMb3dlckF0b21pYy5jcHAgLSBMb3dlciBhdG9taWMgaW50cmluc2ljcyAtLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG93ZXJFeHBlY3RJbnRyaW5zaWMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG93ZXJFeHBlY3RJbnRyaW5zaWMuaAppbmRleCBiNmVlNjUyLi40ZTQ3ZmY3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvd2VyRXhwZWN0SW50cmluc2ljLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb3dlckV4cGVjdEludHJpbnNpYy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExvd2VyRXhwZWN0SW50cmluc2ljLmggLSBMb3dlckV4cGVjdEludHJpbnNpYyBwYXNzIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9Mb3dlckd1YXJkSW50cmluc2ljLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvd2VyR3VhcmRJbnRyaW5zaWMuaAppbmRleCBhOWYxOWY2Li5jZTk3YjllIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvd2VyR3VhcmRJbnRyaW5zaWMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvd2VyR3VhcmRJbnRyaW5zaWMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIExvd2VyR3VhcmRJbnRyaW5zaWMuaCAtIExvd2VyIHRoZSBndWFyZCBpbnRyaW5zaWMgLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvd2VyV2lkZW5hYmxlQ29uZGl0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL0xvd2VyV2lkZW5hYmxlQ29uZGl0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MxZTY0YgotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTG93ZXJXaWRlbmFibGVDb25kaXRpb24uaApAQCAtMCwwICsxLDI2IEBACisvLz09PS0tLSBMb3dlcldpZGVuYWJsZUNvbmRpdGlvbi5oIC0gTG93ZXIgdGhlIGd1YXJkIGludHJpbnNpYyAtLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIFRoaXMgcGFzcyBsb3dlcnMgdGhlIGxsdm0ud2lkZW5hYmxlLmNvbmRpdGlvbiBpbnRyaW5zaWMgdG8gZGVmYXVsdCB2YWx1ZQorLy8gd2hpY2ggaXMgaTEgdHJ1ZS4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworI2lmbmRlZiBMTFZNX1RSQU5TRk9STVNfU0NBTEFSX0xPV0VSV0lERU5BQkxFQ09ORElUSU9OX0gKKyNkZWZpbmUgTExWTV9UUkFOU0ZPUk1TX1NDQUxBUl9MT1dFUldJREVOQUJMRUNPTkRJVElPTl9ICisKKyNpbmNsdWRlICJsbHZtL0lSL1Bhc3NNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBsbHZtIHsKKworc3RydWN0IExvd2VyV2lkZW5hYmxlQ29uZGl0aW9uUGFzcyA6IFBhc3NJbmZvTWl4aW48TG93ZXJXaWRlbmFibGVDb25kaXRpb25QYXNzPiB7CisgIFByZXNlcnZlZEFuYWx5c2VzIHJ1bihGdW5jdGlvbiAmRiwgRnVuY3Rpb25BbmFseXNpc01hbmFnZXIgJkFNKTsKK307CisKK30KKworI2VuZGlmIC8vTExWTV9UUkFOU0ZPUk1TX1NDQUxBUl9MT1dFUldJREVOQUJMRUNPTkRJVElPTl9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL01ha2VHdWFyZHNFeHBsaWNpdC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9NYWtlR3VhcmRzRXhwbGljaXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjUxNzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9NYWtlR3VhcmRzRXhwbGljaXQuaApAQCAtMCwwICsxLDQ2IEBACisvLz09PS0tIE1ha2VHdWFyZHNFeHBsaWNpdC5oIC0gVHVybiBndWFyZCBpbnRyaW5zaWNzIGludG8gZ3VhcmQgYnJhbmNoZXMgLS09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIFRoaXMgcGFzcyBsb3dlcnMgdGhlIEBsbHZtLmV4cGVyaW1lbnRhbC5ndWFyZCBpbnRyaW5zaWMgdG8gdGhlIG5ldyBmb3JtIG9mCisvLyBndWFyZCByZXByZXNlbnRlZCBhcyB3aWRlbmFibGUgZXhwbGljaXQgYnJhbmNoIHRvIHRoZSBkZW9wdCBibG9jay4gVGhlCisvLyBkaWZmZXJlbmNlIGJldHdlZW4gdGhpcyBwYXNzIGFuZCBMb3dlckd1YXJkSW50cmluc2ljIGlzIHRoYXQgYWZ0ZXIgdGhpcyBwYXNzCisvLyB0aGUgZ3VhcmQgcmVwcmVzZW50ZWQgYXMgaW50cmluc2ljOgorLy8KKy8vICAgY2FsbCB2b2lkKGkxLCAuLi4pIEBsbHZtLmV4cGVyaW1lbnRhbC5ndWFyZChpMSAlb2xkX2NvbmQpIFsgImRlb3B0IigpIF0KKy8vCisvLyB0cmFuc2Zvcm1zIHRvIGEgZ3VhcmQgcmVwcmVzZW50ZWQgYXMgd2lkZW5hYmxlIGV4cGxpY2l0IGJyYW5jaDoKKy8vCisvLyAgICV3aWRlbmFibGVfY29uZCA9IGNhbGwgaTEgQGxsdm0uZXhwZXJpbWVudGFsLndpZGVuYWJsZS5jb25kaXRpb24oKQorLy8gICBiciBpMSAoJW9sZF9jb25kICYgJXdpZGVuYWJsZV9jb25kKSwgbGFiZWwgJWd1YXJkZWQsIGxhYmVsICVkZW9wdAorLy8KKy8vIEhlcmU6CisvLyAgIC0gVGhlIHNlbWFudGljcyBvZiBAbGx2bS5leHBlcmltZW50YWwud2lkZW5hYmxlLmNvbmRpdGlvbiBhbGxvd3MgdG8gcmVwbGFjZQorLy8gICAgICV3aWRlbmFibGVfY29uZCB3aXRoIHRoZSBjb25zdHJ1Y3Rpb24gKCV3aWRlbmFibGVfY29uZCAmICVhbnlfb3RoZXJfY29uZCkKKy8vICAgICB3aXRob3V0IGxvc3Mgb2YgY29ycmVjdG5lc3M7CisvLyAgIC0gJWd1YXJkZWQgaXMgdGhlIGxvd2VyIHBhcnQgb2Ygb2xkIGd1YXJkIGludHJpbnNpYydzIHBhcmVudCBibG9jayBzcGxpdCBieQorLy8gICAgIHRoZSBpbnRyaW5zaWMgY2FsbDsKKy8vICAgLSAlZGVvcHQgaXMgYSBibG9jayBjb250YWluaW5nIGEgc29sZSBjYWxsIHRvIEBsbHZtLmV4cGVyaW1lbnRhbC5kZW9wdGltaXplCisvLyAgICAgaW50cmluc2ljLgorLy8KKy8vIFRoZXJlZm9yZSwgdGhpcyBicmFuY2ggcHJlc2VydmVzIHRoZSBwcm9wZXJ0eSBvZiB3aWRlbmFiaWxpdHkuCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKyNpZm5kZWYgTExWTV9UUkFOU0ZPUk1TX1NDQUxBUl9NQUtFR1VBUkRTRVhQTElDSVRfSAorI2RlZmluZSBMTFZNX1RSQU5TRk9STVNfU0NBTEFSX01BS0VHVUFSRFNFWFBMSUNJVF9ICisKKyNpbmNsdWRlICJsbHZtL0lSL1Bhc3NNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBsbHZtIHsKKworc3RydWN0IE1ha2VHdWFyZHNFeHBsaWNpdFBhc3MgOiBwdWJsaWMgUGFzc0luZm9NaXhpbjxNYWtlR3VhcmRzRXhwbGljaXRQYXNzPiB7CisgIFByZXNlcnZlZEFuYWx5c2VzIHJ1bihGdW5jdGlvbiAmRiwgRnVuY3Rpb25BbmFseXNpc01hbmFnZXIgJkFNKTsKK307CisKK30gLy8gbmFtZXNwYWNlIGxsdm0KKworI2VuZGlmIC8vTExWTV9UUkFOU0ZPUk1TX1NDQUxBUl9NQUtFR1VBUkRTRVhQTElDSVRfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9NZW1DcHlPcHRpbWl6ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTWVtQ3B5T3B0aW1pemVyLmgKaW5kZXggMDQ2YzgwOC4uNTM4NmY1OCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9NZW1DcHlPcHRpbWl6ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL01lbUNweU9wdGltaXplci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE1lbUNweU9wdGltaXplci5oIC0gbWVtY3B5IG9wdGltaXphdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL01lcmdlZExvYWRTdG9yZU1vdGlvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9NZXJnZWRMb2FkU3RvcmVNb3Rpb24uaAppbmRleCA0OGRmMDljLi45MDcxYTU2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL01lcmdlZExvYWRTdG9yZU1vdGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTWVyZ2VkTG9hZFN0b3JlTW90aW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTWVyZ2VkTG9hZFN0b3JlTW90aW9uLmggLSBtZXJnZSBhbmQgaG9pc3Qvc2luayBsb2FkL3N0b3JlcyAtLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTmFyeVJlYXNzb2NpYXRlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL05hcnlSZWFzc29jaWF0ZS5oCmluZGV4IGU4MzViZDUuLjI2ZjVmZTEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTmFyeVJlYXNzb2NpYXRlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9OYXJ5UmVhc3NvY2lhdGUuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBOYXJ5UmVhc3NvY2lhdGUuaCAtIFJlYXNzb2NpYXRlIG4tYXJ5IGV4cHJlc3Npb25zIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9OZXdHVk4uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvTmV3R1ZOLmgKaW5kZXggM2Y3NTQxOC4uMWYzNjgwZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9OZXdHVk4uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL05ld0dWTi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIE5ld0dWTi5oIC0gR2xvYmFsIFZhbHVlIE51bWJlcmluZyBQYXNzIC0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1BhcnRpYWxseUlubGluZUxpYkNhbGxzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1BhcnRpYWxseUlubGluZUxpYkNhbGxzLmgKaW5kZXggN2Y3MzgzMS4uZmQ1YTA2YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9QYXJ0aWFsbHlJbmxpbmVMaWJDYWxscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvUGFydGlhbGx5SW5saW5lTGliQ2FsbHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0tIFBhcnRpYWxseUlubGluZUxpYkNhbGxzLmggLSBQYXJ0aWFsbHkgaW5saW5lIGxpYmNhbGxzIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9SZWFzc29jaWF0ZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9SZWFzc29jaWF0ZS5oCmluZGV4IGJhNzU4NmQuLjQ4NzQ3MWMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvUmVhc3NvY2lhdGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1JlYXNzb2NpYXRlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUmVhc3NvY2lhdGUuaCAtIFJlYXNzb2NpYXRlIGJpbmFyeSBleHByZXNzaW9ucyAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvUmV3cml0ZVN0YXRlcG9pbnRzRm9yR0MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvUmV3cml0ZVN0YXRlcG9pbnRzRm9yR0MuaAppbmRleCAxMjhmMTc2Li4xMjc3M2MxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1Jld3JpdGVTdGF0ZXBvaW50c0ZvckdDLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9SZXdyaXRlU3RhdGVwb2ludHNGb3JHQy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFJld3JpdGVTdGF0ZXBvaW50c0ZvckdDLmggLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1NDQ1AuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvU0NDUC5oCmluZGV4IGU0MzRkNDEuLjBmZmQ5ODMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvU0NDUC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvU0NDUC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFNDQ1AuY3BwIC0gU3BhcnNlIENvbmRpdGlvbmFsIENvbnN0YW50IFByb3BhZ2F0aW9uIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zMSw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBsbHZtIHsKIAotY2xhc3MgRnVuY3Rpb247CitjbGFzcyBQb3N0RG9taW5hdG9yVHJlZTsKIAogLy8vIFRoaXMgcGFzcyBwZXJmb3JtcyBmdW5jdGlvbi1sZXZlbCBjb25zdGFudCBwcm9wYWdhdGlvbiBhbmQgbWVyZ2luZy4KIGNsYXNzIFNDQ1BQYXNzIDogcHVibGljIFBhc3NJbmZvTWl4aW48U0NDUFBhc3M+IHsKQEAgLTM5LDkgKzM4LDE1IEBACiAgIFByZXNlcnZlZEFuYWx5c2VzIHJ1bihGdW5jdGlvbiAmRiwgRnVuY3Rpb25BbmFseXNpc01hbmFnZXIgJkFNKTsKIH07CiAKLWJvb2wgcnVuSVBTQ0NQKAotICAgIE1vZHVsZSAmTSwgY29uc3QgRGF0YUxheW91dCAmREwsIGNvbnN0IFRhcmdldExpYnJhcnlJbmZvICpUTEksCi0gICAgZnVuY3Rpb25fcmVmPHN0ZDo6dW5pcXVlX3B0cjxQcmVkaWNhdGVJbmZvPihGdW5jdGlvbiAmKT4gZ2V0UHJlZGljYXRlSW5mbyk7CisvLy8gSGVscGVyIHN0cnVjdCBmb3IgYnVuZGxpbmcgdXAgdGhlIGFuYWx5c2lzIHJlc3VsdHMgcGVyIGZ1bmN0aW9uIGZvciBJUFNDQ1AuCitzdHJ1Y3QgQW5hbHlzaXNSZXN1bHRzRm9yRm4geworICBzdGQ6OnVuaXF1ZV9wdHI8UHJlZGljYXRlSW5mbz4gUHJlZEluZm87CisgIERvbWluYXRvclRyZWUgKkRUOworICBQb3N0RG9taW5hdG9yVHJlZSAqUERUOworfTsKKworYm9vbCBydW5JUFNDQ1AoTW9kdWxlICZNLCBjb25zdCBEYXRhTGF5b3V0ICZETCwgY29uc3QgVGFyZ2V0TGlicmFyeUluZm8gKlRMSSwKKyAgICAgICAgICAgICAgIGZ1bmN0aW9uX3JlZjxBbmFseXNpc1Jlc3VsdHNGb3JGbihGdW5jdGlvbiAmKT4gZ2V0QW5hbHlzaXMpOwogfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KIAogI2VuZGlmIC8vIExMVk1fVFJBTlNGT1JNU19TQ0FMQVJfU0NDUF9ICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1NST0EuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvU1JPQS5oCmluZGV4IGIzNmM2ZjQuLmJkM2EwNzIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvU1JPQS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvU1JPQS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFNST0EuaCAtIFNjYWxhciBSZXBsYWNlbWVudCBPZiBBZ2dyZWdhdGVzIC0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLyBcZmlsZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9TY2FsYXJpemVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1NjYWxhcml6ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTM2MzEzCi0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9TY2FsYXJpemVyLmgKQEAgLTAsMCArMSwzNCBAQAorLy89PT0tIFNjYWxhcml6ZXIuaCAtLS0gU2NhbGFyaXplIHZlY3RvciBvcGVyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKy8vCisvLy8gXGZpbGUKKy8vLyBUaGlzIHBhc3MgY29udmVydHMgdmVjdG9yIG9wZXJhdGlvbnMgaW50byBzY2FsYXIgb3BlcmF0aW9ucywgaW4gb3JkZXIKKy8vLyB0byBleHBvc2Ugb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgb24gdGhlIGluZGl2aWR1YWwgc2NhbGFyIG9wZXJhdGlvbnMuCisvLy8gSXQgaXMgbWFpbmx5IGludGVuZGVkIGZvciB0YXJnZXRzIHRoYXQgZG8gbm90IGhhdmUgdmVjdG9yIHVuaXRzLCBidXQgaXQKKy8vLyBtYXkgYWxzbyBiZSB1c2VmdWwgZm9yIHJldmVjdG9yaXppbmcgY29kZSB0byBkaWZmZXJlbnQgdmVjdG9yIHdpZHRocy4KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworCisjaWZuZGVmIExMVk1fVFJBTlNGT1JNU19TQ0FMQVJfU0NBTEFSSVpFUl9ICisjZGVmaW5lIExMVk1fVFJBTlNGT1JNU19TQ0FMQVJfU0NBTEFSSVpFUl9ICisKKyNpbmNsdWRlICJsbHZtL0lSL1Bhc3NNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBsbHZtIHsKKworY2xhc3MgU2NhbGFyaXplclBhc3MgOiBwdWJsaWMgUGFzc0luZm9NaXhpbjxTY2FsYXJpemVyUGFzcz4geworcHVibGljOgorICBQcmVzZXJ2ZWRBbmFseXNlcyBydW4oRnVuY3Rpb24gJkYsIEZ1bmN0aW9uQW5hbHlzaXNNYW5hZ2VyICZBTSk7Cit9OworCisvLy8gQ3JlYXRlIGEgbGVnYWN5IHBhc3MgbWFuYWdlciBpbnN0YW5jZSBvZiB0aGUgU2NhbGFyaXplciBwYXNzCitGdW5jdGlvblBhc3MgKmNyZWF0ZVNjYWxhcml6ZXJQYXNzKCk7CisKK30KKworI2VuZGlmIC8qIExMVk1fVFJBTlNGT1JNU19TQ0FMQVJfU0NBTEFSSVpFUl9IICovCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1NpbXBsZUxvb3BVbnN3aXRjaC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9TaW1wbGVMb29wVW5zd2l0Y2guaAppbmRleCBlZWQ1MGVjLi4zM2MxZmFhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1NpbXBsZUxvb3BVbnN3aXRjaC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvU2ltcGxlTG9vcFVuc3dpdGNoLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU2ltcGxlTG9vcFVuc3dpdGNoLmggLSBIb2lzdCBsb29wLWludmFyaWFudCBjb250cm9sIGZsb3cgLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1NpbXBsaWZ5Q0ZHLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1NpbXBsaWZ5Q0ZHLmgKaW5kZXggY2UwYTM1Zi4uZjk3OTJkMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9TaW1wbGlmeUNGRy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvU2ltcGxpZnlDRkcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTaW1wbGlmeUNGRy5oIC0gU2ltcGxpZnkgYW5kIGNhbm9uaWNhbGl6ZSB0aGUgQ0ZHIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLy8gXGZpbGUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvU2luay5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9TaW5rLmgKaW5kZXggZjliM2NiMC4uNmNiZTk2NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9TaW5rLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9TaW5rLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIFNpbmsuaCAtIENvZGUgU2lua2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvU3BlY3VsYXRlQXJvdW5kUEhJcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9TcGVjdWxhdGVBcm91bmRQSElzLmgKaW5kZXggNGEwYmZkNy4uM2M3ZGFmZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9TcGVjdWxhdGVBcm91bmRQSElzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9TcGVjdWxhdGVBcm91bmRQSElzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3BlY3VsYXRlQXJvdW5kUEhJcy5oIC0gU3BlY3VsYXRlIGFyb3VuZCBQSElzIC0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1NwZWN1bGF0aXZlRXhlY3V0aW9uLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1NwZWN1bGF0aXZlRXhlY3V0aW9uLmgKaW5kZXggZDAwZTk1MC4uMTRkYTg2NCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9TcGVjdWxhdGl2ZUV4ZWN1dGlvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvU3BlY3VsYXRpdmVFeGVjdXRpb24uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTcGVjdWxhdGl2ZUV4ZWN1dGlvbi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9UYWlsUmVjdXJzaW9uRWxpbWluYXRpb24uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvVGFpbFJlY3Vyc2lvbkVsaW1pbmF0aW9uLmgKaW5kZXggNzkzZjliYy4uOTA2ODY3NiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1NjYWxhci9UYWlsUmVjdXJzaW9uRWxpbWluYXRpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1RhaWxSZWN1cnNpb25FbGltaW5hdGlvbi5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLS0tIFRhaWxSZWN1cnNpb25FbGltaW5hdGlvbi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1dhcm5NaXNzZWRUcmFuc2Zvcm1zLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvU2NhbGFyL1dhcm5NaXNzZWRUcmFuc2Zvcm1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ1OTQyYQotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9TY2FsYXIvV2Fybk1pc3NlZFRyYW5zZm9ybXMuaApAQCAtMCwwICsxLDM3IEBACisvLz09PS0gV2Fybk1pc3NlZFRyYW5zZm9ybXMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIEVtaXQgd2FybmluZ3MgaWYgZm9yY2VkIGNvZGUgdHJhbnNmb3JtYXRpb25zIGhhdmUgbm90IGJlZW4gcGVyZm9ybWVkLgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9UUkFOU0ZPUk1TX1NDQUxBUl9XQVJOTUlTU0VEVFJBTlNGT1JNU19ICisjZGVmaW5lIExMVk1fVFJBTlNGT1JNU19TQ0FMQVJfV0FSTk1JU1NFRFRSQU5TRk9STVNfSAorCisjaW5jbHVkZSAibGx2bS9JUi9QYXNzTWFuYWdlci5oIgorCituYW1lc3BhY2UgbGx2bSB7CitjbGFzcyBGdW5jdGlvbjsKK2NsYXNzIExvb3A7CitjbGFzcyBMUE1VcGRhdGVyOworCisvLyBOZXcgcGFzcyBtYW5hZ2VyIGJvaWxlcnBsYXRlLgorY2xhc3MgV2Fybk1pc3NlZFRyYW5zZm9ybWF0aW9uc1Bhc3MKKyAgICA6IHB1YmxpYyBQYXNzSW5mb01peGluPFdhcm5NaXNzZWRUcmFuc2Zvcm1hdGlvbnNQYXNzPiB7CitwdWJsaWM6CisgIGV4cGxpY2l0IFdhcm5NaXNzZWRUcmFuc2Zvcm1hdGlvbnNQYXNzKCkge30KKworICBQcmVzZXJ2ZWRBbmFseXNlcyBydW4oRnVuY3Rpb24gJkYsIEZ1bmN0aW9uQW5hbHlzaXNNYW5hZ2VyICZBTSk7Cit9OworCisvLyBMZWdhY3kgcGFzcyBtYW5hZ2VyIGJvaWxlcnBsYXRlLgorUGFzcyAqY3JlYXRlV2Fybk1pc3NlZFRyYW5zZm9ybWF0aW9uc1Bhc3MoKTsKK3ZvaWQgaW5pdGlhbGl6ZVdhcm5NaXNzZWRUcmFuc2Zvcm1hdGlvbnNMZWdhY3lQYXNzKFBhc3NSZWdpc3RyeSAmKTsKK30gLy8gZW5kIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZiAvLyBMTFZNX1RSQU5TRk9STVNfU0NBTEFSX1dBUk5NSVNTRURUUkFOU0ZPUk1TX0gKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzLmgKaW5kZXggMzc4NTUyNy4uNmUwMzQ1MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9UcmFuc2Zvcm1zL1V0aWxzLmggLSBVdGlsaXR5IFRyYW5zZm9ybWF0aW9ucyAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9BU2FuU3RhY2tGcmFtZUxheW91dC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0FTYW5TdGFja0ZyYW1lTGF5b3V0LmgKaW5kZXggZWFhZDA2YS4uMGI1NzBjMCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0FTYW5TdGFja0ZyYW1lTGF5b3V0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0FTYW5TdGFja0ZyYW1lTGF5b3V0LmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQVNhblN0YWNrRnJhbWVMYXlvdXQuaCAtIENvbXB1dGVBU2FuU3RhY2tGcmFtZUxheW91dCAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9BZGREaXNjcmltaW5hdG9ycy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0FkZERpc2NyaW1pbmF0b3JzLmgKaW5kZXggNGRhZDA2ZS4uZjUxMmM2YyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0FkZERpc2NyaW1pbmF0b3JzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0FkZERpc2NyaW1pbmF0b3JzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQWRkRGlzY3JpbWluYXRvcnMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9CYXNpY0Jsb2NrVXRpbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9CYXNpY0Jsb2NrVXRpbHMuaAppbmRleCBkZWUxNTQxLi40ZTc2MzI4IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvQmFzaWNCbG9ja1V0aWxzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0Jhc2ljQmxvY2tVdGlscy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFRyYW5zZm9ybS9VdGlscy9CYXNpY0Jsb2NrVXRpbHMuaCAtIEJhc2ljQmxvY2sgVXRpbHMgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xOCw5ICsxNyw5IEBACiAvLyBGSVhNRTogTW92ZSB0byB0aGlzIGZpbGU6IEJhc2ljQmxvY2s6OnJlbW92ZVByZWRlY2Vzc29yLCBCQjo6c3BsaXRCYXNpY0Jsb2NrCiAKICNpbmNsdWRlICJsbHZtL0FEVC9BcnJheVJlZi5oIgorI2luY2x1ZGUgImxsdm0vQW5hbHlzaXMvRG9tVHJlZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJsbHZtL0lSL0Jhc2ljQmxvY2suaCIKICNpbmNsdWRlICJsbHZtL0lSL0NGRy5oIgotI2luY2x1ZGUgImxsdm0vSVIvRG9tVHJlZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJsbHZtL0lSL0luc3RyVHlwZXMuaCIKICNpbmNsdWRlIDxjYXNzZXJ0PgogCkBAIC00MCw4ICszOSwyNyBAQAogY2xhc3MgVGFyZ2V0TGlicmFyeUluZm87CiBjbGFzcyBWYWx1ZTsKIAorLy8vIFJlcGxhY2UgY29udGVudHMgb2YgZXZlcnkgYmxvY2sgaW4gXHAgQkJzIHdpdGggc2luZ2xlIHVucmVhY2hhYmxlCisvLy8gaW5zdHJ1Y3Rpb24uIElmIFxwIFVwZGF0ZXMgaXMgc3BlY2lmaWVkLCBjb2xsZWN0IGFsbCBuZWNlc3NhcnkgRFQgdXBkYXRlcworLy8vIGludG8gdGhpcyB2ZWN0b3IuIElmIFxwIEtlZXBPbmVJbnB1dFBISXMgaXMgdHJ1ZSwgb25lLWlucHV0IFBoaXMgaW4KKy8vLyBzdWNjZXNzb3JzIG9mIGJsb2NrcyBiZWluZyBkZWxldGVkIHdpbGwgYmUgcHJlc2VydmVkLgordm9pZCBEZXRhdGNoRGVhZEJsb2NrcyhBcnJheVJlZiA8QmFzaWNCbG9jayAqPiBCQnMsCisgICAgICAgICAgICAgICAgICAgICAgIFNtYWxsVmVjdG9ySW1wbDxEb21pbmF0b3JUcmVlOjpVcGRhdGVUeXBlPiAqVXBkYXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBLZWVwT25lSW5wdXRQSElzID0gZmFsc2UpOworCiAvLy8gRGVsZXRlIHRoZSBzcGVjaWZpZWQgYmxvY2ssIHdoaWNoIG11c3QgaGF2ZSBubyBwcmVkZWNlc3NvcnMuCi12b2lkIERlbGV0ZURlYWRCbG9jayhCYXNpY0Jsb2NrICpCQiwgRG9tVHJlZVVwZGF0ZXIgKkRUVSA9IG51bGxwdHIpOwordm9pZCBEZWxldGVEZWFkQmxvY2soQmFzaWNCbG9jayAqQkIsIERvbVRyZWVVcGRhdGVyICpEVFUgPSBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgYm9vbCBLZWVwT25lSW5wdXRQSElzID0gZmFsc2UpOworCisvLy8gRGVsZXRlIHRoZSBzcGVjaWZpZWQgYmxvY2tzIGZyb20gXHAgQkIuIFRoZSBzZXQgb2YgZGVsZXRlZCBibG9ja3MgbXVzdCBoYXZlCisvLy8gbm8gcHJlZGVjZXNzb3JzIHRoYXQgYXJlIG5vdCBiZWluZyBkZWxldGVkIHRoZW1zZWx2ZXMuIFxwIEJCcyBtdXN0IGhhdmUgbm8KKy8vLyBkdXBsaWNhdGluZyBibG9ja3MuIElmIHRoZXJlIGFyZSBsb29wcyBhbW9uZyB0aGlzIHNldCBvZiBibG9ja3MsIGFsbAorLy8vIHJlbGV2YW50IGxvb3AgaW5mbyB1cGRhdGVzIHNob3VsZCBiZSBkb25lIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4KKy8vLyBJZiBccCBLZWVwT25lSW5wdXRQSElzIGlzIHRydWUsIG9uZS1pbnB1dCBQaGlzIGluIHN1Y2Nlc3NvcnMgb2YgYmxvY2tzCisvLy8gYmVpbmcgZGVsZXRlZCB3aWxsIGJlIHByZXNlcnZlZC4KK3ZvaWQgRGVsZXRlRGVhZEJsb2NrcyhBcnJheVJlZiA8QmFzaWNCbG9jayAqPiBCQnMsCisgICAgICAgICAgICAgICAgICAgICAgRG9tVHJlZVVwZGF0ZXIgKkRUVSA9IG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgYm9vbCBLZWVwT25lSW5wdXRQSElzID0gZmFsc2UpOwogCiAvLy8gV2Uga25vdyB0aGF0IEJCIGhhcyBvbmUgcHJlZGVjZXNzb3IuIElmIHRoZXJlIGFyZSBhbnkgc2luZ2xlLWVudHJ5IFBISSBub2RlcwogLy8vIGluIGl0LCBmb2xkIHRoZW0gYXdheS4gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZW4gYWxsIGVudHJpZXMgdG8gdGhlIFBISQpAQCAtODgsNyArMTA2LDcgQEAKICAgTG9vcEluZm8gKkxJOwogICBNZW1vcnlTU0FVcGRhdGVyICpNU1NBVTsKICAgYm9vbCBNZXJnZUlkZW50aWNhbEVkZ2VzID0gZmFsc2U7Ci0gIGJvb2wgRG9udERlbGV0ZVVzZWxlc3NQSElzID0gZmFsc2U7CisgIGJvb2wgS2VlcE9uZUlucHV0UEhJcyA9IGZhbHNlOwogICBib29sIFByZXNlcnZlTENTU0EgPSBmYWxzZTsKIAogICBDcml0aWNhbEVkZ2VTcGxpdHRpbmdPcHRpb25zKERvbWluYXRvclRyZWUgKkRUID0gbnVsbHB0ciwKQEAgLTEwMSw4ICsxMTksOCBAQAogICAgIHJldHVybiAqdGhpczsKICAgfQogCi0gIENyaXRpY2FsRWRnZVNwbGl0dGluZ09wdGlvbnMgJnNldERvbnREZWxldGVVc2VsZXNzUEhJcygpIHsKLSAgICBEb250RGVsZXRlVXNlbGVzc1BISXMgPSB0cnVlOworICBDcml0aWNhbEVkZ2VTcGxpdHRpbmdPcHRpb25zICZzZXRLZWVwT25lSW5wdXRQSElzKCkgeworICAgIEtlZXBPbmVJbnB1dFBISXMgPSB0cnVlOwogICAgIHJldHVybiAqdGhpczsKICAgfQogCkBAIC0xMjgsNyArMTQ2LDcgQEAKIC8vLyBJbmRpcmVjdEJySW5zdC4gIFNwbGl0dGluZyB0aGVzZSBlZGdlcyB3aWxsIGFsbW9zdCBhbHdheXMgY3JlYXRlIGFuIGludmFsaWQKIC8vLyBwcm9ncmFtIGJlY2F1c2UgdGhlIGFkZHJlc3Mgb2YgdGhlIG5ldyBibG9jayB3b24ndCBiZSB0aGUgb25lIHRoYXQgaXMganVtcGVkCiAvLy8gdG8uCi1CYXNpY0Jsb2NrICpTcGxpdENyaXRpY2FsRWRnZShUZXJtaW5hdG9ySW5zdCAqVEksIHVuc2lnbmVkIFN1Y2NOdW0sCitCYXNpY0Jsb2NrICpTcGxpdENyaXRpY2FsRWRnZShJbnN0cnVjdGlvbiAqVEksIHVuc2lnbmVkIFN1Y2NOdW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDcml0aWNhbEVkZ2VTcGxpdHRpbmdPcHRpb25zICZPcHRpb25zID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcml0aWNhbEVkZ2VTcGxpdHRpbmdPcHRpb25zKCkpOwogCkBAIC0xNDgsNyArMTY2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENyaXRpY2FsRWRnZVNwbGl0dGluZ09wdGlvbnMgJk9wdGlvbnMgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyaXRpY2FsRWRnZVNwbGl0dGluZ09wdGlvbnMoKSkgewogICBib29sIE1hZGVDaGFuZ2UgPSBmYWxzZTsKLSAgVGVybWluYXRvckluc3QgKlRJID0gKCpQSSktPmdldFRlcm1pbmF0b3IoKTsKKyAgSW5zdHJ1Y3Rpb24gKlRJID0gKCpQSSktPmdldFRlcm1pbmF0b3IoKTsKICAgZm9yICh1bnNpZ25lZCBpID0gMCwgZSA9IFRJLT5nZXROdW1TdWNjZXNzb3JzKCk7IGkgIT0gZTsgKytpKQogICAgIGlmIChUSS0+Z2V0U3VjY2Vzc29yKGkpID09IFN1Y2MpCiAgICAgICBNYWRlQ2hhbmdlIHw9ICEhU3BsaXRDcml0aWNhbEVkZ2UoVEksIGksIE9wdGlvbnMpOwpAQCAtMTYyLDcgKzE4MCw3IEBACiBTcGxpdENyaXRpY2FsRWRnZShCYXNpY0Jsb2NrICpTcmMsIEJhc2ljQmxvY2sgKkRzdCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IENyaXRpY2FsRWRnZVNwbGl0dGluZ09wdGlvbnMgJk9wdGlvbnMgPQogICAgICAgICAgICAgICAgICAgICAgIENyaXRpY2FsRWRnZVNwbGl0dGluZ09wdGlvbnMoKSkgewotICBUZXJtaW5hdG9ySW5zdCAqVEkgPSBTcmMtPmdldFRlcm1pbmF0b3IoKTsKKyAgSW5zdHJ1Y3Rpb24gKlRJID0gU3JjLT5nZXRUZXJtaW5hdG9yKCk7CiAgIHVuc2lnbmVkIGkgPSAwOwogICB3aGlsZSAodHJ1ZSkgewogICAgIGFzc2VydChpICE9IFRJLT5nZXROdW1TdWNjZXNzb3JzKCkgJiYgIkVkZ2UgZG9lc24ndCBleGlzdCEiKTsKQEAgLTI1NywxMSArMjc1LDExIEBACiAvLy8gUmV0dXJucyB0aGUgTmV3QmFzaWNCbG9jaydzIHRlcm1pbmF0b3IuCiAvLy8KIC8vLyBVcGRhdGVzIERUIGFuZCBMSSBpZiBnaXZlbi4KLVRlcm1pbmF0b3JJbnN0ICpTcGxpdEJsb2NrQW5kSW5zZXJ0SWZUaGVuKFZhbHVlICpDb25kLCBJbnN0cnVjdGlvbiAqU3BsaXRCZWZvcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFVucmVhY2hhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUROb2RlICpCcmFuY2hXZWlnaHRzID0gbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbWluYXRvclRyZWUgKkRUID0gbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb3BJbmZvICpMSSA9IG51bGxwdHIpOworSW5zdHJ1Y3Rpb24gKlNwbGl0QmxvY2tBbmRJbnNlcnRJZlRoZW4oVmFsdWUgKkNvbmQsIEluc3RydWN0aW9uICpTcGxpdEJlZm9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVW5yZWFjaGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRE5vZGUgKkJyYW5jaFdlaWdodHMgPSBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9taW5hdG9yVHJlZSAqRFQgPSBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9vcEluZm8gKkxJID0gbnVsbHB0cik7CiAKIC8vLyBTcGxpdEJsb2NrQW5kSW5zZXJ0SWZUaGVuRWxzZSBpcyBzaW1pbGFyIHRvIFNwbGl0QmxvY2tBbmRJbnNlcnRJZlRoZW4sCiAvLy8gYnV0IGFsc28gY3JlYXRlcyB0aGUgRWxzZUJsb2NrLgpAQCAtMjc4LDggKzI5Niw4IEBACiAvLy8gICBTcGxpdEJlZm9yZQogLy8vICAgVGFpbAogdm9pZCBTcGxpdEJsb2NrQW5kSW5zZXJ0SWZUaGVuRWxzZShWYWx1ZSAqQ29uZCwgSW5zdHJ1Y3Rpb24gKlNwbGl0QmVmb3JlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hdG9ySW5zdCAqKlRoZW5UZXJtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXJtaW5hdG9ySW5zdCAqKkVsc2VUZXJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiAqKlRoZW5UZXJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiAqKkVsc2VUZXJtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRE5vZGUgKkJyYW5jaFdlaWdodHMgPSBudWxscHRyKTsKIAogLy8vIENoZWNrIHdoZXRoZXIgQkIgaXMgdGhlIG1lcmdlIHBvaW50IG9mIGEgaWYtcmVnaW9uLgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0JyZWFrQ3JpdGljYWxFZGdlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0JyZWFrQ3JpdGljYWxFZGdlcy5oCmluZGV4IDljYzgxYTEuLjM2NDRmMWUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9CcmVha0NyaXRpY2FsRWRnZXMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvQnJlYWtDcml0aWNhbEVkZ2VzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQnJlYWtDcml0aWNhbEVkZ2VzLmggLSBDcml0aWNhbCBFZGdlIEVsaW1pbmF0aW9uIFBhc3MgLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9CdWlsZExpYkNhbGxzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvQnVpbGRMaWJDYWxscy5oCmluZGV4IGJkY2RmNmYuLjZjNjFjYmUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9CdWlsZExpYkNhbGxzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0J1aWxkTGliQ2FsbHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBCdWlsZExpYkNhbGxzLmggLSBVdGlsaXR5IGJ1aWxkZXIgZm9yIGxpYmNhbGxzIC0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjksNiArMjgsNyBAQAogICAvLy8KICAgLy8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgYXR0cmlidXRlcyB3ZXJlIHNldCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgogICBib29sIGluZmVyTGliRnVuY0F0dHJpYnV0ZXMoRnVuY3Rpb24gJkYsIGNvbnN0IFRhcmdldExpYnJhcnlJbmZvICZUTEkpOworICBib29sIGluZmVyTGliRnVuY0F0dHJpYnV0ZXMoTW9kdWxlICpNLCBTdHJpbmdSZWYgTmFtZSwgY29uc3QgVGFyZ2V0TGlicmFyeUluZm8gJlRMSSk7CiAKICAgLy8vIENoZWNrIHdoZXRoZXIgdGhlIG92ZXJsb2FkZWQgdW5hcnkgZmxvYXRpbmcgcG9pbnQgZnVuY3Rpb24KICAgLy8vIGNvcnJlc3BvbmRpbmcgdG8gXGEgVHkgaXMgYXZhaWxhYmxlLgpAQCAtMzYsNiArMzYsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgTGliRnVuYyBEb3VibGVGbiwgTGliRnVuYyBGbG9hdEZuLAogICAgICAgICAgICAgICAgICAgICAgICBMaWJGdW5jIExvbmdEb3VibGVGbik7CiAKKyAgLy8vIEdldCB0aGUgbmFtZSBvZiB0aGUgb3ZlcmxvYWRlZCB1bmFyeSBmbG9hdGluZyBwb2ludCBmdW5jdGlvbgorICAvLy8gY29ycmVzcG9uZGluZyB0byBcYSBUeS4KKyAgU3RyaW5nUmVmIGdldFVuYXJ5RmxvYXRGbihjb25zdCBUYXJnZXRMaWJyYXJ5SW5mbyAqVExJLCBUeXBlICpUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaWJGdW5jIERvdWJsZUZuLCBMaWJGdW5jIEZsb2F0Rm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGliRnVuYyBMb25nRG91YmxlRm4pOworCiAgIC8vLyBSZXR1cm4gViBpZiBpdCBpcyBhbiBpOCosIG90aGVyd2lzZSBjYXN0IGl0IHRvIGk4Ki4KICAgVmFsdWUgKmNhc3RUb0NTdHIoVmFsdWUgKlYsIElSQnVpbGRlcjw+ICZCKTsKIApAQCAtOTMsNiArOTksMTMgQEAKICAgVmFsdWUgKmVtaXRVbmFyeUZsb2F0Rm5DYWxsKFZhbHVlICpPcCwgU3RyaW5nUmVmIE5hbWUsIElSQnVpbGRlcjw+ICZCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTGlzdCAmQXR0cnMpOwogCisgIC8vLyBFbWl0IGEgY2FsbCB0byB0aGUgdW5hcnkgZnVuY3Rpb24gRG91YmxlRm4sIEZsb2F0Rm4gb3IgTG9uZ0RvdWJsZUZuLAorICAvLy8gZGVwZW5kaW5nIG9mIHRoZSB0eXBlIG9mIE9wLgorICBWYWx1ZSAqZW1pdFVuYXJ5RmxvYXRGbkNhbGwoVmFsdWUgKk9wLCBjb25zdCBUYXJnZXRMaWJyYXJ5SW5mbyAqVExJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGliRnVuYyBEb3VibGVGbiwgTGliRnVuYyBGbG9hdEZuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGliRnVuYyBMb25nRG91YmxlRm4sIElSQnVpbGRlcjw+ICZCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTGlzdCAmQXR0cnMpOworCiAgIC8vLyBFbWl0IGEgY2FsbCB0byB0aGUgYmluYXJ5IGZ1bmN0aW9uIG5hbWVkICdOYW1lJyAoZS5nLiAnZm1pbicpLiBUaGlzCiAgIC8vLyBmdW5jdGlvbiBpcyBrbm93biB0byB0YWtlIHR5cGUgbWF0Y2hpbmcgJ09wMScgYW5kICdPcDInIGFuZCByZXR1cm4gb25lCiAgIC8vLyB2YWx1ZSB3aXRoIHRoZSBzYW1lIHR5cGUuIElmICdPcDEvT3AyJyBhcmUgbG9uZyBkb3VibGUsICdsJyBpcyBhZGRlZCBhcwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0J5cGFzc1Nsb3dEaXZpc2lvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0J5cGFzc1Nsb3dEaXZpc2lvbi5oCmluZGV4IDZlY2E1ZWQuLjQ3MTA1NTkgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9CeXBhc3NTbG93RGl2aXNpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvQnlwYXNzU2xvd0RpdmlzaW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0J5cGFzc1Nsb3dEaXZpc2lvbi5oIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9DYWxsUHJvbW90aW9uVXRpbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9DYWxsUHJvbW90aW9uVXRpbHMuaAppbmRleCA2ZThlY2U3Li5kOWQxNzFjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvQ2FsbFByb21vdGlvblV0aWxzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0NhbGxQcm9tb3Rpb25VdGlscy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIENhbGxQcm9tb3Rpb25VdGlscy5oIC0gVXRpbGl0aWVzIGZvciBjYWxsIHByb21vdGlvbiAtLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvQ2Fub25pY2FsaXplQWxpYXNlcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0Nhbm9uaWNhbGl6ZUFsaWFzZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjIzYTA0Ci0tLSAvZGV2L251bGwKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0Nhbm9uaWNhbGl6ZUFsaWFzZXMuaApAQCAtMCwwICsxLDMxIEBACisvLz09PS0tIENhbm9uaWNhbGl6ZUFsaWFzZXMuaCAtIEFsaWFzIENhbm9uaWNhbGl6YXRpb24gUGFzcyAtLS0tLSotIEMrKyAtKi09PT0vLworLy8KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KKy8vCisvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLworLy8KKy8vIFRoaXMgZmlsZSBjYW5vbmljYWxpemVzIGFsaWFzZXMuCisvLworLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KKworI2lmbmRlZiBMTFZNX1RSQU5TRk9STVNfVVRJTFNfQ0FOT05JQ0FMSVpFX0FMSUFTRVNfSAorI2RlZmluZSBMTFZNX1RSQU5TRk9STVNfVVRJTFNfQ0FOT05JQ0FMSVpFX0FMSUFTRVNfSAorCisjaW5jbHVkZSAibGx2bS9JUi9Nb2R1bGUuaCIKKyNpbmNsdWRlICJsbHZtL0lSL1Bhc3NNYW5hZ2VyLmgiCisKK25hbWVzcGFjZSBsbHZtIHsKKworLy8vIFNpbXBsZSBwYXNzIHRoYXQgY2Fub25pY2FsaXplcyBhbGlhc2VzLgorY2xhc3MgQ2Fub25pY2FsaXplQWxpYXNlc1Bhc3MgOiBwdWJsaWMgUGFzc0luZm9NaXhpbjxDYW5vbmljYWxpemVBbGlhc2VzUGFzcz4geworcHVibGljOgorICBDYW5vbmljYWxpemVBbGlhc2VzUGFzcygpID0gZGVmYXVsdDsKKworICBQcmVzZXJ2ZWRBbmFseXNlcyBydW4oTW9kdWxlICZNLCBNb2R1bGVBbmFseXNpc01hbmFnZXIgJkFNKTsKK307CisKK30gLy8gZW5kIG5hbWVzcGFjZSBsbHZtCisKKyNlbmRpZiAvLyBMTFZNX1RSQU5TRk9STVNfVVRJTFNfQ0FOT05JQ0FMSVpFX0FMSUFTRVNICmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvQ2xvbmluZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0Nsb25pbmcuaAppbmRleCBlNGQ2MDUzLi44Njc3NWIxIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvQ2xvbmluZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9DbG9uaW5nLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ2xvbmluZy5oIC0gQ2xvbmUgdmFyaW91cyBwYXJ0cyBvZiBMTFZNIHByb2dyYW1zIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTQ3LDkgKzQ2LDkgQEAKIGNsYXNzIE1vZHVsZTsKIGNsYXNzIFByb2ZpbGVTdW1tYXJ5SW5mbzsKIGNsYXNzIFJldHVybkluc3Q7CitjbGFzcyBEb21UcmVlVXBkYXRlcjsKIAogLy8vIFJldHVybiBhbiBleGFjdCBjb3B5IG9mIHRoZSBzcGVjaWZpZWQgbW9kdWxlCi0vLy8KIHN0ZDo6dW5pcXVlX3B0cjxNb2R1bGU+IENsb25lTW9kdWxlKGNvbnN0IE1vZHVsZSAmTSk7CiBzdGQ6OnVuaXF1ZV9wdHI8TW9kdWxlPiBDbG9uZU1vZHVsZShjb25zdCBNb2R1bGUgJk0sIFZhbHVlVG9WYWx1ZU1hcFR5ICZWTWFwKTsKIApAQCAtNjEsMTcgKzYwLDE1IEBACiBDbG9uZU1vZHVsZShjb25zdCBNb2R1bGUgJk0sIFZhbHVlVG9WYWx1ZU1hcFR5ICZWTWFwLAogICAgICAgICAgICAgZnVuY3Rpb25fcmVmPGJvb2woY29uc3QgR2xvYmFsVmFsdWUgKik+IFNob3VsZENsb25lRGVmaW5pdGlvbik7CiAKLS8vLyBDbG9uZWRDb2RlSW5mbyAtIFRoaXMgc3RydWN0IGNhbiBiZSB1c2VkIHRvIGNhcHR1cmUgaW5mb3JtYXRpb24gYWJvdXQgY29kZQorLy8vIFRoaXMgc3RydWN0IGNhbiBiZSB1c2VkIHRvIGNhcHR1cmUgaW5mb3JtYXRpb24gYWJvdXQgY29kZQogLy8vIGJlaW5nIGNsb25lZCwgd2hpbGUgaXQgaXMgYmVpbmcgY2xvbmVkLgogc3RydWN0IENsb25lZENvZGVJbmZvIHsKLSAgLy8vIENvbnRhaW5zQ2FsbHMgLSBUaGlzIGlzIHNldCB0byB0cnVlIGlmIHRoZSBjbG9uZWQgY29kZSBjb250YWlucyBhIG5vcm1hbAotICAvLy8gY2FsbCBpbnN0cnVjdGlvbi4KKyAgLy8vIFRoaXMgaXMgc2V0IHRvIHRydWUgaWYgdGhlIGNsb25lZCBjb2RlIGNvbnRhaW5zIGEgbm9ybWFsIGNhbGwgaW5zdHJ1Y3Rpb24uCiAgIGJvb2wgQ29udGFpbnNDYWxscyA9IGZhbHNlOwogCi0gIC8vLyBDb250YWluc0R5bmFtaWNBbGxvY2FzIC0gVGhpcyBpcyBzZXQgdG8gdHJ1ZSBpZiB0aGUgY2xvbmVkIGNvZGUgY29udGFpbnMKLSAgLy8vIGEgJ2R5bmFtaWMnIGFsbG9jYS4gIER5bmFtaWMgYWxsb2NhcyBhcmUgYWxsb2NhcyB0aGF0IGFyZSBlaXRoZXIgbm90IGluCi0gIC8vLyB0aGUgZW50cnkgYmxvY2sgb3IgdGhleSBhcmUgaW4gdGhlIGVudHJ5IGJsb2NrIGJ1dCBhcmUgbm90IGEgY29uc3RhbnQKLSAgLy8vIHNpemUuCisgIC8vLyBUaGlzIGlzIHNldCB0byB0cnVlIGlmIHRoZSBjbG9uZWQgY29kZSBjb250YWlucyBhICdkeW5hbWljJyBhbGxvY2EuCisgIC8vLyBEeW5hbWljIGFsbG9jYXMgYXJlIGFsbG9jYXMgdGhhdCBhcmUgZWl0aGVyIG5vdCBpbiB0aGUgZW50cnkgYmxvY2sgb3IgdGhleQorICAvLy8gYXJlIGluIHRoZSBlbnRyeSBibG9jayBidXQgYXJlIG5vdCBhIGNvbnN0YW50IHNpemUuCiAgIGJvb2wgQ29udGFpbnNEeW5hbWljQWxsb2NhcyA9IGZhbHNlOwogCiAgIC8vLyBBbGwgY2xvbmVkIGNhbGwgc2l0ZXMgdGhhdCBoYXZlIG9wZXJhbmQgYnVuZGxlcyBhdHRhY2hlZCBhcmUgYXBwZW5kZWQgdG8KQEAgLTgyLDcgKzc5LDcgQEAKICAgQ2xvbmVkQ29kZUluZm8oKSA9IGRlZmF1bHQ7CiB9OwogCi0vLy8gQ2xvbmVCYXNpY0Jsb2NrIC0gUmV0dXJuIGEgY29weSBvZiB0aGUgc3BlY2lmaWVkIGJhc2ljIGJsb2NrLCBidXQgd2l0aG91dAorLy8vIFJldHVybiBhIGNvcHkgb2YgdGhlIHNwZWNpZmllZCBiYXNpYyBibG9jaywgYnV0IHdpdGhvdXQKIC8vLyBlbWJlZGRpbmcgdGhlIGJsb2NrIGludG8gYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uLiAgVGhlIGJsb2NrIHJldHVybmVkIGlzIGFuCiAvLy8gZXhhY3QgY29weSBvZiB0aGUgc3BlY2lmaWVkIGJhc2ljIGJsb2NrLCB3aXRob3V0IGFueSByZW1hcHBpbmcgaGF2aW5nIGJlZW4KIC8vLyBwZXJmb3JtZWQuICBCZWNhdXNlIG9mIHRoaXMsIHRoaXMgaXMgb25seSBzdWl0YWJsZSBmb3IgYXBwbGljYXRpb25zIHdoZXJlCkBAIC0xMDksMTMgKzEwNiwxMiBAQAogLy8vIElmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbGxlY3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2xvbmVkCiAvLy8gZnVuY3Rpb24sIHlvdSBjYW4gc3BlY2lmeSBhIENsb25lZENvZGVJbmZvIG9iamVjdCB3aXRoIHRoZSBvcHRpb25hbCBmaWZ0aAogLy8vIHBhcmFtZXRlci4KLS8vLwogQmFzaWNCbG9jayAqQ2xvbmVCYXNpY0Jsb2NrKGNvbnN0IEJhc2ljQmxvY2sgKkJCLCBWYWx1ZVRvVmFsdWVNYXBUeSAmVk1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUd2luZSAmTmFtZVN1ZmZpeCA9ICIiLCBGdW5jdGlvbiAqRiA9IG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvbmVkQ29kZUluZm8gKkNvZGVJbmZvID0gbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWJ1Z0luZm9GaW5kZXIgKkRJRmluZGVyID0gbnVsbHB0cik7CiAKLS8vLyBDbG9uZUZ1bmN0aW9uIC0gUmV0dXJuIGEgY29weSBvZiB0aGUgc3BlY2lmaWVkIGZ1bmN0aW9uIGFuZCBhZGQgaXQgdG8gdGhhdAorLy8vIFJldHVybiBhIGNvcHkgb2YgdGhlIHNwZWNpZmllZCBmdW5jdGlvbiBhbmQgYWRkIGl0IHRvIHRoYXQKIC8vLyBmdW5jdGlvbidzIG1vZHVsZS4gIEFsc28sIGFueSByZWZlcmVuY2VzIHNwZWNpZmllZCBpbiB0aGUgVk1hcCBhcmUgY2hhbmdlZAogLy8vIHRvIHJlZmVyIHRvIHRoZWlyIG1hcHBlZCB2YWx1ZSBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCBvbmUuICBJZiBhbnkgb2YgdGhlCiAvLy8gYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbiBhcmUgaW4gdGhlIFZNYXAsIHRoZSBhcmd1bWVudHMgYXJlIGRlbGV0ZWQgZnJvbQpAQCAtMTU0LDcgKzE1MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqTmFtZVN1ZmZpeCA9ICIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb25lZENvZGVJbmZvICpDb2RlSW5mbyA9IG51bGxwdHIpOwogCi0vLy8gQ2xvbmVBbmRQcnVuZUZ1bmN0aW9uSW50byAtIFRoaXMgd29ya3MgZXhhY3RseSBsaWtlIENsb25lRnVuY3Rpb25JbnRvLAorLy8vIFRoaXMgd29ya3MgZXhhY3RseSBsaWtlIENsb25lRnVuY3Rpb25JbnRvLAogLy8vIGV4Y2VwdCB0aGF0IGl0IGRvZXMgc29tZSBzaW1wbGUgY29uc3RhbnQgcHJvcCBhbmQgRENFIG9uIHRoZSBmbHkuICBUaGUKIC8vLyBlZmZlY3Qgb2YgdGhpcyBpcyB0byBjb3B5IHNpZ25pZmljYW50bHkgbGVzcyBjb2RlIGluIGNhc2VzIHdoZXJlIChmb3IKIC8vLyBleGFtcGxlKSBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBjb25zdGFudCBhcmd1bWVudHMgaXMgaW5saW5lZCwgYW5kIHRob3NlCkBAIC0xNzIsOCArMTY4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9uZWRDb2RlSW5mbyAqQ29kZUluZm8gPSBudWxscHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpUaGVDYWxsID0gbnVsbHB0cik7CiAKLS8vLyBJbmxpbmVGdW5jdGlvbkluZm8gLSBUaGlzIGNsYXNzIGNhcHR1cmVzIHRoZSBkYXRhIGlucHV0IHRvIHRoZQotLy8vIElubGluZUZ1bmN0aW9uIGNhbGwsIGFuZCByZWNvcmRzIHRoZSBhdXhpbGlhcnkgcmVzdWx0cyBwcm9kdWNlZCBieSBpdC4KKy8vLyBUaGlzIGNsYXNzIGNhcHR1cmVzIHRoZSBkYXRhIGlucHV0IHRvIHRoZSBJbmxpbmVGdW5jdGlvbiBjYWxsLCBhbmQgcmVjb3JkcworLy8vIHRoZSBhdXhpbGlhcnkgcmVzdWx0cyBwcm9kdWNlZCBieSBpdC4KIGNsYXNzIElubGluZUZ1bmN0aW9uSW5mbyB7CiBwdWJsaWM6CiAgIGV4cGxpY2l0IElubGluZUZ1bmN0aW9uSW5mbyhDYWxsR3JhcGggKmNnID0gbnVsbHB0ciwKQEAgLTE4NSwxOSArMTgxLDE5IEBACiAgICAgICA6IENHKGNnKSwgR2V0QXNzdW1wdGlvbkNhY2hlKEdldEFzc3VtcHRpb25DYWNoZSksIFBTSShQU0kpLAogICAgICAgICBDYWxsZXJCRkkoQ2FsbGVyQkZJKSwgQ2FsbGVlQkZJKENhbGxlZUJGSSkge30KIAotICAvLy8gQ0cgLSBJZiBub24tbnVsbCwgSW5saW5lRnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIGNhbGxncmFwaCB0byByZWZsZWN0IHRoZQorICAvLy8gSWYgbm9uLW51bGwsIElubGluZUZ1bmN0aW9uIHdpbGwgdXBkYXRlIHRoZSBjYWxsZ3JhcGggdG8gcmVmbGVjdCB0aGUKICAgLy8vIGNoYW5nZXMgaXQgbWFrZXMuCiAgIENhbGxHcmFwaCAqQ0c7CiAgIHN0ZDo6ZnVuY3Rpb248QXNzdW1wdGlvbkNhY2hlICYoRnVuY3Rpb24gJik+ICpHZXRBc3N1bXB0aW9uQ2FjaGU7CiAgIFByb2ZpbGVTdW1tYXJ5SW5mbyAqUFNJOwogICBCbG9ja0ZyZXF1ZW5jeUluZm8gKkNhbGxlckJGSSwgKkNhbGxlZUJGSTsKIAotICAvLy8gU3RhdGljQWxsb2NhcyAtIElubGluZUZ1bmN0aW9uIGZpbGxzIHRoaXMgaW4gd2l0aCBhbGwgc3RhdGljIGFsbG9jYXMgdGhhdAotICAvLy8gZ2V0IGNvcGllZCBpbnRvIHRoZSBjYWxsZXIuCisgIC8vLyBJbmxpbmVGdW5jdGlvbiBmaWxscyB0aGlzIGluIHdpdGggYWxsIHN0YXRpYyBhbGxvY2FzIHRoYXQgZ2V0IGNvcGllZCBpbnRvCisgIC8vLyB0aGUgY2FsbGVyLgogICBTbWFsbFZlY3RvcjxBbGxvY2FJbnN0ICosIDQ+IFN0YXRpY0FsbG9jYXM7CiAKLSAgLy8vIElubGluZWRDYWxscyAtIElubGluZUZ1bmN0aW9uIGZpbGxzIHRoaXMgaW4gd2l0aCBjYWxsc2l0ZXMgdGhhdCB3ZXJlCi0gIC8vLyBpbmxpbmVkIGZyb20gdGhlIGNhbGxlZS4gIFRoaXMgaXMgb25seSBmaWxsZWQgaW4gaWYgQ0cgaXMgbm9uLW51bGwuCisgIC8vLyBJbmxpbmVGdW5jdGlvbiBmaWxscyB0aGlzIGluIHdpdGggY2FsbHNpdGVzIHRoYXQgd2VyZSBpbmxpbmVkIGZyb20gdGhlCisgIC8vLyBjYWxsZWUuIFRoaXMgaXMgb25seSBmaWxsZWQgaW4gaWYgQ0cgaXMgbm9uLW51bGwuCiAgIFNtYWxsVmVjdG9yPFdlYWtUcmFja2luZ1ZILCA4PiBJbmxpbmVkQ2FsbHM7CiAKICAgLy8vIEFsbCBvZiB0aGUgbmV3IGNhbGwgc2l0ZXMgaW5saW5lZCBpbnRvIHRoZSBjYWxsZXIuCkBAIC0yMTQsNyArMjEwLDcgQEAKICAgfQogfTsKIAotLy8vIElubGluZUZ1bmN0aW9uIC0gVGhpcyBmdW5jdGlvbiBpbmxpbmVzIHRoZSBjYWxsZWQgZnVuY3Rpb24gaW50byB0aGUgYmFzaWMKKy8vLyBUaGlzIGZ1bmN0aW9uIGlubGluZXMgdGhlIGNhbGxlZCBmdW5jdGlvbiBpbnRvIHRoZSBiYXNpYwogLy8vIGJsb2NrIG9mIHRoZSBjYWxsZXIuICBUaGlzIHJldHVybnMgZmFsc2UgaWYgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGlubGluZQogLy8vIHRoaXMgY2FsbC4gIFRoZSBwcm9ncmFtIGlzIHN0aWxsIGluIGEgd2VsbCBkZWZpbmVkIHN0YXRlIGlmIHRoaXMgb2NjdXJzCiAvLy8gdGhvdWdoLgpAQCAtMjY2LDExICsyNjIsMTkgQEAKIC8vLyB3ZSByZXBsYWNlIHRoZW0gd2l0aCB0aGUgdXNlcyBvZiBjb3JyZXNwb25kaW5nIFBoaSBpbnB1dHMuIFZhbHVlTWFwcGluZwogLy8vIGlzIHVzZWQgdG8gbWFwIHRoZSBvcmlnaW5hbCBpbnN0cnVjdGlvbnMgZnJvbSBCQiB0byB0aGVpciBuZXdseS1jcmVhdGVkCiAvLy8gY29waWVzLiBSZXR1cm5zIHRoZSBzcGxpdCBibG9jay4KLUJhc2ljQmxvY2sgKgotRHVwbGljYXRlSW5zdHJ1Y3Rpb25zSW5TcGxpdEJldHdlZW4oQmFzaWNCbG9jayAqQkIsIEJhc2ljQmxvY2sgKlByZWRCQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3RydWN0aW9uICpTdG9wQXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZVRvVmFsdWVNYXBUeSAmVmFsdWVNYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9taW5hdG9yVHJlZSAqRFQgPSBudWxscHRyKTsKK0Jhc2ljQmxvY2sgKkR1cGxpY2F0ZUluc3RydWN0aW9uc0luU3BsaXRCZXR3ZWVuKEJhc2ljQmxvY2sgKkJCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayAqUHJlZEJCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5zdHJ1Y3Rpb24gKlN0b3BBdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlVG9WYWx1ZU1hcFR5ICZWYWx1ZU1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb21UcmVlVXBkYXRlciAmRFRVKTsKKworLy8vIFVwZGF0ZXMgcHJvZmlsZSBpbmZvcm1hdGlvbiBieSBhZGp1c3RpbmcgdGhlIGVudHJ5IGNvdW50IGJ5IGFkZGluZworLy8vIGVudHJ5RGVsdGEgdGhlbiBzY2FsaW5nIGNhbGxzaXRlIGluZm9ybWF0aW9uIGJ5IHRoZSBuZXcgY291bnQgZGl2aWRlZCBieSB0aGUKKy8vLyBvbGQgY291bnQuIFZNYXAgaXMgdXNlZCBkdXJpbmcgaW5saW5uZyB0byBhbHNvIHVwZGF0ZSB0aGUgbmV3IGNsb25lCit2b2lkIHVwZGF0ZVByb2ZpbGVDYWxsZWUoCisgICAgRnVuY3Rpb24gKkNhbGxlZSwgaW50NjRfdCBlbnRyeURlbHRhLAorICAgIGNvbnN0IFZhbHVlTWFwPGNvbnN0IFZhbHVlICosIFdlYWtUcmFja2luZ1ZIPiAqVk1hcCA9IG51bGxwdHIpOworCiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQogCiAjZW5kaWYgLy8gTExWTV9UUkFOU0ZPUk1TX1VUSUxTX0NMT05JTkdfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0NvZGVFeHRyYWN0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9Db2RlRXh0cmFjdG9yLmgKaW5kZXggMGU1MjU0YS4uYmVjYmYwZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0NvZGVFeHRyYWN0b3IuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvQ29kZUV4dHJhY3Rvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFRyYW5zZm9ybS9VdGlscy9Db2RlRXh0cmFjdG9yLmggLSBDb2RlIGV4dHJhY3Rpb24gdXRpbCAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xOCw2ICsxNyw3IEBACiAjaW5jbHVkZSAibGx2bS9BRFQvQXJyYXlSZWYuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9EZW5zZU1hcC5oIgogI2luY2x1ZGUgImxsdm0vQURUL1NldFZlY3Rvci5oIgorI2luY2x1ZGUgImxsdm0vQURUL1NtYWxsUHRyU2V0LmgiCiAjaW5jbHVkZSA8bGltaXRzPgogCiBuYW1lc3BhY2UgbGx2bSB7CkBAIC0yNiw2ICsyNiw4IEBACiBjbGFzcyBCbG9ja0ZyZXF1ZW5jeTsKIGNsYXNzIEJsb2NrRnJlcXVlbmN5SW5mbzsKIGNsYXNzIEJyYW5jaFByb2JhYmlsaXR5SW5mbzsKK2NsYXNzIEFzc3VtcHRpb25DYWNoZTsKK2NsYXNzIENhbGxJbnN0OwogY2xhc3MgRG9taW5hdG9yVHJlZTsKIGNsYXNzIEZ1bmN0aW9uOwogY2xhc3MgSW5zdHJ1Y3Rpb247CkBAIC01NSw2ICs1Nyw3IEBACiAgICAgY29uc3QgYm9vbCBBZ2dyZWdhdGVBcmdzOwogICAgIEJsb2NrRnJlcXVlbmN5SW5mbyAqQkZJOwogICAgIEJyYW5jaFByb2JhYmlsaXR5SW5mbyAqQlBJOworICAgIEFzc3VtcHRpb25DYWNoZSAqQUM7CiAKICAgICAvLyBJZiB0cnVlLCB2YXJhcmdzIGZ1bmN0aW9ucyBjYW4gYmUgZXh0cmFjdGVkLgogICAgIGJvb2wgQWxsb3dWYXJBcmdzOwpAQCAtNjQsNiArNjcsMTEgQEAKICAgICB1bnNpZ25lZCBOdW1FeGl0QmxvY2tzID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpOwogICAgIFR5cGUgKlJldFR5OwogCisgICAgLy8gU3VmZml4IHRvIHVzZSB3aGVuIGNyZWF0aW5nIGV4dHJhY3RlZCBmdW5jdGlvbiAoYXBwZW5kZWQgdG8gdGhlIG9yaWdpbmFsCisgICAgLy8gZnVuY3Rpb24gbmFtZSArICIuIikuIElmIGVtcHR5LCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIGVudHJ5IGJsb2NrCisgICAgLy8gbGFiZWwsIGlmIG5vbi1lbXB0eSwgb3RoZXJ3aXNlICJleHRyYWN0ZWQiLgorICAgIHN0ZDo6c3RyaW5nIFN1ZmZpeDsKKwogICBwdWJsaWM6CiAgICAgLy8vIENyZWF0ZSBhIGNvZGUgZXh0cmFjdG9yIGZvciBhIHNlcXVlbmNlIG9mIGJsb2Nrcy4KICAgICAvLy8KQEAgLTc4LDcgKzg2LDkgQEAKICAgICBDb2RlRXh0cmFjdG9yKEFycmF5UmVmPEJhc2ljQmxvY2sgKj4gQkJzLCBEb21pbmF0b3JUcmVlICpEVCA9IG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICBib29sIEFnZ3JlZ2F0ZUFyZ3MgPSBmYWxzZSwgQmxvY2tGcmVxdWVuY3lJbmZvICpCRkkgPSBudWxscHRyLAogICAgICAgICAgICAgICAgICAgQnJhbmNoUHJvYmFiaWxpdHlJbmZvICpCUEkgPSBudWxscHRyLAotICAgICAgICAgICAgICAgICAgYm9vbCBBbGxvd1ZhckFyZ3MgPSBmYWxzZSwgYm9vbCBBbGxvd0FsbG9jYSA9IGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgIEFzc3VtcHRpb25DYWNoZSAqQUMgPSBudWxscHRyLAorICAgICAgICAgICAgICAgICAgYm9vbCBBbGxvd1ZhckFyZ3MgPSBmYWxzZSwgYm9vbCBBbGxvd0FsbG9jYSA9IGZhbHNlLAorICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgU3VmZml4ID0gIiIpOwogCiAgICAgLy8vIENyZWF0ZSBhIGNvZGUgZXh0cmFjdG9yIGZvciBhIGxvb3AgYm9keS4KICAgICAvLy8KQEAgLTg2LDcgKzk2LDkgQEAKICAgICAvLy8gYmxvY2sgc2VxdWVuY2Ugb2YgdGhlIGxvb3AuCiAgICAgQ29kZUV4dHJhY3RvcihEb21pbmF0b3JUcmVlICZEVCwgTG9vcCAmTCwgYm9vbCBBZ2dyZWdhdGVBcmdzID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICBCbG9ja0ZyZXF1ZW5jeUluZm8gKkJGSSA9IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICBCcmFuY2hQcm9iYWJpbGl0eUluZm8gKkJQSSA9IG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgQnJhbmNoUHJvYmFiaWxpdHlJbmZvICpCUEkgPSBudWxscHRyLAorICAgICAgICAgICAgICAgICAgQXNzdW1wdGlvbkNhY2hlICpBQyA9IG51bGxwdHIsCisgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBTdWZmaXggPSAiIik7CiAKICAgICAvLy8gUGVyZm9ybSB0aGUgZXh0cmFjdGlvbiwgcmV0dXJuaW5nIHRoZSBuZXcgZnVuY3Rpb24uCiAgICAgLy8vCkBAIC0xMzksNyArMTUxLDggQEAKICAgICBCYXNpY0Jsb2NrICpmaW5kT3JDcmVhdGVCbG9ja0ZvckhvaXN0aW5nKEJhc2ljQmxvY2sgKkNvbW1vbkV4aXRCbG9jayk7CiAKICAgcHJpdmF0ZToKLSAgICB2b2lkIHNldmVyU3BsaXRQSElOb2RlcyhCYXNpY0Jsb2NrIComSGVhZGVyKTsKKyAgICB2b2lkIHNldmVyU3BsaXRQSElOb2Rlc09mRW50cnkoQmFzaWNCbG9jayAqJkhlYWRlcik7CisgICAgdm9pZCBzZXZlclNwbGl0UEhJTm9kZXNPZkV4aXRzKGNvbnN0IFNtYWxsUHRyU2V0SW1wbDxCYXNpY0Jsb2NrICo+ICZFeGl0cyk7CiAgICAgdm9pZCBzcGxpdFJldHVybkJsb2NrcygpOwogCiAgICAgRnVuY3Rpb24gKmNvbnN0cnVjdEZ1bmN0aW9uKGNvbnN0IFZhbHVlU2V0ICZpbnB1dHMsCkBAIC0xNTUsMTAgKzE2OCw5IEBACiAgICAgICAgIERlbnNlTWFwPEJhc2ljQmxvY2sgKiwgQmxvY2tGcmVxdWVuY3k+ICZFeGl0V2VpZ2h0cywKICAgICAgICAgQnJhbmNoUHJvYmFiaWxpdHlJbmZvICpCUEkpOwogCi0gICAgdm9pZCBlbWl0Q2FsbEFuZFN3aXRjaFN0YXRlbWVudChGdW5jdGlvbiAqbmV3RnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY0Jsb2NrICpuZXdIZWFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZVNldCAmaW5wdXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVTZXQgJm91dHB1dHMpOworICAgIENhbGxJbnN0ICplbWl0Q2FsbEFuZFN3aXRjaFN0YXRlbWVudChGdW5jdGlvbiAqbmV3RnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sgKm5ld0hlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVTZXQgJmlucHV0cywgVmFsdWVTZXQgJm91dHB1dHMpOwogICB9OwogCiB9IC8vIGVuZCBuYW1lc3BhY2UgbGx2bQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0N0b3JVdGlscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0N0b3JVdGlscy5oCmluZGV4IDYzZTU2NGQuLjM2MjVlZTYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9DdG9yVXRpbHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvQ3RvclV0aWxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQ3RvclV0aWxzLmggLSBIZWxwZXJzIGZvciB3b3JraW5nIHdpdGggZ2xvYmFsX2N0b3JzIC0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9FbnRyeUV4aXRJbnN0cnVtZW50ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9FbnRyeUV4aXRJbnN0cnVtZW50ZXIuaAppbmRleCBmNTBjNWM5Li4zOTEzNjkzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvRW50cnlFeGl0SW5zdHJ1bWVudGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0VudHJ5RXhpdEluc3RydW1lbnRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEVudHJ5RXhpdEluc3RydW1lbnRlci5oIC0gRnVuY3Rpb24gRW50cnkvRXhpdCBJbnN0cnVtZW50YXRpb24gLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvRXNjYXBlRW51bWVyYXRvci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0VzY2FwZUVudW1lcmF0b3IuaAppbmRleCAxMjU2ZGZkLi5lNjY3Nzk2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvRXNjYXBlRW51bWVyYXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9Fc2NhcGVFbnVtZXJhdG9yLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIEVzY2FwZUVudW1lcmF0b3IuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9FdmFsdWF0b3IuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9FdmFsdWF0b3IuaAppbmRleCA5OTA4YWU2Li5iZmZkNjVmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvRXZhbHVhdG9yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0V2YWx1YXRvci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEV2YWx1YXRvci5oIC0gTExWTSBJUiBldmFsdWF0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvRnVuY3Rpb25Db21wYXJhdG9yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvRnVuY3Rpb25Db21wYXJhdG9yLmgKaW5kZXggMzViYTA5NS4uNGUyNTcxYiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0Z1bmN0aW9uQ29tcGFyYXRvci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9GdW5jdGlvbkNvbXBhcmF0b3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBGdW5jdGlvbkNvbXBhcmF0b3IuaCAtIEZ1bmN0aW9uIENvbXBhcmF0b3IgLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0Z1bmN0aW9uSW1wb3J0VXRpbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9GdW5jdGlvbkltcG9ydFV0aWxzLmgKaW5kZXggYjlmYmVmMC4uOWMyYTllYSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0Z1bmN0aW9uSW1wb3J0VXRpbHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvRnVuY3Rpb25JbXBvcnRVdGlscy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEZ1bmN0aW9uSW1wb3J0VXRpbHMuaCAtIEltcG9ydGluZyBzdXBwb3J0IHV0aWxpdGllcyAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTQ0LDYgKzQzLDExIEBACiAgIC8vLyB0byBwcm9tb3RlIGFueSBub24tcmVuYW1hYmxlIHZhbHVlcy4KICAgU21hbGxQdHJTZXQ8R2xvYmFsVmFsdWUgKiwgOD4gVXNlZDsKIAorICAvLy8gS2VlcCB0cmFjayBvZiBhbnkgQ09NREFUcyB0aGF0IHJlcXVpcmUgcmVuYW1pbmcgKGJlY2F1c2UgQ09NREFUCisgIC8vLyBsZWFkZXIgd2FzIHByb21vdGVkIGFuZCByZW5hbWVkKS4gTWFwcyBmcm9tIG9yaWdpbmFsIENPTURBVCB0byBvbmUKKyAgLy8vIHdpdGggbmV3IG5hbWUuCisgIERlbnNlTWFwPGNvbnN0IENvbWRhdCAqLCBDb21kYXQgKj4gUmVuYW1lZENvbWRhdHM7CisKICAgLy8vIENoZWNrIGlmIHdlIHNob3VsZCBwcm9tb3RlIHRoZSBnaXZlbiBsb2NhbCB2YWx1ZSB0byBnbG9iYWwgc2NvcGUuCiAgIGJvb2wgc2hvdWxkUHJvbW90ZUxvY2FsVG9HbG9iYWwoY29uc3QgR2xvYmFsVmFsdWUgKlNHVik7CiAKQEAgLTExNCw2ICsxMTgsOSBAQAogICAgIE1vZHVsZSAmTSwgY29uc3QgTW9kdWxlU3VtbWFyeUluZGV4ICZJbmRleCwKICAgICBTZXRWZWN0b3I8R2xvYmFsVmFsdWUgKj4gKkdsb2JhbHNUb0ltcG9ydCA9IG51bGxwdHIpOwogCisvLy8gQ29tcHV0ZSBzeW50aGV0aWMgZnVuY3Rpb24gZW50cnkgY291bnRzLgordm9pZCBjb21wdXRlU3ludGhldGljQ291bnRzKE1vZHVsZVN1bW1hcnlJbmRleCAmSW5kZXgpOworCiB9IC8vIEVuZCBsbHZtIG5hbWVzcGFjZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9HbG9iYWxTdGF0dXMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9HbG9iYWxTdGF0dXMuaAppbmRleCA4Y2MyNjViLi41MTk1OTNjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvR2xvYmFsU3RhdHVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0dsb2JhbFN0YXR1cy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEdsb2JhbFN0YXR1cy5oIC0gQ29tcHV0ZSBzdGF0dXMgaW5mbyBmb3IgZ2xvYmFscyAtLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0d1YXJkVXRpbHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9HdWFyZFV0aWxzLmgKaW5kZXggNTM3MDQ1ZS4uM2IzNjVjNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0d1YXJkVXRpbHMuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvR3VhcmRVdGlscy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBHdWFyZFV0aWxzLmggLSBVdGlscyBmb3Igd29yayB3aXRoIGd1YXJkcyAtLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vIFV0aWxzIHRoYXQgYXJlIHVzZWQgdG8gcGVyZm9ybSB0cmFuc2Zvcm1hdGlvbnMgcmVsYXRlZCB0byBndWFyZHMgYW5kIHRoZWlyCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvSW1wb3J0ZWRGdW5jdGlvbnNJbmxpbmluZ1N0YXRpc3RpY3MuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9JbXBvcnRlZEZ1bmN0aW9uc0lubGluaW5nU3RhdGlzdGljcy5oCmluZGV4IGI1NWE5ODkuLjAzM2VhMDUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9JbXBvcnRlZEZ1bmN0aW9uc0lubGluaW5nU3RhdGlzdGljcy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9JbXBvcnRlZEZ1bmN0aW9uc0lubGluaW5nU3RhdGlzdGljcy5oCkBAIC0xLDkgKzEsOCBAQAotLy89PT0tLSBJbXBvcnRlZEZ1bmN0aW9uc0lubGluaW5nU3RhdHMuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KKy8vPT09LS0gSW1wb3J0ZWRGdW5jdGlvbnNJbmxpbmluZ1N0YXRpc3RpY3MuaCAtLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLyBHZW5lcmF0aW5nIGlubGluZXIgc3RhdGlzdGljcyBmb3IgaW1wb3J0ZWQgZnVuY3Rpb25zLCBtb3N0bHkgdXNlZnVsIGZvcgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0ludGVnZXJEaXZpc2lvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0ludGVnZXJEaXZpc2lvbi5oCmluZGV4IDVkOTkyN2UuLjM1Y2FlOWEgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9JbnRlZ2VyRGl2aXNpb24uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvSW50ZWdlckRpdmlzaW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0ludGVnZXJEaXZpc2lvbi5oIC0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9MQ1NTQS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0xDU1NBLmgKaW5kZXggZmU3MTdlNS4uYjAxYzgwMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0xDU1NBLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0xDU1NBLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTENTU0EuaCAtIExvb3AtY2xvc2VkIFNTQSB0cmFuc2Zvcm0gUGFzcyAtLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9MaWJDYWxsc1Nocmlua1dyYXAuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9MaWJDYWxsc1Nocmlua1dyYXAuaAppbmRleCBjOWRmNTMyLi5mZjE1MzdhIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTGliQ2FsbHNTaHJpbmtXcmFwLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0xpYkNhbGxzU2hyaW5rV3JhcC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExpYkNhbGxzU2hyaW5rV3JhcC5oIC0gU2hyaW5rIFdyYXAgTGlicmFyeSBDYWxscyAtLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTG9jYWwuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9Mb2NhbC5oCmluZGV4IGY3ZGE2OTYuLjY0MWI2NDUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9Mb2NhbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9Mb2NhbC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExvY2FsLmggLSBGdW5jdGlvbnMgdG8gcGVyZm9ybSBsb2NhbCB0cmFuc2Zvcm1hdGlvbnMgLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0yMSwxMiArMjAsMTEgQEAKICNpbmNsdWRlICJsbHZtL0FEVC9TbWFsbFZlY3Rvci5oIgogI2luY2x1ZGUgImxsdm0vQURUL1RpbnlQdHJWZWN0b3IuaCIKICNpbmNsdWRlICJsbHZtL0FuYWx5c2lzL0FsaWFzQW5hbHlzaXMuaCIKKyNpbmNsdWRlICJsbHZtL0FuYWx5c2lzL0RvbVRyZWVVcGRhdGVyLmgiCiAjaW5jbHVkZSAibGx2bS9BbmFseXNpcy9VdGlscy9Mb2NhbC5oIgotI2luY2x1ZGUgImxsdm0vSVIvQ2FsbFNpdGUuaCIKICNpbmNsdWRlICJsbHZtL0lSL0NvbnN0YW50LmgiCiAjaW5jbHVkZSAibGx2bS9JUi9Db25zdGFudHMuaCIKICNpbmNsdWRlICJsbHZtL0lSL0RhdGFMYXlvdXQuaCIKLSNpbmNsdWRlICJsbHZtL0lSL0RvbVRyZWVVcGRhdGVyLmgiCiAjaW5jbHVkZSAibGx2bS9JUi9Eb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAibGx2bS9JUi9HZXRFbGVtZW50UHRyVHlwZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAibGx2bS9JUi9PcGVyYXRvci5oIgpAQCAtMTc0LDYgKzE3MiwxMiBAQAogYm9vbCBTaW1wbGlmeUluc3RydWN0aW9uc0luQmxvY2soQmFzaWNCbG9jayAqQkIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUYXJnZXRMaWJyYXJ5SW5mbyAqVExJID0gbnVsbHB0cik7CiAKKy8vLyBSZXBsYWNlIGFsbCB0aGUgdXNlcyBvZiBhbiBTU0EgdmFsdWUgaW4gQGxsdm0uZGJnIGludHJpbnNpY3Mgd2l0aAorLy8vIHVuZGVmLiBUaGlzIGlzIHVzZWZ1bCBmb3Igc2lnbmFsaW5nIHRoYXQgYSB2YXJpYWJsZSwgZS5nLiBoYXMgYmVlbgorLy8vIGZvdW5kIGRlYWQgYW5kIGhlbmNlIGl0J3MgdW5hdmFpbGFibGUgYXQgYSBnaXZlbiBwcm9ncmFtIHBvaW50LgorLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZGJnIHZhbHVlcyBoYXZlIGJlZW4gY2hhbmdlZC4KK2Jvb2wgcmVwbGFjZURiZ1VzZXNXaXRoVW5kZWYoSW5zdHJ1Y3Rpb24gKkkpOworCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gIENvbnRyb2wgRmxvdyBHcmFwaCBSZXN0cnVjdHVyaW5nLgogLy8KQEAgLTMzNiw2ICszNDAsMTggQEAKIC8vLyBSZXR1cm5zIHRydWUgaWYgYW55IGRlYnVnIHVzZXJzIHdlcmUgdXBkYXRlZC4KIGJvb2wgc2FsdmFnZURlYnVnSW5mbyhJbnN0cnVjdGlvbiAmSSk7CiAKKy8vLyBJbXBsZW1lbnRhdGlvbiBvZiBzYWx2YWdlRGVidWdJbmZvLCBhcHBseWluZyBvbmx5IHRvIGluc3RydWN0aW9ucyBpbgorLy8vIFxwIEluc25zLCByYXRoZXIgdGhhbiBhbGwgZGVidWcgdXNlcnMgb2YgXHAgSS4KK2Jvb2wgc2FsdmFnZURlYnVnSW5mb0ZvckRiZ1ZhbHVlcyhJbnN0cnVjdGlvbiAmSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxEYmdWYXJpYWJsZUludHJpbnNpYyAqPiBJbnNucyk7CisKKy8vLyBHaXZlbiBhbiBpbnN0cnVjdGlvbiBccCBJIGFuZCBESUV4cHJlc3Npb24gXHAgRElFeHByIG9wZXJhdGluZyBvbiBpdCwgd3JpdGUKKy8vLyB0aGUgZWZmZWN0cyBvZiBccCBJIGludG8gdGhlIHJldHVybmVkIERJRXhwcmVzc2lvbiwgb3IgcmV0dXJuIG51bGxwdHIgaWYKKy8vLyBpdCBjYW5ub3QgYmUgc2FsdmFnZWQuIFxwIFN0YWNrVmFsOiB3aGV0aGVyIERXX09QX3N0YWNrX3ZhbHVlIHNob3VsZCBiZQorLy8vIGFwcGVuZGVkIHRvIHRoZSBleHByZXNzaW9uLgorRElFeHByZXNzaW9uICpzYWx2YWdlRGVidWdJbmZvSW1wbChJbnN0cnVjdGlvbiAmSSwgRElFeHByZXNzaW9uICpESUV4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgU3RhY2tWYWwpOworCiAvLy8gUG9pbnQgZGVidWcgdXNlcnMgb2YgXHAgRnJvbSB0byBccCBUbyBvciBzYWx2YWdlIHRoZW0uIFVzZSB0aGlzIGZ1bmN0aW9uCiAvLy8gb25seSB3aGVuIHJlcGxhY2luZyBhbGwgdXNlcyBvZiBccCBGcm9tIHdpdGggXHAgVG8sIHdpdGggYSBndWFyYW50ZWUgdGhhdAogLy8vIFxwIEZyb20gaXMgZ29pbmcgdG8gYmUgZGVsZXRlZC4KQEAgLTQyMCw3ICs0MzYsNyBAQAogdW5zaWduZWQgcmVwbGFjZURvbWluYXRlZFVzZXNXaXRoKFZhbHVlICpGcm9tLCBWYWx1ZSAqVG8sIERvbWluYXRvclRyZWUgJkRULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhc2ljQmxvY2sgKkJCKTsKIAotLy8vIFJldHVybiB0cnVlIGlmIHRoZSBDYWxsU2l0ZSBDUyBjYWxscyBhIGdjIGxlYWYgZnVuY3Rpb24uCisvLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBjYWxsIGNhbGxzIGEgZ2MgbGVhZiBmdW5jdGlvbi4KIC8vLwogLy8vIEEgbGVhZiBmdW5jdGlvbiBpcyBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3Qgc2FmZXBvaW50IHRoZSB0aHJlYWQgZHVyaW5nIGl0cwogLy8vIGV4ZWN1dGlvbi4gIER1cmluZyBhIGNhbGwgb3IgaW52b2tlIHRvIHN1Y2ggYSBmdW5jdGlvbiwgdGhlIGNhbGxlcnMgc3RhY2sKQEAgLTQyOCw3ICs0NDQsNyBAQAogLy8vCiAvLy8gTW9zdCBwYXNzZXMgY2FuIGFuZCBzaG91bGQgaWdub3JlIHRoaXMgaW5mb3JtYXRpb24sIGFuZCBpdCBpcyBvbmx5IHVzZWQKIC8vLyBkdXJpbmcgbG93ZXJpbmcgYnkgdGhlIEdDIGluZnJhc3RydWN0dXJlLgotYm9vbCBjYWxsc0dDTGVhZkZ1bmN0aW9uKEltbXV0YWJsZUNhbGxTaXRlIENTLCBjb25zdCBUYXJnZXRMaWJyYXJ5SW5mbyAmVExJKTsKK2Jvb2wgY2FsbHNHQ0xlYWZGdW5jdGlvbihjb25zdCBDYWxsQmFzZSAqQ2FsbCwgY29uc3QgVGFyZ2V0TGlicmFyeUluZm8gJlRMSSk7CiAKIC8vLyBDb3B5IGEgbm9ubnVsbCBtZXRhZGF0YSBub2RlIHRvIGEgbmV3IGxvYWQgaW5zdHJ1Y3Rpb24uCiAvLy8KQEAgLTQ0Niw2ICs0NjIsMTQgQEAKIC8vLyBSZW1vdmUgdGhlIGRlYnVnIGludHJpbnNpYyBpbnN0cnVjdGlvbnMgZm9yIHRoZSBnaXZlbiBpbnN0cnVjdGlvbi4KIHZvaWQgZHJvcERlYnVnVXNlcnMoSW5zdHJ1Y3Rpb24gJkkpOwogCisvLy8gSG9pc3QgYWxsIG9mIHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhlIFxwIElmQmxvY2sgdG8gdGhlIGRvbWluYW50IGJsb2NrCisvLy8gXHAgRG9tQmxvY2ssIGJ5IG1vdmluZyBpdHMgaW5zdHJ1Y3Rpb25zIHRvIHRoZSBpbnNlcnRpb24gcG9pbnQgXHAgSW5zZXJ0UHQuCisvLy8KKy8vLyBUaGUgbW92ZWQgaW5zdHJ1Y3Rpb25zIHJlY2VpdmUgdGhlIGluc2VydGlvbiBwb2ludCBkZWJ1ZyBsb2NhdGlvbiB2YWx1ZXMKKy8vLyAoRElMb2NhdGlvbnMpIGFuZCB0aGVpciBkZWJ1ZyBpbnRyaW5zaWMgaW5zdHJ1Y3Rpb25zIGFyZSByZW1vdmVkLgordm9pZCBob2lzdEFsbEluc3RydWN0aW9uc0ludG8oQmFzaWNCbG9jayAqRG9tQmxvY2ssIEluc3RydWN0aW9uICpJbnNlcnRQdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sgKkJCKTsKKwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vICBJbnRyaW5zaWMgcGF0dGVybiBtYXRjaGluZwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9Mb29wUm90YXRpb25VdGlscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0xvb3BSb3RhdGlvblV0aWxzLmgKaW5kZXggMjMxZTViYi4uMWU4MDcyMiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0xvb3BSb3RhdGlvblV0aWxzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0xvb3BSb3RhdGlvblV0aWxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTG9vcFJvdGF0aW9uVXRpbHMuaCAtIFV0aWxpdGllcyB0byBwZXJmb3JtIGxvb3Agcm90YXRpb24gLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTIwLDYgKzE5LDcgQEAKIGNsYXNzIERvbWluYXRvclRyZWU7CiBjbGFzcyBMb29wOwogY2xhc3MgTG9vcEluZm87CitjbGFzcyBNZW1vcnlTU0FVcGRhdGVyOwogY2xhc3MgU2NhbGFyRXZvbHV0aW9uOwogc3RydWN0IFNpbXBsaWZ5UXVlcnk7CiBjbGFzcyBUYXJnZXRUcmFuc2Zvcm1JbmZvOwpAQCAtMzIsOCArMzIsOCBAQAogLy8vIExvb3BSb3RhdGlvbi4gSWYgaXQgaXMgdHJ1ZSwgdGhlIHByb2ZpdGFiaWxpdHkgaGV1cmlzdGljIHdpbGwgYmUgaWdub3JlZC4KIGJvb2wgTG9vcFJvdGF0aW9uKExvb3AgKkwsIExvb3BJbmZvICpMSSwgY29uc3QgVGFyZ2V0VHJhbnNmb3JtSW5mbyAqVFRJLAogICAgICAgICAgICAgICAgICAgQXNzdW1wdGlvbkNhY2hlICpBQywgRG9taW5hdG9yVHJlZSAqRFQsIFNjYWxhckV2b2x1dGlvbiAqU0UsCi0gICAgICAgICAgICAgICAgICBjb25zdCBTaW1wbGlmeVF1ZXJ5ICZTUSwgYm9vbCBSb3RhdGlvbk9ubHksCi0gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBUaHJlc2hvbGQsIGJvb2wgSXNVdGlsTW9kZSk7CisgICAgICAgICAgICAgICAgICBNZW1vcnlTU0FVcGRhdGVyICpNU1NBVSwgY29uc3QgU2ltcGxpZnlRdWVyeSAmU1EsCisgICAgICAgICAgICAgICAgICBib29sIFJvdGF0aW9uT25seSwgdW5zaWduZWQgVGhyZXNob2xkLCBib29sIElzVXRpbE1vZGUpOwogCiB9IC8vIG5hbWVzcGFjZSBsbHZtCiAKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9Mb29wU2ltcGxpZnkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9Mb29wU2ltcGxpZnkuaAppbmRleCAxNjZkYTI3Li45MzhlNDZkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTG9vcFNpbXBsaWZ5LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0xvb3BTaW1wbGlmeS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExvb3BTaW1wbGlmeS5oIC0gTG9vcCBDYW5vbmljYWxpemF0aW9uIFBhc3MgLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTG9vcFV0aWxzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTG9vcFV0aWxzLmgKaW5kZXggYzc1YTFkZS4uYTU4ODNhYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0xvb3BVdGlscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9Mb29wVXRpbHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBsbHZtL1RyYW5zZm9ybXMvVXRpbHMvTG9vcFV0aWxzLmggLSBMb29wIHV0aWxpdGllcyAtLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNDEsNiArNDAsOCBAQAogY2xhc3MgRGF0YUxheW91dDsKIGNsYXNzIExvb3A7CiBjbGFzcyBMb29wSW5mbzsKK2NsYXNzIE1lbW9yeUFjY2VzczsKK2NsYXNzIE1lbW9yeVNTQVVwZGF0ZXI7CiBjbGFzcyBPcHRpbWl6YXRpb25SZW1hcmtFbWl0dGVyOwogY2xhc3MgUHJlZGljYXRlZFNjYWxhckV2b2x1dGlvbjsKIGNsYXNzIFByZWRJdGVyYXRvckNhY2hlOwpAQCAtNzgsNyArNzksOCBAQAogLy8vCiAvLy8gTG9va3MgYXQgYWxsIGluc3RydWN0aW9ucyBpbiB0aGUgbG9vcCB3aGljaCBoYXZlIHVzZXMgb3V0c2lkZSBvZiB0aGUKIC8vLyBjdXJyZW50IGxvb3AuIEZvciBlYWNoLCBhbiBMQ1NTQSBQSEkgbm9kZSBpcyBpbnNlcnRlZCBhbmQgdGhlIHVzZXMgb3V0c2lkZQotLy8vIHRoZSBsb29wIGFyZSByZXdyaXR0ZW4gdG8gdXNlIHRoaXMgbm9kZS4KKy8vLyB0aGUgbG9vcCBhcmUgcmV3cml0dGVuIHRvIHVzZSB0aGlzIG5vZGUuIFN1Yi1sb29wcyBtdXN0IGJlIGluIExDU1NBIGZvcm0KKy8vLyBhbHJlYWR5LgogLy8vCiAvLy8gTG9vcEluZm8gYW5kIERvbWluYXRvclRyZWUgYXJlIHJlcXVpcmVkIGFuZCBwcmVzZXJ2ZWQuCiAvLy8KQEAgLTEwOSw4ICsxMTEsOCBAQAogLy8vIGFyZ3VtZW50cy4gRGlhZ25vc3RpY3MgaXMgZW1pdHRlZCB2aWEgXHAgT1JFLiBJdCByZXR1cm5zIGNoYW5nZWQgc3RhdHVzLgogYm9vbCBzaW5rUmVnaW9uKERvbVRyZWVOb2RlICosIEFsaWFzQW5hbHlzaXMgKiwgTG9vcEluZm8gKiwgRG9taW5hdG9yVHJlZSAqLAogICAgICAgICAgICAgICAgIFRhcmdldExpYnJhcnlJbmZvICosIFRhcmdldFRyYW5zZm9ybUluZm8gKiwgTG9vcCAqLAotICAgICAgICAgICAgICAgIEFsaWFzU2V0VHJhY2tlciAqLCBMb29wU2FmZXR5SW5mbyAqLAotICAgICAgICAgICAgICAgIE9wdGltaXphdGlvblJlbWFya0VtaXR0ZXIgKk9SRSk7CisgICAgICAgICAgICAgICAgQWxpYXNTZXRUcmFja2VyICosIE1lbW9yeVNTQVVwZGF0ZXIgKiwgSUNGTG9vcFNhZmV0eUluZm8gKiwKKyAgICAgICAgICAgICAgICBib29sLCBpbnQgJiwgT3B0aW1pemF0aW9uUmVtYXJrRW1pdHRlciAqKTsKIAogLy8vIFdhbGsgdGhlIHNwZWNpZmllZCByZWdpb24gb2YgdGhlIENGRyAoZGVmaW5lZCBieSBhbGwgYmxvY2tzCiAvLy8gZG9taW5hdGVkIGJ5IHRoZSBzcGVjaWZpZWQgYmxvY2ssIGFuZCB0aGF0IGFyZSBpbiB0aGUgY3VycmVudCBsb29wKSBpbiBkZXB0aApAQCAtMTIyLDcgKzEyNCw4IEBACiAvLy8gT1JFLiBJdCByZXR1cm5zIGNoYW5nZWQgc3RhdHVzLgogYm9vbCBob2lzdFJlZ2lvbihEb21UcmVlTm9kZSAqLCBBbGlhc0FuYWx5c2lzICosIExvb3BJbmZvICosIERvbWluYXRvclRyZWUgKiwKICAgICAgICAgICAgICAgICAgVGFyZ2V0TGlicmFyeUluZm8gKiwgTG9vcCAqLCBBbGlhc1NldFRyYWNrZXIgKiwKLSAgICAgICAgICAgICAgICAgTG9vcFNhZmV0eUluZm8gKiwgT3B0aW1pemF0aW9uUmVtYXJrRW1pdHRlciAqT1JFKTsKKyAgICAgICAgICAgICAgICAgTWVtb3J5U1NBVXBkYXRlciAqLCBJQ0ZMb29wU2FmZXR5SW5mbyAqLCBib29sLCBpbnQgJiwKKyAgICAgICAgICAgICAgICAgT3B0aW1pemF0aW9uUmVtYXJrRW1pdHRlciAqKTsKIAogLy8vIFRoaXMgZnVuY3Rpb24gZGVsZXRlcyBkZWFkIGxvb3BzLiBUaGUgY2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8KIC8vLyBndWFyYW50ZWUgdGhhdCB0aGUgbG9vcCBpcyBpbmZhY3QgZGVhZC4KQEAgLTE0NiwxMyArMTQ5LDEyIEBACiAvLy8gTG9vcEluZm8sIERvbWluYXRvclRyZWUsIExvb3AsIEFsaWFzU2V0IGluZm9ybWF0aW9uIGZvciBhbGwgaW5zdHJ1Y3Rpb25zCiAvLy8gb2YgdGhlIGxvb3AgYW5kIGxvb3Agc2FmZXR5IGluZm9ybWF0aW9uIGFzIGFyZ3VtZW50cy4KIC8vLyBEaWFnbm9zdGljcyBpcyBlbWl0dGVkIHZpYSBccCBPUkUuIEl0IHJldHVybnMgY2hhbmdlZCBzdGF0dXMuCi1ib29sIHByb21vdGVMb29wQWNjZXNzZXNUb1NjYWxhcnMoY29uc3QgU21hbGxTZXRWZWN0b3I8VmFsdWUgKiwgOD4gJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbWFsbFZlY3RvckltcGw8QmFzaWNCbG9jayAqPiAmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNtYWxsVmVjdG9ySW1wbDxJbnN0cnVjdGlvbiAqPiAmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWRJdGVyYXRvckNhY2hlICYsIExvb3BJbmZvICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9taW5hdG9yVHJlZSAqLCBjb25zdCBUYXJnZXRMaWJyYXJ5SW5mbyAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb3AgKiwgQWxpYXNTZXRUcmFja2VyICosIExvb3BTYWZldHlJbmZvICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW1pemF0aW9uUmVtYXJrRW1pdHRlciAqKTsKK2Jvb2wgcHJvbW90ZUxvb3BBY2Nlc3Nlc1RvU2NhbGFycygKKyAgICBjb25zdCBTbWFsbFNldFZlY3RvcjxWYWx1ZSAqLCA4PiAmLCBTbWFsbFZlY3RvckltcGw8QmFzaWNCbG9jayAqPiAmLAorICAgIFNtYWxsVmVjdG9ySW1wbDxJbnN0cnVjdGlvbiAqPiAmLCBTbWFsbFZlY3RvckltcGw8TWVtb3J5QWNjZXNzICo+ICYsCisgICAgUHJlZEl0ZXJhdG9yQ2FjaGUgJiwgTG9vcEluZm8gKiwgRG9taW5hdG9yVHJlZSAqLCBjb25zdCBUYXJnZXRMaWJyYXJ5SW5mbyAqLAorICAgIExvb3AgKiwgQWxpYXNTZXRUcmFja2VyICosIE1lbW9yeVNTQVVwZGF0ZXIgKiwgSUNGTG9vcFNhZmV0eUluZm8gKiwKKyAgICBPcHRpbWl6YXRpb25SZW1hcmtFbWl0dGVyICopOwogCiAvLy8gRG9lcyBhIEJGUyBmcm9tIGEgZ2l2ZW4gbm9kZSB0byBhbGwgb2YgaXRzIGNoaWxkcmVuIGluc2lkZSBhIGdpdmVuIGxvb3AuCiAvLy8gVGhlIHJldHVybmVkIHZlY3RvciBvZiBub2RlcyBpbmNsdWRlcyB0aGUgc3RhcnRpbmcgcG9pbnQuCkBAIC0xNjcsOSArMTY5LDgwIEBACiAvLy8gSWYgaXQgaGFzIGEgdmFsdWUgKGUuZy4geyJsbHZtLmRpc3RyaWJ1dGUiLCAxfSByZXR1cm4gdGhlIHZhbHVlIGFzIGFuCiAvLy8gb3BlcmFuZCBvciBudWxsIG90aGVyd2lzZS4gIElmIHRoZSBzdHJpbmcgbWV0YWRhdGEgaXMgbm90IGZvdW5kIHJldHVybgogLy8vIE9wdGlvbmFsJ3Mgbm90LWEtdmFsdWUuCi1PcHRpb25hbDxjb25zdCBNRE9wZXJhbmQgKj4gZmluZFN0cmluZ01ldGFkYXRhRm9yTG9vcChMb29wICpUaGVMb29wLAorT3B0aW9uYWw8Y29uc3QgTURPcGVyYW5kICo+IGZpbmRTdHJpbmdNZXRhZGF0YUZvckxvb3AoY29uc3QgTG9vcCAqVGhlTG9vcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1JlZiBOYW1lKTsKIAorLy8vIEZpbmQgbmFtZWQgbWV0YWRhdGEgZm9yIGEgbG9vcCB3aXRoIGFuIGludGVnZXIgdmFsdWUuCitsbHZtOjpPcHRpb25hbDxpbnQ+IGdldE9wdGlvbmFsSW50TG9vcEF0dHJpYnV0ZShMb29wICpUaGVMb29wLCBTdHJpbmdSZWYgTmFtZSk7CisKKy8vLyBDcmVhdGUgYSBuZXcgbG9vcCBpZGVudGlmaWVyIGZvciBhIGxvb3AgY3JlYXRlZCBmcm9tIGEgbG9vcCB0cmFuc2Zvcm1hdGlvbi4KKy8vLworLy8vIEBwYXJhbSBPcmlnTG9vcElEIFRoZSBsb29wIElEIG9mIHRoZSBsb29wIGJlZm9yZSB0aGUgdHJhbnNmb3JtYXRpb24uCisvLy8gQHBhcmFtIEZvbGxvd3VwQXR0cnMgTGlzdCBvZiBhdHRyaWJ1dGUgbmFtZXMgdGhhdCBjb250YWluIGF0dHJpYnV0ZXMgdG8gYmUKKy8vLyAgICAgICAgICAgICAgICAgICAgICBhZGRlZCB0byB0aGUgbmV3IGxvb3AgSUQuCisvLy8gQHBhcmFtIEluaGVyaXRPcHRpb25zQXR0cnNQcmVmaXggU2VsZWN0cyB3aGljaCBhdHRyaWJ1dGVzIHNob3VsZCBiZSBpbmhlcml0ZWQKKy8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBvcmlnaW5hbCBsb29wLiBUaGUgZm9sbG93aW5nIHZhbHVlcworLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBjb25zaWRlcmVkOgorLy8vICAgICAgICBudWxscHRyICAgOiBJbmhlcml0IGFsbCBhdHRyaWJ1dGVzIGZyb20gQHAgT3JpZ0xvb3BJRC4KKy8vLyAgICAgICAgIiIgICAgICAgIDogRG8gbm90IGluaGVyaXQgYW55IGF0dHJpYnV0ZSBmcm9tIEBwIE9yaWdMb29wSUQ7IG9ubHkgdXNlCisvLy8gICAgICAgICAgICAgICAgICAgIHRob3NlIHNwZWNpZmllZCBieSBhIGZvbGxvd3VwIGF0dHJpYnV0ZS4KKy8vLyAgICAgICAgIjxwcmVmaXg+IjogSW5oZXJpdCBhbGwgYXR0cmlidXRlcyBleGNlcHQgdGhvc2Ugd2hpY2ggc3RhcnQgd2l0aAorLy8vICAgICAgICAgICAgICAgICAgICA8cHJlZml4PjsgY29tbW9ubHkgdXNlZCB0byByZW1vdmUgbWV0YWRhdGEgZm9yIHRoZQorLy8vICAgICAgICAgICAgICAgICAgICBhcHBsaWVkIHRyYW5zZm9ybWF0aW9uLgorLy8vIEBwYXJhbSBBbHdheXNOZXcgSWYgdHJ1ZSwgZG8gbm90IHRyeSB0byByZXVzZSBPcmlnTG9vcElEIGFuZCBuZXZlciByZXR1cm4KKy8vLyAgICAgICAgICAgICAgICAgIE5vbmUuCisvLy8KKy8vLyBAcmV0dXJuIFRoZSBsb29wIElEIGZvciB0aGUgYWZ0ZXItdHJhbnNmb3JtYXRpb24gbG9vcC4gVGhlIGZvbGxvd2luZyB2YWx1ZXMKKy8vLyAgICAgICAgIGNhbiBiZSByZXR1cm5lZDoKKy8vLyAgICAgICAgIE5vbmUgICAgICAgICA6IE5vIGZvbGxvd3VwIGF0dHJpYnV0ZSB3YXMgZm91bmQ7IGl0IGlzIHVwIHRvIHRoZQorLy8vICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtYXRpb24gdG8gY2hvb3NlIGF0dHJpYnV0ZXMgdGhhdCBtYWtlIHNlbnNlLgorLy8vICAgICAgICAgQHAgT3JpZ0xvb3BJRDogVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIgY2FuIGJlIHJldXNlZC4KKy8vLyAgICAgICAgIG51bGxwdHIgICAgICA6IFRoZSBuZXcgbG9vcCBoYXMgbm8gYXR0cmlidXRlcy4KKy8vLyAgICAgICAgIE1ETm9kZSogICAgICA6IEEgbmV3IHVuaXF1ZSBsb29wIGlkZW50aWZpZXIuCitPcHRpb25hbDxNRE5vZGUgKj4KK21ha2VGb2xsb3d1cExvb3BJRChNRE5vZGUgKk9yaWdMb29wSUQsIEFycmF5UmVmPFN0cmluZ1JlZj4gRm9sbG93dXBBdHRycywKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpJbmhlcml0T3B0aW9uc0F0dHJzUHJlZml4ID0gIiIsCisgICAgICAgICAgICAgICAgICAgYm9vbCBBbHdheXNOZXcgPSBmYWxzZSk7CisKKy8vLyBMb29rIGZvciB0aGUgbG9vcCBhdHRyaWJ1dGUgdGhhdCBkaXNhYmxlcyBhbGwgdHJhbnNmb3JtYXRpb24gaGV1cmlzdGljLgorYm9vbCBoYXNEaXNhYmxlQWxsVHJhbnNmb3Jtc0hpbnQoY29uc3QgTG9vcCAqTCk7CisKKy8vLyBUaGUgbW9kZSBzZXRzIGhvdyBlYWdlciBhIHRyYW5zZm9ybWF0aW9uIHNob3VsZCBiZSBhcHBsaWVkLgorZW51bSBUcmFuc2Zvcm1hdGlvbk1vZGUgeworICAvLy8gVGhlIHBhc3MgY2FuIHVzZSBoZXVyaXN0aWNzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgdHJhbnNmb3JtYXRpb24gc2hvdWxkCisgIC8vLyBiZSBhcHBsaWVkLgorICBUTV9VbnNwZWNpZmllZCwKKworICAvLy8gVGhlIHRyYW5zZm9ybWF0aW9uIHNob3VsZCBiZSBhcHBsaWVkIHdpdGhvdXQgY29uc2lkZXJpbmcgYSBjb3N0IG1vZGVsLgorICBUTV9FbmFibGUsCisKKyAgLy8vIFRoZSB0cmFuc2Zvcm1hdGlvbiBzaG91bGQgbm90IGJlIGFwcGxpZWQuCisgIFRNX0Rpc2FibGUsCisKKyAgLy8vIEZvcmNlIGlzIGEgZmxhZyBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFsb25lLgorICBUTV9Gb3JjZSA9IDB4MDQsCisKKyAgLy8vIFRoZSB0cmFuc2Zvcm1hdGlvbiB3YXMgZGlyZWN0ZWQgYnkgdGhlIHVzZXIsIGUuZy4gYnkgYSAjcHJhZ21hIGluCisgIC8vLyB0aGUgc291cmNlIGNvZGUuIElmIHRoZSB0cmFuc2Zvcm1hdGlvbiBjb3VsZCBub3QgYmUgYXBwbGllZCwgYQorICAvLy8gd2FybmluZyBzaG91bGQgYmUgZW1pdHRlZC4KKyAgVE1fRm9yY2VkQnlVc2VyID0gVE1fRW5hYmxlIHwgVE1fRm9yY2UsCisKKyAgLy8vIFRoZSB0cmFuc2Zvcm1hdGlvbiBtdXN0IG5vdCBiZSBhcHBsaWVkLiBGb3IgaW5zdGFuY2UsIGAjcHJhZ21hIGNsYW5nIGxvb3AKKyAgLy8vIHVucm9sbChkaXNhYmxlKWAgZXhwbGljaXRseSBmb3JiaWRzIGFueSB1bnJvbGxpbmcgdG8gdGFrZSBwbGFjZS4gVW5saWtlCisgIC8vLyBnZW5lcmFsIGxvb3AgbWV0YWRhdGEsIGl0IG11c3Qgbm90IGJlIGRyb3BwZWQuIE1vc3QgcGFzc2VzIHNob3VsZCBub3QKKyAgLy8vIGJlaGF2ZSBkaWZmZXJlbnRseSB1bmRlciBUTV9EaXNhYmxlIGFuZCBUTV9TdXBwcmVzc2VkQnlVc2VyLgorICBUTV9TdXBwcmVzc2VkQnlVc2VyID0gVE1fRGlzYWJsZSB8IFRNX0ZvcmNlCit9OworCisvLy8gQHsKKy8vLyBHZXQgdGhlIG1vZGUgZm9yIExMVk0ncyBzdXBwb3J0ZWQgbG9vcCB0cmFuc2Zvcm1hdGlvbnMuCitUcmFuc2Zvcm1hdGlvbk1vZGUgaGFzVW5yb2xsVHJhbnNmb3JtYXRpb24oTG9vcCAqTCk7CitUcmFuc2Zvcm1hdGlvbk1vZGUgaGFzVW5yb2xsQW5kSmFtVHJhbnNmb3JtYXRpb24oTG9vcCAqTCk7CitUcmFuc2Zvcm1hdGlvbk1vZGUgaGFzVmVjdG9yaXplVHJhbnNmb3JtYXRpb24oTG9vcCAqTCk7CitUcmFuc2Zvcm1hdGlvbk1vZGUgaGFzRGlzdHJpYnV0ZVRyYW5zZm9ybWF0aW9uKExvb3AgKkwpOworVHJhbnNmb3JtYXRpb25Nb2RlIGhhc0xJQ01WZXJzaW9uaW5nVHJhbnNmb3JtYXRpb24oTG9vcCAqTCk7CisvLy8gQH0KKwogLy8vIFNldCBpbnB1dCBzdHJpbmcgaW50byBsb29wIG1ldGFkYXRhIGJ5IGtlZXBpbmcgb3RoZXIgdmFsdWVzIGludGFjdC4KIHZvaWQgYWRkU3RyaW5nTWV0YWRhdGFUb0xvb3AoTG9vcCAqVGhlTG9vcCwgY29uc3QgY2hhciAqTURTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFYgPSAwKTsKQEAgLTIwMiw3ICsyNzUsOSBAQAogLy8vIElmIFxwIE9SRSBpcyBzZXQgdXNlIGl0IHRvIGVtaXQgb3B0aW1pemF0aW9uIHJlbWFya3MuCiBib29sIGNhblNpbmtPckhvaXN0SW5zdChJbnN0cnVjdGlvbiAmSSwgQUFSZXN1bHRzICpBQSwgRG9taW5hdG9yVHJlZSAqRFQsCiAgICAgICAgICAgICAgICAgICAgICAgICBMb29wICpDdXJMb29wLCBBbGlhc1NldFRyYWNrZXIgKkN1ckFTVCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgVGFyZ2V0RXhlY3V0ZXNPbmNlUGVyTG9vcCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeVNTQVVwZGF0ZXIgKk1TU0FVLCBib29sIFRhcmdldEV4ZWN1dGVzT25jZVBlckxvb3AsCisgICAgICAgICAgICAgICAgICAgICAgICBib29sIE5vT2ZNZW1BY2Nlc3Nlc1Rvb0xhcmdlLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpMaWNtTXNzYU9wdENhcCA9IG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpbWl6YXRpb25SZW1hcmtFbWl0dGVyICpPUkUgPSBudWxscHRyKTsKIAogLy8vIFJldHVybnMgYSBNaW4vTWF4IG9wZXJhdGlvbiBjb3JyZXNwb25kaW5nIHRvIE1pbk1heFJlY3VycmVuY2VLaW5kLgpAQCAtMjQ5LDYgKzMyNCwyMyBAQAogLy8vIEZsYWcgc2V0OiBOU1csIE5VVywgZXhhY3QsIGFuZCBhbGwgb2YgZmFzdC1tYXRoLgogdm9pZCBwcm9wYWdhdGVJUkZsYWdzKFZhbHVlICpJLCBBcnJheVJlZjxWYWx1ZSAqPiBWTCwgVmFsdWUgKk9wVmFsdWUgPSBudWxscHRyKTsKIAorLy8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBjYW4gcHJvdmUgdGhhdCBccCBTIGlzIGRlZmluZWQgYW5kIGFsd2F5cyBuZWdhdGl2ZSBpbgorLy8vIGxvb3AgXHAgTC4KK2Jvb2wgaXNLbm93bk5lZ2F0aXZlSW5Mb29wKGNvbnN0IFNDRVYgKlMsIGNvbnN0IExvb3AgKkwsIFNjYWxhckV2b2x1dGlvbiAmU0UpOworCisvLy8gUmV0dXJucyB0cnVlIGlmIHdlIGNhbiBwcm92ZSB0aGF0IFxwIFMgaXMgZGVmaW5lZCBhbmQgYWx3YXlzIG5vbi1uZWdhdGl2ZSBpbgorLy8vIGxvb3AgXHAgTC4KK2Jvb2wgaXNLbm93bk5vbk5lZ2F0aXZlSW5Mb29wKGNvbnN0IFNDRVYgKlMsIGNvbnN0IExvb3AgKkwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTY2FsYXJFdm9sdXRpb24gJlNFKTsKKworLy8vIFJldHVybnMgdHJ1ZSBpZiBccCBTIGlzIGRlZmluZWQgYW5kIG5ldmVyIGlzIGVxdWFsIHRvIHNpZ25lZC91bnNpZ25lZCBtYXguCitib29sIGNhbm5vdEJlTWF4SW5Mb29wKGNvbnN0IFNDRVYgKlMsIGNvbnN0IExvb3AgKkwsIFNjYWxhckV2b2x1dGlvbiAmU0UsCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgU2lnbmVkKTsKKworLy8vIFJldHVybnMgdHJ1ZSBpZiBccCBTIGlzIGRlZmluZWQgYW5kIG5ldmVyIGlzIGVxdWFsIHRvIHNpZ25lZC91bnNpZ25lZCBtaW4uCitib29sIGNhbm5vdEJlTWluSW5Mb29wKGNvbnN0IFNDRVYgKlMsIGNvbnN0IExvb3AgKkwsIFNjYWxhckV2b2x1dGlvbiAmU0UsCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgU2lnbmVkKTsKKwogfSAvLyBlbmQgbmFtZXNwYWNlIGxsdm0KIAogI2VuZGlmIC8vIExMVk1fVFJBTlNGT1JNU19VVElMU19MT09QVVRJTFNfSApkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0xvb3BWZXJzaW9uaW5nLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTG9vcFZlcnNpb25pbmcuaAppbmRleCBmY2Q3MzRiLi4zNTVjNGQ3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTG9vcFZlcnNpb25pbmcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTG9vcFZlcnNpb25pbmcuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMb29wVmVyc2lvbmluZy5oIC0gVXRpbGl0eSB0byB2ZXJzaW9uIGEgbG9vcCAtLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0xvd2VySW52b2tlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTG93ZXJJbnZva2UuaAppbmRleCAxMjc3NGM3Li5jMTE5OGIwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTG93ZXJJbnZva2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTG93ZXJJbnZva2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBMb3dlckludm9rZS5oIC0gRWxpbWluYXRlIEludm9rZSBpbnN0cnVjdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0xvd2VyTWVtSW50cmluc2ljcy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0xvd2VyTWVtSW50cmluc2ljcy5oCmluZGV4IDJiN2QwZjYuLjhlOWQ3YjUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9Mb3dlck1lbUludHJpbnNpY3MuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTG93ZXJNZW1JbnRyaW5zaWNzLmgKQEAgLTEsOSArMSw4IEBACi0vLz09PS0gbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL0xvd2VyTWVtaW50cmluc2ljcy5oIC0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLworLy89PT0tIGxsdm0vVHJhbnNmb3Jtcy9VdGlscy9Mb3dlck1lbUludHJpbnNpY3MuaCAtLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTWVtMlJlZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL01lbTJSZWcuaAppbmRleCA0MDc2ODQzLi43NmMxYzJjIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTWVtMlJlZy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9NZW0yUmVnLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gTWVtMlJlZy5oIC0gVGhlIC1tZW0ycmVnIHBhc3MsIGEgd3JhcHBlciBhcm91bmQgdGhlIFV0aWxzIGxpYiAtLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9Nb2R1bGVVdGlscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL01vZHVsZVV0aWxzLmgKaW5kZXggMTQ2MTVjMi4uYzY5YWY1NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL01vZHVsZVV0aWxzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL01vZHVsZVV0aWxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0tIE1vZHVsZVV0aWxzLmggLSBGdW5jdGlvbnMgdG8gbWFuaXB1bGF0ZSBNb2R1bGVzIC0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTIyLDYgKzIxLDcgQEAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBBcnJheVJlZjsKIGNsYXNzIE1vZHVsZTsKIGNsYXNzIEZ1bmN0aW9uOworY2xhc3MgRnVuY3Rpb25DYWxsZWU7CiBjbGFzcyBHbG9iYWxWYWx1ZTsKIGNsYXNzIEdsb2JhbFZhcmlhYmxlOwogY2xhc3MgQ29uc3RhbnQ7CkBAIC00MCwyNCArNDAsMzYgQEAKIHZvaWQgYXBwZW5kVG9HbG9iYWxEdG9ycyhNb2R1bGUgJk0sIEZ1bmN0aW9uICpGLCBpbnQgUHJpb3JpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uc3RhbnQgKkRhdGEgPSBudWxscHRyKTsKIAotLy8gVmFsaWRhdGUgdGhlIHJlc3VsdCBvZiBNb2R1bGU6OmdldE9ySW5zZXJ0RnVuY3Rpb24gY2FsbGVkIGZvciBhbiBpbnRlcmZhY2UKLS8vIGZ1bmN0aW9uIG9mIGdpdmVuIHNhbml0aXplci4gSWYgdGhlIGluc3RydW1lbnRlZCBtb2R1bGUgZGVmaW5lcyBhIGZ1bmN0aW9uCi0vLyB3aXRoIHRoZSBzYW1lIG5hbWUsIHRoZWlyIHByb3RvdHlwZXMgbXVzdCBtYXRjaCwgb3RoZXJ3aXNlCi0vLyBnZXRPckluc2VydEZ1bmN0aW9uIHJldHVybnMgYSBiaXRjYXN0LgotRnVuY3Rpb24gKmNoZWNrU2FuaXRpemVySW50ZXJmYWNlRnVuY3Rpb24oQ29uc3RhbnQgKkZ1bmNPckJpdGNhc3QpOwotCi1GdW5jdGlvbiAqZGVjbGFyZVNhbml0aXplckluaXRGdW5jdGlvbihNb2R1bGUgJk0sIFN0cmluZ1JlZiBJbml0TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFR5cGUgKj4gSW5pdEFyZ1R5cGVzKTsKK0Z1bmN0aW9uQ2FsbGVlIGRlY2xhcmVTYW5pdGl6ZXJJbml0RnVuY3Rpb24oTW9kdWxlICZNLCBTdHJpbmdSZWYgSW5pdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5UmVmPFR5cGUgKj4gSW5pdEFyZ1R5cGVzKTsKIAogLy8vIENyZWF0ZXMgc2FuaXRpemVyIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLCBhbmQgY2FsbHMgc2FuaXRpemVyJ3MgaW5pdAogLy8vIGZ1bmN0aW9uIGZyb20gaXQuCiAvLy8gXHJldHVybiBSZXR1cm5zIHBhaXIgb2YgcG9pbnRlcnMgdG8gY29uc3RydWN0b3IsIGFuZCBpbml0IGZ1bmN0aW9ucwogLy8vIHJlc3BlY3RpdmVseS4KLXN0ZDo6cGFpcjxGdW5jdGlvbiAqLCBGdW5jdGlvbiAqPiBjcmVhdGVTYW5pdGl6ZXJDdG9yQW5kSW5pdEZ1bmN0aW9ucygKK3N0ZDo6cGFpcjxGdW5jdGlvbiAqLCBGdW5jdGlvbkNhbGxlZT4gY3JlYXRlU2FuaXRpemVyQ3RvckFuZEluaXRGdW5jdGlvbnMoCiAgICAgTW9kdWxlICZNLCBTdHJpbmdSZWYgQ3Rvck5hbWUsIFN0cmluZ1JlZiBJbml0TmFtZSwKICAgICBBcnJheVJlZjxUeXBlICo+IEluaXRBcmdUeXBlcywgQXJyYXlSZWY8VmFsdWUgKj4gSW5pdEFyZ3MsCiAgICAgU3RyaW5nUmVmIFZlcnNpb25DaGVja05hbWUgPSBTdHJpbmdSZWYoKSk7CiAKKy8vLyBDcmVhdGVzIHNhbml0aXplciBjb25zdHJ1Y3RvciBmdW5jdGlvbiBsYXppbHkuIElmIGEgY29uc3RydWN0b3IgYW5kIGluaXQKKy8vLyBmdW5jdGlvbiBhbHJlYWR5IGV4aXN0LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgaXQuIE90aGVyd2lzZSBpdCBjYWxscyBcYworLy8vIGNyZWF0ZVNhbml0aXplckN0b3JBbmRJbml0RnVuY3Rpb25zLiBUaGUgRnVuY3Rpb25zQ3JlYXRlZENhbGxiYWNrIGlzIGludm9rZWQKKy8vLyBpbiB0aGF0IGNhc2UsIHBhc3NpbmcgdGhlIG5ldyBDdG9yIGFuZCBJbml0IGZ1bmN0aW9uLgorLy8vCisvLy8gXHJldHVybiBSZXR1cm5zIHBhaXIgb2YgcG9pbnRlcnMgdG8gY29uc3RydWN0b3IsIGFuZCBpbml0IGZ1bmN0aW9ucworLy8vIHJlc3BlY3RpdmVseS4KK3N0ZDo6cGFpcjxGdW5jdGlvbiAqLCBGdW5jdGlvbkNhbGxlZT4gZ2V0T3JDcmVhdGVTYW5pdGl6ZXJDdG9yQW5kSW5pdEZ1bmN0aW9ucygKKyAgICBNb2R1bGUgJk0sIFN0cmluZ1JlZiBDdG9yTmFtZSwgU3RyaW5nUmVmIEluaXROYW1lLAorICAgIEFycmF5UmVmPFR5cGUgKj4gSW5pdEFyZ1R5cGVzLCBBcnJheVJlZjxWYWx1ZSAqPiBJbml0QXJncywKKyAgICBmdW5jdGlvbl9yZWY8dm9pZChGdW5jdGlvbiAqLCBGdW5jdGlvbkNhbGxlZSk+IEZ1bmN0aW9uc0NyZWF0ZWRDYWxsYmFjaywKKyAgICBTdHJpbmdSZWYgVmVyc2lvbkNoZWNrTmFtZSA9IFN0cmluZ1JlZigpKTsKKworLy8gQ3JlYXRlcyBhbmQgcmV0dXJucyBhIHNhbml0aXplciBpbml0IGZ1bmN0aW9uIHdpdGhvdXQgYXJndW1lbnQgaWYgaXQgZG9lc24ndAorLy8gZXhpc3QsIGFuZCBhZGRzIGl0IHRvIHRoZSBnbG9iYWwgY29uc3RydWN0b3JzIGxpc3QuIE90aGVyd2lzZSBpdCByZXR1cm5zIHRoZQorLy8gZXhpc3RpbmcgZnVuY3Rpb24uCitGdW5jdGlvbiAqZ2V0T3JDcmVhdGVJbml0RnVuY3Rpb24oTW9kdWxlICZNLCBTdHJpbmdSZWYgTmFtZSk7CisKIC8vLyBSZW5hbWUgYWxsIHRoZSBhbm9uIGdsb2JhbHMgaW4gdGhlIG1vZHVsZSB1c2luZyBhIGhhc2ggY29tcHV0ZWQgZnJvbQogLy8vIHRoZSBsaXN0IG9mIHB1YmxpYyBnbG9iYWxzIGluIHRoZSBtb2R1bGUuCiBib29sIG5hbWVVbmFtZWRHbG9iYWxzKE1vZHVsZSAmTSk7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTmFtZUFub25HbG9iYWxzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvTmFtZUFub25HbG9iYWxzLmgKaW5kZXggMTdmYzkwMi4uNjU5ZWJlMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL05hbWVBbm9uR2xvYmFscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9OYW1lQW5vbkdsb2JhbHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gTmFtZUFub25HbG9iYWxzLmggLSBBbm9ueW1vdXMgR2xvYmFsIE5hbWluZyBQYXNzIC0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1ByZWRpY2F0ZUluZm8uaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9QcmVkaWNhdGVJbmZvLmgKaW5kZXggMmZjMzgwOC4uZGE0YTVkYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1ByZWRpY2F0ZUluZm8uaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvUHJlZGljYXRlSW5mby5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFByZWRpY2F0ZUluZm8uaCAtIEJ1aWxkIFByZWRpY2F0ZUluZm8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQysrLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1Byb21vdGVNZW1Ub1JlZy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1Byb21vdGVNZW1Ub1JlZy5oCmluZGV4IDVkZGZiZTIuLmIyYjQ1MDcgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9Qcm9tb3RlTWVtVG9SZWcuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvUHJvbW90ZU1lbVRvUmVnLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUHJvbW90ZU1lbVRvUmVnLmggLSBQcm9tb3RlIEFsbG9jYXMgdG8gU2NhbGFycyAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TU0FVcGRhdGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvU1NBVXBkYXRlci5oCmluZGV4IDRhNzkxMTYuLjIyYjIyOTUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TU0FVcGRhdGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1NTQVVwZGF0ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBTU0FVcGRhdGVyLmggLSBVbnN0cnVjdHVyZWQgU1NBIFVwZGF0ZSBUb29sIC0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNzYsNiArNzUsMTAgQEAKICAgLy8vIGJsb2NrLgogICBib29sIEhhc1ZhbHVlRm9yQmxvY2soQmFzaWNCbG9jayAqQkIpIGNvbnN0OwogCisgIC8vLyBSZXR1cm4gdGhlIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGJsb2NrIGlmIHRoZSBTU0FVcGRhdGVyIGhhcyBvbmUsCisgIC8vLyBvdGhlcndpc2UgcmV0dXJuIG51bGxwdHIuCisgIFZhbHVlICpGaW5kVmFsdWVGb3JCbG9jayhCYXNpY0Jsb2NrICpCQikgY29uc3Q7CisKICAgLy8vIENvbnN0cnVjdCBTU0EgZm9ybSwgbWF0ZXJpYWxpemluZyBhIHZhbHVlIHRoYXQgaXMgbGl2ZSBhdCB0aGUgZW5kCiAgIC8vLyBvZiB0aGUgc3BlY2lmaWVkIGJsb2NrLgogICBWYWx1ZSAqR2V0VmFsdWVBdEVuZE9mQmxvY2soQmFzaWNCbG9jayAqQkIpOwpAQCAtMTQ0LDcgKzE0Nyw3IEBACiAgIC8vLyBJbnN0cyBpcyBhIGxpc3Qgb2YgbG9hZHMgYW5kIHN0b3JlcyB0byBwcm9tb3RlLCBhbmQgTmFtZSBpcyB0aGUgYmFzZW5hbWUKICAgLy8vIGZvciB0aGUgUEhJcyB0byBpbnNlcnQuIEFmdGVyIHRoaXMgaXMgY29tcGxldGUsIHRoZSBsb2FkcyBhbmQgc3RvcmVzIGFyZQogICAvLy8gcmVtb3ZlZCBmcm9tIHRoZSBjb2RlLgotICB2b2lkIHJ1bihjb25zdCBTbWFsbFZlY3RvckltcGw8SW5zdHJ1Y3Rpb24gKj4gJkluc3RzKSBjb25zdDsKKyAgdm9pZCBydW4oY29uc3QgU21hbGxWZWN0b3JJbXBsPEluc3RydWN0aW9uICo+ICZJbnN0cyk7CiAKICAgLy8vIFJldHVybiB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgaW5zdHJ1Y3Rpb24gaXMgaW4gdGhlIEluc3QgbGlzdC4KICAgLy8vCkBAIC0xNTUsNyArMTU4LDcgQEAKIAogICAvLy8gVGhpcyBob29rIGlzIGludm9rZWQgYWZ0ZXIgYWxsIHRoZSBzdG9yZXMgYXJlIGZvdW5kIGFuZCBpbnNlcnRlZCBhcwogICAvLy8gYXZhaWxhYmxlIHZhbHVlcy4KLSAgdmlydHVhbCB2b2lkIGRvRXh0cmFSZXdyaXRlc0JlZm9yZUZpbmFsRGVsZXRpb24oKSBjb25zdCB7fQorICB2aXJ0dWFsIHZvaWQgZG9FeHRyYVJld3JpdGVzQmVmb3JlRmluYWxEZWxldGlvbigpIHt9CiAKICAgLy8vIENsaWVudHMgY2FuIGNob29zZSB0byBpbXBsZW1lbnQgdGhpcyB0byBnZXQgbm90aWZpZWQgcmlnaHQgYmVmb3JlCiAgIC8vLyBhIGxvYWQgaXMgUkFVVydkIGFub3RoZXIgdmFsdWUuCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvU1NBVXBkYXRlckJ1bGsuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TU0FVcGRhdGVyQnVsay5oCmluZGV4IDUzYTYwOGYuLjVkMTdkNmYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TU0FVcGRhdGVyQnVsay5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TU0FVcGRhdGVyQnVsay5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFNTQVVwZGF0ZXJCdWxrLmggLSBVbnN0cnVjdHVyZWQgU1NBIFVwZGF0ZSBUb29sIC0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvU1NBVXBkYXRlckltcGwuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TU0FVcGRhdGVySW1wbC5oCmluZGV4IGI3NjQ5YmEuLmVlMDY4OTMgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TU0FVcGRhdGVySW1wbC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TU0FVcGRhdGVySW1wbC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFNTQVVwZGF0ZXJJbXBsLmggLSBTU0EgVXBkYXRlciBJbXBsZW1lbnRhdGlvbiAtLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zNTcsMTAgKzM1Niw5IEBACiAgICAgICBCQkluZm8gKkluZm8gPSAqSTsKIAogICAgICAgaWYgKEluZm8tPkRlZkJCICE9IEluZm8pIHsKLSAgICAgICAgLy8gUmVjb3JkIHRoZSBhdmFpbGFibGUgdmFsdWUgYXQgam9pbiBub2RlcyB0byBzcGVlZCB1cCBzdWJzZXF1ZW50Ci0gICAgICAgIC8vIHVzZXMgb2YgdGhpcyBTU0FVcGRhdGVyIGZvciB0aGUgc2FtZSB2YWx1ZS4KLSAgICAgICAgaWYgKEluZm8tPk51bVByZWRzID4gMSkKLSAgICAgICAgICAoKkF2YWlsYWJsZVZhbHMpW0luZm8tPkJCXSA9IEluZm8tPkRlZkJCLT5BdmFpbGFibGVWYWw7CisgICAgICAgIC8vIFJlY29yZCB0aGUgYXZhaWxhYmxlIHZhbHVlIHRvIHNwZWVkIHVwIHN1YnNlcXVlbnQgdXNlcyBvZiB0aGlzCisgICAgICAgIC8vIFNTQVVwZGF0ZXIgZm9yIHRoZSBzYW1lIHZhbHVlLgorICAgICAgICAoKkF2YWlsYWJsZVZhbHMpW0luZm8tPkJCXSA9IEluZm8tPkRlZkJCLT5BdmFpbGFibGVWYWw7CiAgICAgICAgIGNvbnRpbnVlOwogICAgICAgfQogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvU2FuaXRpemVyU3RhdHMuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TYW5pdGl6ZXJTdGF0cy5oCmluZGV4IGQzNmUzNDIuLjE0ZThhZTAgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TYW5pdGl6ZXJTdGF0cy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TYW5pdGl6ZXJTdGF0cy5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFNhbml0aXplclN0YXRzLmggLSBTYW5pdGl6ZXIgc3RhdGlzdGljcyBnYXRoZXJpbmcgIC0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvU2ltcGxpZnlJbmRWYXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TaW1wbGlmeUluZFZhci5oCmluZGV4IGExZGZlZDIuLmRlYzczZWYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TaW1wbGlmeUluZFZhci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TaW1wbGlmeUluZFZhci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBsbHZtL1RyYW5zZm9ybXMvVXRpbHMvU2ltcGxpZnlJbmRWYXIuaCAtIEluZHZhciBVdGlscyAtLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvU2ltcGxpZnlMaWJDYWxscy5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1NpbXBsaWZ5TGliQ2FsbHMuaAppbmRleCAyYjM0NGY0Li40NGVlZjA5IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvU2ltcGxpZnlMaWJDYWxscy5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TaW1wbGlmeUxpYkNhbGxzLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU2ltcGxpZnlMaWJDYWxscy5oIC0gTGlicmFyeSBjYWxsIHNpbXBsaWZpZXIgLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTc3LDIxICs3NiwzNCBAQAogICBPcHRpbWl6YXRpb25SZW1hcmtFbWl0dGVyICZPUkU7CiAgIGJvb2wgVW5zYWZlRlBTaHJpbms7CiAgIGZ1bmN0aW9uX3JlZjx2b2lkKEluc3RydWN0aW9uICosIFZhbHVlICopPiBSZXBsYWNlcjsKKyAgZnVuY3Rpb25fcmVmPHZvaWQoSW5zdHJ1Y3Rpb24gKik+IEVyYXNlcjsKIAogICAvLy8gSW50ZXJuYWwgd3JhcHBlciBmb3IgUkFVVyB0aGF0IGlzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgogICAvLy8KICAgLy8vIE90aGVyIHVzZXJzIG1heSBwcm92aWRlIGFuIGFsdGVybmF0ZSBmdW5jdGlvbiB3aXRoIHRoaXMgc2lnbmF0dXJlIGluc3RlYWQKICAgLy8vIG9mIHRoaXMgb25lLgotICBzdGF0aWMgdm9pZCByZXBsYWNlQWxsVXNlc1dpdGhEZWZhdWx0KEluc3RydWN0aW9uICpJLCBWYWx1ZSAqV2l0aCk7CisgIHN0YXRpYyB2b2lkIHJlcGxhY2VBbGxVc2VzV2l0aERlZmF1bHQoSW5zdHJ1Y3Rpb24gKkksIFZhbHVlICpXaXRoKSB7CisgICAgSS0+cmVwbGFjZUFsbFVzZXNXaXRoKFdpdGgpOworICB9CisKKyAgLy8vIEludGVybmFsIHdyYXBwZXIgZm9yIGVyYXNlRnJvbVBhcmVudCB0aGF0IGlzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorICBzdGF0aWMgdm9pZCBlcmFzZUZyb21QYXJlbnREZWZhdWx0KEluc3RydWN0aW9uICpJKSB7IEktPmVyYXNlRnJvbVBhcmVudCgpOyB9CiAKICAgLy8vIFJlcGxhY2UgYW4gaW5zdHJ1Y3Rpb24ncyB1c2VzIHdpdGggYSB2YWx1ZSB1c2luZyBvdXIgcmVwbGFjZXIuCiAgIHZvaWQgcmVwbGFjZUFsbFVzZXNXaXRoKEluc3RydWN0aW9uICpJLCBWYWx1ZSAqV2l0aCk7CiAKKyAgLy8vIEVyYXNlIGFuIGluc3RydWN0aW9uIGZyb20gaXRzIHBhcmVudCB3aXRoIG91ciBlcmFzZXIuCisgIHZvaWQgZXJhc2VGcm9tUGFyZW50KEluc3RydWN0aW9uICpJKTsKKworICBWYWx1ZSAqZm9sZE1hbGxvY01lbXNldChDYWxsSW5zdCAqTWVtc2V0LCBJUkJ1aWxkZXI8PiAmQik7CisKIHB1YmxpYzoKLSAgTGliQ2FsbFNpbXBsaWZpZXIoY29uc3QgRGF0YUxheW91dCAmREwsIGNvbnN0IFRhcmdldExpYnJhcnlJbmZvICpUTEksCi0gICAgICAgICAgICAgICAgICAgIE9wdGltaXphdGlvblJlbWFya0VtaXR0ZXIgJk9SRSwKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fcmVmPHZvaWQoSW5zdHJ1Y3Rpb24gKiwgVmFsdWUgKik+IFJlcGxhY2VyID0KLSAgICAgICAgICAgICAgICAgICAgICAgICZyZXBsYWNlQWxsVXNlc1dpdGhEZWZhdWx0KTsKKyAgTGliQ2FsbFNpbXBsaWZpZXIoCisgICAgICBjb25zdCBEYXRhTGF5b3V0ICZETCwgY29uc3QgVGFyZ2V0TGlicmFyeUluZm8gKlRMSSwKKyAgICAgIE9wdGltaXphdGlvblJlbWFya0VtaXR0ZXIgJk9SRSwKKyAgICAgIGZ1bmN0aW9uX3JlZjx2b2lkKEluc3RydWN0aW9uICosIFZhbHVlICopPiBSZXBsYWNlciA9CisgICAgICAgICAgJnJlcGxhY2VBbGxVc2VzV2l0aERlZmF1bHQsCisgICAgICBmdW5jdGlvbl9yZWY8dm9pZChJbnN0cnVjdGlvbiAqKT4gRXJhc2VyID0gJmVyYXNlRnJvbVBhcmVudERlZmF1bHQpOwogCiAgIC8vLyBvcHRpbWl6ZUNhbGwgLSBUYWtlIHRoZSBnaXZlbiBjYWxsIGluc3RydWN0aW9uIGFuZCByZXR1cm4gYSBtb3JlCiAgIC8vLyBvcHRpbWFsIHZhbHVlIHRvIHJlcGxhY2UgdGhlIGluc3RydWN0aW9uIHdpdGggb3IgMCBpZiBhIG1vcmUKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TcGxpdE1vZHVsZS5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1NwbGl0TW9kdWxlLmgKaW5kZXggZDJjMzFmMi4uNzgzOWM1ZCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1NwbGl0TW9kdWxlLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1NwbGl0TW9kdWxlLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3BsaXRNb2R1bGUuaCAtIFNwbGl0IGEgbW9kdWxlIGludG8gcGFydGl0aW9ucyAtLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9TeW1ib2xSZXdyaXRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1N5bWJvbFJld3JpdGVyLmgKaW5kZXggNWY2NDg4ZS4uY2U5ZGNhZiAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1N5bWJvbFJld3JpdGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1N5bWJvbFJld3JpdGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU3ltYm9sUmV3cml0ZXIuaCAtIFN5bWJvbCBSZXdyaXRpbmcgUGFzcyAtLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9VbmlmeUZ1bmN0aW9uRXhpdE5vZGVzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvVW5pZnlGdW5jdGlvbkV4aXROb2Rlcy5oCmluZGV4IDIyMmM2MDEuLmY2ODUzNGUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9VbmlmeUZ1bmN0aW9uRXhpdE5vZGVzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1VuaWZ5RnVuY3Rpb25FeGl0Tm9kZXMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gVW5pZnlGdW5jdGlvbkV4aXROb2Rlcy5oIC0gRW5zdXJlIGZuJ3MgaGF2ZSBvbmUgcmV0dXJuIC0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1Vucm9sbExvb3AuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9VbnJvbGxMb29wLmgKaW5kZXggYTZiODRhZi4uOGYzODI0ZSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1Vucm9sbExvb3AuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvVW5yb2xsTG9vcC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vVHJhbnNmb3Jtcy9VdGlscy9VbnJvbGxMb29wLmggLSBVbnJvbGxpbmcgdXRpbGl0aWVzIC0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0zNSw2ICszNCwxNSBAQAogCiB1c2luZyBOZXdMb29wc01hcCA9IFNtYWxsRGVuc2VNYXA8Y29uc3QgTG9vcCAqLCBMb29wICosIDQ+OwogCisvLy8gQHsKKy8vLyBNZXRhZGF0YSBhdHRyaWJ1dGUgbmFtZXMKK2NvbnN0IGNoYXIgKmNvbnN0IExMVk1Mb29wVW5yb2xsRm9sbG93dXBBbGwgPSAibGx2bS5sb29wLnVucm9sbC5mb2xsb3d1cF9hbGwiOworY29uc3QgY2hhciAqY29uc3QgTExWTUxvb3BVbnJvbGxGb2xsb3d1cFVucm9sbGVkID0KKyAgICAibGx2bS5sb29wLnVucm9sbC5mb2xsb3d1cF91bnJvbGxlZCI7Citjb25zdCBjaGFyICpjb25zdCBMTFZNTG9vcFVucm9sbEZvbGxvd3VwUmVtYWluZGVyID0KKyAgICAibGx2bS5sb29wLnVucm9sbC5mb2xsb3d1cF9yZW1haW5kZXIiOworLy8vIEB9CisKIGNvbnN0IExvb3AqIGFkZENsb25lZEJsb2NrVG9Mb29wSW5mbyhCYXNpY0Jsb2NrICpPcmlnaW5hbEJCLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljQmxvY2sgKkNsb25lZEJCLCBMb29wSW5mbyAqTEksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3TG9vcHNNYXAgJk5ld0xvb3BzKTsKQEAgLTYxLDE1ICs2OSwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFBlZWxDb3VudCwgYm9vbCBVbnJvbGxSZW1haW5kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9vcEluZm8gKkxJLCBTY2FsYXJFdm9sdXRpb24gKlNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvbWluYXRvclRyZWUgKkRULCBBc3N1bXB0aW9uQ2FjaGUgKkFDLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGltaXphdGlvblJlbWFya0VtaXR0ZXIgKk9SRSwgYm9vbCBQcmVzZXJ2ZUxDU1NBKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpbWl6YXRpb25SZW1hcmtFbWl0dGVyICpPUkUsIGJvb2wgUHJlc2VydmVMQ1NTQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb29wICoqUmVtYWluZGVyTG9vcCA9IG51bGxwdHIpOwogCiBib29sIFVucm9sbFJ1bnRpbWVMb29wUmVtYWluZGVyKExvb3AgKkwsIHVuc2lnbmVkIENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIEFsbG93RXhwZW5zaXZlVHJpcENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFVzZUVwaWxvZ1JlbWFpbmRlciwgYm9vbCBVbnJvbGxSZW1haW5kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb3BJbmZvICpMSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2NhbGFyRXZvbHV0aW9uICpTRSwgRG9taW5hdG9yVHJlZSAqRFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzc3VtcHRpb25DYWNoZSAqQUMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgUHJlc2VydmVMQ1NTQSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb3BJbmZvICpMSSwgU2NhbGFyRXZvbHV0aW9uICpTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9taW5hdG9yVHJlZSAqRFQsIEFzc3VtcHRpb25DYWNoZSAqQUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgUHJlc2VydmVMQ1NTQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9vcCAqKlJlc3VsdExvb3AgPSBudWxscHRyKTsKIAogdm9pZCBjb21wdXRlUGVlbENvdW50KExvb3AgKkwsIHVuc2lnbmVkIExvb3BTaXplLAogICAgICAgICAgICAgICAgICAgICAgIFRhcmdldFRyYW5zZm9ybUluZm86OlVucm9sbGluZ1ByZWZlcmVuY2VzICZVUCwKQEAgLTg0LDcgKzkzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBUcmlwTXVsdGlwbGUsIGJvb2wgVW5yb2xsUmVtYWluZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb3BJbmZvICpMSSwgU2NhbGFyRXZvbHV0aW9uICpTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb21pbmF0b3JUcmVlICpEVCwgQXNzdW1wdGlvbkNhY2hlICpBQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpbWl6YXRpb25SZW1hcmtFbWl0dGVyICpPUkUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGltaXphdGlvblJlbWFya0VtaXR0ZXIgKk9SRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb29wICoqRXBpbG9ndWVMb29wID0gbnVsbHB0cik7CiAKIGJvb2wgaXNTYWZlVG9VbnJvbGxBbmRKYW0oTG9vcCAqTCwgU2NhbGFyRXZvbHV0aW9uICZTRSwgRG9taW5hdG9yVHJlZSAmRFQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGVuY2VJbmZvICZESSk7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvVk5Db2VyY2lvbi5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1ZOQ29lcmNpb24uaAppbmRleCAxYmFhOWI2Li5mNjdiOWVkIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVXRpbHMvVk5Db2VyY2lvbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9WTkNvZXJjaW9uLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVk5Db2VyY2lvbi5oIC0gVmFsdWUgTnVtYmVyaW5nIENvZXJjaW9uIFV0aWxpdGllcyAtLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8vIFxmaWxlIC8gVGhpcyBmaWxlIHByb3ZpZGVzIHJvdXRpbmVzIHVzZWQgYnkgTExWTSdzIHZhbHVlIG51bWJlcmluZyBwYXNzZXMgdG8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9VdGlscy9WYWx1ZU1hcHBlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1ZhbHVlTWFwcGVyLmgKaW5kZXggNGVjYjIzZS4uMTk1MmEyMSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1ZhbHVlTWFwcGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1V0aWxzL1ZhbHVlTWFwcGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gVmFsdWVNYXBwZXIuaCAtIFJlbWFwcGluZyBmb3IgY29uc3RhbnRzIGFuZCBtZXRhZGF0YSAtLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9WZWN0b3JpemUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9WZWN0b3JpemUuaAppbmRleCA5NTBhZjdmLi5hNDExYjU2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVmVjdG9yaXplLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1ZlY3Rvcml6ZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBWZWN0b3JpemUuaCAtIFZlY3Rvcml6YXRpb24gVHJhbnNmb3JtYXRpb25zIC0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xMTAsOCArMTA5LDggQEAKIC8vCiAvLyBMb29wVmVjdG9yaXplIC0gQ3JlYXRlIGEgbG9vcCB2ZWN0b3JpemF0aW9uIHBhc3MuCiAvLwotUGFzcyAqY3JlYXRlTG9vcFZlY3Rvcml6ZVBhc3MoYm9vbCBOb1Vucm9sbGluZyA9IGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBBbHdheXNWZWN0b3JpemUgPSB0cnVlKTsKK1Bhc3MgKmNyZWF0ZUxvb3BWZWN0b3JpemVQYXNzKGJvb2wgSW50ZXJsZWF2ZU9ubHlXaGVuRm9yY2VkID0gZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIFZlY3Rvcml6ZU9ubHlXaGVuRm9yY2VkID0gZmFsc2UpOwogCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9WZWN0b3JpemUvTG9hZFN0b3JlVmVjdG9yaXplci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1ZlY3Rvcml6ZS9Mb2FkU3RvcmVWZWN0b3JpemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcyYzc2YwotLS0gL2Rldi9udWxsCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9WZWN0b3JpemUvTG9hZFN0b3JlVmVjdG9yaXplci5oCkBAIC0wLDAgKzEsMjYgQEAKKy8vPT09LSBMb2FkU3RvcmVWZWN0b3JpemVyLmNwcCAtIEdQVSBMb2FkICYgU3RvcmUgVmVjdG9yaXplciAtLS0tLS0tLS0tLS0tLT09PS8vCisvLworLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgorLy8KKy8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCisKKyNpZm5kZWYgTExWTV9UUkFOU0ZPUk1TX1ZFQ1RPUklaRV9MT0FEU1RPUkVWRUNUT1JJWkVSX0gKKyNkZWZpbmUgTExWTV9UUkFOU0ZPUk1TX1ZFQ1RPUklaRV9MT0FEU1RPUkVWRUNUT1JJWkVSX0gKKworI2luY2x1ZGUgImxsdm0vSVIvUGFzc01hbmFnZXIuaCIKKworbmFtZXNwYWNlIGxsdm0geworCitjbGFzcyBMb2FkU3RvcmVWZWN0b3JpemVyUGFzcyA6IHB1YmxpYyBQYXNzSW5mb01peGluPExvYWRTdG9yZVZlY3Rvcml6ZXJQYXNzPiB7CitwdWJsaWM6CisgIFByZXNlcnZlZEFuYWx5c2VzIHJ1bihGdW5jdGlvbiAmRiwgRnVuY3Rpb25BbmFseXNpc01hbmFnZXIgJkFNKTsKK307CisKKy8vLyBDcmVhdGUgYSBsZWdhY3kgcGFzcyBtYW5hZ2VyIGluc3RhbmNlIG9mIHRoZSBMb2FkU3RvcmVWZWN0b3JpemVyIHBhc3MKK1Bhc3MgKmNyZWF0ZUxvYWRTdG9yZVZlY3Rvcml6ZXJQYXNzKCk7CisKK30KKworI2VuZGlmIC8qIExMVk1fVFJBTlNGT1JNU19WRUNUT1JJWkVfTE9BRFNUT1JFVkVDVE9SSVpFUl9IICovCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVmVjdG9yaXplL0xvb3BWZWN0b3JpemF0aW9uTGVnYWxpdHkuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9WZWN0b3JpemUvTG9vcFZlY3Rvcml6YXRpb25MZWdhbGl0eS5oCmluZGV4IDJhNjI0MjAuLmVhMGExYzIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9WZWN0b3JpemUvTG9vcFZlY3Rvcml6YXRpb25MZWdhbGl0eS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9WZWN0b3JpemUvTG9vcFZlY3Rvcml6YXRpb25MZWdhbGl0eS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIGxsdm0vVHJhbnNmb3Jtcy9WZWN0b3JpemUvTG9vcFZlY3Rvcml6YXRpb25MZWdhbGl0eS5oIC0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC05NSwxNyArOTQsMTQgQEAKICAgICBGS19FbmFibGVkID0gMSwgICAgLy8vPCBGb3JjaW5nIGVuYWJsZWQuCiAgIH07CiAKLSAgTG9vcFZlY3Rvcml6ZUhpbnRzKGNvbnN0IExvb3AgKkwsIGJvb2wgRGlzYWJsZUludGVybGVhdmluZywKKyAgTG9vcFZlY3Rvcml6ZUhpbnRzKGNvbnN0IExvb3AgKkwsIGJvb2wgSW50ZXJsZWF2ZU9ubHlXaGVuRm9yY2VkLAogICAgICAgICAgICAgICAgICAgICAgT3B0aW1pemF0aW9uUmVtYXJrRW1pdHRlciAmT1JFKTsKIAogICAvLy8gTWFyayB0aGUgbG9vcCBMIGFzIGFscmVhZHkgdmVjdG9yaXplZCBieSBzZXR0aW5nIHRoZSB3aWR0aCB0byAxLgotICB2b2lkIHNldEFscmVhZHlWZWN0b3JpemVkKCkgewotICAgIElzVmVjdG9yaXplZC5WYWx1ZSA9IDE7Ci0gICAgSGludCBIaW50c1tdID0ge0lzVmVjdG9yaXplZH07Ci0gICAgd3JpdGVIaW50c1RvTWV0YWRhdGEoSGludHMpOwotICB9CisgIHZvaWQgc2V0QWxyZWFkeVZlY3Rvcml6ZWQoKTsKIAotICBib29sIGFsbG93VmVjdG9yaXphdGlvbihGdW5jdGlvbiAqRiwgTG9vcCAqTCwgYm9vbCBBbHdheXNWZWN0b3JpemUpIGNvbnN0OworICBib29sIGFsbG93VmVjdG9yaXphdGlvbihGdW5jdGlvbiAqRiwgTG9vcCAqTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBWZWN0b3JpemVPbmx5V2hlbkZvcmNlZCkgY29uc3Q7CiAKICAgLy8vIER1bXBzIGFsbCB0aGUgaGludCBpbmZvcm1hdGlvbi4KICAgdm9pZCBlbWl0UmVtYXJrV2l0aEhpbnRzKCkgY29uc3Q7CkBAIC0xMTMsNyArMTA5LDEyIEBACiAgIHVuc2lnbmVkIGdldFdpZHRoKCkgY29uc3QgeyByZXR1cm4gV2lkdGguVmFsdWU7IH0KICAgdW5zaWduZWQgZ2V0SW50ZXJsZWF2ZSgpIGNvbnN0IHsgcmV0dXJuIEludGVybGVhdmUuVmFsdWU7IH0KICAgdW5zaWduZWQgZ2V0SXNWZWN0b3JpemVkKCkgY29uc3QgeyByZXR1cm4gSXNWZWN0b3JpemVkLlZhbHVlOyB9Ci0gIGVudW0gRm9yY2VLaW5kIGdldEZvcmNlKCkgY29uc3QgeyByZXR1cm4gKEZvcmNlS2luZClGb3JjZS5WYWx1ZTsgfQorICBlbnVtIEZvcmNlS2luZCBnZXRGb3JjZSgpIGNvbnN0IHsKKyAgICBpZiAoKEZvcmNlS2luZClGb3JjZS5WYWx1ZSA9PSBGS19VbmRlZmluZWQgJiYKKyAgICAgICAgaGFzRGlzYWJsZUFsbFRyYW5zZm9ybXNIaW50KFRoZUxvb3ApKQorICAgICAgcmV0dXJuIEZLX0Rpc2FibGVkOworICAgIHJldHVybiAoRm9yY2VLaW5kKUZvcmNlLlZhbHVlOworICB9CiAKICAgLy8vIElmIGhpbnRzIGFyZSBwcm92aWRlZCB0aGF0IGZvcmNlIHZlY3Rvcml6YXRpb24sIHVzZSB0aGUgQWx3YXlzUHJpbnQKICAgLy8vIHBhc3MgbmFtZSB0byBmb3JjZSB0aGUgZnJvbnRlbmQgdG8gcHJpbnQgdGhlIGRpYWdub3N0aWMuCkBAIC0xNDYsMTUgKzE0Nyw2IEBACiAgIC8vLyBDaGVja3Mgc3RyaW5nIGhpbnQgd2l0aCBvbmUgb3BlcmFuZCBhbmQgc2V0IHZhbHVlIGlmIHZhbGlkLgogICB2b2lkIHNldEhpbnQoU3RyaW5nUmVmIE5hbWUsIE1ldGFkYXRhICpBcmcpOwogCi0gIC8vLyBDcmVhdGUgYSBuZXcgaGludCBmcm9tIG5hbWUgLyB2YWx1ZSBwYWlyLgotICBNRE5vZGUgKmNyZWF0ZUhpbnRNZXRhZGF0YShTdHJpbmdSZWYgTmFtZSwgdW5zaWduZWQgVikgY29uc3Q7Ci0KLSAgLy8vIE1hdGNoZXMgbWV0YWRhdGEgd2l0aCBoaW50IG5hbWUuCi0gIGJvb2wgbWF0Y2hlc0hpbnRNZXRhZGF0YU5hbWUoTUROb2RlICpOb2RlLCBBcnJheVJlZjxIaW50PiBIaW50VHlwZXMpOwotCi0gIC8vLyBTZXRzIGN1cnJlbnQgaGludHMgaW50byBsb29wIG1ldGFkYXRhLCBrZWVwaW5nIG90aGVyIHZhbHVlcyBpbnRhY3QuCi0gIHZvaWQgd3JpdGVIaW50c1RvTWV0YWRhdGEoQXJyYXlSZWY8SGludD4gSGludFR5cGVzKTsKLQogICAvLy8gVGhlIGxvb3AgdGhlc2UgaGludHMgYmVsb25nIHRvLgogICBjb25zdCBMb29wICpUaGVMb29wOwogCkBAIC0yNDEsNiArMjMzLDEwIEBACiAgIC8vLyBJZiBmYWxzZSwgZ29vZCBvbGQgTFYgY29kZS4KICAgYm9vbCBjYW5WZWN0b3JpemUoYm9vbCBVc2VWUGxhbk5hdGl2ZVBhdGgpOwogCisgIC8vLyBSZXR1cm4gdHJ1ZSBpZiB3ZSBjYW4gdmVjdG9yaXplIHRoaXMgbG9vcCB3aGlsZSBmb2xkaW5nIGl0cyB0YWlsIGJ5CisgIC8vLyBtYXNraW5nLgorICBib29sIGNhbkZvbGRUYWlsQnlNYXNraW5nKCk7CisKICAgLy8vIFJldHVybnMgdGhlIHByaW1hcnkgaW5kdWN0aW9uIHZhcmlhYmxlLgogICBQSElOb2RlICpnZXRQcmltYXJ5SW5kdWN0aW9uKCkgeyByZXR1cm4gUHJpbWFyeUluZHVjdGlvbjsgfQogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1RyYW5zZm9ybXMvVmVjdG9yaXplL0xvb3BWZWN0b3JpemUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9WZWN0b3JpemUvTG9vcFZlY3Rvcml6ZS5oCmluZGV4IGQ3OWQ4NDYuLmNkYmU1ZjYgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9WZWN0b3JpemUvTG9vcFZlY3Rvcml6ZS5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9WZWN0b3JpemUvTG9vcFZlY3Rvcml6ZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIExvb3BWZWN0b3JpemUuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC03OCwxMiArNzcsMTMgQEAKIAogLy8vIFRoZSBMb29wVmVjdG9yaXplIFBhc3MuCiBzdHJ1Y3QgTG9vcFZlY3Rvcml6ZVBhc3MgOiBwdWJsaWMgUGFzc0luZm9NaXhpbjxMb29wVmVjdG9yaXplUGFzcz4gewotICBib29sIERpc2FibGVVbnJvbGxpbmcgPSBmYWxzZTsKKyAgLy8vIElmIGZhbHNlLCBjb25zaWRlciBhbGwgbG9vcHMgZm9yIGludGVybGVhdmluZy4KKyAgLy8vIElmIHRydWUsIG9ubHkgbG9vcHMgdGhhdCBleHBsaWNpdGx5IHJlcXVlc3QgaW50ZXJsZWF2aW5nIGFyZSBjb25zaWRlcmVkLgorICBib29sIEludGVybGVhdmVPbmx5V2hlbkZvcmNlZCA9IGZhbHNlOwogCi0gIC8vLyBJZiB0cnVlLCBjb25zaWRlciBhbGwgbG9vcHMgZm9yIHZlY3Rvcml6YXRpb24uCi0gIC8vLyBJZiBmYWxzZSwgb25seSBsb29wcyB0aGF0IGV4cGxpY2l0bHkgcmVxdWVzdCB2ZWN0b3JpemF0aW9uIGFyZQotICAvLy8gY29uc2lkZXJlZC4KLSAgYm9vbCBBbHdheXNWZWN0b3JpemUgPSB0cnVlOworICAvLy8gSWYgZmFsc2UsIGNvbnNpZGVyIGFsbCBsb29wcyBmb3IgdmVjdG9yaXphdGlvbi4KKyAgLy8vIElmIHRydWUsIG9ubHkgbG9vcHMgdGhhdCBleHBsaWNpdGx5IHJlcXVlc3QgdmVjdG9yaXphdGlvbiBhcmUgY29uc2lkZXJlZC4KKyAgYm9vbCBWZWN0b3JpemVPbmx5V2hlbkZvcmNlZCA9IGZhbHNlOwogCiAgIFNjYWxhckV2b2x1dGlvbiAqU0U7CiAgIExvb3BJbmZvICpMSTsKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vVHJhbnNmb3Jtcy9WZWN0b3JpemUvU0xQVmVjdG9yaXplci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1ZlY3Rvcml6ZS9TTFBWZWN0b3JpemVyLmgKaW5kZXggMzE1MmU4MS4uOWJlNzA1NSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1ZlY3Rvcml6ZS9TTFBWZWN0b3JpemVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9UcmFuc2Zvcm1zL1ZlY3Rvcml6ZS9TTFBWZWN0b3JpemVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gU0xQVmVjdG9yaXplci5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotIEMrKyAtKi09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8gVGhpcyBwYXNzIGltcGxlbWVudHMgdGhlIEJvdHRvbSBVcCBTTFAgdmVjdG9yaXplci4gSXQgZGV0ZWN0cyBjb25zZWN1dGl2ZQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9XaW5kb3dzTWFuaWZlc3QvV2luZG93c01hbmlmZXN0TWVyZ2VyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1dpbmRvd3NNYW5pZmVzdC9XaW5kb3dzTWFuaWZlc3RNZXJnZXIuaAppbmRleCAzMDJkMzcwLi45MzVjOTMwIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1dpbmRvd3NNYW5pZmVzdC9XaW5kb3dzTWFuaWZlc3RNZXJnZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1dpbmRvd3NNYW5pZmVzdC9XaW5kb3dzTWFuaWZlc3RNZXJnZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gV2luZG93c01hbmlmZXN0TWVyZ2VyLmggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vV2luZG93c1Jlc291cmNlL1Jlc291cmNlUHJvY2Vzc29yLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1dpbmRvd3NSZXNvdXJjZS9SZXNvdXJjZVByb2Nlc3Nvci5oCmluZGV4IDRjYTBhNGIuLjRlOTljMDUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vV2luZG93c1Jlc291cmNlL1Jlc291cmNlUHJvY2Vzc29yLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9XaW5kb3dzUmVzb3VyY2UvUmVzb3VyY2VQcm9jZXNzb3IuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gUmVzb3VyY2VQcm9jZXNzb3IuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1dpbmRvd3NSZXNvdXJjZS9SZXNvdXJjZVNjcmlwdFRva2VuLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1dpbmRvd3NSZXNvdXJjZS9SZXNvdXJjZVNjcmlwdFRva2VuLmgKaW5kZXggNDk0YWUzMi4uMjU0MTIxYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9XaW5kb3dzUmVzb3VyY2UvUmVzb3VyY2VTY3JpcHRUb2tlbi5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vV2luZG93c1Jlc291cmNlL1Jlc291cmNlU2NyaXB0VG9rZW4uaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gUmVzb3VyY2VTY3JpcHRUb2tlbi5oIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vV2luZG93c1Jlc291cmNlL1Jlc291cmNlU2NyaXB0VG9rZW5MaXN0LmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1dpbmRvd3NSZXNvdXJjZS9SZXNvdXJjZVNjcmlwdFRva2VuTGlzdC5oCmluZGV4IDBiZWVkMTEuLjZiNDRkY2MgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vV2luZG93c1Jlc291cmNlL1Jlc291cmNlU2NyaXB0VG9rZW5MaXN0LmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9XaW5kb3dzUmVzb3VyY2UvUmVzb3VyY2VTY3JpcHRUb2tlbkxpc3QuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LS0gUmVzb3VyY2VTY3JpcHRUb2tlbkxpc3QuaCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi0gQysrLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9CbG9ja0luZGV4ZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9CbG9ja0luZGV4ZXIuaAppbmRleCA0NmE3MjQzLi5kYWZkMmI1IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvQmxvY2tJbmRleGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L0Jsb2NrSW5kZXhlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEJsb2NrSW5kZXhlci5oIC0gRkRSIEJsb2NrIEluZGV4aW5nIFZpc2l0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC01NCw2ICs1Myw4IEBACiAgIEVycm9yIHZpc2l0KE5ld0J1ZmZlclJlY29yZCAmKSBvdmVycmlkZTsKICAgRXJyb3IgdmlzaXQoRW5kQnVmZmVyUmVjb3JkICYpIG92ZXJyaWRlOwogICBFcnJvciB2aXNpdChGdW5jdGlvblJlY29yZCAmKSBvdmVycmlkZTsKKyAgRXJyb3IgdmlzaXQoQ3VzdG9tRXZlbnRSZWNvcmRWNSAmKSBvdmVycmlkZTsKKyAgRXJyb3IgdmlzaXQoVHlwZWRFdmVudFJlY29yZCAmKSBvdmVycmlkZTsKIAogICAvLy8gVGhlIGZsdXNoKCkgZnVuY3Rpb24gd2lsbCBjbGVhciBvdXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHZpc2l0b3IsIHRvCiAgIC8vLyBhbGxvdyBmb3IgZXhwbGljaXRseSBmbHVzaGluZyBhIGJsb2NrJ3MgcmVjb3JkcyB0byB0aGUgY3VycmVudGx5CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvQmxvY2tQcmludGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvQmxvY2tQcmludGVyLmgKaW5kZXggM2E4ZjZlMC4uOTQ5MjU4MCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L0Jsb2NrUHJpbnRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9CbG9ja1ByaW50ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBCbG9ja1ByaW50ZXIuaCAtIEZEUiBCbG9jayBQcmV0dHkgUHJpbnRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC01MCw2ICs0OSw4IEBACiAgIEVycm9yIHZpc2l0KE5ld0J1ZmZlclJlY29yZCAmKSBvdmVycmlkZTsKICAgRXJyb3IgdmlzaXQoRW5kQnVmZmVyUmVjb3JkICYpIG92ZXJyaWRlOwogICBFcnJvciB2aXNpdChGdW5jdGlvblJlY29yZCAmKSBvdmVycmlkZTsKKyAgRXJyb3IgdmlzaXQoQ3VzdG9tRXZlbnRSZWNvcmRWNSAmKSBvdmVycmlkZTsKKyAgRXJyb3IgdmlzaXQoVHlwZWRFdmVudFJlY29yZCAmKSBvdmVycmlkZTsKIAogICB2b2lkIHJlc2V0KCkgeyBDdXJyZW50U3RhdGUgPSBTdGF0ZTo6U3RhcnQ7IH0KIH07CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvQmxvY2tWZXJpZmllci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L0Jsb2NrVmVyaWZpZXIuaAppbmRleCBiNDNhNDM1Li5jODQ4ZmRmIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvQmxvY2tWZXJpZmllci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9CbG9ja1ZlcmlmaWVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gQmxvY2tWZXJpZmllci5oIC0gRkRSIEJsb2NrIFZlcmlmaWVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTMzLDYgKzMyLDcgQEAKICAgICBOZXdDUFVJZCwKICAgICBUU0NXcmFwLAogICAgIEN1c3RvbUV2ZW50LAorICAgIFR5cGVkRXZlbnQsCiAgICAgRnVuY3Rpb24sCiAgICAgQ2FsbEFyZywKICAgICBFbmRPZkJ1ZmZlciwKQEAgLTU4LDYgKzU4LDggQEAKICAgRXJyb3IgdmlzaXQoTmV3QnVmZmVyUmVjb3JkICYpIG92ZXJyaWRlOwogICBFcnJvciB2aXNpdChFbmRCdWZmZXJSZWNvcmQgJikgb3ZlcnJpZGU7CiAgIEVycm9yIHZpc2l0KEZ1bmN0aW9uUmVjb3JkICYpIG92ZXJyaWRlOworICBFcnJvciB2aXNpdChDdXN0b21FdmVudFJlY29yZFY1ICYpIG92ZXJyaWRlOworICBFcnJvciB2aXNpdChUeXBlZEV2ZW50UmVjb3JkICYpIG92ZXJyaWRlOwogCiAgIEVycm9yIHZlcmlmeSgpOwogICB2b2lkIHJlc2V0KCk7CmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvRkRSTG9nQnVpbGRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L0ZEUkxvZ0J1aWxkZXIuaAppbmRleCBiNWU5ZWQ1Li4zZjQ5ZGM2IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvRkRSTG9nQnVpbGRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9GRFJMb2dCdWlsZGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRkRSTG9nQnVpbGRlci5oIC0gWFJheSBGRFIgTG9nIEJ1aWxkaW5nIFV0aWxpdHkgLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogI2lmbmRlZiBMTFZNX0lOQ0xVREVfTExWTV9YUkFZX0ZEUkxPR0JVSUxERVJfSF8KZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9GRFJSZWNvcmRDb25zdW1lci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L0ZEUlJlY29yZENvbnN1bWVyLmgKaW5kZXggZTg1NmUxNS4uNGZiYjFkNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L0ZEUlJlY29yZENvbnN1bWVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L0ZEUlJlY29yZENvbnN1bWVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gRkRSUmVjb3JkQ29uc3VtZXIuaCAtIFhSYXkgRmxpZ2h0IERhdGEgUmVjb3JkZXIgTW9kZSBSZWNvcmRzIC0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogI2lmbmRlZiBMTFZNX0lOQ0xVREVfTExWTV9YUkFZX0ZEUlJFQ09SRENPTlNVTUVSX0hfCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvRkRSUmVjb3JkUHJvZHVjZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9GRFJSZWNvcmRQcm9kdWNlci5oCmluZGV4IGU2N2UyMjguLmI1MzBhODUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9GRFJSZWNvcmRQcm9kdWNlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9GRFJSZWNvcmRQcm9kdWNlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEZEUlJlY29yZFByb2R1Y2VyLmggLSBYUmF5IEZEUiBNb2RlIFJlY29yZCBQcm9kdWNlciAtLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KICNpZm5kZWYgTExWTV9JTkNMVURFX0xMVk1fWFJBWV9GRFJSRUNPUkRQUk9EVUNFUl9IXwpAQCAtMjksNiArMjgsMTEgQEAKICAgY29uc3QgWFJheUZpbGVIZWFkZXIgJkhlYWRlcjsKICAgRGF0YUV4dHJhY3RvciAmRTsKICAgdWludDMyX3QgJk9mZnNldFB0cjsKKyAgdWludDMyX3QgQ3VycmVudEJ1ZmZlckJ5dGVzID0gMDsKKworICAvLyBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggZ2V0cyB0aGUgbmV4dCByZWNvcmQgYnkgc3BlY3VsYXRpdmVseSByZWFkaW5nIHRocm91Z2gKKyAgLy8gdGhlIGxvZywgZmluZGluZyBhIGJ1ZmZlciBleHRlbnRzIHJlY29yZC4KKyAgRXhwZWN0ZWQ8c3RkOjp1bmlxdWVfcHRyPFJlY29yZD4+IGZpbmROZXh0QnVmZmVyRXh0ZW50KCk7CiAKIHB1YmxpYzoKICAgRmlsZUJhc2VkUmVjb3JkUHJvZHVjZXIoY29uc3QgWFJheUZpbGVIZWFkZXIgJkZILCBEYXRhRXh0cmFjdG9yICZERSwKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9GRFJSZWNvcmRzLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvRkRSUmVjb3Jkcy5oCmluZGV4IGM1MjRkYWIuLmE4Y2U3NGIgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9GRFJSZWNvcmRzLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L0ZEUlJlY29yZHMuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBGRFJSZWNvcmRzLmggLSBYUmF5IEZsaWdodCBEYXRhIFJlY29yZGVyIE1vZGUgUmVjb3JkcyAtLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMTQsMTAgKzEzLDE0IEBACiAjaWZuZGVmIExMVk1fTElCX1hSQVlfRkRSUkVDT1JEU19IXwogI2RlZmluZSBMTFZNX0xJQl9YUkFZX0ZEUlJFQ09SRFNfSF8KIAorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8c3RyaW5nPgorCisjaW5jbHVkZSAibGx2bS9BRFQvU3RyaW5nUmVmLmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0Nhc3RpbmcuaCIKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvRGF0YUV4dHJhY3Rvci5oIgogI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9FcnJvci5oIgogI2luY2x1ZGUgImxsdm0vWFJheS9YUmF5UmVjb3JkLmgiCi0jaW5jbHVkZSA8Y3N0ZGludD4KIAogbmFtZXNwYWNlIGxsdm0gewogbmFtZXNwYWNlIHhyYXkgewpAQCAtMjYsMjEgKzI5LDM3IEBACiBjbGFzcyBSZWNvcmRJbml0aWFsaXplcjsKIAogY2xhc3MgUmVjb3JkIHsKLXByb3RlY3RlZDoKLSAgZW51bSBjbGFzcyBUeXBlIHsKLSAgICBVbmtub3duLAotICAgIEZ1bmN0aW9uLAotICAgIE1ldGFkYXRhLAorcHVibGljOgorICBlbnVtIGNsYXNzIFJlY29yZEtpbmQgeworICAgIFJLX01ldGFkYXRhLAorICAgIFJLX01ldGFkYXRhX0J1ZmZlckV4dGVudHMsCisgICAgUktfTWV0YWRhdGFfV2FsbENsb2NrVGltZSwKKyAgICBSS19NZXRhZGF0YV9OZXdDUFVJZCwKKyAgICBSS19NZXRhZGF0YV9UU0NXcmFwLAorICAgIFJLX01ldGFkYXRhX0N1c3RvbUV2ZW50LAorICAgIFJLX01ldGFkYXRhX0N1c3RvbUV2ZW50VjUsCisgICAgUktfTWV0YWRhdGFfQ2FsbEFyZywKKyAgICBSS19NZXRhZGF0YV9QSURFbnRyeSwKKyAgICBSS19NZXRhZGF0YV9OZXdCdWZmZXIsCisgICAgUktfTWV0YWRhdGFfRW5kT2ZCdWZmZXIsCisgICAgUktfTWV0YWRhdGFfVHlwZWRFdmVudCwKKyAgICBSS19NZXRhZGF0YV9MYXN0TWV0YWRhdGEsCisgICAgUktfRnVuY3Rpb24sCiAgIH07CiAKKyAgc3RhdGljIFN0cmluZ1JlZiBraW5kVG9TdHJpbmcoUmVjb3JkS2luZCBLKTsKKworcHJpdmF0ZToKKyAgY29uc3QgUmVjb3JkS2luZCBUOworCiBwdWJsaWM6CiAgIFJlY29yZChjb25zdCBSZWNvcmQgJikgPSBkZWxldGU7CiAgIFJlY29yZChSZWNvcmQgJiYpID0gZGVsZXRlOwogICBSZWNvcmQgJm9wZXJhdG9yPShjb25zdCBSZWNvcmQgJikgPSBkZWxldGU7CiAgIFJlY29yZCAmb3BlcmF0b3I9KFJlY29yZCAmJikgPSBkZWxldGU7Ci0gIFJlY29yZCgpID0gZGVmYXVsdDsKKyAgZXhwbGljaXQgUmVjb3JkKFJlY29yZEtpbmQgVCkgOiBUKFQpIHt9CiAKLSAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CisgIFJlY29yZEtpbmQgZ2V0UmVjb3JkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFQ7IH0KIAogICAvLyBFYWNoIFJlY29yZCBzaG91bGQgYmUgYWJsZSB0byBhcHBseSBhbiBhYnN0cmFjdCB2aXNpdG9yLCBhbmQgY2hvb3NlIHRoZQogICAvLyBhcHByb3ByaWF0ZSBmdW5jdGlvbiBpbiB0aGUgdmlzaXRvciB0byBpbnZva2UsIGdpdmVuIGl0cyBvd24gdHlwZS4KQEAgLTUwLDEwICs2OSw2IEBACiB9OwogCiBjbGFzcyBNZXRhZGF0YVJlY29yZCA6IHB1YmxpYyBSZWNvcmQgewotcHJvdGVjdGVkOgotICBzdGF0aWMgY29uc3RleHByIGludCBrTWV0YWRhdGFCb2R5U2l6ZSA9IDE1OwotICBmcmllbmQgY2xhc3MgUmVjb3JkSW5pdGlhbGl6ZXI7Ci0KIHB1YmxpYzoKICAgZW51bSBjbGFzcyBNZXRhZGF0YVR5cGUgOiB1bnNpZ25lZCB7CiAgICAgVW5rbm93biwKQEAgLTY2LDEzICs4MSwyNSBAQAogICAgIFBJREVudHJ5LAogICAgIE5ld0J1ZmZlciwKICAgICBFbmRPZkJ1ZmZlciwKKyAgICBUeXBlZEV2ZW50LAogICB9OwogCi0gIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFR5cGU6Ok1ldGFkYXRhOyB9Citwcm90ZWN0ZWQ6CisgIHN0YXRpYyBjb25zdGV4cHIgaW50IGtNZXRhZGF0YUJvZHlTaXplID0gMTU7CisgIGZyaWVuZCBjbGFzcyBSZWNvcmRJbml0aWFsaXplcjsKIAotICAvLyBBbGwgbWV0YWRhdGEgcmVjb3JkcyBtdXN0IGtub3cgdG8gcHJvdmlkZSB0aGUgdHlwZSBvZiB0aGVpciBvcGVuCi0gIC8vIG1ldGFkYXRhIHJlY29yZC4KLSAgdmlydHVhbCBNZXRhZGF0YVR5cGUgbWV0YWRhdGFUeXBlKCkgY29uc3QgPSAwOworcHJpdmF0ZToKKyAgY29uc3QgTWV0YWRhdGFUeXBlIE1UOworCitwdWJsaWM6CisgIGV4cGxpY2l0IE1ldGFkYXRhUmVjb3JkKFJlY29yZEtpbmQgVCwgTWV0YWRhdGFUeXBlIE0pIDogUmVjb3JkKFQpLCBNVChNKSB7fQorCisgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgUmVjb3JkICpSKSB7CisgICAgcmV0dXJuIFItPmdldFJlY29yZFR5cGUoKSA+PSBSZWNvcmRLaW5kOjpSS19NZXRhZGF0YSAmJgorICAgICAgICAgICBSLT5nZXRSZWNvcmRUeXBlKCkgPD0gUmVjb3JkS2luZDo6UktfTWV0YWRhdGFfTGFzdE1ldGFkYXRhOworICB9CisKKyAgTWV0YWRhdGFUeXBlIG1ldGFkYXRhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIE1UOyB9CiAKICAgdmlydHVhbCB+TWV0YWRhdGFSZWNvcmQoKSA9IGRlZmF1bHQ7CiB9OwpAQCAtODUsMTYgKzExMiwyMiBAQAogICBmcmllbmQgY2xhc3MgUmVjb3JkSW5pdGlhbGl6ZXI7CiAKIHB1YmxpYzoKLSAgQnVmZmVyRXh0ZW50cygpID0gZGVmYXVsdDsKLSAgZXhwbGljaXQgQnVmZmVyRXh0ZW50cyh1aW50NjRfdCBTKSA6IE1ldGFkYXRhUmVjb3JkKCksIFNpemUoUykge30KKyAgQnVmZmVyRXh0ZW50cygpCisgICAgICA6IE1ldGFkYXRhUmVjb3JkKFJlY29yZEtpbmQ6OlJLX01ldGFkYXRhX0J1ZmZlckV4dGVudHMsCisgICAgICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhVHlwZTo6QnVmZmVyRXh0ZW50cykge30KIAotICBNZXRhZGF0YVR5cGUgbWV0YWRhdGFUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgewotICAgIHJldHVybiBNZXRhZGF0YVR5cGU6OkJ1ZmZlckV4dGVudHM7Ci0gIH0KKyAgZXhwbGljaXQgQnVmZmVyRXh0ZW50cyh1aW50NjRfdCBTKQorICAgICAgOiBNZXRhZGF0YVJlY29yZChSZWNvcmRLaW5kOjpSS19NZXRhZGF0YV9CdWZmZXJFeHRlbnRzLAorICAgICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YVR5cGU6OkJ1ZmZlckV4dGVudHMpLAorICAgICAgICBTaXplKFMpIHt9CiAKICAgdWludDY0X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIFNpemU7IH0KIAogICBFcnJvciBhcHBseShSZWNvcmRWaXNpdG9yICZWKSBvdmVycmlkZTsKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFJlY29yZCAqUikgeworICAgIHJldHVybiBSLT5nZXRSZWNvcmRUeXBlKCkgPT0gUmVjb3JkS2luZDo6UktfTWV0YWRhdGFfQnVmZmVyRXh0ZW50czsKKyAgfQogfTsKIAogY2xhc3MgV2FsbGNsb2NrUmVjb3JkIDogcHVibGljIE1ldGFkYXRhUmVjb3JkIHsKQEAgLTEwMywxOCArMTM2LDIzIEBACiAgIGZyaWVuZCBjbGFzcyBSZWNvcmRJbml0aWFsaXplcjsKIAogcHVibGljOgotICBXYWxsY2xvY2tSZWNvcmQoKSA9IGRlZmF1bHQ7Ci0gIGV4cGxpY2l0IFdhbGxjbG9ja1JlY29yZCh1aW50NjRfdCBTLCB1aW50MzJfdCBOKQotICAgICAgOiBNZXRhZGF0YVJlY29yZCgpLCBTZWNvbmRzKFMpLCBOYW5vcyhOKSB7fQorICBXYWxsY2xvY2tSZWNvcmQoKQorICAgICAgOiBNZXRhZGF0YVJlY29yZChSZWNvcmRLaW5kOjpSS19NZXRhZGF0YV9XYWxsQ2xvY2tUaW1lLAorICAgICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YVR5cGU6OldhbGxDbG9ja1RpbWUpIHt9CiAKLSAgTWV0YWRhdGFUeXBlIG1ldGFkYXRhVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsKLSAgICByZXR1cm4gTWV0YWRhdGFUeXBlOjpXYWxsQ2xvY2tUaW1lOwotICB9CisgIGV4cGxpY2l0IFdhbGxjbG9ja1JlY29yZCh1aW50NjRfdCBTLCB1aW50MzJfdCBOKQorICAgICAgOiBNZXRhZGF0YVJlY29yZChSZWNvcmRLaW5kOjpSS19NZXRhZGF0YV9XYWxsQ2xvY2tUaW1lLAorICAgICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YVR5cGU6OldhbGxDbG9ja1RpbWUpLAorICAgICAgICBTZWNvbmRzKFMpLCBOYW5vcyhOKSB7fQogCiAgIHVpbnQ2NF90IHNlY29uZHMoKSBjb25zdCB7IHJldHVybiBTZWNvbmRzOyB9CiAgIHVpbnQzMl90IG5hbm9zKCkgY29uc3QgeyByZXR1cm4gTmFub3M7IH0KIAogICBFcnJvciBhcHBseShSZWNvcmRWaXNpdG9yICZWKSBvdmVycmlkZTsKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFJlY29yZCAqUikgeworICAgIHJldHVybiBSLT5nZXRSZWNvcmRUeXBlKCkgPT0gUmVjb3JkS2luZDo6UktfTWV0YWRhdGFfV2FsbENsb2NrVGltZTsKKyAgfQogfTsKIAogY2xhc3MgTmV3Q1BVSURSZWNvcmQgOiBwdWJsaWMgTWV0YWRhdGFSZWNvcmQgewpAQCAtMTIzLDE2ICsxNjEsMjQgQEAKICAgZnJpZW5kIGNsYXNzIFJlY29yZEluaXRpYWxpemVyOwogCiBwdWJsaWM6Ci0gIE5ld0NQVUlEUmVjb3JkKCkgPSBkZWZhdWx0OwotICBOZXdDUFVJRFJlY29yZCh1aW50MTZfdCBDLCB1aW50NjRfdCBUKSA6IE1ldGFkYXRhUmVjb3JkKCksIENQVUlkKEMpLCBUU0MoVCkge30KKyAgTmV3Q1BVSURSZWNvcmQoKQorICAgICAgOiBNZXRhZGF0YVJlY29yZChSZWNvcmRLaW5kOjpSS19NZXRhZGF0YV9OZXdDUFVJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGFUeXBlOjpOZXdDUFVJZCkge30KIAotICBNZXRhZGF0YVR5cGUgbWV0YWRhdGFUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWV0YWRhdGFUeXBlOjpOZXdDUFVJZDsgfQorICBOZXdDUFVJRFJlY29yZCh1aW50MTZfdCBDLCB1aW50NjRfdCBUKQorICAgICAgOiBNZXRhZGF0YVJlY29yZChSZWNvcmRLaW5kOjpSS19NZXRhZGF0YV9OZXdDUFVJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGFUeXBlOjpOZXdDUFVJZCksCisgICAgICAgIENQVUlkKEMpLCBUU0MoVCkge30KIAogICB1aW50MTZfdCBjcHVpZCgpIGNvbnN0IHsgcmV0dXJuIENQVUlkOyB9CiAKICAgdWludDY0X3QgdHNjKCkgY29uc3QgeyByZXR1cm4gVFNDOyB9CiAKICAgRXJyb3IgYXBwbHkoUmVjb3JkVmlzaXRvciAmVikgb3ZlcnJpZGU7CisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBSZWNvcmQgKlIpIHsKKyAgICByZXR1cm4gUi0+Z2V0UmVjb3JkVHlwZSgpID09IFJlY29yZEtpbmQ6OlJLX01ldGFkYXRhX05ld0NQVUlkOworICB9CiB9OwogCiBjbGFzcyBUU0NXcmFwUmVjb3JkIDogcHVibGljIE1ldGFkYXRhUmVjb3JkIHsKQEAgLTE0MCwzNiArMTg2LDEwNiBAQAogICBmcmllbmQgY2xhc3MgUmVjb3JkSW5pdGlhbGl6ZXI7CiAKIHB1YmxpYzoKLSAgVFNDV3JhcFJlY29yZCgpID0gZGVmYXVsdDsKLSAgZXhwbGljaXQgVFNDV3JhcFJlY29yZCh1aW50NjRfdCBCKSA6IE1ldGFkYXRhUmVjb3JkKCksIEJhc2VUU0MoQikge30KKyAgVFNDV3JhcFJlY29yZCgpCisgICAgICA6IE1ldGFkYXRhUmVjb3JkKFJlY29yZEtpbmQ6OlJLX01ldGFkYXRhX1RTQ1dyYXAsIE1ldGFkYXRhVHlwZTo6VFNDV3JhcCkgeworICB9CiAKLSAgTWV0YWRhdGFUeXBlIG1ldGFkYXRhVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1ldGFkYXRhVHlwZTo6VFNDV3JhcDsgfQorICBleHBsaWNpdCBUU0NXcmFwUmVjb3JkKHVpbnQ2NF90IEIpCisgICAgICA6IE1ldGFkYXRhUmVjb3JkKFJlY29yZEtpbmQ6OlJLX01ldGFkYXRhX1RTQ1dyYXAsIE1ldGFkYXRhVHlwZTo6VFNDV3JhcCksCisgICAgICAgIEJhc2VUU0MoQikge30KIAogICB1aW50NjRfdCB0c2MoKSBjb25zdCB7IHJldHVybiBCYXNlVFNDOyB9CiAKICAgRXJyb3IgYXBwbHkoUmVjb3JkVmlzaXRvciAmVikgb3ZlcnJpZGU7CisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBSZWNvcmQgKlIpIHsKKyAgICByZXR1cm4gUi0+Z2V0UmVjb3JkVHlwZSgpID09IFJlY29yZEtpbmQ6OlJLX01ldGFkYXRhX1RTQ1dyYXA7CisgIH0KIH07CiAKIGNsYXNzIEN1c3RvbUV2ZW50UmVjb3JkIDogcHVibGljIE1ldGFkYXRhUmVjb3JkIHsKICAgaW50MzJfdCBTaXplID0gMDsKICAgdWludDY0X3QgVFNDID0gMDsKKyAgdWludDE2X3QgQ1BVID0gMDsKICAgc3RkOjpzdHJpbmcgRGF0YXt9OwogICBmcmllbmQgY2xhc3MgUmVjb3JkSW5pdGlhbGl6ZXI7CiAKIHB1YmxpYzoKLSAgQ3VzdG9tRXZlbnRSZWNvcmQoKSA9IGRlZmF1bHQ7Ci0gIGV4cGxpY2l0IEN1c3RvbUV2ZW50UmVjb3JkKHVpbnQ2NF90IFMsIHVpbnQ2NF90IFQsIHN0ZDo6c3RyaW5nIEQpCi0gICAgICA6IE1ldGFkYXRhUmVjb3JkKCksIFNpemUoUyksIFRTQyhUKSwgRGF0YShzdGQ6Om1vdmUoRCkpIHt9CisgIEN1c3RvbUV2ZW50UmVjb3JkKCkKKyAgICAgIDogTWV0YWRhdGFSZWNvcmQoUmVjb3JkS2luZDo6UktfTWV0YWRhdGFfQ3VzdG9tRXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhVHlwZTo6Q3VzdG9tRXZlbnQpIHt9CiAKLSAgTWV0YWRhdGFUeXBlIG1ldGFkYXRhVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsKLSAgICByZXR1cm4gTWV0YWRhdGFUeXBlOjpDdXN0b21FdmVudDsKLSAgfQorICBleHBsaWNpdCBDdXN0b21FdmVudFJlY29yZCh1aW50NjRfdCBTLCB1aW50NjRfdCBULCB1aW50MTZfdCBDLCBzdGQ6OnN0cmluZyBEKQorICAgICAgOiBNZXRhZGF0YVJlY29yZChSZWNvcmRLaW5kOjpSS19NZXRhZGF0YV9DdXN0b21FdmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGFUeXBlOjpDdXN0b21FdmVudCksCisgICAgICAgIFNpemUoUyksIFRTQyhUKSwgQ1BVKEMpLCBEYXRhKHN0ZDo6bW92ZShEKSkge30KIAogICBpbnQzMl90IHNpemUoKSBjb25zdCB7IHJldHVybiBTaXplOyB9CiAgIHVpbnQ2NF90IHRzYygpIGNvbnN0IHsgcmV0dXJuIFRTQzsgfQorICB1aW50MTZfdCBjcHUoKSBjb25zdCB7IHJldHVybiBDUFU7IH0KICAgU3RyaW5nUmVmIGRhdGEoKSBjb25zdCB7IHJldHVybiBEYXRhOyB9CiAKICAgRXJyb3IgYXBwbHkoUmVjb3JkVmlzaXRvciAmVikgb3ZlcnJpZGU7CisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBSZWNvcmQgKlIpIHsKKyAgICByZXR1cm4gUi0+Z2V0UmVjb3JkVHlwZSgpID09IFJlY29yZEtpbmQ6OlJLX01ldGFkYXRhX0N1c3RvbUV2ZW50OworICB9Cit9OworCitjbGFzcyBDdXN0b21FdmVudFJlY29yZFY1IDogcHVibGljIE1ldGFkYXRhUmVjb3JkIHsKKyAgaW50MzJfdCBTaXplID0gMDsKKyAgaW50MzJfdCBEZWx0YSA9IDA7CisgIHN0ZDo6c3RyaW5nIERhdGF7fTsKKyAgZnJpZW5kIGNsYXNzIFJlY29yZEluaXRpYWxpemVyOworCitwdWJsaWM6CisgIEN1c3RvbUV2ZW50UmVjb3JkVjUoKQorICAgICAgOiBNZXRhZGF0YVJlY29yZChSZWNvcmRLaW5kOjpSS19NZXRhZGF0YV9DdXN0b21FdmVudFY1LAorICAgICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YVR5cGU6OkN1c3RvbUV2ZW50KSB7fQorCisgIGV4cGxpY2l0IEN1c3RvbUV2ZW50UmVjb3JkVjUoaW50MzJfdCBTLCBpbnQzMl90IEQsIHN0ZDo6c3RyaW5nIFApCisgICAgICA6IE1ldGFkYXRhUmVjb3JkKFJlY29yZEtpbmQ6OlJLX01ldGFkYXRhX0N1c3RvbUV2ZW50VjUsCisgICAgICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhVHlwZTo6Q3VzdG9tRXZlbnQpLAorICAgICAgICBTaXplKFMpLCBEZWx0YShEKSwgRGF0YShzdGQ6Om1vdmUoUCkpIHt9CisKKyAgaW50MzJfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gU2l6ZTsgfQorICBpbnQzMl90IGRlbHRhKCkgY29uc3QgeyByZXR1cm4gRGVsdGE7IH0KKyAgU3RyaW5nUmVmIGRhdGEoKSBjb25zdCB7IHJldHVybiBEYXRhOyB9CisKKyAgRXJyb3IgYXBwbHkoUmVjb3JkVmlzaXRvciAmVikgb3ZlcnJpZGU7CisKKyAgc3RhdGljIGJvb2wgY2xhc3NvZihjb25zdCBSZWNvcmQgKlIpIHsKKyAgICByZXR1cm4gUi0+Z2V0UmVjb3JkVHlwZSgpID09IFJlY29yZEtpbmQ6OlJLX01ldGFkYXRhX0N1c3RvbUV2ZW50VjU7CisgIH0KK307CisKK2NsYXNzIFR5cGVkRXZlbnRSZWNvcmQgOiBwdWJsaWMgTWV0YWRhdGFSZWNvcmQgeworICBpbnQzMl90IFNpemUgPSAwOworICBpbnQzMl90IERlbHRhID0gMDsKKyAgdWludDE2X3QgRXZlbnRUeXBlID0gMDsKKyAgc3RkOjpzdHJpbmcgRGF0YXt9OworICBmcmllbmQgY2xhc3MgUmVjb3JkSW5pdGlhbGl6ZXI7CisKK3B1YmxpYzoKKyAgVHlwZWRFdmVudFJlY29yZCgpCisgICAgICA6IE1ldGFkYXRhUmVjb3JkKFJlY29yZEtpbmQ6OlJLX01ldGFkYXRhX1R5cGVkRXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhVHlwZTo6VHlwZWRFdmVudCkge30KKworICBleHBsaWNpdCBUeXBlZEV2ZW50UmVjb3JkKGludDMyX3QgUywgaW50MzJfdCBELCB1aW50MTZfdCBFLCBzdGQ6OnN0cmluZyBQKQorICAgICAgOiBNZXRhZGF0YVJlY29yZChSZWNvcmRLaW5kOjpSS19NZXRhZGF0YV9UeXBlZEV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YVR5cGU6OlR5cGVkRXZlbnQpLAorICAgICAgICBTaXplKFMpLCBEZWx0YShEKSwgRGF0YShzdGQ6Om1vdmUoUCkpIHt9CisKKyAgaW50MzJfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gU2l6ZTsgfQorICBpbnQzMl90IGRlbHRhKCkgY29uc3QgeyByZXR1cm4gRGVsdGE7IH0KKyAgdWludDE2X3QgZXZlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gRXZlbnRUeXBlOyB9CisgIFN0cmluZ1JlZiBkYXRhKCkgY29uc3QgeyByZXR1cm4gRGF0YTsgfQorCisgIEVycm9yIGFwcGx5KFJlY29yZFZpc2l0b3IgJlYpIG92ZXJyaWRlOworCisgIHN0YXRpYyBib29sIGNsYXNzb2YoY29uc3QgUmVjb3JkICpSKSB7CisgICAgcmV0dXJuIFItPmdldFJlY29yZFR5cGUoKSA9PSBSZWNvcmRLaW5kOjpSS19NZXRhZGF0YV9UeXBlZEV2ZW50OworICB9CiB9OwogCiBjbGFzcyBDYWxsQXJnUmVjb3JkIDogcHVibGljIE1ldGFkYXRhUmVjb3JkIHsKQEAgLTE3NywxNCArMjkzLDIxIEBACiAgIGZyaWVuZCBjbGFzcyBSZWNvcmRJbml0aWFsaXplcjsKIAogcHVibGljOgotICBDYWxsQXJnUmVjb3JkKCkgPSBkZWZhdWx0OwotICBleHBsaWNpdCBDYWxsQXJnUmVjb3JkKHVpbnQ2NF90IEEpIDogTWV0YWRhdGFSZWNvcmQoKSwgQXJnKEEpIHt9CisgIENhbGxBcmdSZWNvcmQoKQorICAgICAgOiBNZXRhZGF0YVJlY29yZChSZWNvcmRLaW5kOjpSS19NZXRhZGF0YV9DYWxsQXJnLCBNZXRhZGF0YVR5cGU6OkNhbGxBcmcpIHsKKyAgfQogCi0gIE1ldGFkYXRhVHlwZSBtZXRhZGF0YVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZXRhZGF0YVR5cGU6OkNhbGxBcmc7IH0KKyAgZXhwbGljaXQgQ2FsbEFyZ1JlY29yZCh1aW50NjRfdCBBKQorICAgICAgOiBNZXRhZGF0YVJlY29yZChSZWNvcmRLaW5kOjpSS19NZXRhZGF0YV9DYWxsQXJnLCBNZXRhZGF0YVR5cGU6OkNhbGxBcmcpLAorICAgICAgICBBcmcoQSkge30KIAogICB1aW50NjRfdCBhcmcoKSBjb25zdCB7IHJldHVybiBBcmc7IH0KIAogICBFcnJvciBhcHBseShSZWNvcmRWaXNpdG9yICZWKSBvdmVycmlkZTsKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFJlY29yZCAqUikgeworICAgIHJldHVybiBSLT5nZXRSZWNvcmRUeXBlKCkgPT0gUmVjb3JkS2luZDo6UktfTWV0YWRhdGFfQ2FsbEFyZzsKKyAgfQogfTsKIAogY2xhc3MgUElEUmVjb3JkIDogcHVibGljIE1ldGFkYXRhUmVjb3JkIHsKQEAgLTE5MiwxNCArMzE1LDIyIEBACiAgIGZyaWVuZCBjbGFzcyBSZWNvcmRJbml0aWFsaXplcjsKIAogcHVibGljOgotICBQSURSZWNvcmQoKSA9IGRlZmF1bHQ7Ci0gIGV4cGxpY2l0IFBJRFJlY29yZChpbnQzMl90IFApIDogTWV0YWRhdGFSZWNvcmQoKSwgUElEKFApIHt9CisgIFBJRFJlY29yZCgpCisgICAgICA6IE1ldGFkYXRhUmVjb3JkKFJlY29yZEtpbmQ6OlJLX01ldGFkYXRhX1BJREVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YVR5cGU6OlBJREVudHJ5KSB7fQogCi0gIE1ldGFkYXRhVHlwZSBtZXRhZGF0YVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZXRhZGF0YVR5cGU6OlBJREVudHJ5OyB9CisgIGV4cGxpY2l0IFBJRFJlY29yZChpbnQzMl90IFApCisgICAgICA6IE1ldGFkYXRhUmVjb3JkKFJlY29yZEtpbmQ6OlJLX01ldGFkYXRhX1BJREVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YVR5cGU6OlBJREVudHJ5KSwKKyAgICAgICAgUElEKFApIHt9CiAKICAgaW50MzJfdCBwaWQoKSBjb25zdCB7IHJldHVybiBQSUQ7IH0KIAogICBFcnJvciBhcHBseShSZWNvcmRWaXNpdG9yICZWKSBvdmVycmlkZTsKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFJlY29yZCAqUikgeworICAgIHJldHVybiBSLT5nZXRSZWNvcmRUeXBlKCkgPT0gUmVjb3JkS2luZDo6UktfTWV0YWRhdGFfUElERW50cnk7CisgIH0KIH07CiAKIGNsYXNzIE5ld0J1ZmZlclJlY29yZCA6IHB1YmxpYyBNZXRhZGF0YVJlY29yZCB7CkBAIC0yMDcsMjUgKzMzOCwzNSBAQAogICBmcmllbmQgY2xhc3MgUmVjb3JkSW5pdGlhbGl6ZXI7CiAKIHB1YmxpYzoKLSAgTmV3QnVmZmVyUmVjb3JkKCkgPSBkZWZhdWx0OwotICBleHBsaWNpdCBOZXdCdWZmZXJSZWNvcmQoaW50MzJfdCBUKSA6IE1ldGFkYXRhUmVjb3JkKCksIFRJRChUKSB7fQorICBOZXdCdWZmZXJSZWNvcmQoKQorICAgICAgOiBNZXRhZGF0YVJlY29yZChSZWNvcmRLaW5kOjpSS19NZXRhZGF0YV9OZXdCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhVHlwZTo6TmV3QnVmZmVyKSB7fQogCi0gIE1ldGFkYXRhVHlwZSBtZXRhZGF0YVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZXRhZGF0YVR5cGU6Ok5ld0J1ZmZlcjsgfQorICBleHBsaWNpdCBOZXdCdWZmZXJSZWNvcmQoaW50MzJfdCBUKQorICAgICAgOiBNZXRhZGF0YVJlY29yZChSZWNvcmRLaW5kOjpSS19NZXRhZGF0YV9OZXdCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhVHlwZTo6TmV3QnVmZmVyKSwKKyAgICAgICAgVElEKFQpIHt9CiAKICAgaW50MzJfdCB0aWQoKSBjb25zdCB7IHJldHVybiBUSUQ7IH0KIAogICBFcnJvciBhcHBseShSZWNvcmRWaXNpdG9yICZWKSBvdmVycmlkZTsKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFJlY29yZCAqUikgeworICAgIHJldHVybiBSLT5nZXRSZWNvcmRUeXBlKCkgPT0gUmVjb3JkS2luZDo6UktfTWV0YWRhdGFfTmV3QnVmZmVyOworICB9CiB9OwogCiBjbGFzcyBFbmRCdWZmZXJSZWNvcmQgOiBwdWJsaWMgTWV0YWRhdGFSZWNvcmQgewogcHVibGljOgotICBFbmRCdWZmZXJSZWNvcmQoKSA9IGRlZmF1bHQ7Ci0KLSAgTWV0YWRhdGFUeXBlIG1ldGFkYXRhVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsKLSAgICByZXR1cm4gTWV0YWRhdGFUeXBlOjpFbmRPZkJ1ZmZlcjsKLSAgfQorICBFbmRCdWZmZXJSZWNvcmQoKQorICAgICAgOiBNZXRhZGF0YVJlY29yZChSZWNvcmRLaW5kOjpSS19NZXRhZGF0YV9FbmRPZkJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgTWV0YWRhdGFUeXBlOjpFbmRPZkJ1ZmZlcikge30KIAogICBFcnJvciBhcHBseShSZWNvcmRWaXNpdG9yICZWKSBvdmVycmlkZTsKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFJlY29yZCAqUikgeworICAgIHJldHVybiBSLT5nZXRSZWNvcmRUeXBlKCkgPT0gUmVjb3JkS2luZDo6UktfTWV0YWRhdGFfRW5kT2ZCdWZmZXI7CisgIH0KIH07CiAKIGNsYXNzIEZ1bmN0aW9uUmVjb3JkIDogcHVibGljIFJlY29yZCB7CkBAIC0yMzcsMTEgKzM3OCwxMCBAQAogICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGtGdW5jdGlvblJlY29yZFNpemUgPSA4OwogCiBwdWJsaWM6Ci0gIEZ1bmN0aW9uUmVjb3JkKCkgPSBkZWZhdWx0OwotICBleHBsaWNpdCBGdW5jdGlvblJlY29yZChSZWNvcmRUeXBlcyBLLCBpbnQzMl90IEYsIHVpbnQzMl90IEQpCi0gICAgICA6IFJlY29yZCgpLCBLaW5kKEspLCBGdW5jSWQoRiksIERlbHRhKEQpIHt9CisgIEZ1bmN0aW9uUmVjb3JkKCkgOiBSZWNvcmQoUmVjb3JkS2luZDo6UktfRnVuY3Rpb24pIHt9CiAKLSAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVHlwZTo6RnVuY3Rpb247IH0KKyAgZXhwbGljaXQgRnVuY3Rpb25SZWNvcmQoUmVjb3JkVHlwZXMgSywgaW50MzJfdCBGLCB1aW50MzJfdCBEKQorICAgICAgOiBSZWNvcmQoUmVjb3JkS2luZDo6UktfRnVuY3Rpb24pLCBLaW5kKEspLCBGdW5jSWQoRiksIERlbHRhKEQpIHt9CiAKICAgLy8gQSBmdW5jdGlvbiByZWNvcmQgaXMgYSBjb25jcmV0ZSByZWNvcmQgdHlwZSB3aGljaCBoYXMgYSBudW1iZXIgb2YgY29tbW9uCiAgIC8vIHByb3BlcnRpZXMuCkBAIC0yNTAsNiArMzkwLDEwIEBACiAgIHVpbnQzMl90IGRlbHRhKCkgY29uc3QgeyByZXR1cm4gRGVsdGE7IH0KIAogICBFcnJvciBhcHBseShSZWNvcmRWaXNpdG9yICZWKSBvdmVycmlkZTsKKworICBzdGF0aWMgYm9vbCBjbGFzc29mKGNvbnN0IFJlY29yZCAqUikgeworICAgIHJldHVybiBSLT5nZXRSZWNvcmRUeXBlKCkgPT0gUmVjb3JkS2luZDo6UktfRnVuY3Rpb247CisgIH0KIH07CiAKIGNsYXNzIFJlY29yZFZpc2l0b3IgewpAQCAtMjY3LDE1ICs0MTEsMjMgQEAKICAgdmlydHVhbCBFcnJvciB2aXNpdChOZXdCdWZmZXJSZWNvcmQgJikgPSAwOwogICB2aXJ0dWFsIEVycm9yIHZpc2l0KEVuZEJ1ZmZlclJlY29yZCAmKSA9IDA7CiAgIHZpcnR1YWwgRXJyb3IgdmlzaXQoRnVuY3Rpb25SZWNvcmQgJikgPSAwOworICB2aXJ0dWFsIEVycm9yIHZpc2l0KEN1c3RvbUV2ZW50UmVjb3JkVjUgJikgPSAwOworICB2aXJ0dWFsIEVycm9yIHZpc2l0KFR5cGVkRXZlbnRSZWNvcmQgJikgPSAwOwogfTsKIAogY2xhc3MgUmVjb3JkSW5pdGlhbGl6ZXIgOiBwdWJsaWMgUmVjb3JkVmlzaXRvciB7CiAgIERhdGFFeHRyYWN0b3IgJkU7CiAgIHVpbnQzMl90ICZPZmZzZXRQdHI7CisgIHVpbnQxNl90IFZlcnNpb247CiAKIHB1YmxpYzoKKyAgc3RhdGljIGNvbnN0ZXhwciB1aW50MTZfdCBEZWZhdWx0VmVyc2lvbiA9IDV1OworCisgIGV4cGxpY2l0IFJlY29yZEluaXRpYWxpemVyKERhdGFFeHRyYWN0b3IgJkRFLCB1aW50MzJfdCAmT1AsIHVpbnQxNl90IFYpCisgICAgICA6IFJlY29yZFZpc2l0b3IoKSwgRShERSksIE9mZnNldFB0cihPUCksIFZlcnNpb24oVikge30KKwogICBleHBsaWNpdCBSZWNvcmRJbml0aWFsaXplcihEYXRhRXh0cmFjdG9yICZERSwgdWludDMyX3QgJk9QKQotICAgICAgOiBSZWNvcmRWaXNpdG9yKCksIEUoREUpLCBPZmZzZXRQdHIoT1ApIHt9CisgICAgICA6IFJlY29yZEluaXRpYWxpemVyKERFLCBPUCwgRGVmYXVsdFZlcnNpb24pIHt9CiAKICAgRXJyb3IgdmlzaXQoQnVmZmVyRXh0ZW50cyAmKSBvdmVycmlkZTsKICAgRXJyb3IgdmlzaXQoV2FsbGNsb2NrUmVjb3JkICYpIG92ZXJyaWRlOwpAQCAtMjg3LDYgKzQzOSw4IEBACiAgIEVycm9yIHZpc2l0KE5ld0J1ZmZlclJlY29yZCAmKSBvdmVycmlkZTsKICAgRXJyb3IgdmlzaXQoRW5kQnVmZmVyUmVjb3JkICYpIG92ZXJyaWRlOwogICBFcnJvciB2aXNpdChGdW5jdGlvblJlY29yZCAmKSBvdmVycmlkZTsKKyAgRXJyb3IgdmlzaXQoQ3VzdG9tRXZlbnRSZWNvcmRWNSAmKSBvdmVycmlkZTsKKyAgRXJyb3IgdmlzaXQoVHlwZWRFdmVudFJlY29yZCAmKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIHhyYXkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9GRFJUcmFjZUV4cGFuZGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvRkRSVHJhY2VFeHBhbmRlci5oCmluZGV4IDdmODIzNmIuLmYzYzM2Y2YgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9GRFJUcmFjZUV4cGFuZGVyLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L0ZEUlRyYWNlRXhwYW5kZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBGRFJUcmFjZUV4cGFuZGVyLmggLSBYUmF5IEZEUiBNb2RlIExvZyBFeHBhbmRlciAtLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtMjcsMTAgKzI2LDEwIEBACiAgIGludDMyX3QgUElEID0gMDsKICAgaW50MzJfdCBUSUQgPSAwOwogICB1aW50NjRfdCBCYXNlVFNDID0gMDsKLSAgWFJheVJlY29yZCBDdXJyZW50UmVjb3JkezAsIDAsIFJlY29yZFR5cGVzOjpFTlRFUiwgMCwgMCwgMCwgMCwge319OworICBYUmF5UmVjb3JkIEN1cnJlbnRSZWNvcmR7MCwgMCwgUmVjb3JkVHlwZXM6OkVOVEVSLCAwLCAwLCAwLCAwLCB7fSwge319OwogICB1aW50MTZfdCBDUFVJZCA9IDA7CiAgIHVpbnQxNl90IExvZ1ZlcnNpb24gPSAwOwotICBib29sIEJ1aWxkaW5nRnVuY3Rpb24gPSBmYWxzZTsKKyAgYm9vbCBCdWlsZGluZ1JlY29yZCA9IGZhbHNlOwogICBib29sIElnbm9yaW5nUmVjb3JkcyA9IGZhbHNlOwogCiAgIHZvaWQgcmVzZXRDdXJyZW50UmVjb3JkKCk7CkBAIC00OSw2ICs0OCw4IEBACiAgIEVycm9yIHZpc2l0KE5ld0J1ZmZlclJlY29yZCAmKSBvdmVycmlkZTsKICAgRXJyb3IgdmlzaXQoRW5kQnVmZmVyUmVjb3JkICYpIG92ZXJyaWRlOwogICBFcnJvciB2aXNpdChGdW5jdGlvblJlY29yZCAmKSBvdmVycmlkZTsKKyAgRXJyb3IgdmlzaXQoQ3VzdG9tRXZlbnRSZWNvcmRWNSAmKSBvdmVycmlkZTsKKyAgRXJyb3IgdmlzaXQoVHlwZWRFdmVudFJlY29yZCAmKSBvdmVycmlkZTsKIAogICAvLyBNdXN0IGJlIGNhbGxlZCBhZnRlciBhbGwgdGhlIHJlY29yZHMgaGF2ZSBiZWVuIHByb2Nlc3NlZCwgdG8gaGFuZGxlIHRoZQogICAvLyBtb3N0IHJlY2VudCByZWNvcmQgZ2VuZXJhdGVkLgpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L0ZEUlRyYWNlV3JpdGVyLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvRkRSVHJhY2VXcml0ZXIuaAppbmRleCA5MTQ4OGY4Li4yNDk4ODc3IDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvRkRSVHJhY2VXcml0ZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvRkRSVHJhY2VXcml0ZXIuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBGRFJUcmFjZVdyaXRlci5oIC0gWFJheSBGRFIgVHJhY2UgV3JpdGVyIC0tLS0tLS0tLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpAQCAtNDMsNiArNDIsOCBAQAogICBFcnJvciB2aXNpdChOZXdCdWZmZXJSZWNvcmQgJikgb3ZlcnJpZGU7CiAgIEVycm9yIHZpc2l0KEVuZEJ1ZmZlclJlY29yZCAmKSBvdmVycmlkZTsKICAgRXJyb3IgdmlzaXQoRnVuY3Rpb25SZWNvcmQgJikgb3ZlcnJpZGU7CisgIEVycm9yIHZpc2l0KEN1c3RvbUV2ZW50UmVjb3JkVjUgJikgb3ZlcnJpZGU7CisgIEVycm9yIHZpc2l0KFR5cGVkRXZlbnRSZWNvcmQgJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgIHN1cHBvcnQ6OmVuZGlhbjo6V3JpdGVyIE9TOwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L0ZpbGVIZWFkZXJSZWFkZXIuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9GaWxlSGVhZGVyUmVhZGVyLmgKaW5kZXggM2I4ODA5Yi4uMWM5NjgxYyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L0ZpbGVIZWFkZXJSZWFkZXIuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvRmlsZUhlYWRlclJlYWRlci5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIEZpbGVIZWFkZXJSZWFkZXIuaCAtIFhSYXkgVHJhY2UgRmlsZSBIZWFkZXIgUmVhZGluZyBGdW5jdGlvbiAtLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvR3JhcGguaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9HcmFwaC5oCmluZGV4IGE0ZDM0YTguLjAwNDY4MTUgMTAwNjQ0Ci0tLSBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9HcmFwaC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9HcmFwaC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tLSBHcmFwaC5oIC0gWFJheSBHcmFwaCBDbGFzcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLSBDKysgLSotPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvSW5zdHJ1bWVudGF0aW9uTWFwLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvSW5zdHJ1bWVudGF0aW9uTWFwLmgKaW5kZXggNDJiZmNhMy4uNWNiZTVjNCAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L0luc3RydW1lbnRhdGlvbk1hcC5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9JbnN0cnVtZW50YXRpb25NYXAuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBJbnN0cnVtZW50YXRpb25NYXAuaCAtIFhSYXkgSW5zdHJ1bWVudGF0aW9uIE1hcCAtLS0tLS0tLS0tKi0gQysrIC0qLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L1Byb2ZpbGUuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9Qcm9maWxlLmgKaW5kZXggOTM2NTYzMC4uNzlkOWI1MyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L1Byb2ZpbGUuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvUHJvZmlsZS5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFByb2ZpbGUuaCAtIFhSYXkgUHJvZmlsZSBBYnN0cmFjdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCmRpZmYgLS1naXQgYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvUmVjb3JkUHJpbnRlci5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L1JlY29yZFByaW50ZXIuaAppbmRleCBiYWQxYTU3Li43YzdiN2EzIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvUmVjb3JkUHJpbnRlci5oCisrKyBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9SZWNvcmRQcmludGVyLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gUmVjb3JkUHJpbnRlci5oIC0gRkRSIFJlY29yZCBQcmludGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTQwLDYgKzM5LDggQEAKICAgRXJyb3IgdmlzaXQoTmV3QnVmZmVyUmVjb3JkICYpIG92ZXJyaWRlOwogICBFcnJvciB2aXNpdChFbmRCdWZmZXJSZWNvcmQgJikgb3ZlcnJpZGU7CiAgIEVycm9yIHZpc2l0KEZ1bmN0aW9uUmVjb3JkICYpIG92ZXJyaWRlOworICBFcnJvciB2aXNpdChDdXN0b21FdmVudFJlY29yZFY1ICYpIG92ZXJyaWRlOworICBFcnJvciB2aXNpdChUeXBlZEV2ZW50UmVjb3JkICYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgeHJheQpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L1RyYWNlLmggYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvVHJhY2UuaAppbmRleCA5MjRhZGRkLi5lYjFmMDNiIDEwMDY0NAotLS0gYS9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvVHJhY2UuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvVHJhY2UuaApAQCAtMSw5ICsxLDggQEAKIC8vPT09LSBUcmFjZS5oIC0gWFJheSBUcmFjZSBBYnN0cmFjdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwotLy8gICAgICAgICAgICAgICAgICAgICBUaGUgTExWTSBDb21waWxlciBJbmZyYXN0cnVjdHVyZQotLy8KLS8vIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgVW5pdmVyc2l0eSBvZiBJbGxpbm9pcyBPcGVuIFNvdXJjZQotLy8gTGljZW5zZS4gU2VlIExJQ0VOU0UuVFhUIGZvciBkZXRhaWxzLgorLy8gUGFydCBvZiB0aGUgTExWTSBQcm9qZWN0LCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgdjIuMCB3aXRoIExMVk0gRXhjZXB0aW9ucy4KKy8vIFNlZSBodHRwczovL2xsdm0ub3JnL0xJQ0VOU0UudHh0IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbgogLy8KIC8vPT09LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT09PS8vCiAvLwpkaWZmIC0tZ2l0IGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L1hSYXlSZWNvcmQuaCBiL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9YUmF5UmVjb3JkLmgKaW5kZXggNzY4NzM0NC4uNTQ2YjAyMyAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L1hSYXlSZWNvcmQuaAorKysgYi9saW51eC14NjQvY2xhbmcvaW5jbHVkZS9sbHZtL1hSYXkvWFJheVJlY29yZC5oCkBAIC0xLDkgKzEsOCBAQAogLy89PT0tIFhSYXlSZWNvcmQuaCAtIFhSYXkgVHJhY2UgUmVjb3JkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgIFRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlCi0vLwotLy8gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBVbml2ZXJzaXR5IG9mIElsbGlub2lzIE9wZW4gU291cmNlCi0vLyBMaWNlbnNlLiBTZWUgTElDRU5TRS5UWFQgZm9yIGRldGFpbHMuCisvLyBQYXJ0IG9mIHRoZSBMTFZNIFByb2plY3QsIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIHdpdGggTExWTSBFeGNlcHRpb25zLgorLy8gU2VlIGh0dHBzOi8vbGx2bS5vcmcvTElDRU5TRS50eHQgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMCBXSVRIIExMVk0tZXhjZXB0aW9uCiAvLwogLy89PT0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vCkBAIC0xNyw2ICsxNiw3IEBACiAKICNpbmNsdWRlIDxjc3RkaW50PgogI2luY2x1ZGUgPHZlY3Rvcj4KKyNpbmNsdWRlIDxzdHJpbmc+CiAKIG5hbWVzcGFjZSBsbHZtIHsKIG5hbWVzcGFjZSB4cmF5IHsKQEAgLTU0LDEwICs1NCwyMyBAQAogLy8vIFRoaXMgbWF5IG9yIG1heSBub3QgY29ycmVzcG9uZCB0byBhY3R1YWwgcmVjb3JkIHR5cGVzIGluIHRoZSByYXcgdHJhY2UgKGFzCiAvLy8gdGhlIGxvYWRlciBpbXBsZW1lbnRhdGlvbiBtYXkgc3ludGhlc2l6ZSB0aGlzIGluZm9ybWF0aW9uIGluIHRoZSBwcm9jZXNzIG9mCiAvLy8gb2YgbG9hZGluZykuCi1lbnVtIGNsYXNzIFJlY29yZFR5cGVzIHsgRU5URVIsIEVYSVQsIFRBSUxfRVhJVCwgRU5URVJfQVJHIH07CitlbnVtIGNsYXNzIFJlY29yZFR5cGVzIHsKKyAgRU5URVIsCisgIEVYSVQsCisgIFRBSUxfRVhJVCwKKyAgRU5URVJfQVJHLAorICBDVVNUT01fRVZFTlQsCisgIFRZUEVEX0VWRU5UCit9OwogCisvLy8gQW4gWFJheVJlY29yZCBpcyB0aGUgZGVub3JtYWxpemVkIHZpZXcgb2YgZGF0YSBhc3NvY2lhdGVkIGluIGEgdHJhY2UuIFRoZXNlCisvLy8gcmVjb3JkcyBtYXkgbm90IGNvcnJlc3BvbmQgdG8gYWN0dWFsIGVudHJpZXMgaW4gdGhlIHJhdyB0cmFjZXMsIGJ1dCB0aGV5IGFyZQorLy8vIHRoZSBsb2dpY2FsIHJlcHJlc2VudGF0aW9uIG9mIHJlY29yZHMgaW4gYSBoaWdoZXItbGV2ZWwgZXZlbnQgbG9nLgogc3RydWN0IFhSYXlSZWNvcmQgewotICAvLy8gVGhlIHR5cGUgb2YgcmVjb3JkLgorICAvLy8gUmVjb3JkVHlwZSB2YWx1ZXMgYXJlIHVzZWQgYXMgInN1Yi10eXBlcyIgd2hpY2ggaGF2ZSBtZWFuaW5nIGluIHRoZQorICAvLy8gY29udGV4dCBvZiB0aGUgYFR5cGVgIGJlbG93LiBGb3IgZnVuY3Rpb24gY2FsbCBhbmQgY3VzdG9tIGV2ZW50IHJlY29yZHMsCisgIC8vLyB0aGUgUmVjb3JkVHlwZSBpcyBhbHdheXMgMCwgd2hpbGUgZm9yIHR5cGVkIGV2ZW50cyB3ZSBzdG9yZSB0aGUgdHlwZSBpbgorICAvLy8gdGhlIFJlY29yZFR5cGUgZmllbGQuCiAgIHVpbnQxNl90IFJlY29yZFR5cGU7CiAKICAgLy8vIFRoZSBDUFUgd2hlcmUgdGhlIHRocmVhZCBpcyBydW5uaW5nLiBXZSBhc3N1bWUgbnVtYmVyIG9mIENQVXMgPD0gNjU1MzYuCkBAIC02Niw3ICs3OSw3IEBACiAgIC8vLyBJZGVudGlmaWVzIHRoZSB0eXBlIG9mIHJlY29yZC4KICAgUmVjb3JkVHlwZXMgVHlwZTsKIAotICAvLy8gVGhlIGZ1bmN0aW9uIElEIGZvciB0aGUgcmVjb3JkLgorICAvLy8gVGhlIGZ1bmN0aW9uIElEIGZvciB0aGUgcmVjb3JkLCBpZiB0aGlzIGlzIGEgZnVuY3Rpb24gY2FsbCByZWNvcmQuCiAgIGludDMyX3QgRnVuY0lkOwogCiAgIC8vLyBHZXQgdGhlIGZ1bGwgOCBieXRlcyBvZiB0aGUgVFNDIHdoZW4gd2UgZ2V0IHRoZSBsb2cgcmVjb3JkLgpAQCAtODAsNiArOTMsOSBAQAogCiAgIC8vLyBUaGUgZnVuY3Rpb24gY2FsbCBhcmd1bWVudHMuCiAgIHN0ZDo6dmVjdG9yPHVpbnQ2NF90PiBDYWxsQXJnczsKKworICAvLy8gRm9yIGN1c3RvbSBhbmQgdHlwZWQgZXZlbnRzLCB3ZSBwcm92aWRlIHRoZSByYXcgZGF0YSBmcm9tIHRoZSB0cmFjZS4KKyAgc3RkOjpzdHJpbmcgRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIHhyYXkKZGlmZiAtLWdpdCBhL2xpbnV4LXg2NC9jbGFuZy9pbmNsdWRlL2xsdm0vWFJheS9ZQU1MWFJheVJlY29yZC5oIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L1lBTUxYUmF5UmVjb3JkLmgKaW5kZXggMGRlOWVhMC4uYmM4YjAzNSAxMDA2NDQKLS0tIGEvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L1lBTUxYUmF5UmVjb3JkLmgKKysrIGIvbGludXgteDY0L2NsYW5nL2luY2x1ZGUvbGx2bS9YUmF5L1lBTUxYUmF5UmVjb3JkLmgKQEAgLTEsOSArMSw4IEBACiAvLz09PS0gWUFNTFhSYXlSZWNvcmQuaCAtIFhSYXkgUmVjb3JkIFlBTUwgU3VwcG9ydCBEZWZpbml0aW9ucyAtLS0tLS0tLS0tLS09PT0vLwogLy8KLS8vICAgICAgICAgICAgICAgICAgICAgVGhlIExMVk0gQ29tcGlsZXIgSW5mcmFzdHJ1Y3R1cmUKLS8vCi0vLyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIFVuaXZlcnNpdHkgb2YgSWxsaW5vaXMgT3BlbiBTb3VyY2UKLS8vIExpY2Vuc2UuIFNlZSBMSUNFTlNFLlRYVCBmb3IgZGV0YWlscy4KKy8vIFBhcnQgb2YgdGhlIExMVk0gUHJvamVjdCwgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIHYyLjAgd2l0aCBMTFZNIEV4Y2VwdGlvbnMuCisvLyBTZWUgaHR0cHM6Ly9sbHZtLm9yZy9MSUNFTlNFLnR4dCBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbi4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24KIC8vCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09PT0vLwogLy8KQEAgLTM5LDYgKzM4LDcgQEAKICAgdWludDMyX3QgVElkOwogICB1aW50MzJfdCBQSWQ7CiAgIHN0ZDo6dmVjdG9yPHVpbnQ2NF90PiBDYWxsQXJnczsKKyAgc3RkOjpzdHJpbmcgRGF0YTsKIH07CiAKIHN0cnVjdCBZQU1MWFJheVRyYWNlIHsKQEAgLTU4LDYgKzU4LDggQEAKICAgICBJTy5lbnVtQ2FzZShUeXBlLCAiZnVuY3Rpb24tZXhpdCIsIHhyYXk6OlJlY29yZFR5cGVzOjpFWElUKTsKICAgICBJTy5lbnVtQ2FzZShUeXBlLCAiZnVuY3Rpb24tdGFpbC1leGl0IiwgeHJheTo6UmVjb3JkVHlwZXM6OlRBSUxfRVhJVCk7CiAgICAgSU8uZW51bUNhc2UoVHlwZSwgImZ1bmN0aW9uLWVudGVyLWFyZyIsIHhyYXk6OlJlY29yZFR5cGVzOjpFTlRFUl9BUkcpOworICAgIElPLmVudW1DYXNlKFR5cGUsICJjdXN0b20tZXZlbnQiLCB4cmF5OjpSZWNvcmRUeXBlczo6Q1VTVE9NX0VWRU5UKTsKKyAgICBJTy5lbnVtQ2FzZShUeXBlLCAidHlwZWQtZXZlbnQiLCB4cmF5OjpSZWNvcmRUeXBlczo6VFlQRURfRVZFTlQpOwogICB9CiB9OwogCkBAIC03MywxNiArNzUsMTYgQEAKIAogdGVtcGxhdGUgPD4gc3RydWN0IE1hcHBpbmdUcmFpdHM8eHJheTo6WUFNTFhSYXlSZWNvcmQ+IHsKICAgc3RhdGljIHZvaWQgbWFwcGluZyhJTyAmSU8sIHhyYXk6OllBTUxYUmF5UmVjb3JkICZSZWNvcmQpIHsKLSAgICAvLyBGSVhNRTogTWFrZSB0aGlzIHR5cGUgYWN0dWFsbHkgYmUgZGVzY3JpcHRpdmUKICAgICBJTy5tYXBSZXF1aXJlZCgidHlwZSIsIFJlY29yZC5SZWNvcmRUeXBlKTsKLSAgICBJTy5tYXBSZXF1aXJlZCgiZnVuYy1pZCIsIFJlY29yZC5GdW5jSWQpOworICAgIElPLm1hcE9wdGlvbmFsKCJmdW5jLWlkIiwgUmVjb3JkLkZ1bmNJZCk7CiAgICAgSU8ubWFwT3B0aW9uYWwoImZ1bmN0aW9uIiwgUmVjb3JkLkZ1bmN0aW9uKTsKICAgICBJTy5tYXBPcHRpb25hbCgiYXJncyIsIFJlY29yZC5DYWxsQXJncyk7CiAgICAgSU8ubWFwUmVxdWlyZWQoImNwdSIsIFJlY29yZC5DUFUpOwotICAgIElPLm1hcFJlcXVpcmVkKCJ0aHJlYWQiLCBSZWNvcmQuVElkKTsKKyAgICBJTy5tYXBPcHRpb25hbCgidGhyZWFkIiwgUmVjb3JkLlRJZCwgMFUpOwogICAgIElPLm1hcE9wdGlvbmFsKCJwcm9jZXNzIiwgUmVjb3JkLlBJZCwgMFUpOwogICAgIElPLm1hcFJlcXVpcmVkKCJraW5kIiwgUmVjb3JkLlR5cGUpOwogICAgIElPLm1hcFJlcXVpcmVkKCJ0c2MiLCBSZWNvcmQuVFNDKTsKKyAgICBJTy5tYXBPcHRpb25hbCgiZGF0YSIsIFJlY29yZC5EYXRhKTsKICAgfQogCiAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBmbG93ID0gdHJ1ZTsK